Skip to content

Commit 0c935d3

Browse files
committed
remove last usage of pkg_resources
1 parent 641de7a commit 0c935d3

File tree

11 files changed

+30
-19
lines changed

11 files changed

+30
-19
lines changed

cwltool/main.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
import argcomplete
3535
import coloredlogs
3636
import ruamel.yaml
37-
from importlib_resources import files
3837
from ruamel.yaml.comments import CommentedMap, CommentedSeq
3938
from ruamel.yaml.main import YAML
4039
from schema_salad.exceptions import ValidationException
@@ -108,6 +107,7 @@
108107
CWLOutputType,
109108
HasReqsHints,
110109
adjustDirObjs,
110+
files,
111111
normalizeFilesDirs,
112112
processes_to_kill,
113113
trim_listing,

cwltool/process.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333
)
3434

3535
from cwl_utils import expression
36-
from importlib_resources import files
3736
from mypy_extensions import mypyc_attr
3837
from rdflib import Graph
3938
from ruamel.yaml.comments import CommentedMap, CommentedSeq
@@ -70,6 +69,7 @@
7069
aslist,
7170
cmp_like_py2,
7271
ensure_writable,
72+
files,
7373
get_listing,
7474
normalizeFilesDirs,
7575
random_outdir,

cwltool/utils.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,19 @@
5353
from schema_salad.exceptions import ValidationException
5454
from schema_salad.ref_resolver import Loader
5555

56+
if sys.version_info >= (3, 9):
57+
from importlib.resources import as_file, files
58+
else:
59+
from importlib_resources import as_file, files
60+
5661
if TYPE_CHECKING:
5762
from .command_line_tool import CallbackJob, ExpressionJob
5863
from .job import CommandLineJob, JobBase
5964
from .stdfsaccess import StdFsAccess
6065
from .workflow_job import WorkflowJob
6166

67+
__all__ = ["files", "as_file"]
68+
6269
__random_outdir: Optional[str] = None
6370

6471
CONTENT_LIMIT = 64 * 1024
@@ -368,8 +375,8 @@ def add_writable_flag(p: str) -> None:
368375
if os.path.isdir(path):
369376
if include_root:
370377
add_writable_flag(path)
371-
for root, dirs, files in os.walk(path):
372-
for name in files:
378+
for root, dirs, files_ in os.walk(path):
379+
for name in files_:
373380
add_writable_flag(os.path.join(root, name))
374381
for name in dirs:
375382
add_writable_flag(os.path.join(root, name))
@@ -380,8 +387,8 @@ def add_writable_flag(p: str) -> None:
380387
def ensure_non_writable(path: str) -> None:
381388
"""Attempt to change permissions to ensure that a path is not writable."""
382389
if os.path.isdir(path):
383-
for root, dirs, files in os.walk(path):
384-
for name in files:
390+
for root, dirs, files_ in os.walk(path):
391+
for name in files_:
385392
j = os.path.join(root, name)
386393
st = os.stat(j)
387394
mode = stat.S_IMODE(st.st_mode)

cwltool/validate_js.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
from cwl_utils.errors import SubstitutionError
1919
from cwl_utils.expression import scanner as scan_expression
2020
from cwl_utils.sandboxjs import code_fragment_to_js, exec_js_process
21-
from importlib_resources import files
2221
from ruamel.yaml.comments import CommentedMap, CommentedSeq
2322
from schema_salad.avro.schema import (
2423
ArraySchema,
@@ -33,6 +32,7 @@
3332

3433
from .errors import WorkflowException
3534
from .loghandler import _logger
35+
from .utils import files
3636

3737

3838
def is_expression(tool: Any, schema: Optional[Schema]) -> bool:

docs/requirements.txt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,5 @@ sphinx >= 2.2
22
sphinx-rtd-theme==1.3.0
33
sphinx-autoapi
44
sphinx-autodoc-typehints
5-
typed_ast;python_version<'3.8'
65
sphinxcontrib-autoprogram
7-
importlib_resources
6+
importlib_resources;python_version<'3.9'

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ requires = [
55
"mypy==1.6.0", # also update mypy-requirements.txt
66
"types-requests",
77
"types-psutil",
8-
"importlib_resources>=1.4", # equivalent to Python 3.9
8+
"importlib_resources>=1.4;python_version<'3.9'",
99
"ruamel.yaml>=0.16.0,<0.18",
1010
"schema-salad>=8.4.20230426093816,<9",
1111
"cwl-utils>=0.22,!=0.30",

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ schema-salad>=8.4.20230426093816,<9
66
prov==1.5.1
77
mypy-extensions
88
psutil>=5.6.6
9-
importlib_resources>=1.4 # equivalent to Python 3.9
9+
importlib_resources>=1.4;python_version<'3.9'
1010
coloredlogs
1111
pydot>=1.4.1
1212
argcomplete>=1.12.0

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@
109109
"prov == 1.5.1",
110110
"mypy-extensions",
111111
"psutil >= 5.6.6",
112-
"importlib_resources>=1.4",
112+
"importlib_resources>=1.4;python_version<'3.9'",
113113
"coloredlogs",
114114
"pydot >= 1.4.1",
115115
"argcomplete",

tests/test_mpi.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
from typing import Any, Generator, List, MutableMapping, Optional, Tuple
88

99
import pytest
10-
from importlib_resources import files
1110
from ruamel.yaml.comments import CommentedMap, CommentedSeq
1211
from schema_salad.avro.schema import Names
1312
from schema_salad.utils import yaml_no_ts
@@ -19,6 +18,7 @@
1918
from cwltool.context import LoadingContext, RuntimeContext
2019
from cwltool.main import main
2120
from cwltool.mpi import MpiConfig, MPIRequirementName
21+
from cwltool.utils import files
2222

2323
from .util import get_data, working_directory
2424

tests/util.py

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,22 @@
1+
"""Test functions."""
2+
import atexit
13
import contextlib
24
import io
35
import json
46
import os
57
import shutil
68
import subprocess
79
import sys
10+
from contextlib import ExitStack
811
from pathlib import Path
912
from typing import Dict, Generator, List, Mapping, Optional, Tuple, Union
1013

1114
import pytest
12-
from pkg_resources import Requirement, ResolutionError, resource_filename
1315

1416
from cwltool.env_to_stdout import deserialize_env
1517
from cwltool.main import main
1618
from cwltool.singularity import is_version_2_6, is_version_3_or_newer
19+
from cwltool.utils import as_file, files
1720

1821

1922
def force_default_container(default_container_id: str, _: str) -> str:
@@ -25,12 +28,15 @@ def get_data(filename: str) -> str:
2528
filename = os.path.normpath(filename)
2629
filepath = None
2730
try:
28-
filepath = resource_filename(Requirement.parse("cwltool"), filename)
29-
except ResolutionError:
31+
file_manager = ExitStack()
32+
atexit.register(file_manager.close)
33+
traversable = files("cwltool") / filename
34+
filepath = file_manager.enter_context(as_file(traversable))
35+
except ModuleNotFoundError:
3036
pass
3137
if not filepath or not os.path.isfile(filepath):
32-
filepath = os.path.join(os.path.dirname(__file__), os.pardir, filename)
33-
return str(Path(filepath).resolve())
38+
filepath = Path(os.path.dirname(__file__)) / ".." / filename
39+
return str(filepath.resolve())
3440

3541

3642
needs_docker = pytest.mark.skipif(

0 commit comments

Comments
 (0)