clear-skies 2.0.7__tar.gz → 2.0.8__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 (270) hide show
  1. {clear_skies-2.0.7 → clear_skies-2.0.8}/CHANGELOG.md +11 -0
  2. clear_skies-2.0.8/LATEST_CHANGELOG.md +9 -0
  3. {clear_skies-2.0.7 → clear_skies-2.0.8}/PKG-INFO +1 -1
  4. {clear_skies-2.0.7 → clear_skies-2.0.8}/pyproject.toml +7 -2
  5. {clear_skies-2.0.7 → clear_skies-2.0.8}/ruff.toml +3 -1
  6. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/__init__.py +2 -2
  7. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/authentication/authentication.py +1 -3
  8. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/authentication/authorization.py +12 -5
  9. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/authentication/authorization_pass_through.py +5 -3
  10. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/authentication/jwks.py +25 -23
  11. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/authentication/secret_bearer.py +15 -17
  12. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/autodoc/schema/schema.py +1 -1
  13. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/backends/api_backend.py +50 -56
  14. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/backends/backend.py +14 -14
  15. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/backends/cursor_backend.py +17 -23
  16. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/backends/memory_backend.py +27 -30
  17. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/backends/secrets_backend.py +13 -18
  18. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/column.py +44 -56
  19. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/columns/audit.py +14 -13
  20. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/columns/belongs_to_id.py +10 -15
  21. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/columns/belongs_to_model.py +6 -9
  22. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/columns/belongs_to_self.py +13 -9
  23. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/columns/boolean.py +13 -16
  24. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/columns/category_tree.py +9 -11
  25. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/columns/category_tree_children.py +2 -3
  26. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/columns/category_tree_descendants.py +1 -1
  27. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/columns/created.py +8 -11
  28. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/columns/created_by_authorization_data.py +7 -9
  29. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/columns/created_by_header.py +12 -8
  30. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/columns/created_by_ip.py +6 -8
  31. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/columns/created_by_routing_data.py +12 -7
  32. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/columns/created_by_user_agent.py +6 -9
  33. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/columns/date.py +12 -14
  34. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/columns/datetime.py +19 -17
  35. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/columns/email.py +3 -1
  36. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/columns/float.py +10 -14
  37. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/columns/has_many.py +8 -10
  38. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/columns/has_many_self.py +13 -7
  39. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/columns/has_one.py +2 -0
  40. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/columns/integer.py +9 -11
  41. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/columns/json.py +10 -12
  42. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/columns/many_to_many_ids.py +14 -16
  43. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/columns/many_to_many_ids_with_data.py +16 -16
  44. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/columns/many_to_many_models.py +5 -7
  45. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/columns/many_to_many_pivots.py +3 -5
  46. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/columns/phone.py +12 -9
  47. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/columns/select.py +12 -9
  48. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/columns/string.py +1 -1
  49. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/columns/timestamp.py +15 -15
  50. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/columns/updated.py +8 -10
  51. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/columns/uuid.py +7 -10
  52. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/configs/any.py +2 -0
  53. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/configs/any_dict.py +2 -0
  54. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/configs/any_dict_or_callable.py +2 -0
  55. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/configs/boolean.py +2 -0
  56. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/configs/boolean_or_callable.py +2 -0
  57. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/configs/callable_config.py +2 -0
  58. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/configs/config.py +2 -0
  59. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/configs/datetime.py +2 -0
  60. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/configs/datetime_or_callable.py +2 -0
  61. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/configs/float.py +2 -0
  62. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/configs/float_or_callable.py +2 -0
  63. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/configs/integer.py +2 -0
  64. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/configs/integer_or_callable.py +2 -0
  65. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/configs/list_any_dict.py +2 -0
  66. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/configs/list_any_dict_or_callable.py +2 -0
  67. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/configs/model_column.py +2 -0
  68. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/configs/model_columns.py +2 -0
  69. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/configs/model_destination_name.py +2 -1
  70. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/configs/model_to_id_column.py +2 -0
  71. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/configs/readable_model_column.py +2 -0
  72. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/configs/readable_model_columns.py +2 -0
  73. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/configs/searchable_model_columns.py +2 -0
  74. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/configs/select.py +2 -0
  75. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/configs/select_list.py +2 -0
  76. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/configs/string.py +2 -0
  77. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/configs/string_dict.py +2 -0
  78. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/configs/string_list.py +2 -0
  79. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/configs/string_list_or_callable.py +2 -0
  80. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/configs/timedelta.py +2 -0
  81. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/configs/timezone.py +2 -0
  82. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/configs/url.py +2 -0
  83. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/configs/writeable_model_column.py +2 -0
  84. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/configs/writeable_model_columns.py +2 -0
  85. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/configurable.py +2 -0
  86. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/contexts/cli.py +9 -1
  87. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/contexts/context.py +13 -14
  88. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/contexts/wsgi.py +12 -10
  89. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/contexts/wsgi_ref.py +12 -6
  90. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/decorators.py +1 -1
  91. clear_skies-2.0.8/src/clearskies/decorators.pyi +10 -0
  92. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/di/di.py +7 -6
  93. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/di/inject/by_class.py +2 -0
  94. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/di/inject/by_name.py +2 -0
  95. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/di/inject/di.py +2 -0
  96. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/di/inject/environment.py +1 -1
  97. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/di/inject/now.py +2 -0
  98. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/di/inject/requests.py +2 -0
  99. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/di/inject/secrets.py +2 -2
  100. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/di/inject/utcnow.py +2 -0
  101. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/di/inject/uuid.py +2 -2
  102. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/end.py +45 -7
  103. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/endpoint.py +43 -59
  104. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/endpoint_group.py +15 -18
  105. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/endpoints/advanced_search.py +19 -26
  106. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/endpoints/callable.py +10 -16
  107. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/endpoints/create.py +6 -10
  108. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/endpoints/delete.py +5 -11
  109. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/endpoints/get.py +11 -15
  110. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/endpoints/health_check.py +9 -11
  111. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/endpoints/list.py +29 -36
  112. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/endpoints/restful_api.py +43 -53
  113. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/endpoints/schema.py +14 -18
  114. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/endpoints/simple_search.py +5 -12
  115. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/endpoints/update.py +6 -11
  116. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/environment.py +2 -0
  117. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/input_outputs/cli.py +2 -0
  118. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/input_outputs/headers.py +2 -0
  119. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/input_outputs/input_output.py +15 -15
  120. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/input_outputs/programmatic.py +2 -2
  121. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/input_outputs/wsgi.py +2 -2
  122. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/model.py +120 -25
  123. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/query/query.py +1 -4
  124. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/secrets/__init__.py +2 -1
  125. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/secrets/akeyless.py +12 -10
  126. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/secrets/secrets.py +7 -2
  127. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/security_header.py +4 -2
  128. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/security_headers/cache_control.py +15 -14
  129. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/security_headers/cors.py +10 -9
  130. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/security_headers/csp.py +25 -24
  131. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/security_headers/hsts.py +6 -5
  132. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/typing.py +1 -1
  133. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/validator.py +5 -6
  134. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/validators/after_column.py +6 -7
  135. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/validators/before_column.py +2 -0
  136. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/validators/in_the_future.py +5 -8
  137. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/validators/in_the_future_at_least.py +2 -0
  138. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/validators/in_the_future_at_most.py +2 -0
  139. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/validators/in_the_past.py +5 -8
  140. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/validators/in_the_past_at_least.py +2 -0
  141. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/validators/in_the_past_at_most.py +2 -0
  142. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/validators/maximum_length.py +4 -5
  143. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/validators/maximum_value.py +4 -4
  144. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/validators/minimum_length.py +4 -4
  145. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/validators/minimum_value.py +4 -4
  146. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/validators/required.py +2 -4
  147. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/validators/timedelta.py +8 -9
  148. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/validators/unique.py +2 -3
  149. {clear_skies-2.0.7 → clear_skies-2.0.8}/uv.lock +127 -102
  150. clear_skies-2.0.7/LATEST_CHANGELOG.md +0 -12
  151. {clear_skies-2.0.7 → clear_skies-2.0.8}/.editorconfig +0 -0
  152. {clear_skies-2.0.7 → clear_skies-2.0.8}/.github/workflows/create-version.yaml +0 -0
  153. {clear_skies-2.0.7 → clear_skies-2.0.8}/.github/workflows/docs.yaml +0 -0
  154. {clear_skies-2.0.7 → clear_skies-2.0.8}/.github/workflows/run-tests.yml +0 -0
  155. {clear_skies-2.0.7 → clear_skies-2.0.8}/.github/workflows/tests-matrix.yaml +0 -0
  156. {clear_skies-2.0.7 → clear_skies-2.0.8}/.github/workflows/tests.yaml +0 -0
  157. {clear_skies-2.0.7 → clear_skies-2.0.8}/.gitignore +0 -0
  158. {clear_skies-2.0.7 → clear_skies-2.0.8}/.pre-commit-config.yaml +0 -0
  159. {clear_skies-2.0.7 → clear_skies-2.0.8}/.python-version +0 -0
  160. {clear_skies-2.0.7 → clear_skies-2.0.8}/.vscode/extensions.json +0 -0
  161. {clear_skies-2.0.7 → clear_skies-2.0.8}/.vscode/settings.json +0 -0
  162. {clear_skies-2.0.7 → clear_skies-2.0.8}/LICENSE +0 -0
  163. {clear_skies-2.0.7 → clear_skies-2.0.8}/README.md +0 -0
  164. {clear_skies-2.0.7 → clear_skies-2.0.8}/build.sh +0 -0
  165. {clear_skies-2.0.7 → clear_skies-2.0.8}/cliff.toml +0 -0
  166. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/action.py +0 -0
  167. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/authentication/__init__.py +0 -0
  168. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/authentication/public.py +0 -0
  169. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/autodoc/__init__.py +0 -0
  170. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/autodoc/formats/__init__.py +0 -0
  171. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/autodoc/formats/oai3_json/__init__.py +0 -0
  172. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/autodoc/formats/oai3_json/oai3_json.py +0 -0
  173. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/autodoc/formats/oai3_json/oai3_schema_resolver.py +0 -0
  174. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/autodoc/formats/oai3_json/parameter.py +0 -0
  175. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/autodoc/formats/oai3_json/request.py +0 -0
  176. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/autodoc/formats/oai3_json/response.py +0 -0
  177. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/autodoc/formats/oai3_json/schema/__init__.py +0 -0
  178. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/autodoc/formats/oai3_json/schema/array.py +0 -0
  179. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/autodoc/formats/oai3_json/schema/default.py +0 -0
  180. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/autodoc/formats/oai3_json/schema/enum.py +0 -0
  181. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/autodoc/formats/oai3_json/schema/object.py +0 -0
  182. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/autodoc/formats/oai3_json/test.json +0 -0
  183. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/autodoc/py.typed +0 -0
  184. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/autodoc/request/__init__.py +0 -0
  185. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/autodoc/request/header.py +0 -0
  186. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/autodoc/request/json_body.py +0 -0
  187. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/autodoc/request/parameter.py +0 -0
  188. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/autodoc/request/request.py +0 -0
  189. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/autodoc/request/url_parameter.py +0 -0
  190. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/autodoc/request/url_path.py +0 -0
  191. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/autodoc/response/__init__.py +0 -0
  192. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/autodoc/response/response.py +0 -0
  193. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/autodoc/schema/__init__.py +0 -0
  194. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/autodoc/schema/array.py +0 -0
  195. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/autodoc/schema/base64.py +0 -0
  196. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/autodoc/schema/boolean.py +0 -0
  197. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/autodoc/schema/date.py +0 -0
  198. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/autodoc/schema/datetime.py +0 -0
  199. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/autodoc/schema/double.py +0 -0
  200. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/autodoc/schema/enum.py +0 -0
  201. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/autodoc/schema/integer.py +0 -0
  202. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/autodoc/schema/long.py +0 -0
  203. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/autodoc/schema/number.py +0 -0
  204. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/autodoc/schema/object.py +0 -0
  205. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/autodoc/schema/password.py +0 -0
  206. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/autodoc/schema/string.py +0 -0
  207. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/backends/__init__.py +0 -0
  208. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/columns/__init__.py +0 -0
  209. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/columns/category_tree_ancestors.py +0 -0
  210. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/configs/README.md +0 -0
  211. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/configs/__init__.py +0 -0
  212. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/configs/actions.py +0 -0
  213. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/configs/authentication.py +0 -0
  214. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/configs/authorization.py +0 -0
  215. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/configs/columns.py +0 -0
  216. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/configs/conditions.py +0 -0
  217. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/configs/endpoint.py +0 -0
  218. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/configs/endpoint_list.py +0 -0
  219. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/configs/joins.py +0 -0
  220. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/configs/model_class.py +0 -0
  221. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/configs/schema.py +0 -0
  222. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/configs/security_headers.py +0 -0
  223. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/configs/string_or_callable.py +0 -0
  224. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/configs/validators.py +0 -0
  225. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/contexts/__init__.py +0 -0
  226. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/di/__init__.py +0 -0
  227. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/di/additional_config.py +0 -0
  228. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/di/additional_config_auto_import.py +0 -0
  229. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/di/inject/__init__.py +0 -0
  230. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/di/inject/input_output.py +0 -0
  231. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/di/injectable.py +0 -0
  232. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/di/injectable_properties.py +0 -0
  233. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/di/test_module/__init__.py +0 -0
  234. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/di/test_module/another_module/__init__.py +0 -0
  235. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/di/test_module/module_class.py +0 -0
  236. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/endpoints/__init__.py +0 -0
  237. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/exceptions/__init__.py +0 -0
  238. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/exceptions/authentication.py +0 -0
  239. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/exceptions/authorization.py +0 -0
  240. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/exceptions/client_error.py +0 -0
  241. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/exceptions/input_errors.py +0 -0
  242. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/exceptions/missing_dependency.py +0 -0
  243. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/exceptions/moved_permanently.py +0 -0
  244. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/exceptions/moved_temporarily.py +0 -0
  245. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/exceptions/not_found.py +0 -0
  246. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/functional/__init__.py +0 -0
  247. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/functional/routing.py +0 -0
  248. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/functional/string.py +0 -0
  249. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/functional/validations.py +0 -0
  250. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/input_outputs/__init__.py +0 -0
  251. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/input_outputs/exceptions/__init__.py +0 -0
  252. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/input_outputs/exceptions/cli_input_error.py +0 -0
  253. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/input_outputs/exceptions/cli_not_found.py +0 -0
  254. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/input_outputs/py.typed +0 -0
  255. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/py.typed +0 -0
  256. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/query/__init__.py +0 -0
  257. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/query/condition.py +0 -0
  258. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/query/join.py +0 -0
  259. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/query/sort.py +0 -0
  260. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/schema.py +0 -0
  261. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/secrets/additional_configs/__init__.py +0 -0
  262. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/secrets/additional_configs/mysql_connection_dynamic_producer.py +0 -0
  263. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/secrets/additional_configs/mysql_connection_dynamic_producer_via_ssh_cert_bastion.py +0 -0
  264. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/secrets/exceptions/__init__.py +0 -0
  265. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/secrets/exceptions/not_found.py +0 -0
  266. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/security_headers/__init__.py +0 -0
  267. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/security_headers/x_content_type_options.py +0 -0
  268. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/security_headers/x_frame_options.py +0 -0
  269. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/test_base.py +0 -0
  270. {clear_skies-2.0.7 → clear_skies-2.0.8}/src/clearskies/validators/__init__.py +0 -0
@@ -5,12 +5,22 @@ 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.8] - 2025-09-22
9
+
10
+ ### Changed
11
+ - Move typing import to IF TYPE_CHECKING by @cmancone in [#19](https://github.com/clearskies-py/clearskies/pull/19)
12
+ - Move typing import to IF TYPE_CHECKING:
13
+
14
+ ### Fixed
15
+ - Importing reorder
16
+
8
17
  ## [2.0.7] - 2025-09-16
9
18
 
10
19
  ### Added
11
20
  - Add secrets: inherit
12
21
 
13
22
  ### Changed
23
+ - Bump version to v2.0.7 by @github-actions[bot]
14
24
  - Pull latest changes from repo
15
25
 
16
26
  ### Fixed
@@ -768,6 +778,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
768
778
  * @ made their first contribution
769
779
  * @tnijboer made their first contribution
770
780
  * @conormancone-cimpress made their first contribution
781
+ [2.0.8]: https://github.com/clearskies-py/clearskies/compare/v2.0.7..v2.0.8
771
782
  [2.0.7]: https://github.com/clearskies-py/clearskies/compare/v2.0.6..v2.0.7
772
783
  [2.0.6]: https://github.com/clearskies-py/clearskies/compare/v2.0.5..v2.0.6
773
784
  [2.0.5]: https://github.com/clearskies-py/clearskies/compare/v2.0.4..v2.0.5
@@ -0,0 +1,9 @@
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
+
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: clear-skies
3
- Version: 2.0.7
3
+ Version: 2.0.8
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.7"
4
+ version = "2.0.8"
5
5
  license = "MIT"
6
6
  readme = "./README.md"
7
7
  authors = [{name = "Conor Mancone", email = "cmancone@gmail.com"}]
@@ -61,7 +61,7 @@ exclude = [
61
61
  [tool.black]
62
62
  line-length = 120
63
63
  skip-magic-trailing-comma = false
64
- preview = true
64
+ preview = false
65
65
 
66
66
  [tool.mypy]
67
67
  python_version = "3.11"
@@ -81,3 +81,8 @@ testpaths = [
81
81
  pythonpath = [
82
82
  "app"
83
83
  ]
84
+
85
+ # Add a specific rule for wrapt
86
+ [[tool.mypy.overrides]]
87
+ module = "wrapt"
88
+ ignore_missing_imports = true
@@ -7,7 +7,7 @@ show-fixes = true
7
7
  quote-style = "double"
8
8
  indent-style = "space"
9
9
  docstring-code-format = true
10
- preview = true
10
+ preview = false
11
11
  skip-magic-trailing-comma = false
12
12
  docstring-code-line-length = 100
13
13
  line-ending = "lf"
@@ -27,3 +27,5 @@ ignore = [
27
27
 
28
28
  [lint.pydocstyle]
29
29
  convention = "pep257"
30
+ [lint.per-file-ignores]
31
+ "**/__init__.py" = ["I001"]
@@ -12,7 +12,7 @@ from . import (
12
12
  functional,
13
13
  input_outputs,
14
14
  query,
15
- # secrets,
15
+ secrets,
16
16
  security_headers,
17
17
  typing,
18
18
  validators,
@@ -53,7 +53,7 @@ __all__ = [
53
53
  "typing",
54
54
  "Validator",
55
55
  "query",
56
- # "secrets",
56
+ "secrets",
57
57
  "SecurityHeader",
58
58
  "security_headers",
59
59
  "validators",
@@ -12,9 +12,7 @@ if TYPE_CHECKING:
12
12
 
13
13
 
14
14
  class Authentication(clearskies.configurable.Configurable, requests.auth.AuthBase):
15
- """
16
- Authentication!
17
- """
15
+ """Authentication."""
18
16
 
19
17
  is_public = True
20
18
  can_authorize = False
@@ -1,9 +1,16 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import TYPE_CHECKING
4
+
5
+ if TYPE_CHECKING:
6
+ from clearskies.input_outputs.input_output import InputOutput
7
+ from clearskies.model import Model
8
+
9
+
1
10
  class Authorization:
2
- """
3
- Authorization!
4
- """
11
+ """Authorization."""
5
12
 
6
- def gate(self, authorization_data, input_output):
13
+ def gate(self, authorization_data, input_output: InputOutput) -> bool:
7
14
  """
8
15
  Return True/False to denote if the given user, as represented by the authorization data, should be allowed access.
9
16
 
@@ -11,6 +18,6 @@ class Authorization:
11
18
  """
12
19
  return True
13
20
 
14
- def filter_model(self, model, authorization_data, input_output):
21
+ def filter_model(self, model: Model, authorization_data, input_output: InputOutput) -> Model:
15
22
  """Return a models object with additional filters applied to account for authorization needs."""
16
23
  return model
@@ -1,4 +1,6 @@
1
- import clearskies.di
1
+ from typing import Any
2
+
3
+ from clearskies import di
2
4
 
3
5
  from .jwks import Jwks
4
6
 
@@ -14,7 +16,7 @@ class AuthorizationPassThrough(Jwks):
14
16
  """
15
17
  The input output helper
16
18
  """
17
- input_output = clearskies.di.inject.InputOutput()
19
+ input_output = di.inject.InputOutput()
18
20
 
19
- def headers(self, retry_auth=False):
21
+ def headers(self, retry_auth: bool = False) -> dict[str, Any]:
20
22
  return {"Authorization": self.input_output.request_headers.get("authorization", True)}
@@ -1,73 +1,75 @@
1
+ from __future__ import annotations
2
+
3
+ import datetime
1
4
  import json
2
- from typing import Any
5
+ from typing import TYPE_CHECKING, Any
3
6
 
4
- import clearskies.configs
5
- import clearskies.decorators
6
- import clearskies.di
7
+ from clearskies import configs, decorators, di
7
8
  from clearskies.authentication.authentication import Authentication
8
9
  from clearskies.exceptions import ClientError
9
10
  from clearskies.security_headers.cors import Cors
10
11
 
12
+ if TYPE_CHECKING:
13
+ from clearskies.input_outputs.input_output import InputOutput
11
14
 
12
- class Jwks(Authentication, clearskies.di.InjectableProperties):
13
- """
14
- Validate a JWT against a JWKS (JSON Web Key Set)
15
- """
15
+
16
+ class Jwks(Authentication, di.InjectableProperties):
17
+ """Validate a JWT against a JWKS (JSON Web Key Set)."""
16
18
 
17
19
  """
18
20
  The URL of the JWKS
19
21
  """
20
- jwks_url = clearskies.configs.String(required=True)
22
+ jwks_url = configs.String(required=True)
21
23
 
22
24
  """
23
25
  The audience to accept JWTs for.
24
26
  """
25
- audience = clearskies.configs.StringList(default=[])
27
+ audience = configs.StringList(default=[])
26
28
 
27
29
  """
28
30
  The expected issuer of the JWTs.
29
31
  """
30
- issuer = clearskies.configs.String(default="")
32
+ issuer = configs.String(default="")
31
33
 
32
34
  """
33
35
  The allowed algorithms
34
36
  """
35
- algorithms = clearskies.configs.StringList(default=["RS256"])
37
+ algorithms = configs.StringList(default=["RS256"])
36
38
 
37
39
  """
38
40
  The number of seconds for which the JWKS URL contents can be cached
39
41
  """
40
- jwks_cache_time = clearskies.configs.Integer(default=86400)
42
+ jwks_cache_time = configs.Integer(default=86400)
41
43
 
42
44
  """
43
45
  The Authorization URL (used in the auto-generated documentation)
44
46
  """
45
- authorization_url = clearskies.configs.String()
47
+ authorization_url = configs.String()
46
48
 
47
49
  """
48
50
  The name of the security scheme in the auto-generated documentation.
49
51
  """
50
- documentation_security_name = clearskies.configs.String(default="jwt")
52
+ documentation_security_name = configs.String(default="jwt")
51
53
 
52
54
  """
53
55
  The environment helper.
54
56
  """
55
- environment = clearskies.di.inject.Environment()
57
+ environment = di.inject.Environment()
56
58
 
57
59
  """
58
60
  The requests object.
59
61
  """
60
- requests = clearskies.di.inject.Requests()
62
+ requests = di.inject.Requests()
61
63
 
62
64
  """
63
65
  The JoseJwt library
64
66
  """
65
- jose_jwt = clearskies.di.inject.ByName("jose_jwt")
67
+ jose_jwt = di.inject.ByName("jose_jwt")
66
68
 
67
69
  """
68
70
  The current time
69
71
  """
70
- now = clearskies.di.inject.Now()
72
+ now = di.inject.Now()
71
73
 
72
74
  """
73
75
  Local cache of the JWKS
@@ -77,9 +79,9 @@ class Jwks(Authentication, clearskies.di.InjectableProperties):
77
79
  """
78
80
  The time when the JWKS was last fetched
79
81
  """
80
- _jwks_fetched = None
82
+ _jwks_fetched: datetime.datetime
81
83
 
82
- @clearskies.decorators.parameters_to_properties
84
+ @decorators.parameters_to_properties
83
85
  def __init__(
84
86
  self,
85
87
  jwks_url: str,
@@ -92,8 +94,8 @@ class Jwks(Authentication, clearskies.di.InjectableProperties):
92
94
  ):
93
95
  self.finalize_and_validate_configuration()
94
96
 
95
- def authenticate(self, input_output) -> bool:
96
- auth_header = input_output.get_request_header("authorization", True)
97
+ def authenticate(self, input_output: InputOutput) -> bool:
98
+ auth_header = input_output.request_headers.get("authorization", None)
97
99
  if not auth_header:
98
100
  raise ClientError("Missing 'Authorization' header in request")
99
101
  if auth_header[:7].lower() != "bearer ":
@@ -1,11 +1,9 @@
1
- import clearskies.configs
2
- import clearskies.decorators
3
- import clearskies.di
4
- from clearskies import autodoc
5
- from clearskies.authentication.authentication import Authentication
1
+ from clearskies import configs, decorators, di
6
2
 
3
+ from .authentication import Authentication
7
4
 
8
- class SecretBearer(Authentication, clearskies.di.InjectableProperties):
5
+
6
+ class SecretBearer(Authentication, di.InjectableProperties):
9
7
  """
10
8
  Secret Bearer performs authentication by checking against a static API key stored in either environment variables or a secret manager.
11
9
 
@@ -191,8 +189,8 @@ class SecretBearer(Authentication, clearskies.di.InjectableProperties):
191
189
  is_public = False
192
190
  can_authorize = False
193
191
 
194
- environment = clearskies.di.inject.Environment()
195
- secrets = clearskies.di.inject.Secrets()
192
+ environment = di.inject.Environment()
193
+ secrets = di.inject.Secrets()
196
194
 
197
195
  """
198
196
  The path in our secret manager from which the secret should be fetched.
@@ -248,7 +246,7 @@ class SecretBearer(Authentication, clearskies.di.InjectableProperties):
248
246
  ```
249
247
 
250
248
  """
251
- secret_key = clearskies.configs.String(default="")
249
+ secret_key = configs.String(default="")
252
250
 
253
251
  """
254
252
  The path in our secret manager where an alternate secret can also be fetched
@@ -322,12 +320,12 @@ class SecretBearer(Authentication, clearskies.di.InjectableProperties):
322
320
  ```
323
321
 
324
322
  """
325
- alternate_secret_key = clearskies.configs.String(default="")
323
+ alternate_secret_key = configs.String(default="")
326
324
 
327
325
  """
328
326
  The name of the environment variable from which we should fetch our key.
329
327
  """
330
- environment_key = clearskies.configs.String(default="")
328
+ environment_key = configs.String(default="")
331
329
 
332
330
  """
333
331
  The name of an alternate environment variable from which we should fetch our key.
@@ -392,7 +390,7 @@ class SecretBearer(Authentication, clearskies.di.InjectableProperties):
392
390
  ```
393
391
 
394
392
  """
395
- alternate_environment_key = clearskies.configs.String(default="")
393
+ alternate_environment_key = configs.String(default="")
396
394
 
397
395
  """
398
396
  The expected prefix (if any) that should come before the secret key in the authorization header.
@@ -445,7 +443,7 @@ class SecretBearer(Authentication, clearskies.di.InjectableProperties):
445
443
  }
446
444
  ```
447
445
  """
448
- header_prefix = clearskies.configs.String(default="")
446
+ header_prefix = configs.String(default="")
449
447
 
450
448
  """
451
449
  The length of our header prefix
@@ -455,12 +453,12 @@ class SecretBearer(Authentication, clearskies.di.InjectableProperties):
455
453
  """
456
454
  The name of our security scheme in the auto-generated documentation
457
455
  """
458
- documentation_security_name = clearskies.configs.String(default="ApiKey")
456
+ documentation_security_name = configs.String(default="ApiKey")
459
457
 
460
- _secret: str = None # type: ignore
461
- _alternate_secret: str = None # type: ignore
458
+ _secret: str | None = None
459
+ _alternate_secret: str | None = None
462
460
 
463
- @clearskies.decorators.parameters_to_properties
461
+ @decorators.parameters_to_properties
464
462
  def __init__(
465
463
  self,
466
464
  secret_key: str = "",
@@ -1,5 +1,5 @@
1
1
  class Schema:
2
- name = None
2
+ name: str
3
3
  example = None
4
4
  value = None
5
5
  _type = "string"