clear-skies 1.20.3__tar.gz → 1.21.1__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.
Potentially problematic release.
This version of clear-skies might be problematic. Click here for more details.
- {clear_skies-1.20.3 → clear_skies-1.21.1}/PKG-INFO +2 -1
- {clear_skies-1.20.3 → clear_skies-1.21.1}/pyproject.toml +2 -1
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/column_types/created.py +3 -3
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/column_types/created_micro.py +3 -3
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/column_types/datetime.py +4 -4
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/column_types/datetime_micro.py +3 -2
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/column_types/timestamp.py +4 -3
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/column_types/updated.py +5 -3
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/column_types/updated_micro.py +5 -3
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/di/standard_dependencies.py +5 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/model.py +37 -33
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/models.py +43 -43
- {clear_skies-1.20.3 → clear_skies-1.21.1}/LICENSE +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/README.md +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/__init__.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/application.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/authentication/__init__.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/authentication/auth0_jwks.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/authentication/auth_exception.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/authentication/authorization.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/authentication/jwks.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/authentication/jwks_jwcrypto.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/authentication/public.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/authentication/secret_bearer.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/autodoc/__init__.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/autodoc/formats/__init__.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/autodoc/formats/oai3_json/__init__.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/autodoc/formats/oai3_json/oai3_json.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/autodoc/formats/oai3_json/oai3_schema_resolver.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/autodoc/formats/oai3_json/parameter.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/autodoc/formats/oai3_json/request.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/autodoc/formats/oai3_json/response.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/autodoc/formats/oai3_json/schema/__init__.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/autodoc/formats/oai3_json/schema/array.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/autodoc/formats/oai3_json/schema/default.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/autodoc/formats/oai3_json/schema/enum.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/autodoc/formats/oai3_json/schema/object.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/autodoc/formats/oai3_json/test.json +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/autodoc/request/__init__.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/autodoc/request/header.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/autodoc/request/json_body.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/autodoc/request/request.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/autodoc/request/url_parameter.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/autodoc/request/url_path.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/autodoc/response/__init__.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/autodoc/response/response.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/autodoc/schema/__init__.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/autodoc/schema/array.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/autodoc/schema/base64.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/autodoc/schema/boolean.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/autodoc/schema/date.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/autodoc/schema/datetime.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/autodoc/schema/double.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/autodoc/schema/enum.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/autodoc/schema/integer.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/autodoc/schema/long.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/autodoc/schema/number.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/autodoc/schema/object.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/autodoc/schema/password.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/autodoc/schema/string.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/backends/__init__.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/backends/api_backend.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/backends/backend.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/backends/cursor_backend.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/backends/example_backend.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/backends/file_backend.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/backends/json_backend.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/backends/memory_backend.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/backends/restful_api_advanced_search_backend.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/backends/secrets_backend.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/binding_config.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/column_types/__init__.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/column_types/audit.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/column_types/belongs_to.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/column_types/boolean.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/column_types/category_tree.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/column_types/column.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/column_types/created_by_authorization_data.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/column_types/created_by_header.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/column_types/created_by_ip.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/column_types/created_by_routing_data.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/column_types/created_by_user_agent.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/column_types/email.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/column_types/float.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/column_types/has_many.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/column_types/has_one.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/column_types/integer.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/column_types/json.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/column_types/many_to_many.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/column_types/many_to_many_with_data.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/column_types/phone.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/column_types/select.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/column_types/string.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/column_types/uuid.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/columns.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/condition_parser.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/contexts/__init__.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/contexts/bash.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/contexts/build_context.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/contexts/cli.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/contexts/context.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/contexts/convert_to_application.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/contexts/extract_handler.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/contexts/test.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/contexts/wsgi.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/decorators/__init__.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/decorators/auth0_jwks.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/decorators/authorization.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/decorators/binding_classes.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/decorators/binding_modules.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/decorators/bindings.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/decorators/create.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/decorators/delete.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/decorators/docs.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/decorators/get.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/decorators/jwks.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/decorators/merge.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/decorators/patch.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/decorators/post.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/decorators/public.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/decorators/response_headers.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/decorators/return_raw_response.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/decorators/schema.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/decorators/secret_bearer.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/decorators/security_headers.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/di/__init__.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/di/additional_config.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/di/additional_config_auto_import.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/di/di.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/di/test_module/__init__.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/di/test_module/another_module/__init__.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/di/test_module/module_class.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/environment.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/functional/__init__.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/functional/string.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/functional/validations.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/handlers/__init__.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/handlers/advanced_search.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/handlers/base.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/handlers/callable.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/handlers/create.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/handlers/crud_by_method.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/handlers/database_connector.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/handlers/delete.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/handlers/exceptions/__init__.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/handlers/exceptions/authentication.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/handlers/exceptions/authorization.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/handlers/exceptions/client_error.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/handlers/exceptions/input_error.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/handlers/exceptions/not_found.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/handlers/get.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/handlers/health_check.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/handlers/input_processing.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/handlers/list.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/handlers/mygrations.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/handlers/request_method_routing.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/handlers/restful_api.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/handlers/routing.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/handlers/schema_helper.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/handlers/simple_routing.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/handlers/simple_routing_route.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/handlers/simple_search.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/handlers/update.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/handlers/write.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/input_outputs/__init__.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/input_outputs/cli.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/input_outputs/exceptions/__init__.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/input_outputs/exceptions/cli_input_error.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/input_outputs/exceptions/cli_not_found.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/input_outputs/input_output.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/input_outputs/wsgi.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/input_requirements/__init__.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/input_requirements/after.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/input_requirements/before.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/input_requirements/in_the_future_at_least.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/input_requirements/in_the_future_at_most.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/input_requirements/in_the_past_at_least.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/input_requirements/in_the_past_at_most.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/input_requirements/maximum_length.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/input_requirements/maximum_value.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/input_requirements/minimum_length.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/input_requirements/minimum_value.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/input_requirements/required.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/input_requirements/requirement.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/input_requirements/time_delta.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/input_requirements/unique.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/mocks/__init__.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/mocks/input_output.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/mocks/models.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/secrets/__init__.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/secrets/additional_configs/__init__.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/secrets/additional_configs/mysql_connection_dynamic_producer.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/secrets/additional_configs/mysql_connection_dynamic_producer_via_ssh_cert_bastion.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/secrets/akeyless.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/secrets/exceptions/__init__.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/secrets/exceptions/not_found.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/secrets/secrets.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/security_headers/__init__.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/security_headers/base.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/security_headers/cache_control.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/security_headers/cors.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/security_headers/csp.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/security_headers/hsts.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/security_headers/x_content_type_options.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/security_headers/x_frame_options.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/tests/__init__.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/tests/simple_api/__init__.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/tests/simple_api/models/__init__.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/tests/simple_api/models/status.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/tests/simple_api/models/user.py +0 -0
- {clear_skies-1.20.3 → clear_skies-1.21.1}/src/clearskies/tests/simple_api/users_api.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: clear-skies
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.21.1
|
|
4
4
|
Summary: A framework for building backends in the cloud
|
|
5
5
|
Home-page: https://github.com/cmancone/clearskies
|
|
6
6
|
License: MIT
|
|
@@ -25,6 +25,7 @@ Requires-Dist: jose (>=1.0.0,<2.0.0) ; extra == "jose"
|
|
|
25
25
|
Requires-Dist: jwcrypto (>=1.5.6,<2.0.0) ; extra == "jwcrypto"
|
|
26
26
|
Requires-Dist: pymysql (>=1.1.0,<2.0.0) ; extra == "mysql"
|
|
27
27
|
Requires-Dist: requests (>=2.31.0,<3.0.0)
|
|
28
|
+
Requires-Dist: typing-extensions (>=4.12.0,<5.0.0) ; python_version >= "3.10" and python_version < "3.11"
|
|
28
29
|
Project-URL: Repository, https://github.com/cmancone/clearskies
|
|
29
30
|
Description-Content-Type: text/markdown
|
|
30
31
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[tool.poetry]
|
|
4
4
|
name = "clear-skies"
|
|
5
|
-
version = "1.
|
|
5
|
+
version = "1.21.1"
|
|
6
6
|
description = "A framework for building backends in the cloud"
|
|
7
7
|
authors = [
|
|
8
8
|
"Conor Mancone <cmancone@gmail.com>",
|
|
@@ -34,6 +34,7 @@ akeyless-cloud-id = {version = "^0.2.3", optional = true}
|
|
|
34
34
|
pymysql = {version = "^1.1.0", optional = true}
|
|
35
35
|
jose = {version = "^1.0.0", optional = true}
|
|
36
36
|
jwcrypto = {version = "^1.5.6", optional = true}
|
|
37
|
+
typing-extensions = {version = "^4.12.0", python = ">=3.10,<3.11"}
|
|
37
38
|
|
|
38
39
|
[[tool.poetry.source]]
|
|
39
40
|
name = "PyPI"
|
|
@@ -8,8 +8,8 @@ class Created(DateTime):
|
|
|
8
8
|
"utc",
|
|
9
9
|
]
|
|
10
10
|
|
|
11
|
-
def __init__(self, di, datetime):
|
|
12
|
-
super().__init__(di)
|
|
11
|
+
def __init__(self, di, datetime, timezone):
|
|
12
|
+
super().__init__(di, timezone)
|
|
13
13
|
self.datetime = datetime
|
|
14
14
|
|
|
15
15
|
@property
|
|
@@ -22,5 +22,5 @@ class Created(DateTime):
|
|
|
22
22
|
if self.config("utc", silent=True):
|
|
23
23
|
now = self.datetime.datetime.now(self.datetime.timezone.utc)
|
|
24
24
|
else:
|
|
25
|
-
now = self.datetime.datetime.now()
|
|
25
|
+
now = self.datetime.datetime.now(self._timezone)
|
|
26
26
|
return {**data, self.name: now}
|
|
@@ -8,8 +8,8 @@ class CreatedMicro(DateTimeMicro):
|
|
|
8
8
|
"utc",
|
|
9
9
|
]
|
|
10
10
|
|
|
11
|
-
def __init__(self, di, datetime):
|
|
12
|
-
super().__init__(di)
|
|
11
|
+
def __init__(self, di, datetime, timezone):
|
|
12
|
+
super().__init__(di, timezone)
|
|
13
13
|
self.datetime = datetime
|
|
14
14
|
|
|
15
15
|
@property
|
|
@@ -22,5 +22,5 @@ class CreatedMicro(DateTimeMicro):
|
|
|
22
22
|
if self.config("utc", silent=True):
|
|
23
23
|
now = self.datetime.datetime.now(self.datetime.timezone.utc)
|
|
24
24
|
else:
|
|
25
|
-
now = self.datetime.datetime.now()
|
|
25
|
+
now = self.datetime.datetime.now(self._timezone)
|
|
26
26
|
return {**data, self.name: now}
|
|
@@ -3,7 +3,6 @@ from datetime import datetime, timezone
|
|
|
3
3
|
import dateparser
|
|
4
4
|
from ..autodoc.schema import DateTime as AutoDocDateTime
|
|
5
5
|
|
|
6
|
-
|
|
7
6
|
class DateTime(Column):
|
|
8
7
|
_auto_doc_class = AutoDocDateTime
|
|
9
8
|
_date_format = "%Y-%m-%d %H:%M:%S"
|
|
@@ -14,8 +13,9 @@ class DateTime(Column):
|
|
|
14
13
|
"default_date",
|
|
15
14
|
]
|
|
16
15
|
|
|
17
|
-
def __init__(self, di):
|
|
16
|
+
def __init__(self, di, timezone: datetime.tzinfo):
|
|
18
17
|
super().__init__(di)
|
|
18
|
+
self._timezone = timezone
|
|
19
19
|
|
|
20
20
|
def _finalize_configuration(self, configuration):
|
|
21
21
|
return {
|
|
@@ -33,7 +33,7 @@ class DateTime(Column):
|
|
|
33
33
|
date = dateparser.parse(value)
|
|
34
34
|
else:
|
|
35
35
|
date = value
|
|
36
|
-
return date.replace(tzinfo=
|
|
36
|
+
return date.replace(tzinfo=self._timezone) if date else None
|
|
37
37
|
|
|
38
38
|
def to_backend(self, data):
|
|
39
39
|
if not self.name in data or type(data[self.name]) == str or data[self.name] == None:
|
|
@@ -47,7 +47,7 @@ class DateTime(Column):
|
|
|
47
47
|
return {self.name: datetime.isoformat() if datetime else None}
|
|
48
48
|
|
|
49
49
|
def build_condition(self, value, operator=None, column_prefix=""):
|
|
50
|
-
date = dateparser.parse(value).astimezone(
|
|
50
|
+
date = dateparser.parse(value).astimezone(self._timezone).strftime(self.config("date_format"))
|
|
51
51
|
if not operator:
|
|
52
52
|
operator = "="
|
|
53
53
|
return f"{column_prefix}{self.name}{operator}{date}"
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
from re import T
|
|
1
2
|
from .datetime import DateTime
|
|
2
3
|
from datetime import datetime, timezone
|
|
3
4
|
import dateparser
|
|
@@ -8,5 +9,5 @@ class DateTimeMicro(DateTime):
|
|
|
8
9
|
_date_format = "%Y-%m-%d %H:%M:%S.%f"
|
|
9
10
|
_default_date = "0000-00-00 00:00:00.000000"
|
|
10
11
|
|
|
11
|
-
def __init__(self, di):
|
|
12
|
-
super().__init__(di)
|
|
12
|
+
def __init__(self, di, timezone: datetime.tzinfo):
|
|
13
|
+
super().__init__(di, timezone)
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import time
|
|
1
2
|
from .datetime import DateTime
|
|
2
3
|
from datetime import datetime, timezone
|
|
3
4
|
import dateparser
|
|
@@ -28,16 +29,16 @@ class Timestamp(DateTime):
|
|
|
28
29
|
raise ValueError(
|
|
29
30
|
f"Invalid data was found in the backend for model {self.model_class.__name__} and column {self.name}: a string value was found that is not a timestamp. It was '{value}'"
|
|
30
31
|
)
|
|
31
|
-
date = datetime.fromtimestamp(int(value) / mult)
|
|
32
|
+
date = datetime.fromtimestamp(int(value) / mult, self._timezone)
|
|
32
33
|
elif isinstance(value, int):
|
|
33
|
-
date = datetime.fromtimestamp(value / mult)
|
|
34
|
+
date = datetime.fromtimestamp(value / mult, self._timezone)
|
|
34
35
|
else:
|
|
35
36
|
if not isinstance(value, datetime):
|
|
36
37
|
raise ValueError(
|
|
37
38
|
f"Invalid data was found in the backend for model {self.model_class.__name__} and column {self.name}: the value was neither an integer, a string, nor a datetime object"
|
|
38
39
|
)
|
|
39
40
|
date = value
|
|
40
|
-
return date.replace(tzinfo=
|
|
41
|
+
return date.replace(tzinfo=self._timezone) if date else None
|
|
41
42
|
|
|
42
43
|
def to_backend(self, data):
|
|
43
44
|
if not self.name in data or isinstance(data[self.name], int) or data[self.name] == None:
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import datetime
|
|
2
|
+
|
|
1
3
|
from .datetime import DateTime
|
|
2
4
|
|
|
3
5
|
|
|
@@ -8,8 +10,8 @@ class Updated(DateTime):
|
|
|
8
10
|
"utc",
|
|
9
11
|
]
|
|
10
12
|
|
|
11
|
-
def __init__(self, di, datetime):
|
|
12
|
-
super().__init__(di)
|
|
13
|
+
def __init__(self, di, datetime, timezone: datetime.tzinfo):
|
|
14
|
+
super().__init__(di, timezone)
|
|
13
15
|
self.datetime = datetime
|
|
14
16
|
|
|
15
17
|
@property
|
|
@@ -20,5 +22,5 @@ class Updated(DateTime):
|
|
|
20
22
|
if self.config("utc", silent=True):
|
|
21
23
|
now = self.datetime.datetime.now(self.datetime.timezone.utc)
|
|
22
24
|
else:
|
|
23
|
-
now = self.datetime.datetime.now()
|
|
25
|
+
now = self.datetime.datetime.now(self._timezone)
|
|
24
26
|
return {**data, self.name: now}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import datetime
|
|
2
|
+
|
|
1
3
|
from .datetime_micro import DateTimeMicro
|
|
2
4
|
|
|
3
5
|
|
|
@@ -8,8 +10,8 @@ class UpdatedMicro(DateTimeMicro):
|
|
|
8
10
|
"utc",
|
|
9
11
|
]
|
|
10
12
|
|
|
11
|
-
def __init__(self, di, datetime):
|
|
12
|
-
super().__init__(di)
|
|
13
|
+
def __init__(self, di, datetime, timezone: datetime.tzinfo):
|
|
14
|
+
super().__init__(di, timezone)
|
|
13
15
|
self.datetime = datetime
|
|
14
16
|
|
|
15
17
|
@property
|
|
@@ -20,5 +22,5 @@ class UpdatedMicro(DateTimeMicro):
|
|
|
20
22
|
if self.config("utc", silent=True):
|
|
21
23
|
now = self.datetime.datetime.now(self.datetime.timezone.utc)
|
|
22
24
|
else:
|
|
23
|
-
now = self.datetime.datetime.now()
|
|
25
|
+
now = self.datetime.datetime.now(self._timezone)
|
|
24
26
|
return {**data, self.name: now}
|
|
@@ -5,6 +5,10 @@ from .functional import string
|
|
|
5
5
|
import re
|
|
6
6
|
from .models import Models
|
|
7
7
|
|
|
8
|
+
try:
|
|
9
|
+
from typing_extensions import Self
|
|
10
|
+
except ModuleNotFoundError:
|
|
11
|
+
from typing import Self
|
|
8
12
|
|
|
9
13
|
class Model(Models):
|
|
10
14
|
_configured_columns = None
|
|
@@ -14,14 +18,14 @@ class Model(Models):
|
|
|
14
18
|
_transformed = None
|
|
15
19
|
id_column_name = "id"
|
|
16
20
|
|
|
17
|
-
def __init__(self, backend, columns):
|
|
21
|
+
def __init__(self: Self, backend, columns):
|
|
18
22
|
super().__init__(backend, columns)
|
|
19
23
|
self._transformed = {}
|
|
20
24
|
self._data = {}
|
|
21
25
|
self._previous_data = None
|
|
22
26
|
self._touched_columns = None
|
|
23
27
|
|
|
24
|
-
def model_class(self):
|
|
28
|
+
def model_class(self: Self) -> type[Self]:
|
|
25
29
|
"""
|
|
26
30
|
Return the model class that this models object will find/return instances of
|
|
27
31
|
|
|
@@ -30,7 +34,7 @@ class Model(Models):
|
|
|
30
34
|
return self.__class__
|
|
31
35
|
|
|
32
36
|
@classmethod
|
|
33
|
-
def table_name(cls):
|
|
37
|
+
def table_name(cls: type[Self]) -> str:
|
|
34
38
|
"""Return the name of the table that the model uses for data storage"""
|
|
35
39
|
singular = string.camel_case_to_snake_case(cls.__name__)
|
|
36
40
|
if singular[-1] == "y":
|
|
@@ -40,16 +44,16 @@ class Model(Models):
|
|
|
40
44
|
return f"{singular}s"
|
|
41
45
|
|
|
42
46
|
@abstractmethod
|
|
43
|
-
def columns_configuration(self):
|
|
47
|
+
def columns_configuration(self: Self):
|
|
44
48
|
"""Returns an ordered dictionary with the configuration for the columns"""
|
|
45
49
|
pass
|
|
46
50
|
|
|
47
|
-
def all_columns(self):
|
|
51
|
+
def all_columns(self: Self):
|
|
48
52
|
default = OrderedDict([(self.id_column_name, {"class": UUID})])
|
|
49
53
|
default.update(self.columns_configuration())
|
|
50
54
|
return default
|
|
51
55
|
|
|
52
|
-
def columns(self, overrides=None):
|
|
56
|
+
def columns(self: Self, overrides=None):
|
|
53
57
|
# no caching if we have overrides
|
|
54
58
|
if overrides is not None:
|
|
55
59
|
return self._columns.configure(self.all_columns(), self.__class__, overrides=overrides)
|
|
@@ -58,13 +62,13 @@ class Model(Models):
|
|
|
58
62
|
self._configured_columns = self._columns.configure(self.all_columns(), self.__class__)
|
|
59
63
|
return self._configured_columns
|
|
60
64
|
|
|
61
|
-
def supports_n_plus_one(self):
|
|
65
|
+
def supports_n_plus_one(self: Self):
|
|
62
66
|
return self._backend.supports_n_plus_one
|
|
63
67
|
|
|
64
|
-
def __getitem__(self, column_name):
|
|
68
|
+
def __getitem__(self: Self, column_name):
|
|
65
69
|
return self.__getattr__(column_name)
|
|
66
70
|
|
|
67
|
-
def __getattr__(self, column_name):
|
|
71
|
+
def __getattr__(self: Self, column_name):
|
|
68
72
|
# this should be adjusted to only return None for empty records if the column name corresponds
|
|
69
73
|
# to an actual column in the table.
|
|
70
74
|
if not self.exists:
|
|
@@ -72,13 +76,13 @@ class Model(Models):
|
|
|
72
76
|
|
|
73
77
|
return self.get_transformed_from_data(column_name, self._data)
|
|
74
78
|
|
|
75
|
-
def get(self, column_name, silent=False):
|
|
79
|
+
def get(self: Self, column_name, silent=False):
|
|
76
80
|
if not self.exists:
|
|
77
81
|
return None
|
|
78
82
|
|
|
79
83
|
return self.get_transformed_from_data(column_name, self._data, silent=silent)
|
|
80
84
|
|
|
81
|
-
def get_transformed_from_data(self, column_name, data, cache=True, check_providers=True, silent=False):
|
|
85
|
+
def get_transformed_from_data(self: Self, column_name, data, cache=True, check_providers=True, silent=False):
|
|
82
86
|
if cache and column_name in self._transformed:
|
|
83
87
|
return self._transformed[column_name]
|
|
84
88
|
|
|
@@ -111,18 +115,18 @@ class Model(Models):
|
|
|
111
115
|
return value
|
|
112
116
|
|
|
113
117
|
@property
|
|
114
|
-
def exists(self):
|
|
118
|
+
def exists(self: Self) -> bool:
|
|
115
119
|
return True if (self.id_column_name in self._data and self._data[self.id_column_name]) else False
|
|
116
120
|
|
|
117
121
|
@property
|
|
118
|
-
def data(self):
|
|
122
|
+
def data(self: Self):
|
|
119
123
|
return self._data
|
|
120
124
|
|
|
121
125
|
@data.setter
|
|
122
|
-
def data(self, data):
|
|
126
|
+
def data(self: Self, data) -> None:
|
|
123
127
|
self._data = {} if data is None else data
|
|
124
128
|
|
|
125
|
-
def save(self, data, columns=None):
|
|
129
|
+
def save(self: Self, data, columns=None) -> bool:
|
|
126
130
|
"""
|
|
127
131
|
Save data to the database and update the model!
|
|
128
132
|
|
|
@@ -168,7 +172,7 @@ class Model(Models):
|
|
|
168
172
|
|
|
169
173
|
return True
|
|
170
174
|
|
|
171
|
-
def is_changing(self, key, data):
|
|
175
|
+
def is_changing(self: Self, key, data) -> bool:
|
|
172
176
|
"""
|
|
173
177
|
Returns True/False to denote if the given column is being modified by the active save operation
|
|
174
178
|
|
|
@@ -184,7 +188,7 @@ class Model(Models):
|
|
|
184
188
|
|
|
185
189
|
return self.__getattr__(key) != data[key]
|
|
186
190
|
|
|
187
|
-
def latest(self, key, data):
|
|
191
|
+
def latest(self: Self, key, data):
|
|
188
192
|
"""
|
|
189
193
|
Returns the 'latest' value for a column during the save operation
|
|
190
194
|
|
|
@@ -198,7 +202,7 @@ class Model(Models):
|
|
|
198
202
|
return data[key]
|
|
199
203
|
return self.__getattr__(key)
|
|
200
204
|
|
|
201
|
-
def was_changed(self, key):
|
|
205
|
+
def was_changed(self: Self, key) -> bool:
|
|
202
206
|
"""Returns True/False to denote if a column was changed in the last save"""
|
|
203
207
|
if self._previous_data is None:
|
|
204
208
|
raise ValueError("was_changed was called before a save was finished - you must save something first")
|
|
@@ -221,10 +225,10 @@ class Model(Models):
|
|
|
221
225
|
return old_value != new_value
|
|
222
226
|
return not columns[key].values_match(old_value, new_value)
|
|
223
227
|
|
|
224
|
-
def previous_value(self, key):
|
|
228
|
+
def previous_value(self: Self, key):
|
|
225
229
|
return self.get_transformed_from_data(key, self._previous_data, cache=False, check_providers=False, silent=True)
|
|
226
230
|
|
|
227
|
-
def delete(self, except_if_not_exists=True):
|
|
231
|
+
def delete(self: Self, except_if_not_exists=True) -> bool:
|
|
228
232
|
if not self.exists:
|
|
229
233
|
if except_if_not_exists:
|
|
230
234
|
raise ValueError("Cannot delete model that already exists")
|
|
@@ -240,7 +244,7 @@ class Model(Models):
|
|
|
240
244
|
self.post_delete()
|
|
241
245
|
return True
|
|
242
246
|
|
|
243
|
-
def columns_pre_save(self, data, columns):
|
|
247
|
+
def columns_pre_save(self: Self, data, columns):
|
|
244
248
|
"""Uses the column information present in the model to make any necessary changes before saving"""
|
|
245
249
|
for column in columns.values():
|
|
246
250
|
data = column.pre_save(data, self)
|
|
@@ -258,7 +262,7 @@ class Model(Models):
|
|
|
258
262
|
"""
|
|
259
263
|
return data
|
|
260
264
|
|
|
261
|
-
def columns_to_backend(self, data, columns):
|
|
265
|
+
def columns_to_backend(self: Self, data, columns):
|
|
262
266
|
backend_data = {**data}
|
|
263
267
|
temporary_data = {}
|
|
264
268
|
for column in columns.values():
|
|
@@ -275,10 +279,10 @@ class Model(Models):
|
|
|
275
279
|
|
|
276
280
|
return [backend_data, temporary_data]
|
|
277
281
|
|
|
278
|
-
def to_backend(self, data, columns):
|
|
282
|
+
def to_backend(self: Self, data, columns):
|
|
279
283
|
return data
|
|
280
284
|
|
|
281
|
-
def columns_post_save(self, data, id, columns):
|
|
285
|
+
def columns_post_save(self: Self, data, id, columns):
|
|
282
286
|
"""Uses the column information present in the model to make additional changes as needed after saving"""
|
|
283
287
|
for column in columns.values():
|
|
284
288
|
data = column.post_save(data, self, id)
|
|
@@ -288,12 +292,12 @@ class Model(Models):
|
|
|
288
292
|
)
|
|
289
293
|
return data
|
|
290
294
|
|
|
291
|
-
def columns_save_finished(self, columns):
|
|
295
|
+
def columns_save_finished(self: Self, columns):
|
|
292
296
|
"""Calls the save_finished method on all of our columns"""
|
|
293
297
|
for column in columns.values():
|
|
294
298
|
column.save_finished(self)
|
|
295
299
|
|
|
296
|
-
def post_save(self, data, id):
|
|
300
|
+
def post_save(self: Self, data, id):
|
|
297
301
|
"""
|
|
298
302
|
A hook to extend so you can provide additional pre-save logic as needed
|
|
299
303
|
|
|
@@ -302,7 +306,7 @@ class Model(Models):
|
|
|
302
306
|
"""
|
|
303
307
|
pass
|
|
304
308
|
|
|
305
|
-
def pre_save(self, data):
|
|
309
|
+
def pre_save(self: Self, data):
|
|
306
310
|
"""
|
|
307
311
|
A hook to extend so you can provide additional pre-save logic as needed
|
|
308
312
|
|
|
@@ -310,7 +314,7 @@ class Model(Models):
|
|
|
310
314
|
"""
|
|
311
315
|
return data
|
|
312
316
|
|
|
313
|
-
def save_finished(self):
|
|
317
|
+
def save_finished(self: Self):
|
|
314
318
|
"""
|
|
315
319
|
A hook to extend so you can provide additional logic after a save operation has fully completed
|
|
316
320
|
|
|
@@ -320,29 +324,29 @@ class Model(Models):
|
|
|
320
324
|
"""
|
|
321
325
|
pass
|
|
322
326
|
|
|
323
|
-
def columns_pre_delete(self, columns):
|
|
327
|
+
def columns_pre_delete(self: Self, columns):
|
|
324
328
|
"""Uses the column information present in the model to make any necessary changes before deleting"""
|
|
325
329
|
for column in columns.values():
|
|
326
330
|
column.pre_delete(self)
|
|
327
331
|
|
|
328
|
-
def pre_delete(self):
|
|
332
|
+
def pre_delete(self: Self):
|
|
329
333
|
"""
|
|
330
334
|
A hook to extend so you can provide additional pre-delete logic as needed
|
|
331
335
|
"""
|
|
332
336
|
pass
|
|
333
337
|
|
|
334
|
-
def columns_post_delete(self, columns):
|
|
338
|
+
def columns_post_delete(self: Self, columns):
|
|
335
339
|
"""Uses the column information present in the model to make any necessary changes after deleting"""
|
|
336
340
|
for column in columns.values():
|
|
337
341
|
column.post_delete(self)
|
|
338
342
|
|
|
339
|
-
def post_delete(self):
|
|
343
|
+
def post_delete(self: Self):
|
|
340
344
|
"""
|
|
341
345
|
A hook to extend so you can provide additional post-delete logic as needed
|
|
342
346
|
"""
|
|
343
347
|
pass
|
|
344
348
|
|
|
345
|
-
def where_for_request(self, models, routing_data, authorization_data, input_output, overrides=None):
|
|
349
|
+
def where_for_request(self: Self, models, routing_data, authorization_data, input_output, overrides=None):
|
|
346
350
|
"""
|
|
347
351
|
A hook to automatically apply filtering whenever the model makes an appearance in a get/update/list/search handler.
|
|
348
352
|
"""
|