content: [build-system]
  requires = ["pbr>=6.1.1"]
  build-backend = "pbr.build"
  
  [project]
  name = "cinder"
  description = "OpenStack Block Storage"
  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 :: Console",
    "Intended Audience :: Developers",
    "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.13",
  ]
  
  [project.urls]
  Homepage = "https://docs.openstack.org/cinder"
  Repository = "https://opendev.org/openstack/cinder"
  Bugs = "https://bugs.launchpad.net/cinder"
  
  [project.entry-points."cinder.scheduler.filters"]
  AvailabilityZoneFilter = "cinder.scheduler.filters.availability_zone_filter:AvailabilityZoneFilter"
  CapabilitiesFilter = "cinder.scheduler.filters.capabilities_filter:CapabilitiesFilter"
  CapacityFilter = "cinder.scheduler.filters.capacity_filter:CapacityFilter"
  DifferentBackendFilter = "cinder.scheduler.filters.affinity_filter:DifferentBackendFilter"
  DriverFilter = "cinder.scheduler.filters.driver_filter:DriverFilter"
  JsonFilter = "cinder.scheduler.filters.json_filter:JsonFilter"
  RetryFilter = "cinder.scheduler.filters.ignore_attempted_hosts_filter:IgnoreAttemptedHostsFilter"
  SameBackendFilter = "cinder.scheduler.filters.affinity_filter:SameBackendFilter"
  InstanceLocalityFilter = "cinder.scheduler.filters.instance_locality_filter:InstanceLocalityFilter"
  
  [project.entry-points."cinder.scheduler.weights"]
  AllocatedCapacityWeigher = "cinder.scheduler.weights.capacity:AllocatedCapacityWeigher"
  CapacityWeigher = "cinder.scheduler.weights.capacity:CapacityWeigher"
  ChanceWeigher = "cinder.scheduler.weights.chance:ChanceWeigher"
  GoodnessWeigher = "cinder.scheduler.weights.goodness:GoodnessWeigher"
  VolumeNumberWeigher = "cinder.scheduler.weights.volume_number:VolumeNumberWeigher"
  
  [project.entry-points."oslo.config.opts"]
  cinder = "cinder.opts:list_opts"
  
  [project.entry-points."oslo.config.opts.defaults"]
  cinder = "cinder.common.config:set_external_library_defaults"
  
  [project.entry-points."oslo.policy.enforcer"]
  cinder = "cinder.policy:get_enforcer"
  
  [project.entry-points."oslo.policy.policies"]
  # The sample policies will be ordered by entry point and then by list
  # returned from that entry point. If more control is desired split out each
  # list_rules method into a separate entry point rather than using the
  # aggregate method.
  cinder = "cinder.policies:list_rules"
  
  [project.scripts]
  cinder-api = "cinder.cmd.api:main"
  cinder-backup = "cinder.cmd.backup:main"
  cinder-manage = "cinder.cmd.manage:main"
  cinder-rootwrap = "oslo_rootwrap.cmd:main"
  cinder-rtstool = "cinder.cmd.rtstool:main"
  cinder-scheduler = "cinder.cmd.scheduler:main"
  cinder-status = "cinder.cmd.status:main"
  cinder-volume = "cinder.cmd.volume:main"
  cinder-volume-usage-audit = "cinder.cmd.volume_usage_audit:main"
  
  [project.optional-dependencies]
  all = [
      "websocket-client>=1.3.2", # LGPLv2+
      "pyOpenSSL>=17.5.0", # Apache-2.0
      "storops>=0.5.10", # Apache-2.0
      "pywbem>=0.7.0", #LGPLv2.1+
      "python-3parclient>=4.2.10", # Apache-2.0
      "krest>=1.3.0", # Apache-2.0
      "infinisdk>=103.0.1", # BSD-3
      "py-pure-client>=1.47.0", # BSD
      "rsd-lib>=1.1.0", # Apache-2.0
      "storpool>=7.1.0", # Apache-2.0
      "storpool.spopenstack>=2.2.1", # Apache-2.0
      "dfs-sdk>=1.2.25", # Apache-2.0
      "rbd-iscsi-client>=0.1.8", # Apache-2.0
      "python-linstor>=1.7.0", # LGPLv3
      "psutil>=5.7.2", # BSD
  ]
  datacore = [
      "websocket-client>=1.3.2", # LGPLv2+
  ]
  powermax = [
      "pyOpenSSL>=17.5.0", # Apache-2.0
  ]
  vnx = [
      "storops>=0.5.10", # Apache-2.0
  ]
  unity = [
      "storops>=0.5.10", # Apache-2.0
  ]
  fujitsu = [
      "pywbem>=0.7.0", #LGPLv2.1+
  ]
  hpe3par = [
      "python-3parclient>=4.2.10", # Apache-2.0
  ]
  kaminario = [
      "krest>=1.3.0", # Apache-2.0
  ]
  ds8k = [
      "pyOpenSSL>=17.5.0", # Apache-2.0
  ]
  infinidat = [
      "infinisdk>=103.0.1", # BSD-3
  ]
  pure = [
      "py-pure-client>=1.47.0", # BSD
  ]
  rsd = [
      "rsd-lib>=1.1.0", # Apache-2.0
  ]
  storpool = [
      "storpool>=7.1.0", # Apache-2.0
      "storpool.spopenstack>=2.2.1", # Apache-2.0
  ]
  datera = [
      "dfs-sdk>=1.2.25", # Apache-2.0
  ]
  rbd_iscsi = [
      "rbd-iscsi-client>=0.1.8", # Apache-2.0
  ]
  linstor = [
      "python-linstor>=1.7.0", # LGPLv3
  ]
  quobyte = [
      "psutil>=5.7.2", # BSD
  ]
  
  [tool.setuptools]
  packages = [
      "cinder"
  ]
  
  
  [tool.setuptools.data-files]
  "etc/cinder" = [
      "etc/cinder/api-paste.ini",
      "etc/cinder/rootwrap.conf",
      "etc/cinder/resource_filters.json",
  ]
  "etc/cinder/rootwrap.d" = [
      "etc/cinder/rootwrap.d/*",
  ]
  
  [tool.mypy]
  python_version = "3.10"
  show_column_numbers = true
  show_error_context = true
  ignore_missing_imports = true
  follow_imports = "skip"
  incremental = true
  check_untyped_defs = true
  warn_unused_ignores = true
  show_error_codes = true
  pretty = true
  html_report = "mypy-report"
  no_implicit_optional = true
  strict_equality = true
  