Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

KeyErrors on import handcalcs.render #192

Open
MJFraker opened this issue Nov 22, 2023 · 9 comments
Open

KeyErrors on import handcalcs.render #192

MJFraker opened this issue Nov 22, 2023 · 9 comments

Comments

@MJFraker
Copy link

Windows 11 machine, python 3.12 installed. Succesfully installed (I think) jupyterlab, handcalcs, and forallpeople; however, after opening the jupyter coding broweser and typing import handcalcs.render, i get a sereies of "KeyErrors":


KeyError Traceback (most recent call last)
Cell In[6], line 1
----> 1 import handcalcs.render

File ~\AppData\Local\Programs\Python\Python312\Lib\site-packages\handcalcs_init_.py:18
14 """
15 Render arithmetic calucations in Jupyter as though they were written by hand.
16 """
17 version = "1.6.5" #
---> 18 from .decorator import handcalc
19 from .global_config import set_option, save_config
21 all = ["handcalc"]

File ~\AppData\Local\Programs\Python\Python312\Lib\site-packages\handcalcs\decorator.py:6
4 from functools import wraps
5 import inspect
----> 6 import innerscope
7 from .handcalcs import LatexRenderer
10 def handcalc(
11 override: str = "",
12 precision: int = 3,
(...)
17 jupyter_display: bool = False,
18 ):

File ~\AppData\Local\Programs\Python\Python312\Lib\site-packages\innerscope_init_.py:3
1 import importlib.metadata
----> 3 from .core import bindwith, call, callwith, scoped_function
5 try:
6 version = importlib.metadata.version("innerscope")

File ~\AppData\Local\Programs\Python\Python312\Lib\site-packages\innerscope\core.py:39
16 NEW_CODE = (
17 bytes([dis.opmap["LOAD_GLOBAL"]])
18 + b"%b"
(...)
21 + bytes([dis.opmap["BUILD_TUPLE"], 3, dis.opmap["RETURN_VALUE"], 0])
22 )
23 else:
24 NEW_CODE = (
25 bytes([dis.opmap["LOAD_GLOBAL"]])
26 + b"%b"
27 + bytes(
28 [
29 dis.opmap["CACHE"],
30 0,
31 dis.opmap["CACHE"],
32 0,
33 dis.opmap["CACHE"],
34 0,
35 dis.opmap["CACHE"],
36 0,
37 dis.opmap["CACHE"],
38 0,
---> 39 dis.opmap["PRECALL"],
40 0,
41 dis.opmap["CACHE"],
42 0,
43 dis.opmap["CALL"],
44 0,
45 dis.opmap["CACHE"],
46 0,
47 dis.opmap["CACHE"],
48 0,
49 dis.opmap["CACHE"],
50 0,
51 dis.opmap["CACHE"],
52 0,
53 dis.opmap["LOAD_GLOBAL"],
54 ]
55 )
56 + b"%b"
57 + bytes(
58 [
59 dis.opmap["CACHE"],
60 0,
61 dis.opmap["CACHE"],
62 0,
63 dis.opmap["CACHE"],
64 0,
65 dis.opmap["CACHE"],
66 0,
67 dis.opmap["CACHE"],
68 0,
69 dis.opmap["BUILD_TUPLE"],
70 3,
71 dis.opmap["RETURN_VALUE"],
72 0,
73 ]
74 )
75 )
76 BUILTINS = set(dir(builtins))
79 def _get_globals_recursive(func, *, seen=None, isclass=False):

KeyError: 'PRECALL'

@raianerosa
Copy link

I'm having the same problem and according to the comments in my question "Python 3.12 has removed PRECALL from its bytecode instructions, so it's likely that the handcalcs package needs an update."

@MJFraker
Copy link
Author

I'm having the same problem and according to the comments in my question "Python 3.12 has removed PRECALL from its bytecode instructions, so it's likely that the handcalcs package needs an update."

Thanks for the response!

@connorferster
Copy link
Owner

Agreed. @eriknw it seems that there was a Python API breaking change affecting innerscope.

My bad for not testing the 3.12 release candidate. Should have seen it coming because of all the speed improvements planned for each upcoming Python release.

@connorferster
Copy link
Owner

Thanks @raianerosa @MJFraker for raising this issue

@eriknw
Copy link
Contributor

eriknw commented Dec 6, 2023

My bad for being slow! Been traveling too much... I'll try to get to this soon even if it's just a workaround to make 3.12 work.

@AnmolTanwar786
Copy link

I am facing the same issue while import handcalcs.render

@rwaltera
Copy link

Same problem, any updates regarding this topic?

@eriknw
Copy link
Contributor

eriknw commented Feb 18, 2024

Try updating to the latest innerscope. I just created a new release (0.7.0) that should hopefully resolve this issue.

I'm sorry for the delay! I've had lots of, uh, "adventures" lately, and I updated innerscope to try to avoid issues like this in the future.

@rwaltera
Copy link

This seems to work for me, thank you :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants