3LC Python Package Version 2.7#

2.7.1#

Enhancements and Fixes#

  • [13292] In TableFromYolo, use a more lenient tolerance for valid bounding boxes so fewer are discarded, and clip them when valid but partially outside the image


2.7.0#

Features#

  • [9259] Added support for Python 3.12

    • This required making it so that the required versions of a few dependencies change depending on which Python version is being used.

  • Added official support for Ubuntu 22.04

  • [12960] Updated key dependencies to make using 3LC with other packages easier

    • Updated from starlite ^1.51.6 to litestar ^2.10.0; starlite was renamed to litestar for version 2

    • Updated from pydantic>=1.9.0, <2.0.0 to pydantic>=2; this was a restriction imposed by use of starlite 1 that no longer applies with the use of litestar 2, and updating pydantic in particular makes it easier to use 3LC with newer versions of other packages (such as albumentations) that require pydantic>=2

    • Updated from sentry-sdk ^1.39.1 to sentry-sdk ^2.13.0, which has an integration compatible with litestar

  • [13256] Made it possible to POST to /external_data with the object service to prepare for support for writing segmentation masks from the Dashboard

  • [13019] Added “How-to” section to documentation to help users with common 3LC tasks

Enhancements and Fixes#

  • [12882] Improvements and bugfixes in Table.from_yolo() to read YOLO object detection datasets:

    • Added an argument datasets_dir, which can be provided as a root to path in the yolo_yaml_file if it is relative. If path is absolute, datasets_dir is ignored and therefore not required.

    • Added an argument override_split_path to explicitly set the path at which to scan for images and labels. This overrides path in the dataset_yaml_file and datasets_dir, and is intended to be used in the YOLO integrations where additional behavior can occur when resolving a dataset, resulting in a different split path than that referenced in the dataset_yaml_file.

    • Fixed a bug where images found by YOLO would not be found by Table.from_yolo().

    • Various changes to logging and error messages, which should be more helpful in resolving issues when parsing a YOLO dataset to create tables.

  • [11311] Do not create transaction or write edited table if workspace has insufficient credits when using 3LC account API key

  • [13203] Made it so that object service post rolls back changes made in the event of failure. Failure can potentially happen for a variety of reasons (URL not writable, insufficient credits, etc.), and rolling back ensures that 3LC is not left in an inconsistent state.

  • [12825] Updated timestamp input handling for TableFromParquet to allow conversion of parquet input data to automatically adhere to 3LC schema. Specifically, this means converting timestamps to strings.

  • [13027] Added detectron outputs as Run outputs when the Detectron2MetricsCollectionHook is used

  • [13215] Raise a specific error when collecting metrics with detectron if not in a context with event storage, rather than having detectron trigger an assert. This error indicates a user error or misuse of the Detectron2MetricsCollectionHook that should be reported and avoided.

  • [13237] Deprecated use of DetectronMetricsCollectionHook.collect_metrics_before_train. The hook is intended primarily for collecting metrics during the training process, so using this argument is not recommended.

  • [13237] Log a warning in DetectronMetricsCollectionHook.after_train if no detectron metrics were collected during training

  • [13216] Added some handling for schema inconsistency with edited tables and some general data generation improvements so that tables with failing data production don’t reach inconsistent state

  • [13253] Made a fix to avoid a potential crash during object service shutdown when using the TUI and debug logging

  • [13255] Fixed an issue where it was not possible to save a torch model when used with a 3LC Predictor and collect_metrics because the forward hooks cannot be pickled. Now, Predictor does not register the hooks in its __init__ method, and hooks are only registered and then removed during collect_metrics.

  • [13258] Restored default behavior for Table.latest() to wait indefinitely if no value is specified for timeout, which now defaults to None instead of 0. This fixes a regression where the old default value of 0 used to mean “wait indefinitely” but was changed to mean “do not wait” in a previous release.

  • [13288] Changed the default value for delete_source_tables from False to True in the various reduce_embeddings* methods to avoid silent, unintended accumulation of disk usage

Known Issues#

  • The tlc Python package does not detect, handle, or support NaN (Not-a-Number) values in tlc.Table, and their presence may lead to unpredictable behavior or inconsistencies within the system.