Release Notes - Python Driver - Version 3.0 - HTML format

Question

  • [PYTHON-709] - Why is missing '_id'-field fix early now?

Bug

  • [PYTHON-378] - Inconsistency between pure Python BSON._dict_to_bson and _cbson._dict_to_bson
  • [PYTHON-480] - Sub-collection issue when using ABCMeta
  • [PYTHON-484] - __pick_nearest doesn't work well for mongos seed list on local network
  • [PYTHON-617] - Slow connection to the replica set with one member down
  • [PYTHON-644] - Can't force PyMongo to send w=1 write concern
  • [PYTHON-667] - drop_index fails with OperationFailure if no index found on collection
  • [PYTHON-684] - jnote and wnote should not raise errors when connected to legacy servers
  • [PYTHON-685] - Possible resource leak in _cmessage
  • [PYTHON-690] - PyMongo driver docs don't mention text search
  • [PYTHON-691] - Helpers and internal command calls that don't obey read preference shouldn't raise UserWarning
  • [PYTHON-693] - MongoClient() doesn't parse arguments properly when None is passed
  • [PYTHON-695] - Wrong Python object name for UTC in C module
  • [PYTHON-696] - Index and user manipulation broken with mongos versions before 2.4.0
  • [PYTHON-697] - v 2.7 breaks backward compatibility on results returned by update with upsert
  • [PYTHON-698] - Ensure _cbson can encode types with broken __getattr__ implementations
  • [PYTHON-700] - Error behavior in SONManipulator
  • [PYTHON-710] - SON objects should not make deep dict conversion on comparison.
  • [PYTHON-712] - ObjectId.is_valid(None) returns True
  • [PYTHON-742] - Authenticate client in test_unix_socket in test_client.py
  • [PYTHON-747] - Exception TypeError
  • [PYTHON-749] - Handle non-integer chunk sizes in GridFS
  • [PYTHON-752] - Exception "ValueError: unsupported format character" in _check_command_response
  • [PYTHON-755] - PyMongo ReplicaSetConnection monitor hanging in test suite
  • [PYTHON-766] - KeyError parsing error response from mongos
  • [PYTHON-778] - Document URI quoting rules
  • [PYTHON-791] - bson.json_util.loads does not recognize $timestamp in object_hook
  • [PYTHON-794] - disconnect() doesn't unblock threads waiting on connection pool
  • [PYTHON-795] - Password basestring type check
  • [PYTHON-799] - Rare deadlock in Cursor destructor
  • [PYTHON-806] - Always use command cursor 'ns' value for OP_GET_MORE
  • [PYTHON-830] - Database._create_or_update_user does not respect database/client write concern
  • [PYTHON-842] - Unable to specify 'ssl_cert_reqs' option using URI style connection string
  • [PYTHON-857] - Wire protocol race with mixed versions of mongos
  • [PYTHON-863] - PeriodicExecutor issues in PyPy
  • [PYTHON-864] - Fully support RFC-3339 offset format for $date
  • [PYTHON-865] - PyMongo doesn't include $readPreference in mongos commands
  • [PYTHON-868] - Can't use mongos for secondary reads in Sharded mode
  • [PYTHON-869] - Database.current_op and MongoClient.unlock should use ReadPreference.PRIMARY
  • [PYTHON-870] - Fix error case reference leaks in _cbsonmodule.c (PyMongo 3)
  • [PYTHON-871] - Collection.find() fails when the filter is a defaultdict

Epic

New Feature

  • [PYTHON-383] - MongoReplicaSetClient should be able to initialize without primary
  • [PYTHON-706] - Implement SCRAM-SHA-1 Authentication Mechanism
  • [PYTHON-708] - Support new extended JSON types introduced in MongoDB 2.6
  • [PYTHON-723] - Requests must be used in a with-statement
  • [PYTHON-757] - Warn against installing "bson" from PyPI
  • [PYTHON-836] - Update command routing for Server Selection Spec
  • [PYTHON-841] - FAQ entry for key order and subdocument equality matching
  • [PYTHON-852] - Replace mongos high availability with load balancing

