clear-skies 2.0.0__py3-none-any.whl → 2.0.2__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.0.dist-info → clear_skies-2.0.2.dist-info}/METADATA +2 -2
- {clear_skies-2.0.0.dist-info → clear_skies-2.0.2.dist-info}/RECORD +78 -77
- clearskies/__init__.py +5 -8
- clearskies/authentication/authentication.py +4 -0
- clearskies/authentication/authorization.py +4 -0
- clearskies/authentication/jwks.py +8 -3
- clearskies/authentication/secret_bearer.py +3 -3
- clearskies/backends/api_backend.py +2 -2
- clearskies/backends/backend.py +13 -0
- clearskies/backends/secrets_backend.py +0 -1
- clearskies/column.py +9 -8
- clearskies/columns/audit.py +3 -2
- clearskies/columns/belongs_to_id.py +2 -2
- clearskies/columns/belongs_to_model.py +6 -2
- clearskies/columns/belongs_to_self.py +2 -2
- clearskies/columns/boolean.py +6 -2
- clearskies/columns/category_tree.py +2 -2
- clearskies/columns/category_tree_children.py +2 -2
- clearskies/columns/created.py +3 -2
- clearskies/columns/created_by_authorization_data.py +2 -2
- clearskies/columns/created_by_header.py +2 -2
- clearskies/columns/created_by_ip.py +2 -2
- clearskies/columns/created_by_routing_data.py +3 -2
- clearskies/columns/created_by_user_agent.py +2 -2
- clearskies/columns/date.py +6 -2
- clearskies/columns/datetime.py +6 -2
- clearskies/columns/float.py +6 -2
- clearskies/columns/has_many.py +2 -2
- clearskies/columns/has_many_self.py +2 -2
- clearskies/columns/integer.py +6 -2
- clearskies/columns/json.py +6 -2
- clearskies/columns/many_to_many_ids.py +6 -2
- clearskies/columns/many_to_many_ids_with_data.py +6 -2
- clearskies/columns/many_to_many_models.py +6 -2
- clearskies/columns/many_to_many_pivots.py +3 -2
- clearskies/columns/phone.py +3 -2
- clearskies/columns/select.py +3 -2
- clearskies/columns/string.py +4 -0
- clearskies/columns/timestamp.py +6 -2
- clearskies/columns/updated.py +2 -2
- clearskies/columns/uuid.py +2 -2
- clearskies/configs/__init__.py +4 -1
- clearskies/configs/config.py +4 -1
- clearskies/configs/endpoint_list.py +28 -0
- clearskies/contexts/cli.py +4 -0
- clearskies/contexts/context.py +13 -0
- clearskies/contexts/wsgi.py +4 -0
- clearskies/contexts/wsgi_ref.py +4 -0
- clearskies/{parameters_to_properties.py → decorators.py} +2 -0
- clearskies/di/di.py +2 -2
- clearskies/di/injectable_properties.py +2 -2
- clearskies/endpoint.py +7 -6
- clearskies/endpoint_group.py +14 -1
- clearskies/endpoints/callable.py +5 -4
- clearskies/endpoints/create.py +1 -1
- clearskies/endpoints/delete.py +1 -1
- clearskies/endpoints/get.py +1 -1
- clearskies/endpoints/health_check.py +1 -1
- clearskies/endpoints/list.py +1 -1
- clearskies/endpoints/restful_api.py +2 -2
- clearskies/endpoints/simple_search.py +1 -1
- clearskies/endpoints/update.py +1 -1
- clearskies/model.py +1214 -64
- clearskies/query/query.py +4 -4
- clearskies/security_header.py +7 -0
- clearskies/security_headers/cache_control.py +2 -2
- clearskies/security_headers/cors.py +2 -2
- clearskies/security_headers/csp.py +2 -2
- clearskies/security_headers/hsts.py +2 -2
- clearskies/validator.py +12 -0
- clearskies/validators/after_column.py +2 -2
- clearskies/validators/in_the_future.py +1 -1
- clearskies/validators/in_the_past.py +1 -1
- clearskies/validators/required.py +0 -1
- clearskies/validators/timedelta.py +2 -2
- clearskies/validators/unique.py +0 -1
- {clear_skies-2.0.0.dist-info → clear_skies-2.0.2.dist-info}/LICENSE +0 -0
- {clear_skies-2.0.0.dist-info → clear_skies-2.0.2.dist-info}/WHEEL +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: clear-skies
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.2
|
|
4
4
|
Summary: A framework for building backends in the cloud
|
|
5
5
|
License: MIT
|
|
6
6
|
Author: Conor Mancone
|
|
@@ -25,7 +25,7 @@ Requires-Dist: pymysql (>=1.1.0,<2.0.0) ; extra == "mysql"
|
|
|
25
25
|
Requires-Dist: requests (>=2.31.0,<3.0.0)
|
|
26
26
|
Requires-Dist: typing-extensions (>=4.12.0,<5.0.0) ; python_version == "3.10"
|
|
27
27
|
Requires-Dist: wrapt (>=1.16.0,<2.0.0)
|
|
28
|
-
Project-URL: Repository, https://github.com/
|
|
28
|
+
Project-URL: Repository, https://github.com/clearskies-py/clearskies
|
|
29
29
|
Description-Content-Type: text/markdown
|
|
30
30
|
|
|
31
31
|
# clearskies
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
clearskies/__init__.py,sha256=
|
|
1
|
+
clearskies/__init__.py,sha256=x9m4Bu6Fs4YwaT6p1i7R-6juPugmYyKYtoiyOaL_QbU,1083
|
|
2
2
|
clearskies/action.py,sha256=x_T05XaC0m-BYPZWaSR94XbE7T5ZK1vRtSfEszfZuDg,121
|
|
3
3
|
clearskies/authentication/__init__.py,sha256=MxXNCWhKbha7TPu_MAyssfTdOCEDSNBwzshEHx8gfHo,525
|
|
4
|
-
clearskies/authentication/authentication.py,sha256=
|
|
5
|
-
clearskies/authentication/authorization.py,sha256=
|
|
4
|
+
clearskies/authentication/authentication.py,sha256=N-g2qNDGuJaSlMwc_SRwsjAuqOMLI2nKfUzSCF7HOFo,1240
|
|
5
|
+
clearskies/authentication/authorization.py,sha256=3XEOUlQx9XeRPpNEk4GCa-xWafrz-3Xd0T1PCSFuVxY,570
|
|
6
6
|
clearskies/authentication/authorization_pass_through.py,sha256=d3XKcUWmI_u9QBBTGKrU1hdD-LM56iH60Qv_xc8TE6k,512
|
|
7
|
-
clearskies/authentication/jwks.py,sha256=
|
|
7
|
+
clearskies/authentication/jwks.py,sha256=V_Kgcb0peoPRqEej-Ii1GiPF3qoed_ub0nuc_Rx8_EU,4860
|
|
8
8
|
clearskies/authentication/public.py,sha256=GSNl4X4fnB25BZoXSo8nqL0iZCa9rzfvPfIsJ2Y34B4,84
|
|
9
|
-
clearskies/authentication/secret_bearer.py,sha256=
|
|
9
|
+
clearskies/authentication/secret_bearer.py,sha256=JoGBD2s7MubidFi1L0hyB_A4V3w5n1LKsokLiT44fBc,17590
|
|
10
10
|
clearskies/autodoc/__init__.py,sha256=JRUAmd0he8iGlgiZvxewLMIXJqnOFEdvlaKAtHpC2lo,124
|
|
11
11
|
clearskies/autodoc/formats/__init__.py,sha256=3rhoLKmEwT6PljaHvOl9qdeMIXyD7PQBZbqZKy5Mb5I,56
|
|
12
12
|
clearskies/autodoc/formats/oai3_json/__init__.py,sha256=C9DzR38Uu0t41osMzhQx6K-hyaNWA1t6agTzOXW9k88,142
|
|
@@ -47,49 +47,49 @@ clearskies/autodoc/schema/password.py,sha256=hSXPvHoXEbG-KHQFxXubEarxSMg9Cki_n8t
|
|
|
47
47
|
clearskies/autodoc/schema/schema.py,sha256=KZ4r88OUMzbeV4DQ3yUhK8bHS_zJiimsWPWc1rJVDZs,244
|
|
48
48
|
clearskies/autodoc/schema/string.py,sha256=GXRI-aU8PYmjfnhmfaOe4vq7JASb-aB4SiFeG-EmJY0,60
|
|
49
49
|
clearskies/backends/__init__.py,sha256=krBB3gHLP-lVYkm5ksdK7teEtouAHhL3EC__WGVnF4A,3157
|
|
50
|
-
clearskies/backends/api_backend.py,sha256=
|
|
51
|
-
clearskies/backends/backend.py,sha256=
|
|
50
|
+
clearskies/backends/api_backend.py,sha256=IOT4JqSxtKGqyBawg0TvE8rQJpHcHdQ8t0LDaLXfxow,54879
|
|
51
|
+
clearskies/backends/backend.py,sha256=_TFMXAHgIY-vPGhx8SYjSTbVd9r-6KpLbLnfNsCXuV8,5874
|
|
52
52
|
clearskies/backends/cursor_backend.py,sha256=lMnkHATU2Fxr0ihgrVnvI9IVnUPxNfjzpkdJIok2mXY,14360
|
|
53
53
|
clearskies/backends/memory_backend.py,sha256=fXgbFcTvbZeKHs4CsI_yNsofHSjWqZqY9QWI7uJzVws,34260
|
|
54
|
-
clearskies/backends/secrets_backend.py,sha256=
|
|
55
|
-
clearskies/column.py,sha256=
|
|
54
|
+
clearskies/backends/secrets_backend.py,sha256=r1k7YfZ7AKMsN2wWwx939QKeYWgh6PVkdiKayzPBDv0,4275
|
|
55
|
+
clearskies/column.py,sha256=_VkvfD_6d4brTkChUbevJe9e7sla8ovsiJ5cH1evoH4,52070
|
|
56
56
|
clearskies/columns/__init__.py,sha256=a__-1hv-aMV3RU0Sd-BEkfItSJaG51EF2VeRQoTdka8,1990
|
|
57
|
-
clearskies/columns/audit.py,sha256=
|
|
58
|
-
clearskies/columns/belongs_to_id.py,sha256=
|
|
59
|
-
clearskies/columns/belongs_to_model.py,sha256=
|
|
60
|
-
clearskies/columns/belongs_to_self.py,sha256=
|
|
61
|
-
clearskies/columns/boolean.py,sha256=
|
|
62
|
-
clearskies/columns/category_tree.py,sha256=
|
|
57
|
+
clearskies/columns/audit.py,sha256=0BBpBFsxz6JBWDPoyCb73EDJnN95pj1TXtTZqbT1qKU,7628
|
|
58
|
+
clearskies/columns/belongs_to_id.py,sha256=VtI_LjaBRMNGoeZlF4WvTCgWXNdKP06c0ca5BrnnLbs,17792
|
|
59
|
+
clearskies/columns/belongs_to_model.py,sha256=b0eBBP6EoDEVOKP4ZZpdrD4BOadblTHzuH-KLWjOIrA,5807
|
|
60
|
+
clearskies/columns/belongs_to_self.py,sha256=TbcXmRp6_OAycElrnOqaIZK5aDDheTsRoGc1M8pbAm0,3762
|
|
61
|
+
clearskies/columns/boolean.py,sha256=CiYgMWvNdom8KDQk2Jt_kwWDtrLIyymrmLrP9zTYFTE,3938
|
|
62
|
+
clearskies/columns/category_tree.py,sha256=7z6tUi1YKaCH7GjcgaZ9rKXIX4aa0Dqfo6jmpWIxUvU,11114
|
|
63
63
|
clearskies/columns/category_tree_ancestors.py,sha256=FRFAMD3E6GzOzzLkY-IhWBdiYSpHHnthF5kX8V3iPr8,1380
|
|
64
|
-
clearskies/columns/category_tree_children.py,sha256=
|
|
64
|
+
clearskies/columns/category_tree_children.py,sha256=N9E_YUIGRKoLCCGRD58a8HELiKfgsk12VtEZ7D7MCio,5239
|
|
65
65
|
clearskies/columns/category_tree_descendants.py,sha256=qM3rgqmxpUkOcCz8b-xCsMDRxjrBpPKyQ_FLGG0ItUc,1234
|
|
66
|
-
clearskies/columns/created.py,sha256=
|
|
67
|
-
clearskies/columns/created_by_authorization_data.py,sha256=
|
|
68
|
-
clearskies/columns/created_by_header.py,sha256=
|
|
69
|
-
clearskies/columns/created_by_ip.py,sha256=
|
|
70
|
-
clearskies/columns/created_by_routing_data.py,sha256=
|
|
71
|
-
clearskies/columns/created_by_user_agent.py,sha256=
|
|
72
|
-
clearskies/columns/date.py,sha256=
|
|
73
|
-
clearskies/columns/datetime.py,sha256=
|
|
66
|
+
clearskies/columns/created.py,sha256=SPQb2rj7H8tpmJUV9c3Q7QyEvWuAhOac5OYMhSuMVvg,2835
|
|
67
|
+
clearskies/columns/created_by_authorization_data.py,sha256=wYTcFUc3sE1T8vp6iPuB7FrEXCSQzEKXkh1ysDsgI3Q,4796
|
|
68
|
+
clearskies/columns/created_by_header.py,sha256=e1gkXljx_vx8ephl7haCjDQJGRyMeoSqlkGV5HYeVrE,3644
|
|
69
|
+
clearskies/columns/created_by_ip.py,sha256=S9Y0o4Ldv9VHSgZhcNRJO_SHzxLJxyPlR8r8wK1awvM,2783
|
|
70
|
+
clearskies/columns/created_by_routing_data.py,sha256=BoUuIQferx60dJlDr1RO57ww7oeNYhTee9dYKlZiGCU,3626
|
|
71
|
+
clearskies/columns/created_by_user_agent.py,sha256=1UzxSQkMtYNVWR3S7vNVIECTysvPofRYQQQMewWGuSI,2868
|
|
72
|
+
clearskies/columns/date.py,sha256=Ilyr_Ho4AA9He_FdooJ2gREJcGajXseFQLSw2H_EcEY,8826
|
|
73
|
+
clearskies/columns/datetime.py,sha256=vURADJYfxyiq0j0Lz5uZtE95t-544G0_uCkl9ppCEcw,10570
|
|
74
74
|
clearskies/columns/email.py,sha256=74es6fdA4MJQ9cm5WfEgEvqZgj5pdnFE96cKN1YQ4b0,1868
|
|
75
|
-
clearskies/columns/float.py,sha256=
|
|
76
|
-
clearskies/columns/has_many.py,sha256=
|
|
77
|
-
clearskies/columns/has_many_self.py,sha256=
|
|
75
|
+
clearskies/columns/float.py,sha256=1XXxuncEAzqqqtCnshpnt-yp4vgI8WcelwSJ2imo4-8,4560
|
|
76
|
+
clearskies/columns/has_many.py,sha256=Frd1LQRiAyh0o2GVrJBlztuaAOAAF_7FzgDt0ZyuRPM,18642
|
|
77
|
+
clearskies/columns/has_many_self.py,sha256=9EG4A7i3W4atOsHPbEKIahoU0QgWohbRFIA29dBOSxg,2403
|
|
78
78
|
clearskies/columns/has_one.py,sha256=8cwfNmAFO1DdfBsZ1scpc3LwLoSUHWR_zPn4T-DN0Mg,396
|
|
79
|
-
clearskies/columns/integer.py,sha256=
|
|
80
|
-
clearskies/columns/json.py,sha256=
|
|
81
|
-
clearskies/columns/many_to_many_ids.py,sha256=
|
|
82
|
-
clearskies/columns/many_to_many_ids_with_data.py,sha256=
|
|
83
|
-
clearskies/columns/many_to_many_models.py,sha256=
|
|
84
|
-
clearskies/columns/many_to_many_pivots.py,sha256=
|
|
85
|
-
clearskies/columns/phone.py,sha256=
|
|
86
|
-
clearskies/columns/select.py,sha256=
|
|
87
|
-
clearskies/columns/string.py,sha256=
|
|
88
|
-
clearskies/columns/timestamp.py,sha256=
|
|
89
|
-
clearskies/columns/updated.py,sha256=
|
|
90
|
-
clearskies/columns/uuid.py,sha256=
|
|
79
|
+
clearskies/columns/integer.py,sha256=z4o0t13h7MC9vGxsr3fo0_TLHHSZB2uSqE_QDDUakt8,4650
|
|
80
|
+
clearskies/columns/json.py,sha256=4uKs1fu-3ulnW-6iwb6GfvEEuv5uXeWgmiNC7R40M98,3565
|
|
81
|
+
clearskies/columns/many_to_many_ids.py,sha256=kkLfb14EKInkkV5xVM9sXTgf0PLmIQlDOJNRIRlzLCY,14265
|
|
82
|
+
clearskies/columns/many_to_many_ids_with_data.py,sha256=FhXPvAtHtBCne-bcwURQplm374t7tVLcEIicb40LpYg,12017
|
|
83
|
+
clearskies/columns/many_to_many_models.py,sha256=CMrkyja0FWXh5BwlZMLZ5ltl6I5Avpi3K78C3SOgV40,7345
|
|
84
|
+
clearskies/columns/many_to_many_pivots.py,sha256=ECG5GYOE_9mGGmXWHdsFMZF5IcLksPxTq8V33SHzL8M,5715
|
|
85
|
+
clearskies/columns/phone.py,sha256=msrCCha75bAVERQ3TD7dcR78PA2sx27IIPic9qE9BQ0,5219
|
|
86
|
+
clearskies/columns/select.py,sha256=0_0-Qw8vuJKLW6NV5w72FJPB_HP9bDQ0YR3eKfqqpQE,2751
|
|
87
|
+
clearskies/columns/string.py,sha256=0KoknprsC75UWqEXQ60t_CuPJv2vwszXpRWBhh8Hl_Y,2586
|
|
88
|
+
clearskies/columns/timestamp.py,sha256=8ZJhaM-RyiyPHy8ABJLWMRhCrnoA-3ZbterfwTj-e-w,5934
|
|
89
|
+
clearskies/columns/updated.py,sha256=XyhfcjyElX4HeOek4M_qUPuHQZ8IxeK1v130dx12hv0,3453
|
|
90
|
+
clearskies/columns/uuid.py,sha256=des-JoGJ5llYjM5xtnLYoEFRBJPmJkvA-hxBwQAiO4o,2404
|
|
91
91
|
clearskies/configs/README.md,sha256=4-r2FvkrBTrKkcKgJ5O3Qj1RZ7nnkknenKze4XYlQDs,4827
|
|
92
|
-
clearskies/configs/__init__.py,sha256=
|
|
92
|
+
clearskies/configs/__init__.py,sha256=nfaevClmzwsTMYDH4R_6t2VRg4OoeInIocvclIQ-8kY,5079
|
|
93
93
|
clearskies/configs/actions.py,sha256=5OwrokU8uTSSQ_6SvL94SOP5JVkvRRFGAXNcCdMt8aQ,1388
|
|
94
94
|
clearskies/configs/any.py,sha256=_nac0cZY9uRhwGQZqj2N72ZFehYqOedb97lPADP3Yg8,352
|
|
95
95
|
clearskies/configs/any_dict.py,sha256=B8Gd0zwC-6UxvMvPsXMJySzVMADxG3oxnrhgBnJWCGo,871
|
|
@@ -101,10 +101,11 @@ clearskies/configs/boolean_or_callable.py,sha256=nvvWD_A5HoxW-6_rZJL23_1517T8IQ6
|
|
|
101
101
|
clearskies/configs/callable_config.py,sha256=gcTlRwCppdaj1gFuCugc4ahxMCTEDKD_z_f85eadWpc,650
|
|
102
102
|
clearskies/configs/columns.py,sha256=WhdpPUiwVqwBO2XCDDiMym2nWr_1-L1JoICyob4T6Wo,1258
|
|
103
103
|
clearskies/configs/conditions.py,sha256=a09bVac4-10ZtKPQGSu_e9VnHnwITwy_7_T4NekXpgs,1008
|
|
104
|
-
clearskies/configs/config.py,sha256=
|
|
104
|
+
clearskies/configs/config.py,sha256=Mw9wnPzEekHGfmNFH9f2vJ3BOPx3l1ktxwZc95flyQg,873
|
|
105
105
|
clearskies/configs/datetime.py,sha256=jRYXwLeTUqh8FNwWq_0yYoSH8YU9NEhYhuQScr56nTg,653
|
|
106
106
|
clearskies/configs/datetime_or_callable.py,sha256=81YCDk0g5cIxdXxgem1Ei6m7gUI213Cfryp3GyBfpD4,799
|
|
107
107
|
clearskies/configs/endpoint.py,sha256=NEDthtdPzejAot7yzUjC01PvQJR9BIyk5YnWXCi1w9I,759
|
|
108
|
+
clearskies/configs/endpoint_list.py,sha256=I_o5T46XT-I-tbQODJbpCF9LkgEccOz97mYFZuwjx4M,1144
|
|
108
109
|
clearskies/configs/float.py,sha256=3870-DkoXCyeOSwUGa69BzhG4XI_tNfei5cX-q1b1UQ,585
|
|
109
110
|
clearskies/configs/float_or_callable.py,sha256=lIOg20Xw0AOB0k3I7f0b98srVgMWQKcyM4aWRT0tUI4,708
|
|
110
111
|
clearskies/configs/integer.py,sha256=d6uoQaUoE01rrWOsxYl1vHG_raUFmB0AUOgoCWwOVC0,584
|
|
@@ -137,14 +138,15 @@ clearskies/configs/writeable_model_column.py,sha256=ZwroRcvmNznggtNMSZiAmKAvllcV
|
|
|
137
138
|
clearskies/configs/writeable_model_columns.py,sha256=D8E4aQRg1MX8-TM8lkyrWE-G_YoX2eerX4KLszgk0hA,323
|
|
138
139
|
clearskies/configurable.py,sha256=FFkKwlQk17KOLnZiTsTF3hrCu2WxRSuuddNNhz9aySY,3049
|
|
139
140
|
clearskies/contexts/__init__.py,sha256=f7XVUq2UKlDH6fjmcUWk6lbe9p_OaGpZ5ZjM6CuwTGQ,247
|
|
140
|
-
clearskies/contexts/cli.py,sha256=
|
|
141
|
-
clearskies/contexts/context.py,sha256=
|
|
142
|
-
clearskies/contexts/wsgi.py,sha256=
|
|
143
|
-
clearskies/contexts/wsgi_ref.py,sha256=
|
|
141
|
+
clearskies/contexts/cli.py,sha256=HSzHieVsD3a0uQb6FBue17HVT4PjSY8LWhjW3rw7lQw,285
|
|
142
|
+
clearskies/contexts/context.py,sha256=jbd8JdDkFruHiAYHZWrLjOvqz31LkvfApArCOVwkyfo,3630
|
|
143
|
+
clearskies/contexts/wsgi.py,sha256=lENadrI53LYUCa3Mn4JjxhTn-53Ry9l6w2kBU3CQ5AM,611
|
|
144
|
+
clearskies/contexts/wsgi_ref.py,sha256=Tkq0QYE7_ZdYvEcRKbyh-6UwwuExUadKdylwdxcCmQQ,1814
|
|
145
|
+
clearskies/decorators.py,sha256=I91l4Iwe2swzkZPWUWywmIV2LfTBlw9IWmUfspKm3yY,1040
|
|
144
146
|
clearskies/di/__init__.py,sha256=uJ1NkACEIaot7ALr3M6vQ55Pe9By_s_1z52ssAnw28E,466
|
|
145
147
|
clearskies/di/additional_config.py,sha256=65INxw8aqTZQsyaKPj-aQmd6FBe4_4DwibXGgWYBy14,5139
|
|
146
148
|
clearskies/di/additional_config_auto_import.py,sha256=XYw0Kcnp6hp-ee-c0YjiATwJvRb2E82xk9PuoX9dGRY,758
|
|
147
|
-
clearskies/di/di.py,sha256=
|
|
149
|
+
clearskies/di/di.py,sha256=pWNzUDd2nxnKZP12I5SpAL3PYBWCmnM6jsT7i7cEGCM,45137
|
|
148
150
|
clearskies/di/inject/__init__.py,sha256=plEkWId-VyhvqX5KM2HhdCqi7_ZJzPmFz69cPAo812Y,643
|
|
149
151
|
clearskies/di/inject/by_class.py,sha256=dUA_ZseLZWT30wnkg272rWwe5FzUpr0gCMMQP_HFahc,796
|
|
150
152
|
clearskies/di/inject/by_name.py,sha256=oEfzeotUXPbUAiBrkE7i19nD2ISk59EEwCH3pcgSmqA,639
|
|
@@ -157,24 +159,24 @@ clearskies/di/inject/secrets.py,sha256=zK7ZJJwZS4l13OVlbBs8ESL8yMxa6jDa4_tiLUvUT
|
|
|
157
159
|
clearskies/di/inject/utcnow.py,sha256=3OAzR82k0yEfQ65bJ-4Q7gCZH-Y_viucPJQtfcHu_AA,365
|
|
158
160
|
clearskies/di/inject/uuid.py,sha256=ncXvVNevj6CCwxh1r1IGojEPZaOuHnRjYT7B69RTVhs,400
|
|
159
161
|
clearskies/di/injectable.py,sha256=TTgqhx494470I61-88BUQmHmevfat-wXVseKl8pQOEk,852
|
|
160
|
-
clearskies/di/injectable_properties.py,sha256=
|
|
162
|
+
clearskies/di/injectable_properties.py,sha256=yJP0J7l7tjG2soyXtrfDgktE7M8tQHaP-55Cmtq0b7M,6466
|
|
161
163
|
clearskies/di/test_module/__init__.py,sha256=7YHQF7JHP0FdI7GdEGANSZ_t1EISQYhUNm1wqOg0NKw,88
|
|
162
164
|
clearskies/di/test_module/another_module/__init__.py,sha256=8SRmHPDepLKGWTUSc1ucDF6U8mJPsNDsBDmBQCpzPWo,35
|
|
163
165
|
clearskies/di/test_module/module_class.py,sha256=I_-wnMuHfbsvti-7d2Z4bXnr6deo__uvww9nds9qrlE,46
|
|
164
166
|
clearskies/end.py,sha256=Z4C9n7OvBky_640oJ8d19jIr_ap1iqjGJqqO6s_zF5g,8919
|
|
165
|
-
clearskies/endpoint.py,sha256=
|
|
166
|
-
clearskies/endpoint_group.py,sha256=
|
|
167
|
+
clearskies/endpoint.py,sha256=G3oFdAYOFeYVYpMwxib6mMO5FpuF2DtrTBW04spJ-aw,48827
|
|
168
|
+
clearskies/endpoint_group.py,sha256=OiGCxVyhLMORswawtYey9xLtCt4qjK8hGb9tIfPi5sc,11285
|
|
167
169
|
clearskies/endpoints/__init__.py,sha256=CZJQ3rHF1GA0QvH9CKxUFM1pEnJrg-2wAj5rzIDdzjc,689
|
|
168
170
|
clearskies/endpoints/advanced_search.py,sha256=c1fj81nohHGqe56t00o6kLN3XIh3kfy-aKy_C1pxwgw,21835
|
|
169
|
-
clearskies/endpoints/callable.py,sha256=
|
|
170
|
-
clearskies/endpoints/create.py,sha256=
|
|
171
|
-
clearskies/endpoints/delete.py,sha256=
|
|
172
|
-
clearskies/endpoints/get.py,sha256=
|
|
173
|
-
clearskies/endpoints/health_check.py,sha256=
|
|
174
|
-
clearskies/endpoints/list.py,sha256=
|
|
175
|
-
clearskies/endpoints/restful_api.py,sha256=
|
|
176
|
-
clearskies/endpoints/simple_search.py,sha256=
|
|
177
|
-
clearskies/endpoints/update.py,sha256=
|
|
171
|
+
clearskies/endpoints/callable.py,sha256=J4XhxraxlWi09MPTh5cVJxX0iRb-xn0PIsT8wMzATQ4,13943
|
|
172
|
+
clearskies/endpoints/create.py,sha256=Ex4yciWncdvu7XX__y4rmMXil-07SwPdV5rip8AKkOU,8743
|
|
173
|
+
clearskies/endpoints/delete.py,sha256=voXUUs-BDhI1FqppAV6KJzsL4CLROSBMbb6gLzkNRUY,5282
|
|
174
|
+
clearskies/endpoints/get.py,sha256=RRiNLDyCJdRMOVPpzKcMRNwKnaGehL-ZhDfXtOF9SNg,10368
|
|
175
|
+
clearskies/endpoints/health_check.py,sha256=IRdBVR7CZts5o71dOd3qtP9U_WjHv_1tmceCocJt914,5506
|
|
176
|
+
clearskies/endpoints/list.py,sha256=APek0rCtNZJScbpX6PgPE1rd3Uy5OEgZ3-bsh3LbwiI,25811
|
|
177
|
+
clearskies/endpoints/restful_api.py,sha256=FjNYg4-qeDjjOSc8QPPFQ74SW4b_84zyQ38ck-g5pRU,16635
|
|
178
|
+
clearskies/endpoints/simple_search.py,sha256=J5TT32lvimf9XgO1cGjCpK9Pjy9NjuoihS3CGlcUwrE,9714
|
|
179
|
+
clearskies/endpoints/update.py,sha256=hUch9MgMhxq52AiqqI6NtxeJTOPqIfXsuZ_7XVaCjEw,7528
|
|
178
180
|
clearskies/environment.py,sha256=LV7XztYYUZhaL8zWXi2EC-u6DLrCPxJTeUzmCy7p-ZA,3703
|
|
179
181
|
clearskies/exceptions/__init__.py,sha256=invmb0wSTpkUuPSEl49bAjU8ing8jt0vEpF2TTnvd_I,595
|
|
180
182
|
clearskies/exceptions/authentication.py,sha256=VlNS0Aq2_6LbG0jiE8jULpS54jNW8a8px0gPrK3EZCc,42
|
|
@@ -198,13 +200,12 @@ clearskies/input_outputs/input_output.py,sha256=W5h8a9XFEqwi3h6v17okblz8sOozUj-m
|
|
|
198
200
|
clearskies/input_outputs/programmatic.py,sha256=gfsNFIfiF5cvxi1aS9SgArcKYUgkL5gyxjCMQLwgivY,1711
|
|
199
201
|
clearskies/input_outputs/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
200
202
|
clearskies/input_outputs/wsgi.py,sha256=94tgWxiwpwvJA9G4nG-hCHteg0pq9pIDCVhnheZuAQc,2544
|
|
201
|
-
clearskies/model.py,sha256=
|
|
202
|
-
clearskies/parameters_to_properties.py,sha256=kbU9Ln2mU3XX4p-QNepGgS4HiQ1BUuJnhx9T6kgB9jw,1004
|
|
203
|
+
clearskies/model.py,sha256=MMeoMvwH_Ijca0hLxEf0f8UTczzliu1Lj91CxYOHogg,73385
|
|
203
204
|
clearskies/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
204
205
|
clearskies/query/__init__.py,sha256=ISF80_cG3rd574sRTdKKPxAdlSjtQh_ClXKKs_MSSSo,277
|
|
205
206
|
clearskies/query/condition.py,sha256=9RJrYya1Kfzx0L_BMDKQhYkN9dB7NAq5kRK5mz51YdY,8624
|
|
206
207
|
clearskies/query/join.py,sha256=4lrDUQzck7klKY_VYkc4SVK95SVwyy3SVTvasnsAEyc,4713
|
|
207
|
-
clearskies/query/query.py,sha256=
|
|
208
|
+
clearskies/query/query.py,sha256=t9tV67CeI6I1u5Uhu6KPT_qiFjvLc3GnwVM2acbXuAU,6088
|
|
208
209
|
clearskies/query/sort.py,sha256=c-EtIkjg3kLjwSTdXD7sfyx-mNUhAepUV-2izprh3iY,754
|
|
209
210
|
clearskies/schema.py,sha256=9S0RuFBiydsDy4kATy2BBsXJ9aWHILW0ja_q9F4kxb0,2872
|
|
210
211
|
clearskies/secrets/__init__.py,sha256=WauemayzKCr-guvMu6wCL4hQUIbkDJFuNKEm8Rd6cUs,136
|
|
@@ -215,34 +216,34 @@ clearskies/secrets/akeyless.py,sha256=IUI4RYD-XdNQvyhpuElnw_O74ZY4tJUUtCHmd0dArU
|
|
|
215
216
|
clearskies/secrets/exceptions/__init__.py,sha256=j-SLHD-DL0CT4cZXibD9kXHk63JEl_UKX6xL_nq1EfE,32
|
|
216
217
|
clearskies/secrets/exceptions/not_found.py,sha256=_lZwovDrd18dUHDop5pF4mhexBPNr126xF2gOLA2-EA,36
|
|
217
218
|
clearskies/secrets/secrets.py,sha256=TYN0T7XjmvETtSacDKEkyGGO9kDFCoPl5A7FNkvyNj4,1593
|
|
218
|
-
clearskies/security_header.py,sha256=
|
|
219
|
+
clearskies/security_header.py,sha256=suV3PMGFFJzMIsfDiT4t1sArkLVGzepyoftY0ddBWkM,431
|
|
219
220
|
clearskies/security_headers/__init__.py,sha256=JUpc4Y8dNBinDQAkP7OOABR7N787-lRR23boSWmY6Us,285
|
|
220
|
-
clearskies/security_headers/cache_control.py,sha256=
|
|
221
|
-
clearskies/security_headers/cors.py,sha256=
|
|
222
|
-
clearskies/security_headers/csp.py,sha256=
|
|
223
|
-
clearskies/security_headers/hsts.py,sha256=
|
|
221
|
+
clearskies/security_headers/cache_control.py,sha256=n_fcN4JPfHH8oCC6iSdBaDcAw-5JgPjZQWbD_lMg6qQ,2251
|
|
222
|
+
clearskies/security_headers/cors.py,sha256=zhTLo1FiCwSTgDOYURz7RB0XqLeP456A8mcP_mHBd48,1831
|
|
223
|
+
clearskies/security_headers/csp.py,sha256=jA0ms1X6w52W86-RXcW6dblI_RL7DlrjKt57gcvoNAM,2965
|
|
224
|
+
clearskies/security_headers/hsts.py,sha256=_2EjHgH-OdQ24NF4eWhIi71wcXz2u2K5Q1wwR4NOTe0,732
|
|
224
225
|
clearskies/security_headers/x_content_type_options.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
225
226
|
clearskies/security_headers/x_frame_options.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
226
227
|
clearskies/test_base.py,sha256=Nw6qwsPMOx-QT_6wXn6f9P4BcA7OeGrs83IC2naNMYY,205
|
|
227
228
|
clearskies/typing.py,sha256=Kme9es5c_lw4qQCbCL7lKXtDemVl0_qBy7jxKIu4yyg,378
|
|
228
|
-
clearskies/validator.py,sha256=
|
|
229
|
+
clearskies/validator.py,sha256=nGFwe74LMJnEO7r2mgwd_V25bLpxUDH7IMolm-zk-3w,1332
|
|
229
230
|
clearskies/validators/__init__.py,sha256=Hz0L5Y7EkeK4Px6WcdQ3ku6VqUGpLHX0ZWwCpT1ts1U,1248
|
|
230
|
-
clearskies/validators/after_column.py,sha256=
|
|
231
|
+
clearskies/validators/after_column.py,sha256=6qFBodmcrVELDAdvc7w300RDIBFQlsgAmAIJ2-Gv6n4,2366
|
|
231
232
|
clearskies/validators/before_column.py,sha256=fDXhgPwGvnjk1Xy6iwebE8q--BeD48uu3cVGpRGTSBc,528
|
|
232
|
-
clearskies/validators/in_the_future.py,sha256=
|
|
233
|
+
clearskies/validators/in_the_future.py,sha256=fKniwgaweKiPrVGqLT1CltmLcdc6zlK9JNA7vwU-w_8,998
|
|
233
234
|
clearskies/validators/in_the_future_at_least.py,sha256=C8g6xizvjgB9ZYI8lsccqmxiWR-AmZDuV2hW9gJ3w3A,407
|
|
234
235
|
clearskies/validators/in_the_future_at_most.py,sha256=55Zlw4hEmjm7VbUAesvFpP2Ha1gcEZJuPMZE_15bY0Y,361
|
|
235
|
-
clearskies/validators/in_the_past.py,sha256=
|
|
236
|
+
clearskies/validators/in_the_past.py,sha256=lxUJQ_bcMTW5_NPhbZM1tsOn7ejC1gIBQ_wwD-tK6no,994
|
|
236
237
|
clearskies/validators/in_the_past_at_least.py,sha256=58oZEWCL9GC-8kC-VyxN_455DQC2IdF2bWLsOxqLVqU,359
|
|
237
238
|
clearskies/validators/in_the_past_at_most.py,sha256=e78fz7XIBmvbw5EAj-4xjRqiQ-Ul1xKKwMXL-erpxto,357
|
|
238
239
|
clearskies/validators/maximum_length.py,sha256=lTatC9xFQ2JAiBOJtWCrqNEPh7O5k-_L5--FAc-z05U,877
|
|
239
240
|
clearskies/validators/maximum_value.py,sha256=dy3h2LdnPlAhQoVDCtlrf9Yd8yIrmax08u_qSmBddmI,889
|
|
240
241
|
clearskies/validators/minimum_length.py,sha256=gOMbtkoWxvWT4WEPtdP_5xCTn5GsshaaTC1vADpBoao,878
|
|
241
242
|
clearskies/validators/minimum_value.py,sha256=Vz0e_9U5KYqBGqfrVBOtPiVtmNPWwFEGPAuMH1q7Ky0,890
|
|
242
|
-
clearskies/validators/required.py,sha256=
|
|
243
|
-
clearskies/validators/timedelta.py,sha256=
|
|
244
|
-
clearskies/validators/unique.py,sha256=
|
|
245
|
-
clear_skies-2.0.
|
|
246
|
-
clear_skies-2.0.
|
|
247
|
-
clear_skies-2.0.
|
|
248
|
-
clear_skies-2.0.
|
|
243
|
+
clearskies/validators/required.py,sha256=f8VE9sbvIorTIC0q_77DyDfDjAJYFJs-uTgJkAwLxX4,1362
|
|
244
|
+
clearskies/validators/timedelta.py,sha256=nFEHefllfMZsguJoSdeWzaBsxBDZfMZoIdt5jZxeg0g,1932
|
|
245
|
+
clearskies/validators/unique.py,sha256=DZA7dbLucYDShtr1bVP2pnmbzciIEMvYSrTjOKCQ4vM,1029
|
|
246
|
+
clear_skies-2.0.2.dist-info/LICENSE,sha256=3Ehd0g3YOpCj8sqj0Xjq5qbOtjjgk9qzhhD9YjRQgOA,1053
|
|
247
|
+
clear_skies-2.0.2.dist-info/METADATA,sha256=jsf2tuLi8kFkZmJENAnP9AIfNC-k_7spE1xaXXaLw0M,1762
|
|
248
|
+
clear_skies-2.0.2.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
|
249
|
+
clear_skies-2.0.2.dist-info/RECORD,,
|
clearskies/__init__.py
CHANGED
|
@@ -5,6 +5,7 @@ from . import (
|
|
|
5
5
|
columns,
|
|
6
6
|
configs,
|
|
7
7
|
contexts,
|
|
8
|
+
decorators,
|
|
8
9
|
di,
|
|
9
10
|
endpoints,
|
|
10
11
|
exceptions,
|
|
@@ -15,25 +16,21 @@ from . import (
|
|
|
15
16
|
typing,
|
|
16
17
|
validators,
|
|
17
18
|
)
|
|
18
|
-
from . import
|
|
19
|
+
from .action import Action
|
|
19
20
|
from .column import Column
|
|
20
21
|
from .configurable import Configurable
|
|
21
22
|
from .end import End # type: ignore
|
|
22
23
|
from .endpoint import Endpoint
|
|
23
24
|
from .endpoint_group import EndpointGroup
|
|
24
|
-
from .schema import Schema
|
|
25
|
-
|
|
26
|
-
parameters_to_properties = parameters_to_properties_module.parameters_to_properties
|
|
27
|
-
|
|
28
|
-
from .action import Action
|
|
29
25
|
from .environment import Environment
|
|
30
26
|
from .model import Model
|
|
27
|
+
from .schema import Schema
|
|
31
28
|
from .security_header import SecurityHeader
|
|
32
29
|
from .validator import Validator
|
|
33
30
|
|
|
34
31
|
__all__ = [
|
|
35
32
|
"Action",
|
|
36
|
-
"
|
|
33
|
+
"authentication",
|
|
37
34
|
"autodoc",
|
|
38
35
|
"backends",
|
|
39
36
|
"Column",
|
|
@@ -50,7 +47,6 @@ __all__ = [
|
|
|
50
47
|
"exceptions",
|
|
51
48
|
"functional",
|
|
52
49
|
"Model",
|
|
53
|
-
"parameters_to_properties",
|
|
54
50
|
"Schema",
|
|
55
51
|
"typing",
|
|
56
52
|
"Validator",
|
|
@@ -59,4 +55,5 @@ __all__ = [
|
|
|
59
55
|
"SecurityHeader",
|
|
60
56
|
"security_headers",
|
|
61
57
|
"validators",
|
|
58
|
+
"decorators",
|
|
62
59
|
]
|
|
@@ -2,16 +2,21 @@ import json
|
|
|
2
2
|
from typing import Any
|
|
3
3
|
|
|
4
4
|
import clearskies.configs
|
|
5
|
+
import clearskies.decorators
|
|
5
6
|
import clearskies.di
|
|
6
|
-
import clearskies.parameters_to_properties
|
|
7
7
|
from clearskies.authentication.authentication import Authentication
|
|
8
8
|
from clearskies.exceptions import ClientError
|
|
9
9
|
from clearskies.security_headers.cors import Cors
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
class Jwks(Authentication, clearskies.di.InjectableProperties):
|
|
13
|
-
"""
|
|
13
|
+
"""
|
|
14
|
+
Validate a JWT against a JWKS (JSON Web Key Set)
|
|
15
|
+
"""
|
|
14
16
|
|
|
17
|
+
"""
|
|
18
|
+
The URL of the JWKS
|
|
19
|
+
"""
|
|
15
20
|
jwks_url = clearskies.configs.String(required=True)
|
|
16
21
|
|
|
17
22
|
"""
|
|
@@ -74,7 +79,7 @@ class Jwks(Authentication, clearskies.di.InjectableProperties):
|
|
|
74
79
|
"""
|
|
75
80
|
_jwks_fetched = None
|
|
76
81
|
|
|
77
|
-
@clearskies.
|
|
82
|
+
@clearskies.decorators.parameters_to_properties
|
|
78
83
|
def __init__(
|
|
79
84
|
self,
|
|
80
85
|
jwks_url: str,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import clearskies.configs
|
|
2
|
+
import clearskies.decorators
|
|
2
3
|
import clearskies.di
|
|
3
|
-
import clearskies.parameters_to_properties
|
|
4
4
|
from clearskies import autodoc
|
|
5
5
|
from clearskies.authentication.authentication import Authentication
|
|
6
6
|
|
|
@@ -460,7 +460,7 @@ class SecretBearer(Authentication, clearskies.di.InjectableProperties):
|
|
|
460
460
|
_secret: str = None # type: ignore
|
|
461
461
|
_alternate_secret: str = None # type: ignore
|
|
462
462
|
|
|
463
|
-
@clearskies.
|
|
463
|
+
@clearskies.decorators.parameters_to_properties
|
|
464
464
|
def __init__(
|
|
465
465
|
self,
|
|
466
466
|
secret_key: str = "",
|
|
@@ -495,7 +495,7 @@ class SecretBearer(Authentication, clearskies.di.InjectableProperties):
|
|
|
495
495
|
if not self._alternate_secret:
|
|
496
496
|
self._alternate_secret = (
|
|
497
497
|
self.secrets.get(self.alternate_secret_key)
|
|
498
|
-
if self.
|
|
498
|
+
if self.alternate_secret_key
|
|
499
499
|
else self.environment.get(self.alternate_environment_key)
|
|
500
500
|
)
|
|
501
501
|
return self._alternate_secret
|
|
@@ -9,9 +9,9 @@ import clearskies.columns.datetime
|
|
|
9
9
|
import clearskies.columns.json
|
|
10
10
|
import clearskies.configs
|
|
11
11
|
import clearskies.configurable
|
|
12
|
+
import clearskies.decorators
|
|
12
13
|
import clearskies.model
|
|
13
14
|
import clearskies.query
|
|
14
|
-
from clearskies import parameters_to_properties
|
|
15
15
|
from clearskies.autodoc.schema import Integer as AutoDocInteger
|
|
16
16
|
from clearskies.autodoc.schema import Schema as AutoDocSchema
|
|
17
17
|
from clearskies.autodoc.schema import String as AutoDocString
|
|
@@ -586,7 +586,7 @@ class ApiBackend(clearskies.configurable.Configurable, Backend, InjectableProper
|
|
|
586
586
|
_auth_injected = False
|
|
587
587
|
_response_to_model_map: dict[str, str] = None # type: ignore
|
|
588
588
|
|
|
589
|
-
@
|
|
589
|
+
@clearskies.decorators.parameters_to_properties
|
|
590
590
|
def __init__(
|
|
591
591
|
self,
|
|
592
592
|
base_url: str,
|
clearskies/backends/backend.py
CHANGED
|
@@ -9,6 +9,19 @@ from clearskies.autodoc.schema import Schema as AutoDocSchema
|
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
class Backend(ABC):
|
|
12
|
+
"""
|
|
13
|
+
Conecting models to their data since 2020!
|
|
14
|
+
|
|
15
|
+
The backend system acts as a flexible layer between models and their data sources. By changing the backend attached to a model,
|
|
16
|
+
you change where the model fetches and saves data. This might be a database, an in-memory data store, a dynamodb table,
|
|
17
|
+
an API, and more. This allows you to interact with a variety of data sources with the models acting as a standardized API.
|
|
18
|
+
Since endpoints also rely on the models for their functionality, this means that you can easily build API endpoints and
|
|
19
|
+
more for a variety of data sources with a minimal amount of code.
|
|
20
|
+
|
|
21
|
+
Of course, not all data sources support all functionality present in the model. Therefore, you do still need to have
|
|
22
|
+
a fair understanding of how your data sources work.
|
|
23
|
+
"""
|
|
24
|
+
|
|
12
25
|
supports_n_plus_one = False
|
|
13
26
|
can_count = True
|
|
14
27
|
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
from typing import Any, Callable
|
|
2
2
|
|
|
3
3
|
import clearskies
|
|
4
|
-
from clearskies import parameters_to_properties
|
|
5
4
|
from clearskies.autodoc.schema import Integer as AutoDocInteger
|
|
6
5
|
from clearskies.autodoc.schema import Schema as AutoDocSchema
|
|
7
6
|
from clearskies.autodoc.schema import String as AutoDocString
|
clearskies/column.py
CHANGED
|
@@ -9,9 +9,9 @@ import clearskies.configs.string
|
|
|
9
9
|
import clearskies.configs.string_or_callable
|
|
10
10
|
import clearskies.configs.validators
|
|
11
11
|
import clearskies.configurable
|
|
12
|
+
import clearskies.decorators
|
|
12
13
|
import clearskies.di
|
|
13
14
|
import clearskies.model
|
|
14
|
-
import clearskies.parameters_to_properties
|
|
15
15
|
import clearskies.typing
|
|
16
16
|
from clearskies.autodoc.schema import Schema as AutoDocSchema
|
|
17
17
|
from clearskies.autodoc.schema import String as AutoDocString
|
|
@@ -24,13 +24,10 @@ if TYPE_CHECKING:
|
|
|
24
24
|
|
|
25
25
|
class Column(clearskies.configurable.Configurable, clearskies.di.InjectableProperties):
|
|
26
26
|
"""
|
|
27
|
-
|
|
27
|
+
Columns are used to build schemes and enable a variety of levels of automation with clearskies.
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
clearskies framework to automate things like input validation, front-end/backend-transformations, and more.
|
|
32
|
-
Many column classes have their own configuration settings, but there are also some common configuration settings
|
|
33
|
-
defined here.
|
|
29
|
+
Columns are used to define your schemas in clearskies, especially via models. The column definitions are then used by endpoints
|
|
30
|
+
and other aspects of the clearskies framework to automate things like input validation, front-end/backend-transformations, and more.
|
|
34
31
|
"""
|
|
35
32
|
|
|
36
33
|
"""
|
|
@@ -672,7 +669,7 @@ class Column(clearskies.configurable.Configurable, clearskies.di.InjectablePrope
|
|
|
672
669
|
"""
|
|
673
670
|
auto_doc_class: type[AutoDocSchema] = AutoDocString
|
|
674
671
|
|
|
675
|
-
@clearskies.
|
|
672
|
+
@clearskies.decorators.parameters_to_properties
|
|
676
673
|
def __init__(
|
|
677
674
|
self,
|
|
678
675
|
default: str | None = None,
|
|
@@ -760,6 +757,10 @@ class Column(clearskies.configurable.Configurable, clearskies.di.InjectablePrope
|
|
|
760
757
|
return instance._transformed_data[self.name]
|
|
761
758
|
|
|
762
759
|
def __set__(self, instance: Model, value) -> None:
|
|
760
|
+
# this makes sure we're initialized
|
|
761
|
+
if "name" not in self._config: # type: ignore
|
|
762
|
+
instance.get_columns()
|
|
763
|
+
|
|
763
764
|
instance._next_data[self.name] = value
|
|
764
765
|
|
|
765
766
|
def finalize_and_validate_configuration(self):
|
clearskies/columns/audit.py
CHANGED
|
@@ -2,8 +2,9 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
from typing import Any
|
|
4
4
|
|
|
5
|
+
import clearskies.decorators
|
|
5
6
|
import clearskies.typing
|
|
6
|
-
from clearskies import configs
|
|
7
|
+
from clearskies import configs
|
|
7
8
|
from clearskies.column import Column
|
|
8
9
|
from clearskies.columns.has_many import HasMany
|
|
9
10
|
|
|
@@ -65,7 +66,7 @@ class Audit(HasMany):
|
|
|
65
66
|
_descriptor_config_map = None
|
|
66
67
|
_parent_columns: dict[str, Column] | None
|
|
67
68
|
|
|
68
|
-
@
|
|
69
|
+
@clearskies.decorators.parameters_to_properties
|
|
69
70
|
def __init__(
|
|
70
71
|
self,
|
|
71
72
|
audit_model_class,
|
|
@@ -3,7 +3,7 @@ from __future__ import annotations
|
|
|
3
3
|
from collections import OrderedDict
|
|
4
4
|
from typing import TYPE_CHECKING, Any, Callable
|
|
5
5
|
|
|
6
|
-
import clearskies.
|
|
6
|
+
import clearskies.decorators
|
|
7
7
|
import clearskies.typing
|
|
8
8
|
from clearskies import configs
|
|
9
9
|
from clearskies.autodoc.schema import Object as AutoDocObject
|
|
@@ -299,7 +299,7 @@ class BelongsToId(String):
|
|
|
299
299
|
_allowed_search_operators = ["="]
|
|
300
300
|
_descriptor_config_map = None
|
|
301
301
|
|
|
302
|
-
@clearskies.
|
|
302
|
+
@clearskies.decorators.parameters_to_properties
|
|
303
303
|
def __init__(
|
|
304
304
|
self,
|
|
305
305
|
parent_model_class,
|
|
@@ -3,7 +3,7 @@ from __future__ import annotations
|
|
|
3
3
|
from collections import OrderedDict
|
|
4
4
|
from typing import TYPE_CHECKING, Any, Self, overload
|
|
5
5
|
|
|
6
|
-
import clearskies.
|
|
6
|
+
import clearskies.decorators
|
|
7
7
|
from clearskies import configs
|
|
8
8
|
from clearskies.column import Column
|
|
9
9
|
from clearskies.columns.belongs_to_id import BelongsToId
|
|
@@ -22,7 +22,7 @@ class BelongsToModel(Column):
|
|
|
22
22
|
is_temporary = clearskies.configs.boolean.Boolean(default=True)
|
|
23
23
|
_descriptor_config_map = None
|
|
24
24
|
|
|
25
|
-
@clearskies.
|
|
25
|
+
@clearskies.decorators.parameters_to_properties
|
|
26
26
|
def __init__(
|
|
27
27
|
self,
|
|
28
28
|
belongs_to_column_name: str,
|
|
@@ -84,6 +84,10 @@ class BelongsToModel(Column):
|
|
|
84
84
|
return parent_model.find(f"{parent_id_column_name}={parent_id}")
|
|
85
85
|
|
|
86
86
|
def __set__(self, model: Model, value: Model) -> None:
|
|
87
|
+
# this makes sure we're initialized
|
|
88
|
+
if "name" not in self._config: # type: ignore
|
|
89
|
+
model.get_columns()
|
|
90
|
+
|
|
87
91
|
setattr(model, self.belongs_to_column_name, getattr(value, value.id_column_name))
|
|
88
92
|
|
|
89
93
|
def pre_save(self, data: dict[str, Any], model: Model) -> dict[str, Any]:
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from typing import Callable
|
|
2
2
|
|
|
3
|
+
import clearskies.decorators
|
|
3
4
|
import clearskies.typing
|
|
4
|
-
from clearskies import parameters_to_properties
|
|
5
5
|
from clearskies.columns.belongs_to_id import BelongsToId
|
|
6
6
|
|
|
7
7
|
|
|
@@ -69,7 +69,7 @@ class BelongsToSelf(BelongsToId):
|
|
|
69
69
|
|
|
70
70
|
_descriptor_config_map = None
|
|
71
71
|
|
|
72
|
-
@
|
|
72
|
+
@clearskies.decorators.parameters_to_properties
|
|
73
73
|
def __init__(
|
|
74
74
|
self,
|
|
75
75
|
readable_parent_columns: list[str] = [],
|
clearskies/columns/boolean.py
CHANGED
|
@@ -3,7 +3,7 @@ from __future__ import annotations
|
|
|
3
3
|
from typing import TYPE_CHECKING, Callable, Self, overload
|
|
4
4
|
|
|
5
5
|
import clearskies.configs.actions
|
|
6
|
-
import clearskies.
|
|
6
|
+
import clearskies.decorators
|
|
7
7
|
import clearskies.typing
|
|
8
8
|
from clearskies import configs
|
|
9
9
|
from clearskies.autodoc.schema import Boolean as AutoDocBoolean
|
|
@@ -38,7 +38,7 @@ class Boolean(Column):
|
|
|
38
38
|
setable = configs.BooleanOrCallable() # type: ignore
|
|
39
39
|
_descriptor_config_map = None
|
|
40
40
|
|
|
41
|
-
@clearskies.
|
|
41
|
+
@clearskies.decorators.parameters_to_properties
|
|
42
42
|
def __init__(
|
|
43
43
|
self,
|
|
44
44
|
default: bool | None = None,
|
|
@@ -82,6 +82,10 @@ class Boolean(Column):
|
|
|
82
82
|
return super().__get__(instance, cls)
|
|
83
83
|
|
|
84
84
|
def __set__(self, instance, value: bool) -> None:
|
|
85
|
+
# this makes sure we're initialized
|
|
86
|
+
if "name" not in self._config: # type: ignore
|
|
87
|
+
instance.get_columns()
|
|
88
|
+
|
|
85
89
|
instance._next_data[self.name] = value
|
|
86
90
|
|
|
87
91
|
def input_error_for_value(self, value: str, operator: str | None = None) -> str:
|
|
@@ -2,7 +2,7 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
from typing import TYPE_CHECKING, Any, Callable
|
|
4
4
|
|
|
5
|
-
import clearskies.
|
|
5
|
+
import clearskies.decorators
|
|
6
6
|
import clearskies.typing
|
|
7
7
|
from clearskies import configs
|
|
8
8
|
from clearskies.columns.belongs_to_id import BelongsToId
|
|
@@ -163,7 +163,7 @@ class CategoryTree(BelongsToId):
|
|
|
163
163
|
|
|
164
164
|
_descriptor_config_map = None
|
|
165
165
|
|
|
166
|
-
@clearskies.
|
|
166
|
+
@clearskies.decorators.parameters_to_properties
|
|
167
167
|
def __init__(
|
|
168
168
|
self,
|
|
169
169
|
tree_model_class,
|