[project]
name = "openstack-codegenerator"
description = "Generator for OpenStack stuff"
authors = [
 {name = "Artem Goncharov"},
 {email="openstack-discuss@lists.openstack.org"}
]
readme = {file = "README.rst", content-type = "text/x-rst"}
license = {text = "Apache-2.0"}
dynamic = ["version"]
dependencies = [
  "Jinja2>=3.0", # BSD
  "jsonref>=1.0", # MIT
  "openapi_core>=0.17", # BSD
  "pydantic>=2.6", # MIT
  "ruamel.yaml>=0.18", # MIT
  "jsonschema>=4.19", # MIT
  "beautifulsoup4>=4.0", # MIT
  # convert html into markdown
  "markdownify>=0.11", # MIT
  # wrap markdown when rendering
  "mdformat>=0.7", # MIT
  # Get sphinx docstrings from source code
  "sphinx>=4.0.0", # BSD
  # Convert rst docstrings to html (openapi)
  "docutils>=0.20", # MIT
  "wsgi-intercept>=1.13", # MIT
  "wsme>=0.12", # MIT
  "oslotest>=5.0.0", # Apache-2.0
  "openstacksdk>=2.0", # Apache-2.0
]
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",
  # Codegenerator is currently not intended to be uploaded to pypi
  "Private :: Do Not Upload",
]

[project.optional-dependencies]
test = [
  # pip is necessary since siblings installation job uses it
  "pip",  # Apache-2.0
  "flake8-import-order==0.18.2", # LGPLv3
  "stestr>=1.0.0" # Apache-2.0]
]
block-storage = ["cinder>=23.0"]
compute = ["nova>=28.0"]
identity = ["keystone>=23.0"]
image = ["glance>=27.0"]
load-balancing = ["octavia>=11.0"]
network = ["neutron>=23.1", "neutron-vpnaas>=23.0"]
placement = ["openstack-placement>=10.0"]
shared-file-system = ["manila>=18.0"]

[project.urls]
Homepage = "https://docs.openstack.org/codegenerator"
Repository = "https://opendev.org/openstack/codegenerator/"

[project.scripts]
openstack-codegenerator = "codegenerator.cli:main"

[build-system]
requires = ["pbr>=6.0.0", "setuptools>=64.0.0"]
build-backend = "pbr.build"

[tool.uv]

[tool.ruff]
line-length = 79
target-version = "py38"

[tool.setuptools]
packages = [
  "codegenerator"
]

[tool.ruff.lint]
# enable the following rule classes:
#
# C4: https://docs.astral.sh/ruff/rules/#flake8-comprehensions-c4
# UP: https://docs.astral.sh/ruff/rules/#pyupgrade-up
select = ["C4", "UP"]

[tool.ruff.format]
quote-style = "double"
docstring-code-format = true
skip-magic-trailing-comma = true

[tool.mypy]
show_column_numbers = true
show_error_context = true
ignore_missing_imports = true
# follow_imports = normal
follow_imports = "skip"
incremental = true
check_untyped_defs = true
warn_unused_ignores = true