ChangelogΒΆ
0.4.5 2019.12.31
[Feature] #50: (also #51, #56) Improve documentation formatting:
- LaTeX and code samples are now appropriately formatted
- Attributes of classes now have permalinks
[Feature] #66: The
mul_table_dict
table, and the equivalent tables for the other products, are now computed lazily when indexed. These are now all documented too.[Feature] #66: Remove unused or unusable code in the public API:
Ga.mul_table
,Ga.wedge_table
,Ga.dot_table
,Ga.left_contract_table
, andGa.right_contract_table
, all of which were the empty list,[]
.galgebra.mv.modules
, a string which served no purpose (#71).__add_ab__
,__sub_ab__
,__mul_ab__
, and__div_ab__
, none of are real magic method names (#67). No code should be calling these directly anyway.Dop.flatten_one_level
which is better speltitertools.chain.from_iterable
(#175).Dop.basic
, which was a non-working version ofgrads()
(#185).Pdop.setGa
,Sdop.setGa
,Dop.setGa
, all of which rely on dangerous global state - use thega
keyword argument of the constructors of these types instead (#163).
[Feature] #78:
grads()
now raises a better error when it fails, and is faster.[Feature] #164: (and #169, #170) Sympy 1.5 is officially supported and tested.
[Feature] #172:
galgebra.__version__
has been added, which contains the version string.[Feature] #195: Deprecate confusing parts of the public API:
galgebra.ga.Ga.mv_I()
, which was a bad way to spellgalgebra.ga.Ga.E()
.galgebra.ga.Ga.mv_x()
, which was a bad way to create a vector with a weird name.Pdop(None)
, which is better speltPdop({})
, the latter of which has always worked (#187).galgebra.ga.Ga.Pdop_identity()
, which is better speltga.pdop({})
(#194).galgebra.ga.Ga.Pdiffs()
, which is better speltga.pdop(x)
(#194).galgebra.ga.Ga.sPds()
, which is better speltga.sdop(x)
(#194).
[Bug] #60: (also #141) Make the following operations on
galgebra.mv.Mv
non-mutating:blade_rep()
base_rep()
diff()
simplify()
expand()
collect()
print(mv)
Any code relying on this behavior will need to change from
x.method()
tox = x.method()
. Note that the latter syntax was always supported even before this change.[Bug] #61: Make contraction and Hestenes dot products thread-safe. Previously these relied on the
dot_mode
setting not being changed mid-operation. Thedot()
method still respects this setting, but is no longer used internally.[Bug] #80: (also #57, #58, #97) The
galgebra.mv.Mv
constructor no longer silently accepts illegal arguments, and produces better error messages.[Bug] #81: (also #180) Passing coefficients as
Mv(coefs, 'odd', ga=ga)
is forbidden.[Bug] #90:
galgebra.ga.Ga.blades
,galgebra.ga.Ga.bases
, andgalgebra.ga.Ga.indices
now reference the scalarS(0)
as the single grade-0 object. Previously they listed no grade 0 objects.[Bug] #134:
dot_table_dict
now contains correct values (zero) for scalar keys[Bug] #151: (also #150)
Dop
,Sdop
, andPdop
no longer have mutating methods. This fixed issues where not only would the laplacian be sometimes calculated incorrectly, but its correctness would vary depending on whether it had been printed![Bug] #165:
galgebra.metric.linear_expand()
no longer accepts a mode argument, as this did not work properly. For the old behavior oflinear_expand(x, mode=True)
, uselinear_expand_terms(x)
instead.[Bug] #177:
Dop
objects that evaluate to0
no longer raise crypticValueError
s when operated on.[Bug] #151:
Dop([], ga=ga)
andSdop([], ga=ga)
now evaluate to multiplication by zero, not by one. Multiplication by one can as always be speltDop([(S(1), Pdop({}, ga=ga}))], ga=ga)
.[Bug] #157: Adding an
Sdop
instance to a scalar now works as intended, rather than crashing.[Bug] #183:
op1 == op2
now works correctly forSdop
andDop
instances.[Bug] #187:
Pdop
no longer silently accepts extra arguments.[Bug] #187:
Sdop(x)
now functions as intended as an alias ofSdop([(S(1), Pdop({x: 1}))])
, which previously crashed.[Bug] #188: Passing a
ga
keyword-argument tosm()
,mv()
, andlt()
is now an error, previously it was silently ignored.[Bug] #188:
pdop()
andsdop()
are now transparent aliases toPdop
andSdop
, respectively. Previously, they would crash.[Support] #46: (also #69) Remove unnecessary executable bit from importable python files, and the corresponding no-op code that would be run.
[Support] #55: Rename
*kargs
to*args
internally, to match convention. This has no effect on callers, but makes the docs and source easier to read.[Support] #59: (also #65) Make internal attributes and helper functions private. All of the following have been made private by being renamed:
Mv.make_grad
(#59).Mv.make_scalar
(#59).Mv.make_vector
(#59).Mv.make_bivector
(#59).Mv.make_pseudo_scalar
(#59).Mv.make_multivector
(#59).Mv.make_spinor
(#59).Mv.make_odd
(#59).Ga.build_bases()
(#65).Ga.basis_product_tables()
(#65).Ga.build_reciprocal_basis()
(#65).Ga.build_connection()
(#65).Ga.non_orthogonal_mul_table()
(#65).Ga.base_blade_conversions()
(#65).Ga.init_connect_flg()
(#65).Ga.derivatives_of_basis()
(#65).Ga.lt_flg
(#65).Ga.agrads
(#65).Ga.dbases
(#65).Ga.XOX
(#195).
[Support] #72: Other internal cleanup.
[Support] #167: Python 3.4 is no longer supported.
[Support] #83: This is the last release to support Python 2.7.
0.4.4 2019.09.30
- [Feature] #9: Documentation now available at https://galgebra.readthedocs.io/
- [Feature] #17: Fix examples under both Python 2 & 3
- Fix examples/* and verify them in CI using nbval
- Test coverage increased from 48.89% to 66.52%
- Add README for test and examples
- [Bug] #31: Freeze the depended version of SymPy to 1.3
- [Bug] #32: Fix calculation of reciprocal basis for non-orthogonal basis
- [Bug] #30: Fix bugs of using LaTeX as symbol name
- [Bug] #29: Fix that sometimes plain text is printed with or instead of LaTeX in Jupyter Notebooks
- [Bug] #27: Fix broken class MV
- [Bug] #26: Fix calculation of the Christoffel symbols
- [Bug] #18: Fix TypeError of unicode string, use BytesIO instead of StringIO
- [Bug] #15: Fix printing of some products and inverses of multivectors
- [Support] #17: Setup Circle CI to build more Python versions faster
- TravisCI build for PRs is now removed
0.4.3 2018.02.18
- [Feature] #2: Support Python 3
- Convert code to be Python 3 compatible
- Pass tests under both Python 2 & 3
- Support installing from PyPI instead of setting pth
- Support importing with from galgebra.<package name> import *
- [Bug] #2: Fixes brombo/galgebra#20: Incorrect LaTeX output in test_derivatives_in_spherical_coordinates
- [Bug] #2: Fixes brombo/galgebra#19: Failures in test_noneuclidian_distance_calculation
- [Support] #2: Clean up obsolete code in setup.py and make it simple
- [Support] #2: Remove .pyc files and add standard .gitignore for python
- [Support] #8: Remove NumPy dependency
- [Support] #8: Validate existing Jupyter notebooks using nbval
- [Support] #8: Add test coverage in CI using using pytest and CodeCov
- [Support] #2: Setup Travis CI