a hb @ s d Z ddlmZ ddlmZ ddlmZ ddlm Z ddlZddlZddl Z ddlZddlZddl Z ddlZddlZddlZddlZddlmZ ddlmZ dd lmZ dd lmZ ddlmZ ddlmZmZmZmZm Z m!Z!m"Z"m#Z# ddl$m%Z% dd l&m'Z' ddl(m)Z) ddlm*Z* dd Z+G dd dZ,G dd de,eZ-G dd deZG dd deZ.dd Z/dd Z0dd Z1d d! Z2d"d# Z3d$d% Z4d&d' Z5d(d) Z6d3d+d,Z7d-d. Z8d/d0 Z9G d1d2 d2e*Z:dS )4zUsetuptools.command.egg_info Create a distribution's .egg-info directory and contents )FileList)DistutilsInternalError)convert_path)logN)Command)sdist)walk_revctrl)edit_config) bdist_egg)parse_requirements safe_name parse_versionsafe_versionyield_lines EntryPointiter_entry_pointsto_filename)glob) packaging)SetuptoolsDeprecationWarningc C s d}| tjj}ttj}d|f }t|D ]\}}|t|d k}|dkrr|r`|d7 }q0|d||f 7 }q0d}t|} || k r|| } | dkr||d 7 }n | d kr||7 }n| d kr|d }|| k r|| dkr|d }|| k r|| dkr|d }|| k r,|| dkr,|d }q|| krF|t| 7 }nR||d | }d} |d dkrxd } |dd }| t|7 } |d| f 7 }|}n|t| 7 }|d7 }q~|s0||7 }q0|d7 }tj|tj tj B dS )z Translate a file path glob like '*.txt' in to a regular expression. This differs from fnmatch.translate which allows wildcards to match directory separators. It also knows about '**/' which matches any number of directories. z[^%s] **z.*z (?:%s+%s)*r *?[!]^Nz[%s]z\Z)flags)splitospathsepreescape enumeratelencompile MULTILINEDOTALL)r patchunksr# Z valid_charcchunkZ last_chunkiZ chunk_lencharZinner_iinnerZ char_class r2 ?/usr/lib/python3.9/site-packages/setuptools/command/egg_info.pytranslate_pattern# sV r4 c @ s@ e Zd ZdZdZedd Zdd Zdd Zdd Z ee Z dS ) InfoCommonNc C s t | j S N)r distributionZget_nameselfr2 r2 r3 namez s zInfoCommon.namec C s t | | j S r6 )r _maybe_tagr7 Zget_versionr8 r2 r2 r3 tagged_version~ s zInfoCommon.tagged_versionc C s | j r|| j r|S || j S )z egg_info may be called more than once for a distribution, in which case the version string already contains all tags. )vtagsendswithr9 versionr2 r2 r3 r; s zInfoCommon._maybe_tagc C s, d}| j r|| j 7 }| jr(|td7 }|S )Nr z-%Y%m%d) tag_buildtag_datetimestrftimer? r2 r2 r3 tags s zInfoCommon.tags)__name__ __module____qualname__rA rB propertyr: r<