|
25 | 25 | from importlib.util import module_from_spec, spec_from_file_location
|
26 | 26 | from itertools import chain, groupby
|
27 | 27 | from types import ModuleType
|
28 |
| -from typing import List |
| 28 | +from typing import List, Sequence |
29 | 29 |
|
30 | 30 | from pkg_resources import parse_requirements
|
31 | 31 |
|
@@ -500,18 +500,22 @@ def _download_frontend(root: str = _PROJECT_ROOT):
|
500 | 500 | print("The Lightning UI downloading has failed!")
|
501 | 501 |
|
502 | 502 |
|
503 |
| -def _relax_require_versions(source_dir: str = "src", req_dir: str = "requirements") -> None: |
| 503 | +def _relax_require_versions( |
| 504 | + source_dir: str = "src", req_dir: str = "requirements", strict_pkgs: Sequence[str] = ("lightning_app",) |
| 505 | +) -> None: |
504 | 506 | """Parse the base requirements and append as version adjustments if needed `pkg>=X1.Y1.Z1,==X2.Y2.*`.
|
505 | 507 |
|
506 | 508 | >>> _relax_require_versions("../src", "../requirements")
|
507 | 509 | """
|
| 510 | + strict_pkgs = strict_pkgs or tuple() |
508 | 511 | reqs = load_requirements(req_dir, file_name="base.txt")
|
509 | 512 | for i, req in enumerate(parse_requirements(reqs)):
|
510 |
| - ver_ = parse_version_from_file(os.path.join(source_dir, req.name)) |
511 |
| - if not ver_: |
| 513 | + ver = parse_version_from_file(os.path.join(source_dir, req.name)) |
| 514 | + if not ver: |
512 | 515 | continue
|
513 |
| - ver2 = ".".join(ver_.split(".")[:2] + ["*"]) |
514 |
| - reqs[i] = f"{req}, =={ver2}" |
| 516 | + if req.name not in strict_pkgs: |
| 517 | + ver = ".".join(ver.split(".")[:2] + ["*"]) |
| 518 | + reqs[i] = f"{req}, =={ver}" |
515 | 519 |
|
516 | 520 | with open(os.path.join(req_dir, "base.txt"), "w") as fp:
|
517 | 521 | fp.writelines([ln + os.linesep for ln in reqs])
|
|
0 commit comments