From fff8bf20b8cfcf03f1641b47b05950816c50f20b Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Tue, 1 Jul 2025 11:34:09 -0500 Subject: [PATCH 1/3] PYTHON-4779 Use slots for Selection and TopologyDescription --- pymongo/server_selectors.py | 2 ++ pymongo/topology_description.py | 10 ++++++++++ 2 files changed, 12 insertions(+) diff --git a/pymongo/server_selectors.py b/pymongo/server_selectors.py index 0d1425ab31..78d6d613a6 100644 --- a/pymongo/server_selectors.py +++ b/pymongo/server_selectors.py @@ -32,6 +32,8 @@ class Selection: """Input or output of a server selector function.""" + __slots__ = ("totopology_description", "server_descriptions", "primary", "common_wire_version") + @classmethod def from_topology_description(cls, topology_description: TopologyDescription) -> Selection: known_servers = topology_description.known_servers diff --git a/pymongo/topology_description.py b/pymongo/topology_description.py index 29293b2314..1f7cd73848 100644 --- a/pymongo/topology_description.py +++ b/pymongo/topology_description.py @@ -61,6 +61,16 @@ class _TopologyType(NamedTuple): class TopologyDescription: + __slots__ = ( + "_topology_type", + "_replica_set_name", + "_server_descriptions", + "_max_set_version", + "_max_election_id", + "_incompatible_err", + "_ls_timeout_minutes", + ) + def __init__( self, topology_type: int, From b60bef14609b93a3dfd3e7ed20cdb0327a886f0e Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Tue, 1 Jul 2025 12:57:54 -0500 Subject: [PATCH 2/3] add missing slot --- pymongo/topology_description.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pymongo/topology_description.py b/pymongo/topology_description.py index 1f7cd73848..19c83cce0d 100644 --- a/pymongo/topology_description.py +++ b/pymongo/topology_description.py @@ -63,6 +63,7 @@ class _TopologyType(NamedTuple): class TopologyDescription: __slots__ = ( "_topology_type", + "_topology_settings", "_replica_set_name", "_server_descriptions", "_max_set_version", From 55bdc7038dee6c54caa255ccc9bd137958c9f4bf Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Tue, 1 Jul 2025 14:00:24 -0500 Subject: [PATCH 3/3] fix slot name --- pymongo/server_selectors.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pymongo/server_selectors.py b/pymongo/server_selectors.py index 78d6d613a6..d01cf2381e 100644 --- a/pymongo/server_selectors.py +++ b/pymongo/server_selectors.py @@ -32,7 +32,7 @@ class Selection: """Input or output of a server selector function.""" - __slots__ = ("totopology_description", "server_descriptions", "primary", "common_wire_version") + __slots__ = ("topology_description", "server_descriptions", "primary", "common_wire_version") @classmethod def from_topology_description(cls, topology_description: TopologyDescription) -> Selection: