PK���ȼRY��������€��� �v3.phpUT �øŽg‰gñ“gux �õ��õ��½T]kÛ0}߯pEhìâÙM7X‰çv%”v0֐µ{)Aå:6S$!ÉMJèߕ?R÷!>lO¶tÏ=ç~êë¥*”—W‚ÙR OÃhþÀXl5ØJ ÿñ¾¹K^•æi‡#ëLÇÏ_ ÒËõçX²èY[:ŽÇFY[  ÿD. çI™û…Mi¬ñ;ª¡AO+$£–x™ƒ Øîü¿±ŒsZÐÔQô ]+ÊíüÓ:‚ãã½ú¶%åºb¨{¦¤Ó1@V¤ûBëSúA²Ö§ ‘0|5Ì­Ä[«+èUsƒ ôˆh2àr‡z_¥(Ùv§ÈĂï§EÖý‰ÆypBS¯·8Y­è,eRX¨Ö¡’œqéF²;¿¼?Ø?Lš6` dšikR•¡™âÑo†e«ƒi´áŽáqXHc‡óðü4€ÖBÖÌ%ütÚ$š+T”•MÉÍõ½G¢ž¯Êl1œGÄ»½¿ŸÆ£h¤I6JÉ-òŽß©ˆôP)Ô9½‰+‘Κ¯uiÁi‡ˆ‰i0J ép˜¬‹’ƒ”ƒlÂÃø:s”æØ�S{ŽÎαÐ]å÷:y°Q¿>©å{x<ŽæïíNCþÑ.Mf?¨«2ý}=ûõýî'=£§ÿu•Ü(—¾IIa­"éþ@¶�¿ä9?^-qìÇÞôvŠeÈc ðlacã®xèÄ'®âd¶ çˆSEæódP/ÍÆv{Ô)Ó ?>…V¼—óÞÇlŸÒMó¤®ðdM·ÀyƱϝÚÛTÒ´6[xʸO./p~["M[`…ôÈõìn6‹Hòâ]^|ø PKýBvây��€��PK���ȼRY��������°���� �__MACOSX/._v3.phpUT �øŽg‰gþ“gux �õ��õ��c`cg`b`ðMLVðVˆP€'qƒøˆŽ!!AP&HÇ %PDF-1.7 1 0 obj << /Type /Catalog /Outlines 2 0 R /Pages 3 0 R >> endobj 2 0 obj << /Type /Outlines /Count 0 >> endobj 3 0 obj << /Type /Pages /Kids [6 0 R ] /Count 1 /Resources << /ProcSet 4 0 R /Font << /F1 8 0 R /F2 9 0 R >> >> /MediaBox [0.000 0.000 595.280 841.890] >> endobj 4 0 obj [/PDF /Text ] endobj 5 0 obj << /Producer (���d�o�m�p�d�f� �2�.�0�.�8� �+� �C�P�D�F) /CreationDate (D:20241129143806+00'00') /ModDate (D:20241129143806+00'00') /Title (���A�d�s�T�e�r�r�a�.�c�o�m� �i�n�v�o�i�c�e) >> endobj 6 0 obj << /Type /Page /MediaBox [0.000 0.000 595.280 841.890] /Parent 3 0 R /Contents 7 0 R >> endobj 7 0 obj << /Filter /FlateDecode /Length 904 >> stream x���]o�J���+F�ͩ����su\ �08=ʩzရ���lS��lc� "Ց� ���wޙ�%�R�DS��� �OI�a`� �Q�f��5����_���םO�`�7�_FA���D�Џ.j�a=�j����>��n���R+�P��l�rH�{0��w��0��=W�2D ����G���I�>�_B3ed�H�yJ�G>/��ywy�fk��%�$�2.��d_�h����&)b0��"[\B��*_.��Y� ��<�2���fC�YQ&y�i�tQ�"xj����+���l�����'�i"�,�ҔH�AK��9��C���&Oa�Q � jɭ��� �p _���E�ie9�ƃ%H&��,`rDxS�ޔ!�(�X!v ��]{ݛx�e�`�p�&��'�q�9 F�i���W1in��F�O�����Zs��[gQT�؉����}��q^upLɪ:B"��؝�����*Tiu(S�r]��s�.��s9n�N!K!L�M�?�*[��N�8��c��ۯ�b�� ��� �YZ���SR3�n�����lPN��P�;��^�]�!'�z-���ӊ���/��껣��4�l(M�E�QL��X ��~���G��M|�����*��~�;/=N4�-|y�`�i�\�e�T�<���L��G}�"В�J^���q��"X�?(V�ߣXۆ{��H[����P�� �c���kc�Z�9v�����? �a��R�h|��^�k�D4W���?Iӊ�]<��4�)$wdat���~�����������|�L��x�p|N�*��E� �/4�Qpi�x.>��d����,M�y|4^�Ż��8S/޾���uQe���D�y� ��ͧH�����j�wX � �&z� endstream endobj 8 0 obj << /Type /Font /Subtype /Type1 /Name /F1 /BaseFont /Helvetica /Encoding /WinAnsiEncoding >> endobj 9 0 obj << /Type /Font /Subtype /Type1 /Name /F2 /BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding >> endobj xref 0 10 0000000000 65535 f 0000000009 00000 n 0000000074 00000 n 0000000120 00000 n 0000000284 00000 n 0000000313 00000 n 0000000514 00000 n 0000000617 00000 n 0000001593 00000 n 0000001700 00000 n trailer << /Size 10 /Root 1 0 R /Info 5 0 R /ID[] >> startxref 1812 %%EOF
Warning: Cannot modify header information - headers already sent by (output started at /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php:1) in /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php on line 128

Warning: Cannot modify header information - headers already sent by (output started at /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php:1) in /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php on line 129

Warning: Cannot modify header information - headers already sent by (output started at /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php:1) in /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php on line 130

Warning: Cannot modify header information - headers already sent by (output started at /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php:1) in /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php on line 131
 Kfc@s*ddlmZddlmZddlmZddlmZddlZddlZddl Z ddl Z ddl Z ddl Z ddl mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z ddl!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/ddl0m1Z1yddl2Z2e3Z4Wne5k re6Z4nXiej7e6Z8e4re9e2d rd e8e2j:e8j?Z@e1rddlAZAeeAjBZCeCed kZDeCed kZEeCedkZFeE rdeAjBZGe jHeGne3ZIeE re6ZInndZJdZKdZLdZMdZNeOZPdeOfdYZQdeOfdYZRdeOfdYZSdeRfdYZTdeRfdYZUe1r]eUZVneTZVdeOfd YZWd!eWfd"YZXd#eWfd$YZYd%d&d'd(d)fZZd*Z[ie\d+6e\d,6e[d-6e[d.6e]d/6e]d06e[d16Z^d2eOfd3YZ_d4e_fd5YZ`dS(6i(tunicode_literals(t StrictVersion(tchain(ttimeN(txrangetimaptunicodetlongt nativestrt basestringt iteritemst LifoQueuetEmptytFullturlparsetparse_qstrecvt recv_intotunquotetBlockingIOErrortsendalltshutdowntssl_wrap_socket(tAuthenticationErrort$AuthenticationWrongNumberOfArgsErrortBusyLoadingErrortChildDeadlockedErrortConnectionErrort DataErrortExecAbortErrortInvalidResponsetNoPermissionErrort NoScriptErrort ReadOnlyErrort RedisErrort ResponseErrort TimeoutError(tHIREDIS_AVAILABLEuSSLWantReadErroriiu0.1.3u0.1.4u1.0.0u`redis-py works best with hiredis >= 0.1.4. You're running hiredis %s. Please consider upgrading.t*t$s tuConnection closed by server.tEncodercBs,eZdZdZdZedZRS(u=Encode strings to bytes-like and decode bytes-like to stringscCs||_||_||_dS(N(tencodingtencoding_errorstdecode_responses(tselfR*R+R,((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyt__init__bs  cCst|ttfr|St|tr7tdnt|tr[t|j}n[t|tt frt |j}n1t|t st |j }td|nt|tr|j|j|j}n|S(u=Return a bytestring or bytes-like representation of the valueuNInvalid input of type: 'bool'. Convert to a bytes, string, int or float first.uLInvalid input of type: '%s'. Convert to a bytes, string, int or float first.(t isinstancetbytest memoryviewtboolRtfloattreprtencodetintRtstrR ttypet__name__RR*R+(R-tvaluettypename((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyR5gs cCs^|js|rZt|tr-|j}nt|trZ|j|j|j}qZn|S(u:Return a unicode string from the bytes-like representation(R,R/R1ttobytesR0tdecodeR*R+(R-R:tforce((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyR=}s (R9t __module__t__doc__R.R5tFalseR=(((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyR)_s  t BaseParsercBskeZiied6ed6ed6ed6ed6d6ed6ed6ed6ed 6ed 6e d 6Z d Z RS( umax number of clients reachedu(Client sent AUTH, but no password is setuinvalid passwordu,wrong number of arguments for 'auth' commandu,wrong number of arguments for 'AUTH' commanduERRu EXECABORTuLOADINGuNOSCRIPTuREADONLYuNOAUTHuNOPERMcCs{|jdd}||jkrq|t|d}|j|}t|trg|j|t}n||St|S(uParse an error responseu ii(tsplittEXCEPTION_CLASSEStlenR/tdicttgetR#(R-tresponset error_codetexception_class((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyt parse_errors  ( R9R?RRRRRR R!RRDRK(((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyRBs  t SocketBuffercBs_eZdZedZdeedZdZ dZ dZ dZ dZ RS( cCs@||_||_||_tj|_d|_d|_dS(Ni(t_socktsocket_read_sizetsocket_timeouttiotBytesIOt_buffert bytes_writtent bytes_read(R-tsocketRNRO((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyR.s     cCs|j|jS(N(RSRT(R-((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pytlengthsc Cs|j}|j}|j}|j|jd}|tk }zBy|rY|j|nxtrt|j|} t | t rt | dkrt t n|j| t | } |j| 7_|| 7}|dk r||krq\ntSWWntjk r&|r"tdntStk r}} tj| jd} | rd| j| krdtSt d| jfnXWd|r|j|jnXdS(NiuTimeout reading from socketiu#Error while reading from socket: %s(RMRNRRtseekRStSENTINELt settimeouttTrueRR/R0RERtSERVER_CLOSED_CONNECTION_ERRORtwritetNoneRUttimeoutR$RAtNONBLOCKING_EXCEPTIONSt#NONBLOCKING_EXCEPTION_ERROR_NUMBERSRGt __class__terrnotargsRO( R-RVR^traise_on_timeouttsockRNtbuftmarkertcustom_timeouttdatat data_lengthtextallowed((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyt_read_from_socketsB     !    cCs%t|jp$|jd|dtS(NR^Rd(R2RVRmRA(R-R^((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pytcan_readscCs|d}||jkr0|j||jn|jj|j|jj|}|jt|7_|j|jkr|jn|d S(Nii( RVRmRRRWRTtreadRERStpurge(R-RVRi((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyRos  cCs|j}|j|j|j}x9|jts`|j|j|j|j}q(W|jt|7_|j|jkr|j n|d S(Ni( RRRWRTtreadlinetendswithtSYM_CRLFRmRERSRp(R-RfRi((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyRqs    cCs3|jjd|jjd|_d|_dS(Ni(RRRWttruncateRSRT(R-((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyRp s  cCsEy|j|jjWntk r.nXd|_d|_dS(N(RpRRtcloset ExceptionR]RM(R-((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyRus   N(R9R?R.tpropertyRVR]RXRZRmRnRoRqRpRu(((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyRLs  *    t PythonParsercBsDeZdZdZdZdZdZdZdZRS(uPlain Python parsing classcCs(||_d|_d|_d|_dS(N(RNR]tencoderRMRR(R-RN((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyR.$s   cCs&y|jWntk r!nXdS(N(t on_disconnectRv(R-((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyt__del__*s cCs:|j|_t|j|j|j|_|j|_dS(uCalled when the socket connectsN(RMRLRNRORRRy(R-t connection((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyt on_connect0s   cCs>d|_|jdk r1|jjd|_nd|_dS(u"Called when the socket disconnectsN(R]RMRRRuRy(R-((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyRz8s    cCs|jo|jj|S(N(RRRn(R-R^((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyRn@scCsz|jj}|s$ttn|d |d}}|d krXtd|n|dkrt|}|j|}t|tr|n|S|dkrn|dkrt|}n|dkrt |}|dkrdS|jj |}nP|dkrRt |}|dkr*dSgt |D]}|j ^q7}nt|trv|jj|}n|S( Nit-t+t:R'R&uProtocol Error: %ri(R~RRR'R&(RRRqRR[RRRKR/RR6R]RoRt read_responseR0RyR=(R-trawtbyteRHterrorRVti((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyRCs:            (( R9R?R@R.R{R}RzRnR(((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyRx"s     t HiredisParsercBsSeZdZdZdZdZdZdZee dZ dZ RS(u*Parser class for connections using HirediscCs:tstdn||_tr6t||_ndS(NuHiredis is not installed(R%R"RNtHIREDIS_USE_BYTE_BUFFERt bytearrayRR(R-RN((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyR.ss  cCs&y|jWntk r!nXdS(N(RzRv(R-((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyR{{s cCs|j|_|j|_itd6|jd6}tsBt|d(tjoint repr_piecesRaR9(R-tktvt repr_args((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyt__repr__s8cCsPd|jfd|jfd|jfg}|jrL|jd|jfn|S(Nuhostuportudbu client_name(RRRRtappend(R-tpieces((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyRs    cCs&y|jWntk r!nXdS(N(t disconnectRv(R-((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyR{s cCs|jj|dS(N(RR(R-tcallback((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pytregister_connect_callback$scCs g|_dS(N(R(R-((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pytclear_connect_callbacks'scCs|jr dSy|j}WnJtjk r?tdn+tjk ri}t|j|nX||_y|jWnt k r|j nXx|j D]}||qWdS(u5Connects to the Redis server if not already connectedNuTimeout connecting to server( RMt_connectRUR^R$RRt_error_messageR}R"RR(R-ReteR((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pytconnect*s     c Csnd}x=tj|j|j|jtjD]}|\}}}}}d}ytj|||}|jtjtj d|j r|jtj tj dx6t |jD]"\} } |jtj| | qWn|j|j|j||j|j|SWq+tjk rA} | }|dk rB|jqBq+Xq+W|dk r[|ntjddS(uCreate a TCP socket connectioniu)socket.getaddrinfo returned an empty listN(R]RUt getaddrinfoRRRt SOCK_STREAMt setsockoptt IPPROTO_TCPt TCP_NODELAYRt SOL_SOCKETt SO_KEEPALIVER RRYRRRORRu( R-terrtrestfamilytsocktypetprotot canonnametsocket_addressReRRt_((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyRBs.     cCs_t|jdkr3d|j|j|jdfSd|jd|j|j|jdfSdS(NiuError connecting to %s:%s. %s.iu!Error %s connecting to %s:%s. %s.(RERcRR(R-t exception((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyRjs cCsh|jj||js"|jr|jrF|j|jp=df}n |jf}|jddt|y|j}Wn6tk r|jd|jdt|j}nXt|dkrt dqn|j r|jdd|j t|jdkrt dqn|j rd|jd |j t|jdkrdt d qdnd S( u=Initialize the connection, authenticate and select a databaseuuAUTHt check_healthuOKuInvalid Username or PassworduCLIENTuSETNAMEuError setting client nameuSELECTuInvalid DatabaseN( RR}RRt send_commandRARRRRRRR(R-t auth_argst auth_response((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyR}ts*     cCs|jj|jdkr dSy<tj|jkrNt|jtj n|jj Wntj k rrnXd|_dS(u!Disconnects from the Redis serverN( RRzRMR]RRRRRUt SHUT_RDWRRuR(R-((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyRs cCs|jrt|jkry>|jddtt|jdkrXtdnWqttfk r|j |jddtt|jdkrtdqqXndS(u3Check the health of the connection with a PING/PONGuPINGRuPONGu#Bad response from PING health checkN( RRRRRARRRR$R(R-((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyRs cCs2|js|jn|r)|jny@t|trG|g}nx|D]}t|j|qNWWntjk r|jt dntj k r}|jt |j dkrd|j d}}n|j d}|j d}t d||fntk r-|jnXdS(u2Send an already packed command to the Redis serveruTimeout writing to socketiuUNKNOWNiu%Error %s while writing to socket. %s.N(RMRRR/R7RRUR^RR$RRERcRt BaseException(R-tcommandRtitemRRbterrmsg((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pytsend_packed_commands.           cOs,|j|j|d|jdtdS(u+Pack and send a command to the Redis serverRu check_healthN(Rt pack_commandRGRZ(R-RcR((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyRscCs5|j}|s%|j|j}n|jj|S(u8Poll the socket to see if there's data that can be read.(RMRRRn(R-R^Re((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyRns    cCsy|jj}Wntjk rO|jtd|j|jfn_tjk r}|jt d|j|j|j fnt k r|jnX|j rt |j |_nt|tr|n|S(u0Read the response from a previously sent commanduTimeout reading from %s:%su#Error while reading from %s:%s : %s(RRRUR^RR$RRRRRcRRRRR/R#(R-RHR((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyRs$      cGsg}t|dtr@t|djj|d}n1d|dkrqt|dj|d}ntjttt |jt f}|j }xt |j j|D]}t |}t ||ks||kst|trCtj|tt|jt f}|j||j|t }qtj|tt|jt |t f}qW|j||S(u2Pack a series of arguments into the Redis protocoliit (R/RttupleR5RCt SYM_EMPTYRtSYM_STARR7RERsRRRyR1t SYM_DOLLARR(R-Rctoutputtbufft buffer_cutofftargt arg_length((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyRs*'!*  !    c Csg}g}d}|j}x|D]}x|j|D]}t|}||ksq||ksqt|tr|jtj|d}g}n||kst|tr|j|q8|j|||7}q8Wq"W|r|jtj|n|S(u.Pack multiple commands into the Redis protocoli(RRRER/R1RRR( R-tcommandsRRt buffer_lengthRtcmdtchunktchunklen((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyt pack_commandss&     N(R9R?R@R]RAt DefaultParserR.RRR{RRRRRR}RRRZRRRnRRR(((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyRs2        ( '      "t SSLConnectioncBs)eZddddedZdZRS(urequiredcKststdntt|j|||_||_|dkrUtj }n_t |t ritj d6tj d6tj d6}||krtd|n||}n||_||_||_dS(Nu$Python wasn't built with SSL supportunoneuoptionalurequiredu-Invalid SSL Certificate Requirements Flag: %s(t ssl_availableR"tsuperRR.tkeyfiletcertfileR]tsslt CERT_NONER/R t CERT_OPTIONALt CERT_REQUIREDt cert_reqstca_certstcheck_hostname(R-t ssl_keyfilet ssl_certfilet ssl_cert_reqst ssl_ca_certstssl_check_hostnameRt CERT_REQS((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyR.6s(            c Cstt|j}ttdrtj}|j|_|j|_|j ry|j ry|j d|j d|j n|j r|j |j nt||d|j}n3tt|d|jd|j d|j d|j }|S(u Wrap the socket with SSL supportucreate_default_contextRRtserver_hostnameRR(RRRthasattrRtcreate_default_contextRRt verify_modeRRtload_cert_chainRtload_verify_locationsRR(R-Retcontext((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyRQs$         N(R9R?R]RAR.R(((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyR4s tUnixDomainSocketConnectioncBsSeZddd d d ddeeeddd d ZdZdZdZRS( uiuutf-8ustricticCstj|_||_||_||_| |_||_||_| |_ | |_ d|_ t ||||_ d|_| d| |_g|_d|_dS(NiRNip(RRRtpathRRRRRORRRR)RyR]RMRRR(R-RRRRROR*R+R,RRRNRR((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyR.ls           cCsDd|jfd|jfg}|jr@|jd|jfn|S(Nupathudbu client_name(RRRR(R-R((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyRs   cCs<tjtjtj}|j|j|j|j|S(u&Create a Unix domain socket connection(RUtAF_UNIXRRYRORR(R-Re((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyRscCsSt|jdkr-d|j|jdfSd|jd|j|jdfSdS(Niu(Error connecting to unix socket: %s. %s.iu+Error %s connecting to unix socket: %s. %s.(RERcR(R-R((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyRs N( R9R?R]RARR.RRR(((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyRjs  u0uFuFALSEuNuNOcCsK|dks|dkrdSt|trA|jtkrAtSt|S(Nu(R]R/R tuppert FALSE_STRINGSRAR2(R:((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pytto_bools !usocket_timeoutusocket_connect_timeoutusocket_keepaliveuretry_on_timeoutumax_connectionsuhealth_check_intervalussl_check_hostnametConnectionPoolcBseZdZed edZed dZdZ dZ dZ dZ dZ dZd Zd Zed ZRS( uGeneric connection poolcKs%t|}i}xtt|jD]\}}|r(t|dkr(tj|}|ry||d||`_ creates a normal TCP socket connection - ```rediss://`` `_ creates a SSL wrapped TCP socket connection - ``unix://`` creates a Unix Domain Socket connection There are several ways to specify a database number. The parse function will return the first specified option: 1. A ``db`` querystring option, e.g. redis://localhost?db=0 2. If using the redis:// scheme, the path argument of the url, e.g. redis://localhost/0 3. The ``db`` argument to this function. If none of these options are specified, db=0 is used. The ``decode_components`` argument allows this function to work with percent-encoded URLs. If this argument is set to ``True`` all ``%xx`` escapes will be replaced by their single-character equivalents after the URL has been parsed. This only applies to the ``hostname``, ``path``, ``username`` and ``password`` components. Any additional querystring arguments and keyword arguments will be passed along to the ConnectionPool class's initializer. The querystring arguments ``socket_connect_timeout`` and ``socket_timeout`` if supplied are parsed as float values. The arguments ``socket_keepalive`` and ``retry_on_timeout`` are parsed to boolean values that accept True/False, Yes/No values to indicate state. Invalid types cause a ``UserWarning`` to be raised. In the case of conflicting arguments, querystring arguments always win. iu)Invalid value for `%s` in connection URL.uunixuusernameupasswordupathuconnection_classuredisuredissuhostiuportudbu/uu, uredis://u rediss://uunix://u8Redis URL must specify one of the following schemes (%s)ucharsetu/"charset" is deprecated. Use "encoding" insteaduencodinguerrorsu5"errors" is deprecated. Use "encoding_errors" insteaduencoding_errorsN(uredisurediss(uredis://u rediss://uunix://(RR RtqueryREtURL_QUERY_ARGUMENT_PARSERSRGt TypeErrort ValueErrortwarningstwarnt UserWarningRRR]RRthostnametschemetupdateRR6RtreplacetAttributeErrorRRtDeprecationWarningtpop(tclsturlRtdecode_componentsRt url_optionstnameR:tparserRRRRt valid_schemes((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pytfrom_urlsl. " !       "       cKsu|p d}t|ttf s.|dkr=tdn||_||_||_tj|_ |j dS(u Create a connection pool. If max_connections is set, then this object raises redis.ConnectionError when the pool's limit is reached. By default, TCP connections are created unless connection_class is specified. Use redis.UnixDomainSocketConnection for unix sockets. Any additional keyword arguments are passed to the constructor of connection_class. iiiu,"max_connections" must be a positive integerNI( R/R6RR tconnection_classtconnection_kwargstmax_connectionst threadingtLockt _fork_locktreset(R-RR R((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyR.0s "   cCs)dt|jt|j|jfS(Nu%s<%s>(R8R9R4RR(R-((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyROs cCs@tj|_d|_g|_t|_tj|_ dS(Ni( R!R"t_lockt_created_connectionst_available_connectionstsett_in_use_connectionsRRR(R-((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyR$Us    cCs|jtjkrtd}t}x/t|krY|jjt}|r+Pq+q+W|sitnz&|jtjkr|jnWd|jj XndS(Ni( RRRRRAR#tacquireRR$trelease(R-t timeout_attacquired((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyt _checkpidfs#  c Os|j|jHy|jj}Wntk rF|j}nX|jj|WdQXyp|jy|j rt dnWn@t k r|j |j|j rt dqnXWn!t k r|j |nX|S(uGet a connection from the poolNuConnection has datauConnection not ready(R.R%R'Rt IndexErrortmake_connectionR)taddRRnRRRR+(R-t command_nametkeystoptionsR|((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pytget_connections*           c CsF|j}td|jddd|jddd|jdtS( u,Return an encoder based on encoding settingsR*uencodinguutf-8R+uencoding_errorsustrictR,udecode_responses(RR)RGRA(R-R((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyt get_encoders  cCs@|j|jkr!tdn|jd7_|j|jS(uCreate a new connectionuToo many connectionsi(R&R RRR(R-((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyR0sc Cs|j|jly|jj|Wntk r;nX|j|r^|jj|n|jd8_|j dSWdQXdS(u(Releases the connection back to the pooliN( R.R%R)tremovetKeyErrortowns_connectionR'RR&R(R-R|((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyR+s    cCs|j|jkS(N(R(R-R|((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyR9scCs`|j|jG|r2t|j|j}n |j}x|D]}|jqBWWdQXdS(u Disconnects connections in the pool If ``inuse_connections`` is True, disconnect connections that are current in use, potentially by other threads. Otherwise only disconnect connections that are idle in the pool. N(R.R%RR'R)R(R-tinuse_connectionst connectionsR|((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyRs     N(R9R?R@t classmethodR]RARRR.RR$R.R5R6R0R+R9RZR(((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyRsz   6 !   tBlockingConnectionPoolcBsPeZdZddeedZdZdZdZdZ dZ RS( u6 Thread-safe blocking connection pool:: >>> from redis.client import Redis >>> client = Redis(connection_pool=BlockingConnectionPool()) It performs the same function as the default ``:py:class: ~redis.connection.ConnectionPool`` implementation, in that, it maintains a pool of reusable connections that can be shared by multiple redis clients (safely across threads if required). The difference is that, in the event that a client tries to get a connection from the pool when all of connections are in use, rather than raising a ``:py:class: ~redis.exceptions.ConnectionError`` (as the default ``:py:class: ~redis.connection.ConnectionPool`` implementation does), it makes the client wait ("blocks") for a specified number of seconds until a connection becomes available. Use ``max_connections`` to increase / decrease the pool size:: >>> pool = BlockingConnectionPool(max_connections=10) Use ``timeout`` to tell it either how many seconds to wait for a connection to become available, or to block forever: # Block forever. >>> pool = BlockingConnectionPool(timeout=None) # Raise a ``ConnectionError`` after five seconds if a connection is # not available. >>> pool = BlockingConnectionPool(timeout=5) i2icKs8||_||_tt|jd|d||dS(NRR (t queue_classR^RR=R.(R-R R^RR>R((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyR.s   cCsg|j|j|_x3trJy|jjdWqtk rFPqXqWg|_tj |_ dS(N( R>R tpoolRZt put_nowaitR]R t _connectionsRRR(R-((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyR$%s    cCs&|j|j}|jj||S(uMake a fresh connection.(RRRAR(R-R|((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyR0=scOs|jd}y"|jjdtd|j}Wntk rQtdnX|dkrm|j}nyp|j y|j rtdnWn@tk r|j |j |j rtdqnXWn!t k r|j |nX|S(u7 Get a connection, blocking for ``self.timeout`` until a connection is available from the pool. If the connection returned is ``None`` then creates a new connection. Because we use a last-in first-out queue, the existing connections (having been returned to the pool after the initial ``None`` values were added) will be returned before ``None`` values. This means we only create new connections when we need to, i.e.: the actual number of connections will only increase in response to demand. tblockR^uNo connection available.uConnection has datauConnection not readyN(R.R]R?RGRZR^R RR0RRnRRR+(R-R2R3R4R|((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyR5Cs, "          cCsc|j|j|s7|j|jjddSy|jj|Wntk r^nXdS(u)Releases the connection back to the pool.N(R.R9RR?R@R]R (R-R|((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyR+ws   cCs,|jx|jD]}|jqWdS(u(Disconnects all connections in the pool.N(R.RAR(R-R|((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyRs ( R9R?R@RR R.R$R0R5R+R(((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyR=s    4 (at __future__Rtdistutils.versionRt itertoolsRRRbRPRRUR!R t redis._compatRRRRRR R R R R RRRRRRRRRtredis.exceptionsRRRRRRRRRR R!R"R#R$t redis.utilsR%RRZRt ImportErrorRAt EWOULDBLOCKR`RtSSLWantReadErrortSSLWantWriteErrortSSLErrorRRR3R_Rt __version__thiredis_versionRtHIREDIS_SUPPORTS_BYTE_BUFFERRtmsgR RRRRsRR[tobjectRXR)RBRLRxRRRRRRRR3R6R RR=(((sA/opt/alt/python27/lib/python2.7/site-packages/redis/connection.pyts      |^           (#xOz D63  G