�
<��iQ � �@ � d Z ddlZdgZ ej d� Zd� Zy)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 �R � t j | � }|sy|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)�filename�is_frameworks �@/opt/alt/python312/lib64/python3.12/ctypes/macholib/framework.pyr r s) � �( '�,�,�X�6�L����!�!�#�#� )�__doc__�re�__all__�compiler r � r r
�<module>r s2 ���
��
�� �b�j�j� "� � �$r