Metadata-Version: 2.1
Name: zms-client
Version: 0.1.0
Summary: Provides an OpenZMS Python 3 API client library and CLI tool.
Author-email: "David M. Johnson" <johnsond@flux.utah.edu>, Leigh Stoller <stoller@flux.utah.edu>, Bo Pearce <bo.pearce@colorado.edu>
Project-URL: Homepage, https://openzms.net
Project-URL: Source, https://gitlab.flux.utah.edu/openzms/zms-client-py.git
Project-URL: Issues, https://gitlab.flux.utah.edu/openzms/zms-client-py/-/issues
Project-URL: Documentation, https://openzms.net/guide/overview/
Keywords: OpenZMS,ZMS,zone management system,RDZ,radio dynamic zone,spectrum sharing,spectrum management,software defined radio
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Software Development
Classifier: Topic :: Software Development :: Libraries
Requires-Python: >=3.8
Description-Content-Type: text/x-rst
Requires-Dist: attrs >=21.3.0
Requires-Dist: httpx <0.28.0,>=0.20.0
Requires-Dist: python-dateutil >=2.8.0
Requires-Dist: typing-extensions
Requires-Dist: websockets >=10
Provides-Extra: bindings
Requires-Dist: openapi-python-client @ git+https://gitlab.flux.utah.edu/openzms/openapi-python-client.git@openzms#egg=427f6c93 ; extra == 'bindings'
Provides-Extra: cli
Requires-Dist: click <8.2.0 ; extra == 'cli'
Requires-Dist: griffe >=0.40 ; extra == 'cli'
Requires-Dist: typer ; extra == 'cli'
Provides-Extra: cli-slim
Requires-Dist: click <8.2.0 ; extra == 'cli-slim'
Requires-Dist: griffe >=0.40 ; extra == 'cli-slim'
Requires-Dist: typer-slim ; extra == 'cli-slim'
Provides-Extra: dev
Requires-Dist: build ; extra == 'dev'
Requires-Dist: setuptools ; extra == 'dev'
Requires-Dist: setuptools-scm ; extra == 'dev'
Requires-Dist: sphinx ; extra == 'dev'
Requires-Dist: sphinx-autoapi ; extra == 'dev'
Requires-Dist: sphinx-autodoc-typehints ; extra == 'dev'
Requires-Dist: wheel ; extra == 'dev'
Provides-Extra: gps
Requires-Dist: gpxpy ; extra == 'gps'

<!--
SPDX-FileCopyrightText: 2024-present University of Utah <info@openzms.org>
SPDX-License-Identifier: Apache-2.0
-->

# zms-client-py (OpenZMS Python 3 API client library and CLI tools)

The [OpenZMS software](https://gitlab.flux.utah.edu/openzms) is a prototype
automatic spectrum-sharing and -management system for radio dynamic zones.
OpenZMS provides mechanisms to share electromagnetic (radio-frequency)
spectrum between experimental or test systems and existing spectrum users,
and between multiple experimental systems.  We are building and deploying
OpenZMS within the context of the POWDER wireless testbed in Salt Lake City,
Utah, part of the NSF-sponsored Platforms for Advanced Wireless Research
program, to create [POWDER-RDZ](https://rdz.powderwireless.net).

This repository contains a OpenZMS Python 3 API client library based on API
bindings (models and API function wrappers) automatically generated from
each OpenZMS service's `openapi` specification.  Bindings are generated using
[our fork](https://gitlab.flux.utah.edu/openzms/openapi-python-client) of
`openapi-python-client`, which has additional support for some of the
`openapi` extension attributes we provide to help generators create better
code.

This repository also provides a [`typer`](https://typer.tiangolo.com/)-based
dynamically-generated CLI tool.  On invocation, the CLI tool scans a subset
of the generated API function wrappers and uses a combination of `typer` and
`click` to wrap them into a CLI tool that exposes each API endpoint as a
subcommand.

Autogenerated API documentation is available at
http://openzms.pages.flux.utah.edu/zms-client-py .


## Installing from source

Most likely you will want to install this library and its tools with
`virtualenv` (drop the `'[cli]'` if you don't require the CLI):

```
python -m venv path/to/your/venv
. path/to/your/venv/bin/activate
pip install .'[cli]'
```

Then you can run `zmsclient-cli --help`, or use the library.  Leave the
`virtualenv` via `deactivate`.

You can also install locally with `pip`:

```
pip install --user .'[cli]'
```

## Using via prebuilt Docker images

If you simply want to run the `zmsclient-cli` or the associated command-line
tools, you can use the
[CI-built Docker images](https://gitlab.flux.utah.edu/openzms/zms-client-py/container_registry/52):

```
docker run --rm -it gitlab.flux.utah.edu:4567/openzms/zms-client-py/zmsclient:dev zmsclient-cli --help
```

You can use the `docker/Dockerfile` as a base or starting point for
including `zms-client-py` in your own Python package or app.


## Install from Ubuntu Packages

We provide packages for Ubuntu 22 and 24 at
https://repos.emulab.net/openzms-testing/ubuntu .  These are CI-built via
https://gitlab.flux.utah.edu/openzms/zms-client-py-deb .
