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.
- {clear_skies-2.0.7.dist-info → clear_skies-2.0.9.dist-info}/METADATA +1 -1
- clear_skies-2.0.9.dist-info/RECORD +256 -0
- clearskies/__init__.py +2 -2
- clearskies/authentication/authentication.py +1 -3
- clearskies/authentication/authorization.py +12 -5
- clearskies/authentication/authorization_pass_through.py +5 -3
- clearskies/authentication/jwks.py +25 -23
- clearskies/authentication/secret_bearer.py +15 -17
- clearskies/autodoc/schema/schema.py +1 -1
- clearskies/backends/api_backend.py +50 -56
- clearskies/backends/backend.py +14 -14
- clearskies/backends/cursor_backend.py +17 -23
- clearskies/backends/memory_backend.py +27 -30
- clearskies/backends/secrets_backend.py +13 -18
- clearskies/column.py +44 -56
- clearskies/columns/audit.py +14 -13
- clearskies/columns/belongs_to_id.py +10 -15
- clearskies/columns/belongs_to_model.py +6 -9
- clearskies/columns/belongs_to_self.py +13 -9
- clearskies/columns/boolean.py +13 -16
- clearskies/columns/category_tree.py +9 -11
- clearskies/columns/category_tree_children.py +2 -3
- clearskies/columns/category_tree_descendants.py +1 -1
- clearskies/columns/created.py +8 -11
- clearskies/columns/created_by_authorization_data.py +7 -9
- clearskies/columns/created_by_header.py +12 -8
- clearskies/columns/created_by_ip.py +6 -8
- clearskies/columns/created_by_routing_data.py +12 -7
- clearskies/columns/created_by_user_agent.py +6 -9
- clearskies/columns/date.py +12 -14
- clearskies/columns/datetime.py +19 -17
- clearskies/columns/email.py +3 -1
- clearskies/columns/float.py +10 -14
- clearskies/columns/has_many.py +8 -10
- clearskies/columns/has_many_self.py +13 -7
- clearskies/columns/has_one.py +2 -0
- clearskies/columns/integer.py +9 -11
- clearskies/columns/json.py +10 -12
- clearskies/columns/many_to_many_ids.py +14 -16
- clearskies/columns/many_to_many_ids_with_data.py +16 -16
- clearskies/columns/many_to_many_models.py +5 -7
- clearskies/columns/many_to_many_pivots.py +3 -5
- clearskies/columns/phone.py +12 -9
- clearskies/columns/select.py +12 -9
- clearskies/columns/string.py +1 -1
- clearskies/columns/timestamp.py +15 -15
- clearskies/columns/updated.py +8 -10
- clearskies/columns/uuid.py +7 -10
- clearskies/configs/__init__.py +8 -0
- clearskies/configs/any.py +2 -0
- clearskies/configs/any_dict.py +2 -0
- clearskies/configs/any_dict_or_callable.py +2 -0
- clearskies/configs/boolean.py +2 -0
- clearskies/configs/boolean_or_callable.py +2 -0
- clearskies/configs/callable_config.py +2 -0
- clearskies/configs/config.py +2 -0
- clearskies/configs/datetime.py +2 -0
- clearskies/configs/datetime_or_callable.py +2 -0
- clearskies/configs/email.py +10 -0
- clearskies/configs/email_list.py +17 -0
- clearskies/configs/email_list_or_callable.py +19 -0
- clearskies/configs/email_or_email_list_or_callable.py +59 -0
- clearskies/configs/float.py +2 -0
- clearskies/configs/float_or_callable.py +2 -0
- clearskies/configs/integer.py +2 -0
- clearskies/configs/integer_or_callable.py +2 -0
- clearskies/configs/list_any_dict.py +2 -0
- clearskies/configs/list_any_dict_or_callable.py +2 -0
- clearskies/configs/model_column.py +2 -0
- clearskies/configs/model_columns.py +2 -0
- clearskies/configs/model_destination_name.py +2 -1
- clearskies/configs/model_to_id_column.py +2 -0
- clearskies/configs/readable_model_column.py +2 -0
- clearskies/configs/readable_model_columns.py +2 -0
- clearskies/configs/searchable_model_columns.py +2 -0
- clearskies/configs/select.py +2 -0
- clearskies/configs/select_list.py +2 -0
- clearskies/configs/string.py +4 -2
- clearskies/configs/string_dict.py +2 -0
- clearskies/configs/string_list.py +17 -2
- clearskies/configs/string_list_or_callable.py +13 -0
- clearskies/configs/timedelta.py +2 -0
- clearskies/configs/timezone.py +2 -0
- clearskies/configs/url.py +2 -0
- clearskies/configs/writeable_model_column.py +2 -0
- clearskies/configs/writeable_model_columns.py +2 -0
- clearskies/configurable.py +2 -0
- clearskies/contexts/cli.py +9 -1
- clearskies/contexts/context.py +13 -14
- clearskies/contexts/wsgi.py +12 -10
- clearskies/contexts/wsgi_ref.py +12 -6
- clearskies/decorators.py +1 -1
- clearskies/decorators.pyi +10 -0
- clearskies/di/di.py +7 -6
- clearskies/di/inject/by_class.py +2 -0
- clearskies/di/inject/by_name.py +2 -0
- clearskies/di/inject/di.py +2 -0
- clearskies/di/inject/environment.py +1 -1
- clearskies/di/inject/now.py +2 -0
- clearskies/di/inject/requests.py +2 -0
- clearskies/di/inject/secrets.py +2 -2
- clearskies/di/inject/utcnow.py +2 -0
- clearskies/di/inject/uuid.py +2 -2
- clearskies/end.py +45 -7
- clearskies/endpoint.py +43 -59
- clearskies/endpoint_group.py +15 -18
- clearskies/endpoints/advanced_search.py +19 -26
- clearskies/endpoints/callable.py +10 -16
- clearskies/endpoints/create.py +6 -10
- clearskies/endpoints/delete.py +5 -11
- clearskies/endpoints/get.py +11 -15
- clearskies/endpoints/health_check.py +9 -11
- clearskies/endpoints/list.py +29 -36
- clearskies/endpoints/restful_api.py +43 -53
- clearskies/endpoints/schema.py +14 -18
- clearskies/endpoints/simple_search.py +5 -12
- clearskies/endpoints/update.py +6 -11
- clearskies/environment.py +2 -0
- clearskies/input_outputs/cli.py +2 -0
- clearskies/input_outputs/headers.py +2 -0
- clearskies/input_outputs/input_output.py +15 -15
- clearskies/input_outputs/programmatic.py +2 -2
- clearskies/input_outputs/wsgi.py +2 -2
- clearskies/model.py +120 -25
- clearskies/query/query.py +1 -4
- clearskies/secrets/__init__.py +2 -1
- clearskies/secrets/akeyless.py +16 -11
- clearskies/secrets/secrets.py +7 -2
- clearskies/security_header.py +4 -2
- clearskies/security_headers/cache_control.py +15 -14
- clearskies/security_headers/cors.py +10 -9
- clearskies/security_headers/csp.py +25 -24
- clearskies/security_headers/hsts.py +6 -5
- clearskies/typing.py +1 -1
- clearskies/validator.py +5 -6
- clearskies/validators/after_column.py +6 -7
- clearskies/validators/before_column.py +2 -0
- clearskies/validators/in_the_future.py +5 -8
- clearskies/validators/in_the_future_at_least.py +2 -0
- clearskies/validators/in_the_future_at_most.py +2 -0
- clearskies/validators/in_the_past.py +5 -8
- clearskies/validators/in_the_past_at_least.py +2 -0
- clearskies/validators/in_the_past_at_most.py +2 -0
- clearskies/validators/maximum_length.py +4 -5
- clearskies/validators/maximum_value.py +4 -4
- clearskies/validators/minimum_length.py +4 -4
- clearskies/validators/minimum_value.py +4 -4
- clearskies/validators/required.py +2 -4
- clearskies/validators/timedelta.py +8 -9
- clearskies/validators/unique.py +2 -3
- clear_skies-2.0.7.dist-info/RECORD +0 -251
- {clear_skies-2.0.7.dist-info → clear_skies-2.0.9.dist-info}/WHEEL +0 -0
- {clear_skies-2.0.7.dist-info → clear_skies-2.0.9.dist-info}/licenses/LICENSE +0 -0
|
@@ -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
|
-
|
|
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
|
-
|
|
56
|
+
"secrets",
|
|
57
57
|
"SecurityHeader",
|
|
58
58
|
"security_headers",
|
|
59
59
|
"validators",
|
|
@@ -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
|
|
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 =
|
|
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
|
|
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
|
-
|
|
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 =
|
|
22
|
+
jwks_url = configs.String(required=True)
|
|
21
23
|
|
|
22
24
|
"""
|
|
23
25
|
The audience to accept JWTs for.
|
|
24
26
|
"""
|
|
25
|
-
audience =
|
|
27
|
+
audience = configs.StringList(default=[])
|
|
26
28
|
|
|
27
29
|
"""
|
|
28
30
|
The expected issuer of the JWTs.
|
|
29
31
|
"""
|
|
30
|
-
issuer =
|
|
32
|
+
issuer = configs.String(default="")
|
|
31
33
|
|
|
32
34
|
"""
|
|
33
35
|
The allowed algorithms
|
|
34
36
|
"""
|
|
35
|
-
algorithms =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
52
|
+
documentation_security_name = configs.String(default="jwt")
|
|
51
53
|
|
|
52
54
|
"""
|
|
53
55
|
The environment helper.
|
|
54
56
|
"""
|
|
55
|
-
environment =
|
|
57
|
+
environment = di.inject.Environment()
|
|
56
58
|
|
|
57
59
|
"""
|
|
58
60
|
The requests object.
|
|
59
61
|
"""
|
|
60
|
-
requests =
|
|
62
|
+
requests = di.inject.Requests()
|
|
61
63
|
|
|
62
64
|
"""
|
|
63
65
|
The JoseJwt library
|
|
64
66
|
"""
|
|
65
|
-
jose_jwt =
|
|
67
|
+
jose_jwt = di.inject.ByName("jose_jwt")
|
|
66
68
|
|
|
67
69
|
"""
|
|
68
70
|
The current time
|
|
69
71
|
"""
|
|
70
|
-
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
|
|
82
|
+
_jwks_fetched: datetime.datetime
|
|
81
83
|
|
|
82
|
-
@
|
|
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.
|
|
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
|
|
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
|
-
|
|
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 =
|
|
195
|
-
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
456
|
+
documentation_security_name = configs.String(default="ApiKey")
|
|
459
457
|
|
|
460
|
-
_secret: str = None
|
|
461
|
-
_alternate_secret: str
|
|
458
|
+
_secret: str | None = None
|
|
459
|
+
_alternate_secret: str | None = None
|
|
462
460
|
|
|
463
|
-
@
|
|
461
|
+
@decorators.parameters_to_properties
|
|
464
462
|
def __init__(
|
|
465
463
|
self,
|
|
466
464
|
secret_key: str = "",
|