Как реализовать собственное расширение bokehjs, которое использует источник, как image_rgba?

Я создаю собственное расширение для боке. Это все работает, и пример в документации был полезен. Тем не менее, я пытаюсь отразить то, что делает image_rgba, а именно с изображениями, которые вы можете сделать:

figure.image_rgba(
  image="image_path_in_source", 
  source=ColumnDataSource(dict(image_path_in_source=[np.array(...)]))
)
# or
figure.image_rgba(image=[np.array(...)])

Я посмотрел в исходный код, чтобы воссоздать официальный способ реализации этого, но я получаю ошибку. Позвольте мне объяснить в коде:

Моя пользовательская модель определяет:

CustomModel.define({
    source: [p.Instance],
    dx: [p.NumberSpec],
    dy: [p.NumberSpec]
});

И план состоит в том, чтобы использовать конструкцию спецификации данных при изменении источника:

const data = this.model.materialize_dataspecs(source);

Но когда я отправляю string за dx со стороны питона, он жалуется:

Number property 'dx' given invalid value: "path_to_dx"
    at e.validate (properties.js:134)
    at e.t._init (properties.js:112)
    at e.t.update (properties.js:46)

Что очевидно верно, так как я сказал, что это будет NumberSpec и я послал string, Но как мне сделать это правильно?

1 ответ

Ах, я забыл изменить свойство модели python на NumberSpec:

class CustomModel(LayoutDOM):
    __implementation__ = '...'

    source = Instance(ColumnDataSource)
    dx = NumberSpec()
    dy = NumberSpec()
Другие вопросы по тегам