content: [build-system]
  requires = ["pbr>=6.1.1"]
  build-backend = "pbr.build"
  
  [project]
  name = "neutron"
  description = "OpenStack Networking"
  authors = [
      {name = "OpenStack", email = "openstack-discuss@lists.openstack.org"},
  ]
  readme = {file = "README.rst", content-type = "text/x-rst"}
  license = {text = "Apache-2.0"}
  dynamic = ["version", "dependencies"]
  requires-python = ">=3.10"
  classifiers = [
      "Development Status :: 5 - Production/Stable",
      "Environment :: OpenStack",
      "Intended Audience :: Information Technology",
      "Intended Audience :: System Administrators",
      "License :: OSI Approved :: Apache Software License",
      "Operating System :: POSIX :: Linux",
      "Programming Language :: Python",
      "Programming Language :: Python :: 3",
      "Programming Language :: Python :: 3.10",
      "Programming Language :: Python :: 3.11",
      "Programming Language :: Python :: 3.12",
      "Programming Language :: Python :: 3 :: Only",
  ]
  
  [project.optional-dependencies]
  osprofiler = [
      "osprofiler>=1.4.0", # Apache-2.0
  ]
  zvm = [
      "zVMCloudConnector>=1.3.0;sys_platform!='win32'",  # Apache 2.0 License
  ]
  vmware = [
      "oslo.vmware>=3.6.0", # Apache-2.0
  ]
  
  [project.urls]
  "Bug Tracker" = "https://bugs.launchpad.net/neutron"
  "Documentation" = "https://docs.openstack.org/neutron"
  "Source Code" = "https://opendev.org/openstack/neutron"
  
  [project.entry-points."oslo.config.opts"]
  "designate.auth" = "neutron.opts:list_designate_auth_opts"
  "ironic.auth" = "neutron.opts:list_ironic_auth_opts"
  "neutron" = "neutron.opts:list_opts"
  "neutron.agent" = "neutron.opts:list_agent_opts"
  "neutron.az.agent" = "neutron.opts:list_az_agent_opts"
  "neutron.base.agent" = "neutron.opts:list_base_agent_opts"
  "neutron.db" = "neutron.opts:list_db_opts"
  "neutron.dhcp.agent" = "neutron.opts:list_dhcp_agent_opts"
  "neutron.experimental" = "neutron.opts:list_experimental_opts"
  "neutron.extensions" = "neutron.opts:list_extension_opts"
  "neutron.l3.agent" = "neutron.opts:list_l3_agent_opts"
  "neutron.metadata.agent" = "neutron.opts:list_metadata_agent_opts"
  "neutron.metering.agent" = "neutron.opts:list_metering_agent_opts"
  "neutron.ml2" = "neutron.opts:list_ml2_conf_opts"
  "neutron.ml2.macvtap.agent" = "neutron.opts:list_macvtap_opts"
  "neutron.ml2.ovn" = "neutron.conf.plugins.ml2.drivers.ovn.ovn_conf:list_opts"
  "neutron.ml2.ovs.agent" = "neutron.opts:list_ovs_opts"
  "neutron.ml2.sriov.agent" = "neutron.opts:list_sriov_agent_opts"
  "neutron.ml2.ovn.agent" = "neutron.conf.agent.ovn.ovn_neutron_agent.config:list_ovn_neutron_agent_opts"
  "neutron.ovn.metadata.agent" = "neutron.conf.agent.ovn.metadata.config:list_metadata_agent_opts"
  "nova.auth" = "neutron.opts:list_nova_auth_opts"
  "placement.auth" = "neutron.opts:list_placement_auth_opts"
  
  [project.entry-points."oslo.config.opts.defaults"]
  neutron = "neutron.common.config:set_config_defaults"
  
  [project.entry-points."oslo.policy.enforcer"]
  neutron = "neutron.policy:get_enforcer"
  
  [project.entry-points."oslo.policy.policies"]
  neutron = "neutron.conf.policies:list_rules"
  
  [project.entry-points."neutron.core_plugins"]
  ml2 = "neutron.plugins.ml2.plugin:Ml2Plugin"
  
  [project.entry-points."neutron.service_plugins"]
  dummy = "neutron.tests.unit.dummy_plugin:DummyServicePlugin"
  router = "neutron.services.l3_router.l3_router_plugin:L3RouterPlugin"
  metering = "neutron.services.metering.metering_plugin:MeteringPlugin"
  qos = "neutron.services.qos.qos_plugin:QoSPlugin"
  tag = "neutron.services.tag.tag_plugin:TagPlugin"
  flavors = "neutron.services.flavors.flavors_plugin:FlavorsPlugin"
  auto_allocate = "neutron.services.auto_allocate.plugin:Plugin"
  segments = "neutron.services.segments.plugin:Plugin"
  network_ip_availability = "neutron.services.network_ip_availability.plugin:NetworkIPAvailabilityPlugin"
  network_segment_range = "neutron.services.network_segment_range.plugin:NetworkSegmentRangePlugin"
  revisions = "neutron.services.revisions.revision_plugin:RevisionPlugin"
  timestamp = "neutron.services.timestamp.timestamp_plugin:TimeStampPlugin"
  trunk = "neutron.services.trunk.plugin:TrunkPlugin"
  loki = "neutron.services.loki.loki_plugin:LokiPlugin"
  log = "neutron.services.logapi.logging_plugin:LoggingPlugin"
  port_forwarding = "neutron.services.portforwarding.pf_plugin:PortForwardingPlugin"
  placement = "neutron.services.placement_report.plugin:PlacementReportPlugin"
  conntrack_helper = "neutron.services.conntrack_helper.plugin:Plugin"
  ovn-router = "neutron.services.ovn_l3.plugin:OVNL3RouterPlugin"
  local_ip = "neutron.services.local_ip.local_ip_plugin:LocalIPPlugin"
  ndp_proxy = "neutron.services.ndp_proxy.plugin:NDPProxyPlugin"
  
  [project.entry-points."neutron.ml2.type_drivers"]
  flat = "neutron.plugins.ml2.drivers.type_flat:FlatTypeDriver"
  local = "neutron.plugins.ml2.drivers.type_local:LocalTypeDriver"
  vlan = "neutron.plugins.ml2.drivers.type_vlan:VlanTypeDriver"
  geneve = "neutron.plugins.ml2.drivers.type_geneve:GeneveTypeDriver"
  gre = "neutron.plugins.ml2.drivers.type_gre:GreTypeDriver"
  vxlan = "neutron.plugins.ml2.drivers.type_vxlan:VxlanTypeDriver"
  
  [project.entry-points."neutron.ml2.mechanism_drivers"]
  logger = "neutron.tests.unit.plugins.ml2.drivers.mechanism_logger:LoggerMechanismDriver"
  test = "neutron.tests.unit.plugins.ml2.drivers.mechanism_test:TestMechanismDriver"
  test_with_agent = "neutron.tests.unit.plugins.ml2.drivers.mechanism_test:TestMechanismDriverWithAgent"
  macvtap = "neutron.plugins.ml2.drivers.macvtap.mech_driver.mech_macvtap:MacvtapMechanismDriver"
  openvswitch = "neutron.plugins.ml2.drivers.openvswitch.mech_driver.mech_openvswitch:OpenvswitchMechanismDriver"
  l2population = "neutron.plugins.ml2.drivers.l2pop.mech_driver:L2populationMechanismDriver"
  sriovnicswitch = "neutron.plugins.ml2.drivers.mech_sriov.mech_driver.mech_driver:SriovNicSwitchMechanismDriver"
  ovn = "neutron.plugins.ml2.drivers.ovn.mech_driver.mech_driver:OVNMechanismDriver"
  ovn-sync = "neutron.cmd.ovn.neutron_ovn_db_sync_util:OVNMechanismDriver"
  fake_agent = "neutron.tests.unit.plugins.ml2.drivers.mech_fake_agent:FakeAgentMechanismDriver"
  fake_agent_l3 = "neutron.tests.unit.plugins.ml2.drivers.mech_fake_agent:FakeAgentMechanismDriverL3"
  another_fake_agent = "neutron.tests.unit.plugins.ml2.drivers.mech_fake_agent:AnotherFakeAgentMechanismDriver"
  faulty_agent = "neutron.tests.unit.plugins.ml2.drivers.mech_faulty_agent:FaultyAgentMechanismDriver"
  
  [project.entry-points."neutron.ml2.extension_drivers"]
  test = "neutron.tests.unit.plugins.ml2.drivers.ext_test:TestExtensionDriver"
  testdb = "neutron.tests.unit.plugins.ml2.drivers.ext_test:TestDBExtensionDriver"
  port_security = "neutron.plugins.ml2.extensions.port_security:PortSecurityExtensionDriver"
  qos = "neutron.plugins.ml2.extensions.qos:QosExtensionDriver"
  dns = "neutron.plugins.ml2.extensions.dns_integration:DNSExtensionDriverML2"
  data_plane_status = "neutron.plugins.ml2.extensions.data_plane_status:DataPlaneStatusExtensionDriver"
  dns_domain_ports = "neutron.plugins.ml2.extensions.dns_integration:DNSDomainPortsExtensionDriver"
  port_device_profile = "neutron.plugins.ml2.extensions.port_device_profile:PortDeviceProfileExtensionDriver"
  port_hardware_offload_type = "neutron.plugins.ml2.extensions.port_hardware_offload_type:PortHardwareOffloadTypeExtensionDriver"
  port_numa_affinity_policy = "neutron.plugins.ml2.extensions.port_numa_affinity_policy:PortNumaAffinityPolicyExtensionDriver"
  port_trusted = "neutron.plugins.ml2.extensions.port_trusted:PortTrustedExtensionDriver"
  uplink_status_propagation = "neutron.plugins.ml2.extensions.uplink_status_propagation:UplinkStatusPropagationExtensionDriver"
  uplink_status_propagation_updatable = "neutron.plugins.ml2.extensions.uplink_status_propagation_updatable:UplinkStatusPropagationUpdatableExtensionDriver"
  tag_ports_during_bulk_creation = "neutron.plugins.ml2.extensions.tag_ports_during_bulk_creation:TagPortsDuringBulkCreationExtensionDriver"
  subnet_dns_publish_fixed_ip = "neutron.plugins.ml2.extensions.subnet_dns_publish_fixed_ip:SubnetDNSPublishFixedIPExtensionDriver"
  dns_domain_keywords = "neutron.plugins.ml2.extensions.dns_domain_keywords:DnsDomainKeywordsExtensionDriver"
  port_hints = "neutron.plugins.ml2.extensions.port_hints:PortHintsExtensionDriver"
  port_hint_ovs_tx_steering = "neutron.plugins.ml2.extensions.port_hint_ovs_tx_steering:PortHintOvsTxSteeringExtensionDriver"
  
  [project.entry-points."neutron.ipam_drivers"]
  fake = "neutron.tests.unit.ipam.fake_driver:FakeDriver"
  internal = "neutron.ipam.drivers.neutrondb_ipam.driver:NeutronDbPool"
  
  [project.entry-points."neutron.agent.l2.extensions"]
  qos = "neutron.agent.l2.extensions.qos:QosAgentExtension"
  fdb = "neutron.agent.l2.extensions.fdb_population:FdbPopulationAgentExtension"
  log = "neutron.services.logapi.agent.log_extension:LoggingExtension"
  dhcp = "neutron.agent.l2.extensions.dhcp.extension:DHCPAgentExtension"
  local_ip = "neutron.agent.l2.extensions.local_ip:LocalIPAgentExtension"
  metadata_path = "neutron.agent.l2.extensions.metadata.metadata_path:MetadataPathAgentExtension"
  
  [project.entry-points."neutron.agent.l3.extensions"]
  fip_qos = "neutron.agent.l3.extensions.qos.fip:FipQosAgentExtension"
  gateway_ip_qos = "neutron.agent.l3.extensions.qos.gateway_ip:RouterGatewayIPQosAgentExtension"
  port_forwarding = "neutron.agent.l3.extensions.port_forwarding:PortForwardingAgentExtension"
  snat_log = "neutron.agent.l3.extensions.snat_log:SNATLoggingExtension"
  conntrack_helper = "neutron.agent.l3.extensions.conntrack_helper:ConntrackHelperAgentExtension"
  ndp_proxy = "neutron.agent.l3.extensions.ndp_proxy:NDPProxyAgentExtension"
  
  [project.entry-points."neutron.agent.ovn.extensions"]
  metadata = "neutron.agent.ovn.extensions.metadata:MetadataExtension"
  qos_hwol = "neutron.agent.ovn.extensions.qos_hwol:QoSHardwareOffloadExtension"
  noop = "neutron.agent.ovn.extensions.noop:NoopOVNAgentExtension"
  testing = "neutron.tests.functional.agent.ovn.agent.fake_ovn_agent_extension:FakeOVNAgentExtension"
  
  [project.entry-points."neutron.services.logapi.drivers"]
  ovs = "neutron.services.logapi.drivers.openvswitch.ovs_firewall_log:OVSFirewallLoggingDriver"
  
  [project.entry-points."neutron.qos.agent_drivers"]
  ovs = "neutron.plugins.ml2.drivers.openvswitch.agent.extension_drivers.qos_driver:QosOVSAgentDriver"
  sriov = "neutron.plugins.ml2.drivers.mech_sriov.agent.extension_drivers.qos_driver:QosSRIOVAgentDriver"
  
  [project.entry-points."neutron.services.external_dns_drivers"]
  designate = "neutron.services.externaldns.drivers.designate.driver:Designate"
  
  [project.entry-points."neutron.policies"]
  neutron = "neutron.conf.policies:list_rules"
  
  [project.entry-points."neutron.db.alembic_migrations"]
  neutron = "neutron.db.migration:alembic_migrations"
  
  [project.entry-points."neutron.interface_drivers"]
  null = "neutron.agent.linux.interface:NullDriver"
  openvswitch = "neutron.agent.linux.interface:OVSInterfaceDriver"
  
  [project.entry-points."neutron.agent.firewall_drivers"]
  noop = "neutron.agent.firewall:NoopFirewallDriver"
  iptables = "neutron.agent.linux.iptables_firewall:IptablesFirewallDriver"
  iptables_hybrid = "neutron.agent.linux.iptables_firewall:OVSHybridIptablesFirewallDriver"
  openvswitch = "neutron.agent.linux.openvswitch_firewall:OVSFirewallDriver"
  
  [project.entry-points."neutron.services.metering_drivers"]
  noop = "neutron.services.metering.drivers.noop.noop_driver:NoopMeteringDriver"
  iptables = "neutron.services.metering.drivers.iptables.iptables_driver:IptablesMeteringDriver"
  
  [project.entry-points."neutron.objects"]
  AddressScope = "neutron.objects.address_scope:AddressScope"
  AllowedAddressPair = "neutron.objects.port.extensions.allowedaddresspairs:AllowedAddressPair"
  Agent = "neutron.objects.agent:Agent"
  AutoAllocatedTopology = "neutron.objects.auto_allocate:AutoAllocatedTopology"
  ConntrackHelper = "neutron.objects.conntrack_helper:ConntrackHelper"
  PortDataPlaneStatus = "neutron.objects.port.extensions.data_plane_status:PortDataPlaneStatus"
  DefaultSecurityGroup = "neutron.objects.securitygroup:DefaultSecurityGroup"
  DistributedPortBinding = "neutron.objects.ports:DistributedPortBinding"
  DNSNameServer = "neutron.objects.subnet:DNSNameServer"
  DVRMacAddress = "neutron.objects.router:DVRMacAddress"
  ExternalNetwork = "neutron.objects.network:ExternalNetwork"
  ExtraDhcpOpt = "neutron.objects.port.extensions.extra_dhcp_opt:ExtraDhcpOpt"
  Flavor = "neutron.objects.flavor:Flavor"
  FlavorServiceProfileBinding = "neutron.objects.flavor:FlavorServiceProfileBinding"
  FloatingIP = "neutron.objects.router:FloatingIP"
  FloatingIPDNS = "neutron.objects.floatingip:FloatingIPDNS"
  IPAllocation = "neutron.objects.ports:IPAllocation"
  IPAllocationPool = "neutron.objects.subnet:IPAllocationPool"
  IpamAllocation = "neutron.objects.ipam:IpamAllocation"
  IpamAllocationPool = "neutron.objects.ipam:IpamAllocationPool"
  IpamSubnet = "neutron.objects.ipam:IpamSubnet"
  Log = "neutron.objects.logapi.logging_resource:Log"
  LocalIP = "neutron.objects.local_ip:LocalIP"
  LocalIPAssociation = "neutron.objects.local_ip:LocalIPAssociation"
  L3HARouterAgentPortBinding = "neutron.objects.l3_hamode:L3HARouterAgentPortBinding"
  L3HARouterNetwork = "neutron.objects.l3_hamode:L3HARouterNetwork"
  L3HARouterVRIdAllocation = "neutron.objects.l3_hamode:L3HARouterVRIdAllocation"
  MeteringLabel = "neutron.objects.metering:MeteringLabel"
  MeteringLabelRule = "neutron.objects.metering:MeteringLabelRule"
  NDPProxy = "neutron.objects.ndp_proxy:NDPProxy"
  Network = "neutron.objects.network:Network"
  NetworkDNSDomain = "neutron.objects.network:NetworkDNSDomain"
  NetworkDhcpAgentBinding = "neutron.objects.network:NetworkDhcpAgentBinding"
  NetworkPortSecurity = "neutron.objects.network:NetworkPortSecurity"
  NetworkRBAC = "neutron.objects.network:NetworkRBAC"
  NetworkSegment = "neutron.objects.network:NetworkSegment"
  NetworkSegmentRange = "neutron.objects.network_segment_range:NetworkSegmentRange"
  Port = "neutron.objects.ports:Port"
  PortBinding = "neutron.objects.ports:PortBinding"
  PortBindingLevel = "neutron.objects.ports:PortBindingLevel"
  PortDNS = "neutron.objects.ports:PortDNS"
  PortForwarding = "neutron.objects.port_forwarding:PortForwarding"
  PortSecurity = "neutron.objects.port.extensions.port_security:PortSecurity"
  ProviderResourceAssociation = "neutron.objects.servicetype:ProviderResourceAssociation"
  ProvisioningBlock = "neutron.objects.provisioning_blocks:ProvisioningBlock"
  QosBandwidthLimitRule = "neutron.objects.qos.rule:QosBandwidthLimitRule"
  QosDscpMarkingRule = "neutron.objects.qos.rule:QosDscpMarkingRule"
  QosMinimumBandwidthRule = "neutron.objects.qos.rule:QosMinimumBandwidthRule"
  QosMinimumPacketRateRule = "neutron.objects.qos.rule:QosMinimumPacketRateRule"
  QosPacketRateLimitRule = "neutron.objects.qos.rule:QosPacketRateLimitRule"
  QosPolicy = "neutron.objects.qos.policy:QosPolicy"
  QosPolicyDefault = "neutron.objects.qos.policy:QosPolicyDefault"
  QosPolicyFloatingIPBinding = "neutron.objects.qos.binding:QosPolicyFloatingIPBinding"
  QosPolicyNetworkBinding = "neutron.objects.qos.binding:QosPolicyNetworkBinding"
  QosPolicyPortBinding = "neutron.objects.qos.binding:QosPolicyPortBinding"
  QosPolicyRBAC = "neutron.objects.qos.policy:QosPolicyRBAC"
  QosPolicyRouterGatewayIPBinding = "neutron.objects.qos.binding:QosPolicyRouterGatewayIPBinding"
  QosRule = "neutron.objects.qos.rule:QosRule"
  QosRuleType = "neutron.objects.qos.rule_type:QosRuleType"
  QosRuleTypeDriver = "neutron.objects.qos.rule_type:QosRuleTypeDriver"
  Quota = "neutron.objects.quota:Quota"
  QuotaUsage = "neutron.objects.quota:QuotaUsage"
  Reservation = "neutron.objects.quota:Reservation"
  ResourceDelta = "neutron.objects.quota:ResourceDelta"
  Route = "neutron.objects.subnet:Route"
  Router = "neutron.objects.router:Router"
  RouterExtraAttributes = "neutron.objects.router:RouterExtraAttributes"
  RouterL3AgentBinding = "neutron.objects.l3agent:RouterL3AgentBinding"
  RouterNDPProxyState = "neutron.objects.ndp_proxy:RouterNDPProxyState"
  RouterPort = "neutron.objects.router:RouterPort"
  RouterRoute = "neutron.objects.router:RouterRoute"
  SecurityGroup = "neutron.objects.securitygroup:SecurityGroup"
  SecurityGroupPortBinding = "neutron.objects.ports:SecurityGroupPortBinding"
  SecurityGroupRule = "neutron.objects.securitygroup:SecurityGroupRule"
  SegmentHostMapping = "neutron.objects.network:SegmentHostMapping"
  ServiceProfile = "neutron.objects.flavor:ServiceProfile"
  StandardAttribute = "neutron.objects.stdattrs:StandardAttribute"
  Subnet = "neutron.objects.subnet:Subnet"
  SubnetPool = "neutron.objects.subnetpool:SubnetPool"
  SubnetPoolPrefix = "neutron.objects.subnetpool:SubnetPoolPrefix"
  SubPort = "neutron.objects.trunk:SubPort"
  SubnetServiceType = "neutron.objects.subnet:SubnetServiceType"
  Tag = "neutron.objects.tag:Tag"
  Trunk = "neutron.objects.trunk:Trunk"
  
  [project.entry-points."neutron.status.upgrade.checks"]
  neutron = "neutron.cmd.upgrade_checks.checks:CoreChecks"
  
  [project.scripts]
  neutron-db-manage = "neutron.db.migration.cli:main"
  neutron-dhcp-agent = "neutron.cmd.agents.dhcp:main"
  neutron-keepalived-state-change = "neutron.cmd.keepalived_state_change:main"
  neutron-ipset-cleanup = "neutron.cmd.ipset_cleanup:main"
  neutron-l3-agent = "neutron.cmd.agents.l3:main"
  neutron-macvtap-agent = "neutron.cmd.plugins.macvtap_neutron_agent:main"
  neutron-metadata-agent = "neutron.cmd.agents.metadata:main"
  neutron-netns-cleanup = "neutron.cmd.netns_cleanup:main"
  neutron-openvswitch-agent = "neutron.cmd.agents.ovs_neutron_agent:main"
  neutron-ovs-cleanup = "neutron.cmd.ovs_cleanup:main"
  neutron-rpc-server = "neutron.cmd.server:main_rpc"
  neutron-rootwrap = "oslo_rootwrap.cmd:main"
  neutron-rootwrap-daemon = "oslo_rootwrap.cmd:daemon"
  neutron-usage-audit = "neutron.cmd.usage_audit:main"
  neutron-metering-agent = "neutron.cmd.services.metering_agent:main"
  neutron-sriov-nic-agent = "neutron.cmd.plugins.sriov_nic_neutron_agent:main"
  neutron-sanity-check = "neutron.cmd.sanity_check:main"
  neutron-periodic-workers = "neutron.cmd.server:main_periodic"
  neutron-status = "neutron.cmd.status:main"
  neutron-ovn-agent = "neutron.cmd.agents.ovn_neutron_agent:main"
  neutron-ovn-maintenance-worker = "neutron.cmd.server:main_ovn_maintenance"
  neutron-ovn-metadata-agent = "neutron.cmd.agents.ovn_metadata:main"
  neutron-ovn-migration-mtu = "neutron.cmd.ovn.migration_mtu:main"
  neutron-ovn-db-sync-util = "neutron.cmd.ovn.neutron_ovn_db_sync_util:main"
  neutron-sanitize-port-binding-profile-allocation = "neutron.cmd.sanitize_port_binding_profile_allocation:main"
  neutron-sanitize-port-mac-addresses = "neutron.cmd.sanitize_port_mac_addresses:main"
  neutron-remove-duplicated-port-bindings = "neutron.cmd.remove_duplicated_port_bindings:main"
  ml2ovn-trace = "neutron.cmd.ovn.ml2ovn_trace:main"
  
  [tool.setuptools]
  packages = [
      "neutron"
  ]
  
  [tool.setuptools.data-files]
  "etc/neutron" = [
      "etc/api-paste.ini",
      "etc/rootwrap.conf",
  ]
  "etc/neutron/rootwrap.d" = [
      "etc/neutron/rootwrap.d/*",
  ]
  
  [tool.mypy]
  incremental = true
  pretty = true
  show_error_context = true
  show_column_numbers = true
  warn_unused_ignores = true
  # remove gradually as progress is made
  disable_error_code = "import-untyped,var-annotated,import-not-found"
  # honor excludes by not following there through imports
  follow_imports = "silent"
  files = "neutron"
  # NOTE: Gradually enable type checking for each package.
  # Finally, when the whole repo is migrated this option can be deleted
  # and rules applied to the whole repo.
  exclude = "(?x)(^neutron/tests/$)"
  
  [tool.ruff]
  line-length = 79
  target-version = "py310"
  
  [tool.ruff.lint]
  select = ["E4", "E7", "E9", "F", "S", "U"]
  ignore = [
      "E741",  # Ambiguous variable name: `l`
      "S104",  # Possible binding to all interfaces
      "UP031", # Use format specifiers instead of percent format
      "UP032", # Use f-string instead of `format` call
  ]
  
  [tool.ruff.lint.per-file-ignores]
  "neutron/tests/*" = ["S"]
  