
    fQ                     >    d Z ddlZdgZ ej        d          Zd Z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                 f    t                               |           }|sdS |                                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)filenameis_frameworks     .../lib/python3.11/ctypes/macholib/framework.pyr   r      s6    ( ',,X66L t!!###    )__doc__re__all__compiler   r    r   r
   <module>r      sT     
			
 bj "   $ $ $ $ $r   