pdbparse icon indicating copy to clipboard operation
pdbparse copied to clipboard

Python 3.12 not supported

Open zeevro opened this issue 1 year ago • 3 comments

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?

zeevro avatar Jul 19 '23 12:07 zeevro

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.

Hyask avatar Aug 16 '23 15:08 Hyask

Just to let people know, here is how I fixed the problem on my side:

  • edit setup.py with a new version and install_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.

Hyask avatar Aug 17 '23 09:08 Hyask

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

Hyask avatar Aug 17 '23 13:08 Hyask