Metadata-Version: 2.4
Name: safir
Version: 15.1.0
Summary: The Rubin Observatory SQuaRE framework for FastAPI services.
Author-email: "Association of Universities for Research in Astronomy, Inc. (AURA)" <sqre-admin@lists.lsst.org>
License-Expression: MIT
Project-URL: Homepage, https://safir.lsst.io
Project-URL: Source, https://github.com/lsst-sqre/safir
Project-URL: Change log, https://safir.lsst.io/changelog.html
Project-URL: Issue tracker, https://github.com/lsst-sqre/safir/issues
Keywords: rubin,lsst
Classifier: Development Status :: 5 - Production/Stable
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Intended Audience :: Developers
Classifier: Natural Language :: English
Classifier: Operating System :: POSIX
Classifier: Typing :: Typed
Requires-Python: >=3.12
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: click<9,>=8.2.0
Requires-Dist: cryptography<49
Requires-Dist: fastapi<1,>=0.100
Requires-Dist: gidgethub<6
Requires-Dist: httpx<1,>=0.20.0
Requires-Dist: pydantic<3,>2
Requires-Dist: pydantic-core<3
Requires-Dist: pydantic-settings!=2.6.0,<3
Requires-Dist: safir-logging
Requires-Dist: sentry-sdk<3,>=2
Requires-Dist: starlette<2
Requires-Dist: structlog>=21.2.0
Provides-Extra: arq
Requires-Dist: safir-arq>15.0.0; extra == "arq"
Provides-Extra: db
Requires-Dist: alembic[tz]<2; extra == "db"
Requires-Dist: asyncpg<1; extra == "db"
Requires-Dist: sqlalchemy[asyncio]<3,>=2; extra == "db"
Provides-Extra: gcs
Requires-Dist: google-auth<3,>2; extra == "gcs"
Requires-Dist: google-cloud-storage<4,>3; extra == "gcs"
Provides-Extra: kafka
Requires-Dist: aiokafka<0.15,>=0.13; extra == "kafka"
Requires-Dist: dataclasses-avroschema<1,>=0.65.7; extra == "kafka"
Requires-Dist: faststream<0.7,>=0.6.6; extra == "kafka"
Requires-Dist: python-schema-registry-client<3,>=2.6; extra == "kafka"
Provides-Extra: kubernetes
Requires-Dist: kubernetes-asyncio<36; extra == "kubernetes"
Provides-Extra: redis
Requires-Dist: redis<8,>4.5.2; extra == "redis"
Provides-Extra: testcontainers
Requires-Dist: testcontainers>=4.13; extra == "testcontainers"
Provides-Extra: uws
Requires-Dist: google-auth<3,>2; extra == "uws"
Requires-Dist: google-cloud-storage<4,>3; extra == "uws"
Requires-Dist: jinja2<4; extra == "uws"
Requires-Dist: python-multipart; extra == "uws"
Requires-Dist: safir-arq>10.2.0; extra == "uws"
Requires-Dist: vo-models<1,>=0.4.1; extra == "uws"
Dynamic: license-file

# Safir

Safir is Rubin Observatory's library for building [FastAPI](https://fastapi.tiangolo.com/) services for the [Phalanx](https://phalanx.lsst.io) Kubernetes clusters, including the Rubin Science Platform and Roundtable.
Safir is developed, maintained, and field tested by the SQuaRE team.

Safir is available from [PyPI](https://pypi.org/project/safir/):

```sh
pip install safir
```

The best way to create a new FastAPI/Safir service is with the [`fastapi_safir_app` template](https://github.com/lsst/templates/blob/main/project_templates/fastapi_safir_app).

Read more about Safir at https://safir.lsst.io.

## Developing Safir

See the [Safir development documentation](https://safir.lsst.io/dev/development.html).
