Metadata-Version: 2.4
Name: arrakis-schema
Version: 0.1.0
Summary: Schemas for the Arrakis API
Project-URL: Homepage, https://git.ligo.org/ngdd/arrakis-schema
Project-URL: Documentation, https://docs.ligo.org/ngdd/arrakis-schema
Project-URL: Issue Tracker, https://git.ligo.org/ngdd/arrakis-schema/issues
Project-URL: Source Code, https://git.ligo.org/ngdd/arrakis-schema.git
Author-email: Patrick Godwin <patrick.godwin@ligo.org>, Jameson Graef Rollins <jameson.rollins@ligo.org>
Maintainer-email: Patrick Godwin <patrick.godwin@ligo.org>
License-Expression: LGPL-3.0-or-later
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
Classifier: Natural Language :: English
Classifier: Operating System :: POSIX
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Scientific/Engineering :: Astronomy
Classifier: Topic :: Scientific/Engineering :: Physics
Requires-Python: >=3.10
Provides-Extra: dev
Requires-Dist: arrakis[docs]; extra == 'dev'
Requires-Dist: arrakis[lint]; extra == 'dev'
Requires-Dist: arrakis[test]; extra == 'dev'
Provides-Extra: docs
Requires-Dist: markdown-callouts>=0.2; extra == 'docs'
Requires-Dist: markdown-exec>=0.5; extra == 'docs'
Requires-Dist: mkdocs-coverage>=0.2; extra == 'docs'
Requires-Dist: mkdocs-gen-files>=0.3; extra == 'docs'
Requires-Dist: mkdocs-literate-nav>=0.4; extra == 'docs'
Requires-Dist: mkdocs-material-igwn; extra == 'docs'
Requires-Dist: mkdocs-section-index>=0.3; extra == 'docs'
Requires-Dist: mkdocs>=1.3; extra == 'docs'
Requires-Dist: mkdocstrings[python]; extra == 'docs'
Requires-Dist: toml>=0.10; extra == 'docs'
Provides-Extra: lint
Requires-Dist: mypy; extra == 'lint'
Requires-Dist: mypy-extensions; extra == 'lint'
Requires-Dist: pip; extra == 'lint'
Requires-Dist: ruff; extra == 'lint'
Provides-Extra: test
Requires-Dist: pytest; extra == 'test'
Requires-Dist: pytest-cov; extra == 'test'
Description-Content-Type: text/markdown

<h1 align="center">arrakis-schema</h1>

<p align="center">Schemas for the Arrakis API</p>

<p align="center">
</p>

---

## Endpoints

The Arrakis server responds to API requests corresponding to the four
main actions exposed by the client API:

* **stream**
* **describe**
* **find**
* **count**

as well as two actions which aid in publication:

* **partition**
* **publish**

All API requests are done in a two-stage approach by first sending an
Arrow Flight descriptor to the server, returning back a Flight info object
which contains the request and the server to contact, contained within
a Flight ticket. This ticket is then sent to receive back the expected
payload with a specific Arrow flight schema dependent on the request,
serialized in the Arrow 
![streaming format](https://arrow.apache.org/docs/format/Columnar.html#ipc-streaming-format).

The Flight descriptors sent to the server in the first stage are all
specified here as JSON packets which are UTF-8-encoded, using the command
variant of the Flight descriptor, which can be used to specify any
application-specific command.

## Schemas

The generic Flight descriptor schema is described within each endpoint in
`{endpoint}.json`. In addition, a generic descriptor specification for all
endpoints is described in `descriptor.json`.

## Usage


```python

from arrakis_schema import load_schema

schema = load_schema("count.json")

```
