ipyprogressivis 0.3.0__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.
- ipyprogressivis-0.3.0/.gitignore +15 -0
- ipyprogressivis-0.3.0/LICENSE +24 -0
- ipyprogressivis-0.3.0/PKG-INFO +123 -0
- ipyprogressivis-0.3.0/README.md +60 -0
- ipyprogressivis-0.3.0/ipyprogressivis/MANIFEST.in +2 -0
- ipyprogressivis-0.3.0/ipyprogressivis/__init__.py +90 -0
- ipyprogressivis-0.3.0/ipyprogressivis/_frontend.py +5 -0
- ipyprogressivis-0.3.0/ipyprogressivis/_version.py +21 -0
- ipyprogressivis-0.3.0/ipyprogressivis/app.py +26 -0
- ipyprogressivis-0.3.0/ipyprogressivis/hook_tools.py +40 -0
- ipyprogressivis-0.3.0/ipyprogressivis/install.json +5 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/.babelrc +3 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/.eslintrc.js +32 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/README.md +11 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/css/main.css +255 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/css/module-graph.css +62 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/css/scatterplot.css +5 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/css/sparkline-progressbar.css +14 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/lib/.gitkeep +0 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/lib/backup.js +41 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/lib/base.js +7 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/lib/cell_out.js +16 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/lib/colormaps.js +90 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/lib/commands.js +229 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/lib/config-editor.js +379 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/lib/dag_widget.js +597 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/lib/data_table.js +86 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/lib/embed.js +33 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/lib/es6-element-ready.js +30 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/lib/extension.js +26 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/lib/functions.js +171 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/lib/history.js +45 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/lib/index.js +50 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/lib/json_editor.js +67 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/lib/json_html.js +131 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/lib/labplugin.js +240 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/lib/line_graph.js +14 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/lib/module_graph.js +281 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/lib/previmages.js +283 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/lib/scatterplot.js +614 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/lib/sensitive_html.js +82 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/lib/sparkline_progressbar.js +93 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/lib/talker.js +15 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/package.json +92 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/schema/plugin.json +23 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/src/backup.js +41 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/src/base.js +7 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/src/cell_out.js +16 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/src/colormaps.js +90 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/src/commands.js +229 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/src/config-editor.jsx +508 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/src/dag_widget.js +597 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/src/data_table.js +86 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/src/embed.js +33 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/src/es6-element-ready.js +30 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/src/extension.js +26 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/src/functions.js +171 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/src/history.js +45 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/src/index.js +50 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/src/json_editor.js +67 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/src/json_html.js +131 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/src/labplugin.js +240 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/src/line_graph.js +14 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/src/module_graph.js +281 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/src/previmages.js +283 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/src/scatterplot.js +614 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/src/sensitive_html.js +82 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/src/sparkline_progressbar.js +93 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/src/talker.js +15 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/webpack.config.js +75 -0
- ipyprogressivis-0.3.0/ipyprogressivis/js/yarn.lock +8999 -0
- ipyprogressivis-0.3.0/ipyprogressivis/jupyter-progressivis.json +5 -0
- ipyprogressivis-0.3.0/ipyprogressivis/labextension/package.json +96 -0
- ipyprogressivis-0.3.0/ipyprogressivis/labextension/schemas/jupyter-progressivis/package.json.orig +92 -0
- ipyprogressivis-0.3.0/ipyprogressivis/labextension/schemas/jupyter-progressivis/plugin.json +23 -0
- ipyprogressivis-0.3.0/ipyprogressivis/labextension/static/109.fdb337af58f32cc5c0bf.js +1 -0
- ipyprogressivis-0.3.0/ipyprogressivis/labextension/static/21.2f7611abef2e526e5d25.js +1 -0
- ipyprogressivis-0.3.0/ipyprogressivis/labextension/static/351.13fdfc67a28ce291e15c.js +1 -0
- ipyprogressivis-0.3.0/ipyprogressivis/labextension/static/399.2fb2e0ef5e19374c394d.js +1 -0
- ipyprogressivis-0.3.0/ipyprogressivis/labextension/static/3e016c23ae51417382b6.png +0 -0
- ipyprogressivis-0.3.0/ipyprogressivis/labextension/static/430.8691ad47b5b333eaf92e.js +1 -0
- ipyprogressivis-0.3.0/ipyprogressivis/labextension/static/485.f46a28dfd0f0485c926b.js +2 -0
- ipyprogressivis-0.3.0/ipyprogressivis/labextension/static/485.f46a28dfd0f0485c926b.js.LICENSE.txt +40 -0
- ipyprogressivis-0.3.0/ipyprogressivis/labextension/static/487.de4fc3bdb03a240e600e.js +2 -0
- ipyprogressivis-0.3.0/ipyprogressivis/labextension/static/487.de4fc3bdb03a240e600e.js.LICENSE.txt +56 -0
- ipyprogressivis-0.3.0/ipyprogressivis/labextension/static/490.4b694e6eb1a4b76bab0e.js +1 -0
- ipyprogressivis-0.3.0/ipyprogressivis/labextension/static/536.e1da47be8a798fbfa612.js +1 -0
- ipyprogressivis-0.3.0/ipyprogressivis/labextension/static/537.c242693371e0a2a4418f.js +1 -0
- ipyprogressivis-0.3.0/ipyprogressivis/labextension/static/570.4a28e1035792dd27a4ea.js +1 -0
- ipyprogressivis-0.3.0/ipyprogressivis/labextension/static/595704c3f3cf4cb65c7d.png +0 -0
- ipyprogressivis-0.3.0/ipyprogressivis/labextension/static/606.14263bc2140db2a71660.js +1 -0
- ipyprogressivis-0.3.0/ipyprogressivis/labextension/static/655.93533cbefba4bc78138e.js +2 -0
- ipyprogressivis-0.3.0/ipyprogressivis/labextension/static/655.93533cbefba4bc78138e.js.LICENSE.txt +6 -0
- ipyprogressivis-0.3.0/ipyprogressivis/labextension/static/692.e1f51926b03c4334a23a.js +2 -0
- ipyprogressivis-0.3.0/ipyprogressivis/labextension/static/692.e1f51926b03c4334a23a.js.LICENSE.txt +10 -0
- ipyprogressivis-0.3.0/ipyprogressivis/labextension/static/6c0f0c1b21ef6807057a.png +0 -0
- ipyprogressivis-0.3.0/ipyprogressivis/labextension/static/75.4eb0fb006a734cee8d78.js +1 -0
- ipyprogressivis-0.3.0/ipyprogressivis/labextension/static/799.ce5122a27c6ec79d5e1b.js +1 -0
- ipyprogressivis-0.3.0/ipyprogressivis/labextension/static/848.c2819c28140c718734a4.js +1 -0
- ipyprogressivis-0.3.0/ipyprogressivis/labextension/static/851.5a3f1d88c044d87ec93c.js +2 -0
- ipyprogressivis-0.3.0/ipyprogressivis/labextension/static/851.5a3f1d88c044d87ec93c.js.LICENSE.txt +1 -0
- ipyprogressivis-0.3.0/ipyprogressivis/labextension/static/866.605bea37963b6714cbd4.js +2 -0
- ipyprogressivis-0.3.0/ipyprogressivis/labextension/static/866.605bea37963b6714cbd4.js.LICENSE.txt +3 -0
- ipyprogressivis-0.3.0/ipyprogressivis/labextension/static/884.cb97bef4833378bc3da6.js +1 -0
- ipyprogressivis-0.3.0/ipyprogressivis/labextension/static/894.c5db3fc7747087e1cf73.js +1 -0
- ipyprogressivis-0.3.0/ipyprogressivis/labextension/static/997.f1ae8549e63cc94a6613.js +1 -0
- ipyprogressivis-0.3.0/ipyprogressivis/labextension/static/a65b8f4f84d6427a81c3.png +0 -0
- ipyprogressivis-0.3.0/ipyprogressivis/labextension/static/d08ed0e21f187dd30903.png +0 -0
- ipyprogressivis-0.3.0/ipyprogressivis/labextension/static/remoteEntry.85baa5335dfd6424eabe.js +1 -0
- ipyprogressivis-0.3.0/ipyprogressivis/labextension/static/style.js +4 -0
- ipyprogressivis-0.3.0/ipyprogressivis/labextension/static/third-party-licenses.json +856 -0
- ipyprogressivis-0.3.0/ipyprogressivis/magics.py +86 -0
- ipyprogressivis-0.3.0/ipyprogressivis/nbextension/07c018ae0160704a329067ec7fbdc614.png +0 -0
- ipyprogressivis-0.3.0/ipyprogressivis/nbextension/27ac5d1bc294b1fae0564fe461a6304d.png +0 -0
- ipyprogressivis-0.3.0/ipyprogressivis/nbextension/4bba59196d7ce26196967adefd7c5c3f.png +0 -0
- ipyprogressivis-0.3.0/ipyprogressivis/nbextension/70877b002e38b1438b21.png +1 -0
- ipyprogressivis-0.3.0/ipyprogressivis/nbextension/76d72a9c9134274cfceb.png +1 -0
- ipyprogressivis-0.3.0/ipyprogressivis/nbextension/8b117faa9d4dd934d6bbbd9f0cdb2459.png +0 -0
- ipyprogressivis-0.3.0/ipyprogressivis/nbextension/8debc83844d7e6a561da.png +1 -0
- ipyprogressivis-0.3.0/ipyprogressivis/nbextension/a960f4c060ed06b0adf5.png +1 -0
- ipyprogressivis-0.3.0/ipyprogressivis/nbextension/b58dcb5732c21a44cbc8.png +1 -0
- ipyprogressivis-0.3.0/ipyprogressivis/nbextension/c4196d3286cc33244c83af3398675a6a.png +0 -0
- ipyprogressivis-0.3.0/ipyprogressivis/nbextension/extension.js +1 -0
- ipyprogressivis-0.3.0/ipyprogressivis/nbextension/index.js +3 -0
- ipyprogressivis-0.3.0/ipyprogressivis/nbextension/index.js.LICENSE.txt +153 -0
- ipyprogressivis-0.3.0/ipyprogressivis/nbextension/index.js.map +1 -0
- ipyprogressivis-0.3.0/ipyprogressivis/notebook_templates/ProgressiBook.ipynb +123 -0
- ipyprogressivis-0.3.0/ipyprogressivis/pre_save.py +59 -0
- ipyprogressivis-0.3.0/ipyprogressivis/pre_save_md.py +57 -0
- ipyprogressivis-0.3.0/ipyprogressivis/pre_save_x.py +96 -0
- ipyprogressivis-0.3.0/ipyprogressivis/py.typed +0 -0
- ipyprogressivis-0.3.0/ipyprogressivis/resources/snapshot_marker.png +0 -0
- ipyprogressivis-0.3.0/ipyprogressivis/widgets/__init__.py +14 -0
- ipyprogressivis-0.3.0/ipyprogressivis/widgets/_bar_schema.py +11 -0
- ipyprogressivis-0.3.0/ipyprogressivis/widgets/_corr_schema.py +36 -0
- ipyprogressivis-0.3.0/ipyprogressivis/widgets/_hist1d_schema.py +63 -0
- ipyprogressivis-0.3.0/ipyprogressivis/widgets/_hist2d_schema.py +19 -0
- ipyprogressivis-0.3.0/ipyprogressivis/widgets/_stacked_hist_schema.py +87 -0
- ipyprogressivis-0.3.0/ipyprogressivis/widgets/backup.py +36 -0
- ipyprogressivis-0.3.0/ipyprogressivis/widgets/cell_out.py +35 -0
- ipyprogressivis-0.3.0/ipyprogressivis/widgets/chaining/__init__.py +37 -0
- ipyprogressivis-0.3.0/ipyprogressivis/widgets/chaining/_js.py +110 -0
- ipyprogressivis-0.3.0/ipyprogressivis/widgets/chaining/_multi_series.py +48 -0
- ipyprogressivis-0.3.0/ipyprogressivis/widgets/chaining/aggregate.py +123 -0
- ipyprogressivis-0.3.0/ipyprogressivis/widgets/chaining/any_vega.py +295 -0
- ipyprogressivis-0.3.0/ipyprogressivis/widgets/chaining/columns.py +429 -0
- ipyprogressivis-0.3.0/ipyprogressivis/widgets/chaining/constructor.py +271 -0
- ipyprogressivis-0.3.0/ipyprogressivis/widgets/chaining/csv_loader.py +392 -0
- ipyprogressivis-0.3.0/ipyprogressivis/widgets/chaining/custom.py +23 -0
- ipyprogressivis-0.3.0/ipyprogressivis/widgets/chaining/desc_stats.py +882 -0
- ipyprogressivis-0.3.0/ipyprogressivis/widgets/chaining/dump_table.py +42 -0
- ipyprogressivis-0.3.0/ipyprogressivis/widgets/chaining/facade_creator.py +689 -0
- ipyprogressivis-0.3.0/ipyprogressivis/widgets/chaining/group_by.py +157 -0
- ipyprogressivis-0.3.0/ipyprogressivis/widgets/chaining/heatmap.py +223 -0
- ipyprogressivis-0.3.0/ipyprogressivis/widgets/chaining/histogram.py +121 -0
- ipyprogressivis-0.3.0/ipyprogressivis/widgets/chaining/iscaler.py +329 -0
- ipyprogressivis-0.3.0/ipyprogressivis/widgets/chaining/join.py +311 -0
- ipyprogressivis-0.3.0/ipyprogressivis/widgets/chaining/loaders.py +36 -0
- ipyprogressivis-0.3.0/ipyprogressivis/widgets/chaining/multi_series.py +125 -0
- ipyprogressivis-0.3.0/ipyprogressivis/widgets/chaining/parquet_loader.py +409 -0
- ipyprogressivis-0.3.0/ipyprogressivis/widgets/chaining/quantiles.py +84 -0
- ipyprogressivis-0.3.0/ipyprogressivis/widgets/chaining/range_query_2d.py +271 -0
- ipyprogressivis-0.3.0/ipyprogressivis/widgets/chaining/scatterplot.py +104 -0
- ipyprogressivis-0.3.0/ipyprogressivis/widgets/chaining/snippet.py +135 -0
- ipyprogressivis-0.3.0/ipyprogressivis/widgets/chaining/utils.py +1487 -0
- ipyprogressivis-0.3.0/ipyprogressivis/widgets/control_panel.py +81 -0
- ipyprogressivis-0.3.0/ipyprogressivis/widgets/csv_sniffer.py +696 -0
- ipyprogressivis-0.3.0/ipyprogressivis/widgets/dag_widget.py +202 -0
- ipyprogressivis-0.3.0/ipyprogressivis/widgets/data_table.py +31 -0
- ipyprogressivis-0.3.0/ipyprogressivis/widgets/df_grid.py +66 -0
- ipyprogressivis-0.3.0/ipyprogressivis/widgets/iscaler.py +225 -0
- ipyprogressivis-0.3.0/ipyprogressivis/widgets/json_editor.py +28 -0
- ipyprogressivis-0.3.0/ipyprogressivis/widgets/json_html.py +30 -0
- ipyprogressivis-0.3.0/ipyprogressivis/widgets/module_graph.py +29 -0
- ipyprogressivis-0.3.0/ipyprogressivis/widgets/module_wg.py +95 -0
- ipyprogressivis-0.3.0/ipyprogressivis/widgets/plotting_progressbar.py +29 -0
- ipyprogressivis-0.3.0/ipyprogressivis/widgets/previmages.py +39 -0
- ipyprogressivis-0.3.0/ipyprogressivis/widgets/psboard.py +223 -0
- ipyprogressivis-0.3.0/ipyprogressivis/widgets/scatterplot.py +113 -0
- ipyprogressivis-0.3.0/ipyprogressivis/widgets/sensitive_html.py +32 -0
- ipyprogressivis-0.3.0/ipyprogressivis/widgets/slot_wg.py +78 -0
- ipyprogressivis-0.3.0/ipyprogressivis/widgets/sparkline_progressbar.py +35 -0
- ipyprogressivis-0.3.0/ipyprogressivis/widgets/talker.py +34 -0
- ipyprogressivis-0.3.0/ipyprogressivis/widgets/utils.py +93 -0
- ipyprogressivis-0.3.0/ipyprogressivis/widgets/vega.py +17 -0
- ipyprogressivis-0.3.0/pyproject.toml +190 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
Copyright (c) 2017, Jean-Daniel Fekete
|
|
2
|
+
All rights reserved.
|
|
3
|
+
|
|
4
|
+
Redistribution and use in source and binary forms, with or without
|
|
5
|
+
modification, are permitted provided that the following conditions are met:
|
|
6
|
+
|
|
7
|
+
* Redistributions of source code must retain the above copyright notice, this
|
|
8
|
+
list of conditions and the following disclaimer.
|
|
9
|
+
|
|
10
|
+
* Redistributions in binary form must reproduce the above copyright notice,
|
|
11
|
+
this list of conditions and the following disclaimer in the documentation
|
|
12
|
+
and/or other materials provided with the distribution.
|
|
13
|
+
|
|
14
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
15
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
16
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
17
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
18
|
+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
19
|
+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
20
|
+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
21
|
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
22
|
+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
23
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
24
|
+
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: ipyprogressivis
|
|
3
|
+
Version: 0.3.0
|
|
4
|
+
Summary: A Custom Jupyter Widget Library for Progressivis
|
|
5
|
+
Project-URL: Homepage, https://github.com/progressivis/ipyprogressivis
|
|
6
|
+
Author-email: "INRIA, Jean-Daniel Fekete, Christian Poli" <jean-daniel.fekete@inria.fr>
|
|
7
|
+
License-Expression: BSD-2-Clause
|
|
8
|
+
License-File: LICENSE
|
|
9
|
+
Keywords: IPython,Jupyter,Widgets
|
|
10
|
+
Classifier: Framework :: Jupyter
|
|
11
|
+
Classifier: Framework :: Jupyter :: JupyterLab
|
|
12
|
+
Classifier: Framework :: Jupyter :: JupyterLab :: 4
|
|
13
|
+
Classifier: Framework :: Jupyter :: JupyterLab :: Extensions
|
|
14
|
+
Classifier: Framework :: Jupyter :: JupyterLab :: Extensions :: Prebuilt
|
|
15
|
+
Classifier: Intended Audience :: Developers
|
|
16
|
+
Classifier: Intended Audience :: Science/Research
|
|
17
|
+
Classifier: License :: OSI Approved :: BSD License
|
|
18
|
+
Classifier: Programming Language :: Python
|
|
19
|
+
Classifier: Programming Language :: Python :: 3
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
24
|
+
Requires-Python: >=3.10
|
|
25
|
+
Requires-Dist: ipydatawidgets
|
|
26
|
+
Requires-Dist: ipywidgets<9,>=7.6
|
|
27
|
+
Requires-Dist: jupyter-client>=8.6.0
|
|
28
|
+
Requires-Dist: lz4
|
|
29
|
+
Requires-Dist: numpy>=1.26.4
|
|
30
|
+
Requires-Dist: pandas<3.0.0,>=1.0.0
|
|
31
|
+
Requires-Dist: pillow
|
|
32
|
+
Requires-Dist: sidecar>=0.7.0
|
|
33
|
+
Requires-Dist: traitlets>=4.3.0
|
|
34
|
+
Requires-Dist: traittypes>=0.0.6
|
|
35
|
+
Requires-Dist: vega>=4.0.0
|
|
36
|
+
Provides-Extra: dev
|
|
37
|
+
Requires-Dist: jupyterlab>=4.0.0; extra == 'dev'
|
|
38
|
+
Provides-Extra: progressivis
|
|
39
|
+
Requires-Dist: progressivis; extra == 'progressivis'
|
|
40
|
+
Provides-Extra: test
|
|
41
|
+
Requires-Dist: nbval; extra == 'test'
|
|
42
|
+
Requires-Dist: pytest-cov; extra == 'test'
|
|
43
|
+
Requires-Dist: pytest>=6.0; extra == 'test'
|
|
44
|
+
Provides-Extra: typing
|
|
45
|
+
Requires-Dist: duckdb; extra == 'typing'
|
|
46
|
+
Requires-Dist: ipython; extra == 'typing'
|
|
47
|
+
Requires-Dist: jinja2; extra == 'typing'
|
|
48
|
+
Requires-Dist: mypy>=1.0.1; extra == 'typing'
|
|
49
|
+
Requires-Dist: numpy; extra == 'typing'
|
|
50
|
+
Requires-Dist: pandas-stubs; extra == 'typing'
|
|
51
|
+
Requires-Dist: sqlalchemy-stubs; extra == 'typing'
|
|
52
|
+
Requires-Dist: traits-stubs; extra == 'typing'
|
|
53
|
+
Requires-Dist: traittypes; extra == 'typing'
|
|
54
|
+
Requires-Dist: typeguard; extra == 'typing'
|
|
55
|
+
Requires-Dist: types-pillow; extra == 'typing'
|
|
56
|
+
Requires-Dist: types-pytz; extra == 'typing'
|
|
57
|
+
Requires-Dist: types-pyyaml; extra == 'typing'
|
|
58
|
+
Requires-Dist: types-requests; extra == 'typing'
|
|
59
|
+
Requires-Dist: types-setuptools; extra == 'typing'
|
|
60
|
+
Requires-Dist: types-urllib3; extra == 'typing'
|
|
61
|
+
Requires-Dist: typing-extensions; extra == 'typing'
|
|
62
|
+
Description-Content-Type: text/markdown
|
|
63
|
+
|
|
64
|
+
# IpyProgressiVis: A Custom Jupyter Widget Library for ProgressiVis
|
|
65
|
+
|
|
66
|
+
[](https://github.com/progressivis/ipyprogressivis/actions/workflows/ui.yml)
|
|
67
|
+
[](https://progressivis.readthedocs.io/en/latest/?badge=latest)
|
|
68
|
+
[](https://github.com/astral-sh/ruff)
|
|
69
|
+
[](https://github.com/python/mypy)
|
|
70
|
+
[](https://github.com/pypa/hatch)
|
|
71
|
+
[](https://opensource.org/licenses/BSD-2-Clause)
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
## Installation
|
|
75
|
+
|
|
76
|
+
See the installation instructions [provided here](https://progressivis.readthedocs.io/en/latest/install.html).
|
|
77
|
+
|
|
78
|
+
## Running demos (on your computer)
|
|
79
|
+
|
|
80
|
+
After installing `ipyprogressivis` do:
|
|
81
|
+
|
|
82
|
+
```
|
|
83
|
+
cd ipyprogressivis/notebooks
|
|
84
|
+
jupyter lab
|
|
85
|
+
```
|
|
86
|
+
then run the notebooks of your choice
|
|
87
|
+
|
|
88
|
+
<!--
|
|
89
|
+
### Running under Voilà
|
|
90
|
+
|
|
91
|
+
Install voilà :
|
|
92
|
+
|
|
93
|
+
$ conda install -c conda-forge voila
|
|
94
|
+
|
|
95
|
+
#### As a standalone app :
|
|
96
|
+
|
|
97
|
+
voila --enable_nbextensions=True YourNotebook.ipynb
|
|
98
|
+
|
|
99
|
+
#### As a server extension to notebook or jupyter_server
|
|
100
|
+
|
|
101
|
+
First, you have to enable the extension:
|
|
102
|
+
|
|
103
|
+
$ jupyter serverextension enable voila --sys-prefix
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
Then run:
|
|
107
|
+
|
|
108
|
+
$jupyter lab --VoilaConfiguration.enable_nbextensions=True
|
|
109
|
+
|
|
110
|
+
or
|
|
111
|
+
|
|
112
|
+
$jupyter notebook --VoilaConfiguration.enable_nbextensions=True
|
|
113
|
+
|
|
114
|
+
When running the Jupyter server, the Voilà app is accessible from the base url suffixed with voila
|
|
115
|
+
|
|
116
|
+
#### Using a JupyterLab extension to render a notebook with voila
|
|
117
|
+
|
|
118
|
+
Install the extension :
|
|
119
|
+
|
|
120
|
+
jupyter labextension install @jupyter-voila/jupyterlab-preview
|
|
121
|
+
|
|
122
|
+
Display the notebook with Voilà like showed here: https://user-images.githubusercontent.com/591645/59288034-1f8d6a80-8c73-11e9-860f-c3449dd3dcb5.gif
|
|
123
|
+
-->
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# IpyProgressiVis: A Custom Jupyter Widget Library for ProgressiVis
|
|
2
|
+
|
|
3
|
+
[](https://github.com/progressivis/ipyprogressivis/actions/workflows/ui.yml)
|
|
4
|
+
[](https://progressivis.readthedocs.io/en/latest/?badge=latest)
|
|
5
|
+
[](https://github.com/astral-sh/ruff)
|
|
6
|
+
[](https://github.com/python/mypy)
|
|
7
|
+
[](https://github.com/pypa/hatch)
|
|
8
|
+
[](https://opensource.org/licenses/BSD-2-Clause)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
## Installation
|
|
12
|
+
|
|
13
|
+
See the installation instructions [provided here](https://progressivis.readthedocs.io/en/latest/install.html).
|
|
14
|
+
|
|
15
|
+
## Running demos (on your computer)
|
|
16
|
+
|
|
17
|
+
After installing `ipyprogressivis` do:
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
cd ipyprogressivis/notebooks
|
|
21
|
+
jupyter lab
|
|
22
|
+
```
|
|
23
|
+
then run the notebooks of your choice
|
|
24
|
+
|
|
25
|
+
<!--
|
|
26
|
+
### Running under Voilà
|
|
27
|
+
|
|
28
|
+
Install voilà :
|
|
29
|
+
|
|
30
|
+
$ conda install -c conda-forge voila
|
|
31
|
+
|
|
32
|
+
#### As a standalone app :
|
|
33
|
+
|
|
34
|
+
voila --enable_nbextensions=True YourNotebook.ipynb
|
|
35
|
+
|
|
36
|
+
#### As a server extension to notebook or jupyter_server
|
|
37
|
+
|
|
38
|
+
First, you have to enable the extension:
|
|
39
|
+
|
|
40
|
+
$ jupyter serverextension enable voila --sys-prefix
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
Then run:
|
|
44
|
+
|
|
45
|
+
$jupyter lab --VoilaConfiguration.enable_nbextensions=True
|
|
46
|
+
|
|
47
|
+
or
|
|
48
|
+
|
|
49
|
+
$jupyter notebook --VoilaConfiguration.enable_nbextensions=True
|
|
50
|
+
|
|
51
|
+
When running the Jupyter server, the Voilà app is accessible from the base url suffixed with voila
|
|
52
|
+
|
|
53
|
+
#### Using a JupyterLab extension to render a notebook with voila
|
|
54
|
+
|
|
55
|
+
Install the extension :
|
|
56
|
+
|
|
57
|
+
jupyter labextension install @jupyter-voila/jupyterlab-preview
|
|
58
|
+
|
|
59
|
+
Display the notebook with Voilà like showed here: https://user-images.githubusercontent.com/591645/59288034-1f8d6a80-8c73-11e9-860f-c3449dd3dcb5.gif
|
|
60
|
+
-->
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# type: ignore
|
|
2
|
+
from ._version import __version__
|
|
3
|
+
import asyncio
|
|
4
|
+
|
|
5
|
+
_ = __version__
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def _jupyter_labextension_paths():
|
|
9
|
+
"""Called by Jupyter Lab Server to detect if it is a valid labextension and
|
|
10
|
+
to install the widget
|
|
11
|
+
|
|
12
|
+
Returns
|
|
13
|
+
=======
|
|
14
|
+
src: Source directory name to copy files from. Webpack outputs generated files
|
|
15
|
+
into this directory and Jupyter Lab copies from this directory during
|
|
16
|
+
widget installation
|
|
17
|
+
dest: Destination directory name to install widget files to. Jupyter Lab copies
|
|
18
|
+
from `src` directory into <jupyter path>/labextensions/<dest> directory
|
|
19
|
+
during widget installation
|
|
20
|
+
"""
|
|
21
|
+
return [{
|
|
22
|
+
'src': 'labextension',
|
|
23
|
+
'dest': 'jupyter-progressivis',
|
|
24
|
+
}]
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def _jupyter_nbextension_paths():
|
|
28
|
+
"""Called by Jupyter Notebook Server to detect if it is a valid nbextension and
|
|
29
|
+
to install the widget
|
|
30
|
+
|
|
31
|
+
Returns
|
|
32
|
+
=======
|
|
33
|
+
section: The section of the Jupyter Notebook Server to change.
|
|
34
|
+
Must be 'notebook' for widget extensions
|
|
35
|
+
src: Source directory name to copy files from. Webpack outputs generated files
|
|
36
|
+
into this directory and Jupyter Notebook copies from this directory during
|
|
37
|
+
widget installation
|
|
38
|
+
dest: Destination directory name to install widget files to. Jupyter Notebook copies
|
|
39
|
+
from `src` directory into <jupyter path>/nbextensions/<dest> directory
|
|
40
|
+
during widget installation
|
|
41
|
+
require: Path to importable AMD Javascript module inside the
|
|
42
|
+
<jupyter path>/nbextensions/<dest> directory
|
|
43
|
+
"""
|
|
44
|
+
return [{
|
|
45
|
+
'section': 'notebook',
|
|
46
|
+
'src': 'nbextension',
|
|
47
|
+
'dest': 'jupyter-progressivis',
|
|
48
|
+
'require': 'jupyter-progressivis/extension'
|
|
49
|
+
}]
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def _jupyter_server_extension_points():
|
|
53
|
+
"""
|
|
54
|
+
Returns a list of dictionaries with metadata describing
|
|
55
|
+
where to find the `_load_jupyter_server_extension` function.
|
|
56
|
+
"""
|
|
57
|
+
return [{"module": "ipyprogressivis.app"}]
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
def pre_save(model, contents_manager, **kwargs):
|
|
61
|
+
from .pre_save_md import pre_save_md_impl
|
|
62
|
+
from .pre_save import pre_save_impl
|
|
63
|
+
log = contents_manager.log
|
|
64
|
+
log.info("Starting pre_save ...")
|
|
65
|
+
pre_save_md_impl(model, contents_manager, **kwargs)
|
|
66
|
+
pre_save_impl(model, contents_manager, **kwargs)
|
|
67
|
+
log.info("... end pre_save")
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
def pre_save_x(model, contents_manager, **kwargs):
|
|
71
|
+
import nest_asyncio
|
|
72
|
+
nest_asyncio.apply()
|
|
73
|
+
from .pre_save_md import pre_save_md_impl
|
|
74
|
+
from .pre_save_x import pre_save_impl
|
|
75
|
+
log = contents_manager.log
|
|
76
|
+
log.info("Starting pre_save_x ...")
|
|
77
|
+
pre_save_md_impl(model, contents_manager, **kwargs)
|
|
78
|
+
loop = asyncio.get_event_loop()
|
|
79
|
+
task = loop.create_task(pre_save_impl(model, contents_manager, **kwargs))
|
|
80
|
+
loop.run_until_complete(task)
|
|
81
|
+
log.info("... end pre_save_x")
|
|
82
|
+
|
|
83
|
+
def pre_save_md(model, contents_manager, **kwargs):
|
|
84
|
+
from .pre_save_md import pre_save_md_impl
|
|
85
|
+
log = contents_manager.log
|
|
86
|
+
log.info("Starting pre_save_md ...")
|
|
87
|
+
pre_save_md_impl(model, contents_manager, **kwargs)
|
|
88
|
+
log.info("... end pre_save_md")
|
|
89
|
+
|
|
90
|
+
__all__ = ["__version__"]
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# file generated by setuptools-scm
|
|
2
|
+
# don't change, don't track in version control
|
|
3
|
+
|
|
4
|
+
__all__ = ["__version__", "__version_tuple__", "version", "version_tuple"]
|
|
5
|
+
|
|
6
|
+
TYPE_CHECKING = False
|
|
7
|
+
if TYPE_CHECKING:
|
|
8
|
+
from typing import Tuple
|
|
9
|
+
from typing import Union
|
|
10
|
+
|
|
11
|
+
VERSION_TUPLE = Tuple[Union[int, str], ...]
|
|
12
|
+
else:
|
|
13
|
+
VERSION_TUPLE = object
|
|
14
|
+
|
|
15
|
+
version: str
|
|
16
|
+
__version__: str
|
|
17
|
+
__version_tuple__: VERSION_TUPLE
|
|
18
|
+
version_tuple: VERSION_TUPLE
|
|
19
|
+
|
|
20
|
+
__version__ = version = '0.3.0'
|
|
21
|
+
__version_tuple__ = version_tuple = (0, 3, 0)
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# type: ignore
|
|
2
|
+
from jupyter_server.base.handlers import JupyterHandler
|
|
3
|
+
from jupyter_server.serverapp import ServerApp
|
|
4
|
+
import tornado
|
|
5
|
+
import json
|
|
6
|
+
from os.path import join as pjoin
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class ProgressivisHandler(JupyterHandler):
|
|
10
|
+
@tornado.web.authenticated
|
|
11
|
+
def get(self) -> None:
|
|
12
|
+
import ipyprogressivis
|
|
13
|
+
nb_name = pjoin(ipyprogressivis.__path__[0],
|
|
14
|
+
"notebook_templates",
|
|
15
|
+
"ProgressiBook.ipynb")
|
|
16
|
+
with open(nb_name) as fd:
|
|
17
|
+
payload = fd.read()
|
|
18
|
+
self.finish(json.dumps(dict(payload=payload)))
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def _load_jupyter_server_extension(serverapp: ServerApp) -> None:
|
|
22
|
+
"""
|
|
23
|
+
This function is called when the extension is loaded.
|
|
24
|
+
"""
|
|
25
|
+
handlers = [("/progressivis/template", ProgressivisHandler)]
|
|
26
|
+
serverapp.web_app.add_handlers(".*$", handlers) # type: ignore
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
from PIL import Image
|
|
2
|
+
import base64
|
|
3
|
+
import io
|
|
4
|
+
import os
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
|
|
7
|
+
from typing import Any
|
|
8
|
+
|
|
9
|
+
eye_img = Image.open(Path(os.path.dirname(__file__)) / "resources" / "snapshot_marker.png")
|
|
10
|
+
eye_img = eye_img.resize((64, 64))
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def add_snapshot_tag(data: Any) -> str:
|
|
14
|
+
img = Image.open(io.BytesIO(base64.b64decode(data)))
|
|
15
|
+
# img = img.filter(ImageFilter.BLUR)
|
|
16
|
+
img.paste(eye_img, (0, 0), eye_img)
|
|
17
|
+
buffered = io.BytesIO()
|
|
18
|
+
img.save(buffered, format="PNG")
|
|
19
|
+
return base64.b64encode(buffered.getvalue()).decode("utf-8")
|
|
20
|
+
|
|
21
|
+
def add_snapshot_tag_from_bytes(data: Any) -> str:
|
|
22
|
+
img = Image.open(io.BytesIO(data))
|
|
23
|
+
# img = img.filter(ImageFilter.BLUR)
|
|
24
|
+
img.paste(eye_img, (0, 0), eye_img)
|
|
25
|
+
buffered = io.BytesIO()
|
|
26
|
+
img.save(buffered, format="PNG")
|
|
27
|
+
return base64.b64encode(buffered.getvalue()).decode("utf-8")
|
|
28
|
+
|
|
29
|
+
def parse_tag(tag: str) -> tuple[str, int]:
|
|
30
|
+
if "[" not in tag:
|
|
31
|
+
return tag, 0
|
|
32
|
+
assert tag[-1] == "]"
|
|
33
|
+
pos = tag.index("[")
|
|
34
|
+
return tag[:pos], int(tag[pos+1:-1])
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def make_css_marker(key: str, nb: int = 0) -> str:
|
|
38
|
+
key = key.replace(" ", "_")
|
|
39
|
+
return f"progressivis_guest_widget--{key}_{nb}"
|
|
40
|
+
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
"env": {
|
|
3
|
+
"browser": true,
|
|
4
|
+
"es2021": true,
|
|
5
|
+
"node": true
|
|
6
|
+
},
|
|
7
|
+
"globals": {
|
|
8
|
+
"__webpack_public_path__": "writable",
|
|
9
|
+
"sorttable": "readable"
|
|
10
|
+
},
|
|
11
|
+
"extends": [
|
|
12
|
+
"eslint:recommended",
|
|
13
|
+
"plugin:react/recommended"
|
|
14
|
+
],
|
|
15
|
+
"settings": {
|
|
16
|
+
"react": {
|
|
17
|
+
"version": "detect"
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
"parserOptions": {
|
|
21
|
+
"ecmaFeatures": {
|
|
22
|
+
"jsx": true
|
|
23
|
+
},
|
|
24
|
+
"ecmaVersion": 12,
|
|
25
|
+
"sourceType": "module"
|
|
26
|
+
},
|
|
27
|
+
"plugins": [
|
|
28
|
+
"react"
|
|
29
|
+
],
|
|
30
|
+
"rules": {
|
|
31
|
+
}
|
|
32
|
+
};
|