clear-skies 1.19.20__tar.gz → 1.19.22__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.19.20 → clear_skies-1.19.22}/PKG-INFO +3 -1
- {clear_skies-1.19.20 → clear_skies-1.19.22}/pyproject.toml +3 -1
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/authentication/__init__.py +7 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/authentication/jwks.py +13 -0
- clear_skies-1.19.22/src/clearskies/authentication/jwks_jwcrypto.py +39 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/LICENSE +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/README.md +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/__init__.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/application.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/authentication/auth0_jwks.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/authentication/auth_exception.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/authentication/authorization.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/authentication/public.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/authentication/secret_bearer.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/autodoc/__init__.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/autodoc/formats/__init__.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/autodoc/formats/oai3_json/__init__.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/autodoc/formats/oai3_json/oai3_json.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/autodoc/formats/oai3_json/oai3_schema_resolver.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/autodoc/formats/oai3_json/parameter.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/autodoc/formats/oai3_json/request.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/autodoc/formats/oai3_json/response.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/autodoc/formats/oai3_json/schema/__init__.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/autodoc/formats/oai3_json/schema/array.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/autodoc/formats/oai3_json/schema/default.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/autodoc/formats/oai3_json/schema/enum.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/autodoc/formats/oai3_json/schema/object.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/autodoc/formats/oai3_json/test.json +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/autodoc/request/__init__.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/autodoc/request/header.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/autodoc/request/json_body.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/autodoc/request/request.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/autodoc/request/url_parameter.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/autodoc/request/url_path.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/autodoc/response/__init__.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/autodoc/response/response.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/autodoc/schema/__init__.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/autodoc/schema/array.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/autodoc/schema/base64.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/autodoc/schema/boolean.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/autodoc/schema/date.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/autodoc/schema/datetime.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/autodoc/schema/double.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/autodoc/schema/enum.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/autodoc/schema/integer.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/autodoc/schema/long.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/autodoc/schema/number.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/autodoc/schema/object.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/autodoc/schema/password.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/autodoc/schema/string.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/backends/__init__.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/backends/api_backend.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/backends/backend.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/backends/cursor_backend.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/backends/example_backend.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/backends/file_backend.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/backends/json_backend.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/backends/memory_backend.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/backends/restful_api_advanced_search_backend.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/backends/secrets_backend.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/binding_config.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/column_types/__init__.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/column_types/audit.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/column_types/belongs_to.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/column_types/boolean.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/column_types/category_tree.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/column_types/column.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/column_types/created.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/column_types/created_by_authorization_data.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/column_types/created_by_header.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/column_types/created_by_ip.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/column_types/created_by_routing_data.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/column_types/created_by_user_agent.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/column_types/created_micro.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/column_types/datetime.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/column_types/datetime_micro.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/column_types/email.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/column_types/float.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/column_types/has_many.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/column_types/integer.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/column_types/json.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/column_types/many_to_many.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/column_types/many_to_many_with_data.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/column_types/select.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/column_types/string.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/column_types/updated.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/column_types/updated_micro.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/column_types/uuid.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/columns.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/condition_parser.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/contexts/__init__.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/contexts/bash.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/contexts/build_context.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/contexts/cli.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/contexts/context.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/contexts/convert_to_application.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/contexts/extract_handler.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/contexts/test.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/contexts/wsgi.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/decorators/__init__.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/decorators/auth0_jwks.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/decorators/authorization.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/decorators/binding_classes.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/decorators/binding_modules.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/decorators/bindings.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/decorators/create.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/decorators/delete.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/decorators/docs.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/decorators/get.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/decorators/jwks.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/decorators/merge.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/decorators/patch.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/decorators/post.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/decorators/public.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/decorators/response_headers.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/decorators/return_raw_response.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/decorators/schema.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/decorators/secret_bearer.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/decorators/security_headers.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/di/__init__.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/di/additional_config.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/di/additional_config_auto_import.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/di/di.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/di/standard_dependencies.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/di/test_module/__init__.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/di/test_module/another_module/__init__.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/di/test_module/module_class.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/environment.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/functional/__init__.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/functional/string.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/functional/validations.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/handlers/__init__.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/handlers/advanced_search.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/handlers/base.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/handlers/callable.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/handlers/create.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/handlers/crud_by_method.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/handlers/database_connector.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/handlers/delete.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/handlers/exceptions/__init__.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/handlers/exceptions/authentication.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/handlers/exceptions/authorization.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/handlers/exceptions/client_error.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/handlers/exceptions/input_error.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/handlers/exceptions/not_found.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/handlers/get.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/handlers/health_check.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/handlers/input_processing.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/handlers/list.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/handlers/mygrations.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/handlers/request_method_routing.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/handlers/restful_api.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/handlers/routing.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/handlers/schema_helper.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/handlers/simple_routing.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/handlers/simple_routing_route.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/handlers/simple_search.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/handlers/update.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/handlers/write.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/input_outputs/__init__.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/input_outputs/cli.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/input_outputs/exceptions/__init__.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/input_outputs/exceptions/cli_input_error.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/input_outputs/exceptions/cli_not_found.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/input_outputs/input_output.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/input_outputs/wsgi.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/input_requirements/__init__.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/input_requirements/after.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/input_requirements/before.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/input_requirements/in_the_future_at_least.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/input_requirements/in_the_future_at_most.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/input_requirements/in_the_past_at_least.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/input_requirements/in_the_past_at_most.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/input_requirements/maximum_length.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/input_requirements/minimum_length.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/input_requirements/required.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/input_requirements/requirement.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/input_requirements/time_delta.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/input_requirements/unique.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/mocks/__init__.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/mocks/input_output.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/mocks/models.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/model.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/models.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/secrets/__init__.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/secrets/additional_configs/__init__.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/secrets/additional_configs/mysql_connection_dynamic_producer.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/secrets/additional_configs/mysql_connection_dynamic_producer_via_ssh_cert_bastion.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/secrets/akeyless.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/secrets/exceptions/__init__.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/secrets/exceptions/not_found.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/secrets/secrets.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/security_headers/__init__.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/security_headers/base.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/security_headers/cache_control.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/security_headers/cors.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/security_headers/csp.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/security_headers/hsts.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/security_headers/x_content_type_options.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/security_headers/x_frame_options.py +0 -0
- {clear_skies-1.19.20/src/clearskies/tests/simple_api → clear_skies-1.19.22/src/clearskies/tests}/__init__.py +0 -0
- {clear_skies-1.19.20/src/clearskies/tests → clear_skies-1.19.22/src/clearskies/tests/simple_api}/__init__.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/tests/simple_api/models/__init__.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/tests/simple_api/models/status.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/tests/simple_api/models/user.py +0 -0
- {clear_skies-1.19.20 → clear_skies-1.19.22}/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.19.
|
|
3
|
+
Version: 1.19.22
|
|
4
4
|
Summary: A framework for building backends in the cloud
|
|
5
5
|
Home-page: https://github.com/cmancone/clearskies
|
|
6
6
|
License: MIT
|
|
@@ -15,12 +15,14 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
15
15
|
Classifier: Programming Language :: Python :: 3.11
|
|
16
16
|
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
|
|
17
17
|
Provides-Extra: jose
|
|
18
|
+
Provides-Extra: jwcrypto
|
|
18
19
|
Provides-Extra: mysql
|
|
19
20
|
Provides-Extra: secrets
|
|
20
21
|
Requires-Dist: akeyless (>=3.6.2,<4.0.0) ; extra == "secrets"
|
|
21
22
|
Requires-Dist: akeyless-cloud-id (>=0.2.3,<0.3.0) ; extra == "secrets"
|
|
22
23
|
Requires-Dist: dateparser (>=1.1.8,<2.0.0)
|
|
23
24
|
Requires-Dist: jose (>=1.0.0,<2.0.0) ; extra == "jose"
|
|
25
|
+
Requires-Dist: jwcrypto (>=1.5.6,<2.0.0) ; extra == "jwcrypto"
|
|
24
26
|
Requires-Dist: pymysql (>=1.1.0,<2.0.0) ; extra == "mysql"
|
|
25
27
|
Requires-Dist: requests (>=2.31.0,<3.0.0)
|
|
26
28
|
Project-URL: Repository, https://github.com/cmancone/clearskies
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[tool.poetry]
|
|
4
4
|
name = "clear-skies"
|
|
5
|
-
version = "1.19.
|
|
5
|
+
version = "1.19.22"
|
|
6
6
|
description = "A framework for building backends in the cloud"
|
|
7
7
|
authors = [
|
|
8
8
|
"Conor Mancone <cmancone@gmail.com>",
|
|
@@ -33,6 +33,7 @@ akeyless = {version = "^3.6.2", optional = true}
|
|
|
33
33
|
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
|
+
jwcrypto = {version = "^1.5.6", optional = true}
|
|
36
37
|
|
|
37
38
|
[[tool.poetry.source]]
|
|
38
39
|
name = "PyPI"
|
|
@@ -46,6 +47,7 @@ black = "^23.3.0"
|
|
|
46
47
|
secrets = ["akeyless", "akeyless-cloud-id"]
|
|
47
48
|
mysql = ["pymysql"]
|
|
48
49
|
jose = ["jose"]
|
|
50
|
+
jwcrypto = ["jwcrypto"]
|
|
49
51
|
|
|
50
52
|
[tool.black]
|
|
51
53
|
line-length = 120
|
|
@@ -4,6 +4,7 @@ from .public import Public
|
|
|
4
4
|
from .auth0_jwks import Auth0JWKS
|
|
5
5
|
from .authorization import Authorization
|
|
6
6
|
from .jwks import JWKS
|
|
7
|
+
from .jwks_jwcrypto import JWKSJwCrypto
|
|
7
8
|
|
|
8
9
|
|
|
9
10
|
def public():
|
|
@@ -22,6 +23,10 @@ def jwks(jwks_url, **kwargs):
|
|
|
22
23
|
return BindingConfig(JWKS, jwks_url=jwks_url, **kwargs)
|
|
23
24
|
|
|
24
25
|
|
|
26
|
+
def jwks_jwcrypto(jwks_url, **kwargs):
|
|
27
|
+
return BindingConfig(JWKSJwCrypto, jwks_url=jwks_url, **kwargs)
|
|
28
|
+
|
|
29
|
+
|
|
25
30
|
__all__ = [
|
|
26
31
|
"Authorization",
|
|
27
32
|
"BindingConfig",
|
|
@@ -34,4 +39,6 @@ __all__ = [
|
|
|
34
39
|
"authorization",
|
|
35
40
|
"jwks",
|
|
36
41
|
"JWKS",
|
|
42
|
+
"jwks_jwcrypto",
|
|
43
|
+
"JWKSJwCrypto",
|
|
37
44
|
]
|
|
@@ -7,6 +7,7 @@ class JWKS(Auth0JWKS):
|
|
|
7
7
|
_audience = None
|
|
8
8
|
_jwks_url = None
|
|
9
9
|
_jwks_cache_time = None
|
|
10
|
+
_authorization_url = None
|
|
10
11
|
|
|
11
12
|
def __init__(self, environment, requests, jose_jwt):
|
|
12
13
|
super().__init__(environment, requests, jose_jwt)
|
|
@@ -18,6 +19,7 @@ class JWKS(Auth0JWKS):
|
|
|
18
19
|
audience=None,
|
|
19
20
|
issuer=None,
|
|
20
21
|
documentation_security_name=None,
|
|
22
|
+
authorization_url=None,
|
|
21
23
|
jwks_cache_time=86400,
|
|
22
24
|
):
|
|
23
25
|
self._audience = audience
|
|
@@ -28,6 +30,7 @@ class JWKS(Auth0JWKS):
|
|
|
28
30
|
raise ValueError("Must provide 'jwks_url' when using JWKS authentication")
|
|
29
31
|
self._algorithms = ["RS256"] if algorithms is None else algorithms
|
|
30
32
|
self._documentation_security_name = documentation_security_name
|
|
33
|
+
self._authorization_url = authorization_url if authorization_url else ""
|
|
31
34
|
|
|
32
35
|
def authenticate(self, input_output):
|
|
33
36
|
auth_header = input_output.get_request_header("authorization", True)
|
|
@@ -73,3 +76,13 @@ class JWKS(Auth0JWKS):
|
|
|
73
76
|
self._jwks_fetched = now
|
|
74
77
|
|
|
75
78
|
return self._jwks
|
|
79
|
+
|
|
80
|
+
def documentation_security_scheme(self):
|
|
81
|
+
return {
|
|
82
|
+
"type": "oauth2",
|
|
83
|
+
"description": "JWT based authentication",
|
|
84
|
+
"flows": {"implicit": {"authorizationUrl": self._authorization_url, "scopes": {}}},
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
def documentation_security_scheme_name(self):
|
|
88
|
+
return self._documentation_security_name if self._documentation_security_name is not None else "jwt"
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import datetime
|
|
2
|
+
import json
|
|
3
|
+
|
|
4
|
+
from clearskies.authentication import JWKS
|
|
5
|
+
from clearskies.handlers.exceptions import ClientError
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class JWKSJwCrypto(JWKS):
|
|
9
|
+
def __init__(self, environment, requests):
|
|
10
|
+
# the third parameter is supposed to be jose_jwt, but we're going to override all
|
|
11
|
+
# the functions that use it
|
|
12
|
+
super().__init__(environment, requests, {})
|
|
13
|
+
|
|
14
|
+
def validate_jwt(self, raw_jwt):
|
|
15
|
+
from jwcrypto import jws, jwk, jwt
|
|
16
|
+
from jwcrypto.common import JWException
|
|
17
|
+
|
|
18
|
+
keys = jwk.JWKSet()
|
|
19
|
+
keys.import_keyset(json.dumps(self._get_jwks()))
|
|
20
|
+
|
|
21
|
+
client_jwt = jwt.JWT()
|
|
22
|
+
try:
|
|
23
|
+
client_jwt.deserialize(raw_jwt)
|
|
24
|
+
except Exception as e:
|
|
25
|
+
raise ClientError(str(e))
|
|
26
|
+
|
|
27
|
+
try:
|
|
28
|
+
client_jwt.validate(keys)
|
|
29
|
+
self.jwt_claims = json.loads(client_jwt.claims)
|
|
30
|
+
except JWException as e:
|
|
31
|
+
raise ClientError(str(e))
|
|
32
|
+
|
|
33
|
+
if self._audience and self.jwt_claims.get("aud") != self._audience:
|
|
34
|
+
raise ClientError("Audience does not match")
|
|
35
|
+
|
|
36
|
+
if self._issuer and self.jwt_claims.get("iss") != self._issuer:
|
|
37
|
+
raise ClientError("Issuer does not match")
|
|
38
|
+
|
|
39
|
+
return True
|
|
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
|
{clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/autodoc/formats/oai3_json/__init__.py
RENAMED
|
File without changes
|
{clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/autodoc/formats/oai3_json/oai3_json.py
RENAMED
|
File without changes
|
|
File without changes
|
{clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/autodoc/formats/oai3_json/parameter.py
RENAMED
|
File without changes
|
{clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/autodoc/formats/oai3_json/request.py
RENAMED
|
File without changes
|
{clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/autodoc/formats/oai3_json/response.py
RENAMED
|
File without changes
|
|
File without changes
|
{clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/autodoc/formats/oai3_json/schema/array.py
RENAMED
|
File without changes
|
|
File without changes
|
{clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/autodoc/formats/oai3_json/schema/enum.py
RENAMED
|
File without changes
|
|
File without changes
|
{clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/autodoc/formats/oai3_json/test.json
RENAMED
|
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
|
{clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/column_types/created_by_header.py
RENAMED
|
File without changes
|
|
File without changes
|
{clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/column_types/created_by_routing_data.py
RENAMED
|
File without changes
|
{clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/column_types/created_by_user_agent.py
RENAMED
|
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
|
{clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/column_types/many_to_many_with_data.py
RENAMED
|
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
|
{clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/contexts/convert_to_application.py
RENAMED
|
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
|
{clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/decorators/return_raw_response.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/di/additional_config_auto_import.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/di/test_module/another_module/__init__.py
RENAMED
|
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
|
{clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/handlers/exceptions/authentication.py
RENAMED
|
File without changes
|
{clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/handlers/exceptions/authorization.py
RENAMED
|
File without changes
|
{clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/handlers/exceptions/client_error.py
RENAMED
|
File without changes
|
{clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/handlers/exceptions/input_error.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/handlers/request_method_routing.py
RENAMED
|
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
|
{clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/input_outputs/exceptions/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/input_outputs/exceptions/cli_not_found.py
RENAMED
|
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
|
{clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/input_requirements/in_the_past_at_most.py
RENAMED
|
File without changes
|
{clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/input_requirements/maximum_length.py
RENAMED
|
File without changes
|
{clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/input_requirements/minimum_length.py
RENAMED
|
File without changes
|
|
File without changes
|
{clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/input_requirements/requirement.py
RENAMED
|
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
|
{clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/secrets/additional_configs/__init__.py
RENAMED
|
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
|
{clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/security_headers/cache_control.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/security_headers/x_frame_options.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/tests/simple_api/models/__init__.py
RENAMED
|
File without changes
|
{clear_skies-1.19.20 → clear_skies-1.19.22}/src/clearskies/tests/simple_api/models/status.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|