
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    ¡ê,a$  ã                   @   s>   d Z ddlZdgZe d¡Zdd„ Zdd„ Zedkr:eƒ  dS )	z!
Generic dylib path manipulation
é    NÚ
dylib_infoz‹(?x)
(?P<location>^.*)(?:^|/)
(?P<name>
    (?P<shortname>\w+?)
    (?:\.(?P<version>[^._]+))?
    (?:_(?P<suffix>[^._]+))?
    \.dylib$
)
c                 C   s   t  | ¡}|sdS | ¡ S )a1  
    A dylib name can take one of the following four forms:
        Location/Name.SomeVersion_Suffix.dylib
        Location/Name.SomeVersion.dylib
        Location/Name_Suffix.dylib
        Location/Name.dylib

    returns None if not found or a mapping equivalent to:
        dict(
            location='Location',
            name='Name.SomeVersion_Suffix.dylib',
            shortname='Name',
            version='SomeVersion',
            suffix='Suffix',
        )

    Note that SomeVersion and Suffix are optional and may be None
    if not present.
    N)ÚDYLIB_REÚmatchÚ	groupdict)ÚfilenameZis_dylib© r   ú:/opt/alt/python38/lib64/python3.8/ctypes/macholib/dylib.pyr      s    
c                  C   s²   ddd„} t dƒd kst‚t dƒd ks*t‚t dƒ| dddƒksBt‚t d	ƒ| dd
ddd�ks^t‚t dƒ| ddddƒksxt‚t dƒ| ddddƒks’t‚t dƒ| dddddƒks®t‚d S )Nc                 S   s   t | ||||d�S )N©ÚlocationÚnameZ	shortnameÚversionÚsuffix)Údictr	   r   r   r   Úd.   s    ûztest_dylib_info.<locals>.dzcompletely/invalidzcompletely/invalide_debugzP/Foo.dylibÚPz	Foo.dylibZFoozP/Foo_debug.dylibzFoo_debug.dylibÚdebug)r   zP/Foo.A.dylibzFoo.A.dylibÚAzP/Foo_debug.A.dylibzFoo_debug.A.dylibZ	Foo_debugzP/Foo.A_debug.dylibzFoo.A_debug.dylib)NNNNN)r   ÚAssertionError)r   r   r   r   Útest_dylib_info-   s    
r   Ú__main__)Ú__doc__ÚreÚ__all__Úcompiler   r   r   Ú__name__r   r   r   r   Ú<module>   s   

