
    f'                     h    	 d dl Zd dlmZ d dlZddlmZ  G d de      Z	d Z
y# e$ r d dlZY *w xY w)    N)
namedtuple   )Releasec                   r   e Zd ZdZd Zd Zed        Zed        Zed        Z	ed        Z
ed        Zed	        Zed
        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zd Zy)Packagez]
    A PyPI package.

    :param pypi_dict: A dictionary retrieved from the PyPI server.
    c                 ,    |d   | _         |d   | _        y )Ninforeleases)_package	_releases)self	pypi_dicts     G/var/www/cvtools/html/venv/lib/python3.12/site-packages/yarg/package.py__init__zPackage.__init__+   s    !&)":.    c                 8    dj                  | j                        S )Nz<Package {0}>)formatnamer   s    r   __repr__zPackage.__repr__/   s    %%dii00r   c                      | j                   d   S )ze
            >>> package = yarg.get('yarg')
            >>> package.name
            u'yarg'
        r   r   r   s    r   r   zPackage.name2   s     }}V$$r   c                      | j                   d   S )z
            >>> package = yarg.get('yarg')
            >>> package.url
            u'https://pypi.python.org/pypi/yarg'
        package_urlr   r   s    r   pypi_urlzPackage.pypi_url;        }}]++r   c                      | j                   d   S )z}
            >>> package = yarg.get('yarg')
            >>> package.summary
            u'Some random summary stuff'
        summaryr   r   s    r   r   zPackage.summaryD        }}Y''r   c                      | j                   d   S )z
            >>> package = yarg.get('yarg')
            >>> package.description
            u'A super long description, usually uploaded from the README'
        descriptionr   r   s    r   r!   zPackage.descriptionM   r   r   c                 b    d| j                   vs| j                   d   dk(  ry| j                   d   S )zz
            >>> package = yarg.get('yarg')
            >>> package.homepage
            u'https://kura.io/yarg/'
        	home_page Nr   r   s    r   homepagezPackage.homepageV   s3     t}},==%+}}[))r   c                 b    d| j                   vs| j                   d   dk(  ry| j                   d   S )z
            >>> package = yarg.get('yarg')
            >>> package.bugtracker
            u'https://github.com/kura/yarg/issues'
        bugtrack_urlr$   Nr   r   s    r   
bugtrackerzPackage.bugtrackerb   s3     $--/==(B.}}^,,r   c                 b    d| j                   vs| j                   d   dk(  ry| j                   d   S )z
            >>> package = yarg.get('yarg')
            >>> package.docs
            u'https://yarg.readthedocs.org/en/latest'
        docs_urlr$   Nr   r   s    r   docszPackage.docsn   s3     dmm+==$*}}Z((r   c                 b    t        dd      } || j                  d   | j                  d         S )z
            >>> package = yarg.get('yarg')
            >>> package.author
            Author(name=u'Kura', email=u'kura@kura.io')
        Author
name emailauthorauthor_emailr   emailr   r   )r   r/   s     r   r/   zPackage.authorz   s4     Hl34==2 MM.9; 	;r   c                 b    t        dd      } || j                  d   | j                  d         S )z
            >>> package = yarg.get('yarg')
            >>> package.maintainer
            Maintainer(name=u'Kura', email=u'kura@kura.io')
        
Maintainerr.   
maintainermaintainer_emailr1   r3   )r   r6   s     r   r6   zPackage.maintainer   s7      l;
t}}\: $.@ AC 	Cr   c                      | j                   d   S )zg
            >>> package = yarg.get('yarg')
            >>> package.license
            u'MIT'
        licenser   r   s    r   r9   zPackage.license   r   r   c                     t        | j                        dkD  r9| j                  D ])  }|j                  d      s|j                  d      d   c S  yy)z
            >>> package = yarg.get('yarg')
            >>> package.license_from_classifiers
            u'MIT License'
        r   License :: N)lenclassifiers
