Skip to content

Commit 7d4957f

Browse files
committed
fix depandabot issues
1 parent 8bc74d7 commit 7d4957f

35 files changed

+3623
-194
lines changed

.gitignore

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -140,28 +140,10 @@ cython_debug/
140140

141141
# our ignores
142142
.DS_Store
143-
*.cfg
144143
notebooks/
145-
__ignore/
146144
.vscode/
147-
serve_fp.py
148-
*.pt
149-
*.onnx
150-
*.pb
151-
152-
# you have recipes, and then you have dark magic!
153-
__dark_magic/
154-
__secret/
155145

156146
# not need to add / in symlink
157147
.nbx
158-
nbox-kernel
159-
yolov4-trainer-nbox
160-
example_jobs/gperc_model/
161148
ex_jobs
162-
hyperloop
163-
scripts
164-
konark/
165-
_modules/
166-
nbox/_jobs
167-
lmao_v4/
149+
scripts

nbox/cli.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
from nbox.sub_utils.ssh import tunnel
2828
from nbox.relics import Relics
2929
from nbox.lmao import LmaoCLI
30+
from nbox.lmao_v4 import LmaoCLI as Lmaov4CLI
3031
from nbox.version import __version__ as V
3132
from nbox.projects import Project
3233
from nbox.utils import logger, lo
@@ -182,7 +183,8 @@ def main():
182183
"get" : get,
183184
# "jobs" : Job,
184185
"jobs" : JobsCli,
185-
"lmao" : LmaoCLI,
186+
# "lmao" : LmaoCLI,
187+
"lmao" : Lmaov4CLI,
186188
"login" : login,
187189
"open" : open_home,
188190
"plugins" : PluginCLI,

nbox/jd_core/cli.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,13 @@
66

77
JobsCli = {
88
"status": get_job_list,
9-
"upload": partial(upload_job_folder, "job")
9+
"upload": partial(upload_job_folder, "job"),
10+
"get": Job,
1011
}
1112

1213

1314
ServeCli = {
1415
"status": print_serving_list,
15-
"upload": partial(upload_job_folder, "serving")
16+
"upload": partial(upload_job_folder, "serving"),
17+
"get": Serve,
1618
}

nbox/lib/dist.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,8 @@ def run(self):
8888
proj = Project()
8989
logger.info(lo("Project data:", **proj.data))
9090
exp_tracker = proj.get_exp_tracker()
91-
lmao_run = exp_tracker.run
92-
exp_config = ExperimentConfig.from_json(lmao_run.config)
91+
tracker_pb = exp_tracker.tracker_pb
92+
exp_config = ExperimentConfig.from_dict(U.from_struct_pb(tracker_pb.config)) # convert struct_pb -> dict tracker_pb.config
9393
kwargs = exp_config.run_kwargs
9494

9595
elif run_tag.startswith(RAW_DIST_RM_PREFIX):

nbox/lmao/common.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,12 @@ def to_dict(self):
165165
"enable_system_monitoring": self.enable_system_monitoring,
166166
}
167167

168+
@classmethod
169+
def from_dict(cls, data):
170+
if not isinstance(data, Resource):
171+
data["resource"] = resource_from_dict(data["resource"])
172+
return cls(**data)
173+
168174
def to_json(self):
169175
return json.dumps(self.to_dict())
170176

nbox/lmao_v4/__init__.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
from nbox.lmao_v4.common import get_git_details, get_lmao_stub, get_project, get_tracker_log
2+
from nbox.lmao_v4.tracker import Tracker
3+
from nbox.lmao_v4.cli import LmaoCLI

