Browse Source

startup: added function `split_pgp_file`

Fabian Peter Hammerle 2 years ago
parent
commit
96500138a8
1 changed files with 14 additions and 0 deletions
  1. 14 0
      profile_default/startup/init.py

+ 14 - 0
profile_default/startup/init.py

@@ -4,6 +4,7 @@ import typing
 
 import numpy
 import pandas
+import pgpdump
 import scipy.io.wavfile
 import sympy
 import yaml
@@ -24,6 +25,19 @@ def numpy_array_from_file(
     return numpy.frombuffer(path.read_bytes(), dtype=dtype)
 
 
+def split_pgp_file(
+    path: pathlib.Path,
+) -> typing.Iterator[typing.Union[bytearray, pgpdump.packet.Packet]]:
+    bundle = pgpdump.BinaryData(path.read_bytes())
+    remaining_bytes = bundle.data
+    for packet in bundle.packets():
+        prefix, remaining_bytes = remaining_bytes.split(packet.data, maxsplit=1)
+
+        yield prefix
+        yield packet
+    assert not remaining_bytes
+
+
 def split_sequence_by_delimiter(
     sequence: typing.Sequence, delimiter: typing.Any, delimiter_min_length: int = 1
 ) -> typing.Iterator[typing.Sequence]: