pye57 0.4.15__tar.gz → 0.4.17__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.
Potentially problematic release.
This version of pye57 might be problematic. Click here for more details.
- {pye57-0.4.15/src/pye57.egg-info → pye57-0.4.17}/PKG-INFO +21 -8
- {pye57-0.4.15 → pye57-0.4.17}/README.md +4 -4
- {pye57-0.4.15 → pye57-0.4.17}/setup.py +3 -2
- pye57-0.4.17/src/pye57/__version__.py +1 -0
- {pye57-0.4.15 → pye57-0.4.17}/src/pye57/e57.py +20 -4
- {pye57-0.4.15 → pye57-0.4.17}/src/pye57/libe57_wrapper.cpp +10 -5
- {pye57-0.4.15 → pye57-0.4.17/src/pye57.egg-info}/PKG-INFO +21 -8
- {pye57-0.4.15 → pye57-0.4.17}/tests/test_main.py +32 -0
- pye57-0.4.15/src/pye57/__version__.py +0 -1
- {pye57-0.4.15 → pye57-0.4.17}/LICENSE +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/MANIFEST.in +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/LICENSE-MIT.md +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/LICENSE.md +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/README.md +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/extern/CRCpp/LICENSE +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/extern/CRCpp/README.md +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/extern/CRCpp/inc/CRC.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/include/E57Exception.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/include/E57Format.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/include/E57SimpleData.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/include/E57SimpleReader.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/include/E57SimpleWriter.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/include/E57Version.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/ASTMVersion.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/BlobNode.cpp +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/BlobNodeImpl.cpp +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/BlobNodeImpl.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/CheckedFile.cpp +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/CheckedFile.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/Common.cpp +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/Common.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/CompressedVectorNode.cpp +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/CompressedVectorNodeImpl.cpp +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/CompressedVectorNodeImpl.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/CompressedVectorReader.cpp +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/CompressedVectorReaderImpl.cpp +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/CompressedVectorReaderImpl.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/CompressedVectorWriter.cpp +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/CompressedVectorWriterImpl.cpp +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/CompressedVectorWriterImpl.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/DecodeChannel.cpp +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/DecodeChannel.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/Decoder.cpp +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/Decoder.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/E57Exception.cpp +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/E57SimpleData.cpp +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/E57SimpleReader.cpp +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/E57SimpleWriter.cpp +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/E57Version.cpp +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/E57XmlParser.cpp +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/E57XmlParser.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/Encoder.cpp +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/Encoder.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/FloatNode.cpp +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/FloatNodeImpl.cpp +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/FloatNodeImpl.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/ImageFile.cpp +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/ImageFileImpl.cpp +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/ImageFileImpl.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/IntegerNode.cpp +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/IntegerNodeImpl.cpp +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/IntegerNodeImpl.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/Node.cpp +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/NodeImpl.cpp +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/NodeImpl.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/Packet.cpp +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/Packet.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/ReaderImpl.cpp +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/ReaderImpl.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/ScaledIntegerNode.cpp +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/ScaledIntegerNodeImpl.cpp +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/ScaledIntegerNodeImpl.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/SectionHeaders.cpp +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/SectionHeaders.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/SourceDestBuffer.cpp +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/SourceDestBufferImpl.cpp +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/SourceDestBufferImpl.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/StringFunctions.cpp +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/StringFunctions.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/StringNode.cpp +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/StringNodeImpl.cpp +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/StringNodeImpl.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/StructureNode.cpp +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/StructureNodeImpl.cpp +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/StructureNodeImpl.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/VectorNode.cpp +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/VectorNodeImpl.cpp +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/VectorNodeImpl.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/WriterImpl.cpp +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/src/WriterImpl.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/README.md +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/LICENSE +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/README.md +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googlemock/README.md +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googlemock/docs/README.md +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googlemock/include/gmock/gmock-actions.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googlemock/include/gmock/gmock-cardinalities.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googlemock/include/gmock/gmock-function-mocker.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googlemock/include/gmock/gmock-matchers.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googlemock/include/gmock/gmock-more-actions.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googlemock/include/gmock/gmock-more-matchers.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googlemock/include/gmock/gmock-nice-strict.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googlemock/include/gmock/gmock-spec-builders.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googlemock/include/gmock/gmock.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googlemock/include/gmock/internal/custom/README.md +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googlemock/include/gmock/internal/custom/gmock-generated-actions.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googlemock/include/gmock/internal/custom/gmock-matchers.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googlemock/include/gmock/internal/custom/gmock-port.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googlemock/include/gmock/internal/gmock-internal-utils.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googlemock/include/gmock/internal/gmock-port.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googlemock/include/gmock/internal/gmock-pp.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googlemock/test/gmock-matchers_test.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googlemock/test/gmock_link_test.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googletest/README.md +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googletest/docs/README.md +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googletest/include/gtest/gtest-assertion-result.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googletest/include/gtest/gtest-death-test.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googletest/include/gtest/gtest-matchers.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googletest/include/gtest/gtest-message.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googletest/include/gtest/gtest-param-test.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googletest/include/gtest/gtest-printers.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googletest/include/gtest/gtest-spi.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googletest/include/gtest/gtest-test-part.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googletest/include/gtest/gtest-typed-test.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googletest/include/gtest/gtest.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googletest/include/gtest/gtest_pred_impl.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googletest/include/gtest/gtest_prod.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googletest/include/gtest/internal/custom/README.md +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googletest/include/gtest/internal/custom/gtest-port.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googletest/include/gtest/internal/custom/gtest-printers.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googletest/include/gtest/internal/custom/gtest.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googletest/include/gtest/internal/gtest-death-test-internal.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googletest/include/gtest/internal/gtest-filepath.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googletest/include/gtest/internal/gtest-internal.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googletest/include/gtest/internal/gtest-param-util.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googletest/include/gtest/internal/gtest-port-arch.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googletest/include/gtest/internal/gtest-port.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googletest/include/gtest/internal/gtest-string.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googletest/include/gtest/internal/gtest-type-util.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googletest/samples/prime_tables.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googletest/samples/sample1.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googletest/samples/sample2.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googletest/samples/sample3-inl.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googletest/samples/sample4.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googletest/src/gtest-internal-inl.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googletest/test/googletest-param-test-test.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googletest/test/gtest-typed-test_test.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googletest/test/production.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/include/Helpers.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/include/RandomNum.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/include/TestData.h +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/src/RandomNum.cpp +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/src/TestData.cpp +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/src/main.cpp +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/src/test_SimpleData.cpp +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/src/test_SimpleReader.cpp +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/src/test_SimpleWriter.cpp +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/src/test_StringFunctions.cpp +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/pyproject.toml +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/setup.cfg +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/src/pye57/__init__.py +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/src/pye57/exception.py +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/src/pye57/scan_header.py +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/src/pye57/utils.py +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/src/pye57.egg-info/SOURCES.txt +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/src/pye57.egg-info/dependency_links.txt +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/src/pye57.egg-info/not-zip-safe +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/src/pye57.egg-info/requires.txt +0 -0
- {pye57-0.4.15 → pye57-0.4.17}/src/pye57.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: pye57
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.17
|
|
4
4
|
Summary: Python .e57 files reader/writer
|
|
5
5
|
Home-page: https://www.github.com/davidcaron/pye57
|
|
6
6
|
Author: David Caron
|
|
@@ -11,20 +11,33 @@ License: MIT
|
|
|
11
11
|
Classifier: License :: OSI Approved :: MIT License
|
|
12
12
|
Classifier: Programming Language :: Python
|
|
13
13
|
Classifier: Programming Language :: Python :: 3
|
|
14
|
-
Classifier: Programming Language :: Python :: 3.8
|
|
15
14
|
Classifier: Programming Language :: Python :: 3.9
|
|
16
15
|
Classifier: Programming Language :: Python :: 3.10
|
|
17
16
|
Classifier: Programming Language :: Python :: 3.11
|
|
18
17
|
Classifier: Programming Language :: Python :: 3.12
|
|
19
18
|
Classifier: Programming Language :: Python :: 3.13
|
|
20
19
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
21
|
-
Requires-Python: >=3.
|
|
20
|
+
Requires-Python: >=3.9
|
|
22
21
|
Description-Content-Type: text/markdown
|
|
23
22
|
License-File: LICENSE
|
|
24
23
|
Requires-Dist: numpy
|
|
25
24
|
Requires-Dist: pyquaternion
|
|
26
25
|
Provides-Extra: test
|
|
27
26
|
Requires-Dist: pytest; extra == "test"
|
|
27
|
+
Dynamic: author
|
|
28
|
+
Dynamic: author-email
|
|
29
|
+
Dynamic: classifier
|
|
30
|
+
Dynamic: description
|
|
31
|
+
Dynamic: description-content-type
|
|
32
|
+
Dynamic: home-page
|
|
33
|
+
Dynamic: license
|
|
34
|
+
Dynamic: license-file
|
|
35
|
+
Dynamic: maintainer
|
|
36
|
+
Dynamic: maintainer-email
|
|
37
|
+
Dynamic: provides-extra
|
|
38
|
+
Dynamic: requires-dist
|
|
39
|
+
Dynamic: requires-python
|
|
40
|
+
Dynamic: summary
|
|
28
41
|
|
|
29
42
|
|
|
30
43
|
# pye57
|
|
@@ -68,10 +81,10 @@ assert isinstance(data["columnIndex"], np.ndarray)
|
|
|
68
81
|
data_raw = e57.read_scan_raw(0)
|
|
69
82
|
|
|
70
83
|
# writing is also possible, but only using raw data for now
|
|
71
|
-
|
|
72
|
-
e57_write.write_scan_raw(data_raw)
|
|
73
|
-
# you can specify a header to copy information from
|
|
74
|
-
e57_write.write_scan_raw(data_raw, scan_header=e57.get_header(0))
|
|
84
|
+
with pye57.E57("e57_file_write.e57", mode='w') as e57_write:
|
|
85
|
+
e57_write.write_scan_raw(data_raw)
|
|
86
|
+
# you can specify a header to copy information from
|
|
87
|
+
e57_write.write_scan_raw(data_raw, scan_header=e57.get_header(0))
|
|
75
88
|
|
|
76
89
|
# the ScanHeader object wraps most of the scan information:
|
|
77
90
|
header = e57.get_header(0)
|
|
@@ -39,10 +39,10 @@ assert isinstance(data["columnIndex"], np.ndarray)
|
|
|
39
39
|
data_raw = e57.read_scan_raw(0)
|
|
40
40
|
|
|
41
41
|
# writing is also possible, but only using raw data for now
|
|
42
|
-
|
|
43
|
-
e57_write.write_scan_raw(data_raw)
|
|
44
|
-
# you can specify a header to copy information from
|
|
45
|
-
e57_write.write_scan_raw(data_raw, scan_header=e57.get_header(0))
|
|
42
|
+
with pye57.E57("e57_file_write.e57", mode='w') as e57_write:
|
|
43
|
+
e57_write.write_scan_raw(data_raw)
|
|
44
|
+
# you can specify a header to copy information from
|
|
45
|
+
e57_write.write_scan_raw(data_raw, scan_header=e57.get_header(0))
|
|
46
46
|
|
|
47
47
|
# the ScanHeader object wraps most of the scan information:
|
|
48
48
|
header = e57.get_header(0)
|
|
@@ -90,12 +90,14 @@ class BuildExt(build_ext):
|
|
|
90
90
|
opts.append("-DCRCPP_USE_CPP11")
|
|
91
91
|
opts.append("-DCRCPP_BRANCHLESS")
|
|
92
92
|
opts.append("-Wno-unused-variable")
|
|
93
|
+
opts.append("-DE57_ENABLE_DIAGNOSTIC_OUTPUT")
|
|
93
94
|
elif ct == "msvc":
|
|
94
95
|
opts.append(f'/DVERSION_INFO="{version}"')
|
|
95
96
|
opts.append(rf'/DREVISION_ID="\"{revision_id}\""')
|
|
96
97
|
opts.append("/DCRCPP_USE_CPP11")
|
|
97
98
|
opts.append("/DCRCPP_BRANCHLESS")
|
|
98
99
|
opts.append("/DWINDOWS")
|
|
100
|
+
opts.append("/DE57_ENABLE_DIAGNOSTIC_OUTPUT")
|
|
99
101
|
for ext in self.extensions:
|
|
100
102
|
ext.extra_compile_args = opts
|
|
101
103
|
|
|
@@ -132,7 +134,6 @@ setup(
|
|
|
132
134
|
"License :: OSI Approved :: MIT License",
|
|
133
135
|
"Programming Language :: Python",
|
|
134
136
|
"Programming Language :: Python :: 3",
|
|
135
|
-
"Programming Language :: Python :: 3.8",
|
|
136
137
|
"Programming Language :: Python :: 3.9",
|
|
137
138
|
"Programming Language :: Python :: 3.10",
|
|
138
139
|
"Programming Language :: Python :: 3.11",
|
|
@@ -142,5 +143,5 @@ setup(
|
|
|
142
143
|
],
|
|
143
144
|
cmdclass={"build_ext": BuildExt},
|
|
144
145
|
zip_safe=False,
|
|
145
|
-
python_requires=">=3.
|
|
146
|
+
python_requires=">=3.9",
|
|
146
147
|
)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.4.17"
|
|
@@ -110,6 +110,11 @@ class E57:
|
|
|
110
110
|
self.root.set("images2D", libe57.VectorNode(imf, True))
|
|
111
111
|
|
|
112
112
|
def make_buffer(self, field_name, capacity, do_conversion=True, do_scaling=True):
|
|
113
|
+
# now this exception should never get hit through read_scan or read_scan_raw
|
|
114
|
+
# for read_scan, the headers are constructed, so they should all be supported
|
|
115
|
+
# for read_scan_raw, it now filters out the unsupported headers
|
|
116
|
+
# however, if make_buffer or make_buffers gets called, an unsupported field name could be passed in directly
|
|
117
|
+
# if we don't want users calling them, maybe we could make them private, and this would be an assertion
|
|
113
118
|
if field_name not in SUPPORTED_POINT_FIELDS:
|
|
114
119
|
raise ValueError("Unsupported point field: %s" % field_name)
|
|
115
120
|
|
|
@@ -131,11 +136,22 @@ class E57:
|
|
|
131
136
|
buffers.append(b)
|
|
132
137
|
return data, buffers
|
|
133
138
|
|
|
134
|
-
def read_scan_raw(self, index) -> Dict:
|
|
139
|
+
def read_scan_raw(self, index, ignore_unsupported_fields=False) -> Dict:
|
|
135
140
|
header = self.get_header(index)
|
|
141
|
+
supported_point_fields = []
|
|
142
|
+
unsupported_point_fields = []
|
|
143
|
+
for field in header.point_fields:
|
|
144
|
+
if field in SUPPORTED_POINT_FIELDS:
|
|
145
|
+
supported_point_fields.append(field)
|
|
146
|
+
else:
|
|
147
|
+
unsupported_point_fields.append(field)
|
|
148
|
+
if unsupported_point_fields != [] and not ignore_unsupported_fields:
|
|
149
|
+
raise ValueError("Unsupported point fields: %s.\n"
|
|
150
|
+
"Consider using 'ignore_unsupported_fields' to skip them." % unsupported_point_fields)
|
|
151
|
+
# could it call make_buffers instead, it looks like the code's identical
|
|
136
152
|
data = {}
|
|
137
153
|
buffers = libe57.VectorSourceDestBuffer()
|
|
138
|
-
for field in
|
|
154
|
+
for field in supported_point_fields:
|
|
139
155
|
np_array, buffer = self.make_buffer(field, header.point_count)
|
|
140
156
|
data[field] = np_array
|
|
141
157
|
buffers.append(buffer)
|
|
@@ -376,9 +392,9 @@ class E57:
|
|
|
376
392
|
max_row = np.max(data["rowIndex"])
|
|
377
393
|
min_col = np.min(data["columnIndex"])
|
|
378
394
|
max_col = np.max(data["columnIndex"])
|
|
379
|
-
points_prototype.set("rowIndex", libe57.IntegerNode(self.image_file,
|
|
395
|
+
points_prototype.set("rowIndex", libe57.IntegerNode(self.image_file, min_row, min_row, max_row))
|
|
380
396
|
field_names.append("rowIndex")
|
|
381
|
-
points_prototype.set("columnIndex", libe57.IntegerNode(self.image_file,
|
|
397
|
+
points_prototype.set("columnIndex", libe57.IntegerNode(self.image_file, min_col, min_col, max_col))
|
|
382
398
|
field_names.append("columnIndex")
|
|
383
399
|
|
|
384
400
|
if "cartesianInvalidState" in data:
|
|
@@ -7,6 +7,8 @@
|
|
|
7
7
|
#include <E57Format.h>
|
|
8
8
|
#include <E57Version.h>
|
|
9
9
|
#include <ASTMVersion.h>
|
|
10
|
+
#include <sstream>
|
|
11
|
+
#include <string.h>
|
|
10
12
|
|
|
11
13
|
namespace py = pybind11;
|
|
12
14
|
using namespace pybind11::literals;
|
|
@@ -40,11 +42,14 @@ PYBIND11_MODULE(libe57, m) {
|
|
|
40
42
|
|
|
41
43
|
static py::exception<E57Exception> exc(m, "E57Exception");
|
|
42
44
|
py::register_exception_translator([](std::exception_ptr p) {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
45
|
+
try {
|
|
46
|
+
if (p) std::rethrow_exception(p);
|
|
47
|
+
} catch (const E57Exception &e) {
|
|
48
|
+
std::stringstream ss;
|
|
49
|
+
e.report(__FILE__, __LINE__, __FUNCTION__, ss);
|
|
50
|
+
std::string output = e.errorStr() + std::string("\n\n") + ss.str();
|
|
51
|
+
exc(output.c_str());
|
|
52
|
+
}
|
|
48
53
|
});
|
|
49
54
|
|
|
50
55
|
m.attr("E57_FORMAT_MAJOR") = E57_FORMAT_MAJOR;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: pye57
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.17
|
|
4
4
|
Summary: Python .e57 files reader/writer
|
|
5
5
|
Home-page: https://www.github.com/davidcaron/pye57
|
|
6
6
|
Author: David Caron
|
|
@@ -11,20 +11,33 @@ License: MIT
|
|
|
11
11
|
Classifier: License :: OSI Approved :: MIT License
|
|
12
12
|
Classifier: Programming Language :: Python
|
|
13
13
|
Classifier: Programming Language :: Python :: 3
|
|
14
|
-
Classifier: Programming Language :: Python :: 3.8
|
|
15
14
|
Classifier: Programming Language :: Python :: 3.9
|
|
16
15
|
Classifier: Programming Language :: Python :: 3.10
|
|
17
16
|
Classifier: Programming Language :: Python :: 3.11
|
|
18
17
|
Classifier: Programming Language :: Python :: 3.12
|
|
19
18
|
Classifier: Programming Language :: Python :: 3.13
|
|
20
19
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
21
|
-
Requires-Python: >=3.
|
|
20
|
+
Requires-Python: >=3.9
|
|
22
21
|
Description-Content-Type: text/markdown
|
|
23
22
|
License-File: LICENSE
|
|
24
23
|
Requires-Dist: numpy
|
|
25
24
|
Requires-Dist: pyquaternion
|
|
26
25
|
Provides-Extra: test
|
|
27
26
|
Requires-Dist: pytest; extra == "test"
|
|
27
|
+
Dynamic: author
|
|
28
|
+
Dynamic: author-email
|
|
29
|
+
Dynamic: classifier
|
|
30
|
+
Dynamic: description
|
|
31
|
+
Dynamic: description-content-type
|
|
32
|
+
Dynamic: home-page
|
|
33
|
+
Dynamic: license
|
|
34
|
+
Dynamic: license-file
|
|
35
|
+
Dynamic: maintainer
|
|
36
|
+
Dynamic: maintainer-email
|
|
37
|
+
Dynamic: provides-extra
|
|
38
|
+
Dynamic: requires-dist
|
|
39
|
+
Dynamic: requires-python
|
|
40
|
+
Dynamic: summary
|
|
28
41
|
|
|
29
42
|
|
|
30
43
|
# pye57
|
|
@@ -68,10 +81,10 @@ assert isinstance(data["columnIndex"], np.ndarray)
|
|
|
68
81
|
data_raw = e57.read_scan_raw(0)
|
|
69
82
|
|
|
70
83
|
# writing is also possible, but only using raw data for now
|
|
71
|
-
|
|
72
|
-
e57_write.write_scan_raw(data_raw)
|
|
73
|
-
# you can specify a header to copy information from
|
|
74
|
-
e57_write.write_scan_raw(data_raw, scan_header=e57.get_header(0))
|
|
84
|
+
with pye57.E57("e57_file_write.e57", mode='w') as e57_write:
|
|
85
|
+
e57_write.write_scan_raw(data_raw)
|
|
86
|
+
# you can specify a header to copy information from
|
|
87
|
+
e57_write.write_scan_raw(data_raw, scan_header=e57.get_header(0))
|
|
75
88
|
|
|
76
89
|
# the ScanHeader object wraps most of the scan information:
|
|
77
90
|
header = e57.get_header(0)
|
|
@@ -49,6 +49,10 @@ def e57_with_data_and_images_path():
|
|
|
49
49
|
# From http://www.libe57.org/data.html
|
|
50
50
|
return sample_data("pumpAVisualReferenceImage.e57")
|
|
51
51
|
|
|
52
|
+
@pytest.fixture
|
|
53
|
+
def e57_with_normals_path():
|
|
54
|
+
# created using Python's open3d and CloudCompare
|
|
55
|
+
return sample_data("testWithNormals.e57")
|
|
52
56
|
|
|
53
57
|
@pytest.fixture
|
|
54
58
|
def temp_e57_write(request):
|
|
@@ -160,6 +164,13 @@ def test_unsupported_point_field(temp_e57_write):
|
|
|
160
164
|
f.write_scan_raw(data)
|
|
161
165
|
|
|
162
166
|
|
|
167
|
+
def test_ignore_unsupported_fields(e57_with_normals_path):
|
|
168
|
+
e57 = pye57.E57(e57_with_normals_path)
|
|
169
|
+
with pytest.raises(ValueError):
|
|
170
|
+
e57.read_scan_raw(0)
|
|
171
|
+
e57.read_scan_raw(0, ignore_unsupported_fields=True)
|
|
172
|
+
|
|
173
|
+
|
|
163
174
|
def test_source_dest_buffers_raises(e57_path):
|
|
164
175
|
f = libe57.ImageFile(e57_path, "r")
|
|
165
176
|
capacity = 1000
|
|
@@ -419,3 +430,24 @@ def test_clone_e57(e57_with_data_and_images_path, temp_e57_write):
|
|
|
419
430
|
|
|
420
431
|
in_image.close()
|
|
421
432
|
out_image.close()
|
|
433
|
+
|
|
434
|
+
|
|
435
|
+
def test_write_e57_with_rowindex_and_columnindex_omiting_low_values(temp_e57_write):
|
|
436
|
+
|
|
437
|
+
with pye57.E57(temp_e57_write, mode='w') as e57:
|
|
438
|
+
# set some test points with missing row and column 0 (so np.min of it in write_scan_raw is larger than 0)
|
|
439
|
+
data_raw = {}
|
|
440
|
+
data_raw["cartesianX"] = np.array([0, 1, 2, 3]).astype(float)
|
|
441
|
+
data_raw["cartesianY"] = np.array([0, 1, 2, 3]).astype(float)
|
|
442
|
+
data_raw["cartesianZ"] = np.array([0, 1, 2, 3]).astype(float)
|
|
443
|
+
data_raw["rowIndex"] = np.array([1, 1, 2, 3])
|
|
444
|
+
data_raw["columnIndex"] = np.array([1, 1, 2, 3])
|
|
445
|
+
|
|
446
|
+
try:
|
|
447
|
+
# the next line will throw without the suggested fix
|
|
448
|
+
e57.write_scan_raw(data_raw, name='test_output_with_row_and_column')
|
|
449
|
+
except pye57.libe57.E57Exception as ex:
|
|
450
|
+
print(ex)
|
|
451
|
+
assert False
|
|
452
|
+
|
|
453
|
+
assert os.path.isfile(temp_e57_write)
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.4.15"
|
|
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
|
|
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
|
{pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googlemock/include/gmock/gmock.h
RENAMED
|
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
|
{pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googlemock/test/gmock_link_test.h
RENAMED
|
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
|
{pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googletest/include/gtest/gtest.h
RENAMED
|
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
|
{pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googletest/samples/prime_tables.h
RENAMED
|
File without changes
|
{pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googletest/samples/sample1.h
RENAMED
|
File without changes
|
{pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googletest/samples/sample2.h
RENAMED
|
File without changes
|
{pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googletest/samples/sample3-inl.h
RENAMED
|
File without changes
|
{pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googletest/samples/sample4.h
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pye57-0.4.15 → pye57-0.4.17}/libE57Format/test/extern/googletest/googletest/test/production.h
RENAMED
|
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
|