# Source code for fontTools.misc.macCreatorType

    from fontTools.misc.textTools import Tag, bytesjoin, strjoin

    try:
        import xattr
    except ImportError:
        xattr = None

    def _reverseString(s):
        s = list(s)
        s.reverse()
        return strjoin(s)

    def getMacCreatorAndType(path):
        """Returns file creator and file type codes for a path.

        Args:
                path (str): A file path.

        Returns:
                A tuple of two :py:class:`fontTools.textTools.Tag` objects, the first
                representing the file creator and the second representing the
                file type.
        """
        if xattr is not None:
            try:
                finderInfo = xattr.getxattr(path, "com.apple.FinderInfo")
            except (KeyError, IOError):
                pass
            else:
                fileType = Tag(finderInfo[:4])
                fileCreator = Tag(finderInfo[4:8])
                return fileCreator, fileType
        return None, None

    def setMacCreatorAndType(path, fileCreator, fileType):
        """Set file creator and file type codes for a path.

        Note that if the ``xattr`` module is not installed, no action is
        taken but no error is raised.

        Args:
                path (str): A file path.
                fileCreator: A four-character file creator tag.
                fileType: A four-character file type tag.

        """
        if xattr is not None:
            from fontTools.misc.textTools import pad

            if not all(len(s) == 4 for s in (fileCreator, fileType)):
                raise TypeError("arg must be string of 4 chars")
            finderInfo = pad(bytesjoin([fileType, fileCreator]), 32)
            xattr.setxattr(path, "com.apple.FinderInfo", finderInfo)