prefig 0.4.0.dev20250801054919__tar.gz → 0.4.1__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 (67) hide show
  1. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/PKG-INFO +1 -1
  2. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/core/axes.py +2 -3
  3. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/core/point.py +11 -1
  4. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/core/utilities.py +4 -1
  5. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/resources/schema/pf_schema.rnc +2 -0
  6. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/resources/schema/pf_schema.rng +16 -0
  7. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/pyproject.toml +1 -1
  8. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/LICENSE +0 -0
  9. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/README.md +0 -0
  10. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/__init__.py +0 -0
  11. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/cli.py +0 -0
  12. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/core/CTM.py +0 -0
  13. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/core/__init__.py +0 -0
  14. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/core/annotations.py +0 -0
  15. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/core/area.py +0 -0
  16. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/core/arrow.py +0 -0
  17. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/core/calculus.py +0 -0
  18. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/core/circle.py +0 -0
  19. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/core/clip.py +0 -0
  20. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/core/compat.py +0 -0
  21. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/core/coordinates.py +0 -0
  22. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/core/definition.py +0 -0
  23. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/core/diagram.py +0 -0
  24. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/core/diffeqs.py +0 -0
  25. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/core/graph.py +0 -0
  26. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/core/grid_axes.py +0 -0
  27. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/core/group.py +0 -0
  28. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/core/image.py +0 -0
  29. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/core/implicit.py +0 -0
  30. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/core/label.py +0 -0
  31. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/core/label_tools.py +0 -0
  32. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/core/legend.py +0 -0
  33. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/core/line.py +0 -0
  34. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/core/math_utilities.py +0 -0
  35. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/core/network.py +0 -0
  36. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/core/parametric_curve.py +0 -0
  37. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/core/parse.py +0 -0
  38. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/core/path.py +0 -0
  39. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/core/polygon.py +0 -0
  40. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/core/read.py +0 -0
  41. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/core/rectangle.py +0 -0
  42. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/core/repeat.py +0 -0
  43. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/core/riemann_sum.py +0 -0
  44. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/core/shape.py +0 -0
  45. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/core/slope_field.py +0 -0
  46. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/core/statistics.py +0 -0
  47. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/core/tags.py +0 -0
  48. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/core/tangent_line.py +0 -0
  49. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/core/user_namespace.py +0 -0
  50. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/core/vector.py +0 -0
  51. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/engine.py +0 -0
  52. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/resources/diagcess/diagcess.html +0 -0
  53. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/resources/diagcess/diagcess.js +0 -0
  54. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/resources/examples/de-system.xml +0 -0
  55. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/resources/examples/derivatives.xml +0 -0
  56. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/resources/examples/diffeqs.xml +0 -0
  57. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/resources/examples/implicit.xml +0 -0
  58. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/resources/examples/projection.xml +0 -0
  59. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/resources/examples/riemann.xml +0 -0
  60. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/resources/examples/roots_of_unity.xml +0 -0
  61. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/resources/examples/tangent.xml +0 -0
  62. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/resources/fonts/Braille29.ttf +0 -0
  63. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/resources/js/mj-sre-page.js +0 -0
  64. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/resources/js/package.json +0 -0
  65. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/resources/template/pf_publication.xml +0 -0
  66. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/scripts/__init__.py +0 -0
  67. {prefig-0.4.0.dev20250801054919 → prefig-0.4.1}/prefig/scripts/install_mj.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: prefig
3
- Version: 0.4.0.dev20250801054919
3
+ Version: 0.4.1
4
4
  Summary: An authoring system for mathematical diagrams
5
5
  Home-page: https://prefigure.org
6
6
  License: GPL-3.0-or-later
@@ -528,8 +528,7 @@ class Axes():
528
528
  log.error(f"Error in <axes> parsing hlabels={hlabels}")
529
529
  return
530
530
  if self.h_pi_format:
531
- hlabels = 1/math.pi * hlabels
532
-
531
+ h_positions = 1/math.pi * h_positions
533
532
  h_scale = 1
534
533
  if self.h_pi_format:
535
534
  h_scale = math.pi
@@ -636,7 +635,7 @@ class Axes():
636
635
  return
637
636
 
638
637
  if self.v_pi_format:
639
- vlabels = 1/math.pi * vlabels
638
+ v_positions = 1/math.pi * v_positions
640
639
 
641
640
  v_scale = 1
642
641
  if self.v_pi_format:
@@ -1,5 +1,7 @@
1
1
  import lxml.etree as ET
2
2
  import logging
3
+ import numpy as np
4
+ import math
3
5
  from . import user_namespace as un
4
6
  from . import math_utilities as math_util
5
7
  from . import utilities as util
@@ -18,7 +20,15 @@ def point(element, diagram, parent, outline_status = None):
18
20
 
19
21
  # determine the location and size of the point from the XML element
20
22
  try:
21
- p = diagram.transform(un.valid_eval(element.get('p')))
23
+ p = un.valid_eval(element.get('p'))
24
+ if element.get('coordinates', 'cartesian') == 'polar':
25
+ radial = p[0]
26
+ angle = p[1]
27
+ if element.get('degrees', 'no') == 'yes':
28
+ angle = math.radians(angle)
29
+ p = radial * np.array([math.cos(angle), math.sin(angle)])
30
+ element.set('p', util.pt2long_str(p, spacer=','))
31
+ p = diagram.transform(p)
22
32
  except:
23
33
  log.error(f"Error in <point> defining p={element.get('p')}")
24
34
  return
@@ -2,6 +2,9 @@ import numpy as np
2
2
  from . import user_namespace as un
3
3
  from . import label
4
4
 
5
+ import logging
6
+ logger = logging.getLogger('prefigure')
7
+
5
8
  import warnings
6
9
  with warnings.catch_warnings():
7
10
  warnings.filterwarnings('ignore', 'legacy print')
@@ -25,7 +28,7 @@ def get_attr(element, attr, default):
25
28
  try:
26
29
  attribute = un.valid_eval(element.get(attr, default))
27
30
  if isinstance(attribute, np.ndarray):
28
- return np.array2string(attribute, separator=',')
31
+ return ','.join([float2longstr(a) for a in attribute])
29
32
  return str(attribute)
30
33
  except (TypeError, SyntaxError): # this is a string that's not in the namespace
31
34
  return element.get(attr, default)
@@ -685,6 +685,8 @@ Point = element point {
685
685
  attribute at {text}?,
686
686
  attribute style {text}?,
687
687
  attribute size {text}?,
688
+ attribute coordinates {"cartesian"|"polar"}?,
689
+ attribute degrees {"yes"|"no"}?,
688
690
  LabelAttributes,
689
691
  FillAttributes,
690
692
  CommonAttributes,
@@ -1886,6 +1886,22 @@
1886
1886
  <optional>
1887
1887
  <attribute name="size"/>
1888
1888
  </optional>
1889
+ <optional>
1890
+ <attribute name="coordinates">
1891
+ <choice>
1892
+ <value>cartesian</value>
1893
+ <value>polar</value>
1894
+ </choice>
1895
+ </attribute>
1896
+ </optional>
1897
+ <optional>
1898
+ <attribute name="degrees">
1899
+ <choice>
1900
+ <value>yes</value>
1901
+ <value>no</value>
1902
+ </choice>
1903
+ </attribute>
1904
+ </optional>
1889
1905
  <ref name="LabelAttributes"/>
1890
1906
  <ref name="FillAttributes"/>
1891
1907
  <ref name="CommonAttributes"/>
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "prefig"
3
- version = "0.4.0.dev20250801054919"
3
+ version = "0.4.1"
4
4
  description = "An authoring system for mathematical diagrams"
5
5
  readme = "README.md"
6
6
  homepage = "https://prefigure.org"
File without changes