Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
File renamed without changes.
9 changes: 5 additions & 4 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,23 +24,24 @@ jobs:
with:
submodules: false
coverage: codecov
toxdeps: "'tox<4' tox-pypi-filter"
toxdeps: tox-pypi-filter
envs: |
- linux: py310
- linux: py311
- linux: codestyle
test:
needs: [core]
uses: OpenAstronomy/github-actions-workflows/.github/workflows/tox.yml@main
with:
submodules: false
coverage: codecov
toxdeps: "'tox<4' tox-pypi-filter"
toxdeps: tox-pypi-filter
libraries: |
apt:
- libopenjp2-7
- graphviz
envs: |
- macos: py38
- linux: py38
- macos: py310
- windows: py39
- linux: build_docs
publish:
Expand Down
8 changes: 4 additions & 4 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
repos:
- repo: https://github.com/myint/docformatter
rev: v1.5.0
rev: v1.7.4
hooks:
- id: docformatter
args: [--in-place, --pre-summary-newline, --make-summary-multi]
- repo: https://github.com/myint/autoflake
rev: v2.0.0
rev: v2.2.0
hooks:
- id: autoflake
args: ['--in-place', '--remove-all-unused-imports', '--remove-unused-variable']
exclude: ".*(.fits|.fts|.fit|.txt|tca.*|extern.*|.rst|.md|__init__.py)$"
- repo: https://github.com/psf/black
rev: 22.10.0
rev: 23.3.0
hooks:
- id: black
exclude: ".*(.fits|.fts|.fit|.txt|.csv)$"
Expand All @@ -34,7 +34,7 @@ repos:
- id: check-yaml
- id: debug-statements
- repo: https://github.com/pre-commit/mirrors-mypy
rev: 'v0.991'
rev: 'v1.4.1'
hooks:
- id: mypy
additional_dependencies: [types-requests==2.28.0]
2 changes: 1 addition & 1 deletion .readthedocs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ version: 2
build:
os: ubuntu-20.04
tools:
python: "3.9"
python: "3.11"
apt_packages:
- libopenjp2-7
- graphviz
Expand Down
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
BSD 2-Clause License

Copyright (c) 2022, Helioviewer Project
Copyright (c) 2022-2023, Helioviewer Project
All rights reserved.

Redistribution and use in source and binary forms, with or without
Expand Down
6 changes: 1 addition & 5 deletions docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,12 +44,8 @@
# -- Options for intersphinx extension -----------------------------------------
intersphinx_mapping = {
"python": ("https://docs.python.org/3/", None),
"numpy": ("https://numpy.org/doc/stable/", None),
"scipy": ("https://docs.scipy.org/doc/scipy/reference/", None),
"matplotlib": ("https://matplotlib.org/stable", None),
"aiapy": ("https://aiapy.readthedocs.io/en/stable/", None),
"astropy": ("https://docs.astropy.org/en/stable/", None),
"requests": ("https://requests.readthedocs.io/en/stable/", None),
"pydantic": ("https://docs.pydantic.dev/latest/", None),
}

# -- Options for HTML output ---------------------------------------------------
Expand Down
6 changes: 3 additions & 3 deletions hvpy/api_groups/jpeg2000/get_jp2_image.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from typing import Union
from datetime import datetime

from pydantic import Field, validator
from pydantic import Field, field_validator

from hvpy.datasource import DataSource
from hvpy.io import HvpyParameters, OutputType
Expand Down Expand Up @@ -37,8 +37,8 @@ class getJP2ImageInputParameters(HvpyParameters):
sourceId: Union[int, DataSource]
jpip: bool = False
Json: bool = Field(False, alias="json")
_date_validator = validator("date", allow_reuse=True)(convert_date_to_isoformat)
_source_id_validator = validator("sourceId", allow_reuse=True)(_data_source_to_int)
_date_validator = field_validator("date")(convert_date_to_isoformat)
_source_id_validator = field_validator("sourceId")(_data_source_to_int)

def get_output_type(self) -> OutputType:
"""
Expand Down
6 changes: 3 additions & 3 deletions hvpy/api_groups/jpeg2000/get_jpx.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from typing import Union, Optional
from datetime import datetime

from pydantic import validator
from pydantic import field_validator

from hvpy.datasource import DataSource
from hvpy.io import HvpyParameters, OutputType
Expand Down Expand Up @@ -50,8 +50,8 @@ class getJPXInputParameters(HvpyParameters):
verbose: bool = False
jpip: bool = False
cadence: Optional[int] = None
_date_validator = validator("startTime", "endTime", allow_reuse=True)(convert_date_to_isoformat)
_source_id_validator = validator("sourceId", allow_reuse=True)(_data_source_to_int)
_date_validator = field_validator("startTime", "endTime")(convert_date_to_isoformat)
_source_id_validator = field_validator("sourceId")(_data_source_to_int)

def get_output_type(self) -> OutputType:
"""
Expand Down
6 changes: 3 additions & 3 deletions hvpy/api_groups/jpeg2000/get_jpx_closest_to_mid_point.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from typing import List, Union
from datetime import datetime

from pydantic import validator
from pydantic import field_validator

from hvpy.datasource import DataSource
from hvpy.io import HvpyParameters, OutputType
Expand Down Expand Up @@ -44,8 +44,8 @@ class getJPXClosestToMidPointInputParameters(HvpyParameters):
linked: bool = True
verbose: bool = False
jpip: bool = False
_date_validator = validator("startTimes", "endTimes", allow_reuse=True)(convert_date_to_unix)
_source_id_validator = validator("sourceId", allow_reuse=True)(_data_source_to_int)
_date_validator = field_validator("startTimes", "endTimes")(convert_date_to_unix)
_source_id_validator = field_validator("sourceId")(_data_source_to_int)

def get_output_type(self) -> OutputType:
"""
Expand Down
4 changes: 2 additions & 2 deletions hvpy/api_groups/jpeg2000/tests/test_get_jp2_image.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@
def test_str_response(date):
response = getJP2Image(date=date, sourceId=DataSource.AIA_335, jpip=True, json=False)
assert isinstance(response, str)
assert response.startswith("jpip://")
assert response.startswith("jpips://")


def test_json_response(date):
response = getJP2Image(date=date, sourceId=14, jpip=True, json=True)
assert isinstance(response, dict)
assert "uri" in response
assert response["uri"].startswith("jpip://")
assert response["uri"].startswith("jpips://")


def test_raw_response(date):
Expand Down
4 changes: 2 additions & 2 deletions hvpy/api_groups/jpeg2000/tests/test_get_jpx.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ def test_str_response(start_time, end_time):
cadence=60,
)
assert isinstance(response, str)
assert response.startswith("jpip://")
assert response.startswith("jpips://")


def test_json_response(start_time, end_time):
Expand All @@ -43,7 +43,7 @@ def test_json_response(start_time, end_time):
cadence=60,
)
assert isinstance(response, dict)
assert response["uri"].startswith("jpip://")
assert response["uri"].startswith("jpips://")

response = getJPX(
startTime=start_time,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ def test_str_response(start_times, end_times):
jpip=True,
)
assert isinstance(response, str)
assert response.startswith("jpip://")
assert response.startswith("jpips://")


def test_json_response(start_times, end_times):
Expand All @@ -40,7 +40,7 @@ def test_json_response(start_times, end_times):
jpip=True,
)
assert isinstance(response, dict)
assert response["uri"].startswith("jpip://")
assert response["uri"].startswith("jpips://")

response = getJPXClosestToMidPoint(
startTimes=start_times,
Expand Down
6 changes: 2 additions & 4 deletions hvpy/api_groups/movies/queue_movie.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from typing import Optional
from datetime import datetime

from pydantic import validator
from pydantic import field_validator

from hvpy.io import HvpyParameters, OutputType
from hvpy.utils import convert_date_to_isoformat
Expand Down Expand Up @@ -134,9 +134,7 @@ class queueMovieInputParameters(HvpyParameters):
movieIcons: Optional[int] = None
followViewport: Optional[int] = None
reqObservationDate: Optional[datetime] = None
_date_validator = validator("startTime", "endTime", "reqObservationDate", allow_reuse=True)(
convert_date_to_isoformat
)
_date_validator = field_validator("startTime", "endTime", "reqObservationDate")(convert_date_to_isoformat)

def get_output_type(self) -> OutputType:
"""
Expand Down
6 changes: 3 additions & 3 deletions hvpy/api_groups/official_clients/get_closest_image.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from typing import Union, Optional
from datetime import datetime

from pydantic import validator
from pydantic import field_validator

from hvpy.datasource import DataSource
from hvpy.io import HvpyParameters, OutputType
Expand Down Expand Up @@ -33,8 +33,8 @@ class getClosestImageInputParameters(HvpyParameters):
date: datetime
sourceId: Union[int, DataSource]
callback: Optional[str] = None
_date_validator = validator("date", allow_reuse=True)(convert_date_to_isoformat)
_source_id_validator = validator("sourceId", allow_reuse=True)(_data_source_to_int)
_date_validator = field_validator("date")(convert_date_to_isoformat)
_source_id_validator = field_validator("sourceId")(_data_source_to_int)

