tigrbl 0.3.8.dev1__tar.gz → 0.3.9__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.
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/PKG-INFO +2 -2
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/README.md +1 -1
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/pyproject.toml +1 -1
- tigrbl-0.3.9/tigrbl/system/favicon/__init__.py +102 -0
- tigrbl-0.3.8.dev1/tigrbl/system/favicon/__init__.py +0 -41
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/LICENSE +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/README.md +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/__init__.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/api/__init__.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/api/_api.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/api/_route.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/api/_router.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/api/_routing.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/api/api_spec.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/api/mro_collect.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/api/resolve.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/api/shortcuts.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/api/tigrbl_api.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/app/__init__.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/app/_app.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/app/_model_registry.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/app/_routing_runtime.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/app/app_spec.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/app/mro_collect.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/app/shortcuts.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/app/tigrbl_app.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/bindings/__init__.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/bindings/api/__init__.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/bindings/api/common.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/bindings/api/include.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/bindings/api/resource_proxy.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/bindings/api/rpc.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/bindings/columns.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/bindings/handlers/__init__.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/bindings/handlers/builder.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/bindings/handlers/ctx.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/bindings/handlers/identifiers.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/bindings/handlers/namespaces.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/bindings/handlers/steps.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/bindings/hooks.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/bindings/model.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/bindings/model_helpers.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/bindings/model_registry.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/bindings/rest/__init__.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/bindings/rest/attach.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/bindings/rest/collection.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/bindings/rest/common.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/bindings/rest/fastapi.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/bindings/rest/helpers.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/bindings/rest/io.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/bindings/rest/io_headers.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/bindings/rest/member.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/bindings/rest/router.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/bindings/rest/routing.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/bindings/rpc.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/bindings/schemas/__init__.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/bindings/schemas/builder.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/bindings/schemas/defaults.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/bindings/schemas/utils.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/column/README.md +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/column/__init__.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/column/_column.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/column/column_spec.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/column/field_spec.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/column/infer/__init__.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/column/infer/core.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/column/infer/jsonhints.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/column/infer/planning.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/column/infer/types.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/column/infer/utils.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/column/io_spec.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/column/mro_collect.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/column/shortcuts.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/column/storage_spec.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/config/__init__.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/config/constants.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/config/defaults.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/config/resolver.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/core/__init__.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/core/crud/__init__.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/core/crud/bulk.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/core/crud/helpers/__init__.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/core/crud/helpers/db.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/core/crud/helpers/enum.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/core/crud/helpers/filters.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/core/crud/helpers/model.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/core/crud/helpers/normalize.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/core/crud/ops.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/core/crud/params.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/core/resolver.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/core/router_runtime.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/ddl/__init__.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/decorators.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/deps/__init__.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/deps/jinja.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/deps/pydantic.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/deps/sqlalchemy.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/docs/verbosity.md +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/engine/__init__.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/engine/_engine.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/engine/bind.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/engine/builders.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/engine/capabilities.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/engine/collect.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/engine/decorators.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/engine/docs/PLUGINS.md +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/engine/engine_spec.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/engine/plugins.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/engine/registry.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/engine/resolver.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/engine/shortcuts.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/headers/__init__.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/headers/_header.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/hook/__init__.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/hook/_hook.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/hook/decorators.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/hook/exceptions.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/hook/hook_spec.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/hook/mro_collect.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/hook/shortcuts.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/hook/types.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/middlewares/__init__.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/middlewares/compose.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/middlewares/cors.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/middlewares/decorators.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/middlewares/middleware.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/middlewares/spec.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/op/__init__.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/op/_op.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/op/canonical.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/op/collect.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/op/decorators.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/op/model_registry.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/op/mro_collect.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/op/resolver.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/op/types.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/orm/__init__.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/orm/mixins/_RowBound.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/orm/mixins/__init__.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/orm/mixins/bootstrappable.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/orm/mixins/bound.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/orm/mixins/edges.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/orm/mixins/fields.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/orm/mixins/hierarchy.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/orm/mixins/key_digest.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/orm/mixins/lifecycle.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/orm/mixins/locks.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/orm/mixins/markers.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/orm/mixins/operations.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/orm/mixins/ownable.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/orm/mixins/principals.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/orm/mixins/tenant_bound.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/orm/mixins/upsertable.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/orm/mixins/utils.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/orm/tables/__init__.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/orm/tables/_base.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/orm/tables/audit.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/orm/tables/client.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/orm/tables/group.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/orm/tables/org.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/orm/tables/rbac.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/orm/tables/status.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/orm/tables/tenant.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/orm/tables/user.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/requests/__init__.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/requests/_request.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/responses/README.md +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/responses/__init__.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/responses/_response.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/responses/bind.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/responses/decorators.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/responses/resolver.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/responses/shortcuts.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/responses/types.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/rest/__init__.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/runtime/README.md +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/runtime/__init__.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/runtime/atoms/__init__.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/runtime/atoms/emit/__init__.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/runtime/atoms/emit/paired_post.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/runtime/atoms/emit/paired_pre.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/runtime/atoms/emit/readtime_alias.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/runtime/atoms/out/__init__.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/runtime/atoms/out/masking.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/runtime/atoms/refresh/__init__.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/runtime/atoms/refresh/demand.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/runtime/atoms/resolve/__init__.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/runtime/atoms/resolve/assemble.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/runtime/atoms/resolve/paired_gen.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/runtime/atoms/response/__init__.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/runtime/atoms/response/headers_from_payload.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/runtime/atoms/response/negotiate.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/runtime/atoms/response/negotiation.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/runtime/atoms/response/render.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/runtime/atoms/response/renderer.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/runtime/atoms/response/template.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/runtime/atoms/response/templates.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/runtime/atoms/schema/__init__.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/runtime/atoms/schema/collect_in.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/runtime/atoms/schema/collect_out.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/runtime/atoms/storage/__init__.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/runtime/atoms/storage/to_stored.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/runtime/atoms/wire/__init__.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/runtime/atoms/wire/build_in.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/runtime/atoms/wire/build_out.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/runtime/atoms/wire/dump.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/runtime/atoms/wire/validate_in.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/runtime/context.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/runtime/events.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/runtime/executor/__init__.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/runtime/executor/guards.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/runtime/executor/helpers.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/runtime/executor/invoke.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/runtime/executor/types.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/runtime/kernel.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/runtime/labels.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/runtime/opview.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/runtime/ordering.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/runtime/status/__init__.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/runtime/status/converters.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/runtime/status/exceptions.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/runtime/status/mappings.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/runtime/status/utils.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/runtime/system.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/runtime/trace.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/schema/__init__.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/schema/_schema.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/schema/builder/__init__.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/schema/builder/build_schema.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/schema/builder/cache.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/schema/builder/compat.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/schema/builder/extras.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/schema/builder/helpers.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/schema/builder/list_params.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/schema/builder/strip_parent_fields.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/schema/collect.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/schema/decorators.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/schema/get_schema.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/schema/schema_spec.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/schema/shortcuts.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/schema/types.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/schema/utils.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/security/__init__.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/security/dependencies.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/security/schemes/__init__.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/security/schemes/_base.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/security/schemes/api_key.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/security/schemes/http_bearer.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/security/schemes/mutual_tls.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/security/schemes/oauth2.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/security/schemes/openid_connect.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/session/README.md +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/session/__init__.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/session/abc.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/session/base.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/session/decorators.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/session/default.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/session/shortcuts.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/session/spec.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/shortcuts.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/specs.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/system/__init__.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/system/diagnostics/__init__.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/system/diagnostics/compat.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/system/diagnostics/healthz.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/system/diagnostics/hookz.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/system/diagnostics/kernelz.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/system/diagnostics/methodz.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/system/diagnostics/router.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/system/diagnostics/utils.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/system/docs/__init__.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/system/docs/lens.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/system/docs/openapi/__init__.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/system/docs/openapi/helpers.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/system/docs/openapi/metadata.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/system/docs/openapi/mount.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/system/docs/openapi/schema.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/system/docs/openrpc.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/system/docs/swagger.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/system/favicon/assets/favicon.svg +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/system/uvicorn.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/table/__init__.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/table/_base.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/table/_table.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/table/mro_collect.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/table/shortcuts.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/table/table_spec.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/transport/__init__.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/transport/asgi_wsgi.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/transport/background.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/transport/httpx.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/transport/jsonrpc/__init__.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/transport/jsonrpc/dispatcher.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/transport/jsonrpc/helpers.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/transport/jsonrpc/models.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/transport/jsonrpc/openrpc.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/transport/rest/__init__.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/transport/rest/aggregator.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/transport/rest/decorators.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/types/__init__.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/types/allow_anon_provider.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/types/authn_abc.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/types/nested_path_provider.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/types/op.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/types/op_config_provider.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/types/op_verb_alias_provider.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/types/request_extras_provider.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/types/response_extras_provider.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/types/table_config_provider.py +0 -0
- {tigrbl-0.3.8.dev1 → tigrbl-0.3.9}/tigrbl/types/uuid.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: tigrbl
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.9
|
|
4
4
|
Summary: A modern pure ASGI/WSGI Python framework for building schema-first REST and JSON-RPC APIs with SQLAlchemy models, typed validation, lifecycle hooks, and engine extension support.
|
|
5
5
|
License-Expression: Apache-2.0
|
|
6
6
|
License-File: LICENSE
|
|
@@ -312,7 +312,7 @@ increasing order of precedence:
|
|
|
312
312
|
2. app config
|
|
313
313
|
3. API config
|
|
314
314
|
4. table config
|
|
315
|
-
5. column
|
|
315
|
+
5. column config
|
|
316
316
|
6. operation spec
|
|
317
317
|
7. per-request overrides
|
|
318
318
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "tigrbl"
|
|
3
|
-
version = "0.3.
|
|
3
|
+
version = "0.3.9"
|
|
4
4
|
description = "A modern pure ASGI/WSGI Python framework for building schema-first REST and JSON-RPC APIs with SQLAlchemy models, typed validation, lifecycle hooks, and engine extension support."
|
|
5
5
|
license = "Apache-2.0"
|
|
6
6
|
readme = "README.md"
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from pathlib import Path
|
|
4
|
+
from typing import Any
|
|
5
|
+
|
|
6
|
+
from ...responses import FileResponse, RedirectResponse
|
|
7
|
+
|
|
8
|
+
FAVICON_PATH = Path(__file__).with_name("assets") / "favicon.svg"
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def favicon_endpoint(*, favicon_path: str | Path | None = FAVICON_PATH):
|
|
12
|
+
"""Build an endpoint function that serves the configured favicon."""
|
|
13
|
+
|
|
14
|
+
resolved = Path(FAVICON_PATH if favicon_path is None else favicon_path)
|
|
15
|
+
|
|
16
|
+
def _favicon() -> FileResponse:
|
|
17
|
+
if resolved.suffix.lower() == ".ico":
|
|
18
|
+
return FileResponse(str(resolved), media_type="image/x-icon")
|
|
19
|
+
return FileResponse(str(resolved), media_type="image/svg+xml")
|
|
20
|
+
|
|
21
|
+
return _favicon
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def favicon_ico_redirect_endpoint(path: str = "/favicon.svg"):
|
|
25
|
+
"""Build an endpoint function that redirects ``/favicon.ico`` to SVG."""
|
|
26
|
+
|
|
27
|
+
def _favicon_redirect() -> RedirectResponse:
|
|
28
|
+
return RedirectResponse(url=path, status_code=307)
|
|
29
|
+
|
|
30
|
+
return _favicon_redirect
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def _remove_existing_favicon_routes(router: Any, *paths: str) -> None:
|
|
34
|
+
"""Remove existing routes matching favicon paths so remounts take precedence."""
|
|
35
|
+
|
|
36
|
+
path_set = set(paths)
|
|
37
|
+
routes = getattr(router, "_routes", None)
|
|
38
|
+
if routes is None:
|
|
39
|
+
routes = getattr(router, "routes", None)
|
|
40
|
+
if routes is None:
|
|
41
|
+
return
|
|
42
|
+
|
|
43
|
+
filtered = [
|
|
44
|
+
route
|
|
45
|
+
for route in routes
|
|
46
|
+
if (getattr(route, "path_template", None) or getattr(route, "path", None))
|
|
47
|
+
not in path_set
|
|
48
|
+
]
|
|
49
|
+
|
|
50
|
+
if hasattr(router, "_routes"):
|
|
51
|
+
router._routes = filtered
|
|
52
|
+
if hasattr(router, "routes"):
|
|
53
|
+
router.routes = filtered
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def mount_favicon(
|
|
57
|
+
router: Any,
|
|
58
|
+
*,
|
|
59
|
+
path: str = "/favicon.svg",
|
|
60
|
+
ico_path: str = "/favicon.ico",
|
|
61
|
+
favicon_path: str | Path | None = FAVICON_PATH,
|
|
62
|
+
name: str = "__favicon__",
|
|
63
|
+
) -> Any:
|
|
64
|
+
"""Mount a favicon endpoint onto ``router``."""
|
|
65
|
+
|
|
66
|
+
resolved = Path(FAVICON_PATH if favicon_path is None else favicon_path)
|
|
67
|
+
|
|
68
|
+
_remove_existing_favicon_routes(router, path, ico_path)
|
|
69
|
+
|
|
70
|
+
if resolved.suffix.lower() == ".svg":
|
|
71
|
+
router.add_api_route(
|
|
72
|
+
path,
|
|
73
|
+
favicon_endpoint(favicon_path=resolved),
|
|
74
|
+
methods=["GET"],
|
|
75
|
+
name=name,
|
|
76
|
+
include_in_schema=False,
|
|
77
|
+
)
|
|
78
|
+
router.add_api_route(
|
|
79
|
+
ico_path,
|
|
80
|
+
favicon_ico_redirect_endpoint(path=path),
|
|
81
|
+
methods=["GET"],
|
|
82
|
+
name=f"{name}_ico_redirect",
|
|
83
|
+
include_in_schema=False,
|
|
84
|
+
)
|
|
85
|
+
return router
|
|
86
|
+
|
|
87
|
+
router.add_api_route(
|
|
88
|
+
ico_path,
|
|
89
|
+
favicon_endpoint(favicon_path=resolved),
|
|
90
|
+
methods=["GET"],
|
|
91
|
+
name=name,
|
|
92
|
+
include_in_schema=False,
|
|
93
|
+
)
|
|
94
|
+
return router
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
__all__ = [
|
|
98
|
+
"FAVICON_PATH",
|
|
99
|
+
"favicon_endpoint",
|
|
100
|
+
"favicon_ico_redirect_endpoint",
|
|
101
|
+
"mount_favicon",
|
|
102
|
+
]
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
|
-
from pathlib import Path
|
|
4
|
-
from typing import Any
|
|
5
|
-
|
|
6
|
-
from ...responses import FileResponse
|
|
7
|
-
|
|
8
|
-
FAVICON_PATH = Path(__file__).with_name("assets") / "favicon.svg"
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
def favicon_endpoint(*, favicon_path: str | Path | None = FAVICON_PATH):
|
|
12
|
-
"""Build an endpoint function that serves the configured favicon."""
|
|
13
|
-
|
|
14
|
-
resolved = Path(FAVICON_PATH if favicon_path is None else favicon_path)
|
|
15
|
-
|
|
16
|
-
def _favicon() -> FileResponse:
|
|
17
|
-
return FileResponse(str(resolved), media_type="image/svg+xml")
|
|
18
|
-
|
|
19
|
-
return _favicon
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
def mount_favicon(
|
|
23
|
-
router: Any,
|
|
24
|
-
*,
|
|
25
|
-
path: str = "/favicon.ico",
|
|
26
|
-
favicon_path: str | Path | None = FAVICON_PATH,
|
|
27
|
-
name: str = "__favicon__",
|
|
28
|
-
) -> Any:
|
|
29
|
-
"""Mount a favicon endpoint onto ``router``."""
|
|
30
|
-
|
|
31
|
-
router.add_api_route(
|
|
32
|
-
path,
|
|
33
|
-
favicon_endpoint(favicon_path=favicon_path),
|
|
34
|
-
methods=["GET"],
|
|
35
|
-
name=name,
|
|
36
|
-
include_in_schema=False,
|
|
37
|
-
)
|
|
38
|
-
return router
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
__all__ = ["FAVICON_PATH", "favicon_endpoint", "mount_favicon"]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|