3LC Python Package Version 2.12¶
2.12.0¶
System Requirements¶
[13788] Support for Python 3.8 has been removed
Features¶
[13423] Added support for 3LC tenant-wide, multi-user Object Service
Previously, when using an API key to authorize the Object Service (i.e. run
3lc service
), only the user the API key belonged to could use that Object Service instance with the 3LC Dashboard. Now, any user in the same 3LC tenant/workspace can use that same Object Service instance if they otherwise have access to it.Requests to the object service from the Dashboard already included a JWT that identifies the logged in Dashboard user. Previously, the JWT user and API key user had to match for the Object Service to process the request, but now the JWT user may be any user in the same tenant/workspace as the API key user.
[14240] Made it so that project config files are loaded when a
Table
orRun
is instantiated so that their aliases are applied. This makes it possible to loadTables
andRuns
from projects that are not indexed because the indexer has not yet started. This only applies to projects that are otherwise currently configured to be indexed. These config files will only be loaded once and updates to them will not be automatically detected and applied.[14552] Read iscrowd from COCO annotations files in
TableFromCoco
and add the property to each bounding box[14348] Introduced a new 3LC Hugging Face
Trainer
that follows established 3LC patterns, and deprecated the oldTLCTrainer
Enhancements and Fixes¶
[13322] Simplify
TableFromYolo
bounding box handlingKeep all boxes regardless of their location. Previously those entirely outside of an image were removed. Let YOLO implementations clean this up themselves.
Keep all boxes regardless of their size. Let YOLO implementations clean these up themselves.
[14281] Made it so that
Run
,Table
, andTableFrom*
classes must be instantiated with named arguments rather than positional arguments, which should prevent accidental misuse and also allows for more informative error messages[11489] Make sure config paths are correctly cased on Windows
[14240] Improved handling for invalid config files
An invalid primary config file already raised an error; this now includes a validation check of the aliases
An invalid secondary config file will be logged and skipped
[14310] Added
SegmentationImagePath
sample type[14449] Allow specification of map values as strings for
SegmentationUrlStringValue
, rather than strictly requiring aMapElement
[14450] Raise an error when trying to define a
Schema
orSampleType
using the name of a class if that class is not a subclass ofSampleType
[14463] Allow users to pass a single int, rather than a tuple containing one int, to tensor sample types if their tensors have a single dimension
[14486] Give a more informative error message, and raise an error earlier, when a user has provided the classes of a categorical variable in an incompatible way in a
Schema
[14459] Fixed a bug with
JoinedTable
andEditedTable
when an input table came from a different dataset than the new table whereby relative URLs would stop working. Relative URLs are now re-relativized with respect to the new table during data production.[14559] Made it so an error is raised if trying to join tables with conflicting value maps, instead of making a new value to automatically introduce a single new map, which may unexpectedly lead to failures during training
[14558] Made it so the size of requests sent to the object service is unlimited so that e.g. large BB edits can be committed
[14363] Disallowed setting the
url
attribute directly on anyObject
by making it a read-only property, which should prevent accidental misuse[14404] Significantly reduced the number of storage system calls made while indexing, reducing cloud storage costs in particular, with more improvements to come in future releases
Known Issues¶
The
tlc
Python package does not detect, handle, or support NaN (Not-a-Number) values intlc.Table
, and their presence may lead to unpredictable behavior or inconsistencies within the system.