pninexus 3.2.2__tar.gz → 3.2.3__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 (181) hide show
  1. pninexus-3.2.3/PKG-INFO +180 -0
  2. {pninexus-3.2.2 → pninexus-3.2.3}/README.rst +9 -9
  3. {pninexus-3.2.2 → pninexus-3.2.3}/doc/sphinx/conf.py +1 -1
  4. {pninexus-3.2.2 → pninexus-3.2.3}/doc/sphinx/h5cpp_datatypes.rst +1 -1
  5. {pninexus-3.2.2 → pninexus-3.2.3}/setup.py +3 -2
  6. {pninexus-3.2.2 → pninexus-3.2.3}/src/cpp/nexus/element_dict_converter.cpp +1 -1
  7. pninexus-3.2.3/src/pninexus/filters/libh5blosc.so +0 -0
  8. pninexus-3.2.3/src/pninexus/filters/libh5bshuf.so +0 -0
  9. pninexus-3.2.3/src/pninexus/filters/libh5bz2.so +0 -0
  10. pninexus-3.2.3/src/pninexus/filters/libh5jpeg.so +0 -0
  11. pninexus-3.2.3/src/pninexus/filters/libh5lz4.so +0 -0
  12. pninexus-3.2.3/src/pninexus/filters/libh5lzf.so +0 -0
  13. pninexus-3.2.3/src/pninexus/filters/libh5mafisc.so +0 -0
  14. pninexus-3.2.3/src/pninexus/filters/libh5zfp.so +0 -0
  15. {pninexus-3.2.2 → pninexus-3.2.3}/src/pninexus/h5cpp/attribute/__init__.py +16 -3
  16. {pninexus-3.2.2 → pninexus-3.2.3}/src/pninexus/h5cpp/node/__init__.py +13 -2
  17. pninexus-3.2.3/src/pninexus.egg-info/PKG-INFO +180 -0
  18. {pninexus-3.2.2 → pninexus-3.2.3}/src/pninexus.egg-info/SOURCES.txt +8 -0
  19. {pninexus-3.2.2 → pninexus-3.2.3}/test/h5cpp_tests/attribute_tests/attribute_io_test.py +22 -1
  20. {pninexus-3.2.2 → pninexus-3.2.3}/test/h5cpp_tests/filter_tests/creation_test.py +1 -1
  21. {pninexus-3.2.2 → pninexus-3.2.3}/test/h5cpp_tests/node_tests/dataset_io_test.py +25 -0
  22. pninexus-3.2.3/test/h5cpp_tests/node_tests/virtual_dataset_test.py +541 -0
  23. pninexus-3.2.2/PKG-INFO +0 -179
  24. pninexus-3.2.2/src/pninexus.egg-info/PKG-INFO +0 -179
  25. pninexus-3.2.2/test/h5cpp_tests/node_tests/virtual_dataset_test.py +0 -277
  26. {pninexus-3.2.2 → pninexus-3.2.3}/LICENSE +0 -0
  27. {pninexus-3.2.2 → pninexus-3.2.3}/MANIFEST.in +0 -0
  28. {pninexus-3.2.2 → pninexus-3.2.3}/README +0 -0
  29. {pninexus-3.2.2 → pninexus-3.2.3}/build_tools/ConanConfig.py +0 -0
  30. {pninexus-3.2.2 → pninexus-3.2.3}/build_tools/__init__.py +0 -0
  31. {pninexus-3.2.2 → pninexus-3.2.3}/build_tools/build_configuration.py +0 -0
  32. {pninexus-3.2.2 → pninexus-3.2.3}/build_tools/build_configuration_builder.py +0 -0
  33. {pninexus-3.2.2 → pninexus-3.2.3}/build_tools/cpp_extension_factory.py +0 -0
  34. {pninexus-3.2.2 → pninexus-3.2.3}/doc/sphinx/Makefile +0 -0
  35. {pninexus-3.2.2 → pninexus-3.2.3}/doc/sphinx/_static/hdf5_basic_tree.svg +0 -0
  36. {pninexus-3.2.2 → pninexus-3.2.3}/doc/sphinx/_templates/versions.html +0 -0
  37. {pninexus-3.2.2 → pninexus-3.2.3}/doc/sphinx/api_guide.rst +0 -0
  38. {pninexus-3.2.2 → pninexus-3.2.3}/doc/sphinx/array.pdf +0 -0
  39. {pninexus-3.2.2 → pninexus-3.2.3}/doc/sphinx/array.png +0 -0
  40. {pninexus-3.2.2 → pninexus-3.2.3}/doc/sphinx/array.svg +0 -0
  41. {pninexus-3.2.2 → pninexus-3.2.3}/doc/sphinx/array_grow.pdf +0 -0
  42. {pninexus-3.2.2 → pninexus-3.2.3}/doc/sphinx/array_grow.png +0 -0
  43. {pninexus-3.2.2 → pninexus-3.2.3}/doc/sphinx/array_grow.svg +0 -0
  44. {pninexus-3.2.2 → pninexus-3.2.3}/doc/sphinx/external_link.pdf +0 -0
  45. {pninexus-3.2.2 → pninexus-3.2.3}/doc/sphinx/external_link.svg +0 -0
  46. {pninexus-3.2.2 → pninexus-3.2.3}/doc/sphinx/h5cpp_attributes.rst +0 -0
  47. {pninexus-3.2.2 → pninexus-3.2.3}/doc/sphinx/h5cpp_dataset.rst +0 -0
  48. {pninexus-3.2.2 → pninexus-3.2.3}/doc/sphinx/h5cpp_dataspace.rst +0 -0
  49. {pninexus-3.2.2 → pninexus-3.2.3}/doc/sphinx/h5cpp_files.rst +0 -0
  50. {pninexus-3.2.2 → pninexus-3.2.3}/doc/sphinx/h5cpp_groups.rst +0 -0
  51. {pninexus-3.2.2 → pninexus-3.2.3}/doc/sphinx/index.rst +0 -0
  52. {pninexus-3.2.2 → pninexus-3.2.3}/doc/sphinx/installation.rst +0 -0
  53. {pninexus-3.2.2 → pninexus-3.2.3}/doc/sphinx/link.pdf +0 -0
  54. {pninexus-3.2.2 → pninexus-3.2.3}/doc/sphinx/link.svg +0 -0
  55. {pninexus-3.2.2 → pninexus-3.2.3}/doc/sphinx/make.bat +0 -0
  56. {pninexus-3.2.2 → pninexus-3.2.3}/doc/sphinx/nexus_attributes.rst +0 -0
  57. {pninexus-3.2.2 → pninexus-3.2.3}/doc/sphinx/nexus_fields.rst +0 -0
  58. {pninexus-3.2.2 → pninexus-3.2.3}/doc/sphinx/nexus_files.rst +0 -0
  59. {pninexus-3.2.2 → pninexus-3.2.3}/doc/sphinx/nexus_groups.rst +0 -0
  60. {pninexus-3.2.2 → pninexus-3.2.3}/doc/sphinx/nexus_links.rst +0 -0
  61. {pninexus-3.2.2 → pninexus-3.2.3}/doc/sphinx/nexus_path.rst +0 -0
  62. {pninexus-3.2.2 → pninexus-3.2.3}/doc/sphinx/nexus_xml.rst +0 -0
  63. {pninexus-3.2.2 → pninexus-3.2.3}/doc/sphinx/users_guide.rst +0 -0
  64. {pninexus-3.2.2 → pninexus-3.2.3}/doc/sphinx/using_h5cpp.rst +0 -0
  65. {pninexus-3.2.2 → pninexus-3.2.3}/doc/sphinx/using_nexus.rst +0 -0
  66. {pninexus-3.2.2 → pninexus-3.2.3}/pkgconfig.py +0 -0
  67. {pninexus-3.2.2 → pninexus-3.2.3}/setup.cfg +0 -0
  68. {pninexus-3.2.2 → pninexus-3.2.3}/src/cpp/h5cpp/_h5cpp.cpp +0 -0
  69. {pninexus-3.2.2 → pninexus-3.2.3}/src/cpp/h5cpp/attribute/attribute.cpp +0 -0
  70. {pninexus-3.2.2 → pninexus-3.2.3}/src/cpp/h5cpp/boost_filesystem_path_conversion.cpp +0 -0
  71. {pninexus-3.2.2 → pninexus-3.2.3}/src/cpp/h5cpp/boost_filesystem_path_conversion.hpp +0 -0
  72. {pninexus-3.2.2 → pninexus-3.2.3}/src/cpp/h5cpp/common/converters.cpp +0 -0
  73. {pninexus-3.2.2 → pninexus-3.2.3}/src/cpp/h5cpp/common/converters.hpp +0 -0
  74. {pninexus-3.2.2 → pninexus-3.2.3}/src/cpp/h5cpp/common/io.hpp +0 -0
  75. {pninexus-3.2.2 → pninexus-3.2.3}/src/cpp/h5cpp/dataspace/dataspace.cpp +0 -0
  76. {pninexus-3.2.2 → pninexus-3.2.3}/src/cpp/h5cpp/dataspace/selections.cpp +0 -0
  77. {pninexus-3.2.2 → pninexus-3.2.3}/src/cpp/h5cpp/dataspace/wrappers.hpp +0 -0
  78. {pninexus-3.2.2 → pninexus-3.2.3}/src/cpp/h5cpp/datatype/datatype.cpp +0 -0
  79. {pninexus-3.2.2 → pninexus-3.2.3}/src/cpp/h5cpp/dimensions_conversion.cpp +0 -0
  80. {pninexus-3.2.2 → pninexus-3.2.3}/src/cpp/h5cpp/dimensions_conversion.hpp +0 -0
  81. {pninexus-3.2.2 → pninexus-3.2.3}/src/cpp/h5cpp/errors.cpp +0 -0
  82. {pninexus-3.2.2 → pninexus-3.2.3}/src/cpp/h5cpp/errors.hpp +0 -0
  83. {pninexus-3.2.2 → pninexus-3.2.3}/src/cpp/h5cpp/file/file.cpp +0 -0
  84. {pninexus-3.2.2 → pninexus-3.2.3}/src/cpp/h5cpp/filter/filter.cpp +0 -0
  85. {pninexus-3.2.2 → pninexus-3.2.3}/src/cpp/h5cpp/iterator_wrapper.hpp +0 -0
  86. {pninexus-3.2.2 → pninexus-3.2.3}/src/cpp/h5cpp/node/dataset.cpp +0 -0
  87. {pninexus-3.2.2 → pninexus-3.2.3}/src/cpp/h5cpp/node/functions.cpp +0 -0
  88. {pninexus-3.2.2 → pninexus-3.2.3}/src/cpp/h5cpp/node/nodes.cpp +0 -0
  89. {pninexus-3.2.2 → pninexus-3.2.3}/src/cpp/h5cpp/node/wrappers.hpp +0 -0
  90. {pninexus-3.2.2 → pninexus-3.2.3}/src/cpp/h5cpp/numpy/array_adapter.cpp +0 -0
  91. {pninexus-3.2.2 → pninexus-3.2.3}/src/cpp/h5cpp/numpy/array_adapter.hpp +0 -0
  92. {pninexus-3.2.2 → pninexus-3.2.3}/src/cpp/h5cpp/numpy/array_factory.cpp +0 -0
  93. {pninexus-3.2.2 → pninexus-3.2.3}/src/cpp/h5cpp/numpy/array_factory.hpp +0 -0
  94. {pninexus-3.2.2 → pninexus-3.2.3}/src/cpp/h5cpp/numpy/dimensions.cpp +0 -0
  95. {pninexus-3.2.2 → pninexus-3.2.3}/src/cpp/h5cpp/numpy/dimensions.hpp +0 -0
  96. {pninexus-3.2.2 → pninexus-3.2.3}/src/cpp/h5cpp/numpy/hdf5_fixed_strings_support.hpp +0 -0
  97. {pninexus-3.2.2 → pninexus-3.2.3}/src/cpp/h5cpp/numpy/hdf5_support.hpp +0 -0
  98. {pninexus-3.2.2 → pninexus-3.2.3}/src/cpp/h5cpp/numpy/hdf5_variable_strings_support.hpp +0 -0
  99. {pninexus-3.2.2 → pninexus-3.2.3}/src/cpp/h5cpp/numpy/numpy.hpp +0 -0
  100. {pninexus-3.2.2 → pninexus-3.2.3}/src/cpp/h5cpp/property/chunk_cache_parameters.cpp +0 -0
  101. {pninexus-3.2.2 → pninexus-3.2.3}/src/cpp/h5cpp/property/class_wrappers.cpp +0 -0
  102. {pninexus-3.2.2 → pninexus-3.2.3}/src/cpp/h5cpp/property/copy_flag_wrapper.cpp +0 -0
  103. {pninexus-3.2.2 → pninexus-3.2.3}/src/cpp/h5cpp/property/creation_order.cpp +0 -0
  104. {pninexus-3.2.2 → pninexus-3.2.3}/src/cpp/h5cpp/property/enumeration_wrappers.cpp +0 -0
  105. {pninexus-3.2.2 → pninexus-3.2.3}/src/cpp/h5cpp/property/property.cpp +0 -0
  106. {pninexus-3.2.2 → pninexus-3.2.3}/src/cpp/h5cpp/property/wrapper_generators.hpp +0 -0
  107. {pninexus-3.2.2 → pninexus-3.2.3}/src/cpp/nexus/element_dict_converter.hpp +0 -0
  108. {pninexus-3.2.2 → pninexus-3.2.3}/src/cpp/nexus/factories.cpp +0 -0
  109. {pninexus-3.2.2 → pninexus-3.2.3}/src/cpp/nexus/list_converters.cpp +0 -0
  110. {pninexus-3.2.2 → pninexus-3.2.3}/src/cpp/nexus/list_converters.hpp +0 -0
  111. {pninexus-3.2.2 → pninexus-3.2.3}/src/cpp/nexus/nexus.cpp +0 -0
  112. {pninexus-3.2.2 → pninexus-3.2.3}/src/cpp/nexus/path.cpp +0 -0
  113. {pninexus-3.2.2 → pninexus-3.2.3}/src/cpp/nexus/predicates.cpp +0 -0
  114. {pninexus-3.2.2 → pninexus-3.2.3}/src/cpp/nexus/wrappers.hpp +0 -0
  115. {pninexus-3.2.2 → pninexus-3.2.3}/src/pninexus/__init__.py +0 -0
  116. {pninexus-3.2.2 → pninexus-3.2.3}/src/pninexus/filters/__init__.py +0 -0
  117. {pninexus-3.2.2 → pninexus-3.2.3}/src/pninexus/h5cpp/__init__.py +0 -0
  118. {pninexus-3.2.2 → pninexus-3.2.3}/src/pninexus/h5cpp/dataspace/__init__.py +0 -0
  119. {pninexus-3.2.2 → pninexus-3.2.3}/src/pninexus/h5cpp/datatype/__init__.py +0 -0
  120. {pninexus-3.2.2 → pninexus-3.2.3}/src/pninexus/h5cpp/file/__init__.py +0 -0
  121. {pninexus-3.2.2 → pninexus-3.2.3}/src/pninexus/h5cpp/filter/__init__.py +0 -0
  122. {pninexus-3.2.2 → pninexus-3.2.3}/src/pninexus/h5cpp/property/__init__.py +0 -0
  123. {pninexus-3.2.2 → pninexus-3.2.3}/src/pninexus/nexus/__init__.py +0 -0
  124. {pninexus-3.2.2 → pninexus-3.2.3}/src/pninexus.egg-info/dependency_links.txt +0 -0
  125. {pninexus-3.2.2 → pninexus-3.2.3}/src/pninexus.egg-info/requires.txt +0 -0
  126. {pninexus-3.2.2 → pninexus-3.2.3}/src/pninexus.egg-info/top_level.txt +0 -0
  127. {pninexus-3.2.2 → pninexus-3.2.3}/test/__init__.py +0 -0
  128. {pninexus-3.2.2 → pninexus-3.2.3}/test/data_generator.py +0 -0
  129. {pninexus-3.2.2 → pninexus-3.2.3}/test/debug/attributes_all.py +0 -0
  130. {pninexus-3.2.2 → pninexus-3.2.3}/test/debug/is_root_element_ttest.py +0 -0
  131. {pninexus-3.2.2 → pninexus-3.2.3}/test/debug/read.py +0 -0
  132. {pninexus-3.2.2 → pninexus-3.2.3}/test/debug/scalar.py +0 -0
  133. {pninexus-3.2.2 → pninexus-3.2.3}/test/debug/scalar_string_setget.py +0 -0
  134. {pninexus-3.2.2 → pninexus-3.2.3}/test/debug/test.py +0 -0
  135. {pninexus-3.2.2 → pninexus-3.2.3}/test/debug/test2.py +0 -0
  136. {pninexus-3.2.2 → pninexus-3.2.3}/test/debug/test3.py +0 -0
  137. {pninexus-3.2.2 → pninexus-3.2.3}/test/debug/ttest_attributes.py +0 -0
  138. {pninexus-3.2.2 → pninexus-3.2.3}/test/debug/ttest_fields.py +0 -0
  139. {pninexus-3.2.2 → pninexus-3.2.3}/test/h5cpp_tests/__init__.py +0 -0
  140. {pninexus-3.2.2 → pninexus-3.2.3}/test/h5cpp_tests/attribute_tests/__init__.py +0 -0
  141. {pninexus-3.2.2 → pninexus-3.2.3}/test/h5cpp_tests/attribute_tests/attribute_creation_test.py +0 -0
  142. {pninexus-3.2.2 → pninexus-3.2.3}/test/h5cpp_tests/dataspace_tests/__init__.py +0 -0
  143. {pninexus-3.2.2 → pninexus-3.2.3}/test/h5cpp_tests/dataspace_tests/scalar_dataspace_test.py +0 -0
  144. {pninexus-3.2.2 → pninexus-3.2.3}/test/h5cpp_tests/dataspace_tests/simple_dataspace_test.py +0 -0
  145. {pninexus-3.2.2 → pninexus-3.2.3}/test/h5cpp_tests/datatype_tests/__init__.py +0 -0
  146. {pninexus-3.2.2 → pninexus-3.2.3}/test/h5cpp_tests/datatype_tests/predefined_type_test.py +0 -0
  147. {pninexus-3.2.2 → pninexus-3.2.3}/test/h5cpp_tests/file_creation_test.py +0 -0
  148. {pninexus-3.2.2 → pninexus-3.2.3}/test/h5cpp_tests/file_image_test.py +0 -0
  149. {pninexus-3.2.2 → pninexus-3.2.3}/test/h5cpp_tests/file_open_test.py +0 -0
  150. {pninexus-3.2.2 → pninexus-3.2.3}/test/h5cpp_tests/filter_tests/__init__.py +0 -0
  151. {pninexus-3.2.2 → pninexus-3.2.3}/test/h5cpp_tests/group_tests/__init__.py +0 -0
  152. {pninexus-3.2.2 → pninexus-3.2.3}/test/h5cpp_tests/group_tests/group_construction_test.py +0 -0
  153. {pninexus-3.2.2 → pninexus-3.2.3}/test/h5cpp_tests/node_tests/__init__.py +0 -0
  154. {pninexus-3.2.2 → pninexus-3.2.3}/test/h5cpp_tests/node_tests/copy_test.py +0 -0
  155. {pninexus-3.2.2 → pninexus-3.2.3}/test/h5cpp_tests/node_tests/dataset_direct_chunk_test.py +0 -0
  156. {pninexus-3.2.2 → pninexus-3.2.3}/test/h5cpp_tests/node_tests/dataset_extent_test.py +0 -0
  157. {pninexus-3.2.2 → pninexus-3.2.3}/test/h5cpp_tests/node_tests/dataset_partial_io_test.py +0 -0
  158. {pninexus-3.2.2 → pninexus-3.2.3}/test/h5cpp_tests/node_tests/group_creation_test.py +0 -0
  159. {pninexus-3.2.2 → pninexus-3.2.3}/test/h5cpp_tests/node_tests/h5py_compat_test.py +0 -0
  160. {pninexus-3.2.2 → pninexus-3.2.3}/test/h5cpp_tests/node_tests/link_iteration_test.py +0 -0
  161. {pninexus-3.2.2 → pninexus-3.2.3}/test/h5cpp_tests/node_tests/node_iterator_test.py +0 -0
  162. {pninexus-3.2.2 → pninexus-3.2.3}/test/h5cpp_tests/path_test.py +0 -0
  163. {pninexus-3.2.2 → pninexus-3.2.3}/test/h5cpp_tests/property_tests/__init__.py +0 -0
  164. {pninexus-3.2.2 → pninexus-3.2.3}/test/h5cpp_tests/property_tests/chunk_cache_parameters_test.py +0 -0
  165. {pninexus-3.2.2 → pninexus-3.2.3}/test/h5cpp_tests/property_tests/copy_flags_test.py +0 -0
  166. {pninexus-3.2.2 → pninexus-3.2.3}/test/h5cpp_tests/property_tests/creation_order_test.py +0 -0
  167. {pninexus-3.2.2 → pninexus-3.2.3}/test/h5cpp_tests/property_tests/object_copy_list_test.py +0 -0
  168. {pninexus-3.2.2 → pninexus-3.2.3}/test/io_test_utils.py +0 -0
  169. {pninexus-3.2.2 → pninexus-3.2.3}/test/mem_log_view.py +0 -0
  170. {pninexus-3.2.2 → pninexus-3.2.3}/test/memory_check.py +0 -0
  171. {pninexus-3.2.2 → pninexus-3.2.3}/test/nexus_tests/NexusPathTests.xml +0 -0
  172. {pninexus-3.2.2 → pninexus-3.2.3}/test/nexus_tests/__init__.py +0 -0
  173. {pninexus-3.2.2 → pninexus-3.2.3}/test/nexus_tests/detector.xml +0 -0
  174. {pninexus-3.2.2 → pninexus-3.2.3}/test/nexus_tests/factory_test.py +0 -0
  175. {pninexus-3.2.2 → pninexus-3.2.3}/test/nexus_tests/file_test.py +0 -0
  176. {pninexus-3.2.2 → pninexus-3.2.3}/test/nexus_tests/path_test.py +0 -0
  177. {pninexus-3.2.2 → pninexus-3.2.3}/test/nexus_tests/xml_test.py +0 -0
  178. {pninexus-3.2.2 → pninexus-3.2.3}/test/regression_tests/__init__.py +0 -0
  179. {pninexus-3.2.2 → pninexus-3.2.3}/test/regression_tests/issue_18_test.py +0 -0
  180. {pninexus-3.2.2 → pninexus-3.2.3}/test/regression_tests/issue_23_test.py +0 -0
  181. {pninexus-3.2.2 → pninexus-3.2.3}/test/regression_tests/issue_5_test.py +0 -0
@@ -0,0 +1,180 @@
1
+ Metadata-Version: 2.1
2
+ Name: pninexus
3
+ Version: 3.2.3
4
+ Summary: Python wrapper for the H5CPP and PNI libraries
5
+ Home-page: https://github.com/pni-libraries/python-pninexus
6
+ Author: Eugen Wintersberger
7
+ Author-email: eugen.wintersberger@desy.de
8
+ Maintainer: Eugen Wintersberger, Jan Kotanski
9
+ Maintainer-email: jan.kotanski@desy.de
10
+ License: GPLv2
11
+ Keywords: h5cpp hdf5 python photon science detector
12
+ Classifier: Development Status :: 5 - Production/Stable
13
+ Classifier: Intended Audience :: Science/Research
14
+ Classifier: Topic :: Scientific/Engineering :: Physics
15
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
16
+ Classifier: License :: OSI Approved :: GNU General Public License v2 (GPLv2)
17
+ Classifier: Programming Language :: Python :: 2.7
18
+ Classifier: Programming Language :: Python :: 3.7
19
+ Classifier: Programming Language :: Python :: 3.8
20
+ Classifier: Programming Language :: Python :: 3.9
21
+ Classifier: Programming Language :: Python :: 3.10
22
+ Classifier: Programming Language :: Python :: 3.11
23
+ Classifier: Programming Language :: Python :: 3.12
24
+ License-File: LICENSE
25
+
26
+ Python bindings for PNI/NeXus and h5cpp
27
+ =======================================
28
+
29
+
30
+ |github workflow|
31
+ |docs|
32
+ |Pypi Version|
33
+ |Python Versions|
34
+
35
+ .. |github workflow| image:: https://github.com/pni-libraries/python-pninexus/actions/workflows/tests.yml/badge.svg
36
+ :target: https://github.com/pni-libraries/python-pninexus/actions
37
+ :alt:
38
+
39
+ .. |docs| image:: https://img.shields.io/badge/Documentation-webpages-ADD8E6.svg
40
+ :target: https://pni-libraries.github.io/python-pninexus/index.html
41
+ :alt:
42
+
43
+ .. |Pypi Version| image:: https://img.shields.io/pypi/v/pninexus.svg
44
+ :target: https://pypi.python.org/pypi/pninexus
45
+ :alt:
46
+
47
+ .. |Python Versions| image:: https://img.shields.io/pypi/pyversions/pninexus.svg
48
+ :target: https://pypi.python.org/pypi/pninexus/
49
+ :alt:
50
+
51
+
52
+ Python wrapper for the `h5cpp <https://github.com/ess-dmsc/h5cpp>`__ and
53
+ `libpninexus <https://github.com/pni-libraries/libpninexus>`__ C++
54
+ libraries. The wrapper supports Python 2.X and 3.X.
55
+
56
+ Installation
57
+ ------------
58
+
59
+ Required packages
60
+ ~~~~~~~~~~~~~~~~~
61
+
62
+ - *h5cpp* >= 0.5.0
63
+ - *libpninexus* >= 3.2.0
64
+ - python setuptools
65
+ - numpy
66
+ - c++ compiler
67
+ - boost-python library
68
+ - python sphinx to build the documentation
69
+
70
+ Install from sources
71
+ ~~~~~~~~~~~~~~~~~~~~
72
+
73
+ The code can be built with
74
+
75
+ ::
76
+
77
+ $ python setup.py install
78
+
79
+ For those who are still running on the old interface it is maybe whise
80
+ to install this package in a custom location with something like this
81
+
82
+ ::
83
+
84
+ $ python setup.py install --prefix=<path to installation prefix>
85
+
86
+ To build the documentation use
87
+
88
+ ::
89
+
90
+ $ python setup.py build_sphinx
91
+
92
+ The resulting documentation can be found below ``build/sphinx/html`` in
93
+ the root directory of the source distribution.
94
+
95
+ Finally, the package can be tested using
96
+
97
+ ::
98
+
99
+ $ python setup.py test
100
+
101
+ For Python3 just replace python with python3 in the above instructions.
102
+
103
+ Debian and Ubuntu packages
104
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
105
+
106
+ Debian ``bookworm``, ``bullseye``, ``buster`` or Ubuntu ``oracular``,
107
+ ``noble``, ``jammy`` packages can be found in the HDRI repository.
108
+
109
+ To install the debian packages, add the PGP repository key
110
+
111
+ ::
112
+
113
+ $ sudo su
114
+ $ curl -s http://repos.pni-hdri.de/debian_repo.pub.gpg | gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/debian-hdri-repo.gpg --import
115
+ $ chmod 644 /etc/apt/trusted.gpg.d/debian-hdri-repo.gpg
116
+
117
+ and then download the corresponding source list, e.g. for ``bookworm``
118
+
119
+ ::
120
+
121
+ $ cd /etc/apt/sources.list.d
122
+ $ wget http://repos.pni-hdri.de/bookworm-pni-hdri.list
123
+
124
+ or ``noble``
125
+
126
+ ::
127
+
128
+ $ cd /etc/apt/sources.list.d
129
+ $ wget http://repos.pni-hdri.de/noble-pni-hdri.list
130
+
131
+ respectively.
132
+
133
+ Finally,
134
+
135
+ ::
136
+
137
+ $ apt-get update
138
+ $ apt-get install python3-pninexus
139
+
140
+ or
141
+
142
+ ::
143
+
144
+ $ apt-get update
145
+ $ apt-get install python-pninexus
146
+
147
+ for python2.
148
+
149
+
150
+ Manylinux wheels from PyPI
151
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
152
+
153
+ To install pninexus in a conda or python virtual environment manylinux pip wheels can be used, e.g.
154
+
155
+ .. code-block:: console
156
+
157
+ $ python3 -m venv myvenv
158
+ $ . myvenv/bin/activate
159
+
160
+ $ pip install pip --upgrade
161
+ $ pip install numpy
162
+
163
+ $ pip install pninexus -U wheel
164
+
165
+ For some versions of wheels numpy needs to be installed in advance.
166
+
167
+ Starting from v3.2.2 the pninexus wheel contains the most important external filters.
168
+ In order to use them one needs to set HDF5_PLUGIN_PATH e.g. by
169
+
170
+ .. code-block:: python
171
+
172
+ import pninexus
173
+
174
+
175
+ More information can be found at `online
176
+ documentation <https://pni-libraries.github.io/python-pninexus/index.html>`__.
177
+
178
+ Changes for a specific version of libpninexus can be found at
179
+ `CHANGELOG <https://github.com/pni-libraries/python-pninexus/blob/develop/CHANGELOG.md>`__.
180
+
@@ -78,8 +78,8 @@ For Python3 just replace python with python3 in the above instructions.
78
78
  Debian and Ubuntu packages
