a DOg@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/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_new_parent_mock_new_namer~rw_mock_side_effect _mock_parent _mock_name_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_listrlastdotZ_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{rr r!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|rr r_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{rrr rkrBrCrDr 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/rrrr2r!zCalls not found.z+Error processing expected calls. Errors: {}cSsg|]}t|tr|ndqSr/r1rrrrrs Expected: ZActual)prefixrz@%r does not contain all of %r in its call list, found %r insteadr5) rrsruformatr rrstriprZremover=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} _AnyComparerrr rBrCrDr*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)rBr4rrrrszNonCallableMock._calls_repr) NNNNNNrNFNF)F)FF)N)r)F)rD),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)rANrc Ks:||jd<tt|j||||||| | fi| ||_dS)Nr)r^rrAr9r~) 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_callrArrrrJGszCallableMixin._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_callrrrrrIJs4     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)rBrCrDeffectrgrrrrKxs   z CallableMixin._execute_mock_call) rNrQrrr9rIr:rJrIrKrrrrrA,s .rAc@s eZdZdS)rNrNrQrrrrrrsrcCs6z t||WSty0t|t||YS0dSr/)r&r; __import__)thingcomp import_pathrrr _dot_lookups   rRcCsB|d}|d}t|}|D]}|d|7}t|||}q |S)Nrrz.%s)rrrNrR)target componentsrQrOrPrrr _importers   rUc@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) rBrWrVrrrYrrZrXrDrrrr9s(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..) rVrWrVrrrYrrZrXrDattribute_namer[)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)rBrCr 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)NricsD||"\}}|i|WdS1s60YdSr/rqrCrmZnewargsZ newkeywargsr-rlrBrrrl3s z)_patch.decorate_callable..patchedr%rirrrcrrtrrb-s  z_patch.decorate_callablecs>tdrjStfddg_S)NricsJ||(\}}|i|IdHWdS1s<0YdSr/rrrsrtrrrlDs z/_patch.decorate_async_callable..patchedrurcrrtrra>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) rWrVrr^r;KeyErrorr& _builtinsr$rrY)rBrSrrflocalrrr 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))rrrrZrDrXrWrSrryrr$r1r*r rr\rr r0r rVrkr#rarrwboolr temp_originalis_localrgrh _exit_stackrTr^r[rj__exit__sysexc_info)rBrrrrZrDrXrfrxZinheritKlass_kwargsZ this_specZ not_callableZnew_attrrnrprrrr __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) r}r|rrTrSrVr rYr%r~r)rBrrorrrrsz_patch.__exit__cCs|}|j||Sr/)r_active_patchesrrBrgrrrstarts z _patch.startcCs4z|j|Wnty$YdS0|dddSr/)rr7r=rrrrrstop s  z _patch.stop)rNrQrr^rr9r\r:r`rgcontextmanagerrqrbraryrrrrrrrrrVs   rVc sPzdd\}Wn&tttfy:tdYn0fdd}||fS)Nrrz,Need a valid target to patch. You supplied: cstSr/rUrrSrrrr!z_get_target..)rsplitrr=r;)rSrVrWrrr _get_targets  rc s>tturtdfdd} t| |||||||| S)Nz3 must be the actual object to be patched, not a strcsSr/rrrrrr5r!z_patch_object..)r1strrrV) rSrVrrrYrrZrXrDrWrrr _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=rZrrVr^r[r) rSrrYrrZrXrDrWrrVrr_Z this_patcherrrr_patch_multiple<s,      rc Ks$t|\}} t|| ||||||| Sr/)rrV) rSrrrYrrZrXrDrWrVrrrrms G  rc@sVeZdZdddZddZddZd d Zd d Zd dZddZ ddZ ddZ dS) _patch_dictrFcKs,||_t||_|j|||_d|_dSr/)in_dictdictrrkclear _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|Srd) rr&rrrer%rrrrrT)rBrCrrf 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$rrrUrr\r;r _clear_dictrk)rBrrrrfrrrrrs&     z_patch_dict._patch_dictcCsP|j}|j}t|z||Wn(tyJ|D]}||||<q4Yn0dSr/)rrrrkr;)rBrrfrrrrrs z_patch_dict._unpatch_dictcGs|jdur|dSNF)rr)rBrCrrrr)s z_patch_dict.__exit__cCs|}tj||Sr/)rrVrrrrrrr0s z_patch_dict.startcCs4ztj|Wnty$YdS0|dddSr/)rVrr7r=rrrrrr7s  z_patch_dict.stopN)rF) rNrQrr9r:r`rrrrrrrrrrrs   rcCs<z |Wn*ty6t|}|D] }||=q&Yn0dSr/)rr;rZ)rkeysrrrrrBs   rcCsttjD] }|q dSr/)rrVrr)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%sNrrnrrrr2jr!r2ccs|]}d|VqdS)zr%sNrrrrrr2kr!> __getformat__r__getnewargs_ex__ __getstate____get__ __reversed__r __setstate__ __delete__ __reduce_ex____getnewargs__ __setformat__r__set__ __format____getinitargs____subclasses__ __missing__csfdd}||_|S)Ncs|g|Ri|Sr/rrBrCrr,rrmethod|sz_get_method..method)rN)rr-rrr,rr zs r cCsh|] }d|qS)rr)rrrrrr s> __aexit__ __aenter__ __anext__ __aiter__>__instancecheck__r__del__rr9r__subclasscheck__ __prepare__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_magicsrrBrrrrs  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)rBrrrrDszMagicProxy.__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)rBrCrDrrLrgrrrrK]s6       z!AsyncMockMixin._execute_mock_callcCs(|jdkr$d|jpdd}t|dS)Nr Expected r5z to have been awaited.rrr r!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&)rrr rr(r$r))rBrCrDr*r%r+r,rr$rrs   z"AsyncMockMixin.assert_awaited_withcOs<|jdks,d|jpdd|jd}t||j|i|Sr)rrr rr-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=rr r>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/r1rrrrr2r!z3AsyncMockMixin.assert_has_awaits..c3s|]}|VqdSr/r.r/rrrr2r!zAwaits not found.z,Error processing expected awaits. Errors: {}cSsg|]}t|tr|ndqSr/r1rrrrrsr3z Actual: z%r not all found in await list) rrsrr5r rZr7r=rr[) rBr8r9r*r,Z all_awaitsr:r;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)rNrQrrrrrr9rKrrrrrrrrv __classcell__rrrrrHs (   , rc@s eZdZdS)r NrMrrrrr 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_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)rBZvalsrOrrr 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)rLrzrr)rrrr)rK)r\r1r$r.rkrr'Zisdatadescriptor RuntimeErrorr rYr rarr6rjrrMrrrwrrr&r;rr5 _must_skiprrT)rrrLrrzrDis_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)rrrrCrgrrrr s   rc@seZdZdddZdS)rFNcCs(||_||_||_||_||_||_dSr/)ridsrrrLr)rBrrrrr rLrrrr9 s z_SpecState.__init__)FNNNFrrrrrr srcCs"t|trt|St|SdSr/)r$bytesioBytesIOStringIO) read_datarrr _to_stream s  rrcs&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)rrr~rrb)rrrrrr reset_data s    zmock_open..reset_data)r file_spec_iorZrr TextIOWrapperunionr rrrrwwriterrrr~rr)r5rZ _read_datarrrrrr)rrrrrrr 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^)rBr#rrrrr9A s z_AsyncIterator.__init__cs(z t|jWStyYn0tdSr/)rr#rrrrrrrG s   z_AsyncIterator.__anext__N)rNrQrr9rrrrrr= sr)F)F)NFNNN)FFNN)Nr)}__all__rrgr r'rrbuiltinsrtypesrrrZ unittest.utilr functoolsrrrrwr rrr*r.r#r3r7r>rMrHrYr\rarjrerrrrrrrMISSINGrZDELETEDrrrrZrsrrrr r<r9rr=rrArrRrUrVrrrrrrrrZmultipleZstopallreZ magic_methodsZnumericsrrZinplacerightZ _non_defaultsr rr?Z_sync_async_magicsZ _async_magicsr@rr rrrrrrrrrrr rrrrr rrrr[r(rrrrr1rr6rrr rrrrrrrs0       1  h4 <   2 N        8+ :   N