clear-skies 1.22.30__py3-none-any.whl → 2.0.0__py3-none-any.whl

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 (344) hide show
  1. {clear_skies-1.22.30.dist-info → clear_skies-2.0.0.dist-info}/METADATA +5 -7
  2. clear_skies-2.0.0.dist-info/RECORD +248 -0
  3. {clear_skies-1.22.30.dist-info → clear_skies-2.0.0.dist-info}/WHEEL +1 -1
  4. clearskies/__init__.py +42 -25
  5. clearskies/action.py +7 -0
  6. clearskies/authentication/__init__.py +8 -41
  7. clearskies/authentication/authentication.py +42 -0
  8. clearskies/authentication/authorization.py +4 -9
  9. clearskies/authentication/authorization_pass_through.py +11 -9
  10. clearskies/authentication/jwks.py +128 -58
  11. clearskies/authentication/public.py +3 -38
  12. clearskies/authentication/secret_bearer.py +516 -54
  13. clearskies/autodoc/formats/oai3_json/__init__.py +1 -1
  14. clearskies/autodoc/formats/oai3_json/oai3_json.py +9 -7
  15. clearskies/autodoc/formats/oai3_json/parameter.py +6 -3
  16. clearskies/autodoc/formats/oai3_json/request.py +7 -5
  17. clearskies/autodoc/formats/oai3_json/response.py +7 -4
  18. clearskies/autodoc/formats/oai3_json/schema/object.py +4 -1
  19. clearskies/autodoc/request/__init__.py +2 -0
  20. clearskies/autodoc/request/header.py +4 -6
  21. clearskies/autodoc/request/json_body.py +4 -6
  22. clearskies/autodoc/request/parameter.py +8 -0
  23. clearskies/autodoc/request/request.py +7 -4
  24. clearskies/autodoc/request/url_parameter.py +4 -6
  25. clearskies/autodoc/request/url_path.py +4 -6
  26. clearskies/autodoc/schema/__init__.py +4 -2
  27. clearskies/autodoc/schema/array.py +5 -6
  28. clearskies/autodoc/schema/boolean.py +4 -10
  29. clearskies/autodoc/schema/date.py +0 -3
  30. clearskies/autodoc/schema/datetime.py +1 -4
  31. clearskies/autodoc/schema/double.py +0 -3
  32. clearskies/autodoc/schema/enum.py +4 -2
  33. clearskies/autodoc/schema/integer.py +4 -9
  34. clearskies/autodoc/schema/long.py +0 -3
  35. clearskies/autodoc/schema/number.py +4 -9
  36. clearskies/autodoc/schema/object.py +5 -7
  37. clearskies/autodoc/schema/password.py +0 -3
  38. clearskies/autodoc/schema/schema.py +11 -0
  39. clearskies/autodoc/schema/string.py +4 -10
  40. clearskies/backends/__init__.py +55 -20
  41. clearskies/backends/api_backend.py +1100 -284
  42. clearskies/backends/backend.py +40 -84
  43. clearskies/backends/cursor_backend.py +236 -186
  44. clearskies/backends/memory_backend.py +519 -226
  45. clearskies/backends/secrets_backend.py +75 -31
  46. clearskies/column.py +1232 -0
  47. clearskies/columns/__init__.py +71 -0
  48. clearskies/columns/audit.py +205 -0
  49. clearskies/columns/belongs_to_id.py +483 -0
  50. clearskies/columns/belongs_to_model.py +128 -0
  51. clearskies/columns/belongs_to_self.py +105 -0
  52. clearskies/columns/boolean.py +109 -0
  53. clearskies/columns/category_tree.py +275 -0
  54. clearskies/columns/category_tree_ancestors.py +51 -0
  55. clearskies/columns/category_tree_children.py +127 -0
  56. clearskies/columns/category_tree_descendants.py +48 -0
  57. clearskies/columns/created.py +94 -0
  58. clearskies/columns/created_by_authorization_data.py +116 -0
  59. clearskies/columns/created_by_header.py +99 -0
  60. clearskies/columns/created_by_ip.py +92 -0
  61. clearskies/columns/created_by_routing_data.py +96 -0
  62. clearskies/columns/created_by_user_agent.py +92 -0
  63. clearskies/columns/date.py +230 -0
  64. clearskies/columns/datetime.py +278 -0
  65. clearskies/columns/email.py +76 -0
  66. clearskies/columns/float.py +149 -0
  67. clearskies/columns/has_many.py +505 -0
  68. clearskies/columns/has_many_self.py +56 -0
  69. clearskies/columns/has_one.py +14 -0
  70. clearskies/columns/integer.py +156 -0
  71. clearskies/columns/json.py +122 -0
  72. clearskies/columns/many_to_many_ids.py +333 -0
  73. clearskies/columns/many_to_many_ids_with_data.py +270 -0
  74. clearskies/columns/many_to_many_models.py +154 -0
  75. clearskies/columns/many_to_many_pivots.py +133 -0
  76. clearskies/columns/phone.py +158 -0
  77. clearskies/columns/select.py +91 -0
  78. clearskies/columns/string.py +98 -0
  79. clearskies/columns/timestamp.py +160 -0
  80. clearskies/columns/updated.py +110 -0
  81. clearskies/columns/uuid.py +86 -0
  82. clearskies/configs/README.md +105 -0
  83. clearskies/configs/__init__.py +159 -0
  84. clearskies/configs/actions.py +43 -0
  85. clearskies/configs/any.py +13 -0
  86. clearskies/configs/any_dict.py +22 -0
  87. clearskies/configs/any_dict_or_callable.py +23 -0
  88. clearskies/configs/authentication.py +23 -0
  89. clearskies/configs/authorization.py +23 -0
  90. clearskies/configs/boolean.py +16 -0
  91. clearskies/configs/boolean_or_callable.py +18 -0
  92. clearskies/configs/callable_config.py +18 -0
  93. clearskies/configs/columns.py +34 -0
  94. clearskies/configs/conditions.py +30 -0
  95. clearskies/configs/config.py +21 -0
  96. clearskies/configs/datetime.py +18 -0
  97. clearskies/configs/datetime_or_callable.py +19 -0
  98. clearskies/configs/endpoint.py +23 -0
  99. clearskies/configs/float.py +16 -0
  100. clearskies/configs/float_or_callable.py +18 -0
  101. clearskies/configs/integer.py +16 -0
  102. clearskies/configs/integer_or_callable.py +18 -0
  103. clearskies/configs/joins.py +30 -0
  104. clearskies/configs/list_any_dict.py +30 -0
  105. clearskies/configs/list_any_dict_or_callable.py +31 -0
  106. clearskies/configs/model_class.py +35 -0
  107. clearskies/configs/model_column.py +65 -0
  108. clearskies/configs/model_columns.py +56 -0
  109. clearskies/configs/model_destination_name.py +25 -0
  110. clearskies/configs/model_to_id_column.py +43 -0
  111. clearskies/configs/readable_model_column.py +9 -0
  112. clearskies/configs/readable_model_columns.py +9 -0
  113. clearskies/configs/schema.py +23 -0
  114. clearskies/configs/searchable_model_columns.py +9 -0
  115. clearskies/configs/security_headers.py +39 -0
  116. clearskies/configs/select.py +26 -0
  117. clearskies/configs/select_list.py +47 -0
  118. clearskies/configs/string.py +29 -0
  119. clearskies/configs/string_dict.py +32 -0
  120. clearskies/configs/string_list.py +32 -0
  121. clearskies/configs/string_list_or_callable.py +35 -0
  122. clearskies/configs/string_or_callable.py +18 -0
  123. clearskies/configs/timedelta.py +18 -0
  124. clearskies/configs/timezone.py +18 -0
  125. clearskies/configs/url.py +23 -0
  126. clearskies/configs/validators.py +45 -0
  127. clearskies/configs/writeable_model_column.py +9 -0
  128. clearskies/configs/writeable_model_columns.py +9 -0
  129. clearskies/configurable.py +76 -0
  130. clearskies/contexts/__init__.py +8 -8
  131. clearskies/contexts/cli.py +5 -42
  132. clearskies/contexts/context.py +78 -56
  133. clearskies/contexts/wsgi.py +13 -30
  134. clearskies/contexts/wsgi_ref.py +49 -0
  135. clearskies/di/__init__.py +10 -7
  136. clearskies/di/additional_config.py +115 -4
  137. clearskies/di/additional_config_auto_import.py +12 -0
  138. clearskies/di/di.py +742 -121
  139. clearskies/di/inject/__init__.py +23 -0
  140. clearskies/di/inject/by_class.py +21 -0
  141. clearskies/di/inject/by_name.py +18 -0
  142. clearskies/di/inject/di.py +13 -0
  143. clearskies/di/inject/environment.py +14 -0
  144. clearskies/di/inject/input_output.py +20 -0
  145. clearskies/di/inject/now.py +13 -0
  146. clearskies/di/inject/requests.py +13 -0
  147. clearskies/di/inject/secrets.py +14 -0
  148. clearskies/di/inject/utcnow.py +13 -0
  149. clearskies/di/inject/uuid.py +15 -0
  150. clearskies/di/injectable.py +29 -0
  151. clearskies/di/injectable_properties.py +131 -0
  152. clearskies/end.py +183 -0
  153. clearskies/endpoint.py +1309 -0
  154. clearskies/endpoint_group.py +297 -0
  155. clearskies/endpoints/__init__.py +23 -0
  156. clearskies/endpoints/advanced_search.py +526 -0
  157. clearskies/endpoints/callable.py +387 -0
  158. clearskies/endpoints/create.py +202 -0
  159. clearskies/endpoints/delete.py +139 -0
  160. clearskies/endpoints/get.py +275 -0
  161. clearskies/endpoints/health_check.py +181 -0
  162. clearskies/endpoints/list.py +573 -0
  163. clearskies/endpoints/restful_api.py +427 -0
  164. clearskies/endpoints/simple_search.py +286 -0
  165. clearskies/endpoints/update.py +190 -0
  166. clearskies/environment.py +5 -3
  167. clearskies/exceptions/__init__.py +17 -0
  168. clearskies/{handlers/exceptions/input_error.py → exceptions/input_errors.py} +1 -1
  169. clearskies/exceptions/moved_permanently.py +3 -0
  170. clearskies/exceptions/moved_temporarily.py +3 -0
  171. clearskies/exceptions/not_found.py +2 -0
  172. clearskies/functional/__init__.py +2 -2
  173. clearskies/functional/routing.py +92 -0
  174. clearskies/functional/string.py +19 -11
  175. clearskies/functional/validations.py +61 -9
  176. clearskies/input_outputs/__init__.py +9 -7
  177. clearskies/input_outputs/cli.py +130 -142
  178. clearskies/input_outputs/exceptions/__init__.py +1 -1
  179. clearskies/input_outputs/headers.py +45 -0
  180. clearskies/input_outputs/input_output.py +91 -122
  181. clearskies/input_outputs/programmatic.py +69 -0
  182. clearskies/input_outputs/wsgi.py +23 -38
  183. clearskies/model.py +489 -184
  184. clearskies/parameters_to_properties.py +31 -0
  185. clearskies/query/__init__.py +12 -0
  186. clearskies/query/condition.py +223 -0
  187. clearskies/query/join.py +136 -0
  188. clearskies/query/query.py +196 -0
  189. clearskies/query/sort.py +27 -0
  190. clearskies/schema.py +82 -0
  191. clearskies/secrets/__init__.py +3 -31
  192. clearskies/secrets/additional_configs/mysql_connection_dynamic_producer.py +15 -4
  193. clearskies/secrets/additional_configs/mysql_connection_dynamic_producer_via_ssh_cert_bastion.py +11 -5
  194. clearskies/secrets/akeyless.py +88 -147
  195. clearskies/secrets/secrets.py +8 -8
  196. clearskies/security_header.py +8 -0
  197. clearskies/security_headers/__init__.py +8 -8
  198. clearskies/security_headers/cache_control.py +47 -110
  199. clearskies/security_headers/cors.py +40 -95
  200. clearskies/security_headers/csp.py +76 -151
  201. clearskies/security_headers/hsts.py +14 -16
  202. clearskies/test_base.py +8 -0
  203. clearskies/typing.py +11 -0
  204. clearskies/validator.py +25 -0
  205. clearskies/validators/__init__.py +33 -0
  206. clearskies/validators/after_column.py +62 -0
  207. clearskies/validators/before_column.py +13 -0
  208. clearskies/validators/in_the_future.py +32 -0
  209. clearskies/validators/in_the_future_at_least.py +11 -0
  210. clearskies/validators/in_the_future_at_most.py +10 -0
  211. clearskies/validators/in_the_past.py +32 -0
  212. clearskies/validators/in_the_past_at_least.py +10 -0
  213. clearskies/validators/in_the_past_at_most.py +10 -0
  214. clearskies/validators/maximum_length.py +26 -0
  215. clearskies/validators/maximum_value.py +29 -0
  216. clearskies/validators/minimum_length.py +26 -0
  217. clearskies/validators/minimum_value.py +29 -0
  218. clearskies/validators/required.py +35 -0
  219. clearskies/validators/timedelta.py +59 -0
  220. clearskies/validators/unique.py +31 -0
  221. clear_skies-1.22.30.dist-info/RECORD +0 -214
  222. clearskies/application.py +0 -29
  223. clearskies/authentication/auth0_jwks.py +0 -118
  224. clearskies/authentication/auth_exception.py +0 -2
  225. clearskies/authentication/jwks_jwcrypto.py +0 -51
  226. clearskies/backends/api_get_only_backend.py +0 -48
  227. clearskies/backends/example_backend.py +0 -43
  228. clearskies/backends/file_backend.py +0 -48
  229. clearskies/backends/json_backend.py +0 -7
  230. clearskies/backends/restful_api_advanced_search_backend.py +0 -103
  231. clearskies/binding_config.py +0 -16
  232. clearskies/column_types/__init__.py +0 -203
  233. clearskies/column_types/audit.py +0 -249
  234. clearskies/column_types/belongs_to.py +0 -271
  235. clearskies/column_types/boolean.py +0 -60
  236. clearskies/column_types/category_tree.py +0 -304
  237. clearskies/column_types/column.py +0 -373
  238. clearskies/column_types/created.py +0 -26
  239. clearskies/column_types/created_by_authorization_data.py +0 -26
  240. clearskies/column_types/created_by_header.py +0 -24
  241. clearskies/column_types/created_by_ip.py +0 -17
  242. clearskies/column_types/created_by_routing_data.py +0 -25
  243. clearskies/column_types/created_by_user_agent.py +0 -17
  244. clearskies/column_types/created_micro.py +0 -26
  245. clearskies/column_types/datetime.py +0 -109
  246. clearskies/column_types/datetime_micro.py +0 -12
  247. clearskies/column_types/email.py +0 -18
  248. clearskies/column_types/float.py +0 -43
  249. clearskies/column_types/has_many.py +0 -179
  250. clearskies/column_types/has_one.py +0 -60
  251. clearskies/column_types/integer.py +0 -41
  252. clearskies/column_types/json.py +0 -25
  253. clearskies/column_types/many_to_many.py +0 -278
  254. clearskies/column_types/many_to_many_with_data.py +0 -162
  255. clearskies/column_types/phone.py +0 -48
  256. clearskies/column_types/select.py +0 -11
  257. clearskies/column_types/string.py +0 -24
  258. clearskies/column_types/timestamp.py +0 -73
  259. clearskies/column_types/updated.py +0 -26
  260. clearskies/column_types/updated_micro.py +0 -26
  261. clearskies/column_types/uuid.py +0 -25
  262. clearskies/columns.py +0 -123
  263. clearskies/condition_parser.py +0 -172
  264. clearskies/contexts/build_context.py +0 -54
  265. clearskies/contexts/convert_to_application.py +0 -190
  266. clearskies/contexts/extract_handler.py +0 -37
  267. clearskies/contexts/test.py +0 -94
  268. clearskies/decorators/__init__.py +0 -41
  269. clearskies/decorators/allow_non_json_bodies.py +0 -9
  270. clearskies/decorators/auth0_jwks.py +0 -22
  271. clearskies/decorators/authorization.py +0 -10
  272. clearskies/decorators/binding_classes.py +0 -9
  273. clearskies/decorators/binding_modules.py +0 -9
  274. clearskies/decorators/bindings.py +0 -9
  275. clearskies/decorators/create.py +0 -10
  276. clearskies/decorators/delete.py +0 -10
  277. clearskies/decorators/docs.py +0 -14
  278. clearskies/decorators/get.py +0 -10
  279. clearskies/decorators/jwks.py +0 -26
  280. clearskies/decorators/merge.py +0 -124
  281. clearskies/decorators/patch.py +0 -10
  282. clearskies/decorators/post.py +0 -10
  283. clearskies/decorators/public.py +0 -11
  284. clearskies/decorators/response_headers.py +0 -10
  285. clearskies/decorators/return_raw_response.py +0 -9
  286. clearskies/decorators/schema.py +0 -10
  287. clearskies/decorators/secret_bearer.py +0 -24
  288. clearskies/decorators/security_headers.py +0 -10
  289. clearskies/di/standard_dependencies.py +0 -151
  290. clearskies/handlers/__init__.py +0 -41
  291. clearskies/handlers/advanced_search.py +0 -271
  292. clearskies/handlers/base.py +0 -479
  293. clearskies/handlers/callable.py +0 -192
  294. clearskies/handlers/create.py +0 -35
  295. clearskies/handlers/crud_by_method.py +0 -18
  296. clearskies/handlers/database_connector.py +0 -32
  297. clearskies/handlers/delete.py +0 -61
  298. clearskies/handlers/exceptions/__init__.py +0 -5
  299. clearskies/handlers/exceptions/not_found.py +0 -3
  300. clearskies/handlers/get.py +0 -156
  301. clearskies/handlers/health_check.py +0 -59
  302. clearskies/handlers/input_processing.py +0 -79
  303. clearskies/handlers/list.py +0 -530
  304. clearskies/handlers/mygrations.py +0 -82
  305. clearskies/handlers/request_method_routing.py +0 -47
  306. clearskies/handlers/restful_api.py +0 -218
  307. clearskies/handlers/routing.py +0 -62
  308. clearskies/handlers/schema_helper.py +0 -128
  309. clearskies/handlers/simple_routing.py +0 -206
  310. clearskies/handlers/simple_routing_route.py +0 -197
  311. clearskies/handlers/simple_search.py +0 -136
  312. clearskies/handlers/update.py +0 -102
  313. clearskies/handlers/write.py +0 -193
  314. clearskies/input_requirements/__init__.py +0 -78
  315. clearskies/input_requirements/after.py +0 -36
  316. clearskies/input_requirements/before.py +0 -36
  317. clearskies/input_requirements/in_the_future_at_least.py +0 -19
  318. clearskies/input_requirements/in_the_future_at_most.py +0 -19
  319. clearskies/input_requirements/in_the_past_at_least.py +0 -19
  320. clearskies/input_requirements/in_the_past_at_most.py +0 -19
  321. clearskies/input_requirements/maximum_length.py +0 -19
  322. clearskies/input_requirements/maximum_value.py +0 -19
  323. clearskies/input_requirements/minimum_length.py +0 -22
  324. clearskies/input_requirements/minimum_value.py +0 -19
  325. clearskies/input_requirements/required.py +0 -23
  326. clearskies/input_requirements/requirement.py +0 -25
  327. clearskies/input_requirements/time_delta.py +0 -38
  328. clearskies/input_requirements/unique.py +0 -18
  329. clearskies/mocks/__init__.py +0 -7
  330. clearskies/mocks/input_output.py +0 -124
  331. clearskies/mocks/models.py +0 -142
  332. clearskies/models.py +0 -350
  333. clearskies/security_headers/base.py +0 -12
  334. clearskies/tests/simple_api/models/__init__.py +0 -2
  335. clearskies/tests/simple_api/models/status.py +0 -23
  336. clearskies/tests/simple_api/models/user.py +0 -21
  337. clearskies/tests/simple_api/users_api.py +0 -64
  338. {clear_skies-1.22.30.dist-info → clear_skies-2.0.0.dist-info}/LICENSE +0 -0
  339. /clearskies/{contexts/bash.py → autodoc/py.typed} +0 -0
  340. /clearskies/{handlers/exceptions → exceptions}/authentication.py +0 -0
  341. /clearskies/{handlers/exceptions → exceptions}/authorization.py +0 -0
  342. /clearskies/{handlers/exceptions → exceptions}/client_error.py +0 -0
  343. /clearskies/{tests/__init__.py → input_outputs/py.typed} +0 -0
  344. /clearskies/{tests/simple_api/__init__.py → py.typed} +0 -0
@@ -1,32 +1,30 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: clear-skies
3
- Version: 1.22.30
3
+ Version: 2.0.0
4
4
  Summary: A framework for building backends in the cloud
5
5
  License: MIT
6
6
  Author: Conor Mancone
7
7
  Author-email: cmancone@gmail.com
8
- Requires-Python: >=3.10,<4.0
8
+ Requires-Python: >=3.11,<4.0
9
9
  Classifier: Development Status :: 5 - Production/Stable
10
10
  Classifier: Intended Audience :: Developers
11
11
  Classifier: License :: OSI Approved :: MIT License
12
12
  Classifier: Programming Language :: Python :: 3
13
- Classifier: Programming Language :: Python :: 3.10
14
13
  Classifier: Programming Language :: Python :: 3.11
15
14
  Classifier: Programming Language :: Python :: 3.12
16
15
  Classifier: Programming Language :: Python :: 3.13
17
16
  Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
18
- Provides-Extra: jose
19
17
  Provides-Extra: jwcrypto
20
18
  Provides-Extra: mysql
21
19
  Provides-Extra: secrets
22
20
  Requires-Dist: akeyless (>=4.0.0,<5.0.0) ; extra == "secrets"
23
21
  Requires-Dist: akeyless-cloud-id (>=0.2.3,<0.3.0) ; extra == "secrets"
24
22
  Requires-Dist: dateparser (>=1.1.8,<2.0.0)
25
- Requires-Dist: jose (>=1.0.0,<2.0.0) ; extra == "jose"
26
23
  Requires-Dist: jwcrypto (>=1.5.6,<2.0.0) ; extra == "jwcrypto"
27
24
  Requires-Dist: pymysql (>=1.1.0,<2.0.0) ; extra == "mysql"
28
25
  Requires-Dist: requests (>=2.31.0,<3.0.0)
29
26
  Requires-Dist: typing-extensions (>=4.12.0,<5.0.0) ; python_version == "3.10"
27
+ Requires-Dist: wrapt (>=1.16.0,<2.0.0)
30
28
  Project-URL: Repository, https://github.com/cmancone/clearskies
31
29
  Description-Content-Type: text/markdown
32
30
 
@@ -34,11 +32,11 @@ Description-Content-Type: text/markdown
34
32
 
35
33
  clearskies is a very opinionated Python framework intended for developing microservices in the cloud via declarative programming principles. It is mainly intended for backend services and so is designed for RESTful API endpoints, queue listeners, scheduled tasks, and the like.
36
34
 
37
- # Installation, Documentation, and Usage
35
+ ## Installation, Documentation, and Usage
38
36
 
39
37
  To install:
40
38
 
41
- ```
39
+ ```bash
42
40
  pip3 install clear-skies
43
41
  ```
44
42
 
@@ -0,0 +1,248 @@
1
+ clearskies/__init__.py,sha256=HLBu0CXipIp-Cr_-iBfpN4UlrFwsjTNFOwF9i0iN5i0,1241
2
+ clearskies/action.py,sha256=x_T05XaC0m-BYPZWaSR94XbE7T5ZK1vRtSfEszfZuDg,121
3
+ clearskies/authentication/__init__.py,sha256=MxXNCWhKbha7TPu_MAyssfTdOCEDSNBwzshEHx8gfHo,525
4
+ clearskies/authentication/authentication.py,sha256=rMzX5pveW00RXrAujLGqxOhCMLnvOlAxdQTwl-kCEQk,1203
5
+ clearskies/authentication/authorization.py,sha256=SMbEhX-kwvV5ivFToEVcGR7xqm95DkRg4RAPVLLStOc,534
6
+ clearskies/authentication/authorization_pass_through.py,sha256=d3XKcUWmI_u9QBBTGKrU1hdD-LM56iH60Qv_xc8TE6k,512
7
+ clearskies/authentication/jwks.py,sha256=LPDYjZVVK8aoDUERSyE5pjoac8nA9_TaQtiZRLIZLcs,4826
8
+ clearskies/authentication/public.py,sha256=GSNl4X4fnB25BZoXSo8nqL0iZCa9rzfvPfIsJ2Y34B4,84
9
+ clearskies/authentication/secret_bearer.py,sha256=DP3M5rMW48CToD_ITlrYpaHGyOanyBVGMQQmLo6BK6Y,17608
10
+ clearskies/autodoc/__init__.py,sha256=JRUAmd0he8iGlgiZvxewLMIXJqnOFEdvlaKAtHpC2lo,124
11
+ clearskies/autodoc/formats/__init__.py,sha256=3rhoLKmEwT6PljaHvOl9qdeMIXyD7PQBZbqZKy5Mb5I,56
12
+ clearskies/autodoc/formats/oai3_json/__init__.py,sha256=C9DzR38Uu0t41osMzhQx6K-hyaNWA1t6agTzOXW9k88,142
13
+ clearskies/autodoc/formats/oai3_json/oai3_json.py,sha256=8q3_-Ea-nKySszDQTU2rTyGrp0t_X3IjUMfH1vLt4z8,3052
14
+ clearskies/autodoc/formats/oai3_json/oai3_schema_resolver.py,sha256=5gifJ36dyWEeYtfjHVbbTpPBo0BB1Gqxt0Y3sxTiHJA,509
15
+ clearskies/autodoc/formats/oai3_json/parameter.py,sha256=h9bHXxqJhUc7NRQCZF6RnIPuaY9BA6V_xzYNnsplXlc,1110
16
+ clearskies/autodoc/formats/oai3_json/request.py,sha256=WHEWQvhuhkw82V4YS6GwDN4y8Qy7QDSn9awJEhwLmWU,2939
17
+ clearskies/autodoc/formats/oai3_json/response.py,sha256=ou06oFQtaAR70qIvIoAe4QzohWiACzhCwlW73oM5Dvg,778
18
+ clearskies/autodoc/formats/oai3_json/schema/__init__.py,sha256=VJiDueMdGfJoVQVt9SXIE_-uPghSXtCzpTXuqPaaiRw,173
19
+ clearskies/autodoc/formats/oai3_json/schema/array.py,sha256=1VOrMC_i1JSu1Gw2cqQ7uVDhSk-xNm25io7oBQL9PZM,310
20
+ clearskies/autodoc/formats/oai3_json/schema/default.py,sha256=BhwQebdIaK6rrATu6yZxPU3bqVmd4LFKTTlydJVl644,484
21
+ clearskies/autodoc/formats/oai3_json/schema/enum.py,sha256=7qkpYWXPwbkgkoHPAowMIHJeGNb81qQmTmIIdc5yJbA,265
22
+ clearskies/autodoc/formats/oai3_json/schema/object.py,sha256=-RLIbma-yG6XjGwzBAP7b-smwLhMronW-kdoP5T-Nfk,878
23
+ clearskies/autodoc/formats/oai3_json/test.json,sha256=DdMvSUbaTEAyWtX_RDxEFR82kK9pCCTeFUghQwHjB3s,59848
24
+ clearskies/autodoc/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
25
+ clearskies/autodoc/request/__init__.py,sha256=-L1hZ70QKn0yzXJtpQS741lbcYXA4i0xQnkebKDjzsA,303
26
+ clearskies/autodoc/request/header.py,sha256=TCeRyFFqcgNN8o9vEmc0JTxs7vRlMHnlhs7zsYfShRM,104
27
+ clearskies/autodoc/request/json_body.py,sha256=qURg3_4fQA9ZUVeR_T0g-RZ8seFIrI0ME-s4PzosfGE,108
28
+ clearskies/autodoc/request/parameter.py,sha256=Z7l7gdsOw-SSLYfL8kQmLnslg89JUQObppxatJiI2sA,233
29
+ clearskies/autodoc/request/request.py,sha256=t1LRnf440xtLaDm8xlbWH9RWtliAstczbKbOsU8HfXg,1371
30
+ clearskies/autodoc/request/url_parameter.py,sha256=mwM9Fe16h_8tdPXvXokjzOH1I2Txs-GFjK1a9FQND2w,117
31
+ clearskies/autodoc/request/url_path.py,sha256=WmZDltORzCir4Ei6_XqoBlh7UBpZZmvZIDfaQezGtmc,107
32
+ clearskies/autodoc/response/__init__.py,sha256=a0vlujvsyLkq1zleRTqcGULoaXTJLkjyTKCUWdsq8Uc,62
33
+ clearskies/autodoc/response/response.py,sha256=I3-wA1gd5XKYey_7gqBoWA-II4k6URop48NO3ckQoh4,266
34
+ clearskies/autodoc/schema/__init__.py,sha256=PF4jywX7Bk6rXaK0LxTQnxk1FLg2O3_Gdm3_XpN61nI,586
35
+ clearskies/autodoc/schema/array.py,sha256=hBLtH5v-o7-KtiFscoa-KAxW4Fcqv_5h542eS7yOo0o,262
36
+ clearskies/autodoc/schema/base64.py,sha256=IPISPbUVf02N_fqcxRMsaiBvFTXAznngZxlWSSyHh-w,190
37
+ clearskies/autodoc/schema/boolean.py,sha256=e6ofkyPcKZllMvSL96M3whjA-tWeT0m5AVotl61wIG8,74
38
+ clearskies/autodoc/schema/date.py,sha256=5IiLM2La1br1E3url6_6k54PYyw_3SyAvvKb1kNReSA,70
39
+ clearskies/autodoc/schema/datetime.py,sha256=WoIPfpVWvr4znQpkqTUT_R1jdnulEvXfOAI3al-AzFA,79
40
+ clearskies/autodoc/schema/double.py,sha256=Wyv9aiPRneeoYWHoYlvkkLUo4WaLnQdvg6ePkXL6k5I,74
41
+ clearskies/autodoc/schema/enum.py,sha256=YP6hPYXTlHWEIPyczPKtimm9luvTcLTT6YrKdGTwty0,413
42
+ clearskies/autodoc/schema/integer.py,sha256=AVqcNyJemzA0Cgg8OGPntDIGONcvOaPWeBVkyQ0ENcY,96
43
+ clearskies/autodoc/schema/long.py,sha256=NhRYUQhr1PZR2gI945RXzu9SfV_hQnTzlxrYCAZKOEo,74
44
+ clearskies/autodoc/schema/number.py,sha256=z6q7XPKW_rLZSv4nYMOcKYQJgXZlmBq9-zsK3kGmI5M,94
45
+ clearskies/autodoc/schema/object.py,sha256=sjW3A1yIGCseRcHHmVbkxNtsg6EPivVMSmmRyZjO_1w,346
46
+ clearskies/autodoc/schema/password.py,sha256=hSXPvHoXEbG-KHQFxXubEarxSMg9Cki_n8tw_yvEFp4,78
47
+ clearskies/autodoc/schema/schema.py,sha256=KZ4r88OUMzbeV4DQ3yUhK8bHS_zJiimsWPWc1rJVDZs,244
48
+ clearskies/autodoc/schema/string.py,sha256=GXRI-aU8PYmjfnhmfaOe4vq7JASb-aB4SiFeG-EmJY0,60
49
+ clearskies/backends/__init__.py,sha256=krBB3gHLP-lVYkm5ksdK7teEtouAHhL3EC__WGVnF4A,3157
50
+ clearskies/backends/api_backend.py,sha256=fRt0U5pZn41ltZUKjbYguJrtNxchSJICLOYIV1bJV7A,54901
51
+ clearskies/backends/backend.py,sha256=1IgX4ts9x8qxoVS2csdDflimVQx0leeVNhvgeUaFn40,5050
52
+ clearskies/backends/cursor_backend.py,sha256=lMnkHATU2Fxr0ihgrVnvI9IVnUPxNfjzpkdJIok2mXY,14360
53
+ clearskies/backends/memory_backend.py,sha256=fXgbFcTvbZeKHs4CsI_yNsofHSjWqZqY9QWI7uJzVws,34260
54
+ clearskies/backends/secrets_backend.py,sha256=zlS2ELM6pgS18tt6KvyOPqHWMMFCqsu76prEnZ8GeE0,4323
55
+ clearskies/column.py,sha256=PKpHsGihsMP4Ph1xzbCvvgjpt5NuiNpGZUGLKvXlNVM,52091
56
+ clearskies/columns/__init__.py,sha256=a__-1hv-aMV3RU0Sd-BEkfItSJaG51EF2VeRQoTdka8,1990
57
+ clearskies/columns/audit.py,sha256=vwWQR_lNKonihb71qUoKQwzLQ5VA1ASFOm7ggA9jJ3Y,7628
58
+ clearskies/columns/belongs_to_id.py,sha256=H6yWsnMgr1za8hRWW40R499SVuTd11Ixb1YCacqCTHM,17820
59
+ clearskies/columns/belongs_to_model.py,sha256=gahATn7dyLsqtS9A1S2ggBOhy6t-x6m84-BjQaPywZk,5703
60
+ clearskies/columns/belongs_to_self.py,sha256=PbSsZVeHe_oex5_aVo059QI4-NjI3ZMGwzPjxNfCwJE,3784
61
+ clearskies/columns/boolean.py,sha256=VJWWgX_QUoc8Otk7S3Ddxea59UlDbaUqiCfMo99Ar1g,3831
62
+ clearskies/columns/category_tree.py,sha256=e4Ja5O3W0XGJCqnJtoJ4Bi2gnuc51UhfJjPbvQ9FiQs,11142
63
+ clearskies/columns/category_tree_ancestors.py,sha256=FRFAMD3E6GzOzzLkY-IhWBdiYSpHHnthF5kX8V3iPr8,1380
64
+ clearskies/columns/category_tree_children.py,sha256=2I3iOBVzcxPp1_NojsCC0exfQDipxbYzGelOcQeUY1M,5267
65
+ clearskies/columns/category_tree_descendants.py,sha256=qM3rgqmxpUkOcCz8b-xCsMDRxjrBpPKyQ_FLGG0ItUc,1234
66
+ clearskies/columns/created.py,sha256=cQQRjqaVwLIQYWyEbuaYsIwYuZOpAXe7XYmysLzeuqY,2851
67
+ clearskies/columns/created_by_authorization_data.py,sha256=7Tp9HOvZXRt6_sUO_8i3UqJ1brp0ZWocYKCCdPW8BSs,4824
68
+ clearskies/columns/created_by_header.py,sha256=WQOl3eyC_bcPn646eTXaynDWEhWtJ6Rw3B31ls-f4lg,3672
69
+ clearskies/columns/created_by_ip.py,sha256=uyiFCwbYaQPZ0pn8asoI-zUMONBQiPnS4tHvnZHTbfU,2811
70
+ clearskies/columns/created_by_routing_data.py,sha256=Joktt9TLFEnqdohKdc11yywE2ZAVNpWA1o6dP-KZyhs,3626
71
+ clearskies/columns/created_by_user_agent.py,sha256=a2OaB5tacr-2Dlvzxjw6tDGhlJIBXZTb69hpy4lxVmM,2896
72
+ clearskies/columns/date.py,sha256=cW94wJAp2K5Qwc04Rl_HY9VD31ia0VQyFcecuvKrVa8,8719
73
+ clearskies/columns/datetime.py,sha256=IJPoCXNMvh_D-KSuE2UBR1dJIfb0EHGooCWonqqvLj0,10463
74
+ clearskies/columns/email.py,sha256=74es6fdA4MJQ9cm5WfEgEvqZgj5pdnFE96cKN1YQ4b0,1868
75
+ clearskies/columns/float.py,sha256=S5ypL0WfguWzKOQzFq5m7bd31IzndNqwazeUIsGcrtk,4453
76
+ clearskies/columns/has_many.py,sha256=RIIks40phXZ_leKoqX4j4w3X6gpRJjDHf7A9SJs9xC0,18670
77
+ clearskies/columns/has_many_self.py,sha256=kFr2eEviiKy_G7zTQx-YqBi5qlWKQaxBylRp-CNiOxg,2425
78
+ clearskies/columns/has_one.py,sha256=8cwfNmAFO1DdfBsZ1scpc3LwLoSUHWR_zPn4T-DN0Mg,396
79
+ clearskies/columns/integer.py,sha256=qWG6JQhZlhrTrIepbeJRdfgShwNXs2ZMj3vCbBDDrIU,4543
80
+ clearskies/columns/json.py,sha256=XZYNs4I2jykYvx8b_jPuRB_x5Ko-AgnnmtV7bjzDzOA,3458
81
+ clearskies/columns/many_to_many_ids.py,sha256=d2kW_QBbxOMU37_uO0LvDMSr1rB4sAlavabEgtze2qc,14158
82
+ clearskies/columns/many_to_many_ids_with_data.py,sha256=i4D9vh61MfP8PpH68vxHGwQgiYJ2YIWKj-EwejEx_nY,11910
83
+ clearskies/columns/many_to_many_models.py,sha256=SUmPcLQqUuj2ptXfNKqHd-DjHBB2yAuklaLbN5dvXFk,7238
84
+ clearskies/columns/many_to_many_pivots.py,sha256=qBsHUBpHSNAAtPfEjMw8rJ7_P51117iA4f1Nz_yaQ0Y,5731
85
+ clearskies/columns/phone.py,sha256=Cv_gAeREmFbTIln6y6yQZrkxzB8PWvKtK3bneABdEko,5219
86
+ clearskies/columns/select.py,sha256=P_nb1n-VQs7-w_GcZ7AAWq0_QA_KQ7EA_kBOng_HgLY,2751
87
+ clearskies/columns/string.py,sha256=MeRN5gMf6SjUV1w6U013-QFWMCEx9h5NJz8uZMlvIhQ,2451
88
+ clearskies/columns/timestamp.py,sha256=_1T20qTVHeLEqqKlxb7IFwUvcYsLWPrGMylPwvVCGBc,5827
89
+ clearskies/columns/updated.py,sha256=_gJw8W_HlNKr-bHTE4eHqMqbFqJ4JcSzTRDLOt7d0Us,3481
90
+ clearskies/columns/uuid.py,sha256=WjWqkGHU6MlxjNQYW8lscgsOfG4mDQnJZGxEqQAoeQU,2432
91
+ clearskies/configs/README.md,sha256=4-r2FvkrBTrKkcKgJ5O3Qj1RZ7nnkknenKze4XYlQDs,4827
92
+ clearskies/configs/__init__.py,sha256=xoll5EalODwI_W1HtWutAIJ_ndzLyWLqvfZonVUtmYY,5017
93
+ clearskies/configs/actions.py,sha256=5OwrokU8uTSSQ_6SvL94SOP5JVkvRRFGAXNcCdMt8aQ,1388
94
+ clearskies/configs/any.py,sha256=_nac0cZY9uRhwGQZqj2N72ZFehYqOedb97lPADP3Yg8,352
95
+ clearskies/configs/any_dict.py,sha256=B8Gd0zwC-6UxvMvPsXMJySzVMADxG3oxnrhgBnJWCGo,871
96
+ clearskies/configs/any_dict_or_callable.py,sha256=cMUaiwcwJS2xv3InwV93icwahUaxoJCbtBwXDylIk-o,1051
97
+ clearskies/configs/authentication.py,sha256=9XZClfYcECi5dzt1BvDof34tW6IotN252bcxlc_u2fc,842
98
+ clearskies/configs/authorization.py,sha256=Pa6wCyMitpKv2Nde69tMB5sJsxeCI2nVSdTuwF6R9pQ,828
99
+ clearskies/configs/boolean.py,sha256=3uoxUmYIK5CAIZRtpcDy18AJ3MWljgUTyvzvSG3EU6I,588
100
+ clearskies/configs/boolean_or_callable.py,sha256=nvvWD_A5HoxW-6_rZJL23_1517T8IQ6Kbu4tNZh9R1E,709
101
+ clearskies/configs/callable_config.py,sha256=gcTlRwCppdaj1gFuCugc4ahxMCTEDKD_z_f85eadWpc,650
102
+ clearskies/configs/columns.py,sha256=WhdpPUiwVqwBO2XCDDiMym2nWr_1-L1JoICyob4T6Wo,1258
103
+ clearskies/configs/conditions.py,sha256=a09bVac4-10ZtKPQGSu_e9VnHnwITwy_7_T4NekXpgs,1008
104
+ clearskies/configs/config.py,sha256=YD7uDn1bbW4TYlcFjKFvx90HoSGbIYn77qjdAHm6z9E,833
105
+ clearskies/configs/datetime.py,sha256=jRYXwLeTUqh8FNwWq_0yYoSH8YU9NEhYhuQScr56nTg,653
106
+ clearskies/configs/datetime_or_callable.py,sha256=81YCDk0g5cIxdXxgem1Ei6m7gUI213Cfryp3GyBfpD4,799
107
+ clearskies/configs/endpoint.py,sha256=NEDthtdPzejAot7yzUjC01PvQJR9BIyk5YnWXCi1w9I,759
108
+ clearskies/configs/float.py,sha256=3870-DkoXCyeOSwUGa69BzhG4XI_tNfei5cX-q1b1UQ,585
109
+ clearskies/configs/float_or_callable.py,sha256=lIOg20Xw0AOB0k3I7f0b98srVgMWQKcyM4aWRT0tUI4,708
110
+ clearskies/configs/integer.py,sha256=d6uoQaUoE01rrWOsxYl1vHG_raUFmB0AUOgoCWwOVC0,584
111
+ clearskies/configs/integer_or_callable.py,sha256=IrVY2Ye57xTxuzOYZ0JY7s6nH6Iphsps32x1dNpcUbw,703
112
+ clearskies/configs/joins.py,sha256=i1QmxFwkpL-pnzVPh3mrHpwrvzsjt9nH5pMSj4J1TT4,944
113
+ clearskies/configs/list_any_dict.py,sha256=YLvlEbM3MrxcOLps5a8CCVl-5o82z4J2aIqKDB7VruU,1327
114
+ clearskies/configs/list_any_dict_or_callable.py,sha256=96mtN6DwkKCAmHlFDHRKnWIhODDu5PQ4O9RpE3wVWh0,1545
115
+ clearskies/configs/model_class.py,sha256=ks0hnB2mZFHjhR3-x51d8IJSLVBclNjD_GhBcNfIxZE,1170
116
+ clearskies/configs/model_column.py,sha256=asTgdSIv27rZQP6KKfvkyRxB4iNgRIExm2DplL95Ro0,2584
117
+ clearskies/configs/model_columns.py,sha256=Kxm1K9jV9ribQtQUMsdyZmKv9GbqLteX_VhEEc9PVzY,2467
118
+ clearskies/configs/model_destination_name.py,sha256=lgC6kDEPWH4cHbAF_N92IF7JdMwNzSkau0HmcyeQ7Ik,983
119
+ clearskies/configs/model_to_id_column.py,sha256=1ItXK4bpOV0putVbOmDcPMH9qz1LDiW1uCN2Z0Qf_co,1543
120
+ clearskies/configs/readable_model_column.py,sha256=SD3LzGkzLbODQILliJveGO-xQxPmOMOL-XX0ROCQ__g,316
121
+ clearskies/configs/readable_model_columns.py,sha256=bz-jwdwhSzs57Dp0ffrajPL0WWZfUXxbhA33zLQmkO8,320
122
+ clearskies/configs/schema.py,sha256=W7xK5EOvZbbi2H5CgT4iifefrR2-XJXBNNx4f8t7j7o,766
123
+ clearskies/configs/searchable_model_columns.py,sha256=SEpYLsaCuT4PJ01RbIeSxGIgVFfFjkvAk9jkDt1AsC8,326
124
+ clearskies/configs/security_headers.py,sha256=wNtoUsghhec-NNZl9dSIRxTTApYw2vukbslYI-YY968,1403
125
+ clearskies/configs/select.py,sha256=xhhgqZZ5fE379iRRuLhV4ouKWro50ODusgtFlU96Ze0,1021
126
+ clearskies/configs/select_list.py,sha256=upnGgw4rHLHlfeKoZps9vrtnzWJr9qN9TDbyu6lw7ps,1889
127
+ clearskies/configs/string.py,sha256=LSPMeh30ljWvC21jNDFmCsyOLMgg_Ip2sV1_fkUxEg4,1093
128
+ clearskies/configs/string_dict.py,sha256=XBK6p1MmzU0gux14Rtc1S9B9PLVcuybRjHxK--LCd3Q,1356
129
+ clearskies/configs/string_list.py,sha256=W33fZfetBvKmT2c1Hza7dtxv2b_xGbAPCQLuUXoM75s,1202
130
+ clearskies/configs/string_list_or_callable.py,sha256=9JycGdX9oUi7IGyY7j50ehTuM2RlQ429BO0NEM1x5eM,1455
131
+ clearskies/configs/string_or_callable.py,sha256=2Bg05AYN6j3v4ttFOmD-EBGfYpok67yiuFXnTTUhhNo,702
132
+ clearskies/configs/timedelta.py,sha256=KpuPDu1_ewEGT_JWCp_YQtKPgZesJClAmxHq047MOjY,667
133
+ clearskies/configs/timezone.py,sha256=FShZlSfCeRk7YkDREJpYC_B8mi-H1aC6Q2CZT659es8,683
134
+ clearskies/configs/url.py,sha256=dx02oiwt8ua5Kv30dJFE0ekJ6Zgz3lcPq9-UNIblI9s,775
135
+ clearskies/configs/validators.py,sha256=aAvf5dgncR8OP7_M7QUNhsHau4wAdPiXw9wNARRAYNY,1346
136
+ clearskies/configs/writeable_model_column.py,sha256=ZwroRcvmNznggtNMSZiAmKAvllcV9LDWZSB-J330Lxg,319
137
+ clearskies/configs/writeable_model_columns.py,sha256=D8E4aQRg1MX8-TM8lkyrWE-G_YoX2eerX4KLszgk0hA,323
138
+ clearskies/configurable.py,sha256=FFkKwlQk17KOLnZiTsTF3hrCu2WxRSuuddNNhz9aySY,3049
139
+ clearskies/contexts/__init__.py,sha256=f7XVUq2UKlDH6fjmcUWk6lbe9p_OaGpZ5ZjM6CuwTGQ,247
140
+ clearskies/contexts/cli.py,sha256=1y7g45FiHbI3Q6JEmwskWVuXPWgmddyK49FfgSafR5U,227
141
+ clearskies/contexts/context.py,sha256=ESnzmhZ7pjDVsmbT7eZTsR26ZvgV-aeeUGsDsT1oK0s,3109
142
+ clearskies/contexts/wsgi.py,sha256=xXHb3m8m44dHKsPX4WLIFExWg5Do2Zv6mQtyb4V4pnM,547
143
+ clearskies/contexts/wsgi_ref.py,sha256=awy-J4DELrVyD5E9FysPE5A_W9JLEZOf2g1hIAogJUA,1733
144
+ clearskies/di/__init__.py,sha256=uJ1NkACEIaot7ALr3M6vQ55Pe9By_s_1z52ssAnw28E,466
145
+ clearskies/di/additional_config.py,sha256=65INxw8aqTZQsyaKPj-aQmd6FBe4_4DwibXGgWYBy14,5139
146
+ clearskies/di/additional_config_auto_import.py,sha256=XYw0Kcnp6hp-ee-c0YjiATwJvRb2E82xk9PuoX9dGRY,758
147
+ clearskies/di/di.py,sha256=g6v2Pjga1EUJ6BaHlX8HL3qoK1z6l_iPl7oNN6eJD9Y,45131
148
+ clearskies/di/inject/__init__.py,sha256=plEkWId-VyhvqX5KM2HhdCqi7_ZJzPmFz69cPAo812Y,643
149
+ clearskies/di/inject/by_class.py,sha256=dUA_ZseLZWT30wnkg272rWwe5FzUpr0gCMMQP_HFahc,796
150
+ clearskies/di/inject/by_name.py,sha256=oEfzeotUXPbUAiBrkE7i19nD2ISk59EEwCH3pcgSmqA,639
151
+ clearskies/di/inject/di.py,sha256=JsQJgoxGdawKN3mAfK5Pu7Ju2b1f0JB0PGQmnSaz2RM,275
152
+ clearskies/di/inject/environment.py,sha256=LWzx1ebujXtgQDGHmiX3O8nB3hihZY7Rl-_ZW-qEH-0,450
153
+ clearskies/di/inject/input_output.py,sha256=URb2qt8F-0QJ1zQpGdkrJxrZVNyF7S21EhhE5x2Irys,517
154
+ clearskies/di/inject/now.py,sha256=XZLeCWRQGQdwG12orozpB2YKS4cQYblc2iVHxEmJneU,359
155
+ clearskies/di/inject/requests.py,sha256=GCfPWEZKrL7uergQB-ZYF235GKG4FAYy5WngRhIOi7I,367
156
+ clearskies/di/inject/secrets.py,sha256=zK7ZJJwZS4l13OVlbBs8ESL8yMxa6jDa4_tiLUvUTdY,418
157
+ clearskies/di/inject/utcnow.py,sha256=3OAzR82k0yEfQ65bJ-4Q7gCZH-Y_viucPJQtfcHu_AA,365
158
+ clearskies/di/inject/uuid.py,sha256=ncXvVNevj6CCwxh1r1IGojEPZaOuHnRjYT7B69RTVhs,400
159
+ clearskies/di/injectable.py,sha256=TTgqhx494470I61-88BUQmHmevfat-wXVseKl8pQOEk,852
160
+ clearskies/di/injectable_properties.py,sha256=0cONm04h_PIK-nIVg1UY2kUnO_FlgktJ1Z9up3vij_8,6463
161
+ clearskies/di/test_module/__init__.py,sha256=7YHQF7JHP0FdI7GdEGANSZ_t1EISQYhUNm1wqOg0NKw,88
162
+ clearskies/di/test_module/another_module/__init__.py,sha256=8SRmHPDepLKGWTUSc1ucDF6U8mJPsNDsBDmBQCpzPWo,35
163
+ clearskies/di/test_module/module_class.py,sha256=I_-wnMuHfbsvti-7d2Z4bXnr6deo__uvww9nds9qrlE,46
164
+ clearskies/end.py,sha256=Z4C9n7OvBky_640oJ8d19jIr_ap1iqjGJqqO6s_zF5g,8919
165
+ clearskies/endpoint.py,sha256=4Wzl89zmNwhKDGqMMlQhzy5MJWx5x_hkbYMDdNguFzw,48817
166
+ clearskies/endpoint_group.py,sha256=ZAkkUsOyd5GFyh_kWFezuO7f8dOzS49pH9bcaaDuW7A,10997
167
+ clearskies/endpoints/__init__.py,sha256=CZJQ3rHF1GA0QvH9CKxUFM1pEnJrg-2wAj5rzIDdzjc,689
168
+ clearskies/endpoints/advanced_search.py,sha256=c1fj81nohHGqe56t00o6kLN3XIh3kfy-aKy_C1pxwgw,21835
169
+ clearskies/endpoints/callable.py,sha256=fdVAa2Dhfg3-OikoE9-PiDnJuZRD0MarQKcdRGwlnaA,13904
170
+ clearskies/endpoints/create.py,sha256=Fgm8ZN2WreGTjWreSyty1c80SP8_qHcjK_be9hpWELw,8757
171
+ clearskies/endpoints/delete.py,sha256=GWnD5-By_5clJzDi8Mac5aeL7HArDpRet3Qo7GPinWk,5296
172
+ clearskies/endpoints/get.py,sha256=w-NWyq9GcQqyBHGS-dTqRdaXRXdvooD-iZ_doDbemNA,10382
173
+ clearskies/endpoints/health_check.py,sha256=Dtj_U2gnrXr7lHXEF0fvldAmA0njsbhivXiKJDe7h7o,5520
174
+ clearskies/endpoints/list.py,sha256=y1I27NlkneYEQ5pc0bKi-99NhoYQlj8kiMJzw91DGCc,25825
175
+ clearskies/endpoints/restful_api.py,sha256=CJZIVEhnTybCwDyQoHmvpvJ7e8p8ays37R1IVX6v79I,16663
176
+ clearskies/endpoints/simple_search.py,sha256=44G4GqNwgNDhcmfpQUFierqvgMxqoRc6y4gqvtHn1xw,9728
177
+ clearskies/endpoints/update.py,sha256=t8kD5zdmcBFSQBbi7C5VnCNs2AUq6xU1cCkvJAKNlFw,7542
178
+ clearskies/environment.py,sha256=LV7XztYYUZhaL8zWXi2EC-u6DLrCPxJTeUzmCy7p-ZA,3703
179
+ clearskies/exceptions/__init__.py,sha256=invmb0wSTpkUuPSEl49bAjU8ing8jt0vEpF2TTnvd_I,595
180
+ clearskies/exceptions/authentication.py,sha256=VlNS0Aq2_6LbG0jiE8jULpS54jNW8a8px0gPrK3EZCc,42
181
+ clearskies/exceptions/authorization.py,sha256=14JuU5zLEf2sv82VNxsJt7dGSwfP-t3Pvf_6QZuacfA,41
182
+ clearskies/exceptions/client_error.py,sha256=o1OGnjlXT5zZ1Vb2LTRPYIio0YAnXPpXDGuqSLQP9_Y,39
183
+ clearskies/exceptions/input_errors.py,sha256=cTEFhWKb6zGZ0NCE8s3eyjB2vZpeUVuBaFPg25ThAn0,137
184
+ clearskies/exceptions/moved_permanently.py,sha256=fcgU_VBtAe8ZnbyNoNpXDcTQ8UtsjdoYg4Z3Ry2gXmc,110
185
+ clearskies/exceptions/moved_temporarily.py,sha256=Pt3muYHASvgOC50wPmoul9hUfy3Ud_NPSGFxshNWbIk,110
186
+ clearskies/exceptions/not_found.py,sha256=_lZwovDrd18dUHDop5pF4mhexBPNr126xF2gOLA2-EA,36
187
+ clearskies/functional/__init__.py,sha256=yXnbX-pjW6MOaBTjIzogvSJZ6O9dbUAWOalhu0WSDiQ,106
188
+ clearskies/functional/routing.py,sha256=tfIvP_Y29GTGr91_1ec3LSQFoTRwpkqU4BYHXPnBaXA,3685
189
+ clearskies/functional/string.py,sha256=ZnkOjx8nxqZq2TV0CIb-Kz4onGoyekTX_WkLJM6XTmM,3311
190
+ clearskies/functional/validations.py,sha256=cPYOTwWomlQrPvqPP_Jdlds7zZ5H9GABCP5pnGzC9T4,2821
191
+ clearskies/input_outputs/__init__.py,sha256=9qeKJULw3MQ3zqkgBZice5d7qqRgsP3y-wkhWO2Y9vM,362
192
+ clearskies/input_outputs/cli.py,sha256=3kSE7p9OitUFyajuALwOtggJCIMIl5p_gxIby6lXE1E,6005
193
+ clearskies/input_outputs/exceptions/__init__.py,sha256=3KiM3KaMYEKoToqCCQ4_no2n0W5ROqeBC0sI2Ix4P6w,82
194
+ clearskies/input_outputs/exceptions/cli_input_error.py,sha256=kOFU8aLTLmeTL_AKDshxMu8_ufildg6p8ndhE1xHfb0,41
195
+ clearskies/input_outputs/exceptions/cli_not_found.py,sha256=JBBuZA9ZwdkPhd3a0qaGgEPQrxh1fehy4R3ZaV2gWXU,39
196
+ clearskies/input_outputs/headers.py,sha256=WjDwV3RppIpPtt5QdgdjYJfIO9ufCEpwJLEn4vLypZI,1616
197
+ clearskies/input_outputs/input_output.py,sha256=W5h8a9XFEqwi3h6v17okblz8sOozUj-mMt4JQyTQUJM,5963
198
+ clearskies/input_outputs/programmatic.py,sha256=gfsNFIfiF5cvxi1aS9SgArcKYUgkL5gyxjCMQLwgivY,1711
199
+ clearskies/input_outputs/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
200
+ clearskies/input_outputs/wsgi.py,sha256=94tgWxiwpwvJA9G4nG-hCHteg0pq9pIDCVhnheZuAQc,2544
201
+ clearskies/model.py,sha256=qdGco45F2icRLxhNy5Chtuww-q72jac6eoUpvFn40bU,26492
202
+ clearskies/parameters_to_properties.py,sha256=kbU9Ln2mU3XX4p-QNepGgS4HiQ1BUuJnhx9T6kgB9jw,1004
203
+ clearskies/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
204
+ clearskies/query/__init__.py,sha256=ISF80_cG3rd574sRTdKKPxAdlSjtQh_ClXKKs_MSSSo,277
205
+ clearskies/query/condition.py,sha256=9RJrYya1Kfzx0L_BMDKQhYkN9dB7NAq5kRK5mz51YdY,8624
206
+ clearskies/query/join.py,sha256=4lrDUQzck7klKY_VYkc4SVK95SVwyy3SVTvasnsAEyc,4713
207
+ clearskies/query/query.py,sha256=J_fJ8XZXvZxZ0nZd276WXaxzOFb-bVZ-PTaAqddGhOk,6076
208
+ clearskies/query/sort.py,sha256=c-EtIkjg3kLjwSTdXD7sfyx-mNUhAepUV-2izprh3iY,754
209
+ clearskies/schema.py,sha256=9S0RuFBiydsDy4kATy2BBsXJ9aWHILW0ja_q9F4kxb0,2872
210
+ clearskies/secrets/__init__.py,sha256=WauemayzKCr-guvMu6wCL4hQUIbkDJFuNKEm8Rd6cUs,136
211
+ clearskies/secrets/additional_configs/__init__.py,sha256=cFCrbtKF5nuR061S2y1iKZp349x-y8Srdwe3VZbfSFU,1119
212
+ clearskies/secrets/additional_configs/mysql_connection_dynamic_producer.py,sha256=CnIiXLVQdUnUey3dbCTXuNNP7Mmw1gjjNjZiBtfgGto,2757
213
+ clearskies/secrets/additional_configs/mysql_connection_dynamic_producer_via_ssh_cert_bastion.py,sha256=N8ruxrTNhvYlp3cYXq6V78KPPr4n40LM7QoXHvD8IZg,6235
214
+ clearskies/secrets/akeyless.py,sha256=IUI4RYD-XdNQvyhpuElnw_O74ZY4tJUUtCHmd0dArUI,7158
215
+ clearskies/secrets/exceptions/__init__.py,sha256=j-SLHD-DL0CT4cZXibD9kXHk63JEl_UKX6xL_nq1EfE,32
216
+ clearskies/secrets/exceptions/not_found.py,sha256=_lZwovDrd18dUHDop5pF4mhexBPNr126xF2gOLA2-EA,36
217
+ clearskies/secrets/secrets.py,sha256=TYN0T7XjmvETtSacDKEkyGGO9kDFCoPl5A7FNkvyNj4,1593
218
+ clearskies/security_header.py,sha256=__gPaE6F_MQKpt1cFh_ZOky7I44K3yiy0Z9FeEYscK0,202
219
+ clearskies/security_headers/__init__.py,sha256=JUpc4Y8dNBinDQAkP7OOABR7N787-lRR23boSWmY6Us,285
220
+ clearskies/security_headers/cache_control.py,sha256=1gxASHq74Azpm_19kDFEyT55KuO7gYeyauuvTAZVeaA,2279
221
+ clearskies/security_headers/cors.py,sha256=8cErvdprnT3IlBaoENbNz43UwFpaUWI_NXtJJaYEH3c,1859
222
+ clearskies/security_headers/csp.py,sha256=LQOebTB3pCodiTrJGi6rzac62T1jRAM4XSxuFo2rlqo,2993
223
+ clearskies/security_headers/hsts.py,sha256=sDMgdFxZkwcNvJS2CxXBKGrAWrhs3JqvuOV0Z8Hy2XA,760
224
+ clearskies/security_headers/x_content_type_options.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
225
+ clearskies/security_headers/x_frame_options.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
226
+ clearskies/test_base.py,sha256=Nw6qwsPMOx-QT_6wXn6f9P4BcA7OeGrs83IC2naNMYY,205
227
+ clearskies/typing.py,sha256=Kme9es5c_lw4qQCbCL7lKXtDemVl0_qBy7jxKIu4yyg,378
228
+ clearskies/validator.py,sha256=u9xNOfXbDOTpP1XLu-5O_QGJ6Ja674HRCW6QCxtlD1c,723
229
+ clearskies/validators/__init__.py,sha256=Hz0L5Y7EkeK4Px6WcdQ3ku6VqUGpLHX0ZWwCpT1ts1U,1248
230
+ clearskies/validators/after_column.py,sha256=WPbto20CEYaKjjQtO-0t1s5DvTKW7ipDMNYaqNlr1zY,2394
231
+ clearskies/validators/before_column.py,sha256=fDXhgPwGvnjk1Xy6iwebE8q--BeD48uu3cVGpRGTSBc,528
232
+ clearskies/validators/in_the_future.py,sha256=RLpQvIpng-0eDbOmI5xVLlnXnxS4YwRalYJTDFf_Y74,1012
233
+ clearskies/validators/in_the_future_at_least.py,sha256=C8g6xizvjgB9ZYI8lsccqmxiWR-AmZDuV2hW9gJ3w3A,407
234
+ clearskies/validators/in_the_future_at_most.py,sha256=55Zlw4hEmjm7VbUAesvFpP2Ha1gcEZJuPMZE_15bY0Y,361
235
+ clearskies/validators/in_the_past.py,sha256=nj8ytA8zZYCR4paPWvz-DH-NimFAEXkDtT23HIRrXDc,1008
236
+ clearskies/validators/in_the_past_at_least.py,sha256=58oZEWCL9GC-8kC-VyxN_455DQC2IdF2bWLsOxqLVqU,359
237
+ clearskies/validators/in_the_past_at_most.py,sha256=e78fz7XIBmvbw5EAj-4xjRqiQ-Ul1xKKwMXL-erpxto,357
238
+ clearskies/validators/maximum_length.py,sha256=lTatC9xFQ2JAiBOJtWCrqNEPh7O5k-_L5--FAc-z05U,877
239
+ clearskies/validators/maximum_value.py,sha256=dy3h2LdnPlAhQoVDCtlrf9Yd8yIrmax08u_qSmBddmI,889
240
+ clearskies/validators/minimum_length.py,sha256=gOMbtkoWxvWT4WEPtdP_5xCTn5GsshaaTC1vADpBoao,878
241
+ clearskies/validators/minimum_value.py,sha256=Vz0e_9U5KYqBGqfrVBOtPiVtmNPWwFEGPAuMH1q7Ky0,890
242
+ clearskies/validators/required.py,sha256=gNKEZsYP04PQZc0bE_EpgFw4dWrcKnml2D2QthuD7lY,1410
243
+ clearskies/validators/timedelta.py,sha256=TLtFs4KhOmJpDdrf9mmsSiLtt8yz-i0ym30Cw4EcykY,1960
244
+ clearskies/validators/unique.py,sha256=m59azxUecp7t3WFCehcmQ6E1ZpyXdcLQ1KOSm_p5Hn4,1077
245
+ clear_skies-2.0.0.dist-info/LICENSE,sha256=3Ehd0g3YOpCj8sqj0Xjq5qbOtjjgk9qzhhD9YjRQgOA,1053
246
+ clear_skies-2.0.0.dist-info/METADATA,sha256=JLZ7NxtWMmVIm5nNmlP1XYzqAagPw-g11XmJpJ_Ndgo,1757
247
+ clear_skies-2.0.0.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
248
+ clear_skies-2.0.0.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry-core 2.1.2
2
+ Generator: poetry-core 2.1.3
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
clearskies/__init__.py CHANGED
@@ -1,45 +1,62 @@
1
- from .columns import Columns
2
1
  from . import (
3
2
  authentication,
4
3
  autodoc,
5
4
  backends,
6
- column_types,
5
+ columns,
6
+ configs,
7
7
  contexts,
8
- decorators,
9
8
  di,
9
+ endpoints,
10
+ exceptions,
10
11
  functional,
11
- handlers,
12
- input_requirements,
13
- mocks,
14
- secrets,
12
+ query,
13
+ # secrets,
15
14
  security_headers,
15
+ typing,
16
+ validators,
16
17
  )
17
- from .condition_parser import ConditionParser
18
+ from . import parameters_to_properties as parameters_to_properties_module
19
+ from .column import Column
20
+ from .configurable import Configurable
21
+ from .end import End # type: ignore
22
+ from .endpoint import Endpoint
23
+ 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
18
29
  from .environment import Environment
19
- from .models import Models
20
30
  from .model import Model
21
- from .binding_config import BindingConfig
22
- from .application import Application
31
+ from .security_header import SecurityHeader
32
+ from .validator import Validator
23
33
 
24
34
  __all__ = [
25
- "Columns",
26
- "authentication",
35
+ "Action",
36
+ "Authentication",
27
37
  "autodoc",
28
38
  "backends",
29
- "column_types",
39
+ "Column",
40
+ "columns",
41
+ "configs",
42
+ "Configurable",
30
43
  "contexts",
31
- "decorators",
32
44
  "di",
33
- "functional",
34
- "handlers",
35
- "input_requirements",
36
- "mocks",
37
- "secrets",
38
- "security_headers",
39
- "ConditionParser",
45
+ "End",
46
+ "Endpoint",
47
+ "EndpointGroup",
48
+ "endpoints",
40
49
  "Environment",
41
- "Models",
50
+ "exceptions",
51
+ "functional",
42
52
  "Model",
43
- "BindingConfig",
44
- "Application",
53
+ "parameters_to_properties",
54
+ "Schema",
55
+ "typing",
56
+ "Validator",
57
+ "query",
58
+ # "secrets",
59
+ "SecurityHeader",
60
+ "security_headers",
61
+ "validators",
45
62
  ]
clearskies/action.py ADDED
@@ -0,0 +1,7 @@
1
+ from abc import ABC, abstractmethod
2
+
3
+
4
+ class Action(ABC):
5
+ @abstractmethod
6
+ def __call__(self, model):
7
+ pass
@@ -1,48 +1,15 @@
1
- from ..binding_config import BindingConfig
2
- from .auth0_jwks import Auth0JWKS
3
- from .authorization import Authorization
4
- from .authorization_pass_through import AuthorizationPassThrough
5
- from .jwks import JWKS
6
- from .jwks_jwcrypto import JWKSJwCrypto
7
- from .public import Public, PublicAuth
8
- from .secret_bearer import SecretBearer, SecretBearerAuth
9
-
10
-
11
- def public():
12
- return BindingConfig(Public)
13
-
14
-
15
- def secret_bearer(**kwargs):
16
- return BindingConfig(SecretBearerAuth, **kwargs)
17
-
18
-
19
- def auth0_jwks(**kwargs):
20
- return BindingConfig(Auth0JWKS, **kwargs)
21
-
22
-
23
- def jwks(jwks_url, **kwargs):
24
- return BindingConfig(JWKS, jwks_url=jwks_url, **kwargs)
25
-
26
-
27
- def jwks_jwcrypto(jwks_url, **kwargs):
28
- return BindingConfig(JWKSJwCrypto, jwks_url=jwks_url, **kwargs)
29
-
1
+ from clearskies.authentication.authentication import Authentication
2
+ from clearskies.authentication.authorization import Authorization
3
+ from clearskies.authentication.authorization_pass_through import AuthorizationPassThrough
4
+ from clearskies.authentication.jwks import Jwks
5
+ from clearskies.authentication.public import Public
6
+ from clearskies.authentication.secret_bearer import SecretBearer
30
7
 
31
8
  __all__ = [
9
+ "Authentication",
32
10
  "Authorization",
33
11
  "AuthorizationPassThrough",
34
- "BindingConfig",
35
- "public",
12
+ "Jwks",
36
13
  "Public",
37
- "PublicAuth",
38
- "secret_bearer",
39
14
  "SecretBearer",
40
- "SecretBearerAuth",
41
- "auth0_jwks",
42
- "Auth0JWKS",
43
- "authorization",
44
- "jwks",
45
- "JWKS",
46
- "jwks_jwcrypto",
47
- "JWKSJwCrypto",
48
15
  ]
@@ -0,0 +1,42 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import TYPE_CHECKING, Any
4
+
5
+ import requests
6
+
7
+ import clearskies.configurable
8
+ from clearskies.authentication.authorization import Authorization
9
+
10
+ if TYPE_CHECKING:
11
+ from clearskies.security_headers.cors import Cors
12
+
13
+
14
+ class Authentication(clearskies.configurable.Configurable, requests.auth.AuthBase):
15
+ is_public = True
16
+ can_authorize = False
17
+ has_dynamic_credentials = False
18
+
19
+ def clear_credential_cache(self) -> None:
20
+ pass
21
+
22
+ def headers(self, retry_auth: bool = False) -> dict[str, str]:
23
+ return {}
24
+
25
+ def authenticate(self, input_output) -> bool:
26
+ return True
27
+
28
+ def authorize(self, authorization: Authorization):
29
+ raise ValueError("Public endpoints do not support authorization")
30
+
31
+ def set_headers_for_cors(self, cors: Cors):
32
+ pass
33
+
34
+ def documentation_security_scheme(self) -> dict[str, Any]:
35
+ return {}
36
+
37
+ def documentation_security_scheme_name(self) -> str:
38
+ return ""
39
+
40
+ def __call__(self, request: requests.models.PreparedRequest) -> requests.models.PreparedRequest:
41
+ request.headers = {**request.headers, **self.headers()} # type: ignore
42
+ return request
@@ -1,17 +1,12 @@
1
- from abc import ABC, abstractmethod
2
-
3
-
4
1
  class Authorization:
5
2
  def gate(self, authorization_data, input_output):
6
3
  """
7
4
  Return True/False to denote if the given user, as represented by the authorization data, should be allowed access.
8
5
 
9
- Raise clearskies.handlers.exceptions.ClientError if you want to raise a specific error message.
6
+ Raise clearskies.exceptions.ClientError if you want to raise a specific error message.
10
7
  """
11
8
  return True
12
9
 
13
- def filter_models(self, models, authorization_data, input_output):
14
- """
15
- Return a models object with additional filters applied to account for authorization needs
16
- """
17
- return models
10
+ def filter_model(self, model, authorization_data, input_output):
11
+ """Return a models object with additional filters applied to account for authorization needs."""
12
+ return model
@@ -1,18 +1,20 @@
1
- from clearskies.authentication import jwks_jwcrypto
1
+ import clearskies.di
2
2
 
3
+ from .jwks import Jwks
3
4
 
4
- class AuthorizationPassThrough(jwks_jwcrypto.JWKSJwCrypto):
5
+
6
+ class AuthorizationPassThrough(Jwks):
5
7
  """
8
+ Authentication class with pass through.
9
+
6
10
  This authentication class takes the authentication header from the incoming request and reflects
7
11
  it on outgoing requests.
8
12
  """
9
13
 
10
- def __init__(self, environment, requests, di):
11
- super().__init__(environment, requests)
12
- # we need the dependency injection container so we can grab the input output and,
13
- # with that, the request headers (which contain the JWT we'll pass through).
14
- self.di = di
14
+ """
15
+ The input output helper
16
+ """
17
+ input_output = clearskies.di.inject.InputOutput()
15
18
 
16
19
  def headers(self, retry_auth=False):
17
- input_output = self.di.build("input_output", cache=True)
18
- return {"Authorization": input_output.get_request_header("authorization", True)}
20
+ return {"Authorization": self.input_output.request_headers.get("authorization", True)}