Skip to main content

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:

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)
        • to be accessed by your IDE for intellisense (see .vscode/settings.json)
        • to be accessed by your debug launch configuration (see .vscode/launch.json)
    • project through pip (see guide for users)
  • Build
    • through pdm (pdm build)
      • into the local dist folder
        • to be published on pypi
          • through twine (twine upload dist/*)

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.5.1.tar.gz (51.7 kB view hashes)

Uploaded Source

Built Distribution

pydantify-0.5.1-py3-none-any.whl (25.1 kB view hashes)

Uploaded Python 3

Supported by

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