.gitignore
.pre-commit-config.yaml
CHANGELOG.md
LICENSE
Makefile
README.md
pyproject.toml
tox.ini
.github/CODE_OF_CONDUCT
.github/CONTRIBUTING.md
.github/dependabot.yml
.github/workflows/ci.yaml
.github/workflows/periodic-ci.yaml
changelog.d/_template.md.jinja
docs/_rst_epilog.rst
docs/api.rst
docs/changelog.md
docs/conf.py
docs/documenteer.toml
docs/index.rst
docs/dev/development.rst
docs/dev/index.rst
docs/dev/release.rst
docs/user-guide/arq.rst
docs/user-guide/asyncio-queue.rst
docs/user-guide/click.rst
docs/user-guide/database.rst
docs/user-guide/datetime.rst
docs/user-guide/fastapi-errors.rst
docs/user-guide/gafaelfawr.rst
docs/user-guide/gcs.rst
docs/user-guide/http-client.rst
docs/user-guide/index.rst
docs/user-guide/ivoa.rst
docs/user-guide/kubernetes.rst
docs/user-guide/logging.rst
docs/user-guide/pydantic-redis.rst
docs/user-guide/pydantic.rst
docs/user-guide/set-up-from-template.rst
docs/user-guide/slack-webhook.rst
docs/user-guide/uvicorn.rst
docs/user-guide/x-forwarded.rst
docs/user-guide/github-apps/api-resources.rst
docs/user-guide/github-apps/create-a-github-client.rst
docs/user-guide/github-apps/handling-webhooks.rst
docs/user-guide/github-apps/index.rst
docs/user-guide/github-apps/webhook-models.rst
src/safir/__init__.py
src/safir/arq.py
src/safir/asyncio.py
src/safir/click.py
src/safir/database.py
src/safir/datetime.py
src/safir/fastapi.py
src/safir/gcs.py
src/safir/kubernetes.py
src/safir/logging.py
src/safir/metadata.py
src/safir/models.py
src/safir/py.typed
src/safir/pydantic.py
src/safir/redis.py
src/safir.egg-info/PKG-INFO
src/safir.egg-info/SOURCES.txt
src/safir.egg-info/dependency_links.txt
src/safir.egg-info/requires.txt
src/safir.egg-info/top_level.txt
src/safir/dependencies/__init__.py
src/safir/dependencies/arq.py
src/safir/dependencies/db_session.py
src/safir/dependencies/gafaelfawr.py
src/safir/dependencies/http_client.py
src/safir/dependencies/logger.py
src/safir/github/__init__.py
src/safir/github/_client.py
src/safir/github/models.py
src/safir/github/webhooks.py
src/safir/middleware/__init__.py
src/safir/middleware/ivoa.py
src/safir/middleware/x_forwarded.py
src/safir/slack/__init__.py
src/safir/slack/blockkit.py
src/safir/slack/webhook.py
src/safir/testing/__init__.py
src/safir/testing/gcs.py
src/safir/testing/kubernetes.py
src/safir/testing/slack.py
src/safir/testing/uvicorn.py
tests/__init__.py
tests/asyncio_test.py
tests/click_test.py
tests/conftest.py
tests/database_test.py
tests/datetime_test.py
tests/fastapi_test.py
tests/gcs_test.py
tests/kubernetes_test.py
tests/logging_test.py
tests/metadata_test.py
tests/models_test.py
tests/pydantic_test.py
tests/redis_test.py
tests/safir_test.py
tests/dependencies/__init__.py
tests/dependencies/arq_test.py
tests/dependencies/db_session_test.py
tests/dependencies/gafaelfawr_test.py
tests/dependencies/http_client_test.py
tests/dependencies/logger_test.py
tests/github/__init__.py
tests/github/webhooks_test.py
tests/github/data/webhooks/check_run_created.json
tests/github/data/webhooks/check_suite_completed.json
tests/github/data/webhooks/installation.json
tests/github/data/webhooks/installation_repositories.json
tests/github/data/webhooks/pull_request_event.json
tests/github/data/webhooks/push_event.json
tests/middleware/__init__.py
tests/middleware/ivoa_test.py
tests/middleware/x_forwarded_test.py
tests/slack/__init__.py
tests/slack/blockkit_test.py
tests/slack/webhook_test.py
tests/testing/__init__.py
tests/testing/conftest.py
tests/testing/gcs_test.py
tests/testing/kubernetes_test.py