clear-skies 1.20.3__py3-none-any.whl → 1.21.0__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.20.3
3
+ Version: 1.21.0
4
4
  Summary: A framework for building backends in the cloud
5
5
  Home-page: https://github.com/cmancone/clearskies
6
6
  License: MIT
@@ -61,15 +61,15 @@ clearskies/column_types/belongs_to.py,sha256=tH1tbTOfjifSNuVjO-KbMF7GiUIoLfcDItr
61
61
  clearskies/column_types/boolean.py,sha256=1yyM1CUfgD84pPE65c1OP1Qjf_J0Z45hjPrDR51AUkQ,1878
62
62
  clearskies/column_types/category_tree.py,sha256=PgNmzZPyqYS5NADH_QTCxLvDXZFxzv5ESKTkvPrrLXo,9140
63
63
  clearskies/column_types/column.py,sha256=ftuDFswjk-KE9Frxo1rhgkjr4sjSjnUc5ZtfNrnGLIc,15530
64
- clearskies/column_types/created.py,sha256=S78e1VuvvUPYiI79gWGqlPzMSLIbXMpaYQMw8as7l38,615
64
+ clearskies/column_types/created.py,sha256=LIWSzPJ9rbHuk1u53pNvKtVCOG9y9XCn-mEEsSi97Zc,649
65
65
  clearskies/column_types/created_by_authorization_data.py,sha256=--1w1TOSo2CMwrpn6Y_iorl2RTqLgG8MbR8k27qreew,1108
66
66
  clearskies/column_types/created_by_header.py,sha256=5sY6vjtra-BrAgUE4zkuLhBtzCVWHNtJPwMozPw_7_s,520
67
67
  clearskies/column_types/created_by_ip.py,sha256=wwCUoEwHEVGN89x4xP7NJ6QR85Aum6v3JmxofoQrqtg,395
68
68
  clearskies/column_types/created_by_routing_data.py,sha256=EhVorRaGV2OhEb0YSPwPmrsK2NQycYgGEd4ab8-qI2I,569
69
69
  clearskies/column_types/created_by_user_agent.py,sha256=sSYDRrqSjsCwcYlhF_s9NO-iDww3PaH6aO2ATp_SKGQ,419
70
- clearskies/column_types/created_micro.py,sha256=EqeHB3ZHbi4nCa1rbrKy1TbooT9U3Kfw5z4jUvLi32U,636
71
- clearskies/column_types/datetime.py,sha256=OEy5eMfqWp6KOqEHQa3Ga_tl0oawtcMRBafI1SPYDFk,4275
72
- clearskies/column_types/datetime_micro.py,sha256=3DxtkeJZhWigdni7QEJFV3BJuCmXJMyFQjDZ9jyI144,328
70
+ clearskies/column_types/created_micro.py,sha256=Y_YADPg-TYPfWCFuGbs1b7NeM1Ixi_oBP8OQfJgTI7s,670
71
+ clearskies/column_types/datetime.py,sha256=VCVLDTxEN1yQ0h-BprejKWCYSOneQkvm7EeKy3c_T-Q,4339
72
+ clearskies/column_types/datetime_micro.py,sha256=ewQSniCc2MmNIyX2XNuNcCIwh5Fpf1HcvpLfzB8lz8g,382
73
73
  clearskies/column_types/email.py,sha256=qq0Yo_C3KxUqT68q2HWXocBBR4xwMqjxcIdgZRv218U,584
74
74
  clearskies/column_types/float.py,sha256=j8jJeBueSOusPtAFCWgLHYBncfLnqT1U7bh1zcAkYiA,1332
75
75
  clearskies/column_types/has_many.py,sha256=Z4oM1g2dQx6H9171c52FLC41nLryCOKmh51I75mYmmY,5895
@@ -81,9 +81,9 @@ clearskies/column_types/many_to_many_with_data.py,sha256=NOYjZedeLIWVyDV4BTRyNmh
81
81
  clearskies/column_types/phone.py,sha256=aUKshuknqcklA0LhUAdIgCslmAXXnWtXln1q5js8Eh8,1611
82
82
  clearskies/column_types/select.py,sha256=1oBslTJ_7QCjlFeEcwJVRL-ED4sXwCESVFRAOonvG2I,297
83
83
  clearskies/column_types/string.py,sha256=XbHC31TmlW0k86cvdVJBDyowU8Xis6Te6R0rPLXgLpI,863
84
- clearskies/column_types/timestamp.py,sha256=XQ8SHKrvPbgaXWlGP_1dKn9sYOFbcGVuSmGjWnTVTl8,2820
85
- clearskies/column_types/updated.py,sha256=FNyRK-PS6lgFQ9QN2VrcIZP2g5EHGhll6pf-MgqMH7s,566
86
- clearskies/column_types/updated_micro.py,sha256=3geqsV4nsPB9xDKyvQDGniU-KMqM8WvoqHfUYcBqGJY,587
84
+ clearskies/column_types/timestamp.py,sha256=q_9-zXm8AqJVFpSAvl0O2yqfxPFy4id4TxEh5qRQVmE,2866
85
+ clearskies/column_types/updated.py,sha256=ZSaM97bjFK-vMkPBMo8WnVOgzS77K5mR6KAArC1CbhE,634
86
+ clearskies/column_types/updated_micro.py,sha256=Z39_D574V6rY33UhY8Yruv-KeWw5PJw5yeuUQJfjE4A,655
87
87
  clearskies/column_types/uuid.py,sha256=pA6Cd-1QSRuUpz0PxWAGRdG01hW7bpIicOhhJvAvDkQ,711
88
88
  clearskies/columns.py,sha256=3PgLopL1l20vVWaUqOJkwXMr06a-gFHEsbExfOWVB4I,5925
89
89
  clearskies/condition_parser.py,sha256=IXl51-rDxws7-nAtTVu_m6gTegtpkDnoGAFX2MTPDIo,6589
@@ -120,7 +120,7 @@ clearskies/di/__init__.py,sha256=T7SgQNny2XAZQPeFkdmp1XxxmEVxtnpcRiGK8YflkwU,304
120
120
  clearskies/di/additional_config.py,sha256=jdoS_HWC0MAabori3WwLRAG1i5YKZmQfQ1o0hCoxsPs,526
121
121
  clearskies/di/additional_config_auto_import.py,sha256=m57IODPbnCAus9iDu3mDp42u4H87oPZvjAlBGoS8uRQ,111
122
122
  clearskies/di/di.py,sha256=g0U0PI73eNp0mkGH3KUN1fmqNic5eEUK-_IB8hQh-Kg,15511
123
- clearskies/di/standard_dependencies.py,sha256=vO2fbVQkuH7R-YqWu1eM2xcuR2SreFwcSeLmEVz2e8w,4396
123
+ clearskies/di/standard_dependencies.py,sha256=fgD4GT4Z0bcGPBaPDrzCqCtblD0UP572XD5d0O_DJxE,4523
124
124
  clearskies/di/test_module/__init__.py,sha256=7YHQF7JHP0FdI7GdEGANSZ_t1EISQYhUNm1wqOg0NKw,88
125
125
  clearskies/di/test_module/another_module/__init__.py,sha256=8SRmHPDepLKGWTUSc1ucDF6U8mJPsNDsBDmBQCpzPWo,35
126
126
  clearskies/di/test_module/module_class.py,sha256=I_-wnMuHfbsvti-7d2Z4bXnr6deo__uvww9nds9qrlE,46
@@ -205,7 +205,7 @@ clearskies/tests/simple_api/models/__init__.py,sha256=nUA0W6fgXw_Bxa9CudkaDkC80t
205
205
  clearskies/tests/simple_api/models/status.py,sha256=PEhPbaQh5qdUNHp8O0gz91LOLENAEBtqSaHxUPXchaM,699
206
206
  clearskies/tests/simple_api/models/user.py,sha256=5_P4Tp1tTdX7PkMJ__epPM5MA7JAeVYGas69vcWloLc,819
207
207
  clearskies/tests/simple_api/users_api.py,sha256=KYXCgEofDxHeRdQK67txN5oYUPvxxmB8JTku7L-apk4,2344
208
- clear_skies-1.20.3.dist-info/LICENSE,sha256=3Ehd0g3YOpCj8sqj0Xjq5qbOtjjgk9qzhhD9YjRQgOA,1053
209
- clear_skies-1.20.3.dist-info/METADATA,sha256=zXR2NXaY80ulWCP4Jqavr4nu1NL5PkyIl11qvSOdPT0,1711
210
- clear_skies-1.20.3.dist-info/WHEEL,sha256=d2fvjOD7sXsVzChCqf0Ty0JbHKBaLYwDbGQDwQTnJ50,88
211
- clear_skies-1.20.3.dist-info/RECORD,,
208
+ clear_skies-1.21.0.dist-info/LICENSE,sha256=3Ehd0g3YOpCj8sqj0Xjq5qbOtjjgk9qzhhD9YjRQgOA,1053
209
+ clear_skies-1.21.0.dist-info/METADATA,sha256=8c2Jewv9FWljdC_KSg9V1ONMAfdE2EPw5JdGntdVSNQ,1711
210
+ clear_skies-1.21.0.dist-info/WHEEL,sha256=d2fvjOD7sXsVzChCqf0Ty0JbHKBaLYwDbGQDwQTnJ50,88
211
+ clear_skies-1.21.0.dist-info/RECORD,,
@@ -8,8 +8,8 @@ class Created(DateTime):
8
8
  "utc",
9
9
  ]
10
10
 
11
- def __init__(self, di, datetime):
12
- super().__init__(di)
11
+ def __init__(self, di, datetime, timezone):
12
+ super().__init__(di, timezone)
13
13
  self.datetime = datetime
14
14
 
15
15
  @property
@@ -22,5 +22,5 @@ class Created(DateTime):
22
22
  if self.config("utc", silent=True):
23
23
  now = self.datetime.datetime.now(self.datetime.timezone.utc)
24
24
  else:
25
- now = self.datetime.datetime.now()
25
+ now = self.datetime.datetime.now(self._timezone)
26
26
  return {**data, self.name: now}
@@ -8,8 +8,8 @@ class CreatedMicro(DateTimeMicro):
8
8
  "utc",
9
9
  ]
10
10
 
11
- def __init__(self, di, datetime):
12
- super().__init__(di)
11
+ def __init__(self, di, datetime, timezone):
12
+ super().__init__(di, timezone)
13
13
  self.datetime = datetime
14
14
 
15
15
  @property
@@ -22,5 +22,5 @@ class CreatedMicro(DateTimeMicro):
22
22
  if self.config("utc", silent=True):
23
23
  now = self.datetime.datetime.now(self.datetime.timezone.utc)
24
24
  else:
25
- now = self.datetime.datetime.now()
25
+ now = self.datetime.datetime.now(self._timezone)
26
26
  return {**data, self.name: now}
@@ -3,7 +3,6 @@ from datetime import datetime, timezone
3
3
  import dateparser
4
4
  from ..autodoc.schema import DateTime as AutoDocDateTime
5
5
 
6
-
7
6
  class DateTime(Column):
8
7
  _auto_doc_class = AutoDocDateTime
9
8
  _date_format = "%Y-%m-%d %H:%M:%S"
@@ -14,8 +13,9 @@ class DateTime(Column):
14
13
  "default_date",
15
14
  ]
16
15
 
17
- def __init__(self, di):
16
+ def __init__(self, di, timezone: datetime.tzinfo):
18
17
  super().__init__(di)
18
+ self._timezone = timezone
19
19
 
20
20
  def _finalize_configuration(self, configuration):
