DGCV 0.3.2__tar.gz → 0.3.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.
Files changed (60) hide show
  1. {dgcv-0.3.2/src/dgcv.egg-info → dgcv-0.3.4}/PKG-INFO +10 -26
  2. {dgcv-0.3.2 → dgcv-0.3.4}/README.md +9 -25
  3. {dgcv-0.3.2 → dgcv-0.3.4}/pyproject.toml +1 -1
  4. {dgcv-0.3.2 → dgcv-0.3.4}/setup.cfg +1 -1
  5. {dgcv-0.3.2 → dgcv-0.3.4}/setup.py +1 -1
  6. {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/CR_geometry.py +3 -4
  7. {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/__init__.py +34 -30
  8. {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/_config.py +5 -3
  9. {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/_dgcv_display.py +10 -18
  10. {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/_safeguards.py +83 -51
  11. dgcv-0.3.4/src/dgcv/_settings.py +26 -0
  12. dgcv-0.3.4/src/dgcv/algebras/algebras_aux.py +321 -0
  13. dgcv-0.3.2/src/dgcv/finite_dim_algebras.py → dgcv-0.3.4/src/dgcv/algebras/algebras_core.py +691 -1188
  14. dgcv-0.3.4/src/dgcv/algebras/algebras_secondary.py +1574 -0
  15. {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/dgcv_core.py +51 -894
  16. {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/eds/eds.py +27 -2
  17. {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/eds/eds_operations.py +2 -1
  18. dgcv-0.3.4/src/dgcv/filtered_structures.py +925 -0
  19. {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/polynomials.py +2 -1
  20. dgcv-0.3.4/src/dgcv/representations.py +10 -0
  21. {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/tensors.py +162 -102
  22. {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/vector_fields_and_differential_forms.py +19 -157
  23. dgcv-0.3.4/src/dgcv/vmf.py +1140 -0
  24. {dgcv-0.3.2 → dgcv-0.3.4/src/dgcv.egg-info}/PKG-INFO +10 -26
  25. {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv.egg-info/SOURCES.txt +4 -1
  26. dgcv-0.3.2/src/dgcv/_settings.py +0 -16
  27. dgcv-0.3.2/src/dgcv/filtered_structures.py +0 -426
  28. dgcv-0.3.2/src/dgcv/vmf.py +0 -262
  29. {dgcv-0.3.2 → dgcv-0.3.4}/LICENSE.txt +0 -0
  30. {dgcv-0.3.2 → dgcv-0.3.4}/MANIFEST.in +0 -0
  31. {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/Riemannian_geometry.py +0 -0
  32. {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/_tensor_field_printers.py +0 -0
  33. {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/assets/__init__.py +0 -0
  34. {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/assets/fonts/Orbitron-Black.ttf +0 -0
  35. {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/assets/fonts/Orbitron-Black.woff2 +0 -0
  36. {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/assets/fonts/Orbitron-Bold.ttf +0 -0
  37. {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/assets/fonts/Orbitron-Bold.woff2 +0 -0
  38. {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/assets/fonts/Orbitron-ExtraBold.ttf +0 -0
  39. {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/assets/fonts/Orbitron-ExtraBold.woff2 +0 -0
  40. {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/assets/fonts/Orbitron-Medium.ttf +0 -0
  41. {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/assets/fonts/Orbitron-Medium.woff2 +0 -0
  42. {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/assets/fonts/Orbitron-Regular.ttf +0 -0
  43. {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/assets/fonts/Orbitron-Regular.woff2 +0 -0
  44. {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/assets/fonts/Orbitron-SemiBold.ttf +0 -0
  45. {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/assets/fonts/Orbitron-SemiBold.woff2 +0 -0
  46. {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/assets/fonts/PatrickHand-Regular.ttf +0 -0
  47. {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/assets/fonts/fonts.css +0 -0
  48. {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/combinatorics.py +0 -0
  49. {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/complex_structures.py +0 -0
  50. {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/conversions.py +0 -0
  51. {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/coordinate_maps.py +0 -0
  52. {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/dgcv_formatter.py +0 -0
  53. {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/eds/__init__.py +0 -0
  54. {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/eds/ast.py +0 -0
  55. {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/eds/eds_representations.py +0 -0
  56. {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/solvers.py +0 -0
  57. {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/styles.py +0 -0
  58. {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv.egg-info/dependency_links.txt +0 -0
  59. {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv.egg-info/requires.txt +0 -0
  60. {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dgcv
3
- Version: 0.3.2
3
+ Version: 0.3.4
4
4
  Summary: Differential Geometry with Complex Variables
5
5
  Author: David Sykes
6
6
  Author-email: David Sykes <david@realandimaginary.com>
@@ -18,51 +18,35 @@ Dynamic: requires-python
18
18
 
19
19
  **dgcv** is an open-source Python package providing basic tools for differential geometry integrated with systematic organization of structures naturally accompanying complex variables, in short, Differential Geometry with Complex Variables.
20
20
 
21
- At its core are symbolic representations of standard DG objects such as vector fields and differential forms. There are coordinate free representations, and representations defined relative to coordinate systems falling into two broad categories:
21
+ At its core are symbolic representations of standard DG objects such as vector fields and differential forms. There are coordinate free representations, and representations defined relative to coordinate systems falling into two general categories:
22
22
 
23
- - **standard** - basic systems that can represent real or complex coordinates, sufficient for all applications that do not require **dgcv**'s complex variable handling features.
23
+ - **standard** - basic systems that can represent real or complex coordinates, sufficient for applications that do not require **dgcv**'s complex variable handling features.
24
24
  - **complex** - richer systems for representing complex coordinate patches that interact with **dgcv**'s complex variable handling features. These are comprised of holomorphic coordinate functions, their conjugates, and their real and imaginary parts (e.g., $\\{z_j,\overline{z_j},x_j,y_j\\}$).
25
25
 
26
26
  **dgcv** functions account for coordinate types dynamically when operating on objects built from such coordinate systems. The package has a growing library for coordinate-free representations as well, and tools for converting between the two paradigms.
27
27
 
28
28
  As systems of differential geometric objects constructed from complex variables inherit natural relationships from the underlying complex structure, **dgcv** objects track these relationships across the constructions. This system enables smooth switching between real and holomorphic coordinate representations of mathematical objects. In computations, **dgcv** objects dynamically manage this format switching on their own so that typical complex variables formulas can be written plainly and will simply work. Some examples of this: In coordinates $z_j = x_j + iy_j$, expressions such as $\frac{\partial}{\partial x_j}|z_j|^2$ or $d z_j \wedge d \overline{z_j} \left( \frac{\partial}{\partial z_j}, \frac{\partial}{\partial y_j} \right)$ are correctly parsed without needing to convert everything to a uniform variable format. Retrieving objects' complex structure-related attributes, like the holomorphic part of a vector field or pluriharmonic terms from a polynomial is straightforward. Complexified cotangent bundles and their exterior algebras are easily decomposed into components from the Dolbeault complex and Dolbeault operators themselves can be applied to functions and k-forms in either coordinate format.
29
29
 
30
- **dgcv** was developed using Python 3.13, and has dependencies on the SymPy and Pandas libraries in addition to base Python.
30
+ **dgcv** is tested on Python 3.13, and has dependencies on the SymPy, Pandas, and iPython libraries.
31
31
 
32
32
  ## Features
33
33
 
34
- - Fully featured symbolic representations of various tensor fields (vector fields, differential forms, etc.), and dedicated python classes for representing many other common differential geometric structures
35
- - Intuitive interactions with complex structures from holomorphic coordinate systems: **dgcv** objects dynamically manage coordinate transformations between real and holomorphic coordinates during computation as necessary, so objects can be represented in and freely converted between either coordinate format at any time.
36
- - Natural LaTeX rendering for representation of mathematical objects, designed with Jupyter notebooks in mind.
34
+ - Symbolic representations of various tensor fields (vector fields, differential forms, etc.) and dedicated python classes for representing many other common differential geometric structures
35
+ - Intuitive interactions with complex structures from holomorphic coordinate systems: **dgcv** objects dynamically manage coordinate transformations between real and holomorphic coordinates during computation as necessary, so objects can be represented in and freely converted between either coordinate format
37
36
 
38
37
  ## Installation
39
38
 
40
- You can install **dgcv** directly from PyPI with pip, e.g.:
39
+ **dgcv** can be installed directly from PyPI with pip, e.g.:
41
40
 
42
41
  ```bash
43
42
  pip install dgcv
44
43
  ```
45
44
 
46
- Depending on Python install configurations, the above command can vary. The key is to have the relevant Python environment active so that the package manager pip sources from the right location (suggested to use virtual environments: [Getting started with virtual environments](https://docs.python.org/3/library/venv.html)).
47
-
48
- ## Tutorials
49
-
50
- Two Jupyter Notebook tutorials are available to help getting started with **dgcv**:
51
-
52
- 1. **dgcv Introduction**: An introduction to the key concepts and setup
53
-
54
- - [View **dgcv** Introduction Tutorial](https://www.realandimaginary.com/dgcv/tutorials/DGCV_introduction/)
55
-
56
- 2. **dgcv in Action**: A quick tour through examples from some of the library's more elaborate functions
57
- - [View **dgcv** in Action Tutorial](https://www.realandimaginary.com/dgcv/tutorials/DGCV_in_action/)
58
-
59
- ### Running the Tutorials Locally
60
-
61
- You can download the tutorials individually from the **dgcv** repository [**dgcv** github repo](https://github.com/YikesItsSykes/DGCV).
45
+ Depending on Python install configurations, the above command can vary. The key is to have the relevant Python environment active so that the package manager `pip` sources from the right location (suggested to use virtual environments: [Getting started with virtual environments](https://docs.python.org/3/library/venv.html)).
62
46
 
63
47
  ## Documentation
64
48
 
65
- **dgcv** documentation is hosted at [https://www.realandimaginary.com/dgcv/](https://www.realandimaginary.com/dgcv/), with documentation pages for each function in the library and more. Full documentation is gradually being filled in. In the mean time, docstrings within the code provide more information on available classes/methods and functions.
49
+ **dgcv** documentation is hosted at [https://www.realandimaginary.com/dgcv/](https://www.realandimaginary.com/dgcv/), with documentation pages for individual functions in the library and more. Docstrings within the code provide more information on available classes/methods and functions.
66
50
 
67
51
  ## License
68
52
 
@@ -76,7 +60,7 @@ You can download the tutorials individually from the **dgcv** repository [**dgcv
76
60
 
77
61
  ### Future Development
78
62
 
79
- The current (0.3.x) version of **dgcv** is designed with several planned extensions to the library in mind. Current plans broadly fall into these categories:
63
+ The current (0.3.x) version of **dgcv** is designed with several planned extensions to the library in mind. Current plans broadly fall into two categories:
80
64
 
81
65
  - Extending complex variable handling and dynamic coordinate-type conversion automations. The simple goal is to fully automate handling of complex variable formats, allowing input to be formatted freely with any coordinate type, with features to fully control coordinate type formatting or let the systems automate the process.
82
66
  - Expanding libraries dedicated to more specialized areas of differential geometry
@@ -2,51 +2,35 @@
2
2
 
3
3
  **dgcv** is an open-source Python package providing basic tools for differential geometry integrated with systematic organization of structures naturally accompanying complex variables, in short, Differential Geometry with Complex Variables.
4
4
 
5
- At its core are symbolic representations of standard DG objects such as vector fields and differential forms. There are coordinate free representations, and representations defined relative to coordinate systems falling into two broad categories:
5
+ At its core are symbolic representations of standard DG objects such as vector fields and differential forms. There are coordinate free representations, and representations defined relative to coordinate systems falling into two general categories:
6
6
 
7
- - **standard** - basic systems that can represent real or complex coordinates, sufficient for all applications that do not require **dgcv**'s complex variable handling features.
7
+ - **standard** - basic systems that can represent real or complex coordinates, sufficient for applications that do not require **dgcv**'s complex variable handling features.
8
8
  - **complex** - richer systems for representing complex coordinate patches that interact with **dgcv**'s complex variable handling features. These are comprised of holomorphic coordinate functions, their conjugates, and their real and imaginary parts (e.g., $\\{z_j,\overline{z_j},x_j,y_j\\}$).
9
9
 
10
10
  **dgcv** functions account for coordinate types dynamically when operating on objects built from such coordinate systems. The package has a growing library for coordinate-free representations as well, and tools for converting between the two paradigms.
11
11
 
12
12
  As systems of differential geometric objects constructed from complex variables inherit natural relationships from the underlying complex structure, **dgcv** objects track these relationships across the constructions. This system enables smooth switching between real and holomorphic coordinate representations of mathematical objects. In computations, **dgcv** objects dynamically manage this format switching on their own so that typical complex variables formulas can be written plainly and will simply work. Some examples of this: In coordinates $z_j = x_j + iy_j$, expressions such as $\frac{\partial}{\partial x_j}|z_j|^2$ or $d z_j \wedge d \overline{z_j} \left( \frac{\partial}{\partial z_j}, \frac{\partial}{\partial y_j} \right)$ are correctly parsed without needing to convert everything to a uniform variable format. Retrieving objects' complex structure-related attributes, like the holomorphic part of a vector field or pluriharmonic terms from a polynomial is straightforward. Complexified cotangent bundles and their exterior algebras are easily decomposed into components from the Dolbeault complex and Dolbeault operators themselves can be applied to functions and k-forms in either coordinate format.
13
13
 
14
- **dgcv** was developed using Python 3.13, and has dependencies on the SymPy and Pandas libraries in addition to base Python.
14
+ **dgcv** is tested on Python 3.13, and has dependencies on the SymPy, Pandas, and iPython libraries.
15
15
 
16
16
  ## Features
17
17
 
18
- - Fully featured symbolic representations of various tensor fields (vector fields, differential forms, etc.), and dedicated python classes for representing many other common differential geometric structures
19
- - Intuitive interactions with complex structures from holomorphic coordinate systems: **dgcv** objects dynamically manage coordinate transformations between real and holomorphic coordinates during computation as necessary, so objects can be represented in and freely converted between either coordinate format at any time.
20
- - Natural LaTeX rendering for representation of mathematical objects, designed with Jupyter notebooks in mind.
18
+ - Symbolic representations of various tensor fields (vector fields, differential forms, etc.) and dedicated python classes for representing many other common differential geometric structures
19
+ - Intuitive interactions with complex structures from holomorphic coordinate systems: **dgcv** objects dynamically manage coordinate transformations between real and holomorphic coordinates during computation as necessary, so objects can be represented in and freely converted between either coordinate format
21
20
 
22
21
  ## Installation
23
22
 
24
- You can install **dgcv** directly from PyPI with pip, e.g.:
23
+ **dgcv** can be installed directly from PyPI with pip, e.g.:
25
24
 
26
25
  ```bash
27
26
  pip install dgcv
28
27
  ```
29
28
 
30
- Depending on Python install configurations, the above command can vary. The key is to have the relevant Python environment active so that the package manager pip sources from the right location (suggested to use virtual environments: [Getting started with virtual environments](https://docs.python.org/3/library/venv.html)).
31
-
32
- ## Tutorials
33
-
34
- Two Jupyter Notebook tutorials are available to help getting started with **dgcv**:
35
-
36
- 1. **dgcv Introduction**: An introduction to the key concepts and setup
37
-
38
- - [View **dgcv** Introduction Tutorial](https://www.realandimaginary.com/dgcv/tutorials/DGCV_introduction/)
39
-
40
- 2. **dgcv in Action**: A quick tour through examples from some of the library's more elaborate functions
41
- - [View **dgcv** in Action Tutorial](https://www.realandimaginary.com/dgcv/tutorials/DGCV_in_action/)
42
-
43
- ### Running the Tutorials Locally
44
-
45
- You can download the tutorials individually from the **dgcv** repository [**dgcv** github repo](https://github.com/YikesItsSykes/DGCV).
29
+ Depending on Python install configurations, the above command can vary. The key is to have the relevant Python environment active so that the package manager `pip` sources from the right location (suggested to use virtual environments: [Getting started with virtual environments](https://docs.python.org/3/library/venv.html)).
46
30
 
47
31
  ## Documentation
48
32
 
49
- **dgcv** documentation is hosted at [https://www.realandimaginary.com/dgcv/](https://www.realandimaginary.com/dgcv/), with documentation pages for each function in the library and more. Full documentation is gradually being filled in. In the mean time, docstrings within the code provide more information on available classes/methods and functions.
33
+ **dgcv** documentation is hosted at [https://www.realandimaginary.com/dgcv/](https://www.realandimaginary.com/dgcv/), with documentation pages for individual functions in the library and more. Docstrings within the code provide more information on available classes/methods and functions.
50
34
 
51
35
  ## License
52
36
 
@@ -60,7 +44,7 @@ You can download the tutorials individually from the **dgcv** repository [**dgcv
60
44
 
61
45
  ### Future Development
62
46
 
63
- The current (0.3.x) version of **dgcv** is designed with several planned extensions to the library in mind. Current plans broadly fall into these categories:
47
+ The current (0.3.x) version of **dgcv** is designed with several planned extensions to the library in mind. Current plans broadly fall into two categories:
64
48
 
65
49
  - Extending complex variable handling and dynamic coordinate-type conversion automations. The simple goal is to fully automate handling of complex variable formats, allowing input to be formatted freely with any coordinate type, with features to fully control coordinate type formatting or let the systems automate the process.
66
50
  - Expanding libraries dedicated to more specialized areas of differential geometry
@@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"
5
5
  [project]
6
6
  requires-python = ">=3.6"
7
7
  name = "dgcv"
8
- version = "0.3.2"
8
+ version = "0.3.4"
9
9
  description = "Differential Geometry with Complex Variables"
10
10
  authors = [{ name = "David Sykes", email = "david@realandimaginary.com" }]
11
11
  license = { text = "MIT" }
@@ -1,6 +1,6 @@
1
1
  [metadata]
2
2
  name = dgcv
3
- version = 0.3.2
3
+ version = 0.3.4
4
4
  description = A package for Differential Geometry with Complex Variables
5
5
  author = David Sykes
6
6
  author_email = david@realandimaginary.com
@@ -15,7 +15,7 @@ To get started, check out the Jupyter Notebook tutorials:
15
15
 
16
16
  setup(
17
17
  name="dgcv",
18
- version="0.3.2",
18
+ version="0.3.4",
19
19
  description="Differential Geometry with Complex Variables",
20
20
  long_description=long_description, # This shows up on PyPI
21
21
  long_description_content_type="text/markdown",
@@ -34,10 +34,8 @@ from .dgcv_core import (
34
34
  VFClass,
35
35
  addVF,
36
36
  allToReal,
37
- clearVar,
38
37
  holToReal,
39
38
  holVF_coeffs,
40
- listVar,
41
39
  realPartOfVF,
42
40
  scaleVF,
43
41
  symToReal,
@@ -46,6 +44,7 @@ from .dgcv_core import (
46
44
  from .polynomials import createMultigradedPolynomial
47
45
  from .solvers import solve_dgcv
48
46
  from .vector_fields_and_differential_forms import assembleFromHolVFC
47
+ from .vmf import clearVar, listVar
49
48
 
50
49
 
51
50
  def tangencyObstruction(vf, CR_defining_expr, graph_variable, simplify=False, *args):
@@ -208,7 +207,7 @@ def findWeightedCRSymmetries_old(
208
207
  arg2,
209
208
  arg4,
210
209
  arg3,
211
- "Akey",
210
+ Akey,
212
211
  _tempVar=retrieve_passkey(),
213
212
  degreeCap=degreeCap,
214
213
  assumeReal=True,
@@ -217,7 +216,7 @@ def findWeightedCRSymmetries_old(
217
216
  arg2,
218
217
  arg4,
219
218
  arg3,
220
- "Bkey",
219
+ Bkey,
221
220
  _tempVar=retrieve_passkey(),
222
221
  degreeCap=degreeCap,
223
222
  assumeReal=True,
@@ -51,6 +51,20 @@ from ._dgcv_display import (
51
51
  show,
52
52
  )
53
53
  from ._settings import set_dgcv_settings
54
+ from .algebras.algebras_aux import algebraDataFromMatRep, algebraDataFromVF
55
+ from .algebras.algebras_core import (
56
+ adjointRepresentation,
57
+ algebra_class,
58
+ algebra_element_class,
59
+ algebra_subspace_class,
60
+ killingForm,
61
+ )
62
+ from .algebras.algebras_secondary import (
63
+ createAlgebra,
64
+ createFiniteAlg, # deprecated
65
+ createSimpleLieAlgebra,
66
+ subalgebra_class,
67
+ )
54
68
  from .combinatorics import carProd, chooseOp, permSign
55
69
  from .complex_structures import Del, DelBar, KahlerStructure
56
70
  from .coordinate_maps import coordinate_map
@@ -62,7 +76,6 @@ from .CR_geometry import (
62
76
  )
63
77
  from .dgcv_core import (
64
78
  DFClass,
65
- DGCV_snapshot, # deprecated
66
79
  DGCVPolyClass, # deprecated
67
80
  STFClass,
68
81
  VF_bracket,
@@ -80,7 +93,6 @@ from .dgcv_core import (
80
93
  changeTFBasis,
81
94
  changeVFBasis,
82
95
  cleanUpConjugation,
83
- clearVar,
84
96
  complex_struct_op,
85
97
  complexVFC,
86
98
  compress_dgcv_class,
@@ -98,7 +110,6 @@ from .dgcv_core import (
98
110
  holVF_coeffs,
99
111
  im_with_hol_coor,
100
112
  im_with_real_coor,
101
- listVar,
102
113
  re_with_hol_coor,
103
114
  re_with_real_coor,
104
115
  realPartOfVF,
@@ -111,11 +122,7 @@ from .dgcv_core import (
111
122
  symToReal,
112
123
  tensor_product,
113
124
  tensorField,
114
- variableSummary,
115
- vmf_summary,
116
125
  )
117
-
118
- # EDS imports exposed at the top level
119
126
  from .eds import (
120
127
  DF_representation,
121
128
  abst_coframe,
@@ -132,17 +139,7 @@ from .eds import (
132
139
  transform_coframe,
133
140
  zeroFormAtom,
134
141
  )
135
- from .finite_dim_algebras import (
136
- AlgebraElement,
137
- FAClass,
138
- adjointRepresentation,
139
- algebraDataFromMatRep,
140
- algebraDataFromVF,
141
- algebraSubspace,
142
- createClassicalLA,
143
- createFiniteAlg,
144
- killingForm,
145
- )
142
+ from .filtered_structures import Tanaka_symbol, distribution
146
143
  from .polynomials import (
147
144
  createBigradPolynomial,
148
145
  createPolynomial,
@@ -156,7 +153,7 @@ from .Riemannian_geometry import (
156
153
  )
157
154
  from .solvers import solve_dgcv
158
155
  from .styles import get_DGCV_themes, get_dgcv_themes # get_DGCV_themes is deprecated
159
- from .tensors import createVectorSpace, tensorProduct, vectorSpace, vectorSpaceElement
156
+ from .tensors import createVectorSpace, tensorProduct, vector_space_element, vectorSpace
160
157
  from .vector_fields_and_differential_forms import (
161
158
  LieDerivative,
162
159
  annihilator,
@@ -171,6 +168,7 @@ from .vector_fields_and_differential_forms import (
171
168
  interiorProduct,
172
169
  makeZeroForm,
173
170
  )
171
+ from .vmf import DGCV_snapshot, clearVar, listVar, variableSummary, vmf_summary
174
172
 
175
173
  # Default functions/classes
176
174
  __all__ = [
@@ -203,6 +201,19 @@ __all__ = [
203
201
  # From _config
204
202
  "canonicalize", # Reformat supported objects canonically
205
203
 
204
+ # From algebras
205
+ "algebra_element_class",# Algebra element class
206
+ "algebra_subspace_class", # Algebra subspace class
207
+ "algebra_class", # Finite dimensional algebra
208
+ "adjointRepresentation",# Adjoint representation of algebra
209
+ "algebraDataFromMatRep",# Algebra data from matrix representation
210
+ "algebraDataFromVF", # Algebra data from vector fields
211
+ "createFiniteAlg", # deprecated
212
+ "createAlgebra", # Create a finite dimensional algebra
213
+ "createSimpleLieAlgebra",
214
+ "killingForm", # Compute the Killing form
215
+ "subalgebra_class",
216
+
206
217
  # From coordinateMaps
207
218
  "coordinate_map", # Transforms coordinates systems
208
219
 
@@ -285,16 +296,9 @@ __all__ = [
285
296
  "DF_representation",
286
297
  "transform_coframe",
287
298
 
288
- # From finiteDimAlgebras
289
- "AlgebraElement", # Algebra element class
290
- "algebraSubspace", # Algebra subspace class
291
- "FAClass", # Finite dimensional algebra class
292
- "createClassicalLA", # Initialize classicle simple L.A.
293
- "adjointRepresentation",# Adjoint representation of algebra
294
- "algebraDataFromMatRep",# Algebra data from matrix representation
295
- "algebraDataFromVF", # Algebra data from vector fields
296
- "createFiniteAlg", # Create a finite dimensional algebra
297
- "killingForm", # Compute the Killing form
299
+ # From filtered_structures
300
+ "distribution",
301
+ "Tanaka_symbol",
298
302
 
299
303
  # From polynomials
300
304
  "createBigradPolynomial",# Create bigraded polynomial
@@ -316,7 +320,7 @@ __all__ = [
316
320
 
317
321
  # From tensors
318
322
  "vectorSpace", # Class representing vector spaces
319
- "vectorSpaceElement", # Class representing elements in a vector space
323
+ "vector_space_element", # Class representing elements in a vector space
320
324
  "tensorProduct", # Class representing elements in tensor products (of VS elements)
321
325
  # of vector space and their dual spaces
322
326
  "createVectorSpace", # Create vectorSpace class instances with labeling
@@ -183,14 +183,17 @@ variable_registry = {
183
183
  "real_part": StringifiedSymbolsDict(),
184
184
  "im_part": StringifiedSymbolsDict(),
185
185
  },
186
+ "_labels":{}
186
187
  }
187
188
  dgcv_settings_registry = {
188
189
  'use_latex':False,
189
190
  'theme':'blue',
190
191
  'format_displays':False,
191
- 'version_specific_defaults':f'v{__version__}'
192
+ 'version_specific_defaults':f'v{__version__}',
193
+ 'ask_before_overwriting_objects_in_vmf':True,
194
+ 'forgo_warnings':False
192
195
  }
193
- # retrieval function for accessing variable_registry
196
+ # retrieval functions for accessing and clearing registries
194
197
  def get_variable_registry():
195
198
  return variable_registry
196
199
 
@@ -198,7 +201,6 @@ def get_dgcv_settings_registry():
198
201
  return dgcv_settings_registry
199
202
 
200
203
  def clear_variable_registry():
201
- # Optional: function to reset variable_registry if needed
202
204
  global variable_registry
203
205
  variable_registry = {
204
206
  "standard_variable_systems": {},
@@ -19,6 +19,7 @@ from IPython.display import HTML, Latex, display
19
19
  from sympy.printing.latex import LatexPrinter
20
20
 
21
21
  ############# dgcv classes to format
22
+ from ._safeguards import check_dgcv_category, get_dgcv_category
22
23
  from .dgcv_core import (
23
24
  DFClass,
24
25
  STFClass,
@@ -29,7 +30,6 @@ from .dgcv_core import (
29
30
  tensorField,
30
31
  )
31
32
  from .filtered_structures import Tanaka_symbol
32
- from .finite_dim_algebras import AlgebraElement, FAClass
33
33
  from .Riemannian_geometry import metricClass
34
34
 
35
35
 
@@ -58,9 +58,9 @@ def LaTeX(obj, removeBARs=False):
58
58
  return sp.latex(symToHol(term))
59
59
  else:
60
60
  return sp.latex(term)
61
- elif isinstance(term, FAClass):
62
- return _alglabeldisplayclass(term.label)._repr_latex_()
63
- elif isinstance(term, AlgebraElement):
61
+ elif get_dgcv_category(term) in {'algebra','algebra_element'}:
62
+ return term._repr_latex_()
63
+ elif get_dgcv_category(term)=='algebra_element':
64
64
  return _alglabeldisplayclass(term.algebra.label, term)._repr_latex_()
65
65
  elif isinstance(term, Tanaka_symbol):
66
66
  return "Tanaka_symbol Class"
@@ -68,16 +68,9 @@ def LaTeX(obj, removeBARs=False):
68
68
  return sp.latex(symToHol(term))
69
69
 
70
70
  def strip_dollar_signs(latex_str):
71
- """Strip leading and trailing $ or $$ signs from a LaTeX string."""
72
- # if latex_str == None:
73
- # return ''
74
71
  if latex_str is None:
75
72
  return latex_str
76
- if latex_str.startswith("$$") and latex_str.endswith("$$"):
77
- return latex_str[2:-2]
78
- if latex_str.startswith("$") and latex_str.endswith("$"):
79
- return latex_str[1:-1]
80
- return latex_str
73
+ return latex_str.replace("$", "")
81
74
 
82
75
  if isinstance(obj, list):
83
76
  latex_elements = [strip_dollar_signs(filter(elem)) for elem in obj]
@@ -90,7 +83,6 @@ def LaTeX(obj, removeBARs=False):
90
83
  return r"\left\{ " + ", ".join(latex_elements) + r" \right\}"
91
84
 
92
85
  else:
93
- # Apply sympy.latex() for non-list/tuple objects
94
86
  return strip_dollar_signs(filter(obj))
95
87
 
96
88
  def LaTeX_eqn_system(eqn_dict, math_mode = '$$', left_prefix = "", left_suffix = "", right_prefix = "", right_suffix = "", one_line = False, bare_latex = False, add_period = False):
@@ -157,13 +149,13 @@ def _display_DGCV_single(arg):
157
149
  display(Latex(arg))
158
150
  elif isinstance(
159
151
  arg,
160
- (sp.Expr, metricClass, DFClass, VFClass, STFClass, tensorField, dgcvPolyClass, Tanaka_symbol),
152
+ (sp.Expr, metricClass, DFClass, VFClass, STFClass, tensorField, dgcvPolyClass, Tanaka_symbol) or check_dgcv_category(arg),
161
153
  ):
162
154
  _complexDisplay(arg)
163
- elif isinstance(arg, FAClass):
164
- _complexDisplay(_alglabeldisplayclass(arg.label))
165
- elif isinstance(arg, AlgebraElement):
166
- _complexDisplay(_alglabeldisplayclass(arg.algebra.label, ae=arg))
155
+ # elif get_dgcv_category(arg)=='algebra':
156
+ # _complexDisplay(_alglabeldisplayclass(arg.label))
157
+ # elif get_dgcv_category(arg)=='algebra_element_class':
158
+ # _complexDisplay(_alglabeldisplayclass(arg.algebra.label, ae=arg))
167
159
  else:
168
160
  display(arg)
169
161