Skip to content

Commit 56925fd

Browse files
authored
PYTHON-1321 Remove MongoReplicaSetClient (#552)
1 parent 6e8c370 commit 56925fd

13 files changed

+37
-499
lines changed

doc/api/pymongo/index.rst

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,6 @@
99

1010
Alias for :class:`pymongo.mongo_client.MongoClient`.
1111

12-
.. data:: MongoReplicaSetClient
13-
14-
Alias for :class:`pymongo.mongo_replica_set_client.MongoReplicaSetClient`.
15-
1612
.. data:: ReadPreference
1713

1814
Alias for :class:`pymongo.read_preferences.ReadPreference`.
@@ -46,7 +42,6 @@ Sub-modules:
4642
errors
4743
message
4844
mongo_client
49-
mongo_replica_set_client
5045
monitoring
5146
operations
5247
pool

doc/api/pymongo/mongo_replica_set_client.rst

Lines changed: 0 additions & 32 deletions
This file was deleted.

doc/changelog.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ Breaking Changes in 4.0
2525
- Removed :meth:`pymongo.database.Database.collection_names`.
2626
- Removed :meth:`pymongo.collection.Collection.parallel_scan`.
2727
- Removed :mod:`pymongo.thread_util`.
28+
- Removed :class:`~pymongo.mongo_replica_set_client.MongoReplicaSetClient`.
2829

2930
Notable improvements
3031
....................

doc/migrate-to-pymongo4.rst

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,15 @@ Warnings can also be changed to errors::
5050
.. note:: Not all deprecated features raise :exc:`DeprecationWarning` when
5151
used. See `Removed features with no migration path`_.
5252

53+
MongoReplicaSetClient
54+
---------------------
55+
56+
Removed :class:`~pymongo.mongo_replica_set_client.MongoReplicaSetClient`.
57+
Since PyMongo 3.0, ``MongoReplicaSetClient`` has been identical to
58+
:class:`pymongo.mongo_client.MongoClient`. Applications can simply replace
59+
``MongoReplicaSetClient`` with :class:`pymongo.mongo_client.MongoClient` and
60+
get the same behavior.
61+
5362
MongoClient
5463
-----------
5564

pymongo/__init__.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,6 @@ def get_version_string():
8989
MAX_SUPPORTED_WIRE_VERSION)
9090
from pymongo.cursor import CursorType
9191
from pymongo.mongo_client import MongoClient
92-
from pymongo.mongo_replica_set_client import MongoReplicaSetClient
9392
from pymongo.operations import (IndexModel,
9493
InsertOne,
9594
DeleteOne,

pymongo/common.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -364,7 +364,7 @@ def validate_read_preference(dummy, value):
364364

365365

366366
def validate_read_preference_mode(dummy, value):
367-
"""Validate read preference mode for a MongoReplicaSetClient.
367+
"""Validate read preference mode for a MongoClient.
368368
369369
.. versionchanged:: 3.5
370370
Returns the original ``value`` instead of the validated read preference

pymongo/mongo_client.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1001,8 +1001,7 @@ def primary(self):
10011001
`replicaSet` option.
10021002
10031003
.. versionadded:: 3.0
1004-
MongoClient gained this property in version 3.0 when
1005-
MongoReplicaSetClient's functionality was merged in.
1004+
MongoClient gained this property in version 3.0.
10061005
"""
10071006
return self._topology.get_primary()
10081007

@@ -1015,8 +1014,7 @@ def secondaries(self):
10151014
client was created without the `replicaSet` option.
10161015
10171016
.. versionadded:: 3.0
1018-
MongoClient gained this property in version 3.0 when
1019-
MongoReplicaSetClient's functionality was merged in.
1017+
MongoClient gained this property in version 3.0.
10201018
"""
10211019
return self._topology.get_secondaries()
10221020

pymongo/mongo_replica_set_client.py

Lines changed: 0 additions & 48 deletions
This file was deleted.

pymongo/read_preferences.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838

3939

4040
def _validate_tag_sets(tag_sets):
41-
"""Validate tag sets for a MongoReplicaSetClient.
41+
"""Validate tag sets for a MongoClient.
4242
"""
4343
if tag_sets is None:
4444
return tag_sets
@@ -144,7 +144,7 @@ def tag_sets(self):
144144
To specify a priority-order for tag sets, provide a list of
145145
tag sets: ``[{'dc': 'ny'}, {'dc': 'la'}, {}]``. A final, empty tag
146146
set, ``{}``, means "read from any member that matches the mode,
147-
ignoring tags." MongoReplicaSetClient tries each set of tags in turn
147+
ignoring tags." MongoClient tries each set of tags in turn
148148
until it finds a set of tags with at least one matching member.
149149
150150
.. seealso:: `Data-Center Awareness

test/test_gridfs.py

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,10 @@
2828
from bson.py3compat import StringIO, string_type
2929
from pymongo.mongo_client import MongoClient
3030
from pymongo.errors import (ConfigurationError,
31-
ConnectionFailure,
31+
NotMasterError,
3232
ServerSelectionTimeoutError)
3333
from pymongo.read_preferences import ReadPreference
3434
from gridfs.errors import CorruptGridFile, FileExists, NoFile
35-
from test.test_replica_set_client import TestReplicaSetClientBase
3635
from test import (client_context,
3736
unittest,
3837
IntegrationTest)
@@ -487,7 +486,7 @@ def test_md5(self):
487486
self.assertIsNone(gout.md5)
488487

489488

490-
class TestGridfsReplicaSet(TestReplicaSetClientBase):
489+
class TestGridfsReplicaSet(IntegrationTest):
491490

492491
@classmethod
493492
@client_context.require_secondaries_count(1)
@@ -500,7 +499,7 @@ def tearDownClass(cls):
500499

501500
def test_gridfs_replica_set(self):
502501
rsc = rs_client(
503-
w=self.w,
502+
w=client_context.w,
504503
read_preference=ReadPreference.SECONDARY)
505504

506505
fs = gridfs.GridFS(rsc.gfsreplica, 'gfsreplicatest')
@@ -513,10 +512,7 @@ def test_gridfs_replica_set(self):
513512
self.assertEqual(b'foo', content)
514513

515514
def test_gridfs_secondary(self):
516-
primary_host, primary_port = self.primary
517-
primary_connection = single_client(primary_host, primary_port)
518-
519-
secondary_host, secondary_port = one(self.secondaries)
515+
secondary_host, secondary_port = one(self.client.secondaries)
520516
secondary_connection = single_client(
521517
secondary_host, secondary_port,
522518
read_preference=ReadPreference.SECONDARY)
@@ -526,12 +522,12 @@ def test_gridfs_secondary(self):
526522
fs = gridfs.GridFS(secondary_connection.gfsreplica, 'gfssecondarytest')
527523

528524
# This won't detect secondary, raises error
529-
self.assertRaises(ConnectionFailure, fs.put, b'foo')
525+
self.assertRaises(NotMasterError, fs.put, b'foo')
530526

531527
def test_gridfs_secondary_lazy(self):
532528
# Should detect it's connected to secondary and not attempt to
533529
# create index.
534-
secondary_host, secondary_port = one(self.secondaries)
530+
secondary_host, secondary_port = one(self.client.secondaries)
535531
client = single_client(
536532
secondary_host,
537533
secondary_port,
@@ -543,7 +539,7 @@ def test_gridfs_secondary_lazy(self):
543539

544540
# Connects, doesn't create index.
545541
self.assertRaises(NoFile, fs.get_last_version)
546-
self.assertRaises(ConnectionFailure, fs.put, 'data')
542+
self.assertRaises(NotMasterError, fs.put, 'data')
547543

548544

549545
if __name__ == "__main__":

test/test_gridfs_bucket.py

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,13 @@
3030
from bson.son import SON
3131
from gridfs.errors import NoFile, CorruptGridFile
3232
from pymongo.errors import (ConfigurationError,
33-
ConnectionFailure,
33+
NotMasterError,
3434
ServerSelectionTimeoutError)
3535
from pymongo.mongo_client import MongoClient
3636
from pymongo.read_preferences import ReadPreference
3737
from test import (client_context,
3838
unittest,
3939
IntegrationTest)
40-
from test.test_replica_set_client import TestReplicaSetClientBase
4140
from test.utils import (ignore_deprecations,
4241
joinall,
4342
one,
@@ -504,7 +503,7 @@ def test_md5(self):
504503
self.assertIsNone(gout.md5)
505504

506505

507-
class TestGridfsBucketReplicaSet(TestReplicaSetClientBase):
506+
class TestGridfsBucketReplicaSet(IntegrationTest):
508507

509508
@classmethod
510509
@client_context.require_secondaries_count(1)
@@ -517,7 +516,7 @@ def tearDownClass(cls):
517516

518517
def test_gridfs_replica_set(self):
519518
rsc = rs_client(
520-
w=self.w,
519+
w=client_context.w,
521520
read_preference=ReadPreference.SECONDARY)
522521

523522
gfs = gridfs.GridFSBucket(rsc.gfsbucketreplica, 'gfsbucketreplicatest')
@@ -526,10 +525,7 @@ def test_gridfs_replica_set(self):
526525
self.assertEqual(b'foo', content)
527526

528527
def test_gridfs_secondary(self):
529-
primary_host, primary_port = self.primary
530-
primary_connection = single_client(primary_host, primary_port)
531-
532-
secondary_host, secondary_port = one(self.secondaries)
528+
secondary_host, secondary_port = one(self.client.secondaries)
533529
secondary_connection = single_client(
534530
secondary_host, secondary_port,
535531
read_preference=ReadPreference.SECONDARY)
@@ -540,13 +536,13 @@ def test_gridfs_secondary(self):
540536
secondary_connection.gfsbucketreplica, 'gfsbucketsecondarytest')
541537

542538
# This won't detect secondary, raises error
543-
self.assertRaises(ConnectionFailure, gfs.upload_from_stream,
539+
self.assertRaises(NotMasterError, gfs.upload_from_stream,
544540
"test_filename", b'foo')
545541

546542
def test_gridfs_secondary_lazy(self):
547543
# Should detect it's connected to secondary and not attempt to
548544
# create index.
549-
secondary_host, secondary_port = one(self.secondaries)
545+
secondary_host, secondary_port = one(self.client.secondaries)
550546
client = single_client(
551547
secondary_host,
552548
secondary_port,
@@ -560,7 +556,7 @@ def test_gridfs_secondary_lazy(self):
560556
# Connects, doesn't create index.
561557
self.assertRaises(NoFile, gfs.open_download_stream_by_name,
562558
"test_filename")
563-
self.assertRaises(ConnectionFailure, gfs.upload_from_stream,
559+
self.assertRaises(NotMasterError, gfs.upload_from_stream,
564560
"test_filename", b'data')
565561

566562

test/test_read_preferences.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,10 @@
3939

4040
from test import (SkipTest,
4141
client_context,
42+
IntegrationTest,
4243
unittest,
4344
db_user,
4445
db_pwd)
45-
from test.test_replica_set_client import TestReplicaSetClientBase
4646
from test.utils import (connected,
4747
ignore_deprecations,
4848
one,
@@ -87,7 +87,7 @@ def test_deepcopy(self):
8787
self.assertEqual(pref, copy.deepcopy(pref))
8888

8989

90-
class TestReadPreferencesBase(TestReplicaSetClientBase):
90+
class TestReadPreferencesBase(IntegrationTest):
9191

9292
@classmethod
9393
@client_context.require_secondaries_count(1)
@@ -100,7 +100,7 @@ def setUp(self):
100100
self.client.pymongo_test.test.drop()
101101
self.client.get_database(
102102
"pymongo_test",
103-
write_concern=WriteConcern(w=self.w)).test.insert_many(
103+
write_concern=WriteConcern(w=client_context.w)).test.insert_many(
104104
[{'_id': i} for i in range(10)])
105105

106106
self.addCleanup(self.client.pymongo_test.test.drop)
@@ -130,7 +130,7 @@ def read_from_which_kind(self, client):
130130
def assertReadsFrom(self, expected, **kwargs):
131131
c = rs_client(**kwargs)
132132
wait_until(
133-
lambda: len(c.nodes - c.arbiters) == self.w,
133+
lambda: len(c.nodes - c.arbiters) == client_context.w,
134134
"discovered all nodes")
135135

136136
used = self.read_from_which_kind(c)
@@ -284,7 +284,7 @@ def test_nearest(self):
284284
read_preference=ReadPreference.NEAREST,
285285
localThresholdMS=10000) # 10 seconds
286286

287-
data_members = set(self.hosts).difference(set(self.arbiters))
287+
data_members = {self.client.primary} | self.client.secondaries
288288

289289
# This is a probabilistic test; track which members we've read from so
290290
# far, and keep reading until we've used all the members or give up.
@@ -347,23 +347,23 @@ def record_a_read(self, address):
347347
]
348348

349349

350-
class TestCommandAndReadPreference(TestReplicaSetClientBase):
350+
class TestCommandAndReadPreference(IntegrationTest):
351351

352352
@classmethod
353353
@client_context.require_secondaries_count(1)
354354
def setUpClass(cls):
355355
super(TestCommandAndReadPreference, cls).setUpClass()
356356
cls.c = ReadPrefTester(
357357
client_context.pair,
358-
replicaSet=cls.name,
358+
replicaSet=client_context.replica_set_name,
359359
# Ignore round trip times, to test ReadPreference modes only.
360360
localThresholdMS=1000*1000)
361361
if client_context.auth_enabled:
362362
cls.c.admin.authenticate(db_user, db_pwd)
363363
cls.client_version = Version.from_client(cls.c)
364364
# mapReduce and group fail with no collection
365365
coll = cls.c.pymongo_test.get_collection(
366-
'test', write_concern=WriteConcern(w=cls.w))
366+
'test', write_concern=WriteConcern(w=client_context.w))
367367
coll.insert_one({})
368368

369369
@classmethod

0 commit comments

Comments
 (0)