Skip to content

Commit

Permalink
hooks: add hook for sympy
Browse files Browse the repository at this point in the history
Add hook for `sympy` that automatically raises recursion limit
to 5000 if `sympy` >= 1.12 is detected.
  • Loading branch information
rokm committed May 22, 2023
1 parent ce3e17c commit 8573de3
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 0 deletions.
2 changes: 2 additions & 0 deletions news/587.new.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Add hook for ``sympy`` that automatically raises recursion limit
to 5000 if ``sympy`` >= 1.12 is detected.
1 change: 1 addition & 0 deletions requirements-test-libraries.txt
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,7 @@ scikit-image==0.20.0; python_version >= '3.8'
customtkinter==5.1.3
fastparquet==2023.4.0; python_version >= '3.8'
librosa==0.10.0.post2
sympy==1.12; python_version >= '3.8'

# ------------------- Platform (OS) specifics

Expand Down
23 changes: 23 additions & 0 deletions src/_pyinstaller_hooks_contrib/hooks/stdhooks/hook-sympy.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# ------------------------------------------------------------------
# Copyright (c) 2023 PyInstaller Development Team.
#
# This file is distributed under the terms of the GNU General Public
# License (version 2.0 or later).
#
# The full license is available in LICENSE.GPL.txt, distributed with
# this software.
#
# SPDX-License-Identifier: GPL-2.0-or-later
# ------------------------------------------------------------------

from PyInstaller.utils.hooks import logger, is_module_satisfies


# With sympy 1.12, PyInstaller's modulegraph analysis hits the recursion limit.
# So, unless the user has already done so, increase it automatically.
if is_module_satisfies('sympy >= 1.12'):
import sys
new_limit = 5000
if sys.getrecursionlimit() < new_limit:
logger.info("hook-sympy: raising recursion limit to %d", new_limit)
sys.setrecursionlimit(new_limit)
7 changes: 7 additions & 0 deletions src/_pyinstaller_hooks_contrib/tests/test_libraries.py
Original file line number Diff line number Diff line change
Expand Up @@ -1615,3 +1615,10 @@ def test_librosa_util_function(pyi_builder):
expected = np.array([False, True, False, False, True, False, True, False])
assert (result == expected).all()
""")


@importorskip('sympy')
def test_sympy(pyi_builder):
pyi_builder.test_source("""
import sympy
""")

0 comments on commit 8573de3

Please sign in to comment.