a XC?h@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).0namer2/opt/alt/python39/lib64/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_side_effectr~_mock_new_namerw_mock_new_parent_mock_return_value _mock_name _mock_parentcCs8t|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)rBZextrasZ 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)rrrr s  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{rrrrrrrmfs  zNonCallableMock.assert_calledcCs0|jdks,d|jpd|j|f}t|dS)Nrz:Expected '%s' to have been called once. Called %s times.%sr5rrrrrrons 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-rrrr0r!zCalls not found.z+Error processing expected calls. Errors: {}cSsg|]}t|tr|ndqSr/r/rrrrrs 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|S|jrZd|vrBd|dnd}||}t|t|}t|trz|t vrzt}nbt|t r|t vs|j r||j vrt}qt}n4t|t st|trt}qt|trt}n |jd}|fi|S)Nrrrrrr)r_r^r rrr;r1r0r_async_method_magicsr_all_sync_magicsr CallableMixinr r rr])rBrrrVr _typeklassrrrrs2       zNonCallableMock._get_child_mockCallscCs"|js dSd|dt|jdS)Nr z: r)rur)rBr2rrrrszNonCallableMock._calls_repr) NNNNNNrNFNF)F)FF)N)r)F)rB),rNrQrrr9rrrZ"_NonCallableMock__get_return_valueZ"_NonCallableMock__set_return_valueZ"_NonCallableMock__return_value_docrrwrrrzr{r|r}ruZ!_NonCallableMock__get_side_effectZ!_NonCallableMock__set_side_effectr~rvrrrrrrr rrrrrnrmrorkrprqrrrrrrrrr 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_callrArrrrHGszCallableMixin._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_callrrrrrGJs4     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)rBrCrDeffectrgrrrrIxs   z CallableMixin._execute_mock_call) rNrQrrr9rIr:rHrGrIrrrrr?,s .r?c@s eZdZdS)rNrNrQrrrrrrsrcCs6z t||WSty0t|t||YS0dSr/)r&r; __import__)thingcomp import_pathrrr _dot_lookups   rPcCsB|d}|d}t|}|D]}|d|7}t|||}q |S)Nrrz.%s)rrrLrP)targetZ componentsrOrMrNrrr _importers   rRc@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) rBrTrVrrrVrrWrUrDrrrr9s(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..) rSrTrVrrrVrrWrUrDattribute_namerX)rBpatcherrrrrYs 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%rYrT)rBrAr 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)NrfcsD||"\}}|i|WdS1s60YdSr/rnrCrjZnewargsZ newkeywargsr-rirBrrri3s z)_patch.decorate_callable..patchedr%rfrrr`rrqrr_-s  z_patch.decorate_callablecs>tdrjStfddg_S)NrfcsJ||(\}}|i|IdHWdS1s<0YdSr/rorprqrrriDs z/_patch.decorate_async_callable..patchedrrr`rrqrr^>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) rTrVrr^r;KeyErrorr& _builtinsr$rrV)rBrQrrflocalrrr get_originalOs  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))rrrrWrDrUrTrQrrvrr$r1r*r rr\rr r0r rVrhr#rarrwboolr temp_originalis_localrdre _exit_stackrTr[rXrg__exit__sysexc_info)rBrrrrWrDrUrfruZinheritKlass_kwargsZ this_specZ not_callableZnew_attrrkrmrrrr __enter__gs                               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) rzryrrTrQrVr rVr%r{r|)rBr~rlrrrr|sz_patch.__exit__cCs|}|j||Sr/)r_active_patchesrrBrgrrrstarts z _patch.startcCs4z|j|Wnty$YdS0|dddSr/)rr5r=r|rrrrstop s  z _patch.stop)rNrQrr[rr9rYr:r]rdcontextmanagerrnr_r^rvrr|rrrrrrrSs   rSc sPzdd\}Wn&tttfy:tdYn0fdd}||fS)Nrrz,Need a valid target to patch. You supplied: cstSr/rRrrQrrrr!z_get_target..)rsplitrr=r;)rQrVrTrrr _get_targets  rc s>tturtdfdd} t| |||||||| S)Nz3 must be the actual object to be patched, not a strcsSr/rrrrrr5r!z_patch_object..)r1strrrS) rQrVrrrVrrWrUrDrTrrr _patch_objects   rc stturfdd}n fdd}|s2tdt|}|d\} } t|| | |||||i } | | _|ddD]2\} } t|| | |||||i } | | _| j| qt| S)NcstSr/rrrrrrSr!z!_patch_multiple..csSr/rrrrrrUr!z=Must supply at least one keyword argument with patch.multiplerr) r1rr=rZrrSr[rXr) rQrrVrrWrUrDrTrrVrr\Z this_patcherrrr_patch_multiple<s,      rc Ks$t|\}} t|| ||||||| Sr/)rrS) rQrrrVrrWrUrDrTrVrrrrms G  rc@sVeZdZdddZddZddZd d Zd d Zd dZddZ ddZ ddZ dS) _patch_dictrFcKs,||_t||_|j|||_d|_dSr/)in_dictdictrrhclear _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|Sra) rr&rrrbr%rrrrrT)rBrArrc 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$rrrRrrYr;r _clear_dictrh)rBrrrrfrrrrrs&     z_patch_dict._patch_dictcCsP|j}|j}t|z||Wn(tyJ|D]}||||<q4Yn0dSr/)rrrrhr;)rBrrfrrrrrs z_patch_dict._unpatch_dictcGs|jdur|dSNF)rr)rBrCrrrr|)s z_patch_dict.__exit__cCs|}tj||Sr/)rrSrrrrrrr0s z_patch_dict.startcCs4ztj|Wnty$YdS0|dddSr/)rSrr5r=r|rrrrr7s  z_patch_dict.stopN)rF) rNrQrr9r:r]rrrr|rrrrrrrs   rcCs<z |Wn*ty6t|}|D] }||=q&Yn0dSr/)rr;rZ)rkeysrrrrrBs   rcCsttjD] }|q dSr/)rrSrr)rrrr_patch_stopallKsrtestzlt 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%sNrrnrrrr0jr!r0ccs|]}d|VqdS)zr%sNrrrrrr0kr!>__getnewargs__ __setstate__r __delete__ __reversed__r__getnewargs_ex____subclasses____set____get__ __missing__ __setformat__ __getformat__ __format__Z__getinitargs__r __getstate__ __reduce_ex__csfdd}||_|S)Ncs|g|Ri|Sr/rrBrCrr,rrmethod|sz_get_method..method)rN)rr-rrr,rrzs rcCsh|] }d|qS)rr)rrrrrr s> __aexit__ __anext__ __aenter__ __aiter__>r9r__del____instancecheck____subclasscheck__ __prepare__rrcCs 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~)r5rrZfixedZreturn_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_magicsrr@rrrrs  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)rBrrrrrr97szMagicProxy.__init__cCs8|j}|j}|j|||d}t|||t||||S)N)rrr)rrrrTr)rBrrmrrr create_mock;s  zMagicProxy.create_mockNcCs|Sr/)r)rBr)r@rrrrDszMagicProxy.__get__)N)rNrQrr9rrrrrrr6s 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_mockrrrr9Ms    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)rBrCrDrrJrgrrrrI]s6       z!AsyncMockMixin._execute_mock_callcCs(|jdkr$d|jpdd}t|dS)Nr Expected r5z to have been awaited.rrrrrrrrs zAsyncMockMixin.assert_awaitedcCs0|jdks,d|jpdd|jd}t|dSNrrr5z$ to have been awaited once. Awaited  times.rrrrrrs  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/r/rrrrr0r!z3AsyncMockMixin.assert_has_awaits..c3s|]}|VqdSr/r,r-rrrr0r!zAwaits not found.z,Error processing expected awaits. Errors: {}cSsg|]}t|tr|ndqSr/r/rrrrrsr1z Actual: z%r not all found in await list) rrsrr3rrZr5r=rr[) rBr6r7r(r*Z all_awaitsr8r9r:rrrrsF   z AsyncMockMixin.assert_has_awaitscCs0|jdkr,d|jpdd|jd}t|dS)Nrrr5z# to not have been awaited. Awaited rrrrrrrs  z!AsyncMockMixin.assert_not_awaitedcs*tj|i|d|_d|_t|_dSNr)rrvrrrsrrArrrrvszAsyncMockMixin.reset_mock)F)rNrQrrrrrr9rIrrrrrrrrv __classcell__rrrrrHs (   , rc@s eZdZdS)r NrKrrrrr sr c@s$eZdZddZddZddZdS)_ANYcCsdSr8rrBrrrrr- sz _ANY.__eq__cCsdSrrrrrrr0 sz _ANY.__ne__cCsdS)Nzrrrrrr3 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_argsZ 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)rBZvalsrMrrr call_list s z_Call.call_list)rrNFT)rNNFT)rNrQrrr9rrrr:rrrrrCrDrrrrrrr&L 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)rLrwrr)rrrr)rK)r\r1r$r.rhrr'Zisdatadescriptor RuntimeErrorr rYr rarr6rjrrMrrrwrrr&r;rr5 _must_skiprrT)rrrLrrwrDis_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)rrrrArgrrrr 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)readrwrbr rr_read_side_effect s z$mock_open.._read_side_effectc?s(EdHdj|i|Vq dSr)readlinerb)_iter_side_effectr rr_readline_side_effect s z(mock_open.._readline_side_effectc3s0jjdurjjVq dD] }|Vq dSr)rrw)liner rrr s   z$mock_open.._iter_side_effectcs jjdurjjStdSr)rrwrrr rr_next_side_effect s z$mock_open.._next_side_effectropen)rr)rrcs6td<jjdkr2d<dj_tS)Nrr)r rr~rrb)rr r rrr reset_data s    zmock_open..reset_data)r  file_spec_iorZrr TextIOWrapperunionrrrrrwwriterrr r~rr)r5rZ _read_datarrrrrr)rrr r rrr 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 Cspd|_t|D]\}zt||}Wnty6YqYn0t|tsDqt|j|trXq|j |urt |qdSr8) rrr&r;r$r rr_rrr)r5rrrrrr% s      rc@seZdZddZddZdS)rcCs&||_ttd}tj|_||jd<dS)Nrr+)iteratorr rr'ZCO_ITERABLE_COROUTINErr^)rBrrrrrr9A s z_AsyncIterator.__init__cs(z t|jWStyYn0tdSr/)rrrrrrrrrG s   z_AsyncIterator.__anext__N)rNrQrr9rrrrrr= sr)F)F)NFNNN)FFNN)Nr)}__all__rrdrr'rr}builtinsrtypesrrrZ unittest.utilr functoolsrrrrtr rrr*r.r#r3r7r>rMrHrYr\rarjrerrrrrrrMISSINGr ZDELETEDrrrrZrsrrrr r<r9rr;rr?rrPrRrSrrrrrrrrZmultipleZstopallrbZ magic_methodsZnumericsrrZinplacerightZ _non_defaultsrrr=Z_sync_async_magicsZ _async_magicsr>rrrrrrrrrrrrr rrrrr rrrr[r&rrrrr1rr6rr r rrrrrrrs0       1  h4 <   2 N        8+ :   N