diff --git a/doc/changelog.rst b/doc/changelog.rst index d181926136..c9d1a927c4 100644 --- a/doc/changelog.rst +++ b/doc/changelog.rst @@ -4,6 +4,8 @@ Changelog Changes in Version 4.8.0 ------------------------- +The handshake metadata for "os.name" on Windows has been simplified to "Windows" to improve import time. + .. warning:: PyMongo 4.8 drops support for Python 3.7 and PyPy 3.8: Python 3.8+ or PyPy 3.9+ is now required. Changes in Version 4.7.2 diff --git a/pymongo/pool.py b/pymongo/pool.py index bbd49339df..de7710a605 100644 --- a/pymongo/pool.py +++ b/pymongo/pool.py @@ -211,13 +211,14 @@ def _set_keepalive_times(sock: socket.socket) -> None: "version": platform.mac_ver()[0], } elif sys.platform == "win32": + _ver = sys.getwindowsversion() _METADATA["os"] = { - "type": platform.system(), - # "Windows XP", "Windows 7", "Windows 10", etc. - "name": " ".join((platform.system(), platform.release())), - "architecture": platform.machine(), - # Windows patch level (e.g. 5.1.2600-SP3) - "version": "-".join(platform.win32_ver()[1:3]), + "type": "Windows", + "name": "Windows", + # Avoid using platform calls, see PYTHON-4455. + "architecture": os.environ.get("PROCESSOR_ARCHITECTURE") or platform.machine(), + # Windows patch level (e.g. 10.0.17763-SP0). + "version": ".".join(map(str, _ver[:3])) + f"-SP{_ver[-1] or '0'}", } elif sys.platform.startswith("java"): _name, _ver, _arch = platform.java_ver()[-1]