voxel51/fiftyone

[BUG] Datasets cannot have 'pk' fields

已關閉

#2,192 建立於 2022年10月24日

 (1 則留言) (0 個反應) (0 位負責人)Python (400 個分叉)batch import
bugcoregood first issue

倉庫指標

星標
 (4,021 顆星)
PR 合併指標
 (PR 指標待抓取)

描述

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.

貢獻者指南