svc-infra 0.1.595__py3-none-any.whl → 1.1.0__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 (274) hide show
  1. svc_infra/__init__.py +58 -2
  2. svc_infra/apf_payments/models.py +68 -38
  3. svc_infra/apf_payments/provider/__init__.py +2 -2
  4. svc_infra/apf_payments/provider/aiydan.py +39 -23
  5. svc_infra/apf_payments/provider/base.py +8 -3
  6. svc_infra/apf_payments/provider/registry.py +3 -5
  7. svc_infra/apf_payments/provider/stripe.py +74 -52
  8. svc_infra/apf_payments/schemas.py +84 -83
  9. svc_infra/apf_payments/service.py +27 -16
  10. svc_infra/apf_payments/settings.py +12 -11
  11. svc_infra/api/__init__.py +61 -0
  12. svc_infra/api/fastapi/__init__.py +34 -0
  13. svc_infra/api/fastapi/admin/__init__.py +3 -0
  14. svc_infra/api/fastapi/admin/add.py +240 -0
  15. svc_infra/api/fastapi/apf_payments/router.py +94 -73
  16. svc_infra/api/fastapi/apf_payments/setup.py +10 -9
  17. svc_infra/api/fastapi/auth/__init__.py +65 -0
  18. svc_infra/api/fastapi/auth/_cookies.py +1 -3
  19. svc_infra/api/fastapi/auth/add.py +14 -15
  20. svc_infra/api/fastapi/auth/gaurd.py +32 -20
  21. svc_infra/api/fastapi/auth/mfa/models.py +3 -4
  22. svc_infra/api/fastapi/auth/mfa/pre_auth.py +13 -9
  23. svc_infra/api/fastapi/auth/mfa/router.py +9 -8
  24. svc_infra/api/fastapi/auth/mfa/security.py +4 -7
  25. svc_infra/api/fastapi/auth/mfa/utils.py +5 -3
  26. svc_infra/api/fastapi/auth/policy.py +0 -1
  27. svc_infra/api/fastapi/auth/providers.py +3 -3
  28. svc_infra/api/fastapi/auth/routers/apikey_router.py +19 -21
  29. svc_infra/api/fastapi/auth/routers/oauth_router.py +98 -52
  30. svc_infra/api/fastapi/auth/routers/session_router.py +6 -5
  31. svc_infra/api/fastapi/auth/security.py +25 -15
  32. svc_infra/api/fastapi/auth/sender.py +5 -0
  33. svc_infra/api/fastapi/auth/settings.py +18 -19
  34. svc_infra/api/fastapi/auth/state.py +5 -4
  35. svc_infra/api/fastapi/auth/ws_security.py +275 -0
  36. svc_infra/api/fastapi/billing/router.py +71 -0
  37. svc_infra/api/fastapi/billing/setup.py +19 -0
  38. svc_infra/api/fastapi/cache/add.py +9 -5
  39. svc_infra/api/fastapi/db/__init__.py +5 -1
  40. svc_infra/api/fastapi/db/http.py +10 -9
  41. svc_infra/api/fastapi/db/nosql/__init__.py +39 -1
  42. svc_infra/api/fastapi/db/nosql/mongo/add.py +35 -30
  43. svc_infra/api/fastapi/db/nosql/mongo/crud_router.py +39 -21
  44. svc_infra/api/fastapi/db/sql/__init__.py +5 -1
  45. svc_infra/api/fastapi/db/sql/add.py +62 -25
  46. svc_infra/api/fastapi/db/sql/crud_router.py +205 -30
  47. svc_infra/api/fastapi/db/sql/session.py +19 -2
  48. svc_infra/api/fastapi/db/sql/users.py +18 -9
  49. svc_infra/api/fastapi/dependencies/ratelimit.py +76 -14
  50. svc_infra/api/fastapi/docs/add.py +163 -0
  51. svc_infra/api/fastapi/docs/landing.py +6 -6
  52. svc_infra/api/fastapi/docs/scoped.py +75 -36
  53. svc_infra/api/fastapi/dual/__init__.py +12 -2
  54. svc_infra/api/fastapi/dual/dualize.py +2 -2
  55. svc_infra/api/fastapi/dual/protected.py +123 -10
  56. svc_infra/api/fastapi/dual/public.py +25 -0
  57. svc_infra/api/fastapi/dual/router.py +18 -8
  58. svc_infra/api/fastapi/dx.py +33 -2
  59. svc_infra/api/fastapi/ease.py +59 -7
  60. svc_infra/api/fastapi/http/concurrency.py +2 -1
  61. svc_infra/api/fastapi/http/conditional.py +2 -2
  62. svc_infra/api/fastapi/middleware/debug.py +4 -1
  63. svc_infra/api/fastapi/middleware/errors/exceptions.py +2 -5
  64. svc_infra/api/fastapi/middleware/errors/handlers.py +50 -10
  65. svc_infra/api/fastapi/middleware/graceful_shutdown.py +95 -0
  66. svc_infra/api/fastapi/middleware/idempotency.py +190 -68
  67. svc_infra/api/fastapi/middleware/idempotency_store.py +187 -0
  68. svc_infra/api/fastapi/middleware/optimistic_lock.py +39 -0
  69. svc_infra/api/fastapi/middleware/ratelimit.py +125 -28
  70. svc_infra/api/fastapi/middleware/ratelimit_store.py +45 -13
  71. svc_infra/api/fastapi/middleware/request_id.py +24 -10
  72. svc_infra/api/fastapi/middleware/request_size_limit.py +3 -3
  73. svc_infra/api/fastapi/middleware/timeout.py +176 -0
  74. svc_infra/api/fastapi/object_router.py +1060 -0
  75. svc_infra/api/fastapi/openapi/apply.py +4 -3
  76. svc_infra/api/fastapi/openapi/conventions.py +13 -6
  77. svc_infra/api/fastapi/openapi/mutators.py +144 -17
  78. svc_infra/api/fastapi/openapi/pipeline.py +2 -2
  79. svc_infra/api/fastapi/openapi/responses.py +4 -6
  80. svc_infra/api/fastapi/openapi/security.py +1 -1
  81. svc_infra/api/fastapi/ops/add.py +73 -0
  82. svc_infra/api/fastapi/pagination.py +47 -32
  83. svc_infra/api/fastapi/routers/__init__.py +16 -10
  84. svc_infra/api/fastapi/routers/ping.py +1 -0
  85. svc_infra/api/fastapi/setup.py +167 -54
  86. svc_infra/api/fastapi/tenancy/add.py +20 -0
  87. svc_infra/api/fastapi/tenancy/context.py +113 -0
  88. svc_infra/api/fastapi/versioned.py +102 -0
  89. svc_infra/app/README.md +5 -5
  90. svc_infra/app/__init__.py +3 -1
  91. svc_infra/app/env.py +70 -4
  92. svc_infra/app/logging/add.py +10 -2
  93. svc_infra/app/logging/filter.py +1 -1
  94. svc_infra/app/logging/formats.py +13 -5
  95. svc_infra/app/root.py +3 -3
  96. svc_infra/billing/__init__.py +40 -0
  97. svc_infra/billing/async_service.py +167 -0
  98. svc_infra/billing/jobs.py +231 -0
  99. svc_infra/billing/models.py +146 -0
  100. svc_infra/billing/quotas.py +101 -0
  101. svc_infra/billing/schemas.py +34 -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 +21 -5
  106. svc_infra/cache/add.py +167 -0
  107. svc_infra/cache/backend.py +9 -7
  108. svc_infra/cache/decorators.py +75 -20
  109. svc_infra/cache/demo.py +2 -2
  110. svc_infra/cache/keys.py +26 -6
  111. svc_infra/cache/recache.py +26 -27
  112. svc_infra/cache/resources.py +6 -5
  113. svc_infra/cache/tags.py +19 -44
  114. svc_infra/cache/ttl.py +2 -3
  115. svc_infra/cache/utils.py +4 -3
  116. svc_infra/cli/__init__.py +44 -8
  117. svc_infra/cli/__main__.py +4 -0
  118. svc_infra/cli/cmds/__init__.py +39 -2
  119. svc_infra/cli/cmds/db/nosql/mongo/mongo_cmds.py +18 -14
  120. svc_infra/cli/cmds/db/nosql/mongo/mongo_scaffold_cmds.py +9 -10
  121. svc_infra/cli/cmds/db/ops_cmds.py +267 -0
  122. svc_infra/cli/cmds/db/sql/alembic_cmds.py +97 -29
  123. svc_infra/cli/cmds/db/sql/sql_export_cmds.py +80 -0
  124. svc_infra/cli/cmds/db/sql/sql_scaffold_cmds.py +13 -13
  125. svc_infra/cli/cmds/docs/docs_cmds.py +139 -0
  126. svc_infra/cli/cmds/dx/__init__.py +12 -0
  127. svc_infra/cli/cmds/dx/dx_cmds.py +110 -0
  128. svc_infra/cli/cmds/health/__init__.py +179 -0
  129. svc_infra/cli/cmds/health/health_cmds.py +8 -0
  130. svc_infra/cli/cmds/help.py +4 -0
  131. svc_infra/cli/cmds/jobs/__init__.py +1 -0
  132. svc_infra/cli/cmds/jobs/jobs_cmds.py +42 -0
  133. svc_infra/cli/cmds/obs/obs_cmds.py +31 -13
  134. svc_infra/cli/cmds/sdk/__init__.py +0 -0
  135. svc_infra/cli/cmds/sdk/sdk_cmds.py +102 -0
  136. svc_infra/cli/foundation/runner.py +4 -5
  137. svc_infra/cli/foundation/typer_bootstrap.py +1 -2
  138. svc_infra/data/__init__.py +83 -0
  139. svc_infra/data/add.py +61 -0
  140. svc_infra/data/backup.py +56 -0
  141. svc_infra/data/erasure.py +46 -0
  142. svc_infra/data/fixtures.py +42 -0
  143. svc_infra/data/retention.py +56 -0
  144. svc_infra/db/__init__.py +15 -0
  145. svc_infra/db/crud_schema.py +14 -13
  146. svc_infra/db/inbox.py +67 -0
  147. svc_infra/db/nosql/__init__.py +2 -0
  148. svc_infra/db/nosql/constants.py +1 -1
  149. svc_infra/db/nosql/core.py +19 -5
  150. svc_infra/db/nosql/indexes.py +12 -9
  151. svc_infra/db/nosql/management.py +4 -4
  152. svc_infra/db/nosql/mongo/README.md +13 -13
  153. svc_infra/db/nosql/mongo/client.py +21 -4
  154. svc_infra/db/nosql/mongo/settings.py +1 -1
  155. svc_infra/db/nosql/repository.py +46 -27
  156. svc_infra/db/nosql/resource.py +28 -16
  157. svc_infra/db/nosql/scaffold.py +14 -12
  158. svc_infra/db/nosql/service.py +2 -1
  159. svc_infra/db/nosql/service_with_hooks.py +4 -3
  160. svc_infra/db/nosql/utils.py +4 -4
  161. svc_infra/db/ops.py +380 -0
  162. svc_infra/db/outbox.py +105 -0
  163. svc_infra/db/sql/apikey.py +34 -15
  164. svc_infra/db/sql/authref.py +8 -6
  165. svc_infra/db/sql/constants.py +5 -1
  166. svc_infra/db/sql/core.py +13 -13
  167. svc_infra/db/sql/management.py +5 -6
  168. svc_infra/db/sql/repository.py +92 -26
  169. svc_infra/db/sql/resource.py +18 -12
  170. svc_infra/db/sql/scaffold.py +11 -11
  171. svc_infra/db/sql/service.py +2 -1
  172. svc_infra/db/sql/service_with_hooks.py +4 -3
  173. svc_infra/db/sql/templates/models_schemas/auth/models.py.tmpl +7 -56
  174. svc_infra/db/sql/templates/setup/env_async.py.tmpl +34 -12
  175. svc_infra/db/sql/templates/setup/env_sync.py.tmpl +29 -7
  176. svc_infra/db/sql/tenant.py +80 -0
  177. svc_infra/db/sql/uniq.py +8 -7
  178. svc_infra/db/sql/uniq_hooks.py +12 -11
  179. svc_infra/db/sql/utils.py +105 -47
  180. svc_infra/db/sql/versioning.py +14 -0
  181. svc_infra/db/utils.py +3 -3
  182. svc_infra/deploy/__init__.py +531 -0
  183. svc_infra/documents/__init__.py +100 -0
  184. svc_infra/documents/add.py +263 -0
  185. svc_infra/documents/ease.py +233 -0
  186. svc_infra/documents/models.py +114 -0
  187. svc_infra/documents/storage.py +262 -0
  188. svc_infra/dx/__init__.py +58 -0
  189. svc_infra/dx/add.py +63 -0
  190. svc_infra/dx/changelog.py +74 -0
  191. svc_infra/dx/checks.py +68 -0
  192. svc_infra/exceptions.py +141 -0
  193. svc_infra/health/__init__.py +863 -0
  194. svc_infra/http/__init__.py +13 -0
  195. svc_infra/http/client.py +101 -0
  196. svc_infra/jobs/__init__.py +79 -0
  197. svc_infra/jobs/builtins/outbox_processor.py +38 -0
  198. svc_infra/jobs/builtins/webhook_delivery.py +93 -0
  199. svc_infra/jobs/easy.py +33 -0
  200. svc_infra/jobs/loader.py +49 -0
  201. svc_infra/jobs/queue.py +106 -0
  202. svc_infra/jobs/redis_queue.py +242 -0
  203. svc_infra/jobs/runner.py +75 -0
  204. svc_infra/jobs/scheduler.py +53 -0
  205. svc_infra/jobs/worker.py +40 -0
  206. svc_infra/loaders/__init__.py +186 -0
  207. svc_infra/loaders/base.py +143 -0
  208. svc_infra/loaders/github.py +309 -0
  209. svc_infra/loaders/models.py +147 -0
  210. svc_infra/loaders/url.py +229 -0
  211. svc_infra/logging/__init__.py +375 -0
  212. svc_infra/mcp/__init__.py +82 -0
  213. svc_infra/mcp/svc_infra_mcp.py +91 -33
  214. svc_infra/obs/README.md +2 -0
  215. svc_infra/obs/add.py +68 -11
  216. svc_infra/obs/cloud_dash.py +2 -1
  217. svc_infra/obs/grafana/dashboards/http-overview.json +45 -0
  218. svc_infra/obs/metrics/__init__.py +6 -7
  219. svc_infra/obs/metrics/asgi.py +8 -7
  220. svc_infra/obs/metrics/base.py +13 -13
  221. svc_infra/obs/metrics/http.py +3 -3
  222. svc_infra/obs/metrics/sqlalchemy.py +14 -13
  223. svc_infra/obs/metrics.py +9 -8
  224. svc_infra/resilience/__init__.py +44 -0
  225. svc_infra/resilience/circuit_breaker.py +328 -0
  226. svc_infra/resilience/retry.py +289 -0
  227. svc_infra/security/__init__.py +167 -0
  228. svc_infra/security/add.py +213 -0
  229. svc_infra/security/audit.py +97 -18
  230. svc_infra/security/audit_service.py +10 -9
  231. svc_infra/security/headers.py +15 -2
  232. svc_infra/security/hibp.py +14 -7
  233. svc_infra/security/jwt_rotation.py +78 -29
  234. svc_infra/security/lockout.py +23 -16
  235. svc_infra/security/models.py +77 -44
  236. svc_infra/security/oauth_models.py +73 -0
  237. svc_infra/security/org_invites.py +12 -12
  238. svc_infra/security/passwords.py +3 -3
  239. svc_infra/security/permissions.py +31 -7
  240. svc_infra/security/session.py +7 -8
  241. svc_infra/security/signed_cookies.py +26 -6
  242. svc_infra/storage/__init__.py +93 -0
  243. svc_infra/storage/add.py +250 -0
  244. svc_infra/storage/backends/__init__.py +11 -0
  245. svc_infra/storage/backends/local.py +331 -0
  246. svc_infra/storage/backends/memory.py +213 -0
  247. svc_infra/storage/backends/s3.py +334 -0
  248. svc_infra/storage/base.py +239 -0
  249. svc_infra/storage/easy.py +181 -0
  250. svc_infra/storage/settings.py +193 -0
  251. svc_infra/testing/__init__.py +682 -0
  252. svc_infra/utils.py +170 -5
  253. svc_infra/webhooks/__init__.py +69 -0
  254. svc_infra/webhooks/add.py +327 -0
  255. svc_infra/webhooks/encryption.py +115 -0
  256. svc_infra/webhooks/fastapi.py +37 -0
  257. svc_infra/webhooks/router.py +55 -0
  258. svc_infra/webhooks/service.py +69 -0
  259. svc_infra/webhooks/signing.py +34 -0
  260. svc_infra/websocket/__init__.py +79 -0
  261. svc_infra/websocket/add.py +139 -0
  262. svc_infra/websocket/client.py +283 -0
  263. svc_infra/websocket/config.py +57 -0
  264. svc_infra/websocket/easy.py +76 -0
  265. svc_infra/websocket/exceptions.py +61 -0
  266. svc_infra/websocket/manager.py +343 -0
  267. svc_infra/websocket/models.py +49 -0
  268. svc_infra-1.1.0.dist-info/LICENSE +21 -0
  269. svc_infra-1.1.0.dist-info/METADATA +362 -0
  270. svc_infra-1.1.0.dist-info/RECORD +364 -0
  271. svc_infra-0.1.595.dist-info/METADATA +0 -80
  272. svc_infra-0.1.595.dist-info/RECORD +0 -253
  273. {svc_infra-0.1.595.dist-info → svc_infra-1.1.0.dist-info}/WHEEL +0 -0
  274. {svc_infra-0.1.595.dist-info → svc_infra-1.1.0.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,364 @@
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=kaSTfnUCKorLKNyHspHj-jGSpmVvUu5EFMF9k6cSSKI,14372
6
+ svc_infra/apf_payments/provider/__init__.py,sha256=mZdg0VZMWsjFrrauq9MqLrnZUYb1DWo_w-YT8v4KD1Q,114
7
+ svc_infra/apf_payments/provider/aiydan.py,sha256=bEgJHehEAUgzRocNXVyXBFiPNX5PLAMMwsLT_pt8q5I,32167
8
+ svc_infra/apf_payments/provider/base.py,sha256=6UOif53jC5qiDQ3dbS9ZobUjvEJWf9Y-49dtE9PTwuw,7706
9
+ svc_infra/apf_payments/provider/registry.py,sha256=hpBozmYMfnGZH_CqpwpDGoHWpjFvL2b9hF0tjbujaH4,837
10
+ svc_infra/apf_payments/provider/stripe.py,sha256=xRS_tZ7hSx8aMeJhmTClbIpIElVd9ObZZ-45uw7WvhU,35055
11
+ svc_infra/apf_payments/schemas.py,sha256=VJ8wj42t-aZN1URBYfA5qIDdTgbJyq6a4tKZRTATgLs,8461
12
+ svc_infra/apf_payments/service.py,sha256=SgaWklSkRGfN7GTzXK0KM7OUKIF41fz3oStRqoO9P7c,35042
13
+ svc_infra/apf_payments/settings.py,sha256=8jx9dtwRZjyCEVrLq2yaqPPb09ekUzlNKqO4a0Cwpn8,1995
14
+ svc_infra/api/__init__.py,sha256=6xTqVENYenTfdj5JvqHL_0HFieB94_ETE8wFklSvmPM,1221
15
+ svc_infra/api/fastapi/__init__.py,sha256=QLbpXF1B9_iAzpR4NTda-mYzdfATiSoqfrV-p52uPzI,1535
16
+ svc_infra/api/fastapi/admin/__init__.py,sha256=AmuCHI5EQRCqwM40Gs1245z7MTcYZkg5xuoaplCExko,82
17
+ svc_infra/api/fastapi/admin/add.py,sha256=Q0DbuLuFhAa9lKXTV1iLdAvc09xkfIG2ls49Mngi6nY,8908
18
+ svc_infra/api/fastapi/apf_payments/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
19
+ svc_infra/api/fastapi/apf_payments/router.py,sha256=Q7C7JQC_2JITFBfQI16axaoDm_v2I75F2oJOqV_x08w,36795
20
+ svc_infra/api/fastapi/apf_payments/setup.py,sha256=sZOldU6_YLvSBrViLljxi4j1K5GKd2gOPEKS_RtaNXM,2677
21
+ svc_infra/api/fastapi/auth/__init__.py,sha256=QbYlodQCnd8k9yPzNVR1JK9H7yhwmGIkNZ_EqlyC9sg,1659
22
+ svc_infra/api/fastapi/auth/_cookies.py,sha256=WyL_A0dhXqpIbhWKcYAReyzC3ISBiSQJhnhpwiC_qYk,1335
23
+ svc_infra/api/fastapi/auth/add.py,sha256=cx5l15lhLKI4eaAxZaCohUB1NJm7PBS821myIAQuufs,10108
24
+ svc_infra/api/fastapi/auth/gaurd.py,sha256=V_0bJOxKBLwJisUTougCrDROLXFvv5hw81TMgcoyg1M,9131
25
+ svc_infra/api/fastapi/auth/mfa/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
26
+ svc_infra/api/fastapi/auth/mfa/models.py,sha256=OysOf9OlBO8UlKVYZEWWsvuMElu8Z1mCmYY5NHFzWx8,1195
27
+ svc_infra/api/fastapi/auth/mfa/pre_auth.py,sha256=vgPpwMcjXT-OEuTjnvNAX3QqCJdlPL5iaYYHPGrohqQ,1603
28
+ svc_infra/api/fastapi/auth/mfa/router.py,sha256=f8INaH0AzFNkCELyiXssAH9qiA1KnlZdGQnv8DIaKXw,12695
29
+ svc_infra/api/fastapi/auth/mfa/security.py,sha256=7WYCe6Nql1KA96klaU5PqZiWlFwpvlAQdBWfaN7Z1qQ,1043
30
+ svc_infra/api/fastapi/auth/mfa/utils.py,sha256=CUtI5VVpXq2zHdSP0VLwggnHtbI1ols4bGpC5QDsYUE,1023
31
+ svc_infra/api/fastapi/auth/mfa/verify.py,sha256=LVdfGj12s1LcA0T6Lq8S_ulxkyxlnN4WOeOFSm-tvPY,2862
32
+ svc_infra/api/fastapi/auth/policy.py,sha256=BLPQxkDW-271lBzRgARdHqQ9dvEOIQ-iYUvHPjV9Vwo,862
33
+ svc_infra/api/fastapi/auth/providers.py,sha256=-dlj471MfIAaqDsw-kiyteq1fPHHkwwWWG9vizSfxjg,3211
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=Up99XNn9gwIng0J_bVrN7S0S5arxCNy5RALWB1DsQIs,5308
37
+ svc_infra/api/fastapi/auth/routers/oauth_router.py,sha256=n81u8ZWafVSmIM92T46wy5M-Pr1iMAWEmsA1-OoX9Uo,28301
38
+ svc_infra/api/fastapi/auth/routers/session_router.py,sha256=5lP0evEoNpJlUGocQ-hTJoskb7PUm_TfEdOlHikv7I4,2338
39
+ svc_infra/api/fastapi/auth/security.py,sha256=tTSvEa77Y7fzjuh3tc9qeU7bmfMqoBfFD5guPdxLQig,6625
40
+ svc_infra/api/fastapi/auth/sender.py,sha256=7kbyS9nKWiC1_YGuGc9s1uBkAHszdvDHe6Glaj-bZPE,1964
41
+ svc_infra/api/fastapi/auth/settings.py,sha256=Br3iMBaXFAkQNl1Id5LOMr4CCkKDwp9OWZWI1v9ABe4,3391
42
+ svc_infra/api/fastapi/auth/state.py,sha256=SHQRucZ00epSqKCcBvPRpwqW_PaQQBSYS6EHmIBJWKU,1078
43
+ svc_infra/api/fastapi/auth/ws_security.py,sha256=zHUfsPkCcDxOv8rk_FjLzIQC5zy492XOPCDXxxBVffI,8595
44
+ svc_infra/api/fastapi/billing/router.py,sha256=NmQ8W_acwVRpr0kZmAzLg9IA-hDXAXBHIXdNRZCRJ0k,2160
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=ZmXpkr35KUGnH42gavmgHxrCxlO_iyPklEn3GoBihJ0,2271
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=lhDG4HkBxz6CLbZJJhnVQ0GEGXJCPps2lQ3wB3xgv10,4553
53
+ svc_infra/api/fastapi/db/nosql/mongo/crud_router.py,sha256=FVvJ5Aal6_ABWKW0O9KmHhDW7GuiRSQ9fFndcnoLkXY,4607
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=20GmhD-sqtRAda3GcfLpY7fGC-R2e-viFm7EJXzqT6I,5437
58
+ svc_infra/api/fastapi/db/sql/crud_router.py,sha256=C3dx34jrlF6g4FDt4ZmYDiQmjA91agozMVsWNKOVVJM,11572
59
+ svc_infra/api/fastapi/db/sql/health.py,sha256=ELLgQerooHHnvZRhGueSAc4QJsb3C4RojUGIu_U-hA4,792
60
+ svc_infra/api/fastapi/db/sql/session.py,sha256=DzlL2zaHCanRtcDaq4u51aiZdvNVpKl9Azv5SBn_hGk,2587
61
+ svc_infra/api/fastapi/db/sql/users.py,sha256=uibTsrx5GrFT7q4qs1oD8MMyEXZeKY7GDLh1WTpKBYI,5533
62
+ svc_infra/api/fastapi/dependencies/ratelimit.py,sha256=zUNKMTLggc-3B2M5Tn4ucrNTPRVcn-_XCiJ1KIeOXmE,4053
63
+ svc_infra/api/fastapi/docs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
64
+ svc_infra/api/fastapi/docs/add.py,sha256=aa1KWzy6u2GLy4fdnA_68vz2BgMetTglOdHXut1d9E8,5737
65
+ svc_infra/api/fastapi/docs/landing.py,sha256=mHxX06KCHNBwXMWTENuzLautNitRiqDp_5S4pZAFKs8,4604
66
+ svc_infra/api/fastapi/docs/scoped.py,sha256=eOB3dPwUf1W5iZhSHUbamLHqZbEsXgO5pMytgGTdTaI,8888
67
+ svc_infra/api/fastapi/dual/__init__.py,sha256=8KtRm6OireWBWwM8-nlYUieISqRDGflobFL86LKkGZI,885
68
+ svc_infra/api/fastapi/dual/dualize.py,sha256=YhJox9fGKYH-ljXs2JoQC4AYRmJvoV_BsN2V8RBDjXo,3812
69
+ svc_infra/api/fastapi/dual/protected.py,sha256=yXHfFQxxhwxrOatfG6T4QUTuokgwTwNjy1iy-Tyoiw8,6810
70
+ svc_infra/api/fastapi/dual/public.py,sha256=2G1dW9S9CY-CJfpsZBUhYlop1LLVlUdTipZTFt1icIc,1438
71
+ svc_infra/api/fastapi/dual/router.py,sha256=8G02BSV9vBOSVAk0MqLCXb9u0N1DXOO4ffjrbIAhLfE,6448
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=0OmcsjgQHlWVcoXZSpwb6H6qYwvNtd8YjAB63wjLqtE,10239
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=gWpEblkq-hEVszPa0BV8W0GRc5Bblq8y_BgecNAvMr8,1103
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=TG0W71UCDbfgLNdIaIv6mBSwZA_etMp5GquwKcAwYbI,1842
83
+ svc_infra/api/fastapi/middleware/errors/exceptions.py,sha256=TaFqg3IHGqH6U1AJM33tuJYaYYa2BHvD_IhnMY0l-hg,443
84
+ svc_infra/api/fastapi/middleware/errors/handlers.py,sha256=33c402V-8Dyjec3rjswch2RoD72wfEIgDmCReYYcat0,8611
85
+ svc_infra/api/fastapi/middleware/graceful_shutdown.py,sha256=hw8pfFuc8iyezYhaSMdgY2VP0okf6B4-ODzhNLQmLew,3053
86
+ svc_infra/api/fastapi/middleware/idempotency.py,sha256=tAvkRuKkuPJ8sgyNKul7hdDYhWbD-fKoXRmqUkPv4s4,7815
87
+ svc_infra/api/fastapi/middleware/idempotency_store.py,sha256=bKAnlZbJsaXbZkFNdMFDOBFUftpIuANGYINan_Vr424,5482
88
+ svc_infra/api/fastapi/middleware/optimistic_lock.py,sha256=U7kEN51vLeG6_c2jHSI9_UxOvC3jk-ZZe4Zh6T1SUTo,1303
89
+ svc_infra/api/fastapi/middleware/ratelimit.py,sha256=J6wifeZW9nJn-WWufveEwifk9dFou3-MAjEaO8F5ru4,6252
90
+ svc_infra/api/fastapi/middleware/ratelimit_store.py,sha256=zj0YwLn41gYLObH08cHI3-vtk6idmAfseebDOCEu8ug,3628
91
+ svc_infra/api/fastapi/middleware/request_id.py,sha256=OV9Jh_p8U_foC8oz4pbpP9x5gPMhv9iC6fkkIeRRCS8,1371
92
+ svc_infra/api/fastapi/middleware/request_size_limit.py,sha256=KfP3c-mcR3qu2NZMO2gbj513FdN7WAvnuZ1y7n73tc4,1256
93
+ svc_infra/api/fastapi/middleware/timeout.py,sha256=vXZYX4kdOJsr8pNLusovY_azlC3v2DaI4Ob_-DiKZmw,6535
94
+ svc_infra/api/fastapi/object_router.py,sha256=_Uk8KEeSSmfbdz3Wfi3ns1xEpftBBmKyPdjhqzDzkow,32805
95
+ svc_infra/api/fastapi/openapi/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
96
+ svc_infra/api/fastapi/openapi/apply.py,sha256=3muK0UPrOSXLKHhZfpjoD1ae3cSL5V5pyxTVUVX9NXU,1726
97
+ svc_infra/api/fastapi/openapi/conventions.py,sha256=1-80AhOHM_tn66hA0VsqIyqCQTWqhXGpmdA7TIdOPrs,7247
98
+ svc_infra/api/fastapi/openapi/models.py,sha256=MmXMpPZQjZygajfIHaL4_3q0zluPtpRevsSyOIiE83Y,2562
99
+ svc_infra/api/fastapi/openapi/mutators.py,sha256=2DofQzXmV_oYWtGRyPpxqf1-yc4aVQZ6zPPvyT3AFEg,55680
100
+ svc_infra/api/fastapi/openapi/pipeline.py,sha256=OvkUrqAUepQobbEYOF_KTiPmY1n_cF4Og_8ZiKNZzgo,686
101
+ svc_infra/api/fastapi/openapi/responses.py,sha256=XnNPqsGXc1iCLIxM0UFKXI-T-DW3qMU0uTzgJQiHH6I,1068
102
+ svc_infra/api/fastapi/openapi/security.py,sha256=YCYjrlSWojtLgG0mC48v0LJdPUD_CrDOUwE4PkBCsiw,1255
103
+ svc_infra/api/fastapi/ops/add.py,sha256=NIjIQ26PB49z3pFUdyJ8mePww8sUR2MUaBknm3-BZE4,2457
104
+ svc_infra/api/fastapi/pagination.py,sha256=8Y8e3Qt9NTDMDonUdL-w2kucuTxHowcBUafKjiItfrI,11210
105
+ svc_infra/api/fastapi/paths/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
106
+ svc_infra/api/fastapi/paths/auth.py,sha256=hy9N0QFQnpv7dBOuHStui5eP9oIGHrawa0sADIVVD64,553
107
+ svc_infra/api/fastapi/paths/generic.py,sha256=z2hAYoanpxXCksHLJyo5_GsnmmQEgslM5CaG3kVsy0E,38
108
+ svc_infra/api/fastapi/paths/prefix.py,sha256=I1xEt1lKDlOPn2Oa-y_1B-Q8JCwAPpu3_F_1YUHu_Sc,45
109
+ svc_infra/api/fastapi/paths/user.py,sha256=z8xv_A3dPhG366ezJU1c839oHbU3tEg06rbx3HUUuL0,323
110
+ svc_infra/api/fastapi/routers/__init__.py,sha256=Pxc4J5ijF_u0NJJhBBxYnibAVx1zak2R-ONMRPpso18,9232
111
+ svc_infra/api/fastapi/routers/ping.py,sha256=71DGaklMAkCL8g_NHdQk9LXG7C_cVem1p8qtapGtnBk,576
112
+ svc_infra/api/fastapi/setup.py,sha256=-mmv6-3K9caQofXLdRNkQGnCHTwo3SWYV6xwsBiJZjY,13755
113
+ svc_infra/api/fastapi/tenancy/add.py,sha256=yqlxOYXH45hx7NNWJyizX8tzrnEy7-feD4fLPqPJvmA,523
114
+ svc_infra/api/fastapi/tenancy/context.py,sha256=J_DTiO-fkF0-SxsYkUD76bamWpkRMV4MpwOFAwzK8ow,3274
115
+ svc_infra/api/fastapi/versioned.py,sha256=mpmwPE90xVKYtRcaPGFjsbqMQEJzuG51WSTL87HtHEM,3268
116
+ svc_infra/app/README.md,sha256=MqnKTVjE9txaqlcl41wAv34hWhNfc_fJXCqCTsEWNdk,5070
117
+ svc_infra/app/__init__.py,sha256=IZNV7Y5FxR8BVs6AfiNcXlrPXeVlGLgUwsuqhwaLb30,293
118
+ svc_infra/app/env.py,sha256=wtr6dyqPbk2n7p3L-rZQIIUMN4eyDBAY3O1XolE8gJ0,6435
119
+ svc_infra/app/logging/__init__.py,sha256=Nbu2wWySPztxvjW73yIdIi5NEnVNOrOH1PlaUWYIxIM,116
120
+ svc_infra/app/logging/add.py,sha256=zUBTJozsz5BXylIvGYmQbhwyKq0C0SQPYu_uaz9UqMM,2887
121
+ svc_infra/app/logging/filter.py,sha256=ijZplOAKyEAhpHGnfa8Vy3N52Uhf6KrgvUAWnAQp8ko,2001
122
+ svc_infra/app/logging/formats.py,sha256=-bbRkB9vY2-SI8L3R28ekomO3qamH3HMCtkAdhENohs,4895
123
+ svc_infra/app/root.py,sha256=bzhxFvquTvzHzdwayEMnDZtUP1bCr7PGeQ-4yZashOY,1628
124
+ svc_infra/billing/__init__.py,sha256=DoQiCRxVk1OBgTMz4WGJvEbY-Btdjxo6UI5-zC2h_LM,821
125
+ svc_infra/billing/async_service.py,sha256=2oPwwqQ-SM0v2i7M8U1726cSnQTintD_1FOwh5ThTnM,5296
126
+ svc_infra/billing/jobs.py,sha256=dLcIBmk4fxQzsyAahcNmpdRcMKuYbkJvUB1RKYpDUwk,8344
127
+ svc_infra/billing/models.py,sha256=TatV8B8jvx9rkuXmok2GehR2zZYeQ83I9ql2dycQqa8,6170
128
+ svc_infra/billing/quotas.py,sha256=swnvVstWxCkIJa7iOpl7iqR5qot7EuVJCQ3OpzLQzZ0,3433
129
+ svc_infra/billing/schemas.py,sha256=rcPx1-pJkg0bB9dBvEgWgMYn6xz0TJIZGyBauvIRGmo,896
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=H46FcW4UwCjOVlcsuRxY_SUJln0wC8y0sJz7MyPpKno,1132
135
+ svc_infra/cache/add.py,sha256=eS7Yq3gnKkd3njeLrr3Tg-JMQQOO6XUZ7IHAJXFuXBo,5975
136
+ svc_infra/cache/backend.py,sha256=cEgpQz18zXgo_ToKSZ_DcGhXD4VAMlULPcrdZDaUwx0,4382
137
+ svc_infra/cache/decorators.py,sha256=JTpANwwKYZ3gO-dSNj1dV5mcuUTUerH8dVZPqFKSaFk,10050
138
+ svc_infra/cache/demo.py,sha256=-e9uG6EG5skmofP-XkCCg0d5NOYXmwqF3tfhmjf3UcY,2505
139
+ svc_infra/cache/keys.py,sha256=NgJnci4rEDen0QNBnIKlooknHOGaYWdVXvM5TeQo_g4,3974
140
+ svc_infra/cache/recache.py,sha256=oXXFUZscMLBLwOxkdHxF-Qjqbts6pvO_kUMnZiZNilE,8607
141
+ svc_infra/cache/resources.py,sha256=YkHRXd7KHZYQR_frrlwbi8qN4EfWUJDSCoIiN6ce3lg,7421
142
+ svc_infra/cache/tags.py,sha256=qa8SXZcnBTbtviwiCcGDUjcB27vWCwjy100L-DMuH-Y,1434
143
+ svc_infra/cache/ttl.py,sha256=GrFn9tmAWa3uzG6tCfFTQTRIhCiTYw4Y34InSWidM_0,1911
144
+ svc_infra/cache/utils.py,sha256=6ZGxIUwWuR2ccj0K27r1FFiyvLoqwVtIyVej2P3sM1A,4865
145
+ svc_infra/cli/__init__.py,sha256=9pXGeex8uLVOGLOFbR9x0OFo0iEZOP5Ld9cL2gM8u0Y,1721
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=uUWTmxbeIPxpwd8EK4TcNf_w6A5_2BxaGek4SZJTlhI,6129
153
+ svc_infra/cli/cmds/db/nosql/mongo/mongo_scaffold_cmds.py,sha256=fjPACoiiLKQcr6GSrN7XHN8mSuAXw_bixCwdp1GPIzQ,4210
154
+ svc_infra/cli/cmds/db/ops_cmds.py,sha256=etTCsAx9Mhs35FmfIvrw2ccCwUqxsMC92HdPMGV4RGQ,8333
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=5d8FKU4NIL2AlkrJV1PFUpMM80gfIEB0RO9QbpLeaDM,10159
157
+ svc_infra/cli/cmds/db/sql/sql_export_cmds.py,sha256=t3tVGFuDE432ayxvwog794YCXXYGbXbtL0xn4wR-8Ks,2676
158
+ svc_infra/cli/cmds/db/sql/sql_scaffold_cmds.py,sha256=-Tn10fKbyBIcEK3nKVCbsuAppUjLFhL8WXECUJgpII8,4579
159
+ svc_infra/cli/cmds/docs/docs_cmds.py,sha256=vgd96wOnC8sdfQPRm1u_mkfukzrBDd6nQGtAIzgb0qk,4471
160
+ svc_infra/cli/cmds/dx/__init__.py,sha256=wQtl3-kOgoESlpVkjl3YFtqkOnQSIvVsOdutiaZFejM,197
161
+ svc_infra/cli/cmds/dx/dx_cmds.py,sha256=r8UqEGZwjI-1WsguwcOccbQrckSvFV9Ak0FcqtmFCGo,3402
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=p4Xh-40ApEM5KtNMqv6YUMWzpm1hQrT-bgQxQxu8ztU,1221
167
+ svc_infra/cli/cmds/obs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
168
+ svc_infra/cli/cmds/obs/obs_cmds.py,sha256=hkzyIV6n9dz3Ccl-DgPltIYcSsy2D6yiclRh9mJeUAI,6881
169
+ svc_infra/cli/cmds/sdk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
170
+ svc_infra/cli/cmds/sdk/sdk_cmds.py,sha256=xzEbhA-L5bXMxf-DFzYXkdITfC4ua1Lt8I9x6PoEax0,2886
171
+ svc_infra/cli/foundation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
172
+ svc_infra/cli/foundation/runner.py,sha256=R2T23bEMEyp00BWwVzL8O_nj2LYYFUBYZixTvnYI63Y,1825
173
+ svc_infra/cli/foundation/typer_bootstrap.py,sha256=AwOV27uvTS1PRv7KXsdiHDc-TW_nv4fJlXFVSsmJUzo,954
174
+ svc_infra/data/__init__.py,sha256=f_E17hva9OeAFxOqbCpVtKqm7kH4uWTGFGkhrgL1yrE,2373
175
+ svc_infra/data/add.py,sha256=dbXIxpdy_uBn-RHu9xuJyo5gs0a86avSg7HsLCL1S8E,2227
176
+ svc_infra/data/backup.py,sha256=92MPHMuoEvsJaac-IhvsV_7CAtZOR2eAQxWS-A0_VzM,1626
177
+ svc_infra/data/erasure.py,sha256=ukcx8fTT3_feGCtMgtnFN7C3FibRZAu5ea1uJpTCWrw,1147
178
+ svc_infra/data/fixtures.py,sha256=1uki7TBf_WqoecLbN8pKxAdwHkgU74CvSGygC4QR6_E,1232
179
+ svc_infra/data/retention.py,sha256=IyjUAoJIYzLzNdNwWAshyLKtm3DGGvrDR0kYAjwxPbY,1973
180
+ svc_infra/db/__init__.py,sha256=CcDxjFJUG2Jm5TsiKw7TbtdFgpqplZtDu8piucdjboQ,280
181
+ svc_infra/db/crud_schema.py,sha256=VAD5AXPl_m8slIGEUGb54-NfXsOV-IUlLd2gW2AEEm8,2479
182
+ svc_infra/db/inbox.py,sha256=drxLRLHaMRrCDgo_8wj12do80wDh5ssHV6LGkaM98no,1996
183
+ svc_infra/db/nosql/__init__.py,sha256=0RjFS_tD9BXob9d-kpz4LyfqIc7PNzbeQRjRkiMQDHo,190
184
+ svc_infra/db/nosql/base.py,sha256=p47VVpwWvGNkyWe5RDSmGaUFyZovcyNqirMqoHFQ4QU,230
185
+ svc_infra/db/nosql/constants.py,sha256=drYhERd2q5VEDbmDhK4REZMPGD5VANT7VV6g99s9H74,425
186
+ svc_infra/db/nosql/core.py,sha256=Wf_B09ctGcaC28UIxd2TX3O5FmiUmUmj56AyyuDU4l4,4949
187
+ svc_infra/db/nosql/indexes.py,sha256=OhgzW-AYe_J1oITZkSk6J4IhAVIrxWSzDMRFUbHgIcY,2273
188
+ svc_infra/db/nosql/management.py,sha256=jve8kgx6BUeVt2dXRoBEQM4w39mK0oK78cZJ-sInoF4,3465
189
+ svc_infra/db/nosql/mongo/README.md,sha256=rFGck7VMGOMh9PZ8KkgDbxzZfbsWAoTJg5UWGlvK4oM,11687
190
+ svc_infra/db/nosql/mongo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
191
+ svc_infra/db/nosql/mongo/client.py,sha256=nvqzORQdUBvGRw3AYdidHeDQght_cMtgUolh4CbXmcs,1822
192
+ svc_infra/db/nosql/mongo/settings.py,sha256=IJev_Fhu2ltykQBKQBAe8bkML6LAAhUYiXzzlP9jwCw,550
193
+ svc_infra/db/nosql/mongo/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
194
+ svc_infra/db/nosql/mongo/templates/documents.py.tmpl,sha256=QgXaZK9fCzRTdDITijMCvFREPrdwhe_8yfD7ht-AJgs,673
195
+ svc_infra/db/nosql/mongo/templates/resources.py.tmpl,sha256=eVCZ43WvjdrDbXuB2behxuDg8bB2kyeED0c-LpKnjC4,1463
196
+ svc_infra/db/nosql/mongo/templates/schemas.py.tmpl,sha256=ovHotwcEl06pjPDyT2pkWgF19mWIsyO75nFt1qvLsqo,841
197
+ svc_infra/db/nosql/repository.py,sha256=XKYiAnLidQKhwHJ-qG-28Qm6Ltb0I-9dm9m5jFsd0p8,7722
198
+ svc_infra/db/nosql/resource.py,sha256=UZn5rhkdSsPJtoqZZJZGB-C18iOTNqyxc1kZ5FIkY3c,2898
199
+ svc_infra/db/nosql/scaffold.py,sha256=1H-IqD-ewFeiIyUsACb2ob4VhM5e2zayEly_EJ0-vnw,4790
200
+ svc_infra/db/nosql/service.py,sha256=qjFiL-MRETBpbX7kope28lbjGfnYvE4zAvq1_3d2NMM,1751
201
+ svc_infra/db/nosql/service_with_hooks.py,sha256=-QgQTei95HaQ_KD2JSg7BQsrqFuaYoqUzoG2sLqepGY,758
202
+ svc_infra/db/nosql/types.py,sha256=lcyuoZvBHRlGD24WL2HCEG5YmCpwo7qB4VYAckcY-WE,814
203
+ svc_infra/db/nosql/utils.py,sha256=MiwZEI1Kr94Wf3m05ehZ6tGrGNtq7ti9E31SsIRQ34Y,3514
204
+ svc_infra/db/ops.py,sha256=0cdTqsK5TqfKiulBmmo4p-sz86It3Y5q2Q3bGM6LRaY,11594
205
+ svc_infra/db/outbox.py,sha256=9spzmKzQzWUe4S-KNZeFghLdyXS-MA5E_IlpmyFdxuA,3324
206
+ svc_infra/db/sql/README.md,sha256=OI1T7SiY4_f0eTWQGtIeUsgkFqzvloh1vctOm6nvIvU,8581
207
+ svc_infra/db/sql/__init__.py,sha256=PkDutfhzofY0jbE83ZuxbrvXhogvP1tmk5MniyfwQws,159
208
+ svc_infra/db/sql/apikey.py,sha256=OqlcAc_ICL6Q_ZHYwTZ7XGVsmMnvbPKOlw-d2dMLKn8,5215
209
+ svc_infra/db/sql/authref.py,sha256=lJU1AQ7lUrpr-5naaltYrfF07B6WQ6IGhTzaY7Am3cc,2224
210
+ svc_infra/db/sql/base.py,sha256=yeOM4Xo2CtTzsfx0hN8KLFTgOPZp6BrbV7Omz_bZUMg,317
211
+ svc_infra/db/sql/constants.py,sha256=V0nvWUzlzxAhOMoYJggI8OUHThtGBW97CnFmdsHsR0I,1896
212
+ svc_infra/db/sql/core.py,sha256=vyVNVR3u6U03RCD8ctYoBjxbdolR8UNYzsoTf7mxNcs,10851
213
+ svc_infra/db/sql/management.py,sha256=ZE2H2pFdzWjwhlreJdgA31XqMb_ngu_ooFo7g6INr1Q,3616
214
+ svc_infra/db/sql/repository.py,sha256=TsRdrvX6NUCyKG1kFpF7iYupjm9w544551Urvj3gnPI,8009
215
+ svc_infra/db/sql/resource.py,sha256=hEnV5FyLNC75stz-ngBwh-iq8tcQtY2Du2HMFPJpMyU,1173
216
+ svc_infra/db/sql/scaffold.py,sha256=vmH8PRUMR916xdluzerKhDzi6nvL-2K17sqAyJRCN60,9073
217
+ svc_infra/db/sql/service.py,sha256=eua_-PeoggkN-mfi34uP7Nx0kqJw7pVXP1QtqInuP6w,2817
218
+ svc_infra/db/sql/service_with_hooks.py,sha256=zRw0OGwywhv9GcUx8B14gqoEGC3S4mKJQmEXqWIfizU,732
219
+ svc_infra/db/sql/templates/__init__.py,sha256=atHi2TYS0oe8ZzUv2JIMSYdPduuyvu8RcOQASo7SqwM,48
220
+ svc_infra/db/sql/templates/models_schemas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
221
+ svc_infra/db/sql/templates/models_schemas/auth/models.py.tmpl,sha256=ROR13DZETuDOTrIXqb0XIdJeK-FMLkkfMor2lMMw-Kw,7573
222
+ svc_infra/db/sql/templates/models_schemas/auth/schemas.py.tmpl,sha256=EVLGBBtQIlYXz0MN4yqAgbYLw0BdYawpZSFlPiw879g,2872
223
+ svc_infra/db/sql/templates/models_schemas/entity/models.py.tmpl,sha256=cSUAfYgATv2SI0NQoHkn9Bzvt7RbOZ3_V8_p_VQsNMk,4349
224
+ svc_infra/db/sql/templates/models_schemas/entity/schemas.py.tmpl,sha256=xHTXk8u2uiqmQe8XpXjGAPg8pDpdr0rLtsSOC_fo9vo,1032
225
+ svc_infra/db/sql/templates/setup/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
226
+ svc_infra/db/sql/templates/setup/alembic.ini.tmpl,sha256=7SHSOyUq9S7XqVdKpWLJW7gIWadv58t4AIooa306gDo,771
227
+ svc_infra/db/sql/templates/setup/env_async.py.tmpl,sha256=yJyf4zw5fHaHOvurfFJb-XEqEArlnOksMNeGWgo-7dc,13908
228
+ svc_infra/db/sql/templates/setup/env_sync.py.tmpl,sha256=EiH8OS9uN-6IUT4p-XtmziqSwbq6-NjoojW9X6o1NSo,15357
229
+ svc_infra/db/sql/templates/setup/script.py.mako.tmpl,sha256=RiEMqF6dTN0S_lSRr90w5K2VtyK0_C81kBPZ02qQDZU,588
230
+ svc_infra/db/sql/tenant.py,sha256=XVCb_OAji5ia48Vxs9Ilf630jbwxjA8ASQ-1Okscy50,2806
231
+ svc_infra/db/sql/types.py,sha256=aDcYS-lEb3Aw9nlc8D67wyS5rmE9ZOkblxPjPFbMM_0,863
232
+ svc_infra/db/sql/uniq.py,sha256=o2PPMue_X9dJIWK-NIK4VyUsB8swu0Q4UaWaniv9X5k,2522
233
+ svc_infra/db/sql/uniq_hooks.py,sha256=-XOgGf2ENhG_lRITLSmsLIzvYNthz4dOZtKlGTaO9Ig,4267
234
+ svc_infra/db/sql/utils.py,sha256=tH8q2jD9xRfx68rVPDMX4Hr7tSPm14zjR017UB6KB6A,34825
235
+ svc_infra/db/sql/versioning.py,sha256=okZu2ad5RAFXNLXJgGpcQvZ5bc6gPjRWzwiBT0rEJJw,400
236
+ svc_infra/db/utils.py,sha256=h9a2HhaYaKqAyFbc0cnxzz45-fjomdFDA_MiORDQ1Ro,791
237
+ svc_infra/deploy/__init__.py,sha256=VvWG3MJYmGec_zfleEE5JoC9QY0JuHvYTzwP-mvMAXM,14792
238
+ svc_infra/documents/__init__.py,sha256=eTzJHwjeKxVG9VyVtECOVlZ2E0EyUQx8w7Ll8FWXHiA,2853
239
+ svc_infra/documents/add.py,sha256=biPfaWPi0o5Tnc-HM0wXUjDHPLrNA2bUnoSTBOOq4Dg,7912
240
+ svc_infra/documents/ease.py,sha256=ySjwRs2pKt0vVDEKVxeryU3MWVozeQ7DMl_v9Z70L-4,6222
241
+ svc_infra/documents/models.py,sha256=5vDbHDacg5f-DrIxMOTNmxFmQqAWG9qzquxJJZoFc88,4359
242
+ svc_infra/documents/storage.py,sha256=j5ihVhGA5w3Yfcw-2STBfPHMZX8Q4_UgAQpzonxmXfI,7312
243
+ svc_infra/dx/__init__.py,sha256=xfuk_5kj4VJdaKt4A03WIpywDJ_b1564cM_eO_EUKS8,1732
244
+ svc_infra/dx/add.py,sha256=FAnLGP0BPm_q_VCEcpUwfj-b0mEse988chh9DHeS7GU,1474
245
+ svc_infra/dx/changelog.py,sha256=OHr5t91L1RGtoq8tsYINM9MVStmD-dXkNIombJ3SmXg,1950
246
+ svc_infra/dx/checks.py,sha256=IiQVOf8gLHR3MP2PaghlGu5AOSsGbWAePqTKSbzc_fs,2330
247
+ svc_infra/exceptions.py,sha256=_-1rIQB6OIbQNflzOHEksB5zF12pmapeklRjnxsQoIE,3852
248
+ svc_infra/health/__init__.py,sha256=jk9YFoij7Xv5jVR1YqjLNvy316QI1GM83QIOQ5MhcIo,27445
249
+ svc_infra/http/__init__.py,sha256=K79-aGyq_JdsxhyxispQlnygvf9LhU0_NJQcFYlWB9I,249
250
+ svc_infra/http/client.py,sha256=-diGdlK_9zWbpGRSOhGNUG5BlcODjwCTm3px4_AvWl0,3593
251
+ svc_infra/jobs/__init__.py,sha256=ZX8Pci_Ooi_NsgNrtQuouoIPC8uUVZSPJyP0X197ZAw,2184
252
+ svc_infra/jobs/builtins/outbox_processor.py,sha256=5cPwM8wEBmAlRbe4lg6imA3RjPa5hbetIq104Dxahcg,1243
253
+ svc_infra/jobs/builtins/webhook_delivery.py,sha256=8wazNyYryHXYMMKwJ9GIhKzxBK6KyS59L6zaMViZVuM,3745
254
+ svc_infra/jobs/easy.py,sha256=tL8UYvpYoqNDo_uLH5LF-7sBSyLEsH_JnBF_xbSU29c,997
255
+ svc_infra/jobs/loader.py,sha256=7oPEndwW4ACDSFf-TI9nT4G542SKYvojAtOmwzJWL_U,1309
256
+ svc_infra/jobs/queue.py,sha256=UTiJNTR7QrgC7fi7wQ16KgxXdEsWpVMj4rThz_5-xTo,3542
257
+ svc_infra/jobs/redis_queue.py,sha256=a7xGif_eVPnqO1lbvzb31OpHqAtgZjx7UAUW_WNVzMs,9887
258
+ svc_infra/jobs/runner.py,sha256=82MElykaLAJx7QleNkjqW17agej-saAw4idf-AGT4Tw,2723
259
+ svc_infra/jobs/scheduler.py,sha256=r9AYhAjXG45gWSXcKNzWe9P6bDgHUIe4gztRYivkyGo,1570
260
+ svc_infra/jobs/worker.py,sha256=OheGmoDDOJ-A5deA9HSOgAlxLT5l8BJYVVM7_-AYaQs,1108
261
+ svc_infra/loaders/__init__.py,sha256=KHhV8kWVskOLCS9KAcmR-VHdjU29u0zGTJcMQTrTIDQ,5523
262
+ svc_infra/loaders/base.py,sha256=g5cRHWkW-muI6qwFk5tsKcGtGdJyxWc6eFF_zJ3WCaY,4381
263
+ svc_infra/loaders/github.py,sha256=1CJaJNJfhOQ1m7G5zQOuigbb5iTYxPVPu83gpH0hh64,11127
264
+ svc_infra/loaders/models.py,sha256=Yb5XVUS8Nv47P1KBkwuq3zED2W-jJ80mVDeSvGbralw,4913
265
+ svc_infra/loaders/url.py,sha256=fetG1XSlHKnyeI3vU3lud24WOjBmhrcHeAk89yHMlTk,8092
266
+ svc_infra/logging/__init__.py,sha256=227LzDeVPA-AnBIQ90p-Zg-a4RX-O9KCwmq-e20dLvk,11200
267
+ svc_infra/mcp/__init__.py,sha256=4ZtUjHZ_z9cMVnqBoScYKfjZJ8xF79Usapz6zEsJ1HQ,2293
268
+ svc_infra/mcp/svc_infra_mcp.py,sha256=SHVFswMFAMaSTMWjzrPDQkvnb-yvWCjrhnF_-JoAv70,3586
269
+ svc_infra/obs/README.md,sha256=pmd6AyFZW3GCCi0sr3uTHrPj5KgAI8rrXw8QPkrf1R8,8021
270
+ svc_infra/obs/__init__.py,sha256=t5DgkiuuhHnfAHChzYqCI1-Fpr68iQ0A1nHOLFIlAuM,75
271
+ svc_infra/obs/add.py,sha256=7EDobhTeDoS9ppqBfvG3Jc5vnezA_F9qZFzOHhuXknc,4178
272
+ svc_infra/obs/cloud_dash.py,sha256=19f_tb9yc-kUSgjF5PZh0lySJ3DnqZlXV56V7f17YbY,4382
273
+ svc_infra/obs/grafana/dashboards/http-overview.json,sha256=WVwkMazdfRAAUdLwGItfzePL9sXuDdhlLVbOLtk1Vic,1042
274
+ svc_infra/obs/metrics/__init__.py,sha256=nhZHEO8Q4Zsz3HyG-Uk9FVHnfqTza-rQNMKGVIH4ciE,1413
275
+ svc_infra/obs/metrics/asgi.py,sha256=pdjZ0lzZ06i9pt51CakIOX5_lqVlZd1uuPEf3V0MjeE,8897
276
+ svc_infra/obs/metrics/base.py,sha256=KtdIoCT3Z197b-2lKjd6j88Pthl9N_gQ7ME7A78k-Ss,2558
277
+ svc_infra/obs/metrics/http.py,sha256=p--tII1c41z3oIwvUAAdKR3lSqIjoi_NuepMHqxuFOE,3010
278
+ svc_infra/obs/metrics/sqlalchemy.py,sha256=P4Td_rQCQPYpCFcgVJgUhDEIBblfjNGVrXrKMEv1HFE,2537
279
+ svc_infra/obs/metrics.py,sha256=s-2vqdUrpE7vPhiDHcPpcvf0cGIlNY-aGxIapo_JOCA,1468
280
+ svc_infra/obs/providers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
281
+ svc_infra/obs/providers/compose_cloud/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
282
+ svc_infra/obs/providers/compose_cloud/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
283
+ svc_infra/obs/providers/compose_cloud/templates/agent.yaml.tmpl,sha256=hYv35yG92XEP_4joMFmMcVTD-4fG_zHitmChjreUJh4,516
284
+ svc_infra/obs/providers/compose_cloud/templates/docker-compose.cloud.yml.tmpl,sha256=zEXb_4hvoU7P24QzgrC6OopVlabxM6fqSES-X-6IoEg,910
285
+ svc_infra/obs/providers/grafana/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
286
+ svc_infra/obs/providers/grafana/dashboards/00_overview.json,sha256=nQneJP-dV_BTfkrLm8411dKSQnzkfIJ7GWackyYMjA4,5653
287
+ svc_infra/obs/providers/grafana/dashboards/10_http.json,sha256=r801Y9_DUreN8ZRTqxghVBcq4ogj1-F3zI0q7T06__g,2675
288
+ svc_infra/obs/providers/grafana/dashboards/20_db.json,sha256=BJcC5o26HF4aKpp7R4WxSWXEpVkKTT8MgFYnoFmfUIY,1439
289
+ svc_infra/obs/providers/grafana/dashboards/30_runtime.json,sha256=y2j2XGuiIviL3UqcUBJfpxJ9nLni2Uk7phILoSlv5Eg,1509
290
+ svc_infra/obs/providers/grafana/dashboards/40_clients.json,sha256=cjCxJfoKC7LguXeJ1UGbqzLym10prnA2gCovHfRTUjU,755
291
+ svc_infra/obs/providers/grafana/dashboards/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
292
+ svc_infra/obs/providers/grafana/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
293
+ svc_infra/obs/providers/grafana/templates/docker-compose.yml.tmpl,sha256=9s9Q6BXqxSIOzoZG_yVMipne0bmAUM3IwfRfhnbf-C4,907
294
+ svc_infra/obs/providers/grafana/templates/prometheus.yml.tmpl,sha256=0ZFWPz4zPbFJxYONVB9fGf0ikvWA7YKOJ1nT4ANwg20,388
295
+ svc_infra/obs/providers/grafana/templates/provisioning/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
296
+ svc_infra/obs/providers/grafana/templates/provisioning/dashboards.yml,sha256=S3uvSPMPB2W2XDcfux-AXV4M_OFqsZZE0Y3BCkTHDOg,230
297
+ svc_infra/obs/providers/grafana/templates/provisioning/datasource.yml,sha256=-p45t2EiFGY4tiaczRX7zvdYZ8oBiE4uxu_4tZ11G1g,173
298
+ svc_infra/obs/settings.py,sha256=Tjr77hOyrIhI8I3A38T6JsGAV_0MpsMdc0E3PbeKuWc,844
299
+ svc_infra/obs/templates/grafana_dashboard.json,sha256=T3gOpf8oy5p8ogkdFYa3HE3J-ylcsys1jsb7F-qZ1Sk,1460
300
+ svc_infra/obs/templates/prometheus_rules.yml,sha256=VcFQ0Pcuxcjb1i50bsi-aWYQBg4xr9M2Ed0_Ciaw1M0,1014
301
+ svc_infra/obs/templates/sidecars/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
302
+ svc_infra/obs/templates/sidecars/compose/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
303
+ svc_infra/obs/templates/sidecars/compose/agent.yaml,sha256=hYv35yG92XEP_4joMFmMcVTD-4fG_zHitmChjreUJh4,516
304
+ svc_infra/obs/templates/sidecars/compose/docker-compose.yml,sha256=zEXb_4hvoU7P24QzgrC6OopVlabxM6fqSES-X-6IoEg,910
305
+ svc_infra/obs/templates/sidecars/fly/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
306
+ svc_infra/obs/templates/sidecars/fly/agent.yaml,sha256=hYv35yG92XEP_4joMFmMcVTD-4fG_zHitmChjreUJh4,516
307
+ svc_infra/obs/templates/sidecars/fly/fly.toml.fragment,sha256=KHaU9xIxj9w-nzLy4BVWmXg8ExbWjAO6o4X-k2QxPgc,498
308
+ svc_infra/obs/templates/sidecars/k8s/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
309
+ svc_infra/obs/templates/sidecars/k8s/configmap.yaml,sha256=Eew_EdckhcpmHYFDX-6o57gmg0E9PrPfD-q8ypr6Kgc,644
310
+ svc_infra/obs/templates/sidecars/k8s/deployment.yaml,sha256=uK47jXluJyoYnfXX13fUf1QyFfSUASiAo8dp7Ad6jiQ,1344
311
+ svc_infra/obs/templates/sidecars/railway/Dockerfile,sha256=Y4iLDmBmm2bkIqPlC0vYwJr8Q1r9_ehR16PWzYpSnAI,151
312
+ svc_infra/obs/templates/sidecars/railway/README.md,sha256=3tFBJPKvmxjg3FjtfGYLwBEuyMrHbAluBc7XkXb7XVM,292
313
+ svc_infra/obs/templates/sidecars/railway/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
314
+ svc_infra/obs/templates/sidecars/railway/agent.yaml,sha256=hYv35yG92XEP_4joMFmMcVTD-4fG_zHitmChjreUJh4,516
315
+ svc_infra/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
316
+ svc_infra/resilience/__init__.py,sha256=NnimXvsURgSfK1bu7TYS3V9pyZi6riCmMaLPcvj-5YQ,1033
317
+ svc_infra/resilience/circuit_breaker.py,sha256=ZFsrKU0e8A5-SmY7IIIEOnxu2PZBu1A3BZduXpmJKLE,10540
318
+ svc_infra/resilience/retry.py,sha256=z4NlFStYNhkIVotxCDAWqKnuFHRFsoeOun3x3cl2js4,9454
319
+ svc_infra/security/__init__.py,sha256=DrtUsCAbnKwLrLC6Uk_aZGSjs2Rmzh6aLMzbDGyaAq8,4294
320
+ svc_infra/security/add.py,sha256=bBkkz0ZDG3733UE50k9GhEm8sM2WhT0AsD301aa63SA,6651
321
+ svc_infra/security/audit.py,sha256=7lwLvxqoCMG-D4v5ASsLn24Ht7t1ntrI_LPHJBNglAI,6209
322
+ svc_infra/security/audit_service.py,sha256=5QnRN8M3MqFcKW8lkwCFEnV1iSfpJiYwJchi340QqHk,2313
323
+ svc_infra/security/headers.py,sha256=CcdNC1j14oj6LS8-TMW2K-l7LIfXYlL12mw8R32b2R0,2074
324
+ svc_infra/security/hibp.py,sha256=HvSTIwBFpA2HWl1AJwQOVPXd1AS6BjEpDR4GYRAkkkY,2991
325
+ svc_infra/security/jwt_rotation.py,sha256=xOlMHPVBx5tcAYkQgcxOh4hF0Y-OH9xmGVFoPf_KV7k,3366
326
+ svc_infra/security/lockout.py,sha256=7oRa90UXn_ZTFoCTria8fC1dpThhxrRrs7gP0NMQl2s,3068
327
+ svc_infra/security/models.py,sha256=YfpCRLZvKQQKivwhpFFFswgfTBzNUC7tOWHGu17mREc,9973
328
+ svc_infra/security/oauth_models.py,sha256=k-2A0hjhnb2YDKDA3h_srjVJqHgstpklyWSG6XNhZX0,2222
329
+ svc_infra/security/org_invites.py,sha256=9rBvPBIWRINOe-r1Sp3i4vkXLi4PbDuhoEcUoD-HvXA,3821
330
+ svc_infra/security/passwords.py,sha256=6Nj-5H2sP2IB1Ywwi9TVZWbiWRxXXn9e25gh3KuCWhw,2452
331
+ svc_infra/security/permissions.py,sha256=Nu1QLYisU5JkV89b1xMnD2RXumX8UElDUhBAMKiS_ag,5253
332
+ svc_infra/security/session.py,sha256=VVBI-iI-wDI2eoX55tlcm5NDsUQFBbx7uds0X7ZpewU,2805
333
+ svc_infra/security/signed_cookies.py,sha256=teMcrbbNOiGxYDc5OP3z5kFsvVHMu5IPzDjhfjdg4Gc,3141
334
+ svc_infra/storage/__init__.py,sha256=M_djbln1nv1YhOANHu_XZDi_fZ37hTnp2qMXiHYOlJo,2828
335
+ svc_infra/storage/add.py,sha256=Nk57Ha-6JmtKOxZmKssXNwWFecrm_OoTevGL8--fTpA,8228
336
+ svc_infra/storage/backends/__init__.py,sha256=zlbPU7TbDKg-VhWSZaRA-qTHfD17bx-ZQ445kDqlB-o,205
337
+ svc_infra/storage/backends/local.py,sha256=pPalgtLhByUIN_qmnOlnXglSYPPOwRWMdTpPLXVBPx0,10628
338
+ svc_infra/storage/backends/memory.py,sha256=XVDwOp0CYbmAhjRwKV4MWhgfYQ_gXvwKVdaS0WZFox0,6422
339
+ svc_infra/storage/backends/s3.py,sha256=wWb6siuawRp9GM2ta9qZ2EvGZycgpeRbkbht1EdqtOg,11266
340
+ svc_infra/storage/base.py,sha256=2vnFN7gMxdva1dKnVptvYNxjJDR66jvGh6k2oRHb3zM,6212
341
+ svc_infra/storage/easy.py,sha256=mvTM3ePGZEeekMpKbXgEXCF7gSDNQq6T8oAMIRw6owQ,6101
342
+ svc_infra/storage/settings.py,sha256=x6cbyehyXeLAdCcihylfuMgIE2UbvZWX-c5HxpFzB40,6635
343
+ svc_infra/testing/__init__.py,sha256=SnybcpH9si4bzEP1fakZyjd84ZX8WdguFhRoXGLu2ZM,18687
344
+ svc_infra/utils.py,sha256=7-w4KjnWZFbhcfE5nFMOZvhScXV4TINNL8SA4-7xA7s,6348
345
+ svc_infra/webhooks/__init__.py,sha256=KkLHv-6-VpsgqezgeGuLbEPVyfv6v-9Rv5STJQGn2aM,1994
346
+ svc_infra/webhooks/add.py,sha256=3dZtxynW0cbV9aAOvrzfoY5sg2Qv2xs-B4Up7mf7vOA,12571
347
+ svc_infra/webhooks/encryption.py,sha256=0inleePZUQDCzenxGijllr-Uc8Lqalw3bmGvMZuOl_8,3602
348
+ svc_infra/webhooks/fastapi.py,sha256=0kj3USfClULj9tRbQ3JZk3lEsoKblmmYKMOV94t_-NQ,1110
349
+ svc_infra/webhooks/router.py,sha256=5ITASYK2v93AQy6Wh3ugXFwkgLLUztzX3cEAF1MhkoE,1590
350
+ svc_infra/webhooks/service.py,sha256=FWO-N995xR0Lq08OgejVN7PQtP_hVId6dcsFWpiaUxY,2373
351
+ svc_infra/webhooks/signing.py,sha256=p2mgIeWuZk02hPO2UmeSM28p60-7o2x8K5VXehbloGo,916
352
+ svc_infra/websocket/__init__.py,sha256=W7Q78rr2IfMWoJd4b2Nw2hSexISegtD6KIbZ8y41xds,2243
353
+ svc_infra/websocket/add.py,sha256=QET47Uf_f7PR1IULyOOhMGARWfw5l96KL2q9QPBFpjo,4195
354
+ svc_infra/websocket/client.py,sha256=spuAxnQ0nva8ypFbLkRXp6cXXDfa4bGRP92ojJpbk-4,9383
355
+ svc_infra/websocket/config.py,sha256=adCzRBIjdiQc9Nt90Kx6pf1-cjB3c_XPD7iSwTIxFv8,2484
356
+ svc_infra/websocket/easy.py,sha256=ACe594T4l_nwqagOZsotAkuK0ocZ5JJdwGRE8ALhWRU,2077
357
+ svc_infra/websocket/exceptions.py,sha256=cbJMXhL1dW-tibhuTtR_RGlI_8KLFsrUu-n2HXyNczU,1566
358
+ svc_infra/websocket/manager.py,sha256=NrfBkpLbaJOu-xC2S4IldHdVH3zc30Ib1B7kZEc6Qbs,10897
359
+ svc_infra/websocket/models.py,sha256=SVY6owOiy2hDpUsu5mk9f7qSy371gHbmZkWcJI56qUs,1512
360
+ svc_infra-1.1.0.dist-info/LICENSE,sha256=_tWnB6zcItk5i81sT6mv6mErTI-29rXngzXYgS-efco,1062
361
+ svc_infra-1.1.0.dist-info/METADATA,sha256=Gi_aHyBXy6WL46XPrEd7XPOe_pqjWMjIePfxPc1XcqA,12750
362
+ svc_infra-1.1.0.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
363
+ svc_infra-1.1.0.dist-info/entry_points.txt,sha256=6x_nZOsjvn6hRZsMgZLgTasaCSKCgAjsGhACe_CiP0U,48
364
+ svc_infra-1.1.0.dist-info/RECORD,,
@@ -1,80 +0,0 @@
1
- Metadata-Version: 2.3
2
- Name: svc-infra
3
- Version: 0.1.595
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: adyen (>=13.4.0,<14.0.0)
30
- Requires-Dist: ai-infra (>=0.1.63,<0.2.0)
31
- Requires-Dist: aiosqlite (>=0.20.0,<0.21.0) ; extra == "sqlite"
32
- Requires-Dist: alembic (>=1.13.2,<2.0.0)
33
- Requires-Dist: asyncpg (>=0.30.0,<0.31.0) ; extra == "pg"
34
- Requires-Dist: authlib (>=1.6.2,<2.0.0)
35
- Requires-Dist: cashews[redis] (>=7.4.1,<8.0.0)
36
- Requires-Dist: duckdb (>=1.1.3,<2.0.0) ; extra == "duckdb"
37
- Requires-Dist: email-validator (>=2.2.0,<3.0.0)
38
- Requires-Dist: fastapi (>=0.116.1,<0.117.0)
39
- Requires-Dist: fastapi-users-db-sqlalchemy (>=7.0.0,<8.0.0)
40
- Requires-Dist: fastapi-users[oauth] (>=14.0.1,<15.0.0)
41
- Requires-Dist: greenlet (>=3,<4)
42
- Requires-Dist: httpx (>=0.28.1,<0.29.0)
43
- Requires-Dist: httpx-oauth (>=0.16.1,<0.17.0)
44
- Requires-Dist: itsdangerous (>=2.2.0,<3.0.0)
45
- Requires-Dist: mcp (>=1.13.0,<2.0.0)
46
- Requires-Dist: motor (>=3.7.1,<4.0.0)
47
- Requires-Dist: mysqlclient (>=2.2.4,<3.0.0) ; extra == "mysql"
48
- Requires-Dist: opentelemetry-exporter-otlp (>=1.36.0,<2.0.0)
49
- Requires-Dist: opentelemetry-instrumentation-fastapi (>=0.57b0,<0.58)
50
- Requires-Dist: opentelemetry-instrumentation-httpx (>=0.57b0,<0.58)
51
- Requires-Dist: opentelemetry-instrumentation-requests (>=0.57b0,<0.58)
52
- Requires-Dist: opentelemetry-instrumentation-sqlalchemy (>=0.57b0,<0.58)
53
- Requires-Dist: opentelemetry-propagator-b3 (>=1.36.0,<2.0.0)
54
- Requires-Dist: opentelemetry-sdk (>=1.36.0,<2.0.0)
55
- Requires-Dist: passlib[bcrypt] (>=1.7.4,<2.0.0)
56
- Requires-Dist: pre-commit (>=4.3.0,<5.0.0)
57
- Requires-Dist: prometheus-client (>=0.22.1,<0.23.0) ; extra == "metrics"
58
- Requires-Dist: psycopg2-binary (>=2.9.10,<3.0.0) ; extra == "pg2"
59
- Requires-Dist: psycopg[binary] (>=3.2.10,<4.0.0) ; extra == "pg"
60
- Requires-Dist: pydantic-settings (>=2.10.1,<3.0.0)
61
- Requires-Dist: pymysql (>=1.1.1,<2.0.0) ; extra == "mysql"
62
- Requires-Dist: pyodbc (>=5.1.0,<6.0.0) ; extra == "mssql"
63
- Requires-Dist: pyotp (>=2.9.0,<3.0.0)
64
- Requires-Dist: python-dotenv (>=1.1.1,<2.0.0)
65
- Requires-Dist: redis (>=6.4.0,<7.0.0)
66
- Requires-Dist: redshift-connector (>=2.0.918,<3.0.0) ; extra == "redshift"
67
- Requires-Dist: snowflake-connector-python (>=3.12.0,<4.0.0) ; extra == "snowflake"
68
- Requires-Dist: sqlalchemy[asyncio] (>=2.0.43,<3.0.0)
69
- Requires-Dist: stripe (>=13.0.1,<14.0.0)
70
- Requires-Dist: typer (>=0.16.1,<0.17.0)
71
- Project-URL: Documentation, https://github.com/your-org/svc-infra#readme
72
- Project-URL: Homepage, https://github.com/your-org/svc-infra
73
- Project-URL: Issues, https://github.com/your-org/svc-infra/issues
74
- Project-URL: Repository, https://github.com/your-org/svc-infra
75
- Description-Content-Type: text/markdown
76
-
77
- # svc-infra
78
-
79
- Will add description later.
80
-