‡Æ
Nö9c       sÜ   d  Z  d k Z d k Z d k Z d k Z y d k Z Wn e Z n Xd e f d „  ƒ  YZ e Z	 d Z
 d Z d Z d Z d Z d	 Z d
 Z d Z d „  Z d f  d „  ƒ  YZ d f  d „  ƒ  YZ d e f d „  ƒ  YZ d S(   s   Read and write ZIP files.Ns
   BadZipfilec      s   RS(   N(    (    s$   /mit/python/lib/python2.0/zipfile.pys
   BadZipfile s    i    i   s   <4s4H2lHs   PKs   <4s4B4H3l5H2ls   PKs   <4s2B4H3l2Hs   PKc    sv   yh t  |  d ƒ } | i d d ƒ | i ƒ  } | i ƒ  | d d !d j o | d d j o d Sn Wn n Xd	 S(
   s   Quickly see if file is a ZIP file by checking the magic number.

    Will not accept a ZIP archive with an ending comment.
    s   rbi   i   i    i   s   PKs     i   N(   s   opens   filenames   fpins   seeks   reads   endrecs   close(   s   filenames   fpins   endrecs$   /mit/python/lib/python2.0/zipfile.pys
   is_zipfile s     
&s   ZipInfoc      s2   d  Z  d d d d d d d f d „ Z d „  Z RS(   s>   Class with attributes describing each file in the ZIP archive.c    sy   | |  _  | |  _ t |  _ d |  _ d |  _ d |  _ d |  _ d |  _	 d |  _
 d |  _ d |  _ d |  _ d |  _ d  S(   Ns    i    i   (   s   filenames   selfs	   date_times
   ZIP_STOREDs   compress_types   comments   extras   create_systems   create_versions   extract_versions   reserveds	   flag_bitss   volumes   internal_attrs   external_attr(   s   selfs   filenames	   date_times$   /mit/python/lib/python2.0/zipfile.pys   __init__2 s    												s   NoNamei¼  i   i    c    s÷   |  i } | d d d >| d d >B| d B} | d d >| d	 d >B| d d B} |  i d
 @o d } } } n |  i } |  i } |  i } t	 i
 t t |  i |  i |  i |  i | | | | | t |  i ƒ t |  i ƒ ƒ } | |  i |  i Sd S(   s'   Return the per-file header as a string.i    i¼  i	   i   i   i   i   i   i   i   N(   s   selfs	   date_times   dts   dosdates   dostimes	   flag_bitss   CRCs   compress_sizes	   file_sizes   structs   packs   structFileHeaders   stringFileHeaders   extract_versions   reserveds   compress_types   lens   filenames   extras   header(   s   selfs   dts   dosdates   dostimes   CRCs   compress_sizes	   file_sizes   headers$   /mit/python/lib/python2.0/zipfile.pys
   FileHeaderH s     	&&			(   s   __doc__s   __init__s
   FileHeader(    s$   /mit/python/lib/python2.0/zipfile.pys   ZipInfo/ s    !s   ZipFilec      s‰   d  Z  d e d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d	 „  Z	 d
 „  Z
 e e d „ Z d „  Z d „  Z d „  Z RS(   s?   Class with methods to open, read, write, close, list zip files.c    sv  | t j o n0 | t j o t o t d ‚ n n
 t d ‚ d |  _ h  |  _ g  |  _ | |  _  | |  _	 | d |  _
 } | d j o  t | d ƒ |  _ |  i ƒ  nÈ | d j o t | d ƒ |  _ n¥ | d j oŽ t | d	 ƒ } |  _ | i d
 d ƒ | i ƒ  } | d d !t j o | d d j o! |  i ƒ  | i |  i d ƒ n | i d d ƒ n
 t d ‚ d S(   s>   Open the ZIP file with mode read "r", write "w" or append "a".s.   Compression requires the (missing) zlib modules(   That compression method is not supportedi    s   rs   rbs   ws   wbs   as   r+bi   i   i   s     s   Mode must be "r", "w" or "a"N(   s   compressions
   ZIP_STOREDs   ZIP_DEFLATEDs   zlibs   RuntimeErrors   selfs   debugs
   NameToInfos   filelists   filenames   modes   keys   opens   fps   _GetContentss   seeks   reads   endrecs   stringEndArchives	   start_dir(   s   selfs   filenames   modes   compressions   keys   fps   endrecs$   /mit/python/lib/python2.0/zipfile.pys   __init___ s6     						&
s   rc    s¶  |  i } | i d d ƒ | i ƒ  d } | i d ƒ } | d d !t j p | d d j o t d ‚ n t	 i
 t | ƒ } |  i d j o	 | GHn | d } | d	 } | d | } | | } |  i d j o d
 G| G| G| GHn | | |  _ | i |  i d ƒ d } xù| | j  oë| i d ƒ }	 | d } |	 d d !t j o t d ‚ n t	 i
 t |	 ƒ }	 |  i d j o	 |	 GHn | i |	 d ƒ }
 t |
 ƒ } | i |	 d ƒ | _ | i |	 d ƒ | _ | |	 d |	 d |	 d } |	 d | | _ | i d |	 d |	 d | _ |	 d d !\ | _ | _ | _ | _ | _  | _! } } | _$ | _% | _& |	 d d !\ | _' | _( | _) | d ?d | d ?d @| d @| d ?| d ?d @| d @d f | _* |  i+ i, | ƒ | |  i- | i <|  i d j o d G| GHn qWx¥ |  i+ d r˜ } | i | i d ƒ | i d ƒ } | d d !t0 j o t d ‚ n t	 i
 t1 | ƒ } | i | d ƒ } | | i j o t3 d | i | f ‚ n qWd S(   s/   Read in the table of contents for the ZIP file.i   i   i    i   s     s.   File is not a zip file, or ends with a commenti   i   i   s   given, inferred, offseti.   s&   Bad magic number for central directoryi   i   i   i   i   i   i	   i¼  i   i   i?   s   totals    Bad magic number for file headeri
   s3   File name in directory "%s" and header "%s" differ.N(4   s   selfs   fps   seeks   tells   filesizes   reads   endrecs   stringEndArchives
   BadZipfiles   structs   unpacks   structEndArchives   debugs   size_cds	   offset_cds   xs   concats	   start_dirs   totals   centdirs   stringCentralDirs   structCentralDirs   filenames   ZipInfos   extras   comments   header_offsets   file_offsets   create_versions   create_systems   extract_versions   reserveds	   flag_bitss   compress_types   ts   ds   CRCs   compress_sizes	   file_sizes   volumes   internal_attrs   external_attrs	   date_times   filelists   appends
   NameToInfos   datas   fheaders   stringFileHeaders   structFileHeaders   fnames   RuntimeError(   s   selfs   fps   filesizes   endrecs   size_cds	   offset_cds   xs   concats   totals   centdirs   filenames   ts   ds   datas   fheaders   fnames$   /mit/python/lib/python2.0/zipfile.pys   _GetContents‚ sh     	&	


 
	 IC c    s4   g  } x# |  i d r } | i | i ƒ q W| Sd S(   s+   Return a list of file names in the archive.i    N(   s   ls   selfs   filelists   datas   appends   filename(   s   selfs   ls   datas$   /mit/python/lib/python2.0/zipfile.pys   namelist¿ s      c    s   |  i Sd S(   sJ   Return a list of class ZipInfo instances for files in the
        archive.N(   s   selfs   filelist(   s   selfs$   /mit/python/lib/python2.0/zipfile.pys   infolistÆ s     c    sQ   d d d d f GHx8 |  i d r+ } d | i } d | i | | i f GHq Wd S(	   s+   Print a table of contents for the zip file.s   %-46s %19s %12ss	   File Names   Modified    s   Sizei    s   %d-%02d-%02d %02d:%02d:%02ds   %-46s %s %12dN(   s   selfs   filelists   zinfos	   date_times   dates   filenames	   file_size(   s   selfs   zinfos   dates$   /mit/python/lib/python2.0/zipfile.pys   printdirË s      c    s?   x8 |  i d r+ } y |  i | i ƒ Wn | i Sn Xq Wd S(   s%   Read all the files and check the CRC.i    N(   s   selfs   filelists   zinfos   reads   filename(   s   selfs   zinfos$   /mit/python/lib/python2.0/zipfile.pys   testzipÒ s      c    s   |  i | Sd S(   s,   Return the instance of ZipInfo given 'name'.N(   s   selfs
   NameToInfos   name(   s   selfs   names$   /mit/python/lib/python2.0/zipfile.pys   getinfoÚ s     c    so  |  i d d f j o t d ‚ n |  i o t d ‚ n |  i | ƒ } |  i i ƒ  } |  i i	 | i
 d ƒ |  i i | i ƒ } |  i i	 | d ƒ | i t j o n | i t j of t o t d ‚ n t i d ƒ } | i | ƒ } | i d ƒ | i ƒ  } | o | | } n n t d	 | i | f ‚ t i | ƒ } | | i j o t d
 | ‚ n | Sd S(   s)   Return file bytes (as a string) for name.s   rs   as   read() requires mode "r" or "a"s3   Attempt to read ZIP archive that was already closedi    s1   De-compression requires the (missing) zlib modulei   s   Zs-   Unsupported compression method %d for file %ss   Bad CRC-32 for file %sN(   s   selfs   modes   RuntimeErrors   fps   getinfos   names   zinfos   tells   fileposs   seeks   file_offsets   reads   compress_sizes   bytess   compress_types
   ZIP_STOREDs   ZIP_DEFLATEDs   zlibs   decompressobjs   dcs
   decompresss   flushs   exs
   BadZipfiles   binasciis   crc32s   crcs   CRC(   s   selfs   names   zinfos   fileposs   bytess   dcs   exs   crcs$   /mit/python/lib/python2.0/zipfile.pys   readÞ s2     c    s»   |  i i | i ƒ o |  i o d G| i GHn n |  i d d f j o t d ‚ n |  i o t d ‚ n | i	 t
 j o t o t d ‚ n | i	 t t
 f j o t d ‚ n d S(	   s6   Check for errors before writing a file to the archive.s   Duplicate name:s   ws   as    write() requires mode "w" or "a"s4   Attempt to write ZIP archive that was already closeds.   Compression requires the (missing) zlib modules(   That compression method is not supportedN(   s   selfs
   NameToInfos   has_keys   zinfos   filenames   debugs   modes   RuntimeErrors   fps   compress_types   ZIP_DEFLATEDs   zlibs
   ZIP_STORED(   s   selfs   zinfos$   /mit/python/lib/python2.0/zipfile.pys   _writecheck s     
c    s{  t  i | ƒ } t i | d ƒ } | d d !} | t	 j o t
 | | ƒ } n t
 | | ƒ } | d d >| _ | t	 j o |  i | _ n
 | | _ |  i | ƒ t | d ƒ } d | _ |  i i ƒ  | _ |  i i | i ƒ  ƒ |  i i ƒ  | _ d }	 d }
 d } | i t j o  t i t i t i  d ƒ } n t	 } xˆ d o€ | i" d d ƒ } | o Pn | t$ | ƒ } t% i& | |	 ƒ }	 | o# | i' | ƒ } |
 t$ | ƒ }
 n |  i i | ƒ q?W| i( ƒ  | o9 | i) ƒ  } |
 t$ | ƒ }
 |  i i | ƒ |
 | _ n
 | | _ |	 | _ | | _ |  i i t* i+ d	 | i | i | i ƒ ƒ |  i, i- | ƒ | |  i. | i <d
 S(   sL   Put the bytes from filename into the archive under the name
        arcname.i   i    i   i   s   rbi   i   i   s   <lllN(/   s   oss   stats   filenames   sts   times	   localtimes   mtimes	   date_times   arcnames   Nones   ZipInfos   zinfos   external_attrs   compress_types   selfs   compressions   _writechecks   opens   fps	   flag_bitss   tells   header_offsets   writes
   FileHeaders   file_offsets   CRCs   compress_sizes	   file_sizes   ZIP_DEFLATEDs   zlibs   compressobjs   Z_DEFAULT_COMPRESSIONs   DEFLATEDs   cmprs   reads   bufs   lens   binasciis   crc32s   compresss   closes   flushs   structs   packs   filelists   appends
   NameToInfo(   s   selfs   filenames   arcnames   compress_types   sts   mtimes	   date_times   zinfos   fps   CRCs   compress_sizes	   file_sizes   cmprs   bufs$   /mit/python/lib/python2.0/zipfile.pys   writes`     		 
			c    s=  |  i | ƒ t | ƒ | _ t i | ƒ | _ | i	 t
 j oH t i t i t i d ƒ } | i | ƒ | i ƒ  } t | ƒ | _ n | i | _ |  i i ƒ  | _ |  i i | i ƒ  ƒ |  i i ƒ  | _ |  i i | ƒ | i d @o/ |  i i t i d | i | i | i ƒ ƒ n |  i i | ƒ | |  i | i <d S(   sK   Write a file into the archive.  The contents is the string
        'bytes'.i   i   s   <lllN(    s   selfs   _writechecks   zinfos   lens   bytess	   file_sizes   binasciis   crc32s   CRCs   compress_types   ZIP_DEFLATEDs   zlibs   compressobjs   Z_DEFAULT_COMPRESSIONs   DEFLATEDs   cos   compresss   flushs   compress_sizes   fps   tells   header_offsets   writes
   FileHeaders   file_offsets	   flag_bitss   structs   packs   filelists   appends
   NameToInfos   filename(   s   selfs   zinfos   bytess   cos$   /mit/python/lib/python2.0/zipfile.pys   writestrIs&     c    s(   |  i o |  i i ƒ  t |  _ n d S(   s2   Call the "close()" method in case the user forgot.N(   s   selfs   fps   closes   None(   s   selfs$   /mit/python/lib/python2.0/zipfile.pys   __del__as     
c 
   sØ  |  i d d f j o¨d } |  i i ƒ  } xB|  i d r5} | d } | i } | d d d >| d d >B| d B} | d	 d
 >| d d >B| d d B} t i t t | i | i | i | i | i | i | | | i | i | i t | i ƒ t | i ƒ t | i ƒ d | i | i | i ƒ } |  i i! | ƒ |  i i! | i ƒ |  i i! | i ƒ |  i i! | i ƒ q7 W|  i i ƒ  } t i t# t$ d d | | | | | d ƒ	 }	 |  i i! |	 ƒ n |  i i& ƒ  t' |  _ d S(   sJ   Close the file, and for mode "w" and "a" write the ending
        records.s   ws   ai    i   i¼  i	   i   i   i   i   i   N((   s   selfs   modes   counts   fps   tells   pos1s   filelists   zinfos	   date_times   dts   dosdates   dostimes   structs   packs   structCentralDirs   stringCentralDirs   create_versions   create_systems   extract_versions   reserveds	   flag_bitss   compress_types   CRCs   compress_sizes	   file_sizes   lens   filenames   extras   comments   internal_attrs   external_attrs   header_offsets   centdirs   writes   pos2s   structEndArchives   stringEndArchives   endrecs   closes   None(
   s   selfs   counts   pos1s   zinfos   dts   dosdates   dostimes   centdirs   pos2s   endrecs$   /mit/python/lib/python2.0/zipfile.pys   closegs8      
	&&		$(   s   __doc__s
   ZIP_STOREDs   __init__s   _GetContentss   namelists   infolists   printdirs   testzips   getinfos   reads   _writechecks   Nones   writes   writestrs   __del__s   close(    s$   /mit/python/lib/python2.0/zipfile.pys   ZipFile\ s    #	=						"	8		s	   PyZipFilec      s   d  Z  d d „ Z d „  Z RS(   sD   Class to create ZIP archives with Python library files and packages.c    s  t  i i | ƒ \ } } t  i i | ƒ opt  i i | d ƒ } t  i i	 | ƒ oŒ| o d | | f } n | } |  i o d G| Gd G| GHn |  i | d d !| ƒ \ } } |  i o d G| GHn |  i | | ƒ t  i | ƒ } | i d ƒ xâ | d rØ }	 t  i i | |	 ƒ }
 t  i i |	 ƒ \ } } t  i i |
 ƒ o: t  i i	 t  i i |
 d ƒ ƒ o |  i |
 | ƒ n nY | d j oK |  i |
 d d !| ƒ \ } } |  i o d G| GHn |  i | | ƒ n qÿ Wn¹ |  i o d	 G| GHn xž t  i | ƒ d r‹ }	 t  i i | |	 ƒ }
 t  i i |	 ƒ \ } } | d j oK |  i |
 d d !| ƒ \ } } |  i o d G| GHn |  i | | ƒ n qWng | d d j o t d
 ‚ n |  i | d d !| ƒ \ } } |  i o d G| GHn |  i | | ƒ d S(   s,  Add all files from "pathname" to the ZIP archive.

        If pathname is a package directory, search the directory and
        all package subdirectories recursively for all *.py and enter
        the modules into the archive.  If pathname is a plain
        directory, listdir *.py and enter all modules.  Else, pathname
        must be a Python *.py file and the module will be put into the
        archive.  Added modules are always module.pyo or module.pyc.
        This method will compile the module.py into module.pyc if
        necessary.
        s   __init__.pys   %s/%ss   Adding package ins   asi    i   s   Addings   .pys   Adding files from directorys.   Files added with writepy() must end with ".py"s   Adding fileN(   s   oss   paths   splits   pathnames   dirs   names   isdirs   joins   initnames   isfiles   basenames   selfs   debugs   _get_codenames   fnames   arcnames   writes   listdirs   dirlists   removes   filenames   splitexts   roots   exts   writepys   RuntimeError(   s   selfs   pathnames   basenames   dirs   names   initnames   fnames   arcnames   dirlists   filenames   paths   roots   exts$   /mit/python/lib/python2.0/zipfile.pys   writepyŠs^     
 
	 "

 
 
s    c 	   s  | d } | d } | d } t i i | ƒ o$ t i | ƒ d t i | ƒ d j o
 | } n| t i i | ƒ p$ t i | ƒ d t i | ƒ d j  o: d k	 } |  i o d G| GHn | i | | ƒ | } n | } t i i | ƒ d } | o d | | f } n | | f Sd S(	   s   Return (filename, archivename) for the path.

        Given a module name path, return the correct file path and
        archive name, compiling if necessary.  For example, given
        /python/lib/string, return (/python/lib/string.pyc, string).
        s   .pys   .pycs   .pyoi   Ns	   Compilingi   s   %s/%s(   s   pathnames   file_pys   file_pycs   file_pyos   oss   paths   isfiles   stats   fnames
   py_compiles   selfs   debugs   compiles   splits   archivenames   basename(	   s   selfs   pathnames   basenames   file_pys   file_pycs   file_pyos   fnames
   py_compiles   archivenames$   /mit/python/lib/python2.0/zipfile.pys   _get_codenameËs"     


:
;	

(   s   __doc__s   writepys   _get_codename(    s$   /mit/python/lib/python2.0/zipfile.pys	   PyZipFile‡s    A(   s   __doc__s   structs   oss   times   binasciis   zlibs   Nones	   Exceptions
   BadZipfiles   errors
   ZIP_STOREDs   ZIP_DEFLATEDs   structEndArchives   stringEndArchives   structCentralDirs   stringCentralDirs   structFileHeaders   stringFileHeaders
   is_zipfiles   ZipInfos   ZipFiles	   PyZipFile(    s$   /mit/python/lib/python2.0/zipfile.pys   ? s*   	
	-ÿ ,