kaxe 1.4.4.dev5__tar.gz → 1.4.4.dev7__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.
Files changed (131) hide show
  1. {kaxe-1.4.4.dev5/src/kaxe.egg-info → kaxe-1.4.4.dev7}/PKG-INFO +1 -1
  2. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/pyproject.toml +1 -1
  3. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/core/svg_pdf.py +17 -7
  4. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7/src/kaxe.egg-info}/PKG-INFO +1 -1
  5. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/LICENSE +0 -0
  6. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/MANIFEST.in +0 -0
  7. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/README.md +0 -0
  8. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/setup.cfg +0 -0
  9. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/__init__.py +0 -0
  10. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/chart/__init__.py +0 -0
  11. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/chart/bar.py +0 -0
  12. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/chart/box.py +0 -0
  13. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/chart/pie.py +0 -0
  14. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/chart/qqplot.py +0 -0
  15. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/core/__init__.py +0 -0
  16. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/core/axis.py +0 -0
  17. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/core/color.py +0 -0
  18. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/core/d3/backend.py +0 -0
  19. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/core/d3/camera.py +0 -0
  20. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/core/d3/helper.py +0 -0
  21. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/core/d3/hud.py +0 -0
  22. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/core/d3/objects/__init__.py +0 -0
  23. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/core/d3/objects/color.py +0 -0
  24. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/core/d3/objects/line.py +0 -0
  25. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/core/d3/objects/point.py +0 -0
  26. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/core/d3/objects/pointer.py +0 -0
  27. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/core/d3/objects/triangle.py +0 -0
  28. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/core/d3/openglrender.py +0 -0
  29. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/core/d3/translator.py +0 -0
  30. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/core/draw.py +0 -0
  31. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/core/fileloader.py +0 -0
  32. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/core/helper.py +0 -0
  33. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/core/legend.py +0 -0
  34. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/core/line.py +0 -0
  35. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/core/marker.py +0 -0
  36. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/core/profiler.py +0 -0
  37. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/core/round.py +0 -0
  38. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/core/shapes.py +0 -0
  39. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/core/styles.py +0 -0
  40. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/core/svg.py +0 -0
  41. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/core/symbol.py +0 -0
  42. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/core/text.py +0 -0
  43. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/core/window.py +0 -0
  44. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/data/__init__.py +0 -0
  45. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/data/excel.py +0 -0
  46. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/objects/__init__.py +0 -0
  47. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/objects/_lazy.py +0 -0
  48. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/objects/d2/__init__.py +0 -0
  49. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/objects/d2/arrow.py +0 -0
  50. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/objects/d2/bubble.py +0 -0
  51. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/objects/d2/contour.py +0 -0
  52. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/objects/d2/equation.py +0 -0
  53. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/objects/d2/fill.py +0 -0
  54. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/objects/d2/function.py +0 -0
  55. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/objects/d2/map.py +0 -0
  56. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/objects/d2/parameter.py +0 -0
  57. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/objects/d2/pillar.py +0 -0
  58. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/objects/d2/point.py +0 -0
  59. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/objects/d3/__init__.py +0 -0
  60. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/objects/d3/base.py +0 -0
  61. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/objects/d3/function.py +0 -0
  62. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/objects/d3/mesh.py +0 -0
  63. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/objects/d3/point.py +0 -0
  64. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/objects/d3/potato.py +0 -0
  65. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/objects/function.py +0 -0
  66. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/objects/legend.py +0 -0
  67. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/objects/mapdata.py +0 -0
  68. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/objects/point.py +0 -0
  69. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/objects/text.py +0 -0
  70. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/plot/__init__.py +0 -0
  71. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/plot/_lazy.py +0 -0
  72. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/plot/box.py +0 -0
  73. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/plot/constants.py +0 -0
  74. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/plot/d3/__init__.py +0 -0
  75. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/plot/d3/axes.py +0 -0
  76. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/plot/d3/geometry.py +0 -0
  77. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/plot/d3/plot3d.py +0 -0
  78. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/plot/d3/variants.py +0 -0
  79. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/plot/double.py +0 -0
  80. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/plot/empty.py +0 -0
  81. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/plot/grid.py +0 -0
  82. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/plot/log.py +0 -0
  83. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/plot/polar.py +0 -0
  84. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/plot/standard.py +0 -0
  85. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/plot/themes.py +0 -0
  86. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/plot/zoom.py +0 -0
  87. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/plot/zoom_connector.py +0 -0
  88. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/resources/__init__.py +0 -0
  89. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/resources/computer-modern-family/__init__.py +0 -0
  90. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/resources/computer-modern-family/cmu.bright-oblique.ttf +0 -0
  91. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/resources/computer-modern-family/cmu.bright-roman.ttf +0 -0
  92. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/resources/computer-modern-family/cmu.bright-semibold.ttf +0 -0
  93. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/resources/computer-modern-family/cmu.bright-semiboldoblique.ttf +0 -0
  94. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/resources/computer-modern-family/cmu.classical-serif-italic.ttf +0 -0
  95. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/resources/computer-modern-family/cmu.concrete-bold.ttf +0 -0
  96. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/resources/computer-modern-family/cmu.concrete-bolditalic.ttf +0 -0
  97. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/resources/computer-modern-family/cmu.concrete-italic.ttf +0 -0
  98. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/resources/computer-modern-family/cmu.concrete-roman.ttf +0 -0
  99. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/resources/computer-modern-family/cmu.sans-serif-bold.ttf +0 -0
  100. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/resources/computer-modern-family/cmu.sans-serif-boldoblique.ttf +0 -0
  101. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/resources/computer-modern-family/cmu.sans-serif-demi-condensed-demicondensed.ttf +0 -0
  102. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/resources/computer-modern-family/cmu.sans-serif-medium.ttf +0 -0
  103. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/resources/computer-modern-family/cmu.sans-serif-oblique.ttf +0 -0
  104. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/resources/computer-modern-family/cmu.serif-bold.ttf +0 -0
  105. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/resources/computer-modern-family/cmu.serif-bolditalic.ttf +0 -0
  106. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/resources/computer-modern-family/cmu.serif-extra-boldslanted.ttf +0 -0
  107. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/resources/computer-modern-family/cmu.serif-extra-romanslanted.ttf +0 -0
  108. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/resources/computer-modern-family/cmu.serif-italic.ttf +0 -0
  109. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/resources/computer-modern-family/cmu.serif-roman.ttf +0 -0
  110. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/resources/computer-modern-family/cmu.serif-upright-italic-uprightitalic.ttf +0 -0
  111. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/resources/computer-modern-family/cmu.typewriter-text-bold.ttf +0 -0
  112. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/resources/computer-modern-family/cmu.typewriter-text-bolditalic.ttf +0 -0
  113. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/resources/computer-modern-family/cmu.typewriter-text-italic.ttf +0 -0
  114. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/resources/computer-modern-family/cmu.typewriter-text-light.ttf +0 -0
  115. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/resources/computer-modern-family/cmu.typewriter-text-lightoblique.ttf +0 -0
  116. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/resources/computer-modern-family/cmu.typewriter-text-regular.ttf +0 -0
  117. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/resources/computer-modern-family/cmu.typewriter-text-variable-width-italic.ttf +0 -0
  118. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/resources/computer-modern-family/cmu.typewriter-text-variable-width-medium.ttf +0 -0
  119. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/resources/computer-modern-family/readme.txt +0 -0
  120. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/resources/logo-small.png +0 -0
  121. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/resources/symbolcross.png +0 -0
  122. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/resources/symboldonut.png +0 -0
  123. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/resources/symbollollipop.png +0 -0
  124. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe/resources/symboltriangle.png +0 -0
  125. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe.egg-info/SOURCES.txt +0 -0
  126. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe.egg-info/dependency_links.txt +0 -0
  127. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe.egg-info/requires.txt +0 -0
  128. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/src/kaxe.egg-info/top_level.txt +0 -0
  129. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/tests/test.py +0 -0
  130. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/tests/test2.py +0 -0
  131. {kaxe-1.4.4.dev5 → kaxe-1.4.4.dev7}/tests/test3.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kaxe
