Skip to content

Commit d8148cc

Browse files
authored
Fix potential problem with cog script for vendored (#4353)
2 parents abe6580 + 3cfe932 commit d8148cc

File tree

4 files changed

+35
-30
lines changed

4 files changed

+35
-30
lines changed

pkg_resources/extern/__init__.py

+6-6
Original file line numberDiff line numberDiff line change
@@ -72,18 +72,18 @@ def install(self):
7272

7373
# [[[cog
7474
# import cog
75-
# from tools.vendored import yield_root_package
76-
# names = "\n".join(f" {x!r}," for x in yield_root_package('pkg_resources'))
75+
# from tools.vendored import yield_top_level
76+
# names = "\n".join(f" {x!r}," for x in yield_top_level('pkg_resources'))
7777
# cog.outl(f"names = (\n{names}\n)")
7878
# ]]]
7979
names = (
80+
'backports',
81+
'importlib_resources',
82+
'jaraco',
83+
'more_itertools',
8084
'packaging',
8185
'platformdirs',
82-
'jaraco',
83-
'importlib_resources',
8486
'zipp',
85-
'more_itertools',
86-
'backports',
8787
)
8888
# [[[end]]]
8989
VendorImporter(__name__, names).install()

setuptools/extern/__init__.py

+9-9
Original file line numberDiff line numberDiff line change
@@ -72,20 +72,20 @@ def install(self):
7272

7373
# [[[cog
7474
# import cog
75-
# from tools.vendored import yield_root_package
76-
# names = "\n".join(f" {x!r}," for x in yield_root_package('setuptools'))
75+
# from tools.vendored import yield_top_level
76+
# names = "\n".join(f" {x!r}," for x in yield_top_level('setuptools'))
7777
# cog.outl(f"names = (\n{names}\n)")
7878
# ]]]
7979
names = (
80-
'packaging',
81-
'ordered_set',
82-
'more_itertools',
83-
'jaraco',
84-
'importlib_resources',
80+
'backports',
8581
'importlib_metadata',
86-
'zipp',
82+
'importlib_resources',
83+
'jaraco',
84+
'more_itertools',
85+
'ordered_set',
86+
'packaging',
8787
'tomli',
88-
'backports',
88+
'zipp',
8989
)
9090
# [[[end]]]
9191
VendorImporter(__name__, names, 'setuptools._vendor').install()

tools/vendored.py

+17-12
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
def remove_all(paths):
99
for path in paths:
10-
path.rmtree() if path.isdir() else path.remove()
10+
path.rmtree() if path.is_dir() else path.remove()
1111

1212

1313
def update_vendored():
@@ -165,18 +165,23 @@ def update_setuptools():
165165
rewrite_more_itertools(vendor / "more_itertools")
166166

167167

168-
def yield_root_package(name):
169-
"""Useful when defining the MetaPathFinder
170-
>>> examples = set(yield_root_package("setuptools")) & {"jaraco", "backports"}
168+
def yield_top_level(name):
169+
"""Iterate over all modules and (top level) packages vendored
170+
>>> roots = set(yield_top_level("setuptools"))
171+
>>> examples = roots & {"jaraco", "backports", "zipp"}
171172
>>> list(sorted(examples))
172-
['backports', 'jaraco']
173-
"""
174-
vendored = Path(f"{name}/_vendor/vendored.txt")
175-
yield from (
176-
line.partition("=")[0].partition(".")[0].replace("-", "_")
177-
for line in vendored.read_text(encoding="utf-8").splitlines()
178-
if line and not line.startswith("#")
179-
)
173+
['backports', 'jaraco', 'zipp']
174+
"""
175+
vendor = Path(f"{name}/_vendor")
176+
ignore = {"__pycache__", "__init__.py", ".ruff_cache"}
177+
178+
for item in sorted(vendor.iterdir()):
179+
if item.name in ignore:
180+
continue
181+
if item.is_dir() and item.suffix != ".dist-info":
182+
yield str(item.name)
183+
if item.is_file() and item.suffix == ".py":
184+
yield str(item.stem)
180185

181186

182187
__name__ == '__main__' and update_vendored()

tox.ini

+3-3
Original file line numberDiff line numberDiff line change
@@ -70,14 +70,14 @@ commands =
7070

7171
[testenv:{vendor,check-extern}]
7272
skip_install = True
73-
allowlist_externals = sh
73+
allowlist_externals = git, sh
7474
deps =
7575
path
7676
cogapp
7777
commands =
7878
vendor: python -m tools.vendored
79-
vendor: sh -c "git grep -l -F '\[\[\[cog' | xargs cog -I {toxinidir} -r" # update `*.extern`
80-
check-extern: sh -c "git grep -l -F '\[\[\[cog' | xargs cog -I {toxinidir} --check"
79+
sh -c "git grep -l -F '\[\[\[cog' | xargs -t cog -I {toxinidir} -r" # update `*.extern`
80+
check-extern: git diff --exit-code
8181

8282
[testenv:generate-validation-code]
8383
skip_install = True

0 commit comments

Comments
 (0)