liblaf-cherries 0.4.0__tar.gz → 0.4.2__tar.gz

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.
Files changed (53) hide show
  1. liblaf_cherries-0.4.2/.gitignore +41 -0
  2. liblaf_cherries-0.4.2/PKG-INFO +132 -0
  3. liblaf_cherries-0.4.2/README.md +84 -0
  4. {liblaf_cherries-0.4.0 → liblaf_cherries-0.4.2}/pyproject.toml +5 -12
  5. {liblaf_cherries-0.4.0 → liblaf_cherries-0.4.2}/src/liblaf/cherries/_version.py +2 -2
  6. {liblaf_cherries-0.4.0 → liblaf_cherries-0.4.2}/src/liblaf/cherries/paths/_special.py +1 -1
  7. liblaf_cherries-0.4.2/src/liblaf/cherries/plugins/logging.py +24 -0
  8. liblaf_cherries-0.4.0/.gitignore +0 -199
  9. liblaf_cherries-0.4.0/PKG-INFO +0 -167
  10. liblaf_cherries-0.4.0/README.md +0 -119
  11. liblaf_cherries-0.4.0/src/liblaf/cherries/plugins/logging.py +0 -26
  12. {liblaf_cherries-0.4.0 → liblaf_cherries-0.4.2}/LICENSE +0 -0
  13. {liblaf_cherries-0.4.0 → liblaf_cherries-0.4.2}/src/liblaf/cherries/__init__.py +0 -0
  14. {liblaf_cherries-0.4.0 → liblaf_cherries-0.4.2}/src/liblaf/cherries/__init__.pyi +0 -0
  15. {liblaf_cherries-0.4.0 → liblaf_cherries-0.4.2}/src/liblaf/cherries/_entrypoint.py +0 -0
  16. {liblaf_cherries-0.4.0 → liblaf_cherries-0.4.2}/src/liblaf/cherries/_version.pyi +0 -0
  17. {liblaf_cherries-0.4.0 → liblaf_cherries-0.4.2}/src/liblaf/cherries/config/__init__.py +0 -0
  18. {liblaf_cherries-0.4.0 → liblaf_cherries-0.4.2}/src/liblaf/cherries/config/__init__.pyi +0 -0
  19. {liblaf_cherries-0.4.0 → liblaf_cherries-0.4.2}/src/liblaf/cherries/config/_asset.py +0 -0
  20. {liblaf_cherries-0.4.0 → liblaf_cherries-0.4.2}/src/liblaf/cherries/config/_config.py +0 -0
  21. {liblaf_cherries-0.4.0 → liblaf_cherries-0.4.2}/src/liblaf/cherries/core/__init__.py +0 -0
  22. {liblaf_cherries-0.4.0 → liblaf_cherries-0.4.2}/src/liblaf/cherries/core/__init__.pyi +0 -0
  23. {liblaf_cherries-0.4.0 → liblaf_cherries-0.4.2}/src/liblaf/cherries/core/_impl.py +0 -0
  24. {liblaf_cherries-0.4.0 → liblaf_cherries-0.4.2}/src/liblaf/cherries/core/_plugin.py +0 -0
  25. {liblaf_cherries-0.4.0 → liblaf_cherries-0.4.2}/src/liblaf/cherries/core/_run.py +0 -0
  26. {liblaf_cherries-0.4.0 → liblaf_cherries-0.4.2}/src/liblaf/cherries/core/_spec.py +0 -0
  27. {liblaf_cherries-0.4.0 → liblaf_cherries-0.4.2}/src/liblaf/cherries/core/_utils.py +0 -0
  28. {liblaf_cherries-0.4.0 → liblaf_cherries-0.4.2}/src/liblaf/cherries/core/typed.py +0 -0
  29. {liblaf_cherries-0.4.0 → liblaf_cherries-0.4.2}/src/liblaf/cherries/meta/__init__.py +0 -0
  30. {liblaf_cherries-0.4.0 → liblaf_cherries-0.4.2}/src/liblaf/cherries/meta/__init__.pyi +0 -0
  31. {liblaf_cherries-0.4.0 → liblaf_cherries-0.4.2}/src/liblaf/cherries/meta/_git.py +0 -0
  32. {liblaf_cherries-0.4.0 → liblaf_cherries-0.4.2}/src/liblaf/cherries/meta/_name.py +0 -0
  33. {liblaf_cherries-0.4.0 → liblaf_cherries-0.4.2}/src/liblaf/cherries/paths/__init__.py +0 -0
  34. {liblaf_cherries-0.4.0 → liblaf_cherries-0.4.2}/src/liblaf/cherries/paths/__init__.pyi +0 -0
  35. {liblaf_cherries-0.4.0 → liblaf_cherries-0.4.2}/src/liblaf/cherries/paths/_convert.py +0 -0
  36. {liblaf_cherries-0.4.0 → liblaf_cherries-0.4.2}/src/liblaf/cherries/paths/_path.py +0 -0
  37. {liblaf_cherries-0.4.0 → liblaf_cherries-0.4.2}/src/liblaf/cherries/plugins/__init__.py +0 -0
  38. {liblaf_cherries-0.4.0 → liblaf_cherries-0.4.2}/src/liblaf/cherries/plugins/__init__.pyi +0 -0
  39. {liblaf_cherries-0.4.0 → liblaf_cherries-0.4.2}/src/liblaf/cherries/plugins/comet.py +0 -0
  40. {liblaf_cherries-0.4.0 → liblaf_cherries-0.4.2}/src/liblaf/cherries/plugins/dvc.py +0 -0
  41. {liblaf_cherries-0.4.0 → liblaf_cherries-0.4.2}/src/liblaf/cherries/plugins/git_.py +0 -0
  42. {liblaf_cherries-0.4.0 → liblaf_cherries-0.4.2}/src/liblaf/cherries/plugins/local.py +0 -0
  43. {liblaf_cherries-0.4.0 → liblaf_cherries-0.4.2}/src/liblaf/cherries/profiles/__init__.py +0 -0
  44. {liblaf_cherries-0.4.0 → liblaf_cherries-0.4.2}/src/liblaf/cherries/profiles/__init__.pyi +0 -0
  45. {liblaf_cherries-0.4.0 → liblaf_cherries-0.4.2}/src/liblaf/cherries/profiles/_abc.py +0 -0
  46. {liblaf_cherries-0.4.0 → liblaf_cherries-0.4.2}/src/liblaf/cherries/profiles/_default.py +0 -0
  47. {liblaf_cherries-0.4.0 → liblaf_cherries-0.4.2}/src/liblaf/cherries/profiles/_factory.py +0 -0
  48. {liblaf_cherries-0.4.0 → liblaf_cherries-0.4.2}/src/liblaf/cherries/profiles/_playground.py +0 -0
  49. {liblaf_cherries-0.4.0 → liblaf_cherries-0.4.2}/src/liblaf/cherries/py.typed +0 -0
  50. {liblaf_cherries-0.4.0 → liblaf_cherries-0.4.2}/src/liblaf/cherries/typed.py +0 -0
  51. {liblaf_cherries-0.4.0 → liblaf_cherries-0.4.2}/src/liblaf/cherries/utils/__init__.py +0 -0
  52. {liblaf_cherries-0.4.0 → liblaf_cherries-0.4.2}/src/liblaf/cherries/utils/__init__.pyi +0 -0
  53. {liblaf_cherries-0.4.0 → liblaf_cherries-0.4.2}/src/liblaf/cherries/utils/_functools.py +0 -0
@@ -0,0 +1,41 @@
1
+ # ref: <https://github.com/github/gitignore/blob/main/Python.gitignore>
2
+
3
+ # shared
4
+ *.log
5
+ *.log.*
6
+ playground/
7
+
8
+ # Byte-compiled / optimized / DLL files
9
+ __pycache__/
10
+
11
+ # Distribution / packaging
12
+ dist/
13
+
14
+ # Unit test / coverage reports
15
+ .cache/
16
+ .coverage
17
+ .hypothesis/
18
+ .pytest_cache/
19
+
20
+ # pixi
21
+ .pixi/
22
+
23
+ # Environments
24
+ .venv/
25
+
26
+ # mkdocs documentation
27
+ site/
28
+
29
+ # Ruff stuff:
30
+ .ruff_cache/
31
+
32
+ # [Codecov](https://docs.codecov.com/docs/test-analytics#1-output-a-junit-xml-file-in-your-ci)
33
+ junit.xml
34
+
35
+ # [CodSpeed](https://codspeed.io/)
36
+ .codspeed/
37
+
38
+ # [hatch-vcs](https://github.com/ofek/hatch-vcs)
39
+ _version.py
40
+
41
+ .cherries/
@@ -0,0 +1,132 @@
1
+ Metadata-Version: 2.4
2
+ Name: liblaf-cherries
3
+ Version: 0.4.2
4
+ Summary: 🍒 Sweet experiment tracking with Comet, DVC, and Git integration.
5
+ Project-URL: Changelog, https://github.com/liblaf/cherries/blob/main/CHANGELOG.md
6
+ Project-URL: Documentation, https://cherries.readthedocs.io/
7
+ Project-URL: Homepage, https://github.com/liblaf/cherries
8
+ Project-URL: Issue Tracker, https://github.com/liblaf/cherries/issues
9
+ Project-URL: Release Notes, https://github.com/liblaf/cherries/releases
10
+ Project-URL: Source Code, https://github.com/liblaf/cherries
11
+ Author-email: liblaf <30631553+liblaf@users.noreply.github.com>
12
+ License-Expression: MIT
13
+ License-File: LICENSE
14
+ Classifier: Development Status :: 4 - Beta
15
+ Classifier: Intended Audience :: Developers
16
+ Classifier: Intended Audience :: Science/Research
17
+ Classifier: License :: OSI Approved
18
+ Classifier: License :: OSI Approved :: MIT License
19
+ Classifier: Operating System :: OS Independent
20
+ Classifier: Programming Language :: Python
21
+ Classifier: Programming Language :: Python :: 3
22
+ Classifier: Programming Language :: Python :: 3.12
23
+ Classifier: Programming Language :: Python :: 3.13
24
+ Classifier: Topic :: Software Development
25
+ Classifier: Topic :: Software Development :: Bug Tracking
26
+ Classifier: Topic :: Software Development :: Debuggers
27
+ Classifier: Topic :: Software Development :: Libraries
28
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
29
+ Classifier: Topic :: System
30
+ Classifier: Topic :: System :: Logging
31
+ Classifier: Topic :: Utilities
32
+ Classifier: Typing :: Typed
33
+ Requires-Python: >=3.12
34
+ Requires-Dist: attrs<26,>=25
35
+ Requires-Dist: comet-ml<4,>=3
36
+ Requires-Dist: dvc[all]<4,>=3
37
+ Requires-Dist: environs<15,>=14
38
+ Requires-Dist: gitpython<4,>=3
39
+ Requires-Dist: lazy-loader<0.5,>=0.4
40
+ Requires-Dist: liblaf-grapes<5,>=4
41
+ Requires-Dist: loguru<0.8,>=0.7
42
+ Requires-Dist: networkx<4,>=3
43
+ Requires-Dist: pydantic-settings<3,>=2
44
+ Requires-Dist: pydantic<3,>=2
45
+ Requires-Dist: rich<15,>=14
46
+ Requires-Dist: wrapt<2,>=1
47
+ Description-Content-Type: text/markdown
48
+
49
+ <div align="center" markdown>
50
+ <a name="readme-top"></a>
51
+
52
+ ![cherries](https://socialify.git.ci/liblaf/cherries/image?description=1&forks=1&issues=1&language=1&logo=https%3A%2F%2Fraw.githubusercontent.com%2Fmicrosoft%2Ffluentui-emoji%2Frefs%2Fheads%2Fmain%2Fassets%2FCherries%2F3D%2Fcherries_3d.png&name=1&owner=1&pattern=Transparent&pulls=1&stargazers=1&theme=Auto)
53
+
54
+ **[Explore the docs »](https://liblaf.github.io/cherries/)**
55
+
56
+ <!-- tangerine-start: badges/python.md -->
57
+
58
+ [![codecov](https://codecov.io/gh/liblaf/cherries/graph/badge.svg)](https://codecov.io/gh/liblaf/cherries)
59
+ [![MegaLinter](https://github.com/liblaf/cherries/actions/workflows/mega-linter.yaml/badge.svg)](https://github.com/liblaf/cherries/actions/workflows/mega-linter.yaml)
60
+ [![Test](https://github.com/liblaf/cherries/actions/workflows/test.yaml/badge.svg)](https://github.com/liblaf/cherries/actions/workflows/test.yaml)
61
+ [![pre-commit.ci status](https://results.pre-commit.ci/badge/github/liblaf/cherries/main.svg)](https://results.pre-commit.ci/latest/github/liblaf/cherries/main)
62
+ [![CodSpeed Badge](https://img.shields.io/endpoint?url=https://codspeed.io/badge.json)](https://codspeed.io/liblaf/cherries)
63
+ [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
64
+ [![PyPI - Downloads](https://img.shields.io/pypi/dm/liblaf-cherries?logo=PyPI&label=Downloads)](https://pypi.org/project/liblaf-cherries)
65
+ [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/liblaf-cherries?logo=Python&label=Python)](https://pypi.org/project/liblaf-cherries)
66
+ [![PyPI - Version](https://img.shields.io/pypi/v/liblaf-cherries?logo=PyPI&label=PyPI)](https://pypi.org/project/liblaf-cherries)
67
+
68
+ <!-- tangerine-end -->
69
+
70
+ [Changelog](https://github.com/liblaf/cherries/blob/main/CHANGELOG.md) · [Report Bug](https://github.com/liblaf/cherries/issues) · [Request Feature](https://github.com/liblaf/cherries/issues)
71
+
72
+ ![](https://cdn.jsdelivr.net/gh/andreasbm/readme/assets/lines/rainbow.png)
73
+
74
+ </div>
75
+
76
+ ## ✨ Features
77
+
78
+ - 🧪 **Experiment Tracking:** Seamlessly log parameters, metrics, and artifacts with automatic integration to Comet.ml, DVC, and local storage;
79
+ - 🔄 **Automated Versioning:** Automatic Git commits with detailed metadata including inputs, outputs, and parameters for full experiment reproducibility;
80
+ - 🧩 **Plugin Architecture:** Extensible plugin system with dependency-aware execution order and support for custom integrations;
81
+ - 📊 **Rich Configuration:** Pydantic-based configuration with automatic asset tracking for inputs and outputs using type annotations;
82
+ - 🤖 **Smart Automation:** Automatic detection of experiment directories, asset management, and intelligent logging configuration;
83
+ - ⚡ **Quick Setup:** Simple initialization script for DVC configuration and ready-to-use experiment templates;
84
+
85
+ ## 📦 Installation
86
+
87
+ To install `liblaf-cherries`, run the following command:
88
+
89
+ ```bash
90
+ uv add liblaf-cherries
91
+ ```
92
+
93
+ ## ⌨️ Local Development
94
+
95
+ You can use Github Codespaces for online development:
96
+
97
+ [![](https://github.com/codespaces/badge.svg)](https://codespaces.new/liblaf/cherries)
98
+
99
+ Or clone it for local development:
100
+
101
+ ```bash
102
+ gh repo clone liblaf/cherries
103
+ cd cherries
104
+ mise run install
105
+ ```
106
+
107
+ ## 🤝 Contributing
108
+
109
+ Contributions of all types are more than welcome, if you are interested in contributing code, feel free to check out our GitHub [Issues](https://github.com/liblaf/cherries/issues) to get stuck in to show us what you're made of.
110
+
111
+ [![PR Welcome](https://img.shields.io/badge/%F0%9F%A4%AF%20PR%20WELCOME-%E2%86%92-ffcb47?labelColor=black&style=for-the-badge)](https://github.com/liblaf/cherries/pulls)
112
+
113
+ [![Contributors](https://contrib.nn.ci/api?repo=liblaf/cherries)](https://github.com/liblaf/cherries/graphs/contributors)
114
+
115
+ ## 🔗 More Projects
116
+
117
+ <!-- tangerine-start: projects/fruits.md -->
118
+
119
+ - **[🍇 Grapes](https://github.com/liblaf/grapes)** - Supercharge your Python with rich logging, precise timing, and seamless serialization.
120
+ - **[🍉 Melon](https://github.com/liblaf/melon)** - A comprehensive Python library for 3D mesh processing with advanced I/O capabilities, proximity analysis, and integration with external mesh processing tools.
121
+ - **[🍊 Tangerine](https://github.com/liblaf/tangerine)** - Squeeze dynamic content into your files with Tangerine's template magic.
122
+ - **[🍋‍🟩 Lime](https://github.com/liblaf/lime)** - AI-powered Git commit assistant and repository documentation generator
123
+ - **[🍎 Apple](https://github.com/liblaf/apple)** - A JAX and Warp library for differentiable physics simulation, featuring elastic energy models and finite element methods.
124
+ - **[🍒 Cherries](https://github.com/liblaf/cherries)** - Sweet experiment tracking with Comet, DVC, and Git integration.
125
+ <!-- tangerine-end -->
126
+
127
+ ---
128
+
129
+ #### 📝 License
130
+
131
+ Copyright © 2025 [liblaf](https://github.com/liblaf). <br />
132
+ This project is [MIT](https://github.com/liblaf/cherries/blob/main/LICENSE) licensed.
@@ -0,0 +1,84 @@
1
+ <div align="center" markdown>
2
+ <a name="readme-top"></a>
3
+
4
+ ![cherries](https://socialify.git.ci/liblaf/cherries/image?description=1&forks=1&issues=1&language=1&logo=https%3A%2F%2Fraw.githubusercontent.com%2Fmicrosoft%2Ffluentui-emoji%2Frefs%2Fheads%2Fmain%2Fassets%2FCherries%2F3D%2Fcherries_3d.png&name=1&owner=1&pattern=Transparent&pulls=1&stargazers=1&theme=Auto)
5
+
6
+ **[Explore the docs »](https://liblaf.github.io/cherries/)**
7
+
8
+ <!-- tangerine-start: badges/python.md -->
9
+
10
+ [![codecov](https://codecov.io/gh/liblaf/cherries/graph/badge.svg)](https://codecov.io/gh/liblaf/cherries)
11
+ [![MegaLinter](https://github.com/liblaf/cherries/actions/workflows/mega-linter.yaml/badge.svg)](https://github.com/liblaf/cherries/actions/workflows/mega-linter.yaml)
12
+ [![Test](https://github.com/liblaf/cherries/actions/workflows/test.yaml/badge.svg)](https://github.com/liblaf/cherries/actions/workflows/test.yaml)
13
+ [![pre-commit.ci status](https://results.pre-commit.ci/badge/github/liblaf/cherries/main.svg)](https://results.pre-commit.ci/latest/github/liblaf/cherries/main)
14
+ [![CodSpeed Badge](https://img.shields.io/endpoint?url=https://codspeed.io/badge.json)](https://codspeed.io/liblaf/cherries)
15
+ [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
16
+ [![PyPI - Downloads](https://img.shields.io/pypi/dm/liblaf-cherries?logo=PyPI&label=Downloads)](https://pypi.org/project/liblaf-cherries)
17
+ [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/liblaf-cherries?logo=Python&label=Python)](https://pypi.org/project/liblaf-cherries)
18
+ [![PyPI - Version](https://img.shields.io/pypi/v/liblaf-cherries?logo=PyPI&label=PyPI)](https://pypi.org/project/liblaf-cherries)
19
+
20
+ <!-- tangerine-end -->
21
+
22
+ [Changelog](https://github.com/liblaf/cherries/blob/main/CHANGELOG.md) · [Report Bug](https://github.com/liblaf/cherries/issues) · [Request Feature](https://github.com/liblaf/cherries/issues)
23
+
24
+ ![](https://cdn.jsdelivr.net/gh/andreasbm/readme/assets/lines/rainbow.png)
25
+
26
+ </div>
27
+
28
+ ## ✨ Features
29
+
30
+ - 🧪 **Experiment Tracking:** Seamlessly log parameters, metrics, and artifacts with automatic integration to Comet.ml, DVC, and local storage;
31
+ - 🔄 **Automated Versioning:** Automatic Git commits with detailed metadata including inputs, outputs, and parameters for full experiment reproducibility;
32
+ - 🧩 **Plugin Architecture:** Extensible plugin system with dependency-aware execution order and support for custom integrations;
33
+ - 📊 **Rich Configuration:** Pydantic-based configuration with automatic asset tracking for inputs and outputs using type annotations;
34
+ - 🤖 **Smart Automation:** Automatic detection of experiment directories, asset management, and intelligent logging configuration;
35
+ - ⚡ **Quick Setup:** Simple initialization script for DVC configuration and ready-to-use experiment templates;
36
+
37
+ ## 📦 Installation
38
+
39
+ To install `liblaf-cherries`, run the following command:
40
+
41
+ ```bash
42
+ uv add liblaf-cherries
43
+ ```
44
+
45
+ ## ⌨️ Local Development
46
+
47
+ You can use Github Codespaces for online development:
48
+
49
+ [![](https://github.com/codespaces/badge.svg)](https://codespaces.new/liblaf/cherries)
50
+
51
+ Or clone it for local development:
52
+
53
+ ```bash
54
+ gh repo clone liblaf/cherries
55
+ cd cherries
56
+ mise run install
57
+ ```
58
+
59
+ ## 🤝 Contributing
60
+
61
+ Contributions of all types are more than welcome, if you are interested in contributing code, feel free to check out our GitHub [Issues](https://github.com/liblaf/cherries/issues) to get stuck in to show us what you're made of.
62
+
63
+ [![PR Welcome](https://img.shields.io/badge/%F0%9F%A4%AF%20PR%20WELCOME-%E2%86%92-ffcb47?labelColor=black&style=for-the-badge)](https://github.com/liblaf/cherries/pulls)
64
+
65
+ [![Contributors](https://contrib.nn.ci/api?repo=liblaf/cherries)](https://github.com/liblaf/cherries/graphs/contributors)
66
+
67
+ ## 🔗 More Projects
68
+
69
+ <!-- tangerine-start: projects/fruits.md -->
70
+
71
+ - **[🍇 Grapes](https://github.com/liblaf/grapes)** - Supercharge your Python with rich logging, precise timing, and seamless serialization.
72
+ - **[🍉 Melon](https://github.com/liblaf/melon)** - A comprehensive Python library for 3D mesh processing with advanced I/O capabilities, proximity analysis, and integration with external mesh processing tools.
73
+ - **[🍊 Tangerine](https://github.com/liblaf/tangerine)** - Squeeze dynamic content into your files with Tangerine's template magic.
74
+ - **[🍋‍🟩 Lime](https://github.com/liblaf/lime)** - AI-powered Git commit assistant and repository documentation generator
75
+ - **[🍎 Apple](https://github.com/liblaf/apple)** - A JAX and Warp library for differentiable physics simulation, featuring elastic energy models and finite element methods.
76
+ - **[🍒 Cherries](https://github.com/liblaf/cherries)** - Sweet experiment tracking with Comet, DVC, and Git integration.
77
+ <!-- tangerine-end -->
78
+
79
+ ---
80
+
81
+ #### 📝 License
82
+
83
+ Copyright © 2025 [liblaf](https://github.com/liblaf). <br />
84
+ This project is [MIT](https://github.com/liblaf/cherries/blob/main/LICENSE) licensed.
@@ -3,7 +3,7 @@
3
3
 
4
4
  [project]
5
5
  name = "liblaf-cherries"
6
- description = "Add your description here"
6
+ description = "🍒 Sweet experiment tracking with Comet, DVC, and Git integration."
7
7
  readme = "README.md"
8
8
  requires-python = ">=3.12"
9
9
  license = "MIT"
@@ -39,11 +39,11 @@ dependencies = [
39
39
  "environs>=14,<15",
40
40
  "gitpython>=3,<4",
41
41
  "lazy-loader>=0.4,<0.5",
42
- "liblaf-grapes>=2,<3",
42
+ "liblaf-grapes>=4,<5",
43
43
  "loguru>=0.7,<0.8",
44
44
  "networkx>=3,<4",
45
- "pydantic-settings>=2,<3",
46
45
  "pydantic>=2,<3",
46
+ "pydantic-settings>=2,<3",
47
47
  "rich>=14,<15",
48
48
  "wrapt>=1,<2",
49
49
  ]
@@ -61,14 +61,7 @@ dynamic = ["version"]
61
61
  build = ["check-wheel-contents>=0.6,<0.7", "hatch>=1,<2", "twine>=6,<7"]
62
62
  dev = ["icecream>=2,<3"]
63
63
  docs = ["liblaf-mkdocs-preset>=0.2,<0.3", "mkdocs>=1,<2"]
64
- test = [
65
- "hypothesis>=6,<7",
66
- "pytest-codspeed>=4,<5",
67
- "pytest-cov>=6,<7",
68
- "pytest-randomly>=3,<4",
69
- "pytest-xdist>=3,<4",
70
- "pytest>=8,<9",
71
- ]
64
+ test = ["liblaf-pytest-preset>=0.1,<0.2", "pytest>=8,<9"]
72
65
 
73
66
  [build-system]
74
67
  requires = ["hatch-vcs", "hatchling"]
@@ -94,13 +87,13 @@ packages = ["src/liblaf"]
94
87
  source = "vcs"
95
88
 
96
89
  [tool.pyright]
97
- exclude = ["**/.*", "**/__pycache__", "**/marimo", "**/node_modules"]
98
90
  extends = ".config/linters/pyrightconfig.json"
99
91
 
100
92
  [tool.pytest.ini_options]
101
93
  addopts = [
102
94
  "--doctest-modules",
103
95
  "--hypothesis-show-statistics",
96
+ "--import-mode=importlib",
104
97
  "--showlocals",
105
98
  "--strict-config",
106
99
  "--strict-markers",
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
28
28
  commit_id: COMMIT_ID
29
29
  __commit_id__: COMMIT_ID
30
30
 
31
- __version__ = version = '0.4.0'
32
- __version_tuple__ = version_tuple = (0, 4, 0)
31
+ __version__ = version = '0.4.2'
32
+ __version_tuple__ = version_tuple = (0, 4, 2)
33
33
 
34
34
  __commit_id__ = commit_id = None
@@ -1,6 +1,6 @@
1
1
  from pathlib import Path
2
2
 
3
- from liblaf.grapes.typed import PathLike
3
+ from liblaf.grapes.typing import PathLike
4
4
 
5
5
  from ._path import exp_dir
6
6
 
@@ -0,0 +1,24 @@
1
+ from pathlib import Path
2
+ from typing import override
3
+
4
+ import attrs
5
+
6
+ from liblaf import grapes
7
+ from liblaf.cherries import core
8
+
9
+
10
+ @attrs.define
11
+ class Logging(core.Run):
12
+ @property
13
+ def log_file(self) -> Path:
14
+ return self.plugin_root.exp_dir / "run.log"
15
+
16
+ @override
17
+ @core.impl
18
+ def start(self, *args, **kwargs) -> None:
19
+ grapes.logging.init(enable_link=False, file=self.log_file)
20
+
21
+ @override
22
+ @core.impl
23
+ def end(self, *args, **kwargs) -> None:
24
+ self.plugin_root.log_asset(self.log_file)
@@ -1,199 +0,0 @@
1
- # Created by https://www.toptal.com/developers/gitignore/api/python
2
- # Edit at https://www.toptal.com/developers/gitignore?templates=python
3
-
4
- ### Python ###
5
- # Byte-compiled / optimized / DLL files
6
- __pycache__/
7
- *.py[cod]
8
- *$py.class
9
-
10
- # C extensions
11
- *.so
12
-
13
- # Distribution / packaging
14
- .Python
15
- build/
16
- develop-eggs/
17
- dist/
18
- downloads/
19
- eggs/
20
- .eggs/
21
- lib/
22
- lib64/
23
- parts/
24
- sdist/
25
- var/
26
- wheels/
27
- share/python-wheels/
28
- *.egg-info/
29
- .installed.cfg
30
- *.egg
31
- MANIFEST
32
-
33
- # PyInstaller
34
- # Usually these files are written by a python script from a template
35
- # before PyInstaller builds the exe, so as to inject date/other infos into it.
36
- *.manifest
37
- *.spec
38
-
39
- # Installer logs
40
- pip-log.txt
41
- pip-delete-this-directory.txt
42
-
43
- # Unit test / coverage reports
44
- htmlcov/
45
- .tox/
46
- .nox/
47
- .coverage
48
- .coverage.*
49
- .cache
50
- nosetests.xml
51
- coverage.xml
52
- *.cover
53
- *.py,cover
54
- .hypothesis/
55
- .pytest_cache/
56
- cover/
57
-
58
- # Translations
59
- *.mo
60
- *.pot
61
-
62
- # Django stuff:
63
- *.log
64
- local_settings.py
65
- db.sqlite3
66
- db.sqlite3-journal
67
-
68
- # Flask stuff:
69
- instance/
70
- .webassets-cache
71
-
72
- # Scrapy stuff:
73
- .scrapy
74
-
75
- # Sphinx documentation
76
- docs/_build/
77
-
78
- # PyBuilder
79
- .pybuilder/
80
- target/
81
-
82
- # Jupyter Notebook
83
- .ipynb_checkpoints
84
-
85
- # IPython
86
- profile_default/
87
- ipython_config.py
88
-
89
- # pyenv
90
- # For a library or package, you might want to ignore these files since the code is
91
- # intended to run in multiple environments; otherwise, check them in:
92
- # .python-version
93
-
94
- # pipenv
95
- # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
96
- # However, in case of collaboration, if having platform-specific dependencies or dependencies
97
- # having no cross-platform support, pipenv may install dependencies that don't work, or not
98
- # install all needed dependencies.
99
- #Pipfile.lock
100
-
101
- # poetry
102
- # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
103
- # This is especially recommended for binary packages to ensure reproducibility, and is more
104
- # commonly ignored for libraries.
105
- # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
106
- #poetry.lock
107
-
108
- # pdm
109
- # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
110
- #pdm.lock
111
- # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
112
- # in version control.
113
- # https://pdm.fming.dev/#use-with-ide
114
- .pdm.toml
115
-
116
- # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
117
- __pypackages__/
118
-
119
- # Celery stuff
120
- celerybeat-schedule
121
- celerybeat.pid
122
-
123
- # SageMath parsed files
124
- *.sage.py
125
-
126
- # Environments
127
- .env
128
- .venv
129
- env/
130
- venv/
131
- ENV/
132
- env.bak/
133
- venv.bak/
134
-
135
- # Spyder project settings
136
- .spyderproject
137
- .spyproject
138
-
139
- # Rope project settings
140
- .ropeproject
141
-
142
- # mkdocs documentation
143
- /site
144
-
145
- # mypy
146
- .mypy_cache/
147
- .dmypy.json
148
- dmypy.json
149
-
150
- # Pyre type checker
151
- .pyre/
152
-
153
- # pytype static type analyzer
154
- .pytype/
155
-
156
- # Cython debug symbols
157
- cython_debug/
158
-
159
- # PyCharm
160
- # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
161
- # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
162
- # and can be added to the global gitignore or merged into this file. For a more nuclear
163
- # option (not recommended) you can uncomment the following to ignore the entire idea folder.
164
- #.idea/
165
-
166
- ### Python Patch ###
167
- # Poetry local configuration file - https://python-poetry.org/docs/configuration/#local-configuration
168
- poetry.toml
169
-
170
- # ruff
171
- .ruff_cache/
172
-
173
- # LSP config files
174
- # pyrightconfig.json
175
-
176
- # End of https://www.toptal.com/developers/gitignore/api/python
177
-
178
- *.log
179
- *.log.gz
180
- *.log.jsonl
181
- *.log.jsonl.gz
182
- playground/
183
-
184
- # hatch-vcs
185
- _version.py
186
-
187
- # pytest
188
- junit.xml
189
-
190
- # pytest-codspeed
191
- .codspeed/
192
-
193
- # pytest-benchmark
194
- .benchmarks/
195
-
196
- # MLflow
197
- mlruns/
198
-
199
- .cherries/
@@ -1,167 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: liblaf-cherries
3
- Version: 0.4.0
4
- Summary: Add your description here
5
- Project-URL: Changelog, https://github.com/liblaf/cherries/blob/main/CHANGELOG.md
6
- Project-URL: Documentation, https://cherries.readthedocs.io/
7
- Project-URL: Homepage, https://github.com/liblaf/cherries
8
- Project-URL: Issue Tracker, https://github.com/liblaf/cherries/issues
9
- Project-URL: Release Notes, https://github.com/liblaf/cherries/releases
10
- Project-URL: Source Code, https://github.com/liblaf/cherries
11
- Author-email: liblaf <30631553+liblaf@users.noreply.github.com>
12
- License-Expression: MIT
13
- License-File: LICENSE
14
- Classifier: Development Status :: 4 - Beta
15
- Classifier: Intended Audience :: Developers
16
- Classifier: Intended Audience :: Science/Research
17
- Classifier: License :: OSI Approved
18
- Classifier: License :: OSI Approved :: MIT License
19
- Classifier: Operating System :: OS Independent
20
- Classifier: Programming Language :: Python
21
- Classifier: Programming Language :: Python :: 3
22
- Classifier: Programming Language :: Python :: 3.12
23
- Classifier: Programming Language :: Python :: 3.13
24
- Classifier: Topic :: Software Development
25
- Classifier: Topic :: Software Development :: Bug Tracking
26
- Classifier: Topic :: Software Development :: Debuggers
27
- Classifier: Topic :: Software Development :: Libraries
28
- Classifier: Topic :: Software Development :: Libraries :: Python Modules
29
- Classifier: Topic :: System
30
- Classifier: Topic :: System :: Logging
31
- Classifier: Topic :: Utilities
32
- Classifier: Typing :: Typed
33
- Requires-Python: >=3.12
34
- Requires-Dist: attrs<26,>=25
35
- Requires-Dist: comet-ml<4,>=3
36
- Requires-Dist: dvc[all]<4,>=3
37
- Requires-Dist: environs<15,>=14
38
- Requires-Dist: gitpython<4,>=3
39
- Requires-Dist: lazy-loader<0.5,>=0.4
40
- Requires-Dist: liblaf-grapes<3,>=2
41
- Requires-Dist: loguru<0.8,>=0.7
42
- Requires-Dist: networkx<4,>=3
43
- Requires-Dist: pydantic-settings<3,>=2
44
- Requires-Dist: pydantic<3,>=2
45
- Requires-Dist: rich<15,>=14
46
- Requires-Dist: wrapt<2,>=1
47
- Description-Content-Type: text/markdown
48
-
49
- <!-- -*- mode: markdown; -*- -->
50
-
51
- <div align="center" markdown>
52
- <a name="readme-top"></a>
53
-
54
- <img
55
- height="160"
56
- src="https://cdn.jsdelivr.net/gh/microsoft/fluentui-emoji/assets/Cherries/3D/cherries_3d.png"
57
- />
58
-
59
- # Cherries
60
-
61
- TODO: DESCRIPTION <br />
62
- [**Explore the docs »**](https://liblaf.github.io/cherries/)
63
-
64
- <!-- tangerine-start: badges/python.md.jinja -->
65
-
66
- [![Codecov](https://img.shields.io/codecov/c/github/liblaf/cherries?logo=Codecov&label=Coverage)](https://codecov.io/gh/liblaf/cherries)
67
- [![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/liblaf/cherries/test.yaml?logo=GitHub%20Actions&label=Test)](https://github.com/liblaf/cherries/actions/workflows/test.yaml)
68
- [![Lines of Code](https://tokei.rs/b1/github.com/liblaf/cherries?category=code&label=Lines%20of%20Code&style=flat)](https://github.com/liblaf/cherries)
69
- <br />
70
- [![PyPI - Downloads](https://img.shields.io/pypi/dm/liblaf-cherries?logo=PyPI&label=Downloads)](https://pypi.org/project/liblaf-cherries)
71
- [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/liblaf-cherries?logo=Python&label=Python)](https://pypi.org/project/liblaf-cherries)
72
- [![PyPI - Version](https://img.shields.io/pypi/v/liblaf-cherries?logo=PyPI&label=PyPI)](https://pypi.org/project/liblaf-cherries)
73
- <br />
74
- [![GitHub Contributors](https://img.shields.io/github/contributors/liblaf/cherries?logo=GitHub&label=Contributors)](https://github.com/liblaf/cherries/graphs/contributors)
75
- [![GitHub Issues](https://img.shields.io/github/issues/liblaf/cherries?logo=GitHub&label=Issues)](https://github.com/liblaf/cherries/issues)
76
- [![GitHub License](https://img.shields.io/github/license/liblaf/cherries?label=License)](https://github.com/liblaf/cherries/blob/main/LICENSE)
77
- [![GitHub Forks](https://img.shields.io/github/forks/liblaf/cherries)](https://github.com/liblaf/cherries/forks)
78
- [![GitHub Repo Stars](https://img.shields.io/github/stars/liblaf/cherries)](https://github.com/liblaf/cherries/stargazers)
79
-
80
- <!-- tangerine-end -->
81
-
82
- [Changelog](https://github.com/liblaf/cherries/blob/main/CHANGELOG.md) · [Report Bug](https://github.com/liblaf/cherries/issues) · [Request Feature](https://github.com/liblaf/cherries/issues)
83
-
84
- ![](https://cdn.jsdelivr.net/gh/andreasbm/readme/assets/lines/rainbow.png)
85
-
86
- </div>
87
-
88
- ## ✨ Features
89
-
90
- - [x] ✨ **TODO:** FEATURES;
91
-
92
- <div align="right" markdown>
93
-
94
- [![](https://img.shields.io/badge/-BACK_TO_TOP-black?style=flat-square)](#readme-top)
95
-
96
- </div>
97
-
98
- ## 📦 Installation
99
-
100
- To install `liblaf-cherries`, run the following command:
101
-
102
- ```bash
103
- $ uv add liblaf-cherries
104
- ```
105
-
106
- <div align="right" markdown>
107
-
108
- [![](https://img.shields.io/badge/-BACK_TO_TOP-black?style=flat-square)](#readme-top)
109
-
110
- </div>
111
-
112
- ## ⌨️ Local Development
113
-
114
- You can use Github Codespaces for online development:
115
-
116
- [![](https://github.com/codespaces/badge.svg)](https://codespaces.new/liblaf/cherries)
117
-
118
- Or clone it for local development:
119
-
120
- ```bash
121
- $ gh repo clone liblaf/cherries
122
- $ cd cherries
123
- $ mise run test
124
- ```
125
-
126
- <div align="right" markdown>
127
-
128
- [![](https://img.shields.io/badge/-BACK_TO_TOP-black?style=flat-square)](#readme-top)
129
-
130
- </div>
131
-
132
- ## 🤝 Contributing
133
-
134
- Contributions of all types are more than welcome, if you are interested in contributing code, feel free to check out our GitHub [Issues](https://github.com/liblaf/cherries/issues) to get stuck in to show us what you're made of.
135
-
136
- [![](https://img.shields.io/badge/%F0%9F%A4%AF%20PR%20WELCOME-%E2%86%92-ffcb47?labelColor=black&style=for-the-badge)](https://github.com/liblaf/cherries/pulls)
137
-
138
- [![](https://contrib.rocks/image?repo=liblaf%2Fcherries)](https://github.com/liblaf/cherries/graphs/contributors)
139
-
140
- <div align="right" markdown>
141
-
142
- [![](https://img.shields.io/badge/-BACK_TO_TOP-black?style=flat-square)](#readme-top)
143
-
144
- </div>
145
-
146
- ## 🔗 Links
147
-
148
- ### More Projects
149
-
150
- - **[🍇 Grapes](https://github.com/liblaf/grapes)** - Powerful Python utilities for logging, timing, and more, making development smoother!
151
-
152
- ### Credits
153
-
154
- - **Python** - <https://www.python.org/>
155
-
156
- <div align="right" markdown>
157
-
158
- [![](https://img.shields.io/badge/-BACK_TO_TOP-black?style=flat-square)](#readme-top)
159
-
160
- </div>
161
-
162
- ---
163
-
164
- #### 📝 License
165
-
166
- Copyright © 2025 [liblaf](https://github.com/liblaf). <br />
167
- This project is [MIT](https://github.com/liblaf/cherries/blob/main/LICENSE) licensed.
@@ -1,119 +0,0 @@
1
- <!-- -*- mode: markdown; -*- -->
2
-
3
- <div align="center" markdown>
4
- <a name="readme-top"></a>
5
-
6
- <img
7
- height="160"
8
- src="https://cdn.jsdelivr.net/gh/microsoft/fluentui-emoji/assets/Cherries/3D/cherries_3d.png"
9
- />
10
-
11
- # Cherries
12
-
13
- TODO: DESCRIPTION <br />
14
- [**Explore the docs »**](https://liblaf.github.io/cherries/)
15
-
16
- <!-- tangerine-start: badges/python.md.jinja -->
17
-
18
- [![Codecov](https://img.shields.io/codecov/c/github/liblaf/cherries?logo=Codecov&label=Coverage)](https://codecov.io/gh/liblaf/cherries)
19
- [![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/liblaf/cherries/test.yaml?logo=GitHub%20Actions&label=Test)](https://github.com/liblaf/cherries/actions/workflows/test.yaml)
20
- [![Lines of Code](https://tokei.rs/b1/github.com/liblaf/cherries?category=code&label=Lines%20of%20Code&style=flat)](https://github.com/liblaf/cherries)
21
- <br />
22
- [![PyPI - Downloads](https://img.shields.io/pypi/dm/liblaf-cherries?logo=PyPI&label=Downloads)](https://pypi.org/project/liblaf-cherries)
23
- [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/liblaf-cherries?logo=Python&label=Python)](https://pypi.org/project/liblaf-cherries)
24
- [![PyPI - Version](https://img.shields.io/pypi/v/liblaf-cherries?logo=PyPI&label=PyPI)](https://pypi.org/project/liblaf-cherries)
25
- <br />
26
- [![GitHub Contributors](https://img.shields.io/github/contributors/liblaf/cherries?logo=GitHub&label=Contributors)](https://github.com/liblaf/cherries/graphs/contributors)
27
- [![GitHub Issues](https://img.shields.io/github/issues/liblaf/cherries?logo=GitHub&label=Issues)](https://github.com/liblaf/cherries/issues)
28
- [![GitHub License](https://img.shields.io/github/license/liblaf/cherries?label=License)](https://github.com/liblaf/cherries/blob/main/LICENSE)
29
- [![GitHub Forks](https://img.shields.io/github/forks/liblaf/cherries)](https://github.com/liblaf/cherries/forks)
30
- [![GitHub Repo Stars](https://img.shields.io/github/stars/liblaf/cherries)](https://github.com/liblaf/cherries/stargazers)
31
-
32
- <!-- tangerine-end -->
33
-
34
- [Changelog](https://github.com/liblaf/cherries/blob/main/CHANGELOG.md) · [Report Bug](https://github.com/liblaf/cherries/issues) · [Request Feature](https://github.com/liblaf/cherries/issues)
35
-
36
- ![](https://cdn.jsdelivr.net/gh/andreasbm/readme/assets/lines/rainbow.png)
37
-
38
- </div>
39
-
40
- ## ✨ Features
41
-
42
- - [x] ✨ **TODO:** FEATURES;
43
-
44
- <div align="right" markdown>
45
-
46
- [![](https://img.shields.io/badge/-BACK_TO_TOP-black?style=flat-square)](#readme-top)
47
-
48
- </div>
49
-
50
- ## 📦 Installation
51
-
52
- To install `liblaf-cherries`, run the following command:
53
-
54
- ```bash
55
- $ uv add liblaf-cherries
56
- ```
57
-
58
- <div align="right" markdown>
59
-
60
- [![](https://img.shields.io/badge/-BACK_TO_TOP-black?style=flat-square)](#readme-top)
61
-
62
- </div>
63
-
64
- ## ⌨️ Local Development
65
-
66
- You can use Github Codespaces for online development:
67
-
68
- [![](https://github.com/codespaces/badge.svg)](https://codespaces.new/liblaf/cherries)
69
-
70
- Or clone it for local development:
71
-
72
- ```bash
73
- $ gh repo clone liblaf/cherries
74
- $ cd cherries
75
- $ mise run test
76
- ```
77
-
78
- <div align="right" markdown>
79
-
80
- [![](https://img.shields.io/badge/-BACK_TO_TOP-black?style=flat-square)](#readme-top)
81
-
82
- </div>
83
-
84
- ## 🤝 Contributing
85
-
86
- Contributions of all types are more than welcome, if you are interested in contributing code, feel free to check out our GitHub [Issues](https://github.com/liblaf/cherries/issues) to get stuck in to show us what you're made of.
87
-
88
- [![](https://img.shields.io/badge/%F0%9F%A4%AF%20PR%20WELCOME-%E2%86%92-ffcb47?labelColor=black&style=for-the-badge)](https://github.com/liblaf/cherries/pulls)
89
-
90
- [![](https://contrib.rocks/image?repo=liblaf%2Fcherries)](https://github.com/liblaf/cherries/graphs/contributors)
91
-
92
- <div align="right" markdown>
93
-
94
- [![](https://img.shields.io/badge/-BACK_TO_TOP-black?style=flat-square)](#readme-top)
95
-
96
- </div>
97
-
98
- ## 🔗 Links
99
-
100
- ### More Projects
101
-
102
- - **[🍇 Grapes](https://github.com/liblaf/grapes)** - Powerful Python utilities for logging, timing, and more, making development smoother!
103
-
104
- ### Credits
105
-
106
- - **Python** - <https://www.python.org/>
107
-
108
- <div align="right" markdown>
109
-
110
- [![](https://img.shields.io/badge/-BACK_TO_TOP-black?style=flat-square)](#readme-top)
111
-
112
- </div>
113
-
114
- ---
115
-
116
- #### 📝 License
117
-
118
- Copyright © 2025 [liblaf](https://github.com/liblaf). <br />
119
- This project is [MIT](https://github.com/liblaf/cherries/blob/main/LICENSE) licensed.
@@ -1,26 +0,0 @@
1
- from typing import override
2
-
3
- import attrs
4
-
5
- from liblaf import grapes
6
- from liblaf.cherries import core
7
-
8
-
9
- @attrs.define
10
- class Logging(core.Run):
11
- @override
12
- @core.impl
13
- def start(self, *args, **kwargs) -> None:
14
- profile = grapes.logging.profiles.ProfileCherries(
15
- handlers=[
16
- # Comet and many other experiment tracking platforms do not support links
17
- grapes.logging.rich_handler(enable_link=False),
18
- grapes.logging.file_handler(sink=self.plugin_root.exp_dir / "run.log"),
19
- ]
20
- )
21
- grapes.logging.init(profile=profile)
22
-
23
- @override
24
- @core.impl
25
- def end(self, *args, **kwargs) -> None:
26
- self.plugin_root.log_asset(self.plugin_root.exp_dir / "run.log")
File without changes