yangcore


Nameyangcore JSON
Version 0.0.67 PyPI version JSON
download
home_pagehttps://watsen.net/products/yangcore
SummaryYANGcore (a RESTCONF-based Application Server)
upload_time2025-01-22 16:32:30
maintainerNone
docs_urlNone
authorWatsen Networks
requires_python<3.13,>=3.11
licenseNon Production Use License
keywords ietf rfc 7950 yang 8040 restconf
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # YANGcore

YANGcore is a Python based application server having a [RESTCONF](https://tools.ietf.org/html/rfc8040)-based interface binding to a [SQL Alchemy](https://www.sqlalchemy.org)-based database backend.


## Installation

  `pip install yangcore`

## Overview

  - HTTPS or HTTP
  - RESTCONF HEAD, GET, POST, PUT, and DELETE work over entire tree.
  - Ordered-by user query parameters ('insert' and 'point') work.
  - [List Pagination](https://datatracker.ietf.org/doc/html/draft-ietf-netconf-list-pagination-rc) query parameters ('limit', 'offset', and 'direction') work.
  - The ./well-known/host-meta, RESTCONF root (i.e., {+restconf}), and YANG-library resources.
  - Tested using in-memory, file-base, MySQL and, a long time ago, AWS Aurora and Postgres.
  - TLS connection to backend RDBMS, with or w/o client certificate.
  - Logging and dynamic callouts for Audit log and Notifications log
  - Database-level transactions and concurrent access.
  - In-memory database support for ephemeral use-cases.
  - Lightweight and fast: single-threaded [Asynchronous I/O](https://docs.python.org/3/library/asyncio.html).
  - Python 3.11 and 3.12

## Motivation

RESTCONF is great REST API right out of the box.  The API is auto-generated off of a collection of
YANG modules, which defines the API contract.  YANG is the popular data modelling langauge defined
by the IETF ([RFC 7950](https://www.rfc-editor.org/rfc/rfc7950.html))and recommended by the Internet
Architecture Board.

As far as APIs go, RESTCONF ([RFC 8040](https://www.rfc-editor.org/rfc/rfc8040.html)) scores high on
both the [Richardson Maturity Model](https://martinfowler.com/articles/richardsonMaturityModel.html)
and the [Amundsen Maturity Model](http://amundsen.com/talks/2016-11-apistrat-wadm/index.html) models.
See [API Maturity](https://medium.com/good-api/api-maturity-fb25560151a3) for a description for what
makes for a good API.

Python is a popular programming language.  A Python implementation of a RESTCONF server
seems like it could be popular.  Searching for Python-based RESTCONF tooling found
[Jetconf](https://github.com/CZ-NIC/jetconf), but its been abandoned.

Thus there seemed to be an opportunity to work and YANGcore became something.

<!--
An API contract is key to success.  But popular API-modelling languages ([Swagger/OpenAI](https://swagger.io/specification/), [RAML](https://raml.org), [API Blueprint](https://apiblueprint.org), etc.) seem weak relative to [YANG](https://datatracker.ietf.org/doc/html/rfc8341) when coupled with [RESTCONF](https://tools.ietf.org/html/rfc8040).
-->

<!--
[RESTful JSON](https://restfuljson.org) and [Marshmallow](https://marshmallow.readthedocs.io/en/stable)
YANG is a better API modelling language than [JSON Schema](https://json-schema.org).
-->


## More Information

Please see the [documentation](https://watsen.net/docs) for more information.


            

Raw data

            {
    "_id": null,
    "home_page": "https://watsen.net/products/yangcore",
    "name": "yangcore",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<3.13,>=3.11",
    "maintainer_email": null,
    "keywords": "ietf, rfc, 7950, yang, 8040, restconf",
    "author": "Watsen Networks",
    "author_email": "info@watsen.net",
    "download_url": "https://files.pythonhosted.org/packages/58/05/59f7c83546cf48b7ae3d0caacff3c6f974e24a999edba08c5e84f0adf75f/yangcore-0.0.67.tar.gz",
    "platform": null,
    "description": "# YANGcore\n\nYANGcore is a Python based application server having a [RESTCONF](https://tools.ietf.org/html/rfc8040)-based interface binding to a [SQL Alchemy](https://www.sqlalchemy.org)-based database backend.\n\n\n## Installation\n\n  `pip install yangcore`\n\n## Overview\n\n  - HTTPS or HTTP\n  - RESTCONF HEAD, GET, POST, PUT, and DELETE work over entire tree.\n  - Ordered-by user query parameters ('insert' and 'point') work.\n  - [List Pagination](https://datatracker.ietf.org/doc/html/draft-ietf-netconf-list-pagination-rc) query parameters ('limit', 'offset', and 'direction') work.\n  - The ./well-known/host-meta, RESTCONF root (i.e., {+restconf}), and YANG-library resources.\n  - Tested using in-memory, file-base, MySQL and, a long time ago, AWS Aurora and Postgres.\n  - TLS connection to backend RDBMS, with or w/o client certificate.\n  - Logging and dynamic callouts for Audit log and Notifications log\n  - Database-level transactions and concurrent access.\n  - In-memory database support for ephemeral use-cases.\n  - Lightweight and fast: single-threaded [Asynchronous I/O](https://docs.python.org/3/library/asyncio.html).\n  - Python 3.11 and 3.12\n\n## Motivation\n\nRESTCONF is great REST API right out of the box.  The API is auto-generated off of a collection of\nYANG modules, which defines the API contract.  YANG is the popular data modelling langauge defined\nby the IETF ([RFC 7950](https://www.rfc-editor.org/rfc/rfc7950.html))and recommended by the Internet\nArchitecture Board.\n\nAs far as APIs go, RESTCONF ([RFC 8040](https://www.rfc-editor.org/rfc/rfc8040.html)) scores high on\nboth the [Richardson Maturity Model](https://martinfowler.com/articles/richardsonMaturityModel.html)\nand the [Amundsen Maturity Model](http://amundsen.com/talks/2016-11-apistrat-wadm/index.html) models.\nSee [API Maturity](https://medium.com/good-api/api-maturity-fb25560151a3) for a description for what\nmakes for a good API.\n\nPython is a popular programming language.  A Python implementation of a RESTCONF server\nseems like it could be popular.  Searching for Python-based RESTCONF tooling found\n[Jetconf](https://github.com/CZ-NIC/jetconf), but its been abandoned.\n\nThus there seemed to be an opportunity to work and YANGcore became something.\n\n<!--\nAn API contract is key to success.  But popular API-modelling languages ([Swagger/OpenAI](https://swagger.io/specification/), [RAML](https://raml.org), [API Blueprint](https://apiblueprint.org), etc.) seem weak relative to [YANG](https://datatracker.ietf.org/doc/html/rfc8341) when coupled with [RESTCONF](https://tools.ietf.org/html/rfc8040).\n-->\n\n<!--\n[RESTful JSON](https://restfuljson.org) and [Marshmallow](https://marshmallow.readthedocs.io/en/stable)\nYANG is a better API modelling language than [JSON Schema](https://json-schema.org).\n-->\n\n\n## More Information\n\nPlease see the [documentation](https://watsen.net/docs) for more information.\n\n",
    "bugtrack_url": null,
    "license": "Non Production Use License",
    "summary": "YANGcore (a RESTCONF-based Application Server)",
    "version": "0.0.67",
    "project_urls": {
        "Documentation": "https://watsen.net/docs/yangcore",
        "Homepage": "https://watsen.net/products/yangcore",
        "License": "https://watsen.net/sales/non-production-use.html"
    },
    "split_keywords": [
        "ietf",
        " rfc",
        " 7950",
        " yang",
        " 8040",
        " restconf"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2c184759e8ef4232d7f30923ada5971409460a6774de3f2199e36973c7ccd433",
                "md5": "86793eda2dafe0f2c41717d5efd5c48f",
                "sha256": "168690dce7948655a5446ed4da8da3a953f31a34263ce7e66044335879f87eaf"
            },
            "downloads": -1,
            "filename": "yangcore-0.0.67-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "86793eda2dafe0f2c41717d5efd5c48f",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<3.13,>=3.11",
            "size": 46610,
            "upload_time": "2025-01-22T16:32:29",
            "upload_time_iso_8601": "2025-01-22T16:32:29.116376Z",
            "url": "https://files.pythonhosted.org/packages/2c/18/4759e8ef4232d7f30923ada5971409460a6774de3f2199e36973c7ccd433/yangcore-0.0.67-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "580559f7c83546cf48b7ae3d0caacff3c6f974e24a999edba08c5e84f0adf75f",
                "md5": "6dfc757dd858fc816ed12366c5dec89d",
                "sha256": "7797ec38800dfa70db25d335d7dbaecb45a5e8adeccff0516247411e85ce043f"
            },
            "downloads": -1,
            "filename": "yangcore-0.0.67.tar.gz",
            "has_sig": false,
            "md5_digest": "6dfc757dd858fc816ed12366c5dec89d",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<3.13,>=3.11",
            "size": 44559,
            "upload_time": "2025-01-22T16:32:30",
            "upload_time_iso_8601": "2025-01-22T16:32:30.458474Z",
            "url": "https://files.pythonhosted.org/packages/58/05/59f7c83546cf48b7ae3d0caacff3c6f974e24a999edba08c5e84f0adf75f/yangcore-0.0.67.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-01-22 16:32:30",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "yangcore"
}
        
Elapsed time: 0.44704s