
    f                     \    d dl m Z  d dlZd dlZddlmZ d Z	 d
dZ	 ddZ G d d	e	      Z
y)    )datetimeN   )	HTTPErrorc                    t        j                  |       }|j                  dk\  r!t        |j                  |j                        t        |j                  d      rBt        j                  j                  j                  |j                  j                               }n3t        j                  j                  j                  |j                        }|j                  d      }|j                  d      S )zE
    Query the PyPI RSS feed and return a list
    of XML items.
    i,  )status_codereasondecodechannelitem)requestsgetr   r   r   hasattrcontentxmletreeElementTree
fromstringr	   findfindall)pypi_serverresponsetreer
   s       E/var/www/cvtools/html/venv/lib/python3.12/site-packages/yarg/parse.py_getr   !   s    
 ||K(Hs"H$8$8'0 	0x*yy$$//0@0@0G0G0IJyy$$//0@0@Aii	"G??6""    c                     t        |       }g }|D ]h  }|d   j                  j                         d   |d   j                  |d   j                  |d   j                  d}|j                  t	        |             j |S )a  
    Constructs a request to the PyPI server and returns a list of
    :class:`yarg.parse.Package`.

    :param pypi_server: (option) URL to the PyPI server.

        >>> import yarg
        >>> yarg.newest_packages()
        [<Package yarg>, <Package gray>, <Package ragy>]
    r   r         )nameurldescriptiondater   textsplitappendPackage)r   itemsir   i_dicts        r   newest_packagesr+   2   s|     E
A "q',,,,.q1a!%aq',,( 	
!" Hr   c                     t        |       }g }|D ]k  }|d   j                  j                         \  }}|||d   j                  |d   j                  |d   j                  d}|j                  t	        |             m |S )a  
    Constructs a request to the PyPI server and returns a list of
    :class:`yarg.parse.Package`.

    :param pypi_server: (option) URL to the PyPI server.

        >>> import yarg
        >>> yarg.latest_updated_packages()
        [<Package yarg>, <Package gray>, <Package ragy>]
    r   r      r   )r   versionr    r!   r"   r#   )r   r(   r)   r   r   r.   r*   s          r   latest_updated_packagesr/   I   s     E
A "Q**,g$a!%aq',,	(
 	
!" Hr   c                   l    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y	)
r'   z
    A PyPI package generated from the RSS feed information.

    :param pypi_dict: A dictionary retrieved from the PyPI server.
    c                     || _         y )N_content)self	pypi_dicts     r   __init__zPackage.__init__i   s	    !r   c                 8    dj                  | j                        S )Nz<Package {0}>)formatr   r4   s    r   __repr__zPackage.__repr__l   s    %%dii00r   c                      | j                   d   S )
            >>> package = yarg.newest_packages()[0]
            >>> package.name
            u'yarg'
            >>> package = yarg.latest_updated_packages()[0]
            >>> package.name
            u'yarg'
        r   r2   r9   s    r   r   zPackage.nameo   s     }}V$$r   c                 >    d| j                   vry| j                   d   S )r<   r.   Nr2   r9   s    r   r.   zPackage.version{   s"     DMM)}}Y''r   c                      | j                   d   S )a  
        This is only available for :meth:`yarg.latest_updated_packages`, for
        :meth:`yarg.newest_packages` will return `None`

            >>> package = yarg.latest_updated_packages()[0]
            >>> package.url
            u'http://pypi.python.org/pypi/yarg'
        r    r2   r9   s    r   r    zPackage.url   s     }}U##r   c                 H    t        j                  | j                  d   d      S )a  
            >>> package = yarg.newest_packages()[0]
            >>> package.date
            datetime.datetime(2014, 8, 9, 8, 40, 20)
            >>> package = yarg.latest_updated_packages()[0]
            >>> package.date
            datetime.datetime(2014, 8, 9, 8, 40, 20)
        r"   z%d %b %Y %H:%M:%S %Z)r   strptimer3   r9   s    r   r"   zPackage.date   s%       v!6!79 	9r   c                      | j                   d   S )a  
            >>> package = yarg.newest_packages()[0]
            >>> package.description
            u'Some random summary stuff'
            >>> package = yarg.latest_updated_packages()[0]
            >>> package.description
            u'Some random summary stuff'
        r!   r2   r9   s    r   r!   zPackage.description   s     }}]++r   N)__name__
__module____qualname____doc__r6   r:   propertyr   r.   r    r"   r!    r   r   r'   r'   b   su    "1 	% 	% ( ( 	$ 	$ 
9 
9 	, 	,r   r'   )z3https://pypi.python.org/pypi?%3Aaction=packages_rss)z*https://pypi.python.org/pypi?%3Aaction=rss)r   xml.etree.ElementTreer   r   
exceptionsr   r   r+   r/   objectr'   rG   r   r   <module>rK      s<   2    !#$ J0 A2J,f J,r   