mirror of
https://github.com/alexandrebobkov/ESP-Nodes.git
synced 2025-10-17 10:54:02 +00:00
Rainmaker Table lights
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,82 @@
|
||||
Metadata-Version: 2.4
|
||||
Name: virtualenv
|
||||
Version: 20.28.1
|
||||
Summary: Virtual Python Environment builder
|
||||
Project-URL: Documentation, https://virtualenv.pypa.io
|
||||
Project-URL: Homepage, https://github.com/pypa/virtualenv
|
||||
Project-URL: Source, https://github.com/pypa/virtualenv
|
||||
Project-URL: Tracker, https://github.com/pypa/virtualenv/issues
|
||||
Maintainer-email: Bernat Gabor <gaborjbernat@gmail.com>
|
||||
License-Expression: MIT
|
||||
License-File: LICENSE
|
||||
Keywords: environments,isolated,virtual
|
||||
Classifier: Development Status :: 5 - Production/Stable
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: License :: OSI Approved :: MIT License
|
||||
Classifier: Operating System :: MacOS :: MacOS X
|
||||
Classifier: Operating System :: Microsoft :: Windows
|
||||
Classifier: Operating System :: POSIX
|
||||
Classifier: Programming Language :: Python :: 3 :: Only
|
||||
Classifier: Programming Language :: Python :: 3.8
|
||||
Classifier: Programming Language :: Python :: 3.9
|
||||
Classifier: Programming Language :: Python :: 3.10
|
||||
Classifier: Programming Language :: Python :: 3.11
|
||||
Classifier: Programming Language :: Python :: 3.12
|
||||
Classifier: Programming Language :: Python :: 3.13
|
||||
Classifier: Programming Language :: Python :: Implementation :: CPython
|
||||
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
||||
Classifier: Topic :: Software Development :: Libraries
|
||||
Classifier: Topic :: Software Development :: Testing
|
||||
Classifier: Topic :: Utilities
|
||||
Requires-Python: >=3.8
|
||||
Requires-Dist: distlib<1,>=0.3.7
|
||||
Requires-Dist: filelock<4,>=3.12.2
|
||||
Requires-Dist: importlib-metadata>=6.6; python_version < '3.8'
|
||||
Requires-Dist: platformdirs<5,>=3.9.1
|
||||
Provides-Extra: docs
|
||||
Requires-Dist: furo>=2023.7.26; extra == 'docs'
|
||||
Requires-Dist: proselint>=0.13; extra == 'docs'
|
||||
Requires-Dist: sphinx!=7.3,>=7.1.2; extra == 'docs'
|
||||
Requires-Dist: sphinx-argparse>=0.4; extra == 'docs'
|
||||
Requires-Dist: sphinxcontrib-towncrier>=0.2.1a0; extra == 'docs'
|
||||
Requires-Dist: towncrier>=23.6; extra == 'docs'
|
||||
Provides-Extra: test
|
||||
Requires-Dist: covdefaults>=2.3; extra == 'test'
|
||||
Requires-Dist: coverage-enable-subprocess>=1; extra == 'test'
|
||||
Requires-Dist: coverage>=7.2.7; extra == 'test'
|
||||
Requires-Dist: flaky>=3.7; extra == 'test'
|
||||
Requires-Dist: packaging>=23.1; extra == 'test'
|
||||
Requires-Dist: pytest-env>=0.8.2; extra == 'test'
|
||||
Requires-Dist: pytest-freezer>=0.4.8; (platform_python_implementation == 'PyPy' or (platform_python_implementation == 'CPython' and sys_platform == 'win32' and python_version >= '3.13')) and extra == 'test'
|
||||
Requires-Dist: pytest-mock>=3.11.1; extra == 'test'
|
||||
Requires-Dist: pytest-randomly>=3.12; extra == 'test'
|
||||
Requires-Dist: pytest-timeout>=2.1; extra == 'test'
|
||||
Requires-Dist: pytest>=7.4; extra == 'test'
|
||||
Requires-Dist: setuptools>=68; extra == 'test'
|
||||
Requires-Dist: time-machine>=2.10; (platform_python_implementation == 'CPython') and extra == 'test'
|
||||
Description-Content-Type: text/markdown
|
||||
|
||||
# virtualenv
|
||||
|
||||
[](https://pypi.org/project/virtualenv)
|
||||
[](https://pypi.org/project/virtualenv)
|
||||
[](https://pypi.org/project/virtualenv)
|
||||
[](http://virtualenv.pypa.io)
|
||||
[](https://discord.gg/pypa)
|
||||
[](https://pepy.tech/project/virtualenv)
|
||||
[](https://opensource.org/licenses/MIT)
|
||||
[](https://github.com/pypa/virtualenv/actions/workflows/check.yaml)
|
||||
|
||||
A tool for creating isolated `virtual` python environments.
|
||||
|
||||
- [Installation](https://virtualenv.pypa.io/en/latest/installation.html)
|
||||
- [Documentation](https://virtualenv.pypa.io)
|
||||
- [Changelog](https://virtualenv.pypa.io/en/latest/changelog.html)
|
||||
- [Issues](https://github.com/pypa/virtualenv/issues)
|
||||
- [PyPI](https://pypi.org/project/virtualenv)
|
||||
- [Github](https://github.com/pypa/virtualenv)
|
||||
|
||||
## Code of Conduct
|
||||
|
||||
Everyone interacting in the virtualenv project's codebases, issue trackers, chat rooms, and mailing lists is expected to
|
||||
follow the [PSF Code of Conduct](https://github.com/pypa/.github/blob/main/CODE_OF_CONDUCT.md).
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,11 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta name="pypi:repository-version" content="1.0">
|
||||
<title>Simple index</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<a href="/pypi/pip/pip-23.3.1-py3-none-any.whl">pip-23.3.1-py3-none-any.whl</a><br/>
|
||||
</body>
|
||||
</html>
|
Binary file not shown.
@@ -0,0 +1,52 @@
|
||||
Metadata-Version: 2.1
|
||||
Name: ruamel.yaml.clib
|
||||
Version: 0.2.8
|
||||
Summary: C version of reader, parser and emitter for ruamel.yaml derived from libyaml
|
||||
Home-page: https://sourceforge.net/p/ruamel-yaml-clib/code/ci/default/tree
|
||||
Author: Anthon van der Neut
|
||||
Author-email: a.van.der.neut@ruamel.eu
|
||||
License: MIT
|
||||
Keywords: yaml 1.2 parser c-library config
|
||||
Classifier: Development Status :: 4 - Beta
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: License :: OSI Approved :: MIT License
|
||||
Classifier: Operating System :: OS Independent
|
||||
Classifier: Programming Language :: Python
|
||||
Classifier: Programming Language :: Python :: 3.10
|
||||
Classifier: Programming Language :: Python :: 3.11
|
||||
Classifier: Programming Language :: Python :: 3.6
|
||||
Classifier: Programming Language :: Python :: 3.7
|
||||
Classifier: Programming Language :: Python :: 3.8
|
||||
Classifier: Programming Language :: Python :: 3.9
|
||||
Classifier: Programming Language :: Python :: Implementation :: CPython
|
||||
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
||||
Requires-Python: >=3.6
|
||||
Description-Content-Type: text/x-rst
|
||||
License-File: LICENSE
|
||||
|
||||
|
||||
ruamel.yaml.clib
|
||||
================
|
||||
|
||||
``ruamel.yaml.clib`` is the C based reader/scanner and emitter for ruamel.yaml
|
||||
|
||||
:version: 0.2.7
|
||||
:updated: 2022-10-19
|
||||
:documentation: http://yaml.readthedocs.io
|
||||
:repository: https://sourceforge.net/projects/ruamel-yaml-clib/
|
||||
:pypi: https://pypi.org/project/ruamel.yaml.clib/
|
||||
|
||||
This package was split of from ruamel.yaml, so that ruamel.yaml can be build as
|
||||
a universal wheel. Apart from the C code seldom changing, and taking a long
|
||||
time to compile for all platforms, this allows installation of the .so
|
||||
on Linux systems under /usr/lib64/pythonX.Y (without a .pth file or a ruamel
|
||||
directory) and the Python code for ruamel.yaml under /usr/lib/pythonX.Y.
|
||||
|
||||
|
||||
.. image:: https://bestpractices.coreinfrastructure.org/projects/1128/badge
|
||||
:target: https://bestpractices.coreinfrastructure.org/projects/1128
|
||||
|
||||
.. image:: https://sourceforge.net/p/ruamel-yaml-clib/code/ci/default/tree/_doc/_static/license.svg?format=raw
|
||||
:target: https://opensource.org/licenses/MIT
|
||||
|
||||
This release in loving memory of Johanna Clasina van der Neut-Bandel [1922-10-19 - 2015-11-21]
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,30 @@
|
||||
Metadata-Version: 2.1
|
||||
Name: pre_commit
|
||||
Version: 4.0.1
|
||||
Summary: A framework for managing and maintaining multi-language pre-commit hooks.
|
||||
Home-page: https://github.com/pre-commit/pre-commit
|
||||
Author: Anthony Sottile
|
||||
Author-email: asottile@umich.edu
|
||||
License: MIT
|
||||
Classifier: License :: OSI Approved :: MIT License
|
||||
Classifier: Programming Language :: Python :: 3
|
||||
Classifier: Programming Language :: Python :: 3 :: Only
|
||||
Classifier: Programming Language :: Python :: Implementation :: CPython
|
||||
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
||||
Requires-Python: >=3.9
|
||||
Description-Content-Type: text/markdown
|
||||
License-File: LICENSE
|
||||
Requires-Dist: cfgv>=2.0.0
|
||||
Requires-Dist: identify>=1.0.0
|
||||
Requires-Dist: nodeenv>=0.11.1
|
||||
Requires-Dist: pyyaml>=5.1
|
||||
Requires-Dist: virtualenv>=20.10.0
|
||||
|
||||
[](https://github.com/pre-commit/pre-commit/actions/workflows/main.yml)
|
||||
[](https://results.pre-commit.ci/latest/github/pre-commit/pre-commit/main)
|
||||
|
||||
## pre-commit
|
||||
|
||||
A framework for managing and maintaining multi-language pre-commit hooks.
|
||||
|
||||
For more information see: https://pre-commit.com/
|
Binary file not shown.
@@ -0,0 +1,11 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta name="pypi:repository-version" content="1.0">
|
||||
<title>Simple index</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<a href="/pypi/jsonref/jsonref-1.1.0-py3-none-any.whl">jsonref-1.1.0-py3-none-any.whl</a><br/>
|
||||
</body>
|
||||
</html>
|
Binary file not shown.
@@ -0,0 +1,62 @@
|
||||
Metadata-Version: 2.3
|
||||
Name: pydantic-settings
|
||||
Version: 2.6.0
|
||||
Summary: Settings management using Pydantic
|
||||
Project-URL: Homepage, https://github.com/pydantic/pydantic-settings
|
||||
Project-URL: Funding, https://github.com/sponsors/samuelcolvin
|
||||
Project-URL: Source, https://github.com/pydantic/pydantic-settings
|
||||
Project-URL: Changelog, https://github.com/pydantic/pydantic-settings/releases
|
||||
Project-URL: Documentation, https://docs.pydantic.dev/dev-v2/concepts/pydantic_settings/
|
||||
Author-email: Samuel Colvin <s@muelcolvin.com>, Eric Jolibois <em.jolibois@gmail.com>, Hasan Ramezani <hasan.r67@gmail.com>
|
||||
License-Expression: MIT
|
||||
License-File: LICENSE
|
||||
Classifier: Development Status :: 5 - Production/Stable
|
||||
Classifier: Environment :: Console
|
||||
Classifier: Environment :: MacOS X
|
||||
Classifier: Framework :: Pydantic
|
||||
Classifier: Framework :: Pydantic :: 2
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: Intended Audience :: Information Technology
|
||||
Classifier: Intended Audience :: System Administrators
|
||||
Classifier: License :: OSI Approved :: MIT License
|
||||
Classifier: Operating System :: POSIX :: Linux
|
||||
Classifier: Operating System :: Unix
|
||||
Classifier: Programming Language :: Python
|
||||
Classifier: Programming Language :: Python :: 3
|
||||
Classifier: Programming Language :: Python :: 3 :: Only
|
||||
Classifier: Programming Language :: Python :: 3.8
|
||||
Classifier: Programming Language :: Python :: 3.9
|
||||
Classifier: Programming Language :: Python :: 3.10
|
||||
Classifier: Programming Language :: Python :: 3.11
|
||||
Classifier: Programming Language :: Python :: 3.12
|
||||
Classifier: Topic :: Internet
|
||||
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
||||
Requires-Python: >=3.8
|
||||
Requires-Dist: pydantic>=2.7.0
|
||||
Requires-Dist: python-dotenv>=0.21.0
|
||||
Provides-Extra: azure-key-vault
|
||||
Requires-Dist: azure-identity>=1.16.0; extra == 'azure-key-vault'
|
||||
Requires-Dist: azure-keyvault-secrets>=4.8.0; extra == 'azure-key-vault'
|
||||
Provides-Extra: toml
|
||||
Requires-Dist: tomli>=2.0.1; extra == 'toml'
|
||||
Provides-Extra: yaml
|
||||
Requires-Dist: pyyaml>=6.0.1; extra == 'yaml'
|
||||
Description-Content-Type: text/markdown
|
||||
|
||||
# pydantic-settings
|
||||
|
||||
[](https://github.com/pydantic/pydantic-settings/actions?query=event%3Apush+branch%3Amain+workflow%3ACI)
|
||||
[](https://codecov.io/gh/pydantic/pydantic-settings)
|
||||
[](https://pypi.python.org/pypi/pydantic-settings)
|
||||
[](https://github.com/pydantic/pydantic-settings/blob/main/LICENSE)
|
||||
[](https://pepy.tech/project/pydantic-settings)
|
||||
[](https://github.com/pydantic/pydantic-settings)
|
||||
|
||||
Settings management using Pydantic, this is the new official home of Pydantic's `BaseSettings`.
|
||||
|
||||
This package was kindly donated to the [Pydantic organisation](https://github.com/pydantic) by Daniel Daniels, see [pydantic/pydantic#4492](https://github.com/pydantic/pydantic/pull/4492) for discussion.
|
||||
|
||||
For the old "Hipster-orgazmic tool to manage application settings" package, see [version 0.2.5](https://pypi.org/project/pydantic-settings/0.2.5/).
|
||||
|
||||
|
||||
See [documentation](https://docs.pydantic.dev/latest/concepts/pydantic_settings/) for more details.
|
Binary file not shown.
@@ -0,0 +1,15 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta name="pypi:repository-version" content="1.0">
|
||||
<title>Simple index</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<a href="/pypi/pydantic-settings/pydantic_settings-2.4.0-py3-none-any.whl">pydantic_settings-2.4.0-py3-none-any.whl</a><br/>
|
||||
<a href="/pypi/pydantic-settings/pydantic_settings-2.5.0-py3-none-any.whl">pydantic_settings-2.5.0-py3-none-any.whl</a><br/>
|
||||
<a href="/pypi/pydantic-settings/pydantic_settings-2.5.2-py3-none-any.whl">pydantic_settings-2.5.2-py3-none-any.whl</a><br/>
|
||||
<a href="/pypi/pydantic-settings/pydantic_settings-2.6.0-py3-none-any.whl">pydantic_settings-2.6.0-py3-none-any.whl</a><br/>
|
||||
<a href="/pypi/pydantic-settings/pydantic_settings-2.6.1-py3-none-any.whl">pydantic_settings-2.6.1-py3-none-any.whl</a><br/>
|
||||
</body>
|
||||
</html>
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,161 @@
|
||||
Metadata-Version: 2.4
|
||||
Name: pydantic_core
|
||||
Version: 2.27.2
|
||||
Classifier: Development Status :: 3 - Alpha
|
||||
Classifier: Programming Language :: Python
|
||||
Classifier: Programming Language :: Python :: 3
|
||||
Classifier: Programming Language :: Python :: 3 :: Only
|
||||
Classifier: Programming Language :: Python :: 3.8
|
||||
Classifier: Programming Language :: Python :: 3.9
|
||||
Classifier: Programming Language :: Python :: 3.10
|
||||
Classifier: Programming Language :: Python :: 3.11
|
||||
Classifier: Programming Language :: Python :: 3.12
|
||||
Classifier: Programming Language :: Python :: 3.13
|
||||
Classifier: Programming Language :: Rust
|
||||
Classifier: Framework :: Pydantic
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: Intended Audience :: Information Technology
|
||||
Classifier: License :: OSI Approved :: MIT License
|
||||
Classifier: Operating System :: POSIX :: Linux
|
||||
Classifier: Operating System :: Microsoft :: Windows
|
||||
Classifier: Operating System :: MacOS
|
||||
Classifier: Typing :: Typed
|
||||
Requires-Dist: typing-extensions >=4.6.0, !=4.7.0
|
||||
License-File: LICENSE
|
||||
Summary: Core functionality for Pydantic validation and serialization
|
||||
Home-Page: https://github.com/pydantic/pydantic-core
|
||||
Author-email: Samuel Colvin <s@muelcolvin.com>
|
||||
License: MIT
|
||||
Requires-Python: >=3.8
|
||||
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
|
||||
Project-URL: Homepage, https://github.com/pydantic/pydantic-core
|
||||
Project-URL: Funding, https://github.com/sponsors/samuelcolvin
|
||||
Project-URL: Source, https://github.com/pydantic/pydantic-core
|
||||
|
||||
# pydantic-core
|
||||
|
||||
[](https://github.com/pydantic/pydantic-core/actions?query=event%3Apush+branch%3Amain+workflow%3Aci)
|
||||
[](https://codecov.io/gh/pydantic/pydantic-core)
|
||||
[](https://pypi.python.org/pypi/pydantic-core)
|
||||
[](https://github.com/pydantic/pydantic-core)
|
||||
[](https://github.com/pydantic/pydantic-core/blob/main/LICENSE)
|
||||
|
||||
This package provides the core functionality for [pydantic](https://docs.pydantic.dev) validation and serialization.
|
||||
|
||||
Pydantic-core is currently around 17x faster than pydantic V1.
|
||||
See [`tests/benchmarks/`](./tests/benchmarks/) for details.
|
||||
|
||||
## Example of direct usage
|
||||
|
||||
_NOTE: You should not need to use pydantic-core directly; instead, use pydantic, which in turn uses pydantic-core._
|
||||
|
||||
```py
|
||||
from pydantic_core import SchemaValidator, ValidationError
|
||||
|
||||
|
||||
v = SchemaValidator(
|
||||
{
|
||||
'type': 'typed-dict',
|
||||
'fields': {
|
||||
'name': {
|
||||
'type': 'typed-dict-field',
|
||||
'schema': {
|
||||
'type': 'str',
|
||||
},
|
||||
},
|
||||
'age': {
|
||||
'type': 'typed-dict-field',
|
||||
'schema': {
|
||||
'type': 'int',
|
||||
'ge': 18,
|
||||
},
|
||||
},
|
||||
'is_developer': {
|
||||
'type': 'typed-dict-field',
|
||||
'schema': {
|
||||
'type': 'default',
|
||||
'schema': {'type': 'bool'},
|
||||
'default': True,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
)
|
||||
|
||||
r1 = v.validate_python({'name': 'Samuel', 'age': 35})
|
||||
assert r1 == {'name': 'Samuel', 'age': 35, 'is_developer': True}
|
||||
|
||||
# pydantic-core can also validate JSON directly
|
||||
r2 = v.validate_json('{"name": "Samuel", "age": 35}')
|
||||
assert r1 == r2
|
||||
|
||||
try:
|
||||
v.validate_python({'name': 'Samuel', 'age': 11})
|
||||
except ValidationError as e:
|
||||
print(e)
|
||||
"""
|
||||
1 validation error for model
|
||||
age
|
||||
Input should be greater than or equal to 18
|
||||
[type=greater_than_equal, context={ge: 18}, input_value=11, input_type=int]
|
||||
"""
|
||||
```
|
||||
|
||||
## Getting Started
|
||||
|
||||
You'll need rust stable [installed](https://rustup.rs/), or rust nightly if you want to generate accurate coverage.
|
||||
|
||||
With rust and python 3.8+ installed, compiling pydantic-core should be possible with roughly the following:
|
||||
|
||||
```bash
|
||||
# clone this repo or your fork
|
||||
git clone git@github.com:pydantic/pydantic-core.git
|
||||
cd pydantic-core
|
||||
# create a new virtual env
|
||||
python3 -m venv env
|
||||
source env/bin/activate
|
||||
# install dependencies and install pydantic-core
|
||||
make install
|
||||
```
|
||||
|
||||
That should be it, the example shown above should now run.
|
||||
|
||||
You might find it useful to look at [`python/pydantic_core/_pydantic_core.pyi`](./python/pydantic_core/_pydantic_core.pyi) and
|
||||
[`python/pydantic_core/core_schema.py`](./python/pydantic_core/core_schema.py) for more information on the python API,
|
||||
beyond that, [`tests/`](./tests) provide a large number of examples of usage.
|
||||
|
||||
If you want to contribute to pydantic-core, you'll want to use some other make commands:
|
||||
* `make build-dev` to build the package during development
|
||||
* `make build-prod` to perform an optimised build for benchmarking
|
||||
* `make test` to run the tests
|
||||
* `make testcov` to run the tests and generate a coverage report
|
||||
* `make lint` to run the linter
|
||||
* `make format` to format python and rust code
|
||||
* `make` to run `format build-dev lint test`
|
||||
|
||||
## Profiling
|
||||
|
||||
It's possible to profile the code using the [`flamegraph` utility from `flamegraph-rs`](https://github.com/flamegraph-rs/flamegraph). (Tested on Linux.) You can install this with `cargo install flamegraph`.
|
||||
|
||||
Run `make build-profiling` to install a release build with debugging symbols included (needed for profiling).
|
||||
|
||||
Once that is built, you can profile pytest benchmarks with (e.g.):
|
||||
|
||||
```bash
|
||||
flamegraph -- pytest tests/benchmarks/test_micro_benchmarks.py -k test_list_of_ints_core_py --benchmark-enable
|
||||
```
|
||||
The `flamegraph` command will produce an interactive SVG at `flamegraph.svg`.
|
||||
|
||||
## Releasing
|
||||
|
||||
1. Bump package version locally. Do not just edit `Cargo.toml` on Github, you need both `Cargo.toml` and `Cargo.lock` to be updated.
|
||||
2. Make a PR for the version bump and merge it.
|
||||
3. Go to https://github.com/pydantic/pydantic-core/releases and click "Draft a new release"
|
||||
4. In the "Choose a tag" dropdown enter the new tag `v<the.new.version>` and select "Create new tag on publish" when the option appears.
|
||||
5. Enter the release title in the form "v<the.new.version> <YYYY-MM-DD>"
|
||||
6. Click Generate release notes button
|
||||
7. Click Publish release
|
||||
8. Go to https://github.com/pydantic/pydantic-core/actions and ensure that all build for release are done successfully.
|
||||
9. Go to https://pypi.org/project/pydantic-core/ and ensure that the latest release is published.
|
||||
10. Done 🎉
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,765 @@
|
||||
Metadata-Version: 2.1
|
||||
Name: nodeenv
|
||||
Version: 1.9.1
|
||||
Summary: Node.js virtual environment builder
|
||||
Home-page: https://github.com/ekalinin/nodeenv
|
||||
Author: Eugene Kalinin
|
||||
Author-email: e.v.kalinin@gmail.com
|
||||
License: BSD
|
||||
Platform: any
|
||||
Classifier: Environment :: Web Environment
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: License :: OSI Approved :: BSD License
|
||||
Classifier: Programming Language :: Python
|
||||
Classifier: Programming Language :: Python :: 2
|
||||
Classifier: Programming Language :: Python :: 2.7
|
||||
Classifier: Programming Language :: Python :: 3
|
||||
Classifier: Programming Language :: Python :: 3.7
|
||||
Classifier: Programming Language :: Python :: 3.8
|
||||
Classifier: Programming Language :: Python :: 3.9
|
||||
Classifier: Programming Language :: Python :: 3.10
|
||||
Classifier: Programming Language :: Python :: Implementation :: CPython
|
||||
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
||||
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
||||
Requires-Python: >=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*
|
||||
License-File: LICENSE
|
||||
License-File: AUTHORS
|
||||
|
||||
Node.js virtual environment
|
||||
===========================
|
||||
|
||||
``nodeenv`` (node.js virtual environment) is a tool to create
|
||||
isolated node.js environments.
|
||||
|
||||
It creates an environment that has its own installation directories,
|
||||
that doesn't share libraries with other node.js virtual environments.
|
||||
|
||||
Also the new environment can be integrated with the environment which was built
|
||||
by virtualenv_ (python).
|
||||
|
||||
If you use nodeenv feel free to add your project on wiki: `Who-Uses-Nodeenv`_.
|
||||
|
||||
.. _Who-Uses-Nodeenv: https://github.com/ekalinin/nodeenv/wiki/Who-Uses-Nodeenv
|
||||
|
||||
.. image:: https://travis-ci.org/ekalinin/nodeenv.svg?branch=master
|
||||
:target: https://travis-ci.org/ekalinin/nodeenv
|
||||
|
||||
.. contents:: :local:
|
||||
|
||||
|
||||
Install
|
||||
-------
|
||||
|
||||
Global installation
|
||||
^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
You can install nodeenv globally with `easy_install`_::
|
||||
|
||||
$ sudo easy_install nodeenv
|
||||
|
||||
or with `pip`_::
|
||||
|
||||
$ sudo pip install nodeenv
|
||||
|
||||
or on Debian using `dpkg`_::
|
||||
|
||||
$ ln -s debian-upstream debian
|
||||
$ dpkg-buildpackage -uc -us -b
|
||||
$ sudo dpkg -i $(ls -1rt ../nodeenv_*.deb | tail -n1)
|
||||
|
||||
.. _dpkg: https://www.debian.org/doc/manuals/debian-faq/ch-pkgtools.en.html
|
||||
|
||||
Local installation
|
||||
^^^^^^^^^^^^^^^^^^
|
||||
|
||||
If you're using virtualenv_ then you can install nodeenv via
|
||||
pip_/easy_install_ inside any virtual environment built with virtualenv::
|
||||
|
||||
$ virtualenv env
|
||||
$ . env/bin/activate
|
||||
(env) $ pip install nodeenv
|
||||
(env) $ nodeenv --version
|
||||
0.6.5
|
||||
|
||||
If you want to work with the latest version of the nodeenv you can
|
||||
install it from the github `repository`_::
|
||||
|
||||
$ git clone https://github.com/ekalinin/nodeenv.git
|
||||
$ ./nodeenv/nodeenv.py --help
|
||||
|
||||
or with `pip`_::
|
||||
|
||||
$ pip install -e git+https://github.com/ekalinin/nodeenv.git#egg=nodeenv
|
||||
|
||||
.. _repository: https://github.com/ekalinin/nodeenv
|
||||
.. _pip: http://pypi.python.org/pypi/pip
|
||||
.. _easy_install: http://pypi.python.org/pypi/setuptools
|
||||
|
||||
|
||||
Dependency
|
||||
----------
|
||||
|
||||
For nodeenv
|
||||
^^^^^^^^^^^
|
||||
|
||||
* python (2.6+, 3.5+, or pypy)
|
||||
* make
|
||||
* tail
|
||||
|
||||
For node.js
|
||||
^^^^^^^^^^^
|
||||
|
||||
* libssl-dev
|
||||
|
||||
Usage
|
||||
-----
|
||||
|
||||
Basic
|
||||
^^^^^
|
||||
|
||||
Create new environment::
|
||||
|
||||
$ nodeenv env
|
||||
|
||||
Activate new environment::
|
||||
|
||||
$ . env/bin/activate
|
||||
|
||||
Check versions of main packages::
|
||||
|
||||
(env) $ node -v
|
||||
v0.10.26
|
||||
|
||||
(env) $ npm -v
|
||||
1.4.3
|
||||
|
||||
Deactivate environment::
|
||||
|
||||
(env) $ deactivate_node
|
||||
|
||||
Advanced
|
||||
^^^^^^^^
|
||||
|
||||
Get available node.js versions::
|
||||
|
||||
$ nodeenv --list
|
||||
0.0.1 0.0.2 0.0.3 0.0.4 0.0.5 0.0.6 0.1.0
|
||||
0.1.2 0.1.3 0.1.4 0.1.5 0.1.6 0.1.7 0.1.8
|
||||
0.1.10 0.1.11 0.1.12 0.1.13 0.1.14 0.1.15 0.1.16
|
||||
0.1.18 0.1.19 0.1.20 0.1.21 0.1.22 0.1.23 0.1.24
|
||||
0.1.26 0.1.27 0.1.28 0.1.29 0.1.30 0.1.31 0.1.32
|
||||
0.1.90 0.1.91 0.1.92 0.1.93 0.1.94 0.1.95 0.1.96
|
||||
0.1.98 0.1.99 0.1.100 0.1.101 0.1.102 0.1.103 0.1.104
|
||||
0.2.1 0.2.2 0.2.3 0.2.4 0.2.5 0.2.6 0.3.0
|
||||
0.3.2 0.3.3 0.3.4 0.3.5 0.3.6 0.3.7 0.3.8
|
||||
0.4.1 0.4.2 0.4.3 0.4.4 0.4.5 0.4.6
|
||||
|
||||
Install node.js "0.4.3" without ssl support with 4 parallel commands
|
||||
for compilation and npm.js "0.3.17"::
|
||||
|
||||
$ nodeenv --without-ssl --node=0.4.3 --npm=0.3.17 --with-npm --jobs=4 env-4.3
|
||||
|
||||
Install node.js from the source::
|
||||
|
||||
$ nodeenv --node=0.10.25 --source env-0.10.25
|
||||
|
||||
Install node.js from a mirror::
|
||||
|
||||
$ nodeenv --node=10.19.0 --mirror=https://npm.taobao.org/mirrors/node
|
||||
|
||||
It's much faster to install from the prebuilt package than Install & compile
|
||||
node.js from source::
|
||||
|
||||
$ time nodeenv --node=0.10.25 --prebuilt env-0.10.25-prebuilt
|
||||
+ Install node.js (0.10.25) ... done.
|
||||
|
||||
real 0m6.928s
|
||||
user 0m0.408s
|
||||
sys 0m1.144s
|
||||
|
||||
$ time nodeenv --node=0.10.25 --source env-0.10.25-src
|
||||
+ Install node.js (0.10.25) ... done.
|
||||
|
||||
real 4m12.602s
|
||||
user 6m34.112s
|
||||
sys 0m30.524s
|
||||
|
||||
Create a new environment with the system-wide node.js::
|
||||
|
||||
$ nodeenv --node=system
|
||||
|
||||
Saving the versions of all installed packages to a file::
|
||||
|
||||
$ . env-4.3/bin/activate
|
||||
(env-4.3)$ npm install -g express
|
||||
(env-4.3)$ npm install -g jade
|
||||
(env-4.3)$ freeze ../prod-requirements.txt
|
||||
|
||||
If you want to list locally installed packages use ``-l`` option::
|
||||
|
||||
(env-4.3)$ freeze -l ../prod-requirements.txt
|
||||
|
||||
Create an environment from a requirements file::
|
||||
|
||||
$ nodeenv --requirements=../prod-requirements.txt --jobs=4 env-copy
|
||||
|
||||
Requirements files are plain text files that contain a list of packages
|
||||
to be installed. These text files allow you to create repeatable installations.
|
||||
Requirements file example::
|
||||
|
||||
$ cat ../prod-requirements.txt
|
||||
connect@1.3.0
|
||||
express@2.2.2
|
||||
jade@0.10.4
|
||||
mime@1.2.1
|
||||
npm@0.3.17
|
||||
qs@0.0.7
|
||||
|
||||
If you already have the python virtualenv tool, and want to use nodeenv and
|
||||
virtualenv in conjunction, then you should create (or activate) the python
|
||||
virtual environment::
|
||||
|
||||
# in case of using virtualenv_wrapper
|
||||
$ mkvirtualenv my_env
|
||||
|
||||
# in case of using virtualenv
|
||||
$ . my_env/bin/activate
|
||||
|
||||
and add a node virtual environment to this existing new_venv::
|
||||
|
||||
$ nodeenv -p
|
||||
|
||||
If you need to set the path to make used to build node::
|
||||
|
||||
$ nodeenv -m /usr/local/bin/gmake ENV
|
||||
|
||||
That's all. Now, all your node.js modules will be installed into your virtual
|
||||
environment::
|
||||
|
||||
$ workon my_env
|
||||
$ npm install -g coffee-script
|
||||
$ command -v coffee
|
||||
/home/monty/virtualenvs/my_env/bin/coffee
|
||||
|
||||
Creating a virtual environment with a custom prompt:
|
||||
|
||||
$ nodeenv --node=12.18.2 --prompt="(myenv)" nodeenv
|
||||
|
||||
If environment's directory already exists then you can use ``--force`` option::
|
||||
|
||||
$ nodeenv --requirements=requirements.txt --jobs=4 --force env
|
||||
|
||||
If you already have an environment and want to update packages from requirements
|
||||
file you can use ``--update`` option::
|
||||
|
||||
$ . env-4.3/bin/activate
|
||||
(env-4.3)$ nodeenv --requirements=requirements.txt --update env-4.3
|
||||
|
||||
If you want to call node from environment without activation then you should
|
||||
use `shim` script::
|
||||
|
||||
$ ./env-4.3/bin/shim --version
|
||||
v0.4.3
|
||||
|
||||
Configuration
|
||||
-------------
|
||||
You can use the INI-style file ``~/.nodeenvrc`` to set default values for many options,
|
||||
the keys in that file are the long command-line option names.
|
||||
|
||||
These are the available options and their defaults::
|
||||
|
||||
[nodeenv]
|
||||
node = 'latest'
|
||||
npm = 'latest'
|
||||
with_npm = False
|
||||
jobs = '2'
|
||||
without_ssl = False
|
||||
debug = False
|
||||
profile = False
|
||||
make = 'make'
|
||||
prebuilt = True
|
||||
ignore_ssl_certs = False
|
||||
mirror = None
|
||||
|
||||
Alternatives
|
||||
------------
|
||||
|
||||
There are several alternatives that create isolated environments:
|
||||
|
||||
* `nave <https://github.com/isaacs/nave>`_ - Virtual Environments for Node.
|
||||
Nave stores all environments in one directory ``~/.nave``. Can create
|
||||
per node version environments using `nave use envname versionname`.
|
||||
Can not pass additional arguments into configure (for example --without-ssl)
|
||||
Can't run on windows because it relies on bash.
|
||||
|
||||
* `nvm <https://github.com/creationix/nvm/blob/master/nvm.sh>`_ - Node Version
|
||||
Manager. It is necessarily to do `nvm sync` for caching available node.js
|
||||
version.
|
||||
Can not pass additional arguments into configure (for example --without-ssl)
|
||||
|
||||
* virtualenv_ - Virtual Python Environment builder. For python only.
|
||||
|
||||
.. _`virtualenv`: https://github.com/pypa/virtualenv
|
||||
|
||||
LICENSE
|
||||
=======
|
||||
|
||||
BSD / `LICENSE <https://github.com/ekalinin/nodeenv/blob/master/LICENSE>`_
|
||||
|
||||
|
||||
Nodeenv changelog
|
||||
=================
|
||||
|
||||
Version 1.3.1
|
||||
-------------
|
||||
- Windows related fix `#207 <https://github.com/ekalinin/nodeenv/pull/207>`_
|
||||
- Fixed url for arm64 `#210 <https://github.com/ekalinin/nodeenv/pull/210>`_
|
||||
- Fixed fish support `#212 <https://github.com/ekalinin/nodeenv/pull/212>`_
|
||||
|
||||
|
||||
Version 1.3.0
|
||||
-------------
|
||||
- Fixed symlink creation `#189 <https://github.com/ekalinin/nodeenv/issues/189>`_
|
||||
- Python3.6 support `#200 <https://github.com/ekalinin/nodeenv/pull/200>`_
|
||||
- Added `activate` for fish `#201 <https://github.com/ekalinin/nodeenv/pull/201>`_
|
||||
- Fixed cp866 `#202 <https://github.com/ekalinin/nodeenv/pull/202>`_
|
||||
- Added Conda support `#203 <https://github.com/ekalinin/nodeenv/pull/203>`_
|
||||
|
||||
|
||||
Version 1.2.0
|
||||
-------------
|
||||
- Support for Cygwin `#194 <https://github.com/ekalinin/nodeenv/pull/194>`_ `#195
|
||||
<https://github.com/ekalinin/nodeenv/pull/195>`_
|
||||
- tox.ini as default configuration file `#197
|
||||
<https://github.com/ekalinin/nodeenv/pull/197>`_
|
||||
|
||||
Version 1.1.4
|
||||
-------------
|
||||
- Fixed directory copy `#188 <https://github.com/ekalinin/nodeenv/issues/188>`_
|
||||
|
||||
Version 1.1.3
|
||||
-------------
|
||||
- Fixed spaces in paths `#187 <https://github.com/ekalinin/nodeenv/issues/187>`_
|
||||
|
||||
Version 1.1.2
|
||||
-------------
|
||||
- Fixed MANIFEST.in `#184 <https://github.com/ekalinin/nodeenv/issues/184>`_
|
||||
|
||||
Version 1.1.1
|
||||
-------------
|
||||
- Improve Windows support. See `#181
|
||||
<https://github.com/ekalinin/nodeenv/pull/181>`_
|
||||
- Fix bug when downgrading using `--force`. See `#183
|
||||
<https://github.com/ekalinin/nodeenv/pull/183>`_
|
||||
- Environment creation fails with non-ASCII chars in path. See `#49
|
||||
<https://github.com/ekalinin/nodeenv/issues/49>`_
|
||||
|
||||
Version 1.1.0
|
||||
-------------
|
||||
- Windows support
|
||||
|
||||
Version 1.0.0
|
||||
-------------
|
||||
- `--prebuilt` is default. See `# 161`_
|
||||
- Added `--source` option
|
||||
- Added support for the `ARM`. See `# 171`_
|
||||
- Fixed issue with `$PATH`. See `# 86`_
|
||||
|
||||
.. _# 171: https://github.com/ekalinin/nodeenv/issues/171
|
||||
.. _# 161: https://github.com/ekalinin/nodeenv/issues/161
|
||||
.. _# 86: https://github.com/ekalinin/nodeenv/issues/86
|
||||
|
||||
Version 0.13.6
|
||||
--------------
|
||||
- Use https for nodejs.org. See `# 129`_
|
||||
|
||||
.. _# 129: https://github.com/ekalinin/nodeenv/issues/129
|
||||
|
||||
Version 0.13.5
|
||||
--------------
|
||||
- Improved user-agent identification
|
||||
|
||||
Version 0.13.4
|
||||
--------------
|
||||
- Custom ``user-agent``. See `# 125`_, `# 127`_
|
||||
|
||||
.. _# 125: https://github.com/ekalinin/nodeenv/issues/125
|
||||
.. _# 127: https://github.com/ekalinin/nodeenv/issues/127
|
||||
|
||||
|
||||
Version 0.13.3
|
||||
--------------
|
||||
- Fixed env creation with non-ASCII chars in path. See `# 49`_
|
||||
- Fixed logging with unicode chars. See `# 96`_
|
||||
- Skip new lines at the end of requirements.txt. See `# 122`_
|
||||
- Fixed UnicodeDecodeError at build on non UTF-8 environment. See `# 124`_
|
||||
|
||||
.. _# 49: https://github.com/ekalinin/nodeenv/issues/49
|
||||
.. _# 96: https://github.com/ekalinin/nodeenv/issues/96
|
||||
.. _# 122: https://github.com/ekalinin/nodeenv/issues/122
|
||||
.. _# 124: https://github.com/ekalinin/nodeenv/pull/124
|
||||
|
||||
Version 0.13.2
|
||||
--------------
|
||||
- Fixed ``freeze`` command. See `# 121`_
|
||||
|
||||
.. _# 121: https://github.com/ekalinin/nodeenv/issues/121
|
||||
|
||||
Version 0.13.1
|
||||
--------------
|
||||
- Fixed bug: ``nodeenv --list is raising TypeError``. See `# 117`_, `# 118`_
|
||||
|
||||
.. _# 117: https://github.com/ekalinin/nodeenv/issues/117
|
||||
.. _# 118: https://github.com/ekalinin/nodeenv/pull/118
|
||||
|
||||
Version 0.13.0
|
||||
--------------
|
||||
- Removed deps from ``sort``, ``egrep``, ``curl``, ``tar``.
|
||||
See `# 114`_, `# 116`_.
|
||||
|
||||
.. _# 114: https://github.com/ekalinin/nodeenv/pull/114
|
||||
.. _# 116: https://github.com/ekalinin/nodeenv/pull/116
|
||||
|
||||
Version 0.12.3
|
||||
--------------
|
||||
- Fixed check for installed curl/tar/etc for py3.
|
||||
|
||||
Version 0.12.2
|
||||
--------------
|
||||
- Added check for installed curl/egrep/sort/tar. See `# 110`_, `# 61`_
|
||||
|
||||
.. _# 110: https://github.com/ekalinin/nodeenv/issues/110
|
||||
.. _# 61: https://github.com/ekalinin/nodeenv/issues/61
|
||||
|
||||
Version 0.12.1
|
||||
--------------
|
||||
- Removed dep for lxml in favor of stdlib HTMLParser. See `# 109`_
|
||||
- Added integration with travis-ci. See `# 109`_
|
||||
- Added some tests. See `# 109`_
|
||||
|
||||
.. _# 109: https://github.com/ekalinin/nodeenv/pull/109
|
||||
|
||||
Version 0.12.0
|
||||
--------------
|
||||
- Added support for io.js (new option ``--iojs``)
|
||||
- Fixed ``get_last_stable_node_version`` for python3
|
||||
|
||||
Version 0.11.1
|
||||
--------------
|
||||
- Disallow prefix overridden by .npmrc. See `# 98`_, `# 100`_, `# 103`_
|
||||
|
||||
.. _# 98: https://github.com/ekalinin/nodeenv/issue/98
|
||||
.. _# 100: https://github.com/ekalinin/nodeenv/pull/100
|
||||
.. _# 103: https://github.com/ekalinin/nodeenv/pull/103
|
||||
|
||||
Version 0.11.0
|
||||
--------------
|
||||
- Improved dpkg rules. See `# 90`_
|
||||
- Added --config-file option. See `# 91`_
|
||||
- Read "./setup.cfg" in addition to "~/.nodeenvrc" by default. See `# 91`_
|
||||
- Python3 compatibility. See `# 92`_, `# 93`_
|
||||
|
||||
.. _# 90: https://github.com/ekalinin/nodeenv/pull/90
|
||||
.. _# 91: https://github.com/ekalinin/nodeenv/pull/91
|
||||
.. _# 92: https://github.com/ekalinin/nodeenv/pull/92
|
||||
.. _# 93: https://github.com/ekalinin/nodeenv/pull/93
|
||||
|
||||
Version 0.10.0
|
||||
--------------
|
||||
- Added support for config file. See `# 85`_
|
||||
- Using of virtualenv detected via python not env variable. See `# 87`_
|
||||
- Fixed ``freeze`` for zsh. See `# 88`_
|
||||
- Added ``nodejs`` symlink creation. See `# 84`_
|
||||
|
||||
.. _# 85: https://github.com/ekalinin/nodeenv/pull/85
|
||||
.. _# 87: https://github.com/ekalinin/nodeenv/pull/87
|
||||
.. _# 88: https://github.com/ekalinin/nodeenv/pull/88
|
||||
|
||||
Version 0.9.6
|
||||
-------------
|
||||
- Removed ``os.symlink`` added in `# 76`_. See `# 84`_
|
||||
|
||||
.. _# 84: https://github.com/ekalinin/nodeenv/issues/84
|
||||
|
||||
Version 0.9.5
|
||||
-------------
|
||||
- Fixed a few spelling typos in README. See `# 74`_
|
||||
- Fixed example of using --update option in README. See `# 74`_
|
||||
- Improved args passing into shim script. See `# 75`_
|
||||
- Try to find ``nodejs`` if used system-wide node as well. See `# 76`_
|
||||
- Added ``assert`` if used system-wide node and it wasnt found. See `# 76`_
|
||||
- Added ``-l`` option into ``freeze`` command. See `# 71`_
|
||||
|
||||
.. _# 71: https://github.com/ekalinin/nodeenv/issues/71
|
||||
.. _# 74: https://github.com/ekalinin/nodeenv/issues/74
|
||||
.. _# 75: https://github.com/ekalinin/nodeenv/pull/75
|
||||
.. _# 76: https://github.com/ekalinin/nodeenv/pull/76
|
||||
|
||||
Version 0.9.4
|
||||
-------------
|
||||
- Fixed support for python2.6. See `# 70`_
|
||||
|
||||
.. _# 70: https://github.com/ekalinin/nodeenv/issues/70
|
||||
|
||||
Version 0.9.3
|
||||
-------------
|
||||
- Fixed npm when using prebuilt binaries on Mac OS X. See `# 68`_
|
||||
- Fixed using ``system`` node under python3.4. See `# 43`_
|
||||
- If used ``system`` node script ``bin/node`` always overwritten
|
||||
|
||||
.. _# 68: https://github.com/ekalinin/nodeenv/issues/68
|
||||
.. _# 43: https://github.com/ekalinin/nodeenv/issues/43
|
||||
|
||||
Version 0.9.2
|
||||
-------------
|
||||
- Fixed infinite loop when system-wide node used. See `# 67`_
|
||||
|
||||
.. _# 67: https://github.com/ekalinin/nodeenv/issues/67
|
||||
|
||||
Version 0.9.1
|
||||
-------------
|
||||
- Fixed 'shim' script if used system-wide node
|
||||
- Fixed shebang in the 'shim'
|
||||
- Added shim with name 'node' in case of using system-wide node
|
||||
|
||||
Version 0.9.0
|
||||
-------------
|
||||
- Added `shim` script. See `# 59`_
|
||||
|
||||
.. _# 59: https://github.com/ekalinin/nodeenv/issues/59
|
||||
|
||||
Version 0.8.2
|
||||
-------------
|
||||
- Fixed prebuilt installation:
|
||||
- cp more choosy. See `# 64`_
|
||||
- exclude top-level files in prebuilt tar. See `# 63`_
|
||||
|
||||
.. _# 63: https://github.com/ekalinin/nodeenv/issues/63
|
||||
.. _# 64: https://github.com/ekalinin/nodeenv/issues/64
|
||||
|
||||
Version 0.8.1
|
||||
-------------
|
||||
- Fixed system's node usage. See `# 62`_
|
||||
|
||||
.. _# 62: https://github.com/ekalinin/nodeenv/pull/62
|
||||
|
||||
Version 0.8.0
|
||||
-------------
|
||||
- Added support for prebuilt packages. See `# 56`_
|
||||
- Added support for python3. See `# 42`_
|
||||
|
||||
.. _# 56: https://github.com/ekalinin/nodeenv/issues/56
|
||||
.. _# 42: https://github.com/ekalinin/nodeenv/issues/42
|
||||
|
||||
Version 0.7.3
|
||||
-------------
|
||||
- Fixed npm.js redirect. See `# 52`_
|
||||
- Added ``--update`` option. See `# 25`_
|
||||
|
||||
.. _# 52: https://github.com/ekalinin/nodeenv/pull/52
|
||||
.. _# 25: https://github.com/ekalinin/nodeenv/issues/25
|
||||
|
||||
Version 0.7.2
|
||||
-------------
|
||||
- Bug fixing in ``freeze``. See `# 47`_
|
||||
|
||||
.. _# 47: https://github.com/ekalinin/nodeenv/issues/47
|
||||
|
||||
Version 0.7.1
|
||||
-------------
|
||||
- Added ``--make`` option
|
||||
|
||||
Version 0.7.0
|
||||
-------------
|
||||
- added ``--force``. See `# 37`_
|
||||
- python3 support (first steps). See `# 38`_, `# 39`_
|
||||
- escaping all directories used by subprocesses. See `# 40`_
|
||||
- added an option to use system-wide node. See `# 41`_
|
||||
|
||||
.. _# 37: https://github.com/ekalinin/nodeenv/pull/37
|
||||
.. _# 38: https://github.com/ekalinin/nodeenv/issues/38
|
||||
.. _# 39: https://github.com/ekalinin/nodeenv/issues/39
|
||||
.. _# 40: https://github.com/ekalinin/nodeenv/pull/40
|
||||
.. _# 41: https://github.com/ekalinin/nodeenv/pull/41
|
||||
|
||||
|
||||
Version 0.6.6
|
||||
-------------
|
||||
- Fixed incomplete package names using freeze. See `# 35`_
|
||||
- Fixed packages installation type in README. See `# 33`_
|
||||
|
||||
.. _# 33: https://github.com/ekalinin/nodeenv/issues/33
|
||||
.. _# 35: https://github.com/ekalinin/nodeenv/pull/35
|
||||
|
||||
|
||||
Version 0.6.5
|
||||
-------------
|
||||
- Node's source not loaded if it already exists in FS.
|
||||
|
||||
|
||||
Version 0.6.4
|
||||
-------------
|
||||
- Added python3 compatibility. See `# 32`_
|
||||
|
||||
.. _# 32: https://github.com/ekalinin/nodeenv/pull/32
|
||||
|
||||
|
||||
Version 0.6.3
|
||||
-------------
|
||||
- Fixed ``nodeenv -p``. See `issue # 31`_
|
||||
|
||||
.. _issue # 31: https://github.com/ekalinin/nodeenv/issues/31
|
||||
|
||||
|
||||
Version 0.6.2
|
||||
-------------
|
||||
- Skipped stand-alone npm installation by default. See `pull # 30`_
|
||||
- ``--without-npm`` has been changed to ``--with-npm``. See `pull # 30`_
|
||||
- Fixed options for running Make instances in parallel. See `pull # 30`_
|
||||
|
||||
.. _pull # 30: https://github.com/ekalinin/nodeenv/pull/30
|
||||
|
||||
|
||||
Version 0.6.1
|
||||
-------------
|
||||
- Used pkg_resources.parse_version to compare versions. See `pull # 29`_
|
||||
- Fixed doubling prompt inside a virtualenv. See `issues # 26`_
|
||||
|
||||
.. _pull # 29: https://github.com/ekalinin/nodeenv/pull/29
|
||||
.. _issues # 26: https://github.com/ekalinin/nodeenv/issues/26
|
||||
|
||||
|
||||
Version 0.6.0
|
||||
-------------
|
||||
- Fixed typo in deactive command. See `pull # 20`_
|
||||
- Not used "--insecure" to download npm. See `pull # 21`_
|
||||
- Removed "src" directory after installation. See `pull # 22`_
|
||||
- Added option "--clean-src"
|
||||
- Added integration with python's virtualenv. See `pull # 23`_
|
||||
|
||||
.. _pull # 20: https://github.com/ekalinin/nodeenv/pull/20
|
||||
.. _pull # 21: https://github.com/ekalinin/nodeenv/pull/21
|
||||
.. _pull # 22: https://github.com/ekalinin/nodeenv/pull/22
|
||||
.. _pull # 23: https://github.com/ekalinin/nodeenv/pull/23
|
||||
|
||||
Version 0.5.3
|
||||
-------------
|
||||
- Bug fix. Used https, /dist/latest/. See `pull # 16`_
|
||||
|
||||
.. _pull # 16: https://github.com/ekalinin/nodeenv/pull/16
|
||||
|
||||
Version 0.5.2
|
||||
-------------
|
||||
- Improved installation logic for release candidate versions. See `pull # 10`_
|
||||
|
||||
.. _pull # 10: https://github.com/ekalinin/nodeenv/pull/10
|
||||
|
||||
Version 0.5.1
|
||||
-------------
|
||||
- Improved logic for the option '--without-npm'. See `issue # 14`_, `pull # 15`_
|
||||
|
||||
.. _issue # 14: https://github.com/ekalinin/nodeenv/issues/14
|
||||
.. _pull # 15: https://github.com/ekalinin/nodeenv/pull/15
|
||||
|
||||
Version 0.5.0
|
||||
-------------
|
||||
- The virtual environment's path is no longer hardcoded into the
|
||||
activation script. See `pull # 13`_
|
||||
|
||||
.. _pull # 13: https://github.com/ekalinin/nodeenv/pull/13
|
||||
|
||||
Version 0.4.3
|
||||
-------------
|
||||
- Fixed metavar for ``--npm``
|
||||
- ``npm install -g`` used for npm >=1.0, not noly for `latest`
|
||||
|
||||
Version 0.4.2
|
||||
-------------
|
||||
- Added README.ru.rst
|
||||
|
||||
Version 0.4.1
|
||||
-------------
|
||||
- Fixed bug in print_node_versions. See `pull # 11`_
|
||||
- Added deps in README
|
||||
|
||||
.. _pull # 11: https://github.com/ekalinin/nodeenv/pull/11
|
||||
|
||||
Version 0.4.0
|
||||
-------------
|
||||
- Compatibility with virtualenv (renamed deactivate to deactivate_node).
|
||||
See `pull # 9`_, `issue # 6`_
|
||||
|
||||
.. _pull # 9: https://github.com/ekalinin/nodeenv/pull/9
|
||||
.. _issue # 6: https://github.com/ekalinin/nodeenv/issues/6
|
||||
|
||||
Version 0.3.10
|
||||
--------------
|
||||
- Fixed bug in url detection for node.js download
|
||||
|
||||
Version 0.3.9
|
||||
-------------
|
||||
- Deleted notify method calls. See `pull # 7`_
|
||||
- Updated tar url for node.js > 0.5.0. See `pull # 8`_
|
||||
|
||||
.. _pull # 7: https://github.com/ekalinin/nodeenv/pull/7
|
||||
.. _pull # 8: https://github.com/ekalinin/nodeenv/pull/8
|
||||
|
||||
Version 0.3.8
|
||||
-------------
|
||||
- Added `NODE_PATH` variable export (for correct module
|
||||
search after installation via npm)
|
||||
|
||||
Version 0.3.7
|
||||
-------------
|
||||
- Shows command output when error occurs
|
||||
- Excluded 'npm' from `freeze` list
|
||||
- Fixed bug with 'not only letter' names in `freeze` list
|
||||
- Added global installation for npm >= 1.0 (when install
|
||||
soft from requirement file)
|
||||
|
||||
Version 0.3.6
|
||||
-------------
|
||||
- Fixed ``freeze`` output command. See `request # 5`_
|
||||
- Diagnostic message fixed. See `pull # 4`_
|
||||
|
||||
.. _request # 5 : https://github.com/ekalinin/nodeenv/issues/5
|
||||
.. _pull # 4 : https://github.com/ekalinin/nodeenv/pull/4
|
||||
|
||||
Version 0.3.5
|
||||
-------------
|
||||
- Added option ``--npm`` to install certain npm.js version. Request_ .
|
||||
- Fixed ``freeze`` command for npm >= 1.0.x.
|
||||
|
||||
.. _Request: https://github.com/ekalinin/nodeenv/issues/3
|
||||
|
||||
Version 0.3.4
|
||||
-------------
|
||||
|
||||
- Fixed `problem #2`_ with new npm installation script. Added
|
||||
``--no-npm-clean`` option. The default to the npm 0.x cleanup.
|
||||
|
||||
.. _problem #2: https://github.com/ekalinin/nodeenv/issues/2
|
||||
|
||||
Version 0.3.3
|
||||
-------------
|
||||
|
||||
- Fixed `problem #1`_ with installation from PyPI via easy_install.
|
||||
Added ``MANIFEST.in`` file.
|
||||
|
||||
.. _problem #1: https://github.com/ekalinin/nodeenv/issues/1
|
||||
|
||||
Version 0.3.2
|
||||
-------------
|
||||
|
||||
- Internal improvements
|
||||
- Logging refactoring
|
||||
|
||||
Version 0.3.1
|
||||
-------------
|
||||
|
||||
- Default environment promt is folder name
|
||||
|
||||
Version 0.3.0
|
||||
--------------
|
||||
|
||||
- Renamed nve to nodeenv
|
Binary file not shown.
@@ -0,0 +1,124 @@
|
||||
Metadata-Version: 2.1
|
||||
Name: pyparsing
|
||||
Version: 3.2.1
|
||||
Summary: pyparsing module - Classes and methods to define and execute parsing grammars
|
||||
Author-email: Paul McGuire <ptmcg.gm+pyparsing@gmail.com>
|
||||
Requires-Python: >=3.9
|
||||
Description-Content-Type: text/x-rst
|
||||
Classifier: Development Status :: 5 - Production/Stable
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: Intended Audience :: Information Technology
|
||||
Classifier: License :: OSI Approved :: MIT License
|
||||
Classifier: Operating System :: OS Independent
|
||||
Classifier: Programming Language :: Python
|
||||
Classifier: Programming Language :: Python :: 3
|
||||
Classifier: Programming Language :: Python :: 3.9
|
||||
Classifier: Programming Language :: Python :: 3.10
|
||||
Classifier: Programming Language :: Python :: 3.11
|
||||
Classifier: Programming Language :: Python :: 3.12
|
||||
Classifier: Programming Language :: Python :: 3.13
|
||||
Classifier: Programming Language :: Python :: 3 :: Only
|
||||
Classifier: Programming Language :: Python :: Implementation :: CPython
|
||||
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
||||
Classifier: Topic :: Software Development :: Compilers
|
||||
Classifier: Topic :: Text Processing
|
||||
Classifier: Typing :: Typed
|
||||
Requires-Dist: railroad-diagrams ; extra == "diagrams"
|
||||
Requires-Dist: jinja2 ; extra == "diagrams"
|
||||
Project-URL: Homepage, https://github.com/pyparsing/pyparsing/
|
||||
Provides-Extra: diagrams
|
||||
|
||||
PyParsing -- A Python Parsing Module
|
||||
====================================
|
||||
|
||||
|Version| |Build Status| |Coverage| |License| |Python Versions| |Snyk Score|
|
||||
|
||||
Introduction
|
||||
============
|
||||
|
||||
The pyparsing module is an alternative approach to creating and
|
||||
executing simple grammars, vs. the traditional lex/yacc approach, or the
|
||||
use of regular expressions. The pyparsing module provides a library of
|
||||
classes that client code uses to construct the grammar directly in
|
||||
Python code.
|
||||
|
||||
*[Since first writing this description of pyparsing in late 2003, this
|
||||
technique for developing parsers has become more widespread, under the
|
||||
name Parsing Expression Grammars - PEGs. See more information on PEGs*
|
||||
`here <https://en.wikipedia.org/wiki/Parsing_expression_grammar>`__
|
||||
*.]*
|
||||
|
||||
Here is a program to parse ``"Hello, World!"`` (or any greeting of the form
|
||||
``"salutation, addressee!"``):
|
||||
|
||||
.. code:: python
|
||||
|
||||
from pyparsing import Word, alphas
|
||||
greet = Word(alphas) + "," + Word(alphas) + "!"
|
||||
hello = "Hello, World!"
|
||||
print(hello, "->", greet.parseString(hello))
|
||||
|
||||
The program outputs the following::
|
||||
|
||||
Hello, World! -> ['Hello', ',', 'World', '!']
|
||||
|
||||
The Python representation of the grammar is quite readable, owing to the
|
||||
self-explanatory class names, and the use of '+', '|' and '^' operator
|
||||
definitions.
|
||||
|
||||
The parsed results returned from ``parseString()`` is a collection of type
|
||||
``ParseResults``, which can be accessed as a
|
||||
nested list, a dictionary, or an object with named attributes.
|
||||
|
||||
The pyparsing module handles some of the problems that are typically
|
||||
vexing when writing text parsers:
|
||||
|
||||
- extra or missing whitespace (the above program will also handle ``"Hello,World!"``, ``"Hello , World !"``, etc.)
|
||||
- quoted strings
|
||||
- embedded comments
|
||||
|
||||
The examples directory includes a simple SQL parser, simple CORBA IDL
|
||||
parser, a config file parser, a chemical formula parser, and a four-
|
||||
function algebraic notation parser, among many others.
|
||||
|
||||
Documentation
|
||||
=============
|
||||
|
||||
There are many examples in the online docstrings of the classes
|
||||
and methods in pyparsing. You can find them compiled into `online docs <https://pyparsing-docs.readthedocs.io/en/latest/>`__. Additional
|
||||
documentation resources and project info are listed in the online
|
||||
`GitHub wiki <https://github.com/pyparsing/pyparsing/wiki>`__. An
|
||||
entire directory of examples can be found `here <https://github.com/pyparsing/pyparsing/tree/master/examples>`__.
|
||||
|
||||
License
|
||||
=======
|
||||
|
||||
MIT License. See header of the `pyparsing __init__.py <https://github.com/pyparsing/pyparsing/blob/master/pyparsing/__init__.py#L1-L23>`__ file.
|
||||
|
||||
History
|
||||
=======
|
||||
|
||||
See `CHANGES <https://github.com/pyparsing/pyparsing/blob/master/CHANGES>`__ file.
|
||||
|
||||
.. |Build Status| image:: https://github.com/pyparsing/pyparsing/actions/workflows/ci.yml/badge.svg
|
||||
:target: https://github.com/pyparsing/pyparsing/actions/workflows/ci.yml
|
||||
|
||||
.. |Coverage| image:: https://codecov.io/gh/pyparsing/pyparsing/branch/master/graph/badge.svg
|
||||
:target: https://codecov.io/gh/pyparsing/pyparsing
|
||||
|
||||
.. |Version| image:: https://img.shields.io/pypi/v/pyparsing?style=flat-square
|
||||
:target: https://pypi.org/project/pyparsing/
|
||||
:alt: Version
|
||||
|
||||
.. |License| image:: https://img.shields.io/pypi/l/pyparsing.svg?style=flat-square
|
||||
:target: https://pypi.org/project/pyparsing/
|
||||
:alt: License
|
||||
|
||||
.. |Python Versions| image:: https://img.shields.io/pypi/pyversions/pyparsing.svg?style=flat-square
|
||||
:target: https://pypi.org/project/python-liquid/
|
||||
:alt: Python versions
|
||||
|
||||
.. |Snyk Score| image:: https://snyk.io//advisor/python/pyparsing/badge.svg
|
||||
:target: https://snyk.io//advisor/python/pyparsing
|
||||
:alt: pyparsing
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,161 @@
|
||||
Metadata-Version: 2.3
|
||||
Name: pydantic_core
|
||||
Version: 2.27.0
|
||||
Classifier: Development Status :: 3 - Alpha
|
||||
Classifier: Programming Language :: Python
|
||||
Classifier: Programming Language :: Python :: 3
|
||||
Classifier: Programming Language :: Python :: 3 :: Only
|
||||
Classifier: Programming Language :: Python :: 3.8
|
||||
Classifier: Programming Language :: Python :: 3.9
|
||||
Classifier: Programming Language :: Python :: 3.10
|
||||
Classifier: Programming Language :: Python :: 3.11
|
||||
Classifier: Programming Language :: Python :: 3.12
|
||||
Classifier: Programming Language :: Python :: 3.13
|
||||
Classifier: Programming Language :: Rust
|
||||
Classifier: Framework :: Pydantic
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: Intended Audience :: Information Technology
|
||||
Classifier: License :: OSI Approved :: MIT License
|
||||
Classifier: Operating System :: POSIX :: Linux
|
||||
Classifier: Operating System :: Microsoft :: Windows
|
||||
Classifier: Operating System :: MacOS
|
||||
Classifier: Typing :: Typed
|
||||
Requires-Dist: typing-extensions >=4.6.0, !=4.7.0
|
||||
License-File: LICENSE
|
||||
Summary: Core functionality for Pydantic validation and serialization
|
||||
Home-Page: https://github.com/pydantic/pydantic-core
|
||||
Author-email: Samuel Colvin <s@muelcolvin.com>
|
||||
License: MIT
|
||||
Requires-Python: >=3.8
|
||||
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
|
||||
Project-URL: Homepage, https://github.com/pydantic/pydantic-core
|
||||
Project-URL: Funding, https://github.com/sponsors/samuelcolvin
|
||||
Project-URL: Source, https://github.com/pydantic/pydantic-core
|
||||
|
||||
# pydantic-core
|
||||
|
||||
[](https://github.com/pydantic/pydantic-core/actions?query=event%3Apush+branch%3Amain+workflow%3Aci)
|
||||
[](https://codecov.io/gh/pydantic/pydantic-core)
|
||||
[](https://pypi.python.org/pypi/pydantic-core)
|
||||
[](https://github.com/pydantic/pydantic-core)
|
||||
[](https://github.com/pydantic/pydantic-core/blob/main/LICENSE)
|
||||
|
||||
This package provides the core functionality for [pydantic](https://docs.pydantic.dev) validation and serialization.
|
||||
|
||||
Pydantic-core is currently around 17x faster than pydantic V1.
|
||||
See [`tests/benchmarks/`](./tests/benchmarks/) for details.
|
||||
|
||||
## Example of direct usage
|
||||
|
||||
_NOTE: You should not need to use pydantic-core directly; instead, use pydantic, which in turn uses pydantic-core._
|
||||
|
||||
```py
|
||||
from pydantic_core import SchemaValidator, ValidationError
|
||||
|
||||
|
||||
v = SchemaValidator(
|
||||
{
|
||||
'type': 'typed-dict',
|
||||
'fields': {
|
||||
'name': {
|
||||
'type': 'typed-dict-field',
|
||||
'schema': {
|
||||
'type': 'str',
|
||||
},
|
||||
},
|
||||
'age': {
|
||||
'type': 'typed-dict-field',
|
||||
'schema': {
|
||||
'type': 'int',
|
||||
'ge': 18,
|
||||
},
|
||||
},
|
||||
'is_developer': {
|
||||
'type': 'typed-dict-field',
|
||||
'schema': {
|
||||
'type': 'default',
|
||||
'schema': {'type': 'bool'},
|
||||
'default': True,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
)
|
||||
|
||||
r1 = v.validate_python({'name': 'Samuel', 'age': 35})
|
||||
assert r1 == {'name': 'Samuel', 'age': 35, 'is_developer': True}
|
||||
|
||||
# pydantic-core can also validate JSON directly
|
||||
r2 = v.validate_json('{"name": "Samuel", "age": 35}')
|
||||
assert r1 == r2
|
||||
|
||||
try:
|
||||
v.validate_python({'name': 'Samuel', 'age': 11})
|
||||
except ValidationError as e:
|
||||
print(e)
|
||||
"""
|
||||
1 validation error for model
|
||||
age
|
||||
Input should be greater than or equal to 18
|
||||
[type=greater_than_equal, context={ge: 18}, input_value=11, input_type=int]
|
||||
"""
|
||||
```
|
||||
|
||||
## Getting Started
|
||||
|
||||
You'll need rust stable [installed](https://rustup.rs/), or rust nightly if you want to generate accurate coverage.
|
||||
|
||||
With rust and python 3.8+ installed, compiling pydantic-core should be possible with roughly the following:
|
||||
|
||||
```bash
|
||||
# clone this repo or your fork
|
||||
git clone git@github.com:pydantic/pydantic-core.git
|
||||
cd pydantic-core
|
||||
# create a new virtual env
|
||||
python3 -m venv env
|
||||
source env/bin/activate
|
||||
# install dependencies and install pydantic-core
|
||||
make install
|
||||
```
|
||||
|
||||
That should be it, the example shown above should now run.
|
||||
|
||||
You might find it useful to look at [`python/pydantic_core/_pydantic_core.pyi`](./python/pydantic_core/_pydantic_core.pyi) and
|
||||
[`python/pydantic_core/core_schema.py`](./python/pydantic_core/core_schema.py) for more information on the python API,
|
||||
beyond that, [`tests/`](./tests) provide a large number of examples of usage.
|
||||
|
||||
If you want to contribute to pydantic-core, you'll want to use some other make commands:
|
||||
* `make build-dev` to build the package during development
|
||||
* `make build-prod` to perform an optimised build for benchmarking
|
||||
* `make test` to run the tests
|
||||
* `make testcov` to run the tests and generate a coverage report
|
||||
* `make lint` to run the linter
|
||||
* `make format` to format python and rust code
|
||||
* `make` to run `format build-dev lint test`
|
||||
|
||||
## Profiling
|
||||
|
||||
It's possible to profile the code using the [`flamegraph` utility from `flamegraph-rs`](https://github.com/flamegraph-rs/flamegraph). (Tested on Linux.) You can install this with `cargo install flamegraph`.
|
||||
|
||||
Run `make build-profiling` to install a release build with debugging symbols included (needed for profiling).
|
||||
|
||||
Once that is built, you can profile pytest benchmarks with (e.g.):
|
||||
|
||||
```bash
|
||||
flamegraph -- pytest tests/benchmarks/test_micro_benchmarks.py -k test_list_of_ints_core_py --benchmark-enable
|
||||
```
|
||||
The `flamegraph` command will produce an interactive SVG at `flamegraph.svg`.
|
||||
|
||||
## Releasing
|
||||
|
||||
1. Bump package version locally. Do not just edit `Cargo.toml` on Github, you need both `Cargo.toml` and `Cargo.lock` to be updated.
|
||||
2. Make a PR for the version bump and merge it.
|
||||
3. Go to https://github.com/pydantic/pydantic-core/releases and click "Draft a new release"
|
||||
4. In the "Choose a tag" dropdown enter the new tag `v<the.new.version>` and select "Create new tag on publish" when the option appears.
|
||||
5. Enter the release title in the form "v<the.new.version> <YYYY-MM-DD>"
|
||||
6. Click Generate release notes button
|
||||
7. Click Publish release
|
||||
8. Go to https://github.com/pydantic/pydantic-core/actions and ensure that all build for release are done successfully.
|
||||
9. Go to https://pypi.org/project/pydantic-core/ and ensure that the latest release is published.
|
||||
10. Done 🎉
|
||||
|
Binary file not shown.
@@ -0,0 +1,142 @@
|
||||
Metadata-Version: 2.1
|
||||
Name: setuptools
|
||||
Version: 75.4.0
|
||||
Summary: Easily download, build, install, upgrade, and uninstall Python packages
|
||||
Author-email: Python Packaging Authority <distutils-sig@python.org>
|
||||
Project-URL: Source, https://github.com/pypa/setuptools
|
||||
Project-URL: Documentation, https://setuptools.pypa.io/
|
||||
Project-URL: Changelog, https://setuptools.pypa.io/en/stable/history.html
|
||||
Keywords: CPAN PyPI distutils eggs package management
|
||||
Classifier: Development Status :: 5 - Production/Stable
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: License :: OSI Approved :: MIT License
|
||||
Classifier: Programming Language :: Python :: 3
|
||||
Classifier: Programming Language :: Python :: 3 :: Only
|
||||
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
||||
Classifier: Topic :: System :: Archiving :: Packaging
|
||||
Classifier: Topic :: System :: Systems Administration
|
||||
Classifier: Topic :: Utilities
|
||||
Requires-Python: >=3.9
|
||||
Description-Content-Type: text/x-rst
|
||||
License-File: LICENSE
|
||||
Provides-Extra: certs
|
||||
Provides-Extra: check
|
||||
Requires-Dist: pytest-checkdocs >=2.4 ; extra == 'check'
|
||||
Requires-Dist: pytest-ruff >=0.2.1 ; (sys_platform != "cygwin") and extra == 'check'
|
||||
Requires-Dist: ruff >=0.7.0 ; (sys_platform != "cygwin") and extra == 'check'
|
||||
Provides-Extra: core
|
||||
Requires-Dist: packaging >=24.2 ; extra == 'core'
|
||||
Requires-Dist: more-itertools >=8.8 ; extra == 'core'
|
||||
Requires-Dist: jaraco.text >=3.7 ; extra == 'core'
|
||||
Requires-Dist: wheel >=0.43.0 ; extra == 'core'
|
||||
Requires-Dist: platformdirs >=4.2.2 ; extra == 'core'
|
||||
Requires-Dist: jaraco.collections ; extra == 'core'
|
||||
Requires-Dist: jaraco.functools >=4 ; extra == 'core'
|
||||
Requires-Dist: packaging ; extra == 'core'
|
||||
Requires-Dist: more-itertools ; extra == 'core'
|
||||
Requires-Dist: importlib-metadata >=6 ; (python_version < "3.10") and extra == 'core'
|
||||
Requires-Dist: tomli >=2.0.1 ; (python_version < "3.11") and extra == 'core'
|
||||
Provides-Extra: cover
|
||||
Requires-Dist: pytest-cov ; extra == 'cover'
|
||||
Provides-Extra: doc
|
||||
Requires-Dist: sphinx >=3.5 ; extra == 'doc'
|
||||
Requires-Dist: jaraco.packaging >=9.3 ; extra == 'doc'
|
||||
Requires-Dist: rst.linker >=1.9 ; extra == 'doc'
|
||||
Requires-Dist: furo ; extra == 'doc'
|
||||
Requires-Dist: sphinx-lint ; extra == 'doc'
|
||||
Requires-Dist: jaraco.tidelift >=1.4 ; extra == 'doc'
|
||||
Requires-Dist: pygments-github-lexers ==0.0.5 ; extra == 'doc'
|
||||
Requires-Dist: sphinx-favicon ; extra == 'doc'
|
||||
Requires-Dist: sphinx-inline-tabs ; extra == 'doc'
|
||||
Requires-Dist: sphinx-reredirects ; extra == 'doc'
|
||||
Requires-Dist: sphinxcontrib-towncrier ; extra == 'doc'
|
||||
Requires-Dist: sphinx-notfound-page <2,>=1 ; extra == 'doc'
|
||||
Requires-Dist: pyproject-hooks !=1.1 ; extra == 'doc'
|
||||
Requires-Dist: towncrier <24.7 ; extra == 'doc'
|
||||
Provides-Extra: enabler
|
||||
Requires-Dist: pytest-enabler >=2.2 ; extra == 'enabler'
|
||||
Provides-Extra: ssl
|
||||
Provides-Extra: test
|
||||
Requires-Dist: pytest !=8.1.*,>=6 ; extra == 'test'
|
||||
Requires-Dist: virtualenv >=13.0.0 ; extra == 'test'
|
||||
Requires-Dist: wheel >=0.44.0 ; extra == 'test'
|
||||
Requires-Dist: pip >=19.1 ; extra == 'test'
|
||||
Requires-Dist: packaging >=24.2 ; extra == 'test'
|
||||
Requires-Dist: jaraco.envs >=2.2 ; extra == 'test'
|
||||
Requires-Dist: pytest-xdist >=3 ; extra == 'test'
|
||||
Requires-Dist: jaraco.path >=3.2.0 ; extra == 'test'
|
||||
Requires-Dist: build[virtualenv] >=1.0.3 ; extra == 'test'
|
||||
Requires-Dist: filelock >=3.4.0 ; extra == 'test'
|
||||
Requires-Dist: ini2toml[lite] >=0.14 ; extra == 'test'
|
||||
Requires-Dist: tomli-w >=1.0.0 ; extra == 'test'
|
||||
Requires-Dist: pytest-timeout ; extra == 'test'
|
||||
Requires-Dist: pytest-home >=0.5 ; extra == 'test'
|
||||
Requires-Dist: pytest-subprocess ; extra == 'test'
|
||||
Requires-Dist: pyproject-hooks !=1.1 ; extra == 'test'
|
||||
Requires-Dist: jaraco.test >=5.5 ; extra == 'test'
|
||||
Requires-Dist: jaraco.develop >=7.21 ; (python_version >= "3.9" and sys_platform != "cygwin") and extra == 'test'
|
||||
Requires-Dist: pytest-perf ; (sys_platform != "cygwin") and extra == 'test'
|
||||
Provides-Extra: type
|
||||
Requires-Dist: pytest-mypy ; extra == 'type'
|
||||
Requires-Dist: mypy <1.14,>=1.12 ; extra == 'type'
|
||||
Requires-Dist: importlib-metadata >=7.0.2 ; (python_version < "3.10") and extra == 'type'
|
||||
Requires-Dist: jaraco.develop >=7.21 ; (sys_platform != "cygwin") and extra == 'type'
|
||||
|
||||
.. |pypi-version| image:: https://img.shields.io/pypi/v/setuptools.svg
|
||||
:target: https://pypi.org/project/setuptools
|
||||
|
||||
.. |py-version| image:: https://img.shields.io/pypi/pyversions/setuptools.svg
|
||||
|
||||
.. |test-badge| image:: https://github.com/pypa/setuptools/actions/workflows/main.yml/badge.svg
|
||||
:target: https://github.com/pypa/setuptools/actions?query=workflow%3A%22tests%22
|
||||
:alt: tests
|
||||
|
||||
.. |ruff-badge| image:: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/charliermarsh/ruff/main/assets/badge/v2.json
|
||||
:target: https://github.com/astral-sh/ruff
|
||||
:alt: Ruff
|
||||
|
||||
.. |docs-badge| image:: https://img.shields.io/readthedocs/setuptools/latest.svg
|
||||
:target: https://setuptools.pypa.io
|
||||
|
||||
.. |skeleton-badge| image:: https://img.shields.io/badge/skeleton-2024-informational
|
||||
:target: https://blog.jaraco.com/skeleton
|
||||
|
||||
.. |codecov-badge| image:: https://img.shields.io/codecov/c/github/pypa/setuptools/master.svg?logo=codecov&logoColor=white
|
||||
:target: https://codecov.io/gh/pypa/setuptools
|
||||
|
||||
.. |tidelift-badge| image:: https://tidelift.com/badges/github/pypa/setuptools?style=flat
|
||||
:target: https://tidelift.com/subscription/pkg/pypi-setuptools?utm_source=pypi-setuptools&utm_medium=readme
|
||||
|
||||
.. |discord-badge| image:: https://img.shields.io/discord/803025117553754132
|
||||
:target: https://discord.com/channels/803025117553754132/815945031150993468
|
||||
:alt: Discord
|
||||
|
||||
|pypi-version| |py-version| |test-badge| |ruff-badge| |docs-badge| |skeleton-badge| |codecov-badge| |discord-badge|
|
||||
|
||||
See the `Quickstart <https://setuptools.pypa.io/en/latest/userguide/quickstart.html>`_
|
||||
and the `User's Guide <https://setuptools.pypa.io/en/latest/userguide/>`_ for
|
||||
instructions on how to use Setuptools.
|
||||
|
||||
Questions and comments should be directed to `GitHub Discussions
|
||||
<https://github.com/pypa/setuptools/discussions>`_.
|
||||
Bug reports and especially tested patches may be
|
||||
submitted directly to the `bug tracker
|
||||
<https://github.com/pypa/setuptools/issues>`_.
|
||||
|
||||
|
||||
Code of Conduct
|
||||
===============
|
||||
|
||||
Everyone interacting in the setuptools project's codebases, issue trackers,
|
||||
chat rooms, and fora is expected to follow the
|
||||
`PSF Code of Conduct <https://github.com/pypa/.github/blob/main/CODE_OF_CONDUCT.md>`_.
|
||||
|
||||
|
||||
For Enterprise
|
||||
==============
|
||||
|
||||
Available as part of the Tidelift Subscription.
|
||||
|
||||
Setuptools and the maintainers of thousands of other packages are working with Tidelift to deliver one enterprise subscription that covers all of the open source you use.
|
||||
|
||||
`Learn more <https://tidelift.com/subscription/pkg/pypi-setuptools?utm_source=pypi-setuptools&utm_medium=referral&utm_campaign=github>`_.
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,118 @@
|
||||
Metadata-Version: 2.1
|
||||
Name: distlib
|
||||
Version: 0.3.9
|
||||
Summary: Distribution utilities
|
||||
Home-page: https://github.com/pypa/distlib
|
||||
Author: Vinay Sajip
|
||||
Author-email: vinay_sajip@red-dove.com
|
||||
License: PSF-2.0
|
||||
Project-URL: Documentation, https://distlib.readthedocs.io/
|
||||
Project-URL: Source, https://github.com/pypa/distlib
|
||||
Project-URL: Tracker, https://github.com/pypa/distlib/issues
|
||||
Platform: any
|
||||
Classifier: Development Status :: 5 - Production/Stable
|
||||
Classifier: Environment :: Console
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: License :: OSI Approved :: Python Software Foundation License
|
||||
Classifier: Operating System :: OS Independent
|
||||
Classifier: Programming Language :: Python
|
||||
Classifier: Programming Language :: Python :: 2
|
||||
Classifier: Programming Language :: Python :: 3
|
||||
Classifier: Programming Language :: Python :: 2.7
|
||||
Classifier: Programming Language :: Python :: 3.6
|
||||
Classifier: Programming Language :: Python :: 3.7
|
||||
Classifier: Programming Language :: Python :: 3.8
|
||||
Classifier: Programming Language :: Python :: 3.9
|
||||
Classifier: Programming Language :: Python :: 3.10
|
||||
Classifier: Programming Language :: Python :: 3.11
|
||||
Classifier: Programming Language :: Python :: 3.12
|
||||
Classifier: Programming Language :: Python :: 3.13
|
||||
Classifier: Topic :: Software Development
|
||||
License-File: LICENSE.txt
|
||||
|
||||
|badge1| |badge2|
|
||||
|
||||
.. |badge1| image:: https://img.shields.io/github/actions/workflow/status/pypa/distlib/package-tests.yml
|
||||
:alt: GitHub Workflow Status (with event)
|
||||
|
||||
.. |badge2| image:: https://img.shields.io/codecov/c/github/pypa/distlib
|
||||
:target: https://app.codecov.io/gh/pypa/distlib
|
||||
:alt: GitHub coverage status
|
||||
|
||||
What is it?
|
||||
-----------
|
||||
|
||||
Distlib is a library which implements low-level functions that relate to
|
||||
packaging and distribution of Python software. It is intended to be used as the
|
||||
basis for third-party packaging tools. The documentation is available at
|
||||
|
||||
https://distlib.readthedocs.io/
|
||||
|
||||
Main features
|
||||
-------------
|
||||
|
||||
Distlib currently offers the following features:
|
||||
|
||||
* The package ``distlib.database``, which implements a database of installed
|
||||
distributions, as defined by :pep:`376`, and distribution dependency graph
|
||||
logic. Support is also provided for non-installed distributions (i.e.
|
||||
distributions registered with metadata on an index like PyPI), including
|
||||
the ability to scan for dependencies and building dependency graphs.
|
||||
* The package ``distlib.index``, which implements an interface to perform
|
||||
operations on an index, such as registering a project, uploading a
|
||||
distribution or uploading documentation. Support is included for verifying
|
||||
SSL connections (with domain matching) and signing/verifying packages using
|
||||
GnuPG.
|
||||
* The package ``distlib.metadata``, which implements distribution metadata as
|
||||
defined by :pep:`643`, :pep:`566`, :pep:`345`, :pep:`314` and :pep:`241`.
|
||||
* The package ``distlib.markers``, which implements environment markers as
|
||||
defined by :pep:`508`.
|
||||
* The package ``distlib.manifest``, which implements lists of files used
|
||||
in packaging source distributions.
|
||||
* The package ``distlib.locators``, which allows finding distributions, whether
|
||||
on PyPI (XML-RPC or via the "simple" interface), local directories or some
|
||||
other source.
|
||||
* The package ``distlib.resources``, which allows access to data files stored
|
||||
in Python packages, both in the file system and in .zip files.
|
||||
* The package ``distlib.scripts``, which allows installing of scripts with
|
||||
adjustment of shebang lines and support for native Windows executable
|
||||
launchers.
|
||||
* The package ``distlib.version``, which implements version specifiers as
|
||||
defined by :pep:`440`, but also support for working with "legacy" versions and
|
||||
semantic versions.
|
||||
* The package ``distlib.wheel``, which provides support for building and
|
||||
installing from the Wheel format for binary distributions (see :pep:`427`).
|
||||
* The package ``distlib.util``, which contains miscellaneous functions and
|
||||
classes which are useful in packaging, but which do not fit neatly into
|
||||
one of the other packages in ``distlib``.* The package implements enhanced
|
||||
globbing functionality such as the ability to use ``**`` in patterns to
|
||||
specify recursing into subdirectories.
|
||||
|
||||
|
||||
Python version and platform compatibility
|
||||
-----------------------------------------
|
||||
|
||||
Distlib is intended to be used on and is tested on Python versions 2.7 and 3.6 or later,
|
||||
pypy-2.7 and pypy3 on Linux, Windows, and macOS.
|
||||
|
||||
Project status
|
||||
--------------
|
||||
|
||||
The project has reached a mature status in its development: there is a comprehensive
|
||||
test suite and it has been exercised on Windows, Ubuntu and macOS. The project is used
|
||||
by well-known projects such as `pip <https://pypi.org/pypi/pip>`_ and `caniusepython3
|
||||
<https://pypi.org/pypi/caniusepython3>`_.
|
||||
|
||||
This project was migrated from Mercurial to Git and from BitBucket to GitHub, and
|
||||
although all information of importance has been retained across the migration, some
|
||||
commit references in issues and issue comments may have become invalid.
|
||||
|
||||
Code of Conduct
|
||||
---------------
|
||||
|
||||
Everyone interacting in the distlib project's codebases, issue trackers, chat
|
||||
rooms, and mailing lists is expected to follow the `PyPA Code of Conduct`_.
|
||||
|
||||
.. _PyPA Code of Conduct: https://www.pypa.io/en/latest/code-of-conduct/
|
||||
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,155 @@
|
||||
Metadata-Version: 2.1
|
||||
Name: identify
|
||||
Version: 2.6.6
|
||||
Summary: File identification library for Python
|
||||
Home-page: https://github.com/pre-commit/identify
|
||||
Author: Chris Kuehl
|
||||
Author-email: ckuehl@ocf.berkeley.edu
|
||||
License: MIT
|
||||
Classifier: License :: OSI Approved :: MIT License
|
||||
Classifier: Programming Language :: Python :: 3
|
||||
Classifier: Programming Language :: Python :: 3 :: Only
|
||||
Classifier: Programming Language :: Python :: Implementation :: CPython
|
||||
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
||||
Requires-Python: >=3.9
|
||||
Description-Content-Type: text/markdown
|
||||
License-File: LICENSE
|
||||
Provides-Extra: license
|
||||
Requires-Dist: ukkonen; extra == "license"
|
||||
|
||||
[](https://github.com/pre-commit/identify/actions/workflows/main.yml)
|
||||
[](https://results.pre-commit.ci/latest/github/pre-commit/identify/main)
|
||||
|
||||
identify
|
||||
========
|
||||
|
||||
File identification library for Python.
|
||||
|
||||
Given a file (or some information about a file), return a set of standardized
|
||||
tags identifying what the file is.
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
pip install identify
|
||||
```
|
||||
|
||||
## Usage
|
||||
### With a file on disk
|
||||
|
||||
If you have an actual file on disk, you can get the most information possible
|
||||
(a superset of all other methods):
|
||||
|
||||
```python
|
||||
>>> from identify import identify
|
||||
>>> identify.tags_from_path('/path/to/file.py')
|
||||
{'file', 'text', 'python', 'non-executable'}
|
||||
>>> identify.tags_from_path('/path/to/file-with-shebang')
|
||||
{'file', 'text', 'shell', 'bash', 'executable'}
|
||||
>>> identify.tags_from_path('/bin/bash')
|
||||
{'file', 'binary', 'executable'}
|
||||
>>> identify.tags_from_path('/path/to/directory')
|
||||
{'directory'}
|
||||
>>> identify.tags_from_path('/path/to/symlink')
|
||||
{'symlink'}
|
||||
```
|
||||
|
||||
When using a file on disk, the checks performed are:
|
||||
|
||||
* File type (file, symlink, directory, socket)
|
||||
* Mode (is it executable?)
|
||||
* File name (mostly based on extension)
|
||||
* If executable, the shebang is read and the interpreter interpreted
|
||||
|
||||
|
||||
### If you only have the filename
|
||||
|
||||
```python
|
||||
>>> identify.tags_from_filename('file.py')
|
||||
{'text', 'python'}
|
||||
```
|
||||
|
||||
|
||||
### If you only have the interpreter
|
||||
|
||||
```python
|
||||
>>> identify.tags_from_interpreter('python3.5')
|
||||
{'python', 'python3'}
|
||||
>>> identify.tags_from_interpreter('bash')
|
||||
{'shell', 'bash'}
|
||||
>>> identify.tags_from_interpreter('some-unrecognized-thing')
|
||||
set()
|
||||
```
|
||||
|
||||
### As a cli
|
||||
|
||||
```
|
||||
$ identify-cli --help
|
||||
usage: identify-cli [-h] [--filename-only] path
|
||||
|
||||
positional arguments:
|
||||
path
|
||||
|
||||
optional arguments:
|
||||
-h, --help show this help message and exit
|
||||
--filename-only
|
||||
```
|
||||
|
||||
```console
|
||||
$ identify-cli setup.py; echo $?
|
||||
["file", "non-executable", "python", "text"]
|
||||
0
|
||||
$ identify-cli setup.py --filename-only; echo $?
|
||||
["python", "text"]
|
||||
0
|
||||
$ identify-cli wat.wat; echo $?
|
||||
wat.wat does not exist.
|
||||
1
|
||||
$ identify-cli wat.wat --filename-only; echo $?
|
||||
1
|
||||
```
|
||||
|
||||
### Identifying LICENSE files
|
||||
|
||||
`identify` also has an api for determining what type of license is contained
|
||||
in a file. This routine is roughly based on the approaches used by
|
||||
[licensee] (the ruby gem that github uses to figure out the license for a
|
||||
repo).
|
||||
|
||||
The approach that `identify` uses is as follows:
|
||||
|
||||
1. Strip the copyright line
|
||||
2. Normalize all whitespace
|
||||
3. Return any exact matches
|
||||
4. Return the closest by edit distance (where edit distance < 5%)
|
||||
|
||||
To use the api, install via `pip install identify[license]`
|
||||
|
||||
```pycon
|
||||
>>> from identify import identify
|
||||
>>> identify.license_id('LICENSE')
|
||||
'MIT'
|
||||
```
|
||||
|
||||
The return value of the `license_id` function is an [SPDX] id. Currently
|
||||
licenses are sourced from [choosealicense.com].
|
||||
|
||||
[licensee]: https://github.com/benbalter/licensee
|
||||
[SPDX]: https://spdx.org/licenses/
|
||||
[choosealicense.com]: https://github.com/github/choosealicense.com
|
||||
|
||||
## How it works
|
||||
|
||||
A call to `tags_from_path` does this:
|
||||
|
||||
1. What is the type: file, symlink, directory? If it's not file, stop here.
|
||||
2. Is it executable? Add the appropriate tag.
|
||||
3. Do we recognize the file extension? If so, add the appropriate tags, stop
|
||||
here. These tags would include binary/text.
|
||||
4. Peek at the first X bytes of the file. Use these to determine whether it is
|
||||
binary or text, add the appropriate tag.
|
||||
5. If identified as text above, try to read and interpret the shebang, and add
|
||||
appropriate tags.
|
||||
|
||||
By design, this means we don't need to partially read files where we recognize
|
||||
the file extension.
|
Binary file not shown.
@@ -0,0 +1,58 @@
|
||||
Metadata-Version: 2.4
|
||||
Name: filelock
|
||||
Version: 3.17.0
|
||||
Summary: A platform independent file lock.
|
||||
Project-URL: Documentation, https://py-filelock.readthedocs.io
|
||||
Project-URL: Homepage, https://github.com/tox-dev/py-filelock
|
||||
Project-URL: Source, https://github.com/tox-dev/py-filelock
|
||||
Project-URL: Tracker, https://github.com/tox-dev/py-filelock/issues
|
||||
Maintainer-email: Bernát Gábor <gaborjbernat@gmail.com>
|
||||
License-Expression: Unlicense
|
||||
License-File: LICENSE
|
||||
Keywords: application,cache,directory,log,user
|
||||
Classifier: Development Status :: 5 - Production/Stable
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: License :: OSI Approved :: The Unlicense (Unlicense)
|
||||
Classifier: Operating System :: OS Independent
|
||||
Classifier: Programming Language :: Python
|
||||
Classifier: Programming Language :: Python :: 3 :: Only
|
||||
Classifier: Programming Language :: Python :: 3.9
|
||||
Classifier: Programming Language :: Python :: 3.10
|
||||
Classifier: Programming Language :: Python :: 3.11
|
||||
Classifier: Programming Language :: Python :: 3.12
|
||||
Classifier: Programming Language :: Python :: 3.13
|
||||
Classifier: Topic :: Internet
|
||||
Classifier: Topic :: Software Development :: Libraries
|
||||
Classifier: Topic :: System
|
||||
Requires-Python: >=3.9
|
||||
Provides-Extra: docs
|
||||
Requires-Dist: furo>=2024.8.6; extra == 'docs'
|
||||
Requires-Dist: sphinx-autodoc-typehints>=3; extra == 'docs'
|
||||
Requires-Dist: sphinx>=8.1.3; extra == 'docs'
|
||||
Provides-Extra: testing
|
||||
Requires-Dist: covdefaults>=2.3; extra == 'testing'
|
||||
Requires-Dist: coverage>=7.6.10; extra == 'testing'
|
||||
Requires-Dist: diff-cover>=9.2.1; extra == 'testing'
|
||||
Requires-Dist: pytest-asyncio>=0.25.2; extra == 'testing'
|
||||
Requires-Dist: pytest-cov>=6; extra == 'testing'
|
||||
Requires-Dist: pytest-mock>=3.14; extra == 'testing'
|
||||
Requires-Dist: pytest-timeout>=2.3.1; extra == 'testing'
|
||||
Requires-Dist: pytest>=8.3.4; extra == 'testing'
|
||||
Requires-Dist: virtualenv>=20.28.1; extra == 'testing'
|
||||
Provides-Extra: typing
|
||||
Requires-Dist: typing-extensions>=4.12.2; (python_version < '3.11') and extra == 'typing'
|
||||
Description-Content-Type: text/markdown
|
||||
|
||||
# filelock
|
||||
|
||||
[](https://pypi.org/project/filelock/)
|
||||
[](https://pypi.org/project/filelock/)
|
||||
[](https://py-filelock.readthedocs.io/en/latest/?badge=latest)
|
||||
[](https://github.com/psf/black)
|
||||
[](https://pepy.tech/project/filelock)
|
||||
[](https://github.com/tox-dev/py-filelock/actions/workflows/check.yaml)
|
||||
|
||||
For more information checkout the [official documentation](https://py-filelock.readthedocs.io/en/latest/index.html).
|
Binary file not shown.
@@ -0,0 +1,161 @@
|
||||
Metadata-Version: 2.3
|
||||
Name: pydantic_core
|
||||
Version: 2.24.0
|
||||
Classifier: Development Status :: 3 - Alpha
|
||||
Classifier: Programming Language :: Python
|
||||
Classifier: Programming Language :: Python :: 3
|
||||
Classifier: Programming Language :: Python :: 3 :: Only
|
||||
Classifier: Programming Language :: Python :: 3.8
|
||||
Classifier: Programming Language :: Python :: 3.9
|
||||
Classifier: Programming Language :: Python :: 3.10
|
||||
Classifier: Programming Language :: Python :: 3.11
|
||||
Classifier: Programming Language :: Python :: 3.12
|
||||
Classifier: Programming Language :: Python :: 3.13
|
||||
Classifier: Programming Language :: Rust
|
||||
Classifier: Framework :: Pydantic
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: Intended Audience :: Information Technology
|
||||
Classifier: License :: OSI Approved :: MIT License
|
||||
Classifier: Operating System :: POSIX :: Linux
|
||||
Classifier: Operating System :: Microsoft :: Windows
|
||||
Classifier: Operating System :: MacOS
|
||||
Classifier: Typing :: Typed
|
||||
Requires-Dist: typing-extensions >=4.6.0, !=4.7.0
|
||||
License-File: LICENSE
|
||||
Summary: Core functionality for Pydantic validation and serialization
|
||||
Home-Page: https://github.com/pydantic/pydantic-core
|
||||
Author-email: Samuel Colvin <s@muelcolvin.com>
|
||||
License: MIT
|
||||
Requires-Python: >=3.8
|
||||
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
|
||||
Project-URL: Homepage, https://github.com/pydantic/pydantic-core
|
||||
Project-URL: Funding, https://github.com/sponsors/samuelcolvin
|
||||
Project-URL: Source, https://github.com/pydantic/pydantic-core
|
||||
|
||||
# pydantic-core
|
||||
|
||||
[](https://github.com/pydantic/pydantic-core/actions?query=event%3Apush+branch%3Amain+workflow%3Aci)
|
||||
[](https://codecov.io/gh/pydantic/pydantic-core)
|
||||
[](https://pypi.python.org/pypi/pydantic-core)
|
||||
[](https://github.com/pydantic/pydantic-core)
|
||||
[](https://github.com/pydantic/pydantic-core/blob/main/LICENSE)
|
||||
|
||||
This package provides the core functionality for [pydantic](https://docs.pydantic.dev) validation and serialization.
|
||||
|
||||
Pydantic-core is currently around 17x faster than pydantic V1.
|
||||
See [`tests/benchmarks/`](./tests/benchmarks/) for details.
|
||||
|
||||
## Example of direct usage
|
||||
|
||||
_NOTE: You should not need to use pydantic-core directly; instead, use pydantic, which in turn uses pydantic-core._
|
||||
|
||||
```py
|
||||
from pydantic_core import SchemaValidator, ValidationError
|
||||
|
||||
|
||||
v = SchemaValidator(
|
||||
{
|
||||
'type': 'typed-dict',
|
||||
'fields': {
|
||||
'name': {
|
||||
'type': 'typed-dict-field',
|
||||
'schema': {
|
||||
'type': 'str',
|
||||
},
|
||||
},
|
||||
'age': {
|
||||
'type': 'typed-dict-field',
|
||||
'schema': {
|
||||
'type': 'int',
|
||||
'ge': 18,
|
||||
},
|
||||
},
|
||||
'is_developer': {
|
||||
'type': 'typed-dict-field',
|
||||
'schema': {
|
||||
'type': 'default',
|
||||
'schema': {'type': 'bool'},
|
||||
'default': True,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
)
|
||||
|
||||
r1 = v.validate_python({'name': 'Samuel', 'age': 35})
|
||||
assert r1 == {'name': 'Samuel', 'age': 35, 'is_developer': True}
|
||||
|
||||
# pydantic-core can also validate JSON directly
|
||||
r2 = v.validate_json('{"name": "Samuel", "age": 35}')
|
||||
assert r1 == r2
|
||||
|
||||
try:
|
||||
v.validate_python({'name': 'Samuel', 'age': 11})
|
||||
except ValidationError as e:
|
||||
print(e)
|
||||
"""
|
||||
1 validation error for model
|
||||
age
|
||||
Input should be greater than or equal to 18
|
||||
[type=greater_than_equal, context={ge: 18}, input_value=11, input_type=int]
|
||||
"""
|
||||
```
|
||||
|
||||
## Getting Started
|
||||
|
||||
You'll need rust stable [installed](https://rustup.rs/), or rust nightly if you want to generate accurate coverage.
|
||||
|
||||
With rust and python 3.8+ installed, compiling pydantic-core should be possible with roughly the following:
|
||||
|
||||
```bash
|
||||
# clone this repo or your fork
|
||||
git clone git@github.com:pydantic/pydantic-core.git
|
||||
cd pydantic-core
|
||||
# create a new virtual env
|
||||
python3 -m venv env
|
||||
source env/bin/activate
|
||||
# install dependencies and install pydantic-core
|
||||
make install
|
||||
```
|
||||
|
||||
That should be it, the example shown above should now run.
|
||||
|
||||
You might find it useful to look at [`python/pydantic_core/_pydantic_core.pyi`](./python/pydantic_core/_pydantic_core.pyi) and
|
||||
[`python/pydantic_core/core_schema.py`](./python/pydantic_core/core_schema.py) for more information on the python API,
|
||||
beyond that, [`tests/`](./tests) provide a large number of examples of usage.
|
||||
|
||||
If you want to contribute to pydantic-core, you'll want to use some other make commands:
|
||||
* `make build-dev` to build the package during development
|
||||
* `make build-prod` to perform an optimised build for benchmarking
|
||||
* `make test` to run the tests
|
||||
* `make testcov` to run the tests and generate a coverage report
|
||||
* `make lint` to run the linter
|
||||
* `make format` to format python and rust code
|
||||
* `make` to run `format build-dev lint test`
|
||||
|
||||
## Profiling
|
||||
|
||||
It's possible to profile the code using the [`flamegraph` utility from `flamegraph-rs`](https://github.com/flamegraph-rs/flamegraph). (Tested on Linux.) You can install this with `cargo install flamegraph`.
|
||||
|
||||
Run `make build-profiling` to install a release build with debugging symbols included (needed for profiling).
|
||||
|
||||
Once that is built, you can profile pytest benchmarks with (e.g.):
|
||||
|
||||
```bash
|
||||
flamegraph -- pytest tests/benchmarks/test_micro_benchmarks.py -k test_list_of_ints_core_py --benchmark-enable
|
||||
```
|
||||
The `flamegraph` command will produce an interactive SVG at `flamegraph.svg`.
|
||||
|
||||
## Releasing
|
||||
|
||||
1. Bump package version locally. Do not just edit `Cargo.toml` on Github, you need both `Cargo.toml` and `Cargo.lock` to be updated.
|
||||
2. Make a PR for the version bump and merge it.
|
||||
3. Go to https://github.com/pydantic/pydantic-core/releases and click "Draft a new release"
|
||||
4. In the "Choose a tag" dropdown enter the new tag `v<the.new.version>` and select "Create new tag on publish" when the option appears.
|
||||
5. Enter the release title in the form "v<the.new.version> <YYYY-MM-DD>"
|
||||
6. Click Generate release notes button
|
||||
7. Click Publish release
|
||||
8. Go to https://github.com/pydantic/pydantic-core/actions and ensure that all build for release are done successfully.
|
||||
9. Go to https://pypi.org/project/pydantic-core/ and ensure that the latest release is published.
|
||||
10. Done 🎉
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,66 @@
|
||||
Metadata-Version: 2.1
|
||||
Name: wheel
|
||||
Version: 0.44.0
|
||||
Summary: A built-package format for Python
|
||||
Keywords: wheel,packaging
|
||||
Author-email: Daniel Holth <dholth@fastmail.fm>
|
||||
Maintainer-email: Alex Grönholm <alex.gronholm@nextday.fi>
|
||||
Requires-Python: >=3.8
|
||||
Description-Content-Type: text/x-rst
|
||||
Classifier: Development Status :: 5 - Production/Stable
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: Topic :: System :: Archiving :: Packaging
|
||||
Classifier: License :: OSI Approved :: MIT License
|
||||
Classifier: Programming Language :: Python
|
||||
Classifier: Programming Language :: Python :: 3 :: Only
|
||||
Classifier: Programming Language :: Python :: 3.8
|
||||
Classifier: Programming Language :: Python :: 3.9
|
||||
Classifier: Programming Language :: Python :: 3.10
|
||||
Classifier: Programming Language :: Python :: 3.11
|
||||
Classifier: Programming Language :: Python :: 3.12
|
||||
Requires-Dist: pytest >= 6.0.0 ; extra == "test"
|
||||
Requires-Dist: setuptools >= 65 ; extra == "test"
|
||||
Project-URL: Changelog, https://wheel.readthedocs.io/en/stable/news.html
|
||||
Project-URL: Documentation, https://wheel.readthedocs.io/
|
||||
Project-URL: Issue Tracker, https://github.com/pypa/wheel/issues
|
||||
Project-URL: Source, https://github.com/pypa/wheel
|
||||
Provides-Extra: test
|
||||
|
||||
wheel
|
||||
=====
|
||||
|
||||
This is a command line tool for manipulating Python wheel files, as defined in
|
||||
`PEP 427`_. It contains the following functionality:
|
||||
|
||||
* Convert ``.egg`` archives into ``.whl``
|
||||
* Unpack wheel archives
|
||||
* Repack wheel archives
|
||||
* Add or remove tags in existing wheel archives
|
||||
|
||||
.. _PEP 427: https://www.python.org/dev/peps/pep-0427/
|
||||
|
||||
Historical note
|
||||
---------------
|
||||
|
||||
This project used to contain the implementation of the setuptools_ ``bdist_wheel``
|
||||
command, but as of setuptools v70.1, it no longer needs ``wheel`` installed for that to
|
||||
work. Thus, you should install this **only** if you intend to use the ``wheel`` command
|
||||
line tool!
|
||||
|
||||
.. _setuptools: https://pypi.org/project/setuptools/
|
||||
|
||||
Documentation
|
||||
-------------
|
||||
|
||||
The documentation_ can be found on Read The Docs.
|
||||
|
||||
.. _documentation: https://wheel.readthedocs.io/
|
||||
|
||||
Code of Conduct
|
||||
---------------
|
||||
|
||||
Everyone interacting in the wheel project's codebases, issue trackers, chat
|
||||
rooms, and mailing lists is expected to follow the `PSF Code of Conduct`_.
|
||||
|
||||
.. _PSF Code of Conduct: https://github.com/pypa/.github/blob/main/CODE_OF_CONDUCT.md
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,30 @@
|
||||
Metadata-Version: 2.1
|
||||
Name: pre_commit
|
||||
Version: 4.1.0
|
||||
Summary: A framework for managing and maintaining multi-language pre-commit hooks.
|
||||
Home-page: https://github.com/pre-commit/pre-commit
|
||||
Author: Anthony Sottile
|
||||
Author-email: asottile@umich.edu
|
||||
License: MIT
|
||||
Classifier: License :: OSI Approved :: MIT License
|
||||
Classifier: Programming Language :: Python :: 3
|
||||
Classifier: Programming Language :: Python :: 3 :: Only
|
||||
Classifier: Programming Language :: Python :: Implementation :: CPython
|
||||
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
||||
Requires-Python: >=3.9
|
||||
Description-Content-Type: text/markdown
|
||||
License-File: LICENSE
|
||||
Requires-Dist: cfgv>=2.0.0
|
||||
Requires-Dist: identify>=1.0.0
|
||||
Requires-Dist: nodeenv>=0.11.1
|
||||
Requires-Dist: pyyaml>=5.1
|
||||
Requires-Dist: virtualenv>=20.10.0
|
||||
|
||||
[](https://github.com/pre-commit/pre-commit/actions/workflows/main.yml)
|
||||
[](https://results.pre-commit.ci/latest/github/pre-commit/pre-commit/main)
|
||||
|
||||
## pre-commit
|
||||
|
||||
A framework for managing and maintaining multi-language pre-commit hooks.
|
||||
|
||||
For more information see: https://pre-commit.com/
|
Binary file not shown.
@@ -0,0 +1,155 @@
|
||||
Metadata-Version: 2.1
|
||||
Name: identify
|
||||
Version: 2.6.2
|
||||
Summary: File identification library for Python
|
||||
Home-page: https://github.com/pre-commit/identify
|
||||
Author: Chris Kuehl
|
||||
Author-email: ckuehl@ocf.berkeley.edu
|
||||
License: MIT
|
||||
Classifier: License :: OSI Approved :: MIT License
|
||||
Classifier: Programming Language :: Python :: 3
|
||||
Classifier: Programming Language :: Python :: 3 :: Only
|
||||
Classifier: Programming Language :: Python :: Implementation :: CPython
|
||||
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
||||
Requires-Python: >=3.9
|
||||
Description-Content-Type: text/markdown
|
||||
License-File: LICENSE
|
||||
Provides-Extra: license
|
||||
Requires-Dist: ukkonen; extra == "license"
|
||||
|
||||
[](https://github.com/pre-commit/identify/actions/workflows/main.yml)
|
||||
[](https://results.pre-commit.ci/latest/github/pre-commit/identify/main)
|
||||
|
||||
identify
|
||||
========
|
||||
|
||||
File identification library for Python.
|
||||
|
||||
Given a file (or some information about a file), return a set of standardized
|
||||
tags identifying what the file is.
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
pip install identify
|
||||
```
|
||||
|
||||
## Usage
|
||||
### With a file on disk
|
||||
|
||||
If you have an actual file on disk, you can get the most information possible
|
||||
(a superset of all other methods):
|
||||
|
||||
```python
|
||||
>>> from identify import identify
|
||||
>>> identify.tags_from_path('/path/to/file.py')
|
||||
{'file', 'text', 'python', 'non-executable'}
|
||||
>>> identify.tags_from_path('/path/to/file-with-shebang')
|
||||
{'file', 'text', 'shell', 'bash', 'executable'}
|
||||
>>> identify.tags_from_path('/bin/bash')
|
||||
{'file', 'binary', 'executable'}
|
||||
>>> identify.tags_from_path('/path/to/directory')
|
||||
{'directory'}
|
||||
>>> identify.tags_from_path('/path/to/symlink')
|
||||
{'symlink'}
|
||||
```
|
||||
|
||||
When using a file on disk, the checks performed are:
|
||||
|
||||
* File type (file, symlink, directory, socket)
|
||||
* Mode (is it executable?)
|
||||
* File name (mostly based on extension)
|
||||
* If executable, the shebang is read and the interpreter interpreted
|
||||
|
||||
|
||||
### If you only have the filename
|
||||
|
||||
```python
|
||||
>>> identify.tags_from_filename('file.py')
|
||||
{'text', 'python'}
|
||||
```
|
||||
|
||||
|
||||
### If you only have the interpreter
|
||||
|
||||
```python
|
||||
>>> identify.tags_from_interpreter('python3.5')
|
||||
{'python', 'python3'}
|
||||
>>> identify.tags_from_interpreter('bash')
|
||||
{'shell', 'bash'}
|
||||
>>> identify.tags_from_interpreter('some-unrecognized-thing')
|
||||
set()
|
||||
```
|
||||
|
||||
### As a cli
|
||||
|
||||
```
|
||||
$ identify-cli --help
|
||||
usage: identify-cli [-h] [--filename-only] path
|
||||
|
||||
positional arguments:
|
||||
path
|
||||
|
||||
optional arguments:
|
||||
-h, --help show this help message and exit
|
||||
--filename-only
|
||||
```
|
||||
|
||||
```console
|
||||
$ identify-cli setup.py; echo $?
|
||||
["file", "non-executable", "python", "text"]
|
||||
0
|
||||
$ identify-cli setup.py --filename-only; echo $?
|
||||
["python", "text"]
|
||||
0
|
||||
$ identify-cli wat.wat; echo $?
|
||||
wat.wat does not exist.
|
||||
1
|
||||
$ identify-cli wat.wat --filename-only; echo $?
|
||||
1
|
||||
```
|
||||
|
||||
### Identifying LICENSE files
|
||||
|
||||
`identify` also has an api for determining what type of license is contained
|
||||
in a file. This routine is roughly based on the approaches used by
|
||||
[licensee] (the ruby gem that github uses to figure out the license for a
|
||||
repo).
|
||||
|
||||
The approach that `identify` uses is as follows:
|
||||
|
||||
1. Strip the copyright line
|
||||
2. Normalize all whitespace
|
||||
3. Return any exact matches
|
||||
4. Return the closest by edit distance (where edit distance < 5%)
|
||||
|
||||
To use the api, install via `pip install identify[license]`
|
||||
|
||||
```pycon
|
||||
>>> from identify import identify
|
||||
>>> identify.license_id('LICENSE')
|
||||
'MIT'
|
||||
```
|
||||
|
||||
The return value of the `license_id` function is an [SPDX] id. Currently
|
||||
licenses are sourced from [choosealicense.com].
|
||||
|
||||
[licensee]: https://github.com/benbalter/licensee
|
||||
[SPDX]: https://spdx.org/licenses/
|
||||
[choosealicense.com]: https://github.com/github/choosealicense.com
|
||||
|
||||
## How it works
|
||||
|
||||
A call to `tags_from_path` does this:
|
||||
|
||||
1. What is the type: file, symlink, directory? If it's not file, stop here.
|
||||
2. Is it executable? Add the appropriate tag.
|
||||
3. Do we recognize the file extension? If so, add the appropriate tags, stop
|
||||
here. These tags would include binary/text.
|
||||
4. Peek at the first X bytes of the file. Use these to determine whether it is
|
||||
binary or text, add the appropriate tag.
|
||||
5. If identified as text above, try to read and interpret the shebang, and add
|
||||
appropriate tags.
|
||||
|
||||
By design, this means we don't need to partially read files where we recognize
|
||||
the file extension.
|
Binary file not shown.
@@ -0,0 +1,117 @@
|
||||
Metadata-Version: 2.1
|
||||
Name: idf-build-apps
|
||||
Version: 2.5.1
|
||||
Summary: Tools for building ESP-IDF related apps.
|
||||
Author-email: Fu Hanxi <fuhanxi@espressif.com>
|
||||
Requires-Python: >=3.7
|
||||
Description-Content-Type: text/markdown
|
||||
Classifier: Development Status :: 2 - Pre-Alpha
|
||||
Classifier: License :: OSI Approved :: Apache Software License
|
||||
Classifier: Programming Language :: Python :: 3.7
|
||||
Classifier: Programming Language :: Python :: 3.8
|
||||
Classifier: Programming Language :: Python :: 3.9
|
||||
Classifier: Programming Language :: Python :: 3.10
|
||||
Classifier: Programming Language :: Python :: 3.11
|
||||
Classifier: Programming Language :: Python :: 3.12
|
||||
Requires-Dist: pyparsing
|
||||
Requires-Dist: pyyaml
|
||||
Requires-Dist: packaging
|
||||
Requires-Dist: toml; python_version < '3.11'
|
||||
Requires-Dist: pydantic~=2.0
|
||||
Requires-Dist: pydantic_settings
|
||||
Requires-Dist: argcomplete>=3
|
||||
Requires-Dist: typing-extensions; python_version < '3.11'
|
||||
Requires-Dist: sphinx ; extra == "doc"
|
||||
Requires-Dist: sphinx-rtd-theme ; extra == "doc"
|
||||
Requires-Dist: sphinx_copybutton ; extra == "doc"
|
||||
Requires-Dist: myst-parser ; extra == "doc"
|
||||
Requires-Dist: sphinxcontrib-mermaid ; extra == "doc"
|
||||
Requires-Dist: sphinx-argparse ; extra == "doc"
|
||||
Requires-Dist: pytest ; extra == "test"
|
||||
Requires-Dist: pytest-cov ; extra == "test"
|
||||
Project-URL: changelog, https://github.com/espressif/idf-build-apps/blob/master/CHANGELOG.md
|
||||
Project-URL: documentation, https://docs.espressif.com/projects/idf-build-apps
|
||||
Project-URL: homepage, https://github.com/espressif/idf-build-apps
|
||||
Project-URL: repository, https://github.com/espressif/idf-build-apps
|
||||
Provides-Extra: doc
|
||||
Provides-Extra: test
|
||||
|
||||
# idf-build-apps
|
||||
|
||||
[](https://espressif-docs.readthedocs-hosted.com/projects/idf-build-apps/en/latest/)
|
||||
[](https://pypi.org/project/idf_build_apps/)
|
||||
[](https://pypi.org/project/idf_build_apps/)
|
||||
|
||||
`idf-build-apps` is a tool that helps users find and build [ESP-IDF][esp-idf], and [ESP8266 RTOS][esp8266-rtos] projects in a large scale.
|
||||
|
||||
## What is an `app`?
|
||||
|
||||
A project using [ESP-IDF][esp-idf] SDK, or [ESP8266 RTOS][esp8266-rtos] SDK typically contains:
|
||||
|
||||
- Build recipe in CMake or Make and the main component with app sources
|
||||
- (Optional) One or more [sdkconfig][sdkconfig] files
|
||||
|
||||
`app` is the abbreviation for application. An application is a set of binary files that is being built with the specified [sdkconfig][sdkconfig] and the target chip. `idf-build-apps` could build one project into a number of applications according to the matrix of these two parameters.
|
||||
|
||||
## Installation
|
||||
|
||||
```shell
|
||||
pip install idf-build-apps
|
||||
```
|
||||
|
||||
or `pipx`
|
||||
|
||||
```shell
|
||||
pipx install idf-build-apps
|
||||
```
|
||||
|
||||
## Basic Usage
|
||||
|
||||
`idf-build-apps` is a python package that could be used as a library or a CLI tool.
|
||||
|
||||
As a CLI tool, it contains three sub-commands.
|
||||
|
||||
- `find` to find the buildable applications
|
||||
- `build` to build the found applications
|
||||
- `completions` to activate autocompletions or print instructions for manual activation
|
||||
|
||||
For detailed explanation to all CLI options, you may run
|
||||
|
||||
```shell
|
||||
idf-build-apps -h
|
||||
idf-build-apps find -h
|
||||
idf-build-apps build -h
|
||||
idf-build-apps completions -h
|
||||
```
|
||||
|
||||
As a library, you may check the [API documentation][api-doc] for more information. Overall it provides
|
||||
|
||||
- Two functions, `find_apps` and `build_apps`
|
||||
- Two classes, `CMakeApp` and `MakeApp`
|
||||
|
||||
## Quick CLI Example
|
||||
|
||||
To build [ESP-IDF hello world example project][hello-world] with ESP32:
|
||||
|
||||
```shell
|
||||
idf-build-apps build -p $IDF_PATH/examples/get-started/hello_world/ --target esp32
|
||||
```
|
||||
|
||||
The binary files will be generated under `$IDF_PATH/examples/get-started/hello_world/build` directory.
|
||||
|
||||
## Documentation
|
||||
|
||||
For detailed information, please refer to [our documentation site][doc]!
|
||||
|
||||
## Contributing
|
||||
|
||||
Thanks for your contribution! Please refer to our [Contributing Guide](CONTRIBUTING.md)
|
||||
|
||||
[esp-idf]: https://github.com/espressif/esp-idf
|
||||
[esp8266-rtos]: https://github.com/espressif/ESP8266_RTOS_SDK
|
||||
[sdkconfig]: https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/kconfig.html
|
||||
[hello-world]: https://github.com/espressif/esp-idf/tree/master/examples/get-started/hello_world
|
||||
[supported-targets]: https://github.com/espressif/esp-idf/tree/v5.0#esp-idf-release-and-soc-compatibility
|
||||
[doc]: https://docs.espressif.com/projects/idf-build-apps/en/latest/
|
||||
[api-doc]: https://docs.espressif.com/projects/idf-build-apps/en/latest/references/api/modules.html
|
||||
|
Binary file not shown.
@@ -0,0 +1,12 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta name="pypi:repository-version" content="1.0">
|
||||
<title>Simple index</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<a href="/pypi/annotated-types/annotated_types-0.6.0-py3-none-any.whl">annotated_types-0.6.0-py3-none-any.whl</a><br/>
|
||||
<a href="/pypi/annotated-types/annotated_types-0.7.0-py3-none-any.whl">annotated_types-0.7.0-py3-none-any.whl</a><br/>
|
||||
</body>
|
||||
</html>
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user