clear-skies 2.0.0__tar.gz → 2.0.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-2.0.0 → clear_skies-2.0.1}/PKG-INFO +2 -2
- {clear_skies-2.0.0 → clear_skies-2.0.1}/pyproject.toml +5 -3
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/authentication/authentication.py +4 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/authentication/authorization.py +4 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/authentication/jwks.py +6 -1
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/authentication/secret_bearer.py +1 -1
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/backends/backend.py +13 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/column.py +3 -6
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/configs/__init__.py +3 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/configs/config.py +4 -1
- clear_skies-2.0.1/src/clearskies/configs/endpoint_list.py +28 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/contexts/cli.py +4 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/contexts/context.py +13 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/contexts/wsgi.py +4 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/contexts/wsgi_ref.py +4 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/di/di.py +2 -2
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/endpoint.py +5 -4
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/endpoint_group.py +13 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/endpoints/callable.py +4 -3
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/model.py +526 -30
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/query/query.py +4 -4
- clear_skies-2.0.1/src/clearskies/security_header.py +15 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/validator.py +12 -0
- clear_skies-2.0.0/src/clearskies/security_header.py +0 -8
- {clear_skies-2.0.0 → clear_skies-2.0.1}/LICENSE +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/README.md +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/__init__.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/action.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/authentication/__init__.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/authentication/authorization_pass_through.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/authentication/public.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/autodoc/__init__.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/autodoc/formats/__init__.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/autodoc/formats/oai3_json/__init__.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/autodoc/formats/oai3_json/oai3_json.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/autodoc/formats/oai3_json/oai3_schema_resolver.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/autodoc/formats/oai3_json/parameter.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/autodoc/formats/oai3_json/request.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/autodoc/formats/oai3_json/response.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/autodoc/formats/oai3_json/schema/__init__.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/autodoc/formats/oai3_json/schema/array.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/autodoc/formats/oai3_json/schema/default.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/autodoc/formats/oai3_json/schema/enum.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/autodoc/formats/oai3_json/schema/object.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/autodoc/formats/oai3_json/test.json +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/autodoc/py.typed +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/autodoc/request/__init__.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/autodoc/request/header.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/autodoc/request/json_body.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/autodoc/request/parameter.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/autodoc/request/request.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/autodoc/request/url_parameter.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/autodoc/request/url_path.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/autodoc/response/__init__.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/autodoc/response/response.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/autodoc/schema/__init__.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/autodoc/schema/array.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/autodoc/schema/base64.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/autodoc/schema/boolean.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/autodoc/schema/date.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/autodoc/schema/datetime.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/autodoc/schema/double.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/autodoc/schema/enum.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/autodoc/schema/integer.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/autodoc/schema/long.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/autodoc/schema/number.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/autodoc/schema/object.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/autodoc/schema/password.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/autodoc/schema/schema.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/autodoc/schema/string.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/backends/__init__.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/backends/api_backend.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/backends/cursor_backend.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/backends/memory_backend.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/backends/secrets_backend.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/columns/__init__.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/columns/audit.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/columns/belongs_to_id.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/columns/belongs_to_model.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/columns/belongs_to_self.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/columns/boolean.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/columns/category_tree.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/columns/category_tree_ancestors.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/columns/category_tree_children.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/columns/category_tree_descendants.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/columns/created.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/columns/created_by_authorization_data.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/columns/created_by_header.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/columns/created_by_ip.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/columns/created_by_routing_data.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/columns/created_by_user_agent.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/columns/date.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/columns/datetime.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/columns/email.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/columns/float.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/columns/has_many.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/columns/has_many_self.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/columns/has_one.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/columns/integer.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/columns/json.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/columns/many_to_many_ids.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/columns/many_to_many_ids_with_data.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/columns/many_to_many_models.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/columns/many_to_many_pivots.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/columns/phone.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/columns/select.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/columns/string.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/columns/timestamp.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/columns/updated.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/columns/uuid.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/configs/README.md +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/configs/actions.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/configs/any.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/configs/any_dict.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/configs/any_dict_or_callable.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/configs/authentication.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/configs/authorization.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/configs/boolean.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/configs/boolean_or_callable.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/configs/callable_config.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/configs/columns.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/configs/conditions.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/configs/datetime.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/configs/datetime_or_callable.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/configs/endpoint.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/configs/float.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/configs/float_or_callable.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/configs/integer.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/configs/integer_or_callable.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/configs/joins.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/configs/list_any_dict.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/configs/list_any_dict_or_callable.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/configs/model_class.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/configs/model_column.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/configs/model_columns.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/configs/model_destination_name.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/configs/model_to_id_column.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/configs/readable_model_column.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/configs/readable_model_columns.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/configs/schema.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/configs/searchable_model_columns.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/configs/security_headers.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/configs/select.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/configs/select_list.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/configs/string.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/configs/string_dict.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/configs/string_list.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/configs/string_list_or_callable.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/configs/string_or_callable.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/configs/timedelta.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/configs/timezone.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/configs/url.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/configs/validators.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/configs/writeable_model_column.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/configs/writeable_model_columns.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/configurable.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/contexts/__init__.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/di/__init__.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/di/additional_config.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/di/additional_config_auto_import.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/di/inject/__init__.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/di/inject/by_class.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/di/inject/by_name.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/di/inject/di.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/di/inject/environment.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/di/inject/input_output.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/di/inject/now.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/di/inject/requests.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/di/inject/secrets.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/di/inject/utcnow.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/di/inject/uuid.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/di/injectable.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/di/injectable_properties.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/di/test_module/__init__.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/di/test_module/another_module/__init__.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/di/test_module/module_class.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/end.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/endpoints/__init__.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/endpoints/advanced_search.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/endpoints/create.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/endpoints/delete.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/endpoints/get.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/endpoints/health_check.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/endpoints/list.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/endpoints/restful_api.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/endpoints/simple_search.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/endpoints/update.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/environment.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/exceptions/__init__.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/exceptions/authentication.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/exceptions/authorization.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/exceptions/client_error.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/exceptions/input_errors.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/exceptions/moved_permanently.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/exceptions/moved_temporarily.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/exceptions/not_found.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/functional/__init__.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/functional/routing.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/functional/string.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/functional/validations.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/input_outputs/__init__.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/input_outputs/cli.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/input_outputs/exceptions/__init__.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/input_outputs/exceptions/cli_input_error.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/input_outputs/exceptions/cli_not_found.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/input_outputs/headers.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/input_outputs/input_output.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/input_outputs/programmatic.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/input_outputs/py.typed +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/input_outputs/wsgi.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/parameters_to_properties.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/py.typed +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/query/__init__.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/query/condition.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/query/join.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/query/sort.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/schema.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/secrets/__init__.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/secrets/additional_configs/__init__.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/secrets/additional_configs/mysql_connection_dynamic_producer.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/secrets/additional_configs/mysql_connection_dynamic_producer_via_ssh_cert_bastion.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/secrets/akeyless.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/secrets/exceptions/__init__.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/secrets/exceptions/not_found.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/secrets/secrets.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/security_headers/__init__.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/security_headers/cache_control.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/security_headers/cors.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/security_headers/csp.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/security_headers/hsts.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/security_headers/x_content_type_options.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/security_headers/x_frame_options.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/test_base.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/typing.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/validators/__init__.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/validators/after_column.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/validators/before_column.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/validators/in_the_future.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/validators/in_the_future_at_least.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/validators/in_the_future_at_most.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/validators/in_the_past.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/validators/in_the_past_at_least.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/validators/in_the_past_at_most.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/validators/maximum_length.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/validators/maximum_value.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/validators/minimum_length.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/validators/minimum_value.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/validators/required.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/validators/timedelta.py +0 -0
- {clear_skies-2.0.0 → clear_skies-2.0.1}/src/clearskies/validators/unique.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: clear-skies
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.1
|
|
4
4
|
Summary: A framework for building backends in the cloud
|
|
5
5
|
License: MIT
|
|
6
6
|
Author: Conor Mancone
|
|
@@ -25,7 +25,7 @@ Requires-Dist: pymysql (>=1.1.0,<2.0.0) ; extra == "mysql"
|
|
|
25
25
|
Requires-Dist: requests (>=2.31.0,<3.0.0)
|
|
26
26
|
Requires-Dist: typing-extensions (>=4.12.0,<5.0.0) ; python_version == "3.10"
|
|
27
27
|
Requires-Dist: wrapt (>=1.16.0,<2.0.0)
|
|
28
|
-
Project-URL: Repository, https://github.com/
|
|
28
|
+
Project-URL: Repository, https://github.com/clearskies-py/clearskies
|
|
29
29
|
Description-Content-Type: text/markdown
|
|
30
30
|
|
|
31
31
|
# clearskies
|
|
@@ -10,7 +10,7 @@ requires-python = '>=3.11,<4.0'
|
|
|
10
10
|
dependencies = ['dateparser (>=1.1.8,<2.0.0)', 'requests (>=2.31.0,<3.0.0)', 'typing-extensions (>=4.12.0,<5.0.0) ; python_version >= "3.10" and python_version < "3.11"', 'wrapt (>=1.16.0,<2.0.0)']
|
|
11
11
|
|
|
12
12
|
[project.urls]
|
|
13
|
-
repository = "https://github.com/
|
|
13
|
+
repository = "https://github.com/clearskies-py/clearskies"
|
|
14
14
|
|
|
15
15
|
[project.optional-dependencies]
|
|
16
16
|
secrets = ['akeyless (>=4.0.0,<5.0.0)', 'akeyless-cloud-id (>=0.2.3,<0.3.0)']
|
|
@@ -24,7 +24,8 @@ packages = [
|
|
|
24
24
|
exclude = [
|
|
25
25
|
"src/clearskies/*_test.py",
|
|
26
26
|
"src/clearskies/**/*_test.py",
|
|
27
|
-
"src/clearskies/integration_tests/*"
|
|
27
|
+
"src/clearskies/integration_tests/*",
|
|
28
|
+
"docs/**"
|
|
28
29
|
]
|
|
29
30
|
classifiers = [
|
|
30
31
|
"Development Status :: 5 - Production/Stable",
|
|
@@ -68,7 +69,8 @@ preview = true
|
|
|
68
69
|
python_version = "3.11"
|
|
69
70
|
|
|
70
71
|
exclude = [
|
|
71
|
-
".*_test\\.py$"
|
|
72
|
+
".*_test\\.py$",
|
|
73
|
+
"docs/.*"
|
|
72
74
|
]
|
|
73
75
|
|
|
74
76
|
[tool.poetry-git-version-plugin]
|
|
@@ -10,8 +10,13 @@ from clearskies.security_headers.cors import Cors
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
class Jwks(Authentication, clearskies.di.InjectableProperties):
|
|
13
|
-
"""
|
|
13
|
+
"""
|
|
14
|
+
Validate a JWT against a JWKS (JSON Web Key Set)
|
|
15
|
+
"""
|
|
14
16
|
|
|
17
|
+
"""
|
|
18
|
+
The URL of the JWKS
|
|
19
|
+
"""
|
|
15
20
|
jwks_url = clearskies.configs.String(required=True)
|
|
16
21
|
|
|
17
22
|
"""
|
|
@@ -495,7 +495,7 @@ class SecretBearer(Authentication, clearskies.di.InjectableProperties):
|
|
|
495
495
|
if not self._alternate_secret:
|
|
496
496
|
self._alternate_secret = (
|
|
497
497
|
self.secrets.get(self.alternate_secret_key)
|
|
498
|
-
if self.
|
|
498
|
+
if self.alternate_secret_key
|
|
499
499
|
else self.environment.get(self.alternate_environment_key)
|
|
500
500
|
)
|
|
501
501
|
return self._alternate_secret
|
|
@@ -9,6 +9,19 @@ from clearskies.autodoc.schema import Schema as AutoDocSchema
|
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
class Backend(ABC):
|
|
12
|
+
"""
|
|
13
|
+
Conecting models to their data since 2020!
|
|
14
|
+
|
|
15
|
+
The backend system acts as a flexible layer between models and their data sources. By changing the backend attached to a model,
|
|
16
|
+
you change where the model fetches and saves data. This might be a database, an in-memory data store, a dynamodb table,
|
|
17
|
+
an API, and more. This allows you to interact with a variety of data sources with the models acting as a standardized API.
|
|
18
|
+
Since endpoints also rely on the models for their functionality, this means that you can easily build API endpoints and
|
|
19
|
+
more for a variety of data sources with a minimal amount of code.
|
|
20
|
+
|
|
21
|
+
Of course, not all data sources support all functionality present in the model. Therefore, you do still need to have
|
|
22
|
+
a fair understanding of how your data sources work.
|
|
23
|
+
"""
|
|
24
|
+
|
|
12
25
|
supports_n_plus_one = False
|
|
13
26
|
can_count = True
|
|
14
27
|
|
|
@@ -24,13 +24,10 @@ if TYPE_CHECKING:
|
|
|
24
24
|
|
|
25
25
|
class Column(clearskies.configurable.Configurable, clearskies.di.InjectableProperties):
|
|
26
26
|
"""
|
|
27
|
-
|
|
27
|
+
Columns are used to build schemes and enable a variety of levels of automation with clearskies.
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
clearskies framework to automate things like input validation, front-end/backend-transformations, and more.
|
|
32
|
-
Many column classes have their own configuration settings, but there are also some common configuration settings
|
|
33
|
-
defined here.
|
|
29
|
+
Columns are used to define your schemas in clearskies, especially via models. The column definitions are then used by endpoints
|
|
30
|
+
and other aspects of the clearskies framework to automate things like input validation, front-end/backend-transformations, and more.
|
|
34
31
|
"""
|
|
35
32
|
|
|
36
33
|
"""
|
|
@@ -80,6 +80,7 @@ from .config import Config
|
|
|
80
80
|
from .datetime import Datetime
|
|
81
81
|
from .datetime_or_callable import DatetimeOrCallable
|
|
82
82
|
from .endpoint import Endpoint
|
|
83
|
+
from .endpoint_list import EndpointList
|
|
83
84
|
from .float import Float
|
|
84
85
|
from .float_or_callable import FloatOrCallable
|
|
85
86
|
from .integer import Integer
|
|
@@ -126,6 +127,8 @@ __all__ = [
|
|
|
126
127
|
"Config",
|
|
127
128
|
"Datetime",
|
|
128
129
|
"DatetimeOrCallable",
|
|
130
|
+
"Endpoint",
|
|
131
|
+
"EndpointList",
|
|
129
132
|
"Float",
|
|
130
133
|
"FloatOrCallable",
|
|
131
134
|
"Joins",
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import TYPE_CHECKING
|
|
4
|
+
|
|
5
|
+
from clearskies.configs import config
|
|
6
|
+
|
|
7
|
+
if TYPE_CHECKING:
|
|
8
|
+
from clearskies.endpoint import Endpoint as EndpointBase
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class EndpointList(config.Config):
|
|
12
|
+
def __set__(self, instance, value: list[EndpointBase]):
|
|
13
|
+
if not isinstance(value, list):
|
|
14
|
+
raise TypeError(
|
|
15
|
+
f"{error_prefix} attempt to set a value of type '{value.__class__.__name__}' to a parameter that requries a list of endpoints."
|
|
16
|
+
)
|
|
17
|
+
for index, item in enumerate(value):
|
|
18
|
+
if not hasattr(item, "top_level_authentication_and_authorization"):
|
|
19
|
+
error_prefix = self._error_prefix(instance)
|
|
20
|
+
raise TypeError(
|
|
21
|
+
f"{error_prefix} attempt to set a value of type '{item.__class__.__name__}' for item #{index+1} when all items in the list should be instances of clearskies.End."
|
|
22
|
+
)
|
|
23
|
+
instance._set_config(self, value)
|
|
24
|
+
|
|
25
|
+
def __get__(self, instance, parent) -> list[EndpointBase]:
|
|
26
|
+
if not instance:
|
|
27
|
+
return self # type: ignore
|
|
28
|
+
return instance._get_config(self)
|
|
@@ -15,8 +15,21 @@ if TYPE_CHECKING:
|
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
class Context:
|
|
18
|
+
"""
|
|
19
|
+
Context: a flexible way to connect applications to hosting strategies.
|
|
20
|
+
"""
|
|
21
|
+
|
|
18
22
|
di: Di = None # type: ignore
|
|
19
23
|
|
|
24
|
+
"""
|
|
25
|
+
The application to execute.
|
|
26
|
+
|
|
27
|
+
This can be a callable, an endpoint, or an endpoint group. If passed a callable, the callable can request any
|
|
28
|
+
standard or defined dependencies and should return the desired response. It can also raise any exception from
|
|
29
|
+
clearskies.exceptions.
|
|
30
|
+
"""
|
|
31
|
+
application: Callable | clearskies.endpoint.Endpoint | clearskies.endpoint_group.EndpointGroup = None # type: ignore
|
|
32
|
+
|
|
20
33
|
def __init__(
|
|
21
34
|
self,
|
|
22
35
|
application: Callable | clearskies.endpoint.Endpoint | clearskies.endpoint_group.EndpointGroup,
|
|
@@ -12,5 +12,9 @@ from clearskies.input_outputs import Wsgi as WsgiInputOutput
|
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
class Wsgi(Context):
|
|
15
|
+
"""
|
|
16
|
+
Connect your application to a WSGI server.
|
|
17
|
+
"""
|
|
18
|
+
|
|
15
19
|
def __call__(self, env, start_response): # type: ignore
|
|
16
20
|
return self.execute_application(WsgiInputOutput(env, start_response))
|
|
@@ -23,7 +23,7 @@ class Di:
|
|
|
23
23
|
Build a dependency injection object.
|
|
24
24
|
|
|
25
25
|
The dependency injection (DI) container is a key part of clearskies, so understanding how to both configure
|
|
26
|
-
them and get dependencies for your classes is important. Note however that
|
|
26
|
+
them and get dependencies for your classes is important. Note however that you don't often have
|
|
27
27
|
to interact with the dependency injection container directly. All of the configuration options for
|
|
28
28
|
the DI container are also available to all the contexts, which is typically how you will build clearskies
|
|
29
29
|
applications. So, while you can create a DI container and use it directly, typically you'll just follow
|
|
@@ -648,7 +648,7 @@ class Di:
|
|
|
648
648
|
its name and type-hint.
|
|
649
649
|
"""
|
|
650
650
|
built_value = self.build_class_from_type_hint(argument_name, type_hint, context=context, cache=True)
|
|
651
|
-
if built_value:
|
|
651
|
+
if built_value is not None:
|
|
652
652
|
return built_value
|
|
653
653
|
return self.build_from_name(argument_name, context=context, cache=True)
|
|
654
654
|
|
|
@@ -32,15 +32,16 @@ class Endpoint(
|
|
|
32
32
|
clearskies.di.InjectableProperties,
|
|
33
33
|
):
|
|
34
34
|
"""
|
|
35
|
-
|
|
35
|
+
Automating drudgery!
|
|
36
36
|
|
|
37
37
|
With clearskies, endpoints exist to offload some drudgery and make your life easier, but they can also
|
|
38
38
|
get out of your way when you don't need them. Think of them as pre-built endpoints that can execute
|
|
39
39
|
common functionality needed for web applications/APIs. Instead of defining a function that fetches
|
|
40
40
|
records from your backend and returns them to the end user, you can let the list endpoint do this for you
|
|
41
41
|
with a minimal amount of configuration. Instead of making an endpoint that creates records, just deploy
|
|
42
|
-
a create endpoint.
|
|
43
|
-
|
|
42
|
+
a create endpoint. While this gives clearskies some helpful capabiltiies for automation, it also has
|
|
43
|
+
the Callable endpoint which simply calls a developer-defined function, and therefore allows clearskies to
|
|
44
|
+
act like a much more typical framework.
|
|
44
45
|
"""
|
|
45
46
|
|
|
46
47
|
"""
|
|
@@ -342,7 +343,7 @@ class Endpoint(
|
|
|
342
343
|
"""
|
|
343
344
|
The model class used by this endpoint.
|
|
344
345
|
|
|
345
|
-
The
|
|
346
|
+
The endpoint will use this to fetch/save/validate incoming data as needed.
|
|
346
347
|
"""
|
|
347
348
|
model_class = clearskies.configs.ModelClass(default=None)
|
|
348
349
|
|
|
@@ -217,11 +217,24 @@ class EndpointGroup(
|
|
|
217
217
|
The dependency injection container
|
|
218
218
|
"""
|
|
219
219
|
di = clearskies.di.inject.Di()
|
|
220
|
+
|
|
221
|
+
"""
|
|
222
|
+
The base URL for the endpoint group.
|
|
223
|
+
|
|
224
|
+
This URL is added as a prefix to all endpoints attached to the group. This includes any named URL parameters:
|
|
225
|
+
"""
|
|
220
226
|
url = clearskies.configs.String(default="")
|
|
227
|
+
|
|
228
|
+
"""
|
|
229
|
+
The list of endpoints connected to this endpoint group
|
|
230
|
+
"""
|
|
231
|
+
endpoints = clearskies.configs.EndpointList()
|
|
232
|
+
|
|
221
233
|
response_headers = clearskies.configs.StringListOrCallable(default=[])
|
|
222
234
|
authentication = clearskies.configs.Authentication(default=Public())
|
|
223
235
|
authorization = clearskies.configs.Authorization(default=Authorization())
|
|
224
236
|
security_headers = clearskies.configs.SecurityHeaders(default=[])
|
|
237
|
+
|
|
225
238
|
cors_header: SecurityHeader = None # type: ignore
|
|
226
239
|
has_cors: bool = False
|
|
227
240
|
endpoints_initialized = False
|
|
@@ -23,13 +23,13 @@ class Callable(Endpoint):
|
|
|
23
23
|
"""
|
|
24
24
|
An endpoint that executes a user-defined function.
|
|
25
25
|
|
|
26
|
-
The Callable endpoint does exactly that - you provide a function that will be called when the
|
|
27
|
-
all callables invoked by clearskies, you can request any defined
|
|
26
|
+
The Callable endpoint does exactly that - you provide a function that will be called when the endpoint is invoked. Like
|
|
27
|
+
all callables invoked by clearskies, you can request any defined dependency that can be provided by the clearskies
|
|
28
28
|
framework.
|
|
29
29
|
|
|
30
30
|
Whatever you return will be returned to the client. By default, the return value is sent along in the `data` parameter
|
|
31
31
|
of the standard clearskies response. To suppress this behavior, set `return_standard_response` to `False`. You can also
|
|
32
|
-
return
|
|
32
|
+
return a model instance, a model query, or a list of model instances and the callable endpoint will automatically return
|
|
33
33
|
the columns specified in `readable_column_names` to the client.
|
|
34
34
|
|
|
35
35
|
Here's a basic working example:
|
|
@@ -300,6 +300,7 @@ class Callable(Endpoint):
|
|
|
300
300
|
converted_models,
|
|
301
301
|
number_results=len(response) if response.backend.can_count else None,
|
|
302
302
|
next_page=response.next_page_data(),
|
|
303
|
+
limit=response.get_query().limit,
|
|
303
304
|
)
|
|
304
305
|
|
|
305
306
|
# or did they return a list of models?
|