voxel51/fiftyone

[BUG] Datasets cannot have 'pk' fields

Fermée

#2 192 ouverte le 24 oct. 2022

 (1 commentaire) (0 réaction) (0 personne assignée)Python (400 forks)batch import
bugcoregood first issue

Métriques du dépôt

Stars
 (4 021 étoiles)
Métriques de merge PR
 (Métriques PR en attente)

Description

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.

Guide contributeur