Skip to content

Commit 6968133

Browse files
authored
Merge pull request #42 from commit-0/handle-log-level
Handle log level
2 parents 3894eab + e02e743 commit 6968133

File tree

8 files changed

+40
-13
lines changed

8 files changed

+40
-13
lines changed

baselines/run_agent.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ def run_agent_for_repo(
5252
repo_name = repo_name.replace(".", "-")
5353

5454
# Call the commit0 get-tests command to retrieve test files
55-
test_files_str = get_tests(repo_name, stdout=False)
55+
test_files_str = get_tests(repo_name, verbose=0)
5656
test_files = sorted(list(set([i.split(":")[0] for i in test_files_str])))
5757

5858
repo_path = os.path.join(commit0_config.base_dir, repo_name)

commit0/cli.py

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,13 @@ def build(
7777
),
7878
dataset_split: str = typer.Option("test", help="Split of the Huggingface dataset"),
7979
num_workers: int = typer.Option(8, help="Number of workers"),
80+
verbose: int = typer.Option(
81+
1,
82+
"--verbose",
83+
"-v",
84+
help="Set this to 2 for more logging information",
85+
count=True,
86+
),
8087
) -> None:
8188
"""Commit0 build a repository."""
8289
check_valid(repo_split, SPLIT)
@@ -91,6 +98,7 @@ def build(
9198
dataset_split,
9299
repo_split,
93100
num_workers,
101+
verbose,
94102
)
95103

96104

