legend-daq2lh5 1.1.0__py3-none-any.whl → 1.2.0a1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- daq2lh5/_version.py +2 -2
- daq2lh5/buffer_processor/buffer_processor.py +3 -3
- daq2lh5/buffer_processor/lh5_buffer_processor.py +10 -14
- daq2lh5/build_raw.py +3 -3
- daq2lh5/data_decoder.py +11 -13
- daq2lh5/fc/fc_config_decoder.py +1 -1
- daq2lh5/orca/orca_digitizers.py +2 -2
- daq2lh5/raw_buffer.py +8 -10
- {legend_daq2lh5-1.1.0.dist-info → legend_daq2lh5-1.2.0a1.dist-info}/METADATA +4 -4
- {legend_daq2lh5-1.1.0.dist-info → legend_daq2lh5-1.2.0a1.dist-info}/RECORD +14 -14
- {legend_daq2lh5-1.1.0.dist-info → legend_daq2lh5-1.2.0a1.dist-info}/WHEEL +1 -1
- {legend_daq2lh5-1.1.0.dist-info → legend_daq2lh5-1.2.0a1.dist-info}/LICENSE +0 -0
- {legend_daq2lh5-1.1.0.dist-info → legend_daq2lh5-1.2.0a1.dist-info}/entry_points.txt +0 -0
- {legend_daq2lh5-1.1.0.dist-info → legend_daq2lh5-1.2.0a1.dist-info}/top_level.txt +0 -0
daq2lh5/_version.py
CHANGED
@@ -51,14 +51,14 @@ def buffer_processor(rb: RawBuffer) -> Table:
|
|
51
51
|
``"compression": {"lgdo": "codec_name" [, ...]}`` `(dict)`
|
52
52
|
Updates the `compression` attribute of `lgdo` to `codec_name`. The
|
53
53
|
attribute sets the compression algorithm applied by
|
54
|
-
:func
|
54
|
+
:func:`~lgdo.lh5.store.LH5Store.read` before writing `lgdo` to
|
55
55
|
disk. Can be used to apply custom waveform compression algorithms from
|
56
56
|
:mod:`lgdo.compression`.
|
57
57
|
|
58
58
|
``"hdf5_settings": {"lgdo": { <HDF5 settings> }}`` `(dict)`
|
59
59
|
Updates the `hdf5_settings` attribute of `lgdo`. The attribute sets the
|
60
60
|
HDF5 dataset options applied by
|
61
|
-
:func
|
61
|
+
:func:`~lgdo.lh5.store.LH5Store.read` before writing `lgdo` to
|
62
62
|
disk.
|
63
63
|
|
64
64
|
Parameters
|
@@ -295,7 +295,7 @@ def process_windowed_t0(t0s: Array, dts: Array, start_index: int) -> Array:
|
|
295
295
|
|
296
296
|
|
297
297
|
def process_dsp(rb: RawBuffer, tmp_table: Table) -> None:
|
298
|
-
r"""Run a DSP processing chain
|
298
|
+
r"""Run a DSP processing chain with :mod:`dspeed`.
|
299
299
|
|
300
300
|
Run a provided DSP config from `rb.proc_spec` using
|
301
301
|
:func:`.dsp.build_processing_chain`, and add specified outputs to the
|
@@ -6,7 +6,7 @@ import os
|
|
6
6
|
|
7
7
|
import h5py
|
8
8
|
import lgdo
|
9
|
-
from lgdo import
|
9
|
+
from lgdo import lh5
|
10
10
|
|
11
11
|
from ..buffer_processor.buffer_processor import buffer_processor
|
12
12
|
from ..raw_buffer import RawBuffer, RawBufferLibrary
|
@@ -54,14 +54,14 @@ def lh5_buffer_processor(
|
|
54
54
|
"""
|
55
55
|
|
56
56
|
# Initialize the input raw file
|
57
|
-
raw_store = LH5Store()
|
57
|
+
raw_store = lh5.LH5Store()
|
58
58
|
lh5_file = raw_store.gimme_file(lh5_raw_file_in, "r")
|
59
59
|
if lh5_file is None:
|
60
60
|
raise ValueError(f"input file not found: {lh5_raw_file_in}")
|
61
61
|
return
|
62
62
|
|
63
63
|
# List the groups in the raw file
|
64
|
-
lh5_groups =
|
64
|
+
lh5_groups = lh5.ls(lh5_raw_file_in)
|
65
65
|
lh5_tables = []
|
66
66
|
|
67
67
|
# check if group points to raw data; sometimes 'raw' is nested, e.g g024/raw
|
@@ -69,21 +69,19 @@ def lh5_buffer_processor(
|
|
69
69
|
# Make sure that the upper level key isn't a dataset
|
70
70
|
if isinstance(lh5_file[tb], h5py.Dataset):
|
71
71
|
lh5_tables.append(f"{tb}")
|
72
|
-
elif "raw" not in tb and
|
72
|
+
elif "raw" not in tb and lh5.ls(lh5_file, f"{tb}/raw"):
|
73
73
|
lh5_tables.append(f"{tb}/raw")
|
74
74
|
# Look one layer deeper for a :meth:`lgdo.Table` if necessary
|
75
|
-
elif
|
75
|
+
elif lh5.ls(lh5_file, f"{tb}"):
|
76
76
|
# Check to make sure that this isn't a table itself
|
77
|
-
maybe_table, _ = raw_store.
|
77
|
+
maybe_table, _ = raw_store.read(f"{tb}", lh5_file)
|
78
78
|
if isinstance(maybe_table, lgdo.Table):
|
79
79
|
lh5_tables.append(f"{tb}")
|
80
80
|
del maybe_table
|
81
81
|
# otherwise, go deeper
|
82
82
|
else:
|
83
|
-
for sub_table in
|
84
|
-
maybe_table, _ = raw_store.
|
85
|
-
f"{tb}/{sub_table}", lh5_file
|
86
|
-
)
|
83
|
+
for sub_table in lh5.ls(lh5_file, f"{tb}"):
|
84
|
+
maybe_table, _ = raw_store.read(f"{tb}/{sub_table}", lh5_file)
|
87
85
|
if isinstance(maybe_table, lgdo.Table):
|
88
86
|
lh5_tables.append(f"{tb}/{sub_table}")
|
89
87
|
del maybe_table
|
@@ -114,7 +112,7 @@ def lh5_buffer_processor(
|
|
114
112
|
|
115
113
|
# Write everything in the raw file to the new file, check for proc_spec under either the group name, out_name, or the name
|
116
114
|
for tb in lh5_tables:
|
117
|
-
lgdo_obj, _ = raw_store.
|
115
|
+
lgdo_obj, _ = raw_store.read(f"{tb}", lh5_file)
|
118
116
|
|
119
117
|
# Find the out_name.
|
120
118
|
# If the top level group has an lgdo table in it, then the out_name is group
|
@@ -198,6 +196,4 @@ def lh5_buffer_processor(
|
|
198
196
|
pass
|
199
197
|
|
200
198
|
# Write the (possibly processed) lgdo_obj to a file
|
201
|
-
raw_store.
|
202
|
-
lgdo_obj, out_name, lh5_file=proc_file_name, group=group_name
|
203
|
-
)
|
199
|
+
raw_store.write(lgdo_obj, out_name, lh5_file=proc_file_name, group=group_name)
|
daq2lh5/build_raw.py
CHANGED
@@ -6,8 +6,8 @@ import logging
|
|
6
6
|
import os
|
7
7
|
import time
|
8
8
|
|
9
|
-
import lgdo
|
10
9
|
import numpy as np
|
10
|
+
from lgdo import lh5
|
11
11
|
from tqdm.auto import tqdm
|
12
12
|
|
13
13
|
from .compass.compass_streamer import CompassStreamer
|
@@ -77,7 +77,7 @@ def build_raw(
|
|
77
77
|
|
78
78
|
hdf5_settings
|
79
79
|
keyword arguments (as a dict) forwarded to
|
80
|
-
:meth
|
80
|
+
:meth:`lgdo.lh5.store.LH5Store.write`.
|
81
81
|
|
82
82
|
**kwargs
|
83
83
|
sent to :class:`.RawBufferLibrary` generation as `kw_dict` argument.
|
@@ -224,7 +224,7 @@ def build_raw(
|
|
224
224
|
os.remove(out_file_glob[0])
|
225
225
|
|
226
226
|
# Write header data
|
227
|
-
lh5_store =
|
227
|
+
lh5_store = lh5.LH5Store(keep_open=True)
|
228
228
|
write_to_lh5_and_clear(header_data, lh5_store, **hdf5_settings)
|
229
229
|
|
230
230
|
# Now loop through the data
|
daq2lh5/data_decoder.py
CHANGED
@@ -3,13 +3,10 @@ Base classes for decoding data into raw LGDO Tables or files
|
|
3
3
|
"""
|
4
4
|
from __future__ import annotations
|
5
5
|
|
6
|
-
from typing import Union
|
7
|
-
|
8
6
|
import lgdo
|
9
7
|
import numpy as np
|
10
|
-
from lgdo import
|
11
|
-
|
12
|
-
LGDO = Union[lgdo.Scalar, lgdo.Struct, lgdo.Array, lgdo.VectorOfVectors]
|
8
|
+
from lgdo import LGDO
|
9
|
+
from lgdo.lh5 import LH5Store
|
13
10
|
|
14
11
|
|
15
12
|
class DataDecoder:
|
@@ -18,15 +15,16 @@ class DataDecoder:
|
|
18
15
|
Most decoders will repeatedly decode the same set of values from each
|
19
16
|
packet. The values that get decoded need to be described by a dict stored
|
20
17
|
in `self.decoded_values` that helps determine how to set up the buffers and
|
21
|
-
write them to file as :class
|
22
|
-
are made whose columns correspond to
|
23
|
-
packet data gets pushed to the end of
|
18
|
+
write them to file as :class:`~lgdo.types.lgdo.LGDO`\ s.
|
19
|
+
:class:`~lgdo.types.table.Table`\ s are made whose columns correspond to
|
20
|
+
the elements of `decoded_values`, and packet data gets pushed to the end of
|
21
|
+
the table one row at a time.
|
24
22
|
|
25
23
|
Any key-value entry in a configuration dictionary attached to an element
|
26
24
|
of `decoded_values` is typically interpreted as an attribute to be attached
|
27
25
|
to the corresponding LGDO. This feature can be for example exploited to
|
28
26
|
specify HDF5 dataset settings used by
|
29
|
-
:meth
|
27
|
+
:meth:`~lgdo.lh5.store.LH5Store.write` to write LGDOs to disk.
|
30
28
|
|
31
29
|
For example ::
|
32
30
|
|
@@ -49,7 +47,7 @@ class DataDecoder:
|
|
49
47
|
will have its `compression` attribute set to
|
50
48
|
``RadwareSigcompress(codec_shift=-32768)``. Before being written to disk,
|
51
49
|
they will be compressed with the HDF5 built-in Gzip filter and with the
|
52
|
-
:class
|
50
|
+
:class:`~lgdo.compression.radware.RadwareSigcompress` waveform compressor.
|
53
51
|
|
54
52
|
Examples
|
55
53
|
--------
|
@@ -119,7 +117,7 @@ class DataDecoder:
|
|
119
117
|
"""Make an LGDO for this :class:`DataDecoder` to fill.
|
120
118
|
|
121
119
|
This default version of this function allocates a
|
122
|
-
:class
|
120
|
+
:class:`~lgdo.types.table.Table` using the `decoded_values` for key. If a
|
123
121
|
different type of LGDO object is required for this decoder, overload
|
124
122
|
this function.
|
125
123
|
|
@@ -207,7 +205,7 @@ class DataDecoder:
|
|
207
205
|
continue
|
208
206
|
|
209
207
|
# Parse datatype for remaining lgdos
|
210
|
-
datatype, shape, elements = lgdo.
|
208
|
+
datatype, shape, elements = lgdo.lh5.utils.parse_datatype(datatype)
|
211
209
|
|
212
210
|
# ArrayOfEqualSizedArrays
|
213
211
|
if datatype == "array_of_equalsized_arrays":
|
@@ -258,7 +256,7 @@ class DataDecoder:
|
|
258
256
|
n_rows = self.garbage_table.loc
|
259
257
|
if n_rows == 0:
|
260
258
|
return
|
261
|
-
lh5_store.
|
259
|
+
lh5_store.write(
|
262
260
|
self.garbage_table, "garbage", filename, group, n_rows=n_rows, append=True
|
263
261
|
)
|
264
262
|
self.garbage_table.clear()
|
daq2lh5/fc/fc_config_decoder.py
CHANGED
daq2lh5/orca/orca_digitizers.py
CHANGED
@@ -98,11 +98,11 @@ class ORSIS3302DecoderForEnergy(OrcaDecoder):
|
|
98
98
|
sys.exit()
|
99
99
|
self.decoded_values[ccc]["waveform"]["wf_len"] = trace_length
|
100
100
|
|
101
|
-
def get_key_lists(self) -> list[list[
|
101
|
+
def get_key_lists(self) -> list[list[int]]:
|
102
102
|
key_lists = []
|
103
103
|
for key in self.decoded_values.keys():
|
104
104
|
key_lists.append([key])
|
105
|
-
return
|
105
|
+
return key_lists
|
106
106
|
|
107
107
|
def get_decoded_values(self, key: int = None) -> dict[str, Any]:
|
108
108
|
if key is None:
|
daq2lh5/raw_buffer.py
CHANGED
@@ -65,21 +65,19 @@ keys.
|
|
65
65
|
from __future__ import annotations
|
66
66
|
|
67
67
|
import os
|
68
|
-
from typing import Union
|
69
68
|
|
70
69
|
import lgdo
|
71
|
-
from lgdo import
|
70
|
+
from lgdo import LGDO
|
71
|
+
from lgdo.lh5 import LH5Store
|
72
72
|
|
73
73
|
from .buffer_processor.buffer_processor import buffer_processor
|
74
74
|
|
75
|
-
LGDO = Union[lgdo.Scalar, lgdo.Struct, lgdo.Array, lgdo.VectorOfVectors]
|
76
|
-
|
77
75
|
|
78
76
|
class RawBuffer:
|
79
77
|
r"""Base class to represent a buffer of raw data.
|
80
78
|
|
81
79
|
A :class:`RawBuffer` is in essence a an LGDO object (typically a
|
82
|
-
:class
|
80
|
+
:class:`~lgdo.types.table.Table`) to which decoded data will be written, along
|
83
81
|
with some meta-data distinguishing what data goes into it, and where the
|
84
82
|
LGDO gets written out. Also holds on to the current location in the buffer
|
85
83
|
for writing.
|
@@ -88,7 +86,7 @@ class RawBuffer:
|
|
88
86
|
----------
|
89
87
|
lgdo
|
90
88
|
the LGDO used as the actual buffer. Typically a
|
91
|
-
:class
|
89
|
+
:class:`~lgdo.types.table.Table`. Set to ``None`` upon creation so that the
|
92
90
|
user or a decoder can initialize it later.
|
93
91
|
key_list
|
94
92
|
a list of keys (e.g. channel numbers) identifying data to be written
|
@@ -107,7 +105,7 @@ class RawBuffer:
|
|
107
105
|
proc_spec
|
108
106
|
a dictionary containing the following:
|
109
107
|
- a DSP config file, passed as a dictionary, or as a path to a JSON file
|
110
|
-
- an array containing: the name of an
|
108
|
+
- an array containing: the name of an LGDO object stored in the :class:`.RawBuffer` to be sliced,
|
111
109
|
the start and end indices of the slice, and the new name for the sliced object
|
112
110
|
- a dictionary of fields to drop
|
113
111
|
- a dictionary of new fields and their return datatype
|
@@ -440,11 +438,11 @@ def write_to_lh5_and_clear(
|
|
440
438
|
files (saves some time opening / closing files).
|
441
439
|
**kwargs
|
442
440
|
keyword-arguments forwarded to
|
443
|
-
:meth
|
441
|
+
:meth:`lgdo.lh5.store.LH5Store.write`.
|
444
442
|
|
445
443
|
See Also
|
446
444
|
--------
|
447
|
-
|
445
|
+
lgdo.lh5.store.LH5Store.write
|
448
446
|
"""
|
449
447
|
if lh5_store is None:
|
450
448
|
lh5_store = lgdo.LH5Store()
|
@@ -470,7 +468,7 @@ def write_to_lh5_and_clear(
|
|
470
468
|
|
471
469
|
# write if requested...
|
472
470
|
if filename != "":
|
473
|
-
lh5_store.
|
471
|
+
lh5_store.write(
|
474
472
|
lgdo_to_write,
|
475
473
|
rb.out_name,
|
476
474
|
filename,
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
|
-
Name:
|
3
|
-
Version: 1.
|
2
|
+
Name: legend_daq2lh5
|
3
|
+
Version: 1.2.0a1
|
4
4
|
Summary: Convert digitizer data to LH5
|
5
5
|
Home-page: https://github.com/legend-exp/legend-daq2lh5
|
6
6
|
Author: Jason Detwiler
|
@@ -26,10 +26,10 @@ Classifier: Topic :: Software Development
|
|
26
26
|
Requires-Python: >=3.9
|
27
27
|
Description-Content-Type: text/markdown
|
28
28
|
License-File: LICENSE
|
29
|
-
Requires-Dist: dspeed >=1.
|
29
|
+
Requires-Dist: dspeed >=1.3.0a4
|
30
30
|
Requires-Dist: h5py >=3.2.0
|
31
31
|
Requires-Dist: hdf5plugin
|
32
|
-
Requires-Dist: legend-pydataobj >=1.
|
32
|
+
Requires-Dist: legend-pydataobj >=1.5.0a1
|
33
33
|
Requires-Dist: numpy >=1.21
|
34
34
|
Requires-Dist: pyfcutils
|
35
35
|
Requires-Dist: tqdm >=4.27
|
@@ -1,36 +1,36 @@
|
|
1
1
|
daq2lh5/__init__.py,sha256=VPmwKuZSA0icpce05ojhnsKWhR4_QUgD0oVXUoN9wks,975
|
2
|
-
daq2lh5/_version.py,sha256=
|
3
|
-
daq2lh5/build_raw.py,sha256=
|
2
|
+
daq2lh5/_version.py,sha256=k5PS9p0a5Ey36DDxagN4mnTZow7bHSa0Oh_ycx0FrX4,413
|
3
|
+
daq2lh5/build_raw.py,sha256=JFXC5ln9u353TUZMksY3zydLiV2HlxqdI6_Y2_ZMCIE,10524
|
4
4
|
daq2lh5/cli.py,sha256=HCZ9Vyg-gqvairN9zJIpBjw5vLpp9ZUOOQYLFxloLL8,2912
|
5
|
-
daq2lh5/data_decoder.py,sha256=
|
5
|
+
daq2lh5/data_decoder.py,sha256=ka2WIJuPvsG892__HCW1SagCEzyiZJ2kQP6zGDMtlr0,10641
|
6
6
|
daq2lh5/data_streamer.py,sha256=6SEAekOHyfC4k3E0df0lW37ap6ZemVFbH8PYMl6UvCU,14130
|
7
7
|
daq2lh5/logging.py,sha256=Nu3wgIoWN7cyUxuzPom5rMwFvTlBu8p8d9uONHDquRg,965
|
8
|
-
daq2lh5/raw_buffer.py,sha256=
|
8
|
+
daq2lh5/raw_buffer.py,sha256=dyPUok0N3MP41oP9F8sO_PrH7-SWs9UdPh7dqCF729g,17687
|
9
9
|
daq2lh5/buffer_processor/__init__.py,sha256=7k6v_KPximtv7805QnX4-xp_S3vqvqwDfdV3q95oZJo,84
|
10
|
-
daq2lh5/buffer_processor/buffer_processor.py,sha256=
|
11
|
-
daq2lh5/buffer_processor/lh5_buffer_processor.py,sha256=
|
10
|
+
daq2lh5/buffer_processor/buffer_processor.py,sha256=GUxpNDbqGLuUEZmXjeratipbzmki12RFNYZkxgMtesg,14483
|
11
|
+
daq2lh5/buffer_processor/lh5_buffer_processor.py,sha256=yL1ru0_GTsZx099oi45sXL-FxPfdChtStd_IFtZNI_Q,8222
|
12
12
|
daq2lh5/compass/__init__.py,sha256=mOXHWp7kRDgNTPQty3E8k2KPSy_vAzjneKfAcCVaPyE,132
|
13
13
|
daq2lh5/compass/compass_config_parser.py,sha256=zeAsOo1dOJPGLL8-zkAcdYRkqt8BodtOPi96n7fWsl4,12300
|
14
14
|
daq2lh5/compass/compass_event_decoder.py,sha256=kiPOaEu8SgLD2wbSPbBahcbTBBRAIw35wtVLBcwPcXY,7386
|
15
15
|
daq2lh5/compass/compass_header_decoder.py,sha256=AA-Md2FIT3nD4mXX9CrWvbbfmKiA436-BTmzcU3_XOY,2823
|
16
16
|
daq2lh5/compass/compass_streamer.py,sha256=zSl7IqO0ID0wcixkLE9QVEG3bF9hfGVITVPomCeOFTM,8841
|
17
17
|
daq2lh5/fc/__init__.py,sha256=bB1j6r-bDmylNi0iutQeAJGjsDSjLSoXMqFfXWwfb8I,141
|
18
|
-
daq2lh5/fc/fc_config_decoder.py,sha256=
|
18
|
+
daq2lh5/fc/fc_config_decoder.py,sha256=RLRfUOZN0vYbAprqTymP7TGg641IiP9rgCGIOwWVKzU,1996
|
19
19
|
daq2lh5/fc/fc_event_decoder.py,sha256=JIRsySnxeuY3wmxjJOrTXo6wpelVup8WIvxU-fkPL-A,8131
|
20
20
|
daq2lh5/fc/fc_status_decoder.py,sha256=o_3vTAgYXelZxIsreCYioVYid2mY-wqloYKlxoCqX5Q,3390
|
21
21
|
daq2lh5/fc/fc_streamer.py,sha256=S0imXdVsiyolPvxI1uiBngpC58DporSNZPqx1HeVi5o,5737
|
22
22
|
daq2lh5/orca/__init__.py,sha256=Xf6uOIOzk_QkKH_7VizGlCo3iuiAgLtUE3A07x_HXC0,175
|
23
23
|
daq2lh5/orca/orca_base.py,sha256=-XIolXsHj-1EdewaGxyvJTZvRGZsDyZe-5PzVOd-LFY,1333
|
24
|
-
daq2lh5/orca/orca_digitizers.py,sha256=
|
24
|
+
daq2lh5/orca/orca_digitizers.py,sha256=BsAA3OgQ13YIirDM8pd_xDY3F5FqEY4YjSHviflmov8,20867
|
25
25
|
daq2lh5/orca/orca_flashcam.py,sha256=gsvPorUXk1Jn-U93GsxXJ5z6pbTK2yjsYDqZFVCm57U,33088
|
26
26
|
daq2lh5/orca/orca_header.py,sha256=1tDRG8l9Gqu4c0K4BjXBSC5eiLTzY_HaCsgNBiv5EgI,4283
|
27
27
|
daq2lh5/orca/orca_header_decoder.py,sha256=ORIIyfx22ybyKc-uyWy5ER49-dl3BGpHdfV8OCDmjIw,1632
|
28
28
|
daq2lh5/orca/orca_packet.py,sha256=TcdfuYN8_gcug_Xdjz98KqjHw1MqJ4J98zc7WI2xtf4,2488
|
29
29
|
daq2lh5/orca/orca_run_decoder.py,sha256=3atKXC6mDi8_PK6ICUBBJ-LyaTM8OU31kKWIpmttRr4,2065
|
30
30
|
daq2lh5/orca/orca_streamer.py,sha256=VbD9PF-rx_Rk-rEy7XECPmgxr6kZSUf0tC7Qbol3Qeg,15693
|
31
|
-
legend_daq2lh5-1.
|
32
|
-
legend_daq2lh5-1.
|
33
|
-
legend_daq2lh5-1.
|
34
|
-
legend_daq2lh5-1.
|
35
|
-
legend_daq2lh5-1.
|
36
|
-
legend_daq2lh5-1.
|
31
|
+
legend_daq2lh5-1.2.0a1.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
32
|
+
legend_daq2lh5-1.2.0a1.dist-info/METADATA,sha256=QiBKAO0ycatdNK5W8HlhHXA28pUnqFr2iPnjyjr2RAE,3755
|
33
|
+
legend_daq2lh5-1.2.0a1.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
|
34
|
+
legend_daq2lh5-1.2.0a1.dist-info/entry_points.txt,sha256=R08R4NrHi0ab5MJN_qKqzePVzrLSsw5WpmbiwwduYjw,59
|
35
|
+
legend_daq2lh5-1.2.0a1.dist-info/top_level.txt,sha256=MJQVLyLqMgMKBdVfNXFaCKCjHKakAs19VLbC9ctXZ7A,8
|
36
|
+
legend_daq2lh5-1.2.0a1.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|