Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 5d335f9

Browse files
committed
Remove --debug-build, add --cargo-profile instead
1 parent 1dcfa19 commit 5d335f9

3 files changed

Lines changed: 17 additions & 33 deletions

File tree

mypy_primer/globals.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ class _Args:
1818
type_checker: str
1919
mypyc_compile_level: int | None
2020
mypy_install_librt: bool
21-
debug_build: bool
21+
cargo_profile: str | None
2222

2323
custom_typeshed_repo: str
2424
new_typeshed: str | None
@@ -94,9 +94,8 @@ def parse_options(argv: list[str]) -> _Args:
9494
),
9595
)
9696
type_checker_group.add_argument(
97-
"--debug-build",
98-
action="store_true",
99-
help="build the type checker in debug mode (only relevant for pyrefly/ty)",
97+
"--cargo-profile",
98+
help="cargo build profile to use (e.g., 'dev', 'release', or custom profiles; only relevant for pyrefly/ty)",
10099
)
101100
type_checker_group.add_argument(
102101
"--mypyc-compile-level",
@@ -240,9 +239,9 @@ def parse_options(argv: list[str]) -> _Args:
240239
parser.error("--shard-index and --num-shards must be used together")
241240
if ret.type_checker != "mypy" and ret.mypyc_compile_level is not None:
242241
parser.error("--mypyc-compile-level can only be used with --type-checker=mypy")
243-
if ret.debug_build and ret.type_checker not in {"pyrefly", "ty"}:
242+
if ret.cargo_profile is not None and ret.type_checker not in {"pyrefly", "ty"}:
244243
parser.error(
245-
"`--debug-build` can only be used with `--type-checker=pyrefly` or `--type-checker=ty`"
244+
"`--cargo-profile` can only be used with `--type-checker=pyrefly` or `--type-checker=ty`"
246245
)
247246

248247
return ret

mypy_primer/main.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
from mypy_primer.model import Project, TypeCheckResult
2020
from mypy_primer.projects import get_projects
2121
from mypy_primer.type_checker import (
22-
RustBuildMode,
2322
setup_mypy,
2423
setup_pyrefly,
2524
setup_pyright,
@@ -55,14 +54,14 @@ def setup_type_checker(
5554
setup_fn = setup_ty
5655
kwargs = {
5756
"repo": ARGS.repo,
58-
"build_mode": (RustBuildMode.DEBUG if ARGS.debug_build else RustBuildMode.RELEASE),
57+
"build_profile": ARGS.cargo_profile or "release",
5958
}
6059
elif ARGS.type_checker == "pyrefly":
6160
setup_fn = setup_pyrefly
6261
kwargs = {
6362
"repo": ARGS.repo,
6463
"typeshed_dir": typeshed_dir,
65-
"build_mode": (RustBuildMode.DEBUG if ARGS.debug_build else RustBuildMode.RELEASE),
64+
"build_profile": ARGS.cargo_profile or "release",
6665
}
6766
else:
6867
raise ValueError(f"Unknown type checker {ARGS.type_checker}")

mypy_primer/type_checker.py

Lines changed: 10 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
from __future__ import annotations
22

3-
import enum
43
import os
54
import shutil
65
import subprocess
@@ -132,7 +131,7 @@ async def setup_ty(
132131
ty_dir: Path,
133132
revision_like: RevisionLike,
134133
*,
135-
build_mode: RustBuildMode,
134+
build_profile: str,
136135
repo: str | None,
137136
) -> Path:
138137
ty_dir.mkdir(parents=True, exist_ok=True)
@@ -148,7 +147,7 @@ async def setup_ty(
148147

149148
try:
150149
await run(
151-
["cargo", "build", "--bin", "ty", *build_mode.flags()],
150+
["cargo", "build", "--bin", "ty", "--profile", build_profile],
152151
cwd=repo_dir,
153152
env=env,
154153
output=True,
@@ -159,7 +158,9 @@ async def setup_ty(
159158
print(e.stderr, file=sys.stderr)
160159
raise e
161160

162-
ty_exe = cargo_target_dir / build_mode.artifact_directory() / "ty"
161+
# Cargo uses "debug" as the directory name for the "dev" profile
162+
artifact_dir = "debug" if build_profile == "dev" else build_profile
163+
ty_exe = cargo_target_dir / artifact_dir / "ty"
163164
assert ty_exe.exists()
164165
return ty_exe
165166

@@ -168,7 +169,7 @@ async def setup_pyrefly(
168169
pyrefly_dir: Path,
169170
revision_like: RevisionLike,
170171
*,
171-
build_mode: RustBuildMode,
172+
build_profile: str,
172173
repo: str | None,
173174
typeshed_dir: Path | None,
174175
) -> Path:
@@ -187,7 +188,7 @@ async def setup_pyrefly(
187188
if not os.environ.get("MYPY_PRIMER_NO_REBUILD", False):
188189
try:
189190
await run(
190-
["cargo", "build", *build_mode.flags()],
191+
["cargo", "build", "--profile", build_profile],
191192
cwd=repo_dir / "pyrefly",
192193
env=env,
193194
output=True,
@@ -198,7 +199,9 @@ async def setup_pyrefly(
198199
print(e.stderr, file=sys.stderr)
199200
raise e
200201

201-
pyrefly_exe = repo_dir / "target" / build_mode.artifact_directory() / "pyrefly"
202+
# Cargo uses "debug" as the directory name for the "dev" profile
203+
artifact_dir = "debug" if build_profile == "dev" else build_profile
204+
pyrefly_exe = repo_dir / "target" / artifact_dir / "pyrefly"
202205
assert pyrefly_exe.exists()
203206
return pyrefly_exe
204207

@@ -208,20 +211,3 @@ async def setup_typeshed(parent_dir: Path, *, repo: str, revision_like: Revision
208211
shutil.rmtree(parent_dir)
209212
parent_dir.mkdir(exist_ok=True)
210213
return await ensure_repo_at_revision(repo, parent_dir, revision_like)
211-
212-
213-
class RustBuildMode(enum.Enum):
214-
RELEASE = "release"
215-
DEBUG = "debug"
216-
217-
def flags(self) -> list[str]:
218-
if self == RustBuildMode.RELEASE:
219-
return ["--release"]
220-
else:
221-
return []
222-
223-
def artifact_directory(self) -> Path:
224-
if self == RustBuildMode.RELEASE:
225-
return Path("release")
226-
else:
227-
return Path("debug")

0 commit comments

Comments
 (0)