[build-system] requires = ["pbr>=6.1.1"] build-backend = "pbr.build" [project] name = "openstacksdk" description = "An SDK for building applications to work with OpenStack" authors = [ {name = "OpenStack", email = "openstack-discuss@lists.openstack.org"}, ] readme = {file = "README.rst", content-type = "text/x-rst"} license = "Apache-2.0" dynamic = ["version"] dependencies = [ "cryptography>=2.7", # BSD/Apache-2.0 "decorator>=4.4.1", # BSD "dogpile.cache>=0.6.5", # BSD "iso8601>=0.1.11", # MIT "jmespath>=0.9.0", # MIT "jsonpatch!=1.20,>=1.16", # BSD "keystoneauth1>=5.16.0", # Apache-2.0 "os-service-types>=1.8.1", # Apache-2.0 "pbr!=2.1.0,>=2.0.0", # Apache-2.0 "platformdirs>=3", # MIT License "psutil>=3.2.2", # BSD "PyYAML>=3.13", # MIT ] requires-python = ">=3.11" classifiers = [ "Environment :: OpenStack", "Intended Audience :: Information Technology", "Intended Audience :: System Administrators", "Operating System :: POSIX :: Linux", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", ] [dependency-groups] ansible = [ "ansible", # GPL ] doc = [ "docutils>=0.11", # OSI-Approved Open Source, Public Domain "openstackdocstheme>=2.2.1", # Apache-2.0 "reno>=3.1.0", # Apache-2.0 "sphinx>=2.0.0,!=2.1.0", # BSD "sphinxcontrib-svg2pdfconverter>=0.1.0", # BSD ] test = [ "coverage!=4.4,>=4.0", # Apache-2.0 "ddt>=1.0.1", # MIT "fixtures>=3.0.0", # Apache-2.0/BSD "hacking~=8.1.0", # Apache-2.0 "jsonschema>=3.2.0", # MIT "oslo.config>=6.1.0", # Apache-2.0 "oslotest>=3.2.0", # Apache-2.0 "prometheus-client>=0.4.2", # Apache-2.0 "requests-mock>=1.2.0", # Apache-2.0 "statsd>=3.3.0", "stestr>=1.0.0", # Apache-2.0 "testscenarios>=0.4", # Apache-2.0/BSD "testtools>=2.2.0", # MIT "keyring>=24.0.0", # MIT ] typing = [ "mypy", # MIT "types-decorator", # Apache-2.0 "types-jmespath", # Apache-2.0 "types-jsonschema", # Apache-2.0 "types-psutil", # Apache-2.0 "types-PyYAML", # Apache-2.0 "types-requests", # Apache-2.0 "types-simplejson", # Apache-2.0 ] [project.urls] Homepage = "https://docs.openstack.org/openstacksdk" Repository = "https://opendev.org/openstack/openstacksdk/" [project.scripts] # TODO(mordred) Move this to an OSC command at some point openstack-inventory = "openstack.cloud.cmd.inventory:main" [tool.setuptools.packages.find] include = ["openstack*"] [tool.mypy] python_version = "3.11" show_column_numbers = true show_error_context = true follow_imports = "normal" check_untyped_defs = true disallow_any_generics = true disallow_incomplete_defs = true disallow_subclassing_any = true disallow_untyped_calls = true disallow_untyped_decorators = true disallow_untyped_defs = true extra_checks = true no_implicit_reexport = true strict_bytes = true strict_equality = true warn_redundant_casts = true warn_return_any = true warn_unused_configs = true warn_unused_ignores = true disable_error_code = ["import-untyped"] exclude = "(?x)(doc | examples | releasenotes)" [[tool.mypy.overrides]] module = [ "openstack._hacking.*", "openstack.tests.functional.*", ] disable_error_code = ["func-returns-value"] disallow_untyped_calls = false disallow_untyped_defs = false warn_return_any = false [[tool.mypy.overrides]] module = [ "openstack.tests.unit.*", ] disable_error_code = ["func-returns-value"] disallow_untyped_calls = false disallow_untyped_defs = false warn_return_any = false [tool.ruff] line-length = 79 [tool.ruff.format] quote-style = "preserve" docstring-code-format = true [tool.ruff.lint] select = ["E", "F", "G", "LOG", "RUF", "S", "UP", "W"] ignore = [ # there are a lot of these to fix "RUF012", # we only use asserts for type narrowing "S101", ] external = ["H", "O"] [tool.ruff.lint.per-file-ignores] "openstack/tests/*" = ["S"] "openstack/_services_mixin.py" = ["E501"] "examples/*" = ["S"]