diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c73bb8b..43c1b4b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -105,7 +105,7 @@ jobs: # * Produce JUnit XML report - name: Run unit tests run: | - .venv/bin/python3 -m pytest src/india_api --cov -s src/india_api --cov-report=xml + .venv/bin/python3 -m pytest src/quartz_api --cov -s src/quartz_api --cov-report=xml # Create test summary to be visualised on the job summary screen on GitHub # * Runs even if previous steps fail diff --git a/README.md b/README.md index 744029a..6c2fa9d 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# India API +# Quartz API [![All Contributors](https://img.shields.io/badge/all_contributors-7-orange.svg?style=flat-square)](#contributors-) @@ -19,14 +19,14 @@ so there is nothing to configure. You can either download the latest image from GitHub container registry: ```sh -$ docker run ghcr.io/openclimatefix/india-api:latest +$ docker run ghcr.io/openclimatefix/quartz-api:latest ``` Or build and run locally using the Containerfile: ```sh -$ docker build -t india-api . -$ docker run india-api +$ docker build -t quartz-api . +$ docker run quartz-api ``` ### Using python(v3.11.x) @@ -39,7 +39,7 @@ Install the dependencies with $ pip install -e . ``` -The service is then runnable via the command `india-api`. +The service is then runnable via the command `quartz-api`. You should see the following output: ```shell @@ -63,7 +63,7 @@ Install all the dependencies with pip install -e ".[all]" ``` -You can run the service with the command `india-api`. +You can run the service with the command `quartz-api`. Changes will be hot-reloaded by the server. diff --git a/pyproject.toml b/pyproject.toml index 5e62b58..745f15e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,9 +6,9 @@ build-backend = "setuptools.build_meta" # Metadata (see https://peps.python.org/pep-0621/) [project] -name = "india-api" +name = "quartz-api" dynamic = ["version"] # Set automatically using git: https://setuptools-git-versioning.readthedocs.io/en/stable/ -description = "India API for wind and solar data" +description = "Quartz API for wind and solar data" readme = {file = "README.md", content-type = "text/markdown"} requires-python = ">=3.11.0" license = {text = "MIT License"} @@ -46,14 +46,14 @@ vim = [ "pylsp-mypy >= 0.6.8", ] all = [ - "india-api[test,lint,vim]", + "quartz-api[test,lint,vim]", ] [project.urls] -repository = "https://github.com/openclimatefix/india-api" +repository = "https://github.com/openclimatefix/quartz-api" [project.scripts] -india-api = "india_api.cmd.main:run" +quartz-api = "quartz.cmd.main:run" [tool.setuptools] include-package-data = false diff --git a/src/india_api/internal/inputs/__init__.py b/src/india_api/internal/inputs/__init__.py deleted file mode 100644 index 527af28..0000000 --- a/src/india_api/internal/inputs/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -from . import dummydb, indiadb - -__all__ = [ - "indiadb", - "dummydb", -] diff --git a/src/india_api/__init__.py b/src/quartz_api/__init__.py similarity index 100% rename from src/india_api/__init__.py rename to src/quartz_api/__init__.py diff --git a/src/india_api/cmd/__init__.py b/src/quartz_api/cmd/__init__.py similarity index 100% rename from src/india_api/cmd/__init__.py rename to src/quartz_api/cmd/__init__.py diff --git a/src/india_api/cmd/main.py b/src/quartz_api/cmd/main.py similarity index 76% rename from src/india_api/cmd/main.py rename to src/quartz_api/cmd/main.py index 16436ea..0d534cf 100644 --- a/src/india_api/cmd/main.py +++ b/src/quartz_api/cmd/main.py @@ -5,9 +5,9 @@ import sentry_sdk -from india_api import internal -from india_api.internal.config import Config -from india_api.internal.service import get_db_client, server, version +from quartz_api import internal +from quartz_api.internal.config import Config +from quartz_api.internal.service import get_db_client, server, version cfg = Config() @@ -18,16 +18,16 @@ traces_sample_rate=1 ) -sentry_sdk.set_tag("app_name", "india_api") +sentry_sdk.set_tag("app_name", "quartz_api") sentry_sdk.set_tag("version",version) match cfg.SOURCE: - case "indiadb": + case "quartzdb": if cfg.DB_URL == "" or cfg.DB_URL is None: raise OSError(f"DB_URL env var is required using db source: {cfg.SOURCE}") def get_db_client_override() -> internal.DatabaseInterface: - return internal.inputs.indiadb.Client(cfg.DB_URL) + return internal.inputs.quartzdb.Client(cfg.DB_URL) case "dummydb": def get_db_client_override() -> internal.DatabaseInterface: @@ -42,7 +42,7 @@ def get_db_client_override() -> internal.DatabaseInterface: def run() -> None: """Run the API using a uvicorn server.""" uvicorn.run( - "india_api.internal.service.server:server", + "quartz_api.internal.service.server:server", host="0.0.0.0", port=cfg.PORT, reload=True, diff --git a/src/india_api/cmd/redoc_theme.py b/src/quartz_api/cmd/redoc_theme.py similarity index 100% rename from src/india_api/cmd/redoc_theme.py rename to src/quartz_api/cmd/redoc_theme.py diff --git a/src/india_api/internal/__init__.py b/src/quartz_api/internal/__init__.py similarity index 100% rename from src/india_api/internal/__init__.py rename to src/quartz_api/internal/__init__.py diff --git a/src/india_api/internal/config/__init__.py b/src/quartz_api/internal/config/__init__.py similarity index 100% rename from src/india_api/internal/config/__init__.py rename to src/quartz_api/internal/config/__init__.py diff --git a/src/india_api/internal/config/env.py b/src/quartz_api/internal/config/env.py similarity index 98% rename from src/india_api/internal/config/env.py rename to src/quartz_api/internal/config/env.py index f2dff8f..eef396d 100644 --- a/src/india_api/internal/config/env.py +++ b/src/quartz_api/internal/config/env.py @@ -56,7 +56,7 @@ def __init__(self) -> None: class Config(EnvParser): """Config for the application.""" - SOURCE: str = "indiadb" + SOURCE: str = "quartzdb" DB_URL: str = "" PORT: int = 8000 AUTH0_DOMAIN: str = "" diff --git a/src/quartz_api/internal/inputs/__init__.py b/src/quartz_api/internal/inputs/__init__.py new file mode 100644 index 0000000..f17550d --- /dev/null +++ b/src/quartz_api/internal/inputs/__init__.py @@ -0,0 +1,6 @@ +from . import dummydb, quartzdb + +__all__ = [ + "quartzdb", + "dummydb", +] diff --git a/src/india_api/internal/inputs/dummydb/__init__.py b/src/quartz_api/internal/inputs/dummydb/__init__.py similarity index 100% rename from src/india_api/internal/inputs/dummydb/__init__.py rename to src/quartz_api/internal/inputs/dummydb/__init__.py diff --git a/src/india_api/internal/inputs/dummydb/_models.py b/src/quartz_api/internal/inputs/dummydb/_models.py similarity index 100% rename from src/india_api/internal/inputs/dummydb/_models.py rename to src/quartz_api/internal/inputs/dummydb/_models.py diff --git a/src/india_api/internal/inputs/dummydb/client.py b/src/quartz_api/internal/inputs/dummydb/client.py similarity index 99% rename from src/india_api/internal/inputs/dummydb/client.py rename to src/quartz_api/internal/inputs/dummydb/client.py index 51572f9..0d89e19 100644 --- a/src/india_api/internal/inputs/dummydb/client.py +++ b/src/quartz_api/internal/inputs/dummydb/client.py @@ -6,8 +6,8 @@ from typing import Optional -from india_api import internal -from india_api.internal.models import ForecastHorizon +from quartz_api import internal +from quartz_api.internal.models import ForecastHorizon from ._models import DummyDBPredictedPowerProduction from ..utils import get_window diff --git a/src/india_api/internal/inputs/dummydb/test_dummydb.py b/src/quartz_api/internal/inputs/dummydb/test_dummydb.py similarity index 97% rename from src/india_api/internal/inputs/dummydb/test_dummydb.py rename to src/quartz_api/internal/inputs/dummydb/test_dummydb.py index 7ec8101..0fc5104 100644 --- a/src/india_api/internal/inputs/dummydb/test_dummydb.py +++ b/src/quartz_api/internal/inputs/dummydb/test_dummydb.py @@ -2,7 +2,7 @@ from .client import Client -from india_api.internal import ActualPower +from quartz_api.internal import ActualPower client = Client() diff --git a/src/india_api/internal/inputs/indiadb/__init__.py b/src/quartz_api/internal/inputs/quartzdb/__init__.py similarity index 100% rename from src/india_api/internal/inputs/indiadb/__init__.py rename to src/quartz_api/internal/inputs/quartzdb/__init__.py diff --git a/src/india_api/internal/inputs/indiadb/client.py b/src/quartz_api/internal/inputs/quartzdb/client.py similarity index 97% rename from src/india_api/internal/inputs/indiadb/client.py rename to src/quartz_api/internal/inputs/quartzdb/client.py index 0a464d0..f5ecee8 100644 --- a/src/india_api/internal/inputs/indiadb/client.py +++ b/src/quartz_api/internal/inputs/quartzdb/client.py @@ -1,4 +1,4 @@ -"""India DB client that conforms to the DatabaseInterface.""" +"""Quartz DB client that conforms to the DatabaseInterface.""" import os import datetime as dt import pandas as pd @@ -24,16 +24,16 @@ from pvsite_datamodel.pydantic_models import PVSiteEditMetadata from sqlalchemy.orm import Session -from india_api import internal -from india_api.internal.inputs.utils import get_window -from india_api.internal.inputs.indiadb.smooth import smooth_forecast -from india_api.internal.models import ForecastHorizon +from quartz_api import internal +from quartz_api.internal.inputs.utils import get_window +from quartz_api.internal.inputs.quartzdb.smooth import smooth_forecast +from quartz_api.internal.models import ForecastHorizon log = logging.getLogger(__name__) class Client(internal.DatabaseInterface): - """Defines India DB client that conforms to the DatabaseInterface.""" + """Defines Quartz DB client that conforms to the DatabaseInterface.""" session: Session = None diff --git a/src/india_api/internal/inputs/indiadb/conftest.py b/src/quartz_api/internal/inputs/quartzdb/conftest.py similarity index 100% rename from src/india_api/internal/inputs/indiadb/conftest.py rename to src/quartz_api/internal/inputs/quartzdb/conftest.py diff --git a/src/india_api/internal/inputs/indiadb/smooth.py b/src/quartz_api/internal/inputs/quartzdb/smooth.py similarity index 95% rename from src/india_api/internal/inputs/indiadb/smooth.py rename to src/quartz_api/internal/inputs/quartzdb/smooth.py index 2dc55be..14436c5 100644 --- a/src/india_api/internal/inputs/indiadb/smooth.py +++ b/src/quartz_api/internal/inputs/quartzdb/smooth.py @@ -1,5 +1,5 @@ import pandas as pd -from india_api.internal import PredictedPower +from quartz_api.internal import PredictedPower def smooth_forecast(values: list[PredictedPower]) -> list[PredictedPower]: diff --git a/src/india_api/internal/inputs/indiadb/test_csv.py b/src/quartz_api/internal/inputs/quartzdb/test_csv.py similarity index 97% rename from src/india_api/internal/inputs/indiadb/test_csv.py rename to src/quartz_api/internal/inputs/quartzdb/test_csv.py index 161842c..7e3f02e 100644 --- a/src/india_api/internal/inputs/indiadb/test_csv.py +++ b/src/quartz_api/internal/inputs/quartzdb/test_csv.py @@ -4,7 +4,7 @@ from fastapi import HTTPException import pytest -from india_api.internal import PredictedPower, ActualPower, SiteProperties +from quartz_api.internal import PredictedPower, ActualPower, SiteProperties from pvsite_datamodel.sqlmodels import APIRequestSQL diff --git a/src/india_api/internal/inputs/indiadb/test_indiadb.py b/src/quartz_api/internal/inputs/quartzdb/test_quartzdb.py similarity index 98% rename from src/india_api/internal/inputs/indiadb/test_indiadb.py rename to src/quartz_api/internal/inputs/quartzdb/test_quartzdb.py index 6076933..b9d4013 100644 --- a/src/india_api/internal/inputs/indiadb/test_indiadb.py +++ b/src/quartz_api/internal/inputs/quartzdb/test_quartzdb.py @@ -2,7 +2,7 @@ from fastapi import HTTPException import pytest -from india_api.internal import PredictedPower, ActualPower, SiteProperties +from quartz_api.internal import PredictedPower, ActualPower, SiteProperties from pvsite_datamodel.sqlmodels import APIRequestSQL diff --git a/src/india_api/internal/inputs/utils.py b/src/quartz_api/internal/inputs/utils.py similarity index 100% rename from src/india_api/internal/inputs/utils.py rename to src/quartz_api/internal/inputs/utils.py diff --git a/src/india_api/internal/models.py b/src/quartz_api/internal/models.py similarity index 100% rename from src/india_api/internal/models.py rename to src/quartz_api/internal/models.py diff --git a/src/india_api/internal/service/QUARTZSOLAR_LOGO_SECONDARY_BLACK_1.png b/src/quartz_api/internal/service/QUARTZSOLAR_LOGO_SECONDARY_BLACK_1.png similarity index 100% rename from src/india_api/internal/service/QUARTZSOLAR_LOGO_SECONDARY_BLACK_1.png rename to src/quartz_api/internal/service/QUARTZSOLAR_LOGO_SECONDARY_BLACK_1.png diff --git a/src/india_api/internal/service/__init__.py b/src/quartz_api/internal/service/__init__.py similarity index 100% rename from src/india_api/internal/service/__init__.py rename to src/quartz_api/internal/service/__init__.py diff --git a/src/india_api/internal/service/auth.py b/src/quartz_api/internal/service/auth.py similarity index 100% rename from src/india_api/internal/service/auth.py rename to src/quartz_api/internal/service/auth.py diff --git a/src/india_api/internal/service/constants.py b/src/quartz_api/internal/service/constants.py similarity index 100% rename from src/india_api/internal/service/constants.py rename to src/quartz_api/internal/service/constants.py diff --git a/src/india_api/internal/service/csv.py b/src/quartz_api/internal/service/csv.py similarity index 94% rename from src/india_api/internal/service/csv.py rename to src/quartz_api/internal/service/csv.py index 65ebb97..87a2c29 100644 --- a/src/india_api/internal/service/csv.py +++ b/src/quartz_api/internal/service/csv.py @@ -1,8 +1,8 @@ import pandas as pd from datetime import datetime -from india_api.internal import PredictedPower -from india_api.internal.models import ForecastHorizon +from quartz_api.internal import PredictedPower +from quartz_api.internal.models import ForecastHorizon def format_csv_and_created_time(values: list[PredictedPower], forecast_horizon: ForecastHorizon) -> (pd.DataFrame, datetime): diff --git a/src/india_api/internal/service/database_client.py b/src/quartz_api/internal/service/database_client.py similarity index 84% rename from src/india_api/internal/service/database_client.py rename to src/quartz_api/internal/service/database_client.py index 2c5b7b2..87a1f3a 100644 --- a/src/india_api/internal/service/database_client.py +++ b/src/quartz_api/internal/service/database_client.py @@ -2,7 +2,7 @@ from fastapi import Depends -from india_api.internal import DatabaseInterface +from quartz_api.internal import DatabaseInterface def get_db_client() -> DatabaseInterface: diff --git a/src/india_api/internal/service/regions.py b/src/quartz_api/internal/service/regions.py similarity index 94% rename from src/india_api/internal/service/regions.py rename to src/quartz_api/internal/service/regions.py index 6414cf6..917265e 100644 --- a/src/india_api/internal/service/regions.py +++ b/src/quartz_api/internal/service/regions.py @@ -9,13 +9,13 @@ from starlette import status from starlette.requests import Request -from india_api.internal import ActualPower, PredictedPower -from india_api.internal.models import ForecastHorizon -from india_api.internal.service.auth import auth -from india_api.internal.service.constants import local_tz -from india_api.internal.service.csv import format_csv_and_created_time -from india_api.internal.service.database_client import DBClientDependency -from india_api.internal.service.resample import resample_generation +from quartz_api.internal import ActualPower, PredictedPower +from quartz_api.internal.models import ForecastHorizon +from quartz_api.internal.service.auth import auth +from quartz_api.internal.service.constants import local_tz +from quartz_api.internal.service.csv import format_csv_and_created_time +from quartz_api.internal.service.database_client import DBClientDependency +from quartz_api.internal.service.resample import resample_generation router = APIRouter( tags=["Regions"], diff --git a/src/india_api/internal/service/resample.py b/src/quartz_api/internal/service/resample.py similarity index 95% rename from src/india_api/internal/service/resample.py rename to src/quartz_api/internal/service/resample.py index 3c9203e..5c065dc 100644 --- a/src/india_api/internal/service/resample.py +++ b/src/quartz_api/internal/service/resample.py @@ -1,5 +1,5 @@ import pandas as pd -from india_api.internal import ( +from quartz_api.internal import ( ActualPower ) diff --git a/src/india_api/internal/service/server.py b/src/quartz_api/internal/service/server.py similarity index 93% rename from src/india_api/internal/service/server.py rename to src/quartz_api/internal/service/server.py index bfe3040..02032f9 100644 --- a/src/india_api/internal/service/server.py +++ b/src/quartz_api/internal/service/server.py @@ -10,10 +10,10 @@ from pydantic import BaseModel from fastapi.responses import FileResponse -from india_api.internal.service.database_client import get_db_client -from india_api.internal.service.regions import router as regions_router -from india_api.internal.service.sites import router as sites_router -from india_api.cmd.redoc_theme import get_redoc_html_with_theme +from quartz_api.internal.service.database_client import get_db_client +from quartz_api.internal.service.regions import router as regions_router +from quartz_api.internal.service.sites import router as sites_router +from quartz_api.cmd.redoc_theme import get_redoc_html_with_theme logging.basicConfig(level=logging.DEBUG, stream=sys.stdout) @@ -42,8 +42,10 @@ # }, ] -title = "India API" -description = """ API providing OCF Forecast for India. +title = "Quartz API" +description = """ API providing OCF Forecast for Quartz. + +TODO: Update description ## Regions diff --git a/src/india_api/internal/service/sites.py b/src/quartz_api/internal/service/sites.py similarity index 94% rename from src/india_api/internal/service/sites.py rename to src/quartz_api/internal/service/sites.py index 9023884..a4b821c 100644 --- a/src/india_api/internal/service/sites.py +++ b/src/quartz_api/internal/service/sites.py @@ -2,9 +2,9 @@ from fastapi import APIRouter, Depends -from india_api.internal import ActualPower, PredictedPower, Site, SiteProperties -from india_api.internal.service.database_client import DBClientDependency -from india_api.internal.service.auth import auth +from quartz_api.internal import ActualPower, PredictedPower, Site, SiteProperties +from quartz_api.internal.service.database_client import DBClientDependency +from quartz_api.internal.service.auth import auth router = APIRouter( tags=["Sites"], diff --git a/src/india_api/internal/service/test_resample.py b/src/quartz_api/internal/service/test_resample.py similarity index 91% rename from src/india_api/internal/service/test_resample.py rename to src/quartz_api/internal/service/test_resample.py index 9140287..863955b 100644 --- a/src/india_api/internal/service/test_resample.py +++ b/src/quartz_api/internal/service/test_resample.py @@ -1,5 +1,5 @@ -from india_api.internal.models import ActualPower -from india_api.internal.service.resample import resample_generation +from quartz_api.internal.models import ActualPower +from quartz_api.internal.service.resample import resample_generation import pandas as pd