Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
326f7bd
save state
ayushkamat Nov 13, 2024
95f9705
Merge branch 'main' of github.com:latchbio/latch into ayush/snakemake…
ayushkamat Nov 13, 2024
7afe806
Merge branch 'main' of github.com:latchbio/latch into ayush/snakemake…
ayushkamat Dec 13, 2024
5ee630d
stuff
ayushkamat Dec 16, 2024
ce4421a
stuff
ayushkamat Dec 18, 2024
b471a43
save state
ayushkamat Dec 23, 2024
f832c5a
Merge branch 'main' of github.com:latchbio/latch into ayush/snakemake…
ayushkamat Jan 30, 2025
b11de4a
ver
ayushkamat Jan 31, 2025
7a72607
Merge branch 'main' of github.com:latchbio/latch into ayush/snakemake…
ayushkamat Feb 28, 2025
5b42825
dont break 3.9
ayushkamat Feb 28, 2025
ed5088f
save state
ayushkamat Feb 28, 2025
5c335f0
make latch-snakemake a shell package
ayushkamat Mar 3, 2025
ea526d0
save state
ayushkamat Mar 7, 2025
fdf99c3
Merge branch 'main' of github.com:latchbio/latch into ayush/snakemake…
ayushkamat Mar 10, 2025
cb9cda7
latch-snakemkae
ayushkamat Mar 10, 2025
be458fd
del shell for now
ayushkamat May 23, 2025
6d33d38
Merge branch 'main' of github.com:latchbio/latch into ayush/snakemake…
ayushkamat May 23, 2025
4eda886
morge + new release
ayushkamat May 23, 2025
f7d9fb9
dumb
ayushkamat May 23, 2025
b251eda
Merge branch 'main' of github.com:latchbio/latch into ayush/snakemake…
ayushkamat Sep 23, 2025
b0e3f87
updates
ayushkamat Sep 26, 2025
5b6b4b7
various fixums
ayushkamat Sep 26, 2025
1970ed7
final thingd
ayushkamat Sep 26, 2025
6046e12
new version
ayushkamat Sep 26, 2025
ad5a829
durrrr
ayushkamat Sep 26, 2025
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
6 changes: 3 additions & 3 deletions Justfile
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Setup

install:
uv sync --no-cache --frozen
uv sync --group dev --group docs --no-cache --frozen

# Packaging

Expand All @@ -16,8 +16,8 @@ publish:
# Testing

test:
export TEST_TOKEN=$(cat ~/.latch/token) &&\
pytest -s tests
export TEST_TOKEN=$(cat ~/.latch/token)
pytest -s

# Docs

Expand Down
15 changes: 9 additions & 6 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,15 @@ include = ["src/**/*.py", "src/**/py.typed", "src/latch_cli/services/init/*"]

[project]
name = "latch"
version = "2.67.5"
version = "2.67.5.a4"
description = "The Latch SDK"
authors = [{ name = "Kenny Workman", email = "kenny@latch.bio" }]
maintainers = [{ name = "Ayush Kamat", email = "ayush@latch.bio" }]

readme = "README.md"
license = { file = "LICENSE" }

requires-python = ">=3.9"

dependencies = [
"kubernetes>=24.2.0",
"pyjwt>=0.2.0",
Expand All @@ -31,7 +31,7 @@ dependencies = [
"scp>=0.14.0",
"boto3>=1.26.0",
"tqdm>=4.63.0",
"lytekit==0.15.29",
"lytekit==0.15.30",
"lytekitplugins-pods==0.7.4",
"typing-extensions>=4.12.0",
"apscheduler>=3.10.0",
Expand Down Expand Up @@ -72,7 +72,11 @@ classifiers = [

[project.optional-dependencies]
pandas = ["pandas>=2.0.0"]
snakemake = ["snakemake>=7.18.0,<7.30.2", "pulp>=2.0,<2.8"]
snakemake = [
"snakemake",
"snakemake-storage-plugin-latch==0.1.11",
"snakemake-executor-plugin-latch==0.1.9",
]

[project.scripts]
latch = "latch_cli.main:main"
Expand All @@ -96,11 +100,10 @@ docs = [
]

[tool.ruff]
line-length = 100
target-version = "py39"

[tool.ruff.lint]
preview = true

pydocstyle = { convention = "google" }
extend-select = [
"F",
Expand Down
20 changes: 4 additions & 16 deletions src/latch/registry/upstream_types/values.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@

from typing_extensions import Self, TypeAlias

from latch.utils import Singleton


class InvalidValue(TypedDict):
rawValue: str
Expand Down Expand Up @@ -62,9 +64,7 @@ class PrimitiveUnresolvedBlobValueValid(TypedDict):
valid: Literal[True]


PrimitiveUnresolvedBlobValue: TypeAlias = Union[
PrimitiveUnresolvedBlobValueValid, InvalidValue
]
PrimitiveUnresolvedBlobValue: TypeAlias = Union[PrimitiveUnresolvedBlobValueValid, InvalidValue]


class LinkValue(TypedDict):
Expand Down Expand Up @@ -108,23 +108,11 @@ class UnionValue(TypedDict):
DBValue: TypeAlias = Union[PrimitiveValue, ArrayValue, UnionValue]


@dataclass(frozen=True)
class EmptyCell:
class EmptyCell(Singleton):
"""Empty Registry :class:`Record` value. Singleton.

The constructor returns a referentially identical instance each call. That is,
`EmptyCell() is EmptyCell()`

Used to distinguish explicit `None` values from missing values.
"""

_singleton: ClassVar[Optional["EmptyCell"]] = None

def __new__(cls) -> Self:
if cls._singleton is None:
cls._singleton = super().__new__(cls)

return cls._singleton


Value: TypeAlias = Union[DBValue, EmptyCell]
Loading
Loading