a XC?h$�@s>dZddlZdgZe�d�Zdd�Zdd�Zedkr:e�dS) z! Generic dylib path manipulation �N� dylib_infoz�(?x) (?P^.*)(?:^|/) (?P (?P\w+?) (?:\.(?P[^._]+))? (?:_(?P[^._]+))? \.dylib$ ) cCst�|�}|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�:/opt/alt/python39/lib64/python3.9/ctypes/macholib/dylib.pyrs cCs�ddd�}td�dusJ�td�dus*J�td�|ddd�ksBJ�td �|dd dd d �ks^J�td �|dddd�ksxJ�td�|dddd�ks�J�td�|ddddd �ks�J�dS)NcSst|||||d�S)N��location�nameZ shortname�version�suffix)�dictr rrr�d.s�ztest_dylib_info..dzcompletely/invalidzcompletely/invalide_debugz P/Foo.dylib�Pz Foo.dylibZFoozP/Foo_debug.dylibzFoo_debug.dylib�debug)r z P/Foo.A.dylibz Foo.A.dylib�AzP/Foo_debug.A.dylibzFoo_debug.A.dylibZ Foo_debugzP/Foo.A_debug.dylibzFoo.A_debug.dylib)NNNNN)r)rrrr�test_dylib_info-s r�__main__)�__doc__�re�__all__�compilerrr�__name__rrrr�s