diff --git a/.github/workflows/integration-test.yml b/.github/workflows/integration-test.yml
index 436abdde..d44d2872 100644
--- a/.github/workflows/integration-test.yml
+++ b/.github/workflows/integration-test.yml
@@ -1,6 +1,7 @@
name: Integration Tests
on:
+ pull_request:
push:
branches:
- main
@@ -10,6 +11,12 @@ on:
- docs/**
- binder/**
+# When this workflow is queued, automatically cancel any previous running
+# or pending jobs from the same branch
+concurrency:
+ group: ${{ github.ref }}
+ cancel-in-progress: true
+
jobs:
test:
runs-on: ubuntu-latest
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 632a1a04..bbe66ba8 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,8 @@
## [Unreleased]
+## [v0.9.0] 2024-02-28
+
* Bug fixes:
* fixed #439 by implementing more trusted domains in the SessionWithRedirection
* fixed #438 by using an authenticated session for hits()
@@ -176,10 +178,17 @@
- Add basic classes to interact with NASA CMR, EDL and cloud access.
- Basic object formatting.
-[Unreleased]: https://github.com/nsidc/earthaccess/compare/v0.8.2...HEAD
+[Unreleased]: https://github.com/nsidc/earthaccess/compare/v0.9.0...HEAD
+[v0.8.2]: https://github.com/nsidc/earthaccess/releases/tag/v0.8.2
+[v0.8.1]: https://github.com/nsidc/earthaccess/releases/tag/v0.8.1
+[v0.8.0]: https://github.com/nsidc/earthaccess/releases/tag/v0.8.0
+[v0.7.1]: https://github.com/nsidc/earthaccess/releases/tag/v0.7.1
+[v0.7.0]: https://github.com/nsidc/earthaccess/releases/tag/v0.7.0
+[v0.6.0]: https://github.com/nsidc/earthaccess/releases/tag/v0.6.0
+[v0.5.3]: https://github.com/nsidc/earthaccess/releases/tag/v0.5.3
[v0.5.2]: https://github.com/nsidc/earthaccess/releases/tag/v0.5.2
[v0.5.1]: https://github.com/nsidc/earthaccess/releases/tag/v0.5.1
-[v0.5.0]: https://github.com/nsidc/earthaccess/releases/tag/v0.4.0
+[v0.5.0]: https://github.com/nsidc/earthaccess/releases/tag/v0.5.0
[v0.4.7]: https://github.com/nsidc/earthaccess/releases/tag/v0.4.7
[v0.4.6]: https://github.com/nsidc/earthaccess/releases/tag/v0.4.6
[v0.4.1]: https://github.com/nsidc/earthaccess/releases/tag/v0.4.1
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 8ed22d36..093c9253 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -16,7 +16,7 @@ Please note we have a code of conduct, please follow it in all your interactions
If we have `mamba` (or conda) installed, we can use the environment file included in the binder folder, this will install all the libraries we need (including Poetry) to start developing `earthaccess`
```bash
->mamba env update -f binder/environment-dev.yml
+>mamba env update -f ci/environment-dev.yml
>mamba activate earthaccess-dev
>poetry install
```
diff --git a/binder/environment-dev.yml b/ci/environment-dev.yml
similarity index 100%
rename from binder/environment-dev.yml
rename to ci/environment-dev.yml
diff --git a/docs/tutorials/getting-started.ipynb b/docs/tutorials/getting-started.ipynb
index da1d72b8..d069e8af 100644
--- a/docs/tutorials/getting-started.ipynb
+++ b/docs/tutorials/getting-started.ipynb
@@ -73,7 +73,7 @@
{
"data": {
"text/plain": [
- "'0.5.3'"
+ "'0.9.0'"
]
},
"execution_count": 1,
@@ -93,20 +93,9 @@
"metadata": {
"tags": []
},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "EARTHDATA_USERNAME and EARTHDATA_PASSWORD are not set in the current environment, try setting them or use a different strategy (netrc, interactive)\n",
- "You're now authenticated with NASA Earthdata Login\n",
- "Using token with expiration date: 09/24/2023\n",
- "Using .netrc file for EDL\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
- "auth = earthaccess.login()\n"
+ "auth = earthaccess.login()"
]
},
{
@@ -138,20 +127,6 @@
"\n"
]
},
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "caab3b4b-80cc-4790-9417-1dd12503aa55",
- "metadata": {
- "tags": []
- },
- "outputs": [],
- "source": [
- "# are we authenticated?\n",
- "\n",
- "auth = earthaccess.login()\n"
- ]
- },
{
"cell_type": "markdown",
"id": "fcc8b461-8c68-4719-94e5-34057159dac7",
@@ -164,27 +139,29 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 7,
"id": "8d5bf4c9-571b-4c93-af94-e66bd51cb584",
"metadata": {
"tags": []
},
- "outputs": [],
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Datasets found: 25\n"
+ ]
+ }
+ ],
"source": [
"# The first step is to create a DataCollections query \n",
"\n",
- "Query = earthaccess.collection_query()\n",
- "\n",
- "# Use chain methods to customize our query\n",
- "Query.keyword('elevation').bounding_box(-134.7,58.9,-133.9,59.2).temporal(\"2020-01-01\",\"2020-02-01\")\n",
- "\n",
- "print(f'Collections found: {Query.hits()}')\n",
- "\n",
- "# filtering what UMM fields to print, to see the full record we omit the fields filters\n",
- "# meta is always included as \n",
- "collections = Query.fields(['ShortName','Version']).get(5)\n",
- "# Inspect some results printing just the ShortName and Abstract\n",
- "collections[0:3]"
+ "datasets = earthaccess.search_datasets(\n",
+ " keyword = \"fire\",\n",
+ " cloud_hosted= True,\n",
+ " bounding_box = (-180, -90, 180, 90),\n",
+ " temporal = (\"2019\", \"2023\")\n",
+ ")"
]
},
{
@@ -198,14 +175,54 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 16,
"id": "8cb5154c-f131-44ad-a68f-cf0fa21ce18f",
"metadata": {
"tags": []
},
- "outputs": [],
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "C2271754179-LPCLOUD The Moderate Resolution Imaging Spectroradiometer (MODIS) Thermal Anomalies and Fire MOD14 Version 6.1 product is produced daily in 5-minute temporal satellite increments (swaths) at 1 kilometer (km) spatial resolution. The MOD14 product is used to generate all of the higher level fire products, but can also be used to identify fires and other thermal anomalies, such as volcanoes. Each swath of data is approximately 2,030 kilometers along track (long), and 2,300 kilometers across track (wide). \n",
+ "\n",
+ "Validation at stage 3 (https://modis-land.gsfc.nasa.gov/MODLAND_val.html) has been achieved for all MODIS Thermal Anomalies and Fire products. Further details regarding MODIS land product validation for the MOD14 data product is available from the MODIS land team validation site (https://modis-land.gsfc.nasa.gov/ValStatus.php?ProductID=MOD14).\n",
+ "\n",
+ "Improvements/Changes from Previous Versions\n",
+ "\n",
+ "* The Version 6.1 Level-1B (L1B) products have been improved by undergoing various calibration changes that include: changes to the response-versus-scan angle (RVS) approach that affects reflectance bands for Aqua and Terra MODIS, corrections to adjust for the optical crosstalk in Terra MODIS infrared (IR) bands, and corrections to the Terra MODIS forward look-up table (LUT) update for the period 2012 - 2017.\n",
+ "* A polarization correction has been applied to the L1B Reflective Solar Bands (RSB).\n",
+ "\n",
+ "----------------------------------------------------------------------------------------------------------------------------------------------------------------\n",
+ "C2278858993-LPCLOUD The Aqua Moderate Resolution Imaging Spectroradiometer (MODIS) Thermal Anomalies and Fire MYD14 Version 6.1 product is produced daily in 5-minute temporal satellite increments (swaths) at a 1 kilometer (km) spatial resolution. The MYD14 product is used to generate all of the higher level fire products, but can also be used to identify fires and other thermal anomalies, such as volcanoes. Each swath of data is approximately 2,030 kilometers along track (long), and 2,300 kilometers across track (wide). \n",
+ "\n",
+ "Validation at stage 3 (https://modis-land.gsfc.nasa.gov/MODLAND_val.html) has been achieved for all MODIS Thermal Anomalies and Fire products. Further details regarding MODIS land product validation for the MOD14 data product is available from the MODIS land team validation site (https://modis-land.gsfc.nasa.gov/ValStatus.php?ProductID=MOD14).\n",
+ "\n",
+ "Improvements/Changes from Previous Versions\n",
+ "\n",
+ "* The Version 6.1 Level-1B (L1B) products have been improved by undergoing various calibration changes that include: changes to the response-versus-scan angle (RVS) approach that affects reflectance bands for Aqua and Terra MODIS, corrections to adjust for the optical crosstalk in Terra MODIS infrared (IR) bands, and corrections to the Terra MODIS forward look-up table (LUT) update for the period 2012 - 2017.\n",
+ "* A polarization correction has been applied to the L1B Reflective Solar Bands (RSB).\n",
+ "----------------------------------------------------------------------------------------------------------------------------------------------------------------\n",
+ "C2565791013-LPCLOUD The Terra Moderate Resolution Imaging Spectroradiometer (MODIS) Thermal Anomalies and Fire Daily (MOD14A1) Version 6.1 data are generated every eight days at 1 kilometer (km) spatial resolution as a Level 3 product. MOD14A1 contains eight consecutive days of fire data conveniently packaged into a single file.\n",
+ "\n",
+ "The Science Dataset (SDS) layers include the fire mask, pixel quality indicators, maximum fire radiative power (MaxFRP), and the position of the fire pixel within the scan. Each layer consists of daily per pixel information for each of the eight days of data acquisition. \n",
+ "\n",
+ "Validation at stage 3 (https://modis-land.gsfc.nasa.gov/MODLAND_val.html) has been achieved for all MODIS Thermal Anomalies and Fire products. Further details regarding MODIS land product validation for the MOD14 data product is available from the MODIS land team validation site (https://modis-land.gsfc.nasa.gov/ValStatus.php?ProductID=MOD14).\n",
+ "\n",
+ " Improvements/Changes from Previous Versions\n",
+ "\n",
+ "* The Version 6.1 Level-1B (L1B) products have been improved by undergoing various calibration changes that include: changes to the response-versus-scan angle (RVS) approach that affects reflectance bands for Aqua and Terra MODIS, corrections to adjust for the optical crosstalk in Terra MODIS infrared (IR) bands, and corrections to the Terra MODIS forward look-up table (LUT) update for the period 2012 - 2017.\n",
+ "* A polarization correction has been applied to the L1B Reflective Solar Bands (RSB).\n",
+ "\n",
+ "----------------------------------------------------------------------------------------------------------------------------------------------------------------\n"
+ ]
+ }
+ ],
"source": [
- "collections[0][\"umm\"][\"ShortName\"]"
+ "for dataset in datasets[0:3]:\n",
+ " print(dataset.concept_id(), dataset.abstract())\n",
+ " print(\"--\"*80)"
]
},
{
@@ -230,55 +247,6 @@
"```\n"
]
},
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "48cdcd74-dfe3-4b83-93f4-7378a0d981df",
- "metadata": {
- "tags": []
- },
- "outputs": [],
- "source": [
- "# We can now search for collections using a pythonic API client for CMR.\n",
- "Query = earthaccess.collection_query().daac(\"ASF\")\n",
- "\n",
- "print(f'Collections found: {Query.hits()}')\n",
- "collections = Query.fields(['ShortName']).get(10)\n",
- "# Printing the first collection\n",
- "collections[0]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "63792353-ab3e-4f0b-963d-7750e4b89113",
- "metadata": {
- "tags": []
- },
- "outputs": [],
- "source": [
- "# What if we want cloud collections\n",
- "Query = earthaccess.collection_query().daac(\"ASF\").cloud_hosted(True)\n",
- "\n",
- "print(f'Collections found: {Query.hits()}')\n",
- "collections = Query.fields(['ShortName']).get(10)\n",
- "# Printing 3 collections\n",
- "collections[0]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "c4c5a34a-e808-4cc9-b34d-353d091a8242",
- "metadata": {
- "tags": []
- },
- "outputs": [],
- "source": [
- "# Printing the concept-id for the first 10 collections\n",
- "[collection.concept_id() for collection in collections]"
- ]
- },
{
"cell_type": "markdown",
"id": "4bb9c3bb-ac8b-48e8-8233-8c44da8fb7bc",
@@ -297,20 +265,31 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 26,
"id": "9364d737-5a79-4089-853f-76d2ad1c85a7",
"metadata": {
"tags": []
},
- "outputs": [],
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Granules found: 87\n"
+ ]
+ }
+ ],
"source": [
"from pprint import pprint\n",
"\n",
- "# We build our query\n",
+ "# We query for our data\n",
"\n",
- "Query = earthaccess.granule_query().short_name('HLSL30').bounding_box(-134.7,58.9,-133.9,59.2)\n",
- "# We get 5 metadata records\n",
- "granules = Query.get(5)"
+ "results = earthaccess.search_data(\n",
+ " short_name = 'HLSL30',\n",
+ " cloud_cover = (0,30),\n",
+ " bounding_box = (-134.7, 58.9,-133.9, 59.2),\n",
+ " count=5\n",
+ ")"
]
},
{
@@ -326,14 +305,113 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 27,
"id": "0b56b119-ec9b-4922-911a-f37501597451",
"metadata": {
"tags": []
},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "
\n",
+ " \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
\n",
+ "
\n",
+ "
\n",
+ "
\n",
+ "
\n",
+ "
\n",
+ "
\n",
+ " "
+ ],
+ "text/plain": [
+ "Collection: {'EntryTitle': 'HLS Landsat Operational Land Imager Surface Reflectance and TOA Brightness Daily Global 30m v2.0'}\n",
+ "Spatial coverage: {'HorizontalSpatialDomain': {'Geometry': {'GPolygons': [{'Boundary': {'Points': [{'Longitude': -134.90188398, 'Latitude': 58.55224361}, {'Longitude': -134.23067278, 'Latitude': 59.53608808}, {'Longitude': -135.00035365, 'Latitude': 59.53834913}, {'Longitude': -135.00034366, 'Latitude': 58.55228107}, {'Longitude': -134.90188398, 'Latitude': 58.55224361}]}}]}}}\n",
+ "Temporal coverage: {'RangeDateTime': {'BeginningDateTime': '2013-05-27T20:14:28.010Z', 'EndingDateTime': '2013-05-27T20:14:51.892Z'}}\n",
+ "Size(MB): 45.62166404724121\n",
+ "Data: ['https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T08VNL.2013147T201428.v2.0/HLS.L30.T08VNL.2013147T201428.v2.0.B11.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T08VNL.2013147T201428.v2.0/HLS.L30.T08VNL.2013147T201428.v2.0.B06.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T08VNL.2013147T201428.v2.0/HLS.L30.T08VNL.2013147T201428.v2.0.B09.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T08VNL.2013147T201428.v2.0/HLS.L30.T08VNL.2013147T201428.v2.0.B01.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T08VNL.2013147T201428.v2.0/HLS.L30.T08VNL.2013147T201428.v2.0.VAA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T08VNL.2013147T201428.v2.0/HLS.L30.T08VNL.2013147T201428.v2.0.VZA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T08VNL.2013147T201428.v2.0/HLS.L30.T08VNL.2013147T201428.v2.0.Fmask.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T08VNL.2013147T201428.v2.0/HLS.L30.T08VNL.2013147T201428.v2.0.B02.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T08VNL.2013147T201428.v2.0/HLS.L30.T08VNL.2013147T201428.v2.0.SZA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T08VNL.2013147T201428.v2.0/HLS.L30.T08VNL.2013147T201428.v2.0.B04.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T08VNL.2013147T201428.v2.0/HLS.L30.T08VNL.2013147T201428.v2.0.B05.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T08VNL.2013147T201428.v2.0/HLS.L30.T08VNL.2013147T201428.v2.0.B07.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T08VNL.2013147T201428.v2.0/HLS.L30.T08VNL.2013147T201428.v2.0.B03.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T08VNL.2013147T201428.v2.0/HLS.L30.T08VNL.2013147T201428.v2.0.SAA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T08VNL.2013147T201428.v2.0/HLS.L30.T08VNL.2013147T201428.v2.0.B10.tif']"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ " \n",
+ " \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
\n",
+ "
\n",
+ "
\n",
+ "
\n",
+ "
\n",
+ "
\n",
+ "
\n",
+ " "
+ ],
+ "text/plain": [
+ "Collection: {'EntryTitle': 'HLS Landsat Operational Land Imager Surface Reflectance and TOA Brightness Daily Global 30m v2.0'}\n",
+ "Spatial coverage: {'HorizontalSpatialDomain': {'Geometry': {'GPolygons': [{'Boundary': {'Points': [{'Longitude': -134.8807487, 'Latitude': 58.55222573}, {'Longitude': -134.20998754, 'Latitude': 59.53596485}, {'Longitude': -135.00035365, 'Latitude': 59.53834913}, {'Longitude': -135.00034366, 'Latitude': 58.55228107}, {'Longitude': -134.8807487, 'Latitude': 58.55222573}]}}]}}}\n",
+ "Temporal coverage: {'RangeDateTime': {'BeginningDateTime': '2013-06-12T20:14:24.508Z', 'EndingDateTime': '2013-06-12T20:14:48.386Z'}}\n",
+ "Size(MB): 48.38529682159424\n",
+ "Data: ['https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T08VNL.2013163T201424.v2.0/HLS.L30.T08VNL.2013163T201424.v2.0.SZA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T08VNL.2013163T201424.v2.0/HLS.L30.T08VNL.2013163T201424.v2.0.B04.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T08VNL.2013163T201424.v2.0/HLS.L30.T08VNL.2013163T201424.v2.0.B02.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T08VNL.2013163T201424.v2.0/HLS.L30.T08VNL.2013163T201424.v2.0.B03.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T08VNL.2013163T201424.v2.0/HLS.L30.T08VNL.2013163T201424.v2.0.B10.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T08VNL.2013163T201424.v2.0/HLS.L30.T08VNL.2013163T201424.v2.0.B11.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T08VNL.2013163T201424.v2.0/HLS.L30.T08VNL.2013163T201424.v2.0.VAA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T08VNL.2013163T201424.v2.0/HLS.L30.T08VNL.2013163T201424.v2.0.SAA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T08VNL.2013163T201424.v2.0/HLS.L30.T08VNL.2013163T201424.v2.0.VZA.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T08VNL.2013163T201424.v2.0/HLS.L30.T08VNL.2013163T201424.v2.0.B09.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T08VNL.2013163T201424.v2.0/HLS.L30.T08VNL.2013163T201424.v2.0.Fmask.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T08VNL.2013163T201424.v2.0/HLS.L30.T08VNL.2013163T201424.v2.0.B01.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T08VNL.2013163T201424.v2.0/HLS.L30.T08VNL.2013163T201424.v2.0.B05.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T08VNL.2013163T201424.v2.0/HLS.L30.T08VNL.2013163T201424.v2.0.B07.tif', 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSL30.020/HLS.L30.T08VNL.2013163T201424.v2.0/HLS.L30.T08VNL.2013163T201424.v2.0.B06.tif']"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
"source": [
- "[display(g) for g in granules]"
+ "quicklooks = [display(g) for g in results[0:2]]"
]
},
{
@@ -349,29 +427,53 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 35,
"id": "00aa39ec-e2fb-49d1-bc54-8d8a2f0655aa",
"metadata": {
"tags": []
},
- "outputs": [],
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Granules found: 2\n"
+ ]
+ }
+ ],
"source": [
- "Query = earthaccess.granule_query().short_name(\"ATL06\").temporal(\"2020-03-01\", \"2020-03-30\").bounding_box(-134.7,58.9,-133.9,59.2).version(\"005\")\n",
- "# Always inspects the hits before retrieven the granule metadata, just because it's very verbose.\n",
- "print(f\"Granules found: {Query.hits()}\")"
+ "granules = earthaccess.search_data(\n",
+ " short_name=\"ATL08\",\n",
+ " temporal = (\"2020-03-01\", \"2020-03-30\"),\n",
+ " bounding_box =(-134.7,58.9,-133.9,59.2),\n",
+ " cloud_hosted=True\n",
+ ")"
]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 37,
"id": "8c493585-0d48-41bb-8815-6c83ad20ae80",
"metadata": {
"tags": []
},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[{'links': ['https://data.nsidc.earthdatacloud.nasa.gov/nsidc-cumulus-prod-protected/ATLAS/ATL08/006/2020/03/10/ATL08_20200310121504_11420606_006_01.h5'],\n",
+ " 'size (MB):': 1.7647275924682617},\n",
+ " {'links': ['https://data.nsidc.earthdatacloud.nasa.gov/nsidc-cumulus-prod-protected/ATLAS/ATL08/006/2020/03/12/ATL08_20200312233336_11800602_006_01.h5'],\n",
+ " 'size (MB):': 57.75613307952881}]"
+ ]
+ },
+ "execution_count": 37,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
"# Now we can print some info about these granules using the built-in methods\n",
- "granules = Query.get(5)\n",
"data_links = [{'links': g.data_links(access=\"on_prem\"), 'size (MB):': g.size()} for g in granules]\n",
"data_links"
]
@@ -390,20 +492,38 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 38,
"id": "e7b80520-5cae-45c5-9397-f990a1ba0f26",
"metadata": {
"tags": []
},
- "outputs": [],
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Granules found: 6\n",
+ "Granules found: 6\n",
+ "Granules found: 6\n",
+ "Granules found: 6\n",
+ "Granules found: 6\n",
+ "Granules found: 6\n",
+ "Granules found: 6\n",
+ "Granules found: 7\n",
+ "Granules found: 7\n",
+ "Granules found: 7\n"
+ ]
+ }
+ ],
"source": [
"granules = []\n",
"\n",
"# we just grab 1 granule from May for each year of the dataset\n",
- "for year in range(1999, 2019):\n",
+ "for year in range(2009, 2019):\n",
" results = earthaccess.search_data(\n",
" doi = \"10.5067/SLREF-CDRV3\",\n",
- " temporal=(f\"{year}-05\", f\"{year}-06\")\n",
+ " temporal=(f\"{year}-05\", f\"{year}-06\"),\n",
+ " count=1\n",
" )\n",
" if len(results)>0:\n",
" granules.append(results[0])"
@@ -417,28 +537,6 @@
"For this example we are going to use a PODAAC dataset `SMAP_JPL_L3_SSS_CAP_8DAY-RUNNINGMEAN_V5` which we previously queried (see querying for datasets) and got the concept id: `C1972955240-PODAAC`"
]
},
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "910e4b90-f0e0-42e5-a4e2-d5444089161f",
- "metadata": {
- "tags": []
- },
- "outputs": [],
- "source": [
- "import earthaccess\n",
- "\n",
- "earthaccess.login()\n",
- "\n",
- "Query = earthaccess.granule_query().doi(\"10.5067/SLREF-CDRV3\").bounding_box(-134.7,54.9,-100.9,69.2)\n",
- "print(f\"Granule hits: {Query.hits()}\")\n",
- "\n",
- "# getting more than 6,000 metadata records for demo purposes is going to slow us down a bit so let's get only a few\n",
- "granules = Query.get(10)\n",
- "# Does this granule belong to a cloud-based collection?\n",
- "granules[0].cloud_hosted"
- ]
- },
{
"cell_type": "markdown",
"id": "436e8a72-64c5-4e6b-950b-ac801d7b926e",
@@ -451,15 +549,64 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 39,
"id": "434466a3-602b-4dff-a260-f7db6901514a",
"metadata": {
"tags": []
},
- "outputs": [],
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ " Getting 1 granules, approx download size: 0.01 GB\n"
+ ]
+ },
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "49c62c6d7a334cf6b739dc0fdb5f56a3",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "QUEUEING TASKS | : 0%| | 0/1 [00:00, ?it/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "f7d3e590dc7f4bbd9d84768b4fc03646",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "PROCESSING TASKS | : 0%| | 0/1 [00:00, ?it/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "0e622f53fc10443183887e8641e95dd5",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "COLLECTING RESULTS | : 0%| | 0/1 [00:00, ?it/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
"source": [
- "%%time\n",
- "files = earthaccess.download(granules[0:2], \"./data/C1972955240-PODAAC/\")"
+ "files = earthaccess.download(results[0], \"./data\")"
]
},
{
@@ -480,51 +627,74 @@
},
{
"cell_type": "code",
- "execution_count": null,
- "id": "44403d51-0aa3-423c-8fff-e40d4969aa9d",
- "metadata": {
- "tags": []
- },
- "outputs": [],
- "source": [
- "\n",
- "Query = earthaccess.granule_query().short_name(\"SMAP_JPL_L3_SSS_CAP_8DAY-RUNNINGMEAN_V5\").bounding_box(-134.7,54.9,-100.9,69.2)\n",
- "print(f\"Granule hits: {Query.hits()}\")\n",
- "results = Query.get(10)\n",
- "# is this a cloud hosted data granule?\n",
- "results[0].cloud_hosted"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "5e59ca3e-b5d5-490f-b967-01d1c7b3fdf0",
- "metadata": {
- "tags": []
- },
- "outputs": [],
- "source": [
- "# Let's pretty print this\n",
- "results[0]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
+ "execution_count": 42,
"id": "b2a294f1-b1f9-4cd4-8751-dfc32feacec1",
"metadata": {
"tags": []
},
- "outputs": [],
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Opening 10 granules, approx size: 0.09 GB\n"
+ ]
+ },
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "9c38a684f4f341bfbf8a60834f5b1c0a",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "QUEUEING TASKS | : 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "ad1ddec215074377bc21f76733a92ce3",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "PROCESSING TASKS | : 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "0c75700ff6c14e82aac261008cbc48eb",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "COLLECTING RESULTS | : 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "CPU times: user 54.5 ms, sys: 4.59 ms, total: 59.1 ms\n",
+ "Wall time: 1.71 s\n"
+ ]
+ }
+ ],
"source": [
"%%time\n",
"# we are running this code outside the us-west-2 region.\n",
- "try:\n",
- " files = earthaccess.download(results[0:4], local_path=\"./data/demo-POCLOUD\")\n",
- "except Exception as e:\n",
- " print(f\"Error: {e}, we are probably not using this code in the Amazon cloud. Trying external links...\")\n",
- " # There is hope, even if we are not in the Amazon cloud we can still get the data\n",
- " files = store.get(results[0:4], access=\"external\", local_path=\"./data/demo-POCLOUD\")"
+ "fileset = earthaccess.open(granules)"
]
},
{
@@ -541,50 +711,469 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 44,
"id": "aecdb529-5961-4fa6-b7e0-70bbd0d85041",
"metadata": {
"tags": []
},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "\n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ "\n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ "
<xarray.Dataset>\n",
+ "Dimensions: (Longitude: 2160, nv: 2, Latitude: 960, Time: 1)\n",
+ "Coordinates:\n",
+ " * Longitude (Longitude) float32 0.08333 0.25 0.4167 ... 359.6 359.8 359.9\n",
+ " * Latitude (Latitude) float32 -79.92 -79.75 -79.58 ... 79.58 79.75 79.92\n",
+ " * Time (Time) datetime64[ns] 2009-05-04T12:00:00\n",
+ "Dimensions without coordinates: nv\n",
+ "Data variables:\n",
+ " Lon_bounds (Longitude, nv) float32 ...\n",
+ " Lat_bounds (Latitude, nv) float32 ...\n",
+ " Time_bounds (Time, nv) datetime64[ns] ...\n",
+ " SLA (Time, Latitude, Longitude) float32 ...\n",
+ " SLA_ERR (Time, Latitude, Longitude) float32 ...\n",
+ "Attributes: (12/21)\n",
+ " Conventions: CF-1.6\n",
+ " ncei_template_version: NCEI_NetCDF_Grid_Template_v2.0\n",
+ " Institution: Jet Propulsion Laboratory\n",
+ " geospatial_lat_min: -79.916664\n",
+ " geospatial_lat_max: 79.916664\n",
+ " geospatial_lon_min: 0.083333336\n",
+ " ... ...\n",
+ " version_number: 2205\n",
+ " Data_Pnts_Each_Sat: {"16": 777555, "1003": 564903}\n",
+ " source_version: commit 7ba4d2404171bab4068e03a666a335c7a44c5f09\n",
+ " SLA_Global_MEAN: 0.017279774082311437\n",
+ " SLA_Global_STD: 0.08781475750200256\n",
+ " latency: final Dimensions: Longitude : 2160nv : 2Latitude : 960Time : 1
Coordinates: (3)
Data variables: (5)
Indexes: (3)
PandasIndex
PandasIndex(Index([0.0833333358168602, 0.25, 0.4166666567325592,\n",
+ " 0.5833333134651184, 0.75, 0.9166666865348816,\n",
+ " 1.0833333730697632, 1.25, 1.4166666269302368,\n",
+ " 1.5833333730697632,\n",
+ " ...\n",
+ " 358.4166564941406, 358.5833435058594, 358.75,\n",
+ " 358.9166564941406, 359.0833435058594, 359.25,\n",
+ " 359.4166564941406, 359.5833435058594, 359.75,\n",
+ " 359.9166564941406],\n",
+ " dtype='float32', name='Longitude', length=2160)) PandasIndex
PandasIndex(Index([-79.91666412353516, -79.75, -79.58333587646484,\n",
+ " -79.41666412353516, -79.25, -79.08333587646484,\n",
+ " -78.91666412353516, -78.75, -78.58333587646484,\n",
+ " -78.41666412353516,\n",
+ " ...\n",
+ " 78.41666412353516, 78.58333587646484, 78.75,\n",
+ " 78.91666412353516, 79.08333587646484, 79.25,\n",
+ " 79.41666412353516, 79.58333587646484, 79.75,\n",
+ " 79.91666412353516],\n",
+ " dtype='float32', name='Latitude', length=960)) PandasIndex
PandasIndex(DatetimeIndex(['2009-05-04 12:00:00'], dtype='datetime64[ns]', name='Time', freq=None)) Attributes: (21)
Conventions : CF-1.6 ncei_template_version : NCEI_NetCDF_Grid_Template_v2.0 Institution : Jet Propulsion Laboratory geospatial_lat_min : -79.916664 geospatial_lat_max : 79.916664 geospatial_lon_min : 0.083333336 geospatial_lon_max : 359.91666 time_coverage_start : 2009-05-04 time_coverage_end : 2009-05-04 date_created : 2022-10-30T20:50:42.608538 title : Sea Level Anomaly Estimate based on Altimeter Data, final product (replaced interim version). short_name : SEA_SURFACE_HEIGHT_ALT_GRIDS_L4_2SATS_5DAY_6THDEG_V_JPL2205 long_name : MEaSUREs Gridded Sea Surface Height Anomalies Version 2205 summary : Sea level anomaly grids from altimeter data using Kriging interpolation, which gives best linear prediction based upon prior knowledge of covariance. DOI : 10.5067/SLREF-CDRV3 version_number : 2205 Data_Pnts_Each_Sat : {"16": 777555, "1003": 564903} source_version : commit 7ba4d2404171bab4068e03a666a335c7a44c5f09 SLA_Global_MEAN : 0.017279774082311437 SLA_Global_STD : 0.08781475750200256 latency : final "
+ ],
+ "text/plain": [
+ "\n",
+ "Dimensions: (Longitude: 2160, nv: 2, Latitude: 960, Time: 1)\n",
+ "Coordinates:\n",
+ " * Longitude (Longitude) float32 0.08333 0.25 0.4167 ... 359.6 359.8 359.9\n",
+ " * Latitude (Latitude) float32 -79.92 -79.75 -79.58 ... 79.58 79.75 79.92\n",
+ " * Time (Time) datetime64[ns] 2009-05-04T12:00:00\n",
+ "Dimensions without coordinates: nv\n",
+ "Data variables:\n",
+ " Lon_bounds (Longitude, nv) float32 ...\n",
+ " Lat_bounds (Latitude, nv) float32 ...\n",
+ " Time_bounds (Time, nv) datetime64[ns] ...\n",
+ " SLA (Time, Latitude, Longitude) float32 ...\n",
+ " SLA_ERR (Time, Latitude, Longitude) float32 ...\n",
+ "Attributes: (12/21)\n",
+ " Conventions: CF-1.6\n",
+ " ncei_template_version: NCEI_NetCDF_Grid_Template_v2.0\n",
+ " Institution: Jet Propulsion Laboratory\n",
+ " geospatial_lat_min: -79.916664\n",
+ " geospatial_lat_max: 79.916664\n",
+ " geospatial_lon_min: 0.083333336\n",
+ " ... ...\n",
+ " version_number: 2205\n",
+ " Data_Pnts_Each_Sat: {\"16\": 777555, \"1003\": 564903}\n",
+ " source_version: commit 7ba4d2404171bab4068e03a666a335c7a44c5f09\n",
+ " SLA_Global_MEAN: 0.017279774082311437\n",
+ " SLA_Global_STD: 0.08781475750200256\n",
+ " latency: final"
+ ]
+ },
+ "execution_count": 44,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
"import warnings\n",
"warnings.filterwarnings('ignore')\n",
"warnings.simplefilter('ignore')\n",
"import xarray as xr\n",
- "# data_links\n",
- "https_links = []\n",
- "s3_links = []\n",
- "\n",
- "fs = earthaccess.get_s3fs_session(provider='POCLOUD')\n",
- "\n",
- "for granule in results:\n",
- " https_links.extend(granule.data_links(access=\"on_prem\"))\n",
- " s3_links.extend(granule.data_links(access=\"direct\"))"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "0cb71d7d-c77e-497b-9846-ba101e730457",
- "metadata": {},
- "source": [
- "### With earthaccess we can open URLS if we pass the provider or we can open the results directly and will derive the necessary credentials to use."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "50e6f01e-86f0-4e29-869b-d6d437c8b130",
- "metadata": {
- "tags": []
- },
- "outputs": [],
- "source": [
- "fileset = earthaccess.open(results[0:3])\n",
"\n",
- "# test that we can read data from the files\n",
- "with fileset[0] as f:\n",
- " print(f.read(100))"
+ "ds = xr.open_dataset(fileset[0], engine=\"h5netcdf\")\n",
+ "ds"
]
},
{
@@ -603,11 +1192,14 @@
"# first we authenticate with NASA EDL\n",
"auth = earthaccess.login()\n",
"\n",
- "# Then we build a Query with spatiotemporal parameters\n",
- "GranuleQuery = earthaccess.granule_query().concept_id(\"C1575731655-LPDAAC_ECS\").bounding_box(-134.7,58.9,-133.9,59.2)\n",
+ "# We query for our metadata\n",
"\n",
- "# We get the metadata records from CMR\n",
- "granules = GranuleQuery.get()\n",
+ "granules = earthaccess.search_data(\n",
+ " short_name=\"SEA_SURFACE_HEIGHT_ALT_GRIDS_L4_2SATS_5DAY_6THDEG_V_JPL2205\" # Same as doi = \"10.5067/SLREF-CDRV3\",\n",
+ " bounding_box = (-180, -90, 180, 90),\n",
+ " temporal=(\"2019-11\", \"2019-12\"), \n",
+ " count=-1 # we can specify max results here\n",
+ ")\n",
"\n",
"# Now it{s time to download (or open) our data granules list with get()\n",
"files = earthaccess.download(granules, local_path='./data')\n",
@@ -654,7 +1246,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.9.16"
+ "version": "3.10.6"
}
},
"nbformat": 4,
diff --git a/earthaccess/store.py b/earthaccess/store.py
index 15ae4ef2..ef4fa01a 100644
--- a/earthaccess/store.py
+++ b/earthaccess/store.py
@@ -442,7 +442,7 @@ def _open_urls(
def get(
self,
granules: Union[List[DataGranule], List[str]],
- local_path: Optional[Path] = None,
+ local_path: Union[Path, str, None] = None,
provider: Optional[str] = None,
threads: int = 8,
) -> List[str]:
@@ -468,6 +468,8 @@ def get(
today = datetime.datetime.today().strftime("%Y-%m-%d")
uuid = uuid4().hex[:6]
local_path = Path.cwd() / "data" / f"{today}-{uuid}"
+ elif isinstance(local_path, str):
+ local_path = Path(local_path)
if len(granules):
files = self._get(granules, local_path, provider, threads)
diff --git a/poetry.lock b/poetry.lock
index f19c3f21..888693e3 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -1040,7 +1040,7 @@ files = [
name = "entrypoints"
version = "0.4"
description = "Discover and load entry points from installed packages."
-optional = true
+optional = false
python-versions = ">=3.6"
files = [
{file = "entrypoints-0.4-py3-none-any.whl", hash = "sha256:f174b5ff827504fd3cd97cc3f8649f3693f51538c7e4bdf3ef002c8429d42f9f"},
@@ -2150,6 +2150,99 @@ files = [
{file = "locket-1.0.0.tar.gz", hash = "sha256:5c0d4c052a8bbbf750e056a8e65ccd309086f4f0f18a2eac306a8dfa4112a632"},
]
+[[package]]
+name = "lxml"
+version = "5.1.0"
+description = "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API."
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "lxml-5.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:704f5572ff473a5f897745abebc6df40f22d4133c1e0a1f124e4f2bd3330ff7e"},
+ {file = "lxml-5.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9d3c0f8567ffe7502d969c2c1b809892dc793b5d0665f602aad19895f8d508da"},
+ {file = "lxml-5.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5fcfbebdb0c5d8d18b84118842f31965d59ee3e66996ac842e21f957eb76138c"},
+ {file = "lxml-5.1.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2f37c6d7106a9d6f0708d4e164b707037b7380fcd0b04c5bd9cae1fb46a856fb"},
+ {file = "lxml-5.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2befa20a13f1a75c751f47e00929fb3433d67eb9923c2c0b364de449121f447c"},
+ {file = "lxml-5.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22b7ee4c35f374e2c20337a95502057964d7e35b996b1c667b5c65c567d2252a"},
+ {file = "lxml-5.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:bf8443781533b8d37b295016a4b53c1494fa9a03573c09ca5104550c138d5c05"},
+ {file = "lxml-5.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:82bddf0e72cb2af3cbba7cec1d2fd11fda0de6be8f4492223d4a268713ef2147"},
+ {file = "lxml-5.1.0-cp310-cp310-win32.whl", hash = "sha256:b66aa6357b265670bb574f050ffceefb98549c721cf28351b748be1ef9577d93"},
+ {file = "lxml-5.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:4946e7f59b7b6a9e27bef34422f645e9a368cb2be11bf1ef3cafc39a1f6ba68d"},
+ {file = "lxml-5.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:14deca1460b4b0f6b01f1ddc9557704e8b365f55c63070463f6c18619ebf964f"},
+ {file = "lxml-5.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ed8c3d2cd329bf779b7ed38db176738f3f8be637bb395ce9629fc76f78afe3d4"},
+ {file = "lxml-5.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:436a943c2900bb98123b06437cdd30580a61340fbdb7b28aaf345a459c19046a"},
+ {file = "lxml-5.1.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:acb6b2f96f60f70e7f34efe0c3ea34ca63f19ca63ce90019c6cbca6b676e81fa"},
+ {file = "lxml-5.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:af8920ce4a55ff41167ddbc20077f5698c2e710ad3353d32a07d3264f3a2021e"},
+ {file = "lxml-5.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7cfced4a069003d8913408e10ca8ed092c49a7f6cefee9bb74b6b3e860683b45"},
+ {file = "lxml-5.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:9e5ac3437746189a9b4121db2a7b86056ac8786b12e88838696899328fc44bb2"},
+ {file = "lxml-5.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f4c9bda132ad108b387c33fabfea47866af87f4ea6ffb79418004f0521e63204"},
+ {file = "lxml-5.1.0-cp311-cp311-win32.whl", hash = "sha256:bc64d1b1dab08f679fb89c368f4c05693f58a9faf744c4d390d7ed1d8223869b"},
+ {file = "lxml-5.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:a5ab722ae5a873d8dcee1f5f45ddd93c34210aed44ff2dc643b5025981908cda"},
+ {file = "lxml-5.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:9aa543980ab1fbf1720969af1d99095a548ea42e00361e727c58a40832439114"},
+ {file = "lxml-5.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:6f11b77ec0979f7e4dc5ae081325a2946f1fe424148d3945f943ceaede98adb8"},
+ {file = "lxml-5.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a36c506e5f8aeb40680491d39ed94670487ce6614b9d27cabe45d94cd5d63e1e"},
+ {file = "lxml-5.1.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f643ffd2669ffd4b5a3e9b41c909b72b2a1d5e4915da90a77e119b8d48ce867a"},
+ {file = "lxml-5.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:16dd953fb719f0ffc5bc067428fc9e88f599e15723a85618c45847c96f11f431"},
+ {file = "lxml-5.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16018f7099245157564d7148165132c70adb272fb5a17c048ba70d9cc542a1a1"},
+ {file = "lxml-5.1.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:82cd34f1081ae4ea2ede3d52f71b7be313756e99b4b5f829f89b12da552d3aa3"},
+ {file = "lxml-5.1.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:19a1bc898ae9f06bccb7c3e1dfd73897ecbbd2c96afe9095a6026016e5ca97b8"},
+ {file = "lxml-5.1.0-cp312-cp312-win32.whl", hash = "sha256:13521a321a25c641b9ea127ef478b580b5ec82aa2e9fc076c86169d161798b01"},
+ {file = "lxml-5.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:1ad17c20e3666c035db502c78b86e58ff6b5991906e55bdbef94977700c72623"},
+ {file = "lxml-5.1.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:24ef5a4631c0b6cceaf2dbca21687e29725b7c4e171f33a8f8ce23c12558ded1"},
+ {file = "lxml-5.1.0-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8d2900b7f5318bc7ad8631d3d40190b95ef2aa8cc59473b73b294e4a55e9f30f"},
+ {file = "lxml-5.1.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:601f4a75797d7a770daed8b42b97cd1bb1ba18bd51a9382077a6a247a12aa38d"},
+ {file = "lxml-5.1.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4b68c961b5cc402cbd99cca5eb2547e46ce77260eb705f4d117fd9c3f932b95"},
+ {file = "lxml-5.1.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:afd825e30f8d1f521713a5669b63657bcfe5980a916c95855060048b88e1adb7"},
+ {file = "lxml-5.1.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:262bc5f512a66b527d026518507e78c2f9c2bd9eb5c8aeeb9f0eb43fcb69dc67"},
+ {file = "lxml-5.1.0-cp36-cp36m-win32.whl", hash = "sha256:e856c1c7255c739434489ec9c8aa9cdf5179785d10ff20add308b5d673bed5cd"},
+ {file = "lxml-5.1.0-cp36-cp36m-win_amd64.whl", hash = "sha256:c7257171bb8d4432fe9d6fdde4d55fdbe663a63636a17f7f9aaba9bcb3153ad7"},
+ {file = "lxml-5.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b9e240ae0ba96477682aa87899d94ddec1cc7926f9df29b1dd57b39e797d5ab5"},
+ {file = "lxml-5.1.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a96f02ba1bcd330807fc060ed91d1f7a20853da6dd449e5da4b09bfcc08fdcf5"},
+ {file = "lxml-5.1.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e3898ae2b58eeafedfe99e542a17859017d72d7f6a63de0f04f99c2cb125936"},
+ {file = "lxml-5.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:61c5a7edbd7c695e54fca029ceb351fc45cd8860119a0f83e48be44e1c464862"},
+ {file = "lxml-5.1.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:3aeca824b38ca78d9ee2ab82bd9883083d0492d9d17df065ba3b94e88e4d7ee6"},
+ {file = "lxml-5.1.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8f52fe6859b9db71ee609b0c0a70fea5f1e71c3462ecf144ca800d3f434f0764"},
+ {file = "lxml-5.1.0-cp37-cp37m-win32.whl", hash = "sha256:d42e3a3fc18acc88b838efded0e6ec3edf3e328a58c68fbd36a7263a874906c8"},
+ {file = "lxml-5.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:eac68f96539b32fce2c9b47eb7c25bb2582bdaf1bbb360d25f564ee9e04c542b"},
+ {file = "lxml-5.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ae15347a88cf8af0949a9872b57a320d2605ae069bcdf047677318bc0bba45b1"},
+ {file = "lxml-5.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c26aab6ea9c54d3bed716b8851c8bfc40cb249b8e9880e250d1eddde9f709bf5"},
+ {file = "lxml-5.1.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:342e95bddec3a698ac24378d61996b3ee5ba9acfeb253986002ac53c9a5f6f84"},
+ {file = "lxml-5.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:725e171e0b99a66ec8605ac77fa12239dbe061482ac854d25720e2294652eeaa"},
+ {file = "lxml-5.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d184e0d5c918cff04cdde9dbdf9600e960161d773666958c9d7b565ccc60c45"},
+ {file = "lxml-5.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:98f3f020a2b736566c707c8e034945c02aa94e124c24f77ca097c446f81b01f1"},
+ {file = "lxml-5.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6d48fc57e7c1e3df57be5ae8614bab6d4e7b60f65c5457915c26892c41afc59e"},
+ {file = "lxml-5.1.0-cp38-cp38-win32.whl", hash = "sha256:7ec465e6549ed97e9f1e5ed51c657c9ede767bc1c11552f7f4d022c4df4a977a"},
+ {file = "lxml-5.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:b21b4031b53d25b0858d4e124f2f9131ffc1530431c6d1321805c90da78388d1"},
+ {file = "lxml-5.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:52427a7eadc98f9e62cb1368a5079ae826f94f05755d2d567d93ee1bc3ceb354"},
+ {file = "lxml-5.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6a2a2c724d97c1eb8cf966b16ca2915566a4904b9aad2ed9a09c748ffe14f969"},
+ {file = "lxml-5.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:843b9c835580d52828d8f69ea4302537337a21e6b4f1ec711a52241ba4a824f3"},
+ {file = "lxml-5.1.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9b99f564659cfa704a2dd82d0684207b1aadf7d02d33e54845f9fc78e06b7581"},
+ {file = "lxml-5.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f8b0c78e7aac24979ef09b7f50da871c2de2def043d468c4b41f512d831e912"},
+ {file = "lxml-5.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9bcf86dfc8ff3e992fed847c077bd875d9e0ba2fa25d859c3a0f0f76f07f0c8d"},
+ {file = "lxml-5.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:49a9b4af45e8b925e1cd6f3b15bbba2c81e7dba6dce170c677c9cda547411e14"},
+ {file = "lxml-5.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:280f3edf15c2a967d923bcfb1f8f15337ad36f93525828b40a0f9d6c2ad24890"},
+ {file = "lxml-5.1.0-cp39-cp39-win32.whl", hash = "sha256:ed7326563024b6e91fef6b6c7a1a2ff0a71b97793ac33dbbcf38f6005e51ff6e"},
+ {file = "lxml-5.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:8d7b4beebb178e9183138f552238f7e6613162a42164233e2bda00cb3afac58f"},
+ {file = "lxml-5.1.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:9bd0ae7cc2b85320abd5e0abad5ccee5564ed5f0cc90245d2f9a8ef330a8deae"},
+ {file = "lxml-5.1.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8c1d679df4361408b628f42b26a5d62bd3e9ba7f0c0e7969f925021554755aa"},
+ {file = "lxml-5.1.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:2ad3a8ce9e8a767131061a22cd28fdffa3cd2dc193f399ff7b81777f3520e372"},
+ {file = "lxml-5.1.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:304128394c9c22b6569eba2a6d98392b56fbdfbad58f83ea702530be80d0f9df"},
+ {file = "lxml-5.1.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d74fcaf87132ffc0447b3c685a9f862ffb5b43e70ea6beec2fb8057d5d2a1fea"},
+ {file = "lxml-5.1.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:8cf5877f7ed384dabfdcc37922c3191bf27e55b498fecece9fd5c2c7aaa34c33"},
+ {file = "lxml-5.1.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:877efb968c3d7eb2dad540b6cabf2f1d3c0fbf4b2d309a3c141f79c7e0061324"},
+ {file = "lxml-5.1.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f14a4fb1c1c402a22e6a341a24c1341b4a3def81b41cd354386dcb795f83897"},
+ {file = "lxml-5.1.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:25663d6e99659544ee8fe1b89b1a8c0aaa5e34b103fab124b17fa958c4a324a6"},
+ {file = "lxml-5.1.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:8b9f19df998761babaa7f09e6bc169294eefafd6149aaa272081cbddc7ba4ca3"},
+ {file = "lxml-5.1.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e53d7e6a98b64fe54775d23a7c669763451340c3d44ad5e3a3b48a1efbdc96f"},
+ {file = "lxml-5.1.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:c3cd1fc1dc7c376c54440aeaaa0dcc803d2126732ff5c6b68ccd619f2e64be4f"},
+ {file = "lxml-5.1.0.tar.gz", hash = "sha256:3eea6ed6e6c918e468e693c41ef07f3c3acc310b70ddd9cc72d9ef84bc9564ca"},
+]
+
+[package.extras]
+cssselect = ["cssselect (>=0.7)"]
+html5 = ["html5lib"]
+htmlsoup = ["BeautifulSoup4"]
+source = ["Cython (>=3.0.7)"]
+
[[package]]
name = "markdown"
version = "3.5.2"
@@ -2417,13 +2510,13 @@ files = [
[[package]]
name = "mistune"
-version = "3.0.2"
-description = "A sane and fast Markdown parser with useful plugins and renderers"
+version = "0.8.4"
+description = "The fastest markdown parser in pure Python"
optional = false
-python-versions = ">=3.7"
+python-versions = "*"
files = [
- {file = "mistune-3.0.2-py3-none-any.whl", hash = "sha256:71481854c30fdbc938963d3605b72501f5c10a9320ecd412c121c163a1c7d205"},
- {file = "mistune-3.0.2.tar.gz", hash = "sha256:fc7f93ded930c92394ef2cb6f04a8aabab4117a91449e72dcc8dfa646a508be8"},
+ {file = "mistune-0.8.4-py2.py3-none-any.whl", hash = "sha256:88a1051873018da288eee8538d476dffe1262495144b33ecb586c4ab266bb8d4"},
+ {file = "mistune-0.8.4.tar.gz", hash = "sha256:59a3429db53c50b5c6bcc8a07f8848cb00d7dc8bdb431a4ab41920d201d4756e"},
]
[[package]]
@@ -2475,54 +2568,40 @@ mkdocs = ">=1.1"
[[package]]
name = "mkdocs-jupyter"
-version = "0.24.3"
+version = "0.22.0"
description = "Use Jupyter in mkdocs websites"
optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.7.1,<4"
files = [
- {file = "mkdocs_jupyter-0.24.3-py3-none-any.whl", hash = "sha256:904262a8678a5e5920b7c3c03b5010b36301a69d0a38f2fcbf430493adf6879e"},
- {file = "mkdocs_jupyter-0.24.3.tar.gz", hash = "sha256:3d81da9aea27480e93bab22438910c4f0b9630613e74f85b576590d78e0e8b14"},
+ {file = "mkdocs-jupyter-0.22.0.tar.gz", hash = "sha256:585cc69bea4cb9faf6898131978dc9a9b225091ed4b6084f5ab65652a5e12185"},
]
[package.dependencies]
-ipykernel = ">6.0.0,<7.0.0"
-jupytext = ">1.13.8,<2"
-mkdocs = ">=1.4.0,<2"
-mkdocs-material = ">9.0.0"
-nbconvert = ">=7.2.9,<8"
-pygments = ">2.12.0"
-
-[package.extras]
-test = ["coverage[toml]", "pymdown-extensions", "pytest", "pytest-cov"]
+jupytext = ">=1.13.8,<2.0.0"
+mkdocs = ">=1.2.3,<2.0.0"
+mkdocs-material = ">=8.0.0,<9.0.0"
+nbconvert = ">=6.2.0,<7.0.0"
+Pygments = ">=2.12.0,<3.0.0"
[[package]]
name = "mkdocs-material"
-version = "9.5.11"
+version = "8.5.11"
description = "Documentation that simply works"
optional = false
-python-versions = ">=3.8"
+python-versions = ">=3.7"
files = [
- {file = "mkdocs_material-9.5.11-py3-none-any.whl", hash = "sha256:788ee0f3e036dca2dc20298d65e480297d348a44c9d7b2ee05c5262983e66072"},
- {file = "mkdocs_material-9.5.11.tar.gz", hash = "sha256:7af7f8af0dea16175558f3fb9245d26c83a17199baa5f157755e63d7437bf971"},
+ {file = "mkdocs_material-8.5.11-py3-none-any.whl", hash = "sha256:c907b4b052240a5778074a30a78f31a1f8ff82d7012356dc26898b97559f082e"},
+ {file = "mkdocs_material-8.5.11.tar.gz", hash = "sha256:b0ea0513fd8cab323e8a825d6692ea07fa83e917bb5db042e523afecc7064ab7"},
]
[package.dependencies]
-babel = ">=2.10,<3.0"
-colorama = ">=0.4,<1.0"
-jinja2 = ">=3.0,<4.0"
-markdown = ">=3.2,<4.0"
-mkdocs = ">=1.5.3,<1.6.0"
-mkdocs-material-extensions = ">=1.3,<2.0"
-paginate = ">=0.5,<1.0"
-pygments = ">=2.16,<3.0"
-pymdown-extensions = ">=10.2,<11.0"
-regex = ">=2022.4"
-requests = ">=2.26,<3.0"
-
-[package.extras]
-git = ["mkdocs-git-committers-plugin-2 (>=1.1,<2.0)", "mkdocs-git-revision-date-localized-plugin (>=1.2.4,<2.0)"]
-imaging = ["cairosvg (>=2.6,<3.0)", "pillow (>=10.2,<11.0)"]
-recommended = ["mkdocs-minify-plugin (>=0.7,<1.0)", "mkdocs-redirects (>=1.2,<2.0)", "mkdocs-rss-plugin (>=1.6,<2.0)"]
+jinja2 = ">=3.0.2"
+markdown = ">=3.2"
+mkdocs = ">=1.4.0"
+mkdocs-material-extensions = ">=1.1"
+pygments = ">=2.12"
+pymdown-extensions = ">=9.4"
+requests = ">=2.26"
[[package]]
name = "mkdocs-material-extensions"
@@ -2771,41 +2850,40 @@ test = ["flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "nbconvert (>=
[[package]]
name = "nbconvert"
-version = "7.16.1"
-description = "Converting Jupyter Notebooks (.ipynb files) to other formats. Output formats include asciidoc, html, latex, markdown, pdf, py, rst, script. nbconvert can be used both as a Python library (`import nbconvert`) or as a command line tool (invoked as `jupyter nbconvert ...`)."
+version = "6.5.4"
+description = "Converting Jupyter Notebooks"
optional = false
-python-versions = ">=3.8"
+python-versions = ">=3.7"
files = [
- {file = "nbconvert-7.16.1-py3-none-any.whl", hash = "sha256:3188727dffadfdc9c6a1c7250729063d7bc78b355ad7aa023138afa030d1cd07"},
- {file = "nbconvert-7.16.1.tar.gz", hash = "sha256:e79e6a074f49ba3ed29428ed86487bf51509d9aab613bd8522ac08f6d28fd7fd"},
+ {file = "nbconvert-6.5.4-py3-none-any.whl", hash = "sha256:d679a947f849a966cbbd0bf6e7fedcfdb64be3b20ce7cef11ad55c13f5820e19"},
+ {file = "nbconvert-6.5.4.tar.gz", hash = "sha256:9e3c7c6d491374cbdd5f35d268c05809357716d346f4573186bbeab32ee50bc1"},
]
[package.dependencies]
beautifulsoup4 = "*"
-bleach = "!=5.0.0"
+bleach = "*"
defusedxml = "*"
-importlib-metadata = {version = ">=3.6", markers = "python_version < \"3.10\""}
+entrypoints = ">=0.2.2"
jinja2 = ">=3.0"
jupyter-core = ">=4.7"
jupyterlab-pygments = "*"
-markupsafe = ">=2.0"
-mistune = ">=2.0.3,<4"
+lxml = "*"
+MarkupSafe = ">=2.0"
+mistune = ">=0.8.1,<2"
nbclient = ">=0.5.0"
-nbformat = ">=5.7"
+nbformat = ">=5.1"
packaging = "*"
pandocfilters = ">=1.4.1"
pygments = ">=2.4.1"
tinycss2 = "*"
-traitlets = ">=5.1"
+traitlets = ">=5.0"
[package.extras]
-all = ["nbconvert[docs,qtpdf,serve,test,webpdf]"]
-docs = ["ipykernel", "ipython", "myst-parser", "nbsphinx (>=0.2.12)", "pydata-sphinx-theme", "sphinx (==5.0.2)", "sphinxcontrib-spelling"]
-qtpdf = ["nbconvert[qtpng]"]
-qtpng = ["pyqtwebengine (>=5.15)"]
+all = ["ipykernel", "ipython", "ipywidgets (>=7)", "nbsphinx (>=0.2.12)", "pre-commit", "pyppeteer (>=1,<1.1)", "pytest", "pytest-cov", "pytest-dependency", "sphinx (>=1.5.1)", "sphinx-rtd-theme", "tornado (>=6.1)"]
+docs = ["ipython", "nbsphinx (>=0.2.12)", "sphinx (>=1.5.1)", "sphinx-rtd-theme"]
serve = ["tornado (>=6.1)"]
-test = ["flaky", "ipykernel", "ipywidgets (>=7.5)", "pytest"]
-webpdf = ["playwright"]
+test = ["ipykernel", "ipywidgets (>=7)", "pre-commit", "pyppeteer (>=1,<1.1)", "pytest", "pytest-cov", "pytest-dependency"]
+webpdf = ["pyppeteer (>=1,<1.1)"]
[[package]]
name = "nbformat"
@@ -2961,16 +3039,6 @@ files = [
{file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"},
]
-[[package]]
-name = "paginate"
-version = "0.5.6"
-description = "Divides large result sets into pages for easier browsing"
-optional = false
-python-versions = "*"
-files = [
- {file = "paginate-0.5.6.tar.gz", hash = "sha256:5e6007b6a9398177a7e1648d04fdd9f8c9766a1a945bceac82f1929e8c78af2d"},
-]
-
[[package]]
name = "pandas"
version = "2.0.3"
@@ -3970,108 +4038,6 @@ files = [
attrs = ">=22.2.0"
rpds-py = ">=0.7.0"
-[[package]]
-name = "regex"
-version = "2023.12.25"
-description = "Alternative regular expression module, to replace re."
-optional = false
-python-versions = ">=3.7"
-files = [
- {file = "regex-2023.12.25-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0694219a1d54336fd0445ea382d49d36882415c0134ee1e8332afd1529f0baa5"},
- {file = "regex-2023.12.25-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b014333bd0217ad3d54c143de9d4b9a3ca1c5a29a6d0d554952ea071cff0f1f8"},
- {file = "regex-2023.12.25-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d865984b3f71f6d0af64d0d88f5733521698f6c16f445bb09ce746c92c97c586"},
- {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e0eabac536b4cc7f57a5f3d095bfa557860ab912f25965e08fe1545e2ed8b4c"},
- {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c25a8ad70e716f96e13a637802813f65d8a6760ef48672aa3502f4c24ea8b400"},
- {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9b6d73353f777630626f403b0652055ebfe8ff142a44ec2cf18ae470395766e"},
- {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9cc99d6946d750eb75827cb53c4371b8b0fe89c733a94b1573c9dd16ea6c9e4"},
- {file = "regex-2023.12.25-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88d1f7bef20c721359d8675f7d9f8e414ec5003d8f642fdfd8087777ff7f94b5"},
- {file = "regex-2023.12.25-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cb3fe77aec8f1995611f966d0c656fdce398317f850d0e6e7aebdfe61f40e1cd"},
- {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7aa47c2e9ea33a4a2a05f40fcd3ea36d73853a2aae7b4feab6fc85f8bf2c9704"},
- {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:df26481f0c7a3f8739fecb3e81bc9da3fcfae34d6c094563b9d4670b047312e1"},
- {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:c40281f7d70baf6e0db0c2f7472b31609f5bc2748fe7275ea65a0b4601d9b392"},
- {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:d94a1db462d5690ebf6ae86d11c5e420042b9898af5dcf278bd97d6bda065423"},
- {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ba1b30765a55acf15dce3f364e4928b80858fa8f979ad41f862358939bdd1f2f"},
- {file = "regex-2023.12.25-cp310-cp310-win32.whl", hash = "sha256:150c39f5b964e4d7dba46a7962a088fbc91f06e606f023ce57bb347a3b2d4630"},
- {file = "regex-2023.12.25-cp310-cp310-win_amd64.whl", hash = "sha256:09da66917262d9481c719599116c7dc0c321ffcec4b1f510c4f8a066f8768105"},
- {file = "regex-2023.12.25-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1b9d811f72210fa9306aeb88385b8f8bcef0dfbf3873410413c00aa94c56c2b6"},
- {file = "regex-2023.12.25-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d902a43085a308cef32c0d3aea962524b725403fd9373dea18110904003bac97"},
- {file = "regex-2023.12.25-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d166eafc19f4718df38887b2bbe1467a4f74a9830e8605089ea7a30dd4da8887"},
- {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7ad32824b7f02bb3c9f80306d405a1d9b7bb89362d68b3c5a9be53836caebdb"},
- {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:636ba0a77de609d6510235b7f0e77ec494d2657108f777e8765efc060094c98c"},
- {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fda75704357805eb953a3ee15a2b240694a9a514548cd49b3c5124b4e2ad01b"},
- {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f72cbae7f6b01591f90814250e636065850c5926751af02bb48da94dfced7baa"},
- {file = "regex-2023.12.25-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:db2a0b1857f18b11e3b0e54ddfefc96af46b0896fb678c85f63fb8c37518b3e7"},
- {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:7502534e55c7c36c0978c91ba6f61703faf7ce733715ca48f499d3dbbd7657e0"},
- {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:e8c7e08bb566de4faaf11984af13f6bcf6a08f327b13631d41d62592681d24fe"},
- {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:283fc8eed679758de38fe493b7d7d84a198b558942b03f017b1f94dda8efae80"},
- {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:f44dd4d68697559d007462b0a3a1d9acd61d97072b71f6d1968daef26bc744bd"},
- {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:67d3ccfc590e5e7197750fcb3a2915b416a53e2de847a728cfa60141054123d4"},
- {file = "regex-2023.12.25-cp311-cp311-win32.whl", hash = "sha256:68191f80a9bad283432385961d9efe09d783bcd36ed35a60fb1ff3f1ec2efe87"},
- {file = "regex-2023.12.25-cp311-cp311-win_amd64.whl", hash = "sha256:7d2af3f6b8419661a0c421584cfe8aaec1c0e435ce7e47ee2a97e344b98f794f"},
- {file = "regex-2023.12.25-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8a0ccf52bb37d1a700375a6b395bff5dd15c50acb745f7db30415bae3c2b0715"},
- {file = "regex-2023.12.25-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c3c4a78615b7762740531c27cf46e2f388d8d727d0c0c739e72048beb26c8a9d"},
- {file = "regex-2023.12.25-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ad83e7545b4ab69216cef4cc47e344d19622e28aabec61574b20257c65466d6a"},
- {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7a635871143661feccce3979e1727c4e094f2bdfd3ec4b90dfd4f16f571a87a"},
- {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d498eea3f581fbe1b34b59c697512a8baef88212f92e4c7830fcc1499f5b45a5"},
- {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:43f7cd5754d02a56ae4ebb91b33461dc67be8e3e0153f593c509e21d219c5060"},
- {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51f4b32f793812714fd5307222a7f77e739b9bc566dc94a18126aba3b92b98a3"},
- {file = "regex-2023.12.25-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ba99d8077424501b9616b43a2d208095746fb1284fc5ba490139651f971d39d9"},
- {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4bfc2b16e3ba8850e0e262467275dd4d62f0d045e0e9eda2bc65078c0110a11f"},
- {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8c2c19dae8a3eb0ea45a8448356ed561be843b13cbc34b840922ddf565498c1c"},
- {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:60080bb3d8617d96f0fb7e19796384cc2467447ef1c491694850ebd3670bc457"},
- {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b77e27b79448e34c2c51c09836033056a0547aa360c45eeeb67803da7b0eedaf"},
- {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:518440c991f514331f4850a63560321f833979d145d7d81186dbe2f19e27ae3d"},
- {file = "regex-2023.12.25-cp312-cp312-win32.whl", hash = "sha256:e2610e9406d3b0073636a3a2e80db05a02f0c3169b5632022b4e81c0364bcda5"},
- {file = "regex-2023.12.25-cp312-cp312-win_amd64.whl", hash = "sha256:cc37b9aeebab425f11f27e5e9e6cf580be7206c6582a64467a14dda211abc232"},
- {file = "regex-2023.12.25-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:da695d75ac97cb1cd725adac136d25ca687da4536154cdc2815f576e4da11c69"},
- {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d126361607b33c4eb7b36debc173bf25d7805847346dd4d99b5499e1fef52bc7"},
- {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4719bb05094d7d8563a450cf8738d2e1061420f79cfcc1fa7f0a44744c4d8f73"},
- {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5dd58946bce44b53b06d94aa95560d0b243eb2fe64227cba50017a8d8b3cd3e2"},
- {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22a86d9fff2009302c440b9d799ef2fe322416d2d58fc124b926aa89365ec482"},
- {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2aae8101919e8aa05ecfe6322b278f41ce2994c4a430303c4cd163fef746e04f"},
- {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e692296c4cc2873967771345a876bcfc1c547e8dd695c6b89342488b0ea55cd8"},
- {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:263ef5cc10979837f243950637fffb06e8daed7f1ac1e39d5910fd29929e489a"},
- {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:d6f7e255e5fa94642a0724e35406e6cb7001c09d476ab5fce002f652b36d0c39"},
- {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:88ad44e220e22b63b0f8f81f007e8abbb92874d8ced66f32571ef8beb0643b2b"},
- {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:3a17d3ede18f9cedcbe23d2daa8a2cd6f59fe2bf082c567e43083bba3fb00347"},
- {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d15b274f9e15b1a0b7a45d2ac86d1f634d983ca40d6b886721626c47a400bf39"},
- {file = "regex-2023.12.25-cp37-cp37m-win32.whl", hash = "sha256:ed19b3a05ae0c97dd8f75a5d8f21f7723a8c33bbc555da6bbe1f96c470139d3c"},
- {file = "regex-2023.12.25-cp37-cp37m-win_amd64.whl", hash = "sha256:a6d1047952c0b8104a1d371f88f4ab62e6275567d4458c1e26e9627ad489b445"},
- {file = "regex-2023.12.25-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:b43523d7bc2abd757119dbfb38af91b5735eea45537ec6ec3a5ec3f9562a1c53"},
- {file = "regex-2023.12.25-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:efb2d82f33b2212898f1659fb1c2e9ac30493ac41e4d53123da374c3b5541e64"},
- {file = "regex-2023.12.25-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b7fca9205b59c1a3d5031f7e64ed627a1074730a51c2a80e97653e3e9fa0d415"},
- {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:086dd15e9435b393ae06f96ab69ab2d333f5d65cbe65ca5a3ef0ec9564dfe770"},
- {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e81469f7d01efed9b53740aedd26085f20d49da65f9c1f41e822a33992cb1590"},
- {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:34e4af5b27232f68042aa40a91c3b9bb4da0eeb31b7632e0091afc4310afe6cb"},
- {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9852b76ab558e45b20bf1893b59af64a28bd3820b0c2efc80e0a70a4a3ea51c1"},
- {file = "regex-2023.12.25-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ff100b203092af77d1a5a7abe085b3506b7eaaf9abf65b73b7d6905b6cb76988"},
- {file = "regex-2023.12.25-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cc038b2d8b1470364b1888a98fd22d616fba2b6309c5b5f181ad4483e0017861"},
- {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:094ba386bb5c01e54e14434d4caabf6583334090865b23ef58e0424a6286d3dc"},
- {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5cd05d0f57846d8ba4b71d9c00f6f37d6b97d5e5ef8b3c3840426a475c8f70f4"},
- {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:9aa1a67bbf0f957bbe096375887b2505f5d8ae16bf04488e8b0f334c36e31360"},
- {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:98a2636994f943b871786c9e82bfe7883ecdaba2ef5df54e1450fa9869d1f756"},
- {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:37f8e93a81fc5e5bd8db7e10e62dc64261bcd88f8d7e6640aaebe9bc180d9ce2"},
- {file = "regex-2023.12.25-cp38-cp38-win32.whl", hash = "sha256:d78bd484930c1da2b9679290a41cdb25cc127d783768a0369d6b449e72f88beb"},
- {file = "regex-2023.12.25-cp38-cp38-win_amd64.whl", hash = "sha256:b521dcecebc5b978b447f0f69b5b7f3840eac454862270406a39837ffae4e697"},
- {file = "regex-2023.12.25-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:f7bc09bc9c29ebead055bcba136a67378f03d66bf359e87d0f7c759d6d4ffa31"},
- {file = "regex-2023.12.25-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e14b73607d6231f3cc4622809c196b540a6a44e903bcfad940779c80dffa7be7"},
- {file = "regex-2023.12.25-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9eda5f7a50141291beda3edd00abc2d4a5b16c29c92daf8d5bd76934150f3edc"},
- {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cc6bb9aa69aacf0f6032c307da718f61a40cf970849e471254e0e91c56ffca95"},
- {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:298dc6354d414bc921581be85695d18912bea163a8b23cac9a2562bbcd5088b1"},
- {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2f4e475a80ecbd15896a976aa0b386c5525d0ed34d5c600b6d3ebac0a67c7ddf"},
- {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:531ac6cf22b53e0696f8e1d56ce2396311254eb806111ddd3922c9d937151dae"},
- {file = "regex-2023.12.25-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22f3470f7524b6da61e2020672df2f3063676aff444db1daa283c2ea4ed259d6"},
- {file = "regex-2023.12.25-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:89723d2112697feaa320c9d351e5f5e7b841e83f8b143dba8e2d2b5f04e10923"},
- {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0ecf44ddf9171cd7566ef1768047f6e66975788258b1c6c6ca78098b95cf9a3d"},
- {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:905466ad1702ed4acfd67a902af50b8db1feeb9781436372261808df7a2a7bca"},
- {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:4558410b7a5607a645e9804a3e9dd509af12fb72b9825b13791a37cd417d73a5"},
- {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:7e316026cc1095f2a3e8cc012822c99f413b702eaa2ca5408a513609488cb62f"},
- {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3b1de218d5375cd6ac4b5493e0b9f3df2be331e86520f23382f216c137913d20"},
- {file = "regex-2023.12.25-cp39-cp39-win32.whl", hash = "sha256:11a963f8e25ab5c61348d090bf1b07f1953929c13bd2309a0662e9ff680763c9"},
- {file = "regex-2023.12.25-cp39-cp39-win_amd64.whl", hash = "sha256:e693e233ac92ba83a87024e1d32b5f9ab15ca55ddd916d878146f4e3406b5c91"},
- {file = "regex-2023.12.25.tar.gz", hash = "sha256:29171aa128da69afdf4bde412d5bedc335f2ca8fcfe4489038577d05f16181e5"},
-]
-
[[package]]
name = "requests"
version = "2.31.0"
@@ -4608,13 +4574,13 @@ urllib3 = ">=2"
[[package]]
name = "types-setuptools"
-version = "69.1.0.20240223"
+version = "69.1.0.20240229"
description = "Typing stubs for setuptools"
optional = false
python-versions = ">=3.8"
files = [
- {file = "types-setuptools-69.1.0.20240223.tar.gz", hash = "sha256:8a886a1fd06b668782dfbdaded4fd8a4e8c9f3d8d4c02acdd1240df098f50bf7"},
- {file = "types_setuptools-69.1.0.20240223-py3-none-any.whl", hash = "sha256:30a0d9903a81a424bd0f979534552a016a4543760aaffd499b9a2fe85bae0bfd"},
+ {file = "types-setuptools-69.1.0.20240229.tar.gz", hash = "sha256:e16f1ec06ed8ffdb207471bdc19b10c0425617cd587b7837f5d8cad39a02a6b8"},
+ {file = "types_setuptools-69.1.0.20240229-py3-none-any.whl", hash = "sha256:de2dd992fd91e3c4b0585deaad8d049559df3fd2572caa76fe8d3d0a3804ac4d"},
]
[[package]]
@@ -5158,4 +5124,4 @@ kerchunk = ["dask", "kerchunk"]
[metadata]
lock-version = "2.0"
python-versions = ">=3.8,<4.0"
-content-hash = "9f73164e1d0a16c033d1b8b0a7a5f1441bb3fb86a9f31d92884e87690c0be263"
+content-hash = "ffb6194f3b2c82dfe845dd9f463dc68b43b482244a1118574b709528a7841949"
diff --git a/pyproject.toml b/pyproject.toml
index 182a1b74..22b1883c 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -57,7 +57,7 @@ pytest = ">=6.0"
pytest-cov = ">=2.8"
pytest-watch = ">=4.2"
mkdocs = ">=1.2"
-mkdocs-material = ">=7.1"
+mkdocs-material = ">=7.1,<9.0"
markdown-callouts = ">=0.2.0"
markdown-include = ">=0.6"
mkdocstrings = {extras = ["python"], version = ">=0.19.0"}
diff --git a/readthedocs.yml b/readthedocs.yml
index 5f41264e..acea8084 100644
--- a/readthedocs.yml
+++ b/readthedocs.yml
@@ -9,18 +9,21 @@ version: 2
build:
os: ubuntu-22.04
tools:
- python: "3.9"
+ python: "3.10"
jobs:
post_create_environment:
# Install poetry
- # https://python-poetry.org/docs/#installing-manually
- - pip install poetry
+ - asdf plugin add poetry
+ - asdf install poetry latest
+ - asdf global poetry latest
# Tell poetry to not use a virtual environment
- poetry config virtualenvs.create false
post_install:
# Install dependencies with 'docs' dependency group
# https://python-poetry.org/docs/managing-dependencies/#dependency-groups
- - poetry install
+ - VIRTUAL_ENV=$READTHEDOCS_VIRTUALENV_PATH poetry install
+ - VIRTUAL_ENV=$READTHEDOCS_VIRTUALENV_PATH poetry env info
+ - pip freeze
mkdocs:
configuration: mkdocs.yml
diff --git a/tests/integration/conftest.py b/tests/integration/conftest.py
new file mode 100644
index 00000000..8be3de59
--- /dev/null
+++ b/tests/integration/conftest.py
@@ -0,0 +1,12 @@
+import pytest
+
+ACCEPTABLE_FAILURE_RATE = 10
+
+
+@pytest.hookimpl()
+def pytest_sessionfinish(session, exitstatus):
+ if exitstatus == 0:
+ return
+ failure_rate = (100.0 * session.testsfailed) / session.testscollected
+ if failure_rate <= ACCEPTABLE_FAILURE_RATE:
+ session.exitstatus = 0