- Add
g6e_xlarge_task
,g6e_2xlarge_task
,g6e_4xlarge_task
,g6e_8xlarge_task
,g6e_12xlarge_task
,g6e_16xlarge_task
, andg6e_24xlarge_task
to request G6e GPU instances.
- Update latch base image to 'cb01-main'
latch dockerfile
now accepts explicit options for files containing- apt deps
- conda deps
- r deps
- pip deps
- pyproject.toml / setup.py
- .env
latch dockerfile
no longer does implicit dependency inferrence based on the presence of special files in the project root directory - now all dependency files need to be passed explicitly in the command line.
- Bump ephemeral storage limits for V100 GPU pods
- Reduced cpu/memory requests to ensure large GPU pods are schedulable
- Add retry logic to
latch_sdk_gql.execute
- Add more ephemeral storage to large GPU pods
- Bug in
LPath
download throws an exception when version id is null
- Fix pagination in
TableUpdater.list_records
to not OOM when table size is too large (>250k records)
- Plots Artifact dataclasses
cache
parameter toLPath
download method to allow for caching of downloaded files
TableUpdater.upsert_column
would fail when trying to create an enum-typed column
- Add
--workflow-module
flag to specify which workflow module to register with flyte
- Better error messaging for Snakemake registration errors (Thank you @msto!)
- Pass
@task
arguments through@custom_task
- Bugs when using multiple dockerfiles
- Add reconnect for ssh_client operations
- move workflow name / version parsing to the start of registration flow
- Bug in
latch develop
where the workflow name would be parsed incorrectly
- Nextflow
- add
latch nextflow attach
command to attach to a nextflow work directory
- add
- Nextflow
- bump nf runtime version to 2.3.0
- use
NXF_ENABLE_FS_SYNC
flag in workflows to enable using sync on task finish
- Nextflow
- bump nf runtime version to 2.2.0
- Nextflow
- Run nextflow task pods as root to allow full access to all files in the shared filesystem
- Nextflow
- bump nf runtime version to 2.1.6
- Nextflow
- Add support for uploading command logs after task execution
- All requests done by
latch cp
now- use connection pooling / reuses
- have automatic retries with backoff
- Nextflow
- Add support for $defs keyword for metadata generation
- Make OFS the default storage option for Nextflow workflows
- Bump the
nextflow
base image tov2.1.2
- Improve error messaging when registering Nextflow workflows
- Nextflow
- Fix typo in Nextflow base image
- Nextflow
- Update
nextflow
base image to versionv2.0.0
- Update
- Nextflow
- Update
nextflow
base image to versionv1.1.8
- Update
- Move tty and termios imports to enable
latch cp
on Windows
- Make
latch cp
work on Windows without WSL
- Bump lytekit version to fix download of empty files
- Remove caching from
tinyrequests
module
- New task annotations for V100 GPU enabled nodes
@v100_x1_task
: 1 V100 GPU@v100_x4_task
: 4 V100 GPUs@v100_x8_task
: 8 V100 GPUs
- The
--chunk-size-mib
tolatch cp
which allows users to configure the chunk size of uploads
- Lower the default chunk size for
latch cp
to64 MiB
latch cp
now reuses connections for speed
- Fix a bug where GPU template selection wouldn't happen correctly in
latch init
- Nextflow
- Update
nextflow
base image to versionv1.1.7
- Update
- Nextflow
- Normalize result paths before publishing results
- lytekit
0.15.10
->0.15.11
which parallelizes file downloads from Latch Data
- Nextflow
- Report workdir size on workflow completion
- Add git commit information to version string if exists
- Pin
cryptography
to remove warning messages when importing paramiko
- Better error messages when using
latch exec
on a task that is not yet running
- Nextflow
- Indentation error in samplesheet constructor function call
- Nextflow
- Cleanup Nextflow logging
- Update
nextflow
base image to versionv1.1.6
- Ability to publish results to be displayed on executions
Results
page
- Add
--cores
parameter tolatch cp
allowed_tables
argument toLatchParameter
to constrain the set of registry tables selectable from a samplesheet parameter
- Ability to override the target workspace for registration using the
LATCH_WORKSPACE
env variable.
- Nextflow
- Make EFS storage period configurable
latch cp
bug where directories containing symlinks would hang and not complete uploading
- Nextflow
- Update
nextflow
base image to versionv1.1.5
- Update
- Nextflow
- Make execution profile configurable via UI
- Nextflow
- Update
nextflow
base image to versionv1.1.4
- Update
- Sync
- Update objects with no ingress event
- Sync
- Add option for number of cores
- Snakemake
- Don't throw an exception on
subprocess.CalledProcessError
,sys.exit(1)
instead to avoid polluting stdout with a traceback
- Don't throw an exception on
- lytekit
0.15.9
->0.15.10
which removes unnecessary prints in exception wrappers
- Nextflow
- ignore
.git
directory when copying /root to workdir
- ignore
- Nextflow
- use nextflow dockerfile instead of downloading the binary directly
- Nextflow
- bump nf runtime version to 1.1.3
- Use
lytekit==0.15.9
which includes retries for file downloads
- latch sync upload in parallel
- latch sync missing normalize_path call
- latch sync cosmetic path display extra slash
- Timeout in tinyrequestst
- Snakemake + Nextflow
- fix about page file validation
- Nextflow
- remove
storage_gib
parameter from pvc provisioning request
- remove
- Nextflow
- bump nf runtime version to 1.1.1
- Nextflow
- bump nf runtime version to 1.1.0
- Snakemake
- expose underlying Latch paths in config object
- Nextflow version 1.0.11
- Snakemake
- fix dataclass name collisions when generating metadata for Snakemake workflows
- Nextflow version 1.0.10
- Snakemake
- fix metadata_root param for Snakemake workflows
- Nextflow
- Support for relaunching from failed task using
-resume
flag
- Support for relaunching from failed task using
- Nextflow
- Bump Nextflow version to 1.0.8 to add retries on failure
- Nextflow + Snakemake
- Add
--metadata-root
option tolatch register
- Add
- Nextflow
- Bump Nextflow version to fix releasing workflow to different workspace
- Nextflow
- Command to upgrade nextflow version
- Nextflow
- Bump nextflow version to v1.0.4 -- fixes large file uploads
- Nextflow
- Upload .nextflow.log on success and failure
- Add tolerations to nextflow runtime task
- Bump nextflow version to v1.0.2
- New error messages when trying to access registry projects/tables/records that don't exist.
- Nextflow
- Remove /finalize call at end of workflow
- Nextflow
- Bump version from v1.0.0 to v1.0.1 -- resolves upload data corruption
- Nextflow
- Fix default generation for parameters with type:
typing.Optional[LatchFile,LatchDir]
- Fix default generation for parameters with type:
- Nextflow
- Support for About page
- Pin Nextflow version to latch version (deprecate --redownload-dependencies)
- Snakemake
- Support for adding About page content from a markdown file
- Nextflow
- Support for generating metadata from
nextflow_schema.json
- Command to generate Nextflow entrypoint without registering
- Support for generating metadata from
- Make
LatchRule
class a dataclass
- Support for uploading Nextflow workflows
TableUpdater.upsert_record
no longer does file path resolution, and instead defers that operation to when the update commits. This drastically speeds up registry table updates to blob-type columns.
- Support selecting organization workspaces with
latch workspace
- Bump docker version to fix docker/docker-py#3256
- Latch resource limit on mem-512-spot should be 485 Gi instead of 490 Gi
- Accomodates the migration of personal workspaces to team workspaces.
- Snakemake
- remove conversion of primitive types to string for input
params
- add support for output directories
- remove conversion of primitive types to string for input
- Circular import when importing latch constants
- Snakemake
- support for running python scripts inside containers
- Cleanup toleration assignment
- Support up to 126 cores and 975 GiB of memory in custom tasks
- Workflow identifier should be immutable per
latch init
- Latch workspace does not display selected workspace when authenticated with workspace token
- Workspace id determination failing when authenticated with workspace token
- Adding support for GCP mount paths
- Allow the use of
**kwargs
in dynamic resource allocation functions
- Snakemake
- Namespace Snakemake execution outputs by execution name
- Snakemake
- Add support for using directories as inputs to rules
--wf-version
flag todevelop
to use a container for a specific workflow version--disable-sync
flag todevelop
to disable automatic syncing of local files. Useful for inspecting workflow code from a past version without overwriting with divergent local changes.
- Actually fix the issue where functions that use
current_workspace
would break if called from an execution
- bump flytekit version to 0.15.6 which fixes retries in dynamic resource allocation for map tasks
- Issue where functions that use
current_workspace
would break if called from an execution - Issue where CLI commands that required an auth method would not print the correct error message if no auth was present
- bump flytekit version to 0.15.5
- latch register failing when using launchplans with file or directory types
- add support for allocating task resources at runtime
- latch commands default to the user's default workspace instead of personal workspace
- latch cp
- Commandline docstring states recursive default behavior.
- latch sync
- prints error when case other than local -> remote is attempted
- Snakemake
- Add
container_args
field inEnvironmentConfig
- Add
- Snakemake
- fix bug where two rules with the same input parameter name causes JIT step to fail
- Fix bug where temporary SSH keys were getting added but not removed from the SSH Agent during workflow registration
- Fix bug
LPath
resolves to parent node if path does not exist
latch mkdir
command (replaced withlatch mkdirp
)latch rm
command (replaced withlatch rmr
)latch touch
latch open
- add
LPath
support for uploading and copying to non-existent directories - clear
LPath
cache after modification operations such asrm
andupload
- skip symlinks that point to non-existent files when running
latch cp
- add
LPath
implementation - add support for registering workflows without Latch metadata
- Snakemake
- add support for optional input parameters
- Snakemake
- fix bug in
ruleorder
directive caused byblock_content
monkey patch returning None
- fix bug in
- Snakemake
- warn instead of error when config parameter type cannot be parsed in generate-metadata command
- Snakemake
- support for config files with nested file paths
- GPU support for non-container tasks
- Add
cores
field to SnakemakeMetadata object
- Broken default in snakemake metadata which prevented registration of any workflow
- Snakemake
- update defaults for conda + containers to
False
- update defaults for conda + containers to
- Snakemake
- support for pulling images from private container registries
- add config field for running tasks in conda and container environments
- Snakemake
- fix regression in 2.38.2 that caused failure to resolve upstream nodes for target files
- Snakemake
- support for per-task containers in Snakemake workflow using the
container
directive
- support for per-task containers in Snakemake workflow using the
- Snakemake
- add
_jit_register
suffix when resolving Snakemake workflow name forlatch develop
- use
variable_name_for_value
instead ofvariable_name_for_file
when resolving upstream jobs for target files
- add
- The
--open
option tolatch register
, which if passed in, will open the workflow in the browser after successful registration
- Snakemake
- remove
.latch
directory copy from Dockerfile generation to avoid unexpected file overrides - limit pulp package version to < 2.8 to fix snakemake import failure
- remove
- The
latch exec
command to spawn a shell inside a running task.
- Snakemake
- support for
latch develop
for JIT workflow
- support for
- Snakemake
- user input config overrides default config instead of merging
- JIT workflow fails if the same keyword is used to define two different input parameters
- fail to serialize
snakemake_data
when any params are defined aspathlib.Path
rename_current_execution
function which allows programmatic execution renaming.
- Snakemake
- ability to cache snakemake tasks using the
--cache-tasks
option withlatch register
- ability to cache snakemake tasks using the
- Minor aesthetic enhancements to
latch workspace
- the currently active workspace is now marked
- the current selection is marked with a
>
for enhanced readability on terminals with limited color support
- Snakemake
- bug in 2.36.9 where output directories would still fail to upload because of a missing
pathlib.Path
->str
conversion.
- bug in 2.36.9 where output directories would still fail to upload because of a missing
- Snakemake
- bug where a snakemake task would fail to upload output directories
- Snakemake
- bug where a snakemake workflow would only run successfully for the user who registered it
- Snakemake
- added best effort display name parsing for
generate-metadata
- tasks now upload their intermediate outputs for better debugging
- added best effort display name parsing for
- Snakemake
- bug where
update_mapping
would iterate over the entirety of/root
- bug where
- Added ability to skip version check using an env variable
- Bug in
latch login
where not having a token would prevent token generation
- Added ability to get a pandas Dataframe from a registry table.
- Added
Multiselect
toLatchAppearance
- Snakemake
- fixed case where config values would not be populated correctly in the JIT workflow
- Better error messaging for both
latch cp
andlatch mv
.
- Bug where Python 3.8 clients would crash due to a broken type annotation
- Snakemake
- Log files are now marked as outputs - this enables rules to use logs of previous rules as inputs
latch mv
now supports glob patterns (with the same restrictions aslatch cp
)
latch.registry.record.Record.get_table_id
method for querying the ID of the table containing a given registry recordlatch.registry.table.Table.get_project_id
method for querying the ID of the project containing a given registry table
- Snakemake
- Remote register support
download
field for file inputsconfig
field for file inputs- Blanket support for parameters of any type via the
SnakemakeParameter
class - Support for generating a
latch_metadata
directory from aconfig.yaml
withlatch generate-metadata
- Support for default values for parameters
- Snakemake
- JIT register step no longer downloads input files by default
latch_metadata
should now be a module (directory containing an__init__.py
file), as opposed to just being a file
- Snakemake
directory
modifier for input / outputs- Support
temp
by removing from compiled rules. All files / directories are temporary because they are deleted at the end of each job on Latch. multiext
output modifierreport
output modifierparams
in rules
- Snakemake
- Replace skipped rules with
Ellipsis
. Supports rules nested in conditionals where previously an empty block was produced. - Patched parser to generate compiled code for
workflow.include
calls Compiled workflow.include should carryprint_compilation
keyword (snakemake/snakemake#2469) - Detect use of
conda
keyword and install in image. This effectively supports wrapper/conda keywords. Iterable, Generator
cause issues as type hints when imported fromcollections.abc
rather thantyping
- Replace skipped rules with
- Add
latch sync
for synchronization from local to remote directories that only uploads modified content
- Snakemake:
- Better errors if
Snakefile
orlatch_metadata.py
file missing - Correct issues with snakemake example project
- Better errors if
- Snakemake:
-
--snakemake
forlatch dockerfile
command to generateDockerfile
with necessary instructions -
Snakemake example for
latch init
-
- A bug in
latch develop
where images for newly registered workflows could not be found.
- Snakemake:
- Ignore global ruleorder directive
- Ignore temporary condition on output values
- Fixed a bug in
latch ls
wheredatetime.isoformat
was called on strings with timestamps (which is not supported on python < 3.11)
- Snakemake issues
- bounded snakemake versions to prevent compatibility issues that arise in later versions
- small bugs in list json encoder
- mishandled http issues.
- Fixed
latch ls
to work with all latch URLs - Fixed autocomplete bug where no completion results would be returned for longer paths
- Corrected
dataclass
import and removedmultiprocessing
logging fromlatch cp
.
latch cp
can now handle directories with up to50k
objects
- Various vestigial bugs in
latch develop
that blocked certain users
- Any CLI command will now display a message if no authentication token is found
latch stop-pod
renamed tolatch pods stop
- Support for python 3.11
- pinned
lytekit
tov0.15.2
to remove numpy + pandas + pyarrow dependencies - pinned
lytekitplugins-pods
tov0.6.1
to remove dependency on numpy - pinned
latch-sdk-gql
to0.0.6
which supports 3.11 - pinned
latch-sdk-config
to0.0.4
which supports 3.11
stop-pod
command to the CLI. Allows the user to stop a pod in which the CLI resides or to stop a pod using its id.
- Tasks explicitly request ephemeral storage
custom_task
andcustom_memory_optimized_task
allow selecting storage sizecustom_memory_optimized_task
functionality merged intocustom_task
custom_memory_optimized_task
- changed beta register implementation
- pinned
lytekit
tov0.14.15
to bring inmarshmallow-enum
as a dependency.
- fixed bug where
LatchFile
s/LatchDir
s would providefile://
URIs instead of Unix paths, which was causing errors in, e.g., calls toopen()
.
- fixed bug where
LatchFile
s/LatchDir
s wouldn't respect the workspace selected usinglatch workspace
.
- Added
.iterdir()
method toLatchDir
to iterate through subdirectories
- Fix unclosed file in
lytekit
upload code
- LatchFiles accessed through registry are downloaded to a file with the same name as the file on latch
- Gated
latch develop
resource selection behind an environment variable due to its slow performance
- Added back several dependencies to allow the old
latch develop
infrastructure to work properly.
- Dockerfile generation uses
\
escaping: fixes bug in Conda and R template
- Upgraded
paramiko
dependency to>=3.2.0
which fixes aPKey
issue.
latch register
experimental features (2.24.xx) are now gated behind an environment variable, and by default we use the old (pre 2.24) register backend.
- Upgraded lytekit to version 0.14.13 to support uploading files up to 5 TiB from within a task
- Internal bug in
latch register
which caused an API call to be made when not necessary, resulting in an irrelevant exception being thrown
- Bug in
latch cp
upload path where URLs would be generated but files would not be uploaded
- Added client side rate limiting to
latch cp
upload API calls so as to not throttle our backend.
latch register
provision timeout bug- catch
KeyboardInterrupt
s during register provisioning - updated
latch-base
image to fix docker-in-docker workflows which use the host machine's network interface
latch develop
andlatch register
provision timeout increased to 30 minutes
latch develop
andlatch register
SSH connections timeout on inactivity
- Bug in
latch develop
where rsync would continually flood stdout with requests to confirm host key authenticity
- Rename
--no-glob
option shorthand to-G
forlatch cp
- Bug in
latch register
where SSH connections were going stale
- Glob support for latch cp
- latch cp autocomplete
- ability to choose task size in latch develop
- Backend implementations of latch register and latch develop
- Fix limits and imports
- Memory optimized task type
- Template generation bug in empty wfs
- NFCore template using wrong Latch version
- When a CLI command fails, metadata (
latch
version, current python, os info, etc) is printed. - There is now a prompt on failure to generate a crash report. Previously reports were generated automatically which was slow and sometimes error-prone.
- Bugs that broke support for Python 3.8 users:
- Fixed imports of
functools.cache
- Fixed
with
statements with multiple contexts
- Fixed imports of
- Removed unused packages
awscli
uvloop
prompt-toolkit
catalogMultiCreateExperiments
instead ofcatalogMultiUpsertExperiments
in registry API
catalogMultiCreateProjects
instead ofcatalogMultiUpsertProjects
in registry API
workspace_id
failing when file is empty
latch cp
failing when uploading a file into a directory without specifying the resulting filename.
latch cp
occasionally throwing an error when finalizing uploads for directories.
latch cp
now supports remote -> remote copying (i.e. both source and destination are remote paths). This enables copying files across workspaceslatch mv
for moving remote files.
- Semver violation related to removed
__init__.py
files. These will happen again in the future but a proper major release will be created, communicated, and marketed.
- Upgraded dependency
lytekit
to version0.14.11
.
- More imports in docker/NF-core template workflows have been updated to reflect the import changes outlined in the previous version.
- Imports in docker/NF-core template workflows have been updated to reflect the import changes outlined in the previous version.
- NFCore example workflow
-
Replace docker example workflow with blastp
-
Docker image selection when creating an empty workflow
-
Workflow Name, Author Name prompts when creating an empty workflow
-
latch cp
has been rewritten and now allows for latch paths of the formlatch:///a/b/c
latch://xxx.account/a/b/c
wherexxx
is the account IDlatch://shared.xxx.account/a/b/c
latch://shared/a/b/c
latch://mount/a/b/c
latch://xxx.node
wherexxx
is the data ID (viewable in Latch Console)
- Unnecessary imports in
__init__.py
files have been removed. Statements likefrom latch.types import LatchFile
will no longer work, and such objects should be imported from their defining files instead (in this example, the correct import isfrom latch.types.file import LatchFile
)
- Revert an undocumented change that caused custom task settings to not work
- Typo in
latch init
R template
latch cp
should automatically detect file content type
- Registry API crashes when resolving paths if
~/.latch/workspace
does not exist
latch register
will ask for confirmation unless--yes
is provided on the command line
latch register --remote
is now the default. Use--no-remote
to build the workflow image locally
latch register --remote
will no longer ask for host key fingerprint verification
- Registry APIs should properly resolve files when using workspaces instead of always using the signer account
latch workspace
options should be ordered alphabetically
- Conda template registration issue and run in correct environment issue
- Tasks stuck initializing on nodes that ran multiple tasks before
- Upgrades lytekit to
0.14.10
latch cp
now has a progress bar for downloads (previously they only showed for uploads)
- Functions for creating/deleting Projects and Tables, and creating Table columns in the Registry API
- Registry table updates should work with columns that have spaces in names
- Improved Registry API
__str__
and__repr__
- Registry API should work in an running asyncio event loop
- A new API for interacting with Latch Registry
- Added
gql
andaiohttp
as dependencies
- Prevent
latch cp
from hitting the s3 part limits which causes large file uploads to fail
- Switched a dictionary union from
|=
notation to a manual for-loop to maintain support for Python 3.8.
- Option to disable default bulk execution mechanism when an alternative (e.g. using a samplesheet parameter) is supported by the workflow itself
- Verified Trim Galore adapter trimming workflow stub
- Custom tasks with less than 32 cores receiving incorrect toleration
- Verified MAFFT alignment workflow stub
- Parameter flow forks should preserve the order of branches
latch
commands which require authentication prompt user for token when no browser is present on machine
- SampleSheet metadata to
LatchParameter
-- allows for importing samples from Registry
latch register
ssh-keygen bug when.latch
folder does not exist
- Upgrades lytekit to
0.14.9
- Docker template uses correct base image
- Internal state file should be automatically created when running
latch register
andlatch develop
latch init
: Docker in Docker template workflowlatch init
: Docker base image- Small, medium, and large tasks use the Sysbox runtime to run Docker and other system software within task containers
- Add latch/latch_cli/services/init/common to pypi release
- The
latch dockerfile
command which auto-generates a Dockerfile from files in the workflow directory. - The
latch init
command can use base images with hardware acceleration using the--cuda
and the--opencl
flags - The
latch init
command does not populate the workflow directory with a Dockerfile by default - The
latch init
command will populate the workflow directory with a Dockerfile if passed--dockerfile
- The
latch register
andlatch develop
commands auto-generate a dockerfile from files in the workflow directory if no Dockerfile is present - Documentation for the auto-generated Dockerfile feature
- Quickstart tutorial is written factually
- Getting started docs are written factually
latch develop
documentation updates
latch develop
throws error if user does not have rsync installedpip install latch
installs thewatchfiles
package forlatch develop
- LatchDir initialized with local path initialized to Path object fails on upload
latch develop
drops users directly into a shell in their docker environment. Local changes in the workflow directory and any subdirectories are automatically synced into the environment. Deleted local files are not deleted in the environment. However, any additions or modifications to files and directories are propagated.
- latch develop no longer drops user into REPL with multiple options -- it goes straight to a shell.
- LatchDir initialized with local path initialized to Path object fails on upload
- Use best practices in
latch init
templatesLatchOutputDir
used to indicate output location on Latch- Regex rules used to validate files
- Splits tasks into files
- Include empty template
- Remove yaml metadata from docstring
- Use messages in examples
- Error handling
- Add LICENSE file
- Add README file
- Allow user to select template in GUI or pass flag
- Allow user to run
latch init .
- LatchDir type transformer bug with Annotated types
- LatchOutputDir is fixed
- The
latch develop
command, and with it an ecosystem supporting local development and faster debugging. - The
latch cp
command now displays a x number of files out of n indicator and displays which stage of the download is going on (network request to get presigned urls vs downloading blob data). - A new error that is thrown when there is an inconsistency between a
LatchMetadata
object and its associated workflow's parameters. - The function
get_secret
which allows users to reference secrets they've uploaded to the Latch platform from within a workflow.
- The commands
latch rm
,latch mkdir
, andlatch touch
.
- The operators
left_join
,right_join
,inner_join
,outer_join
,group_tuple
,latch_filter
, andcombine
.
- Removed a broken SDK test (launching CRISPResso2)
requests
library given higher version lower bound to fix warning with one of its dependencieslytekit
version updated to- pin
numpy
to version1.22
(breaking changes in later versions of this library) - have better behavior when downloading directories during local development
- force retry on connection closed on file uploads (POST requests more generally)
- pin
latch get-params
will escape class attribute names (representation of Enum type) if they are python keywordslatch preview
now requires a directory argument instead of a workflow name argument, and now behaves consistently with regular parameter interface generation.- The crash reporter now prints stack traces of caught exceptions in the correct order
latch develop
now throws an error when run on a workflow that hasn't been registered yet.- Reworked how internal configs are stored, eschewing a flat dictionary of API endpoints in favor of a nested dataclass. This removes a small class of potential mistakes arising from misspelling, and gives the benefit of IDE intellisense.
- Made both configs singletons.
- Fixed issue with registering libraries containing nested imports used as
subclasses (eg.
torch
)