sillo-framework 0.3.2.dev1__tar.gz → 1.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/CHANGELOG.md +133 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/PKG-INFO +308 -61
- sillo_framework-1.0.0/README.md +587 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/pyproject.toml +32 -8
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/__init__.py +12 -7
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/__main__.py +79 -20
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/application.py +281 -157
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/core/converters.py +117 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/core/dependencies/base.py +98 -20
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/core/error/handler.py +53 -39
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/core/http/context.py +11 -2
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/core/routing/__init__.py +5 -0
- sillo_framework-1.0.0/sillo/core/routing/_utils.py +193 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/core/routing/base.py +3 -3
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/core/routing/grouping.py +27 -8
- sillo_framework-1.0.0/sillo/core/routing/introspect.py +131 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/core/routing/router.py +384 -69
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/core/routing/websocket.py +12 -2
- sillo_framework-1.0.0/sillo/dev.py +218 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/events/types.py +2 -2
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/exception_handler.py +8 -1
- sillo_framework-1.0.0/sillo/handlers/error_report.py +541 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/handlers/not_found.py +55 -25
- sillo_framework-1.0.0/sillo/installables.py +32 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/mail/__init__.py +2 -1
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/mail/client.py +22 -9
- sillo_framework-1.0.0/sillo/middleware/define.py +264 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/record/__init__.py +2 -1
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/record/manager.py +33 -12
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/security/csrf/_middleware.py +12 -6
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/storage/__init__.py +2 -1
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/storage/drivers/local.py +3 -3
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/storage/storage.py +27 -17
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/work/__init__.py +31 -17
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/work/dependency.py +7 -3
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/work/scheduler/__init__.py +2 -1
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/work/scheduler/manager.py +21 -8
- sillo_framework-1.0.0/tests/test_applications/test_builtin_installables.py +59 -0
- sillo_framework-1.0.0/tests/test_applications/test_installables.py +80 -0
- sillo_framework-1.0.0/tests/test_auth/test_apikey_backend_manager_mode.py +101 -0
- sillo_framework-1.0.0/tests/test_auth/test_apikey_user_mixin.py +104 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_auth/test_session_guard.py +91 -0
- sillo_framework-1.0.0/tests/test_auth/test_session_user_mixin.py +147 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_console/test_cli.py +99 -11
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_dependencies/test_dependency_injection.py +66 -66
- sillo_framework-1.0.0/tests/test_dependencies/test_dependency_overrides.py +238 -0
- sillo_framework-1.0.0/tests/test_dev.py +283 -0
- sillo_framework-1.0.0/tests/test_exception_handlers/test_error_report.py +431 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_exception_handlers/test_not_found_handler.py +10 -5
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_exception_handlers/test_server_error_debug.py +17 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_http/test_http_client.py +10 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_middleware/test_asgi_middleware.py +36 -53
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_middleware/test_raw_asgi_layers.py +124 -8
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_middleware/test_security_middleware.py +6 -0
- sillo_framework-1.0.0/tests/test_objects/test_common.py +70 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_parameters/test_nested.py +12 -12
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_record/test_backend_config.py +63 -1
- sillo_framework-1.0.0/tests/test_record/test_manager_lifecycle.py +215 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_record/test_savepoints.py +20 -1
- sillo_framework-1.0.0/tests/test_record/test_scopes.py +117 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_responses/test_abort_not_found.py +6 -4
- sillo_framework-1.0.0/tests/test_routing/test_grouping_coverage.py +213 -0
- sillo_framework-1.0.0/tests/test_routing/test_route_ordering.py +292 -0
- sillo_framework-1.0.0/tests/test_routing/test_router_app_options.py +592 -0
- sillo_framework-1.0.0/tests/test_routing/test_router_use_raw_asgi.py +149 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_security/test_backends.py +6 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_security/test_csrf_regressions.py +28 -0
- sillo_framework-1.0.0/tests/test_security/test_ratelimit_config.py +114 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_testclient/test_client_lifecycle.py +14 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_validation/test_body_form.py +3 -3
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_validation/test_request_model.py +1 -1
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_websockets/test_websocket_dependencies.py +44 -13
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_websockets/test_websocket_routing.py +42 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_work/test_routes.py +3 -3
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_work/test_work_di.py +4 -4
- sillo_framework-0.3.2.dev1/.github/CODE_OF_CONDUCT.md +0 -30
- sillo_framework-0.3.2.dev1/.github/CONTRIBUTING.MD +0 -207
- sillo_framework-0.3.2.dev1/.github/ISSUE_TEMPLATE/bug_report.md +0 -61
- sillo_framework-0.3.2.dev1/.github/ISSUE_TEMPLATE/feature_request.md +0 -56
- sillo_framework-0.3.2.dev1/.github/dependabot.yml +0 -6
- sillo_framework-0.3.2.dev1/.github/funding.yml +0 -1
- sillo_framework-0.3.2.dev1/.github/workflows/coverage.yml +0 -72
- sillo_framework-0.3.2.dev1/.github/workflows/format-code.yml +0 -43
- sillo_framework-0.3.2.dev1/.github/workflows/lint.yaml +0 -48
- sillo_framework-0.3.2.dev1/.github/workflows/merge-to-main.yml +0 -58
- sillo_framework-0.3.2.dev1/.github/workflows/release.yml +0 -108
- sillo_framework-0.3.2.dev1/.github/workflows/run-tests.yaml +0 -88
- sillo_framework-0.3.2.dev1/.github/workflows/triage.yml +0 -20
- sillo_framework-0.3.2.dev1/.github/workflows/type-check.yaml +0 -44
- sillo_framework-0.3.2.dev1/README.md +0 -343
- sillo_framework-0.3.2.dev1/V1.md +0 -191
- sillo_framework-0.3.2.dev1/benchmarks/.gitignore +0 -8
- sillo_framework-0.3.2.dev1/benchmarks/README.md +0 -352
- sillo_framework-0.3.2.dev1/benchmarks/pyproject.toml +0 -51
- sillo_framework-0.3.2.dev1/benchmarks/results/.gitkeep +0 -0
- sillo_framework-0.3.2.dev1/benchmarks/sillo_bench/__init__.py +0 -10
- sillo_framework-0.3.2.dev1/benchmarks/sillo_bench/__main__.py +0 -8
- sillo_framework-0.3.2.dev1/benchmarks/sillo_bench/apps/__init__.py +0 -6
- sillo_framework-0.3.2.dev1/benchmarks/sillo_bench/apps/django_app.py +0 -175
- sillo_framework-0.3.2.dev1/benchmarks/sillo_bench/apps/fastapi_app.py +0 -68
- sillo_framework-0.3.2.dev1/benchmarks/sillo_bench/apps/flask_app.py +0 -110
- sillo_framework-0.3.2.dev1/benchmarks/sillo_bench/apps/sillo_app.py +0 -57
- sillo_framework-0.3.2.dev1/benchmarks/sillo_bench/apps/starlette_app.py +0 -82
- sillo_framework-0.3.2.dev1/benchmarks/sillo_bench/cli.py +0 -382
- sillo_framework-0.3.2.dev1/benchmarks/sillo_bench/environment.py +0 -139
- sillo_framework-0.3.2.dev1/benchmarks/sillo_bench/loadtools.py +0 -434
- sillo_framework-0.3.2.dev1/benchmarks/sillo_bench/payloads.py +0 -57
- sillo_framework-0.3.2.dev1/benchmarks/sillo_bench/report.py +0 -379
- sillo_framework-0.3.2.dev1/benchmarks/sillo_bench/runner.py +0 -426
- sillo_framework-0.3.2.dev1/benchmarks/sillo_bench/scenarios.py +0 -103
- sillo_framework-0.3.2.dev1/coverage.json +0 -1
- sillo_framework-0.3.2.dev1/docs/.github/workflows/ci.yml +0 -38
- sillo_framework-0.3.2.dev1/docs/.github/workflows/deploy-docs-preview.yml +0 -133
- sillo_framework-0.3.2.dev1/docs/.github/workflows/deploy-docs.yml +0 -60
- sillo_framework-0.3.2.dev1/docs/.github/workflows/publish-package.yml +0 -61
- sillo_framework-0.3.2.dev1/docs/.gitignore +0 -26
- sillo_framework-0.3.2.dev1/docs/.prettierrc +0 -9
- sillo_framework-0.3.2.dev1/docs/README.md +0 -69
- sillo_framework-0.3.2.dev1/docs/bun.lock +0 -1800
- sillo_framework-0.3.2.dev1/docs/docs/README.md +0 -49
- sillo_framework-0.3.2.dev1/docs/docs/astro.config.mjs +0 -762
- sillo_framework-0.3.2.dev1/docs/docs/package.json +0 -24
- sillo_framework-0.3.2.dev1/docs/docs/public/favicon.svg +0 -1
- sillo_framework-0.3.2.dev1/docs/docs/public/logo-white.svg +0 -1
- sillo_framework-0.3.2.dev1/docs/docs/public/logo.ico +0 -0
- sillo_framework-0.3.2.dev1/docs/docs/public/logo.png +0 -0
- sillo_framework-0.3.2.dev1/docs/docs/src/assets/houston.webp +0 -0
- sillo_framework-0.3.2.dev1/docs/docs/src/assets/logo-black.svg +0 -1
- sillo_framework-0.3.2.dev1/docs/docs/src/assets/logo-white.svg +0 -1
- sillo_framework-0.3.2.dev1/docs/docs/src/assets/placeholder.svg +0 -38
- sillo_framework-0.3.2.dev1/docs/docs/src/assets/placeholder169.svg +0 -40
- sillo_framework-0.3.2.dev1/docs/docs/src/components/Header.astro +0 -405
- sillo_framework-0.3.2.dev1/docs/docs/src/components/MarkdownContent.astro +0 -85
- sillo_framework-0.3.2.dev1/docs/docs/src/components/MermaidRenderer.astro +0 -398
- sillo_framework-0.3.2.dev1/docs/docs/src/components/PageFrame.astro +0 -30
- sillo_framework-0.3.2.dev1/docs/docs/src/components/SectionNav.astro +0 -309
- sillo_framework-0.3.2.dev1/docs/docs/src/components/Sidebar.astro +0 -112
- sillo_framework-0.3.2.dev1/docs/docs/src/components/SiteFooter.astro +0 -399
- sillo_framework-0.3.2.dev1/docs/docs/src/components/VersionSwitcher.astro +0 -206
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/packages/graphql/context.md +0 -162
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/packages/graphql/errors.md +0 -177
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/packages/graphql/index.md +0 -124
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/packages/graphql/limits.md +0 -179
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/packages/graphql/loaders.md +0 -159
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/packages/graphql/observability.md +0 -154
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/packages/graphql/persisted.md +0 -146
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/packages/graphql/resolvers.md +0 -195
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/packages/graphql/subscriptions.md +0 -191
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/packages/graphql/testing.md +0 -223
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/packages/graphql/transport.md +0 -186
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/packages/index.md +0 -61
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/packages/warder/actions.md +0 -101
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/packages/warder/auth.md +0 -130
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/packages/warder/cli.md +0 -103
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/packages/warder/columns.md +0 -115
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/packages/warder/dashboard.md +0 -89
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/packages/warder/declarations.md +0 -142
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/packages/warder/detail.md +0 -86
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/packages/warder/embedding.md +0 -94
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/packages/warder/filters.md +0 -81
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/packages/warder/forms.md +0 -146
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/packages/warder/images/dashboard.png +0 -0
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/packages/warder/images/detail.png +0 -0
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/packages/warder/images/form.png +0 -0
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/packages/warder/images/list.png +0 -0
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/packages/warder/images/login.png +0 -0
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/packages/warder/images/many-to-many.png +0 -0
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/packages/warder/images/money.png +0 -0
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/packages/warder/images/page.png +0 -0
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/packages/warder/images/panels.png +0 -0
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/packages/warder/images/picker.png +0 -0
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/packages/warder/images/results.png +0 -0
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/packages/warder/images/staff.png +0 -0
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/packages/warder/index.md +0 -113
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/packages/warder/lists.md +0 -137
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/packages/warder/pages.md +0 -74
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/packages/warder/permissions.md +0 -161
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/packages/warder/quickstart.md +0 -101
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/packages/warder/reference.md +0 -151
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/packages/warder/relations.md +0 -101
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/packages/warder/resources.md +0 -102
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/packages/warder/theming.md +0 -104
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/packages/warder/widgets.md +0 -89
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/packages/wire/backlog.md +0 -169
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/packages/wire/consumers.md +0 -151
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/packages/wire/hub.md +0 -158
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/packages/wire/index.md +0 -127
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/packages/wire/peers.md +0 -148
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/packages/wire/presence.md +0 -132
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/packages/wire/reference.md +0 -178
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/packages/wire/testing.md +0 -181
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/reference/components.mdx +0 -180
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/reference/plugin-api.md +0 -116
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/showcase/splash/banner.mdx +0 -37
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/showcase/splash/centered-top.mdx +0 -37
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/showcase/splash/centered.mdx +0 -37
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/showcase/splash/split-left.mdx +0 -37
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/showcase/splash/split-right.mdx +0 -37
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/showcase/splash-pages.mdx +0 -74
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/showcase/starlight-components.mdx +0 -214
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/showcase/typography.md +0 -104
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/advanced/admin.md +0 -751
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/advanced/application-lifecycle.md +0 -904
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/advanced/architecture-overview.md +0 -813
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/advanced/atlas.md +0 -975
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/advanced/auth-backends.md +0 -1001
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/advanced/authentication.md +0 -983
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/advanced/cache.md +0 -815
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/advanced/change-impact.md +0 -920
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/advanced/configuration.md +0 -839
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/advanced/console.md +0 -1046
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/advanced/context-binding.md +0 -152
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/advanced/debugging.md +0 -615
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/advanced/decisions.md +0 -757
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/advanced/dependency-injection.md +0 -883
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/advanced/events.md +0 -898
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/advanced/exception-handling.md +0 -1674
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/advanced/extending.md +0 -1355
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/advanced/glossary.md +0 -1535
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/advanced/hashing.md +0 -1024
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/advanced/helpers.md +0 -1192
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/advanced/http-correctness.md +0 -1505
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/advanced/http-request.md +0 -1597
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/advanced/http-response.md +0 -1903
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/advanced/index.md +0 -150
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/advanced/inertia.md +0 -849
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/advanced/mail.md +0 -816
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/advanced/middleware.md +0 -1864
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/advanced/oauth.md +0 -984
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/advanced/openapi.md +0 -1131
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/advanced/pagination.md +0 -603
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/advanced/parameters.md +0 -1039
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/advanced/permissions.md +0 -991
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/advanced/record-factories.md +0 -1106
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/advanced/record-migrations.md +0 -1050
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/advanced/record-models.md +0 -1082
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/advanced/record-queries.md +0 -1043
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/advanced/record-transactions.md +0 -978
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/advanced/records-orm.md +0 -613
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/advanced/routing.md +0 -1475
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/advanced/security.md +0 -811
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/advanced/sessions.md +0 -848
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/advanced/start.md +0 -810
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/advanced/storage.md +0 -414
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/advanced/templating.md +0 -621
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/advanced/test-client.md +0 -642
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/advanced/types-and-encoding.md +0 -922
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/advanced/users.md +0 -1174
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/advanced/validation.md +0 -1177
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/advanced/websockets.md +0 -878
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/advanced/work-background.md +0 -1227
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/advanced/work-queues.md +0 -874
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/advanced/work-scheduler.md +0 -1250
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/advanced/work-tasks.md +0 -857
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/cli/arguments.md +0 -221
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/cli/custom-commands.md +0 -208
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/cli/database.md +0 -231
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/cli/discovery.md +0 -98
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/cli/framework-commands.md +0 -97
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/cli/index.md +0 -120
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/cli/output.md +0 -201
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/cli/prompts.md +0 -171
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/cli/queues.md +0 -184
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/cli/scheduler.md +0 -124
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/cli/standalone-consoles.md +0 -280
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/cli/styling.md +0 -150
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/cli/users.md +0 -189
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/api-keys.md +0 -160
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/authentication.md +0 -418
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/cache.mdx +0 -437
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/coming-from.md +0 -225
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/concurrency.md +0 -399
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/configuration.md +0 -705
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/console.md +0 -632
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/content-negotiation.md +0 -577
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/cookies.mdx +0 -381
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/cors.md +0 -507
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/csrf.md +0 -476
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/dependency-injection.md +0 -452
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/ecosystem.md +0 -215
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/environment.md +0 -202
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/error-handling.mdx +0 -381
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/events.mdx +0 -551
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/faq.md +0 -257
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/file-upload.md +0 -189
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/frontend.md +0 -53
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/graphql.md +0 -205
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/handlers.md +0 -472
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/hashing.md +0 -1055
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/headers.mdx +0 -440
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/helpers/async.mdx +0 -453
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/helpers/crypto.mdx +0 -378
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/helpers/deprecation.mdx +0 -377
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/helpers/files.mdx +0 -377
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/helpers/hashing.mdx +0 -379
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/helpers/html.mdx +0 -399
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/helpers/index.mdx +0 -276
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/helpers/jwt.mdx +0 -388
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/helpers/network.mdx +0 -434
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/helpers/retry.mdx +0 -378
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/helpers/strings.mdx +0 -417
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/helpers/text.mdx +0 -370
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/http/client.md +0 -576
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/inertia/assets.md +0 -135
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/inertia/forms.md +0 -158
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/inertia/index.md +0 -108
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/inertia/pages.md +0 -204
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/inertia/start.mdx +0 -157
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/inertia/structure.md +0 -145
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/installation.mdx +0 -256
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/introduction.md +0 -319
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/jwt-auth.md +0 -335
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/middleware.md +0 -435
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/oauth/index.md +0 -158
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/oauth/openapi.md +0 -266
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/oauth/persisting-logins.md +0 -212
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/oauth/providers.md +0 -198
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/oauth/security.md +0 -163
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/openapi/authentication-documentation.md +0 -834
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/openapi/basic-config.png +0 -0
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/openapi/bearerAuth.png +0 -0
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/openapi/custom.png +0 -0
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/openapi/custom2.png +0 -0
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/openapi/customizing-openapi-configuration.md +0 -753
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/openapi/description.png +0 -0
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/openapi/documentation-ui.md +0 -347
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/openapi/headers.png +0 -0
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/openapi/index.md +0 -723
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/openapi/multi-response.png +0 -0
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/openapi/path-params.png +0 -0
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/openapi/query-params.png +0 -0
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/openapi/request-body.png +0 -0
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/openapi/request-parameters.md +0 -646
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/openapi/request-schemas.mdx +0 -525
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/openapi/response-list.png +0 -0
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/openapi/response-models.md +0 -614
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/openapi/response.png +0 -0
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/pagination.mdx +0 -535
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/permissions.md +0 -515
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/philosophy.md +0 -219
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/protecting-routes.md +0 -418
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/rate-limiting.md +0 -262
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/record/casting-collections.mdx +0 -413
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/record/exceptions-pydantic.mdx +0 -454
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/record/index.mdx +0 -421
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/record/migrations.mdx +0 -362
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/record/models.mdx +0 -566
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/record/pagination.mdx +0 -469
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/record/scopes-events.mdx +0 -452
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/record/transactions-factories.mdx +0 -453
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/request-info.md +0 -460
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/request-inputs.md +0 -157
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/request-lifecycle.md +0 -501
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/request-parameters.mdx +0 -413
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/routers-and-subapps.md +0 -277
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/routing.mdx +0 -1234
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/security.md +0 -356
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/sending-responses.mdx +0 -557
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/serialization.md +0 -371
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/services/mail.mdx +0 -460
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/session-auth.md +0 -429
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/sessions.md +0 -591
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/start/admin.md +0 -316
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/start/authentication.md +0 -346
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/start/background-work.md +0 -391
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/start/console.md +0 -389
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/start/database.md +0 -374
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/start/deployment.md +0 -338
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/start/index.mdx +0 -434
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/start/structure.md +0 -468
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/start/testing.md +0 -336
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/startups-and-shutdowns.mdx +0 -428
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/static-files.mdx +0 -349
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/storage.mdx +0 -654
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/streaming-response.mdx +0 -491
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/templating/advanced.mdx +0 -484
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/templating/index.mdx +0 -676
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/url-normalization.md +0 -183
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/users.md +0 -484
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/validation/errors.md +0 -394
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/validation/forms-and-files.md +0 -465
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/validation/index.md +0 -367
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/validation/openapi.md +0 -482
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/validation/parameters.md +0 -489
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/validation/request-bodies.md +0 -580
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/validation/response-models.md +0 -440
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/websockets/channels.mdx +0 -435
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/websockets/consumer.mdx +0 -457
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/websockets/events.mdx +0 -464
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/websockets/groups.mdx +0 -434
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/websockets/index.mdx +0 -407
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/work/background.mdx +0 -432
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/work/events.mdx +0 -451
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/work/index.mdx +0 -441
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/work/jobs.mdx +0 -727
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/work/queue.mdx +0 -1270
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/guides/work/scheduler.mdx +0 -524
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/orm/admin-customising.md +0 -220
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/orm/admin-permissions.md +0 -253
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/orm/admin-registering.md +0 -198
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/orm/admin.md +0 -182
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/orm/aggregation.md +0 -247
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/orm/bulk.md +0 -167
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/orm/casting.md +0 -179
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/orm/collections.md +0 -152
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/orm/configuration.md +0 -170
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/orm/connections.md +0 -212
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/orm/eager-loading.md +0 -213
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/orm/events.md +0 -158
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/orm/exceptions.md +0 -148
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/orm/factories.md +0 -215
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/orm/field-reference.md +0 -305
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/orm/fields.md +0 -190
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/orm/filtering.md +0 -248
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/orm/index.md +0 -135
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/orm/lookups.md +0 -252
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/orm/mass-assignment.md +0 -144
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/orm/meta.md +0 -295
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/orm/migrations-applying.md +0 -177
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/orm/migrations-programmatic.md +0 -201
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/orm/migrations.md +0 -169
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/orm/mixins.md +0 -196
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/orm/models.md +0 -175
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/orm/pagination.md +0 -153
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/orm/pydantic.md +0 -156
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/orm/queries.md +0 -181
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/orm/queryset.md +0 -315
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/orm/raw-sql.md +0 -204
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/orm/relationships.md +0 -294
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/orm/scopes.md +0 -174
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/orm/seeding.md +0 -190
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/orm/setup.md +0 -166
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/orm/transactions.md +0 -202
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/orm/values.md +0 -204
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/pydantic/config.md +0 -236
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/pydantic/errors.md +0 -245
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/pydantic/fields.md +0 -257
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/pydantic/index.md +0 -105
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/pydantic/models.md +0 -249
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/pydantic/nested.md +0 -220
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/pydantic/openapi.md +0 -252
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/pydantic/orm-bridge.md +0 -250
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/pydantic/parameters.md +0 -285
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/pydantic/patterns.md +0 -295
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/pydantic/request-models.md +0 -254
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/pydantic/response-models.md +0 -242
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/pydantic/serialization.md +0 -245
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/pydantic/types.md +0 -308
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/pydantic/validators.md +0 -296
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/start/after-creating.mdx +0 -145
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/start/create-app.md +0 -171
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/start/custom-starters.md +0 -157
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/start/errors.md +0 -147
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/start/index.md +0 -91
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/start/install.mdx +0 -159
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/start/internals.md +0 -177
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/start/naming.md +0 -135
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/start/package-managers.md +0 -156
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/start/personalisation.md +0 -124
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/start/secrets.md +0 -122
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v0.x/start/starters.md +0 -148
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/advanced/application-lifecycle.md +0 -921
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/advanced/architecture-overview.md +0 -814
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/advanced/atlas.md +0 -975
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/advanced/auth-backends.md +0 -1009
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/advanced/authentication.md +0 -1031
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/advanced/cache.md +0 -815
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/advanced/change-impact.md +0 -917
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/advanced/configuration.md +0 -773
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/advanced/console.md +0 -1046
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/advanced/context-binding.md +0 -152
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/advanced/debugging.md +0 -621
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/advanced/decisions.md +0 -761
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/advanced/dependency-injection.md +0 -885
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/advanced/events.md +0 -898
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/advanced/exception-handling.md +0 -1714
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/advanced/extending.md +0 -1353
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/advanced/glossary.md +0 -1478
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/advanced/hashing.md +0 -1027
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/advanced/helpers.md +0 -1192
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/advanced/http-correctness.md +0 -1571
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/advanced/http-request.md +0 -1627
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/advanced/http-response.md +0 -1749
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/advanced/index.md +0 -148
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/advanced/inertia.md +0 -875
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/advanced/mail.md +0 -818
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/advanced/middleware.md +0 -1998
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/advanced/oauth.md +0 -988
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/advanced/openapi.md +0 -1131
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/advanced/pagination.md +0 -605
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/advanced/parameters.md +0 -1055
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/advanced/permissions.md +0 -995
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/advanced/record-factories.md +0 -1115
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/advanced/record-migrations.md +0 -1050
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/advanced/record-models.md +0 -1083
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/advanced/record-queries.md +0 -1043
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/advanced/record-transactions.md +0 -983
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/advanced/records-orm.md +0 -613
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/advanced/routing.md +0 -1479
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/advanced/security.md +0 -875
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/advanced/sessions.md +0 -888
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/advanced/start.md +0 -810
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/advanced/storage.md +0 -414
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/advanced/test-client.md +0 -644
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/advanced/types-and-encoding.md +0 -924
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/advanced/users.md +0 -1162
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/advanced/validation.md +0 -1185
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/advanced/websockets.md +0 -482
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/advanced/work-background.md +0 -1231
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/advanced/work-queues.md +0 -874
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/advanced/work-scheduler.md +0 -1253
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/advanced/work-tasks.md +0 -857
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/cli/arguments.md +0 -221
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/cli/custom-commands.md +0 -208
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/cli/database.md +0 -231
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/cli/discovery.md +0 -98
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/cli/framework-commands.md +0 -97
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/cli/index.md +0 -120
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/cli/output.md +0 -201
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/cli/prompts.md +0 -171
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/cli/queues.md +0 -184
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/cli/scheduler.md +0 -124
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/cli/standalone-consoles.md +0 -280
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/cli/styling.md +0 -150
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/cli/users.md +0 -189
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/api-keys.md +0 -162
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/authentication.md +0 -426
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/cache.mdx +0 -437
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/coming-from.md +0 -223
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/concurrency.md +0 -405
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/configuration.md +0 -705
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/console.md +0 -632
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/content-negotiation.md +0 -584
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/cookies.mdx +0 -391
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/cors.md +0 -507
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/csrf.md +0 -388
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/dependency-injection.md +0 -471
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/ecosystem.md +0 -173
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/environment.md +0 -202
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/error-handling.mdx +0 -391
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/events.mdx +0 -553
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/faq.md +0 -247
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/file-upload.md +0 -199
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/frontend.md +0 -53
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/handlers.md +0 -536
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/hashing.md +0 -1062
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/headers.mdx +0 -458
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/helpers/async.mdx +0 -453
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/helpers/crypto.mdx +0 -381
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/helpers/deprecation.mdx +0 -377
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/helpers/files.mdx +0 -382
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/helpers/hashing.mdx +0 -382
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/helpers/html.mdx +0 -398
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/helpers/index.mdx +0 -276
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/helpers/jwt.mdx +0 -392
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/helpers/network.mdx +0 -435
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/helpers/retry.mdx +0 -380
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/helpers/strings.mdx +0 -422
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/helpers/text.mdx +0 -372
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/http/client.md +0 -576
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/inertia/assets.md +0 -135
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/inertia/forms.md +0 -164
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/inertia/index.md +0 -110
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/inertia/pages.md +0 -212
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/inertia/start.mdx +0 -157
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/inertia/structure.md +0 -146
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/installation.mdx +0 -256
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/introduction.md +0 -314
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/jwt-auth.md +0 -340
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/middleware.md +0 -446
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/oauth/index.md +0 -160
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/oauth/openapi.md +0 -266
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/oauth/persisting-logins.md +0 -224
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/oauth/providers.md +0 -199
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/oauth/security.md +0 -163
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/openapi/authentication-documentation.md +0 -865
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/openapi/basic-config.png +0 -0
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/openapi/bearerAuth.png +0 -0
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/openapi/custom.png +0 -0
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/openapi/custom2.png +0 -0
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/openapi/customizing-openapi-configuration.md +0 -761
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/openapi/description.png +0 -0
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/openapi/documentation-ui.md +0 -347
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/openapi/headers.png +0 -0
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/openapi/index.md +0 -746
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/openapi/multi-response.png +0 -0
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/openapi/path-params.png +0 -0
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/openapi/query-params.png +0 -0
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/openapi/request-body.png +0 -0
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/openapi/request-parameters.md +0 -663
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/openapi/request-schemas.mdx +0 -536
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/openapi/response-list.png +0 -0
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/openapi/response-models.md +0 -626
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/openapi/response.png +0 -0
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/pagination.mdx +0 -535
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/permissions.md +0 -518
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/philosophy.md +0 -218
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/protecting-routes.md +0 -432
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/rate-limiting.md +0 -266
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/request-info.md +0 -498
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/request-inputs.md +0 -166
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/request-lifecycle.md +0 -510
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/request-parameters.mdx +0 -447
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/routers-and-subapps.md +0 -282
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/routing.mdx +0 -1270
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/security.md +0 -359
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/sending-responses.mdx +0 -493
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/serialization.md +0 -386
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/services/mail.mdx +0 -465
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/session-auth.md +0 -436
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/sessions.md +0 -607
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/start/authentication.md +0 -349
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/start/background-work.md +0 -393
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/start/console.md +0 -389
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/start/database.md +0 -370
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/start/deployment.md +0 -340
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/start/index.mdx +0 -426
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/start/structure.md +0 -430
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/start/testing.md +0 -338
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/startups-and-shutdowns.mdx +0 -431
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/static-files.mdx +0 -353
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/storage.mdx +0 -657
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/streaming-response.mdx +0 -505
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/url-normalization.md +0 -183
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/users.md +0 -484
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/validation/errors.md +0 -400
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/validation/forms-and-files.md +0 -471
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/validation/index.md +0 -369
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/validation/openapi.md +0 -491
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/validation/parameters.md +0 -498
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/validation/request-bodies.md +0 -590
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/validation/response-models.md +0 -454
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/websockets/events.mdx +0 -478
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/websockets/index.mdx +0 -489
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/work/background.mdx +0 -438
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/work/events.mdx +0 -453
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/work/index.mdx +0 -443
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/work/jobs.mdx +0 -729
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/work/queue.mdx +0 -1276
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/guides/work/scheduler.mdx +0 -526
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/orm/aggregation.md +0 -247
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/orm/bulk.md +0 -167
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/orm/casting.md +0 -179
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/orm/collections.md +0 -152
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/orm/configuration.md +0 -170
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/orm/connections.md +0 -216
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/orm/eager-loading.md +0 -212
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/orm/events.md +0 -158
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/orm/exceptions.md +0 -150
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/orm/factories.md +0 -215
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/orm/field-reference.md +0 -305
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/orm/fields.md +0 -191
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/orm/filtering.md +0 -248
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/orm/index.md +0 -134
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/orm/lookups.md +0 -252
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/orm/mass-assignment.md +0 -148
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/orm/meta.md +0 -296
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/orm/migrations-applying.md +0 -177
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/orm/migrations-programmatic.md +0 -201
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/orm/migrations.md +0 -169
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/orm/mixins.md +0 -196
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/orm/models.md +0 -176
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/orm/pagination.md +0 -150
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/orm/pydantic.md +0 -158
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/orm/queries.md +0 -185
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/orm/queryset.md +0 -315
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/orm/raw-sql.md +0 -204
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/orm/relationships.md +0 -294
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/orm/scopes.md +0 -174
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/orm/seeding.md +0 -190
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/orm/setup.md +0 -169
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/orm/transactions.md +0 -202
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/orm/values.md +0 -204
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/pydantic/config.md +0 -236
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/pydantic/errors.md +0 -249
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/pydantic/fields.md +0 -257
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/pydantic/index.md +0 -107
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/pydantic/models.md +0 -249
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/pydantic/nested.md +0 -220
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/pydantic/openapi.md +0 -252
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/pydantic/orm-bridge.md +0 -254
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/pydantic/parameters.md +0 -287
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/pydantic/patterns.md +0 -297
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/pydantic/request-models.md +0 -264
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/pydantic/response-models.md +0 -253
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/pydantic/serialization.md +0 -249
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/pydantic/types.md +0 -308
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/pydantic/validators.md +0 -296
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/start/after-creating.mdx +0 -148
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/start/create-app.md +0 -171
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/start/custom-starters.md +0 -157
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/start/errors.md +0 -147
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/start/index.md +0 -91
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/start/install.mdx +0 -159
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/start/internals.md +0 -178
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/start/naming.md +0 -135
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/start/package-managers.md +0 -156
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/start/personalisation.md +0 -124
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/start/secrets.md +0 -122
- sillo_framework-0.3.2.dev1/docs/docs/src/content/docs/v1.0/start/starters.md +0 -140
- sillo_framework-0.3.2.dev1/docs/docs/src/content.config.ts +0 -45
- sillo_framework-0.3.2.dev1/docs/docs/src/plugins/remark-mermaid.mjs +0 -43
- sillo_framework-0.3.2.dev1/docs/docs/src/styles/global.css +0 -296
- sillo_framework-0.3.2.dev1/docs/docs/src/versions.mjs +0 -168
- sillo_framework-0.3.2.dev1/docs/docs/tsconfig.json +0 -5
- sillo_framework-0.3.2.dev1/docs/package.json +0 -24
- sillo_framework-0.3.2.dev1/docs/packages/lucode-starlight/README.md +0 -213
- sillo_framework-0.3.2.dev1/docs/packages/lucode-starlight/components/custom/ContainerSection.astro +0 -58
- sillo_framework-0.3.2.dev1/docs/packages/lucode-starlight/components/custom/LinkButton.astro +0 -141
- sillo_framework-0.3.2.dev1/docs/packages/lucode-starlight/components/custom/dropdown/Dropdown.astro +0 -616
- sillo_framework-0.3.2.dev1/docs/packages/lucode-starlight/components/custom/dropdown/DropdownContent.astro +0 -179
- sillo_framework-0.3.2.dev1/docs/packages/lucode-starlight/components/custom/dropdown/DropdownItem.astro +0 -72
- sillo_framework-0.3.2.dev1/docs/packages/lucode-starlight/components/custom/dropdown/DropdownLabel.astro +0 -31
- sillo_framework-0.3.2.dev1/docs/packages/lucode-starlight/components/custom/dropdown/DropdownSeparator.astro +0 -18
- sillo_framework-0.3.2.dev1/docs/packages/lucode-starlight/components/custom/dropdown/DropdownShortcut.astro +0 -24
- sillo_framework-0.3.2.dev1/docs/packages/lucode-starlight/components/custom/dropdown/DropdownTrigger.astro +0 -54
- sillo_framework-0.3.2.dev1/docs/packages/lucode-starlight/components/custom/dropdown/index.ts +0 -29
- sillo_framework-0.3.2.dev1/docs/packages/lucode-starlight/components/overrides/ContentPanel.astro +0 -1
- sillo_framework-0.3.2.dev1/docs/packages/lucode-starlight/components/overrides/Footer.astro +0 -54
- sillo_framework-0.3.2.dev1/docs/packages/lucode-starlight/components/overrides/Header.astro +0 -92
- sillo_framework-0.3.2.dev1/docs/packages/lucode-starlight/components/overrides/Hero.astro +0 -307
- sillo_framework-0.3.2.dev1/docs/packages/lucode-starlight/components/overrides/MarkdownContent.astro +0 -17
- sillo_framework-0.3.2.dev1/docs/packages/lucode-starlight/components/overrides/PageFrame.astro +0 -121
- sillo_framework-0.3.2.dev1/docs/packages/lucode-starlight/components/overrides/PageSidebar.astro +0 -20
- sillo_framework-0.3.2.dev1/docs/packages/lucode-starlight/components/overrides/PageTitle.astro +0 -130
- sillo_framework-0.3.2.dev1/docs/packages/lucode-starlight/components/overrides/Pagination.astro +0 -101
- sillo_framework-0.3.2.dev1/docs/packages/lucode-starlight/components/overrides/Search.astro +0 -549
- sillo_framework-0.3.2.dev1/docs/packages/lucode-starlight/components/overrides/Sidebar.astro +0 -263
- sillo_framework-0.3.2.dev1/docs/packages/lucode-starlight/components/overrides/SiteTitle.astro +0 -61
- sillo_framework-0.3.2.dev1/docs/packages/lucode-starlight/components/overrides/SocialIcons.astro +0 -47
- sillo_framework-0.3.2.dev1/docs/packages/lucode-starlight/components/overrides/TableOfContents.astro +0 -97
- sillo_framework-0.3.2.dev1/docs/packages/lucode-starlight/components/overrides/ThemeSelect.astro +0 -156
- sillo_framework-0.3.2.dev1/docs/packages/lucode-starlight/components/overrides/TwoColumnContent.astro +0 -75
- sillo_framework-0.3.2.dev1/docs/packages/lucode-starlight/components/overrides/parts/Drawer.astro +0 -260
- sillo_framework-0.3.2.dev1/docs/packages/lucode-starlight/components/overrides/parts/MobileMenuToggle.astro +0 -69
- sillo_framework-0.3.2.dev1/docs/packages/lucode-starlight/components/overrides/parts/NavBar.astro +0 -111
- sillo_framework-0.3.2.dev1/docs/packages/lucode-starlight/components/overrides/parts/SidebarSublist.astro +0 -162
- sillo_framework-0.3.2.dev1/docs/packages/lucode-starlight/components/overrides/parts/toc/TableOfContentsList.astro +0 -71
- sillo_framework-0.3.2.dev1/docs/packages/lucode-starlight/components/overrides/parts/toc/starlight-toc.ts +0 -256
- sillo_framework-0.3.2.dev1/docs/packages/lucode-starlight/core/config/constants.ts +0 -1
- sillo_framework-0.3.2.dev1/docs/packages/lucode-starlight/core/config/expresive-code.ts +0 -63
- sillo_framework-0.3.2.dev1/docs/packages/lucode-starlight/core/config/override.ts +0 -48
- sillo_framework-0.3.2.dev1/docs/packages/lucode-starlight/core/config/schemas.ts +0 -57
- sillo_framework-0.3.2.dev1/docs/packages/lucode-starlight/core/config/vite.ts +0 -20
- sillo_framework-0.3.2.dev1/docs/packages/lucode-starlight/core/plugin.ts +0 -56
- sillo_framework-0.3.2.dev1/docs/packages/lucode-starlight/global.d.ts +0 -5
- sillo_framework-0.3.2.dev1/docs/packages/lucode-starlight/index.ts +0 -3
- sillo_framework-0.3.2.dev1/docs/packages/lucode-starlight/package.json +0 -54
- sillo_framework-0.3.2.dev1/docs/packages/lucode-starlight/schema.ts +0 -24
- sillo_framework-0.3.2.dev1/docs/packages/lucode-starlight/styles/base.css +0 -904
- sillo_framework-0.3.2.dev1/docs/packages/lucode-starlight/styles/layers.css +0 -1
- sillo_framework-0.3.2.dev1/docs/packages/lucode-starlight/styles/theme.css +0 -67
- sillo_framework-0.3.2.dev1/docs/packages/lucode-starlight/user-components.ts +0 -3
- sillo_framework-0.3.2.dev1/docs/packages/lucode-starlight/virtual.d.ts +0 -51
- sillo_framework-0.3.2.dev1/docs/renovate.json +0 -7
- sillo_framework-0.3.2.dev1/docs/test/lucode-starlight/config.test.ts +0 -171
- sillo_framework-0.3.2.dev1/docs/test/lucode-starlight/plugin.test.ts +0 -175
- sillo_framework-0.3.2.dev1/docs/test/lucode-starlight/starlight-toc.test.ts +0 -279
- sillo_framework-0.3.2.dev1/docs/tsconfig.json +0 -9
- sillo_framework-0.3.2.dev1/docs/vercel.json +0 -27
- sillo_framework-0.3.2.dev1/docs/vitest.config.ts +0 -28
- sillo_framework-0.3.2.dev1/examples/README.md +0 -64
- sillo_framework-0.3.2.dev1/examples/auth/01_session_auth.py +0 -97
- sillo_framework-0.3.2.dev1/examples/auth/02_jwt_auth.py +0 -87
- sillo_framework-0.3.2.dev1/examples/auth/03_custom_backend.py +0 -120
- sillo_framework-0.3.2.dev1/examples/auth/04_multiple_backends.py +0 -167
- sillo_framework-0.3.2.dev1/examples/auth/05_router_integration.py +0 -87
- sillo_framework-0.3.2.dev1/examples/config/.env.development +0 -15
- sillo_framework-0.3.2.dev1/examples/config/.env.example +0 -35
- sillo_framework-0.3.2.dev1/examples/config/.env.production +0 -15
- sillo_framework-0.3.2.dev1/examples/config/01_basic_config.py +0 -71
- sillo_framework-0.3.2.dev1/examples/config/02_web_app.py +0 -157
- sillo_framework-0.3.2.dev1/examples/config/README.md +0 -367
- sillo_framework-0.3.2.dev1/examples/database/01_sqlite_todo.py +0 -178
- sillo_framework-0.3.2.dev1/examples/database/02_tortoise_notes.py +0 -175
- sillo_framework-0.3.2.dev1/examples/database/03_tortoise_blog.py +0 -197
- sillo_framework-0.3.2.dev1/examples/exception_handling/01_basic.py +0 -21
- sillo_framework-0.3.2.dev1/examples/exception_handling/02_custom.py +0 -25
- sillo_framework-0.3.2.dev1/examples/file_handling/01_upload_download.py +0 -203
- sillo_framework-0.3.2.dev1/examples/file_handling/02_simple_upload.py +0 -28
- sillo_framework-0.3.2.dev1/examples/getting_started/01_hello_world.py +0 -58
- sillo_framework-0.3.2.dev1/examples/getting_started/02_basic_rest.py +0 -22
- sillo_framework-0.3.2.dev1/examples/getting_started/03_enhanced_api.py +0 -341
- sillo_framework-0.3.2.dev1/examples/getting_started/04_lifespan.py +0 -213
- sillo_framework-0.3.2.dev1/examples/getting_started/05_streaming_middleware.py +0 -28
- sillo_framework-0.3.2.dev1/examples/getting_started/README.md +0 -31
- sillo_framework-0.3.2.dev1/examples/hashing/01_basic_password_hashing.py +0 -90
- sillo_framework-0.3.2.dev1/examples/hashing/01_basic_usage.py +0 -33
- sillo_framework-0.3.2.dev1/examples/hashing/02_multiple_algorithms.py +0 -177
- sillo_framework-0.3.2.dev1/examples/hashing/02_schemes.py +0 -74
- sillo_framework-0.3.2.dev1/examples/hashing/03_web_api.py +0 -125
- sillo_framework-0.3.2.dev1/examples/hashing/README.md +0 -246
- sillo_framework-0.3.2.dev1/examples/middleware/01_basic.py +0 -29
- sillo_framework-0.3.2.dev1/examples/middleware/02_class_based.py +0 -29
- sillo_framework-0.3.2.dev1/examples/middleware/03_asgi_middleware.py +0 -40
- sillo_framework-0.3.2.dev1/examples/request_inputs/01_json_data.py +0 -25
- sillo_framework-0.3.2.dev1/examples/request_inputs/02_form_data.py +0 -9
- sillo_framework-0.3.2.dev1/examples/request_inputs/03_raw_body.py +0 -10
- sillo_framework-0.3.2.dev1/examples/request_inputs/04_streaming.py +0 -12
- sillo_framework-0.3.2.dev1/examples/responses/01_return_values.py +0 -21
- sillo_framework-0.3.2.dev1/examples/responses/02_json_with_headers.py +0 -12
- sillo_framework-0.3.2.dev1/examples/responses/03_response_types.py +0 -28
- sillo_framework-0.3.2.dev1/examples/responses/04_response_classes.py +0 -37
- sillo_framework-0.3.2.dev1/examples/responses/index.html +0 -5
- sillo_framework-0.3.2.dev1/examples/routing/01_basic_routes.py +0 -31
- sillo_framework-0.3.2.dev1/examples/routing/02_path_parameters.py +0 -53
- sillo_framework-0.3.2.dev1/examples/routing/03_routes_class.py +0 -36
- sillo_framework-0.3.2.dev1/examples/routing/04_routers.py +0 -21
- sillo_framework-0.3.2.dev1/examples/validation/01_advanced.py +0 -170
- sillo_framework-0.3.2.dev1/examples/validation/02_pydantic.py +0 -28
- sillo_framework-0.3.2.dev1/examples/websockets/01_basic_echo.py +0 -18
- sillo_framework-0.3.2.dev1/examples/websockets/02_chat_rooms.py +0 -102
- sillo_framework-0.3.2.dev1/examples/websockets/03_custom_history.py +0 -284
- sillo_framework-0.3.2.dev1/plans/admin-declarations.md +0 -637
- sillo_framework-0.3.2.dev1/requirements-dev.txt +0 -9
- sillo_framework-0.3.2.dev1/requirements.txt +0 -8
- sillo_framework-0.3.2.dev1/sillo/core/routing/_utils.py +0 -66
- sillo_framework-0.3.2.dev1/sillo/middleware/define.py +0 -114
- sillo_framework-0.3.2.dev1/tests/test_routing/test_router_wrap_asgi.py +0 -71
- sillo_framework-0.3.2.dev1/uv.lock +0 -1445
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/.gitignore +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/LICENSE +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/SECURITY.md +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/auth/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/auth/apikey/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/auth/apikey/backend.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/auth/apikey/mixins.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/auth/apikey/models.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/auth/backend.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/auth/exceptions.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/auth/jwt_auth/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/auth/jwt_auth/backend.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/auth/jwt_auth/mixins.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/auth/jwt_auth/models.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/auth/jwt_auth/tokens.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/auth/middleware.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/auth/model.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/auth/session_auth/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/auth/session_auth/backend.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/auth/session_auth/guard.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/auth/session_auth/mixins.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/auth/session_auth/models.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/auth/use_auth.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/cache/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/cache/backends.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/cache/base.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/cache/config.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/cache/decorator.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/config/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/config/core.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/console/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/console/arguments.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/console/command.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/console/console.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/console/exceptions.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/console/output.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/console/prompt.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/console/style.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/console/terminal.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/core/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/core/dependencies/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/core/encoding.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/core/error/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/core/helpers/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/core/helpers/async_helpers.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/core/helpers/deprecation.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/core/http/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/core/http/cookies.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/core/http/response.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/encoding.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/env/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/env/_loader.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/events/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/events/core.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/events/emitter.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/events/enums.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/events/exceptions.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/events/mixins.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/events/transports/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/events/transports/base.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/events/transports/memory.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/events/transports/persistent.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/events/transports/record.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/events/transports/redis.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/exceptions.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/formparser.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/handlers/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/hashing/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/hashing/config.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/hashing/core.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/hashing/exceptions.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/hashing/utils.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/helpers/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/helpers/concurrency.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/helpers/crypto.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/helpers/files.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/helpers/hashing.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/helpers/html.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/helpers/jwt.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/helpers/lazy.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/helpers/network.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/helpers/registry.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/helpers/retry.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/helpers/signing.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/helpers/strings.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/helpers/text.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/http/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/http/accepts.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/http/client/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/http/client/caching.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/http/client/client.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/http/client/config.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/http/client/errors.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/http/client/middleware.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/http/client/models.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/http/client/retry.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/http/client/transport.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/http/client/utils.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/http/etag.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/http/lifecycle/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/http/lifecycle/context.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/http/lifecycle/helpers.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/http/lifecycle/middleware.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/http/sse.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/http/status.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/logging.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/mail/config.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/mail/context.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/mail/models.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/middleware/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/middleware/base.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/middleware/bridge.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/middleware/gzip.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/middleware/response_headers.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/middleware/security.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/middleware/utils.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/normalize/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/normalize/helpers.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/normalize/middleware.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/objects/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/objects/common.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/objects/datastructures.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/objects/http.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/objects/routing.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/openapi/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/openapi/_builder.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/openapi/config.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/openapi/models.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/openapi/ui.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/openapi/utils.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/pagination.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/parameters.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/permissions/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/permissions/mixins.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/permissions/models.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/py.typed +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/record/_bridge.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/record/casting.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/record/collection.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/record/commands/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/record/commands/functions.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/record/config.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/record/console.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/record/events.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/record/exceptions.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/record/factories.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/record/fields.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/record/helpers.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/record/logging.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/record/mixins/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/record/models.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/record/pagination.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/record/pydantic.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/record/queries.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/record/scopes.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/record/transactions.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/responses.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/route_builder.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/security/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/security/cors/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/security/cors/_middleware.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/security/cors/config.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/security/csrf/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/security/csrf/config.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/security/ratelimit/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/security/ratelimit/_middleware.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/security/ratelimit/backends/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/security/ratelimit/backends/base.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/security/ratelimit/backends/memory.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/security/ratelimit/backends/record.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/security/ratelimit/backends/redis.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/security/ratelimit/config.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/security/ratelimit/models.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/security/ratelimit/strategies/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/security/ratelimit/strategies/base.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/security/ratelimit/strategies/fixed_window.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/security/ratelimit/strategies/sliding_window.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/security/ratelimit/strategies/token_bucket.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/security/shield.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/session/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/session/base.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/session/config.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/session/file.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/session/middleware.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/session/session_objects.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/session/signed_cookies.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/static.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/storage/base.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/storage/bucket.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/storage/config.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/storage/context.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/storage/drivers/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/storage/drivers/memory.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/storage/errors.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/storage/paths.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/storage/policies.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/storage/routes.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/storage/signing.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/storage/sniff.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/storage/uploads.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/testclient/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/testclient/_internal/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/testclient/_internal/inputs.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/testclient/_internal/transport.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/testclient/_internal/types.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/testclient/_internal/utils.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/testclient/_internal/websockets.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/testclient/async_client.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/testclient/base.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/testclient/exceptions.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/testclient/helpers.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/types.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/users/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/users/base.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/users/commands.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/users/console.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/users/managers.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/users/protocol.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/users/simple.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/validation/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/validation/compiler.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/validation/errors.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/validation/fields.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/websockets/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/websockets/base.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/websockets/errors.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/websockets/status.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/work/backends.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/work/background/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/work/background/supervisor.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/work/background/tasks.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/work/commands.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/work/console.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/work/middleware.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/work/queue/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/work/queue/batches.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/work/queue/connection.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/work/queue/events.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/work/queue/failed.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/work/queue/job.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/work/queue/listener.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/work/queue/middleware.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/work/queue/payloads.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/work/queue/workers.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/work/scheduler/cron.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/work/scheduler/jobs.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/work/scheduler/middleware.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/work/scheduler/triggers.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/work/task.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/sillo/work/types.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/conftest.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/static/example.txt +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/static/page.html +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/static/script.js +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/static/style.css +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/static/subfolder/subfile.txt +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/templates/base.html +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/templates/product.html +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/templates/welcome.html +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_applications/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_applications/test_app_class_name.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_applications/test_application.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_applications/test_middleware_chain_cache.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_applications/test_route_kwargs.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_auth/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_auth/test_apikey_backend.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_auth/test_apikey_models.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_auth/test_auth_middleware.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_auth/test_auth_utilities.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_auth/test_custom_backend.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_auth/test_jwt_backend.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_auth/test_jwt_token_model.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_auth/test_jwt_user_mixin.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_auth/test_security_schemes.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_auth/test_session_backend.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_auth/test_session_model_extend.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_auth/test_token_for_user.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_auth/test_use_auth.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_auth/test_user_models.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_cache/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_cache/test_base.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_cache/test_decorator.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_cache/test_memory_cache.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_cache/test_redis_backend.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_cache/test_redis_cache_fake.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_config/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_config/conftest.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_config/test_config_loading.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_config/test_env_loading.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_console/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_console/test_arguments.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_console/test_builtin_record.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_console/test_builtin_users.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_console/test_builtin_work.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_console/test_command.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_console/test_console.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_console/test_output.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_console/test_prompt.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_console/test_style.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_console/test_terminal.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_cors/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_cors/test_configuration.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_cors/test_credentials_security.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_cors/test_error_handling.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_cors/test_integration.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_cors/test_preflight_requests.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_cors/test_simple_requests.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_dependencies/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_encoding/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_encoding/test_custom_encoder.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_encoding/test_encoding_shim.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_encoding/test_jsonable_encoder.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_encoding/test_passthrough_fast_path.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_env/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_env/conftest.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_env/test_load.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_env/test_parse.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_events/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_events/test_comprehensive_events.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_events/test_core_propagation.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_events/test_emitter_paths.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_events/test_events_backends.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_events/test_persistent_transport_fake.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_events/test_record_transport.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_events/test_redis_transport_fake.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_events/test_transport_registry_and_base.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_exception_handlers/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_exception_handlers/test_basic_exception_handlers.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_exception_handlers/test_concurrent_error_pages.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_exception_handlers/test_dispatch_internals.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_exception_handlers/test_exception_handler_integration.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_forms/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_forms/test_form_parser.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_forms/test_uploaded_file_save.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_hashing/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_hashing/test_core.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_hashing/test_utils.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_helpers/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_helpers/test_accepts.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_helpers/test_async.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_helpers/test_concurrency.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_helpers/test_deprecation.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_helpers/test_files.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_helpers/test_hashing_crypto.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_helpers/test_html.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_helpers/test_jwt.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_helpers/test_network.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_helpers/test_registry.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_helpers/test_retry.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_helpers/test_signing.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_helpers/test_strings.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_helpers/test_text.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_http/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_http/test_accepts.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_http/test_accepts_middleware.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_http/test_accepts_negotiation.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_http/test_cookie_parsing.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_http/test_etag_full.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_http/test_http_etag.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_http/test_http_module_exports.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_http/test_sse.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_lifecycle/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_lifecycle/test_context.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_lifecycle/test_request_id.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_mail/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_mail/test_context.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_mail/test_mail_client.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_mail/test_mail_service.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_mail/test_mail_transport.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_middleware/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_middleware/test_app_level_middleware.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_middleware/test_bridge.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_middleware/test_gzip.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_middleware/test_route_level_middleware.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_middleware/test_router_level_middleware.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_middleware/test_use_for_route.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_normalize/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_normalize/test_helpers.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_normalize/test_middleware.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_objects/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_objects/test_headers.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_objects/test_multidict.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_objects/test_url.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_objects/test_url_building.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_openapi/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_openapi/test_docs_ui.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_openapi/test_openapi_config.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_openapi/test_openapi_spec.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_openapi/test_openapi_utils.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_optional_imports.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_pagination/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_pagination/test_data_handlers.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_pagination/test_edge_cases.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_pagination/test_error_handling.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_pagination/test_integration.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_pagination/test_pagination_strategies.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_pagination/test_paginators.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_pagination/test_response_classes.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_pagination/test_response_paginate.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_parameters/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_parameters/test_cookie.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_parameters/test_header.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_parameters/test_openapi.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_parameters/test_query.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_permissions/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_permissions/test_permissions.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_record/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_record/test_collection.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_record/test_events.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_record/test_factories.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_record/test_mass_assignment.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_record/test_mixins.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_record/test_model_features.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_record/test_pagination_and_exceptions.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_record/test_pydantic_bridge.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_record/test_queries.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_record/test_query_logging.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_record/test_record_commands.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_record/test_release_fixes.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_record/test_seeding.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_redis/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_redis/test_redis_cache.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_redis/test_redis_transport.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_requests/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_requests/test_basic_properties.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_requests/test_body_data.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_requests/test_cookies_auth.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_requests/test_path_params.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_requests/test_query_params.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_requests/test_request_flags.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_requests/test_request_surface.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_responses/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_responses/test_advanced_responses.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_responses/test_basic_responses.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_responses/test_cookie_attributes.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_responses/test_file_responses.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_responses/test_header_override.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_responses/test_headers_cookies.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_responses/test_json_serialization.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_responses/test_redirect_streaming.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_responses/test_response_properties.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_responses/test_responses_module.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_routing/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_routing/test_base_route.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_routing/test_basic_routing.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_routing/test_converters.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_routing/test_grouping.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_routing/test_http_methods.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_routing/test_nested_routes.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_routing/test_path_parameters.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_routing/test_route_builder.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_security/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_security/test_csrf.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_security/test_csrf_predicates.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_security/test_middleware.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_security/test_ratelimit_redis_backend.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_security/test_record_backend.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_security/test_strategies.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_sessions/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_sessions/test_base.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_sessions/test_config_and_objects_internals.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_sessions/test_expiry.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_sessions/test_file_sessions.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_sessions/test_integration.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_sessions/test_middleware.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_sessions/test_security.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_sessions/test_settings.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_sessions/test_signed_cookies.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_small_module_gaps.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_static/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_static/test_static_files.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_static/test_static_files_internals.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_storage/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_storage/contract.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_storage/test_bucket.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_storage/test_config.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_storage/test_context.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_storage/test_drivers.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_storage/test_integration.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_storage/test_local_driver_internals.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_storage/test_paths_helpers.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_storage/test_policies.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_storage/test_routes.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_storage/test_safety.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_storage/test_uploads.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_supported_python_versions.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_testclient/test_lifespan_internals.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_testclient/test_transport_internals.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_testclient/test_websocket_session_internals.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_type_comments.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_users/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_users/test_password.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_users/test_protocol.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_users/test_user_commands.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_users/test_user_model.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_validation/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_validation/conftest.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_validation/test_legacy_compat.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_validation/test_markers_unit.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_validation/test_openapi_generation.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_validation/test_params.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_validation/test_response_model.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_websockets/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_websockets/test_websocket_errors.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_websockets/test_websocket_protocol.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_websockets/test_websocket_state_machine.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_work/__init__.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_work/test_backends_full.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_work/test_background.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_work/test_events.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_work/test_job_dispatch.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_work/test_job_queue.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_work/test_job_round_trip.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_work/test_memory_backend.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_work/test_middleware.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_work/test_queue.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_work/test_queue_middleware.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_work/test_queue_worker.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_work/test_redis_connection_internals.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_work/test_redis_queue_reliability.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_work/test_scheduler.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_work/test_scheduler_middleware.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_work/test_task.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_work/test_types.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_work/test_work_commands.py +0 -0
- {sillo_framework-0.3.2.dev1 → sillo_framework-1.0.0}/tests/test_work/work_jobs.py +0 -0
|
@@ -7,6 +7,139 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [1.0.0] - 2026-09-26
|
|
11
|
+
|
|
12
|
+
Sillo 1.0 is the stable release of the context-based framework API.
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
|
|
16
|
+
- Stable routing, dependency injection, middleware, queues, scheduler,
|
|
17
|
+
WebSockets, OpenAPI, records, authentication, storage, mail, and testing
|
|
18
|
+
integrations documented in the v1.0 manual.
|
|
19
|
+
|
|
20
|
+
### Changed
|
|
21
|
+
|
|
22
|
+
- The v1.0 handler and application APIs are now the supported public surface.
|
|
23
|
+
- The package is published as a production/stable release for Python 3.10+.
|
|
24
|
+
|
|
25
|
+
## [1.0.0rc1] - 2026-09-22
|
|
26
|
+
|
|
27
|
+
The first release candidate of 1.0.
|
|
28
|
+
|
|
29
|
+
### Changed
|
|
30
|
+
|
|
31
|
+
- **`Depend(fn, get_context=...)` now defaults `get_context` to `False`.** Most dependencies need no context at all — a settings object, a computed value, a sub-dependency built from other extractors — and previously still had to declare a leading, unused context parameter (conventionally named `_`) to satisfy the old default of `True`. A dependency that does need the active context now opts in explicitly with `Depend(fn, get_context=True)`; without it, the dependency's own first parameter is analyzed like any other, eligible for `Depend` or an extractor default, and nothing is passed positionally at call time. **This is a breaking change**: every existing `Depend(fn)` call whose `fn` reads the context off its first parameter needs `get_context=True` added, or that parameter silently stops receiving the context (and instead has whatever `Query`/`Header`/`Depend` default it declares, if any, or a missing-argument error if none). `sillo.work.dependency`'s built-in providers (`scheduler`, `queue_connection`, `events`, `default_queue`) all need it, since each reads `ctx.base_app`.
|
|
32
|
+
- **A `raise ... from ...` cascade in the terminal error block now boxes each link.** A chained cause used to collapse to a single `from Type: message` line, unreadable once a few wrapping layers stacked up. Each cause now gets its own bordered box (type, message, location, the line it broke on), stacked under `caused by`; a chain deeper than four links folds the rest into a one-line `… N more` summary.
|
|
33
|
+
|
|
34
|
+
## [1.0.0a2] - 2026-09-18
|
|
35
|
+
|
|
36
|
+
The second alpha of 1.0.
|
|
37
|
+
|
|
38
|
+
### Added
|
|
39
|
+
|
|
40
|
+
- **`Depend(fn, get_context=False)`.** A dependency previously always had its first positional parameter reserved for the context, forcing dependencies that don't need it to declare a leading, unused parameter (often named `_`). `get_context=False` opts out: no context is passed positionally, and the callable's own first parameter is analyzed normally, so it can carry a `Depend(...)` or extractor default of its own.
|
|
41
|
+
|
|
42
|
+
### Fixed
|
|
43
|
+
|
|
44
|
+
- **A rejected CSRF request now carries a usable token.** A 403 for a missing or invalid token went out without a `Set-Cookie`, even though a fresh token had already been minted for it — a client with no cookie yet (its first request is a POST, or an earlier `Set-Cookie` was dropped by a CDN or proxy) got a 403 with nothing to retry with, and every retry failed the same way.
|
|
45
|
+
- **A `Group` whose own mount prefix carries a path parameter now matches.** `Group(path="/tenants/{id:int}", app=...)` stripped the *literal template text* (`{id:int}` included) off the request path instead of the text the pattern actually matched, so a request under such a group fell through to the mounted app with its path untouched and 404'd there instead.
|
|
46
|
+
|
|
47
|
+
### Removed
|
|
48
|
+
|
|
49
|
+
- **`SilloApp.wrap_asgi(...)` is gone.** `app.use(...)` now accepts a raw ASGI middleware factory directly, in place of a dispatch function — sillo infers which form it is from the middleware's `__call__` signature (three required positional parameters is raw ASGI, two is dispatch), or `raw=True`/`raw=False` states it explicitly. `app.wrap_asgi(mw, **kwargs)` becomes `app.use(mw, **kwargs)` (or `app.use(mw, raw=True, **kwargs)` when the signature is ambiguous, e.g. a factory taking only the next app). `Router.use(...)` gained the same `raw`/`*args`/`**kwargs` parameters.
|
|
50
|
+
|
|
51
|
+
## [1.0.0a1] - 2026-09-12
|
|
52
|
+
|
|
53
|
+
The first alpha of 1.0 — **the context rewrite**. This is a breaking release
|
|
54
|
+
with no compatibility shims. Install with
|
|
55
|
+
`pip install --pre sillo-framework==1.0.0a1`.
|
|
56
|
+
|
|
57
|
+
An alpha: the surface below is what 1.0 is expected to look like, but it is not
|
|
58
|
+
frozen yet, and API may still change before `1.0.0`.
|
|
59
|
+
|
|
60
|
+
### Added
|
|
61
|
+
|
|
62
|
+
- **Host-scoped routers — `Router(host=...)`.** A router only answers requests whose `Host` header matches. Exact (`admin.example.com`) or a single-label wildcard (`*.example.com`). A request to another host falls through to the rest of the app.
|
|
63
|
+
- **Version-scoped routers — `Router(version=...)`.** A router only answers requests carrying a matching `X-API-Version` header, or an `Accept` media type with a `version=<value>` parameter. Lets a `v1` and `v2` router share the same paths and be picked by the client.
|
|
64
|
+
- **`Router(middleware=[...])`.** Register router middleware at construction — dispatch callables, `DefineMiddleware`, or `(cls, args, kwargs)` tuples — instead of a run of `router.use(...)` calls. First in the list is the outermost layer.
|
|
65
|
+
- **`SilloApp(root_path=...)`.** A mount prefix a reverse proxy strips before forwarding. It is folded into `scope["root_path"]`, removed before route matching, and re-added by `ctx.url_for(...)` and the OpenAPI `servers` block, so generated links stay correct.
|
|
66
|
+
- **`SilloApp(force_https=True)`.** Any plain-`http` request is answered with a 308 to the `https` URL. `X-Forwarded-Proto: https` from a proxy is honoured, so a TLS-terminating proxy in front of an `http` app does not loop.
|
|
67
|
+
- **`SilloApp(trailing_slash=...)` / `Router(trailing_slash=...)`.** `"strict"` (default, `/x` ≠ `/x/`), `"redirect"` (308 to the registered form), or `"ignore"` (serve it in place).
|
|
68
|
+
- **Declarative redirects — `app.redirect(path, to, *, status_code=307, ...)`** (and `Router.redirect`). Registers a redirect-only route, no handler. Placeholders shared by both sides are substituted (`app.redirect("/u/{id}", "/users/{id}")`); a mount prefix and the query string are carried across. Hidden from the schema.
|
|
69
|
+
- **`app.print_routes()`** and `sillo.core.routing.{iter_routes, format_routes, print_routes}` — walk the router and every mount, fold prefixes in, and render `METHODS PATH handler (name)` rows for a startup log or a REPL.
|
|
70
|
+
- **New path converters**: `bool` (`true`/`1`/`yes`/`on` and their negatives, any case → real `bool`), `date` (`YYYY-MM-DD` → `datetime.date`), `datetime` (ISO 8601, `Z` accepted → `datetime.datetime`), `ulid` (26 Crockford base32 chars), `alpha` (`[A-Za-z]+`), `alnum` (`[A-Za-z0-9]+`).
|
|
71
|
+
- **`priority=` on routes.** `@app.get(..., priority=10)` (also on `Route(...)`, `add_route(...)`, and `ws_route(...)`) sets an explicit match-ordering weight. Routes are tried in descending priority, then by path specificity, then registration order. Raise it to force a route ahead of an overlapping one; use a negative value to make a route a deliberate fallback.
|
|
72
|
+
- **`SilloApp(route_order=...)` / `Router(route_order=...)`.** `"specificity"` (the new default) or `"registration"` to restore the historical first-registered, first-matched behavior for a whole application. Documented in [Routing → Route matching order](https://sillo.build/v1.0/guides/routing/#route-matching-order).
|
|
73
|
+
- **`app.dependency_overrides`** and **`app.override(original, replacement)`.** Swap a `Depend(...)` callable for a test double, FastAPI-style. Matched by identity against the exact function passed to `Depend`, and reached through every nested dependency in the tree, not only the top-level one. `app.override(...)` is a context manager that restores the previous mapping (present or absent) on exit, including on exception; assign `app.dependency_overrides[original] = replacement` directly for a suite-wide swap that outlives a single `with` block.
|
|
74
|
+
|
|
75
|
+
### Changed
|
|
76
|
+
|
|
77
|
+
- **A handler takes one leading argument: the context.** `HttpContext` on an
|
|
78
|
+
HTTP route, `WebSocketContext` on a WebSocket route. Path parameters,
|
|
79
|
+
dependencies and validation markers follow it, bound by name as before:
|
|
80
|
+
|
|
81
|
+
```python
|
|
82
|
+
from sillo import SilloApp, HttpContext, json
|
|
83
|
+
|
|
84
|
+
app = SilloApp()
|
|
85
|
+
|
|
86
|
+
@app.get("/users/{id:int}")
|
|
87
|
+
def show(ctx: HttpContext, id: int):
|
|
88
|
+
return json({"id": id})
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
`BaseContext` carries `scope`, `headers`, `cookies`, `path_params`,
|
|
92
|
+
`query_params`, `state`, `user`, `client`, `app` and `url_for`.
|
|
93
|
+
`HttpContext` adds `method`, `await ctx.json`, `await ctx.body`,
|
|
94
|
+
`await ctx.form`, `ctx.files` and `ctx.validated_data`.
|
|
95
|
+
|
|
96
|
+
- **Responses are functions, in `sillo.responses`**, every name re-exported
|
|
97
|
+
from `sillo` — bodies (`json`, `text`, `html`, `xml`, `raw`, `empty`), status
|
|
98
|
+
shorthands (`created`, `accepted`, `no_content`), redirects, files
|
|
99
|
+
(`file`, `download`), streaming (`stream`, `ndjson`, `sse`), pagination
|
|
100
|
+
(`paginate`, `apaginate`, which take `ctx` first) and `abort` / `not_found`,
|
|
101
|
+
which raise rather than return. Each builder returns a `BaseResponse`
|
|
102
|
+
subclass carrying the chainable half (`status`, `cache`, `set_header`,
|
|
103
|
+
`set_cookie`, …), each returning `self`. Import from the module when the file
|
|
104
|
+
also needs the stdlib `json`/`html` or the `file` builtin.
|
|
105
|
+
|
|
106
|
+
- **WebSocket routes bind path parameters.** They were read from
|
|
107
|
+
`scope["path_params"]`, which the router never writes, so the keyword
|
|
108
|
+
arguments a handler declared were always empty. Note that the registration
|
|
109
|
+
name is `ws_route` / `add_ws_route`; there is no `@app.websocket(...)`.
|
|
110
|
+
|
|
111
|
+
- **An unhandled request error logs a structured block, not a raw traceback.** `sillo.handlers.error_report` keeps only the frames in *your* code:
|
|
112
|
+
|
|
113
|
+
```
|
|
114
|
+
💥 oops — KeyError: 'ABC-9'
|
|
115
|
+
request GET /catalog/ABC-9
|
|
116
|
+
at api/catalog.py:14 in show
|
|
117
|
+
→ price = lookup(catalog, sku)
|
|
118
|
+
at pricing/rules.py:2 in lookup
|
|
119
|
+
1 def lookup(catalog, sku):
|
|
120
|
+
› 2 price = catalog["items"][sku]["price"]
|
|
121
|
+
^^^^^^^^^^^^^^^^^^^^^
|
|
122
|
+
3 return price * 1.2
|
|
123
|
+
with catalog={'items': {}}, sku='ABC-9'
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
Each calling frame is one line; the frame it broke on gets a window of real source with the line marked `›` (bright, its neighbours dim) and a caret under the exact expression (Python 3.11+, single-line). `file:line` is cyan, the function bold. `with` lists the raising frame's own locals — scalars and small containers verbatim, a big one as `<dict len=N>`, a name that reads like a secret as `***`. `SILLO_TRACE` sets the depth — `off`, `app` (default while `debug` is on), `full` (append the raw traceback). Off a terminal or with `debug` off, nothing is rendered; one structured line goes to the logger instead. Every 500 also stopped logging two-to-three times — `sillo.core.error.handler` was creating a child logger with its own handler that still propagated to the parent's.
|
|
127
|
+
- **Overlapping routes now match most-specific-first, not registration-first.** A literal segment beats a parameter at the same position, a narrow converter (`:int`, `:float`, `:uuid`) beats a plain string parameter, and both beat a `:path` catch-all — decided left to right. `@app.get("/users/{id}")` no longer shadows a `@app.get("/users/me")` registered after it. The ordering is computed once, lazily, on the first request after registration, so per-request dispatch is unchanged. Pass `route_order="registration"` to opt out.
|
|
128
|
+
- **A 404 response no longer carries a traceback.** The stack of `raise NotFoundException` is the router's, not the caller's — it named internal framework paths and told a developer nothing about their own code. Debug mode still widens the *message* (the exception's `detail` instead of the generic sentence); it no longer adds a `traceback` field.
|
|
129
|
+
- **The 404 and debug (500) HTML pages are restyled** to match Sillo's own terminal aesthetic — dark background, monospace, brand red (`#fc0345`) — instead of a light Arial page for 404s and a page whose `--error`/accent variable was, by mistake, green (`#02ba42`) rather than red for the debug page. Both pages, and two other spots on the debug page that bypassed the CSS variables with a hardcoded color, now flow from the same palette as the terminal error log.
|
|
130
|
+
- **`SilloApp(debug=...)` now defaults to `False`.** It previously defaulted to `True`, so a project that never passed `debug` explicitly shipped with the full debug page — and a verbose terminal error log — on by default. An app that wants debug output in local development now has to say so.
|
|
131
|
+
- **The terminal error trace no longer depends on `debug`.** It only ever prints to the server's own terminal — nothing in it reaches a client — so it now defaults on whenever `stderr` is an actual terminal, regardless of `debug`. Previously it rode on `debug`'s default, so the flip above would otherwise have silently taken the pretty trace away from local development along with the (correct) HTTP-facing change. `SILLO_TRACE` still overrides either way.
|
|
132
|
+
|
|
133
|
+
### Removed
|
|
134
|
+
|
|
135
|
+
- **`Request`, the `Response` manager and the `Responder` builder are gone**,
|
|
136
|
+
and nothing is shimmed. `sillo/core/http/request.py` no longer exists.
|
|
137
|
+
- **The built-in admin panel is no longer part of the framework.** It is its
|
|
138
|
+
own package now — [`warder`](https://sillo.build/packages/warder/).
|
|
139
|
+
- **`Depend(get_request=True)` / `Depend(get_context=True)`** — a dependency
|
|
140
|
+
takes the context as its first positional parameter instead.
|
|
141
|
+
|
|
142
|
+
|
|
10
143
|
## [0.3.2.dev1] - 2026-09-07
|
|
11
144
|
|
|
12
145
|
A development pre-release for testing. Install with `pip install --pre sillo-framework==0.3.2.dev1`.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: sillo-framework
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 1.0.0
|
|
4
4
|
Summary: Python with the pieces already in place: an async web framework whose ORM, auth, admin, queues, scheduler and WebSockets share one configuration model.
|
|
5
5
|
Project-URL: Homepage, https://github.com/sillohq/core
|
|
6
6
|
Project-URL: Repository, https://github.com/sillohq/core
|
|
@@ -10,7 +10,7 @@ Author-email: Chidebele Dunamis <techwithdunamix@gmail.com>
|
|
|
10
10
|
License-Expression: BSD-3-Clause
|
|
11
11
|
License-File: LICENSE
|
|
12
12
|
Keywords: API,ASGI,HTTP,Python,async,asynchronous,backend,concurrent,framework,real-time,scalable,uvicorn,web,web server,websocket
|
|
13
|
-
Classifier: Development Status ::
|
|
13
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
14
14
|
Classifier: Environment :: Web Environment
|
|
15
15
|
Classifier: Framework :: AsyncIO
|
|
16
16
|
Classifier: Intended Audience :: Developers
|
|
@@ -31,6 +31,7 @@ Requires-Python: >=3.10
|
|
|
31
31
|
Requires-Dist: anyio==4.14.1
|
|
32
32
|
Requires-Dist: pydantic<3.0,>=2.0
|
|
33
33
|
Requires-Dist: python-multipart>=0.0.6
|
|
34
|
+
Requires-Dist: tomli>=2.0.1; python_version < '3.11'
|
|
34
35
|
Requires-Dist: typing-extensions>=4.12.2; python_version < '3.13'
|
|
35
36
|
Requires-Dist: uvicorn>=0.27.0
|
|
36
37
|
Provides-Extra: all
|
|
@@ -96,12 +97,14 @@ Provides-Extra: record
|
|
|
96
97
|
Requires-Dist: tortoise-orm>=1.0; extra == 'record'
|
|
97
98
|
Provides-Extra: storage-s3
|
|
98
99
|
Requires-Dist: httpx>=0.23.3; extra == 'storage-s3'
|
|
100
|
+
Provides-Extra: test
|
|
101
|
+
Requires-Dist: httpx<0.29.0,>=0.23.3; extra == 'test'
|
|
99
102
|
Description-Content-Type: text/markdown
|
|
100
103
|
|
|
101
104
|
# Sillo
|
|
102
105
|
|
|
103
106
|
<p align="center">
|
|
104
|
-
<img src="https://
|
|
107
|
+
<img src="https://raw.githubusercontent.com/sillohq/core/main/docs/docs/public/logo-colored.svg" alt="Sillo logo" width="160" height="160">
|
|
105
108
|
</p>
|
|
106
109
|
|
|
107
110
|
<p align="center">
|
|
@@ -123,53 +126,38 @@ Description-Content-Type: text/markdown
|
|
|
123
126
|
<a href="https://github.com/sillohq/core/blob/main/LICENSE"><img src="https://img.shields.io/pypi/l/sillo-framework?color=green" alt="License"></a>
|
|
124
127
|
</p>
|
|
125
128
|
|
|
126
|
-
> [
|
|
127
|
-
> **This branch is Sillo 1.0, and 1.0 is not released.**
|
|
128
|
-
>
|
|
129
|
-
> `main` is where 1.0 is being built. Nothing here is on PyPI, the API is still
|
|
130
|
-
> moving, and it is not backwards compatible with the released line — handlers
|
|
131
|
-
> take a single `ctx` argument, `sillo.graphql` and the WebSocket room layer
|
|
132
|
-
> have moved into [their own packages](https://docs.sillo.build/packages/), and
|
|
133
|
-
> more will change before it ships.
|
|
134
|
-
>
|
|
135
|
-
> **`pip install sillo-framework` installs 0.x, not this.** The released code
|
|
136
|
-
> lives on **[`v0.x`](https://github.com/sillohq/core/tree/v0.x)**, which is
|
|
137
|
-
> where fixes and dependency updates go and where releases are cut from. Its
|
|
138
|
-
> documentation is at
|
|
139
|
-
> **[docs.sillo.build/v0.x](https://docs.sillo.build/v0.x/guides/introduction/)**.
|
|
140
|
-
>
|
|
141
|
-
> Reading about the version you have installed? You want
|
|
142
|
-
> [`v0.x`](https://github.com/sillohq/core/tree/v0.x). Building against 1.0
|
|
143
|
-
> before it ships? Install from this branch:
|
|
144
|
-
>
|
|
145
|
-
> ```bash
|
|
146
|
-
> pip install "git+https://github.com/sillohq/core.git@main"
|
|
147
|
-
> ```
|
|
148
|
-
>
|
|
149
|
-
> The 1.0 documentation is at
|
|
150
|
-
> [docs.sillo.build/v1.0](https://docs.sillo.build/v1.0/guides/introduction/),
|
|
151
|
-
> and every page in it says the same thing at the top.
|
|
129
|
+
<sub>Sillo 1.0 is the stable release. Install it from PyPI with `pip install sillo-framework`, or add it with `uv add sillo-framework`. Read the [v1.0 docs](https://docs.sillo.build/v1.0/guides/introduction/).</sub>
|
|
152
130
|
|
|
153
131
|
Sillo is the buildsmith framework for APIs, real-time systems, and production backends: fast, async, and built with everything you need to ship, with the ORM, authentication, queues, scheduler, and WebSockets already in place. The language does not change. You write the same Python, with the same type hints and the same `async`/`await`. What changes is how much is waiting for you when you start: routing, request validation, dependency injection, middleware, sessions, authentication, records, background work, WebSockets, OpenAPI, and testing are first-party modules sharing one configuration model.
|
|
154
132
|
|
|
155
133
|
Each of those is a solved problem with good packages behind it. The work that remains is the fitting, and that is what Sillo does once so you do not do it per project. One `auth=` declaration gates a route and writes its `securityScheme` into the OpenAPI spec. The queue and the scheduler start with the application lifecycle. Range requests, ETags, and content negotiation are middleware rather than something each project rewrites.
|
|
156
134
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
135
|
+
The badges above are the only numbers this README states about itself — they
|
|
136
|
+
read live from the workflows that produce them, so they can't drift out of
|
|
137
|
+
date the way a hand-typed table does. `py.typed` ships in the package, so
|
|
138
|
+
your own checker sees Sillo's actual annotations rather than `Any`; five
|
|
139
|
+
dependencies land at install time, and every feature group past that —
|
|
140
|
+
records, JWT, Redis-backed cache and events, mail, encryption, S3, extra
|
|
141
|
+
hashing schemes, Granian — is opt-in, so a service that never sends mail
|
|
142
|
+
never carries a templating engine for it.
|
|
143
|
+
|
|
144
|
+
- [Requirements](#requirements)
|
|
145
|
+
- [Installation](#installation)
|
|
146
|
+
- [Hello World](#hello-world)
|
|
147
|
+
- [Request Validation](#request-validation)
|
|
148
|
+
- [Dependency Injection](#dependency-injection)
|
|
149
|
+
- [Routing](#routing)
|
|
150
|
+
- [Authentication](#authentication)
|
|
151
|
+
- [Record — the ORM Layer](#record--the-orm-layer)
|
|
152
|
+
- [Background Work: Tasks, Queues, and a Scheduler](#background-work-tasks-queues-and-a-scheduler)
|
|
153
|
+
- [WebSockets](#websockets)
|
|
154
|
+
- [OpenAPI, Without a Second Source of Truth](#openapi-without-a-second-source-of-truth)
|
|
155
|
+
- [Storage, Cache, and Events](#storage-cache-and-events)
|
|
156
|
+
- [What Sillo Provides](#what-sillo-provides)
|
|
157
|
+
- [Scope And Boundaries](#scope-and-boundaries)
|
|
158
|
+
- [Documentation](#documentation)
|
|
159
|
+
- [Testing](#testing)
|
|
160
|
+
- [Release Principles](#release-principles)
|
|
173
161
|
|
|
174
162
|
## Requirements
|
|
175
163
|
|
|
@@ -178,15 +166,13 @@ here by hand.
|
|
|
178
166
|
|
|
179
167
|
## Installation
|
|
180
168
|
|
|
181
|
-
|
|
182
|
-
different API — see the note at the top. To build against this branch:
|
|
169
|
+
Install the stable v1.0 release from PyPI:
|
|
183
170
|
|
|
184
171
|
```bash
|
|
185
|
-
uv add
|
|
172
|
+
uv add sillo-framework
|
|
186
173
|
```
|
|
187
174
|
|
|
188
|
-
Everything below documents 1.0.
|
|
189
|
-
[the v0.x branch](https://github.com/sillohq/core/tree/v0.x).
|
|
175
|
+
Everything below documents the stable 1.0 API.
|
|
190
176
|
|
|
191
177
|
### Extras
|
|
192
178
|
|
|
@@ -217,6 +203,36 @@ packages that import into the `sillo` namespace:
|
|
|
217
203
|
uv add sillo-graphql # imports as sillo.graphql
|
|
218
204
|
```
|
|
219
205
|
|
|
206
|
+
## Application setup
|
|
207
|
+
|
|
208
|
+
Use `app.install(...)` for subsystems that own application state, request
|
|
209
|
+
middleware or lifespan work. It keeps the application's wiring together while
|
|
210
|
+
leaving `app.use(...)` for explicitly ordered HTTP middleware and
|
|
211
|
+
`app.on_startup(...)` for application-specific jobs:
|
|
212
|
+
|
|
213
|
+
```python
|
|
214
|
+
from sillo import SilloApp
|
|
215
|
+
from sillo.mail import Mail, MailConfig
|
|
216
|
+
from sillo.record import DatabaseConfig, Record
|
|
217
|
+
from sillo.storage import StorageConfig, StorageInstallable
|
|
218
|
+
from sillo.work import Work
|
|
219
|
+
|
|
220
|
+
app = SilloApp()
|
|
221
|
+
|
|
222
|
+
database = app.install(Record(DatabaseConfig.sqlite("app.db"), ("myapp.models",)))
|
|
223
|
+
mail = app.install(Mail(MailConfig(suppress_send=False)))
|
|
224
|
+
storage = app.install(StorageInstallable(StorageConfig()))
|
|
225
|
+
work = app.install(Work())
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
An installable is idempotent per application name. Its returned service is
|
|
229
|
+
available through `app.installations` for diagnostics, and remains in its
|
|
230
|
+
documented `app.state` location for framework integrations. Existing
|
|
231
|
+
`setup_record`, `setup_mail`, `setup_storage`, `setup_work` and
|
|
232
|
+
`setup_scheduler` functions remain supported and delegate to the same path.
|
|
233
|
+
See [Application Installables](https://docs.sillo.build/v1.0/advanced/installables/)
|
|
234
|
+
to build a subsystem of your own.
|
|
235
|
+
|
|
220
236
|
## Hello World
|
|
221
237
|
|
|
222
238
|
A handler takes one argument — the context — plus any path parameters,
|
|
@@ -257,23 +273,25 @@ async def old(ctx: HttpContext):
|
|
|
257
273
|
importable from `sillo` directly. There is no `response` object to thread
|
|
258
274
|
through your call stack.
|
|
259
275
|
|
|
260
|
-
Run
|
|
276
|
+
Run the local development server with Sillo:
|
|
261
277
|
|
|
262
278
|
```bash
|
|
263
|
-
|
|
279
|
+
sillo dev
|
|
264
280
|
```
|
|
265
281
|
|
|
266
|
-
No import string is needed. `
|
|
282
|
+
No import string is needed. `sillo dev` looks for `app.main:app`, `main:app`
|
|
267
283
|
and `app:app`, and you can pin it with the `SILLO_APP` environment variable or
|
|
268
284
|
a `[tool.sillo] app` entry in `pyproject.toml`. Pass one explicitly when you
|
|
269
285
|
want something else:
|
|
270
286
|
|
|
271
287
|
```bash
|
|
272
|
-
|
|
288
|
+
sillo dev api.main:app --port 9000
|
|
273
289
|
```
|
|
274
290
|
|
|
275
|
-
|
|
276
|
-
|
|
291
|
+
Sillo uses Uvicorn as the development transport but owns discovery, reload,
|
|
292
|
+
startup links, and request logs. Direct Uvicorn invocation remains supported
|
|
293
|
+
for custom server deployments; for production, run the application under a
|
|
294
|
+
process supervisor with a reverse proxy in front of it.
|
|
277
295
|
|
|
278
296
|
## Request Validation
|
|
279
297
|
|
|
@@ -333,25 +351,41 @@ unwrapped:
|
|
|
333
351
|
|
|
334
352
|
Use `Depend` to inject request-scoped dependencies into handlers.
|
|
335
353
|
|
|
336
|
-
|
|
337
|
-
|
|
354
|
+
By default a dependency takes no context: nothing is passed positionally,
|
|
355
|
+
and its first parameter is analyzed like any other, free to carry a
|
|
356
|
+
`Depend` or extractor default of its own:
|
|
338
357
|
|
|
339
358
|
```python
|
|
340
|
-
from sillo import Depend, HttpContext, SilloApp
|
|
359
|
+
from sillo import Depend, HttpContext, SilloApp, json
|
|
341
360
|
|
|
342
361
|
app = SilloApp()
|
|
343
362
|
|
|
344
363
|
|
|
364
|
+
def settings() -> dict:
|
|
365
|
+
return {"feature_flags": []}
|
|
366
|
+
|
|
367
|
+
|
|
368
|
+
@app.get("/config")
|
|
369
|
+
async def show(ctx: HttpContext, cfg=Depend(settings)):
|
|
370
|
+
return json(cfg)
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
Pass `get_context=True` for a dependency that does need the context — it is
|
|
374
|
+
then called like a handler, the active context (`HttpContext`, or
|
|
375
|
+
`WebSocketContext` on a socket route) as its first positional parameter:
|
|
376
|
+
|
|
377
|
+
```python
|
|
345
378
|
async def get_current_user(ctx: HttpContext):
|
|
346
379
|
return {"id": "user_1", "name": "Ada"}
|
|
347
380
|
|
|
348
381
|
|
|
349
382
|
@app.get("/me")
|
|
350
|
-
async def me(ctx: HttpContext, user=Depend(get_current_user)):
|
|
383
|
+
async def me(ctx: HttpContext, user=Depend(get_current_user, get_context=True)):
|
|
351
384
|
return user
|
|
352
385
|
```
|
|
353
386
|
|
|
354
|
-
A dependency that reads the request does so straight off that first
|
|
387
|
+
A dependency that reads the request does so straight off that first
|
|
388
|
+
parameter, with `get_context=True`:
|
|
355
389
|
|
|
356
390
|
```python
|
|
357
391
|
def auth_header(ctx: HttpContext):
|
|
@@ -378,6 +412,219 @@ app.mount_router(api)
|
|
|
378
412
|
Path parameters are converted by the type in the pattern, so `user_id` arrives
|
|
379
413
|
as an `int` and a request for `/api/users/abc` never reaches the handler.
|
|
380
414
|
|
|
415
|
+
## Authentication
|
|
416
|
+
|
|
417
|
+
One `AuthenticationMiddleware` accepts any number of backends — session,
|
|
418
|
+
JWT, API key, or your own — and `useAuth` gates a route by naming which of
|
|
419
|
+
them may answer it. The gate and the OpenAPI `securityScheme` it writes come
|
|
420
|
+
from the same declaration, so the published contract can't say more or less
|
|
421
|
+
than what the middleware actually enforces:
|
|
422
|
+
|
|
423
|
+
```python
|
|
424
|
+
from sillo import HttpContext, SilloApp, json
|
|
425
|
+
from sillo.auth import AuthenticationMiddleware, JWTAuthBackend, useAuth
|
|
426
|
+
from sillo.users import SimpleUser
|
|
427
|
+
|
|
428
|
+
app = SilloApp()
|
|
429
|
+
app.use(AuthenticationMiddleware(SimpleUser, JWTAuthBackend(secret_key="change-me")))
|
|
430
|
+
|
|
431
|
+
|
|
432
|
+
@app.get("/me", auth=useAuth(schemes=["jwt"]))
|
|
433
|
+
async def me(ctx: HttpContext):
|
|
434
|
+
return json({"id": ctx.user.identity})
|
|
435
|
+
```
|
|
436
|
+
|
|
437
|
+
Stack backends to accept more than one credential type on the same route
|
|
438
|
+
(`useAuth(schemes=["jwt", "apikey"])`), or write a backend of your own —
|
|
439
|
+
`AuthenticationBackend.authenticate(ctx)` returning an `AuthResult` is the
|
|
440
|
+
entire contract. Users, groups, and permissions sit on top as ordinary
|
|
441
|
+
mixins (`UserProtocol`, `HasScopes`-style permission checks), not a
|
|
442
|
+
parallel object model bolted onto Sillo's own.
|
|
443
|
+
|
|
444
|
+
## Record — the ORM Layer
|
|
445
|
+
|
|
446
|
+
Records are Tortoise ORM models with the parts a Django-adjacent codebase
|
|
447
|
+
expects layered back in: attribute casting, transactions with savepoints,
|
|
448
|
+
query scopes, and upsert:
|
|
449
|
+
|
|
450
|
+
```python
|
|
451
|
+
from tortoise import fields
|
|
452
|
+
|
|
453
|
+
from sillo.record import Model
|
|
454
|
+
|
|
455
|
+
|
|
456
|
+
class User(Model):
|
|
457
|
+
id = fields.IntField(pk=True)
|
|
458
|
+
email = fields.CharField(max_length=255, unique=True)
|
|
459
|
+
plan = fields.CharField(max_length=50, default="free")
|
|
460
|
+
is_active = fields.BooleanField(default=True)
|
|
461
|
+
metadata = fields.TextField(null=True)
|
|
462
|
+
|
|
463
|
+
_casts = {"metadata": "json"} # dict in Python, JSON column in the database
|
|
464
|
+
|
|
465
|
+
@classmethod
|
|
466
|
+
def scope_vip(cls, queryset):
|
|
467
|
+
return queryset.filter(plan="vip")
|
|
468
|
+
|
|
469
|
+
@classmethod
|
|
470
|
+
def scope_active(cls, queryset):
|
|
471
|
+
return queryset.filter(is_active=True)
|
|
472
|
+
|
|
473
|
+
|
|
474
|
+
# from a handler, a script, a job -- scope_vip + scope_active, chained
|
|
475
|
+
active_vip = await User.all().vip().active().order_by("email")
|
|
476
|
+
```
|
|
477
|
+
|
|
478
|
+
A transaction is a context manager with real savepoints, not a special case
|
|
479
|
+
bolted onto the session:
|
|
480
|
+
|
|
481
|
+
```python
|
|
482
|
+
from sillo.record.transactions import transaction
|
|
483
|
+
|
|
484
|
+
# from inside a handler, a job, or a script
|
|
485
|
+
async with transaction() as tx:
|
|
486
|
+
await ledger.debit(from_account, amount)
|
|
487
|
+
async with tx.savepoint():
|
|
488
|
+
await audit_log.write(event) # rolled back alone if this fails
|
|
489
|
+
await ledger.credit(to_account, amount)
|
|
490
|
+
```
|
|
491
|
+
|
|
492
|
+
Global scopes (multi-tenancy filters, soft-delete) attach once and apply to
|
|
493
|
+
every query on the model, with an explicit escape hatch for the query that
|
|
494
|
+
legitimately needs to see past them:
|
|
495
|
+
|
|
496
|
+
```python
|
|
497
|
+
User.add_global_scope(lambda qs: qs.filter(tenant_id=current_tenant()))
|
|
498
|
+
|
|
499
|
+
# from a handler, a job, or a script
|
|
500
|
+
await User.all() # tenant-filtered
|
|
501
|
+
await User.without_global_scopes() # everyone, on purpose
|
|
502
|
+
```
|
|
503
|
+
|
|
504
|
+
## Background Work: Tasks, Queues, and a Scheduler
|
|
505
|
+
|
|
506
|
+
A job is a class with a `handle()` method; dispatching it is a classmethod
|
|
507
|
+
call from anywhere in the request path, a script, or another job:
|
|
508
|
+
|
|
509
|
+
```python
|
|
510
|
+
from sillo.work.queue.job import Job
|
|
511
|
+
|
|
512
|
+
|
|
513
|
+
class SendWelcomeEmail(Job):
|
|
514
|
+
queue = "emails"
|
|
515
|
+
tries = 3
|
|
516
|
+
timeout = 30
|
|
517
|
+
|
|
518
|
+
def __init__(self, user_id: str):
|
|
519
|
+
self.user_id = user_id
|
|
520
|
+
|
|
521
|
+
async def handle(self):
|
|
522
|
+
user = await User.get(id=self.user_id)
|
|
523
|
+
await mailer.send(user.email, "welcome")
|
|
524
|
+
|
|
525
|
+
|
|
526
|
+
# from a handler, a job, or a script
|
|
527
|
+
await SendWelcomeEmail.dispatch(new_user.id)
|
|
528
|
+
await SendWelcomeEmail.dispatch_after(300, new_user.id) # five minutes out
|
|
529
|
+
```
|
|
530
|
+
|
|
531
|
+
The scheduler runs alongside the queue, on the same application lifecycle —
|
|
532
|
+
no separate cron process to keep in sync with the code it calls:
|
|
533
|
+
|
|
534
|
+
```python
|
|
535
|
+
from sillo.work.scheduler.manager import SchedulerManager
|
|
536
|
+
from sillo.work.scheduler.triggers import CronTrigger
|
|
537
|
+
|
|
538
|
+
scheduler = SchedulerManager()
|
|
539
|
+
scheduler.schedule(cleanup_expired_sessions, CronTrigger("0 3 * * *"))
|
|
540
|
+
scheduler.every(3600)(refresh_materialised_views)
|
|
541
|
+
```
|
|
542
|
+
|
|
543
|
+
Retries, timeouts, and rate limits are per-job middleware, not a global
|
|
544
|
+
setting every job inherits whether it needs it or not.
|
|
545
|
+
|
|
546
|
+
## WebSockets
|
|
547
|
+
|
|
548
|
+
A socket handler is declared the same way an HTTP one is — a coroutine
|
|
549
|
+
taking a context, with the same dependency injection and the same path
|
|
550
|
+
parameter conversion:
|
|
551
|
+
|
|
552
|
+
```python
|
|
553
|
+
from sillo import SilloApp
|
|
554
|
+
from sillo.websockets import WebSocketContext, WebSocketDisconnect
|
|
555
|
+
|
|
556
|
+
app = SilloApp()
|
|
557
|
+
|
|
558
|
+
|
|
559
|
+
@app.ws_route("/ws/rooms/{room_id:int}")
|
|
560
|
+
async def chat(ws: WebSocketContext, room_id: int):
|
|
561
|
+
await ws.accept()
|
|
562
|
+
try:
|
|
563
|
+
while True:
|
|
564
|
+
message = await ws.receive_text()
|
|
565
|
+
await broadcast(room_id, message)
|
|
566
|
+
except WebSocketDisconnect:
|
|
567
|
+
await leave(room_id)
|
|
568
|
+
```
|
|
569
|
+
|
|
570
|
+
An HTTP route and a WebSocket route can share a path — a GraphQL endpoint
|
|
571
|
+
serving queries over POST and subscriptions over a socket, say — without one
|
|
572
|
+
shadowing the other or a mismatched scope reaching either handler.
|
|
573
|
+
|
|
574
|
+
## OpenAPI, Without a Second Source of Truth
|
|
575
|
+
|
|
576
|
+
The schema is generated from the same `request_model`, marker constraints,
|
|
577
|
+
and `useAuth` declarations that already enforce the request at runtime —
|
|
578
|
+
there is nothing to keep in sync by hand, and nothing the spec claims that
|
|
579
|
+
the framework does not also check:
|
|
580
|
+
|
|
581
|
+
```python
|
|
582
|
+
from sillo.openapi import Scalar, Swagger
|
|
583
|
+
|
|
584
|
+
app = SilloApp(title="My API", docs=[Swagger(path="/docs"), Scalar(path="/reference")])
|
|
585
|
+
```
|
|
586
|
+
|
|
587
|
+
Both interactive UIs read the one generated document; adding a second
|
|
588
|
+
renderer is a list entry, not a second integration.
|
|
589
|
+
|
|
590
|
+
## Storage, Cache, and Events
|
|
591
|
+
|
|
592
|
+
Storage buckets abstract local disk and S3-compatible object storage behind
|
|
593
|
+
one API, with signed URLs and per-bucket upload policies (content-type
|
|
594
|
+
allowlists, size limits, ownership checks) enforced before a byte is
|
|
595
|
+
written:
|
|
596
|
+
|
|
597
|
+
```python
|
|
598
|
+
from sillo.storage import BucketConfig, StorageConfig, setup_storage
|
|
599
|
+
from sillo.storage.policies import Owned
|
|
600
|
+
|
|
601
|
+
storage = setup_storage(app, StorageConfig(
|
|
602
|
+
default="attachments",
|
|
603
|
+
buckets={
|
|
604
|
+
"attachments": BucketConfig(driver="local", root="storage/attachments"),
|
|
605
|
+
"avatars": BucketConfig(driver="local", root="storage/avatars",
|
|
606
|
+
policy=Owned(), accepts=("image/png", "image/jpeg")),
|
|
607
|
+
},
|
|
608
|
+
))
|
|
609
|
+
```
|
|
610
|
+
|
|
611
|
+
Caching is one decorator, backend-agnostic between an in-memory store and
|
|
612
|
+
Redis:
|
|
613
|
+
|
|
614
|
+
```python
|
|
615
|
+
from sillo.cache import cache
|
|
616
|
+
|
|
617
|
+
|
|
618
|
+
@cache(ttl=120, tags=["catalog"])
|
|
619
|
+
async def get_product(product_id: int):
|
|
620
|
+
return await Product.get(id=product_id)
|
|
621
|
+
```
|
|
622
|
+
|
|
623
|
+
The event system is a plain emitter (`on`, `emit`) with an optional Redis
|
|
624
|
+
transport for distributing events across processes — the same call site
|
|
625
|
+
either way, so a service can start on the in-memory transport and move to
|
|
626
|
+
Redis later without touching the code that emits or listens.
|
|
627
|
+
|
|
381
628
|
## What Sillo Provides
|
|
382
629
|
|
|
383
630
|
- Async ASGI application core, with lifespan-managed startup and shutdown
|