-
-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathargs.py
More file actions
127 lines (119 loc) · 4.02 KB
/
Copy pathargs.py
File metadata and controls
127 lines (119 loc) · 4.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
"""Argument parsing for the CLI."""
import argparse
from pathlib import Path
from .commands import (
benchmark_command,
list_binaries_command,
list_environments_command,
)
def parse_args():
"""Parse command line arguments using proper subcommands."""
parser = argparse.ArgumentParser(
description="Memory tracker for CPython commits",
formatter_class=argparse.RawDescriptionHelpFormatter,
)
# Create subparsers
subparsers = parser.add_subparsers(
dest="command", help="Available commands", metavar="COMMAND"
)
# List binaries command
list_binaries_parser = subparsers.add_parser(
"list-binaries", help="List available registered binaries from server"
)
list_binaries_parser.add_argument(
"-v",
"--verbose",
action="count",
default=0,
help="Increase verbosity (can be used multiple times, e.g. -vvv)",
)
list_binaries_parser.add_argument(
"--server-url",
default="http://localhost:8000",
help="Server URL for API calls (default: http://localhost:8000)",
)
list_binaries_parser.set_defaults(func=list_binaries_command)
# List environments command
list_environments_parser = subparsers.add_parser(
"list-environments", help="List available registered environments from server"
)
list_environments_parser.add_argument(
"-v",
"--verbose",
action="count",
default=0,
help="Increase verbosity (can be used multiple times, e.g. -vvv)",
)
list_environments_parser.add_argument(
"--server-url",
default="http://localhost:8000",
help="Server URL for API calls (default: http://localhost:8000)",
)
list_environments_parser.set_defaults(func=list_environments_command)
# Benchmark command
benchmark_parser = subparsers.add_parser(
"benchmark", help="Run memory benchmarks on CPython commits"
)
benchmark_parser.add_argument(
"commit_range",
help="Git commit range to benchmark (e.g., HEAD~5..HEAD, HEAD^, commit_sha)",
)
benchmark_parser.add_argument(
"--repo-path",
"-r",
type=Path,
help="Path to CPython repository. If not provided, will clone CPython to a temporary directory.",
)
benchmark_parser.add_argument(
"--output-dir",
"-o",
type=Path,
default=Path("./benchmark_results"),
help="Directory to store benchmark results (default: ./benchmark_results)",
)
benchmark_parser.add_argument(
"--configure-flags",
"-c",
default="--enable-optimizations",
help="Configure flags for CPython build (default: --enable-optimizations)",
)
benchmark_parser.add_argument(
"--make-flags",
"-m",
default="-j4",
help="Make flags for CPython build (default: -j4)",
)
benchmark_parser.add_argument(
"-v",
"--verbose",
action="count",
default=0,
help="Increase verbosity (can be used multiple times, e.g. -vvv)",
)
benchmark_parser.add_argument(
"--binary-id",
required=True,
help="Binary ID to use for this run (e.g., optimized, debug, default)",
)
benchmark_parser.add_argument(
"--environment-id",
required=True,
help="Environment ID to use for this run (e.g., linux-x86_64, macos-x86_64)",
)
benchmark_parser.add_argument(
"-f",
"--force",
action="store_true",
help="Force overwrite existing output directories for commits",
)
benchmark_parser.add_argument(
"--auth-token",
help="Authentication token for uploading results to server. Can also be set via MEMORY_TRACKER_TOKEN environment variable.",
)
benchmark_parser.add_argument(
"--api-base",
default="http://localhost:8000",
help="Base URL for the memory tracker API (default: http://localhost:8000)",
)
benchmark_parser.set_defaults(func=benchmark_command)
return parser.parse_args()