21
21
  return {
@@ -33,7 +33,7 @@ class DateTime(Column):
33
33
  date = dateparser.parse(value)
34
34
  else:
35
35
  date = value
36
- return date.replace(tzinfo=timezone.utc) if date else None
36
+ return date.replace(tzinfo=self._timezone) if date else None
37
37
 
38
38
  def to_backend(self, data):
39
39
  if not self.name in data or type(data[self.name]) == str or data[self.name] == None:
@@ -47,7 +47,7 @@ class DateTime(Column):
47
47
  return {self.name: datetime.isoformat() if datetime else None}
48
48
 
49
49
  def build_condition(self, value, operator=None, column_prefix=""):
50
- date = dateparser.parse(value).astimezone(timezone.utc).strftime(self.config("date_format"))
50
+ date = dateparser.parse(value).astimezone(self._timezone).strftime(self.config("date_format"))
51
51
  if not operator:
52
52
  operator = "="
53
53
  return f"{column_prefix}{self.name}{operator}{date}"
@@ -1,3 +1,4 @@
1
+ from re import T
1
2
  from .datetime import DateTime
2
3
  from datetime import datetime, timezone
3
4
  import dateparser
@@ -8,5 +9,5 @@ class DateTimeMicro(DateTime):
8
9
  _date_format = "%Y-%m-%d %H:%M:%S.%f"
9
10
  _default_date = "0000-00-00 00:00:00.000000"
10
11
 
11
- def __init__(self, di):
12
- super().__init__(di)
12
+ def __init__(self, di, timezone: datetime.tzinfo):
13
+ super().__init__(di, timezone)
@@ -1,3 +1,4 @@
1
+ import time
1
2
  from .datetime import DateTime
2
3
  from datetime import datetime, timezone
3
4
  import dateparser
@@ -28,16 +29,16 @@ class Timestamp(DateTime):
28
29
  raise ValueError(
29
30
  f"Invalid data was found in the backend for model {self.model_class.__name__} and column {self.name}: a string value was found that is not a timestamp. It was '{value}'"
30
31
  )
31
- date = datetime.fromtimestamp(int(value) / mult)
32
+ date = datetime.fromtimestamp(int(value) / mult, self._timezone)
32
33
  elif isinstance(value, int):
33
- date = datetime.fromtimestamp(value / mult)
34
+ date = datetime.fromtimestamp(value / mult, self._timezone)
34
35
  else:
35
36
  if not isinstance(value, datetime):
36
37
  raise ValueError(
37
38
  f"Invalid data was found in the backend for model {self.model_class.__name__} and column {self.name}: the value was neither an integer, a string, nor a datetime object"
38
39
  )
39
40
  date = value
40
- return date.replace(tzinfo=timezone.utc) if date else None
41
+ return date.replace(tzinfo=self._timezone) if date else None
41
42
 
42
43
  def to_backend(self, data):
43
44
  if not self.name in data or isinstance(data[self.name], int) or data[self.name] == None:
@@ -1,3 +1,5 @@
1
+ import datetime
2
+
1
3
  from .datetime import DateTime
2
4
 
3
5
 
@@ -8,8 +10,8 @@ class Updated(DateTime):
8
10
  "utc",
9
11
  ]
10
12
 
11
- def __init__(self, di, datetime):
12
- super().__init__(di)
13
+ def __init__(self, di, datetime, timezone: datetime.tzinfo):
14
+ super().__init__(di, timezone)
13
15
  self.datetime = datetime
14
16
 
15
17
  @property
@@ -20,5 +22,5 @@ class Updated(DateTime):
20
22
  if self.config("utc", silent=True):
21
23
  now = self.datetime.datetime.now(self.datetime.timezone.utc)
22
24
  else:
23
- now = self.datetime.datetime.now()
25
+ now = self.datetime.datetime.now(self._timezone)
24
26
  return {**data, self.name: now}
@@ -1,3 +1,5 @@
1
+ import datetime
2
+
1
3
  from .datetime_micro import DateTimeMicro
2
4
 
3
5
 
@@ -8,8 +10,8 @@ class UpdatedMicro(DateTimeMicro):
8
10
  "utc",
9
11
  ]
10
12
 
11
- def __init__(self, di, datetime):
12
- super().__init__(di)
13
+ def __init__(self, di, datetime, timezone: datetime.tzinfo):
14
+ super().__init__(di, timezone)
13
15
  self.datetime = datetime
14
16
 
15
17
  @property
@@ -20,5 +22,5 @@ class UpdatedMicro(DateTimeMicro):
20
22
  if self.config("utc", silent=True):
21
23
  now = self.datetime.datetime.now(self.datetime.timezone.utc)
22
24
  else:
23
- now = self.datetime.datetime.now()
25
+ now = self.datetime.datetime.now(self._timezone)
24
26
  return {**data, self.name: now}
@@ -138,3 +138,8 @@ class StandardDependencies(DI):
138
138
 
139
139
  def provide_uuid(self):
140
140
  return uuid
141
+
142
+ def provide_timezone(self):
143
+ """Set the default timezone."""
144
+ import datetime
145
+ return datetime.UTC