:warning: API Changes
- Modify read_batch to return a `DataError` object rather than raising an exception (629)
For Library.read_batch, a `DataError` object will now be returned in the position in the list returned corresponding to the symbol/version pair there was an issue retrieving. This contains the symbol and version requested, and the exception string thrown. For two well-defined categories of error, the error category and specific error code are also included:
ErrorCategory.MISSING_DATA - ErrorCode.E_NO_SUCH_VERSION: The version requested by the user does not exist
ErrorCategory.STORAGE - ErrorCode.E_KEY_NOT_FOUND: At least one of the keys required to read the specified version does not exist in the storage.
Otherwise these fields of the DataError object are left as None.
See also the [API docs](https://docs.arcticdb.io/api/library#arcticdb.version_store.library.Library.read_batch).
- Accessing a Library that does not exist now throws an `arcticdb.exceptions.LibraryNotFound` rather than an internal exception.
π Features
- Support negative integers in `as_of` (589)
This PR enables negative indexing to select "the last-but-nth version". This is equivalent to [negative indexing in Python](https://www.tutorialspoint.com/what-is-a-negative-indexing-in-python). See [API docs](https://docs.arcticdb.io/api/library#arcticdb.version_store.library.Library.read).
For example:
read(...as_of=0...) will select the first version
read(...as_of=-1...) will select the most recent version
read(...as_of=-2...) will select the version prior to the most recent version
π Fixes
Various fixes to make our use of LMDB more correct. These only affect LMDB-backed Arctic instances (not S3). These should resolve the segfaults users have been experiencing with LMDB.
- Only open library once in the interpreter lifetime (585)
- Fix for LMDB DBI Handling (597)
- Delete relevant part of LMDB tree upon library delete (601)
Also,
- Fix for write batch with dedup (595)
- Fix for read batch when as of is TimeStamp (617)
- Fix numeric isin filtering for some cases with a mix of signed and unsigned integers (604)
<details>
<summary>Uncategorized</summary>
- Update demo notebook (570)
- fix: Remove uneeded `FMT_COMPILE` (578)
- build: Use Pandas 2.0 forward compatible API (582)
- Make batch tests much faster (586)
- Remove tests skips in test_storage_lock.cpp for Windows (550)
- Update python line in issue-template so it works on windows (608)
- Update faq.md (616)
- Windows is Beta (610)
- Rename lib to be consistent - lib vs library (622)
- Update docs to point how to use AWS_PROFILE (619)
- maint: Remove `VariantStorageFactory` and its implementations (625)
- docs: Add development guidelines for testing combinations (644)
- conda-build: Pin pybind11 to < 2.11 (647)
- Add checklist to pull request template (643)
</details>
---
> The wheels are on [Pypi](https://pypi.org/project/arcticdb/). Below are for debugging: