Files
openstacksdk/pyproject.toml
Stephen Finucane e0845449d3 Run mypy from tox
This avoids the need to duplicate our dependency list in multiple
places and allows us to take advantage of tox's dependency management
infrastructure, to ensure we always get the latest and greatest version
of a package allowed by upper-constraints.

Change-Id: I46eac909846b2d6bd41608efedbed7db08df0c20
Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
2026-02-13 18:45:28 +00:00

113 lines
2.9 KiB
TOML

[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 = {text = "Apache-2.0"}
dynamic = ["version", "dependencies"]
requires-python = ">=3.10"
classifiers = [
"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.13",
]
[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 = [
"openstack"
]
[tool.mypy]
python_version = "3.10"
show_column_numbers = true
show_error_context = true
follow_imports = "normal"
check_untyped_defs = true
warn_unused_ignores = true
# many of the following are false while we incrementally add typing
warn_return_any = false
warn_unused_configs = true
warn_redundant_casts = true
strict_equality = true
disallow_untyped_decorators = false
disallow_any_generics = false
disallow_subclassing_any = false
disallow_untyped_calls = false
disallow_incomplete_defs = true
disallow_untyped_defs = false
no_implicit_reexport = true
extra_checks = true
disable_error_code = ["import-untyped"]
exclude = '(?x)(doc | examples | releasenotes)'
[[tool.mypy.overrides]]
module = [
"openstack._log",
"openstack.common",
"openstack.common.*",
"openstack.config",
"openstack.config.*",
"openstack.connection",
"openstack.exceptions",
"openstack.fields",
"openstack.format",
"openstack.proxy",
"openstack.utils",
"openstack.version",
"openstack.warnings",
]
warn_return_any = true
disallow_untyped_decorators = true
disallow_any_generics = true
disallow_subclassing_any = true
disallow_untyped_calls = true
disallow_untyped_defs = true
no_implicit_reexport = true
[[tool.mypy.overrides]]
module = ["openstack.tests.unit.*"]
ignore_errors = true
[tool.ruff]
line-length = 79
[tool.ruff.format]
quote-style = "preserve"
docstring-code-format = true
[tool.ruff.lint]
select = ["E4", "E5", "E7", "E9", "F", "RUF", "S", "UP", "W"]
ignore = [
# there are a lot of these to fix
"RUF012",
# we only use asserts for type narrowing
"S101",
]
[tool.ruff.lint.per-file-ignores]
"openstack/tests/*" = ["S"]
"openstack/_services_mixin.py" = ["E501"]
"examples/*" = ["S"]