(major, minor, machine)
return arches
Return a list of supported arches (including group arches) for
    the given major, minor and machine architecture of an macOS machine.
Return a list of supported arches (including group arches) for
    the given major, minor and machine architecture of an macOS machine.
Return a list of supported arches ( including group arches ) for the given major minor and machine architecture of an macOS machine .
def get_darwin_arches(major, minor, machine):
    # type: (int, int, str) -> List[str]
    """Return a list of supported arches (including group arches) for
    the given major, minor and machine architecture of an macOS machine.
    """
    arches = []

    def _supports_arch(major, minor, arch):
        # type: (int, int, str) -> bool
        # Looking at the application support for macOS versions in the chart
        # provided by https://en.wikipedia.org/wiki/OS_X#Versions it appears
        # our timeline looks roughly like:
        #
        # 10.0 - Introduces ppc support.
        # 10.4 - Introduces ppc64, i386, and x86_64 support, however the ppc64
        #        and x86_64 support is CLI only, and cannot be used for GUI
        #        applications.
        # 10.5 - Extends ppc64 and x86_64 support to cover GUI applications.
        # 10.6 - Drops support for ppc64
        # 10.7 - Drops support for ppc
        #
        # Given that we do not know if we're installing a CLI or a GUI
        # application, we must be conservative and assume it might be a GUI
        # application and behave as if ppc64 and x86_64 support did not occur
        # until 10.5.
        #
        # Note: The above information is taken from the "Application support"
        #       column in the chart not the "Processor support" since I believe
        #       that we care about what instruction sets an application can use
        #       not which processors the OS supports.
        if arch == 'ppc':
            return (major, minor) <= (10, 5)
        if arch == 'ppc64':
            return (major, minor) == (10, 5)
        if arch == 'i386':
            return (major, minor) >= (10, 4)
        if arch == 'x86_64':
            return (major, minor) >= (10, 5)
        if arch in groups:
            for garch in groups[arch]:
                if _supports_arch(major, minor, garch):
                    return True
        return False

    groups = OrderedDict([
        ("fat", ("i386", "ppc")),
        ("intel", ("x86_64", "i386")),
        ("fat64", ("x86_64", "ppc64")),
        ("fat32", ("x86_64", "i386", "ppc")),
    ])  # type: Dict[str, Tuple[str, ...]]

    if _supports_arch(major, minor, machine):
        arches.append(machine)

    for garch in groups:
        if machine in groups[garch] and _supports_arch(major, minor, garch):
            arches.append(garch)

    arches.append('universal')

    return arches
def get_darwin_arches ( major , minor , machine ) : # type: (int, int, str) -> List[str] arches = [ ] def _supports_arch ( major , minor , arch ) : # type: (int, int, str) -> bool # Looking at the application support for macOS versions in the chart # provided by https://en.wikipedia.org/wiki/OS_X#Versions it appears # our timeline looks roughly like: # # 10.0 - Introduces ppc support. # 10.4 - Introduces ppc64, i386, and x86_64 support, however the ppc64 #        and x86_64 support is CLI only, and cannot be used for GUI #        applications. # 10.5 - Extends ppc64 and x86_64 support to cover GUI applications. # 10.6 - Drops support for ppc64 # 10.7 - Drops support for ppc # # Given that we do not know if we're installing a CLI or a GUI # application, we must be conservative and assume it might be a GUI # application and behave as if ppc64 and x86_64 support did not occur # until 10.5. # # Note: The above information is taken from the "Application support" #       column in the chart not the "Processor support" since I believe #       that we care about what instruction sets an application can use #       not which processors the OS supports. if arch == 'ppc' : return ( major , minor ) <= ( 10 , 5 ) if arch == 'ppc64' : return ( major , minor ) == ( 10 , 5 ) if arch == 'i386' : return ( major , minor ) >= ( 10 , 4 ) if arch == 'x86_64' : return ( major , minor ) >= ( 10 , 5 ) if arch in groups : for garch in groups [ arch ] : if _supports_arch ( major , minor , garch ) : return True return False groups = OrderedDict ( [ ( "fat" , ( "i386" , "ppc" ) ) , ( "intel" , ( "x86_64" , "i386" ) ) , ( "fat64" , ( "x86_64" , "ppc64" ) ) , ( "fat32" , ( "x86_64" , "i386" , "ppc" ) ) , ] ) # type: Dict[str, Tuple[str, ...]] if _supports_arch ( major , minor , machine ) : arches . append ( machine ) for garch in groups : if machine in groups [ garch ] and _supports_arch ( major , minor , garch ) : arches . append ( garch ) arches . append ( 'universal' ) return arches