safir

View on PyPIReverse Dependencies (4)

9.3.0 safir-9.3.0-py3-none-any.whl

Wheel Details

Project: safir
Version: 9.3.0
Filename: safir-9.3.0-py3-none-any.whl
Download: [link]
Size: 153677
MD5: 51e91eb6701da794b8f246f31b79dab0
SHA256: 3b5ed747b7ffacdfb6ec81831ad144a9d48176818e29fbb62fb993f9e50d8f61
Uploaded: 2025-02-12 00:30:24 +0000

dist-info

METADATA

Metadata-Version: 2.2
Name: safir
Version: 9.3.0
Summary: The Rubin Observatory SQuaRE framework for FastAPI services.
Author-Email: "Association of Universities for Research in Astronomy, Inc. (AURA)" <sqre-admin[at]lists.lsst.org>
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
License: MIT License Copyright (c) 2020-2024 Association of Universities for Research in Astronomy, Inc. (AURA) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Keywords: rubin,lsst
Classifier: Development Status :: 5 - Production/Stable
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Intended Audience :: Developers
Classifier: Natural Language :: English
Classifier: Operating System :: POSIX
Classifier: Typing :: Typed
Requires-Python: >=3.11
Requires-Dist: aiokafka (<1,>=0.11)
Requires-Dist: click (<9)
Requires-Dist: cryptography (<45)
Requires-Dist: dataclasses-avroschema (<1,>=0.65.7)
Requires-Dist: fastapi (<1,>=0.100)
Requires-Dist: faststream (<0.6,>0.5)
Requires-Dist: gidgethub (<6)
Requires-Dist: httpx (<1,>=0.20.0)
Requires-Dist: pydantic (<3,>2)
Requires-Dist: pydantic-core
Requires-Dist: pydantic-settings (!=2.6.0,<3)
Requires-Dist: python-schema-registry-client (<3,>=2.6)
Requires-Dist: safir-logging
Requires-Dist: sentry-sdk (<3,>=2)
Requires-Dist: starlette (<1)
Requires-Dist: structlog (>=21.2.0)
Requires-Dist: safir-arq; extra == "arq"
Requires-Dist: alembic[tz] (<2); extra == "db"
Requires-Dist: asyncpg (<1); extra == "db"
Requires-Dist: sqlalchemy[asyncio] (<3,>=2.0.0); extra == "db"
Requires-Dist: asgi-lifespan; extra == "dev"
Requires-Dist: coverage[toml]; extra == "dev"
Requires-Dist: fastapi (>=0.93.0); extra == "dev"
Requires-Dist: mypy; extra == "dev"
Requires-Dist: pre-commit; extra == "dev"
Requires-Dist: pytest (>=6.2.0); extra == "dev"
Requires-Dist: pytest-asyncio; extra == "dev"
Requires-Dist: pytest-cov; extra == "dev"
Requires-Dist: redis (>=5); extra == "dev"
Requires-Dist: respx; extra == "dev"
Requires-Dist: scriv; extra == "dev"
Requires-Dist: sqlalchemy[mypy]; extra == "dev"
Requires-Dist: testcontainers[postgres,redis]; extra == "dev"
Requires-Dist: uvicorn; extra == "dev"
Requires-Dist: documenteer[guide] (>=1.4.1); extra == "dev"
Requires-Dist: autodoc_pydantic; extra == "dev"
Requires-Dist: google-auth (<3); extra == "gcs"
Requires-Dist: google-cloud-storage (<4); extra == "gcs"
Requires-Dist: kubernetes_asyncio (<33); extra == "kubernetes"
Requires-Dist: redis (<6,>4.5.2); extra == "redis"
Requires-Dist: google-auth (<3); extra == "uws"
Requires-Dist: google-cloud-storage (<4); extra == "uws"
Requires-Dist: jinja2 (<4); extra == "uws"
Requires-Dist: python-multipart; extra == "uws"
Requires-Dist: safir-arq; extra == "uws"
Requires-Dist: vo-models (<1,>=0.4.1); extra == "uws"
Provides-Extra: arq
Provides-Extra: db
Provides-Extra: dev
Provides-Extra: gcs
Provides-Extra: kubernetes
Provides-Extra: redis
Provides-Extra: uws
Description-Content-Type: text/markdown
License-File: LICENSE
[Description omitted; length: 1308 characters]

WHEEL

Wheel-Version: 1.0
Generator: setuptools (75.8.0)
Root-Is-Purelib: true
Tag: py3-none-any

RECORD

