a :dg<@sdZddlZddlZddlZddlZddlZddlZddlZddlmZddl m Z m Z m Z ddl mZddlmZmZddeeDZd ZeZd d Zd d ZddZddZddZddZdddZddZddZddZ dd Z!dd!d"Z"d#d$Z#d%d&Z$d'd(Z%Gd)d*d*e&Z'Gd+d,d,e&Z(e(Z)e)j*Z*e)j+Z,e)j-Z.hd-Z/d.d/Z0Gd0d1d1e1Z2d2d3Z3Gd4d5d5e&Z4Gd6d7d7e&Z5Gd8d9d9e5Z6e7e6j8Z9Gd:d;d;e1Z:dd?d?e5ZdDdEZ?GdFdGdGe&Z@dHdIZAe*dddddfdJdKZBddLdMZCe*dddddfdNdOZDGdPdQdQe&ZEdRdSZFdTdUZGeBeD_&eEeD_HeCeD_IeGeD_JdVeD_KdWZLdXZMdYNdZd[eMODZPdYNd\d[eMODZQhd]ZRd^d_ZSd`ddYNeLeMePeQgODZThdaZUdbhZVeUeVBZWeTeRBZXeXeWBZYhdcZZdddedfdedgdedhdediZ[e\e\e\e\djddddkdld djddm Z]dndoZ^dpdqZ_drdsZ`dtduZae^e_e`eadvZbdwdxZcGdydzdze5ZdGd{d|d|ede6ZeGd}d~d~edZfGdddede=ZgGddde5ZhGddde5ZiGdddeiefe=ZjGddde&ZkekZlddZmGdddenZoeoddZpdddZqddZrGddde&ZseteqeteljufZvdawddZxdddZyGddde=ZzddZ{GdddZ|dS))Mock MagicMockpatchsentinelDEFAULTANYcallcreate_autospec AsyncMock FILTER_DIRNonCallableMockNonCallableMagicMock mock_open PropertyMocksealN)iscoroutinefunction)CodeType ModuleType MethodType) safe_repr)wrapspartialcCsh|]}|ds|qS_ startswith).0namer)/usr/local/lib/python3.9/unittest/mock.py 'r TcCs<t|rt|tsdSt|dr*t|d}t|p:t|S)NF__func__)_is_instance_mock isinstancer hasattrgetattrrinspectZ isawaitableobjrrr _is_async_obj/s   r*cCst|ddrt|SdSdS)N__code__F)r&rfuncrrr_is_async_func7s r.cCstt|tSN) issubclasstyper r(rrrr#>sr#cCst|tpt|tot|tSr/)r$ BaseExceptionr1r0r(rrr _is_exceptionDs r3cCs"t|trt|dr|jS|SdSNmock)r$ FunctionTypesr%r5r(rrr _extract_mockKsr7cCst|tr|s|j}d}n*t|tsDz |j}WntyBYdS0|rTt|d}n|}z|t|fWSt y|YdS0dSNT) r$r1__init__r6__call__AttributeErrorrr' signature ValueError)r-Z as_instanceZeat_selfZsig_funcrrr_get_signature_objectTs     r>FcsNt|||durdS\}fdd}t|||t|_t|_dS)Ncsj|i|dSr/bindselfargskwargssigrrchecksigvsz"_check_signature..checksig)r>_copy_func_detailsr1_mock_check_sig __signature__)r-r5 skipfirstinstancerGrrEr_check_signatureqs    rMc Cs8dD].}zt||t||Wqty0Yq0qdS)N)__name____doc____text_signature__ __module__ __defaults____kwdefaults__)setattrr&r;)r-funcopy attributerrrrH}s  rHcCs@t|trdSt|tttfr(t|jSt|dddur.checksigrU)Z _checksig_r5zYdef %s(*args, **kwargs): _checksig_(*args, **kwargs) return mock(*args, **kwargs))r$r1r>rHrN isidentifierexec _setup_func) r5originalrLrKresultr-rGrcontextsrcrUrrEr_set_signatures$       rjc s_fdd}fdd}fdd}fdd}fd d }fd d }fd d} fdd} d_d_d_t_t_t_j_j _ j _ |_ |_ |_ | _| _|_|_|_|__dS)Ncsj|i|Sr/)assert_called_withrbr5rrrksz'_setup_func..assert_called_withcsj|i|Sr/) assert_calledrbrlrrrmsz"_setup_func..assert_calledcsj|i|Sr/)assert_not_calledrbrlrrrnsz&_setup_func..assert_not_calledcsj|i|Sr/)assert_called_oncerbrlrrrosz'_setup_func..assert_called_oncecsj|i|Sr/)assert_called_once_withrbrlrrrpsz,_setup_func..assert_called_once_withcsj|i|Sr/)assert_has_callsrbrlrrrqsz%_setup_func..assert_has_callscsj|i|Sr/)assert_any_callrbrlrrrrsz$_setup_func..assert_any_callcs:t_t_j}t|r6|ur6|dSr/) _CallList method_calls mock_calls reset_mock return_valuer#)retrUr5rrrvs z_setup_func..reset_mockFr)r5called call_count call_argsrscall_args_listrtrurw side_effect_mock_childrenrkrprqrrrvrmrnrorJ_mock_delegate) rUr5rFrkrmrnrorprqrrrvrryrres8       recsJtjj_d_d_t_fdd}dD]}t|t||q.dS)Nrcstj||i|Sr/)r&r5)attrrCrDrlrrwrappersz"_setup_async_mock..wrapper)assert_awaitedassert_awaited_onceassert_awaited_withassert_awaited_once_withassert_any_awaitassert_has_awaitsassert_not_awaited) asyncio coroutines _is_coroutine await_count await_argsrsawait_args_listrTr)r5rrVrrlr_setup_async_mocks   rcCsd|dd|kS)N__%s__rrrrr _is_magicsrc@s$eZdZddZddZddZdS)_SentinelObjectcCs ||_dSr/rrBrrrrr9sz_SentinelObject.__init__cCs d|jSNz sentinel.%srrBrrr__repr__sz_SentinelObject.__repr__cCs d|jSrrrrrr __reduce__sz_SentinelObject.__reduce__N)rNrQ __qualname__r9rrrrrrrsrc@s$eZdZddZddZddZdS) _SentinelcCs i|_dSr/) _sentinelsrrrrr9"sz_Sentinel.__init__cCs|dkr t|j|t|S)N __bases__)r;r setdefaultrrrrr __getattr__%sz_Sentinel.__getattr__cCsdS)Nrrrrrrr+sz_Sentinel.__reduce__N)rNrQrr9rrrrrrr sr> _mock_parent _mock_namerw_mock_new_parent_mock_new_name_mock_side_effectr~_mock_return_valuecCs8t|d|}||fdd}||fdd}t||S)NZ_mock_cSs"|j}|durt||St||Sr/)rr&)rBr _the_namerFrrr_get@s z"_delegating_property.._getcSs*|j}|dur||j|<n t|||dSr/)rr^rT)rBvaluerrrFrrr_setEs z"_delegating_property.._set)_allowed_namesaddproperty)rrrrrrr_delegating_property=s  rc@seZdZddZddZdS)rscCslt|tst||St|}t|}||kr2dStd||dD]"}||||}||krDdSqDdS)NFrT)r$rZ __contains__lenrange)rBrZ len_valueZlen_selfiZsub_listrrrrRs  z_CallList.__contains__cCstt|Sr/)pprintZpformatrZrrrrr`sz_CallList.__repr__N)rNrQrrrrrrrrsPsrscCs|t|}t|sdS|js4|js4|jdus4|jdur8dS|}|durX||urPdS|j}q<|rh||_||_|rx||_||_dS)NFT)r7r#rrrr)parentrrnew_name_parentrrr_check_and_set_parentds* rc@seZdZddZddZdS) _MockItercCst||_dSr/)iterr))rBr)rrrr9sz_MockIter.__init__cCs t|jSr/)nextr)rrrr__next__sz_MockIter.__next__N)rNrQrr9rrrrrrsrc@seZdZeZdZddZdS)BaseNcOsdSr/rrArrrr9sz Base.__init__)rNrQrrrrr9rrrrrsrc @s`eZdZddZdKddZdd ZdLd d ZdMd d ZddZddZ dZ e ee e Z e ddZ edZedZedZedZedZddZddZe eeZdNddddd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0ZdOd2d3Z d4d5Z!d6d7Z"d8d9Z#d:d;Z$dd?Z&d@dAZ'dPdBdCZ(dDdEZ)dFdGZ*dQdIdJZ+dS)Rr cOs||f}t|tsTtj|g|Ri|j}|d|d}|durTt|rTt|f}t|j|d|j i}t t | |}|S)Nspec_setspecrO) r0AsyncMockMixin _MOCK_SIGZ bind_partialZ argumentsr_r*r1rNrO _safe_superr __new__)clsrCkwbasesZ bound_argsZspec_argnewrLrrrrs zNonCallableMock.__new__NFc Ks|dur |}|j} || d<|| d<|| d<|| d<d| d<|durJ|}d}| durZ|du} |||| | i| d<|| d <d| d <d| d <d| d <d | d<t| d<t| d<t| d<| | d<| r|jfi| tt|||||||dS)NrrrrF _mock_sealedTr _mock_wrapsrZ _mock_calledZ_mock_call_argsrZ_mock_call_countZ_mock_call_args_listZ_mock_mock_callsrt _mock_unsafe)r^_mock_add_specrsconfigure_mockrr r9)rBrrrrr _spec_state _new_name _new_parent_spec_as_instance _eat_selfZunsaferDr^rrrr9s<     zNonCallableMock.__init__cCs0t|}d|_d|_d|_d|_t|||dS)Nr)r7rrrrrT)rBr5rVZ inner_mockrrr attach_mocks zNonCallableMock.attach_mockcCs|||dSr/)rrBrrrrr mock_add_specszNonCallableMock.mock_add_specc Csd}d}g}t|D]}tt||dr||q|dur|t|s|t|trT|}nt|}t|||} | or| d}t|}|j} || d<|| d<|| d<|| d<|| d<dS)Nr _spec_class _spec_set_spec_signature _mock_methods _spec_asyncs) dirrr&appendr\r$r1r>r^) rBrrrrrrrrresr^rrrrs*    zNonCallableMock._mock_add_speccCs8|j}|jdur|jj}|tur4|j|dd}||_|S)N()rr)rrrwr_get_child_mock)rBrxrrrZ__get_return_values z"NonCallableMock.__get_return_valuecCs,|jdur||j_n||_t||dddS)Nr)rrwrr)rBrrrrZ__set_return_values  z"NonCallableMock.__set_return_valuez1The value to be returned when the mock is called.cCs|jdurt|S|jSr/)rr1rrrr __class__s zNonCallableMock.__class__rzr{r|r}rucCsN|j}|dur|jS|j}|durJt|sJt|tsJt|sJt|}||_|Sr/)rrr~callabler$rr3)rB delegatedZsfrrrZ__get_side_effect'sz!NonCallableMock.__get_side_effectcCs(t|}|j}|dur||_n||_dSr/) _try_iterrrr~)rBrrrrrZ__set_side_effect2s z!NonCallableMock.__set_side_effectrwr~cCs|dur g}t||vrdS|t|d|_d|_d|_t|_t|_t|_|r^t |_ |rhd|_ |j D](}t|tsr|turqr|j|||dqr|j }t|r||ur||dS)NFrr)idrrzr|r{rsrur}rtrrrrvaluesr$ _SpecState_deletedrvr#)rBZvisitedrwr~childrxrrrrv=s, zNonCallableMock.reset_mockcKsXt|dddD]>\}}|d}|}|}|D]}t||}q6t|||qdS)NcSs|ddS)Nr.)count)entryrrrhr!z0NonCallableMock.configure_mock..)keyr)sorteditemssplitpopr&rT)rBrDargvalrCfinalr)rrrrr[s   zNonCallableMock.configure_mockcCs|dvrt|n:|jdur<||jvs.|tvrLtd|nt|rLt||jsd|drdtd|j|}|turt|np|durd}|j durt |j |}|j |||||d}||j|<n.t |t rt|j|j|j|j|j}||j|<|S)N>rrzMock object has no attribute %r)assertZassretz1Attributes cannot start with 'assert' or 'assret')rrrrr)r;r _all_magicsrrrrr_rrr&rr$rrrrrLrr)rBrrgrrrrrqs:           zNonCallableMock.__getattr__cCs|jg}|j}|}d}|dgkr$d}|durZ|}||j|d}|jdkrRd}|j}q$tt|}|jpnd}t|dkr|ddvr|d7}||d<d|S)Nrrrr5r)rz().r)rrrrZreversedrrjoin)rBZ _name_listrZlastdotZ_firstrrr_extract_mock_names(      z"NonCallableMock._extract_mock_namecCs^|}d}|dvrd|}d}|jdurDd}|jr8d}||jj}dt|j||t|fS)Nr)r5zmock.z name=%rz spec=%rz spec_set=%rz<%s%s%s id='%s'>)rrrrNr1r)rBrZ name_stringZ spec_stringrrrrs   zNonCallableMock.__repr__cCsvtst|S|jpg}tt|}t|j}dd|j D}dd|D}dd|D}t t ||||S)NcSsg|]\}}|tur|qSr)r)rZm_nameZm_valuerrr sz+NonCallableMock.__dir__..cSsg|]}|ds|qSrrrerrrrr!cSs"g|]}|drt|r|qSr)rrrrrrrs) r object__dir__rrr1rZr^rrrset)rBextrasZ from_typeZ from_dictZfrom_child_mocksrrrrs    zNonCallableMock.__dir__csT|tvrt||SjrHjdurH|jvrH|jvrHtd|n|tvrbd|}t|n|tvrjdur|jvrtd|t |st t |t |||fdd}n(t |d|t t |||j|<n,|dkr|_dSt |||r|j|<jrFt|sFd|}td|t||S)Nz!Mock object has no attribute '%s'z.Attempting to set unsupported magic method %r.csg|Ri|Sr/rrCrrfrBrrrr!z-NonCallableMock.__setattr__..rrz Cannot set )rr __setattr__rrr^r;_unsupported_magicsrr#rTr1 _get_methodrrrrr%r)rBrrmsg mock_namerrrrs<    zNonCallableMock.__setattr__cCs|tvr2|t|jvr2tt||||jvr2dS|j|t}||jvr\tt| |n|t urlt ||tur||j|=t |j|<dSr/) rr1r^delattrrr__missingrr __delattr__rr;)rBrr)rrrrs  zNonCallableMock.__delattr__cCs|jpd}t|||Sr4)r_format_call_signaturerBrCrDrrrr_format_mock_call_signatures z+NonCallableMock._format_mock_call_signaturercCs.d}|||}|j}|j|}||||fS)Nz.expected %s not found. Expected: %s Actual: %s)rr|)rBrCrDactionmessageexpected_stringr|Z actual_stringrrr_format_mock_failure_messages   z,NonCallableMock._format_mock_failure_messagecCsj|s |jSd}|ddd}|j}|D]:}||}|dusJt|trPqfq*t|}|j}|j}q*|S)Nrrr)rreplacerrr_r$rr7)rBrrFnamesZchildrenrrrr_get_call_signature_from_name s  z-NonCallableMock._get_call_signature_from_namec Cst|tr&t|dkr&||d}n|j}|durt|dkrNd}|\}}n |\}}}z"|j|i|}t||j|jWSt y}z| dWYd}~Sd}~00n|SdS)Nrrr) r$r[rrrr@rrCrD TypeErrorwith_traceback)rB_callrFrrCrDZ bound_callrrrr _call_matcherAs   "zNonCallableMock._call_matchercCs0|jdkr,d|jpd|j|f}t|dS)Nrz9Expected '%s' to not have been called. Called %s times.%sr5r{r _calls_reprAssertionErrorrBr rrrrn\s z!NonCallableMock.assert_not_calledcCs$|jdkr d|jpd}t|dS)Nrz"Expected '%s' to have been called.r5)r{rrr rrrrmfs  zNonCallableMock.assert_calledcCs0|jdks,d|jpd|j|f}t|dS)Nrz:Expected '%s' to have been called once. Called %s times.%sr5rr rrrrons z"NonCallableMock.assert_called_oncecsjdur.}d}d||f}t|fdd}tfdd}j}||krt|trv|nd}t||dS)Nz not called.z0expected call not found. Expected: %s Actual: %scs}|Sr/rr rCrDrBrr_error_messages z:NonCallableMock.assert_called_with.._error_messageTtwo)r|rrr_Callr$ Exception)rBrCrDexpectedactualZ error_messager$causerr#rrkxs   z"NonCallableMock.assert_called_withcOs<|jdks,d|jpd|j|f}t||j|i|S)Nrz3Expected '%s' to be called once. Called %s times.%sr5)r{rrrrkrBrCrDr rrrrps z'NonCallableMock.assert_called_once_withc sfdd|D}tdd|Dd}tfddjD}|s||vr|durXd}nddd|D}t|d t|jd d d |dSt|}g}|D]0}z||Wqt y| |Yq0q|rtd j pdt ||f|dS)Ncsg|]}|qSrrrcrrrrr!z4NonCallableMock.assert_has_calls..css|]}t|tr|VqdSr/r$r(rrrr r!z3NonCallableMock.assert_has_calls..c3s|]}|VqdSr/r-r.rrrr1r!zCalls not found.z+Error processing expected calls. Errors: {}cSsg|]}t|tr|ndqSr/r0rrrrrs Expected: ZActual)prefixrz@%r does not contain all of %r in its call list, found %r insteadr5) rrsruformatrrrstriprZremover=rrr[) rBcalls any_orderr)r+Z all_callsproblem not_foundkallrrrrqsN  z NonCallableMock.assert_has_callscsjt||fdd}t|tr$|nd}fddjD}|sL|t|vrf||}td||dS)NTr%csg|]}|qSrr-r.rrrrr!z3NonCallableMock.assert_any_call..z%s call not found)rr'r$r(r} _AnyComparerrrrBrCrDr)r+r*rrrrrrs zNonCallableMock.assert_any_callcKs|d}||jdvr&tfi|St|}t|trF|tvrFt}nbt|trt|tvsh|j rn||j vrnt}qt}n4t|t st|t rt}qt|t rt }n |jd}|jrd|vrd|dnd}||}t||fi|S)Nrrrrrr)r_r^r r1r0r_async_method_magicsr_all_sync_magicsr CallableMixinr r rr]rrr;)rBrr_typeklassrVr rrrrs2       zNonCallableMock._get_child_mockCallscCs"|js dSd|dt|jdS)Nr z: r)rur)rBr3rrrrszNonCallableMock._calls_repr) NNNNNNrNFNF)F)FF)N)r)F)rC),rNrQrrr9rrrZ"_NonCallableMock__get_return_valueZ"_NonCallableMock__set_return_valueZ"_NonCallableMock__return_value_docrrwrrrzr{r|r}ruZ!_NonCallableMock__get_side_effectZ!_NonCallableMock__set_side_effectr~rvrrrrrrrrrrrrnrmrorkrprqrrrrrrrrr s^ -      '' !   -'r c@seZdZddZdS)r<cCs,|D]"}tddt||DrdSqdS)NcSsg|]\}}||kqSrr)rr)r*rrrrsz-_AnyComparer.__contains__..TF)allzip)rBitemrrrrrs z_AnyComparer.__contains__N)rNrQrrrrrrr<sr<cCsJ|dur |St|r|St|r$|Sz t|WStyD|YS0dSr/)r3rYrrr(rrrrs  rc @sReZdZddedddddddf ddZddZddZd d Zd d Zd dZ dS)r@Nrc Ks:||jd<tt|j||||||| | fi| ||_dS)Nr)r^rr@r9r~) rBrr~rwrrrrrrrrDrrrr9/s   zCallableMixin.__init__cOsdSr/rrArrrrI;szCallableMixin._mock_check_sigcOs0|j|i||j|i||j|i|Sr/)rI_increment_mock_call _mock_callrArrrr:@szCallableMixin.__call__cOs|j|i|Sr/)_execute_mock_callrArrrrIHszCallableMixin._mock_callc Osd|_|jd7_t||fdd}||_|j||jdu}|j}|j}|dk}|j td||f|j }|dur|r|j t|||f|jdu}|r|jd|}t|||f} |j | |jr|rd} nd} |jdk}|j| |}|j }qpdS)NTrr%rrr) rzr{r'r|r}rrrrrurrt) rBrCrDrZdo_method_callsZmethod_call_nameZmock_call_nameZ is_a_callrZthis_mock_callrrrrrHKs4     z"CallableMixin._increment_mock_callcOs|j}|durTt|r|n,t|s:t|}t|rH|n||i|}|turT|S|jturd|jS|jdur~|j|i|S|jSr/)r~r3rYrrrrwr)rBrCrDeffectrgrrrrJys   z CallableMixin._execute_mock_call) rNrQrrr9rIr:rIrHrJrrrrr@-s .r@c@s eZdZdS)rNrNrQrrrrrrsrcCs6z t||WSty0t|t||YS0dSr/)r&r; __import__)thingcomp import_pathrrr _dot_lookups   rQcCsB|d}|d}t|}|D]}|d|7}t|||}q |S)Nrrz.%s)rrrMrQ)target componentsrPrNrOrrr _importers   rTc@szeZdZdZgZddZddZddZdd Ze j d d Z d d Z ddZ ddZddZddZddZddZdS)_patchNc Csn|dur(|turtd|dur(td||_||_||_||_||_||_d|_||_ ||_ | |_ g|_ dS)Nz,Cannot use 'new' and 'new_callable' togetherz1Cannot use 'autospec' and 'new_callable' togetherF) rr=getterrVr new_callablercreateZ has_localrautospecrDadditional_patchers) rBrVrVrrrXrrYrWrDrrrr9s(z_patch.__init__c CsHt|j|j|j|j|j|j|j|j|j }|j |_ dd|j D|_ |S)NcSsg|] }|qSr)copy)rprrrrsz_patch.copy..) rUrVrVrrrXrrYrWrDattribute_namerZ)rBpatcherrrrr[s z _patch.copycCs2t|tr||St|r(||S||Sr/)r$r1decorate_classr'rdecorate_async_callabledecorate_callablerBr-rrrr: s     z_patch.__call__cCsNt|D]@}|tjsqt||}t|ds0q|}t||||q|SNr:)rrr TEST_PREFIXr&r%r[rT)rBrBr attr_valuer^rrrr_s    z_patch.decorate_classccsg}tf}|jD]8}||}|jdur8||q|jtur||q|t |7}||fVWdn1sx0YdSr/) contextlib ExitStack patchings enter_contextr]updaterrrr[)rBpatchedrCkeywargs extra_args exit_stackpatchingrrrrdecoration_helpers        z_patch.decoration_helpercs>tdrjStfddg_S)NrhcsD||"\}}|i|WdS1s60YdSr/rprCrlZnewargsZ newkeywargsr-rkrBrrrk4s z)_patch.decorate_callable..patchedr%rhrrrbrrsrra.s  z_patch.decorate_callablecs>tdrjStfddg_S)NrhcsJ||(\}}|i|IdHWdS1s<0YdSr/rqrrrsrrrkEs z/_patch.decorate_async_callable..patchedrtrbrrsrr`?s  z_patch.decorate_async_callablec Cs|}|j}t}d}z|j|}Wn"ttfyFt||t}Yn0d}|tvrdt|t rdd|_ |j s|turtd||f||fS)NFTz!%s does not have the attribute %r) rVrVrr^r;KeyErrorr& _builtinsr$rrX)rBrRrrflocalrrr get_originalPs  z_patch.get_originalcCs|j|j|j}}}|j|j}}|j}||_|dur@d}|durLd}|durXd}|durp|durptd|dus|dur|dvrtd| \}}|t ur|durd} |dur|}|dur|}d}n&|dur|dur|}d}n |dur|}|dus |dur.|t urtdt |t r.d} |durHt |rHt} nt} i} |dur`|} n^|dust|dur|} |dur|} t| rd| v} n t|  } t | rt} n | rt} |dur|| d<|dur|| d <t | t r t| tr |jr |j| d <| || fi| }| rt|r|} |durF|} t| s^t| s^t} | d | f|d d | |_nl|dur|t urtd |t urtdt|}|dur|}t|f||jd|}n|rtd|}||_||_t |_!zrt"|j|j||j#durti}|jt ur>|||j#<|j$D](}|j!%|}|jt urD||qD|WS|WS|j&t'(sYn0dS)NFzCan't specify spec and autospec)TNz6Can't provide explicit spec_set *and* spec or autospecTz!Can't use 'spec' with create=Truer:rrrrrzBautospec creates the mock for you. Can't specify autospec and new.z%Can't use 'autospec' with create=True)r_namez.Can't pass kwargs to a mock we aren't creating))rrrrYrDrWrVrRrrxrr$r1r*r rr\rr r0r rVrjr#rarrwboolr temp_originalis_localrfrg _exit_stackrTr]rZri__exit__sysexc_info)rBrrrrYrDrWrfrwZinheritKlass_kwargsZ this_specZ not_callableZnew_attrrmrorrrr __enter__hs                               z_patch.__enter__cGs|jr$|jtur$t|j|j|jn>t|j|j|jsbt|j|jrP|jdvrbt|j|j|j|`|`|`|j }|` |j |S)N)rOrQrR__annotations__rS) r|r{rrTrRrVr rXr%r}r~)rBrrnrrrr~sz_patch.__exit__cCs|}|j||Sr/)r_active_patchesrrBrgrrrstarts z _patch.startcCs4z|j|Wnty$YdS0|dddSr/)rr6r=r~rrrrstop s  z _patch.stop)rNrQrr]rr9r[r:r_rfcontextmanagerrprar`rxrr~rrrrrrrUs   rUc sNzdd\}Wn$ttfy8tdfYn0fdd}||fS)Nrrz.Need a valid target to patch. You supplied: %rcstSr/rTrrRrrrr!z_get_target..)rsplitrr=)rRrVrVrrr _get_targets  rc s>tturtdfdd} t| |||||||| S)Nz3 must be the actual object to be patched, not a strcsSr/rrrrrr6r!z_patch_object..)r1strrrU) rRrVrrrXrrYrWrDrVrrr _patch_object s   rc stturfdd}n fdd}|s2tdt|}|d\} } t|| | |||||i } | | _|ddD]2\} } t|| | |||||i } | | _| j| qt| S)NcstSr/rrrrrrTr!z!_patch_multiple..csSr/rrrrrrVr!z=Must supply at least one keyword argument with patch.multiplerr) r1rr=rZrrUr]rZr) rRrrXrrYrWrDrVrrVrr^Z this_patcherrrr_patch_multiple=s,      rc Ks$t|\}} t|| ||||||| Sr/)rrU) rRrrrXrrYrWrDrVrVrrrrns G  rc@sVeZdZdddZddZddZd d Zd d Zd dZddZ ddZ ddZ dS) _patch_dictrFcKs,||_t||_|j|||_d|_dSr/)in_dictdictrrjclear _original)rBrrrrDrrrr9s   z_patch_dict.__init__cs.ttrStfdd}|S)Ncs0z|i|WS0dSr/)r _unpatch_dictrfrBrr_inners z$_patch_dict.__call__.._inner)r$r1r_r)rBrrrrrr:s   z_patch_dict.__call__cCsXt|D]J}t||}|tjrt|drt|j|j|j }||}t |||q|Src) rr&rrrdr%rrrrrT)rBrBrre decoratorZ decoratedrrrr_s   z_patch_dict.decorate_classcCs||jSr/)rrrrrrrsz_patch_dict.__enter__cCs|j}t|jtrt|j|_|j}|j}z |}Wn,tybi}|D]}||||<qLYn0||_|rvt |z| |Wn(ty|D]}||||<qYn0dSr/) rr$rrrTrr[r;r _clear_dictrj)rBrrrrfrrrrrs&     z_patch_dict._patch_dictcCsP|j}|j}t|z||Wn(tyJ|D]}||||<q4Yn0dSr/)rrrrjr;)rBrrfrrrrrs z_patch_dict._unpatch_dictcGs|jdur|dSNF)rr)rBrCrrrr~*s z_patch_dict.__exit__cCs|}tj||Sr/)rrUrrrrrrr1s z_patch_dict.startcCs4ztj|Wnty$YdS0|dddSr/)rUrr6r=r~rrrrr8s  z_patch_dict.stopN)rF) rNrQrr9r:r_rrrr~rrrrrrrs   rcCs<z |Wn*ty6t|}|D] }||=q&Yn0dSr/)rr;rZ)rkeysrrrrrCs   rcCsttjD] }|q dSr/)rrUrr)rrrr_patch_stopallLsrtestzlt le gt ge eq ne getitem setitem delitem len contains iter hash str sizeof enter exit divmod rdivmod neg pos abs invert complex int float index round trunc floor ceil bool next fspath aiter zHadd sub mul matmul div floordiv mod lshift rshift and xor or pow truediv ccs|]}d|VqdS)zi%sNrrnrrrr1kr!r1ccs|]}d|VqdS)zr%sNrrrrrr1lr!>__get__ __reversed__ __format____set__ __missing__ __getstate__r__getnewargs____getinitargs__ __setstate__Z __setformat____subclasses__r __getformat____getnewargs_ex__ __delete__r __reduce_ex__csfdd}||_|S)Ncs|g|Ri|Sr/rrBrCrr,rrmethod}sz_get_method..method)rN)rr-rrr,rr {s r cCsh|] }d|qS)rr)rrrrrr s> __anext__ __aexit__ __aenter__ __aiter__>r__del__rr __prepare____instancecheck__r9__subclasscheck__cCs t|Sr/)r__hash__rrrrrr!rcCs t|Sr/)r__str__rrrrrr!cCs t|Sr/)r __sizeof__rrrrrr!cCs"t|jd|dt|S)N/)r1rNrrrrrrrr!)rrr __fspath__ry?g?) __lt____gt____le____ge____int__r__len__r~ __complex__ __float____bool__ __index__rcsfdd}|S)Ncs$jj}|tur|S|ur dStSr8)__eq__rrNotImplemented)otherret_valrrrrs z_get_eq..__eq__r)rBrrrr_get_eqs rcsfdd}|S)Ncs jjturtS|urdStSr)__ne__rrr)rrrrrs  z_get_ne..__ne__r)rBrrrr_get_nes rcsfdd}|S)Ncs jj}|turtgSt|Sr/)__iter__rrrrrrrrsz_get_iter..__iter__r)rBrrrr _get_iters rcsfdd}|S)Ncs(jj}|turttgStt|Sr/)rrr_AsyncIteratorrrrrrrs z"_get_async_iter..__aiter__r)rBrrrr_get_async_iters r)rrrrcCsbt|t}|tur||_dSt|}|durB||}||_dSt|}|dur^|||_dSr/)_return_valuesr_rrw_calculate_return_value_side_effect_methodsr~)r5rrfixedZreturn_calculatorrwZ side_effectorrrr_set_return_values   rc@seZdZddZddZdS) MagicMixincOs*|tt|j|i||dSr/)_mock_set_magicsrrr9rrrrr9szMagicMixin.__init__cCsttB}|}t|dddurX||j}t}||}|D]}|t|jvr:t||q:|tt|j}t|}|D]}t ||t ||qvdS)Nr) _magicsr>r& intersectionrrr1r^r rT MagicProxy)rBZ orig_magicsZ these_magicsZ remove_magicsrrArrrrs  zMagicMixin._mock_set_magicsN)rNrQrr9rrrrrrsrc@seZdZdddZdS)r FcCs||||dSr/rrrrrrrs z"NonCallableMagicMock.mock_add_specN)FrNrQrrrrrrr sr c@seZdZddZdS)AsyncMagicMixincOs*|tt|j|i||dSr/)rrrr9rrrrr9szAsyncMagicMixin.__init__NrNrQrr9rrrrrsrc@seZdZdddZdS)rFcCs||||dSr/rrrrrr,s zMagicMock.mock_add_specN)Frrrrrr!s rc@s&eZdZddZddZdddZdS) rcCs||_||_dSr/rr)rBrrrrrr98szMagicProxy.__init__cCs8|j}|j}|j|||d}t|||t||||S)N)rrr)rrrrTr)rBrrmrrr create_mock<s  zMagicProxy.create_mockNcCs|Sr/)r)rBr)rArrrrEszMagicProxy.__get__)N)rNrQrr9rrrrrrr7s rcseZdZedZedZedZfddZddZdd Z d d Z d d Z ddZ ddZ dddZddZfddZZS)rrrrcs`tj|i|tjj|jd<d|jd<d|jd<t|jd<ttd}t j |_ ||jd<dS)NrrZ_mock_await_countZ_mock_await_argsZ_mock_await_args_listrr+) superr9rrrr^rsr rr'Z CO_COROUTINEco_flags)rBrCrD code_mockrrrr9Ns    zAsyncMockMixin.__init__cst||fdd}|jd7_||_|j||j}|durt|rL|nft|sz t|}Wnt yvt Yn0t|r|n,t |r||i|IdH}n||i|}|t ur|S|j t ur|jS|jdur t |jr|j|i|IdHS|j|i|S|jS)NTr%r)r'rrrrr~r3rYr StopIterationStopAsyncIterationrrrrwr)rBrCrDrrKrgrrrrJ^s6       z!AsyncMockMixin._execute_mock_callcCs(|jdkr$d|jpdd}t|dS)Nr Expected r5z to have been awaited.rrrr rrrrs zAsyncMockMixin.assert_awaitedcCs0|jdks,d|jpdd|jd}t|dSNrrr5z$ to have been awaited once. Awaited  times.rr rrrrs  z"AsyncMockMixin.assert_awaited_oncecsjdur&}td|dfdd}tfdd}j}||kr~t|trn|nd}t||dS)NzExpected await: z Not awaitedcsjdd}|S)Nawait)rr!r"r#rrr$sz:AsyncMockMixin.assert_awaited_with.._error_messageTr%)rrrrr'r$r()rBrCrDr)r$r*r+rr#rrs   z"AsyncMockMixin.assert_awaited_withcOs<|jdks,d|jpdd|jd}t||j|i|Sr)rrrrr,rrrrs  z'AsyncMockMixin.assert_awaited_once_withcsjt||fdd}t|tr$|nd}fddjD}|sL|t|vrf||}td||dS)NTr%csg|]}|qSrr-r.rrrrr!z3AsyncMockMixin.assert_any_await..z%s await not found)rr'r$r(rr<rrr=rrrrs zAsyncMockMixin.assert_any_awaitFc sfdd|D}tdd|Dd}tfddjD}|s||vr|durXd}nddd|D}t|d t|d j|dSt|}g}|D]0}z||Wqty||Yq0q|rtd t |f|dS) Ncsg|]}|qSrr-r.rrrrr!z4AsyncMockMixin.assert_has_awaits..css|]}t|tr|VqdSr/r0rrrrr1r!z3AsyncMockMixin.assert_has_awaits..c3s|]}|VqdSr/r-r.rrrr1r!zAwaits not found.z,Error processing expected awaits. Errors: {}cSsg|]}t|tr|ndqSr/r0rrrrrsr2z Actual: z%r not all found in await list) rrsrr4rrZr6r=rr[) rBr7r8r)r+Z all_awaitsr9r:r;rrrrsF   z AsyncMockMixin.assert_has_awaitscCs0|jdkr,d|jpdd|jd}t|dS)Nrrr5z# to not have been awaited. Awaited rrr rrrrs  z!AsyncMockMixin.assert_not_awaitedcs*tj|i|d|_d|_t|_dSNr)rrvrrrsrrArrrrvszAsyncMockMixin.reset_mock)F)rNrQrrrrrr9rJrrrrrrrrv __classcell__rrrrrIs (   , rc@s eZdZdS)r NrLrrrrr sr c@s$eZdZddZddZddZdS)_ANYcCsdSr8rrBrrrrr. sz _ANY.__eq__cCsdSrrrrrrr1 sz _ANY.__ne__cCsdS)Nzrrrrrr4 sz _ANY.__repr__N)rNrQrrrrrrrrr+ srcCs`d|}d}ddd|D}ddd|D}|r@|}|rX|rP|d7}||7}||S)Nz%s(%%s)rz, cSsg|] }t|qSr)repr)rrrrrr> r!z*_format_call_signature..cSsg|]\}}d||fqS)z%s=%rr)rrrrrrr? s)rr)rrCrDrZformatted_args args_stringZ kwargs_stringrrrr; s rc@sveZdZdddZddd Zd d ZejZd d ZddZ ddZ ddZ e ddZ e ddZddZddZdS)r'rrNFTc Csd}i}t|}|dkr$|\}}}nr|dkrd|\} } t| trX| }t| trR| }qb| }q| | }}n2|dkr|\}t|tr|}nt|tr|}n|}|rt|||fSt||||fS)Nrrr)rr$rr[r) rrrrr& from_kallrCrD_lenfirstsecondrrrr` s.      z _Call.__new__cCs||_||_||_dSr/)rr_mock_from_kall)rBrrrr&rrrrr9 sz_Call.__init__c Cs\z t|}Wnty"tYS0d}t|dkr>|\}}n |\}}}t|ddrpt|ddrp|j|jkrpdSd}|dkrdi}}n|dkr|\}}}n|dkr|\} t| tr| }i}n"t| tr| }di}}nd}| }nV|dkr4|\} } t| tr(| }t| tr| i}}n d| }}n | | }}ndS|rL||krLdS||f||fkS) NrrrFrrrr)rrrr&rr$r[r) rBrZ len_otherZ self_nameZ self_argsZ self_kwargsZ other_nameZ other_argsZ other_kwargsrrrrrrr sN                  z _Call.__eq__cOs<|jdurtd||fddS|jd}t|j||f||dS)Nrrrrrr'rrrrr: s  z_Call.__call__cCs2|jdurt|ddSd|j|f}t||ddS)NF)rrz%s.%s)rrrr)rBrrrrrr s  z_Call.__getattr__cCs|tjvrtt||Sr/)r[r^r;__getattribute__)rBrrrrr s z_Call.__getattribute__cCs(t|dkr|\}}n |\}}}||fS)Nr)rrrrr_get_call_arguments s   z_Call._get_call_argumentscCs |dSrrrrrrrC sz _Call.argscCs |dS)NrrrrrrrD sz _Call.kwargscCs||js&|jpd}|dr"d|}|St|dkr@d}|\}}n0|\}}}|sTd}n|dshd|}nd|}t|||S)Nrrzcall%srzcall.%s)rrrrr)rBrrCrDrrrr s       z_Call.__repr__cCs4g}|}|dur(|jr |||j}qtt|Sr/)rrrrsr)rBZvalsrNrrr call_list s z_Call.call_list)rrNFT)rNNFT)rNrQrrr9rrrr:rrrrrCrDrrrrrrr'M s$  5  r')rc Ksht|rt|}t|t}t|}d|i}|r8d|i}n |durDi}|rT|rTd|d<||t} t|rri}n8|r|rtdt } n"t |st } n|r|rt |st } | d|}|} |durd} | f||| |d|} t|trt| |} |rt| nt|| |||dur,|s,| |j|<|rV|sVd |vrVt||dd | d | _t|D]} t| rrq^zt|| } WntyYq^Yn0d| i}|rd| i}t| tst| || | |}|| j| <nn| }t|tr| j}t|| |}||d <t| rt }nt}|f|| | |d |}|| j| <t| ||dt|tr^t| | |q^| S)NrrTrzJInstance can not be True when create_autospec is mocking an async functionrr)rrrrrwr)rLryrr)rrrr)rK)r\r1r$r.rjrr'Zisdatadescriptor RuntimeErrorr rYr rarr6rjrrMrrrwrrr&r;rr5 _must_skiprrT)rrrLrryrDis_typeZ is_async_funcrrrr5rrfrrrKZ child_klassrrrr s                     rcCsxt|ts$|t|divrdS|j}|jD]H}|j|t}|turFq*t|tt frZdSt|t rl|SdSq*|S)Nr^F) r$r1r&rr]r^r_rrWrXr6)rrrrBrgrrrr s   rc@seZdZdddZdS)rFNcCs(||_||_||_||_||_||_dSr/)ridsrrrLr)rBrrrrrrLrrrr9 s z_SpecState.__init__)FNNNFrrrrrr srcCs"t|trt|St|SdSr/)r$bytesioBytesIOStringIO) read_datarrr _to_stream s  r rcs&t}|dgfdd}fdd}fddfddfd d }tdurd dl}ttt|jtt|ja|durt d t d }t tdj _ dj _ dj_ dj_ dj_ |j_d<dj_|j_j_|j_fdd}||_|_ |S)Ncs(jjdurjjSdj|i|Sr) readlinesrwrb_statehandlerr_readlines_side_effect s z)mock_open.._readlines_side_effectcs(jjdurjjSdj|i|Sr)readrwrbrrr_read_side_effect s z$mock_open.._read_side_effectc?s(EdHdj|i|Vq dSr)readlinerb)_iter_side_effectrrr_readline_side_effect s z(mock_open.._readline_side_effectc3s0jjdurjjVq dD] }|Vq dSr)rrw)linerrrr s   z$mock_open.._iter_side_effectcs jjdurjjStdSr)rrwrrrrr_next_side_effect s z$mock_open.._next_side_effectropen)rr)rrcs6td<jjdkr2d<dj_tS)Nrr)r rr~rrb)rrrr rr reset_data s    zmock_open..reset_data)r  file_spec_iorZrr TextIOWrapperunionr rrrrwwriterrrr~rr)r5r Z _read_datarrrrrr)rrrrr rr s8 "    r c@s&eZdZddZdddZddZdS) rcKstfi|Sr/)r)rBrDrrrr szPropertyMock._get_child_mockNcCs|Sr/r)rBr)Zobj_typerrrr szPropertyMock.__get__cCs ||dSr/r)rBr)rrrrr" szPropertyMock.__set__)N)rNrQrrrrrrrrr s  rc Cs\d|_t|D]H}zt||}Wnty6YqYn0t|tsDq|j|urt|qdSr8)rrr&r;r$r rr)r5rrrrrr& s      rc@seZdZddZddZdS)rcCs&||_ttd}tj|_||jd<dS)Nrr+)iteratorr rr'ZCO_ITERABLE_COROUTINErr^)rBr!rrrrr9@ s z_AsyncIterator.__init__cs(z t|jWStyYn0tdSr/)rr!rrrrrrrF s   z_AsyncIterator.__anext__N)rNrQrr9rrrrrr< sr)F)F)NFNNN)FFNN)Nr)}__all__rrfr r'rrbuiltinsrtypesrrrZ unittest.utilr functoolsrrrrvr rrr*r.r#r3r7r>rMrHrYr\rarjrerrrrrrrMISSINGr ZDELETEDrrrrZrsrrrr r<r9rr<rr@rrQrTrUrrrrrrrrZmultipleZstopallrdZ magic_methodsZnumericsrrZinplacerightZ _non_defaultsr rr>Z_sync_async_magicsZ _async_magicsr?rrrrrrrrrrrrr rrrrr rrrr[r'rrrrr1rr6rr r rrrrrrrs0       1  h4 <   2 N        8+ :   N