nbox/lmao_v4/cli.py

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
"""
2+
NimbleBox LMAO is our general purpose observability tool for any kind of computation you might have.
3+
"""
4+
5+
from typing import Optional
6+
from dateparser import parse as parse_date
7+
from google.protobuf.timestamp_pb2 import Timestamp
8+
9+
from nbox.utils import logger
10+
from nbox.auth import secret, AuthConfig
11+
from nbox import messages as mpb
12+
13+
# all the sublime -> hyperloop stuff
14+
from nbox.lmao_v4.proto.project_pb2 import ListProjectsRequest, ListProjectsResponse
15+
from nbox.lmao_v4.proto.logs_pb2 import TrackerLogRequest, TrackerLogResponse
16+
from nbox.lmao_v4 import common
17+
18+
class Project:
19+
def list(self):
20+
lmao_stub = common.get_lmao_stub()
21+
out: ListProjectsResponse = lmao_stub.ListProjects(ListProjectsRequest())
22+
return out
23+
24+
25+
def serving_logs(
26+
project_id: str,
27+
tracker_id: str,
28+
key: str = "",
29+
after: Optional[str] = "",
30+
before: Optional[str] = "",
31+
limit: int = 100,
32+
f: str = "",
33+
):
34+
"""
35+
Get your logs from a serving by key and time range.
36+
37+
```bash
38+
nbx lmao serving logs '229dj92' '0283-nice-summer' key 'last 12 hours'
39+
nbx lmao serving logs '229dj92' '0283-nice-summer' '2021-01-01' '2021-01-02'
40+
nbx lmao serving logs '229dj92' '0283-nice-summer' key '2021-01-01 12:00:00' '2021-01-02 12:00:00'
41+
nbx lmao serving logs '229dj92' '0283-nice-summer' --limit 1000
42+
nbx lmao serving logs '229dj92' '0283-nice-summer' key --limit 1000 --f logs.json
43+
```
44+
45+
Args:
46+
project_id: ID of the project to which the serving belongs.
47+
serving_id: ID of the serving to which the log belongs.
48+
key: Key of the log to get.
49+
after: Return only logs after this timestamp.
50+
before: Return only logs before this timestamp.
51+
limit: Maximum number of logs to return.
52+
f: File to write logs to. If not provided, logs will be printed to stdout.
53+
"""
54+
stub = common.get_lmao_stub()
55+
req = TrackerLogRequest(
56+
project_id = project_id,
57+
tracker_id = tracker_id,
58+
keys = [key,]
59+
)
60+
61+
# date things
62+
if after:
63+
after_parsed = parse_date(after, settings={'TIMEZONE': 'UTC'})
64+
if after_parsed is None:
65+
raise ValueError(f"Invalid date format for `after` argument: {after}")
66+
t = Timestamp()
67+
t.FromDatetime(after_parsed)
68+
req.after.CopyFrom(t)
69+
logger.info(f"Will get logs from after: {after_parsed}")
70+
if before:
71+
before_parsed = parse_date(before, settings={'TIMEZONE': 'UTC'})
72+
if before_parsed is None:
73+
raise ValueError(f"Invalid date format for `before` argument: {before}")
74+
t = Timestamp()
75+
t.FromDatetime(before_parsed)
76+
req.before.CopyFrom(t)
77+
logger.info(f"Will get logs from before: {before_parsed}")
78+
if after and before:
79+
if after_parsed > before_parsed:
80+
raise ValueError(f"`after` date cannot be greater than `before` date")
81+
82+
# limit things
83+
if limit < 0:
84+
raise ValueError("`limit` cannot be negative")
85+
req.limit = int(limit)
86+
87+
logs: TrackerLogResponse = stub.get_serving_log(req)
88+
logs_json = mpb.message_to_json(
89+
message = logs,
90+
including_default_value_fields = False,
91+
sort_keys = True,
92+
use_integers_for_enums = False
93+
)
94+
if not f:
95+
print(logs_json)
96+
return
97+
logger.info(f"Writing logs to {f}")
98+
with open(f, "w") as _f:
99+
_f.write(logs_json)
100+
101+
# add all the CLIs at the bottom here:
102+
LmaoCLI = {
103+
"project": Project,
104+
"serving": serving_logs,
105+
}

0 commit comments

Comments
 (0)