clear-skies 2.0.3__tar.gz → 2.0.5__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.5/.editorconfig +11 -0
- clear_skies-2.0.5/.github/workflows/create-version.yaml +164 -0
- clear_skies-2.0.5/.github/workflows/docs.yaml +39 -0
- clear_skies-2.0.5/.github/workflows/run-tests.yml +90 -0
- clear_skies-2.0.5/.github/workflows/tests-matrix.yaml +98 -0
- clear_skies-2.0.5/.github/workflows/tests.yaml +15 -0
- clear_skies-2.0.5/.gitignore +144 -0
- clear_skies-2.0.5/.pre-commit-config.yaml +77 -0
- clear_skies-2.0.5/.python-version +1 -0
- clear_skies-2.0.5/.vscode/extensions.json +3 -0
- clear_skies-2.0.5/.vscode/settings.json +23 -0
- clear_skies-2.0.5/CHANGELOG.md +751 -0
- clear_skies-2.0.5/LATEST_CHANGELOG.md +30 -0
- clear_skies-2.0.5/PKG-INFO +74 -0
- clear_skies-2.0.5/README.md +45 -0
- clear_skies-2.0.5/build.sh +3 -0
- clear_skies-2.0.5/cliff.toml +104 -0
- clear_skies-2.0.5/pyproject.toml +80 -0
- clear_skies-2.0.5/ruff.toml +29 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/__init__.py +2 -0
- clear_skies-2.0.5/src/clearskies/authentication/public_test.py +13 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/formats/oai3_json/__init__.py +2 -2
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/formats/oai3_json/oai3_json.py +2 -2
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/formats/oai3_json/schema/object.py +6 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/request/request.py +9 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/backends/backend.py +1 -1
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/json.py +4 -2
- clear_skies-2.0.5/src/clearskies/configs/actions_test.py +39 -0
- clear_skies-2.0.5/src/clearskies/configs/any_test.py +22 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/endpoint_list.py +1 -0
- clear_skies-2.0.5/src/clearskies/configs/model_class_test.py +39 -0
- clear_skies-2.0.5/src/clearskies/configs/select_list_test.py +39 -0
- clear_skies-2.0.5/src/clearskies/configs/string_test.py +45 -0
- clear_skies-2.0.5/src/clearskies/configs/validators_test.py +37 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/di/di.py +6 -1
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/endpoint.py +14 -10
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/endpoint_group.py +26 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/endpoints/__init__.py +2 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/endpoints/callable.py +3 -3
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/endpoints/create.py +6 -3
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/endpoints/delete.py +1 -1
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/endpoints/get.py +2 -6
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/endpoints/health_check.py +3 -1
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/endpoints/list.py +1 -0
- clear_skies-2.0.5/src/clearskies/endpoints/schema.py +189 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/endpoints/simple_search.py +2 -2
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/endpoints/update.py +6 -3
- clear_skies-2.0.5/src/clearskies/environment_test.py +29 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/exceptions/__init__.py +2 -0
- clear_skies-2.0.5/src/clearskies/exceptions/missing_dependency.py +2 -0
- clear_skies-2.0.5/src/clearskies/functional/string_test.py +36 -0
- clear_skies-2.0.5/src/clearskies/functional/validations_test.py +21 -0
- clear_skies-2.0.5/src/clearskies/integration_tests/authentication/secret_bearer_test.py +143 -0
- clear_skies-2.0.5/src/clearskies/integration_tests/backends/api_backend_test.py +297 -0
- clear_skies-2.0.5/src/clearskies/integration_tests/backends/cursor_backend_test.py +50 -0
- clear_skies-2.0.5/src/clearskies/integration_tests/backends/memory_backend_test.py +85 -0
- clear_skies-2.0.5/src/clearskies/integration_tests/columns/belongs_to_self_test.py +41 -0
- clear_skies-2.0.5/src/clearskies/integration_tests/columns/belongs_to_test.py +134 -0
- clear_skies-2.0.5/src/clearskies/integration_tests/columns/belongs_to_test_module/__init__.py +2 -0
- clear_skies-2.0.5/src/clearskies/integration_tests/columns/belongs_to_test_module/category.py +12 -0
- clear_skies-2.0.5/src/clearskies/integration_tests/columns/belongs_to_test_module/category_reference.py +8 -0
- clear_skies-2.0.5/src/clearskies/integration_tests/columns/belongs_to_test_module/product.py +13 -0
- clear_skies-2.0.5/src/clearskies/integration_tests/columns/belongs_to_test_module/product_reference.py +8 -0
- clear_skies-2.0.5/src/clearskies/integration_tests/columns/category_tree_test.py +58 -0
- clear_skies-2.0.5/src/clearskies/integration_tests/columns/column_test.py +235 -0
- clear_skies-2.0.5/src/clearskies/integration_tests/columns/created_by_authorization_data_test.py +37 -0
- clear_skies-2.0.5/src/clearskies/integration_tests/columns/created_by_header_test.py +31 -0
- clear_skies-2.0.5/src/clearskies/integration_tests/columns/created_test.py +30 -0
- clear_skies-2.0.5/src/clearskies/integration_tests/columns/date_test.py +43 -0
- clear_skies-2.0.5/src/clearskies/integration_tests/columns/datetime_test.py +43 -0
- clear_skies-2.0.5/src/clearskies/integration_tests/columns/email_test.py +34 -0
- clear_skies-2.0.5/src/clearskies/integration_tests/columns/float_test.py +32 -0
- clear_skies-2.0.5/src/clearskies/integration_tests/columns/has_many_test.py +132 -0
- clear_skies-2.0.5/src/clearskies/integration_tests/columns/integer_test.py +32 -0
- clear_skies-2.0.5/src/clearskies/integration_tests/columns/json_test.py +30 -0
- clear_skies-2.0.5/src/clearskies/integration_tests/columns/many_to_many_ids_test.py +71 -0
- clear_skies-2.0.5/src/clearskies/integration_tests/columns/many_to_many_ids_with_data_test.py +74 -0
- clear_skies-2.0.5/src/clearskies/integration_tests/columns/phone_test.py +40 -0
- clear_skies-2.0.5/src/clearskies/integration_tests/columns/select_test.py +36 -0
- clear_skies-2.0.5/src/clearskies/integration_tests/columns/string_test.py +37 -0
- clear_skies-2.0.5/src/clearskies/integration_tests/columns/timestamp_test.py +44 -0
- clear_skies-2.0.5/src/clearskies/integration_tests/columns/updated_test.py +33 -0
- clear_skies-2.0.5/src/clearskies/integration_tests/columns/uuid_test.py +30 -0
- clear_skies-2.0.5/src/clearskies/integration_tests/di/__init__.py +0 -0
- clear_skies-2.0.5/src/clearskies/integration_tests/di/di_test.py +224 -0
- clear_skies-2.0.5/src/clearskies/integration_tests/di/my_module/__init__.py +1 -0
- clear_skies-2.0.5/src/clearskies/integration_tests/di/my_module/my_sub_module/__init__.py +1 -0
- clear_skies-2.0.5/src/clearskies/integration_tests/di/my_module/my_sub_module/my_class.py +2 -0
- clear_skies-2.0.5/src/clearskies/integration_tests/endpoints/advanced_search_test.py +101 -0
- clear_skies-2.0.5/src/clearskies/integration_tests/endpoints/callable_test.py +95 -0
- clear_skies-2.0.5/src/clearskies/integration_tests/endpoints/create_test.py +48 -0
- clear_skies-2.0.5/src/clearskies/integration_tests/endpoints/delete_test.py +42 -0
- clear_skies-2.0.5/src/clearskies/integration_tests/endpoints/endpoint_group_test.py +143 -0
- clear_skies-2.0.5/src/clearskies/integration_tests/endpoints/endpoint_test.py +284 -0
- clear_skies-2.0.5/src/clearskies/integration_tests/endpoints/get_test.py +86 -0
- clear_skies-2.0.5/src/clearskies/integration_tests/endpoints/health_check_test.py +52 -0
- clear_skies-2.0.5/src/clearskies/integration_tests/endpoints/list_test.py +101 -0
- clear_skies-2.0.5/src/clearskies/integration_tests/endpoints/restful_api_test.py +84 -0
- clear_skies-2.0.5/src/clearskies/integration_tests/endpoints/simple_search_test.py +77 -0
- clear_skies-2.0.5/src/clearskies/integration_tests/endpoints/update_test.py +56 -0
- clear_skies-2.0.5/src/clearskies/integration_tests/model_test.py +701 -0
- clear_skies-2.0.5/src/clearskies/py.typed +0 -0
- clear_skies-2.0.5/src/clearskies/query/condition_test.py +97 -0
- clear_skies-2.0.5/src/clearskies/query/join_test.py +50 -0
- clear_skies-2.0.5/src/clearskies/security_headers/cache_control_test.py +22 -0
- clear_skies-2.0.5/src/clearskies/security_headers/cors_test.py +27 -0
- clear_skies-2.0.5/src/clearskies/security_headers/csp_test.py +22 -0
- clear_skies-2.0.5/src/clearskies/security_headers/hsts_test.py +36 -0
- clear_skies-2.0.5/src/clearskies/security_headers/x_content_type_options.py +0 -0
- clear_skies-2.0.5/src/clearskies/security_headers/x_frame_options.py +0 -0
- clear_skies-2.0.5/src/clearskies/validators/after_column_test.py +34 -0
- clear_skies-2.0.5/src/clearskies/validators/before_column_test.py +34 -0
- clear_skies-2.0.5/src/clearskies/validators/in_the_future_at_least_test.py +30 -0
- clear_skies-2.0.5/src/clearskies/validators/in_the_future_at_most_test.py +32 -0
- clear_skies-2.0.5/src/clearskies/validators/in_the_past_at_least_test.py +30 -0
- clear_skies-2.0.5/src/clearskies/validators/in_the_past_at_most_test.py +32 -0
- clear_skies-2.0.5/src/clearskies/validators/maximum_length_test.py +22 -0
- clear_skies-2.0.5/src/clearskies/validators/maximum_value_test.py +23 -0
- clear_skies-2.0.5/src/clearskies/validators/minimum_length_test.py +19 -0
- clear_skies-2.0.5/src/clearskies/validators/minimum_value_test.py +21 -0
- clear_skies-2.0.5/src/clearskies/validators/required_test.py +42 -0
- clear_skies-2.0.5/src/clearskies/validators/unique_test.py +40 -0
- clear_skies-2.0.5/uv.lock +997 -0
- clear_skies-2.0.3/PKG-INFO +0 -46
- clear_skies-2.0.3/README.md +0 -15
- clear_skies-2.0.3/pyproject.toml +0 -77
- {clear_skies-2.0.3 → clear_skies-2.0.5}/LICENSE +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/action.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/authentication/__init__.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/authentication/authentication.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/authentication/authorization.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/authentication/authorization_pass_through.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/authentication/jwks.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/authentication/public.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/authentication/secret_bearer.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/__init__.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/formats/__init__.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/formats/oai3_json/oai3_schema_resolver.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/formats/oai3_json/parameter.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/formats/oai3_json/request.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/formats/oai3_json/response.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/formats/oai3_json/schema/__init__.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/formats/oai3_json/schema/array.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/formats/oai3_json/schema/default.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/formats/oai3_json/schema/enum.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/formats/oai3_json/test.json +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/py.typed +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/request/__init__.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/request/header.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/request/json_body.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/request/parameter.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/request/url_parameter.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/request/url_path.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/response/__init__.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/response/response.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/schema/__init__.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/schema/array.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/schema/base64.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/schema/boolean.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/schema/date.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/schema/datetime.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/schema/double.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/schema/enum.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/schema/integer.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/schema/long.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/schema/number.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/schema/object.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/schema/password.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/schema/schema.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/schema/string.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/backends/__init__.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/backends/api_backend.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/backends/cursor_backend.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/backends/memory_backend.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/backends/secrets_backend.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/column.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/__init__.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/audit.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/belongs_to_id.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/belongs_to_model.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/belongs_to_self.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/boolean.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/category_tree.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/category_tree_ancestors.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/category_tree_children.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/category_tree_descendants.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/created.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/created_by_authorization_data.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/created_by_header.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/created_by_ip.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/created_by_routing_data.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/created_by_user_agent.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/date.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/datetime.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/email.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/float.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/has_many.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/has_many_self.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/has_one.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/integer.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/many_to_many_ids.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/many_to_many_ids_with_data.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/many_to_many_models.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/many_to_many_pivots.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/phone.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/select.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/string.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/timestamp.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/updated.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/uuid.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/README.md +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/__init__.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/actions.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/any.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/any_dict.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/any_dict_or_callable.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/authentication.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/authorization.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/boolean.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/boolean_or_callable.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/callable_config.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/columns.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/conditions.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/config.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/datetime.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/datetime_or_callable.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/endpoint.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/float.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/float_or_callable.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/integer.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/integer_or_callable.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/joins.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/list_any_dict.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/list_any_dict_or_callable.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/model_class.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/model_column.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/model_columns.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/model_destination_name.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/model_to_id_column.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/readable_model_column.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/readable_model_columns.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/schema.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/searchable_model_columns.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/security_headers.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/select.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/select_list.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/string.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/string_dict.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/string_list.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/string_list_or_callable.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/string_or_callable.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/timedelta.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/timezone.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/url.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/validators.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/writeable_model_column.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/writeable_model_columns.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configurable.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/contexts/__init__.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/contexts/cli.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/contexts/context.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/contexts/wsgi.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/contexts/wsgi_ref.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/decorators.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/di/__init__.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/di/additional_config.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/di/additional_config_auto_import.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/di/inject/__init__.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/di/inject/by_class.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/di/inject/by_name.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/di/inject/di.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/di/inject/environment.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/di/inject/input_output.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/di/inject/now.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/di/inject/requests.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/di/inject/secrets.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/di/inject/utcnow.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/di/inject/uuid.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/di/injectable.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/di/injectable_properties.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/di/test_module/__init__.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/di/test_module/another_module/__init__.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/di/test_module/module_class.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/end.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/endpoints/advanced_search.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/endpoints/restful_api.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/environment.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/exceptions/authentication.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/exceptions/authorization.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/exceptions/client_error.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/exceptions/input_errors.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/exceptions/moved_permanently.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/exceptions/moved_temporarily.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/exceptions/not_found.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/functional/__init__.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/functional/routing.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/functional/string.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/functional/validations.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/input_outputs/__init__.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/input_outputs/cli.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/input_outputs/exceptions/__init__.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/input_outputs/exceptions/cli_input_error.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/input_outputs/exceptions/cli_not_found.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/input_outputs/headers.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/input_outputs/input_output.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/input_outputs/programmatic.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/input_outputs/py.typed +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/input_outputs/wsgi.py +0 -0
- /clear_skies-2.0.3/src/clearskies/py.typed → /clear_skies-2.0.5/src/clearskies/integration_tests/__init__.py +0 -0
- /clear_skies-2.0.3/src/clearskies/security_headers/x_content_type_options.py → /clear_skies-2.0.5/src/clearskies/integration_tests/authentication/__init__.py +0 -0
- /clear_skies-2.0.3/src/clearskies/security_headers/x_frame_options.py → /clear_skies-2.0.5/src/clearskies/integration_tests/columns/__init__.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/model.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/query/__init__.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/query/condition.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/query/join.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/query/query.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/query/sort.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/schema.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/secrets/__init__.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/secrets/additional_configs/__init__.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/secrets/additional_configs/mysql_connection_dynamic_producer.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/secrets/additional_configs/mysql_connection_dynamic_producer_via_ssh_cert_bastion.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/secrets/akeyless.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/secrets/exceptions/__init__.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/secrets/exceptions/not_found.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/secrets/secrets.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/security_header.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/security_headers/__init__.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/security_headers/cache_control.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/security_headers/cors.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/security_headers/csp.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/security_headers/hsts.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/test_base.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/typing.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/validator.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/validators/__init__.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/validators/after_column.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/validators/before_column.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/validators/in_the_future.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/validators/in_the_future_at_least.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/validators/in_the_future_at_most.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/validators/in_the_past.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/validators/in_the_past_at_least.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/validators/in_the_past_at_most.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/validators/maximum_length.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/validators/maximum_value.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/validators/minimum_length.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/validators/minimum_value.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/validators/required.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/validators/timedelta.py +0 -0
- {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/validators/unique.py +0 -0
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
name: Bump Version and Create Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
inputs:
|
|
6
|
+
bump_type:
|
|
7
|
+
description: 'The type of version bump'
|
|
8
|
+
required: true
|
|
9
|
+
type: choice
|
|
10
|
+
default: 'patch'
|
|
11
|
+
options:
|
|
12
|
+
- patch
|
|
13
|
+
- minor
|
|
14
|
+
- major
|
|
15
|
+
- stable # For going from pre-release to stable
|
|
16
|
+
- alpha
|
|
17
|
+
- beta
|
|
18
|
+
- rc # release candidate
|
|
19
|
+
- post # post-release
|
|
20
|
+
- dev # dev-release
|
|
21
|
+
|
|
22
|
+
jobs:
|
|
23
|
+
run-tests-and-wait:
|
|
24
|
+
uses: ./.github/workflows/run-tests.yml
|
|
25
|
+
|
|
26
|
+
bump-version:
|
|
27
|
+
name: Bump Version
|
|
28
|
+
runs-on: ubuntu-latest
|
|
29
|
+
needs: run-tests-and-wait
|
|
30
|
+
permissions:
|
|
31
|
+
contents: write
|
|
32
|
+
id-token: write
|
|
33
|
+
|
|
34
|
+
steps:
|
|
35
|
+
- name: Checkout code
|
|
36
|
+
uses: actions/checkout@v4
|
|
37
|
+
with:
|
|
38
|
+
fetch-depth: 0
|
|
39
|
+
token: ${{ secrets.GITHUB_TOKEN }}
|
|
40
|
+
|
|
41
|
+
- name: Install uv and set the python version
|
|
42
|
+
uses: astral-sh/setup-uv@v6
|
|
43
|
+
with:
|
|
44
|
+
python-version: '3.12'
|
|
45
|
+
enable-cache: true
|
|
46
|
+
|
|
47
|
+
- name: Install dependencies
|
|
48
|
+
run: uv sync --locked --all-extras --dev
|
|
49
|
+
|
|
50
|
+
- name: Configure Git author
|
|
51
|
+
run: |
|
|
52
|
+
git config user.name "github-actions[bot]"
|
|
53
|
+
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
54
|
+
|
|
55
|
+
- name: Bump version and get new tag
|
|
56
|
+
id: bump
|
|
57
|
+
run: |
|
|
58
|
+
uv version --bump ${{ inputs.bump_type }}
|
|
59
|
+
NEW_VERSION=$(grep '^version = ' pyproject.toml | cut -d '"' -f 2)
|
|
60
|
+
echo "tag=v$NEW_VERSION" >> $GITHUB_OUTPUT
|
|
61
|
+
uv lock
|
|
62
|
+
|
|
63
|
+
# STEP 1: Generate all changelog files using the --bump flag
|
|
64
|
+
- name: Update Main Changelog File
|
|
65
|
+
uses: orhun/git-cliff-action@v4
|
|
66
|
+
with:
|
|
67
|
+
config: cliff.toml
|
|
68
|
+
args: --tag ${{ steps.bump.outputs.tag }} --output CHANGELOG.md
|
|
69
|
+
|
|
70
|
+
- name: Extract Latest Changelog for Release Body
|
|
71
|
+
id: changelog
|
|
72
|
+
uses: orhun/git-cliff-action@v4
|
|
73
|
+
with:
|
|
74
|
+
config: cliff.toml
|
|
75
|
+
args: --unreleased --tag ${{ steps.bump.outputs.tag }} --strip all
|
|
76
|
+
env:
|
|
77
|
+
OUTPUT: LATEST_CHANGELOG.md
|
|
78
|
+
|
|
79
|
+
# STEP 2: Commit all file changes together
|
|
80
|
+
- name: Commit All Changes
|
|
81
|
+
run: |
|
|
82
|
+
git add pyproject.toml CHANGELOG.md
|
|
83
|
+
git commit -m "chore(release): bump version to ${{ steps.bump.outputs.tag }}"
|
|
84
|
+
|
|
85
|
+
# STEP 3: Create the tag for the final commit
|
|
86
|
+
- name: Create Git Tag
|
|
87
|
+
run: |
|
|
88
|
+
git tag -a "${{ steps.bump.outputs.tag }}" -m "Release ${{ steps.bump.outputs.tag }}"
|
|
89
|
+
|
|
90
|
+
# STEP 4: Push the commit and the tag
|
|
91
|
+
- name: Push All Changes
|
|
92
|
+
run: |
|
|
93
|
+
git push --follow-tags
|
|
94
|
+
|
|
95
|
+
- name: uv build
|
|
96
|
+
run: |
|
|
97
|
+
uv build
|
|
98
|
+
|
|
99
|
+
# STEP 5: Create the release
|
|
100
|
+
- name: Create Stable GitHub Release
|
|
101
|
+
if: "!(contains(inputs.bump_type, 'alpha') || contains(inputs.bump_type, 'beta') || contains(inputs.bump_type, 'rc'))"
|
|
102
|
+
env:
|
|
103
|
+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
104
|
+
run: |
|
|
105
|
+
gh release create ${{ steps.bump.outputs.tag }} \
|
|
106
|
+
--title "Release ${{ steps.bump.outputs.tag }}" \
|
|
107
|
+
--notes-file ${{ steps.changelog.outputs.changelog }} \
|
|
108
|
+
dist/* # <-- This uploads the build files
|
|
109
|
+
|
|
110
|
+
- name: Create Pre-Release on GitHub
|
|
111
|
+
if: "contains(inputs.bump_type, 'alpha') || contains(inputs.bump_type, 'beta') || contains(inputs.bump_type, 'rc')"
|
|
112
|
+
env:
|
|
113
|
+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
114
|
+
run: |
|
|
115
|
+
gh release create ${{ steps.bump.outputs.tag }} \
|
|
116
|
+
--title "Release ${{ steps.bump.outputs.tag }}" \
|
|
117
|
+
--notes-file ${{ steps.changelog.outputs.changelog }} \
|
|
118
|
+
--prerelease \
|
|
119
|
+
dist/* # <-- This uploads the build files
|
|
120
|
+
|
|
121
|
+
- name: Fetch pypi token from Akeyless
|
|
122
|
+
uses: LanceMcCarthy/akeyless-action@d42e07875b1cc7162afd290722babbaf879a86e6
|
|
123
|
+
id: fetch-secrets
|
|
124
|
+
with:
|
|
125
|
+
access-id: ${{ secrets.AKEYLESS_ACCESS_ID }}
|
|
126
|
+
static-secrets: '{"/pypi":"pypi"}'
|
|
127
|
+
|
|
128
|
+
- name: Publish to PyPi
|
|
129
|
+
run: |
|
|
130
|
+
uv publish --token ${{ steps.fetch-secrets.outputs.pypi }}
|
|
131
|
+
|
|
132
|
+
publish:
|
|
133
|
+
name: Publish Doc Site to S3
|
|
134
|
+
runs-on: ubuntu-latest
|
|
135
|
+
needs: bump-version
|
|
136
|
+
permissions:
|
|
137
|
+
id-token: write
|
|
138
|
+
contents: read
|
|
139
|
+
steps:
|
|
140
|
+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
141
|
+
with:
|
|
142
|
+
persist-credentials: false
|
|
143
|
+
- name: configure aws credentials
|
|
144
|
+
uses: aws-actions/configure-aws-credentials@e3dd6a429d7300a6a4c196c26e071d42e0343502
|
|
145
|
+
with:
|
|
146
|
+
role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
|
|
147
|
+
role-session-name: docs-deploy
|
|
148
|
+
aws-region: us-east-1
|
|
149
|
+
- name: Install uv
|
|
150
|
+
uses: astral-sh/setup-uv@v6
|
|
151
|
+
- name: Publish
|
|
152
|
+
run: |
|
|
153
|
+
cd docs/python
|
|
154
|
+
uv run build.py
|
|
155
|
+
sudo apt update
|
|
156
|
+
sudo apt-get install -y ruby ruby-dev jq
|
|
157
|
+
sudo gem install bundler
|
|
158
|
+
cd ../build
|
|
159
|
+
cp ../../README.md _includes/project_readme.md
|
|
160
|
+
cp ../../CHANGELOG.md _includes/project_changelog.md
|
|
161
|
+
sudo bundle install
|
|
162
|
+
sudo bundle exec jekyll build
|
|
163
|
+
cd _site
|
|
164
|
+
aws s3 cp . s3://clearskies.info --recursive
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
name: Doc Publish
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
|
|
6
|
+
jobs:
|
|
7
|
+
publish:
|
|
8
|
+
if: github.ref == 'refs/heads/main'
|
|
9
|
+
name: Publish Doc Site to S3
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
permissions:
|
|
12
|
+
id-token: write
|
|
13
|
+
contents: read
|
|
14
|
+
steps:
|
|
15
|
+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
16
|
+
with:
|
|
17
|
+
persist-credentials: false
|
|
18
|
+
- name: configure aws credentials
|
|
19
|
+
uses: aws-actions/configure-aws-credentials@e3dd6a429d7300a6a4c196c26e071d42e0343502
|
|
20
|
+
with:
|
|
21
|
+
role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
|
|
22
|
+
role-session-name: docs-deploy
|
|
23
|
+
aws-region: us-east-1
|
|
24
|
+
- name: Install uv
|
|
25
|
+
uses: astral-sh/setup-uv@v6
|
|
26
|
+
- name: Publish
|
|
27
|
+
run: |
|
|
28
|
+
cd docs/python
|
|
29
|
+
uv run build.py
|
|
30
|
+
sudo apt update
|
|
31
|
+
sudo apt-get install -y ruby ruby-dev
|
|
32
|
+
sudo gem install bundler
|
|
33
|
+
cd ../build
|
|
34
|
+
cp ../../README.md _includes/project_readme.md
|
|
35
|
+
cp ../../CHANGELOG.md _includes/project_changelog.md
|
|
36
|
+
sudo bundle install
|
|
37
|
+
sudo bundle exec jekyll build
|
|
38
|
+
cd _site
|
|
39
|
+
aws s3 cp . s3://clearskies.info/ --recursive
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
on:
|
|
2
|
+
workflow_call:
|
|
3
|
+
|
|
4
|
+
concurrency:
|
|
5
|
+
group: ${{ github.workflow }}-${{ github.head_ref || github.ref }}
|
|
6
|
+
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
|
|
7
|
+
|
|
8
|
+
defaults:
|
|
9
|
+
run:
|
|
10
|
+
shell: bash
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
changes:
|
|
14
|
+
name: Detect changed files
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
outputs:
|
|
17
|
+
project: ${{ steps.changes.outputs.project }}
|
|
18
|
+
fixtures-pypi: ${{ steps.changes.outputs.fixtures-pypi }}
|
|
19
|
+
src: ${{ steps.changes.outputs.src }}
|
|
20
|
+
tests: ${{ steps.changes.outputs.tests }}
|
|
21
|
+
steps:
|
|
22
|
+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
23
|
+
with:
|
|
24
|
+
persist-credentials: false
|
|
25
|
+
|
|
26
|
+
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
|
27
|
+
id: changes
|
|
28
|
+
with:
|
|
29
|
+
filters: |
|
|
30
|
+
workflow: &workflow
|
|
31
|
+
- '.github/actions/**'
|
|
32
|
+
- '.github/workflows/tests.yaml'
|
|
33
|
+
- '.github/workflows/.tests-matrix.yaml'
|
|
34
|
+
project: &project
|
|
35
|
+
- *workflow
|
|
36
|
+
- 'uv.lock'
|
|
37
|
+
- 'pyproject.toml'
|
|
38
|
+
src:
|
|
39
|
+
- *project
|
|
40
|
+
- 'src/**/*.py'
|
|
41
|
+
tests:
|
|
42
|
+
- *project
|
|
43
|
+
- 'src/**/*.py'
|
|
44
|
+
- 'tests/**'
|
|
45
|
+
|
|
46
|
+
lockfile:
|
|
47
|
+
name: Check uv.lock
|
|
48
|
+
runs-on: ubuntu-latest
|
|
49
|
+
if: needs.changes.outputs.project == 'true'
|
|
50
|
+
needs: changes
|
|
51
|
+
steps:
|
|
52
|
+
- uses: actions/checkout@v4
|
|
53
|
+
- name: Install uv
|
|
54
|
+
uses: astral-sh/setup-uv@v6
|
|
55
|
+
- run: uv sync
|
|
56
|
+
|
|
57
|
+
tests-matrix:
|
|
58
|
+
# Use this matrix with multiple jobs defined in a reusable workflow:
|
|
59
|
+
uses: ./.github/workflows/tests-matrix.yaml
|
|
60
|
+
name: 'Python ${{ matrix.python-version }}'
|
|
61
|
+
if: '!failure()'
|
|
62
|
+
needs:
|
|
63
|
+
- changes
|
|
64
|
+
- lockfile
|
|
65
|
+
with:
|
|
66
|
+
runner: ubuntu-latest
|
|
67
|
+
python-version: ${{ matrix.python-version }}
|
|
68
|
+
run-mypy: ${{ needs.changes.outputs.tests == 'true' }}
|
|
69
|
+
run-pytest: ${{ needs.changes.outputs.tests == 'true' }}
|
|
70
|
+
run-black: ${{ needs.changes.outputs.tests == 'true' }}
|
|
71
|
+
run-ruff-check: ${{ needs.changes.outputs.tests == 'true' }}
|
|
72
|
+
secrets: inherit
|
|
73
|
+
strategy:
|
|
74
|
+
matrix:
|
|
75
|
+
python-version:
|
|
76
|
+
- '3.11'
|
|
77
|
+
- '3.12'
|
|
78
|
+
- '3.13'
|
|
79
|
+
fail-fast: false
|
|
80
|
+
|
|
81
|
+
status:
|
|
82
|
+
name: Status
|
|
83
|
+
runs-on: ubuntu-latest
|
|
84
|
+
if: always()
|
|
85
|
+
needs:
|
|
86
|
+
- changes
|
|
87
|
+
- lockfile
|
|
88
|
+
- tests-matrix
|
|
89
|
+
steps:
|
|
90
|
+
- run: ${{ (contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled')) && 'false' || 'true' }}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
# Reusable workflow consumed by tests.yaml; used to share a single matrix across jobs.
|
|
2
|
+
on:
|
|
3
|
+
workflow_call:
|
|
4
|
+
inputs:
|
|
5
|
+
runner:
|
|
6
|
+
required: true
|
|
7
|
+
type: string
|
|
8
|
+
python-version:
|
|
9
|
+
required: true
|
|
10
|
+
type: string
|
|
11
|
+
run-mypy:
|
|
12
|
+
required: true
|
|
13
|
+
type: boolean
|
|
14
|
+
run-pytest:
|
|
15
|
+
required: true
|
|
16
|
+
type: boolean
|
|
17
|
+
run-black:
|
|
18
|
+
required: true
|
|
19
|
+
type: boolean
|
|
20
|
+
run-ruff-check:
|
|
21
|
+
required: true
|
|
22
|
+
type: boolean
|
|
23
|
+
|
|
24
|
+
defaults:
|
|
25
|
+
run:
|
|
26
|
+
shell: bash
|
|
27
|
+
|
|
28
|
+
env:
|
|
29
|
+
PYTHONWARNDEFAULTENCODING: "true"
|
|
30
|
+
|
|
31
|
+
jobs:
|
|
32
|
+
mypy:
|
|
33
|
+
name: mypy
|
|
34
|
+
runs-on: ${{ inputs.runner }}
|
|
35
|
+
if: inputs.run-mypy
|
|
36
|
+
steps:
|
|
37
|
+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
38
|
+
with:
|
|
39
|
+
persist-credentials: false
|
|
40
|
+
|
|
41
|
+
- name: Install uv and set the python version
|
|
42
|
+
uses: astral-sh/setup-uv@v6
|
|
43
|
+
with:
|
|
44
|
+
python-version: ${{ inputs.python-version }}
|
|
45
|
+
enable-cache: true
|
|
46
|
+
- name: Install dependencies
|
|
47
|
+
run: uv sync --locked --all-extras --dev
|
|
48
|
+
- run: uv run mypy src --check || true
|
|
49
|
+
|
|
50
|
+
pytest:
|
|
51
|
+
name: pytest
|
|
52
|
+
runs-on: ${{ inputs.runner }}
|
|
53
|
+
if: inputs.run-pytest
|
|
54
|
+
steps:
|
|
55
|
+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
56
|
+
with:
|
|
57
|
+
persist-credentials: false
|
|
58
|
+
|
|
59
|
+
- name: Install uv and set the python version
|
|
60
|
+
uses: astral-sh/setup-uv@v6
|
|
61
|
+
with:
|
|
62
|
+
python-version: ${{ inputs.python-version }}
|
|
63
|
+
enable-cache: true
|
|
64
|
+
- name: Install dependencies
|
|
65
|
+
run: uv sync --locked --all-extras --dev
|
|
66
|
+
- run: uv run pytest -v
|
|
67
|
+
- run: git diff --exit-code --stat HEAD
|
|
68
|
+
|
|
69
|
+
black:
|
|
70
|
+
name: black
|
|
71
|
+
runs-on: ${{ inputs.runner }}
|
|
72
|
+
if: inputs.run-black
|
|
73
|
+
steps:
|
|
74
|
+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
|
|
75
|
+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
76
|
+
with:
|
|
77
|
+
persist-credentials: false
|
|
78
|
+
|
|
79
|
+
- name: Install uv and set the python version
|
|
80
|
+
uses: astral-sh/setup-uv@v6
|
|
81
|
+
with:
|
|
82
|
+
python-version: ${{ inputs.python-version }}
|
|
83
|
+
enable-cache: true
|
|
84
|
+
- name: Install dependencies
|
|
85
|
+
run: uv sync --locked --all-extras --dev
|
|
86
|
+
- uses: psf/black@stable
|
|
87
|
+
with:
|
|
88
|
+
options: "--check --verbose"
|
|
89
|
+
src: "./src"
|
|
90
|
+
|
|
91
|
+
ruff-check:
|
|
92
|
+
name: ruff-check
|
|
93
|
+
runs-on: ${{ inputs.runner }}
|
|
94
|
+
if: inputs.run-ruff-check
|
|
95
|
+
steps:
|
|
96
|
+
- uses: astral-sh/ruff-action@v3
|
|
97
|
+
with:
|
|
98
|
+
args: "check --diff"
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
./build.sh
|
|
2
|
+
*.kate-swp
|
|
3
|
+
.env
|
|
4
|
+
Pipfile.lock
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
# Byte-compiled / optimized / DLL files
|
|
8
|
+
__pycache__/
|
|
9
|
+
*.py[cod]
|
|
10
|
+
*$py.class
|
|
11
|
+
|
|
12
|
+
# C extensions
|
|
13
|
+
*.so
|
|
14
|
+
|
|
15
|
+
# Distribution / packaging
|
|
16
|
+
.Python
|
|
17
|
+
build/
|
|
18
|
+
develop-eggs/
|
|
19
|
+
dist/
|
|
20
|
+
downloads/
|
|
21
|
+
eggs/
|
|
22
|
+
.eggs/
|
|
23
|
+
lib/
|
|
24
|
+
lib64/
|
|
25
|
+
parts/
|
|
26
|
+
sdist/
|
|
27
|
+
var/
|
|
28
|
+
wheels/
|
|
29
|
+
share/python-wheels/
|
|
30
|
+
*.egg-info/
|
|
31
|
+
.installed.cfg
|
|
32
|
+
*.egg
|
|
33
|
+
MANIFEST
|
|
34
|
+
|
|
35
|
+
# PyInstaller
|
|
36
|
+
# Usually these files are written by a python script from a template
|
|
37
|
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
|
38
|
+
*.manifest
|
|
39
|
+
*.spec
|
|
40
|
+
|
|
41
|
+
# Installer logs
|
|
42
|
+
pip-log.txt
|
|
43
|
+
pip-delete-this-directory.txt
|
|
44
|
+
|
|
45
|
+
# Unit test / coverage reports
|
|
46
|
+
htmlcov/
|
|
47
|
+
.tox/
|
|
48
|
+
.nox/
|
|
49
|
+
.coverage
|
|
50
|
+
.coverage.*
|
|
51
|
+
.cache
|
|
52
|
+
nosetests.xml
|
|
53
|
+
coverage.xml
|
|
54
|
+
*.cover
|
|
55
|
+
*.py,cover
|
|
56
|
+
.hypothesis/
|
|
57
|
+
.pytest_cache/
|
|
58
|
+
cover/
|
|
59
|
+
|
|
60
|
+
# Translations
|
|
61
|
+
*.mo
|
|
62
|
+
*.pot
|
|
63
|
+
|
|
64
|
+
# Django stuff:
|
|
65
|
+
*.log
|
|
66
|
+
local_settings.py
|
|
67
|
+
db.sqlite3
|
|
68
|
+
db.sqlite3-journal
|
|
69
|
+
|
|
70
|
+
# Flask stuff:
|
|
71
|
+
instance/
|
|
72
|
+
.webassets-cache
|
|
73
|
+
|
|
74
|
+
# Scrapy stuff:
|
|
75
|
+
.scrapy
|
|
76
|
+
|
|
77
|
+
# Sphinx documentation
|
|
78
|
+
docs/_build/
|
|
79
|
+
|
|
80
|
+
# PyBuilder
|
|
81
|
+
.pybuilder/
|
|
82
|
+
target/
|
|
83
|
+
|
|
84
|
+
# Jupyter Notebook
|
|
85
|
+
.ipynb_checkpoints
|
|
86
|
+
|
|
87
|
+
# IPython
|
|
88
|
+
profile_default/
|
|
89
|
+
ipython_config.py
|
|
90
|
+
|
|
91
|
+
# pyenv
|
|
92
|
+
# For a library or package, you might want to ignore these files since the code is
|
|
93
|
+
# intended to run in multiple environments; otherwise, check them in:
|
|
94
|
+
# .python-version
|
|
95
|
+
|
|
96
|
+
# pipenv
|
|
97
|
+
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
|
98
|
+
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
|
99
|
+
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
|
100
|
+
# install all needed dependencies.
|
|
101
|
+
#Pipfile.lock
|
|
102
|
+
|
|
103
|
+
# PEP 582; used by e.g. github.com/David-OConnor/pyflow
|
|
104
|
+
__pypackages__/
|
|
105
|
+
|
|
106
|
+
# Celery stuff
|
|
107
|
+
celerybeat-schedule
|
|
108
|
+
celerybeat.pid
|
|
109
|
+
|
|
110
|
+
# SageMath parsed files
|
|
111
|
+
*.sage.py
|
|
112
|
+
|
|
113
|
+
# Environments
|
|
114
|
+
.env
|
|
115
|
+
.venv
|
|
116
|
+
env/
|
|
117
|
+
venv/
|
|
118
|
+
ENV/
|
|
119
|
+
env.bak/
|
|
120
|
+
venv.bak/
|
|
121
|
+
|
|
122
|
+
# Spyder project settings
|
|
123
|
+
.spyderproject
|
|
124
|
+
.spyproject
|
|
125
|
+
|
|
126
|
+
# Rope project settings
|
|
127
|
+
.ropeproject
|
|
128
|
+
|
|
129
|
+
# mkdocs documentation
|
|
130
|
+
/site
|
|
131
|
+
|
|
132
|
+
# mypy
|
|
133
|
+
.mypy_cache/
|
|
134
|
+
.dmypy.json
|
|
135
|
+
dmypy.json
|
|
136
|
+
|
|
137
|
+
# Pyre type checker
|
|
138
|
+
.pyre/
|
|
139
|
+
|
|
140
|
+
# pytype static type analyzer
|
|
141
|
+
.pytype/
|
|
142
|
+
|
|
143
|
+
# Cython debug symbols
|
|
144
|
+
cython_debug/
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# Pre-commit configuration for Gitlab Akeyless Custom Producer
|
|
2
|
+
fail_fast: true
|
|
3
|
+
|
|
4
|
+
ci:
|
|
5
|
+
autofix_commit_msg: "chore(pre-commit): autofix run"
|
|
6
|
+
autoupdate_commit_msg: "chore(pre-commit): autoupdate hooks"
|
|
7
|
+
|
|
8
|
+
default_install_hook_types:
|
|
9
|
+
- pre-commit
|
|
10
|
+
- commit-msg
|
|
11
|
+
- post-checkout
|
|
12
|
+
- post-merge
|
|
13
|
+
- post-rewrite
|
|
14
|
+
|
|
15
|
+
default_stages: ["pre-commit"]
|
|
16
|
+
|
|
17
|
+
repos:
|
|
18
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
19
|
+
rev: v4.6.0
|
|
20
|
+
hooks:
|
|
21
|
+
- id: trailing-whitespace
|
|
22
|
+
- id: end-of-file-fixer
|
|
23
|
+
- id: check-yaml
|
|
24
|
+
- id: check-added-large-files
|
|
25
|
+
- id: mixed-line-ending
|
|
26
|
+
- id: check-merge-conflict
|
|
27
|
+
args: [--assume-in-merge]
|
|
28
|
+
|
|
29
|
+
- repo: https://github.com/compilerla/conventional-pre-commit
|
|
30
|
+
rev: v3.2.0
|
|
31
|
+
hooks:
|
|
32
|
+
- id: conventional-pre-commit
|
|
33
|
+
stages: [commit-msg]
|
|
34
|
+
args: []
|
|
35
|
+
|
|
36
|
+
- repo: https://github.com/astral-sh/uv-pre-commit
|
|
37
|
+
# uv version.
|
|
38
|
+
rev: 0.8.13
|
|
39
|
+
hooks:
|
|
40
|
+
- id: uv-lock
|
|
41
|
+
|
|
42
|
+
- repo: https://github.com/psf/black
|
|
43
|
+
rev: 25.1.0
|
|
44
|
+
hooks:
|
|
45
|
+
- id: black
|
|
46
|
+
files: \.py$
|
|
47
|
+
|
|
48
|
+
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
49
|
+
rev: v0.12.1
|
|
50
|
+
hooks:
|
|
51
|
+
- id: ruff-check
|
|
52
|
+
- id: ruff-format
|
|
53
|
+
|
|
54
|
+
- repo: https://github.com/pre-commit/mirrors-mypy
|
|
55
|
+
rev: v1.16.1
|
|
56
|
+
hooks:
|
|
57
|
+
- id: mypy
|
|
58
|
+
additional_dependencies: [types-requests, types-dateparser, types-PyMySQL]
|
|
59
|
+
files: \.py$
|
|
60
|
+
|
|
61
|
+
- repo: https://github.com/adrienverge/yamllint
|
|
62
|
+
rev: v1.35.1
|
|
63
|
+
hooks:
|
|
64
|
+
- id: yamllint
|
|
65
|
+
args: [-d, relaxed]
|
|
66
|
+
|
|
67
|
+
- repo: local
|
|
68
|
+
hooks:
|
|
69
|
+
- id: pytest
|
|
70
|
+
name: pytest
|
|
71
|
+
verbose: true
|
|
72
|
+
entry: bash -c 'poetry run pytest . --cache-clear'
|
|
73
|
+
language: system
|
|
74
|
+
types: [python]
|
|
75
|
+
pass_filenames: false
|
|
76
|
+
always_run: true
|
|
77
|
+
stages: ["pre-commit"]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.11
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"python.testing.pytestArgs": ["tests"],
|
|
3
|
+
"python.testing.unittestEnabled": false,
|
|
4
|
+
"python.testing.pytestEnabled": true,
|
|
5
|
+
"python.defaultInterpreterPath": "${workspaceFolder}/.venv/bin/python",
|
|
6
|
+
"ruff.interpreter": ["${workspaceFolder}/.venv/bin/python"],
|
|
7
|
+
"ruff.path": ["${workspaceFolder}/.venv/bin/ruff"],
|
|
8
|
+
"ruff.configuration": "${workspaceFolder}/ruff.toml",
|
|
9
|
+
"ruff.nativeServer": "on",
|
|
10
|
+
"ruff.format.preview": true,
|
|
11
|
+
"[python]": {
|
|
12
|
+
"editor.formatOnSave": true,
|
|
13
|
+
"editor.formatOnType": false,
|
|
14
|
+
"editor.codeActionsOnSave": {
|
|
15
|
+
"source.fixAll": "explicit",
|
|
16
|
+
"source.organizeImports": "explicit"
|
|
17
|
+
},
|
|
18
|
+
"editor.defaultFormatter": "charliermarsh.ruff"
|
|
19
|
+
},
|
|
20
|
+
"mypy-type-checker.args": [
|
|
21
|
+
"--config-file=${workspaceFolder}/pyproject.toml"
|
|
22
|
+
]
|
|
23
|
+
}
|