voxel51/fiftyone

[BUG] Datasets cannot have 'pk' fields

Open

#2,192 opened on 2022年10月24日

GitHub で見る
 (1 comment) (0 reactions) (0 assignees)Python (4,021 stars) (400 forks)batch import
bugcoregood first issue

説明

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.

コントリビューターガイド