voxel51/fiftyone

[BUG] Datasets cannot have 'pk' fields

Chiusa

#2192 aperta il 24 ott 2022

 (1 commento) (0 reazioni) (0 assegnatari)Python (400 fork)batch import
bugcoregood first issue

Metriche repository

Star
 (4021 stelle)
Metriche merge PR
 (Merge medio 3g 11h) (161 PR mergiate in 30 g)

Descrizione

Datasets cannot currently have a pk field:

import fiftyone as fo

sample = fo.Sample(filepath="image.jpg", pk=123)

dataset = fo.Dataset()
dataset.add_sample(sample)

dataset.set_values("foo", ["bar"])
# TypeError: id must be an instance of (bytes, str, ObjectId), not <class 'int'>

I believe pk should be a reserved keyword, IE these should be updated to raise errors:

sample = fo.Sample(filepath="image.jpg")
sample["pk"]  # ValueError: 'pk' is a reserved keyword

sample = fo.Sample(filepath="image.jpg", pk=123)    # ValueError: 'pk' is a reserved keyword

There may be other such keywords that need similar handling, btw.

I haven't investigated the source of the error. It might be possible to instead patch things so that pk is allowable.

Guida contributor