Skip to content

Commit da626dc

Browse files
committed
Merge branch 'master' of github.com:mongodb/mongo-python-driver
2 parents aa5abd7 + 9d3b503 commit da626dc

File tree

9 files changed

+37
-9
lines changed

9 files changed

+37
-9
lines changed

pymongo/asynchronous/mongo_client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -830,7 +830,7 @@ def __init__(
830830
# Username and password passed as kwargs override user info in URI.
831831
username = opts.get("username", username)
832832
password = opts.get("password", password)
833-
self._options = options = ClientOptions(username, password, dbase, opts)
833+
self._options = options = ClientOptions(username, password, dbase, opts, _IS_SYNC)
834834

835835
self._default_database_name = dbase
836836
self._lock = _ALock(_create_lock())

pymongo/client_options.py

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,11 @@ def _parse_ssl_options(options: Mapping[str, Any]) -> tuple[Optional[SSLContext]
144144

145145

146146
def _parse_pool_options(
147-
username: str, password: str, database: Optional[str], options: Mapping[str, Any]
147+
username: str,
148+
password: str,
149+
database: Optional[str],
150+
options: Mapping[str, Any],
151+
is_sync: bool,
148152
) -> PoolOptions:
149153
"""Parse connection pool options."""
150154
credentials = _parse_credentials(username, password, database, options)
@@ -183,6 +187,7 @@ def _parse_pool_options(
183187
server_api=server_api,
184188
load_balanced=load_balanced,
185189
credentials=credentials,
190+
is_sync=is_sync,
186191
)
187192

188193

@@ -195,7 +200,12 @@ class ClientOptions:
195200
"""
196201

197202
def __init__(
198-
self, username: str, password: str, database: Optional[str], options: Mapping[str, Any]
203+
self,
204+
username: str,
205+
password: str,
206+
database: Optional[str],
207+
options: Mapping[str, Any],
208+
is_sync: bool = True,
199209
):
200210
self.__options = options
201211
self.__codec_options = _parse_codec_options(options)
@@ -206,7 +216,7 @@ def __init__(
206216
self.__server_selection_timeout = options.get(
207217
"serverselectiontimeoutms", common.SERVER_SELECTION_TIMEOUT
208218
)
209-
self.__pool_options = _parse_pool_options(username, password, database, options)
219+
self.__pool_options = _parse_pool_options(username, password, database, options, is_sync)
210220
self.__read_preference = _parse_read_preference(options)
211221
self.__replica_set_name = options.get("replicaset")
212222
self.__write_concern = _parse_write_concern(options)

pymongo/pool_options.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -331,6 +331,7 @@ def __init__(
331331
server_api: Optional[ServerApi] = None,
332332
load_balanced: Optional[bool] = None,
333333
credentials: Optional[MongoCredential] = None,
334+
is_sync: Optional[bool] = True,
334335
):
335336
self.__max_pool_size = max_pool_size
336337
self.__min_pool_size = min_pool_size
@@ -350,6 +351,7 @@ def __init__(
350351
self.__load_balanced = load_balanced
351352
self.__credentials = credentials
352353
self.__metadata = copy.deepcopy(_METADATA)
354+
353355
if appname:
354356
self.__metadata["application"] = {"name": appname}
355357

@@ -361,10 +363,15 @@ def __init__(
361363
# },
362364
# 'platform': 'CPython 3.8.0|MyPlatform'
363365
# }
366+
if not is_sync:
367+
self.__metadata["driver"]["name"] = "{}|{}".format(
368+
self.__metadata["driver"]["name"],
369+
"async",
370+
)
364371
if driver:
365372
if driver.name:
366373
self.__metadata["driver"]["name"] = "{}|{}".format(
367-
_METADATA["driver"]["name"],
374+
self.__metadata["driver"]["name"],
368375
driver.name,
369376
)
370377
if driver.version:

pymongo/synchronous/mongo_client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -829,7 +829,7 @@ def __init__(
829829
# Username and password passed as kwargs override user info in URI.
830830
username = opts.get("username", username)
831831
password = opts.get("password", password)
832-
self._options = options = ClientOptions(username, password, dbase, opts)
832+
self._options = options = ClientOptions(username, password, dbase, opts, _IS_SYNC)
833833

834834
self._default_database_name = dbase
835835
self._lock = _create_lock()

test/asynchronous/test_client.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -341,6 +341,7 @@ async def test_read_preference(self):
341341

342342
def test_metadata(self):
343343
metadata = copy.deepcopy(_METADATA)
344+
metadata["driver"]["name"] = "PyMongo|async"
344345
metadata["application"] = {"name": "foobar"}
345346
client = AsyncMongoClient("mongodb://foo:27017/?appname=foobar&connect=false")
346347
options = client.options
@@ -359,7 +360,7 @@ def test_metadata(self):
359360
self.assertRaises(TypeError, AsyncMongoClient, driver="abc")
360361
self.assertRaises(TypeError, AsyncMongoClient, driver=("Foo", "1", "a"))
361362
# Test appending to driver info.
362-
metadata["driver"]["name"] = "PyMongo|FooDriver"
363+
metadata["driver"]["name"] = "PyMongo|async|FooDriver"
363364
metadata["driver"]["version"] = "{}|1.2.3".format(_METADATA["driver"]["version"])
364365
client = AsyncMongoClient(
365366
"foo",
@@ -403,6 +404,7 @@ def test_metadata(self):
403404
@mock.patch.dict("os.environ", {ENV_VAR_K8S: "1"})
404405
def test_container_metadata(self):
405406
metadata = copy.deepcopy(_METADATA)
407+
metadata["driver"]["name"] = "PyMongo|async"
406408
metadata["env"] = {}
407409
metadata["env"]["container"] = {"orchestrator": "kubernetes"}
408410
client = AsyncMongoClient("mongodb://foo:27017/?appname=foobar&connect=false")
@@ -1938,6 +1940,7 @@ def test_sigstop_sigcont(self):
19381940
async def _test_handshake(self, env_vars, expected_env):
19391941
with patch.dict("os.environ", env_vars):
19401942
metadata = copy.deepcopy(_METADATA)
1943+
metadata["driver"]["name"] = "PyMongo|async"
19411944
if expected_env is not None:
19421945
metadata["env"] = expected_env
19431946

test/discovery_and_monitoring/rs/too_old.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,9 @@
3030
"hosts": [
3131
"a:27017",
3232
"b:27017"
33-
]
33+
],
34+
"minWireVersion": 999,
35+
"maxWireVersion": 1000
3436
}
3537
]
3638
],

test/discovery_and_monitoring/sharded/too_new.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,9 @@
2121
"ok": 1,
2222
"helloOk": true,
2323
"isWritablePrimary": true,
24-
"msg": "isdbgrid"
24+
"msg": "isdbgrid",
25+
"minWireVersion": 7,
26+
"maxWireVersion": 900
2527
}
2628
]
2729
],

test/test_client.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -337,6 +337,7 @@ def test_read_preference(self):
337337

338338
def test_metadata(self):
339339
metadata = copy.deepcopy(_METADATA)
340+
metadata["driver"]["name"] = "PyMongo"
340341
metadata["application"] = {"name": "foobar"}
341342
client = MongoClient("mongodb://foo:27017/?appname=foobar&connect=false")
342343
options = client.options
@@ -399,6 +400,7 @@ def test_metadata(self):
399400
@mock.patch.dict("os.environ", {ENV_VAR_K8S: "1"})
400401
def test_container_metadata(self):
401402
metadata = copy.deepcopy(_METADATA)
403+
metadata["driver"]["name"] = "PyMongo"
402404
metadata["env"] = {}
403405
metadata["env"]["container"] = {"orchestrator": "kubernetes"}
404406
client = MongoClient("mongodb://foo:27017/?appname=foobar&connect=false")
@@ -1894,6 +1896,7 @@ def test_sigstop_sigcont(self):
18941896
def _test_handshake(self, env_vars, expected_env):
18951897
with patch.dict("os.environ", env_vars):
18961898
metadata = copy.deepcopy(_METADATA)
1899+
metadata["driver"]["name"] = "PyMongo"
18971900
if expected_env is not None:
18981901
metadata["env"] = expected_env
18991902

tools/synchro.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@
9696
"async-transactions-ref": "transactions-ref",
9797
"async-snapshot-reads-ref": "snapshot-reads-ref",
9898
"default_async": "default",
99+
"PyMongo|async": "PyMongo",
99100
}
100101

101102
docstring_replacements: dict[tuple[str, str], str] = {

0 commit comments

Comments
 (0)