@@ -106,7 +114,7 @@ def get_tests(
106114

107115
typer.echo(f"Getting tests for repository: {repo_name}")
108116

109-
commit0.harness.get_pytest_ids.main(repo_name, stdout=True)
117+
commit0.harness.get_pytest_ids.main(repo_name, verbose=1)
110118

111119

112120
@app.command()
@@ -132,6 +140,13 @@ def test(
132140
reference: Annotated[
133141
bool, typer.Option("--reference", help="Test the reference commit.")
134142
] = False,
143+
verbose: int = typer.Option(
144+
1,
145+
"--verbose",
146+
"-v",
147+
help="Set this to 2 for more logging information",
148+
count=True,
149+
),
135150
) -> None:
136151
"""Run tests on a Commit0 repository."""
137152
if repo_or_repo_path.endswith("/"):
@@ -160,7 +175,7 @@ def test(
160175
backend,
161176
timeout,
162177
num_cpus,
163-
stdout=True,
178+
verbose,
164179
)
165180

166181

commit0/harness/build.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ def main(
1919
dataset_split: str,
2020
repo_split: str,
2121
num_workers: int,
22+
verbose: int,
2223
) -> None:
2324
dataset: Iterator[RepoInstance] = load_dataset(dataset_name, split=dataset_split) # type: ignore
2425
specs = []
@@ -30,7 +31,7 @@ def main(
3031
specs.append(spec)
3132

3233
client = docker.from_env()
33-
build_repo_images(client, specs, num_workers)
34+
build_repo_images(client, specs, num_workers, verbose)
3435
for spec in specs:
3536
image = client.images.get(spec.repo_image_key)
3637
repository, tag = spec.repo_image_tag.split(":")

commit0/harness/docker_build.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,7 @@ def build_repo_images(
196196
client: docker.DockerClient,
197197
dataset: list,
198198
max_workers: int = 4,
199+
verbose: int = 1,
199200
) -> tuple[list[str], list[str]]:
200201
"""Builds the repo images required for the dataset if they do not already exist.
201202
@@ -204,6 +205,7 @@ def build_repo_images(
204205
client (docker.DockerClient): Docker client to use for building the images
205206
dataset (list): List of test specs or dataset to build images for
206207
max_workers (int): Maximum number of workers to use for building images
208+
verbose (int): Level of verbosity
207209
208210
Return:
209211
------

commit0/harness/evaluate.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ def main(
5757
backend,
5858
timeout,
5959
num_cpus,
60-
stdout=False,
60+
verbose=0,
6161
): None
6262
for repo, test_dir in pairs
6363
}
@@ -70,7 +70,7 @@ def main(
7070
for name in tqdm(log_dirs):
7171
report_file = os.path.join(name, "report.json")
7272
name = name.split("/")[2]
73-
test_ids = get_tests(name, stdout=False)
73+
test_ids = get_tests(name, verbose=0)
7474
if not os.path.exists(report_file):
7575
out.append(
7676
{

commit0/harness/get_pytest_ids.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from typing import List
33

44

5-
def main(repo: str, stdout: bool) -> List[str]:
5+
def main(repo: str, verbose: int) -> List[str]:
66
repo = repo.lower()
77
repo = repo.replace(".", "-")
88
out = ""
@@ -13,7 +13,7 @@ def main(repo: str, stdout: bool) -> List[str]:
1313
if file:
1414
content = file.read().decode("utf-8")
1515
out += content
16-
if stdout:
16+
if verbose:
1717
print(content)
1818
out = out.split("\n")
1919
return out

commit0/harness/run_pytest_ids.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ def main(
3737
backend: str,
3838
timeout: int,
3939
num_cpus: int,
40-
stdout: bool,
40+
verbose: int,
4141
) -> None:
4242
"""Runs the pytests for repos in a dataset.
4343
@@ -64,15 +64,17 @@ def main(
6464
log_dir = RUN_PYTEST_LOG_DIR / repo_name / branch / hashed_test_ids
6565
log_dir.mkdir(parents=True, exist_ok=True)
6666
log_file = log_dir / "run_pytest.log"
67-
logger = setup_logger(repo_name, log_file)
67+
logger = setup_logger(repo_name, log_file, verbose=verbose)
6868

6969
try:
7070
local_repo = git.Repo(repo_or_repo_dir)
71+
logger.info(f"Loaded a git repo from {repo_or_repo_dir}")
7172
except git.exc.NoSuchPathError: # type: ignore
7273
repo_dir = os.path.join(base_dir, repo_name)
7374
logger.error(f"{repo_or_repo_dir} is not a git dir, trying {repo_dir} again")
7475
try:
7576
local_repo = git.Repo(repo_dir)
77+
logger.info(f"Retried succeeded. Loaded a git repo from {repo_dir}")
7678
except git.exc.NoSuchPathError: # type: ignore
7779
raise Exception(
7880
f"{repo_dir} and {repo_or_repo_dir} are not git directories.\nUsage: commit0 test {{repo_dir}} {{branch}} {{test_ids}}"
@@ -133,6 +135,9 @@ def main(
133135
logger,
134136
)
135137
close_logger(logger)
138+
if verbose > 0:
139+
test_output = Path(log_dir / "test_output.txt")
140+
print(test_output.read_text())
136141
pytest_exit_code = Path(log_dir / "pytest_exit_code.txt").read_text().strip()
137142
sys.exit(int(pytest_exit_code))
138143
except EvaluationError as e:

commit0/harness/utils.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,18 +27,22 @@ def __str__(self):
2727
)
2828

2929

30-
def setup_logger(repo: str, log_file: Path, mode: str = "w") -> logging.Logger:
30+
def setup_logger(
31+
repo: str, log_file: Path, mode: str = "w", verbose: int = 1
32+
) -> logging.Logger:
3133
"""Used for logging the build process of images and running containers.
3234
It writes logs to the log file.
3335
"""
3436
log_file.parent.mkdir(parents=True, exist_ok=True)
3537
logger = logging.getLogger(f"{repo}.{log_file.name}")
3638
handler = logging.FileHandler(log_file, mode=mode)
37-
stdout_handler = logging.StreamHandler(sys.stdout)
38-
logger.addHandler(stdout_handler)
3939
formatter = logging.Formatter("%(asctime)s - %(levelname)s - %(message)s")
4040
handler.setFormatter(formatter)
4141
logger.addHandler(handler)
42+
if verbose == 2:
43+
stdout_handler = logging.StreamHandler(sys.stdout)
44+
stdout_handler.setFormatter(formatter)
45+
logger.addHandler(stdout_handler)
4246
logger.setLevel(logging.INFO)
4347
logger.propagate = False
4448
setattr(logger, "log_file", log_file)

0 commit comments

Comments
 (0)