nnlogging 0.1.0__py3-none-any.whl → 0.1.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of nnlogging might be problematic. Click here for more details.
- nnlogging/__init__.py +13 -4
- nnlogging/shell/__init__.py +8 -0
- nnlogging/shell/exception/__init__.py +11 -0
- nnlogging/shell/exception/branch_exists.py +49 -0
- nnlogging/shell/exception/branch_not_found.py +50 -0
- nnlogging/shell/exception/task_exists.py +54 -0
- nnlogging/shell/exception/task_not_found.py +50 -0
- nnlogging/shell/protocol.py +86 -0
- nnlogging/shell/shell.py +425 -0
- nnlogging/shell/utils/__init__.py +35 -0
- nnlogging/shell/utils/branch_funcs.py +163 -0
- nnlogging/shell/utils/logger_funcs.py +198 -0
- nnlogging/shell/utils/run_funcs.py +96 -0
- nnlogging/shell/utils/task_funcs.py +115 -0
- nnlogging/typings/__init__.py +41 -0
- nnlogging/typings/aliases.py +66 -0
- nnlogging/typings/exceptions.py +10 -0
- nnlogging/typings/generics.py +23 -0
- nnlogging/typings/protocols.py +14 -0
- nnlogging/utils/__init__.py +39 -0
- nnlogging/utils/helpers.py +39 -0
- nnlogging/utils/rich_factories.py +154 -0
- nnlogging/utils/shell_factories.py +192 -0
- nnlogging-0.1.1.dist-info/METADATA +181 -0
- nnlogging-0.1.1.dist-info/RECORD +26 -0
- nnlogging/shell.py +0 -307
- nnlogging/utils.py +0 -212
- nnlogging-0.1.0.dist-info/METADATA +0 -24
- nnlogging-0.1.0.dist-info/RECORD +0 -6
- {nnlogging-0.1.0.dist-info → nnlogging-0.1.1.dist-info}/WHEEL +0 -0
nnlogging/shell/shell.py
ADDED
|
@@ -0,0 +1,425 @@
|
|
|
1
|
+
from collections.abc import Collection
|
|
2
|
+
from logging import Formatter as LoggingFormatter, Logger as LoggingLogger
|
|
3
|
+
from typing import Literal
|
|
4
|
+
|
|
5
|
+
from aim import Repo as AimRepo, Run as AimRun
|
|
6
|
+
from aim.sdk.types import AimObject
|
|
7
|
+
from rich.highlighter import Highlighter as RichHighlighter
|
|
8
|
+
from rich.progress import ProgressColumn as RichProgressColumn
|
|
9
|
+
from rich.theme import Theme as RichTheme
|
|
10
|
+
|
|
11
|
+
from nnlogging.shell.utils import (
|
|
12
|
+
add_tag as _add_tag,
|
|
13
|
+
advance as _advance,
|
|
14
|
+
branch_add as _branch_add,
|
|
15
|
+
branch_configure as _branch_configure,
|
|
16
|
+
branch_remove as _branch_remove,
|
|
17
|
+
critical as _critical,
|
|
18
|
+
debug as _debug,
|
|
19
|
+
error as _error,
|
|
20
|
+
exception as _exception,
|
|
21
|
+
info as _info,
|
|
22
|
+
log as _log,
|
|
23
|
+
logger_configure as _logger_configure,
|
|
24
|
+
remove_tag as _remove_tag,
|
|
25
|
+
run_configure as _run_configure,
|
|
26
|
+
task_add as _task_add,
|
|
27
|
+
task_remove as _task_remove,
|
|
28
|
+
track as _track,
|
|
29
|
+
update_metadata as _update_metadata,
|
|
30
|
+
warn as _warn,
|
|
31
|
+
)
|
|
32
|
+
from nnlogging.typings import (
|
|
33
|
+
Branch,
|
|
34
|
+
ConsolePrintOptions,
|
|
35
|
+
FormatTimeCallable,
|
|
36
|
+
LogOptions,
|
|
37
|
+
Omitable,
|
|
38
|
+
Sink,
|
|
39
|
+
)
|
|
40
|
+
from nnlogging.utils import BranchConfig, LoggerConfig, RunConfig
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
class Shell:
|
|
44
|
+
def __init__(
|
|
45
|
+
self,
|
|
46
|
+
shell_name: str = "nnlogging",
|
|
47
|
+
/,
|
|
48
|
+
*,
|
|
49
|
+
logger_config: LoggerConfig | None = None,
|
|
50
|
+
run_config: RunConfig | None = None,
|
|
51
|
+
branch_config: BranchConfig | None = None,
|
|
52
|
+
):
|
|
53
|
+
self.logger: LoggingLogger | None = None
|
|
54
|
+
self.run: AimRun | None = None
|
|
55
|
+
self.branches: dict[str, Branch] = dict()
|
|
56
|
+
|
|
57
|
+
self.name: str = shell_name
|
|
58
|
+
self.logger_config: LoggerConfig = logger_config or LoggerConfig()
|
|
59
|
+
self.run_config: RunConfig = run_config or RunConfig()
|
|
60
|
+
self.branch_config: BranchConfig = branch_config or BranchConfig()
|
|
61
|
+
|
|
62
|
+
def logger_configure(
|
|
63
|
+
self,
|
|
64
|
+
config: LoggerConfig | None = None,
|
|
65
|
+
/,
|
|
66
|
+
*,
|
|
67
|
+
name: Omitable[str] = ...,
|
|
68
|
+
level: Omitable[int | str] = ...,
|
|
69
|
+
propagate: Omitable[bool] = ...,
|
|
70
|
+
):
|
|
71
|
+
_logger_configure(
|
|
72
|
+
self,
|
|
73
|
+
config,
|
|
74
|
+
name=name,
|
|
75
|
+
level=level,
|
|
76
|
+
propagate=propagate,
|
|
77
|
+
)
|
|
78
|
+
|
|
79
|
+
def run_configure(
|
|
80
|
+
self,
|
|
81
|
+
config: RunConfig | None = None,
|
|
82
|
+
/,
|
|
83
|
+
*,
|
|
84
|
+
experiment: Omitable[str | None] = ...,
|
|
85
|
+
repo: Omitable[str | AimRepo | None] = ...,
|
|
86
|
+
system_tracking_interval: Omitable[float | None] = ...,
|
|
87
|
+
capture_terminal_logs: Omitable[bool] = ...,
|
|
88
|
+
log_system_params: Omitable[bool] = ...,
|
|
89
|
+
run_hash: Omitable[str | None] = ...,
|
|
90
|
+
read_only: Omitable[bool] = ...,
|
|
91
|
+
force_resume: Omitable[bool] = ...,
|
|
92
|
+
):
|
|
93
|
+
_run_configure(
|
|
94
|
+
self,
|
|
95
|
+
config,
|
|
96
|
+
experiment=experiment,
|
|
97
|
+
repo=repo,
|
|
98
|
+
system_tracking_interval=system_tracking_interval,
|
|
99
|
+
capture_terminal_logs=capture_terminal_logs,
|
|
100
|
+
log_system_params=log_system_params,
|
|
101
|
+
run_hash=run_hash,
|
|
102
|
+
read_only=read_only,
|
|
103
|
+
force_resume=force_resume,
|
|
104
|
+
)
|
|
105
|
+
|
|
106
|
+
def branch_configure(
|
|
107
|
+
self,
|
|
108
|
+
config: BranchConfig | None = None,
|
|
109
|
+
/,
|
|
110
|
+
*,
|
|
111
|
+
markup: Omitable[bool] = ...,
|
|
112
|
+
highlighter: Omitable[RichHighlighter] = ...,
|
|
113
|
+
width: Omitable[int | None] = ...,
|
|
114
|
+
height: Omitable[int | None] = ...,
|
|
115
|
+
emoji: Omitable[bool] = ...,
|
|
116
|
+
color_system: Omitable[Literal["auto", "standard", "truecolor"] | None] = ...,
|
|
117
|
+
theme: Omitable[RichTheme] = ...,
|
|
118
|
+
soft_wrap: Omitable[bool] = ...,
|
|
119
|
+
force_terminal: Omitable[bool | None] = ...,
|
|
120
|
+
force_jupyter: Omitable[bool | None] = ...,
|
|
121
|
+
force_interactive: Omitable[bool | None] = ...,
|
|
122
|
+
level: Omitable[str | int] = ...,
|
|
123
|
+
show_level: Omitable[bool] = ...,
|
|
124
|
+
show_time: Omitable[bool] = ...,
|
|
125
|
+
show_path: Omitable[bool] = ...,
|
|
126
|
+
log_time_format: Omitable[str | FormatTimeCallable] = ...,
|
|
127
|
+
omit_repeated_times: Omitable[bool] = ...,
|
|
128
|
+
rich_tracebacks: Omitable[bool] = ...,
|
|
129
|
+
tracebacks_show_locals: Omitable[bool] = ...,
|
|
130
|
+
log_message_format: Omitable[str | LoggingFormatter] = ...,
|
|
131
|
+
columns: Omitable[Collection[str | RichProgressColumn]] = ...,
|
|
132
|
+
transient: Omitable[bool] = ...,
|
|
133
|
+
refresh_per_second: Omitable[float] = ...,
|
|
134
|
+
speed_estimate_period: Omitable[float] = ...,
|
|
135
|
+
default_column_markup: Omitable[bool] = ...,
|
|
136
|
+
):
|
|
137
|
+
_branch_configure(
|
|
138
|
+
self,
|
|
139
|
+
config,
|
|
140
|
+
markup=markup,
|
|
141
|
+
highlighter=highlighter,
|
|
142
|
+
width=width,
|
|
143
|
+
height=height,
|
|
144
|
+
emoji=emoji,
|
|
145
|
+
color_system=color_system,
|
|
146
|
+
theme=theme,
|
|
147
|
+
soft_wrap=soft_wrap,
|
|
148
|
+
force_terminal=force_terminal,
|
|
149
|
+
force_jupyter=force_jupyter,
|
|
150
|
+
force_interactive=force_interactive,
|
|
151
|
+
level=level,
|
|
152
|
+
show_level=show_level,
|
|
153
|
+
show_time=show_time,
|
|
154
|
+
show_path=show_path,
|
|
155
|
+
log_time_format=log_time_format,
|
|
156
|
+
omit_repeated_times=omit_repeated_times,
|
|
157
|
+
rich_tracebacks=rich_tracebacks,
|
|
158
|
+
tracebacks_show_locals=tracebacks_show_locals,
|
|
159
|
+
log_message_format=log_message_format,
|
|
160
|
+
columns=columns,
|
|
161
|
+
transient=transient,
|
|
162
|
+
refresh_per_second=refresh_per_second,
|
|
163
|
+
speed_estimate_period=speed_estimate_period,
|
|
164
|
+
default_column_markup=default_column_markup,
|
|
165
|
+
)
|
|
166
|
+
|
|
167
|
+
def branch_add(
|
|
168
|
+
self,
|
|
169
|
+
name: str,
|
|
170
|
+
/,
|
|
171
|
+
sink: Sink | None = None,
|
|
172
|
+
*,
|
|
173
|
+
markup: Omitable[bool] = ...,
|
|
174
|
+
highlighter: Omitable[RichHighlighter] = ...,
|
|
175
|
+
width: Omitable[int | None] = ...,
|
|
176
|
+
height: Omitable[int | None] = ...,
|
|
177
|
+
emoji: Omitable[bool] = ...,
|
|
178
|
+
color_system: Omitable[Literal["auto", "standard", "truecolor"] | None] = ...,
|
|
179
|
+
theme: Omitable[RichTheme] = ...,
|
|
180
|
+
soft_wrap: Omitable[bool] = ...,
|
|
181
|
+
force_terminal: Omitable[bool | None] = ...,
|
|
182
|
+
force_jupyter: Omitable[bool | None] = ...,
|
|
183
|
+
force_interactive: Omitable[bool | None] = ...,
|
|
184
|
+
level: Omitable[str | int] = ...,
|
|
185
|
+
show_level: Omitable[bool] = ...,
|
|
186
|
+
show_time: Omitable[bool] = ...,
|
|
187
|
+
show_path: Omitable[bool] = ...,
|
|
188
|
+
log_time_format: Omitable[str | FormatTimeCallable] = ...,
|
|
189
|
+
omit_repeated_times: Omitable[bool] = ...,
|
|
190
|
+
rich_tracebacks: Omitable[bool] = ...,
|
|
191
|
+
tracebacks_show_locals: Omitable[bool] = ...,
|
|
192
|
+
log_message_format: Omitable[str | LoggingFormatter] = ...,
|
|
193
|
+
):
|
|
194
|
+
_branch_add(
|
|
195
|
+
self,
|
|
196
|
+
name,
|
|
197
|
+
sink=sink,
|
|
198
|
+
markup=markup,
|
|
199
|
+
highlighter=highlighter,
|
|
200
|
+
width=width,
|
|
201
|
+
height=height,
|
|
202
|
+
emoji=emoji,
|
|
203
|
+
color_system=color_system,
|
|
204
|
+
theme=theme,
|
|
205
|
+
soft_wrap=soft_wrap,
|
|
206
|
+
force_terminal=force_terminal,
|
|
207
|
+
force_jupyter=force_jupyter,
|
|
208
|
+
force_interactive=force_interactive,
|
|
209
|
+
level=level,
|
|
210
|
+
show_level=show_level,
|
|
211
|
+
show_time=show_time,
|
|
212
|
+
show_path=show_path,
|
|
213
|
+
log_time_format=log_time_format,
|
|
214
|
+
omit_repeated_times=omit_repeated_times,
|
|
215
|
+
rich_tracebacks=rich_tracebacks,
|
|
216
|
+
tracebacks_show_locals=tracebacks_show_locals,
|
|
217
|
+
log_message_format=log_message_format,
|
|
218
|
+
)
|
|
219
|
+
|
|
220
|
+
def branch_remove(
|
|
221
|
+
self,
|
|
222
|
+
name: str,
|
|
223
|
+
/,
|
|
224
|
+
):
|
|
225
|
+
_branch_remove(
|
|
226
|
+
self,
|
|
227
|
+
name,
|
|
228
|
+
)
|
|
229
|
+
|
|
230
|
+
def task_add(
|
|
231
|
+
self,
|
|
232
|
+
name: str,
|
|
233
|
+
/,
|
|
234
|
+
*,
|
|
235
|
+
desc: str,
|
|
236
|
+
total: float | None,
|
|
237
|
+
done: float = 0,
|
|
238
|
+
):
|
|
239
|
+
_task_add(
|
|
240
|
+
self,
|
|
241
|
+
name,
|
|
242
|
+
desc=desc,
|
|
243
|
+
total=total,
|
|
244
|
+
done=done,
|
|
245
|
+
)
|
|
246
|
+
|
|
247
|
+
def task_remove(
|
|
248
|
+
self,
|
|
249
|
+
name: str,
|
|
250
|
+
/,
|
|
251
|
+
):
|
|
252
|
+
_task_remove(
|
|
253
|
+
self,
|
|
254
|
+
name,
|
|
255
|
+
)
|
|
256
|
+
|
|
257
|
+
def log(
|
|
258
|
+
self,
|
|
259
|
+
level: int,
|
|
260
|
+
msg: object,
|
|
261
|
+
*args: object,
|
|
262
|
+
log_options: LogOptions | None = None,
|
|
263
|
+
console_options: ConsolePrintOptions | None = None,
|
|
264
|
+
):
|
|
265
|
+
_log(
|
|
266
|
+
self,
|
|
267
|
+
level,
|
|
268
|
+
msg,
|
|
269
|
+
*args,
|
|
270
|
+
log_options=log_options,
|
|
271
|
+
console_options=console_options,
|
|
272
|
+
)
|
|
273
|
+
|
|
274
|
+
def debug(
|
|
275
|
+
self,
|
|
276
|
+
msg: object,
|
|
277
|
+
*args: object,
|
|
278
|
+
log_options: LogOptions | None = None,
|
|
279
|
+
console_options: ConsolePrintOptions | None = None,
|
|
280
|
+
):
|
|
281
|
+
_debug(
|
|
282
|
+
self,
|
|
283
|
+
msg,
|
|
284
|
+
*args,
|
|
285
|
+
log_options=log_options,
|
|
286
|
+
console_options=console_options,
|
|
287
|
+
)
|
|
288
|
+
|
|
289
|
+
def info(
|
|
290
|
+
self,
|
|
291
|
+
msg: object,
|
|
292
|
+
*args: object,
|
|
293
|
+
log_options: LogOptions | None = None,
|
|
294
|
+
console_options: ConsolePrintOptions | None = None,
|
|
295
|
+
):
|
|
296
|
+
_info(
|
|
297
|
+
self,
|
|
298
|
+
msg,
|
|
299
|
+
*args,
|
|
300
|
+
log_options=log_options,
|
|
301
|
+
console_options=console_options,
|
|
302
|
+
)
|
|
303
|
+
|
|
304
|
+
def warn(
|
|
305
|
+
self,
|
|
306
|
+
msg: object,
|
|
307
|
+
*args: object,
|
|
308
|
+
log_options: LogOptions | None = None,
|
|
309
|
+
console_options: ConsolePrintOptions | None = None,
|
|
310
|
+
):
|
|
311
|
+
_warn(
|
|
312
|
+
self,
|
|
313
|
+
msg,
|
|
314
|
+
*args,
|
|
315
|
+
log_options=log_options,
|
|
316
|
+
console_options=console_options,
|
|
317
|
+
)
|
|
318
|
+
|
|
319
|
+
def error(
|
|
320
|
+
self,
|
|
321
|
+
msg: object,
|
|
322
|
+
*args: object,
|
|
323
|
+
log_options: LogOptions | None = None,
|
|
324
|
+
console_options: ConsolePrintOptions | None = None,
|
|
325
|
+
):
|
|
326
|
+
_error(
|
|
327
|
+
self,
|
|
328
|
+
msg,
|
|
329
|
+
*args,
|
|
330
|
+
log_options=log_options,
|
|
331
|
+
console_options=console_options,
|
|
332
|
+
)
|
|
333
|
+
|
|
334
|
+
def critical(
|
|
335
|
+
self,
|
|
336
|
+
msg: object,
|
|
337
|
+
*args: object,
|
|
338
|
+
log_options: LogOptions | None = None,
|
|
339
|
+
console_options: ConsolePrintOptions | None = None,
|
|
340
|
+
):
|
|
341
|
+
_critical(
|
|
342
|
+
self,
|
|
343
|
+
msg,
|
|
344
|
+
*args,
|
|
345
|
+
log_options=log_options,
|
|
346
|
+
console_options=console_options,
|
|
347
|
+
)
|
|
348
|
+
|
|
349
|
+
def exception(
|
|
350
|
+
self,
|
|
351
|
+
msg: object,
|
|
352
|
+
*args: object,
|
|
353
|
+
log_options: LogOptions | None = None,
|
|
354
|
+
console_options: ConsolePrintOptions | None = None,
|
|
355
|
+
):
|
|
356
|
+
_exception(
|
|
357
|
+
self,
|
|
358
|
+
msg,
|
|
359
|
+
*args,
|
|
360
|
+
log_options=log_options,
|
|
361
|
+
console_options=console_options,
|
|
362
|
+
)
|
|
363
|
+
|
|
364
|
+
def advance(
|
|
365
|
+
self,
|
|
366
|
+
name: str,
|
|
367
|
+
/,
|
|
368
|
+
value: float,
|
|
369
|
+
):
|
|
370
|
+
_advance(
|
|
371
|
+
self,
|
|
372
|
+
name,
|
|
373
|
+
advance=value,
|
|
374
|
+
)
|
|
375
|
+
|
|
376
|
+
def track(
|
|
377
|
+
self,
|
|
378
|
+
value: object,
|
|
379
|
+
/,
|
|
380
|
+
name: str | None,
|
|
381
|
+
*,
|
|
382
|
+
step: int | None,
|
|
383
|
+
epoch: int | None,
|
|
384
|
+
context: AimObject,
|
|
385
|
+
):
|
|
386
|
+
_track(
|
|
387
|
+
self,
|
|
388
|
+
value,
|
|
389
|
+
name=name,
|
|
390
|
+
step=step,
|
|
391
|
+
epoch=epoch,
|
|
392
|
+
context=context,
|
|
393
|
+
)
|
|
394
|
+
|
|
395
|
+
def add_tag(
|
|
396
|
+
self,
|
|
397
|
+
name: str,
|
|
398
|
+
/,
|
|
399
|
+
):
|
|
400
|
+
_add_tag(
|
|
401
|
+
self,
|
|
402
|
+
name,
|
|
403
|
+
)
|
|
404
|
+
|
|
405
|
+
def remove_tag(
|
|
406
|
+
self,
|
|
407
|
+
name: str,
|
|
408
|
+
/,
|
|
409
|
+
):
|
|
410
|
+
_remove_tag(
|
|
411
|
+
self,
|
|
412
|
+
name,
|
|
413
|
+
)
|
|
414
|
+
|
|
415
|
+
def update_metadata(
|
|
416
|
+
self,
|
|
417
|
+
name: str,
|
|
418
|
+
/,
|
|
419
|
+
metadata: AimObject,
|
|
420
|
+
):
|
|
421
|
+
_update_metadata(
|
|
422
|
+
self,
|
|
423
|
+
name,
|
|
424
|
+
metadata,
|
|
425
|
+
)
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
from .branch_funcs import branch_add, branch_configure, branch_remove
|
|
2
|
+
from .logger_funcs import (
|
|
3
|
+
critical,
|
|
4
|
+
debug,
|
|
5
|
+
error,
|
|
6
|
+
exception,
|
|
7
|
+
info,
|
|
8
|
+
log,
|
|
9
|
+
logger_configure,
|
|
10
|
+
warn,
|
|
11
|
+
)
|
|
12
|
+
from .run_funcs import add_tag, remove_tag, run_configure, track, update_metadata
|
|
13
|
+
from .task_funcs import advance, task_add, task_remove
|
|
14
|
+
|
|
15
|
+
__all__ = [
|
|
16
|
+
"branch_add",
|
|
17
|
+
"branch_configure",
|
|
18
|
+
"branch_remove",
|
|
19
|
+
"critical",
|
|
20
|
+
"debug",
|
|
21
|
+
"error",
|
|
22
|
+
"exception",
|
|
23
|
+
"info",
|
|
24
|
+
"log",
|
|
25
|
+
"logger_configure",
|
|
26
|
+
"warn",
|
|
27
|
+
"add_tag",
|
|
28
|
+
"remove_tag",
|
|
29
|
+
"run_configure",
|
|
30
|
+
"track",
|
|
31
|
+
"update_metadata",
|
|
32
|
+
"advance",
|
|
33
|
+
"task_add",
|
|
34
|
+
"task_remove",
|
|
35
|
+
]
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
from collections.abc import Collection
|
|
2
|
+
from logging import Formatter as LoggingFormatter
|
|
3
|
+
from typing import Literal
|
|
4
|
+
|
|
5
|
+
from rich.highlighter import Highlighter as RichHighlighter
|
|
6
|
+
from rich.progress import ProgressColumn as RichProgressColumn
|
|
7
|
+
from rich.theme import Theme as RichTheme
|
|
8
|
+
|
|
9
|
+
from nnlogging.shell.exception import (
|
|
10
|
+
raise_branch_exists_error,
|
|
11
|
+
raise_branch_not_found_error,
|
|
12
|
+
)
|
|
13
|
+
from nnlogging.shell.protocol import ShellProtocol
|
|
14
|
+
from nnlogging.typings import FormatTimeCallable, Omitable, Sink
|
|
15
|
+
from nnlogging.utils import BranchConfig, evolve_, get_branch
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def branch_configure(
|
|
19
|
+
inst: ShellProtocol,
|
|
20
|
+
/,
|
|
21
|
+
config: BranchConfig | None = None,
|
|
22
|
+
*,
|
|
23
|
+
markup: Omitable[bool] = ...,
|
|
24
|
+
highlighter: Omitable[RichHighlighter] = ...,
|
|
25
|
+
width: Omitable[int | None] = ...,
|
|
26
|
+
height: Omitable[int | None] = ...,
|
|
27
|
+
emoji: Omitable[bool] = ...,
|
|
28
|
+
color_system: Omitable[Literal["auto", "standard", "truecolor"] | None] = ...,
|
|
29
|
+
theme: Omitable[RichTheme] = ...,
|
|
30
|
+
soft_wrap: Omitable[bool] = ...,
|
|
31
|
+
force_terminal: Omitable[bool | None] = ...,
|
|
32
|
+
force_jupyter: Omitable[bool | None] = ...,
|
|
33
|
+
force_interactive: Omitable[bool | None] = ...,
|
|
34
|
+
level: Omitable[str | int] = ...,
|
|
35
|
+
show_level: Omitable[bool] = ...,
|
|
36
|
+
show_time: Omitable[bool] = ...,
|
|
37
|
+
show_path: Omitable[bool] = ...,
|
|
38
|
+
log_time_format: Omitable[str | FormatTimeCallable] = ...,
|
|
39
|
+
omit_repeated_times: Omitable[bool] = ...,
|
|
40
|
+
rich_tracebacks: Omitable[bool] = ...,
|
|
41
|
+
tracebacks_show_locals: Omitable[bool] = ...,
|
|
42
|
+
log_message_format: Omitable[str | LoggingFormatter] = ...,
|
|
43
|
+
columns: Omitable[Collection[str | RichProgressColumn]] = ...,
|
|
44
|
+
transient: Omitable[bool] = ...,
|
|
45
|
+
refresh_per_second: Omitable[float] = ...,
|
|
46
|
+
speed_estimate_period: Omitable[float] = ...,
|
|
47
|
+
default_column_markup: Omitable[bool] = ...,
|
|
48
|
+
):
|
|
49
|
+
inst.branch_config = evolve_(
|
|
50
|
+
config or inst.branch_config,
|
|
51
|
+
markup=markup,
|
|
52
|
+
highlighter=highlighter,
|
|
53
|
+
width=width,
|
|
54
|
+
height=height,
|
|
55
|
+
emoji=emoji,
|
|
56
|
+
color_system=color_system,
|
|
57
|
+
theme=theme,
|
|
58
|
+
soft_wrap=soft_wrap,
|
|
59
|
+
force_terminal=force_terminal,
|
|
60
|
+
force_jupyter=force_jupyter,
|
|
61
|
+
force_interactive=force_interactive,
|
|
62
|
+
level=level,
|
|
63
|
+
show_level=show_level,
|
|
64
|
+
show_time=show_time,
|
|
65
|
+
show_path=show_path,
|
|
66
|
+
log_time_format=log_time_format,
|
|
67
|
+
omit_repeated_times=omit_repeated_times,
|
|
68
|
+
rich_tracebacks=rich_tracebacks,
|
|
69
|
+
tracebacks_show_locals=tracebacks_show_locals,
|
|
70
|
+
log_message_format=log_message_format,
|
|
71
|
+
columns=columns,
|
|
72
|
+
transient=transient,
|
|
73
|
+
refresh_per_second=refresh_per_second,
|
|
74
|
+
speed_estimate_period=speed_estimate_period,
|
|
75
|
+
default_column_markup=default_column_markup,
|
|
76
|
+
)
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
def branch_add(
|
|
80
|
+
inst: ShellProtocol,
|
|
81
|
+
/,
|
|
82
|
+
name: str,
|
|
83
|
+
sink: Sink | None = None,
|
|
84
|
+
*,
|
|
85
|
+
markup: Omitable[bool] = ...,
|
|
86
|
+
highlighter: Omitable[RichHighlighter] = ...,
|
|
87
|
+
width: Omitable[int | None] = ...,
|
|
88
|
+
height: Omitable[int | None] = ...,
|
|
89
|
+
emoji: Omitable[bool] = ...,
|
|
90
|
+
color_system: Omitable[Literal["auto", "standard", "truecolor"] | None] = ...,
|
|
91
|
+
theme: Omitable[RichTheme] = ...,
|
|
92
|
+
soft_wrap: Omitable[bool] = ...,
|
|
93
|
+
force_terminal: Omitable[bool | None] = ...,
|
|
94
|
+
force_jupyter: Omitable[bool | None] = ...,
|
|
95
|
+
force_interactive: Omitable[bool | None] = ...,
|
|
96
|
+
level: Omitable[str | int] = ...,
|
|
97
|
+
show_level: Omitable[bool] = ...,
|
|
98
|
+
show_time: Omitable[bool] = ...,
|
|
99
|
+
show_path: Omitable[bool] = ...,
|
|
100
|
+
log_time_format: Omitable[str | FormatTimeCallable] = ...,
|
|
101
|
+
omit_repeated_times: Omitable[bool] = ...,
|
|
102
|
+
rich_tracebacks: Omitable[bool] = ...,
|
|
103
|
+
tracebacks_show_locals: Omitable[bool] = ...,
|
|
104
|
+
log_message_format: Omitable[str | LoggingFormatter] = ...,
|
|
105
|
+
):
|
|
106
|
+
if name in inst.branches:
|
|
107
|
+
raise_branch_exists_error(
|
|
108
|
+
inst,
|
|
109
|
+
name,
|
|
110
|
+
stacklevel=6,
|
|
111
|
+
)
|
|
112
|
+
else:
|
|
113
|
+
branch = get_branch(
|
|
114
|
+
inst.branch_config,
|
|
115
|
+
sink=sink,
|
|
116
|
+
markup=markup,
|
|
117
|
+
highlighter=highlighter,
|
|
118
|
+
width=width,
|
|
119
|
+
height=height,
|
|
120
|
+
emoji=emoji,
|
|
121
|
+
color_system=color_system,
|
|
122
|
+
theme=theme,
|
|
123
|
+
soft_wrap=soft_wrap,
|
|
124
|
+
force_terminal=force_terminal,
|
|
125
|
+
force_jupyter=force_jupyter,
|
|
126
|
+
force_interactive=force_interactive,
|
|
127
|
+
level=level,
|
|
128
|
+
show_level=show_level,
|
|
129
|
+
show_time=show_time,
|
|
130
|
+
show_path=show_path,
|
|
131
|
+
log_time_format=log_time_format,
|
|
132
|
+
omit_repeated_times=omit_repeated_times,
|
|
133
|
+
rich_tracebacks=rich_tracebacks,
|
|
134
|
+
tracebacks_show_locals=tracebacks_show_locals,
|
|
135
|
+
log_message_format=log_message_format,
|
|
136
|
+
)
|
|
137
|
+
inst.branches[name] = branch
|
|
138
|
+
if inst.logger is not None:
|
|
139
|
+
# TODO: add branch-add-hint
|
|
140
|
+
inst.logger.addHandler(branch["handler"])
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
def branch_remove(
|
|
144
|
+
inst: ShellProtocol,
|
|
145
|
+
/,
|
|
146
|
+
name: str,
|
|
147
|
+
):
|
|
148
|
+
if name not in inst.branches:
|
|
149
|
+
raise_branch_not_found_error(
|
|
150
|
+
inst,
|
|
151
|
+
name,
|
|
152
|
+
stacklevel=6,
|
|
153
|
+
)
|
|
154
|
+
else:
|
|
155
|
+
branch = inst.branches[name]
|
|
156
|
+
branch["handler"].close()
|
|
157
|
+
branch["tasks"].clear()
|
|
158
|
+
if branch["progress"] is not None:
|
|
159
|
+
branch["progress"].stop()
|
|
160
|
+
if inst.logger is not None:
|
|
161
|
+
# TODO: add branch-remove-hint
|
|
162
|
+
inst.logger.removeHandler(branch["handler"])
|
|
163
|
+
del inst.branches[name]
|