U
e5d™ ã @ s> d Z ddlZdgZe d¡Zdd„ Zdd„ Zedkr:eƒ dS ) z%
Generic framework path manipulation
é NÚframework_infoz¢(?x)
(?P^.*)(?:^|/)
(?P
(?P\w+).framework/
(?:Versions/(?P[^/]+)/)?
(?P=shortname)
(?:_(?P[^_]+))?
)$
c C s t | ¡}|sdS | ¡ S )a}
A framework name can take one of the following four forms:
Location/Name.framework/Versions/SomeVersion/Name_Suffix
Location/Name.framework/Versions/SomeVersion/Name
Location/Name.framework/Name_Suffix
Location/Name.framework/Name
returns None if not found, or a mapping equivalent to:
dict(
location='Location',
name='Name.framework/Versions/SomeVersion/Name_Suffix',
shortname='Name',
version='SomeVersion',
suffix='Suffix',
)
Note that SomeVersion and Suffix are optional and may be None
if not present
N)ÚSTRICT_FRAMEWORK_REÚmatchÚ groupdict)ÚfilenameZis_framework© r ú1/usr/lib64/python3.8/ctypes/macholib/framework.pyr s
c C sØ ddd„} t dƒd kst‚t dƒd ks*t‚t dƒd ks:t‚t dƒd ksJt‚t dƒ| dd d
ƒksbt‚t dƒ| ddd
d
d�ks~t‚t dƒd ksŽt‚t dƒd ksžt‚t dƒ| ddd
dƒks¸t‚t dƒ| ddd
dd
ƒksÔt‚d S )Nc S s t | ||||d�S )N©ÚlocationÚnameZ shortnameÚversionÚsuffix)Údictr r r r Úd- s ûztest_framework_info..dzcompletely/invalidzcompletely/invalid/_debugz
P/F.frameworkzP/F.framework/_debugzP/F.framework/FÚPz
F.framework/FÚFzP/F.framework/F_debugzF.framework/F_debugÚdebug)r
zP/F.framework/VersionszP/F.framework/Versions/AzP/F.framework/Versions/A/FzF.framework/Versions/A/FÚAz P/F.framework/Versions/A/F_debugzF.framework/Versions/A/F_debug)NNNNN)r ÚAssertionError)r r r r Útest_framework_info, s
r Ú__main__)Ú__doc__ÚreÚ__all__Úcompiler r r Ú__name__r r r r Ú s