Skip to content

Commit 93fdf07

Browse files
committed
switch to importlib_{metadata,resources} from deprecated pkg_resources
1 parent 394c5f6 commit 93fdf07

12 files changed

+54
-48
lines changed

mypy-requirements.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
mypy==1.4.1 # update pyproject.toml as well
22
black>=19.10b0
3-
types-pkg_resources
43
types-requests
54
types-dataclasses
65
objgraph

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ requires = [
55
'mypy==0.971; python_version == "3.6"', # last version for Python 3.6
66
'mypy==1.4.1; python_version >= "3.7"', # update mypy-requirements as well
77
"black>=19.10b0",
8-
"types-pkg_resources",
98
"types-requests",
109
"types-dataclasses",
10+
"importlib_resources>=1.4", # equivalent to Python 3.9
1111
"ruamel.yaml>= 0.12.4, != 0.16.6, < 0.18",
1212
"types-setuptools"
1313
]

requirements.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,6 @@ CacheControl[filecache]< 0.13;python_version<='3.6'
1010
urllib3<2;python_version<='3.6'
1111
black<23.8
1212
mypy_extensions
13+
importlib_metadata;python_version<'3.8'
14+
importlib_resources>=1.4
15+
# ^^ equivalent to Python 3.9

schema_salad/dotnet_codegen.py

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
)
1717
from xml.sax.saxutils import escape # nosec
1818

19-
import pkg_resources
19+
from importlib_resources import files
2020

2121
from . import _logger, schema
2222
from .codegen_base import CodeGenBase, TypeDef
@@ -855,15 +855,13 @@ def epilogue(self, root_loader: TypeDef) -> None:
855855
license_name="Apache License, Version 2.0",
856856
)
857857

858-
def template_from_resource(resource: str) -> string.Template:
859-
template_str = pkg_resources.resource_string(__name__, f"dotnet/{resource}").decode(
860-
"utf-8"
861-
)
858+
def template_from_resource(resource: Path) -> string.Template:
859+
template_str = resource.read_text("utf-8")
862860
template = string.Template(template_str)
863861
return template
864862

865863
def expand_resource_template_to(resource: str, path: Path) -> None:
866-
template = template_from_resource(resource)
864+
template = template_from_resource(files("schema_salad").joinpath(f"dotnet/{resource}"))
867865
src = template.safe_substitute(template_vars)
868866
_ensure_directory_and_write(path, src)
869867

@@ -944,13 +942,12 @@ def expand_resource_template_to(resource: str, path: Path) -> None:
944942
}
945943

946944
def copy_utils_recursive(util_src: str, util_target: Path) -> None:
947-
for util in pkg_resources.resource_listdir(__name__, f"dotnet/{util_src}"):
948-
template_path = os.path.join(util_src, util)
949-
if pkg_resources.resource_isdir(__name__, f"dotnet/{template_path}"):
950-
copy_utils_recursive(os.path.join(util_src, util), util_target / util)
945+
for util in files("schema_salad").joinpath(f"dotnet/{util_src}").iterdir():
946+
if util.is_dir():
947+
copy_utils_recursive(os.path.join(util_src, util.name), util_target / util.name)
951948
continue
952-
src_path = util_target / util
953-
src_template = template_from_resource(template_path)
949+
src_path = util_target / util.name
950+
src_template = template_from_resource(util)
954951
src = src_template.safe_substitute(template_args)
955952
_ensure_directory_and_write(src_path, src)
956953

schema_salad/java_codegen.py

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
Union,
1717
)
1818

19-
import pkg_resources
19+
from importlib_resources import files
2020

2121
from . import _logger, schema
2222
from .codegen_base import CodeGenBase, TypeDef
@@ -788,15 +788,13 @@ def epilogue(self, root_loader: TypeDef) -> None:
788788
license_url="https://www.apache.org/licenses/LICENSE-2.0.txt",
789789
)
790790

791-
def template_from_resource(resource: str) -> string.Template:
792-
template_str = pkg_resources.resource_string(__name__, f"java/{resource}").decode(
793-
"utf-8"
794-
)
791+
def template_from_resource(resource: Path) -> string.Template:
792+
template_str = resource.read_text("utf-8")
795793
template = string.Template(template_str)
796794
return template
797795

798796
def expand_resource_template_to(resource: str, path: Path) -> None:
799-
template = template_from_resource(resource)
797+
template = template_from_resource(files("schema_salad").joinpath(f"java/{resource}"))
800798
src = template.safe_substitute(template_vars)
801799
_ensure_directory_and_write(path, src)
802800

@@ -880,9 +878,9 @@ def expand_resource_template_to(resource: str, path: Path) -> None:
880878
"test_utils": self.test_src_dir,
881879
}
882880
for util_src, util_target in util_src_dirs.items():
883-
for util in pkg_resources.resource_listdir(__name__, f"java/{util_src}"):
884-
src_path = util_target / "utils" / util
885-
src_template = template_from_resource(os.path.join(util_src, util))
881+
for util in files("schema_salad").joinpath(f"java/{util_src}").iterdir():
882+
src_path = util_target / "utils" / util.name
883+
src_template = template_from_resource(util)
886884
src = src_template.safe_substitute(template_args)
887885
_ensure_directory_and_write(src_path, src)
888886

schema_salad/main.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
from typing import Any, Dict, List, Mapping, MutableSequence, Optional, Union, cast
88
from urllib.parse import urlparse
99

10-
import pkg_resources # part of setuptools
1110
from rdflib import __version__ as rdflib_version
1211
from rdflib.parser import Parser
1312
from rdflib.plugin import register
@@ -22,6 +21,11 @@
2221

2322
if int(rdflib_version.split(".", maxsplit=1)[0]) < 6:
2423
register("json-ld", Parser, "rdflib_jsonld.parser", "JsonLDParser")
24+
25+
if sys.version_info >= (3, 8):
26+
import importlib.metadata as importlib_metadata
27+
else:
28+
import importlib_metadata
2529
_logger = logging.getLogger("salad")
2630

2731

@@ -221,12 +225,12 @@ def main(argsl: Optional[List[str]] = None) -> int:
221225
if args.debug:
222226
_logger.setLevel(logging.DEBUG)
223227

224-
pkg = pkg_resources.require("schema_salad")
228+
pkg = importlib_metadata.version("schema_salad")
225229
if pkg:
226230
if args.version:
227-
print(f"{sys.argv[0]} Current version: {pkg[0].version}")
231+
print(f"{sys.argv[0]} Current version: {pkg}")
228232
return 0
229-
_logger.info("%s Current version: %s", sys.argv[0], pkg[0].version)
233+
_logger.info("%s Current version: %s", sys.argv[0], pkg)
230234

231235
# Get the metaschema to validate the schema
232236
metaschema_names, metaschema_doc, metaschema_loader = schema.get_metaschema()

schema_salad/python_codegen.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
except ModuleNotFoundError:
1919
black = None # type: ignore[assignment]
2020

21-
from pkg_resources import resource_stream
21+
from importlib_resources import files
2222

2323
from . import schema
2424
from .codegen_base import CodeGenBase, TypeDef
@@ -125,10 +125,10 @@ def prologue(self) -> None:
125125
)
126126
)
127127

128-
stream = resource_stream(__name__, "python_codegen_support.py")
129-
python_codegen_support = stream.read().decode("UTF-8")
128+
python_codegen_support = (
129+
files("schema_salad").joinpath("python_codegen_support.py").read_text("UTF-8")
130+
)
130131
self.out.write(python_codegen_support[python_codegen_support.find("\n") + 1 :])
131-
stream.close()
132132
self.out.write("\n\n")
133133

134134
self.out.write(

schema_salad/schema.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
)
2020
from urllib.parse import urlparse
2121

22-
from pkg_resources import resource_stream
22+
from importlib_resources import files
2323
from ruamel.yaml.comments import CommentedMap, CommentedSeq
2424

2525
from schema_salad.utils import (
@@ -182,11 +182,13 @@ def get_metaschema() -> Tuple[Names, List[Dict[str, str]], Loader]:
182182
)
183183

184184
for salad in SALAD_FILES:
185-
with resource_stream("schema_salad", "metaschema/" + salad) as stream:
186-
loader.cache["https://w3id.org/cwl/" + salad] = stream.read().decode("UTF-8")
185+
loader.cache["https://w3id.org/cwl/" + salad] = (
186+
files("schema_salad").joinpath("metaschema/" + salad).read_text("UTF-8")
187+
)
187188

188-
with resource_stream("schema_salad", "metaschema/metaschema.yml") as stream:
189-
loader.cache["https://w3id.org/cwl/salad"] = stream.read().decode("UTF-8")
189+
loader.cache["https://w3id.org/cwl/salad"] = (
190+
files("schema_salad").joinpath("metaschema/metaschema.yml").read_text("UTF-8")
191+
)
190192

191193
yaml = yaml_no_ts()
192194
j = yaml.load(loader.cache["https://w3id.org/cwl/salad"])

schema_salad/typescript_codegen.py

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
Union,
1616
)
1717

18-
import pkg_resources
18+
from importlib_resources import files
1919

2020
from . import _logger, schema
2121
from .codegen_base import CodeGenBase, TypeDef
@@ -731,15 +731,15 @@ def epilogue(self, root_loader: TypeDef) -> None:
731731
generated_class_imports=generated_class_imports,
732732
)
733733

734-
def template_from_resource(resource: str) -> string.Template:
735-
template_str = pkg_resources.resource_string(__name__, f"typescript/{resource}").decode(
736-
"utf-8"
737-
)
734+
def template_from_resource(resource: Path) -> string.Template:
735+
template_str = resource.read_text("utf-8")
738736
template = string.Template(template_str)
739737
return template
740738

741739
def expand_resource_template_to(resource: str, path: Path) -> None:
742-
template = template_from_resource(resource)
740+
template = template_from_resource(
741+
files("schema_salad").joinpath(f"typescript/{resource}")
742+
)
743743
src = template.safe_substitute(template_vars)
744744
_ensure_directory_and_write(path, src)
745745

@@ -806,13 +806,12 @@ def expand_resource_template_to(resource: str, path: Path) -> None:
806806
}
807807

808808
def copy_utils_recursive(util_src: str, util_target: Path) -> None:
809-
for util in pkg_resources.resource_listdir(__name__, f"typescript/{util_src}"):
810-
template_path = os.path.join(util_src, util)
811-
if pkg_resources.resource_isdir(__name__, f"typescript/{template_path}"):
812-
copy_utils_recursive(os.path.join(util_src, util), util_target / util)
809+
for util in files("schema_salad").joinpath(f"typescript/{util_src}").iterdir():
810+
if util.is_dir():
811+
copy_utils_recursive(os.path.join(util_src, util.name), util_target / util.name)
813812
continue
814-
src_path = util_target / util
815-
src_template = template_from_resource(template_path)
813+
src_path = util_target / util.name
814+
src_template = template_from_resource(util)
816815
src = src_template.safe_substitute(template_args)
817816
_ensure_directory_and_write(src_path, src)
818817

setup.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,8 @@
9191
"CacheControl[filecache] < 0.13;python_version<='3.6'",
9292
"urllib3<2;python_version<='3.6'",
9393
"mypy_extensions",
94+
"importlib_resources>=1.4", # equivalent to Python 3.9,
95+
"importlib_metadata;python_version<'3.8'",
9496
]
9597

9698
extras_require = {

0 commit comments

Comments
 (0)