grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026a ´i™ã@s>dZddlZdgZe 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[^_]+))? )$ cCst |¡}|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)ÚfilenameZ is_framework©rú1/usr/lib64/python3.9/ctypes/macholib/framework.pyrs cCsØddd„}tdƒdusJ‚tdƒdus*J‚tdƒdus:J‚tdƒdusJJ‚tdƒ|dd d ƒksbJ‚td ƒ|dd d d d�ks~J‚tdƒdusŽJ‚tdƒdusžJ‚tdƒ|ddd dƒks¸J‚tdƒ|ddd dd ƒksÔJ‚dS)NcSst|||||d�S)N©ÚlocationÚnameZ shortnameÚversionÚsuffix)Údictr rrrÚ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)rrrrÚtest_framework_info,s rÚ__main__)Ú__doc__ÚreÚ__all__ÚcompilerrrÚ__name__rrrrÚs