clear-skies 2.0.7__py3-none-any.whl → 2.0.8__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 (148) hide show
  1. {clear_skies-2.0.7.dist-info → clear_skies-2.0.8.dist-info}/METADATA +1 -1
  2. clear_skies-2.0.8.dist-info/RECORD +252 -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/any.py +2 -0
  50. clearskies/configs/any_dict.py +2 -0
  51. clearskies/configs/any_dict_or_callable.py +2 -0
  52. clearskies/configs/boolean.py +2 -0
  53. clearskies/configs/boolean_or_callable.py +2 -0
  54. clearskies/configs/callable_config.py +2 -0
  55. clearskies/configs/config.py +2 -0
  56. clearskies/configs/datetime.py +2 -0
  57. clearskies/configs/datetime_or_callable.py +2 -0
  58. clearskies/configs/float.py +2 -0
  59. clearskies/configs/float_or_callable.py +2 -0
  60. clearskies/configs/integer.py +2 -0
  61. clearskies/configs/integer_or_callable.py +2 -0
  62. clearskies/configs/list_any_dict.py +2 -0
  63. clearskies/configs/list_any_dict_or_callable.py +2 -0
  64. clearskies/configs/model_column.py +2 -0
  65. clearskies/configs/model_columns.py +2 -0
  66. clearskies/configs/model_destination_name.py +2 -1
  67. clearskies/configs/model_to_id_column.py +2 -0
  68. clearskies/configs/readable_model_column.py +2 -0
  69. clearskies/configs/readable_model_columns.py +2 -0
  70. clearskies/configs/searchable_model_columns.py +2 -0
  71. clearskies/configs/select.py +2 -0
  72. clearskies/configs/select_list.py +2 -0
  73. clearskies/configs/string.py +2 -0
  74. clearskies/configs/string_dict.py +2 -0
  75. clearskies/configs/string_list.py +2 -0
  76. clearskies/configs/string_list_or_callable.py +2 -0
  77. clearskies/configs/timedelta.py +2 -0
  78. clearskies/configs/timezone.py +2 -0
  79. clearskies/configs/url.py +2 -0
  80. clearskies/configs/writeable_model_column.py +2 -0
  81. clearskies/configs/writeable_model_columns.py +2 -0
  82. clearskies/configurable.py +2 -0
  83. clearskies/contexts/cli.py +9 -1
  84. clearskies/contexts/context.py +13 -14
  85. clearskies/contexts/wsgi.py +12 -10
  86. clearskies/contexts/wsgi_ref.py +12 -6
  87. clearskies/decorators.py +1 -1
  88. clearskies/decorators.pyi +10 -0
  89. clearskies/di/di.py +7 -6
  90. clearskies/di/inject/by_class.py +2 -0
  91. clearskies/di/inject/by_name.py +2 -0
  92. clearskies/di/inject/di.py +2 -0
  93. clearskies/di/inject/environment.py +1 -1
  94. clearskies/di/inject/now.py +2 -0
  95. clearskies/di/inject/requests.py +2 -0
  96. clearskies/di/inject/secrets.py +2 -2
  97. clearskies/di/inject/utcnow.py +2 -0
  98. clearskies/di/inject/uuid.py +2 -2
  99. clearskies/end.py +45 -7
  100. clearskies/endpoint.py +43 -59
  101. clearskies/endpoint_group.py +15 -18
  102. clearskies/endpoints/advanced_search.py +19 -26
  103. clearskies/endpoints/callable.py +10 -16
  104. clearskies/endpoints/create.py +6 -10
  105. clearskies/endpoints/delete.py +5 -11
  106. clearskies/endpoints/get.py +11 -15
  107. clearskies/endpoints/health_check.py +9 -11
  108. clearskies/endpoints/list.py +29 -36
  109. clearskies/endpoints/restful_api.py +43 -53
  110. clearskies/endpoints/schema.py +14 -18
  111. clearskies/endpoints/simple_search.py +5 -12
  112. clearskies/endpoints/update.py +6 -11
  113. clearskies/environment.py +2 -0
  114. clearskies/input_outputs/cli.py +2 -0
  115. clearskies/input_outputs/headers.py +2 -0
  116. clearskies/input_outputs/input_output.py +15 -15
  117. clearskies/input_outputs/programmatic.py +2 -2
  118. clearskies/input_outputs/wsgi.py +2 -2
  119. clearskies/model.py +120 -25
  120. clearskies/query/query.py +1 -4
  121. clearskies/secrets/__init__.py +2 -1
  122. clearskies/secrets/akeyless.py +12 -10
  123. clearskies/secrets/secrets.py +7 -2
  124. clearskies/security_header.py +4 -2
  125. clearskies/security_headers/cache_control.py +15 -14
  126. clearskies/security_headers/cors.py +10 -9
  127. clearskies/security_headers/csp.py +25 -24
  128. clearskies/security_headers/hsts.py +6 -5
  129. clearskies/typing.py +1 -1
  130. clearskies/validator.py +5 -6
  131. clearskies/validators/after_column.py +6 -7
  132. clearskies/validators/before_column.py +2 -0
  133. clearskies/validators/in_the_future.py +5 -8
  134. clearskies/validators/in_the_future_at_least.py +2 -0
  135. clearskies/validators/in_the_future_at_most.py +2 -0
  136. clearskies/validators/in_the_past.py +5 -8
  137. clearskies/validators/in_the_past_at_least.py +2 -0
  138. clearskies/validators/in_the_past_at_most.py +2 -0
  139. clearskies/validators/maximum_length.py +4 -5
  140. clearskies/validators/maximum_value.py +4 -4
  141. clearskies/validators/minimum_length.py +4 -4
  142. clearskies/validators/minimum_value.py +4 -4
  143. clearskies/validators/required.py +2 -4
  144. clearskies/validators/timedelta.py +8 -9
  145. clearskies/validators/unique.py +2 -3
  146. clear_skies-2.0.7.dist-info/RECORD +0 -251
  147. {clear_skies-2.0.7.dist-info → clear_skies-2.0.8.dist-info}/WHEEL +0 -0
  148. {clear_skies-2.0.7.dist-info → clear_skies-2.0.8.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.8
4
4
  Summary: A framework for building backends in the cloud
5
5
  Project-URL: Documentation, https://clearskies.io/
6
6
  Project-URL: Repository, https://github.com/clearskies-py/clearskies
@@ -0,0 +1,252 @@
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=nfaevClmzwsTMYDH4R_6t2VRg4OoeInIocvclIQ-8kY,5079
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/endpoint.py,sha256=NEDthtdPzejAot7yzUjC01PvQJR9BIyk5YnWXCi1w9I,759
122
+ clearskies/configs/endpoint_list.py,sha256=9xtXmZpdOh7uk9Sm3MF9xi1_N-n2DZ-F4s0zrNfEKng,1200
123
+ clearskies/configs/float.py,sha256=7HwDMf-3VfrZxTmXwpnwDgXyzujUBpz1xPi1StdjB1Q,621
124
+ clearskies/configs/float_or_callable.py,sha256=9IiylL4Gg9_7HJOrYxbUPuLGE03TwKsAMsxfB7Lh2yY,744
125
+ clearskies/configs/integer.py,sha256=lw05RhD8ZkHO_tYJLtCUHZ_Ucz2Mf7C0Z5wVOsMqgq0,620
126
+ clearskies/configs/integer_or_callable.py,sha256=acCUP2ZSfSMPyID2LzIOQ-dlgARpxEktgr7KFWMtGbk,739
127
+ clearskies/configs/joins.py,sha256=i1QmxFwkpL-pnzVPh3mrHpwrvzsjt9nH5pMSj4J1TT4,944
128
+ clearskies/configs/list_any_dict.py,sha256=SRTrQdi3VcrjApkr0gI1M8GnAFSWO_ifmUQKWqnEzxU,1363
129
+ clearskies/configs/list_any_dict_or_callable.py,sha256=_dRzjrh5LljTuMVEUGSPhhxLU3OF6CFiHHIai8BRdsU,1581
130
+ clearskies/configs/model_class.py,sha256=ks0hnB2mZFHjhR3-x51d8IJSLVBclNjD_GhBcNfIxZE,1170
131
+ clearskies/configs/model_column.py,sha256=qLwTFdU3nP1LH3MG-wUo_aSTR-NKolsYTfjH2DOUUi4,2620
132
+ clearskies/configs/model_columns.py,sha256=P1BZ8GSlQUXizVkfzxrN4Sglx5QCoS6UXwgXsoBU-4c,2503
133
+ clearskies/configs/model_destination_name.py,sha256=g9K6ywOf31NKCo1zZ4kHuWaJr1dIDiBzdnVW6Eugv7I,978
134
+ clearskies/configs/model_to_id_column.py,sha256=0nssvknsv8t59uBMjOH0mUa9fxvcMHHgz4G_UZyeLpg,1579
135
+ clearskies/configs/readable_model_column.py,sha256=_iCjLa45qKPAR8nCa8lvjhms4QGAhYWhJxK2Om2p2CA,352
136
+ clearskies/configs/readable_model_columns.py,sha256=slyq-nvQSu4zIKUouejopoee7GIp2DRdX6Jf1ZJCq54,356
137
+ clearskies/configs/schema.py,sha256=W7xK5EOvZbbi2H5CgT4iifefrR2-XJXBNNx4f8t7j7o,766
138
+ clearskies/configs/searchable_model_columns.py,sha256=PVSe9J6cGyWRCAFwqstVIVTEGTwMDPGi-Nwo5zmkm8w,362
139
+ clearskies/configs/security_headers.py,sha256=wNtoUsghhec-NNZl9dSIRxTTApYw2vukbslYI-YY968,1403
140
+ clearskies/configs/select.py,sha256=TaiCbNGaSsLc6lJ_0_67PXgYDXhoDwd_T_KygKSPB-0,1057
141
+ clearskies/configs/select_list.py,sha256=ctqJW523C7UEhjahn_sWL1nlK-4OZrP01n_y1PV770s,1925
142
+ clearskies/configs/string.py,sha256=vGTkah9Ml1Y0gw7OIu9B6C_b2lsYcOh_AKrrPrCzS_E,1129
143
+ clearskies/configs/string_dict.py,sha256=vE1Q9HImvu5erMvCFnU73M4SUAhL6nnYr3-szp-axRg,1392
144
+ clearskies/configs/string_list.py,sha256=4o-p18c7VTVj5WNuqnHEtYx0aNZjvn25X0S3fbf4R28,1238
145
+ clearskies/configs/string_list_or_callable.py,sha256=V9yuLiotQStZcAm_-dWzXW5PG8gZMSYyjerQc4RaP2E,1491
146
+ clearskies/configs/string_or_callable.py,sha256=2Bg05AYN6j3v4ttFOmD-EBGfYpok67yiuFXnTTUhhNo,702
147
+ clearskies/configs/timedelta.py,sha256=Seuu9PexoWPqayybBjHlsDlx_EEe50BTfGOGKKecONc,703
148
+ clearskies/configs/timezone.py,sha256=JL6bjrCS4XdJzrRdhO5kZrMIhvxfNxsvvQ7EQrT0DOo,719
149
+ clearskies/configs/url.py,sha256=dVxvDfBHhVHMYcldz1jKbKvB83C4Ze4O_sEKOXXRAWU,811
150
+ clearskies/configs/validators.py,sha256=aAvf5dgncR8OP7_M7QUNhsHau4wAdPiXw9wNARRAYNY,1346
151
+ clearskies/configs/writeable_model_column.py,sha256=22pMoOAwYjvhHBcFrBb6ImtuoahbDKd5jZrNsbykrw4,355
152
+ clearskies/configs/writeable_model_columns.py,sha256=vQFh5w6ToC8SDi_GaEvy33csp2CTFIroAfOLigHjFKo,359
153
+ clearskies/contexts/__init__.py,sha256=f7XVUq2UKlDH6fjmcUWk6lbe9p_OaGpZ5ZjM6CuwTGQ,247
154
+ clearskies/contexts/cli.py,sha256=5t5rJJxlpNIrn8ITFIDvbSDbcPruoMQgei4ZjJ9Txvg,2648
155
+ clearskies/contexts/context.py,sha256=CCaO8bXR2ZsB0HiFIQ5tY65N7Y5d1TxYHIj2d1S8sv8,3559
156
+ clearskies/contexts/wsgi.py,sha256=scuV3FbDT4u51o4ND6XR60d196vRb3wdvcGiZ0e0SFg,2933
157
+ clearskies/contexts/wsgi_ref.py,sha256=Z4oBIYeSsLp93dR1eBsZTaevzVYB0QrR-ugp1CQVltU,2822
158
+ clearskies/di/__init__.py,sha256=Ab8GNv9ZksnCABq8n2gCcyLEAXD-5-kX4O8PweTJIFs,474
159
+ clearskies/di/additional_config.py,sha256=65INxw8aqTZQsyaKPj-aQmd6FBe4_4DwibXGgWYBy14,5139
160
+ clearskies/di/additional_config_auto_import.py,sha256=XYw0Kcnp6hp-ee-c0YjiATwJvRb2E82xk9PuoX9dGRY,758
161
+ clearskies/di/di.py,sha256=XHlsyzWyU1adlvQlRYLcygDT3XGJptP4_qtHqSE4o-I,45461
162
+ clearskies/di/injectable.py,sha256=TTgqhx494470I61-88BUQmHmevfat-wXVseKl8pQOEk,852
163
+ clearskies/di/injectable_properties.py,sha256=yJP0J7l7tjG2soyXtrfDgktE7M8tQHaP-55Cmtq0b7M,6466
164
+ clearskies/di/inject/__init__.py,sha256=plEkWId-VyhvqX5KM2HhdCqi7_ZJzPmFz69cPAo812Y,643
165
+ clearskies/di/inject/by_class.py,sha256=1wn08Ahne1nJ-ddRRE4i70U2XwCvU_khG2U0iEGoaVE,832
166
+ clearskies/di/inject/by_name.py,sha256=Vgt_4NdptIVNrpVawGz-ZZfqp1MQLnvlqAZmjsX0WqI,675
167
+ clearskies/di/inject/di.py,sha256=wuJU7u3AKPYoymQVcIR8m7t4pVIEtMvsN1RzujMqGfk,311
168
+ clearskies/di/inject/environment.py,sha256=gQ1Tf2OVpcBNB3ciTv44rc7sKZM3pIOkbCFsCj0ELEI,469
169
+ clearskies/di/inject/input_output.py,sha256=URb2qt8F-0QJ1zQpGdkrJxrZVNyF7S21EhhE5x2Irys,517
170
+ clearskies/di/inject/now.py,sha256=Kp4xkRfOKAf4vl0hwo0PspKbfDxbhfptMm1rrXgc__0,395
171
+ clearskies/di/inject/requests.py,sha256=ZXeEihj76dli4sf-WfW-sEZ30Y63eUqnP4OPChbovt4,403
172
+ clearskies/di/inject/secrets.py,sha256=WDcu2Fg9QuBkIbl1lhT1j7L1JxOfl4oipJPLD3H_wyM,445
173
+ clearskies/di/inject/utcnow.py,sha256=ugXgCerskwM9Pmc9OsdUKG4shbsYE-5c0YebUFx7ngQ,401
174
+ clearskies/di/inject/uuid.py,sha256=GwMKqY-k7iDgc3QuOOe80aUejoU9PfFFyxZjl6Vinjc,408
175
+ clearskies/di/test_module/__init__.py,sha256=7YHQF7JHP0FdI7GdEGANSZ_t1EISQYhUNm1wqOg0NKw,88
176
+ clearskies/di/test_module/module_class.py,sha256=I_-wnMuHfbsvti-7d2Z4bXnr6deo__uvww9nds9qrlE,46
177
+ clearskies/di/test_module/another_module/__init__.py,sha256=8SRmHPDepLKGWTUSc1ucDF6U8mJPsNDsBDmBQCpzPWo,35
178
+ clearskies/endpoints/__init__.py,sha256=payWNEivwmxsT-pWqNkzHisSbyNjB7oq7_I5QIQL_XA,750
179
+ clearskies/endpoints/advanced_search.py,sha256=FXbY1-VBf9qtsYAvXaqxLpR1FNUFhfB5EhhIx6fVDHk,21397
180
+ clearskies/endpoints/callable.py,sha256=8fUNR19Vo-OehZCJ8IaxNaAAgfKg2MMXzXdv5XKfqOw,13735
181
+ clearskies/endpoints/create.py,sha256=lrzd2iDZMn5sSOl4WXPlUJMnM5VlZrWVpK7IF-oDqOk,8904
182
+ clearskies/endpoints/delete.py,sha256=VXaq9o-fetBpQwP-xJANLv-_dGAGpwpR6qKRLtMn3yM,5081
183
+ clearskies/endpoints/get.py,sha256=DkhnSyb0jg_ppKMEtobayOndOtU6ktNYCJbQgrvIR4Q,9986
184
+ clearskies/endpoints/health_check.py,sha256=d4qL6dWGNySkZUiBgxuHAQQyUYJcPC7vygERK8jho-U,5421
185
+ clearskies/endpoints/list.py,sha256=nsCnCKGIb9z5jdUs1ALlSTxbkGVlIlZ5n9yk2-lT3dc,25443
186
+ clearskies/endpoints/restful_api.py,sha256=OnsYbCepxPdf8JIvzbslXOaS7-nLfjwv1C0sazr996E,15981
187
+ clearskies/endpoints/schema.py,sha256=7VoRNHnHEAkVPAGCaOVTlTfodt2V5tgGEc4XF28Dd38,7188
188
+ clearskies/endpoints/simple_search.py,sha256=zDXXgLxrn3g9YvQMOveCXWtWOI-wylCewYhBo7hknjc,9473
189
+ clearskies/endpoints/update.py,sha256=4Im2uL25hc_zFn49OhZ3HXLlxOLJPidgoQ4GfR0QCMY,7704
190
+ clearskies/exceptions/__init__.py,sha256=eFCYGp2Pk21kKibGJvJfh2tcn_oxm4wCkR-SbWUp_EI,691
191
+ clearskies/exceptions/authentication.py,sha256=VlNS0Aq2_6LbG0jiE8jULpS54jNW8a8px0gPrK3EZCc,42
192
+ clearskies/exceptions/authorization.py,sha256=14JuU5zLEf2sv82VNxsJt7dGSwfP-t3Pvf_6QZuacfA,41
193
+ clearskies/exceptions/client_error.py,sha256=o1OGnjlXT5zZ1Vb2LTRPYIio0YAnXPpXDGuqSLQP9_Y,39
194
+ clearskies/exceptions/input_errors.py,sha256=cTEFhWKb6zGZ0NCE8s3eyjB2vZpeUVuBaFPg25ThAn0,137
195
+ clearskies/exceptions/missing_dependency.py,sha256=mdzD35at7qM2ymht5vZYgt136Pse4ySr_DyVKcr-L2w,45
196
+ clearskies/exceptions/moved_permanently.py,sha256=fcgU_VBtAe8ZnbyNoNpXDcTQ8UtsjdoYg4Z3Ry2gXmc,110
197
+ clearskies/exceptions/moved_temporarily.py,sha256=Pt3muYHASvgOC50wPmoul9hUfy3Ud_NPSGFxshNWbIk,110
198
+ clearskies/exceptions/not_found.py,sha256=_lZwovDrd18dUHDop5pF4mhexBPNr126xF2gOLA2-EA,36
199
+ clearskies/functional/__init__.py,sha256=yXnbX-pjW6MOaBTjIzogvSJZ6O9dbUAWOalhu0WSDiQ,106
200
+ clearskies/functional/routing.py,sha256=tfIvP_Y29GTGr91_1ec3LSQFoTRwpkqU4BYHXPnBaXA,3685
201
+ clearskies/functional/string.py,sha256=ZnkOjx8nxqZq2TV0CIb-Kz4onGoyekTX_WkLJM6XTmM,3311
202
+ clearskies/functional/validations.py,sha256=cPYOTwWomlQrPvqPP_Jdlds7zZ5H9GABCP5pnGzC9T4,2821
203
+ clearskies/input_outputs/__init__.py,sha256=9qeKJULw3MQ3zqkgBZice5d7qqRgsP3y-wkhWO2Y9vM,362
204
+ clearskies/input_outputs/cli.py,sha256=xWv6gcDKL2I7_WmmQn91IQwyR9oS-WJAdjhsc0Yvux8,6061
205
+ clearskies/input_outputs/headers.py,sha256=R0RVVAVRVwDUiMpMrh684eYNv-1Xr8I0NzWRVIPv2Kk,1652
206
+ clearskies/input_outputs/input_output.py,sha256=Lg2Uv5aaSGIV14Uh7hRDfj3Wctatgye0lg8TMsHrNJs,5945
207
+ clearskies/input_outputs/programmatic.py,sha256=l00VE_yPl5vMHTc8wDvybn65c3ceCTeWNz6hjL8vev4,1717
208
+ clearskies/input_outputs/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
209
+ clearskies/input_outputs/wsgi.py,sha256=XU3g2IXm5Q_OLlvp3Iw1ORt0vQX_Ik9u_rLDb6kRfmk,2546
210
+ clearskies/input_outputs/exceptions/__init__.py,sha256=3KiM3KaMYEKoToqCCQ4_no2n0W5ROqeBC0sI2Ix4P6w,82
211
+ clearskies/input_outputs/exceptions/cli_input_error.py,sha256=kOFU8aLTLmeTL_AKDshxMu8_ufildg6p8ndhE1xHfb0,41
212
+ clearskies/input_outputs/exceptions/cli_not_found.py,sha256=JBBuZA9ZwdkPhd3a0qaGgEPQrxh1fehy4R3ZaV2gWXU,39
213
+ clearskies/query/__init__.py,sha256=ISF80_cG3rd574sRTdKKPxAdlSjtQh_ClXKKs_MSSSo,277
214
+ clearskies/query/condition.py,sha256=9RJrYya1Kfzx0L_BMDKQhYkN9dB7NAq5kRK5mz51YdY,8624
215
+ clearskies/query/join.py,sha256=4lrDUQzck7klKY_VYkc4SVK95SVwyy3SVTvasnsAEyc,4713
216
+ clearskies/query/query.py,sha256=0XR3fNhOpDNJY0US2oseAS3p3Y0jxxVs86P6vWEvUcA,6063
217
+ clearskies/query/sort.py,sha256=c-EtIkjg3kLjwSTdXD7sfyx-mNUhAepUV-2izprh3iY,754
218
+ clearskies/secrets/__init__.py,sha256=G-A8YhCMlS_OdboSeKzCZp6iwfqwU4BPEnB5HvD88wY,142
219
+ clearskies/secrets/akeyless.py,sha256=HNNTHCLjfvS5Uz9b6O8yzqeDJ18Zig94Pkl1fA7XOzE,7060
220
+ clearskies/secrets/secrets.py,sha256=20Oq-PogMbFCPB6b4HyowlDD9QNY4r4BVKVm9hTrGxs,1724
221
+ clearskies/secrets/additional_configs/__init__.py,sha256=cFCrbtKF5nuR061S2y1iKZp349x-y8Srdwe3VZbfSFU,1119
222
+ clearskies/secrets/additional_configs/mysql_connection_dynamic_producer.py,sha256=CnIiXLVQdUnUey3dbCTXuNNP7Mmw1gjjNjZiBtfgGto,2757
223
+ clearskies/secrets/additional_configs/mysql_connection_dynamic_producer_via_ssh_cert_bastion.py,sha256=N8ruxrTNhvYlp3cYXq6V78KPPr4n40LM7QoXHvD8IZg,6235
224
+ clearskies/secrets/exceptions/__init__.py,sha256=j-SLHD-DL0CT4cZXibD9kXHk63JEl_UKX6xL_nq1EfE,32
225
+ clearskies/secrets/exceptions/not_found.py,sha256=_lZwovDrd18dUHDop5pF4mhexBPNr126xF2gOLA2-EA,36
226
+ clearskies/security_headers/__init__.py,sha256=JUpc4Y8dNBinDQAkP7OOABR7N787-lRR23boSWmY6Us,285
227
+ clearskies/security_headers/cache_control.py,sha256=gD1070vxwDJXQi8R3qIIR6hsOpVaaEV3-I52Up1DfM4,2143
228
+ clearskies/security_headers/cors.py,sha256=RqqakKH13JXCp0ybkf7YFGEKDR5Xg7a1lfk47AAI7CU,1778
229
+ clearskies/security_headers/csp.py,sha256=hms81Jw9VWzDRWdk5P7o3oq7LOOElpuGwhnIpwfPxpE,2747
230
+ clearskies/security_headers/hsts.py,sha256=BeNrxxxrIWNxbF2Rb1fmOgmbF3rp1i5ve7iXh3Qr7q4,723
231
+ clearskies/security_headers/x_content_type_options.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
232
+ clearskies/security_headers/x_frame_options.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
233
+ clearskies/validators/__init__.py,sha256=Hz0L5Y7EkeK4Px6WcdQ3ku6VqUGpLHX0ZWwCpT1ts1U,1248
234
+ clearskies/validators/after_column.py,sha256=GqZTdwNlkkLYD5_UJExih5aOksMBKJ4Trvr56PhBPsk,2309
235
+ clearskies/validators/before_column.py,sha256=jv5sUCeTwkkn-d1AFGaJccZdthc0o6rQASBT_vLHZbE,564
236
+ clearskies/validators/in_the_future.py,sha256=xx2Du7iTsXWth5KWdyjnYb7iOYpFjjPxSZ1p69Ay54A,901
237
+ clearskies/validators/in_the_future_at_least.py,sha256=pUCOBVZxPSFwwvXJdo_1GicZNPqlB__ftyyEW9QcQaQ,443
238
+ clearskies/validators/in_the_future_at_most.py,sha256=TgFfqhLsnrQXcdFKdfkaNWnPdj8tHr-Q_94SzFVWcoc,397
239
+ clearskies/validators/in_the_past.py,sha256=8eb79Q9feHL5rLsQdoOYIEsHegUiXI4zkH5Sl84G2o8,897
240
+ clearskies/validators/in_the_past_at_least.py,sha256=FT8rfs2-5Sd933Uql6-pwFRvvcPPXWq8hpobtkGr2z0,395
241
+ clearskies/validators/in_the_past_at_most.py,sha256=AFJoIlA3xeoJtWKh-2-PG6A97_FMHwt4Yk3G9TRNLzA,393
242
+ clearskies/validators/maximum_length.py,sha256=VxKvonpF58ng5icGt2d2BC2dWjXtNfnynjr95LZVYHg,843
243
+ clearskies/validators/maximum_value.py,sha256=gqWRESL7rfPa4XYY2iDwjAu8NuVrtEwMXXMlY6rV_uk,871
244
+ clearskies/validators/minimum_length.py,sha256=j-LHWLKXf3gF7yD9-RgNLXNm2gHj_-ZvGUxyCdRKPrw,860
245
+ clearskies/validators/minimum_value.py,sha256=NDLcG6xCemlv3kfr-RiUaM3x2INS1GJGMB9RoOezZ7k,872
246
+ clearskies/validators/required.py,sha256=GWxyexwj-K6DunZWNEnZxW6tQGAFd4oOCvQrW1s1K9k,1308
247
+ clearskies/validators/timedelta.py,sha256=DJ0pTm-SSUtjZ7phGoD6vjb086vXPzvLLijkU-jQlOs,1892
248
+ clearskies/validators/unique.py,sha256=GFEQOMYRIO9pSGHHj6zf1GdnJ0UM7Dm4ZO4uGn19BZo,991
249
+ clear_skies-2.0.8.dist-info/METADATA,sha256=jCJOYBO5aC6oExboDjy6JO5CdoGsZlUboVpkpvhakEg,2113
250
+ clear_skies-2.0.8.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
251
+ clear_skies-2.0.8.dist-info/licenses/LICENSE,sha256=3Ehd0g3YOpCj8sqj0Xjq5qbOtjjgk9qzhhD9YjRQgOA,1053
252
+ clear_skies-2.0.8.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"