Skip to content

Commit bf56f73

Browse files
committed
refactor: cache the return value of createRequire on the createRequire function itself
1 parent b70125d commit bf56f73

File tree

1 file changed

+4
-7
lines changed

1 file changed

+4
-7
lines changed

python/pythonmonkey/require.py

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,9 @@ def load(filename: str) -> Dict:
225225
require = createRequire(__file__)
226226
require('./my-javascript-module')
227227
"""
228-
def createRequire(filename):
228+
# We cache the return value of createRequire to always use the same require for the same filename
229+
@functools.lru_cache(maxsize=None) # unbounded function cache that won't remove any old values
230+
def createRequire(filename: str):
229231
createRequireInner = pm.eval("""'use strict';(
230232
function createRequire(filename, bootstrap_broken)
231233
{
@@ -248,12 +250,7 @@ def createRequire(filename):
248250
})""")
249251
return createRequireInner(filename)
250252

251-
# We cache the return value of createRequire to always use the same require for the same filename
252-
@functools.lru_cache(maxsize=None) # unbounded function cache that won't remove any old values
253-
def _getRequire(filename: str):
254-
return createRequire(filename)
255-
256253
def require(moduleIdentifier: str):
257254
# Retrieve the caller’s filename from the call stack
258255
filename = inspect.stack()[1].filename
259-
return _getRequire(filename)(moduleIdentifier)
256+
return createRequire(filename)(moduleIdentifier)

0 commit comments

Comments
 (0)