From d3ab17f4810752f30ad1b90e6b946e163a226af9 Mon Sep 17 00:00:00 2001 From: Nikki Tebaldi <17799906+nikki-t@users.noreply.github.com> Date: Thu, 20 Jun 2024 14:36:48 -0400 Subject: [PATCH] Release/1.3.0 (#191) * /version 1.3.0a0 * Update build.yml * /version 1.3.0a1 * /version 1.3.0a2 * Feature/issue 175 - Update docs to point to OPS (#176) * changelog * update examples, remove load_data readme, info moved to wiki * Dependency update to fix snyk scan * issues/101: Support for HTTP Accept header (#172) * Reorganize timeseries code to prep for Accept header * Enable Accept header to return response of specific content-type * Fix whitespace and string continuation * Make error handling consistent and add an additional test where a reach can't be found * Update changelog with issue for unreleased version * Add 415 status code to API definition * Few minor cleanup items * Few minor cleanup items * Update to aiohttp@3.9.4 * Fix dependencies --------- Co-authored-by: Frank Greguska <89428916+frankinspace@users.noreply.github.com> * /version 1.3.0a3 * issues/102: Support compression of API response (#173) * Enable payload compression * Update changelog with issue --------- Co-authored-by: Frank Greguska <89428916+frankinspace@users.noreply.github.com> * /version 1.3.0a4 * Feature/issue 100 Add option to 'compact' GeoJSON result into single feature (#177) * Reorganize timeseries code to prep for Accept header * Enable Accept header to return response of specific content-type * Fix whitespace and string continuation * Make error handling consistent and add an additional test where a reach can't be found * Update changelog with issue for unreleased version * Add 415 status code to API definition * Few minor cleanup items * Few minor cleanup items * Update to aiohttp@3.9.4 * Fix dependencies * Update required query parameters based on current API functionality * Enable return of 'compact' GeoJSON response * Fix linting and add test data * Update documentation for API accept headers and compact GeoJSON response * Fix references to incorrect Accept header examples --------- Co-authored-by: Frank Greguska <89428916+frankinspace@users.noreply.github.com> * /version 1.3.0a5 * Feature/issue 183 (#185) * Provide introduction to timeseries endpoint * Remove _units in fields list * Fix typo * Update examples with Accept headers and compact query parameter * Add issue to changelog * Fix typo in timeseries documentation * Update pymysql * Update pymysql * Provide clarity on accept headers and request parameter fields * /version 1.3.0a6 * Feature/issue 186 Implement API keys (#188) * API Gateway Lambda authorizer to facilitate API keys and usage plans * Unit tests to test Lambda authorizer * Fix terraform file formatting * API Gateway Lambda Authorizer - Lambda function - API Keys and Authorizer definition in OpenAPI spec - API gateway API keys - API gateway usage plans - SSM parameters for API keys * Fix trailing whitespace * Set default region environment variable * Fix SNYK vulnerabilities * Add issue to changelog * Implement custom trusted partner header x-hydrocron-key * Update cryptography for SNYK vulnerability * Update documentation to include API key usage * Update quota and throttle settings for API Gateway * Update API keys documentation to indicate to be implemented * Move API key lookup to Lambda INIT * Remove API key authentication and update API key to x-hydrocron-key * /version 1.3.0a7 * Update changelog for 1.3.0 release * Update dependencies * Fix trailing whitespace in README * /version 1.3.0rc1 * Set api key source to authorizer * /version 1.3.0rc2 --------- Co-authored-by: nikki-t Co-authored-by: Frank Greguska <89428916+frankinspace@users.noreply.github.com> Co-authored-by: frankinspace Co-authored-by: Victoria McDonald <49625194+torimcd@users.noreply.github.com> --- .github/workflows/build.yml | 1 + CHANGELOG.md | 16 + README.md | 2 +- docs/examples.md | 657 +++++-- docs/hydrocron_tutorial.ipynb | 1130 +++++++++-- docs/timeseries.md | 496 ++++- hydrocron/api/controllers/authorizer.py | 60 + hydrocron/api/controllers/timeseries.py | 399 ++-- hydrocron/api/swagger/swagger.yaml | 111 -- hydrocron/db/LOAD_DATA_README.md | 75 - hydrocron/utils/connection.py | 14 + poetry.lock | 1684 +++++++++-------- pyproject.toml | 8 +- terraform/.terraform.lock.hcl | 4 +- .../hydrocron_aws_api.yml | 64 +- terraform/hydrocron-apigw.tf | 108 +- terraform/hydrocron-dynamo.tf | 16 +- terraform/hydrocron-iam.tf | 157 +- terraform/hydrocron-lambda.tf | 36 +- terraform/hydrocron-sns.tf | 4 +- terraform/main.tf | 4 +- terraform/versions.tf | 4 +- tests/test_api.py | 591 +++--- tests/test_authorizer.py | 96 + tests/test_connection.py | 7 + tests/test_data/api_authorizer_default.json | 20 + tests/test_data/api_authorizer_trusted.json | 20 + tests/test_data/api_query_results_csv.csv | 2 + .../test_data/api_query_results_geojson.json | 1147 +++++++++++ .../api_query_results_geojson_compact.json | 1161 ++++++++++++ 30 files changed, 6266 insertions(+), 1828 deletions(-) create mode 100644 hydrocron/api/controllers/authorizer.py delete mode 100644 hydrocron/api/swagger/swagger.yaml delete mode 100644 hydrocron/db/LOAD_DATA_README.md create mode 100644 tests/test_authorizer.py create mode 100644 tests/test_data/api_authorizer_default.json create mode 100644 tests/test_data/api_authorizer_trusted.json create mode 100644 tests/test_data/api_query_results_csv.csv create mode 100644 tests/test_data/api_query_results_geojson.json create mode 100644 tests/test_data/api_query_results_geojson_compact.json diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 86f22361..36e03dfc 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -131,6 +131,7 @@ jobs: if: | startsWith(github.ref, 'refs/heads/main') && steps.manual.conclusion == 'skipped' + id: release env: CURRENT_VERSION: ${{ steps.get-version.outputs.current_version }} # Remove rc* from end of version string diff --git a/CHANGELOG.md b/CHANGELOG.md index 9862dac6..2b3ddc2d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,9 +7,25 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] ### Added +### Changed +### Deprecated +### Removed +### Fixed +### Security + +## [1.3.0] + +### Added + - Issue 186 - Implement API keys to control usage + - Issue 183 - Update documentation examples and provide a brief intro to the timeseries endpoint + - Issue 100 - Add option to 'compact' GeoJSON result into single feature + - Issue 101 - Add support for HTTP Accept header + - Issue 102 - Enable compression for API Responses +### Changed ### Deprecated ### Removed ### Fixed + - Issue 175 - Update all documentation to point to OPS instead of UAT ### Security ## [1.2.0] diff --git a/README.md b/README.md index 004194ad..9b886502 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ as CSV and geoJSON. ## Requirements Python 3.10+ -## Running Locally with Docker +## Running Locally with Docker 1. Build or pull the hydrocron docker image 2. Run docker compose to launch dynamodb local and hydrocron local diff --git a/docs/examples.md b/docs/examples.md index 3459d10c..32897f9b 100644 --- a/docs/examples.md +++ b/docs/examples.md @@ -4,28 +4,47 @@ Search for a single river reach by reach ID. - /timeseries?feature=Reach&feature_id=78340600051&output=geojson&start_time=2024-01-25T00:00:00Z&end_time=2024-03-29T00:00:00Z&fields=reach_id,time_str,wse,slope +[https://soto.podaac.earthdatacloud.nasa.gov/hydrocron/v1/timeseries?feature=Reach&feature_id=78340600051&output=geojson&start_time=2024-01-25T00:00:00Z&end_time=2024-03-29T00:00:00Z&fields=reach_id,time_str,wse,slope](https://soto.podaac.earthdatacloud.nasa.gov/hydrocron/v1/timeseries?feature=Reach&feature_id=78340600051&output=geojson&start_time=2024-01-25T00:00:00Z&end_time=2024-03-29T00:00:00Z&fields=reach_id,time_str,wse,slope) Will return GeoJSON: - { - "status":"200 OK", - "time":844.614, - "hits":10, - "results":{ - "csv":"", - "geojson":{ - "type":"FeatureCollection", - "features":[ - { - "id":"0", - "type":"Feature", - "properties":{ - "reach_id":"78340600051", - "time_str":"2024-01-30T09:38:22Z", - "wse":"3089.5784", - "slope":"-0.0177291808" - }, +```json +{ + "status":"200 OK", + "time":844.614, + "hits":10, + "results":{ + "csv":"", + "geojson":{ + "type":"FeatureCollection", + "features":[ + { + "id":"0", + "type":"Feature", + "properties":{ + "reach_id":"78340600051", + "time_str":"2024-01-30T09:38:22Z", + "wse":"3089.5784", + "slope":"-0.0177291808" + }, + "geometry":{ + "type":"LineString", + "coordinates":[ + [-127.285739,54.942484], + [-127.286202,54.942598], + [-127.286664,54.942767], + [-127.287029,54.942988], + [-127.330039,54.99239] + ] + } + }, + { + "id":"1", + "type":"Feature", + "properties":{ + "reach_id":"78340600051", + "time_str":"2024-02-03T18:33:48Z", + "wse":"1545.616","slope":"-0.0084122704"}, "geometry":{ "type":"LineString", "coordinates":[ @@ -38,174 +57,500 @@ Will return GeoJSON: } }, { - "id":"1", + "id":"5", "type":"Feature", "properties":{ "reach_id":"78340600051", - "time_str":"2024-02-03T18:33:48Z", - "wse":"1545.616","slope":"-0.0084122704"}, - "geometry":{ - "type":"LineString", - "coordinates":[ - [-127.285739,54.942484], - [-127.286202,54.942598], - [-127.286664,54.942767], - [-127.287029,54.942988], - [-127.330039,54.99239] - ] - } + "time_str":"2024-02-24T15:18:54Z", + "wse":"2315.8056", + "slope":"-0.010764612" }, - { - "id":"5", - "type":"Feature", - "properties":{ - "reach_id":"78340600051", - "time_str":"2024-02-24T15:18:54Z", - "wse":"2315.8056", - "slope":"-0.010764612" - }, - "geometry":{ - "type":"LineString", - "coordinates":[ - [-127.285739,54.942484], - [-127.286202,54.942598], - [-127.286664,54.942767], - [-127.287029,54.942988], - [-127.330039,54.99239] - ] - } + "geometry":{ + "type":"LineString", + "coordinates":[ + [-127.285739,54.942484], + [-127.286202,54.942598], + [-127.286664,54.942767], + [-127.287029,54.942988], + [-127.330039,54.99239] + ] } - ] - } + } + ] } - } + } +} +``` ** geometry simplified for example +## Get time series GeoJSON for river node + +Search for a single river node by ID. + +[https://soto.podaac.earthdatacloud.nasa.gov/hydrocron/v1/timeseries?feature=Node&feature_id=12228200110861&start_time=2024-01-25T00:00:00Z&end_time=2024-03-30T00:00:00Z&output=geojson&fields=reach_id,node_id,time_str,wse](https://soto.podaac.earthdatacloud.nasa.gov/hydrocron/v1/timeseries?feature=Node&feature_id=12228200110861&start_time=2024-01-25T00:00:00Z&end_time=2024-03-30T00:00:00Z&output=geojson&fields=reach_id,node_id,time_str,wse) + +Will return GeoJSON: + +```json +{ +"status": "200 OK", +"time": 604.705, +"hits": 9, +"results": { + "csv": "", + "geojson": { + "type": "FeatureCollection", + "features": [ + { + "id": "0", + "type": "Feature", + "properties": { + "reach_id": "12228200111", + "node_id": "12228200110861", + "time_str": "2024-01-30T21:19:19Z", + "wse": "677.9232", + "wse_units": "m" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 35.149314, + -10.256285 + ] + } + }, + { + "id": "1", + "type": "Feature", + "properties": { + "reach_id": "12228200111", + "node_id": "12228200110861", + "time_str": "2024-02-06T08:37:09Z", + "wse": "673.46918", + "wse_units": "m" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 35.149314, + -10.256285 + ] + } + }, + { + "id": "2", + "type": "Feature", + "properties": { + "reach_id": "12228200111", + "node_id": "12228200110861", + "time_str": "no_data", + "wse": "-999999999999.0", + "wse_units": "m" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 35.149314, + -10.256285 + ] + } + }, + { + "id": "3", + "type": "Feature", + "properties": { + "reach_id": "12228200111", + "node_id": "12228200110861", + "time_str": "2024-02-20T18:04:24Z", + "wse": "673.69799", + "wse_units": "m" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 35.149314, + -10.256285 + ] + } + }, + { + "id": "4", + "type": "Feature", + "properties": { + "reach_id": "12228200111", + "node_id": "12228200110861", + "time_str": "2024-02-27T05:22:15Z", + "wse": "674.66235", + "wse_units": "m" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 35.149314, + -10.256285 + ] + } + }, + { + "id": "5", + "type": "Feature", + "properties": { + "reach_id": "12228200111", + "node_id": "12228200110861", + "time_str": "no_data", + "wse": "-999999999999.0", + "wse_units": "m" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 35.149314, + -10.256285 + ] + } + }, + { + "id": "6", + "type": "Feature", + "properties": { + "reach_id": "12228200111", + "node_id": "12228200110861", + "time_str": "2024-03-12T14:49:26Z", + "wse": "673.47788", + "wse_units": "m" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 35.149314, + -10.256285 + ] + } + }, + { + "id": "7", + "type": "Feature", + "properties": { + "reach_id": "12228200111", + "node_id": "12228200110861", + "time_str": "2024-03-19T02:07:17Z", + "wse": "675.23219", + "wse_units": "m" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 35.149314, + -10.256285 + ] + } + }, + { + "id": "8", + "type": "Feature", + "properties": { + "reach_id": "12228200111", + "node_id": "12228200110861", + "time_str": "no_data", + "wse": "-999999999999.0", + "wse_units": "m" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 35.149314, + -10.256285 + ] + } + } + ] + } + } +} +``` + ## Get time series CSV for river reach Search for a single river reach by ID. - timeseries?feature=Reach&feature_id=78340600051&output=csv&start_time=2024-01-25T00:00:00Z&end_time=2024-03-29T00:00:00Z&fields=reach_id,time_str,wse,slope +[https://soto.podaac.earthdatacloud.nasa.gov/hydrocron/v1/timeseries?feature=Reach&feature_id=78340600051&output=csv&start_time=2024-01-25T00:00:00Z&end_time=2024-03-29T00:00:00Z&fields=reach_id,time_str,wse,slope](https://soto.podaac.earthdatacloud.nasa.gov/hydrocron/v1/timeseries?feature=Reach&feature_id=78340600051&output=csv&start_time=2024-01-25T00:00:00Z&end_time=2024-03-29T00:00:00Z&fields=reach_id,time_str,wse,slope) Will return CSV: - { - "status":"200 OK", - "time":1698.409, - "hits":10, - "results":{ - "csv":"reach_id,time_str,wse,slope\n78340600051,2024-01-30T09:38:22Z,3089.5784,-0.0177291808\n78340600051,2024-02-03T18:33:48Z,1545.616,-0.0084122704\n78340600051,no_data,-999999999999.0,-999999999999.0\n78340600051,2024-02-13T16:56:05Z,2705.2151,-0.0173284608\n78340600051,2024-02-20T06:23:27Z,2851.5466,-0.0150748836\n78340600051,2024-02-24T15:18:54Z,2315.8056,-0.010764612\n78340600051,no_data,-999999999999.0,-999999999999.0\n78340600051,2024-03-05T13:41:09Z,2699.6648,-0.017148134500000002\n78340600051,2024-03-12T03:08:30Z,1225.3901999999998,-0.0064166586\n78340600051,no_data,-999999999999.0,-999999999999.0\n", - "geojson":{} - } +```json +{ + "status": "200 OK", + "time": 850.25, + "hits": 12, + "results": { + "csv": "reach_id,time_str,wse,slope,wse_units,slope_units\n78340600051,2024-01-30T09:38:22Z,386.1973,-0.0022161476,m,m/m\n78340600051,2024-02-03T18:33:48Z,386.404,-0.0021030676,m,m/m\n78340600051,no_data,-999999999999.0,-999999999999.0,m,m/m\n78340600051,2024-02-13T16:56:05Z,386.4593,-0.0024754944,m,m/m\n78340600051,2024-02-20T06:23:27Z,407.3638,-0.0021535548,m,m/m\n78340600051,2024-02-24T15:18:54Z,385.9676,-0.001794102,m,m/m\n78340600051,no_data,-999999999999.0,-999999999999.0,m,m/m\n78340600051,2024-03-05T13:41:09Z,385.6664,-0.0024497335,m,m/m\n78340600051,2024-03-12T03:08:30Z,408.4634,-0.0021388862,m,m/m\n78340600051,2024-03-16T12:03:56Z,386.5635,-0.0021972558,m,m/m\n78340600051,no_data,-999999999999.0,-999999999999.0,m,m/m\n78340600051,2024-03-26T10:26:13Z,386.2493,-0.0021548483,m,m/m\n", + "geojson": {} } +} +``` -## Get time series GeoJSON for river node +## Get time series CSV for river node Search for a single river node by ID. - timeseries?feature=Node&feature_id=12228200110861&start_time=2024-01-25T00:00:00Z&end_time=2024-03-30T00:00:00Z&output=geojson&fields=reach_id,node_id,time_str,wse' +[https://soto.podaac.earthdatacloud.nasa.gov/hydrocron/v1/timeseries?feature=Node&feature_id=28311800020621&start_time=2024-01-25T00:00:00Z&end_time=2024-03-27T00:00:00Z&output=csv&fields=node_id,reach_id,time_str,wse,geometry](https://soto.podaac.earthdatacloud.nasa.gov/hydrocron/v1/timeseries?feature=Node&feature_id=28311800020621&start_time=2024-01-25T00:00:00Z&end_time=2024-03-27T00:00:00Z&output=csv&fields=node_id,reach_id,time_str,wse,geometry) -Will return GeoJSON: +Will return CSV: - { - "status":"200 OK", - "time":559.201, - "hits":5, - "results":{ - "csv":"", - "geojson":{ - "type":"FeatureCollection", - "features":[ - { - "id":"0", - "type":"Feature", - "properties":{ - "reach_id":"12228200111", - "node_id":"12228200110861", - "time_str":"2024-01-30T21:19:19Z", - "wse":"5423.3856" - }, - "geometry":{ - "type":"Point", - "coordinates":[35.149314,-10.256285] - } - }, - { - "id":"1", - "type":"Feature", - "properties":{ - "reach_id":"12228200111", - "node_id":"12228200110861", - "time_str":"2024-02-06T08:37:09Z", - "wse":"2020.4075400000002" - }, - "geometry":{ - "type":"Point", - "coordinates":[35.149314,-10.256285] - } - }, - { - "id":"2", - "type":"Feature", - "properties":{ - "reach_id":"12228200111", - "node_id":"12228200110861", - "time_str":"2024-02-20T18:04:24Z", - "wse":"2021.09397" - }, - "geometry":{ - "type":"Point", - "coordinates":[35.149314,-10.256285] - } - }, - { - "id":"3", - "type":"Feature", - "properties":{ - "reach_id":"12228200111", - "node_id":"12228200110861", - "time_str":"2024-03-12T14:49:26Z", - "wse":"5387.82304" - }, - "geometry":{ - "type":"Point", - "coordinates":[35.149314,-10.256285] - } +```json +{ + "status": "200 OK", + "time": 500.644, + "hits": 11, + "results": { + "csv": "node_id,reach_id,time_str,wse,geometry,wse_units\n28311800020621,28311800021,2024-01-28T08:15:21Z,-15.54433,POINT (45.949474 48.354881),m\n28311800020621,28311800021,2024-01-31T21:37:09Z,-15.63838,POINT (45.949474 48.354881),m\n28311800020621,28311800021,2024-02-07T06:37:36Z,-999999999999.0,POINT (45.949474 48.354881),m\n28311800020621,28311800021,2024-02-10T19:59:24Z,-14.46997,POINT (45.949474 48.354881),m\n28311800020621,28311800021,2024-02-18T05:00:26Z,-15.99808,POINT (45.949474 48.354881),m\n28311800020621,28311800021,2024-02-21T18:22:14Z,-999999999999.0,POINT (45.949474 48.354881),m\n28311800020621,28311800021,2024-02-28T03:22:42Z,-999999999999.0,POINT (45.949474 48.354881),m\n28311800020621,28311800021,2024-03-02T16:44:30Z,-16.80069,POINT (45.949474 48.354881),m\n28311800020621,28311800021,2024-03-10T01:45:29Z,-15.65594,POINT (45.949474 48.354881),m\n28311800020621,28311800021,2024-03-13T15:07:16Z,-999999999999.0,POINT (45.949474 48.354881),m\n28311800020621,28311800021,2024-03-23T13:29:33Z,-16.73133,POINT (45.949474 48.354881),m\n", + "geojson": {} + } +} +``` + +## Accept headers + +See the [documentation on the timeseries endpoint](timeseries.md) for an explanation of Accept headers. + +### Get time series for application/geo+json Accept Header + +```bash +curl --header "Accept: application/geo+json" --location 'https://soto.podaac.earthdatacloud.nasa.gov/hydrocron/v1/timeseries?feature=Reach&feature_id=63470800171&start_time=2024-02-01T00:00:00%2b00:00&end_time=2024-10-30T00:00:00%2b00:00&fields=reach_id,time_str,wse' +``` + +** Note the output query parameter is not specified in the request. + +Will return GeoJSON response: + +```json +{ + "type": "FeatureCollection", + "features": [ + { + "id": "0", + "type": "Feature", + "properties": { + "reach_id": [ + "63470800171", + "63470800171" + ], + "time_str": [ + "2024-02-01T02:26:50Z", + "2024-02-08T13:48:41Z" + ], + "wse": [ + "3386.9332", + "1453.4136" + ], + "width": [ + "383.19271200000003", + "501.616464" + ], + "wse_units": [ + "m", + "m" + ], + "width_units": [ + "m", + "m" + ] + }, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -45.845445, + -16.166559 + ] + ] + } + } + ] +} +``` + +** geometry simplified for example + +### Get time series for text/csv Accept Header + +```bash +curl --header "Accept: text/csv" --location 'https://soto.podaac.earthdatacloud.nasa.gov/hydrocron/v1/timeseries?feature=Reach&feature_id=63470800171&start_time=2024-02-01T00:00:00%2b00:00&end_time=2024-10-30T00:00:00%2b00:00&fields=reach_id,time_str,wse' +``` + +** Note the output query parameter is not specified in the request. + +Will return a CSV response: + +```json +"reach_id,time_str,wse,width,wse_units,width_units\n63470800171,2024-02-01T02:26:50Z,3386.9332,383.19271200000003,m,m\n63470800171,2024-02-08T13:48:41Z,1453.4136,501.616464,m,m\n" +``` + +## Compact request + +### Get time series for application/json with compact=True + +```bash +curl --location 'https://soto.podaac.earthdatacloud.nasa.gov/hydrocron/v1/timeseries?feature=Reach&feature_id=63470800171&start_time=2024-02-01T00:00:00%2b00:00&end_time=2024-10-30T00:00:00%2b00:00&fields=reach_id,time_str,wse&compact=true' +``` + +Will return a compacted JSON response with metadata: + +```json +{ + "status": "200 OK", + "time": 737.056, + "hits": 2, + "results": { + "csv": "", + "geojson": { + "type": "FeatureCollection", + "features": [ + { + "id": "0", + "type": "Feature", + "properties": { + "reach_id": [ + "63470800171", + "63470800171" + ], + "time_str": [ + "2024-02-01T02:26:50Z", + "2024-02-08T13:48:41Z" + ], + "wse": [ + "3386.9332", + "1453.4136" + ], + "wse_units": [ + "m", + "m" + ] }, - { - "id":"4", - "type":"Feature", - "properties":{ - "reach_id":"12228200111", - "node_id":"12228200110861", - "time_str":"2024-03-19T02:07:17Z", - "wse":"6077.089709999999" - }, - "geometry":{ - "type":"Point", - "coordinates":[35.149314,-10.256285] - } + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -45.845445, + -16.166559 + ] + ] } + } + ] + } + } +} +``` + +** geometry simplified for example + +### Get time series for application/geo+json + +```bash +curl -v --header "Accept: application/geo+json" --location 'https://soto.podaac.earthdatacloud.nasa.gov/hydrocron/v1/timeseries?feature=Reach&feature_id=63470800171&start_time=2024-02-01T00:00:00%2b00:00&end_time=2024-10-30T00:00:00%2b00:00&fields=reach_id,time_str,wse' +``` + +** Note compacted response returned by default as no compact query parameter is specified. + +Will return compacted GeoJSON response: + +```json +{ + "type": "FeatureCollection", + "features": [ + { + "id": "0", + "type": "Feature", + "properties": { + "reach_id": [ + "63470800171", + "63470800171" + ], + "time_str": [ + "2024-02-01T02:26:50Z", + "2024-02-08T13:48:41Z" + ], + "wse": [ + "3386.9332", + "1453.4136" + ], + "wse_units": [ + "m", + "m" + ] + }, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -45.845445, + -16.166559 + ] ] } } - } + ] +} +``` -## Get time series CSV for river node +** geometry simplified for example -Search for a single river node by ID. +### Get time series for application/geo+json with compact=False - timeseries?feature=Node&feature_id=28311800020621&start_time=2024-01-25T00:00:00Z&end_time=2024-03-27T00:00:00Z&output=csv&fields=node_id,reach_id,time_str,wse,geometry +```bash +curl --header "Accept: application/geo+json" --location 'https://soto.podaac.earthdatacloud.nasa.gov/hydrocron/v1/timeseries?feature=Reach&feature_id=63470800171&start_time=2024-02-01T00:00:00%2b00:00&end_time=2024-10-30T00:00:00%2b00:00&fields=reach_id,time_str,wse&compact=false' +``` -Will return CSV: +** Note compact query parameter is specified. - { - "status":"200 OK", - "time":521.995, - "hits":2, - "results":{ - "csv":"node_id,reach_id,time_str,wse,geometry\n28311800020621,28311800021,2024-01-28T08:15:21Z,-77.72165,POINT (45.949474 48.354881)\n28311800020621,28311800021,2024-01-31T21:37:09Z,-78.1919,POINT (45.949474 48.354881)\n", - "geojson":{} +Will return a GeoJSON response that is not compacted: + +```json +{ + "type": "FeatureCollection", + "features": [ + { + "id": "0", + "type": "Feature", + "properties": { + "reach_id": "63470800171", + "time_str": "2024-02-01T02:26:50Z", + "wse": "3386.9332", + "wse_units": "m" + }, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -45.845445, + -16.166559 + ] + ] } - } + }, + { + "id": "1", + "type": "Feature", + "properties": { + "reach_id": "63470800171", + "time_str": "2024-02-08T13:48:41Z", + "wse": "1453.4136", + "wse_units": "m" + }, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -45.845445, + -16.166559 + ] + ] + } + } + ] +} +``` + +** geometry simplified for example diff --git a/docs/hydrocron_tutorial.ipynb b/docs/hydrocron_tutorial.ipynb index c67c2e72..575c1c01 100644 --- a/docs/hydrocron_tutorial.ipynb +++ b/docs/hydrocron_tutorial.ipynb @@ -29,7 +29,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -46,7 +46,7 @@ "source": [ "Send a request to Hydrocron with the following parameters:\n", "\n", - "https://soto.podaac.uat.earthdatacloud.nasa.gov/hydrocron/v1/timeseries?\n", + "https://soto.podaac.earthdatacloud.nasa.gov/hydrocron/v1/timeseries?\n", "\n", " feature=Reach \n", " feature_id=53151000375 \n", @@ -58,7 +58,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 2, "metadata": { "tags": [ "scroll-output" @@ -69,16 +69,16 @@ "data": { "text/plain": [ "{'status': '200 OK',\n", - " 'time': 831.336,\n", - " 'hits': 6,\n", + " 'time': 2573.59,\n", + " 'hits': 7,\n", " 'results': {'csv': '',\n", " 'geojson': {'type': 'FeatureCollection',\n", " 'features': [{'id': '0',\n", " 'type': 'Feature',\n", " 'properties': {'reach_id': '53151000375',\n", " 'time_str': '2024-01-25T03:21:55Z',\n", - " 'wse': '12.566399999999998',\n", - " 'width': '819.213972',\n", + " 'wse': '2.0944',\n", + " 'width': '136.535662',\n", " 'wse_units': 'm',\n", " 'width_units': 'm'},\n", " 'geometry': {'type': 'LineString',\n", @@ -494,8 +494,8 @@ " 'type': 'Feature',\n", " 'properties': {'reach_id': '53151000375',\n", " 'time_str': '2024-01-29T14:27:50Z',\n", - " 'wse': '-6.6084',\n", - " 'width': '193.080748',\n", + " 'wse': '-1.6521',\n", + " 'width': '48.270187',\n", " 'wse_units': 'm',\n", " 'width_units': 'm'},\n", " 'geometry': {'type': 'LineString',\n", @@ -911,8 +911,8 @@ " 'type': 'Feature',\n", " 'properties': {'reach_id': '53151000375',\n", " 'time_str': '2024-02-15T00:07:00Z',\n", - " 'wse': '7.8548',\n", - " 'width': '428.696936',\n", + " 'wse': '1.9637',\n", + " 'width': '107.174234',\n", " 'wse_units': 'm',\n", " 'width_units': 'm'},\n", " 'geometry': {'type': 'LineString',\n", @@ -1328,8 +1328,8 @@ " 'type': 'Feature',\n", " 'properties': {'reach_id': '53151000375',\n", " 'time_str': '2024-02-19T11:12:55Z',\n", - " 'wse': '-15.266',\n", - " 'width': '193.00955',\n", + " 'wse': '-3.0532',\n", + " 'width': '38.60191',\n", " 'wse_units': 'm',\n", " 'width_units': 'm'},\n", " 'geometry': {'type': 'LineString',\n", @@ -1745,8 +1745,8 @@ " 'type': 'Feature',\n", " 'properties': {'reach_id': '53151000375',\n", " 'time_str': '2024-03-06T20:52:04Z',\n", - " 'wse': '-7.9709',\n", - " 'width': '339.44439900000003',\n", + " 'wse': '-1.1387',\n", + " 'width': '48.492057',\n", " 'wse_units': 'm',\n", " 'width_units': 'm'},\n", " 'geometry': {'type': 'LineString',\n", @@ -2162,8 +2162,8 @@ " 'type': 'Feature',\n", " 'properties': {'reach_id': '53151000375',\n", " 'time_str': '2024-03-11T07:57:58Z',\n", - " 'wse': '2.9622',\n", - " 'width': '99.84903',\n", + " 'wse': '1.4811',\n", + " 'width': '49.924515',\n", " 'wse_units': 'm',\n", " 'width_units': 'm'},\n", " 'geometry': {'type': 'LineString',\n", @@ -2574,42 +2574,876 @@ " [142.300903, -8.908204],\n", " [142.301175, -8.907986],\n", " [142.301447, -8.907877],\n", - " [142.30172, -8.907876]]}}]}}}" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "\n", - "hydrocron_response = requests.get(\n", - " \"https://soto.podaac.uat.earthdatacloud.nasa.gov/hydrocron/v1/timeseries?feature=Reach&feature_id=53151000375&start_time=2024-01-01T00:00:00Z&end_time=2024-03-30T00:00:00Z&output=geojson&fields=reach_id,time_str,wse,width,geometry\"\n", - ").json()\n", - "\n", - "hydrocron_response" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "tags": [ - "scroll-output" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "{'type': 'FeatureCollection',\n", - " 'features': [{'id': '0',\n", + " [142.30172, -8.907876]]}},\n", + " {'id': '6',\n", + " 'type': 'Feature',\n", + " 'properties': {'reach_id': '53151000375',\n", + " 'time_str': '2024-03-27T17:37:08Z',\n", + " 'wse': '-0.7693',\n", + " 'width': '43.192787',\n", + " 'wse_units': 'm',\n", + " 'width_units': 'm'},\n", + " 'geometry': {'type': 'LineString',\n", + " 'coordinates': [[142.235319, -8.956718],\n", + " [142.235592, -8.956717],\n", + " [142.235865, -8.956716],\n", + " [142.236137, -8.956607],\n", + " [142.23641, -8.956552],\n", + " [142.236683, -8.956496],\n", + " [142.236955, -8.956441],\n", + " [142.237228, -8.95644],\n", + " [142.237501, -8.956385],\n", + " [142.237774, -8.95633],\n", + " [142.238046, -8.956275],\n", + " [142.238319, -8.956274],\n", + " [142.238592, -8.956219],\n", + " [142.238864, -8.956164],\n", + " [142.239137, -8.956108],\n", + " [142.23941, -8.956107],\n", + " [142.239682, -8.955998],\n", + " [142.239955, -8.955943],\n", + " [142.240228, -8.955888],\n", + " [142.240501, -8.955887],\n", + " [142.240773, -8.955832],\n", + " [142.241046, -8.955831],\n", + " [142.241319, -8.955776],\n", + " [142.241592, -8.955775],\n", + " [142.241864, -8.955719],\n", + " [142.242137, -8.955719],\n", + " [142.24241, -8.955718],\n", + " [142.242683, -8.955771],\n", + " [142.242956, -8.955824],\n", + " [142.243229, -8.955878],\n", + " [142.243502, -8.955877],\n", + " [142.243775, -8.955876],\n", + " [142.244048, -8.955929],\n", + " [142.244321, -8.955982],\n", + " [142.244594, -8.95609],\n", + " [142.244867, -8.956198],\n", + " [142.24514, -8.956305],\n", + " [142.245414, -8.956413],\n", + " [142.245687, -8.95652],\n", + " [142.24596, -8.956628],\n", + " [142.246233, -8.956736],\n", + " [142.246507, -8.956898],\n", + " [142.24678, -8.957005],\n", + " [142.247053, -8.957167],\n", + " [142.247326, -8.957275],\n", + " [142.2476, -8.957436],\n", + " [142.247873, -8.957598],\n", + " [142.248147, -8.95776],\n", + " [142.24842, -8.957922],\n", + " [142.248693, -8.958084],\n", + " [142.248967, -8.958191],\n", + " [142.24924, -8.958299],\n", + " [142.249513, -8.958407],\n", + " [142.249786, -8.95846],\n", + " [142.250059, -8.958513],\n", + " [142.250332, -8.958567],\n", + " [142.250605, -8.958566],\n", + " [142.250878, -8.958565],\n", + " [142.251151, -8.958564],\n", + " [142.251424, -8.958563],\n", + " [142.251696, -8.958562],\n", + " [142.251969, -8.958561],\n", + " [142.252242, -8.958506],\n", + " [142.252515, -8.958451],\n", + " [142.252787, -8.958396],\n", + " [142.25306, -8.958286],\n", + " [142.253332, -8.958231],\n", + " [142.253605, -8.958176],\n", + " [142.253878, -8.958121],\n", + " [142.25415, -8.958065],\n", + " [142.254423, -8.95801],\n", + " [142.254695, -8.957901],\n", + " [142.254968, -8.957846],\n", + " [142.255241, -8.95779],\n", + " [142.255513, -8.957735],\n", + " [142.255786, -8.957734],\n", + " [142.256059, -8.957679],\n", + " [142.256332, -8.957624],\n", + " [142.256604, -8.957569],\n", + " [142.256877, -8.957514],\n", + " [142.25715, -8.957458],\n", + " [142.257422, -8.957457],\n", + " [142.257695, -8.957456],\n", + " [142.257968, -8.957456],\n", + " [142.258241, -8.957455],\n", + " [142.258514, -8.957399],\n", + " [142.258786, -8.957344],\n", + " [142.259059, -8.957289],\n", + " [142.259331, -8.95718],\n", + " [142.259604, -8.95707],\n", + " [142.259876, -8.956961],\n", + " [142.260149, -8.956851],\n", + " [142.260421, -8.956688],\n", + " [142.260694, -8.956578],\n", + " [142.260966, -8.956469],\n", + " [142.261238, -8.956359],\n", + " [142.261511, -8.956196],\n", + " [142.261783, -8.956086],\n", + " [142.262056, -8.956031],\n", + " [142.262328, -8.955921],\n", + " [142.262601, -8.955812],\n", + " [142.262873, -8.955757],\n", + " [142.263146, -8.955702],\n", + " [142.263418, -8.955538],\n", + " [142.263691, -8.955374],\n", + " [142.263963, -8.955211],\n", + " [142.264181, -8.954993],\n", + " [142.264398, -8.954721],\n", + " [142.264561, -8.954449],\n", + " [142.264669, -8.954177],\n", + " [142.264722, -8.953906],\n", + " [142.264721, -8.953634],\n", + " [142.264666, -8.953363],\n", + " [142.264556, -8.953092],\n", + " [142.2645, -8.952821],\n", + " [142.26439, -8.95255],\n", + " [142.26428, -8.95228],\n", + " [142.264116, -8.952009],\n", + " [142.263951, -8.951738],\n", + " [142.263677, -8.951468],\n", + " [142.263403, -8.951197],\n", + " [142.26313, -8.950927],\n", + " [142.26291, -8.950656],\n", + " [142.262691, -8.950386],\n", + " [142.262581, -8.950115],\n", + " [142.262526, -8.949844],\n", + " [142.262579, -8.949572],\n", + " [142.262688, -8.949301],\n", + " [142.262905, -8.949083],\n", + " [142.263123, -8.948865],\n", + " [142.263395, -8.948702],\n", + " [142.263667, -8.948592],\n", + " [142.26394, -8.948537],\n", + " [142.264213, -8.948482],\n", + " [142.264485, -8.948427],\n", + " [142.264758, -8.948371],\n", + " [142.265031, -8.948316],\n", + " [142.265303, -8.948261],\n", + " [142.265576, -8.948206],\n", + " [142.265849, -8.948205],\n", + " [142.266121, -8.948204],\n", + " [142.266394, -8.948203],\n", + " [142.266667, -8.948202],\n", + " [142.26694, -8.948147],\n", + " [142.267212, -8.948092],\n", + " [142.267485, -8.947982],\n", + " [142.267757, -8.947819],\n", + " [142.268029, -8.947601],\n", + " [142.268247, -8.947383],\n", + " [142.26841, -8.947111],\n", + " [142.268572, -8.946839],\n", + " [142.268626, -8.946568],\n", + " [142.268625, -8.946296],\n", + " [142.268569, -8.946025],\n", + " [142.268514, -8.945754],\n", + " [142.268404, -8.945483],\n", + " [142.268294, -8.945212],\n", + " [142.268184, -8.944941],\n", + " [142.268074, -8.94467],\n", + " [142.267909, -8.9444],\n", + " [142.267744, -8.944129],\n", + " [142.26758, -8.943858],\n", + " [142.267415, -8.943588],\n", + " [142.267251, -8.943317],\n", + " [142.26714, -8.943046],\n", + " [142.266976, -8.942775],\n", + " [142.266866, -8.942504],\n", + " [142.266756, -8.942233],\n", + " [142.2667, -8.941962],\n", + " [142.266699, -8.941691],\n", + " [142.266753, -8.941419],\n", + " [142.266806, -8.941148],\n", + " [142.266915, -8.940876],\n", + " [142.267023, -8.940605],\n", + " [142.267131, -8.940333],\n", + " [142.267239, -8.940061],\n", + " [142.267402, -8.93979],\n", + " [142.26751, -8.939518],\n", + " [142.267618, -8.939246],\n", + " [142.267727, -8.938975],\n", + " [142.267835, -8.938703],\n", + " [142.267943, -8.938431],\n", + " [142.268051, -8.93816],\n", + " [142.268159, -8.937888],\n", + " [142.268213, -8.937616],\n", + " [142.268321, -8.937345],\n", + " [142.268375, -8.937073],\n", + " [142.268374, -8.936802],\n", + " [142.268373, -8.936531],\n", + " [142.268372, -8.936259],\n", + " [142.268262, -8.935989],\n", + " [142.268152, -8.935718],\n", + " [142.268042, -8.935447],\n", + " [142.267932, -8.935176],\n", + " [142.267767, -8.934905],\n", + " [142.267602, -8.934634],\n", + " [142.267438, -8.934364],\n", + " [142.267273, -8.934093],\n", + " [142.267054, -8.933822],\n", + " [142.266889, -8.933552],\n", + " [142.266779, -8.933281],\n", + " [142.266669, -8.93301],\n", + " [142.266614, -8.932739],\n", + " [142.266667, -8.932467],\n", + " [142.266776, -8.932196],\n", + " [142.266938, -8.931924],\n", + " [142.267156, -8.931652],\n", + " [142.267428, -8.931434],\n", + " [142.2677, -8.931216],\n", + " [142.267972, -8.931052],\n", + " [142.268244, -8.930888],\n", + " [142.268517, -8.930779],\n", + " [142.268789, -8.930669],\n", + " [142.269062, -8.930614],\n", + " [142.269334, -8.930505],\n", + " [142.269607, -8.93045],\n", + " [142.269879, -8.93034],\n", + " [142.270152, -8.930231],\n", + " [142.270424, -8.930121],\n", + " [142.270697, -8.930066],\n", + " [142.270969, -8.929957],\n", + " [142.271242, -8.929901],\n", + " [142.271515, -8.929846],\n", + " [142.271787, -8.929791],\n", + " [142.27206, -8.929736],\n", + " [142.272333, -8.929735],\n", + " [142.272605, -8.92968],\n", + " [142.272878, -8.929679],\n", + " [142.273151, -8.929624],\n", + " [142.273424, -8.929623],\n", + " [142.273696, -8.929622],\n", + " [142.273969, -8.929675],\n", + " [142.274242, -8.929674],\n", + " [142.274515, -8.929727],\n", + " [142.274788, -8.929727],\n", + " [142.275061, -8.92978],\n", + " [142.275334, -8.929887],\n", + " [142.275608, -8.930049],\n", + " [142.275881, -8.930265],\n", + " [142.276155, -8.930536],\n", + " [142.276429, -8.930806],\n", + " [142.276703, -8.931076],\n", + " [142.276976, -8.931347],\n", + " [142.277195, -8.931617],\n", + " [142.277415, -8.931888],\n", + " [142.277634, -8.932158],\n", + " [142.277853, -8.932429],\n", + " [142.278072, -8.932699],\n", + " [142.278292, -8.93297],\n", + " [142.278511, -8.93324],\n", + " [142.27873, -8.933511],\n", + " [142.278949, -8.933782],\n", + " [142.279168, -8.934052],\n", + " [142.279442, -8.934322],\n", + " [142.279716, -8.934593],\n", + " [142.27999, -8.934863],\n", + " [142.280263, -8.935079],\n", + " [142.280537, -8.935241],\n", + " [142.28081, -8.935349],\n", + " [142.281083, -8.935402],\n", + " [142.281356, -8.935401],\n", + " [142.281628, -8.9354],\n", + " [142.281901, -8.935399],\n", + " [142.282174, -8.935452],\n", + " [142.282447, -8.935451],\n", + " [142.28272, -8.93545],\n", + " [142.282993, -8.935395],\n", + " [142.283265, -8.93534],\n", + " [142.283537, -8.935176],\n", + " [142.28381, -8.935013],\n", + " [142.284027, -8.934795],\n", + " [142.28419, -8.934577],\n", + " [142.284298, -8.934306],\n", + " [142.284352, -8.934034],\n", + " [142.284351, -8.933763],\n", + " [142.284295, -8.933492],\n", + " [142.284185, -8.933221],\n", + " [142.284075, -8.93295],\n", + " [142.283911, -8.932679],\n", + " [142.283746, -8.932409],\n", + " [142.283581, -8.932138],\n", + " [142.283471, -8.931867],\n", + " [142.283416, -8.931596],\n", + " [142.283415, -8.931325],\n", + " [142.283468, -8.931053],\n", + " [142.283631, -8.930835],\n", + " [142.283849, -8.930672],\n", + " [142.284067, -8.930617],\n", + " [142.28434, -8.930562],\n", + " [142.284613, -8.930561],\n", + " [142.284886, -8.930614],\n", + " [142.285159, -8.930667],\n", + " [142.285431, -8.930666],\n", + " [142.285704, -8.93072],\n", + " [142.285977, -8.930773],\n", + " [142.28625, -8.930772],\n", + " [142.286523, -8.930717],\n", + " [142.286795, -8.930607],\n", + " [142.287068, -8.930444],\n", + " [142.28734, -8.930226],\n", + " [142.287557, -8.929954],\n", + " [142.287665, -8.929682],\n", + " [142.287664, -8.929411],\n", + " [142.287554, -8.92914],\n", + " [142.287335, -8.928869],\n", + " [142.287061, -8.928653],\n", + " [142.286788, -8.928437],\n", + " [142.286514, -8.928221],\n", + " [142.286241, -8.928005],\n", + " [142.285967, -8.927789],\n", + " [142.285693, -8.927573],\n", + " [142.28542, -8.927357],\n", + " [142.285146, -8.927141],\n", + " [142.284927, -8.926924],\n", + " [142.284708, -8.926708],\n", + " [142.284544, -8.926437],\n", + " [142.284488, -8.926166],\n", + " [142.284542, -8.925895],\n", + " [142.28465, -8.925623],\n", + " [142.284867, -8.925351],\n", + " [142.285139, -8.925079],\n", + " [142.285411, -8.924807],\n", + " [142.285683, -8.924534],\n", + " [142.285955, -8.924262],\n", + " [142.286172, -8.92399],\n", + " [142.286389, -8.923718],\n", + " [142.286607, -8.923446],\n", + " [142.286769, -8.923174],\n", + " [142.286932, -8.922902],\n", + " [142.287095, -8.922631],\n", + " [142.287258, -8.922359],\n", + " [142.287366, -8.922087],\n", + " [142.287528, -8.921815],\n", + " [142.287637, -8.921544],\n", + " [142.287799, -8.921272],\n", + " [142.287853, -8.921],\n", + " [142.287852, -8.920729],\n", + " [142.287796, -8.920458],\n", + " [142.287741, -8.920187],\n", + " [142.287685, -8.919916],\n", + " [142.28763, -8.919645],\n", + " [142.287629, -8.919373],\n", + " [142.287628, -8.919102],\n", + " [142.287573, -8.918831],\n", + " [142.287462, -8.91856],\n", + " [142.287407, -8.918289],\n", + " [142.287351, -8.918018],\n", + " [142.28735, -8.917746],\n", + " [142.287459, -8.917475],\n", + " [142.287622, -8.917257],\n", + " [142.287839, -8.917094],\n", + " [142.288112, -8.917038],\n", + " [142.288385, -8.916983],\n", + " [142.288657, -8.916982],\n", + " [142.28893, -8.916981],\n", + " [142.289203, -8.916926],\n", + " [142.289475, -8.916817],\n", + " [142.289748, -8.916707],\n", + " [142.29002, -8.916544],\n", + " [142.290292, -8.916326],\n", + " [142.290509, -8.916108],\n", + " [142.290727, -8.915836],\n", + " [142.290835, -8.915564],\n", + " [142.290943, -8.915292],\n", + " [142.290997, -8.915021],\n", + " [142.291105, -8.914749],\n", + " [142.291158, -8.914478],\n", + " [142.291321, -8.914206],\n", + " [142.291484, -8.913934],\n", + " [142.291701, -8.913662],\n", + " [142.291919, -8.913444],\n", + " [142.292191, -8.913281],\n", + " [142.292463, -8.913171],\n", + " [142.292736, -8.91317],\n", + " [142.293009, -8.913278],\n", + " [142.293282, -8.913331],\n", + " [142.293555, -8.913384],\n", + " [142.293828, -8.913492],\n", + " [142.294101, -8.913545],\n", + " [142.294374, -8.913544],\n", + " [142.294647, -8.913543],\n", + " [142.29492, -8.913542],\n", + " [142.295193, -8.913487],\n", + " [142.295465, -8.913378],\n", + " [142.295737, -8.913214],\n", + " [142.296009, -8.91305],\n", + " [142.296281, -8.912832],\n", + " [142.296553, -8.91256],\n", + " [142.296771, -8.912288],\n", + " [142.296988, -8.912016],\n", + " [142.297205, -8.911744],\n", + " [142.297422, -8.911472],\n", + " [142.29764, -8.9112],\n", + " [142.297912, -8.910928],\n", + " [142.298183, -8.910655],\n", + " [142.298455, -8.910383],\n", + " [142.298727, -8.910111],\n", + " [142.298999, -8.909839],\n", + " [142.299271, -8.909621],\n", + " [142.299543, -8.909403],\n", + " [142.299815, -8.909185],\n", + " [142.300087, -8.908967],\n", + " [142.300359, -8.908749],\n", + " [142.300631, -8.908476],\n", + " [142.300903, -8.908204],\n", + " [142.301175, -8.907986],\n", + " [142.301447, -8.907877],\n", + " [142.30172, -8.907876]]}}]}}}" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "hydrocron_response = requests.get(\n", + " \"https://soto.podaac.earthdatacloud.nasa.gov/hydrocron/v1/timeseries?feature=Reach&feature_id=53151000375&start_time=2024-01-01T00:00:00Z&end_time=2024-03-30T00:00:00Z&output=geojson&fields=reach_id,time_str,wse,width,geometry\"\n", + ").json()\n", + "\n", + "hydrocron_response" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "tags": [ + "scroll-output" + ] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'type': 'FeatureCollection',\n", + " 'features': [{'id': '0',\n", + " 'type': 'Feature',\n", + " 'properties': {'reach_id': '53151000375',\n", + " 'time_str': '2024-01-25T03:21:55Z',\n", + " 'wse': '2.0944',\n", + " 'width': '136.535662',\n", + " 'wse_units': 'm',\n", + " 'width_units': 'm'},\n", + " 'geometry': {'type': 'LineString',\n", + " 'coordinates': [[142.235319, -8.956718],\n", + " [142.235592, -8.956717],\n", + " [142.235865, -8.956716],\n", + " [142.236137, -8.956607],\n", + " [142.23641, -8.956552],\n", + " [142.236683, -8.956496],\n", + " [142.236955, -8.956441],\n", + " [142.237228, -8.95644],\n", + " [142.237501, -8.956385],\n", + " [142.237774, -8.95633],\n", + " [142.238046, -8.956275],\n", + " [142.238319, -8.956274],\n", + " [142.238592, -8.956219],\n", + " [142.238864, -8.956164],\n", + " [142.239137, -8.956108],\n", + " [142.23941, -8.956107],\n", + " [142.239682, -8.955998],\n", + " [142.239955, -8.955943],\n", + " [142.240228, -8.955888],\n", + " [142.240501, -8.955887],\n", + " [142.240773, -8.955832],\n", + " [142.241046, -8.955831],\n", + " [142.241319, -8.955776],\n", + " [142.241592, -8.955775],\n", + " [142.241864, -8.955719],\n", + " [142.242137, -8.955719],\n", + " [142.24241, -8.955718],\n", + " [142.242683, -8.955771],\n", + " [142.242956, -8.955824],\n", + " [142.243229, -8.955878],\n", + " [142.243502, -8.955877],\n", + " [142.243775, -8.955876],\n", + " [142.244048, -8.955929],\n", + " [142.244321, -8.955982],\n", + " [142.244594, -8.95609],\n", + " [142.244867, -8.956198],\n", + " [142.24514, -8.956305],\n", + " [142.245414, -8.956413],\n", + " [142.245687, -8.95652],\n", + " [142.24596, -8.956628],\n", + " [142.246233, -8.956736],\n", + " [142.246507, -8.956898],\n", + " [142.24678, -8.957005],\n", + " [142.247053, -8.957167],\n", + " [142.247326, -8.957275],\n", + " [142.2476, -8.957436],\n", + " [142.247873, -8.957598],\n", + " [142.248147, -8.95776],\n", + " [142.24842, -8.957922],\n", + " [142.248693, -8.958084],\n", + " [142.248967, -8.958191],\n", + " [142.24924, -8.958299],\n", + " [142.249513, -8.958407],\n", + " [142.249786, -8.95846],\n", + " [142.250059, -8.958513],\n", + " [142.250332, -8.958567],\n", + " [142.250605, -8.958566],\n", + " [142.250878, -8.958565],\n", + " [142.251151, -8.958564],\n", + " [142.251424, -8.958563],\n", + " [142.251696, -8.958562],\n", + " [142.251969, -8.958561],\n", + " [142.252242, -8.958506],\n", + " [142.252515, -8.958451],\n", + " [142.252787, -8.958396],\n", + " [142.25306, -8.958286],\n", + " [142.253332, -8.958231],\n", + " [142.253605, -8.958176],\n", + " [142.253878, -8.958121],\n", + " [142.25415, -8.958065],\n", + " [142.254423, -8.95801],\n", + " [142.254695, -8.957901],\n", + " [142.254968, -8.957846],\n", + " [142.255241, -8.95779],\n", + " [142.255513, -8.957735],\n", + " [142.255786, -8.957734],\n", + " [142.256059, -8.957679],\n", + " [142.256332, -8.957624],\n", + " [142.256604, -8.957569],\n", + " [142.256877, -8.957514],\n", + " [142.25715, -8.957458],\n", + " [142.257422, -8.957457],\n", + " [142.257695, -8.957456],\n", + " [142.257968, -8.957456],\n", + " [142.258241, -8.957455],\n", + " [142.258514, -8.957399],\n", + " [142.258786, -8.957344],\n", + " [142.259059, -8.957289],\n", + " [142.259331, -8.95718],\n", + " [142.259604, -8.95707],\n", + " [142.259876, -8.956961],\n", + " [142.260149, -8.956851],\n", + " [142.260421, -8.956688],\n", + " [142.260694, -8.956578],\n", + " [142.260966, -8.956469],\n", + " [142.261238, -8.956359],\n", + " [142.261511, -8.956196],\n", + " [142.261783, -8.956086],\n", + " [142.262056, -8.956031],\n", + " [142.262328, -8.955921],\n", + " [142.262601, -8.955812],\n", + " [142.262873, -8.955757],\n", + " [142.263146, -8.955702],\n", + " [142.263418, -8.955538],\n", + " [142.263691, -8.955374],\n", + " [142.263963, -8.955211],\n", + " [142.264181, -8.954993],\n", + " [142.264398, -8.954721],\n", + " [142.264561, -8.954449],\n", + " [142.264669, -8.954177],\n", + " [142.264722, -8.953906],\n", + " [142.264721, -8.953634],\n", + " [142.264666, -8.953363],\n", + " [142.264556, -8.953092],\n", + " [142.2645, -8.952821],\n", + " [142.26439, -8.95255],\n", + " [142.26428, -8.95228],\n", + " [142.264116, -8.952009],\n", + " [142.263951, -8.951738],\n", + " [142.263677, -8.951468],\n", + " [142.263403, -8.951197],\n", + " [142.26313, -8.950927],\n", + " [142.26291, -8.950656],\n", + " [142.262691, -8.950386],\n", + " [142.262581, -8.950115],\n", + " [142.262526, -8.949844],\n", + " [142.262579, -8.949572],\n", + " [142.262688, -8.949301],\n", + " [142.262905, -8.949083],\n", + " [142.263123, -8.948865],\n", + " [142.263395, -8.948702],\n", + " [142.263667, -8.948592],\n", + " [142.26394, -8.948537],\n", + " [142.264213, -8.948482],\n", + " [142.264485, -8.948427],\n", + " [142.264758, -8.948371],\n", + " [142.265031, -8.948316],\n", + " [142.265303, -8.948261],\n", + " [142.265576, -8.948206],\n", + " [142.265849, -8.948205],\n", + " [142.266121, -8.948204],\n", + " [142.266394, -8.948203],\n", + " [142.266667, -8.948202],\n", + " [142.26694, -8.948147],\n", + " [142.267212, -8.948092],\n", + " [142.267485, -8.947982],\n", + " [142.267757, -8.947819],\n", + " [142.268029, -8.947601],\n", + " [142.268247, -8.947383],\n", + " [142.26841, -8.947111],\n", + " [142.268572, -8.946839],\n", + " [142.268626, -8.946568],\n", + " [142.268625, -8.946296],\n", + " [142.268569, -8.946025],\n", + " [142.268514, -8.945754],\n", + " [142.268404, -8.945483],\n", + " [142.268294, -8.945212],\n", + " [142.268184, -8.944941],\n", + " [142.268074, -8.94467],\n", + " [142.267909, -8.9444],\n", + " [142.267744, -8.944129],\n", + " [142.26758, -8.943858],\n", + " [142.267415, -8.943588],\n", + " [142.267251, -8.943317],\n", + " [142.26714, -8.943046],\n", + " [142.266976, -8.942775],\n", + " [142.266866, -8.942504],\n", + " [142.266756, -8.942233],\n", + " [142.2667, -8.941962],\n", + " [142.266699, -8.941691],\n", + " [142.266753, -8.941419],\n", + " [142.266806, -8.941148],\n", + " [142.266915, -8.940876],\n", + " [142.267023, -8.940605],\n", + " [142.267131, -8.940333],\n", + " [142.267239, -8.940061],\n", + " [142.267402, -8.93979],\n", + " [142.26751, -8.939518],\n", + " [142.267618, -8.939246],\n", + " [142.267727, -8.938975],\n", + " [142.267835, -8.938703],\n", + " [142.267943, -8.938431],\n", + " [142.268051, -8.93816],\n", + " [142.268159, -8.937888],\n", + " [142.268213, -8.937616],\n", + " [142.268321, -8.937345],\n", + " [142.268375, -8.937073],\n", + " [142.268374, -8.936802],\n", + " [142.268373, -8.936531],\n", + " [142.268372, -8.936259],\n", + " [142.268262, -8.935989],\n", + " [142.268152, -8.935718],\n", + " [142.268042, -8.935447],\n", + " [142.267932, -8.935176],\n", + " [142.267767, -8.934905],\n", + " [142.267602, -8.934634],\n", + " [142.267438, -8.934364],\n", + " [142.267273, -8.934093],\n", + " [142.267054, -8.933822],\n", + " [142.266889, -8.933552],\n", + " [142.266779, -8.933281],\n", + " [142.266669, -8.93301],\n", + " [142.266614, -8.932739],\n", + " [142.266667, -8.932467],\n", + " [142.266776, -8.932196],\n", + " [142.266938, -8.931924],\n", + " [142.267156, -8.931652],\n", + " [142.267428, -8.931434],\n", + " [142.2677, -8.931216],\n", + " [142.267972, -8.931052],\n", + " [142.268244, -8.930888],\n", + " [142.268517, -8.930779],\n", + " [142.268789, -8.930669],\n", + " [142.269062, -8.930614],\n", + " [142.269334, -8.930505],\n", + " [142.269607, -8.93045],\n", + " [142.269879, -8.93034],\n", + " [142.270152, -8.930231],\n", + " [142.270424, -8.930121],\n", + " [142.270697, -8.930066],\n", + " [142.270969, -8.929957],\n", + " [142.271242, -8.929901],\n", + " [142.271515, -8.929846],\n", + " [142.271787, -8.929791],\n", + " [142.27206, -8.929736],\n", + " [142.272333, -8.929735],\n", + " [142.272605, -8.92968],\n", + " [142.272878, -8.929679],\n", + " [142.273151, -8.929624],\n", + " [142.273424, -8.929623],\n", + " [142.273696, -8.929622],\n", + " [142.273969, -8.929675],\n", + " [142.274242, -8.929674],\n", + " [142.274515, -8.929727],\n", + " [142.274788, -8.929727],\n", + " [142.275061, -8.92978],\n", + " [142.275334, -8.929887],\n", + " [142.275608, -8.930049],\n", + " [142.275881, -8.930265],\n", + " [142.276155, -8.930536],\n", + " [142.276429, -8.930806],\n", + " [142.276703, -8.931076],\n", + " [142.276976, -8.931347],\n", + " [142.277195, -8.931617],\n", + " [142.277415, -8.931888],\n", + " [142.277634, -8.932158],\n", + " [142.277853, -8.932429],\n", + " [142.278072, -8.932699],\n", + " [142.278292, -8.93297],\n", + " [142.278511, -8.93324],\n", + " [142.27873, -8.933511],\n", + " [142.278949, -8.933782],\n", + " [142.279168, -8.934052],\n", + " [142.279442, -8.934322],\n", + " [142.279716, -8.934593],\n", + " [142.27999, -8.934863],\n", + " [142.280263, -8.935079],\n", + " [142.280537, -8.935241],\n", + " [142.28081, -8.935349],\n", + " [142.281083, -8.935402],\n", + " [142.281356, -8.935401],\n", + " [142.281628, -8.9354],\n", + " [142.281901, -8.935399],\n", + " [142.282174, -8.935452],\n", + " [142.282447, -8.935451],\n", + " [142.28272, -8.93545],\n", + " [142.282993, -8.935395],\n", + " [142.283265, -8.93534],\n", + " [142.283537, -8.935176],\n", + " [142.28381, -8.935013],\n", + " [142.284027, -8.934795],\n", + " [142.28419, -8.934577],\n", + " [142.284298, -8.934306],\n", + " [142.284352, -8.934034],\n", + " [142.284351, -8.933763],\n", + " [142.284295, -8.933492],\n", + " [142.284185, -8.933221],\n", + " [142.284075, -8.93295],\n", + " [142.283911, -8.932679],\n", + " [142.283746, -8.932409],\n", + " [142.283581, -8.932138],\n", + " [142.283471, -8.931867],\n", + " [142.283416, -8.931596],\n", + " [142.283415, -8.931325],\n", + " [142.283468, -8.931053],\n", + " [142.283631, -8.930835],\n", + " [142.283849, -8.930672],\n", + " [142.284067, -8.930617],\n", + " [142.28434, -8.930562],\n", + " [142.284613, -8.930561],\n", + " [142.284886, -8.930614],\n", + " [142.285159, -8.930667],\n", + " [142.285431, -8.930666],\n", + " [142.285704, -8.93072],\n", + " [142.285977, -8.930773],\n", + " [142.28625, -8.930772],\n", + " [142.286523, -8.930717],\n", + " [142.286795, -8.930607],\n", + " [142.287068, -8.930444],\n", + " [142.28734, -8.930226],\n", + " [142.287557, -8.929954],\n", + " [142.287665, -8.929682],\n", + " [142.287664, -8.929411],\n", + " [142.287554, -8.92914],\n", + " [142.287335, -8.928869],\n", + " [142.287061, -8.928653],\n", + " [142.286788, -8.928437],\n", + " [142.286514, -8.928221],\n", + " [142.286241, -8.928005],\n", + " [142.285967, -8.927789],\n", + " [142.285693, -8.927573],\n", + " [142.28542, -8.927357],\n", + " [142.285146, -8.927141],\n", + " [142.284927, -8.926924],\n", + " [142.284708, -8.926708],\n", + " [142.284544, -8.926437],\n", + " [142.284488, -8.926166],\n", + " [142.284542, -8.925895],\n", + " [142.28465, -8.925623],\n", + " [142.284867, -8.925351],\n", + " [142.285139, -8.925079],\n", + " [142.285411, -8.924807],\n", + " [142.285683, -8.924534],\n", + " [142.285955, -8.924262],\n", + " [142.286172, -8.92399],\n", + " [142.286389, -8.923718],\n", + " [142.286607, -8.923446],\n", + " [142.286769, -8.923174],\n", + " [142.286932, -8.922902],\n", + " [142.287095, -8.922631],\n", + " [142.287258, -8.922359],\n", + " [142.287366, -8.922087],\n", + " [142.287528, -8.921815],\n", + " [142.287637, -8.921544],\n", + " [142.287799, -8.921272],\n", + " [142.287853, -8.921],\n", + " [142.287852, -8.920729],\n", + " [142.287796, -8.920458],\n", + " [142.287741, -8.920187],\n", + " [142.287685, -8.919916],\n", + " [142.28763, -8.919645],\n", + " [142.287629, -8.919373],\n", + " [142.287628, -8.919102],\n", + " [142.287573, -8.918831],\n", + " [142.287462, -8.91856],\n", + " [142.287407, -8.918289],\n", + " [142.287351, -8.918018],\n", + " [142.28735, -8.917746],\n", + " [142.287459, -8.917475],\n", + " [142.287622, -8.917257],\n", + " [142.287839, -8.917094],\n", + " [142.288112, -8.917038],\n", + " [142.288385, -8.916983],\n", + " [142.288657, -8.916982],\n", + " [142.28893, -8.916981],\n", + " [142.289203, -8.916926],\n", + " [142.289475, -8.916817],\n", + " [142.289748, -8.916707],\n", + " [142.29002, -8.916544],\n", + " [142.290292, -8.916326],\n", + " [142.290509, -8.916108],\n", + " [142.290727, -8.915836],\n", + " [142.290835, -8.915564],\n", + " [142.290943, -8.915292],\n", + " [142.290997, -8.915021],\n", + " [142.291105, -8.914749],\n", + " [142.291158, -8.914478],\n", + " [142.291321, -8.914206],\n", + " [142.291484, -8.913934],\n", + " [142.291701, -8.913662],\n", + " [142.291919, -8.913444],\n", + " [142.292191, -8.913281],\n", + " [142.292463, -8.913171],\n", + " [142.292736, -8.91317],\n", + " [142.293009, -8.913278],\n", + " [142.293282, -8.913331],\n", + " [142.293555, -8.913384],\n", + " [142.293828, -8.913492],\n", + " [142.294101, -8.913545],\n", + " [142.294374, -8.913544],\n", + " [142.294647, -8.913543],\n", + " [142.29492, -8.913542],\n", + " [142.295193, -8.913487],\n", + " [142.295465, -8.913378],\n", + " [142.295737, -8.913214],\n", + " [142.296009, -8.91305],\n", + " [142.296281, -8.912832],\n", + " [142.296553, -8.91256],\n", + " [142.296771, -8.912288],\n", + " [142.296988, -8.912016],\n", + " [142.297205, -8.911744],\n", + " [142.297422, -8.911472],\n", + " [142.29764, -8.9112],\n", + " [142.297912, -8.910928],\n", + " [142.298183, -8.910655],\n", + " [142.298455, -8.910383],\n", + " [142.298727, -8.910111],\n", + " [142.298999, -8.909839],\n", + " [142.299271, -8.909621],\n", + " [142.299543, -8.909403],\n", + " [142.299815, -8.909185],\n", + " [142.300087, -8.908967],\n", + " [142.300359, -8.908749],\n", + " [142.300631, -8.908476],\n", + " [142.300903, -8.908204],\n", + " [142.301175, -8.907986],\n", + " [142.301447, -8.907877],\n", + " [142.30172, -8.907876]]}},\n", + " {'id': '1',\n", " 'type': 'Feature',\n", " 'properties': {'reach_id': '53151000375',\n", - " 'time_str': '2024-01-25T03:21:55Z',\n", - " 'wse': '12.566399999999998',\n", - " 'width': '819.213972',\n", + " 'time_str': '2024-01-29T14:27:50Z',\n", + " 'wse': '-1.6521',\n", + " 'width': '48.270187',\n", " 'wse_units': 'm',\n", " 'width_units': 'm'},\n", " 'geometry': {'type': 'LineString',\n", @@ -3021,12 +3855,12 @@ " [142.301175, -8.907986],\n", " [142.301447, -8.907877],\n", " [142.30172, -8.907876]]}},\n", - " {'id': '1',\n", + " {'id': '2',\n", " 'type': 'Feature',\n", " 'properties': {'reach_id': '53151000375',\n", - " 'time_str': '2024-01-29T14:27:50Z',\n", - " 'wse': '-6.6084',\n", - " 'width': '193.080748',\n", + " 'time_str': '2024-02-15T00:07:00Z',\n", + " 'wse': '1.9637',\n", + " 'width': '107.174234',\n", " 'wse_units': 'm',\n", " 'width_units': 'm'},\n", " 'geometry': {'type': 'LineString',\n", @@ -3438,12 +4272,12 @@ " [142.301175, -8.907986],\n", " [142.301447, -8.907877],\n", " [142.30172, -8.907876]]}},\n", - " {'id': '2',\n", + " {'id': '3',\n", " 'type': 'Feature',\n", " 'properties': {'reach_id': '53151000375',\n", - " 'time_str': '2024-02-15T00:07:00Z',\n", - " 'wse': '7.8548',\n", - " 'width': '428.696936',\n", + " 'time_str': '2024-02-19T11:12:55Z',\n", + " 'wse': '-3.0532',\n", + " 'width': '38.60191',\n", " 'wse_units': 'm',\n", " 'width_units': 'm'},\n", " 'geometry': {'type': 'LineString',\n", @@ -3855,12 +4689,12 @@ " [142.301175, -8.907986],\n", " [142.301447, -8.907877],\n", " [142.30172, -8.907876]]}},\n", - " {'id': '3',\n", + " {'id': '4',\n", " 'type': 'Feature',\n", " 'properties': {'reach_id': '53151000375',\n", - " 'time_str': '2024-02-19T11:12:55Z',\n", - " 'wse': '-15.266',\n", - " 'width': '193.00955',\n", + " 'time_str': '2024-03-06T20:52:04Z',\n", + " 'wse': '-1.1387',\n", + " 'width': '48.492057',\n", " 'wse_units': 'm',\n", " 'width_units': 'm'},\n", " 'geometry': {'type': 'LineString',\n", @@ -4272,12 +5106,12 @@ " [142.301175, -8.907986],\n", " [142.301447, -8.907877],\n", " [142.30172, -8.907876]]}},\n", - " {'id': '4',\n", + " {'id': '5',\n", " 'type': 'Feature',\n", " 'properties': {'reach_id': '53151000375',\n", - " 'time_str': '2024-03-06T20:52:04Z',\n", - " 'wse': '-7.9709',\n", - " 'width': '339.44439900000003',\n", + " 'time_str': '2024-03-11T07:57:58Z',\n", + " 'wse': '1.4811',\n", + " 'width': '49.924515',\n", " 'wse_units': 'm',\n", " 'width_units': 'm'},\n", " 'geometry': {'type': 'LineString',\n", @@ -4689,12 +5523,12 @@ " [142.301175, -8.907986],\n", " [142.301447, -8.907877],\n", " [142.30172, -8.907876]]}},\n", - " {'id': '5',\n", + " {'id': '6',\n", " 'type': 'Feature',\n", " 'properties': {'reach_id': '53151000375',\n", - " 'time_str': '2024-03-11T07:57:58Z',\n", - " 'wse': '2.9622',\n", - " 'width': '99.84903',\n", + " 'time_str': '2024-03-27T17:37:08Z',\n", + " 'wse': '-0.7693',\n", + " 'width': '43.192787',\n", " 'wse_units': 'm',\n", " 'width_units': 'm'},\n", " 'geometry': {'type': 'LineString',\n", @@ -5108,7 +5942,7 @@ " [142.30172, -8.907876]]}}]}" ] }, - "execution_count": 4, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -5123,7 +5957,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -5143,7 +5977,7 @@ " <style>html, body {width: 100%;height: 100%;margin: 0;padding: 0;}</style>\n", " <style>#map {position:absolute;top:0;bottom:0;right:0;left:0;}</style>\n", " <script src="https://cdn.jsdelivr.net/npm/leaflet@1.9.3/dist/leaflet.js"></script>\n", - " <script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>\n", + " <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>\n", " <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.min.js"></script>\n", " <script src="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.js"></script>\n", " <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/leaflet@1.9.3/dist/leaflet.css"/>\n", @@ -5156,7 +5990,7 @@ " <meta name="viewport" content="width=device-width,\n", " initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />\n", " <style>\n", - " #map_82712f4821e837585e38497ebb95d6ee {\n", + " #map_92b68ed02772ed0ead1b6c61c23b95a4 {\n", " position: relative;\n", " width: 100.0%;\n", " height: 100.0%;\n", @@ -5170,16 +6004,16 @@ "<body>\n", " \n", " \n", - " <div class="folium-map" id="map_82712f4821e837585e38497ebb95d6ee" ></div>\n", + " <div class="folium-map" id="map_92b68ed02772ed0ead1b6c61c23b95a4" ></div>\n", " \n", "</body>\n", "<script>\n", " \n", " \n", - " var map_82712f4821e837585e38497ebb95d6ee = L.map(\n", - " "map_82712f4821e837585e38497ebb95d6ee",\n", + " var map_92b68ed02772ed0ead1b6c61c23b95a4 = L.map(\n", + " "map_92b68ed02772ed0ead1b6c61c23b95a4",\n", " {\n", - " center: [0, 0],\n", + " center: [0.0, 0.0],\n", " crs: L.CRS.EPSG3857,\n", " zoom: 1,\n", " zoomControl: true,\n", @@ -5191,47 +6025,53 @@ "\n", " \n", " \n", - " var tile_layer_61bb1ac0c6148fa0f762d6c4dc5d44df = L.tileLayer(\n", - " "https://cartodb-basemaps-{s}.global.ssl.fastly.net/light_all/{z}/{x}/{y}.png",\n", - " {"attribution": "\\u0026copy; \\u003ca target=\\"_blank\\" href=\\"http://www.openstreetmap.org/copyright\\"\\u003eOpenStreetMap\\u003c/a\\u003e contributors \\u0026copy; \\u003ca target=\\"_blank\\" href=\\"http://cartodb.com/attributions\\"\\u003eCartoDB\\u003c/a\\u003e, CartoDB \\u003ca target=\\"_blank\\" href =\\"http://cartodb.com/attributions\\"\\u003eattributions\\u003c/a\\u003e", "detectRetina": false, "maxNativeZoom": 18, "maxZoom": 18, "minZoom": 0, "noWrap": false, "opacity": 1, "subdomains": "abc", "tms": false}\n", - " ).addTo(map_82712f4821e837585e38497ebb95d6ee);\n", + " var tile_layer_63df3654da7f5b254a970398734d8557 = L.tileLayer(\n", + " "https://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}{r}.png",\n", + " {"attribution": "\\u0026copy; \\u003ca href=\\"https://www.openstreetmap.org/copyright\\"\\u003eOpenStreetMap\\u003c/a\\u003e contributors \\u0026copy; \\u003ca href=\\"https://carto.com/attributions\\"\\u003eCARTO\\u003c/a\\u003e", "detectRetina": false, "maxNativeZoom": 20, "maxZoom": 20, "minZoom": 0, "noWrap": false, "opacity": 1, "subdomains": "abcd", "tms": false}\n", + " );\n", + " \n", + " \n", + " tile_layer_63df3654da7f5b254a970398734d8557.addTo(map_92b68ed02772ed0ead1b6c61c23b95a4);\n", " \n", " \n", "\n", - " function geo_json_2378614c90f3637575a161878725b0c7_onEachFeature(feature, layer) {\n", + " function geo_json_58c440d5a846df15a79f82e437aaf81f_onEachFeature(feature, layer) {\n", " layer.on({\n", " });\n", " };\n", - " var geo_json_2378614c90f3637575a161878725b0c7 = L.geoJson(null, {\n", - " onEachFeature: geo_json_2378614c90f3637575a161878725b0c7_onEachFeature,\n", + " var geo_json_58c440d5a846df15a79f82e437aaf81f = L.geoJson(null, {\n", + " onEachFeature: geo_json_58c440d5a846df15a79f82e437aaf81f_onEachFeature,\n", " \n", " });\n", "\n", - " function geo_json_2378614c90f3637575a161878725b0c7_add (data) {\n", - " geo_json_2378614c90f3637575a161878725b0c7\n", - " .addData(data)\n", - " .addTo(map_82712f4821e837585e38497ebb95d6ee);\n", + " function geo_json_58c440d5a846df15a79f82e437aaf81f_add (data) {\n", + " geo_json_58c440d5a846df15a79f82e437aaf81f\n", + " .addData(data);\n", " }\n", - " geo_json_2378614c90f3637575a161878725b0c7_add({"features": [{"geometry": {"coordinates": [[142.235319, -8.956718], [142.235592, -8.956717], [142.235865, -8.956716], [142.236137, -8.956607], [142.23641, -8.956552], [142.236683, -8.956496], [142.236955, -8.956441], [142.237228, -8.95644], [142.237501, -8.956385], [142.237774, -8.95633], [142.238046, -8.956275], [142.238319, -8.956274], [142.238592, -8.956219], [142.238864, -8.956164], [142.239137, -8.956108], [142.23941, -8.956107], [142.239682, -8.955998], [142.239955, -8.955943], [142.240228, -8.955888], [142.240501, -8.955887], [142.240773, -8.955832], [142.241046, -8.955831], [142.241319, -8.955776], [142.241592, -8.955775], [142.241864, -8.955719], [142.242137, -8.955719], [142.24241, -8.955718], [142.242683, -8.955771], [142.242956, -8.955824], [142.243229, -8.955878], [142.243502, -8.955877], [142.243775, -8.955876], [142.244048, -8.955929], [142.244321, -8.955982], [142.244594, -8.95609], [142.244867, -8.956198], [142.24514, -8.956305], [142.245414, -8.956413], [142.245687, -8.95652], [142.24596, -8.956628], [142.246233, -8.956736], [142.246507, -8.956898], [142.24678, -8.957005], [142.247053, -8.957167], [142.247326, -8.957275], [142.2476, -8.957436], [142.247873, -8.957598], [142.248147, -8.95776], [142.24842, -8.957922], [142.248693, -8.958084], [142.248967, -8.958191], [142.24924, -8.958299], [142.249513, -8.958407], [142.249786, -8.95846], [142.250059, -8.958513], [142.250332, -8.958567], [142.250605, -8.958566], [142.250878, -8.958565], [142.251151, -8.958564], [142.251424, -8.958563], [142.251696, -8.958562], [142.251969, -8.958561], [142.252242, -8.958506], [142.252515, -8.958451], [142.252787, -8.958396], [142.25306, -8.958286], [142.253332, -8.958231], [142.253605, -8.958176], [142.253878, -8.958121], [142.25415, -8.958065], [142.254423, -8.95801], [142.254695, -8.957901], [142.254968, -8.957846], [142.255241, -8.95779], [142.255513, -8.957735], [142.255786, -8.957734], [142.256059, -8.957679], [142.256332, -8.957624], [142.256604, -8.957569], [142.256877, -8.957514], [142.25715, -8.957458], [142.257422, -8.957457], [142.257695, -8.957456], [142.257968, -8.957456], [142.258241, -8.957455], [142.258514, -8.957399], [142.258786, -8.957344], [142.259059, -8.957289], [142.259331, -8.95718], [142.259604, -8.95707], [142.259876, -8.956961], [142.260149, -8.956851], [142.260421, -8.956688], [142.260694, -8.956578], [142.260966, -8.956469], [142.261238, -8.956359], [142.261511, -8.956196], [142.261783, -8.956086], [142.262056, -8.956031], [142.262328, -8.955921], [142.262601, -8.955812], [142.262873, -8.955757], [142.263146, -8.955702], [142.263418, -8.955538], [142.263691, -8.955374], [142.263963, -8.955211], [142.264181, -8.954993], [142.264398, -8.954721], [142.264561, -8.954449], [142.264669, -8.954177], [142.264722, -8.953906], [142.264721, -8.953634], [142.264666, -8.953363], [142.264556, -8.953092], [142.2645, -8.952821], [142.26439, -8.95255], [142.26428, -8.95228], [142.264116, -8.952009], [142.263951, -8.951738], [142.263677, -8.951468], [142.263403, -8.951197], [142.26313, -8.950927], [142.26291, -8.950656], [142.262691, -8.950386], [142.262581, -8.950115], [142.262526, -8.949844], [142.262579, -8.949572], [142.262688, -8.949301], [142.262905, -8.949083], [142.263123, -8.948865], [142.263395, -8.948702], [142.263667, -8.948592], [142.26394, -8.948537], [142.264213, -8.948482], [142.264485, -8.948427], [142.264758, -8.948371], [142.265031, -8.948316], [142.265303, -8.948261], [142.265576, -8.948206], [142.265849, -8.948205], [142.266121, -8.948204], [142.266394, -8.948203], [142.266667, -8.948202], [142.26694, -8.948147], [142.267212, -8.948092], [142.267485, -8.947982], [142.267757, -8.947819], [142.268029, -8.947601], [142.268247, -8.947383], [142.26841, -8.947111], [142.268572, -8.946839], [142.268626, -8.946568], [142.268625, -8.946296], [142.268569, -8.946025], [142.268514, -8.945754], [142.268404, -8.945483], [142.268294, -8.945212], [142.268184, -8.944941], [142.268074, -8.94467], [142.267909, -8.9444], [142.267744, -8.944129], [142.26758, -8.943858], [142.267415, -8.943588], [142.267251, -8.943317], [142.26714, -8.943046], [142.266976, -8.942775], [142.266866, -8.942504], [142.266756, -8.942233], [142.2667, -8.941962], [142.266699, -8.941691], [142.266753, -8.941419], [142.266806, -8.941148], [142.266915, -8.940876], [142.267023, -8.940605], [142.267131, -8.940333], [142.267239, -8.940061], [142.267402, -8.93979], [142.26751, -8.939518], [142.267618, -8.939246], [142.267727, -8.938975], [142.267835, -8.938703], [142.267943, -8.938431], [142.268051, -8.93816], [142.268159, -8.937888], [142.268213, -8.937616], [142.268321, -8.937345], [142.268375, -8.937073], [142.268374, -8.936802], [142.268373, -8.936531], [142.268372, -8.936259], [142.268262, -8.935989], [142.268152, -8.935718], [142.268042, -8.935447], [142.267932, -8.935176], [142.267767, -8.934905], [142.267602, -8.934634], [142.267438, -8.934364], [142.267273, -8.934093], [142.267054, -8.933822], [142.266889, -8.933552], [142.266779, -8.933281], [142.266669, -8.93301], [142.266614, -8.932739], [142.266667, -8.932467], [142.266776, -8.932196], [142.266938, -8.931924], [142.267156, -8.931652], [142.267428, -8.931434], [142.2677, -8.931216], [142.267972, -8.931052], [142.268244, -8.930888], [142.268517, -8.930779], [142.268789, -8.930669], [142.269062, -8.930614], [142.269334, -8.930505], [142.269607, -8.93045], [142.269879, -8.93034], [142.270152, -8.930231], [142.270424, -8.930121], [142.270697, -8.930066], [142.270969, -8.929957], [142.271242, -8.929901], [142.271515, -8.929846], [142.271787, -8.929791], [142.27206, -8.929736], [142.272333, -8.929735], [142.272605, -8.92968], [142.272878, -8.929679], [142.273151, -8.929624], [142.273424, -8.929623], [142.273696, -8.929622], [142.273969, -8.929675], [142.274242, -8.929674], [142.274515, -8.929727], [142.274788, -8.929727], [142.275061, -8.92978], [142.275334, -8.929887], [142.275608, -8.930049], [142.275881, -8.930265], [142.276155, -8.930536], [142.276429, -8.930806], [142.276703, -8.931076], [142.276976, -8.931347], [142.277195, -8.931617], [142.277415, -8.931888], [142.277634, -8.932158], [142.277853, -8.932429], [142.278072, -8.932699], [142.278292, -8.93297], [142.278511, -8.93324], [142.27873, -8.933511], [142.278949, -8.933782], [142.279168, -8.934052], [142.279442, -8.934322], [142.279716, -8.934593], [142.27999, -8.934863], [142.280263, -8.935079], [142.280537, -8.935241], [142.28081, -8.935349], [142.281083, -8.935402], [142.281356, -8.935401], [142.281628, -8.9354], [142.281901, -8.935399], [142.282174, -8.935452], [142.282447, -8.935451], [142.28272, -8.93545], [142.282993, -8.935395], [142.283265, -8.93534], [142.283537, -8.935176], [142.28381, -8.935013], [142.284027, -8.934795], [142.28419, -8.934577], [142.284298, -8.934306], [142.284352, -8.934034], [142.284351, -8.933763], [142.284295, -8.933492], [142.284185, -8.933221], [142.284075, -8.93295], [142.283911, -8.932679], [142.283746, -8.932409], [142.283581, -8.932138], [142.283471, -8.931867], [142.283416, -8.931596], [142.283415, -8.931325], [142.283468, -8.931053], [142.283631, -8.930835], [142.283849, -8.930672], [142.284067, -8.930617], [142.28434, -8.930562], [142.284613, -8.930561], [142.284886, -8.930614], [142.285159, -8.930667], [142.285431, -8.930666], [142.285704, -8.93072], [142.285977, -8.930773], [142.28625, -8.930772], [142.286523, -8.930717], [142.286795, -8.930607], [142.287068, -8.930444], [142.28734, -8.930226], [142.287557, -8.929954], [142.287665, -8.929682], [142.287664, -8.929411], [142.287554, -8.92914], [142.287335, -8.928869], [142.287061, -8.928653], [142.286788, -8.928437], [142.286514, -8.928221], [142.286241, -8.928005], [142.285967, -8.927789], [142.285693, -8.927573], [142.28542, -8.927357], [142.285146, -8.927141], [142.284927, -8.926924], [142.284708, -8.926708], [142.284544, -8.926437], [142.284488, -8.926166], [142.284542, -8.925895], [142.28465, -8.925623], [142.284867, -8.925351], [142.285139, -8.925079], [142.285411, -8.924807], [142.285683, -8.924534], [142.285955, -8.924262], [142.286172, -8.92399], [142.286389, -8.923718], [142.286607, -8.923446], [142.286769, -8.923174], [142.286932, -8.922902], [142.287095, -8.922631], [142.287258, -8.922359], [142.287366, -8.922087], [142.287528, -8.921815], [142.287637, -8.921544], [142.287799, -8.921272], [142.287853, -8.921], [142.287852, -8.920729], [142.287796, -8.920458], [142.287741, -8.920187], [142.287685, -8.919916], [142.28763, -8.919645], [142.287629, -8.919373], [142.287628, -8.919102], [142.287573, -8.918831], [142.287462, -8.91856], [142.287407, -8.918289], [142.287351, -8.918018], [142.28735, -8.917746], [142.287459, -8.917475], [142.287622, -8.917257], [142.287839, -8.917094], [142.288112, -8.917038], [142.288385, -8.916983], [142.288657, -8.916982], [142.28893, -8.916981], [142.289203, -8.916926], [142.289475, -8.916817], [142.289748, -8.916707], [142.29002, -8.916544], [142.290292, -8.916326], [142.290509, -8.916108], [142.290727, -8.915836], [142.290835, -8.915564], [142.290943, -8.915292], [142.290997, -8.915021], [142.291105, -8.914749], [142.291158, -8.914478], [142.291321, -8.914206], [142.291484, -8.913934], [142.291701, -8.913662], [142.291919, -8.913444], [142.292191, -8.913281], [142.292463, -8.913171], [142.292736, -8.91317], [142.293009, -8.913278], [142.293282, -8.913331], [142.293555, -8.913384], [142.293828, -8.913492], [142.294101, -8.913545], [142.294374, -8.913544], [142.294647, -8.913543], [142.29492, -8.913542], [142.295193, -8.913487], [142.295465, -8.913378], [142.295737, -8.913214], [142.296009, -8.91305], [142.296281, -8.912832], [142.296553, -8.91256], [142.296771, -8.912288], [142.296988, -8.912016], [142.297205, -8.911744], [142.297422, -8.911472], [142.29764, -8.9112], [142.297912, -8.910928], [142.298183, -8.910655], [142.298455, -8.910383], [142.298727, -8.910111], [142.298999, -8.909839], [142.299271, -8.909621], [142.299543, -8.909403], [142.299815, -8.909185], [142.300087, -8.908967], [142.300359, -8.908749], [142.300631, -8.908476], [142.300903, -8.908204], [142.301175, -8.907986], [142.301447, -8.907877], [142.30172, -8.907876]], "type": "LineString"}, "id": "0", "properties": {"reach_id": "53151000375", "time_str": "2024-01-25T03:21:55Z", "width": "819.213972", "width_units": "m", "wse": "12.566399999999998", "wse_units": "m"}, "type": "Feature"}, {"geometry": {"coordinates": [[142.235319, -8.956718], [142.235592, -8.956717], [142.235865, -8.956716], [142.236137, -8.956607], [142.23641, -8.956552], [142.236683, -8.956496], [142.236955, -8.956441], [142.237228, -8.95644], [142.237501, -8.956385], [142.237774, -8.95633], [142.238046, -8.956275], [142.238319, -8.956274], [142.238592, -8.956219], [142.238864, -8.956164], [142.239137, -8.956108], [142.23941, -8.956107], [142.239682, -8.955998], [142.239955, -8.955943], [142.240228, -8.955888], [142.240501, -8.955887], [142.240773, -8.955832], [142.241046, -8.955831], [142.241319, -8.955776], [142.241592, -8.955775], [142.241864, -8.955719], [142.242137, -8.955719], [142.24241, -8.955718], [142.242683, -8.955771], [142.242956, -8.955824], [142.243229, -8.955878], [142.243502, -8.955877], [142.243775, -8.955876], [142.244048, -8.955929], [142.244321, -8.955982], [142.244594, -8.95609], [142.244867, -8.956198], [142.24514, -8.956305], [142.245414, -8.956413], [142.245687, -8.95652], [142.24596, -8.956628], [142.246233, -8.956736], [142.246507, -8.956898], [142.24678, -8.957005], [142.247053, -8.957167], [142.247326, -8.957275], [142.2476, -8.957436], [142.247873, -8.957598], [142.248147, -8.95776], [142.24842, -8.957922], [142.248693, -8.958084], [142.248967, -8.958191], [142.24924, -8.958299], [142.249513, -8.958407], [142.249786, -8.95846], [142.250059, -8.958513], [142.250332, -8.958567], [142.250605, -8.958566], [142.250878, -8.958565], [142.251151, -8.958564], [142.251424, -8.958563], [142.251696, -8.958562], [142.251969, -8.958561], [142.252242, -8.958506], [142.252515, -8.958451], [142.252787, -8.958396], [142.25306, -8.958286], [142.253332, -8.958231], [142.253605, -8.958176], [142.253878, -8.958121], [142.25415, -8.958065], [142.254423, -8.95801], [142.254695, -8.957901], [142.254968, -8.957846], [142.255241, -8.95779], [142.255513, -8.957735], [142.255786, -8.957734], [142.256059, -8.957679], [142.256332, -8.957624], [142.256604, -8.957569], [142.256877, -8.957514], [142.25715, -8.957458], [142.257422, -8.957457], [142.257695, -8.957456], [142.257968, -8.957456], [142.258241, -8.957455], [142.258514, -8.957399], [142.258786, -8.957344], [142.259059, -8.957289], [142.259331, -8.95718], [142.259604, -8.95707], [142.259876, -8.956961], [142.260149, -8.956851], [142.260421, -8.956688], [142.260694, -8.956578], [142.260966, -8.956469], [142.261238, -8.956359], [142.261511, -8.956196], [142.261783, -8.956086], [142.262056, -8.956031], [142.262328, -8.955921], [142.262601, -8.955812], [142.262873, -8.955757], [142.263146, -8.955702], [142.263418, -8.955538], [142.263691, -8.955374], [142.263963, -8.955211], [142.264181, -8.954993], [142.264398, -8.954721], [142.264561, -8.954449], [142.264669, -8.954177], [142.264722, -8.953906], [142.264721, -8.953634], [142.264666, -8.953363], [142.264556, -8.953092], [142.2645, -8.952821], [142.26439, -8.95255], [142.26428, -8.95228], [142.264116, -8.952009], [142.263951, -8.951738], [142.263677, -8.951468], [142.263403, -8.951197], [142.26313, -8.950927], [142.26291, -8.950656], [142.262691, -8.950386], [142.262581, -8.950115], [142.262526, -8.949844], [142.262579, -8.949572], [142.262688, -8.949301], [142.262905, -8.949083], [142.263123, -8.948865], [142.263395, -8.948702], [142.263667, -8.948592], [142.26394, -8.948537], [142.264213, -8.948482], [142.264485, -8.948427], [142.264758, -8.948371], [142.265031, -8.948316], [142.265303, -8.948261], [142.265576, -8.948206], [142.265849, -8.948205], [142.266121, -8.948204], [142.266394, -8.948203], [142.266667, -8.948202], [142.26694, -8.948147], [142.267212, -8.948092], [142.267485, -8.947982], [142.267757, -8.947819], [142.268029, -8.947601], [142.268247, -8.947383], [142.26841, -8.947111], [142.268572, -8.946839], [142.268626, -8.946568], [142.268625, -8.946296], [142.268569, -8.946025], [142.268514, -8.945754], [142.268404, -8.945483], [142.268294, -8.945212], [142.268184, -8.944941], [142.268074, -8.94467], [142.267909, -8.9444], [142.267744, -8.944129], [142.26758, -8.943858], [142.267415, -8.943588], [142.267251, -8.943317], [142.26714, -8.943046], [142.266976, -8.942775], [142.266866, -8.942504], [142.266756, -8.942233], [142.2667, -8.941962], [142.266699, -8.941691], [142.266753, -8.941419], [142.266806, -8.941148], [142.266915, -8.940876], [142.267023, -8.940605], [142.267131, -8.940333], [142.267239, -8.940061], [142.267402, -8.93979], [142.26751, -8.939518], [142.267618, -8.939246], [142.267727, -8.938975], [142.267835, -8.938703], [142.267943, -8.938431], [142.268051, -8.93816], [142.268159, -8.937888], [142.268213, -8.937616], [142.268321, -8.937345], [142.268375, -8.937073], [142.268374, -8.936802], [142.268373, -8.936531], [142.268372, -8.936259], [142.268262, -8.935989], [142.268152, -8.935718], [142.268042, -8.935447], [142.267932, -8.935176], [142.267767, -8.934905], [142.267602, -8.934634], [142.267438, -8.934364], [142.267273, -8.934093], [142.267054, -8.933822], [142.266889, -8.933552], [142.266779, -8.933281], [142.266669, -8.93301], [142.266614, -8.932739], [142.266667, -8.932467], [142.266776, -8.932196], [142.266938, -8.931924], [142.267156, -8.931652], [142.267428, -8.931434], [142.2677, -8.931216], [142.267972, -8.931052], [142.268244, -8.930888], [142.268517, -8.930779], [142.268789, -8.930669], [142.269062, -8.930614], [142.269334, -8.930505], [142.269607, -8.93045], [142.269879, -8.93034], [142.270152, -8.930231], [142.270424, -8.930121], [142.270697, -8.930066], [142.270969, -8.929957], [142.271242, -8.929901], [142.271515, -8.929846], [142.271787, -8.929791], [142.27206, -8.929736], [142.272333, -8.929735], [142.272605, -8.92968], [142.272878, -8.929679], [142.273151, -8.929624], [142.273424, -8.929623], [142.273696, -8.929622], [142.273969, -8.929675], [142.274242, -8.929674], [142.274515, -8.929727], [142.274788, -8.929727], [142.275061, -8.92978], [142.275334, -8.929887], [142.275608, -8.930049], [142.275881, -8.930265], [142.276155, -8.930536], [142.276429, -8.930806], [142.276703, -8.931076], [142.276976, -8.931347], [142.277195, -8.931617], [142.277415, -8.931888], [142.277634, -8.932158], [142.277853, -8.932429], [142.278072, -8.932699], [142.278292, -8.93297], [142.278511, -8.93324], [142.27873, -8.933511], [142.278949, -8.933782], [142.279168, -8.934052], [142.279442, -8.934322], [142.279716, -8.934593], [142.27999, -8.934863], [142.280263, -8.935079], [142.280537, -8.935241], [142.28081, -8.935349], [142.281083, -8.935402], [142.281356, -8.935401], [142.281628, -8.9354], [142.281901, -8.935399], [142.282174, -8.935452], [142.282447, -8.935451], [142.28272, -8.93545], [142.282993, -8.935395], [142.283265, -8.93534], [142.283537, -8.935176], [142.28381, -8.935013], [142.284027, -8.934795], [142.28419, -8.934577], [142.284298, -8.934306], [142.284352, -8.934034], [142.284351, -8.933763], [142.284295, -8.933492], [142.284185, -8.933221], [142.284075, -8.93295], [142.283911, -8.932679], [142.283746, -8.932409], [142.283581, -8.932138], [142.283471, -8.931867], [142.283416, -8.931596], [142.283415, -8.931325], [142.283468, -8.931053], [142.283631, -8.930835], [142.283849, -8.930672], [142.284067, -8.930617], [142.28434, -8.930562], [142.284613, -8.930561], [142.284886, -8.930614], [142.285159, -8.930667], [142.285431, -8.930666], [142.285704, -8.93072], [142.285977, -8.930773], [142.28625, -8.930772], [142.286523, -8.930717], [142.286795, -8.930607], [142.287068, -8.930444], [142.28734, -8.930226], [142.287557, -8.929954], [142.287665, -8.929682], [142.287664, -8.929411], [142.287554, -8.92914], [142.287335, -8.928869], [142.287061, -8.928653], [142.286788, -8.928437], [142.286514, -8.928221], [142.286241, -8.928005], [142.285967, -8.927789], [142.285693, -8.927573], [142.28542, -8.927357], [142.285146, -8.927141], [142.284927, -8.926924], [142.284708, -8.926708], [142.284544, -8.926437], [142.284488, -8.926166], [142.284542, -8.925895], [142.28465, -8.925623], [142.284867, -8.925351], [142.285139, -8.925079], [142.285411, -8.924807], [142.285683, -8.924534], [142.285955, -8.924262], [142.286172, -8.92399], [142.286389, -8.923718], [142.286607, -8.923446], [142.286769, -8.923174], [142.286932, -8.922902], [142.287095, -8.922631], [142.287258, -8.922359], [142.287366, -8.922087], [142.287528, -8.921815], [142.287637, -8.921544], [142.287799, -8.921272], [142.287853, -8.921], [142.287852, -8.920729], [142.287796, -8.920458], [142.287741, -8.920187], [142.287685, -8.919916], [142.28763, -8.919645], [142.287629, -8.919373], [142.287628, -8.919102], [142.287573, -8.918831], [142.287462, -8.91856], [142.287407, -8.918289], [142.287351, -8.918018], [142.28735, -8.917746], [142.287459, -8.917475], [142.287622, -8.917257], [142.287839, -8.917094], [142.288112, -8.917038], [142.288385, -8.916983], [142.288657, -8.916982], [142.28893, -8.916981], [142.289203, -8.916926], [142.289475, -8.916817], [142.289748, -8.916707], [142.29002, -8.916544], [142.290292, -8.916326], [142.290509, -8.916108], [142.290727, -8.915836], [142.290835, -8.915564], [142.290943, -8.915292], [142.290997, -8.915021], [142.291105, -8.914749], [142.291158, -8.914478], [142.291321, -8.914206], [142.291484, -8.913934], [142.291701, -8.913662], [142.291919, -8.913444], [142.292191, -8.913281], [142.292463, -8.913171], [142.292736, -8.91317], [142.293009, -8.913278], [142.293282, -8.913331], [142.293555, -8.913384], [142.293828, -8.913492], [142.294101, -8.913545], [142.294374, -8.913544], [142.294647, -8.913543], [142.29492, -8.913542], [142.295193, -8.913487], [142.295465, -8.913378], [142.295737, -8.913214], [142.296009, -8.91305], [142.296281, -8.912832], [142.296553, -8.91256], [142.296771, -8.912288], [142.296988, -8.912016], [142.297205, -8.911744], [142.297422, -8.911472], [142.29764, -8.9112], [142.297912, -8.910928], [142.298183, -8.910655], [142.298455, -8.910383], [142.298727, -8.910111], [142.298999, -8.909839], [142.299271, -8.909621], [142.299543, -8.909403], [142.299815, -8.909185], [142.300087, -8.908967], [142.300359, -8.908749], [142.300631, -8.908476], [142.300903, -8.908204], [142.301175, -8.907986], [142.301447, -8.907877], [142.30172, -8.907876]], "type": "LineString"}, "id": "1", "properties": {"reach_id": "53151000375", "time_str": "2024-01-29T14:27:50Z", "width": "193.080748", "width_units": "m", "wse": "-6.6084", "wse_units": "m"}, "type": "Feature"}, {"geometry": {"coordinates": [[142.235319, -8.956718], [142.235592, -8.956717], [142.235865, -8.956716], [142.236137, -8.956607], [142.23641, -8.956552], [142.236683, -8.956496], [142.236955, -8.956441], [142.237228, -8.95644], [142.237501, -8.956385], [142.237774, -8.95633], [142.238046, -8.956275], [142.238319, -8.956274], [142.238592, -8.956219], [142.238864, -8.956164], [142.239137, -8.956108], [142.23941, -8.956107], [142.239682, -8.955998], [142.239955, -8.955943], [142.240228, -8.955888], [142.240501, -8.955887], [142.240773, -8.955832], [142.241046, -8.955831], [142.241319, -8.955776], [142.241592, -8.955775], [142.241864, -8.955719], [142.242137, -8.955719], [142.24241, -8.955718], [142.242683, -8.955771], [142.242956, -8.955824], [142.243229, -8.955878], [142.243502, -8.955877], [142.243775, -8.955876], [142.244048, -8.955929], [142.244321, -8.955982], [142.244594, -8.95609], [142.244867, -8.956198], [142.24514, -8.956305], [142.245414, -8.956413], [142.245687, -8.95652], [142.24596, -8.956628], [142.246233, -8.956736], [142.246507, -8.956898], [142.24678, -8.957005], [142.247053, -8.957167], [142.247326, -8.957275], [142.2476, -8.957436], [142.247873, -8.957598], [142.248147, -8.95776], [142.24842, -8.957922], [142.248693, -8.958084], [142.248967, -8.958191], [142.24924, -8.958299], [142.249513, -8.958407], [142.249786, -8.95846], [142.250059, -8.958513], [142.250332, -8.958567], [142.250605, -8.958566], [142.250878, -8.958565], [142.251151, -8.958564], [142.251424, -8.958563], [142.251696, -8.958562], [142.251969, -8.958561], [142.252242, -8.958506], [142.252515, -8.958451], [142.252787, -8.958396], [142.25306, -8.958286], [142.253332, -8.958231], [142.253605, -8.958176], [142.253878, -8.958121], [142.25415, -8.958065], [142.254423, -8.95801], [142.254695, -8.957901], [142.254968, -8.957846], [142.255241, -8.95779], [142.255513, -8.957735], [142.255786, -8.957734], [142.256059, -8.957679], [142.256332, -8.957624], [142.256604, -8.957569], [142.256877, -8.957514], [142.25715, -8.957458], [142.257422, -8.957457], [142.257695, -8.957456], [142.257968, -8.957456], [142.258241, -8.957455], [142.258514, -8.957399], [142.258786, -8.957344], [142.259059, -8.957289], [142.259331, -8.95718], [142.259604, -8.95707], [142.259876, -8.956961], [142.260149, -8.956851], [142.260421, -8.956688], [142.260694, -8.956578], [142.260966, -8.956469], [142.261238, -8.956359], [142.261511, -8.956196], [142.261783, -8.956086], [142.262056, -8.956031], [142.262328, -8.955921], [142.262601, -8.955812], [142.262873, -8.955757], [142.263146, -8.955702], [142.263418, -8.955538], [142.263691, -8.955374], [142.263963, -8.955211], [142.264181, -8.954993], [142.264398, -8.954721], [142.264561, -8.954449], [142.264669, -8.954177], [142.264722, -8.953906], [142.264721, -8.953634], [142.264666, -8.953363], [142.264556, -8.953092], [142.2645, -8.952821], [142.26439, -8.95255], [142.26428, -8.95228], [142.264116, -8.952009], [142.263951, -8.951738], [142.263677, -8.951468], [142.263403, -8.951197], [142.26313, -8.950927], [142.26291, -8.950656], [142.262691, -8.950386], [142.262581, -8.950115], [142.262526, -8.949844], [142.262579, -8.949572], [142.262688, -8.949301], [142.262905, -8.949083], [142.263123, -8.948865], [142.263395, -8.948702], [142.263667, -8.948592], [142.26394, -8.948537], [142.264213, -8.948482], [142.264485, -8.948427], [142.264758, -8.948371], [142.265031, -8.948316], [142.265303, -8.948261], [142.265576, -8.948206], [142.265849, -8.948205], [142.266121, -8.948204], [142.266394, -8.948203], [142.266667, -8.948202], [142.26694, -8.948147], [142.267212, -8.948092], [142.267485, -8.947982], [142.267757, -8.947819], [142.268029, -8.947601], [142.268247, -8.947383], [142.26841, -8.947111], [142.268572, -8.946839], [142.268626, -8.946568], [142.268625, -8.946296], [142.268569, -8.946025], [142.268514, -8.945754], [142.268404, -8.945483], [142.268294, -8.945212], [142.268184, -8.944941], [142.268074, -8.94467], [142.267909, -8.9444], [142.267744, -8.944129], [142.26758, -8.943858], [142.267415, -8.943588], [142.267251, -8.943317], [142.26714, -8.943046], [142.266976, -8.942775], [142.266866, -8.942504], [142.266756, -8.942233], [142.2667, -8.941962], [142.266699, -8.941691], [142.266753, -8.941419], [142.266806, -8.941148], [142.266915, -8.940876], [142.267023, -8.940605], [142.267131, -8.940333], [142.267239, -8.940061], [142.267402, -8.93979], [142.26751, -8.939518], [142.267618, -8.939246], [142.267727, -8.938975], [142.267835, -8.938703], [142.267943, -8.938431], [142.268051, -8.93816], [142.268159, -8.937888], [142.268213, -8.937616], [142.268321, -8.937345], [142.268375, -8.937073], [142.268374, -8.936802], [142.268373, -8.936531], [142.268372, -8.936259], [142.268262, -8.935989], [142.268152, -8.935718], [142.268042, -8.935447], [142.267932, -8.935176], [142.267767, -8.934905], [142.267602, -8.934634], [142.267438, -8.934364], [142.267273, -8.934093], [142.267054, -8.933822], [142.266889, -8.933552], [142.266779, -8.933281], [142.266669, -8.93301], [142.266614, -8.932739], [142.266667, -8.932467], [142.266776, -8.932196], [142.266938, -8.931924], [142.267156, -8.931652], [142.267428, -8.931434], [142.2677, -8.931216], [142.267972, -8.931052], [142.268244, -8.930888], [142.268517, -8.930779], [142.268789, -8.930669], [142.269062, -8.930614], [142.269334, -8.930505], [142.269607, -8.93045], [142.269879, -8.93034], [142.270152, -8.930231], [142.270424, -8.930121], [142.270697, -8.930066], [142.270969, -8.929957], [142.271242, -8.929901], [142.271515, -8.929846], [142.271787, -8.929791], [142.27206, -8.929736], [142.272333, -8.929735], [142.272605, -8.92968], [142.272878, -8.929679], [142.273151, -8.929624], [142.273424, -8.929623], [142.273696, -8.929622], [142.273969, -8.929675], [142.274242, -8.929674], [142.274515, -8.929727], [142.274788, -8.929727], [142.275061, -8.92978], [142.275334, -8.929887], [142.275608, -8.930049], [142.275881, -8.930265], [142.276155, -8.930536], [142.276429, -8.930806], [142.276703, -8.931076], [142.276976, -8.931347], [142.277195, -8.931617], [142.277415, -8.931888], [142.277634, -8.932158], [142.277853, -8.932429], [142.278072, -8.932699], [142.278292, -8.93297], [142.278511, -8.93324], [142.27873, -8.933511], [142.278949, -8.933782], [142.279168, -8.934052], [142.279442, -8.934322], [142.279716, -8.934593], [142.27999, -8.934863], [142.280263, -8.935079], [142.280537, -8.935241], [142.28081, -8.935349], [142.281083, -8.935402], [142.281356, -8.935401], [142.281628, -8.9354], [142.281901, -8.935399], [142.282174, -8.935452], [142.282447, -8.935451], [142.28272, -8.93545], [142.282993, -8.935395], [142.283265, -8.93534], [142.283537, -8.935176], [142.28381, -8.935013], [142.284027, -8.934795], [142.28419, -8.934577], [142.284298, -8.934306], [142.284352, -8.934034], [142.284351, -8.933763], [142.284295, -8.933492], [142.284185, -8.933221], [142.284075, -8.93295], [142.283911, -8.932679], [142.283746, -8.932409], [142.283581, -8.932138], [142.283471, -8.931867], [142.283416, -8.931596], [142.283415, -8.931325], [142.283468, -8.931053], [142.283631, -8.930835], [142.283849, -8.930672], [142.284067, -8.930617], [142.28434, -8.930562], [142.284613, -8.930561], [142.284886, -8.930614], [142.285159, -8.930667], [142.285431, -8.930666], [142.285704, -8.93072], [142.285977, -8.930773], [142.28625, -8.930772], [142.286523, -8.930717], [142.286795, -8.930607], [142.287068, -8.930444], [142.28734, -8.930226], [142.287557, -8.929954], [142.287665, -8.929682], [142.287664, -8.929411], [142.287554, -8.92914], [142.287335, -8.928869], [142.287061, -8.928653], [142.286788, -8.928437], [142.286514, -8.928221], [142.286241, -8.928005], [142.285967, -8.927789], [142.285693, -8.927573], [142.28542, -8.927357], [142.285146, -8.927141], [142.284927, -8.926924], [142.284708, -8.926708], [142.284544, -8.926437], [142.284488, -8.926166], [142.284542, -8.925895], [142.28465, -8.925623], [142.284867, -8.925351], [142.285139, -8.925079], [142.285411, -8.924807], [142.285683, -8.924534], [142.285955, -8.924262], [142.286172, -8.92399], [142.286389, -8.923718], [142.286607, -8.923446], [142.286769, -8.923174], [142.286932, -8.922902], [142.287095, -8.922631], [142.287258, -8.922359], [142.287366, -8.922087], [142.287528, -8.921815], [142.287637, -8.921544], [142.287799, -8.921272], [142.287853, -8.921], [142.287852, -8.920729], [142.287796, -8.920458], [142.287741, -8.920187], [142.287685, -8.919916], [142.28763, -8.919645], [142.287629, -8.919373], [142.287628, -8.919102], [142.287573, -8.918831], [142.287462, -8.91856], [142.287407, -8.918289], [142.287351, -8.918018], [142.28735, -8.917746], [142.287459, -8.917475], [142.287622, -8.917257], [142.287839, -8.917094], [142.288112, -8.917038], [142.288385, -8.916983], [142.288657, -8.916982], [142.28893, -8.916981], [142.289203, -8.916926], [142.289475, -8.916817], [142.289748, -8.916707], [142.29002, -8.916544], [142.290292, -8.916326], [142.290509, -8.916108], [142.290727, -8.915836], [142.290835, -8.915564], [142.290943, -8.915292], [142.290997, -8.915021], [142.291105, -8.914749], [142.291158, -8.914478], [142.291321, -8.914206], [142.291484, -8.913934], [142.291701, -8.913662], [142.291919, -8.913444], [142.292191, -8.913281], [142.292463, -8.913171], [142.292736, -8.91317], [142.293009, -8.913278], [142.293282, -8.913331], [142.293555, -8.913384], [142.293828, -8.913492], [142.294101, -8.913545], [142.294374, -8.913544], [142.294647, -8.913543], [142.29492, -8.913542], [142.295193, -8.913487], [142.295465, -8.913378], [142.295737, -8.913214], [142.296009, -8.91305], [142.296281, -8.912832], [142.296553, -8.91256], [142.296771, -8.912288], [142.296988, -8.912016], [142.297205, -8.911744], [142.297422, -8.911472], [142.29764, -8.9112], [142.297912, -8.910928], [142.298183, -8.910655], [142.298455, -8.910383], [142.298727, -8.910111], [142.298999, -8.909839], [142.299271, -8.909621], [142.299543, -8.909403], [142.299815, -8.909185], [142.300087, -8.908967], [142.300359, -8.908749], [142.300631, -8.908476], [142.300903, -8.908204], [142.301175, -8.907986], [142.301447, -8.907877], [142.30172, -8.907876]], "type": "LineString"}, "id": "2", "properties": {"reach_id": "53151000375", "time_str": "2024-02-15T00:07:00Z", "width": "428.696936", "width_units": "m", "wse": "7.8548", "wse_units": "m"}, "type": "Feature"}, {"geometry": {"coordinates": [[142.235319, -8.956718], [142.235592, -8.956717], [142.235865, -8.956716], [142.236137, -8.956607], [142.23641, -8.956552], [142.236683, -8.956496], [142.236955, -8.956441], [142.237228, -8.95644], [142.237501, -8.956385], [142.237774, -8.95633], [142.238046, -8.956275], [142.238319, -8.956274], [142.238592, -8.956219], [142.238864, -8.956164], [142.239137, -8.956108], [142.23941, -8.956107], [142.239682, -8.955998], [142.239955, -8.955943], [142.240228, -8.955888], [142.240501, -8.955887], [142.240773, -8.955832], [142.241046, -8.955831], [142.241319, -8.955776], [142.241592, -8.955775], [142.241864, -8.955719], [142.242137, -8.955719], [142.24241, -8.955718], [142.242683, -8.955771], [142.242956, -8.955824], [142.243229, -8.955878], [142.243502, -8.955877], [142.243775, -8.955876], [142.244048, -8.955929], [142.244321, -8.955982], [142.244594, -8.95609], [142.244867, -8.956198], [142.24514, -8.956305], [142.245414, -8.956413], [142.245687, -8.95652], [142.24596, -8.956628], [142.246233, -8.956736], [142.246507, -8.956898], [142.24678, -8.957005], [142.247053, -8.957167], [142.247326, -8.957275], [142.2476, -8.957436], [142.247873, -8.957598], [142.248147, -8.95776], [142.24842, -8.957922], [142.248693, -8.958084], [142.248967, -8.958191], [142.24924, -8.958299], [142.249513, -8.958407], [142.249786, -8.95846], [142.250059, -8.958513], [142.250332, -8.958567], [142.250605, -8.958566], [142.250878, -8.958565], [142.251151, -8.958564], [142.251424, -8.958563], [142.251696, -8.958562], [142.251969, -8.958561], [142.252242, -8.958506], [142.252515, -8.958451], [142.252787, -8.958396], [142.25306, -8.958286], [142.253332, -8.958231], [142.253605, -8.958176], [142.253878, -8.958121], [142.25415, -8.958065], [142.254423, -8.95801], [142.254695, -8.957901], [142.254968, -8.957846], [142.255241, -8.95779], [142.255513, -8.957735], [142.255786, -8.957734], [142.256059, -8.957679], [142.256332, -8.957624], [142.256604, -8.957569], [142.256877, -8.957514], [142.25715, -8.957458], [142.257422, -8.957457], [142.257695, -8.957456], [142.257968, -8.957456], [142.258241, -8.957455], [142.258514, -8.957399], [142.258786, -8.957344], [142.259059, -8.957289], [142.259331, -8.95718], [142.259604, -8.95707], [142.259876, -8.956961], [142.260149, -8.956851], [142.260421, -8.956688], [142.260694, -8.956578], [142.260966, -8.956469], [142.261238, -8.956359], [142.261511, -8.956196], [142.261783, -8.956086], [142.262056, -8.956031], [142.262328, -8.955921], [142.262601, -8.955812], [142.262873, -8.955757], [142.263146, -8.955702], [142.263418, -8.955538], [142.263691, -8.955374], [142.263963, -8.955211], [142.264181, -8.954993], [142.264398, -8.954721], [142.264561, -8.954449], [142.264669, -8.954177], [142.264722, -8.953906], [142.264721, -8.953634], [142.264666, -8.953363], [142.264556, -8.953092], [142.2645, -8.952821], [142.26439, -8.95255], [142.26428, -8.95228], [142.264116, -8.952009], [142.263951, -8.951738], [142.263677, -8.951468], [142.263403, -8.951197], [142.26313, -8.950927], [142.26291, -8.950656], [142.262691, -8.950386], [142.262581, -8.950115], [142.262526, -8.949844], [142.262579, -8.949572], [142.262688, -8.949301], [142.262905, -8.949083], [142.263123, -8.948865], [142.263395, -8.948702], [142.263667, -8.948592], [142.26394, -8.948537], [142.264213, -8.948482], [142.264485, -8.948427], [142.264758, -8.948371], [142.265031, -8.948316], [142.265303, -8.948261], [142.265576, -8.948206], [142.265849, -8.948205], [142.266121, -8.948204], [142.266394, -8.948203], [142.266667, -8.948202], [142.26694, -8.948147], [142.267212, -8.948092], [142.267485, -8.947982], [142.267757, -8.947819], [142.268029, -8.947601], [142.268247, -8.947383], [142.26841, -8.947111], [142.268572, -8.946839], [142.268626, -8.946568], [142.268625, -8.946296], [142.268569, -8.946025], [142.268514, -8.945754], [142.268404, -8.945483], [142.268294, -8.945212], [142.268184, -8.944941], [142.268074, -8.94467], [142.267909, -8.9444], [142.267744, -8.944129], [142.26758, -8.943858], [142.267415, -8.943588], [142.267251, -8.943317], [142.26714, -8.943046], [142.266976, -8.942775], [142.266866, -8.942504], [142.266756, -8.942233], [142.2667, -8.941962], [142.266699, -8.941691], [142.266753, -8.941419], [142.266806, -8.941148], [142.266915, -8.940876], [142.267023, -8.940605], [142.267131, -8.940333], [142.267239, -8.940061], [142.267402, -8.93979], [142.26751, -8.939518], [142.267618, -8.939246], [142.267727, -8.938975], [142.267835, -8.938703], [142.267943, -8.938431], [142.268051, -8.93816], [142.268159, -8.937888], [142.268213, -8.937616], [142.268321, -8.937345], [142.268375, -8.937073], [142.268374, -8.936802], [142.268373, -8.936531], [142.268372, -8.936259], [142.268262, -8.935989], [142.268152, -8.935718], [142.268042, -8.935447], [142.267932, -8.935176], [142.267767, -8.934905], [142.267602, -8.934634], [142.267438, -8.934364], [142.267273, -8.934093], [142.267054, -8.933822], [142.266889, -8.933552], [142.266779, -8.933281], [142.266669, -8.93301], [142.266614, -8.932739], [142.266667, -8.932467], [142.266776, -8.932196], [142.266938, -8.931924], [142.267156, -8.931652], [142.267428, -8.931434], [142.2677, -8.931216], [142.267972, -8.931052], [142.268244, -8.930888], [142.268517, -8.930779], [142.268789, -8.930669], [142.269062, -8.930614], [142.269334, -8.930505], [142.269607, -8.93045], [142.269879, -8.93034], [142.270152, -8.930231], [142.270424, -8.930121], [142.270697, -8.930066], [142.270969, -8.929957], [142.271242, -8.929901], [142.271515, -8.929846], [142.271787, -8.929791], [142.27206, -8.929736], [142.272333, -8.929735], [142.272605, -8.92968], [142.272878, -8.929679], [142.273151, -8.929624], [142.273424, -8.929623], [142.273696, -8.929622], [142.273969, -8.929675], [142.274242, -8.929674], [142.274515, -8.929727], [142.274788, -8.929727], [142.275061, -8.92978], [142.275334, -8.929887], [142.275608, -8.930049], [142.275881, -8.930265], [142.276155, -8.930536], [142.276429, -8.930806], [142.276703, -8.931076], [142.276976, -8.931347], [142.277195, -8.931617], [142.277415, -8.931888], [142.277634, -8.932158], [142.277853, -8.932429], [142.278072, -8.932699], [142.278292, -8.93297], [142.278511, -8.93324], [142.27873, -8.933511], [142.278949, -8.933782], [142.279168, -8.934052], [142.279442, -8.934322], [142.279716, -8.934593], [142.27999, -8.934863], [142.280263, -8.935079], [142.280537, -8.935241], [142.28081, -8.935349], [142.281083, -8.935402], [142.281356, -8.935401], [142.281628, -8.9354], [142.281901, -8.935399], [142.282174, -8.935452], [142.282447, -8.935451], [142.28272, -8.93545], [142.282993, -8.935395], [142.283265, -8.93534], [142.283537, -8.935176], [142.28381, -8.935013], [142.284027, -8.934795], [142.28419, -8.934577], [142.284298, -8.934306], [142.284352, -8.934034], [142.284351, -8.933763], [142.284295, -8.933492], [142.284185, -8.933221], [142.284075, -8.93295], [142.283911, -8.932679], [142.283746, -8.932409], [142.283581, -8.932138], [142.283471, -8.931867], [142.283416, -8.931596], [142.283415, -8.931325], [142.283468, -8.931053], [142.283631, -8.930835], [142.283849, -8.930672], [142.284067, -8.930617], [142.28434, -8.930562], [142.284613, -8.930561], [142.284886, -8.930614], [142.285159, -8.930667], [142.285431, -8.930666], [142.285704, -8.93072], [142.285977, -8.930773], [142.28625, -8.930772], [142.286523, -8.930717], [142.286795, -8.930607], [142.287068, -8.930444], [142.28734, -8.930226], [142.287557, -8.929954], [142.287665, -8.929682], [142.287664, -8.929411], [142.287554, -8.92914], [142.287335, -8.928869], [142.287061, -8.928653], [142.286788, -8.928437], [142.286514, -8.928221], [142.286241, -8.928005], [142.285967, -8.927789], [142.285693, -8.927573], [142.28542, -8.927357], [142.285146, -8.927141], [142.284927, -8.926924], [142.284708, -8.926708], [142.284544, -8.926437], [142.284488, -8.926166], [142.284542, -8.925895], [142.28465, -8.925623], [142.284867, -8.925351], [142.285139, -8.925079], [142.285411, -8.924807], [142.285683, -8.924534], [142.285955, -8.924262], [142.286172, -8.92399], [142.286389, -8.923718], [142.286607, -8.923446], [142.286769, -8.923174], [142.286932, -8.922902], [142.287095, -8.922631], [142.287258, -8.922359], [142.287366, -8.922087], [142.287528, -8.921815], [142.287637, -8.921544], [142.287799, -8.921272], [142.287853, -8.921], [142.287852, -8.920729], [142.287796, -8.920458], [142.287741, -8.920187], [142.287685, -8.919916], [142.28763, -8.919645], [142.287629, -8.919373], [142.287628, -8.919102], [142.287573, -8.918831], [142.287462, -8.91856], [142.287407, -8.918289], [142.287351, -8.918018], [142.28735, -8.917746], [142.287459, -8.917475], [142.287622, -8.917257], [142.287839, -8.917094], [142.288112, -8.917038], [142.288385, -8.916983], [142.288657, -8.916982], [142.28893, -8.916981], [142.289203, -8.916926], [142.289475, -8.916817], [142.289748, -8.916707], [142.29002, -8.916544], [142.290292, -8.916326], [142.290509, -8.916108], [142.290727, -8.915836], [142.290835, -8.915564], [142.290943, -8.915292], [142.290997, -8.915021], [142.291105, -8.914749], [142.291158, -8.914478], [142.291321, -8.914206], [142.291484, -8.913934], [142.291701, -8.913662], [142.291919, -8.913444], [142.292191, -8.913281], [142.292463, -8.913171], [142.292736, -8.91317], [142.293009, -8.913278], [142.293282, -8.913331], [142.293555, -8.913384], [142.293828, -8.913492], [142.294101, -8.913545], [142.294374, -8.913544], [142.294647, -8.913543], [142.29492, -8.913542], [142.295193, -8.913487], [142.295465, -8.913378], [142.295737, -8.913214], [142.296009, -8.91305], [142.296281, -8.912832], [142.296553, -8.91256], [142.296771, -8.912288], [142.296988, -8.912016], [142.297205, -8.911744], [142.297422, -8.911472], [142.29764, -8.9112], [142.297912, -8.910928], [142.298183, -8.910655], [142.298455, -8.910383], [142.298727, -8.910111], [142.298999, -8.909839], [142.299271, -8.909621], [142.299543, -8.909403], [142.299815, -8.909185], [142.300087, -8.908967], [142.300359, -8.908749], [142.300631, -8.908476], [142.300903, -8.908204], [142.301175, -8.907986], [142.301447, -8.907877], [142.30172, -8.907876]], "type": "LineString"}, "id": "3", "properties": {"reach_id": "53151000375", "time_str": "2024-02-19T11:12:55Z", "width": "193.00955", "width_units": "m", "wse": "-15.266", "wse_units": "m"}, "type": "Feature"}, {"geometry": {"coordinates": [[142.235319, -8.956718], [142.235592, -8.956717], [142.235865, -8.956716], [142.236137, -8.956607], [142.23641, -8.956552], [142.236683, -8.956496], [142.236955, -8.956441], [142.237228, -8.95644], [142.237501, -8.956385], [142.237774, -8.95633], [142.238046, -8.956275], [142.238319, -8.956274], [142.238592, -8.956219], [142.238864, -8.956164], [142.239137, -8.956108], [142.23941, -8.956107], [142.239682, -8.955998], [142.239955, -8.955943], [142.240228, -8.955888], [142.240501, -8.955887], [142.240773, -8.955832], [142.241046, -8.955831], [142.241319, -8.955776], [142.241592, -8.955775], [142.241864, -8.955719], [142.242137, -8.955719], [142.24241, -8.955718], [142.242683, -8.955771], [142.242956, -8.955824], [142.243229, -8.955878], [142.243502, -8.955877], [142.243775, -8.955876], [142.244048, -8.955929], [142.244321, -8.955982], [142.244594, -8.95609], [142.244867, -8.956198], [142.24514, -8.956305], [142.245414, -8.956413], [142.245687, -8.95652], [142.24596, -8.956628], [142.246233, -8.956736], [142.246507, -8.956898], [142.24678, -8.957005], [142.247053, -8.957167], [142.247326, -8.957275], [142.2476, -8.957436], [142.247873, -8.957598], [142.248147, -8.95776], [142.24842, -8.957922], [142.248693, -8.958084], [142.248967, -8.958191], [142.24924, -8.958299], [142.249513, -8.958407], [142.249786, -8.95846], [142.250059, -8.958513], [142.250332, -8.958567], [142.250605, -8.958566], [142.250878, -8.958565], [142.251151, -8.958564], [142.251424, -8.958563], [142.251696, -8.958562], [142.251969, -8.958561], [142.252242, -8.958506], [142.252515, -8.958451], [142.252787, -8.958396], [142.25306, -8.958286], [142.253332, -8.958231], [142.253605, -8.958176], [142.253878, -8.958121], [142.25415, -8.958065], [142.254423, -8.95801], [142.254695, -8.957901], [142.254968, -8.957846], [142.255241, -8.95779], [142.255513, -8.957735], [142.255786, -8.957734], [142.256059, -8.957679], [142.256332, -8.957624], [142.256604, -8.957569], [142.256877, -8.957514], [142.25715, -8.957458], [142.257422, -8.957457], [142.257695, -8.957456], [142.257968, -8.957456], [142.258241, -8.957455], [142.258514, -8.957399], [142.258786, -8.957344], [142.259059, -8.957289], [142.259331, -8.95718], [142.259604, -8.95707], [142.259876, -8.956961], [142.260149, -8.956851], [142.260421, -8.956688], [142.260694, -8.956578], [142.260966, -8.956469], [142.261238, -8.956359], [142.261511, -8.956196], [142.261783, -8.956086], [142.262056, -8.956031], [142.262328, -8.955921], [142.262601, -8.955812], [142.262873, -8.955757], [142.263146, -8.955702], [142.263418, -8.955538], [142.263691, -8.955374], [142.263963, -8.955211], [142.264181, -8.954993], [142.264398, -8.954721], [142.264561, -8.954449], [142.264669, -8.954177], [142.264722, -8.953906], [142.264721, -8.953634], [142.264666, -8.953363], [142.264556, -8.953092], [142.2645, -8.952821], [142.26439, -8.95255], [142.26428, -8.95228], [142.264116, -8.952009], [142.263951, -8.951738], [142.263677, -8.951468], [142.263403, -8.951197], [142.26313, -8.950927], [142.26291, -8.950656], [142.262691, -8.950386], [142.262581, -8.950115], [142.262526, -8.949844], [142.262579, -8.949572], [142.262688, -8.949301], [142.262905, -8.949083], [142.263123, -8.948865], [142.263395, -8.948702], [142.263667, -8.948592], [142.26394, -8.948537], [142.264213, -8.948482], [142.264485, -8.948427], [142.264758, -8.948371], [142.265031, -8.948316], [142.265303, -8.948261], [142.265576, -8.948206], [142.265849, -8.948205], [142.266121, -8.948204], [142.266394, -8.948203], [142.266667, -8.948202], [142.26694, -8.948147], [142.267212, -8.948092], [142.267485, -8.947982], [142.267757, -8.947819], [142.268029, -8.947601], [142.268247, -8.947383], [142.26841, -8.947111], [142.268572, -8.946839], [142.268626, -8.946568], [142.268625, -8.946296], [142.268569, -8.946025], [142.268514, -8.945754], [142.268404, -8.945483], [142.268294, -8.945212], [142.268184, -8.944941], [142.268074, -8.94467], [142.267909, -8.9444], [142.267744, -8.944129], [142.26758, -8.943858], [142.267415, -8.943588], [142.267251, -8.943317], [142.26714, -8.943046], [142.266976, -8.942775], [142.266866, -8.942504], [142.266756, -8.942233], [142.2667, -8.941962], [142.266699, -8.941691], [142.266753, -8.941419], [142.266806, -8.941148], [142.266915, -8.940876], [142.267023, -8.940605], [142.267131, -8.940333], [142.267239, -8.940061], [142.267402, -8.93979], [142.26751, -8.939518], [142.267618, -8.939246], [142.267727, -8.938975], [142.267835, -8.938703], [142.267943, -8.938431], [142.268051, -8.93816], [142.268159, -8.937888], [142.268213, -8.937616], [142.268321, -8.937345], [142.268375, -8.937073], [142.268374, -8.936802], [142.268373, -8.936531], [142.268372, -8.936259], [142.268262, -8.935989], [142.268152, -8.935718], [142.268042, -8.935447], [142.267932, -8.935176], [142.267767, -8.934905], [142.267602, -8.934634], [142.267438, -8.934364], [142.267273, -8.934093], [142.267054, -8.933822], [142.266889, -8.933552], [142.266779, -8.933281], [142.266669, -8.93301], [142.266614, -8.932739], [142.266667, -8.932467], [142.266776, -8.932196], [142.266938, -8.931924], [142.267156, -8.931652], [142.267428, -8.931434], [142.2677, -8.931216], [142.267972, -8.931052], [142.268244, -8.930888], [142.268517, -8.930779], [142.268789, -8.930669], [142.269062, -8.930614], [142.269334, -8.930505], [142.269607, -8.93045], [142.269879, -8.93034], [142.270152, -8.930231], [142.270424, -8.930121], [142.270697, -8.930066], [142.270969, -8.929957], [142.271242, -8.929901], [142.271515, -8.929846], [142.271787, -8.929791], [142.27206, -8.929736], [142.272333, -8.929735], [142.272605, -8.92968], [142.272878, -8.929679], [142.273151, -8.929624], [142.273424, -8.929623], [142.273696, -8.929622], [142.273969, -8.929675], [142.274242, -8.929674], [142.274515, -8.929727], [142.274788, -8.929727], [142.275061, -8.92978], [142.275334, -8.929887], [142.275608, -8.930049], [142.275881, -8.930265], [142.276155, -8.930536], [142.276429, -8.930806], [142.276703, -8.931076], [142.276976, -8.931347], [142.277195, -8.931617], [142.277415, -8.931888], [142.277634, -8.932158], [142.277853, -8.932429], [142.278072, -8.932699], [142.278292, -8.93297], [142.278511, -8.93324], [142.27873, -8.933511], [142.278949, -8.933782], [142.279168, -8.934052], [142.279442, -8.934322], [142.279716, -8.934593], [142.27999, -8.934863], [142.280263, -8.935079], [142.280537, -8.935241], [142.28081, -8.935349], [142.281083, -8.935402], [142.281356, -8.935401], [142.281628, -8.9354], [142.281901, -8.935399], [142.282174, -8.935452], [142.282447, -8.935451], [142.28272, -8.93545], [142.282993, -8.935395], [142.283265, -8.93534], [142.283537, -8.935176], [142.28381, -8.935013], [142.284027, -8.934795], [142.28419, -8.934577], [142.284298, -8.934306], [142.284352, -8.934034], [142.284351, -8.933763], [142.284295, -8.933492], [142.284185, -8.933221], [142.284075, -8.93295], [142.283911, -8.932679], [142.283746, -8.932409], [142.283581, -8.932138], [142.283471, -8.931867], [142.283416, -8.931596], [142.283415, -8.931325], [142.283468, -8.931053], [142.283631, -8.930835], [142.283849, -8.930672], [142.284067, -8.930617], [142.28434, -8.930562], [142.284613, -8.930561], [142.284886, -8.930614], [142.285159, -8.930667], [142.285431, -8.930666], [142.285704, -8.93072], [142.285977, -8.930773], [142.28625, -8.930772], [142.286523, -8.930717], [142.286795, -8.930607], [142.287068, -8.930444], [142.28734, -8.930226], [142.287557, -8.929954], [142.287665, -8.929682], [142.287664, -8.929411], [142.287554, -8.92914], [142.287335, -8.928869], [142.287061, -8.928653], [142.286788, -8.928437], [142.286514, -8.928221], [142.286241, -8.928005], [142.285967, -8.927789], [142.285693, -8.927573], [142.28542, -8.927357], [142.285146, -8.927141], [142.284927, -8.926924], [142.284708, -8.926708], [142.284544, -8.926437], [142.284488, -8.926166], [142.284542, -8.925895], [142.28465, -8.925623], [142.284867, -8.925351], [142.285139, -8.925079], [142.285411, -8.924807], [142.285683, -8.924534], [142.285955, -8.924262], [142.286172, -8.92399], [142.286389, -8.923718], [142.286607, -8.923446], [142.286769, -8.923174], [142.286932, -8.922902], [142.287095, -8.922631], [142.287258, -8.922359], [142.287366, -8.922087], [142.287528, -8.921815], [142.287637, -8.921544], [142.287799, -8.921272], [142.287853, -8.921], [142.287852, -8.920729], [142.287796, -8.920458], [142.287741, -8.920187], [142.287685, -8.919916], [142.28763, -8.919645], [142.287629, -8.919373], [142.287628, -8.919102], [142.287573, -8.918831], [142.287462, -8.91856], [142.287407, -8.918289], [142.287351, -8.918018], [142.28735, -8.917746], [142.287459, -8.917475], [142.287622, -8.917257], [142.287839, -8.917094], [142.288112, -8.917038], [142.288385, -8.916983], [142.288657, -8.916982], [142.28893, -8.916981], [142.289203, -8.916926], [142.289475, -8.916817], [142.289748, -8.916707], [142.29002, -8.916544], [142.290292, -8.916326], [142.290509, -8.916108], [142.290727, -8.915836], [142.290835, -8.915564], [142.290943, -8.915292], [142.290997, -8.915021], [142.291105, -8.914749], [142.291158, -8.914478], [142.291321, -8.914206], [142.291484, -8.913934], [142.291701, -8.913662], [142.291919, -8.913444], [142.292191, -8.913281], [142.292463, -8.913171], [142.292736, -8.91317], [142.293009, -8.913278], [142.293282, -8.913331], [142.293555, -8.913384], [142.293828, -8.913492], [142.294101, -8.913545], [142.294374, -8.913544], [142.294647, -8.913543], [142.29492, -8.913542], [142.295193, -8.913487], [142.295465, -8.913378], [142.295737, -8.913214], [142.296009, -8.91305], [142.296281, -8.912832], [142.296553, -8.91256], [142.296771, -8.912288], [142.296988, -8.912016], [142.297205, -8.911744], [142.297422, -8.911472], [142.29764, -8.9112], [142.297912, -8.910928], [142.298183, -8.910655], [142.298455, -8.910383], [142.298727, -8.910111], [142.298999, -8.909839], [142.299271, -8.909621], [142.299543, -8.909403], [142.299815, -8.909185], [142.300087, -8.908967], [142.300359, -8.908749], [142.300631, -8.908476], [142.300903, -8.908204], [142.301175, -8.907986], [142.301447, -8.907877], [142.30172, -8.907876]], "type": "LineString"}, "id": "4", "properties": {"reach_id": "53151000375", "time_str": "2024-03-06T20:52:04Z", "width": "339.44439900000003", "width_units": "m", "wse": "-7.9709", "wse_units": "m"}, "type": "Feature"}, {"geometry": {"coordinates": [[142.235319, -8.956718], [142.235592, -8.956717], [142.235865, -8.956716], [142.236137, -8.956607], [142.23641, -8.956552], [142.236683, -8.956496], [142.236955, -8.956441], [142.237228, -8.95644], [142.237501, -8.956385], [142.237774, -8.95633], [142.238046, -8.956275], [142.238319, -8.956274], [142.238592, -8.956219], [142.238864, -8.956164], [142.239137, -8.956108], [142.23941, -8.956107], [142.239682, -8.955998], [142.239955, -8.955943], [142.240228, -8.955888], [142.240501, -8.955887], [142.240773, -8.955832], [142.241046, -8.955831], [142.241319, -8.955776], [142.241592, -8.955775], [142.241864, -8.955719], [142.242137, -8.955719], [142.24241, -8.955718], [142.242683, -8.955771], [142.242956, -8.955824], [142.243229, -8.955878], [142.243502, -8.955877], [142.243775, -8.955876], [142.244048, -8.955929], [142.244321, -8.955982], [142.244594, -8.95609], [142.244867, -8.956198], [142.24514, -8.956305], [142.245414, -8.956413], [142.245687, -8.95652], [142.24596, -8.956628], [142.246233, -8.956736], [142.246507, -8.956898], [142.24678, -8.957005], [142.247053, -8.957167], [142.247326, -8.957275], [142.2476, -8.957436], [142.247873, -8.957598], [142.248147, -8.95776], [142.24842, -8.957922], [142.248693, -8.958084], [142.248967, -8.958191], [142.24924, -8.958299], [142.249513, -8.958407], [142.249786, -8.95846], [142.250059, -8.958513], [142.250332, -8.958567], [142.250605, -8.958566], [142.250878, -8.958565], [142.251151, -8.958564], [142.251424, -8.958563], [142.251696, -8.958562], [142.251969, -8.958561], [142.252242, -8.958506], [142.252515, -8.958451], [142.252787, -8.958396], [142.25306, -8.958286], [142.253332, -8.958231], [142.253605, -8.958176], [142.253878, -8.958121], [142.25415, -8.958065], [142.254423, -8.95801], [142.254695, -8.957901], [142.254968, -8.957846], [142.255241, -8.95779], [142.255513, -8.957735], [142.255786, -8.957734], [142.256059, -8.957679], [142.256332, -8.957624], [142.256604, -8.957569], [142.256877, -8.957514], [142.25715, -8.957458], [142.257422, -8.957457], [142.257695, -8.957456], [142.257968, -8.957456], [142.258241, -8.957455], [142.258514, -8.957399], [142.258786, -8.957344], [142.259059, -8.957289], [142.259331, -8.95718], [142.259604, -8.95707], [142.259876, -8.956961], [142.260149, -8.956851], [142.260421, -8.956688], [142.260694, -8.956578], [142.260966, -8.956469], [142.261238, -8.956359], [142.261511, -8.956196], [142.261783, -8.956086], [142.262056, -8.956031], [142.262328, -8.955921], [142.262601, -8.955812], [142.262873, -8.955757], [142.263146, -8.955702], [142.263418, -8.955538], [142.263691, -8.955374], [142.263963, -8.955211], [142.264181, -8.954993], [142.264398, -8.954721], [142.264561, -8.954449], [142.264669, -8.954177], [142.264722, -8.953906], [142.264721, -8.953634], [142.264666, -8.953363], [142.264556, -8.953092], [142.2645, -8.952821], [142.26439, -8.95255], [142.26428, -8.95228], [142.264116, -8.952009], [142.263951, -8.951738], [142.263677, -8.951468], [142.263403, -8.951197], [142.26313, -8.950927], [142.26291, -8.950656], [142.262691, -8.950386], [142.262581, -8.950115], [142.262526, -8.949844], [142.262579, -8.949572], [142.262688, -8.949301], [142.262905, -8.949083], [142.263123, -8.948865], [142.263395, -8.948702], [142.263667, -8.948592], [142.26394, -8.948537], [142.264213, -8.948482], [142.264485, -8.948427], [142.264758, -8.948371], [142.265031, -8.948316], [142.265303, -8.948261], [142.265576, -8.948206], [142.265849, -8.948205], [142.266121, -8.948204], [142.266394, -8.948203], [142.266667, -8.948202], [142.26694, -8.948147], [142.267212, -8.948092], [142.267485, -8.947982], [142.267757, -8.947819], [142.268029, -8.947601], [142.268247, -8.947383], [142.26841, -8.947111], [142.268572, -8.946839], [142.268626, -8.946568], [142.268625, -8.946296], [142.268569, -8.946025], [142.268514, -8.945754], [142.268404, -8.945483], [142.268294, -8.945212], [142.268184, -8.944941], [142.268074, -8.94467], [142.267909, -8.9444], [142.267744, -8.944129], [142.26758, -8.943858], [142.267415, -8.943588], [142.267251, -8.943317], [142.26714, -8.943046], [142.266976, -8.942775], [142.266866, -8.942504], [142.266756, -8.942233], [142.2667, -8.941962], [142.266699, -8.941691], [142.266753, -8.941419], [142.266806, -8.941148], [142.266915, -8.940876], [142.267023, -8.940605], [142.267131, -8.940333], [142.267239, -8.940061], [142.267402, -8.93979], [142.26751, -8.939518], [142.267618, -8.939246], [142.267727, -8.938975], [142.267835, -8.938703], [142.267943, -8.938431], [142.268051, -8.93816], [142.268159, -8.937888], [142.268213, -8.937616], [142.268321, -8.937345], [142.268375, -8.937073], [142.268374, -8.936802], [142.268373, -8.936531], [142.268372, -8.936259], [142.268262, -8.935989], [142.268152, -8.935718], [142.268042, -8.935447], [142.267932, -8.935176], [142.267767, -8.934905], [142.267602, -8.934634], [142.267438, -8.934364], [142.267273, -8.934093], [142.267054, -8.933822], [142.266889, -8.933552], [142.266779, -8.933281], [142.266669, -8.93301], [142.266614, -8.932739], [142.266667, -8.932467], [142.266776, -8.932196], [142.266938, -8.931924], [142.267156, -8.931652], [142.267428, -8.931434], [142.2677, -8.931216], [142.267972, -8.931052], [142.268244, -8.930888], [142.268517, -8.930779], [142.268789, -8.930669], [142.269062, -8.930614], [142.269334, -8.930505], [142.269607, -8.93045], [142.269879, -8.93034], [142.270152, -8.930231], [142.270424, -8.930121], [142.270697, -8.930066], [142.270969, -8.929957], [142.271242, -8.929901], [142.271515, -8.929846], [142.271787, -8.929791], [142.27206, -8.929736], [142.272333, -8.929735], [142.272605, -8.92968], [142.272878, -8.929679], [142.273151, -8.929624], [142.273424, -8.929623], [142.273696, -8.929622], [142.273969, -8.929675], [142.274242, -8.929674], [142.274515, -8.929727], [142.274788, -8.929727], [142.275061, -8.92978], [142.275334, -8.929887], [142.275608, -8.930049], [142.275881, -8.930265], [142.276155, -8.930536], [142.276429, -8.930806], [142.276703, -8.931076], [142.276976, -8.931347], [142.277195, -8.931617], [142.277415, -8.931888], [142.277634, -8.932158], [142.277853, -8.932429], [142.278072, -8.932699], [142.278292, -8.93297], [142.278511, -8.93324], [142.27873, -8.933511], [142.278949, -8.933782], [142.279168, -8.934052], [142.279442, -8.934322], [142.279716, -8.934593], [142.27999, -8.934863], [142.280263, -8.935079], [142.280537, -8.935241], [142.28081, -8.935349], [142.281083, -8.935402], [142.281356, -8.935401], [142.281628, -8.9354], [142.281901, -8.935399], [142.282174, -8.935452], [142.282447, -8.935451], [142.28272, -8.93545], [142.282993, -8.935395], [142.283265, -8.93534], [142.283537, -8.935176], [142.28381, -8.935013], [142.284027, -8.934795], [142.28419, -8.934577], [142.284298, -8.934306], [142.284352, -8.934034], [142.284351, -8.933763], [142.284295, -8.933492], [142.284185, -8.933221], [142.284075, -8.93295], [142.283911, -8.932679], [142.283746, -8.932409], [142.283581, -8.932138], [142.283471, -8.931867], [142.283416, -8.931596], [142.283415, -8.931325], [142.283468, -8.931053], [142.283631, -8.930835], [142.283849, -8.930672], [142.284067, -8.930617], [142.28434, -8.930562], [142.284613, -8.930561], [142.284886, -8.930614], [142.285159, -8.930667], [142.285431, -8.930666], [142.285704, -8.93072], [142.285977, -8.930773], [142.28625, -8.930772], [142.286523, -8.930717], [142.286795, -8.930607], [142.287068, -8.930444], [142.28734, -8.930226], [142.287557, -8.929954], [142.287665, -8.929682], [142.287664, -8.929411], [142.287554, -8.92914], [142.287335, -8.928869], [142.287061, -8.928653], [142.286788, -8.928437], [142.286514, -8.928221], [142.286241, -8.928005], [142.285967, -8.927789], [142.285693, -8.927573], [142.28542, -8.927357], [142.285146, -8.927141], [142.284927, -8.926924], [142.284708, -8.926708], [142.284544, -8.926437], [142.284488, -8.926166], [142.284542, -8.925895], [142.28465, -8.925623], [142.284867, -8.925351], [142.285139, -8.925079], [142.285411, -8.924807], [142.285683, -8.924534], [142.285955, -8.924262], [142.286172, -8.92399], [142.286389, -8.923718], [142.286607, -8.923446], [142.286769, -8.923174], [142.286932, -8.922902], [142.287095, -8.922631], [142.287258, -8.922359], [142.287366, -8.922087], [142.287528, -8.921815], [142.287637, -8.921544], [142.287799, -8.921272], [142.287853, -8.921], [142.287852, -8.920729], [142.287796, -8.920458], [142.287741, -8.920187], [142.287685, -8.919916], [142.28763, -8.919645], [142.287629, -8.919373], [142.287628, -8.919102], [142.287573, -8.918831], [142.287462, -8.91856], [142.287407, -8.918289], [142.287351, -8.918018], [142.28735, -8.917746], [142.287459, -8.917475], [142.287622, -8.917257], [142.287839, -8.917094], [142.288112, -8.917038], [142.288385, -8.916983], [142.288657, -8.916982], [142.28893, -8.916981], [142.289203, -8.916926], [142.289475, -8.916817], [142.289748, -8.916707], [142.29002, -8.916544], [142.290292, -8.916326], [142.290509, -8.916108], [142.290727, -8.915836], [142.290835, -8.915564], [142.290943, -8.915292], [142.290997, -8.915021], [142.291105, -8.914749], [142.291158, -8.914478], [142.291321, -8.914206], [142.291484, -8.913934], [142.291701, -8.913662], [142.291919, -8.913444], [142.292191, -8.913281], [142.292463, -8.913171], [142.292736, -8.91317], [142.293009, -8.913278], [142.293282, -8.913331], [142.293555, -8.913384], [142.293828, -8.913492], [142.294101, -8.913545], [142.294374, -8.913544], [142.294647, -8.913543], [142.29492, -8.913542], [142.295193, -8.913487], [142.295465, -8.913378], [142.295737, -8.913214], [142.296009, -8.91305], [142.296281, -8.912832], [142.296553, -8.91256], [142.296771, -8.912288], [142.296988, -8.912016], [142.297205, -8.911744], [142.297422, -8.911472], [142.29764, -8.9112], [142.297912, -8.910928], [142.298183, -8.910655], [142.298455, -8.910383], [142.298727, -8.910111], [142.298999, -8.909839], [142.299271, -8.909621], [142.299543, -8.909403], [142.299815, -8.909185], [142.300087, -8.908967], [142.300359, -8.908749], [142.300631, -8.908476], [142.300903, -8.908204], [142.301175, -8.907986], [142.301447, -8.907877], [142.30172, -8.907876]], "type": "LineString"}, "id": "5", "properties": {"reach_id": "53151000375", "time_str": "2024-03-11T07:57:58Z", "width": "99.84903", "width_units": "m", "wse": "2.9622", "wse_units": "m"}, "type": "Feature"}], "type": "FeatureCollection"});\n", + " geo_json_58c440d5a846df15a79f82e437aaf81f_add({"features": [{"geometry": {"coordinates": [[142.235319, -8.956718], [142.235592, -8.956717], [142.235865, -8.956716], [142.236137, -8.956607], [142.23641, -8.956552], [142.236683, -8.956496], [142.236955, -8.956441], [142.237228, -8.95644], [142.237501, -8.956385], [142.237774, -8.95633], [142.238046, -8.956275], [142.238319, -8.956274], [142.238592, -8.956219], [142.238864, -8.956164], [142.239137, -8.956108], [142.23941, -8.956107], [142.239682, -8.955998], [142.239955, -8.955943], [142.240228, -8.955888], [142.240501, -8.955887], [142.240773, -8.955832], [142.241046, -8.955831], [142.241319, -8.955776], [142.241592, -8.955775], [142.241864, -8.955719], [142.242137, -8.955719], [142.24241, -8.955718], [142.242683, -8.955771], [142.242956, -8.955824], [142.243229, -8.955878], [142.243502, -8.955877], [142.243775, -8.955876], [142.244048, -8.955929], [142.244321, -8.955982], [142.244594, -8.95609], [142.244867, -8.956198], [142.24514, -8.956305], [142.245414, -8.956413], [142.245687, -8.95652], [142.24596, -8.956628], [142.246233, -8.956736], [142.246507, -8.956898], [142.24678, -8.957005], [142.247053, -8.957167], [142.247326, -8.957275], [142.2476, -8.957436], [142.247873, -8.957598], [142.248147, -8.95776], [142.24842, -8.957922], [142.248693, -8.958084], [142.248967, -8.958191], [142.24924, -8.958299], [142.249513, -8.958407], [142.249786, -8.95846], [142.250059, -8.958513], [142.250332, -8.958567], [142.250605, -8.958566], [142.250878, -8.958565], [142.251151, -8.958564], [142.251424, -8.958563], [142.251696, -8.958562], [142.251969, -8.958561], [142.252242, -8.958506], [142.252515, -8.958451], [142.252787, -8.958396], [142.25306, -8.958286], [142.253332, -8.958231], [142.253605, -8.958176], [142.253878, -8.958121], [142.25415, -8.958065], [142.254423, -8.95801], [142.254695, -8.957901], [142.254968, -8.957846], [142.255241, -8.95779], [142.255513, -8.957735], [142.255786, -8.957734], [142.256059, -8.957679], [142.256332, -8.957624], [142.256604, -8.957569], [142.256877, -8.957514], [142.25715, -8.957458], [142.257422, -8.957457], [142.257695, -8.957456], [142.257968, -8.957456], [142.258241, -8.957455], [142.258514, -8.957399], [142.258786, -8.957344], [142.259059, -8.957289], [142.259331, -8.95718], [142.259604, -8.95707], [142.259876, -8.956961], [142.260149, -8.956851], [142.260421, -8.956688], [142.260694, -8.956578], [142.260966, -8.956469], [142.261238, -8.956359], [142.261511, -8.956196], [142.261783, -8.956086], [142.262056, -8.956031], [142.262328, -8.955921], [142.262601, -8.955812], [142.262873, -8.955757], [142.263146, -8.955702], [142.263418, -8.955538], [142.263691, -8.955374], [142.263963, -8.955211], [142.264181, -8.954993], [142.264398, -8.954721], [142.264561, -8.954449], [142.264669, -8.954177], [142.264722, -8.953906], [142.264721, -8.953634], [142.264666, -8.953363], [142.264556, -8.953092], [142.2645, -8.952821], [142.26439, -8.95255], [142.26428, -8.95228], [142.264116, -8.952009], [142.263951, -8.951738], [142.263677, -8.951468], [142.263403, -8.951197], [142.26313, -8.950927], [142.26291, -8.950656], [142.262691, -8.950386], [142.262581, -8.950115], [142.262526, -8.949844], [142.262579, -8.949572], [142.262688, -8.949301], [142.262905, -8.949083], [142.263123, -8.948865], [142.263395, -8.948702], [142.263667, -8.948592], [142.26394, -8.948537], [142.264213, -8.948482], [142.264485, -8.948427], [142.264758, -8.948371], [142.265031, -8.948316], [142.265303, -8.948261], [142.265576, -8.948206], [142.265849, -8.948205], [142.266121, -8.948204], [142.266394, -8.948203], [142.266667, -8.948202], [142.26694, -8.948147], [142.267212, -8.948092], [142.267485, -8.947982], [142.267757, -8.947819], [142.268029, -8.947601], [142.268247, -8.947383], [142.26841, -8.947111], [142.268572, -8.946839], [142.268626, -8.946568], [142.268625, -8.946296], [142.268569, -8.946025], [142.268514, -8.945754], [142.268404, -8.945483], [142.268294, -8.945212], [142.268184, -8.944941], [142.268074, -8.94467], [142.267909, -8.9444], [142.267744, -8.944129], [142.26758, -8.943858], [142.267415, -8.943588], [142.267251, -8.943317], [142.26714, -8.943046], [142.266976, -8.942775], [142.266866, -8.942504], [142.266756, -8.942233], [142.2667, -8.941962], [142.266699, -8.941691], [142.266753, -8.941419], [142.266806, -8.941148], [142.266915, -8.940876], [142.267023, -8.940605], [142.267131, -8.940333], [142.267239, -8.940061], [142.267402, -8.93979], [142.26751, -8.939518], [142.267618, -8.939246], [142.267727, -8.938975], [142.267835, -8.938703], [142.267943, -8.938431], [142.268051, -8.93816], [142.268159, -8.937888], [142.268213, -8.937616], [142.268321, -8.937345], [142.268375, -8.937073], [142.268374, -8.936802], [142.268373, -8.936531], [142.268372, -8.936259], [142.268262, -8.935989], [142.268152, -8.935718], [142.268042, -8.935447], [142.267932, -8.935176], [142.267767, -8.934905], [142.267602, -8.934634], [142.267438, -8.934364], [142.267273, -8.934093], [142.267054, -8.933822], [142.266889, -8.933552], [142.266779, -8.933281], [142.266669, -8.93301], [142.266614, -8.932739], [142.266667, -8.932467], [142.266776, -8.932196], [142.266938, -8.931924], [142.267156, -8.931652], [142.267428, -8.931434], [142.2677, -8.931216], [142.267972, -8.931052], [142.268244, -8.930888], [142.268517, -8.930779], [142.268789, -8.930669], [142.269062, -8.930614], [142.269334, -8.930505], [142.269607, -8.93045], [142.269879, -8.93034], [142.270152, -8.930231], [142.270424, -8.930121], [142.270697, -8.930066], [142.270969, -8.929957], [142.271242, -8.929901], [142.271515, -8.929846], [142.271787, -8.929791], [142.27206, -8.929736], [142.272333, -8.929735], [142.272605, -8.92968], [142.272878, -8.929679], [142.273151, -8.929624], [142.273424, -8.929623], [142.273696, -8.929622], [142.273969, -8.929675], [142.274242, -8.929674], [142.274515, -8.929727], [142.274788, -8.929727], [142.275061, -8.92978], [142.275334, -8.929887], [142.275608, -8.930049], [142.275881, -8.930265], [142.276155, -8.930536], [142.276429, -8.930806], [142.276703, -8.931076], [142.276976, -8.931347], [142.277195, -8.931617], [142.277415, -8.931888], [142.277634, -8.932158], [142.277853, -8.932429], [142.278072, -8.932699], [142.278292, -8.93297], [142.278511, -8.93324], [142.27873, -8.933511], [142.278949, -8.933782], [142.279168, -8.934052], [142.279442, -8.934322], [142.279716, -8.934593], [142.27999, -8.934863], [142.280263, -8.935079], [142.280537, -8.935241], [142.28081, -8.935349], [142.281083, -8.935402], [142.281356, -8.935401], [142.281628, -8.9354], [142.281901, -8.935399], [142.282174, -8.935452], [142.282447, -8.935451], [142.28272, -8.93545], [142.282993, -8.935395], [142.283265, -8.93534], [142.283537, -8.935176], [142.28381, -8.935013], [142.284027, -8.934795], [142.28419, -8.934577], [142.284298, -8.934306], [142.284352, -8.934034], [142.284351, -8.933763], [142.284295, -8.933492], [142.284185, -8.933221], [142.284075, -8.93295], [142.283911, -8.932679], [142.283746, -8.932409], [142.283581, -8.932138], [142.283471, -8.931867], [142.283416, -8.931596], [142.283415, -8.931325], [142.283468, -8.931053], [142.283631, -8.930835], [142.283849, -8.930672], [142.284067, -8.930617], [142.28434, -8.930562], [142.284613, -8.930561], [142.284886, -8.930614], [142.285159, -8.930667], [142.285431, -8.930666], [142.285704, -8.93072], [142.285977, -8.930773], [142.28625, -8.930772], [142.286523, -8.930717], [142.286795, -8.930607], [142.287068, -8.930444], [142.28734, -8.930226], [142.287557, -8.929954], [142.287665, -8.929682], [142.287664, -8.929411], [142.287554, -8.92914], [142.287335, -8.928869], [142.287061, -8.928653], [142.286788, -8.928437], [142.286514, -8.928221], [142.286241, -8.928005], [142.285967, -8.927789], [142.285693, -8.927573], [142.28542, -8.927357], [142.285146, -8.927141], [142.284927, -8.926924], [142.284708, -8.926708], [142.284544, -8.926437], [142.284488, -8.926166], [142.284542, -8.925895], [142.28465, -8.925623], [142.284867, -8.925351], [142.285139, -8.925079], [142.285411, -8.924807], [142.285683, -8.924534], [142.285955, -8.924262], [142.286172, -8.92399], [142.286389, -8.923718], [142.286607, -8.923446], [142.286769, -8.923174], [142.286932, -8.922902], [142.287095, -8.922631], [142.287258, -8.922359], [142.287366, -8.922087], [142.287528, -8.921815], [142.287637, -8.921544], [142.287799, -8.921272], [142.287853, -8.921], [142.287852, -8.920729], [142.287796, -8.920458], [142.287741, -8.920187], [142.287685, -8.919916], [142.28763, -8.919645], [142.287629, -8.919373], [142.287628, -8.919102], [142.287573, -8.918831], [142.287462, -8.91856], [142.287407, -8.918289], [142.287351, -8.918018], [142.28735, -8.917746], [142.287459, -8.917475], [142.287622, -8.917257], [142.287839, -8.917094], [142.288112, -8.917038], [142.288385, -8.916983], [142.288657, -8.916982], [142.28893, -8.916981], [142.289203, -8.916926], [142.289475, -8.916817], [142.289748, -8.916707], [142.29002, -8.916544], [142.290292, -8.916326], [142.290509, -8.916108], [142.290727, -8.915836], [142.290835, -8.915564], [142.290943, -8.915292], [142.290997, -8.915021], [142.291105, -8.914749], [142.291158, -8.914478], [142.291321, -8.914206], [142.291484, -8.913934], [142.291701, -8.913662], [142.291919, -8.913444], [142.292191, -8.913281], [142.292463, -8.913171], [142.292736, -8.91317], [142.293009, -8.913278], [142.293282, -8.913331], [142.293555, -8.913384], [142.293828, -8.913492], [142.294101, -8.913545], [142.294374, -8.913544], [142.294647, -8.913543], [142.29492, -8.913542], [142.295193, -8.913487], [142.295465, -8.913378], [142.295737, -8.913214], [142.296009, -8.91305], [142.296281, -8.912832], [142.296553, -8.91256], [142.296771, -8.912288], [142.296988, -8.912016], [142.297205, -8.911744], [142.297422, -8.911472], [142.29764, -8.9112], [142.297912, -8.910928], [142.298183, -8.910655], [142.298455, -8.910383], [142.298727, -8.910111], [142.298999, -8.909839], [142.299271, -8.909621], [142.299543, -8.909403], [142.299815, -8.909185], [142.300087, -8.908967], [142.300359, -8.908749], [142.300631, -8.908476], [142.300903, -8.908204], [142.301175, -8.907986], [142.301447, -8.907877], [142.30172, -8.907876]], "type": "LineString"}, "id": "0", "properties": {"reach_id": "53151000375", "time_str": "2024-01-25T03:21:55Z", "width": "136.535662", "width_units": "m", "wse": "2.0944", "wse_units": "m"}, "type": "Feature"}, {"geometry": {"coordinates": [[142.235319, -8.956718], [142.235592, -8.956717], [142.235865, -8.956716], [142.236137, -8.956607], [142.23641, -8.956552], [142.236683, -8.956496], [142.236955, -8.956441], [142.237228, -8.95644], [142.237501, -8.956385], [142.237774, -8.95633], [142.238046, -8.956275], [142.238319, -8.956274], [142.238592, -8.956219], [142.238864, -8.956164], [142.239137, -8.956108], [142.23941, -8.956107], [142.239682, -8.955998], [142.239955, -8.955943], [142.240228, -8.955888], [142.240501, -8.955887], [142.240773, -8.955832], [142.241046, -8.955831], [142.241319, -8.955776], [142.241592, -8.955775], [142.241864, -8.955719], [142.242137, -8.955719], [142.24241, -8.955718], [142.242683, -8.955771], [142.242956, -8.955824], [142.243229, -8.955878], [142.243502, -8.955877], [142.243775, -8.955876], [142.244048, -8.955929], [142.244321, -8.955982], [142.244594, -8.95609], [142.244867, -8.956198], [142.24514, -8.956305], [142.245414, -8.956413], [142.245687, -8.95652], [142.24596, -8.956628], [142.246233, -8.956736], [142.246507, -8.956898], [142.24678, -8.957005], [142.247053, -8.957167], [142.247326, -8.957275], [142.2476, -8.957436], [142.247873, -8.957598], [142.248147, -8.95776], [142.24842, -8.957922], [142.248693, -8.958084], [142.248967, -8.958191], [142.24924, -8.958299], [142.249513, -8.958407], [142.249786, -8.95846], [142.250059, -8.958513], [142.250332, -8.958567], [142.250605, -8.958566], [142.250878, -8.958565], [142.251151, -8.958564], [142.251424, -8.958563], [142.251696, -8.958562], [142.251969, -8.958561], [142.252242, -8.958506], [142.252515, -8.958451], [142.252787, -8.958396], [142.25306, -8.958286], [142.253332, -8.958231], [142.253605, -8.958176], [142.253878, -8.958121], [142.25415, -8.958065], [142.254423, -8.95801], [142.254695, -8.957901], [142.254968, -8.957846], [142.255241, -8.95779], [142.255513, -8.957735], [142.255786, -8.957734], [142.256059, -8.957679], [142.256332, -8.957624], [142.256604, -8.957569], [142.256877, -8.957514], [142.25715, -8.957458], [142.257422, -8.957457], [142.257695, -8.957456], [142.257968, -8.957456], [142.258241, -8.957455], [142.258514, -8.957399], [142.258786, -8.957344], [142.259059, -8.957289], [142.259331, -8.95718], [142.259604, -8.95707], [142.259876, -8.956961], [142.260149, -8.956851], [142.260421, -8.956688], [142.260694, -8.956578], [142.260966, -8.956469], [142.261238, -8.956359], [142.261511, -8.956196], [142.261783, -8.956086], [142.262056, -8.956031], [142.262328, -8.955921], [142.262601, -8.955812], [142.262873, -8.955757], [142.263146, -8.955702], [142.263418, -8.955538], [142.263691, -8.955374], [142.263963, -8.955211], [142.264181, -8.954993], [142.264398, -8.954721], [142.264561, -8.954449], [142.264669, -8.954177], [142.264722, -8.953906], [142.264721, -8.953634], [142.264666, -8.953363], [142.264556, -8.953092], [142.2645, -8.952821], [142.26439, -8.95255], [142.26428, -8.95228], [142.264116, -8.952009], [142.263951, -8.951738], [142.263677, -8.951468], [142.263403, -8.951197], [142.26313, -8.950927], [142.26291, -8.950656], [142.262691, -8.950386], [142.262581, -8.950115], [142.262526, -8.949844], [142.262579, -8.949572], [142.262688, -8.949301], [142.262905, -8.949083], [142.263123, -8.948865], [142.263395, -8.948702], [142.263667, -8.948592], [142.26394, -8.948537], [142.264213, -8.948482], [142.264485, -8.948427], [142.264758, -8.948371], [142.265031, -8.948316], [142.265303, -8.948261], [142.265576, -8.948206], [142.265849, -8.948205], [142.266121, -8.948204], [142.266394, -8.948203], [142.266667, -8.948202], [142.26694, -8.948147], [142.267212, -8.948092], [142.267485, -8.947982], [142.267757, -8.947819], [142.268029, -8.947601], [142.268247, -8.947383], [142.26841, -8.947111], [142.268572, -8.946839], [142.268626, -8.946568], [142.268625, -8.946296], [142.268569, -8.946025], [142.268514, -8.945754], [142.268404, -8.945483], [142.268294, -8.945212], [142.268184, -8.944941], [142.268074, -8.94467], [142.267909, -8.9444], [142.267744, -8.944129], [142.26758, -8.943858], [142.267415, -8.943588], [142.267251, -8.943317], [142.26714, -8.943046], [142.266976, -8.942775], [142.266866, -8.942504], [142.266756, -8.942233], [142.2667, -8.941962], [142.266699, -8.941691], [142.266753, -8.941419], [142.266806, -8.941148], [142.266915, -8.940876], [142.267023, -8.940605], [142.267131, -8.940333], [142.267239, -8.940061], [142.267402, -8.93979], [142.26751, -8.939518], [142.267618, -8.939246], [142.267727, -8.938975], [142.267835, -8.938703], [142.267943, -8.938431], [142.268051, -8.93816], [142.268159, -8.937888], [142.268213, -8.937616], [142.268321, -8.937345], [142.268375, -8.937073], [142.268374, -8.936802], [142.268373, -8.936531], [142.268372, -8.936259], [142.268262, -8.935989], [142.268152, -8.935718], [142.268042, -8.935447], [142.267932, -8.935176], [142.267767, -8.934905], [142.267602, -8.934634], [142.267438, -8.934364], [142.267273, -8.934093], [142.267054, -8.933822], [142.266889, -8.933552], [142.266779, -8.933281], [142.266669, -8.93301], [142.266614, -8.932739], [142.266667, -8.932467], [142.266776, -8.932196], [142.266938, -8.931924], [142.267156, -8.931652], [142.267428, -8.931434], [142.2677, -8.931216], [142.267972, -8.931052], [142.268244, -8.930888], [142.268517, -8.930779], [142.268789, -8.930669], [142.269062, -8.930614], [142.269334, -8.930505], [142.269607, -8.93045], [142.269879, -8.93034], [142.270152, -8.930231], [142.270424, -8.930121], [142.270697, -8.930066], [142.270969, -8.929957], [142.271242, -8.929901], [142.271515, -8.929846], [142.271787, -8.929791], [142.27206, -8.929736], [142.272333, -8.929735], [142.272605, -8.92968], [142.272878, -8.929679], [142.273151, -8.929624], [142.273424, -8.929623], [142.273696, -8.929622], [142.273969, -8.929675], [142.274242, -8.929674], [142.274515, -8.929727], [142.274788, -8.929727], [142.275061, -8.92978], [142.275334, -8.929887], [142.275608, -8.930049], [142.275881, -8.930265], [142.276155, -8.930536], [142.276429, -8.930806], [142.276703, -8.931076], [142.276976, -8.931347], [142.277195, -8.931617], [142.277415, -8.931888], [142.277634, -8.932158], [142.277853, -8.932429], [142.278072, -8.932699], [142.278292, -8.93297], [142.278511, -8.93324], [142.27873, -8.933511], [142.278949, -8.933782], [142.279168, -8.934052], [142.279442, -8.934322], [142.279716, -8.934593], [142.27999, -8.934863], [142.280263, -8.935079], [142.280537, -8.935241], [142.28081, -8.935349], [142.281083, -8.935402], [142.281356, -8.935401], [142.281628, -8.9354], [142.281901, -8.935399], [142.282174, -8.935452], [142.282447, -8.935451], [142.28272, -8.93545], [142.282993, -8.935395], [142.283265, -8.93534], [142.283537, -8.935176], [142.28381, -8.935013], [142.284027, -8.934795], [142.28419, -8.934577], [142.284298, -8.934306], [142.284352, -8.934034], [142.284351, -8.933763], [142.284295, -8.933492], [142.284185, -8.933221], [142.284075, -8.93295], [142.283911, -8.932679], [142.283746, -8.932409], [142.283581, -8.932138], [142.283471, -8.931867], [142.283416, -8.931596], [142.283415, -8.931325], [142.283468, -8.931053], [142.283631, -8.930835], [142.283849, -8.930672], [142.284067, -8.930617], [142.28434, -8.930562], [142.284613, -8.930561], [142.284886, -8.930614], [142.285159, -8.930667], [142.285431, -8.930666], [142.285704, -8.93072], [142.285977, -8.930773], [142.28625, -8.930772], [142.286523, -8.930717], [142.286795, -8.930607], [142.287068, -8.930444], [142.28734, -8.930226], [142.287557, -8.929954], [142.287665, -8.929682], [142.287664, -8.929411], [142.287554, -8.92914], [142.287335, -8.928869], [142.287061, -8.928653], [142.286788, -8.928437], [142.286514, -8.928221], [142.286241, -8.928005], [142.285967, -8.927789], [142.285693, -8.927573], [142.28542, -8.927357], [142.285146, -8.927141], [142.284927, -8.926924], [142.284708, -8.926708], [142.284544, -8.926437], [142.284488, -8.926166], [142.284542, -8.925895], [142.28465, -8.925623], [142.284867, -8.925351], [142.285139, -8.925079], [142.285411, -8.924807], [142.285683, -8.924534], [142.285955, -8.924262], [142.286172, -8.92399], [142.286389, -8.923718], [142.286607, -8.923446], [142.286769, -8.923174], [142.286932, -8.922902], [142.287095, -8.922631], [142.287258, -8.922359], [142.287366, -8.922087], [142.287528, -8.921815], [142.287637, -8.921544], [142.287799, -8.921272], [142.287853, -8.921], [142.287852, -8.920729], [142.287796, -8.920458], [142.287741, -8.920187], [142.287685, -8.919916], [142.28763, -8.919645], [142.287629, -8.919373], [142.287628, -8.919102], [142.287573, -8.918831], [142.287462, -8.91856], [142.287407, -8.918289], [142.287351, -8.918018], [142.28735, -8.917746], [142.287459, -8.917475], [142.287622, -8.917257], [142.287839, -8.917094], [142.288112, -8.917038], [142.288385, -8.916983], [142.288657, -8.916982], [142.28893, -8.916981], [142.289203, -8.916926], [142.289475, -8.916817], [142.289748, -8.916707], [142.29002, -8.916544], [142.290292, -8.916326], [142.290509, -8.916108], [142.290727, -8.915836], [142.290835, -8.915564], [142.290943, -8.915292], [142.290997, -8.915021], [142.291105, -8.914749], [142.291158, -8.914478], [142.291321, -8.914206], [142.291484, -8.913934], [142.291701, -8.913662], [142.291919, -8.913444], [142.292191, -8.913281], [142.292463, -8.913171], [142.292736, -8.91317], [142.293009, -8.913278], [142.293282, -8.913331], [142.293555, -8.913384], [142.293828, -8.913492], [142.294101, -8.913545], [142.294374, -8.913544], [142.294647, -8.913543], [142.29492, -8.913542], [142.295193, -8.913487], [142.295465, -8.913378], [142.295737, -8.913214], [142.296009, -8.91305], [142.296281, -8.912832], [142.296553, -8.91256], [142.296771, -8.912288], [142.296988, -8.912016], [142.297205, -8.911744], [142.297422, -8.911472], [142.29764, -8.9112], [142.297912, -8.910928], [142.298183, -8.910655], [142.298455, -8.910383], [142.298727, -8.910111], [142.298999, -8.909839], [142.299271, -8.909621], [142.299543, -8.909403], [142.299815, -8.909185], [142.300087, -8.908967], [142.300359, -8.908749], [142.300631, -8.908476], [142.300903, -8.908204], [142.301175, -8.907986], [142.301447, -8.907877], [142.30172, -8.907876]], "type": "LineString"}, "id": "1", "properties": {"reach_id": "53151000375", "time_str": "2024-01-29T14:27:50Z", "width": "48.270187", "width_units": "m", "wse": "-1.6521", "wse_units": "m"}, "type": "Feature"}, {"geometry": {"coordinates": [[142.235319, -8.956718], [142.235592, -8.956717], [142.235865, -8.956716], [142.236137, -8.956607], [142.23641, -8.956552], [142.236683, -8.956496], [142.236955, -8.956441], [142.237228, -8.95644], [142.237501, -8.956385], [142.237774, -8.95633], [142.238046, -8.956275], [142.238319, -8.956274], [142.238592, -8.956219], [142.238864, -8.956164], [142.239137, -8.956108], [142.23941, -8.956107], [142.239682, -8.955998], [142.239955, -8.955943], [142.240228, -8.955888], [142.240501, -8.955887], [142.240773, -8.955832], [142.241046, -8.955831], [142.241319, -8.955776], [142.241592, -8.955775], [142.241864, -8.955719], [142.242137, -8.955719], [142.24241, -8.955718], [142.242683, -8.955771], [142.242956, -8.955824], [142.243229, -8.955878], [142.243502, -8.955877], [142.243775, -8.955876], [142.244048, -8.955929], [142.244321, -8.955982], [142.244594, -8.95609], [142.244867, -8.956198], [142.24514, -8.956305], [142.245414, -8.956413], [142.245687, -8.95652], [142.24596, -8.956628], [142.246233, -8.956736], [142.246507, -8.956898], [142.24678, -8.957005], [142.247053, -8.957167], [142.247326, -8.957275], [142.2476, -8.957436], [142.247873, -8.957598], [142.248147, -8.95776], [142.24842, -8.957922], [142.248693, -8.958084], [142.248967, -8.958191], [142.24924, -8.958299], [142.249513, -8.958407], [142.249786, -8.95846], [142.250059, -8.958513], [142.250332, -8.958567], [142.250605, -8.958566], [142.250878, -8.958565], [142.251151, -8.958564], [142.251424, -8.958563], [142.251696, -8.958562], [142.251969, -8.958561], [142.252242, -8.958506], [142.252515, -8.958451], [142.252787, -8.958396], [142.25306, -8.958286], [142.253332, -8.958231], [142.253605, -8.958176], [142.253878, -8.958121], [142.25415, -8.958065], [142.254423, -8.95801], [142.254695, -8.957901], [142.254968, -8.957846], [142.255241, -8.95779], [142.255513, -8.957735], [142.255786, -8.957734], [142.256059, -8.957679], [142.256332, -8.957624], [142.256604, -8.957569], [142.256877, -8.957514], [142.25715, -8.957458], [142.257422, -8.957457], [142.257695, -8.957456], [142.257968, -8.957456], [142.258241, -8.957455], [142.258514, -8.957399], [142.258786, -8.957344], [142.259059, -8.957289], [142.259331, -8.95718], [142.259604, -8.95707], [142.259876, -8.956961], [142.260149, -8.956851], [142.260421, -8.956688], [142.260694, -8.956578], [142.260966, -8.956469], [142.261238, -8.956359], [142.261511, -8.956196], [142.261783, -8.956086], [142.262056, -8.956031], [142.262328, -8.955921], [142.262601, -8.955812], [142.262873, -8.955757], [142.263146, -8.955702], [142.263418, -8.955538], [142.263691, -8.955374], [142.263963, -8.955211], [142.264181, -8.954993], [142.264398, -8.954721], [142.264561, -8.954449], [142.264669, -8.954177], [142.264722, -8.953906], [142.264721, -8.953634], [142.264666, -8.953363], [142.264556, -8.953092], [142.2645, -8.952821], [142.26439, -8.95255], [142.26428, -8.95228], [142.264116, -8.952009], [142.263951, -8.951738], [142.263677, -8.951468], [142.263403, -8.951197], [142.26313, -8.950927], [142.26291, -8.950656], [142.262691, -8.950386], [142.262581, -8.950115], [142.262526, -8.949844], [142.262579, -8.949572], [142.262688, -8.949301], [142.262905, -8.949083], [142.263123, -8.948865], [142.263395, -8.948702], [142.263667, -8.948592], [142.26394, -8.948537], [142.264213, -8.948482], [142.264485, -8.948427], [142.264758, -8.948371], [142.265031, -8.948316], [142.265303, -8.948261], [142.265576, -8.948206], [142.265849, -8.948205], [142.266121, -8.948204], [142.266394, -8.948203], [142.266667, -8.948202], [142.26694, -8.948147], [142.267212, -8.948092], [142.267485, -8.947982], [142.267757, -8.947819], [142.268029, -8.947601], [142.268247, -8.947383], [142.26841, -8.947111], [142.268572, -8.946839], [142.268626, -8.946568], [142.268625, -8.946296], [142.268569, -8.946025], [142.268514, -8.945754], [142.268404, -8.945483], [142.268294, -8.945212], [142.268184, -8.944941], [142.268074, -8.94467], [142.267909, -8.9444], [142.267744, -8.944129], [142.26758, -8.943858], [142.267415, -8.943588], [142.267251, -8.943317], [142.26714, -8.943046], [142.266976, -8.942775], [142.266866, -8.942504], [142.266756, -8.942233], [142.2667, -8.941962], [142.266699, -8.941691], [142.266753, -8.941419], [142.266806, -8.941148], [142.266915, -8.940876], [142.267023, -8.940605], [142.267131, -8.940333], [142.267239, -8.940061], [142.267402, -8.93979], [142.26751, -8.939518], [142.267618, -8.939246], [142.267727, -8.938975], [142.267835, -8.938703], [142.267943, -8.938431], [142.268051, -8.93816], [142.268159, -8.937888], [142.268213, -8.937616], [142.268321, -8.937345], [142.268375, -8.937073], [142.268374, -8.936802], [142.268373, -8.936531], [142.268372, -8.936259], [142.268262, -8.935989], [142.268152, -8.935718], [142.268042, -8.935447], [142.267932, -8.935176], [142.267767, -8.934905], [142.267602, -8.934634], [142.267438, -8.934364], [142.267273, -8.934093], [142.267054, -8.933822], [142.266889, -8.933552], [142.266779, -8.933281], [142.266669, -8.93301], [142.266614, -8.932739], [142.266667, -8.932467], [142.266776, -8.932196], [142.266938, -8.931924], [142.267156, -8.931652], [142.267428, -8.931434], [142.2677, -8.931216], [142.267972, -8.931052], [142.268244, -8.930888], [142.268517, -8.930779], [142.268789, -8.930669], [142.269062, -8.930614], [142.269334, -8.930505], [142.269607, -8.93045], [142.269879, -8.93034], [142.270152, -8.930231], [142.270424, -8.930121], [142.270697, -8.930066], [142.270969, -8.929957], [142.271242, -8.929901], [142.271515, -8.929846], [142.271787, -8.929791], [142.27206, -8.929736], [142.272333, -8.929735], [142.272605, -8.92968], [142.272878, -8.929679], [142.273151, -8.929624], [142.273424, -8.929623], [142.273696, -8.929622], [142.273969, -8.929675], [142.274242, -8.929674], [142.274515, -8.929727], [142.274788, -8.929727], [142.275061, -8.92978], [142.275334, -8.929887], [142.275608, -8.930049], [142.275881, -8.930265], [142.276155, -8.930536], [142.276429, -8.930806], [142.276703, -8.931076], [142.276976, -8.931347], [142.277195, -8.931617], [142.277415, -8.931888], [142.277634, -8.932158], [142.277853, -8.932429], [142.278072, -8.932699], [142.278292, -8.93297], [142.278511, -8.93324], [142.27873, -8.933511], [142.278949, -8.933782], [142.279168, -8.934052], [142.279442, -8.934322], [142.279716, -8.934593], [142.27999, -8.934863], [142.280263, -8.935079], [142.280537, -8.935241], [142.28081, -8.935349], [142.281083, -8.935402], [142.281356, -8.935401], [142.281628, -8.9354], [142.281901, -8.935399], [142.282174, -8.935452], [142.282447, -8.935451], [142.28272, -8.93545], [142.282993, -8.935395], [142.283265, -8.93534], [142.283537, -8.935176], [142.28381, -8.935013], [142.284027, -8.934795], [142.28419, -8.934577], [142.284298, -8.934306], [142.284352, -8.934034], [142.284351, -8.933763], [142.284295, -8.933492], [142.284185, -8.933221], [142.284075, -8.93295], [142.283911, -8.932679], [142.283746, -8.932409], [142.283581, -8.932138], [142.283471, -8.931867], [142.283416, -8.931596], [142.283415, -8.931325], [142.283468, -8.931053], [142.283631, -8.930835], [142.283849, -8.930672], [142.284067, -8.930617], [142.28434, -8.930562], [142.284613, -8.930561], [142.284886, -8.930614], [142.285159, -8.930667], [142.285431, -8.930666], [142.285704, -8.93072], [142.285977, -8.930773], [142.28625, -8.930772], [142.286523, -8.930717], [142.286795, -8.930607], [142.287068, -8.930444], [142.28734, -8.930226], [142.287557, -8.929954], [142.287665, -8.929682], [142.287664, -8.929411], [142.287554, -8.92914], [142.287335, -8.928869], [142.287061, -8.928653], [142.286788, -8.928437], [142.286514, -8.928221], [142.286241, -8.928005], [142.285967, -8.927789], [142.285693, -8.927573], [142.28542, -8.927357], [142.285146, -8.927141], [142.284927, -8.926924], [142.284708, -8.926708], [142.284544, -8.926437], [142.284488, -8.926166], [142.284542, -8.925895], [142.28465, -8.925623], [142.284867, -8.925351], [142.285139, -8.925079], [142.285411, -8.924807], [142.285683, -8.924534], [142.285955, -8.924262], [142.286172, -8.92399], [142.286389, -8.923718], [142.286607, -8.923446], [142.286769, -8.923174], [142.286932, -8.922902], [142.287095, -8.922631], [142.287258, -8.922359], [142.287366, -8.922087], [142.287528, -8.921815], [142.287637, -8.921544], [142.287799, -8.921272], [142.287853, -8.921], [142.287852, -8.920729], [142.287796, -8.920458], [142.287741, -8.920187], [142.287685, -8.919916], [142.28763, -8.919645], [142.287629, -8.919373], [142.287628, -8.919102], [142.287573, -8.918831], [142.287462, -8.91856], [142.287407, -8.918289], [142.287351, -8.918018], [142.28735, -8.917746], [142.287459, -8.917475], [142.287622, -8.917257], [142.287839, -8.917094], [142.288112, -8.917038], [142.288385, -8.916983], [142.288657, -8.916982], [142.28893, -8.916981], [142.289203, -8.916926], [142.289475, -8.916817], [142.289748, -8.916707], [142.29002, -8.916544], [142.290292, -8.916326], [142.290509, -8.916108], [142.290727, -8.915836], [142.290835, -8.915564], [142.290943, -8.915292], [142.290997, -8.915021], [142.291105, -8.914749], [142.291158, -8.914478], [142.291321, -8.914206], [142.291484, -8.913934], [142.291701, -8.913662], [142.291919, -8.913444], [142.292191, -8.913281], [142.292463, -8.913171], [142.292736, -8.91317], [142.293009, -8.913278], [142.293282, -8.913331], [142.293555, -8.913384], [142.293828, -8.913492], [142.294101, -8.913545], [142.294374, -8.913544], [142.294647, -8.913543], [142.29492, -8.913542], [142.295193, -8.913487], [142.295465, -8.913378], [142.295737, -8.913214], [142.296009, -8.91305], [142.296281, -8.912832], [142.296553, -8.91256], [142.296771, -8.912288], [142.296988, -8.912016], [142.297205, -8.911744], [142.297422, -8.911472], [142.29764, -8.9112], [142.297912, -8.910928], [142.298183, -8.910655], [142.298455, -8.910383], [142.298727, -8.910111], [142.298999, -8.909839], [142.299271, -8.909621], [142.299543, -8.909403], [142.299815, -8.909185], [142.300087, -8.908967], [142.300359, -8.908749], [142.300631, -8.908476], [142.300903, -8.908204], [142.301175, -8.907986], [142.301447, -8.907877], [142.30172, -8.907876]], "type": "LineString"}, "id": "2", "properties": {"reach_id": "53151000375", "time_str": "2024-02-15T00:07:00Z", "width": "107.174234", "width_units": "m", "wse": "1.9637", "wse_units": "m"}, "type": "Feature"}, {"geometry": {"coordinates": [[142.235319, -8.956718], [142.235592, -8.956717], [142.235865, -8.956716], [142.236137, -8.956607], [142.23641, -8.956552], [142.236683, -8.956496], [142.236955, -8.956441], [142.237228, -8.95644], [142.237501, -8.956385], [142.237774, -8.95633], [142.238046, -8.956275], [142.238319, -8.956274], [142.238592, -8.956219], [142.238864, -8.956164], [142.239137, -8.956108], [142.23941, -8.956107], [142.239682, -8.955998], [142.239955, -8.955943], [142.240228, -8.955888], [142.240501, -8.955887], [142.240773, -8.955832], [142.241046, -8.955831], [142.241319, -8.955776], [142.241592, -8.955775], [142.241864, -8.955719], [142.242137, -8.955719], [142.24241, -8.955718], [142.242683, -8.955771], [142.242956, -8.955824], [142.243229, -8.955878], [142.243502, -8.955877], [142.243775, -8.955876], [142.244048, -8.955929], [142.244321, -8.955982], [142.244594, -8.95609], [142.244867, -8.956198], [142.24514, -8.956305], [142.245414, -8.956413], [142.245687, -8.95652], [142.24596, -8.956628], [142.246233, -8.956736], [142.246507, -8.956898], [142.24678, -8.957005], [142.247053, -8.957167], [142.247326, -8.957275], [142.2476, -8.957436], [142.247873, -8.957598], [142.248147, -8.95776], [142.24842, -8.957922], [142.248693, -8.958084], [142.248967, -8.958191], [142.24924, -8.958299], [142.249513, -8.958407], [142.249786, -8.95846], [142.250059, -8.958513], [142.250332, -8.958567], [142.250605, -8.958566], [142.250878, -8.958565], [142.251151, -8.958564], [142.251424, -8.958563], [142.251696, -8.958562], [142.251969, -8.958561], [142.252242, -8.958506], [142.252515, -8.958451], [142.252787, -8.958396], [142.25306, -8.958286], [142.253332, -8.958231], [142.253605, -8.958176], [142.253878, -8.958121], [142.25415, -8.958065], [142.254423, -8.95801], [142.254695, -8.957901], [142.254968, -8.957846], [142.255241, -8.95779], [142.255513, -8.957735], [142.255786, -8.957734], [142.256059, -8.957679], [142.256332, -8.957624], [142.256604, -8.957569], [142.256877, -8.957514], [142.25715, -8.957458], [142.257422, -8.957457], [142.257695, -8.957456], [142.257968, -8.957456], [142.258241, -8.957455], [142.258514, -8.957399], [142.258786, -8.957344], [142.259059, -8.957289], [142.259331, -8.95718], [142.259604, -8.95707], [142.259876, -8.956961], [142.260149, -8.956851], [142.260421, -8.956688], [142.260694, -8.956578], [142.260966, -8.956469], [142.261238, -8.956359], [142.261511, -8.956196], [142.261783, -8.956086], [142.262056, -8.956031], [142.262328, -8.955921], [142.262601, -8.955812], [142.262873, -8.955757], [142.263146, -8.955702], [142.263418, -8.955538], [142.263691, -8.955374], [142.263963, -8.955211], [142.264181, -8.954993], [142.264398, -8.954721], [142.264561, -8.954449], [142.264669, -8.954177], [142.264722, -8.953906], [142.264721, -8.953634], [142.264666, -8.953363], [142.264556, -8.953092], [142.2645, -8.952821], [142.26439, -8.95255], [142.26428, -8.95228], [142.264116, -8.952009], [142.263951, -8.951738], [142.263677, -8.951468], [142.263403, -8.951197], [142.26313, -8.950927], [142.26291, -8.950656], [142.262691, -8.950386], [142.262581, -8.950115], [142.262526, -8.949844], [142.262579, -8.949572], [142.262688, -8.949301], [142.262905, -8.949083], [142.263123, -8.948865], [142.263395, -8.948702], [142.263667, -8.948592], [142.26394, -8.948537], [142.264213, -8.948482], [142.264485, -8.948427], [142.264758, -8.948371], [142.265031, -8.948316], [142.265303, -8.948261], [142.265576, -8.948206], [142.265849, -8.948205], [142.266121, -8.948204], [142.266394, -8.948203], [142.266667, -8.948202], [142.26694, -8.948147], [142.267212, -8.948092], [142.267485, -8.947982], [142.267757, -8.947819], [142.268029, -8.947601], [142.268247, -8.947383], [142.26841, -8.947111], [142.268572, -8.946839], [142.268626, -8.946568], [142.268625, -8.946296], [142.268569, -8.946025], [142.268514, -8.945754], [142.268404, -8.945483], [142.268294, -8.945212], [142.268184, -8.944941], [142.268074, -8.94467], [142.267909, -8.9444], [142.267744, -8.944129], [142.26758, -8.943858], [142.267415, -8.943588], [142.267251, -8.943317], [142.26714, -8.943046], [142.266976, -8.942775], [142.266866, -8.942504], [142.266756, -8.942233], [142.2667, -8.941962], [142.266699, -8.941691], [142.266753, -8.941419], [142.266806, -8.941148], [142.266915, -8.940876], [142.267023, -8.940605], [142.267131, -8.940333], [142.267239, -8.940061], [142.267402, -8.93979], [142.26751, -8.939518], [142.267618, -8.939246], [142.267727, -8.938975], [142.267835, -8.938703], [142.267943, -8.938431], [142.268051, -8.93816], [142.268159, -8.937888], [142.268213, -8.937616], [142.268321, -8.937345], [142.268375, -8.937073], [142.268374, -8.936802], [142.268373, -8.936531], [142.268372, -8.936259], [142.268262, -8.935989], [142.268152, -8.935718], [142.268042, -8.935447], [142.267932, -8.935176], [142.267767, -8.934905], [142.267602, -8.934634], [142.267438, -8.934364], [142.267273, -8.934093], [142.267054, -8.933822], [142.266889, -8.933552], [142.266779, -8.933281], [142.266669, -8.93301], [142.266614, -8.932739], [142.266667, -8.932467], [142.266776, -8.932196], [142.266938, -8.931924], [142.267156, -8.931652], [142.267428, -8.931434], [142.2677, -8.931216], [142.267972, -8.931052], [142.268244, -8.930888], [142.268517, -8.930779], [142.268789, -8.930669], [142.269062, -8.930614], [142.269334, -8.930505], [142.269607, -8.93045], [142.269879, -8.93034], [142.270152, -8.930231], [142.270424, -8.930121], [142.270697, -8.930066], [142.270969, -8.929957], [142.271242, -8.929901], [142.271515, -8.929846], [142.271787, -8.929791], [142.27206, -8.929736], [142.272333, -8.929735], [142.272605, -8.92968], [142.272878, -8.929679], [142.273151, -8.929624], [142.273424, -8.929623], [142.273696, -8.929622], [142.273969, -8.929675], [142.274242, -8.929674], [142.274515, -8.929727], [142.274788, -8.929727], [142.275061, -8.92978], [142.275334, -8.929887], [142.275608, -8.930049], [142.275881, -8.930265], [142.276155, -8.930536], [142.276429, -8.930806], [142.276703, -8.931076], [142.276976, -8.931347], [142.277195, -8.931617], [142.277415, -8.931888], [142.277634, -8.932158], [142.277853, -8.932429], [142.278072, -8.932699], [142.278292, -8.93297], [142.278511, -8.93324], [142.27873, -8.933511], [142.278949, -8.933782], [142.279168, -8.934052], [142.279442, -8.934322], [142.279716, -8.934593], [142.27999, -8.934863], [142.280263, -8.935079], [142.280537, -8.935241], [142.28081, -8.935349], [142.281083, -8.935402], [142.281356, -8.935401], [142.281628, -8.9354], [142.281901, -8.935399], [142.282174, -8.935452], [142.282447, -8.935451], [142.28272, -8.93545], [142.282993, -8.935395], [142.283265, -8.93534], [142.283537, -8.935176], [142.28381, -8.935013], [142.284027, -8.934795], [142.28419, -8.934577], [142.284298, -8.934306], [142.284352, -8.934034], [142.284351, -8.933763], [142.284295, -8.933492], [142.284185, -8.933221], [142.284075, -8.93295], [142.283911, -8.932679], [142.283746, -8.932409], [142.283581, -8.932138], [142.283471, -8.931867], [142.283416, -8.931596], [142.283415, -8.931325], [142.283468, -8.931053], [142.283631, -8.930835], [142.283849, -8.930672], [142.284067, -8.930617], [142.28434, -8.930562], [142.284613, -8.930561], [142.284886, -8.930614], [142.285159, -8.930667], [142.285431, -8.930666], [142.285704, -8.93072], [142.285977, -8.930773], [142.28625, -8.930772], [142.286523, -8.930717], [142.286795, -8.930607], [142.287068, -8.930444], [142.28734, -8.930226], [142.287557, -8.929954], [142.287665, -8.929682], [142.287664, -8.929411], [142.287554, -8.92914], [142.287335, -8.928869], [142.287061, -8.928653], [142.286788, -8.928437], [142.286514, -8.928221], [142.286241, -8.928005], [142.285967, -8.927789], [142.285693, -8.927573], [142.28542, -8.927357], [142.285146, -8.927141], [142.284927, -8.926924], [142.284708, -8.926708], [142.284544, -8.926437], [142.284488, -8.926166], [142.284542, -8.925895], [142.28465, -8.925623], [142.284867, -8.925351], [142.285139, -8.925079], [142.285411, -8.924807], [142.285683, -8.924534], [142.285955, -8.924262], [142.286172, -8.92399], [142.286389, -8.923718], [142.286607, -8.923446], [142.286769, -8.923174], [142.286932, -8.922902], [142.287095, -8.922631], [142.287258, -8.922359], [142.287366, -8.922087], [142.287528, -8.921815], [142.287637, -8.921544], [142.287799, -8.921272], [142.287853, -8.921], [142.287852, -8.920729], [142.287796, -8.920458], [142.287741, -8.920187], [142.287685, -8.919916], [142.28763, -8.919645], [142.287629, -8.919373], [142.287628, -8.919102], [142.287573, -8.918831], [142.287462, -8.91856], [142.287407, -8.918289], [142.287351, -8.918018], [142.28735, -8.917746], [142.287459, -8.917475], [142.287622, -8.917257], [142.287839, -8.917094], [142.288112, -8.917038], [142.288385, -8.916983], [142.288657, -8.916982], [142.28893, -8.916981], [142.289203, -8.916926], [142.289475, -8.916817], [142.289748, -8.916707], [142.29002, -8.916544], [142.290292, -8.916326], [142.290509, -8.916108], [142.290727, -8.915836], [142.290835, -8.915564], [142.290943, -8.915292], [142.290997, -8.915021], [142.291105, -8.914749], [142.291158, -8.914478], [142.291321, -8.914206], [142.291484, -8.913934], [142.291701, -8.913662], [142.291919, -8.913444], [142.292191, -8.913281], [142.292463, -8.913171], [142.292736, -8.91317], [142.293009, -8.913278], [142.293282, -8.913331], [142.293555, -8.913384], [142.293828, -8.913492], [142.294101, -8.913545], [142.294374, -8.913544], [142.294647, -8.913543], [142.29492, -8.913542], [142.295193, -8.913487], [142.295465, -8.913378], [142.295737, -8.913214], [142.296009, -8.91305], [142.296281, -8.912832], [142.296553, -8.91256], [142.296771, -8.912288], [142.296988, -8.912016], [142.297205, -8.911744], [142.297422, -8.911472], [142.29764, -8.9112], [142.297912, -8.910928], [142.298183, -8.910655], [142.298455, -8.910383], [142.298727, -8.910111], [142.298999, -8.909839], [142.299271, -8.909621], [142.299543, -8.909403], [142.299815, -8.909185], [142.300087, -8.908967], [142.300359, -8.908749], [142.300631, -8.908476], [142.300903, -8.908204], [142.301175, -8.907986], [142.301447, -8.907877], [142.30172, -8.907876]], "type": "LineString"}, "id": "3", "properties": {"reach_id": "53151000375", "time_str": "2024-02-19T11:12:55Z", "width": "38.60191", "width_units": "m", "wse": "-3.0532", "wse_units": "m"}, "type": "Feature"}, {"geometry": {"coordinates": [[142.235319, -8.956718], [142.235592, -8.956717], [142.235865, -8.956716], [142.236137, -8.956607], [142.23641, -8.956552], [142.236683, -8.956496], [142.236955, -8.956441], [142.237228, -8.95644], [142.237501, -8.956385], [142.237774, -8.95633], [142.238046, -8.956275], [142.238319, -8.956274], [142.238592, -8.956219], [142.238864, -8.956164], [142.239137, -8.956108], [142.23941, -8.956107], [142.239682, -8.955998], [142.239955, -8.955943], [142.240228, -8.955888], [142.240501, -8.955887], [142.240773, -8.955832], [142.241046, -8.955831], [142.241319, -8.955776], [142.241592, -8.955775], [142.241864, -8.955719], [142.242137, -8.955719], [142.24241, -8.955718], [142.242683, -8.955771], [142.242956, -8.955824], [142.243229, -8.955878], [142.243502, -8.955877], [142.243775, -8.955876], [142.244048, -8.955929], [142.244321, -8.955982], [142.244594, -8.95609], [142.244867, -8.956198], [142.24514, -8.956305], [142.245414, -8.956413], [142.245687, -8.95652], [142.24596, -8.956628], [142.246233, -8.956736], [142.246507, -8.956898], [142.24678, -8.957005], [142.247053, -8.957167], [142.247326, -8.957275], [142.2476, -8.957436], [142.247873, -8.957598], [142.248147, -8.95776], [142.24842, -8.957922], [142.248693, -8.958084], [142.248967, -8.958191], [142.24924, -8.958299], [142.249513, -8.958407], [142.249786, -8.95846], [142.250059, -8.958513], [142.250332, -8.958567], [142.250605, -8.958566], [142.250878, -8.958565], [142.251151, -8.958564], [142.251424, -8.958563], [142.251696, -8.958562], [142.251969, -8.958561], [142.252242, -8.958506], [142.252515, -8.958451], [142.252787, -8.958396], [142.25306, -8.958286], [142.253332, -8.958231], [142.253605, -8.958176], [142.253878, -8.958121], [142.25415, -8.958065], [142.254423, -8.95801], [142.254695, -8.957901], [142.254968, -8.957846], [142.255241, -8.95779], [142.255513, -8.957735], [142.255786, -8.957734], [142.256059, -8.957679], [142.256332, -8.957624], [142.256604, -8.957569], [142.256877, -8.957514], [142.25715, -8.957458], [142.257422, -8.957457], [142.257695, -8.957456], [142.257968, -8.957456], [142.258241, -8.957455], [142.258514, -8.957399], [142.258786, -8.957344], [142.259059, -8.957289], [142.259331, -8.95718], [142.259604, -8.95707], [142.259876, -8.956961], [142.260149, -8.956851], [142.260421, -8.956688], [142.260694, -8.956578], [142.260966, -8.956469], [142.261238, -8.956359], [142.261511, -8.956196], [142.261783, -8.956086], [142.262056, -8.956031], [142.262328, -8.955921], [142.262601, -8.955812], [142.262873, -8.955757], [142.263146, -8.955702], [142.263418, -8.955538], [142.263691, -8.955374], [142.263963, -8.955211], [142.264181, -8.954993], [142.264398, -8.954721], [142.264561, -8.954449], [142.264669, -8.954177], [142.264722, -8.953906], [142.264721, -8.953634], [142.264666, -8.953363], [142.264556, -8.953092], [142.2645, -8.952821], [142.26439, -8.95255], [142.26428, -8.95228], [142.264116, -8.952009], [142.263951, -8.951738], [142.263677, -8.951468], [142.263403, -8.951197], [142.26313, -8.950927], [142.26291, -8.950656], [142.262691, -8.950386], [142.262581, -8.950115], [142.262526, -8.949844], [142.262579, -8.949572], [142.262688, -8.949301], [142.262905, -8.949083], [142.263123, -8.948865], [142.263395, -8.948702], [142.263667, -8.948592], [142.26394, -8.948537], [142.264213, -8.948482], [142.264485, -8.948427], [142.264758, -8.948371], [142.265031, -8.948316], [142.265303, -8.948261], [142.265576, -8.948206], [142.265849, -8.948205], [142.266121, -8.948204], [142.266394, -8.948203], [142.266667, -8.948202], [142.26694, -8.948147], [142.267212, -8.948092], [142.267485, -8.947982], [142.267757, -8.947819], [142.268029, -8.947601], [142.268247, -8.947383], [142.26841, -8.947111], [142.268572, -8.946839], [142.268626, -8.946568], [142.268625, -8.946296], [142.268569, -8.946025], [142.268514, -8.945754], [142.268404, -8.945483], [142.268294, -8.945212], [142.268184, -8.944941], [142.268074, -8.94467], [142.267909, -8.9444], [142.267744, -8.944129], [142.26758, -8.943858], [142.267415, -8.943588], [142.267251, -8.943317], [142.26714, -8.943046], [142.266976, -8.942775], [142.266866, -8.942504], [142.266756, -8.942233], [142.2667, -8.941962], [142.266699, -8.941691], [142.266753, -8.941419], [142.266806, -8.941148], [142.266915, -8.940876], [142.267023, -8.940605], [142.267131, -8.940333], [142.267239, -8.940061], [142.267402, -8.93979], [142.26751, -8.939518], [142.267618, -8.939246], [142.267727, -8.938975], [142.267835, -8.938703], [142.267943, -8.938431], [142.268051, -8.93816], [142.268159, -8.937888], [142.268213, -8.937616], [142.268321, -8.937345], [142.268375, -8.937073], [142.268374, -8.936802], [142.268373, -8.936531], [142.268372, -8.936259], [142.268262, -8.935989], [142.268152, -8.935718], [142.268042, -8.935447], [142.267932, -8.935176], [142.267767, -8.934905], [142.267602, -8.934634], [142.267438, -8.934364], [142.267273, -8.934093], [142.267054, -8.933822], [142.266889, -8.933552], [142.266779, -8.933281], [142.266669, -8.93301], [142.266614, -8.932739], [142.266667, -8.932467], [142.266776, -8.932196], [142.266938, -8.931924], [142.267156, -8.931652], [142.267428, -8.931434], [142.2677, -8.931216], [142.267972, -8.931052], [142.268244, -8.930888], [142.268517, -8.930779], [142.268789, -8.930669], [142.269062, -8.930614], [142.269334, -8.930505], [142.269607, -8.93045], [142.269879, -8.93034], [142.270152, -8.930231], [142.270424, -8.930121], [142.270697, -8.930066], [142.270969, -8.929957], [142.271242, -8.929901], [142.271515, -8.929846], [142.271787, -8.929791], [142.27206, -8.929736], [142.272333, -8.929735], [142.272605, -8.92968], [142.272878, -8.929679], [142.273151, -8.929624], [142.273424, -8.929623], [142.273696, -8.929622], [142.273969, -8.929675], [142.274242, -8.929674], [142.274515, -8.929727], [142.274788, -8.929727], [142.275061, -8.92978], [142.275334, -8.929887], [142.275608, -8.930049], [142.275881, -8.930265], [142.276155, -8.930536], [142.276429, -8.930806], [142.276703, -8.931076], [142.276976, -8.931347], [142.277195, -8.931617], [142.277415, -8.931888], [142.277634, -8.932158], [142.277853, -8.932429], [142.278072, -8.932699], [142.278292, -8.93297], [142.278511, -8.93324], [142.27873, -8.933511], [142.278949, -8.933782], [142.279168, -8.934052], [142.279442, -8.934322], [142.279716, -8.934593], [142.27999, -8.934863], [142.280263, -8.935079], [142.280537, -8.935241], [142.28081, -8.935349], [142.281083, -8.935402], [142.281356, -8.935401], [142.281628, -8.9354], [142.281901, -8.935399], [142.282174, -8.935452], [142.282447, -8.935451], [142.28272, -8.93545], [142.282993, -8.935395], [142.283265, -8.93534], [142.283537, -8.935176], [142.28381, -8.935013], [142.284027, -8.934795], [142.28419, -8.934577], [142.284298, -8.934306], [142.284352, -8.934034], [142.284351, -8.933763], [142.284295, -8.933492], [142.284185, -8.933221], [142.284075, -8.93295], [142.283911, -8.932679], [142.283746, -8.932409], [142.283581, -8.932138], [142.283471, -8.931867], [142.283416, -8.931596], [142.283415, -8.931325], [142.283468, -8.931053], [142.283631, -8.930835], [142.283849, -8.930672], [142.284067, -8.930617], [142.28434, -8.930562], [142.284613, -8.930561], [142.284886, -8.930614], [142.285159, -8.930667], [142.285431, -8.930666], [142.285704, -8.93072], [142.285977, -8.930773], [142.28625, -8.930772], [142.286523, -8.930717], [142.286795, -8.930607], [142.287068, -8.930444], [142.28734, -8.930226], [142.287557, -8.929954], [142.287665, -8.929682], [142.287664, -8.929411], [142.287554, -8.92914], [142.287335, -8.928869], [142.287061, -8.928653], [142.286788, -8.928437], [142.286514, -8.928221], [142.286241, -8.928005], [142.285967, -8.927789], [142.285693, -8.927573], [142.28542, -8.927357], [142.285146, -8.927141], [142.284927, -8.926924], [142.284708, -8.926708], [142.284544, -8.926437], [142.284488, -8.926166], [142.284542, -8.925895], [142.28465, -8.925623], [142.284867, -8.925351], [142.285139, -8.925079], [142.285411, -8.924807], [142.285683, -8.924534], [142.285955, -8.924262], [142.286172, -8.92399], [142.286389, -8.923718], [142.286607, -8.923446], [142.286769, -8.923174], [142.286932, -8.922902], [142.287095, -8.922631], [142.287258, -8.922359], [142.287366, -8.922087], [142.287528, -8.921815], [142.287637, -8.921544], [142.287799, -8.921272], [142.287853, -8.921], [142.287852, -8.920729], [142.287796, -8.920458], [142.287741, -8.920187], [142.287685, -8.919916], [142.28763, -8.919645], [142.287629, -8.919373], [142.287628, -8.919102], [142.287573, -8.918831], [142.287462, -8.91856], [142.287407, -8.918289], [142.287351, -8.918018], [142.28735, -8.917746], [142.287459, -8.917475], [142.287622, -8.917257], [142.287839, -8.917094], [142.288112, -8.917038], [142.288385, -8.916983], [142.288657, -8.916982], [142.28893, -8.916981], [142.289203, -8.916926], [142.289475, -8.916817], [142.289748, -8.916707], [142.29002, -8.916544], [142.290292, -8.916326], [142.290509, -8.916108], [142.290727, -8.915836], [142.290835, -8.915564], [142.290943, -8.915292], [142.290997, -8.915021], [142.291105, -8.914749], [142.291158, -8.914478], [142.291321, -8.914206], [142.291484, -8.913934], [142.291701, -8.913662], [142.291919, -8.913444], [142.292191, -8.913281], [142.292463, -8.913171], [142.292736, -8.91317], [142.293009, -8.913278], [142.293282, -8.913331], [142.293555, -8.913384], [142.293828, -8.913492], [142.294101, -8.913545], [142.294374, -8.913544], [142.294647, -8.913543], [142.29492, -8.913542], [142.295193, -8.913487], [142.295465, -8.913378], [142.295737, -8.913214], [142.296009, -8.91305], [142.296281, -8.912832], [142.296553, -8.91256], [142.296771, -8.912288], [142.296988, -8.912016], [142.297205, -8.911744], [142.297422, -8.911472], [142.29764, -8.9112], [142.297912, -8.910928], [142.298183, -8.910655], [142.298455, -8.910383], [142.298727, -8.910111], [142.298999, -8.909839], [142.299271, -8.909621], [142.299543, -8.909403], [142.299815, -8.909185], [142.300087, -8.908967], [142.300359, -8.908749], [142.300631, -8.908476], [142.300903, -8.908204], [142.301175, -8.907986], [142.301447, -8.907877], [142.30172, -8.907876]], "type": "LineString"}, "id": "4", "properties": {"reach_id": "53151000375", "time_str": "2024-03-06T20:52:04Z", "width": "48.492057", "width_units": "m", "wse": "-1.1387", "wse_units": "m"}, "type": "Feature"}, {"geometry": {"coordinates": [[142.235319, -8.956718], [142.235592, -8.956717], [142.235865, -8.956716], [142.236137, -8.956607], [142.23641, -8.956552], [142.236683, -8.956496], [142.236955, -8.956441], [142.237228, -8.95644], [142.237501, -8.956385], [142.237774, -8.95633], [142.238046, -8.956275], [142.238319, -8.956274], [142.238592, -8.956219], [142.238864, -8.956164], [142.239137, -8.956108], [142.23941, -8.956107], [142.239682, -8.955998], [142.239955, -8.955943], [142.240228, -8.955888], [142.240501, -8.955887], [142.240773, -8.955832], [142.241046, -8.955831], [142.241319, -8.955776], [142.241592, -8.955775], [142.241864, -8.955719], [142.242137, -8.955719], [142.24241, -8.955718], [142.242683, -8.955771], [142.242956, -8.955824], [142.243229, -8.955878], [142.243502, -8.955877], [142.243775, -8.955876], [142.244048, -8.955929], [142.244321, -8.955982], [142.244594, -8.95609], [142.244867, -8.956198], [142.24514, -8.956305], [142.245414, -8.956413], [142.245687, -8.95652], [142.24596, -8.956628], [142.246233, -8.956736], [142.246507, -8.956898], [142.24678, -8.957005], [142.247053, -8.957167], [142.247326, -8.957275], [142.2476, -8.957436], [142.247873, -8.957598], [142.248147, -8.95776], [142.24842, -8.957922], [142.248693, -8.958084], [142.248967, -8.958191], [142.24924, -8.958299], [142.249513, -8.958407], [142.249786, -8.95846], [142.250059, -8.958513], [142.250332, -8.958567], [142.250605, -8.958566], [142.250878, -8.958565], [142.251151, -8.958564], [142.251424, -8.958563], [142.251696, -8.958562], [142.251969, -8.958561], [142.252242, -8.958506], [142.252515, -8.958451], [142.252787, -8.958396], [142.25306, -8.958286], [142.253332, -8.958231], [142.253605, -8.958176], [142.253878, -8.958121], [142.25415, -8.958065], [142.254423, -8.95801], [142.254695, -8.957901], [142.254968, -8.957846], [142.255241, -8.95779], [142.255513, -8.957735], [142.255786, -8.957734], [142.256059, -8.957679], [142.256332, -8.957624], [142.256604, -8.957569], [142.256877, -8.957514], [142.25715, -8.957458], [142.257422, -8.957457], [142.257695, -8.957456], [142.257968, -8.957456], [142.258241, -8.957455], [142.258514, -8.957399], [142.258786, -8.957344], [142.259059, -8.957289], [142.259331, -8.95718], [142.259604, -8.95707], [142.259876, -8.956961], [142.260149, -8.956851], [142.260421, -8.956688], [142.260694, -8.956578], [142.260966, -8.956469], [142.261238, -8.956359], [142.261511, -8.956196], [142.261783, -8.956086], [142.262056, -8.956031], [142.262328, -8.955921], [142.262601, -8.955812], [142.262873, -8.955757], [142.263146, -8.955702], [142.263418, -8.955538], [142.263691, -8.955374], [142.263963, -8.955211], [142.264181, -8.954993], [142.264398, -8.954721], [142.264561, -8.954449], [142.264669, -8.954177], [142.264722, -8.953906], [142.264721, -8.953634], [142.264666, -8.953363], [142.264556, -8.953092], [142.2645, -8.952821], [142.26439, -8.95255], [142.26428, -8.95228], [142.264116, -8.952009], [142.263951, -8.951738], [142.263677, -8.951468], [142.263403, -8.951197], [142.26313, -8.950927], [142.26291, -8.950656], [142.262691, -8.950386], [142.262581, -8.950115], [142.262526, -8.949844], [142.262579, -8.949572], [142.262688, -8.949301], [142.262905, -8.949083], [142.263123, -8.948865], [142.263395, -8.948702], [142.263667, -8.948592], [142.26394, -8.948537], [142.264213, -8.948482], [142.264485, -8.948427], [142.264758, -8.948371], [142.265031, -8.948316], [142.265303, -8.948261], [142.265576, -8.948206], [142.265849, -8.948205], [142.266121, -8.948204], [142.266394, -8.948203], [142.266667, -8.948202], [142.26694, -8.948147], [142.267212, -8.948092], [142.267485, -8.947982], [142.267757, -8.947819], [142.268029, -8.947601], [142.268247, -8.947383], [142.26841, -8.947111], [142.268572, -8.946839], [142.268626, -8.946568], [142.268625, -8.946296], [142.268569, -8.946025], [142.268514, -8.945754], [142.268404, -8.945483], [142.268294, -8.945212], [142.268184, -8.944941], [142.268074, -8.94467], [142.267909, -8.9444], [142.267744, -8.944129], [142.26758, -8.943858], [142.267415, -8.943588], [142.267251, -8.943317], [142.26714, -8.943046], [142.266976, -8.942775], [142.266866, -8.942504], [142.266756, -8.942233], [142.2667, -8.941962], [142.266699, -8.941691], [142.266753, -8.941419], [142.266806, -8.941148], [142.266915, -8.940876], [142.267023, -8.940605], [142.267131, -8.940333], [142.267239, -8.940061], [142.267402, -8.93979], [142.26751, -8.939518], [142.267618, -8.939246], [142.267727, -8.938975], [142.267835, -8.938703], [142.267943, -8.938431], [142.268051, -8.93816], [142.268159, -8.937888], [142.268213, -8.937616], [142.268321, -8.937345], [142.268375, -8.937073], [142.268374, -8.936802], [142.268373, -8.936531], [142.268372, -8.936259], [142.268262, -8.935989], [142.268152, -8.935718], [142.268042, -8.935447], [142.267932, -8.935176], [142.267767, -8.934905], [142.267602, -8.934634], [142.267438, -8.934364], [142.267273, -8.934093], [142.267054, -8.933822], [142.266889, -8.933552], [142.266779, -8.933281], [142.266669, -8.93301], [142.266614, -8.932739], [142.266667, -8.932467], [142.266776, -8.932196], [142.266938, -8.931924], [142.267156, -8.931652], [142.267428, -8.931434], [142.2677, -8.931216], [142.267972, -8.931052], [142.268244, -8.930888], [142.268517, -8.930779], [142.268789, -8.930669], [142.269062, -8.930614], [142.269334, -8.930505], [142.269607, -8.93045], [142.269879, -8.93034], [142.270152, -8.930231], [142.270424, -8.930121], [142.270697, -8.930066], [142.270969, -8.929957], [142.271242, -8.929901], [142.271515, -8.929846], [142.271787, -8.929791], [142.27206, -8.929736], [142.272333, -8.929735], [142.272605, -8.92968], [142.272878, -8.929679], [142.273151, -8.929624], [142.273424, -8.929623], [142.273696, -8.929622], [142.273969, -8.929675], [142.274242, -8.929674], [142.274515, -8.929727], [142.274788, -8.929727], [142.275061, -8.92978], [142.275334, -8.929887], [142.275608, -8.930049], [142.275881, -8.930265], [142.276155, -8.930536], [142.276429, -8.930806], [142.276703, -8.931076], [142.276976, -8.931347], [142.277195, -8.931617], [142.277415, -8.931888], [142.277634, -8.932158], [142.277853, -8.932429], [142.278072, -8.932699], [142.278292, -8.93297], [142.278511, -8.93324], [142.27873, -8.933511], [142.278949, -8.933782], [142.279168, -8.934052], [142.279442, -8.934322], [142.279716, -8.934593], [142.27999, -8.934863], [142.280263, -8.935079], [142.280537, -8.935241], [142.28081, -8.935349], [142.281083, -8.935402], [142.281356, -8.935401], [142.281628, -8.9354], [142.281901, -8.935399], [142.282174, -8.935452], [142.282447, -8.935451], [142.28272, -8.93545], [142.282993, -8.935395], [142.283265, -8.93534], [142.283537, -8.935176], [142.28381, -8.935013], [142.284027, -8.934795], [142.28419, -8.934577], [142.284298, -8.934306], [142.284352, -8.934034], [142.284351, -8.933763], [142.284295, -8.933492], [142.284185, -8.933221], [142.284075, -8.93295], [142.283911, -8.932679], [142.283746, -8.932409], [142.283581, -8.932138], [142.283471, -8.931867], [142.283416, -8.931596], [142.283415, -8.931325], [142.283468, -8.931053], [142.283631, -8.930835], [142.283849, -8.930672], [142.284067, -8.930617], [142.28434, -8.930562], [142.284613, -8.930561], [142.284886, -8.930614], [142.285159, -8.930667], [142.285431, -8.930666], [142.285704, -8.93072], [142.285977, -8.930773], [142.28625, -8.930772], [142.286523, -8.930717], [142.286795, -8.930607], [142.287068, -8.930444], [142.28734, -8.930226], [142.287557, -8.929954], [142.287665, -8.929682], [142.287664, -8.929411], [142.287554, -8.92914], [142.287335, -8.928869], [142.287061, -8.928653], [142.286788, -8.928437], [142.286514, -8.928221], [142.286241, -8.928005], [142.285967, -8.927789], [142.285693, -8.927573], [142.28542, -8.927357], [142.285146, -8.927141], [142.284927, -8.926924], [142.284708, -8.926708], [142.284544, -8.926437], [142.284488, -8.926166], [142.284542, -8.925895], [142.28465, -8.925623], [142.284867, -8.925351], [142.285139, -8.925079], [142.285411, -8.924807], [142.285683, -8.924534], [142.285955, -8.924262], [142.286172, -8.92399], [142.286389, -8.923718], [142.286607, -8.923446], [142.286769, -8.923174], [142.286932, -8.922902], [142.287095, -8.922631], [142.287258, -8.922359], [142.287366, -8.922087], [142.287528, -8.921815], [142.287637, -8.921544], [142.287799, -8.921272], [142.287853, -8.921], [142.287852, -8.920729], [142.287796, -8.920458], [142.287741, -8.920187], [142.287685, -8.919916], [142.28763, -8.919645], [142.287629, -8.919373], [142.287628, -8.919102], [142.287573, -8.918831], [142.287462, -8.91856], [142.287407, -8.918289], [142.287351, -8.918018], [142.28735, -8.917746], [142.287459, -8.917475], [142.287622, -8.917257], [142.287839, -8.917094], [142.288112, -8.917038], [142.288385, -8.916983], [142.288657, -8.916982], [142.28893, -8.916981], [142.289203, -8.916926], [142.289475, -8.916817], [142.289748, -8.916707], [142.29002, -8.916544], [142.290292, -8.916326], [142.290509, -8.916108], [142.290727, -8.915836], [142.290835, -8.915564], [142.290943, -8.915292], [142.290997, -8.915021], [142.291105, -8.914749], [142.291158, -8.914478], [142.291321, -8.914206], [142.291484, -8.913934], [142.291701, -8.913662], [142.291919, -8.913444], [142.292191, -8.913281], [142.292463, -8.913171], [142.292736, -8.91317], [142.293009, -8.913278], [142.293282, -8.913331], [142.293555, -8.913384], [142.293828, -8.913492], [142.294101, -8.913545], [142.294374, -8.913544], [142.294647, -8.913543], [142.29492, -8.913542], [142.295193, -8.913487], [142.295465, -8.913378], [142.295737, -8.913214], [142.296009, -8.91305], [142.296281, -8.912832], [142.296553, -8.91256], [142.296771, -8.912288], [142.296988, -8.912016], [142.297205, -8.911744], [142.297422, -8.911472], [142.29764, -8.9112], [142.297912, -8.910928], [142.298183, -8.910655], [142.298455, -8.910383], [142.298727, -8.910111], [142.298999, -8.909839], [142.299271, -8.909621], [142.299543, -8.909403], [142.299815, -8.909185], [142.300087, -8.908967], [142.300359, -8.908749], [142.300631, -8.908476], [142.300903, -8.908204], [142.301175, -8.907986], [142.301447, -8.907877], [142.30172, -8.907876]], "type": "LineString"}, "id": "5", "properties": {"reach_id": "53151000375", "time_str": "2024-03-11T07:57:58Z", "width": "49.924515", "width_units": "m", "wse": "1.4811", "wse_units": "m"}, "type": "Feature"}, {"geometry": {"coordinates": [[142.235319, -8.956718], [142.235592, -8.956717], [142.235865, -8.956716], [142.236137, -8.956607], [142.23641, -8.956552], [142.236683, -8.956496], [142.236955, -8.956441], [142.237228, -8.95644], [142.237501, -8.956385], [142.237774, -8.95633], [142.238046, -8.956275], [142.238319, -8.956274], [142.238592, -8.956219], [142.238864, -8.956164], [142.239137, -8.956108], [142.23941, -8.956107], [142.239682, -8.955998], [142.239955, -8.955943], [142.240228, -8.955888], [142.240501, -8.955887], [142.240773, -8.955832], [142.241046, -8.955831], [142.241319, -8.955776], [142.241592, -8.955775], [142.241864, -8.955719], [142.242137, -8.955719], [142.24241, -8.955718], [142.242683, -8.955771], [142.242956, -8.955824], [142.243229, -8.955878], [142.243502, -8.955877], [142.243775, -8.955876], [142.244048, -8.955929], [142.244321, -8.955982], [142.244594, -8.95609], [142.244867, -8.956198], [142.24514, -8.956305], [142.245414, -8.956413], [142.245687, -8.95652], [142.24596, -8.956628], [142.246233, -8.956736], [142.246507, -8.956898], [142.24678, -8.957005], [142.247053, -8.957167], [142.247326, -8.957275], [142.2476, -8.957436], [142.247873, -8.957598], [142.248147, -8.95776], [142.24842, -8.957922], [142.248693, -8.958084], [142.248967, -8.958191], [142.24924, -8.958299], [142.249513, -8.958407], [142.249786, -8.95846], [142.250059, -8.958513], [142.250332, -8.958567], [142.250605, -8.958566], [142.250878, -8.958565], [142.251151, -8.958564], [142.251424, -8.958563], [142.251696, -8.958562], [142.251969, -8.958561], [142.252242, -8.958506], [142.252515, -8.958451], [142.252787, -8.958396], [142.25306, -8.958286], [142.253332, -8.958231], [142.253605, -8.958176], [142.253878, -8.958121], [142.25415, -8.958065], [142.254423, -8.95801], [142.254695, -8.957901], [142.254968, -8.957846], [142.255241, -8.95779], [142.255513, -8.957735], [142.255786, -8.957734], [142.256059, -8.957679], [142.256332, -8.957624], [142.256604, -8.957569], [142.256877, -8.957514], [142.25715, -8.957458], [142.257422, -8.957457], [142.257695, -8.957456], [142.257968, -8.957456], [142.258241, -8.957455], [142.258514, -8.957399], [142.258786, -8.957344], [142.259059, -8.957289], [142.259331, -8.95718], [142.259604, -8.95707], [142.259876, -8.956961], [142.260149, -8.956851], [142.260421, -8.956688], [142.260694, -8.956578], [142.260966, -8.956469], [142.261238, -8.956359], [142.261511, -8.956196], [142.261783, -8.956086], [142.262056, -8.956031], [142.262328, -8.955921], [142.262601, -8.955812], [142.262873, -8.955757], [142.263146, -8.955702], [142.263418, -8.955538], [142.263691, -8.955374], [142.263963, -8.955211], [142.264181, -8.954993], [142.264398, -8.954721], [142.264561, -8.954449], [142.264669, -8.954177], [142.264722, -8.953906], [142.264721, -8.953634], [142.264666, -8.953363], [142.264556, -8.953092], [142.2645, -8.952821], [142.26439, -8.95255], [142.26428, -8.95228], [142.264116, -8.952009], [142.263951, -8.951738], [142.263677, -8.951468], [142.263403, -8.951197], [142.26313, -8.950927], [142.26291, -8.950656], [142.262691, -8.950386], [142.262581, -8.950115], [142.262526, -8.949844], [142.262579, -8.949572], [142.262688, -8.949301], [142.262905, -8.949083], [142.263123, -8.948865], [142.263395, -8.948702], [142.263667, -8.948592], [142.26394, -8.948537], [142.264213, -8.948482], [142.264485, -8.948427], [142.264758, -8.948371], [142.265031, -8.948316], [142.265303, -8.948261], [142.265576, -8.948206], [142.265849, -8.948205], [142.266121, -8.948204], [142.266394, -8.948203], [142.266667, -8.948202], [142.26694, -8.948147], [142.267212, -8.948092], [142.267485, -8.947982], [142.267757, -8.947819], [142.268029, -8.947601], [142.268247, -8.947383], [142.26841, -8.947111], [142.268572, -8.946839], [142.268626, -8.946568], [142.268625, -8.946296], [142.268569, -8.946025], [142.268514, -8.945754], [142.268404, -8.945483], [142.268294, -8.945212], [142.268184, -8.944941], [142.268074, -8.94467], [142.267909, -8.9444], [142.267744, -8.944129], [142.26758, -8.943858], [142.267415, -8.943588], [142.267251, -8.943317], [142.26714, -8.943046], [142.266976, -8.942775], [142.266866, -8.942504], [142.266756, -8.942233], [142.2667, -8.941962], [142.266699, -8.941691], [142.266753, -8.941419], [142.266806, -8.941148], [142.266915, -8.940876], [142.267023, -8.940605], [142.267131, -8.940333], [142.267239, -8.940061], [142.267402, -8.93979], [142.26751, -8.939518], [142.267618, -8.939246], [142.267727, -8.938975], [142.267835, -8.938703], [142.267943, -8.938431], [142.268051, -8.93816], [142.268159, -8.937888], [142.268213, -8.937616], [142.268321, -8.937345], [142.268375, -8.937073], [142.268374, -8.936802], [142.268373, -8.936531], [142.268372, -8.936259], [142.268262, -8.935989], [142.268152, -8.935718], [142.268042, -8.935447], [142.267932, -8.935176], [142.267767, -8.934905], [142.267602, -8.934634], [142.267438, -8.934364], [142.267273, -8.934093], [142.267054, -8.933822], [142.266889, -8.933552], [142.266779, -8.933281], [142.266669, -8.93301], [142.266614, -8.932739], [142.266667, -8.932467], [142.266776, -8.932196], [142.266938, -8.931924], [142.267156, -8.931652], [142.267428, -8.931434], [142.2677, -8.931216], [142.267972, -8.931052], [142.268244, -8.930888], [142.268517, -8.930779], [142.268789, -8.930669], [142.269062, -8.930614], [142.269334, -8.930505], [142.269607, -8.93045], [142.269879, -8.93034], [142.270152, -8.930231], [142.270424, -8.930121], [142.270697, -8.930066], [142.270969, -8.929957], [142.271242, -8.929901], [142.271515, -8.929846], [142.271787, -8.929791], [142.27206, -8.929736], [142.272333, -8.929735], [142.272605, -8.92968], [142.272878, -8.929679], [142.273151, -8.929624], [142.273424, -8.929623], [142.273696, -8.929622], [142.273969, -8.929675], [142.274242, -8.929674], [142.274515, -8.929727], [142.274788, -8.929727], [142.275061, -8.92978], [142.275334, -8.929887], [142.275608, -8.930049], [142.275881, -8.930265], [142.276155, -8.930536], [142.276429, -8.930806], [142.276703, -8.931076], [142.276976, -8.931347], [142.277195, -8.931617], [142.277415, -8.931888], [142.277634, -8.932158], [142.277853, -8.932429], [142.278072, -8.932699], [142.278292, -8.93297], [142.278511, -8.93324], [142.27873, -8.933511], [142.278949, -8.933782], [142.279168, -8.934052], [142.279442, -8.934322], [142.279716, -8.934593], [142.27999, -8.934863], [142.280263, -8.935079], [142.280537, -8.935241], [142.28081, -8.935349], [142.281083, -8.935402], [142.281356, -8.935401], [142.281628, -8.9354], [142.281901, -8.935399], [142.282174, -8.935452], [142.282447, -8.935451], [142.28272, -8.93545], [142.282993, -8.935395], [142.283265, -8.93534], [142.283537, -8.935176], [142.28381, -8.935013], [142.284027, -8.934795], [142.28419, -8.934577], [142.284298, -8.934306], [142.284352, -8.934034], [142.284351, -8.933763], [142.284295, -8.933492], [142.284185, -8.933221], [142.284075, -8.93295], [142.283911, -8.932679], [142.283746, -8.932409], [142.283581, -8.932138], [142.283471, -8.931867], [142.283416, -8.931596], [142.283415, -8.931325], [142.283468, -8.931053], [142.283631, -8.930835], [142.283849, -8.930672], [142.284067, -8.930617], [142.28434, -8.930562], [142.284613, -8.930561], [142.284886, -8.930614], [142.285159, -8.930667], [142.285431, -8.930666], [142.285704, -8.93072], [142.285977, -8.930773], [142.28625, -8.930772], [142.286523, -8.930717], [142.286795, -8.930607], [142.287068, -8.930444], [142.28734, -8.930226], [142.287557, -8.929954], [142.287665, -8.929682], [142.287664, -8.929411], [142.287554, -8.92914], [142.287335, -8.928869], [142.287061, -8.928653], [142.286788, -8.928437], [142.286514, -8.928221], [142.286241, -8.928005], [142.285967, -8.927789], [142.285693, -8.927573], [142.28542, -8.927357], [142.285146, -8.927141], [142.284927, -8.926924], [142.284708, -8.926708], [142.284544, -8.926437], [142.284488, -8.926166], [142.284542, -8.925895], [142.28465, -8.925623], [142.284867, -8.925351], [142.285139, -8.925079], [142.285411, -8.924807], [142.285683, -8.924534], [142.285955, -8.924262], [142.286172, -8.92399], [142.286389, -8.923718], [142.286607, -8.923446], [142.286769, -8.923174], [142.286932, -8.922902], [142.287095, -8.922631], [142.287258, -8.922359], [142.287366, -8.922087], [142.287528, -8.921815], [142.287637, -8.921544], [142.287799, -8.921272], [142.287853, -8.921], [142.287852, -8.920729], [142.287796, -8.920458], [142.287741, -8.920187], [142.287685, -8.919916], [142.28763, -8.919645], [142.287629, -8.919373], [142.287628, -8.919102], [142.287573, -8.918831], [142.287462, -8.91856], [142.287407, -8.918289], [142.287351, -8.918018], [142.28735, -8.917746], [142.287459, -8.917475], [142.287622, -8.917257], [142.287839, -8.917094], [142.288112, -8.917038], [142.288385, -8.916983], [142.288657, -8.916982], [142.28893, -8.916981], [142.289203, -8.916926], [142.289475, -8.916817], [142.289748, -8.916707], [142.29002, -8.916544], [142.290292, -8.916326], [142.290509, -8.916108], [142.290727, -8.915836], [142.290835, -8.915564], [142.290943, -8.915292], [142.290997, -8.915021], [142.291105, -8.914749], [142.291158, -8.914478], [142.291321, -8.914206], [142.291484, -8.913934], [142.291701, -8.913662], [142.291919, -8.913444], [142.292191, -8.913281], [142.292463, -8.913171], [142.292736, -8.91317], [142.293009, -8.913278], [142.293282, -8.913331], [142.293555, -8.913384], [142.293828, -8.913492], [142.294101, -8.913545], [142.294374, -8.913544], [142.294647, -8.913543], [142.29492, -8.913542], [142.295193, -8.913487], [142.295465, -8.913378], [142.295737, -8.913214], [142.296009, -8.91305], [142.296281, -8.912832], [142.296553, -8.91256], [142.296771, -8.912288], [142.296988, -8.912016], [142.297205, -8.911744], [142.297422, -8.911472], [142.29764, -8.9112], [142.297912, -8.910928], [142.298183, -8.910655], [142.298455, -8.910383], [142.298727, -8.910111], [142.298999, -8.909839], [142.299271, -8.909621], [142.299543, -8.909403], [142.299815, -8.909185], [142.300087, -8.908967], [142.300359, -8.908749], [142.300631, -8.908476], [142.300903, -8.908204], [142.301175, -8.907986], [142.301447, -8.907877], [142.30172, -8.907876]], "type": "LineString"}, "id": "6", "properties": {"reach_id": "53151000375", "time_str": "2024-03-27T17:37:08Z", "width": "43.192787", "width_units": "m", "wse": "-0.7693", "wse_units": "m"}, "type": "Feature"}], "type": "FeatureCollection"});\n", "\n", " \n", " \n", - " var layer_control_4dafa93bcbad23dcdfeb485c42d87bcc = {\n", + " geo_json_58c440d5a846df15a79f82e437aaf81f.addTo(map_92b68ed02772ed0ead1b6c61c23b95a4);\n", + " \n", + " \n", + " var layer_control_a4b1c8062a5b9e5de7790abc4dd875ce_layers = {\n", " base_layers : {\n", - " "cartodbpositron" : tile_layer_61bb1ac0c6148fa0f762d6c4dc5d44df,\n", + " "cartodbpositron" : tile_layer_63df3654da7f5b254a970398734d8557,\n", " },\n", " overlays : {\n", - " "SWOT River Reach" : geo_json_2378614c90f3637575a161878725b0c7,\n", + " "SWOT River Reach" : geo_json_58c440d5a846df15a79f82e437aaf81f,\n", " },\n", " };\n", - " L.control.layers(\n", - " layer_control_4dafa93bcbad23dcdfeb485c42d87bcc.base_layers,\n", - " layer_control_4dafa93bcbad23dcdfeb485c42d87bcc.overlays,\n", + " let layer_control_a4b1c8062a5b9e5de7790abc4dd875ce = L.control.layers(\n", + " layer_control_a4b1c8062a5b9e5de7790abc4dd875ce_layers.base_layers,\n", + " layer_control_a4b1c8062a5b9e5de7790abc4dd875ce_layers.overlays,\n", " {"autoZIndex": true, "collapsed": true, "position": "topright"}\n", - " ).addTo(map_82712f4821e837585e38497ebb95d6ee);\n", + " ).addTo(map_92b68ed02772ed0ead1b6c61c23b95a4);\n", + "\n", " \n", " \n", - " map_82712f4821e837585e38497ebb95d6ee.fitBounds(\n", + " map_92b68ed02772ed0ead1b6c61c23b95a4.fitBounds(\n", " [[-8.958567, 142.235319], [-8.907876, 142.30172]],\n", " {"padding": [30, 30]}\n", " );\n", @@ -5240,10 +6080,10 @@ "</html>\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen>" ], "text/plain": [ - "" + "" ] }, - "execution_count": 39, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -5271,7 +6111,7 @@ "Hydrocron also returns data in CSV format. Sending a similar request:\n", "\n", "\n", - "https://soto.podaac.uat.earthdatacloud.nasa.gov/hydrocron/v1/timeseries?\n", + "https://soto.podaac.earthdatacloud.nasa.gov/hydrocron/v1/timeseries?\n", " \n", " feature=Reach\n", " feature_id=53151000375\n", @@ -5285,27 +6125,27 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'status': '200 OK',\n", - " 'time': 577.061,\n", - " 'hits': 6,\n", - " 'results': {'csv': 'reach_id,time_str,wse,width,wse_units,width_units\\n53151000375,2024-01-25T03:21:55Z,12.566399999999998,819.213972,m,m\\n53151000375,2024-01-29T14:27:50Z,-6.6084,193.080748,m,m\\n53151000375,2024-02-15T00:07:00Z,7.8548,428.696936,m,m\\n53151000375,2024-02-19T11:12:55Z,-15.266,193.00955,m,m\\n53151000375,2024-03-06T20:52:04Z,-7.9709,339.44439900000003,m,m\\n53151000375,2024-03-11T07:57:58Z,2.9622,99.84903,m,m\\n',\n", + " 'time': 702.32,\n", + " 'hits': 7,\n", + " 'results': {'csv': 'reach_id,time_str,wse,width,wse_units,width_units\\n53151000375,2024-01-25T03:21:55Z,2.0944,136.535662,m,m\\n53151000375,2024-01-29T14:27:50Z,-1.6521,48.270187,m,m\\n53151000375,2024-02-15T00:07:00Z,1.9637,107.174234,m,m\\n53151000375,2024-02-19T11:12:55Z,-3.0532,38.60191,m,m\\n53151000375,2024-03-06T20:52:04Z,-1.1387,48.492057,m,m\\n53151000375,2024-03-11T07:57:58Z,1.4811,49.924515,m,m\\n53151000375,2024-03-27T17:37:08Z,-0.7693,43.192787,m,m\\n',\n", " 'geojson': {}}}" ] }, - "execution_count": 40, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hydrocron_response = requests.get(\n", - " \"https://soto.podaac.uat.earthdatacloud.nasa.gov/hydrocron/v1/timeseries?feature=Reach&feature_id=53151000375&start_time=2024-01-01T00:00:00Z&end_time=2024-03-30T00:00:00Z&output=csv&fields=reach_id,time_str,wse,width\"\n", + " \"https://soto.podaac.earthdatacloud.nasa.gov/hydrocron/v1/timeseries?feature=Reach&feature_id=53151000375&start_time=2024-01-01T00:00:00Z&end_time=2024-03-30T00:00:00Z&output=csv&fields=reach_id,time_str,wse,width\"\n", ").json()\n", "\n", "hydrocron_response" @@ -5313,16 +6153,16 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "'reach_id,time_str,wse,width,wse_units,width_units\\n53151000375,2024-01-25T03:21:55Z,12.566399999999998,819.213972,m,m\\n53151000375,2024-01-29T14:27:50Z,-6.6084,193.080748,m,m\\n53151000375,2024-02-15T00:07:00Z,7.8548,428.696936,m,m\\n53151000375,2024-02-19T11:12:55Z,-15.266,193.00955,m,m\\n53151000375,2024-03-06T20:52:04Z,-7.9709,339.44439900000003,m,m\\n53151000375,2024-03-11T07:57:58Z,2.9622,99.84903,m,m\\n'" + "'reach_id,time_str,wse,width,wse_units,width_units\\n53151000375,2024-01-25T03:21:55Z,2.0944,136.535662,m,m\\n53151000375,2024-01-29T14:27:50Z,-1.6521,48.270187,m,m\\n53151000375,2024-02-15T00:07:00Z,1.9637,107.174234,m,m\\n53151000375,2024-02-19T11:12:55Z,-3.0532,38.60191,m,m\\n53151000375,2024-03-06T20:52:04Z,-1.1387,48.492057,m,m\\n53151000375,2024-03-11T07:57:58Z,1.4811,49.924515,m,m\\n53151000375,2024-03-27T17:37:08Z,-0.7693,43.192787,m,m\\n'" ] }, - "execution_count": 43, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -5336,7 +6176,7 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -5373,8 +6213,8 @@ " 0\n", " 53151000375\n", " 2024-01-25T03:21:55Z\n", - " 12.5664\n", - " 819.213972\n", + " 2.0944\n", + " 136.535662\n", " m\n", " m\n", " \n", @@ -5382,8 +6222,8 @@ " 1\n", " 53151000375\n", " 2024-01-29T14:27:50Z\n", - " -6.6084\n", - " 193.080748\n", + " -1.6521\n", + " 48.270187\n", " m\n", " m\n", " \n", @@ -5391,8 +6231,8 @@ " 2\n", " 53151000375\n", " 2024-02-15T00:07:00Z\n", - " 7.8548\n", - " 428.696936\n", + " 1.9637\n", + " 107.174234\n", " m\n", " m\n", " \n", @@ -5400,8 +6240,8 @@ " 3\n", " 53151000375\n", " 2024-02-19T11:12:55Z\n", - " -15.2660\n", - " 193.009550\n", + " -3.0532\n", + " 38.601910\n", " m\n", " m\n", " \n", @@ -5409,8 +6249,8 @@ " 4\n", " 53151000375\n", " 2024-03-06T20:52:04Z\n", - " -7.9709\n", - " 339.444399\n", + " -1.1387\n", + " 48.492057\n", " m\n", " m\n", " \n", @@ -5418,8 +6258,17 @@ " 5\n", " 53151000375\n", " 2024-03-11T07:57:58Z\n", - " 2.9622\n", - " 99.849030\n", + " 1.4811\n", + " 49.924515\n", + " m\n", + " m\n", + " \n", + " \n", + " 6\n", + " 53151000375\n", + " 2024-03-27T17:37:08Z\n", + " -0.7693\n", + " 43.192787\n", " m\n", " m\n", " \n", @@ -5428,24 +6277,17 @@ "" ], "text/plain": [ - " reach_id time_str wse width wse_units \\\n", - "0 53151000375 2024-01-25T03:21:55Z 12.5664 819.213972 m \n", - "1 53151000375 2024-01-29T14:27:50Z -6.6084 193.080748 m \n", - "2 53151000375 2024-02-15T00:07:00Z 7.8548 428.696936 m \n", - "3 53151000375 2024-02-19T11:12:55Z -15.2660 193.009550 m \n", - "4 53151000375 2024-03-06T20:52:04Z -7.9709 339.444399 m \n", - "5 53151000375 2024-03-11T07:57:58Z 2.9622 99.849030 m \n", - "\n", - " width_units \n", - "0 m \n", - "1 m \n", - "2 m \n", - "3 m \n", - "4 m \n", - "5 m " + " reach_id time_str wse width wse_units width_units\n", + "0 53151000375 2024-01-25T03:21:55Z 2.0944 136.535662 m m\n", + "1 53151000375 2024-01-29T14:27:50Z -1.6521 48.270187 m m\n", + "2 53151000375 2024-02-15T00:07:00Z 1.9637 107.174234 m m\n", + "3 53151000375 2024-02-19T11:12:55Z -3.0532 38.601910 m m\n", + "4 53151000375 2024-03-06T20:52:04Z -1.1387 48.492057 m m\n", + "5 53151000375 2024-03-11T07:57:58Z 1.4811 49.924515 m m\n", + "6 53151000375 2024-03-27T17:37:08Z -0.7693 43.192787 m m" ] }, - "execution_count": 44, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -5458,7 +6300,7 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 8, "metadata": {}, "outputs": [], "source": [ @@ -5467,7 +6309,7 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -5476,13 +6318,13 @@ "Text(0.5, 1.0, 'Water Surface Elevation from Hydrocron for River Reach: 53151000375')" ] }, - "execution_count": 46, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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46uvvuKJJ57g559/5vnnn2fmzJkMGzasRLEOzn+A//jjj3nppZf45Zdfiot9f9W6dWvq1avH5MmT+fTTTyt1/KHExETGjBnD6NGjWbZsGePHj2f9+vXceOONODo6Fj/Hm266CYAjR44wevRoZs+ezdKlS7n//vt55513ePjhh0s87hdffMGNN95IYWEh06dPZ8mSJTzxxBMlCg0RERH07t2bM2fOMH36dBYtWkRoaCh33nlnuce8MwyD/Pz8Ure/Huu/euONNxg1ahRt2rTh22+/Zfbs2WRkZNC3b1/27dsHwJgxY7CzsyuVpaCggK+//pqbb74ZLy+v4uPSs2dPPv74Y3799VdeeuklNm7cSJ8+fYq/1D/wwAM8/vjjACxYsKD42F5sTMDs7GzCw8OZNWsWzzzzDD/99BNjxoxhypQpjBgxotT2P/30E9OmTePVV1/lhx9+wNPTk1tvvZWjR49e9DgUdbeD892HijJd6L777sPW1pbZs2fz/fffY2try6OPPsrzzz/PoEGDWLx4Ma+99hrLly+nV69eJQqLAElJSdx777088MADLFq0iPbt23Pffffx6quv8sILLzBp0iR++OEHXFxcuOWWW0hISLho3gsVFhaW+doXFhaW2O7hhx/GxsaGTz75pMTy1NRU5s2bx/3334+DgwMADz74IO+++y5jx45l0aJF/O1vf2PEiBGcPn26zAxXc2zK8zcC58dHHDZsGAMGDGDRokVMnjzZ9HPj4MGD9OrVi7179/L++++zYMEC2rRpwz333MOUKVNKPdYLL7xAbGxs8fP09va+6H7LkpaWRmpqKi1atLjkdvfddx/nzp0rVaQ6c+YMixYtYsyYMdja2gLluwYUKes1qKjo6GiAEs+hvNfA1NRUAF5++WV++uknZsyYQVBQEP379y/xfpefn8+QIUN47bXXGDp0KD/++CMzZ86kV69exMbGlshT3nPiUuOgleWxxx7DxsYGNzc3Bg8ezNq1ay+6bUFBATk5ORw4cIAHHngAb2/vUsWniho6dCjW1tZ4enoyYsQI9uzZc8WPtWfPHho0aECjRo1KLO/QoUPxeoCsrCyOHDlSvPyv22ZlZRUf16L7/HVbW1tbWrVqVWbeomvdyZMn+eijj/jll194/vnnL5l93rx5ZGZm8sADD5S5fu7cuTg6OmJvb0/nzp2Lf/gQEamWTG1HJyJSh6WmphpWVlbGQw89ZBiGYaSkpBgWi8VYvny5YRiG0a1bN2PixImGYRhGbGysARiTJk0q87EKCgqMvLw849VXXzXq169fohvYxbqsvPnmm4aVlVWp7irff/99qW4ggOHu7m6kpqaW67n99NNPhpeXlwEYgFG/fn3j9ttvNxYvXlxiu6IuM3/tKlfUlSciIqJ4WVhYmAEYf/zxR6n9jRs3znB2dr5kpqJjNGvWLMPa2rr4uWRkZBhubm5Gnz59Ltl9rlWrVkbHjh1LdR0bOnSo4ePjc9lusEXHoqzb7Nmzi7f7a3fR2NhYw8bGxnj88cdLPF5GRobRqFGjEl17RowYYTRu3LhElmXLll2ym3FhYaGRl5dnHDt2zACMRYsWFa+7VFfGsLCwEufV9OnTDcD49ttvS2z39ttvG4Dx66+/ljgWDRs2NNLT04uXJSUlGVZWVsabb75ZZs4LUUb3oaJzaezYsSWW79+/3wCM8ePHl1i+ceNGAzD+8Y9/lHhOgLFly5biZadOnTKsra0NR0dHIz4+vnj5jh07DMB4//33L5m1qLvo5W4XHuNx48YZ3t7eRk5OTvGyt99+27Cysireruh5Pf300yX2V9SN68Luold7bMr7NzJu3LgyuxiafW6MHDnSsLe3N2JjY0ssHzJkiOHk5GScOXPGMIz/v+5UpJtn0fHLy8szcnNzjUOHDhnDhg0zXF1dS5xHhlH29a5Tp05Gr169Smz30UcfGYCxe/duwzAqdg242GtwMUWZNmzYYOTl5RkZGRnG8uXLjUaNGhn9+vUrcb270mtgfn6+kZeXZwwcONC49dZbi5cXDYHw2WefXTJjRc4Ja2trY8CAAZd93tu2bTOefPJJ48cffzRWr15tfPnll0br1q0Na2vr4vfgv7K3ty/+e23RooWxb9++S+7jUt1Ff/75Z+Of//ynsWTJEmPVqlXGtGnTjMaNGxvOzs7Gjh07LvqYl+ouOmjQoFJDUBSxs7Mr/qwRHx9vAGX+Pc2dO9cAjMjISMMwDOPf//63ARiJiYmltr3++uuNFi1alFr+8MMPFx8nOzs746OPPrro8ynSvXt3o169ekZWVlapdaNHjzbmzJljrF692vj++++NIUOGGIDx4osvXvZxRUTMoJZsIiIm8fDwICQkpPiX/VWrVmFtbU3v3r0BCAsLIyIiAqD4vxcO0LxixQquu+463N3dsba2xtbWlpdeeolTp06RnJx82f0vXbqUdu3aERoaWqJlzeDBg0t11QQYMGBAuQfAvvHGG4mNjeXHH39k4sSJtG3bloULFzJs2LCrmiXOw8ODAQMGlHv77du3M2zYMOrXr198jMaOHUtBQQGHDh0Czg/un56ezvjx4y86a1tUVBQHDhzgrrvuAihxvG688UYSExM5ePDgZfPccccdbN68udTtxhtvvOh9fvnlF/Lz8xk7dmyJ/To4OBAWFlbidbr33ns5fvw4v//+e/GyGTNm0KhRI4YMGVK8LDk5mUceeQR/f39sbGywtbUt7ja0f//+yz6PsqxYsQJnZ2duu+22EsuLJtz4448/SiwPDw/H1dW1+N8NGzbE29ubY8eOXdH+i/ztb38r8e+iv52/TvzRrVs3WrduXSqXj48PnTt3Lv63p6cn3t7ehIaG4uvrW7y8devWAOXO++STT5b52j/55JNlbpucnMx3330HnG8Z8vHHH3PTTTcVd/cuel5F52SRO+6446Jds6702JTnb+RS+zH73FixYgUDBw7E39+/1P7PnTtXqjXkX/NfzkcffYStrS12dna0aNGCn3/+mW+++abEeXQx9957L5GRkSWuHzNmzKBr167FA/BX5Bpwpc+hR48e2Nra4urqyg033ICHhweLFi0qPpcqeg2cPn06nTp1wsHBofga88cff5S4vvz88884ODhw3333XTZfec+J/Pz8UudTWTp27Mh7773HLbfcQt++fYtfBx8fHyZNmlTmfSIjI1m/fj1ff/01rq6uhIeHlznDaHnccMMNvP766wwdOpR+/frx2GOPsWbNGiwWCy+99NIVPSZwyb/Pv66rjG3LWv6Pf/yDzZs389NPP3HfffcxYcKEi86uDLB37142btzIXXfdVdxK90Jz5sxh9OjR9O3bl7/97W8sW7aMoUOH8tZbb3Hy5MmLPq6IiFlUZBMRMVF4eDiHDh0iISGBiIiIEjNjhoWFsX37dtLS0oiIiMDGxoY+ffoAsGnTJq6//noAPvvsM9atW8fmzZv55z//CZzvDnI5J06cYNeuXdja2pa4ubq6YhhGqW50FZ0Rz9HRkVtuuYV33nmHVatWERUVRZs2bfjwww+v+ItJRTLExsbSt29f4uPj+d///seaNWvYvHkzH374IfD/x6joQ3rjxo0v+lhF4xJNnDix1PEaP348QKnjVZYGDRrQpUuXUjdPT8/L7rtr166l9j1//vwS+x0yZAg+Pj7FXWlOnz7N4sWLGTt2LNbW1sD5gs3111/PggULmDRpEn/88QebNm1iw4YNJY5LRZ06dYpGjRqV+tLl7e2NjY1N8Vh9Rf46gx6Avb39Fe+/yF/PkUuNEejr61sqV1mvhZ2dXanldnZ2AMXjo11O48aNy3ztyzrvOnbsSN++fYvP1aVLlxITE1OiQF2U+69dw2xsbMo8tnDlx6Y8fyNFnJyccHNzK7UfM8+NU6dOXfQ5Fq2/UEWvdUXF88jISD755BNcXV0ZOXIkhw8fvux977rrLuzt7Yu7W+7bt4/NmzeX6IZYkWsAlP0aXM6sWbPYvHkzK1as4OGHH2b//v2MGjWqVIbyXAOnTp3Ko48+Svfu3fnhhx/YsGEDmzdv5oYbbijxGp48eRJfX99yjTlWVdeLC9WrV4+hQ4eya9euMh+3U6dO9OjRg7vuuouIiAgMwygxY+fVCgwMpE+fPsXX4oqqX79+qXMZIDMzk9zc3OJrmIeHBxaLpcxti7r6Fm1bdNwvtm1Z18smTZrQpUsXbrzxRj7++GMeeughXnjhhYsWxL744guAi3YVLcuYMWPIz89ny5Yt5b6PiMi1culRKEVEpEqFh4czdepUVq5cycqVK0u0aCoqqK1evbp4QoSiAty8efOwtbVl6dKlJX75XbhwYbn37eXlhaOjI19++eVF11+oPC1YLqVJkyY89NBDPPXUU+zdu5e2bdsWZ//r4OcXK1hVJMPChQvJzMxkwYIFJQZ33rFjR4ntigawLmug9yJFx+KFF14ocwwpgJYtW5Y7W0UU7fv7778v8TzKYm1tzd13383777/PmTNnmDt3Ljk5OSW+sO/Zs4edO3cyc+ZMxo0bV7y8ooO7/1X9+vXZuHEjhmGUeJ2Sk5PJz88vdT5Vlb+eI0VfEhMTE0sViRISEq5Zrop64oknuP3229m2bRvTpk2jRYsWDBo0qHh90fNKSkrCz8+veHl+fn6ZX4jhyo9Nef5GLraPov2YeW7Ur1+/xAQzRYrG07vaa11R8RygZ8+etG7dmrCwMJ5++unLDs7v4eHB8OHDmTVrFq+//jozZszAwcGhRIGrIteAK8kP51tmFj2H8PBwCgoK+Pzzz/n++++57bbbKnQN/Prrr+nfvz8ff/xxifUXTuQD54/b2rVrKSwsrJIJA66E8ef4mJc7hq6urrRq1aq4RXRl7v9Kj0X79u2ZN28eSUlJJYrvu3fvBihuGeno6EhwcHDx8gvt3r0bR0dHgoKCih+zaHmbNm2Kt8vPz+fAgQMlztOL6datG9OnT+fo0aPF15Iiubm5zJ49m86dOxMaGlru51r0OlWX80ZE5EK6MomImKhfv35YW1vz/fffs3fv3hIDNru7uxfPgBcTE1Oiq6jFYsHGxqa4dRKcb4E0e/bsUvu42K/9Q4cO5ciRI9SvX7/MFjYXzkJaERkZGZw9e7bMdUVdhYpakBTtY9euXSW2W7x48RXt+0JFX5Ls7e2LlxmGwWeffVZiu169euHu7s706dMvOgFBy5Ytad68OTt37izzWHXp0qVEV6bKNHjwYGxsbDhy5MhF932he++9l+zsbL755htmzpxJz549adWqVfH6so4LUGqg/Qu3KU9rkYEDB3L27NlShd5Zs2YVrzdDUffir7/+usTyzZs3s3//ftNyXc6tt95KkyZNePbZZ/n9999LddUsulbMmTOnxP2+/fbb4pkBL6e8x6Y8fyOXYva5MXDgQFasWFFqkopZs2bh5OREjx49KnV/ffv2ZezYsfz000+luqKW5d577yUhIYFly5bx9ddfc+utt1KvXr3i9RW9BlSGKVOm4OHhwUsvvURhYWGFroEWi6XU9WXXrl2ljsWQIUPIzs4u98QxVe306dMsXbqU0NDQMrstXiglJYXdu3dX6kyY0dHRrFu37orPx+HDh2OxWErNmjtz5kwcHR254YYbipfdeuutrFixosQsxhkZGSxYsIBhw4YVdxPu3r07Pj4+pV6j77//nrNnz1604HqhiIgIrKysigt3F1q8eDEpKSncf//9FXmqzJ49G1tb23J1yRYRudbUkk1ExERubm506tSJhQsXYmVlVTweW5GwsDDee+89oOR4bDfddBNTp05l9OjRPPTQQ5w6dYp333231Bcb+P9ft+fPn09QUBAODg60b9+ep556ih9++IF+/frx9NNP06FDBwoLC4mNjeXXX3/l2WefpXv37hV+TgcPHmTw4MGMHDmSsLAwfHx8OH36ND/99BOffvop/fv3p1evXsD57k8tW7Zk4sSJ5Ofn4+HhwY8//njJGd7Ka9CgQdjZ2TFq1CgmTZpEdnY2H3/8camZF11cXPjPf/7DAw88wHXXXceDDz5Iw4YNiYqKYufOnUybNg04X4QaMmQIgwcP5p577sHPz4/U1FT279/Ptm3bisfPupQTJ06U2RXIzc2tRCuBCwUGBvLqq6/yz3/+k6NHjxaPl3TixAk2bdqEs7NzidkDW7VqRc+ePXnzzTeJi4vj008/LfF4rVq1olmzZvz973/HMAw8PT1ZsmQJv/32W6l9F7Vi+N///se4ceOwtbWlZcuWZRYUx44dy4cffsi4ceOIiYmhffv2rF27ljfeeIMbb7yR66677rLHpyq0bNmShx56iA8++AArKyuGDBlCTEwM//rXv/D39+fpp582JdflWFtb89hjj/H888/j7Oxcaty01q1bM2bMGN577z1sbW257rrr2LNnD++++265uwqW99iU92/kYsw+N15++WWWLl1KeHg4L730Ep6ensyZM4effvqJKVOmFM/YXJlee+015s+fz7/+9a8SYySW5frrr6dx48aMHz++eHbbC1X0GlAZPDw8imfTnTt3LmPGjCn3NXDo0KG89tprvPzyy4SFhXHw4EFeffVVmjZtWqIAPGrUKGbMmMEjjzzCwYMHCQ8Pp7CwkI0bN9K6dWtGjhxZ4dw2NjaEhYVddly20aNHF3dr9PLy4vDhw/znP//hxIkTJQpKaWlpDBo0iNGjR9O8eXMcHR05dOgQ//vf/8jJyeHll18u8bhbtmwpnlE7PT0dwzD4/vvvgfPvd0UtEa+77jr69etHhw4dcHNzY/fu3UyZMgWLxVJihnA4P+7j5s2bgfMzQwPFjxkYGFhcZG3bti33338/L7/8MtbW1nTt2pVff/2VTz/9lNdff71E186JEycye/ZsbrrpJl599VXs7e156623yM7O5pVXXineztramilTpnD33Xfz8MMPM2rUKA4fPsykSZMYNGhQicLdQw89hJubG926daNhw4akpKTw3XffMX/+fJ577rlSrdjgfFdRR0dHRo8eXebr9M4777Bv3z4GDhxI48aNSU5O5osvvuDXX3/llVdeqbYtkUWkjjNnvgURESkyadIkAzC6dOlSat3ChQuLZ+jKzMwsse7LL780WrZsadjb2xtBQUHGm2++aXzxxRelZq+LiYkxrr/+esPV1dUAjICAgOJ1Z8+eNV588UWjZcuWhp2dneHu7m60b9/eePrpp42kpKTi7Shjxr6LOX36tPH6668bAwYMMPz8/Aw7OzvD2dnZCA0NNV5//XXj3LlzJbY/dOiQcf311xtubm5GgwYNjMcff9z46aefypxdtG3btmXu82Kziy5ZssQICQkxHBwcDD8/P+O5554zfv7551KPbRjnZ+EMCwsznJ2dDScnJ6NNmzbG22+/XWKbnTt3GnfccYfh7e1t2NraGo0aNTIGDBhgTJ8+/bLHhUvMLNm7d+/i7f46u2iRhQsXGuHh4Yabm5thb29vBAQEGLfddpvx+++/l9r2008/NQDD0dHRSEtLK7V+3759xqBBgwxXV1fDw8PDuP3224tnsH355ZdLbPvCCy8Yvr6+hpWVVYnj9tfZRQ3j/EycjzzyiOHj42PY2NgYAQEBxgsvvGBkZ2eXOhZlnU8BAQElZsW8mLLuXzRL4l9nyzWM8zPLvv3220aLFi0MW1tbw8vLyxgzZowRFxdXYruLnWMBAQHGTTfdVK4cf1U0u+g777xT5vpLzeAaExNjAMYjjzxS5n1zcnKMZ5991vD29jYcHByMHj16GOvXry91HCvj2BjG5f9GLjXLr5nnhmEYxu7du42bb77ZcHd3N+zs7IyQkBBjxowZJbYpml30u+++u+x+Lrc/wzCM5557zgCMVatWGYZx8dmUDcMw/vGPfxiA4e/vf9FZOstzDSjPTMsXutS5kZWVZTRp0sRo3ry5kZ+fbxhG+a6BOTk5xsSJEw0/Pz/DwcHB6NSpk7Fw4UJj3LhxJd5/ivbx0ksvGc2bNzfs7OyM+vXrGwMGDCie3dIwKnZOABed0fNCb775phEaGmq4u7sb1tbWRoMGDYxbb73V2LRpU4ntsrOzjQceeMBo3bq14eLiYtjY2BiNGzc2xowZY+zdu7fU4xbN7lrW7cLz7amnnjLatGljuLq6GjY2Noavr68xZswY4+DBg6Ues+g1Kuv21+efm5trvPzyy0aTJk0MOzs7o0WLFhedATkqKsq45ZZbDDc3N8PJyckYOHCgsXXr1jK3nTt3rtGhQwfDzs7OaNSokfHEE08YGRkZJbb58ssvjb59+xpeXl6GjY2NUa9ePSMsLKzE7NkXio2NNaysrErNenyhxYsXG3369DEaNGhg2NjYGK6urkbfvn2Nb7755qL3ERExm8UwrqDdv4iIiIhUqQ8++IAnnniCPXv20LZtW7PjiIiIiMhlqMgmIiIiUo1s376d6OhoHn74YXr37l2hCU1ERERExDwqsomIiIhUI4GBgSQlJdG3b19mz55dYqZAEREREam+VGQTERERERERERG5SlZmBxAREREREREREanpVGQTERERERERERG5SiqyiYiIiIiIiIiIXCUbswNUN4WFhSQkJODq6orFYjE7joiIiIiIiIiImMQwDDIyMvD19cXK6tJt1VRk+4uEhAT8/f3NjiEiIiIiIiIiItVEXFwcjRs3vuQ2KrL9haurK3D+4Lm5uZmcRkREREREREREzJKeno6/v39xvehSVGT7i6Iuom5ubiqyiYiIiIiIiIhIuYYU08QHIiIiIiIiIiIiV0lFNhERERERERERkaukIpuIiIiIiIiIiMhVUpFNRERERERERETkKqnIJiIiIiIiIiIicpVUZBMREREREREREblKKrKJiIiIiIiIiIhcJRXZRERERERERERErpKKbCIiIiIiIiIiIlfJxuwAUnUKCg02RaeSnJGNt6sD3Zp6Ym1lMTuWiIiIiIiIiEitoyJbLbV8TyKTl+wjMS27eJmPuwMv39yGG9r5mJhMRERERERERKT2UXfRWmj5nkQe/XpbiQIbQFJaNo9+vY3lexJNSiYiIiIiIiIiUjupyFbLFBQaTF6yD6OMdUXLJi/ZR0FhWVuIiIiIiIiIiMiVUJGtltkUnVqqBduFDCAxLZtN0anXLpSIiIiIiIiISC2nIlstk5xx8QLblWwnIiIiIiIiIiKXpyJbLePt6lCp24mIiIiIiIiIyOWpyFbLdGvqiY+7A5aLrLdwfpbRbk09r2UsEREREREREZFaTUW2WsbaysLLN7cBuGih7eWb22BtdbG1IiIiIiIiIiJSUSqy1UI3tPPh4zGdaOReukvo3zo35oZ2PiakEhERERERERGpvWzMDiBV44Z2Pgxq04hN0akkZ2SzM+4MX66LYUtMKoWFBlZqySYiIiIiIiIiUmnUkq0Ws7ay0LNZfYaH+vHs9S1xdbAh5tQ5Vh8+aXY0EREREREREZFaRUW2OsLZ3obbO/sD8FVkjLlhRERERERERERqGRXZ6pCxPQMAWHnoJDEpmSanERERERERERGpPVRkq0MCvZzp37IBhgFfbzhmdhwRERERERERkVpDRbY6ZlzPQAC+3RLHudx8c8OIiIiIiIiIiNQSKrLVMWEtGhBQ34n07HwWbk8wO46IiIiIiIiISK2gIlsdY2Vl4e4e58dm+yoyBsMwTE4kIiIiIiIiIlLzqchWB93exR9HW2sOnshgY3Sq2XFERERERERERGo8FdnqIHdHW27t5AfArPUx5oYREREREREREakFVGSro8b2PN9l9Je9J0g4k2VyGhERERERERGRmk1FtjqqVSM3egR5UlBoMHdjrNlxRERERERERERqNBXZ6rBxPQMB+GZTLNl5BeaGERERERERERGpwVRkq8MGtWmIj7sDpzJzWbY70ew4IiIiIiIiIiI1lopsdZiNtRVjepwfm+2r9cdMTiMiIiIiIiIiUnOpyFbH3dnVHztrK3bGnWFH3Bmz44iIiIiIiIiI1EgqstVxXi72DA3xAWBWZIy5YUREREREREREaigV2aR4AoSluxJJOZtjbhgRERERERERkRpIRTYhxL8eIf71yC0oZN6mWLPjiIiIiIiIiIjUOCqyCQD39Do/AcLXG2LJLyg0OY2IiIiIiIiISM2iIpsAcGN7H7xc7EhKz+bXfSfMjiMiIiIiIiIiUqOoyCYA2NtYM6pbEwC+0gQIIiIiIiIiIiIVoiKbFBvdvQnWVhY2RqeyPzHd7DgiIiIiIiIiIjWGimxSzMfdkcFtGwIwa/0xk9OIiIiIiIiIiNQcNarItnr1am6++WZ8fX2xWCwsXLiwxHrDMHjllVfw9fXF0dGR/v37s3fvXnPC1lDjegYCsHB7PGnn8swNIyIiIiIiIiJSQ9SoIltmZiYhISFMmzatzPVTpkxh6tSpTJs2jc2bN9OoUSMGDRpERkbGNU5ac3Vr6kmrRq5k5RXw3dY4s+OIiIiIiIiIiNQINarINmTIEF5//XVGjBhRap1hGLz33nv885//ZMSIEbRr146vvvqKc+fOMXfu3Is+Zk5ODunp6SVudZnFYmFcr0DgfJfRwkLD3EAiIiIiIiIiIjVAjSqyXUp0dDRJSUlcf/31xcvs7e0JCwsjMjLyovd78803cXd3L775+/tfi7jV2vBQX9wcbIhNPcfKQ8lmxxERERERERERqfZqTZEtKSkJgIYNG5ZY3rBhw+J1ZXnhhRdIS0srvsXFqYukk50Nd3Q5X2z8KlITIIiIiIiIiIiIXE6tKbIVsVgsJf5tGEapZReyt7fHzc2txE3g7p4BWCyw6tBJolMyzY4jIiIiIiIiIlKt1ZoiW6NGjQBKtVpLTk4u1bpNLi+gvjPhLb0BmLU+xtwwIiIiIiIiIiLVXK0psjVt2pRGjRrx22+/FS/Lzc1l1apV9OrVy8RkNVfRBAjfbzlOZk6+uWFERERERERERKqxGlVkO3v2LDt27GDHjh3A+ckOduzYQWxsLBaLhaeeeoo33niDH3/8kT179nDPPffg5OTE6NGjzQ1eQ/UN9qKplzMZOfn8uD3e7DgiIiIiIiIiItVWjSqybdmyhY4dO9KxY0cAnnnmGTp27MhLL70EwKRJk3jqqacYP348Xbp0IT4+nl9//RVXV1czY9dYVlYW7u4RAJzvMmoYhsmJRERERERERESqJ4uhykkJ6enpuLu7k5aWpkkQgPTsPHq88QfncguY+2B3ejXzMjuSiIiIiIiIiMg1UZE6UY1qySbXnpuDLSM6+QHwVWSMuWFERERERERERKopFdnkssb2DATgt30niD+TZW4YEREREREREZFqSEU2uawWDV3p1aw+hQbM2XDM7DgiIiIiIiIiItWOimxSLkWt2eZtjiM7r8DcMCIiIiIiIiIi1YyKbFIu17X2xq+eI6mZuSzdlWh2HBERERERERGRakVFNikXG2sr7urRBDg/AYImpRURERERERER+X8qskm5jezaBDsbK3bHp7E97ozZcUREREREREREqg0V2aTcPJ3tGBbiC8CsyBhzw4iIiIiIiIiIVCMqskmFjPtzAoSfdieSnJFtbhgRERERERERkWpCRTapkPaN3enUpB55BQbzNsWZHUdEREREREREpFpQkU0qbFyvQADmbDxGXkGhuWFERERERERERKoBFdmkwoa088HLxZ4T6Tn8sjfJ7DgiIiIiIiIiIqZTkU0qzM7GitHdmwAwK/KYyWlERERERERERMynIptckbu6N8HGysKmmFT2JaSbHUdERERERERExFQqsskVaejmwA3tGgEwa32MuWFERESqgYJCg/VHTrFoRzzrj5yioNAwO5KIiIiIXEM2ZgeQmmtcr0CW7kpk4Y54/j6kFfWc7MyOJCIiYorlexKZvGQfiWnZxct83B14+eY23NDOx8RkIiIiInKtqCWbXLEuAR609nEjO6+Qb7fEmR1HRETEFMv3JPLo19tKFNgAktKyefTrbSzfk2hSMhERERG5llRkkytmsVi4p1cAALM3HFO3GBERqXMK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AwAAAAAAALqIkA0AAAAAAADoIkI2wEs99thjOu200xQaGqqYmBhdfPHF+vbbb91qjDGaPXu2EhISZLPZNHHiRG3YsMH1vN1u129+8xsNGTJEQUFBSkpK0u23367q6up237OxsVHp6emyWCwqLCw8ao/r1q1TVlaWbDab+vXrp0ceeUQ/3mvlvffe07nnnqu+ffsqLCxMEyZM0CeffNKh658/f75SU1MVGBiosWPH6osvvnB7/r333tPkyZPVp0+fDveLjmP8HXn81dXV6bbbblP//v1ls9k0bNgwvfjiix06N46uN4+///znP7rwwguVkJAgi8Wi999/v03NjBkzZLFY3H7Gjx9/1HOj43rzGDzatTc3N+t3v/udRo4cqeDgYCUkJOjqq69WWVnZUc8Nz+sJY/vLL7/U6aefrujoaNlsNg0dOlRPP/10h66f75eexfjj+2WPYAB4pcmTJ5sFCxaY9evXm8LCQjN16lSTlJRk6urqXDWPP/64CQ0NNe+++65Zt26dufzyy018fLypqakxxhizbt0684tf/MIsXrzYbNu2zfz73/82p5xyirnkkkvafc/bb7/dnH/++UaSKSgoOGJ/1dXVJjY21lxxxRVm3bp15t133zWhoaHmqaeectXccccd5o9//KPJy8szW7ZsMTNnzjT+/v7mm2++OeK53377bePv72/++te/mo0bN5o77rjDBAcHmx07drhq/va3v5k5c+aYv/71rx3qF53D+Dvy+LvuuuvMwIEDzbJly0xRUZF56aWXjK+vr3n//feP9tGiA3rz+Pvoo4/MAw88YN59910jySxcuLBNzTXXXGOmTJliysvLXT+VlZVHPC86pzePwaNde1VVlfnpT39q/v73v5vNmzeblStXmszMTDN27NiOfLTwsJ4wtr/55hvz5ptvmvXr15uioiLz2muvmaCgIPPSSy8d8dx8v/Q8xh/fL3sCQjagh6ioqDCSzPLly40xxjidThMXF2cef/xxV01DQ4MJDw83f/nLXw57nn/84x/GarWa5uZmt+MfffSRGTp0qNmwYUOH/hGaP3++CQ8PNw0NDa5jjz32mElISDBOp/Owr0tLSzNz5sw54rkzMjLMTTfd5HZs6NCh5v77729TW1RUxJegk4Dx5z7+hg8fbh555BG3mjFjxpgHH3zwiOfGselN4+/HjhSyZWdnd/g86LreOgaNaXvt7cnLyzOS3H5ZhHfoKWP75z//uZk+ffoRz833y+6H8cf3S2/EclGghzg4BToqKkqSVFRUpF27dum8885z1QQEBCgrK0srVqw44nnCwsLk5+fnOrZ7925df/31eu211xQUFNShflauXKmsrCwFBAS4jk2ePFllZWUqLi5u9zVOp1O1tbWua2hPU1OTVq9e7XZdknTeeecd8bpwYjH+3MffGWecocWLF6u0tFTGGC1btkxbtmzR5MmTO9Q/Oqe3jL/OyMnJUUxMjAYPHqzrr79eFRUVx+W8aF9vHoOHXvvhaiwWiyIiIjp1bnheTxjbBQUFWrFihbKysg57Xr5fdk+MP75feiNCNqAHMMbo7rvv1hlnnKERI0ZIknbt2iVJio2NdauNjY11PXeoyspKPfroo7rxxhvdzj1jxgzddNNNGjduXId72rVrV7vv/ePeDjVv3jzt27dPl1122WHPu2fPHjkcjk5dF04sxl/b63ruueeUlpam/v37y2q1asqUKZo/f77OOOOMDl8DOqY3jb+OOv/88/XGG29o6dKlmjdvnvLz83X22WersbGxy+dGW715DLZ37YdqaGjQ/fffr2nTpiksLKzD54bnefvY7t+/vwICAjRu3Djdeuutuu666w57Xr5fdj+MP75feitCNqAHuO2227R27Vq99dZbbZ6zWCxuj40xbY5JUk1NjaZOnaq0tDTNmjXLdfz5559XTU2NZs6cedj3Hz58uEJCQhQSEqLzzz//iO/d3nFJeuuttzR79mz9/e9/V0xMjCTpiy++cJ03JCREb7zxRqevCyce46/tdT333HNatWqVFi9erNWrV2vevHm65ZZb9Pnnnx/2OnBseuP4O5rLL79cU6dO1YgRI3ThhRfqX//6l7Zs2aIlS5Z0+BzouN48Bo907VLLJghXXHGFnE6n5s+ff9hrQPfk7WP7iy++0Ndff62//OUveuaZZ1zXwfdL78D44/ult/I7egmA7uw3v/mNFi9erP/85z/q37+/63hcXJyklr+qxMfHu45XVFS0+StJbW2tpkyZopCQEC1cuFD+/v6u55YuXapVq1a5TYuWpHHjxumqq67Sq6++qo8++kjNzc2SJJvN5nr/Q/+ic3C50qHv//e//13XXnut/vnPf+qnP/2p23v8eJef2NhYBQQEyNfXt91zH3penHiMv7bX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gmvWWm1trb755htdeumlGjhwoL766itJLaHa/v37XeHKW2+9pZCQEN14441tznnPPfeoublZ77777jH3vnr1al122WW64oortG7dOs2ePVsPPfSQXnnlFbe6J598Uqeeeqq++eYbzZw5U3fddZc+++wzSdI777yjp59+Wi+99JK2bt2q999/XyNHjnS99le/+pW++uorvf3221q7dq0uvfRSTZkyRVu3bnXV1NfX67HHHtP//u//asOGDZo+fboiIiLcrs3hcOgf//iHrrrqKklSQ0ODxo4dqw8//FDr16/XDTfcoF/+8pfKzc2V1DK7b8KECbr++utds/kSExOP+TOYN2+exo0bp4KCAt1yyy26+eabtXnz5sN+tvfdd5+WLVumhQsX6tNPP1VOTo5Wr17tVtPU1KRHH31Ua9as0fvvv6+ioiJXkJaYmOi6/m+//Vbl5eV69tlnJUkPPvigFixYoBdffFEbNmzQXXfdpenTp2v58uWH7QcAAPQwBgAAoAd65513TGRkpAkMDDQ/+clPzMyZM82aNWvcaqZNm2bOO+88Y4wxS5YsMWlpacYYY2666Sbz+9//3hhjzJw5c0xiYqLrNVOmTDGjRo067PuGh4ebm2++uc1xSWbhwoVH7XvatGnm3HPPdTt23333uXozxpjk5GQzZcoUt5rLL7/cnH/++cYYY+bNm2cGDx5smpqa2px/27ZtxmKxmNLSUrfj55xzjpk5c6YxxpgFCxYYSaawsNCt5vbbbzdnn3226/Enn3xirFarsdvth72eCy64wNxzzz2ux1lZWeaOO+5wq1m2bJmRZPbu3dupz2D69Omux06n08TExJgXX3yx3T5qa2uN1Wo1b7/9tutYZWWlsdlsbfr5sby8PCPJ1NbWtturMcbU1dWZwMBAs2LFCrfXXnvttebKK6887LkBAEDPwkw2AADQI11yySUqKyvT4sWLNXnyZOXk5GjMmDFus6EmTZqkr776Ss3NzcrJydHEiRMlSVlZWa7lkzk5OTr77LM7/L7GmC7dW2zTpk06/fTT3Y6dfvrp2rp1qxwOh+vYhAkT3GomTJigTZs2SZIuvfRS7d+/XwMGDND111+vhQsXuu49980338gYo8GDB7tm/IWEhGj58uX67rvvXOezWq069dRT3d7jqquuUk5OjsrKyiRJb7zxhi644AJFRkZKapnZNnfuXJ166qmKjo5WSEiIPv30U5WUlJyQz+DH/VksFsXFxbmWdh7qu+++U1NTk9vnFhUVpSFDhrjVFRQUKDs7W8nJyQoNDXWNiSNdw8aNG9XQ0KBzzz3X7TP929/+5vaZAgCAno2QDQAA9FiBgYE699xz9fDDD2vFihWaMWOGZs2a5Xp+0qRJ2rdvn/Lz87Vs2TLXvcWysrKUn58vu93udj82qWWZ6cHA5lBlZWWqqanRKaeccsw9txfSGWM69NqDr0tMTNS3336rP//5z7LZbLrlllt01llnqbm5WU6nU76+vlq9erUKCwtdP5s2bXItfZQkm83Wpo+MjAwNHDhQb7/9tvbv36+FCxdq+vTprufnzZunp59+Wr/97W+1dOlSFRYWavLkye1+VsfjM/D3929z/YfboKEjn+G+fft03nnnKSQkRK+//rry8/O1cOFCSTriNRx8zyVLlrh9phs3buS+bAAA9CKEbAAAoNdIS0vTvn37XI8HDhyoxMRELV68WIWFha6QLT4+3nWz/YaGBreQ7YorrlBdXZ1eeumlNud/6qmn5O/vr0suuaRLPX755Zdux1asWKHBgwfL19fXdWzVqlVuNatWrdLQoUNdj202my666CI999xzysnJ0cqVK7Vu3TqNHj1aDodDFRUVGjRokNvPkTZjOGjatGl644039MEHH8jHx8e1kYQkffHFF8rOztb06dM1atQoDRgwwO0+b1LLDLkfz0brymfQGYMGDZK/v7/b57Z3715t2bLF9Xjz5s3as2ePHn/8cZ155pkaOnRom5lxVqtVktyu4eDmECUlJW0+0/buOQcAAHomP083AAAAcLxVVlbq0ksv1a9//WudeuqpCg0N1ddff60nnnhC2dnZbrWTJk3S/PnzNWjQIMXGxrqOZ2Vl6fnnn9eAAQOUlJTkOj5hwgTdcccduu+++9TU1KSLL75Yzc3Nev311/Xss8/qmWee6VKwcs899+i0007To48+qssvv1wrV67UCy+8oPnz57vVffXVV3riiSd08cUX67PPPtM///lPLVmyRFLL7qAOh0OZmZkKCgrSa6+9JpvNpuTkZEVHR+uqq67S1VdfrXnz5mn06NHas2ePli5dqpEjR+qCCy44Yn9XXXWV5syZo7lz5+r//b//p8DAQNdzgwYN0rvvvqsVK1YoMjJSf/rTn7Rr1y4NGzbMVZOSkqLc3FwVFxcrJCREUVFRx/wZdEZISIiuvfZa3XfffYqOjlZsbKweeOAB+fj892/OSUlJslqtev7553XTTTdp/fr1evTRR93Ok5ycLIvFog8//FAXXHCBbDabQkNDde+99+quu+6S0+nUGWecoZqaGq1YsUIhISG65pprjrlvAADgRTx4PzgAAIAToqGhwdx///1mzJgxJjw83AQFBZkhQ4aYBx980NTX17vVHrzJ/0033eR2/LXXXjOSzLXXXtvue7z88stm3LhxxmazmaCgIHPGGWeYxYsXH7YndXDjA2NaNm1IS0sz/v7+JikpyTz55JNuzycnJ5s5c+aYyy67zAQFBZnY2FjzzDPPuJ5fuHChyczMNGFhYSY4ONiMHz/efP75567nm5qazMMPP2xSUlKMv7+/iYuLMz//+c/N2rVrXZ9JeHj4Yfs77bTTjCSzdOlSt+OVlZUmOzvbhISEmJiYGPPggw+aq6++2mRnZ7tqvv32WzN+/Hhjs9mMJFNUVNTuZgId+Qyefvppt2OjRo0ys2bNOmzftbW1Zvr06a7P7IknnmizEcObb75pUlJSTEBAgJkwYYJZvHixkWQKCgpcNY888oiJi4szFovFXHPNNcaYlo0Xnn32WTNkyBDj7+9v+vbtayZPnmyWL19+2H4AAEDPYjGmgzf5AAAAAAAAANAu7skGAAAAAAAAdBEhGwAAAAAAANBFhGwAAAAAAABAFxGyAQAAAAAAAF1EyAYAAAAAAAB0ESEbAAAAAAAA0EWEbAAAAAAAAEAXEbIBAAAAAAAAXUTIBgAAAAAAAHQRIRsAAAAAAADQRYRsAAAAAAAAQBf9f/xPXUKENzcwAAAAAElFTkSuQmCC", + "image/png": "iVBORw0KGgoAAAANSUhEUgAABNAAAAHWCAYAAAC2U3RfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAADR00lEQVR4nOzdd1hT5/sG8PskkLCXDEG2C3HiQMEB7t3WVXGvautota32W7vssNrWUa11tLZuW/eo1lF3HSAquAUXS0Cm7J2c3x9IfiKoQIHDuD/XlevSk5OcOyEckifv+7yCKIoiiIiIiIiIiIiIqFgyqQMQERERERERERFVZSygERERERERERERvQQLaERERERERERERC/BAhoREREREREREdFLsIBGRERERERERET0EiygERERERERERERvQQLaERERERERERERC/BAhoREREREREREdFLsIBGRERERERERET0EiygERFRtZCWloa33noLdevWhSAImDVrltSRykwQBHz55ZdSx3ip8ePHw9HRUZJjx8TEYOjQoahTpw4EQcCyZcskyVFVOTo6Yvz48VLHkERVfm1s2LABgiAgNDRU6ijVxunTpyEIAnbt2iV1FCIioldiAY2IqILs2LEDgiBg7969Ra5r2bIlBEHAqVOnilxnb28PT0/PUh1r1apV2LBhQ1mjlklOTg6WL18ONzc3GBkZwcTEBE2bNsWUKVMQFBRU7sdbsGABNmzYgKlTp2Lz5s0YM2ZMuR/jvyj48Pyii5+fn9QRi4iKisKXX36Jq1evSh2lkPfffx9Hjx7F3LlzsXnzZvTp00fqSC8UGhoKQRCwePHiYq//8ssvIQgC4uPjKzlZzVTZr43nf4+NjIzg5eWFv//+u0KPW14KXn8FF21tbTg6OuK9995DUlKS1PEqzPOPu+Cio6NTaL/MzExMmjQJzZo1g7GxMQwMDNCyZUssX74cubm5hfaNjo7Gxx9/jK5du8LQ0BCCIOD06dPFHt/b27vY4z//ek1LS8O8efPQp08fmJmZQRCEl/4tv3PnDvr06QMDAwOYmZlhzJgxiIuLK7KfWq3GDz/8ACcnJ+jo6KBFixb4888/y3yfUVFRGD16NBo3bgxDQ0OYmJjA3d0dGzduhCiKhfZ1dHR84d/Bhg0bFtr3Rft99913L3wOiIikpCV1ACKimqpTp04AgHPn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DQ3Fjh07iuvXry/2MSUnJ4s6Ojri4MGDiz1mwX327NlTrFu3rqitrS2amJiIvXr1KvRaIyKqagRRrKSOrURERESkce3aNbRq1QqbNm3CmDFjpI5DRERERC/BHmhEREREEli7di0MDAxeuZIjEREREUmPPdCIiIiIKtGBAwdw+/Zt/Prrr5gxY4ZmMQciIiIiqro4hZOIiIioEjk6OiImJga9e/fG5s2bYWhoKHUkIiIiInoFFtCIiIiIiIiIiIhegj3QiIiIiIiIiIiIXoIFNCIiIiIiIiIiopeoVYsIqNVqREVFwdDQEIIgSB2HiIiIiIiIiIgkIooiUlNTYWNjA5ns5WPMalUBLSoqCnZ2dlLHICIiIiIiIiKiKiIiIgK2trYv3adWFdAKVrmKiIiAkZGRxGmIiIiIiIiIiEgqKSkpsLOzK9Gq6LWqgFYwbdPIyIgFNCIiIiIiIiIiKlGbLy4iQERERERERERE9BIsoBEREREREREREb0EC2hEREREREREREQvwQIaERERERERERHRS7CARkRERERERERE9BIsoBEREREREREREb0EC2hEREREREREREQvwQIaERERERERERHRS7CARkRERERERERE9BJaUgegslOpRfiHJCI2NQuWhjpwdzKDXCZIHYuIiIiIiIiIqEZhAa2aOnIzGl8duI3o5CzNNmtjHcwb6Io+zawlTEZEREREREREVLNwCmc1dORmNKZuCShUPAOAx8lZmLolAEduRkuUjIiIiIiIiIio5mEBrZpRqUV8deA2xGKuK9j21YHbUKmL24OIiIiIiIiIiEqLBbRqxj8kscjIs2eJAKKTs+Afklh5oYiIiIiIiIiIajAW0KqZ2NQXF8/Ksh8REREREREREb0cC2jVjKWhTrnuR0REREREREREL8cCWjXj7mQGa2MdCC+4XkD+apzuTmaVGYuIiIiIiIiIqMaqNgW0hQsXol27djA0NISlpSXeeOMNBAcHSx2r0sllAuYNdAWAIkW0gv/PG+gKuexFJTYiIiIiIiIiIiqNalNAO3PmDKZPnw4/Pz8cO3YMubm56NWrF9LT06WOVun6NLPG6tGtUde48DTNusY6WD26Nfo0s5YoGRFR7aBSi/B9kID9VyPh+yCBKx8TEREREdVwgiiK1fJdf1xcHCwtLXHmzBl06dKlRLdJSUmBsbExkpOT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7XYTHBxs/vrXv9ZtKywsNK6urubDDz887euef/55ExkZ2eCxH3/8cXPBBReclO3KK688Zfu29sX8VOjb//Tt1Vdfbe688856ba6//nozceLEBo/dGnWUfv2lhISE03459/X1bfRxWrOO2K8n9O3b18yaNeu0+//7velo2sNn48svvzQ2m81UVlaetk1Hu07Tr1yj23K//lJHuEYb0zH79gSu0ziBWzjR4RUVFUmSAgICJEkbN25UVVWVLrvssro2vXv3Vnh4uNasWdPgcU4c44S5c+dq3759mjlzZqOypKWl6cCBA/XO7evrq4suuqjJ5/5va9asqXdcSbryyisbPG5bR9/+57jx8fFavHixdu/eLal2SP3KlSv1q1/9qlH5W5OO0q+NVVpaqoiICIWFhWncuHHavn17sxz3fOuo/Wq321VSUtLg6/77velo2vpnIz8/XwsWLFB8fLycnZ1Pe+yOdp2mX7lGt+V+baz2co2WOm7fcp3GLzlZHQCwkt1u10MPPaSLL75Y/fr1kyQdOHBALi4u8vPzq9e2S5cuOnDgwCmPs3r1an388cf6+uuv67bt2bNH06dP14oVK+Tk1Lh/aieO36VLl0afe+/evXr11Vf1wgsvnPHYpzpucXGxjh07Jnd390ZlbCvo2/p9O336dBUXF6t3795ydHRUTU2Nnn76aU2cOLFR+VuLjtSvjdGrVy+98847GjBggIqKivTCCy8oPj5e27dvV7du3c75+OdLR+7XF154QaWlpbrppptOuf9U701H0pY/G//7v/+r1157TWVlZRo2bJi++uqrMx67o1yn6Veu0W29XxujvVyjpY7dt1yn8UuMQEOHdv/992vbtm366KOPzvoY27Zt07hx4zRz5kxdccUVkmong73llls0a9Ys9ezZ85SvW7Bggby8vOoeK1asaPK5s7OzNWbMGI0fP1733HNP3fZfHnfq1Kln94O1cfRtfZ988okWLFigDz74QMnJyZo/f75eeOEFzZ8/v8nZrES/1jd8+HDddtttGjRokBISErRw4UIFBgZqzpw5Tc5mpY7arx988IFmzZqlTz75REFBQac8dnO8N21ZW/5sPPbYY0pJSdH3338vR0dH3XbbbXWTwnf06zT9Wh/X6P9oT/3aXq7RUsftW67TOIm1d5AC1rn//vtNt27dzL59++ptX7x4sZFkCgoK6m0PDw83L730Ur1t27dvN0FBQeb3v/99ve0FBQVGknF0dKx72Gy2um2LFy82xcXFZs+ePXWPsrIyk5qaaiSZlJSUescbOXKkeeCBB+pty87ONj169DC33nqrqampqbfvl8c9ePCgMcaYESNGnDQ/wzvvvGN8fHxO+f6oDc+tQt+e3LfdunUzr732Wr02Tz31lOnVq9fJb2Ar1dH69ZdON7/Kqdx4441mwoQJjWrbGnTUfv3www+Nu7u7+eqrr5r83nQUbf2z8UtZWVlGklm9erUxpmNfp+lXrtHGtP1+/aX2fI02puP2LddpnAoFNHQ4drvd3H///SY0NNTs3r37pP0nJsT87LPP6rbt3LnzpAkxt23bZoKCgsxjjz120jFqamrM1q1b6z2mTZtmevXqZbZu3XraFVpOTIj5wgsv1G0rKio6aULM/fv3mx49epgJEyaY6urqRv3cjz/+uOnXr1+9bb/5zW/a1eTE9O1//HffBgQEmNdff71em7/85S+mR48ejTqHlTpqv/5SY7+cV1dXm169epmHH364yec43zpyv37wwQfGzc3NfPHFF6c9f0PvTXvXHj4b/y0jI8NIMkuXLj1tm/Z+naZf/4NrdNvv119qj9doYzp233KdxulQQEOHM23aNOPr62uSkpLqLStdVlZW12bq1KkmPDzcLFmyxGzYsOGkJY+3bt1qAgMDzaRJk+odIy8v77TnbcyKMsbULsns5+dnvvzyS7NlyxYzbty4eksy79+/38TExJjRo0eb/fv31zt/Q04so/7YY4+ZHTt2mL///e8nLaNeUlJiUlJSTEpKipFkXnrpJZOSkmIyMjLOmLs1oG9P37e333676dq1q/nqq69MWlqaWbhwoencubN5/PHHz5jbah21X40xdf8eBw8ebG655RaTkpJitm/fXrd/1qxZ5rvvvjOpqalm48aNZsKECcbNza1em9aqo/brggULjJOTk/n73/9e7zWFhYVNem/as7b+2fjpp5/Mq6++alJSUkx6erpZvHixiY+PN9HR0aa8vPy0x23v12n6lWt0e+pXY9r3NdqYjtu3XKfREApo6HAknfIxd+7cujbHjh0z9913n/H39zceHh7muuuuq/dL0cyZM095jIiIiNOet7EXA7vdbmbMmGG6dOliXF1dzejRo82uXbvq9s+dO/e0P8OZLF261AwaNMi4uLiYqKioej/zif2nOu7tt99+xmO3BvTt6fu2uLjYPPjggyY8PNy4ubmZqKgo8+STT5qKioozHttqHblfz5T5oYceMuHh4cbFxcV06dLFXHXVVSY5OfmMx20NOmq/JiQknPH/s415b9qztv7Z2LJlixk1apQJCAgwrq6upnv37mbq1Klm//79Zzx2e75O069co9tbv7bna7QxHbdvuU6jITZjjs+gBwAAAAAAAOAkrMIJAAAAAAAANIACGgAAAAAAANAACmgAAAAAAABAAyigAQAAAAAAAA2ggAYAAAAAAAA0gAIaAAAAAAAA0AAKaAAAAAAAAEADKKABAAAAAAAADaCABgAA0IrYbDZ98cUXVsdoNvPmzZOfn58l5+7evbv+9re/WXJuAADQvlBAAwAAbc6hQ4c0bdo0hYeHy9XVVcHBwbryyiu1atUqSdKECRM0ZsyYeq/59ttvZbPZ9Kc//ane9j/96U8KDw+vt23+/PkaMmSIPDw85O3trYSEBH311Vd1+ydPniybzXbaR/fu3Vvk527tTlWwuvnmm7V7925rAjWRlcU+AADQulFAAwAAbc4NN9yglJQUzZ8/X7t379aiRYuUmJioI0eOSJJGjRqlVatWqbq6uu41S5cuVVhYmJKSkuoda+nSpRo1alTd80cffVRTpkzRzTffrC1btmjdunW65JJLNG7cOL322muSpFdeeUW5ubl1D0maO3du3fP169e38DvQfCorK1v0+O7u7goKCmrRcwAAALQ0CmgAAKBNKSws1IoVK/Tcc89p1KhRioiI0NChQ/XEE0/ommuukVRbQCstLdWGDRvqXpeUlKTp06dr7dq1Ki8vlySVl5dr7dq1dQW0n376SS+++KL++te/6tFHH1VMTIz69Omjp59+Wg899JB+97vfKSsrS76+vgoODq57SJKfn1/d88DAwNPmnz17tqKjo+Xi4qJevXrpvffeO6lNbm6ufvWrX8nd3V1RUVH67LPP6vZVVlbqt7/9rUJCQuTm5qaIiAg988wz9d6fu+++W4GBgfLx8dGll16qzZs31+3/05/+pEGDBumtt95SZGSk3Nzc9Oabbyo0NFR2u71ejnHjxunOO++UJKWmpmrcuHHq0qWLvLy8NGTIEP344491bRMTE5WRkaGHH364biSedOpRXWd6D2w2m9566y1dd9118vDwUI8ePbRo0aLTvqeSlJeXp7Fjx8rd3V2RkZFasGDBSW1eeukl9e/fX56engoLC9N9992n0tJSSbWfjzvuuENFRUV1+U+MVqyoqNCjjz6qrl27ytPTUxdddNFJhVgAANC+UUADAABtipeXl7y8vPTFF1+ooqLilG169uyp0NBQLV26VJJUUlKi5ORkjR8/Xt27d9eaNWskSatXr1ZFRUVdAe3DDz+Ul5eXpkyZctIxH3nkEVVVVenzzz8/6+z//Oc/9eCDD+qRRx7Rtm3bNGXKFN1xxx11OU+YMWOGbrjhBm3evFkTJ07UhAkTtGPHDknS//3f/2nRokX65JNPtGvXLi1YsKDeLaPjx49XXl6evvnmG23cuFFxcXEaPXq08vPz69rs3btXn3/+uRYuXKhNmzZp/PjxOnLkSL0c+fn5+vbbbzVx4kRJUmlpqa666iotXrxYKSkpGjNmjMaOHavMzExJ0sKFC9WtWzf9+c9/rjcy72zfg1mzZummm27Sli1bdNVVV2nixIn1fob/NnnyZGVlZWnp0qX67LPP9PrrrysvL69eGwcHB/3f//2ftm/frvnz52vJkiV6/PHHJUnx8fH629/+Jh8fn7r8jz76qCTpt7/9rdasWaOPPvpIW7Zs0fjx4zVmzBjt2bPntHkAAEA7YwAAANqYzz77zPj7+xs3NzcTHx9vnnjiCbN58+Z6bSZOnGiuuOIKY4wxX3/9tenbt68xxph7773X/PGPfzTGGDNjxgwTGRlZ95oxY8aYgQMHnva8Pj4+Ztq0aSdtl2T++c9/njF3fHy8ueeee+ptGz9+vLnqqqvqHWvq1Kn12lx00UV15/2f//kfc+mllxq73X7S8VesWGF8fHxMeXl5ve3R0dFmzpw5xhhjZs6caZydnU1eXl69NuPGjTN33nln3fM5c+aY0NBQU1NTc9qf54ILLjCvvvpq3fOIiAjz8ssv12szd+5c4+vrW/e8se/BH/7wh7rnpaWlRpL55ptvTplj165dRpJZt25d3bYdO3YYSSfl+aVPP/3UdOrU6bRZjTEmIyPDODo6muzs7HrbR48ebZ544onTHhsAALQvjEADAABtzg033KCcnBwtWrRIY8aMUVJSkuLi4jRv3ry6NomJiVq1apWqqqqUlJSkxMRESVJCQkLd7XdJSUn15j+TJGNMi+XesWOHLr744nrbLr744rrRZScMHz78pOcn2kyePFmbNm1Sr1699MADD+j777+va7d582aVlpaqU6dOdSP1vLy8lJaWptTU1Lp2ERERJ91mOnHiRH3++ed1o/oWLFigCRMmyMGh9utiaWmpHn30UfXp00d+fn7y8vLSjh076kagNfd7MGDAgLr/9vT0lI+Pz0kjyn55TCcnJw0ePLhuW+/evU+6dfTHH3/U6NGj1bVrV3l7e+vWW2/VkSNHVFZWdtq8W7duVU1NjXr27FnvPV22bFm99xQAALRvTlYHAAAAOBtubm66/PLLdfnll2vGjBm6++67NXPmTE2ePFlS7TxoR48e1fr167V06VI99thjkmoLaHfeeafy8/O1du3aerdr9uzZUytXrlRlZaVcXFzqnS8nJ0fFxcXq2bPnefsZTyUuLk5paWn65ptv9OOPP+qmm27SZZddps8++0ylpaUKCQk55fxcvywmeXp6nrR/7NixMsbo66+/1pAhQ7RixQq9/PLLdfsfffRR/fDDD3rhhRcUExMjd3d33XjjjS22CIGzs3O95zab7aQ52poiPT1dv/71rzVt2jQ9/fTTCggI0MqVK3XXXXepsrJSHh4ep3xdaWmpHB0dtXHjRjk6Otbb5+XlddZ5AABA28IINAAA0C707dtXR48erXseHR2tsLAwLVq0SJs2bVJCQoIkqWvXruratatefPFFVVZW1huBNmHCBJWWlmrOnDknHf+FF16Qs7OzbrjhhrPO2KdPH61ataretlWrVqlv3771tv30008nPe/Tp0/dcx8fH9188836xz/+oY8//liff/658vPzFRcXpwMHDsjJyUkxMTH1Hp07d24wm5ubm66//notWLBAH374oXr16qW4uLh6OSdPnqzrrrtO/fv3V3BwsNLT0+sdw8XFRTU1Nc3yHjRF7969VV1drY0bN9Zt27VrlwoLC+ueb9y4UXa7XS+++KKGDRumnj17Kicn54z5Y2NjVVNTo7y8vJPe0xMLSAAAgPaPEWgAAKBNOXLkiMaPH68777xTAwYMkLe3tzZs2KDnn39e48aNq9d21KhRev311xUTE6MuXbrUbU9ISNCrr75at9jACcOHD9eDDz6oxx57TJWVlbr22mtVVVWl999/X6+88or+9re/KSws7KyzP/bYY7rpppsUGxuryy67TP/617+0cOHCeqtZStKnn36qCy+8UJdccokWLFigdevW6e2335ZUu5JkSEiIYmNj5eDgoE8//VTBwcHy8/PTZZddpuHDh+vaa6/V888/X1ck+vrrr3XdddfpwgsvbDDfxIkT9etf/1rbt2/XpEmT6u3r0aOHFi5cqLFjx8pms2nGjBknjQjr3r27li9frgkTJsjV1fWURbvGvgdN0atXL40ZM0ZTpkzR7Nmz5eTkpIceekju7u51bWJiYlRVVaVXX31VY8eO1apVq/TGG2+clL+0tFSLFy/WwIED5eHhoZ49e2rixIm67bbb9OKLLyo2NlaHDh3S4sWLNWDAAF199dVnnRsAALQhVk/CBgAA0BTl5eVm+vTpJi4uzvj6+hoPDw/Tq1cv84c//MGUlZXVazt37txTTso/b948I8lMmTLllOd4++23zeDBg42bm5vx9PQ0I0aMMIsWLTptJjVyEQFjjHn99ddNVFSUcXZ2Nj179jTvvvvuScf6+9//bi6//HLj6upqunfvbj7++OO6/W+++aYZNGiQ8fT0ND4+Pmb06NEmOTm5bn9xcbH5n//5HxMaGmqcnZ1NWFiYmThxosnMzDTG1C4icLqFEmpqakxISIiRZFJTU+vtS0tLM6NGjTLu7u4mLCzMvPbaayYhIcE8+OCDdW3WrFljBgwYYFxdXc2Jr5mnmpi/Me/Bf7+fvr6+Zu7cuad7W01ubq65+uqrjaurqwkPDzfvvvvuSYsavPTSSyYkJMS4u7ubK6+80rz77rtGkikoKKhrM3XqVNOpUycjycycOdMYY0xlZaX54x//aLp3726cnZ1NSEiIue6668yWLVtOmwcAALQvNmNacKZcAAAAAAAAoI1jDjQAAAAAAACgARTQAAAAAAAAgAZQQAMAAAAAAAAaQAENAAAAAAAAaAAFNAAAAAAAAKABFNAAAAAAAACABlBAAwAAAAAAABpAAQ0AAAAAAABoAAU0AAAAAAAAoAEU0AAAAAAAAIAGUEADAAAAAAAAGvD/AQ5WS+ZQS+xzAAAAAElFTkSuQmCC", "text/plain": [ "
" ] diff --git a/docs/timeseries.md b/docs/timeseries.md index 261f027f..ae4f1208 100644 --- a/docs/timeseries.md +++ b/docs/timeseries.md @@ -1,6 +1,85 @@ # timeseries -Retrieve time series data from SWOT observations for reaches and nodes. +This page serves to document the timeseries request endpoint for the Hydrocron API. The timeseries endpoint retrieves time series data from SWOT observations for reaches and nodes based on a user request which can include the headers and query parameters documented below under "Request Headers" and "Request Parameters". + +The timeseries endpoint returns a CSV or GeoJSON response depending on the user request, see "Response Format" below. If something goes wrong the timeseries endpoint returns different response codes to indicate to the user what might have caused an error, see "Response Codes" below. + +For more information on using request headers when working with an API like Hydrocron programatically, see: https://developer.mozilla.org/en-US/docs/Web/HTTP/Content_negotiation + +## Request Headers + +### Accept + +Accept headers provide more control over the output that is returned by Hydrocron. You can pass the `Accept` header in your request to return a specific response format. + +Accept headers: `application/json`, `text/csv`, `application/geo+json` + +Possible header and request parameter combinations: + +- If the Accept header is `text/csv` or `application/geo+json`, the raw CSV or GeoJSON response is returned. +- If the Accept header is `application/json` with an output field of `geojson`, the entire JSON object with metadata including GeoJSON response is returned. +- If the Accept header is `application/json` with an output field of `csv`, the entire JSON object with metadata including CSV response is returned. +- If the Accept header is `application/json` without an output field, the entire JSON object with metadata including GeoJSON response is returned. +- If the Accept header is none of the accepted types then a 415 Unsupported is returned. +- If no Accept header is passed in the request then the default is to return `application/json` with metadata. The `output` field is used to determine whether a GeoJSON or CSV response is returned in the `results` field of the response. + +Example GeoJSON request and response: + +```bash +curl -v --header "Accept: application/geo+json" --location 'https://soto.podaac.sit.earthdatacloud.nasa.gov/hydrocron/v1/timeseries?feature=Reach&feature_id=63470800171&start_time=2024-02-01T00:00:00%2b00:00&end_time=2024-10-30T00:00:00%2b00:00&fields=reach_id,time_str,wse' +``` + +Content-Type: 'application/geo+json' + +```json +{ + "type": "FeatureCollection", + "features": [ + { + "id": "0", + "type": "Feature", + "properties": { + "reach_id": "63470800171", + "time_str": "2024-02-01T02:26:50Z", + "wse": "3386.9332", + "wse_units": "m" + }, + "geometry": { + "type": "LineString", + "coordinates": [] + } + }, + { + "id": "1", + "type": "Feature", + "properties": { + "reach_id": "63470800171", + "time_str": "2024-02-08T13:48:41Z", + "wse": "1453.4136", + "wse_units": "m" + }, + "geometry": { + "type": "LineString", + "coordinates": [] + } + } + ] +} +``` + +*Coordinates removed + +Example CSV request and response: + +```bash +curl -v --header "Accept: text/csv" --location 'https://soto.podaac.sit.earthdatacloud.nasa.gov/hydrocron/v1/timeseries?feature=Reach&feature_id=63470800171&start_time=2024-02-01T00:00:00%2b00:00&end_time=2024-10-30T00:00:00%2b00:00&fields=reach_id,time_str,wse' +``` + +Content-Type: text/csv + +```json +"reach_id,time_str,wse,wse_units\n63470800171,2024-02-01T02:26:50Z,3386.9332,m\n63470800171,2024-02-08T13:48:41Z,1453.4136,m\n" +``` ## Request Parameters @@ -41,109 +120,317 @@ Example: `/timeseries?feature=Reach&feature_id=78340600051&output=geojson&start_time=2024-01-25T00:00:00%2b00:00&end_time=2024-03-29T00:00:00%2b00:00&fields=reach_id,time_str,wse,slope` -### output : string, required: yes +### output : string, required: no Format of the data returned. Either: "csv" or "geojson" +### compact: string, required: no + +Whether to return a 'compact' GeoJSON response. Either: "true" or "false" + +The default for header `Accept: application/geo+json` is to set compact to `true` if it is not provided. The default header for `application/json` is to set compact to `false` if it is not provided. See "Response" section for details on the returned compact response. + ### fields : string, required: yes The SWOT data fields to return in the request. This is specified in the form of a comma separated list (without any spaces): `fields=reach_id,time_str,wse,slope` -Hydrocron includes additional fields beyond the source data shapefile attributes, including units fields on measurements, cycle and pass information, and SWORD and collection versions. The complete list of fields that are available through Hydrocron are below: +Hydrocron includes additional fields beyond the source data shapefile attributes, including units fields on measurements, cycle and pass information, and SWORD and collection versions. **NOTE: Units are always returned for fields that have corresponding units stored in Hydrocron, they do not need to be requested.** The complete list of input fields that are available through Hydrocron are below: **Reach data fields** ```bash -'reach_id', 'time', 'time_units', 'time_tai', 'time_tai_units', 'time_str', -'p_lat', 'p_lat_units', 'p_lon', 'p_lon_units', 'river_name', -'wse', 'wse_units', 'wse_u', 'wse_u_units', 'wse_r_u', 'wse_r_u_units', -'wse_c', 'wse_c_units', 'wse_c_u', 'wse_c_u_units', -'slope', 'slope_units', 'slope_u_units', 'slope_u', 'slope_r_u', 'slope_r_u_units', -'slope2', 'slope2_units', 'slope2_u', 'slope2_u_units', 'slope2_r_u', 'slope2_r_u_units', -'width', 'width_units', 'width_u', 'width_u_units', -'width_c', 'width_c_units', 'width_c_u', 'width_c_u_units', -'area_total', 'area_tot_u', 'area_det_u_units', 'area_detct', 'area_det_u_units', -'area_det_u', 'area_det_u_units', 'area_wse', 'area_det_u_units', -'d_x_area', 'd_x_area_u', 'area_det_u_units' -'layovr_val', 'layovr_val_units', 'node_dist', 'node_dist_units', -'loc_offset', 'loc_offset_units', 'xtrk_dist', 'xtrk_dist_units' -'dschg_c', 'dschg_c_units', 'dschg_c_u', 'dschg_c_u_units', -'dschg_csf', 'dschg_csf_units', 'dschg_c_q', -'dschg_gc', 'dschg_gc_units', 'dschg_gc_u', 'dschg_gc_u_units', -'dschg_gcsf', 'dschg_gcsf_units', 'dschg_gc_q', -'dschg_m', 'dschg_m_units', 'dschg_m_u', 'dschg_m_u_units', -'dschg_msf', 'dschg_msf_units', 'dschg_m_q', -'dschg_gm', 'dschg_gm_units', 'dschg_gm_u', 'dschg_gm_u_units', -'dschg_gmsf', 'dschg_gmsf_units', 'dschg_gm_q', -'dschg_b', 'dschg_b_units', 'dschg_b_u', 'dschg_b_u_units', -'dschg_bsf', 'dschg_bsf_units', 'dschg_b_q', -'dschg_gb', 'dschg_gb_units', 'dschg_gb_u', 'dschg_gb_u_units', -'dschg_gbsf', 'dschg_gbsf_units', 'dschg_gb_q', -'dschg_h', 'dschg_h_units', 'dschg_h_u', 'dschg_h_u_units', -'dschg_hsf', 'dschg_hsf_units', 'dschg_h_q', -'dschg_gh', 'dschg_gh_units', 'dschg_gh_u', 'dschg_gh_u_units', -'dschg_ghsf', 'dschg_ghsf_units', 'dschg_gh_q', -'dschg_o', 'dschg_o_units', 'dschg_o_u', 'dschg_o_u_units', -'dschg_osf', 'dschg_osf_units', 'dschg_o_q', -'dschg_go', 'dschg_go_units', 'dschg_go_u', 'dschg_go_u_units', -'dschg_gosf', 'dschg_gosf_units', 'dschg_go_q', -'dschg_s', 'dschg_s_units', 'dschg_s_u', 'dschg_s_u_units', -'dschg_ssf', 'dschg_ssf_units', 'dschg_s_q', -'dschg_gs', 'dschg_gs_units', 'dschg_gs_u', 'dschg_gs_u_units', -'dschg_gssf', 'dschg_gssf_units', 'dschg_gs_q', -'dschg_i', 'dschg_i_units', 'dschg_i_u', 'dschg_i_u_units', -'dschg_isf', 'dschg_isf_units', 'dschg_i_q', -'dschg_gi', 'dschg_gi_units', 'dschg_gi_u', 'dschg_gi_u_units', -'dschg_gisf', 'dschg_gisf_units', 'dschg_gi_q','dschg_q_b', 'dschg_gq_b', +'reach_id', 'time', 'time_tai', 'time_str', 'p_lat', 'p_lon', 'river_name', +'wse', 'wse_u', 'wse_r_u', 'wse_c', 'wse_c_u', +'slope', 'slope_u', 'slope_r_u', 'slope2', 'slope2_u', 'slope2_r_u', +'width', 'width_u', 'width_c', 'width_c_u', +'area_total', 'area_tot_u', 'area_detct', 'area_det_u', 'area_wse', +'d_x_area', 'd_x_area_u', +'layovr_val', 'node_dist', 'loc_offset', 'xtrk_dist', +'dschg_c', 'dschg_c_u', 'dschg_csf', 'dschg_c_q', +'dschg_gc', 'dschg_gc_u', 'dschg_gcsf', 'dschg_gc_q', +'dschg_m', 'dschg_m_u', 'dschg_msf', 'dschg_m_q', +'dschg_gm', 'dschg_gm_u', 'dschg_gmsf', 'dschg_gm_q', +'dschg_b', 'dschg_b_u', 'dschg_bsf', 'dschg_b_q', +'dschg_gb', 'dschg_gb_u', 'dschg_gbsf', 'dschg_gb_q', +'dschg_h', 'dschg_h_u', 'dschg_hsf', 'dschg_h_q', +'dschg_gh', 'dschg_gh_u', 'dschg_ghsf', 'dschg_gh_q', +'dschg_o', 'dschg_o_u', 'dschg_osf', 'dschg_o_q', +'dschg_go', 'dschg_go_u', 'dschg_gosf', 'dschg_go_q', +'dschg_s', 'dschg_s_u', 'dschg_ssf', 'dschg_s_q', +'dschg_gs', 'dschg_gs_u', 'dschg_gssf', 'dschg_gs_q', +'dschg_i', 'dschg_i_u', 'dschg_isf', 'dschg_i_q', +'dschg_gi', 'dschg_gi_u', 'dschg_gisf', 'dschg_gi_q', +'dschg_q_b', 'dschg_gq_b', 'reach_q', 'reach_q_b', -'dark_frac', 'dark_frac_units', 'ice_clim_f', 'ice_dyn_f', 'partial_f', -'n_good_nod', 'n_good_nod_units', 'obs_frac_n', 'obs_frac_n_units', -'xovr_cal_q', 'geoid_hght', 'geoid_hght_units', 'geoid_slop', 'geoid_slop_units', -'solid_tide', 'solid_tide_units', 'load_tidef', 'load_tidef_units', -'load_tideg', 'load_tideg_units', 'pole_tide', 'pole_tide_units', -'dry_trop_c', 'dry_trop_c_units', 'wet_trop_c', 'wet_trop_c_units', -'iono_c', 'iono_c_units', 'xovr_cal_c', 'xovr_cal_c_units', -'n_reach_up', 'n_reach_up_units', 'n_reach_dn', 'n_reach_dn_units', -'rch_id_up', 'rch_id_up_units', 'rch_id_dn', 'rch_id_dn_units', -'p_wse', 'p_wse_units', 'p_wse_var', 'p_wse_var_units', -'p_width', 'p_width_units', 'p_wid_var', 'p_wid_var_units', -'p_n_nodes', 'p_n_nodes_units', 'p_dist_out', 'p_dist_out_units', -'p_length', 'p_length_units', 'p_maf', 'p_maf_units', 'p_dam_id', 'p_dam_id_units', -'p_n_ch_max', 'p_n_ch_max_units', 'p_n_ch_mod', 'p_n_ch_mod_units', 'p_low_slp', +'dark_frac', 'ice_clim_f', 'ice_dyn_f', 'partial_f', 'n_good_nod', +'obs_frac_n', 'xovr_cal_q', 'geoid_hght', 'geoid_slop', +'solid_tide', 'load_tidef', 'load_tideg', 'pole_tide', +'dry_trop_c', 'wet_trop_c', 'iono_c', 'xovr_cal_c', +'n_reach_up', 'n_reach_dn', 'rch_id_up', 'rch_id_dn', +'p_wse', 'p_wse_var', 'p_width', 'p_wid_var', 'p_n_nodes', 'p_dist_out', +'p_length', 'p_maf', 'p_dam_id', 'p_n_ch_max', 'p_n_ch_mod', 'p_low_slp', 'cycle_id', 'pass_id', 'continent_id', 'range_start_time', 'range_end_time', -'crid', 'geometry', 'sword_version', 'collection_shortname', 'crid' +'crid', 'geometry', 'sword_version', 'collection_shortname', 'collection_version', +'granuleUR', 'ingest_time' ``` **Node data fields** ```bash -'reach_id', 'node_id', 'time', 'time_units', 'time_tai', 'time_tai_units', 'time_str', -'lat', 'lat_units', 'lon', 'lon_units', 'lat_u', 'lat_u_units', 'lon_u', 'lon_u_units', -'river_name', 'wse', 'wse_units', 'wse_u', 'wse_u_units', 'wse_r_u', 'wse_r_u_units', -'width', 'width_units', 'width_u', 'width_u_units', -'area_total', 'area_total_units', 'area_tot_u', 'area_tot_u_units', -'area_detct', 'area_detct_units', 'area_det_u', 'area_det_u_units', 'area_wse', 'area_wse_units', -'layovr_val', 'layovr_val_units', 'node_dist', 'node_dist_units', 'xtrk_dist', 'xtrk_dist_units', -'flow_angle', 'flow_angle_units', 'node_q', 'node_q_b', -'dark_frac', 'dark_frac_units', 'ice_clim_f', 'ice_dyn_f', 'partial_f', -'n_good_pix', 'n_good_pix_units', 'xovr_cal_q', -'rdr_sig0', 'rdr_sig0_units', 'rdr_sig0_u', 'rdr_sig0_u_units', 'rdr_pol', -'geoid_hght', 'geoid_hght_units', 'solid_tide', 'solid_tide_units', 'load_tidef', 'load_tidef_units', -'load_tideg', 'load_tideg_units', 'pole_tide', 'pole_tide_units', -'dry_trop_c', 'dry_trop_c_units', 'wet_trop_c', 'iono_c', 'iono_c_units', -'xovr_cal_c', 'xovr_cal_c_units', 'p_wse', 'p_wse_units', 'p_wse_var', 'p_wse_var_units', -'p_width', 'p_width_units', 'p_wid_var', 'p_wid_var_units', -'p_dist_out', 'p_dist_out_units', 'p_length', 'p_length_units', -'p_dam_id', 'p_dam_id_units', 'p_n_ch_max', 'p_n_ch_max_units', 'p_n_ch_mod', 'p_n_ch_mod_units', +'reach_id', 'node_id', 'time', 'time_tai', 'time_str', +'lat', 'lon', 'lat_u', 'lon_u', 'river_name', +'wse', 'wse_u', 'wse_r_u', +'width', 'width_u', +'area_total', 'area_tot_u', 'area_detct', 'area_det_u', 'area_wse', +'layovr_val', 'node_dist', 'xtrk_dist', +'flow_angle', 'node_q', 'node_q_b', +'dark_frac', 'ice_clim_f', 'ice_dyn_f', 'partial_f', 'n_good_pix', +'xovr_cal_q', 'rdr_sig0', 'rdr_sig0_u', 'rdr_pol', +'geoid_hght', 'solid_tide', 'load_tidef', 'load_tideg', 'pole_tide', +'dry_trop_c', 'wet_trop_c', 'iono_c', 'xovr_cal_c', +'p_wse', 'p_wse_var', 'p_width', 'p_wid_var', 'p_dist_out', 'p_length', +'p_dam_id', 'p_n_ch_max', 'p_n_ch_mod', 'cycle_id', 'pass_id', 'continent_id', 'range_start_time', 'range_end_time', -'crid', 'sword_version', 'collection_shortname','geometry' +'crid', 'geometry', 'sword_version', 'collection_shortname' +``` + +## Response Format + +### Default + +This includes cases where Accept header is not included or equals `*/*` or `application/json`. + +Returns a JSON response that contains CSV or GeoJSON in `results` object with a Content-Type set to 'application/json'. + +If the user sends a request parameter of `output=csv` then the `results` object will contain CSV data of the requested fields. + +Example CSV response: + +```json +{ + "status": "200 OK", + "time": 806.886, + "hits": 4, + "results": { + "csv": "reach_id,time_str,wse,geometry,wse_units\n72390300011,2024-01-29T15:06:46Z,41.2087,\"LINESTRING (-62.159497 50.285927)\",m\n", + "geojson": {} + } +} ``` -## Returns +If the user sends a request parameter of `output=geojson` then the `results` object will contain GeoJSON data of the requested fields. + +Example JSON response: + +```json +{ + "status": "200 OK", + "time": 723.004, + "hits": 2, + "results": { + "csv": "", + "geojson": { + "type": "FeatureCollection", + "features": [ + { + "id": "0", + "type": "Feature", + "properties": { + "reach_id": "63470800171", + "time_str": "2024-02-01T02:26:50Z", + "wse": "3386.9332", + "wse_units": "m" + }, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -45.845445, + -16.166559 + ] + ] + } + }, + { + "id": "1", + "type": "Feature", + "properties": { + "reach_id": "63470800171", + "time_str": "2024-02-08T13:48:41Z", + "wse": "1453.4136", + "wse_units": "m" + }, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -45.845445, + -16.166559 + ] + ] + } + } + ] + } + } +} +``` + +If the user sends a request parameter of `compact=true` and the request parameter `output=geojson`, the response will be compacted. The compacted response appends time series data into a single list for each requested field and is stored under the `properties` object in the `results` object. + +Only one Feature is ever returned as the data is aggregated under a single "Feature". The geometry for the data is included in the response's `geometry` object which is listed once as there is only one Feature represented in the response. + +Example compacted JSON response: + +```json +{ + "status": "200 OK", + "time": 2175.824, + "hits": 2, + "results": { + "csv": "", + "geojson": { + "type": "FeatureCollection", + "features": [ + { + "id": "0", + "type": "Feature", + "properties": { + "reach_id": [ + "63470800171", + "63470800171" + ], + "time_str": [ + "2024-02-01T02:26:50Z", + "2024-02-08T13:48:41Z" + ], + "wse": [ + "3386.9332", + "1453.4136" + ], + "wse_units": [ + "m", + "m" + ] + }, + "geometry": { + "type": "LineString", + "coordinates": [ + -45.845445, + -16.166559 + ] + } + } + ] + } + } +} +``` + +*Coordinates removed + +### application/geo+json + +When the `Accept` header is set to `application/geo+json` and there is no `output` request parameter, a GeoJSON response is returned with a Content-Type set to 'application/geo+json'. + +The default behavior is to compact the response into a single "Feature". The compacted response appends time series data into a single list for each requested field and includes a single geometry object for the data. + +Example compacted GeoJSON response: + +```json +{ + "type": "FeatureCollection", + "features": [ + { + "id": "0", + "type": "Feature", + "properties": { + "reach_id": [ + "63470800171", + "63470800171" + ], + "time_str": [ + "2024-02-01T02:26:50Z", + "2024-02-08T13:48:41Z" + ], + "wse": [ + "3386.9332", + "1453.4136" + ], + "wse_units": [ + "m", + "m" + ] + }, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -45.845445, + -16.166559 + ] + ] + } + } + ] +} +``` + +*Coordinates removed + +If the user sends a request parameter of `compact=false` then the GeoJSON response will not be compacted and there will be one "Feature" per time step. + +Example GeoJSON response that is not compacted: + +```json +{ + "type": "FeatureCollection", + "features": [ + { + "id": "0", + "type": "Feature", + "properties": { + "reach_id": "63470800171", + "time_str": "2024-02-01T02:26:50Z", + "wse": "3386.9332", + "wse_units": "m" + }, + "geometry": { + "type": "LineString", + "coordinates": [] + } + }, + { + "id": "1", + "type": "Feature", + "properties": { + "reach_id": "63470800171", + "time_str": "2024-02-08T13:48:41Z", + "wse": "1453.4136", + "wse_units": "m" + }, + "geometry": { + "type": "LineString", + "coordinates": [] + } + } + ] +} +``` + +*Coordinates removed + +### text/csv -CSV or GEOJSON file containing the data for the selected feature and time period. +When the `Accept` header is set to `text/csv` and there is no `output` request parameter, a CSV response is returned with Content-Type set to 'text/csv'. + +Example CSV response: + +```bash +"reach_id,time_str,wse,wse_units\n63470800171,2024-02-01T02:26:50Z,3386.9332,m\n63470800171,2024-02-08T13:48:41Z,1453.4136,m\n" +``` ## Response Codes @@ -153,5 +440,54 @@ CSV or GEOJSON file containing the data for the selected feature and time period | 400* | 'Bad Request': This indicates that the end user entered the parameters incorrectly in their query or time series data could not be located for the feature ID. The API attempts to send a response as to which parameter was incorrect. | | 413 | 'Payload Too Large': The user attempted to retrieve a response that was too large. This is triggered for queries that exceed 6mb. | | 500 | 'Internal Server Error': Internal API error. | +| 415 | 'Unsupported Media Type': The user send an invalid `Accept` header. | *The 400 code is also currently returned for queries where no time series data could be located for the request specified feature ID. The message returned with the response indicates this and it can be helpful to adjust the date ranges you are searching. + +## API Keys [DRAFT] + +> ⚠️ +>API keys not yet implemented but coming soon! Content below is not finalized. More details to follow... + +Users may request a special API key for cases where their intended usage of the API may be considered heavy or more complex. Heavy usage can be defined as continued used with over x requests per day or continue use which require many requests per second or concurrent requests. To request an API key or to discuss your use case, please contact us at x. + +**Note: Users do *not* have to send an API key in their request to use the Hydrocron API. The API key is optional.** + +### How to use an API key in requests [DRAFT] + +Hydrocron API key header: `x-hydrocron-key` + +After receiving the API key, users may send the API key in their request under the `x-hydrocron-key` header. + +Example + +```bash +curl --header 'x-hydrocron-key: ' --location 'https://soto.podaac.earthdatacloud.nasa.gov/hydrocron/v1/timeseries?feature=Reach&feature_id=63470800171&start_time=2024-02-01T00:00:00%2b00:00&end_time=2024-10-30T00:00:00%2b00:00&fields=reach_id,time_str,wse' +``` + +Replace `` with the API key provided to you. + +Python Example + +```python +import requests + +url = "https://soto.podaac.earthdatacloud.nasa.gov/hydrocron/v1/timeseries" + +headers = { + "x-hydrocon-key": "" +} + +params = { + "feature": "Reach", + "feature_id": "63470800171", + "output": "csv", + "start_time": "2024-02-01T00:00:00%2b00:00", + "end_time": "2024-10-30T00:00:00%2b00:00", + "fields": "reach_id,time_str,wse,slope,width" +} + +response = requests.get(url=url, headers=headers, params=params) +``` + +Replace `` with the API key provided to you. diff --git a/hydrocron/api/controllers/authorizer.py b/hydrocron/api/controllers/authorizer.py new file mode 100644 index 00000000..a84d5dbd --- /dev/null +++ b/hydrocron/api/controllers/authorizer.py @@ -0,0 +1,60 @@ +""" +Lambda Authorizer to facilitate usage of API keys and usage plans. + +Taken from example: +https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-use-lambda-authorizer.html +""" + +import json +import logging + +from hydrocron.utils import connection + + +logging.getLogger().setLevel(logging.INFO) + + +ssm_client = connection.ssm_client +STORED_API_KEY_TRUSTED = ssm_client.get_parameter(Name="/service/hydrocron/api-key-trusted", WithDecryption=True)["Parameter"]["Value"] +STORED_API_KEY_DEFAULT = ssm_client.get_parameter(Name="/service/hydrocron/api-key-default", WithDecryption=True)["Parameter"]["Value"] + + +def authorization_handler(event, context): + """Lambda authorizer function to allow or deny a request.""" + + logging.info("Event: %s", event) + logging.info("Context: %s", context) + + api_key_trusted = "" if "x-hydrocron-key" not in event["headers"].keys() else event["headers"]["x-hydrocron-key"] + + if api_key_trusted and api_key_trusted == STORED_API_KEY_TRUSTED: + response_policy = create_policy("trusted_partner", "Allow", event["methodArn"], STORED_API_KEY_TRUSTED) + logging.info("Created policy for truster partner.") + + else: + response_policy = create_policy("default_user", "Allow", event["methodArn"], STORED_API_KEY_DEFAULT) + logging.info("Created policy for default user.") + + logging.info("Response: %s", response_policy) + return json.loads(response_policy) + + +def create_policy(principle_id, effect, method_arn, api_key=""): + """Create IAM policy to return in authorizer response.""" + + authorization_response = { + "principalId": principle_id, + "policyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Action": "execute-api:Invoke", + "Effect": effect, + "Resource": method_arn, + } + ] + }, + "usageIdentifierKey": api_key + } + + return json.dumps(authorization_response) diff --git a/hydrocron/api/controllers/timeseries.py b/hydrocron/api/controllers/timeseries.py index dacd83f4..29463cbd 100644 --- a/hydrocron/api/controllers/timeseries.py +++ b/hydrocron/api/controllers/timeseries.py @@ -9,6 +9,7 @@ import sys import time +from accept_types import get_best_match import pandas as pd import geopandas as gpd from shapely.wkt import loads @@ -21,12 +22,195 @@ logging.getLogger().setLevel(logging.INFO) +ACCEPT_TYPES = ['application/json', 'text/csv', 'application/geo+json'] + + class RequestError(Exception): """ Exception thrown if there is an error encoutered with request """ +def get_request_headers(event): + """Return request headers from event object. + + :param event: Request data dictionary + :type event: dict + + :rtype: dict + """ + + headers = {} + try: + headers['user_agent'] = event['headers']['User-Agent'] + headers['user_ip'] = event['headers']['X-Forwarded-For'].split(',')[0] + headers['accept'] = '*/*' if 'Accept' not in event['headers'].keys() else event['headers']['Accept'] + except KeyError as e: + logging.error('Error encountered with headers: %s', e) + raise RequestError(f'400: Issue encountered with request header: {e}') from e + return headers + + +def get_request_parameters(event, accept_header): + """Return request parameters from event object. + + :param event: Request data dictionary + :type event: dict + + :rtype: dict + """ + + parameters = {} + try: + parameters['feature'] = event['body']['feature'] + parameters['feature_id'] = event['body']['feature_id'] + parameters['start_time'] = event['body']['start_time'] + parameters['end_time'] = event['body']['end_time'] + parameters['output'] = 'default' if 'output' not in event['body'].keys() else event['body']['output'] + parameters['fields'] = event['body']['fields'] + parameters['compact'] = 'false' if 'compact' not in event['body'].keys() else event['body']['compact'] + if accept_header == 'application/geo+json': # Default is different for geo+json + parameters['compact'] = 'true' if 'compact' not in event['body'].keys() else event['body']['compact'] + except KeyError as e: + logging.error('Error encountered with request parameters: %s', e) + raise RequestError(f'400: This required parameter is missing: {e}') from e + + error_message = validate_parameters(parameters) + if error_message: + raise RequestError(error_message) + + return parameters + + +def get_return_type(accept_header, output): + """Determine return type and output value requested by user from Accept header + + :param accept_header: Accept request header + :type accept_header: str + + :param output: Output type requested by user + :type output: str + + :rtype: str, str + """ + + return_type = get_best_match(accept_header, ACCEPT_TYPES) + + if return_type is None: + raise RequestError(f'415: Unsupported media type in Accept request header: {accept_header}. Hydrocron ' + f'only supports the following media types: {ACCEPT_TYPES}') + + if output != 'default': + if return_type != 'application/json': + logging.error('Error encountered with request Accept header: %s and output: %s', return_type, output) + raise RequestError(f'400: Invalid combination of Accept header ({accept_header}) and ' + + f'output request parameter ({output}). Remove output request parameter when ' + + 'requesting application/geo+json or text/csv') + + else: + if return_type in ('application/json', 'application/geo+json'): + output = 'geojson' + elif return_type == 'text/csv': + output = 'csv' + + return return_type, output + + +def validate_parameters(parameters): + """ + Determine if all parameters are present and in the correct format. Return 400 + Bad Request if any errors are found alongside 0 hits. + + :param parameters: Dictionary of query parameters + :type parameters: dict + + :rtype: str + """ + + error_message = '' + + if parameters['feature'] not in ('Node', 'Reach'): + error_message = f'400: feature parameter should be Reach or Node, not: {parameters["feature"]}' + + elif not parameters['feature_id'].isdigit(): + error_message = f'400: feature_id cannot contain letters: {parameters["feature_id"]}' + + elif not is_date_valid(parameters['start_time']) or not is_date_valid(parameters['end_time']): + error_message = ('400: start_time and end_time parameters must conform ' + 'to format: YYYY-MM-DDTHH:MM:SSZ or YYYY-MM-DDTHH:MM:SS-00:00') + + elif parameters['output'] not in ('csv', 'geojson', 'default'): + error_message = f'400: output parameter should be csv or geojson, not: {parameters["output"]}' + + elif not is_fields_valid(parameters['feature'], parameters['fields']): + error_message = '400: fields parameter should contain valid SWOT fields' + + elif parameters['compact'] not in ('true', 'false'): + error_message = f'400: compact parameter should be true or false, not {parameters["compact"]}' + + else: + parameters['start_time'], parameters['end_time'] = sanitize_time(parameters['start_time'], parameters['end_time']) + + return error_message + + +def is_date_valid(query_date): + """ + Check if the query date conforms to the correct format. + + :param query_date: Start or end time of the timeseries + :type query_date: str + + :rtype: bool + """ + + try: + datetime.datetime.strptime(query_date, "%Y-%m-%dT%H:%M:%S%z") + return True + except ValueError: + return False + + +def is_fields_valid(feature, fields): + """ + Check if fields are present in either the reach or node list of columns + + :param feature: The type of feature, either 'Reach' or 'Node' + :type feature: str + + :param fields: List of requested columns + :type fields: str + + :rtype: bool + """ + + fields = fields.split(',') + if feature == 'Reach': + columns = constants.REACH_ALL_COLUMNS + elif feature == 'Node': + columns = constants.NODE_ALL_COLUMNS + else: + columns = [] + return all(field in columns for field in fields) + + +def sanitize_time(start_time, end_time): + """ + Return formatted string to handle cases where request includes non-padded numbers + + :param start_time: Start time of the timeseries + :type start_time: str + :param end_time: End time of the timeseries + :type end_time: str + + :rtype: str, str + """ + + start_time = datetime.datetime.strptime(start_time, "%Y-%m-%dT%H:%M:%S%z").strftime("%Y-%m-%dT%H:%M:%S%z") + end_time = datetime.datetime.strptime(end_time, "%Y-%m-%dT%H:%M:%S%z").strftime("%Y-%m-%dT%H:%M:%S%z") + return start_time, end_time + + def timeseries_get(feature, feature_id, start_time, end_time, output, fields): # noqa: E501 """Get Timeseries for a particular Reach, Node, or LakeID @@ -43,7 +227,7 @@ def timeseries_get(feature, feature_id, start_time, end_time, output, fields): :param output: Format of the data returned :type output: str :param fields: List of requested columns - :type fields: dict + :type fields: str :rtype: Dict, integer """ @@ -96,7 +280,7 @@ def format_json(gdf, fields): # noqa: E501 # pylint: disable=W0613,R0912 :param gdf: DataFrame of results from query :type gdf: gpd.GeoDataFrame :param fields: List of requested columns - :type fields: dict + :type fields: str :rtype: dict, integer """ @@ -123,7 +307,7 @@ def format_csv(gdf, fields): # noqa: E501 # pylint: disable=W0613 :param gdf: DataFrame of results from query :type gdf: gpd.GeoDataFrame :param fields: List of requested columns - :type fields: dict + :type fields: str :rtype: dict, integer """ @@ -156,103 +340,90 @@ def add_units(gdf, columns): return columns + unit_columns -def validate_parameters(feature, feature_id, start_time, end_time, output, fields): - """ - Determine if all parameters are present and in the correct format. Return 400 - Bad Request if any errors are found alongside 0 hits. - - :param feature: Data requested for Reach or Node or Lake - :type feature: str - :param feature_id: ID of the feature to retrieve - :type feature_id: str - :param start_time: Start time of the timeseries - :type start_time: str - :param end_time: End time of the timeseries - :type end_time: str - :param output: Format of the data returned +def get_response(results, hits, elapsed, return_type, output, compact): + """Create and return HTTP response based on results. + + :param results: Dictionary of SWOT timeseries results + :type results: dict + :param hits: Number of results returned from query + :type hits: int + :param elapsed: Number of seconds it took to query for results + :type elapsed: float + :param return_type: Accept request header + :type return_type: str + :param output: Output to return in request + :param results: Dictionary of SWOT timeseries results + :type results: dict + :param hits: Number of results returned from query + :type hits: int + :param elapsed: Number of seconds it took to query for results + :type elapsed: float + :param return_type: Accept request header + :type return_type: str + :param output: Output to return in request :type output: str - :param fields: List of requested columns - :type fields: dict - - :rtype: dict, integer - """ - - data = {'http_code': '200 OK'} - if feature not in ('Node', 'Reach'): - data['http_code'] = '400 Bad Request' - data['error_message'] = f'400: feature parameter should be Reach or Node, not: {feature}' - - elif not feature_id.isdigit(): - data['http_code'] = '400 Bad Request' - data['error_message'] = f'400: feature_id cannot contain letters: {feature_id}' - - elif not is_date_valid(start_time) or not is_date_valid(end_time): - data['http_code'] = '400 Bad Request' - data['error_message'] = '400: start_time and end_time parameters must conform to format: YYYY-MM-DDTHH:MM:SSZ or YYYY-MM-DDTHH:MM:SS-00:00' - - elif output not in ('csv', 'geojson'): - data['http_code'] = '400 Bad Request' - data['error_message'] = f'400: output parameter should be csv or geojson, not: {output}' + :param compact: Whether to return compact GeoJSON response + :type compact: str - elif not is_fields_valid(feature, fields): - data['http_code'] = '400 Bad Request' - data['error_message'] = '400: fields parameter should contain valid SWOT fields' - - return data, 0 - - -def is_date_valid(query_date): - """ - Check if the query date conforms to the correct format. - - :param start_time: Start or end time of the timeseries - :type start_time: str - - :rtype: bool + rtype: dict """ - try: - datetime.datetime.strptime(query_date, "%Y-%m-%dT%H:%M:%S%z") - return True - except ValueError: - return False + if results['http_code'] == '200 OK': + if return_type in ('text/csv', 'application/geo+json'): + if compact == 'true' and return_type == 'application/geo+json': + data = compact_results(results['response']) + else: + data = results['response'] + + else: # 'application/json' + data = { + 'status': results['http_code'], + 'time': elapsed, + 'hits': hits, + 'results': { + 'csv': '', + 'geojson': {} + } + } + if output == 'geojson' and compact == 'true': + results['response'] = compact_results(results['response']) + data['results'][output] = results['response'] -def is_fields_valid(feature, fields): - """ - Check if fields are present in either the reach or node list of columns + else: + logging.error(results) + raise RequestError(results['error_message']) - :param fields: List of requested columns - :type fields: dict + return data - :rtype: bool - """ - fields = fields.split(',') - if feature == 'Reach': - columns = constants.REACH_ALL_COLUMNS - elif feature == 'Node': - columns = constants.NODE_ALL_COLUMNS - else: - columns = [] - return all(field in columns for field in fields) +def compact_results(results): + """Compact GeoJSON results to return a properties object with aggregated + time series data. + :param results: Dictionary of SWOT timeseries results + :type results: dict -def sanitize_time(start_time, end_time): + rtype: dict """ - Return formatted string to handle cases where request includes non-padded numbers - :param start_time: Start time of the timeseries - :type start_time: str - :param end_time: End time of the timeseries - :type end_time: str + response = { + 'type': 'FeatureCollection', + 'features': [ + { + 'id': '0', + 'type': 'Feature', + 'properties': {}, + 'geometry': results['features'][0]['geometry'] # Grab first geometry + } + ] + } - :rtype: str, str - """ + fields = list(results['features'][0]['properties'].keys()) + for field in fields: + response['features'][0]['properties'][field] = [feature['properties'][field] for feature in results['features']] - start_time = datetime.datetime.strptime(start_time, "%Y-%m-%dT%H:%M:%S%z").strftime("%Y-%m-%dT%H:%M:%S%z") - end_time = datetime.datetime.strptime(end_time, "%Y-%m-%dT%H:%M:%S%z").strftime("%Y-%m-%dT%H:%M:%S%z") - return start_time, end_time + return response def lambda_handler(event, context): # noqa: E501 # pylint: disable=W0613 @@ -266,42 +437,36 @@ def lambda_handler(event, context): # noqa: E501 # pylint: disable=W0613 logging.info('request: %s', json.dumps(event['body'])) try: - if event['body'] == {} and 'Elastic-Heartbeat' in event['headers']['User-Agent']: + headers = get_request_headers(event) + # The cloud metrics Elastic Heartbeat is a Health check that occurs + # every 15 seconds. The following statement checks if the current request is an Elastic Heartbeat + # and if it is, simply return success immediately instead of further processing the request + # More background: https://github.com/podaac/hydrocron/issues/89 + if event['body'] == {} and 'Elastic-Heartbeat' in headers['user_agent']: return {} - logging.info('user_ip: %s', event["headers"]["X-Forwarded-For"].split(",")[0]) - except KeyError as e: - logging.error('Error encountered with headers: %s', e) - raise RequestError(f'400: Issue encountered with request header: {e}') from e - - results = {'http_code': '200 OK'} - try: - feature = event['body']['feature'] - feature_id = event['body']['feature_id'] - start_time = event['body']['start_time'] - end_time = event['body']['end_time'] - output = event['body']['output'] - fields = event['body']['fields'] - results, hits = validate_parameters(feature, feature_id, start_time, end_time, output, fields) - except KeyError as e: - missing_parameter = str(e).rsplit(' ', maxsplit=1)[-1] - results['http_code'] = '400 Bad Request' - results['error_message'] = f'400: This required parameter is missing: {missing_parameter}' - hits = 0 - - if results['http_code'] == '200 OK': - start_time, end_time = sanitize_time(start_time, end_time) - results, hits = timeseries_get(feature, feature_id, start_time, end_time, output, fields) + logging.info('user_ip: %s', headers['user_ip']) + parameters = get_request_parameters(event, headers['accept']) + return_type, output = get_return_type(headers['accept'], parameters['output']) + except RequestError as e: + raise e + + results, hits = timeseries_get( + parameters['feature'], + parameters['feature_id'], + parameters['start_time'], + parameters['end_time'], + output, + parameters['fields'] + ) end = time.time() elapsed = round((end - start) * 1000, 3) - data = {'status': results['http_code'], 'time': elapsed, 'hits': hits, 'results': {'csv': "", 'geojson': {}}} - if results['http_code'] == '200 OK': - data['results'][event['body']['output']] = results['response'] - logging.info('response: %s', json.dumps(data)) - logging.info('response_size: %s', str(sys.getsizeof(data))) - else: - logging.error(results) - raise RequestError(results['error_message']) + try: + data = get_response(results, hits, elapsed, return_type, output, parameters['compact']) + except RequestError as e: + raise e + logging.info('response: %s', json.dumps(data)) + logging.info('response_size: %s', str(sys.getsizeof(data))) return data diff --git a/hydrocron/api/swagger/swagger.yaml b/hydrocron/api/swagger/swagger.yaml deleted file mode 100644 index 34624d01..00000000 --- a/hydrocron/api/swagger/swagger.yaml +++ /dev/null @@ -1,111 +0,0 @@ -openapi: 3.0.0 -info: - title: "Get time series data from SWOT observations for reaches, nodes, and/or lakes" - description: "Get time series data from SWOT observations for reaches, nodes, and/or\ - \ lakes" - version: 1.0.0 -servers: -- url: https://virtserver.swaggerhub.com/hydrocron/HydroAPI/1.0.0 - description: "Get time series data from SWOT observations for reaches, nodes, and/or\ - \ lakes" -paths: - /timeseries: - get: - summary: "Get Timeseries for a particular Reach, Node, or LakeID" - description: "Get Timeseries for a particular Reach, Node, or LakeID" - operationId: timeseries_get - parameters: - - name: feature - in: query - description: Data requested for Reach or Node or Lake - required: false - style: form - explode: true - schema: - type: string - enum: [ "Reach", "Lake", "Node"] - example: Reach - - name: feature_id - in: query - description: ID of the feature to retrieve in format CBBTTTSNNNNNN (i.e. 74297700000000) - required: true - style: form - explode: true - schema: - type: string - example: 71224100223 - - name: start_time - in: query - description: Start time of the timeseries - required: true - style: form - explode: true - schema: - type: string - format: date-time - example: 2022-08-04T00:00:00Z - - name: end_time - in: query - description: End time of the timeseries - required: true - style: form - explode: true - schema: - type: string - format: date-time - example: 2022-08-23T00:00:00Z - - name: output - in: query - description: Format of the data returned - required: false - style: form - explode: true - schema: - type: string - enum: [ "csv", "geojson"] - default: geojson - example: geojson - - name: fields - in: query - description: Format of the data returned - required: false - style: form - explode: true - schema: - type: string - default: feature_id, time_str, wse, geometry - example: feature_id, time_str, wse, geometry - responses: - "200": - description: OK - content: - text/csv: - schema: - type: array - items: - type: string - "400": - description: "400 error. The specified URL is invalid (does not exist)." - content: - text/csv: - schema: - type: array - items: - type: string - "404": - description: "404 error. An entry with the specified region was not found." - content: - text/csv: - schema: - type: array - items: - type: string - "413": - description: "413 error. Your query has returned is too large." - content: - text/csv: - schema: - type: array - items: - type: string - x-openapi-router-controller: hydrocron.api.controllers.timeseries diff --git a/hydrocron/db/LOAD_DATA_README.md b/hydrocron/db/LOAD_DATA_README.md deleted file mode 100644 index 1c6f81de..00000000 --- a/hydrocron/db/LOAD_DATA_README.md +++ /dev/null @@ -1,75 +0,0 @@ -# How To: Load the Hydrocron Database with data from CMR - -## Overview - -The main data loading function is hydrocron_db/load_data.py. This runs as a lambda functrion which queries CMR for the data granules from the collection to load into the database. - -## Earthdata Login - -The current version uses the earthaccess python library to handle EDL for the initial CMR query. - -## Invoke the lambda in the AWS Console for initial data loading - -Version 1 of Hydrocron uses two database tables, one for SWOT river reaches and one for SWOT river nodes. - -To load river reaches into the database, find the svc-hydrocron-(env)-load_data-lambda lambda function in the AWS Console. -Under Test, enter the following event JSON: - - { - "body": { - "table_name": "hydrocron-swot-reach-table", - "start_date": "2023-10-24T00:00:00", - "end_date": "2023-10-25T23:59:59", - "obscure_data": "True", - "load_benchmarking_data": "False" - } - } - -To load river nodes into the database, run the same event JSON but replace - "table_name": "hydrocron-swot-reach-table", -with "table_name": "hydrocron-swot-node-table", - -*Note: the --obscure_data parameter will multiply data values by a randomly generated integer during loading when True. This prevents real data from being made available publicly prior to the public release of the data, allowing for beta-testing. This parameter should be set to True when loading data in SIT and UAT. After the public release of the data, the obscured data will be wiped from the tables and --obscure_data will be set to False in OPS, allowing real data values to be available through Hydrocron.* - -*Note: the --load_benchmarking_data parameter should be set to False. Benchmarking data should be loaded using the Load Granule Lambda function, described below.* - -## Subsequent data loading - -After the initial load, run the same commands as above to load new data, changing only the --start_date parameter to the date of the last load, and --end_date parameter to the present date. This will be done manually a limited number of times before integration with data ingest to the collection is ready. - -If parameters are unchanged, previously loaded data will be replaced with the values from the granules in CMR. - -## Load a specific granule individually - -To load a specific individual granule by name, find the svc-hydrocron-(env)-load_granule-lambda lambda function in the AWS Console. -Under Test, enter the following event JSON: - - { - "body": { - "granule_path": "s3://podaac-swot-ops-cumulus-protected/SWOT_L2_HR_RiverSP_1.0/SWOT_L2_HR_RiverSP_Reach_006_545_AU_20231122T000237_20231122T000238_PIB0_01.zip", - "obscure_data": "True", - "table_name": "hydrocron-swot-reach-table", - "load_benchmarking_data": "False" - } - } - -Update the value of the granule path parameter to load a different granule. If running in SIT or UAT, keep obscure_data set to True. If you not loading the performance data, keep the load_benchmarking_data parameter set to False. When this is True, the granule specified in the granule_path parameter will be ignored. - -## Load the performance benchmarking test data in the database - -To load the performance benchmarking data, find the svc-hydrocron-(env)-load-granule-lambda lambda function in the AWS Console. - -Under Test, enter the following event JSON - - { - "body": { - "granule_path": "", - "obscure_data": "True", - "table_name": "hydrocron-swot-reach-table", - "load_benchmarking_data": "True" - } - } - -## Reporting issues - -If you encounter issues or error when loading data, please open an issue on the Hydrocron repository here: [https://github.com/podaac/hydrocron](https://github.com/podaac/hydrocron) \ No newline at end of file diff --git a/hydrocron/utils/connection.py b/hydrocron/utils/connection.py index c78b8f68..e238bf33 100644 --- a/hydrocron/utils/connection.py +++ b/hydrocron/utils/connection.py @@ -11,6 +11,7 @@ import boto3 from boto3.resources.base import ServiceResource import botocore +from botocore.client import BaseClient class Connection(ModuleType): @@ -27,6 +28,7 @@ def __init__(self, name): self._dynamodb_resource = None self._dynamodb_endpoint = self._get_dynamodb_endpoint() self._s3_resource = None + self._ssm_client = None def _get_dynamodb_endpoint(self): """Return dynamodb endpoint URL.""" @@ -69,8 +71,20 @@ def s3_resource(self) -> ServiceResource: return self._s3_resource + @property + def ssm_client(self) -> BaseClient: + """Return SSM client.""" + + if not self._ssm_client: + + ssm_session = boto3.session.Session() + self._ssm_client = ssm_session.client('ssm') + + return self._ssm_client + dynamodb_resource: ServiceResource s3_resource: ServiceResource +ssm_client: BaseClient sys.modules[__name__] = Connection(__name__) diff --git a/poetry.lock b/poetry.lock index 45f3a099..3a1e1786 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,123 +1,138 @@ -# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand. + +[[package]] +name = "accept-types" +version = "0.4.1" +description = "Determine the best content to send in an HTTP response" +optional = false +python-versions = "*" +files = [ + {file = "accept-types-0.4.1.tar.gz", hash = "sha256:fb27099716d8f0360408c8ca86d69dbfed44455834b70d1506250abe521b535a"}, + {file = "accept_types-0.4.1-py3-none-any.whl", hash = "sha256:c87feccdffb66b02f9343ff387d7fd5c451ccb2e1221fbd37ea0cedef5cf290f"}, +] [[package]] name = "accessible-pygments" -version = "0.0.4" +version = "0.0.5" description = "A collection of accessible pygments styles" optional = false -python-versions = "*" +python-versions = ">=3.9" files = [ - {file = "accessible-pygments-0.0.4.tar.gz", hash = "sha256:e7b57a9b15958e9601c7e9eb07a440c813283545a20973f2574a5f453d0e953e"}, - {file = "accessible_pygments-0.0.4-py2.py3-none-any.whl", hash = "sha256:416c6d8c1ea1c5ad8701903a20fcedf953c6e720d64f33dc47bfb2d3f2fa4e8d"}, + {file = "accessible_pygments-0.0.5-py3-none-any.whl", hash = "sha256:88ae3211e68a1d0b011504b2ffc1691feafce124b845bd072ab6f9f66f34d4b7"}, + {file = "accessible_pygments-0.0.5.tar.gz", hash = "sha256:40918d3e6a2b619ad424cb91e556bd3bd8865443d9f22f1dcdf79e33c8046872"}, ] [package.dependencies] pygments = ">=1.5" +[package.extras] +dev = ["pillow", "pkginfo (>=1.10)", "playwright", "pre-commit", "setuptools", "twine (>=5.0)"] +tests = ["hypothesis", "pytest"] + [[package]] name = "aiobotocore" -version = "2.12.1" +version = "2.13.0" description = "Async client for aws services using botocore and aiohttp" optional = false python-versions = ">=3.8" files = [ - {file = "aiobotocore-2.12.1-py3-none-any.whl", hash = "sha256:6a9a3d646cf422f45fdc1e4256e78563ebffba64733bc9b8ca9123614e8ba9af"}, - {file = "aiobotocore-2.12.1.tar.gz", hash = "sha256:8706b28f16f93c541f6ed50352115a79d8f3499539f8d0bb70aa0f7a5379c1fe"}, + {file = "aiobotocore-2.13.0-py3-none-any.whl", hash = "sha256:f812afc678d71b0038fd1ce712ff111ab7f47bab81ce5b4c7d222d4b83bc0cb2"}, + {file = "aiobotocore-2.13.0.tar.gz", hash = "sha256:4badf5cab6ad400216319d14278e2c99ad9b708e28a0f231605a412e632de401"}, ] [package.dependencies] -aiohttp = ">=3.7.4.post0,<4.0.0" +aiohttp = ">=3.9.2,<4.0.0" aioitertools = ">=0.5.1,<1.0.0" -botocore = ">=1.34.41,<1.34.52" +botocore = ">=1.34.70,<1.34.107" wrapt = ">=1.10.10,<2.0.0" [package.extras] -awscli = ["awscli (>=1.32.41,<1.32.52)"] -boto3 = ["boto3 (>=1.34.41,<1.34.52)"] +awscli = ["awscli (>=1.32.70,<1.32.107)"] +boto3 = ["boto3 (>=1.34.70,<1.34.107)"] [[package]] name = "aiohttp" -version = "3.9.3" +version = "3.9.5" description = "Async http client/server framework (asyncio)" optional = false python-versions = ">=3.8" files = [ - {file = "aiohttp-3.9.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:939677b61f9d72a4fa2a042a5eee2a99a24001a67c13da113b2e30396567db54"}, - {file = "aiohttp-3.9.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1f5cd333fcf7590a18334c90f8c9147c837a6ec8a178e88d90a9b96ea03194cc"}, - {file = "aiohttp-3.9.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:82e6aa28dd46374f72093eda8bcd142f7771ee1eb9d1e223ff0fa7177a96b4a5"}, - {file = "aiohttp-3.9.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f56455b0c2c7cc3b0c584815264461d07b177f903a04481dfc33e08a89f0c26b"}, - {file = "aiohttp-3.9.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bca77a198bb6e69795ef2f09a5f4c12758487f83f33d63acde5f0d4919815768"}, - {file = "aiohttp-3.9.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e083c285857b78ee21a96ba1eb1b5339733c3563f72980728ca2b08b53826ca5"}, - {file = "aiohttp-3.9.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab40e6251c3873d86ea9b30a1ac6d7478c09277b32e14745d0d3c6e76e3c7e29"}, - {file = "aiohttp-3.9.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:df822ee7feaaeffb99c1a9e5e608800bd8eda6e5f18f5cfb0dc7eeb2eaa6bbec"}, - {file = "aiohttp-3.9.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:acef0899fea7492145d2bbaaaec7b345c87753168589cc7faf0afec9afe9b747"}, - {file = "aiohttp-3.9.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:cd73265a9e5ea618014802ab01babf1940cecb90c9762d8b9e7d2cc1e1969ec6"}, - {file = "aiohttp-3.9.3-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:a78ed8a53a1221393d9637c01870248a6f4ea5b214a59a92a36f18151739452c"}, - {file = "aiohttp-3.9.3-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:6b0e029353361f1746bac2e4cc19b32f972ec03f0f943b390c4ab3371840aabf"}, - {file = "aiohttp-3.9.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7cf5c9458e1e90e3c390c2639f1017a0379a99a94fdfad3a1fd966a2874bba52"}, - {file = "aiohttp-3.9.3-cp310-cp310-win32.whl", hash = "sha256:3e59c23c52765951b69ec45ddbbc9403a8761ee6f57253250c6e1536cacc758b"}, - {file = "aiohttp-3.9.3-cp310-cp310-win_amd64.whl", hash = "sha256:055ce4f74b82551678291473f66dc9fb9048a50d8324278751926ff0ae7715e5"}, - {file = "aiohttp-3.9.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6b88f9386ff1ad91ace19d2a1c0225896e28815ee09fc6a8932fded8cda97c3d"}, - {file = "aiohttp-3.9.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c46956ed82961e31557b6857a5ca153c67e5476972e5f7190015018760938da2"}, - {file = "aiohttp-3.9.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:07b837ef0d2f252f96009e9b8435ec1fef68ef8b1461933253d318748ec1acdc"}, - {file = "aiohttp-3.9.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dad46e6f620574b3b4801c68255492e0159d1712271cc99d8bdf35f2043ec266"}, - {file = "aiohttp-3.9.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5ed3e046ea7b14938112ccd53d91c1539af3e6679b222f9469981e3dac7ba1ce"}, - {file = "aiohttp-3.9.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:039df344b45ae0b34ac885ab5b53940b174530d4dd8a14ed8b0e2155b9dddccb"}, - {file = "aiohttp-3.9.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7943c414d3a8d9235f5f15c22ace69787c140c80b718dcd57caaade95f7cd93b"}, - {file = "aiohttp-3.9.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:84871a243359bb42c12728f04d181a389718710129b36b6aad0fc4655a7647d4"}, - {file = "aiohttp-3.9.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:5eafe2c065df5401ba06821b9a054d9cb2848867f3c59801b5d07a0be3a380ae"}, - {file = "aiohttp-3.9.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:9d3c9b50f19704552f23b4eaea1fc082fdd82c63429a6506446cbd8737823da3"}, - {file = "aiohttp-3.9.3-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:f033d80bc6283092613882dfe40419c6a6a1527e04fc69350e87a9df02bbc283"}, - {file = "aiohttp-3.9.3-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:2c895a656dd7e061b2fd6bb77d971cc38f2afc277229ce7dd3552de8313a483e"}, - {file = "aiohttp-3.9.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1f5a71d25cd8106eab05f8704cd9167b6e5187bcdf8f090a66c6d88b634802b4"}, - {file = "aiohttp-3.9.3-cp311-cp311-win32.whl", hash = "sha256:50fca156d718f8ced687a373f9e140c1bb765ca16e3d6f4fe116e3df7c05b2c5"}, - {file = "aiohttp-3.9.3-cp311-cp311-win_amd64.whl", hash = "sha256:5fe9ce6c09668063b8447f85d43b8d1c4e5d3d7e92c63173e6180b2ac5d46dd8"}, - {file = "aiohttp-3.9.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:38a19bc3b686ad55804ae931012f78f7a534cce165d089a2059f658f6c91fa60"}, - {file = "aiohttp-3.9.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:770d015888c2a598b377bd2f663adfd947d78c0124cfe7b959e1ef39f5b13869"}, - {file = "aiohttp-3.9.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ee43080e75fc92bf36219926c8e6de497f9b247301bbf88c5c7593d931426679"}, - {file = "aiohttp-3.9.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52df73f14ed99cee84865b95a3d9e044f226320a87af208f068ecc33e0c35b96"}, - {file = "aiohttp-3.9.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dc9b311743a78043b26ffaeeb9715dc360335e5517832f5a8e339f8a43581e4d"}, - {file = "aiohttp-3.9.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b955ed993491f1a5da7f92e98d5dad3c1e14dc175f74517c4e610b1f2456fb11"}, - {file = "aiohttp-3.9.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:504b6981675ace64c28bf4a05a508af5cde526e36492c98916127f5a02354d53"}, - {file = "aiohttp-3.9.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a6fe5571784af92b6bc2fda8d1925cccdf24642d49546d3144948a6a1ed58ca5"}, - {file = "aiohttp-3.9.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ba39e9c8627edc56544c8628cc180d88605df3892beeb2b94c9bc857774848ca"}, - {file = "aiohttp-3.9.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:e5e46b578c0e9db71d04c4b506a2121c0cb371dd89af17a0586ff6769d4c58c1"}, - {file = "aiohttp-3.9.3-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:938a9653e1e0c592053f815f7028e41a3062e902095e5a7dc84617c87267ebd5"}, - {file = "aiohttp-3.9.3-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:c3452ea726c76e92f3b9fae4b34a151981a9ec0a4847a627c43d71a15ac32aa6"}, - {file = "aiohttp-3.9.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ff30218887e62209942f91ac1be902cc80cddb86bf00fbc6783b7a43b2bea26f"}, - {file = "aiohttp-3.9.3-cp312-cp312-win32.whl", hash = "sha256:38f307b41e0bea3294a9a2a87833191e4bcf89bb0365e83a8be3a58b31fb7f38"}, - {file = "aiohttp-3.9.3-cp312-cp312-win_amd64.whl", hash = "sha256:b791a3143681a520c0a17e26ae7465f1b6f99461a28019d1a2f425236e6eedb5"}, - {file = "aiohttp-3.9.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:0ed621426d961df79aa3b963ac7af0d40392956ffa9be022024cd16297b30c8c"}, - {file = "aiohttp-3.9.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7f46acd6a194287b7e41e87957bfe2ad1ad88318d447caf5b090012f2c5bb528"}, - {file = "aiohttp-3.9.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:feeb18a801aacb098220e2c3eea59a512362eb408d4afd0c242044c33ad6d542"}, - {file = "aiohttp-3.9.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f734e38fd8666f53da904c52a23ce517f1b07722118d750405af7e4123933511"}, - {file = "aiohttp-3.9.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b40670ec7e2156d8e57f70aec34a7216407848dfe6c693ef131ddf6e76feb672"}, - {file = "aiohttp-3.9.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fdd215b7b7fd4a53994f238d0f46b7ba4ac4c0adb12452beee724ddd0743ae5d"}, - {file = "aiohttp-3.9.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:017a21b0df49039c8f46ca0971b3a7fdc1f56741ab1240cb90ca408049766168"}, - {file = "aiohttp-3.9.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e99abf0bba688259a496f966211c49a514e65afa9b3073a1fcee08856e04425b"}, - {file = "aiohttp-3.9.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:648056db9a9fa565d3fa851880f99f45e3f9a771dd3ff3bb0c048ea83fb28194"}, - {file = "aiohttp-3.9.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8aacb477dc26797ee089721536a292a664846489c49d3ef9725f992449eda5a8"}, - {file = "aiohttp-3.9.3-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:522a11c934ea660ff8953eda090dcd2154d367dec1ae3c540aff9f8a5c109ab4"}, - {file = "aiohttp-3.9.3-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:5bce0dc147ca85caa5d33debc4f4d65e8e8b5c97c7f9f660f215fa74fc49a321"}, - {file = "aiohttp-3.9.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:4b4af9f25b49a7be47c0972139e59ec0e8285c371049df1a63b6ca81fdd216a2"}, - {file = "aiohttp-3.9.3-cp38-cp38-win32.whl", hash = "sha256:298abd678033b8571995650ccee753d9458dfa0377be4dba91e4491da3f2be63"}, - {file = "aiohttp-3.9.3-cp38-cp38-win_amd64.whl", hash = "sha256:69361bfdca5468c0488d7017b9b1e5ce769d40b46a9f4a2eed26b78619e9396c"}, - {file = "aiohttp-3.9.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:0fa43c32d1643f518491d9d3a730f85f5bbaedcbd7fbcae27435bb8b7a061b29"}, - {file = "aiohttp-3.9.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:835a55b7ca49468aaaac0b217092dfdff370e6c215c9224c52f30daaa735c1c1"}, - {file = "aiohttp-3.9.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:06a9b2c8837d9a94fae16c6223acc14b4dfdff216ab9b7202e07a9a09541168f"}, - {file = "aiohttp-3.9.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:abf151955990d23f84205286938796c55ff11bbfb4ccfada8c9c83ae6b3c89a3"}, - {file = "aiohttp-3.9.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:59c26c95975f26e662ca78fdf543d4eeaef70e533a672b4113dd888bd2423caa"}, - {file = "aiohttp-3.9.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f95511dd5d0e05fd9728bac4096319f80615aaef4acbecb35a990afebe953b0e"}, - {file = "aiohttp-3.9.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:595f105710293e76b9dc09f52e0dd896bd064a79346234b521f6b968ffdd8e58"}, - {file = "aiohttp-3.9.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7c8b816c2b5af5c8a436df44ca08258fc1a13b449393a91484225fcb7545533"}, - {file = "aiohttp-3.9.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f1088fa100bf46e7b398ffd9904f4808a0612e1d966b4aa43baa535d1b6341eb"}, - {file = "aiohttp-3.9.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f59dfe57bb1ec82ac0698ebfcdb7bcd0e99c255bd637ff613760d5f33e7c81b3"}, - {file = "aiohttp-3.9.3-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:361a1026c9dd4aba0109e4040e2aecf9884f5cfe1b1b1bd3d09419c205e2e53d"}, - {file = "aiohttp-3.9.3-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:363afe77cfcbe3a36353d8ea133e904b108feea505aa4792dad6585a8192c55a"}, - {file = "aiohttp-3.9.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8e2c45c208c62e955e8256949eb225bd8b66a4c9b6865729a786f2aa79b72e9d"}, - {file = "aiohttp-3.9.3-cp39-cp39-win32.whl", hash = "sha256:f7217af2e14da0856e082e96ff637f14ae45c10a5714b63c77f26d8884cf1051"}, - {file = "aiohttp-3.9.3-cp39-cp39-win_amd64.whl", hash = "sha256:27468897f628c627230dba07ec65dc8d0db566923c48f29e084ce382119802bc"}, - {file = "aiohttp-3.9.3.tar.gz", hash = "sha256:90842933e5d1ff760fae6caca4b2b3edba53ba8f4b71e95dacf2818a2aca06f7"}, + {file = "aiohttp-3.9.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:fcde4c397f673fdec23e6b05ebf8d4751314fa7c24f93334bf1f1364c1c69ac7"}, + {file = "aiohttp-3.9.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5d6b3f1fabe465e819aed2c421a6743d8debbde79b6a8600739300630a01bf2c"}, + {file = "aiohttp-3.9.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6ae79c1bc12c34082d92bf9422764f799aee4746fd7a392db46b7fd357d4a17a"}, + {file = "aiohttp-3.9.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d3ebb9e1316ec74277d19c5f482f98cc65a73ccd5430540d6d11682cd857430"}, + {file = "aiohttp-3.9.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:84dabd95154f43a2ea80deffec9cb44d2e301e38a0c9d331cc4aa0166fe28ae3"}, + {file = "aiohttp-3.9.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c8a02fbeca6f63cb1f0475c799679057fc9268b77075ab7cf3f1c600e81dd46b"}, + {file = "aiohttp-3.9.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c26959ca7b75ff768e2776d8055bf9582a6267e24556bb7f7bd29e677932be72"}, + {file = "aiohttp-3.9.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:714d4e5231fed4ba2762ed489b4aec07b2b9953cf4ee31e9871caac895a839c0"}, + {file = "aiohttp-3.9.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e7a6a8354f1b62e15d48e04350f13e726fa08b62c3d7b8401c0a1314f02e3558"}, + {file = "aiohttp-3.9.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:c413016880e03e69d166efb5a1a95d40f83d5a3a648d16486592c49ffb76d0db"}, + {file = "aiohttp-3.9.5-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:ff84aeb864e0fac81f676be9f4685f0527b660f1efdc40dcede3c251ef1e867f"}, + {file = "aiohttp-3.9.5-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:ad7f2919d7dac062f24d6f5fe95d401597fbb015a25771f85e692d043c9d7832"}, + {file = "aiohttp-3.9.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:702e2c7c187c1a498a4e2b03155d52658fdd6fda882d3d7fbb891a5cf108bb10"}, + {file = "aiohttp-3.9.5-cp310-cp310-win32.whl", hash = "sha256:67c3119f5ddc7261d47163ed86d760ddf0e625cd6246b4ed852e82159617b5fb"}, + {file = "aiohttp-3.9.5-cp310-cp310-win_amd64.whl", hash = "sha256:471f0ef53ccedec9995287f02caf0c068732f026455f07db3f01a46e49d76bbb"}, + {file = "aiohttp-3.9.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e0ae53e33ee7476dd3d1132f932eeb39bf6125083820049d06edcdca4381f342"}, + {file = "aiohttp-3.9.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c088c4d70d21f8ca5c0b8b5403fe84a7bc8e024161febdd4ef04575ef35d474d"}, + {file = "aiohttp-3.9.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:639d0042b7670222f33b0028de6b4e2fad6451462ce7df2af8aee37dcac55424"}, + {file = "aiohttp-3.9.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f26383adb94da5e7fb388d441bf09c61e5e35f455a3217bfd790c6b6bc64b2ee"}, + {file = "aiohttp-3.9.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:66331d00fb28dc90aa606d9a54304af76b335ae204d1836f65797d6fe27f1ca2"}, + {file = "aiohttp-3.9.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4ff550491f5492ab5ed3533e76b8567f4b37bd2995e780a1f46bca2024223233"}, + {file = "aiohttp-3.9.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f22eb3a6c1080d862befa0a89c380b4dafce29dc6cd56083f630073d102eb595"}, + {file = "aiohttp-3.9.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a81b1143d42b66ffc40a441379387076243ef7b51019204fd3ec36b9f69e77d6"}, + {file = "aiohttp-3.9.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f64fd07515dad67f24b6ea4a66ae2876c01031de91c93075b8093f07c0a2d93d"}, + {file = "aiohttp-3.9.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:93e22add827447d2e26d67c9ac0161756007f152fdc5210277d00a85f6c92323"}, + {file = "aiohttp-3.9.5-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:55b39c8684a46e56ef8c8d24faf02de4a2b2ac60d26cee93bc595651ff545de9"}, + {file = "aiohttp-3.9.5-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4715a9b778f4293b9f8ae7a0a7cef9829f02ff8d6277a39d7f40565c737d3771"}, + {file = "aiohttp-3.9.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:afc52b8d969eff14e069a710057d15ab9ac17cd4b6753042c407dcea0e40bf75"}, + {file = "aiohttp-3.9.5-cp311-cp311-win32.whl", hash = "sha256:b3df71da99c98534be076196791adca8819761f0bf6e08e07fd7da25127150d6"}, + {file = "aiohttp-3.9.5-cp311-cp311-win_amd64.whl", hash = "sha256:88e311d98cc0bf45b62fc46c66753a83445f5ab20038bcc1b8a1cc05666f428a"}, + {file = "aiohttp-3.9.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:c7a4b7a6cf5b6eb11e109a9755fd4fda7d57395f8c575e166d363b9fc3ec4678"}, + {file = "aiohttp-3.9.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:0a158704edf0abcac8ac371fbb54044f3270bdbc93e254a82b6c82be1ef08f3c"}, + {file = "aiohttp-3.9.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d153f652a687a8e95ad367a86a61e8d53d528b0530ef382ec5aaf533140ed00f"}, + {file = "aiohttp-3.9.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82a6a97d9771cb48ae16979c3a3a9a18b600a8505b1115cfe354dfb2054468b4"}, + {file = "aiohttp-3.9.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:60cdbd56f4cad9f69c35eaac0fbbdf1f77b0ff9456cebd4902f3dd1cf096464c"}, + {file = "aiohttp-3.9.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8676e8fd73141ded15ea586de0b7cda1542960a7b9ad89b2b06428e97125d4fa"}, + {file = "aiohttp-3.9.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da00da442a0e31f1c69d26d224e1efd3a1ca5bcbf210978a2ca7426dfcae9f58"}, + {file = "aiohttp-3.9.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:18f634d540dd099c262e9f887c8bbacc959847cfe5da7a0e2e1cf3f14dbf2daf"}, + {file = "aiohttp-3.9.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:320e8618eda64e19d11bdb3bd04ccc0a816c17eaecb7e4945d01deee2a22f95f"}, + {file = "aiohttp-3.9.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:2faa61a904b83142747fc6a6d7ad8fccff898c849123030f8e75d5d967fd4a81"}, + {file = "aiohttp-3.9.5-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:8c64a6dc3fe5db7b1b4d2b5cb84c4f677768bdc340611eca673afb7cf416ef5a"}, + {file = "aiohttp-3.9.5-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:393c7aba2b55559ef7ab791c94b44f7482a07bf7640d17b341b79081f5e5cd1a"}, + {file = "aiohttp-3.9.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:c671dc117c2c21a1ca10c116cfcd6e3e44da7fcde37bf83b2be485ab377b25da"}, + {file = "aiohttp-3.9.5-cp312-cp312-win32.whl", hash = "sha256:5a7ee16aab26e76add4afc45e8f8206c95d1d75540f1039b84a03c3b3800dd59"}, + {file = "aiohttp-3.9.5-cp312-cp312-win_amd64.whl", hash = "sha256:5ca51eadbd67045396bc92a4345d1790b7301c14d1848feaac1d6a6c9289e888"}, + {file = "aiohttp-3.9.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:694d828b5c41255e54bc2dddb51a9f5150b4eefa9886e38b52605a05d96566e8"}, + {file = "aiohttp-3.9.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0605cc2c0088fcaae79f01c913a38611ad09ba68ff482402d3410bf59039bfb8"}, + {file = "aiohttp-3.9.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4558e5012ee03d2638c681e156461d37b7a113fe13970d438d95d10173d25f78"}, + {file = "aiohttp-3.9.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9dbc053ac75ccc63dc3a3cc547b98c7258ec35a215a92bd9f983e0aac95d3d5b"}, + {file = "aiohttp-3.9.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4109adee842b90671f1b689901b948f347325045c15f46b39797ae1bf17019de"}, + {file = "aiohttp-3.9.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a6ea1a5b409a85477fd8e5ee6ad8f0e40bf2844c270955e09360418cfd09abac"}, + {file = "aiohttp-3.9.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3c2890ca8c59ee683fd09adf32321a40fe1cf164e3387799efb2acebf090c11"}, + {file = "aiohttp-3.9.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3916c8692dbd9d55c523374a3b8213e628424d19116ac4308e434dbf6d95bbdd"}, + {file = "aiohttp-3.9.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8d1964eb7617907c792ca00b341b5ec3e01ae8c280825deadbbd678447b127e1"}, + {file = "aiohttp-3.9.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:d5ab8e1f6bee051a4bf6195e38a5c13e5e161cb7bad83d8854524798bd9fcd6e"}, + {file = "aiohttp-3.9.5-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:52c27110f3862a1afbcb2af4281fc9fdc40327fa286c4625dfee247c3ba90156"}, + {file = "aiohttp-3.9.5-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:7f64cbd44443e80094309875d4f9c71d0401e966d191c3d469cde4642bc2e031"}, + {file = "aiohttp-3.9.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8b4f72fbb66279624bfe83fd5eb6aea0022dad8eec62b71e7bf63ee1caadeafe"}, + {file = "aiohttp-3.9.5-cp38-cp38-win32.whl", hash = "sha256:6380c039ec52866c06d69b5c7aad5478b24ed11696f0e72f6b807cfb261453da"}, + {file = "aiohttp-3.9.5-cp38-cp38-win_amd64.whl", hash = "sha256:da22dab31d7180f8c3ac7c7635f3bcd53808f374f6aa333fe0b0b9e14b01f91a"}, + {file = "aiohttp-3.9.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:1732102949ff6087589408d76cd6dea656b93c896b011ecafff418c9661dc4ed"}, + {file = "aiohttp-3.9.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c6021d296318cb6f9414b48e6a439a7f5d1f665464da507e8ff640848ee2a58a"}, + {file = "aiohttp-3.9.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:239f975589a944eeb1bad26b8b140a59a3a320067fb3cd10b75c3092405a1372"}, + {file = "aiohttp-3.9.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3b7b30258348082826d274504fbc7c849959f1989d86c29bc355107accec6cfb"}, + {file = "aiohttp-3.9.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cd2adf5c87ff6d8b277814a28a535b59e20bfea40a101db6b3bdca7e9926bc24"}, + {file = "aiohttp-3.9.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e9a3d838441bebcf5cf442700e3963f58b5c33f015341f9ea86dcd7d503c07e2"}, + {file = "aiohttp-3.9.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e3a1ae66e3d0c17cf65c08968a5ee3180c5a95920ec2731f53343fac9bad106"}, + {file = "aiohttp-3.9.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9c69e77370cce2d6df5d12b4e12bdcca60c47ba13d1cbbc8645dd005a20b738b"}, + {file = "aiohttp-3.9.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0cbf56238f4bbf49dab8c2dc2e6b1b68502b1e88d335bea59b3f5b9f4c001475"}, + {file = "aiohttp-3.9.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:d1469f228cd9ffddd396d9948b8c9cd8022b6d1bf1e40c6f25b0fb90b4f893ed"}, + {file = "aiohttp-3.9.5-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:45731330e754f5811c314901cebdf19dd776a44b31927fa4b4dbecab9e457b0c"}, + {file = "aiohttp-3.9.5-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:3fcb4046d2904378e3aeea1df51f697b0467f2aac55d232c87ba162709478c46"}, + {file = "aiohttp-3.9.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8cf142aa6c1a751fcb364158fd710b8a9be874b81889c2bd13aa8893197455e2"}, + {file = "aiohttp-3.9.5-cp39-cp39-win32.whl", hash = "sha256:7b179eea70833c8dee51ec42f3b4097bd6370892fa93f510f76762105568cf09"}, + {file = "aiohttp-3.9.5-cp39-cp39-win_amd64.whl", hash = "sha256:38d80498e2e169bc61418ff36170e0aad0cd268da8b38a17c4cf29d254a8b3f1"}, + {file = "aiohttp-3.9.5.tar.gz", hash = "sha256:edea7d15772ceeb29db4aff55e482d4bcfb6ae160ce144f2682de02f6d693551"}, ] [package.dependencies] @@ -247,13 +262,13 @@ tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "p [[package]] name = "babel" -version = "2.14.0" +version = "2.15.0" description = "Internationalization utilities" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "Babel-2.14.0-py3-none-any.whl", hash = "sha256:efb1a25b7118e67ce3a259bed20545c29cb68be8ad2c784c83689981b7a57287"}, - {file = "Babel-2.14.0.tar.gz", hash = "sha256:6919867db036398ba21eb5c7a0f6b28ab8cbc3ae7a73a44ebe34ae74a4e7d363"}, + {file = "Babel-2.15.0-py3-none-any.whl", hash = "sha256:08706bdad8d0a3413266ab61bd6c34d0c28d6e1e7badf40a2cebe67644e2e1fb"}, + {file = "babel-2.15.0.tar.gz", hash = "sha256:8daf0e265d05768bc6c7a314cf1321e9a123afc328cc635c18622a2f30a04413"}, ] [package.extras] @@ -282,17 +297,17 @@ lxml = ["lxml"] [[package]] name = "boto3" -version = "1.34.51" +version = "1.34.106" description = "The AWS SDK for Python" optional = false -python-versions = ">= 3.8" +python-versions = ">=3.8" files = [ - {file = "boto3-1.34.51-py3-none-any.whl", hash = "sha256:67732634dc7d0afda879bd9a5e2d0818a2c14a98bef766b95a3e253ea5104cb9"}, - {file = "boto3-1.34.51.tar.gz", hash = "sha256:2cd9463e738a184cbce8a6824027c22163c5f73e277a35ff5aa0fb0e845b4301"}, + {file = "boto3-1.34.106-py3-none-any.whl", hash = "sha256:d3be4e1dd5d546a001cd4da805816934cbde9d395316546e9411fec341ade5cf"}, + {file = "boto3-1.34.106.tar.gz", hash = "sha256:6165b8cf1c7e625628ab28b32f9027064c8f5e5fca1c38d7fc228cd22069a19f"}, ] [package.dependencies] -botocore = ">=1.34.51,<1.35.0" +botocore = ">=1.34.106,<1.35.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.10.0,<0.11.0" @@ -301,13 +316,13 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "boto3-stubs" -version = "1.34.72" -description = "Type annotations for boto3 1.34.72 generated with mypy-boto3-builder 7.23.2" +version = "1.34.128" +description = "Type annotations for boto3 1.34.128 generated with mypy-boto3-builder 7.24.0" optional = false python-versions = ">=3.8" files = [ - {file = "boto3-stubs-1.34.72.tar.gz", hash = "sha256:7903dc8a203beb74d6237b266ae064ff5a9b276074af7500b7db48544649596a"}, - {file = "boto3_stubs-1.34.72-py3-none-any.whl", hash = "sha256:df41c849ad6b42096e1293528bf72e05773d1fdeedddc9e5410417eb9ac3f02f"}, + {file = "boto3_stubs-1.34.128-py3-none-any.whl", hash = "sha256:cac2da12240412848c01c5c7ade6a50cf79818aeb8fece2b7b6d2fbab62b64bf"}, + {file = "boto3_stubs-1.34.128.tar.gz", hash = "sha256:f4dff208a9cf00797a6c2b1847ab28d0b931a86a41bf00c8e4f55b37fb6611a5"}, ] [package.dependencies] @@ -321,8 +336,7 @@ accessanalyzer = ["mypy-boto3-accessanalyzer (>=1.34.0,<1.35.0)"] account = ["mypy-boto3-account (>=1.34.0,<1.35.0)"] acm = ["mypy-boto3-acm (>=1.34.0,<1.35.0)"] acm-pca = ["mypy-boto3-acm-pca (>=1.34.0,<1.35.0)"] -alexaforbusiness = ["mypy-boto3-alexaforbusiness (>=1.34.0,<1.35.0)"] -all = ["mypy-boto3-accessanalyzer (>=1.34.0,<1.35.0)", "mypy-boto3-account (>=1.34.0,<1.35.0)", "mypy-boto3-acm (>=1.34.0,<1.35.0)", "mypy-boto3-acm-pca (>=1.34.0,<1.35.0)", "mypy-boto3-alexaforbusiness (>=1.34.0,<1.35.0)", "mypy-boto3-amp (>=1.34.0,<1.35.0)", "mypy-boto3-amplify (>=1.34.0,<1.35.0)", "mypy-boto3-amplifybackend (>=1.34.0,<1.35.0)", "mypy-boto3-amplifyuibuilder (>=1.34.0,<1.35.0)", "mypy-boto3-apigateway (>=1.34.0,<1.35.0)", "mypy-boto3-apigatewaymanagementapi (>=1.34.0,<1.35.0)", "mypy-boto3-apigatewayv2 (>=1.34.0,<1.35.0)", "mypy-boto3-appconfig (>=1.34.0,<1.35.0)", "mypy-boto3-appconfigdata (>=1.34.0,<1.35.0)", "mypy-boto3-appfabric (>=1.34.0,<1.35.0)", "mypy-boto3-appflow (>=1.34.0,<1.35.0)", "mypy-boto3-appintegrations (>=1.34.0,<1.35.0)", "mypy-boto3-application-autoscaling (>=1.34.0,<1.35.0)", "mypy-boto3-application-insights (>=1.34.0,<1.35.0)", "mypy-boto3-applicationcostprofiler (>=1.34.0,<1.35.0)", "mypy-boto3-appmesh (>=1.34.0,<1.35.0)", "mypy-boto3-apprunner (>=1.34.0,<1.35.0)", "mypy-boto3-appstream (>=1.34.0,<1.35.0)", "mypy-boto3-appsync (>=1.34.0,<1.35.0)", "mypy-boto3-arc-zonal-shift (>=1.34.0,<1.35.0)", "mypy-boto3-artifact (>=1.34.0,<1.35.0)", "mypy-boto3-athena (>=1.34.0,<1.35.0)", "mypy-boto3-auditmanager (>=1.34.0,<1.35.0)", "mypy-boto3-autoscaling (>=1.34.0,<1.35.0)", "mypy-boto3-autoscaling-plans (>=1.34.0,<1.35.0)", "mypy-boto3-b2bi (>=1.34.0,<1.35.0)", "mypy-boto3-backup (>=1.34.0,<1.35.0)", "mypy-boto3-backup-gateway (>=1.34.0,<1.35.0)", "mypy-boto3-backupstorage (>=1.34.0,<1.35.0)", "mypy-boto3-batch (>=1.34.0,<1.35.0)", "mypy-boto3-bcm-data-exports (>=1.34.0,<1.35.0)", "mypy-boto3-bedrock (>=1.34.0,<1.35.0)", "mypy-boto3-bedrock-agent (>=1.34.0,<1.35.0)", "mypy-boto3-bedrock-agent-runtime (>=1.34.0,<1.35.0)", "mypy-boto3-bedrock-runtime (>=1.34.0,<1.35.0)", "mypy-boto3-billingconductor (>=1.34.0,<1.35.0)", "mypy-boto3-braket (>=1.34.0,<1.35.0)", "mypy-boto3-budgets (>=1.34.0,<1.35.0)", "mypy-boto3-ce (>=1.34.0,<1.35.0)", "mypy-boto3-chatbot (>=1.34.0,<1.35.0)", "mypy-boto3-chime (>=1.34.0,<1.35.0)", "mypy-boto3-chime-sdk-identity (>=1.34.0,<1.35.0)", "mypy-boto3-chime-sdk-media-pipelines (>=1.34.0,<1.35.0)", "mypy-boto3-chime-sdk-meetings (>=1.34.0,<1.35.0)", "mypy-boto3-chime-sdk-messaging (>=1.34.0,<1.35.0)", "mypy-boto3-chime-sdk-voice (>=1.34.0,<1.35.0)", "mypy-boto3-cleanrooms (>=1.34.0,<1.35.0)", "mypy-boto3-cleanroomsml (>=1.34.0,<1.35.0)", "mypy-boto3-cloud9 (>=1.34.0,<1.35.0)", "mypy-boto3-cloudcontrol (>=1.34.0,<1.35.0)", "mypy-boto3-clouddirectory (>=1.34.0,<1.35.0)", "mypy-boto3-cloudformation (>=1.34.0,<1.35.0)", "mypy-boto3-cloudfront (>=1.34.0,<1.35.0)", "mypy-boto3-cloudfront-keyvaluestore (>=1.34.0,<1.35.0)", "mypy-boto3-cloudhsm (>=1.34.0,<1.35.0)", "mypy-boto3-cloudhsmv2 (>=1.34.0,<1.35.0)", "mypy-boto3-cloudsearch (>=1.34.0,<1.35.0)", "mypy-boto3-cloudsearchdomain (>=1.34.0,<1.35.0)", "mypy-boto3-cloudtrail (>=1.34.0,<1.35.0)", "mypy-boto3-cloudtrail-data (>=1.34.0,<1.35.0)", "mypy-boto3-cloudwatch (>=1.34.0,<1.35.0)", "mypy-boto3-codeartifact (>=1.34.0,<1.35.0)", "mypy-boto3-codebuild (>=1.34.0,<1.35.0)", "mypy-boto3-codecatalyst (>=1.34.0,<1.35.0)", "mypy-boto3-codecommit (>=1.34.0,<1.35.0)", "mypy-boto3-codedeploy (>=1.34.0,<1.35.0)", "mypy-boto3-codeguru-reviewer (>=1.34.0,<1.35.0)", "mypy-boto3-codeguru-security (>=1.34.0,<1.35.0)", "mypy-boto3-codeguruprofiler (>=1.34.0,<1.35.0)", "mypy-boto3-codepipeline (>=1.34.0,<1.35.0)", "mypy-boto3-codestar (>=1.34.0,<1.35.0)", "mypy-boto3-codestar-connections (>=1.34.0,<1.35.0)", "mypy-boto3-codestar-notifications (>=1.34.0,<1.35.0)", "mypy-boto3-cognito-identity (>=1.34.0,<1.35.0)", "mypy-boto3-cognito-idp (>=1.34.0,<1.35.0)", "mypy-boto3-cognito-sync (>=1.34.0,<1.35.0)", "mypy-boto3-comprehend (>=1.34.0,<1.35.0)", "mypy-boto3-comprehendmedical (>=1.34.0,<1.35.0)", "mypy-boto3-compute-optimizer (>=1.34.0,<1.35.0)", "mypy-boto3-config (>=1.34.0,<1.35.0)", "mypy-boto3-connect (>=1.34.0,<1.35.0)", "mypy-boto3-connect-contact-lens (>=1.34.0,<1.35.0)", "mypy-boto3-connectcampaigns (>=1.34.0,<1.35.0)", "mypy-boto3-connectcases (>=1.34.0,<1.35.0)", "mypy-boto3-connectparticipant (>=1.34.0,<1.35.0)", "mypy-boto3-controltower (>=1.34.0,<1.35.0)", "mypy-boto3-cost-optimization-hub (>=1.34.0,<1.35.0)", "mypy-boto3-cur (>=1.34.0,<1.35.0)", "mypy-boto3-customer-profiles (>=1.34.0,<1.35.0)", "mypy-boto3-databrew (>=1.34.0,<1.35.0)", "mypy-boto3-dataexchange (>=1.34.0,<1.35.0)", "mypy-boto3-datapipeline (>=1.34.0,<1.35.0)", "mypy-boto3-datasync (>=1.34.0,<1.35.0)", "mypy-boto3-datazone (>=1.34.0,<1.35.0)", "mypy-boto3-dax (>=1.34.0,<1.35.0)", "mypy-boto3-detective (>=1.34.0,<1.35.0)", "mypy-boto3-devicefarm (>=1.34.0,<1.35.0)", "mypy-boto3-devops-guru (>=1.34.0,<1.35.0)", "mypy-boto3-directconnect (>=1.34.0,<1.35.0)", "mypy-boto3-discovery (>=1.34.0,<1.35.0)", "mypy-boto3-dlm (>=1.34.0,<1.35.0)", "mypy-boto3-dms (>=1.34.0,<1.35.0)", "mypy-boto3-docdb (>=1.34.0,<1.35.0)", "mypy-boto3-docdb-elastic (>=1.34.0,<1.35.0)", "mypy-boto3-drs (>=1.34.0,<1.35.0)", "mypy-boto3-ds (>=1.34.0,<1.35.0)", "mypy-boto3-dynamodb (>=1.34.0,<1.35.0)", "mypy-boto3-dynamodbstreams (>=1.34.0,<1.35.0)", "mypy-boto3-ebs (>=1.34.0,<1.35.0)", "mypy-boto3-ec2 (>=1.34.0,<1.35.0)", "mypy-boto3-ec2-instance-connect (>=1.34.0,<1.35.0)", "mypy-boto3-ecr (>=1.34.0,<1.35.0)", "mypy-boto3-ecr-public (>=1.34.0,<1.35.0)", "mypy-boto3-ecs (>=1.34.0,<1.35.0)", "mypy-boto3-efs (>=1.34.0,<1.35.0)", "mypy-boto3-eks (>=1.34.0,<1.35.0)", "mypy-boto3-eks-auth (>=1.34.0,<1.35.0)", "mypy-boto3-elastic-inference (>=1.34.0,<1.35.0)", "mypy-boto3-elasticache (>=1.34.0,<1.35.0)", "mypy-boto3-elasticbeanstalk (>=1.34.0,<1.35.0)", "mypy-boto3-elastictranscoder (>=1.34.0,<1.35.0)", "mypy-boto3-elb (>=1.34.0,<1.35.0)", "mypy-boto3-elbv2 (>=1.34.0,<1.35.0)", "mypy-boto3-emr (>=1.34.0,<1.35.0)", "mypy-boto3-emr-containers (>=1.34.0,<1.35.0)", "mypy-boto3-emr-serverless (>=1.34.0,<1.35.0)", "mypy-boto3-entityresolution (>=1.34.0,<1.35.0)", "mypy-boto3-es (>=1.34.0,<1.35.0)", "mypy-boto3-events (>=1.34.0,<1.35.0)", "mypy-boto3-evidently (>=1.34.0,<1.35.0)", "mypy-boto3-finspace (>=1.34.0,<1.35.0)", "mypy-boto3-finspace-data (>=1.34.0,<1.35.0)", "mypy-boto3-firehose (>=1.34.0,<1.35.0)", "mypy-boto3-fis (>=1.34.0,<1.35.0)", "mypy-boto3-fms (>=1.34.0,<1.35.0)", "mypy-boto3-forecast (>=1.34.0,<1.35.0)", "mypy-boto3-forecastquery (>=1.34.0,<1.35.0)", "mypy-boto3-frauddetector (>=1.34.0,<1.35.0)", "mypy-boto3-freetier (>=1.34.0,<1.35.0)", "mypy-boto3-fsx (>=1.34.0,<1.35.0)", "mypy-boto3-gamelift (>=1.34.0,<1.35.0)", "mypy-boto3-glacier (>=1.34.0,<1.35.0)", "mypy-boto3-globalaccelerator (>=1.34.0,<1.35.0)", "mypy-boto3-glue (>=1.34.0,<1.35.0)", "mypy-boto3-grafana (>=1.34.0,<1.35.0)", "mypy-boto3-greengrass (>=1.34.0,<1.35.0)", "mypy-boto3-greengrassv2 (>=1.34.0,<1.35.0)", "mypy-boto3-groundstation (>=1.34.0,<1.35.0)", "mypy-boto3-guardduty (>=1.34.0,<1.35.0)", "mypy-boto3-health (>=1.34.0,<1.35.0)", "mypy-boto3-healthlake (>=1.34.0,<1.35.0)", "mypy-boto3-honeycode (>=1.34.0,<1.35.0)", "mypy-boto3-iam (>=1.34.0,<1.35.0)", "mypy-boto3-identitystore (>=1.34.0,<1.35.0)", "mypy-boto3-imagebuilder (>=1.34.0,<1.35.0)", "mypy-boto3-importexport (>=1.34.0,<1.35.0)", "mypy-boto3-inspector (>=1.34.0,<1.35.0)", "mypy-boto3-inspector-scan (>=1.34.0,<1.35.0)", "mypy-boto3-inspector2 (>=1.34.0,<1.35.0)", "mypy-boto3-internetmonitor (>=1.34.0,<1.35.0)", "mypy-boto3-iot (>=1.34.0,<1.35.0)", "mypy-boto3-iot-data (>=1.34.0,<1.35.0)", "mypy-boto3-iot-jobs-data (>=1.34.0,<1.35.0)", "mypy-boto3-iot1click-devices (>=1.34.0,<1.35.0)", "mypy-boto3-iot1click-projects (>=1.34.0,<1.35.0)", "mypy-boto3-iotanalytics (>=1.34.0,<1.35.0)", "mypy-boto3-iotdeviceadvisor (>=1.34.0,<1.35.0)", "mypy-boto3-iotevents (>=1.34.0,<1.35.0)", "mypy-boto3-iotevents-data (>=1.34.0,<1.35.0)", "mypy-boto3-iotfleethub (>=1.34.0,<1.35.0)", "mypy-boto3-iotfleetwise (>=1.34.0,<1.35.0)", "mypy-boto3-iotsecuretunneling (>=1.34.0,<1.35.0)", "mypy-boto3-iotsitewise (>=1.34.0,<1.35.0)", "mypy-boto3-iotthingsgraph (>=1.34.0,<1.35.0)", "mypy-boto3-iottwinmaker (>=1.34.0,<1.35.0)", "mypy-boto3-iotwireless (>=1.34.0,<1.35.0)", "mypy-boto3-ivs (>=1.34.0,<1.35.0)", "mypy-boto3-ivs-realtime (>=1.34.0,<1.35.0)", "mypy-boto3-ivschat (>=1.34.0,<1.35.0)", "mypy-boto3-kafka (>=1.34.0,<1.35.0)", "mypy-boto3-kafkaconnect (>=1.34.0,<1.35.0)", "mypy-boto3-kendra (>=1.34.0,<1.35.0)", "mypy-boto3-kendra-ranking (>=1.34.0,<1.35.0)", "mypy-boto3-keyspaces (>=1.34.0,<1.35.0)", "mypy-boto3-kinesis (>=1.34.0,<1.35.0)", "mypy-boto3-kinesis-video-archived-media (>=1.34.0,<1.35.0)", "mypy-boto3-kinesis-video-media (>=1.34.0,<1.35.0)", "mypy-boto3-kinesis-video-signaling (>=1.34.0,<1.35.0)", "mypy-boto3-kinesis-video-webrtc-storage (>=1.34.0,<1.35.0)", "mypy-boto3-kinesisanalytics (>=1.34.0,<1.35.0)", "mypy-boto3-kinesisanalyticsv2 (>=1.34.0,<1.35.0)", "mypy-boto3-kinesisvideo (>=1.34.0,<1.35.0)", "mypy-boto3-kms (>=1.34.0,<1.35.0)", "mypy-boto3-lakeformation (>=1.34.0,<1.35.0)", "mypy-boto3-lambda (>=1.34.0,<1.35.0)", "mypy-boto3-launch-wizard (>=1.34.0,<1.35.0)", "mypy-boto3-lex-models (>=1.34.0,<1.35.0)", "mypy-boto3-lex-runtime (>=1.34.0,<1.35.0)", "mypy-boto3-lexv2-models (>=1.34.0,<1.35.0)", "mypy-boto3-lexv2-runtime (>=1.34.0,<1.35.0)", "mypy-boto3-license-manager (>=1.34.0,<1.35.0)", "mypy-boto3-license-manager-linux-subscriptions (>=1.34.0,<1.35.0)", "mypy-boto3-license-manager-user-subscriptions (>=1.34.0,<1.35.0)", "mypy-boto3-lightsail (>=1.34.0,<1.35.0)", "mypy-boto3-location (>=1.34.0,<1.35.0)", "mypy-boto3-logs (>=1.34.0,<1.35.0)", "mypy-boto3-lookoutequipment (>=1.34.0,<1.35.0)", "mypy-boto3-lookoutmetrics (>=1.34.0,<1.35.0)", "mypy-boto3-lookoutvision (>=1.34.0,<1.35.0)", "mypy-boto3-m2 (>=1.34.0,<1.35.0)", "mypy-boto3-machinelearning (>=1.34.0,<1.35.0)", "mypy-boto3-macie2 (>=1.34.0,<1.35.0)", "mypy-boto3-managedblockchain (>=1.34.0,<1.35.0)", "mypy-boto3-managedblockchain-query (>=1.34.0,<1.35.0)", "mypy-boto3-marketplace-agreement (>=1.34.0,<1.35.0)", "mypy-boto3-marketplace-catalog (>=1.34.0,<1.35.0)", "mypy-boto3-marketplace-deployment (>=1.34.0,<1.35.0)", "mypy-boto3-marketplace-entitlement (>=1.34.0,<1.35.0)", "mypy-boto3-marketplacecommerceanalytics (>=1.34.0,<1.35.0)", "mypy-boto3-mediaconnect (>=1.34.0,<1.35.0)", "mypy-boto3-mediaconvert (>=1.34.0,<1.35.0)", "mypy-boto3-medialive (>=1.34.0,<1.35.0)", "mypy-boto3-mediapackage (>=1.34.0,<1.35.0)", "mypy-boto3-mediapackage-vod (>=1.34.0,<1.35.0)", "mypy-boto3-mediapackagev2 (>=1.34.0,<1.35.0)", "mypy-boto3-mediastore (>=1.34.0,<1.35.0)", "mypy-boto3-mediastore-data (>=1.34.0,<1.35.0)", "mypy-boto3-mediatailor (>=1.34.0,<1.35.0)", "mypy-boto3-medical-imaging (>=1.34.0,<1.35.0)", "mypy-boto3-memorydb (>=1.34.0,<1.35.0)", "mypy-boto3-meteringmarketplace (>=1.34.0,<1.35.0)", "mypy-boto3-mgh (>=1.34.0,<1.35.0)", "mypy-boto3-mgn (>=1.34.0,<1.35.0)", "mypy-boto3-migration-hub-refactor-spaces (>=1.34.0,<1.35.0)", "mypy-boto3-migrationhub-config (>=1.34.0,<1.35.0)", "mypy-boto3-migrationhuborchestrator (>=1.34.0,<1.35.0)", "mypy-boto3-migrationhubstrategy (>=1.34.0,<1.35.0)", "mypy-boto3-mobile (>=1.34.0,<1.35.0)", "mypy-boto3-mq (>=1.34.0,<1.35.0)", "mypy-boto3-mturk (>=1.34.0,<1.35.0)", "mypy-boto3-mwaa (>=1.34.0,<1.35.0)", "mypy-boto3-neptune (>=1.34.0,<1.35.0)", "mypy-boto3-neptune-graph (>=1.34.0,<1.35.0)", "mypy-boto3-neptunedata (>=1.34.0,<1.35.0)", "mypy-boto3-network-firewall (>=1.34.0,<1.35.0)", "mypy-boto3-networkmanager (>=1.34.0,<1.35.0)", "mypy-boto3-networkmonitor (>=1.34.0,<1.35.0)", "mypy-boto3-nimble (>=1.34.0,<1.35.0)", "mypy-boto3-oam (>=1.34.0,<1.35.0)", "mypy-boto3-omics (>=1.34.0,<1.35.0)", "mypy-boto3-opensearch (>=1.34.0,<1.35.0)", "mypy-boto3-opensearchserverless (>=1.34.0,<1.35.0)", "mypy-boto3-opsworks (>=1.34.0,<1.35.0)", "mypy-boto3-opsworkscm (>=1.34.0,<1.35.0)", "mypy-boto3-organizations (>=1.34.0,<1.35.0)", "mypy-boto3-osis (>=1.34.0,<1.35.0)", "mypy-boto3-outposts (>=1.34.0,<1.35.0)", "mypy-boto3-panorama (>=1.34.0,<1.35.0)", "mypy-boto3-payment-cryptography (>=1.34.0,<1.35.0)", "mypy-boto3-payment-cryptography-data (>=1.34.0,<1.35.0)", "mypy-boto3-pca-connector-ad (>=1.34.0,<1.35.0)", "mypy-boto3-personalize (>=1.34.0,<1.35.0)", "mypy-boto3-personalize-events (>=1.34.0,<1.35.0)", "mypy-boto3-personalize-runtime (>=1.34.0,<1.35.0)", "mypy-boto3-pi (>=1.34.0,<1.35.0)", "mypy-boto3-pinpoint (>=1.34.0,<1.35.0)", "mypy-boto3-pinpoint-email (>=1.34.0,<1.35.0)", "mypy-boto3-pinpoint-sms-voice (>=1.34.0,<1.35.0)", "mypy-boto3-pinpoint-sms-voice-v2 (>=1.34.0,<1.35.0)", "mypy-boto3-pipes (>=1.34.0,<1.35.0)", "mypy-boto3-polly (>=1.34.0,<1.35.0)", "mypy-boto3-pricing (>=1.34.0,<1.35.0)", "mypy-boto3-privatenetworks (>=1.34.0,<1.35.0)", "mypy-boto3-proton (>=1.34.0,<1.35.0)", "mypy-boto3-qbusiness (>=1.34.0,<1.35.0)", "mypy-boto3-qconnect (>=1.34.0,<1.35.0)", "mypy-boto3-qldb (>=1.34.0,<1.35.0)", "mypy-boto3-qldb-session (>=1.34.0,<1.35.0)", "mypy-boto3-quicksight (>=1.34.0,<1.35.0)", "mypy-boto3-ram (>=1.34.0,<1.35.0)", "mypy-boto3-rbin (>=1.34.0,<1.35.0)", "mypy-boto3-rds (>=1.34.0,<1.35.0)", "mypy-boto3-rds-data (>=1.34.0,<1.35.0)", "mypy-boto3-redshift (>=1.34.0,<1.35.0)", "mypy-boto3-redshift-data (>=1.34.0,<1.35.0)", "mypy-boto3-redshift-serverless (>=1.34.0,<1.35.0)", "mypy-boto3-rekognition (>=1.34.0,<1.35.0)", "mypy-boto3-repostspace (>=1.34.0,<1.35.0)", "mypy-boto3-resiliencehub (>=1.34.0,<1.35.0)", "mypy-boto3-resource-explorer-2 (>=1.34.0,<1.35.0)", "mypy-boto3-resource-groups (>=1.34.0,<1.35.0)", "mypy-boto3-resourcegroupstaggingapi (>=1.34.0,<1.35.0)", "mypy-boto3-robomaker (>=1.34.0,<1.35.0)", "mypy-boto3-rolesanywhere (>=1.34.0,<1.35.0)", "mypy-boto3-route53 (>=1.34.0,<1.35.0)", "mypy-boto3-route53-recovery-cluster (>=1.34.0,<1.35.0)", "mypy-boto3-route53-recovery-control-config (>=1.34.0,<1.35.0)", "mypy-boto3-route53-recovery-readiness (>=1.34.0,<1.35.0)", "mypy-boto3-route53domains (>=1.34.0,<1.35.0)", "mypy-boto3-route53resolver (>=1.34.0,<1.35.0)", "mypy-boto3-rum (>=1.34.0,<1.35.0)", "mypy-boto3-s3 (>=1.34.0,<1.35.0)", "mypy-boto3-s3control (>=1.34.0,<1.35.0)", "mypy-boto3-s3outposts (>=1.34.0,<1.35.0)", "mypy-boto3-sagemaker (>=1.34.0,<1.35.0)", "mypy-boto3-sagemaker-a2i-runtime (>=1.34.0,<1.35.0)", "mypy-boto3-sagemaker-edge (>=1.34.0,<1.35.0)", "mypy-boto3-sagemaker-featurestore-runtime (>=1.34.0,<1.35.0)", "mypy-boto3-sagemaker-geospatial (>=1.34.0,<1.35.0)", "mypy-boto3-sagemaker-metrics (>=1.34.0,<1.35.0)", "mypy-boto3-sagemaker-runtime (>=1.34.0,<1.35.0)", "mypy-boto3-savingsplans (>=1.34.0,<1.35.0)", "mypy-boto3-scheduler (>=1.34.0,<1.35.0)", "mypy-boto3-schemas (>=1.34.0,<1.35.0)", "mypy-boto3-sdb (>=1.34.0,<1.35.0)", "mypy-boto3-secretsmanager (>=1.34.0,<1.35.0)", "mypy-boto3-securityhub (>=1.34.0,<1.35.0)", "mypy-boto3-securitylake (>=1.34.0,<1.35.0)", "mypy-boto3-serverlessrepo (>=1.34.0,<1.35.0)", "mypy-boto3-service-quotas (>=1.34.0,<1.35.0)", "mypy-boto3-servicecatalog (>=1.34.0,<1.35.0)", "mypy-boto3-servicecatalog-appregistry (>=1.34.0,<1.35.0)", "mypy-boto3-servicediscovery (>=1.34.0,<1.35.0)", "mypy-boto3-ses (>=1.34.0,<1.35.0)", "mypy-boto3-sesv2 (>=1.34.0,<1.35.0)", "mypy-boto3-shield (>=1.34.0,<1.35.0)", "mypy-boto3-signer (>=1.34.0,<1.35.0)", "mypy-boto3-simspaceweaver (>=1.34.0,<1.35.0)", "mypy-boto3-sms (>=1.34.0,<1.35.0)", "mypy-boto3-sms-voice (>=1.34.0,<1.35.0)", "mypy-boto3-snow-device-management (>=1.34.0,<1.35.0)", "mypy-boto3-snowball (>=1.34.0,<1.35.0)", "mypy-boto3-sns (>=1.34.0,<1.35.0)", "mypy-boto3-sqs (>=1.34.0,<1.35.0)", "mypy-boto3-ssm (>=1.34.0,<1.35.0)", "mypy-boto3-ssm-contacts (>=1.34.0,<1.35.0)", "mypy-boto3-ssm-incidents (>=1.34.0,<1.35.0)", "mypy-boto3-ssm-sap (>=1.34.0,<1.35.0)", "mypy-boto3-sso (>=1.34.0,<1.35.0)", "mypy-boto3-sso-admin (>=1.34.0,<1.35.0)", "mypy-boto3-sso-oidc (>=1.34.0,<1.35.0)", "mypy-boto3-stepfunctions (>=1.34.0,<1.35.0)", "mypy-boto3-storagegateway (>=1.34.0,<1.35.0)", "mypy-boto3-sts (>=1.34.0,<1.35.0)", "mypy-boto3-supplychain (>=1.34.0,<1.35.0)", "mypy-boto3-support (>=1.34.0,<1.35.0)", "mypy-boto3-support-app (>=1.34.0,<1.35.0)", "mypy-boto3-swf (>=1.34.0,<1.35.0)", "mypy-boto3-synthetics (>=1.34.0,<1.35.0)", "mypy-boto3-textract (>=1.34.0,<1.35.0)", "mypy-boto3-timestream-influxdb (>=1.34.0,<1.35.0)", "mypy-boto3-timestream-query (>=1.34.0,<1.35.0)", "mypy-boto3-timestream-write (>=1.34.0,<1.35.0)", "mypy-boto3-tnb (>=1.34.0,<1.35.0)", "mypy-boto3-transcribe (>=1.34.0,<1.35.0)", "mypy-boto3-transfer (>=1.34.0,<1.35.0)", "mypy-boto3-translate (>=1.34.0,<1.35.0)", "mypy-boto3-trustedadvisor (>=1.34.0,<1.35.0)", "mypy-boto3-verifiedpermissions (>=1.34.0,<1.35.0)", "mypy-boto3-voice-id (>=1.34.0,<1.35.0)", "mypy-boto3-vpc-lattice (>=1.34.0,<1.35.0)", "mypy-boto3-waf (>=1.34.0,<1.35.0)", "mypy-boto3-waf-regional (>=1.34.0,<1.35.0)", "mypy-boto3-wafv2 (>=1.34.0,<1.35.0)", "mypy-boto3-wellarchitected (>=1.34.0,<1.35.0)", "mypy-boto3-wisdom (>=1.34.0,<1.35.0)", "mypy-boto3-workdocs (>=1.34.0,<1.35.0)", "mypy-boto3-worklink (>=1.34.0,<1.35.0)", "mypy-boto3-workmail (>=1.34.0,<1.35.0)", "mypy-boto3-workmailmessageflow (>=1.34.0,<1.35.0)", "mypy-boto3-workspaces (>=1.34.0,<1.35.0)", "mypy-boto3-workspaces-thin-client (>=1.34.0,<1.35.0)", "mypy-boto3-workspaces-web (>=1.34.0,<1.35.0)", "mypy-boto3-xray (>=1.34.0,<1.35.0)"] +all = ["mypy-boto3-accessanalyzer (>=1.34.0,<1.35.0)", "mypy-boto3-account (>=1.34.0,<1.35.0)", "mypy-boto3-acm (>=1.34.0,<1.35.0)", "mypy-boto3-acm-pca (>=1.34.0,<1.35.0)", "mypy-boto3-amp (>=1.34.0,<1.35.0)", "mypy-boto3-amplify (>=1.34.0,<1.35.0)", "mypy-boto3-amplifybackend (>=1.34.0,<1.35.0)", "mypy-boto3-amplifyuibuilder (>=1.34.0,<1.35.0)", "mypy-boto3-apigateway (>=1.34.0,<1.35.0)", "mypy-boto3-apigatewaymanagementapi (>=1.34.0,<1.35.0)", "mypy-boto3-apigatewayv2 (>=1.34.0,<1.35.0)", "mypy-boto3-appconfig (>=1.34.0,<1.35.0)", "mypy-boto3-appconfigdata (>=1.34.0,<1.35.0)", "mypy-boto3-appfabric (>=1.34.0,<1.35.0)", "mypy-boto3-appflow (>=1.34.0,<1.35.0)", "mypy-boto3-appintegrations (>=1.34.0,<1.35.0)", "mypy-boto3-application-autoscaling (>=1.34.0,<1.35.0)", "mypy-boto3-application-insights (>=1.34.0,<1.35.0)", "mypy-boto3-application-signals (>=1.34.0,<1.35.0)", "mypy-boto3-applicationcostprofiler (>=1.34.0,<1.35.0)", "mypy-boto3-appmesh (>=1.34.0,<1.35.0)", "mypy-boto3-apprunner (>=1.34.0,<1.35.0)", "mypy-boto3-appstream (>=1.34.0,<1.35.0)", "mypy-boto3-appsync (>=1.34.0,<1.35.0)", "mypy-boto3-apptest (>=1.34.0,<1.35.0)", "mypy-boto3-arc-zonal-shift (>=1.34.0,<1.35.0)", "mypy-boto3-artifact (>=1.34.0,<1.35.0)", "mypy-boto3-athena (>=1.34.0,<1.35.0)", "mypy-boto3-auditmanager (>=1.34.0,<1.35.0)", "mypy-boto3-autoscaling (>=1.34.0,<1.35.0)", "mypy-boto3-autoscaling-plans (>=1.34.0,<1.35.0)", "mypy-boto3-b2bi (>=1.34.0,<1.35.0)", "mypy-boto3-backup (>=1.34.0,<1.35.0)", "mypy-boto3-backup-gateway (>=1.34.0,<1.35.0)", "mypy-boto3-batch (>=1.34.0,<1.35.0)", "mypy-boto3-bcm-data-exports (>=1.34.0,<1.35.0)", "mypy-boto3-bedrock (>=1.34.0,<1.35.0)", "mypy-boto3-bedrock-agent (>=1.34.0,<1.35.0)", "mypy-boto3-bedrock-agent-runtime (>=1.34.0,<1.35.0)", "mypy-boto3-bedrock-runtime (>=1.34.0,<1.35.0)", "mypy-boto3-billingconductor (>=1.34.0,<1.35.0)", "mypy-boto3-braket (>=1.34.0,<1.35.0)", "mypy-boto3-budgets (>=1.34.0,<1.35.0)", "mypy-boto3-ce (>=1.34.0,<1.35.0)", "mypy-boto3-chatbot (>=1.34.0,<1.35.0)", "mypy-boto3-chime (>=1.34.0,<1.35.0)", "mypy-boto3-chime-sdk-identity (>=1.34.0,<1.35.0)", "mypy-boto3-chime-sdk-media-pipelines (>=1.34.0,<1.35.0)", "mypy-boto3-chime-sdk-meetings (>=1.34.0,<1.35.0)", "mypy-boto3-chime-sdk-messaging (>=1.34.0,<1.35.0)", "mypy-boto3-chime-sdk-voice (>=1.34.0,<1.35.0)", "mypy-boto3-cleanrooms (>=1.34.0,<1.35.0)", "mypy-boto3-cleanroomsml (>=1.34.0,<1.35.0)", "mypy-boto3-cloud9 (>=1.34.0,<1.35.0)", "mypy-boto3-cloudcontrol (>=1.34.0,<1.35.0)", "mypy-boto3-clouddirectory (>=1.34.0,<1.35.0)", "mypy-boto3-cloudformation (>=1.34.0,<1.35.0)", "mypy-boto3-cloudfront (>=1.34.0,<1.35.0)", "mypy-boto3-cloudfront-keyvaluestore (>=1.34.0,<1.35.0)", "mypy-boto3-cloudhsm (>=1.34.0,<1.35.0)", "mypy-boto3-cloudhsmv2 (>=1.34.0,<1.35.0)", "mypy-boto3-cloudsearch (>=1.34.0,<1.35.0)", "mypy-boto3-cloudsearchdomain (>=1.34.0,<1.35.0)", "mypy-boto3-cloudtrail (>=1.34.0,<1.35.0)", "mypy-boto3-cloudtrail-data (>=1.34.0,<1.35.0)", "mypy-boto3-cloudwatch (>=1.34.0,<1.35.0)", "mypy-boto3-codeartifact (>=1.34.0,<1.35.0)", "mypy-boto3-codebuild (>=1.34.0,<1.35.0)", "mypy-boto3-codecatalyst (>=1.34.0,<1.35.0)", "mypy-boto3-codecommit (>=1.34.0,<1.35.0)", "mypy-boto3-codeconnections (>=1.34.0,<1.35.0)", "mypy-boto3-codedeploy (>=1.34.0,<1.35.0)", "mypy-boto3-codeguru-reviewer (>=1.34.0,<1.35.0)", "mypy-boto3-codeguru-security (>=1.34.0,<1.35.0)", "mypy-boto3-codeguruprofiler (>=1.34.0,<1.35.0)", "mypy-boto3-codepipeline (>=1.34.0,<1.35.0)", "mypy-boto3-codestar (>=1.34.0,<1.35.0)", "mypy-boto3-codestar-connections (>=1.34.0,<1.35.0)", "mypy-boto3-codestar-notifications (>=1.34.0,<1.35.0)", "mypy-boto3-cognito-identity (>=1.34.0,<1.35.0)", "mypy-boto3-cognito-idp (>=1.34.0,<1.35.0)", "mypy-boto3-cognito-sync (>=1.34.0,<1.35.0)", "mypy-boto3-comprehend (>=1.34.0,<1.35.0)", "mypy-boto3-comprehendmedical (>=1.34.0,<1.35.0)", "mypy-boto3-compute-optimizer (>=1.34.0,<1.35.0)", "mypy-boto3-config (>=1.34.0,<1.35.0)", "mypy-boto3-connect (>=1.34.0,<1.35.0)", "mypy-boto3-connect-contact-lens (>=1.34.0,<1.35.0)", "mypy-boto3-connectcampaigns (>=1.34.0,<1.35.0)", "mypy-boto3-connectcases (>=1.34.0,<1.35.0)", "mypy-boto3-connectparticipant (>=1.34.0,<1.35.0)", "mypy-boto3-controlcatalog (>=1.34.0,<1.35.0)", "mypy-boto3-controltower (>=1.34.0,<1.35.0)", "mypy-boto3-cost-optimization-hub (>=1.34.0,<1.35.0)", "mypy-boto3-cur (>=1.34.0,<1.35.0)", "mypy-boto3-customer-profiles (>=1.34.0,<1.35.0)", "mypy-boto3-databrew (>=1.34.0,<1.35.0)", "mypy-boto3-dataexchange (>=1.34.0,<1.35.0)", "mypy-boto3-datapipeline (>=1.34.0,<1.35.0)", "mypy-boto3-datasync (>=1.34.0,<1.35.0)", "mypy-boto3-datazone (>=1.34.0,<1.35.0)", "mypy-boto3-dax (>=1.34.0,<1.35.0)", "mypy-boto3-deadline (>=1.34.0,<1.35.0)", "mypy-boto3-detective (>=1.34.0,<1.35.0)", "mypy-boto3-devicefarm (>=1.34.0,<1.35.0)", "mypy-boto3-devops-guru (>=1.34.0,<1.35.0)", "mypy-boto3-directconnect (>=1.34.0,<1.35.0)", "mypy-boto3-discovery (>=1.34.0,<1.35.0)", "mypy-boto3-dlm (>=1.34.0,<1.35.0)", "mypy-boto3-dms (>=1.34.0,<1.35.0)", "mypy-boto3-docdb (>=1.34.0,<1.35.0)", "mypy-boto3-docdb-elastic (>=1.34.0,<1.35.0)", "mypy-boto3-drs (>=1.34.0,<1.35.0)", "mypy-boto3-ds (>=1.34.0,<1.35.0)", "mypy-boto3-dynamodb (>=1.34.0,<1.35.0)", "mypy-boto3-dynamodbstreams (>=1.34.0,<1.35.0)", "mypy-boto3-ebs (>=1.34.0,<1.35.0)", "mypy-boto3-ec2 (>=1.34.0,<1.35.0)", "mypy-boto3-ec2-instance-connect (>=1.34.0,<1.35.0)", "mypy-boto3-ecr (>=1.34.0,<1.35.0)", "mypy-boto3-ecr-public (>=1.34.0,<1.35.0)", "mypy-boto3-ecs (>=1.34.0,<1.35.0)", "mypy-boto3-efs (>=1.34.0,<1.35.0)", "mypy-boto3-eks (>=1.34.0,<1.35.0)", "mypy-boto3-eks-auth (>=1.34.0,<1.35.0)", "mypy-boto3-elastic-inference (>=1.34.0,<1.35.0)", "mypy-boto3-elasticache (>=1.34.0,<1.35.0)", "mypy-boto3-elasticbeanstalk (>=1.34.0,<1.35.0)", "mypy-boto3-elastictranscoder (>=1.34.0,<1.35.0)", "mypy-boto3-elb (>=1.34.0,<1.35.0)", "mypy-boto3-elbv2 (>=1.34.0,<1.35.0)", "mypy-boto3-emr (>=1.34.0,<1.35.0)", "mypy-boto3-emr-containers (>=1.34.0,<1.35.0)", "mypy-boto3-emr-serverless (>=1.34.0,<1.35.0)", "mypy-boto3-entityresolution (>=1.34.0,<1.35.0)", "mypy-boto3-es (>=1.34.0,<1.35.0)", "mypy-boto3-events (>=1.34.0,<1.35.0)", "mypy-boto3-evidently (>=1.34.0,<1.35.0)", "mypy-boto3-finspace (>=1.34.0,<1.35.0)", "mypy-boto3-finspace-data (>=1.34.0,<1.35.0)", "mypy-boto3-firehose (>=1.34.0,<1.35.0)", "mypy-boto3-fis (>=1.34.0,<1.35.0)", "mypy-boto3-fms (>=1.34.0,<1.35.0)", "mypy-boto3-forecast (>=1.34.0,<1.35.0)", "mypy-boto3-forecastquery (>=1.34.0,<1.35.0)", "mypy-boto3-frauddetector (>=1.34.0,<1.35.0)", "mypy-boto3-freetier (>=1.34.0,<1.35.0)", "mypy-boto3-fsx (>=1.34.0,<1.35.0)", "mypy-boto3-gamelift (>=1.34.0,<1.35.0)", "mypy-boto3-glacier (>=1.34.0,<1.35.0)", "mypy-boto3-globalaccelerator (>=1.34.0,<1.35.0)", "mypy-boto3-glue (>=1.34.0,<1.35.0)", "mypy-boto3-grafana (>=1.34.0,<1.35.0)", "mypy-boto3-greengrass (>=1.34.0,<1.35.0)", "mypy-boto3-greengrassv2 (>=1.34.0,<1.35.0)", "mypy-boto3-groundstation (>=1.34.0,<1.35.0)", "mypy-boto3-guardduty (>=1.34.0,<1.35.0)", "mypy-boto3-health (>=1.34.0,<1.35.0)", "mypy-boto3-healthlake (>=1.34.0,<1.35.0)", "mypy-boto3-iam (>=1.34.0,<1.35.0)", "mypy-boto3-identitystore (>=1.34.0,<1.35.0)", "mypy-boto3-imagebuilder (>=1.34.0,<1.35.0)", "mypy-boto3-importexport (>=1.34.0,<1.35.0)", "mypy-boto3-inspector (>=1.34.0,<1.35.0)", "mypy-boto3-inspector-scan (>=1.34.0,<1.35.0)", "mypy-boto3-inspector2 (>=1.34.0,<1.35.0)", "mypy-boto3-internetmonitor (>=1.34.0,<1.35.0)", "mypy-boto3-iot (>=1.34.0,<1.35.0)", "mypy-boto3-iot-data (>=1.34.0,<1.35.0)", "mypy-boto3-iot-jobs-data (>=1.34.0,<1.35.0)", "mypy-boto3-iot1click-devices (>=1.34.0,<1.35.0)", "mypy-boto3-iot1click-projects (>=1.34.0,<1.35.0)", "mypy-boto3-iotanalytics (>=1.34.0,<1.35.0)", "mypy-boto3-iotdeviceadvisor (>=1.34.0,<1.35.0)", "mypy-boto3-iotevents (>=1.34.0,<1.35.0)", "mypy-boto3-iotevents-data (>=1.34.0,<1.35.0)", "mypy-boto3-iotfleethub (>=1.34.0,<1.35.0)", "mypy-boto3-iotfleetwise (>=1.34.0,<1.35.0)", "mypy-boto3-iotsecuretunneling (>=1.34.0,<1.35.0)", "mypy-boto3-iotsitewise (>=1.34.0,<1.35.0)", "mypy-boto3-iotthingsgraph (>=1.34.0,<1.35.0)", "mypy-boto3-iottwinmaker (>=1.34.0,<1.35.0)", "mypy-boto3-iotwireless (>=1.34.0,<1.35.0)", "mypy-boto3-ivs (>=1.34.0,<1.35.0)", "mypy-boto3-ivs-realtime (>=1.34.0,<1.35.0)", "mypy-boto3-ivschat (>=1.34.0,<1.35.0)", "mypy-boto3-kafka (>=1.34.0,<1.35.0)", "mypy-boto3-kafkaconnect (>=1.34.0,<1.35.0)", "mypy-boto3-kendra (>=1.34.0,<1.35.0)", "mypy-boto3-kendra-ranking (>=1.34.0,<1.35.0)", "mypy-boto3-keyspaces (>=1.34.0,<1.35.0)", "mypy-boto3-kinesis (>=1.34.0,<1.35.0)", "mypy-boto3-kinesis-video-archived-media (>=1.34.0,<1.35.0)", "mypy-boto3-kinesis-video-media (>=1.34.0,<1.35.0)", "mypy-boto3-kinesis-video-signaling (>=1.34.0,<1.35.0)", "mypy-boto3-kinesis-video-webrtc-storage (>=1.34.0,<1.35.0)", "mypy-boto3-kinesisanalytics (>=1.34.0,<1.35.0)", "mypy-boto3-kinesisanalyticsv2 (>=1.34.0,<1.35.0)", "mypy-boto3-kinesisvideo (>=1.34.0,<1.35.0)", "mypy-boto3-kms (>=1.34.0,<1.35.0)", "mypy-boto3-lakeformation (>=1.34.0,<1.35.0)", "mypy-boto3-lambda (>=1.34.0,<1.35.0)", "mypy-boto3-launch-wizard (>=1.34.0,<1.35.0)", "mypy-boto3-lex-models (>=1.34.0,<1.35.0)", "mypy-boto3-lex-runtime (>=1.34.0,<1.35.0)", "mypy-boto3-lexv2-models (>=1.34.0,<1.35.0)", "mypy-boto3-lexv2-runtime (>=1.34.0,<1.35.0)", "mypy-boto3-license-manager (>=1.34.0,<1.35.0)", "mypy-boto3-license-manager-linux-subscriptions (>=1.34.0,<1.35.0)", "mypy-boto3-license-manager-user-subscriptions (>=1.34.0,<1.35.0)", "mypy-boto3-lightsail (>=1.34.0,<1.35.0)", "mypy-boto3-location (>=1.34.0,<1.35.0)", "mypy-boto3-logs (>=1.34.0,<1.35.0)", "mypy-boto3-lookoutequipment (>=1.34.0,<1.35.0)", "mypy-boto3-lookoutmetrics (>=1.34.0,<1.35.0)", "mypy-boto3-lookoutvision (>=1.34.0,<1.35.0)", "mypy-boto3-m2 (>=1.34.0,<1.35.0)", "mypy-boto3-machinelearning (>=1.34.0,<1.35.0)", "mypy-boto3-macie2 (>=1.34.0,<1.35.0)", "mypy-boto3-mailmanager (>=1.34.0,<1.35.0)", "mypy-boto3-managedblockchain (>=1.34.0,<1.35.0)", "mypy-boto3-managedblockchain-query (>=1.34.0,<1.35.0)", "mypy-boto3-marketplace-agreement (>=1.34.0,<1.35.0)", "mypy-boto3-marketplace-catalog (>=1.34.0,<1.35.0)", "mypy-boto3-marketplace-deployment (>=1.34.0,<1.35.0)", "mypy-boto3-marketplace-entitlement (>=1.34.0,<1.35.0)", "mypy-boto3-marketplacecommerceanalytics (>=1.34.0,<1.35.0)", "mypy-boto3-mediaconnect (>=1.34.0,<1.35.0)", "mypy-boto3-mediaconvert (>=1.34.0,<1.35.0)", "mypy-boto3-medialive (>=1.34.0,<1.35.0)", "mypy-boto3-mediapackage (>=1.34.0,<1.35.0)", "mypy-boto3-mediapackage-vod (>=1.34.0,<1.35.0)", "mypy-boto3-mediapackagev2 (>=1.34.0,<1.35.0)", "mypy-boto3-mediastore (>=1.34.0,<1.35.0)", "mypy-boto3-mediastore-data (>=1.34.0,<1.35.0)", "mypy-boto3-mediatailor (>=1.34.0,<1.35.0)", "mypy-boto3-medical-imaging (>=1.34.0,<1.35.0)", "mypy-boto3-memorydb (>=1.34.0,<1.35.0)", "mypy-boto3-meteringmarketplace (>=1.34.0,<1.35.0)", "mypy-boto3-mgh (>=1.34.0,<1.35.0)", "mypy-boto3-mgn (>=1.34.0,<1.35.0)", "mypy-boto3-migration-hub-refactor-spaces (>=1.34.0,<1.35.0)", "mypy-boto3-migrationhub-config (>=1.34.0,<1.35.0)", "mypy-boto3-migrationhuborchestrator (>=1.34.0,<1.35.0)", "mypy-boto3-migrationhubstrategy (>=1.34.0,<1.35.0)", "mypy-boto3-mobile (>=1.34.0,<1.35.0)", "mypy-boto3-mq (>=1.34.0,<1.35.0)", "mypy-boto3-mturk (>=1.34.0,<1.35.0)", "mypy-boto3-mwaa (>=1.34.0,<1.35.0)", "mypy-boto3-neptune (>=1.34.0,<1.35.0)", "mypy-boto3-neptune-graph (>=1.34.0,<1.35.0)", "mypy-boto3-neptunedata (>=1.34.0,<1.35.0)", "mypy-boto3-network-firewall (>=1.34.0,<1.35.0)", "mypy-boto3-networkmanager (>=1.34.0,<1.35.0)", "mypy-boto3-networkmonitor (>=1.34.0,<1.35.0)", "mypy-boto3-nimble (>=1.34.0,<1.35.0)", "mypy-boto3-oam (>=1.34.0,<1.35.0)", "mypy-boto3-omics (>=1.34.0,<1.35.0)", "mypy-boto3-opensearch (>=1.34.0,<1.35.0)", "mypy-boto3-opensearchserverless (>=1.34.0,<1.35.0)", "mypy-boto3-opsworks (>=1.34.0,<1.35.0)", "mypy-boto3-opsworkscm (>=1.34.0,<1.35.0)", "mypy-boto3-organizations (>=1.34.0,<1.35.0)", "mypy-boto3-osis (>=1.34.0,<1.35.0)", "mypy-boto3-outposts (>=1.34.0,<1.35.0)", "mypy-boto3-panorama (>=1.34.0,<1.35.0)", "mypy-boto3-payment-cryptography (>=1.34.0,<1.35.0)", "mypy-boto3-payment-cryptography-data (>=1.34.0,<1.35.0)", "mypy-boto3-pca-connector-ad (>=1.34.0,<1.35.0)", "mypy-boto3-pca-connector-scep (>=1.34.0,<1.35.0)", "mypy-boto3-personalize (>=1.34.0,<1.35.0)", "mypy-boto3-personalize-events (>=1.34.0,<1.35.0)", "mypy-boto3-personalize-runtime (>=1.34.0,<1.35.0)", "mypy-boto3-pi (>=1.34.0,<1.35.0)", "mypy-boto3-pinpoint (>=1.34.0,<1.35.0)", "mypy-boto3-pinpoint-email (>=1.34.0,<1.35.0)", "mypy-boto3-pinpoint-sms-voice (>=1.34.0,<1.35.0)", "mypy-boto3-pinpoint-sms-voice-v2 (>=1.34.0,<1.35.0)", "mypy-boto3-pipes (>=1.34.0,<1.35.0)", "mypy-boto3-polly (>=1.34.0,<1.35.0)", "mypy-boto3-pricing (>=1.34.0,<1.35.0)", "mypy-boto3-privatenetworks (>=1.34.0,<1.35.0)", "mypy-boto3-proton (>=1.34.0,<1.35.0)", "mypy-boto3-qbusiness (>=1.34.0,<1.35.0)", "mypy-boto3-qconnect (>=1.34.0,<1.35.0)", "mypy-boto3-qldb (>=1.34.0,<1.35.0)", "mypy-boto3-qldb-session (>=1.34.0,<1.35.0)", "mypy-boto3-quicksight (>=1.34.0,<1.35.0)", "mypy-boto3-ram (>=1.34.0,<1.35.0)", "mypy-boto3-rbin (>=1.34.0,<1.35.0)", "mypy-boto3-rds (>=1.34.0,<1.35.0)", "mypy-boto3-rds-data (>=1.34.0,<1.35.0)", "mypy-boto3-redshift (>=1.34.0,<1.35.0)", "mypy-boto3-redshift-data (>=1.34.0,<1.35.0)", "mypy-boto3-redshift-serverless (>=1.34.0,<1.35.0)", "mypy-boto3-rekognition (>=1.34.0,<1.35.0)", "mypy-boto3-repostspace (>=1.34.0,<1.35.0)", "mypy-boto3-resiliencehub (>=1.34.0,<1.35.0)", "mypy-boto3-resource-explorer-2 (>=1.34.0,<1.35.0)", "mypy-boto3-resource-groups (>=1.34.0,<1.35.0)", "mypy-boto3-resourcegroupstaggingapi (>=1.34.0,<1.35.0)", "mypy-boto3-robomaker (>=1.34.0,<1.35.0)", "mypy-boto3-rolesanywhere (>=1.34.0,<1.35.0)", "mypy-boto3-route53 (>=1.34.0,<1.35.0)", "mypy-boto3-route53-recovery-cluster (>=1.34.0,<1.35.0)", "mypy-boto3-route53-recovery-control-config (>=1.34.0,<1.35.0)", "mypy-boto3-route53-recovery-readiness (>=1.34.0,<1.35.0)", "mypy-boto3-route53domains (>=1.34.0,<1.35.0)", "mypy-boto3-route53profiles (>=1.34.0,<1.35.0)", "mypy-boto3-route53resolver (>=1.34.0,<1.35.0)", "mypy-boto3-rum (>=1.34.0,<1.35.0)", "mypy-boto3-s3 (>=1.34.0,<1.35.0)", "mypy-boto3-s3control (>=1.34.0,<1.35.0)", "mypy-boto3-s3outposts (>=1.34.0,<1.35.0)", "mypy-boto3-sagemaker (>=1.34.0,<1.35.0)", "mypy-boto3-sagemaker-a2i-runtime (>=1.34.0,<1.35.0)", "mypy-boto3-sagemaker-edge (>=1.34.0,<1.35.0)", "mypy-boto3-sagemaker-featurestore-runtime (>=1.34.0,<1.35.0)", "mypy-boto3-sagemaker-geospatial (>=1.34.0,<1.35.0)", "mypy-boto3-sagemaker-metrics (>=1.34.0,<1.35.0)", "mypy-boto3-sagemaker-runtime (>=1.34.0,<1.35.0)", "mypy-boto3-savingsplans (>=1.34.0,<1.35.0)", "mypy-boto3-scheduler (>=1.34.0,<1.35.0)", "mypy-boto3-schemas (>=1.34.0,<1.35.0)", "mypy-boto3-sdb (>=1.34.0,<1.35.0)", "mypy-boto3-secretsmanager (>=1.34.0,<1.35.0)", "mypy-boto3-securityhub (>=1.34.0,<1.35.0)", "mypy-boto3-securitylake (>=1.34.0,<1.35.0)", "mypy-boto3-serverlessrepo (>=1.34.0,<1.35.0)", "mypy-boto3-service-quotas (>=1.34.0,<1.35.0)", "mypy-boto3-servicecatalog (>=1.34.0,<1.35.0)", "mypy-boto3-servicecatalog-appregistry (>=1.34.0,<1.35.0)", "mypy-boto3-servicediscovery (>=1.34.0,<1.35.0)", "mypy-boto3-ses (>=1.34.0,<1.35.0)", "mypy-boto3-sesv2 (>=1.34.0,<1.35.0)", "mypy-boto3-shield (>=1.34.0,<1.35.0)", "mypy-boto3-signer (>=1.34.0,<1.35.0)", "mypy-boto3-simspaceweaver (>=1.34.0,<1.35.0)", "mypy-boto3-sms (>=1.34.0,<1.35.0)", "mypy-boto3-sms-voice (>=1.34.0,<1.35.0)", "mypy-boto3-snow-device-management (>=1.34.0,<1.35.0)", "mypy-boto3-snowball (>=1.34.0,<1.35.0)", "mypy-boto3-sns (>=1.34.0,<1.35.0)", "mypy-boto3-sqs (>=1.34.0,<1.35.0)", "mypy-boto3-ssm (>=1.34.0,<1.35.0)", "mypy-boto3-ssm-contacts (>=1.34.0,<1.35.0)", "mypy-boto3-ssm-incidents (>=1.34.0,<1.35.0)", "mypy-boto3-ssm-sap (>=1.34.0,<1.35.0)", "mypy-boto3-sso (>=1.34.0,<1.35.0)", "mypy-boto3-sso-admin (>=1.34.0,<1.35.0)", "mypy-boto3-sso-oidc (>=1.34.0,<1.35.0)", "mypy-boto3-stepfunctions (>=1.34.0,<1.35.0)", "mypy-boto3-storagegateway (>=1.34.0,<1.35.0)", "mypy-boto3-sts (>=1.34.0,<1.35.0)", "mypy-boto3-supplychain (>=1.34.0,<1.35.0)", "mypy-boto3-support (>=1.34.0,<1.35.0)", "mypy-boto3-support-app (>=1.34.0,<1.35.0)", "mypy-boto3-swf (>=1.34.0,<1.35.0)", "mypy-boto3-synthetics (>=1.34.0,<1.35.0)", "mypy-boto3-taxsettings (>=1.34.0,<1.35.0)", "mypy-boto3-textract (>=1.34.0,<1.35.0)", "mypy-boto3-timestream-influxdb (>=1.34.0,<1.35.0)", "mypy-boto3-timestream-query (>=1.34.0,<1.35.0)", "mypy-boto3-timestream-write (>=1.34.0,<1.35.0)", "mypy-boto3-tnb (>=1.34.0,<1.35.0)", "mypy-boto3-transcribe (>=1.34.0,<1.35.0)", "mypy-boto3-transfer (>=1.34.0,<1.35.0)", "mypy-boto3-translate (>=1.34.0,<1.35.0)", "mypy-boto3-trustedadvisor (>=1.34.0,<1.35.0)", "mypy-boto3-verifiedpermissions (>=1.34.0,<1.35.0)", "mypy-boto3-voice-id (>=1.34.0,<1.35.0)", "mypy-boto3-vpc-lattice (>=1.34.0,<1.35.0)", "mypy-boto3-waf (>=1.34.0,<1.35.0)", "mypy-boto3-waf-regional (>=1.34.0,<1.35.0)", "mypy-boto3-wafv2 (>=1.34.0,<1.35.0)", "mypy-boto3-wellarchitected (>=1.34.0,<1.35.0)", "mypy-boto3-wisdom (>=1.34.0,<1.35.0)", "mypy-boto3-workdocs (>=1.34.0,<1.35.0)", "mypy-boto3-worklink (>=1.34.0,<1.35.0)", "mypy-boto3-workmail (>=1.34.0,<1.35.0)", "mypy-boto3-workmailmessageflow (>=1.34.0,<1.35.0)", "mypy-boto3-workspaces (>=1.34.0,<1.35.0)", "mypy-boto3-workspaces-thin-client (>=1.34.0,<1.35.0)", "mypy-boto3-workspaces-web (>=1.34.0,<1.35.0)", "mypy-boto3-xray (>=1.34.0,<1.35.0)"] amp = ["mypy-boto3-amp (>=1.34.0,<1.35.0)"] amplify = ["mypy-boto3-amplify (>=1.34.0,<1.35.0)"] amplifybackend = ["mypy-boto3-amplifybackend (>=1.34.0,<1.35.0)"] @@ -337,11 +351,13 @@ appflow = ["mypy-boto3-appflow (>=1.34.0,<1.35.0)"] appintegrations = ["mypy-boto3-appintegrations (>=1.34.0,<1.35.0)"] application-autoscaling = ["mypy-boto3-application-autoscaling (>=1.34.0,<1.35.0)"] application-insights = ["mypy-boto3-application-insights (>=1.34.0,<1.35.0)"] +application-signals = ["mypy-boto3-application-signals (>=1.34.0,<1.35.0)"] applicationcostprofiler = ["mypy-boto3-applicationcostprofiler (>=1.34.0,<1.35.0)"] appmesh = ["mypy-boto3-appmesh (>=1.34.0,<1.35.0)"] apprunner = ["mypy-boto3-apprunner (>=1.34.0,<1.35.0)"] appstream = ["mypy-boto3-appstream (>=1.34.0,<1.35.0)"] appsync = ["mypy-boto3-appsync (>=1.34.0,<1.35.0)"] +apptest = ["mypy-boto3-apptest (>=1.34.0,<1.35.0)"] arc-zonal-shift = ["mypy-boto3-arc-zonal-shift (>=1.34.0,<1.35.0)"] artifact = ["mypy-boto3-artifact (>=1.34.0,<1.35.0)"] athena = ["mypy-boto3-athena (>=1.34.0,<1.35.0)"] @@ -351,7 +367,6 @@ autoscaling-plans = ["mypy-boto3-autoscaling-plans (>=1.34.0,<1.35.0)"] b2bi = ["mypy-boto3-b2bi (>=1.34.0,<1.35.0)"] backup = ["mypy-boto3-backup (>=1.34.0,<1.35.0)"] backup-gateway = ["mypy-boto3-backup-gateway (>=1.34.0,<1.35.0)"] -backupstorage = ["mypy-boto3-backupstorage (>=1.34.0,<1.35.0)"] batch = ["mypy-boto3-batch (>=1.34.0,<1.35.0)"] bcm-data-exports = ["mypy-boto3-bcm-data-exports (>=1.34.0,<1.35.0)"] bedrock = ["mypy-boto3-bedrock (>=1.34.0,<1.35.0)"] @@ -359,7 +374,7 @@ bedrock-agent = ["mypy-boto3-bedrock-agent (>=1.34.0,<1.35.0)"] bedrock-agent-runtime = ["mypy-boto3-bedrock-agent-runtime (>=1.34.0,<1.35.0)"] bedrock-runtime = ["mypy-boto3-bedrock-runtime (>=1.34.0,<1.35.0)"] billingconductor = ["mypy-boto3-billingconductor (>=1.34.0,<1.35.0)"] -boto3 = ["boto3 (==1.34.72)", "botocore (==1.34.72)"] +boto3 = ["boto3 (==1.34.128)", "botocore (==1.34.128)"] braket = ["mypy-boto3-braket (>=1.34.0,<1.35.0)"] budgets = ["mypy-boto3-budgets (>=1.34.0,<1.35.0)"] ce = ["mypy-boto3-ce (>=1.34.0,<1.35.0)"] @@ -389,6 +404,7 @@ codeartifact = ["mypy-boto3-codeartifact (>=1.34.0,<1.35.0)"] codebuild = ["mypy-boto3-codebuild (>=1.34.0,<1.35.0)"] codecatalyst = ["mypy-boto3-codecatalyst (>=1.34.0,<1.35.0)"] codecommit = ["mypy-boto3-codecommit (>=1.34.0,<1.35.0)"] +codeconnections = ["mypy-boto3-codeconnections (>=1.34.0,<1.35.0)"] codedeploy = ["mypy-boto3-codedeploy (>=1.34.0,<1.35.0)"] codeguru-reviewer = ["mypy-boto3-codeguru-reviewer (>=1.34.0,<1.35.0)"] codeguru-security = ["mypy-boto3-codeguru-security (>=1.34.0,<1.35.0)"] @@ -409,6 +425,7 @@ connect-contact-lens = ["mypy-boto3-connect-contact-lens (>=1.34.0,<1.35.0)"] connectcampaigns = ["mypy-boto3-connectcampaigns (>=1.34.0,<1.35.0)"] connectcases = ["mypy-boto3-connectcases (>=1.34.0,<1.35.0)"] connectparticipant = ["mypy-boto3-connectparticipant (>=1.34.0,<1.35.0)"] +controlcatalog = ["mypy-boto3-controlcatalog (>=1.34.0,<1.35.0)"] controltower = ["mypy-boto3-controltower (>=1.34.0,<1.35.0)"] cost-optimization-hub = ["mypy-boto3-cost-optimization-hub (>=1.34.0,<1.35.0)"] cur = ["mypy-boto3-cur (>=1.34.0,<1.35.0)"] @@ -419,6 +436,7 @@ datapipeline = ["mypy-boto3-datapipeline (>=1.34.0,<1.35.0)"] datasync = ["mypy-boto3-datasync (>=1.34.0,<1.35.0)"] datazone = ["mypy-boto3-datazone (>=1.34.0,<1.35.0)"] dax = ["mypy-boto3-dax (>=1.34.0,<1.35.0)"] +deadline = ["mypy-boto3-deadline (>=1.34.0,<1.35.0)"] detective = ["mypy-boto3-detective (>=1.34.0,<1.35.0)"] devicefarm = ["mypy-boto3-devicefarm (>=1.34.0,<1.35.0)"] devops-guru = ["mypy-boto3-devops-guru (>=1.34.0,<1.35.0)"] @@ -476,7 +494,6 @@ groundstation = ["mypy-boto3-groundstation (>=1.34.0,<1.35.0)"] guardduty = ["mypy-boto3-guardduty (>=1.34.0,<1.35.0)"] health = ["mypy-boto3-health (>=1.34.0,<1.35.0)"] healthlake = ["mypy-boto3-healthlake (>=1.34.0,<1.35.0)"] -honeycode = ["mypy-boto3-honeycode (>=1.34.0,<1.35.0)"] iam = ["mypy-boto3-iam (>=1.34.0,<1.35.0)"] identitystore = ["mypy-boto3-identitystore (>=1.34.0,<1.35.0)"] imagebuilder = ["mypy-boto3-imagebuilder (>=1.34.0,<1.35.0)"] @@ -537,6 +554,7 @@ lookoutvision = ["mypy-boto3-lookoutvision (>=1.34.0,<1.35.0)"] m2 = ["mypy-boto3-m2 (>=1.34.0,<1.35.0)"] machinelearning = ["mypy-boto3-machinelearning (>=1.34.0,<1.35.0)"] macie2 = ["mypy-boto3-macie2 (>=1.34.0,<1.35.0)"] +mailmanager = ["mypy-boto3-mailmanager (>=1.34.0,<1.35.0)"] managedblockchain = ["mypy-boto3-managedblockchain (>=1.34.0,<1.35.0)"] managedblockchain-query = ["mypy-boto3-managedblockchain-query (>=1.34.0,<1.35.0)"] marketplace-agreement = ["mypy-boto3-marketplace-agreement (>=1.34.0,<1.35.0)"] @@ -586,6 +604,7 @@ panorama = ["mypy-boto3-panorama (>=1.34.0,<1.35.0)"] payment-cryptography = ["mypy-boto3-payment-cryptography (>=1.34.0,<1.35.0)"] payment-cryptography-data = ["mypy-boto3-payment-cryptography-data (>=1.34.0,<1.35.0)"] pca-connector-ad = ["mypy-boto3-pca-connector-ad (>=1.34.0,<1.35.0)"] +pca-connector-scep = ["mypy-boto3-pca-connector-scep (>=1.34.0,<1.35.0)"] personalize = ["mypy-boto3-personalize (>=1.34.0,<1.35.0)"] personalize-events = ["mypy-boto3-personalize-events (>=1.34.0,<1.35.0)"] personalize-runtime = ["mypy-boto3-personalize-runtime (>=1.34.0,<1.35.0)"] @@ -624,6 +643,7 @@ route53-recovery-cluster = ["mypy-boto3-route53-recovery-cluster (>=1.34.0,<1.35 route53-recovery-control-config = ["mypy-boto3-route53-recovery-control-config (>=1.34.0,<1.35.0)"] route53-recovery-readiness = ["mypy-boto3-route53-recovery-readiness (>=1.34.0,<1.35.0)"] route53domains = ["mypy-boto3-route53domains (>=1.34.0,<1.35.0)"] +route53profiles = ["mypy-boto3-route53profiles (>=1.34.0,<1.35.0)"] route53resolver = ["mypy-boto3-route53resolver (>=1.34.0,<1.35.0)"] rum = ["mypy-boto3-rum (>=1.34.0,<1.35.0)"] s3 = ["mypy-boto3-s3 (>=1.34.0,<1.35.0)"] @@ -674,6 +694,7 @@ support = ["mypy-boto3-support (>=1.34.0,<1.35.0)"] support-app = ["mypy-boto3-support-app (>=1.34.0,<1.35.0)"] swf = ["mypy-boto3-swf (>=1.34.0,<1.35.0)"] synthetics = ["mypy-boto3-synthetics (>=1.34.0,<1.35.0)"] +taxsettings = ["mypy-boto3-taxsettings (>=1.34.0,<1.35.0)"] textract = ["mypy-boto3-textract (>=1.34.0,<1.35.0)"] timestream-influxdb = ["mypy-boto3-timestream-influxdb (>=1.34.0,<1.35.0)"] timestream-query = ["mypy-boto3-timestream-query (>=1.34.0,<1.35.0)"] @@ -702,32 +723,32 @@ xray = ["mypy-boto3-xray (>=1.34.0,<1.35.0)"] [[package]] name = "botocore" -version = "1.34.51" +version = "1.34.106" description = "Low-level, data-driven core of boto 3." optional = false -python-versions = ">= 3.8" +python-versions = ">=3.8" files = [ - {file = "botocore-1.34.51-py3-none-any.whl", hash = "sha256:01d5156247f991b3466a8404e3d7460a9ecbd9b214f9992d6ba797d9ddc6f120"}, - {file = "botocore-1.34.51.tar.gz", hash = "sha256:5086217442e67dd9de36ec7e87a0c663f76b7790d5fb6a12de565af95e87e319"}, + {file = "botocore-1.34.106-py3-none-any.whl", hash = "sha256:4baf0e27c2dfc4f4d0dee7c217c716e0782f9b30e8e1fff983fce237d88f73ae"}, + {file = "botocore-1.34.106.tar.gz", hash = "sha256:921fa5202f88c3e58fdcb4b3acffd56d65b24bca47092ee4b27aa988556c0be6"}, ] [package.dependencies] jmespath = ">=0.7.1,<2.0.0" python-dateutil = ">=2.1,<3.0.0" -urllib3 = {version = ">=1.25.4,<2.1", markers = "python_version >= \"3.10\""} +urllib3 = {version = ">=1.25.4,<2.2.0 || >2.2.0,<3", markers = "python_version >= \"3.10\""} [package.extras] -crt = ["awscrt (==0.19.19)"] +crt = ["awscrt (==0.20.9)"] [[package]] name = "botocore-stubs" -version = "1.34.69" +version = "1.34.128" description = "Type annotations and code completion for botocore" optional = false python-versions = "<4.0,>=3.8" files = [ - {file = "botocore_stubs-1.34.69-py3-none-any.whl", hash = "sha256:0c3835c775db1387246c1ba8063b197604462fba8603d9b36b5dc60297197b2f"}, - {file = "botocore_stubs-1.34.69.tar.gz", hash = "sha256:463248fd1d6e7b68a0c57bdd758d04c6bd0c5c2c3bfa81afdf9d64f0930b59bc"}, + {file = "botocore_stubs-1.34.128-py3-none-any.whl", hash = "sha256:66ed60ecd4433374a20783ea0ca0486019a0ec020d59f830ab4f418926d888ee"}, + {file = "botocore_stubs-1.34.128.tar.gz", hash = "sha256:00e5910b3afb76422208d7ab6c3f3b2d4125e3203e15bf47c0ff5f9e38f00c19"}, ] [package.dependencies] @@ -749,13 +770,13 @@ files = [ [[package]] name = "branca" -version = "0.7.1" +version = "0.7.2" description = "Generate complex HTML+JS pages with Python" optional = false python-versions = ">=3.7" files = [ - {file = "branca-0.7.1-py3-none-any.whl", hash = "sha256:70515944ed2d1ed2784c552508df58037ca19402a8a1069d57f9113e3e012f51"}, - {file = "branca-0.7.1.tar.gz", hash = "sha256:e6b6f37a37bc0abffd960c68c045a7fe025d628eff87fedf6ab6ca814812110c"}, + {file = "branca-0.7.2-py3-none-any.whl", hash = "sha256:853a359c34d08fd06498be762d8be9932750db4049cac11e25dd6f23562e25c2"}, + {file = "branca-0.7.2.tar.gz", hash = "sha256:ca4c94643ef31b819987ca5bd19c6009ea17b440baa3aac04628545f7a4da023"}, ] [package.dependencies] @@ -763,13 +784,13 @@ jinja2 = ">=3" [[package]] name = "certifi" -version = "2024.2.2" +version = "2024.6.2" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, - {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, + {file = "certifi-2024.6.2-py3-none-any.whl", hash = "sha256:ddc6c8ce995e6987e7faf5e3f1b02b302836a0e5d98ece18392cb1a36c72ad56"}, + {file = "certifi-2024.6.2.tar.gz", hash = "sha256:3cd43f1c6fa7dedc5899d69d3ad0398fd018ad1a17fba83ddaf78aa46c747516"}, ] [[package]] @@ -1076,63 +1097,63 @@ test-no-images = ["pytest", "pytest-cov", "pytest-xdist", "wurlitzer"] [[package]] name = "coverage" -version = "7.4.4" +version = "7.5.3" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.8" files = [ - {file = "coverage-7.4.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e0be5efd5127542ef31f165de269f77560d6cdef525fffa446de6f7e9186cfb2"}, - {file = "coverage-7.4.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ccd341521be3d1b3daeb41960ae94a5e87abe2f46f17224ba5d6f2b8398016cf"}, - {file = "coverage-7.4.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09fa497a8ab37784fbb20ab699c246053ac294d13fc7eb40ec007a5043ec91f8"}, - {file = "coverage-7.4.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b1a93009cb80730c9bca5d6d4665494b725b6e8e157c1cb7f2db5b4b122ea562"}, - {file = "coverage-7.4.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:690db6517f09336559dc0b5f55342df62370a48f5469fabf502db2c6d1cffcd2"}, - {file = "coverage-7.4.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:09c3255458533cb76ef55da8cc49ffab9e33f083739c8bd4f58e79fecfe288f7"}, - {file = "coverage-7.4.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:8ce1415194b4a6bd0cdcc3a1dfbf58b63f910dcb7330fe15bdff542c56949f87"}, - {file = "coverage-7.4.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b91cbc4b195444e7e258ba27ac33769c41b94967919f10037e6355e998af255c"}, - {file = "coverage-7.4.4-cp310-cp310-win32.whl", hash = "sha256:598825b51b81c808cb6f078dcb972f96af96b078faa47af7dfcdf282835baa8d"}, - {file = "coverage-7.4.4-cp310-cp310-win_amd64.whl", hash = "sha256:09ef9199ed6653989ebbcaacc9b62b514bb63ea2f90256e71fea3ed74bd8ff6f"}, - {file = "coverage-7.4.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0f9f50e7ef2a71e2fae92774c99170eb8304e3fdf9c8c3c7ae9bab3e7229c5cf"}, - {file = "coverage-7.4.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:623512f8ba53c422fcfb2ce68362c97945095b864cda94a92edbaf5994201083"}, - {file = "coverage-7.4.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0513b9508b93da4e1716744ef6ebc507aff016ba115ffe8ecff744d1322a7b63"}, - {file = "coverage-7.4.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40209e141059b9370a2657c9b15607815359ab3ef9918f0196b6fccce8d3230f"}, - {file = "coverage-7.4.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a2b2b78c78293782fd3767d53e6474582f62443d0504b1554370bde86cc8227"}, - {file = "coverage-7.4.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:73bfb9c09951125d06ee473bed216e2c3742f530fc5acc1383883125de76d9cd"}, - {file = "coverage-7.4.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:1f384c3cc76aeedce208643697fb3e8437604b512255de6d18dae3f27655a384"}, - {file = "coverage-7.4.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:54eb8d1bf7cacfbf2a3186019bcf01d11c666bd495ed18717162f7eb1e9dd00b"}, - {file = "coverage-7.4.4-cp311-cp311-win32.whl", hash = "sha256:cac99918c7bba15302a2d81f0312c08054a3359eaa1929c7e4b26ebe41e9b286"}, - {file = "coverage-7.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:b14706df8b2de49869ae03a5ccbc211f4041750cd4a66f698df89d44f4bd30ec"}, - {file = "coverage-7.4.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:201bef2eea65e0e9c56343115ba3814e896afe6d36ffd37bab783261db430f76"}, - {file = "coverage-7.4.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:41c9c5f3de16b903b610d09650e5e27adbfa7f500302718c9ffd1c12cf9d6818"}, - {file = "coverage-7.4.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d898fe162d26929b5960e4e138651f7427048e72c853607f2b200909794ed978"}, - {file = "coverage-7.4.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3ea79bb50e805cd6ac058dfa3b5c8f6c040cb87fe83de10845857f5535d1db70"}, - {file = "coverage-7.4.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce4b94265ca988c3f8e479e741693d143026632672e3ff924f25fab50518dd51"}, - {file = "coverage-7.4.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:00838a35b882694afda09f85e469c96367daa3f3f2b097d846a7216993d37f4c"}, - {file = "coverage-7.4.4-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:fdfafb32984684eb03c2d83e1e51f64f0906b11e64482df3c5db936ce3839d48"}, - {file = "coverage-7.4.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:69eb372f7e2ece89f14751fbcbe470295d73ed41ecd37ca36ed2eb47512a6ab9"}, - {file = "coverage-7.4.4-cp312-cp312-win32.whl", hash = "sha256:137eb07173141545e07403cca94ab625cc1cc6bc4c1e97b6e3846270e7e1fea0"}, - {file = "coverage-7.4.4-cp312-cp312-win_amd64.whl", hash = "sha256:d71eec7d83298f1af3326ce0ff1d0ea83c7cb98f72b577097f9083b20bdaf05e"}, - {file = "coverage-7.4.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d5ae728ff3b5401cc320d792866987e7e7e880e6ebd24433b70a33b643bb0384"}, - {file = "coverage-7.4.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cc4f1358cb0c78edef3ed237ef2c86056206bb8d9140e73b6b89fbcfcbdd40e1"}, - {file = "coverage-7.4.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8130a2aa2acb8788e0b56938786c33c7c98562697bf9f4c7d6e8e5e3a0501e4a"}, - {file = "coverage-7.4.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf271892d13e43bc2b51e6908ec9a6a5094a4df1d8af0bfc360088ee6c684409"}, - {file = "coverage-7.4.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a4cdc86d54b5da0df6d3d3a2f0b710949286094c3a6700c21e9015932b81447e"}, - {file = "coverage-7.4.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:ae71e7ddb7a413dd60052e90528f2f65270aad4b509563af6d03d53e979feafd"}, - {file = "coverage-7.4.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:38dd60d7bf242c4ed5b38e094baf6401faa114fc09e9e6632374388a404f98e7"}, - {file = "coverage-7.4.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:aa5b1c1bfc28384f1f53b69a023d789f72b2e0ab1b3787aae16992a7ca21056c"}, - {file = "coverage-7.4.4-cp38-cp38-win32.whl", hash = "sha256:dfa8fe35a0bb90382837b238fff375de15f0dcdb9ae68ff85f7a63649c98527e"}, - {file = "coverage-7.4.4-cp38-cp38-win_amd64.whl", hash = "sha256:b2991665420a803495e0b90a79233c1433d6ed77ef282e8e152a324bbbc5e0c8"}, - {file = "coverage-7.4.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3b799445b9f7ee8bf299cfaed6f5b226c0037b74886a4e11515e569b36fe310d"}, - {file = "coverage-7.4.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b4d33f418f46362995f1e9d4f3a35a1b6322cb959c31d88ae56b0298e1c22357"}, - {file = "coverage-7.4.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aadacf9a2f407a4688d700e4ebab33a7e2e408f2ca04dbf4aef17585389eff3e"}, - {file = "coverage-7.4.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c95949560050d04d46b919301826525597f07b33beba6187d04fa64d47ac82e"}, - {file = "coverage-7.4.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff7687ca3d7028d8a5f0ebae95a6e4827c5616b31a4ee1192bdfde697db110d4"}, - {file = "coverage-7.4.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5fc1de20b2d4a061b3df27ab9b7c7111e9a710f10dc2b84d33a4ab25065994ec"}, - {file = "coverage-7.4.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:c74880fc64d4958159fbd537a091d2a585448a8f8508bf248d72112723974cbd"}, - {file = "coverage-7.4.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:742a76a12aa45b44d236815d282b03cfb1de3b4323f3e4ec933acfae08e54ade"}, - {file = "coverage-7.4.4-cp39-cp39-win32.whl", hash = "sha256:d89d7b2974cae412400e88f35d86af72208e1ede1a541954af5d944a8ba46c57"}, - {file = "coverage-7.4.4-cp39-cp39-win_amd64.whl", hash = "sha256:9ca28a302acb19b6af89e90f33ee3e1906961f94b54ea37de6737b7ca9d8827c"}, - {file = "coverage-7.4.4-pp38.pp39.pp310-none-any.whl", hash = "sha256:b2c5edc4ac10a7ef6605a966c58929ec6c1bd0917fb8c15cb3363f65aa40e677"}, - {file = "coverage-7.4.4.tar.gz", hash = "sha256:c901df83d097649e257e803be22592aedfd5182f07b3cc87d640bbb9afd50f49"}, + {file = "coverage-7.5.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a6519d917abb15e12380406d721e37613e2a67d166f9fb7e5a8ce0375744cd45"}, + {file = "coverage-7.5.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:aea7da970f1feccf48be7335f8b2ca64baf9b589d79e05b9397a06696ce1a1ec"}, + {file = "coverage-7.5.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:923b7b1c717bd0f0f92d862d1ff51d9b2b55dbbd133e05680204465f454bb286"}, + {file = "coverage-7.5.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62bda40da1e68898186f274f832ef3e759ce929da9a9fd9fcf265956de269dbc"}, + {file = "coverage-7.5.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8b7339180d00de83e930358223c617cc343dd08e1aa5ec7b06c3a121aec4e1d"}, + {file = "coverage-7.5.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:25a5caf742c6195e08002d3b6c2dd6947e50efc5fc2c2205f61ecb47592d2d83"}, + {file = "coverage-7.5.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:05ac5f60faa0c704c0f7e6a5cbfd6f02101ed05e0aee4d2822637a9e672c998d"}, + {file = "coverage-7.5.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:239a4e75e09c2b12ea478d28815acf83334d32e722e7433471fbf641c606344c"}, + {file = "coverage-7.5.3-cp310-cp310-win32.whl", hash = "sha256:a5812840d1d00eafae6585aba38021f90a705a25b8216ec7f66aebe5b619fb84"}, + {file = "coverage-7.5.3-cp310-cp310-win_amd64.whl", hash = "sha256:33ca90a0eb29225f195e30684ba4a6db05dbef03c2ccd50b9077714c48153cac"}, + {file = "coverage-7.5.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f81bc26d609bf0fbc622c7122ba6307993c83c795d2d6f6f6fd8c000a770d974"}, + {file = "coverage-7.5.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7cec2af81f9e7569280822be68bd57e51b86d42e59ea30d10ebdbb22d2cb7232"}, + {file = "coverage-7.5.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55f689f846661e3f26efa535071775d0483388a1ccfab899df72924805e9e7cd"}, + {file = "coverage-7.5.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50084d3516aa263791198913a17354bd1dc627d3c1639209640b9cac3fef5807"}, + {file = "coverage-7.5.3-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:341dd8f61c26337c37988345ca5c8ccabeff33093a26953a1ac72e7d0103c4fb"}, + {file = "coverage-7.5.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ab0b028165eea880af12f66086694768f2c3139b2c31ad5e032c8edbafca6ffc"}, + {file = "coverage-7.5.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:5bc5a8c87714b0c67cfeb4c7caa82b2d71e8864d1a46aa990b5588fa953673b8"}, + {file = "coverage-7.5.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:38a3b98dae8a7c9057bd91fbf3415c05e700a5114c5f1b5b0ea5f8f429ba6614"}, + {file = "coverage-7.5.3-cp311-cp311-win32.whl", hash = "sha256:fcf7d1d6f5da887ca04302db8e0e0cf56ce9a5e05f202720e49b3e8157ddb9a9"}, + {file = "coverage-7.5.3-cp311-cp311-win_amd64.whl", hash = "sha256:8c836309931839cca658a78a888dab9676b5c988d0dd34ca247f5f3e679f4e7a"}, + {file = "coverage-7.5.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:296a7d9bbc598e8744c00f7a6cecf1da9b30ae9ad51c566291ff1314e6cbbed8"}, + {file = "coverage-7.5.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:34d6d21d8795a97b14d503dcaf74226ae51eb1f2bd41015d3ef332a24d0a17b3"}, + {file = "coverage-7.5.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e317953bb4c074c06c798a11dbdd2cf9979dbcaa8ccc0fa4701d80042d4ebf1"}, + {file = "coverage-7.5.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:705f3d7c2b098c40f5b81790a5fedb274113373d4d1a69e65f8b68b0cc26f6db"}, + {file = "coverage-7.5.3-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1196e13c45e327d6cd0b6e471530a1882f1017eb83c6229fc613cd1a11b53cd"}, + {file = "coverage-7.5.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:015eddc5ccd5364dcb902eaecf9515636806fa1e0d5bef5769d06d0f31b54523"}, + {file = "coverage-7.5.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:fd27d8b49e574e50caa65196d908f80e4dff64d7e592d0c59788b45aad7e8b35"}, + {file = "coverage-7.5.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:33fc65740267222fc02975c061eb7167185fef4cc8f2770267ee8bf7d6a42f84"}, + {file = "coverage-7.5.3-cp312-cp312-win32.whl", hash = "sha256:7b2a19e13dfb5c8e145c7a6ea959485ee8e2204699903c88c7d25283584bfc08"}, + {file = "coverage-7.5.3-cp312-cp312-win_amd64.whl", hash = "sha256:0bbddc54bbacfc09b3edaec644d4ac90c08ee8ed4844b0f86227dcda2d428fcb"}, + {file = "coverage-7.5.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f78300789a708ac1f17e134593f577407d52d0417305435b134805c4fb135adb"}, + {file = "coverage-7.5.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b368e1aee1b9b75757942d44d7598dcd22a9dbb126affcbba82d15917f0cc155"}, + {file = "coverage-7.5.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f836c174c3a7f639bded48ec913f348c4761cbf49de4a20a956d3431a7c9cb24"}, + {file = "coverage-7.5.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:244f509f126dc71369393ce5fea17c0592c40ee44e607b6d855e9c4ac57aac98"}, + {file = "coverage-7.5.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c4c2872b3c91f9baa836147ca33650dc5c172e9273c808c3c3199c75490e709d"}, + {file = "coverage-7.5.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:dd4b3355b01273a56b20c219e74e7549e14370b31a4ffe42706a8cda91f19f6d"}, + {file = "coverage-7.5.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:f542287b1489c7a860d43a7d8883e27ca62ab84ca53c965d11dac1d3a1fab7ce"}, + {file = "coverage-7.5.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:75e3f4e86804023e991096b29e147e635f5e2568f77883a1e6eed74512659ab0"}, + {file = "coverage-7.5.3-cp38-cp38-win32.whl", hash = "sha256:c59d2ad092dc0551d9f79d9d44d005c945ba95832a6798f98f9216ede3d5f485"}, + {file = "coverage-7.5.3-cp38-cp38-win_amd64.whl", hash = "sha256:fa21a04112c59ad54f69d80e376f7f9d0f5f9123ab87ecd18fbb9ec3a2beed56"}, + {file = "coverage-7.5.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f5102a92855d518b0996eb197772f5ac2a527c0ec617124ad5242a3af5e25f85"}, + {file = "coverage-7.5.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d1da0a2e3b37b745a2b2a678a4c796462cf753aebf94edcc87dcc6b8641eae31"}, + {file = "coverage-7.5.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8383a6c8cefba1b7cecc0149415046b6fc38836295bc4c84e820872eb5478b3d"}, + {file = "coverage-7.5.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9aad68c3f2566dfae84bf46295a79e79d904e1c21ccfc66de88cd446f8686341"}, + {file = "coverage-7.5.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2e079c9ec772fedbade9d7ebc36202a1d9ef7291bc9b3a024ca395c4d52853d7"}, + {file = "coverage-7.5.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bde997cac85fcac227b27d4fb2c7608a2c5f6558469b0eb704c5726ae49e1c52"}, + {file = "coverage-7.5.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:990fb20b32990b2ce2c5f974c3e738c9358b2735bc05075d50a6f36721b8f303"}, + {file = "coverage-7.5.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3d5a67f0da401e105753d474369ab034c7bae51a4c31c77d94030d59e41df5bd"}, + {file = "coverage-7.5.3-cp39-cp39-win32.whl", hash = "sha256:e08c470c2eb01977d221fd87495b44867a56d4d594f43739a8028f8646a51e0d"}, + {file = "coverage-7.5.3-cp39-cp39-win_amd64.whl", hash = "sha256:1d2a830ade66d3563bb61d1e3c77c8def97b30ed91e166c67d0632c018f380f0"}, + {file = "coverage-7.5.3-pp38.pp39.pp310-none-any.whl", hash = "sha256:3538d8fb1ee9bdd2e2692b3b18c22bb1c19ffbefd06880f5ac496e42d7bb3884"}, + {file = "coverage-7.5.3.tar.gz", hash = "sha256:04aefca5190d1dc7a53a4c1a5a7f8568811306d7a8ee231c42fb69215571944f"}, ] [package.dependencies] @@ -1143,43 +1164,43 @@ toml = ["tomli"] [[package]] name = "cryptography" -version = "42.0.0" +version = "42.0.8" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." optional = false python-versions = ">=3.7" files = [ - {file = "cryptography-42.0.0-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:c640b0ef54138fde761ec99a6c7dc4ce05e80420262c20fa239e694ca371d434"}, - {file = "cryptography-42.0.0-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:678cfa0d1e72ef41d48993a7be75a76b0725d29b820ff3cfd606a5b2b33fda01"}, - {file = "cryptography-42.0.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:146e971e92a6dd042214b537a726c9750496128453146ab0ee8971a0299dc9bd"}, - {file = "cryptography-42.0.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87086eae86a700307b544625e3ba11cc600c3c0ef8ab97b0fda0705d6db3d4e3"}, - {file = "cryptography-42.0.0-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:0a68bfcf57a6887818307600c3c0ebc3f62fbb6ccad2240aa21887cda1f8df1b"}, - {file = "cryptography-42.0.0-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:5a217bca51f3b91971400890905a9323ad805838ca3fa1e202a01844f485ee87"}, - {file = "cryptography-42.0.0-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:ca20550bb590db16223eb9ccc5852335b48b8f597e2f6f0878bbfd9e7314eb17"}, - {file = "cryptography-42.0.0-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:33588310b5c886dfb87dba5f013b8d27df7ffd31dc753775342a1e5ab139e59d"}, - {file = "cryptography-42.0.0-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:9515ea7f596c8092fdc9902627e51b23a75daa2c7815ed5aa8cf4f07469212ec"}, - {file = "cryptography-42.0.0-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:35cf6ed4c38f054478a9df14f03c1169bb14bd98f0b1705751079b25e1cb58bc"}, - {file = "cryptography-42.0.0-cp37-abi3-win32.whl", hash = "sha256:8814722cffcfd1fbd91edd9f3451b88a8f26a5fd41b28c1c9193949d1c689dc4"}, - {file = "cryptography-42.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:a2a8d873667e4fd2f34aedab02ba500b824692c6542e017075a2efc38f60a4c0"}, - {file = "cryptography-42.0.0-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:8fedec73d590fd30c4e3f0d0f4bc961aeca8390c72f3eaa1a0874d180e868ddf"}, - {file = "cryptography-42.0.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:be41b0c7366e5549265adf2145135dca107718fa44b6e418dc7499cfff6b4689"}, - {file = "cryptography-42.0.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ca482ea80626048975360c8e62be3ceb0f11803180b73163acd24bf014133a0"}, - {file = "cryptography-42.0.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:c58115384bdcfe9c7f644c72f10f6f42bed7cf59f7b52fe1bf7ae0a622b3a139"}, - {file = "cryptography-42.0.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:56ce0c106d5c3fec1038c3cca3d55ac320a5be1b44bf15116732d0bc716979a2"}, - {file = "cryptography-42.0.0-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:324721d93b998cb7367f1e6897370644751e5580ff9b370c0a50dc60a2003513"}, - {file = "cryptography-42.0.0-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:d97aae66b7de41cdf5b12087b5509e4e9805ed6f562406dfcf60e8481a9a28f8"}, - {file = "cryptography-42.0.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:85f759ed59ffd1d0baad296e72780aa62ff8a71f94dc1ab340386a1207d0ea81"}, - {file = "cryptography-42.0.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:206aaf42e031b93f86ad60f9f5d9da1b09164f25488238ac1dc488334eb5e221"}, - {file = "cryptography-42.0.0-cp39-abi3-win32.whl", hash = "sha256:74f18a4c8ca04134d2052a140322002fef535c99cdbc2a6afc18a8024d5c9d5b"}, - {file = "cryptography-42.0.0-cp39-abi3-win_amd64.whl", hash = "sha256:14e4b909373bc5bf1095311fa0f7fcabf2d1a160ca13f1e9e467be1ac4cbdf94"}, - {file = "cryptography-42.0.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3005166a39b70c8b94455fdbe78d87a444da31ff70de3331cdec2c568cf25b7e"}, - {file = "cryptography-42.0.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:be14b31eb3a293fc6e6aa2807c8a3224c71426f7c4e3639ccf1a2f3ffd6df8c3"}, - {file = "cryptography-42.0.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:bd7cf7a8d9f34cc67220f1195884151426ce616fdc8285df9054bfa10135925f"}, - {file = "cryptography-42.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:c310767268d88803b653fffe6d6f2f17bb9d49ffceb8d70aed50ad45ea49ab08"}, - {file = "cryptography-42.0.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:bdce70e562c69bb089523e75ef1d9625b7417c6297a76ac27b1b8b1eb51b7d0f"}, - {file = "cryptography-42.0.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:e9326ca78111e4c645f7e49cbce4ed2f3f85e17b61a563328c85a5208cf34440"}, - {file = "cryptography-42.0.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:69fd009a325cad6fbfd5b04c711a4da563c6c4854fc4c9544bff3088387c77c0"}, - {file = "cryptography-42.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:988b738f56c665366b1e4bfd9045c3efae89ee366ca3839cd5af53eaa1401bce"}, - {file = "cryptography-42.0.0.tar.gz", hash = "sha256:6cf9b76d6e93c62114bd19485e5cb003115c134cf9ce91f8ac924c44f8c8c3f4"}, + {file = "cryptography-42.0.8-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:81d8a521705787afe7a18d5bfb47ea9d9cc068206270aad0b96a725022e18d2e"}, + {file = "cryptography-42.0.8-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:961e61cefdcb06e0c6d7e3a1b22ebe8b996eb2bf50614e89384be54c48c6b63d"}, + {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e3ec3672626e1b9e55afd0df6d774ff0e953452886e06e0f1eb7eb0c832e8902"}, + {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e599b53fd95357d92304510fb7bda8523ed1f79ca98dce2f43c115950aa78801"}, + {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:5226d5d21ab681f432a9c1cf8b658c0cb02533eece706b155e5fbd8a0cdd3949"}, + {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:6b7c4f03ce01afd3b76cf69a5455caa9cfa3de8c8f493e0d3ab7d20611c8dae9"}, + {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:2346b911eb349ab547076f47f2e035fc8ff2c02380a7cbbf8d87114fa0f1c583"}, + {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:ad803773e9df0b92e0a817d22fd8a3675493f690b96130a5e24f1b8fabbea9c7"}, + {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:2f66d9cd9147ee495a8374a45ca445819f8929a3efcd2e3df6428e46c3cbb10b"}, + {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:d45b940883a03e19e944456a558b67a41160e367a719833c53de6911cabba2b7"}, + {file = "cryptography-42.0.8-cp37-abi3-win32.whl", hash = "sha256:a0c5b2b0585b6af82d7e385f55a8bc568abff8923af147ee3c07bd8b42cda8b2"}, + {file = "cryptography-42.0.8-cp37-abi3-win_amd64.whl", hash = "sha256:57080dee41209e556a9a4ce60d229244f7a66ef52750f813bfbe18959770cfba"}, + {file = "cryptography-42.0.8-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:dea567d1b0e8bc5764b9443858b673b734100c2871dc93163f58c46a97a83d28"}, + {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4783183f7cb757b73b2ae9aed6599b96338eb957233c58ca8f49a49cc32fd5e"}, + {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0608251135d0e03111152e41f0cc2392d1e74e35703960d4190b2e0f4ca9c70"}, + {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:dc0fdf6787f37b1c6b08e6dfc892d9d068b5bdb671198c72072828b80bd5fe4c"}, + {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:9c0c1716c8447ee7dbf08d6db2e5c41c688544c61074b54fc4564196f55c25a7"}, + {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:fff12c88a672ab9c9c1cf7b0c80e3ad9e2ebd9d828d955c126be4fd3e5578c9e"}, + {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:cafb92b2bc622cd1aa6a1dce4b93307792633f4c5fe1f46c6b97cf67073ec961"}, + {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:31f721658a29331f895a5a54e7e82075554ccfb8b163a18719d342f5ffe5ecb1"}, + {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b297f90c5723d04bcc8265fc2a0f86d4ea2e0f7ab4b6994459548d3a6b992a14"}, + {file = "cryptography-42.0.8-cp39-abi3-win32.whl", hash = "sha256:2f88d197e66c65be5e42cd72e5c18afbfae3f741742070e3019ac8f4ac57262c"}, + {file = "cryptography-42.0.8-cp39-abi3-win_amd64.whl", hash = "sha256:fa76fbb7596cc5839320000cdd5d0955313696d9511debab7ee7278fc8b5c84a"}, + {file = "cryptography-42.0.8-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ba4f0a211697362e89ad822e667d8d340b4d8d55fae72cdd619389fb5912eefe"}, + {file = "cryptography-42.0.8-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:81884c4d096c272f00aeb1f11cf62ccd39763581645b0812e99a91505fa48e0c"}, + {file = "cryptography-42.0.8-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c9bb2ae11bfbab395bdd072985abde58ea9860ed84e59dbc0463a5d0159f5b71"}, + {file = "cryptography-42.0.8-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7016f837e15b0a1c119d27ecd89b3515f01f90a8615ed5e9427e30d9cdbfed3d"}, + {file = "cryptography-42.0.8-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5a94eccb2a81a309806027e1670a358b99b8fe8bfe9f8d329f27d72c094dde8c"}, + {file = "cryptography-42.0.8-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:dec9b018df185f08483f294cae6ccac29e7a6e0678996587363dc352dc65c842"}, + {file = "cryptography-42.0.8-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:343728aac38decfdeecf55ecab3264b015be68fc2816ca800db649607aeee648"}, + {file = "cryptography-42.0.8-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:013629ae70b40af70c9a7a5db40abe5d9054e6f4380e50ce769947b73bf3caad"}, + {file = "cryptography-42.0.8.tar.gz", hash = "sha256:8d09d05439ce7baa8e9e95b07ec5b6c886f548deb7e0f69ef25f64b3bce842f2"}, ] [package.dependencies] @@ -1300,13 +1321,13 @@ tinynetrc = ">=1.3.1,<2.0.0" [[package]] name = "exceptiongroup" -version = "1.2.0" +version = "1.2.1" description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" files = [ - {file = "exceptiongroup-1.2.0-py3-none-any.whl", hash = "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14"}, - {file = "exceptiongroup-1.2.0.tar.gz", hash = "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68"}, + {file = "exceptiongroup-1.2.1-py3-none-any.whl", hash = "sha256:5258b9ed329c5bbdd31a309f53cbfb0b155341807f6ff7606a1e801a891b29ad"}, + {file = "exceptiongroup-1.2.1.tar.gz", hash = "sha256:a4785e48b045528f5bfe627b6ad554ff32def154f42372786903b7abcfe1aa16"}, ] [package.extras] @@ -1328,13 +1349,13 @@ tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipyth [[package]] name = "fastjsonschema" -version = "2.19.1" +version = "2.20.0" description = "Fastest Python implementation of JSON schema" optional = false python-versions = "*" files = [ - {file = "fastjsonschema-2.19.1-py3-none-any.whl", hash = "sha256:3672b47bc94178c9f23dbb654bf47440155d4db9df5f7bc47643315f9c405cd0"}, - {file = "fastjsonschema-2.19.1.tar.gz", hash = "sha256:e3126a94bdc4623d3de4485f8d468a12f02a67921315ddc87836d6e456dc789d"}, + {file = "fastjsonschema-2.20.0-py3-none-any.whl", hash = "sha256:5875f0b0fa7a0043a91e93a9b8f793bcbbba9691e7fd83dca95c28ba26d21f0a"}, + {file = "fastjsonschema-2.20.0.tar.gz", hash = "sha256:3d48fc5300ee96f5d116f10fe6f28d938e6008f59a6a025c2649475b87f76a23"}, ] [package.extras] @@ -1426,53 +1447,53 @@ testing = ["pytest"] [[package]] name = "fonttools" -version = "4.50.0" +version = "4.53.0" description = "Tools to manipulate font files" optional = false python-versions = ">=3.8" files = [ - {file = "fonttools-4.50.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:effd303fb422f8ce06543a36ca69148471144c534cc25f30e5be752bc4f46736"}, - {file = "fonttools-4.50.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7913992ab836f621d06aabac118fc258b9947a775a607e1a737eb3a91c360335"}, - {file = "fonttools-4.50.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e0a1c5bd2f63da4043b63888534b52c5a1fd7ae187c8ffc64cbb7ae475b9dab"}, - {file = "fonttools-4.50.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d40fc98540fa5360e7ecf2c56ddf3c6e7dd04929543618fd7b5cc76e66390562"}, - {file = "fonttools-4.50.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:9fff65fbb7afe137bac3113827855e0204482727bddd00a806034ab0d3951d0d"}, - {file = "fonttools-4.50.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b1aeae3dd2ee719074a9372c89ad94f7c581903306d76befdaca2a559f802472"}, - {file = "fonttools-4.50.0-cp310-cp310-win32.whl", hash = "sha256:e9623afa319405da33b43c85cceb0585a6f5d3a1d7c604daf4f7e1dd55c03d1f"}, - {file = "fonttools-4.50.0-cp310-cp310-win_amd64.whl", hash = "sha256:778c5f43e7e654ef7fe0605e80894930bc3a7772e2f496238e57218610140f54"}, - {file = "fonttools-4.50.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3dfb102e7f63b78c832e4539969167ffcc0375b013080e6472350965a5fe8048"}, - {file = "fonttools-4.50.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9e58fe34cb379ba3d01d5d319d67dd3ce7ca9a47ad044ea2b22635cd2d1247fc"}, - {file = "fonttools-4.50.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c673ab40d15a442a4e6eb09bf007c1dda47c84ac1e2eecbdf359adacb799c24"}, - {file = "fonttools-4.50.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9b3ac35cdcd1a4c90c23a5200212c1bb74fa05833cc7c14291d7043a52ca2aaa"}, - {file = "fonttools-4.50.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:8844e7a2c5f7ecf977e82eb6b3014f025c8b454e046d941ece05b768be5847ae"}, - {file = "fonttools-4.50.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f849bd3c5c2249b49c98eca5aaebb920d2bfd92b3c69e84ca9bddf133e9f83f0"}, - {file = "fonttools-4.50.0-cp311-cp311-win32.whl", hash = "sha256:39293ff231b36b035575e81c14626dfc14407a20de5262f9596c2cbb199c3625"}, - {file = "fonttools-4.50.0-cp311-cp311-win_amd64.whl", hash = "sha256:c33d5023523b44d3481624f840c8646656a1def7630ca562f222eb3ead16c438"}, - {file = "fonttools-4.50.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:b4a886a6dbe60100ba1cd24de962f8cd18139bd32808da80de1fa9f9f27bf1dc"}, - {file = "fonttools-4.50.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b2ca1837bfbe5eafa11313dbc7edada79052709a1fffa10cea691210af4aa1fa"}, - {file = "fonttools-4.50.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0493dd97ac8977e48ffc1476b932b37c847cbb87fd68673dee5182004906828"}, - {file = "fonttools-4.50.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77844e2f1b0889120b6c222fc49b2b75c3d88b930615e98893b899b9352a27ea"}, - {file = "fonttools-4.50.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3566bfb8c55ed9100afe1ba6f0f12265cd63a1387b9661eb6031a1578a28bad1"}, - {file = "fonttools-4.50.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:35e10ddbc129cf61775d58a14f2d44121178d89874d32cae1eac722e687d9019"}, - {file = "fonttools-4.50.0-cp312-cp312-win32.whl", hash = "sha256:cc8140baf9fa8f9b903f2b393a6c413a220fa990264b215bf48484f3d0bf8710"}, - {file = "fonttools-4.50.0-cp312-cp312-win_amd64.whl", hash = "sha256:0ccc85fd96373ab73c59833b824d7a73846670a0cb1f3afbaee2b2c426a8f931"}, - {file = "fonttools-4.50.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e270a406219af37581d96c810172001ec536e29e5593aa40d4c01cca3e145aa6"}, - {file = "fonttools-4.50.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ac2463de667233372e9e1c7e9de3d914b708437ef52a3199fdbf5a60184f190c"}, - {file = "fonttools-4.50.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:47abd6669195abe87c22750dbcd366dc3a0648f1b7c93c2baa97429c4dc1506e"}, - {file = "fonttools-4.50.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:074841375e2e3d559aecc86e1224caf78e8b8417bb391e7d2506412538f21adc"}, - {file = "fonttools-4.50.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0743fd2191ad7ab43d78cd747215b12033ddee24fa1e088605a3efe80d6984de"}, - {file = "fonttools-4.50.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:3d7080cce7be5ed65bee3496f09f79a82865a514863197ff4d4d177389e981b0"}, - {file = "fonttools-4.50.0-cp38-cp38-win32.whl", hash = "sha256:a467ba4e2eadc1d5cc1a11d355abb945f680473fbe30d15617e104c81f483045"}, - {file = "fonttools-4.50.0-cp38-cp38-win_amd64.whl", hash = "sha256:f77e048f805e00870659d6318fd89ef28ca4ee16a22b4c5e1905b735495fc422"}, - {file = "fonttools-4.50.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b6245eafd553c4e9a0708e93be51392bd2288c773523892fbd616d33fd2fda59"}, - {file = "fonttools-4.50.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a4062cc7e8de26f1603323ef3ae2171c9d29c8a9f5e067d555a2813cd5c7a7e0"}, - {file = "fonttools-4.50.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34692850dfd64ba06af61e5791a441f664cb7d21e7b544e8f385718430e8f8e4"}, - {file = "fonttools-4.50.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:678dd95f26a67e02c50dcb5bf250f95231d455642afbc65a3b0bcdacd4e4dd38"}, - {file = "fonttools-4.50.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4f2ce7b0b295fe64ac0a85aef46a0f2614995774bd7bc643b85679c0283287f9"}, - {file = "fonttools-4.50.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d346f4dc2221bfb7ab652d1e37d327578434ce559baf7113b0f55768437fe6a0"}, - {file = "fonttools-4.50.0-cp39-cp39-win32.whl", hash = "sha256:a51eeaf52ba3afd70bf489be20e52fdfafe6c03d652b02477c6ce23c995222f4"}, - {file = "fonttools-4.50.0-cp39-cp39-win_amd64.whl", hash = "sha256:8639be40d583e5d9da67795aa3eeeda0488fb577a1d42ae11a5036f18fb16d93"}, - {file = "fonttools-4.50.0-py3-none-any.whl", hash = "sha256:48fa36da06247aa8282766cfd63efff1bb24e55f020f29a335939ed3844d20d3"}, - {file = "fonttools-4.50.0.tar.gz", hash = "sha256:fa5cf61058c7dbb104c2ac4e782bf1b2016a8cf2f69de6e4dd6a865d2c969bb5"}, + {file = "fonttools-4.53.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:52a6e0a7a0bf611c19bc8ec8f7592bdae79c8296c70eb05917fd831354699b20"}, + {file = "fonttools-4.53.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:099634631b9dd271d4a835d2b2a9e042ccc94ecdf7e2dd9f7f34f7daf333358d"}, + {file = "fonttools-4.53.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e40013572bfb843d6794a3ce076c29ef4efd15937ab833f520117f8eccc84fd6"}, + {file = "fonttools-4.53.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:715b41c3e231f7334cbe79dfc698213dcb7211520ec7a3bc2ba20c8515e8a3b5"}, + {file = "fonttools-4.53.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:74ae2441731a05b44d5988d3ac2cf784d3ee0a535dbed257cbfff4be8bb49eb9"}, + {file = "fonttools-4.53.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:95db0c6581a54b47c30860d013977b8a14febc206c8b5ff562f9fe32738a8aca"}, + {file = "fonttools-4.53.0-cp310-cp310-win32.whl", hash = "sha256:9cd7a6beec6495d1dffb1033d50a3f82dfece23e9eb3c20cd3c2444d27514068"}, + {file = "fonttools-4.53.0-cp310-cp310-win_amd64.whl", hash = "sha256:daaef7390e632283051e3cf3e16aff2b68b247e99aea916f64e578c0449c9c68"}, + {file = "fonttools-4.53.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a209d2e624ba492df4f3bfad5996d1f76f03069c6133c60cd04f9a9e715595ec"}, + {file = "fonttools-4.53.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4f520d9ac5b938e6494f58a25c77564beca7d0199ecf726e1bd3d56872c59749"}, + {file = "fonttools-4.53.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eceef49f457253000e6a2d0f7bd08ff4e9fe96ec4ffce2dbcb32e34d9c1b8161"}, + {file = "fonttools-4.53.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa1f3e34373aa16045484b4d9d352d4c6b5f9f77ac77a178252ccbc851e8b2ee"}, + {file = "fonttools-4.53.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:28d072169fe8275fb1a0d35e3233f6df36a7e8474e56cb790a7258ad822b6fd6"}, + {file = "fonttools-4.53.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4a2a6ba400d386e904fd05db81f73bee0008af37799a7586deaa4aef8cd5971e"}, + {file = "fonttools-4.53.0-cp311-cp311-win32.whl", hash = "sha256:bb7273789f69b565d88e97e9e1da602b4ee7ba733caf35a6c2affd4334d4f005"}, + {file = "fonttools-4.53.0-cp311-cp311-win_amd64.whl", hash = "sha256:9fe9096a60113e1d755e9e6bda15ef7e03391ee0554d22829aa506cdf946f796"}, + {file = "fonttools-4.53.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:d8f191a17369bd53a5557a5ee4bab91d5330ca3aefcdf17fab9a497b0e7cff7a"}, + {file = "fonttools-4.53.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:93156dd7f90ae0a1b0e8871032a07ef3178f553f0c70c386025a808f3a63b1f4"}, + {file = "fonttools-4.53.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bff98816cb144fb7b85e4b5ba3888a33b56ecef075b0e95b95bcd0a5fbf20f06"}, + {file = "fonttools-4.53.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:973d030180eca8255b1bce6ffc09ef38a05dcec0e8320cc9b7bcaa65346f341d"}, + {file = "fonttools-4.53.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c4ee5a24e281fbd8261c6ab29faa7fd9a87a12e8c0eed485b705236c65999109"}, + {file = "fonttools-4.53.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bd5bc124fae781a4422f61b98d1d7faa47985f663a64770b78f13d2c072410c2"}, + {file = "fonttools-4.53.0-cp312-cp312-win32.whl", hash = "sha256:a239afa1126b6a619130909c8404070e2b473dd2b7fc4aacacd2e763f8597fea"}, + {file = "fonttools-4.53.0-cp312-cp312-win_amd64.whl", hash = "sha256:45b4afb069039f0366a43a5d454bc54eea942bfb66b3fc3e9a2c07ef4d617380"}, + {file = "fonttools-4.53.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:93bc9e5aaa06ff928d751dc6be889ff3e7d2aa393ab873bc7f6396a99f6fbb12"}, + {file = "fonttools-4.53.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2367d47816cc9783a28645bc1dac07f8ffc93e0f015e8c9fc674a5b76a6da6e4"}, + {file = "fonttools-4.53.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:907fa0b662dd8fc1d7c661b90782ce81afb510fc4b7aa6ae7304d6c094b27bce"}, + {file = "fonttools-4.53.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3e0ad3c6ea4bd6a289d958a1eb922767233f00982cf0fe42b177657c86c80a8f"}, + {file = "fonttools-4.53.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:73121a9b7ff93ada888aaee3985a88495489cc027894458cb1a736660bdfb206"}, + {file = "fonttools-4.53.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:ee595d7ba9bba130b2bec555a40aafa60c26ce68ed0cf509983e0f12d88674fd"}, + {file = "fonttools-4.53.0-cp38-cp38-win32.whl", hash = "sha256:fca66d9ff2ac89b03f5aa17e0b21a97c21f3491c46b583bb131eb32c7bab33af"}, + {file = "fonttools-4.53.0-cp38-cp38-win_amd64.whl", hash = "sha256:31f0e3147375002aae30696dd1dc596636abbd22fca09d2e730ecde0baad1d6b"}, + {file = "fonttools-4.53.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7d6166192dcd925c78a91d599b48960e0a46fe565391c79fe6de481ac44d20ac"}, + {file = "fonttools-4.53.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ef50ec31649fbc3acf6afd261ed89d09eb909b97cc289d80476166df8438524d"}, + {file = "fonttools-4.53.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f193f060391a455920d61684a70017ef5284ccbe6023bb056e15e5ac3de11d1"}, + {file = "fonttools-4.53.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba9f09ff17f947392a855e3455a846f9855f6cf6bec33e9a427d3c1d254c712f"}, + {file = "fonttools-4.53.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:0c555e039d268445172b909b1b6bdcba42ada1cf4a60e367d68702e3f87e5f64"}, + {file = "fonttools-4.53.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:5a4788036201c908079e89ae3f5399b33bf45b9ea4514913f4dbbe4fac08efe0"}, + {file = "fonttools-4.53.0-cp39-cp39-win32.whl", hash = "sha256:d1a24f51a3305362b94681120c508758a88f207fa0a681c16b5a4172e9e6c7a9"}, + {file = "fonttools-4.53.0-cp39-cp39-win_amd64.whl", hash = "sha256:1e677bfb2b4bd0e5e99e0f7283e65e47a9814b0486cb64a41adf9ef110e078f2"}, + {file = "fonttools-4.53.0-py3-none-any.whl", hash = "sha256:6b4f04b1fbc01a3569d63359f2227c89ab294550de277fd09d8fca6185669fa4"}, + {file = "fonttools-4.53.0.tar.gz", hash = "sha256:c93ed66d32de1559b6fc348838c7572d5c0ac1e4a258e76763a5caddd8944002"}, ] [package.extras] @@ -1712,13 +1733,13 @@ test = ["objgraph", "psutil"] [[package]] name = "idna" -version = "3.6" +version = "3.7" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.5" files = [ - {file = "idna-3.6-py3-none-any.whl", hash = "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f"}, - {file = "idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca"}, + {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"}, + {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"}, ] [[package]] @@ -1797,13 +1818,13 @@ test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio [[package]] name = "ipython" -version = "8.22.2" +version = "8.25.0" description = "IPython: Productive Interactive Computing" optional = false python-versions = ">=3.10" files = [ - {file = "ipython-8.22.2-py3-none-any.whl", hash = "sha256:3c86f284c8f3d8f2b6c662f885c4889a91df7cd52056fd02b7d8d6195d7f56e9"}, - {file = "ipython-8.22.2.tar.gz", hash = "sha256:2dcaad9049f9056f1fef63514f176c7d41f930daa78d05b82a176202818f2c14"}, + {file = "ipython-8.25.0-py3-none-any.whl", hash = "sha256:53eee7ad44df903a06655871cbab66d156a051fd86f3ec6750470ac9604ac1ab"}, + {file = "ipython-8.25.0.tar.gz", hash = "sha256:c6ed726a140b6e725b911528f80439c534fac915246af3efc39440a6b0f9d716"}, ] [package.dependencies] @@ -1817,18 +1838,20 @@ prompt-toolkit = ">=3.0.41,<3.1.0" pygments = ">=2.4.0" stack-data = "*" traitlets = ">=5.13.0" +typing-extensions = {version = ">=4.6", markers = "python_version < \"3.12\""} [package.extras] -all = ["ipython[black,doc,kernel,nbconvert,nbformat,notebook,parallel,qtconsole,terminal]", "ipython[test,test-extra]"] +all = ["ipython[black,doc,kernel,matplotlib,nbconvert,nbformat,notebook,parallel,qtconsole]", "ipython[test,test-extra]"] black = ["black"] -doc = ["docrepr", "exceptiongroup", "ipykernel", "ipython[test]", "matplotlib", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "sphinxcontrib-jquery", "stack-data", "typing-extensions"] +doc = ["docrepr", "exceptiongroup", "intersphinx-registry", "ipykernel", "ipython[test]", "matplotlib", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "sphinxcontrib-jquery", "tomli", "typing-extensions"] kernel = ["ipykernel"] +matplotlib = ["matplotlib"] nbconvert = ["nbconvert"] nbformat = ["nbformat"] notebook = ["ipywidgets", "notebook"] parallel = ["ipyparallel"] qtconsole = ["qtconsole"] -test = ["pickleshare", "pytest (<8)", "pytest-asyncio (<0.22)", "testpath"] +test = ["pickleshare", "pytest", "pytest-asyncio (<0.22)", "testpath"] test-extra = ["curio", "ipython[test]", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.23)", "pandas", "trio"] [[package]] @@ -1866,13 +1889,13 @@ testing = ["Django", "attrs", "colorama", "docopt", "pytest (<7.0.0)"] [[package]] name = "jinja2" -version = "3.1.3" +version = "3.1.4" description = "A very fast and expressive template engine." optional = false python-versions = ">=3.7" files = [ - {file = "Jinja2-3.1.3-py3-none-any.whl", hash = "sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa"}, - {file = "Jinja2-3.1.3.tar.gz", hash = "sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90"}, + {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, + {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, ] [package.dependencies] @@ -1894,13 +1917,13 @@ files = [ [[package]] name = "jsonschema" -version = "4.21.1" +version = "4.22.0" description = "An implementation of JSON Schema validation for Python" optional = false python-versions = ">=3.8" files = [ - {file = "jsonschema-4.21.1-py3-none-any.whl", hash = "sha256:7996507afae316306f9e2290407761157c6f78002dcf7419acb99822143d1c6f"}, - {file = "jsonschema-4.21.1.tar.gz", hash = "sha256:85727c00279f5fa6bedbe6238d2aa6403bedd8b4864ab11207d07df3cc1b2ee5"}, + {file = "jsonschema-4.22.0-py3-none-any.whl", hash = "sha256:ff4cfd6b1367a40e7bc6411caec72effadd3db0bbe5017de188f2d6108335802"}, + {file = "jsonschema-4.22.0.tar.gz", hash = "sha256:5b22d434a45935119af990552c862e5d6d564e8f6601206b305a61fdf661a2b7"}, ] [package.dependencies] @@ -1993,13 +2016,13 @@ testing = ["coverage", "ipykernel", "jupytext", "matplotlib", "nbdime", "nbforma [[package]] name = "jupyter-client" -version = "8.6.1" +version = "8.6.2" description = "Jupyter protocol implementation and client libraries" optional = false python-versions = ">=3.8" files = [ - {file = "jupyter_client-8.6.1-py3-none-any.whl", hash = "sha256:3b7bd22f058434e3b9a7ea4b1500ed47de2713872288c0d511d19926f99b459f"}, - {file = "jupyter_client-8.6.1.tar.gz", hash = "sha256:e842515e2bab8e19186d89fdfea7abd15e39dd581f94e399f00e2af5a1652d3f"}, + {file = "jupyter_client-8.6.2-py3-none-any.whl", hash = "sha256:50cbc5c66fd1b8f65ecb66bc490ab73217993632809b6e505687de18e9dea39f"}, + {file = "jupyter_client-8.6.2.tar.gz", hash = "sha256:2bda14d55ee5ba58552a8c53ae43d215ad9868853489213f37da060ced54d8df"}, ] [package.dependencies] @@ -2011,7 +2034,7 @@ traitlets = ">=5.3" [package.extras] docs = ["ipykernel", "myst-parser", "pydata-sphinx-theme", "sphinx (>=4)", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] -test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pytest", "pytest-cov", "pytest-jupyter[client] (>=0.4.1)", "pytest-timeout"] +test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pytest (<8.2.0)", "pytest-cov", "pytest-jupyter[client] (>=0.4.1)", "pytest-timeout"] [[package]] name = "jupyter-core" @@ -2318,39 +2341,40 @@ files = [ [[package]] name = "matplotlib" -version = "3.8.3" +version = "3.9.0" description = "Python plotting package" optional = false python-versions = ">=3.9" files = [ - {file = "matplotlib-3.8.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:cf60138ccc8004f117ab2a2bad513cc4d122e55864b4fe7adf4db20ca68a078f"}, - {file = "matplotlib-3.8.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5f557156f7116be3340cdeef7f128fa99b0d5d287d5f41a16e169819dcf22357"}, - {file = "matplotlib-3.8.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f386cf162b059809ecfac3bcc491a9ea17da69fa35c8ded8ad154cd4b933d5ec"}, - {file = "matplotlib-3.8.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b3c5f96f57b0369c288bf6f9b5274ba45787f7e0589a34d24bdbaf6d3344632f"}, - {file = "matplotlib-3.8.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:83e0f72e2c116ca7e571c57aa29b0fe697d4c6425c4e87c6e994159e0c008635"}, - {file = "matplotlib-3.8.3-cp310-cp310-win_amd64.whl", hash = "sha256:1c5c8290074ba31a41db1dc332dc2b62def469ff33766cbe325d32a3ee291aea"}, - {file = "matplotlib-3.8.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:5184e07c7e1d6d1481862ee361905b7059f7fe065fc837f7c3dc11eeb3f2f900"}, - {file = "matplotlib-3.8.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d7e7e0993d0758933b1a241a432b42c2db22dfa37d4108342ab4afb9557cbe3e"}, - {file = "matplotlib-3.8.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:04b36ad07eac9740fc76c2aa16edf94e50b297d6eb4c081e3add863de4bb19a7"}, - {file = "matplotlib-3.8.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7c42dae72a62f14982f1474f7e5c9959fc4bc70c9de11cc5244c6e766200ba65"}, - {file = "matplotlib-3.8.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:bf5932eee0d428192c40b7eac1399d608f5d995f975cdb9d1e6b48539a5ad8d0"}, - {file = "matplotlib-3.8.3-cp311-cp311-win_amd64.whl", hash = "sha256:40321634e3a05ed02abf7c7b47a50be50b53ef3eaa3a573847431a545585b407"}, - {file = "matplotlib-3.8.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:09074f8057917d17ab52c242fdf4916f30e99959c1908958b1fc6032e2d0f6d4"}, - {file = "matplotlib-3.8.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5745f6d0fb5acfabbb2790318db03809a253096e98c91b9a31969df28ee604aa"}, - {file = "matplotlib-3.8.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b97653d869a71721b639714b42d87cda4cfee0ee74b47c569e4874c7590c55c5"}, - {file = "matplotlib-3.8.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:242489efdb75b690c9c2e70bb5c6550727058c8a614e4c7716f363c27e10bba1"}, - {file = "matplotlib-3.8.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:83c0653c64b73926730bd9ea14aa0f50f202ba187c307a881673bad4985967b7"}, - {file = "matplotlib-3.8.3-cp312-cp312-win_amd64.whl", hash = "sha256:ef6c1025a570354297d6c15f7d0f296d95f88bd3850066b7f1e7b4f2f4c13a39"}, - {file = "matplotlib-3.8.3-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:c4af3f7317f8a1009bbb2d0bf23dfaba859eb7dd4ccbd604eba146dccaaaf0a4"}, - {file = "matplotlib-3.8.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4c6e00a65d017d26009bac6808f637b75ceade3e1ff91a138576f6b3065eeeba"}, - {file = "matplotlib-3.8.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e7b49ab49a3bea17802df6872f8d44f664ba8f9be0632a60c99b20b6db2165b7"}, - {file = "matplotlib-3.8.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6728dde0a3997396b053602dbd907a9bd64ec7d5cf99e728b404083698d3ca01"}, - {file = "matplotlib-3.8.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:813925d08fb86aba139f2d31864928d67511f64e5945ca909ad5bc09a96189bb"}, - {file = "matplotlib-3.8.3-cp39-cp39-win_amd64.whl", hash = "sha256:cd3a0c2be76f4e7be03d34a14d49ded6acf22ef61f88da600a18a5cd8b3c5f3c"}, - {file = "matplotlib-3.8.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:fa93695d5c08544f4a0dfd0965f378e7afc410d8672816aff1e81be1f45dbf2e"}, - {file = "matplotlib-3.8.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9764df0e8778f06414b9d281a75235c1e85071f64bb5d71564b97c1306a2afc"}, - {file = "matplotlib-3.8.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:5e431a09e6fab4012b01fc155db0ce6dccacdbabe8198197f523a4ef4805eb26"}, - {file = "matplotlib-3.8.3.tar.gz", hash = "sha256:7b416239e9ae38be54b028abbf9048aff5054a9aba5416bef0bd17f9162ce161"}, + {file = "matplotlib-3.9.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2bcee1dffaf60fe7656183ac2190bd630842ff87b3153afb3e384d966b57fe56"}, + {file = "matplotlib-3.9.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3f988bafb0fa39d1074ddd5bacd958c853e11def40800c5824556eb630f94d3b"}, + {file = "matplotlib-3.9.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fe428e191ea016bb278758c8ee82a8129c51d81d8c4bc0846c09e7e8e9057241"}, + {file = "matplotlib-3.9.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eaf3978060a106fab40c328778b148f590e27f6fa3cd15a19d6892575bce387d"}, + {file = "matplotlib-3.9.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2e7f03e5cbbfacdd48c8ea394d365d91ee8f3cae7e6ec611409927b5ed997ee4"}, + {file = "matplotlib-3.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:13beb4840317d45ffd4183a778685e215939be7b08616f431c7795276e067463"}, + {file = "matplotlib-3.9.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:063af8587fceeac13b0936c42a2b6c732c2ab1c98d38abc3337e430e1ff75e38"}, + {file = "matplotlib-3.9.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9a2fa6d899e17ddca6d6526cf6e7ba677738bf2a6a9590d702c277204a7c6152"}, + {file = "matplotlib-3.9.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:550cdda3adbd596078cca7d13ed50b77879104e2e46392dcd7c75259d8f00e85"}, + {file = "matplotlib-3.9.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76cce0f31b351e3551d1f3779420cf8f6ec0d4a8cf9c0237a3b549fd28eb4abb"}, + {file = "matplotlib-3.9.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c53aeb514ccbbcbab55a27f912d79ea30ab21ee0531ee2c09f13800efb272674"}, + {file = "matplotlib-3.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:a5be985db2596d761cdf0c2eaf52396f26e6a64ab46bd8cd810c48972349d1be"}, + {file = "matplotlib-3.9.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:c79f3a585f1368da6049318bdf1f85568d8d04b2e89fc24b7e02cc9b62017382"}, + {file = "matplotlib-3.9.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bdd1ecbe268eb3e7653e04f451635f0fb0f77f07fd070242b44c076c9106da84"}, + {file = "matplotlib-3.9.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d38e85a1a6d732f645f1403ce5e6727fd9418cd4574521d5803d3d94911038e5"}, + {file = "matplotlib-3.9.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0a490715b3b9984fa609116481b22178348c1a220a4499cda79132000a79b4db"}, + {file = "matplotlib-3.9.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8146ce83cbc5dc71c223a74a1996d446cd35cfb6a04b683e1446b7e6c73603b7"}, + {file = "matplotlib-3.9.0-cp312-cp312-win_amd64.whl", hash = "sha256:d91a4ffc587bacf5c4ce4ecfe4bcd23a4b675e76315f2866e588686cc97fccdf"}, + {file = "matplotlib-3.9.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:616fabf4981a3b3c5a15cd95eba359c8489c4e20e03717aea42866d8d0465956"}, + {file = "matplotlib-3.9.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cd53c79fd02f1c1808d2cfc87dd3cf4dbc63c5244a58ee7944497107469c8d8a"}, + {file = "matplotlib-3.9.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:06a478f0d67636554fa78558cfbcd7b9dba85b51f5c3b5a0c9be49010cf5f321"}, + {file = "matplotlib-3.9.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81c40af649d19c85f8073e25e5806926986806fa6d54be506fbf02aef47d5a89"}, + {file = "matplotlib-3.9.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:52146fc3bd7813cc784562cb93a15788be0b2875c4655e2cc6ea646bfa30344b"}, + {file = "matplotlib-3.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:0fc51eaa5262553868461c083d9adadb11a6017315f3a757fc45ec6ec5f02888"}, + {file = "matplotlib-3.9.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:bd4f2831168afac55b881db82a7730992aa41c4f007f1913465fb182d6fb20c0"}, + {file = "matplotlib-3.9.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:290d304e59be2b33ef5c2d768d0237f5bd132986bdcc66f80bc9bcc300066a03"}, + {file = "matplotlib-3.9.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ff2e239c26be4f24bfa45860c20ffccd118d270c5b5d081fa4ea409b5469fcd"}, + {file = "matplotlib-3.9.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:af4001b7cae70f7eaacfb063db605280058246de590fa7874f00f62259f2df7e"}, + {file = "matplotlib-3.9.0.tar.gz", hash = "sha256:e6d29ea6c19e34b30fb7d88b7081f869a03014f66fe06d62cc77d5a6ea88ed7a"}, ] [package.dependencies] @@ -2358,21 +2382,24 @@ contourpy = ">=1.0.1" cycler = ">=0.10" fonttools = ">=4.22.0" kiwisolver = ">=1.3.1" -numpy = ">=1.21,<2" +numpy = ">=1.23" packaging = ">=20.0" pillow = ">=8" pyparsing = ">=2.3.1" python-dateutil = ">=2.7" +[package.extras] +dev = ["meson-python (>=0.13.1)", "numpy (>=1.25)", "pybind11 (>=2.6)", "setuptools (>=64)", "setuptools_scm (>=7)"] + [[package]] name = "matplotlib-inline" -version = "0.1.6" +version = "0.1.7" description = "Inline Matplotlib backend for Jupyter" optional = false -python-versions = ">=3.5" +python-versions = ">=3.8" files = [ - {file = "matplotlib-inline-0.1.6.tar.gz", hash = "sha256:f887e5f10ba98e8d2b150ddcf4702c1e5f8b3a20005eb0f74bfdbd360ee6f304"}, - {file = "matplotlib_inline-0.1.6-py3-none-any.whl", hash = "sha256:f1f41aab5328aa5aaea9b16d083b128102f8712542f819fe7e6a420ff581b311"}, + {file = "matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca"}, + {file = "matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90"}, ] [package.dependencies] @@ -2433,6 +2460,50 @@ files = [ [package.dependencies] psutil = {version = ">=4.0.0", markers = "sys_platform != \"cygwin\""} +[[package]] +name = "moto" +version = "5.0.9" +description = "" +optional = false +python-versions = ">=3.8" +files = [ + {file = "moto-5.0.9-py2.py3-none-any.whl", hash = "sha256:21a13e02f83d6a18cfcd99949c96abb2e889f4bd51c4c6a3ecc8b78765cb854e"}, + {file = "moto-5.0.9.tar.gz", hash = "sha256:eb71f1cba01c70fff1f16086acb24d6d9aeb32830d646d8989f98a29aeae24ba"}, +] + +[package.dependencies] +boto3 = ">=1.9.201" +botocore = ">=1.14.0" +cryptography = ">=3.3.1" +Jinja2 = ">=2.10.1" +python-dateutil = ">=2.1,<3.0.0" +requests = ">=2.5" +responses = ">=0.15.0" +werkzeug = ">=0.5,<2.2.0 || >2.2.0,<2.2.1 || >2.2.1" +xmltodict = "*" + +[package.extras] +all = ["PyYAML (>=5.1)", "antlr4-python3-runtime", "aws-xray-sdk (>=0.93,!=0.96)", "cfn-lint (>=0.40.0)", "docker (>=3.0.0)", "graphql-core", "joserfc (>=0.9.0)", "jsondiff (>=1.1.2)", "jsonpath-ng", "multipart", "openapi-spec-validator (>=0.5.0)", "py-partiql-parser (==0.5.5)", "pyparsing (>=3.0.7)", "setuptools"] +apigateway = ["PyYAML (>=5.1)", "joserfc (>=0.9.0)", "openapi-spec-validator (>=0.5.0)"] +apigatewayv2 = ["PyYAML (>=5.1)", "openapi-spec-validator (>=0.5.0)"] +appsync = ["graphql-core"] +awslambda = ["docker (>=3.0.0)"] +batch = ["docker (>=3.0.0)"] +cloudformation = ["PyYAML (>=5.1)", "aws-xray-sdk (>=0.93,!=0.96)", "cfn-lint (>=0.40.0)", "docker (>=3.0.0)", "graphql-core", "joserfc (>=0.9.0)", "jsondiff (>=1.1.2)", "openapi-spec-validator (>=0.5.0)", "py-partiql-parser (==0.5.5)", "pyparsing (>=3.0.7)", "setuptools"] +cognitoidp = ["joserfc (>=0.9.0)"] +dynamodb = ["docker (>=3.0.0)", "py-partiql-parser (==0.5.5)"] +dynamodbstreams = ["docker (>=3.0.0)", "py-partiql-parser (==0.5.5)"] +glue = ["pyparsing (>=3.0.7)"] +iotdata = ["jsondiff (>=1.1.2)"] +proxy = ["PyYAML (>=5.1)", "antlr4-python3-runtime", "aws-xray-sdk (>=0.93,!=0.96)", "cfn-lint (>=0.40.0)", "docker (>=2.5.1)", "graphql-core", "joserfc (>=0.9.0)", "jsondiff (>=1.1.2)", "jsonpath-ng", "multipart", "openapi-spec-validator (>=0.5.0)", "py-partiql-parser (==0.5.5)", "pyparsing (>=3.0.7)", "setuptools"] +resourcegroupstaggingapi = ["PyYAML (>=5.1)", "cfn-lint (>=0.40.0)", "docker (>=3.0.0)", "graphql-core", "joserfc (>=0.9.0)", "jsondiff (>=1.1.2)", "openapi-spec-validator (>=0.5.0)", "py-partiql-parser (==0.5.5)", "pyparsing (>=3.0.7)"] +s3 = ["PyYAML (>=5.1)", "py-partiql-parser (==0.5.5)"] +s3crc32c = ["PyYAML (>=5.1)", "crc32c", "py-partiql-parser (==0.5.5)"] +server = ["PyYAML (>=5.1)", "antlr4-python3-runtime", "aws-xray-sdk (>=0.93,!=0.96)", "cfn-lint (>=0.40.0)", "docker (>=3.0.0)", "flask (!=2.2.0,!=2.2.1)", "flask-cors", "graphql-core", "joserfc (>=0.9.0)", "jsondiff (>=1.1.2)", "jsonpath-ng", "openapi-spec-validator (>=0.5.0)", "py-partiql-parser (==0.5.5)", "pyparsing (>=3.0.7)", "setuptools"] +ssm = ["PyYAML (>=5.1)"] +stepfunctions = ["antlr4-python3-runtime", "jsonpath-ng"] +xray = ["aws-xray-sdk (>=0.93,!=0.96)", "setuptools"] + [[package]] name = "multidict" version = "6.0.5" @@ -2545,13 +2616,13 @@ files = [ [[package]] name = "mypy-boto3-dynamodb" -version = "1.34.67" -description = "Type annotations for boto3.DynamoDB 1.34.67 service generated with mypy-boto3-builder 7.23.2" +version = "1.34.114" +description = "Type annotations for boto3.DynamoDB 1.34.114 service generated with mypy-boto3-builder 7.24.0" optional = false python-versions = ">=3.8" files = [ - {file = "mypy-boto3-dynamodb-1.34.67.tar.gz", hash = "sha256:09447ef3ea6bdfe0be4e32ca23283820573341d340bea3065ded2153cc593d22"}, - {file = "mypy_boto3_dynamodb-1.34.67-py3-none-any.whl", hash = "sha256:081ee9e184c0c2d93f648b25cec798e75533af26e631fbe80259f48fddb89758"}, + {file = "mypy_boto3_dynamodb-1.34.114-py3-none-any.whl", hash = "sha256:64be1fcd36db0daa354a78a2affdaef048653e4c5116da98f71446eee5db7638"}, + {file = "mypy_boto3_dynamodb-1.34.114.tar.gz", hash = "sha256:2a1a131587dbf857e5bec56ae84d8f9fb9618966e7a6120fb6c7da12cb73a82c"}, ] [package.dependencies] @@ -2635,19 +2706,19 @@ test = ["flaky", "ipykernel", "ipython", "ipywidgets", "nbconvert (>=7.0.0)", "p [[package]] name = "nbformat" -version = "5.10.3" +version = "5.10.4" description = "The Jupyter Notebook format" optional = false python-versions = ">=3.8" files = [ - {file = "nbformat-5.10.3-py3-none-any.whl", hash = "sha256:d9476ca28676799af85385f409b49d95e199951477a159a576ef2a675151e5e8"}, - {file = "nbformat-5.10.3.tar.gz", hash = "sha256:60ed5e910ef7c6264b87d644f276b1b49e24011930deef54605188ddeb211685"}, + {file = "nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b"}, + {file = "nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a"}, ] [package.dependencies] -fastjsonschema = "*" +fastjsonschema = ">=2.15" jsonschema = ">=2.6" -jupyter-core = "*" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" traitlets = ">=5.1" [package.extras] @@ -2667,103 +2738,112 @@ files = [ [[package]] name = "numpy" -version = "1.26.4" +version = "2.0.0" description = "Fundamental package for array computing in Python" optional = false python-versions = ">=3.9" files = [ - {file = "numpy-1.26.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0"}, - {file = "numpy-1.26.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a"}, - {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4"}, - {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f"}, - {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a"}, - {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2"}, - {file = "numpy-1.26.4-cp310-cp310-win32.whl", hash = "sha256:bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07"}, - {file = "numpy-1.26.4-cp310-cp310-win_amd64.whl", hash = "sha256:b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5"}, - {file = "numpy-1.26.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71"}, - {file = "numpy-1.26.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef"}, - {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e"}, - {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5"}, - {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a"}, - {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a"}, - {file = "numpy-1.26.4-cp311-cp311-win32.whl", hash = "sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20"}, - {file = "numpy-1.26.4-cp311-cp311-win_amd64.whl", hash = "sha256:cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2"}, - {file = "numpy-1.26.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218"}, - {file = "numpy-1.26.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b"}, - {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b"}, - {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed"}, - {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a"}, - {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0"}, - {file = "numpy-1.26.4-cp312-cp312-win32.whl", hash = "sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110"}, - {file = "numpy-1.26.4-cp312-cp312-win_amd64.whl", hash = "sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818"}, - {file = "numpy-1.26.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7349ab0fa0c429c82442a27a9673fc802ffdb7c7775fad780226cb234965e53c"}, - {file = "numpy-1.26.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:52b8b60467cd7dd1e9ed082188b4e6bb35aa5cdd01777621a1658910745b90be"}, - {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5241e0a80d808d70546c697135da2c613f30e28251ff8307eb72ba696945764"}, - {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f870204a840a60da0b12273ef34f7051e98c3b5961b61b0c2c1be6dfd64fbcd3"}, - {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:679b0076f67ecc0138fd2ede3a8fd196dddc2ad3254069bcb9faf9a79b1cebcd"}, - {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:47711010ad8555514b434df65f7d7b076bb8261df1ca9bb78f53d3b2db02e95c"}, - {file = "numpy-1.26.4-cp39-cp39-win32.whl", hash = "sha256:a354325ee03388678242a4d7ebcd08b5c727033fcff3b2f536aea978e15ee9e6"}, - {file = "numpy-1.26.4-cp39-cp39-win_amd64.whl", hash = "sha256:3373d5d70a5fe74a2c1bb6d2cfd9609ecf686d47a2d7b1d37a8f3b6bf6003aea"}, - {file = "numpy-1.26.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:afedb719a9dcfc7eaf2287b839d8198e06dcd4cb5d276a3df279231138e83d30"}, - {file = "numpy-1.26.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95a7476c59002f2f6c590b9b7b998306fba6a5aa646b1e22ddfeaf8f78c3a29c"}, - {file = "numpy-1.26.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7e50d0a0cc3189f9cb0aeb3a6a6af18c16f59f004b866cd2be1c14b36134a4a0"}, - {file = "numpy-1.26.4.tar.gz", hash = "sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010"}, + {file = "numpy-2.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:04494f6ec467ccb5369d1808570ae55f6ed9b5809d7f035059000a37b8d7e86f"}, + {file = "numpy-2.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2635dbd200c2d6faf2ef9a0d04f0ecc6b13b3cad54f7c67c61155138835515d2"}, + {file = "numpy-2.0.0-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:0a43f0974d501842866cc83471bdb0116ba0dffdbaac33ec05e6afed5b615238"}, + {file = "numpy-2.0.0-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:8d83bb187fb647643bd56e1ae43f273c7f4dbcdf94550d7938cfc32566756514"}, + {file = "numpy-2.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79e843d186c8fb1b102bef3e2bc35ef81160ffef3194646a7fdd6a73c6b97196"}, + {file = "numpy-2.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d7696c615765091cc5093f76fd1fa069870304beaccfd58b5dcc69e55ef49c1"}, + {file = "numpy-2.0.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b4c76e3d4c56f145d41b7b6751255feefae92edbc9a61e1758a98204200f30fc"}, + {file = "numpy-2.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:acd3a644e4807e73b4e1867b769fbf1ce8c5d80e7caaef0d90dcdc640dfc9787"}, + {file = "numpy-2.0.0-cp310-cp310-win32.whl", hash = "sha256:cee6cc0584f71adefe2c908856ccc98702baf95ff80092e4ca46061538a2ba98"}, + {file = "numpy-2.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:ed08d2703b5972ec736451b818c2eb9da80d66c3e84aed1deeb0c345fefe461b"}, + {file = "numpy-2.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ad0c86f3455fbd0de6c31a3056eb822fc939f81b1618f10ff3406971893b62a5"}, + {file = "numpy-2.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e7f387600d424f91576af20518334df3d97bc76a300a755f9a8d6e4f5cadd289"}, + {file = "numpy-2.0.0-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:34f003cb88b1ba38cb9a9a4a3161c1604973d7f9d5552c38bc2f04f829536609"}, + {file = "numpy-2.0.0-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:b6f6a8f45d0313db07d6d1d37bd0b112f887e1369758a5419c0370ba915b3871"}, + {file = "numpy-2.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f64641b42b2429f56ee08b4f427a4d2daf916ec59686061de751a55aafa22e4"}, + {file = "numpy-2.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a7039a136017eaa92c1848152827e1424701532ca8e8967fe480fe1569dae581"}, + {file = "numpy-2.0.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:46e161722e0f619749d1cd892167039015b2c2817296104487cd03ed4a955995"}, + {file = "numpy-2.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0e50842b2295ba8414c8c1d9d957083d5dfe9e16828b37de883f51fc53c4016f"}, + {file = "numpy-2.0.0-cp311-cp311-win32.whl", hash = "sha256:2ce46fd0b8a0c947ae047d222f7136fc4d55538741373107574271bc00e20e8f"}, + {file = "numpy-2.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:fbd6acc766814ea6443628f4e6751d0da6593dae29c08c0b2606164db026970c"}, + {file = "numpy-2.0.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:354f373279768fa5a584bac997de6a6c9bc535c482592d7a813bb0c09be6c76f"}, + {file = "numpy-2.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4d2f62e55a4cd9c58c1d9a1c9edaedcd857a73cb6fda875bf79093f9d9086f85"}, + {file = "numpy-2.0.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:1e72728e7501a450288fc8e1f9ebc73d90cfd4671ebbd631f3e7857c39bd16f2"}, + {file = "numpy-2.0.0-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:84554fc53daa8f6abf8e8a66e076aff6ece62de68523d9f665f32d2fc50fd66e"}, + {file = "numpy-2.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c73aafd1afca80afecb22718f8700b40ac7cab927b8abab3c3e337d70e10e5a2"}, + {file = "numpy-2.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49d9f7d256fbc804391a7f72d4a617302b1afac1112fac19b6c6cec63fe7fe8a"}, + {file = "numpy-2.0.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:0ec84b9ba0654f3b962802edc91424331f423dcf5d5f926676e0150789cb3d95"}, + {file = "numpy-2.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:feff59f27338135776f6d4e2ec7aeeac5d5f7a08a83e80869121ef8164b74af9"}, + {file = "numpy-2.0.0-cp312-cp312-win32.whl", hash = "sha256:c5a59996dc61835133b56a32ebe4ef3740ea5bc19b3983ac60cc32be5a665d54"}, + {file = "numpy-2.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:a356364941fb0593bb899a1076b92dfa2029f6f5b8ba88a14fd0984aaf76d0df"}, + {file = "numpy-2.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e61155fae27570692ad1d327e81c6cf27d535a5d7ef97648a17d922224b216de"}, + {file = "numpy-2.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4554eb96f0fd263041baf16cf0881b3f5dafae7a59b1049acb9540c4d57bc8cb"}, + {file = "numpy-2.0.0-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:903703372d46bce88b6920a0cd86c3ad82dae2dbef157b5fc01b70ea1cfc430f"}, + {file = "numpy-2.0.0-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:3e8e01233d57639b2e30966c63d36fcea099d17c53bf424d77f088b0f4babd86"}, + {file = "numpy-2.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1cde1753efe513705a0c6d28f5884e22bdc30438bf0085c5c486cdaff40cd67a"}, + {file = "numpy-2.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:821eedb7165ead9eebdb569986968b541f9908979c2da8a4967ecac4439bae3d"}, + {file = "numpy-2.0.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9a1712c015831da583b21c5bfe15e8684137097969c6d22e8316ba66b5baabe4"}, + {file = "numpy-2.0.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:9c27f0946a3536403efb0e1c28def1ae6730a72cd0d5878db38824855e3afc44"}, + {file = "numpy-2.0.0-cp39-cp39-win32.whl", hash = "sha256:63b92c512d9dbcc37f9d81b123dec99fdb318ba38c8059afc78086fe73820275"}, + {file = "numpy-2.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:3f6bed7f840d44c08ebdb73b1825282b801799e325bcbdfa6bc5c370e5aecc65"}, + {file = "numpy-2.0.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:9416a5c2e92ace094e9f0082c5fd473502c91651fb896bc17690d6fc475128d6"}, + {file = "numpy-2.0.0-pp39-pypy39_pp73-macosx_14_0_x86_64.whl", hash = "sha256:17067d097ed036636fa79f6a869ac26df7db1ba22039d962422506640314933a"}, + {file = "numpy-2.0.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38ecb5b0582cd125f67a629072fed6f83562d9dd04d7e03256c9829bdec027ad"}, + {file = "numpy-2.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:cef04d068f5fb0518a77857953193b6bb94809a806bd0a14983a8f12ada060c9"}, + {file = "numpy-2.0.0.tar.gz", hash = "sha256:cf5d1c9e6837f8af9f92b6bd3e86d513cdc11f60fd62185cc49ec7d1aba34864"}, ] [[package]] name = "packaging" -version = "24.0" +version = "24.1" description = "Core utilities for Python packages" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "packaging-24.0-py3-none-any.whl", hash = "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5"}, - {file = "packaging-24.0.tar.gz", hash = "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9"}, + {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, + {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, ] [[package]] name = "pandas" -version = "2.2.1" +version = "2.2.2" description = "Powerful data structures for data analysis, time series, and statistics" optional = false python-versions = ">=3.9" files = [ - {file = "pandas-2.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8df8612be9cd1c7797c93e1c5df861b2ddda0b48b08f2c3eaa0702cf88fb5f88"}, - {file = "pandas-2.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0f573ab277252ed9aaf38240f3b54cfc90fff8e5cab70411ee1d03f5d51f3944"}, - {file = "pandas-2.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f02a3a6c83df4026e55b63c1f06476c9aa3ed6af3d89b4f04ea656ccdaaaa359"}, - {file = "pandas-2.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c38ce92cb22a4bea4e3929429aa1067a454dcc9c335799af93ba9be21b6beb51"}, - {file = "pandas-2.2.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:c2ce852e1cf2509a69e98358e8458775f89599566ac3775e70419b98615f4b06"}, - {file = "pandas-2.2.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:53680dc9b2519cbf609c62db3ed7c0b499077c7fefda564e330286e619ff0dd9"}, - {file = "pandas-2.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:94e714a1cca63e4f5939cdce5f29ba8d415d85166be3441165edd427dc9f6bc0"}, - {file = "pandas-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f821213d48f4ab353d20ebc24e4faf94ba40d76680642fb7ce2ea31a3ad94f9b"}, - {file = "pandas-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c70e00c2d894cb230e5c15e4b1e1e6b2b478e09cf27cc593a11ef955b9ecc81a"}, - {file = "pandas-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e97fbb5387c69209f134893abc788a6486dbf2f9e511070ca05eed4b930b1b02"}, - {file = "pandas-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:101d0eb9c5361aa0146f500773395a03839a5e6ecde4d4b6ced88b7e5a1a6403"}, - {file = "pandas-2.2.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:7d2ed41c319c9fb4fd454fe25372028dfa417aacb9790f68171b2e3f06eae8cd"}, - {file = "pandas-2.2.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:af5d3c00557d657c8773ef9ee702c61dd13b9d7426794c9dfeb1dc4a0bf0ebc7"}, - {file = "pandas-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:06cf591dbaefb6da9de8472535b185cba556d0ce2e6ed28e21d919704fef1a9e"}, - {file = "pandas-2.2.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:88ecb5c01bb9ca927ebc4098136038519aa5d66b44671861ffab754cae75102c"}, - {file = "pandas-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:04f6ec3baec203c13e3f8b139fb0f9f86cd8c0b94603ae3ae8ce9a422e9f5bee"}, - {file = "pandas-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a935a90a76c44fe170d01e90a3594beef9e9a6220021acfb26053d01426f7dc2"}, - {file = "pandas-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c391f594aae2fd9f679d419e9a4d5ba4bce5bb13f6a989195656e7dc4b95c8f0"}, - {file = "pandas-2.2.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9d1265545f579edf3f8f0cb6f89f234f5e44ba725a34d86535b1a1d38decbccc"}, - {file = "pandas-2.2.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:11940e9e3056576ac3244baef2fedade891977bcc1cb7e5cc8f8cc7d603edc89"}, - {file = "pandas-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:4acf681325ee1c7f950d058b05a820441075b0dd9a2adf5c4835b9bc056bf4fb"}, - {file = "pandas-2.2.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9bd8a40f47080825af4317d0340c656744f2bfdb6819f818e6ba3cd24c0e1397"}, - {file = "pandas-2.2.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:df0c37ebd19e11d089ceba66eba59a168242fc6b7155cba4ffffa6eccdfb8f16"}, - {file = "pandas-2.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:739cc70eaf17d57608639e74d63387b0d8594ce02f69e7a0b046f117974b3019"}, - {file = "pandas-2.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9d3558d263073ed95e46f4650becff0c5e1ffe0fc3a015de3c79283dfbdb3df"}, - {file = "pandas-2.2.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4aa1d8707812a658debf03824016bf5ea0d516afdea29b7dc14cf687bc4d4ec6"}, - {file = "pandas-2.2.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:76f27a809cda87e07f192f001d11adc2b930e93a2b0c4a236fde5429527423be"}, - {file = "pandas-2.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:1ba21b1d5c0e43416218db63037dbe1a01fc101dc6e6024bcad08123e48004ab"}, - {file = "pandas-2.2.1.tar.gz", hash = "sha256:0ab90f87093c13f3e8fa45b48ba9f39181046e8f3317d3aadb2fffbb1b978572"}, + {file = "pandas-2.2.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:90c6fca2acf139569e74e8781709dccb6fe25940488755716d1d354d6bc58bce"}, + {file = "pandas-2.2.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c7adfc142dac335d8c1e0dcbd37eb8617eac386596eb9e1a1b77791cf2498238"}, + {file = "pandas-2.2.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4abfe0be0d7221be4f12552995e58723c7422c80a659da13ca382697de830c08"}, + {file = "pandas-2.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8635c16bf3d99040fdf3ca3db669a7250ddf49c55dc4aa8fe0ae0fa8d6dcc1f0"}, + {file = "pandas-2.2.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:40ae1dffb3967a52203105a077415a86044a2bea011b5f321c6aa64b379a3f51"}, + {file = "pandas-2.2.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8e5a0b00e1e56a842f922e7fae8ae4077aee4af0acb5ae3622bd4b4c30aedf99"}, + {file = "pandas-2.2.2-cp310-cp310-win_amd64.whl", hash = "sha256:ddf818e4e6c7c6f4f7c8a12709696d193976b591cc7dc50588d3d1a6b5dc8772"}, + {file = "pandas-2.2.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:696039430f7a562b74fa45f540aca068ea85fa34c244d0deee539cb6d70aa288"}, + {file = "pandas-2.2.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8e90497254aacacbc4ea6ae5e7a8cd75629d6ad2b30025a4a8b09aa4faf55151"}, + {file = "pandas-2.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58b84b91b0b9f4bafac2a0ac55002280c094dfc6402402332c0913a59654ab2b"}, + {file = "pandas-2.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d2123dc9ad6a814bcdea0f099885276b31b24f7edf40f6cdbc0912672e22eee"}, + {file = "pandas-2.2.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:2925720037f06e89af896c70bca73459d7e6a4be96f9de79e2d440bd499fe0db"}, + {file = "pandas-2.2.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0cace394b6ea70c01ca1595f839cf193df35d1575986e484ad35c4aeae7266c1"}, + {file = "pandas-2.2.2-cp311-cp311-win_amd64.whl", hash = "sha256:873d13d177501a28b2756375d59816c365e42ed8417b41665f346289adc68d24"}, + {file = "pandas-2.2.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:9dfde2a0ddef507a631dc9dc4af6a9489d5e2e740e226ad426a05cabfbd7c8ef"}, + {file = "pandas-2.2.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e9b79011ff7a0f4b1d6da6a61aa1aa604fb312d6647de5bad20013682d1429ce"}, + {file = "pandas-2.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1cb51fe389360f3b5a4d57dbd2848a5f033350336ca3b340d1c53a1fad33bcad"}, + {file = "pandas-2.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eee3a87076c0756de40b05c5e9a6069c035ba43e8dd71c379e68cab2c20f16ad"}, + {file = "pandas-2.2.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3e374f59e440d4ab45ca2fffde54b81ac3834cf5ae2cdfa69c90bc03bde04d76"}, + {file = "pandas-2.2.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:43498c0bdb43d55cb162cdc8c06fac328ccb5d2eabe3cadeb3529ae6f0517c32"}, + {file = "pandas-2.2.2-cp312-cp312-win_amd64.whl", hash = "sha256:d187d355ecec3629624fccb01d104da7d7f391db0311145817525281e2804d23"}, + {file = "pandas-2.2.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0ca6377b8fca51815f382bd0b697a0814c8bda55115678cbc94c30aacbb6eff2"}, + {file = "pandas-2.2.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9057e6aa78a584bc93a13f0a9bf7e753a5e9770a30b4d758b8d5f2a62a9433cd"}, + {file = "pandas-2.2.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:001910ad31abc7bf06f49dcc903755d2f7f3a9186c0c040b827e522e9cef0863"}, + {file = "pandas-2.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66b479b0bd07204e37583c191535505410daa8df638fd8e75ae1b383851fe921"}, + {file = "pandas-2.2.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a77e9d1c386196879aa5eb712e77461aaee433e54c68cf253053a73b7e49c33a"}, + {file = "pandas-2.2.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:92fd6b027924a7e178ac202cfbe25e53368db90d56872d20ffae94b96c7acc57"}, + {file = "pandas-2.2.2-cp39-cp39-win_amd64.whl", hash = "sha256:640cef9aa381b60e296db324337a554aeeb883ead99dc8f6c18e81a93942f5f4"}, + {file = "pandas-2.2.2.tar.gz", hash = "sha256:9e79019aba43cb4fda9e4d983f8e88ca0373adbb697ae9c6c43093218de28b54"}, ] [package.dependencies] numpy = [ - {version = ">=1.22.4,<2", markers = "python_version < \"3.11\""}, - {version = ">=1.23.2,<2", markers = "python_version == \"3.11\""}, - {version = ">=1.26.0,<2", markers = "python_version >= \"3.12\""}, + {version = ">=1.22.4", markers = "python_version < \"3.11\""}, + {version = ">=1.23.2", markers = "python_version == \"3.11\""}, + {version = ">=1.26.0", markers = "python_version >= \"3.12\""}, ] python-dateutil = ">=2.8.2" pytz = ">=2020.1" @@ -2796,18 +2876,18 @@ xml = ["lxml (>=4.9.2)"] [[package]] name = "parso" -version = "0.8.3" +version = "0.8.4" description = "A Python Parser" optional = false python-versions = ">=3.6" files = [ - {file = "parso-0.8.3-py2.py3-none-any.whl", hash = "sha256:c001d4636cd3aecdaf33cbb40aebb59b094be2a74c556778ef5576c175e19e75"}, - {file = "parso-0.8.3.tar.gz", hash = "sha256:8c07be290bb59f03588915921e29e8a50002acaf2cdc5fa0e0114f91709fafa0"}, + {file = "parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18"}, + {file = "parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d"}, ] [package.extras] -qa = ["flake8 (==3.8.3)", "mypy (==0.782)"] -testing = ["docopt", "pytest (<6.0.0)"] +qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"] +testing = ["docopt", "pytest"] [[package]] name = "pexpect" @@ -2911,28 +2991,29 @@ xmp = ["defusedxml"] [[package]] name = "platformdirs" -version = "4.2.0" -description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +version = "4.2.2" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false python-versions = ">=3.8" files = [ - {file = "platformdirs-4.2.0-py3-none-any.whl", hash = "sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068"}, - {file = "platformdirs-4.2.0.tar.gz", hash = "sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768"}, + {file = "platformdirs-4.2.2-py3-none-any.whl", hash = "sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee"}, + {file = "platformdirs-4.2.2.tar.gz", hash = "sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3"}, ] [package.extras] docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"] +type = ["mypy (>=1.8)"] [[package]] name = "pluggy" -version = "1.4.0" +version = "1.5.0" description = "plugin and hook calling mechanisms for python" optional = false python-versions = ">=3.8" files = [ - {file = "pluggy-1.4.0-py3-none-any.whl", hash = "sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981"}, - {file = "pluggy-1.4.0.tar.gz", hash = "sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be"}, + {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, + {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, ] [package.extras] @@ -2968,13 +3049,13 @@ typing-extensions = "*" [[package]] name = "prompt-toolkit" -version = "3.0.43" +version = "3.0.47" description = "Library for building powerful interactive command lines in Python" optional = false python-versions = ">=3.7.0" files = [ - {file = "prompt_toolkit-3.0.43-py3-none-any.whl", hash = "sha256:a11a29cb3bf0a28a387fe5122cdb649816a957cd9261dcedf8c9f1fef33eacf6"}, - {file = "prompt_toolkit-3.0.43.tar.gz", hash = "sha256:3527b7af26106cbc65a040bcc84839a3566ec1b051bb0bfe953631e704b0ff7d"}, + {file = "prompt_toolkit-3.0.47-py3-none-any.whl", hash = "sha256:0d7bfa67001d5e39d02c224b663abc33687405033a8c422d0d675a5a13361d10"}, + {file = "prompt_toolkit-3.0.47.tar.gz", hash = "sha256:1e1b29cb58080b1e69f207c893a1a7bf16d127a5c30c9d17a25a5d77792e5360"}, ] [package.dependencies] @@ -3080,24 +3161,24 @@ files = [ [[package]] name = "pycparser" -version = "2.21" +version = "2.22" description = "C parser in Python" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=3.8" files = [ - {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"}, - {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"}, + {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, + {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, ] [[package]] name = "pydata-sphinx-theme" -version = "0.15.2" +version = "0.15.3" description = "Bootstrap-based Sphinx theme from the PyData community" optional = false python-versions = ">=3.9" files = [ - {file = "pydata_sphinx_theme-0.15.2-py3-none-any.whl", hash = "sha256:0c5fa1fa98a9b26dae590666ff576f27e26c7ba708fee754ecb9e07359ed4588"}, - {file = "pydata_sphinx_theme-0.15.2.tar.gz", hash = "sha256:4243fee85b3afcfae9df64f83210a04e7182e53bc3db8841ffff6d21d95ae320"}, + {file = "pydata_sphinx_theme-0.15.3-py3-none-any.whl", hash = "sha256:a48ee049dc9b0f7064dbb8f7064b1cf3ae48aa193faafe14abd403a1b7102810"}, + {file = "pydata_sphinx_theme-0.15.3.tar.gz", hash = "sha256:f26ed9b676f61d1b2ae9289f3d7e496e8678dd56f2568b27a66fa4ad1f164efd"}, ] [package.dependencies] @@ -3107,14 +3188,15 @@ beautifulsoup4 = "*" docutils = "!=0.17.0" packaging = "*" pygments = ">=2.7" -sphinx = ">=5.0" +sphinx = ">=5" typing-extensions = "*" [package.extras] a11y = ["pytest-playwright"] -dev = ["nox", "pre-commit", "pydata-sphinx-theme[doc,test]", "pyyaml"] -doc = ["ablog (>=0.11.0rc2)", "colorama", "ipykernel", "ipyleaflet", "jupyter_sphinx", "jupyterlite-sphinx", "linkify-it-py", "matplotlib", "myst-parser", "nbsphinx", "numpy", "numpydoc", "pandas", "plotly", "rich", "sphinx-autoapi (>=3.0.0)", "sphinx-copybutton", "sphinx-design", "sphinx-favicon (>=1.0.1)", "sphinx-sitemap", "sphinx-togglebutton", "sphinxcontrib-youtube (<1.4)", "sphinxext-rediraffe", "xarray"] -test = ["pytest", "pytest-cov", "pytest-regressions"] +dev = ["pandoc", "pre-commit", "pydata-sphinx-theme[doc,test]", "pyyaml", "sphinx-theme-builder[cli]", "tox"] +doc = ["ablog (>=0.11.8)", "colorama", "ipykernel", "ipyleaflet", "ipywidgets", "jupyter_sphinx", "jupyterlite-sphinx", "linkify-it-py", "matplotlib", "myst-parser", "nbsphinx", "numpy", "numpydoc", "pandas", "plotly", "rich", "sphinx-autoapi (>=3.0.0)", "sphinx-copybutton", "sphinx-design", "sphinx-favicon (>=1.0.1)", "sphinx-sitemap", "sphinx-togglebutton", "sphinxcontrib-youtube (<1.4)", "sphinxext-rediraffe", "xarray"] +i18n = ["Babel", "jinja2"] +test = ["pytest", "pytest-cov", "pytest-regressions", "sphinx[test]"] [[package]] name = "pyflakes" @@ -3129,17 +3211,16 @@ files = [ [[package]] name = "pygments" -version = "2.17.2" +version = "2.18.0" description = "Pygments is a syntax highlighting package written in Python." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pygments-2.17.2-py3-none-any.whl", hash = "sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c"}, - {file = "pygments-2.17.2.tar.gz", hash = "sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367"}, + {file = "pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"}, + {file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"}, ] [package.extras] -plugins = ["importlib-metadata"] windows-terminal = ["colorama (>=0.4.6)"] [[package]] @@ -3172,13 +3253,13 @@ testutils = ["gitpython (>3)"] [[package]] name = "pymysql" -version = "1.1.0" +version = "1.1.1" description = "Pure Python MySQL Driver" optional = false python-versions = ">=3.7" files = [ - {file = "PyMySQL-1.1.0-py3-none-any.whl", hash = "sha256:8969ec6d763c856f7073c4c64662882675702efcb114b4bcbb955aea3a069fa7"}, - {file = "PyMySQL-1.1.0.tar.gz", hash = "sha256:4f13a7df8bf36a51e81dd9f3605fede45a4878fe02f9236349fd82a3f0612f96"}, + {file = "PyMySQL-1.1.1-py3-none-any.whl", hash = "sha256:4de15da4c61dc132f4fb9ab763063e693d521a80fd0e87943b9a453dd4c19d6c"}, + {file = "pymysql-1.1.1.tar.gz", hash = "sha256:e127611aaf2b417403c60bf4dc570124aeb4a57f5f37b8e95ae399a42f904cd0"}, ] [package.extras] @@ -3298,17 +3379,19 @@ pytest = "*" [[package]] name = "python-cmr" -version = "0.9.0" +version = "0.11.0" description = "Python wrapper to the NASA Common Metadata Repository (CMR) API." optional = false -python-versions = ">=3.8,<4.0" +python-versions = "<4.0.0,>=3.8.1" files = [ - {file = "python_cmr-0.9.0-py3-none-any.whl", hash = "sha256:ef20e41ef59cd323a4847cf52fc63e91e5fc632dc1743e42935748b5a474c5ef"}, - {file = "python_cmr-0.9.0.tar.gz", hash = "sha256:5c9a0eb9877de67d80df2d2e572f8614845c75a8457faddfbff9edc1ab90e992"}, + {file = "python_cmr-0.11.0-py3-none-any.whl", hash = "sha256:793b19f555b5d37034ec918a02c1a4a0b0aeaa168a9f6a84c3568f3ce595cccc"}, + {file = "python_cmr-0.11.0.tar.gz", hash = "sha256:d2e6ba3a7dadf5f3085b68bb64e84cca89e5f24109d386bd6fd98daae2d5995d"}, ] [package.dependencies] +python-dateutil = ">=2.8.2,<3.0.0" requests = ">=2.26.0,<3.0.0" +typing-extensions = ">=4.11.0,<5.0.0" [[package]] name = "python-dateutil" @@ -3434,104 +3517,99 @@ files = [ [[package]] name = "pyzmq" -version = "25.1.2" +version = "26.0.3" description = "Python bindings for 0MQ" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "pyzmq-25.1.2-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:e624c789359f1a16f83f35e2c705d07663ff2b4d4479bad35621178d8f0f6ea4"}, - {file = "pyzmq-25.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:49151b0efece79f6a79d41a461d78535356136ee70084a1c22532fc6383f4ad0"}, - {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d9a5f194cf730f2b24d6af1f833c14c10f41023da46a7f736f48b6d35061e76e"}, - {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:faf79a302f834d9e8304fafdc11d0d042266667ac45209afa57e5efc998e3872"}, - {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f51a7b4ead28d3fca8dda53216314a553b0f7a91ee8fc46a72b402a78c3e43d"}, - {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:0ddd6d71d4ef17ba5a87becf7ddf01b371eaba553c603477679ae817a8d84d75"}, - {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:246747b88917e4867e2367b005fc8eefbb4a54b7db363d6c92f89d69abfff4b6"}, - {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:00c48ae2fd81e2a50c3485de1b9d5c7c57cd85dc8ec55683eac16846e57ac979"}, - {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5a68d491fc20762b630e5db2191dd07ff89834086740f70e978bb2ef2668be08"}, - {file = "pyzmq-25.1.2-cp310-cp310-win32.whl", hash = "sha256:09dfe949e83087da88c4a76767df04b22304a682d6154de2c572625c62ad6886"}, - {file = "pyzmq-25.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:fa99973d2ed20417744fca0073390ad65ce225b546febb0580358e36aa90dba6"}, - {file = "pyzmq-25.1.2-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:82544e0e2d0c1811482d37eef297020a040c32e0687c1f6fc23a75b75db8062c"}, - {file = "pyzmq-25.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:01171fc48542348cd1a360a4b6c3e7d8f46cdcf53a8d40f84db6707a6768acc1"}, - {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc69c96735ab501419c432110016329bf0dea8898ce16fab97c6d9106dc0b348"}, - {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3e124e6b1dd3dfbeb695435dff0e383256655bb18082e094a8dd1f6293114642"}, - {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7598d2ba821caa37a0f9d54c25164a4fa351ce019d64d0b44b45540950458840"}, - {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:d1299d7e964c13607efd148ca1f07dcbf27c3ab9e125d1d0ae1d580a1682399d"}, - {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4e6f689880d5ad87918430957297c975203a082d9a036cc426648fcbedae769b"}, - {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:cc69949484171cc961e6ecd4a8911b9ce7a0d1f738fcae717177c231bf77437b"}, - {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9880078f683466b7f567b8624bfc16cad65077be046b6e8abb53bed4eeb82dd3"}, - {file = "pyzmq-25.1.2-cp311-cp311-win32.whl", hash = "sha256:4e5837af3e5aaa99a091302df5ee001149baff06ad22b722d34e30df5f0d9097"}, - {file = "pyzmq-25.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:25c2dbb97d38b5ac9fd15586e048ec5eb1e38f3d47fe7d92167b0c77bb3584e9"}, - {file = "pyzmq-25.1.2-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:11e70516688190e9c2db14fcf93c04192b02d457b582a1f6190b154691b4c93a"}, - {file = "pyzmq-25.1.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:313c3794d650d1fccaaab2df942af9f2c01d6217c846177cfcbc693c7410839e"}, - {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b3cbba2f47062b85fe0ef9de5b987612140a9ba3a9c6d2543c6dec9f7c2ab27"}, - {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fc31baa0c32a2ca660784d5af3b9487e13b61b3032cb01a115fce6588e1bed30"}, - {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02c9087b109070c5ab0b383079fa1b5f797f8d43e9a66c07a4b8b8bdecfd88ee"}, - {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:f8429b17cbb746c3e043cb986328da023657e79d5ed258b711c06a70c2ea7537"}, - {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:5074adeacede5f810b7ef39607ee59d94e948b4fd954495bdb072f8c54558181"}, - {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:7ae8f354b895cbd85212da245f1a5ad8159e7840e37d78b476bb4f4c3f32a9fe"}, - {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b264bf2cc96b5bc43ce0e852be995e400376bd87ceb363822e2cb1964fcdc737"}, - {file = "pyzmq-25.1.2-cp312-cp312-win32.whl", hash = "sha256:02bbc1a87b76e04fd780b45e7f695471ae6de747769e540da909173d50ff8e2d"}, - {file = "pyzmq-25.1.2-cp312-cp312-win_amd64.whl", hash = "sha256:ced111c2e81506abd1dc142e6cd7b68dd53747b3b7ae5edbea4578c5eeff96b7"}, - {file = "pyzmq-25.1.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:7b6d09a8962a91151f0976008eb7b29b433a560fde056ec7a3db9ec8f1075438"}, - {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:967668420f36878a3c9ecb5ab33c9d0ff8d054f9c0233d995a6d25b0e95e1b6b"}, - {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5edac3f57c7ddaacdb4d40f6ef2f9e299471fc38d112f4bc6d60ab9365445fb0"}, - {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:0dabfb10ef897f3b7e101cacba1437bd3a5032ee667b7ead32bbcdd1a8422fe7"}, - {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:2c6441e0398c2baacfe5ba30c937d274cfc2dc5b55e82e3749e333aabffde561"}, - {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:16b726c1f6c2e7625706549f9dbe9b06004dfbec30dbed4bf50cbdfc73e5b32a"}, - {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:a86c2dd76ef71a773e70551a07318b8e52379f58dafa7ae1e0a4be78efd1ff16"}, - {file = "pyzmq-25.1.2-cp36-cp36m-win32.whl", hash = "sha256:359f7f74b5d3c65dae137f33eb2bcfa7ad9ebefd1cab85c935f063f1dbb245cc"}, - {file = "pyzmq-25.1.2-cp36-cp36m-win_amd64.whl", hash = "sha256:55875492f820d0eb3417b51d96fea549cde77893ae3790fd25491c5754ea2f68"}, - {file = "pyzmq-25.1.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b8c8a419dfb02e91b453615c69568442e897aaf77561ee0064d789705ff37a92"}, - {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8807c87fa893527ae8a524c15fc505d9950d5e856f03dae5921b5e9aa3b8783b"}, - {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5e319ed7d6b8f5fad9b76daa0a68497bc6f129858ad956331a5835785761e003"}, - {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:3c53687dde4d9d473c587ae80cc328e5b102b517447456184b485587ebd18b62"}, - {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:9add2e5b33d2cd765ad96d5eb734a5e795a0755f7fc49aa04f76d7ddda73fd70"}, - {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:e690145a8c0c273c28d3b89d6fb32c45e0d9605b2293c10e650265bf5c11cfec"}, - {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:00a06faa7165634f0cac1abb27e54d7a0b3b44eb9994530b8ec73cf52e15353b"}, - {file = "pyzmq-25.1.2-cp37-cp37m-win32.whl", hash = "sha256:0f97bc2f1f13cb16905a5f3e1fbdf100e712d841482b2237484360f8bc4cb3d7"}, - {file = "pyzmq-25.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6cc0020b74b2e410287e5942e1e10886ff81ac77789eb20bec13f7ae681f0fdd"}, - {file = "pyzmq-25.1.2-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:bef02cfcbded83473bdd86dd8d3729cd82b2e569b75844fb4ea08fee3c26ae41"}, - {file = "pyzmq-25.1.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e10a4b5a4b1192d74853cc71a5e9fd022594573926c2a3a4802020360aa719d8"}, - {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8c5f80e578427d4695adac6fdf4370c14a2feafdc8cb35549c219b90652536ae"}, - {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5dde6751e857910c1339890f3524de74007958557593b9e7e8c5f01cd919f8a7"}, - {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea1608dd169da230a0ad602d5b1ebd39807ac96cae1845c3ceed39af08a5c6df"}, - {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0f513130c4c361201da9bc69df25a086487250e16b5571ead521b31ff6b02220"}, - {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:019744b99da30330798bb37df33549d59d380c78e516e3bab9c9b84f87a9592f"}, - {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2e2713ef44be5d52dd8b8e2023d706bf66cb22072e97fc71b168e01d25192755"}, - {file = "pyzmq-25.1.2-cp38-cp38-win32.whl", hash = "sha256:07cd61a20a535524906595e09344505a9bd46f1da7a07e504b315d41cd42eb07"}, - {file = "pyzmq-25.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb7e49a17fb8c77d3119d41a4523e432eb0c6932187c37deb6fbb00cc3028088"}, - {file = "pyzmq-25.1.2-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:94504ff66f278ab4b7e03e4cba7e7e400cb73bfa9d3d71f58d8972a8dc67e7a6"}, - {file = "pyzmq-25.1.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6dd0d50bbf9dca1d0bdea219ae6b40f713a3fb477c06ca3714f208fd69e16fd8"}, - {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:004ff469d21e86f0ef0369717351073e0e577428e514c47c8480770d5e24a565"}, - {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c0b5ca88a8928147b7b1e2dfa09f3b6c256bc1135a1338536cbc9ea13d3b7add"}, - {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c9a79f1d2495b167119d02be7448bfba57fad2a4207c4f68abc0bab4b92925b"}, - {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:518efd91c3d8ac9f9b4f7dd0e2b7b8bf1a4fe82a308009016b07eaa48681af82"}, - {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:1ec23bd7b3a893ae676d0e54ad47d18064e6c5ae1fadc2f195143fb27373f7f6"}, - {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:db36c27baed588a5a8346b971477b718fdc66cf5b80cbfbd914b4d6d355e44e2"}, - {file = "pyzmq-25.1.2-cp39-cp39-win32.whl", hash = "sha256:39b1067f13aba39d794a24761e385e2eddc26295826530a8c7b6c6c341584289"}, - {file = "pyzmq-25.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:8e9f3fabc445d0ce320ea2c59a75fe3ea591fdbdeebec5db6de530dd4b09412e"}, - {file = "pyzmq-25.1.2-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a8c1d566344aee826b74e472e16edae0a02e2a044f14f7c24e123002dcff1c05"}, - {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:759cfd391a0996345ba94b6a5110fca9c557ad4166d86a6e81ea526c376a01e8"}, - {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c61e346ac34b74028ede1c6b4bcecf649d69b707b3ff9dc0fab453821b04d1e"}, - {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4cb8fc1f8d69b411b8ec0b5f1ffbcaf14c1db95b6bccea21d83610987435f1a4"}, - {file = "pyzmq-25.1.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:3c00c9b7d1ca8165c610437ca0c92e7b5607b2f9076f4eb4b095c85d6e680a1d"}, - {file = "pyzmq-25.1.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:df0c7a16ebb94452d2909b9a7b3337940e9a87a824c4fc1c7c36bb4404cb0cde"}, - {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:45999e7f7ed5c390f2e87ece7f6c56bf979fb213550229e711e45ecc7d42ccb8"}, - {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ac170e9e048b40c605358667aca3d94e98f604a18c44bdb4c102e67070f3ac9b"}, - {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1b604734bec94f05f81b360a272fc824334267426ae9905ff32dc2be433ab96"}, - {file = "pyzmq-25.1.2-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:a793ac733e3d895d96f865f1806f160696422554e46d30105807fdc9841b9f7d"}, - {file = "pyzmq-25.1.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0806175f2ae5ad4b835ecd87f5f85583316b69f17e97786f7443baaf54b9bb98"}, - {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:ef12e259e7bc317c7597d4f6ef59b97b913e162d83b421dd0db3d6410f17a244"}, - {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ea253b368eb41116011add00f8d5726762320b1bda892f744c91997b65754d73"}, - {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b9b1f2ad6498445a941d9a4fee096d387fee436e45cc660e72e768d3d8ee611"}, - {file = "pyzmq-25.1.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:8b14c75979ce932c53b79976a395cb2a8cd3aaf14aef75e8c2cb55a330b9b49d"}, - {file = "pyzmq-25.1.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:889370d5174a741a62566c003ee8ddba4b04c3f09a97b8000092b7ca83ec9c49"}, - {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9a18fff090441a40ffda8a7f4f18f03dc56ae73f148f1832e109f9bffa85df15"}, - {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:99a6b36f95c98839ad98f8c553d8507644c880cf1e0a57fe5e3a3f3969040882"}, - {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4345c9a27f4310afbb9c01750e9461ff33d6fb74cd2456b107525bbeebcb5be3"}, - {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3516e0b6224cf6e43e341d56da15fd33bdc37fa0c06af4f029f7d7dfceceabbc"}, - {file = "pyzmq-25.1.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:146b9b1f29ead41255387fb07be56dc29639262c0f7344f570eecdcd8d683314"}, - {file = "pyzmq-25.1.2.tar.gz", hash = "sha256:93f1aa311e8bb912e34f004cf186407a4e90eec4f0ecc0efd26056bf7eda0226"}, + {file = "pyzmq-26.0.3-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:44dd6fc3034f1eaa72ece33588867df9e006a7303725a12d64c3dff92330f625"}, + {file = "pyzmq-26.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:acb704195a71ac5ea5ecf2811c9ee19ecdc62b91878528302dd0be1b9451cc90"}, + {file = "pyzmq-26.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dbb9c997932473a27afa93954bb77a9f9b786b4ccf718d903f35da3232317de"}, + {file = "pyzmq-26.0.3-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6bcb34f869d431799c3ee7d516554797f7760cb2198ecaa89c3f176f72d062be"}, + {file = "pyzmq-26.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38ece17ec5f20d7d9b442e5174ae9f020365d01ba7c112205a4d59cf19dc38ee"}, + {file = "pyzmq-26.0.3-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:ba6e5e6588e49139a0979d03a7deb9c734bde647b9a8808f26acf9c547cab1bf"}, + {file = "pyzmq-26.0.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3bf8b000a4e2967e6dfdd8656cd0757d18c7e5ce3d16339e550bd462f4857e59"}, + {file = "pyzmq-26.0.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:2136f64fbb86451dbbf70223635a468272dd20075f988a102bf8a3f194a411dc"}, + {file = "pyzmq-26.0.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e8918973fbd34e7814f59143c5f600ecd38b8038161239fd1a3d33d5817a38b8"}, + {file = "pyzmq-26.0.3-cp310-cp310-win32.whl", hash = "sha256:0aaf982e68a7ac284377d051c742610220fd06d330dcd4c4dbb4cdd77c22a537"}, + {file = "pyzmq-26.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:f1a9b7d00fdf60b4039f4455afd031fe85ee8305b019334b72dcf73c567edc47"}, + {file = "pyzmq-26.0.3-cp310-cp310-win_arm64.whl", hash = "sha256:80b12f25d805a919d53efc0a5ad7c0c0326f13b4eae981a5d7b7cc343318ebb7"}, + {file = "pyzmq-26.0.3-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:a72a84570f84c374b4c287183debc776dc319d3e8ce6b6a0041ce2e400de3f32"}, + {file = "pyzmq-26.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7ca684ee649b55fd8f378127ac8462fb6c85f251c2fb027eb3c887e8ee347bcd"}, + {file = "pyzmq-26.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e222562dc0f38571c8b1ffdae9d7adb866363134299264a1958d077800b193b7"}, + {file = "pyzmq-26.0.3-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f17cde1db0754c35a91ac00b22b25c11da6eec5746431d6e5092f0cd31a3fea9"}, + {file = "pyzmq-26.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b7c0c0b3244bb2275abe255d4a30c050d541c6cb18b870975553f1fb6f37527"}, + {file = "pyzmq-26.0.3-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:ac97a21de3712afe6a6c071abfad40a6224fd14fa6ff0ff8d0c6e6cd4e2f807a"}, + {file = "pyzmq-26.0.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:88b88282e55fa39dd556d7fc04160bcf39dea015f78e0cecec8ff4f06c1fc2b5"}, + {file = "pyzmq-26.0.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:72b67f966b57dbd18dcc7efbc1c7fc9f5f983e572db1877081f075004614fcdd"}, + {file = "pyzmq-26.0.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f4b6cecbbf3b7380f3b61de3a7b93cb721125dc125c854c14ddc91225ba52f83"}, + {file = "pyzmq-26.0.3-cp311-cp311-win32.whl", hash = "sha256:eed56b6a39216d31ff8cd2f1d048b5bf1700e4b32a01b14379c3b6dde9ce3aa3"}, + {file = "pyzmq-26.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:3191d312c73e3cfd0f0afdf51df8405aafeb0bad71e7ed8f68b24b63c4f36500"}, + {file = "pyzmq-26.0.3-cp311-cp311-win_arm64.whl", hash = "sha256:b6907da3017ef55139cf0e417c5123a84c7332520e73a6902ff1f79046cd3b94"}, + {file = "pyzmq-26.0.3-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:068ca17214038ae986d68f4a7021f97e187ed278ab6dccb79f837d765a54d753"}, + {file = "pyzmq-26.0.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:7821d44fe07335bea256b9f1f41474a642ca55fa671dfd9f00af8d68a920c2d4"}, + {file = "pyzmq-26.0.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eeb438a26d87c123bb318e5f2b3d86a36060b01f22fbdffd8cf247d52f7c9a2b"}, + {file = "pyzmq-26.0.3-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:69ea9d6d9baa25a4dc9cef5e2b77b8537827b122214f210dd925132e34ae9b12"}, + {file = "pyzmq-26.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7daa3e1369355766dea11f1d8ef829905c3b9da886ea3152788dc25ee6079e02"}, + {file = "pyzmq-26.0.3-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:6ca7a9a06b52d0e38ccf6bca1aeff7be178917893f3883f37b75589d42c4ac20"}, + {file = "pyzmq-26.0.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1b7d0e124948daa4d9686d421ef5087c0516bc6179fdcf8828b8444f8e461a77"}, + {file = "pyzmq-26.0.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:e746524418b70f38550f2190eeee834db8850088c834d4c8406fbb9bc1ae10b2"}, + {file = "pyzmq-26.0.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:6b3146f9ae6af82c47a5282ac8803523d381b3b21caeae0327ed2f7ecb718798"}, + {file = "pyzmq-26.0.3-cp312-cp312-win32.whl", hash = "sha256:2b291d1230845871c00c8462c50565a9cd6026fe1228e77ca934470bb7d70ea0"}, + {file = "pyzmq-26.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:926838a535c2c1ea21c903f909a9a54e675c2126728c21381a94ddf37c3cbddf"}, + {file = "pyzmq-26.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:5bf6c237f8c681dfb91b17f8435b2735951f0d1fad10cc5dfd96db110243370b"}, + {file = "pyzmq-26.0.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0c0991f5a96a8e620f7691e61178cd8f457b49e17b7d9cfa2067e2a0a89fc1d5"}, + {file = "pyzmq-26.0.3-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:dbf012d8fcb9f2cf0643b65df3b355fdd74fc0035d70bb5c845e9e30a3a4654b"}, + {file = "pyzmq-26.0.3-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:01fbfbeb8249a68d257f601deb50c70c929dc2dfe683b754659569e502fbd3aa"}, + {file = "pyzmq-26.0.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c8eb19abe87029c18f226d42b8a2c9efdd139d08f8bf6e085dd9075446db450"}, + {file = "pyzmq-26.0.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:5344b896e79800af86ad643408ca9aa303a017f6ebff8cee5a3163c1e9aec987"}, + {file = "pyzmq-26.0.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:204e0f176fd1d067671157d049466869b3ae1fc51e354708b0dc41cf94e23a3a"}, + {file = "pyzmq-26.0.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:a42db008d58530efa3b881eeee4991146de0b790e095f7ae43ba5cc612decbc5"}, + {file = "pyzmq-26.0.3-cp37-cp37m-win32.whl", hash = "sha256:8d7a498671ca87e32b54cb47c82a92b40130a26c5197d392720a1bce1b3c77cf"}, + {file = "pyzmq-26.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:3b4032a96410bdc760061b14ed6a33613ffb7f702181ba999df5d16fb96ba16a"}, + {file = "pyzmq-26.0.3-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:2cc4e280098c1b192c42a849de8de2c8e0f3a84086a76ec5b07bfee29bda7d18"}, + {file = "pyzmq-26.0.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5bde86a2ed3ce587fa2b207424ce15b9a83a9fa14422dcc1c5356a13aed3df9d"}, + {file = "pyzmq-26.0.3-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:34106f68e20e6ff253c9f596ea50397dbd8699828d55e8fa18bd4323d8d966e6"}, + {file = "pyzmq-26.0.3-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ebbbd0e728af5db9b04e56389e2299a57ea8b9dd15c9759153ee2455b32be6ad"}, + {file = "pyzmq-26.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6b1d1c631e5940cac5a0b22c5379c86e8df6a4ec277c7a856b714021ab6cfad"}, + {file = "pyzmq-26.0.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:e891ce81edd463b3b4c3b885c5603c00141151dd9c6936d98a680c8c72fe5c67"}, + {file = "pyzmq-26.0.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:9b273ecfbc590a1b98f014ae41e5cf723932f3b53ba9367cfb676f838038b32c"}, + {file = "pyzmq-26.0.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b32bff85fb02a75ea0b68f21e2412255b5731f3f389ed9aecc13a6752f58ac97"}, + {file = "pyzmq-26.0.3-cp38-cp38-win32.whl", hash = "sha256:f6c21c00478a7bea93caaaef9e7629145d4153b15a8653e8bb4609d4bc70dbfc"}, + {file = "pyzmq-26.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:3401613148d93ef0fd9aabdbddb212de3db7a4475367f49f590c837355343972"}, + {file = "pyzmq-26.0.3-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:2ed8357f4c6e0daa4f3baf31832df8a33334e0fe5b020a61bc8b345a3db7a606"}, + {file = "pyzmq-26.0.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c1c8f2a2ca45292084c75bb6d3a25545cff0ed931ed228d3a1810ae3758f975f"}, + {file = "pyzmq-26.0.3-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:b63731993cdddcc8e087c64e9cf003f909262b359110070183d7f3025d1c56b5"}, + {file = "pyzmq-26.0.3-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b3cd31f859b662ac5d7f4226ec7d8bd60384fa037fc02aee6ff0b53ba29a3ba8"}, + {file = "pyzmq-26.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:115f8359402fa527cf47708d6f8a0f8234f0e9ca0cab7c18c9c189c194dbf620"}, + {file = "pyzmq-26.0.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:715bdf952b9533ba13dfcf1f431a8f49e63cecc31d91d007bc1deb914f47d0e4"}, + {file = "pyzmq-26.0.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:e1258c639e00bf5e8a522fec6c3eaa3e30cf1c23a2f21a586be7e04d50c9acab"}, + {file = "pyzmq-26.0.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:15c59e780be8f30a60816a9adab900c12a58d79c1ac742b4a8df044ab2a6d920"}, + {file = "pyzmq-26.0.3-cp39-cp39-win32.whl", hash = "sha256:d0cdde3c78d8ab5b46595054e5def32a755fc028685add5ddc7403e9f6de9879"}, + {file = "pyzmq-26.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:ce828058d482ef860746bf532822842e0ff484e27f540ef5c813d516dd8896d2"}, + {file = "pyzmq-26.0.3-cp39-cp39-win_arm64.whl", hash = "sha256:788f15721c64109cf720791714dc14afd0f449d63f3a5487724f024345067381"}, + {file = "pyzmq-26.0.3-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:2c18645ef6294d99b256806e34653e86236eb266278c8ec8112622b61db255de"}, + {file = "pyzmq-26.0.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7e6bc96ebe49604df3ec2c6389cc3876cabe475e6bfc84ced1bf4e630662cb35"}, + {file = "pyzmq-26.0.3-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:971e8990c5cc4ddcff26e149398fc7b0f6a042306e82500f5e8db3b10ce69f84"}, + {file = "pyzmq-26.0.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8416c23161abd94cc7da80c734ad7c9f5dbebdadfdaa77dad78244457448223"}, + {file = "pyzmq-26.0.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:082a2988364b60bb5de809373098361cf1dbb239623e39e46cb18bc035ed9c0c"}, + {file = "pyzmq-26.0.3-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d57dfbf9737763b3a60d26e6800e02e04284926329aee8fb01049635e957fe81"}, + {file = "pyzmq-26.0.3-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:77a85dca4c2430ac04dc2a2185c2deb3858a34fe7f403d0a946fa56970cf60a1"}, + {file = "pyzmq-26.0.3-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4c82a6d952a1d555bf4be42b6532927d2a5686dd3c3e280e5f63225ab47ac1f5"}, + {file = "pyzmq-26.0.3-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4496b1282c70c442809fc1b151977c3d967bfb33e4e17cedbf226d97de18f709"}, + {file = "pyzmq-26.0.3-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:e4946d6bdb7ba972dfda282f9127e5756d4f299028b1566d1245fa0d438847e6"}, + {file = "pyzmq-26.0.3-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:03c0ae165e700364b266876d712acb1ac02693acd920afa67da2ebb91a0b3c09"}, + {file = "pyzmq-26.0.3-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:3e3070e680f79887d60feeda051a58d0ac36622e1759f305a41059eff62c6da7"}, + {file = "pyzmq-26.0.3-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6ca08b840fe95d1c2bd9ab92dac5685f949fc6f9ae820ec16193e5ddf603c3b2"}, + {file = "pyzmq-26.0.3-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e76654e9dbfb835b3518f9938e565c7806976c07b37c33526b574cc1a1050480"}, + {file = "pyzmq-26.0.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:871587bdadd1075b112e697173e946a07d722459d20716ceb3d1bd6c64bd08ce"}, + {file = "pyzmq-26.0.3-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d0a2d1bd63a4ad79483049b26514e70fa618ce6115220da9efdff63688808b17"}, + {file = "pyzmq-26.0.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0270b49b6847f0d106d64b5086e9ad5dc8a902413b5dbbb15d12b60f9c1747a4"}, + {file = "pyzmq-26.0.3-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:703c60b9910488d3d0954ca585c34f541e506a091a41930e663a098d3b794c67"}, + {file = "pyzmq-26.0.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:74423631b6be371edfbf7eabb02ab995c2563fee60a80a30829176842e71722a"}, + {file = "pyzmq-26.0.3-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:4adfbb5451196842a88fda3612e2c0414134874bffb1c2ce83ab4242ec9e027d"}, + {file = "pyzmq-26.0.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:3516119f4f9b8671083a70b6afaa0a070f5683e431ab3dc26e9215620d7ca1ad"}, + {file = "pyzmq-26.0.3.tar.gz", hash = "sha256:dba7d9f2e047dfa2bca3b01f4f84aa5246725203d6284e3790f2ca15fba6b40a"}, ] [package.dependencies] @@ -3539,13 +3617,13 @@ cffi = {version = "*", markers = "implementation_name == \"pypy\""} [[package]] name = "referencing" -version = "0.34.0" +version = "0.35.1" description = "JSON Referencing + Python" optional = false python-versions = ">=3.8" files = [ - {file = "referencing-0.34.0-py3-none-any.whl", hash = "sha256:d53ae300ceddd3169f1ffa9caf2cb7b769e92657e4fafb23d34b93679116dfd4"}, - {file = "referencing-0.34.0.tar.gz", hash = "sha256:5773bd84ef41799a5a8ca72dc34590c041eb01bf9aa02632b4a973fb0181a844"}, + {file = "referencing-0.35.1-py3-none-any.whl", hash = "sha256:eda6d3234d62814d1c64e305c1331c9a3a6132da475ab6382eaa997b21ee75de"}, + {file = "referencing-0.35.1.tar.gz", hash = "sha256:25b42124a6c8b632a425174f24087783efb348a6f1e0008e63cd4466fedf703c"}, ] [package.dependencies] @@ -3554,13 +3632,13 @@ rpds-py = ">=0.7.0" [[package]] name = "requests" -version = "2.31.0" +version = "2.32.3" description = "Python HTTP for Humans." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, - {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, + {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, + {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, ] [package.dependencies] @@ -3573,112 +3651,131 @@ urllib3 = ">=1.21.1,<3" socks = ["PySocks (>=1.5.6,!=1.5.7)"] use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] +[[package]] +name = "responses" +version = "0.25.3" +description = "A utility library for mocking out the `requests` Python library." +optional = false +python-versions = ">=3.8" +files = [ + {file = "responses-0.25.3-py3-none-any.whl", hash = "sha256:521efcbc82081ab8daa588e08f7e8a64ce79b91c39f6e62199b19159bea7dbcb"}, + {file = "responses-0.25.3.tar.gz", hash = "sha256:617b9247abd9ae28313d57a75880422d55ec63c29d33d629697590a034358dba"}, +] + +[package.dependencies] +pyyaml = "*" +requests = ">=2.30.0,<3.0" +urllib3 = ">=1.25.10,<3.0" + +[package.extras] +tests = ["coverage (>=6.0.0)", "flake8", "mypy", "pytest (>=7.0.0)", "pytest-asyncio", "pytest-cov", "pytest-httpserver", "tomli", "tomli-w", "types-PyYAML", "types-requests"] + [[package]] name = "rpds-py" -version = "0.18.0" +version = "0.18.1" description = "Python bindings to Rust's persistent data structures (rpds)" optional = false python-versions = ">=3.8" files = [ - {file = "rpds_py-0.18.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:5b4e7d8d6c9b2e8ee2d55c90b59c707ca59bc30058269b3db7b1f8df5763557e"}, - {file = "rpds_py-0.18.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c463ed05f9dfb9baebef68048aed8dcdc94411e4bf3d33a39ba97e271624f8f7"}, - {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:01e36a39af54a30f28b73096dd39b6802eddd04c90dbe161c1b8dbe22353189f"}, - {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d62dec4976954a23d7f91f2f4530852b0c7608116c257833922a896101336c51"}, - {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dd18772815d5f008fa03d2b9a681ae38d5ae9f0e599f7dda233c439fcaa00d40"}, - {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:923d39efa3cfb7279a0327e337a7958bff00cc447fd07a25cddb0a1cc9a6d2da"}, - {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39514da80f971362f9267c600b6d459bfbbc549cffc2cef8e47474fddc9b45b1"}, - {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a34d557a42aa28bd5c48a023c570219ba2593bcbbb8dc1b98d8cf5d529ab1434"}, - {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:93df1de2f7f7239dc9cc5a4a12408ee1598725036bd2dedadc14d94525192fc3"}, - {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:34b18ba135c687f4dac449aa5157d36e2cbb7c03cbea4ddbd88604e076aa836e"}, - {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c0b5dcf9193625afd8ecc92312d6ed78781c46ecbf39af9ad4681fc9f464af88"}, - {file = "rpds_py-0.18.0-cp310-none-win32.whl", hash = "sha256:c4325ff0442a12113a6379af66978c3fe562f846763287ef66bdc1d57925d337"}, - {file = "rpds_py-0.18.0-cp310-none-win_amd64.whl", hash = "sha256:7223a2a5fe0d217e60a60cdae28d6949140dde9c3bcc714063c5b463065e3d66"}, - {file = "rpds_py-0.18.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:3a96e0c6a41dcdba3a0a581bbf6c44bb863f27c541547fb4b9711fd8cf0ffad4"}, - {file = "rpds_py-0.18.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30f43887bbae0d49113cbaab729a112251a940e9b274536613097ab8b4899cf6"}, - {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fcb25daa9219b4cf3a0ab24b0eb9a5cc8949ed4dc72acb8fa16b7e1681aa3c58"}, - {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d68c93e381010662ab873fea609bf6c0f428b6d0bb00f2c6939782e0818d37bf"}, - {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b34b7aa8b261c1dbf7720b5d6f01f38243e9b9daf7e6b8bc1fd4657000062f2c"}, - {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2e6d75ab12b0bbab7215e5d40f1e5b738aa539598db27ef83b2ec46747df90e1"}, - {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b8612cd233543a3781bc659c731b9d607de65890085098986dfd573fc2befe5"}, - {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:aec493917dd45e3c69d00a8874e7cbed844efd935595ef78a0f25f14312e33c6"}, - {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:661d25cbffaf8cc42e971dd570d87cb29a665f49f4abe1f9e76be9a5182c4688"}, - {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1df3659d26f539ac74fb3b0c481cdf9d725386e3552c6fa2974f4d33d78e544b"}, - {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a1ce3ba137ed54f83e56fb983a5859a27d43a40188ba798993812fed73c70836"}, - {file = "rpds_py-0.18.0-cp311-none-win32.whl", hash = "sha256:69e64831e22a6b377772e7fb337533c365085b31619005802a79242fee620bc1"}, - {file = "rpds_py-0.18.0-cp311-none-win_amd64.whl", hash = "sha256:998e33ad22dc7ec7e030b3df701c43630b5bc0d8fbc2267653577e3fec279afa"}, - {file = "rpds_py-0.18.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:7f2facbd386dd60cbbf1a794181e6aa0bd429bd78bfdf775436020172e2a23f0"}, - {file = "rpds_py-0.18.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1d9a5be316c15ffb2b3c405c4ff14448c36b4435be062a7f578ccd8b01f0c4d8"}, - {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cd5bf1af8efe569654bbef5a3e0a56eca45f87cfcffab31dd8dde70da5982475"}, - {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5417558f6887e9b6b65b4527232553c139b57ec42c64570569b155262ac0754f"}, - {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:56a737287efecafc16f6d067c2ea0117abadcd078d58721f967952db329a3e5c"}, - {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8f03bccbd8586e9dd37219bce4d4e0d3ab492e6b3b533e973fa08a112cb2ffc9"}, - {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4457a94da0d5c53dc4b3e4de1158bdab077db23c53232f37a3cb7afdb053a4e3"}, - {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0ab39c1ba9023914297dd88ec3b3b3c3f33671baeb6acf82ad7ce883f6e8e157"}, - {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9d54553c1136b50fd12cc17e5b11ad07374c316df307e4cfd6441bea5fb68496"}, - {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0af039631b6de0397ab2ba16eaf2872e9f8fca391b44d3d8cac317860a700a3f"}, - {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:84ffab12db93b5f6bad84c712c92060a2d321b35c3c9960b43d08d0f639d60d7"}, - {file = "rpds_py-0.18.0-cp312-none-win32.whl", hash = "sha256:685537e07897f173abcf67258bee3c05c374fa6fff89d4c7e42fb391b0605e98"}, - {file = "rpds_py-0.18.0-cp312-none-win_amd64.whl", hash = "sha256:e003b002ec72c8d5a3e3da2989c7d6065b47d9eaa70cd8808b5384fbb970f4ec"}, - {file = "rpds_py-0.18.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:08f9ad53c3f31dfb4baa00da22f1e862900f45908383c062c27628754af2e88e"}, - {file = "rpds_py-0.18.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c0013fe6b46aa496a6749c77e00a3eb07952832ad6166bd481c74bda0dcb6d58"}, - {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e32a92116d4f2a80b629778280103d2a510a5b3f6314ceccd6e38006b5e92dcb"}, - {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e541ec6f2ec456934fd279a3120f856cd0aedd209fc3852eca563f81738f6861"}, - {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bed88b9a458e354014d662d47e7a5baafd7ff81c780fd91584a10d6ec842cb73"}, - {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2644e47de560eb7bd55c20fc59f6daa04682655c58d08185a9b95c1970fa1e07"}, - {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e8916ae4c720529e18afa0b879473049e95949bf97042e938530e072fde061d"}, - {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:465a3eb5659338cf2a9243e50ad9b2296fa15061736d6e26240e713522b6235c"}, - {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:ea7d4a99f3b38c37eac212dbd6ec42b7a5ec51e2c74b5d3223e43c811609e65f"}, - {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:67071a6171e92b6da534b8ae326505f7c18022c6f19072a81dcf40db2638767c"}, - {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:41ef53e7c58aa4ef281da975f62c258950f54b76ec8e45941e93a3d1d8580594"}, - {file = "rpds_py-0.18.0-cp38-none-win32.whl", hash = "sha256:fdea4952db2793c4ad0bdccd27c1d8fdd1423a92f04598bc39425bcc2b8ee46e"}, - {file = "rpds_py-0.18.0-cp38-none-win_amd64.whl", hash = "sha256:7cd863afe7336c62ec78d7d1349a2f34c007a3cc6c2369d667c65aeec412a5b1"}, - {file = "rpds_py-0.18.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:5307def11a35f5ae4581a0b658b0af8178c65c530e94893345bebf41cc139d33"}, - {file = "rpds_py-0.18.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:77f195baa60a54ef9d2de16fbbfd3ff8b04edc0c0140a761b56c267ac11aa467"}, - {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:39f5441553f1c2aed4de4377178ad8ff8f9d733723d6c66d983d75341de265ab"}, - {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9a00312dea9310d4cb7dbd7787e722d2e86a95c2db92fbd7d0155f97127bcb40"}, - {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8f2fc11e8fe034ee3c34d316d0ad8808f45bc3b9ce5857ff29d513f3ff2923a1"}, - {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:586f8204935b9ec884500498ccc91aa869fc652c40c093bd9e1471fbcc25c022"}, - {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ddc2f4dfd396c7bfa18e6ce371cba60e4cf9d2e5cdb71376aa2da264605b60b9"}, - {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5ddcba87675b6d509139d1b521e0c8250e967e63b5909a7e8f8944d0f90ff36f"}, - {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:7bd339195d84439cbe5771546fe8a4e8a7a045417d8f9de9a368c434e42a721e"}, - {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:d7c36232a90d4755b720fbd76739d8891732b18cf240a9c645d75f00639a9024"}, - {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:6b0817e34942b2ca527b0e9298373e7cc75f429e8da2055607f4931fded23e20"}, - {file = "rpds_py-0.18.0-cp39-none-win32.whl", hash = "sha256:99f70b740dc04d09e6b2699b675874367885217a2e9f782bdf5395632ac663b7"}, - {file = "rpds_py-0.18.0-cp39-none-win_amd64.whl", hash = "sha256:6ef687afab047554a2d366e112dd187b62d261d49eb79b77e386f94644363294"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ad36cfb355e24f1bd37cac88c112cd7730873f20fb0bdaf8ba59eedf8216079f"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:36b3ee798c58ace201289024b52788161e1ea133e4ac93fba7d49da5fec0ef9e"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8a2f084546cc59ea99fda8e070be2fd140c3092dc11524a71aa8f0f3d5a55ca"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e4461d0f003a0aa9be2bdd1b798a041f177189c1a0f7619fe8c95ad08d9a45d7"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8db715ebe3bb7d86d77ac1826f7d67ec11a70dbd2376b7cc214199360517b641"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:793968759cd0d96cac1e367afd70c235867831983f876a53389ad869b043c948"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66e6a3af5a75363d2c9a48b07cb27c4ea542938b1a2e93b15a503cdfa8490795"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6ef0befbb5d79cf32d0266f5cff01545602344eda89480e1dd88aca964260b18"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:1d4acf42190d449d5e89654d5c1ed3a4f17925eec71f05e2a41414689cda02d1"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:a5f446dd5055667aabaee78487f2b5ab72e244f9bc0b2ffebfeec79051679984"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:9dbbeb27f4e70bfd9eec1be5477517365afe05a9b2c441a0b21929ee61048124"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:22806714311a69fd0af9b35b7be97c18a0fc2826e6827dbb3a8c94eac6cf7eeb"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:b34ae4636dfc4e76a438ab826a0d1eed2589ca7d9a1b2d5bb546978ac6485461"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c8370641f1a7f0e0669ddccca22f1da893cef7628396431eb445d46d893e5cd"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c8362467a0fdeccd47935f22c256bec5e6abe543bf0d66e3d3d57a8fb5731863"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:11a8c85ef4a07a7638180bf04fe189d12757c696eb41f310d2426895356dcf05"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b316144e85316da2723f9d8dc75bada12fa58489a527091fa1d5a612643d1a0e"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf1ea2e34868f6fbf070e1af291c8180480310173de0b0c43fc38a02929fc0e3"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e546e768d08ad55b20b11dbb78a745151acbd938f8f00d0cfbabe8b0199b9880"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:4901165d170a5fde6f589acb90a6b33629ad1ec976d4529e769c6f3d885e3e80"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:618a3d6cae6ef8ec88bb76dd80b83cfe415ad4f1d942ca2a903bf6b6ff97a2da"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:ed4eb745efbff0a8e9587d22a84be94a5eb7d2d99c02dacf7bd0911713ed14dd"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:6c81e5f372cd0dc5dc4809553d34f832f60a46034a5f187756d9b90586c2c307"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:43fbac5f22e25bee1d482c97474f930a353542855f05c1161fd804c9dc74a09d"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d7faa6f14017c0b1e69f5e2c357b998731ea75a442ab3841c0dbbbfe902d2c4"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:08231ac30a842bd04daabc4d71fddd7e6d26189406d5a69535638e4dcb88fe76"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:044a3e61a7c2dafacae99d1e722cc2d4c05280790ec5a05031b3876809d89a5c"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3f26b5bd1079acdb0c7a5645e350fe54d16b17bfc5e71f371c449383d3342e17"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:482103aed1dfe2f3b71a58eff35ba105289b8d862551ea576bd15479aba01f66"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1374f4129f9bcca53a1bba0bb86bf78325a0374577cf7e9e4cd046b1e6f20e24"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:635dc434ff724b178cb192c70016cc0ad25a275228f749ee0daf0eddbc8183b1"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:bc362ee4e314870a70f4ae88772d72d877246537d9f8cb8f7eacf10884862432"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:4832d7d380477521a8c1644bbab6588dfedea5e30a7d967b5fb75977c45fd77f"}, - {file = "rpds_py-0.18.0.tar.gz", hash = "sha256:42821446ee7a76f5d9f71f9e33a4fb2ffd724bb3e7f93386150b61a43115788d"}, + {file = "rpds_py-0.18.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:d31dea506d718693b6b2cffc0648a8929bdc51c70a311b2770f09611caa10d53"}, + {file = "rpds_py-0.18.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:732672fbc449bab754e0b15356c077cc31566df874964d4801ab14f71951ea80"}, + {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a98a1f0552b5f227a3d6422dbd61bc6f30db170939bd87ed14f3c339aa6c7c9"}, + {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7f1944ce16401aad1e3f7d312247b3d5de7981f634dc9dfe90da72b87d37887d"}, + {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:38e14fb4e370885c4ecd734f093a2225ee52dc384b86fa55fe3f74638b2cfb09"}, + {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08d74b184f9ab6289b87b19fe6a6d1a97fbfea84b8a3e745e87a5de3029bf944"}, + {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d70129cef4a8d979caa37e7fe957202e7eee8ea02c5e16455bc9808a59c6b2f0"}, + {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ce0bb20e3a11bd04461324a6a798af34d503f8d6f1aa3d2aa8901ceaf039176d"}, + {file = "rpds_py-0.18.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:81c5196a790032e0fc2464c0b4ab95f8610f96f1f2fa3d4deacce6a79852da60"}, + {file = "rpds_py-0.18.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:f3027be483868c99b4985fda802a57a67fdf30c5d9a50338d9db646d590198da"}, + {file = "rpds_py-0.18.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d44607f98caa2961bab4fa3c4309724b185b464cdc3ba6f3d7340bac3ec97cc1"}, + {file = "rpds_py-0.18.1-cp310-none-win32.whl", hash = "sha256:c273e795e7a0f1fddd46e1e3cb8be15634c29ae8ff31c196debb620e1edb9333"}, + {file = "rpds_py-0.18.1-cp310-none-win_amd64.whl", hash = "sha256:8352f48d511de5f973e4f2f9412736d7dea76c69faa6d36bcf885b50c758ab9a"}, + {file = "rpds_py-0.18.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:6b5ff7e1d63a8281654b5e2896d7f08799378e594f09cf3674e832ecaf396ce8"}, + {file = "rpds_py-0.18.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8927638a4d4137a289e41d0fd631551e89fa346d6dbcfc31ad627557d03ceb6d"}, + {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:154bf5c93d79558b44e5b50cc354aa0459e518e83677791e6adb0b039b7aa6a7"}, + {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:07f2139741e5deb2c5154a7b9629bc5aa48c766b643c1a6750d16f865a82c5fc"}, + {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8c7672e9fba7425f79019db9945b16e308ed8bc89348c23d955c8c0540da0a07"}, + {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:489bdfe1abd0406eba6b3bb4fdc87c7fa40f1031de073d0cfb744634cc8fa261"}, + {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c20f05e8e3d4fc76875fc9cb8cf24b90a63f5a1b4c5b9273f0e8225e169b100"}, + {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:967342e045564cef76dfcf1edb700b1e20838d83b1aa02ab313e6a497cf923b8"}, + {file = "rpds_py-0.18.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2cc7c1a47f3a63282ab0f422d90ddac4aa3034e39fc66a559ab93041e6505da7"}, + {file = "rpds_py-0.18.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f7afbfee1157e0f9376c00bb232e80a60e59ed716e3211a80cb8506550671e6e"}, + {file = "rpds_py-0.18.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9e6934d70dc50f9f8ea47081ceafdec09245fd9f6032669c3b45705dea096b88"}, + {file = "rpds_py-0.18.1-cp311-none-win32.whl", hash = "sha256:c69882964516dc143083d3795cb508e806b09fc3800fd0d4cddc1df6c36e76bb"}, + {file = "rpds_py-0.18.1-cp311-none-win_amd64.whl", hash = "sha256:70a838f7754483bcdc830444952fd89645569e7452e3226de4a613a4c1793fb2"}, + {file = "rpds_py-0.18.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:3dd3cd86e1db5aadd334e011eba4e29d37a104b403e8ca24dcd6703c68ca55b3"}, + {file = "rpds_py-0.18.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:05f3d615099bd9b13ecf2fc9cf2d839ad3f20239c678f461c753e93755d629ee"}, + {file = "rpds_py-0.18.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35b2b771b13eee8729a5049c976197ff58a27a3829c018a04341bcf1ae409b2b"}, + {file = "rpds_py-0.18.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ee17cd26b97d537af8f33635ef38be873073d516fd425e80559f4585a7b90c43"}, + {file = "rpds_py-0.18.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b646bf655b135ccf4522ed43d6902af37d3f5dbcf0da66c769a2b3938b9d8184"}, + {file = "rpds_py-0.18.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:19ba472b9606c36716062c023afa2484d1e4220548751bda14f725a7de17b4f6"}, + {file = "rpds_py-0.18.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e30ac5e329098903262dc5bdd7e2086e0256aa762cc8b744f9e7bf2a427d3f8"}, + {file = "rpds_py-0.18.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d58ad6317d188c43750cb76e9deacf6051d0f884d87dc6518e0280438648a9ac"}, + {file = "rpds_py-0.18.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e1735502458621921cee039c47318cb90b51d532c2766593be6207eec53e5c4c"}, + {file = "rpds_py-0.18.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f5bab211605d91db0e2995a17b5c6ee5edec1270e46223e513eaa20da20076ac"}, + {file = "rpds_py-0.18.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2fc24a329a717f9e2448f8cd1f960f9dac4e45b6224d60734edeb67499bab03a"}, + {file = "rpds_py-0.18.1-cp312-none-win32.whl", hash = "sha256:1805d5901779662d599d0e2e4159d8a82c0b05faa86ef9222bf974572286b2b6"}, + {file = "rpds_py-0.18.1-cp312-none-win_amd64.whl", hash = "sha256:720edcb916df872d80f80a1cc5ea9058300b97721efda8651efcd938a9c70a72"}, + {file = "rpds_py-0.18.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:c827576e2fa017a081346dce87d532a5310241648eb3700af9a571a6e9fc7e74"}, + {file = "rpds_py-0.18.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:aa3679e751408d75a0b4d8d26d6647b6d9326f5e35c00a7ccd82b78ef64f65f8"}, + {file = "rpds_py-0.18.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0abeee75434e2ee2d142d650d1e54ac1f8b01e6e6abdde8ffd6eeac6e9c38e20"}, + {file = "rpds_py-0.18.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed402d6153c5d519a0faf1bb69898e97fb31613b49da27a84a13935ea9164dfc"}, + {file = "rpds_py-0.18.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:338dee44b0cef8b70fd2ef54b4e09bb1b97fc6c3a58fea5db6cc083fd9fc2724"}, + {file = "rpds_py-0.18.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7750569d9526199c5b97e5a9f8d96a13300950d910cf04a861d96f4273d5b104"}, + {file = "rpds_py-0.18.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:607345bd5912aacc0c5a63d45a1f73fef29e697884f7e861094e443187c02be5"}, + {file = "rpds_py-0.18.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:207c82978115baa1fd8d706d720b4a4d2b0913df1c78c85ba73fe6c5804505f0"}, + {file = "rpds_py-0.18.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:6d1e42d2735d437e7e80bab4d78eb2e459af48c0a46e686ea35f690b93db792d"}, + {file = "rpds_py-0.18.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:5463c47c08630007dc0fe99fb480ea4f34a89712410592380425a9b4e1611d8e"}, + {file = "rpds_py-0.18.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:06d218939e1bf2ca50e6b0ec700ffe755e5216a8230ab3e87c059ebb4ea06afc"}, + {file = "rpds_py-0.18.1-cp38-none-win32.whl", hash = "sha256:312fe69b4fe1ffbe76520a7676b1e5ac06ddf7826d764cc10265c3b53f96dbe9"}, + {file = "rpds_py-0.18.1-cp38-none-win_amd64.whl", hash = "sha256:9437ca26784120a279f3137ee080b0e717012c42921eb07861b412340f85bae2"}, + {file = "rpds_py-0.18.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:19e515b78c3fc1039dd7da0a33c28c3154458f947f4dc198d3c72db2b6b5dc93"}, + {file = "rpds_py-0.18.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a7b28c5b066bca9a4eb4e2f2663012debe680f097979d880657f00e1c30875a0"}, + {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:673fdbbf668dd958eff750e500495ef3f611e2ecc209464f661bc82e9838991e"}, + {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d960de62227635d2e61068f42a6cb6aae91a7fe00fca0e3aeed17667c8a34611"}, + {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:352a88dc7892f1da66b6027af06a2e7e5d53fe05924cc2cfc56495b586a10b72"}, + {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4e0ee01ad8260184db21468a6e1c37afa0529acc12c3a697ee498d3c2c4dcaf3"}, + {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4c39ad2f512b4041343ea3c7894339e4ca7839ac38ca83d68a832fc8b3748ab"}, + {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:aaa71ee43a703c321906813bb252f69524f02aa05bf4eec85f0c41d5d62d0f4c"}, + {file = "rpds_py-0.18.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:6cd8098517c64a85e790657e7b1e509b9fe07487fd358e19431cb120f7d96338"}, + {file = "rpds_py-0.18.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:4adec039b8e2928983f885c53b7cc4cda8965b62b6596501a0308d2703f8af1b"}, + {file = "rpds_py-0.18.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:32b7daaa3e9389db3695964ce8e566e3413b0c43e3394c05e4b243a4cd7bef26"}, + {file = "rpds_py-0.18.1-cp39-none-win32.whl", hash = "sha256:2625f03b105328729f9450c8badda34d5243231eef6535f80064d57035738360"}, + {file = "rpds_py-0.18.1-cp39-none-win_amd64.whl", hash = "sha256:bf18932d0003c8c4d51a39f244231986ab23ee057d235a12b2684ea26a353590"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:cbfbea39ba64f5e53ae2915de36f130588bba71245b418060ec3330ebf85678e"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:a3d456ff2a6a4d2adcdf3c1c960a36f4fd2fec6e3b4902a42a384d17cf4e7a65"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7700936ef9d006b7ef605dc53aa364da2de5a3aa65516a1f3ce73bf82ecfc7ae"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:51584acc5916212e1bf45edd17f3a6b05fe0cbb40482d25e619f824dccb679de"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:942695a206a58d2575033ff1e42b12b2aece98d6003c6bc739fbf33d1773b12f"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b906b5f58892813e5ba5c6056d6a5ad08f358ba49f046d910ad992196ea61397"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6f8e3fecca256fefc91bb6765a693d96692459d7d4c644660a9fff32e517843"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7732770412bab81c5a9f6d20aeb60ae943a9b36dcd990d876a773526468e7163"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:bd1105b50ede37461c1d51b9698c4f4be6e13e69a908ab7751e3807985fc0346"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:618916f5535784960f3ecf8111581f4ad31d347c3de66d02e728de460a46303c"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:17c6d2155e2423f7e79e3bb18151c686d40db42d8645e7977442170c360194d4"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:6c4c4c3f878df21faf5fac86eda32671c27889e13570645a9eea0a1abdd50922"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:fab6ce90574645a0d6c58890e9bcaac8d94dff54fb51c69e5522a7358b80ab64"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:531796fb842b53f2695e94dc338929e9f9dbf473b64710c28af5a160b2a8927d"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:740884bc62a5e2bbb31e584f5d23b32320fd75d79f916f15a788d527a5e83644"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:998125738de0158f088aef3cb264a34251908dd2e5d9966774fdab7402edfab7"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e2be6e9dd4111d5b31ba3b74d17da54a8319d8168890fbaea4b9e5c3de630ae5"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d0cee71bc618cd93716f3c1bf56653740d2d13ddbd47673efa8bf41435a60daa"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2c3caec4ec5cd1d18e5dd6ae5194d24ed12785212a90b37f5f7f06b8bedd7139"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:27bba383e8c5231cd559affe169ca0b96ec78d39909ffd817f28b166d7ddd4d8"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:a888e8bdb45916234b99da2d859566f1e8a1d2275a801bb8e4a9644e3c7e7909"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:6031b25fb1b06327b43d841f33842b383beba399884f8228a6bb3df3088485ff"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:48c2faaa8adfacefcbfdb5f2e2e7bdad081e5ace8d182e5f4ade971f128e6bb3"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:d85164315bd68c0806768dc6bb0429c6f95c354f87485ee3593c4f6b14def2bd"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6afd80f6c79893cfc0574956f78a0add8c76e3696f2d6a15bca2c66c415cf2d4"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fa242ac1ff583e4ec7771141606aafc92b361cd90a05c30d93e343a0c2d82a89"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d21be4770ff4e08698e1e8e0bce06edb6ea0626e7c8f560bc08222880aca6a6f"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c45a639e93a0c5d4b788b2613bd637468edd62f8f95ebc6fcc303d58ab3f0a8"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:910e71711d1055b2768181efa0a17537b2622afeb0424116619817007f8a2b10"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b9bb1f182a97880f6078283b3505a707057c42bf55d8fca604f70dedfdc0772a"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:1d54f74f40b1f7aaa595a02ff42ef38ca654b1469bef7d52867da474243cc633"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:8d2e182c9ee01135e11e9676e9a62dfad791a7a467738f06726872374a83db49"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:636a15acc588f70fda1661234761f9ed9ad79ebed3f2125d44be0862708b666e"}, + {file = "rpds_py-0.18.1.tar.gz", hash = "sha256:dc48b479d540770c811fbd1eb9ba2bb66951863e448efec2e2c102625328e92f"}, ] [[package]] @@ -3720,72 +3817,71 @@ crt = ["botocore[crt] (>=1.33.2,<2.0a.0)"] [[package]] name = "setuptools" -version = "69.2.0" +version = "70.0.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-69.2.0-py3-none-any.whl", hash = "sha256:c21c49fb1042386df081cb5d86759792ab89efca84cf114889191cd09aacc80c"}, - {file = "setuptools-69.2.0.tar.gz", hash = "sha256:0ff4183f8f42cd8fa3acea16c45205521a4ef28f73c6391d8a25e92893134f2e"}, + {file = "setuptools-70.0.0-py3-none-any.whl", hash = "sha256:54faa7f2e8d2d11bcd2c07bed282eef1046b5c080d1c32add737d7b5817b1ad4"}, + {file = "setuptools-70.0.0.tar.gz", hash = "sha256:f211a66637b8fa059bb28183da127d4e86396c991a942b028c6650d4319c3fd0"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mypy (==1.9)", "packaging (>=23.2)", "pip (>=19.1)", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] -testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.2)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mypy (==1.9)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.1)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] [[package]] name = "shapely" -version = "2.0.3" +version = "2.0.4" description = "Manipulation and analysis of geometric objects" optional = false python-versions = ">=3.7" files = [ - {file = "shapely-2.0.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:af7e9abe180b189431b0f490638281b43b84a33a960620e6b2e8d3e3458b61a1"}, - {file = "shapely-2.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:98040462b36ced9671e266b95c326b97f41290d9d17504a1ee4dc313a7667b9c"}, - {file = "shapely-2.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:71eb736ef2843f23473c6e37f6180f90f0a35d740ab284321548edf4e55d9a52"}, - {file = "shapely-2.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:881eb9dbbb4a6419667e91fcb20313bfc1e67f53dbb392c6840ff04793571ed1"}, - {file = "shapely-2.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f10d2ccf0554fc0e39fad5886c839e47e207f99fdf09547bc687a2330efda35b"}, - {file = "shapely-2.0.3-cp310-cp310-win32.whl", hash = "sha256:6dfdc077a6fcaf74d3eab23a1ace5abc50c8bce56ac7747d25eab582c5a2990e"}, - {file = "shapely-2.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:64c5013dacd2d81b3bb12672098a0b2795c1bf8190cfc2980e380f5ef9d9e4d9"}, - {file = "shapely-2.0.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:56cee3e4e8159d6f2ce32e421445b8e23154fd02a0ac271d6a6c0b266a8e3cce"}, - {file = "shapely-2.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:619232c8276fded09527d2a9fd91a7885ff95c0ff9ecd5e3cb1e34fbb676e2ae"}, - {file = "shapely-2.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b2a7d256db6f5b4b407dc0c98dd1b2fcf1c9c5814af9416e5498d0a2e4307a4b"}, - {file = "shapely-2.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e45f0c8cd4583647db3216d965d49363e6548c300c23fd7e57ce17a03f824034"}, - {file = "shapely-2.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13cb37d3826972a82748a450328fe02a931dcaed10e69a4d83cc20ba021bc85f"}, - {file = "shapely-2.0.3-cp311-cp311-win32.whl", hash = "sha256:9302d7011e3e376d25acd30d2d9e70d315d93f03cc748784af19b00988fc30b1"}, - {file = "shapely-2.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:6b464f2666b13902835f201f50e835f2f153f37741db88f68c7f3b932d3505fa"}, - {file = "shapely-2.0.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:e86e7cb8e331a4850e0c2a8b2d66dc08d7a7b301b8d1d34a13060e3a5b4b3b55"}, - {file = "shapely-2.0.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c91981c99ade980fc49e41a544629751a0ccd769f39794ae913e53b07b2f78b9"}, - {file = "shapely-2.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bd45d456983dc60a42c4db437496d3f08a4201fbf662b69779f535eb969660af"}, - {file = "shapely-2.0.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:882fb1ffc7577e88c1194f4f1757e277dc484ba096a3b94844319873d14b0f2d"}, - {file = "shapely-2.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b9f2d93bff2ea52fa93245798cddb479766a18510ea9b93a4fb9755c79474889"}, - {file = "shapely-2.0.3-cp312-cp312-win32.whl", hash = "sha256:99abad1fd1303b35d991703432c9481e3242b7b3a393c186cfb02373bf604004"}, - {file = "shapely-2.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:6f555fe3304a1f40398977789bc4fe3c28a11173196df9ece1e15c5bc75a48db"}, - {file = "shapely-2.0.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a983cc418c1fa160b7d797cfef0e0c9f8c6d5871e83eae2c5793fce6a837fad9"}, - {file = "shapely-2.0.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18bddb8c327f392189a8d5d6b9a858945722d0bb95ccbd6a077b8e8fc4c7890d"}, - {file = "shapely-2.0.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:442f4dcf1eb58c5a4e3428d88e988ae153f97ab69a9f24e07bf4af8038536325"}, - {file = "shapely-2.0.3-cp37-cp37m-win32.whl", hash = "sha256:31a40b6e3ab00a4fd3a1d44efb2482278642572b8e0451abdc8e0634b787173e"}, - {file = "shapely-2.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:59b16976c2473fec85ce65cc9239bef97d4205ab3acead4e6cdcc72aee535679"}, - {file = "shapely-2.0.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:705efbce1950a31a55b1daa9c6ae1c34f1296de71ca8427974ec2f27d57554e3"}, - {file = "shapely-2.0.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:601c5c0058a6192df704cb889439f64994708563f57f99574798721e9777a44b"}, - {file = "shapely-2.0.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f24ecbb90a45c962b3b60d8d9a387272ed50dc010bfe605f1d16dfc94772d8a1"}, - {file = "shapely-2.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8c2a2989222c6062f7a0656e16276c01bb308bc7e5d999e54bf4e294ce62e76"}, - {file = "shapely-2.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42bceb9bceb3710a774ce04908fda0f28b291323da2688f928b3f213373b5aee"}, - {file = "shapely-2.0.3-cp38-cp38-win32.whl", hash = "sha256:54d925c9a311e4d109ec25f6a54a8bd92cc03481a34ae1a6a92c1fe6729b7e01"}, - {file = "shapely-2.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:300d203b480a4589adefff4c4af0b13919cd6d760ba3cbb1e56275210f96f654"}, - {file = "shapely-2.0.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:083d026e97b6c1f4a9bd2a9171c7692461092ed5375218170d91705550eecfd5"}, - {file = "shapely-2.0.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:27b6e1910094d93e9627f2664121e0e35613262fc037051680a08270f6058daf"}, - {file = "shapely-2.0.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:71b2de56a9e8c0e5920ae5ddb23b923490557ac50cb0b7fa752761bf4851acde"}, - {file = "shapely-2.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d279e56bbb68d218d63f3efc80c819cedcceef0e64efbf058a1df89dc57201b"}, - {file = "shapely-2.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88566d01a30f0453f7d038db46bc83ce125e38e47c5f6bfd4c9c287010e9bf74"}, - {file = "shapely-2.0.3-cp39-cp39-win32.whl", hash = "sha256:58afbba12c42c6ed44c4270bc0e22f3dadff5656d711b0ad335c315e02d04707"}, - {file = "shapely-2.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:5026b30433a70911979d390009261b8c4021ff87c7c3cbd825e62bb2ffa181bc"}, - {file = "shapely-2.0.3.tar.gz", hash = "sha256:4d65d0aa7910af71efa72fd6447e02a8e5dd44da81a983de9d736d6e6ccbe674"}, + {file = "shapely-2.0.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:011b77153906030b795791f2fdfa2d68f1a8d7e40bce78b029782ade3afe4f2f"}, + {file = "shapely-2.0.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9831816a5d34d5170aa9ed32a64982c3d6f4332e7ecfe62dc97767e163cb0b17"}, + {file = "shapely-2.0.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5c4849916f71dc44e19ed370421518c0d86cf73b26e8656192fcfcda08218fbd"}, + {file = "shapely-2.0.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:841f93a0e31e4c64d62ea570d81c35de0f6cea224568b2430d832967536308e6"}, + {file = "shapely-2.0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b4431f522b277c79c34b65da128029a9955e4481462cbf7ebec23aab61fc58"}, + {file = "shapely-2.0.4-cp310-cp310-win32.whl", hash = "sha256:92a41d936f7d6743f343be265ace93b7c57f5b231e21b9605716f5a47c2879e7"}, + {file = "shapely-2.0.4-cp310-cp310-win_amd64.whl", hash = "sha256:30982f79f21bb0ff7d7d4a4e531e3fcaa39b778584c2ce81a147f95be1cd58c9"}, + {file = "shapely-2.0.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:de0205cb21ad5ddaef607cda9a3191eadd1e7a62a756ea3a356369675230ac35"}, + {file = "shapely-2.0.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7d56ce3e2a6a556b59a288771cf9d091470116867e578bebced8bfc4147fbfd7"}, + {file = "shapely-2.0.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:58b0ecc505bbe49a99551eea3f2e8a9b3b24b3edd2a4de1ac0dc17bc75c9ec07"}, + {file = "shapely-2.0.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:790a168a808bd00ee42786b8ba883307c0e3684ebb292e0e20009588c426da47"}, + {file = "shapely-2.0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4310b5494271e18580d61022c0857eb85d30510d88606fa3b8314790df7f367d"}, + {file = "shapely-2.0.4-cp311-cp311-win32.whl", hash = "sha256:63f3a80daf4f867bd80f5c97fbe03314348ac1b3b70fb1c0ad255a69e3749879"}, + {file = "shapely-2.0.4-cp311-cp311-win_amd64.whl", hash = "sha256:c52ed79f683f721b69a10fb9e3d940a468203f5054927215586c5d49a072de8d"}, + {file = "shapely-2.0.4-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:5bbd974193e2cc274312da16b189b38f5f128410f3377721cadb76b1e8ca5328"}, + {file = "shapely-2.0.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:41388321a73ba1a84edd90d86ecc8bfed55e6a1e51882eafb019f45895ec0f65"}, + {file = "shapely-2.0.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0776c92d584f72f1e584d2e43cfc5542c2f3dd19d53f70df0900fda643f4bae6"}, + {file = "shapely-2.0.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c75c98380b1ede1cae9a252c6dc247e6279403fae38c77060a5e6186c95073ac"}, + {file = "shapely-2.0.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3e700abf4a37b7b8b90532fa6ed5c38a9bfc777098bc9fbae5ec8e618ac8f30"}, + {file = "shapely-2.0.4-cp312-cp312-win32.whl", hash = "sha256:4f2ab0faf8188b9f99e6a273b24b97662194160cc8ca17cf9d1fb6f18d7fb93f"}, + {file = "shapely-2.0.4-cp312-cp312-win_amd64.whl", hash = "sha256:03152442d311a5e85ac73b39680dd64a9892fa42bb08fd83b3bab4fe6999bfa0"}, + {file = "shapely-2.0.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:994c244e004bc3cfbea96257b883c90a86e8cbd76e069718eb4c6b222a56f78b"}, + {file = "shapely-2.0.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:05ffd6491e9e8958b742b0e2e7c346635033d0a5f1a0ea083547fcc854e5d5cf"}, + {file = "shapely-2.0.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fbdc1140a7d08faa748256438291394967aa54b40009f54e8d9825e75ef6113"}, + {file = "shapely-2.0.4-cp37-cp37m-win32.whl", hash = "sha256:5af4cd0d8cf2912bd95f33586600cac9c4b7c5053a036422b97cfe4728d2eb53"}, + {file = "shapely-2.0.4-cp37-cp37m-win_amd64.whl", hash = "sha256:464157509ce4efa5ff285c646a38b49f8c5ef8d4b340f722685b09bb033c5ccf"}, + {file = "shapely-2.0.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:489c19152ec1f0e5c5e525356bcbf7e532f311bff630c9b6bc2db6f04da6a8b9"}, + {file = "shapely-2.0.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b79bbd648664aa6f44ef018474ff958b6b296fed5c2d42db60078de3cffbc8aa"}, + {file = "shapely-2.0.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:674d7baf0015a6037d5758496d550fc1946f34bfc89c1bf247cabdc415d7747e"}, + {file = "shapely-2.0.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6cd4ccecc5ea5abd06deeaab52fcdba372f649728050c6143cc405ee0c166679"}, + {file = "shapely-2.0.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb5cdcbbe3080181498931b52a91a21a781a35dcb859da741c0345c6402bf00c"}, + {file = "shapely-2.0.4-cp38-cp38-win32.whl", hash = "sha256:55a38dcd1cee2f298d8c2ebc60fc7d39f3b4535684a1e9e2f39a80ae88b0cea7"}, + {file = "shapely-2.0.4-cp38-cp38-win_amd64.whl", hash = "sha256:ec555c9d0db12d7fd777ba3f8b75044c73e576c720a851667432fabb7057da6c"}, + {file = "shapely-2.0.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:3f9103abd1678cb1b5f7e8e1af565a652e036844166c91ec031eeb25c5ca8af0"}, + {file = "shapely-2.0.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:263bcf0c24d7a57c80991e64ab57cba7a3906e31d2e21b455f493d4aab534aaa"}, + {file = "shapely-2.0.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ddf4a9bfaac643e62702ed662afc36f6abed2a88a21270e891038f9a19bc08fc"}, + {file = "shapely-2.0.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:485246fcdb93336105c29a5cfbff8a226949db37b7473c89caa26c9bae52a242"}, + {file = "shapely-2.0.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8de4578e838a9409b5b134a18ee820730e507b2d21700c14b71a2b0757396acc"}, + {file = "shapely-2.0.4-cp39-cp39-win32.whl", hash = "sha256:9dab4c98acfb5fb85f5a20548b5c0abe9b163ad3525ee28822ffecb5c40e724c"}, + {file = "shapely-2.0.4-cp39-cp39-win_amd64.whl", hash = "sha256:31c19a668b5a1eadab82ff070b5a260478ac6ddad3a5b62295095174a8d26398"}, + {file = "shapely-2.0.4.tar.gz", hash = "sha256:5dc736127fac70009b8d309a0eeb74f3e08979e530cf7017f2f507ef62e6cfb8"}, ] [package.dependencies] -numpy = ">=1.14,<2" +numpy = ">=1.14,<3" [package.extras] docs = ["matplotlib", "numpydoc (==1.1.*)", "sphinx", "sphinx-book-theme", "sphinx-remove-toctrees"] @@ -4149,60 +4245,60 @@ test = ["pytest"] [[package]] name = "sqlalchemy" -version = "2.0.29" +version = "2.0.30" description = "Database Abstraction Library" optional = false python-versions = ">=3.7" files = [ - {file = "SQLAlchemy-2.0.29-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4c142852ae192e9fe5aad5c350ea6befe9db14370b34047e1f0f7cf99e63c63b"}, - {file = "SQLAlchemy-2.0.29-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:99a1e69d4e26f71e750e9ad6fdc8614fbddb67cfe2173a3628a2566034e223c7"}, - {file = "SQLAlchemy-2.0.29-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ef3fbccb4058355053c51b82fd3501a6e13dd808c8d8cd2561e610c5456013c"}, - {file = "SQLAlchemy-2.0.29-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d6753305936eddc8ed190e006b7bb33a8f50b9854823485eed3a886857ab8d1"}, - {file = "SQLAlchemy-2.0.29-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0f3ca96af060a5250a8ad5a63699180bc780c2edf8abf96c58af175921df847a"}, - {file = "SQLAlchemy-2.0.29-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c4520047006b1d3f0d89e0532978c0688219857eb2fee7c48052560ae76aca1e"}, - {file = "SQLAlchemy-2.0.29-cp310-cp310-win32.whl", hash = "sha256:b2a0e3cf0caac2085ff172c3faacd1e00c376e6884b5bc4dd5b6b84623e29e4f"}, - {file = "SQLAlchemy-2.0.29-cp310-cp310-win_amd64.whl", hash = "sha256:01d10638a37460616708062a40c7b55f73e4d35eaa146781c683e0fa7f6c43fb"}, - {file = "SQLAlchemy-2.0.29-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:308ef9cb41d099099fffc9d35781638986870b29f744382904bf9c7dadd08513"}, - {file = "SQLAlchemy-2.0.29-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:296195df68326a48385e7a96e877bc19aa210e485fa381c5246bc0234c36c78e"}, - {file = "SQLAlchemy-2.0.29-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a13b917b4ffe5a0a31b83d051d60477819ddf18276852ea68037a144a506efb9"}, - {file = "SQLAlchemy-2.0.29-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f6d971255d9ddbd3189e2e79d743ff4845c07f0633adfd1de3f63d930dbe673"}, - {file = "SQLAlchemy-2.0.29-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:61405ea2d563407d316c63a7b5271ae5d274a2a9fbcd01b0aa5503635699fa1e"}, - {file = "SQLAlchemy-2.0.29-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:de7202ffe4d4a8c1e3cde1c03e01c1a3772c92858837e8f3879b497158e4cb44"}, - {file = "SQLAlchemy-2.0.29-cp311-cp311-win32.whl", hash = "sha256:b5d7ed79df55a731749ce65ec20d666d82b185fa4898430b17cb90c892741520"}, - {file = "SQLAlchemy-2.0.29-cp311-cp311-win_amd64.whl", hash = "sha256:205f5a2b39d7c380cbc3b5dcc8f2762fb5bcb716838e2d26ccbc54330775b003"}, - {file = "SQLAlchemy-2.0.29-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d96710d834a6fb31e21381c6d7b76ec729bd08c75a25a5184b1089141356171f"}, - {file = "SQLAlchemy-2.0.29-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:52de4736404e53c5c6a91ef2698c01e52333988ebdc218f14c833237a0804f1b"}, - {file = "SQLAlchemy-2.0.29-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c7b02525ede2a164c5fa5014915ba3591730f2cc831f5be9ff3b7fd3e30958e"}, - {file = "SQLAlchemy-2.0.29-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0dfefdb3e54cd15f5d56fd5ae32f1da2d95d78319c1f6dfb9bcd0eb15d603d5d"}, - {file = "SQLAlchemy-2.0.29-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a88913000da9205b13f6f195f0813b6ffd8a0c0c2bd58d499e00a30eb508870c"}, - {file = "SQLAlchemy-2.0.29-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fecd5089c4be1bcc37c35e9aa678938d2888845a134dd016de457b942cf5a758"}, - {file = "SQLAlchemy-2.0.29-cp312-cp312-win32.whl", hash = "sha256:8197d6f7a3d2b468861ebb4c9f998b9df9e358d6e1cf9c2a01061cb9b6cf4e41"}, - {file = "SQLAlchemy-2.0.29-cp312-cp312-win_amd64.whl", hash = "sha256:9b19836ccca0d321e237560e475fd99c3d8655d03da80c845c4da20dda31b6e1"}, - {file = "SQLAlchemy-2.0.29-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:87a1d53a5382cdbbf4b7619f107cc862c1b0a4feb29000922db72e5a66a5ffc0"}, - {file = "SQLAlchemy-2.0.29-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2a0732dffe32333211801b28339d2a0babc1971bc90a983e3035e7b0d6f06b93"}, - {file = "SQLAlchemy-2.0.29-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90453597a753322d6aa770c5935887ab1fc49cc4c4fdd436901308383d698b4b"}, - {file = "SQLAlchemy-2.0.29-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:ea311d4ee9a8fa67f139c088ae9f905fcf0277d6cd75c310a21a88bf85e130f5"}, - {file = "SQLAlchemy-2.0.29-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:5f20cb0a63a3e0ec4e169aa8890e32b949c8145983afa13a708bc4b0a1f30e03"}, - {file = "SQLAlchemy-2.0.29-cp37-cp37m-win32.whl", hash = "sha256:e5bbe55e8552019c6463709b39634a5fc55e080d0827e2a3a11e18eb73f5cdbd"}, - {file = "SQLAlchemy-2.0.29-cp37-cp37m-win_amd64.whl", hash = "sha256:c2f9c762a2735600654c654bf48dad388b888f8ce387b095806480e6e4ff6907"}, - {file = "SQLAlchemy-2.0.29-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7e614d7a25a43a9f54fcce4675c12761b248547f3d41b195e8010ca7297c369c"}, - {file = "SQLAlchemy-2.0.29-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:471fcb39c6adf37f820350c28aac4a7df9d3940c6548b624a642852e727ea586"}, - {file = "SQLAlchemy-2.0.29-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:988569c8732f54ad3234cf9c561364221a9e943b78dc7a4aaf35ccc2265f1930"}, - {file = "SQLAlchemy-2.0.29-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dddaae9b81c88083e6437de95c41e86823d150f4ee94bf24e158a4526cbead01"}, - {file = "SQLAlchemy-2.0.29-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:334184d1ab8f4c87f9652b048af3f7abea1c809dfe526fb0435348a6fef3d380"}, - {file = "SQLAlchemy-2.0.29-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:38b624e5cf02a69b113c8047cf7f66b5dfe4a2ca07ff8b8716da4f1b3ae81567"}, - {file = "SQLAlchemy-2.0.29-cp38-cp38-win32.whl", hash = "sha256:bab41acf151cd68bc2b466deae5deeb9e8ae9c50ad113444151ad965d5bf685b"}, - {file = "SQLAlchemy-2.0.29-cp38-cp38-win_amd64.whl", hash = "sha256:52c8011088305476691b8750c60e03b87910a123cfd9ad48576d6414b6ec2a1d"}, - {file = "SQLAlchemy-2.0.29-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3071ad498896907a5ef756206b9dc750f8e57352113c19272bdfdc429c7bd7de"}, - {file = "SQLAlchemy-2.0.29-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:dba622396a3170974f81bad49aacebd243455ec3cc70615aeaef9e9613b5bca5"}, - {file = "SQLAlchemy-2.0.29-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b184e3de58009cc0bf32e20f137f1ec75a32470f5fede06c58f6c355ed42a72"}, - {file = "SQLAlchemy-2.0.29-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c37f1050feb91f3d6c32f864d8e114ff5545a4a7afe56778d76a9aec62638ba"}, - {file = "SQLAlchemy-2.0.29-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bda7ce59b06d0f09afe22c56714c65c957b1068dee3d5e74d743edec7daba552"}, - {file = "SQLAlchemy-2.0.29-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:25664e18bef6dc45015b08f99c63952a53a0a61f61f2e48a9e70cec27e55f699"}, - {file = "SQLAlchemy-2.0.29-cp39-cp39-win32.whl", hash = "sha256:77d29cb6c34b14af8a484e831ab530c0f7188f8efed1c6a833a2c674bf3c26ec"}, - {file = "SQLAlchemy-2.0.29-cp39-cp39-win_amd64.whl", hash = "sha256:04c487305ab035a9548f573763915189fc0fe0824d9ba28433196f8436f1449c"}, - {file = "SQLAlchemy-2.0.29-py3-none-any.whl", hash = "sha256:dc4ee2d4ee43251905f88637d5281a8d52e916a021384ec10758826f5cbae305"}, - {file = "SQLAlchemy-2.0.29.tar.gz", hash = "sha256:bd9566b8e58cabd700bc367b60e90d9349cd16f0984973f98a9a09f9c64e86f0"}, + {file = "SQLAlchemy-2.0.30-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3b48154678e76445c7ded1896715ce05319f74b1e73cf82d4f8b59b46e9c0ddc"}, + {file = "SQLAlchemy-2.0.30-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2753743c2afd061bb95a61a51bbb6a1a11ac1c44292fad898f10c9839a7f75b2"}, + {file = "SQLAlchemy-2.0.30-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a7bfc726d167f425d4c16269a9a10fe8630ff6d14b683d588044dcef2d0f6be7"}, + {file = "SQLAlchemy-2.0.30-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c4f61ada6979223013d9ab83a3ed003ded6959eae37d0d685db2c147e9143797"}, + {file = "SQLAlchemy-2.0.30-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3a365eda439b7a00732638f11072907c1bc8e351c7665e7e5da91b169af794af"}, + {file = "SQLAlchemy-2.0.30-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bba002a9447b291548e8d66fd8c96a6a7ed4f2def0bb155f4f0a1309fd2735d5"}, + {file = "SQLAlchemy-2.0.30-cp310-cp310-win32.whl", hash = "sha256:0138c5c16be3600923fa2169532205d18891b28afa817cb49b50e08f62198bb8"}, + {file = "SQLAlchemy-2.0.30-cp310-cp310-win_amd64.whl", hash = "sha256:99650e9f4cf3ad0d409fed3eec4f071fadd032e9a5edc7270cd646a26446feeb"}, + {file = "SQLAlchemy-2.0.30-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:955991a09f0992c68a499791a753523f50f71a6885531568404fa0f231832aa0"}, + {file = "SQLAlchemy-2.0.30-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f69e4c756ee2686767eb80f94c0125c8b0a0b87ede03eacc5c8ae3b54b99dc46"}, + {file = "SQLAlchemy-2.0.30-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69c9db1ce00e59e8dd09d7bae852a9add716efdc070a3e2068377e6ff0d6fdaa"}, + {file = "SQLAlchemy-2.0.30-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a1429a4b0f709f19ff3b0cf13675b2b9bfa8a7e79990003207a011c0db880a13"}, + {file = "SQLAlchemy-2.0.30-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:efedba7e13aa9a6c8407c48facfdfa108a5a4128e35f4c68f20c3407e4376aa9"}, + {file = "SQLAlchemy-2.0.30-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:16863e2b132b761891d6c49f0a0f70030e0bcac4fd208117f6b7e053e68668d0"}, + {file = "SQLAlchemy-2.0.30-cp311-cp311-win32.whl", hash = "sha256:2ecabd9ccaa6e914e3dbb2aa46b76dede7eadc8cbf1b8083c94d936bcd5ffb49"}, + {file = "SQLAlchemy-2.0.30-cp311-cp311-win_amd64.whl", hash = "sha256:0b3f4c438e37d22b83e640f825ef0f37b95db9aa2d68203f2c9549375d0b2260"}, + {file = "SQLAlchemy-2.0.30-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5a79d65395ac5e6b0c2890935bad892eabb911c4aa8e8015067ddb37eea3d56c"}, + {file = "SQLAlchemy-2.0.30-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9a5baf9267b752390252889f0c802ea13b52dfee5e369527da229189b8bd592e"}, + {file = "SQLAlchemy-2.0.30-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3cb5a646930c5123f8461f6468901573f334c2c63c795b9af350063a736d0134"}, + {file = "SQLAlchemy-2.0.30-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:296230899df0b77dec4eb799bcea6fbe39a43707ce7bb166519c97b583cfcab3"}, + {file = "SQLAlchemy-2.0.30-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c62d401223f468eb4da32627bffc0c78ed516b03bb8a34a58be54d618b74d472"}, + {file = "SQLAlchemy-2.0.30-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:3b69e934f0f2b677ec111b4d83f92dc1a3210a779f69bf905273192cf4ed433e"}, + {file = "SQLAlchemy-2.0.30-cp312-cp312-win32.whl", hash = "sha256:77d2edb1f54aff37e3318f611637171e8ec71472f1fdc7348b41dcb226f93d90"}, + {file = "SQLAlchemy-2.0.30-cp312-cp312-win_amd64.whl", hash = "sha256:b6c7ec2b1f4969fc19b65b7059ed00497e25f54069407a8701091beb69e591a5"}, + {file = "SQLAlchemy-2.0.30-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5a8e3b0a7e09e94be7510d1661339d6b52daf202ed2f5b1f9f48ea34ee6f2d57"}, + {file = "SQLAlchemy-2.0.30-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b60203c63e8f984df92035610c5fb76d941254cf5d19751faab7d33b21e5ddc0"}, + {file = "SQLAlchemy-2.0.30-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f1dc3eabd8c0232ee8387fbe03e0a62220a6f089e278b1f0aaf5e2d6210741ad"}, + {file = "SQLAlchemy-2.0.30-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:40ad017c672c00b9b663fcfcd5f0864a0a97828e2ee7ab0c140dc84058d194cf"}, + {file = "SQLAlchemy-2.0.30-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e42203d8d20dc704604862977b1470a122e4892791fe3ed165f041e4bf447a1b"}, + {file = "SQLAlchemy-2.0.30-cp37-cp37m-win32.whl", hash = "sha256:2a4f4da89c74435f2bc61878cd08f3646b699e7d2eba97144030d1be44e27584"}, + {file = "SQLAlchemy-2.0.30-cp37-cp37m-win_amd64.whl", hash = "sha256:b6bf767d14b77f6a18b6982cbbf29d71bede087edae495d11ab358280f304d8e"}, + {file = "SQLAlchemy-2.0.30-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bc0c53579650a891f9b83fa3cecd4e00218e071d0ba00c4890f5be0c34887ed3"}, + {file = "SQLAlchemy-2.0.30-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:311710f9a2ee235f1403537b10c7687214bb1f2b9ebb52702c5aa4a77f0b3af7"}, + {file = "SQLAlchemy-2.0.30-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:408f8b0e2c04677e9c93f40eef3ab22f550fecb3011b187f66a096395ff3d9fd"}, + {file = "SQLAlchemy-2.0.30-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37a4b4fb0dd4d2669070fb05b8b8824afd0af57587393015baee1cf9890242d9"}, + {file = "SQLAlchemy-2.0.30-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:a943d297126c9230719c27fcbbeab57ecd5d15b0bd6bfd26e91bfcfe64220621"}, + {file = "SQLAlchemy-2.0.30-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:0a089e218654e740a41388893e090d2e2c22c29028c9d1353feb38638820bbeb"}, + {file = "SQLAlchemy-2.0.30-cp38-cp38-win32.whl", hash = "sha256:fa561138a64f949f3e889eb9ab8c58e1504ab351d6cf55259dc4c248eaa19da6"}, + {file = "SQLAlchemy-2.0.30-cp38-cp38-win_amd64.whl", hash = "sha256:7d74336c65705b986d12a7e337ba27ab2b9d819993851b140efdf029248e818e"}, + {file = "SQLAlchemy-2.0.30-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ae8c62fe2480dd61c532ccafdbce9b29dacc126fe8be0d9a927ca3e699b9491a"}, + {file = "SQLAlchemy-2.0.30-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2383146973a15435e4717f94c7509982770e3e54974c71f76500a0136f22810b"}, + {file = "SQLAlchemy-2.0.30-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8409de825f2c3b62ab15788635ccaec0c881c3f12a8af2b12ae4910a0a9aeef6"}, + {file = "SQLAlchemy-2.0.30-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0094c5dc698a5f78d3d1539853e8ecec02516b62b8223c970c86d44e7a80f6c7"}, + {file = "SQLAlchemy-2.0.30-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:edc16a50f5e1b7a06a2dcc1f2205b0b961074c123ed17ebda726f376a5ab0953"}, + {file = "SQLAlchemy-2.0.30-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:f7703c2010355dd28f53deb644a05fc30f796bd8598b43f0ba678878780b6e4c"}, + {file = "SQLAlchemy-2.0.30-cp39-cp39-win32.whl", hash = "sha256:1f9a727312ff6ad5248a4367358e2cf7e625e98b1028b1d7ab7b806b7d757513"}, + {file = "SQLAlchemy-2.0.30-cp39-cp39-win_amd64.whl", hash = "sha256:a0ef36b28534f2a5771191be6edb44cc2673c7b2edf6deac6562400288664221"}, + {file = "SQLAlchemy-2.0.30-py3-none-any.whl", hash = "sha256:7108d569d3990c71e26a42f60474b4c02c8586c4681af5fd67e51a044fdea86a"}, + {file = "SQLAlchemy-2.0.30.tar.gz", hash = "sha256:2b1708916730f4830bc69d6f49d37f7698b5bd7530aca7f04f785f8849e95255"}, ] [package.dependencies] @@ -4296,44 +4392,44 @@ files = [ [[package]] name = "tomlkit" -version = "0.12.4" +version = "0.12.5" description = "Style preserving TOML library" optional = false python-versions = ">=3.7" files = [ - {file = "tomlkit-0.12.4-py3-none-any.whl", hash = "sha256:5cd82d48a3dd89dee1f9d64420aa20ae65cfbd00668d6f094d7578a78efbb77b"}, - {file = "tomlkit-0.12.4.tar.gz", hash = "sha256:7ca1cfc12232806517a8515047ba66a19369e71edf2439d0f5824f91032b6cc3"}, + {file = "tomlkit-0.12.5-py3-none-any.whl", hash = "sha256:af914f5a9c59ed9d0762c7b64d3b5d5df007448eb9cd2edc8a46b1eafead172f"}, + {file = "tomlkit-0.12.5.tar.gz", hash = "sha256:eef34fba39834d4d6b73c9ba7f3e4d1c417a4e56f89a7e96e090dd0d24b8fb3c"}, ] [[package]] name = "tornado" -version = "6.4" +version = "6.4.1" description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." optional = false -python-versions = ">= 3.8" +python-versions = ">=3.8" files = [ - {file = "tornado-6.4-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:02ccefc7d8211e5a7f9e8bc3f9e5b0ad6262ba2fbb683a6443ecc804e5224ce0"}, - {file = "tornado-6.4-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:27787de946a9cffd63ce5814c33f734c627a87072ec7eed71f7fc4417bb16263"}, - {file = "tornado-6.4-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7894c581ecdcf91666a0912f18ce5e757213999e183ebfc2c3fdbf4d5bd764e"}, - {file = "tornado-6.4-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e43bc2e5370a6a8e413e1e1cd0c91bedc5bd62a74a532371042a18ef19e10579"}, - {file = "tornado-6.4-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0251554cdd50b4b44362f73ad5ba7126fc5b2c2895cc62b14a1c2d7ea32f212"}, - {file = "tornado-6.4-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:fd03192e287fbd0899dd8f81c6fb9cbbc69194d2074b38f384cb6fa72b80e9c2"}, - {file = "tornado-6.4-cp38-abi3-musllinux_1_1_i686.whl", hash = "sha256:88b84956273fbd73420e6d4b8d5ccbe913c65d31351b4c004ae362eba06e1f78"}, - {file = "tornado-6.4-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:71ddfc23a0e03ef2df1c1397d859868d158c8276a0603b96cf86892bff58149f"}, - {file = "tornado-6.4-cp38-abi3-win32.whl", hash = "sha256:6f8a6c77900f5ae93d8b4ae1196472d0ccc2775cc1dfdc9e7727889145c45052"}, - {file = "tornado-6.4-cp38-abi3-win_amd64.whl", hash = "sha256:10aeaa8006333433da48dec9fe417877f8bcc21f48dda8d661ae79da357b2a63"}, - {file = "tornado-6.4.tar.gz", hash = "sha256:72291fa6e6bc84e626589f1c29d90a5a6d593ef5ae68052ee2ef000dfd273dee"}, + {file = "tornado-6.4.1-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:163b0aafc8e23d8cdc3c9dfb24c5368af84a81e3364745ccb4427669bf84aec8"}, + {file = "tornado-6.4.1-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6d5ce3437e18a2b66fbadb183c1d3364fb03f2be71299e7d10dbeeb69f4b2a14"}, + {file = "tornado-6.4.1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2e20b9113cd7293f164dc46fffb13535266e713cdb87bd2d15ddb336e96cfc4"}, + {file = "tornado-6.4.1-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ae50a504a740365267b2a8d1a90c9fbc86b780a39170feca9bcc1787ff80842"}, + {file = "tornado-6.4.1-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:613bf4ddf5c7a95509218b149b555621497a6cc0d46ac341b30bd9ec19eac7f3"}, + {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:25486eb223babe3eed4b8aecbac33b37e3dd6d776bc730ca14e1bf93888b979f"}, + {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:454db8a7ecfcf2ff6042dde58404164d969b6f5d58b926da15e6b23817950fc4"}, + {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a02a08cc7a9314b006f653ce40483b9b3c12cda222d6a46d4ac63bb6c9057698"}, + {file = "tornado-6.4.1-cp38-abi3-win32.whl", hash = "sha256:d9a566c40b89757c9aa8e6f032bcdb8ca8795d7c1a9762910c722b1635c9de4d"}, + {file = "tornado-6.4.1-cp38-abi3-win_amd64.whl", hash = "sha256:b24b8982ed444378d7f21d563f4180a2de31ced9d8d84443907a0a64da2072e7"}, + {file = "tornado-6.4.1.tar.gz", hash = "sha256:92d3ab53183d8c50f8204a51e6f91d18a15d5ef261e84d452800d4ff6fc504e9"}, ] [[package]] name = "tqdm" -version = "4.66.2" +version = "4.66.4" description = "Fast, Extensible Progress Meter" optional = false python-versions = ">=3.7" files = [ - {file = "tqdm-4.66.2-py3-none-any.whl", hash = "sha256:1ee4f8a893eb9bef51c6e35730cebf234d5d0b6bd112b0271e10ed7c24a02bd9"}, - {file = "tqdm-4.66.2.tar.gz", hash = "sha256:6cd52cdf0fef0e0f543299cfc96fec90d7b8a7e88745f411ec33eb44d5ed3531"}, + {file = "tqdm-4.66.4-py3-none-any.whl", hash = "sha256:b75ca56b413b030bc3f00af51fd2c1a1a5eac6a0c1cca83cbb37a5c52abce644"}, + {file = "tqdm-4.66.4.tar.gz", hash = "sha256:e4d936c9de8727928f3be6079590e97d9abfe8d39a590be678eb5919ffc186bb"}, ] [package.dependencies] @@ -4347,50 +4443,50 @@ telegram = ["requests"] [[package]] name = "traitlets" -version = "5.14.2" +version = "5.14.3" description = "Traitlets Python configuration system" optional = false python-versions = ">=3.8" files = [ - {file = "traitlets-5.14.2-py3-none-any.whl", hash = "sha256:fcdf85684a772ddeba87db2f398ce00b40ff550d1528c03c14dbf6a02003cd80"}, - {file = "traitlets-5.14.2.tar.gz", hash = "sha256:8cdd83c040dab7d1dee822678e5f5d100b514f7b72b01615b26fc5718916fdf9"}, + {file = "traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f"}, + {file = "traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7"}, ] [package.extras] docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"] -test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0,<8.1)", "pytest-mock", "pytest-mypy-testing"] +test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0,<8.2)", "pytest-mock", "pytest-mypy-testing"] [[package]] name = "types-awscrt" -version = "0.20.5" +version = "0.20.12" description = "Type annotations and code completion for awscrt" optional = false -python-versions = ">=3.7,<4.0" +python-versions = "<4.0,>=3.7" files = [ - {file = "types_awscrt-0.20.5-py3-none-any.whl", hash = "sha256:79d5bfb01f64701b6cf442e89a37d9c4dc6dbb79a46f2f611739b2418d30ecfd"}, - {file = "types_awscrt-0.20.5.tar.gz", hash = "sha256:61811bbf4de95248939f9276a434be93d2b95f6ccfe8aa94e56999e9778cfcc2"}, + {file = "types_awscrt-0.20.12-py3-none-any.whl", hash = "sha256:521ce54cc4dad9fe6480556bb0f8315a508106938ba1f2a0baccfcea7d4a4dee"}, + {file = "types_awscrt-0.20.12.tar.gz", hash = "sha256:0beabdde0205dc1da679ea464fd3f98b570ef4f0fc825b155a974fb51b21e8d9"}, ] [[package]] name = "types-s3transfer" -version = "0.10.0" +version = "0.10.1" description = "Type annotations and code completion for s3transfer" optional = false -python-versions = ">=3.7,<4.0" +python-versions = "<4.0,>=3.8" files = [ - {file = "types_s3transfer-0.10.0-py3-none-any.whl", hash = "sha256:44fcdf0097b924a9aab1ee4baa1179081a9559ca62a88c807e2b256893ce688f"}, - {file = "types_s3transfer-0.10.0.tar.gz", hash = "sha256:35e4998c25df7f8985ad69dedc8e4860e8af3b43b7615e940d53c00d413bdc69"}, + {file = "types_s3transfer-0.10.1-py3-none-any.whl", hash = "sha256:49a7c81fa609ac1532f8de3756e64b58afcecad8767933310228002ec7adff74"}, + {file = "types_s3transfer-0.10.1.tar.gz", hash = "sha256:02154cce46528287ad76ad1a0153840e0492239a0887e8833466eccf84b98da0"}, ] [[package]] name = "typing-extensions" -version = "4.10.0" +version = "4.12.2" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" files = [ - {file = "typing_extensions-4.10.0-py3-none-any.whl", hash = "sha256:69b1a937c3a517342112fb4c6df7e72fc39a38e7891a5730ed4985b5214b5475"}, - {file = "typing_extensions-4.10.0.tar.gz", hash = "sha256:b0abd7c89e8fb96f98db18d86106ff1d90ab692004eb746cf6eda2682f91b3cb"}, + {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, + {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, ] [[package]] @@ -4420,18 +4516,18 @@ test = ["coverage", "pytest", "pytest-cov"] [[package]] name = "urllib3" -version = "2.0.7" +version = "2.2.2" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "urllib3-2.0.7-py3-none-any.whl", hash = "sha256:fdb6d215c776278489906c2f8916e6e7d4f5a9b602ccbcfdf7f016fc8da0596e"}, - {file = "urllib3-2.0.7.tar.gz", hash = "sha256:c97dfde1f7bd43a71c8d2a58e369e9b2bf692d1334ea9f9cae55add7d0dd0f84"}, + {file = "urllib3-2.2.2-py3-none-any.whl", hash = "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472"}, + {file = "urllib3-2.2.2.tar.gz", hash = "sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168"}, ] [package.extras] brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] -secure = ["certifi", "cryptography (>=1.9)", "idna (>=2.0.0)", "pyopenssl (>=17.1.0)", "urllib3-secure-extra"] +h2 = ["h2 (>=4,<5)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] @@ -4446,6 +4542,23 @@ files = [ {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, ] +[[package]] +name = "werkzeug" +version = "3.0.3" +description = "The comprehensive WSGI web application library." +optional = false +python-versions = ">=3.8" +files = [ + {file = "werkzeug-3.0.3-py3-none-any.whl", hash = "sha256:fc9645dc43e03e4d630d23143a04a7f947a9a3b5727cd535fdfe155a17cc48c8"}, + {file = "werkzeug-3.0.3.tar.gz", hash = "sha256:097e5bfda9f0aba8da6b8545146def481d06aa7d3266e7448e2cccf67dd8bd18"}, +] + +[package.dependencies] +MarkupSafe = ">=2.1.1" + +[package.extras] +watchdog = ["watchdog (>=2.3)"] + [[package]] name = "wheel" version = "0.43.0" @@ -4539,15 +4652,26 @@ files = [ {file = "wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d"}, ] +[[package]] +name = "xmltodict" +version = "0.13.0" +description = "Makes working with XML feel like you are working with JSON" +optional = false +python-versions = ">=3.4" +files = [ + {file = "xmltodict-0.13.0-py2.py3-none-any.whl", hash = "sha256:aa89e8fd76320154a40d19a0df04a4695fb9dc5ba977cbb68ab3e4eb225e7852"}, + {file = "xmltodict-0.13.0.tar.gz", hash = "sha256:341595a488e3e01a85a9d8911d8912fd922ede5fecc4dce437eb4b6c8d037e56"}, +] + [[package]] name = "xyzservices" -version = "2024.4.0" +version = "2024.6.0" description = "Source of XYZ tiles providers" optional = false python-versions = ">=3.8" files = [ - {file = "xyzservices-2024.4.0-py3-none-any.whl", hash = "sha256:b83e48c5b776c9969fffcfff57b03d02b1b1cd6607a9d9c4e7f568b01ef47f4c"}, - {file = "xyzservices-2024.4.0.tar.gz", hash = "sha256:6a04f11487a6fb77d92a98984cd107fbd9157fd5e65f929add9c3d6e604ee88c"}, + {file = "xyzservices-2024.6.0-py3-none-any.whl", hash = "sha256:fecb2508f0f2b71c819aecf5df2c03cef001c56a4b49302e640f3b34710d25e4"}, + {file = "xyzservices-2024.6.0.tar.gz", hash = "sha256:58c1bdab4257d2551b9ef91cd48571f77b7c4d2bc45bf5e3c05ac97b3a4d7282"}, ] [[package]] @@ -4655,20 +4779,20 @@ multidict = ">=4.0" [[package]] name = "zipp" -version = "3.18.1" +version = "3.19.2" description = "Backport of pathlib-compatible object wrapper for zip files" optional = false python-versions = ">=3.8" files = [ - {file = "zipp-3.18.1-py3-none-any.whl", hash = "sha256:206f5a15f2af3dbaee80769fb7dc6f249695e940acca08dfb2a4769fe61e538b"}, - {file = "zipp-3.18.1.tar.gz", hash = "sha256:2884ed22e7d8961de1c9a05142eb69a247f120291bc0206a00a7642f09b5b715"}, + {file = "zipp-3.19.2-py3-none-any.whl", hash = "sha256:f091755f667055f2d02b32c53771a7a6c8b47e1fdbc4b72a8b9072b3eef8015c"}, + {file = "zipp-3.19.2.tar.gz", hash = "sha256:bf1dcf6450f873a13e952a29504887c89e6de7506209e5b1bcc3460135d4de19"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy", "pytest-ruff (>=0.2.1)"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +test = ["big-O", "importlib-resources", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy", "pytest-ruff (>=0.2.1)"] [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "45c3fdb2de7f8e85d84f667c172bbc37470624638b57c720a176b1fa5896465c" +content-hash = "ef14a80a1386f0b2982a87100090fca2ce31a729c1477cd8902a8f2c0d5ee1fa" diff --git a/pyproject.toml b/pyproject.toml index 83ffd650..9868b908 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "hydrocron" -version = "1.2.0" +version = "1.3.0rc2" description = "OpenAPI access to Time Series data for SWOT features" authors = ["PO.DAAC "] license = "Apache-2.0" @@ -18,13 +18,15 @@ packages = [ python = "^3.10" six = "^1.16.0" boto3 = "^1.28.2" -pymysql = "^1.1.0" +pymysql = "^1.1.1" geopandas = "^0.13.2" earthaccess = "^0.5.3" shapely = "^2.0.1" -cryptography = "42.0.0" +cryptography = "42.0.8" python-dotenv = "^1.0.0" geojson = "^3.1.0" +accept-types = "^0.4.1" +moto = "^5.0.9" [tool.poetry.group.dev.dependencies] pytest = "^7.4.0" diff --git a/terraform/.terraform.lock.hcl b/terraform/.terraform.lock.hcl index 1ec5dce8..a5859767 100644 --- a/terraform/.terraform.lock.hcl +++ b/terraform/.terraform.lock.hcl @@ -3,8 +3,9 @@ provider "registry.terraform.io/hashicorp/aws" { version = "4.67.0" - constraints = ">= 3.45.0, ~> 4.0" + constraints = "~> 4.0" hashes = [ + "h1:5Zfo3GfRSWBaXs4TGQNOflr1XaYj6pRnVJLX5VAjFX4=", "h1:dCRc4GqsyfqHEMjgtlM1EympBcgTmcTkWaJmtd91+KA=", "zh:0843017ecc24385f2b45f2c5fce79dc25b258e50d516877b3affee3bef34f060", "zh:19876066cfa60de91834ec569a6448dab8c2518b8a71b5ca870b2444febddac6", @@ -27,6 +28,7 @@ provider "registry.terraform.io/hashicorp/aws" { provider "registry.terraform.io/hashicorp/null" { version = "3.2.2" hashes = [ + "h1:IMVAUHKoydFrlPrl9OzasDnw/8ntZFerCC9iXw1rXQY=", "h1:zT1ZbegaAYHwQa+QwIFugArWikRJI9dqohj8xb0GY88=", "zh:3248aae6a2198f3ec8394218d05bd5e42be59f43a3a7c0b71c66ec0df08b69e7", "zh:32b1aaa1c3013d33c245493f4a65465eab9436b454d250102729321a44c8ab9a", diff --git a/terraform/api-specification-templates/hydrocron_aws_api.yml b/terraform/api-specification-templates/hydrocron_aws_api.yml index ad70ab76..b4bb23b0 100644 --- a/terraform/api-specification-templates/hydrocron_aws_api.yml +++ b/terraform/api-specification-templates/hydrocron_aws_api.yml @@ -12,11 +12,13 @@ paths: summary: "Get Timeseries for a particular Reach, Node, or LakeID" description: "Get Timeseries for a particular Reach, Node, or LakeID" operationId: timeseries_get + security: + - ${authorizer_name}: [] parameters: - name: feature in: query description: Type of feature being requested - required: false + required: true style: form explode: true schema: @@ -66,13 +68,21 @@ paths: - name: fields in: query description: Format of the data returned - required: false + required: true style: form explode: true schema: type: string default: feature_id, time_str, wse, geometry example: feature_id, time_str, wse, geometry + - name: compact + in: query + description: Whether to return a compact GeoJSON response + required: false + schema: + type: boolean + default: false + example: true responses: "200": description: OK @@ -83,10 +93,13 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/geojson' + $ref: '#/components/schemas/json' text/csv: schema: $ref: '#/components/schemas/csv' + application/geo+json: + schema: + $ref: '#/components/schemas/geojson' "400": description: "400 error. The specified URL is invalid (does not exist)." content: @@ -111,6 +124,14 @@ paths: type: array items: type: string + "415": + description: "415 error. Your request includes an unsupported media type." + content: + text/csv: + schema: + type: array + items: + type: string x-openapi-router-controller: hydrocron_api.controllers.timeseries x-amazon-apigateway-integration: @@ -127,6 +148,18 @@ paths: #set($context.responseOverride.status = 206) #end $input.json('$') + application/geo+json: | + #set($inputRoot = $input.path('$')) + #if($inputRoot.toString().contains('206 PARTIAL CONTENT')) + #set($context.responseOverride.status = 206) + #end + $input.json('$') + text/csv: | + #set($inputRoot = $input.path('$')) + #if($inputRoot.toString().contains('206 PARTIAL CONTENT')) + #set($context.responseOverride.status = 206) + #end + $input.body ^400.*: statusCode: "400" responseTemplates: @@ -148,6 +181,13 @@ paths: { "error" : "$input.path('$.errorMessage')" } + ^415.*: + statusCode: "415" + responseTemplates: + application/json: |- + { + "error" : "$input.path('$.errorMessage')" + } ^[^1-5].*: statusCode: "500" responseTemplates: @@ -210,9 +250,25 @@ paths: method.response.header.Access-Control-Allow-Headers: "'Content-Type,X-Amz-Date,Authorization,X-Api-Key'" method.response.header.Access-Control-Allow-Methods: "'*'" method.response.header.Access-Control-Allow-Origin: "'*'" +x-amazon-apigateway-api-key-source: "AUTHORIZER" components: schemas: + json: + type: object geojson: type: object csv: - type: object \ No newline at end of file + type: object + securitySchemes: + ${authorizer_name}: + type: apiKey + name: x-hydrocron-key + in: header + x-amazon-apigateway-authorizer: + type: request + identitySource: method.request.header.User-Agent + authorizerUri: ${authorizer_url} + authorizerCredentials: ${authorizer_credentials} + authorizerPayloadFormatVersion: '1.0' + authorizerResultTtlInSeconds: 0 + x-amazon-apigateway-authtype: custom \ No newline at end of file diff --git a/terraform/hydrocron-apigw.tf b/terraform/hydrocron-apigw.tf index b7e9297e..4326d5ea 100644 --- a/terraform/hydrocron-apigw.tf +++ b/terraform/hydrocron-apigw.tf @@ -3,16 +3,20 @@ locals { api_version = "v${split(".", var.app_version)[0]}" } + resource "aws_api_gateway_rest_api" "hydrocron-api-gateway" { name = "${local.aws_resource_prefix}-api-gateway" description = "API to access Hydrocron" - body = templatefile( + body = templatefile( "${path.module}/api-specification-templates/hydrocron_aws_api.yml", { hydrocron_api_lambda_arn_timeseries = aws_lambda_function.hydrocron_lambda_timeseries.invoke_arn api_version = local.api_version software_version = var.app_version - }) + authorizer_url = aws_lambda_function.hydrocron_lambda_authorizer.invoke_arn + authorizer_credentials = aws_iam_role.hydrocron-gateway-authorizer-role.arn + authorizer_name = "${local.aws_resource_prefix}-lambda-authorizer" + }) parameters = { "basepath" = "ignore" } @@ -25,13 +29,16 @@ resource "aws_api_gateway_rest_api" "hydrocron-api-gateway" { lifecycle { prevent_destroy = true } + minimum_compression_size = 20480 + api_key_source = "AUTHORIZER" } + resource "aws_api_gateway_rest_api_policy" "hydrocron-api-gateway-policy" { rest_api_id = aws_api_gateway_rest_api.hydrocron-api-gateway.id policy = data.aws_iam_policy_document.apigw-resource-policy.json - lifecycle { - ignore_changes = [ policy ] + lifecycle { + ignore_changes = [policy] } } @@ -39,7 +46,7 @@ resource "aws_api_gateway_rest_api_policy" "hydrocron-api-gateway-policy" { resource "aws_api_gateway_deployment" "hydrocron-api-gateway-deployment" { rest_api_id = aws_api_gateway_rest_api.hydrocron-api-gateway.id depends_on = [aws_api_gateway_rest_api.hydrocron-api-gateway] - triggers = { + triggers = { redeployment = sha1(jsonencode([ aws_api_gateway_rest_api.hydrocron-api-gateway.body ])) @@ -56,22 +63,22 @@ resource "aws_api_gateway_deployment" "hydrocron-api-gateway-deployment" { resource "aws_api_gateway_stage" "hydrocron-api-gateway-stage" { deployment_id = aws_api_gateway_deployment.hydrocron-api-gateway-deployment.id - rest_api_id = aws_api_gateway_rest_api.hydrocron-api-gateway.id - stage_name = local.api_version + rest_api_id = aws_api_gateway_rest_api.hydrocron-api-gateway.id + stage_name = local.api_version access_log_settings { destination_arn = aws_cloudwatch_log_group.hydrocron-api-gateway-logs.arn - format = "$context.identity.sourceIp $context.identity.caller $context.identity.user [$context.requestTime] \"$context.httpMethod $context.resourcePath $context.protocol\" $context.status $context.responseLength $context.requestId $context.extendedRequestId" + format = "$context.identity.sourceIp $context.identity.caller $context.identity.user [$context.requestTime] \"$context.httpMethod $context.resourcePath $context.protocol\" $context.status $context.responseLength $context.requestId $context.extendedRequestId" } } resource "aws_api_gateway_method_settings" "hydrocron-api-gateway-settings" { rest_api_id = aws_api_gateway_rest_api.hydrocron-api-gateway.id - stage_name = aws_api_gateway_stage.hydrocron-api-gateway-stage.stage_name + stage_name = aws_api_gateway_stage.hydrocron-api-gateway-stage.stage_name method_path = "*/*" settings { - metrics_enabled = true - logging_level = "INFO" + metrics_enabled = true + logging_level = "INFO" data_trace_enabled = true } } @@ -82,12 +89,91 @@ resource "aws_cloudwatch_log_group" "hydrocron-api-gateway-logs" { retention_in_days = 60 } + output "url" { value = "${aws_api_gateway_deployment.hydrocron-api-gateway-deployment.invoke_url}/api" } + resource "aws_ssm_parameter" "hydrocron-api-url" { name = "/service/${var.app_name}/api-url" type = "String" value = aws_api_gateway_deployment.hydrocron-api-gateway-deployment.invoke_url } + + +# API Keys +resource "aws_api_gateway_api_key" "default-user-key" { + name = "${local.aws_resource_prefix}-api-key-default" +} + + +resource "aws_api_gateway_api_key" "trusted-user-key" { + name = "${local.aws_resource_prefix}-api-key-trusted" +} + + +resource "aws_ssm_parameter" "default-user-parameter" { + name = "/service/${var.app_name}/api-key-default" + description = "Hydrocron default user API key" + type = "SecureString" + value = aws_api_gateway_api_key.default-user-key.value +} + + +resource "aws_ssm_parameter" "trusted-user-parameter" { + name = "/service/${var.app_name}/api-key-trusted" + description = "Hydrocron trusted user API key" + type = "SecureString" + value = aws_api_gateway_api_key.trusted-user-key.value +} + + +# Usage Plans +resource "aws_api_gateway_usage_plan" "default-user-usage-plan" { + name = "${local.aws_resource_prefix}-usage-plan-default" + description = "Hydrocron default user usage plan" + api_stages { + api_id = aws_api_gateway_rest_api.hydrocron-api-gateway.id + stage = aws_api_gateway_stage.hydrocron-api-gateway-stage.stage_name + } + quota_settings { + limit = 2000000000 + period = "MONTH" + } + throttle_settings { + burst_limit = 200 + rate_limit = 2000 + } +} + +resource "aws_api_gateway_usage_plan_key" "default-user-usage-key" { + key_id = aws_api_gateway_api_key.default-user-key.id + key_type = "API_KEY" + usage_plan_id = aws_api_gateway_usage_plan.default-user-usage-plan.id +} + + + +resource "aws_api_gateway_usage_plan" "trusted-user-usage-plan" { + name = "${local.aws_resource_prefix}-usage-plan-trusted" + description = "Hydrocron trusted user usage plan" + api_stages { + api_id = aws_api_gateway_rest_api.hydrocron-api-gateway.id + stage = aws_api_gateway_stage.hydrocron-api-gateway-stage.stage_name + } + quota_settings { + limit = 5 + period = "MONTH" + } + throttle_settings { + burst_limit = 1 + rate_limit = 1 + } +} + +resource "aws_api_gateway_usage_plan_key" "trusted-user-usage-key" { + key_id = aws_api_gateway_api_key.trusted-user-key.id + key_type = "API_KEY" + usage_plan_id = aws_api_gateway_usage_plan.trusted-user-usage-plan.id +} \ No newline at end of file diff --git a/terraform/hydrocron-dynamo.tf b/terraform/hydrocron-dynamo.tf index 246006ca..ed268569 100644 --- a/terraform/hydrocron-dynamo.tf +++ b/terraform/hydrocron-dynamo.tf @@ -1,8 +1,8 @@ resource "aws_dynamodb_table" "hydrocron-swot-reach-table" { - name = "hydrocron-swot-reach-table" - billing_mode = "PAY_PER_REQUEST" - hash_key = "reach_id" - range_key = "range_start_time" + name = "hydrocron-swot-reach-table" + billing_mode = "PAY_PER_REQUEST" + hash_key = "reach_id" + range_key = "range_start_time" attribute { name = "reach_id" type = "S" @@ -25,10 +25,10 @@ resource "aws_dynamodb_table" "hydrocron-swot-reach-table" { } resource "aws_dynamodb_table" "hydrocron-swot-node-table" { - name = "hydrocron-swot-node-table" - billing_mode = "PAY_PER_REQUEST" - hash_key = "node_id" - range_key = "range_start_time" + name = "hydrocron-swot-node-table" + billing_mode = "PAY_PER_REQUEST" + hash_key = "node_id" + range_key = "range_start_time" attribute { name = "node_id" type = "S" diff --git a/terraform/hydrocron-iam.tf b/terraform/hydrocron-iam.tf index 248e0710..e2cc15be 100644 --- a/terraform/hydrocron-iam.tf +++ b/terraform/hydrocron-iam.tf @@ -1,8 +1,36 @@ # IAM Policies +data "aws_iam_policy_document" "assume_role_lambda" { + statement { + effect = "Allow" + + principals { + type = "Service" + identifiers = ["lambda.amazonaws.com"] + } + + actions = ["sts:AssumeRole"] + } +} + + +data "aws_iam_policy_document" "assume_role_authorizer" { + statement { + effect = "Allow" + + principals { + type = "Service" + identifiers = ["apigateway.amazonaws.com"] + } + + actions = ["sts:AssumeRole"] + } +} + + data "aws_iam_policy_document" "dynamo-read-policy" { statement { - effect = "Allow" + effect = "Allow" actions = [ "dynamodb:GetItem", "dynamodb:BatchGetItem", @@ -20,10 +48,11 @@ data "aws_iam_policy_document" "dynamo-read-policy" { } + data "aws_iam_policy_document" "dynamo-write-policy" { statement { - effect = "Allow" + effect = "Allow" actions = [ "dynamodb:PutItem", "dynamodb:UpdateItem", @@ -44,22 +73,40 @@ data "aws_iam_policy_document" "dynamo-write-policy" { } } + + data "aws_iam_policy_document" "lambda-invoke-policy" { statement { - effect = "Allow" + effect = "Allow" actions = [ "lambda:InvokeFunction" ] resources = [ aws_lambda_function.hydrocron_lambda_load_granule.arn - ] + ] + } +} + + +data "aws_iam_policy_document" "lambda-invoke-authorizer-policy" { + + statement { + effect = "Allow" + actions = [ + "lambda:InvokeFunction" + ] + resources = [ + aws_lambda_function.hydrocron_lambda_authorizer.arn + ] } } + + data "aws_iam_policy_document" "ssm-read-policy" { statement { - effect = "Allow" + effect = "Allow" actions = [ "ssm:DescribeParameters" ] @@ -78,9 +125,11 @@ data "aws_iam_policy_document" "ssm-read-policy" { } } + + data "aws_iam_policy_document" "s3-read-policy" { statement { - effect = "Allow" + effect = "Allow" actions = [ "s3:Get*", "s3:List*", @@ -96,23 +145,11 @@ data "aws_iam_policy_document" "s3-read-policy" { } } -data "aws_iam_policy_document" "assume_role_lambda" { - statement { - effect = "Allow" - - principals { - type = "Service" - identifiers = ["lambda.amazonaws.com"] - } - - actions = ["sts:AssumeRole"] - } -} data "aws_iam_policy_document" "lambda_log_to_cloudwatch" { statement { effect = "Allow" - actions = [ + actions = [ "logs:CreateLogGroup" ] resources = [ @@ -122,10 +159,10 @@ data "aws_iam_policy_document" "lambda_log_to_cloudwatch" { statement { effect = "Allow" - actions = [ - "logs:CreateLogStream", + actions = [ + "logs:CreateLogStream", "logs:PutLogEvents" - ] + ] resources = [ #"arn:aws:logs:region:${local.account_id}:log-group:/aws/lambda/${aws_lambda_function.hydrocron_lambda_load_data.function_name}:*", "arn:aws:logs:region:${local.account_id}:log-group:/aws/lambda:*" @@ -133,21 +170,23 @@ data "aws_iam_policy_document" "lambda_log_to_cloudwatch" { } } + data "aws_iam_policy_document" "sns-resource-policy" { statement { effect = "Allow" principals { - type = "AWS" + type = "AWS" identifiers = ["arn:aws:iam::${var.cross_account_id}:root"] } - actions = ["sns:Publish"] + actions = ["sns:Publish"] resources = [aws_sns_topic.hydrocron_sns_topic_cnm_response.arn] } } + data "aws_iam_policy_document" "apigw-resource-policy" { statement { effect = "Allow" @@ -167,6 +206,7 @@ data "aws_iam_policy_document" "apigw-resource-policy" { } } + statement { effect = "Allow" @@ -180,27 +220,40 @@ data "aws_iam_policy_document" "apigw-resource-policy" { } } + data "aws_iam_policy_document" "lambda-vpc" { statement { - effect = "Allow" - actions = ["ec2:CreateNetworkInterface"] + effect = "Allow" + actions = ["ec2:CreateNetworkInterface"] resources = ["arn:aws:ec2:${local.region}:${local.account_id}:*/*"] } statement { - effect = "Allow" - actions = ["ec2:DeleteNetworkInterface"] + effect = "Allow" + actions = ["ec2:DeleteNetworkInterface"] resources = ["arn:aws:ec2:${local.region}:${local.account_id}:*/*"] } statement { - effect = "Allow" - actions = ["ec2:DescribeNetworkInterfaces"] + effect = "Allow" + actions = ["ec2:DescribeNetworkInterfaces"] resources = ["*"] } } + # IAM Roles +resource "aws_iam_role" "hydrocron-gateway-authorizer-role" { + name = "${local.aws_resource_prefix}-api-gateway-authorizer-role" + permissions_boundary = "arn:aws:iam::${local.account_id}:policy/NGAPShRoleBoundary" + assume_role_policy = data.aws_iam_policy_document.assume_role_authorizer.json + inline_policy { + name = "HydrocronInvokeLambdaAuthorizer" + policy = data.aws_iam_policy_document.lambda-invoke-authorizer-policy.json + } +} + + resource "aws_iam_role" "hydrocron-lambda-execution-role" { name = "${local.aws_resource_prefix}-lambda-execution-role" @@ -217,9 +270,27 @@ resource "aws_iam_role" "hydrocron-lambda-execution-role" { policy = data.aws_iam_policy_document.ssm-read-policy.json } inline_policy { - name = "HydrocronLambdaVPC" + name = "HydrocronLambdaVPC" + policy = data.aws_iam_policy_document.lambda-vpc.json + } +} + + +resource "aws_iam_role" "hydrocron-lambda-authorizer-role" { + name = "${local.aws_resource_prefix}-lambda-authorizer-role" + + permissions_boundary = "arn:aws:iam::${local.account_id}:policy/NGAPShRoleBoundary" + assume_role_policy = data.aws_iam_policy_document.assume_role_lambda.json + managed_policy_arns = ["arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"] + + inline_policy { + name = "HydrocronLambdaVPC" policy = data.aws_iam_policy_document.lambda-vpc.json } + inline_policy { + name = "HydrocronSSMRead" + policy = data.aws_iam_policy_document.ssm-read-policy.json + } } @@ -231,18 +302,18 @@ resource "aws_iam_role" "hydrocron-lambda-load-data-role" { managed_policy_arns = ["arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"] inline_policy { - name = "HydrocronLambdaInvoke" + name = "HydrocronLambdaInvoke" policy = data.aws_iam_policy_document.lambda-invoke-policy.json } inline_policy { policy = data.aws_iam_policy_document.lambda_log_to_cloudwatch.json } - inline_policy { + inline_policy { name = "HydrocronSSMRead" policy = data.aws_iam_policy_document.ssm-read-policy.json } inline_policy { - name = "HydrocronLambdaVPC" + name = "HydrocronLambdaVPC" policy = data.aws_iam_policy_document.lambda-vpc.json } } @@ -252,16 +323,16 @@ resource "aws_iam_role" "hydrocron-lambda-load-granule-role" { permissions_boundary = "arn:aws:iam::${local.account_id}:policy/NGAPShRoleBoundary" assume_role_policy = data.aws_iam_policy_document.assume_role_lambda.json - managed_policy_arns = [ + managed_policy_arns = [ "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" - ] + ] inline_policy { name = "HydrocronDynamoWrite" policy = data.aws_iam_policy_document.dynamo-write-policy.json } inline_policy { - name = "HydrocronS3Read" + name = "HydrocronS3Read" policy = data.aws_iam_policy_document.s3-read-policy.json } inline_policy { @@ -272,7 +343,7 @@ resource "aws_iam_role" "hydrocron-lambda-load-granule-role" { policy = data.aws_iam_policy_document.ssm-read-policy.json } inline_policy { - name = "HydrocronLambdaVPC" + name = "HydrocronLambdaVPC" policy = data.aws_iam_policy_document.lambda-vpc.json } } @@ -282,23 +353,23 @@ resource "aws_iam_role" "hydrocron-lambda-cnm-role" { permissions_boundary = "arn:aws:iam::${local.account_id}:policy/NGAPShRoleBoundary" assume_role_policy = data.aws_iam_policy_document.assume_role_lambda.json - managed_policy_arns = [ + managed_policy_arns = [ "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole", - "arn:aws:iam::aws:policy/service-role/AWSLambdaSQSQueueExecutionRole"] + "arn:aws:iam::aws:policy/service-role/AWSLambdaSQSQueueExecutionRole"] inline_policy { - name = "HydrocronLambdaInvoke" + name = "HydrocronLambdaInvoke" policy = data.aws_iam_policy_document.lambda-invoke-policy.json } inline_policy { policy = data.aws_iam_policy_document.lambda_log_to_cloudwatch.json } - inline_policy { + inline_policy { name = "HydrocronSSMRead" policy = data.aws_iam_policy_document.ssm-read-policy.json } inline_policy { - name = "HydrocronS3Read" + name = "HydrocronS3Read" policy = data.aws_iam_policy_document.s3-read-policy.json } } diff --git a/terraform/hydrocron-lambda.tf b/terraform/hydrocron-lambda.tf index 9f6b3efb..7b655990 100644 --- a/terraform/hydrocron-lambda.tf +++ b/terraform/hydrocron-lambda.tf @@ -1,5 +1,5 @@ data "aws_ecr_authorization_token" "token" {} -data aws_ecr_image lambda_image { +data "aws_ecr_image" "lambda_image" { depends_on = [ null_resource.upload_ecr_image ] @@ -14,17 +14,18 @@ locals { ecr_image_name = "${local.environment}-${element(local.ecr_image_name_and_tag, 0)}" ecr_image_tag = element(local.ecr_image_name_and_tag, 1) timeseries_function_name = "${local.aws_resource_prefix}-timeseries-lambda" + authorizer_function_name = "${local.aws_resource_prefix}-authorizer-lambda" load_data_function_name = "${local.aws_resource_prefix}-load_data-lambda" load_granule_function_name = "${local.aws_resource_prefix}-load_granule-lambda" cnm_response_function_name = "${local.aws_resource_prefix}-cnm-lambda" } -resource aws_ecr_repository "lambda-image-repo" { +resource "aws_ecr_repository" "lambda-image-repo" { name = local.ecr_image_name tags = var.default_tags } -resource null_resource ecr_login { +resource "null_resource" "ecr_login" { triggers = { image_uri = var.lambda_container_image_uri } @@ -37,9 +38,9 @@ resource null_resource ecr_login { } } -resource null_resource upload_ecr_image { +resource "null_resource" "upload_ecr_image" { depends_on = [null_resource.ecr_login] - triggers = { + triggers = { image_uri = var.lambda_container_image_uri } @@ -82,6 +83,23 @@ resource "aws_lambda_permission" "allow_hydrocron-timeseries" { } +resource "aws_lambda_function" "hydrocron_lambda_authorizer" { + package_type = "Image" + image_uri = "${aws_ecr_repository.lambda-image-repo.repository_url}:${data.aws_ecr_image.lambda_image.image_tag}" + image_config { + command = ["hydrocron.api.controllers.authorizer.authorization_handler"] + } + function_name = local.authorizer_function_name + role = aws_iam_role.hydrocron-lambda-authorizer-role.arn + timeout = 30 + vpc_config { + subnet_ids = data.aws_subnets.private_application_subnets.ids + security_group_ids = data.aws_security_groups.vpc_default_sg.ids + } + tags = var.default_tags +} + + resource "aws_lambda_function" "hydrocron_lambda_load_data" { package_type = "Image" image_uri = "${aws_ecr_repository.lambda-image-repo.repository_url}:${data.aws_ecr_image.lambda_image.image_tag}" @@ -99,8 +117,8 @@ resource "aws_lambda_function" "hydrocron_lambda_load_data" { tags = var.default_tags environment { variables = { - EARTHDATA_USERNAME = data.aws_ssm_parameter.edl_username.value - EARTHDATA_PASSWORD = data.aws_ssm_parameter.edl_password.value + EARTHDATA_USERNAME = data.aws_ssm_parameter.edl_username.value + EARTHDATA_PASSWORD = data.aws_ssm_parameter.edl_password.value GRANULE_LAMBDA_FUNCTION_NAME = aws_lambda_function.hydrocron_lambda_load_granule.function_name } } @@ -153,7 +171,7 @@ resource "aws_lambda_permission" "allow_lambda" { action = "lambda:InvokeFunction" function_name = aws_lambda_function.hydrocron_lambda_load_granule.function_name principal = "s3.amazonaws.com" - source_arn = aws_lambda_function.hydrocron_lambda_load_data.arn + source_arn = aws_lambda_function.hydrocron_lambda_load_data.arn } resource "aws_lambda_permission" "allow_lambda_from_cnm" { @@ -161,5 +179,5 @@ resource "aws_lambda_permission" "allow_lambda_from_cnm" { action = "lambda:InvokeFunction" function_name = aws_lambda_function.hydrocron_lambda_load_granule.function_name principal = "sns.amazonaws.com" - source_arn = aws_lambda_function.hydrocron_lambda_cnm.arn + source_arn = aws_lambda_function.hydrocron_lambda_cnm.arn } diff --git a/terraform/hydrocron-sns.tf b/terraform/hydrocron-sns.tf index a6f07ec4..d79f919e 100644 --- a/terraform/hydrocron-sns.tf +++ b/terraform/hydrocron-sns.tf @@ -1,11 +1,11 @@ # SNS topic for CNM responses resource "aws_sns_topic" "hydrocron_sns_topic_cnm_response" { - name = "${local.aws_resource_prefix}-cnm-response" + name = "${local.aws_resource_prefix}-cnm-response" } resource "aws_sns_topic_policy" "hydrocron_sns_topic_cnm_response_policy" { - arn = aws_sns_topic.hydrocron_sns_topic_cnm_response.arn + arn = aws_sns_topic.hydrocron_sns_topic_cnm_response.arn policy = data.aws_iam_policy_document.sns-resource-policy.json } diff --git a/terraform/main.tf b/terraform/main.tf index e86814f8..a626ee2d 100644 --- a/terraform/main.tf +++ b/terraform/main.tf @@ -50,14 +50,14 @@ data "aws_ssm_parameter" "edl_username" { name = "urs_podaaccloud_user" } data "aws_ssm_parameter" "edl_password" { - name = "urs_podaaccloud_pass" + name = "urs_podaaccloud_pass" with_decryption = true } locals { environment = var.stage account_id = data.aws_caller_identity.current.account_id - region = data.aws_region.current.name + region = data.aws_region.current.name # This is the convention we use to know what belongs to each other aws_resource_prefix = terraform.workspace == "default" ? "svc-${var.app_name}-${local.environment}" : "svc-${var.app_name}-${local.environment}-${terraform.workspace}" diff --git a/terraform/versions.tf b/terraform/versions.tf index b3748ee8..27e05407 100644 --- a/terraform/versions.tf +++ b/terraform/versions.tf @@ -5,12 +5,12 @@ terraform { # should be of the form services/APP_NAME/STAGE/terraform.tfstate # We can't use variables in the key name here, so we need to be extra # careful with this! - key = "services/hydrocron/terraform.tfstate" + key = "services/hydrocron/terraform.tfstate" region = "us-west-2" } required_providers { - aws = "~> 4.0" + aws = "~> 4.0" } required_version = ">= 1.7.3" } diff --git a/tests/test_api.py b/tests/test_api.py index 54bfa0da..a748bc82 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -1,6 +1,7 @@ """ Tests for API queries """ +import csv import os.path import pathlib @@ -12,7 +13,7 @@ from numpy.testing import assert_almost_equal -def test_timeseries_lambda_handler_geojson(hydrocron_api): +def test_timeseries_lambda_handler_json(hydrocron_api): """ Test the lambda handler for the timeseries endpoint Parameters @@ -38,200 +39,12 @@ def test_timeseries_lambda_handler_geojson(hydrocron_api): context = "_" result = hydrocron.api.controllers.timeseries.lambda_handler(event, context) + test_data = (pathlib.Path(os.path.dirname(os.path.realpath(__file__))) + .joinpath('test_data').joinpath('api_query_results_geojson.json')) + with open(test_data) as jf: + expected = json.load(jf) assert result['status'] == '200 OK' and \ - result['results']['geojson'] == {'type': 'FeatureCollection', 'features': [ - {'id': '0', 'properties': {'reach_id': '71224100223', 'time_str': '2023-06-10T19:39:43Z', - 'wse': '286.2983', 'sword_version': '15', - 'collection_shortname': 'SWOT_L2_HR_RiverSP_2.0', 'crid': 'PIA1', 'wse_units': 'm'}, - 'geometry': {'coordinates': - [[-95.564991, 50.223686], [-95.564559, 50.223479], - [-95.564133, 50.223381], - [-95.563713, 50.22339], [-95.563296, 50.223453], - [-95.562884, 50.223624], - [-95.562473, 50.223795], [-95.562062, 50.223966], - [-95.56165, 50.224137], - [-95.561242, 50.224362], [-95.560917, 50.224585], - [-95.560595, 50.224862], - [-95.560271, 50.225085], [-95.559946, 50.225308], - [-95.559946, 50.225308], - [-95.559213, 50.225756], [-95.558804, 50.225981], - [-95.558567, 50.226256], - [-95.558413, 50.226529], [-95.558343, 50.226801], - [-95.558274, 50.227072], - [-95.558288, 50.227342], [-95.558303, 50.227611], - [-95.558317, 50.227881], - [-95.558416, 50.228148], [-95.558514, 50.228416], - [-95.558697, 50.228682], - [-95.558795, 50.22895], [-95.558978, 50.229216], - [-95.559076, 50.229483], - [-95.559259, 50.229749], [-95.559357, 50.230017], - [-95.559455, 50.230284], - [-95.55947, 50.230554], [-95.559484, 50.230823], - [-95.559583, 50.231091], - [-95.559765, 50.231357], [-95.559864, 50.231625], - [-95.559878, 50.231894], - [-95.559809, 50.232166], [-95.559571, 50.232441], - [-95.559165, 50.23272], - [-95.558757, 50.232944], [-95.558348, 50.233169], - [-95.557939, 50.233394], - [-95.55753, 50.233619], [-95.557206, 50.233842], - [-95.556884, 50.234119], - [-95.556562, 50.234396], [-95.556241, 50.234673], - [-95.556003, 50.234948], - [-95.555681, 50.235225], [-95.555443, 50.2355], - [-95.555206, 50.235775], - [-95.555136, 50.236047], [-95.555066, 50.236318], - [-95.555081, 50.236588], - [-95.555011, 50.236859], [-95.554941, 50.23713], - [-95.554701, 50.237351], - [-95.554376, 50.237575], [-95.554052, 50.237798], - [-95.553727, 50.238021], - [-95.553727, 50.238021], [-95.55308, 50.238521], - [-95.552843, 50.238796], - [-95.552521, 50.239073], [-95.552367, 50.239346], - [-95.552297, 50.239617], - [-95.552312, 50.239887], [-95.552326, 50.240156], - [-95.552425, 50.240424], - [-95.552439, 50.240693], [-95.552453, 50.240963], - [-95.552468, 50.241233], - [-95.552482, 50.241502], [-95.552497, 50.241772], - [-95.552511, 50.242041], - [-95.552525, 50.242311], [-95.552456, 50.242582], - [-95.552299, 50.242801], - [-95.552056, 50.242969], [-95.551728, 50.243138], - [-95.551314, 50.243255], - [-95.550899, 50.243372], [-95.550487, 50.243543], - [-95.550076, 50.243714], - [-95.549661, 50.243831], [-95.549249, 50.244002], - [-95.548838, 50.244173], - [-95.548423, 50.24429], [-95.548011, 50.244461], - [-95.547603, 50.244686], - [-95.547278, 50.244909], [-95.546953, 50.245132], - [-95.546715, 50.245407], - [-95.546561, 50.24568], [-95.546492, 50.245951], - [-95.546422, 50.246223], - [-95.546436, 50.246492], [-95.546367, 50.246764], - [-95.546297, 50.247035], - [-95.546143, 50.247308], [-95.54599, 50.247582], - [-95.545752, 50.247857], - [-95.545598, 50.24813], [-95.545444, 50.248403], - [-95.545374, 50.248674], - [-95.545305, 50.248946], [-95.545319, 50.249215], - [-95.545333, 50.249485], - [-95.545348, 50.249754], [-95.545446, 50.250022], - [-95.545545, 50.25029], - [-95.545727, 50.250556], [-95.54591, 50.250822], - [-95.546176, 50.251086], - [-95.546359, 50.251351], [-95.546625, 50.251615], - [-95.546892, 50.251879], - [-95.547075, 50.252145], [-95.547257, 50.252411], - [-95.54744, 50.252677], - [-95.547538, 50.252945], [-95.547553, 50.253214], - [-95.547651, 50.253482], - [-95.547581, 50.253753], [-95.547512, 50.254025], - [-95.547442, 50.254296], - [-95.547372, 50.254568], [-95.547303, 50.254839], - [-95.547317, 50.255108], - [-95.547247, 50.25538], [-95.547177, 50.255651], - [-95.547192, 50.255921], - [-95.547206, 50.25619], [-95.547221, 50.25646], - [-95.547319, 50.256728], - [-95.547418, 50.256995], [-95.547432, 50.257265], - [-95.547446, 50.257534], - [-95.547461, 50.257804], [-95.547475, 50.258073], - [-95.547489, 50.258343], - [-95.547504, 50.258613], [-95.547518, 50.258882], - [-95.547449, 50.259153], - [-95.547379, 50.259425], [-95.547309, 50.259696], - [-95.547239, 50.259968], - [-95.547086, 50.260241], [-95.547016, 50.260512], - [-95.546946, 50.260784], - [-95.546876, 50.261055], [-95.546807, 50.261326], - [-95.546737, 50.261598], - [-95.546583, 50.261871], [-95.546345, 50.262146], - [-95.54602, 50.262369], - [-95.545611, 50.262594], [-95.5452, 50.262765], - [-95.544788, 50.262936], - [-95.544373, 50.263053], [-95.543961, 50.263224], - [-95.543546, 50.263341], - [-95.543135, 50.263512], [-95.542723, 50.263683], - [-95.542314, 50.263907], - [-95.541989, 50.26413], [-95.541667, 50.264407], - [-95.541345, 50.264684], - [-95.541107, 50.264959], [-95.540869, 50.265234], - [-95.540631, 50.265509], - [-95.540393, 50.265785], [-95.540155, 50.26606], - [-95.539917, 50.266335], - [-95.539679, 50.26661], [-95.539441, 50.266885], - [-95.539203, 50.26716], - [-95.538962, 50.267381], [-95.538634, 50.26755], - [-95.538304, 50.267665], - [-95.537889, 50.267782], [-95.537471, 50.267845], - [-95.537056, 50.267962], - [-95.536642, 50.268079], [-95.536227, 50.268196], - [-95.535809, 50.268259], - [-95.535391, 50.268323], [-95.534974, 50.268386], - [-95.534556, 50.268449], - [-95.534138, 50.268512], [-95.533718, 50.268521], - [-95.5333, 50.268584], - [-95.532882, 50.268647], [-95.532552, 50.268762], - [-95.532224, 50.268931], - [-95.531986, 50.269206], [-95.531748, 50.269481], - [-95.531594, 50.269755], - [-95.531356, 50.27003], [-95.531202, 50.270303], - [-95.531048, 50.270576], - [-95.530978, 50.270847], [-95.530908, 50.271119], - [-95.530923, 50.271388], - [-95.530937, 50.271658], [-95.530951, 50.271927], - [-95.53105, 50.272195], - [-95.531148, 50.272463], [-95.531331, 50.272729], - [-95.531513, 50.272995], - [-95.531696, 50.273261], [-95.531878, 50.273526], - [-95.532145, 50.27379], - [-95.532327, 50.274056], [-95.532594, 50.27432], - [-95.532861, 50.274584], - [-95.533043, 50.27485], [-95.533142, 50.275118], - [-95.53324, 50.275386], - [-95.533339, 50.275653], [-95.533437, 50.275921], - [-95.533536, 50.276189], - [-95.533634, 50.276457], [-95.533732, 50.276724], - [-95.533747, 50.276994], - [-95.533761, 50.277263], [-95.533859, 50.277531], - [-95.533958, 50.277799], - [-95.53414, 50.278065], [-95.534323, 50.278331], - [-95.534506, 50.278596], - [-95.534688, 50.278862], [-95.534871, 50.279128], - [-95.534969, 50.279396], - [-95.535152, 50.279662], [-95.535334, 50.279928], - [-95.535433, 50.280195], - [-95.535615, 50.280461], [-95.535798, 50.280727], - [-95.535812, 50.280997], - [-95.535743, 50.281268], [-95.535589, 50.281541], - [-95.535266, 50.281818], - [-95.53486, 50.282097], [-95.534454, 50.282376], - [-95.534132, 50.282652], - [-95.533893, 50.282927], [-95.533824, 50.283199], - [-95.533838, 50.283468], - [-95.534021, 50.283734], [-95.534203, 50.284], - [-95.53447, 50.284264], - [-95.534652, 50.28453], [-95.534835, 50.284796], - [-95.535018, 50.285062], - [-95.5352, 50.285328], [-95.535383, 50.285594], - [-95.535565, 50.285859], - [-95.535832, 50.286123], [-95.536099, 50.286387], - [-95.53645, 50.28665], - [-95.536801, 50.286912], [-95.537152, 50.287174], - [-95.537418, 50.287438], - [-95.537601, 50.287704], [-95.5377, 50.287972], - [-95.537798, 50.288239], - [-95.537897, 50.288507], [-95.537995, 50.288775], - [-95.538093, 50.289043], - [-95.538192, 50.28931], [-95.538206, 50.28958], - [-95.538221, 50.289849], - [-95.538235, 50.290119], [-95.538334, 50.290387], - [-95.538432, 50.290654], - [-95.538531, 50.290922], [-95.538629, 50.29119]], - 'type': 'LineString'}, 'type': 'Feature'}]} + result['results']['geojson'] == expected def test_timeseries_lambda_handler_validate_geojson_reach(hydrocron_api): @@ -291,91 +104,14 @@ def test_timeseries_lambda_handler_csv(hydrocron_api): context = "_" result = hydrocron.api.controllers.timeseries.lambda_handler(event, context) assert result['status'] == '200 OK' - assert result['results']['csv'] == ( - 'reach_id,time_str,wse,sword_version,collection_shortname,crid,geometry,wse_units\n' \ - '71224100223,2023-06-10T19:39:43Z,286.2983,15,SWOT_L2_HR_RiverSP_2.0,PIA1,' \ - '"LINESTRING (-95.564991 50.223686, ' \ - '-95.564559 50.223479, -95.564133 50.223381, -95.563713 50.22339, -95.563296 ' \ - '50.223453, -95.562884 50.223624, -95.562473 50.223795, -95.562062 50.223966, ' \ - '-95.56165 50.224137, -95.561242 50.224362, -95.560917 50.224585, -95.560595 ' \ - '50.224862, -95.560271 50.225085, -95.559946 50.225308, -95.559946 50.225308, ' \ - '-95.559213 50.225756, -95.558804 50.225981, -95.558567 50.226256, -95.558413 ' \ - '50.226529, -95.558343 50.226801, -95.558274 50.227072, -95.558288 50.227342, ' \ - '-95.558303 50.227611, -95.558317 50.227881, -95.558416 50.228148, -95.558514 ' \ - '50.228416, -95.558697 50.228682, -95.558795 50.22895, -95.558978 50.229216, ' \ - '-95.559076 50.229483, -95.559259 50.229749, -95.559357 50.230017, -95.559455 ' \ - '50.230284, -95.55947 50.230554, -95.559484 50.230823, -95.559583 50.231091, ' \ - '-95.559765 50.231357, -95.559864 50.231625, -95.559878 50.231894, -95.559809 ' \ - '50.232166, -95.559571 50.232441, -95.559165 50.23272, -95.558757 50.232944, ' \ - '-95.558348 50.233169, -95.557939 50.233394, -95.55753 50.233619, -95.557206 ' \ - '50.233842, -95.556884 50.234119, -95.556562 50.234396, -95.556241 50.234673, ' \ - '-95.556003 50.234948, -95.555681 50.235225, -95.555443 50.2355, -95.555206 ' \ - '50.235775, -95.555136 50.236047, -95.555066 50.236318, -95.555081 50.236588, ' \ - '-95.555011 50.236859, -95.554941 50.23713, -95.554701 50.237351, -95.554376 ' \ - '50.237575, -95.554052 50.237798, -95.553727 50.238021, -95.553727 50.238021, ' \ - '-95.55308 50.238521, -95.552843 50.238796, -95.552521 50.239073, -95.552367 ' \ - '50.239346, -95.552297 50.239617, -95.552312 50.239887, -95.552326 50.240156, ' \ - '-95.552425 50.240424, -95.552439 50.240693, -95.552453 50.240963, -95.552468 ' \ - '50.241233, -95.552482 50.241502, -95.552497 50.241772, -95.552511 50.242041, ' \ - '-95.552525 50.242311, -95.552456 50.242582, -95.552299 50.242801, -95.552056 ' \ - '50.242969, -95.551728 50.243138, -95.551314 50.243255, -95.550899 50.243372, ' \ - '-95.550487 50.243543, -95.550076 50.243714, -95.549661 50.243831, -95.549249 ' \ - '50.244002, -95.548838 50.244173, -95.548423 50.24429, -95.548011 50.244461, ' \ - '-95.547603 50.244686, -95.547278 50.244909, -95.546953 50.245132, -95.546715 ' \ - '50.245407, -95.546561 50.24568, -95.546492 50.245951, -95.546422 50.246223, ' \ - '-95.546436 50.246492, -95.546367 50.246764, -95.546297 50.247035, -95.546143 ' \ - '50.247308, -95.54599 50.247582, -95.545752 50.247857, -95.545598 50.24813, ' \ - '-95.545444 50.248403, -95.545374 50.248674, -95.545305 50.248946, -95.545319 ' \ - '50.249215, -95.545333 50.249485, -95.545348 50.249754, -95.545446 50.250022, ' \ - '-95.545545 50.25029, -95.545727 50.250556, -95.54591 50.250822, -95.546176 ' \ - '50.251086, -95.546359 50.251351, -95.546625 50.251615, -95.546892 50.251879, ' \ - '-95.547075 50.252145, -95.547257 50.252411, -95.54744 50.252677, -95.547538 ' \ - '50.252945, -95.547553 50.253214, -95.547651 50.253482, -95.547581 50.253753, ' \ - '-95.547512 50.254025, -95.547442 50.254296, -95.547372 50.254568, -95.547303 ' \ - '50.254839, -95.547317 50.255108, -95.547247 50.25538, -95.547177 50.255651, ' \ - '-95.547192 50.255921, -95.547206 50.25619, -95.547221 50.25646, -95.547319 ' \ - '50.256728, -95.547418 50.256995, -95.547432 50.257265, -95.547446 50.257534, ' \ - '-95.547461 50.257804, -95.547475 50.258073, -95.547489 50.258343, -95.547504 ' \ - '50.258613, -95.547518 50.258882, -95.547449 50.259153, -95.547379 50.259425, ' \ - '-95.547309 50.259696, -95.547239 50.259968, -95.547086 50.260241, -95.547016 ' \ - '50.260512, -95.546946 50.260784, -95.546876 50.261055, -95.546807 50.261326, ' \ - '-95.546737 50.261598, -95.546583 50.261871, -95.546345 50.262146, -95.54602 ' \ - '50.262369, -95.545611 50.262594, -95.5452 50.262765, -95.544788 50.262936, ' \ - '-95.544373 50.263053, -95.543961 50.263224, -95.543546 50.263341, -95.543135 ' \ - '50.263512, -95.542723 50.263683, -95.542314 50.263907, -95.541989 50.26413, ' \ - '-95.541667 50.264407, -95.541345 50.264684, -95.541107 50.264959, -95.540869 ' \ - '50.265234, -95.540631 50.265509, -95.540393 50.265785, -95.540155 50.26606, ' \ - '-95.539917 50.266335, -95.539679 50.26661, -95.539441 50.266885, -95.539203 ' \ - '50.26716, -95.538962 50.267381, -95.538634 50.26755, -95.538304 50.267665, ' \ - '-95.537889 50.267782, -95.537471 50.267845, -95.537056 50.267962, -95.536642 ' \ - '50.268079, -95.536227 50.268196, -95.535809 50.268259, -95.535391 50.268323, ' \ - '-95.534974 50.268386, -95.534556 50.268449, -95.534138 50.268512, -95.533718 ' \ - '50.268521, -95.5333 50.268584, -95.532882 50.268647, -95.532552 50.268762, ' \ - '-95.532224 50.268931, -95.531986 50.269206, -95.531748 50.269481, -95.531594 ' \ - '50.269755, -95.531356 50.27003, -95.531202 50.270303, -95.531048 50.270576, ' \ - '-95.530978 50.270847, -95.530908 50.271119, -95.530923 50.271388, -95.530937 ' \ - '50.271658, -95.530951 50.271927, -95.53105 50.272195, -95.531148 50.272463, ' \ - '-95.531331 50.272729, -95.531513 50.272995, -95.531696 50.273261, -95.531878 ' \ - '50.273526, -95.532145 50.27379, -95.532327 50.274056, -95.532594 50.27432, ' \ - '-95.532861 50.274584, -95.533043 50.27485, -95.533142 50.275118, -95.53324 ' \ - '50.275386, -95.533339 50.275653, -95.533437 50.275921, -95.533536 50.276189, ' \ - '-95.533634 50.276457, -95.533732 50.276724, -95.533747 50.276994, -95.533761 ' \ - '50.277263, -95.533859 50.277531, -95.533958 50.277799, -95.53414 50.278065, ' \ - '-95.534323 50.278331, -95.534506 50.278596, -95.534688 50.278862, -95.534871 ' \ - '50.279128, -95.534969 50.279396, -95.535152 50.279662, -95.535334 50.279928, ' \ - '-95.535433 50.280195, -95.535615 50.280461, -95.535798 50.280727, -95.535812 ' \ - '50.280997, -95.535743 50.281268, -95.535589 50.281541, -95.535266 50.281818, ' \ - '-95.53486 50.282097, -95.534454 50.282376, -95.534132 50.282652, -95.533893 ' \ - '50.282927, -95.533824 50.283199, -95.533838 50.283468, -95.534021 50.283734, ' \ - '-95.534203 50.284, -95.53447 50.284264, -95.534652 50.28453, -95.534835 ' \ - '50.284796, -95.535018 50.285062, -95.5352 50.285328, -95.535383 50.285594, ' \ - '-95.535565 50.285859, -95.535832 50.286123, -95.536099 50.286387, -95.53645 ' \ - '50.28665, -95.536801 50.286912, -95.537152 50.287174, -95.537418 50.287438, ' \ - '-95.537601 50.287704, -95.5377 50.287972, -95.537798 50.288239, -95.537897 ' \ - '50.288507, -95.537995 50.288775, -95.538093 50.289043, -95.538192 50.28931, ' \ - '-95.538206 50.28958, -95.538221 50.289849, -95.538235 50.290119, -95.538334 ' \ - '50.290387, -95.538432 50.290654, -95.538531 50.290922, -95.538629 ' \ - '50.29119)",m\n') + test_data = (pathlib.Path(os.path.dirname(os.path.realpath(__file__))).joinpath('test_data').joinpath('api_query_results_csv.csv')) + with open(test_data) as csv_file: + csv_reader = csv.reader(csv_file, delimiter=',', quotechar=None) + row_str = "" + for row in csv_reader: + row_str += f"{','.join(row)}\n" + + assert result['results']['csv'] == row_str def test_timeseries_convert_to_df_node(hydrocron_api): @@ -706,3 +442,300 @@ def test_timeseries_lambda_handler_missing_header(hydrocron_api): with pytest.raises(hydrocron.api.controllers.timeseries.RequestError) as e: hydrocron.api.controllers.timeseries.lambda_handler(event, context) assert "400: Issue encountered with request headers" in str(e.value) + + +def test_timeseries_lambda_handler_geojson_accept(hydrocron_api): + """ + Test the lambda handler for the timeseries endpoint + Parameters + ---------- + hydrocron_api: Fixture ensuring the database is configured for the api + """ + import hydrocron.api.controllers.timeseries + + event = { + "body": { + "feature": "Reach", + "feature_id": "71224100223", + "start_time": "2023-06-04T00:00:00Z", + "end_time": "2023-06-23T00:00:00Z", + "fields": "reach_id,time_str,wse,sword_version,collection_shortname,crid", + "compact": "false" + }, + "headers": { + "User-Agent": "curl/8.4.0", + "X-Forwarded-For": "123.456.789.000", + "Accept": "application/geo+json" + } + } + + context = "_" + result = hydrocron.api.controllers.timeseries.lambda_handler(event, context) + test_data = (pathlib.Path(os.path.dirname(os.path.realpath(__file__))) + .joinpath('test_data').joinpath('api_query_results_geojson.json')) + with open(test_data) as jf: + expected = json.load(jf) + assert result == expected + + +def test_timeseries_lambda_handler_csv_accept(hydrocron_api): + """ + Test the lambda handler for the timeseries endpoint + Parameters + ---------- + hydrocron_api: Fixture ensuring the database is configured for the api + """ + + import hydrocron.api.controllers.timeseries + + event = { + "body": { + "feature": "Reach", + "feature_id": "71224100223", + "start_time": "2023-06-04T00:00:00Z", + "end_time": "2023-06-23T00:00:00Z", + "fields": "reach_id,time_str,wse,sword_version,collection_shortname,crid,geometry" + }, + "headers": { + "User-Agent": "curl/8.4.0", + "X-Forwarded-For": "123.456.789.000", + "Accept": "text/csv" + } + } + + context = "_" + result = hydrocron.api.controllers.timeseries.lambda_handler(event, context) + + test_data = (pathlib.Path(os.path.dirname(os.path.realpath(__file__))).joinpath('test_data').joinpath('api_query_results_csv.csv')) + with open(test_data) as csv_file: + csv_reader = csv.reader(csv_file, delimiter=',', quotechar=None) + row_str = "" + for row in csv_reader: + row_str += f"{','.join(row)}\n" + + assert result == row_str + + +def test_timeseries_lambda_handler_geojson_accept_output(hydrocron_api): + """ + Test the lambda handler for the timeseries endpoint + Parameters + ---------- + hydrocron_api: Fixture ensuring the database is configured for the api + """ + import hydrocron.api.controllers.timeseries + + event = { + "body": { + "feature": "Reach", + "feature_id": "71224100223", + "start_time": "2023-06-04T00:00:00Z", + "end_time": "2023-06-23T00:00:00Z", + "output": "geojson", + "fields": "reach_id,time_str,wse,sword_version,collection_shortname,crid" + }, + "headers": { + "User-Agent": "curl/8.4.0", + "X-Forwarded-For": "123.456.789.000", + "Accept": "application/geo+json" + } + } + + context = "_" + with pytest.raises(hydrocron.api.controllers.timeseries.RequestError) as e: + hydrocron.api.controllers.timeseries.lambda_handler(event, context) + assert "400: Invalid combination of Accept header and output request parameter" in str(e.value) + + +def test_timeseries_lambda_handler_json_no_output(hydrocron_api): + """ + Test the lambda handler for the timeseries endpoint + Parameters + ---------- + hydrocron_api: Fixture ensuring the database is configured for the api + """ + import hydrocron.api.controllers.timeseries + + event = { + "body": { + "feature": "Reach", + "feature_id": "71224100223", + "start_time": "2023-06-04T00:00:00Z", + "end_time": "2023-06-23T00:00:00Z", + "fields": "reach_id,time_str,wse,sword_version,collection_shortname,crid" + }, + "headers": { + "User-Agent": "curl/8.4.0", + "X-Forwarded-For": "123.456.789.000" + } + } + + context = "_" + result = hydrocron.api.controllers.timeseries.lambda_handler(event, context) + test_data = (pathlib.Path(os.path.dirname(os.path.realpath(__file__))) + .joinpath('test_data').joinpath('api_query_results_geojson.json')) + with open(test_data) as jf: + expected = json.load(jf) + assert result['status'] == '200 OK' and \ + result['results']['geojson'] == expected + +def test_timeseries_lambda_handler_json_multi_accept(hydrocron_api): + """ + Test the lambda handler for the timeseries endpoint + Parameters + ---------- + hydrocron_api: Fixture ensuring the database is configured for the api + """ + import hydrocron.api.controllers.timeseries + + event = { + "body": { + "feature": "Reach", + "feature_id": "71224100223", + "start_time": "2023-06-04T00:00:00Z", + "end_time": "2023-06-23T00:00:00Z", + "fields": "reach_id,time_str,wse,sword_version,collection_shortname,crid" + }, + "headers": { + "User-Agent": "curl/8.4.0", + "X-Forwarded-For": "123.456.789.000", + "Accept": "image/webp,image/*,*/*;q=0.8" + } + } + + context = "_" + result = hydrocron.api.controllers.timeseries.lambda_handler(event, context) + test_data = (pathlib.Path(os.path.dirname(os.path.realpath(__file__))) + .joinpath('test_data').joinpath('api_query_results_geojson.json')) + with open(test_data) as jf: + expected = json.load(jf) + assert result['status'] == '200 OK' and \ + result['results']['geojson'] == expected + + +def test_timeseries_lambda_handler_unsupported(hydrocron_api): + """ + Test the lambda handler for the timeseries endpoint + Parameters + ---------- + hydrocron_api: Fixture ensuring the database is configured for the api + """ + import hydrocron.api.controllers.timeseries + + event = { + "body": { + "feature": "Reach", + "feature_id": "71224100223", + "start_time": "2023-06-04T00:00:00Z", + "end_time": "2023-06-23T00:00:00Z", + "fields": "reach_id,time_str,wse,sword_version,collection_shortname,crid" + }, + "headers": { + "User-Agent": "curl/8.4.0", + "X-Forwarded-For": "123.456.789.000", + "Accept": "image/jpg" + } + } + + context = "_" + with pytest.raises(hydrocron.api.controllers.timeseries.RequestError) as e: + hydrocron.api.controllers.timeseries.lambda_handler(event, context) + assert "415: Unsupported media type in Accept request header: image/jpg." in str(e.value) + + +def test_timeseries_lambda_handler_reachid_not_found(hydrocron_api): + """ + Test the lambda handler for the timeseries endpoint + Parameters + ---------- + hydrocron_api: Fixture ensuring the database is configured for the api + """ + import hydrocron.api.controllers.timeseries + + event = { + "body": { + "feature": "Reach", + "feature_id": "71224100228", + "start_time": "2023-06-04T00:00:00Z", + "end_time": "2023-06-23T00:00:00Z", + "fields": "reach_id,time_str,wse,sword_version,collection_shortname,crid" + }, + "headers": { + "User-Agent": "curl/8.4.0", + "X-Forwarded-For": "123.456.789.000", + "Accept": "image/jpg" + } + } + + context = "_" + with pytest.raises(hydrocron.api.controllers.timeseries.RequestError) as e: + hydrocron.api.controllers.timeseries.lambda_handler(event, context) + assert "400: Results with the specified Feature ID 71224100228 were not found" in str(e.value) + + +def test_timeseries_lambda_handler_json_compact(hydrocron_api): + """ + Test the lambda handler for the timeseries endpoint + Parameters + ---------- + hydrocron_api: Fixture ensuring the database is configured for the api + """ + import hydrocron.api.controllers.timeseries + + event = { + "body": { + "feature": "Reach", + "feature_id": "71224100223", + "start_time": "2023-06-04T00:00:00Z", + "end_time": "2023-06-23T00:00:00Z", + "output": "geojson", + "fields": "reach_id,time_str,wse,sword_version,collection_shortname,crid", + "compact": "true" + }, + "headers": { + "User-Agent": "curl/8.4.0", + "X-Forwarded-For": "123.456.789.000" + } + } + + context = "_" + result = hydrocron.api.controllers.timeseries.lambda_handler(event, context) + test_data = (pathlib.Path(os.path.dirname(os.path.realpath(__file__))) + .joinpath('test_data').joinpath('api_query_results_geojson_compact.json')) + with open(test_data) as jf: + expected = json.load(jf) + assert result['status'] == '200 OK' and \ + result['results']['geojson'] == expected + + +def test_timeseries_lambda_handler_geojson_accept_compact(hydrocron_api): + """ + Test the lambda handler for the timeseries endpoint + Parameters + ---------- + hydrocron_api: Fixture ensuring the database is configured for the api + """ + import hydrocron.api.controllers.timeseries + + event = { + "body": { + "feature": "Reach", + "feature_id": "71224100223", + "start_time": "2023-06-04T00:00:00Z", + "end_time": "2023-06-23T00:00:00Z", + "fields": "reach_id,time_str,wse,sword_version,collection_shortname,crid", + }, + "headers": { + "User-Agent": "curl/8.4.0", + "X-Forwarded-For": "123.456.789.000", + "Accept": "application/geo+json" + } + } + + context = "_" + result = hydrocron.api.controllers.timeseries.lambda_handler(event, context) + test_data = (pathlib.Path(os.path.dirname(os.path.realpath(__file__))) + .joinpath('test_data').joinpath('api_query_results_geojson_compact.json')) + with open(test_data) as jf: + expected = json.load(jf) + assert result == expected \ No newline at end of file diff --git a/tests/test_authorizer.py b/tests/test_authorizer.py new file mode 100644 index 00000000..baa84961 --- /dev/null +++ b/tests/test_authorizer.py @@ -0,0 +1,96 @@ +""" +Test Lambda authorizer. +""" + +import json +import os +import pathlib +import unittest + +import boto3 +import moto + +class TestAuthorizer(unittest.TestCase): + + def setUp(self): + + # Set up mock + self.mock_aws = moto.mock_aws() + self.mock_aws.start() + + # Set region + os.environ["AWS_DEFAULT_REGION"] = "us-west-2" + + # Create SSM client and put API keys + ssm = boto3.client("ssm") + ssm.put_parameter(Name="/service/hydrocron/api-key-default", Value="abc123", Type="SecureString") + ssm.put_parameter(Name="/service/hydrocron/api-key-trusted", Value="def456", Type="SecureString") + + def tearDown(self): + + self.mock_aws.stop() + + + def test_authorizer_lambda_handler_default(self): + """ + Test the lambda handler for the Lambda authorizer for default users. + """ + import hydrocron.api.controllers.authorizer + + + test_event = (pathlib.Path(os.path.dirname(os.path.realpath(__file__))) + .joinpath('test_data').joinpath('api_authorizer_default.json')) + with open(test_event) as jf: + event = json.load(jf) + context = "_" + + result = hydrocron.api.controllers.authorizer.authorization_handler(event, context) + + expected_policy = { + "principalId": "default_user", + "policyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Action": "execute-api:Invoke", + "Effect": "Allow", + "Resource": "arn:aws:execute-api:us-west-2:xxxx:xxxx/v1/GET/timeseries" + } + ] + }, + "usageIdentifierKey": "abc123" + } + + self.assertEqual(result, expected_policy) + + def test_authorizer_lambda_handler_trusted(self): + """ + Test the lambda handler for the Lambda authorizer for trusted users. + """ + import hydrocron.api.controllers.authorizer + + + test_event = (pathlib.Path(os.path.dirname(os.path.realpath(__file__))) + .joinpath('test_data').joinpath('api_authorizer_trusted.json')) + with open(test_event) as jf: + event = json.load(jf) + context = "_" + + result = hydrocron.api.controllers.authorizer.authorization_handler(event, context) + + expected_policy = { + "principalId": "trusted_partner", + "policyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Action": "execute-api:Invoke", + "Effect": "Allow", + "Resource": "arn:aws:execute-api:us-west-2:xxxx:xxxx/v1/GET/timeseries" + } + ] + }, + "usageIdentifierKey": "def456" + } + + self.assertEqual(result, expected_policy) \ No newline at end of file diff --git a/tests/test_connection.py b/tests/test_connection.py index e894436c..b9b9c066 100644 --- a/tests/test_connection.py +++ b/tests/test_connection.py @@ -21,3 +21,10 @@ def test_s3_resource(s3_connection): # Import module from hydrocron.utils import connection assert type(connection.s3_resource).__name__ == "s3.ServiceResource" + +def test_ssm_client(): + """Test retrieval of DynamoDB resource.""" + + # Import module + from hydrocron.utils import connection + assert type(connection.ssm_client).__name__ == "SSM" diff --git a/tests/test_data/api_authorizer_default.json b/tests/test_data/api_authorizer_default.json new file mode 100644 index 00000000..c54345e0 --- /dev/null +++ b/tests/test_data/api_authorizer_default.json @@ -0,0 +1,20 @@ +{ + "type": "REQUEST", + "methodArn": "arn:aws:execute-api:us-west-2:xxxx:xxxx/v1/GET/timeseries", + "resource": "/timeseries", + "path": "/timeseries", + "httpMethod": "GET", + "headers": { + "x-api-key": "abc123" + }, + "pathParameters": {}, + "stageVariables": {}, + "requestContext": { + "identity": { + "userAgent": "curl/8.6.0" + }, + "domainName": "xxx.execute-api.us-west-2.amazonaws.com", + "deploymentId": "xxx", + "apiId": "xxx" + } +} \ No newline at end of file diff --git a/tests/test_data/api_authorizer_trusted.json b/tests/test_data/api_authorizer_trusted.json new file mode 100644 index 00000000..2cf429ac --- /dev/null +++ b/tests/test_data/api_authorizer_trusted.json @@ -0,0 +1,20 @@ +{ + "type": "REQUEST", + "methodArn": "arn:aws:execute-api:us-west-2:xxxx:xxxx/v1/GET/timeseries", + "resource": "/timeseries", + "path": "/timeseries", + "httpMethod": "GET", + "headers": { + "x-hydrocron-key": "def456" + }, + "pathParameters": {}, + "stageVariables": {}, + "requestContext": { + "identity": { + "userAgent": "curl/8.6.0" + }, + "domainName": "xxx.execute-api.us-west-2.amazonaws.com", + "deploymentId": "xxx", + "apiId": "xxx" + } +} \ No newline at end of file diff --git a/tests/test_data/api_query_results_csv.csv b/tests/test_data/api_query_results_csv.csv new file mode 100644 index 00000000..ecda0f46 --- /dev/null +++ b/tests/test_data/api_query_results_csv.csv @@ -0,0 +1,2 @@ +reach_id,time_str,wse,sword_version,collection_shortname,crid,geometry,wse_units +71224100223,2023-06-10T19:39:43Z,286.2983,15,SWOT_L2_HR_RiverSP_2.0,PIA1,"LINESTRING (-95.564991 50.223686, -95.564559 50.223479, -95.564133 50.223381, -95.563713 50.22339, -95.563296 50.223453, -95.562884 50.223624, -95.562473 50.223795, -95.562062 50.223966, -95.56165 50.224137, -95.561242 50.224362, -95.560917 50.224585, -95.560595 50.224862, -95.560271 50.225085, -95.559946 50.225308, -95.559946 50.225308, -95.559213 50.225756, -95.558804 50.225981, -95.558567 50.226256, -95.558413 50.226529, -95.558343 50.226801, -95.558274 50.227072, -95.558288 50.227342, -95.558303 50.227611, -95.558317 50.227881, -95.558416 50.228148, -95.558514 50.228416, -95.558697 50.228682, -95.558795 50.22895, -95.558978 50.229216, -95.559076 50.229483, -95.559259 50.229749, -95.559357 50.230017, -95.559455 50.230284, -95.55947 50.230554, -95.559484 50.230823, -95.559583 50.231091, -95.559765 50.231357, -95.559864 50.231625, -95.559878 50.231894, -95.559809 50.232166, -95.559571 50.232441, -95.559165 50.23272, -95.558757 50.232944, -95.558348 50.233169, -95.557939 50.233394, -95.55753 50.233619, -95.557206 50.233842, -95.556884 50.234119, -95.556562 50.234396, -95.556241 50.234673, -95.556003 50.234948, -95.555681 50.235225, -95.555443 50.2355, -95.555206 50.235775, -95.555136 50.236047, -95.555066 50.236318, -95.555081 50.236588, -95.555011 50.236859, -95.554941 50.23713, -95.554701 50.237351, -95.554376 50.237575, -95.554052 50.237798, -95.553727 50.238021, -95.553727 50.238021, -95.55308 50.238521, -95.552843 50.238796, -95.552521 50.239073, -95.552367 50.239346, -95.552297 50.239617, -95.552312 50.239887, -95.552326 50.240156, -95.552425 50.240424, -95.552439 50.240693, -95.552453 50.240963, -95.552468 50.241233, -95.552482 50.241502, -95.552497 50.241772, -95.552511 50.242041, -95.552525 50.242311, -95.552456 50.242582, -95.552299 50.242801, -95.552056 50.242969, -95.551728 50.243138, -95.551314 50.243255, -95.550899 50.243372, -95.550487 50.243543, -95.550076 50.243714, -95.549661 50.243831, -95.549249 50.244002, -95.548838 50.244173, -95.548423 50.24429, -95.548011 50.244461, -95.547603 50.244686, -95.547278 50.244909, -95.546953 50.245132, -95.546715 50.245407, -95.546561 50.24568, -95.546492 50.245951, -95.546422 50.246223, -95.546436 50.246492, -95.546367 50.246764, -95.546297 50.247035, -95.546143 50.247308, -95.54599 50.247582, -95.545752 50.247857, -95.545598 50.24813, -95.545444 50.248403, -95.545374 50.248674, -95.545305 50.248946, -95.545319 50.249215, -95.545333 50.249485, -95.545348 50.249754, -95.545446 50.250022, -95.545545 50.25029, -95.545727 50.250556, -95.54591 50.250822, -95.546176 50.251086, -95.546359 50.251351, -95.546625 50.251615, -95.546892 50.251879, -95.547075 50.252145, -95.547257 50.252411, -95.54744 50.252677, -95.547538 50.252945, -95.547553 50.253214, -95.547651 50.253482, -95.547581 50.253753, -95.547512 50.254025, -95.547442 50.254296, -95.547372 50.254568, -95.547303 50.254839, -95.547317 50.255108, -95.547247 50.25538, -95.547177 50.255651, -95.547192 50.255921, -95.547206 50.25619, -95.547221 50.25646, -95.547319 50.256728, -95.547418 50.256995, -95.547432 50.257265, -95.547446 50.257534, -95.547461 50.257804, -95.547475 50.258073, -95.547489 50.258343, -95.547504 50.258613, -95.547518 50.258882, -95.547449 50.259153, -95.547379 50.259425, -95.547309 50.259696, -95.547239 50.259968, -95.547086 50.260241, -95.547016 50.260512, -95.546946 50.260784, -95.546876 50.261055, -95.546807 50.261326, -95.546737 50.261598, -95.546583 50.261871, -95.546345 50.262146, -95.54602 50.262369, -95.545611 50.262594, -95.5452 50.262765, -95.544788 50.262936, -95.544373 50.263053, -95.543961 50.263224, -95.543546 50.263341, -95.543135 50.263512, -95.542723 50.263683, -95.542314 50.263907, -95.541989 50.26413, -95.541667 50.264407, -95.541345 50.264684, -95.541107 50.264959, -95.540869 50.265234, -95.540631 50.265509, -95.540393 50.265785, -95.540155 50.26606, -95.539917 50.266335, -95.539679 50.26661, -95.539441 50.266885, -95.539203 50.26716, -95.538962 50.267381, -95.538634 50.26755, -95.538304 50.267665, -95.537889 50.267782, -95.537471 50.267845, -95.537056 50.267962, -95.536642 50.268079, -95.536227 50.268196, -95.535809 50.268259, -95.535391 50.268323, -95.534974 50.268386, -95.534556 50.268449, -95.534138 50.268512, -95.533718 50.268521, -95.5333 50.268584, -95.532882 50.268647, -95.532552 50.268762, -95.532224 50.268931, -95.531986 50.269206, -95.531748 50.269481, -95.531594 50.269755, -95.531356 50.27003, -95.531202 50.270303, -95.531048 50.270576, -95.530978 50.270847, -95.530908 50.271119, -95.530923 50.271388, -95.530937 50.271658, -95.530951 50.271927, -95.53105 50.272195, -95.531148 50.272463, -95.531331 50.272729, -95.531513 50.272995, -95.531696 50.273261, -95.531878 50.273526, -95.532145 50.27379, -95.532327 50.274056, -95.532594 50.27432, -95.532861 50.274584, -95.533043 50.27485, -95.533142 50.275118, -95.53324 50.275386, -95.533339 50.275653, -95.533437 50.275921, -95.533536 50.276189, -95.533634 50.276457, -95.533732 50.276724, -95.533747 50.276994, -95.533761 50.277263, -95.533859 50.277531, -95.533958 50.277799, -95.53414 50.278065, -95.534323 50.278331, -95.534506 50.278596, -95.534688 50.278862, -95.534871 50.279128, -95.534969 50.279396, -95.535152 50.279662, -95.535334 50.279928, -95.535433 50.280195, -95.535615 50.280461, -95.535798 50.280727, -95.535812 50.280997, -95.535743 50.281268, -95.535589 50.281541, -95.535266 50.281818, -95.53486 50.282097, -95.534454 50.282376, -95.534132 50.282652, -95.533893 50.282927, -95.533824 50.283199, -95.533838 50.283468, -95.534021 50.283734, -95.534203 50.284, -95.53447 50.284264, -95.534652 50.28453, -95.534835 50.284796, -95.535018 50.285062, -95.5352 50.285328, -95.535383 50.285594, -95.535565 50.285859, -95.535832 50.286123, -95.536099 50.286387, -95.53645 50.28665, -95.536801 50.286912, -95.537152 50.287174, -95.537418 50.287438, -95.537601 50.287704, -95.5377 50.287972, -95.537798 50.288239, -95.537897 50.288507, -95.537995 50.288775, -95.538093 50.289043, -95.538192 50.28931, -95.538206 50.28958, -95.538221 50.289849, -95.538235 50.290119, -95.538334 50.290387, -95.538432 50.290654, -95.538531 50.290922, -95.538629 50.29119)",m \ No newline at end of file diff --git a/tests/test_data/api_query_results_geojson.json b/tests/test_data/api_query_results_geojson.json new file mode 100644 index 00000000..84bd077e --- /dev/null +++ b/tests/test_data/api_query_results_geojson.json @@ -0,0 +1,1147 @@ +{ + "type": "FeatureCollection", + "features": [ + { + "id": "0", + "properties": { + "reach_id": "71224100223", + "time_str": "2023-06-10T19:39:43Z", + "wse": "286.2983", + "sword_version": "15", + "collection_shortname": "SWOT_L2_HR_RiverSP_2.0", + "crid": "PIA1", + "wse_units": "m" + }, + "geometry": { + "coordinates": [ + [ + -95.564991, + 50.223686 + ], + [ + -95.564559, + 50.223479 + ], + [ + -95.564133, + 50.223381 + ], + [ + -95.563713, + 50.22339 + ], + [ + -95.563296, + 50.223453 + ], + [ + -95.562884, + 50.223624 + ], + [ + -95.562473, + 50.223795 + ], + [ + -95.562062, + 50.223966 + ], + [ + -95.56165, + 50.224137 + ], + [ + -95.561242, + 50.224362 + ], + [ + -95.560917, + 50.224585 + ], + [ + -95.560595, + 50.224862 + ], + [ + -95.560271, + 50.225085 + ], + [ + -95.559946, + 50.225308 + ], + [ + -95.559946, + 50.225308 + ], + [ + -95.559213, + 50.225756 + ], + [ + -95.558804, + 50.225981 + ], + [ + -95.558567, + 50.226256 + ], + [ + -95.558413, + 50.226529 + ], + [ + -95.558343, + 50.226801 + ], + [ + -95.558274, + 50.227072 + ], + [ + -95.558288, + 50.227342 + ], + [ + -95.558303, + 50.227611 + ], + [ + -95.558317, + 50.227881 + ], + [ + -95.558416, + 50.228148 + ], + [ + -95.558514, + 50.228416 + ], + [ + -95.558697, + 50.228682 + ], + [ + -95.558795, + 50.22895 + ], + [ + -95.558978, + 50.229216 + ], + [ + -95.559076, + 50.229483 + ], + [ + -95.559259, + 50.229749 + ], + [ + -95.559357, + 50.230017 + ], + [ + -95.559455, + 50.230284 + ], + [ + -95.55947, + 50.230554 + ], + [ + -95.559484, + 50.230823 + ], + [ + -95.559583, + 50.231091 + ], + [ + -95.559765, + 50.231357 + ], + [ + -95.559864, + 50.231625 + ], + [ + -95.559878, + 50.231894 + ], + [ + -95.559809, + 50.232166 + ], + [ + -95.559571, + 50.232441 + ], + [ + -95.559165, + 50.23272 + ], + [ + -95.558757, + 50.232944 + ], + [ + -95.558348, + 50.233169 + ], + [ + -95.557939, + 50.233394 + ], + [ + -95.55753, + 50.233619 + ], + [ + -95.557206, + 50.233842 + ], + [ + -95.556884, + 50.234119 + ], + [ + -95.556562, + 50.234396 + ], + [ + -95.556241, + 50.234673 + ], + [ + -95.556003, + 50.234948 + ], + [ + -95.555681, + 50.235225 + ], + [ + -95.555443, + 50.2355 + ], + [ + -95.555206, + 50.235775 + ], + [ + -95.555136, + 50.236047 + ], + [ + -95.555066, + 50.236318 + ], + [ + -95.555081, + 50.236588 + ], + [ + -95.555011, + 50.236859 + ], + [ + -95.554941, + 50.23713 + ], + [ + -95.554701, + 50.237351 + ], + [ + -95.554376, + 50.237575 + ], + [ + -95.554052, + 50.237798 + ], + [ + -95.553727, + 50.238021 + ], + [ + -95.553727, + 50.238021 + ], + [ + -95.55308, + 50.238521 + ], + [ + -95.552843, + 50.238796 + ], + [ + -95.552521, + 50.239073 + ], + [ + -95.552367, + 50.239346 + ], + [ + -95.552297, + 50.239617 + ], + [ + -95.552312, + 50.239887 + ], + [ + -95.552326, + 50.240156 + ], + [ + -95.552425, + 50.240424 + ], + [ + -95.552439, + 50.240693 + ], + [ + -95.552453, + 50.240963 + ], + [ + -95.552468, + 50.241233 + ], + [ + -95.552482, + 50.241502 + ], + [ + -95.552497, + 50.241772 + ], + [ + -95.552511, + 50.242041 + ], + [ + -95.552525, + 50.242311 + ], + [ + -95.552456, + 50.242582 + ], + [ + -95.552299, + 50.242801 + ], + [ + -95.552056, + 50.242969 + ], + [ + -95.551728, + 50.243138 + ], + [ + -95.551314, + 50.243255 + ], + [ + -95.550899, + 50.243372 + ], + [ + -95.550487, + 50.243543 + ], + [ + -95.550076, + 50.243714 + ], + [ + -95.549661, + 50.243831 + ], + [ + -95.549249, + 50.244002 + ], + [ + -95.548838, + 50.244173 + ], + [ + -95.548423, + 50.24429 + ], + [ + -95.548011, + 50.244461 + ], + [ + -95.547603, + 50.244686 + ], + [ + -95.547278, + 50.244909 + ], + [ + -95.546953, + 50.245132 + ], + [ + -95.546715, + 50.245407 + ], + [ + -95.546561, + 50.24568 + ], + [ + -95.546492, + 50.245951 + ], + [ + -95.546422, + 50.246223 + ], + [ + -95.546436, + 50.246492 + ], + [ + -95.546367, + 50.246764 + ], + [ + -95.546297, + 50.247035 + ], + [ + -95.546143, + 50.247308 + ], + [ + -95.54599, + 50.247582 + ], + [ + -95.545752, + 50.247857 + ], + [ + -95.545598, + 50.24813 + ], + [ + -95.545444, + 50.248403 + ], + [ + -95.545374, + 50.248674 + ], + [ + -95.545305, + 50.248946 + ], + [ + -95.545319, + 50.249215 + ], + [ + -95.545333, + 50.249485 + ], + [ + -95.545348, + 50.249754 + ], + [ + -95.545446, + 50.250022 + ], + [ + -95.545545, + 50.25029 + ], + [ + -95.545727, + 50.250556 + ], + [ + -95.54591, + 50.250822 + ], + [ + -95.546176, + 50.251086 + ], + [ + -95.546359, + 50.251351 + ], + [ + -95.546625, + 50.251615 + ], + [ + -95.546892, + 50.251879 + ], + [ + -95.547075, + 50.252145 + ], + [ + -95.547257, + 50.252411 + ], + [ + -95.54744, + 50.252677 + ], + [ + -95.547538, + 50.252945 + ], + [ + -95.547553, + 50.253214 + ], + [ + -95.547651, + 50.253482 + ], + [ + -95.547581, + 50.253753 + ], + [ + -95.547512, + 50.254025 + ], + [ + -95.547442, + 50.254296 + ], + [ + -95.547372, + 50.254568 + ], + [ + -95.547303, + 50.254839 + ], + [ + -95.547317, + 50.255108 + ], + [ + -95.547247, + 50.25538 + ], + [ + -95.547177, + 50.255651 + ], + [ + -95.547192, + 50.255921 + ], + [ + -95.547206, + 50.25619 + ], + [ + -95.547221, + 50.25646 + ], + [ + -95.547319, + 50.256728 + ], + [ + -95.547418, + 50.256995 + ], + [ + -95.547432, + 50.257265 + ], + [ + -95.547446, + 50.257534 + ], + [ + -95.547461, + 50.257804 + ], + [ + -95.547475, + 50.258073 + ], + [ + -95.547489, + 50.258343 + ], + [ + -95.547504, + 50.258613 + ], + [ + -95.547518, + 50.258882 + ], + [ + -95.547449, + 50.259153 + ], + [ + -95.547379, + 50.259425 + ], + [ + -95.547309, + 50.259696 + ], + [ + -95.547239, + 50.259968 + ], + [ + -95.547086, + 50.260241 + ], + [ + -95.547016, + 50.260512 + ], + [ + -95.546946, + 50.260784 + ], + [ + -95.546876, + 50.261055 + ], + [ + -95.546807, + 50.261326 + ], + [ + -95.546737, + 50.261598 + ], + [ + -95.546583, + 50.261871 + ], + [ + -95.546345, + 50.262146 + ], + [ + -95.54602, + 50.262369 + ], + [ + -95.545611, + 50.262594 + ], + [ + -95.5452, + 50.262765 + ], + [ + -95.544788, + 50.262936 + ], + [ + -95.544373, + 50.263053 + ], + [ + -95.543961, + 50.263224 + ], + [ + -95.543546, + 50.263341 + ], + [ + -95.543135, + 50.263512 + ], + [ + -95.542723, + 50.263683 + ], + [ + -95.542314, + 50.263907 + ], + [ + -95.541989, + 50.26413 + ], + [ + -95.541667, + 50.264407 + ], + [ + -95.541345, + 50.264684 + ], + [ + -95.541107, + 50.264959 + ], + [ + -95.540869, + 50.265234 + ], + [ + -95.540631, + 50.265509 + ], + [ + -95.540393, + 50.265785 + ], + [ + -95.540155, + 50.26606 + ], + [ + -95.539917, + 50.266335 + ], + [ + -95.539679, + 50.26661 + ], + [ + -95.539441, + 50.266885 + ], + [ + -95.539203, + 50.26716 + ], + [ + -95.538962, + 50.267381 + ], + [ + -95.538634, + 50.26755 + ], + [ + -95.538304, + 50.267665 + ], + [ + -95.537889, + 50.267782 + ], + [ + -95.537471, + 50.267845 + ], + [ + -95.537056, + 50.267962 + ], + [ + -95.536642, + 50.268079 + ], + [ + -95.536227, + 50.268196 + ], + [ + -95.535809, + 50.268259 + ], + [ + -95.535391, + 50.268323 + ], + [ + -95.534974, + 50.268386 + ], + [ + -95.534556, + 50.268449 + ], + [ + -95.534138, + 50.268512 + ], + [ + -95.533718, + 50.268521 + ], + [ + -95.5333, + 50.268584 + ], + [ + -95.532882, + 50.268647 + ], + [ + -95.532552, + 50.268762 + ], + [ + -95.532224, + 50.268931 + ], + [ + -95.531986, + 50.269206 + ], + [ + -95.531748, + 50.269481 + ], + [ + -95.531594, + 50.269755 + ], + [ + -95.531356, + 50.27003 + ], + [ + -95.531202, + 50.270303 + ], + [ + -95.531048, + 50.270576 + ], + [ + -95.530978, + 50.270847 + ], + [ + -95.530908, + 50.271119 + ], + [ + -95.530923, + 50.271388 + ], + [ + -95.530937, + 50.271658 + ], + [ + -95.530951, + 50.271927 + ], + [ + -95.53105, + 50.272195 + ], + [ + -95.531148, + 50.272463 + ], + [ + -95.531331, + 50.272729 + ], + [ + -95.531513, + 50.272995 + ], + [ + -95.531696, + 50.273261 + ], + [ + -95.531878, + 50.273526 + ], + [ + -95.532145, + 50.27379 + ], + [ + -95.532327, + 50.274056 + ], + [ + -95.532594, + 50.27432 + ], + [ + -95.532861, + 50.274584 + ], + [ + -95.533043, + 50.27485 + ], + [ + -95.533142, + 50.275118 + ], + [ + -95.53324, + 50.275386 + ], + [ + -95.533339, + 50.275653 + ], + [ + -95.533437, + 50.275921 + ], + [ + -95.533536, + 50.276189 + ], + [ + -95.533634, + 50.276457 + ], + [ + -95.533732, + 50.276724 + ], + [ + -95.533747, + 50.276994 + ], + [ + -95.533761, + 50.277263 + ], + [ + -95.533859, + 50.277531 + ], + [ + -95.533958, + 50.277799 + ], + [ + -95.53414, + 50.278065 + ], + [ + -95.534323, + 50.278331 + ], + [ + -95.534506, + 50.278596 + ], + [ + -95.534688, + 50.278862 + ], + [ + -95.534871, + 50.279128 + ], + [ + -95.534969, + 50.279396 + ], + [ + -95.535152, + 50.279662 + ], + [ + -95.535334, + 50.279928 + ], + [ + -95.535433, + 50.280195 + ], + [ + -95.535615, + 50.280461 + ], + [ + -95.535798, + 50.280727 + ], + [ + -95.535812, + 50.280997 + ], + [ + -95.535743, + 50.281268 + ], + [ + -95.535589, + 50.281541 + ], + [ + -95.535266, + 50.281818 + ], + [ + -95.53486, + 50.282097 + ], + [ + -95.534454, + 50.282376 + ], + [ + -95.534132, + 50.282652 + ], + [ + -95.533893, + 50.282927 + ], + [ + -95.533824, + 50.283199 + ], + [ + -95.533838, + 50.283468 + ], + [ + -95.534021, + 50.283734 + ], + [ + -95.534203, + 50.284 + ], + [ + -95.53447, + 50.284264 + ], + [ + -95.534652, + 50.28453 + ], + [ + -95.534835, + 50.284796 + ], + [ + -95.535018, + 50.285062 + ], + [ + -95.5352, + 50.285328 + ], + [ + -95.535383, + 50.285594 + ], + [ + -95.535565, + 50.285859 + ], + [ + -95.535832, + 50.286123 + ], + [ + -95.536099, + 50.286387 + ], + [ + -95.53645, + 50.28665 + ], + [ + -95.536801, + 50.286912 + ], + [ + -95.537152, + 50.287174 + ], + [ + -95.537418, + 50.287438 + ], + [ + -95.537601, + 50.287704 + ], + [ + -95.5377, + 50.287972 + ], + [ + -95.537798, + 50.288239 + ], + [ + -95.537897, + 50.288507 + ], + [ + -95.537995, + 50.288775 + ], + [ + -95.538093, + 50.289043 + ], + [ + -95.538192, + 50.28931 + ], + [ + -95.538206, + 50.28958 + ], + [ + -95.538221, + 50.289849 + ], + [ + -95.538235, + 50.290119 + ], + [ + -95.538334, + 50.290387 + ], + [ + -95.538432, + 50.290654 + ], + [ + -95.538531, + 50.290922 + ], + [ + -95.538629, + 50.29119 + ] + ], + "type": "LineString" + }, + "type": "Feature" + } + ] +} \ No newline at end of file diff --git a/tests/test_data/api_query_results_geojson_compact.json b/tests/test_data/api_query_results_geojson_compact.json new file mode 100644 index 00000000..f8cd7f28 --- /dev/null +++ b/tests/test_data/api_query_results_geojson_compact.json @@ -0,0 +1,1161 @@ +{ + "type": "FeatureCollection", + "features": [ + { + "id": "0", + "properties": { + "reach_id": [ + "71224100223" + ], + "time_str": [ + "2023-06-10T19:39:43Z" + ], + "wse": [ + "286.2983" + ], + "sword_version": [ + "15" + ], + "collection_shortname": [ + "SWOT_L2_HR_RiverSP_2.0" + ], + "crid": [ + "PIA1" + ], + "wse_units": [ + "m" + ] + }, + "geometry": { + "coordinates": [ + [ + -95.564991, + 50.223686 + ], + [ + -95.564559, + 50.223479 + ], + [ + -95.564133, + 50.223381 + ], + [ + -95.563713, + 50.22339 + ], + [ + -95.563296, + 50.223453 + ], + [ + -95.562884, + 50.223624 + ], + [ + -95.562473, + 50.223795 + ], + [ + -95.562062, + 50.223966 + ], + [ + -95.56165, + 50.224137 + ], + [ + -95.561242, + 50.224362 + ], + [ + -95.560917, + 50.224585 + ], + [ + -95.560595, + 50.224862 + ], + [ + -95.560271, + 50.225085 + ], + [ + -95.559946, + 50.225308 + ], + [ + -95.559946, + 50.225308 + ], + [ + -95.559213, + 50.225756 + ], + [ + -95.558804, + 50.225981 + ], + [ + -95.558567, + 50.226256 + ], + [ + -95.558413, + 50.226529 + ], + [ + -95.558343, + 50.226801 + ], + [ + -95.558274, + 50.227072 + ], + [ + -95.558288, + 50.227342 + ], + [ + -95.558303, + 50.227611 + ], + [ + -95.558317, + 50.227881 + ], + [ + -95.558416, + 50.228148 + ], + [ + -95.558514, + 50.228416 + ], + [ + -95.558697, + 50.228682 + ], + [ + -95.558795, + 50.22895 + ], + [ + -95.558978, + 50.229216 + ], + [ + -95.559076, + 50.229483 + ], + [ + -95.559259, + 50.229749 + ], + [ + -95.559357, + 50.230017 + ], + [ + -95.559455, + 50.230284 + ], + [ + -95.55947, + 50.230554 + ], + [ + -95.559484, + 50.230823 + ], + [ + -95.559583, + 50.231091 + ], + [ + -95.559765, + 50.231357 + ], + [ + -95.559864, + 50.231625 + ], + [ + -95.559878, + 50.231894 + ], + [ + -95.559809, + 50.232166 + ], + [ + -95.559571, + 50.232441 + ], + [ + -95.559165, + 50.23272 + ], + [ + -95.558757, + 50.232944 + ], + [ + -95.558348, + 50.233169 + ], + [ + -95.557939, + 50.233394 + ], + [ + -95.55753, + 50.233619 + ], + [ + -95.557206, + 50.233842 + ], + [ + -95.556884, + 50.234119 + ], + [ + -95.556562, + 50.234396 + ], + [ + -95.556241, + 50.234673 + ], + [ + -95.556003, + 50.234948 + ], + [ + -95.555681, + 50.235225 + ], + [ + -95.555443, + 50.2355 + ], + [ + -95.555206, + 50.235775 + ], + [ + -95.555136, + 50.236047 + ], + [ + -95.555066, + 50.236318 + ], + [ + -95.555081, + 50.236588 + ], + [ + -95.555011, + 50.236859 + ], + [ + -95.554941, + 50.23713 + ], + [ + -95.554701, + 50.237351 + ], + [ + -95.554376, + 50.237575 + ], + [ + -95.554052, + 50.237798 + ], + [ + -95.553727, + 50.238021 + ], + [ + -95.553727, + 50.238021 + ], + [ + -95.55308, + 50.238521 + ], + [ + -95.552843, + 50.238796 + ], + [ + -95.552521, + 50.239073 + ], + [ + -95.552367, + 50.239346 + ], + [ + -95.552297, + 50.239617 + ], + [ + -95.552312, + 50.239887 + ], + [ + -95.552326, + 50.240156 + ], + [ + -95.552425, + 50.240424 + ], + [ + -95.552439, + 50.240693 + ], + [ + -95.552453, + 50.240963 + ], + [ + -95.552468, + 50.241233 + ], + [ + -95.552482, + 50.241502 + ], + [ + -95.552497, + 50.241772 + ], + [ + -95.552511, + 50.242041 + ], + [ + -95.552525, + 50.242311 + ], + [ + -95.552456, + 50.242582 + ], + [ + -95.552299, + 50.242801 + ], + [ + -95.552056, + 50.242969 + ], + [ + -95.551728, + 50.243138 + ], + [ + -95.551314, + 50.243255 + ], + [ + -95.550899, + 50.243372 + ], + [ + -95.550487, + 50.243543 + ], + [ + -95.550076, + 50.243714 + ], + [ + -95.549661, + 50.243831 + ], + [ + -95.549249, + 50.244002 + ], + [ + -95.548838, + 50.244173 + ], + [ + -95.548423, + 50.24429 + ], + [ + -95.548011, + 50.244461 + ], + [ + -95.547603, + 50.244686 + ], + [ + -95.547278, + 50.244909 + ], + [ + -95.546953, + 50.245132 + ], + [ + -95.546715, + 50.245407 + ], + [ + -95.546561, + 50.24568 + ], + [ + -95.546492, + 50.245951 + ], + [ + -95.546422, + 50.246223 + ], + [ + -95.546436, + 50.246492 + ], + [ + -95.546367, + 50.246764 + ], + [ + -95.546297, + 50.247035 + ], + [ + -95.546143, + 50.247308 + ], + [ + -95.54599, + 50.247582 + ], + [ + -95.545752, + 50.247857 + ], + [ + -95.545598, + 50.24813 + ], + [ + -95.545444, + 50.248403 + ], + [ + -95.545374, + 50.248674 + ], + [ + -95.545305, + 50.248946 + ], + [ + -95.545319, + 50.249215 + ], + [ + -95.545333, + 50.249485 + ], + [ + -95.545348, + 50.249754 + ], + [ + -95.545446, + 50.250022 + ], + [ + -95.545545, + 50.25029 + ], + [ + -95.545727, + 50.250556 + ], + [ + -95.54591, + 50.250822 + ], + [ + -95.546176, + 50.251086 + ], + [ + -95.546359, + 50.251351 + ], + [ + -95.546625, + 50.251615 + ], + [ + -95.546892, + 50.251879 + ], + [ + -95.547075, + 50.252145 + ], + [ + -95.547257, + 50.252411 + ], + [ + -95.54744, + 50.252677 + ], + [ + -95.547538, + 50.252945 + ], + [ + -95.547553, + 50.253214 + ], + [ + -95.547651, + 50.253482 + ], + [ + -95.547581, + 50.253753 + ], + [ + -95.547512, + 50.254025 + ], + [ + -95.547442, + 50.254296 + ], + [ + -95.547372, + 50.254568 + ], + [ + -95.547303, + 50.254839 + ], + [ + -95.547317, + 50.255108 + ], + [ + -95.547247, + 50.25538 + ], + [ + -95.547177, + 50.255651 + ], + [ + -95.547192, + 50.255921 + ], + [ + -95.547206, + 50.25619 + ], + [ + -95.547221, + 50.25646 + ], + [ + -95.547319, + 50.256728 + ], + [ + -95.547418, + 50.256995 + ], + [ + -95.547432, + 50.257265 + ], + [ + -95.547446, + 50.257534 + ], + [ + -95.547461, + 50.257804 + ], + [ + -95.547475, + 50.258073 + ], + [ + -95.547489, + 50.258343 + ], + [ + -95.547504, + 50.258613 + ], + [ + -95.547518, + 50.258882 + ], + [ + -95.547449, + 50.259153 + ], + [ + -95.547379, + 50.259425 + ], + [ + -95.547309, + 50.259696 + ], + [ + -95.547239, + 50.259968 + ], + [ + -95.547086, + 50.260241 + ], + [ + -95.547016, + 50.260512 + ], + [ + -95.546946, + 50.260784 + ], + [ + -95.546876, + 50.261055 + ], + [ + -95.546807, + 50.261326 + ], + [ + -95.546737, + 50.261598 + ], + [ + -95.546583, + 50.261871 + ], + [ + -95.546345, + 50.262146 + ], + [ + -95.54602, + 50.262369 + ], + [ + -95.545611, + 50.262594 + ], + [ + -95.5452, + 50.262765 + ], + [ + -95.544788, + 50.262936 + ], + [ + -95.544373, + 50.263053 + ], + [ + -95.543961, + 50.263224 + ], + [ + -95.543546, + 50.263341 + ], + [ + -95.543135, + 50.263512 + ], + [ + -95.542723, + 50.263683 + ], + [ + -95.542314, + 50.263907 + ], + [ + -95.541989, + 50.26413 + ], + [ + -95.541667, + 50.264407 + ], + [ + -95.541345, + 50.264684 + ], + [ + -95.541107, + 50.264959 + ], + [ + -95.540869, + 50.265234 + ], + [ + -95.540631, + 50.265509 + ], + [ + -95.540393, + 50.265785 + ], + [ + -95.540155, + 50.26606 + ], + [ + -95.539917, + 50.266335 + ], + [ + -95.539679, + 50.26661 + ], + [ + -95.539441, + 50.266885 + ], + [ + -95.539203, + 50.26716 + ], + [ + -95.538962, + 50.267381 + ], + [ + -95.538634, + 50.26755 + ], + [ + -95.538304, + 50.267665 + ], + [ + -95.537889, + 50.267782 + ], + [ + -95.537471, + 50.267845 + ], + [ + -95.537056, + 50.267962 + ], + [ + -95.536642, + 50.268079 + ], + [ + -95.536227, + 50.268196 + ], + [ + -95.535809, + 50.268259 + ], + [ + -95.535391, + 50.268323 + ], + [ + -95.534974, + 50.268386 + ], + [ + -95.534556, + 50.268449 + ], + [ + -95.534138, + 50.268512 + ], + [ + -95.533718, + 50.268521 + ], + [ + -95.5333, + 50.268584 + ], + [ + -95.532882, + 50.268647 + ], + [ + -95.532552, + 50.268762 + ], + [ + -95.532224, + 50.268931 + ], + [ + -95.531986, + 50.269206 + ], + [ + -95.531748, + 50.269481 + ], + [ + -95.531594, + 50.269755 + ], + [ + -95.531356, + 50.27003 + ], + [ + -95.531202, + 50.270303 + ], + [ + -95.531048, + 50.270576 + ], + [ + -95.530978, + 50.270847 + ], + [ + -95.530908, + 50.271119 + ], + [ + -95.530923, + 50.271388 + ], + [ + -95.530937, + 50.271658 + ], + [ + -95.530951, + 50.271927 + ], + [ + -95.53105, + 50.272195 + ], + [ + -95.531148, + 50.272463 + ], + [ + -95.531331, + 50.272729 + ], + [ + -95.531513, + 50.272995 + ], + [ + -95.531696, + 50.273261 + ], + [ + -95.531878, + 50.273526 + ], + [ + -95.532145, + 50.27379 + ], + [ + -95.532327, + 50.274056 + ], + [ + -95.532594, + 50.27432 + ], + [ + -95.532861, + 50.274584 + ], + [ + -95.533043, + 50.27485 + ], + [ + -95.533142, + 50.275118 + ], + [ + -95.53324, + 50.275386 + ], + [ + -95.533339, + 50.275653 + ], + [ + -95.533437, + 50.275921 + ], + [ + -95.533536, + 50.276189 + ], + [ + -95.533634, + 50.276457 + ], + [ + -95.533732, + 50.276724 + ], + [ + -95.533747, + 50.276994 + ], + [ + -95.533761, + 50.277263 + ], + [ + -95.533859, + 50.277531 + ], + [ + -95.533958, + 50.277799 + ], + [ + -95.53414, + 50.278065 + ], + [ + -95.534323, + 50.278331 + ], + [ + -95.534506, + 50.278596 + ], + [ + -95.534688, + 50.278862 + ], + [ + -95.534871, + 50.279128 + ], + [ + -95.534969, + 50.279396 + ], + [ + -95.535152, + 50.279662 + ], + [ + -95.535334, + 50.279928 + ], + [ + -95.535433, + 50.280195 + ], + [ + -95.535615, + 50.280461 + ], + [ + -95.535798, + 50.280727 + ], + [ + -95.535812, + 50.280997 + ], + [ + -95.535743, + 50.281268 + ], + [ + -95.535589, + 50.281541 + ], + [ + -95.535266, + 50.281818 + ], + [ + -95.53486, + 50.282097 + ], + [ + -95.534454, + 50.282376 + ], + [ + -95.534132, + 50.282652 + ], + [ + -95.533893, + 50.282927 + ], + [ + -95.533824, + 50.283199 + ], + [ + -95.533838, + 50.283468 + ], + [ + -95.534021, + 50.283734 + ], + [ + -95.534203, + 50.284 + ], + [ + -95.53447, + 50.284264 + ], + [ + -95.534652, + 50.28453 + ], + [ + -95.534835, + 50.284796 + ], + [ + -95.535018, + 50.285062 + ], + [ + -95.5352, + 50.285328 + ], + [ + -95.535383, + 50.285594 + ], + [ + -95.535565, + 50.285859 + ], + [ + -95.535832, + 50.286123 + ], + [ + -95.536099, + 50.286387 + ], + [ + -95.53645, + 50.28665 + ], + [ + -95.536801, + 50.286912 + ], + [ + -95.537152, + 50.287174 + ], + [ + -95.537418, + 50.287438 + ], + [ + -95.537601, + 50.287704 + ], + [ + -95.5377, + 50.287972 + ], + [ + -95.537798, + 50.288239 + ], + [ + -95.537897, + 50.288507 + ], + [ + -95.537995, + 50.288775 + ], + [ + -95.538093, + 50.289043 + ], + [ + -95.538192, + 50.28931 + ], + [ + -95.538206, + 50.28958 + ], + [ + -95.538221, + 50.289849 + ], + [ + -95.538235, + 50.290119 + ], + [ + -95.538334, + 50.290387 + ], + [ + -95.538432, + 50.290654 + ], + [ + -95.538531, + 50.290922 + ], + [ + -95.538629, + 50.29119 + ] + ], + "type": "LineString" + }, + "type": "Feature" + } + ] +} \ No newline at end of file