from javascript import JSObject from browser import window import urllib.request class TempMod: def __init__(self, name): self.name=name #define my custom import hook (just to see if it get called etc). class BaseHook: def __init__(self, fullname=None, path=None): self._fullname=fullname self._path=path # we don't are about this... self._modpath='' self._module='' def find_module(self, name=None, path=None): if name is None: name=self._fullname for _i in ('libs/%s.js' % name, 'Lib/%s.py' % name, 'Lib/%s/__init__.py' % name): _path="%s%s" % (__BRYTHON__.brython_path, _i) try: _fp,_,_headers=urllib.request.urlopen(_path) if _headers['status'] != 200: continue self._module=_fp.read() self._modpath=_path return self except urllib.error.HTTPError as e: self._modpath='' self._module='' raise ImportError def is_package(self): return '.' in self._fullname def load_module(self, name): if name is None: name=self._fullname window.eval('__BRYTHON__.imported["%s"]={}' % name) return JSObject(__BRYTHON__.run_py)(self._module, self._modpath, TempMod(name))