summaryrefslogtreecommitdiffstats
path: root/contrib/python/fonttools/fontTools/ufoLib/__init__.py
diff options
context:
space:
mode:
authorrobot-piglet <[email protected]>2025-07-31 11:14:11 +0300
committerrobot-piglet <[email protected]>2025-07-31 12:10:37 +0300
commite177928be72df9669dbb830824b4233a33c8723f (patch)
treea91d4ec6bbe7dc221c049475a91255c2996fd84e /contrib/python/fonttools/fontTools/ufoLib/__init__.py
parenta1700abf3c749b43117e757deb259d2a7bcdf46a (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__.py45
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