[build-system] requires = ["hatchling"] build-backend = "hatchling.build" [project] name = "ansible-module" dynamic = ["version"] description = 'Helps with developing modules for ansible in an easier manner' readme = "README.md" requires-python = ">=3.7" license = "MIT" keywords = [] authors = [{ name = "Sebastian Tobie", email = "sebastian@sebastian-tobie.de" }] classifiers = [ "Development Status :: 4 - Beta", "Programming Language :: Python", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", ] dependencies = ["ansible-core>=2.9.10"] [project.urls] Documentation = "https://github.com/unknown/ansible-module#readme" Issues = "https://github.com/unknown/ansible-module/issues" Source = "https://github.com/unknown/ansible-module" [project.scripts] update-doc = "ansible_module.update_doc:main" [tool.hatch.version] path = "src/ansible_module/__init__.py" [tool.hatch.envs.default] dependencies = ["coverage[toml]>=6.5", "pytest"] [tool.hatch.envs.default.scripts] test = "pytest {args:tests}" test-cov = "coverage run -m pytest {args:tests}" cov-report = ["- coverage combine", "coverage report"] cov = ["test-cov", "cov-report"] [[tool.hatch.envs.all.matrix]] python = ["3.7", "3.8", "3.9", "3.10", "3.11"] [tool.hatch.envs.lint] detached = true dependencies = ["black>=23.1.0", "mypy>=1.0.0", "ruff>=0.0.243"] [tool.hatch.envs.lint.scripts] typing = "mypy --install-types --non-interactive {args:src/ansible_module tests}" style = ["ruff {args:.}", "black --check --diff {args:.}"] fmt = ["black {args:.}", "ruff --fix {args:.}", "style"] all = ["style", "typing"] [tool.hatch.publish.index.repos.private] url = "https://gitea.sebastian-tobie.de/api/packages/sebastian/pypi" [tool.black] target-version = ["py37"] line-length = 120 skip-string-normalization = true [tool.ruff] target-version = "py37" line-length = 120 select = [ "A", "ARG", "B", "C", "DTZ", "E", "EM", "F", "FBT", "I", "ICN", "ISC", "N", "PLC", "PLE", "PLR", "PLW", "Q", "RUF", "S", "T", "TID", "UP", "W", "YTT", ] ignore = [ # Allow non-abstract empty methods in abstract base classes "B027", # Allow boolean positional values in function calls, like `dict.get(... True)` "FBT003", # Ignore checks for possible passwords "S105", "S106", "S107", # Ignore complexity "C901", "PLR0911", "PLR0912", "PLR0913", "PLR0915", ] unfixable = [ # Don't touch unused imports "F401", ] [tool.ruff.isort] known-first-party = ["ansible_module"] [tool.ruff.flake8-tidy-imports] ban-relative-imports = "all" [tool.ruff.per-file-ignores] # Tests can use magic values, assertions, and relative imports "tests/**/*" = ["PLR2004", "S101", "TID252"] [tool.coverage.run] source_pkgs = ["ansible_module", "tests"] branch = true parallel = true omit = ["src/ansible_module/__about__.py"] [tool.coverage.paths] ansible_module = ["src/ansible_module", "*/ansible-module/src/ansible_module"] tests = ["tests", "*/ansible-module/tests"] [tool.coverage.report] exclude_lines = ["no cov", "if __name__ == .__main__.:", "if TYPE_CHECKING:", "pragma: nocover"] [tool.mypy] python_version = "3.11" warn_return_any = true warn_unused_configs = true [[tool.mypy.overrides]] module = ["ansible", "ansible.module_utils", "ansible.module_utils.basic"] ignore_missing_imports = true [tool.pytest.ini_options] addopts = [ "--cov-report", "json", "--cov-report", "term-missing:skip-covered", "--cov", ] pythonpath = ["src"] required_plugins = [ "pytest-cov", "pytest-isort", "pytest-mypy" ]