Skip to content

Commit

Permalink
Merge pull request #78 from NASA-IMPACT/develop
Browse files Browse the repository at this point in the history
Release 0.3.0
  • Loading branch information
drewbo authored Nov 11, 2020
2 parents 1e8fbc0 + d5bf385 commit 6544a90
Show file tree
Hide file tree
Showing 49 changed files with 687 additions and 321 deletions.
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ wheels/
.installed.cfg
*.egg


# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
Expand Down Expand Up @@ -81,6 +82,7 @@ celerybeat-schedule

# dotenv
.env
*.env*

# virtualenv
.venv
Expand All @@ -100,7 +102,7 @@ ENV/
# mypy
.mypy_cache/

cdk.out/package.zip
cdk.out/*
*.tif

# vscode
Expand Down
80 changes: 43 additions & 37 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -1,38 +1,44 @@
repos:
-
repo: https://github.com/psf/black
rev: 20.8b1
hooks:
- id: black
args: ['--safe']
language_version: python3.7
-
repo: https://github.com/pre-commit/pre-commit-hooks
rev: v2.4.0
hooks:
- id: flake8
language_version: python3.7
args: [
# E501 let black handle all line length decisions
# W503 black conflicts with "line break before operator" rule
# E203 black conflicts with "whitespace before ':'" rule
'--ignore=E501,W503,E203']
-
repo: https://github.com/chewse/pre-commit-mirrors-pydocstyle
# 2.1.1
rev: 22d3ccf6cf91ffce3b16caa946c155778f0cb20f
hooks:
- id: pydocstyle
language_version: python3.7
args: [
# Check for docstring presence only
'--select=D1',
# Don't require docstrings for tests
'--match=(?!test).*\.py']
-
repo: https://github.com/pre-commit/mirrors-mypy
rev: v0.770
hooks:
- id: mypy
language_version: python3.7
args: [--no-strict-optional, --ignore-missing-imports]
- repo: https://github.com/psf/black
rev: 19.10b0
hooks:
- id: black
language_version: python3
args: ["--safe"]

- repo: https://github.com/PyCQA/isort
rev: 5.4.2
hooks:
- id: isort
language_version: python3

- repo: https://github.com/PyCQA/flake8
rev: 3.8.3
hooks:
- id: flake8
language_version: python3
args: [
# E501 let black handle all line length decisions
# W503 black conflicts with "line break before operator" rule
# E203 black conflicts with "whitespace before ':'" rule
"--ignore=E501,W503,E203",
]

- repo: https://github.com/PyCQA/pydocstyle
rev: 5.1.1
hooks:
- id: pydocstyle
language_version: python3
args: [
# Check for docstring presence only
"--select=D1",
# Don't require docstrings for tests
'--match=(?!test).*\.py',
]

- repo: https://github.com/pre-commit/mirrors-mypy
rev: v0.770
hooks:
- id: mypy
language_version: python3
args: ["--no-strict-optional", "--ignore-missing-imports"]
15 changes: 7 additions & 8 deletions covid_api/api/api_v1/api.py
Original file line number Diff line number Diff line change
@@ -1,19 +1,18 @@
"""covid_api api."""

from fastapi import APIRouter

from covid_api.api.api_v1.endpoints import detections, datasets # isort:skip
from covid_api.api.api_v1.endpoints import (
ogc,
detections,
timelapse,
datasets,
sites,
groups,
tiles,
metadata,
ogc,
planet,
sites,
tiles,
timelapse,
)

from fastapi import APIRouter

api_router = APIRouter()
api_router.include_router(tiles.router, tags=["tiles"])
api_router.include_router(metadata.router, tags=["metadata"])
Expand Down
31 changes: 24 additions & 7 deletions covid_api/api/api_v1/endpoints/datasets.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
"""Dataset endpoints."""
from covid_api.api import utils
from covid_api.core import config
from covid_api.db.memcache import CacheLayer
from covid_api.db.static.datasets import datasets
from covid_api.db.static.errors import InvalidIdentifier
from fastapi import APIRouter, HTTPException, Depends, Response

from covid_api.models.static import Datasets
from covid_api.db.static.datasets import datasets
from covid_api.db.memcache import CacheLayer
from covid_api.api import utils

from fastapi import APIRouter, Depends, HTTPException, Response

from starlette.requests import Request

router = APIRouter()

Expand All @@ -16,6 +19,7 @@
response_model=Datasets,
)
def get_datasets(
request: Request,
response: Response,
cache_client: CacheLayer = Depends(utils.get_cache),
):
Expand All @@ -29,7 +33,13 @@ def get_datasets(
content = Datasets.parse_raw(content)
response.headers["X-Cache"] = "HIT"
if not content:
content = datasets.get_all()
scheme = request.url.scheme
host = request.headers["host"]
if config.API_VERSION_STR:
host += config.API_VERSION_STR

content = datasets.get_all(api_url=f"{scheme}://{host}")

if cache_client and content:
cache_client.set_dataset_cache(dataset_hash, content)

Expand All @@ -44,6 +54,7 @@ def get_datasets(
response_model=Datasets,
)
def get_dataset(
request: Request,
spotlight_id: str,
response: Response,
cache_client: CacheLayer = Depends(utils.get_cache),
Expand All @@ -59,7 +70,13 @@ def get_dataset(
content = Datasets.parse_raw(content)
response.headers["X-Cache"] = "HIT"
if not content:
content = datasets.get(spotlight_id)
scheme = request.url.scheme
host = request.headers["host"]
if config.API_VERSION_STR:
host += config.API_VERSION_STR

content = datasets.get(spotlight_id, api_url=f"{scheme}://{host}")

if cache_client and content:
cache_client.set_dataset_cache(dataset_hash, content)

Expand Down
7 changes: 4 additions & 3 deletions covid_api/api/api_v1/endpoints/detections.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
""" Machine Learning Detections. """
from fastapi import APIRouter, HTTPException
import json
from enum import Enum

from covid_api.core import config
from covid_api.models.static import Detection
from covid_api.db.utils import s3_get
from covid_api.db.static.sites import SiteNames
from covid_api.db.utils import s3_get
from covid_api.models.static import Detection

from fastapi import APIRouter, HTTPException

router = APIRouter()

Expand Down
6 changes: 3 additions & 3 deletions covid_api/api/api_v1/endpoints/groups.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
"""Groups endpoint."""

from fastapi import APIRouter

from covid_api.models.static import IndicatorGroup, IndicatorGroups
from covid_api.db.static.groups import groups
from covid_api.models.static import IndicatorGroup, IndicatorGroups

from fastapi import APIRouter

router = APIRouter()

Expand Down
17 changes: 8 additions & 9 deletions covid_api/api/api_v1/endpoints/metadata.py
Original file line number Diff line number Diff line change
@@ -1,25 +1,24 @@
"""API metadata."""

from typing import Any, Dict, Optional, Union

import os
import re
from functools import partial
from typing import Any, Dict, Optional, Union
from urllib.parse import urlencode

import numpy

from rio_tiler.io import cogeo

from fastapi import APIRouter, Query
from starlette.requests import Request
from starlette.responses import Response
from starlette.concurrency import run_in_threadpool

from covid_api.api.utils import info as cogInfo
from covid_api.core import config
from covid_api.models.mapbox import TileJSON
from covid_api.ressources.enums import ImageType
from covid_api.api.utils import info as cogInfo

from fastapi import APIRouter, Query

from starlette.concurrency import run_in_threadpool
from starlette.requests import Request
from starlette.responses import Response

_info = partial(run_in_threadpool, cogInfo)
_bounds = partial(run_in_threadpool, cogeo.bounds)
Expand Down
15 changes: 8 additions & 7 deletions covid_api/api/api_v1/endpoints/ogc.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,22 @@

from urllib.parse import urlencode

from fastapi import APIRouter, Query
from starlette.requests import Request
from starlette.responses import Response
from starlette.templating import Jinja2Templates

import rasterio
from rasterio import warp
from rio_tiler.mercator import get_zooms
from rio_tiler import constants
from rio_tiler.mercator import get_zooms

from covid_api.core import config
from covid_api.ressources.enums import ImageType
from covid_api.ressources.common import mimetype
from covid_api.ressources.enums import ImageType
from covid_api.ressources.responses import XMLResponse

from fastapi import APIRouter, Query

from starlette.requests import Request
from starlette.responses import Response
from starlette.templating import Jinja2Templates

router = APIRouter()
templates = Jinja2Templates(directory="covid_api/templates")

Expand Down
11 changes: 5 additions & 6 deletions covid_api/api/api_v1/endpoints/planet.py
Original file line number Diff line number Diff line change
@@ -1,19 +1,18 @@
"""API planet mosaic tiles."""
from typing import Any, Dict

from functools import partial

from fastapi import APIRouter, Depends, Query, Path
from starlette.concurrency import run_in_threadpool
from typing import Any, Dict

from rio_tiler.utils import render

from covid_api.api import utils
from covid_api.db.memcache import CacheLayer
from covid_api.ressources.enums import ImageType
from covid_api.ressources.common import mimetype
from covid_api.ressources.enums import ImageType
from covid_api.ressources.responses import TileResponse

from fastapi import APIRouter, Depends, Path, Query

from starlette.concurrency import run_in_threadpool

_render = partial(run_in_threadpool, render)
_tile = partial(run_in_threadpool, utils.planet_mosaic_tile)
Expand Down
6 changes: 3 additions & 3 deletions covid_api/api/api_v1/endpoints/sites.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
"""sites endpoint."""

from fastapi import APIRouter
from covid_api.db.static.sites import SiteNames, sites
from covid_api.models.static import Site, Sites

from covid_api.models.static import Sites, Site
from covid_api.db.static.sites import sites, SiteNames
from fastapi import APIRouter

router = APIRouter()

Expand Down
18 changes: 8 additions & 10 deletions covid_api/api/api_v1/endpoints/tiles.py
Original file line number Diff line number Diff line change
@@ -1,27 +1,25 @@
"""API tiles."""

from typing import Any, Dict, Union, Optional

import re
from io import BytesIO
from functools import partial
from io import BytesIO
from typing import Any, Dict, Optional, Union

import numpy

from fastapi import APIRouter, Depends, Query, Path
from starlette.concurrency import run_in_threadpool

from rio_tiler.io import cogeo
from rio_tiler.colormap import get_colormap
from rio_tiler.utils import render, geotiff_options
from rio_tiler.io import cogeo
from rio_tiler.profiles import img_profiles
from rio_tiler.utils import geotiff_options, render

from covid_api.api import utils
from covid_api.db.memcache import CacheLayer
from covid_api.ressources.enums import ImageType
from covid_api.ressources.common import drivers, mimetype
from covid_api.ressources.enums import ImageType
from covid_api.ressources.responses import TileResponse

from fastapi import APIRouter, Depends, Path, Query

from starlette.concurrency import run_in_threadpool

_tile = partial(run_in_threadpool, cogeo.tile)
_render = partial(run_in_threadpool, render)
Expand Down
6 changes: 3 additions & 3 deletions covid_api/api/api_v1/endpoints/timelapse.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
"""API metadata."""

from fastapi import APIRouter

from covid_api.models.timelapse import TimelapseValue, TimelapseRequest
from covid_api.api.utils import get_zonal_stat
from covid_api.models.timelapse import TimelapseRequest, TimelapseValue

from fastapi import APIRouter

router = APIRouter()

Expand Down
Loading

0 comments on commit 6544a90

Please sign in to comment.