pye57 0.4.16__tar.gz → 0.4.18__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.16/src/pye57.egg-info → pye57-0.4.18}/PKG-INFO +20 -6
- {pye57-0.4.16 → pye57-0.4.18}/README.md +4 -4
- pye57-0.4.18/src/pye57/__version__.py +1 -0
- {pye57-0.4.16 → pye57-0.4.18}/src/pye57/e57.py +18 -2
- {pye57-0.4.16 → pye57-0.4.18}/src/pye57/scan_header.py +11 -3
- {pye57-0.4.16 → pye57-0.4.18/src/pye57.egg-info}/PKG-INFO +20 -6
- {pye57-0.4.16 → pye57-0.4.18}/tests/test_main.py +31 -0
- pye57-0.4.16/src/pye57/__version__.py +0 -1
- {pye57-0.4.16 → pye57-0.4.18}/LICENSE +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/MANIFEST.in +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/LICENSE-MIT.md +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/LICENSE.md +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/README.md +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/extern/CRCpp/LICENSE +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/extern/CRCpp/README.md +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/extern/CRCpp/inc/CRC.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/include/E57Exception.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/include/E57Format.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/include/E57SimpleData.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/include/E57SimpleReader.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/include/E57SimpleWriter.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/include/E57Version.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/ASTMVersion.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/BlobNode.cpp +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/BlobNodeImpl.cpp +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/BlobNodeImpl.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/CheckedFile.cpp +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/CheckedFile.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/Common.cpp +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/Common.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/CompressedVectorNode.cpp +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/CompressedVectorNodeImpl.cpp +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/CompressedVectorNodeImpl.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/CompressedVectorReader.cpp +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/CompressedVectorReaderImpl.cpp +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/CompressedVectorReaderImpl.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/CompressedVectorWriter.cpp +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/CompressedVectorWriterImpl.cpp +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/CompressedVectorWriterImpl.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/DecodeChannel.cpp +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/DecodeChannel.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/Decoder.cpp +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/Decoder.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/E57Exception.cpp +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/E57SimpleData.cpp +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/E57SimpleReader.cpp +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/E57SimpleWriter.cpp +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/E57Version.cpp +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/E57XmlParser.cpp +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/E57XmlParser.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/Encoder.cpp +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/Encoder.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/FloatNode.cpp +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/FloatNodeImpl.cpp +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/FloatNodeImpl.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/ImageFile.cpp +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/ImageFileImpl.cpp +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/ImageFileImpl.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/IntegerNode.cpp +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/IntegerNodeImpl.cpp +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/IntegerNodeImpl.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/Node.cpp +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/NodeImpl.cpp +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/NodeImpl.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/Packet.cpp +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/Packet.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/ReaderImpl.cpp +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/ReaderImpl.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/ScaledIntegerNode.cpp +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/ScaledIntegerNodeImpl.cpp +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/ScaledIntegerNodeImpl.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/SectionHeaders.cpp +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/SectionHeaders.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/SourceDestBuffer.cpp +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/SourceDestBufferImpl.cpp +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/SourceDestBufferImpl.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/StringFunctions.cpp +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/StringFunctions.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/StringNode.cpp +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/StringNodeImpl.cpp +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/StringNodeImpl.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/StructureNode.cpp +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/StructureNodeImpl.cpp +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/StructureNodeImpl.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/VectorNode.cpp +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/VectorNodeImpl.cpp +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/VectorNodeImpl.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/WriterImpl.cpp +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/src/WriterImpl.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/README.md +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/LICENSE +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/README.md +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googlemock/README.md +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googlemock/docs/README.md +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googlemock/include/gmock/gmock-actions.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googlemock/include/gmock/gmock-cardinalities.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googlemock/include/gmock/gmock-function-mocker.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googlemock/include/gmock/gmock-matchers.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googlemock/include/gmock/gmock-more-actions.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googlemock/include/gmock/gmock-more-matchers.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googlemock/include/gmock/gmock-nice-strict.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googlemock/include/gmock/gmock-spec-builders.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googlemock/include/gmock/gmock.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googlemock/include/gmock/internal/custom/README.md +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googlemock/include/gmock/internal/custom/gmock-generated-actions.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googlemock/include/gmock/internal/custom/gmock-matchers.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googlemock/include/gmock/internal/custom/gmock-port.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googlemock/include/gmock/internal/gmock-internal-utils.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googlemock/include/gmock/internal/gmock-port.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googlemock/include/gmock/internal/gmock-pp.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googlemock/test/gmock-matchers_test.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googlemock/test/gmock_link_test.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googletest/README.md +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googletest/docs/README.md +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googletest/include/gtest/gtest-assertion-result.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googletest/include/gtest/gtest-death-test.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googletest/include/gtest/gtest-matchers.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googletest/include/gtest/gtest-message.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googletest/include/gtest/gtest-param-test.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googletest/include/gtest/gtest-printers.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googletest/include/gtest/gtest-spi.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googletest/include/gtest/gtest-test-part.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googletest/include/gtest/gtest-typed-test.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googletest/include/gtest/gtest.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googletest/include/gtest/gtest_pred_impl.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googletest/include/gtest/gtest_prod.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googletest/include/gtest/internal/custom/README.md +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googletest/include/gtest/internal/custom/gtest-port.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googletest/include/gtest/internal/custom/gtest-printers.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googletest/include/gtest/internal/custom/gtest.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googletest/include/gtest/internal/gtest-death-test-internal.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googletest/include/gtest/internal/gtest-filepath.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googletest/include/gtest/internal/gtest-internal.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googletest/include/gtest/internal/gtest-param-util.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googletest/include/gtest/internal/gtest-port-arch.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googletest/include/gtest/internal/gtest-port.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googletest/include/gtest/internal/gtest-string.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googletest/include/gtest/internal/gtest-type-util.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googletest/samples/prime_tables.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googletest/samples/sample1.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googletest/samples/sample2.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googletest/samples/sample3-inl.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googletest/samples/sample4.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googletest/src/gtest-internal-inl.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googletest/test/googletest-param-test-test.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googletest/test/gtest-typed-test_test.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googletest/test/production.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/include/Helpers.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/include/RandomNum.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/include/TestData.h +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/src/RandomNum.cpp +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/src/TestData.cpp +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/src/main.cpp +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/src/test_SimpleData.cpp +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/src/test_SimpleReader.cpp +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/src/test_SimpleWriter.cpp +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/src/test_StringFunctions.cpp +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/pyproject.toml +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/setup.cfg +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/setup.py +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/src/pye57/__init__.py +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/src/pye57/exception.py +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/src/pye57/libe57_wrapper.cpp +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/src/pye57/utils.py +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/src/pye57.egg-info/SOURCES.txt +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/src/pye57.egg-info/dependency_links.txt +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/src/pye57.egg-info/not-zip-safe +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/src/pye57.egg-info/requires.txt +0 -0
- {pye57-0.4.16 → pye57-0.4.18}/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.18
|
|
4
4
|
Summary: Python .e57 files reader/writer
|
|
5
5
|
Home-page: https://www.github.com/davidcaron/pye57
|
|
6
6
|
Author: David Caron
|
|
@@ -24,6 +24,20 @@ Requires-Dist: numpy
|
|
|
24
24
|
Requires-Dist: pyquaternion
|
|
25
25
|
Provides-Extra: test
|
|
26
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
|
|
27
41
|
|
|
28
42
|
|
|
29
43
|
# pye57
|
|
@@ -67,10 +81,10 @@ assert isinstance(data["columnIndex"], np.ndarray)
|
|
|
67
81
|
data_raw = e57.read_scan_raw(0)
|
|
68
82
|
|
|
69
83
|
# writing is also possible, but only using raw data for now
|
|
70
|
-
|
|
71
|
-
e57_write.write_scan_raw(data_raw)
|
|
72
|
-
# you can specify a header to copy information from
|
|
73
|
-
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))
|
|
74
88
|
|
|
75
89
|
# the ScanHeader object wraps most of the scan information:
|
|
76
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)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.4.18"
|
|
@@ -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)
|
|
@@ -28,7 +28,11 @@ class ScanHeader:
|
|
|
28
28
|
|
|
29
29
|
@property
|
|
30
30
|
def rotation_matrix(self) -> np.array:
|
|
31
|
-
|
|
31
|
+
try:
|
|
32
|
+
rotation = self.node["pose"]["rotation"]
|
|
33
|
+
q = Quaternion([e.value() for e in rotation])
|
|
34
|
+
except libe57.E57Exception:
|
|
35
|
+
q = Quaternion()
|
|
32
36
|
return q.rotation_matrix
|
|
33
37
|
|
|
34
38
|
@property
|
|
@@ -36,13 +40,17 @@ class ScanHeader:
|
|
|
36
40
|
try:
|
|
37
41
|
rotation = self.node["pose"]["rotation"]
|
|
38
42
|
q = Quaternion([e.value() for e in rotation])
|
|
39
|
-
except
|
|
43
|
+
except libe57.E57Exception:
|
|
40
44
|
q = Quaternion()
|
|
41
45
|
return q.elements
|
|
42
46
|
|
|
43
47
|
@property
|
|
44
48
|
def translation(self):
|
|
45
|
-
|
|
49
|
+
try:
|
|
50
|
+
translation_values = [e.value() for e in self.node["pose"]["translation"]]
|
|
51
|
+
except libe57.E57Exception:
|
|
52
|
+
translation_values = [0] * 3
|
|
53
|
+
return np.array(translation_values)
|
|
46
54
|
|
|
47
55
|
def pretty_print(self, node=None, indent=""):
|
|
48
56
|
if node is None:
|
|
@@ -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.18
|
|
4
4
|
Summary: Python .e57 files reader/writer
|
|
5
5
|
Home-page: https://www.github.com/davidcaron/pye57
|
|
6
6
|
Author: David Caron
|
|
@@ -24,6 +24,20 @@ Requires-Dist: numpy
|
|
|
24
24
|
Requires-Dist: pyquaternion
|
|
25
25
|
Provides-Extra: test
|
|
26
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
|
|
27
41
|
|
|
28
42
|
|
|
29
43
|
# pye57
|
|
@@ -67,10 +81,10 @@ assert isinstance(data["columnIndex"], np.ndarray)
|
|
|
67
81
|
data_raw = e57.read_scan_raw(0)
|
|
68
82
|
|
|
69
83
|
# writing is also possible, but only using raw data for now
|
|
70
|
-
|
|
71
|
-
e57_write.write_scan_raw(data_raw)
|
|
72
|
-
# you can specify a header to copy information from
|
|
73
|
-
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))
|
|
74
88
|
|
|
75
89
|
# the ScanHeader object wraps most of the scan information:
|
|
76
90
|
header = e57.get_header(0)
|
|
@@ -49,6 +49,16 @@ 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")
|
|
56
|
+
|
|
57
|
+
@pytest.fixture
|
|
58
|
+
def e57_translation_without_rotation_path():
|
|
59
|
+
# this e57 was generated using write_scan_raw
|
|
60
|
+
# however, the line to set the rotation was temporarily commented out
|
|
61
|
+
return sample_data("translationWithoutRotation.e57")
|
|
52
62
|
|
|
53
63
|
@pytest.fixture
|
|
54
64
|
def temp_e57_write(request):
|
|
@@ -160,6 +170,13 @@ def test_unsupported_point_field(temp_e57_write):
|
|
|
160
170
|
f.write_scan_raw(data)
|
|
161
171
|
|
|
162
172
|
|
|
173
|
+
def test_ignore_unsupported_fields(e57_with_normals_path):
|
|
174
|
+
e57 = pye57.E57(e57_with_normals_path)
|
|
175
|
+
with pytest.raises(ValueError):
|
|
176
|
+
e57.read_scan_raw(0)
|
|
177
|
+
e57.read_scan_raw(0, ignore_unsupported_fields=True)
|
|
178
|
+
|
|
179
|
+
|
|
163
180
|
def test_source_dest_buffers_raises(e57_path):
|
|
164
181
|
f = libe57.ImageFile(e57_path, "r")
|
|
165
182
|
capacity = 1000
|
|
@@ -312,6 +329,20 @@ def test_scan_position(e57_path):
|
|
|
312
329
|
e57 = pye57.E57(e57_path)
|
|
313
330
|
assert np.allclose(e57.scan_position(3), np.array([[3.01323456e+05, 5.04260184e+06, 1.56040279e+01]]))
|
|
314
331
|
|
|
332
|
+
def test_translation_without_rotation(e57_translation_without_rotation_path):
|
|
333
|
+
import numpy as np
|
|
334
|
+
e57 = pye57.E57(e57_translation_without_rotation_path)
|
|
335
|
+
header = e57.get_header(0)
|
|
336
|
+
# translation is defined but not rotation:
|
|
337
|
+
assert header["pose"].isDefined("translation")
|
|
338
|
+
assert not header["pose"].isDefined("rotation")
|
|
339
|
+
# an arbitrary translation was defined in the e57:
|
|
340
|
+
assert np.array_equal(header.translation, np.array([4,5,6]))
|
|
341
|
+
# when rotation is not defined, the identity is used:
|
|
342
|
+
assert np.array_equal(header.rotation, np.array([1,0,0,0]))
|
|
343
|
+
assert np.array_equal(header.rotation_matrix, np.eye(3))
|
|
344
|
+
# the scan can be read when translation is defined but not rotation:
|
|
345
|
+
e57.read_scan(0, ignore_missing_fields=True)
|
|
315
346
|
|
|
316
347
|
BUFFER_TYPES = {
|
|
317
348
|
libe57.FloatNode: 'd',
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.4.16"
|
|
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.16 → pye57-0.4.18}/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.16 → pye57-0.4.18}/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.16 → pye57-0.4.18}/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.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googletest/samples/prime_tables.h
RENAMED
|
File without changes
|
{pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googletest/samples/sample1.h
RENAMED
|
File without changes
|
{pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googletest/samples/sample2.h
RENAMED
|
File without changes
|
{pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googletest/samples/sample3-inl.h
RENAMED
|
File without changes
|
{pye57-0.4.16 → pye57-0.4.18}/libE57Format/test/extern/googletest/googletest/samples/sample4.h
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pye57-0.4.16 → pye57-0.4.18}/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
|
|
File without changes
|