79
79
  ~~~~~~~~~~~~~~~~~~~~~~~~~~
80
80
 
81
- Debian ``bookworm``, ``bullseye``, ``buster`` or Ubuntu ``lunar``,
82
- ``jammy``, ``focal`` packages can be found in the HDRI repository.
81
+ Debian ``bookworm``, ``bullseye``, ``buster`` or Ubuntu ``oracular``,
82
+ ``noble``, ``jammy`` packages can be found in the HDRI repository.
83
83
 
84
84
  To install the debian packages, add the PGP repository key
85
85
 
@@ -89,19 +89,19 @@ To install the debian packages, add the PGP repository key
89
89
  $ curl -s http://repos.pni-hdri.de/debian_repo.pub.gpg | gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/debian-hdri-repo.gpg --import
90
90
  $ chmod 644 /etc/apt/trusted.gpg.d/debian-hdri-repo.gpg
91
91
 
92
- and then download the corresponding source list, e.g. for ``bullseye``
92
+ and then download the corresponding source list, e.g. for ``bookworm``
93
93
 
94
94
  ::
95
95
 
96
96
  $ cd /etc/apt/sources.list.d
97
- $ wget http://repos.pni-hdri.de/bullseye-pni-hdri.list
97
+ $ wget http://repos.pni-hdri.de/bookworm-pni-hdri.list
98
98
 
99
- or ``jammy``
99
+ or ``noble``
100
100
 
101
101
  ::
102
102
 
103
103
  $ cd /etc/apt/sources.list.d
104
- $ wget http://repos.pni-hdri.de/jammy-pni-hdri.list
104
+ $ wget http://repos.pni-hdri.de/noble-pni-hdri.list
105
105
 
106
106
  respectively.
107
107
 
@@ -110,16 +110,16 @@ Finally,
110
110
  ::
111
111
 
112
112
  $ apt-get update
113
- $ apt-get install python-pninexus
113
+ $ apt-get install python3-pninexus
114
114
 
115
115
  or
116
116
 
117
117
  ::
118
118
 
119
119
  $ apt-get update
120
- $ apt-get install python3-pninexus
120
+ $ apt-get install python-pninexus
121
121
 
122
- for python3.
122
+ for python2.
123
123
 
124
124
 
125
125
  Manylinux wheels from PyPI
@@ -160,7 +160,7 @@ html_sidebars = {
160
160
 
161
161
  html_context = {
162
162
  "docs_versions" : [
163
- "v3.2.2", "v3.2.1", "v3.2.0", "v3.1.0",
163
+ "v3.2.3", "v3.2.2", "v3.2.1", "v3.2.0", "v3.1.0",
164
164
  "v3.0.3", "v3.0.2", "v3.0.1", "v3.0.0", "v2.0.0", "v1.3.4"]
165
165
  }
166
166
 
@@ -110,4 +110,4 @@ the array. In terms of HDF5 that would be
110
110
 
111
111
  datatype = String.fixed(str_len)
112
112
  datatype.padding = StringPad.NULLPAD
113
- datatype.encoding = CharachterEncoding.UTF8
113
+ datatype.encoding = CharacterEncoding.UTF8
@@ -20,8 +20,8 @@ except ImportError:
20
20
  BuildDoc = None
21
21
 
22
22
  name = "pninexus"
23
- version = "3.2.2"
24
- release = "3.2.2"
23
+ version = "3.2.3"
24
+ release = "3.2.3"
25
25
  # release = "3.2"
26
26
 
27
27
  if release.count(".") == 1:
@@ -278,6 +278,7 @@ setup(
278
278
  'Programming Language :: Python :: 3.9',
279
279
  'Programming Language :: Python :: 3.10',
280
280
  'Programming Language :: Python :: 3.11',
281
+ 'Programming Language :: Python :: 3.12',
281
282
  ],
282
283
  test_suite="test",
283
284
  test_loader="unittest:TestLoader",
@@ -92,7 +92,7 @@ void* dict_to_nxpath_element_converter::convertible(PyObject *obj_ptr)
92
92
  string get_string_from_pyobject(PyObject *ptr)
93
93
  {
94
94
  #if PY_MAJOR_VERSION >= 3
95
- Py_ssize_t str_size = PyUnicode_GET_DATA_SIZE(ptr);
95
+ Py_ssize_t str_size = PyUnicode_GET_LENGTH(ptr);
96
96
  if(str_size)
97
97
  {
98
98
  PyObject *utf8_str = PyUnicode_AsUTF8String(ptr);
@@ -20,15 +20,28 @@ def attribute_write(self, data):
20
20
  write_data = data
21
21
  if not isinstance(write_data, numpy.ndarray):
22
22
  write_data = numpy.array(write_data)
23
-
24
23
  if write_data.dtype.kind == 'U':
25
- write_data = write_data.astype("S")
24
+ try:
25
+ write_data = write_data.astype("S")
26
+ except Exception:
27
+ if isinstance(data, numpy.ndarray) and data.shape:
28
+ shape = data.shape
29
+ if len(shape) > 1:
30
+ data = data.flatten()
31
+ write_data = numpy.array(
32
+ [bytes(str(dt).encode('utf-8')) for dt in data])
33
+ if len(shape) > 1:
34
+ write_data = write_data.reshape(shape)
35
+ else:
36
+ write_data = numpy.array(str(data).encode('utf-8'))
26
37
  elif write_data.dtype == 'bool':
27
38
  write_data = write_data.astype("int8")
28
39
 
40
+ # print("DATA", data, write_data)
29
41
  try:
30
42
  self._write(write_data)
31
- except RuntimeError:
43
+ except RuntimeError as e:
44
+ print(str(e))
32
45
  print(write_data, write_data.dtype)
33
46
 
34
47
 
@@ -275,8 +275,19 @@ def dataset_write(self, data, selection=None):
275
275
  # if the data is a unicode numpy array we have to convert it to a
276
276
  # simple string array
277
277
  if data.dtype.kind == 'U':
278
- data = data.astype('S')
279
-
278
+ try:
279
+ data = data.astype('S')
280
+ except Exception:
281
+ if isinstance(data, numpy.ndarray) and data.shape:
282
+ shape = data.shape
283
+ if len(shape) > 1:
284
+ data = data.flatten()
285
+ data = numpy.array(
286
+ [bytes(str(dt).encode('utf-8')) for dt in data])
287
+ if len(shape) > 1:
288
+ data = data.reshape(shape)
289
+ else:
290
+ data = numpy.array(str(data).encode('utf-8'))
280
291
  #
281
292
  # determine memory datatype and dataspace
282
293
  # - if the file type is a variable length string we have to adjust the
@@ -0,0 +1,180 @@
1
+ Metadata-Version: 2.1
2
+ Name: pninexus
3
+ Version: 3.2.3
4
+ Summary: Python wrapper for the H5CPP and PNI libraries
5
+ Home-page: https://github.com/pni-libraries/python-pninexus
6
+ Author: Eugen Wintersberger
7
+ Author-email: eugen.wintersberger@desy.de
8
+ Maintainer: Eugen Wintersberger, Jan Kotanski
9
+ Maintainer-email: jan.kotanski@desy.de
10
+ License: GPLv2
11
+ Keywords: h5cpp hdf5 python photon science detector
12
+ Classifier: Development Status :: 5 - Production/Stable
13
+ Classifier: Intended Audience :: Science/Research
14
+ Classifier: Topic :: Scientific/Engineering :: Physics
15
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
16
+ Classifier: License :: OSI Approved :: GNU General Public License v2 (GPLv2)
17
+ Classifier: Programming Language :: Python :: 2.7
18
+ Classifier: Programming Language :: Python :: 3.7
19
+ Classifier: Programming Language :: Python :: 3.8
20
+ Classifier: Programming Language :: Python :: 3.9
21
+ Classifier: Programming Language :: Python :: 3.10
22
+ Classifier: Programming Language :: Python :: 3.11
23
+ Classifier: Programming Language :: Python :: 3.12
24
+ License-File: LICENSE
25
+
26
+ Python bindings for PNI/NeXus and h5cpp
27
+ =======================================
28
+
29
+
30
+ |github workflow|
31
+ |docs|
32
+ |Pypi Version|
33
+ |Python Versions|
34
+
35
+ .. |github workflow| image:: https://github.com/pni-libraries/python-pninexus/actions/workflows/tests.yml/badge.svg
36
+ :target: https://github.com/pni-libraries/python-pninexus/actions
37
+ :alt:
38
+
39
+ .. |docs| image:: https://img.shields.io/badge/Documentation-webpages-ADD8E6.svg
40
+ :target: https://pni-libraries.github.io/python-pninexus/index.html
41
+ :alt:
42
+
43
+ .. |Pypi Version| image:: https://img.shields.io/pypi/v/pninexus.svg
44
+ :target: https://pypi.python.org/pypi/pninexus
45
+ :alt:
46
+
47
+ .. |Python Versions| image:: https://img.shields.io/pypi/pyversions/pninexus.svg
48
+ :target: https://pypi.python.org/pypi/pninexus/
49
+ :alt:
50
+
51
+
52
+ Python wrapper for the `h5cpp <https://github.com/ess-dmsc/h5cpp>`__ and
53
+ `libpninexus <https://github.com/pni-libraries/libpninexus>`__ C++
54
+ libraries. The wrapper supports Python 2.X and 3.X.
55
+
56
+ Installation
57
+ ------------
58
+
59
+ Required packages
60
+ ~~~~~~~~~~~~~~~~~
61
+
62
+ - *h5cpp* >= 0.5.0
63
+ - *libpninexus* >= 3.2.0
64
+ - python setuptools
65
+ - numpy
66
+ - c++ compiler
67
+ - boost-python library
68
+ - python sphinx to build the documentation
69
+
70
+ Install from sources
71
+ ~~~~~~~~~~~~~~~~~~~~
72
+
73
+ The code can be built with
74
+
75
+ ::
76
+
77
+ $ python setup.py install
78
+
79
+ For those who are still running on the old interface it is maybe whise
80
+ to install this package in a custom location with something like this
81
+
82
+ ::
83
+
84
+ $ python setup.py install --prefix=<path to installation prefix>
85
+
86
+ To build the documentation use
87
+
88
+ ::
89
+
90
+ $ python setup.py build_sphinx
91
+
92
+ The resulting documentation can be found below ``build/sphinx/html`` in
93
+ the root directory of the source distribution.
94
+
95
+ Finally, the package can be tested using
96
+
97
+ ::
98
+
99
+ $ python setup.py test
100
+
101
+ For Python3 just replace python with python3 in the above instructions.
102
+
103
+ Debian and Ubuntu packages
104
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
105
+
106
+ Debian ``bookworm``, ``bullseye``, ``buster`` or Ubuntu ``oracular``,
107
+ ``noble``, ``jammy`` packages can be found in the HDRI repository.
108
+
109
+ To install the debian packages, add the PGP repository key
110
+
111
+ ::
112
+
113
+ $ sudo su
114
+ $ curl -s http://repos.pni-hdri.de/debian_repo.pub.gpg | gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/debian-hdri-repo.gpg --import
115
+ $ chmod 644 /etc/apt/trusted.gpg.d/debian-hdri-repo.gpg
116
+
117
+ and then download the corresponding source list, e.g. for ``bookworm``
118
+
119
+ ::
120
+
121
+ $ cd /etc/apt/sources.list.d
122
+ $ wget http://repos.pni-hdri.de/bookworm-pni-hdri.list
123
+
124
+ or ``noble``
125
+
126
+ ::
127
+
128
+ $ cd /etc/apt/sources.list.d
129
+ $ wget http://repos.pni-hdri.de/noble-pni-hdri.list
130
+
131
+ respectively.
132
+
133
+ Finally,
134
+
135
+ ::
136
+
137
+ $ apt-get update
138
+ $ apt-get install python3-pninexus
139
+
140
+ or
141
+
142
+ ::
143
+
144
+ $ apt-get update
145
+ $ apt-get install python-pninexus
146
+
147
+ for python2.
148
+
149
+
150
+ Manylinux wheels from PyPI
151
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
152
+
153
+ To install pninexus in a conda or python virtual environment manylinux pip wheels can be used, e.g.
154
+
155
+ .. code-block:: console
156
+
157
+ $ python3 -m venv myvenv
158
+ $ . myvenv/bin/activate
159
+
160
+ $ pip install pip --upgrade
161
+ $ pip install numpy
162
+
163
+ $ pip install pninexus -U wheel
164
+
165
+ For some versions of wheels numpy needs to be installed in advance.
166
+
167
+ Starting from v3.2.2 the pninexus wheel contains the most important external filters.
168
+ In order to use them one needs to set HDF5_PLUGIN_PATH e.g. by
169
+
170
+ .. code-block:: python
171
+
172
+ import pninexus
173
+
174
+
175
+ More information can be found at `online
176
+ documentation <https://pni-libraries.github.io/python-pninexus/index.html>`__.
177
+
178
+ Changes for a specific version of libpninexus can be found at
179
+ `CHANGELOG <https://github.com/pni-libraries/python-pninexus/blob/develop/CHANGELOG.md>`__.
180
+
@@ -99,6 +99,14 @@ src/pninexus.egg-info/dependency_links.txt
99
99
  src/pninexus.egg-info/requires.txt
100
100
  src/pninexus.egg-info/top_level.txt
101
101
  src/pninexus/filters/__init__.py
102
+ src/pninexus/filters/libh5blosc.so
103
+ src/pninexus/filters/libh5bshuf.so
104
+ src/pninexus/filters/libh5bz2.so
105
+ src/pninexus/filters/libh5jpeg.so
106
+ src/pninexus/filters/libh5lz4.so
107
+ src/pninexus/filters/libh5lzf.so
108
+ src/pninexus/filters/libh5mafisc.so
109
+ src/pninexus/filters/libh5zfp.so
102
110
  src/pninexus/h5cpp/__init__.py
103
111
  src/pninexus/h5cpp/attribute/__init__.py
104
112
  src/pninexus/h5cpp/dataspace/__init__.py
@@ -118,7 +118,7 @@ class AttributeIOTests(unittest.TestCase):
118
118
  a = self.root.attributes.create("StringScalar", dtype)
119
119
  a.write("hello world")
120
120
  r = a.read()
121
- self.assertEqual(r, "hello world")
121
+ self.assertEqual(r, data)
122
122
 
123
123
  def testStringScalarVariableLength(self):
124
124
 
@@ -128,6 +128,16 @@ class AttributeIOTests(unittest.TestCase):
128
128
  r = a.read()
129
129
  self.assertEqual(r, data)
130
130
 
131
+ def testStringUTF8ScalarVariableLength(self):
132
+
133
+ data = u"µm"
134
+ dtype = String.variable()
135
+ dtype.encoding = h5cpp.datatype.CharacterEncoding.UTF8
136
+ a = self.root.attributes.create("StringUTF8ScalarVLength", dtype)
137
+ a.write(data)
138
+ r = a.read()
139
+ self.assertEqual(r, data)
140
+
131
141
  def testStringArray(self):
132
142
 
133
143
  data = numpy.array([["hello", "world", "this"], ["is", "a", "test"]])
@@ -147,6 +157,17 @@ class AttributeIOTests(unittest.TestCase):
147
157
  r = a.read()
148
158
  npt.assert_array_equal(r, data)
149
159
 
160
+ def testStringUTF8ArrayVariableLength(self):
161
+
162
+ data = numpy.array([u"µm", u"µA"])
163
+ dtype = String.variable()
164
+ dtype.encoding = h5cpp.datatype.CharacterEncoding.UTF8
165
+ a = self.root.attributes.create(
166
+ "StringUTF8ArrayVLength", dtype, (2,))
167
+ a.write(data)
168
+ r = a.read()
169
+ npt.assert_array_equal(r, data)
170
+
150
171
  def testIntArray(self):
151
172
 
152
173
  data = numpy.array([1, 2, 3])
@@ -229,7 +229,7 @@ class FilterCreationTest(unittest.TestCase):
229
229
  filters[0].name,
230
230
  "bitshuffle; see https://github.com/kiyo-masui/bitshuffle")
231
231
  else:
232
- raise Exception("Bitshuffle filter is not available")
232
+ # raise Exception("Bitshuffle filter is not available")
233
233
  error = False
234
234
  try:
235
235
  filter(self.dcpl)
@@ -115,6 +115,17 @@ class DatasetAllIOTests(unittest.TestCase):
115
115
  read = dataset.read()
116
116
  self.assertEqual(read, "hello world")
117
117
 
118
+ def testWriteVariableLengthUTF8Scalar(self):
119
+ data = u"µm"
120
+ dtype = h5cpp.datatype.String.variable()
121
+ dtype.encoding = h5cpp.datatype.CharacterEncoding.UTF8
122
+ dataset = Dataset(
123
+ self.root, h5cpp.Path("VariableLengthStringUTF8Scalar"),
124
+ dtype, Scalar())
125
+ dataset.write(data)
126
+ read = dataset.read()
127
+ self.assertEqual(read, data)
128
+
118
129
  def testWriteIntegerArray(self):
119
130
 
120
131
  data = numpy.array([[1, 2, 3, 4], [5, 6, 7, 8]])
@@ -222,3 +233,17 @@ class DatasetAllIOTests(unittest.TestCase):
222
233
  dataset.write(data)
223
234
  read = dataset.read()
224
235
  npt.assert_array_equal(read, data)
236
+
237
+ def testWriteVariableLengthStringUTF8Array(self):
238
+
239
+ data = numpy.array([u"µm", u"µA"])
240
+ dtype = h5cpp.datatype.String.variable()
241
+ dtype.encoding = h5cpp.datatype.CharacterEncoding.UTF8
242
+ dataset = Dataset(
243
+ self.root,
244
+ h5cpp.Path("VariableLengthStringUTF8Array"),
245
+ dtype,
246
+ Simple((2,)))
247
+ dataset.write(data)
248
+ read = dataset.read()
249
+ npt.assert_array_equal(read, data)