Makes network automation pydantic.
Project description
Pydantify
A prototype CLI tool to transform YANG models into Pydantic datastructures that can be initialized with config values and serialized into RESTCONF payloads.
Check out the documentation https://pydantify.github.io/pydantify/
For users
Installation
Prerequisites:
- Python 3.10
- pip
Installing from PYPI:
pip install pydantify
Installing from local folder:
pip install .
Usage
Example:
pydantify -i ./models_dir -o ./output_dir -t interfaces/ethernet model.yang
Transforms the /interfaces/ethernet
node and its children (located in model.yang
) into a Python script located in ./output_dir
. Imports of definitions found in ./models_dir
are included if relevant to the specified model and node.
Command syntax:
pydantify [-h] [-v] [-V] [-S] [-i INPUT_DIR] [-o OUTPUT_DIR] [-t TRIM_PATH] input_file
positional arguments:
input_file The YANG file containing the entrypoint to the model to evaluate.
options:
-h, --help show this help message and exit
-v, --verbose Enables debug output
-V, --include-verification
Adds validation code, as well as the relevant YANG files, to the output model.
-S, --standalone Generated output model has no dependency on Pydantify.
All required code is copied into the output model.
-i INPUT_DIR, --input-dir INPUT_DIR, --path INPUT_DIR
The directory that contains the YANG input model.
Defaults to the input file's folder.
-o OUTPUT_DIR, --output-dir OUTPUT_DIR
The directory that should be used to store the output model. Defaults to "$CWD/out".
-t TRIM_PATH, --trim-path TRIM_PATH
Get only the specified branch of the whole tree.
NOTE: All unknown arguments will be passed to Pyang as-is and without guarantees.
For developers
Requirements:
- Visual Studio Code
- Python 3.10
- PDM package manager
Instructions:
Note: instructions with the same indentation are alternatives to eachother.
- Install
- dependencies through pdm (
pdm install
in project root)- into the local
__pypackages__
folder- to run your project as a python module
- locally (
python -m pydantify
) - in a docker container (see Dockerfile)
- locally (
- to be accessed by your IDE for intellisense (see .vscode/settings.json)
- to be accessed by your debug launch configuration (see .vscode/launch.json)
- to run your project as a python module
- into the local
- project through pip (see guide for users)
- dependencies through pdm (
- Build
- through pdm (
pdm build
)- into the local
dist
folder- to be published on pypi
- through twine (
twine upload dist/*
)
- through twine (
- to be published on pypi
- into the local
- through pdm (
Links relevant to project
Pydantic
Explanations
Yang models
Pyang
Thanks
- Dejan Jovicic and Dominic Walther, who laid the foundations of pydantify
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file pydantify-0.6.1.tar.gz
.
File metadata
- Download URL: pydantify-0.6.1.tar.gz
- Upload date:
- Size: 47.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: pdm/2.19.2 CPython/3.12.1 Linux/6.5.0-1025-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6ec545d8f8944b8260468538cdf2c60346dff11e87a7c5415c155b51acf33948 |
|
MD5 | 410dd11d50f1de0a2bee2a6b17b63a4e |
|
BLAKE2b-256 | 21dbcc52923900df6b5d174a5769319d07d1474a2941aab08988c14605e8f6c1 |
File details
Details for the file pydantify-0.6.1-py3-none-any.whl
.
File metadata
- Download URL: pydantify-0.6.1-py3-none-any.whl
- Upload date:
- Size: 21.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: pdm/2.19.2 CPython/3.12.1 Linux/6.5.0-1025-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 27e87a027d514be55bfeb1ef2638c5703a0ac1b7adb7d0fb79f204c6f23b922a |
|
MD5 | aad88729f92ad81cbbfa84bb0359e324 |
|
BLAKE2b-256 | c4abed766de0c924b3eca85e07b34e3dd040bba3f325215c1088c1c15ea2f0db |