Skip to content

Commit 8bd8b39

Browse files
committed
Silence deprecation and syntax warnings surfaced by the test run
- parsers.py: use a raw bytes literal for LEXEME_RE so the regex escapes (\., \+, \S) no longer raise a SyntaxWarning. - database_changes.py: replace the deprecated ssl.PROTOCOL_TLSv1_2 with PROTOCOL_TLS_CLIENT, clearing hostname/CA checks to preserve the existing certificate-pinning behavior (mirrors the earlier tcp_utils.py fix). - Replace every datetime.utcnow() (deprecated in 3.12) with datetime.now(timezone.utc).replace(tzinfo=None), which keeps the exact naive-UTC value so serialization and time deltas are unchanged. Covers the request executor, subscription worker, and schema validation in the client, plus the affected time-series / revisions / patch tests.
1 parent ebe3b5e commit 8bd8b39

16 files changed

Lines changed: 59 additions & 41 deletions

File tree

ravendb/changes/database_changes.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,12 @@ def _get_server_certificate(self) -> Optional[str]:
8787
def _connect_websocket_secured(self, url: str) -> None:
8888
# Get server certificate via HTTPS and prepare SSL context
8989
server_certificate = base64.b64decode(self._get_server_certificate())
90-
ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)
90+
# PROTOCOL_TLS_CLIENT replaces the deprecated PROTOCOL_TLSv1_2 but defaults to CA verification and
91+
# hostname checking, which the old PROTOCOL_TLSv1_2 context did not do by default. Clear both to keep
92+
# the previous behavior; a trust store, when configured, re-enables CA verification below.
93+
ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
94+
ssl_context.check_hostname = False
95+
ssl_context.verify_mode = ssl.CERT_NONE
9196
ssl_context.load_cert_chain(self._request_executor.certificate_path)
9297
if self._request_executor.trust_store_path:
9398
ssl_context.verify_mode = ssl.CERT_REQUIRED

ravendb/documents/operations/schema_validation/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from __future__ import annotations
22

33
import json
4-
from datetime import datetime
4+
from datetime import datetime, timezone
55
from typing import Optional, Dict, Any, List
66

77
import requests
@@ -23,7 +23,7 @@ def __init__(
2323
):
2424
self.schema = schema
2525
self.disabled = disabled
26-
self.last_modified_time = last_modified_time or datetime.utcnow()
26+
self.last_modified_time = last_modified_time or datetime.now(timezone.utc).replace(tzinfo=None)
2727

2828
def to_json(self) -> Dict[str, Any]:
2929
return {

ravendb/documents/subscriptions/worker.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -744,11 +744,12 @@ def __run_async() -> None:
744744

745745
def _assert_last_connection_failure(self) -> None:
746746
if self._last_connection_failure is None:
747-
self._last_connection_failure = datetime.datetime.utcnow()
747+
self._last_connection_failure = datetime.datetime.now(datetime.timezone.utc).replace(tzinfo=None)
748748
return
749749

750750
if (
751-
datetime.datetime.utcnow().timestamp() - self._last_connection_failure.timestamp()
751+
datetime.datetime.now(datetime.timezone.utc).replace(tzinfo=None).timestamp()
752+
- self._last_connection_failure.timestamp()
752753
> self._options.max_erroneous_period.total_seconds()
753754
):
754755
raise SubscriptionInvalidStateException(

ravendb/http/request_executor.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -661,7 +661,7 @@ def execute(
661661
return # we either handled this already in the unsuccessful response or we are throwing
662662
self._on_succeed_request_invoke(self._database_name, url, response, request, attempt_num)
663663
response_dispose = command.process_response(self._cache, response, url)
664-
self._last_returned_response = datetime.datetime.utcnow()
664+
self._last_returned_response = datetime.datetime.now(datetime.timezone.utc).replace(tzinfo=None)
665665
finally:
666666
if response_dispose == ResponseDisposeHandling.AUTOMATIC:
667667
response.close()

ravendb/tests/jvm_migrated_tests/client_tests/indexing_tests/time_series_tests/test_basic_time_series_indexes_java_script.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import unittest
2-
from datetime import datetime, timedelta
2+
from datetime import datetime, timedelta, timezone
33

44
from ravendb import GetTermsOperation
55
from ravendb.documents.indexes.abstract_index_creation_tasks import AbstractJavaScriptIndexCreationTask
@@ -68,7 +68,7 @@ def test_time_series_names_for(self):
6868
self.assertIn("true", terms)
6969

7070
def test_basic_map_index_with_load(self):
71-
now1 = datetime.utcnow()
71+
now1 = datetime.now(timezone.utc).replace(tzinfo=None)
7272
now2 = now1 + timedelta(seconds=1)
7373

7474
with self.store.open_session() as session:
@@ -172,7 +172,7 @@ def test_basic_map_reduce_index_with_load(self):
172172
self.assertIn("la", terms)
173173

174174
def test_can_map_all_time_series_from_collection(self):
175-
now1 = datetime.utcnow()
175+
now1 = datetime.now(timezone.utc).replace(tzinfo=None)
176176
now2 = now1 + timedelta(seconds=1)
177177

178178
with self.store.open_session() as session:

ravendb/tests/jvm_migrated_tests/client_tests/indexing_tests/time_series_tests/test_basic_time_series_indexes_mixed_syntax.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from datetime import datetime
1+
from datetime import datetime, timezone
22

33
from ravendb import PutIndexesOperation, GetTermsOperation
44
from ravendb.documents.indexes.time_series import TimeSeriesIndexDefinition
@@ -11,7 +11,7 @@ def setUp(self):
1111
super(TestBasicTimeSeriesIndexes_MixedSyntax, self).setUp()
1212

1313
def test_basic_map_index(self):
14-
now1 = datetime.utcnow()
14+
now1 = datetime.now(timezone.utc).replace(tzinfo=None)
1515

1616
with self.store.open_session() as session:
1717
company = Company()

ravendb/tests/jvm_migrated_tests/client_tests/revisions_tests/test_revisions.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import unittest
2-
from datetime import datetime
2+
from datetime import datetime, timezone
33
from time import sleep
44

55
from ravendb import RevisionsConfiguration, RevisionsCollectionConfiguration, GetStatisticsOperation
@@ -361,9 +361,15 @@ def test_can_get_revisions_by_id_and_time_lazily(self):
361361
self.assertEqual(1, session.advanced.number_of_requests)
362362

363363
with self.store.open_session() as session:
364-
revision = session.advanced.revisions.get_by_before_date("users/1", datetime.utcnow(), User)
365-
revisions_lazily = session.advanced.revisions.lazily.get_by_before_date("users/1", datetime.utcnow(), User)
366-
session.advanced.revisions.lazily.get_by_before_date("users/2", datetime.utcnow(), User)
364+
revision = session.advanced.revisions.get_by_before_date(
365+
"users/1", datetime.now(timezone.utc).replace(tzinfo=None), User
366+
)
367+
revisions_lazily = session.advanced.revisions.lazily.get_by_before_date(
368+
"users/1", datetime.now(timezone.utc).replace(tzinfo=None), User
369+
)
370+
session.advanced.revisions.lazily.get_by_before_date(
371+
"users/2", datetime.now(timezone.utc).replace(tzinfo=None), User
372+
)
367373

368374
revisions_lazily_result = revisions_lazily.value
369375

ravendb/tests/jvm_migrated_tests/client_tests/session_tests/test_add_or_patch.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from datetime import datetime, timedelta
1+
from datetime import datetime, timedelta, timezone
22
from dataclasses import dataclass
33

44
from typing import List
@@ -24,14 +24,18 @@ def test_can_add_or_patch(self):
2424
key = "users/1"
2525

2626
with self.store.open_session() as session:
27-
new_user = User(first_name="Hibernating", last_name="Rhinos", last_login=datetime.utcnow())
27+
new_user = User(
28+
first_name="Hibernating", last_name="Rhinos", last_login=datetime.now(timezone.utc).replace(tzinfo=None)
29+
)
2830
session.store(new_user, key)
2931
session.save_changes()
3032
self.assertEqual(1, session.advanced.number_of_requests)
3133

3234
with self.store.open_session() as session:
33-
new_user = User(first_name="Hibernating", last_name="Rhinos", last_login=datetime.utcnow())
34-
new_date = datetime.utcnow() + timedelta(days=365)
35+
new_user = User(
36+
first_name="Hibernating", last_name="Rhinos", last_login=datetime.now(timezone.utc).replace(tzinfo=None)
37+
)
38+
new_date = datetime.now(timezone.utc).replace(tzinfo=None) + timedelta(days=365)
3539
session.advanced.add_or_patch(key, new_user, "last_login", new_date)
3640
session.save_changes()
3741

@@ -69,7 +73,7 @@ def test_can_add_or_patch_add_item_to_an_existing_array(self):
6973

7074
with self.store.open_session() as session:
7175
user = User(first_name="Hibernating", last_name="Rhinos")
72-
datetime_now = datetime.utcnow()
76+
datetime_now = datetime.now(timezone.utc).replace(tzinfo=None)
7377
d2000 = datetime(
7478
2000,
7579
datetime_now.month,

ravendb/tests/jvm_migrated_tests/client_tests/test_bulk_inserts.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,9 @@ def test_should_not_accept_ids_ending_with_pipe_line(self):
5555
)
5656

5757
def test_can_modify_metadata_with_bulk_insert(self):
58-
expiration_date = (datetime.datetime.utcnow() + datetime.timedelta(days=365)).isoformat() + "0Z" # add one year
58+
expiration_date = (
59+
datetime.datetime.now(datetime.timezone.utc).replace(tzinfo=None) + datetime.timedelta(days=365)
60+
).isoformat() + "0Z" # add one year
5961

6062
with self.store.bulk_insert() as bulk_insert:
6163
foobar = FooBar("Jon Snow")

ravendb/tests/jvm_migrated_tests/client_tests/test_first_class_patch.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from __future__ import annotations
22
from dataclasses import dataclass
3-
from datetime import datetime
3+
from datetime import datetime, timezone
44
from typing import Dict, List
55

66
from ravendb.tests.test_base import TestBase
@@ -263,7 +263,7 @@ def test_should_merge_patch_calls(self):
263263
session.store(user2, docid2)
264264
session.save_changes()
265265

266-
now = datetime.utcnow()
266+
now = datetime.now(timezone.utc).replace(tzinfo=None)
267267

268268
with self.store.open_session() as session:
269269
session.advanced.patch(self.doc_id, "numbers[0]", 31)

0 commit comments

Comments
 (0)