25
25
from inspect import isclass
26
26
from warnings import warn
27
27
28
+ from ._codec .packstream import RUST_AVAILABLE
29
+
28
30
29
31
if t .TYPE_CHECKING :
30
32
_FuncT = t .TypeVar ("_FuncT" , bound = t .Callable )
@@ -40,13 +42,17 @@ def _compute_bolt_agent() -> t.Dict[str, str]:
40
42
def format_version_info (version_info ):
41
43
return "{}.{}.{}-{}-{}" .format (* version_info )
42
44
45
+ language = "Python"
46
+ if RUST_AVAILABLE :
47
+ language += "-Rust"
48
+
43
49
return {
44
50
"product" : f"neo4j-python/{ version } " ,
45
51
"platform" :
46
52
f"{ platform .system () or 'Unknown' } "
47
53
f"{ platform .release () or 'unknown' } ; "
48
54
f"{ platform .machine () or 'unknown' } " ,
49
- "language" : f"Python /{ format_version_info (sys .version_info )} " ,
55
+ "language" : f"{ language } /{ format_version_info (sys .version_info )} " ,
50
56
"language_details" :
51
57
f"{ platform .python_implementation ()} ; "
52
58
f"{ format_version_info (sys .implementation .version )} "
@@ -59,9 +65,9 @@ def format_version_info(version_info):
59
65
60
66
61
67
def _compute_user_agent () -> str :
62
- template = "neo4j-python/{} Python/{}.{}.{}-{}-{} ({})"
63
- fields = ( version ,) + tuple ( sys . version_info ) + ( sys . platform ,)
64
- return template . format ( * fields )
68
+ return ( f' { BOLT_AGENT_DICT [ "product" ] } '
69
+ f' { BOLT_AGENT_DICT [ "language" ] } '
70
+ f'( { sys . platform } )' )
65
71
66
72
67
73
USER_AGENT = _compute_user_agent ()
0 commit comments