clear-skies 1.19.25__py3-none-any.whl → 1.19.27__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of clear-skies might be problematic. Click here for more details.

@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: clear-skies
3
- Version: 1.19.25
3
+ Version: 1.19.27
4
4
  Summary: A framework for building backends in the cloud
5
5
  Home-page: https://github.com/cmancone/clearskies
6
6
  License: MIT
@@ -154,13 +154,13 @@ clearskies/handlers/simple_search.py,sha256=bSfq8rzdqkBj-dTGUBSZ1EkfjzUWHID7mKD2
154
154
  clearskies/handlers/update.py,sha256=rx8HW87Pfh95e_9nEfKKnxfkh2HBlCUdYqVwljtXiJ8,4116
155
155
  clearskies/handlers/write.py,sha256=Gu1w1PQ1F7tlqCqALorMRek3UH6IkViPIO195dxPd8k,9372
156
156
  clearskies/input_outputs/__init__.py,sha256=mQWL-u41FRTrPGuHe8FhLmcHjAEaUxjFwUf7RgDcbAs,182
157
- clearskies/input_outputs/cli.py,sha256=F54wues9cNESE8FhQP3mDWrgrZyFouDIN-ZZ3-KJjks,6258
157
+ clearskies/input_outputs/cli.py,sha256=DCoSHn2fd7cwi4-3eZU_M0-Txk85PQNB1x6D_B50f1M,6529
158
158
  clearskies/input_outputs/exceptions/__init__.py,sha256=bc5Tc1XBZnqA1fKbk7pk5hyx102vqx3sDE19E03xGk4,82
159
159
  clearskies/input_outputs/exceptions/cli_input_error.py,sha256=kOFU8aLTLmeTL_AKDshxMu8_ufildg6p8ndhE1xHfb0,41
160
160
  clearskies/input_outputs/exceptions/cli_not_found.py,sha256=JBBuZA9ZwdkPhd3a0qaGgEPQrxh1fehy4R3ZaV2gWXU,39
161
161
  clearskies/input_outputs/input_output.py,sha256=vYKn9SE5erS4LuOhhAsXqaOEsGXwZ1NJ4v85KN1Xg6A,4501
162
162
  clearskies/input_outputs/wsgi.py,sha256=9p82eJP5FUAI6jbIojvydG3_9gncX7vcUACQMyRN9x4,3142
163
- clearskies/input_requirements/__init__.py,sha256=vIqm8KDiomQSxT7WjogFi1yOOrsVrNMb5GKlfw5USNk,1836
163
+ clearskies/input_requirements/__init__.py,sha256=cciSC614VlYsCeTBX69ZCBU6QByT8NNlzWu_n2SVieY,2106
164
164
  clearskies/input_requirements/after.py,sha256=TXy8bIVz_77a8oJuohPwoM5E--AOVWsOSjjh5PpA2Ys,1544
165
165
  clearskies/input_requirements/before.py,sha256=iLg-Hub9iW2eP19s5fkPrA9TCT_-DTm5KoxgA8ho0-k,1547
166
166
  clearskies/input_requirements/in_the_future_at_least.py,sha256=PLVp_2Yv-1ScKnajlc9hjG7qYZhadKXHNTkRP7WKUdo,739
@@ -168,7 +168,9 @@ clearskies/input_requirements/in_the_future_at_most.py,sha256=L5Oz47KAHv5WL6Nu2v
168
168
  clearskies/input_requirements/in_the_past_at_least.py,sha256=ES0SgtADHcu7HZDdvIFyD9vpYTnrd4hBi03OShqUZg4,735
169
169
  clearskies/input_requirements/in_the_past_at_most.py,sha256=hvhn_K1X4f7pbpFhjavR6Mu48JhhYcEIUx44YWfa_7E,733
170
170
  clearskies/input_requirements/maximum_length.py,sha256=7hdGVq914BtZQwiGOLOU-t5QTDNQtCPT4TOnYTUo3Wo,689
171
+ clearskies/input_requirements/maximum_value.py,sha256=R9xyup70a3migJdUKmflpZnQMHShcCqyibOewh78D84,663
171
172
  clearskies/input_requirements/minimum_length.py,sha256=qSpLjNBu6AKRoBZi3jvCMYKsHwsknbkUk86C8CMIOEU,987
173
+ clearskies/input_requirements/minimum_value.py,sha256=PNZShiy_cFjwoRejjZmN_INp7EtmzmX1RQp3JfyYBMg,664
172
174
  clearskies/input_requirements/required.py,sha256=luYP527YPkQIVNVPhnNztOI0UxO67gNqn3FiLBId1YE,1133
173
175
  clearskies/input_requirements/requirement.py,sha256=5wUywAvbEQPh9tpfwWX3gdi4dwI-Xs9ePyC30qvwPaQ,584
174
176
  clearskies/input_requirements/time_delta.py,sha256=lqajxGEp2zZB_Rk-dG8eWgpljbuph1yqZMuylYRYJKs,1247
@@ -200,7 +202,7 @@ clearskies/tests/simple_api/models/__init__.py,sha256=nUA0W6fgXw_Bxa9CudkaDkC80t
200
202
  clearskies/tests/simple_api/models/status.py,sha256=PEhPbaQh5qdUNHp8O0gz91LOLENAEBtqSaHxUPXchaM,699
201
203
  clearskies/tests/simple_api/models/user.py,sha256=5_P4Tp1tTdX7PkMJ__epPM5MA7JAeVYGas69vcWloLc,819
202
204
  clearskies/tests/simple_api/users_api.py,sha256=KYXCgEofDxHeRdQK67txN5oYUPvxxmB8JTku7L-apk4,2344
203
- clear_skies-1.19.25.dist-info/LICENSE,sha256=3Ehd0g3YOpCj8sqj0Xjq5qbOtjjgk9qzhhD9YjRQgOA,1053
204
- clear_skies-1.19.25.dist-info/METADATA,sha256=SOYzyXMqcRVfA4-Rb0Fu79TxkrY3c9mPjtiUD_Iwp7s,1712
205
- clear_skies-1.19.25.dist-info/WHEEL,sha256=d2fvjOD7sXsVzChCqf0Ty0JbHKBaLYwDbGQDwQTnJ50,88
206
- clear_skies-1.19.25.dist-info/RECORD,,
205
+ clear_skies-1.19.27.dist-info/LICENSE,sha256=3Ehd0g3YOpCj8sqj0Xjq5qbOtjjgk9qzhhD9YjRQgOA,1053
206
+ clear_skies-1.19.27.dist-info/METADATA,sha256=c9j9MWbb37TZ3JJzWLD9Tdr0eCocVDkNTyDCl-CeEf4,1712
207
+ clear_skies-1.19.27.dist-info/WHEEL,sha256=d2fvjOD7sXsVzChCqf0Ty0JbHKBaLYwDbGQDwQTnJ50,88
208
+ clear_skies-1.19.27.dist-info/RECORD,,
@@ -13,6 +13,7 @@ class CLI:
13
13
  _body_loaded_as_json = None
14
14
  _body_as_json = None
15
15
  _routing_data = None
16
+ _authorization_data = None
16
17
 
17
18
  def __init__(self, sys):
18
19
  self._sys = sys
@@ -20,6 +21,7 @@ class CLI:
20
21
  self._kwargs = {}
21
22
  self._request_method = None
22
23
  self._parse_args(self._sys.argv)
24
+ self._authorization_data = None
23
25
 
24
26
  def respond(self, response, status_code=200):
25
27
  if status_code == 404:
@@ -172,3 +174,9 @@ class CLI:
172
174
 
173
175
  def get_client_ip(self):
174
176
  return "cli"
177
+
178
+ def set_authorization_data(self, data):
179
+ self._authorization_data = data
180
+
181
+ def get_authorization_data(self):
182
+ return self._authorization_data if self._authorization_data else {}
@@ -4,7 +4,9 @@ from .after import After
4
4
  from .before import Before
5
5
  from ..binding_config import BindingConfig
6
6
  from .minimum_length import MinimumLength
7
+ from .minimum_value import MinimumValue
7
8
  from .maximum_length import MaximumLength
9
+ from .maximum_value import MaximumValue
8
10
  from .required import Required
9
11
  from .requirement import Requirement
10
12
  from .unique import Unique
@@ -27,10 +29,18 @@ def minimum_length(minimum_length: int):
27
29
  return BindingConfig(MinimumLength, minimum_length)
28
30
 
29
31
 
32
+ def minimum_value(minimum_value: int):
33
+ return BindingConfig(MinimumValue, minimum_value)
34
+
35
+
30
36
  def maximum_length(maximum_length: int):
31
37
  return BindingConfig(MaximumLength, maximum_length)
32
38
 
33
39
 
40
+ def maximum_value(maximum_value: int):
41
+ return BindingConfig(MaximumValue, maximum_value)
42
+
43
+
34
44
  def required():
35
45
  return BindingConfig(Required)
36
46
 
@@ -0,0 +1,19 @@
1
+ from .requirement import Requirement
2
+
3
+
4
+ class MaximumValue(Requirement):
5
+ maximum_value = None
6
+
7
+ def configure(self, maximum_value):
8
+ if type(maximum_value) != int:
9
+ raise ValueError(
10
+ f"Maximum value must be an int to use the MaximumValue class for column '{self.column_name}'"
11
+ )
12
+ self.maximum_value = maximum_value
13
+
14
+ def check(self, model, data):
15
+ if self.column_name not in data or not data[self.column_name]:
16
+ return ""
17
+ if int(data[self.column_name]) <= self.maximum_value:
18
+ return ""
19
+ return f"'{self.column_name}' must be at most {self.maximum_value}."
@@ -0,0 +1,19 @@
1
+ from .requirement import Requirement
2
+
3
+
4
+ class MinimumValue(Requirement):
5
+ minimum_value = None
6
+
7
+ def configure(self, minimum_value):
8
+ if type(minimum_value) != int:
9
+ raise ValueError(
10
+ f"Minimum value must be an int to use the MinimumValue class for column '{self.column_name}'"
11
+ )
12
+ self.minimum_value = minimum_value
13
+
14
+ def check(self, model, data):
15
+ if self.column_name not in data or not data[self.column_name]:
16
+ return ""
17
+ if int(data[self.column_name]) >= self.minimum_value:
18
+ return ""
19
+ return f"'{self.column_name}' must be at least {self.minimum_value}."