grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026B  >qq–4ã@s–dZddlmZmZmZddlmZddlZddlZddl Z ddl m Z ddl mZddlmZddlZddlZddlZdd d d d d dddddddddgZdadadd„Zdd„Zdd„Zdd„Zeadadejddd fd!d „Zd7d"d „Zd8d#d „Z d9d&d „Z!d'd(„Z"d)d„Z#Gd*d„dƒZ$Gd+d „d ƒZ%ejfd,d„Z&d:d-d„Z'ejfd.d„Z(d/d„Z)d0d„Z*d1d„Z+d2d„Z,d;d3d„Z-d4d5„Z.e/d6k�r’e&ƒdS)æsz#parse_multipart..)r=ÚformatrZset_typeÚKeyErrorr )r@rEr+rNr0rKrDrMr")rRr#rÍs   ccs xš|dd…dkrš|dd…}| d¡}x<|dkrd| dd|¡| dd|¡drd| d|d¡}q*W|dkrvt|ƒ}|d|…}| ¡V||d…}qWdS)Nr3ú;rú"z\"rG)ÚfindÚcountÚlenÚstrip)ÚsÚendÚfr"r"r#Ú _parseparamès  *  r_cCs¼td|ƒ}| ¡}i}xš|D]’}| d¡}|dkr|d|… ¡ ¡}||dd… ¡}t|ƒdkr¨|d|dkr„dkr¨nn |dd…}| dd ¡ d d¡}|||<qW||fS) NrVú=rr3rGéÿÿÿÿrWz\\ú\z\")r_Ú__next__rXr[ÚlowerrZrJ)ÚlineÚpartsÚkeyrEÚpÚiÚnameÚvaluer"r"r#rôs   ,  c@s<eZdZdZdZdZdZiZdZiZ iZ dd„Z dd„Z dS)r NcCs||_||_dS)N)rjrk)Úselfrjrkr"r"r#Ú__init__szMiniFieldStorage.__init__cCsd|j|jfS)NzMiniFieldStorage(%r, %r))rjrk)rlr"r"r#Ú__repr__ szMiniFieldStorage.__repr__) Ú__name__Ú __module__Ú __qualname__ÚfilenameÚlistÚtypeÚfileÚ type_optionsÚ dispositionÚdisposition_optionsrMrmrnr"r"r"r#r sc @súeZdZdddejdddddddf dd„Zd d „Zd d „Zd d„Zdd„Z dd„Z dd„Z dd„Z d:dd„Z d;dd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„ZdZd'd(„Zd)d*„Zd+Zd,d-„Zd.d/„Zd0d1„Zd2d3„Zd4d5„Zd6d7„Zd8d9„ZdS)ÚencodeÚlocaleÚgetpreferredencodingrr7rrÚ TypeErrorrMr5r8r@rr6r+rNÚbytesrtroÚ outerboundaryÚ bytes_readÚlimitrrwrxrjrrÚ _binary_filervÚ innerboundaryr9r;r:ÚlengthrsruÚdoneÚread_urlencodedÚ read_multiÚ read_single)rlr@rMr…rArBrCr‡r+rNr}r0ÚmethodrFZcdisprErDZclenr"r"r#rmPs°/                           zFieldStorage.__init__cCs(y|j ¡Wntk r"YnXdS)N)rur(ÚAttributeError)rlr"r"r#Ú__del__õszFieldStorage.__del__cCs|S)Nr")rlr"r"r#Ú __enter__ûszFieldStorage.__enter__cGs|j ¡dS)N)rur()rlr'r"r"r#Ú__exit__þszFieldStorage.__exit__cCsd|j|j|jfS)NzFieldStorage(%r, %r, %r))rjrrrk)rlr"r"r#rnszFieldStorage.__repr__cCs t| ¡ƒS)N)ÚiterÚkeys)rlr"r"r#Ú__iter__szFieldStorage.__iter__cCsT|dkrt|ƒ‚|jr:|j d¡|j ¡}|j d¡n|jdk rL|j}nd}|S)Nrkr)r�ruÚseekr<rs)rlrjrkr"r"r#Ú __getattr__ s   zFieldStorage.__getattr__cCsb|jdkrtdƒ‚g}x"|jD]}|j|kr| |¡qW|sFt|ƒ‚t|ƒdkrZ|dS|SdS)Nz not indexabler3r)rsrƒrjÚappendrUrZ)rlrgÚfoundÚitemr"r"r#Ú __getitem__s    zFieldStorage.__getitem__cCs8||kr0||}t|tƒr(dd„|DƒS|jSn|SdS)NcSsg|] }|j‘qSr")rk)rPÚxr"r"r#ú )sz)FieldStorage.getvalue..)r7rsrk)rlrgÚdefaultrkr"r"r#Úgetvalue$s  zFieldStorage.getvaluecCs4||kr,||}t|tƒr$|djS|jSn|SdS)Nr)r7rsrk)rlrgrŸrkr"r"r#Úgetfirst/s   zFieldStorage.getfirstcCs:||kr2||}t|tƒr(dd„|DƒS|jgSngSdS)NcSsg|] }|j‘qSr")rk)rPr�r"r"r#rž?sz(FieldStorage.getlist..)r7rsrk)rlrgrkr"r"r#rO:s   zFieldStorage.getlistcCs*|jdkrtdƒ‚ttdd„|jDƒƒƒS)Nz not indexablecss|] }|jVqdS)N)rj)rPr›r"r"r#ú Isz$FieldStorage.keys..)rsrƒÚset)rlr"r"r#r•Es zFieldStorage.keyscs*|jdkrtdƒ‚t‡fdd„|jDƒƒS)Nz not indexablec3s|]}|jˆkVqdS)N)rj)rPr›)rgr"r#r¢Osz,FieldStorage.__contains__..)rsrƒÚany)rlrgr")rgr#Ú __contains__Ks zFieldStorage.__contains__cCs t| ¡ƒS)N)rZr•)rlr"r"r#Ú__len__QszFieldStorage.__len__cCs|jdkrtdƒ‚t|jƒS)NzCannot be converted to bool.)rsrƒÚbool)rlr"r"r#Ú__bool__Us zFieldStorage.__bool__c Cs–|j |j¡}t|tƒs0td|jt|ƒjfƒ‚| |j |j ¡}|j rT|d|j 7}t j j||j|j|j |j |j|jd�}dd„|Dƒ|_| ¡dS)Nz%s should return bytes, got %sr*)r+rNr}r0cSsg|]\}}t||ƒ‘qSr")r )rPrgrkr"r"r#ržgsz0FieldStorage.read_urlencoded..)r@r<rŠr7r„r;rtror=r+rNrr?r r rBrCr}r0rsÚ skip_lines)rlrFÚqueryr"r"r#rŒZs  zFieldStorage.read_urlencodedc CsT|j}t|ƒstd|fƒ‚g|_|jrftjj|j|j|j |j |j |j |j d�}|j dd„|Dƒ¡|jpp|j}|j ¡}t|tƒsžtd|jt|ƒjfƒ‚|jt|ƒ7_x6| ¡d|jkræ|ræ|j ¡}|jt|ƒ7_q²W|j }|dk �r|t|jƒ8}�x>tƒ} d} x$|j ¡} | | 7} |  ¡�sP�qW| �sBP|jt| ƒ7_|  |  |j |j ¡¡|  ¡} d| k�r‚| d=|jdk�r’dn |j|j} ||j| ||||| |j |j ||j ƒ }|dk �rü|d 8}|j�rê|t|jƒ8}|d k�rütd ƒ‚|j|j7_|j |¡|j �s@|j|j!k�r.z%s should return bytes, got %ss--ryzcontent-lengthr3rzMax number of fields exceeded)#r‰Úvalid_boundaryr;rsrr?r r rBrCr+rNr}r0ÚextendÚFieldStorageClassÚ __class__r@r{r7r„rtror†rZr[rZfeedr=r(r‡r™r‹rŠr©)rlrArBrCZibrªÚklassZ first_liner}ÚparserZhdr_textÚdatarMr‡Úpartr"r"r#r�lsl             (zFieldStorage.read_multicCs4|jdkr| ¡| ¡n| ¡|j d¡dS)Nr)rŠÚ read_binaryr©Ú read_linesrur—)rlr"r"r#rޱs   zFieldStorage.read_singlei cCs–| ¡|_|j}|dkr’xx|dkr�|j t||jƒ¡}t|tƒsXt d|jt |ƒj fƒ‚|j t |ƒ7_ |svd|_P|j |¡|t |ƒ}qWdS)Nrz%s should return bytes, got %sra)Ú make_filerurŠr@r<ÚminÚbufsizer7r„r;rtror†rZr‹r&)rlZtodor±r"r"r#r³¼s    zFieldStorage.read_binarycCs@|jrtƒ|_|_ntƒ|_|_|jr4| ¡n| ¡dS)N)rˆrruÚ_FieldStorage__filerr…Úread_lines_to_outerboundaryÚread_lines_to_eof)rlr"r"r#r´Ís  zFieldStorage.read_linescCsv|jdk rF|j ¡t|ƒdkrF| ¡|_|j ¡}|j |¡d|_|jrZ|j |¡n|j | |j |j ¡¡dS)Niè) r¸ÚtellrZrµrur r&rˆr=r+rN)rlrer±r"r"r#Z__writeØs    zFieldStorage.__writecCs>x8|j d¡}|jt|ƒ7_|s,d|_P| |¡qWdS)Nira)r@r{r†rZr‹Ú_FieldStorage__write)rlrer"r"r#rºçs zFieldStorage.read_lines_to_eofc CsHd|j}|d}d}d}d}�x"|jdk rHd|jkrB|krHnnP|j d¡}|jt|ƒ7_|t|ƒ7}|s~d|_P|dkr’||}d}| d¡rÂ|rÂ| ¡}||kr²P||krÂd|_P|}|  d ¡ræd }|dd …}d}nL|  d ¡�rd }|dd…}d}n*|  d¡�r*d}|dd…}d }nd}d }|  ||¡q"WdS) Ns--ryTriraó r3s éþÿÿÿó F) r…r‡r@r{r†rZr‹Ú startswithÚrstripÚendswithr¼) rlÚ next_boundaryÚ last_boundaryZdelimÚlast_line_lfendZ_readreÚ strippedlineZodelimr"r"r#r¹ñsP $        z(FieldStorage.read_lines_to_outerboundarycCs”|jr |jrdSd|j}|d}d}xh|j d¡}|jt|ƒ7_|sRd|_P| d¡r‚|r‚| ¡}||krrP||kr‚d|_P| d¡}q(WdS)Ns--Tirar3r¿)r…r‹r@r{r†rZrÂr[)rlrÃrÄrÅrerÆr"r"r#r©#s&   zFieldStorage.skip_linescCs&|jrt d¡Stjd|jdd�SdS)Nzwb+zw+r%)r+Únewline)rˆÚtempfileZ TemporaryFiler+)rlr"r"r#rµ9s zFieldStorage.make_file)N)N) rorprqÚosrArmr‘r’r“rnr–r˜rœr r¡rOr•r¥r¦r¨rŒr­r�rŽr·r³r´r¼rºr¹r©rµr"r"r"r#r %s>+#   E   2cCsÂtdƒtƒtjt_yNtƒ}tƒtƒt|ƒt|ƒt ƒdd„}|fdd„}tdƒ|ƒWnt ƒYnXtdƒda y&tƒ}tƒtƒt|ƒt|ƒWnt ƒYnXdS) NzContent-type: text/htmlcSs tdƒdS)Nz,testing print_exception() -- italics?)Úexecr"r"r"r#r^lsztest..fcSs |ƒdS)Nr")r^r"r"r#Úgnsztest..gz9

What follows is a test, not an actual exception:

z*

Second try with a small maxlen...

é2) Úprintr4ÚstdoutÚstderrr rrrrrrr:)rAÚformr^rËr"r"r#r[s4    c Csx|dkrt ¡\}}}ddl}tƒtdƒ| ||¡| ||¡}tdt d |dd…¡¡t |d¡fƒ~dS)Nrz+

Traceback (most recent call last):

z
%s%s
rra) r4Úexc_infoÚ tracebackrÍÚ format_tbÚformat_exception_onlyÚhtmlrÚjoin)rtrkÚtbr‡rÒrsr"r"r#r‚s c Cs`t| ¡ƒ}tƒtdƒtdƒx*|D]"}tdt |¡dt ||¡ƒq(WtdƒtƒdS)Nz

Shell Environment:

z
z
z
z
)Úsortedr•rÍrÕr)rAr•rgr"r"r#r�s  "cCs¤t| ¡ƒ}tƒtdƒ|s&tdƒtdƒxb|D]Z}tdt |¡ddd�||}tdt tt|ƒƒ¡d ƒtd t t|ƒ¡ƒq4Wtd ƒtƒdS) Nz

Form Contents:

z

No form fields.z

z
ú:ú )r]zzz
z
)rØr•rÍrÕrÚreprrt)rÐr•rgrkr"r"r#r›s  c Csjtƒtdƒy t ¡}Wn6tk rP}ztdt t|ƒ¡ƒWdd}~XYnXtt |¡ƒtƒdS)Nz#

Current Working Directory:

zOSError:)rÍrÉÚgetcwdrrÕrÚstr)ÚpwdÚmsgr"r"r#r«s &cCs(tƒtdƒtƒttjƒtƒdS)Nz

Command Line Arguments:

)rÍr4r>r"r"r"r#r·s  cCs tdƒdS)NaØ

These environment variables could have been set:

  • AUTH_TYPE
  • CONTENT_LENGTH
  • CONTENT_TYPE
  • DATE_GMT
  • DATE_LOCAL
  • DOCUMENT_NAME
  • DOCUMENT_ROOT
  • DOCUMENT_URI
  • GATEWAY_INTERFACE
  • LAST_MODIFIED
  • PATH
  • PATH_INFO
  • PATH_TRANSLATED
  • QUERY_STRING
  • REMOTE_ADDR
  • REMOTE_HOST
  • REMOTE_IDENT
  • REMOTE_USER
  • REQUEST_METHOD
  • SCRIPT_NAME
  • SERVER_NAME
  • SERVER_PORT
  • SERVER_PROTOCOL
  • SERVER_ROOT
  • SERVER_SOFTWARE
In addition, HTTP headers sent by the server may be passed in the environment as well. Here are some common variable names:
  • HTTP_ACCEPT
  • HTTP_CONNECTION
  • HTTP_HOST
  • HTTP_PRAGMA
  • HTTP_REFERER
  • HTTP_USER_AGENT
)rÍr"r"r"r#r¾s'cCsFtdtdd�| dd¡}| dd¡}| dd ¡}|rB| d d ¡}|S) Nz1cgi.escape is deprecated, use html.escape insteadrG)Ú stacklevelr*z&úz>rWz")rrHrJ)r\Zquoter"r"r#rís     cCs(ddl}t|tƒrd}nd}| ||¡S)Nrs^[ -~]{0,200}[!-~]$z^[ -~]{0,200}[!-~]$)Úrer7r„Úmatch)r\rãZ _vb_patternr"r"r#r«ùs  r«Ú__main__)rr)rr)rIrJr*)NNNN)N)0Ú __version__ÚiorrrZcollections.abcrr4rÉZ urllib.parser?Z email.parserrZ email.messagerÚwarningsrrÕr�rÈÚ__all__rrr$r rr)rr:rAr r r rr_rr r rrrrrrrrr«ror"r"r"r#Ús`    # H    :'   /