U :e@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).0namer2/usr/local/python38/lib/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)rBextrasZ 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{rr r!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|rr rr" 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{rrr rkrBrCrDr 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) rrsruformatr rrstriprZremover=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&rr rBrCrDr'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)rBr1rrrrszNonCallableMock._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_callrArrrrC<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_callrrrrrB?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)rBrCrDeffectrgrrrrDms     z CallableMixin._execute_mock_call) rNrQrrr9rIr:rCrBrDrrrrr=!s .r=c@s eZdZdS)rNrNrQrrrrrrsrcCs8z t||WStk r2t|t||YSXdSr/)r$r; __import__)thingcomp import_pathrrr _dot_lookups  rNcCsB|d}|d}t|}|D]}|d|7}t|||}q |S)Nrrz.%s)rrrJrN)targetZ componentsrMrKrLrrr _importers   rPc@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) rBrRrVrrrTrrUrSrDrrrr9s(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..) rQrRrVrrrTrrUrSrDattribute_namerV)rBpatcherrrrrWs 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#rWrT)rBr?r attr_valuerZrrrr[s    z_patch.decorate_classc csrg}t\}|jD]8}||}|jdk r8||q|jtkr||q|t |7}||fVW5QRXdSr/) contextlib ExitStack patchings enter_contextrYupdaterrrr[)rBpatchedrCkeywargs extra_args exit_stackpatchingrrrrdecoration_helpers        z_patch.decoration_helpercs>tdrjStfddg_S)Nrdc s4||\}}||W5QRSQRXdSr/rlrCrhZnewargsZ newkeywargsr-rgrBrrrg(s z)_patch.decorate_callable..patchedr#rdrrr^rrorr]"s  z_patch.decorate_callablecs>tdrjStfddg_S)Nrdc s:||"\}}||IdHW5QRSQRXdSr/rmrnrorrrg9s z/_patch.decorate_async_callable..patchedrpr^rrorr\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) rRrVrr^r;KeyErrorr$ _builtinsr"rrT)rBrOrrflocalrrr 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))rrrrUrDrSrRrOrrtrr"r1r*r rr\rr r0r rVrfr!rarrwboolr temp_originalis_localrbrc _exit_stackrTrYrVre__exit__sysexc_info)rBrrrrUrDrSrfrsZinheritKlass_kwargsZ this_specZ not_callableZnew_attrrirkrrrr __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) rxrwrrTrOrVr rTr#ryrz)rBr|rjrrrrzsz_patch.__exit__cCs|}|j||Sr/)r_active_patchesr)rBrgrrrstarts z _patch.startcCs6z|j|Wntk r&YdSX|dddSr/)rr4r=rzrrrrstops z _patch.stop)rNrQrrYrr9rWr:r[rbcontextmanagerrlr]r\rtrrzrrrrrrrQs   rQc sPzdd\}Wn&ttfk r:tdfYnXfdd}||fS)Nrrz.Need a valid target to patch. You supplied: %rcstSr/rPrrOrrrrz_get_target..)rsplitrr=)rOrVrRrrr _get_target s  rc s>ttkrtdfdd} t| |||||||| S)Nz3 must be the actual object to be patched, not a strcsSr/rrrrrr*rz_patch_object..)r1strrrQ) rOrVrrrTrrUrSrDrRrrr _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=rZrrQrYrVr) rOrrTrrUrSrDrRrrVrrZZ this_patcherrrr_patch_multiple1sH    rc Ks$t|\}} t|| ||||||| Sr/)rrQ) rOrrrTrrUrSrDrRrVrrrrbsF rc@sNeZdZdddZddZddZd d Zd d Zd dZddZ eZ e Z dS) _patch_dictrFcKs,||_t||_|j|||_d|_dSr/)in_dictdictrrfclear _original)rBrrrrDrrrr9s   z_patch_dict.__init__cs.ttrStfdd}|S)Ncs&z||WSXdSr/)r _unpatch_dictrfrBrr_innersz$_patch_dict.__call__.._inner)r"r1r[r)rBrrrrrr:s   z_patch_dict.__call__cCsXt|D]J}t||}|tjrt|drt|j|j|j }||}t |||q|Sr_) rr$rrr`r#rrrrrT)rBr?rraZ decoratorZ decoratedrrrr[s   z_patch_dict.decorate_classcCs||jSr/)rrrrrrrsz_patch_dict.__enter__cCs|j}t|jtrt|j|_|j}|j}z |}Wn.tk rdi}|D]}||||<qNYnX||_|rxt |z| |Wn*tk r|D]}||||<qYnXdSr/) rr"rrrPrrWr;r _clear_dictrf)rBrrrrfrrrrrs&   z_patch_dict._patch_dictcCsR|j}|j}t|z||Wn*tk rL|D]}||||<q6YnXdSr/)rrrrfr;)rBrrfrrrrrsz_patch_dict._unpatch_dictcGs |dSNF)r)rBrCrrrrzsz_patch_dict.__exit__N)rF) rNrQrr9r:r[rrrrzrrrrrrrs   rcCs>z |Wn,tk r8t|}|D] }||=q(YnXdSr/)rr;rZ)rrrrrrr&s  rcCsttjD] }|q dSr/)rrQrr)rrrr_patch_stopall/srtestzlt 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____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__rz __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)NTrEr)rGrrrrr~r3rYr StopIterationStopAsyncIterationr%r&rrrwr)rBrCrDrrHrgrrrrDAs6         z!AsyncMockMixin._execute_mock_callcCs(|jdkr$d|jpdd}t|dS)Nr Expected r5z to have been awaited.rrr r!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)rrr rr"r&)rBrCrDr'r%r(r)rr$rrzs   z"AsyncMockMixin.assert_awaited_withcOs8|jdks,d|jpdd|jd}t||j||Sr)rrr rr*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&rr r:rrrrs 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.rrrrrsr0z Actual: z%r not all found in await list) rrsrr2r rZr4r=rr[) rBr5r6r'r)Z all_awaitsr7r8r9rrrrs>  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)rNrQrrrrrr9rDrrrrrrrrv __classcell__rrrrr,s (   , rc@s eZdZdS)r NrIrrrrr 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_args args_stringZ kwargs_stringrrrr s rc@seZdZd ddZd!dd Zd d ZejZd d ZddZ ddZ ddZ ddZ ddZ eddZeddZddZddZdS)"rGrrNFTc 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) rrrrrF from_kallrCrD_lenfirstsecondrrrrC s.      z _Call.__new__cCs||_||_||_dSr/)rr_mock_from_kall)rBrrrrFrrrrr9c 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)NrrrrrrGrrrrr: 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)rBZvalsrKrrr call_list s z_Call.call_list)rrNFT)rNNFT)rNrQrrr9rrrr:rrrrrrrCrDrrrrrrrG0 s(  7  rG)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)rLrurr)rrrr)rK)r\r1r"r.rfrr'Zisdatadescriptor RuntimeErrorr rYr rarr6rjrrMrrrwrrr$r;rr5 _must_skipr%r&rT)rrrLrrurDis_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)readrwrbr rr_read_side_effect s z$mock_open.._read_side_effectc?s$EdHdj||Vq dSr)readlinerb)_iter_side_effectr rr_readline_side_effect s z(mock_open.._readline_side_effectc3s0jjdk rjjVq dD] }|Vq dSr)rrw)liner rrr s   z$mock_open.._iter_side_effectcs jjdk rjjStdSr)rrwrrr rr_next_side_effect s z$mock_open.._next_side_effectropen)rrrrcs6td<jjdkr2d<dj_tS)Nrr)rrr~rrb)rr r rrr reset_data s    zmock_open..reset_data)r file_spec_iorZrr TextIOWrapperunionrrrrrwwriter rrr~rr)r5rZ _read_datar rrrrr)rrr r rrr 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%rbrr'rr{builtinstypesrrrZ unittest.utilr functoolsrrrrrr rrr*r.r!r3r7r>rMrHrYr\rarjrerrrrrrrMISSINGrZDELETEDrrrrZrsrrrr rr=rrNrPrQrrrrrrrrZmultipleZstopallr`Z magic_methodsZnumericsrrZinplacerightZ _non_defaultsr rr;Z_sync_async_magicsZ _async_magicsr<rr rrrrrrrrrrr rrrrr rrrr[rGrrrrr1rr6rrr rrrrrrrs~      1  h4 <   2 Mw         8+ B   N