libyang

Python bindings for the libyang library

https://github.com/cesnet/libyang-python

Science Score: 13.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (12.2%) to scientific vocabulary
Last synced: 11 months ago · JSON representation

Repository

Python bindings for the libyang library

Basic Info
  • Host: GitHub
  • Owner: CESNET
  • License: mit
  • Language: Python
  • Default Branch: master
  • Homepage:
  • Size: 305 KB
Statistics
  • Stars: 60
  • Watchers: 9
  • Forks: 45
  • Open Issues: 21
  • Releases: 0
Created about 6 years ago · Last pushed about 2 years ago
Metadata Files
Readme License

README.rst

==============
libyang-python
==============

Python CFFI bindings to libyang__.

__ https://github.com/CESNET/libyang/

|pypi-project|__ |python-versions|__ |build-status|__ |license|__ |code-style|__

__ https://pypi.org/project/libyang
__ https://github.com/CESNET/libyang-python/actions
__ https://github.com/CESNET/libyang-python/actions
__ https://github.com/CESNET/libyang-python/blob/master/LICENSE
__ https://github.com/psf/black

.. |pypi-project| image:: https://img.shields.io/pypi/v/libyang.svg
.. |python-versions| image:: https://img.shields.io/pypi/pyversions/libyang.svg
.. |build-status| image:: https://github.com/CESNET/libyang-python/workflows/CI/badge.svg
.. |license| image:: https://img.shields.io/github/license/CESNET/libyang-python.svg
.. |code-style| image:: https://img.shields.io/badge/code%20style-black-000000.svg

Installation
============

::

   pip install libyang

This assumes ``libyang.so`` is installed in the system and that ``libyang.h`` is
available in the system include dirs.

You need the following system dependencies installed:

- Python development headers
- GCC
- FFI development headers

On a Debian/Ubuntu system::

   sudo apt-get install python3-dev gcc python3-cffi

Compatibility
-------------

The current version requires at least C `libyang 2.25`__.

The last version of the bindings that works with C `libyang 1.x`__ is v1.7.0__.

__ https://github.com/CESNET/libyang/commit/d2f1608b348f
__ https://github.com/CESNET/libyang/tree/libyang1
__ https://pypi.org/project/libyang/1.7.0/

Compilation Flags
-----------------

If libyang headers and libraries are installed in a non-standard location, you
can specify them with the ``LIBYANG_HEADERS`` and ``LIBYANG_LIBRARIES``
variables. Additionally, for finer control, you may use ``LIBYANG_EXTRA_CFLAGS``
and ``LIBYANG_EXTRA_LDFLAGS``::

   LIBYANG_HEADERS=/home/build/opt/ly/include \
   LIBYANG_LIBRARIES=/home/build/opt/ly/lib \
   LIBYANG_EXTRA_CFLAGS="-O3" \
   LIBYANG_EXTRA_LDFLAGS="-rpath=/opt/ly/lib" \
          pip install libyang

Examples
========

Schema Introspection
--------------------

.. code-block:: pycon

   >>> import libyang
   >>> ctx = libyang.Context('/usr/local/share/yang/modules')
   >>> module = ctx.load_module('ietf-system')
   >>> print(module)
   module: ietf-system
     +--rw system
     |  +--rw contact?          string
     |  +--rw hostname?         ietf-inet-types:domain-name
     |  +--rw location?         string
     |  +--rw clock
     |  |  +--rw (timezone)?
     |  |     +--:(timezone-utc-offset)
     |  |        +--rw timezone-utc-offset?   int16
     |  +--rw dns-resolver
     |     +--rw search*    ietf-inet-types:domain-name
     |     +--rw server* [name]
     |     |  +--rw name          string
     |     |  +--rw (transport)
     |     |     +--:(udp-and-tcp)
     |     |        +--rw udp-and-tcp
     |     |           +--rw address    ietf-inet-types:ip-address
     |     +--rw options
     |        +--rw timeout?    uint8 <5>
     |        +--rw attempts?   uint8 <2>
     +--ro system-state
        +--ro platform
        |  +--ro os-name?      string
        |  +--ro os-release?   string
        |  +--ro os-version?   string
        |  +--ro machine?      string
        +--ro clock
           +--ro current-datetime?   ietf-yang-types:date-and-time
           +--ro boot-datetime?      ietf-yang-types:date-and-time

     rpcs:
       +---x set-current-datetime
       |  +---- input
       |     +---w current-datetime    ietf-yang-types:date-and-time
       +---x system-restart
       +---x system-shutdown

   >>> xpath = '/ietf-system:system/ietf-system:dns-resolver/ietf-system:server'
   >>> dnsserver = next(ctx.find_path(xpath))
   >>> dnsserver
   
   >>> print(dnsserver.description())
   List of the DNS servers that the resolver should query.

   When the resolver is invoked by a calling application, it
   sends the query to the first name server in this list.  If
   no response has been received within 'timeout' seconds,
   the resolver continues with the next server in the list.
   If no response is received from any server, the resolver
   continues with the first server again.  When the resolver
   has traversed the list 'attempts' times without receiving
   any response, it gives up and returns an error to the
   calling application.

   Implementations MAY limit the number of entries in this
   list.
   >>> dnsserver.ordered()
   True
   >>> for node in dnsserver:
   ...     print(repr(node))
   ...
   
   
   >>> ctx.destroy()
   >>>

Data Tree
---------

.. code-block:: pycon

   >>> import libyang
   >>> ctx = libyang.Context()
   >>> module = ctx.parse_module_str('''
   ... module example {
   ...   namespace "urn:example";
   ...   prefix "ex";
   ...   container data {
   ...     list interface {
   ...       key name;
   ...       leaf name {
   ...         type string;
   ...       }
   ...       leaf address {
   ...         type string;
   ...       }
   ...     }
   ...     leaf hostname {
   ...       type string;
   ...     }
   ...   }
   ... }
   ... ''')
   >>> print(module.print_mem('tree'))
   module: example
     +--rw data
        +--rw interface* [name]
        |  +--rw name       string
        |  +--rw address?   string
        +--rw hostname?    string
   >>> node = module.parse_data_dict({
   ...     'data': {
   ...         'hostname': 'foobar',
   ...         'interface': [
   ...             {'name': 'eth0', 'address': '1.2.3.4/24'},
   ...             {'name': 'lo', 'address': '127.0.0.1'},
   ...         ],
   ...     },
   ... })
   >>> print(node.print_mem('xml', pretty=True))
   
     
       eth0
       
1.2.3.4/24
lo
127.0.0.1
foobar
>>> node.print_dict() {'data': {'interface': [{'name': 'eth0', 'address': '1.2.3.4/24'}, {'name': 'lo', 'address': '127.0.0.1'}], 'hostname': 'foobar'}} >>> node.free() >>> ctx.destroy() >>> See the ``tests`` folder for more examples. Contributing ============ This is an open source project and all contributions are welcome. Issues ------ Please create new issues for any bug you discover at https://github.com/CESNET/libyang-python/issues/new. It is not necessary to file a bug if you are preparing a patch. Pull Requests ------------- Here are the steps for submitting a change in the code base: #. Fork the repository: https://github.com/CESNET/libyang-python/fork #. Clone your own fork into your development machine:: git clone https://github.com//libyang-python #. Create a new branch named after what your are working on:: git checkout -b my-topic -t origin/master #. Edit the code and call ``make format`` to ensure your modifications comply with the `coding style`__. __ https://black.readthedocs.io/en/stable/the_black_code_style.html Your contribution must be licensed under the `MIT License`__ . At least one copyright notice is expected in new files. __ https://spdx.org/licenses/MIT.html #. If you are adding a new feature or fixing a bug, please consider adding or updating unit tests. #. Before creating commits, run ``make lint`` and ``make tests`` to check if your changes do not break anything. You can also run ``make`` which will run both. #. Once you are happy with your work, you can create a commit (or several commits). Follow these general rules: - Address only one issue/topic per commit. - Describe your changes in imperative mood, e.g. *"make xyzzy do frotz"* instead of *"[This patch] makes xyzzy do frotz"* or *"[I] changed xyzzy to do frotz"*, as if you are giving orders to the codebase to change its behaviour. - Limit the first line (title) of the commit message to 60 characters. - Use a short prefix for the commit title for readability with ``git log --oneline``. Do not use the `fix:` nor `feature:` prefixes. See recent commits for inspiration. - Only use lower case letters for the commit title except when quoting symbols or known acronyms. - Use the body of the commit message to actually explain what your patch does and why it is useful. Even if your patch is a one line fix, the description is not limited in length and may span over multiple paragraphs. Use proper English syntax, grammar and punctuation. - If you are fixing an issue, use appropriate ``Closes: `` or ``Fixes: `` trailers. - If you are fixing a regression introduced by another commit, add a ``Fixes: ("")`` trailer. - When in doubt, follow the format and layout of the recent existing commits. - The following trailers are accepted in commits. If you are using multiple trailers in a commit, it's preferred to also order them according to this list. * ``Closes: <URL>``: close the referenced issue or pull request. * ``Fixes: <SHA> ("<TITLE>")``: reference the commit that introduced a regression. * ``Link: <URL>``: any useful link to provide context for your commit. * ``Suggested-by`` * ``Requested-by`` * ``Reported-by`` * ``Co-authored-by`` * ``Tested-by`` * ``Reviewed-by`` * ``Acked-by`` * ``Signed-off-by``: Compulsory! There is a great reference for commit messages in the `Linux kernel documentation`__. __ https://www.kernel.org/doc/html/latest/process/submitting-patches.html#describe-your-changes IMPORTANT: you must sign-off your work using ``git commit --signoff``. Follow the `Linux kernel developer's certificate of origin`__ for more details. All contributions are made under the MIT license. If you do not want to disclose your real name, you may sign-off using a pseudonym. Here is an example:: Signed-off-by: Robin Jarry <robin@jarry.cc> __ https://www.kernel.org/doc/html/latest/process/submitting-patches.html#sign-your-work-the-developer-s-certificate-of-origin #. Push your topic branch in your forked repository:: git push origin my-topic You should get a message from Github explaining how to create a new pull request. #. Wait for a reviewer to merge your work. If minor adjustments are requested, use ``git commit --fixup $sha1`` to make it obvious what commit you are adjusting. If bigger changes are needed, make them in new separate commits. Once the reviewer is happy, please use ``git rebase --autosquash`` to amend the commits with their small fixups (if any), and ``git push --force`` on your topic branch. Thank you in advance for your contributions! </pre> </div> <div class="mb-4"> <h3 class="mb-3"> Owner </h3> <div class="card border-0 shadow-sm"> <div class="card-body"> <div class="row g-3"> <div class="col-md-6"> <ul class="list-unstyled mb-0"> <li class="mb-2"> <strong>Name:</strong> CESNET </li> <li class="mb-2"> <strong>Login:</strong> CESNET </li> <li class="mb-2"> <strong>Kind:</strong> <span class="badge rounded-pill bg-primary">organization</span> </li> <li class="mb-2"> <strong>Location:</strong> Prague, Czech Republic </li> </ul> </div> <div class="col-md-6"> <ul class="list-unstyled mb-0"> <li class="mb-2"> <strong>Website:</strong> <a class="text-decoration-none" href="http://www.cesnet.cz">http://www.cesnet.cz</a> </li> <li class="mb-2"> <strong>Repositories:</strong> 147 </li> <li class="mb-2"> <strong>Profile:</strong> <a class="text-decoration-none" href="https://github.com/CESNET">https://github.com/CESNET</a> </li> </ul> </div> </div> <div class="mt-3 pt-3 border-top"> <p class="text-muted mb-0">Czech Educational and Research Network</p> </div> </div> </div> </div> <div class="mb-4"> <h3 class="mb-3">GitHub Events</h3> <div class="card border-0 shadow-sm"> <div class="card-body"> <div class="row g-4"> <div class="col-md-6"> <h6 class="text-muted text-uppercase small mb-3">Total</h6> <ul class="list-unstyled mb-0"> <li class="mb-2"> <strong>Issues event:</strong> 8 </li> <li class="mb-2"> <strong>Watch event:</strong> 4 </li> <li class="mb-2"> <strong>Delete event:</strong> 1 </li> <li class="mb-2"> <strong>Issue comment event:</strong> 30 </li> <li class="mb-2"> <strong>Push event:</strong> 8 </li> <li class="mb-2"> <strong>Pull request event:</strong> 24 </li> <li class="mb-2"> <strong>Fork event:</strong> 6 </li> <li class="mb-2"> <strong>Create event:</strong> 3 </li> </ul> </div> <div class="col-md-6"> <h6 class="text-muted text-uppercase small mb-3">Last Year</h6> <ul class="list-unstyled mb-0"> <li class="mb-2"> <strong>Issues event:</strong> 8 </li> <li class="mb-2"> <strong>Watch event:</strong> 4 </li> <li class="mb-2"> <strong>Delete event:</strong> 1 </li> <li class="mb-2"> <strong>Issue comment event:</strong> 30 </li> <li class="mb-2"> <strong>Push event:</strong> 8 </li> <li class="mb-2"> <strong>Pull request event:</strong> 24 </li> <li class="mb-2"> <strong>Fork event:</strong> 6 </li> <li class="mb-2"> <strong>Create event:</strong> 3 </li> </ul> </div> </div> </div> </div> </div> <div class="mb-4"> <h3 class="mb-3"> <a target="_blank" class="text-decoration-none" href="https://commits.ecosyste.ms/repositories/lookup?url=https://github.com/cesnet/libyang-python">Committers</a> </h3> <p class="text-muted mb-3"> <small>Last synced: almost 3 years ago</small> </p> <div class="card border-0 shadow-sm mb-3"> <div class="card-body"> <div class="row g-4"> <div class="col-md-6"> <h6 class="text-muted text-uppercase small mb-3">All Time</h6> <ul class="list-unstyled mb-0"> <li class="mb-2"> <strong>Total Commits:</strong> 230 </li> <li class="mb-2"> <strong>Total Committers:</strong> 16 </li> <li class="mb-2"> <strong>Avg Commits per committer:</strong> 14.375 </li> <li class="mb-2"> <strong>Development Distribution Score (<a target="_blank" class="text-decoration-none" href="https://report.opensustain.tech/chapters/development-distribution-score.html">DDS</a>):</strong> 0.348 </li> </ul> </div> <div class="col-md-6"> <h6 class="text-muted text-uppercase small mb-3">Past Year</h6> <ul class="list-unstyled mb-0"> <li class="mb-2"> <strong>Commits:</strong> 22 </li> <li class="mb-2"> <strong>Committers:</strong> 5 </li> <li class="mb-2"> <strong>Avg Commits per committer:</strong> 4.4 </li> <li class="mb-2"> <strong>Development Distribution Score (<a target="_blank" class="text-decoration-none" href="https://report.opensustain.tech/chapters/development-distribution-score.html">DDS</a>):</strong> 0.545 </li> </ul> </div> </div> </div> </div> <div class="card border-0 shadow-sm mb-3"> <div class="card-header bg-white border-bottom"> <h6 class="mb-0">Top Committers</h6> </div> <div class="table-responsive"> <table class="table table-hover mb-0"> <thead> <tr> <th class="border-0">Name</th> <th class="border-0">Email</th> <th class="border-0">Commits</th> </tr> </thead> <tbody> <tr> <td>Robin Jarry</td> <td><small class="text-muted">r****n@j****c</small></td> <td>150</td> </tr> <tr> <td>Robin Jarry</td> <td><small class="text-muted">r****y@6****m</small></td> <td>32</td> </tr> <tr> <td>Samuel Gauthier</td> <td><small class="text-muted">s****r@6****m</small></td> <td>20</td> </tr> <tr> <td>Jean-Sébastien Bevilacqua</td> <td><small class="text-muted">j****a@6****m</small></td> <td>8</td> </tr> <tr> <td>Pepa Hajek</td> <td><small class="text-muted">h****a@g****m</small></td> <td>4</td> </tr> <tr> <td>Nicolas Morini</td> <td><small class="text-muted">n****i@g****m</small></td> <td>4</td> </tr> <tr> <td><a class="text-decoration-none" href="https://github.com/avazquezrd">Adrián Vázquez</a></td> <td><small class="text-muted">3****d</small></td> <td>2</td> </tr> <tr> <td>Renato Westphal</td> <td><small class="text-muted">r****o@o****g</small></td> <td>2</td> </tr> <tr> <td>Bill Stephens</td> <td><small class="text-muted">w****s@m****m</small></td> <td>1</td> </tr> <tr> <td>Sascha Bleidner</td> <td><small class="text-muted">s****r@d****t</small></td> <td>1</td> </tr> <tr> <td>focksor surooi</td> <td><small class="text-muted">f****r@o****m</small></td> <td>1</td> </tr> <tr> <td>Adrien Vasseur</td> <td><small class="text-muted">a****r@6****m</small></td> <td>1</td> </tr> <tr> <td>Annika Hannig</td> <td><small class="text-muted">a****a@h****c</small></td> <td>1</td> </tr> <tr> <td>Adam Allen</td> <td><small class="text-muted">a****t@a****m</small></td> <td>1</td> </tr> <tr> <td><a class="text-decoration-none" href="https://github.com/cristina-defran">cristina-defran</a></td> <td><small class="text-muted">3****n</small></td> <td>1</td> </tr> <tr> <td>Wataru Ishida</td> <td><small class="text-muted">w****d@g****m</small></td> <td>1</td> </tr> </tbody> </table> </div> </div> <div class="card border-0 shadow-sm"> <div class="card-header bg-white border-bottom"> <h6 class="mb-0">Committer Domains <small class="text-muted">(Top 20 + Academic)</small></h6> </div> <div class="card-body"> <div class="d-flex flex-wrap gap-2"> <span class="badge rounded-pill bg-light text-dark"> <a target="_blank" class="text-decoration-none text-dark" href="http://6wind.com">6wind.com</a>: 4 </span> <span class="badge rounded-pill bg-light text-dark"> <a target="_blank" class="text-decoration-none text-dark" href="http://asduk.com">asduk.com</a>: 1 </span> <span class="badge rounded-pill bg-light text-dark"> <a target="_blank" class="text-decoration-none text-dark" href="http://hannig.cc">hannig.cc</a>: 1 </span> <span class="badge rounded-pill bg-light text-dark"> <a target="_blank" class="text-decoration-none text-dark" href="http://de-cix.net">de-cix.net</a>: 1 </span> <span class="badge rounded-pill bg-light text-dark"> <a target="_blank" class="text-decoration-none text-dark" href="http://megaport.com">megaport.com</a>: 1 </span> <span class="badge rounded-pill bg-light text-dark"> <a target="_blank" class="text-decoration-none text-dark" href="http://opensourcerouting.org">opensourcerouting.org</a>: 1 </span> <span class="badge rounded-pill bg-light text-dark"> <a target="_blank" class="text-decoration-none text-dark" href="http://jarry.cc">jarry.cc</a>: 1 </span> </div> </div> </div> </div> <div class="mb-4"> <h3 class="mb-3"> <a target="_blank" class="text-decoration-none" href="https://issues.ecosyste.ms/repositories/lookup?url=https://github.com/cesnet/libyang-python">Issues and Pull Requests</a> </h3> <p class="text-muted mb-3"> <small>Last synced: 11 months ago</small> </p> <div class="card border-0 shadow-sm mb-3"> <div class="card-body"> <div class="row g-4"> <div class="col-md-6"> <h6 class="text-muted text-uppercase small mb-3">All Time</h6> <ul class="list-unstyled mb-0"> <li class="mb-2"> <strong>Total issues:</strong> 30 </li> <li class="mb-2"> <strong>Total pull requests:</strong> 104 </li> <li class="mb-2"> <strong>Average time to close issues:</strong> 3 months </li> <li class="mb-2"> <strong>Average time to close pull requests:</strong> 20 days </li> <li class="mb-2"> <strong>Total issue authors:</strong> 22 </li> <li class="mb-2"> <strong>Total pull request authors:</strong> 23 </li> <li class="mb-2"> <strong>Average comments per issue:</strong> 2.67 </li> <li class="mb-2"> <strong>Average comments per pull request:</strong> 1.35 </li> <li class="mb-2"> <strong>Merged pull requests:</strong> 48 </li> <li class="mb-2"> <strong>Bot issues:</strong> 0 </li> <li class="mb-2"> <strong>Bot pull requests:</strong> 0 </li> </ul> </div> <div class="col-md-6"> <h6 class="text-muted text-uppercase small mb-3">Past Year</h6> <ul class="list-unstyled mb-0"> <li class="mb-2"> <strong>Issues:</strong> 4 </li> <li class="mb-2"> <strong>Pull requests:</strong> 12 </li> <li class="mb-2"> <strong>Average time to close issues:</strong> N/A </li> <li class="mb-2"> <strong>Average time to close pull requests:</strong> 26 days </li> <li class="mb-2"> <strong>Issue authors:</strong> 4 </li> <li class="mb-2"> <strong>Pull request authors:</strong> 5 </li> <li class="mb-2"> <strong>Average comments per issue:</strong> 0.0 </li> <li class="mb-2"> <strong>Average comments per pull request:</strong> 0.33 </li> <li class="mb-2"> <strong>Merged pull requests:</strong> 6 </li> <li class="mb-2"> <strong>Bot issues:</strong> 0 </li> <li class="mb-2"> <strong>Bot pull requests:</strong> 0 </li> </ul> </div> </div> <div class="mt-3 pt-3 border-top"> <small class="text-muted"> <a target="_blank" class="text-decoration-none" href="https://issues.ecosyste.ms/repositories/lookup?url=https://github.com/cesnet/libyang-python">View more stats</a> </small> </div> </div> </div> <div class="card border-0 shadow-sm mb-3"> <div class="card-header bg-white border-bottom"> <h6 class="mb-0">Top Authors</h6> </div> <div class="card-body"> <div class="row g-4"> <div class="col-md-6"> <h6 class="text-muted text-uppercase small mb-3">Issue Authors</h6> <ul class="list-unstyled mb-0"> <li class="mb-2"> <strong>TribuneX</strong> <small class="text-muted ms-2">(4)</small> </li> <li class="mb-2"> <strong>wisotzky</strong> <small class="text-muted ms-2">(3)</small> </li> <li class="mb-2"> <strong>singularsyntax</strong> <small class="text-muted ms-2">(2)</small> </li> <li class="mb-2"> <strong>Unniboy</strong> <small class="text-muted ms-2">(2)</small> </li> <li class="mb-2"> <strong>li-pingmao</strong> <small class="text-muted ms-2">(2)</small> </li> <li class="mb-2"> <strong>tias77</strong> <small class="text-muted ms-2">(1)</small> </li> <li class="mb-2"> <strong>trentzhou</strong> <small class="text-muted ms-2">(1)</small> </li> <li class="mb-2"> <strong>Priyanshukeshri</strong> <small class="text-muted ms-2">(1)</small> </li> <li class="mb-2"> <strong>obernat</strong> <small class="text-muted ms-2">(1)</small> </li> <li class="mb-2"> <strong>precla</strong> <small class="text-muted ms-2">(1)</small> </li> <li class="mb-2"> <strong>smark28</strong> <small class="text-muted ms-2">(1)</small> </li> <li class="mb-2"> <strong>gwieser1234</strong> <small class="text-muted ms-2">(1)</small> </li> <li class="mb-2"> <strong>danielsvicente</strong> <small class="text-muted ms-2">(1)</small> </li> <li class="mb-2"> <strong>avazquezrd</strong> <small class="text-muted ms-2">(1)</small> </li> <li class="mb-2"> <strong>prasadpkorhale</strong> <small class="text-muted ms-2">(1)</small> </li> </ul> </div> <div class="col-md-6"> <h6 class="text-muted text-uppercase small mb-3">Pull Request Authors</h6> <ul class="list-unstyled mb-0"> <li class="mb-2"> <strong>steweg</strong> <small class="text-muted ms-2">(66)</small> </li> <li class="mb-2"> <strong>rjarry</strong> <small class="text-muted ms-2">(20)</small> </li> <li class="mb-2"> <strong>jeanseb6wind</strong> <small class="text-muted ms-2">(13)</small> </li> <li class="mb-2"> <strong>samuel-gauthier</strong> <small class="text-muted ms-2">(9)</small> </li> <li class="mb-2"> <strong>bradh352</strong> <small class="text-muted ms-2">(4)</small> </li> <li class="mb-2"> <strong>nvxf</strong> <small class="text-muted ms-2">(4)</small> </li> <li class="mb-2"> <strong>ishidawataru</strong> <small class="text-muted ms-2">(3)</small> </li> <li class="mb-2"> <strong>choppsv1</strong> <small class="text-muted ms-2">(3)</small> </li> <li class="mb-2"> <strong>smark28</strong> <small class="text-muted ms-2">(2)</small> </li> <li class="mb-2"> <strong>MatthieuTdO-6WIND</strong> <small class="text-muted ms-2">(2)</small> </li> <li class="mb-2"> <strong>pedrohdsouza</strong> <small class="text-muted ms-2">(2)</small> </li> <li class="mb-2"> <strong>kianmeng</strong> <small class="text-muted ms-2">(2)</small> </li> <li class="mb-2"> <strong>pepa-cz</strong> <small class="text-muted ms-2">(2)</small> </li> <li class="mb-2"> <strong>singularsyntax</strong> <small class="text-muted ms-2">(1)</small> </li> <li class="mb-2"> <strong>ariel-anieli</strong> <small class="text-muted ms-2">(1)</small> </li> </ul> </div> </div> </div> </div> <div class="card border-0 shadow-sm"> <div class="card-header bg-white border-bottom"> <h6 class="mb-0">Top Labels</h6> </div> <div class="card-body"> <div class="row g-4"> <div class="col-md-6"> <h6 class="text-muted text-uppercase small mb-3">Issue Labels</h6> <div class="d-flex flex-wrap gap-2"> <span class="badge rounded-pill bg-light text-dark"> enhancement (4) </span> <span class="badge rounded-pill bg-light text-dark"> documentation (1) </span> </div> </div> <div class="col-md-6"> <h6 class="text-muted text-uppercase small mb-3">Pull Request Labels</h6> <div class="d-flex flex-wrap gap-2"> <span class="badge rounded-pill bg-light text-dark"> enhancement (2) </span> <span class="badge rounded-pill bg-light text-dark"> bug (1) </span> </div> </div> </div> </div> </div> </div> <div class="mb-4"> <h3 class="mb-3">Packages</h3> <div class="card border-0 shadow-sm mb-3"> <div class="card-body"> <div class="row g-3"> <div class="col-md-6"> <ul class="list-unstyled mb-0"> <li class="mb-2"> <strong>Total packages:</strong> 1 </li> <li class="mb-2"> <strong>Total downloads:</strong> <ul class="list-unstyled ms-3 mt-1"> <li class="mb-1"> <span class="badge rounded-pill bg-primary">pypi</span> 2,983 <small class="text-muted">last-month</small> </li> </ul> </li> </ul> </div> <div class="col-md-6"> <ul class="list-unstyled mb-0"> <li class="mb-2"> <strong>Total dependent packages:</strong> 1 </li> <li class="mb-2"> <strong>Total dependent repositories:</strong> 6 </li> <li class="mb-2"> <strong>Total versions:</strong> 65 </li> <li class="mb-2"> <strong>Total maintainers:</strong> 2 </li> </ul> </div> </div> </div> </div> <div class="card border-0 shadow-sm mb-3"> <div class="card-body"> <h5 class="card-title mb-2"> <a class="text-decoration-none" href="https://pypi.org">pypi.org</a>: <a class="text-decoration-none" href="https://pypi.org/project/libyang/">libyang</a> </h5> <p class="text-muted mb-3"> CFFI bindings to libyang </p> <div class="row g-3 mb-3"> <div class="col-md-6"> <ul class="list-unstyled mb-0"> <li class="mb-2"> <strong>Homepage:</strong> <a class="text-decoration-none" href="https://github.com/CESNET/libyang-python">https://github.com/CESNET/libyang-python</a> </li> <li class="mb-2"> <strong>Documentation:</strong> <a class="text-decoration-none" href="https://libyang.readthedocs.io/">https://libyang.readthedocs.io/</a> </li> <li class="mb-2"> <strong>License:</strong> <span class="badge rounded-pill bg-light text-dark">MIT</span> </li> <li class="mb-2"> <strong>Latest release:</strong> 3.1.0 <br><small class="text-muted">published over 1 year ago</small> </li> </ul> </div> <div class="col-md-6"> <ul class="list-unstyled mb-0"> <li class="mb-2"> <strong>Versions:</strong> 65 </li> <li class="mb-2"> <strong>Dependent Packages:</strong> <a target="_blank" class="text-decoration-none" href="https://packages.ecosyste.ms/registries/pypi.org/packages/libyang/dependent_packages">1</a> </li> <li class="mb-2"> <strong>Dependent Repositories:</strong> <a target="_blank" class="text-decoration-none" href="https://repos.ecosyste.ms/usage/pypi/libyang">6</a> </li> <li class="mb-2"> <strong>Downloads:</strong> 2,983 <small class="text-muted">Last month</small> </li> </ul> </div> </div> <div class="mb-3 pt-3 border-top"> <h6 class="text-muted text-uppercase small mb-2">Rankings</h6> <div class="row g-2"> <div class="col-md-6"> <strong>Downloads:</strong> 4.0% </div> <div class="col-md-6"> <strong>Dependent packages count:</strong> 4.7% </div> <div class="col-md-6"> <strong>Dependent repos count:</strong> 6.0% </div> <div class="col-md-6"> <strong>Average:</strong> 7.4% </div> <div class="col-md-6"> <strong>Forks count:</strong> 8.2% </div> <div class="col-md-6"> <strong>Stargazers count:</strong> 14.2% </div> </div> </div> <div class="mb-3 pt-3 border-top"> <h6 class="text-muted text-uppercase small mb-2">Maintainers (2)</h6> <div class="d-flex flex-wrap gap-2"> <a class="badge rounded-pill bg-light text-dark text-decoration-none" href="https://pypi.org/user/rjarry/">rjarry</a> <a class="badge rounded-pill bg-light text-dark text-decoration-none" href="https://pypi.org/user/rkrejci/">rkrejci</a> </div> </div> <div class="mt-3 pt-3 border-top"> <small class="text-muted"> Last synced: 12 months ago </small> </div> </div> </div> </div> <hr/> <h2>Dependencies</h2> <div class="card mb-3"> <div class="card-header"> setup.py <span class='text-muted'> pypi </span> </div> <ul class="list-group list-group-flush"> <li class="list-group-item"> cffi <i>*</i> <small class='text-muted'> </small> </li> </ul> </div> <div class="card mb-3"> <div class="card-header"> .github/workflows/ci.yml <span class='text-muted'> actions </span> </div> <ul class="list-group list-group-flush"> <li class="list-group-item"> actions/cache <i>v3</i> <small class='text-muted'> composite </small> </li> <li class="list-group-item"> actions/checkout <i>v3</i> <small class='text-muted'> composite </small> </li> <li class="list-group-item"> actions/setup-python <i>v4</i> <small class='text-muted'> composite </small> </li> <li class="list-group-item"> codecov/codecov-action <i>v3</i> <small class='text-muted'> composite </small> </li> <li class="list-group-item"> pypa/gh-action-pypi-publish <i>release/v1</i> <small class='text-muted'> composite </small> </li> </ul> </div> <div class="card mb-3"> <div class="card-header"> pyproject.toml <span class='text-muted'> pypi </span> </div> <ul class="list-group list-group-flush"> </ul> </div> </div> </div> <footer class="footer dark-section"> <div class="container"> <div class="row"> <div class="col-md-8"> <a class="site-logo site-logo--white" href="/">Ecosyste.ms</a> <p class="small">Tools and open datasets to support, sustain, and secure critical digital infrastructure.</p> <p class="small"> Code: <a href="https://github.com/ecosyste-ms/documentation/blob/main/LICENSE">AGPL-3</a> — Data: <a target="_blank" href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0</a> </p> <p class='footer-icons'> <a target="_blank" href="https://github.com/ecosyste-ms"> <svg width="20" height="20" alt="ecosyste.ms on Github" class="bi bi-github" viewBox="0 0 16 16" fill="currentColor" version="1.1" aria-hidden="true"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27s1.36.09 2 .27c1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8"></path></svg> </a> <a target="_blank" href="https://mastodon.social/@ecosystems"> <svg width="20" height="20" alt="ecosyste.ms on Mastodon" class="bi bi-mastodon" viewBox="0 0 16 16" fill="currentColor" version="1.1" aria-hidden="true"><path d="M11.19 12.195c2.016-.24 3.77-1.475 3.99-2.603.348-1.778.32-4.339.32-4.339 0-3.47-2.286-4.488-2.286-4.488C12.062.238 10.083.017 8.027 0h-.05C5.92.017 3.942.238 2.79.765c0 0-2.285 1.017-2.285 4.488l-.002.662c-.004.64-.007 1.35.011 2.091.083 3.394.626 6.74 3.78 7.57 1.454.383 2.703.463 3.709.408 1.823-.1 2.847-.647 2.847-.647l-.06-1.317s-1.303.41-2.767.36c-1.45-.05-2.98-.156-3.215-1.928a4 4 0 0 1-.033-.496s1.424.346 3.228.428c1.103.05 2.137-.064 3.188-.189zm1.613-2.47H11.13v-4.08c0-.859-.364-1.295-1.091-1.295-.804 0-1.207.517-1.207 1.541v2.233H7.168V5.89c0-1.024-.403-1.541-1.207-1.541-.727 0-1.091.436-1.091 1.296v4.079H3.197V5.522q0-1.288.66-2.046c.456-.505 1.052-.764 1.793-.764.856 0 1.504.328 1.933.983L8 4.39l.417-.695c.429-.655 1.077-.983 1.934-.983.74 0 1.336.259 1.791.764q.662.757.661 2.046z"></path></svg> </a> <a target="_blank" href="https://opencollective.com/ecosystems"> <svg width="20" height="20" alt="ecosyste.ms on Open Collective" class="bi bi-opencollective" viewBox="0 0 16 16" fill="currentColor" version="1.1" aria-hidden="true"><path fill-opacity=".4" d="M12.995 8.195c0 .937-.312 1.912-.78 2.693l1.99 1.99c.976-1.327 1.6-2.966 1.6-4.683 0-1.795-.624-3.434-1.561-4.76l-2.068 2.028c.468.781.78 1.679.78 2.732z"></path> <path d="M8 13.151a4.995 4.995 0 1 1 0-9.99c1.015 0 1.951.273 2.732.82l1.95-2.03a7.805 7.805 0 1 0 .04 12.449l-1.951-2.03a5.07 5.07 0 0 1-2.732.781z"></path></svg> </a> </p> <div> <h3 class="mt-5 h6">Supported by</h3> <div class="row justify-content-start align-items-center g-4 mb-4 mb-lg-0"> <div class="col-auto"> <a href="https://www.schmidtfutures.org"> <img alt="Schmidt Futures" class="img-fluid p3" src="/assets/logo-schmidt-white-efa52873280decb2588e601323ef616a96a7891c254db5cdf0cca626ed85acc5.svg" width="267" height="20" /> </a> </div> <div class="col-auto"> <a href="https://oscollective.org"> <img alt="Open Source Collective" class="img-fluid p3" src="/assets/logo-osc-white-43e420a5624e755fe206869f9c3ff608e9476881d847007a020ea01d37e36dfa.png" width="210" height="56" /> </a> </div> </div> <p class="mt-3"><a href="https://opencollective.com/ecosystems" class="small">Become a sponsor</a></p> </div> </div> <div class="col-md-4"> <ul class="list-unstyled footer-links mt-3 small"> <li><strong><a href="https://ecosyste.ms">About</a></strong></li> <li><strong><a href="https://blog.ecosyste.ms">Blog</a></strong></li> <li><strong><a href="https://mastodon.social/@ecosystems">Contact</a></strong></li> <li><strong><a href="https://ecosyste.ms/privacy">Privacy</a></strong></li> <li><strong><a href="https://ecosyste.ms/terms">Terms</a></strong></li> <li><strong><a href="https://ecosystems.appsignal-status.com/">Status</a></strong></li> </ul> </div> </div> </div> </footer> </body> </html>