o az@szddlZddlZddlmZddlmZddlmZGdddZGddde eZ Gd d d Z Gd d d e Z dS) N) import_module)router)QuerySetcseZdZdZdZdZfddZfddZddZd d Z d d Z d dZ e ddZ e d$ddZddZddZd%ddZeddZddZddZd d!Zd"d#ZZS)& BaseManagerrFcst|}||f|_|SN)super__new___constructor_args)clsargskwargsobj __class__:/usr/lib/python3/dist-packages/django/db/models/manager.pyrs  zBaseManager.__new__cs.t|d|_d|_d|_i|_dSr)r__init___set_creation_countermodelname_db_hintsselfrrrrs  zBaseManager.__init__cCsd|jjj|jfS)z,Return "app_label.model_label.manager_name".%s.%s)r_metalabelrrrrr__str__"szBaseManager.__str__cOs|Srr)r r r rrr__class_getitem__&zBaseManager.__class_getitem__cCs~|j}t|ddrddd|j|jfddfS|j}|jj}t|}t||s.td||fdd||fd|jd|jdfS) z Return a 5-tuple of the form (as_manager (True), manager_class, queryset_class, args, kwargs). Raise a ValueError if the manager is dynamically generated. _built_with_as_managerFTNrzCould not find manager %s in %s. Please note that you need to inherit from managers you dynamically generated with 'from_queryset()'.r) _queryset_classgetattr __module____name__rrhasattr ValueErrorr )rqs_class module_namermodulerrr deconstruct)s.   zBaseManager.deconstructcKsgSrr)rr rrrcheckNrzBaseManager.checkcCshdd}i}tj|tjdD]#\}}t||rqt|dd}|s)|dur*|dr*q|||||<q|S)Ncs fdd}|j|_|j|_|S)Ncst||i|Sr)r# get_queryset)rr r rrrmanager_methodTszPBaseManager._get_queryset_methods..create_method..manager_method)r%__doc__)rmethodr/rr.r create_methodSs z8BaseManager._get_queryset_methods..create_method) predicate queryset_only_)inspect getmembers isfunctionr&r# startswith)r queryset_classr2 new_methodsrr1r4rrr_get_queryset_methodsQs  z!BaseManager._get_queryset_methodsNcCs4|dur d|j|jf}t||fd|i||S)Nz%sFrom%sr")r%typer<)r r: class_namerrr from_querysetgszBaseManager.from_querysetcCs2|jp||_||_t||t||j|dSr)rrsetattrManagerDescriptorr add_manager)rr rrrrcontribute_to_classps zBaseManager.contribute_to_classcCstj|_tjd7_dS)zn Set the creation counter value for this instance and increment the class-level copy. r!N)rcreation_counterrrrrrxsz!BaseManager._set_creation_countercCs&t|}|p |j|_|p|j|_|Sr)copyrr)rusinghintsr rrr db_managers   zBaseManager.db_managercCs|jp tj|jfi|jSr)rr db_for_readrrrrrrdbszBaseManager.dbcCs|j|j|j|jdS)z Return a new QuerySet object. Subclasses can override this method to customize the behavior of the Manager. )rrFrG)r"rrrrrrrr-szBaseManager.get_querysetcCs|Sr)r-rrrrallszBaseManager.allcCst||jo |j|jkSr) isinstancerr )rotherrrr__eq__s  zBaseManager.__eq__cCst|Sr)idrrrr__hash__szBaseManager.__hash__r)NN)r%r$ __qualname__rD auto_createduse_in_migrationsrrrrr+r, classmethodr<r?rCrrHpropertyrJr-rKrNrP __classcell__rrrrr s.  %     rc@s eZdZdS)ManagerN)r%r$rQrrrrrWsrWc@seZdZddZdddZdS)rAcCs ||_dSr)manager)rrXrrrrs zManagerDescriptor.__init__NcCs`|dur td|j|jjrtd|jjf|jjr(td|jj|jjf|jj|jj S)Nz)Manager isn't accessible via %s instancesz'Manager isn't available; %s is abstractz7Manager isn't available; '%s' has been swapped for '%s') AttributeErrorr%rabstract object_nameswappedr managers_maprXr)rinstancer rrr__get__szManagerDescriptor.__get__r)r%r$rQrr_rrrrrAsrAcs(eZdZfddZfddZZS) EmptyManagercst||_dSr)rrr)rrrrrrs  zEmptyManager.__init__cstSr)rr-nonerrrrr-szEmptyManager.get_queryset)r%r$rQrr-rVrrrrr`s r`) rEr6 importlibr django.dbrdjango.db.models.queryrrr?rWrAr`rrrrs