Skip to main content

Sysrepo CFFI bindings

Project description

Python CFFI bindings to sysrepo.

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


pip install sysrepo

This assumes that is installed on the system and that sysrepo.h is available in the system include dirs.

Since sysrepo depends on libyang, the latter needs to be installed on the system as well.

You need the following system dependencies installed:

  • Python development headers
  • GCC
  • Python CFFI module

On a Debian/Ubuntu system:

apt-get install python3-dev gcc python3-cffi

Compilation Flags

If sysrepo headers and libraries are installed in a non-standard location, you can export the SYSREPO_HEADERS and SYSREPO_LIBRARIES variables. Additionally, for finer control, you may use SYSREPO_EXTRA_CFLAGS and SYSREPO_EXTRA_LDFLAGS:

SYSREPO_HEADERS=/home/build/opt/sr/include \
SYSREPO_LIBRARIES=/home/build/opt/sr/lib \
SYSREPO_EXTRA_LDFLAGS="-Wl,-rpath=/opt/sr/lib" \
        pip install sysrepo


This Python package depends on libyang CFFI bindings, if it is not installed yet and libyang headers and libraries are also installed in a non-standard location, you must export additional variables. See the “Compilation Flags” section here:


Module Config Replacement

with sysrepo.SysrepoConnection() as conn:
    with conn.start_session() as sess:
        sess.replace_config({"system": {"hostname": "foobar"}}, "my-module")

Operational Data Request

with sysrepo.SysrepoConnection() as conn:
    with conn.start_session("operational") as sess:
        data = sess.get_data("/my-module:status")

RPC Call

with sysrepo.SysrepoConnection() as conn:
    with conn.start_session() as sess:
        out = sess.rpc_send({"my-rpc": {"input-param": 42}}, "my-module")


with sysrepo.SysrepoConnection() as conn:
    with conn.start_session() as sess:
        sess.subscribe_module_change("my-module", None, module_change_cb)
            "my-module", "/my-module:status", oper_data_cb)
        sess.subscribe_rpc_call("/my-module:my-rpc", my_rpc_cb)

See the examples/ folder for more details.


This is an open source project and all contributions are welcome.


Please create new issues for any bug you discover at 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:

  1. Fork the repository:

  2. Clone your own fork into your development machine:

    git clone<you>/libyang-python
  3. Create a new branch named after what your are working on:

    git checkout -b my-topic
  4. Edit the code and call make format to ensure your modifications comply with the coding style.

    Your contribution must be licensed under the BSD 3-Clause “New” or “Revised” License . At least one copyright notice is expected in new files.

  5. If you are adding a new feature or fixing a bug, please consider adding or updating unit tests.

  6. 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.

  7. Create commits by following these simple guidelines:

    • Solve only one problem per commit.

    • Use a short (less than 72 characters) title on the first line followed by an blank line and a more thorough description body.

    • Wrap the body of the commit message should be wrapped at 72 characters too unless it breaks long URLs or code examples.

    • If the commit fixes a Github issue, include the following line:

      Fixes: #NNNN


  8. 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.

  9. 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!

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for sysrepo, version 0.1.0
Filename, size File type Python version Upload date Hashes
Filename, size sysrepo-0.1.0.tar.gz (28.1 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page