syd 0.1.0__tar.gz → 0.1.2__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.0 → syd-0.1.2}/PKG-INFO +1 -1
- {syd-0.1.0 → syd-0.1.2}/pyproject.toml +1 -1
- syd-0.1.2/syd/__init__.py +1 -0
- {syd-0.1.0 → syd-0.1.2}/syd/interactive_viewer.py +32 -36
- {syd-0.1.0 → syd-0.1.2}/syd/notebook_deploy.py +11 -4
- syd-0.1.0/syd/__init__.py +0 -1
- {syd-0.1.0 → syd-0.1.2}/.gitignore +0 -0
- {syd-0.1.0 → syd-0.1.2}/LICENSE +0 -0
- {syd-0.1.0 → syd-0.1.2}/README.md +0 -0
- {syd-0.1.0 → syd-0.1.2}/syd/parameters.py +0 -0
{syd-0.1.0 → syd-0.1.2}/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.2
|
|
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.2"
|
|
@@ -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
|
|
@@ -62,7 +62,7 @@ def validate_parameter_operation(operation: str, parameter_type: ParameterType)
|
|
|
62
62
|
|
|
63
63
|
|
|
64
64
|
class InteractiveViewer:
|
|
65
|
-
def __new__(cls):
|
|
65
|
+
def __new__(cls, *args, **kwargs):
|
|
66
66
|
instance = super().__new__(cls)
|
|
67
67
|
instance.parameters = {}
|
|
68
68
|
instance.callbacks = {}
|
|
@@ -122,47 +122,45 @@ class InteractiveViewer:
|
|
|
122
122
|
self.parameters[name] = ParameterType.text.value(name, default)
|
|
123
123
|
|
|
124
124
|
@validate_parameter_operation("add", ParameterType.selection)
|
|
125
|
-
def add_selection(self, name: str, options: List[Any], default:
|
|
125
|
+
def add_selection(self, name: str, options: List[Any], default: Any = None) -> None:
|
|
126
126
|
self.parameters[name] = ParameterType.selection.value(name, options, default)
|
|
127
127
|
|
|
128
128
|
@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,
|
|
129
|
+
def add_multiple_selection(self, name: str, options: List[Any], default: List[Any] = None) -> None:
|
|
130
|
+
self.parameters[name] = ParameterType.multiple_selection.value(name, options, default)
|
|
131
131
|
|
|
132
132
|
@validate_parameter_operation("add", ParameterType.boolean)
|
|
133
|
-
def add_boolean(self, name: str, default: bool =
|
|
133
|
+
def add_boolean(self, name: str, default: bool = True) -> None:
|
|
134
134
|
self.parameters[name] = ParameterType.boolean.value(name, default)
|
|
135
135
|
|
|
136
136
|
@validate_parameter_operation("add", ParameterType.integer)
|
|
137
|
-
def add_integer(self, name: str, min_value: int, max_value: int, default: int =
|
|
137
|
+
def add_integer(self, name: str, min_value: int = None, max_value: int = None, default: int = 0) -> None:
|
|
138
138
|
self.parameters[name] = ParameterType.integer.value(name, min_value, max_value, default)
|
|
139
139
|
|
|
140
140
|
@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,
|
|
141
|
+
def add_float(self, name: str, min_value: float = None, max_value: float = None, default: float = 0.0, step: float = 0.1) -> None:
|
|
142
|
+
self.parameters[name] = ParameterType.float.value(name, min_value, max_value, default, step)
|
|
143
143
|
|
|
144
144
|
@validate_parameter_operation("add", ParameterType.integer_pair)
|
|
145
145
|
def add_integer_pair(
|
|
146
146
|
self,
|
|
147
147
|
name: str,
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
default_high: int = None,
|
|
148
|
+
default: Tuple[int, int],
|
|
149
|
+
min_value: int = None,
|
|
150
|
+
max_value: int = None,
|
|
152
151
|
) -> None:
|
|
153
|
-
self.parameters[name] = ParameterType.integer_pair.value(name, min_value, max_value
|
|
152
|
+
self.parameters[name] = ParameterType.integer_pair.value(name, default, min_value, max_value)
|
|
154
153
|
|
|
155
154
|
@validate_parameter_operation("add", ParameterType.float_pair)
|
|
156
155
|
def add_float_pair(
|
|
157
156
|
self,
|
|
158
157
|
name: str,
|
|
159
|
-
|
|
160
|
-
|
|
158
|
+
default: Tuple[float, float],
|
|
159
|
+
min_value: float = None,
|
|
160
|
+
max_value: float = None,
|
|
161
161
|
step: float = 0.1,
|
|
162
|
-
default_low: float = None,
|
|
163
|
-
default_high: float = None,
|
|
164
162
|
) -> None:
|
|
165
|
-
self.parameters[name] = ParameterType.float_pair.value(name, min_value, max_value, step
|
|
163
|
+
self.parameters[name] = ParameterType.float_pair.value(name, default, min_value, max_value, step)
|
|
166
164
|
|
|
167
165
|
# -------------------- parameter update methods --------------------
|
|
168
166
|
@validate_parameter_operation("update", ParameterType.text)
|
|
@@ -170,44 +168,42 @@ class InteractiveViewer:
|
|
|
170
168
|
self.parameters[name] = ParameterType.text.value(name, default)
|
|
171
169
|
|
|
172
170
|
@validate_parameter_operation("update", ParameterType.selection)
|
|
173
|
-
def update_selection(self, name: str, options: List[Any], default:
|
|
171
|
+
def update_selection(self, name: str, options: List[Any], default: Any = None) -> None:
|
|
174
172
|
self.parameters[name] = ParameterType.selection.value(name, options, default)
|
|
175
173
|
|
|
176
174
|
@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,
|
|
175
|
+
def update_multiple_selection(self, name: str, options: List[Any], default: List[Any] = None) -> None:
|
|
176
|
+
self.parameters[name] = ParameterType.multiple_selection.value(name, options, default)
|
|
179
177
|
|
|
180
178
|
@validate_parameter_operation("update", ParameterType.boolean)
|
|
181
|
-
def update_boolean(self, name: str, default: bool =
|
|
179
|
+
def update_boolean(self, name: str, default: bool = True) -> None:
|
|
182
180
|
self.parameters[name] = ParameterType.boolean.value(name, default)
|
|
183
181
|
|
|
184
182
|
@validate_parameter_operation("update", ParameterType.integer)
|
|
185
|
-
def update_integer(self, name: str, min_value: int, max_value: int, default: int =
|
|
183
|
+
def update_integer(self, name: str, min_value: int = None, max_value: int = None, default: int = 0) -> None:
|
|
186
184
|
self.parameters[name] = ParameterType.integer.value(name, min_value, max_value, default)
|
|
187
185
|
|
|
188
186
|
@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,
|
|
187
|
+
def update_float(self, name: str, min_value: float = None, max_value: float = None, default: float = 0.0, step: float = 0.1) -> None:
|
|
188
|
+
self.parameters[name] = ParameterType.float.value(name, min_value, max_value, default, step)
|
|
191
189
|
|
|
192
190
|
@validate_parameter_operation("update", ParameterType.integer_pair)
|
|
193
191
|
def update_integer_pair(
|
|
194
192
|
self,
|
|
195
193
|
name: str,
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
default_high: int = None,
|
|
194
|
+
default: Tuple[int, int],
|
|
195
|
+
min_value: int = None,
|
|
196
|
+
max_value: int = None,
|
|
200
197
|
) -> None:
|
|
201
|
-
self.parameters[name] = ParameterType.integer_pair.value(name, min_value, max_value
|
|
198
|
+
self.parameters[name] = ParameterType.integer_pair.value(name, default, min_value, max_value)
|
|
202
199
|
|
|
203
200
|
@validate_parameter_operation("update", ParameterType.float_pair)
|
|
204
201
|
def update_float_pair(
|
|
205
202
|
self,
|
|
206
203
|
name: str,
|
|
207
|
-
|
|
208
|
-
|
|
204
|
+
default: Tuple[float, float],
|
|
205
|
+
min_value: float = None,
|
|
206
|
+
max_value: float = None,
|
|
209
207
|
step: float = 0.1,
|
|
210
|
-
default_low: float = None,
|
|
211
|
-
default_high: float = None,
|
|
212
208
|
) -> None:
|
|
213
|
-
self.parameters[name] = ParameterType.float_pair.value(name, min_value, max_value, step
|
|
209
|
+
self.parameters[name] = ParameterType.float_pair.value(name, default, min_value, max_value, step)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from typing import Dict, Any
|
|
1
|
+
from typing import Dict, Any, Tuple
|
|
2
2
|
import matplotlib.pyplot as plt
|
|
3
3
|
import ipywidgets as widgets
|
|
4
4
|
from IPython.display import display
|
|
@@ -22,7 +22,7 @@ class NotebookDeployment:
|
|
|
22
22
|
Includes enhanced layout control and figure size management.
|
|
23
23
|
"""
|
|
24
24
|
|
|
25
|
-
def __init__(self, viewer: InteractiveViewer):
|
|
25
|
+
def __init__(self, viewer: InteractiveViewer, figsize: Tuple[float, float] = (8, 6), controls_width: float = 30, continuous=False):
|
|
26
26
|
"""Initialize with an InteractiveViewer instance."""
|
|
27
27
|
self.viewer = viewer
|
|
28
28
|
self.widgets: Dict[str, widgets.Widget] = {}
|
|
@@ -30,8 +30,10 @@ class NotebookDeployment:
|
|
|
30
30
|
self._current_figure = None
|
|
31
31
|
|
|
32
32
|
# Default figure size
|
|
33
|
-
self.fig_width =
|
|
34
|
-
self.fig_height =
|
|
33
|
+
self.fig_width = figsize[0]
|
|
34
|
+
self.fig_height = figsize[1]
|
|
35
|
+
self.controls_width = controls_width
|
|
36
|
+
self.continuous = continuous
|
|
35
37
|
|
|
36
38
|
def _create_text_widget(self, param: TextParameter) -> widgets.Text:
|
|
37
39
|
"""Create a text input widget."""
|
|
@@ -72,6 +74,7 @@ class NotebookDeployment:
|
|
|
72
74
|
min=param.min_value,
|
|
73
75
|
max=param.max_value,
|
|
74
76
|
description=param.name,
|
|
77
|
+
continuous_update=self.continuous,
|
|
75
78
|
layout=widgets.Layout(width="95%"),
|
|
76
79
|
style={"description_width": "initial"},
|
|
77
80
|
)
|
|
@@ -85,6 +88,7 @@ class NotebookDeployment:
|
|
|
85
88
|
max=param.max_value,
|
|
86
89
|
step=param.step,
|
|
87
90
|
description=param.name,
|
|
91
|
+
continuous_update=self.continuous,
|
|
88
92
|
layout=widgets.Layout(width="95%"),
|
|
89
93
|
style={"description_width": "initial"},
|
|
90
94
|
)
|
|
@@ -149,6 +153,7 @@ class NotebookDeployment:
|
|
|
149
153
|
max=20,
|
|
150
154
|
step=0.5,
|
|
151
155
|
description="Figure Width",
|
|
156
|
+
continuous_update=True,
|
|
152
157
|
layout=widgets.Layout(width="95%"),
|
|
153
158
|
style={"description_width": "initial"},
|
|
154
159
|
)
|
|
@@ -159,6 +164,7 @@ class NotebookDeployment:
|
|
|
159
164
|
max=15,
|
|
160
165
|
step=0.5,
|
|
161
166
|
description="Figure Height",
|
|
167
|
+
continuous_update=True,
|
|
162
168
|
layout=widgets.Layout(width="95%"),
|
|
163
169
|
style={"description_width": "initial"},
|
|
164
170
|
)
|
|
@@ -168,6 +174,7 @@ class NotebookDeployment:
|
|
|
168
174
|
min=20,
|
|
169
175
|
max=80,
|
|
170
176
|
description="Controls Width %",
|
|
177
|
+
continuous_update=True,
|
|
171
178
|
layout=widgets.Layout(width="95%"),
|
|
172
179
|
style={"description_width": "initial"},
|
|
173
180
|
)
|
syd-0.1.0/syd/__init__.py
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.1.0"
|
|
File without changes
|
{syd-0.1.0 → syd-0.1.2}/LICENSE
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|