Skip to content

Commit ac667a9

Browse files
authored
Merge pull request #10 from commit-0/errors
More lints.
2 parents 2a81d68 + feb03f9 commit ac667a9

File tree

8 files changed

+178
-204
lines changed

8 files changed

+178
-204
lines changed

commit0/__main__.py

Lines changed: 9 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,18 @@
1-
import argparse
21
import commit0.harness.run_pytest_ids
32
import commit0.harness.build
43
import commit0.harness.setup
4+
import sys
55

66

77
def main() -> None:
8-
parser = argparse.ArgumentParser(description="Commit0 version control system")
9-
subparsers = parser.add_subparsers(dest="command", help="Available commands")
10-
11-
commit0.harness.setup.add_init_args(subparsers.add_parser("clone"))
12-
commit0.harness.build.add_init_args(subparsers.add_parser("build"))
13-
commit0.harness.run_pytest_ids.add_init_args(subparsers.add_parser("test"))
14-
15-
args = parser.parse_args()
16-
17-
if args.command == "clone":
18-
commit0.harness.setup.run(args)
19-
elif args.command == "build":
20-
commit0.harness.build.run(args)
21-
elif args.command == "test":
22-
commit0.harness.run_pytest_ids.run(args)
23-
else:
24-
parser.print_help()
8+
command = sys.argv[1]
9+
10+
if command == "clone":
11+
commit0.harness.setup.main()
12+
elif command == "build":
13+
commit0.harness.build.main()
14+
elif command == "test":
15+
commit0.harness.run_pytest_ids.main()
2516

2617

2718
if __name__ == "__main__":

commit0/harness/build.py

Lines changed: 7 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,24 @@
1-
import argparse
21
import logging
32

43
import docker
54
from datasets import load_dataset
65
from typing import Iterator
6+
7+
from omegaconf import DictConfig
78
from commit0.harness.docker_build import build_repo_images
89
from commit0.harness.spec import make_spec
10+
from commit0.harness.constants import RepoInstance
11+
import hydra
912

1013
logging.basicConfig(
1114
level=logging.INFO, format="%(asctime)s - %(name)s - %(levelname)s - %(message)s"
1215
)
1316
logger = logging.getLogger(__name__)
1417

1518

16-
def main(
17-
hf_name: str,
18-
base_dir: str,
19-
config_file: str,
20-
) -> None:
21-
dataset: Iterator[RepoInstance] = load_dataset(hf_name, split="test")
19+
@hydra.main(version_base=None, config_path="configs", config_name="base")
20+
def main(config: DictConfig) -> None:
21+
dataset: Iterator[RepoInstance] = load_dataset(hf_name, split="test") # type: ignore
2222
specs = []
2323
for example in dataset:
2424
spec = make_spec(example)
@@ -29,34 +29,4 @@ def main(
2929
logger.info("Done building docker images")
3030

3131

32-
def add_init_args(parser: argparse.ArgumentParser) -> None:
33-
parser.add_argument(
34-
"--hf_name",
35-
type=str,
36-
help="HF dataset name",
37-
default="wentingzhao/commit0_docstring",
38-
)
39-
parser.add_argument(
40-
"--base_dir",
41-
type=str,
42-
default="repos/",
43-
help="base directory to write repos to",
44-
)
45-
parser.add_argument(
46-
"--config_file",
47-
type=str,
48-
default="config.yml",
49-
help="where to write config file to",
50-
)
51-
parser.set_defaults(func=run)
52-
53-
54-
def run(args: argparse.Namespace) -> None:
55-
main(
56-
hf_name=args.hf_name,
57-
base_dir=args.base_dir,
58-
config_file=args.config_file,
59-
)
60-
61-
6232
__all__ = []

commit0/harness/docker_build.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from tqdm import tqdm
77
from concurrent.futures import ThreadPoolExecutor, as_completed
88
from pathlib import Path
9-
from typing import List
9+
from typing import Any
1010

1111
from commit0.harness.constants import (
1212
BASE_IMAGE_BUILD_DIR,
@@ -22,7 +22,7 @@ def __init__(self, image_name: str, message: str, logger: logging.Logger):
2222
super().__init__(message)
2323
self.super_str = super().__str__()
2424
self.image_name = image_name
25-
self.log_path = logger.log_file
25+
self.log_path = "" # logger.log_file
2626
self.logger = logger
2727

2828
def __str__(self):
@@ -185,7 +185,7 @@ def build_base_images(client: docker.DockerClient, dataset: list) -> None:
185185
def get_repo_configs_to_build(
186186
client: docker.DockerClient,
187187
dataset: list,
188-
) -> dict[str]:
188+
) -> dict[str, Any]:
189189
"""Returns a dictionary of image names to build scripts and dockerfiles for repo images.
190190
Returns only the repo images that need to be built.
191191
@@ -229,7 +229,7 @@ def build_repo_images(
229229
client: docker.DockerClient,
230230
dataset: list,
231231
max_workers: int = 4,
232-
) -> (List[str], List[str]):
232+
) -> tuple[list[str], list[str]]:
233233
"""Builds the repo images required for the dataset if they do not already exist.
234234
235235
Args:

commit0/harness/docker_utils.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ def write_to_container(container: Container, data: str, dst: Path) -> None:
192192

193193
def cleanup_container(
194194
client: docker.DockerClient,
195-
container: docker.Container,
195+
container: Container,
196196
logger: Union[None, str, logging.Logger],
197197
) -> None:
198198
"""Stop and remove a Docker container.
@@ -251,6 +251,7 @@ def log_info(x: str) -> None:
251251
)
252252
try:
253253
# Get the PID of the container
254+
assert container_id is not None
254255
container_info = client.api.inspect_container(container_id)
255256
pid = container_info["State"].get("Pid", 0)
256257

@@ -338,7 +339,6 @@ def log_info(x: str) -> None:
338339
def log_error(x: str) -> None:
339340
return None
340341

341-
raise_error = True
342342
else:
343343
assert isinstance(logger, logging.Logger)
344344

@@ -349,8 +349,6 @@ def log_error(x: str) -> None:
349349
def log_info(x: str) -> None:
350350
logger.info(x)
351351

352-
raise_error = False
353-
354352
container = None
355353
try:
356354
log_info(f"Creating container for {image_name}...")
@@ -368,6 +366,7 @@ def log_info(x: str) -> None:
368366
# If an error occurs, clean up the container and raise an exception
369367
log_error(f"Error creating container for {image_name}: {e}")
370368
log_info(traceback.format_exc())
369+
assert container is not None
371370
cleanup_container(client, container, logger)
372371
raise
373372

commit0/harness/run_pytest_ids.py

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
1-
import argparse
21
from datasets import load_dataset
32
import docker
43
from enum import StrEnum, auto
54
import os
65
import traceback
7-
import yaml
86
from pathlib import Path
97
import logging
108

@@ -87,7 +85,7 @@ def run_docker(
8785
# Check the exit code of the command
8886
if exit_code == 0:
8987
copy_from_container(container, report_file, Path(log_dir / "report.json"))
90-
delete_file_from_container(container, report_file)
88+
delete_file_from_container(container, str(report_file))
9189

9290
except EvaluationError as e:
9391
error_msg = traceback.format_exc()
@@ -97,11 +95,12 @@ def run_docker(
9795
error_msg = (
9896
f"Error in running pytest for {spec.repo}: {e}\n"
9997
f"{traceback.format_exc()}\n"
100-
f"Check ({logger.log_file}) for more information."
98+
# f"Check ({logger.log_file}) for more information."
10199
)
102100
logger.error(error_msg)
103101
finally:
104102
# Remove repo container + image, close logger
103+
assert container is not None
105104
cleanup_container(client, container, logger)
106105
close_logger(logger)
107106

@@ -164,6 +163,7 @@ def run_modal(
164163
# execute tests
165164
process = sandbox.exec("bash", "-c", "/bin/bash /eval.sh")
166165
output = []
166+
line = ""
167167
for line in process.stdout:
168168
output.append(line)
169169
output = "".join(line)
@@ -178,8 +178,6 @@ def run_modal(
178178
print(output_s)
179179

180180
timed_out = False
181-
total_runtime = 1
182-
183181
test_output = extract_test_output(
184182
output_s, "--json-report --json-report-file=report.json"
185183
)
@@ -202,10 +200,12 @@ def run_modal(
202200
def main(config: DictConfig) -> None:
203201
OmegaConf.to_yaml(config)
204202
dataset = load_dataset(config.dataset_name, split="test")
203+
spec = None
205204
for example in dataset:
206205
if example["repo"].endswith(config.repo):
207206
spec = make_spec(example)
208207
break
208+
assert spec is not None, "No spec available"
209209

210210
hashed_test_ids = get_hash_string(config.test_ids)
211211
# set up logging
@@ -231,8 +231,4 @@ def main(config: DictConfig) -> None:
231231
run_modal(spec, logger, eval_file, config.timeout, log_dir)
232232

233233

234-
def run(args: argparse.Namespace) -> None:
235-
main()
236-
237-
238234
__all__ = []

commit0/harness/setup.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,8 @@
33

44
import docker
55
import hydra
6-
import yaml
76
from datasets import load_dataset
8-
from omegaconf import DictConfig, OmegaConf
7+
from omegaconf import DictConfig
98

109
from typing import Iterator
1110
from commit0.harness.utils import clone_repo
@@ -45,8 +44,4 @@ def main(config: DictConfig) -> None:
4544
logger.info("Done building docker images")
4645

4746

48-
def run() -> None:
49-
main()
50-
51-
5247
__all__ = []

commit0/harness/utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ def __init__(self, repo: str, message: str, logger: logging.Logger):
1414
super().__init__(message)
1515
self.super_str = super().__str__()
1616
self.repo = repo
17-
self.log_file = logger.log_file
17+
self.log_file = "" # logger.log_file
1818
self.logger = logger
1919

2020
def __str__(self):

0 commit comments

Comments
 (0)