pydanticonf 1.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pydanticonf-1.0.0/.coveragerc +14 -0
- pydanticonf-1.0.0/.dockerignore +51 -0
- pydanticonf-1.0.0/.env.sample +12 -0
- pydanticonf-1.0.0/.gitattributes +1 -0
- pydanticonf-1.0.0/.gitignore +80 -0
- pydanticonf-1.0.0/.markdownlint.json +15 -0
- pydanticonf-1.0.0/.mypy.ini +68 -0
- pydanticonf-1.0.0/.pre-commit-config.yaml +69 -0
- pydanticonf-1.0.0/.prettierignore +78 -0
- pydanticonf-1.0.0/.prettierrc +5 -0
- pydanticonf-1.0.0/.pytest.ini +19 -0
- pydanticonf-1.0.0/.python-version +1 -0
- pydanticonf-1.0.0/.ruff.toml +96 -0
- pydanticonf-1.0.0/.secrets.sample +1 -0
- pydanticonf-1.0.0/Makefile +86 -0
- pydanticonf-1.0.0/PKG-INFO +43 -0
- pydanticonf-1.0.0/README.md +10 -0
- pydanticonf-1.0.0/pydanticonf/__init__.py +7 -0
- pydanticonf-1.0.0/pydanticonf/py.typed +0 -0
- pydanticonf-1.0.0/pydanticonf/settings.py +44 -0
- pydanticonf-1.0.0/pyproject.toml +157 -0
- pydanticonf-1.0.0/pyrightconfig.json +56 -0
- pydanticonf-1.0.0/uv.lock +2160 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Python
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*$py.class
|
|
5
|
+
*.so
|
|
6
|
+
.Python
|
|
7
|
+
.venv/
|
|
8
|
+
venv/
|
|
9
|
+
ENV/
|
|
10
|
+
env/
|
|
11
|
+
.pytest_cache/
|
|
12
|
+
.coverage
|
|
13
|
+
.coverage.*
|
|
14
|
+
htmlcov/
|
|
15
|
+
.tox/
|
|
16
|
+
.mypy_cache/
|
|
17
|
+
.dmypy.json
|
|
18
|
+
dmypy.json
|
|
19
|
+
.pyre/
|
|
20
|
+
.ruff_cache/
|
|
21
|
+
|
|
22
|
+
# Git
|
|
23
|
+
.git/
|
|
24
|
+
.github/
|
|
25
|
+
.gitignore
|
|
26
|
+
.gitattributes
|
|
27
|
+
|
|
28
|
+
# IDE
|
|
29
|
+
.vscode/
|
|
30
|
+
.idea/
|
|
31
|
+
*.swp
|
|
32
|
+
*.swo
|
|
33
|
+
*~
|
|
34
|
+
.DS_Store
|
|
35
|
+
|
|
36
|
+
# Documentation
|
|
37
|
+
docs/
|
|
38
|
+
*.md
|
|
39
|
+
!README.md
|
|
40
|
+
|
|
41
|
+
# Testing
|
|
42
|
+
tests/
|
|
43
|
+
test_*.py
|
|
44
|
+
*_test.py
|
|
45
|
+
conftest.py
|
|
46
|
+
|
|
47
|
+
# Build artifacts
|
|
48
|
+
build/
|
|
49
|
+
dist/
|
|
50
|
+
*.egg-info/
|
|
51
|
+
.eggs/
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
ENV=development
|
|
2
|
+
DEBUG=true
|
|
3
|
+
|
|
4
|
+
S3__ENDPOINT_URL=http://host.docker.internal:9000
|
|
5
|
+
S3__AWS_ACCESS_KEY_ID=minioadmin
|
|
6
|
+
S3__AWS_SECRET_ACCESS_KEY=minioadmin
|
|
7
|
+
|
|
8
|
+
OPENAI__API_KEY=
|
|
9
|
+
OPENAI__MODEL_NAME=gpt-4o-mini
|
|
10
|
+
OPENAI__TEMPERATURE=0.0
|
|
11
|
+
OPENAI__MAX_COMPLETION_TOKENS=1000
|
|
12
|
+
OPENAI__LOGPROBS=false
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
*.ipynb linguist-documentation
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
_build/
|
|
2
|
+
.DS_Store
|
|
3
|
+
.secrets
|
|
4
|
+
__pycache__/
|
|
5
|
+
*.py[cod]
|
|
6
|
+
*$py.class
|
|
7
|
+
*.so
|
|
8
|
+
.Python
|
|
9
|
+
build/
|
|
10
|
+
develop-eggs/
|
|
11
|
+
dist/
|
|
12
|
+
downloads/
|
|
13
|
+
eggs/
|
|
14
|
+
.eggs/
|
|
15
|
+
lib/
|
|
16
|
+
lib64/
|
|
17
|
+
parts/
|
|
18
|
+
sdist/
|
|
19
|
+
var/
|
|
20
|
+
wheels/
|
|
21
|
+
share/python-wheels/
|
|
22
|
+
*.egg-info/
|
|
23
|
+
.installed.cfg
|
|
24
|
+
*.egg
|
|
25
|
+
MANIFEST
|
|
26
|
+
*.manifest
|
|
27
|
+
*.spec
|
|
28
|
+
pip-log.txt
|
|
29
|
+
pip-delete-this-directory.txt
|
|
30
|
+
htmlcov/
|
|
31
|
+
.tox/
|
|
32
|
+
.nox/
|
|
33
|
+
.coverage
|
|
34
|
+
.coverage.*
|
|
35
|
+
.cache
|
|
36
|
+
nosetests.xml
|
|
37
|
+
coverage.xml
|
|
38
|
+
*.cover
|
|
39
|
+
*.py,cover
|
|
40
|
+
.hypothesis/
|
|
41
|
+
.pytest_cache/
|
|
42
|
+
cover/
|
|
43
|
+
*.mo
|
|
44
|
+
*.pot
|
|
45
|
+
*.log
|
|
46
|
+
instance/
|
|
47
|
+
.webassets-cache
|
|
48
|
+
.scrapy
|
|
49
|
+
docs/_build/
|
|
50
|
+
.pybuilder/
|
|
51
|
+
target/
|
|
52
|
+
.ipynb_checkpoints
|
|
53
|
+
profile_default/
|
|
54
|
+
ipython_config.py
|
|
55
|
+
.pdm.toml
|
|
56
|
+
__pypackages__/
|
|
57
|
+
celerybeat-schedule
|
|
58
|
+
celerybeat.pid
|
|
59
|
+
*.sage.py
|
|
60
|
+
.venv
|
|
61
|
+
env/
|
|
62
|
+
venv/
|
|
63
|
+
ENV/
|
|
64
|
+
env.bak/
|
|
65
|
+
venv.bak/
|
|
66
|
+
.spyderproject
|
|
67
|
+
.spyproject
|
|
68
|
+
.ropeproject
|
|
69
|
+
/site
|
|
70
|
+
.mypy_cache/
|
|
71
|
+
.dmypy.json
|
|
72
|
+
dmypy.json
|
|
73
|
+
.pyre/
|
|
74
|
+
.pytype/
|
|
75
|
+
cython_debug/
|
|
76
|
+
.vscode/
|
|
77
|
+
.env
|
|
78
|
+
**/genai/**/*
|
|
79
|
+
**/llm/**/*
|
|
80
|
+
outputs/
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Reference:
|
|
2
|
+
# https://github.com/openai/openai-python/blob/main/mypy.ini
|
|
3
|
+
# https://github.com/pytorch/pytorch/blob/main/mypy.ini
|
|
4
|
+
[mypy]
|
|
5
|
+
pretty=True
|
|
6
|
+
show_error_codes=True
|
|
7
|
+
python_version=3.12
|
|
8
|
+
|
|
9
|
+
strict_equality=True
|
|
10
|
+
implicit_reexport=True
|
|
11
|
+
check_untyped_defs=True
|
|
12
|
+
no_implicit_optional=True
|
|
13
|
+
|
|
14
|
+
warn_return_any=True
|
|
15
|
+
warn_unreachable=True
|
|
16
|
+
warn_unused_configs=True
|
|
17
|
+
|
|
18
|
+
warn_unused_ignores=False
|
|
19
|
+
warn_redundant_casts=False
|
|
20
|
+
|
|
21
|
+
disallow_any_generics=True
|
|
22
|
+
disallow_untyped_defs=True
|
|
23
|
+
disallow_untyped_calls=False
|
|
24
|
+
disallow_subclassing_any=True
|
|
25
|
+
disallow_incomplete_defs=True
|
|
26
|
+
disallow_untyped_decorators=True
|
|
27
|
+
cache_fine_grained=True
|
|
28
|
+
disable_error_code=func-returns-value
|
|
29
|
+
|
|
30
|
+
plugins = pydantic.mypy
|
|
31
|
+
|
|
32
|
+
[pydantic-mypy]
|
|
33
|
+
init_forbid_extra = True
|
|
34
|
+
init_typed = True
|
|
35
|
+
warn_required_dynamic_aliases = True
|
|
36
|
+
|
|
37
|
+
# https://github.com/python/mypy/issues/12162
|
|
38
|
+
[mypy.overrides]
|
|
39
|
+
module="black.files.*"
|
|
40
|
+
ignore_errors=true
|
|
41
|
+
ignore_missing_imports=true
|
|
42
|
+
|
|
43
|
+
[mypy-matplotlib.*]
|
|
44
|
+
ignore_missing_imports=True
|
|
45
|
+
|
|
46
|
+
[mypy-mpl_toolkits.*]
|
|
47
|
+
ignore_missing_imports=True
|
|
48
|
+
|
|
49
|
+
[mypy-seaborn.*]
|
|
50
|
+
ignore_missing_imports=True
|
|
51
|
+
|
|
52
|
+
[mypy-sklearn.*]
|
|
53
|
+
ignore_missing_imports=True
|
|
54
|
+
|
|
55
|
+
[mypy-transformers.*]
|
|
56
|
+
ignore_missing_imports=True
|
|
57
|
+
|
|
58
|
+
[mypy-datasets.*]
|
|
59
|
+
ignore_missing_imports=True
|
|
60
|
+
|
|
61
|
+
[mypy-accelerate.*]
|
|
62
|
+
ignore_missing_imports=True
|
|
63
|
+
|
|
64
|
+
[mypy-scipy.*]
|
|
65
|
+
ignore_missing_imports=True
|
|
66
|
+
|
|
67
|
+
[mypy-bitsandbytes.*]
|
|
68
|
+
ignore_missing_imports=True
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
repos:
|
|
2
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
3
|
+
rev: v5.0.0
|
|
4
|
+
hooks:
|
|
5
|
+
- id: check-ast
|
|
6
|
+
- id: check-builtin-literals
|
|
7
|
+
- id: check-case-conflict
|
|
8
|
+
- id: check-docstring-first
|
|
9
|
+
- id: check-executables-have-shebangs
|
|
10
|
+
- id: check-json
|
|
11
|
+
- id: check-shebang-scripts-are-executable
|
|
12
|
+
- id: check-symlinks
|
|
13
|
+
- id: check-toml
|
|
14
|
+
- id: check-vcs-permalinks
|
|
15
|
+
- id: check-xml
|
|
16
|
+
- id: check-yaml
|
|
17
|
+
- id: debug-statements
|
|
18
|
+
- id: destroyed-symlinks
|
|
19
|
+
- id: mixed-line-ending
|
|
20
|
+
- id: trailing-whitespace
|
|
21
|
+
- id: check-merge-conflict
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
- repo: local
|
|
25
|
+
hooks:
|
|
26
|
+
- id: security-bandit
|
|
27
|
+
name: Security Check (Bandit)
|
|
28
|
+
entry: make security
|
|
29
|
+
language: system
|
|
30
|
+
types: [python]
|
|
31
|
+
pass_filenames: false
|
|
32
|
+
|
|
33
|
+
- repo: local
|
|
34
|
+
hooks:
|
|
35
|
+
- id: lint-ruff
|
|
36
|
+
name: Lint and Format Check (Ruff)
|
|
37
|
+
entry: make lint
|
|
38
|
+
language: system
|
|
39
|
+
types: [python]
|
|
40
|
+
pass_filenames: false
|
|
41
|
+
|
|
42
|
+
- repo: local
|
|
43
|
+
hooks:
|
|
44
|
+
- id: type-mypy
|
|
45
|
+
name: Type Check (MyPy)
|
|
46
|
+
entry: make typecheck
|
|
47
|
+
language: system
|
|
48
|
+
types: [python]
|
|
49
|
+
pass_filenames: false
|
|
50
|
+
|
|
51
|
+
- repo: local
|
|
52
|
+
hooks:
|
|
53
|
+
- id: unit-test
|
|
54
|
+
name: Unit Tests (PyTest)
|
|
55
|
+
entry: make test
|
|
56
|
+
language: system
|
|
57
|
+
types: [python]
|
|
58
|
+
pass_filenames: false
|
|
59
|
+
|
|
60
|
+
- repo: https://github.com/commitizen-tools/commitizen
|
|
61
|
+
rev: v4.8.3
|
|
62
|
+
hooks:
|
|
63
|
+
- id: commitizen
|
|
64
|
+
stages: [commit-msg]
|
|
65
|
+
|
|
66
|
+
- repo: https://github.com/astral-sh/uv-pre-commit
|
|
67
|
+
rev: 0.7.19
|
|
68
|
+
hooks:
|
|
69
|
+
- id: uv-lock
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# Build artifacts
|
|
2
|
+
build/
|
|
3
|
+
dist/
|
|
4
|
+
*.egg-info/
|
|
5
|
+
__pycache__/
|
|
6
|
+
*.pyc
|
|
7
|
+
*.pyo
|
|
8
|
+
.DS_Store
|
|
9
|
+
|
|
10
|
+
# Coverage reports
|
|
11
|
+
htmlcov/
|
|
12
|
+
.coverage
|
|
13
|
+
coverage.xml
|
|
14
|
+
*.cover
|
|
15
|
+
|
|
16
|
+
# Virtual environments
|
|
17
|
+
venv/
|
|
18
|
+
.venv/
|
|
19
|
+
env/
|
|
20
|
+
.env/
|
|
21
|
+
|
|
22
|
+
# Cache directories
|
|
23
|
+
.pytest_cache/
|
|
24
|
+
.mypy_cache/
|
|
25
|
+
.ruff_cache/
|
|
26
|
+
.nox/
|
|
27
|
+
.tox/
|
|
28
|
+
|
|
29
|
+
# Node modules
|
|
30
|
+
node_modules/
|
|
31
|
+
|
|
32
|
+
# IDE
|
|
33
|
+
.vscode/
|
|
34
|
+
.idea/
|
|
35
|
+
*.swp
|
|
36
|
+
*.swo
|
|
37
|
+
|
|
38
|
+
# Documentation build
|
|
39
|
+
docs/_build/
|
|
40
|
+
docs/_static/
|
|
41
|
+
docs/_templates/
|
|
42
|
+
|
|
43
|
+
# Jupyter
|
|
44
|
+
.ipynb_checkpoints/
|
|
45
|
+
*.ipynb
|
|
46
|
+
|
|
47
|
+
# Lock files (we want to format these)
|
|
48
|
+
!package-lock.json
|
|
49
|
+
!yarn.lock
|
|
50
|
+
!pnpm-lock.yaml
|
|
51
|
+
|
|
52
|
+
# Test artifacts
|
|
53
|
+
.benchmarks/
|
|
54
|
+
|
|
55
|
+
# Temporary files
|
|
56
|
+
*.tmp
|
|
57
|
+
*.temp
|
|
58
|
+
*.log
|
|
59
|
+
|
|
60
|
+
# Python files (handled by ruff)
|
|
61
|
+
*.py
|
|
62
|
+
|
|
63
|
+
# Generated files
|
|
64
|
+
*.min.js
|
|
65
|
+
*.min.css
|
|
66
|
+
|
|
67
|
+
# Archives
|
|
68
|
+
*.zip
|
|
69
|
+
*.tar.gz
|
|
70
|
+
*.tgz
|
|
71
|
+
|
|
72
|
+
# OS files
|
|
73
|
+
Thumbs.db
|
|
74
|
+
|
|
75
|
+
# Git
|
|
76
|
+
.git/
|
|
77
|
+
.gitignore
|
|
78
|
+
.gitattributes
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Reference:
|
|
2
|
+
# https://github.com/tiangolo/fastapi/blob/master/pyproject.toml
|
|
3
|
+
# https://github.com/pydantic/pydantic/blob/main/pyproject.toml
|
|
4
|
+
[pytest]
|
|
5
|
+
minversion=6.0
|
|
6
|
+
pythonpath=.
|
|
7
|
+
addopts=
|
|
8
|
+
--strict-config
|
|
9
|
+
--strict-markers
|
|
10
|
+
--import-mode=importlib
|
|
11
|
+
testpaths=
|
|
12
|
+
tests/pydanticonf/unit
|
|
13
|
+
tests/pydanticonf/integration
|
|
14
|
+
xfail_strict=true
|
|
15
|
+
filterwarnings=
|
|
16
|
+
error
|
|
17
|
+
ignore::DeprecationWarning
|
|
18
|
+
markers =
|
|
19
|
+
asyncio: mark test as an async test
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.12
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
exclude = [
|
|
2
|
+
".bzr",
|
|
3
|
+
".direnv",
|
|
4
|
+
".eggs",
|
|
5
|
+
".git",
|
|
6
|
+
".git-rewrite",
|
|
7
|
+
".hg",
|
|
8
|
+
".mypy_cache",
|
|
9
|
+
".nox",
|
|
10
|
+
".pants.d",
|
|
11
|
+
".pytype",
|
|
12
|
+
".ruff_cache",
|
|
13
|
+
".svn",
|
|
14
|
+
".tox",
|
|
15
|
+
".venv",
|
|
16
|
+
"__pypackages__",
|
|
17
|
+
"_build",
|
|
18
|
+
"buck-out",
|
|
19
|
+
"build",
|
|
20
|
+
"dist",
|
|
21
|
+
"node_modules",
|
|
22
|
+
"venv",
|
|
23
|
+
]
|
|
24
|
+
|
|
25
|
+
line-length = 120
|
|
26
|
+
indent-width = 4
|
|
27
|
+
target-version = "py312"
|
|
28
|
+
output-format = "grouped"
|
|
29
|
+
|
|
30
|
+
[lint]
|
|
31
|
+
exclude = ["*.ipynb"]
|
|
32
|
+
select = [
|
|
33
|
+
"ARG",
|
|
34
|
+
"B",
|
|
35
|
+
"C4",
|
|
36
|
+
"G",
|
|
37
|
+
"E",
|
|
38
|
+
"EXE",
|
|
39
|
+
"F",
|
|
40
|
+
"I",
|
|
41
|
+
"SIM1",
|
|
42
|
+
"W",
|
|
43
|
+
"NPY",
|
|
44
|
+
"PERF",
|
|
45
|
+
"PGH004",
|
|
46
|
+
"PIE794",
|
|
47
|
+
"PIE800",
|
|
48
|
+
"PIE804",
|
|
49
|
+
"PIE807",
|
|
50
|
+
"PIE810",
|
|
51
|
+
"PLC0131",
|
|
52
|
+
"PLC0132",
|
|
53
|
+
"PLC0205",
|
|
54
|
+
"PLE",
|
|
55
|
+
"PLR0133",
|
|
56
|
+
"PLR0206",
|
|
57
|
+
"PLR1722",
|
|
58
|
+
"PLW0129",
|
|
59
|
+
"PLW0406",
|
|
60
|
+
"PLW0711",
|
|
61
|
+
"PLW1509",
|
|
62
|
+
"PLW3301",
|
|
63
|
+
"PT006",
|
|
64
|
+
"PT022",
|
|
65
|
+
"PT023",
|
|
66
|
+
"PT024",
|
|
67
|
+
"PT025",
|
|
68
|
+
"PT026",
|
|
69
|
+
"PYI",
|
|
70
|
+
"B904",
|
|
71
|
+
"TRY203",
|
|
72
|
+
"UP",
|
|
73
|
+
]
|
|
74
|
+
ignore = [
|
|
75
|
+
"E501",
|
|
76
|
+
"UP006",
|
|
77
|
+
"UP015",
|
|
78
|
+
"UP035",
|
|
79
|
+
"G004",
|
|
80
|
+
"UP007",
|
|
81
|
+
"UP040",
|
|
82
|
+
"UP046",
|
|
83
|
+
"UP047",
|
|
84
|
+
]
|
|
85
|
+
fixable = ["ALL"]
|
|
86
|
+
unfixable = []
|
|
87
|
+
dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"
|
|
88
|
+
|
|
89
|
+
[lint.isort]
|
|
90
|
+
known-first-party = ["pydanticonf"]
|
|
91
|
+
|
|
92
|
+
[format]
|
|
93
|
+
quote-style = "double"
|
|
94
|
+
indent-style = "space"
|
|
95
|
+
skip-magic-trailing-comma = false
|
|
96
|
+
line-ending = "auto"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
POSTGRES__PASSWORD=
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
.DEFAULT_GOAL := help
|
|
2
|
+
|
|
3
|
+
PACKAGE_NAME := pydanticonf
|
|
4
|
+
DOCS_DIR := playbook
|
|
5
|
+
TEST_DIR := tests
|
|
6
|
+
SOURCES := $(PACKAGE_NAME)
|
|
7
|
+
|
|
8
|
+
.PHONY: .uv
|
|
9
|
+
.uv:
|
|
10
|
+
@uv -V || echo 'Please install uv: https://docs.astral.sh/uv/getting-started/installation/'
|
|
11
|
+
|
|
12
|
+
.PHONY: install
|
|
13
|
+
install: .uv
|
|
14
|
+
uv sync --frozen --all-extras --all-packages --all-groups
|
|
15
|
+
uv run pre-commit install
|
|
16
|
+
uv run pre-commit install --hook-type commit-msg
|
|
17
|
+
|
|
18
|
+
.PHONY: lock
|
|
19
|
+
lock: .uv
|
|
20
|
+
uv lock --upgrade
|
|
21
|
+
|
|
22
|
+
.PHONY: sync
|
|
23
|
+
sync: .uv
|
|
24
|
+
uv sync --all-extras --all-packages --all-groups
|
|
25
|
+
|
|
26
|
+
.PHONY: format
|
|
27
|
+
format: .uv
|
|
28
|
+
uv run ruff check --fix --exit-zero $(SOURCES)
|
|
29
|
+
uv run ruff format $(SOURCES)
|
|
30
|
+
|
|
31
|
+
.PHONY: lint
|
|
32
|
+
lint: .uv
|
|
33
|
+
uv run ruff check $(SOURCES)
|
|
34
|
+
uv run ruff format --check $(SOURCES)
|
|
35
|
+
|
|
36
|
+
.PHONY: security
|
|
37
|
+
security: .uv
|
|
38
|
+
uv run bandit -r $(PACKAGE_NAME) -ll
|
|
39
|
+
|
|
40
|
+
.PHONY: typecheck
|
|
41
|
+
typecheck: .uv
|
|
42
|
+
uv run mypy $(SOURCES)
|
|
43
|
+
uv run pyright $(SOURCES)
|
|
44
|
+
# @echo "Running ty (experimental)..."
|
|
45
|
+
# uv run ty check $(SOURCES) || echo "ty check failed (expected for pre-release)"
|
|
46
|
+
|
|
47
|
+
.PHONY: test
|
|
48
|
+
test: .uv
|
|
49
|
+
uv run pytest $(TEST_DIR)
|
|
50
|
+
|
|
51
|
+
.PHONY: coverage
|
|
52
|
+
coverage: .uv
|
|
53
|
+
uv run coverage run -m pytest $(TEST_DIR)
|
|
54
|
+
uv run coverage html -d htmlcov
|
|
55
|
+
uv run coverage xml -o coverage.xml
|
|
56
|
+
uv run coverage report -m --fail-under=95
|
|
57
|
+
|
|
58
|
+
.PHONY: docs
|
|
59
|
+
docs: .uv
|
|
60
|
+
cd $(DOCS_DIR) && uv run jupyter book build .
|
|
61
|
+
|
|
62
|
+
.PHONY: ci
|
|
63
|
+
ci: lint security typecheck test
|
|
64
|
+
|
|
65
|
+
.PHONY: clean
|
|
66
|
+
clean:
|
|
67
|
+
@./scripts/clean.sh
|
|
68
|
+
|
|
69
|
+
.PHONY: help
|
|
70
|
+
help:
|
|
71
|
+
@echo "Development Commands:"
|
|
72
|
+
@echo " install Install all dependencies (all groups + extras)"
|
|
73
|
+
@echo " lock Update and regenerate lock file"
|
|
74
|
+
@echo " sync Sync dependencies (without --frozen)"
|
|
75
|
+
@echo " format Format code with ruff"
|
|
76
|
+
@echo " lint Lint code with ruff (includes format check)"
|
|
77
|
+
@echo " security Run security checks with bandit"
|
|
78
|
+
@echo " typecheck Run type checking with mypy, pyright"
|
|
79
|
+
@echo " test Run tests with pytest"
|
|
80
|
+
@echo " coverage Run tests with coverage reporting (95% minimum)"
|
|
81
|
+
@echo " docs Build Jupyter Book documentation"
|
|
82
|
+
@echo " ci Run full CI pipeline (lint, security, typecheck, test, coverage)"
|
|
83
|
+
@echo ""
|
|
84
|
+
@echo "Utility Commands:"
|
|
85
|
+
@echo " clean Clean build artifacts and cache files"
|
|
86
|
+
@echo " help Show this help message"
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: pydanticonf
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: Pydantic settings with YAML configuration support.
|
|
5
|
+
Project-URL: Homepage, https://github.com/gao-hongnan/pydanticonf
|
|
6
|
+
Project-URL: Documentation, https://github.com/gao-hongnan/pydanticonf/tree/main/playbook
|
|
7
|
+
Project-URL: Repository, https://github.com/gao-hongnan/pydanticonf
|
|
8
|
+
Project-URL: Issues, https://github.com/gao-hongnan/pydanticonf/issues
|
|
9
|
+
Project-URL: Changelog, https://github.com/gao-hongnan/pydanticonf/releases
|
|
10
|
+
Author-email: GAO Hongnan <hongnangao@gmail.com>
|
|
11
|
+
Maintainer-email: GAO Hongnan <hongnangao@gmail.com>
|
|
12
|
+
License: Apache-2.0
|
|
13
|
+
Keywords: config,configuration,dotenv,environment,pydantic,settings,yaml
|
|
14
|
+
Classifier: Development Status :: 4 - Beta
|
|
15
|
+
Classifier: Intended Audience :: Developers
|
|
16
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
|
17
|
+
Classifier: Operating System :: OS Independent
|
|
18
|
+
Classifier: Programming Language :: Python :: 3
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
21
|
+
Classifier: Topic :: Software Development :: Libraries
|
|
22
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
23
|
+
Classifier: Typing :: Typed
|
|
24
|
+
Requires-Python: >=3.12
|
|
25
|
+
Requires-Dist: pydantic-settings>=2.10.1
|
|
26
|
+
Requires-Dist: pydantic>=2.11.7
|
|
27
|
+
Requires-Dist: pyyaml>=6.0.2
|
|
28
|
+
Provides-Extra: playground
|
|
29
|
+
Requires-Dist: python-dotenv>=1.0.1; extra == 'playground'
|
|
30
|
+
Requires-Dist: rich>=13.12.0; extra == 'playground'
|
|
31
|
+
Requires-Dist: typer>=0.15.1; extra == 'playground'
|
|
32
|
+
Description-Content-Type: text/markdown
|
|
33
|
+
|
|
34
|
+
# Pydanticonf
|
|
35
|
+
|
|
36
|
+
[](https://github.com/gao-hongnan/pydanticonf/actions/workflows/ci.yml)
|
|
37
|
+
[](https://www.python.org/downloads/)
|
|
38
|
+
[](https://github.com/gao-hongnan/pydanticonf)
|
|
39
|
+
[](https://opensource.org/licenses/Apache-2.0)
|
|
40
|
+
[](https://github.com/astral-sh/ruff)
|
|
41
|
+
[](http://mypy-lang.org/)
|
|
42
|
+
[](https://github.com/microsoft/pyright)
|
|
43
|
+
[](https://github.com/pre-commit/pre-commit)
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Pydanticonf
|
|
2
|
+
|
|
3
|
+
[](https://github.com/gao-hongnan/pydanticonf/actions/workflows/ci.yml)
|
|
4
|
+
[](https://www.python.org/downloads/)
|
|
5
|
+
[](https://github.com/gao-hongnan/pydanticonf)
|
|
6
|
+
[](https://opensource.org/licenses/Apache-2.0)
|
|
7
|
+
[](https://github.com/astral-sh/ruff)
|
|
8
|
+
[](http://mypy-lang.org/)
|
|
9
|
+
[](https://github.com/microsoft/pyright)
|
|
10
|
+
[](https://github.com/pre-commit/pre-commit)
|
|
File without changes
|