svc-infra 0.1.589__py3-none-any.whl → 0.1.706__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of svc-infra might be problematic. Click here for more details.

Files changed (260) hide show
  1. svc_infra/__init__.py +58 -2
  2. svc_infra/apf_payments/README.md +732 -0
  3. svc_infra/apf_payments/models.py +133 -42
  4. svc_infra/apf_payments/provider/__init__.py +4 -0
  5. svc_infra/apf_payments/provider/aiydan.py +871 -0
  6. svc_infra/apf_payments/provider/base.py +30 -9
  7. svc_infra/apf_payments/provider/stripe.py +156 -62
  8. svc_infra/apf_payments/schemas.py +19 -10
  9. svc_infra/apf_payments/service.py +211 -68
  10. svc_infra/apf_payments/settings.py +27 -3
  11. svc_infra/api/__init__.py +61 -0
  12. svc_infra/api/fastapi/__init__.py +15 -0
  13. svc_infra/api/fastapi/admin/__init__.py +3 -0
  14. svc_infra/api/fastapi/admin/add.py +245 -0
  15. svc_infra/api/fastapi/apf_payments/router.py +145 -46
  16. svc_infra/api/fastapi/apf_payments/setup.py +26 -8
  17. svc_infra/api/fastapi/auth/__init__.py +65 -0
  18. svc_infra/api/fastapi/auth/_cookies.py +6 -2
  19. svc_infra/api/fastapi/auth/add.py +27 -14
  20. svc_infra/api/fastapi/auth/gaurd.py +104 -13
  21. svc_infra/api/fastapi/auth/mfa/models.py +3 -1
  22. svc_infra/api/fastapi/auth/mfa/pre_auth.py +10 -6
  23. svc_infra/api/fastapi/auth/mfa/router.py +15 -8
  24. svc_infra/api/fastapi/auth/mfa/security.py +1 -2
  25. svc_infra/api/fastapi/auth/mfa/utils.py +2 -1
  26. svc_infra/api/fastapi/auth/mfa/verify.py +9 -2
  27. svc_infra/api/fastapi/auth/policy.py +0 -1
  28. svc_infra/api/fastapi/auth/providers.py +3 -1
  29. svc_infra/api/fastapi/auth/routers/apikey_router.py +6 -6
  30. svc_infra/api/fastapi/auth/routers/oauth_router.py +214 -75
  31. svc_infra/api/fastapi/auth/routers/session_router.py +67 -0
  32. svc_infra/api/fastapi/auth/security.py +31 -10
  33. svc_infra/api/fastapi/auth/sender.py +8 -1
  34. svc_infra/api/fastapi/auth/settings.py +2 -0
  35. svc_infra/api/fastapi/auth/state.py +3 -1
  36. svc_infra/api/fastapi/auth/ws_security.py +275 -0
  37. svc_infra/api/fastapi/billing/router.py +73 -0
  38. svc_infra/api/fastapi/billing/setup.py +19 -0
  39. svc_infra/api/fastapi/cache/add.py +9 -5
  40. svc_infra/api/fastapi/db/__init__.py +5 -1
  41. svc_infra/api/fastapi/db/http.py +3 -1
  42. svc_infra/api/fastapi/db/nosql/__init__.py +39 -1
  43. svc_infra/api/fastapi/db/nosql/mongo/add.py +47 -32
  44. svc_infra/api/fastapi/db/nosql/mongo/crud_router.py +30 -11
  45. svc_infra/api/fastapi/db/sql/__init__.py +5 -1
  46. svc_infra/api/fastapi/db/sql/add.py +71 -26
  47. svc_infra/api/fastapi/db/sql/crud_router.py +210 -22
  48. svc_infra/api/fastapi/db/sql/health.py +3 -1
  49. svc_infra/api/fastapi/db/sql/session.py +18 -0
  50. svc_infra/api/fastapi/db/sql/users.py +29 -5
  51. svc_infra/api/fastapi/dependencies/ratelimit.py +130 -0
  52. svc_infra/api/fastapi/docs/add.py +173 -0
  53. svc_infra/api/fastapi/docs/landing.py +4 -2
  54. svc_infra/api/fastapi/docs/scoped.py +62 -15
  55. svc_infra/api/fastapi/dual/__init__.py +12 -2
  56. svc_infra/api/fastapi/dual/dualize.py +1 -1
  57. svc_infra/api/fastapi/dual/protected.py +126 -4
  58. svc_infra/api/fastapi/dual/public.py +25 -0
  59. svc_infra/api/fastapi/dual/router.py +40 -13
  60. svc_infra/api/fastapi/dx.py +33 -2
  61. svc_infra/api/fastapi/ease.py +10 -2
  62. svc_infra/api/fastapi/http/concurrency.py +2 -1
  63. svc_infra/api/fastapi/http/conditional.py +3 -1
  64. svc_infra/api/fastapi/middleware/debug.py +4 -1
  65. svc_infra/api/fastapi/middleware/errors/catchall.py +6 -2
  66. svc_infra/api/fastapi/middleware/errors/exceptions.py +1 -1
  67. svc_infra/api/fastapi/middleware/errors/handlers.py +54 -8
  68. svc_infra/api/fastapi/middleware/graceful_shutdown.py +104 -0
  69. svc_infra/api/fastapi/middleware/idempotency.py +197 -70
  70. svc_infra/api/fastapi/middleware/idempotency_store.py +187 -0
  71. svc_infra/api/fastapi/middleware/optimistic_lock.py +42 -0
  72. svc_infra/api/fastapi/middleware/ratelimit.py +143 -31
  73. svc_infra/api/fastapi/middleware/ratelimit_store.py +111 -0
  74. svc_infra/api/fastapi/middleware/request_id.py +27 -11
  75. svc_infra/api/fastapi/middleware/request_size_limit.py +36 -0
  76. svc_infra/api/fastapi/middleware/timeout.py +177 -0
  77. svc_infra/api/fastapi/openapi/apply.py +5 -3
  78. svc_infra/api/fastapi/openapi/conventions.py +9 -2
  79. svc_infra/api/fastapi/openapi/mutators.py +165 -20
  80. svc_infra/api/fastapi/openapi/pipeline.py +1 -1
  81. svc_infra/api/fastapi/openapi/security.py +3 -1
  82. svc_infra/api/fastapi/ops/add.py +75 -0
  83. svc_infra/api/fastapi/pagination.py +47 -20
  84. svc_infra/api/fastapi/routers/__init__.py +43 -15
  85. svc_infra/api/fastapi/routers/ping.py +1 -0
  86. svc_infra/api/fastapi/setup.py +188 -56
  87. svc_infra/api/fastapi/tenancy/add.py +19 -0
  88. svc_infra/api/fastapi/tenancy/context.py +112 -0
  89. svc_infra/api/fastapi/versioned.py +101 -0
  90. svc_infra/app/README.md +5 -5
  91. svc_infra/app/__init__.py +3 -1
  92. svc_infra/app/env.py +69 -1
  93. svc_infra/app/logging/add.py +9 -2
  94. svc_infra/app/logging/formats.py +12 -5
  95. svc_infra/billing/__init__.py +23 -0
  96. svc_infra/billing/async_service.py +147 -0
  97. svc_infra/billing/jobs.py +241 -0
  98. svc_infra/billing/models.py +177 -0
  99. svc_infra/billing/quotas.py +103 -0
  100. svc_infra/billing/schemas.py +36 -0
  101. svc_infra/billing/service.py +123 -0
  102. svc_infra/bundled_docs/README.md +5 -0
  103. svc_infra/bundled_docs/__init__.py +1 -0
  104. svc_infra/bundled_docs/getting-started.md +6 -0
  105. svc_infra/cache/__init__.py +9 -0
  106. svc_infra/cache/add.py +170 -0
  107. svc_infra/cache/backend.py +7 -6
  108. svc_infra/cache/decorators.py +81 -15
  109. svc_infra/cache/demo.py +2 -2
  110. svc_infra/cache/keys.py +24 -4
  111. svc_infra/cache/recache.py +26 -14
  112. svc_infra/cache/resources.py +14 -5
  113. svc_infra/cache/tags.py +19 -44
  114. svc_infra/cache/utils.py +3 -1
  115. svc_infra/cli/__init__.py +52 -8
  116. svc_infra/cli/__main__.py +4 -0
  117. svc_infra/cli/cmds/__init__.py +39 -2
  118. svc_infra/cli/cmds/db/nosql/mongo/mongo_cmds.py +7 -4
  119. svc_infra/cli/cmds/db/nosql/mongo/mongo_scaffold_cmds.py +7 -5
  120. svc_infra/cli/cmds/db/ops_cmds.py +270 -0
  121. svc_infra/cli/cmds/db/sql/alembic_cmds.py +103 -18
  122. svc_infra/cli/cmds/db/sql/sql_export_cmds.py +88 -0
  123. svc_infra/cli/cmds/db/sql/sql_scaffold_cmds.py +3 -3
  124. svc_infra/cli/cmds/docs/docs_cmds.py +142 -0
  125. svc_infra/cli/cmds/dx/__init__.py +12 -0
  126. svc_infra/cli/cmds/dx/dx_cmds.py +116 -0
  127. svc_infra/cli/cmds/health/__init__.py +179 -0
  128. svc_infra/cli/cmds/health/health_cmds.py +8 -0
  129. svc_infra/cli/cmds/help.py +4 -0
  130. svc_infra/cli/cmds/jobs/__init__.py +1 -0
  131. svc_infra/cli/cmds/jobs/jobs_cmds.py +47 -0
  132. svc_infra/cli/cmds/obs/obs_cmds.py +36 -15
  133. svc_infra/cli/cmds/sdk/__init__.py +0 -0
  134. svc_infra/cli/cmds/sdk/sdk_cmds.py +112 -0
  135. svc_infra/cli/foundation/runner.py +6 -2
  136. svc_infra/data/add.py +61 -0
  137. svc_infra/data/backup.py +58 -0
  138. svc_infra/data/erasure.py +45 -0
  139. svc_infra/data/fixtures.py +42 -0
  140. svc_infra/data/retention.py +61 -0
  141. svc_infra/db/__init__.py +15 -0
  142. svc_infra/db/crud_schema.py +9 -9
  143. svc_infra/db/inbox.py +67 -0
  144. svc_infra/db/nosql/__init__.py +3 -0
  145. svc_infra/db/nosql/core.py +30 -9
  146. svc_infra/db/nosql/indexes.py +3 -1
  147. svc_infra/db/nosql/management.py +1 -1
  148. svc_infra/db/nosql/mongo/README.md +13 -13
  149. svc_infra/db/nosql/mongo/client.py +19 -2
  150. svc_infra/db/nosql/mongo/settings.py +6 -2
  151. svc_infra/db/nosql/repository.py +35 -15
  152. svc_infra/db/nosql/resource.py +20 -3
  153. svc_infra/db/nosql/scaffold.py +9 -3
  154. svc_infra/db/nosql/service.py +3 -1
  155. svc_infra/db/nosql/types.py +6 -2
  156. svc_infra/db/ops.py +384 -0
  157. svc_infra/db/outbox.py +108 -0
  158. svc_infra/db/sql/apikey.py +37 -9
  159. svc_infra/db/sql/authref.py +9 -3
  160. svc_infra/db/sql/constants.py +12 -8
  161. svc_infra/db/sql/core.py +2 -2
  162. svc_infra/db/sql/management.py +11 -8
  163. svc_infra/db/sql/repository.py +99 -26
  164. svc_infra/db/sql/resource.py +5 -0
  165. svc_infra/db/sql/scaffold.py +6 -2
  166. svc_infra/db/sql/service.py +15 -5
  167. svc_infra/db/sql/templates/models_schemas/auth/models.py.tmpl +7 -56
  168. svc_infra/db/sql/templates/models_schemas/auth/schemas.py.tmpl +1 -1
  169. svc_infra/db/sql/templates/setup/env_async.py.tmpl +34 -12
  170. svc_infra/db/sql/templates/setup/env_sync.py.tmpl +29 -7
  171. svc_infra/db/sql/tenant.py +88 -0
  172. svc_infra/db/sql/uniq_hooks.py +9 -3
  173. svc_infra/db/sql/utils.py +138 -51
  174. svc_infra/db/sql/versioning.py +14 -0
  175. svc_infra/deploy/__init__.py +538 -0
  176. svc_infra/documents/__init__.py +100 -0
  177. svc_infra/documents/add.py +264 -0
  178. svc_infra/documents/ease.py +233 -0
  179. svc_infra/documents/models.py +114 -0
  180. svc_infra/documents/storage.py +264 -0
  181. svc_infra/dx/add.py +65 -0
  182. svc_infra/dx/changelog.py +74 -0
  183. svc_infra/dx/checks.py +68 -0
  184. svc_infra/exceptions.py +141 -0
  185. svc_infra/health/__init__.py +864 -0
  186. svc_infra/http/__init__.py +13 -0
  187. svc_infra/http/client.py +105 -0
  188. svc_infra/jobs/builtins/outbox_processor.py +40 -0
  189. svc_infra/jobs/builtins/webhook_delivery.py +95 -0
  190. svc_infra/jobs/easy.py +33 -0
  191. svc_infra/jobs/loader.py +50 -0
  192. svc_infra/jobs/queue.py +116 -0
  193. svc_infra/jobs/redis_queue.py +256 -0
  194. svc_infra/jobs/runner.py +79 -0
  195. svc_infra/jobs/scheduler.py +53 -0
  196. svc_infra/jobs/worker.py +40 -0
  197. svc_infra/loaders/__init__.py +186 -0
  198. svc_infra/loaders/base.py +142 -0
  199. svc_infra/loaders/github.py +311 -0
  200. svc_infra/loaders/models.py +147 -0
  201. svc_infra/loaders/url.py +235 -0
  202. svc_infra/logging/__init__.py +374 -0
  203. svc_infra/mcp/svc_infra_mcp.py +91 -33
  204. svc_infra/obs/README.md +2 -0
  205. svc_infra/obs/add.py +65 -9
  206. svc_infra/obs/cloud_dash.py +2 -1
  207. svc_infra/obs/grafana/dashboards/http-overview.json +45 -0
  208. svc_infra/obs/metrics/__init__.py +52 -0
  209. svc_infra/obs/metrics/asgi.py +13 -7
  210. svc_infra/obs/metrics/http.py +9 -5
  211. svc_infra/obs/metrics/sqlalchemy.py +13 -9
  212. svc_infra/obs/metrics.py +53 -0
  213. svc_infra/obs/settings.py +6 -2
  214. svc_infra/security/add.py +217 -0
  215. svc_infra/security/audit.py +212 -0
  216. svc_infra/security/audit_service.py +74 -0
  217. svc_infra/security/headers.py +52 -0
  218. svc_infra/security/hibp.py +101 -0
  219. svc_infra/security/jwt_rotation.py +105 -0
  220. svc_infra/security/lockout.py +102 -0
  221. svc_infra/security/models.py +287 -0
  222. svc_infra/security/oauth_models.py +73 -0
  223. svc_infra/security/org_invites.py +130 -0
  224. svc_infra/security/passwords.py +79 -0
  225. svc_infra/security/permissions.py +171 -0
  226. svc_infra/security/session.py +98 -0
  227. svc_infra/security/signed_cookies.py +100 -0
  228. svc_infra/storage/__init__.py +93 -0
  229. svc_infra/storage/add.py +253 -0
  230. svc_infra/storage/backends/__init__.py +11 -0
  231. svc_infra/storage/backends/local.py +339 -0
  232. svc_infra/storage/backends/memory.py +216 -0
  233. svc_infra/storage/backends/s3.py +353 -0
  234. svc_infra/storage/base.py +239 -0
  235. svc_infra/storage/easy.py +185 -0
  236. svc_infra/storage/settings.py +195 -0
  237. svc_infra/testing/__init__.py +685 -0
  238. svc_infra/utils.py +7 -3
  239. svc_infra/webhooks/__init__.py +69 -0
  240. svc_infra/webhooks/add.py +339 -0
  241. svc_infra/webhooks/encryption.py +115 -0
  242. svc_infra/webhooks/fastapi.py +39 -0
  243. svc_infra/webhooks/router.py +55 -0
  244. svc_infra/webhooks/service.py +70 -0
  245. svc_infra/webhooks/signing.py +34 -0
  246. svc_infra/websocket/__init__.py +79 -0
  247. svc_infra/websocket/add.py +140 -0
  248. svc_infra/websocket/client.py +282 -0
  249. svc_infra/websocket/config.py +69 -0
  250. svc_infra/websocket/easy.py +76 -0
  251. svc_infra/websocket/exceptions.py +61 -0
  252. svc_infra/websocket/manager.py +344 -0
  253. svc_infra/websocket/models.py +49 -0
  254. svc_infra-0.1.706.dist-info/LICENSE +21 -0
  255. svc_infra-0.1.706.dist-info/METADATA +356 -0
  256. svc_infra-0.1.706.dist-info/RECORD +357 -0
  257. svc_infra-0.1.589.dist-info/METADATA +0 -79
  258. svc_infra-0.1.589.dist-info/RECORD +0 -234
  259. {svc_infra-0.1.589.dist-info → svc_infra-0.1.706.dist-info}/WHEEL +0 -0
  260. {svc_infra-0.1.589.dist-info → svc_infra-0.1.706.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,357 @@
1
+ svc_infra/__init__.py,sha256=KRlsNkhDjm5IEpISSLR7oeiuvSXDk-Pf2aLIg7wUCX8,1287
2
+ svc_infra/apf_payments/README.md,sha256=wqJrJcCkWIFMS0d1pUhYGt6NmgnxmYJcHFnUnm8Bf1Y,23321
3
+ svc_infra/apf_payments/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
+ svc_infra/apf_payments/alembic.py,sha256=XJIcCDOoaO1EeJbSx_qK9o4cBi430qyo5gECtjHIojw,299
5
+ svc_infra/apf_payments/models.py,sha256=v05JzGxogBNvQ-cmZYprG1jdVeBaI0UFdMZ8NKB0s_c,14895
6
+ svc_infra/apf_payments/provider/__init__.py,sha256=zBh26eY7kcWHD4RXqAKfqaspY0_VE9thfts7aE8zbHg,142
7
+ svc_infra/apf_payments/provider/aiydan.py,sha256=A6jSRK_ufB_4BcbzXV3HTMd3mB3G1QwYjb0b6ItYHdE,32836
8
+ svc_infra/apf_payments/provider/base.py,sha256=dtsGqL0_tyt2M7035HW6gMTwaPdbU9elJgrMtB-4ITg,7831
9
+ svc_infra/apf_payments/provider/registry.py,sha256=NZ4pUkFcbXNtqWEpFeI3NwoKRYGWe9fVQakmlrVLTKE,878
10
+ svc_infra/apf_payments/provider/stripe.py,sha256=ku3x5V7AhljzKzD5GaJrhxHcU65ceqXLC9ELzQq5WYA,35847
11
+ svc_infra/apf_payments/schemas.py,sha256=wMcBIOabopkKr2m-_sxaA5_ZshyjMrawz9V9bsc2WBs,8767
12
+ svc_infra/apf_payments/service.py,sha256=TTm34atIzDVO5_JpINXour9NDY5JQMyixq2mAsvZfZ8,35518
13
+ svc_infra/apf_payments/settings.py,sha256=YMP7LqSLIuMKrasKyUSw0-idC4lKt99i7uXwVXJ5jVk,2058
14
+ svc_infra/api/__init__.py,sha256=EYwhHnpG2dznXBBXqWWxtUCG7548lz2i7zQizegLiyA,1221
15
+ svc_infra/api/fastapi/__init__.py,sha256=ZZKJBfCLDhGRxbmWvbaDbW_IEfSwpbOalzgHpXEAJQA,1055
16
+ svc_infra/api/fastapi/admin/__init__.py,sha256=AmuCHI5EQRCqwM40Gs1245z7MTcYZkg5xuoaplCExko,82
17
+ svc_infra/api/fastapi/admin/add.py,sha256=VeY5Gaalvyzz7iYj_c_2ZvXZurSCkT8P9_DIzqMC_1M,8968
18
+ svc_infra/api/fastapi/apf_payments/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
19
+ svc_infra/api/fastapi/apf_payments/router.py,sha256=IDrwy9b67Ko-A-72C2YNmv-MQAF3tp1YdMox8oaEvTM,37243
20
+ svc_infra/api/fastapi/apf_payments/setup.py,sha256=hfhGpbwTHZkcv8gkBPT_OkPHqrHkXSqLtJIl4Dpdd58,2730
21
+ svc_infra/api/fastapi/auth/__init__.py,sha256=1wzQTEzpmVlwILWikbPznZtWJqR8RadyQCVftptjMNk,1659
22
+ svc_infra/api/fastapi/auth/_cookies.py,sha256=A6lW-bToLUUH3zDqExFZwjMVspkpZ78qZDgzbzuK2_Y,1401
23
+ svc_infra/api/fastapi/auth/add.py,sha256=5qTc5q4eC4H7TRseh618x6eemoClJ9xUNMPI0joWGk0,10135
24
+ svc_infra/api/fastapi/auth/gaurd.py,sha256=J5jxIh4mjCTdNJ54-lAicrM1QHe1GQrj150eMhV7wus,9475
25
+ svc_infra/api/fastapi/auth/mfa/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
26
+ svc_infra/api/fastapi/auth/mfa/models.py,sha256=Q9s48rnZx5iL-LwoqxxJ4QaOTSQSRuau32E2GIDU2FY,1238
27
+ svc_infra/api/fastapi/auth/mfa/pre_auth.py,sha256=jlfCy9DnggziJMDyk10Cay7SM9xpFOXeE1aAk_J8K8E,1629
28
+ svc_infra/api/fastapi/auth/mfa/router.py,sha256=xanch5mCbQosyiTtr0gKhluKVxMHiJIi7EeaMJ6hQn0,12778
29
+ svc_infra/api/fastapi/auth/mfa/security.py,sha256=aWP7Ic8IzhsZoL1Un_uLjtBJB1JsKkbcRxYpbhTyL1c,1081
30
+ svc_infra/api/fastapi/auth/mfa/utils.py,sha256=sBEdaCul6pgWK5DbhC_g7Jxr1kjFVcCJrOYzqxg7om4,1017
31
+ svc_infra/api/fastapi/auth/mfa/verify.py,sha256=aGaAx5u9NFzwGujd0bGSbqDyPhK-JIObnE1ZP2b7tPE,3000
32
+ svc_infra/api/fastapi/auth/policy.py,sha256=BLPQxkDW-271lBzRgARdHqQ9dvEOIQ-iYUvHPjV9Vwo,862
33
+ svc_infra/api/fastapi/auth/providers.py,sha256=A1GRafaawWvThkWNpURfaaLDy9zSDjp6Q56WAjzeeQE,3231
34
+ svc_infra/api/fastapi/auth/routers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
35
+ svc_infra/api/fastapi/auth/routers/account.py,sha256=IzLCk9e6ST8oorI8GWTuU0bfPyGvONqAjxadoE6L6Fg,1614
36
+ svc_infra/api/fastapi/auth/routers/apikey_router.py,sha256=RcPI0Zt3p3AQ6jg04fSxbAS7wN216Oe9bR6cnOJZ2dw,5412
37
+ svc_infra/api/fastapi/auth/routers/oauth_router.py,sha256=Vz2Vd_E6C7oHUcn73UOnT22cwbJf2KyLe4B0M4gOqbY,28722
38
+ svc_infra/api/fastapi/auth/routers/session_router.py,sha256=plL_f6Z42TKtDIuuQM3HRBDLHPLL6lsLyFcsmAsp0_A,2390
39
+ svc_infra/api/fastapi/auth/security.py,sha256=EbuZIY8rVi929EwUk01y4O7cIw20BO--PpgHcZPHb84,6723
40
+ svc_infra/api/fastapi/auth/sender.py,sha256=Ok2YC1IOazFaGL2Fp2TJrkC8Fk7U7VXVSa5Q8cuNZM0,1978
41
+ svc_infra/api/fastapi/auth/settings.py,sha256=H6jF9EOZOBbRJX0JugvirLMylJw64KK_32osGkJYRB8,3470
42
+ svc_infra/api/fastapi/auth/state.py,sha256=POoWFX4pevBvJwZ_-g5o7g_Hmbk8yWKrsXkvfSvlaPI,1092
43
+ svc_infra/api/fastapi/auth/ws_security.py,sha256=1at9Vs2PQxjG3V4tGTqeqilb8GsICznhP5MQ1LsCpzI,8593
44
+ svc_infra/api/fastapi/billing/router.py,sha256=mJJtsDgyLJQkH1ntkALl3niSQkDrl04Dwt_f0VckxGE,2204
45
+ svc_infra/api/fastapi/billing/setup.py,sha256=N4_yvNdvCt2l2OUmREUdUAClGwLUvCwqN1IHgY99ZMI,621
46
+ svc_infra/api/fastapi/cache/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
47
+ svc_infra/api/fastapi/cache/add.py,sha256=eIgv8zP1Zp5Bg0i1ZeDIJlP9wtnOePx7x0e0LaEtpCM,429
48
+ svc_infra/api/fastapi/db/__init__.py,sha256=xsKiQESWKLFV3rC-Gif35rlvY-J8J4aeJ1NsH98gk3Q,372
49
+ svc_infra/api/fastapi/db/http.py,sha256=iwhgj19g6K4-baFFyiZyeN4d843ePUk5EzHEhlLVkA8,2294
50
+ svc_infra/api/fastapi/db/nosql/__init__.py,sha256=eyGkD3jofKNp_TeLFGafsKnYqbtMvlovZ1-CXrR-YIk,1407
51
+ svc_infra/api/fastapi/db/nosql/mongo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
52
+ svc_infra/api/fastapi/db/nosql/mongo/add.py,sha256=axUi3mOeTizWTl5Lq1i9suHQvsc1v0qXnBnberI4Gs0,4674
53
+ svc_infra/api/fastapi/db/nosql/mongo/crud_router.py,sha256=AF9dX_2VfrJxDc4dr55Rjt95rIF2tKmNpZy0eugEcL0,4625
54
+ svc_infra/api/fastapi/db/nosql/mongo/health.py,sha256=OM4_Pig3IRSrBhz2yHweIhGlSBrW1bubY_mDt5uyORA,507
55
+ svc_infra/api/fastapi/db/sql/README.md,sha256=uF_k4wbNSeWR6JF_8evWkeSFidBEXMXcIiYyR6sEv48,3082
56
+ svc_infra/api/fastapi/db/sql/__init__.py,sha256=pwB1IAl0A6pjetq_CqJRpkdVIrsqIyjkW2KWTsCk3_Y,272
57
+ svc_infra/api/fastapi/db/sql/add.py,sha256=EwUmkyhXHYfyrNRaou4zK4RWpHBsAqEMYZ5L1T78iEs,5516
58
+ svc_infra/api/fastapi/db/sql/crud_router.py,sha256=HECLXZQ7wTkJBgv3IBJcCuvu8wqb8ePhQ3cdR5jhr-I,11741
59
+ svc_infra/api/fastapi/db/sql/health.py,sha256=1_gP_5ewQ4LlBdfFocEgBflT5UlzTxb8Wl3r63xoQRc,806
60
+ svc_infra/api/fastapi/db/sql/session.py,sha256=be4D_zGUCra11nI5fFHbUqM5tsTbwWsWnsgAFbrPisA,2621
61
+ svc_infra/api/fastapi/db/sql/users.py,sha256=Dm65BXD9XIJeC82PqW3AAaVPWR7zxujF9BZswr9z7Kk,5589
62
+ svc_infra/api/fastapi/dependencies/ratelimit.py,sha256=rEGaRpMoz9XbN0rmAr7mZdOD6ieFBvzoum8JVimLyV8,4093
63
+ svc_infra/api/fastapi/docs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
64
+ svc_infra/api/fastapi/docs/add.py,sha256=QosgrNVkneys6ad7IX-5fYtNVS90PR0qxhwzP40Xap8,5974
65
+ svc_infra/api/fastapi/docs/landing.py,sha256=RUbFXgxqwC1reBBf-EwliSjEiAmaRIabAEe-lHt11CY,4626
66
+ svc_infra/api/fastapi/docs/scoped.py,sha256=LdXsJnVAmikYaS2iwz2m4xojUqwJY8yehSlCD_g6fOw,8983
67
+ svc_infra/api/fastapi/dual/__init__.py,sha256=8KtRm6OireWBWwM8-nlYUieISqRDGflobFL86LKkGZI,885
68
+ svc_infra/api/fastapi/dual/dualize.py,sha256=lCNHRQVlMM_rjlN0Zzr57HzCK1eeuXhKWZrofSJNdDM,3803
69
+ svc_infra/api/fastapi/dual/protected.py,sha256=BMRTb5dYl1SMaoJ7K47qs7OAwq7sFQx10tENxYKC4sQ,6869
70
+ svc_infra/api/fastapi/dual/public.py,sha256=2G1dW9S9CY-CJfpsZBUhYlop1LLVlUdTipZTFt1icIc,1438
71
+ svc_infra/api/fastapi/dual/router.py,sha256=y_56IQ3mUMBUge4UvcDbv9myUXWgwIbQlfOMoMtIEmU,6646
72
+ svc_infra/api/fastapi/dual/utils.py,sha256=frkZtxGVyT0oUCveqpxSRrcRwercXYs3wjhTjh8av2g,272
73
+ svc_infra/api/fastapi/dx.py,sha256=5IudyA7DfvqrzF3c3aOWGRz3oGiHNbLwGHx8eu_yuv8,4836
74
+ svc_infra/api/fastapi/ease.py,sha256=jVYtx-QcMZFob7ncwKeJ0or5IJ4OZw3phlt-An2Mtvg,7884
75
+ svc_infra/api/fastapi/http/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
76
+ svc_infra/api/fastapi/http/concurrency.py,sha256=8HMtlBy_UBBcG0hI0dOtMRSusD7cIB1iUGVinmA9ipo,543
77
+ svc_infra/api/fastapi/http/conditional.py,sha256=qwc0gM8soPKgh5EOpPAY1XsSfsx8Evq1KDisqpC5iaU,1123
78
+ svc_infra/api/fastapi/http/deprecation.py,sha256=dW8NrReVzeIqyOSBJvyImDBUM9y-0PRvZz55YJsBI2Q,715
79
+ svc_infra/api/fastapi/middleware/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
80
+ svc_infra/api/fastapi/middleware/debug.py,sha256=h7bfbgHHThBW0sra8C10kubsv6ixcipA_jeYBDvIS_o,656
81
+ svc_infra/api/fastapi/middleware/errors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
82
+ svc_infra/api/fastapi/middleware/errors/catchall.py,sha256=D8pQSO2VNZ1QWLuTK8-xIB1CnH61cqOymM3f9NBXPo4,1926
83
+ svc_infra/api/fastapi/middleware/errors/exceptions.py,sha256=j_ItdT_Wmmmluykl5uQL3BdvJ9-H7-LRxGwmKCEhevY,476
84
+ svc_infra/api/fastapi/middleware/errors/handlers.py,sha256=eEGt9DAdDB8-FAyV5dKBrrkGJIFIbSMB-3KfT_g74Dg,8644
85
+ svc_infra/api/fastapi/middleware/graceful_shutdown.py,sha256=Jxtxfbv2LijXBwHfsMaGGchPPAHykvFAe36aMZEbglw,3168
86
+ svc_infra/api/fastapi/middleware/idempotency.py,sha256=Fq1k0FfYRWd5jHpg6bVZHXKeRbsioJpybb9oeuD7Wxs,7777
87
+ svc_infra/api/fastapi/middleware/idempotency_store.py,sha256=BQN_Cq_jf_cuZRhze4EF5v0lOMQXpUWoRo7CsSTprug,5528
88
+ svc_infra/api/fastapi/middleware/optimistic_lock.py,sha256=Z5hDJgcoJMLKwE83B1YNNvlLHKpWZQs_ijwN9iBxxUM,1341
89
+ svc_infra/api/fastapi/middleware/ratelimit.py,sha256=WGGWMNXx9X47JHtxKvCy3_9BmLk9stZXq0VM26RbGdU,6139
90
+ svc_infra/api/fastapi/middleware/ratelimit_store.py,sha256=HGK89B7i7lFXq6C4OfEl6qi9UXWmALALf4Gss6Vo354,3645
91
+ svc_infra/api/fastapi/middleware/request_id.py,sha256=IYCEcxWIjcbPJTj2mQXyDLSHHKCti13SPzaC4oLt-0w,1377
92
+ svc_infra/api/fastapi/middleware/request_size_limit.py,sha256=KfP3c-mcR3qu2NZMO2gbj513FdN7WAvnuZ1y7n73tc4,1256
93
+ svc_infra/api/fastapi/middleware/timeout.py,sha256=Y4yUkWZUI3DXWqMAld5wPMcOgq5xpByMKJeDiTzQzYU,6451
94
+ svc_infra/api/fastapi/openapi/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
95
+ svc_infra/api/fastapi/openapi/apply.py,sha256=6MvD93FTTBdY6d4Veb1jLHj4UHxtQkSWE8LwMK00-DY,1665
96
+ svc_infra/api/fastapi/openapi/conventions.py,sha256=pxoxeT5Pzkrc_cPGjVpHkxyU_YGFtn_DklFvDPLNgdM,7253
97
+ svc_infra/api/fastapi/openapi/models.py,sha256=MmXMpPZQjZygajfIHaL4_3q0zluPtpRevsSyOIiE83Y,2562
98
+ svc_infra/api/fastapi/openapi/mutators.py,sha256=D5yIwgHpHvNZJGHlE07kKn9rklcGWYxG2u9uaVnlY3k,56038
99
+ svc_infra/api/fastapi/openapi/pipeline.py,sha256=9NVaKwDqihWfJf8WLSf2vi68ruit31J05vQ_e6vpRKM,657
100
+ svc_infra/api/fastapi/openapi/responses.py,sha256=pBUoJd0lltBkQBJACS1Zd1wd975gbw6dYyMEqyueRuw,1093
101
+ svc_infra/api/fastapi/openapi/security.py,sha256=N7lBvof34rtOe2Fu0Yfq-faPvGkLs0O10mnd93QAJGk,1261
102
+ svc_infra/api/fastapi/ops/add.py,sha256=VxCPEKLlJQ-D4rVE04YCfkzX_j1EEHFKiYBODj9SGww,2574
103
+ svc_infra/api/fastapi/pagination.py,sha256=-ZcWvsosGNN30Ux10Y7Ea4aMTL6ssj2Np1iw4oUpHSc,11354
104
+ svc_infra/api/fastapi/paths/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
105
+ svc_infra/api/fastapi/paths/auth.py,sha256=hy9N0QFQnpv7dBOuHStui5eP9oIGHrawa0sADIVVD64,553
106
+ svc_infra/api/fastapi/paths/generic.py,sha256=z2hAYoanpxXCksHLJyo5_GsnmmQEgslM5CaG3kVsy0E,38
107
+ svc_infra/api/fastapi/paths/prefix.py,sha256=I1xEt1lKDlOPn2Oa-y_1B-Q8JCwAPpu3_F_1YUHu_Sc,45
108
+ svc_infra/api/fastapi/paths/user.py,sha256=z8xv_A3dPhG366ezJU1c839oHbU3tEg06rbx3HUUuL0,323
109
+ svc_infra/api/fastapi/routers/__init__.py,sha256=TYPtLBl-GHTxfshsk8U3bmkRXPPhmyYYmwkLxUDaiRs,9505
110
+ svc_infra/api/fastapi/routers/ping.py,sha256=71DGaklMAkCL8g_NHdQk9LXG7C_cVem1p8qtapGtnBk,576
111
+ svc_infra/api/fastapi/setup.py,sha256=f4KFBMv1HyPQvLTVJB7lWBdDeAP4Eta3K36cjno6REs,13984
112
+ svc_infra/api/fastapi/tenancy/add.py,sha256=47lhWoHjuqbgSckJBTNGz-Mo5R6W7SQ0hQDiOGC0HU0,509
113
+ svc_infra/api/fastapi/tenancy/context.py,sha256=vLndtz_n8Q3WRB3KVrVgp9uzpv5fzEhipCfR0msOIU0,3275
114
+ svc_infra/api/fastapi/versioned.py,sha256=OQhc3cHa9hqwHexiUaZyDm1DY6PwpeAC2x--IYawoYs,3221
115
+ svc_infra/app/README.md,sha256=MqnKTVjE9txaqlcl41wAv34hWhNfc_fJXCqCTsEWNdk,5070
116
+ svc_infra/app/__init__.py,sha256=IZNV7Y5FxR8BVs6AfiNcXlrPXeVlGLgUwsuqhwaLb30,293
117
+ svc_infra/app/env.py,sha256=hNivhFBqb70a8-Uy2kM4J9PUgCF1XhHRhzMeXQI99R0,6482
118
+ svc_infra/app/logging/__init__.py,sha256=Nbu2wWySPztxvjW73yIdIi5NEnVNOrOH1PlaUWYIxIM,116
119
+ svc_infra/app/logging/add.py,sha256=MmOYRYbS4TiCb_EHVCop5tzgPBybEkJnnTqN_rrNzFc,2860
120
+ svc_infra/app/logging/filter.py,sha256=lPHUoCFoTP5AfwORCvwVe5z2Kltb0MwAXANwrcBAIdE,1992
121
+ svc_infra/app/logging/formats.py,sha256=2_ZzLRaPz1AHRjRQV2rca2JIzzA2OdIPY0oEkri5Qf8,4866
122
+ svc_infra/app/root.py,sha256=344EWBMJCduwzJ1BBo0yGAu15TkryuvOW4qBZ6Gk-8w,1635
123
+ svc_infra/billing/__init__.py,sha256=AdVxgBWibsz0xWk-Z91B7HecA-EhPMSRrXWIYPBgtMA,365
124
+ svc_infra/billing/async_service.py,sha256=-Kc6g9uDwqTfW8RoXxxgCoNmtH_03liF61K3nIBAz2s,4664
125
+ svc_infra/billing/jobs.py,sha256=Ht-Q3n6FtLI2hw33O_UxIsVHEym8tmm9SvzNqjEI9dg,8639
126
+ svc_infra/billing/models.py,sha256=TEvge5uWxJP7zTE_h9bv1N7El7H2apdLmtgthNsxdMk,6445
127
+ svc_infra/billing/quotas.py,sha256=-yPEAeUxyYqKS64wa8hwhY5v3LWepe-3SvgeeBvqshA,3475
128
+ svc_infra/billing/schemas.py,sha256=UjD5vRiHhYEBcit2sfbsHsiR5j-eZiXLREl6M465lio,926
129
+ svc_infra/billing/service.py,sha256=lXbdr75Ol5MHoDyZj8AlrAkKdzZysbxHRNklBv3pCjg,3798
130
+ svc_infra/bundled_docs/README.md,sha256=FqTieL4ADODxTnig8yehV2KdHX9bASDega52bjp5n70,338
131
+ svc_infra/bundled_docs/__init__.py,sha256=8_jF4fM-3Wf6j_mE4000_9AHcJ3tYZXO9hJY-pBEepM,63
132
+ svc_infra/bundled_docs/getting-started.md,sha256=JaMOgRUK_ajaX4SCtiE3GrhQ81wMwng6y46t0032ftU,210
133
+ svc_infra/cache/README.md,sha256=ZgIpmE0UVlGktp2nXUYv6FKJATCdkR_01v-GGxHN6Ao,10795
134
+ svc_infra/cache/__init__.py,sha256=e47ZPnKZSm3kRsslcX-sKnRbo5Ai0oFcuAHCRyVG3qI,1158
135
+ svc_infra/cache/add.py,sha256=o9QAf52Jvq3S88BAiSGKAY_fhwMCK249opYhvpx9T54,6038
136
+ svc_infra/cache/backend.py,sha256=cjc5RqiYMDNBlpGWZtWzmZAL8COwD1H_y0dpF27Ibsk,4387
137
+ svc_infra/cache/decorators.py,sha256=8xSLg8op-3JboTDD8Wk9MLmvA1XeEAKfeEOLfMfMm60,10268
138
+ svc_infra/cache/demo.py,sha256=-e9uG6EG5skmofP-XkCCg0d5NOYXmwqF3tfhmjf3UcY,2505
139
+ svc_infra/cache/keys.py,sha256=8A122Te4VI40-CpLazEPOBgibX62cyjwClM5SIFeYac,3978
140
+ svc_infra/cache/recache.py,sha256=X1n84j82T06qfwAMyEGJ_XgEKW5N9tJFVRwExd3-qGw,8861
141
+ svc_infra/cache/resources.py,sha256=RG4d54D8f_l8ioHM_YlcTNvNzMX-Dxil7Z6nGGvIrQo,7632
142
+ svc_infra/cache/tags.py,sha256=qa8SXZcnBTbtviwiCcGDUjcB27vWCwjy100L-DMuH-Y,1434
143
+ svc_infra/cache/ttl.py,sha256=_lWvNx1CTE4RcFEOUYkADd7_k4I13SLmtK0AMRUq2OM,1945
144
+ svc_infra/cache/utils.py,sha256=A5EuFSXl-8y38aDB7ZnYAdCF2qXQqE1Dro8PmF7SJtA,4878
145
+ svc_infra/cli/__init__.py,sha256=ZtEB9KLj9HYe1lRg3td-WDfi9QsHzdGB9j80y8bHJiA,1745
146
+ svc_infra/cli/__main__.py,sha256=5BjNuyet8AY-POwoF5rGt722rHQ7tJ0Vf0UFUfzzi-I,58
147
+ svc_infra/cli/cmds/__init__.py,sha256=dfnmAhH52k5qP9qqcd6zU7KlK3vmOPg-G2CE43vBzus,1876
148
+ svc_infra/cli/cmds/db/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
149
+ svc_infra/cli/cmds/db/nosql/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
150
+ svc_infra/cli/cmds/db/nosql/mongo/README.md,sha256=0u3XLeoBd0XQzXwwfEiFISMIij11TJ9iOGzrysBvsFk,1788
151
+ svc_infra/cli/cmds/db/nosql/mongo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
152
+ svc_infra/cli/cmds/db/nosql/mongo/mongo_cmds.py,sha256=vHNNLTNd5QbX598Th1azhflUHEjOmChzlEAj9yhWWLs,6142
153
+ svc_infra/cli/cmds/db/nosql/mongo/mongo_scaffold_cmds.py,sha256=r409kd7BUpQmKimJKWmj273Y_4J_FWnQAiiRHvYJcOk,4267
154
+ svc_infra/cli/cmds/db/ops_cmds.py,sha256=vfpl9JpZSUQ2bqM3LvDS2NM27Et2EteJOT76x-DiRcs,8429
155
+ svc_infra/cli/cmds/db/sql/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
156
+ svc_infra/cli/cmds/db/sql/alembic_cmds.py,sha256=hVxGRcSkCFKDTDPgpGgmP6JDYIb3iqCVPiMeEeeGbZg,10357
157
+ svc_infra/cli/cmds/db/sql/sql_export_cmds.py,sha256=9bjYXxvhcFAmYS3jbm171LdVo0JckhyK3ZXce92gAV0,2747
158
+ svc_infra/cli/cmds/db/sql/sql_scaffold_cmds.py,sha256=MKc_T_tY1Y_wQl7XTlq8GhYWMMI1q1_vcFZVPOEcNUg,4601
159
+ svc_infra/cli/cmds/docs/docs_cmds.py,sha256=qw0dD_EGlXJAq5JRs6l2_XTk8GILV8Iy7a8JmhyZa3A,4515
160
+ svc_infra/cli/cmds/dx/__init__.py,sha256=wQtl3-kOgoESlpVkjl3YFtqkOnQSIvVsOdutiaZFejM,197
161
+ svc_infra/cli/cmds/dx/dx_cmds.py,sha256=BbLfvo3ol2iwuge4o3-oLNmW7taufWhpWsCd-hOOlD0,3478
162
+ svc_infra/cli/cmds/health/__init__.py,sha256=ErUkvlEc8iomIfEmt54QgsgSV5uaUSraJdKbz2AETmw,4714
163
+ svc_infra/cli/cmds/health/health_cmds.py,sha256=LvhLmmYdrJ83fq3iPknZB8XsfJ4Ke8-0DJcgQNxwnfI,177
164
+ svc_infra/cli/cmds/help.py,sha256=a_U0MbzBTAs4WHO0e8GcdFwLUA8O5mzVXTxpyelhtiU,906
165
+ svc_infra/cli/cmds/jobs/__init__.py,sha256=U4S_2y3zgLZVfMenHRaJFBW8yqh2mUBuI291LGQVOJ8,35
166
+ svc_infra/cli/cmds/jobs/jobs_cmds.py,sha256=gE8osoFUd-kBYJXhFpbESVn2MJ7I1FNxiTA5VLmMzfc,1280
167
+ svc_infra/cli/cmds/obs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
168
+ svc_infra/cli/cmds/obs/obs_cmds.py,sha256=26hNVi7aOzM69DbiLhsBwgbZamrnvEwQRW3CHHQyTu8,6890
169
+ svc_infra/cli/cmds/sdk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
170
+ svc_infra/cli/cmds/sdk/sdk_cmds.py,sha256=UIkBvTiiPoMcHLuiEHBC8is4j0hInIoxNyIiR4J2Snk,2948
171
+ svc_infra/cli/foundation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
172
+ svc_infra/cli/foundation/runner.py,sha256=JK2LfSFQYA6IKM9Wp6xxZsagdvy-3AQr1xV_odZA948,1892
173
+ svc_infra/cli/foundation/typer_bootstrap.py,sha256=KapgH1R-qON9FuYH1KYlVx_5sJvjmAGl25pB61XCpm4,985
174
+ svc_infra/data/add.py,sha256=vHRawtaP8UZDejCI1nH1KRymnBhKrIKYmliSMQsaN6M,2240
175
+ svc_infra/data/backup.py,sha256=hTapimZAhuCqIpL019CuGwP8DUJSPvmqwGK6imZKUiQ,1670
176
+ svc_infra/data/erasure.py,sha256=fo_5N2jMB7Mdz5dy4oN0UI8xfkrWfc3aPVwyV1IqabI,1133
177
+ svc_infra/data/fixtures.py,sha256=1JgabNjK78BVz9jUGMmNknXnf0Rzv5J49StoXgtth7w,1239
178
+ svc_infra/data/retention.py,sha256=Xkc5BKpfZv5wGxEgdiV-vHKYGsdZe8VTEQTg-2Wn9tU,2014
179
+ svc_infra/db/__init__.py,sha256=CcDxjFJUG2Jm5TsiKw7TbtdFgpqplZtDu8piucdjboQ,280
180
+ svc_infra/db/crud_schema.py,sha256=ygyzvuWQT5Z8U6z-kUrQYxuyrsgOI681A31RoxB6anI,2468
181
+ svc_infra/db/inbox.py,sha256=drxLRLHaMRrCDgo_8wj12do80wDh5ssHV6LGkaM98no,1996
182
+ svc_infra/db/nosql/__init__.py,sha256=cYqfjg79Mv9z269L2_2zi1ydEHbmNYj2ERlhvzA4_CM,191
183
+ svc_infra/db/nosql/base.py,sha256=p47VVpwWvGNkyWe5RDSmGaUFyZovcyNqirMqoHFQ4QU,230
184
+ svc_infra/db/nosql/constants.py,sha256=Z9bJImxwb8D7vovASFegv8XMwaWcM28tsKJV2SjywXE,416
185
+ svc_infra/db/nosql/core.py,sha256=3MDbfKVZ5bWva-ks8Jpc62lMUQWON0DKbABVRQzPAC8,4984
186
+ svc_infra/db/nosql/indexes.py,sha256=EYHPeJbwffuwkZ751wTQWdJBGQjC8LEY6UzvY0gpDBk,2309
187
+ svc_infra/db/nosql/management.py,sha256=MLW7XgasEFXzwpprvRMAkZivhVv41wHnPiEURe9vfEU,3485
188
+ svc_infra/db/nosql/mongo/README.md,sha256=rFGck7VMGOMh9PZ8KkgDbxzZfbsWAoTJg5UWGlvK4oM,11687
189
+ svc_infra/db/nosql/mongo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
190
+ svc_infra/db/nosql/mongo/client.py,sha256=bl6Xw9f100NHAXeQ4IAiwmVq4W2sF7MIfJywP_27lWQ,1838
191
+ svc_infra/db/nosql/mongo/settings.py,sha256=SPRyHQXpZomFWRW1yn9AgednVFXhZvwi3mS1XUzhaiw,578
192
+ svc_infra/db/nosql/mongo/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
193
+ svc_infra/db/nosql/mongo/templates/documents.py.tmpl,sha256=QgXaZK9fCzRTdDITijMCvFREPrdwhe_8yfD7ht-AJgs,673
194
+ svc_infra/db/nosql/mongo/templates/resources.py.tmpl,sha256=eVCZ43WvjdrDbXuB2behxuDg8bB2kyeED0c-LpKnjC4,1463
195
+ svc_infra/db/nosql/mongo/templates/schemas.py.tmpl,sha256=ovHotwcEl06pjPDyT2pkWgF19mWIsyO75nFt1qvLsqo,841
196
+ svc_infra/db/nosql/repository.py,sha256=ACH_YWmWC7pUKWg6rVu7ANmc_sAU7rMmatqEtCgAWso,7722
197
+ svc_infra/db/nosql/resource.py,sha256=FRBOZArvvlYpP4kO98Oq9YiQR9iihCqGhaeVGJgB5pA,2963
198
+ svc_infra/db/nosql/scaffold.py,sha256=nSbqHTm_weeuwa6Iw3Caxr8gyr_LxeRea5I1Eqd9XBA,4851
199
+ svc_infra/db/nosql/service.py,sha256=w1tfnsdzjCBOyNx9PK1AEvhCX0awDmEzPznz9oeXZXg,1746
200
+ svc_infra/db/nosql/service_with_hooks.py,sha256=rNH6renb-ppc8Y07jX5eSQnkkhJct2IZCq7mM9aBb48,747
201
+ svc_infra/db/nosql/types.py,sha256=aysF0wYqnWPue0gspWsrLRQFrm47jJ04qCWlOTlYVl4,850
202
+ svc_infra/db/nosql/utils.py,sha256=3u7X8WEPO1Cwy1SmZHmFMMbDfu1HhapJUAFbSMe3J9g,3524
203
+ svc_infra/db/ops.py,sha256=SmVHlandssC-iuAvbnmE3ifHJAovj2eiMk0SsinVSiA,11690
204
+ svc_infra/db/outbox.py,sha256=51LG_-473XGyQrnBmjTuK6nwOuci8iGzgVW77BnCnaA,3391
205
+ svc_infra/db/sql/README.md,sha256=OI1T7SiY4_f0eTWQGtIeUsgkFqzvloh1vctOm6nvIvU,8581
206
+ svc_infra/db/sql/__init__.py,sha256=PkDutfhzofY0jbE83ZuxbrvXhogvP1tmk5MniyfwQws,159
207
+ svc_infra/db/sql/apikey.py,sha256=ImXAiIG0D5mf7IRpjnVYX7vpd1wewDvy6GU3fcRpLtg,5396
208
+ svc_infra/db/sql/authref.py,sha256=ppZ7a__Jkauk2o3-qM-fut0tKfOGVan1mb6qxDUVDwM,2277
209
+ svc_infra/db/sql/base.py,sha256=yeOM4Xo2CtTzsfx0hN8KLFTgOPZp6BrbV7Omz_bZUMg,317
210
+ svc_infra/db/sql/constants.py,sha256=m73w8M1kjHHuFZo_yo57QKyU5tb0dgFNHR4a4RPwdi4,1883
211
+ svc_infra/db/sql/core.py,sha256=XvOecKKIXaOv1Cvyf2v-yNHcbiV9LrtplucPi0mki3U,10882
212
+ svc_infra/db/sql/management.py,sha256=_GIOlVn4YlGfVw-_9FgkYbkpLPlfWlHeveD0ylf1r9A,3694
213
+ svc_infra/db/sql/repository.py,sha256=DPi6OLRVWKKLpbav86aUMlmgzoobi5BaV5Rg6UuKQus,8137
214
+ svc_infra/db/sql/resource.py,sha256=CfBmRvMq_1-cgYBS9uc_G4i1W5e6wk6zo4MGdKTPT9I,1194
215
+ svc_infra/db/sql/scaffold.py,sha256=6DwCnc78v1JwmTqSyl31PEaF3skgxC1G-vqpu07NErI,9139
216
+ svc_infra/db/sql/service.py,sha256=_bWcG4Z0-eWTqT12J0Yo-WBzgoCidLe6TWqeEm2OjaI,2916
217
+ svc_infra/db/sql/service_with_hooks.py,sha256=E2VHC-nqDp3AAop37WIM9nWyfTOsxzsa7W6jCFWxl9Q,721
218
+ svc_infra/db/sql/templates/__init__.py,sha256=atHi2TYS0oe8ZzUv2JIMSYdPduuyvu8RcOQASo7SqwM,48
219
+ svc_infra/db/sql/templates/models_schemas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
220
+ svc_infra/db/sql/templates/models_schemas/auth/models.py.tmpl,sha256=ROR13DZETuDOTrIXqb0XIdJeK-FMLkkfMor2lMMw-Kw,7573
221
+ svc_infra/db/sql/templates/models_schemas/auth/schemas.py.tmpl,sha256=EVLGBBtQIlYXz0MN4yqAgbYLw0BdYawpZSFlPiw879g,2872
222
+ svc_infra/db/sql/templates/models_schemas/entity/models.py.tmpl,sha256=cSUAfYgATv2SI0NQoHkn9Bzvt7RbOZ3_V8_p_VQsNMk,4349
223
+ svc_infra/db/sql/templates/models_schemas/entity/schemas.py.tmpl,sha256=xHTXk8u2uiqmQe8XpXjGAPg8pDpdr0rLtsSOC_fo9vo,1032
224
+ svc_infra/db/sql/templates/setup/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
225
+ svc_infra/db/sql/templates/setup/alembic.ini.tmpl,sha256=7SHSOyUq9S7XqVdKpWLJW7gIWadv58t4AIooa306gDo,771
226
+ svc_infra/db/sql/templates/setup/env_async.py.tmpl,sha256=yJyf4zw5fHaHOvurfFJb-XEqEArlnOksMNeGWgo-7dc,13908
227
+ svc_infra/db/sql/templates/setup/env_sync.py.tmpl,sha256=EiH8OS9uN-6IUT4p-XtmziqSwbq6-NjoojW9X6o1NSo,15357
228
+ svc_infra/db/sql/templates/setup/script.py.mako.tmpl,sha256=RiEMqF6dTN0S_lSRr90w5K2VtyK0_C81kBPZ02qQDZU,588
229
+ svc_infra/db/sql/tenant.py,sha256=Nynwr-yOQsaLYYsJ9CG3n2G4zGouCCBurtqGaS31nqk,2865
230
+ svc_infra/db/sql/types.py,sha256=aDcYS-lEb3Aw9nlc8D67wyS5rmE9ZOkblxPjPFbMM_0,863
231
+ svc_infra/db/sql/uniq.py,sha256=IxW7SpgOTcHEAMe2oaDnuYFvj7YOfyjCpZRXdR45yP8,2530
232
+ svc_infra/db/sql/uniq_hooks.py,sha256=syGj0-5URdI0268i77yFi1h-8TpA4sLDI6LGuSwpTcY,4384
233
+ svc_infra/db/sql/utils.py,sha256=1Bm-d67J6y5zNDEF3Usjl6Ld9oecW0oQjGoxWRhjxDk,35267
234
+ svc_infra/db/sql/versioning.py,sha256=okZu2ad5RAFXNLXJgGpcQvZ5bc6gPjRWzwiBT0rEJJw,400
235
+ svc_infra/db/utils.py,sha256=aTD49VJSEu319kIWJ1uijUoP51co4lNJ3S0_tvuyGio,802
236
+ svc_infra/deploy/__init__.py,sha256=xYD12eNWuOr9WWlvqFscjosCNQejvodwKGCYQiT1CwM,14863
237
+ svc_infra/documents/__init__.py,sha256=eTzJHwjeKxVG9VyVtECOVlZ2E0EyUQx8w7Ll8FWXHiA,2853
238
+ svc_infra/documents/add.py,sha256=Cyx1BdGw1PgVJOCsdJ4l4jBN01sF_HQZUug7kQvLIf0,7974
239
+ svc_infra/documents/ease.py,sha256=hMf7RJ_eCzwbvJH2DRlHtqZXeO1ylw8ZT1pEVMHfIGw,6266
240
+ svc_infra/documents/models.py,sha256=2emkuEUoPnRUV08sqJFxCshSs2vPUE15ZIbgCdaYUjM,4378
241
+ svc_infra/documents/storage.py,sha256=yJ2tf2AmHcFLqmeZamE6neuTDXMVZgvXHr3RFxNXC7M,7371
242
+ svc_infra/dx/add.py,sha256=5hcAKMp1JVq4GK3ERvSmBDiqQDN_xRDxdRLHnI5gVUM,1480
243
+ svc_infra/dx/changelog.py,sha256=9SD29ZzKzbGTA6kHQXiPLtb7uueL1wrRiiLE2qMzz8o,1941
244
+ svc_infra/dx/checks.py,sha256=iB2PUJP7bO31yj79MktrnerfR2yeLGZAnipEZY74mzc,2328
245
+ svc_infra/exceptions.py,sha256=_-1rIQB6OIbQNflzOHEksB5zF12pmapeklRjnxsQoIE,3852
246
+ svc_infra/health/__init__.py,sha256=etHNGsKYhArEF9C-dw7Nw-NGFlpZY_qzfEgglKx0wHk,27513
247
+ svc_infra/http/__init__.py,sha256=K79-aGyq_JdsxhyxispQlnygvf9LhU0_NJQcFYlWB9I,249
248
+ svc_infra/http/client.py,sha256=2ctGzjc5sKww-mbNLSujEb2lCMfiFEKTppMmhGvloA8,3659
249
+ svc_infra/jobs/builtins/outbox_processor.py,sha256=GlKuTC4Lt8yLYnCLokLBEPXHWRVNw3tQNzMu8Uas_qA,1269
250
+ svc_infra/jobs/builtins/webhook_delivery.py,sha256=TKvtpFWw2GLtfi16vSytptbjeAaROA6lHMhfKEIXyxQ,3769
251
+ svc_infra/jobs/easy.py,sha256=tL8UYvpYoqNDo_uLH5LF-7sBSyLEsH_JnBF_xbSU29c,997
252
+ svc_infra/jobs/loader.py,sha256=zz-dB2hlrjWI-YIbqQuY-ux912m5CiUHYezGn1y3DZQ,1286
253
+ svc_infra/jobs/queue.py,sha256=fwHlx-exujSIAAWONLLM8TKyHjr_PBq_1XaOR16LhhQ,3722
254
+ svc_infra/jobs/redis_queue.py,sha256=04xOPfOz-TrEk2Xjvn3eUkLqMNVK1YJSQzwtvxGY13s,10204
255
+ svc_infra/jobs/runner.py,sha256=b-vOW-mkuo-7VsEe3-EiQ7FR_CwRAMPTcJhej8inh88,2798
256
+ svc_infra/jobs/scheduler.py,sha256=KMvS3Jh9nYZZtV5llyDWwZ92-F3ePZhT58gopUdWh00,1590
257
+ svc_infra/jobs/worker.py,sha256=_Xfnhot3WOpDJNtCO5mSds-10sN1Ye2ltDBo_WZ2VpY,1099
258
+ svc_infra/loaders/__init__.py,sha256=KHhV8kWVskOLCS9KAcmR-VHdjU29u0zGTJcMQTrTIDQ,5523
259
+ svc_infra/loaders/base.py,sha256=D5akMTVD7Hnz2kgabSS8gvskIQnwvoJRVLqbXbK3KFQ,4360
260
+ svc_infra/loaders/github.py,sha256=1D6y0Z_FhASTGWbqLJWoLF1bT7OEOeUv1hGuFRSd4aM,11157
261
+ svc_infra/loaders/models.py,sha256=Yb5XVUS8Nv47P1KBkwuq3zED2W-jJ80mVDeSvGbralw,4913
262
+ svc_infra/loaders/url.py,sha256=2PwJfqVfxgA5hf01JUqqhG5KcrZrzTMXukbS1YYFzyo,8208
263
+ svc_infra/logging/__init__.py,sha256=Nd83GtYOXKMoGhpwhjV_XY0GH3Fit6Vr4CDIeM2HtGM,11212
264
+ svc_infra/mcp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
265
+ svc_infra/mcp/svc_infra_mcp.py,sha256=HLZCtCOO6siSFz84FKVs4_sJdL2XSoNfdJuFvEB_6zw,3582
266
+ svc_infra/obs/README.md,sha256=pmd6AyFZW3GCCi0sr3uTHrPj5KgAI8rrXw8QPkrf1R8,8021
267
+ svc_infra/obs/__init__.py,sha256=t5DgkiuuhHnfAHChzYqCI1-Fpr68iQ0A1nHOLFIlAuM,75
268
+ svc_infra/obs/add.py,sha256=B1RjxaGRRfUqgSeY2VupUKNBl7KiZHdfGPU5YLzd1_8,4167
269
+ svc_infra/obs/cloud_dash.py,sha256=Y6qJheAVo2dMV-3frISOzZwhffu6yraWVYf44BrtgoE,4380
270
+ svc_infra/obs/grafana/dashboards/http-overview.json,sha256=WVwkMazdfRAAUdLwGItfzePL9sXuDdhlLVbOLtk1Vic,1042
271
+ svc_infra/obs/metrics/__init__.py,sha256=cb86qOob-RzE-272AoBeZyfZHyde3D6QTcFYTHeYL1g,1420
272
+ svc_infra/obs/metrics/asgi.py,sha256=yIC9K3QA1t9IXKIUkt6d-dSpzpYJoRUT57YzyydS6zU,8999
273
+ svc_infra/obs/metrics/base.py,sha256=IHpNJk12whfBEerW9Qkj2fV5Iiw_H-Od4gqPcdOVWNs,2649
274
+ svc_infra/obs/metrics/http.py,sha256=Bbi5hY6yxgLYiDZnSWxM0WPz8y8I_xzm_dOptkNMIK4,3018
275
+ svc_infra/obs/metrics/sqlalchemy.py,sha256=nDyVY-nejOXe1jJyw-aX4FIIvAxr0oERewMFoieYvsc,2562
276
+ svc_infra/obs/metrics.py,sha256=V3yG9ftEsOc3W8rx-mZVIjqtsvY3Pf2OI43PwANvSzs,1475
277
+ svc_infra/obs/providers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
278
+ svc_infra/obs/providers/compose_cloud/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
279
+ svc_infra/obs/providers/compose_cloud/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
280
+ svc_infra/obs/providers/compose_cloud/templates/agent.yaml.tmpl,sha256=hYv35yG92XEP_4joMFmMcVTD-4fG_zHitmChjreUJh4,516
281
+ svc_infra/obs/providers/compose_cloud/templates/docker-compose.cloud.yml.tmpl,sha256=zEXb_4hvoU7P24QzgrC6OopVlabxM6fqSES-X-6IoEg,910
282
+ svc_infra/obs/providers/grafana/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
283
+ svc_infra/obs/providers/grafana/dashboards/00_overview.json,sha256=nQneJP-dV_BTfkrLm8411dKSQnzkfIJ7GWackyYMjA4,5653
284
+ svc_infra/obs/providers/grafana/dashboards/10_http.json,sha256=r801Y9_DUreN8ZRTqxghVBcq4ogj1-F3zI0q7T06__g,2675
285
+ svc_infra/obs/providers/grafana/dashboards/20_db.json,sha256=BJcC5o26HF4aKpp7R4WxSWXEpVkKTT8MgFYnoFmfUIY,1439
286
+ svc_infra/obs/providers/grafana/dashboards/30_runtime.json,sha256=y2j2XGuiIviL3UqcUBJfpxJ9nLni2Uk7phILoSlv5Eg,1509
287
+ svc_infra/obs/providers/grafana/dashboards/40_clients.json,sha256=cjCxJfoKC7LguXeJ1UGbqzLym10prnA2gCovHfRTUjU,755
288
+ svc_infra/obs/providers/grafana/dashboards/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
289
+ svc_infra/obs/providers/grafana/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
290
+ svc_infra/obs/providers/grafana/templates/docker-compose.yml.tmpl,sha256=9s9Q6BXqxSIOzoZG_yVMipne0bmAUM3IwfRfhnbf-C4,907
291
+ svc_infra/obs/providers/grafana/templates/prometheus.yml.tmpl,sha256=0ZFWPz4zPbFJxYONVB9fGf0ikvWA7YKOJ1nT4ANwg20,388
292
+ svc_infra/obs/providers/grafana/templates/provisioning/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
293
+ svc_infra/obs/providers/grafana/templates/provisioning/dashboards.yml,sha256=S3uvSPMPB2W2XDcfux-AXV4M_OFqsZZE0Y3BCkTHDOg,230
294
+ svc_infra/obs/providers/grafana/templates/provisioning/datasource.yml,sha256=-p45t2EiFGY4tiaczRX7zvdYZ8oBiE4uxu_4tZ11G1g,173
295
+ svc_infra/obs/settings.py,sha256=Z3BbYJ_NGwTPiRFW6hOJ3yW-eWt-UnYUTnUyFX6pkoA,872
296
+ svc_infra/obs/templates/grafana_dashboard.json,sha256=T3gOpf8oy5p8ogkdFYa3HE3J-ylcsys1jsb7F-qZ1Sk,1460
297
+ svc_infra/obs/templates/prometheus_rules.yml,sha256=VcFQ0Pcuxcjb1i50bsi-aWYQBg4xr9M2Ed0_Ciaw1M0,1014
298
+ svc_infra/obs/templates/sidecars/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
299
+ svc_infra/obs/templates/sidecars/compose/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
300
+ svc_infra/obs/templates/sidecars/compose/agent.yaml,sha256=hYv35yG92XEP_4joMFmMcVTD-4fG_zHitmChjreUJh4,516
301
+ svc_infra/obs/templates/sidecars/compose/docker-compose.yml,sha256=zEXb_4hvoU7P24QzgrC6OopVlabxM6fqSES-X-6IoEg,910
302
+ svc_infra/obs/templates/sidecars/fly/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
303
+ svc_infra/obs/templates/sidecars/fly/agent.yaml,sha256=hYv35yG92XEP_4joMFmMcVTD-4fG_zHitmChjreUJh4,516
304
+ svc_infra/obs/templates/sidecars/fly/fly.toml.fragment,sha256=KHaU9xIxj9w-nzLy4BVWmXg8ExbWjAO6o4X-k2QxPgc,498
305
+ svc_infra/obs/templates/sidecars/k8s/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
306
+ svc_infra/obs/templates/sidecars/k8s/configmap.yaml,sha256=Eew_EdckhcpmHYFDX-6o57gmg0E9PrPfD-q8ypr6Kgc,644
307
+ svc_infra/obs/templates/sidecars/k8s/deployment.yaml,sha256=uK47jXluJyoYnfXX13fUf1QyFfSUASiAo8dp7Ad6jiQ,1344
308
+ svc_infra/obs/templates/sidecars/railway/Dockerfile,sha256=Y4iLDmBmm2bkIqPlC0vYwJr8Q1r9_ehR16PWzYpSnAI,151
309
+ svc_infra/obs/templates/sidecars/railway/README.md,sha256=3tFBJPKvmxjg3FjtfGYLwBEuyMrHbAluBc7XkXb7XVM,292
310
+ svc_infra/obs/templates/sidecars/railway/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
311
+ svc_infra/obs/templates/sidecars/railway/agent.yaml,sha256=hYv35yG92XEP_4joMFmMcVTD-4fG_zHitmChjreUJh4,516
312
+ svc_infra/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
313
+ svc_infra/security/add.py,sha256=wku6M1xJjdb-EVJ7BYUBuOMM70NNEpW9KIFCwPPTMo0,6681
314
+ svc_infra/security/audit.py,sha256=NMoMy53LMBMOQJz2-FLwgfCUgeyG57IZMQEMdBOPXl8,6271
315
+ svc_infra/security/audit_service.py,sha256=74pWcn9WVkTMJDSt_49v940-zpdUXDFUj4XVdSJx09s,2349
316
+ svc_infra/security/headers.py,sha256=CcdNC1j14oj6LS8-TMW2K-l7LIfXYlL12mw8R32b2R0,2074
317
+ svc_infra/security/hibp.py,sha256=l3u_7WXqg2-UchwrE21q9ty2syWRp1wHA5gbHg8qMcI,3050
318
+ svc_infra/security/jwt_rotation.py,sha256=YECgFHqkedtptNePu3s-txez7Gb9_v-rzgH99YIbqWE,3434
319
+ svc_infra/security/lockout.py,sha256=Ppu6CCguKgk2plbTXxgMQGZHd5d2MGDDWmqw5O3Y-lY,3095
320
+ svc_infra/security/models.py,sha256=jhN9uGpD5dj22_W26zagRdpzVcF1_AB5UiuzoMIVNxk,10178
321
+ svc_infra/security/oauth_models.py,sha256=mK2ayy9a8ylvacfY4ENaFIVnJVnNot6QcIjNpxcLMTw,2260
322
+ svc_infra/security/org_invites.py,sha256=4NSwUsFa3jkv-AA99pPhagnsSB_ctOIpNp2k07nr8Uo,3919
323
+ svc_infra/security/passwords.py,sha256=Otg2TyCANQuZsyypJ9a-OcDwd1d4L4M6CKjdIidJFHc,2481
324
+ svc_infra/security/permissions.py,sha256=C0fbG6T2iQ2RPv37v3Mjl4lUmgLUgAcOZixFWgdSwRA,5237
325
+ svc_infra/security/session.py,sha256=ogzO15QkyuLZT2ZrGj3iyISEV-wBVYrLsHkdk7iAj3s,2865
326
+ svc_infra/security/signed_cookies.py,sha256=9v2FjVu-2YWoMhnUayivLv-jfFGguBBoyVRGZ4FOdxo,3191
327
+ svc_infra/storage/__init__.py,sha256=M_djbln1nv1YhOANHu_XZDi_fZ37hTnp2qMXiHYOlJo,2828
328
+ svc_infra/storage/add.py,sha256=7vOIPY2vR144TbrN5pJbwK5vC9syWH7Zr3AA9hJugx8,8308
329
+ svc_infra/storage/backends/__init__.py,sha256=zlbPU7TbDKg-VhWSZaRA-qTHfD17bx-ZQ445kDqlB-o,205
330
+ svc_infra/storage/backends/local.py,sha256=3oB0d3xrfy8yl6FSUuXvHLH8QbvCWOAiy2rn8d6F-CA,10776
331
+ svc_infra/storage/backends/memory.py,sha256=azTNs5qheCMnQ52hEif-n9xL-JAU6bUdgdXGSRfid0M,6489
332
+ svc_infra/storage/backends/s3.py,sha256=ATE_5yAu0w7R_uRIOPeQqz4lJQlAOYc12lOphhe4D2k,11607
333
+ svc_infra/storage/base.py,sha256=l6BmP9TVAwCZbjHtXaaLSnCSvYzTAx0Du2zadnQRmmg,6225
334
+ svc_infra/storage/easy.py,sha256=IRDWF0JMvhmp0itV4lJaVi3c0LWUPs_TyLNbZbkNm04,6182
335
+ svc_infra/storage/settings.py,sha256=Z0aU8mzzj1XGVkesMWB1YDgq1Uibac4Qhot5u95s84o,6715
336
+ svc_infra/testing/__init__.py,sha256=Gc7uUhjj9nuwoC9YV7xmdNQsdu1iYB9X0Bd0z1Vlb2k,18800
337
+ svc_infra/utils.py,sha256=l8RpKnsvRdOPPID_tZY3TyQkj_aQzs847Nrp-Goykto,977
338
+ svc_infra/webhooks/__init__.py,sha256=SBHcDPct877QvoQwe2cnm27R04a3G2sa51Ak2akvV08,1992
339
+ svc_infra/webhooks/add.py,sha256=Wc2BYJo0Xrd_0zZOhd0Gz3-VP_R1T34kNP1eGk5hi_k,12745
340
+ svc_infra/webhooks/encryption.py,sha256=y9fv66hGH8JaO59tVXNHe3FwnTNLbTNZQN8FY_euqq0,3598
341
+ svc_infra/webhooks/fastapi.py,sha256=AVq8zPCDPMC_N9x4zUhhLH-mBUy_9RNUhwwBndPGrkY,1131
342
+ svc_infra/webhooks/router.py,sha256=6JvAVPMEth_xxHX-IsIOcyMgHX7g1H0OVxVXKLuMp9w,1596
343
+ svc_infra/webhooks/service.py,sha256=OyWMz6pDK6pWuRsboH3V1jtkaZEeDb3ToUau0qyPkas,2417
344
+ svc_infra/webhooks/signing.py,sha256=4H4rbwBTuS9hGZjpLLeWIPi8kkwGrr62LQCCOidf2TE,913
345
+ svc_infra/websocket/__init__.py,sha256=W7Q78rr2IfMWoJd4b2Nw2hSexISegtD6KIbZ8y41xds,2243
346
+ svc_infra/websocket/add.py,sha256=kP5JETRyT5J38pjA_-4QZ26gx-tDeZV2ErNbE9J5XqY,4208
347
+ svc_infra/websocket/client.py,sha256=oJZ9zMkpWJqDjfG0scV4IWhAY-HeelaUV1sxvUOw-u4,9358
348
+ svc_infra/websocket/config.py,sha256=ECBicNItzQ80TaL4msB9VAHlTK23sspg8lwg-4WUhuI,2568
349
+ svc_infra/websocket/easy.py,sha256=ACe594T4l_nwqagOZsotAkuK0ocZ5JJdwGRE8ALhWRU,2077
350
+ svc_infra/websocket/exceptions.py,sha256=cbJMXhL1dW-tibhuTtR_RGlI_8KLFsrUu-n2HXyNczU,1566
351
+ svc_infra/websocket/manager.py,sha256=wIZ668goPONhK_Grfo8-APwHSQc8aaBcslA4UnewfUI,10918
352
+ svc_infra/websocket/models.py,sha256=SVY6owOiy2hDpUsu5mk9f7qSy371gHbmZkWcJI56qUs,1512
353
+ svc_infra-0.1.706.dist-info/LICENSE,sha256=_tWnB6zcItk5i81sT6mv6mErTI-29rXngzXYgS-efco,1062
354
+ svc_infra-0.1.706.dist-info/METADATA,sha256=QBC03QuF2JgnF__yUrG6Vqz0ty_hwMNrWHyCVpoukMA,12397
355
+ svc_infra-0.1.706.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
356
+ svc_infra-0.1.706.dist-info/entry_points.txt,sha256=6x_nZOsjvn6hRZsMgZLgTasaCSKCgAjsGhACe_CiP0U,48
357
+ svc_infra-0.1.706.dist-info/RECORD,,
@@ -1,79 +0,0 @@
1
- Metadata-Version: 2.3
2
- Name: svc-infra
3
- Version: 0.1.589
4
- Summary: Infrastructure for building and deploying prod-ready services
5
- License: MIT
6
- Keywords: fastapi,sqlalchemy,alembic,auth,infra,async,pydantic
7
- Author: Ali Khatami
8
- Author-email: aliikhatami94@gmail.com
9
- Requires-Python: >=3.11,<4.0
10
- Classifier: Development Status :: 4 - Beta
11
- Classifier: Framework :: FastAPI
12
- Classifier: Intended Audience :: Developers
13
- Classifier: License :: OSI Approved :: MIT License
14
- Classifier: Programming Language :: Python :: 3
15
- Classifier: Programming Language :: Python :: 3.11
16
- Classifier: Programming Language :: Python :: 3.12
17
- Classifier: Programming Language :: Python :: 3.13
18
- Classifier: Programming Language :: Python :: 3 :: Only
19
- Classifier: Typing :: Typed
20
- Provides-Extra: duckdb
21
- Provides-Extra: metrics
22
- Provides-Extra: mssql
23
- Provides-Extra: mysql
24
- Provides-Extra: pg
25
- Provides-Extra: pg2
26
- Provides-Extra: redshift
27
- Provides-Extra: snowflake
28
- Provides-Extra: sqlite
29
- Requires-Dist: ai-infra (>=0.1.63,<0.2.0)
30
- Requires-Dist: aiosqlite (>=0.20.0,<0.21.0) ; extra == "sqlite"
31
- Requires-Dist: alembic (>=1.13.2,<2.0.0)
32
- Requires-Dist: asyncpg (>=0.30.0,<0.31.0) ; extra == "pg"
33
- Requires-Dist: authlib (>=1.6.2,<2.0.0)
34
- Requires-Dist: cashews[redis] (>=7.4.1,<8.0.0)
35
- Requires-Dist: duckdb (>=1.1.3,<2.0.0) ; extra == "duckdb"
36
- Requires-Dist: email-validator (>=2.2.0,<3.0.0)
37
- Requires-Dist: fastapi (>=0.116.1,<0.117.0)
38
- Requires-Dist: fastapi-users-db-sqlalchemy (>=7.0.0,<8.0.0)
39
- Requires-Dist: fastapi-users[oauth] (>=14.0.1,<15.0.0)
40
- Requires-Dist: greenlet (>=3,<4)
41
- Requires-Dist: httpx (>=0.28.1,<0.29.0)
42
- Requires-Dist: httpx-oauth (>=0.16.1,<0.17.0)
43
- Requires-Dist: itsdangerous (>=2.2.0,<3.0.0)
44
- Requires-Dist: mcp (>=1.13.0,<2.0.0)
45
- Requires-Dist: motor (>=3.7.1,<4.0.0)
46
- Requires-Dist: mysqlclient (>=2.2.4,<3.0.0) ; extra == "mysql"
47
- Requires-Dist: opentelemetry-exporter-otlp (>=1.36.0,<2.0.0)
48
- Requires-Dist: opentelemetry-instrumentation-fastapi (>=0.57b0,<0.58)
49
- Requires-Dist: opentelemetry-instrumentation-httpx (>=0.57b0,<0.58)
50
- Requires-Dist: opentelemetry-instrumentation-requests (>=0.57b0,<0.58)
51
- Requires-Dist: opentelemetry-instrumentation-sqlalchemy (>=0.57b0,<0.58)
52
- Requires-Dist: opentelemetry-propagator-b3 (>=1.36.0,<2.0.0)
53
- Requires-Dist: opentelemetry-sdk (>=1.36.0,<2.0.0)
54
- Requires-Dist: passlib[bcrypt] (>=1.7.4,<2.0.0)
55
- Requires-Dist: pre-commit (>=4.3.0,<5.0.0)
56
- Requires-Dist: prometheus-client (>=0.22.1,<0.23.0) ; extra == "metrics"
57
- Requires-Dist: psycopg2-binary (>=2.9.10,<3.0.0) ; extra == "pg2"
58
- Requires-Dist: psycopg[binary] (>=3.2.10,<4.0.0) ; extra == "pg"
59
- Requires-Dist: pydantic-settings (>=2.10.1,<3.0.0)
60
- Requires-Dist: pymysql (>=1.1.1,<2.0.0) ; extra == "mysql"
61
- Requires-Dist: pyodbc (>=5.1.0,<6.0.0) ; extra == "mssql"
62
- Requires-Dist: pyotp (>=2.9.0,<3.0.0)
63
- Requires-Dist: python-dotenv (>=1.1.1,<2.0.0)
64
- Requires-Dist: redis (>=6.4.0,<7.0.0)
65
- Requires-Dist: redshift-connector (>=2.0.918,<3.0.0) ; extra == "redshift"
66
- Requires-Dist: snowflake-connector-python (>=3.12.0,<4.0.0) ; extra == "snowflake"
67
- Requires-Dist: sqlalchemy[asyncio] (>=2.0.43,<3.0.0)
68
- Requires-Dist: stripe (>=13.0.1,<14.0.0)
69
- Requires-Dist: typer (>=0.16.1,<0.17.0)
70
- Project-URL: Documentation, https://github.com/your-org/svc-infra#readme
71
- Project-URL: Homepage, https://github.com/your-org/svc-infra
72
- Project-URL: Issues, https://github.com/your-org/svc-infra/issues
73
- Project-URL: Repository, https://github.com/your-org/svc-infra
74
- Description-Content-Type: text/markdown
75
-
76
- # svc-infra
77
-
78
- Will add description later.
79
-