Widgets and type annotations for storing function results of any types
Project description
napari-result-stack
Widgets and type annotations for storing function results of any types.
Stored
type
Type Stored[T]
is equivalent to T
for the type checker, but magicgui
is aware of this annotation and behaves as a "storage" for the T
instances.
from pathlib import Path
import pandas as pd
from magicgui import magicgui
from napari_result_stack import Stored
# Returned values will be stored in a result stack.
@magicgui
def provide_data(path: Path) -> Stored[pd.DataFrame]:
return pd.read_csv(path)
# You can choose one of the values stored in the result stack
# for the argument `df` from a ComboBox widget.
@magicgui
def print_data(df: Stored[pd.DataFrame]):
print(df)
- Different types use different storage. e.g.
Stored[int]
andStored[str]
do not share the same place. - Even for the same type, you can specify the second key to split the storage. e.g.
Stored[int]
,Stored[int, 0]
andStored[int, "my-plugin-name"]
use the distinct storages.
Manually store variables
Stored.valuesof[T]
is a list
-like object that returns a view of the values stored in Stored[T]
. This value view is useful if you want to store values outside @magicgui
.
from magicgui.widgets import PushButton
from datetime import datetime
from napari_result_stack import Stored
button = PushButton(text="Click!")
@button.changed.connect
def _record_now():
Stored.valuesof[datetime].append(datetime.now())
Result stack widget
napari-result-stack
provides a plugin widget that is helpful to inspect all the stored values.
Show code
from napari_result_stack import Stored
from magicgui import magicgui
import numpy as np
import pandas as pd
@magicgui
def f0() -> Stored[pd.DataFrame]:
return pd.DataFrame(np.random.random((4, 3)))
@magicgui
def f1(x: Stored[pd.DataFrame]) -> Stored[float]:
return np.mean(np.array(x))
viewer.window.add_dock_widget(f0, name="returns a DataFrame")
viewer.window.add_dock_widget(f1, name="mean of a DataFrame")
This napari plugin was generated with Cookiecutter using @napari's cookiecutter-napari-plugin template.
Installation
You can install napari-result-stack
via pip:
pip install napari-result-stack
To install latest development version :
pip install git+https://github.com/hanjinliu/napari-result-stack.git
Contributing
Contributions are very welcome. Tests can be run with tox, please ensure the coverage at least stays the same before you submit a pull request.
License
Distributed under the terms of the BSD-3 license, "napari-result-stack" is free and open source software
Issues
If you encounter any problems, please file an issue along with a detailed description.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for napari-result-stack-0.0.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2952bfe0313d350dbd15f2e09e889eca8965a1f7ad7b1de18856acb411d17eaf |
|
MD5 | 2928b2d5553b94a1c54b2ee5fc0f5701 |
|
BLAKE2b-256 | ca73be8386ee628eb7ba2c2c91a8e239761a25a3c36b33445000898555d3a755 |
Hashes for napari_result_stack-0.0.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | eb5fc1e215a24bb644c2ed4210a2de7f93688cc22d5001f815e460ca552addcc |
|
MD5 | 3c14e657e9cea7eea9056e2a59d5c69b |
|
BLAKE2b-256 | 7563940ead571d53688a6374a947d375f62888d27283eedb58b8d128f5c6d9c6 |