Releases: laminlabs/lamindb
Release 2.1.2
See https://docs.lamin.ai/changelog/2026#db-2-1-2
What's Changed
- β¨ Enable curation against Features with Union dtypes by @Zethson in #3516
- β‘οΈ Download large single files from s3 with
boto3by default inartifact.cache()by @Koncopd in #3519 - β¬οΈ Upgrade lamindb-setup by @Koncopd in #3521
- π README v5.5: re-write the why? section by @falexwolf in #3520
- β¬οΈ Upgrade lamindb-setup by @Koncopd in #3523
- π Fix initializing an instance with db passed by @Koncopd in #3524
Full Changelog: 2.1.1...2.1.2
Release 2.1.1
See https://docs.lamin.ai/changelog/2026#db-2-1-1
What's Changed
- πΈ Better detection of read-only connections for write errors and tracking by @Koncopd in #3515
- β¨ Add
lamin settings cache-dir resetcommad to CLI by @Koncopd in #3517 - β
Fix cleanup of
permissionstest by @Koncopd in #3518
Full Changelog: 2.1.0...2.1.1
Release 2.1.0
See https://docs.lamin.ai/changelog/2026#db-2-1-0-bionty-2-1-0
What's Changed
- π Fix
Artifact.from_dataframeto support path input by @Zethson in #3455 - π Fix str behavior of
Artifact.from_dataframe()by @Zethson in #3457 - β¬οΈ Update standard ontology by @sunnyosun in #3461
- π½οΈ Fix broken setup due to
laminhubrefactoring by @fredericenard in #3464 - π Fix
Artifact.from_anndataexample by @Zethson in #3463 - ποΈ Introduce safe-guards in updating the space of artifacts by @Koncopd in #3458
- β¬οΈ New Gene Organism sources by @sunnyosun in #3467
- πΈ Unify validating features with and without the presence of a schema, fix parsing ISO-format strings as datetime if mapped on a feature with
dtype=strby @falexwolf in #3456 - πΈ Return information about deleted objects rather than
Noneupon hard delete by @falexwolf in #3469 - π± Update CellLine default source by @sunnyosun in #3471
- πΈ Raise canonical
InstanceNotFoundErrorinRegistry.connect()by @falexwolf in #3470 - π Rename
wetlabtopertdbby @falexwolf in #3472 - β»οΈ Efficiently encode uploading information by @falexwolf in #3473
- π Consistently mention backward relationships and type-annotate
ManyToManyfields withQueryManager[T]by @falexwolf in #3474 - πΈ Enable convenient re-upload of local file after upload failure by @falexwolf in #3079
- β»οΈ Rather flag
_storage_ongoingthan_storage_completedby @falexwolf in #3475 - β‘ Start monitoring performance profiling by @falexwolf in #3477
- π README v5.1 by @falexwolf in #3478
- β¬οΈ Update lamin-utils by @sunnyosun in #3479
- β¬οΈ Released bionty 2.1.0 by @sunnyosun in #3482
- π Better return typing of
feature.__getitem__by @sunnyosun in #3481 - πΈ Improve error message for running a script or notebook outside the development directory by @falexwolf in #3484
- π README v5.2 by @falexwolf in #3486
- π Fix white-space formatting in tests for new Rich behavior by @Zethson in #3489
- π Fix curator tests by @Zethson in #3490
- πΈ Check local path existence on
artifact.save()by @Koncopd in #3487 - π Improve the
Artifact.open()docs by @falexwolf in #3415 - πΈ Default to creating a global run context in
ln.flow()by @falexwolf in #3492 - β»οΈ Enable memorizing the global run context of a flow by @falexwolf in #3493
- π Refactor & fix feature-based queries for records and expand tests by @falexwolf in #3494
- π Move
lamin cacheCLI command to belamin settings cache-dir, refactorlamin settings, expandlamin annotate, and overhaul CLI docs by @falexwolf in #3495 - π Document
RelatedManager[T]and fixManyToManytype annotations by @falexwolf in #3496 - π· Refactor performance profiling by @falexwolf in #3497
- π Move lazy upload out of arrays guide and into
from_lazy()docstring + unit tests by @falexwolf in #3499 - πΈ Allow users to pass ids of foreign keys in
Artifact()constructor by @Koncopd in #3498 - π Fix PyYAML serialization of NotebookNode by @Zethson in #3488
- π Convert guides to markdown format by @falexwolf in #3501
- π Fix standardize ignoring passed source by @Zethson in #3500
- π· Simplify test/docs CI setup by @falexwolf in #3502
- πΈ Overhaul the pytorch
lightningintegration by @Zethson in #3425 - πΈ Better error behavior in
lamin saveby @sunnyosun in #3503 - π README v5.3 by @falexwolf in #3504
- β»οΈ Fully leverage
Contextto manage the run context of function executions by @falexwolf in #3506 - πΈ Serialize
Path,UPath, and handleNoneparams by @falexwolf in #3507 - πΈ Recognize packaged python source code across
track(),@flow(), and@step()by @falexwolf in #3508 - β‘οΈ Much faster permanent run & transform deletion by @falexwolf in #3509
- π README v5.4: properly document workflows by @falexwolf in #3510
- π Legible API reference for
lamindb.modelsby @falexwolf in #3511 - πΈ Save CLI tool in transform description by @falexwolf in #3512
Full Changelog: 2.0.1...2.1.0
Release 2.0.1
See https://docs.lamin.ai/changelog/2026#db-2-0-1
What's Changed
- πΈ Backward compatibility for querying features by
dtypeby @falexwolf in #3454
Full Changelog: 2.0.0...2.0.1
Release 2.0.0
See https://docs.lamin.ai/changelog/2026#db-2-0-0
What's Changed
- π Fix docs by @falexwolf in #3385
- β¨ Add
feature.dtype_as_objectby @sunnyosun in #3386 - π README v5.2 by @falexwolf in #3387
- β Test connecting without a default instance by @Koncopd in #3388
- β Test db token expiartion by @Koncopd in #3391
- π¨ Also accept array when evaluating list values by @sunnyosun in #3392
- π§ Add
.vitessce.jsonto loaders by @namsaraeva in #3393 - π§ Rename
zarrextra tozarr_v2by @Koncopd in #3390 - π Account for size 0 environments by @falexwolf in #3394
- β»οΈ Better re-use Django's
ObjectDoesNotExistandMultipleObjectsReturnedby @falexwolf in #3396 - π Sort features in
describe()by @falexwolf in #3397 - π Improve the
Artifact.replace()docs by @falexwolf in #3398 - π Polish FAQ doc on trashing and archiving by @falexwolf in #3400
- β
Test
DbWriteLogrework by @Koncopd in #3399 - π Deprecate
@ln.tracked()in favor of@ln.step()by @falexwolf in #3401 - β¨ Enable managing workflows via
@ln.flow()and@ln.step()by @falexwolf in #3402 - β¨ Track shell scripts by @falexwolf in #3403
- β
Test use
hstoreinDbWritetriggers to compute diffs on update by @Koncopd in #3404 - β¬οΈ Upgrade lamindb-setup by @Koncopd in #3407
- β¬οΈ Bump
anndataupper bound by @Koncopd in #3409 - πΈ Raise a clear error if calling
CanCurateand similar registry class methods on objects by @falexwolf in #3411 - π Improve the
Spacedocument by @falexwolf in #3412 - β¬οΈ Bump
fsspecpackages upper bound by @Koncopd in #3413 - π Render return type annotations of
Artifact.open()in docs by @falexwolf in #3414 - π Rename
rest-hubtobackendby @fredericenard in #3410 - π₯ Remove tracking from
collection.artifacts.all()by @Koncopd in #3405 - ποΈ Introduce
Feature._dtype_strto hold a serialization that links object types (Record+ULabel) based on theiruidinstead of theirnameand type hierarchy by @falexwolf in #3416 - ποΈ Use the new
feature._dtype_strinstead offeature.dtypeby @falexwolf in #3418 - π₯ Remove the API components that were deprecated upon transitioning from LaminDB v0 to v1 by @falexwolf in #3419
- π Better names for the
ManyToManyfields for the annotating runs and artifacts of anArtifactby @falexwolf in #3420 - π Swap accessor names for
SchemaComponentlinks, consistentManyToManyfield names forRecordRecordlinks by @falexwolf in #3421 - ποΈ Migrate the
FeatureandSchemadatabase tables to LaminDB v2 by @falexwolf in #3422 - π Rename
Artifact.feature_setstoArtifact.schemasby @falexwolf in #3423 - ποΈ Rename
SQLRecord._branch_codetoSQLRecord.branch_idand removefeature_ref_is_nameandlabel_ref_is_namefields from link models by @falexwolf in #3424 - π Fix tests setup by @Koncopd in #3426
- π Fix broken imports from
hubmoduleby @fredericenard in #3428 - β»οΈ Refactor require_organism by @sunnyosun in #3429
- β»οΈ Refactor data migration from
dtypeto_dtype_strby @falexwolf in #3431 - ποΈ Rename
Artifact._subsequent_runstoArtifact.recreating_runsandRun._recreated_artifactstoRun.recreated_artifactsby @falexwolf in #3432 - π· Ensure
wetlabversion2.0a1is installed by @falexwolf in #3433 - β
Restore
check_lamin_dev, add defensiveartifactcleanup by @Koncopd in #3434 - β¨ Allow passing
_key_is_virtualonArtifactcreation by @Koncopd in #3438 - ποΈ Rename
IsVersioned.versiontoIsVersioned.version_tag,Transform.typetoTransform.kind,FeatureValuetoJsonValue,BaseBlock.typetoBaseBlock.kind, deleteTransform._templateandRun._logfileby @falexwolf in #3435 - ποΈ Bionty v2 migrations by @sunnyosun in #3430
- β
Test
userupdates by @Koncopd in #3437 - π· Reflect permission utils refactoring in noxfile by @falexwolf in #3441
- πΈ Add
descriptionargument toTransform.from_git()by @falexwolf in #3440 - ποΈ Simplify
Transformby @falexwolf in #3442 - ποΈ Migrate most auxiliary fields to SQL columns by @falexwolf in #3443
- β»οΈ Edits for
noxfileby @Koncopd in #3444 - ποΈ Refactor
_storage_completedmechanism and remove unique constraints on type names by @falexwolf in #3445 - πΈ More release preparations: backward compat for artifact queries by
feature_sets, defensive migration by @falexwolf in #3448 - π¨ Re-encode biorecord uid to 14 chars by @sunnyosun in #3450
- β»οΈ Refactor
dtypedata migration to raw SQL to avoid inexistentbranch_idby @falexwolf in #3449 - Fix create from source by @sunnyosun in #3451
- ποΈ Rename
RootBlocktoBlockwith a columnkeyakin toArtifactandTransformby @falexwolf in #3452 - β‘οΈ Squash migrations and re-build SQLite init database by @falexwolf in #3453
Full Changelog: 1.17.0...2.0.0
Release 2.0a2
See https://docs.lamin.ai/changelog/2026#db-2-0-0
What's Changed
- π Fix docs by @falexwolf in #3385
- β¨ Add
feature.dtype_as_objectby @sunnyosun in #3386 - π README v5.2 by @falexwolf in #3387
- β Test connecting without a default instance by @Koncopd in #3388
- β Test db token expiartion by @Koncopd in #3391
- π¨ Also accept array when evaluating list values by @sunnyosun in #3392
- π§ Add
.vitessce.jsonto loaders by @namsaraeva in #3393 - π§ Rename
zarrextra tozarr_v2by @Koncopd in #3390 - π Account for size 0 environments by @falexwolf in #3394
- β»οΈ Better re-use Django's
ObjectDoesNotExistandMultipleObjectsReturnedby @falexwolf in #3396 - π Sort features in
describe()by @falexwolf in #3397 - π Improve the
Artifact.replace()docs by @falexwolf in #3398 - π Polish FAQ doc on trashing and archiving by @falexwolf in #3400
- β
Test
DbWriteLogrework by @Koncopd in #3399 - π Deprecate
@ln.tracked()in favor of@ln.step()by @falexwolf in #3401 - β¨ Enable managing workflows via
@ln.flow()and@ln.step()by @falexwolf in #3402 - β¨ Track shell scripts by @falexwolf in #3403
- β
Test use
hstoreinDbWritetriggers to compute diffs on update by @Koncopd in #3404 - β¬οΈ Upgrade lamindb-setup by @Koncopd in #3407
- β¬οΈ Bump
anndataupper bound by @Koncopd in #3409 - πΈ Raise a clear error if calling
CanCurateand similar registry class methods on objects by @falexwolf in #3411 - π Improve the
Spacedocument by @falexwolf in #3412 - β¬οΈ Bump
fsspecpackages upper bound by @Koncopd in #3413 - π Render return type annotations of
Artifact.open()in docs by @falexwolf in #3414 - π Rename
rest-hubtobackendby @fredericenard in #3410 - π₯ Remove tracking from
collection.artifacts.all()by @Koncopd in #3405 - ποΈ Introduce
Feature._dtype_strto hold a serialization that links object types (Record+ULabel) based on theiruidinstead of theirnameand type hierarchy by @falexwolf in #3416 - ποΈ Use the new
feature._dtype_strinstead offeature.dtypeby @falexwolf in #3418 - π₯ Remove the API components that were deprecated upon transitioning from LaminDB v0 to v1 by @falexwolf in #3419
- π Better names for the
ManyToManyfields for the annotating runs and artifacts of anArtifactby @falexwolf in #3420 - π Swap accessor names for
SchemaComponentlinks, consistentManyToManyfield names forRecordRecordlinks by @falexwolf in #3421 - ποΈ Migrate the
FeatureandSchemadatabase tables to LaminDB v2 by @falexwolf in #3422 - π Rename
Artifact.feature_setstoArtifact.schemasby @falexwolf in #3423 - ποΈ Rename
SQLRecord._branch_codetoSQLRecord.branch_idand removefeature_ref_is_nameandlabel_ref_is_namefields from link models by @falexwolf in #3424 - π Fix tests setup by @Koncopd in #3426
- π Fix broken imports from
hubmoduleby @fredericenard in #3428 - β»οΈ Refactor require_organism by @sunnyosun in #3429
- β»οΈ Refactor data migration from
dtypeto_dtype_strby @falexwolf in #3431 - ποΈ Rename
Artifact._subsequent_runstoArtifact.recreating_runsandRun._recreated_artifactstoRun.recreated_artifactsby @falexwolf in #3432 - π· Ensure
wetlabversion2.0a1is installed by @falexwolf in #3433 - β
Restore
check_lamin_dev, add defensiveartifactcleanup by @Koncopd in #3434 - β¨ Allow passing
_key_is_virtualonArtifactcreation by @Koncopd in #3438 - ποΈ Rename
IsVersioned.versiontoIsVersioned.version_tag,Transform.typetoTransform.kind,FeatureValuetoJsonValue,BaseBlock.typetoBaseBlock.kind, deleteTransform._templateandRun._logfileby @falexwolf in #3435 - ποΈ Bionty v2 migrations by @sunnyosun in #3430
- β
Test
userupdates by @Koncopd in #3437 - π· Reflect permission utils refactoring in noxfile by @falexwolf in #3441
- πΈ Add
descriptionargument toTransform.from_git()by @falexwolf in #3440 - ποΈ Simplify
Transformby @falexwolf in #3442 - ποΈ Migrate most auxiliary fields to SQL columns by @falexwolf in #3443
- β»οΈ Edits for
noxfileby @Koncopd in #3444 - ποΈ Refactor
_storage_completedmechanism and remove unique constraints on type names by @falexwolf in #3445
Full Changelog: 1.17.0...2.0a2
Release 1.17.0
See https://docs.lamin.ai/changelog#db-1-17-0
What's Changed
- πΈ Suggest using
.from_dataframe()when passing aDataFrame-like path toArtifact()by @falexwolf in #3290 - ποΈ Add
ArtifactArtifactandArtifactRunto enabledtype=Artifactanddtype=Runin artifact relationships by @falexwolf in #3292 - ποΈ Add multiple fields to
Transformby @falexwolf in #3294 - β¨ Support .tar.gz by @Koncopd in #3289
- β»οΈ Be more strict about constraining types in
HasTypeby @falexwolf in #3295 - π Update transfer tests by @sunnyosun in #3299
- πΈ When deleting a record type, delete its descendants, too by @falexwolf in #3297
- β»οΈ Honor
dev-dirinlamin save, refactor module inference inln.track()by @falexwolf in #3300 - β»οΈ Add
query_ulabels(),query_features(),query_schemas(), etc. to allHasTyperegistries by @falexwolf in #3302 - β¨Allow skipping to mark the storage root when registering a storage by @Koncopd in #3303
- π Fix describe features for ArtifactArtifact by @sunnyosun in #3301
- β¨ Read-only queries of public instances through shadow SQLite clones by @Zethson in #3282
- π Fix feature describe for wetlab.Compound by @sunnyosun in #3306
- πΈ Enable
skip_hash_lookupin transform by @falexwolf in #3307 - ποΈ Add
RecordCollectionandCollectionRecordby @falexwolf in #3305 - πΈ Make adding optional features convenient through
schema.add_optional_features()by @falexwolf in #3308 - πΈ Propagate re-organization of record types to dtypes by @falexwolf in #3309
- β¬οΈ Upgrade
lamindb-setupto prepare release by @falexwolf in #3311 - π· Also run core unit tests against an SQLite database by @falexwolf in #3310
- π Fix a bug where a changed set of valid features led to violating the per-
slotunique constraint inArtifactSchemarather than updating the existing inferred schema link by @falexwolf in #3312 - π Harmonize lineage graph display by @falexwolf in #3313
- β¬οΈ Upgrade supabase by @Koncopd in #3315
- π Add
Sharingsection to README by @falexwolf in #3316 - π
Artifact()incorrectly returned the latest artifact in a match onkeyORhashif upon further filtering on justhash, it also found a match by @falexwolf in #3317 - ποΈ Add an
extra_dataJSON field toRecordby @falexwolf in #3318 - π Fix
view_parents()andquery_relatives()for non-default instances by @Zethson in #3319 - β¨ Add
ln.DBto conveniently query all entities in any instance by @Zethson in #3314 - β»οΈ Corrections and clarifications for
_get_parentsby @Koncopd in #3320 - β»οΈ Add same integrity measures to
ULabelas onRecord, moveULabelunderRecordin the docs by @falexwolf in #3322 - π In
record.type_to_dataframe(), do not limit to just 100 records by @falexwolf in #3323 - π Honor dev-dir in
lamin loadby @falexwolf in #3324 - β¨ Add
lamin ioto manage snapshots, exports & imports by @Zethson in #3321 - ποΈ Rename
record.paramstorecord.extra_databy @falexwolf in #3327 - β Test audit by @Koncopd in #3326
- π Fix sheet export for features with dtype list of categoricals if there wasn't also the corresponding non-list one by @falexwolf in #3329
- πΈ Polish
QueryDBby @Zethson in #3325 - β
More tests for
dbwritelogby @Koncopd in #3328 - π Fix sheet export of features with list of categorical dtype when additional field qualifiers are used by @falexwolf in #3331
- β¬οΈ Upgrade lamindb-setup by @fredericenard in #3332
- πΈ Rename
record.type_to_dataframe()torecord.to_dataframe()by @falexwolf in #3333 - πΈ Honor
listdtypeover the defaultsetin sheet export by @falexwolf in #3334 - β¬οΈ Upgrade lamindb-setup by @Koncopd in #3337
- π Upper bound for pandas 3 by @Zethson in #3335
- π Fix a breadth of edge cases for sheet export by @falexwolf in #3336
- β‘ Faster init from compressed SQLite file by @falexwolf in #3340
- π©Ή Temporary fix for
polars+huggingfaceinarraysby @Koncopd in #3341 - π Fix sheet export when multiple features with the same name in an instance by @falexwolf in #3343
- π Fix sheet export with mixed single- and multi-item lists by @falexwolf in #3344
- π Respect soft delete in sheet export by @falexwolf in #3345
- πΈ Maintain a history of feature renaming events in the feature record, simplify handling label rename events by @falexwolf in #3347
- π Fix example syntax by @Zethson in #3330
- πΈ Better error message if notebook filename is
Untitled.ipynbby @falexwolf in #3348 - π Add
to_dataframe()docstring toRecordand fix several docs warnings by @falexwolf in #3349 - πΈ Allow validation of genes to pass without indicating organism by @sunnyosun in #3350
- β»οΈ Enforce absolute
typehierarchy within relationaldtypesduring validation by @falexwolf in #3353 - β»οΈ No unnecessary import of
lamindbinlamin-cliby @falexwolf in #3355 - π¨ If matching the same term multiple times at different levels of a type hierarchy during validation, annotate with top-level match by @falexwolf in #3358
- π¨ Leverage schema feature association when annotating artifacts through curators by @falexwolf in #3360
- β¨ QueryDB accessor & documentation improvements by @Zethson in #3354
- β¬οΈ Upgrade lamindb-setup by @Koncopd in #3361
- ποΈ Enable queries to other instances in case no instance is configured by @Koncopd in #3359
- π More extensive documentation for
Artifact.otypeby @falexwolf in #3362 - πΈ Improve error behavior if a
typeisn't found during validation: raise anIntegrityErrorinstead ofInvalidArgumentby @falexwolf in #3364 - β¬οΈ Upgrade lamindb-setup by @Koncopd in #3365
- π Gracefully handle corrupted
dateanddatetimevalues in sheets by @falexwolf in #3366 - π¨ Allow
__lamindb_...type columns in sheet export also ifschema.maximal_set = Trueby @falexwolf in #3367 - π Fix type casting to pandas in sheet exports with
dtype="num"by @falexwolf in #3368 - π Fix
logger.mute()before importing lamindb and refactorRootLoggerby @falexwolf in #3369 - π Resolve feature name clashes during usage of
artifact.features.add_values()by @falexwolf in #3370 - β»οΈ Refactor organism requirement by @sunnyosun in #3356
- π¨ Disallow mutating
feature.dtypeon the database level by @falexwolf in #3371 - πΈ Allow calling
.describe()on allBaseSQLRecordobjects and classes by @falexwolf in #3373 - πΈ Add
describe()toQuerySetby @falexwolf in #3374 - β¬οΈ Upgrade
lamindb-setupby @Koncopd in #3376 - π Refactor README and polish docs by @falexwolf in #3372
- π Rename
QueryDBtoDBby @falexwolf in #3377 - β¨ Implement
FeatureManager.__getitem__for getting values records by @sunnyosun in #3375 - πΈ Warn if a user passes a string to the
dtypeargument ofFeatureand add validation for existence of record types by @falexwolf in #3378 - β Adapt test_permissions by @Koncopd in https://github.com/lami...
Release 1.16.2
See https://docs.lamin.ai/changelog/2025#db-1-16-2
What's Changed
- π Fix re-validating an existing artifact with an external schema and external features by @falexwolf in #3288
Full Changelog: 1.16.1...1.16.2
Release 1.16.1
See https://docs.lamin.ai/changelog/2025#db-1-16-1
What's Changed
- π Do not log CLI args in notebooks by @falexwolf in #3283
- πΈ Log if switching to read-only storage location of another instance also when using
ln.settings.storageby @falexwolf in #3284 - π Clarify logging and language around writing/managing instance by @falexwolf in #3286
- π Fix
ArtifactfromhttpURL if leveraging virtual keys by @Koncopd in #3287
Full Changelog: 1.16.0...1.16.1
Release 1.16.0
See https://docs.lamin.ai/changelog/2025#db-1-16-0
What's Changed
- β¬οΈ Support anndata up to 0.12.5 by @Koncopd in #3264
- π Rework _query_relatives by @Koncopd in #3265
- π Enable passing a list of records to
record.features.add_values()by @falexwolf in #3266 - β»οΈ Properly deprecate
itype='Composite'by @falexwolf in #3268 - β»οΈ Re-organize
.features.add_values()and.features.remove_values()tests and make consistent acrossArtifact&Recordby @falexwolf in #3269 - β»οΈ Refactor and simplify
FeatureManager.remove_values()by @falexwolf in #3271 - β¬οΈ No longer upper-bound pyarrow by
22.0by @Zethson in #3272 - β»οΈ Refactor artifact test suite by @falexwolf in #3274
- β»οΈ Passing kwargs to from_source no longer recognize synonyms by @sunnyosun in #3273
- β¬οΈ Update bionty by @sunnyosun in #3275
- β¨ Introduce
artifact.features.set_values()by @falexwolf in #3276 - π Deprecate the
dataargument ofArtifactin favor ofpathand polish class docstrings by @falexwolf in #3277 - π Polish
transformandrunexamples in the readme by @falexwolf in #3279 - β¨ Make it easy to re-run scripts by tracking
cli_argsby @falexwolf in #3278 - π Deprecate
Registry.using()in favor ofRegistry.connect()by @falexwolf in #3280
Full Changelog: 1.15.2...1.16.0