pdbparse
pdbparse copied to clipboard
Python 3.12 not supported
construct<2.10 uses the imp module, which was removed on Python 3.12. Is there a reason not to use a more recent construct version?
Also, the construct-typing package must be installed for properly type checking a project that uses construct. Unfortunately, construct-typing requires construct>=2.10.
Looking at the changelog, it doesn't seem like there were big removals or changes in the API. The only removal are Embedded and EmbeddedSwitch, but they don't seem to be in use in pdbparse, according to grep.
@moyix given your recent activity on this repo, do you think that would be doable for you to release a new version of pdbparse with the construct<2.10 constraint loosened? I can help provide feedback on this if need be.
Just to let people know, here is how I fixed the problem on my side:
- edit
setup.pywith a new version andinstall_requires=["construct>=2.10", "construct<2.11", "pefile"] - run
python3 -m build - the built wheel and source package (in
./dist) both work fine in my use-case, which is only getting a PDB's GUID:
def get_pdb_guid(filename_path: Path) -> str:
try:
p = pdbparse.parse(filename_path, fast_load=True)
pdb = p.streams[pdbparse.PDB_STREAM_PDB]
pdb.load()
return (
"%08x%04x%04x%s%x"
% (
pdb.GUID.Data1,
pdb.GUID.Data2,
pdb.GUID.Data3,
binascii.hexlify(pdb.GUID.Data4).decode("ascii"),
pdb.Age,
)
).upper()
except Exception as e:
raise RuntimeError(e)
I've no idea if the rest of the pdbparse package work fine with a newer construct, but at least that's a start.
For those interested, you can put this line in your requirements.txt to use the version I mentioned just above:
pdbparse @ https://github.com/tetrane/pdbparse/raw/f29816285a5cbaf00bfe8c10379e664a5e4118ac/dist/pdbparse-1.5.1.tar.gz#sha256=1b046f137bc5b807983b15c1a1c71360faffad658be0ee4ba05763b0ab428486