happyleavesaoc / aoc-mgz

Age of Empires II recorded game parsing and summarization in Python 3.
MIT License
197 stars 41 forks source link

construct.core.MappingError: no decoding mapping for 8 #79

Closed jdekarske closed 2 years ago

jdekarske commented 2 years ago

Similar error (maybe the exact same) from the full parser. Using a very recent map from aoe2.net I get the following error: AgeIIDE_Replay_160758221.zip

could not fast parse; falling back
Traceback (most recent call last):
  File "/home/jason/code/aoemaprender/python/.venv/lib/python3.8/site-packages/construct/core.py", line 2844, in _decode
    return self.decoding[obj]
KeyError: 8
[AgeIIDE_Replay_160758221.zip](https://github.com/happyleavesaoc/aoc-mgz/files/8748751/AgeIIDE_Replay_160758221.zip)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/jason/code/aoemaprender/python/.venv/lib/python3.8/site-packages/construct/core.py", line 2784, in _parse
    return self.subcon._parse(stream, context, path)
  File "/home/jason/code/aoemaprender/python/.venv/lib/python3.8/site-packages/construct/core.py", line 867, in _parse
    subobj = sc._parse(stream, context, path)
  File "/home/jason/code/aoemaprender/python/.venv/lib/python3.8/site-packages/construct/core.py", line 311, in _parse
    return self._decode(self.subcon._parse(stream, context, path), context)
  File "/home/jason/code/aoemaprender/python/.venv/lib/python3.8/site-packages/construct/core.py", line 2849, in _decode
    raise MappingError("no decoding mapping for %r" % (obj,))
construct.core.MappingError: no decoding mapping for 8

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/jason/code/aoemaprender/python/.venv/lib/python3.8/site-packages/mgz/summary/full.py", line 73, in __init__
    self._header = mgz.header.parse_stream(self._handle)
  File "/home/jason/code/aoemaprender/python/.venv/lib/python3.8/site-packages/construct/core.py", line 171, in parse_stream
    return self._parse(stream, context2, "(parsing)")
  File "/home/jason/code/aoemaprender/python/.venv/lib/python3.8/site-packages/construct/core.py", line 867, in _parse
    subobj = sc._parse(stream, context, path)
  File "/home/jason/code/aoemaprender/python/.venv/lib/python3.8/site-packages/construct/core.py", line 295, in _parse
    return self.subcon._parse(stream, context, path)
  File "/home/jason/code/aoemaprender/python/.venv/lib/python3.8/site-packages/construct/core.py", line 867, in _parse
    subobj = sc._parse(stream, context, path)
  File "/home/jason/code/aoemaprender/python/.venv/lib/python3.8/site-packages/construct/core.py", line 295, in _parse
    return self.subcon._parse(stream, context, path)
  File "/home/jason/code/aoemaprender/python/.venv/lib/python3.8/site-packages/mgz/util.py", line 58, in _parse
    return self.subcon._parse(new_stream, context, path)
  File "/home/jason/code/aoemaprender/python/.venv/lib/python3.8/site-packages/construct/core.py", line 357, in _parse
    return self.subcon.parse(data, context)
  File "/home/jason/code/aoemaprender/python/.venv/lib/python3.8/site-packages/construct/core.py", line 158, in parse
    return self.parse_stream(BytesIO(data), context, **kw)
  File "/home/jason/code/aoemaprender/python/.venv/lib/python3.8/site-packages/construct/core.py", line 171, in parse_stream
    return self._parse(stream, context2, "(parsing)")
  File "/home/jason/code/aoemaprender/python/.venv/lib/python3.8/site-packages/construct/core.py", line 867, in _parse
    subobj = sc._parse(stream, context, path)
  File "/home/jason/code/aoemaprender/python/.venv/lib/python3.8/site-packages/construct/core.py", line 2784, in _parse
    return self.subcon._parse(stream, context, path)
  File "/home/jason/code/aoemaprender/python/.venv/lib/python3.8/site-packages/construct/core.py", line 1594, in _parse
    obj = self.cases.get(key, self.default)._parse(stream, context, path)
  File "/home/jason/code/aoemaprender/python/.venv/lib/python3.8/site-packages/construct/core.py", line 2788, in _parse
    raise e.__class__("%s\n    %s" % (e, path))
construct.core.MappingError: no decoding mapping for 8
    (parsing) -> de -> de

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/jason/code/aoemaprender/python/generatemap.py", line 5, in <module>
    s = Summary(data)
  File "/home/jason/code/aoemaprender/python/.venv/lib/python3.8/site-packages/mgz/summary/__init__.py", line 22, in __call__
    return FullSummary(data, playback)
  File "/home/jason/code/aoemaprender/python/.venv/lib/python3.8/site-packages/mgz/summary/full.py", line 85, in __init__
    raise RuntimeError("invalid mgz file: {}".format(e))
RuntimeError: invalid mgz file: no decoding mapping for 8
    (parsing) -> de -> de
import os
from mgz.summary import Summary

with open('AgeIIDE_Replay_160758221.aoe2record', 'rb') as data:
    s = Summary(data)
    s.get_map()
    s.get_platform()

Installed from source:

pip freeze
aiohttp==3.8.1
aiosignal==1.2.0
aocref==2.0.1
async-timeout==4.0.2
attrs==21.4.0
certifi==2021.10.8
charset-normalizer==2.0.12
construct==2.8.16
flatbuffers==2.0
frozenlist==1.3.0
idna==3.3
mgz==1.7.3
multidict==6.0.2
pycountry==22.1.10
requests==2.27.1
ruamel.yaml==0.17.21
ruamel.yaml.clib==0.2.6
tabulate==0.8.9
tqdm==4.63.0
urllib3==1.26.8
yarl==1.7.2
jdekarske commented 2 years ago

Already reported, sorry I'm dumb.