clauses 0.0.1__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.
@@ -0,0 +1,163 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ build/
12
+ develop-eggs/
13
+ dist/
14
+ downloads/
15
+ eggs/
16
+ .eggs/
17
+ lib/
18
+ lib64/
19
+ parts/
20
+ sdist/
21
+ var/
22
+ wheels/
23
+ share/python-wheels/
24
+ *.egg-info/
25
+ .installed.cfg
26
+ *.egg
27
+ MANIFEST
28
+
29
+ # uv
30
+ uv.lock
31
+
32
+ # PyInstaller
33
+ # Usually these files are written by a python script from a template
34
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
35
+ *.manifest
36
+ *.spec
37
+
38
+ # Installer logs
39
+ pip-log.txt
40
+ pip-delete-this-directory.txt
41
+
42
+ # Unit test / coverage reports
43
+ cover/
44
+ htmlcov/
45
+ .tox/
46
+ .nox/
47
+ .coverage
48
+ .coverage.*
49
+ .cache
50
+ nosetests.xml
51
+ coverage.xml
52
+ *.cover
53
+ *.py,cover
54
+ .hypothesis/
55
+ .pytest_cache/
56
+ cover/
57
+
58
+ # Sphinx documentation
59
+ docs/build/
60
+
61
+ # PyBuilder
62
+ .pybuilder/
63
+ target/
64
+
65
+ # IPython
66
+ profile_default/
67
+ ipython_config.py
68
+
69
+ # Translations
70
+ *.mo
71
+ *.pot
72
+
73
+ # pyenv
74
+ # For a library or package, you might want to ignore these files since the code is
75
+ # intended to run in multiple environments; otherwise, check them in:
76
+ .python-version
77
+
78
+ # pipenv
79
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
80
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
81
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
82
+ # install all needed dependencies.
83
+ #Pipfile.lock
84
+
85
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
86
+ __pypackages__/
87
+
88
+ # Environments
89
+ .env
90
+ .venv
91
+ env/
92
+ venv/
93
+ ENV/
94
+ env.bak/
95
+ venv.bak/
96
+
97
+ # mypy
98
+ .mypy_cache/
99
+ .dmypy.json
100
+ dmypy.json
101
+
102
+ # Pyre type checker
103
+ .pyre/
104
+
105
+ # pytype static type analyzer
106
+ .pytype/
107
+
108
+ # Cython debug symbols
109
+ cython_debug/
110
+
111
+ # Lints
112
+ .ruff_cache
113
+
114
+ # PyCharm
115
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
116
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
117
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
118
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
119
+ .idea/
120
+
121
+ # vscode
122
+ .vscode/
123
+
124
+ # Emacs
125
+ *~
126
+ \#*\#
127
+ /.emacs.desktop
128
+ /.emacs.desktop.lock
129
+ *.elc
130
+ auto-save-list
131
+ tramp
132
+ .\#*
133
+
134
+ # Org-mode
135
+ .org-id-locations
136
+ *_archive
137
+
138
+ # flymake-mode
139
+ *_flymake.*
140
+
141
+ # eshell files
142
+ /eshell/history
143
+ /eshell/lastdir
144
+
145
+ # elpa packages
146
+ /elpa/
147
+
148
+ # reftex files
149
+ *.rel
150
+
151
+ # Flycheck
152
+ flycheck_*.el
153
+
154
+ # projectiles files
155
+ .projectile
156
+
157
+ # directory configuration
158
+ .dir-locals.el
159
+
160
+ # MacOS
161
+ .DS_Store
162
+
163
+ *.html
clauses-0.0.1/.gitlint ADDED
@@ -0,0 +1,10 @@
1
+ [general]
2
+ verbosity = 3
3
+ ignore=B6
4
+
5
+ ### Configuring rules ###
6
+ [title-max-length]
7
+ line-length=120
8
+
9
+ [title-min-length]
10
+ min-length=5
@@ -0,0 +1,33 @@
1
+ ---
2
+ repos:
3
+ - repo: https://github.com/pre-commit/pre-commit-hooks
4
+ rev: v5.0.0
5
+ hooks:
6
+ - id: check-added-large-files
7
+ args: ["--maxkb=500"]
8
+ - id: check-json
9
+ - id: check-toml
10
+ - id: detect-private-key
11
+ - id: end-of-file-fixer
12
+ - id: fix-byte-order-marker
13
+ - id: mixed-line-ending
14
+ - id: name-tests-test
15
+ args: ["--pytest-test-first"]
16
+ exclude: "^tests/(errors|helpers).py"
17
+ - id: no-commit-to-branch
18
+ - id: pretty-format-json
19
+ - id: trailing-whitespace
20
+ - repo: https://github.com/adrienverge/yamllint
21
+ rev: v1.35.1
22
+ hooks:
23
+ - id: yamllint
24
+ - repo: https://github.com/pre-commit/pygrep-hooks
25
+ rev: v1.10.0
26
+ hooks:
27
+ - id: python-check-blanket-type-ignore
28
+ - id: python-no-eval
29
+ - id: python-no-log-warn
30
+ - repo: https://github.com/jorisroovers/gitlint
31
+ rev: v0.19.1
32
+ hooks:
33
+ - id: gitlint
@@ -0,0 +1,5 @@
1
+ exclude = ["**/.venv/**/*.toml"]
2
+
3
+ [formatting]
4
+ array_auto_collapse = false
5
+ column_width = 120
@@ -0,0 +1,15 @@
1
+ ---
2
+ extends: default
3
+
4
+ ignore:
5
+ - "**/.venv/*"
6
+ - "**/.tox/*"
7
+
8
+ rules:
9
+ comments:
10
+ require-starting-space: true
11
+ min-spaces-from-content: 1
12
+ quoted-strings:
13
+ quote-type: double
14
+ required: false
15
+ check-keys: true
clauses-0.0.1/LICENSE ADDED
@@ -0,0 +1,23 @@
1
+ Copyright (c) 2023-2025 Dmitry Burmistrov
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is
8
+ furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in all
11
+ copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
+ SOFTWARE.
20
+
21
+ Except as contained in this notice, the name(s) of the above copyright holders
22
+ shall not be used in advertising or otherwise to promote the sale, use or other
23
+ dealings in this Software without prior written authorization.
clauses-0.0.1/PKG-INFO ADDED
@@ -0,0 +1,93 @@
1
+ Metadata-Version: 2.4
2
+ Name: clauses
3
+ Version: 0.0.1
4
+ Summary: ...
5
+ Author-email: Dima Burmistrov <pyctrl.dev@gmail.com>
6
+ License: Copyright (c) 2023-2025 Dmitry Burmistrov
7
+
8
+ Permission is hereby granted, free of charge, to any person obtaining a copy
9
+ of this software and associated documentation files (the "Software"), to deal
10
+ in the Software without restriction, including without limitation the rights
11
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12
+ copies of the Software, and to permit persons to whom the Software is
13
+ furnished to do so, subject to the following conditions:
14
+
15
+ The above copyright notice and this permission notice shall be included in all
16
+ copies or substantial portions of the Software.
17
+
18
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
24
+ SOFTWARE.
25
+
26
+ Except as contained in this notice, the name(s) of the above copyright holders
27
+ shall not be used in advertising or otherwise to promote the sale, use or other
28
+ dealings in this Software without prior written authorization.
29
+
30
+ Project-URL: homepage, https://gitlab.com/pyctrl/clauses
31
+ Project-URL: source, https://gitlab.com/pyctrl/clauses
32
+ Project-URL: issues, https://gitlab.com/pyctrl/clauses/issues
33
+ Keywords: clauses
34
+ Classifier: Programming Language :: Python :: 3
35
+ Classifier: License :: OSI Approved :: MIT License
36
+ Classifier: Operating System :: OS Independent
37
+ Classifier: Development Status :: 4 - Beta
38
+ Classifier: Intended Audience :: Developers
39
+ Classifier: Topic :: Software Development :: Libraries
40
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
41
+ Classifier: Typing :: Typed
42
+ Requires-Python: >=3.8
43
+ Description-Content-Type: text/x-rst
44
+ License-File: LICENSE
45
+ Dynamic: license-file
46
+
47
+ clauses
48
+ #######
49
+
50
+
51
+ **Installation**
52
+
53
+ ::
54
+
55
+ pip install clauses
56
+
57
+
58
+ For developers
59
+ **************
60
+
61
+ * Use regular virtualenv or any other (no pre-defined preparations provided)
62
+
63
+ * Running tests::
64
+
65
+ tox
66
+
67
+ * Building package::
68
+
69
+ tox -e build
70
+
71
+ * Contributing: contact me through `Issues <https://gitlab.com/pyctrl/clauses/issues>`__
72
+
73
+
74
+ Versioning
75
+ **********
76
+
77
+ `SemVer <http://semver.org/>`__ used for versioning.
78
+ For available versions see the repository
79
+ `tags <https://gitlab.com/pyctrl/clauses/tags>`__.
80
+
81
+
82
+ Authors
83
+ *******
84
+
85
+ - **Dima Burmistrov** - *Initial work* -
86
+ `pyctrl <https://github.com/pyctrl>`__
87
+
88
+
89
+ License
90
+ *******
91
+
92
+ This project is licensed under the X11 License (extended MIT) - see the
93
+ `LICENSE <https://github.com/pyctrl/clauses/blob/main/LICENSE>`__ file for details
@@ -0,0 +1,47 @@
1
+ clauses
2
+ #######
3
+
4
+
5
+ **Installation**
6
+
7
+ ::
8
+
9
+ pip install clauses
10
+
11
+
12
+ For developers
13
+ **************
14
+
15
+ * Use regular virtualenv or any other (no pre-defined preparations provided)
16
+
17
+ * Running tests::
18
+
19
+ tox
20
+
21
+ * Building package::
22
+
23
+ tox -e build
24
+
25
+ * Contributing: contact me through `Issues <https://gitlab.com/pyctrl/clauses/issues>`__
26
+
27
+
28
+ Versioning
29
+ **********
30
+
31
+ `SemVer <http://semver.org/>`__ used for versioning.
32
+ For available versions see the repository
33
+ `tags <https://gitlab.com/pyctrl/clauses/tags>`__.
34
+
35
+
36
+ Authors
37
+ *******
38
+
39
+ - **Dima Burmistrov** - *Initial work* -
40
+ `pyctrl <https://github.com/pyctrl>`__
41
+
42
+
43
+ License
44
+ *******
45
+
46
+ This project is licensed under the X11 License (extended MIT) - see the
47
+ `LICENSE <https://github.com/pyctrl/clauses/blob/main/LICENSE>`__ file for details
File without changes
File without changes
@@ -0,0 +1,93 @@
1
+ Metadata-Version: 2.4
2
+ Name: clauses
3
+ Version: 0.0.1
4
+ Summary: ...
5
+ Author-email: Dima Burmistrov <pyctrl.dev@gmail.com>
6
+ License: Copyright (c) 2023-2025 Dmitry Burmistrov
7
+
8
+ Permission is hereby granted, free of charge, to any person obtaining a copy
9
+ of this software and associated documentation files (the "Software"), to deal
10
+ in the Software without restriction, including without limitation the rights
11
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12
+ copies of the Software, and to permit persons to whom the Software is
13
+ furnished to do so, subject to the following conditions:
14
+
15
+ The above copyright notice and this permission notice shall be included in all
16
+ copies or substantial portions of the Software.
17
+
18
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
24
+ SOFTWARE.
25
+
26
+ Except as contained in this notice, the name(s) of the above copyright holders
27
+ shall not be used in advertising or otherwise to promote the sale, use or other
28
+ dealings in this Software without prior written authorization.
29
+
30
+ Project-URL: homepage, https://gitlab.com/pyctrl/clauses
31
+ Project-URL: source, https://gitlab.com/pyctrl/clauses
32
+ Project-URL: issues, https://gitlab.com/pyctrl/clauses/issues
33
+ Keywords: clauses
34
+ Classifier: Programming Language :: Python :: 3
35
+ Classifier: License :: OSI Approved :: MIT License
36
+ Classifier: Operating System :: OS Independent
37
+ Classifier: Development Status :: 4 - Beta
38
+ Classifier: Intended Audience :: Developers
39
+ Classifier: Topic :: Software Development :: Libraries
40
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
41
+ Classifier: Typing :: Typed
42
+ Requires-Python: >=3.8
43
+ Description-Content-Type: text/x-rst
44
+ License-File: LICENSE
45
+ Dynamic: license-file
46
+
47
+ clauses
48
+ #######
49
+
50
+
51
+ **Installation**
52
+
53
+ ::
54
+
55
+ pip install clauses
56
+
57
+
58
+ For developers
59
+ **************
60
+
61
+ * Use regular virtualenv or any other (no pre-defined preparations provided)
62
+
63
+ * Running tests::
64
+
65
+ tox
66
+
67
+ * Building package::
68
+
69
+ tox -e build
70
+
71
+ * Contributing: contact me through `Issues <https://gitlab.com/pyctrl/clauses/issues>`__
72
+
73
+
74
+ Versioning
75
+ **********
76
+
77
+ `SemVer <http://semver.org/>`__ used for versioning.
78
+ For available versions see the repository
79
+ `tags <https://gitlab.com/pyctrl/clauses/tags>`__.
80
+
81
+
82
+ Authors
83
+ *******
84
+
85
+ - **Dima Burmistrov** - *Initial work* -
86
+ `pyctrl <https://github.com/pyctrl>`__
87
+
88
+
89
+ License
90
+ *******
91
+
92
+ This project is licensed under the X11 License (extended MIT) - see the
93
+ `LICENSE <https://github.com/pyctrl/clauses/blob/main/LICENSE>`__ file for details
@@ -0,0 +1,15 @@
1
+ .gitignore
2
+ .gitlint
3
+ .pre-commit-config.yaml
4
+ .taplo.toml
5
+ .yamllint.yaml
6
+ LICENSE
7
+ README.rst
8
+ pyproject.toml
9
+ clauses/__init__.py
10
+ clauses/py.typed
11
+ clauses.egg-info/PKG-INFO
12
+ clauses.egg-info/SOURCES.txt
13
+ clauses.egg-info/dependency_links.txt
14
+ clauses.egg-info/top_level.txt
15
+ tests/__init__.py
@@ -0,0 +1 @@
1
+ clauses
@@ -0,0 +1,414 @@
1
+ [project]
2
+ name = "clauses"
3
+ dynamic = ["version"]
4
+ description = "..."
5
+ authors = [{ name = "Dima Burmistrov", email = "pyctrl.dev@gmail.com" }]
6
+ license = { file = "LICENSE" }
7
+ readme = "README.rst"
8
+
9
+ requires-python = ">=3.8"
10
+ classifiers = [
11
+ "Programming Language :: Python :: 3",
12
+ "License :: OSI Approved :: MIT License",
13
+ "Operating System :: OS Independent",
14
+ "Development Status :: 4 - Beta",
15
+ "Intended Audience :: Developers",
16
+ "Topic :: Software Development :: Libraries",
17
+ "Topic :: Software Development :: Libraries :: Python Modules",
18
+ "Typing :: Typed",
19
+ ]
20
+ keywords = ["clauses"]
21
+
22
+ [project.urls]
23
+ homepage = "https://gitlab.com/pyctrl/clauses"
24
+ source = "https://gitlab.com/pyctrl/clauses"
25
+ # documentation = "https://clauses.readthedocs.io/en/latest/"
26
+ issues = "https://gitlab.com/pyctrl/clauses/issues"
27
+
28
+
29
+ [dependency-groups]
30
+ dev = [
31
+ "ipython",
32
+ "ruff",
33
+ "mypy",
34
+ "gitlint",
35
+ { include-group = "docs" },
36
+ { include-group = "tests" },
37
+ ]
38
+
39
+ tests = [
40
+ "pytest",
41
+ "pytest-cov",
42
+ ]
43
+
44
+ #rst = ["restructuredtext_lint", "Pygments"]
45
+ ## readme:
46
+ ## rst
47
+ ## rst-include = `rst_include include <in> <out>`
48
+ ## docutils = `docutils README.rst README.html`
49
+
50
+ docs = [
51
+ # base
52
+ "sphinx",
53
+ "sphinx-autobuild",
54
+ # theme
55
+ "pydata-sphinx-theme",
56
+ # extensions
57
+ "sphinx-copybutton",
58
+ "sphinx-design",
59
+ "sphinx-favicon",
60
+ "sphinx-togglebutton",
61
+ # project
62
+ "setuptools-scm",
63
+ ]
64
+
65
+ ## release
66
+ build = ["rst-include", "build", "twine"]
67
+ upload = ["twine"]
68
+
69
+
70
+ [build-system]
71
+ requires = ["setuptools>=61.2", "setuptools-scm", "wheel"]
72
+ build-backend = "setuptools.build_meta"
73
+
74
+ [tool.setuptools_scm]
75
+
76
+
77
+ [tool.ruff]
78
+ target-version = "py38"
79
+ line-length = 79
80
+ extend-exclude = [".git", ".venv", "docs"]
81
+
82
+ [tool.ruff.lint]
83
+ preview = true
84
+ extend-select = ["ALL"]
85
+ extend-ignore = [
86
+ "D10", # missing documentation
87
+ "D203", # 1 of conflicting code-styles
88
+ "D212", # 1 of conflicting code-styles
89
+ "C408", # allow `dict()` instead of literal
90
+ "TD003", # don't require issue link
91
+ # Completely disable
92
+ "FIX",
93
+ "CPY",
94
+ # formatter conflict rules
95
+ "W191",
96
+ "E111",
97
+ "E114",
98
+ "E117",
99
+ "EM101",
100
+ "EM102",
101
+ "D206",
102
+ "D300",
103
+ "DOC201",
104
+ "DOC402",
105
+ "Q000",
106
+ "Q001",
107
+ "Q002",
108
+ "Q003",
109
+ "COM812",
110
+ "COM819",
111
+ "ISC001",
112
+ "ISC002",
113
+ "TRY003",
114
+ "UP006",
115
+ "UP007",
116
+ "UP035",
117
+ "UP045",
118
+ "FA100",
119
+ ]
120
+
121
+ [tool.ruff.lint.extend-per-file-ignores]
122
+ "**/tests/*" = [
123
+ "S101", # allow assert
124
+ "SLF001", # allow private member access
125
+ "ANN", # annotations not required in tests
126
+ "PLR0913", # Too many arguments in function definition
127
+ "PLR0917", # Too many positional arguments
128
+ "PLC2701", # Private name import
129
+ ]
130
+ "tests/error/test_dumping.py" = ["S301", "S403"]
131
+
132
+ [tool.ruff.lint.flake8-import-conventions.extend-aliases]
133
+ "typing" = "t"
134
+
135
+ [tool.ruff.lint.flake8-import-conventions]
136
+ banned-from = ["typing"]
137
+
138
+ [tool.ruff.lint.isort]
139
+ force-single-line = true
140
+
141
+ [tool.ruff.lint.flake8-tidy-imports]
142
+ ban-relative-imports = "all"
143
+
144
+ [tool.ruff.lint.flake8-builtins]
145
+ builtins-ignorelist = ["id"]
146
+
147
+ [tool.ruff.format]
148
+ quote-style = "double"
149
+ indent-style = "space"
150
+
151
+
152
+ [tool.coverage.run]
153
+ branch = true
154
+
155
+ [tool.coverage.report]
156
+ include_namespace_packages = true
157
+ # Regexes for lines to exclude from consideration
158
+ omit = ["*/.venv/*"]
159
+ exclude_also = [
160
+ # Don't complain about missing debug-only code:
161
+ "def __repr__",
162
+
163
+ # Don't complain if tests don't hit defensive assertion code:
164
+ "raise NotImplementedError",
165
+
166
+ # Don't complain if non-runnable code isn't run:
167
+ "if __name__ == .__main__.:",
168
+
169
+ # Don't complain about abstract methods, they aren't run:
170
+ "@(abc\\.)?abstractmethod",
171
+
172
+ "if TYPE_CHECKING:",
173
+ ]
174
+
175
+ [tool.mypy]
176
+ strict = true
177
+ exclude = ["docs", "tests", ".venv"]
178
+
179
+
180
+ #[tool.tox]
181
+ ## requires = ["tox>4.23", "tox-uv>=1.13"]
182
+ ## runner = "uv-venv-lock-runner"
183
+ #requires = ["tox>4.23"]
184
+ #env_list = ["pep8", "rst", "py312", "mypy"]
185
+ #use_develop = true
186
+
187
+ #[tool.tox.env.rst]
188
+ #skip_install = true
189
+ #dependency_groups = ["rst"]
190
+ #commands = [
191
+ # [
192
+ # "rst-lint",
193
+ # { replace = "posargs", extend = true },
194
+ # "{tox_root}{/}README.rst",
195
+ # ],
196
+ #]
197
+
198
+ [tool.tox.env.build]
199
+ skip_install = true
200
+ dependency_groups = ["build"]
201
+ commands = [
202
+ # [
203
+ # "rst_include",
204
+ # "include",
205
+ # "README.tpl.rst",
206
+ # "README.rst",
207
+ # ],
208
+ [
209
+ "python3",
210
+ "-m",
211
+ "build",
212
+ { replace = "posargs", extend = true },
213
+ ],
214
+ [
215
+ "python3",
216
+ "-m",
217
+ "twine",
218
+ "check",
219
+ { replace = "posargs", extend = true },
220
+ "dist{/}*",
221
+ ],
222
+ ]
223
+
224
+ [tool.tox.env.upload_test]
225
+ skip_install = true
226
+ dependency_groups = ["upload"]
227
+ commands = [
228
+ [
229
+ "python3",
230
+ "-m",
231
+ "twine",
232
+ "upload",
233
+ { replace = "posargs", extend = true },
234
+ "--repository",
235
+ "{env:PYPI_REPOSITORY:testpypi}",
236
+ "dist{/}*",
237
+ ],
238
+ ]
239
+
240
+ [tool.tox.env.upload_prod]
241
+ base = ["tool.tox.env.upload_test"]
242
+ set_env.PYPI_REPOSITORY = "pypi"
243
+
244
+
245
+ # Tox config
246
+ [tool.tox]
247
+ requires = ["tox>=4.23", "tox-uv>=1.13"]
248
+ runner = "uv-venv-lock-runner"
249
+ skip_missing_interpreters = true
250
+ env_list = [
251
+ "py38",
252
+ "py39",
253
+ "py310",
254
+ "py311",
255
+ "py312",
256
+ "py313",
257
+ "fmt-py",
258
+ "fmt-toml",
259
+ "lint-py",
260
+ "lint-mypy",
261
+ "lint-toml",
262
+ "lint-yaml",
263
+ "lint-git",
264
+ "coverage",
265
+ ]
266
+
267
+ [tool.tox.labels]
268
+ fmt = [
269
+ "fmt-py",
270
+ "fmt-toml",
271
+ ]
272
+ lint = [
273
+ "lint-py",
274
+ "lint-mypy",
275
+ "lint-toml",
276
+ "lint-yaml",
277
+ "lint-git",
278
+ ]
279
+
280
+ [tool.tox.env_run_base]
281
+ description = "Run unit tests with coverage report ({env_name})"
282
+ dependency_groups = ["tests"]
283
+ commands = [
284
+ [
285
+ "pytest",
286
+ "--cov={[project]name}",
287
+ "--cov-branch",
288
+ "--cov-report=term-missing:skip-covered",
289
+ "tests",
290
+ { replace = "posargs", default = ["--cov-report=xml:coverage.xml"], extend = true },
291
+ ],
292
+ ]
293
+
294
+
295
+ [tool.tox.env.init]
296
+ description = "Configure developer's environment"
297
+ skip_install = true
298
+ commands = [
299
+ ["uv", "--quiet", "run", "pre-commit", "install"],
300
+ ["uv", "--quiet", "run", "gitlint", "install-hook"],
301
+ ]
302
+
303
+ [tool.tox.env.lint-py]
304
+ description = "Lint python files"
305
+ deps = ["ruff"]
306
+ skip_install = true
307
+ commands = [
308
+ ["ruff", "format", "--diff", { replace = "posargs", default = ["{tox_root}"], extend = true }],
309
+ ["ruff", "check", { replace = "posargs", default = ["{tox_root}"], extend = true }],
310
+ ]
311
+
312
+ [tool.tox.env.lint-mypy]
313
+ description = "Type checking"
314
+ deps = ["mypy"]
315
+ commands = [["mypy", { replace = "posargs", default = ["{tox_root}"], extend = true }]]
316
+
317
+ [tool.tox.env.lint-toml]
318
+ description = "Lint TOML files"
319
+ allowlist_externals = ["taplo"]
320
+ skip_install = true
321
+ commands = [
322
+ ["taplo", "lint", { replace = "posargs", extend = true }],
323
+ ["taplo", "format", "--check", "--diff", { replace = "posargs", extend = true }],
324
+ ]
325
+
326
+ [tool.tox.env.lint-yaml]
327
+ description = "Lint YAML files"
328
+ deps = ["yamllint"]
329
+ skip_install = true
330
+ commands = [["yamllint", "--strict", { replace = "posargs", default = ["{tox_root}"], extend = true }]]
331
+
332
+ [tool.tox.env.lint-git]
333
+ description = "Lint git branch commits"
334
+ skip_install = true
335
+ commands = [["uv", "--quiet", "run", "gitlint", "--commits", "HEAD~10..HEAD"]]
336
+
337
+ [tool.tox.env.pre-commit]
338
+ description = "Run pre-commit"
339
+ skip_install = true
340
+ deps = ["pre-commit-uv"]
341
+ commands = [
342
+ [
343
+ "pre-commit",
344
+ "run",
345
+ { replace = "posargs", default = ["--all-files", "--show-diff-on-failure"], extend = true },
346
+ ],
347
+ ]
348
+
349
+ [tool.tox.env.fmt-py]
350
+ description = "Format python files"
351
+ deps = ["ruff"]
352
+ skip_install = true
353
+ commands = [
354
+ [
355
+ "ruff",
356
+ "format",
357
+ { replace = "posargs", default = ["{tox_root}"], extend = true },
358
+ ],
359
+ [
360
+ "ruff",
361
+ "check",
362
+ "--fix",
363
+ "--show-fixes",
364
+ { replace = "posargs", default = ["{tox_root}"], extend = true },
365
+ ],
366
+ ]
367
+
368
+ [tool.tox.env.fmt-toml]
369
+ description = "Format TOML files"
370
+ allowlist_externals = ["taplo"]
371
+ skip_install = true
372
+ commands = [["taplo", "format", { replace = "posargs", extend = true }]]
373
+
374
+ [tool.tox.env.docs]
375
+ dependency_groups = ["docs"]
376
+ commands = [
377
+ [
378
+ "sphinx-build",
379
+ "-M",
380
+ "html",
381
+ "{tox_root}/docs/source",
382
+ "{tox_root}/docs/build",
383
+ "--fail-on-warning",
384
+ ],
385
+ ]
386
+
387
+ [tool.tox.env.docs-serve]
388
+ dependency_groups = ["docs"]
389
+ commands = [
390
+ [
391
+ "sphinx-autobuild",
392
+ "-M",
393
+ "html",
394
+ "{tox_root}/docs/source",
395
+ "{tox_root}/docs/build",
396
+ "--fail-on-warning",
397
+ ],
398
+ ]
399
+
400
+ [tool.tox.env.clean]
401
+ dependency_groups = []
402
+ skip_install = true
403
+ allowlist_externals = ["rm"]
404
+ commands = [
405
+ [
406
+ "rm",
407
+ "-rf",
408
+ "{tox_root}/.coverage",
409
+ "{tox_root}/coverage.xml",
410
+ "{tox_root}/dist/",
411
+ "{tox_root}/docs/build/",
412
+ "{tox_root}/{[project]name}.egg-info/",
413
+ ],
414
+ ]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
File without changes