Skip to main content

Makes network automation pydantic.

Project description

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".
  -f OUTPUT_FILE, --output-file OUTPUT_FILE
                        The name of the output file. Defaults to "out.py".
  -t TRIM_PATH, --trim-path TRIM_PATH
                        Get only the specified branch of the whole tree.
  -j, --json-schema     Output JSON schema instead of Pydantic models.
  -d, --data-type {config,state}
                        Limit output to config or state only. Default is config and state combined.
  -n, --strip-namespace
                        Strip the YANG namespace from the output model aliases.

NOTE: All unknown arguments will be passed to Pyang as-is and without guarantees.

For developers

Requirements

  • Visual Studio Code
  • Python 3.10
  • UV

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

pydantify-0.9.0.tar.gz (14.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pydantify-0.9.0-py3-none-any.whl (20.1 kB view details)

Uploaded Python 3

File details

Details for the file pydantify-0.9.0.tar.gz.

File metadata

  • Download URL: pydantify-0.9.0.tar.gz
  • Upload date:
  • Size: 14.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pydantify-0.9.0.tar.gz
Algorithm Hash digest
SHA256 91c3bb2a221da6923b4f48d539f542c16ec92dacf9f15c0d7a002f2b858421d0
MD5 30a53407469c7176e929f0588607f605
BLAKE2b-256 ba5a01a6023c68afabeae02e0a24c69b3aa729c6851b3336c6f8308bba565e14

See more details on using hashes here.

File details

Details for the file pydantify-0.9.0-py3-none-any.whl.

File metadata

  • Download URL: pydantify-0.9.0-py3-none-any.whl
  • Upload date:
  • Size: 20.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pydantify-0.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 207895048dccc4152dbeac8260ce3d2776797bab57a38fba556dc1be7ba2c432
MD5 506110d3ebc02bd9652f6cfe914ae640
BLAKE2b-256 d24334e4adc95202342b91462d72fc796e74d3c669b316bc2dc7ef38bb5c08c9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page