def get_output_type(self) -> OutputType:
"""
Expand Down
4 changes: 2 additions & 2 deletions hvpy/api_groups/screenshots/get_tile.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from typing import Optional
from datetime import datetime

from pydantic import validator
from pydantic import field_validator

from hvpy.io import HvpyParameters, OutputType
from hvpy.utils import convert_date_to_isoformat
Expand Down Expand Up @@ -65,7 +65,7 @@ class getTileInputParameters(HvpyParameters):
diffTime: Optional[int] = None
baseDiffTime: Optional[datetime] = None

_date_vaidator = validator("baseDiffTime", allow_reuse=True)(convert_date_to_isoformat)
_date_vaidator = field_validator("baseDiffTime")(convert_date_to_isoformat)

def get_output_type(self) -> OutputType:
"""
Expand Down
20 changes: 10 additions & 10 deletions hvpy/api_groups/screenshots/take_screenshot.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from typing import Optional
from datetime import datetime

from pydantic import validator
from pydantic import field_validator

from hvpy.io import HvpyParameters, OutputType
from hvpy.utils import convert_date_to_isoformat
Expand Down Expand Up @@ -98,18 +98,18 @@ class takeScreenshotInputParameters(HvpyParameters):
scaleType: Optional[str] = None
scaleX: Optional[int] = None
scaleY: Optional[int] = None
width: Optional[str] = None
height: Optional[str] = None
x0: Optional[str] = None
y0: Optional[str] = None
x1: Optional[str] = None
y1: Optional[str] = None
x2: Optional[str] = None
y2: Optional[str] = None
width: Optional[int] = None
height: Optional[int] = None
x0: Optional[int] = None
y0: Optional[int] = None
x1: Optional[int] = None
y1: Optional[int] = None
x2: Optional[int] = None
y2: Optional[int] = None
display: bool = False
watermark: bool = False
callback: Optional[str] = None
_date_vaidator = validator("date", allow_reuse=True)(convert_date_to_isoformat)
_date_vaidator = field_validator("date")(convert_date_to_isoformat)

def get_output_type(self) -> OutputType:
"""
Expand Down
6 changes: 4 additions & 2 deletions hvpy/config.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
from pydantic import BaseSettings, Field
from pydantic import Field
from pydantic_settings import BaseSettings, SettingsConfigDict

__all__ = ["LiveSettings", "set_api_url", "get_api_url"]


class Settings(BaseSettings):
api_url: str = Field("https://api.helioviewer.org/v2/", env="HELIOVIEWER_API_URL")
model_config = SettingsConfigDict(env_prefix="HELIOVIEWER_")
api_url: str = Field("https://api.helioviewer.org/v2/")


def get_api_url() -> str:
Expand Down
2 changes: 1 addition & 1 deletion hvpy/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,6 @@ def execute_api_call(input_parameters: HvpyParameters) -> Union[bytes, str, Dict
Union[bytes, str, Dict[str, Any]]
Parsed response from the API.
"""
response = requests.get(input_parameters.url, params=input_parameters.dict())
response = requests.get(input_parameters.url, params=input_parameters.model_dump())
response.raise_for_status()
return parse_response(response, input_parameters.get_output_type())
35 changes: 35 additions & 0 deletions hvpy/datasource.py
Original file line number Diff line number Diff line change
Expand Up @@ -438,6 +438,41 @@ class DataSource(Enum):
Solar Orbiter instrument HRI, measurement 1216.
"""

IRIS_SJI_1330 = 88
"""
IRIS Slit Jaw Imager, measurement 1330.
"""

IRIS_SJI_2796 = 89
"""
IRIS Slit Jaw Imager, measurement 2796.
"""

IRIS_SJI_1400 = 90
"""
IRIS Slit Jaw Imager, measurement 1400.
"""

IRIS_SJI_2832 = 92
"""
IRIS Slit Jaw Imager, measurement 2832.
"""

GONG_MAGNETOGRAM = 37
"""
NSO GONG Magnetograms.
"""

GONG_H_ALPHA = 94
"""
NSO GONG H-Alpha.
"""

GONG_FARSIDE = 95
"""
NSO GONG Farside.
"""

SUVI_94 = 2000
"""
GOES-R instrument SUVI, measurement 94.
Expand Down
Loading