U e5d@sdZdZddlZddlZddlZddlZddlZddlZddlZddl 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.d-d.d/d0d1d2d3d4hZ/d5d6Z0Gd7d8d8e1Z2d9d:Z3Gd;d<dd>e&Z5Gd?d@d@e5Z6dAdBZ7GdCdDdDe5Z8GdEdFdFe8e6Z9dGdHZ:dIdJZ;GdKdLdLe&ZddQdRZ?e*dddddfdSdTZ@GdUdVdVe&ZAdWdXZBdYdZZCe>e@_&eAe@_De?e@_EeCe@_Fd[e@_Gd\ZHd]ZId^Jd_d`eIKDZLd^Jdad`eIKDZMdbdcdddedfdgdhdidjdkdldmdndodpdqdrdshZNdtduZOdvdd^JeHeIeLeMgKDZPdwdxdyhZQdzhZReQeRBZSePeNBZTeTeSBZUd{d|d}d~ddddhZVdddddddddZWeXeXeXeXddddddd ddd ZYddZZddZ[ddZ\ddZ]eZe[e\e]dZ^ddZ_Gddde5Z`Gddde`e6ZaGddde`ZbGddde`e9ZcGddde5ZdGddde5ZeGdddeeebe9ZfGddde&ZgegZhddZiGdddejZkekddZldddZmddZnGddde&ZoepemepehjqfZrdasddZtdddZuGddde9ZvddZwGdddZxdS))Mock MagicMockpatchsentinelDEFAULTANYcallcreate_autospec AsyncMock FILTER_DIRNonCallableMockNonCallableMagicMock mock_open PropertyMocksealz1.0N)CodeType ModuleType MethodType) safe_repr)wrapspartialcCsh|]}|ds|qS_ startswith).0namer%/usr/lib64/python3.8/unittest/mock.py (s rTcCs>t|rt|tsdSt|dr*t|d}t|pFcsNt|||dkrdS\}fdd}t|||t|_t|_dS)Ncsj||dSr/bindselfargskwargssigrrchecksigwsz"_check_signature..checksig)r>_copy_func_detailsr1_mock_check_sig __signature__)r-r5 skipfirstinstancerGrrEr_check_signaturers    rMc Cs:dD]0}zt||t||Wqtk r2YqXqdS)N)__name____doc____text_signature__ __module__ __defaults____kwdefaults__)setattrr$r;)r-funcopy attributerrrrH~s rHcCs@t|trdSt|tttfr(t|jSt|dddk r.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)Ncs j||Sr/)assert_called_withrbr5rrrksz'_setup_func..assert_called_withcs j||Sr/) assert_calledrbrlrrrmsz"_setup_func..assert_calledcs j||Sr/)assert_not_calledrbrlrrrnsz&_setup_func..assert_not_calledcs j||Sr/)assert_called_oncerbrlrrrosz'_setup_func..assert_called_oncecs j||Sr/)assert_called_once_withrbrlrrrpsz,_setup_func..assert_called_once_withcs j||Sr/)assert_has_callsrbrlrrrqsz%_setup_func..assert_has_callscs j||Sr/)assert_any_callrbrlrrrrsz$_setup_func..assert_any_callcs:t_t_j}t|r6|k r6|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|||Sr/)r$r5)attrrCrDrlrrwrappersz"_setup_async_mock..wrapper)assert_awaitedassert_awaited_onceassert_awaited_withassert_awaited_once_withassert_any_awaitassert_has_awaitsassert_not_awaited) r% 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!srrw_mock_return_valuer~_mock_side_effect _mock_parent_mock_new_parent _mock_name_mock_new_namecCs8t|d|}||fdd}||fdd}t||S)NZ_mock_cSs"|j}|dkrt||St||Sr/)rr$)rBr _the_namerFrrr_getAs z"_delegating_property.._getcSs*|j}|dkr||j|<n t|||dSr/)rr^rT)rBvaluerrrFrrr_setFs 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_listrrrrSs  z_CallList.__contains__cCstt|Sr/)pprintZpformatrZrrrrrasz_CallList.__repr__N)rNrQrrrrrrrrsQsrscCs|t|}t|sdS|js4|js4|jdk s4|jdk r8dS|}|dk rX||krPdS|j}q<|rh||_||_|rx||_||_dS)NFT)r7r!rrrr)parentrrnew_name_parentrrr_check_and_set_parentes* 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 c Os|f}t|ts^ttj}|j|f||j}dd|D}|r^t ||dr^t |f}t |j |d|j i}tt||}|S)NcSsg|]}|dr|qSspecrrargrrr s z+NonCallableMock.__new__..rrO)r0r r'r<r r9Z bind_partialZ argumentskeysr*AsyncMockMixinr1rNrO _safe_super__new__) clsrCkwbasesrFZ bound_argsZspec_argnewrLrrrrs  zNonCallableMock.__new__NFc Ks|dkr |}|j} || d<|| d<|| d<|| d<d| d<|dk rJ|}d}| dkrZ|dk } |||| | i| d<|| d <d| d <d| d <d| d <d | d<t| d<t| d<t| d<| | d<| r|jf| 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)rBrrrspec_setr _spec_state _new_name _new_parent_spec_as_instance _eat_selfZunsaferDr^rrrr9sD     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|dk r~t|s~t|trV|}nt|}t|||} | ot| d}t|}|j } || d<|| d<|| d<|| d<|| d<dS)Nr _spec_class _spec_set_spec_signature _mock_methods _spec_asyncs) dirr%r&r$appendr\r"r1r>r^) rBrrrrrrrrresr^rrrrs,    zNonCallableMock._mock_add_speccCs8|j}|jdk r|jj}|tkr4|j|dd}||_|S)N()rr)rrrwr_get_child_mock)rBrxrrrZ__get_return_values z"NonCallableMock.__get_return_valuecCs,|jdk r||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|jdkrt|S|jSr/)rr1rrrr __class__!s zNonCallableMock.__class__rzr{r|r}rucCsN|j}|dkr|jS|j}|dk rJt|sJt|tsJt|sJt|}||_|Sr/)rrr~callabler"rr3)rB delegatedZsfrrrZ__get_side_effect.sz!NonCallableMock.__get_side_effectcCs(t|}|j}|dkr||_n||_dSr/) _try_iterrrr~)rBrrrrrZ__set_side_effect9s z!NonCallableMock.__set_side_effect)rwr~cCs|dkr g}t||krdS|t|d|_d|_d|_t|_t|_t|_|r^t |_ |rhd|_ |j D]"}t|tsr|tkrqr||qr|j }t|r||k r||dS)NFr)idrrzr|r{rsrur}rtrrrrvaluesr" _SpecState_deletedrvr!)rBZvisitedrwr~childrxrrrrvDs,  zNonCallableMock.reset_mockcKsXt|dddD]>\}}|d}|}|}|D]}t||}q6t|||qdS)NcSs|ddS)Nr.)count)entryrrroz0NonCallableMock.configure_mock..)keyr)sorteditemssplitpopr$rT)rBrDrvalrCfinalr)rrrrrbs   zNonCallableMock.configure_mockcCs|dkrt|n:|jdk r<||jks.|tkrLtd|nt|rLt||jsd|drdtd|j|}|tkrt|np|dkrd}|j dk rt |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)rBrrgrrrrrxsF          zNonCallableMock.__getattr__cCs|jg}|j}|}d}|dgkr$d}|dk rZ|}||j|d}|jdkrRd}|j}q$tt|}|jpnd}t|dkr|ddkr|d7}||d<d|S)Nrrrr5r)rz().r)rrrrZreversedrrjoin)rBZ _name_listrZlastdotZ_firstrrr_extract_mock_names(      z"NonCallableMock._extract_mock_namecCs^|}d}|dkrd|}d}|jdk rDd}|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|]\}}|tk r|qSr)r)rZm_nameZm_valuerrrrsz+NonCallableMock.__dir__..cSsg|]}|ds|qSrrrerrrrs cSs"g|]}|drt|r|qSr)rrrrrrrs ) r object__dir__rrr1rZr^rrrset)rBZextrasZ from_typeZ from_dictZfrom_child_mocksrrrrs    zNonCallableMock.__dir__csT|tkrt||SjrHjdk rH|jkrH|jkrHtd|n|tkrbd|}t|n|tkrjdk r|jkrtd|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.csf||Sr/rrCrrfrBrrrrz-NonCallableMock.__setattr__..rrz Cannot set )rr __setattr__rrr^r;_unsupported_magicsrr!rTr1 _get_methodrrrrr#r)rBrrmsg mock_namerrrrs<    zNonCallableMock.__setattr__cCs|tkr2|t|jkr2tt||||jkr2dS|j|t}||jkr\tt| |n|t krlt ||tk r||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]:}||}|dksJt|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}|dk rt|dkrNd}|\}}n |\}}}z||j||fWStk r}z|dWYSd}~XYqXn|SdS)Nrrr)r"r[rrrr@ TypeErrorwith_traceback)rB_callrFrrCrDrrrr _call_matcherHs   "zNonCallableMock._call_matchercCs0|jdkr,d|jpd|j|f}t|dS)Nrz9Expected '%s' to not have been called. Called %s times.%sr5r{r _calls_reprAssertionErrorrBr rrrrnbs z!NonCallableMock.assert_not_calledcCs$|jdkr d|jpd}t|dS)Nrz"Expected '%s' to have been called.r5)r{rrr rrrrmls  zNonCallableMock.assert_calledcCs0|jdks,d|jpd|j|f}t|dS)Nrz:Expected '%s' to have been called once. Called %s times.%sr5rr rrrrots z"NonCallableMock.assert_called_oncecsjdkr.}d}d||f}t|fdd}f}j}||kr~t|trn|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_message)r|rrrr" Exception)rBrCrDexpectedactualZ error_messager$causerr#rrk~s   z"NonCallableMock.assert_called_withcOs8|jdks,d|jpd|j|f}t||j||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||kr|dkrXd}nddd|D}t|d t|jd d d |dSt|}g}|D]2}z||Wqt k r| |YqXq|rtd j pdt ||f|dS)Ncsg|]}|qSrrrcrrrrsz4NonCallableMock.assert_has_calls..css|]}t|tr|VqdSr/r"r%rrrr s z3NonCallableMock.assert_has_calls..c3s|]}|VqdSr/r*r+rrrr.szCalls 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_foundkallrrrrqsH "z NonCallableMock.assert_has_callscsZ||f}fddjD}||krVt|tr8|nd}||}td||dS)Ncsg|]}|qSrr*r+rrrrsz3NonCallableMock.assert_any_call..z%s call not found)rr}r"r%rrrBrCrDr&r'r(rrrrrrs zNonCallableMock.assert_any_callcKs|d}||jdkr"tf|St|}t|trB|tkrBt}nbt|trp|tksd|j rj||j krjt}qt}n4t|t st|t rt}qt|t rt }n |jd}|jrd|krd|dnd}||}t||f|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)rBr0rrrrszNonCallableMock._calls_repr) NNNNNNrNFNF)F)FF)N)r)F)r?),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 sn -      '' !   -'r cCsL|dkr |St|r|St|r$|Sz t|WStk rF|YSXdSr/)r3rYrrr(rrrrs rc @sReZdZddedddddddf ddZddZddZd d Zd d Zd dZ dS)r<Nrc Ks6||jd<tt|j||||||| | f| ||_dS)Nr)r^rr<r9r~) rBrr~rwrrrrrrrrDrrrr9#s  zCallableMixin.__init__cOsdSr/rrArrrrI/szCallableMixin._mock_check_sigcOs$|j|||j|||j||Sr/)rI_increment_mock_call _mock_callrArrrr:4s  zCallableMixin.__call__cOs |j||Sr/)_execute_mock_callrArrrrB<szCallableMixin._mock_callc Osd|_|jd7_t||fdd}||_|j||jdk }|j}|j}|dk}|j td||f|j }|dk r|r|j t|||f|jdk }|r|jd|}t|||f} |j | |jr|rd} nd} |jdk}|j| |}|j }qpdS)NTrtworrr) rzr{_Callr|r}rrrrrurrt) rBrCrDrZdo_method_callsZmethod_call_nameZmock_call_nameZ is_a_callrZthis_mock_callrrrrrA?s4     z"CallableMixin._increment_mock_callcOs||j}|dk rPt|r|n(t|s:t|}t|rD|n |||}|tk rP|S|jtk r`|jS|jdk rv|j||S|jSr/)r~r3rYrrrrwr)rBrCrDeffectrgrrrrCms     z CallableMixin._execute_mock_call) rNrQrrr9rIr:rBrArCrrrrr<!s .r<c@s eZdZdS)rNrNrQrrrrrrsrcCs8z t||WStk r2t|t||YSXdSr/)r$r; __import__)thingcomp import_pathrrr _dot_lookups  rMcCsB|d}|d}t|}|D]}|d|7}t|||}q |S)Nrrz.%s)rrrIrM)targetZ componentsrLrJrKrrr _importers   rOc@szeZdZdZgZddZddZddZdd Ze j d d Z d d Z ddZ ddZddZddZddZddZdS)_patchNc Csn|dk r(|tk rtd|dk r(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) rBrQrVrrrSrrTrRrDrrrr9s(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..) rPrQrVrrrSrrTrRrDattribute_namerU)rBpatcherrrrrVs z _patch.copycCs2t|tr||St|r(||S||Sr/)r"r1decorate_classr'r&decorate_async_callabledecorate_callablerBr-rrrr:s     z_patch.__call__cCsNt|D]@}|tjsqt||}t|ds0q|}t||||q|SNr:)rrr TEST_PREFIXr$r#rVrT)rBr>r attr_valuerYrrrrZs    z_patch.decorate_classc csrg}t\}|jD]8}||}|jdk r8||q|jtkr||q|t |7}||fVW5QRXdSr/) contextlib ExitStack patchings enter_contextrXupdaterrrr[)rBpatchedrCkeywargs extra_args exit_stackpatchingrrrrdecoration_helpers        z_patch.decoration_helpercs>tdrjStfddg_S)Nrcc s4||\}}||W5QRSQRXdSr/rkrCrgZnewargsZ newkeywargsr-rfrBrrrf(s z)_patch.decorate_callable..patchedr#rcrrr]rrnrr\"s  z_patch.decorate_callablecs>tdrjStfddg_S)Nrcc s:||"\}}||IdHW5QRSQRXdSr/rlrmrnrrrf9s z/_patch.decorate_async_callable..patchedror]rrnrr[3s  z_patch.decorate_async_callablec Cs|}|j}t}d}z|j|}Wn$ttfk rHt||t}YnXd}|tkrft|t rfd|_ |j s|tkrtd||f||fS)NFTz!%s does not have the attribute %r) rQrVrr^r;KeyErrorr$ _builtinsr"rrS)rBrNrrflocalrrr get_originalDs  z_patch.get_originalcCs|j|j|j}}}|j|j}}|j}||_|dkr@d}|dkrLd}|dkrXd}|dk rp|dk rptd|dk s|dk r|dkrtd| \}}|t kr||dkr|d} |dkr|}|dkr|}d}n&|dk r|dkr|}d}n |dkr|}|dk s |dk r.|t krtdt |t r.d} |dkrHt |rHt} nt} i} |dk r`|} n^|dk st|dk r|} |dk r|} t| rd| k} n t|  } t | rt} n | rt} |dk r|| d<|dk r|| d <t | t r t| tr |jr |j| d <| || f| }| rt|r|} |dk rB|} t| sZt| sZt} | d | f|d d | |_nl|dk r|t k rtd |t krtdt|}|dkr|}t|f||jd|}n|rtd|}||_||_t |_!zrt"|j|j||j#dk rpi}|jt kr:|||j#<|j$D](}|j!%|}|jt kr@||q@|WS|WS|j&t'(sYnXdS)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))rrrrTrDrRrQrNrrsrr"r1r*r rr\rr r0r rVrer!rarrwboolr temp_originalis_localrarb _exit_stackrTrXrUrd__exit__sysexc_info)rBrrrrTrDrRrfrrZinheritKlass_kwargsZ this_specZ not_callableZnew_attrrhrjrrrr __enter__\s                                z_patch.__enter__cGs|jr$|jtk r$t|j|j|jn>t|j|j|jsbt|j|jrP|jdkrbt|j|j|j|`|`|`|j }|` |j |S)N)rOrQrR__annotations__rS) rwrvrrTrNrVr rSr#rxry)rBr{rirrrrysz_patch.__exit__cCs|}|j||Sr/)r~_active_patchesr)rBrgrrrstarts z _patch.startcCs6z|j|Wntk r&YdSX|dddSr/)rr3r=ryrrrrstops z _patch.stop)rNrQrrXrr9rVr:rZracontextmanagerrkr\r[rsr~ryrrrrrrrPs   rPc sPzdd\}Wn&ttfk r:tdfYnXfdd}||fS)Nrrz.Need a valid target to patch. You supplied: %rcstSr/rOrrNrrrrz_get_target..)rsplitrr=)rNrVrQrrr _get_target s  rc s>ttkrtdfdd} t| |||||||| S)Nz3 must be the actual object to be patched, not a strcsSr/rrrrrr*rz_patch_object..)r1strrrP) rNrVrrrSrrTrRrDrQrrr _patch_objects   rc sttkrfdd}n fdd}|s2tdt|}|d\} } t|| | |||||i } | | _|ddD]2\} } t|| | |||||i } | | _| j| qt| S)NcstSr/rrrrrrHrz!_patch_multiple..csSr/rrrrrrJrz=Must supply at least one keyword argument with patch.multiplerr) r1rr=rZrrPrXrUr) rNrrSrrTrRrDrQrrVrrYZ this_patcherrrr_patch_multiple1sH    rc Ks$t|\}} t|| ||||||| Sr/)rrP) rNrrrSrrTrRrDrQrVrrrrbsF rc@sNeZdZdddZddZddZd d Zd d Zd dZddZ eZ e Z dS) _patch_dictrFcKs,||_t||_|j|||_d|_dSr/)in_dictdictrreclear _original)rBrrrrDrrrr9s   z_patch_dict.__init__cs.ttrStfdd}|S)Ncs&z||WSXdSr/)r _unpatch_dictrfrBrr_innersz$_patch_dict.__call__.._inner)r"r1rZr)rBrrrrrr:s   z_patch_dict.__call__cCsXt|D]J}t||}|tjrt|drt|j|j|j }||}t |||q|Sr^) rr$rrr_r#rrrrrT)rBr>rr`Z decoratorZ decoratedrrrrZs   z_patch_dict.decorate_classcCs||jSr/)rrrrrrr~sz_patch_dict.__enter__cCs|j}t|jtrt|j|_|j}|j}z |}Wn.tk rdi}|D]}||||<qNYnX||_|rxt |z| |Wn*tk r|D]}||||<qYnXdSr/) rr"rrrOrrVr;r _clear_dictre)rBrrrrfrrrrrs&   z_patch_dict._patch_dictcCsR|j}|j}t|z||Wn*tk rL|D]}||||<q6YnXdSr/)rrrrer;)rBrrfrrrrrsz_patch_dict._unpatch_dictcGs |dSNF)r)rBrCrrrrysz_patch_dict.__exit__N)rF) rNrQrr9r:rZr~rrryrrrrrrrs   rcCs>z |Wn,tk r8t|}|D] }||=q(YnXdSr/)rr;rZ)rrrrrrr&s  rcCsttjD] }|q dSr/)rrPrr)rrrr_patch_stopall/srZtestzlt 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%sNrrnrrrr.Nsr.ccs|]}d|VqdS)zr%sNrrrrrr.Os__get____set__ __delete__ __reversed__ __missing__r __reduce_ex__Z__getinitargs____getnewargs__ __getstate__ __setstate__ __getformat__Z __setformat__rr__subclasses__ __format____getnewargs_ex__csfdd}||_|S)Ncs|f||Sr/rrBrCrr,rrmethod`sz_get_method..method)rN)rr-rrr,rr ^s r cCsh|] }d|qS)rr)rrrrrrfs __aenter__ __aexit__ __anext__ __aiter__rrr9r __prepare____instancecheck____subclasscheck____del__cCs t|Sr/)r__hash__rrrrr|rrcCs t|Sr/)r__str__rrrrr}rcCs t|Sr/)r __sizeof__rrrrr~rcCs"t|jd|dt|S)N/)r1rNrrrrrrrr)rrr __fspath__ry?g?) __lt____gt____le____ge____int__r__len__ry __complex__ __float____bool__ __index__rcsfdd}|S)Ncs$jj}|tk r|S|kr dStSr8)__eq__rrNotImplemented)otherret_valrrrrs z_get_eq..__eq__r)rBrrrr_get_eqs rcsfdd}|S)Ncs jjtk rtS|krdStSr)__ne__rrr)rrrrrs  z_get_ne..__ne__r)rBrrrr_get_nes rcsfdd}|S)Ncs jj}|tkrtgSt|Sr/)__iter__rrrrrrrrsz_get_iter..__iter__r)rBrrrr _get_iters rcsfdd}|S)Ncs(jj}|tkrttgStt|Sr/)rrr_AsyncIteratorrrrrrrs z"_get_async_iter..__aiter__r)rBrrrr_get_async_iters r)rrrrcCsbt|t}|tk r||_dSt|}|dk rB||}||_dSt|}|dk r^|||_dSr/)_return_valuesr_rrw_calculate_return_value_side_effect_methodsr~)r5rrZfixedZreturn_calculatorrwZ side_effectorrrr_set_return_values   rc@seZdZddZddZdS) MagicMixincOs&|tt|j|||dSr/)_mock_set_magicsrrr9rrrrr9szMagicMixin.__init__cCsttB}|}t|dddk rX||j}t}||}|D]}|t|jkr: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|||dSr/)rrrr9rrrrr9szAsyncMagicMixin.__init__NrNrQrr9rrrrrsrc@seZdZdddZdS)rFcCs||||dSr/rrrrrrs zMagicMock.mock_add_specN)Frrrrrrs rc@s&eZdZddZddZdddZdS) rcCs||_||_dSr/rr)rBrrrrrr9szMagicProxy.__init__cCs8|j}|j}|j|||d}t|||t||||S)N)rrr)rrrrTr)rBrrmrrr create_mocks  zMagicProxy.create_mockNcCs|Sr/)r)rBr)r=rrrr(szMagicProxy.__get__)N)rNrQrr9rrrrrrrs rcseZdZedZedZedZfddZddZdd Z d d Z d d Z ddZ ddZ dddZddZfddZZS)rrrrcs\tj||tjj|jd<d|jd<d|jd<t|jd<ttd}t j |_ ||jd<dS)NrrZ_mock_await_countZ_mock_await_argsZ_mock_await_args_listrr+) superr9r%rrr^rsr rr'Z CO_COROUTINEco_flags)rBrCrD code_mockrrrr91s    zAsyncMockMixin.__init__cst||fdd}|jd7_||_|j||j}|dk rt|rL|nbt|sz t|}Wnt k rxt YnXt|r|n&t |r|||IdH}n |||}|t k r|S|jt k r|jS|jdk rt |jr|j||IdHS|j||S|jS)NTrDr)rFrrrrr~r3rYr StopIterationStopAsyncIterationr%r&rrrwr)rBrCrDrrGrgrrrrCAs6         z!AsyncMockMixin._execute_mock_callcCs(|jdkr$d|jpdd}t|dS)Nr Expected r5z to have been awaited.rrrr rrrris zAsyncMockMixin.assert_awaitedcCs0|jdks,d|jpdd|jd}t|dSNrrr5z$ to have been awaited once. Awaited  times.rr rrrrqs z"AsyncMockMixin.assert_awaited_oncecszjdkr&}td|dfdd}f}j}||krvt|trf|nd}t||dS)NzExpected await: z Not awaitedcsjdd}|S)Nawait)rr!r"r#rrr$sz:AsyncMockMixin.assert_awaited_with.._error_message)rrrrr"r%)rBrCrDr&r$r'r(rr#rrzs   z"AsyncMockMixin.assert_awaited_withcOs8|jdks,d|jpdd|jd}t||j||Sr)rrrrr)rrrrs z'AsyncMockMixin.assert_awaited_once_withcsZ||f}fddjD}||krVt|tr8|nd}||}td||dS)Ncsg|]}|qSrr*r+rrrrsz3AsyncMockMixin.assert_any_await..z%s await not found)rrr"r%rrr9rrrrs zAsyncMockMixin.assert_any_awaitFc sfdd|D}tdd|Dd}tfddjD}|s||kr|dkrXd}nddd|D}t|d t|d j|dSt|}g}|D]2}z||Wqtk r||YqXq|rtd t |f|dS) Ncsg|]}|qSrr*r+rrrrsz4AsyncMockMixin.assert_has_awaits..css|]}t|tr|VqdSr/r-rrrrr.s z3AsyncMockMixin.assert_has_awaits..c3s|]}|VqdSr/r*r+rrrr.szAwaits not found.z,Error processing expected awaits. Errors: {}cSsg|]}t|tr|ndqSr/r-rrrrrsr/z Actual: z%r not all found in await list) rrsrr1rrZr3r=rr[) rBr4r5r&r(Z all_awaitsr6r7r8rrrrs>  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||d|_d|_t|_dSNr)rrvrrrsrrArrrrvszAsyncMockMixin.reset_mock)F)rNrQrrrrrr9rCrrrrrrrrv __classcell__rrrrr,s (   , rc@s eZdZdS)r NrHrrrrr sr c@s$eZdZddZddZddZdS)_ANYcCsdSr8rrBrrrrr sz _ANY.__eq__cCsdSrrrrrrr sz _ANY.__ne__cCsdS)Nzrrrrrr 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)reprrrrrr! sz*_format_call_signature..cSsg|]\}}d||fqS)z%s=%rr)rrrrrrr" s)rr)rrCrDrZformatted_argsZ args_stringZ kwargs_stringrrrr s rc@seZdZd ddZd!dd Zd d ZejZd d ZddZ ddZ ddZ ddZ ddZ eddZeddZddZddZdS)"rFrrNFTc 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) rrrrrE from_kallrCrD_lenfirstsecondrrrrC s.      z _Call.__new__cCs||_||_||_dSr/)rr_mock_from_kall)rBrrrrErrrrr9c sz_Call.__init__c Csh|tkr dSz t|}Wntk r.YdSXd}t|dkrJ|\}}n |\}}}t|ddr|t|ddr||j|jkr|dSd}|dkrdi}}n|dkr|\}}}n|d kr|\} t| tr| }i}n"t| tr| }di}}nd}| }nV|dkr@|\} } t| tr4| }t| tr(| i}}n d| }}n | | }}ndS|rX||krXdS||f||fkS) NTFrrrrrrr)rrrr$rr"r[r) rBrZ len_otherZ self_nameZ self_argsZ self_kwargsZ other_nameZ other_argsZ other_kwargsrrrrrrrj sR                z _Call.__eq__cOs<|jdkrtd||fddS|jd}t|j||f||dS)NrrrrrrFrrrrr: s  z_Call.__call__cCs2|jdkrt|ddSd|j|f}t||ddS)NF)rrz%s.%s)rrrr)rBrrrrrr s  z_Call.__getattr__cCs|tjkrtt||Sr/)r[r^r;__getattribute__)rBrrrrr s z_Call.__getattribute__cOs|d||S)NrrrArrrr sz _Call.countcOs|d||S)NindexrrArrrr sz _Call.indexcCs(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}|}|dk r(|jr |||j}qtt|Sr/)rrrrsr)rBZvalsrJrrr call_list s z_Call.call_list)rrNFT)rNNFT)rNrQrrr9rrrr:rrrrrrrCrDrrrrrrrF0 s(  7  rF)rc Kslt|rt|}t|t}t|}d|i}|r8d|i}n |dkrDi}|rT|rTd|d<||t} t|rri}n8|r|rtdt } n"t |st } n|r|rt |st } | d|}|} |dkrd} | f||| |d|} t|trt| |} |rt| nt|| |||dk r,|s,| |j|<|rV|sVd |krVt||dd | d | _t|D]} t| rrq^zt|| } Wntk rYq^YnXd| i}|rd| i}t| tst| || | |}|| j| <np| }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)rLrtrr)rrrr)rK)r\r1r"r.rerr'Zisdatadescriptor RuntimeErrorr rYr rarr6rjrrMrrrwrrr$r;rr5 _must_skipr%r&rT)rrrLrrtrDis_typeZ is_async_funcr}r|rr5rrfrrrKZ child_klassrrrr s                     rcCsxt|ts$|t|dikrdS|j}|jD]H}|j|t}|tkrFq*t|tt frZdSt|t rl|SdSq*|S)Nr^F) r"r1r$rr]r^r_rrWrXr6)rrrr>rgrrrrw s   rc@seZdZdddZdS)rFNcCs(||_||_||_||_||_||_dSr/)ridsrrrLr)rBrrrrrrLrrrr9 s z_SpecState.__init__)FNNNFrrrrrr s rcCs"t|trt|St|SdSr/)r"bytesioBytesIOStringIO) read_datarrr _to_stream s  rrcs&t}|dgfdd}fdd}fddfddfd d }tdkrd dl}ttt|jtt|ja|dkrt d t d }t tdj _ dj _ dj_ dj_ dj_ |j_d<dj_|j_j_|j_fdd}||_|_ |S)Ncs$jjdk rjjSdj||Sr) readlinesrwrb_statehandlerr_readlines_side_effect s z)mock_open.._readlines_side_effectcs$jjdk rjjSdj||Sr)readrwrbrrr_read_side_effect s z$mock_open.._read_side_effectc?s$EdHdj||Vq dSr)readlinerb)_iter_side_effectrrr_readline_side_effect s z(mock_open.._readline_side_effectc3s0jjdk rjjVq dD] }|Vq dSr)r rw)linerrrr  s   z$mock_open.._iter_side_effectcs jjdk rjjStdSr)r rwrrrrr_next_side_effect s z$mock_open.._next_side_effectropen)rrrrcs6td<jjdkr2d<dj_tS)Nrr)rr r~rrb)r rrrrr reset_data s    zmock_open..reset_data)r file_spec_iorZrr TextIOWrapperunionrrrr~rwwriter r rr~rr)r5rZ _read_datarr rrrr)r r rrrrr s8 "    r c@s&eZdZddZdddZddZdS) rcKs tf|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]J}zt||}Wntk r8YqYnXt|tsFq|j|krt|qdSr8)rrr$r;r"r rr)r5rrrrrr s     rc@s$eZdZddZddZddZdS)rcCs&||_ttd}tj|_||jd<dS)Nrr+)iteratorr rr'ZCO_ITERABLE_COROUTINErr^)rBrrrrrr9+ s z_AsyncIterator.__init__cCs|Sr/rrrrrr1 sz_AsyncIterator.__aiter__cs*z t|jWStk r YnXtdSr/)rrrrrrrrr4 s  z_AsyncIterator.__anext__N)rNrQrr9rrrrrrr' sr)F)F)NFNNN)FFNN)Nr)y__all__ __version__r%rarr'rrzbuiltinstypesrrrZ unittest.utilr functoolsrrrrqr rrr*r.r!r3r7r>rMrHrYr\rarjrerrrrrrrMISSINGr ZDELETEDrrrrZrsrrrr rr<rrMrOrPrrrrrrrrZmultipleZstopallr_Z magic_methodsZnumericsrrZinplacerightZ _non_defaultsr rr:Z_sync_async_magicsZ _async_magicsr;rrrrrrrrrrrrr rrrrr rrrr[rFrrrrr1rr6rrr rrrrrrrs~      1  h4 <   2 Mw         8+ B   N