12 ms·
I'm loving this, my head is reeling with the glint of possibilities import js js.globals.console.log('hi!'*5)
by catlover99 11y ago
I'm loving this, my head is reeling with the glint of possibilities
import js
js.globals.console.log('hi!'*5)
- e12e 11y agoSeems to be some issues with the interop still, eg: import js >>> "globals" in dir(js) True >>> "console" in dir(js.globals) False >>> js <module 'js' (built-in)> >>> js.globals.console <js.Object handle=14> So apparently introspection doesn't quite work with the wrapped js. Also, if you try: "[ i for i in js.globals]" (or equivalently iterate/loop over the globals-object) - the whole repl/tab hangs. Not really an issue for running business logic in the browser, but if this was a full python repl-interface (with ipython support!) to the whole browser DOM -- that'd be a fantastic tool.
- bzbarsky 11y agoThe introspection bit is because js.globals is implemented with a fancy __getattr__ but doesn't have a __dir__. In general, dir() is not reliable in the face of custom __getattr__ implementations unless the implementor goes out of the way to make it work.
- e12e 11y agoOh, right. I didn't consider that: Welcome to PyPy.js! >>> import js >>> "console" in js.globals True >>> "console" in dir(js.globals) False
- deleted 11y ago[deleted]