
    .Ph                     Z   d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZm	Z	 d dl
mZ d dl
mZ d dlmZ  ej        e          ZdZ G d	 d
e	          Z ed          dedeeef         fd            ZdededefdZ ed          dedeeef         fd            ZdededefdZdS )    N)	lru_cache)Path)Dict	TypedDict)NormalizedName)canonicalize_name)cached_download_filezlhttps://raw.githubusercontent.com/regro/cf-graph-countyfair/master/mappings/pypi/grayskull_pypi_mapping.jsonc                   .    e Zd ZU eed<   eed<   eed<   dS )MappingEntry
conda_nameconda_forge	pypi_nameN)__name__
__module____qualname__str__annotations__r        Q/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/conda_lock/lookup.pyr   r      s3         OOOr   r   )maxsizemapping_urlreturnc                 d   | }|                     d          s|                     d          rt          |d          }nP|                     d          r|t          d          d          }n|}t          |                                          }t
                              d           t          j                    }|	                    d          rt          j        |          }n4dd l}|j                            d	
          }|                    |          }t          j                    |z
  }t
                              dt          |           d|dd           |J d |                                D             }|                                D ]}	t%          |	d                   |	d<   |S )Nzhttp://zhttps://zpypi-mapping)cache_subdir_namezfile://zParsing PyPI mappingz.jsonr   safe)typzLoaded z entries in z.2fsc                 4    i | ]\  }}t          |          |S r   )canonicalize_pypi_name).0kvs      r   
<dictcomp>z$_get_pypi_lookup.<locals>.<dictcomp>3   s'    FFFtq!$Q''FFFr   r   )
startswithr	   lenr   
read_bytesloggerdebugtime	monotonicendswithjsonloadsruamel.yamlyamlYAMLloaditemsvaluesr    )
r   urlcontentpath
load_startlookupruamelr0   load_durationr#   s
             r   _get_pypi_lookupr<      s   
C
~~i   *CNN:$>$> *&snMMM>>)$$ 	s9~~''(DDDt**''))
LL'(((!!J
||G $G$${F++7##N$$z1M
LLH3v;;HHMHHHHIIIFFv||~~FFFF]]__ @ @/+??+Mr   namec                     t          |           }t          |          }||v r6||         }|                    d          p|                    d          }||S t                              d| d           |S )a.  Convert a PyPI package name to a conda package name.

    >>> from conda_lock.lookup import DEFAULT_MAPPING_URL
    >>> pypi_name_to_conda_name("build", mapping_url=DEFAULT_MAPPING_URL)
    'python-build'

    >>> pypi_name_to_conda_name("zpfqzvrj", mapping_url=DEFAULT_MAPPING_URL)
    'zpfqzvrj'
    r   r   NzCould not find conda name for z. Assuming identity.)r    r<   getr(   r)   )r=   r   cnamer9   entryress         r   pypi_name_to_conda_namerC   9   s     #4((Ek**Fuii%%A=)A)A?J
LLM%MMMNNNLr   c                 X    d t          |                                           D             S )zE
    Reverse grayskull name mapping to map conda names onto PyPI
    c                      i | ]}|d          |S )r   r   )r!   records     r   r$   z%_get_conda_lookup.<locals>.<dictcomp>T   s/        	|f  r   )r<   r4   r   s    r   _get_conda_lookuprH   O   s7    
 &{33::<<   r   c                 |    t          |          }t          |           }|                    |d|i          d         S )z(return the pypi name for a conda packagerG   r   )rH   r    r?   )r=   r   r9   r@   s       r   conda_name_to_pypi_namerJ   Z   s=    ;777F"4((E::ek5122;??r   )r-   loggingr*   	functoolsr   pathlibr   typingr   r   packaging.utilsr   r   r    conda_lock.lookup_cacher	   	getLoggerr   r(   DEFAULT_MAPPING_URLr   r   r<   rC   rH   rJ   r   r   r   <module>rS      s                  " " " " " " " " * * * * * * G G G G G G 8 8 8 8 8 8 
	8	$	$ E     9    4# $~|/K*L    :# C C    , 43 4\0A+B    @# @C @N @ @ @ @ @ @r   