DGCV 0.2.3__tar.gz → 0.2.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.

Potentially problematic release.


This version of DGCV might be problematic. Click here for more details.

Files changed (55) hide show
  1. dgcv-0.2.4/PKG-INFO +79 -0
  2. dgcv-0.2.4/README.md +65 -0
  3. dgcv-0.2.4/pyproject.toml +26 -0
  4. {dgcv-0.2.3 → dgcv-0.2.4}/setup.cfg +1 -1
  5. {dgcv-0.2.3 → dgcv-0.2.4}/setup.py +2 -2
  6. {dgcv-0.2.3 → dgcv-0.2.4}/src/DGCV/CRGeometry.py +39 -13
  7. dgcv-0.2.3/src/DGCV/DGCore.py → dgcv-0.2.4/src/DGCV/DGCVCore.py +91 -150
  8. {dgcv-0.2.3 → dgcv-0.2.4}/src/DGCV/DGCVFormatter.py +5 -3
  9. {dgcv-0.2.3 → dgcv-0.2.4}/src/DGCV/RiemannianGeometry.py +93 -78
  10. {dgcv-0.2.3 → dgcv-0.2.4}/src/DGCV/_DGCV_display.py +14 -16
  11. dgcv-0.2.4/src/DGCV/__init__.py +334 -0
  12. {dgcv-0.2.3 → dgcv-0.2.4}/src/DGCV/_safeguards.py +36 -3
  13. {dgcv-0.2.3 → dgcv-0.2.4}/src/DGCV/assets/inversions/populator.ipynb +4 -3
  14. {dgcv-0.2.3 → dgcv-0.2.4}/src/DGCV/combinatorics.py +0 -1
  15. {dgcv-0.2.3 → dgcv-0.2.4}/src/DGCV/complexStructures.py +50 -37
  16. {dgcv-0.2.3 → dgcv-0.2.4}/src/DGCV/coordinateMaps.py +8 -6
  17. {dgcv-0.2.3 → dgcv-0.2.4}/src/DGCV/finiteDimAlgebras.py +319 -173
  18. {dgcv-0.2.3 → dgcv-0.2.4}/src/DGCV/polynomials.py +18 -21
  19. {dgcv-0.2.3 → dgcv-0.2.4}/src/DGCV/vectorFieldsAndDifferentialForms.py +50 -64
  20. dgcv-0.2.4/src/DGCV.egg-info/PKG-INFO +79 -0
  21. {dgcv-0.2.3 → dgcv-0.2.4}/src/DGCV.egg-info/SOURCES.txt +1 -1
  22. dgcv-0.2.3/PKG-INFO +0 -46
  23. dgcv-0.2.3/README.md +0 -32
  24. dgcv-0.2.3/pyproject.toml +0 -36
  25. dgcv-0.2.3/src/DGCV/__init__.py +0 -192
  26. dgcv-0.2.3/src/DGCV.egg-info/PKG-INFO +0 -46
  27. {dgcv-0.2.3 → dgcv-0.2.4}/LICENSE.txt +0 -0
  28. {dgcv-0.2.3 → dgcv-0.2.4}/MANIFEST.in +0 -0
  29. {dgcv-0.2.3 → dgcv-0.2.4}/src/DGCV/assets/__init__.py +0 -0
  30. {dgcv-0.2.3 → dgcv-0.2.4}/src/DGCV/assets/fonts/Orbitron-Black.ttf +0 -0
  31. {dgcv-0.2.3 → dgcv-0.2.4}/src/DGCV/assets/fonts/Orbitron-Black.woff2 +0 -0
  32. {dgcv-0.2.3 → dgcv-0.2.4}/src/DGCV/assets/fonts/Orbitron-Bold.ttf +0 -0
  33. {dgcv-0.2.3 → dgcv-0.2.4}/src/DGCV/assets/fonts/Orbitron-Bold.woff2 +0 -0
  34. {dgcv-0.2.3 → dgcv-0.2.4}/src/DGCV/assets/fonts/Orbitron-ExtraBold.ttf +0 -0
  35. {dgcv-0.2.3 → dgcv-0.2.4}/src/DGCV/assets/fonts/Orbitron-ExtraBold.woff2 +0 -0
  36. {dgcv-0.2.3 → dgcv-0.2.4}/src/DGCV/assets/fonts/Orbitron-Medium.ttf +0 -0
  37. {dgcv-0.2.3 → dgcv-0.2.4}/src/DGCV/assets/fonts/Orbitron-Medium.woff2 +0 -0
  38. {dgcv-0.2.3 → dgcv-0.2.4}/src/DGCV/assets/fonts/Orbitron-Regular.ttf +0 -0
  39. {dgcv-0.2.3 → dgcv-0.2.4}/src/DGCV/assets/fonts/Orbitron-Regular.woff2 +0 -0
  40. {dgcv-0.2.3 → dgcv-0.2.4}/src/DGCV/assets/fonts/Orbitron-SemiBold.ttf +0 -0
  41. {dgcv-0.2.3 → dgcv-0.2.4}/src/DGCV/assets/fonts/Orbitron-SemiBold.woff2 +0 -0
  42. {dgcv-0.2.3 → dgcv-0.2.4}/src/DGCV/assets/fonts/PatrickHand-Regular.ttf +0 -0
  43. {dgcv-0.2.3 → dgcv-0.2.4}/src/DGCV/assets/fonts/fonts.css +0 -0
  44. {dgcv-0.2.3 → dgcv-0.2.4}/src/DGCV/assets/inversions/__init__.py +0 -0
  45. {dgcv-0.2.3 → dgcv-0.2.4}/src/DGCV/assets/inversions/precomputed_2x2.py +0 -0
  46. {dgcv-0.2.3 → dgcv-0.2.4}/src/DGCV/assets/inversions/precomputed_3x3.py +0 -0
  47. {dgcv-0.2.3 → dgcv-0.2.4}/src/DGCV/assets/inversions/precomputed_4x4.py +0 -0
  48. {dgcv-0.2.3 → dgcv-0.2.4}/src/DGCV/assets/inversions/precomputed_5x5.py +0 -0
  49. {dgcv-0.2.3 → dgcv-0.2.4}/src/DGCV/assets/inversions/precomputed_6x6.py +0 -0
  50. {dgcv-0.2.3 → dgcv-0.2.4}/src/DGCV/assets/inversions/precomputed_7x7.py +0 -0
  51. {dgcv-0.2.3 → dgcv-0.2.4}/src/DGCV/config.py +0 -0
  52. {dgcv-0.2.3 → dgcv-0.2.4}/src/DGCV/styles.py +0 -0
  53. {dgcv-0.2.3 → dgcv-0.2.4}/src/DGCV.egg-info/dependency_links.txt +0 -0
  54. {dgcv-0.2.3 → dgcv-0.2.4}/src/DGCV.egg-info/requires.txt +0 -0
  55. {dgcv-0.2.3 → dgcv-0.2.4}/src/DGCV.egg-info/top_level.txt +0 -0
