Skip to content

Commit 96c50f5

Browse files
committed
ENH: being permissive in passing data was a bad idea
Introduce "expected keys"
1 parent 4e9276d commit 96c50f5

File tree

1 file changed

+18
-12
lines changed

1 file changed

+18
-12
lines changed

data_prototype/wrappers.py

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,15 @@ class _Aritst(Protocol):
4747
axes: _Axes
4848

4949

50+
def _make_identity(k):
51+
def identity(**kwargs):
52+
(_,) = kwargs.values()
53+
return _
54+
55+
identity.__signature__ = inspect.Signature([inspect.Parameter(k, inspect.Parameter.POSITIONAL_OR_KEYWORD)])
56+
return identity
57+
58+
5059
def _forwarder(forwards, cls=None):
5160
if cls is None:
5261
return partial(_forwarder, forwards)
@@ -90,6 +99,7 @@ class ProxyWrapperBase:
9099
axes: _Axes
91100
stale: bool
92101
required_keys: set = set()
102+
expected_keys: set = set()
93103

94104
@_stale_wrapper
95105
def draw(self, renderer):
@@ -143,8 +153,6 @@ def _query_and_transform(self, renderer, *, xunits: List[str], yunits: List[str]
143153
for k, (nu, sig) in self._sigs.items():
144154
to_pass = set(sig.parameters)
145155
transformed_data[k] = nu(**{k: data[k] for k in to_pass})
146-
for k, v in data.items():
147-
transformed_data.setdefault(k, v)
148156

149157
self._cache[cache_key] = transformed_data
150158
return transformed_data
@@ -156,16 +164,11 @@ def __init__(self, data, nus, **kwargs):
156164
# TODO make sure mutating this will invalidate the cache!
157165
self._nus = nus or {}
158166
for k in self.required_keys:
159-
160-
def identity(**kwargs):
161-
(_,) = kwargs.values()
162-
return _
163-
164-
identity.__signature__ = inspect.Signature(
165-
[inspect.Parameter(k, inspect.Parameter.POSITIONAL_OR_KEYWORD)]
166-
)
167-
168-
self._nus.setdefault(k, identity)
167+
self._nus.setdefault(k, _make_identity(k))
168+
desc = data.describe()
169+
for k in self.expected_keys:
170+
if k in desc:
171+
self._nus.setdefault(k, _make_identity(k))
169172
self._sigs = {k: (nu, inspect.signature(nu)) for k, nu in self._nus.items()}
170173
self.stale = True
171174

@@ -325,6 +328,9 @@ def get_children(self):
325328

326329

327330
class ErrorbarWrapper(MultiProxyWrapper):
331+
required_keys = {"x", "y"}
332+
expected_keys = {f"{axis}{dirc}" for axis in ["x", "y"] for dirc in ["upper", "lower"]}
333+
328334
def __init__(self, data: DataContainer, nus=None, /, **kwargs):
329335
super().__init__(data, nus)
330336
# TODO all of the kwarg teasing apart that is needed

0 commit comments

Comments
 (0)