Skip to content

Commit 948890a

Browse files
committed
Replace deprecated datetime.utcnow() with datetime.now(UTC)
1 parent 47fe18e commit 948890a

File tree

5 files changed

+33
-33
lines changed

5 files changed

+33
-33
lines changed

src/amp/loaders/base.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import time
77
from abc import ABC, abstractmethod
88
from dataclasses import fields, is_dataclass
9-
from datetime import datetime
9+
from datetime import UTC, datetime
1010
from logging import Logger
1111
from typing import Any, Dict, Generic, Iterator, List, Optional, Set, TypeVar
1212

@@ -553,7 +553,7 @@ def _process_reorg_event(
553553
# Save reorg checkpoint (keeps old checkpoints for history)
554554
checkpoint = CheckpointState(
555555
ranges=reorg_ranges,
556-
timestamp=datetime.utcnow(),
556+
timestamp=datetime.now(UTC),
557557
worker_id=worker_id,
558558
is_reorg=True,
559559
)
@@ -718,11 +718,11 @@ def _save_checkpoint_if_complete(
718718
batch_count: Current batch number
719719
"""
720720
if ranges_complete and ranges:
721-
from datetime import datetime
721+
from datetime import UTC, datetime
722722

723723
checkpoint = CheckpointState(
724724
ranges=ranges,
725-
timestamp=datetime.utcnow(),
725+
timestamp=datetime.now(UTC),
726726
worker_id=worker_id,
727727
)
728728

src/amp/streaming/idempotency.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import logging
1010
from abc import ABC, abstractmethod
1111
from dataclasses import dataclass
12-
from datetime import datetime
12+
from datetime import UTC, datetime
1313
from typing import List, Optional
1414

1515
from .types import BlockRange
@@ -253,7 +253,7 @@ def mark_processed(
253253
return
254254

255255
table = f'{self.config.table_prefix}processed_ranges'
256-
processed_at = datetime.utcnow()
256+
processed_at = datetime.now(UTC)
257257

258258
insert_sql = f"""
259259
INSERT INTO {table} (connection_name, table_name, network, start_block, end_block, processed_at, batch_hash)

tests/integration/test_checkpoint_resume.py

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"""
77

88
import time
9-
from datetime import datetime
9+
from datetime import UTC, datetime
1010

1111
import psycopg2
1212
import pytest
@@ -82,7 +82,7 @@ def test_save_and_load_checkpoint(self, checkpoint_store):
8282

8383
checkpoint = CheckpointState(
8484
ranges=ranges,
85-
timestamp=datetime.utcnow(),
85+
timestamp=datetime.now(UTC),
8686
worker_id=0,
8787
)
8888

@@ -103,7 +103,7 @@ def test_checkpoint_upsert(self, checkpoint_store):
103103
ranges1 = [BlockRange(network='ethereum', start=100, end=200)]
104104
checkpoint1 = CheckpointState(
105105
ranges=ranges1,
106-
timestamp=datetime.utcnow(),
106+
timestamp=datetime.now(UTC),
107107
)
108108

109109
# Save first checkpoint
@@ -113,7 +113,7 @@ def test_checkpoint_upsert(self, checkpoint_store):
113113
ranges2 = [BlockRange(network='ethereum', start=200, end=300)]
114114
checkpoint2 = CheckpointState(
115115
ranges=ranges2,
116-
timestamp=datetime.utcnow(),
116+
timestamp=datetime.now(UTC),
117117
)
118118
checkpoint_store.save('conn1', 'table1', checkpoint2)
119119

@@ -126,14 +126,14 @@ def test_multiple_workers(self, checkpoint_store):
126126
ranges_w0 = [BlockRange(network='ethereum', start=100, end=200)]
127127
checkpoint_w0 = CheckpointState(
128128
ranges=ranges_w0,
129-
timestamp=datetime.utcnow(),
129+
timestamp=datetime.now(UTC),
130130
worker_id=0,
131131
)
132132

133133
ranges_w1 = [BlockRange(network='ethereum', start=300, end=400)]
134134
checkpoint_w1 = CheckpointState(
135135
ranges=ranges_w1,
136-
timestamp=datetime.utcnow(),
136+
timestamp=datetime.now(UTC),
137137
worker_id=1,
138138
)
139139

@@ -154,20 +154,20 @@ def test_delete_for_network(self, checkpoint_store):
154154
# Create checkpoints for different networks
155155
checkpoint_eth = CheckpointState(
156156
ranges=[BlockRange(network='ethereum', start=100, end=200)],
157-
timestamp=datetime.utcnow(),
157+
timestamp=datetime.now(UTC),
158158
worker_id=0,
159159
)
160160
checkpoint_poly = CheckpointState(
161161
ranges=[BlockRange(network='polygon', start=50, end=150)],
162-
timestamp=datetime.utcnow(),
162+
timestamp=datetime.now(UTC),
163163
worker_id=1,
164164
)
165165
checkpoint_mixed = CheckpointState(
166166
ranges=[
167167
BlockRange(network='ethereum', start=200, end=300),
168168
BlockRange(network='polygon', start=150, end=250),
169169
],
170-
timestamp=datetime.utcnow(),
170+
timestamp=datetime.now(UTC),
171171
worker_id=2,
172172
)
173173

@@ -191,7 +191,7 @@ def test_delete_checkpoint(self, checkpoint_store):
191191
"""Test checkpoint deletion"""
192192
checkpoint = CheckpointState(
193193
ranges=[BlockRange(network='ethereum', start=100, end=200)],
194-
timestamp=datetime.utcnow(),
194+
timestamp=datetime.now(UTC),
195195
)
196196

197197
checkpoint_store.save('conn1', 'table1', checkpoint)
@@ -254,7 +254,7 @@ def test_checkpoint_save_during_streaming(self, checkpoint_store):
254254
# Save checkpoint
255255
checkpoint = CheckpointState(
256256
ranges=ranges,
257-
timestamp=datetime.utcnow(),
257+
timestamp=datetime.now(UTC),
258258
)
259259
checkpoint_store.save('streaming_conn', 'streaming_table', checkpoint)
260260

@@ -273,7 +273,7 @@ def test_resume_from_checkpoint(self, checkpoint_store):
273273
BlockRange(network='ethereum', start=500, end=600, hash='0x123'),
274274
BlockRange(network='polygon', start=200, end=300, hash='0x456'),
275275
],
276-
timestamp=datetime.utcnow(),
276+
timestamp=datetime.now(UTC),
277277
)
278278
checkpoint_store.save('resume_conn', 'resume_table', checkpoint)
279279

@@ -292,7 +292,7 @@ def test_checkpoint_deleted_after_reorg(self, checkpoint_store):
292292
# Save checkpoint for ethereum
293293
checkpoint = CheckpointState(
294294
ranges=[BlockRange(network='ethereum', start=100, end=200)],
295-
timestamp=datetime.utcnow(),
295+
timestamp=datetime.now(UTC),
296296
)
297297
checkpoint_store.save('reorg_conn', 'reorg_table', checkpoint)
298298

@@ -317,7 +317,7 @@ def test_multiple_checkpoint_updates_during_stream(self, checkpoint_store):
317317
for i in range(5):
318318
checkpoint = CheckpointState(
319319
ranges=[BlockRange(network='ethereum', start=i * 100, end=(i + 1) * 100)],
320-
timestamp=datetime.utcnow(),
320+
timestamp=datetime.now(UTC),
321321
)
322322
checkpoint_store.save('progressive_conn', 'progressive_table', checkpoint)
323323
checkpoints.append(checkpoint)
@@ -336,7 +336,7 @@ def test_checkpoint_with_reorg_during_streaming(self, checkpoint_store):
336336
# Save initial checkpoint
337337
checkpoint_v0 = CheckpointState(
338338
ranges=[BlockRange(network='ethereum', start=100, end=200)],
339-
timestamp=datetime.utcnow(),
339+
timestamp=datetime.now(UTC),
340340
)
341341
checkpoint_store.save('reorg_conn', 'reorg_table', checkpoint_v0)
342342

@@ -349,7 +349,7 @@ def test_checkpoint_with_reorg_during_streaming(self, checkpoint_store):
349349
# Save new checkpoint after reorg (stream would have restarted)
350350
checkpoint_v1 = CheckpointState(
351351
ranges=[BlockRange(network='ethereum', start=180, end=280)], # May overlap with old
352-
timestamp=datetime.utcnow(),
352+
timestamp=datetime.now(UTC),
353353
)
354354
checkpoint_store.save('reorg_conn', 'reorg_table', checkpoint_v1)
355355

@@ -382,7 +382,7 @@ def test_null_checkpoint_store_no_side_effects(self):
382382
# All operations should be no-ops
383383
checkpoint = CheckpointState(
384384
ranges=[BlockRange(network='ethereum', start=100, end=200)],
385-
timestamp=datetime.utcnow(),
385+
timestamp=datetime.now(UTC),
386386
)
387387

388388
store.save('conn1', 'table1', checkpoint) # No-op
@@ -596,7 +596,7 @@ def test_exactly_once_with_checkpoint_integration(self, checkpoint_db_connection
596596
# Save checkpoint after batch 1
597597
checkpoint1 = CheckpointState(
598598
ranges=ranges_batch1,
599-
timestamp=datetime.utcnow(),
599+
timestamp=datetime.now(UTC),
600600
)
601601
checkpoint_store.save('conn1', 'table1', checkpoint1)
602602

@@ -607,7 +607,7 @@ def test_exactly_once_with_checkpoint_integration(self, checkpoint_db_connection
607607
# Save checkpoint after batch 2
608608
checkpoint2 = CheckpointState(
609609
ranges=ranges_batch2,
610-
timestamp=datetime.utcnow(),
610+
timestamp=datetime.now(UTC),
611611
)
612612
checkpoint_store.save('conn1', 'table1', checkpoint2)
613613

tests/unit/test_checkpoint.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
Unit tests for checkpoint system.
33
"""
44

5-
from datetime import datetime
5+
from datetime import UTC, datetime
66

77
import pytest
88

@@ -20,7 +20,7 @@ def test_creation(self):
2020
BlockRange(network='ethereum', start=100, end=200, hash='0xabc'),
2121
BlockRange(network='polygon', start=50, end=150, hash='0xdef'),
2222
]
23-
timestamp = datetime.utcnow()
23+
timestamp = datetime.now(UTC)
2424

2525
checkpoint = CheckpointState(
2626
ranges=ranges,
@@ -137,7 +137,7 @@ def test_save_does_nothing(self):
137137

138138
checkpoint = CheckpointState(
139139
ranges=[BlockRange(network='ethereum', start=100, end=200)],
140-
timestamp=datetime.utcnow(),
140+
timestamp=datetime.now(UTC),
141141
)
142142

143143
# Should not raise

tests/unit/test_idempotency.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
Unit tests for idempotency system.
33
"""
44

5-
from datetime import datetime
5+
from datetime import UTC, datetime
66

77
import pytest
88

@@ -48,7 +48,7 @@ class TestProcessedRange:
4848

4949
def test_creation(self):
5050
"""Test creating a processed range"""
51-
timestamp = datetime.utcnow()
51+
timestamp = datetime.now(UTC)
5252

5353
pr = ProcessedRange(
5454
connection_name='test_conn',
@@ -76,7 +76,7 @@ def test_matches_range_true(self):
7676
network='ethereum',
7777
start_block=100,
7878
end_block=200,
79-
processed_at=datetime.utcnow(),
79+
processed_at=datetime.now(UTC),
8080
)
8181

8282
block_range = BlockRange(network='ethereum', start=100, end=200)
@@ -90,7 +90,7 @@ def test_matches_range_false_network(self):
9090
network='ethereum',
9191
start_block=100,
9292
end_block=200,
93-
processed_at=datetime.utcnow(),
93+
processed_at=datetime.now(UTC),
9494
)
9595

9696
block_range = BlockRange(network='polygon', start=100, end=200)
@@ -104,7 +104,7 @@ def test_matches_range_false_blocks(self):
104104
network='ethereum',
105105
start_block=100,
106106
end_block=200,
107-
processed_at=datetime.utcnow(),
107+
processed_at=datetime.now(UTC),
108108
)
109109

110110
block_range = BlockRange(network='ethereum', start=100, end=300)

0 commit comments

Comments
 (0)