clear-skies 2.0.0__tar.gz → 2.0.2__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 (251) hide show
  1. {clear_skies-2.0.0 → clear_skies-2.0.2}/PKG-INFO +2 -2
  2. {clear_skies-2.0.0 → clear_skies-2.0.2}/pyproject.toml +5 -3
  3. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/__init__.py +5 -8
  4. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/authentication/authentication.py +4 -0
  5. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/authentication/authorization.py +4 -0
  6. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/authentication/jwks.py +8 -3
  7. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/authentication/secret_bearer.py +3 -3
  8. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/backends/api_backend.py +2 -2
  9. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/backends/backend.py +13 -0
  10. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/backends/secrets_backend.py +0 -1
  11. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/column.py +9 -8
  12. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/columns/audit.py +3 -2
  13. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/columns/belongs_to_id.py +2 -2
  14. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/columns/belongs_to_model.py +6 -2
  15. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/columns/belongs_to_self.py +2 -2
  16. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/columns/boolean.py +6 -2
  17. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/columns/category_tree.py +2 -2
  18. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/columns/category_tree_children.py +2 -2
  19. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/columns/created.py +3 -2
  20. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/columns/created_by_authorization_data.py +2 -2
  21. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/columns/created_by_header.py +2 -2
  22. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/columns/created_by_ip.py +2 -2
  23. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/columns/created_by_routing_data.py +3 -2
  24. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/columns/created_by_user_agent.py +2 -2
  25. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/columns/date.py +6 -2
  26. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/columns/datetime.py +6 -2
  27. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/columns/float.py +6 -2
  28. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/columns/has_many.py +2 -2
  29. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/columns/has_many_self.py +2 -2
  30. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/columns/integer.py +6 -2
  31. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/columns/json.py +6 -2
  32. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/columns/many_to_many_ids.py +6 -2
  33. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/columns/many_to_many_ids_with_data.py +6 -2
  34. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/columns/many_to_many_models.py +6 -2
  35. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/columns/many_to_many_pivots.py +3 -2
  36. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/columns/phone.py +3 -2
  37. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/columns/select.py +3 -2
  38. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/columns/string.py +4 -0
  39. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/columns/timestamp.py +6 -2
  40. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/columns/updated.py +2 -2
  41. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/columns/uuid.py +2 -2
  42. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/configs/__init__.py +4 -1
  43. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/configs/config.py +4 -1
  44. clear_skies-2.0.2/src/clearskies/configs/endpoint_list.py +28 -0
  45. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/contexts/cli.py +4 -0
  46. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/contexts/context.py +13 -0
  47. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/contexts/wsgi.py +4 -0
  48. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/contexts/wsgi_ref.py +4 -0
  49. clear_skies-2.0.0/src/clearskies/parameters_to_properties.py → clear_skies-2.0.2/src/clearskies/decorators.py +2 -0
  50. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/di/di.py +2 -2
  51. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/di/injectable_properties.py +2 -2
  52. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/endpoint.py +7 -6
  53. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/endpoint_group.py +14 -1
  54. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/endpoints/callable.py +5 -4
  55. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/endpoints/create.py +1 -1
  56. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/endpoints/delete.py +1 -1
  57. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/endpoints/get.py +1 -1
  58. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/endpoints/health_check.py +1 -1
  59. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/endpoints/list.py +1 -1
  60. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/endpoints/restful_api.py +2 -2
  61. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/endpoints/simple_search.py +1 -1
  62. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/endpoints/update.py +1 -1
  63. clear_skies-2.0.2/src/clearskies/model.py +1812 -0
  64. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/query/query.py +4 -4
  65. clear_skies-2.0.2/src/clearskies/security_header.py +15 -0
  66. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/security_headers/cache_control.py +2 -2
  67. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/security_headers/cors.py +2 -2
  68. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/security_headers/csp.py +2 -2
  69. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/security_headers/hsts.py +2 -2
  70. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/validator.py +12 -0
  71. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/validators/after_column.py +2 -2
  72. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/validators/in_the_future.py +1 -1
  73. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/validators/in_the_past.py +1 -1
  74. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/validators/required.py +0 -1
  75. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/validators/timedelta.py +2 -2
  76. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/validators/unique.py +0 -1
  77. clear_skies-2.0.0/src/clearskies/model.py +0 -662
  78. clear_skies-2.0.0/src/clearskies/security_header.py +0 -8
  79. {clear_skies-2.0.0 → clear_skies-2.0.2}/LICENSE +0 -0
  80. {clear_skies-2.0.0 → clear_skies-2.0.2}/README.md +0 -0
  81. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/action.py +0 -0
  82. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/authentication/__init__.py +0 -0
  83. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/authentication/authorization_pass_through.py +0 -0
  84. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/authentication/public.py +0 -0
  85. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/autodoc/__init__.py +0 -0
  86. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/autodoc/formats/__init__.py +0 -0
  87. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/autodoc/formats/oai3_json/__init__.py +0 -0
  88. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/autodoc/formats/oai3_json/oai3_json.py +0 -0
  89. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/autodoc/formats/oai3_json/oai3_schema_resolver.py +0 -0
  90. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/autodoc/formats/oai3_json/parameter.py +0 -0
  91. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/autodoc/formats/oai3_json/request.py +0 -0
  92. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/autodoc/formats/oai3_json/response.py +0 -0
  93. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/autodoc/formats/oai3_json/schema/__init__.py +0 -0
  94. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/autodoc/formats/oai3_json/schema/array.py +0 -0
  95. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/autodoc/formats/oai3_json/schema/default.py +0 -0
  96. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/autodoc/formats/oai3_json/schema/enum.py +0 -0
  97. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/autodoc/formats/oai3_json/schema/object.py +0 -0
  98. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/autodoc/formats/oai3_json/test.json +0 -0
  99. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/autodoc/py.typed +0 -0
  100. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/autodoc/request/__init__.py +0 -0
  101. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/autodoc/request/header.py +0 -0
  102. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/autodoc/request/json_body.py +0 -0
  103. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/autodoc/request/parameter.py +0 -0
  104. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/autodoc/request/request.py +0 -0
  105. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/autodoc/request/url_parameter.py +0 -0
  106. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/autodoc/request/url_path.py +0 -0
  107. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/autodoc/response/__init__.py +0 -0
  108. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/autodoc/response/response.py +0 -0
  109. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/autodoc/schema/__init__.py +0 -0
  110. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/autodoc/schema/array.py +0 -0
  111. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/autodoc/schema/base64.py +0 -0
  112. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/autodoc/schema/boolean.py +0 -0
  113. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/autodoc/schema/date.py +0 -0
  114. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/autodoc/schema/datetime.py +0 -0
  115. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/autodoc/schema/double.py +0 -0
  116. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/autodoc/schema/enum.py +0 -0
  117. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/autodoc/schema/integer.py +0 -0
  118. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/autodoc/schema/long.py +0 -0
  119. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/autodoc/schema/number.py +0 -0
  120. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/autodoc/schema/object.py +0 -0
  121. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/autodoc/schema/password.py +0 -0
  122. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/autodoc/schema/schema.py +0 -0
  123. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/autodoc/schema/string.py +0 -0
  124. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/backends/__init__.py +0 -0
  125. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/backends/cursor_backend.py +0 -0
  126. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/backends/memory_backend.py +0 -0
  127. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/columns/__init__.py +0 -0
  128. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/columns/category_tree_ancestors.py +0 -0
  129. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/columns/category_tree_descendants.py +0 -0
  130. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/columns/email.py +0 -0
  131. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/columns/has_one.py +0 -0
  132. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/configs/README.md +0 -0
  133. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/configs/actions.py +0 -0
  134. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/configs/any.py +0 -0
  135. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/configs/any_dict.py +0 -0
  136. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/configs/any_dict_or_callable.py +0 -0
  137. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/configs/authentication.py +0 -0
  138. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/configs/authorization.py +0 -0
  139. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/configs/boolean.py +0 -0
  140. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/configs/boolean_or_callable.py +0 -0
  141. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/configs/callable_config.py +0 -0
  142. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/configs/columns.py +0 -0
  143. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/configs/conditions.py +0 -0
  144. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/configs/datetime.py +0 -0
  145. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/configs/datetime_or_callable.py +0 -0
  146. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/configs/endpoint.py +0 -0
  147. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/configs/float.py +0 -0
  148. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/configs/float_or_callable.py +0 -0
  149. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/configs/integer.py +0 -0
  150. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/configs/integer_or_callable.py +0 -0
  151. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/configs/joins.py +0 -0
  152. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/configs/list_any_dict.py +0 -0
  153. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/configs/list_any_dict_or_callable.py +0 -0
  154. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/configs/model_class.py +0 -0
  155. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/configs/model_column.py +0 -0
  156. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/configs/model_columns.py +0 -0
  157. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/configs/model_destination_name.py +0 -0
  158. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/configs/model_to_id_column.py +0 -0
  159. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/configs/readable_model_column.py +0 -0
  160. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/configs/readable_model_columns.py +0 -0
  161. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/configs/schema.py +0 -0
  162. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/configs/searchable_model_columns.py +0 -0
  163. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/configs/security_headers.py +0 -0
  164. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/configs/select.py +0 -0
  165. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/configs/select_list.py +0 -0
  166. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/configs/string.py +0 -0
  167. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/configs/string_dict.py +0 -0
  168. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/configs/string_list.py +0 -0
  169. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/configs/string_list_or_callable.py +0 -0
  170. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/configs/string_or_callable.py +0 -0
  171. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/configs/timedelta.py +0 -0
  172. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/configs/timezone.py +0 -0
  173. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/configs/url.py +0 -0
  174. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/configs/validators.py +0 -0
  175. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/configs/writeable_model_column.py +0 -0
  176. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/configs/writeable_model_columns.py +0 -0
  177. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/configurable.py +0 -0
  178. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/contexts/__init__.py +0 -0
  179. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/di/__init__.py +0 -0
  180. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/di/additional_config.py +0 -0
  181. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/di/additional_config_auto_import.py +0 -0
  182. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/di/inject/__init__.py +0 -0
  183. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/di/inject/by_class.py +0 -0
  184. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/di/inject/by_name.py +0 -0
  185. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/di/inject/di.py +0 -0
  186. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/di/inject/environment.py +0 -0
  187. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/di/inject/input_output.py +0 -0
  188. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/di/inject/now.py +0 -0
  189. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/di/inject/requests.py +0 -0
  190. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/di/inject/secrets.py +0 -0
  191. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/di/inject/utcnow.py +0 -0
  192. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/di/inject/uuid.py +0 -0
  193. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/di/injectable.py +0 -0
  194. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/di/test_module/__init__.py +0 -0
  195. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/di/test_module/another_module/__init__.py +0 -0
  196. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/di/test_module/module_class.py +0 -0
  197. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/end.py +0 -0
  198. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/endpoints/__init__.py +0 -0
  199. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/endpoints/advanced_search.py +0 -0
  200. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/environment.py +0 -0
  201. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/exceptions/__init__.py +0 -0
  202. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/exceptions/authentication.py +0 -0
  203. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/exceptions/authorization.py +0 -0
  204. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/exceptions/client_error.py +0 -0
  205. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/exceptions/input_errors.py +0 -0
  206. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/exceptions/moved_permanently.py +0 -0
  207. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/exceptions/moved_temporarily.py +0 -0
  208. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/exceptions/not_found.py +0 -0
  209. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/functional/__init__.py +0 -0
  210. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/functional/routing.py +0 -0
  211. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/functional/string.py +0 -0
  212. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/functional/validations.py +0 -0
  213. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/input_outputs/__init__.py +0 -0
  214. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/input_outputs/cli.py +0 -0
  215. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/input_outputs/exceptions/__init__.py +0 -0
  216. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/input_outputs/exceptions/cli_input_error.py +0 -0
  217. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/input_outputs/exceptions/cli_not_found.py +0 -0
  218. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/input_outputs/headers.py +0 -0
  219. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/input_outputs/input_output.py +0 -0
  220. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/input_outputs/programmatic.py +0 -0
  221. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/input_outputs/py.typed +0 -0
  222. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/input_outputs/wsgi.py +0 -0
  223. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/py.typed +0 -0
  224. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/query/__init__.py +0 -0
  225. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/query/condition.py +0 -0
  226. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/query/join.py +0 -0
  227. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/query/sort.py +0 -0
  228. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/schema.py +0 -0
  229. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/secrets/__init__.py +0 -0
  230. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/secrets/additional_configs/__init__.py +0 -0
  231. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/secrets/additional_configs/mysql_connection_dynamic_producer.py +0 -0
  232. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/secrets/additional_configs/mysql_connection_dynamic_producer_via_ssh_cert_bastion.py +0 -0
  233. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/secrets/akeyless.py +0 -0
  234. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/secrets/exceptions/__init__.py +0 -0
  235. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/secrets/exceptions/not_found.py +0 -0
  236. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/secrets/secrets.py +0 -0
  237. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/security_headers/__init__.py +0 -0
  238. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/security_headers/x_content_type_options.py +0 -0
  239. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/security_headers/x_frame_options.py +0 -0
  240. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/test_base.py +0 -0
  241. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/typing.py +0 -0
  242. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/validators/__init__.py +0 -0
  243. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/validators/before_column.py +0 -0
  244. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/validators/in_the_future_at_least.py +0 -0
  245. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/validators/in_the_future_at_most.py +0 -0
  246. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/validators/in_the_past_at_least.py +0 -0
  247. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/validators/in_the_past_at_most.py +0 -0
  248. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/validators/maximum_length.py +0 -0
  249. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/validators/maximum_value.py +0 -0
  250. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/validators/minimum_length.py +0 -0
  251. {clear_skies-2.0.0 → clear_skies-2.0.2}/src/clearskies/validators/minimum_value.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: clear-skies
