....................................../////.===Shadow-Here===./////................................................ > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < ------------------------------------------------------------------------------------------------------------------- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// RIFF¤ WEBPVP8 ˜ ðÑ *ôô>‘HŸK¥¤"§£±¨àð enü¹%½_F‘åè¿2ºQú³íªú`N¿­3ÿƒügµJžaÿ¯ÿ°~¼ÎùnúîÞÖô•òíôÁÉß®Sm¥Ü/ ‡ó˜f£Ùà<˜„xëJ¢Ù€SO3x<ªÔ©4¿+ç¶A`q@Ì“Úñè™ÍÿJÌ´ª-˜ÆtÊÛL]Ïq*‘Ý”ì#ŸÌÏãY]@ê`¿ /ªfkØB4·®£ó z—Üw¥Pxù–ÞLШKÇN¾AkÙTf½è'‰g gÆv›Øuh~ a˜Z— ïj*á¥t d£“uÒ ¨`K˜¹ßþ]b>˜]_ÏÔ6W—è2r4x•íÖ…"ƒÖNîä!¦å Ú}ýxGøÌ —@ ;ÆÚŠ=ɾ1ý8lªË¥ô ^yf®Œ¢u&2©nÙÇ›ñÂñŒ³ aPo['½»øFùà­+4ê“$!lövlüÞ=;N®3ð‚õ›DÉKòÞ>ÄÍ ¥ˆuߤ#ˆ$6ù™¥îЇy’ÍB¼ çxÛ;X"WL£R÷͝*ó-¶Zu}º.s¸sšXqù–DþÿvªhüïwyŸ ¯é³lÀ:KCûÄ£Ëá\…­ ~—ýóî ¼ûûÜTÓüÇy…ŽÆvc»¾×U ñ¸žþоP÷¦ó:Ò¨¨5;Ð#&#ÖúñläÿÁœ GxÉ­/ñ‡áQðìYÉtÒw޼GÔ´zàÒò ð*ëzƒ•4~H]Ø‹f ñÓÈñ`NåWçs'ÆÏW^ø¹!XžµmQ5ÃËoLœÎ: ÞËÍ¥J ù…î èo£ßPÎñ¶ž8.Œ]ʵ~5›ÙË-ù*8ÙÖß±~ ©¹rÓê‚j¶d¸{^Q'˜±Crß ÚH—#¥¥QlÀ×ëã‡DÜ«èî þ&Çæžî;ŽÏºò6ÒLÃXy&ZŒ'j‚¢Ù€IßÚù+–MGi‰*jE€‘JcÜ ÓÌ EÏÚj]o˜ Þr <¾U ûŪæÍ/šÝH¥˜b”¼ ÁñßX GP›ï2›4WŠÏà×£…íÓk†¦H·ÅíMh–*nó÷à]ÁjCº€b7<ب‹¨5車bp2:Á[UªM„QŒçiNMa#<5›áËó¸HýÊ"…×Éw¹¦ì2º–x<›»a±¸3Weü®FÝ⑱ö–î–³|LPÈ~çð~Çå‡|º kD¢µÏàÆAI %1À% ¹Ò – ”ϝS¦‰4&¶£°à Öý”û_Ò Áw°A«Å€?mÇÛgHÉ/8)á¾ÛìáöŽP í¨PŸNÙµº¦‡§Ùš"ÿ«>+ªÕ`Ê÷‡‚ß Õû˜þãÇ-PÍ.¾XV‘€ dÜ"þ4¹ ±Oú‘©t¥¦FªÄÃÄ•b‚znýu½—#cDs˜ÃiÑOˆñ×QO=*IAÊ,¶ŽZƒ;‡wøXè%EÐk:F±Ú” .Ѽ+Áu&Ç`."pÈÉw o&¿dE6‘’EqTuK@Ì¥ã™À(Êk(h‰,H}RÀIXÛš3µ1©_OqÚÒJAñ$ÊÙÜ;D3çŒ[þùœh¬Ã³™ö6ç†NY".Ú‰ï[ªŸŒ '²Ð öø_¨ÂÉ9ué¶³ÒŠõTàîMØ#û¯gN‡bÙ놚X„ö …ÉeüÌ^J ‹€.œ$Æ)βÄeæW#óüßĺŸ€ ÀzwV 9oä»f4V*uB «Ë†¹ì¯žR霓æHXa=&“I4K;¯ç‹h×·"UŠ~<•╪Vêª&ÍSÃÆÅ?ÔqÎ*mTM ˜›µwêd#[C¡©§‘D<©àb†–ÁœøvH/,í:¯( ²£|4-„Æövv„Yͼ™^Á$ˆ„¢Û[6yB.åH*V¨æ?$=˜Ñ€•ñ·­(VlŸ‘ nÀt8W÷´Bûba?q9ú¶Xƒl«ÿ\ù¶’þòUÐj/õ¢Ìµ³g$ƒÎR!¸»|Oߍë’BhîÚÑ¢ñåŒJ„®„£2Ð3•ô02Nt…!£Í]Ïc½Qÿ?ˆ<&ÃA¾Ú,JˆijÌ#5yz„‰Î|ÊŽ5QÏ:‹ÐaóVÔxW—CpeÏzÐïíçôÿÅ_[hãsÐ_/ŽTÝ?BîˆííV$<¿i>²F¬_Eß¿ †bÊŒº­ÿ®Z H“C}”¬,Mp ý/Bá£w>˜YV°aƒúh+cŠ- r/[%|üUMHäQ°X»|û/@|°¥Ð !BÔ Ç¢Ä©š+Õì D«7ìN¶ŽðÔ " ƶ’ÖçtA‰Û×}{tþz­¾GÍ›k¹OEJR$ Â׃ «ëÁ"oÉôž$oUK(Ä)Ãz³Ê-‹êN[Ò3Œñbï8P 4ƒ×q¢bo|?<ÛX¬òÄͰL–±›(™ûG?ýË©ÚÄ–ÂDØÐ_Ç¡ô ¾–ÄÏø ×e8Ë©$ÄF¹Å‹ì[©óìl:F¾f´‹‹Xì²ï®\¬ôùƒ ÿat¥óèÒùHß0äe‚;ü×h:ÆWðHž=Ã8骣"kœ'Y?³}Tûè€>?0l›e1Lòñ„aæKÆw…hÖŠùW…ÈÆÄ0ši·›[pcwËþñiêíY/~-Á5˜!¿†A›™Mÿþ(±“t@â“ö2­´TG5yé]çå僳 .·ÍïçÝ7UÚ±Ð/Nè»,_Ï ùdj7\ï Wì4›„»c¸àešg#ÒÊ⥭áØo5‘?ÌdÝô¯ ¹kzsƒ=´#ëÉK›Ø´±-¥eW?‡çßtòTã…$Ý+qÿ±ƒ÷_3Ô¥í÷:æ–ž<·Ö‡‰Å¢ š‡%Ô—utÌÈìðžgÖÀz²À—ï÷Óîäõ{K'´È÷³yaÏÁjƒô}ž§®æÊydÕÈë5¯èˆõvÕ©ã*çD„ “z„Ó‡^^xÂ3M§A´JG‚öï 3W'ˆ.OvXè¡ÊÕª?5º7†˜(˜Ç¶#çê’¶!ÌdZK§æ 0fãaN]òY³RV ™î$®K2R¨`W!1Ôó\;Ý ýB%qæK•&ÓÈe9È0êI±žeŸß -ú@žQr¦ ö4»M¼Áè¹µmw 9 EÆE_°2ó„ŸXKWÁ×Hóì^´²GѝF©óäR†¦‰ç"V»eØ<3ùd3ÿÚ¤Žú“Gi" —‘_ÙËÎ~Üö¯¥½Î»üŸEÚŽåmÞþí ;ÞólËΦMzA"Âf(´òá;Éï(/7½ûñÌ­cïÕçлþÝz¾-ÍvÑ“pH­–ðÓj$¸Äû¤‚‘ãUBË-n“2åPkS5&‹Â|+g^œ®Ì͆d!OïäîU«c;{Û!ÅŽ«ëZ9Ókóˆ]¯ƒ›né `ÇÒ+tÆš (ØKá¾—=3œ®•vuMñg²\ï Ec€ 05±d™‡×iÇ×›UúvÌ¢£Èþ¡ÕØô¶ßÎA"ß±#Ö²ˆÊŸ¦*Ä~ij|àø.-¼'»Ú¥£h ofº¦‡VsR=N½„Î v˜Z*SÌ{=jÑB‹tê…;’HžH¯8–îDù8ñ¢|Q•bÛçš–‹m³“ê¨ åÏ^m¬Žãþ©ïêO‡½6] µÆ„Ooòü ²x}N¦Ë3ïé¿»€›HA˜m%çÞ/¿í7Fø“‹léUk)É°Œµ8Q8›:ÀŠeT*šõ~ôڝG6 ¢}`ùH­–”¡k ‰P1>š†®9z11!X wKfmÁ¦xÑ,N1Q”–æB¶M…ÒÃv6SMˆhU¬ÊPŽï‘öj=·CŒ¯u¹ƒVIЃsx4’ömÛýcå¡¶7ßŠß 57^\wÒÐÆ k§h,Œý î«q^R½3]J¸ÇðN ‚çU¬ôº^Áì} ³f©Õœ§ˆã:FÄÈ‚é(€™?àýÓüè1Gô£¼éj‚OÅñ  #>×—ßtà 0G¥Åa뀐kßhc™À_ÉñÞ#±)GD" YîäË-ÿÙ̪ ¹™a¯´¢E\ÝÒö‚;™„ë]_ p8‰o¡ñ+^÷ 3‘'dT4œŽ ðVë½° :¬víÑ«£tßÚS-3¶“þ2 †üüʨòrš¹M{É_¤`Û¨0ìjœøJ‡:÷ÃáZ˜†@GP&œÑDGÏs¡þ¦þDGú‘1Yá9Ôþ¼ ûø…§÷8&–ÜÑnÄ_m®^üÆ`;ÉVÁJ£?â€-ßê}suÍ2sõA NÌúA磸‘îÿÚ»ƒìö·á¿±tÑÐ"Tÿü˜[@/äj¬€uüªìù¥Ý˜á8Ý´sõj 8@rˆð äþZÇD®ÿUÏ2ùôõrBzÆÏÞž>Ì™xœ“ wiÎ×7_… ¸ \#€MɁV¶¥üÕÿPÔ9Z‡ø§É8#H:ƒ5ÀÝå9ÍIŒ5åKÙŠ÷qÄ>1AÈøžj"µÂд/ªnÀ qªã}"iŸBå˜ÓÛŽ¦…&ݧ;G@—³b¯“•"´4í¨ôM¨åñC‹ïùÉó¯ÓsSH2Ý@ßáM‡ˆKÀªÛUeø/4\gnm¥‹ŸŒ qÄ b9ÞwÒNÏ_4Ég³ú=܆‚´ •â¥õeíþkjz>éÚyU«Íӝ݃6"8/ø{=Ô¢»G¥ äUw°W«,ô—¿ãㆅү¢³xŠUû™yŒ (øSópÐ 9\åTâ»—*oG$/×ÍT†Y¿1¤Þ¢_‡ ¼ „±ÍçèSaÓ 3ÛMÁBkxs‰’R/¡¤ˆÙçª(*õ„üXÌ´ƒ E§´¬EF"Ù”R/ÐNyÆÂ^°?™6¡œïJ·±$§?º>ÖüœcNÌù¯G ‹ñ2ЁBB„^·úìaz¨k:#¨Æ¨8LÎõލ£^§S&cŒÐU€ü(‡F±Š¼&P>8ÙÁ ‰ p5?0ÊÆƒZl¸aô š¼¡}gÿ¶zÆC²¹¬ÎÖG*HB¡O<º2#ñŒAƒ–¡B˜´É$¥›É:FÀÔx¾u?XÜÏÓvN©RS{2ʈãk9rmP¼Qq̳ è¼ÐFׄ^¡Öì fE“F4A…!ì/…¦Lƒ… … $%´¾yã@CI¬ á—3PþBÏNÿ<ý°4Ü ËÃ#ØÍ~âW«rEñw‹eùMMHß²`¬Öó½íf³:‹k˜¯÷}Z!ã¿<¥,\#öµÀ¯aÒNÆIé,Ћ–lŽ#Àæ9ÀÒS·I’½-Ïp Äz¤Š Â* ­íÄ9­< h>׍3ZkËU¹§˜ŒŠ±f­’¤º³Q ÏB?‹#µíÃ¥®@(Gs«†vI¥Mµ‹Á©e~2ú³ÁP4ìÕi‚²Ê^ö@-DþÓàlÜOÍ]n"µã:žpsŽ¢:! Aõ.ç~ÓBûH÷JCÌ]õVƒd «ú´QÙEA–¯¯Œ!.ˆˆëQ±ù œ·Ì!Õâ )ùL„ÅÀlÚè5@B…o´Æ¸XÓ&Û…O«˜”_#‡ƒ„ûÈt!¤ÁÏ›ÎÝŠ?c9 â\>lÓÁVÄÑ™£eØY]:fÝ–—ù+p{™ðè û³”g±OƒÚSù£áÁÊ„ä,ï7š²G ÕÌBk)~ÑiCµ|h#u¤¶îK¨² #²vݯGãeÖ϶ú…¾múÀ¶þÔñ‚Š9'^($¤§ò “š½{éúp÷J›ušS¹áªCÂubÃH9™D™/ZöØÁ‡¦ÝÙŸ·kð*_”.C‹{áXó€‡c¡c€§/šò/&éš÷,àéJþ‰X›fµ“C¨œ®r¬"kL‰Â_q…Z–.ÉL~O µ›zn‚¹À¦Öª7\àHµšÖ %»ÇníV[¥*Õ;ƒ#½¾HK-ÖIÊdÏEÚ#=o÷Óò³´Š: Ç?{¾+9›–‘OEáU·S€˜j"ÄaÜ ŒÛWt› á–c#a»pÔZÞdŽtWê=9éöÊ¢µ~ ë ;Öe‡Œ®:bî3±ýê¢wà¼îpêñ¹¾4 zc¾ðÖÿzdêŒÑÒŝÀ‰s6¤í³ÎÙB¿OZ”+F¤á‡3@Ñëäg©·Ž ˆèª<ù@É{&S„œÕúÀA)‰h:YÀ5^ÂÓŒ°õäU\ ùËÍû#²?Xe¬tu‰^zÒÔãë¼ÛWtEtû …‚g¶Úüâî*moGè¨7%u!]PhÏd™Ý%Îx: VÒ¦ôÊD3ÀŽKÛËãvÆî…N¯ä>Eró–ð`5 Œ%u5XkñÌ*NU%¶áœÊ:Qÿú»“úzyÏ6å-၇¾ ´ ÒÊ]y žO‘w2Äøæ…H’²f±ÎÇ.ª|¥'gîV•Ü .̘¯€šòü¤U~Ù†*¢!?ò wý,}´°ÔÞnïoKq5µb!áÓ3"vAßH¡³¡·G(ÐÎ0Îò¼MG!/ài®@—¬04*`…«é8ªøøló“ˆÊ”èù¤…ßÊoÿé'ËuÌÖ5×È¡§ˆˆfŽë9}hìâ_!!¯  B&Ëö¶‰ÀAÙNVŸ Wh›¸®XÑJì¨ú“¿÷3uj²˜¨ÍÎìë±aúŠÝå¯ð*Ó¨ôJ“yºØ)m°WýOè68†ŸÏ2—‰Ïüꪫٚ¥‹l1 ø ÏÄFjêµvÌbü¦èÝx:X±¢H=MÐß—,ˆÉÇ´(9ú¾^ÅÚ4¿m‡$âX‘å%(AlZo@½¨UOÌÕ”1ø¸jÎÀÃÃ_ µ‘Ü.œº¦Ut: Æï’!=¯uwû#,“pþÇúŒø(é@?³ü¥‘Mo §—s@Œ#)§ŒùkL}NOÆêA›¸~r½¼ÙA—HJ«eˆÖ´*¡ÓpÌŸö.m<-"³ûÈ$¬_6­åf£ïÚâj1y§ÕJ½@dÞÁr&Í\Z%D£Íñ·AZ Û³øüd/ªAi†/Й~  ‡âĮҮÏh§°b—›Û«mJžòG'[ÈYýŒ¦9psl ýÁ ®±f¦x,‰½tN ‚Xª9 ÙÖH.«Lo0×?͹m¡å†Ѽ+›2ƒF ±Ê8 7Hցϓ²Æ–m9…òŸï]Â1äN†VLâCˆU .ÿ‰Ts +ÅÎx(%¦u]6AF Š ØF鈄‘ |¢¶c±soŒ/t[a¾–û:s·`i햍ê›ËchÈ…8ßÀUÜewŒðNOƒõD%q#éû\9¤x¹&UE×G¥ Í—™$ð E6-‡¼!ýpãÔM˜ Âsìe¯ñµK¢Ç¡ùôléœ4Ö£”À Š®Ðc ^¨À}ÙËŸ§›ºê{ÊuÉC ×Sr€¤’fÉ*j!úÓ’Gsùìoîßîn%ò· àc Wp÷$¨˜)û»H ×8ŽÒ€Zj¤3ÀÙºY'Ql¦py{-6íÔCeiØp‘‡XÊîÆUߢ܂ž£Xé¼Y8þ©ëgñß}é.ÎógÒ„ÃØËø¯»™§Xýy M%@NŠ À(~áÐvu7&•,Ù˜ó€uP‡^^®=_E„jt’ 403WebShell
403Webshell
Server IP : 198.54.126.4  /  Your IP : 216.73.216.178
Web Server : Apache
System : Linux host55.registrar-servers.com 4.18.0-513.18.1.lve.2.el8.x86_64 #1 SMP Sat Mar 30 15:36:11 UTC 2024 x86_64
User : aeaw ( 7508)
PHP Version : 8.1.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /opt/cloudlinux/venv/lib/python3.11/site-packages/testfixtures/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /opt/cloudlinux/venv/lib/python3.11/site-packages/testfixtures/__pycache__/replace.cpython-311.pyc
�

�h�0����ddlZddlmZddlmZddlmZmZddlm	Z	m
Z
ddlmZddl
mZmZmZmZmZddlmZmZmZmZmZdd	lmZmZddlZeeegefZd
�Zed��Z Gd�d
��Z!		ddedede"dedededeegeffd�Z#ededefd���Z$ed dededefd���Z%ed dededefd���Z&Gd�de'��Z(dZ)ee)e!j*e!j#e#e(g��dS)!�N)�contextmanager)�partial)�
get_referrers�
get_referents)�setitem�getitem)�
ModuleType)�Any�TypeVar�Callable�Dict�Tuple)�resolve�	not_there�Resolved�classmethod_type�
class_type)�wrap�extend_docstringc�D�t||��ot||��S�N)�
isinstance)�x�y�
descriptors   �e/builddir/build/BUILD/cloudlinux-venv-1.0.8/venv/lib/python3.11/site-packages/testfixtures/replace.py�not_same_descriptorrs$���a��$�$�F�Z��:�-F�-F�)F�F��Rc���eZdZdZd�Zdefd�Z		ddeded	e	d
ede
ded
efd�Z		ddeded	e	d
ede
ded
dfd�Z
deded
dfd�Zdede	fd�Zddededed
dfd�Zddededed
dfd�Zdd�Zd�Zd�Zd�ZdS)�Replacerz�
    These are used to manage the mocking out of objects so that units
    of code can be tested without having to rely on their normal
    dependencies.
    c��i|_dSr)�	originals��selfs r�__init__zReplacer.__init__ s
