clear-skies 2.0.7__py3-none-any.whl → 2.0.9__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 (153) hide show
  1. {clear_skies-2.0.7.dist-info → clear_skies-2.0.9.dist-info}/METADATA +1 -1
  2. clear_skies-2.0.9.dist-info/RECORD +256 -0
  3. clearskies/__init__.py +2 -2
  4. clearskies/authentication/authentication.py +1 -3
  5. clearskies/authentication/authorization.py +12 -5
  6. clearskies/authentication/authorization_pass_through.py +5 -3
  7. clearskies/authentication/jwks.py +25 -23
  8. clearskies/authentication/secret_bearer.py +15 -17
  9. clearskies/autodoc/schema/schema.py +1 -1
  10. clearskies/backends/api_backend.py +50 -56
  11. clearskies/backends/backend.py +14 -14
  12. clearskies/backends/cursor_backend.py +17 -23
  13. clearskies/backends/memory_backend.py +27 -30
  14. clearskies/backends/secrets_backend.py +13 -18
  15. clearskies/column.py +44 -56
  16. clearskies/columns/audit.py +14 -13
  17. clearskies/columns/belongs_to_id.py +10 -15
  18. clearskies/columns/belongs_to_model.py +6 -9
  19. clearskies/columns/belongs_to_self.py +13 -9
  20. clearskies/columns/boolean.py +13 -16
  21. clearskies/columns/category_tree.py +9 -11
  22. clearskies/columns/category_tree_children.py +2 -3
  23. clearskies/columns/category_tree_descendants.py +1 -1
  24. clearskies/columns/created.py +8 -11
  25. clearskies/columns/created_by_authorization_data.py +7 -9
  26. clearskies/columns/created_by_header.py +12 -8
  27. clearskies/columns/created_by_ip.py +6 -8
  28. clearskies/columns/created_by_routing_data.py +12 -7
  29. clearskies/columns/created_by_user_agent.py +6 -9
  30. clearskies/columns/date.py +12 -14
  31. clearskies/columns/datetime.py +19 -17
  32. clearskies/columns/email.py +3 -1
  33. clearskies/columns/float.py +10 -14
  34. clearskies/columns/has_many.py +8 -10
  35. clearskies/columns/has_many_self.py +13 -7
  36. clearskies/columns/has_one.py +2 -0
  37. clearskies/columns/integer.py +9 -11
  38. clearskies/columns/json.py +10 -12
  39. clearskies/columns/many_to_many_ids.py +14 -16
  40. clearskies/columns/many_to_many_ids_with_data.py +16 -16
  41. clearskies/columns/many_to_many_models.py +5 -7
  42. clearskies/columns/many_to_many_pivots.py +3 -5
  43. clearskies/columns/phone.py +12 -9
  44. clearskies/columns/select.py +12 -9
  45. clearskies/columns/string.py +1 -1
  46. clearskies/columns/timestamp.py +15 -15
  47. clearskies/columns/updated.py +8 -10
  48. clearskies/columns/uuid.py +7 -10
  49. clearskies/configs/__init__.py +8 -0
  50. clearskies/configs/any.py +2 -0
  51. clearskies/configs/any_dict.py +2 -0
  52. clearskies/configs/any_dict_or_callable.py +2 -0
  53. clearskies/configs/boolean.py +2 -0
  54. clearskies/configs/boolean_or_callable.py +2 -0
  55. clearskies/configs/callable_config.py +2 -0
  56. clearskies/configs/config.py +2 -0
  57. clearskies/configs/datetime.py +2 -0
  58. clearskies/configs/datetime_or_callable.py +2 -0
  59. clearskies/configs/email.py +10 -0
  60. clearskies/configs/email_list.py +17 -0
  61. clearskies/configs/email_list_or_callable.py +19 -0
  62. clearskies/configs/email_or_email_list_or_callable.py +59 -0
  63. clearskies/configs/float.py +2 -0
  64. clearskies/configs/float_or_callable.py +2 -0
  65. clearskies/configs/integer.py +2 -0
  66. clearskies/configs/integer_or_callable.py +2 -0
  67. clearskies/configs/list_any_dict.py +2 -0
  68. clearskies/configs/list_any_dict_or_callable.py +2 -0
  69. clearskies/configs/model_column.py +2 -0
  70. clearskies/configs/model_columns.py +2 -0
  71. clearskies/configs/model_destination_name.py +2 -1
  72. clearskies/configs/model_to_id_column.py +2 -0
  73. clearskies/configs/readable_model_column.py +2 -0
  74. clearskies/configs/readable_model_columns.py +2 -0
  75. clearskies/configs/searchable_model_columns.py +2 -0
  76. clearskies/configs/select.py +2 -0
  77. clearskies/configs/select_list.py +2 -0
  78. clearskies/configs/string.py +4 -2
  79. clearskies/configs/string_dict.py +2 -0
  80. clearskies/configs/string_list.py +17 -2
  81. clearskies/configs/string_list_or_callable.py +13 -0
  82. clearskies/configs/timedelta.py +2 -0
  83. clearskies/configs/timezone.py +2 -0
  84. clearskies/configs/url.py +2 -0
  85. clearskies/configs/writeable_model_column.py +2 -0
  86. clearskies/configs/writeable_model_columns.py +2 -0
  87. clearskies/configurable.py +2 -0
  88. clearskies/contexts/cli.py +9 -1
  89. clearskies/contexts/context.py +13 -14
  90. clearskies/contexts/wsgi.py +12 -10
  91. clearskies/contexts/wsgi_ref.py +12 -6
  92. clearskies/decorators.py +1 -1
  93. clearskies/decorators.pyi +10 -0
  94. clearskies/di/di.py +7 -6
  95. clearskies/di/inject/by_class.py +2 -0
  96. clearskies/di/inject/by_name.py +2 -0
  97. clearskies/di/inject/di.py +2 -0
  98. clearskies/di/inject/environment.py +1 -1
  99. clearskies/di/inject/now.py +2 -0
  100. clearskies/di/inject/requests.py +2 -0
  101. clearskies/di/inject/secrets.py +2 -2
  102. clearskies/di/inject/utcnow.py +2 -0
  103. clearskies/di/inject/uuid.py +2 -2
  104. clearskies/end.py +45 -7
  105. clearskies/endpoint.py +43 -59
  106. clearskies/endpoint_group.py +15 -18
  107. clearskies/endpoints/advanced_search.py +19 -26
  108. clearskies/endpoints/callable.py +10 -16
  109. clearskies/endpoints/create.py +6 -10
  110. clearskies/endpoints/delete.py +5 -11
  111. clearskies/endpoints/get.py +11 -15
  112. clearskies/endpoints/health_check.py +9 -11
  113. clearskies/endpoints/list.py +29 -36
  114. clearskies/endpoints/restful_api.py +43 -53
  115. clearskies/endpoints/schema.py +14 -18
  116. clearskies/endpoints/simple_search.py +5 -12
  117. clearskies/endpoints/update.py +6 -11
  118. clearskies/environment.py +2 -0
  119. clearskies/input_outputs/cli.py +2 -0
  120. clearskies/input_outputs/headers.py +2 -0
  121. clearskies/input_outputs/input_output.py +15 -15
  122. clearskies/input_outputs/programmatic.py +2 -2
  123. clearskies/input_outputs/wsgi.py +2 -2
  124. clearskies/model.py +120 -25
  125. clearskies/query/query.py +1 -4
  126. clearskies/secrets/__init__.py +2 -1
  127. clearskies/secrets/akeyless.py +16 -11
  128. clearskies/secrets/secrets.py +7 -2
  129. clearskies/security_header.py +4 -2
  130. clearskies/security_headers/cache_control.py +15 -14
  131. clearskies/security_headers/cors.py +10 -9
  132. clearskies/security_headers/csp.py +25 -24
  133. clearskies/security_headers/hsts.py +6 -5
  134. clearskies/typing.py +1 -1
  135. clearskies/validator.py +5 -6
  136. clearskies/validators/after_column.py +6 -7
  137. clearskies/validators/before_column.py +2 -0
  138. clearskies/validators/in_the_future.py +5 -8
  139. clearskies/validators/in_the_future_at_least.py +2 -0
  140. clearskies/validators/in_the_future_at_most.py +2 -0
  141. clearskies/validators/in_the_past.py +5 -8
  142. clearskies/validators/in_the_past_at_least.py +2 -0
  143. clearskies/validators/in_the_past_at_most.py +2 -0
  144. clearskies/validators/maximum_length.py +4 -5
  145. clearskies/validators/maximum_value.py +4 -4
  146. clearskies/validators/minimum_length.py +4 -4
  147. clearskies/validators/minimum_value.py +4 -4
  148. clearskies/validators/required.py +2 -4
  149. clearskies/validators/timedelta.py +8 -9
  150. clearskies/validators/unique.py +2 -3
  151. clear_skies-2.0.7.dist-info/RECORD +0 -251
  152. {clear_skies-2.0.7.dist-info → clear_skies-2.0.9.dist-info}/WHEEL +0 -0
  153. {clear_skies-2.0.7.dist-info → clear_skies-2.0.9.dist-info}/licenses/LICENSE +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: clear-skies
