syd 0.1.1__tar.gz → 0.1.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {syd-0.1.1 → syd-0.1.3}/PKG-INFO +1 -1
- {syd-0.1.1 → syd-0.1.3}/pyproject.toml +1 -1
- syd-0.1.3/syd/__init__.py +1 -0
- {syd-0.1.1 → syd-0.1.3}/syd/interactive_viewer.py +34 -37
- {syd-0.1.1 → syd-0.1.3}/syd/notebook_deploy.py +2 -2
- {syd-0.1.1 → syd-0.1.3}/syd/parameters.py +1 -1
- syd-0.1.1/syd/__init__.py +0 -1
- {syd-0.1.1 → syd-0.1.3}/.gitignore +0 -0
- {syd-0.1.1 → syd-0.1.3}/LICENSE +0 -0
- {syd-0.1.1 → syd-0.1.3}/README.md +0 -0
{syd-0.1.1 → syd-0.1.3}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: syd
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.3
|
|
4
4
|
Summary: A Python package for making GUIs for data science easy.
|
|
5
5
|
Project-URL: Homepage, https://github.com/landoskape/syd
|
|
6
6
|
Author-email: Andrew Landau <andrew+tyler+landau+getridofthisanddtheplusses@gmail.com>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.1.3"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from typing import List, Any, Callable, Dict
|
|
1
|
+
from typing import List, Any, Callable, Dict, Tuple
|
|
2
2
|
from functools import wraps
|
|
3
3
|
from contextlib import contextmanager
|
|
4
4
|
from matplotlib.figure import Figure
|
|
@@ -76,7 +76,7 @@ class InteractiveViewer:
|
|
|
76
76
|
self.state = {}
|
|
77
77
|
self._app_deployed = False
|
|
78
78
|
|
|
79
|
-
def
|
|
79
|
+
def get_state(self) -> Dict[str, Any]:
|
|
80
80
|
return {name: param.value for name, param in self.parameters.items()}
|
|
81
81
|
|
|
82
82
|
def plot(self, **kwargs) -> Figure:
|
|
@@ -94,8 +94,9 @@ class InteractiveViewer:
|
|
|
94
94
|
def perform_callbacks(self, name: str) -> bool:
|
|
95
95
|
"""Perform callbacks for all parameters that have changed"""
|
|
96
96
|
if name in self.callbacks:
|
|
97
|
+
state = self.get_state()
|
|
97
98
|
for callback in self.callbacks[name]:
|
|
98
|
-
callback(
|
|
99
|
+
callback(state)
|
|
99
100
|
|
|
100
101
|
def on_change(self, parameter_name: str, callback: Callable):
|
|
101
102
|
"""Register a function to be called when a parameter changes."""
|
|
@@ -122,47 +123,45 @@ class InteractiveViewer:
|
|
|
122
123
|
self.parameters[name] = ParameterType.text.value(name, default)
|
|
123
124
|
|
|
124
125
|
@validate_parameter_operation("add", ParameterType.selection)
|
|
125
|
-
def add_selection(self, name: str, options: List[Any], default:
|
|
126
|
+
def add_selection(self, name: str, options: List[Any], default: Any = None) -> None:
|
|
126
127
|
self.parameters[name] = ParameterType.selection.value(name, options, default)
|
|
127
128
|
|
|
128
129
|
@validate_parameter_operation("add", ParameterType.multiple_selection)
|
|
129
|
-
def add_multiple_selection(self, name: str, options: List[Any],
|
|
130
|
-
self.parameters[name] = ParameterType.multiple_selection.value(name, options,
|
|
130
|
+
def add_multiple_selection(self, name: str, options: List[Any], default: List[Any] = None) -> None:
|
|
131
|
+
self.parameters[name] = ParameterType.multiple_selection.value(name, options, default)
|
|
131
132
|
|
|
132
133
|
@validate_parameter_operation("add", ParameterType.boolean)
|
|
133
|
-
def add_boolean(self, name: str, default: bool =
|
|
134
|
+
def add_boolean(self, name: str, default: bool = True) -> None:
|
|
134
135
|
self.parameters[name] = ParameterType.boolean.value(name, default)
|
|
135
136
|
|
|
136
137
|
@validate_parameter_operation("add", ParameterType.integer)
|
|
137
|
-
def add_integer(self, name: str, min_value: int, max_value: int, default: int =
|
|
138
|
+
def add_integer(self, name: str, min_value: int = None, max_value: int = None, default: int = 0) -> None:
|
|
138
139
|
self.parameters[name] = ParameterType.integer.value(name, min_value, max_value, default)
|
|
139
140
|
|
|
140
141
|
@validate_parameter_operation("add", ParameterType.float)
|
|
141
|
-
def add_float(self, name: str, min_value: float, max_value: float,
|
|
142
|
-
self.parameters[name] = ParameterType.float.value(name, min_value, max_value,
|
|
142
|
+
def add_float(self, name: str, min_value: float = None, max_value: float = None, default: float = 0.0, step: float = 0.1) -> None:
|
|
143
|
+
self.parameters[name] = ParameterType.float.value(name, min_value, max_value, default, step)
|
|
143
144
|
|
|
144
145
|
@validate_parameter_operation("add", ParameterType.integer_pair)
|
|
145
146
|
def add_integer_pair(
|
|
146
147
|
self,
|
|
147
148
|
name: str,
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
default_high: int = None,
|
|
149
|
+
default: Tuple[int, int],
|
|
150
|
+
min_value: int = None,
|
|
151
|
+
max_value: int = None,
|
|
152
152
|
) -> None:
|
|
153
|
-
self.parameters[name] = ParameterType.integer_pair.value(name, min_value, max_value
|
|
153
|
+
self.parameters[name] = ParameterType.integer_pair.value(name, default, min_value, max_value)
|
|
154
154
|
|
|
155
155
|
@validate_parameter_operation("add", ParameterType.float_pair)
|
|
156
156
|
def add_float_pair(
|
|
157
157
|
self,
|
|
158
158
|
name: str,
|
|
159
|
-
|
|
160
|
-
|
|
159
|
+
default: Tuple[float, float],
|
|
160
|
+
min_value: float = None,
|
|
161
|
+
max_value: float = None,
|
|
161
162
|
step: float = 0.1,
|
|
162
|
-
default_low: float = None,
|
|
163
|
-
default_high: float = None,
|
|
164
163
|
) -> None:
|
|
165
|
-
self.parameters[name] = ParameterType.float_pair.value(name, min_value, max_value, step
|
|
164
|
+
self.parameters[name] = ParameterType.float_pair.value(name, default, min_value, max_value, step)
|
|
166
165
|
|
|
167
166
|
# -------------------- parameter update methods --------------------
|
|
168
167
|
@validate_parameter_operation("update", ParameterType.text)
|
|
@@ -170,44 +169,42 @@ class InteractiveViewer:
|
|
|
170
169
|
self.parameters[name] = ParameterType.text.value(name, default)
|
|
171
170
|
|
|
172
171
|
@validate_parameter_operation("update", ParameterType.selection)
|
|
173
|
-
def update_selection(self, name: str, options: List[Any], default:
|
|
172
|
+
def update_selection(self, name: str, options: List[Any], default: Any = None) -> None:
|
|
174
173
|
self.parameters[name] = ParameterType.selection.value(name, options, default)
|
|
175
174
|
|
|
176
175
|
@validate_parameter_operation("update", ParameterType.multiple_selection)
|
|
177
|
-
def update_multiple_selection(self, name: str, options: List[Any],
|
|
178
|
-
self.parameters[name] = ParameterType.multiple_selection.value(name, options,
|
|
176
|
+
def update_multiple_selection(self, name: str, options: List[Any], default: List[Any] = None) -> None:
|
|
177
|
+
self.parameters[name] = ParameterType.multiple_selection.value(name, options, default)
|
|
179
178
|
|
|
180
179
|
@validate_parameter_operation("update", ParameterType.boolean)
|
|
181
|
-
def update_boolean(self, name: str, default: bool =
|
|
180
|
+
def update_boolean(self, name: str, default: bool = True) -> None:
|
|
182
181
|
self.parameters[name] = ParameterType.boolean.value(name, default)
|
|
183
182
|
|
|
184
183
|
@validate_parameter_operation("update", ParameterType.integer)
|
|
185
|
-
def update_integer(self, name: str, min_value: int, max_value: int, default: int =
|
|
184
|
+
def update_integer(self, name: str, min_value: int = None, max_value: int = None, default: int = 0) -> None:
|
|
186
185
|
self.parameters[name] = ParameterType.integer.value(name, min_value, max_value, default)
|
|
187
186
|
|
|
188
187
|
@validate_parameter_operation("update", ParameterType.float)
|
|
189
|
-
def update_float(self, name: str, min_value: float, max_value: float,
|
|
190
|
-
self.parameters[name] = ParameterType.float.value(name, min_value, max_value,
|
|
188
|
+
def update_float(self, name: str, min_value: float = None, max_value: float = None, default: float = 0.0, step: float = 0.1) -> None:
|
|
189
|
+
self.parameters[name] = ParameterType.float.value(name, min_value, max_value, default, step)
|
|
191
190
|
|
|
192
191
|
@validate_parameter_operation("update", ParameterType.integer_pair)
|
|
193
192
|
def update_integer_pair(
|
|
194
193
|
self,
|
|
195
194
|
name: str,
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
default_high: int = None,
|
|
195
|
+
default: Tuple[int, int],
|
|
196
|
+
min_value: int = None,
|
|
197
|
+
max_value: int = None,
|
|
200
198
|
) -> None:
|
|
201
|
-
self.parameters[name] = ParameterType.integer_pair.value(name, min_value, max_value
|
|
199
|
+
self.parameters[name] = ParameterType.integer_pair.value(name, default, min_value, max_value)
|
|
202
200
|
|
|
203
201
|
@validate_parameter_operation("update", ParameterType.float_pair)
|
|
204
202
|
def update_float_pair(
|
|
205
203
|
self,
|
|
206
204
|
name: str,
|
|
207
|
-
|
|
208
|
-
|
|
205
|
+
default: Tuple[float, float],
|
|
206
|
+
min_value: float = None,
|
|
207
|
+
max_value: float = None,
|
|
209
208
|
step: float = 0.1,
|
|
210
|
-
default_low: float = None,
|
|
211
|
-
default_high: float = None,
|
|
212
209
|
) -> None:
|
|
213
|
-
self.parameters[name] = ParameterType.float_pair.value(name, min_value, max_value, step
|
|
210
|
+
self.parameters[name] = ParameterType.float_pair.value(name, default, min_value, max_value, step)
|
|
@@ -220,7 +220,7 @@ class NotebookDeployment:
|
|
|
220
220
|
"""Update the plot with current parameters and size."""
|
|
221
221
|
self._current_fig.clear()
|
|
222
222
|
self._current_fig.set_size_inches(self.fig_width, self.fig_height)
|
|
223
|
-
self._current_fig = self.viewer.plot(fig=self._current_fig, state=self.viewer.
|
|
223
|
+
self._current_fig = self.viewer.plot(fig=self._current_fig, state=self.viewer.get_state())
|
|
224
224
|
|
|
225
225
|
# Apply tight layout to remove dead space
|
|
226
226
|
self._current_fig.tight_layout()
|
|
@@ -266,7 +266,7 @@ class NotebookDeployment:
|
|
|
266
266
|
# Create initial plot
|
|
267
267
|
self._current_fig = plt.figure(figsize=(self.fig_width, self.fig_height))
|
|
268
268
|
plt.close(self._current_fig) # close the figure to prevent it from being displayed
|
|
269
|
-
self._current_fig = self.viewer.plot(fig=self._current_fig, state=self.viewer.
|
|
269
|
+
self._current_fig = self.viewer.plot(fig=self._current_fig, state=self.viewer.get_state())
|
|
270
270
|
with self.plot_output:
|
|
271
271
|
display(self._current_fig)
|
|
272
272
|
|
|
@@ -182,7 +182,7 @@ class PairParameter(Parameter[Tuple[T, T]], ABC):
|
|
|
182
182
|
raise NotImplementedError("Need to define in subclass for proper IDE support")
|
|
183
183
|
|
|
184
184
|
@abstractmethod
|
|
185
|
-
def
|
|
185
|
+
def _validate(self, value: Any) -> T:
|
|
186
186
|
raise NotImplementedError
|
|
187
187
|
|
|
188
188
|
|
syd-0.1.1/syd/__init__.py
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.1.1"
|
|
File without changes
|
{syd-0.1.1 → syd-0.1.3}/LICENSE
RENAMED
|
File without changes
|
|
File without changes
|