[project]
name = "bc-configs"
version = "0.3.3"
description = "Configuration module, that provides a way to manage configs structure, validation and casting to type inside your code. Based on pedantic models. Additionally it can automatically getting config from environment variables, .env, HashiCorp Vault, etc."
keywords = ["config", "environment", "dotenv", "pydantic"]
classifiers = [
    'Development Status :: 5 - Production/Stable',
    'Programming Language :: Python',
    'Programming Language :: Python :: Implementation :: CPython',
    'Programming Language :: Python :: Implementation :: PyPy',
    'Programming Language :: Python :: 3',
    'Programming Language :: Python :: 3.12',
    'Programming Language :: Python :: 3.13',
    'Intended Audience :: Developers',
    'Intended Audience :: Information Technology',
    'Intended Audience :: System Administrators',
    'Operating System :: Unix',
    'Operating System :: POSIX :: Linux',
    'Environment :: Console',
    'Environment :: MacOS X',
    'Topic :: Software Development :: Libraries :: Python Modules',
    'Topic :: Internet',
]

license = { text = "MIT" }
readme = "README.md"

authors = [
    { name = "Артём Широких", email = "job@artemetr.ru" },
    { name = "Esoft", email = "it@esoft.tech" },
]
maintainers = [{ name = "Артём Широких", email = "job@artemetr.ru" }]

requires-python = ">=3.11"
dependencies = ["pydantic", "pyyaml"]

[project.urls]
Homepage = "https://github.com/etagi-esoft/py-bc-configs"
Source = "https://github.com/etagi-esoft/py-bc-configs"
Documentation = "https://esoft-tech.github.io/py-bc-configs/index.html"

[project.optional-dependencies]
hashicorp = ["bc-configs", "hvac"]

[dependency-groups]
docs = [
    "bc-configs",
    "autodoc-pydantic>=2.2.0",
    "furo>=2025.9.25",
    "myst-parser>=4.0.1",
    "sphinx>=8.2.3",
    "sphinx-book-theme>=1.1.4",
    "sphinx-rtd-theme>=3.0.2",
]
dev = ["bc-configs", "coverage", "mypy", "pre-commit", "python-dotenv", "ruff"]
test = ["bc-configs", "pytest", "pytest-cov", "python-dotenv"]
hashicorp = ["bc-configs", "hvac"]


[tool.uv]
default-groups = ["docs", "dev", "test"]


[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"


[tool.coverage.run]
source = ["src"]
branch = true
omit = [
    "src/bc_configs/__init__.py",
    "src/bc_configs/configurator/__init__.py",
    "src/bc_configs/environ_source/__init__.py",
]


[tool.coverage.report]
show_missing = true
fail_under = 90
exclude_lines = [
    "pragma: no cover",
    "if TYPE_CHECKING:",
    "raise NotImplementedError",
]


[tool.mypy]
plugins = ['pydantic.mypy']
exclude = ["^docs/*"]
