Include images with the mirror package (#15659)
Co-authored-by: Carlos Mocholí <carlossmocholi@gmail.com>
This commit is contained in:
parent
aab8f48749
commit
c06ea41056
|
@ -1,8 +1,9 @@
|
|||
import os
|
||||
import re
|
||||
import shutil
|
||||
from itertools import chain
|
||||
from os.path import dirname, isfile
|
||||
from pathlib import Path
|
||||
from pprint import pprint
|
||||
from typing import Dict, List, Optional, Sequence, Tuple
|
||||
|
||||
import pkg_resources
|
||||
|
@ -65,6 +66,7 @@ def _replace_imports(lines: List[str], mapping: List[Tuple[str, str]]) -> List[s
|
|||
def copy_replace_imports(
|
||||
source_dir: str, source_imports: List[str], target_imports: List[str], target_dir: Optional[str] = None
|
||||
) -> None:
|
||||
"""Copy package content with import adjustments."""
|
||||
print(f"Replacing imports: {locals()}")
|
||||
assert len(source_imports) == len(target_imports), (
|
||||
"source and target imports must have the same length, "
|
||||
|
@ -75,19 +77,27 @@ def copy_replace_imports(
|
|||
|
||||
ls = _retrieve_files(source_dir)
|
||||
for fp in ls:
|
||||
if fp.endswith(".py") or not fp.endswith(".pyc"):
|
||||
with open(fp, encoding="utf-8") as fo:
|
||||
try:
|
||||
lines = fo.readlines()
|
||||
except UnicodeDecodeError:
|
||||
# a binary file, skip
|
||||
print(f"Skipped replacing imports for {fp}")
|
||||
continue
|
||||
lines = _replace_imports(lines, list(zip(source_imports, target_imports)))
|
||||
fp_new = fp.replace(source_dir, target_dir)
|
||||
os.makedirs(os.path.dirname(fp_new), exist_ok=True)
|
||||
with open(fp_new, "w", encoding="utf-8") as fo:
|
||||
fo.writelines(lines)
|
||||
fp_new = fp.replace(source_dir, target_dir)
|
||||
_, ext = os.path.splitext(fp)
|
||||
if ext in (".png", ".jpg", ".ico"):
|
||||
os.makedirs(dirname(fp_new), exist_ok=True)
|
||||
if not isfile(fp_new):
|
||||
shutil.copy(fp, fp_new)
|
||||
continue
|
||||
elif ext in (".pyc",):
|
||||
continue
|
||||
# Try to parse everything else
|
||||
with open(fp, encoding="utf-8") as fo:
|
||||
try:
|
||||
lines = fo.readlines()
|
||||
except UnicodeDecodeError:
|
||||
# a binary file, skip
|
||||
print(f"Skipped replacing imports for {fp}")
|
||||
continue
|
||||
lines = _replace_imports(lines, list(zip(source_imports, target_imports)))
|
||||
os.makedirs(os.path.dirname(fp_new), exist_ok=True)
|
||||
with open(fp_new, "w", encoding="utf-8") as fo:
|
||||
fo.writelines(lines)
|
||||
|
||||
|
||||
def create_mirror_package(source_dir: str, package_mapping: Dict[str, str]) -> None:
|
||||
|
@ -129,7 +139,7 @@ class AssistantCLI:
|
|||
req = list(pkg_resources.parse_requirements(ln_))[0]
|
||||
if req.name not in packages:
|
||||
final.append(line)
|
||||
pprint(final)
|
||||
print(final)
|
||||
path.write_text("\n".join(final))
|
||||
|
||||
@staticmethod
|
||||
|
@ -147,7 +157,7 @@ class AssistantCLI:
|
|||
def copy_replace_imports(
|
||||
source_dir: str, source_import: str, target_import: str, target_dir: Optional[str] = None
|
||||
) -> None:
|
||||
"""Recursively replace imports in given folder."""
|
||||
"""Copy package content with import adjustments."""
|
||||
source_imports = source_import.strip().split(",")
|
||||
target_imports = target_import.strip().split(",")
|
||||
copy_replace_imports(source_dir, source_imports, target_imports, target_dir=target_dir)
|
||||
|
|
Loading…
Reference in New Issue