From f83e1bc80d5d7028283a99268571e91152f0798c Mon Sep 17 00:00:00 2001 From: bkatiemills Date: Mon, 8 Apr 2024 15:07:12 -0400 Subject: [PATCH 1/2] new glodap timestamp --- argovisHelpers/helpers.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/argovisHelpers/helpers.py b/argovisHelpers/helpers.py index d98488c..6e700de 100644 --- a/argovisHelpers/helpers.py +++ b/argovisHelpers/helpers.py @@ -66,7 +66,7 @@ def query(route, options={}, apikey='', apiroot='https://argovis-api.colorado.ed 'easyocean': parsetime("1983-10-08T00:00:00.000Z"), 'grids/rg09': parsetime("2004-01-14T00:00:00.000Z"), 'grids/kg21': parsetime("2005-01-14T00:00:00.000Z"), - 'grids/glodap': parsetime("0001-01-01T00:00:00.000Z"), + 'grids/glodap': parsetime("1000-01-01T00:00:00.000Z"), 'timeseries/noaasst': parsetime("1989-12-30T00:00:00.000Z"), 'timeseries/copernicussla': parsetime("1993-01-02T00:00:00Z"), 'timeseries/ccmpwind': parsetime("1993-01-02T00:00:00Z") @@ -82,7 +82,7 @@ def query(route, options={}, apikey='', apiroot='https://argovis-api.colorado.ed 'easyocean': parsetime("2022-10-17T00:00:00.000Z"), 'grids/rg09': parsetime("2022-05-16T00:00:00.000Z"), 'grids/kg21': parsetime("2020-12-16T00:00:00.000Z"), - 'grids/glodap': parsetime("0001-01-02T00:00:00.000Z"), + 'grids/glodap': parsetime("1000-01-02T00:00:00.000Z"), 'timeseries/noaasst': parsetime("2023-01-30T00:00:00.000Z"), 'timeseries/copernicussla': parsetime("2022-08-01T00:00:00.000Z"), 'timeseries/ccmpwind': parsetime("2019-12-30T00:00:00Z") From 10a260a21a284a76c53edd124958c5a70ce1677e Mon Sep 17 00:00:00 2001 From: bkatiemills Date: Mon, 8 Apr 2024 15:59:52 -0400 Subject: [PATCH 2/2] artefacts for 0.0.22 --- .github/workflows/test.yaml | 4 ++-- argovisHelpers/helpers.py | 11 +++++++---- dist/argovisHelpers-0.0.22-py3-none-any.whl | Bin 0 -> 10646 bytes dist/argovisHelpers-0.0.22.tar.gz | Bin 0 -> 13177 bytes pyproject.toml | 2 +- 5 files changed, 10 insertions(+), 7 deletions(-) create mode 100644 dist/argovisHelpers-0.0.22-py3-none-any.whl create mode 100644 dist/argovisHelpers-0.0.22.tar.gz diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 5ec152d..36c31d8 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -12,11 +12,11 @@ jobs: services: database: - image: argovis/testdb:0.38 + image: argovis/testdb:0.40 redis: image: redis:7.0.2 api: - image: argovis/api:2.20.2 + image: argovis/api:2.22.0 env: ARGONODE: core diff --git a/argovisHelpers/helpers.py b/argovisHelpers/helpers.py index 6e700de..a9bb72e 100644 --- a/argovisHelpers/helpers.py +++ b/argovisHelpers/helpers.py @@ -40,7 +40,7 @@ def query(route, options={}, apikey='', apiroot='https://argovis-api.colorado.ed r = re.sub('^/', '', route) r = re.sub('/$', '', r) - data_routes = ['argo', 'cchdo', 'drifters', 'tc', 'argotrajectories', 'easyocean', 'grids/rg09', 'grids/kg21', 'grids/glodap', 'timeseries/noaasst', 'timeseries/copernicussla', 'timeseries/ccmpwind'] + data_routes = ['argo', 'cchdo', 'drifters', 'tc', 'argotrajectories', 'easyocean', 'grids/rg09', 'grids/kg21', 'grids/glodap', 'timeseries/noaasst', 'timeseries/copernicussla', 'timeseries/ccmpwind', 'extended/ar'] scoped_parameters = { 'argo': ['id','platform', 'metadata'], @@ -54,7 +54,8 @@ def query(route, options={}, apikey='', apiroot='https://argovis-api.colorado.ed 'grids/glodap': ['id'], 'timeseries/noaasst': ['id'], 'timeseries/copernicussla': ['id'], - 'timeseries/ccmpwind': ['id'] + 'timeseries/ccmpwind': ['id'], + 'extended/ar': ['id'] } earliest_records = { @@ -69,7 +70,8 @@ def query(route, options={}, apikey='', apiroot='https://argovis-api.colorado.ed 'grids/glodap': parsetime("1000-01-01T00:00:00.000Z"), 'timeseries/noaasst': parsetime("1989-12-30T00:00:00.000Z"), 'timeseries/copernicussla': parsetime("1993-01-02T00:00:00Z"), - 'timeseries/ccmpwind': parsetime("1993-01-02T00:00:00Z") + 'timeseries/ccmpwind': parsetime("1993-01-02T00:00:00Z"), + 'extended/ar': parsetime("2000-01-01T00:00:00Z") } # plus a day vs the API, just to make sure we don't artificially cut off @@ -85,7 +87,8 @@ def query(route, options={}, apikey='', apiroot='https://argovis-api.colorado.ed 'grids/glodap': parsetime("1000-01-02T00:00:00.000Z"), 'timeseries/noaasst': parsetime("2023-01-30T00:00:00.000Z"), 'timeseries/copernicussla': parsetime("2022-08-01T00:00:00.000Z"), - 'timeseries/ccmpwind': parsetime("2019-12-30T00:00:00Z") + 'timeseries/ccmpwind': parsetime("2019-12-30T00:00:00Z"), + 'extended/ar': parsetime("2022-01-01T21:00:00Z") } if r in data_routes: diff --git a/dist/argovisHelpers-0.0.22-py3-none-any.whl b/dist/argovisHelpers-0.0.22-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..9bda1d1cd8ae838bfc36c73a35aac7d1abae9370 GIT binary patch literal 10646 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 Xc^N3^e_RLqXAl0PDlh+#6~O-kD%6b! literal 0 HcmV?d00001 diff --git a/dist/argovisHelpers-0.0.22.tar.gz b/dist/argovisHelpers-0.0.22.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..181051da28fe6765cabf02de7d64d5de686c1b69 GIT binary patch literal 13177 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