3
- Version: 2.0.7
3
+ Version: 2.0.9
4
4
  Summary: A framework for building backends in the cloud
5
5
  Project-URL: Documentation, https://clearskies.io/
6
6
  Project-URL: Repository, https://github.com/clearskies-py/clearskies
@@ -0,0 +1,256 @@
1
+ clearskies/__init__.py,sha256=ZLqk4l_EceMNlgnM0Jw5vt28jMWE0fqHHVuD4OwWL2Y,1119
2
+ clearskies/action.py,sha256=x_T05XaC0m-BYPZWaSR94XbE7T5ZK1vRtSfEszfZuDg,121
3
+ clearskies/column.py,sha256=3zAc5pc8zo4ws0mEU5GfbuvljkpAJJlAxmAf8lBKAVA,51299
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=5XdtQ2Zfe7Ifqf8AvMvswtyYzxKgTTSuENxUOgym5HM,10688
8
+ clearskies/endpoint.py,sha256=cAbba47XbeRl_XKOsl0p2yTECOQ19rAIVryIoEHt3_M,47972
9
+ clearskies/endpoint_group.py,sha256=qsxQpt1i6IRvQqhQkt_udoVj0TMdoIOccvKyEBaeaEg,12343
10
+ clearskies/environment.py,sha256=BbNgQH3uuCTxoHeLB9O1_HsPTaJL5aiXqY6hZ9aj-jo,3739
11
+ clearskies/model.py,sha256=1cCx1KcAOK6_MHBdgtWdu4lZMYuPQaWHSrXsdW4v7V8,77545
12
+ clearskies/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
+ clearskies/schema.py,sha256=9S0RuFBiydsDy4kATy2BBsXJ9aWHILW0ja_q9F4kxb0,2872
14
+ clearskies/security_header.py,sha256=_RsQEJahVTIB8m8IIgQgYk8NhX_6QJqRJpQDh2NETNo,467
15
+ clearskies/test_base.py,sha256=Nw6qwsPMOx-QT_6wXn6f9P4BcA7OeGrs83IC2naNMYY,205
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=_-peGZC9vDcIxuPXFObvIGX_GA04aOfewVNngrdbCDA,4857
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=WHEWQvhuhkw82V4YS6GwDN4y8Qy7QDSn9awJEhwLmWU,2939
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=krBB3gHLP-lVYkm5ksdK7teEtouAHhL3EC__WGVnF4A,3157
65
+ clearskies/backends/api_backend.py,sha256=4xcAymjkAgIA_9H68owe2Y9D4omxRnq6tnp_0RTIEhc,54133
66
+ clearskies/backends/backend.py,sha256=XzFBsUP4lwX2c2_zeK4Hch1MlT3YJS1ffxolUHoJXqA,5797
67
+ clearskies/backends/cursor_backend.py,sha256=5YBO0EwxU_1YKIL3_fIbA93sh7NG4Qg8jpAMoIA5qiU,14139
68
+ clearskies/backends/memory_backend.py,sha256=H_2fib9EFdXsg3ZMMpC20DMHnrnYDbPgZnmiarbOhiM,33963
69
+ clearskies/backends/secrets_backend.py,sha256=6YVx154vhFLt_Fz0dz8wjQiVbaqBzPoUlfsYXU-9h7s,4044
70
+ clearskies/columns/__init__.py,sha256=a__-1hv-aMV3RU0Sd-BEkfItSJaG51EF2VeRQoTdka8,1990
71
+ clearskies/columns/audit.py,sha256=LRMUtmZE7ca-k_6A57J2bDUJzU1o6hU6aFwU7sXe8c0,7594
72
+ clearskies/columns/belongs_to_id.py,sha256=Ga3IpWlMy2_m8e5OK_iortNjHdMbF1RQF2tglWAzBVc,17575
73
+ clearskies/columns/belongs_to_model.py,sha256=nZ-yOs5CJx_WoMQ2wLLQfwSTfuF5vantEL0DFUgwC4Q,5714
74
+ clearskies/columns/belongs_to_self.py,sha256=cmgjxq4SmokGO2UbE0VlcFRXack9KjPLzyE9L3fNang,3725
75
+ clearskies/columns/boolean.py,sha256=pdkO7dxqIYCHX95C_yGo5vyvH_D0fO8zs0XgRN50zMQ,3713
76
+ clearskies/columns/category_tree.py,sha256=hqMlYQjVRlsU0PsC_M3_WWKkkzqw8wM5Xo-D4Mp9tIc,10967
77
+ clearskies/columns/category_tree_ancestors.py,sha256=FRFAMD3E6GzOzzLkY-IhWBdiYSpHHnthF5kX8V3iPr8,1380
78
+ clearskies/columns/category_tree_children.py,sha256=3FGgdVpok53ns-QPkYsJaWI7vbkRH7ZBsAu6YmWLZBA,5211
79
+ clearskies/columns/category_tree_descendants.py,sha256=Fm1XfQadk0SxeWOWuLWpEL9mk0Wqf373O0o-UxgdDdg,1228
80
+ clearskies/columns/created.py,sha256=qA415Co9YVLgXpZuzfUj77mVDwZNZ1HTV9CyeE9Zybw,2706
81
+ clearskies/columns/created_by_authorization_data.py,sha256=X_0M42X7U71GqIKm-AHN5rez4lYuHYgC_wfv5a_x8BI,4673
82
+ clearskies/columns/created_by_header.py,sha256=oMc1cSbjEhX3j6PKsv1d_vLG-LadcnPa-9gxZHv97xQ,3609
83
+ clearskies/columns/created_by_ip.py,sha256=O9N3bYN6KwF5yRD31Kd3jmurJ0M3fuc2davwaw189V0,2672
84
+ clearskies/columns/created_by_routing_data.py,sha256=VaeBNo4m610d0KufVHEBpRChw4W-Wx0ya8MPK9QpLn8,3630
85
+ clearskies/columns/created_by_user_agent.py,sha256=ZXFCEedMEgzND6OWs3K1LSeMyh7jNxMo3wfy2JgfIU4,2741
86
+ clearskies/columns/date.py,sha256=RDl1jWnm1JnydXM3bVHPx-waix5TlU-A6BYbuR1pi5c,8727
87
+ clearskies/columns/datetime.py,sha256=JGLq6VHY3DJw2US75weCNjGu-Mps3XqVQKn4ohplqcE,10728
88
+ clearskies/columns/email.py,sha256=JV98NrYh212hZM-9p3XulC1FPGcgE0NB7oncYEoFj8A,1912
89
+ clearskies/columns/float.py,sha256=k7_rltAcUB8rJ_dccdB6J0zRJ-9ZTNIbImo1cDetRe4,4401
90
+ clearskies/columns/has_many.py,sha256=sTTPGpYFUAlYLKk--F51TNrKWXNQ0zDl2PgdBAIvr_M,18521
91
+ clearskies/columns/has_many_self.py,sha256=UeuQcvzT6eYzuQ3Xd7vZdgRllrxoVS9WEv7C3YD2sPs,2407
92
+ clearskies/columns/has_one.py,sha256=aGApsKBpRBtRX9lWTgLrQJnW-E7NOWkS53dNWccRibI,432
93
+ clearskies/columns/integer.py,sha256=IGdJwPRWnQY_xUBajq7yekwPeBce8T2seKGJ5klmSjQ,4525
94
+ clearskies/columns/json.py,sha256=PFCuNbg32xF8L86VfpTmeTk44yzY5N3huoHUNjj1gy4,3557
95
+ clearskies/columns/many_to_many_ids.py,sha256=d8exu7LxR7OBtE7FeUOhGQSHpQw8lFkLovke_JzU3qI,14072
96
+ clearskies/columns/many_to_many_ids_with_data.py,sha256=GUafSHqjQ7V_HgsmzLSutZJuUAj4vVkJp_CvV7szYyk,11930
97
+ clearskies/columns/many_to_many_models.py,sha256=_DGAd2Kfbc-45m06srHCl9BWTun9YgdowDlsmOw-fMo,7319
98
+ clearskies/columns/many_to_many_pivots.py,sha256=x2LYOTxMPcyd0GhCdmHpMQfMCPQ7emKhzwmdtAMxAxw,5652
99
+ clearskies/columns/phone.py,sha256=AVNeNXm_A_CjD4W-QeJtsKHMIlMQc_DbpKFDxJKw9H4,5182
100
+ clearskies/columns/select.py,sha256=Huef3sp9JP2DRzXgNBurZfY4lsKn0RU4WmAj689HlWw,2714
101
+ clearskies/columns/string.py,sha256=Vyl1eb6RjW8q0a4AMqHI01vBLao9f7fkowNUumNoPqU,2594
102
+ clearskies/columns/timestamp.py,sha256=nIEbvg1YqKPjtEeFyYRnPPPSYB_lYIIUUm8zNoE8dE8,5810
103
+ clearskies/columns/updated.py,sha256=BFan3JnO2IEbryTGC2rR_RD1ruDcev49owPBYyjjSVI,3340
104
+ clearskies/columns/uuid.py,sha256=QE1UKHA9zt7bYd59rYRmzIHSonq9-sZeQbAIQtoJC54,2265
105
+ clearskies/configs/README.md,sha256=4-r2FvkrBTrKkcKgJ5O3Qj1RZ7nnkknenKze4XYlQDs,4827
106
+ clearskies/configs/__init__.py,sha256=X3U5l_oXYh9JTeiI7IZuzz1rq5TTO4HHIvcz5gLGa9s,5357
107
+ clearskies/configs/actions.py,sha256=5OwrokU8uTSSQ_6SvL94SOP5JVkvRRFGAXNcCdMt8aQ,1388
108
+ clearskies/configs/any.py,sha256=QSLOO955Lbg8NqYeyxdQGXTTyfFc5P036LORUa7avHc,388
109
+ clearskies/configs/any_dict.py,sha256=LECTIcCF22JXbAaZdWSmKh9UShRuRt8PydNCuj05ijI,907
110
+ clearskies/configs/any_dict_or_callable.py,sha256=5tfX4TQJhz3k8HY1uglLZD7CoRZnnM6aiFVEpdnCH54,1087
111
+ clearskies/configs/authentication.py,sha256=9XZClfYcECi5dzt1BvDof34tW6IotN252bcxlc_u2fc,842
112
+ clearskies/configs/authorization.py,sha256=Pa6wCyMitpKv2Nde69tMB5sJsxeCI2nVSdTuwF6R9pQ,828
113
+ clearskies/configs/boolean.py,sha256=Yj6fEKo85wQkalg7oHimn1ZU3lJGxCmKeFV1mvdXqIc,624
114
+ clearskies/configs/boolean_or_callable.py,sha256=vVyB1ES8IW_nX5ZzwumQy2EM7LctQ9M_8IB5BOnmNEU,745
115
+ clearskies/configs/callable_config.py,sha256=XgGkMfbZrqcUaU9RWe6l1DVN_TRTW0GN0mHaaCHfQ3g,686
116
+ clearskies/configs/columns.py,sha256=WhdpPUiwVqwBO2XCDDiMym2nWr_1-L1JoICyob4T6Wo,1258
117
+ clearskies/configs/conditions.py,sha256=a09bVac4-10ZtKPQGSu_e9VnHnwITwy_7_T4NekXpgs,1008
118
+ clearskies/configs/config.py,sha256=2qsF3ZBc8tsTXDgNLL7vT01kjWanbJH3oXO9R2S6GnU,909
119
+ clearskies/configs/datetime.py,sha256=QJxqRyFkb0YByHmaH_Rd_geUiyvBpk5xdBdRDj28278,689
120
+ clearskies/configs/datetime_or_callable.py,sha256=hp6ay-958DWoPy8Ryf1VS4R5NPKoF9LceiUhSB7I_wg,835
121
+ clearskies/configs/email.py,sha256=BbXGvZnO9wwT8LHexAq0ibwDNLVvv_8yUJEOThzJVE4,317
122
+ clearskies/configs/email_list.py,sha256=cTgdQTz4HYkqbdTEHPy8LcLjPGqFWY5TOIH8cHbfXXI,582
123
+ clearskies/configs/email_list_or_callable.py,sha256=jowDly4ZKLOYJ73aJ8VoNX338jzqTZyIcY91ANvrgt0,679
124
+ clearskies/configs/email_or_email_list_or_callable.py,sha256=tFdAsI1sTDMOheb3h8nQhIVxnl9xzZPwZtKjYEHjkKM,2470
125
+ clearskies/configs/endpoint.py,sha256=NEDthtdPzejAot7yzUjC01PvQJR9BIyk5YnWXCi1w9I,759
126
+ clearskies/configs/endpoint_list.py,sha256=9xtXmZpdOh7uk9Sm3MF9xi1_N-n2DZ-F4s0zrNfEKng,1200
127
+ clearskies/configs/float.py,sha256=7HwDMf-3VfrZxTmXwpnwDgXyzujUBpz1xPi1StdjB1Q,621
128
+ clearskies/configs/float_or_callable.py,sha256=9IiylL4Gg9_7HJOrYxbUPuLGE03TwKsAMsxfB7Lh2yY,744
129
+ clearskies/configs/integer.py,sha256=lw05RhD8ZkHO_tYJLtCUHZ_Ucz2Mf7C0Z5wVOsMqgq0,620
130
+ clearskies/configs/integer_or_callable.py,sha256=acCUP2ZSfSMPyID2LzIOQ-dlgARpxEktgr7KFWMtGbk,739
131
+ clearskies/configs/joins.py,sha256=i1QmxFwkpL-pnzVPh3mrHpwrvzsjt9nH5pMSj4J1TT4,944
132
+ clearskies/configs/list_any_dict.py,sha256=SRTrQdi3VcrjApkr0gI1M8GnAFSWO_ifmUQKWqnEzxU,1363
133
+ clearskies/configs/list_any_dict_or_callable.py,sha256=_dRzjrh5LljTuMVEUGSPhhxLU3OF6CFiHHIai8BRdsU,1581
134
+ clearskies/configs/model_class.py,sha256=ks0hnB2mZFHjhR3-x51d8IJSLVBclNjD_GhBcNfIxZE,1170
135
+ clearskies/configs/model_column.py,sha256=qLwTFdU3nP1LH3MG-wUo_aSTR-NKolsYTfjH2DOUUi4,2620
136
+ clearskies/configs/model_columns.py,sha256=P1BZ8GSlQUXizVkfzxrN4Sglx5QCoS6UXwgXsoBU-4c,2503
137
+ clearskies/configs/model_destination_name.py,sha256=g9K6ywOf31NKCo1zZ4kHuWaJr1dIDiBzdnVW6Eugv7I,978
138
+ clearskies/configs/model_to_id_column.py,sha256=0nssvknsv8t59uBMjOH0mUa9fxvcMHHgz4G_UZyeLpg,1579
139
+ clearskies/configs/readable_model_column.py,sha256=_iCjLa45qKPAR8nCa8lvjhms4QGAhYWhJxK2Om2p2CA,352
140
+ clearskies/configs/readable_model_columns.py,sha256=slyq-nvQSu4zIKUouejopoee7GIp2DRdX6Jf1ZJCq54,356
141
+ clearskies/configs/schema.py,sha256=W7xK5EOvZbbi2H5CgT4iifefrR2-XJXBNNx4f8t7j7o,766
142
+ clearskies/configs/searchable_model_columns.py,sha256=PVSe9J6cGyWRCAFwqstVIVTEGTwMDPGi-Nwo5zmkm8w,362
143
+ clearskies/configs/security_headers.py,sha256=wNtoUsghhec-NNZl9dSIRxTTApYw2vukbslYI-YY968,1403
144
+ clearskies/configs/select.py,sha256=TaiCbNGaSsLc6lJ_0_67PXgYDXhoDwd_T_KygKSPB-0,1057
145
+ clearskies/configs/select_list.py,sha256=ctqJW523C7UEhjahn_sWL1nlK-4OZrP01n_y1PV770s,1925
146
+ clearskies/configs/string.py,sha256=T65R8zvftpn-SZDxjS4ZqStBp1LWYwK9KkqH7WMK19o,1117
147
+ clearskies/configs/string_dict.py,sha256=vE1Q9HImvu5erMvCFnU73M4SUAhL6nnYr3-szp-axRg,1392
148
+ clearskies/configs/string_list.py,sha256=qJQFn0QxVfs3WeMfKTK40GQV-zeKQSJ-wvnhAjj8uqY,1760
149
+ clearskies/configs/string_list_or_callable.py,sha256=dOMwWAkDrQf2we3Sn7GkNBqxhvEXqtQIOoIib52YIZg,2020
150
+ clearskies/configs/string_or_callable.py,sha256=2Bg05AYN6j3v4ttFOmD-EBGfYpok67yiuFXnTTUhhNo,702
151
+ clearskies/configs/timedelta.py,sha256=Seuu9PexoWPqayybBjHlsDlx_EEe50BTfGOGKKecONc,703
152
+ clearskies/configs/timezone.py,sha256=JL6bjrCS4XdJzrRdhO5kZrMIhvxfNxsvvQ7EQrT0DOo,719
153
+ clearskies/configs/url.py,sha256=dVxvDfBHhVHMYcldz1jKbKvB83C4Ze4O_sEKOXXRAWU,811
154
+ clearskies/configs/validators.py,sha256=aAvf5dgncR8OP7_M7QUNhsHau4wAdPiXw9wNARRAYNY,1346
155
+ clearskies/configs/writeable_model_column.py,sha256=22pMoOAwYjvhHBcFrBb6ImtuoahbDKd5jZrNsbykrw4,355
156
+ clearskies/configs/writeable_model_columns.py,sha256=vQFh5w6ToC8SDi_GaEvy33csp2CTFIroAfOLigHjFKo,359
157
+ clearskies/contexts/__init__.py,sha256=f7XVUq2UKlDH6fjmcUWk6lbe9p_OaGpZ5ZjM6CuwTGQ,247
158
+ clearskies/contexts/cli.py,sha256=5t5rJJxlpNIrn8ITFIDvbSDbcPruoMQgei4ZjJ9Txvg,2648
159
+ clearskies/contexts/context.py,sha256=CCaO8bXR2ZsB0HiFIQ5tY65N7Y5d1TxYHIj2d1S8sv8,3559
160
+ clearskies/contexts/wsgi.py,sha256=scuV3FbDT4u51o4ND6XR60d196vRb3wdvcGiZ0e0SFg,2933
161
+ clearskies/contexts/wsgi_ref.py,sha256=Z4oBIYeSsLp93dR1eBsZTaevzVYB0QrR-ugp1CQVltU,2822
162
+ clearskies/di/__init__.py,sha256=Ab8GNv9ZksnCABq8n2gCcyLEAXD-5-kX4O8PweTJIFs,474
163
+ clearskies/di/additional_config.py,sha256=65INxw8aqTZQsyaKPj-aQmd6FBe4_4DwibXGgWYBy14,5139
164
+ clearskies/di/additional_config_auto_import.py,sha256=XYw0Kcnp6hp-ee-c0YjiATwJvRb2E82xk9PuoX9dGRY,758
165
+ clearskies/di/di.py,sha256=XHlsyzWyU1adlvQlRYLcygDT3XGJptP4_qtHqSE4o-I,45461
166
+ clearskies/di/injectable.py,sha256=TTgqhx494470I61-88BUQmHmevfat-wXVseKl8pQOEk,852
167
+ clearskies/di/injectable_properties.py,sha256=yJP0J7l7tjG2soyXtrfDgktE7M8tQHaP-55Cmtq0b7M,6466
168
+ clearskies/di/inject/__init__.py,sha256=plEkWId-VyhvqX5KM2HhdCqi7_ZJzPmFz69cPAo812Y,643
169
+ clearskies/di/inject/by_class.py,sha256=1wn08Ahne1nJ-ddRRE4i70U2XwCvU_khG2U0iEGoaVE,832
170
+ clearskies/di/inject/by_name.py,sha256=Vgt_4NdptIVNrpVawGz-ZZfqp1MQLnvlqAZmjsX0WqI,675
171
+ clearskies/di/inject/di.py,sha256=wuJU7u3AKPYoymQVcIR8m7t4pVIEtMvsN1RzujMqGfk,311
172
+ clearskies/di/inject/environment.py,sha256=gQ1Tf2OVpcBNB3ciTv44rc7sKZM3pIOkbCFsCj0ELEI,469
173
+ clearskies/di/inject/input_output.py,sha256=URb2qt8F-0QJ1zQpGdkrJxrZVNyF7S21EhhE5x2Irys,517
174
+ clearskies/di/inject/now.py,sha256=Kp4xkRfOKAf4vl0hwo0PspKbfDxbhfptMm1rrXgc__0,395
175
+ clearskies/di/inject/requests.py,sha256=ZXeEihj76dli4sf-WfW-sEZ30Y63eUqnP4OPChbovt4,403
176
+ clearskies/di/inject/secrets.py,sha256=WDcu2Fg9QuBkIbl1lhT1j7L1JxOfl4oipJPLD3H_wyM,445
177
+ clearskies/di/inject/utcnow.py,sha256=ugXgCerskwM9Pmc9OsdUKG4shbsYE-5c0YebUFx7ngQ,401
178
+ clearskies/di/inject/uuid.py,sha256=GwMKqY-k7iDgc3QuOOe80aUejoU9PfFFyxZjl6Vinjc,408
179
+ clearskies/di/test_module/__init__.py,sha256=7YHQF7JHP0FdI7GdEGANSZ_t1EISQYhUNm1wqOg0NKw,88
180
+ clearskies/di/test_module/module_class.py,sha256=I_-wnMuHfbsvti-7d2Z4bXnr6deo__uvww9nds9qrlE,46
181
+ clearskies/di/test_module/another_module/__init__.py,sha256=8SRmHPDepLKGWTUSc1ucDF6U8mJPsNDsBDmBQCpzPWo,35
182
+ clearskies/endpoints/__init__.py,sha256=payWNEivwmxsT-pWqNkzHisSbyNjB7oq7_I5QIQL_XA,750
183
+ clearskies/endpoints/advanced_search.py,sha256=FXbY1-VBf9qtsYAvXaqxLpR1FNUFhfB5EhhIx6fVDHk,21397
184
+ clearskies/endpoints/callable.py,sha256=8fUNR19Vo-OehZCJ8IaxNaAAgfKg2MMXzXdv5XKfqOw,13735
185
+ clearskies/endpoints/create.py,sha256=lrzd2iDZMn5sSOl4WXPlUJMnM5VlZrWVpK7IF-oDqOk,8904
186
+ clearskies/endpoints/delete.py,sha256=VXaq9o-fetBpQwP-xJANLv-_dGAGpwpR6qKRLtMn3yM,5081
187
+ clearskies/endpoints/get.py,sha256=DkhnSyb0jg_ppKMEtobayOndOtU6ktNYCJbQgrvIR4Q,9986
188
+ clearskies/endpoints/health_check.py,sha256=d4qL6dWGNySkZUiBgxuHAQQyUYJcPC7vygERK8jho-U,5421
189
+ clearskies/endpoints/list.py,sha256=nsCnCKGIb9z5jdUs1ALlSTxbkGVlIlZ5n9yk2-lT3dc,25443
190
+ clearskies/endpoints/restful_api.py,sha256=OnsYbCepxPdf8JIvzbslXOaS7-nLfjwv1C0sazr996E,15981
191
+ clearskies/endpoints/schema.py,sha256=7VoRNHnHEAkVPAGCaOVTlTfodt2V5tgGEc4XF28Dd38,7188
192
+ clearskies/endpoints/simple_search.py,sha256=zDXXgLxrn3g9YvQMOveCXWtWOI-wylCewYhBo7hknjc,9473
193
+ clearskies/endpoints/update.py,sha256=4Im2uL25hc_zFn49OhZ3HXLlxOLJPidgoQ4GfR0QCMY,7704
194
+ clearskies/exceptions/__init__.py,sha256=eFCYGp2Pk21kKibGJvJfh2tcn_oxm4wCkR-SbWUp_EI,691
195
+ clearskies/exceptions/authentication.py,sha256=VlNS0Aq2_6LbG0jiE8jULpS54jNW8a8px0gPrK3EZCc,42
196
+ clearskies/exceptions/authorization.py,sha256=14JuU5zLEf2sv82VNxsJt7dGSwfP-t3Pvf_6QZuacfA,41
197
+ clearskies/exceptions/client_error.py,sha256=o1OGnjlXT5zZ1Vb2LTRPYIio0YAnXPpXDGuqSLQP9_Y,39
198
+ clearskies/exceptions/input_errors.py,sha256=cTEFhWKb6zGZ0NCE8s3eyjB2vZpeUVuBaFPg25ThAn0,137
199
+ clearskies/exceptions/missing_dependency.py,sha256=mdzD35at7qM2ymht5vZYgt136Pse4ySr_DyVKcr-L2w,45
200
+ clearskies/exceptions/moved_permanently.py,sha256=fcgU_VBtAe8ZnbyNoNpXDcTQ8UtsjdoYg4Z3Ry2gXmc,110
201
+ clearskies/exceptions/moved_temporarily.py,sha256=Pt3muYHASvgOC50wPmoul9hUfy3Ud_NPSGFxshNWbIk,110
202
+ clearskies/exceptions/not_found.py,sha256=_lZwovDrd18dUHDop5pF4mhexBPNr126xF2gOLA2-EA,36
203
+ clearskies/functional/__init__.py,sha256=yXnbX-pjW6MOaBTjIzogvSJZ6O9dbUAWOalhu0WSDiQ,106
204
+ clearskies/functional/routing.py,sha256=tfIvP_Y29GTGr91_1ec3LSQFoTRwpkqU4BYHXPnBaXA,3685
205
+ clearskies/functional/string.py,sha256=ZnkOjx8nxqZq2TV0CIb-Kz4onGoyekTX_WkLJM6XTmM,3311
206
+ clearskies/functional/validations.py,sha256=cPYOTwWomlQrPvqPP_Jdlds7zZ5H9GABCP5pnGzC9T4,2821
207
+ clearskies/input_outputs/__init__.py,sha256=9qeKJULw3MQ3zqkgBZice5d7qqRgsP3y-wkhWO2Y9vM,362
208
+ clearskies/input_outputs/cli.py,sha256=xWv6gcDKL2I7_WmmQn91IQwyR9oS-WJAdjhsc0Yvux8,6061
209
+ clearskies/input_outputs/headers.py,sha256=R0RVVAVRVwDUiMpMrh684eYNv-1Xr8I0NzWRVIPv2Kk,1652
210
+ clearskies/input_outputs/input_output.py,sha256=Lg2Uv5aaSGIV14Uh7hRDfj3Wctatgye0lg8TMsHrNJs,5945
211
+ clearskies/input_outputs/programmatic.py,sha256=l00VE_yPl5vMHTc8wDvybn65c3ceCTeWNz6hjL8vev4,1717
212
+ clearskies/input_outputs/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
213
+ clearskies/input_outputs/wsgi.py,sha256=XU3g2IXm5Q_OLlvp3Iw1ORt0vQX_Ik9u_rLDb6kRfmk,2546
214
+ clearskies/input_outputs/exceptions/__init__.py,sha256=3KiM3KaMYEKoToqCCQ4_no2n0W5ROqeBC0sI2Ix4P6w,82
215
+ clearskies/input_outputs/exceptions/cli_input_error.py,sha256=kOFU8aLTLmeTL_AKDshxMu8_ufildg6p8ndhE1xHfb0,41
216
+ clearskies/input_outputs/exceptions/cli_not_found.py,sha256=JBBuZA9ZwdkPhd3a0qaGgEPQrxh1fehy4R3ZaV2gWXU,39
217
+ clearskies/query/__init__.py,sha256=ISF80_cG3rd574sRTdKKPxAdlSjtQh_ClXKKs_MSSSo,277
218
+ clearskies/query/condition.py,sha256=9RJrYya1Kfzx0L_BMDKQhYkN9dB7NAq5kRK5mz51YdY,8624
219
+ clearskies/query/join.py,sha256=4lrDUQzck7klKY_VYkc4SVK95SVwyy3SVTvasnsAEyc,4713
220
+ clearskies/query/query.py,sha256=0XR3fNhOpDNJY0US2oseAS3p3Y0jxxVs86P6vWEvUcA,6063
221
+ clearskies/query/sort.py,sha256=c-EtIkjg3kLjwSTdXD7sfyx-mNUhAepUV-2izprh3iY,754
222
+ clearskies/secrets/__init__.py,sha256=G-A8YhCMlS_OdboSeKzCZp6iwfqwU4BPEnB5HvD88wY,142
223
+ clearskies/secrets/akeyless.py,sha256=4SwnVNzMAijZtzR0Q25dizEw-q7nbS4G5s0CoGyc-G0,7219
224
+ clearskies/secrets/secrets.py,sha256=20Oq-PogMbFCPB6b4HyowlDD9QNY4r4BVKVm9hTrGxs,1724
225
+ clearskies/secrets/additional_configs/__init__.py,sha256=cFCrbtKF5nuR061S2y1iKZp349x-y8Srdwe3VZbfSFU,1119
226
+ clearskies/secrets/additional_configs/mysql_connection_dynamic_producer.py,sha256=CnIiXLVQdUnUey3dbCTXuNNP7Mmw1gjjNjZiBtfgGto,2757
227
+ clearskies/secrets/additional_configs/mysql_connection_dynamic_producer_via_ssh_cert_bastion.py,sha256=N8ruxrTNhvYlp3cYXq6V78KPPr4n40LM7QoXHvD8IZg,6235
228
+ clearskies/secrets/exceptions/__init__.py,sha256=j-SLHD-DL0CT4cZXibD9kXHk63JEl_UKX6xL_nq1EfE,32
229
+ clearskies/secrets/exceptions/not_found.py,sha256=_lZwovDrd18dUHDop5pF4mhexBPNr126xF2gOLA2-EA,36
230
+ clearskies/security_headers/__init__.py,sha256=JUpc4Y8dNBinDQAkP7OOABR7N787-lRR23boSWmY6Us,285
231
+ clearskies/security_headers/cache_control.py,sha256=gD1070vxwDJXQi8R3qIIR6hsOpVaaEV3-I52Up1DfM4,2143
232
+ clearskies/security_headers/cors.py,sha256=RqqakKH13JXCp0ybkf7YFGEKDR5Xg7a1lfk47AAI7CU,1778
233
+ clearskies/security_headers/csp.py,sha256=hms81Jw9VWzDRWdk5P7o3oq7LOOElpuGwhnIpwfPxpE,2747
234
+ clearskies/security_headers/hsts.py,sha256=BeNrxxxrIWNxbF2Rb1fmOgmbF3rp1i5ve7iXh3Qr7q4,723
235
+ clearskies/security_headers/x_content_type_options.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
236
+ clearskies/security_headers/x_frame_options.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
237
+ clearskies/validators/__init__.py,sha256=Hz0L5Y7EkeK4Px6WcdQ3ku6VqUGpLHX0ZWwCpT1ts1U,1248
238
+ clearskies/validators/after_column.py,sha256=GqZTdwNlkkLYD5_UJExih5aOksMBKJ4Trvr56PhBPsk,2309
239
+ clearskies/validators/before_column.py,sha256=jv5sUCeTwkkn-d1AFGaJccZdthc0o6rQASBT_vLHZbE,564
240
+ clearskies/validators/in_the_future.py,sha256=xx2Du7iTsXWth5KWdyjnYb7iOYpFjjPxSZ1p69Ay54A,901
241
+ clearskies/validators/in_the_future_at_least.py,sha256=pUCOBVZxPSFwwvXJdo_1GicZNPqlB__ftyyEW9QcQaQ,443
242
+ clearskies/validators/in_the_future_at_most.py,sha256=TgFfqhLsnrQXcdFKdfkaNWnPdj8tHr-Q_94SzFVWcoc,397
243
+ clearskies/validators/in_the_past.py,sha256=8eb79Q9feHL5rLsQdoOYIEsHegUiXI4zkH5Sl84G2o8,897
244
+ clearskies/validators/in_the_past_at_least.py,sha256=FT8rfs2-5Sd933Uql6-pwFRvvcPPXWq8hpobtkGr2z0,395
245
+ clearskies/validators/in_the_past_at_most.py,sha256=AFJoIlA3xeoJtWKh-2-PG6A97_FMHwt4Yk3G9TRNLzA,393
246
+ clearskies/validators/maximum_length.py,sha256=VxKvonpF58ng5icGt2d2BC2dWjXtNfnynjr95LZVYHg,843
247
+ clearskies/validators/maximum_value.py,sha256=gqWRESL7rfPa4XYY2iDwjAu8NuVrtEwMXXMlY6rV_uk,871
248
+ clearskies/validators/minimum_length.py,sha256=j-LHWLKXf3gF7yD9-RgNLXNm2gHj_-ZvGUxyCdRKPrw,860
249
+ clearskies/validators/minimum_value.py,sha256=NDLcG6xCemlv3kfr-RiUaM3x2INS1GJGMB9RoOezZ7k,872
250
+ clearskies/validators/required.py,sha256=GWxyexwj-K6DunZWNEnZxW6tQGAFd4oOCvQrW1s1K9k,1308
251
+ clearskies/validators/timedelta.py,sha256=DJ0pTm-SSUtjZ7phGoD6vjb086vXPzvLLijkU-jQlOs,1892
252
+ clearskies/validators/unique.py,sha256=GFEQOMYRIO9pSGHHj6zf1GdnJ0UM7Dm4ZO4uGn19BZo,991
253
+ clear_skies-2.0.9.dist-info/METADATA,sha256=6MAexsDWPfHN-2JRQC4PE8iIm10D3skQejnBCESu1Y0,2113
254
+ clear_skies-2.0.9.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
255
+ clear_skies-2.0.9.dist-info/licenses/LICENSE,sha256=3Ehd0g3YOpCj8sqj0Xjq5qbOtjjgk9qzhhD9YjRQgOA,1053
256
+ clear_skies-2.0.9.dist-info/RECORD,,
clearskies/__init__.py CHANGED
@@ -12,7 +12,7 @@ from . import (
12
12
  functional,
13
13
  input_outputs,
14
14
  query,
15
- # secrets,
15
+ secrets,
16
16
  security_headers,
17
17
  typing,
18
18
  validators,
@@ -53,7 +53,7 @@ __all__ = [
53
53
  "typing",
54
54
  "Validator",
55
55
  "query",
56
- # "secrets",
56
+ "secrets",
57
57
  "SecurityHeader",
58
58
  "security_headers",
59
59
  "validators",
@@ -12,9 +12,7 @@ if TYPE_CHECKING:
12
12
 
13
13
 
14
14
  class Authentication(clearskies.configurable.Configurable, requests.auth.AuthBase):
15
- """
16
- Authentication!
17
- """
15
+ """Authentication."""
18
16
 
19
17
  is_public = True
20
18
  can_authorize = False
@@ -1,9 +1,16 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import TYPE_CHECKING
4
+
5
+ if TYPE_CHECKING:
6
+ from clearskies.input_outputs.input_output import InputOutput
7
+ from clearskies.model import Model
8
+
9
+
1
10
  class Authorization:
2
- """
3
- Authorization!
4
- """
11
+ """Authorization."""
5
12
 
6
- def gate(self, authorization_data, input_output):
13
+ def gate(self, authorization_data, input_output: InputOutput) -> bool:
7
14
  """
8
15
  Return True/False to denote if the given user, as represented by the authorization data, should be allowed access.
9
16
 
@@ -11,6 +18,6 @@ class Authorization:
11
18
  """
12
19
  return True
13
20
 
14
- def filter_model(self, model, authorization_data, input_output):
21
+ def filter_model(self, model: Model, authorization_data, input_output: InputOutput) -> Model:
15
22
  """Return a models object with additional filters applied to account for authorization needs."""
16
23
  return model
@@ -1,4 +1,6 @@
1
- import clearskies.di
1
+ from typing import Any
2
+
3
+ from clearskies import di
2
4
 
3
5
  from .jwks import Jwks
4
6
 
@@ -14,7 +16,7 @@ class AuthorizationPassThrough(Jwks):
14
16
  """
15
17
  The input output helper
16
18
  """
17
- input_output = clearskies.di.inject.InputOutput()
19
+ input_output = di.inject.InputOutput()
18
20
 
19
- def headers(self, retry_auth=False):
21
+ def headers(self, retry_auth: bool = False) -> dict[str, Any]:
20
22
  return {"Authorization": self.input_output.request_headers.get("authorization", True)}
@@ -1,73 +1,75 @@
1
+ from __future__ import annotations
2
+
3
+ import datetime
1
4
  import json
2
- from typing import Any
5
+ from typing import TYPE_CHECKING, Any
3
6
 
4
- import clearskies.configs
5
- import clearskies.decorators
6
- import clearskies.di
7
+ from clearskies import configs, decorators, di
7
8
  from clearskies.authentication.authentication import Authentication
8
9
  from clearskies.exceptions import ClientError
9
10
  from clearskies.security_headers.cors import Cors
10
11
 
12
+ if TYPE_CHECKING:
13
+ from clearskies.input_outputs.input_output import InputOutput
11
14
 
12
- class Jwks(Authentication, clearskies.di.InjectableProperties):
13
- """
14
- Validate a JWT against a JWKS (JSON Web Key Set)
15
- """
15
+
16
+ class Jwks(Authentication, di.InjectableProperties):
17
+ """Validate a JWT against a JWKS (JSON Web Key Set)."""
16
18
 
17
19
  """
18
20
  The URL of the JWKS
19
21
  """
20
- jwks_url = clearskies.configs.String(required=True)
22
+ jwks_url = configs.String(required=True)
21
23
 
22
24
  """
23
25
  The audience to accept JWTs for.
24
26
  """
25
- audience = clearskies.configs.StringList(default=[])
27
+ audience = configs.StringList(default=[])
26
28
 
27
29
  """
28
30
  The expected issuer of the JWTs.
29
31
  """
30
- issuer = clearskies.configs.String(default="")
32
+ issuer = configs.String(default="")
31
33
 
32
34
  """
33
35
  The allowed algorithms
34
36
  """
35
- algorithms = clearskies.configs.StringList(default=["RS256"])
37
+ algorithms = configs.StringList(default=["RS256"])
36
38
 
37
39
  """
38
40
  The number of seconds for which the JWKS URL contents can be cached
39
41
  """
40
- jwks_cache_time = clearskies.configs.Integer(default=86400)
42
+ jwks_cache_time = configs.Integer(default=86400)
41
43
 
42
44
  """
43
45
  The Authorization URL (used in the auto-generated documentation)
44
46
  """
45
- authorization_url = clearskies.configs.String()
47
+ authorization_url = configs.String()
46
48
 
47
49
  """
48
50
  The name of the security scheme in the auto-generated documentation.
49
51
  """
50
- documentation_security_name = clearskies.configs.String(default="jwt")
52
+ documentation_security_name = configs.String(default="jwt")
51
53
 
52
54
  """
53
55
  The environment helper.
54
56
  """
55
- environment = clearskies.di.inject.Environment()
57
+ environment = di.inject.Environment()
56
58
 
57
59
  """
58
60
  The requests object.
59
61
  """
60
- requests = clearskies.di.inject.Requests()
62
+ requests = di.inject.Requests()
61
63
 
62
64
  """
63
65
  The JoseJwt library
64
66
  """
65
- jose_jwt = clearskies.di.inject.ByName("jose_jwt")
67
+ jose_jwt = di.inject.ByName("jose_jwt")
66
68
 
67
69
  """
68
70
  The current time
69
71
  """
70
- now = clearskies.di.inject.Now()
72
+ now = di.inject.Now()
71
73
 
72
74
  """
73
75
  Local cache of the JWKS
@@ -77,9 +79,9 @@ class Jwks(Authentication, clearskies.di.InjectableProperties):
77
79
  """
78
80
  The time when the JWKS was last fetched
79
81
  """
80
- _jwks_fetched = None
82
+ _jwks_fetched: datetime.datetime
81
83
 
82
- @clearskies.decorators.parameters_to_properties
84
+ @decorators.parameters_to_properties
83
85
  def __init__(
84
86
  self,
85
87
  jwks_url: str,
@@ -92,8 +94,8 @@ class Jwks(Authentication, clearskies.di.InjectableProperties):
92
94
  ):
93
95
  self.finalize_and_validate_configuration()
94
96
 
95
- def authenticate(self, input_output) -> bool:
96
- auth_header = input_output.get_request_header("authorization", True)
97
+ def authenticate(self, input_output: InputOutput) -> bool:
98
+ auth_header = input_output.request_headers.get("authorization", None)
97
99
  if not auth_header:
98
100
  raise ClientError("Missing 'Authorization' header in request")
99
101
  if auth_header[:7].lower() != "bearer ":
@@ -1,11 +1,9 @@
1
- import clearskies.configs
2
- import clearskies.decorators
3
- import clearskies.di
4
- from clearskies import autodoc
5
- from clearskies.authentication.authentication import Authentication
1
+ from clearskies import configs, decorators, di
6
2
 
3
+ from .authentication import Authentication
7
4
 
8
- class SecretBearer(Authentication, clearskies.di.InjectableProperties):
5
+
6
+ class SecretBearer(Authentication, di.InjectableProperties):
9
7
  """
10
8
  Secret Bearer performs authentication by checking against a static API key stored in either environment variables or a secret manager.
11
9
 
@@ -191,8 +189,8 @@ class SecretBearer(Authentication, clearskies.di.InjectableProperties):
191
189
  is_public = False
192
190
  can_authorize = False
193
191
 
194
- environment = clearskies.di.inject.Environment()
195
- secrets = clearskies.di.inject.Secrets()
192
+ environment = di.inject.Environment()
193
+ secrets = di.inject.Secrets()
196
194
 
197
195
  """
198
196
  The path in our secret manager from which the secret should be fetched.
@@ -248,7 +246,7 @@ class SecretBearer(Authentication, clearskies.di.InjectableProperties):
248
246
  ```
249
247
 
250
248
  """
251
- secret_key = clearskies.configs.String(default="")
249
+ secret_key = configs.String(default="")
252
250
 
253
251
  """
254
252
  The path in our secret manager where an alternate secret can also be fetched
@@ -322,12 +320,12 @@ class SecretBearer(Authentication, clearskies.di.InjectableProperties):
322
320
  ```
323
321
 
324
322
  """
325
- alternate_secret_key = clearskies.configs.String(default="")
323
+ alternate_secret_key = configs.String(default="")
326
324
 
327
325
  """
328
326
  The name of the environment variable from which we should fetch our key.
329
327
  """
330
- environment_key = clearskies.configs.String(default="")
328
+ environment_key = configs.String(default="")
331
329
 
332
330
  """
333
331
  The name of an alternate environment variable from which we should fetch our key.
@@ -392,7 +390,7 @@ class SecretBearer(Authentication, clearskies.di.InjectableProperties):
392
390
  ```
393
391
 
394
392
  """
395
- alternate_environment_key = clearskies.configs.String(default="")
393
+ alternate_environment_key = configs.String(default="")
396
394
 
397
395
  """
398
396
  The expected prefix (if any) that should come before the secret key in the authorization header.
@@ -445,7 +443,7 @@ class SecretBearer(Authentication, clearskies.di.InjectableProperties):
445
443
  }
446
444
  ```
447
445
  """
448
- header_prefix = clearskies.configs.String(default="")
446
+ header_prefix = configs.String(default="")
449
447
 
450
448
  """
451
449
  The length of our header prefix
@@ -455,12 +453,12 @@ class SecretBearer(Authentication, clearskies.di.InjectableProperties):
455
453
  """
456
454
  The name of our security scheme in the auto-generated documentation
457
455
  """
458
- documentation_security_name = clearskies.configs.String(default="ApiKey")
456
+ documentation_security_name = configs.String(default="ApiKey")
459
457
 
460
- _secret: str = None # type: ignore
461
- _alternate_secret: str = None # type: ignore
458
+ _secret: str | None = None
459
+ _alternate_secret: str | None = None
462
460
 
463
- @clearskies.decorators.parameters_to_properties
461
+ @decorators.parameters_to_properties
464
462
  def __init__(
465
463
  self,
466
464
  secret_key: str = "",
@@ -1,5 +1,5 @@
1
1
  class Schema:
2
- name = None
2
+ name: str
3
3
  example = None
4
4
  value = None
5
5
  _type = "string"