kaxe 1.5.0.dev2__tar.gz → 1.5.0.dev3__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.
- {kaxe-1.5.0.dev2/src/kaxe.egg-info → kaxe-1.5.0.dev3}/PKG-INFO +19 -11
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/README.md +9 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/pyproject.toml +8 -8
- kaxe-1.5.0.dev3/src/kaxe/_require_3d.py +9 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/core/d3/openglrender.py +5 -6
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/objects/_lazy.py +2 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/objects/d2/arrow.py +2 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/objects/d2/equation.py +3 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/objects/d2/function.py +3 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/objects/d2/inequality.py +5 -2
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/objects/d2/parameter.py +2 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/objects/d3/mesh.py +3 -1
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/objects/function.py +2 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/objects/point.py +2 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/plot/__init__.py +0 -1
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/plot/_lazy.py +2 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3/src/kaxe.egg-info}/PKG-INFO +19 -11
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe.egg-info/SOURCES.txt +1 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe.egg-info/requires.txt +6 -5
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/LICENSE +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/MANIFEST.in +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/setup.cfg +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/__init__.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/chart/__init__.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/chart/bar.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/chart/box.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/chart/pie.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/chart/qqplot.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/core/__init__.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/core/axis.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/core/bounds.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/core/color.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/core/d3/backend.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/core/d3/camera.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/core/d3/helper.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/core/d3/hud.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/core/d3/objects/__init__.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/core/d3/objects/color.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/core/d3/objects/line.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/core/d3/objects/point.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/core/d3/objects/pointer.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/core/d3/objects/triangle.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/core/d3/translator.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/core/draw.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/core/fileloader.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/core/helper.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/core/legend.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/core/line.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/core/marker.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/core/profiler.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/core/round.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/core/shapes.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/core/styles.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/core/svg.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/core/svg_pdf.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/core/symbol.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/core/text.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/core/window.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/data/__init__.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/data/excel.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/objects/__init__.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/objects/d2/__init__.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/objects/d2/bubble.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/objects/d2/contour.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/objects/d2/fill.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/objects/d2/map.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/objects/d2/pillar.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/objects/d2/point.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/objects/d3/__init__.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/objects/d3/base.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/objects/d3/function.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/objects/d3/point.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/objects/d3/potato.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/objects/legend.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/objects/mapdata.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/objects/text.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/plot/box.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/plot/constants.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/plot/d3/__init__.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/plot/d3/axes.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/plot/d3/geometry.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/plot/d3/plot3d.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/plot/d3/variants.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/plot/double.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/plot/empty.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/plot/grid.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/plot/log.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/plot/polar.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/plot/standard.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/plot/themes.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/plot/zoom.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/plot/zoom_connector.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/resources/__init__.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/resources/computer-modern-family/__init__.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/resources/computer-modern-family/cmu.bright-oblique.ttf +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/resources/computer-modern-family/cmu.bright-roman.ttf +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/resources/computer-modern-family/cmu.bright-semibold.ttf +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/resources/computer-modern-family/cmu.bright-semiboldoblique.ttf +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/resources/computer-modern-family/cmu.classical-serif-italic.ttf +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/resources/computer-modern-family/cmu.concrete-bold.ttf +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/resources/computer-modern-family/cmu.concrete-bolditalic.ttf +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/resources/computer-modern-family/cmu.concrete-italic.ttf +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/resources/computer-modern-family/cmu.concrete-roman.ttf +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/resources/computer-modern-family/cmu.sans-serif-bold.ttf +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/resources/computer-modern-family/cmu.sans-serif-boldoblique.ttf +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/resources/computer-modern-family/cmu.sans-serif-demi-condensed-demicondensed.ttf +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/resources/computer-modern-family/cmu.sans-serif-medium.ttf +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/resources/computer-modern-family/cmu.sans-serif-oblique.ttf +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/resources/computer-modern-family/cmu.serif-bold.ttf +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/resources/computer-modern-family/cmu.serif-bolditalic.ttf +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/resources/computer-modern-family/cmu.serif-extra-boldslanted.ttf +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/resources/computer-modern-family/cmu.serif-extra-romanslanted.ttf +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/resources/computer-modern-family/cmu.serif-italic.ttf +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/resources/computer-modern-family/cmu.serif-roman.ttf +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/resources/computer-modern-family/cmu.serif-upright-italic-uprightitalic.ttf +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/resources/computer-modern-family/cmu.typewriter-text-bold.ttf +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/resources/computer-modern-family/cmu.typewriter-text-bolditalic.ttf +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/resources/computer-modern-family/cmu.typewriter-text-italic.ttf +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/resources/computer-modern-family/cmu.typewriter-text-light.ttf +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/resources/computer-modern-family/cmu.typewriter-text-lightoblique.ttf +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/resources/computer-modern-family/cmu.typewriter-text-regular.ttf +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/resources/computer-modern-family/cmu.typewriter-text-variable-width-italic.ttf +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/resources/computer-modern-family/cmu.typewriter-text-variable-width-medium.ttf +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/resources/computer-modern-family/readme.txt +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/resources/logo-small.png +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/resources/symbolcross.png +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/resources/symboldonut.png +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/resources/symbollollipop.png +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/resources/symboltriangle.png +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe.egg-info/dependency_links.txt +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe.egg-info/top_level.txt +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/tests/test.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/tests/test2.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/tests/test3.py +0 -0
- {kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/tests/test_5.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: kaxe
|
|
3
|
-
Version: 1.5.0.
|
|
3
|
+
Version: 1.5.0.dev3
|
|
4
4
|
Summary: A small graphing tool for functions, points, equations and more
|
|
5
5
|
Author-email: Valter Yde Daugberg <valteryde@hotmail.com>
|
|
6
6
|
Project-URL: Homepage, https://github.com/valteryde/kaxe
|
|
@@ -11,20 +11,19 @@ Classifier: Operating System :: OS Independent
|
|
|
11
11
|
Requires-Python: >=3.9
|
|
12
12
|
Description-Content-Type: text/markdown
|
|
13
13
|
License-File: LICENSE
|
|
14
|
+
Requires-Dist: numpy
|
|
14
15
|
Requires-Dist: pillow
|
|
15
16
|
Requires-Dist: fondi>=0.2.0
|
|
16
|
-
Requires-Dist: sympy
|
|
17
|
-
Requires-Dist: scipy
|
|
18
17
|
Requires-Dist: openpyxl
|
|
19
18
|
Requires-Dist: tqdm
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
Requires-Dist:
|
|
23
|
-
Requires-Dist:
|
|
24
|
-
Requires-Dist:
|
|
25
|
-
Requires-Dist:
|
|
26
|
-
Requires-Dist:
|
|
27
|
-
Requires-Dist:
|
|
19
|
+
Provides-Extra: core
|
|
20
|
+
Provides-Extra: 3d
|
|
21
|
+
Requires-Dist: scipy; extra == "3d"
|
|
22
|
+
Requires-Dist: pyopengl; extra == "3d"
|
|
23
|
+
Requires-Dist: PySDL2; extra == "3d"
|
|
24
|
+
Requires-Dist: pysdl2-dll; extra == "3d"
|
|
25
|
+
Requires-Dist: numpy-stl; extra == "3d"
|
|
26
|
+
Requires-Dist: psutil; extra == "3d"
|
|
28
27
|
Provides-Extra: pdf
|
|
29
28
|
Requires-Dist: reportlab>=4.0; extra == "pdf"
|
|
30
29
|
Requires-Dist: fonttools>=4.0; extra == "pdf"
|
|
@@ -39,6 +38,15 @@ Kaxe is a lightweight, pure-Python plotting library for publication-quality figu
|
|
|
39
38
|
|
|
40
39
|
Documentation: [kaxe.readthedocs.io](https://kaxe.readthedocs.io/en/latest/)
|
|
41
40
|
|
|
41
|
+
## Installation
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
pip install kaxe # 2D plotting (default)
|
|
45
|
+
pip install kaxe[3d] # add 3D plotting (OpenGL)
|
|
46
|
+
pip install kaxe[pdf] # add PDF export
|
|
47
|
+
pip install kaxe[3d,pdf] # 3D + PDF
|
|
48
|
+
```
|
|
49
|
+
|
|
42
50
|
## Quick example
|
|
43
51
|
|
|
44
52
|
```python
|
|
@@ -7,6 +7,15 @@ Kaxe is a lightweight, pure-Python plotting library for publication-quality figu
|
|
|
7
7
|
|
|
8
8
|
Documentation: [kaxe.readthedocs.io](https://kaxe.readthedocs.io/en/latest/)
|
|
9
9
|
|
|
10
|
+
## Installation
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
pip install kaxe # 2D plotting (default)
|
|
14
|
+
pip install kaxe[3d] # add 3D plotting (OpenGL)
|
|
15
|
+
pip install kaxe[pdf] # add PDF export
|
|
16
|
+
pip install kaxe[3d,pdf] # 3D + PDF
|
|
17
|
+
```
|
|
18
|
+
|
|
10
19
|
## Quick example
|
|
11
20
|
|
|
12
21
|
```python
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "kaxe"
|
|
3
|
-
version = "1.5.0.
|
|
3
|
+
version = "1.5.0.dev3"
|
|
4
4
|
authors = [
|
|
5
5
|
{ name="Valter Yde Daugberg", email="valteryde@hotmail.com" },
|
|
6
6
|
]
|
|
@@ -13,23 +13,23 @@ classifiers = [
|
|
|
13
13
|
"Operating System :: OS Independent",
|
|
14
14
|
]
|
|
15
15
|
dependencies = [
|
|
16
|
+
"numpy",
|
|
16
17
|
"pillow",
|
|
17
18
|
"fondi>=0.2.0",
|
|
18
|
-
"sympy",
|
|
19
|
-
"scipy",
|
|
20
19
|
"openpyxl",
|
|
21
20
|
"tqdm",
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
]
|
|
22
|
+
|
|
23
|
+
[project.optional-dependencies]
|
|
24
|
+
core = []
|
|
25
|
+
3d = [
|
|
26
|
+
"scipy",
|
|
24
27
|
"pyopengl",
|
|
25
28
|
"PySDL2",
|
|
26
29
|
"pysdl2-dll",
|
|
27
30
|
"numpy-stl",
|
|
28
31
|
"psutil",
|
|
29
|
-
"opencv-python-headless",
|
|
30
32
|
]
|
|
31
|
-
|
|
32
|
-
[project.optional-dependencies]
|
|
33
33
|
pdf = ["reportlab>=4.0", "fonttools>=4.0"]
|
|
34
34
|
|
|
35
35
|
[project.urls]
|
|
@@ -18,7 +18,6 @@ import sdl2.ext
|
|
|
18
18
|
import sdl2.video
|
|
19
19
|
import ctypes
|
|
20
20
|
from ..fileloader import loadFile
|
|
21
|
-
import cv2
|
|
22
21
|
from ..profiler import Profiler
|
|
23
22
|
from ..helper import to_numpy
|
|
24
23
|
from .hud import ViewportHud
|
|
@@ -808,12 +807,12 @@ class OpenGLRender:
|
|
|
808
807
|
if overlay_np.shape[1] > self.width or overlay_np.shape[0] > self.height:
|
|
809
808
|
overlay_np = overlay_np[:self.height, :self.width]
|
|
810
809
|
|
|
811
|
-
with self.profiler.measure("
|
|
810
|
+
with self.profiler.measure("overlay_resize"):
|
|
812
811
|
if overlay_np.shape[1] != self.guiWidth or overlay_np.shape[0] != self.guiHeight:
|
|
813
|
-
overlay_np =
|
|
814
|
-
overlay_np
|
|
815
|
-
|
|
816
|
-
|
|
812
|
+
overlay_np = np.asarray(
|
|
813
|
+
Image.fromarray(overlay_np).resize(
|
|
814
|
+
(self.guiWidth, self.guiHeight), Image.BILINEAR
|
|
815
|
+
)
|
|
817
816
|
)
|
|
818
817
|
|
|
819
818
|
return overlay_np
|
|
@@ -121,6 +121,8 @@ class Arrow:
|
|
|
121
121
|
return np.cos(theta) * ortho1 + np.sin(theta) * ortho2
|
|
122
122
|
|
|
123
123
|
def finalize3D(self, parent):
|
|
124
|
+
from ..._require_3d import require_3d
|
|
125
|
+
require_3d()
|
|
124
126
|
from ...core.d3.objects import Triangle, Line3D
|
|
125
127
|
|
|
126
128
|
pixel0 = parent.pixel(*self.p0)
|
|
@@ -185,10 +185,12 @@ class Equation:
|
|
|
185
185
|
|
|
186
186
|
|
|
187
187
|
def finalize(self, parent):
|
|
188
|
+
from ..._require_3d import require_3d
|
|
188
189
|
from ...core.d3.translator import translate2DTo3DObjects, getEquivalent2DPlot, has3DReference
|
|
189
190
|
|
|
190
191
|
# Translate to 3D plot
|
|
191
192
|
if parent == identities.XYZPLOT:
|
|
193
|
+
require_3d()
|
|
192
194
|
parent = getEquivalent2DPlot(parent)
|
|
193
195
|
scale = getattr(parent, 'getVisualScale', lambda: 1.0)()
|
|
194
196
|
self._effectiveWidth = max(1, int(self.width * scale))
|
|
@@ -201,6 +203,7 @@ class Equation:
|
|
|
201
203
|
|
|
202
204
|
# Translate to 3D plot
|
|
203
205
|
if has3DReference(parent):
|
|
206
|
+
require_3d()
|
|
204
207
|
translate2DTo3DObjects(parent, self.batch)
|
|
205
208
|
|
|
206
209
|
# algoritmen burde findes alle pixels hvor ligningen går op
|
|
@@ -220,6 +220,7 @@ class Function2D:
|
|
|
220
220
|
|
|
221
221
|
def finalize(self, parent):
|
|
222
222
|
|
|
223
|
+
from ..._require_3d import require_3d
|
|
223
224
|
from ...core.d3.translator import translate2DTo3DObjects, getEquivalent2DPlot, has3DReference
|
|
224
225
|
|
|
225
226
|
self.lineSegments = [[]]
|
|
@@ -228,6 +229,7 @@ class Function2D:
|
|
|
228
229
|
|
|
229
230
|
# translate xyz
|
|
230
231
|
if parent == identities.XYZPLOT:
|
|
232
|
+
require_3d()
|
|
231
233
|
parent = getEquivalent2DPlot(parent)
|
|
232
234
|
|
|
233
235
|
|
|
@@ -298,6 +300,7 @@ class Function2D:
|
|
|
298
300
|
|
|
299
301
|
# translate fully to xyz
|
|
300
302
|
if has3DReference(parent):
|
|
303
|
+
require_3d()
|
|
301
304
|
translate2DTo3DObjects(parent, self.batch)
|
|
302
305
|
# translate2DTo3DObjects(parent, self.fillbatch)
|
|
303
306
|
|
|
@@ -20,9 +20,10 @@ _OPS = {
|
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
def _resolve_plot(parent):
|
|
23
|
-
from ...core.d3.translator import getEquivalent2DPlot
|
|
24
|
-
|
|
25
23
|
if getattr(parent, 'identity', None) == identities.XYZPLOT:
|
|
24
|
+
from ..._require_3d import require_3d
|
|
25
|
+
require_3d()
|
|
26
|
+
from ...core.d3.translator import getEquivalent2DPlot
|
|
26
27
|
return getEquivalent2DPlot(parent)
|
|
27
28
|
return parent
|
|
28
29
|
|
|
@@ -187,6 +188,7 @@ class Inequality:
|
|
|
187
188
|
)
|
|
188
189
|
|
|
189
190
|
def finalize(self, parent):
|
|
191
|
+
from ..._require_3d import require_3d
|
|
190
192
|
from ...core.d3.translator import translate2DTo3DObjects, has3DReference
|
|
191
193
|
|
|
192
194
|
plot = _resolve_plot(parent)
|
|
@@ -194,6 +196,7 @@ class Inequality:
|
|
|
194
196
|
self.__build_hatch__(plot)
|
|
195
197
|
|
|
196
198
|
if has3DReference(plot):
|
|
199
|
+
require_3d()
|
|
197
200
|
translate2DTo3DObjects(plot, self.hatch_batch)
|
|
198
201
|
|
|
199
202
|
def push(self, x, y):
|
|
@@ -86,7 +86,9 @@ class Mesh(Base3DObject):
|
|
|
86
86
|
"""
|
|
87
87
|
|
|
88
88
|
if not STLLIBIMPORTED:
|
|
89
|
-
raise ImportError(
|
|
89
|
+
raise ImportError(
|
|
90
|
+
'3D features require optional dependencies. Install with: pip install kaxe[3d]'
|
|
91
|
+
)
|
|
90
92
|
|
|
91
93
|
return Mesh(stlmesh.Mesh.from_file(fpath), **kwargs)
|
|
92
94
|
|
|
@@ -57,6 +57,8 @@ class Function:
|
|
|
57
57
|
return Function2D(f, color=color, width=width, *args, **kwargs)
|
|
58
58
|
|
|
59
59
|
if n == 2:
|
|
60
|
+
from .._require_3d import require_3d
|
|
61
|
+
require_3d()
|
|
60
62
|
from .d3.function import Function3D
|
|
61
63
|
return Function3D(f, color=color, numPoints=numPoints, fill=fill, *args, **kwargs)
|
|
62
64
|
|
|
@@ -38,6 +38,8 @@ class Points:
|
|
|
38
38
|
def __new__(self, x, y, z = None, **kwargs) -> Union[Points2D, "Points3D"]:
|
|
39
39
|
|
|
40
40
|
if z:
|
|
41
|
+
from .._require_3d import require_3d
|
|
42
|
+
require_3d()
|
|
41
43
|
from .d3.point import Points3D
|
|
42
44
|
return Points3D(x, y, z, **kwargs)
|
|
43
45
|
return Points2D(x, y, **kwargs)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: kaxe
|
|
3
|
-
Version: 1.5.0.
|
|
3
|
+
Version: 1.5.0.dev3
|
|
4
4
|
Summary: A small graphing tool for functions, points, equations and more
|
|
5
5
|
Author-email: Valter Yde Daugberg <valteryde@hotmail.com>
|
|
6
6
|
Project-URL: Homepage, https://github.com/valteryde/kaxe
|
|
@@ -11,20 +11,19 @@ Classifier: Operating System :: OS Independent
|
|
|
11
11
|
Requires-Python: >=3.9
|
|
12
12
|
Description-Content-Type: text/markdown
|
|
13
13
|
License-File: LICENSE
|
|
14
|
+
Requires-Dist: numpy
|
|
14
15
|
Requires-Dist: pillow
|
|
15
16
|
Requires-Dist: fondi>=0.2.0
|
|
16
|
-
Requires-Dist: sympy
|
|
17
|
-
Requires-Dist: scipy
|
|
18
17
|
Requires-Dist: openpyxl
|
|
19
18
|
Requires-Dist: tqdm
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
Requires-Dist:
|
|
23
|
-
Requires-Dist:
|
|
24
|
-
Requires-Dist:
|
|
25
|
-
Requires-Dist:
|
|
26
|
-
Requires-Dist:
|
|
27
|
-
Requires-Dist:
|
|
19
|
+
Provides-Extra: core
|
|
20
|
+
Provides-Extra: 3d
|
|
21
|
+
Requires-Dist: scipy; extra == "3d"
|
|
22
|
+
Requires-Dist: pyopengl; extra == "3d"
|
|
23
|
+
Requires-Dist: PySDL2; extra == "3d"
|
|
24
|
+
Requires-Dist: pysdl2-dll; extra == "3d"
|
|
25
|
+
Requires-Dist: numpy-stl; extra == "3d"
|
|
26
|
+
Requires-Dist: psutil; extra == "3d"
|
|
28
27
|
Provides-Extra: pdf
|
|
29
28
|
Requires-Dist: reportlab>=4.0; extra == "pdf"
|
|
30
29
|
Requires-Dist: fonttools>=4.0; extra == "pdf"
|
|
@@ -39,6 +38,15 @@ Kaxe is a lightweight, pure-Python plotting library for publication-quality figu
|
|
|
39
38
|
|
|
40
39
|
Documentation: [kaxe.readthedocs.io](https://kaxe.readthedocs.io/en/latest/)
|
|
41
40
|
|
|
41
|
+
## Installation
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
pip install kaxe # 2D plotting (default)
|
|
45
|
+
pip install kaxe[3d] # add 3D plotting (OpenGL)
|
|
46
|
+
pip install kaxe[pdf] # add PDF export
|
|
47
|
+
pip install kaxe[3d,pdf] # 3D + PDF
|
|
48
|
+
```
|
|
49
|
+
|
|
42
50
|
## Quick example
|
|
43
51
|
|
|
44
52
|
```python
|
|
@@ -1,17 +1,18 @@
|
|
|
1
|
+
numpy
|
|
1
2
|
pillow
|
|
2
3
|
fondi>=0.2.0
|
|
3
|
-
sympy
|
|
4
|
-
scipy
|
|
5
4
|
openpyxl
|
|
6
5
|
tqdm
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
|
|
7
|
+
[3d]
|
|
8
|
+
scipy
|
|
9
9
|
pyopengl
|
|
10
10
|
PySDL2
|
|
11
11
|
pysdl2-dll
|
|
12
12
|
numpy-stl
|
|
13
13
|
psutil
|
|
14
|
-
|
|
14
|
+
|
|
15
|
+
[core]
|
|
15
16
|
|
|
16
17
|
[pdf]
|
|
17
18
|
reportlab>=4.0
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/resources/computer-modern-family/cmu.bright-oblique.ttf
RENAMED
|
File without changes
|
{kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/resources/computer-modern-family/cmu.bright-roman.ttf
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/resources/computer-modern-family/cmu.concrete-bold.ttf
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/resources/computer-modern-family/cmu.concrete-roman.ttf
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/resources/computer-modern-family/cmu.serif-bold.ttf
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/resources/computer-modern-family/cmu.serif-italic.ttf
RENAMED
|
File without changes
|
{kaxe-1.5.0.dev2 → kaxe-1.5.0.dev3}/src/kaxe/resources/computer-modern-family/cmu.serif-roman.ttf
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|