sillo-framework 0.2.0__tar.gz → 0.3.0__tar.gz

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.
Files changed (1084) hide show
  1. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/CHANGELOG.md +17 -0
  2. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/PKG-INFO +9 -28
  3. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/README.md +5 -25
  4. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/astro.config.mjs +3 -0
  5. sillo_framework-0.3.0/docs/docs/src/content/docs/advanced/context-binding.md +152 -0
  6. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/advanced/glossary.md +1 -18
  7. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/advanced/mail.md +38 -6
  8. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/advanced/security.md +2 -2
  9. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/advanced/sessions.md +24 -8
  10. sillo_framework-0.3.0/docs/docs/src/content/docs/advanced/storage.md +414 -0
  11. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/cli/custom-commands.md +2 -2
  12. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/cli/discovery.md +2 -2
  13. sillo_framework-0.3.0/docs/docs/src/content/docs/cli/framework-commands.md +97 -0
  14. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/cli/index.md +3 -4
  15. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/cli/scheduler.md +1 -1
  16. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/authentication.md +40 -0
  17. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/concurrency.md +5 -5
  18. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/configuration.md +1 -1
  19. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/console.md +2 -2
  20. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/csrf.md +26 -6
  21. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/environment.md +2 -2
  22. sillo_framework-0.3.0/docs/docs/src/content/docs/guides/frontend.md +53 -0
  23. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/inertia/assets.md +3 -3
  24. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/inertia/start.mdx +4 -4
  25. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/installation.mdx +1 -1
  26. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/introduction.md +1 -1
  27. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/sessions.md +16 -1
  28. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/start/admin.md +1 -1
  29. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/start/console.md +2 -2
  30. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/start/deployment.md +4 -4
  31. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/start/index.mdx +4 -4
  32. sillo_framework-0.3.0/docs/docs/src/content/docs/guides/storage.mdx +654 -0
  33. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/start/after-creating.mdx +1 -1
  34. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/start/create-app.md +1 -1
  35. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/pyproject.toml +9 -4
  36. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/requirements.txt +0 -1
  37. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/__init__.py +1 -3
  38. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/__main__.py +2 -91
  39. sillo_framework-0.3.0/sillo/_internals/registry.py +101 -0
  40. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/application.py +2 -44
  41. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/auth/use_auth.py +105 -3
  42. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/core/http/response.py +85 -8
  43. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/core/routing/router.py +19 -57
  44. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/helpers/crypto.py +27 -5
  45. sillo_framework-0.3.0/sillo/helpers/signing.py +192 -0
  46. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/mail/__init__.py +5 -1
  47. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/mail/client.py +37 -0
  48. sillo_framework-0.3.0/sillo/mail/context.py +49 -0
  49. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/objects/http.py +1 -1
  50. sillo_framework-0.3.0/sillo/security/csrf/_middleware.py +253 -0
  51. sillo_framework-0.3.0/sillo/security/csrf/config.py +230 -0
  52. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/session/config.py +38 -0
  53. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/session/middleware.py +58 -2
  54. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/session/session_objects.py +32 -36
  55. sillo_framework-0.3.0/sillo/session/signed_cookies.py +114 -0
  56. sillo_framework-0.3.0/sillo/storage/__init__.py +88 -0
  57. sillo_framework-0.3.0/sillo/storage/base.py +481 -0
  58. sillo_framework-0.3.0/sillo/storage/bucket.py +415 -0
  59. sillo_framework-0.3.0/sillo/storage/config.py +94 -0
  60. sillo_framework-0.3.0/sillo/storage/context.py +58 -0
  61. sillo_framework-0.3.0/sillo/storage/drivers/__init__.py +15 -0
  62. sillo_framework-0.3.0/sillo/storage/drivers/local.py +452 -0
  63. sillo_framework-0.3.0/sillo/storage/drivers/memory.py +173 -0
  64. sillo_framework-0.3.0/sillo/storage/errors.py +74 -0
  65. sillo_framework-0.3.0/sillo/storage/paths.py +156 -0
  66. sillo_framework-0.3.0/sillo/storage/policies.py +335 -0
  67. sillo_framework-0.3.0/sillo/storage/routes.py +172 -0
  68. sillo_framework-0.3.0/sillo/storage/signing.py +277 -0
  69. sillo_framework-0.3.0/sillo/storage/sniff.py +205 -0
  70. sillo_framework-0.3.0/sillo/storage/storage.py +219 -0
  71. sillo_framework-0.3.0/sillo/storage/uploads.py +66 -0
  72. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/templating/middleware.py +4 -1
  73. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_auth/test_use_auth.py +278 -1
  74. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_console/test_cli.py +1 -1
  75. sillo_framework-0.3.0/tests/test_console/test_terminal.py +253 -0
  76. sillo_framework-0.3.0/tests/test_hashing/test_core.py +104 -0
  77. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_helpers/test_concurrency.py +1 -1
  78. sillo_framework-0.3.0/tests/test_helpers/test_signing.py +155 -0
  79. sillo_framework-0.3.0/tests/test_http/test_accepts.py +183 -0
  80. sillo_framework-0.3.0/tests/test_internals/test_registry.py +81 -0
  81. sillo_framework-0.3.0/tests/test_mail/test_context.py +80 -0
  82. sillo_framework-0.3.0/tests/test_responses/test_cookie_attributes.py +155 -0
  83. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_security/test_csrf.py +2 -2
  84. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_security/test_csrf_predicates.py +10 -19
  85. sillo_framework-0.3.0/tests/test_security/test_csrf_regressions.py +226 -0
  86. sillo_framework-0.3.0/tests/test_sessions/test_expiry.py +224 -0
  87. sillo_framework-0.3.0/tests/test_storage/contract.py +231 -0
  88. sillo_framework-0.3.0/tests/test_storage/test_bucket.py +296 -0
  89. sillo_framework-0.3.0/tests/test_storage/test_context.py +97 -0
  90. sillo_framework-0.3.0/tests/test_storage/test_drivers.py +29 -0
  91. sillo_framework-0.3.0/tests/test_storage/test_integration.py +209 -0
  92. sillo_framework-0.3.0/tests/test_storage/test_routes.py +226 -0
  93. sillo_framework-0.3.0/tests/test_storage/test_safety.py +247 -0
  94. sillo_framework-0.3.0/tests/test_storage/test_uploads.py +97 -0
  95. sillo_framework-0.3.0/tests/test_work/__init__.py +0 -0
  96. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/uv.lock +8 -14
  97. sillo_framework-0.2.0/docs/docs/src/content/docs/cli/framework-commands.md +0 -261
  98. sillo_framework-0.2.0/docs/docs/src/content/docs/guides/frontend.md +0 -201
  99. sillo_framework-0.2.0/sillo/frontend.py +0 -211
  100. sillo_framework-0.2.0/sillo/security/csrf/_middleware.py +0 -162
  101. sillo_framework-0.2.0/sillo/security/csrf/config.py +0 -117
  102. sillo_framework-0.2.0/sillo/server/__init__.py +0 -70
  103. sillo_framework-0.2.0/sillo/server/_uvicorn.py +0 -248
  104. sillo_framework-0.2.0/sillo/server/access.py +0 -271
  105. sillo_framework-0.2.0/sillo/server/banner.py +0 -216
  106. sillo_framework-0.2.0/sillo/server/inspector.py +0 -497
  107. sillo_framework-0.2.0/sillo/server/logs.py +0 -292
  108. sillo_framework-0.2.0/sillo/server/server.py +0 -173
  109. sillo_framework-0.2.0/sillo/server/theme.py +0 -126
  110. sillo_framework-0.2.0/sillo/session/signed_cookies.py +0 -57
  111. sillo_framework-0.2.0/sillo/utils/__init__.py +0 -1
  112. sillo_framework-0.2.0/tests/test_console/test_terminal.py +0 -165
  113. sillo_framework-0.2.0/tests/test_frontend/test_frontend_app.py +0 -237
  114. sillo_framework-0.2.0/tests/test_server/test_inspector.py +0 -431
  115. sillo_framework-0.2.0/tests/test_server/test_server_wiring.py +0 -311
  116. sillo_framework-0.2.0/tests/test_server/test_sillo_server.py +0 -318
  117. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/.github/CODE_OF_CONDUCT.md +0 -0
  118. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/.github/CONTRIBUTING.MD +0 -0
  119. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  120. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  121. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/.github/dependabot.yml +0 -0
  122. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/.github/funding.yml +0 -0
  123. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/.github/workflows/coverage.yml +0 -0
  124. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/.github/workflows/format-code.yml +0 -0
  125. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/.github/workflows/lint.yaml +0 -0
  126. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/.github/workflows/merge-to-main.yml +0 -0
  127. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/.github/workflows/release.yml +0 -0
  128. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/.github/workflows/run-tests.yaml +0 -0
  129. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/.github/workflows/triage.yml +0 -0
  130. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/.github/workflows/type-check.yaml +0 -0
  131. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/.gitignore +0 -0
  132. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/LICENSE +0 -0
  133. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/SECURITY.md +0 -0
  134. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/benchmarks/.gitignore +0 -0
  135. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/benchmarks/README.md +0 -0
  136. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/benchmarks/pyproject.toml +0 -0
  137. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/benchmarks/results/.gitkeep +0 -0
  138. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/benchmarks/sillo_bench/__init__.py +0 -0
  139. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/benchmarks/sillo_bench/__main__.py +0 -0
  140. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/benchmarks/sillo_bench/apps/__init__.py +0 -0
  141. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/benchmarks/sillo_bench/apps/django_app.py +0 -0
  142. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/benchmarks/sillo_bench/apps/fastapi_app.py +0 -0
  143. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/benchmarks/sillo_bench/apps/flask_app.py +0 -0
  144. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/benchmarks/sillo_bench/apps/sillo_app.py +0 -0
  145. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/benchmarks/sillo_bench/apps/starlette_app.py +0 -0
  146. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/benchmarks/sillo_bench/cli.py +0 -0
  147. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/benchmarks/sillo_bench/environment.py +0 -0
  148. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/benchmarks/sillo_bench/loadtools.py +0 -0
  149. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/benchmarks/sillo_bench/payloads.py +0 -0
  150. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/benchmarks/sillo_bench/report.py +0 -0
  151. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/benchmarks/sillo_bench/runner.py +0 -0
  152. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/benchmarks/sillo_bench/scenarios.py +0 -0
  153. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/coverage.json +0 -0
  154. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/.github/workflows/ci.yml +0 -0
  155. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/.github/workflows/deploy-docs-preview.yml +0 -0
  156. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/.github/workflows/deploy-docs.yml +0 -0
  157. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/.github/workflows/publish-package.yml +0 -0
  158. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/.gitignore +0 -0
  159. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/.prettierrc +0 -0
  160. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/README.md +0 -0
  161. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/bun.lock +0 -0
  162. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/README.md +0 -0
  163. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/community-unpublished/README.md +0 -0
  164. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/community-unpublished/contribution-guide.md +0 -0
  165. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/community-unpublished/index.md +0 -0
  166. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/community-unpublished/installation.md +0 -0
  167. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/community-unpublished/integrations/jrpc.md +0 -0
  168. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/community-unpublished/integrations/mail.md +0 -0
  169. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/community-unpublished/integrations/redis.md +0 -0
  170. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/community-unpublished/integrations/scheduler.md +0 -0
  171. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/community-unpublished/integrations/tasks.md +0 -0
  172. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/community-unpublished/integrations/tortoise.md +0 -0
  173. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/community-unpublished/middleware/etag.md +0 -0
  174. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/community-unpublished/middleware/proxy.md +0 -0
  175. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/community-unpublished/middleware/timeout.md +0 -0
  176. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/community-unpublished/middleware/trusted-host.md +0 -0
  177. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/package.json +0 -0
  178. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/public/favicon.svg +0 -0
  179. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/public/logo-white.svg +0 -0
  180. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/public/logo.ico +0 -0
  181. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/public/logo.png +0 -0
  182. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/assets/houston.webp +0 -0
  183. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/assets/logo-black.svg +0 -0
  184. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/assets/logo-white.svg +0 -0
  185. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/assets/placeholder.svg +0 -0
  186. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/assets/placeholder169.svg +0 -0
  187. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/components/Header.astro +0 -0
  188. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/components/MermaidRenderer.astro +0 -0
  189. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/components/PageFrame.astro +0 -0
  190. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/components/SectionNav.astro +0 -0
  191. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/components/SiteFooter.astro +0 -0
  192. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/advanced/admin.md +0 -0
  193. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/advanced/application-lifecycle.md +0 -0
  194. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/advanced/architecture-overview.md +0 -0
  195. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/advanced/atlas.md +0 -0
  196. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/advanced/auth-backends.md +0 -0
  197. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/advanced/authentication.md +0 -0
  198. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/advanced/cache.md +0 -0
  199. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/advanced/change-impact.md +0 -0
  200. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/advanced/configuration.md +0 -0
  201. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/advanced/console.md +0 -0
  202. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/advanced/debugging.md +0 -0
  203. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/advanced/decisions.md +0 -0
  204. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/advanced/dependency-injection.md +0 -0
  205. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/advanced/events.md +0 -0
  206. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/advanced/exception-handling.md +0 -0
  207. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/advanced/extending.md +0 -0
  208. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/advanced/hashing.md +0 -0
  209. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/advanced/helpers.md +0 -0
  210. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/advanced/http-correctness.md +0 -0
  211. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/advanced/http-request.md +0 -0
  212. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/advanced/http-response.md +0 -0
  213. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/advanced/index.md +0 -0
  214. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/advanced/inertia.md +0 -0
  215. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/advanced/middleware.md +0 -0
  216. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/advanced/oauth.md +0 -0
  217. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/advanced/openapi.md +0 -0
  218. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/advanced/pagination.md +0 -0
  219. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/advanced/parameters.md +0 -0
  220. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/advanced/permissions.md +0 -0
  221. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/advanced/record-factories.md +0 -0
  222. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/advanced/record-migrations.md +0 -0
  223. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/advanced/record-models.md +0 -0
  224. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/advanced/record-queries.md +0 -0
  225. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/advanced/record-transactions.md +0 -0
  226. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/advanced/records-orm.md +0 -0
  227. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/advanced/routing.md +0 -0
  228. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/advanced/start.md +0 -0
  229. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/advanced/templating.md +0 -0
  230. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/advanced/test-client.md +0 -0
  231. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/advanced/types-and-encoding.md +0 -0
  232. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/advanced/users.md +0 -0
  233. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/advanced/validation.md +0 -0
  234. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/advanced/websockets.md +0 -0
  235. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/advanced/work-background.md +0 -0
  236. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/advanced/work-queues.md +0 -0
  237. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/advanced/work-scheduler.md +0 -0
  238. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/advanced/work-tasks.md +0 -0
  239. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/cli/arguments.md +0 -0
  240. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/cli/database.md +0 -0
  241. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/cli/output.md +0 -0
  242. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/cli/prompts.md +0 -0
  243. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/cli/queues.md +0 -0
  244. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/cli/standalone-consoles.md +0 -0
  245. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/cli/styling.md +0 -0
  246. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/cli/users.md +0 -0
  247. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/api-keys.md +0 -0
  248. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/cache.mdx +0 -0
  249. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/content-negotiation.md +0 -0
  250. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/cookies.mdx +0 -0
  251. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/cors.md +0 -0
  252. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/dependency-injection.md +0 -0
  253. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/error-handling.mdx +0 -0
  254. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/events.mdx +0 -0
  255. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/file-upload.md +0 -0
  256. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/graphql.md +0 -0
  257. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/handlers.md +0 -0
  258. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/hashing.md +0 -0
  259. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/headers.mdx +0 -0
  260. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/helpers/async.mdx +0 -0
  261. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/helpers/crypto.mdx +0 -0
  262. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/helpers/deprecation.mdx +0 -0
  263. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/helpers/files.mdx +0 -0
  264. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/helpers/hashing.mdx +0 -0
  265. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/helpers/html.mdx +0 -0
  266. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/helpers/index.mdx +0 -0
  267. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/helpers/jwt.mdx +0 -0
  268. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/helpers/network.mdx +0 -0
  269. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/helpers/retry.mdx +0 -0
  270. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/helpers/strings.mdx +0 -0
  271. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/helpers/text.mdx +0 -0
  272. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/http/client.md +0 -0
  273. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/inertia/forms.md +0 -0
  274. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/inertia/index.md +0 -0
  275. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/inertia/pages.md +0 -0
  276. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/inertia/structure.md +0 -0
  277. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/jwt-auth.md +0 -0
  278. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/middleware.md +0 -0
  279. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/oauth/index.md +0 -0
  280. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/oauth/openapi.md +0 -0
  281. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/oauth/persisting-logins.md +0 -0
  282. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/oauth/providers.md +0 -0
  283. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/oauth/security.md +0 -0
  284. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/openapi/authentication-documentation.md +0 -0
  285. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/openapi/basic-config.png +0 -0
  286. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/openapi/bearerAuth.png +0 -0
  287. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/openapi/custom.png +0 -0
  288. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/openapi/custom2.png +0 -0
  289. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/openapi/customizing-openapi-configuration.md +0 -0
  290. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/openapi/description.png +0 -0
  291. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/openapi/documentation-ui.md +0 -0
  292. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/openapi/headers.png +0 -0
  293. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/openapi/index.md +0 -0
  294. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/openapi/multi-response.png +0 -0
  295. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/openapi/path-params.png +0 -0
  296. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/openapi/query-params.png +0 -0
  297. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/openapi/request-body.png +0 -0
  298. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/openapi/request-parameters.md +0 -0
  299. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/openapi/request-schemas.mdx +0 -0
  300. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/openapi/response-list.png +0 -0
  301. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/openapi/response-models.md +0 -0
  302. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/openapi/response.png +0 -0
  303. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/pagination.mdx +0 -0
  304. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/permissions.md +0 -0
  305. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/protecting-routes.md +0 -0
  306. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/rate-limiting.md +0 -0
  307. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/record/casting-collections.mdx +0 -0
  308. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/record/exceptions-pydantic.mdx +0 -0
  309. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/record/index.mdx +0 -0
  310. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/record/migrations.mdx +0 -0
  311. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/record/models.mdx +0 -0
  312. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/record/pagination.mdx +0 -0
  313. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/record/scopes-events.mdx +0 -0
  314. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/record/transactions-factories.mdx +0 -0
  315. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/request-info.md +0 -0
  316. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/request-inputs.md +0 -0
  317. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/request-lifecycle.md +0 -0
  318. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/request-parameters.mdx +0 -0
  319. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/routers-and-subapps.md +0 -0
  320. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/routing.mdx +0 -0
  321. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/security.md +0 -0
  322. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/sending-responses.mdx +0 -0
  323. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/serialization.md +0 -0
  324. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/services/mail.mdx +0 -0
  325. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/session-auth.md +0 -0
  326. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/start/authentication.md +0 -0
  327. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/start/background-work.md +0 -0
  328. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/start/database.md +0 -0
  329. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/start/structure.md +0 -0
  330. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/start/testing.md +0 -0
  331. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/startups-and-shutdowns.mdx +0 -0
  332. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/static-files.mdx +0 -0
  333. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/streaming-response.mdx +0 -0
  334. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/templating/advanced.mdx +0 -0
  335. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/templating/index.mdx +0 -0
  336. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/url-normalization.md +0 -0
  337. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/users.md +0 -0
  338. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/validation/errors.md +0 -0
  339. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/validation/forms-and-files.md +0 -0
  340. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/validation/index.md +0 -0
  341. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/validation/openapi.md +0 -0
  342. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/validation/parameters.md +0 -0
  343. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/validation/request-bodies.md +0 -0
  344. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/validation/response-models.md +0 -0
  345. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/websockets/channels.mdx +0 -0
  346. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/websockets/consumer.mdx +0 -0
  347. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/websockets/events.mdx +0 -0
  348. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/websockets/groups.mdx +0 -0
  349. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/websockets/index.mdx +0 -0
  350. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/work/background.mdx +0 -0
  351. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/work/events.mdx +0 -0
  352. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/work/index.mdx +0 -0
  353. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/work/jobs.mdx +0 -0
  354. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/work/queue.mdx +0 -0
  355. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/guides/work/scheduler.mdx +0 -0
  356. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/orm/admin-customising.md +0 -0
  357. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/orm/admin-permissions.md +0 -0
  358. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/orm/admin-registering.md +0 -0
  359. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/orm/admin.md +0 -0
  360. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/orm/aggregation.md +0 -0
  361. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/orm/bulk.md +0 -0
  362. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/orm/casting.md +0 -0
  363. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/orm/collections.md +0 -0
  364. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/orm/configuration.md +0 -0
  365. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/orm/connections.md +0 -0
  366. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/orm/eager-loading.md +0 -0
  367. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/orm/events.md +0 -0
  368. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/orm/exceptions.md +0 -0
  369. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/orm/factories.md +0 -0
  370. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/orm/field-reference.md +0 -0
  371. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/orm/fields.md +0 -0
  372. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/orm/filtering.md +0 -0
  373. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/orm/index.md +0 -0
  374. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/orm/lookups.md +0 -0
  375. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/orm/mass-assignment.md +0 -0
  376. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/orm/meta.md +0 -0
  377. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/orm/migrations-applying.md +0 -0
  378. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/orm/migrations-programmatic.md +0 -0
  379. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/orm/migrations.md +0 -0
  380. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/orm/mixins.md +0 -0
  381. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/orm/models.md +0 -0
  382. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/orm/pagination.md +0 -0
  383. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/orm/pydantic.md +0 -0
  384. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/orm/queries.md +0 -0
  385. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/orm/queryset.md +0 -0
  386. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/orm/raw-sql.md +0 -0
  387. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/orm/relationships.md +0 -0
  388. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/orm/scopes.md +0 -0
  389. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/orm/seeding.md +0 -0
  390. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/orm/setup.md +0 -0
  391. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/orm/transactions.md +0 -0
  392. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/orm/values.md +0 -0
  393. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/pydantic/config.md +0 -0
  394. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/pydantic/errors.md +0 -0
  395. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/pydantic/fields.md +0 -0
  396. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/pydantic/index.md +0 -0
  397. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/pydantic/models.md +0 -0
  398. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/pydantic/nested.md +0 -0
  399. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/pydantic/openapi.md +0 -0
  400. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/pydantic/orm-bridge.md +0 -0
  401. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/pydantic/parameters.md +0 -0
  402. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/pydantic/patterns.md +0 -0
  403. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/pydantic/request-models.md +0 -0
  404. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/pydantic/response-models.md +0 -0
  405. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/pydantic/serialization.md +0 -0
  406. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/pydantic/types.md +0 -0
  407. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/pydantic/validators.md +0 -0
  408. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/reference/components.mdx +0 -0
  409. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/reference/plugin-api.md +0 -0
  410. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/showcase/splash/banner.mdx +0 -0
  411. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/showcase/splash/centered-top.mdx +0 -0
  412. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/showcase/splash/centered.mdx +0 -0
  413. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/showcase/splash/split-left.mdx +0 -0
  414. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/showcase/splash/split-right.mdx +0 -0
  415. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/showcase/splash-pages.mdx +0 -0
  416. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/showcase/starlight-components.mdx +0 -0
  417. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/showcase/typography.md +0 -0
  418. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/start/custom-starters.md +0 -0
  419. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/start/errors.md +0 -0
  420. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/start/index.md +0 -0
  421. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/start/install.mdx +0 -0
  422. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/start/internals.md +0 -0
  423. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/start/naming.md +0 -0
  424. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/start/package-managers.md +0 -0
  425. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/start/personalisation.md +0 -0
  426. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/start/secrets.md +0 -0
  427. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content/docs/start/starters.md +0 -0
  428. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/content.config.ts +0 -0
  429. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/plugins/remark-mermaid.mjs +0 -0
  430. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/src/styles/global.css +0 -0
  431. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/docs/tsconfig.json +0 -0
  432. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/package.json +0 -0
  433. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/packages/lucode-starlight/README.md +0 -0
  434. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/packages/lucode-starlight/components/custom/ContainerSection.astro +0 -0
  435. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/packages/lucode-starlight/components/custom/LinkButton.astro +0 -0
  436. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/packages/lucode-starlight/components/custom/dropdown/Dropdown.astro +0 -0
  437. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/packages/lucode-starlight/components/custom/dropdown/DropdownContent.astro +0 -0
  438. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/packages/lucode-starlight/components/custom/dropdown/DropdownItem.astro +0 -0
  439. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/packages/lucode-starlight/components/custom/dropdown/DropdownLabel.astro +0 -0
  440. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/packages/lucode-starlight/components/custom/dropdown/DropdownSeparator.astro +0 -0
  441. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/packages/lucode-starlight/components/custom/dropdown/DropdownShortcut.astro +0 -0
  442. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/packages/lucode-starlight/components/custom/dropdown/DropdownTrigger.astro +0 -0
  443. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/packages/lucode-starlight/components/custom/dropdown/index.ts +0 -0
  444. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/packages/lucode-starlight/components/overrides/ContentPanel.astro +0 -0
  445. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/packages/lucode-starlight/components/overrides/Footer.astro +0 -0
  446. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/packages/lucode-starlight/components/overrides/Header.astro +0 -0
  447. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/packages/lucode-starlight/components/overrides/Hero.astro +0 -0
  448. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/packages/lucode-starlight/components/overrides/MarkdownContent.astro +0 -0
  449. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/packages/lucode-starlight/components/overrides/PageFrame.astro +0 -0
  450. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/packages/lucode-starlight/components/overrides/PageSidebar.astro +0 -0
  451. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/packages/lucode-starlight/components/overrides/PageTitle.astro +0 -0
  452. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/packages/lucode-starlight/components/overrides/Pagination.astro +0 -0
  453. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/packages/lucode-starlight/components/overrides/Search.astro +0 -0
  454. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/packages/lucode-starlight/components/overrides/Sidebar.astro +0 -0
  455. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/packages/lucode-starlight/components/overrides/SiteTitle.astro +0 -0
  456. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/packages/lucode-starlight/components/overrides/SocialIcons.astro +0 -0
  457. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/packages/lucode-starlight/components/overrides/TableOfContents.astro +0 -0
  458. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/packages/lucode-starlight/components/overrides/ThemeSelect.astro +0 -0
  459. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/packages/lucode-starlight/components/overrides/TwoColumnContent.astro +0 -0
  460. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/packages/lucode-starlight/components/overrides/parts/Drawer.astro +0 -0
  461. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/packages/lucode-starlight/components/overrides/parts/MobileMenuToggle.astro +0 -0
  462. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/packages/lucode-starlight/components/overrides/parts/NavBar.astro +0 -0
  463. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/packages/lucode-starlight/components/overrides/parts/SidebarSublist.astro +0 -0
  464. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/packages/lucode-starlight/components/overrides/parts/toc/TableOfContentsList.astro +0 -0
  465. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/packages/lucode-starlight/components/overrides/parts/toc/starlight-toc.ts +0 -0
  466. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/packages/lucode-starlight/core/config/constants.ts +0 -0
  467. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/packages/lucode-starlight/core/config/expresive-code.ts +0 -0
  468. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/packages/lucode-starlight/core/config/override.ts +0 -0
  469. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/packages/lucode-starlight/core/config/schemas.ts +0 -0
  470. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/packages/lucode-starlight/core/config/vite.ts +0 -0
  471. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/packages/lucode-starlight/core/plugin.ts +0 -0
  472. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/packages/lucode-starlight/global.d.ts +0 -0
  473. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/packages/lucode-starlight/index.ts +0 -0
  474. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/packages/lucode-starlight/package.json +0 -0
  475. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/packages/lucode-starlight/schema.ts +0 -0
  476. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/packages/lucode-starlight/styles/base.css +0 -0
  477. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/packages/lucode-starlight/styles/layers.css +0 -0
  478. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/packages/lucode-starlight/styles/theme.css +0 -0
  479. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/packages/lucode-starlight/user-components.ts +0 -0
  480. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/packages/lucode-starlight/virtual.d.ts +0 -0
  481. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/renovate.json +0 -0
  482. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/test/lucode-starlight/config.test.ts +0 -0
  483. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/test/lucode-starlight/plugin.test.ts +0 -0
  484. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/test/lucode-starlight/starlight-toc.test.ts +0 -0
  485. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/tsconfig.json +0 -0
  486. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/vercel.json +0 -0
  487. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/docs/vitest.config.ts +0 -0
  488. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/README.md +0 -0
  489. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/auth/01_session_auth.py +0 -0
  490. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/auth/02_jwt_auth.py +0 -0
  491. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/auth/03_custom_backend.py +0 -0
  492. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/auth/04_multiple_backends.py +0 -0
  493. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/auth/05_router_integration.py +0 -0
  494. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/config/.env.development +0 -0
  495. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/config/.env.example +0 -0
  496. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/config/.env.production +0 -0
  497. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/config/01_basic_config.py +0 -0
  498. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/config/02_web_app.py +0 -0
  499. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/config/README.md +0 -0
  500. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/database/01_sqlite_todo.py +0 -0
  501. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/database/02_tortoise_notes.py +0 -0
  502. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/database/03_tortoise_blog.py +0 -0
  503. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/exception_handling/01_basic.py +0 -0
  504. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/exception_handling/02_custom.py +0 -0
  505. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/file_handling/01_upload_download.py +0 -0
  506. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/file_handling/02_simple_upload.py +0 -0
  507. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/getting_started/01_hello_world.py +0 -0
  508. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/getting_started/02_basic_rest.py +0 -0
  509. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/getting_started/03_enhanced_api.py +0 -0
  510. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/getting_started/04_lifespan.py +0 -0
  511. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/getting_started/05_streaming_middleware.py +0 -0
  512. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/getting_started/README.md +0 -0
  513. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/hashing/01_basic_password_hashing.py +0 -0
  514. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/hashing/01_basic_usage.py +0 -0
  515. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/hashing/02_multiple_algorithms.py +0 -0
  516. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/hashing/02_schemes.py +0 -0
  517. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/hashing/03_web_api.py +0 -0
  518. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/hashing/README.md +0 -0
  519. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/middleware/01_basic.py +0 -0
  520. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/middleware/02_class_based.py +0 -0
  521. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/middleware/03_asgi_middleware.py +0 -0
  522. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/request_inputs/01_json_data.py +0 -0
  523. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/request_inputs/02_form_data.py +0 -0
  524. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/request_inputs/03_raw_body.py +0 -0
  525. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/request_inputs/04_streaming.py +0 -0
  526. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/responses/01_return_values.py +0 -0
  527. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/responses/02_json_with_headers.py +0 -0
  528. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/responses/03_response_types.py +0 -0
  529. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/responses/04_response_classes.py +0 -0
  530. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/routing/01_basic_routes.py +0 -0
  531. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/routing/02_path_parameters.py +0 -0
  532. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/routing/03_routes_class.py +0 -0
  533. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/routing/04_routers.py +0 -0
  534. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/templating/01_basic.py +0 -0
  535. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/templating/02_inheritance.py +0 -0
  536. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/templating/03_custom_filters.py +0 -0
  537. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/templating/README.md +0 -0
  538. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/templating/requirements.txt +0 -0
  539. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/templating/templates/index.html +0 -0
  540. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/templating/templates/user_profile.html +0 -0
  541. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/validation/01_advanced.py +0 -0
  542. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/validation/02_pydantic.py +0 -0
  543. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/websockets/01_basic_echo.py +0 -0
  544. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/websockets/02_chat_rooms.py +0 -0
  545. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/examples/websockets/03_custom_history.py +0 -0
  546. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/requirements-dev.txt +0 -0
  547. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/_internals/__init__.py +0 -0
  548. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/_internals/_middleware.py +0 -0
  549. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/_internals/lazy.py +0 -0
  550. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/admin/__init__.py +0 -0
  551. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/admin/auth.py +0 -0
  552. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/admin/default_user.py +0 -0
  553. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/admin/models.py +0 -0
  554. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/admin/registry.py +0 -0
  555. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/admin/router.py +0 -0
  556. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/admin/routes.py +0 -0
  557. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/admin/static/logo.png +0 -0
  558. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/admin/templates/base.html +0 -0
  559. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/admin/templates/create.html +0 -0
  560. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/admin/templates/dashboard.html +0 -0
  561. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/admin/templates/delete.html +0 -0
  562. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/admin/templates/detail.html +0 -0
  563. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/admin/templates/list.html +0 -0
  564. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/admin/templates/login.html +0 -0
  565. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/admin/templates/query.html +0 -0
  566. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/admin/templates/update.html +0 -0
  567. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/admin/templating.py +0 -0
  568. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/auth/__init__.py +0 -0
  569. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/auth/apikey/__init__.py +0 -0
  570. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/auth/apikey/backend.py +0 -0
  571. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/auth/apikey/mixins.py +0 -0
  572. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/auth/apikey/models.py +0 -0
  573. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/auth/backend.py +0 -0
  574. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/auth/exceptions.py +0 -0
  575. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/auth/jwt_auth/__init__.py +0 -0
  576. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/auth/jwt_auth/backend.py +0 -0
  577. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/auth/jwt_auth/mixins.py +0 -0
  578. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/auth/jwt_auth/models.py +0 -0
  579. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/auth/jwt_auth/tokens.py +0 -0
  580. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/auth/middleware.py +0 -0
  581. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/auth/model.py +0 -0
  582. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/auth/session_auth/__init__.py +0 -0
  583. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/auth/session_auth/backend.py +0 -0
  584. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/auth/session_auth/guard.py +0 -0
  585. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/auth/session_auth/mixins.py +0 -0
  586. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/auth/session_auth/models.py +0 -0
  587. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/cache/__init__.py +0 -0
  588. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/cache/backends.py +0 -0
  589. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/cache/base.py +0 -0
  590. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/cache/config.py +0 -0
  591. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/cache/decorator.py +0 -0
  592. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/config/__init__.py +0 -0
  593. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/config/core.py +0 -0
  594. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/console/__init__.py +0 -0
  595. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/console/arguments.py +0 -0
  596. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/console/command.py +0 -0
  597. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/console/console.py +0 -0
  598. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/console/exceptions.py +0 -0
  599. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/console/output.py +0 -0
  600. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/console/prompt.py +0 -0
  601. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/console/style.py +0 -0
  602. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/console/terminal.py +0 -0
  603. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/core/__init__.py +0 -0
  604. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/core/converters.py +0 -0
  605. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/core/dependencies/__init__.py +0 -0
  606. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/core/dependencies/base.py +0 -0
  607. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/core/encoding.py +0 -0
  608. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/core/error/__init__.py +0 -0
  609. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/core/error/handler.py +0 -0
  610. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/core/helpers/__init__.py +0 -0
  611. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/core/helpers/async_helpers.py +0 -0
  612. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/core/helpers/deprecation.py +0 -0
  613. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/core/http/__init__.py +0 -0
  614. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/core/http/cookies.py +0 -0
  615. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/core/http/request.py +0 -0
  616. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/core/routing/__init__.py +0 -0
  617. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/core/routing/_utils.py +0 -0
  618. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/core/routing/base.py +0 -0
  619. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/core/routing/grouping.py +0 -0
  620. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/core/routing/websocket.py +0 -0
  621. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/encoding.py +0 -0
  622. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/env/__init__.py +0 -0
  623. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/env/_loader.py +0 -0
  624. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/events/__init__.py +0 -0
  625. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/events/core.py +0 -0
  626. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/events/emitter.py +0 -0
  627. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/events/enums.py +0 -0
  628. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/events/exceptions.py +0 -0
  629. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/events/mixins.py +0 -0
  630. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/events/transports/__init__.py +0 -0
  631. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/events/transports/base.py +0 -0
  632. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/events/transports/memory.py +0 -0
  633. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/events/transports/persistent.py +0 -0
  634. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/events/transports/record.py +0 -0
  635. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/events/transports/redis.py +0 -0
  636. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/events/types.py +0 -0
  637. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/exception_handler.py +0 -0
  638. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/exceptions.py +0 -0
  639. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/formparser.py +0 -0
  640. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/graphql/__init__.py +0 -0
  641. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/graphql/handler.py +0 -0
  642. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/handlers/__init__.py +0 -0
  643. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/handlers/not_found.py +0 -0
  644. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/hashing/__init__.py +0 -0
  645. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/hashing/config.py +0 -0
  646. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/hashing/core.py +0 -0
  647. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/hashing/exceptions.py +0 -0
  648. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/hashing/utils.py +0 -0
  649. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/helpers/__init__.py +0 -0
  650. {sillo_framework-0.2.0/sillo/utils → sillo_framework-0.3.0/sillo/helpers}/concurrency.py +0 -0
  651. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/helpers/files.py +0 -0
  652. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/helpers/hashing.py +0 -0
  653. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/helpers/html.py +0 -0
  654. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/helpers/jwt.py +0 -0
  655. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/helpers/network.py +0 -0
  656. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/helpers/retry.py +0 -0
  657. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/helpers/strings.py +0 -0
  658. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/helpers/text.py +0 -0
  659. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/http/__init__.py +0 -0
  660. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/http/accepts.py +0 -0
  661. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/http/client/__init__.py +0 -0
  662. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/http/client/caching.py +0 -0
  663. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/http/client/client.py +0 -0
  664. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/http/client/config.py +0 -0
  665. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/http/client/errors.py +0 -0
  666. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/http/client/middleware.py +0 -0
  667. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/http/client/models.py +0 -0
  668. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/http/client/retry.py +0 -0
  669. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/http/client/transport.py +0 -0
  670. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/http/client/utils.py +0 -0
  671. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/http/etag.py +0 -0
  672. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/http/lifecycle/__init__.py +0 -0
  673. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/http/lifecycle/context.py +0 -0
  674. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/http/lifecycle/helpers.py +0 -0
  675. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/http/lifecycle/middleware.py +0 -0
  676. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/http/sse.py +0 -0
  677. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/http/status.py +0 -0
  678. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/logging.py +0 -0
  679. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/mail/config.py +0 -0
  680. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/mail/models.py +0 -0
  681. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/middleware/__init__.py +0 -0
  682. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/middleware/base.py +0 -0
  683. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/middleware/gzip.py +0 -0
  684. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/middleware/security.py +0 -0
  685. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/middleware/utils.py +0 -0
  686. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/normalize/__init__.py +0 -0
  687. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/normalize/helpers.py +0 -0
  688. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/normalize/middleware.py +0 -0
  689. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/objects/__init__.py +0 -0
  690. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/objects/common.py +0 -0
  691. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/objects/datastructures.py +0 -0
  692. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/objects/routing.py +0 -0
  693. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/openapi/__init__.py +0 -0
  694. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/openapi/_builder.py +0 -0
  695. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/openapi/config.py +0 -0
  696. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/openapi/models.py +0 -0
  697. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/openapi/ui.py +0 -0
  698. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/openapi/utils.py +0 -0
  699. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/pagination.py +0 -0
  700. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/parameters.py +0 -0
  701. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/permissions/__init__.py +0 -0
  702. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/permissions/mixins.py +0 -0
  703. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/permissions/models.py +0 -0
  704. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/py.typed +0 -0
  705. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/record/__init__.py +0 -0
  706. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/record/_bridge.py +0 -0
  707. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/record/casting.py +0 -0
  708. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/record/collection.py +0 -0
  709. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/record/commands/__init__.py +0 -0
  710. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/record/commands/functions.py +0 -0
  711. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/record/config.py +0 -0
  712. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/record/console.py +0 -0
  713. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/record/events.py +0 -0
  714. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/record/exceptions.py +0 -0
  715. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/record/factories.py +0 -0
  716. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/record/fields.py +0 -0
  717. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/record/helpers.py +0 -0
  718. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/record/logging.py +0 -0
  719. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/record/manager.py +0 -0
  720. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/record/mixins/__init__.py +0 -0
  721. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/record/models.py +0 -0
  722. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/record/pagination.py +0 -0
  723. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/record/pydantic.py +0 -0
  724. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/record/queries.py +0 -0
  725. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/record/scopes.py +0 -0
  726. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/record/transactions.py +0 -0
  727. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/route_builder.py +0 -0
  728. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/security/__init__.py +0 -0
  729. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/security/cors/__init__.py +0 -0
  730. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/security/cors/_middleware.py +0 -0
  731. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/security/cors/config.py +0 -0
  732. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/security/csrf/__init__.py +0 -0
  733. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/security/ratelimit/__init__.py +0 -0
  734. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/security/ratelimit/_middleware.py +0 -0
  735. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/security/ratelimit/backends/__init__.py +0 -0
  736. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/security/ratelimit/backends/base.py +0 -0
  737. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/security/ratelimit/backends/memory.py +0 -0
  738. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/security/ratelimit/backends/record.py +0 -0
  739. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/security/ratelimit/backends/redis.py +0 -0
  740. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/security/ratelimit/config.py +0 -0
  741. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/security/ratelimit/models.py +0 -0
  742. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/security/ratelimit/strategies/__init__.py +0 -0
  743. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/security/ratelimit/strategies/base.py +0 -0
  744. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/security/ratelimit/strategies/fixed_window.py +0 -0
  745. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/security/ratelimit/strategies/sliding_window.py +0 -0
  746. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/security/ratelimit/strategies/token_bucket.py +0 -0
  747. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/security/shield.py +0 -0
  748. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/session/__init__.py +0 -0
  749. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/session/base.py +0 -0
  750. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/session/file.py +0 -0
  751. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/static.py +0 -0
  752. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/templating/__init__.py +0 -0
  753. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/templating/utils.py +0 -0
  754. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/testclient/__init__.py +0 -0
  755. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/testclient/_internal/__init__.py +0 -0
  756. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/testclient/_internal/inputs.py +0 -0
  757. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/testclient/_internal/transport.py +0 -0
  758. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/testclient/_internal/types.py +0 -0
  759. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/testclient/_internal/utils.py +0 -0
  760. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/testclient/_internal/websockets.py +0 -0
  761. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/testclient/async_client.py +0 -0
  762. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/testclient/base.py +0 -0
  763. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/testclient/exceptions.py +0 -0
  764. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/testclient/helpers.py +0 -0
  765. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/types.py +0 -0
  766. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/users/__init__.py +0 -0
  767. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/users/base.py +0 -0
  768. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/users/commands.py +0 -0
  769. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/users/console.py +0 -0
  770. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/users/managers.py +0 -0
  771. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/users/protocol.py +0 -0
  772. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/users/simple.py +0 -0
  773. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/validation/__init__.py +0 -0
  774. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/validation/compiler.py +0 -0
  775. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/validation/errors.py +0 -0
  776. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/validation/fields.py +0 -0
  777. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/websockets/__init__.py +0 -0
  778. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/websockets/base.py +0 -0
  779. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/websockets/channels.py +0 -0
  780. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/websockets/consumers.py +0 -0
  781. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/websockets/errors.py +0 -0
  782. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/websockets/history.py +0 -0
  783. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/websockets/status.py +0 -0
  784. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/websockets/utils.py +0 -0
  785. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/work/__init__.py +0 -0
  786. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/work/backends.py +0 -0
  787. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/work/background/__init__.py +0 -0
  788. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/work/background/supervisor.py +0 -0
  789. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/work/background/tasks.py +0 -0
  790. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/work/commands.py +0 -0
  791. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/work/console.py +0 -0
  792. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/work/dependency.py +0 -0
  793. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/work/middleware.py +0 -0
  794. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/work/queue/__init__.py +0 -0
  795. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/work/queue/batches.py +0 -0
  796. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/work/queue/connection.py +0 -0
  797. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/work/queue/events.py +0 -0
  798. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/work/queue/failed.py +0 -0
  799. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/work/queue/job.py +0 -0
  800. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/work/queue/listener.py +0 -0
  801. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/work/queue/middleware.py +0 -0
  802. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/work/queue/payloads.py +0 -0
  803. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/work/queue/workers.py +0 -0
  804. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/work/scheduler/__init__.py +0 -0
  805. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/work/scheduler/cron.py +0 -0
  806. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/work/scheduler/jobs.py +0 -0
  807. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/work/scheduler/manager.py +0 -0
  808. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/work/scheduler/middleware.py +0 -0
  809. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/work/scheduler/triggers.py +0 -0
  810. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/work/task.py +0 -0
  811. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/sillo/work/types.py +0 -0
  812. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/__init__.py +0 -0
  813. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/conftest.py +0 -0
  814. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/static/example.txt +0 -0
  815. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/static/page.html +0 -0
  816. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/static/script.js +0 -0
  817. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/static/style.css +0 -0
  818. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/static/subfolder/subfile.txt +0 -0
  819. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/templates/base.html +0 -0
  820. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/templates/product.html +0 -0
  821. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/templates/welcome.html +0 -0
  822. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_admin/__init__.py +0 -0
  823. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_admin/test_admin_export_query.py +0 -0
  824. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_admin/test_admin_helpers.py +0 -0
  825. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_admin/test_admin_models.py +0 -0
  826. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_admin/test_admin_startup_order.py +0 -0
  827. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_admin/test_admin_views.py +0 -0
  828. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_applications/__init__.py +0 -0
  829. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_applications/test_app_class_name.py +0 -0
  830. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_applications/test_application.py +0 -0
  831. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_applications/test_middleware_chain_cache.py +0 -0
  832. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_applications/test_route_kwargs.py +0 -0
  833. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_auth/__init__.py +0 -0
  834. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_auth/test_apikey_backend.py +0 -0
  835. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_auth/test_auth_middleware.py +0 -0
  836. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_auth/test_auth_utilities.py +0 -0
  837. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_auth/test_custom_backend.py +0 -0
  838. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_auth/test_jwt_backend.py +0 -0
  839. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_auth/test_jwt_user_mixin.py +0 -0
  840. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_auth/test_security_schemes.py +0 -0
  841. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_auth/test_session_backend.py +0 -0
  842. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_auth/test_session_guard.py +0 -0
  843. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_auth/test_session_model_extend.py +0 -0
  844. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_auth/test_token_for_user.py +0 -0
  845. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_auth/test_user_models.py +0 -0
  846. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_cache/__init__.py +0 -0
  847. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_cache/test_base.py +0 -0
  848. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_cache/test_decorator.py +0 -0
  849. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_cache/test_memory_cache.py +0 -0
  850. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_cache/test_redis_backend.py +0 -0
  851. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_cache/test_redis_cache_fake.py +0 -0
  852. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_config/__init__.py +0 -0
  853. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_config/conftest.py +0 -0
  854. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_config/test_config_loading.py +0 -0
  855. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_config/test_env_loading.py +0 -0
  856. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_console/__init__.py +0 -0
  857. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_console/test_arguments.py +0 -0
  858. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_console/test_builtin_record.py +0 -0
  859. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_console/test_builtin_users.py +0 -0
  860. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_console/test_builtin_work.py +0 -0
  861. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_console/test_command.py +0 -0
  862. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_console/test_console.py +0 -0
  863. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_console/test_output.py +0 -0
  864. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_console/test_prompt.py +0 -0
  865. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_console/test_style.py +0 -0
  866. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_cors/__init__.py +0 -0
  867. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_cors/test_configuration.py +0 -0
  868. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_cors/test_credentials_security.py +0 -0
  869. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_cors/test_error_handling.py +0 -0
  870. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_cors/test_integration.py +0 -0
  871. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_cors/test_preflight_requests.py +0 -0
  872. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_cors/test_simple_requests.py +0 -0
  873. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_dependencies/__init__.py +0 -0
  874. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_dependencies/test_dependency_injection.py +0 -0
  875. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_encoding/__init__.py +0 -0
  876. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_encoding/test_custom_encoder.py +0 -0
  877. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_encoding/test_encoding_shim.py +0 -0
  878. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_encoding/test_jsonable_encoder.py +0 -0
  879. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_encoding/test_passthrough_fast_path.py +0 -0
  880. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_env/__init__.py +0 -0
  881. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_env/conftest.py +0 -0
  882. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_env/test_load.py +0 -0
  883. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_env/test_parse.py +0 -0
  884. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_events/__init__.py +0 -0
  885. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_events/test_comprehensive_events.py +0 -0
  886. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_events/test_core_propagation.py +0 -0
  887. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_events/test_emitter_paths.py +0 -0
  888. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_events/test_events_backends.py +0 -0
  889. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_events/test_persistent_transport_fake.py +0 -0
  890. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_events/test_record_transport.py +0 -0
  891. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_events/test_redis_transport_fake.py +0 -0
  892. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_events/test_transport_registry_and_base.py +0 -0
  893. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_exception_handlers/__init__.py +0 -0
  894. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_exception_handlers/test_basic_exception_handlers.py +0 -0
  895. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_exception_handlers/test_concurrent_error_pages.py +0 -0
  896. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_exception_handlers/test_dispatch_internals.py +0 -0
  897. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_exception_handlers/test_exception_handler_integration.py +0 -0
  898. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_exception_handlers/test_not_found_handler.py +0 -0
  899. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_exception_handlers/test_server_error_debug.py +0 -0
  900. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_forms/__init__.py +0 -0
  901. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_forms/test_form_parser.py +0 -0
  902. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_forms/test_uploaded_file_save.py +0 -0
  903. {sillo_framework-0.2.0/tests/test_frontend → sillo_framework-0.3.0/tests/test_graphql}/__init__.py +0 -0
  904. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_graphql/test_graphql_schema.py +0 -0
  905. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_graphql/test_handler_paths.py +0 -0
  906. {sillo_framework-0.2.0/tests/test_graphql → sillo_framework-0.3.0/tests/test_hashing}/__init__.py +0 -0
  907. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_helpers/__init__.py +0 -0
  908. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_helpers/test_accepts.py +0 -0
  909. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_helpers/test_async.py +0 -0
  910. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_helpers/test_deprecation.py +0 -0
  911. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_helpers/test_files.py +0 -0
  912. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_helpers/test_hashing_crypto.py +0 -0
  913. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_helpers/test_html.py +0 -0
  914. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_helpers/test_jwt.py +0 -0
  915. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_helpers/test_network.py +0 -0
  916. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_helpers/test_retry.py +0 -0
  917. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_helpers/test_strings.py +0 -0
  918. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_helpers/test_text.py +0 -0
  919. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_http/__init__.py +0 -0
  920. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_http/test_accepts_middleware.py +0 -0
  921. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_http/test_accepts_negotiation.py +0 -0
  922. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_http/test_cookie_parsing.py +0 -0
  923. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_http/test_etag_full.py +0 -0
  924. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_http/test_http_client.py +0 -0
  925. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_http/test_http_etag.py +0 -0
  926. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_http/test_http_module_exports.py +0 -0
  927. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_http/test_sse.py +0 -0
  928. {sillo_framework-0.2.0/tests/test_lifecycle → sillo_framework-0.3.0/tests/test_internals}/__init__.py +0 -0
  929. {sillo_framework-0.2.0/tests/test_mail → sillo_framework-0.3.0/tests/test_lifecycle}/__init__.py +0 -0
  930. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_lifecycle/test_context.py +0 -0
  931. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_lifecycle/test_request_id.py +0 -0
  932. {sillo_framework-0.2.0/tests/test_middleware → sillo_framework-0.3.0/tests/test_mail}/__init__.py +0 -0
  933. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_mail/test_mail_client.py +0 -0
  934. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_mail/test_mail_service.py +0 -0
  935. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_mail/test_mail_transport.py +0 -0
  936. {sillo_framework-0.2.0/tests/test_normalize → sillo_framework-0.3.0/tests/test_middleware}/__init__.py +0 -0
  937. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_middleware/test_app_level_middleware.py +0 -0
  938. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_middleware/test_asgi_middleware.py +0 -0
  939. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_middleware/test_gzip.py +0 -0
  940. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_middleware/test_internals_bridge.py +0 -0
  941. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_middleware/test_raw_asgi_layers.py +0 -0
  942. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_middleware/test_route_level_middleware.py +0 -0
  943. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_middleware/test_router_level_middleware.py +0 -0
  944. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_middleware/test_security_middleware.py +0 -0
  945. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_middleware/test_use_for_route.py +0 -0
  946. {sillo_framework-0.2.0/tests/test_objects → sillo_framework-0.3.0/tests/test_normalize}/__init__.py +0 -0
  947. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_normalize/test_helpers.py +0 -0
  948. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_normalize/test_middleware.py +0 -0
  949. {sillo_framework-0.2.0/tests/test_openapi → sillo_framework-0.3.0/tests/test_objects}/__init__.py +0 -0
  950. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_objects/test_headers.py +0 -0
  951. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_objects/test_multidict.py +0 -0
  952. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_objects/test_url.py +0 -0
  953. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_objects/test_url_building.py +0 -0
  954. {sillo_framework-0.2.0/tests/test_parameters → sillo_framework-0.3.0/tests/test_openapi}/__init__.py +0 -0
  955. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_openapi/test_docs_ui.py +0 -0
  956. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_openapi/test_openapi_config.py +0 -0
  957. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_openapi/test_openapi_spec.py +0 -0
  958. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_openapi/test_openapi_utils.py +0 -0
  959. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_optional_imports.py +0 -0
  960. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_pagination/__init__.py +0 -0
  961. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_pagination/test_data_handlers.py +0 -0
  962. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_pagination/test_edge_cases.py +0 -0
  963. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_pagination/test_error_handling.py +0 -0
  964. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_pagination/test_integration.py +0 -0
  965. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_pagination/test_pagination_strategies.py +0 -0
  966. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_pagination/test_paginators.py +0 -0
  967. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_pagination/test_response_classes.py +0 -0
  968. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_pagination/test_response_paginate.py +0 -0
  969. {sillo_framework-0.2.0/tests/test_permissions → sillo_framework-0.3.0/tests/test_parameters}/__init__.py +0 -0
  970. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_parameters/test_cookie.py +0 -0
  971. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_parameters/test_header.py +0 -0
  972. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_parameters/test_nested.py +0 -0
  973. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_parameters/test_openapi.py +0 -0
  974. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_parameters/test_query.py +0 -0
  975. {sillo_framework-0.2.0/tests/test_record → sillo_framework-0.3.0/tests/test_permissions}/__init__.py +0 -0
  976. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_permissions/test_permissions.py +0 -0
  977. {sillo_framework-0.2.0/tests/test_redis → sillo_framework-0.3.0/tests/test_record}/__init__.py +0 -0
  978. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_record/test_backend_config.py +0 -0
  979. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_record/test_collection.py +0 -0
  980. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_record/test_events.py +0 -0
  981. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_record/test_mass_assignment.py +0 -0
  982. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_record/test_mixins.py +0 -0
  983. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_record/test_model_features.py +0 -0
  984. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_record/test_pagination_and_exceptions.py +0 -0
  985. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_record/test_pydantic_bridge.py +0 -0
  986. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_record/test_queries.py +0 -0
  987. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_record/test_query_logging.py +0 -0
  988. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_record/test_record_commands.py +0 -0
  989. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_record/test_release_fixes.py +0 -0
  990. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_record/test_savepoints.py +0 -0
  991. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_record/test_seeding.py +0 -0
  992. {sillo_framework-0.2.0/tests/test_requests → sillo_framework-0.3.0/tests/test_redis}/__init__.py +0 -0
  993. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_redis/test_redis_cache.py +0 -0
  994. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_redis/test_redis_transport.py +0 -0
  995. {sillo_framework-0.2.0/tests/test_responses → sillo_framework-0.3.0/tests/test_requests}/__init__.py +0 -0
  996. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_requests/test_basic_properties.py +0 -0
  997. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_requests/test_body_data.py +0 -0
  998. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_requests/test_cookies_auth.py +0 -0
  999. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_requests/test_path_params.py +0 -0
  1000. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_requests/test_query_params.py +0 -0
  1001. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_requests/test_request_flags.py +0 -0
  1002. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_requests/test_request_surface.py +0 -0
  1003. {sillo_framework-0.2.0/tests/test_routing → sillo_framework-0.3.0/tests/test_responses}/__init__.py +0 -0
  1004. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_responses/test_abort_not_found.py +0 -0
  1005. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_responses/test_advanced_responses.py +0 -0
  1006. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_responses/test_basic_responses.py +0 -0
  1007. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_responses/test_file_responses.py +0 -0
  1008. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_responses/test_header_override.py +0 -0
  1009. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_responses/test_headers_cookies.py +0 -0
  1010. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_responses/test_json_serialization.py +0 -0
  1011. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_responses/test_redirect_streaming.py +0 -0
  1012. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_responses/test_response_properties.py +0 -0
  1013. {sillo_framework-0.2.0/tests/test_security → sillo_framework-0.3.0/tests/test_routing}/__init__.py +0 -0
  1014. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_routing/test_basic_routing.py +0 -0
  1015. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_routing/test_converters.py +0 -0
  1016. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_routing/test_grouping.py +0 -0
  1017. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_routing/test_http_methods.py +0 -0
  1018. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_routing/test_nested_routes.py +0 -0
  1019. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_routing/test_path_parameters.py +0 -0
  1020. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_routing/test_router_wrap_asgi.py +0 -0
  1021. {sillo_framework-0.2.0/tests/test_server → sillo_framework-0.3.0/tests/test_security}/__init__.py +0 -0
  1022. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_security/test_backends.py +0 -0
  1023. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_security/test_middleware.py +0 -0
  1024. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_security/test_ratelimit_redis_backend.py +0 -0
  1025. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_security/test_record_backend.py +0 -0
  1026. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_security/test_strategies.py +0 -0
  1027. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_sessions/__init__.py +0 -0
  1028. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_sessions/test_base.py +0 -0
  1029. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_sessions/test_file_sessions.py +0 -0
  1030. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_sessions/test_integration.py +0 -0
  1031. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_sessions/test_middleware.py +0 -0
  1032. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_sessions/test_security.py +0 -0
  1033. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_sessions/test_settings.py +0 -0
  1034. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_sessions/test_signed_cookies.py +0 -0
  1035. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_small_module_gaps.py +0 -0
  1036. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_static/__init__.py +0 -0
  1037. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_static/test_static_files.py +0 -0
  1038. {sillo_framework-0.2.0/tests/test_templating → sillo_framework-0.3.0/tests/test_storage}/__init__.py +0 -0
  1039. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_supported_python_versions.py +0 -0
  1040. {sillo_framework-0.2.0/tests/test_users → sillo_framework-0.3.0/tests/test_templating}/__init__.py +0 -0
  1041. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_templating/test_template_utils.py +0 -0
  1042. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_templating/test_templates.py +0 -0
  1043. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_type_comments.py +0 -0
  1044. {sillo_framework-0.2.0/tests/test_validation → sillo_framework-0.3.0/tests/test_users}/__init__.py +0 -0
  1045. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_users/test_password.py +0 -0
  1046. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_users/test_user_commands.py +0 -0
  1047. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_users/test_user_model.py +0 -0
  1048. {sillo_framework-0.2.0/tests/test_work → sillo_framework-0.3.0/tests/test_validation}/__init__.py +0 -0
  1049. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_validation/conftest.py +0 -0
  1050. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_validation/test_body_form.py +0 -0
  1051. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_validation/test_legacy_compat.py +0 -0
  1052. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_validation/test_markers_unit.py +0 -0
  1053. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_validation/test_openapi_generation.py +0 -0
  1054. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_validation/test_params.py +0 -0
  1055. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_validation/test_request_model.py +0 -0
  1056. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_validation/test_response_model.py +0 -0
  1057. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_websockets/__init__.py +0 -0
  1058. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_websockets/test_channel_history.py +0 -0
  1059. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_websockets/test_consumer_encodings.py +0 -0
  1060. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_websockets/test_group_removal.py +0 -0
  1061. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_websockets/test_history_contract.py +0 -0
  1062. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_websockets/test_websocket_consumers.py +0 -0
  1063. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_websockets/test_websocket_errors.py +0 -0
  1064. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_websockets/test_websocket_groups.py +0 -0
  1065. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_websockets/test_websocket_protocol.py +0 -0
  1066. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_websockets/test_websocket_routing.py +0 -0
  1067. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_websockets/test_websocket_state_machine.py +0 -0
  1068. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_work/test_backends_full.py +0 -0
  1069. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_work/test_background.py +0 -0
  1070. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_work/test_events.py +0 -0
  1071. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_work/test_job_dispatch.py +0 -0
  1072. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_work/test_job_queue.py +0 -0
  1073. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_work/test_job_round_trip.py +0 -0
  1074. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_work/test_memory_backend.py +0 -0
  1075. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_work/test_queue.py +0 -0
  1076. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_work/test_queue_worker.py +0 -0
  1077. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_work/test_redis_queue_reliability.py +0 -0
  1078. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_work/test_routes.py +0 -0
  1079. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_work/test_scheduler.py +0 -0
  1080. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_work/test_scheduler_middleware.py +0 -0
  1081. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_work/test_task.py +0 -0
  1082. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_work/test_work_commands.py +0 -0
  1083. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_work/test_work_di.py +0 -0
  1084. {sillo_framework-0.2.0 → sillo_framework-0.3.0}/tests/test_work/work_jobs.py +0 -0
@@ -7,6 +7,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.3.0] - 2026-08-21
11
+
12
+ ### Added
13
+
14
+ - `sillo.storage.current_storage()` and `sillo.storage.bucket(name)` — reach the `Storage` `setup_storage` registered, from a handler, a queue job, or a script, without the application object or a request.
15
+ - `sillo.mail.current_mail()` and `sillo.mail.send_email(...)` — same shape, for the `MailClient` `setup_mail` registered.
16
+ - `sillo._internals.registry.InstanceRegistry`, the shared internal mechanism behind both: a plain slot filled once at startup and read from anywhere, raising `NotConfiguredError` — not `None` — when asked before `setup_x` has run. Documented in [Instance Registry](https://sillo.build/advanced/context-binding/).
17
+ - `useAuth(unauthorized=..., forbidden=...)` — per-route hooks that answer a failed gate directly instead of raising `AuthenticationFailed`/`PermissionDenied` for the global exception handler to catch. Each is called as `hook(request, response)`, sync or async, and its return value is sent as the response with the route handler never reached. Unset, a gate behaves exactly as before.
18
+
19
+ ## [0.2.1] - 2026-08-19
20
+
21
+ ### Changed
22
+
23
+ - Replaced `itsdangerous` with an internal `sillo.helpers.signing` implementation for CSRF tokens and signed session cookies.
24
+ - Moved `sillo.utils` modules into `sillo.helpers`.
25
+ - Fixed `typing-extensions` dependency marker to require the package on Python < 3.13.
26
+
10
27
  ## [0.2.0] - 2026-08-18
11
28
 
12
29
  A minor release, not a patch: `sillo.env` is new public API, and `.env` now
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: sillo-framework
3
- Version: 0.2.0
3
+ Version: 0.3.0
4
4
  Summary: Python with the pieces already in place: an async web framework whose ORM, auth, admin, queues, scheduler and WebSockets share one configuration model.
5
5
  Project-URL: Homepage, https://github.com/sillohq/core
6
6
  Project-URL: Repository, https://github.com/sillohq/core
@@ -29,10 +29,9 @@ Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
29
29
  Classifier: Typing :: Typed
30
30
  Requires-Python: >=3.10
31
31
  Requires-Dist: anyio==4.14.1
32
- Requires-Dist: itsdangerous>=2.1.2
33
32
  Requires-Dist: pydantic<3.0,>=2.0
34
33
  Requires-Dist: python-multipart>=0.0.6
35
- Requires-Dist: typing-extensions>=4.12.2; python_version < '3.10'
34
+ Requires-Dist: typing-extensions>=4.12.2; python_version < '3.13'
36
35
  Requires-Dist: uvicorn>=0.27.0
37
36
  Provides-Extra: all
38
37
  Requires-Dist: argon2-cffi>=21.2.0; extra == 'all'
@@ -96,6 +95,8 @@ Provides-Extra: jwt
96
95
  Requires-Dist: pyjwt>=2.7.0; extra == 'jwt'
97
96
  Provides-Extra: record
98
97
  Requires-Dist: tortoise-orm>=1.0; extra == 'record'
98
+ Provides-Extra: storage-s3
99
+ Requires-Dist: httpx>=0.23.3; extra == 'storage-s3'
99
100
  Provides-Extra: templating
100
101
  Requires-Dist: jinja2>=3.1.6; extra == 'templating'
101
102
  Description-Content-Type: text/markdown
@@ -186,42 +187,22 @@ async def home(request, response):
186
187
  return response.json({"message": "Hello from Sillo"})
187
188
  ```
188
189
 
189
- Run it with Sillo's own server:
190
+ Run it with uvicorn:
190
191
 
191
192
  ```bash
192
- uv run sillo serve --reload
193
+ uv run uvicorn app:app --reload
193
194
  ```
194
195
 
195
- ```
196
- ● sillo 0.2.0
197
-
198
- app main:app
199
- url http://127.0.0.1:8000
200
- routes 4
201
- inspect http://127.0.0.1:8000/__sillo/requests
202
- mode serving
203
- pid 5716
204
-
205
- ready in 7ms · press ctrl-c to stop
206
-
207
- 22:48:04 GET 200 / 409us
208
- ```
209
-
210
- No import string is needed. `sillo serve` looks for `app.main:app`, `main:app`
196
+ No import string is needed. `uvicorn` looks for `app.main:app`, `main:app`
211
197
  and `app:app`, and you can pin it with the `SILLO_APP` environment variable or
212
198
  a `[tool.sillo] app` entry in `pyproject.toml`. Pass one explicitly when you
213
199
  want something else:
214
200
 
215
201
  ```bash
216
- uv run sillo serve api.main:app --port 9000 --workers 4
202
+ uv run uvicorn api.main:app --port 9000 --workers 4
217
203
  ```
218
204
 
219
- Each request is logged with the time it took, and the address in the `inspect`
220
- line is a clickable request log you can open while developing. Add
221
- `--no-inspect` to leave it out, or `--plain` to see the underlying server's own
222
- output instead.
223
-
224
- `sillo serve` is built for development. For production, run the application
205
+ `uvicorn` is built for development. For production, run the application
225
206
  under a process supervisor with a reverse proxy in front of it.
226
207
 
227
208
  ## Request Validation
@@ -84,42 +84,22 @@ async def home(request, response):
84
84
  return response.json({"message": "Hello from Sillo"})
85
85
  ```
86
86
 
87
- Run it with Sillo's own server:
87
+ Run it with uvicorn:
88
88
 
89
89
  ```bash
90
- uv run sillo serve --reload
90
+ uv run uvicorn app:app --reload
91
91
  ```
92
92
 
93
- ```
94
- ● sillo 0.2.0
95
-
96
- app main:app
97
- url http://127.0.0.1:8000
98
- routes 4
99
- inspect http://127.0.0.1:8000/__sillo/requests
100
- mode serving
101
- pid 5716
102
-
103
- ready in 7ms · press ctrl-c to stop
104
-
105
- 22:48:04 GET 200 / 409us
106
- ```
107
-
108
- No import string is needed. `sillo serve` looks for `app.main:app`, `main:app`
93
+ No import string is needed. `uvicorn` looks for `app.main:app`, `main:app`
109
94
  and `app:app`, and you can pin it with the `SILLO_APP` environment variable or
110
95
  a `[tool.sillo] app` entry in `pyproject.toml`. Pass one explicitly when you
111
96
  want something else:
112
97
 
113
98
  ```bash
114
- uv run sillo serve api.main:app --port 9000 --workers 4
99
+ uv run uvicorn api.main:app --port 9000 --workers 4
115
100
  ```
116
101
 
117
- Each request is logged with the time it took, and the address in the `inspect`
118
- line is a clickable request log you can open while developing. Add
119
- `--no-inspect` to leave it out, or `--plain` to see the underlying server's own
120
- output instead.
121
-
122
- `sillo serve` is built for development. For production, run the application
102
+ `uvicorn` is built for development. For production, run the application
123
103
  under a process supervisor with a reverse proxy in front of it.
124
104
 
125
105
  ## Request Validation
@@ -296,6 +296,7 @@ export default defineConfig({
296
296
  { label: 'Application Lifecycle', link: '/advanced/application-lifecycle/' },
297
297
  { label: 'Configuration System', link: '/advanced/configuration/' },
298
298
  { label: 'Type System & Encoding', link: '/advanced/types-and-encoding/' },
299
+ { label: 'Instance Registry', link: '/advanced/context-binding/' },
299
300
  ],
300
301
  },
301
302
  {
@@ -375,6 +376,7 @@ export default defineConfig({
375
376
  { label: 'Cache System', link: '/advanced/cache/' },
376
377
  { label: 'Templating', link: '/advanced/templating/' },
377
378
  { label: 'Mail Service', link: '/advanced/mail/' },
379
+ { label: 'Storage', link: '/advanced/storage/' },
378
380
  { label: 'Console Framework', link: '/advanced/console/' },
379
381
  { label: 'Admin Panel', link: '/advanced/admin/' },
380
382
  { label: 'Pagination', link: '/advanced/pagination/' },
@@ -505,6 +507,7 @@ export default defineConfig({
505
507
  { label: 'Startup & Shutdown', link: '/guides/startups-and-shutdowns/' },
506
508
  { label: 'Concurrency & Thread Pool', link: '/guides/concurrency/' },
507
509
  { label: 'Caching', link: '/guides/cache/' },
510
+ { label: 'Storage', link: '/guides/storage/' },
508
511
  { label: 'Event System', link: '/guides/events/' },
509
512
  { label: 'OpenAPI Overview', link: '/guides/openapi/' },
510
513
  { label: 'Documentation UI', link: '/guides/openapi/documentation-ui/' },
@@ -0,0 +1,152 @@
1
+ ---
2
+ title: "Instance Registry"
3
+ description: "The shared mechanism behind current_storage(), current_mail(), and every setup_x() that follows — a plain slot filled at startup, reachable from anywhere"
4
+ ---
5
+
6
+ > Internal engineering reference for a small piece of infrastructure shared
7
+ > across subsystems.
8
+ >
9
+ > Source: `core/sillo/_internals/registry.py` (~90 lines)
10
+
11
+ ---
12
+
13
+ ## 1. The problem
14
+
15
+ Every `setup_x(app, config)` in the framework follows the same shape: build
16
+ one long-lived instance, put it on `app.state`, register lifecycle hooks,
17
+ return it. `setup_record`, `setup_work`, `setup_mail`, `setup_storage` all do
18
+ exactly this.
19
+
20
+ Getting the instance back is where they used to diverge. A handler could hold
21
+ a closure over it, or reach through `request.base_app.state["storage"]` — both
22
+ fine when there is a request in hand and the code holding it does not mind an
23
+ import shaped by that. Neither works well for the routes module that wants to
24
+ call `bucket(...)` without importing the application that built it (a
25
+ circular import, since the application is what registers the routes), and
26
+ neither works *at all* for a queue job or a script, where there is no request
27
+ and often no `app` object lying around either.
28
+
29
+ The keys were also picked independently per subsystem —
30
+ `app.state["storage"]`, `app.state["mail_client"]`, `app.state["record"]` —
31
+ untyped strings a typo in either the write or the read silently breaks.
32
+
33
+ ## 2. What this is, and what it deliberately is not
34
+
35
+ `InstanceRegistry` is a plain slot: `register(instance)` fills it,
36
+ `current(...)` reads it back, and asking before anything was registered raises
37
+ a `NotConfiguredError` naming the `setup_x` call that was skipped, rather than
38
+ returning `None` for code to accept as if it were valid.
39
+
40
+ ```python
41
+ class InstanceRegistry(Generic[T]):
42
+ def __init__(self, label: str) -> None:
43
+ self._label = label
44
+ self._instance: T | None = None
45
+
46
+ def register(self, instance: T) -> None:
47
+ self._instance = instance
48
+
49
+ def current(self, *, setup: str, example: str) -> T:
50
+ if self._instance is None:
51
+ raise NotConfiguredError(...)
52
+ return self._instance
53
+ ```
54
+
55
+ That is the whole mechanism. Two things it is not, on purpose:
56
+
57
+ **Not a `ContextVar`.** An earlier version of this bound the instance per
58
+ request, with a small ASGI middleware setting and resetting a
59
+ `contextvars.ContextVar` around each call — the same trick
60
+ [`sillo_inertia`](https://github.com/sillohq/inertia) uses for
61
+ `current_inertia()`, where it is the right answer: an Inertia response *is* a
62
+ function of the request answering it, and there is no such thing as rendering
63
+ one outside of one. Mail and storage are different — a queue job sending a
64
+ receipt or a script backfilling a bucket has no request to bind from, and
65
+ those are not edge cases for either subsystem, they are close to half its
66
+ traffic. Tying the lookup to the request lifecycle would have solved the
67
+ import problem and reintroduced the exact "how do I reach this from a
68
+ background job" problem the design was meant to remove. Registering once, at
69
+ startup, removes the request from the question entirely.
70
+
71
+ **Not per-application.** The registry holds one instance at a time, whichever
72
+ `setup_x` call registered most recently — there is no key, no lookup by
73
+ `app`. This is the same assumption `app.state["storage"]` already made *for
74
+ that application* (one `Storage` per app), made explicit at process scope
75
+ instead: one registered `Storage` at a time, full stop. A process serving two
76
+ applications with two different storage configurations — most often a test
77
+ suite building app after app — gets whichever was set up last, and that is a
78
+ deliberate trade for never needing an application object to do the lookup,
79
+ not an oversight. It has not needed to be anything more: sillo applications
80
+ are one per process in every deployment shape the framework targets.
81
+
82
+ ## 3. Who uses it
83
+
84
+ | Subsystem | Registry label | Reader |
85
+ |---|---|---|
86
+ | `sillo.storage` | `"storage"` | `current_storage()`, `bucket(name)` |
87
+ | `sillo.mail` | `"mail client"` | `current_mail()`, `send_email(...)` |
88
+
89
+ Each subsystem owns one `InstanceRegistry[T]` at module scope in its own
90
+ `context.py`, and calls `register(instance)` from its `setup_x` function —
91
+ that is the entire integration cost. `app.state["storage"]` and
92
+ `app.state["mail_client"]` are untouched; this is an addition, not a
93
+ replacement, for code that already holds the application object and would
94
+ rather use it.
95
+
96
+ ```python
97
+ # sillo/storage/context.py
98
+ _registry: InstanceRegistry[Storage] = InstanceRegistry("storage")
99
+
100
+ def register(storage: Storage) -> None:
101
+ _registry.register(storage)
102
+
103
+ def current_storage() -> Storage:
104
+ return _registry.current(setup="setup_storage", example=_EXAMPLE)
105
+ ```
106
+
107
+ ```python
108
+ # sillo/storage/storage.py — inside setup_storage
109
+ storage = Storage(config, secret=secret or _app_secret(app))
110
+ app.state["storage"] = storage
111
+ app.on_shutdown(storage.close)
112
+ register(storage) # ← the one line each setup_x adds
113
+ ```
114
+
115
+ ## 4. The failure mode this was built to avoid
116
+
117
+ A cache miss that returns `None` — instead of a sentinel distinct from every
118
+ valid cached value — invites code to accept `None` as data. The same shape
119
+ would happen here if `current_storage()` returned `None` before startup: a
120
+ handler that forgot to call `setup_storage` would get an `AttributeError` on
121
+ whatever it tried to do with `None`, three call frames away from the actual
122
+ mistake and looking nothing like it.
123
+
124
+ `NotConfiguredError` is raised at the point of the mistake, and names the
125
+ `setup_x` call that should have run first:
126
+
127
+ ```
128
+ No storage has been set up yet.
129
+
130
+ This reads the storage setup_storage registers. Call it during startup,
131
+ before anything asks for the storage back:
132
+
133
+ storage = setup_storage(app, StorageConfig(default="attachments", buckets={...}))
134
+
135
+ If it already runs somewhere, check that this code path executes after it —
136
+ module import order, not request order, decides whether that has happened.
137
+ ```
138
+
139
+ The last line is the one worth reading twice: because registration happens at
140
+ `setup_x` time and not on first request, the failure this actually catches in
141
+ practice is an import-order bug — a module reading `current_storage()` at its
142
+ own import time, before the application module that calls `setup_storage` has
143
+ run.
144
+
145
+ ## 5. Testing
146
+
147
+ `tests/test_internals/test_registry.py` covers the primitive alone — no app,
148
+ no request, nothing async unless the test itself needs to be — proving
149
+ `register`/`current` work as a plain function call would. `tests/test_storage/test_context.py`
150
+ and `tests/test_mail/test_context.py` cover the wiring: that `setup_storage`
151
+ and `setup_mail` actually call `register`, that the last call in a process
152
+ wins, and that a `NotConfiguredError` names the right subsystem.
@@ -1265,22 +1265,7 @@ Jinja2-based template engine.
1265
1265
 
1266
1266
  ---
1267
1267
 
1268
- ## Frontend & Static Files
1269
-
1270
- ### FrontendApp
1271
-
1272
- **Module:** `sillo.frontend`
1273
-
1274
- SPA build directory serving with fallback routing. Inherits `BaseRouter`.
1275
-
1276
- **Attributes:** `directory` (Path), `fallback` ("auto" | str | bool | None),
1277
- `cache_control`.
1278
-
1279
- **Fallback behaviour:** `"auto"` tries `404.html` then `index.html`.
1280
-
1281
- **Related:** `StaticFiles`, `SilloApp.frontend()`
1282
-
1283
- ---
1268
+ ## Static Files
1284
1269
 
1285
1270
  ### StaticFiles
1286
1271
 
@@ -1288,8 +1273,6 @@ SPA build directory serving with fallback routing. Inherits `BaseRouter`.
1288
1273
 
1289
1274
  Static file serving middleware/router.
1290
1275
 
1291
- **Related:** `FrontendApp`
1292
-
1293
1276
  ---
1294
1277
 
1295
1278
  ## WebSocket
@@ -619,21 +619,53 @@ def get_mail_client(request) -> MailClient:
619
619
  ```
620
620
 
621
621
  Accesses the client stored in `app.state.mail_client` via the request's state
622
- proxy.
622
+ proxy. Requires a request — `current_mail()` below does not.
623
+
624
+ ### `send_email(...)`
625
+
626
+ **File:** `core/sillo/mail/client.py`
627
+
628
+ The way to send mail from a handler, a queue job, or a script — nothing to
629
+ fetch first, no request required:
630
+
631
+ ```python
632
+ from sillo.mail import send_email
633
+
634
+ async def process_signup(user): # a queue job, not a handler
635
+ await send_email(user.email, "Welcome", body="...")
636
+ ```
637
+
638
+ ### `current_mail()`
639
+
640
+ **File:** `core/sillo/mail/context.py`
641
+
642
+ The client itself, for the two things `send_email(...)` doesn't cover:
643
+ `send_message(message)` for a prebuilt `EmailMessage`, and
644
+ `send_template_email(...)` when its distinct signature reads better than
645
+ `send_email`'s `template_name=`/`template_context=` kwargs. Most code never
646
+ needs this — `send_email(...)` already is `current_mail().send_email(...)`.
647
+
648
+ `setup_mail` registers the client with `sillo._internals.registry`, the same
649
+ [instance registry](/advanced/context-binding/) `sillo.storage` uses — a
650
+ plain slot filled at startup, not scoped to a request, because mail is sent
651
+ from queue jobs and scripts at least as often as from a handler. The trade
652
+ that makes explicit: the registry holds one client at a time, whichever
653
+ `setup_mail` call registered last. That is exactly the assumption
654
+ `app.state.mail_client` already made — one mail client per application — made
655
+ visible rather than implicit in a lookup key.
623
656
 
624
657
  ### Usage Pattern
625
658
 
626
659
  ```python
627
- from sillo.mail import setup_mail, get_mail_client, MailConfig
660
+ from sillo.mail import setup_mail, send_email, MailConfig
628
661
 
629
662
  # At startup
630
663
  config = MailConfig.for_gmail("user@gmail.com", "app-password")
631
664
  setup_mail(app, config)
632
665
 
633
- # In handler
634
- async def send_welcome(request, response):
635
- client = get_mail_client(request)
636
- result = await client.send_template_email(
666
+ # In handler, a queue job, or a script
667
+ async def send_welcome(user):
668
+ result = await send_email(
637
669
  to="newuser@example.com",
638
670
  subject="Welcome!",
639
671
  template_name="welcome",
@@ -348,14 +348,14 @@ class CSRFConfig:
348
348
 
349
349
  ### Token Generation
350
350
 
351
- The middleware uses `itsdangerous.URLSafeSerializer` to sign tokens:
351
+ The middleware uses an internal `URLSafeSerializer` to sign tokens:
352
352
 
353
353
  ```python
354
354
  def _generate_csrf_token(self) -> str:
355
355
  return self.serializer.dumps(secrets.token_urlsafe(32))
356
356
  ```
357
357
 
358
- A random token is generated with `secrets.token_urlsafe(32)`, then signed with itsdangerous. The signed token is stored in a cookie and must be submitted back in the `X-CSRFToken` header.
358
+ A random token is generated with `secrets.token_urlsafe(32)`, then signed with HMAC-SHA256. The signed token is stored in a cookie and must be submitted back in the `X-CSRFToken` header.
359
359
 
360
360
  ### Double-Submit Cookie Pattern
361
361
 
@@ -303,12 +303,28 @@ Three methods control when a session expires:
303
303
 
304
304
  - **`set_expiration_time(expiration: datetime)`** (line 200): Explicit
305
305
  override.
306
- - **`get_expiration_time()`** (line 209): Resolution order:
306
+ - **`get_expiration_time()`**: Resolution order:
307
307
  1. Explicit override from `set_expiration_time`
308
- 2. If `session_permanent` is `False`: `now(utc) + session_expiration_time`
309
- 3. If `session_permanent` is `True`: `datetime.max` (effectively never)
310
- 4. Fallback: 7 days if config is unreachable
311
- - **`has_expired()`** (line 251): `now(utc) > get_expiration_time()`
308
+ 2. If `session_permanent` is `True` (the default):
309
+ `now(utc) + session_expiration_time`
310
+ 3. If `session_permanent` is `False`: `None` — the cookie goes out with no
311
+ `Expires` at all, so the browser drops it when it closes
312
+ 4. Fallback: `session_expiration_time`'s default of 86400 if config is
313
+ unreachable
314
+ - **`has_expired()`**: `now(utc) > get_expiration_time()`, and `False` for a
315
+ session with no expiry
316
+
317
+ This used to be inverted — a permanent session got `datetime.max`, so the
318
+ **default** configuration issued a cookie that never expired, and
319
+ `session_expiration_time` applied only to the non-permanent case that did not
320
+ need it.
321
+
322
+ :::caution[The cookie's expiry is not what protects you]
323
+ `Expires` is a request to the browser. Anyone replaying a captured cookie
324
+ simply does not honour it. For the signed-cookie backend the real bound is
325
+ `SignedSessionManager.max_age`, which is checked against a timestamp inside
326
+ the signature and defaults to `session_expiration_time`.
327
+ :::
312
328
 
313
329
  ### should_set_cookie
314
330
 
@@ -495,11 +511,11 @@ def __init__(self, config=None, secret_key: str | None = None):
495
511
  )
496
512
  ```
497
513
 
498
- Uses `itsdangerous.URLSafeTimedSerializer` which:
514
+ Uses an internal `URLSafeTimedSerializer` which:
499
515
  - Serialises the payload to JSON, then base64url-encodes it.
500
516
  - Appends a timestamp.
501
517
  - Signs the whole thing with HMAC-SHA256 using the secret key and salt.
502
- - The salt prevents signature reuse across different itsdangerous contexts.
518
+ - The salt prevents signature reuse across different signing contexts.
503
519
 
504
520
  ### Signing and Verification
505
521
 
@@ -813,7 +829,7 @@ app.use(SessionMiddleware(secret_key="your-secret-key"))
813
829
  config = SessionConfig(
814
830
  session_cookie_name="app_session",
815
831
  session_expiration_time=3600, # 1 hour
816
- session_permanent=False, # expires with expiration_time
832
+ session_permanent=False, # browser-session cookie, no Expires
817
833
  session_refresh_each_request=False, # don't refresh on each request
818
834
  session_cookie_secure=True, # HTTPS only
819
835
  session_cookie_httponly=True, # no JavaScript access