1.8:
Backwards compatibility breaks and deprecations
Please manually add any backwards compatibility breaks or deprecations here, in addition to the automatic listing below.
assumptions
AskHandler(), register_handler() and remove_handler() are deprecated. Handler now must be multipledispatch instance.
parsing
Parsing of "Q" returns AssumptionKeys instance in assumptions module. This means that sympify("Q") will no longer return a symbol.
Changes
assumptions
Q.infinite now correctly evaluates to True for oo, -oo, and zoo.
Assumption predicates now correctly evaluates to None for S.NaN.
Relational objects do not need to be wrapped by Q.is_true to be asked or refined anymore
Q.is_true wrapping over AppliedPredicate now just return the argument.
refine arg(x) when x is real and nonzero
assumptions/relation module is introduced. This module implements binary relation as predicate.
AskHandler(), register_handler() and remove_handler() are deprecated. Handler now must be multipledispatch instance.
Predicate now uses a single handler which is multipledispatch instance.
Predicate can now take multiple arguments.
Predicate("...") now returns UndefinedPredicate instance. To define a predicate, you must make a subclass of Predicate.
calculus
Using maximum with a piecewise expression over a domain no longer fails due to a bug fix in Piecewise.as_expr_set_pairs.
codegen
allowing for multi-dimensional arrays as arguments/locals in c code generation
create_expand_pow_optimization is now customizable with respect to requirement on base.
Support flattening of elementwise additions of array expressions.
Fixes to array-expressions in order to properly work with ZeroArray and ZeroMatrix.
Fixing matrix expression recognition from array-expressions.
Minor fixes to the way the AST of array expressions is built
Add normalization of CodegenArrayDiagonal when it's nested with CodegenArrayPermuteDims and CodegenArrayContraction.
Increased support for the normalization of array expressions and permutations of indices.
parse_matrix_expression( ) is now able to parse traces of matrices.
combinatorics
Added a section to the permutation docs about containment in permutation groups.
concrete
Improved infinite summation capability by adding residue formula.
A bug leading to incorrect evaluation of a summation of an exponential function was fixed.
core
Fixed a bug in Pow._eval_nseries that added Order terms to exact expansions
Fixed a bug in Expr.round that could lead to infinite recursion in integrate.
Removed deprecated ClassRegistry
get_integer_part no longer has a threshold on the approximation to closest integer based on difference, allowing floor to give more accurate results for smaller evalf precisions also
A bug causing match to fail for expressions with different signs was fixed. Previously this resulted in solve raising an exception for some inputs.
Make S(0.0) == S.false return False
.refine() method is moved from Expr to Basic.
gcd correctly handles unevaluated Mul
Fixed a bug leading to infinite recursion in the old assumptions under evaluate(False).
Fixed _eval_is_zero() functionality when imaginary numbers are involved.
Kind classification of objects is introduced. This feature is experimental, and can be replaced or deleted in the future.
Make class Eq with sets as arguments work with simplify().
Fixed a few broken cases of expr.is_integer
functions
Implemented Riemann Xi function
riemaan xi function
Added nseries expansion for besselj and bessely
Fixed leading term calculation of sin functions to handle angles outside (-pi, pi)
Added aseries expansion to error functions
Changes _eval_nseries of Abs to no longer return a Piecewise
Modified _eval_nseries to handle infinity and added _eval_as_leading_term in floor and ceiling
Added Generalized Incomplete, Generalized Regularized and Central Beta functions
Added _eval_nseries support to sign
Fixed assumption is_algebraic for exponentials with rational multiples of I*pi to be True.
geometry
Fix AssertError for vertical tangent
Geometric entities with symbolic coordinates will not be printed in SVG.
integrals
Fixed a bug that led to RecursionError in integrals involving hyperbolic functions.
The heurisch integration method was made faster by improvements in the sparse linear systems solver.
A bug leading to incorrect results when integrating Piecewise expressions where a condition simplifies to True was fixed.
logic
simplify_logic faster in most cases, especially for larger expressions.
refine() on Boolean objects reduces them to true or false if the truth value can be determined.
matrices
Fixed a bug that led to the wrong derivative result in matrix expressions.
The eye and zero functions have been made much faster for large matrices.
Added two new functions upper_triangular and lower_triangular, that return upper and lower triangular parts of a matrix.
Minus one, integers, rational numbers multiplied with MatAdd is automatically distributed.
Added function returning Wilkinson matrix
Implemented Singular Value decomposition for matrices
Implemented Upper Hessenberg Decomposition for a matrix
eigenvals, eigenvects without radical solution will be returned as CRootOf
Added function to calculate Generalized Schur Complement for Block Matrices
Added functions to compute LDU, UDL and LU decompositions for Block Matrices
Fixed issues with dot product for Matrix.orthogonalize with complex vectors.
Fixed zero division issues for Matrix.QRdecomposition with zero columns coming first than nonzero columns.
Added a function to compute the permanent of a matrix
Changed behaviour of eq() of class DenseMatrix
det has a new option 'gauss-ge' which is much faster in many cases
ntheory
Added documentation of ecm and qs functions
Fixed a bug in the is_gaussian_prime function for python complex numbers (e.g. 1+1j).
primerange now accepts a single argument i.e., primerange(input_arg) is valid and is same as primerange(2, input_arg).
Added motzkin numbers
parsing
Fixed issue with parsing logarithm bases without curly braces
Fix parse_expr parsing of expressions with methods when using the implicit_multiplications transformation.
Include the transformed code in the error message when the evaluation in parse_expr fails.
Extended the LaTeX parser with support for complex conjugates (via \overline{...}).
Latex parser does not evaluate sqrt expressions anymore.
physics.continuum_mechanics
make beam module compute correctly internal forces
physics.optics
Fixed bugs related to basic operations on TWave
physics.quantum
WignerD now evaluates to KroneckerDelta in some cases.
physics.units
Fix bug when input argument to a function is an integer
Change default behavior for functions (all function arguments must be dimensionless by default)
sin, cos, tan, cot, sec, and csc functions may have a dimensionless or angle input argument
Exponents must now be dimensionless
Constants such as pi and E are now treated as dimensionless (raised exception previously)
Numbers with an imaginary component are now treated as dimensionless (raised exception previously)
Fixed a bug with derived units and dimensions in check_dimensions.
Fix bug in convert_to returning wrong units in some cases where the linear equation system between canonical units is unsolvable.
physics.vector
Fix documentation for v1pt_theory
Introduced new methods on ReferenceFrame: .orient_axis(), .orient_explicit(), .orient_body_fixed(), .orient_space_fixed(), and .orient_quaternion(). .orient() calls out to each new method and it is recommended to use the new methods.
Added .xreplace() to Vector Class.
Added .xreplace() to Dyadic Class.
Added .evalf() to Vector class
Added .evalf() to Dyadic class
plotting
Added handling for OverflowError (when plotting functions like exp(1/x)).
polys
Added internal representation as both dense and sparse matrix
Added docstrings for Domain Matrix class
Add zeros method to DomainMatrix
A new sparse implementation of DomainMatrix is added.
make is_disjoint strict so that inequalities evaluated with solve() return consistent results
The DomainMatrix class has moved from sympy.polys.domainmatrix to sympy.polys.matrices and should now be imported as from sympy.polys.matrices import DomainMatrix.
A new polys FiniteExtension domain is added.
numberfields: implemented new algorithm for primitive_element in case ex=True.
added boilerplate index method for FracField
Solved bug in Poly.replace
Solve a bug in polytools.degree.
Use assumption system instead of structural equality check in __bool__ method of Expression domain element (fixing cases where Poly(...).is_zero would incorrectly return False)
printing
The pretty printer was made faster when printing large sequences (e.g. tuples, sets etc).
Fixed a bug which led to latex printing error in singularity function expressions.
Replaced the Theano printer with an Aesara printer
Symbols with Unicode character names and no underscores, like ω0 now properly pretty print subscripts.
Fix the printing of the vertical bar in ImageSet, ConditionSet, and ComplexRegion so that it is the full height in the pretty and LaTeX printers.
Fix the tag for the degree of a root with a rational base in MathML output.
irrational powers are no longer printed with square root sign, they are printed as fractional powers
Allow spreading assignments across multiple symbols when printing multi-member objects.
Support various array constructor types when printing arrays to GLSL.
Fixes a bug when printing negative expressions to GLSL with operators printed as functions.
Support a custom 0 substitution for printing expressions representing various GLSL types.
make cxxcode correctly print the first argument of Min/Max functions
sets
Added basic denesting functionaility for sets of the form ConditionSet(x, Contains(x, ...)).
ConditionSet.contains(x) now returns False if x is not in the base set (even if its substitution into the condition will cause an error).
FiniteSet.evalf with a subs argument now does the substitution. Previously, the argument was ignored.
Add .simplify to FiniteSet.
Make 'is_subset' work for ProductSet
changed behavior of Rationals.contains(float) to indeterminate
tests modified to include new behavior
.evalf() precisions with x and FiniteSet(x) is same now.
simplify
Fix simplify calls sympify without rational parameter
TRmorrie now takes powers of cos terms into account
solvers
Fixed a bug in solve that expanded hyperbolic function constants to equivalent exp form.
Handle x**r=0 case in invert_complex
Fixed a bug in solveset, which led to infinite recursion for solving some expressions involving radicals.
The new sparse DomainMatrix implementation is used in linsolve to make it much faster when solving large sparse systems of linear equations.
Modified symbols sorting in solvers._solve_system to ensure solve and linsolve solve the same way
Added solver for 2nd order nonlinear autonomous ODE.
speed improvement in a substep of rsolve_hyper (when computing constant solutions to constant coefficient recurrences).
Fixed incorrect solutions from rsolve for higher order recurrences
stats
Refactory and simplification of sampling backends for random variables.
Expectation can now be calculated across multiple Uniform RVs evaluating to zero
Implemented Matrix Student's t-distribution
Fixed simplification bug in Stochastic Processes by introducing abstract Distribution class
API changed for StochasticProcess.distribution which now expects a timestamp argument instead of RandomIndexedSymbol object.
Implemented FlorySchulz Distribution
implemented LogCauchy Distribution
Implemented Logit-Normal probability distribution
Fixes cdf computation of Discrete random variables by using integer limits
Added 2 new distributions in frv_types.
added support for fundamental matrix for regular markov chains
Added support for multiple RandomIndexedSymbols in DiscreteMarkovChain
tensor
Introduced objects ArraySymbol and ArrayElement for array expressions equivalent to MatrixSymbol and MatrixElement in the matrix expression module.
shape() function is introduced in array module.
Add class ZeroArray for array expressions of zero-valued elements.
Make Array differentiation(derive_by_array) work with non sympy expressions.
Added tensordiagonal( ) function to perform diagonalization of array expressions.
Adding an array with any other type now consistently gives NotImplemented.
utilities
Added official support for using CuPy to GPU accelerate lambdify functions.
Added Replacer class to simplify the creation of replacement expressions with MatchPy.
Added tests for optional parameter in MatchPy patterns.
Added string printers for MatchPy-compatible wildcards in sympy.utilities.matchpy_connector
Added WildDot, WildPlus and WildStar classes to MatchPy connector. These classes correspond to the dot, dot-plut and dot-star expressions in regular expression, but operate on SymPy expression trees and are aware of associative and commutative properties, features supported through the MatchPy library.
minlex no longer accepts is_set or small arguments
minlex and least_rotation now accept key= arguments similar to sorted.
vector
Fixed a bug with integral over ImplicitRegion objects
other
Expanding documentation to include all class members with docstrings
--1.2.0--
Released February 1, 2021
Features and optimizations:
* Support @ operator for matrix multiplication (Max Gaukler)
* Add eta() implementing the Dedekind eta function
* Optimized the python_trailing function (adhoc-king)
* Implement unary plus for matrices (Max Gaukler)
* Improved calculation of gram_index (p15-git-acc)
Compatibility:
* Enable sage backend by default only if SAGE_ROOT is set (Pauli Virtanen)
* Fix syntax warnings on CPython 3.8 (Sergey B Kirpichev)
* Changed version requirements to Python 2.7 and 3.4 or later
(Sergey B Kirpichev)
* Improvements to the setup and test code (Sergey B Kirpichev)
* Fix sys.version comparisons for compatibility with Python 3.10 (Jakub Wilk)
* Fixes to Python2/3 compatibility for printing (Christian Clauss)
Bug fixes:
* Fix a possible division by zero in shanks() (Pascal Hebbeker)
* Fixed indexing errors in deHoog, Knight & Stokes inverse laplace
transform algorithm (Kris Kuhlman)
* Corrected branch cuts of the elliprj() function in some cases
* Fix initialization of iv.matrix from non-interval matrix (Max Gaukler)
* Preserve function signatures in PrecisionManager (Viet Tran)
* Implemented float and complex conversions for ivmpf
(Jonathan Warner)
* Fixed issue with scalar-matrix multiplication for interval matrices
(Jonathan Warner)
* Fix estimation of quadrature error with multiple subintervals (Tom Minka)
* Fixed a problem with the defun decorators (Sergey B Kirpichev)
* Fix eigenvalue sorting by absolute value (Georg Ostrovski)
Cleanup:
* Documentation corrections (Paul Masson, S.Y. Lee)
* Remove inaccessible logic in fsum/fdot (Sergey B Kirpichev)
* Remove broken force_type option for matrix constructor (Max Gaukler)
* Fix text of the BSD license in LICENSE (Sergey B Kirpichev)
* Minor code cleanup (Frédéric Chapoton)
* Removed old, unused code
1.20.3:
BUG: Correct ``datetime64`` missing type overload for ``datetime.date``
MAINT: Remove ``__all__`` in favor of explicit re-exports
BLD: Strip extra newline when dumping gfortran version on MacOS
BUG: fix segfault in object/longdouble operations
MAINT: Use towncrier build explicitly
MAINT: Relax certain integer-type constraints
MAINT: Remove unsafe unions and ABCs from return-annotations
MAINT: Allow more recursion depth for scalar tests.
BUG: Initialize the full nditer buffer in case of error
BLD: remove unnecessary flag ``-faltivec`` on macOS
MAINT, CI: treats _SIMD module build warnings as errors through...
BUG: for MINGW, threads.h existence test requires GLIBC > 2.12
BUG: Make changelog recognize gh- as a PR number prefix.
REL, DOC: Prepare for the NumPy 1.20.3 release.
BUG: Fix failing mypy test in 1.20.x.
Version 1.6.1
-------------
No code changes with respect to 1.6
* Migrate CI to GitHub actions
* Fix release
Version 1.6
-----------
* Add peek support
* Remove py2 support
* Full test coverage
2021-01-05 -- 1.8.1
* feature: add tox helpers to make pipy and debian releases
* fix: use TypedDict if python version > 3.8 only, otherwise use a Dict
(TypedDict were imported from typing_extension 3.7.4, which is not
available on debian buster)
2020-11-22 -- 1.8.0
* deprecation: add subclass to DeprecationWarning with structured
information (TargetRenamedDeprecationWarning,
TargetDeprecatedDeprecationWarning, TargetRemovedDeprecationWarning,
TargetMovedDeprecationWarning)
* deprecation: add tests to ensure that DeprecationWarning target the
correct line and the correct file
* deprecation: add types annotations
* declare that logilab.common ships type annotations (py.typed file)
* various bug fixes
2020-09-03 -- 1.7.3
* type: declare that logilab-common ship type annotations
* make the build reproducible
* fix(deprecation): stacked decorators breaks getting the real callable
__name__ attribute
* fix: in some situation (using several deprecation functions), renaming
deprecation utils failed to point to the correct new name and used random
internal names of the module
2020-06-24 -- 1.7.2
* fix(deprecation): rollback to old class_deprecation being a class behavior
2020-06-11 -- 1.7.1
* fix: import error on re.Pattern with python < 3.7
2020-06-10 -- 1.7.0
* logilab-common requires python 3.6 now
* greatly improve our CI and migrate it to heptapod/gitlab-ci
* black the whole code base
* move test suit to pytest
* use check-manifest and fix related bugs in MANIFEST.in
* integrates flake8 and please the flake8 gods
* various fixes
* class_deprecation is not a class anymore
* pytest 5.4.2 breaks tests, pin to 5.4.1 for now
2020-05-25 -- 1.6.4
* fix: rollback to old class_deprecation being a class behavior
* fix: @functools.wraps broke callable_renamed, write a @lazy_wraps and
use it everywhere in logilab.common.deprecation
* add docstring to LazyObject
2020-05-11 -- 1.6.3
* fix: metaclass conflict in class_deprecated
2020-05-11 -- 1.6.2
* fix: explicitly requires python 3.6 in setup.py
2020-05-01 -- 1.6.1
* bug fix, bad usage of callable_renamed
2020-04-30 -- 1.6.0
* logilab-common requires python >= 3.6 now
* use pyannotates to introduces types in all the modules
* introduce a list of new functions in logilab.common.deprecation: callable_renamed, attribute_renamed, argument_renamed, argument_remove
* renamed "renamed" to "callable_renamed", "deprecated" to
"callable_deprecated", "moved" to "callable_moved" for coherence
* refactor the whole logilab.common.deprecation to simplify its code
* automatically detect from which modules a deprecated utils is called
* correctly display the line where a deprecated utils is used
* various small fixes, thx mypy
2019-12-04 -- 1.5.2
* documentation is now available at https://logilab-common.readthedocs.io/
* drop python2 support, python >= 3.3 is the new required version
* therefor, drop dependency on six
* drop rpm packaging
* registry: add a Registry.add_select_best_listener method to subscribe to
the result of a _select_best of a Registry.
* shellutils: deprecate 'input' as argument of RawInput in favor of
'input_function'
Change log:
0.5.4
======
- New Features:
- Add --line/-l and --column/-c number (#107, !83)
- Port to GtkSourceView 4 (#55, #80, !10)
- Bug Fixes:
- Delay request to scroll to cursor for the correct active view
- Monitor hardlinks with glib 2.56.2 (#110, !82)
- Transfer encoding from remote to primary instance (#109)
- Prevent a crash when no language is found
- Make window require attention when opening new tabs (#106, #93, !81)
- Fix BOM array (!80)
- Correctly initialize toolbar style combo box (#103)
- Allow checking parent sources when looking up schema (#101)
- Fix missing parameter to "select-all" signal (!79)
- Translation Updates:
Hebrew, Indonesian, Spanish, Swedish
This enables use of MPI compiler wrappers present in the host
system via MPI_TYPE=native. Also, it checks for conflicts with
a preintalled different MPI choice from pkgsrc and.
The package needs Python 3.5 or newer, and apparently this is the better way to
register it; no functional change otherwise intended.
As suggested by leot@; thanks!
-the default (non prefixed) search is now "path fuzzy" instead of "name fuzzy".
You can still change the default mode and mode bindings in the config. This was
done after a survey in chat.
-new "unordered tokens" search type: t/ab,cd searches for tokens "ab" and "cd"
in any order and case insensitive in the subpath, matches for example
src/dcd/Bab.rs - Fix#378
-fix search modes configuration removing all default mappings - Fix#383
-conf / quit_on_last_cancel to allow quitting with esc when there's nothing
to cancel - Fix#380
-new parent skin entry for the part of the sub-path before the file name
(visible when you search on subpath)
-when a content search has been done, opening a file with a compatible command
(like the standard :edit) opens on the first line with a match
Overview of changes in GLib 2.68.2
- Fix building third-party projects against GLib on CentOS 7 (work by
Ignacio Casal Quinteiro) (#2387)
Bugs fixed:
- #2387 json-glib does not build with glib 2.68.1
- !2060 gmacros: check that __cplusplus or _MSC_VER is defined
- !2068 gmacros: missing check if STDC_VERSION is defined
- !2079 Backport !2078 “gthreadedresolver: don't ignore flags in lookup_by_name_with_flags” to glib-2-68
Translation updates:
- Nepali
- Serbian
Fixes build errors of the form
/tmp/pkgsrc/math/arpack-ng/work.x86_64/arpack-ng-3.7.0/SRC/cnaitr.f:666:35:
383 | call svout (logfil, 1, rnorm, ndigit,
| 2
......
666 | call svout (logfil, 2, rtemp, ndigit,
| 1
Error: Rank mismatch between actual argument at (1) and actual argument at (2) (scalar and rank-1)
seen in arpack-ng-3.7.0nb1
pynng provides a nice interface on top of the full power of nng. nng, and
therefore pynng, make it easy to communicate between processes on a single
computer or computers across a network. This library is compatible with Python
3.5 or newer. nng is the rewriting of Nanomsg, which is the spiritual successor
to ZeroMQ.
Updates to latest librespot, bringing along some larger changes under the hood.
Maintenance:
-Display error when command can not be parsed (#161)
-Add rounding to volume percentage display (#493)
-Log warning instead of panicking on invalid color (#498)
-Update to librespot 0.2.0
-As part of this, a lot of the Future implementations were migrated to
async/.await and cleaned up
-Flip play/pause indicators (#511)
Features:
-Add audio_cache_size to set maximum cache size (#429)
v8.1.3
* Fixes 1439: Cast Path to a string for `pkgutil.iter_modules`).
v8.1.2
* Fix company suffix typo for ``th_TH``.
v8.1.1
* Remove ``gmail.co.uk`` from ``en_GB`` email Provider.
v8.1.0
* Extend ``pl_PL`` Pesel To support greater range of dates.
v8.0.0
* Fix CLI only giving 10 possible outputs.
v7.0.1
* Fix faker module loader to use strings rather than Paths.
v7.0.0
* Make sure `pyfloat` fails when asked to produce more digits than the system supports.
v6.6.3
* Ensure ``pytuple`` returns the correct number of items.