startswithsplitr   cs     r   license_from_classifiersz Package.license_from_classifiers   sP     t 1$%% /<<	*776?2../ %r   c                 `    | j                   d   }t        dd      } ||d   |d   |d         S )z
            >>> package = yarg.get('yarg')
            >>> package.downloads
            Downloads(day=50100, week=367941, month=1601938)  # I wish
        	downloads	Downloadszday week monthlast_day	last_week
last_month)dayweekmonth)r   r   )r   
_downloadsrF   s      r   rF   zPackage.downloads   sC     ]];/
{,<=	Z
3(5),79 	9r   c                      | j                   d   S )z
            >>> package = yarg.get('yarg')
            >>> package.classifiers
            [u'License :: OSI Approved :: MIT License',
             u'Programming Language :: Python :: 2.7',
             u'Programming Language :: Python :: 3.4']
        r?   r   r   s    r   r?   zPackage.classifiers   s     }}]++r   c                     t        j                  d      }| j                  D cg c]'  }|j                  |      r|j	                  d      d   ) c}S c c}w )a  
        Returns a list of Python version strings that
        the package has listed in :attr:`yarg.Release.classifiers`.

            >>> package = yarg.get('yarg')
            >>> package.python_versions
            [u'2.6', u'2.7', u'3.3', u'3.4']
        z,Programming Language \:\: Python \:\: \d\.\dr<   r=   )recompiler?   matchrA   )r   
version_rerC   s      r   python_versionszPackage.python_versions   sW     ZZ !9 :
-1-=-= (##A& # ( 	( (s   ,Ac                     | j                   D cg c]'  }|j                  d      r|j                  d      d   ) c}S c c}w )a  
        Returns a list of Python implementation strings that
        the package has listed in :attr:`yarg.Release.classifiers`.

            >>> package = yarg.get('yarg')
            >>> package.python_implementations
            [u'CPython', u'PyPy']
        z0Programming Language :: Python :: Implementationr<   r=   )r?   r@   rA   rB   s     r   python_implementationszPackage.python_implementations   sL     .2-=-= A<< !? @ # A 	A As   ,>c                      | j                   d   S )zs
            >>> package = yarg.get('yarg')
            >>> package.latest_release_id
            u'0.1.0'
        versionr   r   s    r   latest_release_idzPackage.latest_release_id   r   r   c                 <    | j                   }| j                  |      S )z
        A list of :class:`yarg.release.Release` objects for each file in the
        latest release.

            >>> package = yarg.get('yarg')
            >>> package.latest_release
            [<Release 0.1.0>, <Release 0.1.0>]
        )rZ   release)r   
release_ids     r   latest_releasezPackage.latest_release   s     ++
||J''r   c                 F    | j                   D ]  }|j                  dv s y y)a  
        Returns `True` if one of the :class:`yarg.release.Release` objects
        in the latest set of release files is `wheel` format. Returns
        `False` if not.

            >>> package = yarg.get('yarg')
            >>> package.has_wheel
            True
        )wheelbdist_wheelTFr^   package_typer   r\   s     r   	has_wheelzPackage.has_wheel   s0     ** 	G##'??	 r   c                 F    | j                   D ]  }|j                  dv s y y)a  
        Returns `True` if one of the :class:`yarg.release.Release` objects
        in the latest set of release files is `egg` format. Returns
        `False` if not.

            >>> package = yarg.get('yarg')
            >>> package.has_egg
            False
        )egg	bdist_eggTFrb   rd   s     r   has_eggzPackage.has_egg   s0     ** 	G##';;	 r   c                 F    | j                   D ]  }|j                  dv s y y)a  
        Returns `True` if one of the :class:`yarg.release.Release` objects
        in the latest set of release files is `source` format. Returns
        `False` if not.

            >>> package = yarg.get('yarg')
            >>> package.has_source
            True
        )sourcesdistTFrb   rd   s     r   
has_sourcezPackage.has_source  s0     ** 	G##'::	 r   c                    | j                   j                         D cg c]4  }t        | j                   |         dkD  r|| j                   |   d   d   f6 }}t        |d       D cg c]  }|d   	 c}S c c}w c c}w )z
            >>> package = yarg.get('yarg')
            >>> package.release_ids
            [u'0.0.1', u'0.0.5', u'0.1.0']
        r   upload_timec                     | d   S )Nr    )ks    r   <lambda>z%Package.release_ids.<locals>.<lambda>*  s
    ad r   )key)r   keysr>   sorted)r   rr   rs      r   release_idszPackage.release_ids   s     nn))+,DNN1%&* "1%m45 , , %QN;<!<<, =s   9A7(A<c                 x    || j                   vry| j                  |   D cg c]  }t        ||       c}S c c}w )aN  
        A list of :class:`yarg.release.Release` objects for each file in a
        release.

        :param release_id: A pypi release id.

            >>> package = yarg.get('yarg')
            >>> last_release = yarg.releases[-1]
            >>> package.release(last_release)
            [<Release 0.1.0>, <Release 0.1.0>]
        N)rx   r   r   )r   r]   rw   s      r   r\   zPackage.release,  s9     T---04z0JK1
A&KKKs   7N)__name__
__module____qualname____doc__r   r   propertyr   r   r   r!   r%   r(   r+   r/   r6   r9   rD   rF   r?   rU   rW   rZ   r^   re   ri   rm   rx   r\   rq   r   r   r   r   $   s   /1 % % , , ( ( , , 	* 	* 	- 	- 	) 	) ; ; C C ( ( 	/ 	/ 
9 
9 , , ( ( A A ( ( 
( 
(       	= 	=Lr   r   c                 >    t        t        j                  |             S )z
    Returns a :class:`yarg.release.Release` object from JSON content from the
    PyPI server.

    :param json_content: JSON encoded content from the PyPI server.
    )r   jsonloads)json_contents    r   json2packager   =  s     4::l+,,r   )
simplejsonr   ImportErrorcollectionsr   rQ   r\   r   objectr   r   rq   r   r   <module>r      sC   4 # 	 VLf VLr-C	  s   % 	11