]> git.ipfire.org Git - thirdparty/google/fonts.git/commitdiff
Move to importlib.resources for Python 3.13 compatible
authorSimon Cozens <simon@simon-cozens.org>
Wed, 22 Jan 2025 16:13:15 +0000 (16:13 +0000)
committerSimon Cozens <simon@simon-cozens.org>
Wed, 22 Jan 2025 16:14:34 +0000 (16:14 +0000)
Lib/axisregistry/__init__.py
requirements.txt
setup.py

index d33fd683661fe74698d854867a924463164de469..de51e741491299e572f05a1fe6234e83b6aec2be 100644 (file)
@@ -4,7 +4,6 @@ from fontTools.misc.testTools import getXML
 from fontTools.otlLib.builder import buildStatTable
 from fontTools.varLib.instancer.names import _updateUniqueIdNameRecord, NameID
 from fontTools.ttLib.tables._f_v_a_r import NamedInstance
-from pkg_resources import resource_filename
 from google.protobuf import text_format
 from collections import OrderedDict
 from axisregistry.axes_pb2 import AxisProto
@@ -13,6 +12,13 @@ from itertools import chain
 import logging
 from glob import glob
 import os
+import sys
+
+if sys.version_info < (3, 10):
+    from importlib_resources import files
+else:
+    from importlib.resources import files
+
 
 try:
     from ._version import version as __version__  # type: ignore
@@ -53,19 +59,27 @@ GF_STATIC_STYLES = OrderedDict(
 )
 
 
-def load_protobuf(klass, path):
+def load_protobuf(klass, data):
     message = klass()
-    with open(path, "rb") as text_data:
-        text_format.Merge(text_data.read(), message)
+    text_format.Merge(data, message)
     return message
 
 
 class AxisRegistry:
-    def __init__(self, fp=resource_filename("axisregistry", "data")):
-        axis_fps = [fp for fp in glob(os.path.join(fp, "*.textproto"))]
+    def __init__(self, fp=None):
+        if fp is not None:
+            protos = [
+                open(fp).read() for fp in glob.glob(os.path.join(fp, "*.textproto"))
+            ]
+        else:
+            protos = [
+                fp.read_text(encoding="utf-8")
+                for fp in files("axisregistry.data").iterdir()
+                if fp.name.endswith(".textproto")
+            ]
         self._data = {}
-        for fp in axis_fps:
-            axis = load_protobuf(AxisProto, fp)
+        for proto in protos:
+            axis = load_protobuf(AxisProto, proto)
             self._data[axis.tag] = axis
 
     def __getitem__(self, k):
index c1456a64ad4ef84a54abdcf7eeddeae3a3badf22..ac59e10749b309c316bc0473e68c34eb49448ce1 100644 (file)
@@ -1,3 +1,4 @@
 --index-url https://pypi.python.org/simple/
 protobuf==3.20.3
+importlib_resources ; python_version < '3.10'
 -e .
index e9d3b9bd53491f4ca561d0f7865ab92580ce6199..5d667083b6a6e9da46fcf9be6cc7c283e6b3e2ab 100644 (file)
--- a/setup.py
+++ b/setup.py
@@ -46,5 +46,9 @@ setup(
         "setuptools>=61.2",
         "setuptools_scm[toml]>=6.2",
     ],
-    install_requires=["protobuf>=3.19.4, <4", "fonttools"],
+    install_requires=[
+        "protobuf>=3.19.4, <4",
+        "fonttools",
+        "importlib_resources ; python_version < '3.10'",
+    ],
 )