Skip to content

Commit 97e0778

Browse files
committed
some refactoring
1 parent 40509a1 commit 97e0778

File tree

2 files changed

+80
-136
lines changed

2 files changed

+80
-136
lines changed

pymongo/asynchronous/mongo_client.py

Lines changed: 40 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -830,48 +830,13 @@ 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, _IS_SYNC)
833+
self._options = ClientOptions(username, password, dbase, opts, _IS_SYNC)
834834

835835
self._default_database_name = dbase
836836
self._lock = _async_create_lock()
837837
self._kill_cursors_queue: list = []
838838

839-
self._event_listeners = options.pool_options._event_listeners
840-
super().__init__(
841-
options.codec_options,
842-
options.read_preference,
843-
options.write_concern,
844-
options.read_concern,
845-
)
846839
self._encrypter: Optional[_Encrypter] = None
847-
if not is_srv:
848-
self._topology_settings = TopologySettings(
849-
seeds=seeds,
850-
replica_set_name=options.replica_set_name,
851-
pool_class=pool_class,
852-
pool_options=options.pool_options,
853-
monitor_class=monitor_class,
854-
condition_class=condition_class,
855-
local_threshold_ms=options.local_threshold_ms,
856-
server_selection_timeout=options.server_selection_timeout,
857-
server_selector=options.server_selector,
858-
heartbeat_frequency=options.heartbeat_frequency,
859-
fqdn=fqdn,
860-
direct_connection=options.direct_connection,
861-
load_balanced=options.load_balanced,
862-
srv_service_name=srv_service_name,
863-
srv_max_hosts=srv_max_hosts,
864-
server_monitoring_mode=options.server_monitoring_mode,
865-
)
866-
if self._options.auto_encryption_opts:
867-
from pymongo.asynchronous.encryption import _Encrypter
868-
869-
self._encrypter = _Encrypter(self, self._options.auto_encryption_opts)
870-
871-
self._opened = False
872-
self._closed = False
873-
if not is_srv:
874-
self._init_background(first=True)
875840

876841
self._resolve_srv_info.update(
877842
{
@@ -885,11 +850,17 @@ def __init__(
885850
"condition_class": condition_class,
886851
}
887852
)
853+
if not is_srv:
854+
self._init_based_on_options(seeds, srv_max_hosts, srv_service_name)
855+
856+
self._opened = False
857+
self._closed = False
858+
if not is_srv:
859+
self._init_background(first=True)
860+
888861
if _IS_SYNC and connect:
889862
self._get_topology() # type: ignore[unused-coroutine]
890863

891-
self._timeout = self._options.timeout
892-
893864
def _resolve_srv(self) -> None:
894865
keyword_opts = self._resolve_srv_info["keyword_opts"]
895866
seeds = set()
@@ -957,38 +928,39 @@ def _resolve_srv(self) -> None:
957928
username, password, self._resolve_srv_info["dbase"], opts, _IS_SYNC
958929
)
959930

960-
self._event_listeners = self._options.pool_options._event_listeners
961-
super().__init__(
962-
self._options.codec_options,
963-
self._options.read_preference,
964-
self._options.write_concern,
965-
self._options.read_concern,
966-
)
931+
self._init_based_on_options(seeds, srv_max_hosts, srv_service_name)
967932

968-
self._topology_settings = TopologySettings(
969-
seeds=seeds,
970-
replica_set_name=self._options.replica_set_name,
971-
pool_class=self._resolve_srv_info["pool_class"],
972-
pool_options=self._options.pool_options,
973-
monitor_class=self._resolve_srv_info["monitor_class"],
974-
condition_class=self._resolve_srv_info["condition_class"],
975-
local_threshold_ms=self._options.local_threshold_ms,
976-
server_selection_timeout=self._options.server_selection_timeout,
977-
server_selector=self._options.server_selector,
978-
heartbeat_frequency=self._options.heartbeat_frequency,
979-
fqdn=self._resolve_srv_info["fqdn"],
980-
direct_connection=self._options.direct_connection,
981-
load_balanced=self._options.load_balanced,
982-
srv_service_name=srv_service_name,
983-
srv_max_hosts=srv_max_hosts,
984-
server_monitoring_mode=self._options.server_monitoring_mode,
985-
)
986-
987-
if self._options.auto_encryption_opts:
988-
from pymongo.asynchronous.encryption import _Encrypter
933+
def _init_based_on_options(self, seeds, srv_max_hosts, srv_service_name):
934+
self._event_listeners = self._options.pool_options._event_listeners
935+
super().__init__(
936+
self._options.codec_options,
937+
self._options.read_preference,
938+
self._options.write_concern,
939+
self._options.read_concern,
940+
)
941+
self._topology_settings = TopologySettings(
942+
seeds=seeds,
943+
replica_set_name=self._options.replica_set_name,
944+
pool_class=self._resolve_srv_info["pool_class"],
945+
pool_options=self._options.pool_options,
946+
monitor_class=self._resolve_srv_info["monitor_class"],
947+
condition_class=self._resolve_srv_info["condition_class"],
948+
local_threshold_ms=self._options.local_threshold_ms,
949+
server_selection_timeout=self._options.server_selection_timeout,
950+
server_selector=self._options.server_selector,
951+
heartbeat_frequency=self._options.heartbeat_frequency,
952+
fqdn=self._resolve_srv_info["fqdn"],
953+
direct_connection=self._options.direct_connection,
954+
load_balanced=self._options.load_balanced,
955+
srv_service_name=srv_service_name,
956+
srv_max_hosts=srv_max_hosts,
957+
server_monitoring_mode=self._options.server_monitoring_mode,
958+
)
959+
if self._options.auto_encryption_opts:
960+
from pymongo.asynchronous.encryption import _Encrypter
989961

990-
self._encrypter = _Encrypter(self, self._options.auto_encryption_opts)
991-
self._timeout = self._options.timeout
962+
self._encrypter = _Encrypter(self, self._options.auto_encryption_opts)
963+
self._timeout = self._options.timeout
992964

993965
def _normalize_and_validate_options(
994966
self, opts: common._CaseInsensitiveDictionary, seeds: set[tuple[str, int | None]]

pymongo/synchronous/mongo_client.py

Lines changed: 40 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -828,48 +828,13 @@ def __init__(
828828
# Username and password passed as kwargs override user info in URI.
829829
username = opts.get("username", username)
830830
password = opts.get("password", password)
831-
self._options = options = ClientOptions(username, password, dbase, opts, _IS_SYNC)
831+
self._options = ClientOptions(username, password, dbase, opts, _IS_SYNC)
832832

833833
self._default_database_name = dbase
834834
self._lock = _create_lock()
835835
self._kill_cursors_queue: list = []
836836

837-
self._event_listeners = options.pool_options._event_listeners
838-
super().__init__(
839-
options.codec_options,
840-
options.read_preference,
841-
options.write_concern,
842-
options.read_concern,
843-
)
844837
self._encrypter: Optional[_Encrypter] = None
845-
if not is_srv:
846-
self._topology_settings = TopologySettings(
847-
seeds=seeds,
848-
replica_set_name=options.replica_set_name,
849-
pool_class=pool_class,
850-
pool_options=options.pool_options,
851-
monitor_class=monitor_class,
852-
condition_class=condition_class,
853-
local_threshold_ms=options.local_threshold_ms,
854-
server_selection_timeout=options.server_selection_timeout,
855-
server_selector=options.server_selector,
856-
heartbeat_frequency=options.heartbeat_frequency,
857-
fqdn=fqdn,
858-
direct_connection=options.direct_connection,
859-
load_balanced=options.load_balanced,
860-
srv_service_name=srv_service_name,
861-
srv_max_hosts=srv_max_hosts,
862-
server_monitoring_mode=options.server_monitoring_mode,
863-
)
864-
if self._options.auto_encryption_opts:
865-
from pymongo.synchronous.encryption import _Encrypter
866-
867-
self._encrypter = _Encrypter(self, self._options.auto_encryption_opts)
868-
869-
self._opened = False
870-
self._closed = False
871-
if not is_srv:
872-
self._init_background(first=True)
873838

874839
self._resolve_srv_info.update(
875840
{
@@ -883,11 +848,17 @@ def __init__(
883848
"condition_class": condition_class,
884849
}
885850
)
851+
if not is_srv:
852+
self._init_based_on_options(seeds, srv_max_hosts, srv_service_name)
853+
854+
self._opened = False
855+
self._closed = False
856+
if not is_srv:
857+
self._init_background(first=True)
858+
886859
if _IS_SYNC and connect:
887860
self._get_topology() # type: ignore[unused-coroutine]
888861

889-
self._timeout = self._options.timeout
890-
891862
def _resolve_srv(self) -> None:
892863
keyword_opts = self._resolve_srv_info["keyword_opts"]
893864
seeds = set()
@@ -955,38 +926,39 @@ def _resolve_srv(self) -> None:
955926
username, password, self._resolve_srv_info["dbase"], opts, _IS_SYNC
956927
)
957928

958-
self._event_listeners = self._options.pool_options._event_listeners
959-
super().__init__(
960-
self._options.codec_options,
961-
self._options.read_preference,
962-
self._options.write_concern,
963-
self._options.read_concern,
964-
)
929+
self._init_based_on_options(seeds, srv_max_hosts, srv_service_name)
965930

966-
self._topology_settings = TopologySettings(
967-
seeds=seeds,
968-
replica_set_name=self._options.replica_set_name,
969-
pool_class=self._resolve_srv_info["pool_class"],
970-
pool_options=self._options.pool_options,
971-
monitor_class=self._resolve_srv_info["monitor_class"],
972-
condition_class=self._resolve_srv_info["condition_class"],
973-
local_threshold_ms=self._options.local_threshold_ms,
974-
server_selection_timeout=self._options.server_selection_timeout,
975-
server_selector=self._options.server_selector,
976-
heartbeat_frequency=self._options.heartbeat_frequency,
977-
fqdn=self._resolve_srv_info["fqdn"],
978-
direct_connection=self._options.direct_connection,
979-
load_balanced=self._options.load_balanced,
980-
srv_service_name=srv_service_name,
981-
srv_max_hosts=srv_max_hosts,
982-
server_monitoring_mode=self._options.server_monitoring_mode,
983-
)
984-
985-
if self._options.auto_encryption_opts:
986-
from pymongo.synchronous.encryption import _Encrypter
931+
def _init_based_on_options(self, seeds, srv_max_hosts, srv_service_name):
932+
self._event_listeners = self._options.pool_options._event_listeners
933+
super().__init__(
934+
self._options.codec_options,
935+
self._options.read_preference,
936+
self._options.write_concern,
937+
self._options.read_concern,
938+
)
939+
self._topology_settings = TopologySettings(
940+
seeds=seeds,
941+
replica_set_name=self._options.replica_set_name,
942+
pool_class=self._resolve_srv_info["pool_class"],
943+
pool_options=self._options.pool_options,
944+
monitor_class=self._resolve_srv_info["monitor_class"],
945+
condition_class=self._resolve_srv_info["condition_class"],
946+
local_threshold_ms=self._options.local_threshold_ms,
947+
server_selection_timeout=self._options.server_selection_timeout,
948+
server_selector=self._options.server_selector,
949+
heartbeat_frequency=self._options.heartbeat_frequency,
950+
fqdn=self._resolve_srv_info["fqdn"],
951+
direct_connection=self._options.direct_connection,
952+
load_balanced=self._options.load_balanced,
953+
srv_service_name=srv_service_name,
954+
srv_max_hosts=srv_max_hosts,
955+
server_monitoring_mode=self._options.server_monitoring_mode,
956+
)
957+
if self._options.auto_encryption_opts:
958+
from pymongo.synchronous.encryption import _Encrypter
987959

988-
self._encrypter = _Encrypter(self, self._options.auto_encryption_opts)
989-
self._timeout = self._options.timeout
960+
self._encrypter = _Encrypter(self, self._options.auto_encryption_opts)
961+
self._timeout = self._options.timeout
990962

991963
def _normalize_and_validate_options(
992964
self, opts: common._CaseInsensitiveDictionary, seeds: set[tuple[str, int | None]]

0 commit comments

Comments
 (0)