yafowil.widget.array 1.8__py3-none-any.whl

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.
@@ -0,0 +1,322 @@
1
+ from node.utils import UNSET
2
+ from yafowil.base import factory
3
+ from yafowil.base import fetch_value
4
+ from yafowil.common import generic_extractor
5
+ from yafowil.common import generic_required_extractor
6
+ from yafowil.compat import ITER_TYPES
7
+ from yafowil.compound import compound_renderer
8
+ from yafowil.utils import attr_value
9
+ from yafowil.utils import css_managed_props
10
+ from yafowil.utils import cssclasses
11
+ from yafowil.utils import cssid
12
+ from yafowil.utils import managedprops
13
+
14
+
15
+ @managedprops(*css_managed_props)
16
+ def array_display_proxy_renderer(widget, data):
17
+ """B/C. Use ``display_proxy`` widget attribute.
18
+ """
19
+ input_attrs = {
20
+ 'type': 'hidden',
21
+ 'value': fetch_value(widget, data),
22
+ 'name_': widget.dottedpath,
23
+ 'id': cssid(widget, 'input'),
24
+ 'class_': cssclasses(widget, data),
25
+ 'required': attr_value('required', widget, data) and 'required' or None
26
+ }
27
+ return data.tag('input', **input_attrs) + data.rendered
28
+
29
+
30
+ factory.register(
31
+ 'array_display_proxy',
32
+ extractors=[generic_extractor],
33
+ edit_renderers=[array_display_proxy_renderer],
34
+ display_renderers=[array_display_proxy_renderer])
35
+
36
+ # do not document internal widget
37
+ factory.doc['blueprint']['array_display_proxy'] = UNSET
38
+
39
+
40
+ ICON_CSS = {
41
+ 'add': 'icon-plus-sign',
42
+ 'remove': 'icon-minus-sign',
43
+ 'up': 'icon-circle-arrow-up',
44
+ 'down': 'icon-circle-arrow-down',
45
+ }
46
+
47
+
48
+ def actions_renderer(widget, data):
49
+ tag = data.tag
50
+ actions = list()
51
+ for key in ['add', 'remove', 'up', 'down']:
52
+ if widget.attrs.get(key):
53
+ class_ = 'array_row_%s' % key
54
+ icon = tag('span', ' ', class_=ICON_CSS[key])
55
+ action = tag('a', icon, href='#', class_=class_)
56
+ actions.append(action)
57
+ kw = dict(class_='array_actions')
58
+ return tag('div', *actions, **kw)
59
+
60
+
61
+ factory.register(
62
+ 'array_actions',
63
+ edit_renderers=[actions_renderer])
64
+
65
+ # do not document internal widget
66
+ factory.doc['blueprint']['array_actions'] = UNSET
67
+
68
+
69
+ def array_builder(widget, factory):
70
+ table = widget['table'] = factory('table', props={
71
+ 'structural': True,
72
+ 'class': widget.attrs['table_class'],
73
+ })
74
+ head = table['head'] = factory('thead', props={
75
+ 'structural': True,
76
+ })
77
+ row = head['row'] = factory('tr', props={
78
+ 'structural': True,
79
+ })
80
+ label = widget.attrs.get('label', u' ')
81
+ if callable(label):
82
+ label = label()
83
+ row['label'] = factory('th', props={
84
+ 'structural': True,
85
+ 'label': label,
86
+ })
87
+ if not widget.attrs['static']:
88
+ props = dict()
89
+ props['structural'] = True
90
+ props['th.class'] = 'head_actions'
91
+ if widget.attrs['add']:
92
+ props['add'] = True
93
+ row['actions'] = factory('th:array_actions', props=props)
94
+ table['body'] = factory('tbody', props={
95
+ 'structural': True,
96
+ })
97
+
98
+
99
+ @managedprops('add', 'remove', 'sort', 'static', 'table_class', *css_managed_props)
100
+ def array_wrapper_renderer(widget, data):
101
+ add_css = ''
102
+ if not widget.attrs['static']:
103
+ for attr in ['add', 'remove', 'sort']:
104
+ if widget.attrs[attr]:
105
+ add_css += ' array-%s' % attr
106
+ else:
107
+ add_css += ' array-static'
108
+ kw = {
109
+ 'id': cssid(widget, 'array'),
110
+ 'class': cssclasses(widget, data) + add_css,
111
+ }
112
+ if 'array' not in kw['class'].split(' '):
113
+ kw['class'] = 'array %s' % kw['class']
114
+ rendered = data.rendered
115
+ return data.tag('div', rendered, **kw)
116
+
117
+
118
+ CONTAINER = 'TEMPLATE_CONTAINER'
119
+ TEMPLATE = 'TEMPLATE'
120
+
121
+
122
+ def array_edit_renderer(widget, data):
123
+ if len(widget) == 1 and CONTAINER not in widget:
124
+ raise Exception(u"Empty array widget defined")
125
+ if CONTAINER not in widget:
126
+ template = widget.detach(widget.keys()[1])
127
+ hook_array_template(widget, template)
128
+ value = fetch_value(widget, data)
129
+ # XXX: reset table body if already filled -> case form in memory.
130
+ if value:
131
+ widget.getter = UNSET
132
+ data.value = UNSET
133
+ template = widget[CONTAINER][TEMPLATE]
134
+ create_array_children(widget, template, value)
135
+ if not widget.attrs['add'] or widget.attrs['static']:
136
+ del widget[CONTAINER]
137
+
138
+
139
+ def create_array_children(widget, template, value):
140
+ if isinstance(value, dict):
141
+ try:
142
+ indices = [int(_) for _ in value.keys()]
143
+ except ValueError as e:
144
+ raise Exception(u"Array value error. %s" % str(e))
145
+ indices = sorted(indices)
146
+ for i in indices:
147
+ create_array_entry(str(i), widget, template, value[str(i)])
148
+ elif type(value) in ITER_TYPES:
149
+ indices = range(len(value))
150
+ for i in indices:
151
+ create_array_entry(str(i), widget, template, value[i])
152
+ else:
153
+ raise ValueError(u"Expected list or dict as value. Got '{}'".format(
154
+ str(type(value)))
155
+ )
156
+
157
+
158
+ def create_array_entry(idx, widget, template, value):
159
+ tbody = widget['table']['body']
160
+ row = tbody['row_%s' % idx] = factory('tr', props={'structural': True})
161
+ props = dict()
162
+ props['structural'] = True
163
+ props['class'] = 'widget'
164
+ widget_col = row['widget_col'] = factory('td', props=props)
165
+ if not widget.attrs['static']:
166
+ props = dict()
167
+ props['structural'] = True
168
+ props['class'] = 'actions'
169
+ actions_col = row['actions_col'] = factory('td', props=props)
170
+ props = dict()
171
+ props['structural'] = True
172
+ if widget.attrs['add']:
173
+ props['add'] = True
174
+ if widget.attrs['remove']:
175
+ props['remove'] = True
176
+ if widget.attrs['sort']:
177
+ props['up'] = True
178
+ props['down'] = True
179
+ actions_col['actions'] = factory('array_actions', props=props)
180
+ child_widget = widget_col[idx] = duplicate_widget(template, value)
181
+ if 'array' in template.blueprints:
182
+ if len(template):
183
+ create_array_entry_children(child_widget, template)
184
+ orgin = template[template.keys()[-1]]
185
+ template = duplicate_recursiv(orgin)
186
+ hook_array_template(child_widget, template)
187
+ # If array in array with compound. Compound template children get
188
+ # hooked to array widget. Remove them.
189
+ for key in child_widget.keys():
190
+ if key not in ['table', CONTAINER]:
191
+ del child_widget[key]
192
+ return
193
+ create_array_entry_children(child_widget, template)
194
+
195
+
196
+ def create_array_entry_children(widget, template):
197
+ for name, child_template in template.items():
198
+ child_widget = widget[name] = duplicate_recursiv(child_template)
199
+ create_array_entry_children(child_widget, child_template)
200
+
201
+
202
+ def hook_array_template(widget, template):
203
+ props = dict()
204
+ props['structural'] = True
205
+ props['class'] = 'arraytemplate'
206
+ container = widget[CONTAINER] = factory('div', props=props)
207
+ if template.attrs.get('structural'):
208
+ raise Exception(
209
+ u"Compound templates for arrays must not be structural.")
210
+ container[TEMPLATE] = template
211
+
212
+
213
+ def duplicate_widget(widget, value=UNSET):
214
+ blueprints = widget.blueprints
215
+ leaf = len(widget) == 0
216
+ # B/C: use display_property widget attribute!
217
+ if leaf and (widget.mode == 'display' or widget.attrs.get('disabled')) \
218
+ and 'array_display_proxy' not in blueprints:
219
+ if not widget.attrs.get('display_proxy'):
220
+ blueprints.insert(0, 'array_display_proxy')
221
+ return factory(
222
+ blueprints,
223
+ value=value,
224
+ props=widget.properties,
225
+ custom=widget.custom,
226
+ mode=widget.mode)
227
+
228
+
229
+ def duplicate_recursiv(widget):
230
+ node = duplicate_widget(widget)
231
+ for k, v in widget.items():
232
+ node[k] = duplicate_recursiv(v)
233
+ return node
234
+
235
+
236
+ def array_extractor(widget, data):
237
+ template = widget[widget.keys()[-1]]
238
+ helper = duplicate_recursiv(template)
239
+ request = data.request
240
+ ret = list()
241
+ index = 0
242
+ while True:
243
+ helper.__parent__ = widget
244
+ helper.__name__ = str(index)
245
+ if not check_base_name_in_request(helper, request):
246
+ break
247
+ entry_data = helper.extract(request, parent=data)
248
+ ret.append(entry_data.extracted)
249
+ data[str(index)] = entry_data
250
+ index += 1
251
+ return ret
252
+
253
+
254
+ def check_base_name_in_request(widget, request):
255
+ basename = widget.dottedpath
256
+ for key in request.keys():
257
+ if key.startswith(basename):
258
+ return True
259
+ return False
260
+
261
+
262
+ def set_display_mode(widget):
263
+ for child in widget.values():
264
+ child.mode = 'display'
265
+ set_display_mode(child)
266
+
267
+
268
+ def array_display_renderer(widget, data):
269
+ array_edit_renderer(widget, data)
270
+ del widget['table']['head']['row']['actions']
271
+ for row in widget['table']['body'].values():
272
+ del row['actions_col']
273
+ del widget[CONTAINER]
274
+ set_display_mode(widget)
275
+
276
+
277
+ factory.register(
278
+ 'array',
279
+ extractors=[array_extractor, generic_required_extractor],
280
+ edit_renderers=[
281
+ array_edit_renderer, compound_renderer, array_wrapper_renderer],
282
+ display_renderers=[array_display_renderer, compound_renderer],
283
+ builders=[array_builder])
284
+
285
+ factory.doc['blueprint']['array'] = """\
286
+ Add-on widget `yafowil.widget.array
287
+ <http://github.com/conestack/yafowil.widget.array/>`_.
288
+ """
289
+
290
+ factory.defaults['array.class'] = 'array'
291
+
292
+ factory.defaults['array.required'] = False
293
+
294
+ factory.defaults['array.error_class'] = 'error'
295
+
296
+ factory.defaults['array.message_class'] = 'errormessage'
297
+
298
+ factory.defaults['array.table_class'] = None
299
+ factory.doc['props']['array.table_class'] = """\
300
+ CSS classes rendered on array table.
301
+ """
302
+
303
+ factory.defaults['array.static'] = False
304
+ factory.doc['props']['array.static'] = """\
305
+ Array is immutable. No Array actions are rendered. If True, ``add``,
306
+ ``remove`` and ``sort`` properties are ignored.
307
+ """
308
+
309
+ factory.defaults['array.add'] = True
310
+ factory.doc['props']['array.add'] = """\
311
+ Render ``add`` action.
312
+ """
313
+
314
+ factory.defaults['array.remove'] = True
315
+ factory.doc['props']['array.remove'] = """\
316
+ Render ``remove`` action.
317
+ """
318
+
319
+ factory.defaults['array.sort'] = True
320
+ factory.doc['props']['array.sort'] = """\
321
+ Render ``move up`` and ``move down`` actions.
322
+ """
@@ -0,0 +1,2 @@
1
+ import sys, types, os;p = os.path.join(sys._getframe(1).f_locals['sitedir'], *('yafowil',));importlib = __import__('importlib.util');__import__('importlib.machinery');m = sys.modules.setdefault('yafowil', importlib.util.module_from_spec(importlib.machinery.PathFinder.find_spec('yafowil', [os.path.dirname(p)])));m = m or sys.modules.setdefault('yafowil', types.ModuleType('yafowil'));mp = (m or []) and m.__dict__.setdefault('__path__',[]);(p not in mp) and mp.append(p)
2
+ import sys, types, os;p = os.path.join(sys._getframe(1).f_locals['sitedir'], *('yafowil', 'widget'));importlib = __import__('importlib.util');__import__('importlib.machinery');m = sys.modules.setdefault('yafowil.widget', importlib.util.module_from_spec(importlib.machinery.PathFinder.find_spec('yafowil.widget', [os.path.dirname(p)])));m = m or sys.modules.setdefault('yafowil.widget', types.ModuleType('yafowil.widget'));mp = (m or []) and m.__dict__.setdefault('__path__',[]);(p not in mp) and mp.append(p);m and setattr(sys.modules['yafowil'], 'widget', m)
@@ -0,0 +1,223 @@
1
+ Metadata-Version: 2.4
2
+ Name: yafowil.widget.array
3
+ Version: 1.8
4
+ Summary: Array Widget for YAFOWIL
5
+ Home-page: http://github.com/conestack/yafowil.widget.array
6
+ Author: Yafowil Contributors
7
+ Author-email: dev@conestack.org
8
+ License: Simplified BSD
9
+ Classifier: Environment :: Web Environment
10
+ Classifier: Operating System :: OS Independent
11
+ Classifier: Programming Language :: Python
12
+ Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
13
+ Classifier: License :: OSI Approved :: BSD License
14
+ Classifier: Programming Language :: Python :: 2.7
15
+ Classifier: Programming Language :: Python :: 3.5
16
+ Classifier: Programming Language :: Python :: 3.6
17
+ Classifier: Programming Language :: Python :: 3.7
18
+ License-File: LICENSE.rst
19
+ Requires-Dist: setuptools
20
+ Requires-Dist: yafowil<4.0.0,>2.1.99
21
+ Provides-Extra: test
22
+ Requires-Dist: yafowil[test]; extra == "test"
23
+ Dynamic: author
24
+ Dynamic: author-email
25
+ Dynamic: classifier
26
+ Dynamic: description
27
+ Dynamic: home-page
28
+ Dynamic: keywords
29
+ Dynamic: license
30
+ Dynamic: license-file
31
+ Dynamic: provides-extra
32
+ Dynamic: requires-dist
33
+ Dynamic: summary
34
+
35
+ This is an **array widget** for for `YAFOWIL
36
+ <http://pypi.python.org/pypi/yafowil>`_ .
37
+
38
+ - `Documentation <http://docs.yafowil.info/en/latest/blueprints.html#array>`_
39
+ - `DEMO - see it Live <http://demo.yafowil.info/++widget++yafowil.widget.array/index.html>`_
40
+
41
+ Source Code
42
+ ===========
43
+
44
+ The sources are in a GIT DVCS with its main branches at
45
+ `github <http://github.com/conestack/yafowil.widget.array>`_.
46
+
47
+ We'd be happy to see many forks and pull-requests to make YAFOWIL even better.
48
+
49
+
50
+ Contributors
51
+ ============
52
+
53
+ - Robert Niederreiter
54
+
55
+ - Georg Bernhard
56
+
57
+
58
+
59
+ Changes
60
+ =======
61
+
62
+ 1.8 (2025-11-03)
63
+ ----------------
64
+
65
+ - Pin upper versions of dependencies.
66
+ [lenadax]
67
+
68
+
69
+ 1.7 (2022-10-06)
70
+ ----------------
71
+
72
+ - Introduce new method ``set_value_index`` to allow correct custom indexing
73
+ in index hooks.
74
+ [lenadax]
75
+
76
+
77
+ 1.6.1 (2019-11-20)
78
+ ------------------
79
+
80
+ - Use ``bdajax.register`` for registering binder function.
81
+ [rnix]
82
+
83
+
84
+ 1.6 (2019-07-31)
85
+ ----------------
86
+
87
+ - Add additional JS hooks when array gets modified. Provided hooks are now
88
+ ``before_add``, ``add``, ``remove``, ``before_up``, ``up``, ``before_down``,
89
+ ``down`` and ``index``.
90
+ [rnix]
91
+
92
+ - Add ``array_display_renderer``.
93
+ [rnix]
94
+
95
+
96
+ 1.5 (2018-07-16)
97
+ ----------------
98
+
99
+ - Python 3 compatibility.
100
+ [rnix]
101
+
102
+ - Convert doctests to unittests.
103
+ [rnix]
104
+
105
+
106
+ 1.4 (2016-09-09)
107
+ ----------------
108
+
109
+ - Add dedicated CSS for ``plone5`` theme provided by ``yafowil.plone``.
110
+ [rnix, 2016-06-28]
111
+
112
+ - Use ``yafowil.utils.entry_point`` decorator.
113
+ [rnix, 2016-06-27]
114
+
115
+ - Minor bootstrap theme CSS changes.
116
+ [rnix, 2016-06-27]
117
+
118
+
119
+ 1.3.1 (2015-06-25)
120
+ ------------------
121
+
122
+ - Resolve JSHint errors and warnings.
123
+ [thet]
124
+
125
+ - Fix CSS for displaying icons in default theme.
126
+ [marfago]
127
+
128
+
129
+ 1.3 (2015-01-23)
130
+ ----------------
131
+
132
+ - Fix ``mark_disabled`` function.
133
+ [rnix]
134
+
135
+ - Adopt to ``yafowil.bootstrap`` 1.2.
136
+ [rnix]
137
+
138
+
139
+ 1.2.1
140
+ -----
141
+
142
+ - Do not hook ``array_display_proxy`` if ``display_proxy`` proerty set on
143
+ widget attributes.
144
+ [rnix, 2012-10-26]
145
+
146
+ - Use ``yafowil.utils.attr_value`` wherever possible.
147
+ [rnix, 2012-10-25]
148
+
149
+
150
+ 1.2
151
+ ---
152
+
153
+ - Add ``array`` CSS class to array wrapper DOM element if not present (may
154
+ happen if ``class`` property for array blueprint gets overwritten). Javascript
155
+ depends on this CSS class.
156
+ [rnix, 2012-07-25]
157
+
158
+ - Adopt resource providing.
159
+ [rnix, 2012-06-12]
160
+
161
+ - Remove example app.
162
+ [rnix, 2012-06-12]
163
+
164
+
165
+ 1.1
166
+ ---
167
+
168
+ - pass parent to array extractor explicit extract call (as compound extractor
169
+ does).
170
+ [jensens, 2012-05-20]
171
+
172
+ - Handle ``required`` property in ``array`` blueprint.
173
+ [rnix, 2012-04-19]
174
+
175
+ - Handle ``display`` mode and ``disabled`` property for leaf array children.
176
+ [rnix, 2012-04-17]
177
+
178
+ - Introduce ``add``, ``remove``, ``sort`` and ``static`` properties for
179
+ ``array`` blueprint.
180
+ [rnix, 2012-04-13]
181
+
182
+
183
+ 1.0
184
+ ---
185
+
186
+ - Implement yafowil 1.3 entry_point registration
187
+ [agitator, 2012-02-15]
188
+
189
+
190
+ 0.9
191
+ ---
192
+
193
+ - Make it work
194
+ [rnix]
195
+
196
+
197
+ License
198
+ =======
199
+
200
+ Copyright (c) 2011-2021, BlueDynamics Alliance, Austria, Germany, Switzerland
201
+ Copyright (c) 2021, Yafowil Contributors
202
+ All rights reserved.
203
+
204
+ Redistribution and use in source and binary forms, with or without
205
+ modification, are permitted provided that the following conditions are met:
206
+
207
+ * Redistributions of source code must retain the above copyright notice, this
208
+ list of conditions and the following disclaimer.
209
+
210
+ * Redistributions in binary form must reproduce the above copyright notice, this
211
+ list of conditions and the following disclaimer in the documentation and/or
212
+ other materials provided with the distribution.
213
+
214
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
215
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
216
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
217
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
218
+ ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
219
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
220
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
221
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
222
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
223
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -0,0 +1,22 @@
1
+ yafowil.widget.array-1.8-py3.9-nspkg.pth,sha256=qMztS1qcT3Izik2RG40diPoBu5UBjZngpO4B5vlyj2I,1032
2
+ yafowil/widget/array/__init__.py,sha256=hO9YCYbzR8ZUSP1oEpwbh7QhaxEE7jylz_AHspzoTcQ,1083
3
+ yafowil/widget/array/example.py,sha256=i8GE_NLrzgDSna8lc9GejjsWvXE3iXmjMbY5xWqkxXU,11140
4
+ yafowil/widget/array/tests.py,sha256=XfoJwzJ7ZSnCEgDq5bNmsVgfF708sue1dJ_UcJQbBPc,80343
5
+ yafowil/widget/array/widget.py,sha256=P1n5y7n4u-IFP5GSw1flqSqrG-cpn2kmr2hsTRZtmfc,10140
6
+ yafowil/widget/array/resources/widget.js,sha256=isIzXGbS2MYwvOnT6dgwPHmjkF9dOB01G4-2-j0sH1E,9077
7
+ yafowil/widget/array/resources/bootstrap/widget.css,sha256=Fw6rm-3i4TKnuWXRCdo4Xd3H5JMN8RTkPLjD6jkVqZ4,1220
8
+ yafowil/widget/array/resources/default/widget.css,sha256=xm-3umhsuCvMm4xh5oXwEFKSQ85G4rQdCESZRixQtz8,1517
9
+ yafowil/widget/array/resources/default/images/icon_add.png,sha256=fMDUpDyadrUFZKi1tmg8MewGlNtE7i95Z29F1f_lkWU,403
10
+ yafowil/widget/array/resources/default/images/icon_down.png,sha256=lZaOHin1R-mRJDIgogM3Xa-Ky4fjyyGKucENmCzQIQE,584
11
+ yafowil/widget/array/resources/default/images/icon_down_disabled.png,sha256=r9rzJce1ZcBN4uTxd18uu4u5RFqApQ9p7Pb7WAj3ajI,392
12
+ yafowil/widget/array/resources/default/images/icon_remove.png,sha256=SRk6RKB2VXAYmigvv0EY9V6ENeRfjM0aNw58ab-1wcI,221
13
+ yafowil/widget/array/resources/default/images/icon_up.png,sha256=Fh7PTO6ZQ0tpb0rQ3HkHaUS-jIfyY34m0JLT5AEVPPw,560
14
+ yafowil/widget/array/resources/default/images/icon_up_disabled.png,sha256=-MonqfrQOPIv1u9x0GMbU4UgCrjZ3mh-OKQUv2WjjZ8,382
15
+ yafowil/widget/array/resources/plone5/widget.css,sha256=SQ8Ki7FQheSgVGAYu-7QXzkaXZCKFAoBn1fKUIFwsoc,1844
16
+ yafowil_widget_array-1.8.dist-info/licenses/LICENSE.rst,sha256=0RcIqnPSfN6KON2zqF5A77ty2P5WP15UGmOS7G3NsdA,1398
17
+ yafowil_widget_array-1.8.dist-info/METADATA,sha256=gG2zMGAzYV04-6ry-jlzItVDo3AFaM5wFK-lKDcA4n0,5346
18
+ yafowil_widget_array-1.8.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
19
+ yafowil_widget_array-1.8.dist-info/entry_points.txt,sha256=7dISa7epdwrzzAMjYpE4TgHTd5398sa7VxVnL2AmYFo,109
20
+ yafowil_widget_array-1.8.dist-info/namespace_packages.txt,sha256=oTPEdRfMCGNcZRcF2Y0ULt8JBOUbIGRQHpcQ3vb_vXQ,23
21
+ yafowil_widget_array-1.8.dist-info/top_level.txt,sha256=cJz5CZEzEKmMv88hkEh5t8fW1bRvd7Dv6VZ7l6RpqUA,8
22
+ yafowil_widget_array-1.8.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (80.9.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,3 @@
1
+ [yafowil.plugin]
2
+ example = yafowil.widget.array.example:get_example
3
+ register = yafowil.widget.array:register
@@ -0,0 +1,27 @@
1
+ License
2
+ =======
3
+
4
+ Copyright (c) 2011-2021, BlueDynamics Alliance, Austria, Germany, Switzerland
5
+ Copyright (c) 2021, Yafowil Contributors
6
+ All rights reserved.
7
+
8
+ Redistribution and use in source and binary forms, with or without
9
+ modification, are permitted provided that the following conditions are met:
10
+
11
+ * Redistributions of source code must retain the above copyright notice, this
12
+ list of conditions and the following disclaimer.
13
+
14
+ * Redistributions in binary form must reproduce the above copyright notice, this
15
+ list of conditions and the following disclaimer in the documentation and/or
16
+ other materials provided with the distribution.
17
+
18
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
19
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
20
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
22
+ ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
24
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
25
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
27
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -0,0 +1,2 @@
1
+ yafowil
2
+ yafowil.widget
@@ -0,0 +1 @@
1
+ yafowil