From ae2cad06a1b748078fbfb4d09add20174f7e5c85 Mon Sep 17 00:00:00 2001 From: John Hurliman Date: Thu, 16 Feb 2023 14:55:55 -0800 Subject: [PATCH] Add image_example.py, use foxglove-schemas-protobuf package (#814) --- .github/workflows/ci.yml | 6 +- .github/workflows/pages.yml | 4 +- .vscode/settings.json | 8 +- python/Makefile | 1 + python/Pipfile | 1 + python/Pipfile.lock | 647 +++++++++++------- .../foxglove/PackedElementField_pb2.py | 37 - .../protobuf/foxglove/PointCloud_pb2.py | 37 - python/examples/protobuf/foxglove/Pose_pb2.py | 36 - .../protobuf/foxglove/Quaternion_pb2.py | 34 - .../examples/protobuf/foxglove/Vector2_pb2.py | 34 - .../examples/protobuf/foxglove/Vector3_pb2.py | 34 - python/examples/protobuf/foxglove/__init__.py | 0 python/examples/protobuf/image_example.py | 115 ++++ .../examples/protobuf/point_cloud_example.py | 22 +- .../proto/foxglove/PackedElementField.proto | 37 - .../protobuf/proto/foxglove/PointCloud.proto | 30 - .../protobuf/proto/foxglove/Pose.proto | 17 - .../protobuf/proto/foxglove/Quaternion.proto | 20 - .../protobuf/proto/foxglove/Vector2.proto | 14 - .../protobuf/proto/foxglove/Vector3.proto | 17 - python/mcap-protobuf-support/README.md | 2 +- .../mcap_protobuf/reader.py | 2 +- .../mcap_protobuf/writer.py | 2 +- python/mcap-ros2-support/mcap_ros2/reader.py | 1 - 25 files changed, 521 insertions(+), 637 deletions(-) delete mode 100644 python/examples/protobuf/foxglove/PackedElementField_pb2.py delete mode 100644 python/examples/protobuf/foxglove/PointCloud_pb2.py delete mode 100644 python/examples/protobuf/foxglove/Pose_pb2.py delete mode 100644 python/examples/protobuf/foxglove/Quaternion_pb2.py delete mode 100644 python/examples/protobuf/foxglove/Vector2_pb2.py delete mode 100644 python/examples/protobuf/foxglove/Vector3_pb2.py delete mode 100644 python/examples/protobuf/foxglove/__init__.py create mode 100644 python/examples/protobuf/image_example.py delete mode 100644 python/examples/protobuf/proto/foxglove/PackedElementField.proto delete mode 100644 python/examples/protobuf/proto/foxglove/PointCloud.proto delete mode 100644 python/examples/protobuf/proto/foxglove/Pose.proto delete mode 100644 python/examples/protobuf/proto/foxglove/Quaternion.proto delete mode 100644 python/examples/protobuf/proto/foxglove/Vector2.proto delete mode 100644 python/examples/protobuf/proto/foxglove/Vector3.proto diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9169cb0969..871298f007 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -51,8 +51,6 @@ jobs: with: path: ~/.conan/data key: ${{ runner.os }}-${{ hashFiles('cpp/**/conanfile.py') }} - - uses: satackey/action-docker-layer-caching@v0.0.11 - continue-on-error: true - run: cd cpp && make ci - run: yarn install --frozen-lockfile - run: yarn test:conformance:generate-inputs --verify @@ -260,9 +258,7 @@ jobs: - uses: actions/setup-python@v4 with: python-version: 3.7 - - uses: satackey/action-docker-layer-caching@v0.0.11 - continue-on-error: true - - run: pip install pipenv==2022.7.24 + - run: pip install pipenv==2023.2.4 - run: make lint - run: make test - run: make examples diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml index e3d29f288a..95cb265655 100644 --- a/.github/workflows/pages.yml +++ b/.github/workflows/pages.yml @@ -19,7 +19,7 @@ jobs: with: python-version: 3.7 - name: Install pipenv - run: pip install pipenv==2022.7.24 + run: pip install pipenv==2023.2.4 - name: Install dependencies run: pipenv install --deploy @@ -39,8 +39,6 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - uses: satackey/action-docker-layer-caching@v0.0.11 - continue-on-error: true - run: mkdir __docs__ - name: Generate C++ documentation diff --git a/.vscode/settings.json b/.vscode/settings.json index 54071a5c9f..4e56bcc568 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -29,16 +29,12 @@ ], "python.analysis.extraPaths": [ "./python/mcap", + "./python/mcap-protobuf-support", "./python/mcap-ros1-support", "./python/mcap-ros2-support" ], - "gopls": { - "build.experimentalWorkspaceModule": true - }, - // https://github.com/microsoft/vscode-cpptools/issues/722 "C_Cpp.autoAddFileAssociations": false, - "C_Cpp.default.cppStandard": "c++17", - "lldb.library": "/Library/Developer/CommandLineTools/Library/PrivateFrameworks/LLDB.framework" + "C_Cpp.default.cppStandard": "c++17" } diff --git a/python/Makefile b/python/Makefile index ca4b186d1c..0a4d9417f2 100644 --- a/python/Makefile +++ b/python/Makefile @@ -24,6 +24,7 @@ examples: pipenv pipenv run python examples/raw/writer.py example_mcaps/raw.mcap pipenv run python examples/raw/reader.py example_mcaps/raw.mcap cd examples/protobuf && pipenv run python writer.py $(CURDIR)/example_mcaps/protobuf.mcap + cd examples/protobuf && pipenv run python image_example.py $(CURDIR)/example_mcaps/image.mcap cd examples/protobuf && pipenv run python point_cloud_example.py $(CURDIR)/example_mcaps/point_cloud.mcap cd examples/protobuf && pipenv run python reader.py $(CURDIR)/example_mcaps/protobuf.mcap cd examples/protobuf && pipenv run python reader.py $(CURDIR)/example_mcaps/point_cloud.mcap diff --git a/python/Pipfile b/python/Pipfile index b4d5212ad8..2ba1d46a09 100644 --- a/python/Pipfile +++ b/python/Pipfile @@ -12,6 +12,7 @@ name = "ros" lz4 = "*" zstandard = "*" protobuf = "*" +foxglove-schemas-protobuf = "*" mcap = { editable = true, path = "mcap" } mcap-protobuf-support = { editable = true, path = "mcap-protobuf-support" } mcap-ros1-support = { editable = true, path = "mcap-ros1-support" } diff --git a/python/Pipfile.lock b/python/Pipfile.lock index d5fdcdc4a1..a216386e30 100644 --- a/python/Pipfile.lock +++ b/python/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "07a99e587e7386f1659016eb3b7238396f23da3571a80bda4494bb58912877e6" + "sha256": "cbbc099970a01149b15e3debd97a0170a3d2d0e09ccffd908b6e1f1a2b5a20b9" }, "pipfile-spec": 6, "requires": { @@ -21,32 +21,54 @@ ] }, "default": { + "foxglove-schemas-protobuf": { + "hashes": [ + "sha256:1336e3804129174a72abc5343414b1e3db0ae84bb46acb2e6177e862e4bfe1f8", + "sha256:f5db262b9ef8b3f469e25263f34fe624c2b2f5965e207485fddc40ee9faa166a" + ], + "index": "pypi", + "version": "==0.0.3" + }, "lz4": { "hashes": [ - "sha256:083b7172c2938412ae37c3a090250bfdd9e4a6e855442594f86c3608ed12729b", - "sha256:154e6e9f58a7bafc4d2a1395160305b78fc82fa708bfa58cf0ad977c443d1f8f", - "sha256:1bd56282f6993e013ccf7f6edf1530c2a13d1662741e2be072349c7f70bc0682", - "sha256:1ed9a1875dc2a489f3b665d0211984689d0e76585e55650b044a64dbd2d22992", - "sha256:345608de23b4d68fbdef373f1e53d6c5abd99a062d4ff922e3350f47775ab123", - "sha256:35e6caced0229b90151d31d9cf1eaa541e597f8021bf5b70ff9e6374e3e43b23", - "sha256:3881573c3db902db370e072eb64b40c7c8289b94b2a731e051858cc198f890e8", - "sha256:3fa0f000d8ce39e643e9e5c49fc4d1985156ffb177e3123a0f22551f5864841b", - "sha256:439898dd4176a724243002003c3f733eb6ce48a5988175f54c8560e0b100b7a6", - "sha256:4cfa82f26b4f1835c797bd70e5ce20d5f1ee897b9a0c53e62d607f9029f521ce", - "sha256:56ea660097fec87f0c6746146b316775037f8dd886a4c5915360e5b32b7112d0", - "sha256:5fe9db7627674875e4279c2ed50b1e38fb91ec3093347f871ed996e58edbb488", - "sha256:61dbcca64e8e1655e06b588356c4b2515bccc1d7e84065f858a685abd96f0cf2", - "sha256:6f3b3670f52f0871885258bcbc746f483760434336f0bc5581f161cc5d4b0c9a", - "sha256:9d141719d3cbb7933809642a61b68b8f595ddf85657016521756ddcf826b85cd", - "sha256:a8e02c2477bd704f43113ac8dd966c361187383591388818d74e1b73e4674759", - "sha256:d2b18a6d6d9071c03dbf9e30bbe22e4476f24f1a4d73b1e975605ad3ce725e6c", - "sha256:ea2c2182a5b0ad03f33ac09db0925a1738a1d65751a3e058110bd900c643d359", - "sha256:ed86ab22bfe1f4cd4fc983704134a8fdf746c1121a398f8f14cbd014c1a5b0ae", - "sha256:ee73357412c5505f6ba0ea61ff71455e2e4c1e04d8e60f17f3cd937261d773fa", - "sha256:fba1730cd2327a9d013192a9878714cc82f4877d2ada556222d03ea6428a80ed" + "sha256:0ca83a623c449295bafad745dcd399cea4c55b16b13ed8cfea30963b004016c9", + "sha256:0f5614d8229b33d4a97cb527db2a1ac81308c6e796e7bdb5d1309127289f69d5", + "sha256:1c4c100d99eed7c08d4e8852dd11e7d1ec47a3340f49e3a96f8dfbba17ffb300", + "sha256:1f25eb322eeb24068bb7647cae2b0732b71e5c639e4e4026db57618dcd8279f0", + "sha256:200d05777d61ba1ff8d29cb51c534a162ea0b4fe6d3c28be3571a0a48ff36080", + "sha256:31d72731c4ac6ebdce57cd9a5cabe0aecba229c4f31ba3e2c64ae52eee3fdb1c", + "sha256:3a85b430138882f82f354135b98c320dafb96fc8fe4656573d95ab05de9eb092", + "sha256:4931ab28a0d1c133104613e74eec1b8bb1f52403faabe4f47f93008785c0b929", + "sha256:4caedeb19e3ede6c7a178968b800f910db6503cb4cb1e9cc9221157572139b49", + "sha256:65d5c93f8badacfa0456b660285e394e65023ef8071142e0dcbd4762166e1be0", + "sha256:6b50f096a6a25f3b2edca05aa626ce39979d63c3b160687c8c6d50ac3943d0ba", + "sha256:7211dc8f636ca625abc3d4fb9ab74e5444b92df4f8d58ec83c8868a2b0ff643d", + "sha256:7a9eec24ec7d8c99aab54de91b4a5a149559ed5b3097cf30249b665689b3d402", + "sha256:7c2df117def1589fba1327dceee51c5c2176a2b5a7040b45e84185ce0c08b6a3", + "sha256:7e2dc1bd88b60fa09b9b37f08553f45dc2b770c52a5996ea52b2b40f25445676", + "sha256:83903fe6db92db0be101acedc677aa41a490b561567fe1b3fe68695b2110326c", + "sha256:83acfacab3a1a7ab9694333bcb7950fbeb0be21660d236fd09c8337a50817897", + "sha256:86480f14a188c37cb1416cdabacfb4e42f7a5eab20a737dac9c4b1c227f3b822", + "sha256:867664d9ca9bdfce840ac96d46cd8838c9ae891e859eb98ce82fcdf0e103a947", + "sha256:8df16c9a2377bdc01e01e6de5a6e4bbc66ddf007a6b045688e285d7d9d61d1c9", + "sha256:8f00a9ba98f6364cadda366ae6469b7b3568c0cced27e16a47ddf6b774169270", + "sha256:926b26db87ec8822cf1870efc3d04d06062730ec3279bbbd33ba47a6c0a5c673", + "sha256:a6a46889325fd60b8a6b62ffc61588ec500a1883db32cddee9903edfba0b7584", + "sha256:a98b61e504fb69f99117b188e60b71e3c94469295571492a6468c1acd63c37ba", + "sha256:ad38dc6a7eea6f6b8b642aaa0683253288b0460b70cab3216838747163fb774d", + "sha256:b10b77dc2e6b1daa2f11e241141ab8285c42b4ed13a8642495620416279cc5b2", + "sha256:d5ea0e788dc7e2311989b78cae7accf75a580827b4d96bbaf06c7e5a03989bd5", + "sha256:e05afefc4529e97c08e65ef92432e5f5225c0bb21ad89dee1e06a882f91d7f5e", + "sha256:e1431d84a9cfb23e6773e72078ce8e65cad6745816d4cbf9ae67da5ea419acda", + "sha256:ec6755cacf83f0c5588d28abb40a1ac1643f2ff2115481089264c7630236618a", + "sha256:edc2fb3463d5d9338ccf13eb512aab61937be50aa70734bcf873f2f493801d3b", + "sha256:edd8987d8415b5dad25e797043936d91535017237f72fa456601be1479386c92", + "sha256:edda4fb109439b7f3f58ed6bede59694bc631c4b69c041112b1b7dc727fffb23", + "sha256:f571eab7fec554d3b1db0d666bdc2ad85c81f4b8cb08906c4c59a8cad75e6e22", + "sha256:f7c50542b4ddceb74ab4f8b3435327a0861f06257ca501d59067a6a482535a77" ], "index": "pypi", - "version": "==4.0.2" + "version": "==4.3.2" }, "mcap": { "editable": true, @@ -66,151 +88,246 @@ }, "protobuf": { "hashes": [ - "sha256:3ec85328a35a16463c6f419dbce3c0fc42b3e904d966f17f48bae39597c7a543", - "sha256:58b81358ec6c0b5d50df761460ae2db58405c063fd415e1101209221a0a810e1", - "sha256:71d9dba03ed3432c878a801e2ea51e034b0ea01cf3a4344fb60166cb5f6c8757", - "sha256:8066322588d4b499869bf9f665ebe448e793036b552f68c585a9b28f1e393f66", - "sha256:8e09d1916386eca1ef1353767b6efcebc0a6859ed7f73cb7fb974feba3184830", - "sha256:9643684232b6b340b5e63bb69c9b4904cdd39e4303d498d1a92abddc7e895b7f", - "sha256:9e355f2a839d9930d83971b9f562395e13493f0e9211520f8913bd11efa53c02", - "sha256:a74d96cd960b87b4b712797c741bb3ea3a913f5c2dc4b6cbe9c0f8360b75297d", - "sha256:b019c79e23a80735cc8a71b95f76a49a262f579d6b84fd20a0b82279f40e2cc1", - "sha256:c7cb105d69a87416bd9023e64324e1c089593e6dae64d2536f06bcbe49cd97d8", - "sha256:ca200645d6235ce0df3ccfdff1567acbab35c4db222a97357806e015f85b5744", - "sha256:d3f89ccf7182293feba2de2739c8bf34fed1ed7c65a5cf987be00311acac57c1", - "sha256:db9056b6a11cb5131036d734bcbf91ef3ef9235d6b681b2fc431cbfe5a7f2e56", - "sha256:f370c0a71712f8965023dd5b13277444d3cdfecc96b2c778b0e19acbfd60df6e" + "sha256:1669cb7524221a8e2d9008d0842453dbefdd0fcdd64d67672f657244867635fb", + "sha256:29288813aacaa302afa2381db1d6e0482165737b0afdf2811df5fa99185c457b", + "sha256:47d31bdf58222dd296976aa1646c68c6ee80b96d22e0a3c336c9174e253fd35e", + "sha256:652d8dfece122a24d98eebfef30e31e455d300efa41999d1182e015984ac5930", + "sha256:7c535d126e7dcc714105ab20b418c4fedbd28f8b8afc42b7350b1e317bbbcc71", + "sha256:86c3d20428b007537ba6792b475c0853bba7f66b1f60e610d913b77d94b486e4", + "sha256:a33a273d21852f911b8bda47f39f4383fe7c061eb1814db2c76c9875c89c2491", + "sha256:ab4d043865dd04e6b09386981fe8f80b39a1e46139fb4a3c206229d6b9f36ff6", + "sha256:b2fea9dc8e3c0f32c38124790ef16cba2ee0628fe2022a52e435e1117bfef9b1", + "sha256:c27f371f0159feb70e6ea52ed7e768b3f3a4c5676c1900a7e51a24740381650e", + "sha256:c3325803095fb4c2a48649c321d2fbde59f8fbfcb9bfc7a86df27d112831c571", + "sha256:e474b63bab0a2ea32a7b26a4d8eec59e33e709321e5e16fb66e766b61b82a95e", + "sha256:e894e9ae603e963f0842498c4cd5d39c6a60f0d7e4c103df50ee939564298658" ], "index": "pypi", - "version": "==4.21.7" + "version": "==4.22.0" }, "zstandard": { "hashes": [ - "sha256:083dc08abf03807af9beeb2b6a91c23ad78add2499f828176a3c7b742c44df02", - "sha256:0ac0357a0d985b4ff31a854744040d7b5754385d1f98f7145c30e02c6865cb6f", - "sha256:19cac7108ff2c342317fad6dc97604b47a41f403c8f19d0bfc396dfadc3638b8", - "sha256:1af1268a7dc870eb27515fb8db1f3e6c5a555d2b7bcc476fc3bab8886c7265ab", - "sha256:1be31e9e3f7607ee0cdd60915410a5968b205d3e7aa83b7fcf3dd76dbbdb39e0", - "sha256:1dc2d3809e763055a1a6c1a73f2b677320cc9a5aa1a7c6cfb35aee59bddc42d9", - "sha256:266aba27fa9cc5e9091d3d325ebab1fa260f64e83e42516d5e73947c70216a5b", - "sha256:28723a1d2e4df778573b76b321ebe9f3469ac98988104c2af116dd344802c3f8", - "sha256:2dc466207016564805e56d28375f4f533b525ff50d6776946980dff5465566ac", - "sha256:39e98cf4773234bd9cebf9f9db730e451dfcfe435e220f8921242afda8321887", - "sha256:3af8c2383d02feb6650e9255491ec7d0824f6e6dd2bbe3e521c469c985f31fb1", - "sha256:46f679bc5dfd938db4fb058218d9dc4db1336ffaf1ea774ff152ecadabd40805", - "sha256:490d11b705b8ae9dc845431bacc8dd1cef2408aede176620a5cd0cd411027936", - "sha256:49685bf9a55d1ab34bd8423ea22db836ba43a181ac6b045ac4272093d5cb874e", - "sha256:4a2ee1d4f98447f3e5183ecfce5626f983504a4a0c005fbe92e60fa8e5d547ec", - "sha256:4cbb85f29a990c2fdbf7bc63246567061a362ddca886d7fae6f780267c0a9e67", - "sha256:5228e596eb1554598c872a337bbe4e5afe41cd1f8b1b15f2e35b50d061e35244", - "sha256:533db8a6fac6248b2cb2c935e7b92f994efbdeb72e1ffa0b354432e087bb5a3e", - "sha256:63694a376cde0aa8b1971d06ca28e8f8b5f492779cb6ee1cc46bbc3f019a42a5", - "sha256:702a8324cd90c74d9c8780d02bf55e79da3193c870c9665ad3a11647e3ad1435", - "sha256:7231543d38d2b7e02ef7cc78ef7ffd86419437e1114ff08709fe25a160e24bd6", - "sha256:75479e7c2b3eebf402c59fbe57d21bc400cefa145ca356ee053b0a08908c5784", - "sha256:76725d1ee83a8915100a310bbad5d9c1fc6397410259c94033b8318d548d9990", - "sha256:8677ffc6a6096cccbd892e558471c901fd821aba12b7fbc63833c7346f549224", - "sha256:8b2260c4e07dd0723eadb586de7718b61acca4083a490dda69c5719d79bc715c", - "sha256:999a4e1768f219826ba3fa2064fab1c86dd72fdd47a42536235478c3bb3ca3e2", - "sha256:9df59cd1cf3c62075ee2a4da767089d19d874ac3ad42b04a71a167e91b384722", - "sha256:a7fa67cba473623848b6e88acf8d799b1906178fd883fb3a1da24561c779593b", - "sha256:bd3220d7627fd4d26397211cb3b560ec7cc4a94b75cfce89e847e8ce7fabe32d", - "sha256:bfa6c8549fa18e6497a738b7033c49f94a8e2e30c5fbe2d14d0b5aa8bbc1695d", - "sha256:c86befac87445927488f5c8f205d11566f64c11519db223e9d282b945fa60dab", - "sha256:c990063664c08169c84474acecc9251ee035871589025cac47c060ff4ec4bc1a", - "sha256:cdb44d7284c8c5dd1b66dfb86dda7f4560fa94bfbbc1d2da749ba44831335e32", - "sha256:ce6f59cba9854fd14da5bfe34217a1501143057313966637b7291d1b0267bd1e", - "sha256:d4a8fd45746a6c31e729f35196e80b8f1e9987c59f5ccb8859d7c6a6fbeb9c63", - "sha256:d6c85ca5162049ede475b7ec98e87f9390501d44a3d6776ddd504e872464ec25", - "sha256:d716a7694ce1fa60b20bc10f35c4a22be446ef7f514c8dbc8f858b61976de2fb", - "sha256:d85bfabad444812133a92fc6fbe463e1d07581dba72f041f07a360e63808b23c", - "sha256:d956e2f03c7200d7e61345e0880c292783ec26618d0d921dcad470cb195bbce2", - "sha256:dbb3cb8a082d62b8a73af42291569d266b05605e017a3d8a06a0e5c30b5f10f0", - "sha256:dc2a4de9f363b3247d472362a65041fe4c0f59e01a2846b15d13046be866a885", - "sha256:e02043297c1832f2666cd2204f381bef43b10d56929e13c42c10c732c6e3b4ed", - "sha256:eea18c1e7442f2aa9aff1bb84550dbb6a1f711faf6e48e7319de8f2b2e923c2a", - "sha256:ef7e8a200e4c8ac9102ed3c90ed2aa379f6b880f63032200909c1be21951f556" + "sha256:04c298d381a3b6274b0a8001f0da0ec7819d052ad9c3b0863fe8c7f154061f76", + "sha256:0fde1c56ec118940974e726c2a27e5b54e71e16c6f81d0b4722112b91d2d9009", + "sha256:126aa8433773efad0871f624339c7984a9c43913952f77d5abeee7f95a0c0860", + "sha256:1a4fb8b4ac6772e4d656103ccaf2e43e45bd16b5da324b963d58ef360d09eb73", + "sha256:2e4812720582d0803e84aefa2ac48ce1e1e6e200ca3ce1ae2be6d410c1d637ae", + "sha256:2f01b27d0b453f07cbcff01405cdd007e71f5d6410eb01303a16ba19213e58e4", + "sha256:31d12fcd942dd8dbf52ca5f6b1bbe287f44e5d551a081a983ff3ea2082867863", + "sha256:3c927b6aa682c6d96225e1c797f4a5d0b9f777b327dea912b23471aaf5385376", + "sha256:3d5bb598963ac1f1f5b72dd006adb46ca6203e4fb7269a5b6e1f99e85b07ad38", + "sha256:401508efe02341ae681752a87e8ac9ef76df85ef1a238a7a21786a489d2c983d", + "sha256:4514b19abe6dbd36d6c5d75c54faca24b1ceb3999193c5b1f4b685abeabde3d0", + "sha256:47dfa52bed3097c705451bafd56dac26535545a987b6759fa39da1602349d7ba", + "sha256:4fa496d2d674c6e9cffc561639d17009d29adee84a27cf1e12d3c9be14aa8feb", + "sha256:55a513ec67e85abd8b8b83af8813368036f03e2d29a50fc94033504918273980", + "sha256:55b3187e0bed004533149882ef8c24e954321f3be81f8a9ceffe35099b82a0d0", + "sha256:593f96718ad906e24d6534187fdade28b611f8ed06e27ba972ba48aecec45fc6", + "sha256:5e21032efe673b887464667d09406bab6e16d96b09ad87e80859e3a20b6745b6", + "sha256:60a86b7b2b1c300779167cf595e019e61afcc0e20c4838692983a921db9006ac", + "sha256:619f9bf37cdb4c3dc9d4120d2a1003f5db9446f3618a323219f408f6a9df6725", + "sha256:660b91eca10ee1b44c47843894abe3e6cfd80e50c90dee3123befbf7ca486bd3", + "sha256:67710d220af405f5ce22712fa741d85e8b3ada7a457ea419b038469ba379837c", + "sha256:6caed86cd47ae93915d9031dc04be5283c275e1a2af2ceff33932071f3eeff4d", + "sha256:6d2182e648e79213b3881998b30225b3f4b1f3e681f1c1eaf4cacf19bde1040d", + "sha256:72758c9f785831d9d744af282d54c3e0f9db34f7eae521c33798695464993da2", + "sha256:74c2637d12eaacb503b0b06efdf55199a11b1d7c580bd3dd9dfe84cac97ef2f6", + "sha256:755020d5aeb1b10bffd93d119e7709a2a7475b6ad79c8d5226cea3f76d152ce0", + "sha256:7ccc4727300f223184520a6064c161a90b5d0283accd72d1455bcd85ec44dd0d", + "sha256:81ab21d03e3b0351847a86a0b298b297fde1e152752614138021d6d16a476ea6", + "sha256:8371217dff635cfc0220db2720fc3ce728cd47e72bb7572cca035332823dbdfc", + "sha256:876567136b0359f6581ecd892bdb4ca03a0eead0265db73206c78cff03bcdb0f", + "sha256:879411d04068bd489db57dcf6b82ffad3c5fb2a1fdd30817c566d8b7bedee442", + "sha256:898500957ae5e7f31b7271ace4e6f3625b38c0ac84e8cedde8de3a77a7fdae5e", + "sha256:8c9ca56345b0c5574db47560603de9d05f63cce5dfeb3a456eb60f3fec737ff2", + "sha256:8ec2c146e10b59c376b6bc0369929647fcd95404a503a7aa0990f21c16462248", + "sha256:8f7c68de4f362c1b2f426395fe4e05028c56d0782b2ec3ae18a5416eaf775576", + "sha256:909bdd4e19ea437eb9b45d6695d722f6f0fd9d8f493e837d70f92062b9f39faf", + "sha256:9d97c713433087ba5cee61a3e8edb54029753d45a4288ad61a176fa4718033ce", + "sha256:a65e0119ad39e855427520f7829618f78eb2824aa05e63ff19b466080cd99210", + "sha256:aa9087571729c968cd853d54b3f6e9d0ec61e45cd2c31e0eb8a0d4bdbbe6da2f", + "sha256:aef0889417eda2db000d791f9739f5cecb9ccdd45c98f82c6be531bdc67ff0f2", + "sha256:b253d0c53c8ee12c3e53d181fb9ef6ce2cd9c41cbca1c56a535e4fc8ec41e241", + "sha256:b80f6f6478f9d4ca26daee6c61584499493bf97950cfaa1a02b16bb5c2c17e70", + "sha256:be6329b5ba18ec5d32dc26181e0148e423347ed936dda48bf49fb243895d1566", + "sha256:c7560f622e3849cc8f3e999791a915addd08fafe80b47fcf3ffbda5b5151047c", + "sha256:d1a7a716bb04b1c3c4a707e38e2dee46ac544fff931e66d7ae944f3019fc55b8", + "sha256:d63b04e16df8ea21dfcedbf5a60e11cbba9d835d44cb3cbff233cfd037a916d5", + "sha256:d777d239036815e9b3a093fa9208ad314c040c26d7246617e70e23025b60083a", + "sha256:e892d3177380ec080550b56a7ffeab680af25575d291766bdd875147ba246a91", + "sha256:e9c90a44470f2999779057aeaf33461cbd8bb59d8f15e983150d10bb260e16e0", + "sha256:f097dda5d4f9b9b01b3c9fa2069f9c02929365f48f341feddf3d6b32510a2f93", + "sha256:f4ebfe03cbae821ef994b2e58e4df6a087470cc522aca502614e82a143365d45" ], "index": "pypi", - "version": "==0.18.0" + "version": "==0.19.0" } }, "develop": { "alabaster": { "hashes": [ - "sha256:446438bdcca0e05bd45ea2de1668c1d9b032e1a9154c2c259092d77031ddd359", - "sha256:a661d72d58e6ea8a57f7a86e37d86716863ee5e92788398526d58b26a4e4dc02" + "sha256:1ee19aca801bbabb5ba3f5f258e4422dfa86f82f3e9cefb0859b283cdd7f62a3", + "sha256:a27a4a084d5e690e16e01e03ad2b2e552c61a65469419b907243193de1a84ae2" ], - "version": "==0.7.12" + "markers": "python_version >= '3.6'", + "version": "==0.7.13" }, "attrs": { "hashes": [ - "sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6", - "sha256:86efa402f67bf2df34f51a335487cf46b1ec130d02b8d39fd248abfd30da551c" + "sha256:29e95c7f6778868dbd49170f98f8818f78f3dc5e0e37c0b1f474e3561b240836", + "sha256:c9227bfc2f01993c03f68db37d1d15c9690188323c067c641f1a35ca58185f99" ], - "markers": "python_version >= '3.5'", - "version": "==22.1.0" + "markers": "python_version >= '3.6'", + "version": "==22.2.0" }, "babel": { "hashes": [ - "sha256:7614553711ee97490f732126dc077f8d0ae084ebc6a96e23db1482afabdb2c51", - "sha256:ff56f4892c1c4bf0d814575ea23471c230d544203c7748e8c68f0089478d48eb" + "sha256:1ad3eca1c885218f6dce2ab67291178944f810a10a9b5f3cb8382a5a232b64fe", + "sha256:5ef4b3226b0180dedded4229651c8b0e1a3a6a2837d45a073272f313e4cf97f6" ], "markers": "python_version >= '3.6'", - "version": "==2.10.3" + "version": "==2.11.0" }, "black": { "hashes": [ - "sha256:0a12e4e1353819af41df998b02c6742643cfef58282915f781d0e4dd7a200411", - "sha256:0ad827325a3a634bae88ae7747db1a395d5ee02cf05d9aa7a9bd77dfb10e940c", - "sha256:32a4b17f644fc288c6ee2bafdf5e3b045f4eff84693ac069d87b1a347d861497", - "sha256:3b2c25f8dea5e8444bdc6788a2f543e1fb01494e144480bc17f806178378005e", - "sha256:4a098a69a02596e1f2a58a2a1c8d5a05d5a74461af552b371e82f9fa4ada8342", - "sha256:5107ea36b2b61917956d018bd25129baf9ad1125e39324a9b18248d362156a27", - "sha256:53198e28a1fb865e9fe97f88220da2e44df6da82b18833b588b1883b16bb5d41", - "sha256:5594efbdc35426e35a7defa1ea1a1cb97c7dbd34c0e49af7fb593a36bd45edab", - "sha256:5b879eb439094751185d1cfdca43023bc6786bd3c60372462b6f051efa6281a5", - "sha256:78dd85caaab7c3153054756b9fe8c611efa63d9e7aecfa33e533060cb14b6d16", - "sha256:792f7eb540ba9a17e8656538701d3eb1afcb134e3b45b71f20b25c77a8db7e6e", - "sha256:8ce13ffed7e66dda0da3e0b2eb1bdfc83f5812f66e09aca2b0978593ed636b6c", - "sha256:a05da0430bd5ced89176db098567973be52ce175a55677436a271102d7eaa3fe", - "sha256:a983526af1bea1e4cf6768e649990f28ee4f4137266921c2c3cee8116ae42ec3", - "sha256:bc4d4123830a2d190e9cc42a2e43570f82ace35c3aeb26a512a2102bce5af7ec", - "sha256:c3a73f66b6d5ba7288cd5d6dad9b4c9b43f4e8a4b789a94bf5abfb878c663eb3", - "sha256:ce957f1d6b78a8a231b18e0dd2d94a33d2ba738cd88a7fe64f53f659eea49fdd", - "sha256:cea1b2542d4e2c02c332e83150e41e3ca80dc0fb8de20df3c5e98e242156222c", - "sha256:d2c21d439b2baf7aa80d6dd4e3659259be64c6f49dfd0f32091063db0e006db4", - "sha256:d839150f61d09e7217f52917259831fe2b689f5c8e5e32611736351b89bb2a90", - "sha256:dd82842bb272297503cbec1a2600b6bfb338dae017186f8f215c8958f8acf869", - "sha256:e8166b7bfe5dcb56d325385bd1d1e0f635f24aae14b3ae437102dedc0c186747", - "sha256:e981e20ec152dfb3e77418fb616077937378b322d7b26aa1ff87717fb18b4875" + "sha256:0052dba51dec07ed029ed61b18183942043e00008ec65d5028814afaab9a22fd", + "sha256:0680d4380db3719ebcfb2613f34e86c8e6d15ffeabcf8ec59355c5e7b85bb555", + "sha256:121ca7f10b4a01fd99951234abdbd97728e1240be89fde18480ffac16503d481", + "sha256:162e37d49e93bd6eb6f1afc3e17a3d23a823042530c37c3c42eeeaf026f38468", + "sha256:2a951cc83ab535d248c89f300eccbd625e80ab880fbcfb5ac8afb5f01a258ac9", + "sha256:2bf649fda611c8550ca9d7592b69f0637218c2369b7744694c5e4902873b2f3a", + "sha256:382998821f58e5c8238d3166c492139573325287820963d2f7de4d518bd76958", + "sha256:49f7b39e30f326a34b5c9a4213213a6b221d7ae9d58ec70df1c4a307cf2a1580", + "sha256:57c18c5165c1dbe291d5306e53fb3988122890e57bd9b3dcb75f967f13411a26", + "sha256:7a0f701d314cfa0896b9001df70a530eb2472babb76086344e688829efd97d32", + "sha256:8178318cb74f98bc571eef19068f6ab5613b3e59d4f47771582f04e175570ed8", + "sha256:8b70eb40a78dfac24842458476135f9b99ab952dd3f2dab738c1881a9b38b753", + "sha256:9880d7d419bb7e709b37e28deb5e68a49227713b623c72b2b931028ea65f619b", + "sha256:9afd3f493666a0cd8f8df9a0200c6359ac53940cbde049dcb1a7eb6ee2dd7074", + "sha256:a29650759a6a0944e7cca036674655c2f0f63806ddecc45ed40b7b8aa314b651", + "sha256:a436e7881d33acaf2536c46a454bb964a50eff59b21b51c6ccf5a40601fbef24", + "sha256:a59db0a2094d2259c554676403fa2fac3473ccf1354c1c63eccf7ae65aac8ab6", + "sha256:a8471939da5e824b891b25751955be52ee7f8a30a916d570a5ba8e0f2eb2ecad", + "sha256:b0bd97bea8903f5a2ba7219257a44e3f1f9d00073d6cc1add68f0beec69692ac", + "sha256:b6a92a41ee34b883b359998f0c8e6eb8e99803aa8bf3123bf2b2e6fec505a221", + "sha256:bb460c8561c8c1bec7824ecbc3ce085eb50005883a6203dcfb0122e95797ee06", + "sha256:bfffba28dc52a58f04492181392ee380e95262af14ee01d4bc7bb1b1c6ca8d27", + "sha256:c1c476bc7b7d021321e7d93dc2cbd78ce103b84d5a4cf97ed535fbc0d6660648", + "sha256:c91dfc2c2a4e50df0026f88d2215e166616e0c80e86004d0003ece0488db2739", + "sha256:e6663f91b6feca5d06f2ccd49a10f254f9298cc1f7f49c46e498a0771b507104" ], "index": "pypi", - "version": "==22.8.0" + "version": "==23.1.0" }, "build": { "hashes": [ - "sha256:19b0ed489f92ace6947698c3ca8436cb0556a66e2aa2d34cd70e2a5d27cd0437", - "sha256:887a6d471c901b1a6e6574ebaeeebb45e5269a79d095fe9a8f88d6614ed2e5f0" + "sha256:af266720050a66c893a6096a2f410989eeac74ff9a68ba194b3f6473e8e26171", + "sha256:d5b71264afdb5951d6704482aac78de887c80691c52b88a9ad195983ca2c9269" ], "index": "pypi", - "version": "==0.8.0" + "version": "==0.10.0" }, "certifi": { "hashes": [ - "sha256:0d9c601124e5a6ba9712dbc60d9c53c21e34f5f641fe83002317394311bdce14", - "sha256:90c1a32f1d68f940488354e36370f6cca89f0f106db09518524c88d6ed83f382" + "sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3", + "sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18" ], "markers": "python_version >= '3.6'", - "version": "==2022.9.24" + "version": "==2022.12.7" }, "charset-normalizer": { "hashes": [ - "sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845", - "sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f" + "sha256:00d3ffdaafe92a5dc603cb9bd5111aaa36dfa187c8285c543be562e61b755f6b", + "sha256:024e606be3ed92216e2b6952ed859d86b4cfa52cd5bc5f050e7dc28f9b43ec42", + "sha256:0298eafff88c99982a4cf66ba2efa1128e4ddaca0b05eec4c456bbc7db691d8d", + "sha256:02a51034802cbf38db3f89c66fb5d2ec57e6fe7ef2f4a44d070a593c3688667b", + "sha256:083c8d17153ecb403e5e1eb76a7ef4babfc2c48d58899c98fcaa04833e7a2f9a", + "sha256:0a11e971ed097d24c534c037d298ad32c6ce81a45736d31e0ff0ad37ab437d59", + "sha256:0bf2dae5291758b6f84cf923bfaa285632816007db0330002fa1de38bfcb7154", + "sha256:0c0a590235ccd933d9892c627dec5bc7511ce6ad6c1011fdf5b11363022746c1", + "sha256:0f438ae3532723fb6ead77e7c604be7c8374094ef4ee2c5e03a3a17f1fca256c", + "sha256:109487860ef6a328f3eec66f2bf78b0b72400280d8f8ea05f69c51644ba6521a", + "sha256:11b53acf2411c3b09e6af37e4b9005cba376c872503c8f28218c7243582df45d", + "sha256:12db3b2c533c23ab812c2b25934f60383361f8a376ae272665f8e48b88e8e1c6", + "sha256:14e76c0f23218b8f46c4d87018ca2e441535aed3632ca134b10239dfb6dadd6b", + "sha256:16a8663d6e281208d78806dbe14ee9903715361cf81f6d4309944e4d1e59ac5b", + "sha256:292d5e8ba896bbfd6334b096e34bffb56161c81408d6d036a7dfa6929cff8783", + "sha256:2c03cc56021a4bd59be889c2b9257dae13bf55041a3372d3295416f86b295fb5", + "sha256:2e396d70bc4ef5325b72b593a72c8979999aa52fb8bcf03f701c1b03e1166918", + "sha256:2edb64ee7bf1ed524a1da60cdcd2e1f6e2b4f66ef7c077680739f1641f62f555", + "sha256:31a9ddf4718d10ae04d9b18801bd776693487cbb57d74cc3458a7673f6f34639", + "sha256:356541bf4381fa35856dafa6a965916e54bed415ad8a24ee6de6e37deccf2786", + "sha256:358a7c4cb8ba9b46c453b1dd8d9e431452d5249072e4f56cfda3149f6ab1405e", + "sha256:37f8febc8ec50c14f3ec9637505f28e58d4f66752207ea177c1d67df25da5aed", + "sha256:39049da0ffb96c8cbb65cbf5c5f3ca3168990adf3551bd1dee10c48fce8ae820", + "sha256:39cf9ed17fe3b1bc81f33c9ceb6ce67683ee7526e65fde1447c772afc54a1bb8", + "sha256:3ae1de54a77dc0d6d5fcf623290af4266412a7c4be0b1ff7444394f03f5c54e3", + "sha256:3b590df687e3c5ee0deef9fc8c547d81986d9a1b56073d82de008744452d6541", + "sha256:3e45867f1f2ab0711d60c6c71746ac53537f1684baa699f4f668d4c6f6ce8e14", + "sha256:3fc1c4a2ffd64890aebdb3f97e1278b0cc72579a08ca4de8cd2c04799a3a22be", + "sha256:4457ea6774b5611f4bed5eaa5df55f70abde42364d498c5134b7ef4c6958e20e", + "sha256:44ba614de5361b3e5278e1241fda3dc1838deed864b50a10d7ce92983797fa76", + "sha256:4a8fcf28c05c1f6d7e177a9a46a1c52798bfe2ad80681d275b10dcf317deaf0b", + "sha256:4b0d02d7102dd0f997580b51edc4cebcf2ab6397a7edf89f1c73b586c614272c", + "sha256:502218f52498a36d6bf5ea77081844017bf7982cdbe521ad85e64cabee1b608b", + "sha256:503e65837c71b875ecdd733877d852adbc465bd82c768a067badd953bf1bc5a3", + "sha256:5995f0164fa7df59db4746112fec3f49c461dd6b31b841873443bdb077c13cfc", + "sha256:59e5686dd847347e55dffcc191a96622f016bc0ad89105e24c14e0d6305acbc6", + "sha256:601f36512f9e28f029d9481bdaf8e89e5148ac5d89cffd3b05cd533eeb423b59", + "sha256:608862a7bf6957f2333fc54ab4399e405baad0163dc9f8d99cb236816db169d4", + "sha256:62595ab75873d50d57323a91dd03e6966eb79c41fa834b7a1661ed043b2d404d", + "sha256:70990b9c51340e4044cfc394a81f614f3f90d41397104d226f21e66de668730d", + "sha256:71140351489970dfe5e60fc621ada3e0f41104a5eddaca47a7acb3c1b851d6d3", + "sha256:72966d1b297c741541ca8cf1223ff262a6febe52481af742036a0b296e35fa5a", + "sha256:74292fc76c905c0ef095fe11e188a32ebd03bc38f3f3e9bcb85e4e6db177b7ea", + "sha256:761e8904c07ad053d285670f36dd94e1b6ab7f16ce62b9805c475b7aa1cffde6", + "sha256:772b87914ff1152b92a197ef4ea40efe27a378606c39446ded52c8f80f79702e", + "sha256:79909e27e8e4fcc9db4addea88aa63f6423ebb171db091fb4373e3312cb6d603", + "sha256:7e189e2e1d3ed2f4aebabd2d5b0f931e883676e51c7624826e0a4e5fe8a0bf24", + "sha256:7eb33a30d75562222b64f569c642ff3dc6689e09adda43a082208397f016c39a", + "sha256:81d6741ab457d14fdedc215516665050f3822d3e56508921cc7239f8c8e66a58", + "sha256:8499ca8f4502af841f68135133d8258f7b32a53a1d594aa98cc52013fff55678", + "sha256:84c3990934bae40ea69a82034912ffe5a62c60bbf6ec5bc9691419641d7d5c9a", + "sha256:87701167f2a5c930b403e9756fab1d31d4d4da52856143b609e30a1ce7160f3c", + "sha256:88600c72ef7587fe1708fd242b385b6ed4b8904976d5da0893e31df8b3480cb6", + "sha256:8ac7b6a045b814cf0c47f3623d21ebd88b3e8cf216a14790b455ea7ff0135d18", + "sha256:8b8af03d2e37866d023ad0ddea594edefc31e827fee64f8de5611a1dbc373174", + "sha256:8c7fe7afa480e3e82eed58e0ca89f751cd14d767638e2550c77a92a9e749c317", + "sha256:8eade758719add78ec36dc13201483f8e9b5d940329285edcd5f70c0a9edbd7f", + "sha256:911d8a40b2bef5b8bbae2e36a0b103f142ac53557ab421dc16ac4aafee6f53dc", + "sha256:93ad6d87ac18e2a90b0fe89df7c65263b9a99a0eb98f0a3d2e079f12a0735837", + "sha256:95dea361dd73757c6f1c0a1480ac499952c16ac83f7f5f4f84f0658a01b8ef41", + "sha256:9ab77acb98eba3fd2a85cd160851816bfce6871d944d885febf012713f06659c", + "sha256:9cb3032517f1627cc012dbc80a8ec976ae76d93ea2b5feaa9d2a5b8882597579", + "sha256:9cf4e8ad252f7c38dd1f676b46514f92dc0ebeb0db5552f5f403509705e24753", + "sha256:9d9153257a3f70d5f69edf2325357251ed20f772b12e593f3b3377b5f78e7ef8", + "sha256:a152f5f33d64a6be73f1d30c9cc82dfc73cec6477ec268e7c6e4c7d23c2d2291", + "sha256:a16418ecf1329f71df119e8a65f3aa68004a3f9383821edcb20f0702934d8087", + "sha256:a60332922359f920193b1d4826953c507a877b523b2395ad7bc716ddd386d866", + "sha256:a8d0fc946c784ff7f7c3742310cc8a57c5c6dc31631269876a88b809dbeff3d3", + "sha256:ab5de034a886f616a5668aa5d098af2b5385ed70142090e2a31bcbd0af0fdb3d", + "sha256:c22d3fe05ce11d3671297dc8973267daa0f938b93ec716e12e0f6dee81591dc1", + "sha256:c2ac1b08635a8cd4e0cbeaf6f5e922085908d48eb05d44c5ae9eabab148512ca", + "sha256:c512accbd6ff0270939b9ac214b84fb5ada5f0409c44298361b2f5e13f9aed9e", + "sha256:c75ffc45f25324e68ab238cb4b5c0a38cd1c3d7f1fb1f72b5541de469e2247db", + "sha256:c95a03c79bbe30eec3ec2b7f076074f4281526724c8685a42872974ef4d36b72", + "sha256:cadaeaba78750d58d3cc6ac4d1fd867da6fc73c88156b7a3212a3cd4819d679d", + "sha256:cd6056167405314a4dc3c173943f11249fa0f1b204f8b51ed4bde1a9cd1834dc", + "sha256:db72b07027db150f468fbada4d85b3b2729a3db39178abf5c543b784c1254539", + "sha256:df2c707231459e8a4028eabcd3cfc827befd635b3ef72eada84ab13b52e1574d", + "sha256:e62164b50f84e20601c1ff8eb55620d2ad25fb81b59e3cd776a1902527a788af", + "sha256:e696f0dd336161fca9adbb846875d40752e6eba585843c768935ba5c9960722b", + "sha256:eaa379fcd227ca235d04152ca6704c7cb55564116f8bc52545ff357628e10602", + "sha256:ebea339af930f8ca5d7a699b921106c6e29c617fe9606fa7baa043c1cdae326f", + "sha256:f4c39b0e3eac288fedc2b43055cfc2ca7a60362d0e5e87a637beac5d801ef478", + "sha256:f5057856d21e7586765171eac8b9fc3f7d44ef39425f85dbcccb13b3ebea806c", + "sha256:f6f45710b4459401609ebebdbcfb34515da4fc2aa886f95107f556ac69a9147e", + "sha256:f97e83fa6c25693c7a35de154681fcc257c1c41b38beb0304b9c4d2d9e164479", + "sha256:f9d0c5c045a3ca9bedfc35dca8526798eb91a07aa7a2c0fee134c6c6f321cbd7", + "sha256:ff6f3db31555657f3163b15a6b7c6938d08df7adbfc9dd13d9d19edad678f1e8" ], "markers": "python_full_version >= '3.6.0'", - "version": "==2.1.1" + "version": "==3.0.1" }, "click": { "hashes": [ @@ -235,21 +352,29 @@ "markers": "python_version >= '3.7'", "version": "==0.19" }, + "exceptiongroup": { + "hashes": [ + "sha256:327cbda3da756e2de031a3107b81ab7b3770a602c4d16ca618298c526f4bec1e", + "sha256:bcb67d800a4497e1b404c2dd44fca47d3b7a5e5433dbab67f96c1a685cdfdf23" + ], + "markers": "python_version < '3.11'", + "version": "==1.1.0" + }, "filelock": { "hashes": [ - "sha256:55447caa666f2198c5b6b13a26d2084d26fa5b115c00d065664b2124680c4edc", - "sha256:617eb4e5eedc82fc5f47b6d61e4d11cb837c56cb4544e39081099fa17ad109d4" + "sha256:7b319f24340b51f55a2bf7a12ac0755a9b03e718311dac567a0f4f7fabd2f5de", + "sha256:f58d535af89bb9ad5cd4df046f741f8553a418c01a7856bf0d173bbc9f6bd16d" ], "markers": "python_version >= '3.7'", - "version": "==3.8.0" + "version": "==3.9.0" }, "flake8": { "hashes": [ - "sha256:6fbe320aad8d6b95cec8b8e47bc933004678dc63095be98528b7bdd2a9f510db", - "sha256:7a1cf6b73744f5806ab95e526f6f0d8c01c66d7bbe349562d22dfca20610b248" + "sha256:3833794e27ff64ea4e9cf5d410082a8b97ff1a06c16aa3d2027339cd0f1195c7", + "sha256:c61007e76655af75e6785a931f452915b371dc48f56efd765247c8fe68f2b181" ], "index": "pypi", - "version": "==5.0.4" + "version": "==6.0.0" }, "genmsg": { "hashes": [ @@ -285,10 +410,11 @@ }, "iniconfig": { "hashes": [ - "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3", - "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32" + "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3", + "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374" ], - "version": "==1.1.1" + "markers": "python_version >= '3.7'", + "version": "==2.0.0" }, "jinja2": { "hashes": [ @@ -300,57 +426,67 @@ }, "m2r2": { "hashes": [ - "sha256:2ee32a5928c3598b67c70e6d22981ec936c03d5bfd2f64229e77678731952f16", - "sha256:f9b6e9efbc2b6987dbd43d2fd15a6d115ba837d8158ae73295542635b4086e75" + "sha256:86157721eb6eabcd54d4eea7195890cc58fa6188b8d0abea633383cfbb5e11e3", + "sha256:e62bcb0e74b3ce19cda0737a0556b04cf4a43b785072fcef474558f2c1482ca8" ], "index": "pypi", - "version": "==0.3.3" + "version": "==0.3.3.post2" }, "markupsafe": { "hashes": [ - "sha256:0212a68688482dc52b2d45013df70d169f542b7394fc744c02a57374a4207003", - "sha256:089cf3dbf0cd6c100f02945abeb18484bd1ee57a079aefd52cffd17fba910b88", - "sha256:10c1bfff05d95783da83491be968e8fe789263689c02724e0c691933c52994f5", - "sha256:33b74d289bd2f5e527beadcaa3f401e0df0a89927c1559c8566c066fa4248ab7", - "sha256:3799351e2336dc91ea70b034983ee71cf2f9533cdff7c14c90ea126bfd95d65a", - "sha256:3ce11ee3f23f79dbd06fb3d63e2f6af7b12db1d46932fe7bd8afa259a5996603", - "sha256:421be9fbf0ffe9ffd7a378aafebbf6f4602d564d34be190fc19a193232fd12b1", - "sha256:43093fb83d8343aac0b1baa75516da6092f58f41200907ef92448ecab8825135", - "sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247", - "sha256:4a33dea2b688b3190ee12bd7cfa29d39c9ed176bda40bfa11099a3ce5d3a7ac6", - "sha256:4b9fe39a2ccc108a4accc2676e77da025ce383c108593d65cc909add5c3bd601", - "sha256:56442863ed2b06d19c37f94d999035e15ee982988920e12a5b4ba29b62ad1f77", - "sha256:671cd1187ed5e62818414afe79ed29da836dde67166a9fac6d435873c44fdd02", - "sha256:694deca8d702d5db21ec83983ce0bb4b26a578e71fbdbd4fdcd387daa90e4d5e", - "sha256:6a074d34ee7a5ce3effbc526b7083ec9731bb3cbf921bbe1d3005d4d2bdb3a63", - "sha256:6d0072fea50feec76a4c418096652f2c3238eaa014b2f94aeb1d56a66b41403f", - "sha256:6fbf47b5d3728c6aea2abb0589b5d30459e369baa772e0f37a0320185e87c980", - "sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b", - "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812", - "sha256:8dc1c72a69aa7e082593c4a203dcf94ddb74bb5c8a731e4e1eb68d031e8498ff", - "sha256:8e3dcf21f367459434c18e71b2a9532d96547aef8a871872a5bd69a715c15f96", - "sha256:8e576a51ad59e4bfaac456023a78f6b5e6e7651dcd383bcc3e18d06f9b55d6d1", - "sha256:96e37a3dc86e80bf81758c152fe66dbf60ed5eca3d26305edf01892257049925", - "sha256:97a68e6ada378df82bc9f16b800ab77cbf4b2fada0081794318520138c088e4a", - "sha256:99a2a507ed3ac881b975a2976d59f38c19386d128e7a9a18b7df6fff1fd4c1d6", - "sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e", - "sha256:b09bf97215625a311f669476f44b8b318b075847b49316d3e28c08e41a7a573f", - "sha256:b7bd98b796e2b6553da7225aeb61f447f80a1ca64f41d83612e6139ca5213aa4", - "sha256:b87db4360013327109564f0e591bd2a3b318547bcef31b468a92ee504d07ae4f", - "sha256:bcb3ed405ed3222f9904899563d6fc492ff75cce56cba05e32eff40e6acbeaa3", - "sha256:d4306c36ca495956b6d568d276ac11fdd9c30a36f1b6eb928070dc5360b22e1c", - "sha256:d5ee4f386140395a2c818d149221149c54849dfcfcb9f1debfe07a8b8bd63f9a", - "sha256:dda30ba7e87fbbb7eab1ec9f58678558fd9a6b8b853530e176eabd064da81417", - "sha256:e04e26803c9c3851c931eac40c695602c6295b8d432cbe78609649ad9bd2da8a", - "sha256:e1c0b87e09fa55a220f058d1d49d3fb8df88fbfab58558f1198e08c1e1de842a", - "sha256:e72591e9ecd94d7feb70c1cbd7be7b3ebea3f548870aa91e2732960fa4d57a37", - "sha256:e8c843bbcda3a2f1e3c2ab25913c80a3c5376cd00c6e8c4a86a89a28c8dc5452", - "sha256:efc1913fd2ca4f334418481c7e595c00aad186563bbc1ec76067848c7ca0a933", - "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a", - "sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7" + "sha256:0576fe974b40a400449768941d5d0858cc624e3249dfd1e0c33674e5c7ca7aed", + "sha256:085fd3201e7b12809f9e6e9bc1e5c96a368c8523fad5afb02afe3c051ae4afcc", + "sha256:090376d812fb6ac5f171e5938e82e7f2d7adc2b629101cec0db8b267815c85e2", + "sha256:0b462104ba25f1ac006fdab8b6a01ebbfbce9ed37fd37fd4acd70c67c973e460", + "sha256:137678c63c977754abe9086a3ec011e8fd985ab90631145dfb9294ad09c102a7", + "sha256:1bea30e9bf331f3fef67e0a3877b2288593c98a21ccb2cf29b74c581a4eb3af0", + "sha256:22152d00bf4a9c7c83960521fc558f55a1adbc0631fbb00a9471e097b19d72e1", + "sha256:22731d79ed2eb25059ae3df1dfc9cb1546691cc41f4e3130fe6bfbc3ecbbecfa", + "sha256:2298c859cfc5463f1b64bd55cb3e602528db6fa0f3cfd568d3605c50678f8f03", + "sha256:28057e985dace2f478e042eaa15606c7efccb700797660629da387eb289b9323", + "sha256:2e7821bffe00aa6bd07a23913b7f4e01328c3d5cc0b40b36c0bd81d362faeb65", + "sha256:2ec4f2d48ae59bbb9d1f9d7efb9236ab81429a764dedca114f5fdabbc3788013", + "sha256:340bea174e9761308703ae988e982005aedf427de816d1afe98147668cc03036", + "sha256:40627dcf047dadb22cd25ea7ecfe9cbf3bbbad0482ee5920b582f3809c97654f", + "sha256:40dfd3fefbef579ee058f139733ac336312663c6706d1163b82b3003fb1925c4", + "sha256:4cf06cdc1dda95223e9d2d3c58d3b178aa5dacb35ee7e3bbac10e4e1faacb419", + "sha256:50c42830a633fa0cf9e7d27664637532791bfc31c731a87b202d2d8ac40c3ea2", + "sha256:55f44b440d491028addb3b88f72207d71eeebfb7b5dbf0643f7c023ae1fba619", + "sha256:608e7073dfa9e38a85d38474c082d4281f4ce276ac0010224eaba11e929dd53a", + "sha256:63ba06c9941e46fa389d389644e2d8225e0e3e5ebcc4ff1ea8506dce646f8c8a", + "sha256:65608c35bfb8a76763f37036547f7adfd09270fbdbf96608be2bead319728fcd", + "sha256:665a36ae6f8f20a4676b53224e33d456a6f5a72657d9c83c2aa00765072f31f7", + "sha256:6d6607f98fcf17e534162f0709aaad3ab7a96032723d8ac8750ffe17ae5a0666", + "sha256:7313ce6a199651c4ed9d7e4cfb4aa56fe923b1adf9af3b420ee14e6d9a73df65", + "sha256:7668b52e102d0ed87cb082380a7e2e1e78737ddecdde129acadb0eccc5423859", + "sha256:7df70907e00c970c60b9ef2938d894a9381f38e6b9db73c5be35e59d92e06625", + "sha256:7e007132af78ea9df29495dbf7b5824cb71648d7133cf7848a2a5dd00d36f9ff", + "sha256:835fb5e38fd89328e9c81067fd642b3593c33e1e17e2fdbf77f5676abb14a156", + "sha256:8bca7e26c1dd751236cfb0c6c72d4ad61d986e9a41bbf76cb445f69488b2a2bd", + "sha256:8db032bf0ce9022a8e41a22598eefc802314e81b879ae093f36ce9ddf39ab1ba", + "sha256:99625a92da8229df6d44335e6fcc558a5037dd0a760e11d84be2260e6f37002f", + "sha256:9cad97ab29dfc3f0249b483412c85c8ef4766d96cdf9dcf5a1e3caa3f3661cf1", + "sha256:a4abaec6ca3ad8660690236d11bfe28dfd707778e2442b45addd2f086d6ef094", + "sha256:a6e40afa7f45939ca356f348c8e23048e02cb109ced1eb8420961b2f40fb373a", + "sha256:a6f2fcca746e8d5910e18782f976489939d54a91f9411c32051b4aab2bd7c513", + "sha256:a806db027852538d2ad7555b203300173dd1b77ba116de92da9afbc3a3be3eed", + "sha256:abcabc8c2b26036d62d4c746381a6f7cf60aafcc653198ad678306986b09450d", + "sha256:b8526c6d437855442cdd3d87eede9c425c4445ea011ca38d937db299382e6fa3", + "sha256:bb06feb762bade6bf3c8b844462274db0c76acc95c52abe8dbed28ae3d44a147", + "sha256:c0a33bc9f02c2b17c3ea382f91b4db0e6cde90b63b296422a939886a7a80de1c", + "sha256:c4a549890a45f57f1ebf99c067a4ad0cb423a05544accaf2b065246827ed9603", + "sha256:ca244fa73f50a800cf8c3ebf7fd93149ec37f5cb9596aa8873ae2c1d23498601", + "sha256:cf877ab4ed6e302ec1d04952ca358b381a882fbd9d1b07cccbfd61783561f98a", + "sha256:d9d971ec1e79906046aa3ca266de79eac42f1dbf3612a05dc9368125952bd1a1", + "sha256:da25303d91526aac3672ee6d49a2f3db2d9502a4a60b55519feb1a4c7714e07d", + "sha256:e55e40ff0cc8cc5c07996915ad367fa47da6b3fc091fdadca7f5403239c5fec3", + "sha256:f03a532d7dee1bed20bc4884194a16160a2de9ffc6354b3878ec9682bb623c54", + "sha256:f1cd098434e83e656abf198f103a8207a8187c0fc110306691a2e94a78d0abb2", + "sha256:f2bfb563d0211ce16b63c7cb9395d2c682a23187f54c3d79bfec33e6705473c6", + "sha256:f8ffb705ffcf5ddd0e80b65ddf7bed7ee4f5a441ea7d3419e861a12eaf41af58" ], "markers": "python_version >= '3.7'", - "version": "==2.1.1" + "version": "==2.1.2" }, "mccabe": { "hashes": [ @@ -369,10 +505,11 @@ }, "mypy-extensions": { "hashes": [ - "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d", - "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8" + "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d", + "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782" ], - "version": "==0.4.3" + "markers": "python_version >= '3.5'", + "version": "==1.0.0" }, "nodeenv": { "hashes": [ @@ -384,43 +521,35 @@ }, "packaging": { "hashes": [ - "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb", - "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522" + "sha256:714ac14496c3e68c99c29b00845f7a2b85f3bb6f1078fd9f72fd20f0570002b2", + "sha256:b6ad297f8907de0fa2fe1ccbd26fdaf387f5f47c7275fedf8cce89f99446cf97" ], - "markers": "python_version >= '3.6'", - "version": "==21.3" + "markers": "python_version >= '3.7'", + "version": "==23.0" }, "pathspec": { "hashes": [ - "sha256:46846318467efc4556ccfd27816e004270a9eeeeb4d062ce5e6fc7a87c573f93", - "sha256:7ace6161b621d31e7902eb6b5ae148d12cfd23f4a249b9ffb6b9fee12084323d" + "sha256:3a66eb970cbac598f9e5ccb5b2cf58930cd8e3ed86d393d541eaf2d8b1705229", + "sha256:64d338d4e0914e91c1792321e6907b5a593f1ab1851de7fc269557a21b30ebbc" ], "markers": "python_version >= '3.7'", - "version": "==0.10.1" - }, - "pep517": { - "hashes": [ - "sha256:4ba4446d80aed5b5eac6509ade100bff3e7943a8489de249654a5ae9b33ee35b", - "sha256:ae69927c5c172be1add9203726d4b84cf3ebad1edcd5f71fcdc746e66e829f59" - ], - "markers": "python_version >= '3.6'", - "version": "==0.13.0" + "version": "==0.11.0" }, "pipenv": { "hashes": [ - "sha256:dc2539c7f4ad10737f6c211493f99e2bbc8161571d71ac29f162dfed86886bb0", - "sha256:fc1982e47e8214f47713efadf61cd61ff643b5988372a83edd040cf0f7d942f2" + "sha256:18a3eba519e36d59f0d5a7f9c42bd268521e4b9b7b3d1bd6adcf131569323275", + "sha256:dd62abe8efa34b3d13e47b226bd151a1110dc5591557c559beca7d52efb55c18" ], "index": "pypi", - "version": "==2022.10.4" + "version": "==2023.2.4" }, "platformdirs": { "hashes": [ - "sha256:027d8e83a2d7de06bbac4e5ef7e023c02b863d7ea5d079477e722bb41ab25788", - "sha256:58c8abb07dcb441e6ee4b11d8df0ac856038f944ab98b7be6b27b2a3c7feef19" + "sha256:8a1228abb1ef82d788f74139988b137e78692984ec7b08eaa6c65f1723af28f9", + "sha256:b1d5eb14f221506f50d6604a561f4c5786d9e80355219694a1b244bcd96f4567" ], "markers": "python_version >= '3.7'", - "version": "==2.5.2" + "version": "==3.0.0" }, "pluggy": { "hashes": [ @@ -430,68 +559,60 @@ "markers": "python_version >= '3.6'", "version": "==1.0.0" }, - "py": { - "hashes": [ - "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719", - "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==1.11.0" - }, "pycodestyle": { "hashes": [ - "sha256:2c9607871d58c76354b697b42f5d57e1ada7d261c261efac224b664affdc5785", - "sha256:d1735fc58b418fd7c5f658d28d943854f8a849b01a5d0a1e6f3f3fdd0166804b" + "sha256:347187bdb476329d98f695c213d7295a846d1152ff4fe9bacb8a9590b8ee7053", + "sha256:8a4eaf0d0495c7395bdab3589ac2db602797d76207242c17d470186815706610" ], "markers": "python_version >= '3.6'", - "version": "==2.9.1" + "version": "==2.10.0" }, "pyflakes": { "hashes": [ - "sha256:4579f67d887f804e67edb544428f264b7b24f435b263c4614f384135cea553d2", - "sha256:491feb020dca48ccc562a8c0cbe8df07ee13078df59813b83959cbdada312ea3" + "sha256:ec55bf7fe21fff7f1ad2f7da62363d749e2a470500eab1b555334b67aa1ef8cf", + "sha256:ec8b276a6b60bd80defed25add7e439881c19e64850afd9b346283d4165fd0fd" ], "markers": "python_version >= '3.6'", - "version": "==2.5.0" + "version": "==3.0.1" }, "pygments": { "hashes": [ - "sha256:56a8508ae95f98e2b9bdf93a6be5ae3f7d8af858b43e02c5a2ff083726be40c1", - "sha256:f643f331ab57ba3c9d89212ee4a2dabc6e94f117cf4eefde99a0574720d14c42" + "sha256:b3ed06a9e8ac9a9aae5a6f5dbe78a8a58655d17b43b93c078f094ddc476ae297", + "sha256:fa7bd7bd2771287c0de303af8bfdfc731f51bd2c6a47ab69d117138893b82717" ], "markers": "python_version >= '3.6'", - "version": "==2.13.0" + "version": "==2.14.0" }, - "pyparsing": { + "pyproject-hooks": { "hashes": [ - "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb", - "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc" + "sha256:283c11acd6b928d2f6a7c73fa0d01cb2bdc5f07c57a2eeb6e83d5e56b97976f8", + "sha256:f271b298b97f5955d53fb12b72c1fb1948c22c1a6b70b315c54cedaca0264ef5" ], - "markers": "python_full_version >= '3.6.8'", - "version": "==3.0.9" + "markers": "python_version >= '3.7'", + "version": "==1.0.0" }, "pyright": { "hashes": [ - "sha256:2a1a8cc4a9109d0d934b988c0099fc4b9189567d1a258b634f7babe352ba6661", - "sha256:f0f9eb1b26871c5ac8bf3f32de6aafaffbfb252f5d7dc0fda2c6cba37e2c4232" + "sha256:5b27e28a1cfc60cea707fd3b644769fa6dd0b194481cdcc2399cf2a51cc5a846", + "sha256:fea5fed3d6a3f02259e622c901e86a7b8bcf237d35e1cdfe01d0e0723768dcb6" ], "index": "pypi", - "version": "==1.1.274" + "version": "==1.1.294" }, "pytest": { "hashes": [ - "sha256:1377bda3466d70b55e3f5cecfa55bb7cfcf219c7964629b967c37cf0bda818b7", - "sha256:4f365fec2dff9c1162f834d9f18af1ba13062db0c708bf7b946f8a5c76180c39" + "sha256:c7c6ca206e93355074ae32f7403e8ea12163b1163c976fee7d4d84027c162be5", + "sha256:d45e0952f3727241918b8fd0f376f5ff6b301cc0777c6f9a556935c92d8a7d42" ], "index": "pypi", - "version": "==7.1.3" + "version": "==7.2.1" }, "pytz": { "hashes": [ - "sha256:2c0784747071402c6e99f0bafdb7da0fa22645f06554c7ae06bf6358897e9c91", - "sha256:48ce799d83b6f8aab2020e369b627446696619e79645419610b9facd909b3174" + "sha256:01a0681c4b9684a28304615eba55d1ab31ae00bf68ec157ec3708a8182dbbcd0", + "sha256:78f4f37d8198e0627c5f1143240bb0206b8691d8d7ac6d78fee88b78733f8c4a" ], - "version": "==2022.4" + "version": "==2022.7.1" }, "pyyaml": { "hashes": [ @@ -541,19 +662,19 @@ }, "requests": { "hashes": [ - "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983", - "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349" + "sha256:64299f4909223da747622c030b781c0d7811e359c37124b4bd368fb8c6518baa", + "sha256:98b1b2782e3c6c4904938b84c0eb932721069dfdb9134313beff7c83c2df24bf" ], "markers": "python_version >= '3.7' and python_version < '4'", - "version": "==2.28.1" + "version": "==2.28.2" }, "setuptools": { "hashes": [ - "sha256:1b6bdc6161661409c5f21508763dc63ab20a9ac2f8ba20029aaaa7fdb9118012", - "sha256:3050e338e5871e70c72983072fe34f6032ae1cdeeeb67338199c2f74e083a80e" + "sha256:95f00380ef2ffa41d9bba85d95b27689d923c93dfbafed4aecd7cf988a25e012", + "sha256:bb6d8e508de562768f2027902929f8523932fcd1fb784e6d573d2cafac995a48" ], "markers": "python_version >= '3.7'", - "version": "==65.4.1" + "version": "==67.3.2" }, "snowballstemmer": { "hashes": [ @@ -564,19 +685,19 @@ }, "sphinx": { "hashes": [ - "sha256:5b10cb1022dac8c035f75767799c39217a05fc0fe2d6fe5597560d38e44f0363", - "sha256:7abf6fabd7b58d0727b7317d5e2650ef68765bbe0ccb63c8795fa8683477eaa2" + "sha256:0dac3b698538ffef41716cf97ba26c1c7788dba73ce6f150c1ff5b4720786dd2", + "sha256:807d1cb3d6be87eb78a381c3e70ebd8d346b9a25f3753e9947e866b2786865fc" ], "index": "pypi", - "version": "==5.2.3" + "version": "==6.1.3" }, "sphinxcontrib-applehelp": { "hashes": [ - "sha256:806111e5e962be97c29ec4c1e7fe277bfd19e9652fb1a4392105b43e01af885a", - "sha256:a072735ec80e7675e3f432fcae8610ecf509c5f1869d17e2eecff44389cdbc58" + "sha256:29d341f67fb0f6f586b23ad80e072c8e6ad0b48417db2bde114a4c9746feb228", + "sha256:828f867945bbe39817c210a1abfd1bc4895c8b73fcaade56d45357a348a07d7e" ], - "markers": "python_version >= '3.5'", - "version": "==1.0.2" + "markers": "python_version >= '3.8'", + "version": "==1.0.4" }, "sphinxcontrib-devhelp": { "hashes": [ @@ -588,11 +709,11 @@ }, "sphinxcontrib-htmlhelp": { "hashes": [ - "sha256:d412243dfb797ae3ec2b59eca0e52dac12e75a241bf0e4eb861e450d06c6ed07", - "sha256:f5f8bb2d0d629f398bf47d0d69c07bc13b65f75a81ad9e2f71a63d4b7a2f6db2" + "sha256:0cbdd302815330058422b98a113195c9249825d681e18f11e8b1f78a2f11efff", + "sha256:c38cb46dccf316c79de6e5515e1770414b797162b23cd3d06e67020e1d2a6903" ], - "markers": "python_version >= '3.6'", - "version": "==2.0.0" + "markers": "python_version >= '3.8'", + "version": "==2.0.1" }, "sphinxcontrib-jsmath": { "hashes": [ @@ -631,32 +752,32 @@ "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc", "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f" ], - "markers": "python_full_version < '3.11.0a7'", + "markers": "python_version < '3.11'", "version": "==2.0.1" }, "typing-extensions": { "hashes": [ - "sha256:25642c956049920a5aa49edcdd6ab1e06d7e5d467fc00e0506c44ac86fbfca02", - "sha256:e6d2677a32f47fc7eb2795db1dd15c1f34eff616bcaf2cfb5e997f854fa1c4a6" + "sha256:5cb5f4a79139d699607b3ef622a1dedafa84e115ab0024e0d9c044a9479ca7cb", + "sha256:fb33085c39dd998ac16d1431ebc293a8b3eedd00fd4a32de0ff79002c19511b4" ], "index": "pypi", - "version": "==4.3.0" + "version": "==4.5.0" }, "urllib3": { "hashes": [ - "sha256:3fa96cf423e6987997fc326ae8df396db2a8b7c667747d47ddd8ecba91f4a74e", - "sha256:b930dd878d5a8afb066a637fbb35144fe7901e3b209d1cd4f524bd0e9deee997" + "sha256:076907bf8fd355cde77728471316625a4d2f7e713c125f51953bb5b3eecf4f72", + "sha256:75edcdc2f7d85b137124a6c3c9fc3933cdeaa12ecb9a6a959f22797a0feca7e1" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5' and python_version < '4'", - "version": "==1.26.12" + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", + "version": "==1.26.14" }, "virtualenv": { "hashes": [ - "sha256:227ea1b9994fdc5ea31977ba3383ef296d7472ea85be9d6732e42a91c04e80da", - "sha256:d07dfc5df5e4e0dbc92862350ad87a36ed505b978f6c39609dc489eadd5b0d27" + "sha256:37a640ba82ed40b226599c522d411e4be5edb339a0c0de030c0dc7b646d61590", + "sha256:54eb59e7352b573aa04d53f80fc9736ed0ad5143af445a1e539aada6eb947dd1" ], - "markers": "python_version >= '3.6'", - "version": "==20.16.5" + "markers": "python_version >= '3.7'", + "version": "==20.19.0" }, "virtualenv-clone": { "hashes": [ diff --git a/python/examples/protobuf/foxglove/PackedElementField_pb2.py b/python/examples/protobuf/foxglove/PackedElementField_pb2.py deleted file mode 100644 index e69c850f4e..0000000000 --- a/python/examples/protobuf/foxglove/PackedElementField_pb2.py +++ /dev/null @@ -1,37 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: foxglove/PackedElementField.proto -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!foxglove/PackedElementField.proto\x12\x08\x66oxglove\"\xe3\x01\n\x12PackedElementField\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0e\n\x06offset\x18\x02 \x01(\x07\x12\x36\n\x04type\x18\x03 \x01(\x0e\x32(.foxglove.PackedElementField.NumericType\"w\n\x0bNumericType\x12\x0b\n\x07UNKNOWN\x10\x00\x12\t\n\x05UINT8\x10\x01\x12\x08\n\x04INT8\x10\x02\x12\n\n\x06UINT16\x10\x03\x12\t\n\x05INT16\x10\x04\x12\n\n\x06UINT32\x10\x05\x12\t\n\x05INT32\x10\x06\x12\x0b\n\x07\x46LOAT32\x10\x07\x12\x0b\n\x07\x46LOAT64\x10\x08\x62\x06proto3') - - - -_PACKEDELEMENTFIELD = DESCRIPTOR.message_types_by_name['PackedElementField'] -_PACKEDELEMENTFIELD_NUMERICTYPE = _PACKEDELEMENTFIELD.enum_types_by_name['NumericType'] -PackedElementField = _reflection.GeneratedProtocolMessageType('PackedElementField', (_message.Message,), { - 'DESCRIPTOR' : _PACKEDELEMENTFIELD, - '__module__' : 'foxglove.PackedElementField_pb2' - # @@protoc_insertion_point(class_scope:foxglove.PackedElementField) - }) -_sym_db.RegisterMessage(PackedElementField) - -if _descriptor._USE_C_DESCRIPTORS == False: - - DESCRIPTOR._options = None - _PACKEDELEMENTFIELD._serialized_start=48 - _PACKEDELEMENTFIELD._serialized_end=275 - _PACKEDELEMENTFIELD_NUMERICTYPE._serialized_start=156 - _PACKEDELEMENTFIELD_NUMERICTYPE._serialized_end=275 -# @@protoc_insertion_point(module_scope) diff --git a/python/examples/protobuf/foxglove/PointCloud_pb2.py b/python/examples/protobuf/foxglove/PointCloud_pb2.py deleted file mode 100644 index 3a11403204..0000000000 --- a/python/examples/protobuf/foxglove/PointCloud_pb2.py +++ /dev/null @@ -1,37 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: foxglove/PointCloud.proto -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from foxglove import PackedElementField_pb2 as foxglove_dot_PackedElementField__pb2 -from foxglove import Pose_pb2 as foxglove_dot_Pose__pb2 -from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x19\x66oxglove/PointCloud.proto\x12\x08\x66oxglove\x1a!foxglove/PackedElementField.proto\x1a\x13\x66oxglove/Pose.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xbd\x01\n\nPointCloud\x12-\n\ttimestamp\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x10\n\x08\x66rame_id\x18\x02 \x01(\t\x12\x1c\n\x04pose\x18\x03 \x01(\x0b\x32\x0e.foxglove.Pose\x12\x14\n\x0cpoint_stride\x18\x04 \x01(\x07\x12,\n\x06\x66ields\x18\x05 \x03(\x0b\x32\x1c.foxglove.PackedElementField\x12\x0c\n\x04\x64\x61ta\x18\x06 \x01(\x0c\x62\x06proto3') - - - -_POINTCLOUD = DESCRIPTOR.message_types_by_name['PointCloud'] -PointCloud = _reflection.GeneratedProtocolMessageType('PointCloud', (_message.Message,), { - 'DESCRIPTOR' : _POINTCLOUD, - '__module__' : 'foxglove.PointCloud_pb2' - # @@protoc_insertion_point(class_scope:foxglove.PointCloud) - }) -_sym_db.RegisterMessage(PointCloud) - -if _descriptor._USE_C_DESCRIPTORS == False: - - DESCRIPTOR._options = None - _POINTCLOUD._serialized_start=129 - _POINTCLOUD._serialized_end=318 -# @@protoc_insertion_point(module_scope) diff --git a/python/examples/protobuf/foxglove/Pose_pb2.py b/python/examples/protobuf/foxglove/Pose_pb2.py deleted file mode 100644 index 6adc7c9fe5..0000000000 --- a/python/examples/protobuf/foxglove/Pose_pb2.py +++ /dev/null @@ -1,36 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: foxglove/Pose.proto -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from foxglove import Quaternion_pb2 as foxglove_dot_Quaternion__pb2 -from foxglove import Vector3_pb2 as foxglove_dot_Vector3__pb2 - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x13\x66oxglove/Pose.proto\x12\x08\x66oxglove\x1a\x19\x66oxglove/Quaternion.proto\x1a\x16\x66oxglove/Vector3.proto\"V\n\x04Pose\x12#\n\x08position\x18\x01 \x01(\x0b\x32\x11.foxglove.Vector3\x12)\n\x0borientation\x18\x02 \x01(\x0b\x32\x14.foxglove.Quaternionb\x06proto3') - - - -_POSE = DESCRIPTOR.message_types_by_name['Pose'] -Pose = _reflection.GeneratedProtocolMessageType('Pose', (_message.Message,), { - 'DESCRIPTOR' : _POSE, - '__module__' : 'foxglove.Pose_pb2' - # @@protoc_insertion_point(class_scope:foxglove.Pose) - }) -_sym_db.RegisterMessage(Pose) - -if _descriptor._USE_C_DESCRIPTORS == False: - - DESCRIPTOR._options = None - _POSE._serialized_start=84 - _POSE._serialized_end=170 -# @@protoc_insertion_point(module_scope) diff --git a/python/examples/protobuf/foxglove/Quaternion_pb2.py b/python/examples/protobuf/foxglove/Quaternion_pb2.py deleted file mode 100644 index 7ab95ead5a..0000000000 --- a/python/examples/protobuf/foxglove/Quaternion_pb2.py +++ /dev/null @@ -1,34 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: foxglove/Quaternion.proto -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x19\x66oxglove/Quaternion.proto\x12\x08\x66oxglove\"8\n\nQuaternion\x12\t\n\x01x\x18\x01 \x01(\x01\x12\t\n\x01y\x18\x02 \x01(\x01\x12\t\n\x01z\x18\x03 \x01(\x01\x12\t\n\x01w\x18\x04 \x01(\x01\x62\x06proto3') - - - -_QUATERNION = DESCRIPTOR.message_types_by_name['Quaternion'] -Quaternion = _reflection.GeneratedProtocolMessageType('Quaternion', (_message.Message,), { - 'DESCRIPTOR' : _QUATERNION, - '__module__' : 'foxglove.Quaternion_pb2' - # @@protoc_insertion_point(class_scope:foxglove.Quaternion) - }) -_sym_db.RegisterMessage(Quaternion) - -if _descriptor._USE_C_DESCRIPTORS == False: - - DESCRIPTOR._options = None - _QUATERNION._serialized_start=39 - _QUATERNION._serialized_end=95 -# @@protoc_insertion_point(module_scope) diff --git a/python/examples/protobuf/foxglove/Vector2_pb2.py b/python/examples/protobuf/foxglove/Vector2_pb2.py deleted file mode 100644 index d514d07016..0000000000 --- a/python/examples/protobuf/foxglove/Vector2_pb2.py +++ /dev/null @@ -1,34 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: foxglove/Vector2.proto -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x16\x66oxglove/Vector2.proto\x12\x08\x66oxglove\"\x1f\n\x07Vector2\x12\t\n\x01x\x18\x01 \x01(\x01\x12\t\n\x01y\x18\x02 \x01(\x01\x62\x06proto3') - - - -_VECTOR2 = DESCRIPTOR.message_types_by_name['Vector2'] -Vector2 = _reflection.GeneratedProtocolMessageType('Vector2', (_message.Message,), { - 'DESCRIPTOR' : _VECTOR2, - '__module__' : 'foxglove.Vector2_pb2' - # @@protoc_insertion_point(class_scope:foxglove.Vector2) - }) -_sym_db.RegisterMessage(Vector2) - -if _descriptor._USE_C_DESCRIPTORS == False: - - DESCRIPTOR._options = None - _VECTOR2._serialized_start=36 - _VECTOR2._serialized_end=67 -# @@protoc_insertion_point(module_scope) diff --git a/python/examples/protobuf/foxglove/Vector3_pb2.py b/python/examples/protobuf/foxglove/Vector3_pb2.py deleted file mode 100644 index a971ddff0e..0000000000 --- a/python/examples/protobuf/foxglove/Vector3_pb2.py +++ /dev/null @@ -1,34 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: foxglove/Vector3.proto -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x16\x66oxglove/Vector3.proto\x12\x08\x66oxglove\"*\n\x07Vector3\x12\t\n\x01x\x18\x01 \x01(\x01\x12\t\n\x01y\x18\x02 \x01(\x01\x12\t\n\x01z\x18\x03 \x01(\x01\x62\x06proto3') - - - -_VECTOR3 = DESCRIPTOR.message_types_by_name['Vector3'] -Vector3 = _reflection.GeneratedProtocolMessageType('Vector3', (_message.Message,), { - 'DESCRIPTOR' : _VECTOR3, - '__module__' : 'foxglove.Vector3_pb2' - # @@protoc_insertion_point(class_scope:foxglove.Vector3) - }) -_sym_db.RegisterMessage(Vector3) - -if _descriptor._USE_C_DESCRIPTORS == False: - - DESCRIPTOR._options = None - _VECTOR3._serialized_start=36 - _VECTOR3._serialized_end=78 -# @@protoc_insertion_point(module_scope) diff --git a/python/examples/protobuf/foxglove/__init__.py b/python/examples/protobuf/foxglove/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/python/examples/protobuf/image_example.py b/python/examples/protobuf/image_example.py new file mode 100644 index 0000000000..a23048d7f4 --- /dev/null +++ b/python/examples/protobuf/image_example.py @@ -0,0 +1,115 @@ +# This example writes a single point cloud message. +from io import BytesIO +from random import random +from typing import List +import struct +import time +import sys + +from mcap_protobuf.writer import Writer + +from google.protobuf.timestamp_pb2 import Timestamp + +from foxglove_schemas_protobuf.CameraCalibration_pb2 import CameraCalibration +from foxglove_schemas_protobuf.CircleAnnotation_pb2 import CircleAnnotation +from foxglove_schemas_protobuf.Color_pb2 import Color +from foxglove_schemas_protobuf.ImageAnnotations_pb2 import ImageAnnotations +from foxglove_schemas_protobuf.Point2_pb2 import Point2 +from foxglove_schemas_protobuf.RawImage_pb2 import RawImage + + +def main(): + if len(sys.argv) != 2: + print(f"Usage: {sys.argv[0]} ") + sys.exit(1) + + with open(sys.argv[1], "wb") as f, Writer(f) as writer: + start = time.time_ns() + for i in range(10): + now = start + i * 100_000_000 + write_frame(writer, now) + + +def write_frame(writer: Writer, now: int): + width = 128 + height = 128 + data = BytesIO() + # Generate a geometric pattern using `now` as a seed + seed = int(now / 100_000_000) + for y in range(height): + for x in range(width): + r = (x + seed) % 256 + g = (y + seed) % 256 + b = (x * y + seed) % 256 + data.write(struct.pack("BBB", r, g, b)) + + circles: List[CircleAnnotation] = [] + for _ in range(10): + circles.append( + CircleAnnotation( + timestamp=timestamp(now), + position=Point2(x=random() * width, y=random() * height), + diameter=random() * (width / 2), + thickness=random() * 2, + outline_color=Color(r=random(), g=random(), b=random(), a=1), + ) + ) + + # /camera/image + img = RawImage( + timestamp=timestamp(now), + frame_id="camera", + width=width, + height=height, + encoding="rgb8", + step=width * 3, + data=data.getvalue(), + ) + writer.write_message( + topic="/camera/image", + log_time=now, + message=img, + publish_time=now, + ) + + # /camera/calibration + focal_length_mm = 35.0 + sensor_width_mm = 10.0 + fx = (focal_length_mm / sensor_width_mm) * width + fy = (focal_length_mm / sensor_width_mm) * height + cx = width / 2 + cy = height / 2 + cal = CameraCalibration( + timestamp=timestamp(now), + frame_id="camera", + width=width, + height=height, + distortion_model="plumb_bob", + D=[0.0, 0.0, 0.0, 0.0, 0.0], + K=[fx, 0.0, cx, 0.0, fy, cy, 0.0, 0.0, 1.0], + R=[1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0], + P=[fx, 0.0, cx, 0.0, 0.0, fy, cy, 0.0, 0.0, 0.0, 1.0, 0.0], + ) + writer.write_message( + topic="/camera/calibration", + log_time=now, + message=cal, + publish_time=now, + ) + + # /camera/annotations + ann = ImageAnnotations(circles=circles) + writer.write_message( + topic="/camera/annotations", + log_time=now, + message=ann, + publish_time=now, + ) + + +def timestamp(time_ns: int) -> Timestamp: + return Timestamp(seconds=time_ns // 1_000_000_000, nanos=time_ns % 1_000_000_000) + + +if __name__ == "__main__": + main() diff --git a/python/examples/protobuf/point_cloud_example.py b/python/examples/protobuf/point_cloud_example.py index f852ee1f7e..3d45f6ce86 100644 --- a/python/examples/protobuf/point_cloud_example.py +++ b/python/examples/protobuf/point_cloud_example.py @@ -9,20 +9,24 @@ from google.protobuf.timestamp_pb2 import Timestamp -from foxglove.PointCloud_pb2 import PointCloud -from foxglove.PackedElementField_pb2 import PackedElementField -from foxglove.Pose_pb2 import Pose -from foxglove.Vector3_pb2 import Vector3 -from foxglove.Quaternion_pb2 import Quaternion +from foxglove_schemas_protobuf.PointCloud_pb2 import PointCloud +from foxglove_schemas_protobuf.PackedElementField_pb2 import PackedElementField +from foxglove_schemas_protobuf.Pose_pb2 import Pose +from foxglove_schemas_protobuf.Vector3_pb2 import Vector3 +from foxglove_schemas_protobuf.Quaternion_pb2 import Quaternion def main(): + if len(sys.argv) != 2: + print(f"Usage: {sys.argv[0]} ") + sys.exit(1) + with open(sys.argv[1], "wb") as f, Writer(f) as writer: fields = [ - PackedElementField(name="x", offset=0, type=7), - PackedElementField(name="y", offset=4, type=7), - PackedElementField(name="z", offset=8, type=7), - PackedElementField(name="intensity", offset=12, type=7), + PackedElementField(name="x", offset=0, type=PackedElementField.FLOAT32), + PackedElementField(name="y", offset=4, type=PackedElementField.FLOAT32), + PackedElementField(name="z", offset=8, type=PackedElementField.FLOAT32), + PackedElementField(name="intensity", offset=12, type=PackedElementField.FLOAT32), ] pose = Pose( position=Vector3(x=0, y=0, z=0), diff --git a/python/examples/protobuf/proto/foxglove/PackedElementField.proto b/python/examples/protobuf/proto/foxglove/PackedElementField.proto deleted file mode 100644 index 2e8dbe7337..0000000000 --- a/python/examples/protobuf/proto/foxglove/PackedElementField.proto +++ /dev/null @@ -1,37 +0,0 @@ -// Generated by https://github.com/foxglove/schemas - -syntax = "proto3"; - -package foxglove; - -// A field present within each element in a byte array of packed elements. -message PackedElementField { - // Numeric type - enum NumericType { - UNKNOWN = 0; - - UINT8 = 1; - - INT8 = 2; - - UINT16 = 3; - - INT16 = 4; - - UINT32 = 5; - - INT32 = 6; - - FLOAT32 = 7; - - FLOAT64 = 8; - } - // Name of the field - string name = 1; - - // Byte offset from start of data buffer - fixed32 offset = 2; - - // Type of data in the field. Integers are stored using little-endian byte order. - NumericType type = 3; -} diff --git a/python/examples/protobuf/proto/foxglove/PointCloud.proto b/python/examples/protobuf/proto/foxglove/PointCloud.proto deleted file mode 100644 index 7a99abe3e1..0000000000 --- a/python/examples/protobuf/proto/foxglove/PointCloud.proto +++ /dev/null @@ -1,30 +0,0 @@ -// Generated by https://github.com/foxglove/schemas - -syntax = "proto3"; - -import "foxglove/PackedElementField.proto"; -import "foxglove/Pose.proto"; -import "google/protobuf/timestamp.proto"; - -package foxglove; - -// A collection of N-dimensional points, which may contain additional fields with information like normals, intensity, etc. -message PointCloud { - // Timestamp of point cloud - google.protobuf.Timestamp timestamp = 1; - - // Frame of reference - string frame_id = 2; - - // The origin of the point cloud relative to the frame of reference - foxglove.Pose pose = 3; - - // Number of bytes between points in the `data` - fixed32 point_stride = 4; - - // Fields in the `data` - repeated foxglove.PackedElementField fields = 5; - - // Point data, interpreted using `fields` - bytes data = 6; -} diff --git a/python/examples/protobuf/proto/foxglove/Pose.proto b/python/examples/protobuf/proto/foxglove/Pose.proto deleted file mode 100644 index 5c93902c99..0000000000 --- a/python/examples/protobuf/proto/foxglove/Pose.proto +++ /dev/null @@ -1,17 +0,0 @@ -// Generated by https://github.com/foxglove/schemas - -syntax = "proto3"; - -import "foxglove/Quaternion.proto"; -import "foxglove/Vector3.proto"; - -package foxglove; - -// A position and orientation for an object or reference frame in 3D space -message Pose { - // Point denoting position in 3D space - foxglove.Vector3 position = 1; - - // Quaternion denoting orientation in 3D space - foxglove.Quaternion orientation = 2; -} diff --git a/python/examples/protobuf/proto/foxglove/Quaternion.proto b/python/examples/protobuf/proto/foxglove/Quaternion.proto deleted file mode 100644 index bc1111251f..0000000000 --- a/python/examples/protobuf/proto/foxglove/Quaternion.proto +++ /dev/null @@ -1,20 +0,0 @@ -// Generated by https://github.com/foxglove/schemas - -syntax = "proto3"; - -package foxglove; - -// A [quaternion](https://eater.net/quaternions) representing a rotation in 3D space -message Quaternion { - // x value - double x = 1; - - // y value - double y = 2; - - // z value - double z = 3; - - // w value - double w = 4; -} diff --git a/python/examples/protobuf/proto/foxglove/Vector2.proto b/python/examples/protobuf/proto/foxglove/Vector2.proto deleted file mode 100644 index f98d3a0cad..0000000000 --- a/python/examples/protobuf/proto/foxglove/Vector2.proto +++ /dev/null @@ -1,14 +0,0 @@ -// Generated by https://github.com/foxglove/schemas - -syntax = "proto3"; - -package foxglove; - -// A vector in 2D space that represents a direction only -message Vector2 { - // x coordinate length - double x = 1; - - // y coordinate length - double y = 2; -} diff --git a/python/examples/protobuf/proto/foxglove/Vector3.proto b/python/examples/protobuf/proto/foxglove/Vector3.proto deleted file mode 100644 index d9abdc7680..0000000000 --- a/python/examples/protobuf/proto/foxglove/Vector3.proto +++ /dev/null @@ -1,17 +0,0 @@ -// Generated by https://github.com/foxglove/schemas - -syntax = "proto3"; - -package foxglove; - -// A vector in 3D space that represents a direction only -message Vector3 { - // x coordinate length - double x = 1; - - // y coordinate length - double y = 2; - - // z coordinate length - double z = 3; -} diff --git a/python/mcap-protobuf-support/README.md b/python/mcap-protobuf-support/README.md index c39491fb95..31698fa70b 100644 --- a/python/mcap-protobuf-support/README.md +++ b/python/mcap-protobuf-support/README.md @@ -30,7 +30,7 @@ cd examples You should now be able to run the examples: ```bash -pipenv run python point_cloud_example.py +pipenv run python point_cloud_example.py output.mcap ``` ## Stay in touch diff --git a/python/mcap-protobuf-support/mcap_protobuf/reader.py b/python/mcap-protobuf-support/mcap_protobuf/reader.py index a1d9ab3b9f..8915082e8b 100644 --- a/python/mcap-protobuf-support/mcap_protobuf/reader.py +++ b/python/mcap-protobuf-support/mcap_protobuf/reader.py @@ -14,7 +14,7 @@ def read_protobuf_messages( - source: Union[str, bytes, PathLike, McapReader, IO[bytes]], + source: Union[str, bytes, PathLike[str], McapReader, IO[bytes]], topics: Optional[Iterable[str]] = None, start_time: Optional[Union[int, datetime]] = None, end_time: Optional[Union[int, datetime]] = None, diff --git a/python/mcap-protobuf-support/mcap_protobuf/writer.py b/python/mcap-protobuf-support/mcap_protobuf/writer.py index 34b5bea1de..c726febde5 100644 --- a/python/mcap-protobuf-support/mcap_protobuf/writer.py +++ b/python/mcap-protobuf-support/mcap_protobuf/writer.py @@ -82,5 +82,5 @@ def finish(self): def __enter__(self): return self - def __exit__(self, exc_, exc_type_, tb_): + def __exit__(self, exc_: Any, exc_type_: Any, tb_: Any): self.finish() diff --git a/python/mcap-ros2-support/mcap_ros2/reader.py b/python/mcap-ros2-support/mcap_ros2/reader.py index 4bb2842fdd..6c787ba14f 100644 --- a/python/mcap-ros2-support/mcap_ros2/reader.py +++ b/python/mcap-ros2-support/mcap_ros2/reader.py @@ -67,7 +67,6 @@ def read_ros2_messages( for schema, channel, message in reader.iter_messages( topics, start_time, end_time, log_time_order, reverse ): - if schema is None: raise McapROS2DecodeError( f"cannot decode schemaless channel with encoding: {channel.message_encoding}"