sillo-framework 0.0.1a1__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 (775) hide show
  1. sillo_framework-0.0.1a1/.agents/skills/nexios-overview/SKILL.md +61 -0
  2. sillo_framework-0.0.1a1/.agents/skills/nexios-overview/agents/openai.yaml +4 -0
  3. sillo_framework-0.0.1a1/.agents/skills/nexios-overview/references/adoption-guide.md +72 -0
  4. sillo_framework-0.0.1a1/.agents/skills/nexios-overview/references/auth-state-and-security.md +318 -0
  5. sillo_framework-0.0.1a1/.agents/skills/nexios-overview/references/capabilities-map.md +164 -0
  6. sillo_framework-0.0.1a1/.agents/skills/nexios-overview/references/composition-and-lifecycle.md +209 -0
  7. sillo_framework-0.0.1a1/.agents/skills/nexios-overview/references/contrib-modules.md +159 -0
  8. sillo_framework-0.0.1a1/.agents/skills/nexios-overview/references/dependency-injection-deep-dive.md +175 -0
  9. sillo_framework-0.0.1a1/.agents/skills/nexios-overview/references/events-and-emitter.md +124 -0
  10. sillo_framework-0.0.1a1/.agents/skills/nexios-overview/references/framework-overview.md +109 -0
  11. sillo_framework-0.0.1a1/.agents/skills/nexios-overview/references/http-and-routing.md +282 -0
  12. sillo_framework-0.0.1a1/.agents/skills/nexios-overview/references/realtime-and-productivity.md +201 -0
  13. sillo_framework-0.0.1a1/.agents/skills/nexios-overview/references/responses-reference.md +126 -0
  14. sillo_framework-0.0.1a1/.agents/skills/nexios-overview/references/sessions-and-state.md +125 -0
  15. sillo_framework-0.0.1a1/.github/CODE_OF_CONDUCT.md +30 -0
  16. sillo_framework-0.0.1a1/.github/CONTRIBUTING.MD +207 -0
  17. sillo_framework-0.0.1a1/.github/ISSUE_TEMPLATE/bug_report.md +61 -0
  18. sillo_framework-0.0.1a1/.github/ISSUE_TEMPLATE/feature_request.md +56 -0
  19. sillo_framework-0.0.1a1/.github/dependabot.yml +6 -0
  20. sillo_framework-0.0.1a1/.github/funding.yml +1 -0
  21. sillo_framework-0.0.1a1/.github/workflows/coverage.yml +27 -0
  22. sillo_framework-0.0.1a1/.github/workflows/format-code.yml +40 -0
  23. sillo_framework-0.0.1a1/.github/workflows/merge-to-main.yml +55 -0
  24. sillo_framework-0.0.1a1/.github/workflows/release.yml +63 -0
  25. sillo_framework-0.0.1a1/.github/workflows/run-tests.yaml +38 -0
  26. sillo_framework-0.0.1a1/.github/workflows/triage.yml +20 -0
  27. sillo_framework-0.0.1a1/.github/workflows/type-check.yaml +37 -0
  28. sillo_framework-0.0.1a1/.gitignore +55 -0
  29. sillo_framework-0.0.1a1/LICENSE +27 -0
  30. sillo_framework-0.0.1a1/PKG-INFO +293 -0
  31. sillo_framework-0.0.1a1/README.md +206 -0
  32. sillo_framework-0.0.1a1/SECURITY.md +32 -0
  33. sillo_framework-0.0.1a1/docs/.github/workflows/ci.yml +38 -0
  34. sillo_framework-0.0.1a1/docs/.github/workflows/deploy-docs-preview.yml +133 -0
  35. sillo_framework-0.0.1a1/docs/.github/workflows/deploy-docs.yml +60 -0
  36. sillo_framework-0.0.1a1/docs/.github/workflows/publish-package.yml +61 -0
  37. sillo_framework-0.0.1a1/docs/.gitignore +26 -0
  38. sillo_framework-0.0.1a1/docs/.prettierrc +9 -0
  39. sillo_framework-0.0.1a1/docs/README.md +69 -0
  40. sillo_framework-0.0.1a1/docs/bun.lock +1586 -0
  41. sillo_framework-0.0.1a1/docs/docs/README.md +49 -0
  42. sillo_framework-0.0.1a1/docs/docs/astro.config.mjs +210 -0
  43. sillo_framework-0.0.1a1/docs/docs/package.json +22 -0
  44. sillo_framework-0.0.1a1/docs/docs/public/favicon.svg +1 -0
  45. sillo_framework-0.0.1a1/docs/docs/public/logo-white.svg +1 -0
  46. sillo_framework-0.0.1a1/docs/docs/public/logo.ico +0 -0
  47. sillo_framework-0.0.1a1/docs/docs/public/logo.png +0 -0
  48. sillo_framework-0.0.1a1/docs/docs/src/assets/houston.webp +0 -0
  49. sillo_framework-0.0.1a1/docs/docs/src/assets/logo-black.svg +1 -0
  50. sillo_framework-0.0.1a1/docs/docs/src/assets/logo-white.svg +1 -0
  51. sillo_framework-0.0.1a1/docs/docs/src/assets/placeholder.svg +38 -0
  52. sillo_framework-0.0.1a1/docs/docs/src/assets/placeholder169.svg +40 -0
  53. sillo_framework-0.0.1a1/docs/docs/src/content/docs/community/contribution-guide.md +367 -0
  54. sillo_framework-0.0.1a1/docs/docs/src/content/docs/community/index.md +87 -0
  55. sillo_framework-0.0.1a1/docs/docs/src/content/docs/community/installation.md +131 -0
  56. sillo_framework-0.0.1a1/docs/docs/src/content/docs/community/integrations/jrpc.md +2257 -0
  57. sillo_framework-0.0.1a1/docs/docs/src/content/docs/community/integrations/mail.md +607 -0
  58. sillo_framework-0.0.1a1/docs/docs/src/content/docs/community/integrations/redis.md +546 -0
  59. sillo_framework-0.0.1a1/docs/docs/src/content/docs/community/integrations/scheduler.md +363 -0
  60. sillo_framework-0.0.1a1/docs/docs/src/content/docs/community/integrations/tasks.md +921 -0
  61. sillo_framework-0.0.1a1/docs/docs/src/content/docs/community/integrations/tortoise.md +296 -0
  62. sillo_framework-0.0.1a1/docs/docs/src/content/docs/community/middleware/etag.md +161 -0
  63. sillo_framework-0.0.1a1/docs/docs/src/content/docs/community/middleware/proxy.md +450 -0
  64. sillo_framework-0.0.1a1/docs/docs/src/content/docs/community/middleware/timeout.md +420 -0
  65. sillo_framework-0.0.1a1/docs/docs/src/content/docs/community/middleware/trusted-host.md +292 -0
  66. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/api-keys.md +149 -0
  67. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/authentication.md +329 -0
  68. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/cache.mdx +440 -0
  69. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/concurrency.md +392 -0
  70. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/configuration.md +646 -0
  71. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/content-negotiation.md +553 -0
  72. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/cookies.mdx +383 -0
  73. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/cors.md +494 -0
  74. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/csrf.md +449 -0
  75. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/dependency-injection.md +419 -0
  76. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/error-handling.mdx +381 -0
  77. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/events.mdx +550 -0
  78. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/file-upload.md +189 -0
  79. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/frontend.md +194 -0
  80. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/graphql.md +193 -0
  81. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/handlers.md +446 -0
  82. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/hashing.md +1055 -0
  83. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/headers.mdx +435 -0
  84. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/helpers/async.mdx +436 -0
  85. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/helpers/crypto.mdx +362 -0
  86. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/helpers/deprecation.mdx +358 -0
  87. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/helpers/files.mdx +365 -0
  88. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/helpers/hashing.mdx +366 -0
  89. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/helpers/html.mdx +390 -0
  90. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/helpers/index.mdx +253 -0
  91. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/helpers/jwt.mdx +367 -0
  92. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/helpers/network.mdx +418 -0
  93. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/helpers/retry.mdx +362 -0
  94. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/helpers/strings.mdx +396 -0
  95. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/helpers/text.mdx +350 -0
  96. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/http/client.md +573 -0
  97. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/installation.mdx +146 -0
  98. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/introduction.md +325 -0
  99. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/jwt-auth.md +335 -0
  100. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/middleware.md +406 -0
  101. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/openapi/authentication-documentation.md +666 -0
  102. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/openapi/basic-config.png +0 -0
  103. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/openapi/bearerAuth.png +0 -0
  104. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/openapi/custom.png +0 -0
  105. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/openapi/custom2.png +0 -0
  106. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/openapi/customizing-openapi-configuration.md +733 -0
  107. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/openapi/description.png +0 -0
  108. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/openapi/headers.png +0 -0
  109. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/openapi/index.md +705 -0
  110. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/openapi/multi-response.png +0 -0
  111. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/openapi/path-params.png +0 -0
  112. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/openapi/query-params.png +0 -0
  113. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/openapi/request-body.png +0 -0
  114. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/openapi/request-parameters.md +647 -0
  115. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/openapi/request-schemas.mdx +527 -0
  116. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/openapi/response-list.png +0 -0
  117. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/openapi/response-models.md +615 -0
  118. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/openapi/response.png +0 -0
  119. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/pagination.mdx +535 -0
  120. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/permissions.md +509 -0
  121. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/protecting-routes.md +403 -0
  122. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/rate-limiting.md +243 -0
  123. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/record/casting-collections.mdx +433 -0
  124. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/record/exceptions-pydantic.mdx +453 -0
  125. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/record/index.mdx +418 -0
  126. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/record/migrations.mdx +428 -0
  127. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/record/models.mdx +550 -0
  128. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/record/pagination.mdx +466 -0
  129. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/record/scopes-events.mdx +451 -0
  130. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/record/transactions-factories.mdx +450 -0
  131. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/request-info.md +461 -0
  132. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/request-inputs.md +136 -0
  133. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/request-lifecycle.md +497 -0
  134. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/request-parameters.mdx +402 -0
  135. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/routers-and-subapps.md +259 -0
  136. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/routing.mdx +1231 -0
  137. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/security.md +335 -0
  138. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/sending-responses.mdx +556 -0
  139. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/serialization.md +339 -0
  140. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/services/mail.mdx +460 -0
  141. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/session-auth.md +392 -0
  142. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/sessions.md +539 -0
  143. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/startups-and-shutdowns.mdx +428 -0
  144. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/static-files.mdx +349 -0
  145. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/streaming-response.mdx +443 -0
  146. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/templating/advanced.mdx +483 -0
  147. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/templating/index.mdx +677 -0
  148. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/url-normalization.md +166 -0
  149. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/users.md +443 -0
  150. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/validation/errors.md +387 -0
  151. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/validation/forms-and-files.md +449 -0
  152. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/validation/index.md +339 -0
  153. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/validation/openapi.md +467 -0
  154. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/validation/parameters.md +478 -0
  155. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/validation/request-bodies.md +567 -0
  156. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/validation/response-models.md +420 -0
  157. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/websockets/channels.mdx +439 -0
  158. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/websockets/consumer.mdx +462 -0
  159. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/websockets/events.mdx +468 -0
  160. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/websockets/groups.mdx +433 -0
  161. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/websockets/index.mdx +406 -0
  162. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/work/background.mdx +434 -0
  163. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/work/events.mdx +452 -0
  164. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/work/index.mdx +441 -0
  165. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/work/jobs.mdx +729 -0
  166. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/work/queue.mdx +1218 -0
  167. sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/work/scheduler.mdx +529 -0
  168. sillo_framework-0.0.1a1/docs/docs/src/content/docs/reference/components.mdx +180 -0
  169. sillo_framework-0.0.1a1/docs/docs/src/content/docs/reference/plugin-api.md +116 -0
  170. sillo_framework-0.0.1a1/docs/docs/src/content/docs/showcase/splash/banner.mdx +37 -0
  171. sillo_framework-0.0.1a1/docs/docs/src/content/docs/showcase/splash/centered-top.mdx +37 -0
  172. sillo_framework-0.0.1a1/docs/docs/src/content/docs/showcase/splash/centered.mdx +37 -0
  173. sillo_framework-0.0.1a1/docs/docs/src/content/docs/showcase/splash/split-left.mdx +37 -0
  174. sillo_framework-0.0.1a1/docs/docs/src/content/docs/showcase/splash/split-right.mdx +37 -0
  175. sillo_framework-0.0.1a1/docs/docs/src/content/docs/showcase/splash-pages.mdx +74 -0
  176. sillo_framework-0.0.1a1/docs/docs/src/content/docs/showcase/starlight-components.mdx +214 -0
  177. sillo_framework-0.0.1a1/docs/docs/src/content/docs/showcase/typography.md +104 -0
  178. sillo_framework-0.0.1a1/docs/docs/src/content.config.ts +11 -0
  179. sillo_framework-0.0.1a1/docs/docs/src/styles/global.css +203 -0
  180. sillo_framework-0.0.1a1/docs/docs/tsconfig.json +5 -0
  181. sillo_framework-0.0.1a1/docs/package.json +24 -0
  182. sillo_framework-0.0.1a1/docs/packages/lucode-starlight/README.md +213 -0
  183. sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/custom/ContainerSection.astro +58 -0
  184. sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/custom/LinkButton.astro +141 -0
  185. sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/custom/dropdown/Dropdown.astro +616 -0
  186. sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/custom/dropdown/DropdownContent.astro +179 -0
  187. sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/custom/dropdown/DropdownItem.astro +72 -0
  188. sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/custom/dropdown/DropdownLabel.astro +31 -0
  189. sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/custom/dropdown/DropdownSeparator.astro +18 -0
  190. sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/custom/dropdown/DropdownShortcut.astro +24 -0
  191. sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/custom/dropdown/DropdownTrigger.astro +54 -0
  192. sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/custom/dropdown/index.ts +29 -0
  193. sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/overrides/ContentPanel.astro +1 -0
  194. sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/overrides/Footer.astro +54 -0
  195. sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/overrides/Header.astro +96 -0
  196. sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/overrides/Hero.astro +307 -0
  197. sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/overrides/MarkdownContent.astro +17 -0
  198. sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/overrides/PageFrame.astro +121 -0
  199. sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/overrides/PageSidebar.astro +20 -0
  200. sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/overrides/PageTitle.astro +130 -0
  201. sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/overrides/Pagination.astro +101 -0
  202. sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/overrides/Search.astro +549 -0
  203. sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/overrides/Sidebar.astro +161 -0
  204. sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/overrides/SiteTitle.astro +67 -0
  205. sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/overrides/SocialIcons.astro +47 -0
  206. sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/overrides/TableOfContents.astro +36 -0
  207. sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/overrides/ThemeSelect.astro +156 -0
  208. sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/overrides/TwoColumnContent.astro +75 -0
  209. sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/overrides/parts/Drawer.astro +259 -0
  210. sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/overrides/parts/MobileMenuToggle.astro +42 -0
  211. sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/overrides/parts/NavBar.astro +111 -0
  212. sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/overrides/parts/SidebarSublist.astro +115 -0
  213. sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/overrides/parts/toc/TableOfContentsList.astro +71 -0
  214. sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/overrides/parts/toc/starlight-toc.ts +119 -0
  215. sillo_framework-0.0.1a1/docs/packages/lucode-starlight/core/config/constants.ts +1 -0
  216. sillo_framework-0.0.1a1/docs/packages/lucode-starlight/core/config/expresive-code.ts +63 -0
  217. sillo_framework-0.0.1a1/docs/packages/lucode-starlight/core/config/override.ts +48 -0
  218. sillo_framework-0.0.1a1/docs/packages/lucode-starlight/core/config/schemas.ts +57 -0
  219. sillo_framework-0.0.1a1/docs/packages/lucode-starlight/core/config/vite.ts +20 -0
  220. sillo_framework-0.0.1a1/docs/packages/lucode-starlight/core/plugin.ts +56 -0
  221. sillo_framework-0.0.1a1/docs/packages/lucode-starlight/global.d.ts +5 -0
  222. sillo_framework-0.0.1a1/docs/packages/lucode-starlight/index.ts +3 -0
  223. sillo_framework-0.0.1a1/docs/packages/lucode-starlight/package.json +54 -0
  224. sillo_framework-0.0.1a1/docs/packages/lucode-starlight/schema.ts +24 -0
  225. sillo_framework-0.0.1a1/docs/packages/lucode-starlight/styles/base.css +904 -0
  226. sillo_framework-0.0.1a1/docs/packages/lucode-starlight/styles/layers.css +1 -0
  227. sillo_framework-0.0.1a1/docs/packages/lucode-starlight/styles/theme.css +67 -0
  228. sillo_framework-0.0.1a1/docs/packages/lucode-starlight/user-components.ts +3 -0
  229. sillo_framework-0.0.1a1/docs/packages/lucode-starlight/virtual.d.ts +51 -0
  230. sillo_framework-0.0.1a1/docs/renovate.json +7 -0
  231. sillo_framework-0.0.1a1/docs/test/lucode-starlight/config.test.ts +171 -0
  232. sillo_framework-0.0.1a1/docs/test/lucode-starlight/plugin.test.ts +175 -0
  233. sillo_framework-0.0.1a1/docs/test/lucode-starlight/starlight-toc.test.ts +279 -0
  234. sillo_framework-0.0.1a1/docs/tsconfig.json +9 -0
  235. sillo_framework-0.0.1a1/docs/vitest.config.ts +28 -0
  236. sillo_framework-0.0.1a1/examples/README.md +66 -0
  237. sillo_framework-0.0.1a1/examples/auth/01_session_auth.py +97 -0
  238. sillo_framework-0.0.1a1/examples/auth/02_jwt_auth.py +87 -0
  239. sillo_framework-0.0.1a1/examples/auth/03_custom_backend.py +119 -0
  240. sillo_framework-0.0.1a1/examples/auth/04_multiple_backends.py +167 -0
  241. sillo_framework-0.0.1a1/examples/auth/05_router_integration.py +86 -0
  242. sillo_framework-0.0.1a1/examples/config/.env.development +15 -0
  243. sillo_framework-0.0.1a1/examples/config/.env.example +20 -0
  244. sillo_framework-0.0.1a1/examples/config/.env.production +15 -0
  245. sillo_framework-0.0.1a1/examples/config/01_basic_config.py +62 -0
  246. sillo_framework-0.0.1a1/examples/config/02_web_app.py +154 -0
  247. sillo_framework-0.0.1a1/examples/config/README.md +353 -0
  248. sillo_framework-0.0.1a1/examples/database/01_sqlite_todo.py +177 -0
  249. sillo_framework-0.0.1a1/examples/database/02_tortoise_notes.py +174 -0
  250. sillo_framework-0.0.1a1/examples/database/03_tortoise_blog.py +197 -0
  251. sillo_framework-0.0.1a1/examples/exception_handling/01_basic.py +21 -0
  252. sillo_framework-0.0.1a1/examples/exception_handling/02_custom.py +25 -0
  253. sillo_framework-0.0.1a1/examples/file_handling/01_upload_download.py +202 -0
  254. sillo_framework-0.0.1a1/examples/file_handling/02_simple_upload.py +28 -0
  255. sillo_framework-0.0.1a1/examples/getting_started/01_hello_world.py +58 -0
  256. sillo_framework-0.0.1a1/examples/getting_started/02_basic_rest.py +22 -0
  257. sillo_framework-0.0.1a1/examples/getting_started/03_enhanced_api.py +341 -0
  258. sillo_framework-0.0.1a1/examples/getting_started/04_lifespan.py +214 -0
  259. sillo_framework-0.0.1a1/examples/getting_started/05_streaming_middleware.py +28 -0
  260. sillo_framework-0.0.1a1/examples/getting_started/README.md +31 -0
  261. sillo_framework-0.0.1a1/examples/hashing/01_basic_password_hashing.py +90 -0
  262. sillo_framework-0.0.1a1/examples/hashing/01_basic_usage.py +33 -0
  263. sillo_framework-0.0.1a1/examples/hashing/02_multiple_algorithms.py +177 -0
  264. sillo_framework-0.0.1a1/examples/hashing/02_schemes.py +74 -0
  265. sillo_framework-0.0.1a1/examples/hashing/03_web_api.py +125 -0
  266. sillo_framework-0.0.1a1/examples/hashing/README.md +246 -0
  267. sillo_framework-0.0.1a1/examples/middleware/01_basic.py +29 -0
  268. sillo_framework-0.0.1a1/examples/middleware/02_class_based.py +29 -0
  269. sillo_framework-0.0.1a1/examples/middleware/03_asgi_middleware.py +39 -0
  270. sillo_framework-0.0.1a1/examples/request_inputs/01_json_data.py +25 -0
  271. sillo_framework-0.0.1a1/examples/request_inputs/02_form_data.py +9 -0
  272. sillo_framework-0.0.1a1/examples/request_inputs/03_raw_body.py +10 -0
  273. sillo_framework-0.0.1a1/examples/request_inputs/04_streaming.py +12 -0
  274. sillo_framework-0.0.1a1/examples/responses/01_return_values.py +21 -0
  275. sillo_framework-0.0.1a1/examples/responses/02_json_with_headers.py +12 -0
  276. sillo_framework-0.0.1a1/examples/responses/03_response_types.py +28 -0
  277. sillo_framework-0.0.1a1/examples/responses/04_response_classes.py +37 -0
  278. sillo_framework-0.0.1a1/examples/routing/01_basic_routes.py +31 -0
  279. sillo_framework-0.0.1a1/examples/routing/02_path_parameters.py +53 -0
  280. sillo_framework-0.0.1a1/examples/routing/03_routes_class.py +36 -0
  281. sillo_framework-0.0.1a1/examples/routing/04_routers.py +21 -0
  282. sillo_framework-0.0.1a1/examples/templating/01_basic.py +52 -0
  283. sillo_framework-0.0.1a1/examples/templating/02_inheritance.py +120 -0
  284. sillo_framework-0.0.1a1/examples/templating/03_custom_filters.py +110 -0
  285. sillo_framework-0.0.1a1/examples/templating/README.md +87 -0
  286. sillo_framework-0.0.1a1/examples/templating/requirements.txt +4 -0
  287. sillo_framework-0.0.1a1/examples/templating/templates/index.html +25 -0
  288. sillo_framework-0.0.1a1/examples/templating/templates/user_profile.html +20 -0
  289. sillo_framework-0.0.1a1/examples/validation/01_advanced.py +170 -0
  290. sillo_framework-0.0.1a1/examples/validation/02_pydantic.py +28 -0
  291. sillo_framework-0.0.1a1/examples/websockets/01_basic_echo.py +18 -0
  292. sillo_framework-0.0.1a1/examples/websockets/02_chat_rooms.py +102 -0
  293. sillo_framework-0.0.1a1/examples/websockets/03_custom_history.py +284 -0
  294. sillo_framework-0.0.1a1/pyproject.toml +296 -0
  295. sillo_framework-0.0.1a1/requirements-dev.txt +9 -0
  296. sillo_framework-0.0.1a1/requirements.txt +9 -0
  297. sillo_framework-0.0.1a1/sillo/__init__.py +138 -0
  298. sillo_framework-0.0.1a1/sillo/_internals/__init__.py +0 -0
  299. sillo_framework-0.0.1a1/sillo/_internals/_middleware.py +546 -0
  300. sillo_framework-0.0.1a1/sillo/admin/__init__.py +232 -0
  301. sillo_framework-0.0.1a1/sillo/admin/auth.py +167 -0
  302. sillo_framework-0.0.1a1/sillo/admin/models.py +153 -0
  303. sillo_framework-0.0.1a1/sillo/admin/registry.py +302 -0
  304. sillo_framework-0.0.1a1/sillo/admin/router.py +463 -0
  305. sillo_framework-0.0.1a1/sillo/admin/routes.py +1734 -0
  306. sillo_framework-0.0.1a1/sillo/admin/static/logo.png +0 -0
  307. sillo_framework-0.0.1a1/sillo/admin/templates/base.html +497 -0
  308. sillo_framework-0.0.1a1/sillo/admin/templates/create.html +76 -0
  309. sillo_framework-0.0.1a1/sillo/admin/templates/dashboard.html +45 -0
  310. sillo_framework-0.0.1a1/sillo/admin/templates/delete.html +15 -0
  311. sillo_framework-0.0.1a1/sillo/admin/templates/detail.html +61 -0
  312. sillo_framework-0.0.1a1/sillo/admin/templates/list.html +117 -0
  313. sillo_framework-0.0.1a1/sillo/admin/templates/login.html +54 -0
  314. sillo_framework-0.0.1a1/sillo/admin/templates/query.html +56 -0
  315. sillo_framework-0.0.1a1/sillo/admin/templates/update.html +85 -0
  316. sillo_framework-0.0.1a1/sillo/admin/templating.py +44 -0
  317. sillo_framework-0.0.1a1/sillo/application.py +2582 -0
  318. sillo_framework-0.0.1a1/sillo/auth/__init__.py +47 -0
  319. sillo_framework-0.0.1a1/sillo/auth/apikey/__init__.py +71 -0
  320. sillo_framework-0.0.1a1/sillo/auth/apikey/backend.py +104 -0
  321. sillo_framework-0.0.1a1/sillo/auth/apikey/mixins.py +132 -0
  322. sillo_framework-0.0.1a1/sillo/auth/apikey/models.py +308 -0
  323. sillo_framework-0.0.1a1/sillo/auth/backend.py +117 -0
  324. sillo_framework-0.0.1a1/sillo/auth/decorator.py +277 -0
  325. sillo_framework-0.0.1a1/sillo/auth/exceptions.py +197 -0
  326. sillo_framework-0.0.1a1/sillo/auth/jwt_auth/__init__.py +87 -0
  327. sillo_framework-0.0.1a1/sillo/auth/jwt_auth/backend.py +153 -0
  328. sillo_framework-0.0.1a1/sillo/auth/jwt_auth/mixins.py +237 -0
  329. sillo_framework-0.0.1a1/sillo/auth/jwt_auth/models.py +266 -0
  330. sillo_framework-0.0.1a1/sillo/auth/jwt_auth/tokens.py +301 -0
  331. sillo_framework-0.0.1a1/sillo/auth/middleware.py +158 -0
  332. sillo_framework-0.0.1a1/sillo/auth/model.py +35 -0
  333. sillo_framework-0.0.1a1/sillo/auth/session_auth/__init__.py +27 -0
  334. sillo_framework-0.0.1a1/sillo/auth/session_auth/backend.py +166 -0
  335. sillo_framework-0.0.1a1/sillo/auth/session_auth/guard.py +285 -0
  336. sillo_framework-0.0.1a1/sillo/auth/session_auth/mixins.py +164 -0
  337. sillo_framework-0.0.1a1/sillo/auth/session_auth/models.py +185 -0
  338. sillo_framework-0.0.1a1/sillo/auth/use_auth.py +276 -0
  339. sillo_framework-0.0.1a1/sillo/cache/__init__.py +53 -0
  340. sillo_framework-0.0.1a1/sillo/cache/backends.py +835 -0
  341. sillo_framework-0.0.1a1/sillo/cache/base.py +644 -0
  342. sillo_framework-0.0.1a1/sillo/cache/config.py +163 -0
  343. sillo_framework-0.0.1a1/sillo/cache/decorator.py +355 -0
  344. sillo_framework-0.0.1a1/sillo/config/__init__.py +25 -0
  345. sillo_framework-0.0.1a1/sillo/config/core.py +117 -0
  346. sillo_framework-0.0.1a1/sillo/core/__init__.py +6 -0
  347. sillo_framework-0.0.1a1/sillo/core/converters.py +572 -0
  348. sillo_framework-0.0.1a1/sillo/core/dependencies/__init__.py +11 -0
  349. sillo_framework-0.0.1a1/sillo/core/dependencies/base.py +583 -0
  350. sillo_framework-0.0.1a1/sillo/core/encoding.py +395 -0
  351. sillo_framework-0.0.1a1/sillo/core/error/__init__.py +3 -0
  352. sillo_framework-0.0.1a1/sillo/core/error/handler.py +1606 -0
  353. sillo_framework-0.0.1a1/sillo/core/helpers/__init__.py +0 -0
  354. sillo_framework-0.0.1a1/sillo/core/helpers/async_helpers.py +257 -0
  355. sillo_framework-0.0.1a1/sillo/core/helpers/deprecation.py +208 -0
  356. sillo_framework-0.0.1a1/sillo/core/http/__init__.py +4 -0
  357. sillo_framework-0.0.1a1/sillo/core/http/cookies.py +53 -0
  358. sillo_framework-0.0.1a1/sillo/core/http/request.py +1627 -0
  359. sillo_framework-0.0.1a1/sillo/core/http/response.py +1740 -0
  360. sillo_framework-0.0.1a1/sillo/core/routing/__init__.py +12 -0
  361. sillo_framework-0.0.1a1/sillo/core/routing/_utils.py +66 -0
  362. sillo_framework-0.0.1a1/sillo/core/routing/base.py +266 -0
  363. sillo_framework-0.0.1a1/sillo/core/routing/grouping.py +263 -0
  364. sillo_framework-0.0.1a1/sillo/core/routing/router.py +3390 -0
  365. sillo_framework-0.0.1a1/sillo/core/routing/websocket.py +309 -0
  366. sillo_framework-0.0.1a1/sillo/decorator_helper.py +104 -0
  367. sillo_framework-0.0.1a1/sillo/encoding.py +31 -0
  368. sillo_framework-0.0.1a1/sillo/events/__init__.py +35 -0
  369. sillo_framework-0.0.1a1/sillo/events/core.py +867 -0
  370. sillo_framework-0.0.1a1/sillo/events/emitter.py +663 -0
  371. sillo_framework-0.0.1a1/sillo/events/enums.py +53 -0
  372. sillo_framework-0.0.1a1/sillo/events/exceptions.py +106 -0
  373. sillo_framework-0.0.1a1/sillo/events/mixins.py +109 -0
  374. sillo_framework-0.0.1a1/sillo/events/transports/__init__.py +183 -0
  375. sillo_framework-0.0.1a1/sillo/events/transports/base.py +579 -0
  376. sillo_framework-0.0.1a1/sillo/events/transports/memory.py +77 -0
  377. sillo_framework-0.0.1a1/sillo/events/transports/persistent.py +288 -0
  378. sillo_framework-0.0.1a1/sillo/events/transports/record.py +231 -0
  379. sillo_framework-0.0.1a1/sillo/events/transports/redis.py +242 -0
  380. sillo_framework-0.0.1a1/sillo/events/types.py +141 -0
  381. sillo_framework-0.0.1a1/sillo/exception_handler.py +407 -0
  382. sillo_framework-0.0.1a1/sillo/exceptions.py +242 -0
  383. sillo_framework-0.0.1a1/sillo/formparser.py +683 -0
  384. sillo_framework-0.0.1a1/sillo/frontend.py +211 -0
  385. sillo_framework-0.0.1a1/sillo/graphql/__init__.py +3 -0
  386. sillo_framework-0.0.1a1/sillo/graphql/handler.py +326 -0
  387. sillo_framework-0.0.1a1/sillo/handlers/__init__.py +0 -0
  388. sillo_framework-0.0.1a1/sillo/handlers/not_found.py +162 -0
  389. sillo_framework-0.0.1a1/sillo/hashing/__init__.py +74 -0
  390. sillo_framework-0.0.1a1/sillo/hashing/config.py +74 -0
  391. sillo_framework-0.0.1a1/sillo/hashing/core.py +259 -0
  392. sillo_framework-0.0.1a1/sillo/hashing/exceptions.py +19 -0
  393. sillo_framework-0.0.1a1/sillo/hashing/utils.py +166 -0
  394. sillo_framework-0.0.1a1/sillo/helpers/__init__.py +6 -0
  395. sillo_framework-0.0.1a1/sillo/helpers/crypto.py +250 -0
  396. sillo_framework-0.0.1a1/sillo/helpers/files.py +412 -0
  397. sillo_framework-0.0.1a1/sillo/helpers/hashing.py +189 -0
  398. sillo_framework-0.0.1a1/sillo/helpers/html.py +253 -0
  399. sillo_framework-0.0.1a1/sillo/helpers/jwt.py +434 -0
  400. sillo_framework-0.0.1a1/sillo/helpers/network.py +294 -0
  401. sillo_framework-0.0.1a1/sillo/helpers/retry.py +289 -0
  402. sillo_framework-0.0.1a1/sillo/helpers/strings.py +320 -0
  403. sillo_framework-0.0.1a1/sillo/helpers/text.py +262 -0
  404. sillo_framework-0.0.1a1/sillo/http/__init__.py +133 -0
  405. sillo_framework-0.0.1a1/sillo/http/accepts.py +1312 -0
  406. sillo_framework-0.0.1a1/sillo/http/client/__init__.py +104 -0
  407. sillo_framework-0.0.1a1/sillo/http/client/caching.py +202 -0
  408. sillo_framework-0.0.1a1/sillo/http/client/client.py +578 -0
  409. sillo_framework-0.0.1a1/sillo/http/client/config.py +120 -0
  410. sillo_framework-0.0.1a1/sillo/http/client/errors.py +101 -0
  411. sillo_framework-0.0.1a1/sillo/http/client/middleware.py +134 -0
  412. sillo_framework-0.0.1a1/sillo/http/client/models.py +120 -0
  413. sillo_framework-0.0.1a1/sillo/http/client/retry.py +85 -0
  414. sillo_framework-0.0.1a1/sillo/http/client/transport.py +56 -0
  415. sillo_framework-0.0.1a1/sillo/http/client/utils.py +85 -0
  416. sillo_framework-0.0.1a1/sillo/http/etag.py +174 -0
  417. sillo_framework-0.0.1a1/sillo/http/lifecycle/__init__.py +37 -0
  418. sillo_framework-0.0.1a1/sillo/http/lifecycle/context.py +248 -0
  419. sillo_framework-0.0.1a1/sillo/http/lifecycle/helpers.py +184 -0
  420. sillo_framework-0.0.1a1/sillo/http/lifecycle/middleware.py +205 -0
  421. sillo_framework-0.0.1a1/sillo/http/status.py +138 -0
  422. sillo_framework-0.0.1a1/sillo/logging.py +187 -0
  423. sillo_framework-0.0.1a1/sillo/mail/__init__.py +13 -0
  424. sillo_framework-0.0.1a1/sillo/mail/client.py +404 -0
  425. sillo_framework-0.0.1a1/sillo/mail/config.py +156 -0
  426. sillo_framework-0.0.1a1/sillo/mail/models.py +225 -0
  427. sillo_framework-0.0.1a1/sillo/middleware/__init__.py +5 -0
  428. sillo_framework-0.0.1a1/sillo/middleware/base.py +168 -0
  429. sillo_framework-0.0.1a1/sillo/middleware/gzip.py +297 -0
  430. sillo_framework-0.0.1a1/sillo/middleware/security.py +7 -0
  431. sillo_framework-0.0.1a1/sillo/middleware/utils.py +112 -0
  432. sillo_framework-0.0.1a1/sillo/normalize/__init__.py +33 -0
  433. sillo_framework-0.0.1a1/sillo/normalize/helpers.py +308 -0
  434. sillo_framework-0.0.1a1/sillo/normalize/middleware.py +298 -0
  435. sillo_framework-0.0.1a1/sillo/objects/__init__.py +38 -0
  436. sillo_framework-0.0.1a1/sillo/objects/common.py +209 -0
  437. sillo_framework-0.0.1a1/sillo/objects/datastructures.py +444 -0
  438. sillo_framework-0.0.1a1/sillo/objects/http.py +1063 -0
  439. sillo_framework-0.0.1a1/sillo/objects/routing.py +778 -0
  440. sillo_framework-0.0.1a1/sillo/openapi/__init__.py +2 -0
  441. sillo_framework-0.0.1a1/sillo/openapi/_builder.py +787 -0
  442. sillo_framework-0.0.1a1/sillo/openapi/config.py +173 -0
  443. sillo_framework-0.0.1a1/sillo/openapi/models.py +767 -0
  444. sillo_framework-0.0.1a1/sillo/openapi/utils.py +47 -0
  445. sillo_framework-0.0.1a1/sillo/pagination.py +540 -0
  446. sillo_framework-0.0.1a1/sillo/parameters.py +39 -0
  447. sillo_framework-0.0.1a1/sillo/permissions/__init__.py +17 -0
  448. sillo_framework-0.0.1a1/sillo/permissions/mixins.py +225 -0
  449. sillo_framework-0.0.1a1/sillo/permissions/models.py +726 -0
  450. sillo_framework-0.0.1a1/sillo/py.typed +0 -0
  451. sillo_framework-0.0.1a1/sillo/record/__init__.py +83 -0
  452. sillo_framework-0.0.1a1/sillo/record/casting.py +247 -0
  453. sillo_framework-0.0.1a1/sillo/record/collection.py +448 -0
  454. sillo_framework-0.0.1a1/sillo/record/commands/__init__.py +98 -0
  455. sillo_framework-0.0.1a1/sillo/record/config.py +156 -0
  456. sillo_framework-0.0.1a1/sillo/record/events.py +275 -0
  457. sillo_framework-0.0.1a1/sillo/record/exceptions.py +113 -0
  458. sillo_framework-0.0.1a1/sillo/record/factories.py +134 -0
  459. sillo_framework-0.0.1a1/sillo/record/fields.py +176 -0
  460. sillo_framework-0.0.1a1/sillo/record/helpers.py +321 -0
  461. sillo_framework-0.0.1a1/sillo/record/logging.py +207 -0
  462. sillo_framework-0.0.1a1/sillo/record/manager.py +265 -0
  463. sillo_framework-0.0.1a1/sillo/record/mixins/__init__.py +240 -0
  464. sillo_framework-0.0.1a1/sillo/record/models.py +417 -0
  465. sillo_framework-0.0.1a1/sillo/record/pagination.py +107 -0
  466. sillo_framework-0.0.1a1/sillo/record/pydantic.py +98 -0
  467. sillo_framework-0.0.1a1/sillo/record/queries.py +156 -0
  468. sillo_framework-0.0.1a1/sillo/record/scopes.py +135 -0
  469. sillo_framework-0.0.1a1/sillo/record/transactions.py +115 -0
  470. sillo_framework-0.0.1a1/sillo/route_builder.py +252 -0
  471. sillo_framework-0.0.1a1/sillo/security/__init__.py +50 -0
  472. sillo_framework-0.0.1a1/sillo/security/cors/__init__.py +4 -0
  473. sillo_framework-0.0.1a1/sillo/security/cors/_middleware.py +332 -0
  474. sillo_framework-0.0.1a1/sillo/security/cors/config.py +245 -0
  475. sillo_framework-0.0.1a1/sillo/security/csrf/__init__.py +4 -0
  476. sillo_framework-0.0.1a1/sillo/security/csrf/_middleware.py +184 -0
  477. sillo_framework-0.0.1a1/sillo/security/csrf/config.py +230 -0
  478. sillo_framework-0.0.1a1/sillo/security/ratelimit/__init__.py +105 -0
  479. sillo_framework-0.0.1a1/sillo/security/ratelimit/_middleware.py +147 -0
  480. sillo_framework-0.0.1a1/sillo/security/ratelimit/backends/__init__.py +44 -0
  481. sillo_framework-0.0.1a1/sillo/security/ratelimit/backends/base.py +65 -0
  482. sillo_framework-0.0.1a1/sillo/security/ratelimit/backends/memory.py +85 -0
  483. sillo_framework-0.0.1a1/sillo/security/ratelimit/backends/record.py +65 -0
  484. sillo_framework-0.0.1a1/sillo/security/ratelimit/backends/redis.py +125 -0
  485. sillo_framework-0.0.1a1/sillo/security/ratelimit/config.py +102 -0
  486. sillo_framework-0.0.1a1/sillo/security/ratelimit/models.py +102 -0
  487. sillo_framework-0.0.1a1/sillo/security/ratelimit/strategies/__init__.py +48 -0
  488. sillo_framework-0.0.1a1/sillo/security/ratelimit/strategies/base.py +69 -0
  489. sillo_framework-0.0.1a1/sillo/security/ratelimit/strategies/fixed_window.py +75 -0
  490. sillo_framework-0.0.1a1/sillo/security/ratelimit/strategies/sliding_window.py +74 -0
  491. sillo_framework-0.0.1a1/sillo/security/ratelimit/strategies/token_bucket.py +76 -0
  492. sillo_framework-0.0.1a1/sillo/security/shield.py +323 -0
  493. sillo_framework-0.0.1a1/sillo/session/__init__.py +4 -0
  494. sillo_framework-0.0.1a1/sillo/session/base.py +160 -0
  495. sillo_framework-0.0.1a1/sillo/session/config.py +201 -0
  496. sillo_framework-0.0.1a1/sillo/session/file.py +152 -0
  497. sillo_framework-0.0.1a1/sillo/session/middleware.py +122 -0
  498. sillo_framework-0.0.1a1/sillo/session/session_objects.py +392 -0
  499. sillo_framework-0.0.1a1/sillo/session/signed_cookies.py +114 -0
  500. sillo_framework-0.0.1a1/sillo/static.py +252 -0
  501. sillo_framework-0.0.1a1/sillo/templating/__init__.py +150 -0
  502. sillo_framework-0.0.1a1/sillo/templating/middleware.py +105 -0
  503. sillo_framework-0.0.1a1/sillo/templating/utils.py +124 -0
  504. sillo_framework-0.0.1a1/sillo/testclient/__init__.py +17 -0
  505. sillo_framework-0.0.1a1/sillo/testclient/_internal/__init__.py +0 -0
  506. sillo_framework-0.0.1a1/sillo/testclient/_internal/inputs.py +54 -0
  507. sillo_framework-0.0.1a1/sillo/testclient/_internal/transport.py +827 -0
  508. sillo_framework-0.0.1a1/sillo/testclient/_internal/types.py +15 -0
  509. sillo_framework-0.0.1a1/sillo/testclient/_internal/utils.py +78 -0
  510. sillo_framework-0.0.1a1/sillo/testclient/_internal/websockets.py +303 -0
  511. sillo_framework-0.0.1a1/sillo/testclient/async_client.py +461 -0
  512. sillo_framework-0.0.1a1/sillo/testclient/base.py +639 -0
  513. sillo_framework-0.0.1a1/sillo/testclient/exceptions.py +34 -0
  514. sillo_framework-0.0.1a1/sillo/testclient/helpers.py +148 -0
  515. sillo_framework-0.0.1a1/sillo/types.py +41 -0
  516. sillo_framework-0.0.1a1/sillo/users/__init__.py +34 -0
  517. sillo_framework-0.0.1a1/sillo/users/base.py +749 -0
  518. sillo_framework-0.0.1a1/sillo/users/managers.py +164 -0
  519. sillo_framework-0.0.1a1/sillo/users/simple.py +169 -0
  520. sillo_framework-0.0.1a1/sillo/utils/__init__.py +1 -0
  521. sillo_framework-0.0.1a1/sillo/utils/concurrency.py +41 -0
  522. sillo_framework-0.0.1a1/sillo/validation/__init__.py +89 -0
  523. sillo_framework-0.0.1a1/sillo/validation/compiler.py +521 -0
  524. sillo_framework-0.0.1a1/sillo/validation/errors.py +121 -0
  525. sillo_framework-0.0.1a1/sillo/validation/fields.py +666 -0
  526. sillo_framework-0.0.1a1/sillo/websockets/__init__.py +26 -0
  527. sillo_framework-0.0.1a1/sillo/websockets/base.py +390 -0
  528. sillo_framework-0.0.1a1/sillo/websockets/channels.py +338 -0
  529. sillo_framework-0.0.1a1/sillo/websockets/consumers.py +250 -0
  530. sillo_framework-0.0.1a1/sillo/websockets/errors.py +80 -0
  531. sillo_framework-0.0.1a1/sillo/websockets/history.py +146 -0
  532. sillo_framework-0.0.1a1/sillo/websockets/status.py +66 -0
  533. sillo_framework-0.0.1a1/sillo/websockets/utils.py +84 -0
  534. sillo_framework-0.0.1a1/sillo/work/__init__.py +67 -0
  535. sillo_framework-0.0.1a1/sillo/work/backends.py +586 -0
  536. sillo_framework-0.0.1a1/sillo/work/background/__init__.py +11 -0
  537. sillo_framework-0.0.1a1/sillo/work/background/supervisor.py +161 -0
  538. sillo_framework-0.0.1a1/sillo/work/background/tasks.py +258 -0
  539. sillo_framework-0.0.1a1/sillo/work/dependency.py +59 -0
  540. sillo_framework-0.0.1a1/sillo/work/middleware.py +291 -0
  541. sillo_framework-0.0.1a1/sillo/work/queue/__init__.py +51 -0
  542. sillo_framework-0.0.1a1/sillo/work/queue/batches.py +219 -0
  543. sillo_framework-0.0.1a1/sillo/work/queue/connection.py +412 -0
  544. sillo_framework-0.0.1a1/sillo/work/queue/events.py +236 -0
  545. sillo_framework-0.0.1a1/sillo/work/queue/failed.py +183 -0
  546. sillo_framework-0.0.1a1/sillo/work/queue/job.py +334 -0
  547. sillo_framework-0.0.1a1/sillo/work/queue/listener.py +215 -0
  548. sillo_framework-0.0.1a1/sillo/work/queue/middleware.py +229 -0
  549. sillo_framework-0.0.1a1/sillo/work/queue/payloads.py +95 -0
  550. sillo_framework-0.0.1a1/sillo/work/queue/workers.py +333 -0
  551. sillo_framework-0.0.1a1/sillo/work/scheduler/__init__.py +34 -0
  552. sillo_framework-0.0.1a1/sillo/work/scheduler/cron.py +125 -0
  553. sillo_framework-0.0.1a1/sillo/work/scheduler/jobs.py +167 -0
  554. sillo_framework-0.0.1a1/sillo/work/scheduler/manager.py +306 -0
  555. sillo_framework-0.0.1a1/sillo/work/scheduler/middleware.py +117 -0
  556. sillo_framework-0.0.1a1/sillo/work/scheduler/triggers.py +170 -0
  557. sillo_framework-0.0.1a1/sillo/work/task.py +670 -0
  558. sillo_framework-0.0.1a1/sillo/work/types.py +408 -0
  559. sillo_framework-0.0.1a1/tests/__init__.py +0 -0
  560. sillo_framework-0.0.1a1/tests/conftest.py +64 -0
  561. sillo_framework-0.0.1a1/tests/static/example.txt +21 -0
  562. sillo_framework-0.0.1a1/tests/static/page.html +1 -0
  563. sillo_framework-0.0.1a1/tests/static/script.js +1 -0
  564. sillo_framework-0.0.1a1/tests/static/style.css +1 -0
  565. sillo_framework-0.0.1a1/tests/static/subfolder/subfile.txt +1 -0
  566. sillo_framework-0.0.1a1/tests/templates/base.html +11 -0
  567. sillo_framework-0.0.1a1/tests/templates/product.html +11 -0
  568. sillo_framework-0.0.1a1/tests/templates/welcome.html +8 -0
  569. sillo_framework-0.0.1a1/tests/test_admin/__init__.py +0 -0
  570. sillo_framework-0.0.1a1/tests/test_admin/test_admin_export_query.py +826 -0
  571. sillo_framework-0.0.1a1/tests/test_admin/test_admin_views.py +449 -0
  572. sillo_framework-0.0.1a1/tests/test_applications/__init__.py +0 -0
  573. sillo_framework-0.0.1a1/tests/test_applications/test_application.py +679 -0
  574. sillo_framework-0.0.1a1/tests/test_applications/test_route_kwargs.py +112 -0
  575. sillo_framework-0.0.1a1/tests/test_auth/__init__.py +0 -0
  576. sillo_framework-0.0.1a1/tests/test_auth/test_apikey_backend.py +150 -0
  577. sillo_framework-0.0.1a1/tests/test_auth/test_auth_decorators.py +236 -0
  578. sillo_framework-0.0.1a1/tests/test_auth/test_auth_middleware.py +244 -0
  579. sillo_framework-0.0.1a1/tests/test_auth/test_auth_utilities.py +197 -0
  580. sillo_framework-0.0.1a1/tests/test_auth/test_custom_backend.py +198 -0
  581. sillo_framework-0.0.1a1/tests/test_auth/test_jwt_backend.py +253 -0
  582. sillo_framework-0.0.1a1/tests/test_auth/test_jwt_user_mixin.py +381 -0
  583. sillo_framework-0.0.1a1/tests/test_auth/test_session_backend.py +201 -0
  584. sillo_framework-0.0.1a1/tests/test_auth/test_session_guard.py +230 -0
  585. sillo_framework-0.0.1a1/tests/test_auth/test_token_for_user.py +159 -0
  586. sillo_framework-0.0.1a1/tests/test_auth/test_use_auth.py +343 -0
  587. sillo_framework-0.0.1a1/tests/test_auth/test_user_models.py +92 -0
  588. sillo_framework-0.0.1a1/tests/test_cache/__init__.py +0 -0
  589. sillo_framework-0.0.1a1/tests/test_cache/test_base.py +73 -0
  590. sillo_framework-0.0.1a1/tests/test_cache/test_decorator.py +183 -0
  591. sillo_framework-0.0.1a1/tests/test_cache/test_memory_cache.py +147 -0
  592. sillo_framework-0.0.1a1/tests/test_cache/test_redis_backend.py +79 -0
  593. sillo_framework-0.0.1a1/tests/test_config/__init__.py +1 -0
  594. sillo_framework-0.0.1a1/tests/test_config/conftest.py +60 -0
  595. sillo_framework-0.0.1a1/tests/test_config/test_config_loading.py +331 -0
  596. sillo_framework-0.0.1a1/tests/test_cors/__init__.py +3 -0
  597. sillo_framework-0.0.1a1/tests/test_cors/test_configuration.py +454 -0
  598. sillo_framework-0.0.1a1/tests/test_cors/test_error_handling.py +336 -0
  599. sillo_framework-0.0.1a1/tests/test_cors/test_integration.py +455 -0
  600. sillo_framework-0.0.1a1/tests/test_cors/test_preflight_requests.py +378 -0
  601. sillo_framework-0.0.1a1/tests/test_cors/test_simple_requests.py +236 -0
  602. sillo_framework-0.0.1a1/tests/test_dependencies/__init__.py +0 -0
  603. sillo_framework-0.0.1a1/tests/test_dependencies/test_dependency_injection.py +863 -0
  604. sillo_framework-0.0.1a1/tests/test_encoding/__init__.py +0 -0
  605. sillo_framework-0.0.1a1/tests/test_encoding/test_custom_encoder.py +105 -0
  606. sillo_framework-0.0.1a1/tests/test_encoding/test_encoding_shim.py +43 -0
  607. sillo_framework-0.0.1a1/tests/test_encoding/test_jsonable_encoder.py +778 -0
  608. sillo_framework-0.0.1a1/tests/test_events/__init__.py +1 -0
  609. sillo_framework-0.0.1a1/tests/test_events/test_comprehensive_events.py +841 -0
  610. sillo_framework-0.0.1a1/tests/test_events/test_events_backends.py +211 -0
  611. sillo_framework-0.0.1a1/tests/test_exception_handlers/__init__.py +0 -0
  612. sillo_framework-0.0.1a1/tests/test_exception_handlers/test_basic_exception_handlers.py +450 -0
  613. sillo_framework-0.0.1a1/tests/test_exception_handlers/test_exception_handler_integration.py +499 -0
  614. sillo_framework-0.0.1a1/tests/test_exception_handlers/test_not_found_handler.py +126 -0
  615. sillo_framework-0.0.1a1/tests/test_exception_handlers/test_server_error_debug.py +197 -0
  616. sillo_framework-0.0.1a1/tests/test_forms/__init__.py +0 -0
  617. sillo_framework-0.0.1a1/tests/test_forms/test_form_parser.py +534 -0
  618. sillo_framework-0.0.1a1/tests/test_forms/test_uploaded_file_save.py +54 -0
  619. sillo_framework-0.0.1a1/tests/test_frontend/__init__.py +0 -0
  620. sillo_framework-0.0.1a1/tests/test_frontend/test_frontend_app.py +237 -0
  621. sillo_framework-0.0.1a1/tests/test_graphql/__init__.py +0 -0
  622. sillo_framework-0.0.1a1/tests/test_graphql/test_graphql_schema.py +73 -0
  623. sillo_framework-0.0.1a1/tests/test_helpers/__init__.py +0 -0
  624. sillo_framework-0.0.1a1/tests/test_helpers/test_accepts.py +195 -0
  625. sillo_framework-0.0.1a1/tests/test_helpers/test_async.py +133 -0
  626. sillo_framework-0.0.1a1/tests/test_helpers/test_concurrency.py +43 -0
  627. sillo_framework-0.0.1a1/tests/test_helpers/test_deprecation.py +247 -0
  628. sillo_framework-0.0.1a1/tests/test_helpers/test_files.py +263 -0
  629. sillo_framework-0.0.1a1/tests/test_helpers/test_hashing_crypto.py +265 -0
  630. sillo_framework-0.0.1a1/tests/test_helpers/test_html.py +180 -0
  631. sillo_framework-0.0.1a1/tests/test_helpers/test_jwt.py +222 -0
  632. sillo_framework-0.0.1a1/tests/test_helpers/test_network.py +237 -0
  633. sillo_framework-0.0.1a1/tests/test_helpers/test_retry.py +190 -0
  634. sillo_framework-0.0.1a1/tests/test_helpers/test_strings.py +309 -0
  635. sillo_framework-0.0.1a1/tests/test_helpers/test_text.py +175 -0
  636. sillo_framework-0.0.1a1/tests/test_http/__init__.py +0 -0
  637. sillo_framework-0.0.1a1/tests/test_http/test_accepts_middleware.py +269 -0
  638. sillo_framework-0.0.1a1/tests/test_http/test_accepts_negotiation.py +190 -0
  639. sillo_framework-0.0.1a1/tests/test_http/test_cookie_parsing.py +114 -0
  640. sillo_framework-0.0.1a1/tests/test_http/test_http_client.py +1136 -0
  641. sillo_framework-0.0.1a1/tests/test_http/test_http_etag.py +71 -0
  642. sillo_framework-0.0.1a1/tests/test_http/test_http_module_exports.py +38 -0
  643. sillo_framework-0.0.1a1/tests/test_lifecycle/__init__.py +0 -0
  644. sillo_framework-0.0.1a1/tests/test_lifecycle/test_context.py +41 -0
  645. sillo_framework-0.0.1a1/tests/test_lifecycle/test_request_id.py +103 -0
  646. sillo_framework-0.0.1a1/tests/test_mail/__init__.py +0 -0
  647. sillo_framework-0.0.1a1/tests/test_mail/test_mail_client.py +245 -0
  648. sillo_framework-0.0.1a1/tests/test_mail/test_mail_service.py +127 -0
  649. sillo_framework-0.0.1a1/tests/test_mail/test_mail_transport.py +541 -0
  650. sillo_framework-0.0.1a1/tests/test_middleware/__init__.py +0 -0
  651. sillo_framework-0.0.1a1/tests/test_middleware/test_app_level_middleware.py +377 -0
  652. sillo_framework-0.0.1a1/tests/test_middleware/test_asgi_middleware.py +693 -0
  653. sillo_framework-0.0.1a1/tests/test_middleware/test_gzip.py +165 -0
  654. sillo_framework-0.0.1a1/tests/test_middleware/test_route_level_middleware.py +474 -0
  655. sillo_framework-0.0.1a1/tests/test_middleware/test_router_level_middleware.py +430 -0
  656. sillo_framework-0.0.1a1/tests/test_middleware/test_security_middleware.py +365 -0
  657. sillo_framework-0.0.1a1/tests/test_middleware/test_use_for_route.py +225 -0
  658. sillo_framework-0.0.1a1/tests/test_normalize/__init__.py +0 -0
  659. sillo_framework-0.0.1a1/tests/test_normalize/test_helpers.py +59 -0
  660. sillo_framework-0.0.1a1/tests/test_normalize/test_middleware.py +74 -0
  661. sillo_framework-0.0.1a1/tests/test_objects/__init__.py +0 -0
  662. sillo_framework-0.0.1a1/tests/test_objects/test_headers.py +491 -0
  663. sillo_framework-0.0.1a1/tests/test_objects/test_multidict.py +221 -0
  664. sillo_framework-0.0.1a1/tests/test_objects/test_url.py +175 -0
  665. sillo_framework-0.0.1a1/tests/test_openapi/__init__.py +0 -0
  666. sillo_framework-0.0.1a1/tests/test_openapi/test_openapi_config.py +242 -0
  667. sillo_framework-0.0.1a1/tests/test_openapi/test_openapi_spec.py +409 -0
  668. sillo_framework-0.0.1a1/tests/test_openapi/test_openapi_utils.py +158 -0
  669. sillo_framework-0.0.1a1/tests/test_pagination/__init__.py +1 -0
  670. sillo_framework-0.0.1a1/tests/test_pagination/test_data_handlers.py +241 -0
  671. sillo_framework-0.0.1a1/tests/test_pagination/test_edge_cases.py +320 -0
  672. sillo_framework-0.0.1a1/tests/test_pagination/test_error_handling.py +297 -0
  673. sillo_framework-0.0.1a1/tests/test_pagination/test_integration.py +351 -0
  674. sillo_framework-0.0.1a1/tests/test_pagination/test_pagination_strategies.py +539 -0
  675. sillo_framework-0.0.1a1/tests/test_pagination/test_paginators.py +385 -0
  676. sillo_framework-0.0.1a1/tests/test_pagination/test_response_classes.py +296 -0
  677. sillo_framework-0.0.1a1/tests/test_pagination/test_response_paginate.py +365 -0
  678. sillo_framework-0.0.1a1/tests/test_parameters/__init__.py +0 -0
  679. sillo_framework-0.0.1a1/tests/test_parameters/test_cookie.py +107 -0
  680. sillo_framework-0.0.1a1/tests/test_parameters/test_header.py +132 -0
  681. sillo_framework-0.0.1a1/tests/test_parameters/test_nested.py +218 -0
  682. sillo_framework-0.0.1a1/tests/test_parameters/test_openapi.py +185 -0
  683. sillo_framework-0.0.1a1/tests/test_parameters/test_query.py +213 -0
  684. sillo_framework-0.0.1a1/tests/test_permissions/__init__.py +0 -0
  685. sillo_framework-0.0.1a1/tests/test_permissions/test_permissions.py +550 -0
  686. sillo_framework-0.0.1a1/tests/test_record/__init__.py +0 -0
  687. sillo_framework-0.0.1a1/tests/test_record/test_backend_config.py +148 -0
  688. sillo_framework-0.0.1a1/tests/test_record/test_collection.py +290 -0
  689. sillo_framework-0.0.1a1/tests/test_record/test_events.py +334 -0
  690. sillo_framework-0.0.1a1/tests/test_record/test_model_features.py +131 -0
  691. sillo_framework-0.0.1a1/tests/test_record/test_queries.py +286 -0
  692. sillo_framework-0.0.1a1/tests/test_record/test_query_logging.py +238 -0
  693. sillo_framework-0.0.1a1/tests/test_record/test_savepoints.py +127 -0
  694. sillo_framework-0.0.1a1/tests/test_record/test_seeding.py +252 -0
  695. sillo_framework-0.0.1a1/tests/test_redis/__init__.py +0 -0
  696. sillo_framework-0.0.1a1/tests/test_redis/test_redis_cache.py +179 -0
  697. sillo_framework-0.0.1a1/tests/test_redis/test_redis_transport.py +203 -0
  698. sillo_framework-0.0.1a1/tests/test_requests/__init__.py +0 -0
  699. sillo_framework-0.0.1a1/tests/test_requests/test_basic_properties.py +481 -0
  700. sillo_framework-0.0.1a1/tests/test_requests/test_body_data.py +399 -0
  701. sillo_framework-0.0.1a1/tests/test_requests/test_cookies_auth.py +162 -0
  702. sillo_framework-0.0.1a1/tests/test_requests/test_path_params.py +159 -0
  703. sillo_framework-0.0.1a1/tests/test_requests/test_query_params.py +343 -0
  704. sillo_framework-0.0.1a1/tests/test_requests/test_request_flags.py +295 -0
  705. sillo_framework-0.0.1a1/tests/test_responses/__init__.py +0 -0
  706. sillo_framework-0.0.1a1/tests/test_responses/test_abort_not_found.py +119 -0
  707. sillo_framework-0.0.1a1/tests/test_responses/test_advanced_responses.py +294 -0
  708. sillo_framework-0.0.1a1/tests/test_responses/test_basic_responses.py +322 -0
  709. sillo_framework-0.0.1a1/tests/test_responses/test_file_responses.py +304 -0
  710. sillo_framework-0.0.1a1/tests/test_responses/test_headers_cookies.py +459 -0
  711. sillo_framework-0.0.1a1/tests/test_responses/test_redirect_streaming.py +412 -0
  712. sillo_framework-0.0.1a1/tests/test_responses/test_response_properties.py +282 -0
  713. sillo_framework-0.0.1a1/tests/test_routing/__init__.py +0 -0
  714. sillo_framework-0.0.1a1/tests/test_routing/test_basic_routing.py +256 -0
  715. sillo_framework-0.0.1a1/tests/test_routing/test_converters.py +75 -0
  716. sillo_framework-0.0.1a1/tests/test_routing/test_grouping.py +324 -0
  717. sillo_framework-0.0.1a1/tests/test_routing/test_http_methods.py +392 -0
  718. sillo_framework-0.0.1a1/tests/test_routing/test_nested_routes.py +263 -0
  719. sillo_framework-0.0.1a1/tests/test_routing/test_path_parameters.py +311 -0
  720. sillo_framework-0.0.1a1/tests/test_routing/test_router_wrap_asgi.py +70 -0
  721. sillo_framework-0.0.1a1/tests/test_security/__init__.py +0 -0
  722. sillo_framework-0.0.1a1/tests/test_security/test_backends.py +58 -0
  723. sillo_framework-0.0.1a1/tests/test_security/test_csrf.py +140 -0
  724. sillo_framework-0.0.1a1/tests/test_security/test_middleware.py +177 -0
  725. sillo_framework-0.0.1a1/tests/test_security/test_record_backend.py +72 -0
  726. sillo_framework-0.0.1a1/tests/test_security/test_strategies.py +154 -0
  727. sillo_framework-0.0.1a1/tests/test_sessions/__init__.py +1 -0
  728. sillo_framework-0.0.1a1/tests/test_sessions/test_base.py +389 -0
  729. sillo_framework-0.0.1a1/tests/test_sessions/test_file_sessions.py +237 -0
  730. sillo_framework-0.0.1a1/tests/test_sessions/test_integration.py +118 -0
  731. sillo_framework-0.0.1a1/tests/test_sessions/test_middleware.py +279 -0
  732. sillo_framework-0.0.1a1/tests/test_sessions/test_signed_cookies.py +178 -0
  733. sillo_framework-0.0.1a1/tests/test_static/__init__.py +0 -0
  734. sillo_framework-0.0.1a1/tests/test_static/test_static_files.py +304 -0
  735. sillo_framework-0.0.1a1/tests/test_templating/__init__.py +0 -0
  736. sillo_framework-0.0.1a1/tests/test_templating/test_template_utils.py +190 -0
  737. sillo_framework-0.0.1a1/tests/test_templating/test_templates.py +83 -0
  738. sillo_framework-0.0.1a1/tests/test_users/__init__.py +0 -0
  739. sillo_framework-0.0.1a1/tests/test_users/test_password.py +309 -0
  740. sillo_framework-0.0.1a1/tests/test_users/test_user_model.py +435 -0
  741. sillo_framework-0.0.1a1/tests/test_validation/__init__.py +0 -0
  742. sillo_framework-0.0.1a1/tests/test_validation/conftest.py +31 -0
  743. sillo_framework-0.0.1a1/tests/test_validation/test_body_form.py +221 -0
  744. sillo_framework-0.0.1a1/tests/test_validation/test_legacy_compat.py +100 -0
  745. sillo_framework-0.0.1a1/tests/test_validation/test_markers_unit.py +235 -0
  746. sillo_framework-0.0.1a1/tests/test_validation/test_openapi_generation.py +128 -0
  747. sillo_framework-0.0.1a1/tests/test_validation/test_params.py +178 -0
  748. sillo_framework-0.0.1a1/tests/test_validation/test_request_model.py +103 -0
  749. sillo_framework-0.0.1a1/tests/test_validation/test_response_model.py +93 -0
  750. sillo_framework-0.0.1a1/tests/test_websockets/__init__.py +3 -0
  751. sillo_framework-0.0.1a1/tests/test_websockets/test_channel_history.py +400 -0
  752. sillo_framework-0.0.1a1/tests/test_websockets/test_consumer_encodings.py +509 -0
  753. sillo_framework-0.0.1a1/tests/test_websockets/test_group_removal.py +115 -0
  754. sillo_framework-0.0.1a1/tests/test_websockets/test_history_contract.py +146 -0
  755. sillo_framework-0.0.1a1/tests/test_websockets/test_websocket_consumers.py +255 -0
  756. sillo_framework-0.0.1a1/tests/test_websockets/test_websocket_errors.py +216 -0
  757. sillo_framework-0.0.1a1/tests/test_websockets/test_websocket_groups.py +398 -0
  758. sillo_framework-0.0.1a1/tests/test_websockets/test_websocket_protocol.py +497 -0
  759. sillo_framework-0.0.1a1/tests/test_websockets/test_websocket_routing.py +251 -0
  760. sillo_framework-0.0.1a1/tests/test_websockets/test_websocket_state_machine.py +218 -0
  761. sillo_framework-0.0.1a1/tests/test_work/__init__.py +0 -0
  762. sillo_framework-0.0.1a1/tests/test_work/test_background.py +177 -0
  763. sillo_framework-0.0.1a1/tests/test_work/test_events.py +175 -0
  764. sillo_framework-0.0.1a1/tests/test_work/test_job_dispatch.py +133 -0
  765. sillo_framework-0.0.1a1/tests/test_work/test_job_queue.py +143 -0
  766. sillo_framework-0.0.1a1/tests/test_work/test_memory_backend.py +133 -0
  767. sillo_framework-0.0.1a1/tests/test_work/test_queue.py +311 -0
  768. sillo_framework-0.0.1a1/tests/test_work/test_queue_worker.py +165 -0
  769. sillo_framework-0.0.1a1/tests/test_work/test_routes.py +163 -0
  770. sillo_framework-0.0.1a1/tests/test_work/test_scheduler.py +150 -0
  771. sillo_framework-0.0.1a1/tests/test_work/test_scheduler_middleware.py +401 -0
  772. sillo_framework-0.0.1a1/tests/test_work/test_task.py +176 -0
  773. sillo_framework-0.0.1a1/tests/test_work/test_work_di.py +72 -0
  774. sillo_framework-0.0.1a1/tests/test_work/work_jobs.py +38 -0
  775. sillo_framework-0.0.1a1/uv.lock +1484 -0
@@ -0,0 +1,61 @@
1
+ ---
2
+ name: sillo-overview
3
+ description: Teach sillo comprehensively to AI editors and coding agents as an external async Python web framework. Use when Codex needs to explain or generate sillo code with concept-by-concept guidance, runnable examples, and best practices across app setup, ASGI basics, routing, handlers, request inputs, responses, middleware, dependency injection, authentication, sessions, cookies, security, pagination, WebSockets, events, OpenAPI, testing, templating, static files, uploads, and CLI workflows. Prefer this skill for tutorial-style answers, onboarding, code generation, and framework learning rather than repo-specific debugging or source edits.
4
+ ---
5
+
6
+ # sillo Overview
7
+
8
+ ## Overview
9
+
10
+ Use this skill to teach sillo from the outside in. Treat sillo as a framework an editor or coding agent must learn well enough to explain, scaffold, and write correct examples for.
11
+
12
+ ## Start Here
13
+
14
+ 1. Read [references/capabilities-map.md](references/capabilities-map.md) first for the full concept map and topic-to-file routing.
15
+ 2. Read [references/framework-overview.md](references/framework-overview.md) for the foundation: what sillo is, ASGI mental model, app setup, config, and request lifecycle.
16
+ 3. Read [references/http-and-routing.md](references/http-and-routing.md) for handlers, request inputs, responses, routing, routers, class-based handlers, uploads, and pagination.
17
+ 4. Read [references/composition-and-lifecycle.md](references/composition-and-lifecycle.md) for middleware, dependency injection, app structure, startup/shutdown, lifespan, and events.
18
+ 5. Read [references/auth-state-and-security.md](references/auth-state-and-security.md) for authentication, sessions, cookies, headers, and security middleware.
19
+ 6. Read [references/realtime-and-productivity.md](references/realtime-and-productivity.md) for WebSockets, OpenAPI, Pydantic, testing, CLI, static files, and templating.
20
+ 7. Use the deep dives when the request is narrow:
21
+ - [references/dependency-injection-deep-dive.md](references/dependency-injection-deep-dive.md)
22
+ - [references/events-and-emitter.md](references/events-and-emitter.md)
23
+ - [references/sessions-and-state.md](references/sessions-and-state.md)
24
+ - [references/responses-reference.md](references/responses-reference.md)
25
+ - [references/contrib-modules.md](references/contrib-modules.md)
26
+ 8. Read [references/adoption-guide.md](references/adoption-guide.md) only when the user is comparing sillo with other frameworks or deciding whether to adopt it.
27
+
28
+ ## Keep It External
29
+
30
+ - Prefer public concepts, documented APIs, and developer-facing mental models.
31
+ - Avoid repo-relative file paths, internal module maps, code search instructions, or claims based on local implementation details unless the user explicitly asks for source-level analysis.
32
+ - Frame uncertain points as documented behavior rather than verified internals.
33
+ - Write as if the reader is outside the sillo repository and only needs a clear mental model plus practical guidance.
34
+
35
+ ## Teaching Pattern
36
+
37
+ - Start with a one-sentence positioning statement.
38
+ - Explain the concept in plain language before showing code.
39
+ - Include a compact, runnable example whenever possible.
40
+ - Mention one or two important gotchas when the docs call them out.
41
+ - Prefer small examples that show the sillo shape clearly: `silloApp`, async handlers, explicit `request` and `response`, and response helpers such as `response.json(...)`.
42
+ - For comparisons, explain both where sillo fits well and where another framework may be a better match.
43
+ - For recommendations, give a clear verdict and reason instead of only listing features.
44
+
45
+ ## Generation Rules For AI Editors
46
+
47
+ - Highlight sillo as an async-first ASGI framework with low boilerplate, clean architecture, and strong developer ergonomics.
48
+ - Default to `async def` handlers and explicit route decorators.
49
+ - Prefer direct handler parameters for path params, for example `async def get_user(request, response, user_id: int)`.
50
+ - Use the `response` helper methods when teaching status codes, headers, cookies, files, redirects, streams, and pagination.
51
+ - Use `Depend(...)` when teaching dependency injection.
52
+ - Show middleware as either function-based or class-based depending on the teaching goal.
53
+ - Distinguish between "good fit for async APIs and real-time services" and "not automatically the best fit when a team wants a batteries-included ORM or admin stack."
54
+
55
+ ## Example Requests
56
+
57
+ - "Explain sillo to a FastAPI team."
58
+ - "Teach me sillo routing with examples."
59
+ - "Show how auth and sessions work in sillo."
60
+ - "How do I do pagination, uploads, and OpenAPI in sillo?"
61
+ - "Give me a full sillo learning guide for an AI coding editor."
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "sillo Overview"
3
+ short_description: "Comprehensive sillo learning guide"
4
+ default_prompt: "Use $sillo-overview to teach sillo with concrete examples across routing, auth, pagination, WebSockets, and the rest of the framework."
@@ -0,0 +1,72 @@
1
+ # sillo Adoption Guide
2
+
3
+ Use this reference when the user wants a recommendation, comparison, or migration-oriented explanation.
4
+
5
+ ## Good Fit Signals
6
+
7
+ Recommend sillo more strongly when the team wants:
8
+
9
+ - Async APIs with high concurrency
10
+ - Real-time features such as WebSockets or channel-based messaging
11
+ - A lighter framework than Django
12
+ - More built-in structure than a very bare microframework
13
+ - Clean architecture patterns with middleware and dependency injection
14
+
15
+ ## Possible Tradeoffs
16
+
17
+ Call these out honestly:
18
+
19
+ - Teams that want a fully batteries-included ORM, admin UI, and large plugin ecosystem may prefer Django
20
+ - Teams standardized on FastAPI and its surrounding ecosystem may value ecosystem familiarity over switching
21
+ - Async-first frameworks still require good async discipline from the team
22
+
23
+ ## Comparison Cues
24
+
25
+ Use these positioning cues:
26
+
27
+ ### Compared with FastAPI
28
+
29
+ - Similar overlap in async API use cases
30
+ - sillo can be framed as emphasizing clean architecture, middleware structure, and real-time patterns
31
+ - FastAPI may still win on ecosystem familiarity and widespread adoption
32
+
33
+ ### Compared with Django
34
+
35
+ - sillo is lighter and more API-service oriented
36
+ - Django is better when the team wants an integrated ORM, admin, and mature full-stack conventions
37
+ - sillo is easier to frame as an async service framework than a full monolith
38
+
39
+ ### Compared with Flask
40
+
41
+ - sillo offers a more async-native and structured starting point
42
+ - Flask remains attractive for very small sync-first services and minimalism
43
+ - sillo usually gives more built-in guidance for modern backend patterns
44
+
45
+ ## Recommendation Pattern
46
+
47
+ Use this template:
48
+
49
+ 1. State the verdict clearly
50
+ 2. Name the strongest reason
51
+ 3. Mention one tradeoff or condition
52
+
53
+ Example:
54
+
55
+ "I would consider sillo a strong fit for this project because you need async APIs and live WebSocket features, which line up well with its ASGI-first design. The main question is whether your team wants that lighter service-focused approach or a larger ecosystem with more prebuilt integrations."
56
+
57
+ ## Migration and Evaluation Framing
58
+
59
+ When helping a team evaluate sillo:
60
+
61
+ - Start with the application style: API, real-time backend, or modular service
62
+ - Check whether async I/O is a real requirement
63
+ - Compare operational needs such as authentication, docs, testing, and middleware
64
+ - Separate framework needs from ecosystem needs
65
+
66
+ ## What Not to Claim
67
+
68
+ Avoid overselling. Do not imply:
69
+
70
+ - That sillo is automatically the best framework for every Python backend
71
+ - That local source inspection was used to verify every runtime detail
72
+ - That framework comparisons are purely objective without team-context tradeoffs
@@ -0,0 +1,318 @@
1
+ # sillo Auth, State, And Security
2
+
3
+ Use this reference for login flows, protected routes, session state, cookie handling, and response hardening.
4
+
5
+ ## Table of Contents
6
+
7
+ 1. [Authentication Middleware](#authentication-middleware)
8
+ 2. [Protected Routes](#protected-routes)
9
+ 3. [Sessions](#sessions)
10
+ 4. [Cookies](#cookies)
11
+ 5. [Headers](#headers)
12
+ 6. [CORS and Request Hardening](#cors-and-request-hardening)
13
+ 7. [Security Middleware](#security-middleware)
14
+
15
+ ## Authentication Middleware
16
+
17
+ The docs present authentication as middleware plus protected handlers.
18
+
19
+ ```python
20
+ from sillo import silloApp
21
+ from sillo.auth import SimpleUser
22
+ from sillo.auth.decorators import auth
23
+ from sillo.auth.backends.jwt import JWTAuthBackend
24
+ from sillo.auth.middleware import AuthenticationMiddleware
25
+
26
+ app = silloApp()
27
+
28
+ app.add_middleware(
29
+ AuthenticationMiddleware(user_model=SimpleUser, backend=JWTAuthBackend())
30
+ )
31
+ ```
32
+
33
+ Key mental model:
34
+
35
+ - Authentication middleware attaches the current user to `request.user`
36
+ - The auth type is exposed through request scope metadata
37
+ - Route protection happens with decorators or auth-aware logic
38
+
39
+ ## Protected Routes
40
+
41
+ ```python
42
+ @app.get("/profile")
43
+ @auth()
44
+ async def profile(request, response):
45
+ return response.json(
46
+ {
47
+ "user": request.user.display_name,
48
+ "authenticated": request.user.is_authenticated,
49
+ }
50
+ )
51
+
52
+
53
+ @app.get("/profile")
54
+ @auth(scope=["jwt"]) # for scoped auth
55
+ async def profile(request, response):
56
+ return response.json(
57
+ {
58
+ "user": request.user.display_name,
59
+ "authenticated": request.user.is_authenticated,
60
+ }
61
+ )
62
+ ```
63
+
64
+
65
+
66
+ ## Auth Backends
67
+
68
+ ```python
69
+ from sillo.auth.backends.session import SessionAuthBackend
70
+ from sillo.session import SessionConfig
71
+ from sillo.session.middleware import SessionMiddleware
72
+
73
+ app.add_middleware(
74
+ AuthenticationMiddleware(user_model=SimpleUser, backend=JWTAuthBackend())
75
+ )
76
+
77
+ app.add_middleware(
78
+ AuthenticationMiddleware(
79
+ user_model=SimpleUser,
80
+ backend=SessionAuthBackend(), # require session middleware
81
+ )
82
+ )
83
+
84
+ app.add_middleware(
85
+ AuthenticationMiddleware(user_model=SimpleUser, backend=APIKeyAuthBackend())
86
+ )
87
+ ```
88
+
89
+ ### Backend Explanations
90
+
91
+ - `JWTAuthBackend` accepts a token in the `Authorization` header and verifies it with a secret or public key
92
+ - `SessionAuthBackend` reads a session cookie and uses it to identify the user
93
+ - `APIKeyAuthBackend` expects an API key in the `Authorization` header
94
+
95
+
96
+ ```python
97
+ class CustomAuthBackend(BaseAuthBackend):
98
+ async def authenticate(self, request):
99
+ # custom authentication logic here
100
+ if request.headers.get("X-API-Key") == "your-super-secret-key":
101
+ return CustomUser(request, "Super User")
102
+
103
+
104
+ class CustomUser(BaseUser):
105
+ def __init__(self, request, name):
106
+ self.request = request
107
+ self.name = name
108
+
109
+ @property
110
+ def display_name(self):
111
+ return self.name
112
+
113
+ @property
114
+ def is_authenticated(self):
115
+ return True
116
+
117
+ @property
118
+ def is_active(self):
119
+ return True
120
+
121
+ @property
122
+ def is_anonymous(self):
123
+ return False
124
+
125
+ @property
126
+ def auth_type(self):
127
+ return "custom"
128
+
129
+
130
+ app.add_middleware(
131
+ AuthenticationMiddleware(user_model=CustomUser, backend=CustomAuthBackend())
132
+ )
133
+ ```
134
+
135
+ The above code snippet demonstrates how to add a custom authentication backend to sillo. It defines a custom authentication backend by subclassing `BaseAuthBackend` and implementing the `authenticate` method. The `authenticate` method is responsible for verifying the user's credentials and returning a `BaseUser` subclass instance if authentication is successful. In the example, the custom authentication backend checks for the presence of a specific API key in the request headers. If the API key is present and matches a hard-coded value, a `CustomUser` instance is returned.
136
+
137
+ The `CustomUser` class is a subclass of `BaseUser` and implements the user properties required by sillo. It stores a reference to the request and the user's name. The `display_name` property returns the user's name, the `is_authenticated` property returns `True` to indicate that the user is authenticated, and the `auth_type` property returns the string "custom" to indicate the type of authentication.
138
+
139
+ Finally, the custom authentication backend is added as middleware to the sillo app using the `add_middleware` method.
140
+
141
+ This code is provided as a starting point for implementing custom authentication in sillo.
142
+
143
+
144
+ Teach this as the default secured-endpoint shape.
145
+
146
+ ## Sessions
147
+
148
+ Basic documented setup:
149
+
150
+ ```python
151
+ from sillo.session import SessionConfig
152
+ from sillo.session.middleware import SessionMiddleware
153
+
154
+ session_config = SessionConfig(
155
+ session_cookie_name="sillo_session",
156
+ cookie_secure=True,
157
+ cookie_httponly=True,
158
+ cookie_samesite="lax",
159
+ session_expiration_time=86400,
160
+ )
161
+
162
+ app.add_middleware(
163
+ SessionMiddleware(config=session_config, secret_key="your-secure-secret-key")
164
+ )
165
+ ```
166
+
167
+ Session usage:
168
+
169
+ ```python
170
+ @app.get("/counter")
171
+ async def counter(request, response):
172
+ count = request.session.get("count", 0) + 1
173
+ request.session["count"] = count
174
+ return response.json({"count": count})
175
+ ```
176
+
177
+ Teaching notes:
178
+
179
+ - `request.session` behaves a lot like a dictionary
180
+ - Session middleware depends on a configured secret key
181
+
182
+ ## Cookies
183
+
184
+ ### Read Cookies
185
+
186
+ ```python
187
+ @app.get("/whoami")
188
+ async def whoami(request, response):
189
+ token = request.cookies.get("auth_token")
190
+ return response.json({"token": token})
191
+ ```
192
+
193
+ ### Set Cookies
194
+
195
+ ```python
196
+ @app.get("/set-cookie")
197
+ async def set_cookie(request, response):
198
+ return response.json({"status": "ok"}).set_cookie(
199
+ key="auth_token",
200
+ value="abc123",
201
+ max_age=3600,
202
+ httponly=True,
203
+ secure=True,
204
+ samesite="strict",
205
+ )
206
+ ```
207
+
208
+ ### Delete Cookies
209
+
210
+ ```python
211
+ @app.get("/logout")
212
+ async def logout(request, response):
213
+ return response.json({"status": "logged out"}).delete_cookie("auth_token")
214
+ ```
215
+
216
+ Teach these best practices:
217
+
218
+ - Use `secure=True` in production
219
+ - Use `httponly=True` for sensitive cookies
220
+ - Prefer strict or appropriate `samesite` settings for auth cookies
221
+
222
+ ## Headers
223
+
224
+ ### Read Request Headers
225
+
226
+ ```python
227
+ @app.get("/headers")
228
+ async def show_headers(request, response):
229
+ return response.json(
230
+ {
231
+ "user_agent": request.headers.get("user-agent"),
232
+ "accept_language": request.headers.get("accept-language"),
233
+ }
234
+ )
235
+ ```
236
+
237
+ ### Set Response Headers
238
+
239
+ ```python
240
+ @app.get("/custom")
241
+ async def custom(request, response):
242
+ return response.text(
243
+ "ok",
244
+ headers={
245
+ "X-Content-Type-Options": "nosniff",
246
+ "X-Frame-Options": "DENY",
247
+ "X-XSS-Protection": "1; mode=block",
248
+ },
249
+ )
250
+ # another way to set headers after setting response type
251
+ # response = response.text("ok")
252
+ # response.set_header("X-Frame-Options", "DENY")
253
+ # response.set_header("X-XSS-Protection", "1; mode=block")
254
+ # return response
255
+ ```
256
+
257
+ In middleware, set headers after `await next()` or the equivalent response-producing step.
258
+
259
+
260
+ ### Example: Setting Headers After Middleware
261
+
262
+
263
+ ### Example: Setting Headers After Middleware
264
+
265
+ ```py
266
+ async def set_headers_after_middleware(request, response, next):
267
+ strem = await next()
268
+ response.set_header("X-Frame-Options", "DENY")
269
+ response.set_header("X-XSS-Protection", "1; mode=block")
270
+ return stream
271
+
272
+
273
+ app.add_middleware(set_headers_after_middleware)
274
+ ```
275
+
276
+ ## CORS And Request Hardening
277
+
278
+ sillo docs also cover cross-origin and browser-safety concerns.
279
+
280
+ ```python
281
+ from sillo.middleware import CORSMiddleware
282
+
283
+ app.add_middleware(CORSMiddleware())
284
+ ```
285
+
286
+ Use this concept bucket for:
287
+
288
+ - Cross-origin policies
289
+ - Credentialed browser requests
290
+ - Request and response header shaping
291
+ - CSRF discussions when the user is working with browser sessions or forms
292
+
293
+ ## Security Middleware
294
+
295
+ The docs present a configurable security middleware:
296
+
297
+ ```python
298
+ from sillo.middleware.security import SecurityMiddleware
299
+
300
+ app.add_middleware(
301
+ SecurityMiddleware(
302
+ csp_enabled=True, hsts_enabled=True, ssl_redirect=True, frame_options="DENY"
303
+ )
304
+ )
305
+ ```
306
+
307
+ This is the right concept cluster for:
308
+
309
+ - Content Security Policy
310
+ - HSTS
311
+ - SSL redirects
312
+ - Frame protection
313
+ - Cross-origin response policies
314
+ - Cache and header hardening
315
+
316
+ Good teaching summary:
317
+
318
+ "sillo treats security as middleware-driven response hardening plus authentication and session management. Use dedicated middleware for broad protections, and route-level logic for application-specific access control."
@@ -0,0 +1,164 @@
1
+ # sillo Concept Map
2
+
3
+ Use this file first. It is the routing table for the rest of the skill.
4
+
5
+ ## Table of Contents
6
+
7
+ 1. [How to Use This Skill](#how-to-use-this-skill)
8
+ 2. [Full Topic Coverage](#full-topic-coverage)
9
+ 3. [Which Reference to Read](#which-reference-to-read)
10
+ 4. [Teaching Defaults for AI Editors](#teaching-defaults-for-ai-editors)
11
+
12
+ ## How to Use This Skill
13
+
14
+ If the request is broad, read the files in this order:
15
+
16
+ 1. [framework-overview.md](framework-overview.md)
17
+ 2. [http-and-routing.md](http-and-routing.md)
18
+ 3. [composition-and-lifecycle.md](composition-and-lifecycle.md)
19
+ 4. [auth-state-and-security.md](auth-state-and-security.md)
20
+ 5. [realtime-and-productivity.md](realtime-and-productivity.md)
21
+
22
+ If the request is narrow, jump straight to the matching section below.
23
+
24
+ ## Full Topic Coverage
25
+
26
+ This skill is meant to cover the main public sillo concepts that an AI editor should know how to explain and generate code for:
27
+
28
+ - What sillo is and where it fits
29
+ - ASGI basics and the request lifecycle
30
+ - App setup and configuration
31
+ - Handlers and request or response flow
32
+ - Routing decorators, typed path params, `Route`, and `Router`
33
+ - Request inputs: JSON, forms, files, and streams
34
+ - Response types: JSON, text, HTML, files, redirects, streams
35
+ - Middleware and request state
36
+ - Dependency injection with `Depend(...)`
37
+ - App-level and router-level dependencies
38
+ - Startup, shutdown, lifespan, and events
39
+ - Authentication and protected routes
40
+ - Sessions, cookies, and headers
41
+ - Security middleware and production-oriented protections
42
+ - Pagination strategies
43
+ - WebSockets and real-time patterns
44
+ - OpenAPI and request or response schemas
45
+ - Pydantic integration
46
+ - Testing with the test client
47
+ - CLI workflows
48
+ - Static files and templating
49
+ - Upload handling
50
+
51
+ ## Which Reference to Read
52
+
53
+ ### Foundations
54
+
55
+ Read [framework-overview.md](framework-overview.md) for:
56
+
57
+ - Positioning sillo
58
+ - ASGI mental model
59
+ - First app example
60
+ - Config and app setup
61
+ - Request lifecycle
62
+
63
+ ### HTTP and Routing
64
+
65
+ Read [http-and-routing.md](http-and-routing.md) for:
66
+
67
+ - Handlers
68
+ - Request inputs
69
+ - Responses
70
+ - Decorator routing
71
+ - `Route` and `Router`
72
+ - Class-based handlers
73
+ - Uploads
74
+ - Pagination
75
+
76
+ ### Composition and Lifecycle
77
+
78
+ Read [composition-and-lifecycle.md](composition-and-lifecycle.md) for:
79
+
80
+ - Middleware
81
+ - Dependency injection
82
+ - Shared dependencies
83
+ - Startup or shutdown hooks
84
+ - Lifespan
85
+ - Events
86
+
87
+ ### Auth, State, and Security
88
+
89
+ Read [auth-state-and-security.md](auth-state-and-security.md) for:
90
+
91
+ - Authentication middleware
92
+ - Protected routes
93
+ - Sessions
94
+ - Cookies
95
+ - Headers
96
+ - Security middleware
97
+
98
+ Read [sessions-and-state.md](sessions-and-state.md) for:
99
+
100
+ - Detailed session setup
101
+ - Session backends
102
+ - Session expiry
103
+ - Cookie-backed state patterns
104
+
105
+ ### Realtime and Productivity
106
+
107
+ Read [realtime-and-productivity.md](realtime-and-productivity.md) for:
108
+
109
+ - WebSockets
110
+ - OpenAPI
111
+ - Pydantic
112
+ - Testing
113
+ - CLI
114
+ - Static files
115
+ - Templating
116
+
117
+ ### Deep Dives
118
+
119
+ Read [dependency-injection-deep-dive.md](dependency-injection-deep-dive.md) for:
120
+
121
+ - Context-aware DI
122
+ - Generator dependencies
123
+ - Class dependencies
124
+ - Shared app/router dependencies
125
+
126
+ Read [events-and-emitter.md](events-and-emitter.md) for:
127
+
128
+ - `app.events`
129
+ - Custom emitters
130
+ - One-time listeners
131
+ - Priority and namespaces
132
+
133
+ Read [responses-reference.md](responses-reference.md) for:
134
+
135
+ - Response object rules
136
+ - Response types
137
+ - Chaining patterns
138
+ - Headers and cookies on responses
139
+
140
+ Read [contrib-modules.md](contrib-modules.md) for:
141
+
142
+ - Redis integration
143
+ - Background tasks
144
+ - Mail
145
+ - Tortoise ORM
146
+
147
+ ### Adoption and Comparison
148
+
149
+ Read [adoption-guide.md](adoption-guide.md) for:
150
+
151
+ - Framework comparisons
152
+ - Tradeoffs
153
+ - Adoption recommendations
154
+
155
+ ## Teaching Defaults for AI Editors
156
+
157
+ When generating or explaining sillo code:
158
+
159
+ - Use `silloApp()` as the default app entry point.
160
+ - Use `async def` handlers unless the docs explicitly suggest another pattern.
161
+ - Include both `request` and `response` parameters in teaching examples.
162
+ - Pass typed path params directly into the handler signature.
163
+ - Prefer small, runnable examples over large abstractions.
164
+ - Call out important documented gotchas, such as response-building order and middleware return requirements.