Skip to content

Commit 8c49277

Browse files
committed
address review pt1
1 parent 082c4ab commit 8c49277

File tree

3 files changed

+40
-43
lines changed

3 files changed

+40
-43
lines changed

pymongo/asynchronous/mongo_client.py

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1042,21 +1042,18 @@ async def target() -> bool:
10421042
self._opened = False
10431043

10441044
def append_metadata(self, driver_info: DriverInfo) -> None:
1045+
"""Appends the given metadata to existing driver metadata.
1046+
1047+
:param driver_info: a :class:`~pymongo.driver_info.DriverInfo`
1048+
1049+
.. versionadded:: 4.14
10451050
"""
1046-
Appends the given metadata to existing driver metadata.
1047-
"""
1048-
metadata = self._options.pool_options.metadata
1049-
for k, v in driver_info._asdict().items():
1050-
if v is None:
1051-
continue
1052-
if k in metadata:
1053-
metadata[k] = f"{metadata[k]}|{v}"
1054-
elif k in metadata["driver"]:
1055-
metadata["driver"][k] = "{}|{}".format(
1056-
metadata["driver"][k],
1057-
v,
1058-
)
1059-
self._options.pool_options._set_metadata(metadata)
1051+
1052+
if not isinstance(driver_info, DriverInfo):
1053+
raise TypeError(
1054+
f"driver_info must be an instance of DriverInfo, not {type(driver_info)}"
1055+
)
1056+
self._options.pool_options._update_metadata(driver_info)
10601057

10611058
def _should_pin_cursor(self, session: Optional[AsyncClientSession]) -> Optional[bool]:
10621059
return self._options.load_balanced and not (session and session.in_transaction)

pymongo/pool_options.py

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -376,25 +376,31 @@ def __init__(
376376
"async",
377377
)
378378
if driver:
379-
if driver.name:
380-
self.__metadata["driver"]["name"] = "{}|{}".format(
381-
self.__metadata["driver"]["name"],
382-
driver.name,
383-
)
384-
if driver.version:
385-
self.__metadata["driver"]["version"] = "{}|{}".format(
386-
_METADATA["driver"]["version"],
387-
driver.version,
388-
)
389-
if driver.platform:
390-
self.__metadata["platform"] = "{}|{}".format(_METADATA["platform"], driver.platform)
379+
self._update_metadata(driver)
391380

392381
env = _metadata_env()
393382
if env:
394383
self.__metadata["env"] = env
395384

396385
_truncate_metadata(self.__metadata)
397386

387+
def _update_metadata(self, driver: DriverInfo):
388+
"""Updates the client's metadata"""
389+
if driver.name:
390+
self.__metadata["driver"]["name"] = "{}|{}".format(
391+
self.__metadata["driver"]["name"],
392+
driver.name,
393+
)
394+
if driver.version:
395+
self.__metadata["driver"]["version"] = "{}|{}".format(
396+
self.__metadata["driver"]["version"],
397+
driver.version,
398+
)
399+
if driver.platform:
400+
self.__metadata["platform"] = "{}|{}".format(
401+
self.__metadata["platform"], driver.platform
402+
)
403+
398404
@property
399405
def _credentials(self) -> Optional[MongoCredential]:
400406
"""A :class:`~pymongo.auth.MongoCredentials` instance or None."""
@@ -522,6 +528,3 @@ def server_api(self) -> Optional[ServerApi]:
522528
def load_balanced(self) -> Optional[bool]:
523529
"""True if this Pool is configured in load balanced mode."""
524530
return self.__load_balanced
525-
526-
def _set_metadata(self, new_data: dict[str, Any]) -> None:
527-
self.__metadata = new_data

pymongo/synchronous/mongo_client.py

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1042,21 +1042,18 @@ def target() -> bool:
10421042
self._opened = False
10431043

10441044
def append_metadata(self, driver_info: DriverInfo) -> None:
1045+
"""Appends the given metadata to existing driver metadata.
1046+
1047+
:param driver_info: a :class:`~pymongo.driver_info.DriverInfo`
1048+
1049+
.. versionadded:: 4.14
10451050
"""
1046-
Appends the given metadata to existing driver metadata.
1047-
"""
1048-
metadata = self._options.pool_options.metadata
1049-
for k, v in driver_info._asdict().items():
1050-
if v is None:
1051-
continue
1052-
if k in metadata:
1053-
metadata[k] = f"{metadata[k]}|{v}"
1054-
elif k in metadata["driver"]:
1055-
metadata["driver"][k] = "{}|{}".format(
1056-
metadata["driver"][k],
1057-
v,
1058-
)
1059-
self._options.pool_options._set_metadata(metadata)
1051+
1052+
if not isinstance(driver_info, DriverInfo):
1053+
raise TypeError(
1054+
f"driver_info must be an instance of DriverInfo, not {type(driver_info)}"
1055+
)
1056+
self._options.pool_options._update_metadata(driver_info)
10601057

10611058
def _should_pin_cursor(self, session: Optional[ClientSession]) -> Optional[bool]:
10621059
return self._options.load_balanced and not (session and session.in_transaction)

0 commit comments

Comments
 (0)