

def __init__(self, collection, spec=None, fields=None, skip=0, limit=0, timeout=True, snapshot=False, tailable=False, sort=None, max_scan=None, as_class=None, slave_okay=False, await_data=False, partial=False, manipulate=True, read_preference=ReadPreference.PRIMARY, tag_sets=[{
    
}], secondary_acceptable_latency_ms=None, exhaust=False, compile_re=True, _must_use_master=False, _uuid_subtype=None, **kwargs):
    'Create a new cursor.\n\n        Should not be called directly by application developers - see\n        :meth:`~pymongo.collection.Collection.find` instead.\n\n        .. mongodoc:: cursors\n        '
    self.__id = None
    if (spec is None):
        spec = {
            
        }
    if (not isinstance(spec, dict)):
        raise TypeError('spec must be an instance of dict')
    if (not isinstance(skip, int)):
        raise TypeError('skip must be an instance of int')
    if (not isinstance(limit, int)):
        raise TypeError('limit must be an instance of int')
    if (not isinstance(timeout, bool)):
        raise TypeError('timeout must be an instance of bool')
    if (not isinstance(snapshot, bool)):
        raise TypeError('snapshot must be an instance of bool')
    if (not isinstance(tailable, bool)):
        raise TypeError('tailable must be an instance of bool')
    if (not isinstance(slave_okay, bool)):
        raise TypeError('slave_okay must be an instance of bool')
    if (not isinstance(await_data, bool)):
        raise TypeError('await_data must be an instance of bool')
    if (not isinstance(partial, bool)):
        raise TypeError('partial must be an instance of bool')
    if (not isinstance(exhaust, bool)):
        raise TypeError('exhaust must be an instance of bool')
    if (fields is not None):
        if (not fields):
            fields = {
                '_id': 1,
            }
        if (not isinstance(fields, dict)):
            fields = helpers._fields_list_to_dict(fields)
    if (as_class is None):
        as_class = collection.database.connection.document_class
    self.__collection = collection
    self.__spec = spec
    fields.__fields = fields
    self.__skip = skip
    self.__limit = limit
    self.__max_time_ms = None
    self.__batch_size = 0
    self.__max = None
    self.__min = None
    if (self.__collection.database.connection.is_mongos and exhaust):
        raise InvalidOperation('Exhaust cursors are not supported by mongos')
    if (limit and exhaust):
        raise InvalidOperation("Can't use limit and exhaust together.")
    self.__exhaust = exhaust
    self.__exhaust_mgr = None
    self.__empty = False
    self.__snapshot = snapshot
    self.__ordering = ((sort and helpers._index_document(sort)) or None)
    self.__max_scan = max_scan
    self.__explain = False
    self.__hint = None
    self.__comment = None
    self.__as_class = as_class
    self.__slave_okay = slave_okay
    self.__manipulate = manipulate
    self.__read_preference = read_preference
    self.__tag_sets = tag_sets
    self.__secondary_acceptable_latency_ms = secondary_acceptable_latency_ms
    self.__tz_aware = collection.database.connection.tz_aware
    self.__compile_re = compile_re
    self.__must_use_master = _must_use_master
    self.__uuid_subtype = (_uuid_subtype or collection.uuid_subtype)
    self.__data = deque()
    self.__connection_id = None
    self.__retrieved = 0
    self.__killed = False
    self.__query_flags = 0
    if tailable:
        self.__query_flags |= _QUERY_OPTIONS['tailable_cursor']
    if (not timeout):
        self.__query_flags |= _QUERY_OPTIONS['no_timeout']
    if (tailable and await_data):
        self.__query_flags |= _QUERY_OPTIONS['await_data']
    if exhaust:
        self.__query_flags |= _QUERY_OPTIONS['exhaust']
    if partial:
        self.__query_flags |= _QUERY_OPTIONS['partial']
    self.__kwargs = kwargs

dataset/ETHPy150Open blynch/CloudMemeBackend/pymongo/cursor.py Cursor.__init__/VarMisuse@417/718 `self`->`fields`