î
i f™ ã @ s\ d Z d d l Z d g Z e j d ƒ Z d d „ Z d d „ Z e d k rX e ƒ n d S) z%
Generic framework path manipulation
é NÚframework_infoz¢(?x)
(?P^.*)(?:^|/)
(?P
(?P\w+).framework/
(?:Versions/(?P[^/]+)/)?
(?P=shortname)
(?:_(?P[^_]+))?
)$
c C s# t j | ƒ } | s d S| j ƒ 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 ú>/opt/alt/python34/lib64/python3.4/ctypes/macholib/framework.pyr s c C sN d d d d d d d „ } t d ƒ d k s3 t ‚ t d ƒ d k sK t ‚ t d ƒ d k sc t ‚ t d ƒ d k s{ t ‚ t d ƒ | d d d
ƒ k sŸ t ‚ t d ƒ | d d d
d
d ƒk sÉ t ‚ t d ƒ d k sá t ‚ t d ƒ d k sù t ‚ t d ƒ | d d d
d ƒ k s t ‚ t d ƒ | d d d
d d ƒ k sJt ‚ d S)Nc S s% t d | d | d | d | d | ƒ S)NÚlocationÚnameÚ shortnameÚversionÚsuffix)Údict)r r
r r r
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_debugr
ÚdebugzP/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)r ÚAssertionError)r r r r Útest_framework_info, s $*'r Ú__main__)Ú__doc__ÚreÚ__all__Úcompiler r r Ú__name__r r r r Ú s