Skip to content

Commit 2f88016

Browse files
committed
Sys module: dummy implementation of get/set{recursionlimit|checkinterval|switchinterval}
1 parent 8dc58af commit 2f88016

File tree

3 files changed

+43
-2
lines changed

3 files changed

+43
-2
lines changed

graalpython/com.oracle.graal.python.test/src/tests/unittest_tags/test_sys.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@
2626
*graalpython.lib-python.3.test.test_sys.SysModuleTest.test_no_duplicates_in_meta_path
2727
*graalpython.lib-python.3.test.test_sys.SysModuleTest.test_refcount
2828
*graalpython.lib-python.3.test.test_sys.SysModuleTest.test_setrecursionlimit_recursion_depth
29+
*graalpython.lib-python.3.test.test_sys.SysModuleTest.test_recursionlimit
30+
*graalpython.lib-python.3.test.test_sys.SysModuleTest.test_setcheckinterval
31+
*graalpython.lib-python.3.test.test_sys.SysModuleTest.test_switchinterval
2932
*graalpython.lib-python.3.test.test_sys.SysModuleTest.test_sys_getwindowsversion_no_instantiation
3033
*graalpython.lib-python.3.test.test_sys.SysModuleTest.test_c_locale_surrogateescape
3134
*graalpython.lib-python.3.test.test_sys.SysModuleTest.test_posix_locale_surrogateescape

graalpython/lib-graalpython/__graalpython__.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,14 @@
3939

4040
import sys
4141

42+
class SysState:
43+
def __init__(self):
44+
self.recursionlimit = 1000
45+
self.checkinterval = 100
46+
self.switchinterval = 0.005
47+
48+
sys_state = SysState()
49+
del SysState
4250

4351
@builtin
4452
def import_current_as_named_module(name, owner_globals=None):

graalpython/lib-graalpython/sys.py

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -261,11 +261,41 @@ def breakpointhook(*args, **kws):
261261

262262
__breakpointhook__ = breakpointhook
263263

264-
265264
@__graalpython__.builtin
266265
def getrecursionlimit():
267-
return 1000
266+
return __graalpython__.sys_state.recursionlimit
267+
268+
@__graalpython__.builtin
269+
def setrecursionlimit(value):
270+
if not isinstance(value, int):
271+
raise TypeError("an integer is required")
272+
if value <= 0:
273+
raise ValueError("recursion limit must be greater or equal than 1")
274+
__graalpython__.sys_state.recursionlimit = value
275+
276+
@__graalpython__.builtin
277+
def getcheckinterval():
278+
return __graalpython__.sys_state.checkinterval
268279

280+
@__graalpython__.builtin
281+
def setcheckinterval(value):
282+
import warnings
283+
warnings.warn("sys.getcheckinterval() and sys.setcheckinterval() are deprecated. Use sys.setswitchinterval() instead.", DeprecationWarning)
284+
if not isinstance(value, int):
285+
raise TypeError("an integer is required")
286+
__graalpython__.sys_state.checkinterval = value
287+
288+
@__graalpython__.builtin
289+
def getswitchinterval():
290+
return __graalpython__.sys_state.switchinterval
291+
292+
@__graalpython__.builtin
293+
def setswitchinterval(value):
294+
if not isinstance(value, (int, float)):
295+
raise TypeError("must be real number, not str")
296+
if value <= 0:
297+
raise ValueError("switch interval must be strictly positive")
298+
__graalpython__.sys_state.switchinterval = value
269299

270300
@__graalpython__.builtin
271301
def displayhook(value):

0 commit comments

Comments
 (0)