3
- Version: 2.0.0
3
+ Version: 2.0.2
4
4
  Summary: A framework for building backends in the cloud
5
5
  License: MIT
6
6
  Author: Conor Mancone
@@ -25,7 +25,7 @@ Requires-Dist: pymysql (>=1.1.0,<2.0.0) ; extra == "mysql"
25
25
  Requires-Dist: requests (>=2.31.0,<3.0.0)
26
26
  Requires-Dist: typing-extensions (>=4.12.0,<5.0.0) ; python_version == "3.10"
27
27
  Requires-Dist: wrapt (>=1.16.0,<2.0.0)
28
- Project-URL: Repository, https://github.com/cmancone/clearskies
28
+ Project-URL: Repository, https://github.com/clearskies-py/clearskies
29
29
  Description-Content-Type: text/markdown
30
30
 
31
31
  # clearskies
@@ -10,7 +10,7 @@ requires-python = '>=3.11,<4.0'
10
10
  dependencies = ['dateparser (>=1.1.8,<2.0.0)', 'requests (>=2.31.0,<3.0.0)', 'typing-extensions (>=4.12.0,<5.0.0) ; python_version >= "3.10" and python_version < "3.11"', 'wrapt (>=1.16.0,<2.0.0)']
11
11
 
12
12
  [project.urls]
13
- repository = "https://github.com/cmancone/clearskies"
13
+ repository = "https://github.com/clearskies-py/clearskies"
14
14
 
15
15
  [project.optional-dependencies]
16
16
  secrets = ['akeyless (>=4.0.0,<5.0.0)', 'akeyless-cloud-id (>=0.2.3,<0.3.0)']
@@ -24,7 +24,8 @@ packages = [
24
24
  exclude = [
25
25
  "src/clearskies/*_test.py",
26
26
  "src/clearskies/**/*_test.py",
27
- "src/clearskies/integration_tests/*"
27
+ "src/clearskies/integration_tests/*",
28
+ "docs/**"
28
29
  ]
29
30
  classifiers = [
30
31
  "Development Status :: 5 - Production/Stable",
@@ -68,7 +69,8 @@ preview = true
68
69
  python_version = "3.11"
69
70
 
70
71
  exclude = [
71
- ".*_test\\.py$"
72
+ ".*_test\\.py$",
73
+ "docs/.*"
72
74
  ]
73
75
 
74
76
  [tool.poetry-git-version-plugin]
@@ -5,6 +5,7 @@ from . import (
5
5
  columns,
6
6
  configs,
7
7
  contexts,
8
+ decorators,
8
9
  di,
9
10
  endpoints,
10
11
  exceptions,
@@ -15,25 +16,21 @@ from . import (
15
16
  typing,
16
17
  validators,
17
18
  )
18
- from . import parameters_to_properties as parameters_to_properties_module
19
+ from .action import Action
19
20
  from .column import Column
20
21
  from .configurable import Configurable
21
22
  from .end import End # type: ignore
22
23
  from .endpoint import Endpoint
23
24
  from .endpoint_group import EndpointGroup
24
- from .schema import Schema
25
-
26
- parameters_to_properties = parameters_to_properties_module.parameters_to_properties
27
-
28
- from .action import Action
29
25
  from .environment import Environment
30
26
  from .model import Model
27
+ from .schema import Schema
31
28
  from .security_header import SecurityHeader
32
29
  from .validator import Validator
33
30
 
34
31
  __all__ = [
35
32
  "Action",
36
- "Authentication",
33
+ "authentication",
37
34
  "autodoc",
38
35
  "backends",
39
36
  "Column",
@@ -50,7 +47,6 @@ __all__ = [
50
47
  "exceptions",
51
48
  "functional",
52
49
  "Model",
53
- "parameters_to_properties",
54
50
  "Schema",
55
51
  "typing",
56
52
  "Validator",
@@ -59,4 +55,5 @@ __all__ = [
59
55
  "SecurityHeader",
60
56
  "security_headers",
61
57
  "validators",
58
+ "decorators",
62
59
  ]
@@ -12,6 +12,10 @@ if TYPE_CHECKING:
12
12
 
13
13
 
14
14
  class Authentication(clearskies.configurable.Configurable, requests.auth.AuthBase):
15
+ """
16
+ Authentication!
17
+ """
18
+
15
19
  is_public = True
16
20
  can_authorize = False
17
21
  has_dynamic_credentials = False
@@ -1,4 +1,8 @@
1
1
  class Authorization:
2
+ """
3
+ Authorization!
4
+ """
5
+
2
6
  def gate(self, authorization_data, input_output):
3
7
  """
4
8
  Return True/False to denote if the given user, as represented by the authorization data, should be allowed access.
@@ -2,16 +2,21 @@ import json
2
2
  from typing import Any
3
3
 
4
4
  import clearskies.configs
5
+ import clearskies.decorators
5
6
  import clearskies.di
6
- import clearskies.parameters_to_properties
7
7
  from clearskies.authentication.authentication import Authentication
8
8
  from clearskies.exceptions import ClientError
9
9
  from clearskies.security_headers.cors import Cors
10
10
 
11
11
 
12
12
  class Jwks(Authentication, clearskies.di.InjectableProperties):
13
- """The URL where the JWKS can be found."""
13
+ """
14
+ Validate a JWT against a JWKS (JSON Web Key Set)
15
+ """
14
16
 
17
+ """
18
+ The URL of the JWKS
19
+ """
15
20
  jwks_url = clearskies.configs.String(required=True)
16
21
 
17
22
  """
@@ -74,7 +79,7 @@ class Jwks(Authentication, clearskies.di.InjectableProperties):
74
79
  """
75
80
  _jwks_fetched = None
76
81
 
77
- @clearskies.parameters_to_properties.parameters_to_properties
82
+ @clearskies.decorators.parameters_to_properties
78
83
  def __init__(
79
84
  self,
80
85
  jwks_url: str,
@@ -1,6 +1,6 @@
1
1
  import clearskies.configs
2
+ import clearskies.decorators
2
3
  import clearskies.di
3
- import clearskies.parameters_to_properties
4
4
  from clearskies import autodoc
5
5
  from clearskies.authentication.authentication import Authentication
6
6
 
@@ -460,7 +460,7 @@ class SecretBearer(Authentication, clearskies.di.InjectableProperties):
460
460
  _secret: str = None # type: ignore
461
461
  _alternate_secret: str = None # type: ignore
462
462
 
463
- @clearskies.parameters_to_properties.parameters_to_properties
463
+ @clearskies.decorators.parameters_to_properties
464
464
  def __init__(
465
465
  self,
466
466
  secret_key: str = "",
@@ -495,7 +495,7 @@ class SecretBearer(Authentication, clearskies.di.InjectableProperties):
495
495
  if not self._alternate_secret:
496
496
  self._alternate_secret = (
497
497
  self.secrets.get(self.alternate_secret_key)
498
- if self.secret_key
498
+ if self.alternate_secret_key
499
499
  else self.environment.get(self.alternate_environment_key)
500
500
  )
501
501
  return self._alternate_secret
@@ -9,9 +9,9 @@ import clearskies.columns.datetime
9
9
  import clearskies.columns.json
10
10
  import clearskies.configs
11
11
  import clearskies.configurable
12
+ import clearskies.decorators
12
13
  import clearskies.model
13
14
  import clearskies.query
14
- from clearskies import parameters_to_properties
15
15
  from clearskies.autodoc.schema import Integer as AutoDocInteger
16
16
  from clearskies.autodoc.schema import Schema as AutoDocSchema
17
17
  from clearskies.autodoc.schema import String as AutoDocString
@@ -586,7 +586,7 @@ class ApiBackend(clearskies.configurable.Configurable, Backend, InjectableProper
586
586
  _auth_injected = False
587
587
  _response_to_model_map: dict[str, str] = None # type: ignore
588
588
 
589
- @parameters_to_properties.parameters_to_properties
589
+ @clearskies.decorators.parameters_to_properties
590
590
  def __init__(
591
591
  self,
592
592
  base_url: str,
@@ -9,6 +9,19 @@ from clearskies.autodoc.schema import Schema as AutoDocSchema
9
9
 
10
10
 
11
11
  class Backend(ABC):
12
+ """
13
+ Conecting models to their data since 2020!
14
+
15
+ The backend system acts as a flexible layer between models and their data sources. By changing the backend attached to a model,
16
+ you change where the model fetches and saves data. This might be a database, an in-memory data store, a dynamodb table,
17
+ an API, and more. This allows you to interact with a variety of data sources with the models acting as a standardized API.
18
+ Since endpoints also rely on the models for their functionality, this means that you can easily build API endpoints and
19
+ more for a variety of data sources with a minimal amount of code.
20
+
21
+ Of course, not all data sources support all functionality present in the model. Therefore, you do still need to have
22
+ a fair understanding of how your data sources work.
23
+ """
24
+
12
25
  supports_n_plus_one = False
13
26
  can_count = True
14
27
 
@@ -1,7 +1,6 @@
1
1
  from typing import Any, Callable
2
2
 
3
3
  import clearskies
4
- from clearskies import parameters_to_properties
5
4
  from clearskies.autodoc.schema import Integer as AutoDocInteger
6
5
  from clearskies.autodoc.schema import Schema as AutoDocSchema
7
6
  from clearskies.autodoc.schema import String as AutoDocString
@@ -9,9 +9,9 @@ import clearskies.configs.string
9
9
  import clearskies.configs.string_or_callable
10
10
  import clearskies.configs.validators
11
11
  import clearskies.configurable
12
+ import clearskies.decorators
12
13
  import clearskies.di
13
14
  import clearskies.model
14
- import clearskies.parameters_to_properties
15
15
  import clearskies.typing
16
16
  from clearskies.autodoc.schema import Schema as AutoDocSchema
17
17
  from clearskies.autodoc.schema import String as AutoDocString
@@ -24,13 +24,10 @@ if TYPE_CHECKING:
24
24
 
25
25
  class Column(clearskies.configurable.Configurable, clearskies.di.InjectableProperties):
26
26
  """
27
- The base column.
27
+ Columns are used to build schemes and enable a variety of levels of automation with clearskies.
28
28
 
29
- This class (well, the children that extend it) are used to define the columns that exist in a given model class -
30
- they help you build your schema. The column definitions are then used by handlers and other aspects of the
31
- clearskies framework to automate things like input validation, front-end/backend-transformations, and more.
32
- Many column classes have their own configuration settings, but there are also some common configuration settings
33
- defined here.
29
+ Columns are used to define your schemas in clearskies, especially via models. The column definitions are then used by endpoints
30
+ and other aspects of the clearskies framework to automate things like input validation, front-end/backend-transformations, and more.
34
31
  """
35
32
 
36
33
  """
@@ -672,7 +669,7 @@ class Column(clearskies.configurable.Configurable, clearskies.di.InjectablePrope
672
669
  """
673
670
  auto_doc_class: type[AutoDocSchema] = AutoDocString
674
671
 
675
- @clearskies.parameters_to_properties.parameters_to_properties
672
+ @clearskies.decorators.parameters_to_properties
676
673
  def __init__(
677
674
  self,
678
675
  default: str | None = None,
@@ -760,6 +757,10 @@ class Column(clearskies.configurable.Configurable, clearskies.di.InjectablePrope
760
757
  return instance._transformed_data[self.name]
761
758
 
762
759
  def __set__(self, instance: Model, value) -> None:
760
+ # this makes sure we're initialized
761
+ if "name" not in self._config: # type: ignore
762
+ instance.get_columns()
763
+
763
764
  instance._next_data[self.name] = value
764
765
 
765
766
  def finalize_and_validate_configuration(self):
@@ -2,8 +2,9 @@ from __future__ import annotations
2
2
 
3
3
  from typing import Any
4
4
 
5
+ import clearskies.decorators
5
6
  import clearskies.typing
6
- from clearskies import configs, parameters_to_properties
7
+ from clearskies import configs
7
8
  from clearskies.column import Column
8
9
  from clearskies.columns.has_many import HasMany
9
10
 
@@ -65,7 +66,7 @@ class Audit(HasMany):
65
66
  _descriptor_config_map = None
66
67
  _parent_columns: dict[str, Column] | None
67
68
 
68
- @parameters_to_properties.parameters_to_properties
69
+ @clearskies.decorators.parameters_to_properties
69
70
  def __init__(
70
71
  self,
71
72
  audit_model_class,
@@ -3,7 +3,7 @@ from __future__ import annotations
3
3
  from collections import OrderedDict
4
4
  from typing import TYPE_CHECKING, Any, Callable
5
5
 
6
- import clearskies.parameters_to_properties
6
+ import clearskies.decorators
7
7
  import clearskies.typing
8
8
  from clearskies import configs
9
9
  from clearskies.autodoc.schema import Object as AutoDocObject
@@ -299,7 +299,7 @@ class BelongsToId(String):
299
299
  _allowed_search_operators = ["="]
300
300
  _descriptor_config_map = None
301
301
 
302
- @clearskies.parameters_to_properties.parameters_to_properties
302
+ @clearskies.decorators.parameters_to_properties
303
303
  def __init__(
304
304
  self,
305
305
  parent_model_class,
@@ -3,7 +3,7 @@ from __future__ import annotations
3
3
  from collections import OrderedDict
4
4
  from typing import TYPE_CHECKING, Any, Self, overload
5
5
 
6
- import clearskies.parameters_to_properties
6
+ import clearskies.decorators
7
7
  from clearskies import configs
8
8
  from clearskies.column import Column
9
9
  from clearskies.columns.belongs_to_id import BelongsToId
@@ -22,7 +22,7 @@ class BelongsToModel(Column):
22
22
  is_temporary = clearskies.configs.boolean.Boolean(default=True)
23
23
  _descriptor_config_map = None
24
24
 
25
- @clearskies.parameters_to_properties.parameters_to_properties
25
+ @clearskies.decorators.parameters_to_properties
26
26
  def __init__(
27
27
  self,
28
28
  belongs_to_column_name: str,
@@ -84,6 +84,10 @@ class BelongsToModel(Column):
84
84
  return parent_model.find(f"{parent_id_column_name}={parent_id}")
85
85
 
86
86
  def __set__(self, model: Model, value: Model) -> None:
87
+ # this makes sure we're initialized
88
+ if "name" not in self._config: # type: ignore
89
+ model.get_columns()
90
+
87
91
  setattr(model, self.belongs_to_column_name, getattr(value, value.id_column_name))
88
92
 
89
93
  def pre_save(self, data: dict[str, Any], model: Model) -> dict[str, Any]:
@@ -1,7 +1,7 @@
1
1
  from typing import Callable
2
2
 
3
+ import clearskies.decorators
3
4
  import clearskies.typing
4
- from clearskies import parameters_to_properties
5
5
  from clearskies.columns.belongs_to_id import BelongsToId
6
6
 
7
7
 
@@ -69,7 +69,7 @@ class BelongsToSelf(BelongsToId):
69
69
 
70
70
  _descriptor_config_map = None
71
71
 
72
- @parameters_to_properties.parameters_to_properties
72
+ @clearskies.decorators.parameters_to_properties
73
73
  def __init__(
74
74
  self,
75
75
  readable_parent_columns: list[str] = [],
@@ -3,7 +3,7 @@ from __future__ import annotations
3
3
  from typing import TYPE_CHECKING, Callable, Self, overload
4
4
 
5
5
  import clearskies.configs.actions
6
- import clearskies.parameters_to_properties
6
+ import clearskies.decorators
7
7
  import clearskies.typing
8
8
  from clearskies import configs
9
9
  from clearskies.autodoc.schema import Boolean as AutoDocBoolean
@@ -38,7 +38,7 @@ class Boolean(Column):
38
38
  setable = configs.BooleanOrCallable() # type: ignore
39
39
  _descriptor_config_map = None
40
40
 
41
- @clearskies.parameters_to_properties.parameters_to_properties
41
+ @clearskies.decorators.parameters_to_properties
42
42
  def __init__(
43
43
  self,
44
44
  default: bool | None = None,
@@ -82,6 +82,10 @@ class Boolean(Column):
82
82
  return super().__get__(instance, cls)
83
83
 
84
84
  def __set__(self, instance, value: bool) -> None:
85
+ # this makes sure we're initialized
86
+ if "name" not in self._config: # type: ignore
87
+ instance.get_columns()
88
+
85
89
  instance._next_data[self.name] = value
86
90
 
87
91
  def input_error_for_value(self, value: str, operator: str | None = None) -> str:
@@ -2,7 +2,7 @@ from __future__ import annotations
2
2
 
3
3
  from typing import TYPE_CHECKING, Any, Callable
4
4
 
5
- import clearskies.parameters_to_properties
5
+ import clearskies.decorators
6
6
  import clearskies.typing
7
7
  from clearskies import configs
8
8
  from clearskies.columns.belongs_to_id import BelongsToId
@@ -163,7 +163,7 @@ class CategoryTree(BelongsToId):
163
163
 
164
164
  _descriptor_config_map = None
165
165
 
166
- @clearskies.parameters_to_properties.parameters_to_properties
166
+ @clearskies.decorators.parameters_to_properties
167
167
  def __init__(
168
168
  self,
169
169
  tree_model_class,
@@ -2,7 +2,7 @@ from __future__ import annotations
2
2
 
3
3
  from typing import TYPE_CHECKING, Self, overload
4
4
 
5
- import clearskies.parameters_to_properties
5
+ import clearskies.decorators
6
6
  from clearskies import configs
7
7
  from clearskies.column import Column
8
8
  from clearskies.columns import CategoryTree
@@ -36,7 +36,7 @@ class CategoryTreeChildren(Column):
36
36
  is_searchable = configs.Boolean(default=False)
37
37
  _descriptor_config_map = None
38
38
 
39
- @clearskies.parameters_to_properties.parameters_to_properties
39
+ @clearskies.decorators.parameters_to_properties
40
40
  def __init__(
41
41
  self,
42
42
  category_tree_column_name: str,
@@ -3,9 +3,10 @@ from __future__ import annotations
3
3
  import datetime
4
4
  from typing import TYPE_CHECKING, Any
5
5
 
6
+ import clearskies.decorators
6
7
  import clearskies.di
7
8
  import clearskies.typing
8
- from clearskies import configs, parameters_to_properties # type: ignore
9
+ from clearskies import configs
9
10
  from clearskies.columns.datetime import Datetime
10
11
 
11
12
  if TYPE_CHECKING:
@@ -67,7 +68,7 @@ class Created(Datetime):
67
68
 
68
69
  now = clearskies.di.inject.Now()
69
70
 
70
- @parameters_to_properties.parameters_to_properties
71
+ @clearskies.decorators.parameters_to_properties
71
72
  def __init__(
72
73
  self,
73
74
  date_format: str = "%Y-%m-%d %H:%M:%S",
@@ -2,7 +2,7 @@ from __future__ import annotations
2
2
 
3
3
  from typing import TYPE_CHECKING, Any
4
4
 
5
- import clearskies.parameters_to_properties
5
+ import clearskies.decorators
6
6
  import clearskies.typing
7
7
  from clearskies import configs
8
8
  from clearskies.columns.string import String
@@ -100,7 +100,7 @@ class CreatedByAuthorizationData(String):
100
100
 
101
101
  _allowed_search_operators = ["=", "in", "is not null", "is null", "like"]
102
102
 
103
- @clearskies.parameters_to_properties.parameters_to_properties
103
+ @clearskies.decorators.parameters_to_properties
104
104
  def __init__(
105
105
  self,
106
106
  authorization_data_key_name: str,
@@ -1,4 +1,4 @@
1
- import clearskies.parameters_to_properties
1
+ import clearskies.decorators
2
2
  import clearskies.typing
3
3
  from clearskies import configs
4
4
  from clearskies.columns.string import String
@@ -83,7 +83,7 @@ class CreatedByHeader(String):
83
83
 
84
84
  _allowed_search_operators = ["=", "in", "is not null", "is null", "like"]
85
85
 
86
- @clearskies.parameters_to_properties.parameters_to_properties
86
+ @clearskies.decorators.parameters_to_properties
87
87
  def __init__(
88
88
  self,
89
89
  header_name: str,
@@ -2,7 +2,7 @@ from __future__ import annotations
2
2
 
3
3
  from typing import TYPE_CHECKING, Any
4
4
 
5
- import clearskies.parameters_to_properties
5
+ import clearskies.decorators
6
6
  import clearskies.typing
7
7
  from clearskies import configs
8
8
  from clearskies.columns.string import String
@@ -70,7 +70,7 @@ class CreatedByIp(String):
70
70
 
71
71
  _allowed_search_operators = ["=", "in", "is not null", "is null", "like"]
72
72
 
73
- @clearskies.parameters_to_properties.parameters_to_properties
73
+ @clearskies.decorators.parameters_to_properties
74
74
  def __init__(
75
75
  self,
76
76
  is_readable: bool = True,
@@ -1,5 +1,6 @@
1
+ import clearskies.decorators
1
2
  import clearskies.typing
2
- from clearskies import configs, parameters_to_properties
3
+ from clearskies import configs
3
4
  from clearskies.columns.string import String
4
5
 
5
6
 
@@ -80,7 +81,7 @@ class CreatedByRoutingData(String):
80
81
 
81
82
  _allowed_search_operators = ["=", "in", "is not null", "is null", "like"]
82
83
 
83
- @parameters_to_properties.parameters_to_properties
84
+ @clearskies.decorators.parameters_to_properties
84
85
  def __init__(
85
86
  self,
86
87
  routing_path_name: str,
@@ -3,7 +3,7 @@ from __future__ import annotations
3
3
  import datetime
4
4
  from typing import TYPE_CHECKING, Any
5
5
 
6
- import clearskies.parameters_to_properties
6
+ import clearskies.decorators
7
7
  import clearskies.typing
8
8
  from clearskies import configs
9
9
  from clearskies.columns.string import String
@@ -70,7 +70,7 @@ class CreatedByUserAgent(String):
70
70
 
71
71
  _allowed_search_operators = ["=", "in", "is not null", "is null", "like"]
72
72
 
73
- @clearskies.parameters_to_properties.parameters_to_properties
73
+ @clearskies.decorators.parameters_to_properties
74
74
  def __init__(
75
75
  self,
76
76
  is_readable: bool = True,
@@ -5,7 +5,7 @@ from typing import TYPE_CHECKING, Any, Callable, Self, overload
5
5
 
6
6
  import dateparser # type: ignore
7
7
 
8
- import clearskies.parameters_to_properties
8
+ import clearskies.decorators
9
9
  import clearskies.typing
10
10
  from clearskies import configs
11
11
  from clearskies.autodoc.schema import Datetime as AutoDocDatetime
@@ -102,7 +102,7 @@ class Date(Datetime):
102
102
  auto_doc_class: type[AutoDocSchema] = AutoDocDatetime
103
103
  _descriptor_config_map = None
104
104
 
105
- @clearskies.parameters_to_properties.parameters_to_properties
105
+ @clearskies.decorators.parameters_to_properties
106
106
  def __init__(
107
107
  self,
108
108
  date_format: str = "%Y-%m-%d",
@@ -162,6 +162,10 @@ class Date(Datetime):
162
162
  return super().__get__(instance, cls)
163
163
 
164
164
  def __set__(self, instance, value: datetime.datetime | datetime.date) -> None:
165
+ # this makes sure we're initialized
166
+ if "name" not in self._config: # type: ignore
167
+ instance.get_columns()
168
+
165
169
  instance._next_data[self.name] = value
166
170
 
167
171
  def equals(self, value: str | datetime.datetime | datetime.date) -> Condition:
@@ -5,7 +5,7 @@ from typing import TYPE_CHECKING, Any, Callable, Self, overload
5
5
 
6
6
  import dateparser # type: ignore
7
7
 
8
- import clearskies.parameters_to_properties
8
+ import clearskies.decorators
9
9
  import clearskies.typing
10
10
  from clearskies import configs
11
11
  from clearskies.autodoc.schema import Datetime as AutoDocDatetime
@@ -127,7 +127,7 @@ class Datetime(Column):
127
127
  auto_doc_class: type[AutoDocSchema] = AutoDocDatetime
128
128
  _descriptor_config_map = None
129
129
 
130
- @clearskies.parameters_to_properties.parameters_to_properties
130
+ @clearskies.decorators.parameters_to_properties
131
131
  def __init__(
132
132
  self,
133
133
  date_format: str = "%Y-%m-%d %H:%M:%S",
@@ -204,6 +204,10 @@ class Datetime(Column):
204
204
  return super().__get__(instance, cls)
205
205
 
206
206
  def __set__(self, instance, value: datetime.datetime) -> None:
207
+ # this makes sure we're initialized
208
+ if "name" not in self._config: # type: ignore
209
+ instance.get_columns()
210
+
207
211
  instance._next_data[self.name] = value
208
212
 
209
213
  def equals(self, value: str | datetime.datetime) -> Condition:
@@ -2,7 +2,7 @@ from __future__ import annotations
2
2
 
3
3
  from typing import TYPE_CHECKING, Callable, Self, overload
4
4
 
5
- import clearskies.parameters_to_properties
5
+ import clearskies.decorators
6
6
  import clearskies.typing
7
7
  from clearskies import configs
8
8
  from clearskies.autodoc.schema import Number as AutoDocNumber
@@ -75,7 +75,7 @@ class Float(Column):
75
75
  auto_doc_class: type[AutoDocSchema] = AutoDocNumber
76
76
  _descriptor_config_map = None
77
77
 
78
- @clearskies.parameters_to_properties.parameters_to_properties
78
+ @clearskies.decorators.parameters_to_properties
79
79
  def __init__(
80
80
  self,
81
81
  default: float | None = None,
@@ -106,6 +106,10 @@ class Float(Column):
106
106
  return super().__get__(instance, cls)
107
107
 
108
108
  def __set__(self, instance, value: float) -> None:
109
+ # this makes sure we're initialized
110
+ if "name" not in self._config: # type: ignore
111
+ instance.get_columns()
112
+
109
113
  instance._next_data[self.name] = float(value)
110
114
 
111
115
  def from_backend(self, value) -> float:
@@ -2,7 +2,7 @@ from __future__ import annotations
2
2
 
3
3
  from typing import TYPE_CHECKING, Any, Self, overload
4
4
 
5
- import clearskies.parameters_to_properties
5
+ import clearskies.decorators
6
6
  import clearskies.typing
7
7
  from clearskies import configs
8
8
  from clearskies.autodoc.schema import Array as AutoDocArray
@@ -382,7 +382,7 @@ class HasMany(Column):
382
382
 
383
383
  input_output = InputOutput()
384
384
 
385
- @clearskies.parameters_to_properties.parameters_to_properties
385
+ @clearskies.decorators.parameters_to_properties
386
386
  def __init__(
387
387
  self,
388
388
  child_model_class,
@@ -1,5 +1,5 @@
1
+ import clearskies.decorators
1
2
  import clearskies.typing
2
- from clearskies import parameters_to_properties
3
3
  from clearskies.columns.has_many import HasMany
4
4
 
5
5
 
@@ -20,7 +20,7 @@ class HasManySelf(HasMany):
20
20
 
21
21
  _descriptor_config_map = None
22
22
 
23
- @parameters_to_properties.parameters_to_properties
23
+ @clearskies.decorators.parameters_to_properties
24
24
  def __init__(
25
25
  self,
26
26
  foreign_column_name: str | None = None,