matplotly 0.1.2__tar.gz → 0.1.4__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.
- {matplotly-0.1.2 → matplotly-0.1.4}/PKG-INFO +17 -1
- {matplotly-0.1.2 → matplotly-0.1.4}/README.md +11 -0
- {matplotly-0.1.2 → matplotly-0.1.4}/examples/demo_bar.ipynb +2 -2
- {matplotly-0.1.2 → matplotly-0.1.4}/examples/demo_box.ipynb +5 -5
- {matplotly-0.1.2 → matplotly-0.1.4}/examples/demo_plot.ipynb +57 -30
- matplotly-0.1.4/matplotly/_ai_extract.py +1172 -0
- {matplotly-0.1.2 → matplotly-0.1.4}/matplotly/_api.py +10 -1
- matplotly-0.1.4/matplotly/_profiles.py +228 -0
- {matplotly-0.1.2 → matplotly-0.1.4}/matplotly/panels/_global.py +13 -7
- {matplotly-0.1.2 → matplotly-0.1.4}/pyproject.toml +7 -1
- matplotly-0.1.4/tests/test_ai_extract.py +375 -0
- matplotly-0.1.2/matplotly/_profiles.py +0 -241
- matplotly-0.1.2/matplotly/_style_import.py +0 -155
- {matplotly-0.1.2 → matplotly-0.1.4}/.github/workflows/publish.yml +0 -0
- {matplotly-0.1.2 → matplotly-0.1.4}/.github/workflows/tests.yml +0 -0
- {matplotly-0.1.2 → matplotly-0.1.4}/.gitignore +0 -0
- {matplotly-0.1.2 → matplotly-0.1.4}/.readthedocs.yaml +0 -0
- {matplotly-0.1.2 → matplotly-0.1.4}/CHANGELOG.md +0 -0
- {matplotly-0.1.2 → matplotly-0.1.4}/LICENSE +0 -0
- {matplotly-0.1.2 → matplotly-0.1.4}/demo_box.ipynb +0 -0
- {matplotly-0.1.2 → matplotly-0.1.4}/demo_plot.ipynb +0 -0
- {matplotly-0.1.2 → matplotly-0.1.4}/demo_scatter.ipynb +0 -0
- {matplotly-0.1.2 → matplotly-0.1.4}/docs/api.rst +0 -0
- {matplotly-0.1.2 → matplotly-0.1.4}/docs/changelog.rst +0 -0
- {matplotly-0.1.2 → matplotly-0.1.4}/docs/conf.py +0 -0
- {matplotly-0.1.2 → matplotly-0.1.4}/docs/examples/index.rst +0 -0
- {matplotly-0.1.2 → matplotly-0.1.4}/docs/index.rst +0 -0
- {matplotly-0.1.2 → matplotly-0.1.4}/docs/installation.rst +0 -0
- {matplotly-0.1.2 → matplotly-0.1.4}/docs/quickstart.rst +0 -0
- {matplotly-0.1.2 → matplotly-0.1.4}/docs/requirements.txt +0 -0
- {matplotly-0.1.2 → matplotly-0.1.4}/examples/demo_errorbar.ipynb +0 -0
- {matplotly-0.1.2 → matplotly-0.1.4}/examples/demo_heatmap.ipynb +0 -0
- {matplotly-0.1.2 → matplotly-0.1.4}/examples/demo_hist.ipynb +0 -0
- {matplotly-0.1.2 → matplotly-0.1.4}/examples/demo_scatter.ipynb +0 -0
- {matplotly-0.1.2 → matplotly-0.1.4}/examples/matplotly_demo.ipynb +0 -0
- {matplotly-0.1.2 → matplotly-0.1.4}/matplotly/__init__.py +0 -0
- {matplotly-0.1.2 → matplotly-0.1.4}/matplotly/_code_gen.py +0 -0
- {matplotly-0.1.2 → matplotly-0.1.4}/matplotly/_commands.py +0 -0
- {matplotly-0.1.2 → matplotly-0.1.4}/matplotly/_introspect.py +0 -0
- {matplotly-0.1.2 → matplotly-0.1.4}/matplotly/_renderer.py +0 -0
- {matplotly-0.1.2 → matplotly-0.1.4}/matplotly/_types.py +0 -0
- {matplotly-0.1.2 → matplotly-0.1.4}/matplotly/panels/__init__.py +0 -0
- {matplotly-0.1.2 → matplotly-0.1.4}/matplotly/panels/_bar.py +0 -0
- {matplotly-0.1.2 → matplotly-0.1.4}/matplotly/panels/_base.py +0 -0
- {matplotly-0.1.2 → matplotly-0.1.4}/matplotly/panels/_color_utils.py +0 -0
- {matplotly-0.1.2 → matplotly-0.1.4}/matplotly/panels/_distribution.py +0 -0
- {matplotly-0.1.2 → matplotly-0.1.4}/matplotly/panels/_errorbar.py +0 -0
- {matplotly-0.1.2 → matplotly-0.1.4}/matplotly/panels/_fill.py +0 -0
- {matplotly-0.1.2 → matplotly-0.1.4}/matplotly/panels/_heatmap.py +0 -0
- {matplotly-0.1.2 → matplotly-0.1.4}/matplotly/panels/_histogram.py +0 -0
- {matplotly-0.1.2 → matplotly-0.1.4}/matplotly/panels/_line.py +0 -0
- {matplotly-0.1.2 → matplotly-0.1.4}/matplotly/panels/_marginal.py +0 -0
- {matplotly-0.1.2 → matplotly-0.1.4}/matplotly/panels/_scatter.py +0 -0
- {matplotly-0.1.2 → matplotly-0.1.4}/matplotly/panels/_subplot.py +0 -0
- {matplotly-0.1.2 → matplotly-0.1.4}/requirements.txt +0 -0
- {matplotly-0.1.2 → matplotly-0.1.4}/tests/test_code_gen.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: matplotly
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.4
|
|
4
4
|
Summary: Jupyter-native interactive matplotlib figure editor
|
|
5
5
|
Project-URL: Homepage, https://github.com/p-koo/matplotly
|
|
6
6
|
Project-URL: Documentation, https://matplotly.readthedocs.io
|
|
@@ -24,6 +24,11 @@ Requires-Dist: ipympl>=0.9.0
|
|
|
24
24
|
Requires-Dist: ipywidgets>=8.0.0
|
|
25
25
|
Requires-Dist: matplotlib>=3.8.0
|
|
26
26
|
Requires-Dist: numpy>=1.24.0
|
|
27
|
+
Provides-Extra: ai
|
|
28
|
+
Requires-Dist: anthropic>=0.39.0; extra == 'ai'
|
|
29
|
+
Requires-Dist: openai>=1.0.0; extra == 'ai'
|
|
30
|
+
Requires-Dist: pillow>=9.0; extra == 'ai'
|
|
31
|
+
Requires-Dist: pymupdf>=1.23.0; extra == 'ai'
|
|
27
32
|
Provides-Extra: dev
|
|
28
33
|
Requires-Dist: pytest>=7.0; extra == 'dev'
|
|
29
34
|
Requires-Dist: ruff>=0.4.0; extra == 'dev'
|
|
@@ -50,6 +55,7 @@ reproducible Python code. No separate GUI; everything runs inline in your notebo
|
|
|
50
55
|
## Features
|
|
51
56
|
|
|
52
57
|
- **10+ plot types**: line, scatter, bar, histogram, box, violin, errorbar, heatmap, fill, marginal
|
|
58
|
+
- **AI style extraction**: upload a reference plot image and automatically match its style (fonts, colors, spines, ticks, legend, etc.) using Claude or GPT vision models
|
|
53
59
|
- **Code generation**: export a standalone Python script that recreates your styled figure
|
|
54
60
|
- **Undo / redo**: full command history with keyboard shortcuts
|
|
55
61
|
- **Style profiles**: save and load reusable figure styles
|
|
@@ -107,6 +113,16 @@ with matplotly() as pb:
|
|
|
107
113
|
| Fill | `ax.fill_between()` / `ax.fill_betweenx()` |
|
|
108
114
|
| Marginal | Joint + marginal distribution plots |
|
|
109
115
|
|
|
116
|
+
## AI Style Extraction
|
|
117
|
+
|
|
118
|
+
Upload a reference plot image and let an AI vision model extract its style — fonts, colors, spines, ticks, grid, legend, and more — then apply it to your figure in one click.
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
pip install matplotly[ai]
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
Supports **Anthropic** (Claude) and **OpenAI** (GPT-4o, GPT-5) as providers. Two-pass extraction: the first pass extracts style parameters, the second pass verifies and corrects them. Extracted styles can be downloaded as JSON profiles for reuse without further API calls.
|
|
125
|
+
|
|
110
126
|
## Documentation
|
|
111
127
|
|
|
112
128
|
Full documentation is available at [matplotly.readthedocs.io](https://matplotly.readthedocs.io).
|
|
@@ -14,6 +14,7 @@ reproducible Python code. No separate GUI; everything runs inline in your notebo
|
|
|
14
14
|
## Features
|
|
15
15
|
|
|
16
16
|
- **10+ plot types**: line, scatter, bar, histogram, box, violin, errorbar, heatmap, fill, marginal
|
|
17
|
+
- **AI style extraction**: upload a reference plot image and automatically match its style (fonts, colors, spines, ticks, legend, etc.) using Claude or GPT vision models
|
|
17
18
|
- **Code generation**: export a standalone Python script that recreates your styled figure
|
|
18
19
|
- **Undo / redo**: full command history with keyboard shortcuts
|
|
19
20
|
- **Style profiles**: save and load reusable figure styles
|
|
@@ -71,6 +72,16 @@ with matplotly() as pb:
|
|
|
71
72
|
| Fill | `ax.fill_between()` / `ax.fill_betweenx()` |
|
|
72
73
|
| Marginal | Joint + marginal distribution plots |
|
|
73
74
|
|
|
75
|
+
## AI Style Extraction
|
|
76
|
+
|
|
77
|
+
Upload a reference plot image and let an AI vision model extract its style — fonts, colors, spines, ticks, grid, legend, and more — then apply it to your figure in one click.
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
pip install matplotly[ai]
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Supports **Anthropic** (Claude) and **OpenAI** (GPT-4o, GPT-5) as providers. Two-pass extraction: the first pass extracts style parameters, the second pass verifies and corrects them. Extracted styles can be downloaded as JSON profiles for reuse without further API calls.
|
|
84
|
+
|
|
74
85
|
## Documentation
|
|
75
86
|
|
|
76
87
|
Full documentation is available at [matplotly.readthedocs.io](https://matplotly.readthedocs.io).
|
|
@@ -35,14 +35,14 @@
|
|
|
35
35
|
},
|
|
36
36
|
{
|
|
37
37
|
"cell_type": "code",
|
|
38
|
-
"execution_count":
|
|
38
|
+
"execution_count": 3,
|
|
39
39
|
"id": "simple-bar",
|
|
40
40
|
"metadata": {},
|
|
41
41
|
"outputs": [
|
|
42
42
|
{
|
|
43
43
|
"data": {
|
|
44
44
|
"application/vnd.jupyter.widget-view+json": {
|
|
45
|
-
"model_id": "
|
|
45
|
+
"model_id": "72d2e487e8d6427caf5afb34abd724ed",
|
|
46
46
|
"version_major": 2,
|
|
47
47
|
"version_minor": 0
|
|
48
48
|
},
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
{
|
|
43
43
|
"data": {
|
|
44
44
|
"application/vnd.jupyter.widget-view+json": {
|
|
45
|
-
"model_id": "
|
|
45
|
+
"model_id": "aa8c7e67dcb54660b174429a3ada6246",
|
|
46
46
|
"version_major": 2,
|
|
47
47
|
"version_minor": 0
|
|
48
48
|
},
|
|
@@ -526,14 +526,14 @@
|
|
|
526
526
|
},
|
|
527
527
|
{
|
|
528
528
|
"cell_type": "code",
|
|
529
|
-
"execution_count":
|
|
529
|
+
"execution_count": 4,
|
|
530
530
|
"id": "mixed",
|
|
531
531
|
"metadata": {},
|
|
532
532
|
"outputs": [
|
|
533
533
|
{
|
|
534
534
|
"data": {
|
|
535
535
|
"application/vnd.jupyter.widget-view+json": {
|
|
536
|
-
"model_id": "
|
|
536
|
+
"model_id": "3c87bb19c3ba454e8ef595ceabefd68f",
|
|
537
537
|
"version_major": 2,
|
|
538
538
|
"version_minor": 0
|
|
539
539
|
},
|
|
@@ -720,14 +720,14 @@
|
|
|
720
720
|
},
|
|
721
721
|
{
|
|
722
722
|
"cell_type": "code",
|
|
723
|
-
"execution_count":
|
|
723
|
+
"execution_count": 3,
|
|
724
724
|
"id": "subplot",
|
|
725
725
|
"metadata": {},
|
|
726
726
|
"outputs": [
|
|
727
727
|
{
|
|
728
728
|
"data": {
|
|
729
729
|
"application/vnd.jupyter.widget-view+json": {
|
|
730
|
-
"model_id": "
|
|
730
|
+
"model_id": "34bac299766141ddb323a8eb0915da24",
|
|
731
731
|
"version_major": 2,
|
|
732
732
|
"version_minor": 0
|
|
733
733
|
},
|