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, and Ga.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 spelt itertools.chain.from_iterable (#175).
    • Dop.basic, which was a non-working version of grads() (#185).
    • Pdop.setGa, Sdop.setGa, Dop.setGa, all of which rely on dangerous global state - use the ga 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 spell galgebra.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 spelt Pdop({}), the latter of which has always worked (#187).
    • galgebra.ga.Ga.Pdop_identity(), which is better spelt ga.pdop({}) (#194).
    • galgebra.ga.Ga.Pdiffs(), which is better spelt ga.pdop(x) (#194).
    • galgebra.ga.Ga.sPds(), which is better spelt ga.sdop(x) (#194).
  • [Bug] #60: (also #141) Make the following operations on galgebra.mv.Mv non-mutating:

    Any code relying on this behavior will need to change from x.method() to x = 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. The dot() 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, and galgebra.ga.Ga.indices now reference the scalar S(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, and Pdop 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 of linear_expand(x, mode=True), use linear_expand_terms(x) instead.

  • [Bug] #177: Dop objects that evaluate to 0 no longer raise cryptic ValueErrors when operated on.

  • [Bug] #151: Dop([], ga=ga) and Sdop([], ga=ga) now evaluate to multiplication by zero, not by one. Multiplication by one can as always be spelt Dop([(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 for Sdop and Dop instances.

  • [Bug] #187: Pdop no longer silently accepts extra arguments.

  • [Bug] #187: Sdop(x) now functions as intended as an alias of Sdop([(S(1), Pdop({x: 1}))]), which previously crashed.

  • [Bug] #188: Passing a ga keyword-argument to sm(), mv(), and lt() is now an error, previously it was silently ignored.

  • [Bug] #188: pdop() and sdop() are now transparent aliases to Pdop and Sdop, 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/
    • Convert doc to Sphinx with the help of pandoc, notedown and nbsphinx
    • Add Getting Started guide to README
    • Update installation instructions in README
    • Add migration guide from sympy.galgebra and brombo/galgebra
    • Add Changelog
    • Add doc for examples, tests and bundled resources
  • [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