Skip to content
This repository was archived by the owner on Apr 2, 2025. It is now read-only.

Commit 98c73dc

Browse files
committed
rename packages
1 parent 32b7b77 commit 98c73dc

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+167
-156
lines changed

.github/workflows/release.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ jobs:
3333
uses: docker/metadata-action@v5
3434
with:
3535
images: |
36-
ghcr.io/stat-utils/stat-fastapi
37-
${{ vars.AWS_ECR_URI }}/stat-utils/stat-fastapi
36+
ghcr.io/stapi-spec/stapi-fastapi
37+
${{ vars.AWS_ECR_URI }}/stapi-spec/stapi-fastapi
3838
- name: Build and push
3939
uses: docker/build-push-action@v5
4040
with:

Dockerfile

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,15 @@ RUN pip install --no-cache-dir --no-cache poetry
1010

1111
WORKDIR /app
1212

13-
COPY poetry.lock pyproject.toml .
13+
COPY poetry.lock pyproject.toml ./
1414

1515
RUN python3 -m venv /.venv && poetry install --no-cache --no-interaction --with lambda
1616
RUN apt-get -yq update && apt-get -yq install git && pip install \
17-
# git+https://github.com/stat-utils/stat-fastapi-up42.git@main \
18-
git+https://github.com/stat-utils/stat-fastapi-blacksky.git@main \
19-
git+https://github.com/stat-utils/stat-fastapi-umbra.git@main \
17+
# git+https://github.com/stapi-utils/stat-fastapi-up42.git@main \
18+
git+https://github.com/stapi-utils/stat-fastapi-blacksky.git@main \
19+
git+https://github.com/stapi-utils/stat-fastapi-umbra.git@main \
2020
&& rm -rf /var/lib/apt/lists/*
2121

2222
COPY . /app
2323

24-
RUN poetry run python -c "import compileall; compileall.compile_path(maxlevels=10)" && poetry run python -m compileall stat_fastapi
24+
RUN poetry run python -c "import compileall; compileall.compile_path(maxlevels=10)" && poetry run python -m compileall stapi_fastapi

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
# STAT FastAPI - SpatioTemporal Asset Tasking with FastAPI
1+
# STAPI FastAPI - Sensor Tasking API with FastAPI
22

3-
WARNING: The whole [STAT spec](https://github.com/stapi-spec/stapi-spec) is very much work in progress, so things are
3+
WARNING: The whole [STAPI spec](https://github.com/stapi-spec/stapi-spec) is very much work in progress, so things are
44
guaranteed to be not correct.
55

66
NOTE: This repository uses [scripts to rule them all](https://github.com/github/scripts-to-rule-them-all)
77

88
## Usage
99

10-
STAT FastAPI provides an `fastapi.APIRouter` which must be included in
10+
STAPI FastAPI provides an `fastapi.APIRouter` which must be included in
1111
`fastapi.FastAPI` instance.
1212

1313
## Development
@@ -35,7 +35,7 @@ pytest flags are passed along
3535

3636
### Dev Server
3737

38-
For dev purposes, [stat_fastapi.**dev**.py](./stat_fastapi/__dev__.py) shows
38+
For dev purposes, [stapi_fastapi.**dev**.py](./stapi_fastapi/__dev__.py) shows
3939
a minimal demo with `uvicorn` to run the full app. Start it with `./scripts/server`.
4040

4141
### Implementing a backend

conftest.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
from fastapi.testclient import TestClient
66
from pytest import Parser, fixture
77

8-
from stat_fastapi.api import StatApiRouter
9-
from stat_fastapi_test_backend import TestBackend
8+
from stapi_fastapi.api import StapiRouter
9+
from stapi_fastapi_test_backend import TestBackend
1010

1111
T = TypeVar("T")
1212

@@ -15,30 +15,30 @@
1515

1616
def pytest_addoption(parser: Parser):
1717
parser.addoption(
18-
"--stat-backend",
18+
"--stapi-backend",
1919
action="store",
20-
default="stat_fastapi_test_backend:TestBackend",
20+
default="stapi_fastapi_test_backend:TestBackend",
2121
)
22-
parser.addoption("--stat-prefix", action="store", default="/stat")
23-
parser.addoption("--stat-product-id", action="store", default="mock:standard")
22+
parser.addoption("--stapi-prefix", action="store", default="/stapi")
23+
parser.addoption("--stapi-product-id", action="store", default="mock:standard")
2424

2525

2626
@fixture(scope="session")
2727
def base_url() -> YieldFixture[str]:
28-
yield "http://statserver"
28+
yield "http://stapiserver"
2929

3030

3131
@fixture
32-
def stat_backend():
32+
def stapi_backend():
3333
yield TestBackend()
3434

3535

3636
@fixture
37-
def stat_client(stat_backend, base_url: str) -> YieldFixture[TestClient]:
37+
def stapi_client(stapi_backend, base_url: str) -> YieldFixture[TestClient]:
3838
app = FastAPI()
3939

4040
app.include_router(
41-
StatApiRouter(backend=stat_backend).router,
41+
StapiRouter(backend=stapi_backend).router,
4242
prefix="",
4343
)
4444

lambda_handler.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,26 +3,26 @@
33
from fastapi import FastAPI
44
from mangum import Mangum
55

6-
from stat_fastapi.api import StatApiRouter
7-
from stat_fastapi.backend import StatApiBackend
6+
from stapi_fastapi.api import StapiRouter
7+
from stapi_fastapi.backend import StapiBackend
88

99

10-
def get_backend(name: str) -> StatApiBackend:
10+
def get_backend(name: str) -> StapiBackend:
1111
match name:
1212
case "landsat":
13-
from stat_fastapi_landsat import StatLandsatBackend
13+
from stapi_fastapi_landsat import LandsatBackend
1414

15-
return StatLandsatBackend()
15+
return LandsatBackend()
1616
case "blacksky":
17-
from stat_fastapi_blacksky import BlackskyBackend
17+
from stapi_fastapi_blacksky import BlackskyBackend
1818

1919
return BlackskyBackend()
2020
case "up42":
21-
from stat_fastapi_up42 import StatUp42Backend
21+
from stapi_fastapi_up42 import StatUp42Backend
2222

2323
return StatUp42Backend()
2424
case "umbra":
25-
from stat_fastapi_umbra import UmbraBackend
25+
from stapi_fastapi_umbra import UmbraBackend
2626

2727
return UmbraBackend()
2828
case _:
@@ -31,7 +31,7 @@ def get_backend(name: str) -> StatApiBackend:
3131

3232
app = FastAPI()
3333
app.include_router(
34-
StatApiRouter(backend=get_backend(os.environ.get("BACKEND_NAME", "landsat"))).router
34+
StapiRouter(backend=get_backend(os.environ.get("BACKEND_NAME", "landsat"))).router
3535
)
3636

3737
handler = Mangum(app, lifespan="off")

pyproject.toml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[tool.poetry]
2-
name = "stat-fastapi"
2+
name = "stapi-fastapi"
33
version = "0.0.0"
44
description = "Spatio Temporal Asset Tasking with FastAPI"
55
authors = ["Christian Wygoda <[email protected]>"]
@@ -39,8 +39,8 @@ constructs = "^10.3.0"
3939
pydantic-settings = "^2.2.1"
4040

4141
[tool.poetry.scripts]
42-
dev = "stat_fastapi.__dev__:cli"
43-
landsat = "stat_fastapi_landsat.__dev__:cli"
42+
dev = "stapi_fastapi.__dev__:cli"
43+
landsat = "stapi_fastapi_landsat.__dev__:cli"
4444

4545
[tool.ruff]
4646
line-length = 88
@@ -66,11 +66,11 @@ sort = "Cover"
6666
omit = [
6767
"**/*_test.py",
6868
"**/conftest.py",
69-
"stat_fastapi/__dev__.py",
69+
"stapi_fastapi/__dev__.py",
7070
]
7171

