3LC Python Package Version 3.4¶

3.4.2¶

Enhancements and Fixes¶

  • [18938] Hardened request authentication and validation in the Object Service.

  • [18964] Fixed runs and other objects written by older versions of 3LC failing to load with the error “property ‘is_url_writable’ of ‘Run’ object has no setter”.

  • [18912] Fixed tables and runs briefly disappearing from the Dashboard on Linux and macOS when another file in the same folder was deleted during a scan.

  • [18912] Fixed changes to a local file on Windows sometimes not being picked up for up to an hour when the file was held open by another program.

  • [18900] Fixed a rare crash on Linux when a Python process exited right after 3LC logged a message.

  • [18929] Fixed an AttributeError in the Object Service when a table or run does not belong to a project.


3.4.1¶

Enhancements and Fixes¶

  • [18818] Fixed the Object Service logging an error with a traceback for every image when it could not sign cloud-direct URLs for a bucket. It now logs one warning per bucket, and the Dashboard loads that bucket’s media through the Object Service instead. See self-authenticated media URLs for the permissions each cloud needs.


3.4.0¶

System Requirements¶

  • [18489] Support for Python 3.14 has been added.

  • [18489] The minimum supported macOS version is now macOS Sonoma (version 14). The 3lc wheels for macOS are built for macOS 14 and newer, and can no longer be installed on macOS Ventura (version 13).

  • The minimum supported Ubuntu version is now Ubuntu 22.04 (x86-64 and ARM64), matching the versions 3LC is tested on.

Features¶

  • [18255] A location declared as static is now also read-only. Declaring static: true on a scan-urls entry, or in a config.3lc.yaml beside the data, previously only meant the location was scanned once. 3LC now also refuses to write to the location. Direct writes raise a PermissionError, and writes whose destination 3LC chooses, such as the new table written when you commit edits in the Dashboard, are redirected under the project root instead. A project root inside a static location is refused, and static: false deeper in the tree makes an exception. See static scopes for details.

  • [18263] The Object Service now reports how many log messages it has recorded at each level in its /status response, so the Dashboard can notify you of new Object Service info, warning and error messages.

Enhancements and Fixes¶

  • [18621] Edits to the user configuration file and the project root’s configuration file, such as added or changed aliases, are now correctly picked up by a running Object Service without a restart.

  • [18255] Fixed tables and runs sometimes disappearing from the Dashboard when a scan hit a temporary storage error.

  • [18594] Fixed intermittent “403 Unauthenticated” errors from the Object Service, typically shortly after the Dashboard renewed its login.

  • [18369] Data inside a project folder that matches a registered alias is now stored using the alias instead of as a path relative to the table, so moving the data only requires updating the alias. Tables written by earlier versions keep their relative paths.

  • [18263] Fixed error messages in the Dashboard’s Object Service log view being shown with the level “Not set”.

  • [18240] PaCMAP embedding reduction now works on macOS. PaCMAP has been upgraded to 0.9, which uses faiss instead of annoy for its nearest-neighbor search. Existing PaCMAP tables that stored an annoy index and have no row cache reuse it when annoy is installed, and otherwise rebuild the index with a warning.

  • [18317] 3lc now depends on opencv-python-headless instead of opencv-python. This removes the need for GUI system libraries such as libGL on Linux servers and containers, and makes the install smaller. The headless package does not include OpenCV’s GUI functions, such as cv2.imshow, so code that relied on them through 3lc’s previous dependency needs to install opencv-python itself.

  • [18218] Raised the minimum typing-extensions version to 4.15, for compatibility with Pixeltable 0.7.

  • [18329] Stopped logging a traceback at DEBUG level on every import tlc when the project root has no configuration file.