Skip to content

Commit b3a0376

Browse files
cclaussjcjones
andauthored
Use timezone-aware datetimes -- ruff check --select=DTZ (#84)
* Use timezone-aware datetimes -- ruff check --select=DTZ * re-format --------- Co-authored-by: J.C. Jones <[email protected]>
1 parent 0f319f8 commit b3a0376

File tree

8 files changed

+37
-29
lines changed

8 files changed

+37
-29
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ jobs:
2929
3030
- name: Lint Python code with Ruff
3131
run: |
32-
python -m ruff --output-format=github
32+
python -m ruff check --output-format=github
3333
3434
- name: Checking format with Ruff
3535
run: |

partitionmanager/cli.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -346,7 +346,7 @@ def do_partition(conf):
346346
continue
347347

348348
log.info(f"{table} running SQL: {composite_sql_command}")
349-
time_start = datetime.utcnow()
349+
time_start = datetime.now(tz=timezone.utc)
350350
output = conf.dbcmd.run(composite_sql_command)
351351

352352
all_results[table.name] = {"sql": composite_sql_command, "output": output}
@@ -366,7 +366,7 @@ def do_partition(conf):
366366
log.warning("Failed to handle %s: %s", table, e)
367367
metrics.add("alter_errors", table.name, 1)
368368

369-
time_end = datetime.utcnow()
369+
time_end = datetime.now(tz=timezone.utc)
370370
if time_start:
371371
metrics.add(
372372
"alter_time_seconds",

partitionmanager/cli_test.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -348,7 +348,7 @@ def test_cli_tables_override_yaml(self):
348348
table_b:
349349
table_c:
350350
""",
351-
datetime.now(),
351+
datetime.now(tz=timezone.utc),
352352
)
353353
self.assertEqual(
354354
{str(x.name) for x in conf.tables}, set(["table_one", "table_two"])
@@ -364,7 +364,7 @@ def test_cli_mariadb_override_yaml(self):
364364
tables:
365365
one:
366366
""",
367-
datetime.now(),
367+
datetime.now(tz=timezone.utc),
368368
)
369369
self.assertEqual(conf.dbcmd.exe, "/usr/bin/true")
370370

@@ -381,7 +381,7 @@ def test_cli_sqlurl_override_yaml(self):
381381
tables:
382382
one:
383383
""",
384-
datetime.now(),
384+
datetime.now(tz=timezone.utc),
385385
)
386386

387387
def test_migrate_cmd_out(self):

partitionmanager/database_helpers.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,9 @@ def calculate_exact_timestamp_via_query(database, table, position_partition):
4848
position_partition.position,
4949
)
5050

51-
start = datetime.now()
51+
start = datetime.now(tz=timezone.utc)
5252
exact_time_result = database.run(sql_select_cmd)
53-
end = datetime.now()
53+
end = datetime.now(tz=timezone.utc)
5454

5555
if not len(exact_time_result) == 1:
5656
raise partitionmanager.types.NoExactTimeException("No exact timestamp result")

partitionmanager/migrate_test.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import io
22
import unittest
33
import yaml
4-
from datetime import datetime, timedelta
4+
from datetime import datetime, timedelta, timezone
55

66
from .migrate import (
77
_generate_sql_copy_commands,
@@ -60,7 +60,7 @@ def db_name(self):
6060
class TestBootstrapTool(unittest.TestCase):
6161
def test_writing_state_info(self):
6262
conf = Config()
63-
conf.curtime = datetime(2021, 3, 1)
63+
conf.curtime = datetime(2021, 3, 1, tzinfo=timezone.utc)
6464
conf.dbcmd = MockDatabase()
6565
conf.tables = [Table("test")]
6666

@@ -97,7 +97,7 @@ def test_get_time_offsets(self):
9797
def test_read_state_info(self):
9898
self.maxDiff = None
9999
conf_past = Config()
100-
conf_past.curtime = datetime(2021, 3, 1)
100+
conf_past.curtime = datetime(2021, 3, 1, tzinfo=timezone.utc)
101101
conf_past.dbcmd = MockDatabase()
102102
conf_past.tables = [Table("test").set_partition_period(timedelta(days=30))]
103103

@@ -109,7 +109,7 @@ def test_read_state_info(self):
109109
calculate_sql_alters_from_state_info(conf_past, state_fs)
110110

111111
conf_now = Config()
112-
conf_now.curtime = datetime(2021, 3, 3)
112+
conf_now.curtime = datetime(2021, 3, 3, tzinfo=timezone.utc)
113113
conf_now.dbcmd = MockDatabase()
114114
conf_now.dbcmd._response = [
115115
[
@@ -153,7 +153,7 @@ def test_read_state_info_map_table(self):
153153
self.maxDiff = None
154154
conf = Config()
155155
conf.assume_partitioned_on = ["orderID", "authzID"]
156-
conf.curtime = datetime(2021, 3, 3)
156+
conf.curtime = datetime(2021, 3, 3, tzinfo=timezone.utc)
157157
conf.dbcmd = MockDatabase()
158158
conf.dbcmd._select_response = [[{"authzID": 22}], [{"orderID": 11}]]
159159
conf.dbcmd._response = [
@@ -223,7 +223,7 @@ def test_suffix(self):
223223
def test_generate_sql_copy_commands(self):
224224
conf = Config()
225225
conf.assume_partitioned_on = ["id"]
226-
conf.curtime = datetime(2021, 3, 3)
226+
conf.curtime = datetime(2021, 3, 3, tzinfo=timezone.utc)
227227
conf.dbcmd = MockDatabase()
228228
map_data = _override_config_to_map_data(conf)
229229
cmds = list(
@@ -263,7 +263,7 @@ def test_generate_sql_copy_commands(self):
263263

264264
def test_plan_partitions_for_time_offsets(self):
265265
parts = _plan_partitions_for_time_offsets(
266-
datetime(2021, 3, 3),
266+
datetime(2021, 3, 3, tzinfo=timezone.utc),
267267
[timedelta(days=60), timedelta(days=360)],
268268
[11943234],
269269
[16753227640],

partitionmanager/table_append_partition_test.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -462,7 +462,7 @@ def test_predict_forward_position(self):
462462
)
463463

464464
def test_predict_forward_time(self):
465-
t = datetime(2000, 1, 1)
465+
t = datetime(2000, 1, 1, tzinfo=timezone.utc)
466466

467467
with self.assertRaises(ValueError):
468468
_predict_forward_time(mkPos(0, 0), mkPos(100), [100], t)

partitionmanager/types_test.py

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -205,12 +205,12 @@ def test_changed_partition(self):
205205
PositionPartition("p_20210101").set_position([1, 2, 3, 4])
206206
)
207207
self.assertFalse(c.has_modifications)
208-
c.set_timestamp(datetime(2021, 1, 2))
208+
c.set_timestamp(datetime(2021, 1, 2, tzinfo=timezone.utc))
209209
y = c.set_position([10, 10, 10, 10])
210210
self.assertEqual(c, y)
211211
self.assertTrue(c.has_modifications)
212212

213-
self.assertEqual(c.timestamp(), datetime(2021, 1, 2))
213+
self.assertEqual(c.timestamp(), datetime(2021, 1, 2, tzinfo=timezone.utc))
214214
self.assertEqual(c.position.as_list(), [10, 10, 10, 10])
215215

216216
self.assertEqual(
@@ -276,7 +276,7 @@ def test_changed_partition(self):
276276
.as_partition(),
277277
NewPlannedPartition()
278278
.set_columns(4)
279-
.set_timestamp(datetime(2021, 1, 1))
279+
.set_timestamp(datetime(2021, 1, 1, tzinfo=timezone.utc))
280280
.as_partition(),
281281
)
282282

@@ -287,7 +287,9 @@ def test_new_partition(self):
287287
self.assertEqual(
288288
NewPlannedPartition()
289289
.set_columns(5)
290-
.set_timestamp(datetime(2021, 12, 31, hour=23, minute=15))
290+
.set_timestamp(
291+
datetime(2021, 12, 31, hour=23, minute=15, tzinfo=timezone.utc)
292+
)
291293
.as_partition(),
292294
MaxValuePartition("p_20211231", count=5),
293295
)
@@ -297,34 +299,38 @@ def test_new_partition(self):
297299
self.assertEqual(
298300
NewPlannedPartition()
299301
.set_position([3])
300-
.set_timestamp(datetime(2021, 12, 31))
302+
.set_timestamp(datetime(2021, 12, 31, tzinfo=timezone.utc))
301303
.as_partition(),
302304
PositionPartition("p_20211231").set_position(mkPos(3)),
303305
)
304306

305307
self.assertEqual(
306308
NewPlannedPartition()
307309
.set_position([1, 1, 1])
308-
.set_timestamp(datetime(1994, 1, 1))
310+
.set_timestamp(datetime(1994, 1, 1, tzinfo=timezone.utc))
309311
.as_partition(),
310312
PositionPartition("p_19940101").set_position([1, 1, 1]),
311313
)
312314

313315
self.assertEqual(
314316
NewPlannedPartition()
315317
.set_position([3])
316-
.set_timestamp(datetime(2021, 12, 31)),
318+
.set_timestamp(datetime(2021, 12, 31, tzinfo=timezone.utc)),
317319
NewPlannedPartition()
318320
.set_position([3])
319-
.set_timestamp(datetime(2021, 12, 31)),
321+
.set_timestamp(datetime(2021, 12, 31, tzinfo=timezone.utc)),
320322
)
321323

322324
self.assertEqual(
323325
NewPlannedPartition()
324326
.set_position([99, 999])
325-
.set_timestamp(datetime(2021, 12, 31, hour=19, minute=2))
327+
.set_timestamp(
328+
datetime(2021, 12, 31, hour=19, minute=2, tzinfo=timezone.utc)
329+
)
326330
.set_as_max_value(),
327-
NewPlannedPartition().set_columns(2).set_timestamp(datetime(2021, 12, 31)),
331+
NewPlannedPartition()
332+
.set_columns(2)
333+
.set_timestamp(datetime(2021, 12, 31, tzinfo=timezone.utc)),
328334
)
329335

330336

@@ -380,7 +386,7 @@ def test_partition_tuple_ordering(self):
380386
self.assertLess(cur_pos, p_20230724)
381387

382388
def test_instant_partition(self):
383-
now = datetime.utcnow()
389+
now = datetime.now(tz=timezone.utc)
384390

385391
ip = InstantPartition("p_20380101", now, [1, 2])
386392
self.assertEqual(ip.position.as_list(), [1, 2])
@@ -390,7 +396,9 @@ def test_instant_partition(self):
390396
def test_is_partition_type(self):
391397
self.assertTrue(is_partition_type(mkPPart("b", 1, 2)))
392398
self.assertTrue(
393-
is_partition_type(InstantPartition("p_19490520", datetime.utcnow(), [1, 2]))
399+
is_partition_type(
400+
InstantPartition("p_19490520", datetime.now(tz=timezone.utc), [1, 2])
401+
)
394402
)
395403
self.assertFalse(is_partition_type(None))
396404
self.assertFalse(is_partition_type(1))

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ select = [
4848
"BLE", # flake8-blind-except
4949
"C90", # McCabe cyclomatic complexity
5050
"DJ", # flake8-django
51+
"DTZ", # flake8-datetimez
5152
"E", # pycodestyle
5253
"EXE", # flake8-executable
5354
"F", # Pyflakes
@@ -86,7 +87,6 @@ select = [
8687
# "COM", # flake8-commas
8788
# "CPY", # flake8-copyright
8889
# "D", # pydocstyle
89-
# "DTZ", # flake8-datetimez
9090
# "EM", # flake8-errmsg
9191
# "ERA", # eradicate
9292
# "FURB", # refurb

0 commit comments

Comments
 (0)