Skip to content

Commit d64ede7

Browse files
fix: starlette path security issue and update dependencies (#1404)
1 parent 4606d1f commit d64ede7

7 files changed

Lines changed: 23 additions & 34 deletions

File tree

.github/workflows/ci.yml

Lines changed: 3 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -53,32 +53,15 @@ jobs:
5353
run: |
5454
uv sync
5555
56-
- name: Test titiler.core
57-
run: |
58-
uv run pytest src/titiler/core --cov=titiler.core --cov-report=xml:titiler-core.xml --cov-report=term-missing
59-
60-
- name: Test titiler.extensions
61-
run: |
62-
uv run pytest src/titiler/extensions --cov=titiler.extensions --cov-report=xml:titiler-extensions.xml --cov-report=term-missing
63-
64-
- name: Test titiler.xarray
65-
run: |
66-
uv run pytest src/titiler/xarray --cov=titiler.xarray --cov-report=xml:titiler-xarray.xml --cov-report=term-missing
67-
68-
- name: Test titiler.mosaic
69-
run: |
70-
uv run pytest src/titiler/mosaic --cov=titiler.mosaic --cov-report=xml:titiler-mosaic.xml --cov-report=term-missing
71-
72-
- name: Test titiler.application
73-
run: |
74-
uv run pytest src/titiler/application --cov=titiler.application --cov-report=xml:titiler-application.xml --cov-report=term-missing
75-
7656
- name: run pre-commit and mypy
7757
if: ${{ matrix.python-version == env.LATEST_PY_VERSION }}
7858
run: |
7959
uv run pre-commit run --all-files
8060
uv run --with mypy --with types-attrs --with types-simplejson mypy -p titiler.core -p titiler.extensions -p titiler.xarray -p titiler.application -p titiler.mosaic --ignore-missing-imports
8161
62+
- name: Test titiler modules
63+
run: ./scripts/test
64+
8265
- name: Upload Results
8366
if: ${{ matrix.python-version == env.LATEST_PY_VERSION }}
8467
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0

CONTRIBUTING.md

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,19 +49,25 @@ Each `titiler`'s modules has its own test suite which can be ran independently
4949

5050
```
5151
# titiler.core
52-
uv run pytest src/titiler/core --cov=titiler.core --cov-report=xml --cov-append --cov-report=term-missing
52+
uv run pytest src/titiler/core --cov=titiler.core -cov-report=term-missing
5353
5454
# titiler.extensions
55-
uv run pytest src/titiler/extensions --cov=titiler.extensions --cov-report=xml --cov-append --cov-report=term-missing
55+
uv run pytest src/titiler/extensions --cov=titiler.extensions --cov-report=term-missing
5656
5757
# titiler.mosaic
58-
uv run pytest src/titiler/mosaic --cov=titiler.mosaic --cov-report=xml --cov-append --cov-report=term-missing
58+
uv run pytest src/titiler/mosaic --cov=titiler.mosaic --cov-report=term-missing
5959
6060
# titiler.xarray
61-
uv run pytest src/titiler/xarray --cov=titiler.xarray --cov-report=xml --cov-append --cov-report=term-missing
61+
uv run pytest src/titiler/xarray --cov=titiler.xarray --cov-report=term-missing
6262
6363
# titiler.application
64-
uv run pytest src/titiler/application --cov=titiler.application --cov-report=xml --cov-append --cov-report=term-missing
64+
uv run pytest src/titiler/application --cov=titiler.application --cov-report=term-missing
65+
```
66+
67+
or all at once:
68+
69+
```bash
70+
./scripts/test
6571
```
6672

6773
### Docs

scripts/test

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
#! /usr/bin/env bash
22

3-
SUBPACKAGE_DIRS=(
3+
SUBMODULES=(
44
"core"
55
"xarray"
66
"mosaic"
77
"application"
88
"extensions"
99
)
1010

11-
for PACKAGE_DIR in "${SUBPACKAGE_DIRS[@]}"
11+
for SUBMODULE in "${SUBMODULES[@]}"
1212
do
13-
echo "Running tests for titiler-${PACKAGE_DIR}"
14-
uv run pytest src/titiler/${PACKAGE_DIR}
13+
echo "Running tests for titiler-${SUBMODULE}"
14+
uv run pytest src/titiler/${SUBMODULE} --cov=titiler.${SUBMODULE} --cov-report=xml:titiler-${SUBMODULE}.xml --cov-report=term-missing
1515
done

src/titiler/core/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ classifiers = [
3030
]
3131
dynamic = ["version"]
3232
dependencies = [
33-
"fastapi>=0.108.0",
33+
"fastapi>=0.136.1",
3434
"geojson-pydantic>=1.1.2,<3.0",
3535
"jinja2>=2.11.2,<4.0.0",
3636
"numpy",

src/titiler/core/titiler/core/middleware.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ async def __call__(self, scope: Scope, receive: Receive, send: Send):
114114
"http.url": str(request.url),
115115
"http.scheme": request.url.scheme,
116116
"http.host": request.headers.get("host", request.url.hostname or "unknown"),
117-
"http.target": request.url.path
117+
"http.target": request.scope["path"]
118118
+ (f"?{request.url.query}" if request.url.query else ""),
119119
"http.user_agent": request.headers.get("user-agent"),
120120
"http.referer": next(
@@ -145,7 +145,7 @@ async def __call__(self, scope: Scope, receive: Receive, send: Send):
145145
data["titiler.path_params"] = request.path_params
146146

147147
self.logger.info(
148-
f"Request received: {request.url.path} {request.method}",
148+
f"Request received: {request.scope['path']} {request.method}",
149149
extra=data,
150150
)
151151
if exception:

src/titiler/core/titiler/core/utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -409,7 +409,7 @@ def create_html_response(
409409
**kwargs: Any,
410410
) -> _TemplateResponse:
411411
"""Create Template response."""
412-
urlpath = request.url.path
412+
urlpath = request.scope["path"]
413413
if root_path := request.scope.get("root_path"):
414414
urlpath = re.sub(r"^" + root_path, "", urlpath)
415415

uv.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)