dgcv-0.2.4/PKG-INFO ADDED
@@ -0,0 +1,79 @@
1
+ Metadata-Version: 2.1
2
+ Name: DGCV
3
+ Version: 0.2.4
4
+ Summary: Differential Geometry with Complex Variables
5
+ Author: David Sykes
6
+ Author-email: David Sykes <david@realandimaginary.com>
7
+ License: MIT
8
+ Requires-Python: >=3.6
9
+ Description-Content-Type: text/markdown
10
+ License-File: LICENSE.txt
11
+ Requires-Dist: sympy>=1.9
12
+ Requires-Dist: pandas>=1.0
13
+ Requires-Dist: ipython>=7.0
14
+
15
+ # DGCV: Differential Geometry with Complex Variables
16
+
17
+ DGCV is an open-source Python package providing basic tools for differential geometry integrated with systematic organization of structures accompanying complex variables, in short, Differential Geometry with Complex Variables.
18
+
19
+ At its core are fully featured symbolic representations of standard DG objects such as vector fields and differential forms, defined relative to standard or complex coordinate systems. As systems of differential geometric objects constructed from complex variables inherit natural relationships from the underlying complex structure, DGCV tracks these relationships across the constructions. Immediate advantages of the uniform integration are seen in smooth switching between real and holomorphic coordinate representations of mathematical objects. In computations, DGCV classes 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.
20
+
21
+ DGCV was developed using Python 3.12, with dependencies on the SymPy and Pandas libraries in addition to base Python. Its classes integrate SymPy objects within their data structures and subclass from SymPy.Basic, thereby inheriting much of SymPy’s functionality. For instance, one can apply sympy.simplify() directly to most DGCV class objects. Developing complete compatibility with SymPy is a goal still in progress. Pandas is used to format and display data in a more readable manner.
22
+
23
+ ## Features
24
+ - Fully featured symbolic representations of vector fields, differential forms, and tensor fields
25
+ - 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.
26
+ - Dedicated python classes for representing common differential geometric structures including Riemannian metrics, Kahler structures, and more
27
+ - Custom LaTeX rendering for clean visual representation of mathematical objects, ideal for sharing mathematical ideas through clear Jupyter notebooks.
28
+
29
+ ## Installation
30
+
31
+ You can install DGCV directly from PyPI with pip:
32
+
33
+ ```bash
34
+ pip install DGCV
35
+ ```
36
+
37
+ Note, depending on the operating system, a command like `python3` (for macOS/ Linux) or `py` (for windows) should proceed `pip`.
38
+
39
+ ## Tutorials
40
+
41
+ Two Jupyter Notebook tutorials are available to help getting started with DGCV:
42
+
43
+ 1. **DGCV Introduction**: An introduction to the key concepts and setup
44
+ - [View DGCV Introduction Tutorial](https://www.realandimaginary.com/dgcv/tutorials/DGCV_introduction/)
45
+
46
+ 2. **DGCV in Action**: A quick tour through examples from some of the library's more elaborate functions
47
+ - [View DGCV in Action Tutorial](https://www.realandimaginary.com/dgcv/tutorials/DGCV_in_action/)
48
+
49
+
50
+ ### Running the Tutorials Locally
51
+
52
+ If you clone the DGCV github repository, you can run the tutorials locally with Jupyter:
53
+
54
+ ```bash
55
+ git clone https://github.com/YikesItsSykes/DGCV.git
56
+ cd DGCV/tutorials
57
+ jupyter notebook DGCV_introduction.ipynb
58
+ jupyter notebook DGCV_in_action.ipynb
59
+ ```
60
+ Or download the tutorials individually from the repository [DGCV github repo](https://github.com/YikesItsSykes/DGCV).
61
+
62
+ ## Documentation
63
+ 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 under development, so for now, refer to the docstrings within the code for more information on available classes/methods and functions.
64
+
65
+ ## License
66
+ DGCV is licensed under the MIT License. See the `LICENSE.txt` file for more information.
67
+
68
+ ## Author
69
+ DGCV was created and is maintained by [David Sykes](https://www.realandimaginary.com).
70
+
71
+ ---
72
+
73
+ ### Future Development
74
+ The current (0.x.x) version of DGCV is foundation on which a lot more can be built. Many additions for future updates are planned, including:
75
+ - 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 sytems automate the process. The current API meets this goal for interactions with DGCV's core classes, but it is not fully extended to some ancillary classes. For example, full coordinate conversion features are implemented for differential forms but not yet for general tensor fields.
76
+ - Expanding libraries dedicated to specialized areas of differential geometry including, Symplect/Contact Hamiltonian formalism, CR structures, Riemannian and Kahler, Sasakian, etc.
77
+
78
+ Contributions and feedback from anyone interested are warmly welcomed.
79
+ Stay tuned for more updates!
dgcv-0.2.4/README.md ADDED
@@ -0,0 +1,65 @@
1
+ # DGCV: Differential Geometry with Complex Variables
2
+
3
+ DGCV is an open-source Python package providing basic tools for differential geometry integrated with systematic organization of structures accompanying complex variables, in short, Differential Geometry with Complex Variables.
4
+
5
+ At its core are fully featured symbolic representations of standard DG objects such as vector fields and differential forms, defined relative to standard or complex coordinate systems. As systems of differential geometric objects constructed from complex variables inherit natural relationships from the underlying complex structure, DGCV tracks these relationships across the constructions. Immediate advantages of the uniform integration are seen in smooth switching between real and holomorphic coordinate representations of mathematical objects. In computations, DGCV classes 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.
6
+
7
+ DGCV was developed using Python 3.12, with dependencies on the SymPy and Pandas libraries in addition to base Python. Its classes integrate SymPy objects within their data structures and subclass from SymPy.Basic, thereby inheriting much of SymPy’s functionality. For instance, one can apply sympy.simplify() directly to most DGCV class objects. Developing complete compatibility with SymPy is a goal still in progress. Pandas is used to format and display data in a more readable manner.
8
+
9
+ ## Features
10
+ - Fully featured symbolic representations of vector fields, differential forms, and tensor fields
11
+ - 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.
12
+ - Dedicated python classes for representing common differential geometric structures including Riemannian metrics, Kahler structures, and more
13
+ - Custom LaTeX rendering for clean visual representation of mathematical objects, ideal for sharing mathematical ideas through clear Jupyter notebooks.
14
+
15
+ ## Installation
16
+
17
+ You can install DGCV directly from PyPI with pip:
18
+
19
+ ```bash
20
+ pip install DGCV
21
+ ```
22
+
23
+ Note, depending on the operating system, a command like `python3` (for macOS/ Linux) or `py` (for windows) should proceed `pip`.
24
+
25
+ ## Tutorials
26
+
27
+ Two Jupyter Notebook tutorials are available to help getting started with DGCV:
28
+
29
+ 1. **DGCV Introduction**: An introduction to the key concepts and setup
30
+ - [View DGCV Introduction Tutorial](https://www.realandimaginary.com/dgcv/tutorials/DGCV_introduction/)
31
+
32
+ 2. **DGCV in Action**: A quick tour through examples from some of the library's more elaborate functions
33
+ - [View DGCV in Action Tutorial](https://www.realandimaginary.com/dgcv/tutorials/DGCV_in_action/)
34
+
35
+
36
+ ### Running the Tutorials Locally
37
+
38
+ If you clone the DGCV github repository, you can run the tutorials locally with Jupyter:
39
+
40
+ ```bash
41
+ git clone https://github.com/YikesItsSykes/DGCV.git
42
+ cd DGCV/tutorials
43
+ jupyter notebook DGCV_introduction.ipynb
44
+ jupyter notebook DGCV_in_action.ipynb
45
+ ```
46
+ Or download the tutorials individually from the repository [DGCV github repo](https://github.com/YikesItsSykes/DGCV).
47
+
48
+ ## Documentation
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 under development, so for now, refer to the docstrings within the code for more information on available classes/methods and functions.
50
+
51
+ ## License
52
+ DGCV is licensed under the MIT License. See the `LICENSE.txt` file for more information.
53
+
54
+ ## Author
55
+ DGCV was created and is maintained by [David Sykes](https://www.realandimaginary.com).
56
+
57
+ ---
58
+
59
+ ### Future Development
60
+ The current (0.x.x) version of DGCV is foundation on which a lot more can be built. Many additions for future updates are planned, including:
61
+ - 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 sytems automate the process. The current API meets this goal for interactions with DGCV's core classes, but it is not fully extended to some ancillary classes. For example, full coordinate conversion features are implemented for differential forms but not yet for general tensor fields.
62
+ - Expanding libraries dedicated to specialized areas of differential geometry including, Symplect/Contact Hamiltonian formalism, CR structures, Riemannian and Kahler, Sasakian, etc.
63
+
64
+ Contributions and feedback from anyone interested are warmly welcomed.
65
+ Stay tuned for more updates!
@@ -0,0 +1,26 @@
1
+ [build-system]
2
+ requires = ["setuptools>=61.0"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ requires-python = ">=3.6"
7
+ name = "DGCV"
8
+ version = "0.2.4"
9
+ description = "Differential Geometry with Complex Variables"
10
+ authors = [{ name = "David Sykes", email = "david@realandimaginary.com" }]
11
+ license = { text = "MIT" }
12
+ dependencies = ["sympy>=1.9", "pandas>=1.0", "ipython>=7.0"]
13
+ readme = "README.md"
14
+
15
+ [tool.ruff]
16
+ line-length = 88
17
+ select = ["F", "E", "W", "I"]
18
+ extend-exclude = ["_build", "buck-out", "build", "dist", "tutorials"]
19
+
20
+ [tool.ruff.lint]
21
+ ignore = ["E501", "Q", "W291"]
22
+
23
+ [tool.black]
24
+ line-length = 88
25
+ skip-string-normalization = false
26
+ target-version = ["py37", "py38", "py39", "py310", "py311"]
@@ -1,6 +1,6 @@
1
1
  [metadata]
2
2
  name = DGCV
3
- version = 0.2.3
3
+ version = 0.2.4
4
4
  description = A package for Differential Geometry with Complex Variables
5
5
  author = David Sykes
6
6
  author_email = david@realandimaginary.com
@@ -1,4 +1,4 @@
1
- from setuptools import setup, find_packages
1
+ from setuptools import find_packages, setup
2
2
 
3
3
  long_description = """
4
4
  # DGCV - Differential Geometry with Complex Variables
@@ -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.2.3",
18
+ version="0.2.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",
@@ -24,15 +24,41 @@ License:
24
24
  """
25
25
 
26
26
  ############## dependencies
27
- from sympy import eye, expand, Matrix, numer, poly_from_expr, solve, Transpose, Symbol
28
27
  from functools import reduce
29
- from .config import _cached_caller_globals
30
- from .combinatorics import *
31
- from .DGCore import *
32
- from .vectorFieldsAndDifferentialForms import *
33
- from .polynomials import *
34
- from ._safeguards import retrieve_passkey
35
28
 
29
+ from sympy import (
30
+ I,
31
+ Matrix,
32
+ Rational,
33
+ Symbol,
34
+ Transpose,
35
+ conjugate,
36
+ expand,
37
+ eye,
38
+ im,
39
+ numer,
40
+ poly_from_expr,
41
+ simplify,
42
+ solve,
43
+ )
44
+
45
+ from ._safeguards import retrieve_passkey
46
+ from .config import _cached_caller_globals
47
+ from .DGCVCore import (
48
+ VFClass,
49
+ addVF,
50
+ allToReal,
51
+ clearVar,
52
+ holToReal,
53
+ holVF_coeffs,
54
+ listVar,
55
+ realPartOfVF,
56
+ scaleVF,
57
+ symToReal,
58
+ variableProcedure,
59
+ )
60
+ from .polynomials import createPolynomial
61
+ from .vectorFieldsAndDifferentialForms import assembleFromHolVFC
36
62
 
37
63
  ############## CR geometry
38
64
 
@@ -213,12 +239,12 @@ def findWeightedCRSymmetries(
213
239
  varLoc1.difference_update(varLoc)
214
240
  varComp.difference_update(varLoc1)
215
241
  variableProcedure(arg6, len(varLoc), assumeReal=True)
216
- if applyNumer == True:
242
+ if applyNumer:
217
243
  if varLoc1 == set():
218
244
  varLoc1 = set(arg2)
219
245
  coefListLoc = poly_from_expr(expand(numer(tOLoc)), *varLoc1)[0].coeffs()
220
246
  solLoc = solve(coefListLoc, varLoc)
221
- elif simplifyingFactor == None:
247
+ elif simplifyingFactor is None:
222
248
  if varLoc1 == set():
223
249
  varLoc1 = set(arg2)
224
250
  coefListLoc = poly_from_expr(expand(tOLoc), *varLoc1)[0].coeffs()
@@ -233,7 +259,7 @@ def findWeightedCRSymmetries(
233
259
  if solLoc == []:
234
260
  clearVar(*listVar(temporary_only=True), report=False)
235
261
  return "no solution"
236
- elif type(solLoc) == dict:
262
+ elif type(solLoc) is dict:
237
263
  VFCLoc = [j.subs(solLoc) for j in holVF_coeffs(VFLoc, arg2)]
238
264
  subVar = sum(VFCLoc).atoms(Symbol)
239
265
  subVar.difference_update(set(arg2))
@@ -243,12 +269,12 @@ def findWeightedCRSymmetries(
243
269
  for j in VFCLoc
244
270
  ]
245
271
  clearVar(*listVar(temporary_only=True), report=False)
246
- if returnVectorFieldBasis == True:
272
+ if returnVectorFieldBasis:
247
273
  VFListLoc = []
248
274
  for j in eval(arg6, _cached_caller_globals):
249
275
  VFCLocTemp = [
250
276
  k.subs(j, 1).subs(
251
- [(l, 0) for l in eval(arg6, _cached_caller_globals)]
277
+ [(ll, 0) for ll in eval(arg6, _cached_caller_globals)]
252
278
  )
253
279
  for k in VFCLoc
254
280
  ]
@@ -306,7 +332,7 @@ def model2Nondegenerate(arg1, arg2, arg3, arg4, return_matrices=False):
306
332
  * arg2
307
333
  * arg1
308
334
  )
309
- if return_matrices == True:
335
+ if return_matrices:
310
336
  return (
311
337
  simplify(
312
338
  (