clear-skies 2.0.8__tar.gz → 2.0.9__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 (274) hide show
  1. {clear_skies-2.0.8 → clear_skies-2.0.9}/CHANGELOG.md +12 -0
  2. clear_skies-2.0.9/LATEST_CHANGELOG.md +10 -0
  3. {clear_skies-2.0.8 → clear_skies-2.0.9}/PKG-INFO +1 -1
  4. {clear_skies-2.0.8 → clear_skies-2.0.9}/pyproject.toml +1 -1
  5. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/configs/__init__.py +8 -0
  6. clear_skies-2.0.9/src/clearskies/configs/email.py +10 -0
  7. clear_skies-2.0.9/src/clearskies/configs/email_list.py +17 -0
  8. clear_skies-2.0.9/src/clearskies/configs/email_list_or_callable.py +19 -0
  9. clear_skies-2.0.9/src/clearskies/configs/email_or_email_list_or_callable.py +59 -0
  10. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/configs/string.py +2 -2
  11. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/configs/string_list.py +15 -2
  12. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/configs/string_list_or_callable.py +11 -0
  13. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/secrets/akeyless.py +4 -1
  14. {clear_skies-2.0.8 → clear_skies-2.0.9}/uv.lock +1 -1
  15. clear_skies-2.0.8/LATEST_CHANGELOG.md +0 -9
  16. {clear_skies-2.0.8 → clear_skies-2.0.9}/.editorconfig +0 -0
  17. {clear_skies-2.0.8 → clear_skies-2.0.9}/.github/workflows/create-version.yaml +0 -0
  18. {clear_skies-2.0.8 → clear_skies-2.0.9}/.github/workflows/docs.yaml +0 -0
  19. {clear_skies-2.0.8 → clear_skies-2.0.9}/.github/workflows/run-tests.yml +0 -0
  20. {clear_skies-2.0.8 → clear_skies-2.0.9}/.github/workflows/tests-matrix.yaml +0 -0
  21. {clear_skies-2.0.8 → clear_skies-2.0.9}/.github/workflows/tests.yaml +0 -0
  22. {clear_skies-2.0.8 → clear_skies-2.0.9}/.gitignore +0 -0
  23. {clear_skies-2.0.8 → clear_skies-2.0.9}/.pre-commit-config.yaml +0 -0
  24. {clear_skies-2.0.8 → clear_skies-2.0.9}/.python-version +0 -0
  25. {clear_skies-2.0.8 → clear_skies-2.0.9}/.vscode/extensions.json +0 -0
  26. {clear_skies-2.0.8 → clear_skies-2.0.9}/.vscode/settings.json +0 -0
  27. {clear_skies-2.0.8 → clear_skies-2.0.9}/LICENSE +0 -0
  28. {clear_skies-2.0.8 → clear_skies-2.0.9}/README.md +0 -0
  29. {clear_skies-2.0.8 → clear_skies-2.0.9}/build.sh +0 -0
  30. {clear_skies-2.0.8 → clear_skies-2.0.9}/cliff.toml +0 -0
  31. {clear_skies-2.0.8 → clear_skies-2.0.9}/ruff.toml +0 -0
  32. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/__init__.py +0 -0
  33. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/action.py +0 -0
  34. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/authentication/__init__.py +0 -0
  35. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/authentication/authentication.py +0 -0
  36. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/authentication/authorization.py +0 -0
  37. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/authentication/authorization_pass_through.py +0 -0
  38. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/authentication/jwks.py +0 -0
  39. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/authentication/public.py +0 -0
  40. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/authentication/secret_bearer.py +0 -0
  41. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/autodoc/__init__.py +0 -0
  42. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/autodoc/formats/__init__.py +0 -0
  43. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/autodoc/formats/oai3_json/__init__.py +0 -0
  44. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/autodoc/formats/oai3_json/oai3_json.py +0 -0
  45. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/autodoc/formats/oai3_json/oai3_schema_resolver.py +0 -0
  46. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/autodoc/formats/oai3_json/parameter.py +0 -0
  47. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/autodoc/formats/oai3_json/request.py +0 -0
  48. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/autodoc/formats/oai3_json/response.py +0 -0
  49. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/autodoc/formats/oai3_json/schema/__init__.py +0 -0
  50. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/autodoc/formats/oai3_json/schema/array.py +0 -0
  51. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/autodoc/formats/oai3_json/schema/default.py +0 -0
  52. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/autodoc/formats/oai3_json/schema/enum.py +0 -0
  53. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/autodoc/formats/oai3_json/schema/object.py +0 -0
  54. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/autodoc/formats/oai3_json/test.json +0 -0
  55. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/autodoc/py.typed +0 -0
  56. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/autodoc/request/__init__.py +0 -0
  57. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/autodoc/request/header.py +0 -0
  58. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/autodoc/request/json_body.py +0 -0
  59. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/autodoc/request/parameter.py +0 -0
  60. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/autodoc/request/request.py +0 -0
  61. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/autodoc/request/url_parameter.py +0 -0
  62. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/autodoc/request/url_path.py +0 -0
  63. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/autodoc/response/__init__.py +0 -0
  64. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/autodoc/response/response.py +0 -0
  65. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/autodoc/schema/__init__.py +0 -0
  66. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/autodoc/schema/array.py +0 -0
  67. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/autodoc/schema/base64.py +0 -0
  68. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/autodoc/schema/boolean.py +0 -0
  69. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/autodoc/schema/date.py +0 -0
  70. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/autodoc/schema/datetime.py +0 -0
  71. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/autodoc/schema/double.py +0 -0
  72. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/autodoc/schema/enum.py +0 -0
  73. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/autodoc/schema/integer.py +0 -0
  74. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/autodoc/schema/long.py +0 -0
  75. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/autodoc/schema/number.py +0 -0
  76. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/autodoc/schema/object.py +0 -0
  77. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/autodoc/schema/password.py +0 -0
  78. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/autodoc/schema/schema.py +0 -0
  79. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/autodoc/schema/string.py +0 -0
  80. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/backends/__init__.py +0 -0
  81. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/backends/api_backend.py +0 -0
  82. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/backends/backend.py +0 -0
  83. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/backends/cursor_backend.py +0 -0
  84. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/backends/memory_backend.py +0 -0
  85. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/backends/secrets_backend.py +0 -0
  86. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/column.py +0 -0
  87. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/columns/__init__.py +0 -0
  88. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/columns/audit.py +0 -0
  89. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/columns/belongs_to_id.py +0 -0
  90. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/columns/belongs_to_model.py +0 -0
  91. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/columns/belongs_to_self.py +0 -0
  92. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/columns/boolean.py +0 -0
  93. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/columns/category_tree.py +0 -0
  94. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/columns/category_tree_ancestors.py +0 -0
  95. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/columns/category_tree_children.py +0 -0
  96. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/columns/category_tree_descendants.py +0 -0
  97. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/columns/created.py +0 -0
  98. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/columns/created_by_authorization_data.py +0 -0
  99. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/columns/created_by_header.py +0 -0
  100. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/columns/created_by_ip.py +0 -0
  101. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/columns/created_by_routing_data.py +0 -0
  102. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/columns/created_by_user_agent.py +0 -0
  103. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/columns/date.py +0 -0
  104. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/columns/datetime.py +0 -0
  105. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/columns/email.py +0 -0
  106. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/columns/float.py +0 -0
  107. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/columns/has_many.py +0 -0
  108. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/columns/has_many_self.py +0 -0
  109. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/columns/has_one.py +0 -0
  110. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/columns/integer.py +0 -0
  111. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/columns/json.py +0 -0
  112. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/columns/many_to_many_ids.py +0 -0
  113. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/columns/many_to_many_ids_with_data.py +0 -0
  114. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/columns/many_to_many_models.py +0 -0
  115. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/columns/many_to_many_pivots.py +0 -0
  116. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/columns/phone.py +0 -0
  117. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/columns/select.py +0 -0
  118. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/columns/string.py +0 -0
  119. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/columns/timestamp.py +0 -0
  120. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/columns/updated.py +0 -0
  121. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/columns/uuid.py +0 -0
  122. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/configs/README.md +0 -0
  123. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/configs/actions.py +0 -0
  124. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/configs/any.py +0 -0
  125. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/configs/any_dict.py +0 -0
  126. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/configs/any_dict_or_callable.py +0 -0
  127. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/configs/authentication.py +0 -0
  128. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/configs/authorization.py +0 -0
  129. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/configs/boolean.py +0 -0
  130. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/configs/boolean_or_callable.py +0 -0
  131. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/configs/callable_config.py +0 -0
  132. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/configs/columns.py +0 -0
  133. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/configs/conditions.py +0 -0
  134. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/configs/config.py +0 -0
  135. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/configs/datetime.py +0 -0
  136. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/configs/datetime_or_callable.py +0 -0
  137. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/configs/endpoint.py +0 -0
  138. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/configs/endpoint_list.py +0 -0
  139. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/configs/float.py +0 -0
  140. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/configs/float_or_callable.py +0 -0
  141. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/configs/integer.py +0 -0
  142. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/configs/integer_or_callable.py +0 -0
  143. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/configs/joins.py +0 -0
  144. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/configs/list_any_dict.py +0 -0
  145. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/configs/list_any_dict_or_callable.py +0 -0
  146. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/configs/model_class.py +0 -0
  147. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/configs/model_column.py +0 -0
  148. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/configs/model_columns.py +0 -0
  149. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/configs/model_destination_name.py +0 -0
  150. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/configs/model_to_id_column.py +0 -0
  151. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/configs/readable_model_column.py +0 -0
  152. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/configs/readable_model_columns.py +0 -0
  153. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/configs/schema.py +0 -0
  154. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/configs/searchable_model_columns.py +0 -0
  155. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/configs/security_headers.py +0 -0
  156. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/configs/select.py +0 -0
  157. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/configs/select_list.py +0 -0
  158. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/configs/string_dict.py +0 -0
  159. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/configs/string_or_callable.py +0 -0
  160. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/configs/timedelta.py +0 -0
  161. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/configs/timezone.py +0 -0
  162. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/configs/url.py +0 -0
  163. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/configs/validators.py +0 -0
  164. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/configs/writeable_model_column.py +0 -0
  165. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/configs/writeable_model_columns.py +0 -0
  166. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/configurable.py +0 -0
  167. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/contexts/__init__.py +0 -0
  168. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/contexts/cli.py +0 -0
  169. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/contexts/context.py +0 -0
  170. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/contexts/wsgi.py +0 -0
  171. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/contexts/wsgi_ref.py +0 -0
  172. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/decorators.py +0 -0
  173. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/decorators.pyi +0 -0
  174. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/di/__init__.py +0 -0
  175. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/di/additional_config.py +0 -0
  176. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/di/additional_config_auto_import.py +0 -0
  177. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/di/di.py +0 -0
  178. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/di/inject/__init__.py +0 -0
  179. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/di/inject/by_class.py +0 -0
  180. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/di/inject/by_name.py +0 -0
  181. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/di/inject/di.py +0 -0
  182. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/di/inject/environment.py +0 -0
  183. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/di/inject/input_output.py +0 -0
  184. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/di/inject/now.py +0 -0
  185. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/di/inject/requests.py +0 -0
  186. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/di/inject/secrets.py +0 -0
  187. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/di/inject/utcnow.py +0 -0
  188. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/di/inject/uuid.py +0 -0
  189. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/di/injectable.py +0 -0
  190. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/di/injectable_properties.py +0 -0
  191. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/di/test_module/__init__.py +0 -0
  192. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/di/test_module/another_module/__init__.py +0 -0
  193. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/di/test_module/module_class.py +0 -0
  194. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/end.py +0 -0
  195. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/endpoint.py +0 -0
  196. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/endpoint_group.py +0 -0
  197. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/endpoints/__init__.py +0 -0
  198. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/endpoints/advanced_search.py +0 -0
  199. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/endpoints/callable.py +0 -0
  200. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/endpoints/create.py +0 -0
  201. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/endpoints/delete.py +0 -0
  202. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/endpoints/get.py +0 -0
  203. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/endpoints/health_check.py +0 -0
  204. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/endpoints/list.py +0 -0
  205. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/endpoints/restful_api.py +0 -0
  206. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/endpoints/schema.py +0 -0
  207. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/endpoints/simple_search.py +0 -0
  208. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/endpoints/update.py +0 -0
  209. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/environment.py +0 -0
  210. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/exceptions/__init__.py +0 -0
  211. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/exceptions/authentication.py +0 -0
  212. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/exceptions/authorization.py +0 -0
  213. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/exceptions/client_error.py +0 -0
  214. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/exceptions/input_errors.py +0 -0
  215. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/exceptions/missing_dependency.py +0 -0
  216. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/exceptions/moved_permanently.py +0 -0
  217. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/exceptions/moved_temporarily.py +0 -0
  218. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/exceptions/not_found.py +0 -0
  219. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/functional/__init__.py +0 -0
  220. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/functional/routing.py +0 -0
  221. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/functional/string.py +0 -0
  222. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/functional/validations.py +0 -0
  223. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/input_outputs/__init__.py +0 -0
  224. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/input_outputs/cli.py +0 -0
  225. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/input_outputs/exceptions/__init__.py +0 -0
  226. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/input_outputs/exceptions/cli_input_error.py +0 -0
  227. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/input_outputs/exceptions/cli_not_found.py +0 -0
  228. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/input_outputs/headers.py +0 -0
  229. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/input_outputs/input_output.py +0 -0
  230. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/input_outputs/programmatic.py +0 -0
  231. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/input_outputs/py.typed +0 -0
  232. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/input_outputs/wsgi.py +0 -0
  233. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/model.py +0 -0
  234. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/py.typed +0 -0
  235. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/query/__init__.py +0 -0
  236. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/query/condition.py +0 -0
  237. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/query/join.py +0 -0
  238. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/query/query.py +0 -0
  239. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/query/sort.py +0 -0
  240. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/schema.py +0 -0
  241. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/secrets/__init__.py +0 -0
  242. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/secrets/additional_configs/__init__.py +0 -0
  243. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/secrets/additional_configs/mysql_connection_dynamic_producer.py +0 -0
  244. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/secrets/additional_configs/mysql_connection_dynamic_producer_via_ssh_cert_bastion.py +0 -0
  245. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/secrets/exceptions/__init__.py +0 -0
  246. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/secrets/exceptions/not_found.py +0 -0
  247. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/secrets/secrets.py +0 -0
  248. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/security_header.py +0 -0
  249. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/security_headers/__init__.py +0 -0
  250. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/security_headers/cache_control.py +0 -0
  251. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/security_headers/cors.py +0 -0
  252. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/security_headers/csp.py +0 -0
  253. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/security_headers/hsts.py +0 -0
  254. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/security_headers/x_content_type_options.py +0 -0
  255. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/security_headers/x_frame_options.py +0 -0
  256. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/test_base.py +0 -0
  257. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/typing.py +0 -0
  258. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/validator.py +0 -0
  259. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/validators/__init__.py +0 -0
  260. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/validators/after_column.py +0 -0
  261. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/validators/before_column.py +0 -0
  262. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/validators/in_the_future.py +0 -0
  263. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/validators/in_the_future_at_least.py +0 -0
  264. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/validators/in_the_future_at_most.py +0 -0
  265. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/validators/in_the_past.py +0 -0
  266. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/validators/in_the_past_at_least.py +0 -0
  267. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/validators/in_the_past_at_most.py +0 -0
  268. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/validators/maximum_length.py +0 -0
  269. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/validators/maximum_value.py +0 -0
  270. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/validators/minimum_length.py +0 -0
  271. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/validators/minimum_value.py +0 -0
  272. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/validators/required.py +0 -0
  273. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/validators/timedelta.py +0 -0
  274. {clear_skies-2.0.8 → clear_skies-2.0.9}/src/clearskies/validators/unique.py +0 -0
@@ -5,9 +5,20 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [2.0.9] - 2025-10-01
9
+
10
+ ### Added
11
+ - Add email configs by @tnijboer in [#21](https://github.com/clearskies-py/clearskies/pull/21)
12
+ - Add regex to string_list/string_list_callable and reuse them
13
+ - Add email configs
14
+
15
+ ### Removed
16
+ - Remove extra call, token is already in credentials json in [#20](https://github.com/clearskies-py/clearskies/pull/20)
17
+
8
18
  ## [2.0.8] - 2025-09-22
9
19
 
10
20
  ### Changed
21
+ - Bump version to v2.0.8 by @github-actions[bot]
11
22
  - Move typing import to IF TYPE_CHECKING by @cmancone in [#19](https://github.com/clearskies-py/clearskies/pull/19)
12
23
  - Move typing import to IF TYPE_CHECKING:
13
24
 
@@ -778,6 +789,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
778
789
  * @ made their first contribution
779
790
  * @tnijboer made their first contribution
780
791
  * @conormancone-cimpress made their first contribution
792
+ [2.0.9]: https://github.com/clearskies-py/clearskies/compare/v2.0.8..v2.0.9
781
793
  [2.0.8]: https://github.com/clearskies-py/clearskies/compare/v2.0.7..v2.0.8
782
794
  [2.0.7]: https://github.com/clearskies-py/clearskies/compare/v2.0.6..v2.0.7
783
795
  [2.0.6]: https://github.com/clearskies-py/clearskies/compare/v2.0.5..v2.0.6
@@ -0,0 +1,10 @@
1
+ ## [2.0.9] - 2025-10-01
2
+
3
+ ### Added
4
+ - Add email configs by @tnijboer in [#21](https://github.com/clearskies-py/clearskies/pull/21)
5
+ - Add regex to string_list/string_list_callable and reuse them
6
+ - Add email configs
7
+
8
+ ### Removed
9
+ - Remove extra call, token is already in credentials json in [#20](https://github.com/clearskies-py/clearskies/pull/20)
10
+
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: clear-skies
3
- Version: 2.0.8
3
+ Version: 2.0.9
4
4
  Summary: A framework for building backends in the cloud
5
5
  Project-URL: Documentation, https://clearskies.io/
6
6
  Project-URL: Repository, https://github.com/clearskies-py/clearskies
@@ -1,7 +1,7 @@
1
1
  [project]
2
2
  name = "clear-skies"
3
3
  description = "A framework for building backends in the cloud"
4
- version = "2.0.8"
4
+ version = "2.0.9"
5
5
  license = "MIT"
6
6
  readme = "./README.md"
7
7
  authors = [{name = "Conor Mancone", email = "cmancone@gmail.com"}]
@@ -79,6 +79,10 @@ from .conditions import Conditions
79
79
  from .config import Config
80
80
  from .datetime import Datetime
81
81
  from .datetime_or_callable import DatetimeOrCallable
82
+ from .email import Email
83
+ from .email_list import EmailList
84
+ from .email_list_or_callable import EmailListOrCallable
85
+ from .email_or_email_list_or_callable import EmailOrEmailListOrCallable
82
86
  from .endpoint import Endpoint
83
87
  from .endpoint_list import EndpointList
84
88
  from .float import Float
@@ -127,6 +131,10 @@ __all__ = [
127
131
  "Config",
128
132
  "Datetime",
129
133
  "DatetimeOrCallable",
134
+ "Email",
135
+ "EmailList",
136
+ "EmailListOrCallable",
137
+ "EmailOrEmailListOrCallable",
130
138
  "Endpoint",
131
139
  "EndpointList",
132
140
  "Float",
@@ -0,0 +1,10 @@
1
+ from __future__ import annotations
2
+
3
+ from clearskies.configs import string
4
+
5
+
6
+ class Email(string.String):
7
+ def __init__(
8
+ self, required=False, default=None, regexp: str = r"(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)"
9
+ ):
10
+ super().__init__(required=required, default=default, regexp=regexp)
@@ -0,0 +1,17 @@
1
+ from __future__ import annotations
2
+
3
+ from clearskies.configs import string_list
4
+
5
+
6
+ class EmailList(string_list.StringList):
7
+ """
8
+ This is for a configuration that should be a list of strings in email format.
9
+
10
+ This is different than StringList, which also accepts a list of strings, but
11
+ validates that all of those values match the required format.
12
+ """
13
+
14
+ def __init__(
15
+ self, required=False, default=None, regexp: str = r"(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)"
16
+ ):
17
+ super().__init__(required=required, default=default, regexp=regexp)
@@ -0,0 +1,19 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Callable
4
+
5
+ from clearskies.configs import string_list_or_callable
6
+
7
+
8
+ class EmailListOrCallable(string_list_or_callable.StringListOrCallable):
9
+ """
10
+ This is for a configuration that should be a list of emails or a callable that returns a list of emails.
11
+
12
+ This is different than StringList, which also accepts a list of strings, but
13
+ validates that all of those values match the email format.
14
+ """
15
+
16
+ def __init__(
17
+ self, required=False, default=None, regexp: str = r"(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)"
18
+ ):
19
+ super().__init__(required=required, default=default, regexp=regexp)
@@ -0,0 +1,59 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Callable
4
+
5
+ from clearskies.configs import config
6
+
7
+
8
+ class EmailOrEmailListOrCallable(config.Config):
9
+ """
10
+ This is for a configuration that should be an email or a list of emails or a callable that returns a list of emails.
11
+
12
+ This is a combination of Email and EmailListOrCallable.
13
+ """
14
+
15
+ def __init__(
16
+ self, required=False, default=None, regexp: str = r"(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)"
17
+ ):
18
+ self.required = required
19
+ self.default = default
20
+ self.regexp = regexp
21
+
22
+ def __set__(self, instance, value: str | list[str] | Callable[..., list[str]]):
23
+ if value is None:
24
+ return
25
+ if self.regexp:
26
+ import re
27
+ if isinstance(value, str):
28
+ if self.regexp and not re.match(self.regexp, value):
29
+ error_prefix = self._error_prefix(instance)
30
+ raise ValueError(
31
+ f"{error_prefix} attempt to set a value of '{value}' but this does not match the required regexp: '{self.regexp}'."
32
+ )
33
+ value = [value]
34
+ elif not isinstance(value, list) and not callable(value):
35
+ error_prefix = self._error_prefix(instance)
36
+ raise TypeError(
37
+ f"{error_prefix} attempt to set a value of type '{value.__class__.__name__}' to a parameter that should be a list or a callable"
38
+ )
39
+ if isinstance(value, list):
40
+ if self.regexp:
41
+ import re
42
+
43
+ for index, item in enumerate(value):
44
+ if not isinstance(item, str):
45
+ error_prefix = self._error_prefix(instance)
46
+ raise TypeError(
47
+ f"{error_prefix} attempt to set a value of type '{item.__class__.__name__}' for item #{index + 1}. A string was expected."
48
+ )
49
+ if not re.match(self.regexp, item):
50
+ error_prefix = self._error_prefix(instance)
51
+ raise ValueError(
52
+ f"{error_prefix} attempt to set a value of '{item}' for item #{index + 1} but this does not match the required regexp: '{self.regexp}'."
53
+ )
54
+ instance._set_config(self, value)
55
+
56
+ def __get__(self, instance, parent) -> list[str] | Callable[..., list[str]]:
57
+ if not instance:
58
+ return self # type: ignore
59
+ return instance._get_config(self)
@@ -1,5 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
+ import re
4
+
3
5
  from clearskies.configs import config
4
6
 
5
7
 
@@ -16,8 +18,6 @@ class String(config.Config):
16
18
  f"{error_prefix} attempt to set a value of type '{value.__class__.__name__}' to a parameter that requires a string."
17
19
  )
18
20
  if self.regexp:
19
- import re
20
-
21
21
  if not re.match(self.regexp, value):
22
22
  error_prefix = self._error_prefix(instance)
23
23
  raise ValueError(
@@ -1,5 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
+ import re
4
+
3
5
  from clearskies.configs import config
4
6
 
5
7
 
@@ -11,6 +13,11 @@ class StringList(config.Config):
11
13
  valdiates that all of those values match against an allow list.
12
14
  """
13
15
 
16
+ def __init__(self, required=False, default=None, regexp: str = ""):
17
+ self.required = required
18
+ self.default = default
19
+ self.regexp = regexp
20
+
14
21
  def __set__(self, instance, value: list[str]):
15
22
  if value is None:
16
23
  return
@@ -18,13 +25,19 @@ class StringList(config.Config):
18
25
  if not isinstance(value, list):
19
26
  error_prefix = self._error_prefix(instance)
20
27
  raise TypeError(
21
- f"{error_prefix} attempt to set a value of type '{value.__class__.__name__}' to a list parameter"
28
+ f"{error_prefix} attempt to set a value of type '{value.__class__.__name__}' to a list of strings parameter."
22
29
  )
30
+
23
31
  for index, item in enumerate(value):
24
32
  if not isinstance(item, str):
25
33
  error_prefix = self._error_prefix(instance)
26
34
  raise TypeError(
27
- f"{error_prefix} attempt to set a value of type '{item.__class__.__name__}' for item #{index + 1}. A string was expected."
35
+ f"{error_prefix} attempt to set a value of type '{item.__class__.__name__}' for item #{index + 1}. A string was expected."
36
+ )
37
+ if self.regexp and not re.match(self.regexp, item):
38
+ error_prefix = self._error_prefix(instance)
39
+ raise ValueError(
40
+ f"{error_prefix} attempt to set a value of '{item}' for item #{index + 1} but this does not match the required regexp: '{self.regexp}'."
28
41
  )
29
42
  instance._set_config(self, value)
30
43
 
@@ -1,5 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
+ import re
3
4
  from typing import Callable
4
5
 
5
6
  from clearskies.configs import config
@@ -13,6 +14,11 @@ class StringListOrCallable(config.Config):
13
14
  valdiates that all of those values match against an allow list.
14
15
  """
15
16
 
17
+ def __init__(self, required=False, default=None, regexp: str = ""):
18
+ self.required = required
19
+ self.default = default
20
+ self.regexp = regexp
21
+
16
22
  def __set__(self, instance, value: list[str] | Callable[..., list[str]]):
17
23
  if value is None:
18
24
  return
@@ -29,6 +35,11 @@ class StringListOrCallable(config.Config):
29
35
  raise TypeError(
30
36
  f"{error_prefix} attempt to set a value of type '{item.__class__.__name__}' for item #{index + 1}. A string was expected."
31
37
  )
38
+ if self.regexp and not re.match(self.regexp, item):
39
+ error_prefix = self._error_prefix(instance)
40
+ raise ValueError(
41
+ f"{error_prefix} attempt to set a value of '{item}' for item #{index + 1} but this does not match the required regexp: '{self.regexp}'."
42
+ )
32
43
  instance._set_config(self, value)
33
44
 
34
45
  def __get__(self, instance, parent) -> list[str] | Callable[..., list[str]]:
@@ -138,6 +138,7 @@ class Akeyless(secrets.Secrets):
138
138
  return res.token
139
139
 
140
140
  def auth_saml(self):
141
+ import json
141
142
  import os
142
143
  from pathlib import Path
143
144
 
@@ -145,7 +146,9 @@ class Akeyless(secrets.Secrets):
145
146
  home = str(Path.home())
146
147
  with open(f"{home}/.akeyless/.tmp_creds/{self.profile}-{self.access_id}", "r") as creds_file:
147
148
  credentials = creds_file.read()
148
-
149
+ credentials_json = json.loads(credentials)
150
+ if "token" in credentials_json:
151
+ return credentials_json["token"]
149
152
  # and now we can turn that into a token
150
153
  response = self.requests.post(
151
154
  "https://rest.akeyless.io/",
@@ -202,7 +202,7 @@ wheels = [
202
202
 
203
203
  [[package]]
204
204
  name = "clear-skies"
205
- version = "2.0.8"
205
+ version = "2.0.9"
206
206
  source = { editable = "." }
207
207
  dependencies = [
208
208
  { name = "dateparser" },
@@ -1,9 +0,0 @@
1
- ## [2.0.8] - 2025-09-22
2
-
3
- ### Changed
4
- - Move typing import to IF TYPE_CHECKING by @cmancone in [#19](https://github.com/clearskies-py/clearskies/pull/19)
5
- - Move typing import to IF TYPE_CHECKING:
6
-
7
- ### Fixed
8
- - Importing reorder
9
-
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes