clear-skies 2.0.27__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 (270) hide show
  1. clear_skies-2.0.27.dist-info/METADATA +78 -0
  2. clear_skies-2.0.27.dist-info/RECORD +270 -0
  3. clear_skies-2.0.27.dist-info/WHEEL +4 -0
  4. clear_skies-2.0.27.dist-info/licenses/LICENSE +7 -0
  5. clearskies/__init__.py +69 -0
  6. clearskies/action.py +7 -0
  7. clearskies/authentication/__init__.py +15 -0
  8. clearskies/authentication/authentication.py +44 -0
  9. clearskies/authentication/authorization.py +23 -0
  10. clearskies/authentication/authorization_pass_through.py +22 -0
  11. clearskies/authentication/jwks.py +165 -0
  12. clearskies/authentication/public.py +5 -0
  13. clearskies/authentication/secret_bearer.py +551 -0
  14. clearskies/autodoc/__init__.py +8 -0
  15. clearskies/autodoc/formats/__init__.py +5 -0
  16. clearskies/autodoc/formats/oai3_json/__init__.py +7 -0
  17. clearskies/autodoc/formats/oai3_json/oai3_json.py +87 -0
  18. clearskies/autodoc/formats/oai3_json/oai3_schema_resolver.py +15 -0
  19. clearskies/autodoc/formats/oai3_json/parameter.py +35 -0
  20. clearskies/autodoc/formats/oai3_json/request.py +68 -0
  21. clearskies/autodoc/formats/oai3_json/response.py +28 -0
  22. clearskies/autodoc/formats/oai3_json/schema/__init__.py +11 -0
  23. clearskies/autodoc/formats/oai3_json/schema/array.py +9 -0
  24. clearskies/autodoc/formats/oai3_json/schema/default.py +13 -0
  25. clearskies/autodoc/formats/oai3_json/schema/enum.py +7 -0
  26. clearskies/autodoc/formats/oai3_json/schema/object.py +35 -0
  27. clearskies/autodoc/formats/oai3_json/test.json +1985 -0
  28. clearskies/autodoc/py.typed +0 -0
  29. clearskies/autodoc/request/__init__.py +15 -0
  30. clearskies/autodoc/request/header.py +6 -0
  31. clearskies/autodoc/request/json_body.py +6 -0
  32. clearskies/autodoc/request/parameter.py +8 -0
  33. clearskies/autodoc/request/request.py +47 -0
  34. clearskies/autodoc/request/url_parameter.py +6 -0
  35. clearskies/autodoc/request/url_path.py +6 -0
  36. clearskies/autodoc/response/__init__.py +5 -0
  37. clearskies/autodoc/response/response.py +9 -0
  38. clearskies/autodoc/schema/__init__.py +31 -0
  39. clearskies/autodoc/schema/array.py +10 -0
  40. clearskies/autodoc/schema/base64.py +8 -0
  41. clearskies/autodoc/schema/boolean.py +5 -0
  42. clearskies/autodoc/schema/date.py +5 -0
  43. clearskies/autodoc/schema/datetime.py +5 -0
  44. clearskies/autodoc/schema/double.py +5 -0
  45. clearskies/autodoc/schema/enum.py +17 -0
  46. clearskies/autodoc/schema/integer.py +6 -0
  47. clearskies/autodoc/schema/long.py +5 -0
  48. clearskies/autodoc/schema/number.py +6 -0
  49. clearskies/autodoc/schema/object.py +13 -0
  50. clearskies/autodoc/schema/password.py +5 -0
  51. clearskies/autodoc/schema/schema.py +11 -0
  52. clearskies/autodoc/schema/string.py +5 -0
  53. clearskies/backends/__init__.py +67 -0
  54. clearskies/backends/api_backend.py +1194 -0
  55. clearskies/backends/backend.py +137 -0
  56. clearskies/backends/cursor_backend.py +339 -0
  57. clearskies/backends/graphql_backend.py +977 -0
  58. clearskies/backends/memory_backend.py +794 -0
  59. clearskies/backends/secrets_backend.py +100 -0
  60. clearskies/clients/__init__.py +5 -0
  61. clearskies/clients/graphql_client.py +182 -0
  62. clearskies/column.py +1221 -0
  63. clearskies/columns/__init__.py +71 -0
  64. clearskies/columns/audit.py +306 -0
  65. clearskies/columns/belongs_to_id.py +478 -0
  66. clearskies/columns/belongs_to_model.py +145 -0
  67. clearskies/columns/belongs_to_self.py +109 -0
  68. clearskies/columns/boolean.py +110 -0
  69. clearskies/columns/category_tree.py +274 -0
  70. clearskies/columns/category_tree_ancestors.py +51 -0
  71. clearskies/columns/category_tree_children.py +125 -0
  72. clearskies/columns/category_tree_descendants.py +48 -0
  73. clearskies/columns/created.py +92 -0
  74. clearskies/columns/created_by_authorization_data.py +114 -0
  75. clearskies/columns/created_by_header.py +103 -0
  76. clearskies/columns/created_by_ip.py +90 -0
  77. clearskies/columns/created_by_routing_data.py +102 -0
  78. clearskies/columns/created_by_user_agent.py +89 -0
  79. clearskies/columns/date.py +232 -0
  80. clearskies/columns/datetime.py +284 -0
  81. clearskies/columns/email.py +78 -0
  82. clearskies/columns/float.py +149 -0
  83. clearskies/columns/has_many.py +552 -0
  84. clearskies/columns/has_many_self.py +62 -0
  85. clearskies/columns/has_one.py +21 -0
  86. clearskies/columns/integer.py +158 -0
  87. clearskies/columns/json.py +126 -0
  88. clearskies/columns/many_to_many_ids.py +335 -0
  89. clearskies/columns/many_to_many_ids_with_data.py +281 -0
  90. clearskies/columns/many_to_many_models.py +163 -0
  91. clearskies/columns/many_to_many_pivots.py +132 -0
  92. clearskies/columns/phone.py +162 -0
  93. clearskies/columns/select.py +95 -0
  94. clearskies/columns/string.py +102 -0
  95. clearskies/columns/timestamp.py +164 -0
  96. clearskies/columns/updated.py +107 -0
  97. clearskies/columns/uuid.py +83 -0
  98. clearskies/configs/README.md +105 -0
  99. clearskies/configs/__init__.py +170 -0
  100. clearskies/configs/actions.py +43 -0
  101. clearskies/configs/any.py +15 -0
  102. clearskies/configs/any_dict.py +24 -0
  103. clearskies/configs/any_dict_or_callable.py +25 -0
  104. clearskies/configs/authentication.py +23 -0
  105. clearskies/configs/authorization.py +23 -0
  106. clearskies/configs/boolean.py +18 -0
  107. clearskies/configs/boolean_or_callable.py +20 -0
  108. clearskies/configs/callable_config.py +20 -0
  109. clearskies/configs/columns.py +34 -0
  110. clearskies/configs/conditions.py +30 -0
  111. clearskies/configs/config.py +26 -0
  112. clearskies/configs/datetime.py +20 -0
  113. clearskies/configs/datetime_or_callable.py +21 -0
  114. clearskies/configs/email.py +10 -0
  115. clearskies/configs/email_list.py +17 -0
  116. clearskies/configs/email_list_or_callable.py +17 -0
  117. clearskies/configs/email_or_email_list_or_callable.py +59 -0
  118. clearskies/configs/endpoint.py +23 -0
  119. clearskies/configs/endpoint_list.py +29 -0
  120. clearskies/configs/float.py +18 -0
  121. clearskies/configs/float_or_callable.py +20 -0
  122. clearskies/configs/headers.py +28 -0
  123. clearskies/configs/integer.py +18 -0
  124. clearskies/configs/integer_or_callable.py +20 -0
  125. clearskies/configs/joins.py +30 -0
  126. clearskies/configs/list_any_dict.py +32 -0
  127. clearskies/configs/list_any_dict_or_callable.py +33 -0
  128. clearskies/configs/model_class.py +35 -0
  129. clearskies/configs/model_column.py +67 -0
  130. clearskies/configs/model_columns.py +58 -0
  131. clearskies/configs/model_destination_name.py +26 -0
  132. clearskies/configs/model_to_id_column.py +45 -0
  133. clearskies/configs/readable_model_column.py +11 -0
  134. clearskies/configs/readable_model_columns.py +11 -0
  135. clearskies/configs/schema.py +23 -0
  136. clearskies/configs/searchable_model_columns.py +11 -0
  137. clearskies/configs/security_headers.py +39 -0
  138. clearskies/configs/select.py +28 -0
  139. clearskies/configs/select_list.py +49 -0
  140. clearskies/configs/string.py +31 -0
  141. clearskies/configs/string_dict.py +34 -0
  142. clearskies/configs/string_list.py +47 -0
  143. clearskies/configs/string_list_or_callable.py +48 -0
  144. clearskies/configs/string_or_callable.py +18 -0
  145. clearskies/configs/timedelta.py +20 -0
  146. clearskies/configs/timezone.py +20 -0
  147. clearskies/configs/url.py +25 -0
  148. clearskies/configs/validators.py +45 -0
  149. clearskies/configs/writeable_model_column.py +11 -0
  150. clearskies/configs/writeable_model_columns.py +11 -0
  151. clearskies/configurable.py +78 -0
  152. clearskies/contexts/__init__.py +11 -0
  153. clearskies/contexts/cli.py +130 -0
  154. clearskies/contexts/context.py +99 -0
  155. clearskies/contexts/wsgi.py +79 -0
  156. clearskies/contexts/wsgi_ref.py +87 -0
  157. clearskies/cursors/__init__.py +10 -0
  158. clearskies/cursors/cursor.py +161 -0
  159. clearskies/cursors/from_environment/__init__.py +5 -0
  160. clearskies/cursors/from_environment/mysql.py +51 -0
  161. clearskies/cursors/from_environment/postgresql.py +49 -0
  162. clearskies/cursors/from_environment/sqlite.py +35 -0
  163. clearskies/cursors/mysql.py +61 -0
  164. clearskies/cursors/postgresql.py +61 -0
  165. clearskies/cursors/sqlite.py +62 -0
  166. clearskies/decorators.py +33 -0
  167. clearskies/decorators.pyi +10 -0
  168. clearskies/di/__init__.py +15 -0
  169. clearskies/di/additional_config.py +130 -0
  170. clearskies/di/additional_config_auto_import.py +17 -0
  171. clearskies/di/di.py +948 -0
  172. clearskies/di/inject/__init__.py +25 -0
  173. clearskies/di/inject/akeyless_sdk.py +16 -0
  174. clearskies/di/inject/by_class.py +24 -0
  175. clearskies/di/inject/by_name.py +22 -0
  176. clearskies/di/inject/di.py +16 -0
  177. clearskies/di/inject/environment.py +15 -0
  178. clearskies/di/inject/input_output.py +19 -0
  179. clearskies/di/inject/logger.py +16 -0
  180. clearskies/di/inject/now.py +16 -0
  181. clearskies/di/inject/requests.py +16 -0
  182. clearskies/di/inject/secrets.py +15 -0
  183. clearskies/di/inject/utcnow.py +16 -0
  184. clearskies/di/inject/uuid.py +16 -0
  185. clearskies/di/injectable.py +32 -0
  186. clearskies/di/injectable_properties.py +131 -0
  187. clearskies/end.py +219 -0
  188. clearskies/endpoint.py +1303 -0
  189. clearskies/endpoint_group.py +333 -0
  190. clearskies/endpoints/__init__.py +25 -0
  191. clearskies/endpoints/advanced_search.py +519 -0
  192. clearskies/endpoints/callable.py +382 -0
  193. clearskies/endpoints/create.py +201 -0
  194. clearskies/endpoints/delete.py +133 -0
  195. clearskies/endpoints/get.py +267 -0
  196. clearskies/endpoints/health_check.py +181 -0
  197. clearskies/endpoints/list.py +567 -0
  198. clearskies/endpoints/restful_api.py +417 -0
  199. clearskies/endpoints/schema.py +185 -0
  200. clearskies/endpoints/simple_search.py +279 -0
  201. clearskies/endpoints/update.py +188 -0
  202. clearskies/environment.py +106 -0
  203. clearskies/exceptions/__init__.py +19 -0
  204. clearskies/exceptions/authentication.py +2 -0
  205. clearskies/exceptions/authorization.py +2 -0
  206. clearskies/exceptions/client_error.py +2 -0
  207. clearskies/exceptions/input_errors.py +4 -0
  208. clearskies/exceptions/missing_dependency.py +2 -0
  209. clearskies/exceptions/moved_permanently.py +3 -0
  210. clearskies/exceptions/moved_temporarily.py +3 -0
  211. clearskies/exceptions/not_found.py +2 -0
  212. clearskies/functional/__init__.py +7 -0
  213. clearskies/functional/json.py +47 -0
  214. clearskies/functional/routing.py +92 -0
  215. clearskies/functional/string.py +112 -0
  216. clearskies/functional/validations.py +76 -0
  217. clearskies/input_outputs/__init__.py +13 -0
  218. clearskies/input_outputs/cli.py +157 -0
  219. clearskies/input_outputs/exceptions/__init__.py +7 -0
  220. clearskies/input_outputs/exceptions/cli_input_error.py +2 -0
  221. clearskies/input_outputs/exceptions/cli_not_found.py +2 -0
  222. clearskies/input_outputs/headers.py +54 -0
  223. clearskies/input_outputs/input_output.py +116 -0
  224. clearskies/input_outputs/programmatic.py +62 -0
  225. clearskies/input_outputs/py.typed +0 -0
  226. clearskies/input_outputs/wsgi.py +80 -0
  227. clearskies/loggable.py +19 -0
  228. clearskies/model.py +2039 -0
  229. clearskies/py.typed +0 -0
  230. clearskies/query/__init__.py +12 -0
  231. clearskies/query/condition.py +228 -0
  232. clearskies/query/join.py +136 -0
  233. clearskies/query/query.py +195 -0
  234. clearskies/query/sort.py +27 -0
  235. clearskies/schema.py +82 -0
  236. clearskies/secrets/__init__.py +7 -0
  237. clearskies/secrets/additional_configs/__init__.py +32 -0
  238. clearskies/secrets/additional_configs/mysql_connection_dynamic_producer.py +61 -0
  239. clearskies/secrets/additional_configs/mysql_connection_dynamic_producer_via_ssh_cert_bastion.py +160 -0
  240. clearskies/secrets/akeyless.py +507 -0
  241. clearskies/secrets/exceptions/__init__.py +7 -0
  242. clearskies/secrets/exceptions/not_found_error.py +2 -0
  243. clearskies/secrets/exceptions/permissions_error.py +2 -0
  244. clearskies/secrets/secrets.py +39 -0
  245. clearskies/security_header.py +17 -0
  246. clearskies/security_headers/__init__.py +11 -0
  247. clearskies/security_headers/cache_control.py +68 -0
  248. clearskies/security_headers/cors.py +51 -0
  249. clearskies/security_headers/csp.py +95 -0
  250. clearskies/security_headers/hsts.py +23 -0
  251. clearskies/security_headers/x_content_type_options.py +0 -0
  252. clearskies/security_headers/x_frame_options.py +0 -0
  253. clearskies/typing.py +11 -0
  254. clearskies/validator.py +36 -0
  255. clearskies/validators/__init__.py +33 -0
  256. clearskies/validators/after_column.py +61 -0
  257. clearskies/validators/before_column.py +15 -0
  258. clearskies/validators/in_the_future.py +29 -0
  259. clearskies/validators/in_the_future_at_least.py +13 -0
  260. clearskies/validators/in_the_future_at_most.py +12 -0
  261. clearskies/validators/in_the_past.py +29 -0
  262. clearskies/validators/in_the_past_at_least.py +12 -0
  263. clearskies/validators/in_the_past_at_most.py +12 -0
  264. clearskies/validators/maximum_length.py +25 -0
  265. clearskies/validators/maximum_value.py +28 -0
  266. clearskies/validators/minimum_length.py +25 -0
  267. clearskies/validators/minimum_value.py +28 -0
  268. clearskies/validators/required.py +32 -0
  269. clearskies/validators/timedelta.py +58 -0
  270. clearskies/validators/unique.py +28 -0
@@ -0,0 +1,78 @@
1
+ Metadata-Version: 2.4
2
+ Name: clear-skies
3
+ Version: 2.0.27
4
+ Summary: A framework for building backends in the cloud
5
+ Project-URL: Documentation, https://clearskies.io/
6
+ Project-URL: Repository, https://github.com/clearskies-py/clearskies
7
+ Project-URL: Issues, https://github.com/clearskies-py/clearskies/issues
8
+ Project-URL: Changelog, https://github.com/clearskies-py/clearskies/blob/main/CHANGELOG.md
9
+ Author-email: Conor Mancone <cmancone@gmail.com>
10
+ License-Expression: MIT
11
+ License-File: LICENSE
12
+ Classifier: Development Status :: 5 - Production/Stable
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Programming Language :: Python :: 3
16
+ Requires-Python: <4.0,>=3.11
17
+ Requires-Dist: dateparser<2.0.0,>=1.1.8
18
+ Requires-Dist: requests<3.0.0,>=2.31.0
19
+ Requires-Dist: typing-extensions<5.0.0,>=4.12.0; python_version >= '3.10' and python_version < '3.11'
20
+ Requires-Dist: wrapt<2.0.0,>=1.16.0
21
+ Provides-Extra: graphql
22
+ Requires-Dist: gql[all]>=4.0.0; extra == 'graphql'
23
+ Provides-Extra: jwcrypto
24
+ Requires-Dist: jwcrypto<2.0.0,>=1.5.6; extra == 'jwcrypto'
25
+ Provides-Extra: mysql
26
+ Requires-Dist: pymysql<2.0.0,>=1.1.0; extra == 'mysql'
27
+ Provides-Extra: pgsql
28
+ Requires-Dist: psycopg[binary]<4.0.0,>=3.1.10; extra == 'pgsql'
29
+ Provides-Extra: secrets
30
+ Requires-Dist: akeyless-cloud-id<0.3.0,>=0.2.3; extra == 'secrets'
31
+ Requires-Dist: akeyless<5.0.0,>=4.0.0; extra == 'secrets'
32
+ Description-Content-Type: text/markdown
33
+
34
+ # clearskies
35
+
36
+ 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.
37
+
38
+ ## Installation
39
+
40
+ ```bash
41
+ uv add clear-skies
42
+ ```
43
+
44
+ or
45
+
46
+ ```bash
47
+ pip install clear-skies
48
+ ```
49
+
50
+ or
51
+
52
+ ```bash
53
+ pipenv install clear-skies
54
+ ```
55
+
56
+ or
57
+
58
+ ```bash
59
+ poetry add clear-skies
60
+ ```
61
+
62
+ ## Development
63
+
64
+ To set up your development environment with pre-commit hooks:
65
+
66
+ ```bash
67
+ # Install uv if not already installed
68
+ pip install uv
69
+
70
+ # Create a virtual environment and install all dependencies (including dev)
71
+ uv sync
72
+
73
+ # Install pre-commit hooks
74
+ uv run pre-commit install
75
+
76
+ # Optionally, run pre-commit on all files
77
+ uv run pre-commit run --all-files
78
+ ```
@@ -0,0 +1,270 @@
1
+ clearskies/__init__.py,sha256=IRG95pqM-ntgxzfFdDVsgy_GWQDQ8UNe1E2J4s32mUw,1241
2
+ clearskies/action.py,sha256=x_T05XaC0m-BYPZWaSR94XbE7T5ZK1vRtSfEszfZuDg,121
3
+ clearskies/column.py,sha256=dOb7_alCMt_uRU3JQBU8pJNNm30y0WIa3763EVVX50k,51355
4
+ clearskies/configurable.py,sha256=gfX9o5qgMqc8lSzrdcUyR3b6zdOvg9ccYBQ0VvZjXkk,3085
5
+ clearskies/decorators.py,sha256=lcXJC4xI-hRyKDSH8yklcWjOrIL9k2Qks1xP2lmyDm0,1024
6
+ clearskies/decorators.pyi,sha256=qSRzPJYYoV9trEsh_V1BxP2HdMz0G2gOs4FV8f5hvyU,388
7
+ clearskies/end.py,sha256=mEPdBB4lh9zmAKTbsffCh-mQMZGIVohriWjm-952EzA,10629
8
+ clearskies/endpoint.py,sha256=3XDa-B5KwDCaoYdq6Ps9XseiZ6Zr0ntcna5nKMeFhns,48246
9
+ clearskies/endpoint_group.py,sha256=qsxQpt1i6IRvQqhQkt_udoVj0TMdoIOccvKyEBaeaEg,12343
10
+ clearskies/environment.py,sha256=BbNgQH3uuCTxoHeLB9O1_HsPTaJL5aiXqY6hZ9aj-jo,3739
11
+ clearskies/loggable.py,sha256=2-uhl2OwMahXiqjIV-607RAELpubX-SjssCRY7O5Qro,593
12
+ clearskies/model.py,sha256=QC3XM_WigbrFSsCTdoWhyTDqck5fsTgzj3sXoz5yvoA,78547
13
+ clearskies/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
+ clearskies/schema.py,sha256=9S0RuFBiydsDy4kATy2BBsXJ9aWHILW0ja_q9F4kxb0,2872
15
+ clearskies/security_header.py,sha256=_RsQEJahVTIB8m8IIgQgYk8NhX_6QJqRJpQDh2NETNo,467
16
+ clearskies/typing.py,sha256=iSgBpnBS3ZregLLFBw-89lmxsLiFpSBa1qZx9mdZEME,368
17
+ clearskies/validator.py,sha256=Cx3E1627c45C2XT1s_3WuV1rugJVnYMZJp0ZG0Ny0X0,1264
18
+ clearskies/authentication/__init__.py,sha256=MxXNCWhKbha7TPu_MAyssfTdOCEDSNBwzshEHx8gfHo,525
19
+ clearskies/authentication/authentication.py,sha256=B1I8udvtGfEdiUrqUM8V3YT_Cxema9eDOSlnXjgC35s,1230
20
+ clearskies/authentication/authorization.py,sha256=87eRORyR7RpyB5YnLm6zqn4JQjTUIA4psfTjTE-oSSg,805
21
+ clearskies/authentication/authorization_pass_through.py,sha256=EEQ-JJbBVLAoRefrNFAWBicoJO5k3B4gZQc2rQAwIBk,556
22
+ clearskies/authentication/jwks.py,sha256=slAx3xbTDiIWx0Cp7fn4z7_iDfGMWZZ-YAHHX5Imae0,4852
23
+ clearskies/authentication/public.py,sha256=GSNl4X4fnB25BZoXSo8nqL0iZCa9rzfvPfIsJ2Y34B4,84
24
+ clearskies/authentication/secret_bearer.py,sha256=OVLi9kJNIGF1Cyl4nOxDxuuctZCVBP2L-bT2Og8qCHE,17377
25
+ clearskies/autodoc/__init__.py,sha256=JRUAmd0he8iGlgiZvxewLMIXJqnOFEdvlaKAtHpC2lo,124
26
+ clearskies/autodoc/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
+ clearskies/autodoc/formats/__init__.py,sha256=3rhoLKmEwT6PljaHvOl9qdeMIXyD7PQBZbqZKy5Mb5I,56
28
+ clearskies/autodoc/formats/oai3_json/__init__.py,sha256=tbbOZWkX9ZWj4BM3arHrlmqy4ZrScmIv2bazadbQt1w,142
29
+ clearskies/autodoc/formats/oai3_json/oai3_json.py,sha256=-LViw86zpPAgAEnC42KuobccvFATRg-j8ZEd8BiTYFA,2964
30
+ clearskies/autodoc/formats/oai3_json/oai3_schema_resolver.py,sha256=5gifJ36dyWEeYtfjHVbbTpPBo0BB1Gqxt0Y3sxTiHJA,509
31
+ clearskies/autodoc/formats/oai3_json/parameter.py,sha256=h9bHXxqJhUc7NRQCZF6RnIPuaY9BA6V_xzYNnsplXlc,1110
32
+ clearskies/autodoc/formats/oai3_json/request.py,sha256=RM6PgdZNHVP6iH9oeOfSPwyp-v0k3MhUEOT8SLxORd0,2932
33
+ clearskies/autodoc/formats/oai3_json/response.py,sha256=ou06oFQtaAR70qIvIoAe4QzohWiACzhCwlW73oM5Dvg,778
34
+ clearskies/autodoc/formats/oai3_json/test.json,sha256=DdMvSUbaTEAyWtX_RDxEFR82kK9pCCTeFUghQwHjB3s,59848
35
+ clearskies/autodoc/formats/oai3_json/schema/__init__.py,sha256=VJiDueMdGfJoVQVt9SXIE_-uPghSXtCzpTXuqPaaiRw,173
36
+ clearskies/autodoc/formats/oai3_json/schema/array.py,sha256=1VOrMC_i1JSu1Gw2cqQ7uVDhSk-xNm25io7oBQL9PZM,310
37
+ clearskies/autodoc/formats/oai3_json/schema/default.py,sha256=BhwQebdIaK6rrATu6yZxPU3bqVmd4LFKTTlydJVl644,484
38
+ clearskies/autodoc/formats/oai3_json/schema/enum.py,sha256=7qkpYWXPwbkgkoHPAowMIHJeGNb81qQmTmIIdc5yJbA,265
39
+ clearskies/autodoc/formats/oai3_json/schema/object.py,sha256=HkLg3A6cTwV9h3QiXPpoVG7bH8U-aKFzp7nyGClGBgQ,1073
40
+ clearskies/autodoc/request/__init__.py,sha256=-L1hZ70QKn0yzXJtpQS741lbcYXA4i0xQnkebKDjzsA,303
41
+ clearskies/autodoc/request/header.py,sha256=TCeRyFFqcgNN8o9vEmc0JTxs7vRlMHnlhs7zsYfShRM,104
42
+ clearskies/autodoc/request/json_body.py,sha256=qURg3_4fQA9ZUVeR_T0g-RZ8seFIrI0ME-s4PzosfGE,108
43
+ clearskies/autodoc/request/parameter.py,sha256=Z7l7gdsOw-SSLYfL8kQmLnslg89JUQObppxatJiI2sA,233
44
+ clearskies/autodoc/request/request.py,sha256=k9876Pu27H3K-AXlmhOGPrc1W2L972_ugEExWiqW4aU,1814
45
+ clearskies/autodoc/request/url_parameter.py,sha256=mwM9Fe16h_8tdPXvXokjzOH1I2Txs-GFjK1a9FQND2w,117
46
+ clearskies/autodoc/request/url_path.py,sha256=WmZDltORzCir4Ei6_XqoBlh7UBpZZmvZIDfaQezGtmc,107
47
+ clearskies/autodoc/response/__init__.py,sha256=a0vlujvsyLkq1zleRTqcGULoaXTJLkjyTKCUWdsq8Uc,62
48
+ clearskies/autodoc/response/response.py,sha256=I3-wA1gd5XKYey_7gqBoWA-II4k6URop48NO3ckQoh4,266
49
+ clearskies/autodoc/schema/__init__.py,sha256=PF4jywX7Bk6rXaK0LxTQnxk1FLg2O3_Gdm3_XpN61nI,586
50
+ clearskies/autodoc/schema/array.py,sha256=hBLtH5v-o7-KtiFscoa-KAxW4Fcqv_5h542eS7yOo0o,262
51
+ clearskies/autodoc/schema/base64.py,sha256=IPISPbUVf02N_fqcxRMsaiBvFTXAznngZxlWSSyHh-w,190
52
+ clearskies/autodoc/schema/boolean.py,sha256=e6ofkyPcKZllMvSL96M3whjA-tWeT0m5AVotl61wIG8,74
53
+ clearskies/autodoc/schema/date.py,sha256=5IiLM2La1br1E3url6_6k54PYyw_3SyAvvKb1kNReSA,70
54
+ clearskies/autodoc/schema/datetime.py,sha256=WoIPfpVWvr4znQpkqTUT_R1jdnulEvXfOAI3al-AzFA,79
55
+ clearskies/autodoc/schema/double.py,sha256=Wyv9aiPRneeoYWHoYlvkkLUo4WaLnQdvg6ePkXL6k5I,74
56
+ clearskies/autodoc/schema/enum.py,sha256=YP6hPYXTlHWEIPyczPKtimm9luvTcLTT6YrKdGTwty0,413
57
+ clearskies/autodoc/schema/integer.py,sha256=AVqcNyJemzA0Cgg8OGPntDIGONcvOaPWeBVkyQ0ENcY,96
58
+ clearskies/autodoc/schema/long.py,sha256=NhRYUQhr1PZR2gI945RXzu9SfV_hQnTzlxrYCAZKOEo,74
59
+ clearskies/autodoc/schema/number.py,sha256=z6q7XPKW_rLZSv4nYMOcKYQJgXZlmBq9-zsK3kGmI5M,94
60
+ clearskies/autodoc/schema/object.py,sha256=sjW3A1yIGCseRcHHmVbkxNtsg6EPivVMSmmRyZjO_1w,346
61
+ clearskies/autodoc/schema/password.py,sha256=hSXPvHoXEbG-KHQFxXubEarxSMg9Cki_n8tw_yvEFp4,78
62
+ clearskies/autodoc/schema/schema.py,sha256=zsJFtEyUCGGokYsnpcIfRVbeEwVTOWqE6VjTYyv8JZM,242
63
+ clearskies/autodoc/schema/string.py,sha256=GXRI-aU8PYmjfnhmfaOe4vq7JASb-aB4SiFeG-EmJY0,60
64
+ clearskies/backends/__init__.py,sha256=XqWEoRFLB_p76t4DcgudFaNMazCBAJvLSj54W5x0ApA,3242
65
+ clearskies/backends/api_backend.py,sha256=Xk9Nyg1QP65RL1RYbX-7OPIPWDuFRQRT7hFEXUa1TaY,55061
66
+ clearskies/backends/backend.py,sha256=6GZFxNSAwV8CZMdOzeRyOS0b4_Fz3jrRqjAO2_UlNdU,5848
67
+ clearskies/backends/cursor_backend.py,sha256=ns3G_kh_-z35cM_bPTbqpDmwj-hN5O8javT_WCBqP3E,14708
68
+ clearskies/backends/graphql_backend.py,sha256=2bdZczDFp-bmRmEfmTRXdNVycfcx9aAQ0TW--2wgsoA,41779
69
+ clearskies/backends/memory_backend.py,sha256=H_2fib9EFdXsg3ZMMpC20DMHnrnYDbPgZnmiarbOhiM,33963
70
+ clearskies/backends/secrets_backend.py,sha256=f_C5oAAr3tgM4UqioYPWcASPe9DhySC_uLWYGgMEPpY,3987
71
+ clearskies/clients/__init__.py,sha256=x6Z_gul3KjSsVWznjz-uHfN5rzRby2bQs1KSEmcXiQg,96
72
+ clearskies/clients/graphql_client.py,sha256=8TqXqBVn6NR2kUX-cElk4PdvKXGZyeTLj9x77UVzxlo,5719
73
+ clearskies/columns/__init__.py,sha256=a__-1hv-aMV3RU0Sd-BEkfItSJaG51EF2VeRQoTdka8,1990
74
+ clearskies/columns/audit.py,sha256=Q10aK0CI3OiV8EZar5oMLWrxqHDxltG3GXeNyWFb_yw,10811
75
+ clearskies/columns/belongs_to_id.py,sha256=Ga3IpWlMy2_m8e5OK_iortNjHdMbF1RQF2tglWAzBVc,17575
76
+ clearskies/columns/belongs_to_model.py,sha256=RFxtqPrUB28_VSerGHxfsjqkzztllqQoE_-CwyuMtWQ,6476
77
+ clearskies/columns/belongs_to_self.py,sha256=cmgjxq4SmokGO2UbE0VlcFRXack9KjPLzyE9L3fNang,3725
78
+ clearskies/columns/boolean.py,sha256=pdkO7dxqIYCHX95C_yGo5vyvH_D0fO8zs0XgRN50zMQ,3713
79
+ clearskies/columns/category_tree.py,sha256=kO6fm_jNHy13ZnH2o6b-vNwo6JIkSj0MDAFq1LLRHcg,10999
80
+ clearskies/columns/category_tree_ancestors.py,sha256=FRFAMD3E6GzOzzLkY-IhWBdiYSpHHnthF5kX8V3iPr8,1380
81
+ clearskies/columns/category_tree_children.py,sha256=NwYydavQPRWySaDyM0wBGnC25GGsY5pR74WSOz1LC20,5225
82
+ clearskies/columns/category_tree_descendants.py,sha256=Fm1XfQadk0SxeWOWuLWpEL9mk0Wqf373O0o-UxgdDdg,1228
83
+ clearskies/columns/created.py,sha256=qA415Co9YVLgXpZuzfUj77mVDwZNZ1HTV9CyeE9Zybw,2706
84
+ clearskies/columns/created_by_authorization_data.py,sha256=X_0M42X7U71GqIKm-AHN5rez4lYuHYgC_wfv5a_x8BI,4673
85
+ clearskies/columns/created_by_header.py,sha256=oMc1cSbjEhX3j6PKsv1d_vLG-LadcnPa-9gxZHv97xQ,3609
86
+ clearskies/columns/created_by_ip.py,sha256=O9N3bYN6KwF5yRD31Kd3jmurJ0M3fuc2davwaw189V0,2672
87
+ clearskies/columns/created_by_routing_data.py,sha256=VaeBNo4m610d0KufVHEBpRChw4W-Wx0ya8MPK9QpLn8,3630
88
+ clearskies/columns/created_by_user_agent.py,sha256=ZXFCEedMEgzND6OWs3K1LSeMyh7jNxMo3wfy2JgfIU4,2741
89
+ clearskies/columns/date.py,sha256=RDl1jWnm1JnydXM3bVHPx-waix5TlU-A6BYbuR1pi5c,8727
90
+ clearskies/columns/datetime.py,sha256=JGLq6VHY3DJw2US75weCNjGu-Mps3XqVQKn4ohplqcE,10728
91
+ clearskies/columns/email.py,sha256=JV98NrYh212hZM-9p3XulC1FPGcgE0NB7oncYEoFj8A,1912
92
+ clearskies/columns/float.py,sha256=k7_rltAcUB8rJ_dccdB6J0zRJ-9ZTNIbImo1cDetRe4,4401
93
+ clearskies/columns/has_many.py,sha256=gQ25x5glek2y5KnqnJM40aKpqLR2wvnrvbqdThXHTYI,21341
94
+ clearskies/columns/has_many_self.py,sha256=UeuQcvzT6eYzuQ3Xd7vZdgRllrxoVS9WEv7C3YD2sPs,2407
95
+ clearskies/columns/has_one.py,sha256=cZgxikZLiRT9o902umfyzxYngsf9QJDjxcgLC--RTWw,612
96
+ clearskies/columns/integer.py,sha256=IGdJwPRWnQY_xUBajq7yekwPeBce8T2seKGJ5klmSjQ,4525
97
+ clearskies/columns/json.py,sha256=PFCuNbg32xF8L86VfpTmeTk44yzY5N3huoHUNjj1gy4,3557
98
+ clearskies/columns/many_to_many_ids.py,sha256=_8MscIiGzvVcJODrO2x0C6EqStAV3pSNSMoUwu4BZz8,14083
99
+ clearskies/columns/many_to_many_ids_with_data.py,sha256=ws2M2yryz2G7798YsgP7bXXzy6UWaa_rB7uafqfpNK0,12163
100
+ clearskies/columns/many_to_many_models.py,sha256=HvEZ7FettzwIfsraPsZ9ot697swtKMzRrbSkGyR-Ed8,7628
101
+ clearskies/columns/many_to_many_pivots.py,sha256=UwznWUInyODs1bw5xXIy8SIQhIvVHwm03stjV3REvHk,5648
102
+ clearskies/columns/phone.py,sha256=AVNeNXm_A_CjD4W-QeJtsKHMIlMQc_DbpKFDxJKw9H4,5182
103
+ clearskies/columns/select.py,sha256=Huef3sp9JP2DRzXgNBurZfY4lsKn0RU4WmAj689HlWw,2714
104
+ clearskies/columns/string.py,sha256=Vyl1eb6RjW8q0a4AMqHI01vBLao9f7fkowNUumNoPqU,2594
105
+ clearskies/columns/timestamp.py,sha256=nIEbvg1YqKPjtEeFyYRnPPPSYB_lYIIUUm8zNoE8dE8,5810
106
+ clearskies/columns/updated.py,sha256=qE9CGwTwURGp9hr4zQAW8inpp-Xz2leWsIiHHcG1Ao4,3324
107
+ clearskies/columns/uuid.py,sha256=QE1UKHA9zt7bYd59rYRmzIHSonq9-sZeQbAIQtoJC54,2265
108
+ clearskies/configs/README.md,sha256=4-r2FvkrBTrKkcKgJ5O3Qj1RZ7nnkknenKze4XYlQDs,4827
109
+ clearskies/configs/__init__.py,sha256=DwpoecIXXFzQMHCi38pohYHSbw7KIb6z0hSkus2HKGg,5385
110
+ clearskies/configs/actions.py,sha256=5OwrokU8uTSSQ_6SvL94SOP5JVkvRRFGAXNcCdMt8aQ,1388
111
+ clearskies/configs/any.py,sha256=QSLOO955Lbg8NqYeyxdQGXTTyfFc5P036LORUa7avHc,388
112
+ clearskies/configs/any_dict.py,sha256=LECTIcCF22JXbAaZdWSmKh9UShRuRt8PydNCuj05ijI,907
113
+ clearskies/configs/any_dict_or_callable.py,sha256=5tfX4TQJhz3k8HY1uglLZD7CoRZnnM6aiFVEpdnCH54,1087
114
+ clearskies/configs/authentication.py,sha256=9XZClfYcECi5dzt1BvDof34tW6IotN252bcxlc_u2fc,842
115
+ clearskies/configs/authorization.py,sha256=Pa6wCyMitpKv2Nde69tMB5sJsxeCI2nVSdTuwF6R9pQ,828
116
+ clearskies/configs/boolean.py,sha256=Yj6fEKo85wQkalg7oHimn1ZU3lJGxCmKeFV1mvdXqIc,624
117
+ clearskies/configs/boolean_or_callable.py,sha256=vVyB1ES8IW_nX5ZzwumQy2EM7LctQ9M_8IB5BOnmNEU,745
118
+ clearskies/configs/callable_config.py,sha256=nEZyHVUkrIysB21iiHJLwznbfU5bZGKCGioZ-5BOLfU,708
119
+ clearskies/configs/columns.py,sha256=WhdpPUiwVqwBO2XCDDiMym2nWr_1-L1JoICyob4T6Wo,1258
120
+ clearskies/configs/conditions.py,sha256=a09bVac4-10ZtKPQGSu_e9VnHnwITwy_7_T4NekXpgs,1008
121
+ clearskies/configs/config.py,sha256=2qsF3ZBc8tsTXDgNLL7vT01kjWanbJH3oXO9R2S6GnU,909
122
+ clearskies/configs/datetime.py,sha256=QJxqRyFkb0YByHmaH_Rd_geUiyvBpk5xdBdRDj28278,689
123
+ clearskies/configs/datetime_or_callable.py,sha256=hp6ay-958DWoPy8Ryf1VS4R5NPKoF9LceiUhSB7I_wg,835
124
+ clearskies/configs/email.py,sha256=BbXGvZnO9wwT8LHexAq0ibwDNLVvv_8yUJEOThzJVE4,317
125
+ clearskies/configs/email_list.py,sha256=cTgdQTz4HYkqbdTEHPy8LcLjPGqFWY5TOIH8cHbfXXI,582
126
+ clearskies/configs/email_list_or_callable.py,sha256=iApQZzHEy6Pn5XiZzRn2gbHkRipIdLVqXzmwkjiMdmI,650
127
+ clearskies/configs/email_or_email_list_or_callable.py,sha256=tFdAsI1sTDMOheb3h8nQhIVxnl9xzZPwZtKjYEHjkKM,2470
128
+ clearskies/configs/endpoint.py,sha256=NEDthtdPzejAot7yzUjC01PvQJR9BIyk5YnWXCi1w9I,759
129
+ clearskies/configs/endpoint_list.py,sha256=HS1IO2HX8Y0W5ZZU7_Yk_6p5a8mo93an5Q2KAkOl9ZU,1202
130
+ clearskies/configs/float.py,sha256=7HwDMf-3VfrZxTmXwpnwDgXyzujUBpz1xPi1StdjB1Q,621
131
+ clearskies/configs/float_or_callable.py,sha256=9IiylL4Gg9_7HJOrYxbUPuLGE03TwKsAMsxfB7Lh2yY,744
132
+ clearskies/configs/headers.py,sha256=MY_oYm4tI5_9h635E8Yo_hj2id5IqfztqtwRZVdYaYo,976
133
+ clearskies/configs/integer.py,sha256=lw05RhD8ZkHO_tYJLtCUHZ_Ucz2Mf7C0Z5wVOsMqgq0,620
134
+ clearskies/configs/integer_or_callable.py,sha256=acCUP2ZSfSMPyID2LzIOQ-dlgARpxEktgr7KFWMtGbk,739
135
+ clearskies/configs/joins.py,sha256=i1QmxFwkpL-pnzVPh3mrHpwrvzsjt9nH5pMSj4J1TT4,944
136
+ clearskies/configs/list_any_dict.py,sha256=SRTrQdi3VcrjApkr0gI1M8GnAFSWO_ifmUQKWqnEzxU,1363
137
+ clearskies/configs/list_any_dict_or_callable.py,sha256=_dRzjrh5LljTuMVEUGSPhhxLU3OF6CFiHHIai8BRdsU,1581
138
+ clearskies/configs/model_class.py,sha256=ks0hnB2mZFHjhR3-x51d8IJSLVBclNjD_GhBcNfIxZE,1170
139
+ clearskies/configs/model_column.py,sha256=qLwTFdU3nP1LH3MG-wUo_aSTR-NKolsYTfjH2DOUUi4,2620
140
+ clearskies/configs/model_columns.py,sha256=P1BZ8GSlQUXizVkfzxrN4Sglx5QCoS6UXwgXsoBU-4c,2503
141
+ clearskies/configs/model_destination_name.py,sha256=g9K6ywOf31NKCo1zZ4kHuWaJr1dIDiBzdnVW6Eugv7I,978
142
+ clearskies/configs/model_to_id_column.py,sha256=0nssvknsv8t59uBMjOH0mUa9fxvcMHHgz4G_UZyeLpg,1579
143
+ clearskies/configs/readable_model_column.py,sha256=_iCjLa45qKPAR8nCa8lvjhms4QGAhYWhJxK2Om2p2CA,352
144
+ clearskies/configs/readable_model_columns.py,sha256=slyq-nvQSu4zIKUouejopoee7GIp2DRdX6Jf1ZJCq54,356
145
+ clearskies/configs/schema.py,sha256=W7xK5EOvZbbi2H5CgT4iifefrR2-XJXBNNx4f8t7j7o,766
146
+ clearskies/configs/searchable_model_columns.py,sha256=PVSe9J6cGyWRCAFwqstVIVTEGTwMDPGi-Nwo5zmkm8w,362
147
+ clearskies/configs/security_headers.py,sha256=wNtoUsghhec-NNZl9dSIRxTTApYw2vukbslYI-YY968,1403
148
+ clearskies/configs/select.py,sha256=TaiCbNGaSsLc6lJ_0_67PXgYDXhoDwd_T_KygKSPB-0,1057
149
+ clearskies/configs/select_list.py,sha256=ctqJW523C7UEhjahn_sWL1nlK-4OZrP01n_y1PV770s,1925
150
+ clearskies/configs/string.py,sha256=T65R8zvftpn-SZDxjS4ZqStBp1LWYwK9KkqH7WMK19o,1117
151
+ clearskies/configs/string_dict.py,sha256=vE1Q9HImvu5erMvCFnU73M4SUAhL6nnYr3-szp-axRg,1392
152
+ clearskies/configs/string_list.py,sha256=qJQFn0QxVfs3WeMfKTK40GQV-zeKQSJ-wvnhAjj8uqY,1760
153
+ clearskies/configs/string_list_or_callable.py,sha256=dOMwWAkDrQf2we3Sn7GkNBqxhvEXqtQIOoIib52YIZg,2020
154
+ clearskies/configs/string_or_callable.py,sha256=2Bg05AYN6j3v4ttFOmD-EBGfYpok67yiuFXnTTUhhNo,702
155
+ clearskies/configs/timedelta.py,sha256=Seuu9PexoWPqayybBjHlsDlx_EEe50BTfGOGKKecONc,703
156
+ clearskies/configs/timezone.py,sha256=JL6bjrCS4XdJzrRdhO5kZrMIhvxfNxsvvQ7EQrT0DOo,719
157
+ clearskies/configs/url.py,sha256=dVxvDfBHhVHMYcldz1jKbKvB83C4Ze4O_sEKOXXRAWU,811
158
+ clearskies/configs/validators.py,sha256=aAvf5dgncR8OP7_M7QUNhsHau4wAdPiXw9wNARRAYNY,1346
159
+ clearskies/configs/writeable_model_column.py,sha256=22pMoOAwYjvhHBcFrBb6ImtuoahbDKd5jZrNsbykrw4,355
160
+ clearskies/configs/writeable_model_columns.py,sha256=vQFh5w6ToC8SDi_GaEvy33csp2CTFIroAfOLigHjFKo,359
161
+ clearskies/contexts/__init__.py,sha256=f7XVUq2UKlDH6fjmcUWk6lbe9p_OaGpZ5ZjM6CuwTGQ,247
162
+ clearskies/contexts/cli.py,sha256=cuGWoyRhHlO_Ba6Dozg3sGob1VZoI4TBFOLu-2Udabk,2838
163
+ clearskies/contexts/context.py,sha256=RFIJbpP32iv0NuvepCNldrFRYMWTbGssM_nduBDJLh8,3640
164
+ clearskies/contexts/wsgi.py,sha256=gS6eJxtDsae2sFNP3v7lhFqK5KfVTHjs9uGYqKS63Mw,3131
165
+ clearskies/contexts/wsgi_ref.py,sha256=aFJ40hqAwvYcftXESMvJz5W58c2qWK3BUYeksEMi5KU,2770
166
+ clearskies/cursors/__init__.py,sha256=_76wY9nT7rJg-Eg7jZpVykypj-RRzlZAnK3oBjaee0M,353
167
+ clearskies/cursors/cursor.py,sha256=CM2pwVVribr8B6yxvYA2h6I1JN729G8RieB6eQpwrs8,5272
168
+ clearskies/cursors/mysql.py,sha256=_2BPaNTdGon98DEv6FtauF8ACgkZeBWHxFj2ul-VwXs,1970
169
+ clearskies/cursors/postgresql.py,sha256=aDi2v7xNdiZU9on4hDd-Isf8EY1boQghZMtDAICIYFg,1968
170
+ clearskies/cursors/sqlite.py,sha256=_8n2bTnOeZa3StztjkbM9sj1PV4QLCHfAoXDBwMZYV0,2204
171
+ clearskies/cursors/from_environment/__init__.py,sha256=5OdhiiN2SMLCCktvKJPK1-qzxQ-io3SDUDaHXCa75VM,237
172
+ clearskies/cursors/from_environment/mysql.py,sha256=W1xFq1csfo8ooPMeN0Gcs3dVJOziKfTaDyFOXmpRoEs,2465
173
+ clearskies/cursors/from_environment/postgresql.py,sha256=EQ_0U9LLnma11isoq2YR_tueLI7Vl7DzZdG_H52uei0,2330
174
+ clearskies/cursors/from_environment/sqlite.py,sha256=WJAx_wHMciEfBgT1SEW8cNay8hA-TXAe6o6S5nVTKVU,1400
175
+ clearskies/di/__init__.py,sha256=Ab8GNv9ZksnCABq8n2gCcyLEAXD-5-kX4O8PweTJIFs,474
176
+ clearskies/di/additional_config.py,sha256=65INxw8aqTZQsyaKPj-aQmd6FBe4_4DwibXGgWYBy14,5139
177
+ clearskies/di/additional_config_auto_import.py,sha256=XYw0Kcnp6hp-ee-c0YjiATwJvRb2E82xk9PuoX9dGRY,758
178
+ clearskies/di/di.py,sha256=MbGq6k7QsRHgc2ca9kRD4TmKFWY8tRhrwoo4AWeP5-Y,44601
179
+ clearskies/di/injectable.py,sha256=sdab7Z5ex4dN8M_KKqvfTSbwNPJC5W2DIjMFZC75gcM,1206
180
+ clearskies/di/injectable_properties.py,sha256=yJP0J7l7tjG2soyXtrfDgktE7M8tQHaP-55Cmtq0b7M,6466
181
+ clearskies/di/inject/__init__.py,sha256=SpcJha11ecJmTCylggDGy0R0t53ys_C5uz2VfebgBR4,704
182
+ clearskies/di/inject/akeyless_sdk.py,sha256=To_rhvQJuBA6SjmxRtvIVOaXreWIwwhO7hm0ELq_nCI,456
183
+ clearskies/di/inject/by_class.py,sha256=IbT9jCmz0OwRZXiXH_aSW99w5PIVjA0CShxZ9L-NMdw,871
184
+ clearskies/di/inject/by_name.py,sha256=bA38VfESRJBG_r2rlxFIZgxdxMpaMFbaQBCB4EYMJUw,715
185
+ clearskies/di/inject/di.py,sha256=LUxV6-jHEqUVhv-vNjoZZ_xOg7fS5hXG1opO9XbwRuc,350
186
+ clearskies/di/inject/environment.py,sha256=PinnXjG72gUNwI2cZVYlJuXAGbcmR8AJLwcHhbjnb-k,508
187
+ clearskies/di/inject/input_output.py,sha256=xduONbW64AutfHo3In-C2Ga735IRvj_oO9_qw3aohBc,539
188
+ clearskies/di/inject/logger.py,sha256=kHvI7jdZ_Ja_XxvLA21fJgv9XxHUIVHCaYqeWxbmwio,418
189
+ clearskies/di/inject/now.py,sha256=9cl_WqE83z1XWPXOIC-9xMVWLMlVaP4dSnfQlO_RugE,434
190
+ clearskies/di/inject/requests.py,sha256=rGWB5PWJLwM-yu6Wdry7vORj9y7W6N2hcDvtooIhsNY,442
191
+ clearskies/di/inject/secrets.py,sha256=yMrQ_Zrma3uoTc9HiG5bmsf-lxbcBvhys6s_5PgWfGg,484
192
+ clearskies/di/inject/utcnow.py,sha256=QgRz0gYJIKVPXGfKeThz6EmLQHCM7eCZSMu4F0Qb0MM,440
193
+ clearskies/di/inject/uuid.py,sha256=9pG5Fao1RC3lVEx-DLrfZD7IaikOKoTj0Wv2W_pK8v4,447
194
+ clearskies/endpoints/__init__.py,sha256=payWNEivwmxsT-pWqNkzHisSbyNjB7oq7_I5QIQL_XA,750
195
+ clearskies/endpoints/advanced_search.py,sha256=FXbY1-VBf9qtsYAvXaqxLpR1FNUFhfB5EhhIx6fVDHk,21397
196
+ clearskies/endpoints/callable.py,sha256=8fUNR19Vo-OehZCJ8IaxNaAAgfKg2MMXzXdv5XKfqOw,13735
197
+ clearskies/endpoints/create.py,sha256=lrzd2iDZMn5sSOl4WXPlUJMnM5VlZrWVpK7IF-oDqOk,8904
198
+ clearskies/endpoints/delete.py,sha256=VXaq9o-fetBpQwP-xJANLv-_dGAGpwpR6qKRLtMn3yM,5081
199
+ clearskies/endpoints/get.py,sha256=DkhnSyb0jg_ppKMEtobayOndOtU6ktNYCJbQgrvIR4Q,9986
200
+ clearskies/endpoints/health_check.py,sha256=d4qL6dWGNySkZUiBgxuHAQQyUYJcPC7vygERK8jho-U,5421
201
+ clearskies/endpoints/list.py,sha256=nsCnCKGIb9z5jdUs1ALlSTxbkGVlIlZ5n9yk2-lT3dc,25443
202
+ clearskies/endpoints/restful_api.py,sha256=OnsYbCepxPdf8JIvzbslXOaS7-nLfjwv1C0sazr996E,15981
203
+ clearskies/endpoints/schema.py,sha256=7VoRNHnHEAkVPAGCaOVTlTfodt2V5tgGEc4XF28Dd38,7188
204
+ clearskies/endpoints/simple_search.py,sha256=zDXXgLxrn3g9YvQMOveCXWtWOI-wylCewYhBo7hknjc,9473
205
+ clearskies/endpoints/update.py,sha256=4Im2uL25hc_zFn49OhZ3HXLlxOLJPidgoQ4GfR0QCMY,7704
206
+ clearskies/exceptions/__init__.py,sha256=eFCYGp2Pk21kKibGJvJfh2tcn_oxm4wCkR-SbWUp_EI,691
207
+ clearskies/exceptions/authentication.py,sha256=VlNS0Aq2_6LbG0jiE8jULpS54jNW8a8px0gPrK3EZCc,42
208
+ clearskies/exceptions/authorization.py,sha256=14JuU5zLEf2sv82VNxsJt7dGSwfP-t3Pvf_6QZuacfA,41
209
+ clearskies/exceptions/client_error.py,sha256=o1OGnjlXT5zZ1Vb2LTRPYIio0YAnXPpXDGuqSLQP9_Y,39
210
+ clearskies/exceptions/input_errors.py,sha256=cTEFhWKb6zGZ0NCE8s3eyjB2vZpeUVuBaFPg25ThAn0,137
211
+ clearskies/exceptions/missing_dependency.py,sha256=mdzD35at7qM2ymht5vZYgt136Pse4ySr_DyVKcr-L2w,45
212
+ clearskies/exceptions/moved_permanently.py,sha256=fcgU_VBtAe8ZnbyNoNpXDcTQ8UtsjdoYg4Z3Ry2gXmc,110
213
+ clearskies/exceptions/moved_temporarily.py,sha256=Pt3muYHASvgOC50wPmoul9hUfy3Ud_NPSGFxshNWbIk,110
214
+ clearskies/exceptions/not_found.py,sha256=_lZwovDrd18dUHDop5pF4mhexBPNr126xF2gOLA2-EA,36
215
+ clearskies/functional/__init__.py,sha256=yXnbX-pjW6MOaBTjIzogvSJZ6O9dbUAWOalhu0WSDiQ,106
216
+ clearskies/functional/json.py,sha256=gKyLl_DNfSv1XddTQH6HtdOjqrhUXaRs_uImTh0Lei0,1594
217
+ clearskies/functional/routing.py,sha256=tfIvP_Y29GTGr91_1ec3LSQFoTRwpkqU4BYHXPnBaXA,3685
218
+ clearskies/functional/string.py,sha256=ZnkOjx8nxqZq2TV0CIb-Kz4onGoyekTX_WkLJM6XTmM,3311
219
+ clearskies/functional/validations.py,sha256=cPYOTwWomlQrPvqPP_Jdlds7zZ5H9GABCP5pnGzC9T4,2821
220
+ clearskies/input_outputs/__init__.py,sha256=9qeKJULw3MQ3zqkgBZice5d7qqRgsP3y-wkhWO2Y9vM,362
221
+ clearskies/input_outputs/cli.py,sha256=t7uWqLi6VI3i_zuyoKLdIq3vUwr19lQZoJmuAxVEvgg,5741
222
+ clearskies/input_outputs/headers.py,sha256=AnyqI64kploPX7qiBfQCD9w8b2FYWVIuwaXVafbpIiM,2085
223
+ clearskies/input_outputs/input_output.py,sha256=YdRjLbzJfvHC3lL4HE2rioQooH2Mp6OoiWfNk904fJY,5229
224
+ clearskies/input_outputs/programmatic.py,sha256=OCRq0M42cKZKgk4YAfJyTWo3T4jNRmnGmVr7zCTovpg,1658
225
+ clearskies/input_outputs/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
226
+ clearskies/input_outputs/wsgi.py,sha256=qqU_3KeVt5oeZvqygQ2lSxkcmTCsGX7z0R8Zx1DVhag,2783
227
+ clearskies/input_outputs/exceptions/__init__.py,sha256=ONAtr46SecnF96TJkjWWJfVfSXWbJrOaAnkN-f6fKs4,137
228
+ clearskies/input_outputs/exceptions/cli_input_error.py,sha256=kOFU8aLTLmeTL_AKDshxMu8_ufildg6p8ndhE1xHfb0,41
229
+ clearskies/input_outputs/exceptions/cli_not_found.py,sha256=JBBuZA9ZwdkPhd3a0qaGgEPQrxh1fehy4R3ZaV2gWXU,39
230
+ clearskies/query/__init__.py,sha256=ISF80_cG3rd574sRTdKKPxAdlSjtQh_ClXKKs_MSSSo,277
231
+ clearskies/query/condition.py,sha256=5N9RKO3ZS2WpmhpOwemckqict_xzyLrCLM0iHPHaNCQ,8887
232
+ clearskies/query/join.py,sha256=4lrDUQzck7klKY_VYkc4SVK95SVwyy3SVTvasnsAEyc,4713
233
+ clearskies/query/query.py,sha256=WFZBc8ok0GcpvuoRpGmJtdCCVlnt25eyXUBDI4UE7Hw,6115
234
+ clearskies/query/sort.py,sha256=c-EtIkjg3kLjwSTdXD7sfyx-mNUhAepUV-2izprh3iY,754
235
+ clearskies/secrets/__init__.py,sha256=G-A8YhCMlS_OdboSeKzCZp6iwfqwU4BPEnB5HvD88wY,142
236
+ clearskies/secrets/akeyless.py,sha256=iWsjn4-vuaZZyXsz-r-PqtTJfD6r9hd8uava-UVOdFQ,19399
237
+ clearskies/secrets/secrets.py,sha256=z9ouvwTwdyyOFmaCCWMRR6T9capRWFHswz563OA-JzE,1566
238
+ clearskies/secrets/additional_configs/__init__.py,sha256=cFCrbtKF5nuR061S2y1iKZp349x-y8Srdwe3VZbfSFU,1119
239
+ clearskies/secrets/additional_configs/mysql_connection_dynamic_producer.py,sha256=CnIiXLVQdUnUey3dbCTXuNNP7Mmw1gjjNjZiBtfgGto,2757
240
+ clearskies/secrets/additional_configs/mysql_connection_dynamic_producer_via_ssh_cert_bastion.py,sha256=N8ruxrTNhvYlp3cYXq6V78KPPr4n40LM7QoXHvD8IZg,6235
241
+ clearskies/secrets/exceptions/__init__.py,sha256=HtcwEuKzu3tRLq3FeXUN0UhaEGqukL5vntuBbX47DzM,209
242
+ clearskies/secrets/exceptions/not_found_error.py,sha256=9NT1g4Q94PRteYl9coiLVbqbHTlkrd-C-KQKG5clz9Q,41
243
+ clearskies/secrets/exceptions/permissions_error.py,sha256=6oxKMDLZLmoZZFB9PMZxWQgsaQXoX2V6qWn-LAckHt0,44
244
+ clearskies/security_headers/__init__.py,sha256=JUpc4Y8dNBinDQAkP7OOABR7N787-lRR23boSWmY6Us,285
245
+ clearskies/security_headers/cache_control.py,sha256=gD1070vxwDJXQi8R3qIIR6hsOpVaaEV3-I52Up1DfM4,2143
246
+ clearskies/security_headers/cors.py,sha256=RqqakKH13JXCp0ybkf7YFGEKDR5Xg7a1lfk47AAI7CU,1778
247
+ clearskies/security_headers/csp.py,sha256=hms81Jw9VWzDRWdk5P7o3oq7LOOElpuGwhnIpwfPxpE,2747
248
+ clearskies/security_headers/hsts.py,sha256=BeNrxxxrIWNxbF2Rb1fmOgmbF3rp1i5ve7iXh3Qr7q4,723
249
+ clearskies/security_headers/x_content_type_options.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
250
+ clearskies/security_headers/x_frame_options.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
251
+ clearskies/validators/__init__.py,sha256=v7TK6PlSjJxIuhx_aCoocBUCF-8DxNWWpYmoR7uOe6I,1247
252
+ clearskies/validators/after_column.py,sha256=GqZTdwNlkkLYD5_UJExih5aOksMBKJ4Trvr56PhBPsk,2309
253
+ clearskies/validators/before_column.py,sha256=jv5sUCeTwkkn-d1AFGaJccZdthc0o6rQASBT_vLHZbE,564
254
+ clearskies/validators/in_the_future.py,sha256=xx2Du7iTsXWth5KWdyjnYb7iOYpFjjPxSZ1p69Ay54A,901
255
+ clearskies/validators/in_the_future_at_least.py,sha256=pUCOBVZxPSFwwvXJdo_1GicZNPqlB__ftyyEW9QcQaQ,443
256
+ clearskies/validators/in_the_future_at_most.py,sha256=TgFfqhLsnrQXcdFKdfkaNWnPdj8tHr-Q_94SzFVWcoc,397
257
+ clearskies/validators/in_the_past.py,sha256=8eb79Q9feHL5rLsQdoOYIEsHegUiXI4zkH5Sl84G2o8,897
258
+ clearskies/validators/in_the_past_at_least.py,sha256=FT8rfs2-5Sd933Uql6-pwFRvvcPPXWq8hpobtkGr2z0,395
259
+ clearskies/validators/in_the_past_at_most.py,sha256=AFJoIlA3xeoJtWKh-2-PG6A97_FMHwt4Yk3G9TRNLzA,393
260
+ clearskies/validators/maximum_length.py,sha256=VxKvonpF58ng5icGt2d2BC2dWjXtNfnynjr95LZVYHg,843
261
+ clearskies/validators/maximum_value.py,sha256=icdUN1AbT5c5SXpxDRks3954GRIUqu0FdpT6TeZFT2Q,855
262
+ clearskies/validators/minimum_length.py,sha256=2ukRKH35gdnjz9VezclIFCf3JtbN7iCbLSjlPNdaOyY,844
263
+ clearskies/validators/minimum_value.py,sha256=ZyG2S_-4lbbMbf7PUemEyAT-r4-gjJMUdEWccMam9H0,856
264
+ clearskies/validators/required.py,sha256=GWxyexwj-K6DunZWNEnZxW6tQGAFd4oOCvQrW1s1K9k,1308
265
+ clearskies/validators/timedelta.py,sha256=DJ0pTm-SSUtjZ7phGoD6vjb086vXPzvLLijkU-jQlOs,1892
266
+ clearskies/validators/unique.py,sha256=X7qGv_BfskNJWnYCt6vDHbvpBiHym58yLjXk5ZnhAlg,975
267
+ clear_skies-2.0.27.dist-info/METADATA,sha256=bBUfaFZbVqEC-uBi_smsoYYb_-pfj_wslfwlayT36_g,2275
268
+ clear_skies-2.0.27.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
269
+ clear_skies-2.0.27.dist-info/licenses/LICENSE,sha256=3Ehd0g3YOpCj8sqj0Xjq5qbOtjjgk9qzhhD9YjRQgOA,1053
270
+ clear_skies-2.0.27.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.28.0
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,7 @@
1
+ Copyright 2021 Conor Mancone
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4
+
5
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6
+
7
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
clearskies/__init__.py ADDED
@@ -0,0 +1,69 @@
1
+ from . import (
2
+ authentication,
3
+ autodoc,
4
+ backends,
5
+ clients,
6
+ columns,
7
+ configs,
8
+ contexts,
9
+ cursors,
10
+ decorators,
11
+ di,
12
+ endpoints,
13
+ exceptions,
14
+ functional,
15
+ input_outputs,
16
+ query,
17
+ secrets,
18
+ security_headers,
19
+ validators,
20
+ )
21
+ from .action import Action
22
+ from .column import Column
23
+ from .configurable import Configurable
24
+ from .end import End # type: ignore
25
+ from .endpoint import Endpoint
26
+ from .endpoint_group import EndpointGroup
27
+ from .environment import Environment
28
+ from .model import Model
29
+ from .schema import Schema
30
+ from .security_header import SecurityHeader
31
+ from .validator import Validator
32
+ from .loggable import Loggable
33
+
34
+ import logging
35
+
36
+ logging.getLogger(__name__)
37
+
38
+ __all__ = [
39
+ "Action",
40
+ "authentication",
41
+ "autodoc",
42
+ "backends",
43
+ "clients",
44
+ "Column",
45
+ "columns",
46
+ "configs",
47
+ "Configurable",
48
+ "contexts",
49
+ "cursors",
50
+ "di",
51
+ "input_outputs",
52
+ "End",
53
+ "Endpoint",
54
+ "EndpointGroup",
55
+ "endpoints",
56
+ "Environment",
57
+ "Loggable",
58
+ "exceptions",
59
+ "functional",
60
+ "Model",
61
+ "Schema",
62
+ "Validator",
63
+ "query",
64
+ "secrets",
65
+ "SecurityHeader",
66
+ "security_headers",
67
+ "validators",
68
+ "decorators",
69
+ ]
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
@@ -0,0 +1,15 @@
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
7
+
8
+ __all__ = [
9
+ "Authentication",
10
+ "Authorization",
11
+ "AuthorizationPassThrough",
12
+ "Jwks",
13
+ "Public",
14
+ "SecretBearer",
15
+ ]
@@ -0,0 +1,44 @@
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
+ """Authentication."""
16
+
17
+ is_public = True
18
+ can_authorize = False
19
+ has_dynamic_credentials = False
20
+
21
+ def clear_credential_cache(self) -> None:
22
+ pass
23
+
24
+ def headers(self, retry_auth: bool = False) -> dict[str, str]:
25
+ return {}
26
+
27
+ def authenticate(self, input_output) -> bool:
28
+ return True
29
+
30
+ def authorize(self, authorization: Authorization):
31
+ raise ValueError("Public endpoints do not support authorization")
32
+
33
+ def set_headers_for_cors(self, cors: Cors):
34
+ pass
35
+
36
+ def documentation_security_scheme(self) -> dict[str, Any]:
37
+ return {}
38
+
39
+ def documentation_security_scheme_name(self) -> str:
40
+ return ""
41
+
42
+ def __call__(self, request: requests.models.PreparedRequest) -> requests.models.PreparedRequest:
43
+ request.headers = {**request.headers, **self.headers()} # type: ignore
44
+ return request
@@ -0,0 +1,23 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import TYPE_CHECKING
4
+
5
+ if TYPE_CHECKING:
6
+ from clearskies.input_outputs.input_output import InputOutput
7
+ from clearskies.model import Model
8
+
9
+
10
+ class Authorization:
11
+ """Authorization."""
12
+
13
+ def gate(self, authorization_data, input_output: InputOutput) -> bool:
14
+ """
15
+ Return True/False to denote if the given user, as represented by the authorization data, should be allowed access.
16
+
17
+ Raise clearskies.exceptions.ClientError if you want to raise a specific error message.
18
+ """
19
+ return True
20
+
21
+ def filter_model(self, model: Model, authorization_data, input_output: InputOutput) -> Model:
22
+ """Return a models object with additional filters applied to account for authorization needs."""
23
+ return model
@@ -0,0 +1,22 @@
1
+ from typing import Any
2
+
3
+ from clearskies import di
4
+
5
+ from .jwks import Jwks
6
+
7
+
8
+ class AuthorizationPassThrough(Jwks):
9
+ """
10
+ Authentication class with pass through.
11
+
12
+ This authentication class takes the authentication header from the incoming request and reflects
13
+ it on outgoing requests.
14
+ """
15
+
16
+ """
17
+ The input output helper
18
+ """
19
+ input_output = di.inject.InputOutput()
20
+
21
+ def headers(self, retry_auth: bool = False) -> dict[str, Any]:
22
+ return {"Authorization": self.input_output.request_headers.get("authorization", True)}