44
44
)
45
45
from .._meta import (
46
46
deprecation_warn ,
47
- experimental ,
48
47
experimental_warn ,
49
- ExperimentalWarning ,
50
48
preview ,
51
49
preview_warn ,
52
50
PreviewWarning ,
@@ -293,10 +291,6 @@ def driver(
293
291
routing_context = routing_context , ** config )
294
292
295
293
@classmethod
296
- @experimental (
297
- "The bookmark manager feature is experimental. "
298
- "It might be changed or removed any time even without prior notice."
299
- )
300
294
def bookmark_manager (
301
295
cls ,
302
296
initial_bookmarks : t .Union [None , Bookmarks , t .Iterable [str ]] = None ,
@@ -357,9 +351,6 @@ def bookmark_manager(
357
351
358
352
:returns: A default implementation of :class:`AsyncBookmarkManager`.
359
353
360
- **This is experimental** (see :ref:`filter-warnings-ref`).
361
- It might be changed or removed any time even without prior notice.
362
-
363
354
.. versionadded:: 5.0
364
355
365
356
.. versionchanged:: 5.3
@@ -373,6 +364,8 @@ def bookmark_manager(
373
364
an argument.
374
365
* ``bookmarks_consumer`` no longer receives the database name as
375
366
an argument.
367
+
368
+ .. versionchanged:: 5.8 stabilized from experimental
376
369
"""
377
370
return AsyncNeo4jBookmarkManager (
378
371
initial_bookmarks = initial_bookmarks ,
@@ -480,12 +473,7 @@ def __init__(self, pool, default_workspace_config):
480
473
assert default_workspace_config is not None
481
474
self ._pool = pool
482
475
self ._default_workspace_config = default_workspace_config
483
- with warnings .catch_warnings ():
484
- warnings .filterwarnings ("ignore" ,
485
- message = r".*\bbookmark manager\b.*" ,
486
- category = ExperimentalWarning )
487
- self ._query_bookmark_manager = \
488
- AsyncGraphDatabase .bookmark_manager ()
476
+ self ._query_bookmark_manager = AsyncGraphDatabase .bookmark_manager ()
489
477
490
478
async def __aenter__ (self ) -> AsyncDriver :
491
479
return self
@@ -579,7 +567,7 @@ async def execute_query(
579
567
self ,
580
568
query_ : str ,
581
569
parameters_ : t .Optional [t .Dict [str , t .Any ]] = None ,
582
- routing_ : T_RoutingControl = RoutingControl .WRITERS ,
570
+ routing_ : T_RoutingControl = RoutingControl .WRITE ,
583
571
database_ : t .Optional [str ] = None ,
584
572
impersonated_user_ : t .Optional [str ] = None ,
585
573
bookmark_manager_ : t .Union [
@@ -598,7 +586,7 @@ async def execute_query(
598
586
self ,
599
587
query_ : str ,
600
588
parameters_ : t .Optional [t .Dict [str , t .Any ]] = None ,
601
- routing_ : T_RoutingControl = RoutingControl .WRITERS ,
589
+ routing_ : T_RoutingControl = RoutingControl .WRITE ,
602
590
database_ : t .Optional [str ] = None ,
603
591
impersonated_user_ : t .Optional [str ] = None ,
604
592
bookmark_manager_ : t .Union [
@@ -612,15 +600,11 @@ async def execute_query(
612
600
) -> _T :
613
601
...
614
602
615
- @experimental (
616
- "Driver.execute_query is experimental. "
617
- "It might be changed or removed any time even without prior notice."
618
- )
619
603
async def execute_query (
620
604
self ,
621
605
query_ : str ,
622
606
parameters_ : t .Optional [t .Dict [str , t .Any ]] = None ,
623
- routing_ : T_RoutingControl = RoutingControl .WRITERS ,
607
+ routing_ : T_RoutingControl = RoutingControl .WRITE ,
624
608
database_ : t .Optional [str ] = None ,
625
609
impersonated_user_ : t .Optional [str ] = None ,
626
610
bookmark_manager_ : t .Union [
@@ -661,9 +645,9 @@ async def work(tx):
661
645
bookmark_manager=bookmark_manager_,
662
646
auth=auth_,
663
647
) as session:
664
- if routing_ == RoutingControl.WRITERS :
648
+ if routing_ == RoutingControl.WRITE :
665
649
return await session.execute_write(work)
666
- elif routing_ == RoutingControl.READERS :
650
+ elif routing_ == RoutingControl.READ :
667
651
return await session.execute_read(work)
668
652
669
653
Usage example::
@@ -678,7 +662,7 @@ async def example(driver: neo4j.AsyncDriver) -> List[str]:
678
662
records, summary, keys = await driver.execute_query(
679
663
"MATCH (p:Person {age: $age}) RETURN p.name",
680
664
{"age": 42},
681
- routing_=neo4j.RoutingControl.READERS , # or just "r"
665
+ routing_=neo4j.RoutingControl.READ , # or just "r"
682
666
database_="neo4j",
683
667
)
684
668
assert keys == ["p.name"] # not needed, just for illustration
@@ -699,7 +683,7 @@ async def example(driver: neo4j.AsyncDriver) -> int:
699
683
"SET p.nickname = 'My dear' "
700
684
"RETURN count(*)",
701
685
# optional routing parameter, as write is default
702
- # routing_=neo4j.RoutingControl.WRITERS , # or just "w",
686
+ # routing_=neo4j.RoutingControl.WRITE , # or just "w",
703
687
database_="neo4j",
704
688
result_transformer_=neo4j.AsyncResult.single,
705
689
age=15,
@@ -837,17 +821,11 @@ async def example(driver: neo4j.AsyncDriver) -> neo4j.Record::
837
821
:returns: the result of the ``result_transformer``
838
822
:rtype: T
839
823
840
- **This is experimental** (see :ref:`filter-warnings-ref`).
841
- It might be changed or removed any time even without prior notice.
842
-
843
- We are looking for feedback on this feature. Please let us know what
844
- you think about it here:
845
- https://github.com/neo4j/neo4j-python-driver/discussions/896
846
-
847
824
.. versionadded:: 5.5
848
825
849
826
.. versionchanged:: 5.8
850
- Added the ``auth_`` parameter.
827
+ * Added the ``auth_`` parameter.
828
+ * Stabilized from experimental.
851
829
"""
852
830
invalid_kwargs = [k for k in kwargs if
853
831
k [- 2 :- 1 ] != "_" and k [- 1 :] == "_" ]
@@ -866,9 +844,6 @@ async def example(driver: neo4j.AsyncDriver) -> neo4j.Record::
866
844
assert bookmark_manager_ is not _default
867
845
868
846
with warnings .catch_warnings ():
869
- warnings .filterwarnings ("ignore" ,
870
- message = r".*\bbookmark_manager\b.*" ,
871
- category = ExperimentalWarning )
872
847
warnings .filterwarnings ("ignore" ,
873
848
message = r"^User switching\b.*" ,
874
849
category = PreviewWarning )
@@ -877,9 +852,9 @@ async def example(driver: neo4j.AsyncDriver) -> neo4j.Record::
877
852
bookmark_manager = bookmark_manager_ ,
878
853
auth = auth_ )
879
854
async with session :
880
- if routing_ == RoutingControl .WRITERS :
855
+ if routing_ == RoutingControl .WRITE :
881
856
executor = session .execute_write
882
- elif routing_ == RoutingControl .READERS :
857
+ elif routing_ == RoutingControl .READ :
883
858
executor = session .execute_read
884
859
else :
885
860
raise ValueError ("Invalid routing control value: %r"
@@ -889,11 +864,7 @@ async def example(driver: neo4j.AsyncDriver) -> neo4j.Record::
889
864
)
890
865
891
866
@property
892
- @experimental (
893
- "Driver.query_bookmark_manager is experimental. "
894
- "It might be changed or removed any time even without prior notice."
895
- )
896
- def query_bookmark_manager (self ) -> AsyncBookmarkManager :
867
+ def execute_query_bookmark_manager (self ) -> AsyncBookmarkManager :
897
868
"""The driver's default query bookmark manager.
898
869
899
870
This is the default :class:`AsyncBookmarkManager` used by
@@ -912,10 +883,12 @@ async def example(driver: neo4j.AsyncDriver) -> None:
912
883
# (i.e., can read what was written by <QUERY 2>)
913
884
await driver.execute_query("<QUERY 3>")
914
885
915
- **This is experimental** (see :ref:`filter-warnings-ref`).
916
- It might be changed or removed any time even without prior notice.
917
-
918
886
.. versionadded:: 5.5
887
+
888
+ .. versionchanged:: 5.8
889
+ * Renamed from ``query_bookmark_manager`` to
890
+ ``execute_query_bookmark_manager``.
891
+ * Stabilized from experimental.
919
892
"""
920
893
return self ._query_bookmark_manager
921
894
@@ -1212,11 +1185,7 @@ async def _work(
1212
1185
) -> _T :
1213
1186
res = await tx .run (query , parameters )
1214
1187
if transformer is AsyncResult .to_eager_result :
1215
- with warnings .catch_warnings ():
1216
- warnings .filterwarnings ("ignore" ,
1217
- message = r".*\bto_eager_result\b.*" ,
1218
- category = ExperimentalWarning )
1219
- return await transformer (res )
1188
+ return await transformer (res )
1220
1189
return await transformer (res )
1221
1190
1222
1191
0 commit comments