liblaf-cherries 0.1.6__py3-none-any.whl → 0.2.0__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.
- liblaf/cherries/__init__.pyi +8 -87
- liblaf/cherries/_entrypoint.py +56 -0
- liblaf/cherries/_version.py +2 -2
- liblaf/cherries/config/_asset.py +3 -3
- liblaf/cherries/core/__init__.pyi +14 -6
- liblaf/cherries/core/_impl.py +58 -0
- liblaf/cherries/core/_plugin.py +96 -0
- liblaf/cherries/core/_run.py +42 -0
- liblaf/cherries/core/_spec.py +53 -159
- liblaf/cherries/core/typed.py +2 -0
- liblaf/cherries/meta/_git.py +3 -3
- liblaf/cherries/meta/_name.py +3 -3
- liblaf/cherries/{pathutils → paths}/_path.py +9 -7
- liblaf/cherries/plugins/__init__.pyi +3 -0
- liblaf/cherries/plugins/logging.py +25 -0
- liblaf/cherries/profiles/__init__.pyi +13 -0
- liblaf/cherries/profiles/_abc.py +10 -0
- liblaf/cherries/profiles/_default.py +12 -0
- liblaf/cherries/profiles/_factory.py +21 -0
- liblaf/cherries/profiles/_playground.py +13 -0
- {liblaf_cherries-0.1.6.dist-info → liblaf_cherries-0.2.0.dist-info}/METADATA +5 -3
- liblaf_cherries-0.2.0.dist-info/RECORD +43 -0
- liblaf/cherries/_run.py +0 -51
- liblaf/cherries/core/_exp.py +0 -119
- liblaf/cherries/integration/__init__.pyi +0 -72
- liblaf/cherries/integration/_abc.py +0 -144
- liblaf/cherries/integration/_exp.py +0 -109
- liblaf/cherries/integration/comet.py +0 -142
- liblaf/cherries/integration/dvc.py +0 -51
- liblaf/cherries/integration/git.py +0 -44
- liblaf/cherries/integration/logging.py +0 -45
- liblaf/cherries/presets/__init__.pyi +0 -5
- liblaf/cherries/presets/_default.py +0 -46
- liblaf/cherries/presets/_playground.py +0 -11
- liblaf/cherries/presets/typed.py +0 -5
- liblaf_cherries-0.1.6.dist-info/RECORD +0 -44
- /liblaf/cherries/{integration → paths}/__init__.py +0 -0
- /liblaf/cherries/{pathutils → paths}/__init__.pyi +0 -0
- /liblaf/cherries/{pathutils → paths}/_convert.py +0 -0
- /liblaf/cherries/{pathutils → paths}/_special.py +0 -0
- /liblaf/cherries/{pathutils → plugins}/__init__.py +0 -0
- /liblaf/cherries/{presets → profiles}/__init__.py +0 -0
- {liblaf_cherries-0.1.6.dist-info → liblaf_cherries-0.2.0.dist-info}/WHEEL +0 -0
- {liblaf_cherries-0.1.6.dist-info → liblaf_cherries-0.2.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,109 +0,0 @@
|
|
1
|
-
import datetime
|
2
|
-
import functools
|
3
|
-
from os import PathLike
|
4
|
-
from pathlib import Path
|
5
|
-
|
6
|
-
import attrs
|
7
|
-
import comet_ml as comet
|
8
|
-
|
9
|
-
from liblaf.cherries import pathutils as _path
|
10
|
-
|
11
|
-
from ._abc import (
|
12
|
-
AddTag,
|
13
|
-
AddTags,
|
14
|
-
End,
|
15
|
-
LogAsset,
|
16
|
-
LogCode,
|
17
|
-
LogMetric,
|
18
|
-
LogMetrics,
|
19
|
-
LogOther,
|
20
|
-
LogOthers,
|
21
|
-
LogParam,
|
22
|
-
LogParams,
|
23
|
-
Start,
|
24
|
-
)
|
25
|
-
|
26
|
-
|
27
|
-
@attrs.define
|
28
|
-
class Experiment:
|
29
|
-
add_tag: AddTag = attrs.field(factory=AddTag, init=False)
|
30
|
-
add_tags: AddTags = attrs.field(factory=AddTags, init=False)
|
31
|
-
end: End = attrs.field(factory=End, init=False)
|
32
|
-
log_asset: LogAsset = attrs.field(factory=LogAsset, init=False)
|
33
|
-
log_code: LogCode = attrs.field(factory=LogCode, init=False)
|
34
|
-
log_metric: LogMetric = attrs.field(factory=LogMetric, init=False)
|
35
|
-
log_metrics: LogMetrics = attrs.field(factory=LogMetrics, init=False)
|
36
|
-
log_other: LogOther = attrs.field(factory=LogOther, init=False)
|
37
|
-
log_others: LogOthers = attrs.field(factory=LogOthers, init=False)
|
38
|
-
log_param: LogParam = attrs.field(factory=LogParam, init=False)
|
39
|
-
log_params: LogParams = attrs.field(factory=LogParams, init=False)
|
40
|
-
start: Start = attrs.field(factory=Start, init=False)
|
41
|
-
|
42
|
-
@property
|
43
|
-
def comet(self) -> comet.CometExperiment:
|
44
|
-
return comet.get_running_experiment() # pyright: ignore[reportReturnType]
|
45
|
-
|
46
|
-
@functools.cached_property
|
47
|
-
def exp_dir(self) -> Path:
|
48
|
-
return _path.exp_dir(absolute=True)
|
49
|
-
|
50
|
-
@property
|
51
|
-
def exp_key(self) -> str:
|
52
|
-
return self.comet.get_key()
|
53
|
-
|
54
|
-
@property
|
55
|
-
def exp_name(self) -> str:
|
56
|
-
return self.comet.get_name()
|
57
|
-
|
58
|
-
@exp_name.setter
|
59
|
-
def exp_name(self, value: str) -> None:
|
60
|
-
self.comet.set_name(value)
|
61
|
-
|
62
|
-
@property
|
63
|
-
def exp_url(self) -> str:
|
64
|
-
return self.comet.url # pyright: ignore[reportReturnType]
|
65
|
-
|
66
|
-
@property
|
67
|
-
def project_id(self) -> str:
|
68
|
-
return self.comet.project_id # pyright: ignore[reportReturnType]
|
69
|
-
|
70
|
-
@property
|
71
|
-
def project_name(self) -> str:
|
72
|
-
return self.comet.project_name
|
73
|
-
|
74
|
-
@functools.cached_property
|
75
|
-
def start_time(self) -> datetime.datetime:
|
76
|
-
return datetime.datetime.now().astimezone()
|
77
|
-
|
78
|
-
def log_input(self, path: PathLike, /, **kwargs) -> None:
|
79
|
-
self.log_asset(path, prefix="inputs/", **kwargs)
|
80
|
-
|
81
|
-
def log_output(self, path: PathLike, /, **kwargs) -> None:
|
82
|
-
self.log_asset(path, prefix="outputs/", **kwargs)
|
83
|
-
|
84
|
-
|
85
|
-
exp = Experiment()
|
86
|
-
add_tag: AddTag = exp.add_tag
|
87
|
-
add_tags: AddTags = exp.add_tags
|
88
|
-
end: End = exp.end
|
89
|
-
log_asset: LogAsset = exp.log_asset
|
90
|
-
log_code: LogCode = exp.log_code
|
91
|
-
log_metric: LogMetric = exp.log_metric
|
92
|
-
log_metrics: LogMetrics = exp.log_metrics
|
93
|
-
log_other: LogOther = exp.log_other
|
94
|
-
log_others: LogOthers = exp.log_others
|
95
|
-
log_param: LogParam = exp.log_param
|
96
|
-
log_params: LogParams = exp.log_params
|
97
|
-
start: Start = exp.start
|
98
|
-
|
99
|
-
|
100
|
-
def current_exp() -> Experiment:
|
101
|
-
return exp
|
102
|
-
|
103
|
-
|
104
|
-
def log_input(path: PathLike, /, **kwargs) -> None:
|
105
|
-
exp.log_input(path, **kwargs)
|
106
|
-
|
107
|
-
|
108
|
-
def log_output(path: PathLike, /, **kwargs) -> None:
|
109
|
-
exp.log_output(path, **kwargs)
|
@@ -1,142 +0,0 @@
|
|
1
|
-
from collections.abc import Iterable, Mapping
|
2
|
-
from pathlib import Path
|
3
|
-
from typing import Any, override
|
4
|
-
from unittest import mock
|
5
|
-
|
6
|
-
import attrs
|
7
|
-
import comet_ml as comet
|
8
|
-
from loguru import logger
|
9
|
-
|
10
|
-
from liblaf.cherries import meta
|
11
|
-
from liblaf.cherries.typed import PathLike
|
12
|
-
|
13
|
-
from . import _abc
|
14
|
-
|
15
|
-
|
16
|
-
class Comet:
|
17
|
-
@property
|
18
|
-
def exp(self) -> comet.CometExperiment:
|
19
|
-
exp: comet.CometExperiment | None = comet.get_running_experiment()
|
20
|
-
if exp is None:
|
21
|
-
exp = mock.MagicMock()
|
22
|
-
return exp
|
23
|
-
|
24
|
-
|
25
|
-
@attrs.define
|
26
|
-
class AddTag(Comet, _abc.AddTag):
|
27
|
-
@override
|
28
|
-
def __call__(self, tag: str, **kwargs) -> None:
|
29
|
-
self.exp.add_tag(tag)
|
30
|
-
|
31
|
-
|
32
|
-
@attrs.define
|
33
|
-
class AddTags(Comet, _abc.AddTags):
|
34
|
-
@override
|
35
|
-
def __call__(self, tags: Iterable[str], **kwargs) -> None:
|
36
|
-
self.exp.add_tags(list(tags))
|
37
|
-
|
38
|
-
|
39
|
-
@attrs.define
|
40
|
-
class End(Comet, _abc.End):
|
41
|
-
@override
|
42
|
-
def __call__(self, **kwargs) -> None:
|
43
|
-
comet.end()
|
44
|
-
|
45
|
-
|
46
|
-
@attrs.define
|
47
|
-
class LogAsset(Comet, _abc.LogAsset):
|
48
|
-
@override
|
49
|
-
def __call__(self, path: PathLike, prefix: str | None = None, **kwargs) -> None:
|
50
|
-
path = Path(path)
|
51
|
-
if (dvc_path := path.with_name(path.name + ".dvc")).exists():
|
52
|
-
path = dvc_path
|
53
|
-
if path.is_file():
|
54
|
-
filename: str | None = f"{prefix}/{path.name}" if prefix else None
|
55
|
-
self.exp.log_asset(path, file_name=filename, **kwargs)
|
56
|
-
elif path.is_dir():
|
57
|
-
self.exp.log_asset_folder(str(path), **kwargs)
|
58
|
-
else:
|
59
|
-
logger.warning("Neither file nor directory: {}", path)
|
60
|
-
|
61
|
-
|
62
|
-
@attrs.define
|
63
|
-
class LogCode(Comet, _abc.LogCode):
|
64
|
-
@override
|
65
|
-
def __call__(self, path: PathLike, **kwargs) -> None:
|
66
|
-
path = Path(path)
|
67
|
-
if path.is_file():
|
68
|
-
self.exp.log_code(str(path), **kwargs)
|
69
|
-
elif path.is_dir():
|
70
|
-
self.exp.log_code(folder=str(path), **kwargs)
|
71
|
-
else:
|
72
|
-
logger.warning("Neither file nor directory: {}", path)
|
73
|
-
|
74
|
-
|
75
|
-
@attrs.define
|
76
|
-
class LogMetric(Comet, _abc.LogMetric):
|
77
|
-
@override
|
78
|
-
def __call__(
|
79
|
-
self,
|
80
|
-
name: str,
|
81
|
-
value: float,
|
82
|
-
step: int | None = None,
|
83
|
-
epoch: int | None = None,
|
84
|
-
**kwargs,
|
85
|
-
) -> None:
|
86
|
-
self.exp.log_metric(name, value, step=step, epoch=epoch)
|
87
|
-
|
88
|
-
|
89
|
-
@attrs.define
|
90
|
-
class LogMetrics(Comet, _abc.LogMetrics):
|
91
|
-
@override
|
92
|
-
def __call__(
|
93
|
-
self,
|
94
|
-
metrics: Mapping[str, Any],
|
95
|
-
step: int | None = None,
|
96
|
-
epoch: int | None = None,
|
97
|
-
**kwargs,
|
98
|
-
) -> None:
|
99
|
-
self.exp.log_metrics(metrics, step=step, epoch=epoch) # pyright: ignore[reportArgumentType]
|
100
|
-
|
101
|
-
|
102
|
-
@attrs.define
|
103
|
-
class LogOther(Comet, _abc.LogOther):
|
104
|
-
@override
|
105
|
-
def __call__(self, key: str, value: Any, **kwargs) -> None:
|
106
|
-
self.exp.log_other(key, value)
|
107
|
-
|
108
|
-
|
109
|
-
@attrs.define
|
110
|
-
class LogOthers(Comet, _abc.LogOthers):
|
111
|
-
@override
|
112
|
-
def __call__(self, others: Mapping[str, Any], **kwargs) -> None:
|
113
|
-
self.exp.log_others(others) # pyright: ignore[reportArgumentType]
|
114
|
-
|
115
|
-
|
116
|
-
@attrs.define
|
117
|
-
class LogParam(Comet, _abc.LogParam):
|
118
|
-
@override
|
119
|
-
def __call__(self, name: str, value: Any, **kwargs) -> None:
|
120
|
-
self.exp.log_parameter(name, value)
|
121
|
-
|
122
|
-
|
123
|
-
@attrs.define
|
124
|
-
class LogParams(Comet, _abc.LogParams):
|
125
|
-
@override
|
126
|
-
def __call__(self, params: Any, **kwargs: Any) -> None:
|
127
|
-
self.exp.log_parameters(params)
|
128
|
-
|
129
|
-
|
130
|
-
@attrs.define
|
131
|
-
class Start(Comet, _abc.Start):
|
132
|
-
text: bool = True
|
133
|
-
jsonl: bool = False
|
134
|
-
|
135
|
-
@override
|
136
|
-
def __call__(self, **kwargs) -> None:
|
137
|
-
comet.start(
|
138
|
-
project_name=meta.project_name(),
|
139
|
-
experiment_config=comet.ExperimentConfig(
|
140
|
-
auto_output_logging="native", name=meta.exp_name()
|
141
|
-
),
|
142
|
-
)
|
@@ -1,51 +0,0 @@
|
|
1
|
-
import subprocess as sp
|
2
|
-
from pathlib import Path
|
3
|
-
from typing import override
|
4
|
-
|
5
|
-
import attrs
|
6
|
-
import git
|
7
|
-
import git.exc
|
8
|
-
|
9
|
-
from liblaf.cherries import pathutils as _path
|
10
|
-
from liblaf.cherries.typed import PathLike
|
11
|
-
|
12
|
-
from . import _abc
|
13
|
-
|
14
|
-
|
15
|
-
@attrs.define
|
16
|
-
class End(_abc.End):
|
17
|
-
priority: int = attrs.field(default=-2, kw_only=True) # after logging
|
18
|
-
|
19
|
-
@override
|
20
|
-
def __call__(self, **kwargs) -> None:
|
21
|
-
sp.run(["dvc", "status"], check=True)
|
22
|
-
sp.run(["dvc", "push"], check=True)
|
23
|
-
|
24
|
-
|
25
|
-
@attrs.define
|
26
|
-
class LogAsset(_abc.LogAsset):
|
27
|
-
priority: int = attrs.field(default=-1, kw_only=True) # before Comet
|
28
|
-
|
29
|
-
@override
|
30
|
-
def __call__(self, path: PathLike, prefix: str | None = None, **kwargs) -> None:
|
31
|
-
path: Path = _path.as_path(path)
|
32
|
-
if check_ignore(path) or tracked_by_git(path):
|
33
|
-
return
|
34
|
-
sp.run(["dvc", "add", "--quiet", path], check=True)
|
35
|
-
|
36
|
-
|
37
|
-
def check_ignore(path: PathLike) -> bool:
|
38
|
-
proc: sp.CompletedProcess[bytes] = sp.run(
|
39
|
-
["dvc", "check-ignore", "--quiet", path], check=False
|
40
|
-
)
|
41
|
-
return proc.returncode == 0
|
42
|
-
|
43
|
-
|
44
|
-
def tracked_by_git(path: PathLike) -> bool:
|
45
|
-
path: Path = _path.as_path(path).absolute()
|
46
|
-
try:
|
47
|
-
repo = git.Repo(search_parent_directories=True)
|
48
|
-
repo.git.ls_files(path, error_unmatch=True)
|
49
|
-
except git.exc.GitCommandError:
|
50
|
-
return False
|
51
|
-
return True
|
@@ -1,44 +0,0 @@
|
|
1
|
-
from typing import override
|
2
|
-
|
3
|
-
import attrs
|
4
|
-
|
5
|
-
from liblaf.cherries import meta as _info
|
6
|
-
|
7
|
-
from . import _abc
|
8
|
-
from ._exp import exp
|
9
|
-
|
10
|
-
|
11
|
-
@attrs.define
|
12
|
-
class End(_abc.End):
|
13
|
-
priority: int = attrs.field(default=-3, kw_only=True) # before dvc
|
14
|
-
dry_run: bool = False
|
15
|
-
|
16
|
-
@override
|
17
|
-
def __call__(self, **kwargs) -> None:
|
18
|
-
git_auto_commit(
|
19
|
-
"chore(cherries): auto commit (on run end)", dry_run=self.dry_run
|
20
|
-
)
|
21
|
-
|
22
|
-
|
23
|
-
@attrs.define
|
24
|
-
class Start(_abc.Start):
|
25
|
-
dry_run: bool = False
|
26
|
-
|
27
|
-
@override
|
28
|
-
def __call__(self, **kwargs) -> None:
|
29
|
-
git_auto_commit(
|
30
|
-
"chore(cherries): auto commit (on run start)", dry_run=self.dry_run
|
31
|
-
)
|
32
|
-
|
33
|
-
|
34
|
-
def git_auto_commit(
|
35
|
-
header: str = "chore(cherries): auto commit", *, dry_run: bool = False
|
36
|
-
) -> None:
|
37
|
-
body: str = ""
|
38
|
-
if exp.exp_name and exp.exp_url:
|
39
|
-
body += f"🧪 View experiment {exp.exp_name} at: {exp.exp_url}\n"
|
40
|
-
message: str = f"{header}\n\n{body}" if body else header
|
41
|
-
_info.git_auto_commit(message, dry_run=dry_run)
|
42
|
-
exp.log_other("cherries.git.branch", _info.git_branch())
|
43
|
-
exp.log_other("cherries.git.sha", _info.git_commit_sha())
|
44
|
-
exp.log_other("cherries.git.url", _info.git_commit_url())
|
@@ -1,45 +0,0 @@
|
|
1
|
-
from typing import override
|
2
|
-
|
3
|
-
import attrs
|
4
|
-
import loguru
|
5
|
-
from loguru import logger
|
6
|
-
|
7
|
-
from liblaf import grapes
|
8
|
-
|
9
|
-
from . import _abc
|
10
|
-
from ._exp import exp
|
11
|
-
|
12
|
-
|
13
|
-
@attrs.define
|
14
|
-
class End(_abc.End):
|
15
|
-
priority: int = attrs.field(default=-1, kw_only=True) # before Comet
|
16
|
-
text: bool = True
|
17
|
-
jsonl: bool = False
|
18
|
-
|
19
|
-
@override
|
20
|
-
def __call__(self, **kwargs) -> None:
|
21
|
-
logger.complete()
|
22
|
-
if self.text and (exp.exp_dir / "run.log").exists():
|
23
|
-
exp.log_asset(exp.exp_dir / "run.log")
|
24
|
-
if self.jsonl and (exp.exp_dir / "run.log.jsonl").exists():
|
25
|
-
exp.log_asset(exp.exp_dir / "run.log.jsonl")
|
26
|
-
|
27
|
-
|
28
|
-
@attrs.define
|
29
|
-
class Start(_abc.Start):
|
30
|
-
priority: int = attrs.field(default=-1, kw_only=True) # before Comet
|
31
|
-
text: bool = True
|
32
|
-
jsonl: bool = False
|
33
|
-
|
34
|
-
@override
|
35
|
-
def __call__(self, **kwargs) -> None:
|
36
|
-
handlers: list[loguru.HandlerConfig] = [
|
37
|
-
grapes.logging.rich_handler(enable_link=False)
|
38
|
-
]
|
39
|
-
if self.text:
|
40
|
-
handlers.append(grapes.logging.file_handler(sink=exp.exp_dir / "run.log"))
|
41
|
-
if self.jsonl:
|
42
|
-
handlers.append(
|
43
|
-
grapes.logging.jsonl_handler(sink=exp.exp_dir / "run.log.jsonl")
|
44
|
-
)
|
45
|
-
grapes.init_logging(handlers=handlers)
|
@@ -1,46 +0,0 @@
|
|
1
|
-
from liblaf.cherries import integration
|
2
|
-
|
3
|
-
|
4
|
-
def default(exp: integration.Experiment) -> integration.Experiment:
|
5
|
-
exp.add_tag.add(
|
6
|
-
integration.comet.AddTag(),
|
7
|
-
)
|
8
|
-
exp.add_tags.add(
|
9
|
-
integration.comet.AddTags(),
|
10
|
-
)
|
11
|
-
exp.end.add(
|
12
|
-
integration.git.End(),
|
13
|
-
integration.dvc.End(),
|
14
|
-
integration.logging.End(),
|
15
|
-
integration.comet.End(),
|
16
|
-
)
|
17
|
-
exp.log_asset.add(
|
18
|
-
integration.dvc.LogAsset(),
|
19
|
-
integration.comet.LogAsset(),
|
20
|
-
)
|
21
|
-
exp.log_code.add(
|
22
|
-
integration.comet.LogCode(),
|
23
|
-
)
|
24
|
-
exp.log_metric.add(
|
25
|
-
integration.comet.LogMetric(),
|
26
|
-
)
|
27
|
-
exp.log_metrics.add(
|
28
|
-
integration.comet.LogMetrics(),
|
29
|
-
)
|
30
|
-
exp.log_other.add(
|
31
|
-
integration.comet.LogOther(),
|
32
|
-
)
|
33
|
-
exp.log_others.add(
|
34
|
-
integration.comet.LogOthers(),
|
35
|
-
)
|
36
|
-
exp.log_param.add(
|
37
|
-
integration.comet.LogParam(),
|
38
|
-
)
|
39
|
-
exp.log_params.add(
|
40
|
-
integration.comet.LogParams(),
|
41
|
-
)
|
42
|
-
exp.start.add(
|
43
|
-
integration.logging.Start(),
|
44
|
-
integration.comet.Start(),
|
45
|
-
)
|
46
|
-
return integration.exp
|
liblaf/cherries/presets/typed.py
DELETED
@@ -1,44 +0,0 @@
|
|
1
|
-
liblaf/cherries/__init__.py,sha256=OHb6Xou2v6u42swTgjRfzej4CIlRg4OmgOIQXUiRjKA,97
|
2
|
-
liblaf/cherries/__init__.pyi,sha256=XAiCE1ZKUkEHQ44ElWLnmxZXxyrWU4hVH1NA4SjISUo,2022
|
3
|
-
liblaf/cherries/_run.py,sha256=9zbivlGOUc-S4Luu14FQeRP2fNSBDca8EkSYWaES5EQ,1479
|
4
|
-
liblaf/cherries/_version.py,sha256=ESbJO0YD7TYfOUv_WDIJJgWELGepEWsoyhqVifEcXPA,511
|
5
|
-
liblaf/cherries/_version.pyi,sha256=Pnv4Bxw13LHeuVkPLPsTtnp4N4jOGcAfFJw05uMMgBY,108
|
6
|
-
liblaf/cherries/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
7
|
-
liblaf/cherries/typed.py,sha256=mim8QVtwczTSHyw5mhEdfFcXis9o32n0CZyu8BrEorE,50
|
8
|
-
liblaf/cherries/config/__init__.py,sha256=OHb6Xou2v6u42swTgjRfzej4CIlRg4OmgOIQXUiRjKA,97
|
9
|
-
liblaf/cherries/config/__init__.pyi,sha256=1CMEQlPneeRXCG51KDUj6Zmqs0xzUF3gilqeuHPlsVc,359
|
10
|
-
liblaf/cherries/config/_asset.py,sha256=7WEkyDxX4X389s0UqoBRbOtHOU9Dlh4NtAq9KXHXbPI,2485
|
11
|
-
liblaf/cherries/config/_config.py,sha256=WPwwk-3O96FyHGb2W8__LDfHpXBHLQM44aOcrMPjDL4,171
|
12
|
-
liblaf/cherries/core/__init__.py,sha256=OHb6Xou2v6u42swTgjRfzej4CIlRg4OmgOIQXUiRjKA,97
|
13
|
-
liblaf/cherries/core/__init__.pyi,sha256=E2YMg93kfxxO-g0CGyDOqkzTmVlSlHC7DRmu3AEm4_w,220
|
14
|
-
liblaf/cherries/core/_exp.py,sha256=3kexCigujuHnO0NWSfa46FBwe0QGpAJtMW-WIphmAMA,2726
|
15
|
-
liblaf/cherries/core/_spec.py,sha256=5rOhMgFTVhXhvOqJ4USWrYuuhOxIgyPdI5LFknpnMTs,5357
|
16
|
-
liblaf/cherries/integration/__init__.py,sha256=OHb6Xou2v6u42swTgjRfzej4CIlRg4OmgOIQXUiRjKA,97
|
17
|
-
liblaf/cherries/integration/__init__.pyi,sha256=LSvxbLYdyYAsc8aR2OMYiEf0hku1L82q0ECqM6hk_UQ,1042
|
18
|
-
liblaf/cherries/integration/_abc.py,sha256=0xsoAxxRAhBAOEx0qNx7THDVF8zdYuaAUHX7INe0r8U,3817
|
19
|
-
liblaf/cherries/integration/_exp.py,sha256=gsCCqi551JP5EUHagpW29jHH1PSE7prfpMAuqKJn-9A,3048
|
20
|
-
liblaf/cherries/integration/comet.py,sha256=BbY88hwo3rVphirYVSBSfQgs8z0UB9RNlCqK5wMUCRY,3709
|
21
|
-
liblaf/cherries/integration/dvc.py,sha256=ClIyT-xj7jx_8knwdFKMzXH6Gq7lQnNWBzW8zycZB8g,1358
|
22
|
-
liblaf/cherries/integration/git.py,sha256=GPRPpftlkDfb1z4oSQ6gRhnbPowKB0euOK8Ak4oAJpw,1209
|
23
|
-
liblaf/cherries/integration/logging.py,sha256=lIjF_2PE6TGT-uFXAnQOnPZ4kP-e982yrGL03L4Gn3s,1267
|
24
|
-
liblaf/cherries/meta/__init__.py,sha256=OHb6Xou2v6u42swTgjRfzej4CIlRg4OmgOIQXUiRjKA,97
|
25
|
-
liblaf/cherries/meta/__init__.pyi,sha256=kQFneP3IiV9rBIzpep_uX0z-5IRPrXkPmyNRt19j8fg,282
|
26
|
-
liblaf/cherries/meta/_git.py,sha256=oy1xx23sXWA7RqQuLGc3HxcLCF7zHTSpZvZ9pukJGdI,1232
|
27
|
-
liblaf/cherries/meta/_name.py,sha256=LskfsW0yv9WEAl8WqGFG3D82_mULulV5N9p9Ogjt7Q0,561
|
28
|
-
liblaf/cherries/pathutils/__init__.py,sha256=OHb6Xou2v6u42swTgjRfzej4CIlRg4OmgOIQXUiRjKA,97
|
29
|
-
liblaf/cherries/pathutils/__init__.pyi,sha256=mr3Dk8ragpNGXmXJriMt21vc7YmqUD6X587exFe9tCI,413
|
30
|
-
liblaf/cherries/pathutils/_convert.py,sha256=IrXN_9s-rfH7EKk0_ilr1giGmfN8FlvB_edm2kI-k3I,807
|
31
|
-
liblaf/cherries/pathutils/_path.py,sha256=PLcVzBO6r99qspf5ZKqVtWm6mT8Ud5cUGsUkyJkTqyM,1548
|
32
|
-
liblaf/cherries/pathutils/_special.py,sha256=b5D3PtW__u0Zpiv69OYoV7TTYc6Dgs4Bu-P8jwrROV4,1415
|
33
|
-
liblaf/cherries/presets/__init__.py,sha256=OHb6Xou2v6u42swTgjRfzej4CIlRg4OmgOIQXUiRjKA,97
|
34
|
-
liblaf/cherries/presets/__init__.pyi,sha256=3ug6RF4DSBOEankXOEgotQw_E0fMvQ5yuhps7EHf6b0,139
|
35
|
-
liblaf/cherries/presets/_default.py,sha256=-sm9IBvXP_JfWXUfZdwc9u5WcLOQXloDmBgwjiw2EPk,1095
|
36
|
-
liblaf/cherries/presets/_playground.py,sha256=F0dphGgJ_6MD5mBGm0chrxWIufZtYgtt5c2l-TVPNso,260
|
37
|
-
liblaf/cherries/presets/typed.py,sha256=LztTXKiiCD1NW1fb2Od6giaU0vaXdOidjsqxbTkIlJY,152
|
38
|
-
liblaf/cherries/utils/__init__.py,sha256=OHb6Xou2v6u42swTgjRfzej4CIlRg4OmgOIQXUiRjKA,97
|
39
|
-
liblaf/cherries/utils/__init__.pyi,sha256=F5aTcXpWVmUoctPbLfmQXKyuXYRspAIjaIzfL1_3Lrw,51
|
40
|
-
liblaf/cherries/utils/_functools.py,sha256=0Puwvj1Wq4kp3S--hI-CXwUBZ56AtfkqIzFHllQtuug,181
|
41
|
-
liblaf_cherries-0.1.6.dist-info/METADATA,sha256=CFvkztVl4GVLIuIgCvciRnt32SmNZcudEhRRPmGit9U,6194
|
42
|
-
liblaf_cherries-0.1.6.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
43
|
-
liblaf_cherries-0.1.6.dist-info/licenses/LICENSE,sha256=Ph4NzyU3lGVDeYv-mf8aRmImH8v9rVL9F362FV4G6Ow,1063
|
44
|
-
liblaf_cherries-0.1.6.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|