Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 3 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -393,7 +393,7 @@ backend = FalaExecutionBackend("journal.sqlite")
summary = backend.execute(request, perform_step)
```

This is a thin adapter over Fala 0.7.28's public `record_in_process` API:
This is a thin adapter over Fala 0.8.1's public `fala.host.record_in_process` API:
`run_id`, `execution_id` (as Fala's `process_id`), `inputs`, `metadata`, and the
callback are forwarded unchanged. Fala owns validation, recording, exact-once
callback invocation, and return/exception semantics. The caller still creates
Expand Down Expand Up @@ -423,9 +423,8 @@ pip install "datasource-kit[fastapi]" # FastAPI control-plane router
```

The `[fala]` extra installs [mikolaj92/Fala](https://github.com/mikolaj92/Fala)
from GitHub at the `v0.7.28` tag (`record_in_process`). Fala is not published
to PyPI; the extra carries a PEP 508 git URL so `pip` does not resolve the
unrelated PyPI project named `fala`.
from an HTTPS archive pinned to commit `27c179aee96daf6953ef36d6b1a007214d14a0db` (0.8.1).
The PEP 508 URL avoids git fetch and the unrelated PyPI project named `fala`.

## Minimal Batch Usage

Expand Down
9 changes: 1 addition & 8 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,7 @@ dependencies = []
datasource-kit = "datasource_kit.cli:main"

[project.optional-dependencies]
# Blob/artifact resolution and in-process journal recording only.
# Fala is GitHub-only (name = "fala"); the PEP 508 URL keeps pip off the
# unrelated PyPI project of the same name. Adapter needs record_in_process
# (Fala 0.7.28+).
fala = ["fala @ git+https://github.com/mikolaj92/Fala.git@v0.7.28"]
fala = ["fala @ https://github.com/mikolaj92/Fala/archive/27c179aee96daf6953ef36d6b1a007214d14a0db.tar.gz"]
# YAML profile loading only; JSON profiles are the dep-free default.
profiles = ["pyyaml>=6.0"]
# Optional FastAPI control-plane router; the core stays HTTP-framework-free.
Expand All @@ -34,9 +30,6 @@ dev = ["pytest>=8.0", "fastapi>=0.141.1", "httpx2>=2.12.0"]
[dependency-groups]
dev = ["pytest>=8.0", "fastapi>=0.141.1", "httpx2>=2.12.0"]

[tool.uv.sources]
fala = { git = "https://github.com/mikolaj92/Fala", tag = "v0.7.28" }

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
Expand Down
13 changes: 6 additions & 7 deletions tests/adapters/test_fala_extra_source.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,22 +5,21 @@
from typing import Final

_ROOT: Final = Path(__file__).resolve().parents[2]
_FALA_GIT: Final = "https://github.com/mikolaj92/Fala"
_FALA_TAG: Final = "v0.7.28"
_FALA_EXTRA: Final = f"fala @ git+{_FALA_GIT}.git@{_FALA_TAG}"
_FALA_ARCHIVE: Final = "https://github.com/mikolaj92/Fala/archive/27c179aee96daf6953ef36d6b1a007214d14a0db.tar.gz"
_FALA_EXTRA: Final = f"fala @ {_FALA_ARCHIVE}"


def _pyproject() -> dict[str, object]:
return tomllib.loads((_ROOT / "pyproject.toml").read_text(encoding="utf-8"))


def test_fala_extra_installs_mikolaj92_fala_from_git() -> None:
def test_fala_extra_installs_mikolaj92_fala_from_archive() -> None:
extras = _pyproject()["project"]["optional-dependencies"]["fala"]

assert extras == [_FALA_EXTRA]


def test_uv_sources_pin_fala_to_the_same_git_tag() -> None:
sources = _pyproject()["tool"]["uv"]["sources"]["fala"]
def test_uv_sources_do_not_override_fala_archive() -> None:
sources = _pyproject().get("tool", {}).get("uv", {}).get("sources", {})

assert sources == {"git": _FALA_GIT, "tag": _FALA_TAG}
assert "fala" not in sources
11 changes: 8 additions & 3 deletions uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading