hiplot-plus 0.1.0__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,16 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
6
+ <meta name="theme-color" content="#000000" />
7
+ <meta name="description" content="Streamlit Component" />
8
+ <title>Streamlit Component</title>
9
+ </head>
10
+ <body>
11
+ <noscript>You need to enable JavaScript to run this app.</noscript>
12
+ <div id="root"></div>
13
+
14
+ <script src="hiplot_streamlit.bundle.js" type="text/javascript"></script>
15
+ </body>
16
+ </html>
hiplot/static/icon.png ADDED
Binary file
@@ -0,0 +1,127 @@
1
+ # Copyright (c) Facebook, Inc. and its affiliates.
2
+ # This source code is licensed under the MIT license found in the
3
+ # LICENSE file in the root directory of this source tree.
4
+
5
+ import json
6
+ import typing as tp
7
+ import uuid
8
+ import warnings
9
+ from pathlib import Path
10
+
11
+ from .experiment import Experiment, _is_running_ipython
12
+
13
+
14
+ class _StreamlitHelpers:
15
+ component: tp.Callable[..., tp.Any] | None = None
16
+
17
+ @staticmethod
18
+ def is_running_within_streamlit() -> bool:
19
+ try:
20
+ from streamlit import runtime
21
+ except ImportError:
22
+ return False
23
+ return bool(runtime.exists())
24
+
25
+ @classmethod
26
+ def create_component(cls) -> tp.Callable[..., tp.Any]:
27
+ if cls.component is not None:
28
+ return cls.component
29
+ try:
30
+ from streamlit import runtime
31
+ except ImportError as e:
32
+ raise ImportError(
33
+ "Streamlit is required for Streamlit support. Install it with: pip install hiplot-plus[streamlit]"
34
+ ) from e
35
+ try:
36
+ import streamlit.components.v1 as components
37
+ except ModuleNotFoundError as e:
38
+ import streamlit as st
39
+
40
+ raise RuntimeError(f"""Your streamlit version ({st.__version__}) is too old and does not support components.
41
+ Please update streamlit with `pip install -U streamlit`""") from e
42
+ assert runtime.exists()
43
+
44
+ built_path = (Path(__file__).parent / "static" / "built" / "streamlit_component").resolve()
45
+ assert (built_path / "index.html").is_file(), f"""HiPlot component does not appear to exist in {built_path}
46
+ If you did not install hiplot using official channels (pip, conda...), maybe you forgot to build javascript files?
47
+ See https://poipoi300.github.io/hiplot/contributing.html#building-javascript-bundle
48
+ """
49
+ component: tp.Callable[..., tp.Any] = components.declare_component("hiplot", path=str(built_path))
50
+ cls.component = component
51
+ return component
52
+
53
+
54
+ class ExperimentStreamlitComponent:
55
+ def __init__(self, experiment: Experiment, key: str | None, ret: str | list[str] | None) -> None:
56
+ if key is None:
57
+ warnings.warn(
58
+ r"""Creating a HiPlot component with key=None will make refreshes slower.
59
+ Please use `experiment.to_streamlit(..., key=\"some_unique_key\")`""",
60
+ stacklevel=3,
61
+ )
62
+ key = f"hiplot_autogen_{uuid.uuid4()!s}"
63
+ self._exp_json = json.dumps(experiment._payload(), allow_nan=False)
64
+ self._key = key
65
+ self._ret = ret
66
+ self._js_default_ret = tuple(self.get_default_return_for(experiment, ret=r) for r in self.js_ret_spec)
67
+
68
+ @property
69
+ def js_ret_spec(self) -> list[str]:
70
+ if self._ret is None:
71
+ return []
72
+ if isinstance(self._ret, str):
73
+ return [self._ret]
74
+ assert isinstance(self._ret, (tuple, list)), (
75
+ "HiPlot: Invalid return type specification. Should be `None`, a string, a list or a tuple."
76
+ )
77
+ return list(self._ret)
78
+
79
+ @classmethod
80
+ def get_default_return(cls, experiment: Experiment, ret: str | list[str] | None) -> tp.Any:
81
+ if ret is None:
82
+ return None
83
+ if isinstance(ret, str):
84
+ return cls.get_default_return_for(experiment, ret)
85
+ assert isinstance(ret, (tuple, list)), (
86
+ "HiPlot: Invalid return type specification. Should be `None`, a string, a list or a tuple."
87
+ )
88
+ return tuple(cls.get_default_return(experiment, r) for r in ret)
89
+
90
+ @staticmethod
91
+ def get_default_return_for(experiment: Experiment, ret: str) -> tp.Any:
92
+ if ret == "brush_extents":
93
+ return ()
94
+ if ret in ["selected_uids", "filtered_uids"]:
95
+ return tuple(dp.uid for dp in experiment.datapoints)
96
+ raise RuntimeError(f'HiPlot: Unknown return type "{ret}"')
97
+
98
+ def display(self) -> tp.Any:
99
+ if not _StreamlitHelpers.is_running_within_streamlit():
100
+ if _is_running_ipython():
101
+ raise RuntimeError(r"""`experiment.display_st` can only be called in a streamlit script.
102
+ It appears that you are trying to create a HiPlot visualization in ipython:
103
+ you should use `display` instead of `display_st`""")
104
+ raise RuntimeError(r"""`experiment.display_st` can only be called in a streamlit script.
105
+ To render an experiment to HTML, use `experiment.to_html(file_name)` or `html_page = experiment.to_html()`""")
106
+
107
+ component = _StreamlitHelpers.create_component()
108
+
109
+ js_ret = component(experiment=self._exp_json, ret=self.js_ret_spec, key=self._key)
110
+
111
+ if js_ret is None:
112
+ js_ret = self._js_default_ret
113
+ assert len(self._js_default_ret) == len(js_ret), (
114
+ f"JS returned {len(js_ret)} fields, expected {len(self._js_default_ret)} (ret={self._ret})"
115
+ )
116
+
117
+ for idx in range(len(self.js_ret_spec)):
118
+ if js_ret[idx] is not None:
119
+ continue
120
+ # Use default value
121
+ js_ret = self._js_default_ret[idx]
122
+
123
+ if not js_ret:
124
+ return None
125
+ if isinstance(self._ret, str):
126
+ return js_ret[0]
127
+ return js_ret
@@ -0,0 +1,68 @@
1
+ <!doctype html>
2
+ <html>
3
+ <head>
4
+ <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
5
+ <title>HiPlot</title>
6
+ <link rel="icon" href="static/icon.png" />
7
+ <style>
8
+ /*
9
+ * Only when HiPlot is the whole page: a notebook embeds this markup in its
10
+ * own body, where these selectors match nothing. The HiPlot theme fills
11
+ * the viewport; until it renders, the page follows the system theme.
12
+ */
13
+ body:has(> .hiplot-page) {
14
+ margin: 0;
15
+ }
16
+ body > .hiplot-page {
17
+ display: flex;
18
+ flex-direction: column;
19
+ min-height: 100vh;
20
+ }
21
+ body > .hiplot-page > * {
22
+ flex: 1 0 auto;
23
+ }
24
+ @media (prefers-color-scheme: dark) {
25
+ body:has(> .hiplot-page) {
26
+ background: #15181c;
27
+ color: #e4e7eb;
28
+ }
29
+ }
30
+ </style>
31
+ </head>
32
+ <body>
33
+ <div id="hiplot_element_id" class="hiplot-page">
34
+ <div style="text-align: center">Loading HiPlot...</div>
35
+ <noscript> HiPlot needs JavaScript to run </noscript>
36
+ </div>
37
+
38
+ <!--HIPLOT_DATA-->
39
+ <script src="static/built/hiplot.bundle.js" type="text/javascript">
40
+ /*BUNDLE_FILE*/
41
+ </script>
42
+ <script type="text/javascript">
43
+ function _hiplot_setup() {
44
+ if (typeof hiplot == "undefined") {
45
+ console.info("waiting for HiPlot bundle to be loaded...");
46
+ setTimeout(_hiplot_setup, 1000);
47
+ return;
48
+ }
49
+ var options = {};
50
+ var _sp = new URLSearchParams(location.search);
51
+ var _provider = _sp.get("provider");
52
+ if (_provider) {
53
+ options.dataProviderName = _provider;
54
+ }
55
+ /*ON_LOAD_SCRIPT_INJECT*/
56
+ var hiplot_instance = hiplot.render(document.getElementById("hiplot_element_id"), options);
57
+ Object.assign(window, { hiplot_last_instance: hiplot_instance }); // For debugging
58
+ /*AFTER_SETUP_SCRIPT_INJECT*/
59
+ }
60
+ if (document.readyState == "loading") {
61
+ document.addEventListener("DOMContentLoaded", _hiplot_setup);
62
+ } else {
63
+ // Either "complete" or "interactive"
64
+ _hiplot_setup();
65
+ }
66
+ </script>
67
+ </body>
68
+ </html>
@@ -0,0 +1,197 @@
1
+ Metadata-Version: 2.5
2
+ Name: hiplot-plus
3
+ Version: 0.1.0
4
+ Summary: High dimensional Interactive Plotting tool
5
+ Project-URL: Homepage, https://github.com/poipoi300/hiplot
6
+ Project-URL: Documentation, https://poipoi300.github.io/hiplot/
7
+ Project-URL: Repository, https://github.com/poipoi300/hiplot
8
+ Author: Facebook AI Research, mathematicalmichael @ Mind the Math, LLC
9
+ License-Expression: MIT
10
+ License-File: LICENSE
11
+ License-File: NOTICE
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: Intended Audience :: Science/Research
15
+ Classifier: Operating System :: OS Independent
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Programming Language :: Python :: 3.13
19
+ Classifier: Programming Language :: Python :: 3.14
20
+ Classifier: Programming Language :: Python :: 3.15
21
+ Classifier: Topic :: Scientific/Engineering :: Visualization
22
+ Requires-Python: >=3.12
23
+ Requires-Dist: beautifulsoup4
24
+ Requires-Dist: jinja2>=3.1.6
25
+ Provides-Extra: all
26
+ Requires-Dist: flask; extra == 'all'
27
+ Requires-Dist: flask-compress; extra == 'all'
28
+ Requires-Dist: ipykernel; extra == 'all'
29
+ Requires-Dist: ipython>=7.0.1; extra == 'all'
30
+ Requires-Dist: streamlit>=0.63; extra == 'all'
31
+ Provides-Extra: notebook
32
+ Requires-Dist: ipykernel; extra == 'notebook'
33
+ Requires-Dist: ipython>=7.0.1; extra == 'notebook'
34
+ Provides-Extra: server
35
+ Requires-Dist: flask; extra == 'server'
36
+ Requires-Dist: flask-compress; extra == 'server'
37
+ Provides-Extra: streamlit
38
+ Requires-Dist: streamlit>=0.63; extra == 'streamlit'
39
+ Description-Content-Type: text/markdown
40
+
41
+ # HiPlot - High dimensional Interactive Plotting
42
+
43
+ ## About this fork
44
+
45
+ Thanks to [Facebook Research](https://github.com/facebookresearch/hiplot) for creating HiPlot, and to [Mind the Math](https://github.com/mindthemath/hiplot) for keeping it alive after the original was archived. This fork builds on their work; it is not affiliated with either.
46
+
47
+ What changed:
48
+
49
+ - **Rendering:** WebGL2 density lines with exact anti-aliasing and colors mapped by value, with a choice of what overlapping lines show (mean, lowest or highest). 100,000 rows by 30 columns stay interactive.
50
+ - **Parallel plot:** several brushes per axis, value tags on brushes, axes that face the color gradient (high colors at the top), horizontal scrolling with middle-click autoscroll, spline lines and a searchable Columns menu.
51
+ - **Scatter plots:** XY, one-axis and 3D panels with lasso selection, a shared axis picker and correlation and regression fits.
52
+ - **Table:** multi-level sorting, column filters and aligned numbers.
53
+ - **Look:** a redesigned light and dark theme, colorblind-safe palettes and a color legend.
54
+ - **Data:** compact columnar transfer, NaN, inf and missing-value spellings read as such, numeric uids.
55
+ - **Example:** a real GPU hyperparameter search in [examples/hptuning](examples/hptuning), with trials stored as Parquet.
56
+ - **Engineering:** Python 3.12 to 3.15, ruff and mypy --strict, TypeScript strict and Biome, Playwright browser tests, and commit and push gates requiring 90% coverage of changed lines across all suites.
57
+
58
+
59
+ ![Logo](https://raw.githubusercontent.com/poipoi300/hiplot/main/hiplot/static/logo.png)
60
+
61
+ [![CI](https://github.com/poipoi300/hiplot/actions/workflows/ci.yml/badge.svg)](https://github.com/poipoi300/hiplot/actions/workflows/ci.yml)
62
+ [![Release](https://github.com/poipoi300/hiplot/actions/workflows/release.yml/badge.svg)](https://github.com/poipoi300/hiplot/actions/workflows/release.yml)
63
+ [![License: MIT](https://img.shields.io/badge/License-MIT-brightgreen.svg)](https://opensource.org/licenses/MIT)
64
+ [![PyPI version](https://img.shields.io/pypi/v/hiplot-plus.svg)](https://pypi.python.org/pypi/hiplot-plus/)
65
+ [![PyPI downloads](https://img.shields.io/pypi/dm/hiplot-plus.svg)](https://pypi.python.org/pypi/hiplot-plus/)
66
+ [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/poipoi300/hiplot/blob/main/examples/HiPlotColabExample.ipynb)
67
+
68
+ > **Community-maintained fork**: This is a community-maintained fork of [Facebook Research's HiPlot](https://github.com/facebookresearch/hiplot), which has been archived. We aim to keep the project alive with bug fixes, security updates, and new features.
69
+
70
+ HiPlot is a lightweight interactive visualization tool to help AI researchers discover correlations and patterns in high-dimensional data using parallel plots and other graphical ways to represent information.
71
+
72
+ ### [Try a demo now with sweep data](https://poipoi300.github.io/hiplot/_static/demo/ml1.csv.html) or [upload your CSV](https://poipoi300.github.io/hiplot/_static/hiplot_upload.html) or [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/poipoi300/hiplot/blob/main/examples/HiPlotColabExample.ipynb)
73
+
74
+ There are several modes to HiPlot:
75
+
76
+ - As a web-server (if your data is a CSV for instance)
77
+ - In a jupyter notebook (to visualize python data), or in [Streamlit apps](https://poipoi300.github.io/hiplot/tuto_streamlit.html)
78
+ - In CLI to render standalone HTML
79
+
80
+ ## Quick Start
81
+
82
+ ```bash
83
+ # Render a CSV to interactive HTML (no install needed)
84
+ uvx hiplot-plus data.csv > output.html
85
+
86
+ # Or start an interactive server
87
+ uvx --from 'hiplot-plus[server]' hiplot --port 8765
88
+ ```
89
+
90
+ ## Installation
91
+
92
+ ```bash
93
+ # Core package (HTML export, CLI rendering)
94
+ pip install hiplot-plus
95
+
96
+ # With Jupyter notebook support
97
+ pip install hiplot-plus[notebook]
98
+
99
+ # With web server support (hiplot command)
100
+ pip install hiplot-plus[server]
101
+
102
+ # With Streamlit support
103
+ pip install hiplot-plus[streamlit]
104
+
105
+ # Everything
106
+ pip install hiplot-plus[all]
107
+ ```
108
+
109
+ If you have a Jupyter notebook, you can get started with something as simple as:
110
+
111
+ ```python
112
+ import hiplot as hip
113
+
114
+ data = [
115
+ {"dropout": 0.1, "lr": 0.001, "loss": 10.0, "optimizer": "SGD"},
116
+ {"dropout": 0.15, "lr": 0.01, "loss": 3.5, "optimizer": "Adam"},
117
+ {"dropout": 0.3, "lr": 0.1, "loss": 4.5, "optimizer": "Adam"},
118
+ ]
119
+ exp = hip.Experiment.from_iterable(data)
120
+ exp.colorby = "loss"
121
+ exp.display()
122
+ ```
123
+
124
+ ### [See the live result](https://poipoi300.github.io/hiplot/_static/demo/demo_basic_usage.html)
125
+
126
+ ![Result](https://raw.githubusercontent.com/poipoi300/hiplot/main/assets/notebook.png)
127
+
128
+ ## Links
129
+
130
+ - Repository: https://github.com/poipoi300/hiplot
131
+ - Documentation: https://poipoi300.github.io/hiplot/
132
+ - PyPI package: https://pypi.org/project/hiplot-plus/
133
+ - Examples: https://github.com/poipoi300/hiplot/tree/main/examples
134
+ - Original blog post: https://ai.facebook.com/blog/hiplot-high-dimensional-interactive-plots-made-easy/
135
+
136
+ ## Development
137
+
138
+ HiPlot is Python 3.12+ (built with [uv](https://docs.astral.sh/uv/)) plus a
139
+ TypeScript frontend (React, d3, built with [Bun](https://bun.sh) and Vite).
140
+ Contributor rules, including for coding agents, are in [AGENTS.md](AGENTS.md).
141
+
142
+ ```bash
143
+ bun install && uv sync # dependencies
144
+ bun run build # JavaScript bundles into hiplot/static/built/
145
+ uv run pre-commit install -t pre-commit -t pre-push # quality gates, once
146
+ uv run --extra server hiplot --port 8765 # dev server (load `demo`)
147
+ ```
148
+
149
+ | Task | Command |
150
+ |---|---|
151
+ | Python tests | `uv run pytest` |
152
+ | Frontend unit tests | `bun test` |
153
+ | End-to-end tests (Playwright) | `bun run test:js` |
154
+ | Format and lint | `uv run ruff format . && uv run ruff check .` · `bun run biome check --write .` |
155
+ | Type checks | `uv run mypy .` · `bun run typecheck` |
156
+ | Every commit gate | `uv run pre-commit run --all-files` |
157
+ | Tests + 90% diff coverage (push gate) | `bash tools/stack_coverage_gate.sh` |
158
+ | Rendering benchmark | `bash bench/run.sh` (results in [docs/PERFORMANCE.md](docs/PERFORMANCE.md)) |
159
+ | Docs | `uv run --no-default-groups --group docs sphinx-build -b html docs docs/_build/html` |
160
+ | Package | `bun run build && uv build` (or `./build.sh`, which also emits the npm types) |
161
+
162
+ Commits run the fast gates (hygiene, ruff, mypy --strict, Biome, tsc
163
+ --strict); pushes run pytest, `bun test` and Playwright under coverage and
164
+ require 90% coverage of changed lines across all suites. Playwright and the
165
+ combined coverage gate run locally and before pushes only. Hosted CI runs
166
+ lint, types, Python and Bun unit tests, builds, Python 3.12 to 3.15, Windows,
167
+ package installs and the docs build.
168
+
169
+ **Output directories:** `hiplot/static/built/` (bundles shipped in the
170
+ wheel), `dist/` (wheel and sdist), `npm-dist/` (npm package).
171
+
172
+ ## Citing
173
+
174
+ ```bibtex
175
+ @misc{hiplot,
176
+ author = {Haziza, D. and Rapin, J. and Synnaeve, G.},
177
+ title = {{Hiplot, interactive high-dimensionality plots}},
178
+ year = {2020},
179
+ publisher = {GitHub},
180
+ journal = {GitHub repository},
181
+ howpublished = {\url{https://github.com/facebookresearch/hiplot}},
182
+ }
183
+ ```
184
+
185
+ ## Credits
186
+
187
+ Inspired by and based on code from [Kai Chang](http://bl.ocks.org/syntagmatic/3150059), [Mike Bostock](http://bl.ocks.org/1341021) and [Jason Davies](http://bl.ocks.org/1341281).
188
+
189
+ External contributors (_please add your name when you submit your first pull request_):
190
+
191
+ - [louismartin](https://github.com/louismartin)
192
+ - [GoldenCorgi](https://github.com/GoldenCorgi)
193
+ - [callistachang](https://github.com/callistachang)
194
+
195
+ ## License
196
+
197
+ HiPlot is [MIT](LICENSE) licensed, as found in the [LICENSE](LICENSE) file.
@@ -0,0 +1,24 @@
1
+ hiplot/__init__.py,sha256=5AY97SbCpTuip_Svp21JB3EI8b7amNRgbXw654oPXMo,952
2
+ hiplot/__main__.py,sha256=FAkGchVzZEBymfIhYWSvZTR1xQmEH1-PGjukAm85CrI,328
3
+ hiplot/compress.py,sha256=cAYvA2k6G_1jHL70a_-IbDBzDu3eZJV_FW0NJ8-DrL0,2696
4
+ hiplot/csvvalues.py,sha256=6JEyLElLXgc-sJ643gkcZS2HQJUA2oJ1on8BG5ICkI8,3101
5
+ hiplot/experiment.py,sha256=-B7HCa6qncYlygz8yto0OnbZwkD0WRH4xJr5Bjmw-X8,24848
6
+ hiplot/fetchers.py,sha256=Rp3kHL-qZ8ax47v0mydZi6i1MFUcWqjz0PtWjLrE7R8,11733
7
+ hiplot/fetchers_demo.py,sha256=xCY0aGAUiUHJLCXziM2J9ayhtNJKWIsVA1Id7cHXdVM,15492
8
+ hiplot/ipython.py,sha256=XHjvYTZnRBPgX_k3ZG-psv07zePoi17rzIaIS40zCXg,7541
9
+ hiplot/pkginfo.py,sha256=pxIL3DkxWNoJKYdph60MHN1HwhTgvqi0TLNPzvPDP9I,564
10
+ hiplot/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
+ hiplot/render.py,sha256=eg_7RPio8aJo_UOF-OPUo388dbYyzIy886RU1QrLwfw,4778
12
+ hiplot/server.py,sha256=8SI0XcJ4jJDLjlqV7KxXosIChvkzKwDesBiKYs41mXA,2752
13
+ hiplot/streamlit_helpers.py,sha256=lPhFE90uKZQtrkwA96iNCjkNJne8ap-hPeWaZMgvBW0,5167
14
+ hiplot/static/icon.png,sha256=hSllX0zW4r-6Cn8nqfiG9WbkGFU0HE3fTQyjBLg0dXE,21466
15
+ hiplot/static/built/hiplot.bundle.js,sha256=_cgf_Q1CDZCHiSUAaPGUJQaR6YJGB_a1HYrrI9oVpBs,1666348
16
+ hiplot/static/built/streamlit_component/hiplot_streamlit.bundle.js,sha256=OEvNp_BT3DCK18YKy66CczBw2pw0QeQofG2zDoAEqxo,1605435
17
+ hiplot/static/built/streamlit_component/index.html,sha256=Er4-G5w4l1xsRrBRu6IQCdewvivUQRrj1ejBQEeuEwQ,511
18
+ hiplot/templates/index.html,sha256=Im6F_ydcTMs2eMbk5bIB7CsgpEVMzD_KafmkLEtpPlg,2168
19
+ hiplot_plus-0.1.0.dist-info/METADATA,sha256=dqoBK2X0r946lM38JRrThKTdA2GWmN50Ty6ZI72oFro,9268
20
+ hiplot_plus-0.1.0.dist-info/WHEEL,sha256=2iZrJkDIkeDh0k9SikKMqFuRP-ua6mb4Ir1AsER4BEw,87
21
+ hiplot_plus-0.1.0.dist-info/entry_points.txt,sha256=gcP76M2oHsjL1sqJBDkBXWMhNQI-FgrkSTtPtMxrHbE,153
22
+ hiplot_plus-0.1.0.dist-info/licenses/LICENSE,sha256=UkEte8fOQVfqYou6rLiCngqcs8WPV_mRdhJryM8r_IU,1086
23
+ hiplot_plus-0.1.0.dist-info/licenses/NOTICE,sha256=BgJexxrr6wJp6w2Sh51mRAiLn1ymNC5o6F5KrnUV8Do,11609
24
+ hiplot_plus-0.1.0.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.33.0
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,4 @@
1
+ [console_scripts]
2
+ hiplot = hiplot.server:run_server_main
3
+ hiplot-plus = hiplot.render:hiplot_render_main
4
+ hiplot-render = hiplot.render:hiplot_render_main
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) Facebook, Inc. and its affiliates.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.