Releases: laminlabs/lamindb
Releases · laminlabs/lamindb
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
Release 1.15.2
See https://docs.lamin.ai/changelog/2025#db-1-15-2
Full Changelog: 1.15.1...1.15.2
Release 1.15.1
See https://docs.lamin.ai/changelog/2025#db-1-15-1
What's Changed
- 🐛 Deal with corrupted state in which no
is_latestrecord is found by @falexwolf in #3256 - 📝 Improve Records docs by @falexwolf in #3255
- ✅ Test prevent any access on jwt connections without a db token by @Koncopd in #3257
- ✅ Test unit-core with zarr v3 by @Koncopd in #3258
- ⬆️ Upgrade lamindb-setup by @Koncopd in #3260
- 🐛 Correctly deal with
None,date, anddatetimein.features.add_values()by @falexwolf in #3261 - ⬆️ Upgrade lamindb-setup by @Koncopd in #3262
- 🐛 Cast
intandfloatwhen loading from database where appropriate by @falexwolf in #3263 - 🎨 Fix anndata version warnings by @Zethson in #3259
Full Changelog: 1.15.0...1.15.1
Release 1.15.0
See https://docs.lamin.ai/changelog/2025#db-1-15-0
What's Changed
- ⚡️ More optimal recursive childrens query by @falexwolf in #3238
- 🚸 Enable passing
parquet_kwargstoArtifact.from_dataframe()for configuringpyarrow.ParquetWriterby @falexwolf in #3239 - 🚸 Also support external features in
DataFrameCuratorby @falexwolf in #3240 - 📝 Simplify API reference by @falexwolf in #3241
- 🚸 Also introduce
csv_kwargsforArtifact.from_dataframe()by @falexwolf in #3242 - 🐛 Allow
features.remove_values()to work with features ofdtype=list[cat]by @sunnyosun in #3237 - ♻️ Simplify
features.add_values()and improve logging messages by @falexwolf in #3243 - 📝 Refactor
Recorddocs by @falexwolf in #3245 - ✨ Add
Record.featuresto conveniently populate features of records by @falexwolf in #3246 - 🐛 Handle
run=Nonecorrectly when populating subsequent creating runs of collections by @falexwolf in #3247 - ✨ Enable constraining features by
schemainrecord.features.add_values()andrecord.features.remove_values()by @falexwolf in #3248 - 🐛 Fix
to_dataframe()with features by @Koncopd in #3249 - 🗃️ Remove
db_indexonReference.textfield by @falexwolf in #3250 - ⚡ Speed up
add_values()and add tests for more featuredtypes by @falexwolf in #3251 - 🚸 Improve the UX for the local development directory by @falexwolf in #3252
Full Changelog: 1.14.0...1.15.0
Release 1.14.0
See https://docs.lamin.ai/changelog/2025#db-1-14-0
What's Changed
- ✏️ Fix coherce_dtype in schema.describe by @sunnyosun in #3181
- 📝 Improve bioregistry guide by @sunnyosun in #3182
- 🎨 Raise error in curators when dtype is list but values are not by @sunnyosun in #3183
- 💄 Strip
catfrom featuredtypedisplay by @falexwolf in #3185 - ♻️ Improve dealing with ad hoc annotations of lists of categorical features by @falexwolf in #3184
- 💄 Better way of displaying the schema slot identifier type in
.describe()by @falexwolf in #3186 - 🐛 Set db tokens for connections in all contexts (threads, tasks), disable task-specific database wrappers in jupyter for ipykernel>=7.0.0 by @falexwolf in #3172
- ♻️ Adapt curator tests to new
describe()format by @falexwolf in #3190 - 🐛 Fix a bug that prevented re-curating existing artifacts in some cases by @falexwolf in #3187
- ⬆️ Support
fsspec 2025.9.0by @Koncopd in #3192 - ♻️ Enable bulk-re-creating records that would violate a unique constraint by @sunnyosun in #3189
- 🐛 Exclude records in trash from unique constraint on
nameunder atype, addnameuniqueness under atypeandis_valid_typeconstraints to all typed entities by @falexwolf in #3191 - 🚸 Populate
referenceandreference_typefor sliding transforms by @sunnyosun in #3193 - ♻️ Fix type annotation and double-loading of dataframe in
DataFrameCuratorby @falexwolf in #3194 - ♻️ Add a
RecordRunlink model by @falexwolf in #3195 - 🐛 Capture outputs of root logger in
LogStreamTrackerby @falexwolf in #3196 - ♻️ Enable
run.describe()by @falexwolf in #3197 - 🚸 Return a
SQLRecordListinArtifact.from_dir()by @falexwolf in #3198 - 🚸 Enable passing sync_git_repo via env variable by @falexwolf in #3199
- 🚸 Clearer error and logging messages for
sync_git_repoandln.finish()by @falexwolf in #3200 - ♻️ Refactor removing features by @falexwolf in #3202
- 🐛 Also include
key&storagelocation in error handling uponskip_hash_lookup = Trueby @falexwolf in #3203 - 🚸 Add fallback behavior if artifact was moved in storage by @falexwolf in #3204
- 🚸 Better dialogue for user delete within existing storage location by @falexwolf in #3205
- 🚸 Better message upon start of a script in
ln.track()by @falexwolf in #3206 - 🚸 Ask for extra storage-level delete confirmation in case
_real_keyis notNoneby @falexwolf in #3207 - 🔧 Set
max_pool_connections=64by default fors3fsfilesystem by @Koncopd in #3210 - 🚚 Deprecate
dtype='cat'in favor ofdtype=ln.Recordby @falexwolf in #3208 - ♻️ Move
define_valid_features.pyand similar scripts into the package by @falexwolf in #3211 - 🚸 Improve
Schema.describe(), harmonize withdescribe()ofArtifact,Collection, andRunby @falexwolf in #3213 - 💄 Simplify lineage & ontology graph displays by @falexwolf in #3215
- ✅ More tests and comments regarding recovering items from trash based on hash by @falexwolf in #3219
- 🔊 Log writing in-memory objects into cache on artifact creation by @Koncopd in #3220
- ⬆️ Upgrade
lamindb-setupby @fredericenard in #3214 - 🚸 Allow features to have reserved Django field names by @sunnyosun in #3209
- 🚸 Re-design
.describe()and refactor the related code base by @falexwolf in #3218 - 🐛 Fix exporting sheets with User feature by @sunnyosun in #3221
- 🐛 Fix s3 upload and download problems arising from local aws configs by @Koncopd in #3222
- 🐛 Fix migration of PR3221 by @sunnyosun in #3225
- 🎨 Correctly handle empty lists in curation by @sunnyosun in #3224
- ⬆️ Upgrade lamindb-setup by @Koncopd in #3227
- ✨ Add
transform.describe()by @falexwolf in #3226 - 🚸 Clearer and more consistent
.to_dataframe()- indicate including features viainclude="features"by @falexwolf in #3230 - 🚸 Enable users to annotate & validate without having to learn about the
Schemaconcept by @falexwolf in #3231 - 📝 README v4 by @falexwolf in #3216
- 🩹 Minor fixes in backward compat calls and README by @falexwolf in #3232
- ♻️ Serialize
IterableofSQLRecordin params tracking by @falexwolf in #3233 - ♻️ Allow collections with duplicated artifacts by @falexwolf in #3235
- 🐛 Attach schema when validating with external features by @falexwolf in #3236
- ⬆️ Upgrade Django to 5.2 by @falexwolf in #3234
- 🐛 Respect
feature.dtypeinFeatureManager.get_values()by @sunnyosun in #3229
Full Changelog: 1.13.1...1.14.0
Release 1.13.1
See https://docs.lamin.ai/changelog/2025#db-1-13-0
What's Changed
- 🩹 Prettify logging related to automated lookups based on
nameandhashby @falexwolf in #3167 - ♻️ Map features based on name instead of uid by @sunnyosun in #3168
- ✅ Add tests for
lightningintegration module by @Zethson in #3159 - 🐛 Fix bug in serializing dtypes from objects in deeply nested type hierarchies, expand tests by @falexwolf in #3169
- 🔧 Introduce
skip_hash_lookupforCollectionby @falexwolf in #3170 - 🚸 Format on-prem UI URLs by @falexwolf in #3173
- 🚸 Add
restore()to all registries with soft-delete by @falexwolf in #3175 - 🐛 Never return existing transform with same
keyfrom trash by @falexwolf in #3176 - ✨ Enable curating features with nested subtypes by @sunnyosun in #3174
- ⬆️ Upgrade lamindb-setup by @Koncopd in #3178
- ✨ Add
Transform.from_git()by @falexwolf in #3177 - 🥅 Better error message for trying to write on a public connection. by @Koncopd in #3179
Full Changelog: 1.13.0...1.13.1
Release 1.13.0
See https://docs.lamin.ai/changelog/2025#db-1-13-0
What's Changed
- 📝 Fix docstrings of block models by @Koncopd in #3138
- 🚸 Add clear errors for locked records, test RLS for locked records and
Blockmodels by @Koncopd in #3131 - 🐛 Require a restricted storage location when writing an
Artifactto a restricted space by @falexwolf in #3139 - 🔧 Introduce a
skip_hash_lookupargument forArtifactby @falexwolf in #3140 - ⬆️ Upgrade lamindb-setup by @Koncopd in #3142
- 🚸 Ignore cycles arising between input artifacts and re-created artifacts by @falexwolf in #3143
- ⚡️ Speed up
Curator.add_new_from()by @sunnyosun in #3144 - 🩹 Polish logging during
ln.track()and small refactor in input tracking by @falexwolf in #3145 - 🐛 Do not retrieve records from trash based on hash lookup by @falexwolf in #3146
- 🐛 Various fixes for filtering by @Koncopd in #3147
- 🚸 Better UX for
lamin annotateCLI command by @falexwolf in #3150 - 🐛 Fix schema mutation when removing features by @falexwolf in #3148
- 🐛 Fix annotation with features of
dtype = list[str]by @falexwolf in #3152 - 🐛 Sanitize dataframe proxy for
dictvalidation to enable schema-based validation of categoricals in dicts by @falexwolf in #3153 - ♻️ All references to
ln.examples.datasetsandmini_immunoinstead of their legacy counterparts by @falexwolf in #3154 - 🐛 Fix hash calculation for hybrid composite schemas, refactor external feature annotation in
Artifact.from_dataframe()by @falexwolf in #3155 - 🚸 Limit name search upon record creation to records of same type by @falexwolf in #3156
- 📝 Improve README by @falexwolf in #3157
- ✨ Enable tracking run parameters
withoutvalidation by @falexwolf in #3151 - 📝 Polish the run docs by @falexwolf in #3158
- ♻️ Serialize parameters to JSON by @falexwolf in #3161
- ⬇️ Upper bount ipykernel to lower than 7.0.0 by @Koncopd in #3163
- ♻️ Refactor local-to-cloud transfer notebooks by @falexwolf in #3164
- ♻️ Canonicalize code organization in lightning integration by @falexwolf in #3166
Full Changelog: 1.12.1...1.13.0