diff options
author | robot-piglet <[email protected]> | 2025-07-31 11:14:11 +0300 |
---|---|---|
committer | robot-piglet <[email protected]> | 2025-07-31 12:10:37 +0300 |
commit | e177928be72df9669dbb830824b4233a33c8723f (patch) | |
tree | a91d4ec6bbe7dc221c049475a91255c2996fd84e /contrib/python/fonttools/fontTools/ufoLib/__init__.py | |
parent | a1700abf3c749b43117e757deb259d2a7bcdf46a (diff) |
Intermediate changes
commit_hash:60aaacde4a6a0fb68b6435d7f100365d0c77d64d
Diffstat (limited to 'contrib/python/fonttools/fontTools/ufoLib/__init__.py')
-rw-r--r-- | contrib/python/fonttools/fontTools/ufoLib/__init__.py | 45 |
1 files changed, 20 insertions, 25 deletions
diff --git a/contrib/python/fonttools/fontTools/ufoLib/__init__.py b/contrib/python/fonttools/fontTools/ufoLib/__init__.py index 2c5c51d61bd..a6ce1434d9d 100644 --- a/contrib/python/fonttools/fontTools/ufoLib/__init__.py +++ b/contrib/python/fonttools/fontTools/ufoLib/__init__.py @@ -32,30 +32,27 @@ Value conversion functions are available for converting - :func:`.convertFontInfoValueForAttributeFromVersion3ToVersion2` """ -import os -from copy import deepcopy -from os import fsdecode +import enum import logging +import os import zipfile -import enum from collections import OrderedDict -import fs -import fs.base -import fs.subfs -import fs.errors -import fs.copy -import fs.osfs -import fs.zipfs -import fs.tempfs -import fs.tools +from copy import deepcopy +from os import fsdecode + +from fontTools.misc import filesystem as fs from fontTools.misc import plistlib -from fontTools.ufoLib.validators import * -from fontTools.ufoLib.filenames import userNameToFileName from fontTools.ufoLib.converters import convertUFO1OrUFO2KerningToUFO3Kerning from fontTools.ufoLib.errors import UFOLibError -from fontTools.ufoLib.utils import numberTypes, _VersionTupleEnumMixin +from fontTools.ufoLib.filenames import userNameToFileName +from fontTools.ufoLib.utils import _VersionTupleEnumMixin, numberTypes +from fontTools.ufoLib.validators import * + +# client code can check this to see if the upstream `fs` package is being used +haveFS = fs._haveFS __all__ = [ + "haveFS", "makeUFOPath", "UFOLibError", "UFOReader", @@ -184,7 +181,7 @@ class _UFOBaseIO: return self.fs.writebytes(fileName, data) else: - with self.fs.openbin(fileName, mode="w") as fp: + with self.fs.open(fileName, mode="wb") as fp: try: plistlib.dump(obj, fp) except Exception as e: @@ -412,7 +409,7 @@ class UFOReader(_UFOBaseIO): path = fsdecode(path) try: if encoding is None: - return self.fs.openbin(path) + return self.fs.open(path, mode="rb") else: return self.fs.open(path, mode="r", encoding=encoding) except fs.errors.ResourceNotFound: @@ -818,7 +815,7 @@ class UFOReader(_UFOBaseIO): # systems often have hidden directories continue if validate: - with imagesFS.openbin(path.name) as fp: + with imagesFS.open(path.name, "rb") as fp: valid, error = pngValidator(fileObj=fp) if valid: result.append(path.name) @@ -984,18 +981,16 @@ class UFOWriter(UFOReader): % len(rootDirs) ) else: - # 'ClosingSubFS' ensures that the parent filesystem is closed - # when its root subdirectory is closed - self.fs = parentFS.opendir( - rootDirs[0], factory=fs.subfs.ClosingSubFS - ) + rootDir = rootDirs[0] else: # if the output zip file didn't exist, we create the root folder; # we name it the same as input 'path', but with '.ufo' extension rootDir = os.path.splitext(os.path.basename(path))[0] + ".ufo" parentFS = fs.zipfs.ZipFS(path, write=True, encoding="utf-8") parentFS.makedir(rootDir) - self.fs = parentFS.opendir(rootDir, factory=fs.subfs.ClosingSubFS) + # 'ClosingSubFS' ensures that the parent filesystem is closed + # when its root subdirectory is closed + self.fs = parentFS.opendir(rootDir, factory=fs.subfs.ClosingSubFS) else: self.fs = fs.osfs.OSFS(path, create=True) self._fileStructure = structure |