From 2be4ef26014a02b6e6cba06554e148bf90724265 Mon Sep 17 00:00:00 2001 From: akash5100 Date: Mon, 15 Aug 2022 22:41:10 +0530 Subject: [PATCH 1/8] Add getTile endpoint --- hvpy/api_groups/screenshots/get_tile.py | 64 +++++++++++++++++++ .../screenshots/tests/test_get_tile.py | 51 +++++++++++++++ hvpy/facade.py | 45 +++++++++++++ hvpy/parameters.py | 2 + 4 files changed, 162 insertions(+) create mode 100644 hvpy/api_groups/screenshots/get_tile.py create mode 100644 hvpy/api_groups/screenshots/tests/test_get_tile.py diff --git a/hvpy/api_groups/screenshots/get_tile.py b/hvpy/api_groups/screenshots/get_tile.py new file mode 100644 index 0000000..286c969 --- /dev/null +++ b/hvpy/api_groups/screenshots/get_tile.py @@ -0,0 +1,64 @@ +from typing import Optional +from datetime import datetime + +from pydantic import validator + +from hvpy.io import HvpyParameters, OutputType +from hvpy.utils import convert_date_to_isoformat + + +class getTileInputParameters(HvpyParameters): + """ + Handles the input parameters of the ``getTile`` API. + + Attributes + ---------- + {Shared} + id + Unique image identifier. + x + Tile x-coordinate. + y + Tile y-coordinate. + imageScale + Image scale in arcseconds per pixel. + difference + Specify image type difference. + 0 - Display regular image + 0 - Running difference image + 0 - Base difference image + diffCount + Used to display Running difference image. Work with “diffTime” parameter and set amount of time to use in time period. + diffTime + Select Running difference time period: + 1 - Minutes + 2 - Hours + 3 - Days + 4 - Weeks + 5 - Month + 6 - Years + baseDiffTime + Date/Time string for Base difference images. + + References + ---------- + * ``__ + {Shared} + """ + + id: int + x: int + y: int + imageScale: int + difference: Optional[int] = None + diffCount: Optional[int] = None + diffTime: Optional[int] = None + baseDiffTime: Optional[datetime] = None + + _date_vaidator = validator("baseDiffTime", allow_reuse=True)(convert_date_to_isoformat) + + def get_output_type(self) -> OutputType: + """ + Returns the output type of the API call. + """ + return OutputType.RAW diff --git a/hvpy/api_groups/screenshots/tests/test_get_tile.py b/hvpy/api_groups/screenshots/tests/test_get_tile.py new file mode 100644 index 0000000..10dd55f --- /dev/null +++ b/hvpy/api_groups/screenshots/tests/test_get_tile.py @@ -0,0 +1,51 @@ +import pytest + +from hvpy import getTile +from hvpy.api_groups.screenshots.get_tile import getTileInputParameters + + +def test_getTile(): + response = getTile( + id=36275490, + x=-1, + y=-1, + imageScale=2, + ) + assert isinstance(response, bytes) + + +def test_error_handling(): + with pytest.raises(TypeError, match="missing 1 required positional argument: 'id'"): + getTile( + x=-1, + y=-1, + imageScale=2, + ) + with pytest.raises(TypeError, match="missing 1 required positional argument: 'x'"): + getTile( + id=36275490, + y=-1, + imageScale=2, + ) + with pytest.raises(TypeError, match="missing 1 required positional argument: 'y'"): + getTile( + id=36275490, + x=-1, + imageScale=2, + ) + with pytest.raises(TypeError, match="missing 1 required positional argument: 'imageScale'"): + getTile( + id=36275490, + x=-1, + y=-1, + ) + + +def test_url_property(): + params = getTileInputParameters( + id=36275490, + x=-1, + y=-1, + imageScale=2, + ) + assert params.url == "https://api.beta.helioviewer.org/v2/getTile/" diff --git a/hvpy/facade.py b/hvpy/facade.py index 9161ae4..423ce3d 100644 --- a/hvpy/facade.py +++ b/hvpy/facade.py @@ -19,6 +19,7 @@ "reQueueMovie", "getMovieStatus", "downloadMovie", + "getTile", ] @@ -474,3 +475,47 @@ def downloadMovie( hq=hq, ) return execute_api_call(input_parameters=params) + + +@add_shared_docstring(getTileInputParameters) +def getTile( + id: int, + x: int, + y: int, + imageScale: int, + difference: Optional[int] = None, + diffCount: Optional[int] = None, + diffTime: Optional[int] = None, + baseDiffTime: Optional[datetime] = None, +) -> Union[bytes, str, Dict[str, Any]]: + """ + Request a single image tile to be used in the Helioviewer.org Viewport. + Tiles are 512x512 pixel PNG images, generated for a given image scale from + the intermediary JPEG2000 image files. + + Use the getClosestImage API endpoint to obtain the desired image identifier for the id parameter. + + Parameters + ---------- + {Insert} + Examples + -------- + >>> from hvpy import getTile + >>> getTile(id=36275490, + ... x=-1, + ... y=-1, + ... imageScale=2, + ... ) + b'...' + """ + params = getTileInputParameters( + id=id, + x=x, + y=y, + imageScale=imageScale, + difference=difference, + diffCount=diffCount, + diffTime=diffTime, + baseDiffTime=baseDiffTime, + ) + return execute_api_call(input_parameters=params) diff --git a/hvpy/parameters.py b/hvpy/parameters.py index 1c4f3ce..b5e8b65 100644 --- a/hvpy/parameters.py +++ b/hvpy/parameters.py @@ -10,6 +10,7 @@ from hvpy.api_groups.official_clients.get_closest_image import getClosestImageInputParameters from hvpy.api_groups.official_clients.get_data_sources import getDataSourcesInputParameters from hvpy.api_groups.screenshots.download_screenshot import downloadScreenshotInputParameters +from hvpy.api_groups.screenshots.get_tile import getTileInputParameters from hvpy.api_groups.screenshots.take_screenshot import takeScreenshotInputParameters __all__ = [ @@ -26,4 +27,5 @@ "reQueueMovieInputParameters", "getMovieStatusInputParameters", "downloadMovieInputParameters", + "getTileInputParameters", ] From 3e9c89705d295f52f6ef6d23fd98a69d692b0177 Mon Sep 17 00:00:00 2001 From: akash5100 Date: Tue, 16 Aug 2022 22:13:17 +0530 Subject: [PATCH 2/8] Fix typos in docstrings --- hvpy/api_groups/screenshots/get_tile.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hvpy/api_groups/screenshots/get_tile.py b/hvpy/api_groups/screenshots/get_tile.py index 286c969..5532a9c 100644 --- a/hvpy/api_groups/screenshots/get_tile.py +++ b/hvpy/api_groups/screenshots/get_tile.py @@ -25,8 +25,8 @@ class getTileInputParameters(HvpyParameters): difference Specify image type difference. 0 - Display regular image - 0 - Running difference image - 0 - Base difference image + 1 - Running difference image + 2 - Base difference image diffCount Used to display Running difference image. Work with “diffTime” parameter and set amount of time to use in time period. diffTime From 601507a3040291e4f7bed91d576bc07e4dfcfc9f Mon Sep 17 00:00:00 2001 From: akash5100 Date: Mon, 15 Aug 2022 22:41:10 +0530 Subject: [PATCH 3/8] Add getTile endpoint --- hvpy/api_groups/screenshots/get_tile.py | 64 +++++++++++++++++++ .../screenshots/tests/test_get_tile.py | 51 +++++++++++++++ hvpy/facade.py | 40 ++++++++++++ hvpy/parameters.py | 2 + 4 files changed, 157 insertions(+) create mode 100644 hvpy/api_groups/screenshots/get_tile.py create mode 100644 hvpy/api_groups/screenshots/tests/test_get_tile.py diff --git a/hvpy/api_groups/screenshots/get_tile.py b/hvpy/api_groups/screenshots/get_tile.py new file mode 100644 index 0000000..286c969 --- /dev/null +++ b/hvpy/api_groups/screenshots/get_tile.py @@ -0,0 +1,64 @@ +from typing import Optional +from datetime import datetime + +from pydantic import validator + +from hvpy.io import HvpyParameters, OutputType +from hvpy.utils import convert_date_to_isoformat + + +class getTileInputParameters(HvpyParameters): + """ + Handles the input parameters of the ``getTile`` API. + + Attributes + ---------- + {Shared} + id + Unique image identifier. + x + Tile x-coordinate. + y + Tile y-coordinate. + imageScale + Image scale in arcseconds per pixel. + difference + Specify image type difference. + 0 - Display regular image + 0 - Running difference image + 0 - Base difference image + diffCount + Used to display Running difference image. Work with “diffTime” parameter and set amount of time to use in time period. + diffTime + Select Running difference time period: + 1 - Minutes + 2 - Hours + 3 - Days + 4 - Weeks + 5 - Month + 6 - Years + baseDiffTime + Date/Time string for Base difference images. + + References + ---------- + * ``__ + {Shared} + """ + + id: int + x: int + y: int + imageScale: int + difference: Optional[int] = None + diffCount: Optional[int] = None + diffTime: Optional[int] = None + baseDiffTime: Optional[datetime] = None + + _date_vaidator = validator("baseDiffTime", allow_reuse=True)(convert_date_to_isoformat) + + def get_output_type(self) -> OutputType: + """ + Returns the output type of the API call. + """ + return OutputType.RAW diff --git a/hvpy/api_groups/screenshots/tests/test_get_tile.py b/hvpy/api_groups/screenshots/tests/test_get_tile.py new file mode 100644 index 0000000..10dd55f --- /dev/null +++ b/hvpy/api_groups/screenshots/tests/test_get_tile.py @@ -0,0 +1,51 @@ +import pytest + +from hvpy import getTile +from hvpy.api_groups.screenshots.get_tile import getTileInputParameters + + +def test_getTile(): + response = getTile( + id=36275490, + x=-1, + y=-1, + imageScale=2, + ) + assert isinstance(response, bytes) + + +def test_error_handling(): + with pytest.raises(TypeError, match="missing 1 required positional argument: 'id'"): + getTile( + x=-1, + y=-1, + imageScale=2, + ) + with pytest.raises(TypeError, match="missing 1 required positional argument: 'x'"): + getTile( + id=36275490, + y=-1, + imageScale=2, + ) + with pytest.raises(TypeError, match="missing 1 required positional argument: 'y'"): + getTile( + id=36275490, + x=-1, + imageScale=2, + ) + with pytest.raises(TypeError, match="missing 1 required positional argument: 'imageScale'"): + getTile( + id=36275490, + x=-1, + y=-1, + ) + + +def test_url_property(): + params = getTileInputParameters( + id=36275490, + x=-1, + y=-1, + imageScale=2, + ) + assert params.url == "https://api.beta.helioviewer.org/v2/getTile/" diff --git a/hvpy/facade.py b/hvpy/facade.py index 12d8f35..8f47aaa 100644 --- a/hvpy/facade.py +++ b/hvpy/facade.py @@ -21,6 +21,7 @@ "downloadMovie", "getNewsFeed", "shortenURL", + "getTile", ] @@ -522,3 +523,42 @@ def shortenURL( callback=callback, ) return execute_api_call(input_parameters=params) + + +@add_shared_docstring(getTileInputParameters) +def getTile( + id: int, + x: int, + y: int, + imageScale: int, + difference: Optional[int] = None, + diffCount: Optional[int] = None, + diffTime: Optional[int] = None, + baseDiffTime: Optional[datetime] = None, +) -> Union[bytes, str, Dict[str, Any]]: + """ + Request a single image tile to be used in the Helioviewer.org Viewport. + Tiles are 512x512 pixel PNG images, generated for a given image scale from + the intermediary JPEG2000 image files. + + Use the getClosestImage API endpoint to obtain the desired image identifier for the id parameter. + + >>> from hvpy import getTile + >>> getTile(id=36275490, + ... x=-1, + ... y=-1, + ... imageScale=2, + ... ) + b'...' + """ + params = getTileInputParameters( + id=id, + x=x, + y=y, + imageScale=imageScale, + difference=difference, + diffCount=diffCount, + diffTime=diffTime, + baseDiffTime=baseDiffTime, + ) + return execute_api_call(input_parameters=params) diff --git a/hvpy/parameters.py b/hvpy/parameters.py index effc17f..5cb712c 100644 --- a/hvpy/parameters.py +++ b/hvpy/parameters.py @@ -12,6 +12,7 @@ from hvpy.api_groups.official_clients.get_closest_image import getClosestImageInputParameters from hvpy.api_groups.official_clients.get_data_sources import getDataSourcesInputParameters from hvpy.api_groups.screenshots.download_screenshot import downloadScreenshotInputParameters +from hvpy.api_groups.screenshots.get_tile import getTileInputParameters from hvpy.api_groups.screenshots.take_screenshot import takeScreenshotInputParameters __all__ = [ @@ -30,4 +31,5 @@ "downloadMovieInputParameters", "getNewsFeedInputParameters", "shortenURLInputParameters", + "getTileInputParameters", ] From 42e7c60f0978b6d027b382ed8b1f1164b2792824 Mon Sep 17 00:00:00 2001 From: akash5100 Date: Tue, 16 Aug 2022 22:13:17 +0530 Subject: [PATCH 4/8] Fix typos in docstrings --- hvpy/api_groups/screenshots/get_tile.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hvpy/api_groups/screenshots/get_tile.py b/hvpy/api_groups/screenshots/get_tile.py index 286c969..5532a9c 100644 --- a/hvpy/api_groups/screenshots/get_tile.py +++ b/hvpy/api_groups/screenshots/get_tile.py @@ -25,8 +25,8 @@ class getTileInputParameters(HvpyParameters): difference Specify image type difference. 0 - Display regular image - 0 - Running difference image - 0 - Base difference image + 1 - Running difference image + 2 - Base difference image diffCount Used to display Running difference image. Work with “diffTime” parameter and set amount of time to use in time period. diffTime From ddbf35d4d8928f3bda3edc0ea4840dba712fba3c Mon Sep 17 00:00:00 2001 From: akash5100 Date: Tue, 16 Aug 2022 22:38:45 +0530 Subject: [PATCH 5/8] Add missing lines in docstring --- hvpy/api_groups/screenshots/get_tile.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/hvpy/api_groups/screenshots/get_tile.py b/hvpy/api_groups/screenshots/get_tile.py index 5532a9c..c8b93cf 100644 --- a/hvpy/api_groups/screenshots/get_tile.py +++ b/hvpy/api_groups/screenshots/get_tile.py @@ -27,8 +27,10 @@ class getTileInputParameters(HvpyParameters): 0 - Display regular image 1 - Running difference image 2 - Base difference image + Default is `None`, optional. diffCount Used to display Running difference image. Work with “diffTime” parameter and set amount of time to use in time period. + Default is `None`, optional. diffTime Select Running difference time period: 1 - Minutes @@ -37,8 +39,10 @@ class getTileInputParameters(HvpyParameters): 4 - Weeks 5 - Month 6 - Years + Default is `None`, optional. baseDiffTime Date/Time string for Base difference images. + Default is `None`, optional. References ---------- From 812f15dd6a9382e84dc4a72cd94c16aa0d470de0 Mon Sep 17 00:00:00 2001 From: Akash Verma Date: Tue, 16 Aug 2022 22:43:52 +0530 Subject: [PATCH 6/8] Update hvpy/facade.py Co-authored-by: Nabil Freij --- hvpy/facade.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hvpy/facade.py b/hvpy/facade.py index b38ad5d..0e6bdea 100644 --- a/hvpy/facade.py +++ b/hvpy/facade.py @@ -541,7 +541,7 @@ def getTile( Tiles are 512x512 pixel PNG images, generated for a given image scale from the intermediary JPEG2000 image files. - Use the getClosestImage API endpoint to obtain the desired image identifier for the id parameter. + Use the ``getClosestImage`` API endpoint to obtain the desired image identifier for the id parameter. Parameters ---------- From 9e2c63b23b2bf1055d5dca6a6ed02eff7c368d3e Mon Sep 17 00:00:00 2001 From: akash5100 Date: Wed, 17 Aug 2022 19:00:32 +0530 Subject: [PATCH 7/8] doc rendering fix --- hvpy/api_groups/screenshots/get_tile.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/hvpy/api_groups/screenshots/get_tile.py b/hvpy/api_groups/screenshots/get_tile.py index c8b93cf..b90490e 100644 --- a/hvpy/api_groups/screenshots/get_tile.py +++ b/hvpy/api_groups/screenshots/get_tile.py @@ -24,21 +24,33 @@ class getTileInputParameters(HvpyParameters): Image scale in arcseconds per pixel. difference Specify image type difference. + 0 - Display regular image + 1 - Running difference image + 2 - Base difference image + Default is `None`, optional. + diffCount Used to display Running difference image. Work with “diffTime” parameter and set amount of time to use in time period. Default is `None`, optional. diffTime Select Running difference time period: + 1 - Minutes + 2 - Hours + 3 - Days + 4 - Weeks + 5 - Month + 6 - Years + Default is `None`, optional. baseDiffTime Date/Time string for Base difference images. From 7cb2080fc624f88d81790848d9fbeec732e07162 Mon Sep 17 00:00:00 2001 From: akash5100 Date: Wed, 17 Aug 2022 19:23:44 +0530 Subject: [PATCH 8/8] more visual updates for getTile docs --- hvpy/api_groups/screenshots/get_tile.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/hvpy/api_groups/screenshots/get_tile.py b/hvpy/api_groups/screenshots/get_tile.py index b90490e..964b06a 100644 --- a/hvpy/api_groups/screenshots/get_tile.py +++ b/hvpy/api_groups/screenshots/get_tile.py @@ -25,11 +25,11 @@ class getTileInputParameters(HvpyParameters): difference Specify image type difference. - 0 - Display regular image + ``0`` - Display regular image - 1 - Running difference image + ``1`` - Running difference image - 2 - Base difference image + ``2`` - Base difference image Default is `None`, optional. @@ -39,17 +39,17 @@ class getTileInputParameters(HvpyParameters): diffTime Select Running difference time period: - 1 - Minutes + ``1`` - Minutes - 2 - Hours + ``2`` - Hours - 3 - Days + ``3`` - Days - 4 - Weeks + ``4`` - Weeks - 5 - Month + ``5`` - Month - 6 - Years + ``6`` - Years Default is `None`, optional. baseDiffTime