ó
!{[c           @   sg  d  Z  y d d l m Z Wn! e k
 r= d d l m Z n Xd d l m Z d d l m Z d d l Z d d l	 Z	 d d l
 Z
 d d l Z d d l m Z d d „ Z d	 e f d
 „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ i e d 6e d 6e d 6e d 6e d 6Z d d „ Z d S(   sp  Print the metadata for one or more Python package distributions.

Usage:  %prog [options] path+

Each 'path' entry can be one of the following:

o a source distribution:  in this case, 'path' should point to an existing
  archive file (.tar.gz, .tar.bz2, or .zip) as generated by 'setup.py sdist'.

o a binary distribution:  in this case, 'path' should point to an existing
  archive file (.egg)

o a "develop" checkout:  in this case,  'path' should point to a directory
  initialized via 'setup.py develop' (under setuptools).

o an installed package:  in this case, 'path' should be the importable name
  of the package.
iÿÿÿÿ(   t   ConfigParser(   t   OrderedDict(   t   writerNi   (   t   get_metadatac         C   s  t  j d t ƒ } | j d d d d  d d ƒ| j d d d	 d
 d d d d ƒ| j d d d	 d d d ƒ| j d d	 d d d d d d d d d ƒ| j d d d	 d d d d t d d ƒ| j d d d	 d d d d d  ƒ| j d! d	 d d d d d" d d# ƒ| j d$ d	 d% d d& d d' d d( ƒ| j d) d	 d* d d& d d+ d d, ƒ| j d- d	 d d d d d. d d/ ƒ| j d0 d	 d d d d d1 d d2 ƒ| j d3 d	 d d d d d4 d d5 ƒ| j |  ƒ \ } }  t |  ƒ d6 k rö| j d7 ƒ n
 | |  f Sd  S(8   Nt   usages   -ms   --metadata-versiont   defaultt   helps   Override metadata versions   -fs   --fieldt   destt   fieldst   actiont   appends$   Specify an output field (repeatable)s   -ds   --download-url-prefixt   download_url_prefixs   Download URL prefixs   --simplet   outputt   store_constt   constt   simples    Output as simple key-value pairss   -ss   --skipt   skipt
   store_trues$   Skip missing values in simple outputs   -Ss	   --no-skipt   store_falses*   Don't skip missing values in simple outputs   --singlet   singles   Output delimited valuess   --item-delimt
   item_delimt   storet   ;s*   Delimiter for fields in single-line outputs   --sequence-delimt   sequence_delimt   ,s!   Delimiter for multi-valued fieldss   --csvt   csvs   Output as CSVs   --init   inis   Output as INIs   --jsont   jsons   Output as JSONi    s3   Pass one or more files or directories as arguments.(	   t   optparset   OptionParsert   __doc__t
   add_optiont   Nonet   Truet
   parse_argst   lent   error(   t   argst   parsert   options(    (    s2   lib/python2.7/site-packages/pkginfo/commandline.pyt   _parse_options!   sL    t   Basec           B   s    e  Z d Z d  „  Z d „  Z RS(   c         C   s   | j  r | j  |  _ n  d  S(   N(   R   t   _fields(   t   selfR'   (    (    s2   lib/python2.7/site-packages/pkginfo/commandline.pyt   __init__e   s    	c         C   s   d  S(   N(    (   R+   (    (    s2   lib/python2.7/site-packages/pkginfo/commandline.pyt   finishi   s    N(   t   __name__t
   __module__R    R*   R,   R-   (    (    (    s2   lib/python2.7/site-packages/pkginfo/commandline.pyR)   c   s   	t   Simplec           B   s   e  Z d  „  Z d „  Z RS(   c         C   s&   t  t |  ƒ j | ƒ | j |  _ d  S(   N(   t   superR0   R,   R   t   _skip(   R+   R'   (    (    s2   lib/python2.7/site-packages/pkginfo/commandline.pyR,   m   s    c         C   sg   x` |  j  p t | ƒ D]I } t | | ƒ } |  j sM | d  k	 r | d k r d | | f GHq q Wd  S(   Ns   %s: %s(    (   R*   t   listt   getattrR2   R    (   R+   t   metat   fieldt   value(    (    s2   lib/python2.7/site-packages/pkginfo/commandline.pyt   __call__q   s    "(   R.   R/   R,   R8   (    (    (    s2   lib/python2.7/site-packages/pkginfo/commandline.pyR0   l   s   	t
   SingleLinec           B   s    e  Z d Z d  „  Z d „  Z RS(   c         C   s2   t  t |  ƒ j | ƒ | j |  _ | j |  _ d  S(   N(   R1   R9   R,   R   t   _item_delimR   t   _sequence_delim(   R+   R'   (    (    s2   lib/python2.7/site-packages/pkginfo/commandline.pyR,   y   s    c         C   s¢   |  j  d  k r! t | ƒ |  _  n  g  } xc |  j  D]X } t | | ƒ } t | t t f ƒ rp |  j j | ƒ } n t | ƒ } | j	 | ƒ q1 W|  j
 j | ƒ GHd  S(   N(   R*   R    R3   R4   t
   isinstancet   tupleR;   t   joint   strR
   R:   (   R+   R5   t   valuesR6   R7   (    (    s2   lib/python2.7/site-packages/pkginfo/commandline.pyR8   ~   s    N(   R.   R/   R    R*   R,   R8   (    (    (    s2   lib/python2.7/site-packages/pkginfo/commandline.pyR9   w   s   	t   CSVc           B   s    e  Z d Z d  „  Z d „  Z RS(   c         C   s&   t  t |  ƒ j | ƒ | j |  _ d  S(   N(   R1   RA   R,   R   R;   (   R+   R'   (    (    s2   lib/python2.7/site-packages/pkginfo/commandline.pyR,      s    c         C   sÛ   |  j  d  k r! t | ƒ |  _  n  |  j  } |  j d  k r^ t t j ƒ |  _ |  j j | ƒ n  g  } x` | D]X } t | | ƒ } t	 | t
 t f ƒ rª |  j j | ƒ } n t | ƒ } | j | ƒ qk W|  j j | ƒ d  S(   N(   R*   R    R3   t   _writerR   t   syst   stdoutt   writerowR4   R<   R=   R;   R>   R?   R
   (   R+   R5   R   R@   R6   R7   (    (    s2   lib/python2.7/site-packages/pkginfo/commandline.pyR8   ‘   s    	N(   R.   R/   R    RB   R,   R8   (    (    (    s2   lib/python2.7/site-packages/pkginfo/commandline.pyRA   ‹   s   	t   INIc           B   s)   e  Z d Z d  „  Z d „  Z d „  Z RS(   c         C   s&   t  t |  ƒ j | ƒ t ƒ  |  _ d  S(   N(   R1   RF   R,   R    t   _parser(   R+   R'   (    (    s2   lib/python2.7/site-packages/pkginfo/commandline.pyR,   ¤   s    c         C   sÇ   | j  } | j } d | | f } |  j j | ƒ rG t d | ƒ ‚ n  |  j j | ƒ xi |  j pl t | ƒ D]R } t | | ƒ } t	 | t
 t f ƒ r© d j | ƒ } n  |  j j | | | ƒ qm Wd  S(   Ns   %s-%ss   Duplicate distribution: %ss   
	(   t   namet   versionRG   t   has_sectiont
   ValueErrort   add_sectionR*   R3   R4   R<   R=   R>   t   set(   R+   R5   RH   RI   t   sectionR6   R7   (    (    s2   lib/python2.7/site-packages/pkginfo/commandline.pyR8   ¨   s    		c         C   s   |  j  j t j ƒ d  S(   N(   RG   t   writeRC   RD   (   R+   (    (    s2   lib/python2.7/site-packages/pkginfo/commandline.pyR-   µ   s    N(   R.   R/   R    R*   R,   R8   R-   (    (    (    s2   lib/python2.7/site-packages/pkginfo/commandline.pyRF   ¢   s   		t   JSONc           B   s)   e  Z d Z d  „  Z d „  Z d „  Z RS(   c         C   s&   t  t |  ƒ j | ƒ t ƒ  |  _ d  S(   N(   R1   RP   R,   R   t   _mapping(   R+   R'   (    (    s2   lib/python2.7/site-packages/pkginfo/commandline.pyR,   º   s    c         C   s¥   |  j  d  k r! t | ƒ |  _  n  x} |  j  D]r } t | | ƒ } | rk t | t t f ƒ rk t | ƒ } n  | |  j k r t d t	 ƒ  ƒ ‚ n  | |  j | <q+ Wd  S(   Ns   Duplicate field: %(field)r(
   R*   R    R3   R4   R<   R=   R?   RQ   RK   t   locals(   R+   R5   R6   R7   (    (    s2   lib/python2.7/site-packages/pkginfo/commandline.pyR8   ¾   s    c         C   s    t  j |  j t j d d ƒd  S(   Nt   indenti   (   R   t   dumpRQ   RC   RD   (   R+   (    (    s2   lib/python2.7/site-packages/pkginfo/commandline.pyR-   É   s    N(   R.   R/   R    R*   R,   R8   R-   (    (    (    s2   lib/python2.7/site-packages/pkginfo/commandline.pyRP   ¸   s   		R   R   R   R   R   c         C   sÇ   t  |  ƒ \ } } t | d d ƒ } t | | ƒ } x‚ | D]z } t | | j ƒ } | d k re q; n  | j r« | j d k r« t j	 j
 | ƒ } d | j | f | _ q« n  | | ƒ q; W| j ƒ  d S(   s!   Entry point for pkginfo tool
    R   R   s   %s/%sN(   R(   R4   t   _FORMATTERSR   t   metadata_versionR    R   t   download_urlt   ost   patht   basenameR-   (   R%   R'   t   pathst   formatt	   formatterRY   R5   t   filename(    (    s2   lib/python2.7/site-packages/pkginfo/commandline.pyt   mainÔ   s    		(   R   t   configparserR    t   ImportErrort   collectionsR   R   R   R   R   RX   RC   t   utilsR   R    R(   t   objectR)   R0   R9   RA   RF   RP   RU   R_   (    (    (    s2   lib/python2.7/site-packages/pkginfo/commandline.pyt   <module>   s2   B	
