Metadata-Version: 2.5
Name: periplo
Version: 0.1.0
Summary: Read-only SQL API for authorized Delta Lake tables, the backend of the Periplo console
Project-URL: Homepage, https://github.com/MassiveDataScope/periplo
Project-URL: Documentation, https://massivedatascope.github.io/periplo/
Project-URL: Source, https://github.com/MassiveDataScope/periplo
Project-URL: Issues, https://github.com/MassiveDataScope/periplo/issues
Project-URL: Changelog, https://github.com/MassiveDataScope/periplo/releases
Author: MassiveDataScope
License-Expression: AGPL-3.0-only
License-File: LICENSE
Keywords: catalog,data-lake,datafusion,delta-lake,fastapi,sql
Classifier: Development Status :: 3 - Alpha
Classifier: Framework :: FastAPI
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Database :: Front-Ends
Classifier: Typing :: Typed
Requires-Python: <3.15,>=3.12
Requires-Dist: croniter
Requires-Dist: datafusion
Requires-Dist: deltalake==1.6.6
Requires-Dist: httpx2>=2.13.0
Requires-Dist: loom-kernel[config,rest]>=2.5.0
Requires-Dist: pyarrow
Requires-Dist: pyyaml>=6.0.3
Requires-Dist: sqlglot
Requires-Dist: uvicorn>=0.53.0
Description-Content-Type: text/markdown

# periplo

The API behind [Periplo](https://github.com/MassiveDataScope/periplo), an open-source
console for Delta Lake data lakes: a catalog of the tables it is allowed to see and a
read-only SQL endpoint over them, built on FastAPI and DataFusion.

This distribution contains only the Python package. The web console and the all-in-one
container image are published from the same repository.

## Install

```sh
pip install periplo
```

Python 3.12, 3.13 or 3.14 is required.

## Run

```sh
PERIPLO_SOURCES_FILE=sources.yaml uvicorn --factory periplo.bootstrap:create_app
```

Every `PERIPLO_*` setting is documented in `periplo.settings`.

## Embed

`create_app` is the composition root. A product built on Periplo passes its own
implementations of the public ports through `Extensions`; any field left as `None` keeps
the open, single-tenant default.

```python
from periplo.bootstrap import create_app
from periplo.extensions import Extensions


def app():
    return create_app(extensions=Extensions(authenticator=MyAuthenticator()))
```

`Extensions` accepts an `authenticator`, `tenants`, `authorizer`, `audit` and
`orchestrators`. Nothing is discovered implicitly: only what you pass in runs.

## Documentation

<https://massivedatascope.github.io/periplo/>

## License

[AGPL-3.0-only](https://github.com/MassiveDataScope/periplo/blob/HEAD/LICENSE).