��:<����r�resolvedc�0�|turk|jtur,	t|j|j��n#t$rYnwxYw|jtur!	|j|j=dS#t$rYdSwxYwdS|�|j|j|��dSr)	r�setter�setattr�delattr�	container�name�AttributeErrorr�KeyError)r%r'�values   r�_replacezReplacer._replace#s����I�����'�)�)���H�.��
�>�>�>�>��%�����D�������'�)�)�� �*�8�=�9�9�9�������D�D�����*�)�
�O�O�H�.��
�u�E�E�E�E�Es!�4�
A�A�
A"�"
A0�/A0TN�target�replacement�strictr,�accessorr-�returnc��|�|�td���t|t��r"|�td���t||��}n�t}|�|}|pt|dd��}|�td���|�I	t}|||��}nY#t$rYnMt$rt
}|||t��}Yn)wxYw	|||��}n#ttf$rYnwxYw|r4|tus+||us'|||��}	||	urt|�d|�d|�����t||turtnt||��}|j
�td���|jtur|rtd	|jz���|}
t|jt$��r�|j|jjvr|jj|j|_t)|j|t*��rt+|��}
n*t)|j|t,��rt-|��}
|�||
��t1|��}||jvr||f|j|<|S)
�M
        Replace the specified target with the supplied replacement.
        Nz-accessor is not used unless name is specifiedz0name cannot be specified when target is a string�__name__z2name must be specified when target is not a stringz
 resolved to z, expected z%target must contain at least one dot!zOriginal %r not found)�	TypeErrorr�strrr�getattrrr/r.�AssertionErrorrrr*r)�
ValueError�foundr-r,�type�__dict__r�classmethod�staticmethodr1�idr#)r%r2r3r4r,r5r-r'r?�expected�replacement_to_use�keys            r�__call__zReplacer.__call__2s���
�<�H�0��K�L�L�L��f�c�"�"�&	���� R�S�S�S��v�y�1�1�H�H��E�� �"�	��<�7�6�:�t�<�<�D��|�� T�U�U�U��#�E�#*�� (���D� 9� 9����#������$�E�E�E�#*�� (���D�)� D� D����E����� (���D� 9� 9����$�n�5�����������
]�u�	�1�1�V�y�5H�5H�#�8�I�t�4�4����)�)�(�D�)[�)[��)[�)[�SY�)[�)[�\�\�\���#�w�.�.���G���	��H��?�"��D�E�E�E��>�Y�&�&�6�&� �!8�8�=�!H�I�I�I�(���h�(�$�/�/�
	?��}�� 2� ;�;�;�!)�!3�!<�X�]�!K���"�8�>�;��L�L�
?�%0��%=�%=�"�"�$�X�^�[�,�O�O�
?�%1�+�%>�%>�"��
�
�h� 2�3�3�3���j�j���d�n�$�$�"(�(�"2�D�N�3���s*�=B�
C�"C�C�C�C'�&C'c�&�|||||||��dS)r8N��r%r2r3r4r,r5r-s       r�replacezReplacer.replace{s$��
	
��V�[�&�)�X�t�D�D�D�D�Drc	�~�|tj|td|turtnt	|�����dS)a
        This method provides a convenient way of ensuring an environment variable
        in :any:`os.environ` is set to a particular value.

        If you wish to ensure that an environment variable is *not* present,
        then use :any:`not_there` as the ``replacement``.
        F)r-r5r4r3N)�os�environrrr;)r%r-r3s   r�
in_environzReplacer.in_environ�sP��	
��R�Z�d�W�U�&1�Y�&>�&>���C��DT�DT�	V�	V�	V�	V�	V�	Vr�break_on_staticc�"�t|��D]~}|rt|t��rd|fcSt|t��rJd|vrF|�|��|ur/t|��D]}t|t
��r|dfccS� �dS)NrA)NN)rrrC�dict�getr@)r%�	attributer-rQ�referrerr,s      r�_find_containerzReplacer._find_container�s���%�i�0�0�	3�	3�H��
3�:�h��#E�#E�
3��X�~�%�%�%��H�d�+�+�
3�
�h�0F�0F��<�<��%�%��2�2�%2�8�%<�%<�3�3�	�%�i��6�6�3�#,�d�?�2�2�2�2�2�3���zrrUc��t|��std���|pt|dd��}d}t|t��r*t|��D]}t|t��r|}�n8|�||d���\}}|�|�||d���\}}|�td|�d|�����|||t|�	��dS)
au
        This method provides a convenient way to replace methods, static methods and class
        methods on their classes.

        If the attribute being replaced has a ``__name__`` that differs from the attribute
        name on the class, such as that returned by poorly implemented decorators, then
        ``name`` must be used to provide the correct name.
        zattribute must be callabler9NT)rQFzcould not find container of z using name �r-r5r3)	�callabler:r<rrrrrWr.)r%rUr3r-r,�referred�
staticmethod_�_s        r�on_classzReplacer.on_class�s���	�"�"�	:��8�9�9�9��;�w�y�*�d�;�;���	��i�!1�2�2�	`�)�)�4�4�
)�
)���h�
�3�3�)� (�I��
)�(,�';�';�I�t�]a�';�'b�'b�$�I�}��(�#�3�3�M�4�Y^�3�_�_��	�1��� �!a�	�!a�!a�Y]�!a�!a�b�b�b���Y�T�G��M�M�M�M�M�Mr�modulec�r�|pt|j��j}|j}|||t|���dS)a�
        This method provides a convenient way to replace targets that are module globals,
        particularly functions or other objects with a ``__name__`` attribute.

        If an object has been imported into a module other than the one where it has been
        defined, then ``module`` should be used to specify the module where you would
        like the replacement to occur.
        rYN)r�
__module__r?r9r<)r%r2r3r_r,r-s      r�	in_modulezReplacer.in_module�sB���>�g�f�&7�8�8�>�	������Y�T�G��M�M�M�M�M�Mrc��t|j�����D]+\}\}}|�||j��|j|=�,dS)z�
        Restore all the original objects that have been replaced by
        calls to the :meth:`replace` method of this :class:`Replacer`.
        N)�tupler#�itemsr1r?)r%�id_r2�originals    r�restorezReplacer.restore�s`��
(-�T�^�-A�-A�-C�-C�'D�'D�	$�	$�#�C�#�&�(��M�M�(�H�N�3�3�3���s�#�#�	$�	$rc��|SrrJr$s r�	__enter__zReplacer.__enter__�s���rc�.�|���dSr)rh)r%r@r0�	tracebacks    r�__exit__zReplacer.__exit__�s���������rc��|jr:tjdd�|j���D��z��dSdS)Nz;Replacer deleted without being restored, originals left: %rc��i|]\}}||��	SrJrJ)�.0�k�vs   r�
<dictcomp>z$Replacer.__del__.<locals>.<dictcomp>�s��'R�'R�'R���A��!�'R�'R�'Rr)r#�warnings�warn�valuesr$s r�__del__zReplacer.__del__�s`���>�	�
�M�%�'R�'R�$�.�:O�:O�:Q�:Q�'R�'R�'R�S�
�
�
�
�
�	�	r�TNNNr)r6N)r9ra�__qualname__�__doc__r&rr1r
r�bool�Accessorr;rHrLrPrWrr^r	rbrhrjrmrwrJrrr!r!s'��������=�=�=�
F��
F�
F�
F�
F�DH�OS�G�G�s�G��G�D�G��G�2:�G�IL�G�XY�G�G�G�G�REI�NR�E�E�c�E��E�T�E��E�19�E�HK�E�W[�E�E�E�E�	V�s�	V��	V��	V�	V�	V�	V�	�s�	�T�	�	�	�	�N�N�(�N��N�C�N�SW�N�N�N�N�6N�N��N�#�N�z�N�UY�N�N�N�N�$�$�$�$�����������rr!Tr2r3r4r,r5r-r6c�x�t��}tt|j||||||��|j��S)zY
    A decorator to replace a target object for the duration of a test
    function.
    )r!rrrHrh)r2r3r4r,r5r-�rs       rrLrL�s=��	�
�
�A����
�F�K���H�d�S�S�	�	���rc#�K�t��5}|�||��dV�ddd��dS#1swxYwYdS)zW
    This context manager provides a quick way to use :meth:`Replacer.in_environ`.
    N)r!rP)r-r3r~s   r�replace_in_environr��s�����

����q�	���T�;�'�'�'�
������������������������s
�9�=�=rUc#�K�t��5}|�|||��dV�ddd��dS#1swxYwYdS)zU
    This context manager provides a quick way to use :meth:`Replacer.on_class`.
    N)r!r^)rUr3r-r~s    r�replace_on_classr��s�����

����q�	�
�
�9�k�4�0�0�0�
�������������������������
�:�>�>r_c#�K�t��5}|�|||��dV�ddd��dS#1swxYwYdS)zV
    This context manager provides a quick way to use :meth:`Replacer.in_module`.
    N)r!rb)r2r3r_r~s    r�replace_in_moduler��s�����

����q�	���F�K��0�0�0�
������������������������r�c
�J�eZdZdZ		ddededededed	efd
�Z	defd�Z
d
�ZdS)�ReplacezU
    A context manager that uses a :class:`Replacer` to replace a single target.
    TNr2r3r4r,r5r-c��||_||_||_||_||_||_t
��|_dSr)r2r3r4r,r5r-r!�	_replacerrKs       rr&zReplace.__init__s>�����&������'���"*��
���	�!������rr6c�r�|�|j|j|j|j|j|j��Sr)r�r2r3r4r,r5r-r$s rrjzReplace.__enter__s4���~�~��K��)�4�;����
�W[�W`�
�
�	
rc�8�|j���dSr)r�rh)r%�exc_type�exc_val�exc_tbs    rrmzReplace.__exit__s������ � � � � rrx)r9raryrzr
rr{r|r;r&rjrmrJrrr�r�s���������
?C�JN�
$�
$��
$�,-�
$�7;�
$��
$�-5�
$�DG�
$�
$�
$�
$�
�1�
�
�
�
�
!�!�!�!�!rr�a
:param target: 

  This must be one of the following:
  
  - A string containing the dotted-path to the object to be replaced, in which case it will be 
    resolved the the object to be replaced.
    
    This path may specify a module in a package, an attribute of a module, or any attribute of 
    something contained within a module.
    
  - The container of the object to be replaced, in which case ``name`` must be specified.
  
  - The object to be replaced, in which case ``container`` must be specified.
    ``name`` must also be specified if it cannot be obtained from the ``__name__`` attribute
    of the object to be replaced.

:param replacement: The object to use as a replacement.

:param strict: When `True`, an exception will be raised if an
               attempt is made to replace an object that does
               not exist or if the object that is obtained using the ``accessor`` to 
               access the ``name`` from the ``container`` is not identical to the ``target``.
               
:param container: 
  The container of the object from which ``target`` can be accessed using either
  :func:`getattr` or :func:`~operator.getitem`.
  
:param accessor:
  Either :func:`getattr` or :func:`~operator.getitem`. If not supplied, this will be inferred
  preferring :func:`~operator.getitem` over :func:`getattr`.
  
:param name:
  The name used to access the ``target`` from the ``container`` using the ``accessor``.
  If required but not specified, the ``__name__`` attribute of the ``target`` will be used. 
rxr)+rN�
contextlibr�	functoolsr�gcrr�operatorrr�typesr	�typingr
rrr
r�testfixtures.resolverrrrr�testfixtures.utilsrrrtr;r|rrr!r{rLr�r�r��objectr��replace_params_docrHrJrr�<module>r�s���	�	�	�	�%�%�%�%�%�%�������+�+�+�+�+�+�+�+�%�%�%�%�%�%�%�%�������6�6�6�6�6�6�6�6�6�6�6�6�6�6�[�[�[�[�[�[�[�[�[�[�[�[�[�[�5�5�5�5�5�5�5�5������S�#�J��O�$��G�G�G��G�C�L�L��}�}�}�}�}�}�}�}�B7;�FJ�����"%��/3����)1��@C���x�j�(�"�#�������S��s������������s��#����������c����Z�������!�!�!�!�!�f�!�!�!�4#��L��#��#�X�%5�w��H�J�J�J�J�Jr

Youez - 2016 - github.com/yon3zu
LinuXploit