???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................3

  \                 @   s>   d Z ddlZdgZejdZdd Zdd Zedkr:e  dS )	z%
Generic framework path manipulation
    Nframework_infoz(?x)
(?P<location>^.*)(?:^|/)
(?P<name>
    (?P<shortname>\w+).framework/
    (?:Versions/(?P<version>[^/]+)/)?
    (?P=shortname)
    (?:_(?P<suffix>[^_]+))?
)$
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)filenameZis_framework r   1/usr/lib64/python3.6/ctypes/macholib/framework.pyr      s    
c              C   s   ddd} t dd kstt dd ks*tt dd ks:tt dd ksJtt d| dd	d
ksbtt d| ddd
ddks~tt dd kstt dd kstt d| ddd
dkstt d| ddd
ddkstd S )Nc             S   s   t | ||||dS )N)locationname	shortnameversionsuffix)dict)r	   r
   r   r   r   r   r   r   d-   s    ztest_framework_info.<locals>.dzcompletely/invalidzcompletely/invalid/_debugzP/F.frameworkzP/F.framework/_debugzP/F.framework/FPzF.framework/FFzP/F.framework/F_debugzF.framework/F_debugdebug)r   zP/F.framework/VersionszP/F.framework/Versions/AzP/F.framework/Versions/A/FzF.framework/Versions/A/FAz P/F.framework/Versions/A/F_debugzF.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   <module>   s   