Path Digest Size
safir/asyncio/__init__.py sha256=iA0klquTViB6EjRNo4rihAy7-Kw1A20QuMpuF2qEuoc 231
safir/asyncio/_multiqueue.py sha256=V_5LLluLpvIGaJdl-EhH6_lhKcR89AHq6qxmTVQgmQ4 6234
safir/asyncio/_run.py sha256=xh2BJhCSekHs4ziIz9ugAt9b1OPnVNGzlG-WCfmlojE 1808
safir/asyncio/py.typed sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU 0
safir/click/__init__.py sha256=YIGikcqyVKFFyWEnpW0Aq8o3gqqQm_izm_jzllXxvbg 105
safir/click/_help.py sha256=XUp8rLNfGlSPfg5zZ6j0Ehaz44KgA7orTpalqRHZvFg 2751
safir/click/py.typed sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU 0
safir/database/__init__.py sha256=cyJg9s2gaQpbVlX4YyjCuKVcmHVOiHpQ7_cpu-YYmzU 1380
safir/database/_alembic.py sha256=CdrxOmJpODnxnBDldvqaVbwQkju27b-y61Yh9OiSNkk 7703
safir/database/_connection.py sha256=AGcztKeYFN-_tZ8SPhOp8tdWLqf-bJ0cHFnidPNqZdo 5436
safir/database/_datetime.py sha256=M3daYg1yxXIBrOCzT0QgPRhCssrYUFpaJYp6_ry43Gk 1716
safir/database/_initialize.py sha256=HEWlO9oKxKtnZN_jlsY-P2U9eyOPYbTKbbaK_pa27vA 2910
safir/database/_pagination.py sha256=XuW7b5ai0Rn7KwiqoUGau3BtYQ53y-TvHxpUoA2EOgI 28249
safir/database/_retry.py sha256=bbL462R3jfH3IqKnwmDvbzdttBZQD8Hr4Mz9_BbtKhU 3573
safir/database/py.typed sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU 0
safir/datetime/__init__.py sha256=zbVR8ToVD9DeU7amiAhrtXBDzzFd4ohmYf_rl01OrQQ 350
safir/datetime/_current.py sha256=j-xLs8o0AO3auD4JIk5dnskco-8n3U3IrOOAdRf5lik 1150
safir/datetime/_format.py sha256=NA1GRdu_Oy0kXDIpzf6X1fKvazHaUGkzFY1ORuGerh4 2103
safir/datetime/_parse.py sha256=OV6IN93Cnm-ib2fc9JASTIT1AXVkinX3a05wyL7Bx-k 3411
safir/datetime/py.typed sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU 0
safir/dependencies/__init__.py sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU 0
safir/dependencies/arq.py sha256=I1e3htbnetIchgANdTih8aU72UYhpj8bp66_eDDOs7E 3006
safir/dependencies/db_session.py sha256=BiAzMfuo8lAdWy2p__0MtXJ31rtUVOaemWjT0GigDGs 3053
safir/dependencies/gafaelfawr.py sha256=JT5WNKZwE3x4oRIjqdgAbPmRp0r6ZJ2MlaCG2igejUI 1664
safir/dependencies/http_client.py sha256=gmxT48HtWc1sG2S2EaJAg6T-kleW5UM5UVBHJ13j9o0 1893
safir/dependencies/logger.py sha256=Zk1i_vtLgw8qXNqcNXi5EubXMjsaRvQljlDwfQ6cEXc 2595
safir/dependencies/metrics.py sha256=0y94zIYzPliANzirZ3InTPQTQ8FXG3Q9b0ZbXBj9g3w 3405
safir/dependencies/py.typed sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU 0
safir/fastapi/__init__.py sha256=lSDKlyfr3L1qZB-R0BQIwmYyRfSEMcN0xFGOVd1JOnc 220
safir/fastapi/_errors.py sha256=Q6Y2jO5MzMYGxO66YG76eaUETcTByuKzq0v3FS-IlPM 7747
safir/fastapi/py.typed sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU 0
safir/gcs/__init__.py sha256=ToDnapw1CzW-mW2J7I8mrwb_J6E9Oj1YQA74iS76_-k 131
safir/gcs/_signing.py sha256=YN3YrFxgl0vvdQTiHHAjfsHuipxJoUCHtPDcevOYMCw 3405
safir/gcs/py.typed sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU 0
safir/github/__init__.py sha256=fkLkkMw18hNLLOE8_MbTOVMYI7noH0nLqBddOgvRjFc 136
safir/github/_client.py sha256=ldA-tFoI9E586SU5hg2xMcC9ObHLxVQ5riR5fl0D-Ng 3855
safir/github/models.py sha256=-oEdc-iTMF5upbLBzIlGGfPCdG0T4cAfvsAniS5Dcak 11493
safir/github/py.typed sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU 0
safir/github/webhooks.py sha256=XbEd-0FgJloyU0D8ESBJBpflAIDszVEUVzNSRJ4V7IM 10092
safir/kafka/__init__.py sha256=E8YnoCjgDc41_9jIoLCNrum3ouhVMJr3sCiUBEN1-5o 1192
safir/kafka/_exceptions.py sha256=m1gXVYUKCjty9isesl9aghaLUkatzdQSfmbp7KTIhLg 1300
safir/kafka/_kafka_config.py sha256=N8ZRCqfXGPWqB1R79Wr-jcZDn9UMcZ68dQUlpHgtS-k 14416
safir/kafka/_manager.py sha256=CwTFpZrGMNWQByz68FMvJAtusuh_ZKQPSn6oIJtGrio 8402
safir/kafka/_schema_registry_config.py sha256=jEKZdcnmet7pd6c6u3TSbt4vxjmoqSQ-EEiu7aJ3Vas 2263
safir/kafka/py.typed sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU 0
safir/kubernetes/__init__.py sha256=tOFF4jVhFkN8WMYvUtHWQ-Ji_6F24Z-I1Ld-P4lqHDI 132
safir/kubernetes/_init.py sha256=zxTlV2To96Fz_Fm9iaCjmtfnsMWL2B8WuQEOazkose8 914
safir/kubernetes/py.typed sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU 0
safir/metadata/__init__.py sha256=RZE4J82smqAruLRnQh1hEMTVaf0sTIAo7-EZTqE6l38 228
safir/metadata/_models.py sha256=iJFS6FD4Cabuk--C0LMknSdx-JgEMBgM8CxhfM_4Z_o 703
safir/metadata/_retrieve.py sha256=2vTfVPRPhKZPF0BCWBrMRXYSzwo1fQYsreOOTiY4BT8 4209
safir/metadata/py.typed sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU 0
safir/metrics/__init__.py sha256=AXeoQf8c577qWSttGuNdMeCuf3Ln5xjcGSWbJrTQ-zA 1584
safir/metrics/_config.py sha256=xfQklSgCfKHhC2ozy0WN03GdwHWVZCZ0CtJYmueQIuM 10293
safir/metrics/_constants.py sha256=11WA3B09jYx-1RRXmLPiiVoHkCUbEup-D171M8AEmnc 285
safir/metrics/_event_manager.py sha256=asDxYdk2U4i68bE0UT2X-1mfmCEwliYU3L4uFC-w1IU 20806
safir/metrics/_exceptions.py sha256=m0sg0k8qJjQ2toNyRR9Ax0riDWVKQ_hxgrNwrf_LtxA 1070
safir/metrics/_models.py sha256=d5w_6DfGfI1rwCg2gPPTPmVUbtl_y2XdZBlyMYJgfBs 4506
safir/metrics/_testing.py sha256=e9yTtBxBM6bXZMB8TrsvsP6kBdje8W9VaGMSHY71jjs 7539
safir/metrics/py.typed sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU 0
safir/middleware/__init__.py sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU 0
safir/middleware/ivoa.py sha256=WhiPRYYxLi2-lICGJBqv2ONReafUWyDnKBZRfN2Mpss 5442
safir/middleware/py.typed sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU 0
safir/middleware/x_forwarded.py sha256=9bysms3owDY6UHULAjOwHT_LyXMGPakyG9Du5TGp20g 5730
safir/models/__init__.py sha256=K69rssP_3I34Tv5h_N1RNx2h_wiQA9-24ZDvUIAILr8 375
safir/models/_errors.py sha256=zvo4uWmVj0h8I09ji6-iZ0dsBy1Bqub3hLBw6PbjCc4 899
safir/models/py.typed sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU 0
safir/pydantic/__init__.py sha256=dHsHIlsxfuvwY8maCu8-tNKfFZEAhFGCekQy591LCmc 621
safir/pydantic/_camel.py sha256=e57HbcDHkDCdd1iwWQJebW1gTjA_LdL8IPLhf-4_PdA 3362
safir/pydantic/_types.py sha256=QFzrvbNtUS_w7Jwo9xHQSZtRmkQ2B6VMv7zFZ5nQL1g 6095
safir/pydantic/_validators.py sha256=6M2SAzo7lovRqAv57YpRgKrYrHr7LyIo3_Ner62Rlwg 6098
safir/pydantic/py.typed sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU 0
safir/redis/__init__.py sha256=9ZJH2MEbpPBkYkXyGcs-NEkt1opkGqcfP4a-G_BmIr8 244
safir/redis/_storage.py sha256=mtVEBdkaMtPuqA5oR-yBPloj7sDZUEQg2yG3xFDTWA4 7675
safir/redis/py.typed sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU 0
safir/sentry/__init__.py sha256=dC3HqL-6gu9xvuKhyvNbhcXiLQmZid48Ut1-cJIP1qY 378
safir/sentry/_exceptions.py sha256=SiiVg2JefEgNeLLvx7q52cnwnxKTAE1GxzSGbrbzKsA 4825
safir/sentry/_helpers.py sha256=R7rMKYPWs4tB20qBPugJL6tTTaHm_Xj6DlhzEADacQE 1807
safir/sentry/py.typed sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU 0
safir/slack/__init__.py sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU 0
safir/slack/blockkit.py sha256=XSU_Dews2Av8MNeKk6S8AUSblxuyS1NaHqOc_QCIIL4 16364
safir/slack/py.typed sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU 0
safir/slack/webhook.py sha256=WMKTZEnSAmD8EzhVjT7lzJMEQT2moICMzXU_1_yFysk 7559
safir/testing/__init__.py sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU 0
safir/testing/gcs.py sha256=iM1vEsG8oycnSAHJU2PrUHOlTyDW57g4ImT_04DYIT8 10033
safir/testing/kubernetes.py sha256=gIvYhmJDZSaSxVJZUP2m9Eh7gEg17Y0KaUGdQP-o6Cc 105560
safir/testing/py.typed sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU 0
safir/testing/sentry.py sha256=RFlI5FTSruFBVA7G02vu3kyHkTOnQc9SdDyxudW88OU 3780
safir/testing/slack.py sha256=rwPXUP2xtD27fdSR5leq85y-Wn35BeVJEMMrL6rRLXE 2691
safir/testing/uvicorn.py sha256=nxx0ZZ977WRwADAbG9qaNf_8xpHREudxl-LQXvzcCkY 5184
safir/testing/uws.py sha256=onLcs-0-yN5QSjaPZCDn9dUZ02zOE7W1r_tnz3KNBBc 12226
safir/uws/__init__.py sha256=0wYm72tfSu0c9vdqQ1WhiUAgVvqEs4Fkek9UC_eqMNk 888
safir/uws/_app.py sha256=Q4IiLfKhhk6tA83ABjHdrlW01vZ7yLZMqVs-TdA0Eiw 7876
safir/uws/_config.py sha256=qIJzPqNVcxDJU14zjkds8SQM1gVAQcTPVxI2bmn1mpk 13091
safir/uws/_constants.py sha256=8acnG7ZqLIclbDsRwj3uJvatdH8B5tOQPvNIDSK8bfM 697
safir/uws/_dependencies.py sha256=X5BHAFULXwNJSeWSigb2e0t5GqPA2xgEdyTaAdtkcFg 4965
safir/uws/_exceptions.py sha256=_l0XNL9rzdBjdxxLKnWl-Gm-giTmLGifHyXJhjovt4o 7568
safir/uws/_handlers.py sha256=pSqSrD_bHBj-rY3euXYYKjy1O4Z7XMpAfvdpo6MzbOw 17920
safir/uws/_models.py sha256=0zXC1PjXEuziw-ngboNLTv7coPMYmrg7ljNqx13qRrY 17534
safir/uws/_responses.py sha256=Q9L4tTHNdKoMIkm8N3fJyVEfAbnd0L28m1ELKr7YoRA 993
safir/uws/_results.py sha256=X75Oo1B0ybFkFXxrT-aq2cA3oJrPvU_optDrYBb8LRg 2289
safir/uws/_service.py sha256=AJKjr8TPjd1Hkkdwkog9BM9g3tSjyj46JlW39jHlMPw 21086
safir/uws/_storage.py sha256=MkDPM2F1l9xNQBvCe5MvY98MRr9QallZQ7s7a6V6p8A 11817
safir/uws/_workers.py sha256=EOmrYNFiGfWYdDKa85kIKM9h7Dmj99WdQ8vu7rqoG-E 8183
safir/uws/py.typed sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU 0
safir/uws/templates/error.xml sha256=fim7hOb1ZQRbC-FbSilsfUthsvh_sgH-z3rEm8t2UeU 266
safir-9.3.0.dist-info/LICENSE sha256=JOxgKHR3wdHdrASo8z8Uce7hQBnDra5rvxj5zeICB4k 1128
safir-9.3.0.dist-info/METADATA sha256=zK3VV_i-LXim15FaJHJ1L8uf7m-GRKjovSX7Ab4C8TE 5760
safir-9.3.0.dist-info/WHEEL sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8 91
safir-9.3.0.dist-info/top_level.txt sha256=lHdGSQXhWE7XvxLJiAquZeJePeRHD-PnjwJ8Nsr3CJE 6
safir-9.3.0.dist-info/RECORD

top_level.txt

safir