3
- Version: 1.4.4.dev5
3
+ Version: 1.4.4.dev7
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
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "kaxe"
3
- version = "1.4.4.dev5"
3
+ version = "1.4.4.dev7"
4
4
  authors = [
5
5
  { name="Valter Yde Daugberg", email="valteryde@hotmail.com" },
6
6
  ]
@@ -21,6 +21,7 @@ if TYPE_CHECKING:
21
21
 
22
22
  _PDF_INSTALL_HINT = "PDF export requires reportlab. Install with: pip install kaxe[pdf]"
23
23
  _FONDI_FONTS_REGISTERED = False
24
+ _REGISTERED_PDF_FONTS: set[str] = set()
24
25
  _OTF_TTF_CACHE: dict[str, bytes] = {}
25
26
 
26
27
  _TRANSFORM_RE = re.compile(
@@ -137,6 +138,7 @@ def _convert_otf_to_ttf_bytes(otf_path: os.PathLike[str]) -> bytes:
137
138
  for g in glyf.glyphs.values()
138
139
  )
139
140
  maxp.compile(font)
141
+ font["maxp"] = maxp
140
142
 
141
143
  post = font["post"]
142
144
  post.formatType = 2.0
@@ -182,6 +184,7 @@ def _register_fondi_fonts() -> None:
182
184
  else:
183
185
  data = candidate.read_bytes()
184
186
  pdfmetrics.registerFont(TTFont(name, io.BytesIO(data)))
187
+ _REGISTERED_PDF_FONTS.add(name)
185
188
  return True
186
189
  except Exception as exc:
187
190
  logging.warning("Could not register PDF font %s from %s: %s", name, candidate, exc)
@@ -209,10 +212,13 @@ def _register_fondi_fonts() -> None:
209
212
 
210
213
 
211
214
  def _resolve_font_name(family: Optional[str], style: Optional[str]) -> str:
212
- if family == "FondiNewCM" and style == "italic":
213
- return "FondiNewCM-Italic"
214
215
  if family == "FondiNewCM":
215
- return "FondiNewCM"
216
+ if style == "italic" and "FondiNewCM-Italic" in _REGISTERED_PDF_FONTS:
217
+ return "FondiNewCM-Italic"
218
+ if "FondiNewCM" in _REGISTERED_PDF_FONTS:
219
+ return "FondiNewCM"
220
+ logging.warning("FondiNewCM unavailable; using Helvetica for PDF text")
221
+ return "Helvetica"
216
222
  if family:
217
223
  logging.warning("Unknown PDF font family %r; using Helvetica", family)
218
224
  return "Helvetica"
@@ -256,16 +262,20 @@ def _is_identity(matrix: _Matrix, tol: float = 1e-9) -> bool:
256
262
 
257
263
 
258
264
  def _matrix_to_reportlab_transform(matrix: _Matrix, height: int, *, nested: bool) -> list[float]:
259
- """Map SVG-local y-down coords to ReportLab parent coords via Group.transform."""
260
- # Conjugate y-down SVG affine with flip-to-y-up: T(height) * M * F, F:(x,y)->(x,-y)
261
- f = height if not nested else 0.0
265
+ """Map SVG-local y-down coords to ReportLab via Group.transform.
266
+
267
+ Child shapes use local coords (x, -y_svg). For a parent SVG transform
268
+ [a b c d e f], the equivalent ReportLab affine is
269
+ [a, -b, -c, d, e, height - f] at the document root, or
270
+ [a, -b, -c, d, e, -f] inside an already-flipped parent group.
271
+ """
262
272
  return [
263
273
  matrix.a,
264
274
  -matrix.b,
265
275
  -matrix.c,
266
276
  matrix.d,
267
277
  matrix.e,
268
- f + matrix.f,
278
+ height - matrix.f if not nested else -matrix.f,
269
279
  ]
270
280
 
271
281
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kaxe
3
- Version: 1.4.4.dev5
3
+ Version: 1.4.4.dev7
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
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes