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.
- sillo_framework-0.0.1a1/.agents/skills/nexios-overview/SKILL.md +61 -0
- sillo_framework-0.0.1a1/.agents/skills/nexios-overview/agents/openai.yaml +4 -0
- sillo_framework-0.0.1a1/.agents/skills/nexios-overview/references/adoption-guide.md +72 -0
- sillo_framework-0.0.1a1/.agents/skills/nexios-overview/references/auth-state-and-security.md +318 -0
- sillo_framework-0.0.1a1/.agents/skills/nexios-overview/references/capabilities-map.md +164 -0
- sillo_framework-0.0.1a1/.agents/skills/nexios-overview/references/composition-and-lifecycle.md +209 -0
- sillo_framework-0.0.1a1/.agents/skills/nexios-overview/references/contrib-modules.md +159 -0
- sillo_framework-0.0.1a1/.agents/skills/nexios-overview/references/dependency-injection-deep-dive.md +175 -0
- sillo_framework-0.0.1a1/.agents/skills/nexios-overview/references/events-and-emitter.md +124 -0
- sillo_framework-0.0.1a1/.agents/skills/nexios-overview/references/framework-overview.md +109 -0
- sillo_framework-0.0.1a1/.agents/skills/nexios-overview/references/http-and-routing.md +282 -0
- sillo_framework-0.0.1a1/.agents/skills/nexios-overview/references/realtime-and-productivity.md +201 -0
- sillo_framework-0.0.1a1/.agents/skills/nexios-overview/references/responses-reference.md +126 -0
- sillo_framework-0.0.1a1/.agents/skills/nexios-overview/references/sessions-and-state.md +125 -0
- sillo_framework-0.0.1a1/.github/CODE_OF_CONDUCT.md +30 -0
- sillo_framework-0.0.1a1/.github/CONTRIBUTING.MD +207 -0
- sillo_framework-0.0.1a1/.github/ISSUE_TEMPLATE/bug_report.md +61 -0
- sillo_framework-0.0.1a1/.github/ISSUE_TEMPLATE/feature_request.md +56 -0
- sillo_framework-0.0.1a1/.github/dependabot.yml +6 -0
- sillo_framework-0.0.1a1/.github/funding.yml +1 -0
- sillo_framework-0.0.1a1/.github/workflows/coverage.yml +27 -0
- sillo_framework-0.0.1a1/.github/workflows/format-code.yml +40 -0
- sillo_framework-0.0.1a1/.github/workflows/merge-to-main.yml +55 -0
- sillo_framework-0.0.1a1/.github/workflows/release.yml +63 -0
- sillo_framework-0.0.1a1/.github/workflows/run-tests.yaml +38 -0
- sillo_framework-0.0.1a1/.github/workflows/triage.yml +20 -0
- sillo_framework-0.0.1a1/.github/workflows/type-check.yaml +37 -0
- sillo_framework-0.0.1a1/.gitignore +55 -0
- sillo_framework-0.0.1a1/LICENSE +27 -0
- sillo_framework-0.0.1a1/PKG-INFO +293 -0
- sillo_framework-0.0.1a1/README.md +206 -0
- sillo_framework-0.0.1a1/SECURITY.md +32 -0
- sillo_framework-0.0.1a1/docs/.github/workflows/ci.yml +38 -0
- sillo_framework-0.0.1a1/docs/.github/workflows/deploy-docs-preview.yml +133 -0
- sillo_framework-0.0.1a1/docs/.github/workflows/deploy-docs.yml +60 -0
- sillo_framework-0.0.1a1/docs/.github/workflows/publish-package.yml +61 -0
- sillo_framework-0.0.1a1/docs/.gitignore +26 -0
- sillo_framework-0.0.1a1/docs/.prettierrc +9 -0
- sillo_framework-0.0.1a1/docs/README.md +69 -0
- sillo_framework-0.0.1a1/docs/bun.lock +1586 -0
- sillo_framework-0.0.1a1/docs/docs/README.md +49 -0
- sillo_framework-0.0.1a1/docs/docs/astro.config.mjs +210 -0
- sillo_framework-0.0.1a1/docs/docs/package.json +22 -0
- sillo_framework-0.0.1a1/docs/docs/public/favicon.svg +1 -0
- sillo_framework-0.0.1a1/docs/docs/public/logo-white.svg +1 -0
- sillo_framework-0.0.1a1/docs/docs/public/logo.ico +0 -0
- sillo_framework-0.0.1a1/docs/docs/public/logo.png +0 -0
- sillo_framework-0.0.1a1/docs/docs/src/assets/houston.webp +0 -0
- sillo_framework-0.0.1a1/docs/docs/src/assets/logo-black.svg +1 -0
- sillo_framework-0.0.1a1/docs/docs/src/assets/logo-white.svg +1 -0
- sillo_framework-0.0.1a1/docs/docs/src/assets/placeholder.svg +38 -0
- sillo_framework-0.0.1a1/docs/docs/src/assets/placeholder169.svg +40 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/community/contribution-guide.md +367 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/community/index.md +87 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/community/installation.md +131 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/community/integrations/jrpc.md +2257 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/community/integrations/mail.md +607 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/community/integrations/redis.md +546 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/community/integrations/scheduler.md +363 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/community/integrations/tasks.md +921 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/community/integrations/tortoise.md +296 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/community/middleware/etag.md +161 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/community/middleware/proxy.md +450 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/community/middleware/timeout.md +420 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/community/middleware/trusted-host.md +292 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/api-keys.md +149 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/authentication.md +329 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/cache.mdx +440 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/concurrency.md +392 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/configuration.md +646 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/content-negotiation.md +553 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/cookies.mdx +383 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/cors.md +494 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/csrf.md +449 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/dependency-injection.md +419 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/error-handling.mdx +381 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/events.mdx +550 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/file-upload.md +189 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/frontend.md +194 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/graphql.md +193 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/handlers.md +446 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/hashing.md +1055 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/headers.mdx +435 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/helpers/async.mdx +436 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/helpers/crypto.mdx +362 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/helpers/deprecation.mdx +358 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/helpers/files.mdx +365 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/helpers/hashing.mdx +366 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/helpers/html.mdx +390 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/helpers/index.mdx +253 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/helpers/jwt.mdx +367 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/helpers/network.mdx +418 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/helpers/retry.mdx +362 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/helpers/strings.mdx +396 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/helpers/text.mdx +350 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/http/client.md +573 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/installation.mdx +146 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/introduction.md +325 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/jwt-auth.md +335 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/middleware.md +406 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/openapi/authentication-documentation.md +666 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/openapi/basic-config.png +0 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/openapi/bearerAuth.png +0 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/openapi/custom.png +0 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/openapi/custom2.png +0 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/openapi/customizing-openapi-configuration.md +733 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/openapi/description.png +0 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/openapi/headers.png +0 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/openapi/index.md +705 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/openapi/multi-response.png +0 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/openapi/path-params.png +0 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/openapi/query-params.png +0 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/openapi/request-body.png +0 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/openapi/request-parameters.md +647 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/openapi/request-schemas.mdx +527 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/openapi/response-list.png +0 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/openapi/response-models.md +615 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/openapi/response.png +0 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/pagination.mdx +535 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/permissions.md +509 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/protecting-routes.md +403 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/rate-limiting.md +243 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/record/casting-collections.mdx +433 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/record/exceptions-pydantic.mdx +453 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/record/index.mdx +418 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/record/migrations.mdx +428 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/record/models.mdx +550 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/record/pagination.mdx +466 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/record/scopes-events.mdx +451 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/record/transactions-factories.mdx +450 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/request-info.md +461 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/request-inputs.md +136 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/request-lifecycle.md +497 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/request-parameters.mdx +402 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/routers-and-subapps.md +259 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/routing.mdx +1231 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/security.md +335 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/sending-responses.mdx +556 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/serialization.md +339 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/services/mail.mdx +460 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/session-auth.md +392 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/sessions.md +539 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/startups-and-shutdowns.mdx +428 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/static-files.mdx +349 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/streaming-response.mdx +443 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/templating/advanced.mdx +483 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/templating/index.mdx +677 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/url-normalization.md +166 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/users.md +443 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/validation/errors.md +387 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/validation/forms-and-files.md +449 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/validation/index.md +339 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/validation/openapi.md +467 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/validation/parameters.md +478 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/validation/request-bodies.md +567 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/validation/response-models.md +420 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/websockets/channels.mdx +439 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/websockets/consumer.mdx +462 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/websockets/events.mdx +468 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/websockets/groups.mdx +433 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/websockets/index.mdx +406 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/work/background.mdx +434 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/work/events.mdx +452 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/work/index.mdx +441 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/work/jobs.mdx +729 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/work/queue.mdx +1218 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/guides/work/scheduler.mdx +529 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/reference/components.mdx +180 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/reference/plugin-api.md +116 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/showcase/splash/banner.mdx +37 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/showcase/splash/centered-top.mdx +37 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/showcase/splash/centered.mdx +37 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/showcase/splash/split-left.mdx +37 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/showcase/splash/split-right.mdx +37 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/showcase/splash-pages.mdx +74 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/showcase/starlight-components.mdx +214 -0
- sillo_framework-0.0.1a1/docs/docs/src/content/docs/showcase/typography.md +104 -0
- sillo_framework-0.0.1a1/docs/docs/src/content.config.ts +11 -0
- sillo_framework-0.0.1a1/docs/docs/src/styles/global.css +203 -0
- sillo_framework-0.0.1a1/docs/docs/tsconfig.json +5 -0
- sillo_framework-0.0.1a1/docs/package.json +24 -0
- sillo_framework-0.0.1a1/docs/packages/lucode-starlight/README.md +213 -0
- sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/custom/ContainerSection.astro +58 -0
- sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/custom/LinkButton.astro +141 -0
- sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/custom/dropdown/Dropdown.astro +616 -0
- sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/custom/dropdown/DropdownContent.astro +179 -0
- sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/custom/dropdown/DropdownItem.astro +72 -0
- sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/custom/dropdown/DropdownLabel.astro +31 -0
- sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/custom/dropdown/DropdownSeparator.astro +18 -0
- sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/custom/dropdown/DropdownShortcut.astro +24 -0
- sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/custom/dropdown/DropdownTrigger.astro +54 -0
- sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/custom/dropdown/index.ts +29 -0
- sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/overrides/ContentPanel.astro +1 -0
- sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/overrides/Footer.astro +54 -0
- sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/overrides/Header.astro +96 -0
- sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/overrides/Hero.astro +307 -0
- sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/overrides/MarkdownContent.astro +17 -0
- sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/overrides/PageFrame.astro +121 -0
- sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/overrides/PageSidebar.astro +20 -0
- sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/overrides/PageTitle.astro +130 -0
- sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/overrides/Pagination.astro +101 -0
- sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/overrides/Search.astro +549 -0
- sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/overrides/Sidebar.astro +161 -0
- sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/overrides/SiteTitle.astro +67 -0
- sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/overrides/SocialIcons.astro +47 -0
- sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/overrides/TableOfContents.astro +36 -0
- sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/overrides/ThemeSelect.astro +156 -0
- sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/overrides/TwoColumnContent.astro +75 -0
- sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/overrides/parts/Drawer.astro +259 -0
- sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/overrides/parts/MobileMenuToggle.astro +42 -0
- sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/overrides/parts/NavBar.astro +111 -0
- sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/overrides/parts/SidebarSublist.astro +115 -0
- sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/overrides/parts/toc/TableOfContentsList.astro +71 -0
- sillo_framework-0.0.1a1/docs/packages/lucode-starlight/components/overrides/parts/toc/starlight-toc.ts +119 -0
- sillo_framework-0.0.1a1/docs/packages/lucode-starlight/core/config/constants.ts +1 -0
- sillo_framework-0.0.1a1/docs/packages/lucode-starlight/core/config/expresive-code.ts +63 -0
- sillo_framework-0.0.1a1/docs/packages/lucode-starlight/core/config/override.ts +48 -0
- sillo_framework-0.0.1a1/docs/packages/lucode-starlight/core/config/schemas.ts +57 -0
- sillo_framework-0.0.1a1/docs/packages/lucode-starlight/core/config/vite.ts +20 -0
- sillo_framework-0.0.1a1/docs/packages/lucode-starlight/core/plugin.ts +56 -0
- sillo_framework-0.0.1a1/docs/packages/lucode-starlight/global.d.ts +5 -0
- sillo_framework-0.0.1a1/docs/packages/lucode-starlight/index.ts +3 -0
- sillo_framework-0.0.1a1/docs/packages/lucode-starlight/package.json +54 -0
- sillo_framework-0.0.1a1/docs/packages/lucode-starlight/schema.ts +24 -0
- sillo_framework-0.0.1a1/docs/packages/lucode-starlight/styles/base.css +904 -0
- sillo_framework-0.0.1a1/docs/packages/lucode-starlight/styles/layers.css +1 -0
- sillo_framework-0.0.1a1/docs/packages/lucode-starlight/styles/theme.css +67 -0
- sillo_framework-0.0.1a1/docs/packages/lucode-starlight/user-components.ts +3 -0
- sillo_framework-0.0.1a1/docs/packages/lucode-starlight/virtual.d.ts +51 -0
- sillo_framework-0.0.1a1/docs/renovate.json +7 -0
- sillo_framework-0.0.1a1/docs/test/lucode-starlight/config.test.ts +171 -0
- sillo_framework-0.0.1a1/docs/test/lucode-starlight/plugin.test.ts +175 -0
- sillo_framework-0.0.1a1/docs/test/lucode-starlight/starlight-toc.test.ts +279 -0
- sillo_framework-0.0.1a1/docs/tsconfig.json +9 -0
- sillo_framework-0.0.1a1/docs/vitest.config.ts +28 -0
- sillo_framework-0.0.1a1/examples/README.md +66 -0
- sillo_framework-0.0.1a1/examples/auth/01_session_auth.py +97 -0
- sillo_framework-0.0.1a1/examples/auth/02_jwt_auth.py +87 -0
- sillo_framework-0.0.1a1/examples/auth/03_custom_backend.py +119 -0
- sillo_framework-0.0.1a1/examples/auth/04_multiple_backends.py +167 -0
- sillo_framework-0.0.1a1/examples/auth/05_router_integration.py +86 -0
- sillo_framework-0.0.1a1/examples/config/.env.development +15 -0
- sillo_framework-0.0.1a1/examples/config/.env.example +20 -0
- sillo_framework-0.0.1a1/examples/config/.env.production +15 -0
- sillo_framework-0.0.1a1/examples/config/01_basic_config.py +62 -0
- sillo_framework-0.0.1a1/examples/config/02_web_app.py +154 -0
- sillo_framework-0.0.1a1/examples/config/README.md +353 -0
- sillo_framework-0.0.1a1/examples/database/01_sqlite_todo.py +177 -0
- sillo_framework-0.0.1a1/examples/database/02_tortoise_notes.py +174 -0
- sillo_framework-0.0.1a1/examples/database/03_tortoise_blog.py +197 -0
- sillo_framework-0.0.1a1/examples/exception_handling/01_basic.py +21 -0
- sillo_framework-0.0.1a1/examples/exception_handling/02_custom.py +25 -0
- sillo_framework-0.0.1a1/examples/file_handling/01_upload_download.py +202 -0
- sillo_framework-0.0.1a1/examples/file_handling/02_simple_upload.py +28 -0
- sillo_framework-0.0.1a1/examples/getting_started/01_hello_world.py +58 -0
- sillo_framework-0.0.1a1/examples/getting_started/02_basic_rest.py +22 -0
- sillo_framework-0.0.1a1/examples/getting_started/03_enhanced_api.py +341 -0
- sillo_framework-0.0.1a1/examples/getting_started/04_lifespan.py +214 -0
- sillo_framework-0.0.1a1/examples/getting_started/05_streaming_middleware.py +28 -0
- sillo_framework-0.0.1a1/examples/getting_started/README.md +31 -0
- sillo_framework-0.0.1a1/examples/hashing/01_basic_password_hashing.py +90 -0
- sillo_framework-0.0.1a1/examples/hashing/01_basic_usage.py +33 -0
- sillo_framework-0.0.1a1/examples/hashing/02_multiple_algorithms.py +177 -0
- sillo_framework-0.0.1a1/examples/hashing/02_schemes.py +74 -0
- sillo_framework-0.0.1a1/examples/hashing/03_web_api.py +125 -0
- sillo_framework-0.0.1a1/examples/hashing/README.md +246 -0
- sillo_framework-0.0.1a1/examples/middleware/01_basic.py +29 -0
- sillo_framework-0.0.1a1/examples/middleware/02_class_based.py +29 -0
- sillo_framework-0.0.1a1/examples/middleware/03_asgi_middleware.py +39 -0
- sillo_framework-0.0.1a1/examples/request_inputs/01_json_data.py +25 -0
- sillo_framework-0.0.1a1/examples/request_inputs/02_form_data.py +9 -0
- sillo_framework-0.0.1a1/examples/request_inputs/03_raw_body.py +10 -0
- sillo_framework-0.0.1a1/examples/request_inputs/04_streaming.py +12 -0
- sillo_framework-0.0.1a1/examples/responses/01_return_values.py +21 -0
- sillo_framework-0.0.1a1/examples/responses/02_json_with_headers.py +12 -0
- sillo_framework-0.0.1a1/examples/responses/03_response_types.py +28 -0
- sillo_framework-0.0.1a1/examples/responses/04_response_classes.py +37 -0
- sillo_framework-0.0.1a1/examples/routing/01_basic_routes.py +31 -0
- sillo_framework-0.0.1a1/examples/routing/02_path_parameters.py +53 -0
- sillo_framework-0.0.1a1/examples/routing/03_routes_class.py +36 -0
- sillo_framework-0.0.1a1/examples/routing/04_routers.py +21 -0
- sillo_framework-0.0.1a1/examples/templating/01_basic.py +52 -0
- sillo_framework-0.0.1a1/examples/templating/02_inheritance.py +120 -0
- sillo_framework-0.0.1a1/examples/templating/03_custom_filters.py +110 -0
- sillo_framework-0.0.1a1/examples/templating/README.md +87 -0
- sillo_framework-0.0.1a1/examples/templating/requirements.txt +4 -0
- sillo_framework-0.0.1a1/examples/templating/templates/index.html +25 -0
- sillo_framework-0.0.1a1/examples/templating/templates/user_profile.html +20 -0
- sillo_framework-0.0.1a1/examples/validation/01_advanced.py +170 -0
- sillo_framework-0.0.1a1/examples/validation/02_pydantic.py +28 -0
- sillo_framework-0.0.1a1/examples/websockets/01_basic_echo.py +18 -0
- sillo_framework-0.0.1a1/examples/websockets/02_chat_rooms.py +102 -0
- sillo_framework-0.0.1a1/examples/websockets/03_custom_history.py +284 -0
- sillo_framework-0.0.1a1/pyproject.toml +296 -0
- sillo_framework-0.0.1a1/requirements-dev.txt +9 -0
- sillo_framework-0.0.1a1/requirements.txt +9 -0
- sillo_framework-0.0.1a1/sillo/__init__.py +138 -0
- sillo_framework-0.0.1a1/sillo/_internals/__init__.py +0 -0
- sillo_framework-0.0.1a1/sillo/_internals/_middleware.py +546 -0
- sillo_framework-0.0.1a1/sillo/admin/__init__.py +232 -0
- sillo_framework-0.0.1a1/sillo/admin/auth.py +167 -0
- sillo_framework-0.0.1a1/sillo/admin/models.py +153 -0
- sillo_framework-0.0.1a1/sillo/admin/registry.py +302 -0
- sillo_framework-0.0.1a1/sillo/admin/router.py +463 -0
- sillo_framework-0.0.1a1/sillo/admin/routes.py +1734 -0
- sillo_framework-0.0.1a1/sillo/admin/static/logo.png +0 -0
- sillo_framework-0.0.1a1/sillo/admin/templates/base.html +497 -0
- sillo_framework-0.0.1a1/sillo/admin/templates/create.html +76 -0
- sillo_framework-0.0.1a1/sillo/admin/templates/dashboard.html +45 -0
- sillo_framework-0.0.1a1/sillo/admin/templates/delete.html +15 -0
- sillo_framework-0.0.1a1/sillo/admin/templates/detail.html +61 -0
- sillo_framework-0.0.1a1/sillo/admin/templates/list.html +117 -0
- sillo_framework-0.0.1a1/sillo/admin/templates/login.html +54 -0
- sillo_framework-0.0.1a1/sillo/admin/templates/query.html +56 -0
- sillo_framework-0.0.1a1/sillo/admin/templates/update.html +85 -0
- sillo_framework-0.0.1a1/sillo/admin/templating.py +44 -0
- sillo_framework-0.0.1a1/sillo/application.py +2582 -0
- sillo_framework-0.0.1a1/sillo/auth/__init__.py +47 -0
- sillo_framework-0.0.1a1/sillo/auth/apikey/__init__.py +71 -0
- sillo_framework-0.0.1a1/sillo/auth/apikey/backend.py +104 -0
- sillo_framework-0.0.1a1/sillo/auth/apikey/mixins.py +132 -0
- sillo_framework-0.0.1a1/sillo/auth/apikey/models.py +308 -0
- sillo_framework-0.0.1a1/sillo/auth/backend.py +117 -0
- sillo_framework-0.0.1a1/sillo/auth/decorator.py +277 -0
- sillo_framework-0.0.1a1/sillo/auth/exceptions.py +197 -0
- sillo_framework-0.0.1a1/sillo/auth/jwt_auth/__init__.py +87 -0
- sillo_framework-0.0.1a1/sillo/auth/jwt_auth/backend.py +153 -0
- sillo_framework-0.0.1a1/sillo/auth/jwt_auth/mixins.py +237 -0
- sillo_framework-0.0.1a1/sillo/auth/jwt_auth/models.py +266 -0
- sillo_framework-0.0.1a1/sillo/auth/jwt_auth/tokens.py +301 -0
- sillo_framework-0.0.1a1/sillo/auth/middleware.py +158 -0
- sillo_framework-0.0.1a1/sillo/auth/model.py +35 -0
- sillo_framework-0.0.1a1/sillo/auth/session_auth/__init__.py +27 -0
- sillo_framework-0.0.1a1/sillo/auth/session_auth/backend.py +166 -0
- sillo_framework-0.0.1a1/sillo/auth/session_auth/guard.py +285 -0
- sillo_framework-0.0.1a1/sillo/auth/session_auth/mixins.py +164 -0
- sillo_framework-0.0.1a1/sillo/auth/session_auth/models.py +185 -0
- sillo_framework-0.0.1a1/sillo/auth/use_auth.py +276 -0
- sillo_framework-0.0.1a1/sillo/cache/__init__.py +53 -0
- sillo_framework-0.0.1a1/sillo/cache/backends.py +835 -0
- sillo_framework-0.0.1a1/sillo/cache/base.py +644 -0
- sillo_framework-0.0.1a1/sillo/cache/config.py +163 -0
- sillo_framework-0.0.1a1/sillo/cache/decorator.py +355 -0
- sillo_framework-0.0.1a1/sillo/config/__init__.py +25 -0
- sillo_framework-0.0.1a1/sillo/config/core.py +117 -0
- sillo_framework-0.0.1a1/sillo/core/__init__.py +6 -0
- sillo_framework-0.0.1a1/sillo/core/converters.py +572 -0
- sillo_framework-0.0.1a1/sillo/core/dependencies/__init__.py +11 -0
- sillo_framework-0.0.1a1/sillo/core/dependencies/base.py +583 -0
- sillo_framework-0.0.1a1/sillo/core/encoding.py +395 -0
- sillo_framework-0.0.1a1/sillo/core/error/__init__.py +3 -0
- sillo_framework-0.0.1a1/sillo/core/error/handler.py +1606 -0
- sillo_framework-0.0.1a1/sillo/core/helpers/__init__.py +0 -0
- sillo_framework-0.0.1a1/sillo/core/helpers/async_helpers.py +257 -0
- sillo_framework-0.0.1a1/sillo/core/helpers/deprecation.py +208 -0
- sillo_framework-0.0.1a1/sillo/core/http/__init__.py +4 -0
- sillo_framework-0.0.1a1/sillo/core/http/cookies.py +53 -0
- sillo_framework-0.0.1a1/sillo/core/http/request.py +1627 -0
- sillo_framework-0.0.1a1/sillo/core/http/response.py +1740 -0
- sillo_framework-0.0.1a1/sillo/core/routing/__init__.py +12 -0
- sillo_framework-0.0.1a1/sillo/core/routing/_utils.py +66 -0
- sillo_framework-0.0.1a1/sillo/core/routing/base.py +266 -0
- sillo_framework-0.0.1a1/sillo/core/routing/grouping.py +263 -0
- sillo_framework-0.0.1a1/sillo/core/routing/router.py +3390 -0
- sillo_framework-0.0.1a1/sillo/core/routing/websocket.py +309 -0
- sillo_framework-0.0.1a1/sillo/decorator_helper.py +104 -0
- sillo_framework-0.0.1a1/sillo/encoding.py +31 -0
- sillo_framework-0.0.1a1/sillo/events/__init__.py +35 -0
- sillo_framework-0.0.1a1/sillo/events/core.py +867 -0
- sillo_framework-0.0.1a1/sillo/events/emitter.py +663 -0
- sillo_framework-0.0.1a1/sillo/events/enums.py +53 -0
- sillo_framework-0.0.1a1/sillo/events/exceptions.py +106 -0
- sillo_framework-0.0.1a1/sillo/events/mixins.py +109 -0
- sillo_framework-0.0.1a1/sillo/events/transports/__init__.py +183 -0
- sillo_framework-0.0.1a1/sillo/events/transports/base.py +579 -0
- sillo_framework-0.0.1a1/sillo/events/transports/memory.py +77 -0
- sillo_framework-0.0.1a1/sillo/events/transports/persistent.py +288 -0
- sillo_framework-0.0.1a1/sillo/events/transports/record.py +231 -0
- sillo_framework-0.0.1a1/sillo/events/transports/redis.py +242 -0
- sillo_framework-0.0.1a1/sillo/events/types.py +141 -0
- sillo_framework-0.0.1a1/sillo/exception_handler.py +407 -0
- sillo_framework-0.0.1a1/sillo/exceptions.py +242 -0
- sillo_framework-0.0.1a1/sillo/formparser.py +683 -0
- sillo_framework-0.0.1a1/sillo/frontend.py +211 -0
- sillo_framework-0.0.1a1/sillo/graphql/__init__.py +3 -0
- sillo_framework-0.0.1a1/sillo/graphql/handler.py +326 -0
- sillo_framework-0.0.1a1/sillo/handlers/__init__.py +0 -0
- sillo_framework-0.0.1a1/sillo/handlers/not_found.py +162 -0
- sillo_framework-0.0.1a1/sillo/hashing/__init__.py +74 -0
- sillo_framework-0.0.1a1/sillo/hashing/config.py +74 -0
- sillo_framework-0.0.1a1/sillo/hashing/core.py +259 -0
- sillo_framework-0.0.1a1/sillo/hashing/exceptions.py +19 -0
- sillo_framework-0.0.1a1/sillo/hashing/utils.py +166 -0
- sillo_framework-0.0.1a1/sillo/helpers/__init__.py +6 -0
- sillo_framework-0.0.1a1/sillo/helpers/crypto.py +250 -0
- sillo_framework-0.0.1a1/sillo/helpers/files.py +412 -0
- sillo_framework-0.0.1a1/sillo/helpers/hashing.py +189 -0
- sillo_framework-0.0.1a1/sillo/helpers/html.py +253 -0
- sillo_framework-0.0.1a1/sillo/helpers/jwt.py +434 -0
- sillo_framework-0.0.1a1/sillo/helpers/network.py +294 -0
- sillo_framework-0.0.1a1/sillo/helpers/retry.py +289 -0
- sillo_framework-0.0.1a1/sillo/helpers/strings.py +320 -0
- sillo_framework-0.0.1a1/sillo/helpers/text.py +262 -0
- sillo_framework-0.0.1a1/sillo/http/__init__.py +133 -0
- sillo_framework-0.0.1a1/sillo/http/accepts.py +1312 -0
- sillo_framework-0.0.1a1/sillo/http/client/__init__.py +104 -0
- sillo_framework-0.0.1a1/sillo/http/client/caching.py +202 -0
- sillo_framework-0.0.1a1/sillo/http/client/client.py +578 -0
- sillo_framework-0.0.1a1/sillo/http/client/config.py +120 -0
- sillo_framework-0.0.1a1/sillo/http/client/errors.py +101 -0
- sillo_framework-0.0.1a1/sillo/http/client/middleware.py +134 -0
- sillo_framework-0.0.1a1/sillo/http/client/models.py +120 -0
- sillo_framework-0.0.1a1/sillo/http/client/retry.py +85 -0
- sillo_framework-0.0.1a1/sillo/http/client/transport.py +56 -0
- sillo_framework-0.0.1a1/sillo/http/client/utils.py +85 -0
- sillo_framework-0.0.1a1/sillo/http/etag.py +174 -0
- sillo_framework-0.0.1a1/sillo/http/lifecycle/__init__.py +37 -0
- sillo_framework-0.0.1a1/sillo/http/lifecycle/context.py +248 -0
- sillo_framework-0.0.1a1/sillo/http/lifecycle/helpers.py +184 -0
- sillo_framework-0.0.1a1/sillo/http/lifecycle/middleware.py +205 -0
- sillo_framework-0.0.1a1/sillo/http/status.py +138 -0
- sillo_framework-0.0.1a1/sillo/logging.py +187 -0
- sillo_framework-0.0.1a1/sillo/mail/__init__.py +13 -0
- sillo_framework-0.0.1a1/sillo/mail/client.py +404 -0
- sillo_framework-0.0.1a1/sillo/mail/config.py +156 -0
- sillo_framework-0.0.1a1/sillo/mail/models.py +225 -0
- sillo_framework-0.0.1a1/sillo/middleware/__init__.py +5 -0
- sillo_framework-0.0.1a1/sillo/middleware/base.py +168 -0
- sillo_framework-0.0.1a1/sillo/middleware/gzip.py +297 -0
- sillo_framework-0.0.1a1/sillo/middleware/security.py +7 -0
- sillo_framework-0.0.1a1/sillo/middleware/utils.py +112 -0
- sillo_framework-0.0.1a1/sillo/normalize/__init__.py +33 -0
- sillo_framework-0.0.1a1/sillo/normalize/helpers.py +308 -0
- sillo_framework-0.0.1a1/sillo/normalize/middleware.py +298 -0
- sillo_framework-0.0.1a1/sillo/objects/__init__.py +38 -0
- sillo_framework-0.0.1a1/sillo/objects/common.py +209 -0
- sillo_framework-0.0.1a1/sillo/objects/datastructures.py +444 -0
- sillo_framework-0.0.1a1/sillo/objects/http.py +1063 -0
- sillo_framework-0.0.1a1/sillo/objects/routing.py +778 -0
- sillo_framework-0.0.1a1/sillo/openapi/__init__.py +2 -0
- sillo_framework-0.0.1a1/sillo/openapi/_builder.py +787 -0
- sillo_framework-0.0.1a1/sillo/openapi/config.py +173 -0
- sillo_framework-0.0.1a1/sillo/openapi/models.py +767 -0
- sillo_framework-0.0.1a1/sillo/openapi/utils.py +47 -0
- sillo_framework-0.0.1a1/sillo/pagination.py +540 -0
- sillo_framework-0.0.1a1/sillo/parameters.py +39 -0
- sillo_framework-0.0.1a1/sillo/permissions/__init__.py +17 -0
- sillo_framework-0.0.1a1/sillo/permissions/mixins.py +225 -0
- sillo_framework-0.0.1a1/sillo/permissions/models.py +726 -0
- sillo_framework-0.0.1a1/sillo/py.typed +0 -0
- sillo_framework-0.0.1a1/sillo/record/__init__.py +83 -0
- sillo_framework-0.0.1a1/sillo/record/casting.py +247 -0
- sillo_framework-0.0.1a1/sillo/record/collection.py +448 -0
- sillo_framework-0.0.1a1/sillo/record/commands/__init__.py +98 -0
- sillo_framework-0.0.1a1/sillo/record/config.py +156 -0
- sillo_framework-0.0.1a1/sillo/record/events.py +275 -0
- sillo_framework-0.0.1a1/sillo/record/exceptions.py +113 -0
- sillo_framework-0.0.1a1/sillo/record/factories.py +134 -0
- sillo_framework-0.0.1a1/sillo/record/fields.py +176 -0
- sillo_framework-0.0.1a1/sillo/record/helpers.py +321 -0
- sillo_framework-0.0.1a1/sillo/record/logging.py +207 -0
- sillo_framework-0.0.1a1/sillo/record/manager.py +265 -0
- sillo_framework-0.0.1a1/sillo/record/mixins/__init__.py +240 -0
- sillo_framework-0.0.1a1/sillo/record/models.py +417 -0
- sillo_framework-0.0.1a1/sillo/record/pagination.py +107 -0
- sillo_framework-0.0.1a1/sillo/record/pydantic.py +98 -0
- sillo_framework-0.0.1a1/sillo/record/queries.py +156 -0
- sillo_framework-0.0.1a1/sillo/record/scopes.py +135 -0
- sillo_framework-0.0.1a1/sillo/record/transactions.py +115 -0
- sillo_framework-0.0.1a1/sillo/route_builder.py +252 -0
- sillo_framework-0.0.1a1/sillo/security/__init__.py +50 -0
- sillo_framework-0.0.1a1/sillo/security/cors/__init__.py +4 -0
- sillo_framework-0.0.1a1/sillo/security/cors/_middleware.py +332 -0
- sillo_framework-0.0.1a1/sillo/security/cors/config.py +245 -0
- sillo_framework-0.0.1a1/sillo/security/csrf/__init__.py +4 -0
- sillo_framework-0.0.1a1/sillo/security/csrf/_middleware.py +184 -0
- sillo_framework-0.0.1a1/sillo/security/csrf/config.py +230 -0
- sillo_framework-0.0.1a1/sillo/security/ratelimit/__init__.py +105 -0
- sillo_framework-0.0.1a1/sillo/security/ratelimit/_middleware.py +147 -0
- sillo_framework-0.0.1a1/sillo/security/ratelimit/backends/__init__.py +44 -0
- sillo_framework-0.0.1a1/sillo/security/ratelimit/backends/base.py +65 -0
- sillo_framework-0.0.1a1/sillo/security/ratelimit/backends/memory.py +85 -0
- sillo_framework-0.0.1a1/sillo/security/ratelimit/backends/record.py +65 -0
- sillo_framework-0.0.1a1/sillo/security/ratelimit/backends/redis.py +125 -0
- sillo_framework-0.0.1a1/sillo/security/ratelimit/config.py +102 -0
- sillo_framework-0.0.1a1/sillo/security/ratelimit/models.py +102 -0
- sillo_framework-0.0.1a1/sillo/security/ratelimit/strategies/__init__.py +48 -0
- sillo_framework-0.0.1a1/sillo/security/ratelimit/strategies/base.py +69 -0
- sillo_framework-0.0.1a1/sillo/security/ratelimit/strategies/fixed_window.py +75 -0
- sillo_framework-0.0.1a1/sillo/security/ratelimit/strategies/sliding_window.py +74 -0
- sillo_framework-0.0.1a1/sillo/security/ratelimit/strategies/token_bucket.py +76 -0
- sillo_framework-0.0.1a1/sillo/security/shield.py +323 -0
- sillo_framework-0.0.1a1/sillo/session/__init__.py +4 -0
- sillo_framework-0.0.1a1/sillo/session/base.py +160 -0
- sillo_framework-0.0.1a1/sillo/session/config.py +201 -0
- sillo_framework-0.0.1a1/sillo/session/file.py +152 -0
- sillo_framework-0.0.1a1/sillo/session/middleware.py +122 -0
- sillo_framework-0.0.1a1/sillo/session/session_objects.py +392 -0
- sillo_framework-0.0.1a1/sillo/session/signed_cookies.py +114 -0
- sillo_framework-0.0.1a1/sillo/static.py +252 -0
- sillo_framework-0.0.1a1/sillo/templating/__init__.py +150 -0
- sillo_framework-0.0.1a1/sillo/templating/middleware.py +105 -0
- sillo_framework-0.0.1a1/sillo/templating/utils.py +124 -0
- sillo_framework-0.0.1a1/sillo/testclient/__init__.py +17 -0
- sillo_framework-0.0.1a1/sillo/testclient/_internal/__init__.py +0 -0
- sillo_framework-0.0.1a1/sillo/testclient/_internal/inputs.py +54 -0
- sillo_framework-0.0.1a1/sillo/testclient/_internal/transport.py +827 -0
- sillo_framework-0.0.1a1/sillo/testclient/_internal/types.py +15 -0
- sillo_framework-0.0.1a1/sillo/testclient/_internal/utils.py +78 -0
- sillo_framework-0.0.1a1/sillo/testclient/_internal/websockets.py +303 -0
- sillo_framework-0.0.1a1/sillo/testclient/async_client.py +461 -0
- sillo_framework-0.0.1a1/sillo/testclient/base.py +639 -0
- sillo_framework-0.0.1a1/sillo/testclient/exceptions.py +34 -0
- sillo_framework-0.0.1a1/sillo/testclient/helpers.py +148 -0
- sillo_framework-0.0.1a1/sillo/types.py +41 -0
- sillo_framework-0.0.1a1/sillo/users/__init__.py +34 -0
- sillo_framework-0.0.1a1/sillo/users/base.py +749 -0
- sillo_framework-0.0.1a1/sillo/users/managers.py +164 -0
- sillo_framework-0.0.1a1/sillo/users/simple.py +169 -0
- sillo_framework-0.0.1a1/sillo/utils/__init__.py +1 -0
- sillo_framework-0.0.1a1/sillo/utils/concurrency.py +41 -0
- sillo_framework-0.0.1a1/sillo/validation/__init__.py +89 -0
- sillo_framework-0.0.1a1/sillo/validation/compiler.py +521 -0
- sillo_framework-0.0.1a1/sillo/validation/errors.py +121 -0
- sillo_framework-0.0.1a1/sillo/validation/fields.py +666 -0
- sillo_framework-0.0.1a1/sillo/websockets/__init__.py +26 -0
- sillo_framework-0.0.1a1/sillo/websockets/base.py +390 -0
- sillo_framework-0.0.1a1/sillo/websockets/channels.py +338 -0
- sillo_framework-0.0.1a1/sillo/websockets/consumers.py +250 -0
- sillo_framework-0.0.1a1/sillo/websockets/errors.py +80 -0
- sillo_framework-0.0.1a1/sillo/websockets/history.py +146 -0
- sillo_framework-0.0.1a1/sillo/websockets/status.py +66 -0
- sillo_framework-0.0.1a1/sillo/websockets/utils.py +84 -0
- sillo_framework-0.0.1a1/sillo/work/__init__.py +67 -0
- sillo_framework-0.0.1a1/sillo/work/backends.py +586 -0
- sillo_framework-0.0.1a1/sillo/work/background/__init__.py +11 -0
- sillo_framework-0.0.1a1/sillo/work/background/supervisor.py +161 -0
- sillo_framework-0.0.1a1/sillo/work/background/tasks.py +258 -0
- sillo_framework-0.0.1a1/sillo/work/dependency.py +59 -0
- sillo_framework-0.0.1a1/sillo/work/middleware.py +291 -0
- sillo_framework-0.0.1a1/sillo/work/queue/__init__.py +51 -0
- sillo_framework-0.0.1a1/sillo/work/queue/batches.py +219 -0
- sillo_framework-0.0.1a1/sillo/work/queue/connection.py +412 -0
- sillo_framework-0.0.1a1/sillo/work/queue/events.py +236 -0
- sillo_framework-0.0.1a1/sillo/work/queue/failed.py +183 -0
- sillo_framework-0.0.1a1/sillo/work/queue/job.py +334 -0
- sillo_framework-0.0.1a1/sillo/work/queue/listener.py +215 -0
- sillo_framework-0.0.1a1/sillo/work/queue/middleware.py +229 -0
- sillo_framework-0.0.1a1/sillo/work/queue/payloads.py +95 -0
- sillo_framework-0.0.1a1/sillo/work/queue/workers.py +333 -0
- sillo_framework-0.0.1a1/sillo/work/scheduler/__init__.py +34 -0
- sillo_framework-0.0.1a1/sillo/work/scheduler/cron.py +125 -0
- sillo_framework-0.0.1a1/sillo/work/scheduler/jobs.py +167 -0
- sillo_framework-0.0.1a1/sillo/work/scheduler/manager.py +306 -0
- sillo_framework-0.0.1a1/sillo/work/scheduler/middleware.py +117 -0
- sillo_framework-0.0.1a1/sillo/work/scheduler/triggers.py +170 -0
- sillo_framework-0.0.1a1/sillo/work/task.py +670 -0
- sillo_framework-0.0.1a1/sillo/work/types.py +408 -0
- sillo_framework-0.0.1a1/tests/__init__.py +0 -0
- sillo_framework-0.0.1a1/tests/conftest.py +64 -0
- sillo_framework-0.0.1a1/tests/static/example.txt +21 -0
- sillo_framework-0.0.1a1/tests/static/page.html +1 -0
- sillo_framework-0.0.1a1/tests/static/script.js +1 -0
- sillo_framework-0.0.1a1/tests/static/style.css +1 -0
- sillo_framework-0.0.1a1/tests/static/subfolder/subfile.txt +1 -0
- sillo_framework-0.0.1a1/tests/templates/base.html +11 -0
- sillo_framework-0.0.1a1/tests/templates/product.html +11 -0
- sillo_framework-0.0.1a1/tests/templates/welcome.html +8 -0
- sillo_framework-0.0.1a1/tests/test_admin/__init__.py +0 -0
- sillo_framework-0.0.1a1/tests/test_admin/test_admin_export_query.py +826 -0
- sillo_framework-0.0.1a1/tests/test_admin/test_admin_views.py +449 -0
- sillo_framework-0.0.1a1/tests/test_applications/__init__.py +0 -0
- sillo_framework-0.0.1a1/tests/test_applications/test_application.py +679 -0
- sillo_framework-0.0.1a1/tests/test_applications/test_route_kwargs.py +112 -0
- sillo_framework-0.0.1a1/tests/test_auth/__init__.py +0 -0
- sillo_framework-0.0.1a1/tests/test_auth/test_apikey_backend.py +150 -0
- sillo_framework-0.0.1a1/tests/test_auth/test_auth_decorators.py +236 -0
- sillo_framework-0.0.1a1/tests/test_auth/test_auth_middleware.py +244 -0
- sillo_framework-0.0.1a1/tests/test_auth/test_auth_utilities.py +197 -0
- sillo_framework-0.0.1a1/tests/test_auth/test_custom_backend.py +198 -0
- sillo_framework-0.0.1a1/tests/test_auth/test_jwt_backend.py +253 -0
- sillo_framework-0.0.1a1/tests/test_auth/test_jwt_user_mixin.py +381 -0
- sillo_framework-0.0.1a1/tests/test_auth/test_session_backend.py +201 -0
- sillo_framework-0.0.1a1/tests/test_auth/test_session_guard.py +230 -0
- sillo_framework-0.0.1a1/tests/test_auth/test_token_for_user.py +159 -0
- sillo_framework-0.0.1a1/tests/test_auth/test_use_auth.py +343 -0
- sillo_framework-0.0.1a1/tests/test_auth/test_user_models.py +92 -0
- sillo_framework-0.0.1a1/tests/test_cache/__init__.py +0 -0
- sillo_framework-0.0.1a1/tests/test_cache/test_base.py +73 -0
- sillo_framework-0.0.1a1/tests/test_cache/test_decorator.py +183 -0
- sillo_framework-0.0.1a1/tests/test_cache/test_memory_cache.py +147 -0
- sillo_framework-0.0.1a1/tests/test_cache/test_redis_backend.py +79 -0
- sillo_framework-0.0.1a1/tests/test_config/__init__.py +1 -0
- sillo_framework-0.0.1a1/tests/test_config/conftest.py +60 -0
- sillo_framework-0.0.1a1/tests/test_config/test_config_loading.py +331 -0
- sillo_framework-0.0.1a1/tests/test_cors/__init__.py +3 -0
- sillo_framework-0.0.1a1/tests/test_cors/test_configuration.py +454 -0
- sillo_framework-0.0.1a1/tests/test_cors/test_error_handling.py +336 -0
- sillo_framework-0.0.1a1/tests/test_cors/test_integration.py +455 -0
- sillo_framework-0.0.1a1/tests/test_cors/test_preflight_requests.py +378 -0
- sillo_framework-0.0.1a1/tests/test_cors/test_simple_requests.py +236 -0
- sillo_framework-0.0.1a1/tests/test_dependencies/__init__.py +0 -0
- sillo_framework-0.0.1a1/tests/test_dependencies/test_dependency_injection.py +863 -0
- sillo_framework-0.0.1a1/tests/test_encoding/__init__.py +0 -0
- sillo_framework-0.0.1a1/tests/test_encoding/test_custom_encoder.py +105 -0
- sillo_framework-0.0.1a1/tests/test_encoding/test_encoding_shim.py +43 -0
- sillo_framework-0.0.1a1/tests/test_encoding/test_jsonable_encoder.py +778 -0
- sillo_framework-0.0.1a1/tests/test_events/__init__.py +1 -0
- sillo_framework-0.0.1a1/tests/test_events/test_comprehensive_events.py +841 -0
- sillo_framework-0.0.1a1/tests/test_events/test_events_backends.py +211 -0
- sillo_framework-0.0.1a1/tests/test_exception_handlers/__init__.py +0 -0
- sillo_framework-0.0.1a1/tests/test_exception_handlers/test_basic_exception_handlers.py +450 -0
- sillo_framework-0.0.1a1/tests/test_exception_handlers/test_exception_handler_integration.py +499 -0
- sillo_framework-0.0.1a1/tests/test_exception_handlers/test_not_found_handler.py +126 -0
- sillo_framework-0.0.1a1/tests/test_exception_handlers/test_server_error_debug.py +197 -0
- sillo_framework-0.0.1a1/tests/test_forms/__init__.py +0 -0
- sillo_framework-0.0.1a1/tests/test_forms/test_form_parser.py +534 -0
- sillo_framework-0.0.1a1/tests/test_forms/test_uploaded_file_save.py +54 -0
- sillo_framework-0.0.1a1/tests/test_frontend/__init__.py +0 -0
- sillo_framework-0.0.1a1/tests/test_frontend/test_frontend_app.py +237 -0
- sillo_framework-0.0.1a1/tests/test_graphql/__init__.py +0 -0
- sillo_framework-0.0.1a1/tests/test_graphql/test_graphql_schema.py +73 -0
- sillo_framework-0.0.1a1/tests/test_helpers/__init__.py +0 -0
- sillo_framework-0.0.1a1/tests/test_helpers/test_accepts.py +195 -0
- sillo_framework-0.0.1a1/tests/test_helpers/test_async.py +133 -0
- sillo_framework-0.0.1a1/tests/test_helpers/test_concurrency.py +43 -0
- sillo_framework-0.0.1a1/tests/test_helpers/test_deprecation.py +247 -0
- sillo_framework-0.0.1a1/tests/test_helpers/test_files.py +263 -0
- sillo_framework-0.0.1a1/tests/test_helpers/test_hashing_crypto.py +265 -0
- sillo_framework-0.0.1a1/tests/test_helpers/test_html.py +180 -0
- sillo_framework-0.0.1a1/tests/test_helpers/test_jwt.py +222 -0
- sillo_framework-0.0.1a1/tests/test_helpers/test_network.py +237 -0
- sillo_framework-0.0.1a1/tests/test_helpers/test_retry.py +190 -0
- sillo_framework-0.0.1a1/tests/test_helpers/test_strings.py +309 -0
- sillo_framework-0.0.1a1/tests/test_helpers/test_text.py +175 -0
- sillo_framework-0.0.1a1/tests/test_http/__init__.py +0 -0
- sillo_framework-0.0.1a1/tests/test_http/test_accepts_middleware.py +269 -0
- sillo_framework-0.0.1a1/tests/test_http/test_accepts_negotiation.py +190 -0
- sillo_framework-0.0.1a1/tests/test_http/test_cookie_parsing.py +114 -0
- sillo_framework-0.0.1a1/tests/test_http/test_http_client.py +1136 -0
- sillo_framework-0.0.1a1/tests/test_http/test_http_etag.py +71 -0
- sillo_framework-0.0.1a1/tests/test_http/test_http_module_exports.py +38 -0
- sillo_framework-0.0.1a1/tests/test_lifecycle/__init__.py +0 -0
- sillo_framework-0.0.1a1/tests/test_lifecycle/test_context.py +41 -0
- sillo_framework-0.0.1a1/tests/test_lifecycle/test_request_id.py +103 -0
- sillo_framework-0.0.1a1/tests/test_mail/__init__.py +0 -0
- sillo_framework-0.0.1a1/tests/test_mail/test_mail_client.py +245 -0
- sillo_framework-0.0.1a1/tests/test_mail/test_mail_service.py +127 -0
- sillo_framework-0.0.1a1/tests/test_mail/test_mail_transport.py +541 -0
- sillo_framework-0.0.1a1/tests/test_middleware/__init__.py +0 -0
- sillo_framework-0.0.1a1/tests/test_middleware/test_app_level_middleware.py +377 -0
- sillo_framework-0.0.1a1/tests/test_middleware/test_asgi_middleware.py +693 -0
- sillo_framework-0.0.1a1/tests/test_middleware/test_gzip.py +165 -0
- sillo_framework-0.0.1a1/tests/test_middleware/test_route_level_middleware.py +474 -0
- sillo_framework-0.0.1a1/tests/test_middleware/test_router_level_middleware.py +430 -0
- sillo_framework-0.0.1a1/tests/test_middleware/test_security_middleware.py +365 -0
- sillo_framework-0.0.1a1/tests/test_middleware/test_use_for_route.py +225 -0
- sillo_framework-0.0.1a1/tests/test_normalize/__init__.py +0 -0
- sillo_framework-0.0.1a1/tests/test_normalize/test_helpers.py +59 -0
- sillo_framework-0.0.1a1/tests/test_normalize/test_middleware.py +74 -0
- sillo_framework-0.0.1a1/tests/test_objects/__init__.py +0 -0
- sillo_framework-0.0.1a1/tests/test_objects/test_headers.py +491 -0
- sillo_framework-0.0.1a1/tests/test_objects/test_multidict.py +221 -0
- sillo_framework-0.0.1a1/tests/test_objects/test_url.py +175 -0
- sillo_framework-0.0.1a1/tests/test_openapi/__init__.py +0 -0
- sillo_framework-0.0.1a1/tests/test_openapi/test_openapi_config.py +242 -0
- sillo_framework-0.0.1a1/tests/test_openapi/test_openapi_spec.py +409 -0
- sillo_framework-0.0.1a1/tests/test_openapi/test_openapi_utils.py +158 -0
- sillo_framework-0.0.1a1/tests/test_pagination/__init__.py +1 -0
- sillo_framework-0.0.1a1/tests/test_pagination/test_data_handlers.py +241 -0
- sillo_framework-0.0.1a1/tests/test_pagination/test_edge_cases.py +320 -0
- sillo_framework-0.0.1a1/tests/test_pagination/test_error_handling.py +297 -0
- sillo_framework-0.0.1a1/tests/test_pagination/test_integration.py +351 -0
- sillo_framework-0.0.1a1/tests/test_pagination/test_pagination_strategies.py +539 -0
- sillo_framework-0.0.1a1/tests/test_pagination/test_paginators.py +385 -0
- sillo_framework-0.0.1a1/tests/test_pagination/test_response_classes.py +296 -0
- sillo_framework-0.0.1a1/tests/test_pagination/test_response_paginate.py +365 -0
- sillo_framework-0.0.1a1/tests/test_parameters/__init__.py +0 -0
- sillo_framework-0.0.1a1/tests/test_parameters/test_cookie.py +107 -0
- sillo_framework-0.0.1a1/tests/test_parameters/test_header.py +132 -0
- sillo_framework-0.0.1a1/tests/test_parameters/test_nested.py +218 -0
- sillo_framework-0.0.1a1/tests/test_parameters/test_openapi.py +185 -0
- sillo_framework-0.0.1a1/tests/test_parameters/test_query.py +213 -0
- sillo_framework-0.0.1a1/tests/test_permissions/__init__.py +0 -0
- sillo_framework-0.0.1a1/tests/test_permissions/test_permissions.py +550 -0
- sillo_framework-0.0.1a1/tests/test_record/__init__.py +0 -0
- sillo_framework-0.0.1a1/tests/test_record/test_backend_config.py +148 -0
- sillo_framework-0.0.1a1/tests/test_record/test_collection.py +290 -0
- sillo_framework-0.0.1a1/tests/test_record/test_events.py +334 -0
- sillo_framework-0.0.1a1/tests/test_record/test_model_features.py +131 -0
- sillo_framework-0.0.1a1/tests/test_record/test_queries.py +286 -0
- sillo_framework-0.0.1a1/tests/test_record/test_query_logging.py +238 -0
- sillo_framework-0.0.1a1/tests/test_record/test_savepoints.py +127 -0
- sillo_framework-0.0.1a1/tests/test_record/test_seeding.py +252 -0
- sillo_framework-0.0.1a1/tests/test_redis/__init__.py +0 -0
- sillo_framework-0.0.1a1/tests/test_redis/test_redis_cache.py +179 -0
- sillo_framework-0.0.1a1/tests/test_redis/test_redis_transport.py +203 -0
- sillo_framework-0.0.1a1/tests/test_requests/__init__.py +0 -0
- sillo_framework-0.0.1a1/tests/test_requests/test_basic_properties.py +481 -0
- sillo_framework-0.0.1a1/tests/test_requests/test_body_data.py +399 -0
- sillo_framework-0.0.1a1/tests/test_requests/test_cookies_auth.py +162 -0
- sillo_framework-0.0.1a1/tests/test_requests/test_path_params.py +159 -0
- sillo_framework-0.0.1a1/tests/test_requests/test_query_params.py +343 -0
- sillo_framework-0.0.1a1/tests/test_requests/test_request_flags.py +295 -0
- sillo_framework-0.0.1a1/tests/test_responses/__init__.py +0 -0
- sillo_framework-0.0.1a1/tests/test_responses/test_abort_not_found.py +119 -0
- sillo_framework-0.0.1a1/tests/test_responses/test_advanced_responses.py +294 -0
- sillo_framework-0.0.1a1/tests/test_responses/test_basic_responses.py +322 -0
- sillo_framework-0.0.1a1/tests/test_responses/test_file_responses.py +304 -0
- sillo_framework-0.0.1a1/tests/test_responses/test_headers_cookies.py +459 -0
- sillo_framework-0.0.1a1/tests/test_responses/test_redirect_streaming.py +412 -0
- sillo_framework-0.0.1a1/tests/test_responses/test_response_properties.py +282 -0
- sillo_framework-0.0.1a1/tests/test_routing/__init__.py +0 -0
- sillo_framework-0.0.1a1/tests/test_routing/test_basic_routing.py +256 -0
- sillo_framework-0.0.1a1/tests/test_routing/test_converters.py +75 -0
- sillo_framework-0.0.1a1/tests/test_routing/test_grouping.py +324 -0
- sillo_framework-0.0.1a1/tests/test_routing/test_http_methods.py +392 -0
- sillo_framework-0.0.1a1/tests/test_routing/test_nested_routes.py +263 -0
- sillo_framework-0.0.1a1/tests/test_routing/test_path_parameters.py +311 -0
- sillo_framework-0.0.1a1/tests/test_routing/test_router_wrap_asgi.py +70 -0
- sillo_framework-0.0.1a1/tests/test_security/__init__.py +0 -0
- sillo_framework-0.0.1a1/tests/test_security/test_backends.py +58 -0
- sillo_framework-0.0.1a1/tests/test_security/test_csrf.py +140 -0
- sillo_framework-0.0.1a1/tests/test_security/test_middleware.py +177 -0
- sillo_framework-0.0.1a1/tests/test_security/test_record_backend.py +72 -0
- sillo_framework-0.0.1a1/tests/test_security/test_strategies.py +154 -0
- sillo_framework-0.0.1a1/tests/test_sessions/__init__.py +1 -0
- sillo_framework-0.0.1a1/tests/test_sessions/test_base.py +389 -0
- sillo_framework-0.0.1a1/tests/test_sessions/test_file_sessions.py +237 -0
- sillo_framework-0.0.1a1/tests/test_sessions/test_integration.py +118 -0
- sillo_framework-0.0.1a1/tests/test_sessions/test_middleware.py +279 -0
- sillo_framework-0.0.1a1/tests/test_sessions/test_signed_cookies.py +178 -0
- sillo_framework-0.0.1a1/tests/test_static/__init__.py +0 -0
- sillo_framework-0.0.1a1/tests/test_static/test_static_files.py +304 -0
- sillo_framework-0.0.1a1/tests/test_templating/__init__.py +0 -0
- sillo_framework-0.0.1a1/tests/test_templating/test_template_utils.py +190 -0
- sillo_framework-0.0.1a1/tests/test_templating/test_templates.py +83 -0
- sillo_framework-0.0.1a1/tests/test_users/__init__.py +0 -0
- sillo_framework-0.0.1a1/tests/test_users/test_password.py +309 -0
- sillo_framework-0.0.1a1/tests/test_users/test_user_model.py +435 -0
- sillo_framework-0.0.1a1/tests/test_validation/__init__.py +0 -0
- sillo_framework-0.0.1a1/tests/test_validation/conftest.py +31 -0
- sillo_framework-0.0.1a1/tests/test_validation/test_body_form.py +221 -0
- sillo_framework-0.0.1a1/tests/test_validation/test_legacy_compat.py +100 -0
- sillo_framework-0.0.1a1/tests/test_validation/test_markers_unit.py +235 -0
- sillo_framework-0.0.1a1/tests/test_validation/test_openapi_generation.py +128 -0
- sillo_framework-0.0.1a1/tests/test_validation/test_params.py +178 -0
- sillo_framework-0.0.1a1/tests/test_validation/test_request_model.py +103 -0
- sillo_framework-0.0.1a1/tests/test_validation/test_response_model.py +93 -0
- sillo_framework-0.0.1a1/tests/test_websockets/__init__.py +3 -0
- sillo_framework-0.0.1a1/tests/test_websockets/test_channel_history.py +400 -0
- sillo_framework-0.0.1a1/tests/test_websockets/test_consumer_encodings.py +509 -0
- sillo_framework-0.0.1a1/tests/test_websockets/test_group_removal.py +115 -0
- sillo_framework-0.0.1a1/tests/test_websockets/test_history_contract.py +146 -0
- sillo_framework-0.0.1a1/tests/test_websockets/test_websocket_consumers.py +255 -0
- sillo_framework-0.0.1a1/tests/test_websockets/test_websocket_errors.py +216 -0
- sillo_framework-0.0.1a1/tests/test_websockets/test_websocket_groups.py +398 -0
- sillo_framework-0.0.1a1/tests/test_websockets/test_websocket_protocol.py +497 -0
- sillo_framework-0.0.1a1/tests/test_websockets/test_websocket_routing.py +251 -0
- sillo_framework-0.0.1a1/tests/test_websockets/test_websocket_state_machine.py +218 -0
- sillo_framework-0.0.1a1/tests/test_work/__init__.py +0 -0
- sillo_framework-0.0.1a1/tests/test_work/test_background.py +177 -0
- sillo_framework-0.0.1a1/tests/test_work/test_events.py +175 -0
- sillo_framework-0.0.1a1/tests/test_work/test_job_dispatch.py +133 -0
- sillo_framework-0.0.1a1/tests/test_work/test_job_queue.py +143 -0
- sillo_framework-0.0.1a1/tests/test_work/test_memory_backend.py +133 -0
- sillo_framework-0.0.1a1/tests/test_work/test_queue.py +311 -0
- sillo_framework-0.0.1a1/tests/test_work/test_queue_worker.py +165 -0
- sillo_framework-0.0.1a1/tests/test_work/test_routes.py +163 -0
- sillo_framework-0.0.1a1/tests/test_work/test_scheduler.py +150 -0
- sillo_framework-0.0.1a1/tests/test_work/test_scheduler_middleware.py +401 -0
- sillo_framework-0.0.1a1/tests/test_work/test_task.py +176 -0
- sillo_framework-0.0.1a1/tests/test_work/test_work_di.py +72 -0
- sillo_framework-0.0.1a1/tests/test_work/work_jobs.py +38 -0
- 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,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.
|