types-strictyaml 1.7.3.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.
- types_strictyaml-1.7.3.0/LICENSE +5 -0
- types_strictyaml-1.7.3.0/MANIFEST.in +20 -0
- types_strictyaml-1.7.3.0/NOTICE.txt +7 -0
- types_strictyaml-1.7.3.0/PKG-INFO +250 -0
- types_strictyaml-1.7.3.0/README.rst +174 -0
- types_strictyaml-1.7.3.0/licenses.json +30 -0
- types_strictyaml-1.7.3.0/pyproject.toml +162 -0
- types_strictyaml-1.7.3.0/requirements/dev.in +9 -0
- types_strictyaml-1.7.3.0/requirements/dev.lock +60 -0
- types_strictyaml-1.7.3.0/requirements/dev.unlock +7 -0
- types_strictyaml-1.7.3.0/requirements/kit.in +5 -0
- types_strictyaml-1.7.3.0/requirements/kit.lock +39 -0
- types_strictyaml-1.7.3.0/requirements/kit.unlock +4 -0
- types_strictyaml-1.7.3.0/requirements/manage.in +4 -0
- types_strictyaml-1.7.3.0/requirements/manage.lock +83 -0
- types_strictyaml-1.7.3.0/requirements/manage.unlock +2 -0
- types_strictyaml-1.7.3.0/requirements/pins-filelock.in +5 -0
- types_strictyaml-1.7.3.0/requirements/pins-tox.in +16 -0
- types_strictyaml-1.7.3.0/requirements/pip-tools.in +2 -0
- types_strictyaml-1.7.3.0/requirements/pip-tools.lock +57 -0
- types_strictyaml-1.7.3.0/requirements/pip-tools.unlock +2 -0
- types_strictyaml-1.7.3.0/requirements/prod.in +1 -0
- types_strictyaml-1.7.3.0/requirements/prod.lock +6 -0
- types_strictyaml-1.7.3.0/requirements/prod.unlock +1 -0
- types_strictyaml-1.7.3.0/requirements/rst2html5.in +3 -0
- types_strictyaml-1.7.3.0/requirements/rst2html5.lock +4 -0
- types_strictyaml-1.7.3.0/requirements/rst2html5.unlock +2 -0
- types_strictyaml-1.7.3.0/requirements/tox.in +10 -0
- types_strictyaml-1.7.3.0/requirements/tox.lock +66 -0
- types_strictyaml-1.7.3.0/requirements/tox.unlock +14 -0
- types_strictyaml-1.7.3.0/requirements/typing.in +6 -0
- types_strictyaml-1.7.3.0/setup.cfg +4 -0
- types_strictyaml-1.7.3.0/strictyaml-stubs/__init__.pyi +109 -0
- types_strictyaml-1.7.3.0/strictyaml-stubs/any_validator.pyi +35 -0
- types_strictyaml-1.7.3.0/strictyaml-stubs/compound.pyi +108 -0
- types_strictyaml-1.7.3.0/strictyaml-stubs/exceptions.pyi +66 -0
- types_strictyaml-1.7.3.0/strictyaml-stubs/parser.pyi +71 -0
- types_strictyaml-1.7.3.0/strictyaml-stubs/py.typed +0 -0
- types_strictyaml-1.7.3.0/strictyaml-stubs/representation.pyi +79 -0
- types_strictyaml-1.7.3.0/strictyaml-stubs/ruamel/__init__.pyi +3 -0
- types_strictyaml-1.7.3.0/strictyaml-stubs/ruamel/anchor.pyi +14 -0
- types_strictyaml-1.7.3.0/strictyaml-stubs/ruamel/comments.pyi +313 -0
- types_strictyaml-1.7.3.0/strictyaml-stubs/ruamel/compat.pyi +84 -0
- types_strictyaml-1.7.3.0/strictyaml-stubs/ruamel/composer.pyi +23 -0
- types_strictyaml-1.7.3.0/strictyaml-stubs/ruamel/configobjwalker.pyi +5 -0
- types_strictyaml-1.7.3.0/strictyaml-stubs/ruamel/constructor.pyi +169 -0
- types_strictyaml-1.7.3.0/strictyaml-stubs/ruamel/cyaml.pyi +124 -0
- types_strictyaml-1.7.3.0/strictyaml-stubs/ruamel/dumper.pyi +105 -0
- types_strictyaml-1.7.3.0/strictyaml-stubs/ruamel/emitter.pyi +143 -0
- types_strictyaml-1.7.3.0/strictyaml-stubs/ruamel/error.pyi +90 -0
- types_strictyaml-1.7.3.0/strictyaml-stubs/ruamel/events.pyi +129 -0
- types_strictyaml-1.7.3.0/strictyaml-stubs/ruamel/loader.pyi +62 -0
- types_strictyaml-1.7.3.0/strictyaml-stubs/ruamel/main.pyi +298 -0
- types_strictyaml-1.7.3.0/strictyaml-stubs/ruamel/nodes.pyi +73 -0
- types_strictyaml-1.7.3.0/strictyaml-stubs/ruamel/parser.pyi +62 -0
- types_strictyaml-1.7.3.0/strictyaml-stubs/ruamel/reader.pyi +47 -0
- types_strictyaml-1.7.3.0/strictyaml-stubs/ruamel/representer.pyi +151 -0
- types_strictyaml-1.7.3.0/strictyaml-stubs/ruamel/resolver.pyi +91 -0
- types_strictyaml-1.7.3.0/strictyaml-stubs/ruamel/scalarbool.pyi +10 -0
- types_strictyaml-1.7.3.0/strictyaml-stubs/ruamel/scalarfloat.pyi +38 -0
- types_strictyaml-1.7.3.0/strictyaml-stubs/ruamel/scalarint.pyi +74 -0
- types_strictyaml-1.7.3.0/strictyaml-stubs/ruamel/scalarstring.pyi +65 -0
- types_strictyaml-1.7.3.0/strictyaml-stubs/ruamel/scanner.pyi +125 -0
- types_strictyaml-1.7.3.0/strictyaml-stubs/ruamel/serializer.pyi +38 -0
- types_strictyaml-1.7.3.0/strictyaml-stubs/ruamel/timestamp.pyi +28 -0
- types_strictyaml-1.7.3.0/strictyaml-stubs/ruamel/tokens.pyi +160 -0
- types_strictyaml-1.7.3.0/strictyaml-stubs/ruamel/util.pyi +43 -0
- types_strictyaml-1.7.3.0/strictyaml-stubs/scalar.pyi +107 -0
- types_strictyaml-1.7.3.0/strictyaml-stubs/validators.pyi +26 -0
- types_strictyaml-1.7.3.0/strictyaml-stubs/yamllocation.pyi +56 -0
- types_strictyaml-1.7.3.0/strictyaml-stubs/yamlpointer.pyi +65 -0
- types_strictyaml-1.7.3.0/tests/test_compound_optional.yml +67 -0
- types_strictyaml-1.7.3.0/tests/test_compound_seq.yml +59 -0
- types_strictyaml-1.7.3.0/tests/test_strictyaml.yml +99 -0
- types_strictyaml-1.7.3.0/types_strictyaml.egg-info/PKG-INFO +250 -0
- types_strictyaml-1.7.3.0/types_strictyaml.egg-info/SOURCES.txt +77 -0
- types_strictyaml-1.7.3.0/types_strictyaml.egg-info/dependency_links.txt +1 -0
- types_strictyaml-1.7.3.0/types_strictyaml.egg-info/requires.txt +57 -0
- types_strictyaml-1.7.3.0/types_strictyaml.egg-info/top_level.txt +4 -0
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
Copyright 2026 Dave Faulkmore
|
|
2
|
+
|
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so.
|
|
4
|
+
|
|
5
|
+
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# package
|
|
2
|
+
recursive-include tests *.yml
|
|
3
|
+
recursive-include requirements *.in *.unlock *.lock
|
|
4
|
+
|
|
5
|
+
# mypy
|
|
6
|
+
prune .mypy_cache
|
|
7
|
+
|
|
8
|
+
# coverage
|
|
9
|
+
exclude coverage.json
|
|
10
|
+
exclude coverage.xml
|
|
11
|
+
exclude .coverage
|
|
12
|
+
|
|
13
|
+
# git
|
|
14
|
+
graft .git
|
|
15
|
+
|
|
16
|
+
prune build
|
|
17
|
+
prune dist
|
|
18
|
+
|
|
19
|
+
global-include *.pyi
|
|
20
|
+
global-include py.typed
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
types-strictyaml
|
|
2
|
+
MIT
|
|
3
|
+
Copyright 2026 Dave Faulkmore
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so.
|
|
6
|
+
|
|
7
|
+
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: types-strictyaml
|
|
3
|
+
Version: 1.7.3.0
|
|
4
|
+
Summary: Typing stubs for strictyaml
|
|
5
|
+
Author-email: Dave Faulkmore <faulkmore@protonmail.com>
|
|
6
|
+
Maintainer-email: Dave Faulkmore <faulkmore@protonmail.com>
|
|
7
|
+
License-Expression: MIT
|
|
8
|
+
Project-URL: Homepage, https://github.com/msftcangoblowm/types-strictyaml
|
|
9
|
+
Project-URL: Repository, https://github.com/msftcangoblowm/types-strictyaml
|
|
10
|
+
Project-URL: Source, https://github.com/msftcangoblowm/types-strictyaml
|
|
11
|
+
Project-URL: Changelog, https://raw.githubusercontent.com/msftcangoblowm/types-strictyaml/master/CHANGES.rst
|
|
12
|
+
Project-URL: Releases, https://github.com/msftcangoblowm/types-strictyaml/releases
|
|
13
|
+
Project-URL: Issues, https://github.com/msftcangoblowm/types-strictyaml/issues
|
|
14
|
+
Project-URL: Mastodon, https://mastodon.social/@msftcangoblowme
|
|
15
|
+
Classifier: Development Status :: 4 - Beta
|
|
16
|
+
Classifier: Intended Audience :: End Users/Desktop
|
|
17
|
+
Classifier: Programming Language :: Python :: 3
|
|
18
|
+
Classifier: Operating System :: OS Independent
|
|
19
|
+
Classifier: Typing :: Typed
|
|
20
|
+
Requires-Python: >=3.10
|
|
21
|
+
Description-Content-Type: text/x-rst
|
|
22
|
+
License-File: LICENSE
|
|
23
|
+
License-File: NOTICE.txt
|
|
24
|
+
License-File: licenses.json
|
|
25
|
+
Requires-Dist: strictyaml>=1.7.3
|
|
26
|
+
Provides-Extra: toml
|
|
27
|
+
Provides-Extra: dev
|
|
28
|
+
Requires-Dist: black==26.3.1; extra == "dev"
|
|
29
|
+
Requires-Dist: blackdoc==0.4.6; extra == "dev"
|
|
30
|
+
Requires-Dist: click==8.3.3; extra == "dev"
|
|
31
|
+
Requires-Dist: fastjsonschema==2.21.2; extra == "dev"
|
|
32
|
+
Requires-Dist: flake8==7.3.0; extra == "dev"
|
|
33
|
+
Requires-Dist: flake8-pyi==26.5.0; extra == "dev"
|
|
34
|
+
Requires-Dist: flake8-pyproject==1.2.4; extra == "dev"
|
|
35
|
+
Requires-Dist: isort==8.0.1; extra == "dev"
|
|
36
|
+
Requires-Dist: markdown-it-py==4.2.0; extra == "dev"
|
|
37
|
+
Requires-Dist: mccabe==0.7.0; extra == "dev"
|
|
38
|
+
Requires-Dist: mdurl==0.1.2; extra == "dev"
|
|
39
|
+
Requires-Dist: more-itertools==11.1.0; extra == "dev"
|
|
40
|
+
Requires-Dist: mypy-extensions==1.1.0; extra == "dev"
|
|
41
|
+
Requires-Dist: packaging==26.1; extra == "dev"
|
|
42
|
+
Requires-Dist: pathspec==1.1.1; extra == "dev"
|
|
43
|
+
Requires-Dist: platformdirs==4.9.6; extra == "dev"
|
|
44
|
+
Requires-Dist: pycodestyle==2.14.0; extra == "dev"
|
|
45
|
+
Requires-Dist: pyflakes==3.4.0; extra == "dev"
|
|
46
|
+
Requires-Dist: pygments==2.19.1; extra == "dev"
|
|
47
|
+
Requires-Dist: pytokens==0.4.1; extra == "dev"
|
|
48
|
+
Requires-Dist: rich==15.0.0; extra == "dev"
|
|
49
|
+
Requires-Dist: tomli==2.4.1; python_version < "3.11" and extra == "dev"
|
|
50
|
+
Requires-Dist: typing-extensions==4.15.0; extra == "dev"
|
|
51
|
+
Requires-Dist: validate-pyproject==0.25; extra == "dev"
|
|
52
|
+
Provides-Extra: manage
|
|
53
|
+
Requires-Dist: build==1.4.4; extra == "manage"
|
|
54
|
+
Requires-Dist: cachetools==7.1.4; extra == "manage"
|
|
55
|
+
Requires-Dist: cfgv==3.5.0; extra == "manage"
|
|
56
|
+
Requires-Dist: colorama==0.4.6; extra == "manage"
|
|
57
|
+
Requires-Dist: distlib==0.3.9; extra == "manage"
|
|
58
|
+
Requires-Dist: filelock==3.29.0; extra == "manage"
|
|
59
|
+
Requires-Dist: identify==2.6.19; extra == "manage"
|
|
60
|
+
Requires-Dist: nodeenv==1.10.0; extra == "manage"
|
|
61
|
+
Requires-Dist: packaging==26.1; extra == "manage"
|
|
62
|
+
Requires-Dist: platformdirs==4.9.6; extra == "manage"
|
|
63
|
+
Requires-Dist: pluggy==1.6.0; extra == "manage"
|
|
64
|
+
Requires-Dist: pre-commit==4.6.0; extra == "manage"
|
|
65
|
+
Requires-Dist: pyproject-api==1.10.1; extra == "manage"
|
|
66
|
+
Requires-Dist: pyproject-hooks==1.2.0; extra == "manage"
|
|
67
|
+
Requires-Dist: python-discovery==1.3.0; extra == "manage"
|
|
68
|
+
Requires-Dist: pyyaml==6.0.3; extra == "manage"
|
|
69
|
+
Requires-Dist: tomli==2.4.1; python_version < "3.11" and extra == "manage"
|
|
70
|
+
Requires-Dist: tomli-w==1.2.0; extra == "manage"
|
|
71
|
+
Requires-Dist: tox==4.53.1; extra == "manage"
|
|
72
|
+
Requires-Dist: tox-gh==1.7.1; extra == "manage"
|
|
73
|
+
Requires-Dist: typing-extensions==4.15.0; extra == "manage"
|
|
74
|
+
Requires-Dist: virtualenv==21.3.1; extra == "manage"
|
|
75
|
+
Dynamic: license-file
|
|
76
|
+
|
|
77
|
+
types-strictyaml
|
|
78
|
+
=================
|
|
79
|
+
|
|
80
|
+
Typing stubs for strictyaml
|
|
81
|
+
|
|
82
|
+
| |test-status| |mypy| |pyright|
|
|
83
|
+
| |last-commit| |downloads|
|
|
84
|
+
| |license| |maturity|
|
|
85
|
+
|
|
86
|
+
.. PYVERSIONS
|
|
87
|
+
|
|
88
|
+
\* Python 3.10 through 3.14
|
|
89
|
+
|
|
90
|
+
**new in 1.7.3.0**
|
|
91
|
+
|
|
92
|
+
initial typing testsuite; tested against mypy pyright;
|
|
93
|
+
publish to pypi;
|
|
94
|
+
|
|
95
|
+
Why?
|
|
96
|
+
-----
|
|
97
|
+
|
|
98
|
+
``strictyaml`` is ignored by the Python community. Instead these are
|
|
99
|
+
promoted: TOML, Python internal yaml, pyyaml, and pydantic.
|
|
100
|
+
|
|
101
|
+
None of which strictly validate very likely malicious dangerous user input.
|
|
102
|
+
|
|
103
|
+
Feel sorry for those who have been mislead to believe, without
|
|
104
|
+
validating against a schema, the input files are safe.
|
|
105
|
+
|
|
106
|
+
User input validation critical security issues pop up constantly. In
|
|
107
|
+
Python at least, some of these can be avoided completely by choosing ``strictyaml``.
|
|
108
|
+
|
|
109
|
+
History
|
|
110
|
+
--------
|
|
111
|
+
|
|
112
|
+
The ``strictyaml`` author had his own ideas on how to test and document
|
|
113
|
+
Python packages. Regardless agree with him or not, this created a barrier
|
|
114
|
+
to entry to surmount for both potential contributors and maintainers.
|
|
115
|
+
|
|
116
|
+
Would argue that barrier, evidently, is too formidable for us average
|
|
117
|
+
diabolical albeit lazy geniuses.
|
|
118
|
+
|
|
119
|
+
Then to add insult to injury, the author ascended to another plane of
|
|
120
|
+
existence, leaving ``strictyaml`` unmaintained.
|
|
121
|
+
|
|
122
|
+
There exists a vacuum where there should be: stubs, pytest test suite,
|
|
123
|
+
coverage, and Sphinx docs.
|
|
124
|
+
|
|
125
|
+
Roadmap
|
|
126
|
+
---------
|
|
127
|
+
|
|
128
|
+
These stubs were created without forking ``strictyaml``. And will help
|
|
129
|
+
downstream authors test their packages. Hopefully lead to ``strictyaml``
|
|
130
|
+
acceptance by the Python community.
|
|
131
|
+
|
|
132
|
+
Static type checking performed using both mypy and pyright. With the hope
|
|
133
|
+
that later ``strictyaml`` is forked and pytest test suite is created. So can
|
|
134
|
+
prove coverage and allow pyright to find coding errors.
|
|
135
|
+
|
|
136
|
+
Projects
|
|
137
|
+
---------
|
|
138
|
+
|
|
139
|
+
These packages input files are strictly validated against a schema.
|
|
140
|
+
|
|
141
|
+
If have a package built that is protected by strictyaml, we'd like to
|
|
142
|
+
hear from you.
|
|
143
|
+
|
|
144
|
+
- `strictyamlx <https://pypi.org/project/strictyamlx>`_
|
|
145
|
+
|
|
146
|
+
- `logging-strict <https://pypi.org/project/logging-strict>`_
|
|
147
|
+
|
|
148
|
+
- `sphinx-external-toc-strict <https://pypi.org/project/sphinx-external-toc-strict>`_
|
|
149
|
+
|
|
150
|
+
strictyaml team
|
|
151
|
+
-----------------
|
|
152
|
+
|
|
153
|
+
`Dave Faulkmore <faulkmore@protonmail.com>`_ and
|
|
154
|
+
`Muneeb ur Rahman <muneebdev1@gmail.com>`_ both have made contributions
|
|
155
|
+
to strictyaml community. Both have skin in the game and would like to see
|
|
156
|
+
``strictyaml`` project status revived.
|
|
157
|
+
|
|
158
|
+
If share our passion, throw caution to the wind, say `hmm why not?`,
|
|
159
|
+
put the effort towards writing a message, then find the mental fortitude
|
|
160
|
+
to click the Send button.
|
|
161
|
+
|
|
162
|
+
Contributing
|
|
163
|
+
-------------
|
|
164
|
+
|
|
165
|
+
Create .venv
|
|
166
|
+
"""""""""""""
|
|
167
|
+
|
|
168
|
+
.. code:: shell
|
|
169
|
+
|
|
170
|
+
pyenv versions
|
|
171
|
+
mkdir .venv && cd .venv
|
|
172
|
+
python -m venv .
|
|
173
|
+
cd - &>/dev/null
|
|
174
|
+
|
|
175
|
+
. .venv/bin/activate
|
|
176
|
+
python -m pip install -e ".[dev]"
|
|
177
|
+
|
|
178
|
+
Run tests
|
|
179
|
+
""""""""""
|
|
180
|
+
|
|
181
|
+
Verbose and show output
|
|
182
|
+
|
|
183
|
+
.. code:: shell
|
|
184
|
+
|
|
185
|
+
make v=1 show=1 check
|
|
186
|
+
|
|
187
|
+
Quiet and save output to /tmp folder
|
|
188
|
+
|
|
189
|
+
.. code:: shell
|
|
190
|
+
|
|
191
|
+
make check
|
|
192
|
+
|
|
193
|
+
Run mypy
|
|
194
|
+
"""""""""
|
|
195
|
+
|
|
196
|
+
.. code:: shell
|
|
197
|
+
|
|
198
|
+
make premypy
|
|
199
|
+
|
|
200
|
+
Run pyright
|
|
201
|
+
""""""""""""
|
|
202
|
+
|
|
203
|
+
.. code:: shell
|
|
204
|
+
|
|
205
|
+
make preright
|
|
206
|
+
|
|
207
|
+
Run pre-commit
|
|
208
|
+
"""""""""""""""
|
|
209
|
+
|
|
210
|
+
.. code:: shell
|
|
211
|
+
|
|
212
|
+
make pre-commit
|
|
213
|
+
|
|
214
|
+
licenses
|
|
215
|
+
"""""""""
|
|
216
|
+
|
|
217
|
+
Lets take legal compliance seriously to show commitment to respect and
|
|
218
|
+
acknowledge authors.
|
|
219
|
+
|
|
220
|
+
Creates ``NOTICE.txt``, ``licenses.json`` and ``sbom.json``
|
|
221
|
+
|
|
222
|
+
.. code:: shell
|
|
223
|
+
|
|
224
|
+
rm -rf build/lib; cd .tox && tox --root=.. -c ../tox.ini -e notice \
|
|
225
|
+
--workdir=. -vvv; cd - &>/dev/null
|
|
226
|
+
rm -rf build/lib; cd .tox && tox --root=.. -c ../tox.ini -e sbom \
|
|
227
|
+
--workdir=. -vvv; cd - &>/dev/null
|
|
228
|
+
|
|
229
|
+
``LICENSE`` and ``NOTICE.txt`` are essentially the same expect LICENSE is manually maintained.
|
|
230
|
+
|
|
231
|
+
.. |downloads| image:: https://img.shields.io/pypi/dm/types-strictyaml
|
|
232
|
+
.. |last-commit| image:: https://img.shields.io/github/last-commit/msftcangoblowm/types-strictyaml/master
|
|
233
|
+
:target: https://github.com/msftcangoblowm/types-strictyaml/pulse
|
|
234
|
+
:alt: last commit to gauge activity
|
|
235
|
+
.. |maturity| image:: https://img.shields.io/badge/status-Beta-yellow
|
|
236
|
+
:target: https://pypi.org/classifiers/
|
|
237
|
+
:alt: Status: Beta
|
|
238
|
+
.. |license| image:: https://img.shields.io/github/license/msftcangoblowm/types-strictyaml
|
|
239
|
+
:target: https://github.com/msftcangoblowm/types-strictyaml/blob/master/LICENSE
|
|
240
|
+
:alt: License
|
|
241
|
+
.. |test-status| image:: https://github.com/msftcangoblowm/types-strictyaml/actions/workflows/testsuite.yml/badge.svg
|
|
242
|
+
:target: https://github.com/msftcangoblowm/types-strictyaml/actions/workflows/testsuite.yml
|
|
243
|
+
:alt: test
|
|
244
|
+
|
|
245
|
+
.. |mypy| image:: https://github.com/msftcangoblowm/types-strictyaml/actions/workflows/quality-mypy.yml/badge.svg
|
|
246
|
+
:target: https://github.com/msftcangoblowm/types-strictyaml/actions/workflows/quality-mypy.yml
|
|
247
|
+
:alt: mypy status
|
|
248
|
+
.. |pyright| image:: https://github.com/msftcangoblowm/types-strictyaml/actions/workflows/quality-pyright.yml/badge.svg
|
|
249
|
+
:target: https://github.com/msftcangoblowm/types-strictyaml/actions/workflows/quality-pyright.yml
|
|
250
|
+
:alt: pyright status
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
types-strictyaml
|
|
2
|
+
=================
|
|
3
|
+
|
|
4
|
+
Typing stubs for strictyaml
|
|
5
|
+
|
|
6
|
+
| |test-status| |mypy| |pyright|
|
|
7
|
+
| |last-commit| |downloads|
|
|
8
|
+
| |license| |maturity|
|
|
9
|
+
|
|
10
|
+
.. PYVERSIONS
|
|
11
|
+
|
|
12
|
+
\* Python 3.10 through 3.14
|
|
13
|
+
|
|
14
|
+
**new in 1.7.3.0**
|
|
15
|
+
|
|
16
|
+
initial typing testsuite; tested against mypy pyright;
|
|
17
|
+
publish to pypi;
|
|
18
|
+
|
|
19
|
+
Why?
|
|
20
|
+
-----
|
|
21
|
+
|
|
22
|
+
``strictyaml`` is ignored by the Python community. Instead these are
|
|
23
|
+
promoted: TOML, Python internal yaml, pyyaml, and pydantic.
|
|
24
|
+
|
|
25
|
+
None of which strictly validate very likely malicious dangerous user input.
|
|
26
|
+
|
|
27
|
+
Feel sorry for those who have been mislead to believe, without
|
|
28
|
+
validating against a schema, the input files are safe.
|
|
29
|
+
|
|
30
|
+
User input validation critical security issues pop up constantly. In
|
|
31
|
+
Python at least, some of these can be avoided completely by choosing ``strictyaml``.
|
|
32
|
+
|
|
33
|
+
History
|
|
34
|
+
--------
|
|
35
|
+
|
|
36
|
+
The ``strictyaml`` author had his own ideas on how to test and document
|
|
37
|
+
Python packages. Regardless agree with him or not, this created a barrier
|
|
38
|
+
to entry to surmount for both potential contributors and maintainers.
|
|
39
|
+
|
|
40
|
+
Would argue that barrier, evidently, is too formidable for us average
|
|
41
|
+
diabolical albeit lazy geniuses.
|
|
42
|
+
|
|
43
|
+
Then to add insult to injury, the author ascended to another plane of
|
|
44
|
+
existence, leaving ``strictyaml`` unmaintained.
|
|
45
|
+
|
|
46
|
+
There exists a vacuum where there should be: stubs, pytest test suite,
|
|
47
|
+
coverage, and Sphinx docs.
|
|
48
|
+
|
|
49
|
+
Roadmap
|
|
50
|
+
---------
|
|
51
|
+
|
|
52
|
+
These stubs were created without forking ``strictyaml``. And will help
|
|
53
|
+
downstream authors test their packages. Hopefully lead to ``strictyaml``
|
|
54
|
+
acceptance by the Python community.
|
|
55
|
+
|
|
56
|
+
Static type checking performed using both mypy and pyright. With the hope
|
|
57
|
+
that later ``strictyaml`` is forked and pytest test suite is created. So can
|
|
58
|
+
prove coverage and allow pyright to find coding errors.
|
|
59
|
+
|
|
60
|
+
Projects
|
|
61
|
+
---------
|
|
62
|
+
|
|
63
|
+
These packages input files are strictly validated against a schema.
|
|
64
|
+
|
|
65
|
+
If have a package built that is protected by strictyaml, we'd like to
|
|
66
|
+
hear from you.
|
|
67
|
+
|
|
68
|
+
- `strictyamlx <https://pypi.org/project/strictyamlx>`_
|
|
69
|
+
|
|
70
|
+
- `logging-strict <https://pypi.org/project/logging-strict>`_
|
|
71
|
+
|
|
72
|
+
- `sphinx-external-toc-strict <https://pypi.org/project/sphinx-external-toc-strict>`_
|
|
73
|
+
|
|
74
|
+
strictyaml team
|
|
75
|
+
-----------------
|
|
76
|
+
|
|
77
|
+
`Dave Faulkmore <faulkmore@protonmail.com>`_ and
|
|
78
|
+
`Muneeb ur Rahman <muneebdev1@gmail.com>`_ both have made contributions
|
|
79
|
+
to strictyaml community. Both have skin in the game and would like to see
|
|
80
|
+
``strictyaml`` project status revived.
|
|
81
|
+
|
|
82
|
+
If share our passion, throw caution to the wind, say `hmm why not?`,
|
|
83
|
+
put the effort towards writing a message, then find the mental fortitude
|
|
84
|
+
to click the Send button.
|
|
85
|
+
|
|
86
|
+
Contributing
|
|
87
|
+
-------------
|
|
88
|
+
|
|
89
|
+
Create .venv
|
|
90
|
+
"""""""""""""
|
|
91
|
+
|
|
92
|
+
.. code:: shell
|
|
93
|
+
|
|
94
|
+
pyenv versions
|
|
95
|
+
mkdir .venv && cd .venv
|
|
96
|
+
python -m venv .
|
|
97
|
+
cd - &>/dev/null
|
|
98
|
+
|
|
99
|
+
. .venv/bin/activate
|
|
100
|
+
python -m pip install -e ".[dev]"
|
|
101
|
+
|
|
102
|
+
Run tests
|
|
103
|
+
""""""""""
|
|
104
|
+
|
|
105
|
+
Verbose and show output
|
|
106
|
+
|
|
107
|
+
.. code:: shell
|
|
108
|
+
|
|
109
|
+
make v=1 show=1 check
|
|
110
|
+
|
|
111
|
+
Quiet and save output to /tmp folder
|
|
112
|
+
|
|
113
|
+
.. code:: shell
|
|
114
|
+
|
|
115
|
+
make check
|
|
116
|
+
|
|
117
|
+
Run mypy
|
|
118
|
+
"""""""""
|
|
119
|
+
|
|
120
|
+
.. code:: shell
|
|
121
|
+
|
|
122
|
+
make premypy
|
|
123
|
+
|
|
124
|
+
Run pyright
|
|
125
|
+
""""""""""""
|
|
126
|
+
|
|
127
|
+
.. code:: shell
|
|
128
|
+
|
|
129
|
+
make preright
|
|
130
|
+
|
|
131
|
+
Run pre-commit
|
|
132
|
+
"""""""""""""""
|
|
133
|
+
|
|
134
|
+
.. code:: shell
|
|
135
|
+
|
|
136
|
+
make pre-commit
|
|
137
|
+
|
|
138
|
+
licenses
|
|
139
|
+
"""""""""
|
|
140
|
+
|
|
141
|
+
Lets take legal compliance seriously to show commitment to respect and
|
|
142
|
+
acknowledge authors.
|
|
143
|
+
|
|
144
|
+
Creates ``NOTICE.txt``, ``licenses.json`` and ``sbom.json``
|
|
145
|
+
|
|
146
|
+
.. code:: shell
|
|
147
|
+
|
|
148
|
+
rm -rf build/lib; cd .tox && tox --root=.. -c ../tox.ini -e notice \
|
|
149
|
+
--workdir=. -vvv; cd - &>/dev/null
|
|
150
|
+
rm -rf build/lib; cd .tox && tox --root=.. -c ../tox.ini -e sbom \
|
|
151
|
+
--workdir=. -vvv; cd - &>/dev/null
|
|
152
|
+
|
|
153
|
+
``LICENSE`` and ``NOTICE.txt`` are essentially the same expect LICENSE is manually maintained.
|
|
154
|
+
|
|
155
|
+
.. |downloads| image:: https://img.shields.io/pypi/dm/types-strictyaml
|
|
156
|
+
.. |last-commit| image:: https://img.shields.io/github/last-commit/msftcangoblowm/types-strictyaml/master
|
|
157
|
+
:target: https://github.com/msftcangoblowm/types-strictyaml/pulse
|
|
158
|
+
:alt: last commit to gauge activity
|
|
159
|
+
.. |maturity| image:: https://img.shields.io/badge/status-Beta-yellow
|
|
160
|
+
:target: https://pypi.org/classifiers/
|
|
161
|
+
:alt: Status: Beta
|
|
162
|
+
.. |license| image:: https://img.shields.io/github/license/msftcangoblowm/types-strictyaml
|
|
163
|
+
:target: https://github.com/msftcangoblowm/types-strictyaml/blob/master/LICENSE
|
|
164
|
+
:alt: License
|
|
165
|
+
.. |test-status| image:: https://github.com/msftcangoblowm/types-strictyaml/actions/workflows/testsuite.yml/badge.svg
|
|
166
|
+
:target: https://github.com/msftcangoblowm/types-strictyaml/actions/workflows/testsuite.yml
|
|
167
|
+
:alt: test
|
|
168
|
+
|
|
169
|
+
.. |mypy| image:: https://github.com/msftcangoblowm/types-strictyaml/actions/workflows/quality-mypy.yml/badge.svg
|
|
170
|
+
:target: https://github.com/msftcangoblowm/types-strictyaml/actions/workflows/quality-mypy.yml
|
|
171
|
+
:alt: mypy status
|
|
172
|
+
.. |pyright| image:: https://github.com/msftcangoblowm/types-strictyaml/actions/workflows/quality-pyright.yml/badge.svg
|
|
173
|
+
:target: https://github.com/msftcangoblowm/types-strictyaml/actions/workflows/quality-pyright.yml
|
|
174
|
+
:alt: pyright status
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"Author": "Gustavo Niemeyer",
|
|
4
|
+
"Description": "Extensions to the standard Python datetime module",
|
|
5
|
+
"License": "Apache Software License; BSD License",
|
|
6
|
+
"Name": "python-dateutil",
|
|
7
|
+
"URL": "https://github.com/dateutil/dateutil"
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"Author": "Benjamin Peterson",
|
|
11
|
+
"Description": "Python 2 and 3 compatibility utilities",
|
|
12
|
+
"License": "MIT License",
|
|
13
|
+
"Name": "six",
|
|
14
|
+
"URL": "https://github.com/benjaminp/six"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"Author": "Colm O'Connor <colm.oconnor.github@gmail.com>",
|
|
18
|
+
"Description": "Strict, typed YAML parser",
|
|
19
|
+
"License": "MIT License",
|
|
20
|
+
"Name": "strictyaml",
|
|
21
|
+
"URL": "https://hitchdev.com/strictyaml"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"Author": "Dave Faulkmore <faulkmore@protonmail.com>",
|
|
25
|
+
"Description": "Typing stubs for strictyaml",
|
|
26
|
+
"License": "MIT",
|
|
27
|
+
"Name": "types-strictyaml",
|
|
28
|
+
"URL": "UNKNOWN"
|
|
29
|
+
}
|
|
30
|
+
]
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=80.7.1", "wheel", "build"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "types-strictyaml"
|
|
7
|
+
version = "1.7.3.0"
|
|
8
|
+
readme = "README.rst"
|
|
9
|
+
requires-python = ">=3.10"
|
|
10
|
+
description = "Typing stubs for strictyaml"
|
|
11
|
+
dynamic = [
|
|
12
|
+
"optional-dependencies",
|
|
13
|
+
"dependencies",
|
|
14
|
+
]
|
|
15
|
+
license = "MIT"
|
|
16
|
+
license-files = [
|
|
17
|
+
"LICENSE",
|
|
18
|
+
"NOTICE.txt",
|
|
19
|
+
"licenses.json",
|
|
20
|
+
]
|
|
21
|
+
classifiers = [
|
|
22
|
+
"Development Status :: 4 - Beta",
|
|
23
|
+
"Intended Audience :: End Users/Desktop",
|
|
24
|
+
"Programming Language :: Python :: 3",
|
|
25
|
+
"Operating System :: OS Independent",
|
|
26
|
+
"Typing :: Typed",
|
|
27
|
+
]
|
|
28
|
+
|
|
29
|
+
authors = [
|
|
30
|
+
{name = "Dave Faulkmore", email = "faulkmore@protonmail.com"},
|
|
31
|
+
]
|
|
32
|
+
|
|
33
|
+
maintainers = [
|
|
34
|
+
{name = "Dave Faulkmore", email = "faulkmore@protonmail.com"},
|
|
35
|
+
]
|
|
36
|
+
|
|
37
|
+
[project.urls]
|
|
38
|
+
Homepage = 'https://github.com/msftcangoblowm/types-strictyaml'
|
|
39
|
+
Repository = 'https://github.com/msftcangoblowm/types-strictyaml'
|
|
40
|
+
Source = 'https://github.com/msftcangoblowm/types-strictyaml'
|
|
41
|
+
Changelog = 'https://raw.githubusercontent.com/msftcangoblowm/types-strictyaml/master/CHANGES.rst'
|
|
42
|
+
Releases = 'https://github.com/msftcangoblowm/types-strictyaml/releases'
|
|
43
|
+
Issues = 'https://github.com/msftcangoblowm/types-strictyaml/issues'
|
|
44
|
+
Mastodon = 'https://mastodon.social/@msftcangoblowme'
|
|
45
|
+
|
|
46
|
+
# Match the version your stubs support
|
|
47
|
+
[tool.setuptools.dynamic]
|
|
48
|
+
dependencies = { file = ['requirements/prod.unlock'] }
|
|
49
|
+
# required by drain-swamp for some unknown reason
|
|
50
|
+
optional-dependencies.toml = { file = [] }
|
|
51
|
+
optional-dependencies.dev = { file = ['requirements/dev.lock'] }
|
|
52
|
+
optional-dependencies.manage = { file = ['requirements/manage.lock'] }
|
|
53
|
+
|
|
54
|
+
# Search in the root directory
|
|
55
|
+
[tool.setuptools.packages.find]
|
|
56
|
+
where = ["."]
|
|
57
|
+
|
|
58
|
+
[tool.setuptools.package-data]
|
|
59
|
+
"strictyaml-stubs" = ["*.pyi", "py.typed"]
|
|
60
|
+
|
|
61
|
+
[tool.mypy]
|
|
62
|
+
strict = true
|
|
63
|
+
disallow_untyped_defs = true
|
|
64
|
+
disallow_incomplete_defs = true
|
|
65
|
+
check_untyped_defs = true
|
|
66
|
+
disallow_untyped_calls = true
|
|
67
|
+
# warn_return_any = true
|
|
68
|
+
disallow_any_generics = true
|
|
69
|
+
|
|
70
|
+
[tool.pytest.ini_options]
|
|
71
|
+
# Tell pytest-mypy-plugins to use this pyproject.toml for mypy configuration
|
|
72
|
+
addopts = "--mypy-pyproject-toml-file=pyproject.toml"
|
|
73
|
+
# Optional: Specify where your test cases are located if not in the default discovery path
|
|
74
|
+
# testpaths = ["test_cases"]
|
|
75
|
+
|
|
76
|
+
[tool.pyright]
|
|
77
|
+
typeCheckingMode = "strict"
|
|
78
|
+
pythonVersion = "3.10"
|
|
79
|
+
venvPath = "."
|
|
80
|
+
venv = ".venv" # venv folder path
|
|
81
|
+
include = ["tests"]
|
|
82
|
+
|
|
83
|
+
# Exclude common non-source directories
|
|
84
|
+
exclude = ["**/__pycache__", "**/.venv", "**/node_modules"]
|
|
85
|
+
|
|
86
|
+
executionEnvironments = [
|
|
87
|
+
{ root = "." }
|
|
88
|
+
]
|
|
89
|
+
|
|
90
|
+
[tool.black]
|
|
91
|
+
include = '\.pyi?$'
|
|
92
|
+
extend-exclude = '''(strictyaml\_stubs/\_version.py)'''
|
|
93
|
+
|
|
94
|
+
[tool.blackdoc]
|
|
95
|
+
skip_string_normalization = true
|
|
96
|
+
color = false # affects diffs only
|
|
97
|
+
|
|
98
|
+
[tool.isort]
|
|
99
|
+
profile = "black"
|
|
100
|
+
multi_line_output = 3
|
|
101
|
+
force_grid_wrap = 2
|
|
102
|
+
use_parentheses = true
|
|
103
|
+
include_trailing_comma = true
|
|
104
|
+
ensure_newline_before_comments = true
|
|
105
|
+
line_length = 88
|
|
106
|
+
# skip_glob = ["data/*", "data/**/*"]
|
|
107
|
+
|
|
108
|
+
[tool.flake8]
|
|
109
|
+
max_line_length = 88
|
|
110
|
+
extend_ignore = """
|
|
111
|
+
E203,
|
|
112
|
+
E501,
|
|
113
|
+
W503,
|
|
114
|
+
W605,
|
|
115
|
+
W293,
|
|
116
|
+
W291,
|
|
117
|
+
"""
|
|
118
|
+
exclude = ".venv,.git,.tox,dist,docs,build"
|
|
119
|
+
application-import-names = "strictyaml_stubs,tests"
|
|
120
|
+
|
|
121
|
+
per-file-ignores = """
|
|
122
|
+
**/__init__.py:F401,
|
|
123
|
+
"""
|
|
124
|
+
|
|
125
|
+
[tool.typos.files]
|
|
126
|
+
extend-exclude = [
|
|
127
|
+
"strictyaml_stubs/data/*",
|
|
128
|
+
"strictyaml_stubs/data/**/*",
|
|
129
|
+
]
|
|
130
|
+
|
|
131
|
+
[tool.interrogate]
|
|
132
|
+
color = true
|
|
133
|
+
exclude = [
|
|
134
|
+
'strictyaml_stubs/_version.py',
|
|
135
|
+
'.doc',
|
|
136
|
+
'docs',
|
|
137
|
+
'build',
|
|
138
|
+
"dist",
|
|
139
|
+
]
|
|
140
|
+
fail-under = 95
|
|
141
|
+
ignore-init-module = true
|
|
142
|
+
quiet = false
|
|
143
|
+
omit-covered-files = true
|
|
144
|
+
# possible values 0 (minimal output), 1 (-v), 2 (-vv)
|
|
145
|
+
verbose = 2
|
|
146
|
+
|
|
147
|
+
[tool.pip-licenses]
|
|
148
|
+
from = "mixed"
|
|
149
|
+
|
|
150
|
+
[tool.wreck]
|
|
151
|
+
create_pins_unlock = false
|
|
152
|
+
|
|
153
|
+
[[tool.wreck.venvs]]
|
|
154
|
+
venv_base_path = '.venv'
|
|
155
|
+
reqs = [
|
|
156
|
+
'requirements/prod',
|
|
157
|
+
'requirements/dev',
|
|
158
|
+
'requirements/manage',
|
|
159
|
+
'requirements/tox',
|
|
160
|
+
'requirements/pip-tools',
|
|
161
|
+
'requirements/rst2html5',
|
|
162
|
+
]
|