nxswriter 3.16.0__tar.gz → 3.17.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 (217) hide show
  1. {nxswriter-3.16.0 → nxswriter-3.17.0}/.ci/debian10_py2/Dockerfile +5 -2
  2. {nxswriter-3.16.0 → nxswriter-3.17.0}/.ci/debian10_py3/Dockerfile +5 -2
  3. {nxswriter-3.16.0 → nxswriter-3.17.0}/.ci/debian11_py3/Dockerfile +1 -1
  4. {nxswriter-3.16.0 → nxswriter-3.17.0}/.ci/install.sh +2 -2
  5. {nxswriter-3.16.0 → nxswriter-3.17.0}/.github/workflows/tests.yml +1 -29
  6. {nxswriter-3.16.0 → nxswriter-3.17.0}/ChangeLog +5 -0
  7. {nxswriter-3.16.0/nxswriter.egg-info → nxswriter-3.17.0}/PKG-INFO +3 -3
  8. {nxswriter-3.16.0 → nxswriter-3.17.0}/README.rst +2 -2
  9. {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/EVirtualField.py +31 -122
  10. {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/Release.py +1 -1
  11. {nxswriter-3.16.0 → nxswriter-3.17.0/nxswriter.egg-info}/PKG-INFO +3 -3
  12. {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter.egg-info/requires.txt +1 -1
  13. {nxswriter-3.16.0 → nxswriter-3.17.0}/setup.py +1 -1
  14. {nxswriter-3.16.0 → nxswriter-3.17.0}/.ci/debian8_py2/Dockerfile +0 -0
  15. {nxswriter-3.16.0 → nxswriter-3.17.0}/.ci/debian8_py3/Dockerfile +0 -0
  16. {nxswriter-3.16.0 → nxswriter-3.17.0}/.ci/debian9_py2/Dockerfile +0 -0
  17. {nxswriter-3.16.0 → nxswriter-3.17.0}/.ci/debian9_py3/Dockerfile +0 -0
  18. {nxswriter-3.16.0 → nxswriter-3.17.0}/.ci/run.sh +0 -0
  19. {nxswriter-3.16.0 → nxswriter-3.17.0}/.ci/ubuntu16.04_py2/Dockerfile +0 -0
  20. {nxswriter-3.16.0 → nxswriter-3.17.0}/.ci/ubuntu16.04_py3/Dockerfile +0 -0
  21. {nxswriter-3.16.0 → nxswriter-3.17.0}/.ci/ubuntu18.04_py2/Dockerfile +0 -0
  22. {nxswriter-3.16.0 → nxswriter-3.17.0}/.ci/ubuntu18.04_py3/Dockerfile +0 -0
  23. {nxswriter-3.16.0 → nxswriter-3.17.0}/.ci/ubuntu20.04_py3/Dockerfile +0 -0
  24. {nxswriter-3.16.0 → nxswriter-3.17.0}/.flake8 +0 -0
  25. {nxswriter-3.16.0 → nxswriter-3.17.0}/.gitignore +0 -0
  26. {nxswriter-3.16.0 → nxswriter-3.17.0}/COPYRIGHT +0 -0
  27. {nxswriter-3.16.0 → nxswriter-3.17.0}/MANIFEST.in +0 -0
  28. {nxswriter-3.16.0 → nxswriter-3.17.0}/NXSDataWriter +0 -0
  29. {nxswriter-3.16.0 → nxswriter-3.17.0}/NXSDataWriter.xmi +0 -0
  30. {nxswriter-3.16.0 → nxswriter-3.17.0}/XMLExamples/MNI.xml +0 -0
  31. {nxswriter-3.16.0 → nxswriter-3.17.0}/XMLExamples/encodedImage.xml +0 -0
  32. {nxswriter-3.16.0 → nxswriter-3.17.0}/XMLExamples/encodedImage4.xml +0 -0
  33. {nxswriter-3.16.0 → nxswriter-3.17.0}/XMLExamples/scan.xml +0 -0
  34. {nxswriter-3.16.0 → nxswriter-3.17.0}/XMLExamples/scan2.xml +0 -0
  35. {nxswriter-3.16.0 → nxswriter-3.17.0}/XMLExamples/scan3.xml +0 -0
  36. {nxswriter-3.16.0 → nxswriter-3.17.0}/XMLExamples/test.xml +0 -0
  37. {nxswriter-3.16.0 → nxswriter-3.17.0}/XMLExamples/trigger.xml +0 -0
  38. {nxswriter-3.16.0 → nxswriter-3.17.0}/doc/Makefile +0 -0
  39. {nxswriter-3.16.0 → nxswriter-3.17.0}/doc/conf.py +0 -0
  40. {nxswriter-3.16.0 → nxswriter-3.17.0}/doc/index.rst +0 -0
  41. {nxswriter-3.16.0 → nxswriter-3.17.0}/doc/make.bat +0 -0
  42. {nxswriter-3.16.0 → nxswriter-3.17.0}/doc/nxswriter.rst +0 -0
  43. {nxswriter-3.16.0 → nxswriter-3.17.0}/doc_html/AttrCanFail.html +0 -0
  44. {nxswriter-3.16.0 → nxswriter-3.17.0}/doc_html/AttrCurrentFileId.html +0 -0
  45. {nxswriter-3.16.0 → nxswriter-3.17.0}/doc_html/AttrErrors.html +0 -0
  46. {nxswriter-3.16.0 → nxswriter-3.17.0}/doc_html/AttrFileName.html +0 -0
  47. {nxswriter-3.16.0 → nxswriter-3.17.0}/doc_html/AttrJSONRecord.html +0 -0
  48. {nxswriter-3.16.0 → nxswriter-3.17.0}/doc_html/AttrSkipAcquisition.html +0 -0
  49. {nxswriter-3.16.0 → nxswriter-3.17.0}/doc_html/AttrStepsPerFile.html +0 -0
  50. {nxswriter-3.16.0 → nxswriter-3.17.0}/doc_html/AttrXMLSettings.html +0 -0
  51. {nxswriter-3.16.0 → nxswriter-3.17.0}/doc_html/Attributes.html +0 -0
  52. {nxswriter-3.16.0 → nxswriter-3.17.0}/doc_html/ClassDescription.html +0 -0
  53. {nxswriter-3.16.0 → nxswriter-3.17.0}/doc_html/CmdCloseEntry.html +0 -0
  54. {nxswriter-3.16.0 → nxswriter-3.17.0}/doc_html/CmdCloseEntryAsynch.html +0 -0
  55. {nxswriter-3.16.0 → nxswriter-3.17.0}/doc_html/CmdCloseFile.html +0 -0
  56. {nxswriter-3.16.0 → nxswriter-3.17.0}/doc_html/CmdOpenEntry.html +0 -0
  57. {nxswriter-3.16.0 → nxswriter-3.17.0}/doc_html/CmdOpenEntryAsynch.html +0 -0
  58. {nxswriter-3.16.0 → nxswriter-3.17.0}/doc_html/CmdOpenFile.html +0 -0
  59. {nxswriter-3.16.0 → nxswriter-3.17.0}/doc_html/CmdRecord.html +0 -0
  60. {nxswriter-3.16.0 → nxswriter-3.17.0}/doc_html/CmdRecordAsynch.html +0 -0
  61. {nxswriter-3.16.0 → nxswriter-3.17.0}/doc_html/CmdState.html +0 -0
  62. {nxswriter-3.16.0 → nxswriter-3.17.0}/doc_html/CmdStatus.html +0 -0
  63. {nxswriter-3.16.0 → nxswriter-3.17.0}/doc_html/Commands.html +0 -0
  64. {nxswriter-3.16.0 → nxswriter-3.17.0}/doc_html/FullDocument.html +0 -0
  65. {nxswriter-3.16.0 → nxswriter-3.17.0}/doc_html/Properties.html +0 -0
  66. {nxswriter-3.16.0 → nxswriter-3.17.0}/doc_html/States.html +0 -0
  67. {nxswriter-3.16.0 → nxswriter-3.17.0}/doc_html/TitleBanner.html +0 -0
  68. {nxswriter-3.16.0 → nxswriter-3.17.0}/doc_html/index.html +0 -0
  69. {nxswriter-3.16.0 → nxswriter-3.17.0}/man/NXSDataWriter.1 +0 -0
  70. {nxswriter-3.16.0 → nxswriter-3.17.0}/man/nxsfromxml.1 +0 -0
  71. {nxswriter-3.16.0 → nxswriter-3.17.0}/man/nxswriter.1 +0 -0
  72. {nxswriter-3.16.0 → nxswriter-3.17.0}/nxsfromxml +0 -0
  73. {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/ClientSource.py +0 -0
  74. {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/DBaseSource.py +0 -0
  75. {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/DataHolder.py +0 -0
  76. {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/DataSourceFactory.py +0 -0
  77. {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/DataSourcePool.py +0 -0
  78. {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/DataSources.py +0 -0
  79. {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/DecoderPool.py +0 -0
  80. {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/EAttribute.py +0 -0
  81. {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/EField.py +0 -0
  82. {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/EGroup.py +0 -0
  83. {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/ELink.py +0 -0
  84. {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/EStrategy.py +0 -0
  85. {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/Element.py +0 -0
  86. {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/ElementThread.py +0 -0
  87. {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/Errors.py +0 -0
  88. {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/FElement.py +0 -0
  89. {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/FetchNameHandler.py +0 -0
  90. {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/H5Elements.py +0 -0
  91. {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/InnerXMLParser.py +0 -0
  92. {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/Metadata.py +0 -0
  93. {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/NXSFromXML.py +0 -0
  94. {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/NXSWriter.py +0 -0
  95. {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/NexusXMLHandler.py +0 -0
  96. {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/PyEvalSource.py +0 -0
  97. {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/StreamSet.py +0 -0
  98. {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/TangoDataWriter.py +0 -0
  99. {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/TangoSource.py +0 -0
  100. {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/ThreadPool.py +0 -0
  101. {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/Types.py +0 -0
  102. {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/__init__.py +0 -0
  103. {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter.egg-info/SOURCES.txt +0 -0
  104. {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter.egg-info/dependency_links.txt +0 -0
  105. {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter.egg-info/not-zip-safe +0 -0
  106. {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter.egg-info/top_level.txt +0 -0
  107. {nxswriter-3.16.0 → nxswriter-3.17.0}/setup.cfg +0 -0
  108. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/Checkers.py +0 -0
  109. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/ClientFieldTagAsynchH5Cpp_test.py +0 -0
  110. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/ClientFieldTagAsynchH5PY_test.py +0 -0
  111. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/ClientFieldTagServerH5Cpp_test.py +0 -0
  112. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/ClientFieldTagServerH5PY_test.py +0 -0
  113. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/ClientFieldTagWriterH5Cpp_test.py +0 -0
  114. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/ClientFieldTagWriterH5PY_test.py +0 -0
  115. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/ClientSource_test.py +0 -0
  116. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/Converters_test.py +0 -0
  117. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/DBFieldTagAsynchH5Cpp_test.py +0 -0
  118. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/DBFieldTagAsynchH5PY_test.py +0 -0
  119. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/DBFieldTagServerH5Cpp_test.py +0 -0
  120. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/DBFieldTagServerH5PY_test.py +0 -0
  121. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/DBFieldTagWriterH5Cpp_test.py +0 -0
  122. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/DBFieldTagWriterH5PY_test.py +0 -0
  123. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/DBaseSource_test.py +0 -0
  124. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/DataHolder_test.py +0 -0
  125. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/DataSourceDecoders_test.py +0 -0
  126. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/DataSourceFactory_test.py +0 -0
  127. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/DataSourcePool_test.py +0 -0
  128. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/DataSource_test.py +0 -0
  129. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/DecoderPool_test.py +0 -0
  130. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/EAttributeH5Cpp_test.py +0 -0
  131. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/EAttributeH5PY_test.py +0 -0
  132. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/EDimH5Cpp_test.py +0 -0
  133. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/EDimH5PY_test.py +0 -0
  134. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/EDimensionsH5Cpp_test.py +0 -0
  135. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/EDimensionsH5PY_test.py +0 -0
  136. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/EDocH5Cpp_test.py +0 -0
  137. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/EDocH5PY_test.py +0 -0
  138. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/EFieldH5Cpp_test.py +0 -0
  139. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/EFieldH5PY_test.py +0 -0
  140. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/EFieldReshapeH5Cpp_test.py +0 -0
  141. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/EFieldReshapeH5PY_test.py +0 -0
  142. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/EFileH5Cpp_test.py +0 -0
  143. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/EFileH5PY_test.py +0 -0
  144. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/EGroupH5Cpp_test.py +0 -0
  145. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/EGroupH5PY_test.py +0 -0
  146. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/ELinkH5Cpp_test.py +0 -0
  147. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/ELinkH5PY_test.py +0 -0
  148. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/EStrategyH5Cpp_test.py +0 -0
  149. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/EStrategyH5PY_test.py +0 -0
  150. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/ESymbolH5Cpp_test.py +0 -0
  151. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/ESymbolH5PY_test.py +0 -0
  152. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/ElementH5Cpp_test.py +0 -0
  153. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/ElementH5PY_test.py +0 -0
  154. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/ElementThread_test.py +0 -0
  155. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/Element_test.py +0 -0
  156. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/Errors_test.py +0 -0
  157. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/FElementH5Cpp_test.py +0 -0
  158. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/FElementH5PY_test.py +0 -0
  159. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/FElementWithAttrH5Cpp_test.py +0 -0
  160. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/FElementWithAttrH5PY_test.py +0 -0
  161. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/FetchNameHandler_test.py +0 -0
  162. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/FileWriterH5CppH5PY_test.py +0 -0
  163. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/FileWriterH5Cpp_test.py +0 -0
  164. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/FileWriterH5PY_test.py +0 -0
  165. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/H5CppWriter_test.py +0 -0
  166. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/H5PYWriter_test.py +0 -0
  167. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/InnerXMLParser_test.py +0 -0
  168. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/MYSQLSource_test.py +0 -0
  169. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/NTP_test.py +0 -0
  170. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/NXSDataWriterH5Cpp_test.py +0 -0
  171. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/NXSDataWriterH5PY_test.py +0 -0
  172. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/NXSFromXMLH5Cpp_test.py +0 -0
  173. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/NXSFromXMLH5PY_test.py +0 -0
  174. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/NexusXMLHandlerH5Cpp_test.py +0 -0
  175. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/NexusXMLHandlerH5PY_test.py +0 -0
  176. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/ORACLESource_test.py +0 -0
  177. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/PGSQLSource_test.py +0 -0
  178. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/ProxyHelper.py +0 -0
  179. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/ProxyTools_test.py +0 -0
  180. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/PyEvalSource_test.py +0 -0
  181. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/PyEvalTangoSourceH5Cpp_test.py +0 -0
  182. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/PyEvalTangoSourceH5PY_test.py +0 -0
  183. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/ServerSetUp.py +0 -0
  184. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/SimpleServer.py +0 -0
  185. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/SimpleServerSetUp.py +0 -0
  186. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/StreamSet_test.py +0 -0
  187. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/TNObject_test.py +0 -0
  188. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/TangoClassID.txt +0 -0
  189. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/TangoDataWriterH5CppH5PY_test.py +0 -0
  190. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/TangoDataWriterH5Cpp_test.py +0 -0
  191. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/TangoDataWriterH5PY_test.py +0 -0
  192. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/TangoFieldTagAsynchH5Cpp_test.py +0 -0
  193. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/TangoFieldTagAsynchH5PY_test.py +0 -0
  194. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/TangoFieldTagServerH5Cpp_test.py +0 -0
  195. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/TangoFieldTagServerH5PY_test.py +0 -0
  196. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/TangoFieldTagWriterH5Cpp_test.py +0 -0
  197. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/TangoFieldTagWriterH5PY_test.py +0 -0
  198. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/TangoSource_test.py +0 -0
  199. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/TgDevice_test.py +0 -0
  200. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/TgGroup_test.py +0 -0
  201. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/TgMember_test.py +0 -0
  202. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/ThreadPool_test.py +0 -0
  203. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/TstDataSource.py +0 -0
  204. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/UINT32decoder_test.py +0 -0
  205. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/UTF8decoder_test.py +0 -0
  206. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/VDEOdecoder_test.py +0 -0
  207. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/XMLFieldTagAsynchH5Cpp_test.py +0 -0
  208. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/XMLFieldTagAsynchH5PY_test.py +0 -0
  209. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/XMLFieldTagServerH5Cpp_test.py +0 -0
  210. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/XMLFieldTagServerH5PY_test.py +0 -0
  211. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/XMLFieldTagWriterH5Cpp_test.py +0 -0
  212. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/XMLFieldTagWriterH5PY_test.py +0 -0
  213. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/__init__.py +0 -0
  214. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/__main__.py +0 -0
  215. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/main.py +0 -0
  216. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/mydb.pgsql +0 -0
  217. {nxswriter-3.16.0 → nxswriter-3.17.0}/test/sttest.py +0 -0
@@ -1,11 +1,14 @@
1
1
  FROM debian:buster
2
2
 
3
- MAINTAINER DESY, Jan Kotanski <jankotan@gmail.com>
3
+ # MAINTAINER DESY, Jan Kotanski <jankotan@gmail.com>
4
4
 
5
5
  ENV DEBIAN_FRONTEND=noninteractive
6
6
 
7
+ # switch to the german archive mirror
8
+ RUN sed -i 's|http://deb.debian.org|http://archive.debian.org|g' /etc/apt/sources.list
9
+ RUN sed -i 's|http://security.debian.org|http://archive.debian.org|g' /etc/apt/sources.list
7
10
  # add the HDRI repository
8
- RUN /bin/bash -c 'echo "deb http://ftp.de.debian.org/debian buster main" > /etc/apt/sources.list.d/debian9de.list'
11
+ # RUN /bin/bash -c 'echo "deb http://ftp.de.debian.org/debian buster main" > /etc/apt/sources.list.d/debian9de.list'
9
12
  RUN apt-get -qq update && apt-get -qq install -y libterm-readline-gnu-perl software-properties-common coreutils gnupg2 procps apt-utils curl apt-transport-https gnupg2 ca-certificates wget
10
13
  RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections
11
14
  RUN 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
@@ -1,11 +1,14 @@
1
1
  FROM debian:buster
2
2
 
3
- MAINTAINER DESY, Jan Kotanski <jankotan@gmail.com>
3
+ # MAINTAINER DESY, Jan Kotanski <jankotan@gmail.com>
4
4
 
5
5
  ENV DEBIAN_FRONTEND=noninteractive
6
6
 
7
+ # switch to the german archive mirror
8
+ RUN sed -i 's|http://deb.debian.org|http://archive.debian.org|g' /etc/apt/sources.list
9
+ RUN sed -i 's|http://security.debian.org|http://archive.debian.org|g' /etc/apt/sources.list
7
10
  # add the HDRI repository
8
- RUN /bin/bash -c 'echo "deb http://ftp.de.debian.org/debian buster main" > /etc/apt/sources.list.d/debian_de.list'
11
+ # RUN /bin/bash -c 'echo "deb http://ftp.de.debian.org/debian buster main" > /etc/apt/sources.list.d/debian_de.list'
9
12
  RUN apt-get -qq update && apt-get -qq install apt-utils dialog -y
10
13
  RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections
11
14
  RUN apt-get -qq update && apt-get -qq install -y libterm-readline-gnu-perl software-properties-common coreutils gnupg2 procps curl apt-transport-https gnupg2 ca-certificates wget
@@ -1,6 +1,6 @@
1
1
  FROM debian:bullseye
2
2
 
3
- MAINTAINER DESY, Jan Kotanski <jankotan@gmail.com>
3
+ # MAINTAINER DESY, Jan Kotanski <jankotan@gmail.com>
4
4
 
5
5
  ENV DEBIAN_FRONTEND=noninteractive
6
6
 
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env bash
2
2
 
3
3
  # restart mysqldb
4
- if [ "$1" = "debian11" ] || [ "$1" = "debian12" ] || [ "$1" = "ubuntu24.10" ] || [ "$1" = "ubuntu25.04" ] || [ "$1" = "ubuntu24.04" ]; then
4
+ if [ "$1" = "debian11" ] || [ "$1" = "debian12" ] || [ "$1" = "debian12tg10" ] || [ "$1" = "debian13" ] || [ "$1" = "ubuntu24.10" ] || [ "$1" = "ubuntu25.04" ] || [ "$1" = "ubuntu24.04" ]; then
5
5
  docker exec --user root ndts service mariadb restart
6
6
  else
7
7
  # workaround for a bug in debian9, i.e. starting mysql hangs
@@ -54,7 +54,7 @@ if [ "$2" = "2" ]; then
54
54
  docker exec --user root ndts /bin/sh -c 'apt-get -qq update; apt-get -qq install -y python-pytango nxsconfigserver-db python-nxstools'
55
55
  else
56
56
  echo "install python3-pytango"
57
- if [ "$1" = "ubuntu20.04" ] || [ "$1" = "ubuntu20.10" ] || [ "$1" = "ubuntu21.04" ] || [ "$1" = "ubuntu24.04" ] || [ "$1" = "ubuntu24.10" ] || [ "$1" = "ubuntu25.04" ] || [ "$1" = "ubuntu23.10" ] || [ "$1" = "ubuntu22.04" ] || [ "$1" = "debian11" ] || [ "$1" = "debian12" ]; then
57
+ if [ "$1" = "ubuntu20.04" ] || [ "$1" = "ubuntu20.10" ] || [ "$1" = "ubuntu21.04" ] || [ "$1" = "ubuntu24.04" ] || [ "$1" = "ubuntu24.10" ] || [ "$1" = "ubuntu25.04" ] || [ "$1" = "ubuntu23.10" ] || [ "$1" = "ubuntu22.04" ] || [ "$1" = "debian11" ] || [ "$1" = "debian12" ] || [ "$1" = "debian12tg10" ] || [ "$1" = "debian13" ] ; then
58
58
  docker exec --user root ndts /bin/sh -c 'apt-get -qq update; apt-get -qq install -y python3-tango nxsconfigserver-db python3-nxstools'
59
59
  else
60
60
  docker exec --user root ndts /bin/sh -c 'apt-get -qq update; apt-get -qq install -y python3-pytango nxsconfigserver-db python3-nxstools'
@@ -24,7 +24,7 @@ jobs:
24
24
  runs-on: ubuntu-latest
25
25
  strategy:
26
26
  matrix:
27
- os: [debian12, debian11, debian10, ubuntu25.04, ubuntu24.04, ubuntu22.04]
27
+ os: [debian13, debian12tg10, debian12, debian11, ubuntu25.04, ubuntu24.04, ubuntu22.04]
28
28
  steps:
29
29
  - uses: actions/checkout@v2
30
30
  - uses: actions/setup-python@v2
@@ -49,31 +49,3 @@ jobs:
49
49
  - name: Stop the docker
50
50
  run: docker container stop ndts
51
51
 
52
- python2_tests:
53
- runs-on: ubuntu-latest
54
- strategy:
55
- matrix:
56
- os: [debian10]
57
- steps:
58
- - uses: actions/checkout@v2
59
- - uses: actions/setup-python@v2
60
- - name: Update bash files
61
- run: |
62
- chmod +x .ci/run.sh
63
- chmod +x .ci/install.sh
64
- - name: Build the docker
65
- env:
66
- OSYS: ${{ matrix.os }}
67
- run: docker build -t ndts .ci/${OSYS}_py2
68
- - name: Run the docker
69
- run: docker run --name ndts -d -it -v `pwd`:/home/tango ndts
70
- - name: install tango and nxswriter
71
- env:
72
- OSYS: ${{ matrix.os }}
73
- run: .ci/install.sh ${OSYS} 2
74
- - name: run tests
75
- env:
76
- OSYS: ${{ matrix.os }}
77
- run: .ci/run.sh ${OSYS} 2
78
- - name: Stop the docker
79
- run: docker container stop ndts
@@ -1,3 +1,8 @@
1
+ 2025-10-13 Jan Kotanski <jankotan@gmail.com>
2
+ * move the virtual map list to h5rediswriter (#188)
3
+ * recommends nxstools 4.28.1
4
+ * tagged as 3.17.0
5
+
1
6
  2025-03-28 Jan Kotanski <jankotan@gmail.com>
2
7
  * add support for DATA_ARRAY v4 (#182)
3
8
  * tagged as 3.16.0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: nxswriter
3
- Version: 3.16.0
3
+ Version: 3.17.0
4
4
  Summary: Nexus Data writer implemented as a Tango Server
5
5
  Home-page: https://github.com/nexdatas/nxsdatawriter
6
6
  Author: Jan Kotanski, Eugen Wintersberger , Halil Pasic
@@ -91,7 +91,7 @@ Extract sources and run
91
91
  Debian packages
92
92
  """""""""""""""
93
93
 
94
- Debian `bookworm`, `bullseye`, `buster` or Ubuntu `plucky`, `noble`, `jammy` packages can be found in the HDRI repository.
94
+ Debian `trixie`, `bookworm`, `bullseye` or Ubuntu `plucky`, `noble`, `jammy` packages can be found in the HDRI repository.
95
95
 
96
96
  To install the debian packages, add the PGP repository key
97
97
 
@@ -106,7 +106,7 @@ and then download the corresponding source list
106
106
  .. code-block:: console
107
107
 
108
108
  $ cd /etc/apt/sources.list.d
109
- $ wget http://repos.pni-hdri.de/bookworm-pni-hdri.list
109
+ $ wget http://repos.pni-hdri.de/trixie-pni-hdri.list
110
110
 
111
111
  To install tango server
112
112
 
@@ -64,7 +64,7 @@ Extract sources and run
64
64
  Debian packages
65
65
  """""""""""""""
66
66
 
67
- Debian `bookworm`, `bullseye`, `buster` or Ubuntu `plucky`, `noble`, `jammy` packages can be found in the HDRI repository.
67
+ Debian `trixie`, `bookworm`, `bullseye` or Ubuntu `plucky`, `noble`, `jammy` packages can be found in the HDRI repository.
68
68
 
69
69
  To install the debian packages, add the PGP repository key
70
70
 
@@ -79,7 +79,7 @@ and then download the corresponding source list
79
79
  .. code-block:: console
80
80
 
81
81
  $ cd /etc/apt/sources.list.d
82
- $ wget http://repos.pni-hdri.de/bookworm-pni-hdri.list
82
+ $ wget http://repos.pni-hdri.de/trixie-pni-hdri.list
83
83
 
84
84
  To install tango server
85
85
 
@@ -343,14 +343,15 @@ class EVirtualDataMap(Element):
343
343
  if dt and isinstance(dt, dict):
344
344
  dh = DataHolder(streams=self._streams, **dt)
345
345
  val = dh.cast("string")
346
- self.last.appendVmap(val, self.__vmap)
346
+ self.last.appendVmap(val, self.__vmap,
347
+ self.strategy)
347
348
 
348
349
  except Exception:
349
350
  info = sys.exc_info()
350
351
  import traceback
351
- message = self.setMessage(
352
- str(info[1].__str__()) + "\n " + (" ").join(
353
- traceback.format_tb(sys.exc_info()[2])))
352
+ message = ("Datasource not found: " +
353
+ str(info[1].__str__()) + "\n " + (" ").join(
354
+ traceback.format_tb(sys.exc_info()[2])))
354
355
  # message = self.setMessage( sys.exc_info()[1].__str__() )
355
356
  del info
356
357
  #: notification of error in the run method (defined in base class)
@@ -404,6 +405,9 @@ class EVirtualField(FElementWithAttr):
404
405
  self.__shape = []
405
406
  #: (:obj:`list` <:obj:`dict` >) vmap list
406
407
  self.__vmaps = []
408
+ #: (:class:`H5CppVirtualFieldLayout`) or
409
+ #: (:class:`H5PYVirtualFieldLayout`) virtual field layout
410
+ self.__vfl = None
407
411
 
408
412
  def setRank(self, rank):
409
413
  """ sets dimension rank
@@ -498,7 +502,10 @@ class EVirtualField(FElementWithAttr):
498
502
  lval = val.split("\n")
499
503
  for el in lval:
500
504
  if el.strip():
501
- self.__vmaps.append({"target": el.strip()})
505
+ if self.__vfl is not None:
506
+ self.__vfl.append_vmap({"target": el.strip()})
507
+ else:
508
+ self.__vmaps.append({"target": el.strip()})
502
509
  return self.strategy, self.trigger
503
510
 
504
511
  def store(self, xml=None, globalJSON=None):
@@ -517,39 +524,14 @@ class EVirtualField(FElementWithAttr):
517
524
  self.__dtype, self.__name = self.__typeAndName()
518
525
  # shape
519
526
  self.__shape = self.__getShape()
527
+ self.__vfl = FileWriter.virtual_field_layout(
528
+ self.__shape, self.__dtype)
529
+ for vmap in self.__vmaps:
530
+ self.__vfl.append_vmap(vmap)
531
+ self.__vmaps = []
520
532
  return self.__setStrategy(self.__name)
521
533
 
522
- def __cureKeys(self, key):
523
- tkey = []
524
- if isinstance(key, list):
525
- try:
526
- sk = list(set([len(ky) for ky in key]))
527
- except Exception:
528
- sk = []
529
- if len(sk) == 1 and sk[0] == 4:
530
- offset = []
531
- block = []
532
- count = []
533
- stride = []
534
- for ky in key:
535
- off, bl, cnt, std = ky
536
- offset.append(off)
537
- block.append(bl)
538
- count.append(cnt)
539
- stride.append(std)
540
- return FileWriter.FTHyperslab(offset, block, count, stride)
541
- for ky in key:
542
- if isinstance(ky, list) and len(ky) > 0 and len(ky) < 4:
543
- tkey.append(slice(*ky))
544
- else:
545
- if ky is None:
546
- ky = slice(None)
547
- tkey.append(ky)
548
-
549
- return tuple(tkey)
550
- return key
551
-
552
- def appendVmap(self, values, base=None):
534
+ def appendVmap(self, values, base=None, strategy=None):
553
535
  """ append virtual map items
554
536
 
555
537
  :param values: a list of map items to append
@@ -588,94 +570,20 @@ class EVirtualField(FElementWithAttr):
588
570
  fval.update(vl)
589
571
  else:
590
572
  fval.update({"target": vl.strip()})
591
- self.__vmaps.append(fval)
592
- return len(self.__vmaps)
593
-
594
- def __findShape(self, key, eshape=None, unlimited=True):
595
- if isinstance(key, FileWriter.FTHyperslab):
596
- if not unlimited:
597
- count = [(ct if ct != FileWriter.writer.unlimited() else 1)
598
- for ct in key.count]
599
-
600
- block = [(ct if ct != FileWriter.writer.unlimited() else 1)
601
- for ct in key.block]
573
+ if self.__vfl is not None:
574
+ self.__vfl.append_vmap(fval, strategy)
602
575
  else:
603
- count = key.count
604
- block = key.block
605
- eshape = [bl * count[hi] for hi, bl in enumerate(block)]
606
- if isinstance(key, tuple):
607
- eshape = []
608
- for ky in key:
609
- if not unlimited and ky.stop == FileWriter.writer.unlimited():
610
- eshape.append(1)
611
- elif isinstance(ky, slice) and ky.stop > 0:
612
- start = ky.start if ky.start is not None else 0
613
- step = ky.step if ky.step is not None else 1
614
- eshape.append((ky.stop - start) // step)
615
- else:
616
- eshape.append(1)
617
- return eshape
576
+ self.__vmaps.append(fval)
577
+ if self.__vfl is not None:
578
+ return len(self.__vfl)
579
+ return len(self.__vmaps)
618
580
 
619
581
  def __createVDS(self):
620
582
  """ create the virtual field object
621
583
  """
622
- vlf = FileWriter.virtual_field_layout(
623
- self.__shape, self.__dtype)
624
- counter = 0
625
- for vmap in self.__vmaps:
626
- fieldpath = ""
627
- filename = ""
628
- edtype = vmap["dtype"] \
629
- if "dtype" in vmap else self.__dtype
630
- key = vmap["key"] if "key" in vmap else counter
631
- key = self.__cureKeys(key)
632
- if "shape" in vmap:
633
- eshape = vmap["shape"]
634
- elif isinstance(key, int):
635
- eshape = list(self.__shape)
636
- eshape[0] = 1
637
- else:
638
- eshape = [0] * len(self.__shape)
639
- fieldpath = vmap["fieldpath"] \
640
- if "fieldpath" in vmap else "/data"
641
- filename = vmap["filename"] if "filename" in vmap else None
642
- if "target" in vmap:
643
- target = vmap["target"]
644
- if target.startswith("h5file:/"):
645
- target = target[8:]
646
- if "::" in target:
647
- filename, fieldpath = target.split("::")
648
- elif ":/" in target:
649
- filename, fieldpath = target.split(":/")
650
- else:
651
- fieldpath = target
652
- obj = self._lastObject()
653
- while filename is None:
654
- par = obj.parent
655
- if par is None:
656
- break
657
- if hasattr(par, "root") and hasattr(par, "name"):
658
- filename = par.name
659
- break
660
- else:
661
- obj = par
662
- sourceshape = vmap["sourceshape"] \
663
- if "sourceshape" in vmap else None
664
- sourcekey = vmap["sourcekey"] \
665
- if "sourcekey" in vmap else None
666
- sourcekey = self.__cureKeys(sourcekey)
667
- if not any(eshape):
668
- eshape = self.__findShape(key, eshape, unlimited=False)
669
- ef = FileWriter.target_field_view(
670
- filename, fieldpath, eshape, edtype)
671
- if eshape:
672
- counter += eshape[0]
673
- else:
674
- counter += 1
675
- # print("KEY", key, sourcekey, sourceshape, eshape)
676
- vlf.add(key, ef, sourcekey, sourceshape)
584
+ self.__vfl.process_target_field_views(self._lastObject())
677
585
  self.h5Object = self._lastObject().create_virtual_field(
678
- self.__name, vlf)
586
+ self.__name, self.__vfl)
679
587
 
680
588
  def run(self):
681
589
  """ runner
@@ -693,15 +601,16 @@ class EVirtualField(FElementWithAttr):
693
601
  # print("SHaPE", self.__shape)
694
602
  # print("TYPE", self.__dtype)
695
603
  # print("NAME", self.__name)
696
- if self.__vmaps and self.__shape and self.__dtype and self.__name:
604
+ if self.__vfl is not None and len(self.__vfl) and self.__shape \
605
+ and self.__dtype and self.__name:
697
606
  self.__createVDS()
698
607
  self.__setAttributes()
699
608
  except Exception:
700
609
  info = sys.exc_info()
701
610
  import traceback
702
- message = self.setMessage(
703
- str(info[1].__str__()) + "\n " + (" ").join(
704
- traceback.format_tb(sys.exc_info()[2])))
611
+ message = ("Datasource not found: " +
612
+ str(info[1].__str__()) + "\n " + (" ").join(
613
+ traceback.format_tb(sys.exc_info()[2])))
705
614
  # message = self.setMessage( sys.exc_info()[1].__str__() )
706
615
  del info
707
616
  #: notification of error in the run method (defined in base class)
@@ -21,4 +21,4 @@
21
21
 
22
22
 
23
23
  #: package version
24
- __version__ = "3.16.0"
24
+ __version__ = "3.17.0"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: nxswriter
3
- Version: 3.16.0
3
+ Version: 3.17.0
4
4
  Summary: Nexus Data writer implemented as a Tango Server
5
5
  Home-page: https://github.com/nexdatas/nxsdatawriter
6
6
  Author: Jan Kotanski, Eugen Wintersberger , Halil Pasic
@@ -91,7 +91,7 @@ Extract sources and run
91
91
  Debian packages
92
92
  """""""""""""""
93
93
 
94
- Debian `bookworm`, `bullseye`, `buster` or Ubuntu `plucky`, `noble`, `jammy` packages can be found in the HDRI repository.
94
+ Debian `trixie`, `bookworm`, `bullseye` or Ubuntu `plucky`, `noble`, `jammy` packages can be found in the HDRI repository.
95
95
 
96
96
  To install the debian packages, add the PGP repository key
97
97
 
@@ -106,7 +106,7 @@ and then download the corresponding source list
106
106
  .. code-block:: console
107
107
 
108
108
  $ cd /etc/apt/sources.list.d
109
- $ wget http://repos.pni-hdri.de/bookworm-pni-hdri.list
109
+ $ wget http://repos.pni-hdri.de/trixie-pni-hdri.list
110
110
 
111
111
  To install tango server
112
112
 
@@ -1,4 +1,4 @@
1
1
  lxml
2
2
  numpy>1.6.0
3
- nxstools>=3.50.0
3
+ nxstools>=4.28.1
4
4
  pytz
@@ -78,7 +78,7 @@ install_requires = [
78
78
  'lxml',
79
79
  'numpy>1.6.0',
80
80
  # 'fabio',
81
- 'nxstools>=3.50.0',
81
+ 'nxstools>=4.28.1',
82
82
  # 'h5py',
83
83
  # 'pymysqldb',
84
84
  # 'psycopg2-binary'
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes