U
e5d$ ã @ s> d Z ddlZdgZe d¡Zdd„ Zdd„ Zedkr:eƒ dS ) z!
Generic dylib path manipulation
é NÚ
dylib_infoz‹(?x)
(?P^.*)(?:^|/)
(?P
(?P\w+?)
(?:\.(?P[^._]+))?
(?:_(?P[^._]+))?
\.dylib$
)
c C s t | ¡}|sdS | ¡ 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)ÚfilenameZis_dylib© r ú-/usr/lib64/python3.8/ctypes/macholib/dylib.pyr s
c C s² ddd„} t dƒd kst‚t dƒd ks*t‚t dƒ| dddƒksBt‚t d ƒ| dd
ddd�ks^t‚t d
ƒ| ddddƒksxt‚t dƒ| ddddƒks’t‚t dƒ| dddddƒks®t‚d S )Nc S s t | ||||d�S )N©ÚlocationÚnameZ shortnameÚversionÚsuffix)Údictr r r r Úd. s ûztest_dylib_info..dzcompletely/invalidzcompletely/invalide_debugzP/Foo.dylibÚPz Foo.dylibZFoozP/Foo_debug.dylibzFoo_debug.dylibÚdebug)r
z
P/Foo.A.dylibzFoo.A.dylibÚAzP/Foo_debug.A.dylibzFoo_debug.A.dylibZ Foo_debugzP/Foo.A_debug.dylibzFoo.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 Ú s