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.

Files changed (351) hide show
  1. clear_skies-2.0.5/.editorconfig +11 -0
  2. clear_skies-2.0.5/.github/workflows/create-version.yaml +164 -0
  3. clear_skies-2.0.5/.github/workflows/docs.yaml +39 -0
  4. clear_skies-2.0.5/.github/workflows/run-tests.yml +90 -0
  5. clear_skies-2.0.5/.github/workflows/tests-matrix.yaml +98 -0
  6. clear_skies-2.0.5/.github/workflows/tests.yaml +15 -0
  7. clear_skies-2.0.5/.gitignore +144 -0
  8. clear_skies-2.0.5/.pre-commit-config.yaml +77 -0
  9. clear_skies-2.0.5/.python-version +1 -0
  10. clear_skies-2.0.5/.vscode/extensions.json +3 -0
  11. clear_skies-2.0.5/.vscode/settings.json +23 -0
  12. clear_skies-2.0.5/CHANGELOG.md +751 -0
  13. clear_skies-2.0.5/LATEST_CHANGELOG.md +30 -0
  14. clear_skies-2.0.5/PKG-INFO +74 -0
  15. clear_skies-2.0.5/README.md +45 -0
  16. clear_skies-2.0.5/build.sh +3 -0
  17. clear_skies-2.0.5/cliff.toml +104 -0
  18. clear_skies-2.0.5/pyproject.toml +80 -0
  19. clear_skies-2.0.5/ruff.toml +29 -0
  20. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/__init__.py +2 -0
  21. clear_skies-2.0.5/src/clearskies/authentication/public_test.py +13 -0
  22. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/formats/oai3_json/__init__.py +2 -2
  23. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/formats/oai3_json/oai3_json.py +2 -2
  24. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/formats/oai3_json/schema/object.py +6 -0
  25. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/request/request.py +9 -0
  26. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/backends/backend.py +1 -1
  27. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/json.py +4 -2
  28. clear_skies-2.0.5/src/clearskies/configs/actions_test.py +39 -0
  29. clear_skies-2.0.5/src/clearskies/configs/any_test.py +22 -0
  30. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/endpoint_list.py +1 -0
  31. clear_skies-2.0.5/src/clearskies/configs/model_class_test.py +39 -0
  32. clear_skies-2.0.5/src/clearskies/configs/select_list_test.py +39 -0
  33. clear_skies-2.0.5/src/clearskies/configs/string_test.py +45 -0
  34. clear_skies-2.0.5/src/clearskies/configs/validators_test.py +37 -0
  35. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/di/di.py +6 -1
  36. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/endpoint.py +14 -10
  37. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/endpoint_group.py +26 -0
  38. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/endpoints/__init__.py +2 -0
  39. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/endpoints/callable.py +3 -3
  40. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/endpoints/create.py +6 -3
  41. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/endpoints/delete.py +1 -1
  42. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/endpoints/get.py +2 -6
  43. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/endpoints/health_check.py +3 -1
  44. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/endpoints/list.py +1 -0
  45. clear_skies-2.0.5/src/clearskies/endpoints/schema.py +189 -0
  46. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/endpoints/simple_search.py +2 -2
  47. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/endpoints/update.py +6 -3
  48. clear_skies-2.0.5/src/clearskies/environment_test.py +29 -0
  49. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/exceptions/__init__.py +2 -0
  50. clear_skies-2.0.5/src/clearskies/exceptions/missing_dependency.py +2 -0
  51. clear_skies-2.0.5/src/clearskies/functional/string_test.py +36 -0
  52. clear_skies-2.0.5/src/clearskies/functional/validations_test.py +21 -0
  53. clear_skies-2.0.5/src/clearskies/integration_tests/authentication/secret_bearer_test.py +143 -0
  54. clear_skies-2.0.5/src/clearskies/integration_tests/backends/api_backend_test.py +297 -0
  55. clear_skies-2.0.5/src/clearskies/integration_tests/backends/cursor_backend_test.py +50 -0
  56. clear_skies-2.0.5/src/clearskies/integration_tests/backends/memory_backend_test.py +85 -0
  57. clear_skies-2.0.5/src/clearskies/integration_tests/columns/belongs_to_self_test.py +41 -0
  58. clear_skies-2.0.5/src/clearskies/integration_tests/columns/belongs_to_test.py +134 -0
  59. clear_skies-2.0.5/src/clearskies/integration_tests/columns/belongs_to_test_module/__init__.py +2 -0
  60. clear_skies-2.0.5/src/clearskies/integration_tests/columns/belongs_to_test_module/category.py +12 -0
  61. clear_skies-2.0.5/src/clearskies/integration_tests/columns/belongs_to_test_module/category_reference.py +8 -0
  62. clear_skies-2.0.5/src/clearskies/integration_tests/columns/belongs_to_test_module/product.py +13 -0
  63. clear_skies-2.0.5/src/clearskies/integration_tests/columns/belongs_to_test_module/product_reference.py +8 -0
  64. clear_skies-2.0.5/src/clearskies/integration_tests/columns/category_tree_test.py +58 -0
  65. clear_skies-2.0.5/src/clearskies/integration_tests/columns/column_test.py +235 -0
  66. clear_skies-2.0.5/src/clearskies/integration_tests/columns/created_by_authorization_data_test.py +37 -0
  67. clear_skies-2.0.5/src/clearskies/integration_tests/columns/created_by_header_test.py +31 -0
  68. clear_skies-2.0.5/src/clearskies/integration_tests/columns/created_test.py +30 -0
  69. clear_skies-2.0.5/src/clearskies/integration_tests/columns/date_test.py +43 -0
  70. clear_skies-2.0.5/src/clearskies/integration_tests/columns/datetime_test.py +43 -0
  71. clear_skies-2.0.5/src/clearskies/integration_tests/columns/email_test.py +34 -0
  72. clear_skies-2.0.5/src/clearskies/integration_tests/columns/float_test.py +32 -0
  73. clear_skies-2.0.5/src/clearskies/integration_tests/columns/has_many_test.py +132 -0
  74. clear_skies-2.0.5/src/clearskies/integration_tests/columns/integer_test.py +32 -0
  75. clear_skies-2.0.5/src/clearskies/integration_tests/columns/json_test.py +30 -0
  76. clear_skies-2.0.5/src/clearskies/integration_tests/columns/many_to_many_ids_test.py +71 -0
  77. clear_skies-2.0.5/src/clearskies/integration_tests/columns/many_to_many_ids_with_data_test.py +74 -0
  78. clear_skies-2.0.5/src/clearskies/integration_tests/columns/phone_test.py +40 -0
  79. clear_skies-2.0.5/src/clearskies/integration_tests/columns/select_test.py +36 -0
  80. clear_skies-2.0.5/src/clearskies/integration_tests/columns/string_test.py +37 -0
  81. clear_skies-2.0.5/src/clearskies/integration_tests/columns/timestamp_test.py +44 -0
  82. clear_skies-2.0.5/src/clearskies/integration_tests/columns/updated_test.py +33 -0
  83. clear_skies-2.0.5/src/clearskies/integration_tests/columns/uuid_test.py +30 -0
  84. clear_skies-2.0.5/src/clearskies/integration_tests/di/__init__.py +0 -0
  85. clear_skies-2.0.5/src/clearskies/integration_tests/di/di_test.py +224 -0
  86. clear_skies-2.0.5/src/clearskies/integration_tests/di/my_module/__init__.py +1 -0
  87. clear_skies-2.0.5/src/clearskies/integration_tests/di/my_module/my_sub_module/__init__.py +1 -0
  88. clear_skies-2.0.5/src/clearskies/integration_tests/di/my_module/my_sub_module/my_class.py +2 -0
  89. clear_skies-2.0.5/src/clearskies/integration_tests/endpoints/advanced_search_test.py +101 -0
  90. clear_skies-2.0.5/src/clearskies/integration_tests/endpoints/callable_test.py +95 -0
  91. clear_skies-2.0.5/src/clearskies/integration_tests/endpoints/create_test.py +48 -0
  92. clear_skies-2.0.5/src/clearskies/integration_tests/endpoints/delete_test.py +42 -0
  93. clear_skies-2.0.5/src/clearskies/integration_tests/endpoints/endpoint_group_test.py +143 -0
  94. clear_skies-2.0.5/src/clearskies/integration_tests/endpoints/endpoint_test.py +284 -0
  95. clear_skies-2.0.5/src/clearskies/integration_tests/endpoints/get_test.py +86 -0
  96. clear_skies-2.0.5/src/clearskies/integration_tests/endpoints/health_check_test.py +52 -0
  97. clear_skies-2.0.5/src/clearskies/integration_tests/endpoints/list_test.py +101 -0
  98. clear_skies-2.0.5/src/clearskies/integration_tests/endpoints/restful_api_test.py +84 -0
  99. clear_skies-2.0.5/src/clearskies/integration_tests/endpoints/simple_search_test.py +77 -0
  100. clear_skies-2.0.5/src/clearskies/integration_tests/endpoints/update_test.py +56 -0
  101. clear_skies-2.0.5/src/clearskies/integration_tests/model_test.py +701 -0
  102. clear_skies-2.0.5/src/clearskies/py.typed +0 -0
  103. clear_skies-2.0.5/src/clearskies/query/condition_test.py +97 -0
  104. clear_skies-2.0.5/src/clearskies/query/join_test.py +50 -0
  105. clear_skies-2.0.5/src/clearskies/security_headers/cache_control_test.py +22 -0
  106. clear_skies-2.0.5/src/clearskies/security_headers/cors_test.py +27 -0
  107. clear_skies-2.0.5/src/clearskies/security_headers/csp_test.py +22 -0
  108. clear_skies-2.0.5/src/clearskies/security_headers/hsts_test.py +36 -0
  109. clear_skies-2.0.5/src/clearskies/security_headers/x_content_type_options.py +0 -0
  110. clear_skies-2.0.5/src/clearskies/security_headers/x_frame_options.py +0 -0
  111. clear_skies-2.0.5/src/clearskies/validators/after_column_test.py +34 -0
  112. clear_skies-2.0.5/src/clearskies/validators/before_column_test.py +34 -0
  113. clear_skies-2.0.5/src/clearskies/validators/in_the_future_at_least_test.py +30 -0
  114. clear_skies-2.0.5/src/clearskies/validators/in_the_future_at_most_test.py +32 -0
  115. clear_skies-2.0.5/src/clearskies/validators/in_the_past_at_least_test.py +30 -0
  116. clear_skies-2.0.5/src/clearskies/validators/in_the_past_at_most_test.py +32 -0
  117. clear_skies-2.0.5/src/clearskies/validators/maximum_length_test.py +22 -0
  118. clear_skies-2.0.5/src/clearskies/validators/maximum_value_test.py +23 -0
  119. clear_skies-2.0.5/src/clearskies/validators/minimum_length_test.py +19 -0
  120. clear_skies-2.0.5/src/clearskies/validators/minimum_value_test.py +21 -0
  121. clear_skies-2.0.5/src/clearskies/validators/required_test.py +42 -0
  122. clear_skies-2.0.5/src/clearskies/validators/unique_test.py +40 -0
  123. clear_skies-2.0.5/uv.lock +997 -0
  124. clear_skies-2.0.3/PKG-INFO +0 -46
  125. clear_skies-2.0.3/README.md +0 -15
  126. clear_skies-2.0.3/pyproject.toml +0 -77
  127. {clear_skies-2.0.3 → clear_skies-2.0.5}/LICENSE +0 -0
  128. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/action.py +0 -0
  129. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/authentication/__init__.py +0 -0
  130. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/authentication/authentication.py +0 -0
  131. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/authentication/authorization.py +0 -0
  132. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/authentication/authorization_pass_through.py +0 -0
  133. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/authentication/jwks.py +0 -0
  134. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/authentication/public.py +0 -0
  135. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/authentication/secret_bearer.py +0 -0
  136. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/__init__.py +0 -0
  137. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/formats/__init__.py +0 -0
  138. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/formats/oai3_json/oai3_schema_resolver.py +0 -0
  139. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/formats/oai3_json/parameter.py +0 -0
  140. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/formats/oai3_json/request.py +0 -0
  141. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/formats/oai3_json/response.py +0 -0
  142. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/formats/oai3_json/schema/__init__.py +0 -0
  143. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/formats/oai3_json/schema/array.py +0 -0
  144. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/formats/oai3_json/schema/default.py +0 -0
  145. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/formats/oai3_json/schema/enum.py +0 -0
  146. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/formats/oai3_json/test.json +0 -0
  147. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/py.typed +0 -0
  148. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/request/__init__.py +0 -0
  149. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/request/header.py +0 -0
  150. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/request/json_body.py +0 -0
  151. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/request/parameter.py +0 -0
  152. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/request/url_parameter.py +0 -0
  153. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/request/url_path.py +0 -0
  154. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/response/__init__.py +0 -0
  155. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/response/response.py +0 -0
  156. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/schema/__init__.py +0 -0
  157. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/schema/array.py +0 -0
  158. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/schema/base64.py +0 -0
  159. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/schema/boolean.py +0 -0
  160. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/schema/date.py +0 -0
  161. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/schema/datetime.py +0 -0
  162. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/schema/double.py +0 -0
  163. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/schema/enum.py +0 -0
  164. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/schema/integer.py +0 -0
  165. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/schema/long.py +0 -0
  166. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/schema/number.py +0 -0
  167. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/schema/object.py +0 -0
  168. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/schema/password.py +0 -0
  169. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/schema/schema.py +0 -0
  170. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/autodoc/schema/string.py +0 -0
  171. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/backends/__init__.py +0 -0
  172. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/backends/api_backend.py +0 -0
  173. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/backends/cursor_backend.py +0 -0
  174. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/backends/memory_backend.py +0 -0
  175. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/backends/secrets_backend.py +0 -0
  176. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/column.py +0 -0
  177. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/__init__.py +0 -0
  178. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/audit.py +0 -0
  179. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/belongs_to_id.py +0 -0
  180. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/belongs_to_model.py +0 -0
  181. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/belongs_to_self.py +0 -0
  182. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/boolean.py +0 -0
  183. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/category_tree.py +0 -0
  184. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/category_tree_ancestors.py +0 -0
  185. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/category_tree_children.py +0 -0
  186. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/category_tree_descendants.py +0 -0
  187. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/created.py +0 -0
  188. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/created_by_authorization_data.py +0 -0
  189. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/created_by_header.py +0 -0
  190. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/created_by_ip.py +0 -0
  191. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/created_by_routing_data.py +0 -0
  192. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/created_by_user_agent.py +0 -0
  193. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/date.py +0 -0
  194. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/datetime.py +0 -0
  195. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/email.py +0 -0
  196. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/float.py +0 -0
  197. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/has_many.py +0 -0
  198. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/has_many_self.py +0 -0
  199. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/has_one.py +0 -0
  200. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/integer.py +0 -0
  201. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/many_to_many_ids.py +0 -0
  202. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/many_to_many_ids_with_data.py +0 -0
  203. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/many_to_many_models.py +0 -0
  204. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/many_to_many_pivots.py +0 -0
  205. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/phone.py +0 -0
  206. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/select.py +0 -0
  207. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/string.py +0 -0
  208. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/timestamp.py +0 -0
  209. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/updated.py +0 -0
  210. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/columns/uuid.py +0 -0
  211. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/README.md +0 -0
  212. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/__init__.py +0 -0
  213. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/actions.py +0 -0
  214. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/any.py +0 -0
  215. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/any_dict.py +0 -0
  216. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/any_dict_or_callable.py +0 -0
  217. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/authentication.py +0 -0
  218. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/authorization.py +0 -0
  219. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/boolean.py +0 -0
  220. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/boolean_or_callable.py +0 -0
  221. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/callable_config.py +0 -0
  222. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/columns.py +0 -0
  223. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/conditions.py +0 -0
  224. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/config.py +0 -0
  225. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/datetime.py +0 -0
  226. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/datetime_or_callable.py +0 -0
  227. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/endpoint.py +0 -0
  228. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/float.py +0 -0
  229. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/float_or_callable.py +0 -0
  230. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/integer.py +0 -0
  231. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/integer_or_callable.py +0 -0
  232. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/joins.py +0 -0
  233. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/list_any_dict.py +0 -0
  234. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/list_any_dict_or_callable.py +0 -0
  235. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/model_class.py +0 -0
  236. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/model_column.py +0 -0
  237. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/model_columns.py +0 -0
  238. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/model_destination_name.py +0 -0
  239. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/model_to_id_column.py +0 -0
  240. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/readable_model_column.py +0 -0
  241. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/readable_model_columns.py +0 -0
  242. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/schema.py +0 -0
  243. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/searchable_model_columns.py +0 -0
  244. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/security_headers.py +0 -0
  245. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/select.py +0 -0
  246. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/select_list.py +0 -0
  247. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/string.py +0 -0
  248. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/string_dict.py +0 -0
  249. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/string_list.py +0 -0
  250. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/string_list_or_callable.py +0 -0
  251. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/string_or_callable.py +0 -0
  252. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/timedelta.py +0 -0
  253. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/timezone.py +0 -0
  254. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/url.py +0 -0
  255. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/validators.py +0 -0
  256. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/writeable_model_column.py +0 -0
  257. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configs/writeable_model_columns.py +0 -0
  258. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/configurable.py +0 -0
  259. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/contexts/__init__.py +0 -0
  260. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/contexts/cli.py +0 -0
  261. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/contexts/context.py +0 -0
  262. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/contexts/wsgi.py +0 -0
  263. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/contexts/wsgi_ref.py +0 -0
  264. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/decorators.py +0 -0
  265. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/di/__init__.py +0 -0
  266. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/di/additional_config.py +0 -0
  267. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/di/additional_config_auto_import.py +0 -0
  268. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/di/inject/__init__.py +0 -0
  269. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/di/inject/by_class.py +0 -0
  270. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/di/inject/by_name.py +0 -0
  271. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/di/inject/di.py +0 -0
  272. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/di/inject/environment.py +0 -0
  273. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/di/inject/input_output.py +0 -0
  274. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/di/inject/now.py +0 -0
  275. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/di/inject/requests.py +0 -0
  276. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/di/inject/secrets.py +0 -0
  277. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/di/inject/utcnow.py +0 -0
  278. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/di/inject/uuid.py +0 -0
  279. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/di/injectable.py +0 -0
  280. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/di/injectable_properties.py +0 -0
  281. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/di/test_module/__init__.py +0 -0
  282. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/di/test_module/another_module/__init__.py +0 -0
  283. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/di/test_module/module_class.py +0 -0
  284. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/end.py +0 -0
  285. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/endpoints/advanced_search.py +0 -0
  286. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/endpoints/restful_api.py +0 -0
  287. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/environment.py +0 -0
  288. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/exceptions/authentication.py +0 -0
  289. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/exceptions/authorization.py +0 -0
  290. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/exceptions/client_error.py +0 -0
  291. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/exceptions/input_errors.py +0 -0
  292. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/exceptions/moved_permanently.py +0 -0
  293. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/exceptions/moved_temporarily.py +0 -0
  294. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/exceptions/not_found.py +0 -0
  295. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/functional/__init__.py +0 -0
  296. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/functional/routing.py +0 -0
  297. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/functional/string.py +0 -0
  298. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/functional/validations.py +0 -0
  299. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/input_outputs/__init__.py +0 -0
  300. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/input_outputs/cli.py +0 -0
  301. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/input_outputs/exceptions/__init__.py +0 -0
  302. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/input_outputs/exceptions/cli_input_error.py +0 -0
  303. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/input_outputs/exceptions/cli_not_found.py +0 -0
  304. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/input_outputs/headers.py +0 -0
  305. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/input_outputs/input_output.py +0 -0
  306. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/input_outputs/programmatic.py +0 -0
  307. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/input_outputs/py.typed +0 -0
  308. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/input_outputs/wsgi.py +0 -0
  309. /clear_skies-2.0.3/src/clearskies/py.typed → /clear_skies-2.0.5/src/clearskies/integration_tests/__init__.py +0 -0
  310. /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
  311. /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
  312. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/model.py +0 -0
  313. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/query/__init__.py +0 -0
  314. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/query/condition.py +0 -0
  315. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/query/join.py +0 -0
  316. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/query/query.py +0 -0
  317. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/query/sort.py +0 -0
  318. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/schema.py +0 -0
  319. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/secrets/__init__.py +0 -0
  320. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/secrets/additional_configs/__init__.py +0 -0
  321. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/secrets/additional_configs/mysql_connection_dynamic_producer.py +0 -0
  322. {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
  323. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/secrets/akeyless.py +0 -0
  324. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/secrets/exceptions/__init__.py +0 -0
  325. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/secrets/exceptions/not_found.py +0 -0
  326. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/secrets/secrets.py +0 -0
  327. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/security_header.py +0 -0
  328. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/security_headers/__init__.py +0 -0
  329. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/security_headers/cache_control.py +0 -0
  330. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/security_headers/cors.py +0 -0
  331. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/security_headers/csp.py +0 -0
  332. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/security_headers/hsts.py +0 -0
  333. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/test_base.py +0 -0
  334. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/typing.py +0 -0
  335. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/validator.py +0 -0
  336. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/validators/__init__.py +0 -0
  337. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/validators/after_column.py +0 -0
  338. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/validators/before_column.py +0 -0
  339. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/validators/in_the_future.py +0 -0
  340. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/validators/in_the_future_at_least.py +0 -0
  341. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/validators/in_the_future_at_most.py +0 -0
  342. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/validators/in_the_past.py +0 -0
  343. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/validators/in_the_past_at_least.py +0 -0
  344. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/validators/in_the_past_at_most.py +0 -0
  345. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/validators/maximum_length.py +0 -0
  346. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/validators/maximum_value.py +0 -0
  347. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/validators/minimum_length.py +0 -0
  348. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/validators/minimum_value.py +0 -0
  349. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/validators/required.py +0 -0
  350. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/validators/timedelta.py +0 -0
  351. {clear_skies-2.0.3 → clear_skies-2.0.5}/src/clearskies/validators/unique.py +0 -0
@@ -0,0 +1,11 @@
1
+ root = true
2
+
3
+ [*]
4
+ end_of_line = lf
5
+ insert_final_newline = true
6
+ indent_style = space
7
+ indent_size = 4
8
+
9
+ [*.{yml,yaml}]
10
+ charset = utf-8
11
+ indent_size = 2
@@ -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,15 @@
1
+ name: Tests
2
+
3
+ on:
4
+ pull_request:
5
+ merge_group:
6
+
7
+ defaults:
8
+ run:
9
+ shell: bash
10
+
11
+ permissions: {}
12
+
13
+ jobs:
14
+ run-tests-and-wait:
15
+ uses: ./.github/workflows/run-tests.yml # <-- This calls the other file
@@ -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,3 @@
1
+ {
2
+ "recommendations": ["ms-python.mypy-type-checker", "charliermarsh.ruff"]
3
+ }
@@ -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
+ }