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.
- {nxswriter-3.16.0 → nxswriter-3.17.0}/.ci/debian10_py2/Dockerfile +5 -2
- {nxswriter-3.16.0 → nxswriter-3.17.0}/.ci/debian10_py3/Dockerfile +5 -2
- {nxswriter-3.16.0 → nxswriter-3.17.0}/.ci/debian11_py3/Dockerfile +1 -1
- {nxswriter-3.16.0 → nxswriter-3.17.0}/.ci/install.sh +2 -2
- {nxswriter-3.16.0 → nxswriter-3.17.0}/.github/workflows/tests.yml +1 -29
- {nxswriter-3.16.0 → nxswriter-3.17.0}/ChangeLog +5 -0
- {nxswriter-3.16.0/nxswriter.egg-info → nxswriter-3.17.0}/PKG-INFO +3 -3
- {nxswriter-3.16.0 → nxswriter-3.17.0}/README.rst +2 -2
- {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/EVirtualField.py +31 -122
- {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/Release.py +1 -1
- {nxswriter-3.16.0 → nxswriter-3.17.0/nxswriter.egg-info}/PKG-INFO +3 -3
- {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter.egg-info/requires.txt +1 -1
- {nxswriter-3.16.0 → nxswriter-3.17.0}/setup.py +1 -1
- {nxswriter-3.16.0 → nxswriter-3.17.0}/.ci/debian8_py2/Dockerfile +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/.ci/debian8_py3/Dockerfile +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/.ci/debian9_py2/Dockerfile +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/.ci/debian9_py3/Dockerfile +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/.ci/run.sh +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/.ci/ubuntu16.04_py2/Dockerfile +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/.ci/ubuntu16.04_py3/Dockerfile +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/.ci/ubuntu18.04_py2/Dockerfile +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/.ci/ubuntu18.04_py3/Dockerfile +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/.ci/ubuntu20.04_py3/Dockerfile +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/.flake8 +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/.gitignore +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/COPYRIGHT +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/MANIFEST.in +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/NXSDataWriter +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/NXSDataWriter.xmi +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/XMLExamples/MNI.xml +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/XMLExamples/encodedImage.xml +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/XMLExamples/encodedImage4.xml +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/XMLExamples/scan.xml +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/XMLExamples/scan2.xml +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/XMLExamples/scan3.xml +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/XMLExamples/test.xml +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/XMLExamples/trigger.xml +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/doc/Makefile +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/doc/conf.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/doc/index.rst +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/doc/make.bat +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/doc/nxswriter.rst +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/doc_html/AttrCanFail.html +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/doc_html/AttrCurrentFileId.html +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/doc_html/AttrErrors.html +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/doc_html/AttrFileName.html +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/doc_html/AttrJSONRecord.html +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/doc_html/AttrSkipAcquisition.html +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/doc_html/AttrStepsPerFile.html +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/doc_html/AttrXMLSettings.html +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/doc_html/Attributes.html +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/doc_html/ClassDescription.html +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/doc_html/CmdCloseEntry.html +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/doc_html/CmdCloseEntryAsynch.html +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/doc_html/CmdCloseFile.html +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/doc_html/CmdOpenEntry.html +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/doc_html/CmdOpenEntryAsynch.html +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/doc_html/CmdOpenFile.html +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/doc_html/CmdRecord.html +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/doc_html/CmdRecordAsynch.html +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/doc_html/CmdState.html +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/doc_html/CmdStatus.html +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/doc_html/Commands.html +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/doc_html/FullDocument.html +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/doc_html/Properties.html +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/doc_html/States.html +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/doc_html/TitleBanner.html +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/doc_html/index.html +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/man/NXSDataWriter.1 +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/man/nxsfromxml.1 +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/man/nxswriter.1 +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/nxsfromxml +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/ClientSource.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/DBaseSource.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/DataHolder.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/DataSourceFactory.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/DataSourcePool.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/DataSources.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/DecoderPool.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/EAttribute.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/EField.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/EGroup.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/ELink.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/EStrategy.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/Element.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/ElementThread.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/Errors.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/FElement.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/FetchNameHandler.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/H5Elements.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/InnerXMLParser.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/Metadata.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/NXSFromXML.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/NXSWriter.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/NexusXMLHandler.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/PyEvalSource.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/StreamSet.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/TangoDataWriter.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/TangoSource.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/ThreadPool.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/Types.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter/__init__.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter.egg-info/SOURCES.txt +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter.egg-info/dependency_links.txt +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter.egg-info/not-zip-safe +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/nxswriter.egg-info/top_level.txt +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/setup.cfg +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/Checkers.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/ClientFieldTagAsynchH5Cpp_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/ClientFieldTagAsynchH5PY_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/ClientFieldTagServerH5Cpp_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/ClientFieldTagServerH5PY_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/ClientFieldTagWriterH5Cpp_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/ClientFieldTagWriterH5PY_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/ClientSource_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/Converters_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/DBFieldTagAsynchH5Cpp_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/DBFieldTagAsynchH5PY_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/DBFieldTagServerH5Cpp_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/DBFieldTagServerH5PY_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/DBFieldTagWriterH5Cpp_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/DBFieldTagWriterH5PY_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/DBaseSource_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/DataHolder_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/DataSourceDecoders_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/DataSourceFactory_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/DataSourcePool_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/DataSource_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/DecoderPool_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/EAttributeH5Cpp_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/EAttributeH5PY_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/EDimH5Cpp_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/EDimH5PY_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/EDimensionsH5Cpp_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/EDimensionsH5PY_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/EDocH5Cpp_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/EDocH5PY_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/EFieldH5Cpp_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/EFieldH5PY_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/EFieldReshapeH5Cpp_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/EFieldReshapeH5PY_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/EFileH5Cpp_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/EFileH5PY_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/EGroupH5Cpp_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/EGroupH5PY_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/ELinkH5Cpp_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/ELinkH5PY_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/EStrategyH5Cpp_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/EStrategyH5PY_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/ESymbolH5Cpp_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/ESymbolH5PY_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/ElementH5Cpp_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/ElementH5PY_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/ElementThread_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/Element_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/Errors_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/FElementH5Cpp_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/FElementH5PY_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/FElementWithAttrH5Cpp_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/FElementWithAttrH5PY_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/FetchNameHandler_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/FileWriterH5CppH5PY_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/FileWriterH5Cpp_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/FileWriterH5PY_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/H5CppWriter_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/H5PYWriter_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/InnerXMLParser_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/MYSQLSource_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/NTP_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/NXSDataWriterH5Cpp_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/NXSDataWriterH5PY_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/NXSFromXMLH5Cpp_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/NXSFromXMLH5PY_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/NexusXMLHandlerH5Cpp_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/NexusXMLHandlerH5PY_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/ORACLESource_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/PGSQLSource_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/ProxyHelper.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/ProxyTools_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/PyEvalSource_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/PyEvalTangoSourceH5Cpp_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/PyEvalTangoSourceH5PY_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/ServerSetUp.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/SimpleServer.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/SimpleServerSetUp.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/StreamSet_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/TNObject_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/TangoClassID.txt +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/TangoDataWriterH5CppH5PY_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/TangoDataWriterH5Cpp_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/TangoDataWriterH5PY_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/TangoFieldTagAsynchH5Cpp_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/TangoFieldTagAsynchH5PY_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/TangoFieldTagServerH5Cpp_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/TangoFieldTagServerH5PY_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/TangoFieldTagWriterH5Cpp_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/TangoFieldTagWriterH5PY_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/TangoSource_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/TgDevice_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/TgGroup_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/TgMember_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/ThreadPool_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/TstDataSource.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/UINT32decoder_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/UTF8decoder_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/VDEOdecoder_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/XMLFieldTagAsynchH5Cpp_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/XMLFieldTagAsynchH5PY_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/XMLFieldTagServerH5Cpp_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/XMLFieldTagServerH5PY_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/XMLFieldTagWriterH5Cpp_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/XMLFieldTagWriterH5PY_test.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/__init__.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/__main__.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/main.py +0 -0
- {nxswriter-3.16.0 → nxswriter-3.17.0}/test/mydb.pgsql +0 -0
- {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,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,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
|
|
|
@@ -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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|