voxel51/fiftyone

[BUG] Datasets cannot have 'pk' fields

Open

#2192 aperta il 24 ott 2022

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

Metriche repository

Star
 (4021 star)
Metriche merge PR
 (Merge medio 5g 22h) (188 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