kaxe 1.4.4.dev3__tar.gz → 1.4.4.dev5__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.4.4.dev3/src/kaxe.egg-info → kaxe-1.4.4.dev5}/PKG-INFO +4 -1
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/pyproject.toml +4 -1
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/core/svg.py +10 -1
- kaxe-1.4.4.dev5/src/kaxe/core/svg_pdf.py +751 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/core/window.py +28 -2
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/plot/d3/plot3d.py +13 -5
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/plot/grid.py +27 -2
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5/src/kaxe.egg-info}/PKG-INFO +4 -1
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe.egg-info/SOURCES.txt +1 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe.egg-info/requires.txt +4 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/LICENSE +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/MANIFEST.in +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/README.md +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/setup.cfg +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/__init__.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/chart/__init__.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/chart/bar.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/chart/box.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/chart/pie.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/chart/qqplot.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/core/__init__.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/core/axis.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/core/color.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/core/d3/backend.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/core/d3/camera.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/core/d3/helper.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/core/d3/hud.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/core/d3/objects/__init__.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/core/d3/objects/color.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/core/d3/objects/line.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/core/d3/objects/point.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/core/d3/objects/pointer.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/core/d3/objects/triangle.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/core/d3/openglrender.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/core/d3/translator.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/core/draw.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/core/fileloader.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/core/helper.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/core/legend.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/core/line.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/core/marker.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/core/profiler.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/core/round.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/core/shapes.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/core/styles.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/core/symbol.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/core/text.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/data/__init__.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/data/excel.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/objects/__init__.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/objects/_lazy.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/objects/d2/__init__.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/objects/d2/arrow.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/objects/d2/bubble.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/objects/d2/contour.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/objects/d2/equation.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/objects/d2/fill.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/objects/d2/function.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/objects/d2/map.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/objects/d2/parameter.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/objects/d2/pillar.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/objects/d2/point.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/objects/d3/__init__.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/objects/d3/base.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/objects/d3/function.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/objects/d3/mesh.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/objects/d3/point.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/objects/d3/potato.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/objects/function.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/objects/legend.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/objects/mapdata.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/objects/point.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/objects/text.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/plot/__init__.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/plot/_lazy.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/plot/box.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/plot/constants.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/plot/d3/__init__.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/plot/d3/axes.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/plot/d3/geometry.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/plot/d3/variants.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/plot/double.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/plot/empty.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/plot/log.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/plot/polar.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/plot/standard.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/plot/themes.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/plot/zoom.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/plot/zoom_connector.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/resources/__init__.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/resources/computer-modern-family/__init__.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/resources/computer-modern-family/cmu.bright-oblique.ttf +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/resources/computer-modern-family/cmu.bright-roman.ttf +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/resources/computer-modern-family/cmu.bright-semibold.ttf +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/resources/computer-modern-family/cmu.bright-semiboldoblique.ttf +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/resources/computer-modern-family/cmu.classical-serif-italic.ttf +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/resources/computer-modern-family/cmu.concrete-bold.ttf +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/resources/computer-modern-family/cmu.concrete-bolditalic.ttf +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/resources/computer-modern-family/cmu.concrete-italic.ttf +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/resources/computer-modern-family/cmu.concrete-roman.ttf +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/resources/computer-modern-family/cmu.sans-serif-bold.ttf +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/resources/computer-modern-family/cmu.sans-serif-boldoblique.ttf +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/resources/computer-modern-family/cmu.sans-serif-demi-condensed-demicondensed.ttf +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/resources/computer-modern-family/cmu.sans-serif-medium.ttf +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/resources/computer-modern-family/cmu.sans-serif-oblique.ttf +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/resources/computer-modern-family/cmu.serif-bold.ttf +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/resources/computer-modern-family/cmu.serif-bolditalic.ttf +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/resources/computer-modern-family/cmu.serif-extra-boldslanted.ttf +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/resources/computer-modern-family/cmu.serif-extra-romanslanted.ttf +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/resources/computer-modern-family/cmu.serif-italic.ttf +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/resources/computer-modern-family/cmu.serif-roman.ttf +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/resources/computer-modern-family/cmu.serif-upright-italic-uprightitalic.ttf +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/resources/computer-modern-family/cmu.typewriter-text-bold.ttf +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/resources/computer-modern-family/cmu.typewriter-text-bolditalic.ttf +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/resources/computer-modern-family/cmu.typewriter-text-italic.ttf +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/resources/computer-modern-family/cmu.typewriter-text-light.ttf +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/resources/computer-modern-family/cmu.typewriter-text-lightoblique.ttf +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/resources/computer-modern-family/cmu.typewriter-text-regular.ttf +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/resources/computer-modern-family/cmu.typewriter-text-variable-width-italic.ttf +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/resources/computer-modern-family/cmu.typewriter-text-variable-width-medium.ttf +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/resources/computer-modern-family/readme.txt +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/resources/logo-small.png +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/resources/symbolcross.png +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/resources/symboldonut.png +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/resources/symbollollipop.png +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe/resources/symboltriangle.png +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe.egg-info/dependency_links.txt +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/src/kaxe.egg-info/top_level.txt +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/tests/test.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/tests/test2.py +0 -0
- {kaxe-1.4.4.dev3 → kaxe-1.4.4.dev5}/tests/test3.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: kaxe
|
|
3
|
-
Version: 1.4.4.
|
|
3
|
+
Version: 1.4.4.dev5
|
|
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
|
|
@@ -25,6 +25,9 @@ Requires-Dist: pysdl2-dll
|
|
|
25
25
|
Requires-Dist: numpy-stl
|
|
26
26
|
Requires-Dist: psutil
|
|
27
27
|
Requires-Dist: opencv-python-headless
|
|
28
|
+
Provides-Extra: pdf
|
|
29
|
+
Requires-Dist: reportlab>=4.0; extra == "pdf"
|
|
30
|
+
Requires-Dist: fonttools>=4.0; extra == "pdf"
|
|
28
31
|
Dynamic: license-file
|
|
29
32
|
|
|
30
33
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "kaxe"
|
|
3
|
-
version = "1.4.4.
|
|
3
|
+
version = "1.4.4.dev5"
|
|
4
4
|
authors = [
|
|
5
5
|
{ name="Valter Yde Daugberg", email="valteryde@hotmail.com" },
|
|
6
6
|
]
|
|
@@ -29,6 +29,9 @@ dependencies = [
|
|
|
29
29
|
"opencv-python-headless",
|
|
30
30
|
]
|
|
31
31
|
|
|
32
|
+
[project.optional-dependencies]
|
|
33
|
+
pdf = ["reportlab>=4.0", "fonttools>=4.0"]
|
|
34
|
+
|
|
32
35
|
[project.urls]
|
|
33
36
|
Homepage = "https://github.com/valteryde/kaxe"
|
|
34
37
|
Issues = "https://github.com/valteryde/kaxe/issues"
|
|
@@ -8,6 +8,7 @@ import io
|
|
|
8
8
|
import math
|
|
9
9
|
import os
|
|
10
10
|
import xml.etree.ElementTree as ET
|
|
11
|
+
from io import BytesIO
|
|
11
12
|
from typing import Any, Optional, Union
|
|
12
13
|
|
|
13
14
|
from PIL import Image
|
|
@@ -369,6 +370,12 @@ class SvgDocument:
|
|
|
369
370
|
body = _ascii_safe_svg_markup(body)
|
|
370
371
|
return '<?xml version="1.0" encoding="UTF-8" standalone="no"?>\n' + body
|
|
371
372
|
|
|
373
|
+
def to_pdf(self, fname: Optional[Union[str, BytesIO]] = None) -> bytes:
|
|
374
|
+
"""Render this document to PDF bytes via ReportLab."""
|
|
375
|
+
from .svg_pdf import write_pdf
|
|
376
|
+
|
|
377
|
+
return write_pdf(self, fname)
|
|
378
|
+
|
|
372
379
|
|
|
373
380
|
def parse_svg_root(xml: str) -> ET.Element:
|
|
374
381
|
"""Parse SVG XML and return the root element."""
|
|
@@ -433,7 +440,7 @@ def infer_format(fname: Union[str, os.PathLike, Any], format: Optional[str] = No
|
|
|
433
440
|
"""Infer save format from explicit format, file extension, or default to png."""
|
|
434
441
|
if format is not None:
|
|
435
442
|
fmt = format.lower().lstrip(".")
|
|
436
|
-
if fmt in ("svg", "png"):
|
|
443
|
+
if fmt in ("svg", "png", "pdf"):
|
|
437
444
|
return fmt
|
|
438
445
|
raise ValueError(f"Unsupported format: {format}")
|
|
439
446
|
|
|
@@ -443,5 +450,7 @@ def infer_format(fname: Union[str, os.PathLike, Any], format: Optional[str] = No
|
|
|
443
450
|
return "svg"
|
|
444
451
|
if lower.endswith(".png"):
|
|
445
452
|
return "png"
|
|
453
|
+
if lower.endswith(".pdf"):
|
|
454
|
+
return "pdf"
|
|
446
455
|
|
|
447
456
|
return "png"
|