nxswriter 3.15.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.
- {nxswriter-3.15.0 → nxswriter-3.17.0}/.ci/debian10_py2/Dockerfile +5 -2
- {nxswriter-3.15.0 → nxswriter-3.17.0}/.ci/debian10_py3/Dockerfile +5 -2
- {nxswriter-3.15.0 → nxswriter-3.17.0}/.ci/debian11_py3/Dockerfile +1 -1
- {nxswriter-3.15.0 → nxswriter-3.17.0}/.ci/install.sh +2 -2
- {nxswriter-3.15.0 → nxswriter-3.17.0}/.github/workflows/tests.yml +1 -29
- {nxswriter-3.15.0 → nxswriter-3.17.0}/ChangeLog +9 -0
- {nxswriter-3.15.0/nxswriter.egg-info → nxswriter-3.17.0}/PKG-INFO +3 -3
- {nxswriter-3.15.0 → nxswriter-3.17.0}/README.rst +2 -2
- {nxswriter-3.15.0 → nxswriter-3.17.0}/man/nxswriter.1 +164 -1
- {nxswriter-3.15.0 → nxswriter-3.17.0}/nxswriter/DecoderPool.py +20 -5
- {nxswriter-3.15.0 → nxswriter-3.17.0}/nxswriter/EVirtualField.py +31 -122
- {nxswriter-3.15.0 → nxswriter-3.17.0}/nxswriter/Release.py +1 -1
- {nxswriter-3.15.0 → nxswriter-3.17.0/nxswriter.egg-info}/PKG-INFO +3 -3
- {nxswriter-3.15.0 → nxswriter-3.17.0}/nxswriter.egg-info/requires.txt +1 -1
- {nxswriter-3.15.0 → nxswriter-3.17.0}/setup.py +1 -1
- {nxswriter-3.15.0 → nxswriter-3.17.0}/.ci/debian8_py2/Dockerfile +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/.ci/debian8_py3/Dockerfile +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/.ci/debian9_py2/Dockerfile +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/.ci/debian9_py3/Dockerfile +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/.ci/run.sh +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/.ci/ubuntu16.04_py2/Dockerfile +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/.ci/ubuntu16.04_py3/Dockerfile +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/.ci/ubuntu18.04_py2/Dockerfile +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/.ci/ubuntu18.04_py3/Dockerfile +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/.ci/ubuntu20.04_py3/Dockerfile +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/.flake8 +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/.gitignore +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/COPYRIGHT +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/MANIFEST.in +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/NXSDataWriter +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/NXSDataWriter.xmi +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/XMLExamples/MNI.xml +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/XMLExamples/encodedImage.xml +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/XMLExamples/encodedImage4.xml +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/XMLExamples/scan.xml +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/XMLExamples/scan2.xml +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/XMLExamples/scan3.xml +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/XMLExamples/test.xml +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/XMLExamples/trigger.xml +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/doc/Makefile +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/doc/conf.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/doc/index.rst +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/doc/make.bat +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/doc/nxswriter.rst +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/doc_html/AttrCanFail.html +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/doc_html/AttrCurrentFileId.html +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/doc_html/AttrErrors.html +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/doc_html/AttrFileName.html +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/doc_html/AttrJSONRecord.html +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/doc_html/AttrSkipAcquisition.html +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/doc_html/AttrStepsPerFile.html +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/doc_html/AttrXMLSettings.html +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/doc_html/Attributes.html +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/doc_html/ClassDescription.html +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/doc_html/CmdCloseEntry.html +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/doc_html/CmdCloseEntryAsynch.html +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/doc_html/CmdCloseFile.html +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/doc_html/CmdOpenEntry.html +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/doc_html/CmdOpenEntryAsynch.html +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/doc_html/CmdOpenFile.html +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/doc_html/CmdRecord.html +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/doc_html/CmdRecordAsynch.html +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/doc_html/CmdState.html +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/doc_html/CmdStatus.html +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/doc_html/Commands.html +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/doc_html/FullDocument.html +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/doc_html/Properties.html +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/doc_html/States.html +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/doc_html/TitleBanner.html +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/doc_html/index.html +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/man/NXSDataWriter.1 +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/man/nxsfromxml.1 +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/nxsfromxml +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/nxswriter/ClientSource.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/nxswriter/DBaseSource.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/nxswriter/DataHolder.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/nxswriter/DataSourceFactory.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/nxswriter/DataSourcePool.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/nxswriter/DataSources.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/nxswriter/EAttribute.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/nxswriter/EField.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/nxswriter/EGroup.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/nxswriter/ELink.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/nxswriter/EStrategy.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/nxswriter/Element.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/nxswriter/ElementThread.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/nxswriter/Errors.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/nxswriter/FElement.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/nxswriter/FetchNameHandler.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/nxswriter/H5Elements.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/nxswriter/InnerXMLParser.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/nxswriter/Metadata.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/nxswriter/NXSFromXML.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/nxswriter/NXSWriter.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/nxswriter/NexusXMLHandler.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/nxswriter/PyEvalSource.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/nxswriter/StreamSet.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/nxswriter/TangoDataWriter.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/nxswriter/TangoSource.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/nxswriter/ThreadPool.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/nxswriter/Types.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/nxswriter/__init__.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/nxswriter.egg-info/SOURCES.txt +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/nxswriter.egg-info/dependency_links.txt +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/nxswriter.egg-info/not-zip-safe +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/nxswriter.egg-info/top_level.txt +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/setup.cfg +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/Checkers.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/ClientFieldTagAsynchH5Cpp_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/ClientFieldTagAsynchH5PY_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/ClientFieldTagServerH5Cpp_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/ClientFieldTagServerH5PY_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/ClientFieldTagWriterH5Cpp_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/ClientFieldTagWriterH5PY_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/ClientSource_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/Converters_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/DBFieldTagAsynchH5Cpp_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/DBFieldTagAsynchH5PY_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/DBFieldTagServerH5Cpp_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/DBFieldTagServerH5PY_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/DBFieldTagWriterH5Cpp_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/DBFieldTagWriterH5PY_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/DBaseSource_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/DataHolder_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/DataSourceDecoders_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/DataSourceFactory_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/DataSourcePool_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/DataSource_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/DecoderPool_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/EAttributeH5Cpp_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/EAttributeH5PY_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/EDimH5Cpp_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/EDimH5PY_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/EDimensionsH5Cpp_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/EDimensionsH5PY_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/EDocH5Cpp_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/EDocH5PY_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/EFieldH5Cpp_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/EFieldH5PY_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/EFieldReshapeH5Cpp_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/EFieldReshapeH5PY_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/EFileH5Cpp_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/EFileH5PY_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/EGroupH5Cpp_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/EGroupH5PY_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/ELinkH5Cpp_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/ELinkH5PY_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/EStrategyH5Cpp_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/EStrategyH5PY_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/ESymbolH5Cpp_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/ESymbolH5PY_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/ElementH5Cpp_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/ElementH5PY_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/ElementThread_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/Element_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/Errors_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/FElementH5Cpp_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/FElementH5PY_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/FElementWithAttrH5Cpp_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/FElementWithAttrH5PY_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/FetchNameHandler_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/FileWriterH5CppH5PY_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/FileWriterH5Cpp_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/FileWriterH5PY_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/H5CppWriter_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/H5PYWriter_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/InnerXMLParser_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/MYSQLSource_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/NTP_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/NXSDataWriterH5Cpp_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/NXSDataWriterH5PY_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/NXSFromXMLH5Cpp_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/NXSFromXMLH5PY_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/NexusXMLHandlerH5Cpp_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/NexusXMLHandlerH5PY_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/ORACLESource_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/PGSQLSource_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/ProxyHelper.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/ProxyTools_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/PyEvalSource_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/PyEvalTangoSourceH5Cpp_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/PyEvalTangoSourceH5PY_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/ServerSetUp.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/SimpleServer.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/SimpleServerSetUp.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/StreamSet_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/TNObject_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/TangoClassID.txt +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/TangoDataWriterH5CppH5PY_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/TangoDataWriterH5Cpp_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/TangoDataWriterH5PY_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/TangoFieldTagAsynchH5Cpp_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/TangoFieldTagAsynchH5PY_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/TangoFieldTagServerH5Cpp_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/TangoFieldTagServerH5PY_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/TangoFieldTagWriterH5Cpp_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/TangoFieldTagWriterH5PY_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/TangoSource_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/TgDevice_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/TgGroup_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/TgMember_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/ThreadPool_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/TstDataSource.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/UINT32decoder_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/UTF8decoder_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/VDEOdecoder_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/XMLFieldTagAsynchH5Cpp_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/XMLFieldTagAsynchH5PY_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/XMLFieldTagServerH5Cpp_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/XMLFieldTagServerH5PY_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/XMLFieldTagWriterH5Cpp_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/XMLFieldTagWriterH5PY_test.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/__init__.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/__main__.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/main.py +0 -0
- {nxswriter-3.15.0 → nxswriter-3.17.0}/test/mydb.pgsql +0 -0
- {nxswriter-3.15.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,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,
|
|
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,12 @@
|
|
|
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
|
+
|
|
6
|
+
2025-03-28 Jan Kotanski <jankotan@gmail.com>
|
|
7
|
+
* add support for DATA_ARRAY v4 (#182)
|
|
8
|
+
* tagged as 3.16.0
|
|
9
|
+
|
|
1
10
|
2025-03-28 Jan Kotanski <jankotan@gmail.com>
|
|
2
11
|
* make fixes for numpy2 (#179)
|
|
3
12
|
* recommends nxstools 4.23.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: nxswriter
|
|
3
|
-
Version: 3.
|
|
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 `
|
|
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/
|
|
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 `
|
|
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/
|
|
82
|
+
$ wget http://repos.pni-hdri.de/trixie-pni-hdri.list
|
|
83
83
|
|
|
84
84
|
To install tango server
|
|
85
85
|
|
|
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|
|
27
27
|
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|
28
28
|
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
|
|
29
29
|
..
|
|
30
|
-
.TH "NXSWRITER" "1" "
|
|
30
|
+
.TH "NXSWRITER" "1" "Jun 04, 2025" "3.16" "NXSDataWriter"
|
|
31
31
|
.SH NAME
|
|
32
32
|
nxswriter \- nxswriter Documentation
|
|
33
33
|
.sp
|
|
@@ -1250,6 +1250,31 @@ During its thread run it fetches the data from the source
|
|
|
1250
1250
|
.UNINDENT
|
|
1251
1251
|
.INDENT 7.0
|
|
1252
1252
|
.TP
|
|
1253
|
+
.B setLength(index, value)
|
|
1254
|
+
sets lengths dict element
|
|
1255
|
+
.INDENT 7.0
|
|
1256
|
+
.TP
|
|
1257
|
+
.B Parameters
|
|
1258
|
+
.INDENT 7.0
|
|
1259
|
+
.IP \(bu 2
|
|
1260
|
+
\fBindex\fP (\fI\%int\fP) \-\- length index
|
|
1261
|
+
.IP \(bu 2
|
|
1262
|
+
\fBvalue\fP (\fI\%int\fP or \fI\%str\fP) \-\- length value
|
|
1263
|
+
.UNINDENT
|
|
1264
|
+
.UNINDENT
|
|
1265
|
+
.UNINDENT
|
|
1266
|
+
.INDENT 7.0
|
|
1267
|
+
.TP
|
|
1268
|
+
.B setRank(rank)
|
|
1269
|
+
sets dimension rank
|
|
1270
|
+
.INDENT 7.0
|
|
1271
|
+
.TP
|
|
1272
|
+
.B Parameters
|
|
1273
|
+
\fBindex\fP (\fBsrc\fP) \-\- dimension rank
|
|
1274
|
+
.UNINDENT
|
|
1275
|
+
.UNINDENT
|
|
1276
|
+
.INDENT 7.0
|
|
1277
|
+
.TP
|
|
1253
1278
|
.B store(xml=None, globalJSON=None)
|
|
1254
1279
|
stores the tag content
|
|
1255
1280
|
.INDENT 7.0
|
|
@@ -1370,6 +1395,31 @@ During its thread run it fetches the data from the source
|
|
|
1370
1395
|
.UNINDENT
|
|
1371
1396
|
.INDENT 7.0
|
|
1372
1397
|
.TP
|
|
1398
|
+
.B setLength(index, value)
|
|
1399
|
+
sets lengths dict element
|
|
1400
|
+
.INDENT 7.0
|
|
1401
|
+
.TP
|
|
1402
|
+
.B Parameters
|
|
1403
|
+
.INDENT 7.0
|
|
1404
|
+
.IP \(bu 2
|
|
1405
|
+
\fBindex\fP (\fI\%int\fP) \-\- length index
|
|
1406
|
+
.IP \(bu 2
|
|
1407
|
+
\fBvalue\fP (\fI\%int\fP or \fI\%str\fP) \-\- length value
|
|
1408
|
+
.UNINDENT
|
|
1409
|
+
.UNINDENT
|
|
1410
|
+
.UNINDENT
|
|
1411
|
+
.INDENT 7.0
|
|
1412
|
+
.TP
|
|
1413
|
+
.B setRank(rank)
|
|
1414
|
+
sets dimension rank
|
|
1415
|
+
.INDENT 7.0
|
|
1416
|
+
.TP
|
|
1417
|
+
.B Parameters
|
|
1418
|
+
\fBindex\fP (\fBsrc\fP) \-\- dimension rank
|
|
1419
|
+
.UNINDENT
|
|
1420
|
+
.UNINDENT
|
|
1421
|
+
.INDENT 7.0
|
|
1422
|
+
.TP
|
|
1373
1423
|
.B shuffle
|
|
1374
1424
|
(\fI\%bool\fP) compression shuffle
|
|
1375
1425
|
.UNINDENT
|
|
@@ -2145,6 +2195,119 @@ constructor
|
|
|
2145
2195
|
.UNINDENT
|
|
2146
2196
|
.INDENT 0.0
|
|
2147
2197
|
.TP
|
|
2198
|
+
.B class nxswriter.H5Elements.ESelection(attrs, last, streams=None)
|
|
2199
|
+
Bases: \fI\%Element\fP
|
|
2200
|
+
.sp
|
|
2201
|
+
selection tag element
|
|
2202
|
+
.sp
|
|
2203
|
+
constructor
|
|
2204
|
+
.INDENT 7.0
|
|
2205
|
+
.TP
|
|
2206
|
+
.B Parameters
|
|
2207
|
+
.INDENT 7.0
|
|
2208
|
+
.IP \(bu 2
|
|
2209
|
+
\fBattrs\fP (\fI\%dict\fP <\fI\%str\fP, \fI\%str\fP>) \-\- dictionary of the tag attributes
|
|
2210
|
+
.IP \(bu 2
|
|
2211
|
+
\fBlast\fP (\fI\%nxswriter.Element.Element\fP) \-\- the last element from the stack
|
|
2212
|
+
.IP \(bu 2
|
|
2213
|
+
\fBstreams\fP (\fBStreamSet\fP or \fI\%tango.LatestDeviceImpl\fP) \-\- tango\-like steamset class
|
|
2214
|
+
.UNINDENT
|
|
2215
|
+
.UNINDENT
|
|
2216
|
+
.UNINDENT
|
|
2217
|
+
.INDENT 0.0
|
|
2218
|
+
.TP
|
|
2219
|
+
.B class nxswriter.H5Elements.ESlab(attrs, last, streams=None)
|
|
2220
|
+
Bases: \fI\%Element\fP
|
|
2221
|
+
.sp
|
|
2222
|
+
slab tag element
|
|
2223
|
+
.sp
|
|
2224
|
+
constructor
|
|
2225
|
+
.INDENT 7.0
|
|
2226
|
+
.TP
|
|
2227
|
+
.B Parameters
|
|
2228
|
+
.INDENT 7.0
|
|
2229
|
+
.IP \(bu 2
|
|
2230
|
+
\fBattrs\fP (\fI\%dict\fP <\fI\%str\fP, \fI\%str\fP>) \-\- dictionary of the tag attributes
|
|
2231
|
+
.IP \(bu 2
|
|
2232
|
+
\fBlast\fP (\fI\%nxswriter.Element.Element\fP) \-\- the last element from the stack
|
|
2233
|
+
.IP \(bu 2
|
|
2234
|
+
\fBstreams\fP (\fBStreamSet\fP or \fI\%tango.LatestDeviceImpl\fP) \-\- tango\-like steamset class
|
|
2235
|
+
.UNINDENT
|
|
2236
|
+
.UNINDENT
|
|
2237
|
+
.INDENT 7.0
|
|
2238
|
+
.TP
|
|
2239
|
+
.B content
|
|
2240
|
+
(\fI\%list\fP <\fI\%str\fP>) tag content
|
|
2241
|
+
.UNINDENT
|
|
2242
|
+
.INDENT 7.0
|
|
2243
|
+
.TP
|
|
2244
|
+
.B source
|
|
2245
|
+
(\fI\%nxswriter.DataSources.DataSource\fP) data source
|
|
2246
|
+
.UNINDENT
|
|
2247
|
+
.INDENT 7.0
|
|
2248
|
+
.TP
|
|
2249
|
+
.B store(xml=None, globalJSON=None)
|
|
2250
|
+
stores the tag content
|
|
2251
|
+
.INDENT 7.0
|
|
2252
|
+
.TP
|
|
2253
|
+
.B Parameters
|
|
2254
|
+
.INDENT 7.0
|
|
2255
|
+
.IP \(bu 2
|
|
2256
|
+
\fBxml\fP \-\- xml setting
|
|
2257
|
+
.IP \(bu 2
|
|
2258
|
+
\fBglobalJSON\fP (: \fI\%dict\fP <\fI\%str\fP, \fI\%dict\fP <\fI\%str\fP, any>>) \-\- global JSON string
|
|
2259
|
+
.UNINDENT
|
|
2260
|
+
.UNINDENT
|
|
2261
|
+
.UNINDENT
|
|
2262
|
+
.UNINDENT
|
|
2263
|
+
.INDENT 0.0
|
|
2264
|
+
.TP
|
|
2265
|
+
.B class nxswriter.H5Elements.ESlice(attrs, last, streams=None)
|
|
2266
|
+
Bases: \fI\%Element\fP
|
|
2267
|
+
.sp
|
|
2268
|
+
slice tag element
|
|
2269
|
+
.sp
|
|
2270
|
+
constructor
|
|
2271
|
+
.INDENT 7.0
|
|
2272
|
+
.TP
|
|
2273
|
+
.B Parameters
|
|
2274
|
+
.INDENT 7.0
|
|
2275
|
+
.IP \(bu 2
|
|
2276
|
+
\fBattrs\fP (\fI\%dict\fP <\fI\%str\fP, \fI\%str\fP>) \-\- dictionary of the tag attributes
|
|
2277
|
+
.IP \(bu 2
|
|
2278
|
+
\fBlast\fP (\fI\%nxswriter.Element.Element\fP) \-\- the last element from the stack
|
|
2279
|
+
.IP \(bu 2
|
|
2280
|
+
\fBstreams\fP (\fBStreamSet\fP or \fI\%tango.LatestDeviceImpl\fP) \-\- tango\-like steamset class
|
|
2281
|
+
.UNINDENT
|
|
2282
|
+
.UNINDENT
|
|
2283
|
+
.INDENT 7.0
|
|
2284
|
+
.TP
|
|
2285
|
+
.B content
|
|
2286
|
+
(\fI\%list\fP <\fI\%str\fP>) tag content
|
|
2287
|
+
.UNINDENT
|
|
2288
|
+
.INDENT 7.0
|
|
2289
|
+
.TP
|
|
2290
|
+
.B source
|
|
2291
|
+
(\fI\%nxswriter.DataSources.DataSource\fP) data source
|
|
2292
|
+
.UNINDENT
|
|
2293
|
+
.INDENT 7.0
|
|
2294
|
+
.TP
|
|
2295
|
+
.B store(xml=None, globalJSON=None)
|
|
2296
|
+
stores the tag content
|
|
2297
|
+
.INDENT 7.0
|
|
2298
|
+
.TP
|
|
2299
|
+
.B Parameters
|
|
2300
|
+
.INDENT 7.0
|
|
2301
|
+
.IP \(bu 2
|
|
2302
|
+
\fBxml\fP \-\- xml setting
|
|
2303
|
+
.IP \(bu 2
|
|
2304
|
+
\fBglobalJSON\fP (: \fI\%dict\fP <\fI\%str\fP, \fI\%dict\fP <\fI\%str\fP, any>>) \-\- global JSON string
|
|
2305
|
+
.UNINDENT
|
|
2306
|
+
.UNINDENT
|
|
2307
|
+
.UNINDENT
|
|
2308
|
+
.UNINDENT
|
|
2309
|
+
.INDENT 0.0
|
|
2310
|
+
.TP
|
|
2148
2311
|
.B class nxswriter.H5Elements.ESymbol(attrs, last, streams=None)
|
|
2149
2312
|
Bases: \fI\%Element\fP
|
|
2150
2313
|
.sp
|
|
@@ -175,8 +175,10 @@ class DATAARRAYdecoder(object):
|
|
|
175
175
|
self.__value = None
|
|
176
176
|
#: ([:obj:`str`, :obj:`str`]) header and image data
|
|
177
177
|
self.__data = None
|
|
178
|
-
#: (:obj:`str`) struct header format
|
|
179
|
-
self.
|
|
178
|
+
#: (:obj:`str`) struct header format ver < 4
|
|
179
|
+
self.__headerFormat123 = '<IHHIIHHHHHHHHIIIIIIII'
|
|
180
|
+
#: (:obj:`str`) struct header format ver >=4
|
|
181
|
+
self.__headerFormat = '<IHHIIHHHHHHHHIIIIIIQQII'
|
|
180
182
|
#: (:obj:`dict` <:obj:`str`, :obj:`any` > ) header data
|
|
181
183
|
self.__header = {}
|
|
182
184
|
#: (:obj:`dict` <:obj:`int`, :obj:`str` > ) format modes
|
|
@@ -200,7 +202,7 @@ class DATAARRAYdecoder(object):
|
|
|
200
202
|
"""
|
|
201
203
|
self.__data = data
|
|
202
204
|
self.format = data[0]
|
|
203
|
-
self._loadHeader(data[1]
|
|
205
|
+
self._loadHeader(data[1])
|
|
204
206
|
self.__value = None
|
|
205
207
|
|
|
206
208
|
def _loadHeader(self, headerData):
|
|
@@ -209,7 +211,15 @@ class DATAARRAYdecoder(object):
|
|
|
209
211
|
:param headerData: buffer with header data
|
|
210
212
|
:type headerData: :obj:`str`
|
|
211
213
|
"""
|
|
212
|
-
|
|
214
|
+
try:
|
|
215
|
+
hData = headerData[:struct.calcsize(self.__headerFormat)]
|
|
216
|
+
hdr = struct.unpack(self.__headerFormat, hData)
|
|
217
|
+
if hdr[1] < 4:
|
|
218
|
+
hData = headerData[:struct.calcsize(self.__headerFormat123)]
|
|
219
|
+
hdr = struct.unpack(self.__headerFormat123, hData)
|
|
220
|
+
except Exception:
|
|
221
|
+
hData = headerData[:struct.calcsize(self.__headerFormat123)]
|
|
222
|
+
hdr = struct.unpack(self.__headerFormat123, hData)
|
|
213
223
|
self.__header = {}
|
|
214
224
|
self.__header['magic'] = hdr[0]
|
|
215
225
|
self.__header['headerVersion'] = hdr[1]
|
|
@@ -261,7 +271,12 @@ class DATAARRAYdecoder(object):
|
|
|
261
271
|
if not self.__header or not self.__data:
|
|
262
272
|
return
|
|
263
273
|
if self.__value is None:
|
|
264
|
-
|
|
274
|
+
if 'headerVersion' in self.__header and \
|
|
275
|
+
self.__header['headerVersion'] >= 4:
|
|
276
|
+
image = self.__data[1][struct.calcsize(self.__headerFormat):]
|
|
277
|
+
else:
|
|
278
|
+
image = self.__data[1][
|
|
279
|
+
struct.calcsize(self.__headerFormat123):]
|
|
265
280
|
dformat = self.__formatID[self.__header['imageMode']]
|
|
266
281
|
fSize = struct.calcsize(dformat)
|
|
267
282
|
self.__value = numpy.array(
|
|
@@ -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 =
|
|
352
|
-
|
|
353
|
-
|
|
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.
|
|
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
|
|
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.
|
|
592
|
-
|
|
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
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
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
|
-
|
|
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,
|
|
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.
|
|
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 =
|
|
703
|
-
|
|
704
|
-
|
|
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)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: nxswriter
|
|
3
|
-
Version: 3.
|
|
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 `
|
|
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/
|
|
109
|
+
$ wget http://repos.pni-hdri.de/trixie-pni-hdri.list
|
|
110
110
|
|
|
111
111
|
To install tango server
|
|
112
112
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|