Skip to main content

FABRIC Python Client Library and CLI Extensions

Project description

fabrictestbed-extensions

pypi-badge api-docs-badge

This repository contains implementation of a Python API, otherwise known as "FABlib", for intereacting with FABRIC testbed.

Installing FABlib

You can install released versions of FABlib from PyPI:

$ pip install fabrictestbed-extensions

If you need the current development version of FABlib, install it from the git repository:

$ pip install git+https://github.com/fabric-testbed/fabrictestbed-extensions@main

Note that installing FABlib using either methods will also install a number of dependencies, so you might want to install FABlib in a virtual environment. Your favorite tool for managing virtual environments (venv, virtualenv, or virtualenvwrapper) should work. FABRIC team tends to favor virtualenvwrapper.

Using FABlib

Once installed, you can use FABlib in your Python projects:

from fabrictestbed_extensions.fablib.fablib import FablibManager as fablib_manager

try:
    fablib = fablib_manager()
    fablib.show_config()
except Exception as e:
    print(f"Exception: {e}")

Your first encounter with FABlib however might be through FABRIC project's JupyterHub instance. You will be presented with many examples on FABlib usage when you log in there. The notebook sources can be found on GitHub as well.

Since FABlib 1.4, API docs can be found here. Older API docs are here.

If you want to interact with FABRIC from Jupyter installed on your computer, see: Install the FABRIC Python API.

Contributing to FABlib

Contributions to FABlib are made with GitHub Pull Requests. When you submit a pull request, some tests will run against it:

  • Code formatting will be checked using black and isort. Be sure that your code is formatted with these tools.
  • Unit tests will be run.
  • Packages will be built.
  • CHANGELOG.md will be checked for updates.

Testing FABlib

FABlib currently has a modest set of unit and integration tests, under the top-level tests directory. Unit tests can be run like so, using tox:

$ pip install -e .[test]
$ tox

Integration tests can be run like so:

$ tox -e integration

Tox attempts to run tests in an isolated virtual environment. If you want to run some tests directly using pytest, that is possible too:

$ pytest -s tests/integration/test_hello_fabric.py

Documenting FABlib

FABlib uses Sphinx to generate API documentation from Python docstrings. Publishing them at Read the Docs is a mostly automated process.

When working on API documentation on your local setup, in order to preview the generated HTML, run:

$ tox -e docs

Resulting files can be found in docs/build/html/.

Packaging FABlib

FABlib uses flit as the build backend. To build source and wheel packages, do this:

$ pip install flit
$ flit build

While using flit as the build backend, continuing to use build as the build frontend should work too:

$ pip install build
$ python -m build

Releasing FABlib

The "publish" workflow automates building packages and publishing them on PyPI. In order to publish a new FABlib version on PyPI, follow these steps:

  1. Bump up version in top-level __init__.py.

  2. Update changelog.

  3. Start a PR with these changes, and get it merged.

  4. Tag the release, and push the tag to GitHub:

    $ git tag --sign --message="Great set of features" relX.Y.Z <ref>
    $ git push <origin> --tags relX.Y.Z
    

This should trigger the publish workflow that will: (1) run unit tests, (2) build FABlib sdist and wheel packages, (3) publish the packages on PyPI, and (4) create a GitHub release.

Manual steps

In order to "manually" upload FABlib packages (such as in the case of release candidate versions), bump up the version string in the appropriate place, and then do:

$ flit publish

Continuing to use twine to publish packages is an option too:

$ twine upload dist/*

For details about publishing to PyPI, see flit documentation about package uploads.

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distribution

fabrictestbed_extensions-1.5.6rc7.tar.gz (391.3 kB view details)

Uploaded Source

Built Distribution

fabrictestbed_extensions-1.5.6rc7-py3-none-any.whl (369.7 kB view details)

Uploaded Python 3

File details

Details for the file fabrictestbed_extensions-1.5.6rc7.tar.gz.

File metadata

File hashes

Hashes for fabrictestbed_extensions-1.5.6rc7.tar.gz
Algorithm Hash digest
SHA256 ed7e44130bdc731ef58984c3f6a7a46f101715afa3e50ed83ecf43fe9f054188
MD5 34a712e16925104965a0bce2e2b8fe11
BLAKE2b-256 0b290120b517cdf633168d77083873b89768a1d88c7862a5dd89f0fcf11abe19

See more details on using hashes here.

File details

Details for the file fabrictestbed_extensions-1.5.6rc7-py3-none-any.whl.

File metadata

File hashes

Hashes for fabrictestbed_extensions-1.5.6rc7-py3-none-any.whl
Algorithm Hash digest
SHA256 1ddda7c4a3fcdf0e7d18141092212e9a50e65e25da61c3b966eedefe8632787f
MD5 08d0ad7866d0bfd2fb5c9830d285eb52
BLAKE2b-256 b8d63f3264af134c3ee93ce73a75fd1c2840e2b776692436ee8437a299c12e3a

See more details on using hashes here.

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