U
    +|jŽ  ã                   @   s~   d dl Z d dlZd dlmZmZmZmZmZ d dlm	Z	m
Z
 d dlmZ ee	e
f Ze  e¡ZG dd„ dƒZG dd„ dƒZdS )	é    N)Ú	ContainerÚIteratorÚListÚOptionalÚUnion)ÚLegacyVersionÚVersion)Ústdlib_pkgsc                   @   sl   e Zd Zedd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZed	d
„ ƒZedd„ ƒZ	edd„ ƒZ
edd„ ƒZdS )ÚBaseDistributionc                 C   s
   t ƒ ‚dS )a  Where the distribution is loaded from.

        A string value is not necessarily a filesystem path, since distributions
        can be loaded from other sources, e.g. arbitrary zip archives. ``None``
        means the distribution is created in-memory.
        N©ÚNotImplementedError©Úself© r   úcC:\Users\snmko\Desktop\web_content\django_cbt\venv\Lib\site-packages\pip/_internal/metadata/base.pyÚlocation   s    	zBaseDistribution.locationc                 C   s
   t ƒ ‚dS )z?Value of "Metadata-Version:" in the distribution, if available.Nr   r   r   r   r   Úmetadata_version   s    z!BaseDistribution.metadata_versionc                 C   s
   t ƒ ‚d S ©Nr   r   r   r   r   Úcanonical_name    s    zBaseDistribution.canonical_namec                 C   s
   t ƒ ‚d S r   r   r   r   r   r   Úversion%   s    zBaseDistribution.versionc                 C   s
   t ƒ ‚d S r   r   r   r   r   r   Ú	installer*   s    zBaseDistribution.installerc                 C   s
   t ƒ ‚d S r   r   r   r   r   r   Úeditable/   s    zBaseDistribution.editablec                 C   s
   t ƒ ‚d S r   r   r   r   r   r   Úlocal4   s    zBaseDistribution.localc                 C   s
   t ƒ ‚d S r   r   r   r   r   r   Úin_usersite9   s    zBaseDistribution.in_usersiteN)Ú__name__Ú
__module__Ú__qualname__Úpropertyr   r   r   r   r   r   r   r   r   r   r   r   r
      s    







r
   c                   @   sT   e Zd ZdZedd„ ƒZedd„ ƒZdd„ Zdd	„ Zd
d„ Z	de
dddfdd„ZdS )ÚBaseEnvironmentz6An environment containing distributions to introspect.c                 C   s
   t ƒ ‚d S r   r   )Úclsr   r   r   ÚdefaultB   s    zBaseEnvironment.defaultc                 C   s
   t ƒ ‚d S r   r   )r   Úpathsr   r   r   Ú
from_pathsG   s    zBaseEnvironment.from_pathsc                 C   s
   t ƒ ‚dS )z=Given a requirement name, return the installed distributions.Nr   )r   Únamer   r   r   Úget_distributionL   s    z BaseEnvironment.get_distributionc                 C   s
   t ƒ ‚dS )a  Iterate through installed distributions.

        This function should be implemented by subclass, but never called
        directly. Use the public ``iter_distribution()`` instead, which
        implements additional logic to make sure the distributions are valid.
        Nr   r   r   r   r   Ú_iter_distributionsQ   s    z#BaseEnvironment._iter_distributionsc                 c   sD   |   ¡ D ]6}tjd|jtjd�}|s8t d|j|j¡ q|V  qdS )z(Iterate through installed distributions.z)^([A-Z0-9]|[A-Z0-9][A-Z0-9._-]*[A-Z0-9])$)Úflagsz%Ignoring invalid distribution %s (%s)N)r%   ÚreÚmatchr   Ú
IGNORECASEÚloggerÚwarningr   )r   ÚdistÚproject_name_validr   r   r   Úiter_distributions[   s    ýýz"BaseEnvironment.iter_distributionsTFc                    sb   |   ¡ }|rdd„ |D ƒ}|s,dd„ |D ƒ}|r>dd„ |D ƒ}|rPdd„ |D ƒ}‡ fdd„|D ƒS )a  Return a list of installed distributions.

        :param local_only: If True (default), only return installations
        local to the current virtualenv, if in a virtualenv.
        :param skip: An iterable of canonicalized project names to ignore;
            defaults to ``stdlib_pkgs``.
        :param include_editables: If False, don't report editables.
        :param editables_only: If True, only report editables.
        :param user_only: If True, only report installations in the user
        site directory.
        c                 s   s   | ]}|j r|V  qd S r   )r   ©Ú.0Údr   r   r   Ú	<genexpr>‡   s      z?BaseEnvironment.iter_installed_distributions.<locals>.<genexpr>c                 s   s   | ]}|j s|V  qd S r   ©r   r/   r   r   r   r2   ‰   s      c                 s   s   | ]}|j r|V  qd S r   r3   r/   r   r   r   r2   ‹   s      c                 s   s   | ]}|j r|V  qd S r   )r   r/   r   r   r   r2   �   s      c                 3   s   | ]}|j ˆ kr|V  qd S r   )r   r/   ©Úskipr   r   r2   Ž   s     
 )r.   )r   Ú
local_onlyr5   Úinclude_editablesÚeditables_onlyÚ	user_onlyÚitr   r4   r   Úiter_installed_distributionsq   s    z,BaseEnvironment.iter_installed_distributionsN)r   r   r   Ú__doc__Úclassmethodr    r"   r$   r%   r.   r	   r;   r   r   r   r   r   ?   s   


úr   )Úloggingr'   Útypingr   r   r   r   r   Zpip._vendor.packaging.versionr   r   Úpip._internal.utils.miscr	   ÚDistributionVersionÚ	getLoggerr   r*   r
   r   r   r   r   r   Ú<module>   s   
1