diff --git a/pixi.lock b/pixi.lock index 0780132..bbeca4c 100644 --- a/pixi.lock +++ b/pixi.lock @@ -208,7 +208,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/cc/8f/ec6289987824b29529d0dfda0d74a07cec60e54b9c92f3c9da4c0ac732de/contourpy-1.3.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/20/2c/0622f20ff02b2ef32558733443805dc82fd4c275be01b2d19d14676f3a1b/cryptography-49.0.0-cp311-abi3-manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl - - pypi: git+https://github.com/EarthScope/earthscope-sfg-tools.git?rev=0.1.2#e68a08d1eb87f5e28c93e20ac036b8ccdafe494e + - pypi: git+https://github.com/EarthScope/earthscope-sfg-tools.git?rev=0.2.0#1d6c1f1e46885d76c4cfcfdf51c7d162c97b241f - pypi: https://files.pythonhosted.org/packages/ca/7d/33ef69e569b47ba96c7d319621674ad36e8920339a90386babc584ad060f/earthscope_cli-1.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ac/bf/06e808652b197ce899df44f202791a053561daaef121b77dc8efea522210/earthscope_sdk-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/77/c7/2342da9830e3e9d4870305ca5d2091d2a83284f2953079b7bdd3b5e029d8/fonttools-4.63.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl @@ -458,7 +458,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/be/45/adfee365d9ea3d853550b2e735f9d66366701c65db7855cd07621732ccfc/contourpy-1.3.3-cp312-cp312-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/1f/99/d1c90d6041656cc6ee229dc99cd67fd0cd5aec3c5f7d72fffc27cc750054/cryptography-49.0.0.tar.gz - pypi: https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl - - pypi: git+https://github.com/EarthScope/earthscope-sfg-tools.git?rev=0.1.2#e68a08d1eb87f5e28c93e20ac036b8ccdafe494e + - pypi: git+https://github.com/EarthScope/earthscope-sfg-tools.git?rev=0.2.0#1d6c1f1e46885d76c4cfcfdf51c7d162c97b241f - pypi: https://files.pythonhosted.org/packages/ca/7d/33ef69e569b47ba96c7d319621674ad36e8920339a90386babc584ad060f/earthscope_cli-1.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ac/bf/06e808652b197ce899df44f202791a053561daaef121b77dc8efea522210/earthscope_sdk-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/44/a0/c815bea63117fa63e4e1c01f8a1110d2112fa003f838e6467094ec2432ce/fonttools-4.63.0-cp312-cp312-macosx_10_13_x86_64.whl @@ -707,7 +707,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/53/3e/405b59cfa13021a56bba395a6b3aca8cec012b45bf177b0eaf7a202cde2c/contourpy-1.3.3-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/9b/22/adf66990e63584a68dfb50c24f48a125c07b1699899381c8151e63ed458c/cryptography-49.0.0-cp311-abi3-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl - - pypi: git+https://github.com/EarthScope/earthscope-sfg-tools.git?rev=0.1.2#e68a08d1eb87f5e28c93e20ac036b8ccdafe494e + - pypi: git+https://github.com/EarthScope/earthscope-sfg-tools.git?rev=0.2.0#1d6c1f1e46885d76c4cfcfdf51c7d162c97b241f - pypi: https://files.pythonhosted.org/packages/ca/7d/33ef69e569b47ba96c7d319621674ad36e8920339a90386babc584ad060f/earthscope_cli-1.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ac/bf/06e808652b197ce899df44f202791a053561daaef121b77dc8efea522210/earthscope_sdk-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/08/ef/b3c6b9b5be2f82416d73fe2ed2e96e2793cd80e7510bd6a17ca79cdd88ec/fonttools-4.63.0-cp312-cp312-macosx_10_13_universal2.whl @@ -958,7 +958,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/19/e8/6026ed58a64563186a9ee3f29f41261fd1828f527dd93d33b60feca63352/contourpy-1.3.3-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/1f/09/f42b1d190c5ba75f72062a387f8030d1d75f6ab035788f1d9c4b01de6525/cryptography-49.0.0-cp311-abi3-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl - - pypi: git+https://github.com/EarthScope/earthscope-sfg-tools.git?rev=0.1.2#e68a08d1eb87f5e28c93e20ac036b8ccdafe494e + - pypi: git+https://github.com/EarthScope/earthscope-sfg-tools.git?rev=0.2.0#1d6c1f1e46885d76c4cfcfdf51c7d162c97b241f - pypi: https://files.pythonhosted.org/packages/ca/7d/33ef69e569b47ba96c7d319621674ad36e8920339a90386babc584ad060f/earthscope_cli-1.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ac/bf/06e808652b197ce899df44f202791a053561daaef121b77dc8efea522210/earthscope_sdk-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/87/36/cccb9bc2a6ab63d1b2980374f0dca72ce95ae267c9b4cfe77455bb70d0d4/fonttools-4.63.0-cp312-cp312-win_amd64.whl @@ -1005,7 +1005,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/f7/af/eaec1466887348d7f6cc9d3a668b30b62a4629fb187d0268146118ba3d5e/s3fs-2024.12.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/48/f0/ae7ca09223a81a1d890b2557186ea015f6e0502e9b8cb8e1813f1d8cfa4e/s3transfer-0.14.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/83/a4/c8e67227c680e2259c8864ae72ff48b06e16a6f51253a22167aa02a8aa4e/scikit_learn-1.9.0-cp312-cp312-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/a2/84/dc08d77fbf3d87d3ee27f6a0c6dcce1de5829a64f2eae85a0ecc1f0daa73/scipy-1.17.1-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/83/11/00d3c3dfc25ad54e731d91449895a79e4bf2384dc3ac01809010ba88f6d5/seaborn-0.13.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/25/dc/46a65916af68a06ef6b972c6050ba4c8f97070fe3fb33097d34229d9bef6/sqlalchemy-2.0.51-cp312-cp312-win_amd64.whl @@ -1191,7 +1190,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/20/2c/0622f20ff02b2ef32558733443805dc82fd4c275be01b2d19d14676f3a1b/cryptography-49.0.0-cp311-abi3-manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/02/10/5da547df7a391dcde17f59520a231527b8571e6f46fc8efb02ccb370ab12/docutils-0.22.4-py3-none-any.whl - - pypi: git+https://github.com/EarthScope/earthscope-sfg-tools.git?rev=0.1.2#e68a08d1eb87f5e28c93e20ac036b8ccdafe494e + - pypi: git+https://github.com/EarthScope/earthscope-sfg-tools.git?rev=0.2.0#1d6c1f1e46885d76c4cfcfdf51c7d162c97b241f - pypi: https://files.pythonhosted.org/packages/ca/7d/33ef69e569b47ba96c7d319621674ad36e8920339a90386babc584ad060f/earthscope_cli-1.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ac/bf/06e808652b197ce899df44f202791a053561daaef121b77dc8efea522210/earthscope_sdk-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/77/c7/2342da9830e3e9d4870305ca5d2091d2a83284f2953079b7bdd3b5e029d8/fonttools-4.63.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl @@ -1412,7 +1411,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/1f/99/d1c90d6041656cc6ee229dc99cd67fd0cd5aec3c5f7d72fffc27cc750054/cryptography-49.0.0.tar.gz - pypi: https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/02/10/5da547df7a391dcde17f59520a231527b8571e6f46fc8efb02ccb370ab12/docutils-0.22.4-py3-none-any.whl - - pypi: git+https://github.com/EarthScope/earthscope-sfg-tools.git?rev=0.1.2#e68a08d1eb87f5e28c93e20ac036b8ccdafe494e + - pypi: git+https://github.com/EarthScope/earthscope-sfg-tools.git?rev=0.2.0#1d6c1f1e46885d76c4cfcfdf51c7d162c97b241f - pypi: https://files.pythonhosted.org/packages/ca/7d/33ef69e569b47ba96c7d319621674ad36e8920339a90386babc584ad060f/earthscope_cli-1.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ac/bf/06e808652b197ce899df44f202791a053561daaef121b77dc8efea522210/earthscope_sdk-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/44/a0/c815bea63117fa63e4e1c01f8a1110d2112fa003f838e6467094ec2432ce/fonttools-4.63.0-cp312-cp312-macosx_10_13_x86_64.whl @@ -1632,7 +1631,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/9b/22/adf66990e63584a68dfb50c24f48a125c07b1699899381c8151e63ed458c/cryptography-49.0.0-cp311-abi3-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/02/10/5da547df7a391dcde17f59520a231527b8571e6f46fc8efb02ccb370ab12/docutils-0.22.4-py3-none-any.whl - - pypi: git+https://github.com/EarthScope/earthscope-sfg-tools.git?rev=0.1.2#e68a08d1eb87f5e28c93e20ac036b8ccdafe494e + - pypi: git+https://github.com/EarthScope/earthscope-sfg-tools.git?rev=0.2.0#1d6c1f1e46885d76c4cfcfdf51c7d162c97b241f - pypi: https://files.pythonhosted.org/packages/ca/7d/33ef69e569b47ba96c7d319621674ad36e8920339a90386babc584ad060f/earthscope_cli-1.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ac/bf/06e808652b197ce899df44f202791a053561daaef121b77dc8efea522210/earthscope_sdk-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/08/ef/b3c6b9b5be2f82416d73fe2ed2e96e2793cd80e7510bd6a17ca79cdd88ec/fonttools-4.63.0-cp312-cp312-macosx_10_13_universal2.whl @@ -1856,7 +1855,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/1f/09/f42b1d190c5ba75f72062a387f8030d1d75f6ab035788f1d9c4b01de6525/cryptography-49.0.0-cp311-abi3-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/02/10/5da547df7a391dcde17f59520a231527b8571e6f46fc8efb02ccb370ab12/docutils-0.22.4-py3-none-any.whl - - pypi: git+https://github.com/EarthScope/earthscope-sfg-tools.git?rev=0.1.2#e68a08d1eb87f5e28c93e20ac036b8ccdafe494e + - pypi: git+https://github.com/EarthScope/earthscope-sfg-tools.git?rev=0.2.0#1d6c1f1e46885d76c4cfcfdf51c7d162c97b241f - pypi: https://files.pythonhosted.org/packages/ca/7d/33ef69e569b47ba96c7d319621674ad36e8920339a90386babc584ad060f/earthscope_cli-1.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ac/bf/06e808652b197ce899df44f202791a053561daaef121b77dc8efea522210/earthscope_sdk-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/87/36/cccb9bc2a6ab63d1b2980374f0dca72ce95ae267c9b4cfe77455bb70d0d4/fonttools-4.63.0-cp312-cp312-win_amd64.whl @@ -1908,7 +1907,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/f7/af/eaec1466887348d7f6cc9d3a668b30b62a4629fb187d0268146118ba3d5e/s3fs-2024.12.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/48/f0/ae7ca09223a81a1d890b2557186ea015f6e0502e9b8cb8e1813f1d8cfa4e/s3transfer-0.14.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/83/a4/c8e67227c680e2259c8864ae72ff48b06e16a6f51253a22167aa02a8aa4e/scikit_learn-1.9.0-cp312-cp312-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/a2/84/dc08d77fbf3d87d3ee27f6a0c6dcce1de5829a64f2eae85a0ecc1f0daa73/scipy-1.17.1-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/83/11/00d3c3dfc25ad54e731d91449895a79e4bf2384dc3ac01809010ba88f6d5/seaborn-0.13.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/4c/07/2ebca9b11fb9be7340a818d8d6f63feaebb146be2c4afbd6061701d6df6e/snowballstemmer-3.1.1-py3-none-any.whl @@ -2235,7 +2233,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/cc/8f/ec6289987824b29529d0dfda0d74a07cec60e54b9c92f3c9da4c0ac732de/contourpy-1.3.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/20/2c/0622f20ff02b2ef32558733443805dc82fd4c275be01b2d19d14676f3a1b/cryptography-49.0.0-cp311-abi3-manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl - - pypi: git+https://github.com/EarthScope/earthscope-sfg-tools.git?rev=0.1.2#e68a08d1eb87f5e28c93e20ac036b8ccdafe494e + - pypi: git+https://github.com/EarthScope/earthscope-sfg-tools.git?rev=0.2.0#1d6c1f1e46885d76c4cfcfdf51c7d162c97b241f - pypi: https://files.pythonhosted.org/packages/ca/7d/33ef69e569b47ba96c7d319621674ad36e8920339a90386babc584ad060f/earthscope_cli-1.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ac/bf/06e808652b197ce899df44f202791a053561daaef121b77dc8efea522210/earthscope_sdk-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/77/c7/2342da9830e3e9d4870305ca5d2091d2a83284f2953079b7bdd3b5e029d8/fonttools-4.63.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl @@ -2582,7 +2580,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/be/45/adfee365d9ea3d853550b2e735f9d66366701c65db7855cd07621732ccfc/contourpy-1.3.3-cp312-cp312-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/1f/99/d1c90d6041656cc6ee229dc99cd67fd0cd5aec3c5f7d72fffc27cc750054/cryptography-49.0.0.tar.gz - pypi: https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl - - pypi: git+https://github.com/EarthScope/earthscope-sfg-tools.git?rev=0.1.2#e68a08d1eb87f5e28c93e20ac036b8ccdafe494e + - pypi: git+https://github.com/EarthScope/earthscope-sfg-tools.git?rev=0.2.0#1d6c1f1e46885d76c4cfcfdf51c7d162c97b241f - pypi: https://files.pythonhosted.org/packages/ca/7d/33ef69e569b47ba96c7d319621674ad36e8920339a90386babc584ad060f/earthscope_cli-1.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ac/bf/06e808652b197ce899df44f202791a053561daaef121b77dc8efea522210/earthscope_sdk-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/44/a0/c815bea63117fa63e4e1c01f8a1110d2112fa003f838e6467094ec2432ce/fonttools-4.63.0-cp312-cp312-macosx_10_13_x86_64.whl @@ -2928,7 +2926,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/53/3e/405b59cfa13021a56bba395a6b3aca8cec012b45bf177b0eaf7a202cde2c/contourpy-1.3.3-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/9b/22/adf66990e63584a68dfb50c24f48a125c07b1699899381c8151e63ed458c/cryptography-49.0.0-cp311-abi3-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl - - pypi: git+https://github.com/EarthScope/earthscope-sfg-tools.git?rev=0.1.2#e68a08d1eb87f5e28c93e20ac036b8ccdafe494e + - pypi: git+https://github.com/EarthScope/earthscope-sfg-tools.git?rev=0.2.0#1d6c1f1e46885d76c4cfcfdf51c7d162c97b241f - pypi: https://files.pythonhosted.org/packages/ca/7d/33ef69e569b47ba96c7d319621674ad36e8920339a90386babc584ad060f/earthscope_cli-1.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ac/bf/06e808652b197ce899df44f202791a053561daaef121b77dc8efea522210/earthscope_sdk-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/08/ef/b3c6b9b5be2f82416d73fe2ed2e96e2793cd80e7510bd6a17ca79cdd88ec/fonttools-4.63.0-cp312-cp312-macosx_10_13_universal2.whl @@ -3273,7 +3271,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/19/e8/6026ed58a64563186a9ee3f29f41261fd1828f527dd93d33b60feca63352/contourpy-1.3.3-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/1f/09/f42b1d190c5ba75f72062a387f8030d1d75f6ab035788f1d9c4b01de6525/cryptography-49.0.0-cp311-abi3-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl - - pypi: git+https://github.com/EarthScope/earthscope-sfg-tools.git?rev=0.1.2#e68a08d1eb87f5e28c93e20ac036b8ccdafe494e + - pypi: git+https://github.com/EarthScope/earthscope-sfg-tools.git?rev=0.2.0#1d6c1f1e46885d76c4cfcfdf51c7d162c97b241f - pypi: https://files.pythonhosted.org/packages/ca/7d/33ef69e569b47ba96c7d319621674ad36e8920339a90386babc584ad060f/earthscope_cli-1.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ac/bf/06e808652b197ce899df44f202791a053561daaef121b77dc8efea522210/earthscope_sdk-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/87/36/cccb9bc2a6ab63d1b2980374f0dca72ce95ae267c9b4cfe77455bb70d0d4/fonttools-4.63.0-cp312-cp312-win_amd64.whl @@ -3320,7 +3318,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/f7/af/eaec1466887348d7f6cc9d3a668b30b62a4629fb187d0268146118ba3d5e/s3fs-2024.12.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/48/f0/ae7ca09223a81a1d890b2557186ea015f6e0502e9b8cb8e1813f1d8cfa4e/s3transfer-0.14.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/83/a4/c8e67227c680e2259c8864ae72ff48b06e16a6f51253a22167aa02a8aa4e/scikit_learn-1.9.0-cp312-cp312-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/a2/84/dc08d77fbf3d87d3ee27f6a0c6dcce1de5829a64f2eae85a0ecc1f0daa73/scipy-1.17.1-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/83/11/00d3c3dfc25ad54e731d91449895a79e4bf2384dc3ac01809010ba88f6d5/seaborn-0.13.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/25/dc/46a65916af68a06ef6b972c6050ba4c8f97070fe3fb33097d34229d9bef6/sqlalchemy-2.0.51-cp312-cp312-win_amd64.whl @@ -6453,7 +6450,7 @@ packages: - freezegun ; extra == 'dev' - ruff ; extra == 'dev' requires_python: '>=3.10' -- pypi: git+https://github.com/EarthScope/earthscope-sfg-tools.git?rev=0.1.2#e68a08d1eb87f5e28c93e20ac036b8ccdafe494e +- pypi: git+https://github.com/EarthScope/earthscope-sfg-tools.git?rev=0.2.0#1d6c1f1e46885d76c4cfcfdf51c7d162c97b241f name: earthscope-sfg-tools version: 0.1.0 requires_dist: @@ -6471,9 +6468,9 @@ packages: - pypi: ./ name: earthscope-sfg-workflows version: 0.1.0 - sha256: 0841529c09f846f35e1bbb982d5e88eb30524b8ba2bd67e280565923cf93ba2b + sha256: 6c9e2090dd0b72b89efa6f0fefcfd985d794d3b5b46143415c9e151f0fdfb5f8 requires_dist: - - earthscope-sfg-tools[tiledb] @ git+https://github.com/EarthScope/earthscope-sfg-tools.git@0.1.2 + - earthscope-sfg-tools[tiledb] @ git+https://github.com/EarthScope/earthscope-sfg-tools.git@0.2.0 - boto3>=1.40 - botocore>=1.40 - sqlalchemy>=2.0 @@ -14631,50 +14628,6 @@ packages: - pkg:pypi/scikit-sparse?source=hash-mapping size: 272578 timestamp: 1760363304408 -- pypi: https://files.pythonhosted.org/packages/a2/84/dc08d77fbf3d87d3ee27f6a0c6dcce1de5829a64f2eae85a0ecc1f0daa73/scipy-1.17.1-cp312-cp312-win_amd64.whl - name: scipy - version: 1.17.1 - sha256: 41b71f4a3a4cab9d366cd9065b288efc4d4f3c0b37a91a8e0947fb5bd7f31d87 - requires_dist: - - numpy>=1.26.4,<2.7 - - pytest>=8.0.0 ; extra == 'test' - - pytest-cov ; extra == 'test' - - pytest-timeout ; extra == 'test' - - pytest-xdist ; extra == 'test' - - asv ; extra == 'test' - - mpmath ; extra == 'test' - - gmpy2 ; extra == 'test' - - threadpoolctl ; extra == 'test' - - scikit-umfpack ; extra == 'test' - - pooch ; extra == 'test' - - hypothesis>=6.30 ; extra == 'test' - - array-api-strict>=2.3.1 ; extra == 'test' - - cython ; extra == 'test' - - meson ; extra == 'test' - - ninja ; sys_platform != 'emscripten' and extra == 'test' - - sphinx>=5.0.0,<8.2.0 ; extra == 'doc' - - intersphinx-registry ; extra == 'doc' - - pydata-sphinx-theme>=0.15.2 ; extra == 'doc' - - sphinx-copybutton ; extra == 'doc' - - sphinx-design>=0.4.0 ; extra == 'doc' - - matplotlib>=3.5 ; extra == 'doc' - - numpydoc ; extra == 'doc' - - jupytext ; extra == 'doc' - - myst-nb>=1.2.0 ; extra == 'doc' - - pooch ; extra == 'doc' - - jupyterlite-sphinx>=0.19.1 ; extra == 'doc' - - jupyterlite-pyodide-kernel ; extra == 'doc' - - linkify-it-py ; extra == 'doc' - - tabulate ; extra == 'doc' - - click<8.3.0 ; extra == 'dev' - - spin ; extra == 'dev' - - mypy==1.10.0 ; extra == 'dev' - - typing-extensions ; extra == 'dev' - - types-psutil ; extra == 'dev' - - pycodestyle ; extra == 'dev' - - ruff>=0.12.0 ; extra == 'dev' - - cython-lint>=0.12.2 ; extra == 'dev' - requires_python: '>=3.11' - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.17.1-py312h54fa4ab_1.conda sha256: d5ac05ad45c0d48731eb189c2cbb2bb99f0e3cb7e1acaad373cb2f1f2597fc75 md5: 15995ecb2ef890778ba9a3750190f09d @@ -14759,7 +14712,8 @@ packages: - vc14_runtime >=14.44.35208 license: BSD-3-Clause license_family: BSD - purls: [] + purls: + - pkg:pypi/scipy?source=hash-mapping size: 15078490 timestamp: 1779876221509 - conda: https://conda.anaconda.org/conda-forge/noarch/sdkroot_env_osx-64-26.0-h62b880e_7.conda diff --git a/pyproject.toml b/pyproject.toml index 023829d..45b521a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -100,7 +100,9 @@ docs = { cmd = "myst start", description = "Serve docs locally with live reload" docs-build = { cmd = "myst build --html", description = "Build docs as static HTML" } # Clone and compile garpos from source (importable via PYTHONPATH set in activation) -clone-garpos = { cmd = "bash -c 'if [ -d .pixi/garpos ]; then git -C .pixi/garpos pull; else git clone https://github.com/s-watanabe-jhod/garpos.git .pixi/garpos; fi'" } +# Pinned to v1.0.2: compile-garpos hardcodes the bin/garpos_v102/f90lib path, +# which does not exist in newer upstream releases. +clone-garpos = { cmd = "bash -c 'if [ -d .pixi/garpos ]; then git -C .pixi/garpos fetch --tags && git -C .pixi/garpos checkout v1.0.2; else git clone --branch v1.0.2 --depth 1 https://github.com/s-watanabe-jhod/garpos.git .pixi/garpos; fi'" } compile-garpos = { cmd = "gfortran -shared -fPIC -fopenmp -O3 -o lib_raytrace.so sub_raytrace.f90 lib_raytrace.f90", cwd = ".pixi/garpos/bin/garpos_v102/f90lib", depends-on = ["clone-garpos"] } test-garpos = { cmd = "pytest tests/test_garpos.py -v", depends-on = ["compile-garpos"] } diff --git a/src/earthscope_sfg_workflows/data_mgmt/adapters/memory.py b/src/earthscope_sfg_workflows/data_mgmt/adapters/memory.py index e6536e5..2445fb1 100644 --- a/src/earthscope_sfg_workflows/data_mgmt/adapters/memory.py +++ b/src/earthscope_sfg_workflows/data_mgmt/adapters/memory.py @@ -11,6 +11,7 @@ from collections import defaultdict from dataclasses import replace from itertools import count +from pathlib import Path from upath import UPath from ..model import ArchiveFile, AssetEntry, AssetKind, SFGScope, FileInfo diff --git a/src/earthscope_sfg_workflows/data_mgmt/archives/archive_pull.py b/src/earthscope_sfg_workflows/data_mgmt/archives/archive_pull.py index 3e002e1..aeeebf7 100644 --- a/src/earthscope_sfg_workflows/data_mgmt/archives/archive_pull.py +++ b/src/earthscope_sfg_workflows/data_mgmt/archives/archive_pull.py @@ -16,7 +16,7 @@ from earthscope_sfg_workflows.data_mgmt.ports import ArchiveAuthError from earthscope_sfg_workflows.logging import ProcessLogger as logger from earthscope_sfg_tools.datamodels.metadata import Site, Vessel, import_site, import_vessel -from ..model import AssetKind, SFGScope +from ..model import AssetKind _detector = FileTypeDetector() diff --git a/src/earthscope_sfg_workflows/data_mgmt/core.py b/src/earthscope_sfg_workflows/data_mgmt/core.py index daa1b2d..19097bc 100644 --- a/src/earthscope_sfg_workflows/data_mgmt/core.py +++ b/src/earthscope_sfg_workflows/data_mgmt/core.py @@ -18,12 +18,12 @@ CampaignLayout, NetworkLayout, DirectoryTree, + SFGScope, StationLayout, GARPOSLayout, SurveyLayout, - TileDBLayout, ) -from .ports import AssetCatalogPort, FileStorePort +from .ports import FileStorePort # --------------------------------------------------------------------------- @@ -32,8 +32,14 @@ DEFAULT_PATTERNS: tuple[tuple[re.Pattern[str], AssetKind], ...] = ( + # Legacy RINEX v2 short names (e.g. "SLT11540.26o" / "BRDC1540.26n"). (re.compile(r"\.\d{2}o$", re.IGNORECASE), AssetKind.RINEX2), (re.compile(r"\.\d{2}n$", re.IGNORECASE), AssetKind.RINEX3), + # RINEX v3/v4 long names (e.g. "SLT100USA_R_20261541758_01D_20C_MO.rnx" + # for observation data, "BRDC00IGS_R_20261540000_01D_MN.rnx" for nav). + # Both share the ".rnx" extension; disambiguate on the data-type suffix. + (re.compile(r"_[A-Z]O\.rnx$", re.IGNORECASE), AssetKind.RINEX2), + (re.compile(r"_[A-Z]N\.rnx$", re.IGNORECASE), AssetKind.RINEX3), (re.compile(r"sonardyne", re.IGNORECASE), AssetKind.SONARDYNE), (re.compile(r"NOV000"), AssetKind.NOVATEL000), (re.compile(r"NOV770"), AssetKind.NOVATEL770), diff --git a/src/earthscope_sfg_workflows/data_mgmt/model.py b/src/earthscope_sfg_workflows/data_mgmt/model.py index 79c2619..d7a3a76 100644 --- a/src/earthscope_sfg_workflows/data_mgmt/model.py +++ b/src/earthscope_sfg_workflows/data_mgmt/model.py @@ -11,7 +11,6 @@ from dataclasses import dataclass, field, replace from datetime import datetime from enum import Enum -from earthscope_sfg_tools.datamodels import Campaign, Site, Survey from upath import UPath # --------------------------------------------------------------------------- diff --git a/src/earthscope_sfg_workflows/data_mgmt/ports.py b/src/earthscope_sfg_workflows/data_mgmt/ports.py index 4855fb5..130e7d8 100644 --- a/src/earthscope_sfg_workflows/data_mgmt/ports.py +++ b/src/earthscope_sfg_workflows/data_mgmt/ports.py @@ -16,6 +16,7 @@ from __future__ import annotations +from pathlib import Path from typing import Protocol, runtime_checkable from upath import UPath diff --git a/src/earthscope_sfg_workflows/modeling/garpos_tools/garpos_handler.py b/src/earthscope_sfg_workflows/modeling/garpos_tools/garpos_handler.py index aca6c2b..574de41 100644 --- a/src/earthscope_sfg_workflows/modeling/garpos_tools/garpos_handler.py +++ b/src/earthscope_sfg_workflows/modeling/garpos_tools/garpos_handler.py @@ -17,10 +17,8 @@ sns.set_theme(style="whitegrid") -from earthscope_sfg_tools.datamodels.metadata import Campaign, Site, Survey # noqa: E402 +from earthscope_sfg_tools.datamodels.metadata import Survey # noqa: E402 from earthscope_sfg_tools.tiledb_integration import ( # noqa: E402 - TDBIMUPositionArray, - TDBKinPositionArray, TDBShotDataArray, ) diff --git a/src/earthscope_sfg_workflows/pipelines/plotting.py b/src/earthscope_sfg_workflows/pipelines/plotting.py index 49973b3..994f68b 100644 --- a/src/earthscope_sfg_workflows/pipelines/plotting.py +++ b/src/earthscope_sfg_workflows/pipelines/plotting.py @@ -50,22 +50,30 @@ def get_rinex_timelast(rinex_asset: AssetEntry) -> datetime.datetime: ref_date = datetime.datetime(1970, 1, 1, 0, 0, 0) with open(rinex_asset.local_path) as f: for line in f: - # line sample: 23 6 24 23 59 59.5000000 0 9G21G27G32G08G10G23G24G02G18 - if line.strip().startswith(year): - date_line = line.strip().split() - try: - current_date = datetime.datetime( - year=2000 + int(date_line[0]), - month=int(date_line[1]), - day=int(date_line[2]), - hour=int(date_line[3]), - minute=int(date_line[4]), - second=int(float(date_line[5])), - ) - if current_date > ref_date: - ref_date = current_date - except Exception: - pass + stripped = line.strip() + if stripped.startswith(">"): + # RINEX v3/v4 epoch record: "> 2026 06 03 17 58 25.5000000 0 36" + date_line = stripped[1:].split() + full_year = True + elif stripped.startswith(year): + # RINEX v2 epoch record: "23 6 24 23 59 59.5000000 0 9G21..." + date_line = stripped.split() + full_year = False + else: + continue + try: + current_date = datetime.datetime( + year=int(date_line[0]) if full_year else 2000 + int(date_line[0]), + month=int(date_line[1]), + day=int(date_line[2]), + hour=int(date_line[3]), + minute=int(date_line[4]), + second=int(float(date_line[5])), + ) + if current_date > ref_date: + ref_date = current_date + except Exception: + pass return ref_date diff --git a/src/earthscope_sfg_workflows/pipelines/qc_pipeline.py b/src/earthscope_sfg_workflows/pipelines/qc_pipeline.py index 47abfb4..2d0331d 100644 --- a/src/earthscope_sfg_workflows/pipelines/qc_pipeline.py +++ b/src/earthscope_sfg_workflows/pipelines/qc_pipeline.py @@ -5,7 +5,6 @@ import datetime import json import os -import sys import threading from collections import deque from dataclasses import replace @@ -433,9 +432,12 @@ def get_rinex_files(self) -> None: if rinex_cfg.override or not self.catalog.is_merge_complete(**merge_signature): try: # tdb2rnx writes RINEX files to CWD; run from rinex_dest. - # Remove any pre-existing .rnx files so the post-run glob is clean. + # Remove any pre-existing RINEX output so the post-run glob is + # clean. Matches both the v3/v4 long name (*.rnx, current + # output format) and the legacy v2 short name (*.??o, in case + # a directory still has files from before the naming switch). rinex_dest.mkdir(parents=True, exist_ok=True) - for _stale in rinex_dest.glob("*.rnx"): + for _stale in [*rinex_dest.glob("*.rnx"), *rinex_dest.glob("*.??o")]: _stale.unlink() old_cwd = Path.cwd() try: diff --git a/src/earthscope_sfg_workflows/pipelines/shotdata_gnss_refinement.py b/src/earthscope_sfg_workflows/pipelines/shotdata_gnss_refinement.py index db79293..cafa4c5 100644 --- a/src/earthscope_sfg_workflows/pipelines/shotdata_gnss_refinement.py +++ b/src/earthscope_sfg_workflows/pipelines/shotdata_gnss_refinement.py @@ -453,9 +453,7 @@ def _interp_positions(query_times) -> np.ndarray: shotdata.loc[mask_ping, "isUpdated"] = True mask_return = ~np.isnan(predicted_return_pos[:, 0]) - shotdata.loc[mask_return, ["east1", "north1", "up1"]] = predicted_return_pos[ - mask_return, : - ] + shotdata.loc[mask_return, ["east1", "north1", "up1"]] = predicted_return_pos[mask_return, :] shotdata.loc[mask_return, "isUpdated"] = True nan_pings = np.isnan(predicted_ping_pos).any(axis=1).sum() diff --git a/src/earthscope_sfg_workflows/pipelines/sv3_pipeline.py b/src/earthscope_sfg_workflows/pipelines/sv3_pipeline.py index 7d96297..97d5939 100644 --- a/src/earthscope_sfg_workflows/pipelines/sv3_pipeline.py +++ b/src/earthscope_sfg_workflows/pipelines/sv3_pipeline.py @@ -14,7 +14,24 @@ # third-party — monkey-patch targets must be imported before the patches below import tiledb as _tiledb +from earthscope_sfg_tools import tiledb_integration as novb_ops +from earthscope_sfg_tools.novatel_tools.utils import get_metadata, get_metadatav2 +from earthscope_sfg_tools.seafloor_site_tools.soundspeed_operations import ( + CTD_to_svp_v1, + CTD_to_svp_v2, + seabird_to_soundvelocity, +) +from earthscope_sfg_tools.sonardyne_tools import sv3_operations as sv3_ops +from earthscope_sfg_tools.tiledb_integration import ( + TDBIMUPositionArray, + TDBKinPositionArray, + TDBShotDataArray, + rinex_qc, + tdb2rnx, +) from earthscope_sfg_tools.tiledb_integration.arrays import TBDArray as _TBDArray +from earthscope_sfg_workflows.data_mgmt.ports import AssetCatalogPort +from earthscope_sfg_workflows.logging import ProcessLogger from pride_ppp import ( ProcessingMode, PrideProcessor, @@ -23,6 +40,29 @@ ) from pride_ppp.factories.processor import PrideProcessor as _PrideProcessorCls from pride_ppp.specifications.config import PRIDEPPPFileConfig as _PRIDEPPPFileConfig +from rich.progress import track + +# local +from ..data_mgmt.model import ( + RINEX_KINDS, + AssetEntry, + AssetKind, + CampaignLayout, + SFGScope, + TileDBLayout, + rinex_kind_for_version, +) +from ..data_mgmt.utils import get_merge_signature_shotdata +from .config import PrideConfig, RinexConfig, SV3PipelineConfig +from .exceptions import ( + NoDFOP00Found, + NoKinFound, + NoNovatelFound, + NoRinexBuilt, + NoRinexFound, + NoSVPFound, +) +from .shotdata_gnss_refinement import merge_shotdata_kinposition # pride_ppp <= current version omits `ISB model` from generated config_files; # pdp3 >= 3.2.7 requires it. Patch write_config_file to inject the line. @@ -77,48 +117,6 @@ def _tbd_write_df_patched(self, df, validate: bool = True): _TBDArray.write_df = _tbd_write_df_patched -# third-party -from earthscope_sfg_tools import tiledb_integration as novb_ops -from earthscope_sfg_tools.novatel_tools.utils import get_metadata, get_metadatav2 -from earthscope_sfg_tools.seafloor_site_tools.soundspeed_operations import ( - CTD_to_svp_v1, - CTD_to_svp_v2, - seabird_to_soundvelocity, -) -from earthscope_sfg_tools.sonardyne_tools import sv3_operations as sv3_ops -from earthscope_sfg_tools.tiledb_integration import ( - TDBIMUPositionArray, - TDBKinPositionArray, - TDBShotDataArray, - rinex_qc, - tdb2rnx, -) -from earthscope_sfg_workflows.data_mgmt.ports import AssetCatalogPort -from earthscope_sfg_workflows.logging import ProcessLogger -from rich.progress import track - -# local -from ..data_mgmt.model import ( - RINEX_KINDS, - AssetEntry, - AssetKind, - CampaignLayout, - SFGScope, - TileDBLayout, - rinex_kind_for_version, -) -from ..data_mgmt.utils import get_merge_signature_shotdata -from .config import PrideConfig, RinexConfig, SV3PipelineConfig -from .exceptions import ( - NoDFOP00Found, - NoKinFound, - NoNovatelFound, - NoRinexBuilt, - NoRinexFound, - NoSVPFound, -) -from .shotdata_gnss_refinement import merge_shotdata_kinposition - def _pipeline_method(fn): """Wrap a pipeline method so only one runs at a time per instance.""" @@ -685,9 +683,12 @@ def get_rinex_files(self) -> None: ) try: # tdb2rnx writes RINEX files to CWD; run from rinex_dest. - # Remove any pre-existing .rnx files so the post-run glob is clean. + # Remove any pre-existing RINEX output so the post-run glob is + # clean. Matches both the v3/v4 long name (*.rnx, current + # output format) and the legacy v2 short name (*.??o, in case + # a directory still has files from before the naming switch). rinex_dest.mkdir(parents=True, exist_ok=True) - for _stale in rinex_dest.glob("*.rnx"): + for _stale in [*rinex_dest.glob("*.rnx"), *rinex_dest.glob("*.??o")]: _stale.unlink() old_cwd = Path.cwd() try: @@ -807,7 +808,12 @@ def process_rinex(self) -> None: override=pride_cfg.override, ) rinex_entries = [ - e for e in rinex_entries if e.local_path is not None and e.kind in RINEX_KINDS + e + for e in rinex_entries + if e.local_path is not None + and e.kind in RINEX_KINDS + and e.local_path.exists() + and e.local_path.stat().st_size > 0 ] if not rinex_entries: diff --git a/src/earthscope_sfg_workflows/services/ingest_service.py b/src/earthscope_sfg_workflows/services/ingest_service.py index b50065b..c678850 100644 --- a/src/earthscope_sfg_workflows/services/ingest_service.py +++ b/src/earthscope_sfg_workflows/services/ingest_service.py @@ -3,7 +3,6 @@ from __future__ import annotations import concurrent.futures -import re import tarfile import threading from datetime import datetime, timezone @@ -15,7 +14,7 @@ from rich.progress import track from upath import UPath -from earthscope_sfg_workflows.data_mgmt.core import DEFAULT_PATTERNS, FileTypeDetector +from earthscope_sfg_workflows.data_mgmt.core import FileTypeDetector from earthscope_sfg_workflows.data_mgmt.model import AssetEntry, AssetKind, IngestReport from earthscope_sfg_workflows.data_mgmt.ports import ArchiveError diff --git a/src/earthscope_sfg_workflows/services/processing_service.py b/src/earthscope_sfg_workflows/services/processing_service.py index dad9ba9..47fd0f0 100644 --- a/src/earthscope_sfg_workflows/services/processing_service.py +++ b/src/earthscope_sfg_workflows/services/processing_service.py @@ -3,7 +3,6 @@ from __future__ import annotations import json -from pathlib import Path from typing import TYPE_CHECKING, Literal, Optional from pride_ppp import PrideCLIConfig diff --git a/src/earthscope_sfg_workflows/services/sync_service.py b/src/earthscope_sfg_workflows/services/sync_service.py index ac06e59..c96f97c 100644 --- a/src/earthscope_sfg_workflows/services/sync_service.py +++ b/src/earthscope_sfg_workflows/services/sync_service.py @@ -224,7 +224,14 @@ def _compress_rinex(self, rinex_dir: UPath) -> None: continue if any(ext in rinex_file.suffix for ext in ["S", "d", ".gz"]): continue - new_suffix = rinex_file.suffix[:-1] + "d" + if rinex_file.suffix.lower() == ".rnx": + # RINEX v3/v4 long name: swap the whole extension for the + # Hatanaka-compact one (e.g. "..._MO.rnx" -> "..._MO.crx"). + new_suffix = ".crx" + else: + # Legacy RINEX v2 short name: swap the trailing "o" for "d" + # (e.g. ".26o" -> ".26d"). + new_suffix = rinex_file.suffix[:-1] + "d" compressed = rinex_file.with_suffix(new_suffix + ".gz") if not compressed.exists(): try: diff --git a/src/earthscope_sfg_workflows/utils/model_update.py b/src/earthscope_sfg_workflows/utils/model_update.py index 8eaeff3..2436c3c 100644 --- a/src/earthscope_sfg_workflows/utils/model_update.py +++ b/src/earthscope_sfg_workflows/utils/model_update.py @@ -40,7 +40,7 @@ def validate_keys_recursively(config_dict: dict, model_class: BaseModel, path: s suggestion_text = "No similar keys found." errors.append( - f"Invalid key '{current_path}' in {model_class.__repr_name__()}. {suggestion_text}" + f"Invalid key '{current_path}' in {model_class.__name__}. {suggestion_text}" ) # If the value is a dict and the field exists, check nested structure diff --git a/src/earthscope_sfg_workflows/workflows/session.py b/src/earthscope_sfg_workflows/workflows/session.py index 5de4107..b0389d8 100644 --- a/src/earthscope_sfg_workflows/workflows/session.py +++ b/src/earthscope_sfg_workflows/workflows/session.py @@ -40,22 +40,23 @@ ) from earthscope_sfg_tools.datamodels.metadata import Campaign, Site - -_Site = Site # alias kept for the .from_json() classmethod call below - from earthscope_sfg_workflows.data_mgmt.filestore.disk_filestore import FsspecFileStore from earthscope_sfg_workflows.data_mgmt.ports import ( ArchiveSourcePort, AssetCatalogPort, - FileStorePort, ) -from earthscope_sfg_workflows.logging import GarposLogger as logger + +_Site = Site # alias kept for the .from_json() classmethod call below if TYPE_CHECKING: # pragma: no cover + from earthscope_sfg_tools.datamodels.metadata import Survey from earthscope_sfg_tools.tiledb_integration import ( TDBAcousticArray, TDBGNSSObsArray, + TDBIMUPositionArray, + TDBKinPositionArray, + TDBShotDataArray, ) from earthscope_sfg_workflows.services.ingest_service import IngestService from earthscope_sfg_workflows.services.processing_service import ProcessingService diff --git a/src/earthscope_sfg_workflows/workflows/workflow_handler.py b/src/earthscope_sfg_workflows/workflows/workflow_handler.py index 54a3805..82210f6 100644 --- a/src/earthscope_sfg_workflows/workflows/workflow_handler.py +++ b/src/earthscope_sfg_workflows/workflows/workflow_handler.py @@ -11,7 +11,6 @@ import os import re -import warnings from pathlib import Path from typing import Literal, Optional @@ -22,7 +21,7 @@ from earthscope_sfg_workflows.logging import ProcessLogger as logger from earthscope_sfg_workflows.logging import change_all_logger_dirs -from ..data_mgmt.model import DEFAULT_PREPROCESS_KINDS, DEFAULT_INTERMEDIATE_KINDS +from ..data_mgmt.model import DEFAULT_PREPROCESS_KINDS from earthscope_sfg_tools.datamodels.metadata import Site from ..modeling.garpos_tools.schemas import InversionParams from ..modeling.garpos_tools.garpos_handler import GarposHandler diff --git a/tests/test_data_mgmt_contracts.py b/tests/test_data_mgmt_contracts.py index 3a4ef62..35ae868 100644 --- a/tests/test_data_mgmt_contracts.py +++ b/tests/test_data_mgmt_contracts.py @@ -92,6 +92,8 @@ class TestFileTypeDetector: "name,expected", [ ("foo.24o", AssetKind.RINEX2), + ("SLT100USA_R_20261541758_01D_20C_MO.rnx", AssetKind.RINEX2), + ("BRDC00IGS_R_20261540000_01D_MN.rnx", AssetKind.RINEX3), ("sonardyne_log.txt", AssetKind.SONARDYNE), ("NOV770_001.raw", AssetKind.NOVATEL770), ("DFOP00.raw", AssetKind.DFOP00), diff --git a/tests/test_sv3_pipeline_integration.py b/tests/test_sv3_pipeline_integration.py index 2ba8941..05b7630 100644 --- a/tests/test_sv3_pipeline_integration.py +++ b/tests/test_sv3_pipeline_integration.py @@ -39,7 +39,6 @@ from earthscope_sfg_tools.tiledb_integration.arrays import ( TDBKinPositionArray, TDBShotDataArray, - TDBIMUPositionArray, ) _TILEDB_DEPS = True @@ -526,7 +525,7 @@ def _add_novatel770_entry(catalog, fake_path: Path): return catalog.add(entry) -# Real RINEX 2.11 fixture produced from NCC1 DOY-251 (2025-09-08) data. +# Real RINEX fixture produced from NCC1 DOY-251 (2025-09-08) data. # Contains a valid header and the first 5 one-second observation epochs. # tdb2rnx now always writes the long-format v3/v4 RINEX filename regardless # of the configured RINEX version, so the fixture is copied under a `.rnx` @@ -542,7 +541,6 @@ def _make_fake_tdb2rnx(rinex_dest: Path, filenames: list[str] | None = None): RINEX fixture means ``rinex_get_time_range`` runs on actual data and the catalog entries receive genuine timestamps — no extra mock needed. """ - import shutil import subprocess _names = filenames or ["NCC1_2025_251_R_20252510000_01D_01S_MO.rnx"] @@ -822,7 +820,6 @@ def test_fixture_exists(self): def test_rinex_get_time_range_parses_fixture(self): """``rinex_get_time_range`` returns the expected date from the fixture header.""" from pride_ppp import rinex_get_time_range - import datetime if not _RINEX_FIXTURE.exists(): pytest.skip("RINEX fixture not present") @@ -864,7 +861,6 @@ def test_fixture_has_header_and_epochs(self): def test_fixture_glob_pattern_matches(self, tmp_path): """The ``.rnx`` glob used by ``get_rinex_files`` matches tdb2rnx's output naming.""" - import shutil dest = tmp_path / "NCC1_2025_251_R_20252510000_01D_01S_MO.rnx" shutil.copy(_RINEX_FIXTURE, dest)