encoded representation storage
* Initial support for so called ``evgen_mode``: event generation mode,
where no in-memory objects storing happens, giving ability to process
- ASN.1 data without fully parsing it first
+ ASN.1 data without fully parsing it first. ``python -m pyderasn`` has
+ ``--evgen`` mode switcher
* Initial experimental CER encoding mode, allowing streaming encoding of
the data directly to some writeable object
* Ability to use mmap-ed memoryviews to skip files loading to memory
with_colours=False,
with_decode_path=False,
decode_path_only=(),
+ decode_path=(),
):
"""Pretty print object
else:
for row in _pprint_pps(pp):
yield row
- return "\n".join(_pprint_pps(obj.pps()))
+ return "\n".join(_pprint_pps(obj.pps(decode_path)))
########################################################################
action="store_true",
help="Allow explicit tag out-of-bound",
)
+ parser.add_argument(
+ "--evgen",
+ action="store_true",
+ help="Turn on event generation mode",
+ )
parser.add_argument(
"RAWFile",
type=argparse.FileType("rb"),
}
if args.defines_by_path is not None:
ctx["defines_by_path"] = obj_by_path(args.defines_by_path)
- obj, tail = schema().decode(raw, ctx=ctx)
from os import environ
- print(pprinter(
- obj,
+ pprinter = partial(
+ pprinter,
oid_maps=oid_maps,
with_colours=environ.get("NO_COLOR") is None,
with_decode_path=args.print_decode_path,
() if args.decode_path_only is None else
tuple(args.decode_path_only.split(":"))
),
- ))
+ )
+ if args.evgen:
+ for decode_path, obj, tail in schema().decode_evgen(raw, ctx=ctx):
+ print(pprinter(obj, decode_path=decode_path))
+ else:
+ obj, tail = schema().decode(raw, ctx=ctx)
+ print(pprinter(obj))
if tail != b"":
print("\nTrailing data: %s" % hexenc(tail))