Skip to content
forked from mbj4668/pyang

An extensible YANG validator and converter in python

License

Notifications You must be signed in to change notification settings

SeanCondon/pyang

This branch is 36 commits ahead of, 297 commits behind mbj4668/pyang:master.

Folders and files

NameName
Last commit message
Last commit date
Feb 21, 2020
Feb 21, 2020
Aug 29, 2018
Feb 11, 2020
Oct 10, 2019
Mar 4, 2020
Dec 10, 2014
Mar 4, 2020
Dec 21, 2014
Feb 16, 2011
Mar 6, 2019
Mar 4, 2020
Feb 3, 2020
Feb 11, 2020
Jan 14, 2020
Oct 11, 2018
Oct 18, 2019
Jun 14, 2017
Sep 30, 2016
Feb 11, 2020
Mar 4, 2020
Jan 14, 2020
Jun 11, 2019
Feb 3, 2020
Feb 3, 2020
Oct 5, 2015
Feb 18, 2020
Mar 28, 2019

Repository files navigation

pyang

News

Fork updated by Sean on 04-Mar-2020

Release Build Status Coverage Status

Overview

pyang is a YANG validator, transformator and code generator, written in python. It can be used to validate YANG modules for correctness, to transform YANG modules into other formats, and to generate code from the modules.

YANG (RFC 7950) is a data modeling language for NETCONF (RFC 6241), developed by the IETF NETMOD WG.

Documentation

See Documentation.

Installation

  • 1 PyPI

Pyang can be installed from PyPI:

# pip install pyang
  • 2 Source
  git clone https://github.com/mbj4668/pyang.git
  cd pyang
  python setup.py install
  (this might require root access)

To install in a different location, run:

  python setup.py install --prefix=/usr/local

If you do this, it is recommended to set the environment variable YANG_INSTALL to the prefix directory. This ensures that pyang will find standard YANG modules. In addition, make sure that PYTHONPATH is set to something as follows:

export PYTHONPATH=/usr/local/lib/python2.7/site-packages

or whatever version of python you are running.

Run locally without installing

export PATH=`pwd`/bin:$PATH
export MANPATH=`pwd`/man:$MANPATH
export PYTHONPATH=`pwd`:$PYTHONPATH
export YANG_MODPATH=`pwd`/modules:$YANG_MODPATH
export PYANG_XSLT_DIR=`pwd`/xslt
export PYANG_RNG_LIBDIR=`pwd`/schema

or:

source ./env.sh

Compatibility

pyang is compatible with the following IETF RFCs:

Features

  • Validate YANG modules.
  • Convert YANG modules to YIN, and YIN to YANG.
  • Translate YANG data models to DSDL schemas, which can be used for validating various XML instance documents. See InstanceValidation.
  • Translate YANG data models to XSD.
  • Generate UML diagrams from YANG models. See UMLOutput for an example.
  • Generate compact tree representation of YANG models for quick visualization. See TreeOutput for an example.
  • Generate a skeleton XML instance document from the data model.
  • Schema-aware translation of instance documents encoded in XML to JSON and vice-versa. See XmlJson.
  • Plugin framework for simple development of other outputs, such as code generation.

Usage

<<<<<<< HEAD

pyang -h

=======

Documentation

See Documentation.


Previous releases

2018-06-14 - Version 1.7.5 bis Sean Condon

  • Forked this from the original pyang on 5Feb18 because original did not want to accept the xsd plugin
  • Added in XSD Plugin as pyang/plugins/xsd.py and associated tests under tests/test_xsd
  • Added in JtoXX Plugin as pyang/plugins/jtoxx.py
  • Added in SQL plugin

2018-04-25 - Version 1.7.5 released

  • tree plugin updated to align with RFC 8340

  • better formatting of YANG modules with -f yang

  • reduced memory usage

  • ... and various other enhancements and bug fixes, see CHANGES.

2018-02-23 - Version 1.7.4 released

  • tree plugin updated to align with draft-ietf-netmod-yang-tree-diagrams-05

  • ... and various other enhancements and bug fixes, see CHANGES.

2017-06-27 - Version 1.7.3 released

  • Handle multiple rc:yang-data statements. This bug caused validation of ietf-restconf, or any module that imported ietf-restconf, to fail.

2017-06-14 - Version 1.7.2 released

  • Added support for external plugins, using setuptools entry_points, with the entry point "pyang.plugin".

  • ... and various other enhancements and bug fixes, see CHANGES.

d24041142619ede866656e103af969b45fecbb0f

or

man pyang

Code structure

  • bin/ Executable scripts.

  • pyang/ Contains the pyang library code.

  • pyang/init.py Initialization code for the pyang library. Defines the Context and Repository classes.

  • pyang/syntax.py Generic syntax checking for YANG and YIN statements. Defines regular expressions for argument checking of core statements.

  • pyang/grammar.py Generic grammar for YANG and YIN. Defines chk_module_statements() which validates a parse tree according to the grammar.

  • pyang/statements.py Defines the generic Statement class and all validation code.

  • pyang/yang_parser.py YANG tokenizer and parser.

  • pyang/yin_parser.py YIN parser. Uses the expat library for XML parsing.

  • pyang/types.py Contains code for checking built-in types.

  • pyang/plugin.py Plugin API. Defines the class PyangPlugin which all plugins inherits from. All output handlers are written as plugins.

  • pyang/plugins/ Directory where plugins can be installed. All plugins in this directory are automatically initialized when the library is initialized.

  • pyang/translators/ Contains output plugins for YANG, YIN, XSD, and DSDL translation.

  • xslt Contains XSLT style sheets for generating RELAX NG, Schematron and DSRL schemas and validating instance documents. Also included is the free implementation of ISO Schematron by Rick Jelliffe from http://www.schematron.com/ (files iso_schematron_skeleton_for_xslt1.xsl, iso_abstract_expand.xsl and iso_svrl_for_xslt1.xsl).

  • schema Contains RELAX NG schemas and pattern libraries.

About

An extensible YANG validator and converter in python

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 78.8%
  • XSLT 17.3%
  • Makefile 2.4%
  • Shell 1.5%