7272
[tool.pytest.ini_options]
73-
addopts="--cov=stat_fastapi"
73+
addopts="--cov=stapi_fastapi"
7474
filterwarnings = [
7575
"ignore:The 'app' shortcut is now deprecated.:DeprecationWarning",
7676
"ignore:Pydantic serializer warnings:UserWarning",
Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@
1111
print("install uvicorn and pydantic-settings to use the dev server", file=stderr)
1212
exit(1)
1313

14-
from stat_fastapi.api import StatApiRouter
15-
from stat_fastapi_tle_backend import StatMockBackend
14+
from stapi_fastapi.api import StapiRouter
15+
from stapi_fastapi_tle_backend import StapiMockBackend
1616

1717

1818
class DevSettings(BaseSettings):
@@ -21,9 +21,11 @@ class DevSettings(BaseSettings):
2121

2222

2323
app = FastAPI(debug=True)
24-
app.include_router(StatApiRouter(backend=StatMockBackend()).router)
24+
app.include_router(StapiRouter(backend=StapiMockBackend()).router)
2525

2626

2727
def cli():
2828
settings = DevSettings()
29-
run("stat_fastapi.__dev__:app", reload=True, host=settings.host, port=settings.port)
29+
run(
30+
"stapi_fastapi.__dev__:app", reload=True, host=settings.host, port=settings.port
31+
)
Lines changed: 26 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,35 +2,35 @@
22
from fastapi.encoders import jsonable_encoder
33
from fastapi.responses import JSONResponse
44

5-
from stat_fastapi.backend import StatApiBackend
6-
from stat_fastapi.constants import TYPE_GEOJSON, TYPE_JSON
7-
from stat_fastapi.exceptions import ConstraintsException, NotFoundException
8-
from stat_fastapi.models.opportunity import (
5+
from stapi_fastapi.backend import StapiBackend
6+
from stapi_fastapi.constants import TYPE_GEOJSON, TYPE_JSON
7+
from stapi_fastapi.exceptions import ConstraintsException, NotFoundException
8+
from stapi_fastapi.models.opportunity import (
99
OpportunityCollection,
1010
OpportunityRequest,
1111
)
12-
from stat_fastapi.models.order import Order
13-
from stat_fastapi.models.product import Product, ProductsCollection
14-
from stat_fastapi.models.root import RootResponse
15-
from stat_fastapi.models.shared import HTTPException as HTTPExceptionModel
16-
from stat_fastapi.models.shared import Link
12+
from stapi_fastapi.models.order import Order
13+
from stapi_fastapi.models.product import Product, ProductsCollection
14+
from stapi_fastapi.models.root import RootResponse
15+
from stapi_fastapi.models.shared import HTTPException as HTTPExceptionModel
16+
from stapi_fastapi.models.shared import Link
1717

1818

19-
class StatApiException(HTTPException):
19+
class StapiException(HTTPException):
2020
def __init__(self, status_code: int, detail: str) -> None:
2121
super().__init__(status_code, detail)
2222

2323

24-
class StatApiRouter:
25-
NAME_PREFIX = "stat"
26-
backend: StatApiBackend
24+
class StapiRouter:
25+
NAME_PREFIX = "stapi"
26+
backend: StapiBackend
2727
openapi_endpoint_name: str
2828
docs_endpoint_name: str
2929
router: APIRouter
3030

3131
def __init__(
3232
self,
33-
backend: StatApiBackend,
33+
backend: StapiBackend,
3434
openapi_endpoint_name="openapi",
3535
docs_endpoint_name="swagger_ui_html",
3636
*args,
@@ -93,12 +93,12 @@ def root(self, request: Request) -> RootResponse:
9393
return RootResponse(
9494
links=[
9595
Link(
96-
href=str(request.url_for("stat:root")),
96+
href=str(request.url_for(f"{self.NAME_PREFIX}:root")),
9797
rel="self",
9898
type=TYPE_JSON,
9999
),
100100
Link(
101-
href=str(request.url_for("stat:list-products")),
101+
href=str(request.url_for(f"{self.NAME_PREFIX}:list-products")),
102102
rel="products",
103103
type=TYPE_JSON,
104104
),
@@ -121,7 +121,9 @@ def products(self, request: Request) -> ProductsCollection:
121121
product.links.append(
122122
Link(
123123
href=str(
124-
request.url_for("stat:get-product", product_id=product.id)
124+
request.url_for(
125+
f"{self.NAME_PREFIX}:get-product", product_id=product.id
126+
)
125127
),
126128
rel="self",
127129
type=TYPE_JSON,
@@ -131,7 +133,7 @@ def products(self, request: Request) -> ProductsCollection:
131133
products=products,
132134
links=[
133135
Link(
134-
href=str(request.url_for("stat:list-products")),
136+
href=str(request.url_for(f"{self.NAME_PREFIX}:list-products")),
135137
rel="self",
136138
type=TYPE_JSON,
137139
)
@@ -142,12 +144,16 @@ def product(self, product_id: str, request: Request) -> Product:
142144
try:
143145
product = self.backend.product(product_id, request)
144146
except NotFoundException as exc:
145-
raise StatApiException(
147+
raise StapiException(
146148
status.HTTP_404_NOT_FOUND, "product not found"
147149
) from exc
148150
product.links.append(
149151
Link(
150-
href=str(request.url_for("stat:get-product", product_id=product.id)),
152+
href=str(
153+
request.url_for(
154+
f"{self.NAME_PREFIX}:get-product", product_id=product.id
155+
)
156+
),
151157
rel="self",
152158
type=TYPE_JSON,
153159
)
Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@
22

33
from fastapi import Request
44

5-
from stat_fastapi.models.opportunity import Opportunity, OpportunityRequest
6-
from stat_fastapi.models.order import Order
7-
from stat_fastapi.models.product import Product
5+
from stapi_fastapi.models.opportunity import Opportunity, OpportunityRequest
6+
from stapi_fastapi.models.order import Order
7+
from stapi_fastapi.models.product import Product
88

99

10-
class StatApiBackend(Protocol):
10+
class StapiBackend(Protocol):
1111
def products(self, request: Request) -> list[Product]:
1212
"""
1313
Return a list of supported products.
@@ -26,21 +26,21 @@ async def search_opportunities(
2626
Search for ordering opportunities for the given search parameters.
2727
2828
Backends must validate search constraints and raise
29-
`stat_fastapi.backend.exceptions.ConstraintsException` if not valid.
29+
`stapi_fastapi.backend.exceptions.ConstraintsException` if not valid.
3030
"""
3131

3232
async def create_order(self, search: OpportunityRequest, request: Request) -> Order:
3333
"""
3434
Create a new order.
3535
3636
Backends must validate order payload and raise
37-
`stat_fastapi.backend.exceptions.ConstraintsException` if not valid.
37+
`stapi_fastapi.backend.exceptions.ConstraintsException` if not valid.
3838
"""
3939

4040
async def get_order(self, order_id: str, request: Request) -> Order:
4141
"""
4242
Get details for order with `order_id`.
4343
44-
Backends must raise `stat_fastapi.backend.exceptions.NotFoundException`
44+
Backends must raise `stapi_fastapi.backend.exceptions.NotFoundException`
4545
if not found or access denied.
4646
"""

0 commit comments

Comments
 (0)