�`^c@sVdZddlZdgZejd�Zd�Zd�ZedkrRe�ndS(s!
Generic dylib path manipulation
i�Nt
dylib_infos�(?x)
(?P<location>^.*)(?:^|/)
(?P<name>
(?P<shortname>\w+?)
(?:\.(?P<version>[^._]+))?
(?:_(?P<suffix>[^._]+))?
\.dylib$
)
cCs#tj|�}|sdS|j�S(s1
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(tDYLIB_REtmatchtNonet groupdict(tfilenametis_dylib((s+/sys/lib/python2.7/ctypes/macholib/dylib.pyRscCsdddddd�}td�dks0t�td�dksHt�td�|ddd�kslt�td�|dd dd
d�ks�t�td�|dd
dd�ks�t�td�|dddd�ks��td�|ddddd�kst�dS(NcSs%td|d|d|d|d|�S(Ntlocationtnamet shortnametversiontsuffix(tdict(RRR R
R((s+/sys/lib/python2.7/ctypes/macholib/dylib.pytd1sscompletely/invalidscompletely/invalide_debugsP/Foo.dylibtPs Foo.dylibtFoosP/Foo_debug.dylibsFoo_debug.dylibRtdebugs
P/Foo.A.dylibsFoo.A.dylibtAsP/Foo_debug.A.dylibsFoo_debug.A.dylibt Foo_debugsP/Foo.A_debug.dylibsFoo.A_debug.dylib(RRtAssertionError(R
((s+/sys/lib/python2.7/ctypes/macholib/dylib.pyttest_dylib_info0s$*''t__main__(t__doc__tret__all__tcompileRRRt__name__(((s+/sys/lib/python2.7/ctypes/macholib/dylib.pyt<module>s
|