basemode-loom 0.1.1__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.
- basemode_loom-0.1.1/.gitignore +11 -0
- basemode_loom-0.1.1/Makefile +22 -0
- basemode_loom-0.1.1/PKG-INFO +7 -0
- basemode_loom-0.1.1/README.md +18 -0
- basemode_loom-0.1.1/pyproject.toml +59 -0
- basemode_loom-0.1.1/src/basemode_loom/__init__.py +24 -0
- basemode_loom-0.1.1/src/basemode_loom/cli.py +990 -0
- basemode_loom-0.1.1/src/basemode_loom/display.py +326 -0
- basemode_loom-0.1.1/src/basemode_loom/loom_formats.py +239 -0
- basemode_loom-0.1.1/src/basemode_loom/naming.py +80 -0
- basemode_loom-0.1.1/src/basemode_loom/session.py +494 -0
- basemode_loom-0.1.1/src/basemode_loom/stats.py +343 -0
- basemode_loom-0.1.1/src/basemode_loom/store.py +506 -0
- basemode_loom-0.1.1/src/basemode_loom/tui/__init__.py +0 -0
- basemode_loom-0.1.1/src/basemode_loom/tui/app.py +21 -0
- basemode_loom-0.1.1/src/basemode_loom/tui/app.tcss +125 -0
- basemode_loom-0.1.1/src/basemode_loom/tui/screens/__init__.py +0 -0
- basemode_loom-0.1.1/src/basemode_loom/tui/screens/confirm.py +36 -0
- basemode_loom-0.1.1/src/basemode_loom/tui/screens/int_input.py +35 -0
- basemode_loom-0.1.1/src/basemode_loom/tui/screens/loom.py +288 -0
- basemode_loom-0.1.1/src/basemode_loom/tui/screens/model_picker.py +57 -0
- basemode_loom-0.1.1/src/basemode_loom/tui/screens/stats.py +99 -0
- basemode_loom-0.1.1/src/basemode_loom/tui/screens/tree_picker.py +93 -0
- basemode_loom-0.1.1/src/basemode_loom/tui/widgets/__init__.py +0 -0
- basemode_loom-0.1.1/src/basemode_loom/tui/widgets/loom_view.py +88 -0
- basemode_loom-0.1.1/src/basemode_loom/tui/widgets/stream_view.py +78 -0
- basemode_loom-0.1.1/src/basemode_loom/tui/widgets/tree_picker.py +146 -0
- basemode_loom-0.1.1/tests/test_cli.py +220 -0
- basemode_loom-0.1.1/tests/test_display.py +407 -0
- basemode_loom-0.1.1/tests/test_loom_formats.py +150 -0
- basemode_loom-0.1.1/tests/test_naming.py +70 -0
- basemode_loom-0.1.1/tests/test_session.py +494 -0
- basemode_loom-0.1.1/tests/test_stats.py +123 -0
- basemode_loom-0.1.1/tests/test_store.py +242 -0
- basemode_loom-0.1.1/tests/test_tree_picker.py +451 -0
- basemode_loom-0.1.1/tests/test_tui.py +561 -0
- basemode_loom-0.1.1/uv.lock +2166 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
.PHONY: publish test test-core test-integration lint lint-core
|
|
2
|
+
|
|
3
|
+
publish:
|
|
4
|
+
rm -rf dist/
|
|
5
|
+
uv build
|
|
6
|
+
@export $$(grep UV_PUBLISH_TOKEN .env | xargs) && uv publish
|
|
7
|
+
|
|
8
|
+
test:
|
|
9
|
+
uv run pytest tests
|
|
10
|
+
|
|
11
|
+
test-core:
|
|
12
|
+
uv run pytest tests
|
|
13
|
+
|
|
14
|
+
test-integration:
|
|
15
|
+
uv run pytest -m integration
|
|
16
|
+
|
|
17
|
+
lint:
|
|
18
|
+
uv run ruff check src tests
|
|
19
|
+
uv run ruff format --check src tests
|
|
20
|
+
|
|
21
|
+
lint-core:
|
|
22
|
+
uv run ruff check src tests && uv run ruff format --check src tests
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# basemode-loom
|
|
2
|
+
|
|
3
|
+
Persistent branching exploration for `basemode` continuations.
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
pip install basemode-loom
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
`basemode-loom` depends on `basemode` from PyPI as a normal package dependency.
|
|
12
|
+
|
|
13
|
+
## CLI
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
basemode-loom --help
|
|
17
|
+
```
|
|
18
|
+
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["hatchling"]
|
|
3
|
+
build-backend = "hatchling.build"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "basemode-loom"
|
|
7
|
+
version = "0.1.1"
|
|
8
|
+
description = "Persistent branching exploration for basemode continuations"
|
|
9
|
+
requires-python = ">=3.11"
|
|
10
|
+
dependencies = [
|
|
11
|
+
"basemode>=0.1.2",
|
|
12
|
+
"textual>=0.85.0",
|
|
13
|
+
]
|
|
14
|
+
|
|
15
|
+
[project.scripts]
|
|
16
|
+
basemode-loom = "basemode_loom.cli:app"
|
|
17
|
+
|
|
18
|
+
[dependency-groups]
|
|
19
|
+
dev = [
|
|
20
|
+
"pytest>=8.0.0",
|
|
21
|
+
"pytest-asyncio>=0.23.0",
|
|
22
|
+
"pytest-cov>=5.0.0",
|
|
23
|
+
"ruff>=0.5.0",
|
|
24
|
+
]
|
|
25
|
+
|
|
26
|
+
[tool.hatch.build.targets.wheel]
|
|
27
|
+
packages = ["src/basemode_loom"]
|
|
28
|
+
|
|
29
|
+
[tool.ruff]
|
|
30
|
+
line-length = 88
|
|
31
|
+
src = ["src"]
|
|
32
|
+
target-version = "py311"
|
|
33
|
+
|
|
34
|
+
[tool.ruff.lint]
|
|
35
|
+
select = ["E", "F", "I", "UP", "B", "RUF"]
|
|
36
|
+
ignore = ["E501"]
|
|
37
|
+
|
|
38
|
+
[tool.ruff.lint.isort]
|
|
39
|
+
known-first-party = ["basemode_loom"]
|
|
40
|
+
|
|
41
|
+
[tool.ruff.lint.per-file-ignores]
|
|
42
|
+
"tests/*" = ["E741", "RUF059"]
|
|
43
|
+
|
|
44
|
+
[tool.pytest.ini_options]
|
|
45
|
+
asyncio_mode = "auto"
|
|
46
|
+
addopts = "--cov=src/basemode_loom --cov-report=term-missing"
|
|
47
|
+
testpaths = ["tests"]
|
|
48
|
+
|
|
49
|
+
[tool.coverage.run]
|
|
50
|
+
source = ["src/basemode_loom"]
|
|
51
|
+
omit = ["*/tests/*"]
|
|
52
|
+
|
|
53
|
+
[tool.coverage.report]
|
|
54
|
+
exclude_lines = [
|
|
55
|
+
"pragma: no cover",
|
|
56
|
+
"def __repr__",
|
|
57
|
+
"raise NotImplementedError",
|
|
58
|
+
"if TYPE_CHECKING:",
|
|
59
|
+
]
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"""Persistent branching exploration for basemode."""
|
|
2
|
+
|
|
3
|
+
__all__ = [
|
|
4
|
+
"GenerationStore",
|
|
5
|
+
"LoomSession",
|
|
6
|
+
"Node",
|
|
7
|
+
"default_db_path",
|
|
8
|
+
]
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def __getattr__(name: str):
|
|
12
|
+
if name in {"GenerationStore", "Node", "default_db_path"}:
|
|
13
|
+
from .store import GenerationStore, Node, default_db_path
|
|
14
|
+
|
|
15
|
+
return {
|
|
16
|
+
"GenerationStore": GenerationStore,
|
|
17
|
+
"Node": Node,
|
|
18
|
+
"default_db_path": default_db_path,
|
|
19
|
+
}[name]
|
|
20
|
+
if name == "LoomSession":
|
|
21
|
+
from .session import LoomSession
|
|
22
|
+
|
|
23
|
+
return LoomSession
|
|
24
|
+
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
|