Skip to content
Snippets Groups Projects
Commit fd1c1259 authored by Markus Holzer's avatar Markus Holzer
Browse files

Merge branch 'py311' into 'master'

Fix deepcopying on Python 3.11

See merge request !329
parents e356d3d7 7c7f82cd
No related branches found
No related tags found
1 merge request!329Fix deepcopying on Python 3.11
Pipeline #53329 passed
...@@ -21,7 +21,7 @@ tests-and-coverage: ...@@ -21,7 +21,7 @@ tests-and-coverage:
- mkdir -p ~/.config/matplotlib - mkdir -p ~/.config/matplotlib
- echo "backend:template" > ~/.config/matplotlib/matplotlibrc - echo "backend:template" > ~/.config/matplotlib/matplotlibrc
- mkdir public - mkdir public
- py.test -v -n $NUM_CORES --cov-report html --cov-report term --cov=. -m "not longrun" --html test-report/index.html --junitxml=report.xml - py.test -v -n $NUM_CORES --cov-report html --cov-report xml --cov-report term --cov=. -m "not longrun" --html test-report/index.html --junitxml=report.xml
- python3 -m coverage xml - python3 -m coverage xml
tags: tags:
- docker - docker
......
doc/conf.py 100644 → 100755
...@@ -33,7 +33,7 @@ version = re.sub(r'(\d+\.\d+)\.\d+(.*)', r'\1\2', pystencils.__version__) ...@@ -33,7 +33,7 @@ version = re.sub(r'(\d+\.\d+)\.\d+(.*)', r'\1\2', pystencils.__version__)
version = re.sub(r'(\.dev\d+).*?$', r'\1', version) version = re.sub(r'(\.dev\d+).*?$', r'\1', version)
# The full version, including alpha/beta/rc tags. # The full version, including alpha/beta/rc tags.
release = pystencils.__version__ release = pystencils.__version__
language = None language = 'en'
exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store', '**.ipynb_checkpoints'] exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store', '**.ipynb_checkpoints']
default_role = 'any' default_role = 'any'
pygments_style = 'sphinx' pygments_style = 'sphinx'
......
...@@ -187,19 +187,16 @@ def get_type_of_expression(expr, ...@@ -187,19 +187,16 @@ def get_type_of_expression(expr,
# Fix for sympy versions from 1.9 # Fix for sympy versions from 1.9
sympy_version = sp.__version__.split('.') sympy_version = sp.__version__.split('.')
if int(sympy_version[0]) * 100 + int(sympy_version[1]) >= 109: sympy_version_int = int(sympy_version[0]) * 100 + int(sympy_version[1])
if sympy_version_int >= 109:
# __setstate__ would bypass the contructor, so we remove it # __setstate__ would bypass the contructor, so we remove it
if sympy_version_int >= 111:
del sp.Basic.__setstate__
del sp.Symbol.__setstate__
else:
sp.Number.__getstate__ = sp.Basic.__getstate__ sp.Number.__getstate__ = sp.Basic.__getstate__
del sp.Basic.__getstate__ del sp.Basic.__getstate__
class FunctorWithStoredKwargs:
def __init__(self, func, **kwargs):
self.func = func
self.kwargs = kwargs
def __call__(self, *args):
return self.func(*args, **self.kwargs)
# __reduce_ex__ would strip kwargs, so we override it # __reduce_ex__ would strip kwargs, so we override it
def basic_reduce_ex(self, protocol): def basic_reduce_ex(self, protocol):
if hasattr(self, '__getnewargs_ex__'): if hasattr(self, '__getnewargs_ex__'):
...@@ -210,9 +207,7 @@ if int(sympy_version[0]) * 100 + int(sympy_version[1]) >= 109: ...@@ -210,9 +207,7 @@ if int(sympy_version[0]) * 100 + int(sympy_version[1]) >= 109:
state = self.__getstate__() state = self.__getstate__()
else: else:
state = None state = None
return FunctorWithStoredKwargs(type(self), **kwargs), args, state return partial(type(self), **kwargs), args, state
sp.Number.__reduce_ex__ = sp.Basic.__reduce_ex__
sp.Basic.__reduce_ex__ = basic_reduce_ex sp.Basic.__reduce_ex__ = basic_reduce_ex
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment