legend-pydataobj 1.8.0__tar.gz → 1.9.0__tar.gz

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.
Files changed (92) hide show
  1. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/PKG-INFO +3 -2
  2. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/pyproject.toml +2 -1
  3. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/src/legend_pydataobj.egg-info/PKG-INFO +3 -2
  4. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/src/legend_pydataobj.egg-info/SOURCES.txt +2 -0
  5. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/src/legend_pydataobj.egg-info/requires.txt +2 -1
  6. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/src/lgdo/__init__.py +4 -0
  7. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/src/lgdo/_version.py +2 -2
  8. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/src/lgdo/lh5/_serializers/__init__.py +2 -0
  9. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/src/lgdo/lh5/_serializers/read/composite.py +62 -0
  10. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/src/lgdo/lh5/_serializers/write/composite.py +8 -1
  11. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/src/lgdo/lh5/core.py +2 -2
  12. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/src/lgdo/lh5/datatype.py +1 -0
  13. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/src/lgdo/lh5_store.py +1 -0
  14. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/src/lgdo/types/__init__.py +2 -0
  15. legend_pydataobj-1.9.0/src/lgdo/types/histogram.py +404 -0
  16. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/src/lgdo/types/table.py +1 -1
  17. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/tests/conftest.py +1 -1
  18. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/tests/lh5/test_core.py +9 -0
  19. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/tests/lh5/test_lh5_datatype.py +1 -0
  20. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/tests/lh5/test_lh5_write.py +123 -0
  21. legend_pydataobj-1.9.0/tests/types/test_histogram.py +292 -0
  22. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/LICENSE +0 -0
  23. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/README.md +0 -0
  24. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/setup.cfg +0 -0
  25. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/src/legend_pydataobj.egg-info/dependency_links.txt +0 -0
  26. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/src/legend_pydataobj.egg-info/entry_points.txt +0 -0
  27. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/src/legend_pydataobj.egg-info/not-zip-safe +0 -0
  28. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/src/legend_pydataobj.egg-info/top_level.txt +0 -0
  29. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/src/lgdo/cli.py +0 -0
  30. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/src/lgdo/compression/__init__.py +0 -0
  31. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/src/lgdo/compression/base.py +0 -0
  32. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/src/lgdo/compression/generic.py +0 -0
  33. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/src/lgdo/compression/radware.py +0 -0
  34. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/src/lgdo/compression/utils.py +0 -0
  35. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/src/lgdo/compression/varlen.py +0 -0
  36. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/src/lgdo/lgdo_utils.py +0 -0
  37. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/src/lgdo/lh5/__init__.py +0 -0
  38. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/src/lgdo/lh5/_serializers/read/__init__.py +0 -0
  39. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/src/lgdo/lh5/_serializers/read/array.py +0 -0
  40. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/src/lgdo/lh5/_serializers/read/encoded.py +0 -0
  41. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/src/lgdo/lh5/_serializers/read/ndarray.py +0 -0
  42. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/src/lgdo/lh5/_serializers/read/scalar.py +0 -0
  43. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/src/lgdo/lh5/_serializers/read/utils.py +0 -0
  44. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/src/lgdo/lh5/_serializers/read/vector_of_vectors.py +0 -0
  45. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/src/lgdo/lh5/_serializers/write/__init__.py +0 -0
  46. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/src/lgdo/lh5/_serializers/write/array.py +0 -0
  47. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/src/lgdo/lh5/_serializers/write/scalar.py +0 -0
  48. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/src/lgdo/lh5/_serializers/write/vector_of_vectors.py +0 -0
  49. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/src/lgdo/lh5/exceptions.py +0 -0
  50. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/src/lgdo/lh5/iterator.py +0 -0
  51. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/src/lgdo/lh5/store.py +0 -0
  52. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/src/lgdo/lh5/tools.py +0 -0
  53. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/src/lgdo/lh5/utils.py +0 -0
  54. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/src/lgdo/logging.py +0 -0
  55. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/src/lgdo/types/array.py +0 -0
  56. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/src/lgdo/types/arrayofequalsizedarrays.py +0 -0
  57. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/src/lgdo/types/encoded.py +0 -0
  58. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/src/lgdo/types/fixedsizearray.py +0 -0
  59. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/src/lgdo/types/lgdo.py +0 -0
  60. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/src/lgdo/types/scalar.py +0 -0
  61. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/src/lgdo/types/struct.py +0 -0
  62. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/src/lgdo/types/vectorofvectors.py +0 -0
  63. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/src/lgdo/types/vovutils.py +0 -0
  64. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/src/lgdo/types/waveformtable.py +0 -0
  65. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/src/lgdo/units.py +0 -0
  66. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/src/lgdo/utils.py +0 -0
  67. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/tests/compression/conftest.py +0 -0
  68. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/tests/compression/sigcompress/LDQTA_r117_20200110T105115Z_cal_geds_raw-0.dat +0 -0
  69. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/tests/compression/sigcompress/special-wf-clipped.dat +0 -0
  70. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/tests/compression/test_compression.py +0 -0
  71. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/tests/compression/test_radware_sigcompress.py +0 -0
  72. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/tests/compression/test_str2wfcodec.py +0 -0
  73. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/tests/compression/test_uleb128_zigzag_diff.py +0 -0
  74. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/tests/lh5/conftest.py +0 -0
  75. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/tests/lh5/test_lh5_iterator.py +0 -0
  76. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/tests/lh5/test_lh5_store.py +0 -0
  77. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/tests/lh5/test_lh5_tools.py +0 -0
  78. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/tests/lh5/test_lh5_utils.py +0 -0
  79. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/tests/test_cli.py +0 -0
  80. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/tests/test_lgdo_utils.py +0 -0
  81. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/tests/types/test_array.py +0 -0
  82. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/tests/types/test_arrayofequalsizedarrays.py +0 -0
  83. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/tests/types/test_encoded.py +0 -0
  84. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/tests/types/test_fixedsizearray.py +0 -0
  85. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/tests/types/test_representations.py +0 -0
  86. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/tests/types/test_scalar.py +0 -0
  87. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/tests/types/test_struct.py +0 -0
  88. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/tests/types/test_table.py +0 -0
  89. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/tests/types/test_table_eval.py +0 -0
  90. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/tests/types/test_vectorofvectors.py +0 -0
  91. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/tests/types/test_vovutils.py +0 -0
  92. {legend_pydataobj-1.8.0 → legend_pydataobj-1.9.0}/tests/types/test_waveformtable.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: legend_pydataobj
3
- Version: 1.8.0
3
+ Version: 1.9.0
4
4
  Summary: LEGEND Python Data Objects
5
5
  Author: The LEGEND Collaboration
6
6
  Maintainer: The LEGEND Collaboration
@@ -702,12 +702,13 @@ Requires-Dist: awkward-pandas
702
702
  Requires-Dist: colorlog
703
703
  Requires-Dist: h5py>=3.2
704
704
  Requires-Dist: hdf5plugin
705
+ Requires-Dist: hist
705
706
  Requires-Dist: numba!=0.53.*,!=0.54.*
706
707
  Requires-Dist: numexpr
707
708
  Requires-Dist: numpy>=1.21
708
709
  Requires-Dist: pandas>=1.4.4
709
710
  Requires-Dist: parse
710
- Requires-Dist: pint!=0.24
711
+ Requires-Dist: pint>0.24
711
712
  Requires-Dist: pint-pandas
712
713
  Provides-Extra: all
713
714
  Requires-Dist: legend-pydataobj[docs,test]; extra == "all"
@@ -36,12 +36,13 @@ dependencies = [
36
36
  "colorlog",
37
37
  "h5py>=3.2",
38
38
  "hdf5plugin",
39
+ "hist",
39
40
  "numba!=0.53.*,!=0.54.*",
40
41
  "numexpr",
41
42
  "numpy>=1.21",
42
43
  "pandas>=1.4.4",
43
44
  "parse",
44
- "pint!=0.24",
45
+ "pint>0.24",
45
46
  "pint-pandas",
46
47
  ]
47
48
  dynamic = [
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: legend_pydataobj
3
- Version: 1.8.0
3
+ Version: 1.9.0
4
4
  Summary: LEGEND Python Data Objects
5
5
  Author: The LEGEND Collaboration
6
6
  Maintainer: The LEGEND Collaboration
@@ -702,12 +702,13 @@ Requires-Dist: awkward-pandas
702
702
  Requires-Dist: colorlog
703
703
  Requires-Dist: h5py>=3.2
704
704
  Requires-Dist: hdf5plugin
705
+ Requires-Dist: hist
705
706
  Requires-Dist: numba!=0.53.*,!=0.54.*
706
707
  Requires-Dist: numexpr
707
708
  Requires-Dist: numpy>=1.21
708
709
  Requires-Dist: pandas>=1.4.4
709
710
  Requires-Dist: parse
710
- Requires-Dist: pint!=0.24
711
+ Requires-Dist: pint>0.24
711
712
  Requires-Dist: pint-pandas
712
713
  Provides-Extra: all
713
714
  Requires-Dist: legend-pydataobj[docs,test]; extra == "all"
@@ -49,6 +49,7 @@ src/lgdo/types/array.py
49
49
  src/lgdo/types/arrayofequalsizedarrays.py
50
50
  src/lgdo/types/encoded.py
51
51
  src/lgdo/types/fixedsizearray.py
52
+ src/lgdo/types/histogram.py
52
53
  src/lgdo/types/lgdo.py
53
54
  src/lgdo/types/scalar.py
54
55
  src/lgdo/types/struct.py
@@ -78,6 +79,7 @@ tests/types/test_array.py
78
79
  tests/types/test_arrayofequalsizedarrays.py
79
80
  tests/types/test_encoded.py
80
81
  tests/types/test_fixedsizearray.py
82
+ tests/types/test_histogram.py
81
83
  tests/types/test_representations.py
82
84
  tests/types/test_scalar.py
83
85
  tests/types/test_struct.py
@@ -3,12 +3,13 @@ awkward-pandas
3
3
  colorlog
4
4
  h5py>=3.2
5
5
  hdf5plugin
6
+ hist
6
7
  numba!=0.53.*,!=0.54.*
7
8
  numexpr
8
9
  numpy>=1.21
9
10
  pandas>=1.4.4
10
11
  parse
11
- pint!=0.24
12
+ pint>0.24
12
13
  pint-pandas
13
14
 
14
15
  [all]
@@ -33,6 +33,8 @@ basic data object classes are:
33
33
  :class:`dict`
34
34
  * :class:`.Table`: a :class:`.Struct` whose elements ("columns") are all array
35
35
  types with the same length (number of rows)
36
+ * :class:`.Histogram`: holds an array of histogrammed data, and the associated
37
+ binning of arbitrary dimensionality.
36
38
 
37
39
  Currently the primary on-disk format for LGDO object is LEGEND HDF5 (LH5) files. IO
38
40
  is done via the class :class:`.lh5_store.LH5Store`. LH5 files can also be
@@ -50,6 +52,7 @@ from .types import (
50
52
  ArrayOfEncodedEqualSizedArrays,
51
53
  ArrayOfEqualSizedArrays,
52
54
  FixedSizeArray,
55
+ Histogram,
53
56
  Scalar,
54
57
  Struct,
55
58
  Table,
@@ -63,6 +66,7 @@ __all__ = [
63
66
  "ArrayOfEqualSizedArrays",
64
67
  "ArrayOfEncodedEqualSizedArrays",
65
68
  "FixedSizeArray",
69
+ "Histogram",
66
70
  "LGDO",
67
71
  "Scalar",
68
72
  "Struct",
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '1.8.0'
16
- __version_tuple__ = version_tuple = (1, 8, 0)
15
+ __version__ = version = '1.9.0'
16
+ __version_tuple__ = version_tuple = (1, 9, 0)
@@ -7,6 +7,7 @@ from .read.array import (
7
7
  _h5_read_ndarray,
8
8
  )
9
9
  from .read.composite import (
10
+ _h5_read_histogram,
10
11
  _h5_read_lgdo,
11
12
  _h5_read_struct,
12
13
  _h5_read_table,
@@ -32,6 +33,7 @@ __all__ = [
32
33
  "_h5_read_array_of_equalsized_arrays",
33
34
  "_h5_read_struct",
34
35
  "_h5_read_table",
36
+ "_h5_read_histogram",
35
37
  "_h5_read_scalar",
36
38
  "_h5_read_array_of_encoded_equalsized_arrays",
37
39
  "_h5_read_vector_of_encoded_vectors",
@@ -13,6 +13,7 @@ from ....types import (
13
13
  ArrayOfEncodedEqualSizedArrays,
14
14
  ArrayOfEqualSizedArrays,
15
15
  FixedSizeArray,
16
+ Histogram,
16
17
  Scalar,
17
18
  Struct,
18
19
  Table,
@@ -168,6 +169,19 @@ def _h5_read_lgdo(
168
169
  decompress=decompress,
169
170
  )
170
171
 
172
+ if lgdotype is Histogram:
173
+ return _h5_read_histogram(
174
+ h5o,
175
+ start_row=start_row,
176
+ n_rows=n_rows,
177
+ idx=idx,
178
+ use_h5idx=use_h5idx,
179
+ field_mask=field_mask,
180
+ obj_buf=obj_buf,
181
+ obj_buf_start=obj_buf_start,
182
+ decompress=decompress,
183
+ )
184
+
171
185
  if lgdotype is ArrayOfEncodedEqualSizedArrays:
172
186
  return _h5_read_array_of_encoded_equalsized_arrays(
173
187
  h5o,
@@ -385,3 +399,51 @@ def _h5_read_table(
385
399
  utils.check_obj_buf_attrs(obj_buf.attrs, attrs, h5g)
386
400
 
387
401
  return obj_buf, n_rows_read
402
+
403
+
404
+ def _h5_read_histogram(
405
+ h5g,
406
+ start_row=0,
407
+ n_rows=sys.maxsize,
408
+ idx=None,
409
+ use_h5idx=False,
410
+ field_mask=None,
411
+ obj_buf=None,
412
+ obj_buf_start=0,
413
+ decompress=True,
414
+ ):
415
+ if obj_buf is not None or obj_buf_start != 0:
416
+ msg = "reading a histogram into an existing object buffer is not supported"
417
+ raise LH5DecodeError(msg, h5g)
418
+
419
+ struct, n_rows_read = _h5_read_struct(
420
+ h5g,
421
+ start_row,
422
+ n_rows,
423
+ idx,
424
+ use_h5idx,
425
+ field_mask,
426
+ decompress,
427
+ )
428
+ binning = []
429
+ for _, a in struct.binning.items():
430
+ be = a.binedges
431
+ if isinstance(be, Struct):
432
+ b = (None, be.first.value, be.last.value, be.step.value, a.closedleft.value)
433
+ elif isinstance(be, Array):
434
+ b = (be, None, None, None, a.closedleft.value)
435
+ else:
436
+ msg = "unexpected binning of histogram"
437
+ raise LH5DecodeError(msg, h5g)
438
+ ax = Histogram.Axis(*b)
439
+ # copy attrs to "clone" the "whole" struct.
440
+ ax.attrs = a.getattrs(datatype=True)
441
+ ax["binedges"].attrs = be.getattrs(datatype=True)
442
+ binning.append(ax)
443
+
444
+ isdensity = struct.isdensity.value
445
+ weights = struct.weights
446
+ attrs = struct.getattrs(datatype=True)
447
+ histogram = Histogram(weights, binning, isdensity, attrs=attrs)
448
+
449
+ return histogram, n_rows_read
@@ -63,8 +63,15 @@ def _h5_write_lgdo(
63
63
  msg = f"can't overwrite '{name}' in wo_mode 'write_safe'"
64
64
  raise LH5EncodeError(msg, lh5_file, group, name)
65
65
 
66
- # struct or table or waveform table
66
+ # struct, table, waveform table or histogram.
67
67
  if isinstance(obj, types.Struct):
68
+ if isinstance(obj, types.Histogram) and wo_mode not in ["w", "o", "of"]:
69
+ msg = f"can't append-write histogram in wo_mode '{wo_mode}'"
70
+ raise LH5EncodeError(msg, lh5_file, group, name)
71
+ if isinstance(obj, types.Histogram) and write_start != 0:
72
+ msg = f"can't write histogram in wo_mode '{wo_mode}' with write_start != 0"
73
+ raise LH5EncodeError(msg, lh5_file, group, name)
74
+
68
75
  return _h5_write_struct(
69
76
  obj,
70
77
  name,
@@ -115,9 +115,9 @@ def read(
115
115
  else:
116
116
  lh5_obj = []
117
117
  for h5f in lh5_file:
118
- if isinstance(lh5_file, str):
118
+ if isinstance(h5f, str):
119
119
  h5f = h5py.File(h5f, mode="r") # noqa: PLW2901
120
- lh5_obj += h5f[name]
120
+ lh5_obj += [h5f[name]]
121
121
 
122
122
  obj, n_rows_read = _serializers._h5_read_lgdo(
123
123
  lh5_obj,
@@ -14,6 +14,7 @@ _lgdo_datatype_map: dict[str, lgdo.LGDO] = OrderedDict(
14
14
  lgdo.ArrayOfEncodedEqualSizedArrays,
15
15
  r"^array_of_encoded_equalsized_arrays<1,1>\{.+\}$",
16
16
  ),
17
+ (lgdo.Histogram, r"^struct\{binning,weights,isdensity\}$"),
17
18
  (lgdo.Struct, r"^struct\{.*\}$"),
18
19
  (lgdo.Table, r"^table\{.*\}$"),
19
20
  (lgdo.FixedSizeArray, r"^fixedsize_array<\d+>\{.+\}$"),
@@ -20,6 +20,7 @@ from .types import (
20
20
  ArrayOfEncodedEqualSizedArrays, # noqa: F401
21
21
  ArrayOfEqualSizedArrays, # noqa: F401
22
22
  FixedSizeArray, # noqa: F401
23
+ Histogram, # noqa: F401
23
24
  Scalar,
24
25
  Struct,
25
26
  Table, # noqa: F401
@@ -6,6 +6,7 @@ from .array import Array
6
6
  from .arrayofequalsizedarrays import ArrayOfEqualSizedArrays
7
7
  from .encoded import ArrayOfEncodedEqualSizedArrays, VectorOfEncodedVectors
8
8
  from .fixedsizearray import FixedSizeArray
9
+ from .histogram import Histogram
9
10
  from .lgdo import LGDO
10
11
  from .scalar import Scalar
11
12
  from .struct import Struct
@@ -18,6 +19,7 @@ __all__ = [
18
19
  "ArrayOfEqualSizedArrays",
19
20
  "ArrayOfEncodedEqualSizedArrays",
20
21
  "FixedSizeArray",
22
+ "Histogram",
21
23
  "LGDO",
22
24
  "Scalar",
23
25
  "Struct",