Task

  • [PYTHON-665] - PyMongo 3 - Drop support for Python 2.4, 2.5, and 3.1
  • [PYTHON-678] - Test mod_wsgi and Python 3
  • [PYTHON-686] - Update docs regarding Python 3
  • [PYTHON-687] - Update mod_wsgi tests
  • [PYTHON-705] - Handle Bulk API edge case for pre-2.6 servers when upserted _id not returned
  • [PYTHON-714] - Work around localhost exception issues in add_user when connected to MongoDB >= 2.7.1
  • [PYTHON-715] - Fix tests for MongoDB >= 2.7.1 running with authentication
  • [PYTHON-719] - Read preference backward compatibility
  • [PYTHON-724] - Remove use_greenlets and gevent
  • [PYTHON-725] - Review gevent tests
  • [PYTHON-726] - Test with eventlet, greenhouse, ...
  • [PYTHON-727] - Implement PoolOptions class
  • [PYTHON-754] - Deprecate dropDups / drop_dups option for ensure/create_index
  • [PYTHON-759] - Support $date as an ISO-8601 string or $numberLong in json_util.object_hook
  • [PYTHON-760] - BSONInt64 -> Int64
  • [PYTHON-761] - When available, use listCollections command for Database.collection_names and Collection.options
  • [PYTHON-762] - When available, use listIndexes command for Collection.index_information
  • [PYTHON-763] - Bump MAX_SUPPORTED_WIRE_VERSION for MongoDB 2.8
  • [PYTHON-764] - SCRAM-SHA-1 upgrade / downgrade support
  • [PYTHON-768] - Auth Mechanism Properties in the Connection String
  • [PYTHON-770] - Implement Server Discovery And Monitoring Spec
  • [PYTHON-781] - Run tests against the inMemoryExperiment and wiredtiger storage engines
  • [PYTHON-789] - Clarify docs - ObjectId constructor with str vs with unicode
  • [PYTHON-792] - Update create_collection, create_index, ensure_index documentation for MongoDB 2.8
  • [PYTHON-797] - Update minimongo in the Tools/ORM-Like Layers Information
  • [PYTHON-811] - latencyThresholdMS -> localThresholdMS
  • [PYTHON-812] - localThresholdMS should be a global immutable value
  • [PYTHON-813] - Support serverSelectionTimeoutMS
  • [PYTHON-814] - API and behavior changes for Database.command
  • [PYTHON-815] - Implement Server Selection spec test plan
  • [PYTHON-818] - Investigate use of unicode_literals in the 3.x branch.
  • [PYTHON-820] - Implement read changes for CRUD spec
  • [PYTHON-821] - Implement write changes for CRUD spec
  • [PYTHON-822] - Implement test plan for CRUD spec
  • [PYTHON-826] - Move CodecOptions from pymongo to bson
  • [PYTHON-827] - Replace as_class, tz_aware, and uuid_subtype with codec_options in BSON APIs
  • [PYTHON-828] - Internal BSON module changes to support CodecOptions
  • [PYTHON-837] - Implement CRUD spec exception hierarchy
  • [PYTHON-838] - Deprecate Database.add_son_manipulator
  • [PYTHON-839] - Audit validation error messages
  • [PYTHON-845] - Add examples to CRUD docstrings.
  • [PYTHON-846] - Database.connection -> Database.client
  • [PYTHON-847] - Merge MongoClient.disconnect and MongoClient.close
  • [PYTHON-848] - Remove MongoClient.alive()
  • [PYTHON-850] - Audit uses of ConfigurationError
  • [PYTHON-851] - Audit MongoClient properties
  • [PYTHON-854] - max_pool_size -> maxPoolSize
  • [PYTHON-856] - Rename CodecOptions as_class param to document_class
  • [PYTHON-858] - Rework read preference and high availability docs
  • [PYTHON-861] - Implement index management spec
  • [PYTHON-862] - Add batch_size to Cursor constructor.

Improvement

  • [PYTHON-226] - ObjectId creation from BSON could be optimized
  • [PYTHON-314] - Using index by its name through helper cursor.hint()
  • [PYTHON-346] - A faster and more memory efficient pure python BSON module.
  • [PYTHON-447] - MongoReplicaSetClient should try seeds in order specified
  • [PYTHON-493] - database.dereference() should pass **kwargs to find_one()
  • [PYTHON-505] - Allow PyMongo to work with any object that implements mapping protocol, not just dicts
  • [PYTHON-525] - PyMongo should have *one* client class - MongoClient
  • [PYTHON-526] - Remove previously deprecated methods and options.
  • [PYTHON-672] - Make read preference a class
  • [PYTHON-673] - Single source python 2/3 bson module
  • [PYTHON-674] - Single source python 2/3 pymongo module
  • [PYTHON-675] - Single source python 2/3 gridfs module
  • [PYTHON-676] - Single source python 2/3 test module
  • [PYTHON-677] - Rework WriteConcern class, API, and validation.
  • [PYTHON-679] - Add option socketKeepAlive to Python driver
  • [PYTHON-680] - Get rid of nose in pymongo tests
  • [PYTHON-681] - Reuse MongoClient wherever possible in pymongo tests
  • [PYTHON-682] - Start using coverage in pymongo tests
  • [PYTHON-683] - Separate unit tests and integration tests in pymongo test suite
  • [PYTHON-703] - bson.son.SON should not copy keys for internal operations
  • [PYTHON-707] - Add a BSONInt64 type
  • [PYTHON-717] - Implement MongoCredential
  • [PYTHON-718] - Use SSLContext when available
  • [PYTHON-720] - Explain deprecations
  • [PYTHON-722] - Manage sockets with a context manager
  • [PYTHON-728] - Clarify where socket.error is translated to ConnectionFailure
  • [PYTHON-730] - Add a validate option to uri_parser.parse_uri
  • [PYTHON-738] - Docs for pymongo.collection.Collection.insert() state that it accepts "any iterable"
  • [PYTHON-739] - Authorization Failure Error Message, include namespace?
  • [PYTHON-743] - Use a ClientOptions class for internal handling of URI and keyword arguments.
  • [PYTHON-744] - Allow count to work with query hints
  • [PYTHON-753] - Add "How to Ask for Help" section to Github readme
  • [PYTHON-758] - Allow tests to use an existing user when running under auth.
  • [PYTHON-776] - API Documentation needs to be update to reflect new 255k Default chunk size in GridFS
  • [PYTHON-785] - Remove start_request()
  • [PYTHON-788] - Remove "copy_database" helper method
  • [PYTHON-796] - Support cursor in listCollections and listIndexes commands
  • [PYTHON-798] - common.BaseObject should be immutable
  • [PYTHON-800] - Add CodecOptions class.
  • [PYTHON-801] - uuid_subtype -> uuid_representation
  • [PYTHON-802] - Add get_database and get_collection methods.
  • [PYTHON-803] - Commands shouldn't use Collection.find()
  • [PYTHON-804] - Add codec_options, read_preference, and write_concern params to Database.create_collection
  • [PYTHON-805] - Remove per-helper read_preference parameter; add Collection.with_options.
  • [PYTHON-807] - Deprecate Database.error() and related methods
  • [PYTHON-816] - Simplify Pool
  • [PYTHON-829] - Call ismaster on each new connection
  • [PYTHON-834] - option to disable hostname validation during CA validation
  • [PYTHON-835] - Consistent method signatures
  • [PYTHON-844] - Update generated documentation's style
  • [PYTHON-866] - Change MIN_HEARTBEAT_INTERVAL from 10ms to 500ms
  • [PYTHON-872] - When ssl=True and ssl_cert_reqs not provided, default to ssl.CERT_REQUIRED.
  • [PYTHON-874] - Use certifi or wincertstore to load CA certificates on older pythons

Sub-task

  • [PYTHON-737] - Port tests of socket leaks with exhaust cursors to 3.0-dev branch

Edit/Copy Release Notes

The text area below allows the project release notes to be edited and copied to another document.