Skip to content

Commit 3a2e06d

Browse files
authored
deps bump (#98)
* deps bump * mypy fixes * brought back timeout, lowered limits on cpu requests for pods
1 parent 865ae42 commit 3a2e06d

13 files changed

Lines changed: 374 additions & 287 deletions

.github/workflows/sbom-compliance.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ jobs:
2929

3030
steps:
3131
- name: Checkout Code
32-
uses: actions/checkout@v4
32+
uses: actions/checkout@v6
3333

3434
- name: Generate SBOM (${{ matrix.component }})
3535
uses: anchore/sbom-action@v0
@@ -41,22 +41,22 @@ jobs:
4141
upload-artifact: false
4242

4343
- name: Scan SBOM for Vulnerabilities
44-
uses: anchore/scan-action@v6
44+
uses: anchore/scan-action@v7
4545
id: scan
4646
with:
4747
sbom: ${{ matrix.component }}-sbom.spdx.json
4848
fail-build: false # Don't block builds yet, just report
4949
severity-cutoff: high
5050

5151
- name: Upload SBOM Artifact
52-
uses: actions/upload-artifact@v4
52+
uses: actions/upload-artifact@v6
5353
with:
5454
name: ${{ matrix.component }}-sbom
5555
path: ${{ matrix.component }}-sbom.spdx.json
5656
retention-days: 5
5757

5858
- name: Upload Vulnerability Report
59-
uses: github/codeql-action/upload-sarif@v3
59+
uses: github/codeql-action/upload-sarif@v4
6060
if: always()
6161
with:
6262
sarif_file: ${{ steps.scan.outputs.sarif }}

.github/workflows/stack-tests.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ jobs:
111111
uses: docker/setup-buildx-action@v3
112112

113113
- name: Cache base image
114-
uses: actions/cache@v4
114+
uses: actions/cache@v5
115115
id: base-cache
116116
with:
117117
path: /tmp/base-image.tar.zst
@@ -280,7 +280,7 @@ jobs:
280280
run: npm ci
281281

282282
- name: Cache Playwright browsers
283-
uses: actions/cache@v4
283+
uses: actions/cache@v5
284284
id: playwright-cache
285285
with:
286286
path: ~/.cache/ms-playwright

backend/.env.test

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ KUBERNETES_CONFIG_PATH=/app/kubeconfig.yaml
1010
KUBERNETES_CA_CERTIFICATE_PATH=/app/certs/k8s-ca.pem
1111
K8S_POD_CPU_LIMIT=1000m
1212
K8S_POD_MEMORY_LIMIT=128Mi
13-
K8S_POD_CPU_REQUEST=200m
13+
K8S_POD_CPU_REQUEST=50m
1414
K8S_POD_MEMORY_REQUEST=128Mi
1515
K8S_POD_EXECUTION_TIMEOUT=5
1616
K8S_NAMESPACE=integr8scode

backend/app/db/repositories/admin/admin_events_repository.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -170,13 +170,13 @@ async def get_event_stats(self, hours: int = 24) -> EventStatistics:
170170
top_users = [UserEventCount(**doc) for doc in top_users_result if doc["user_id"]]
171171

172172
# Execution duration pipeline
173-
exec_time_field = S.field(ExecutionDocument.resource_usage.execution_time_wall_seconds)
173+
exec_time_field = S.field(ExecutionDocument.resource_usage.execution_time_wall_seconds) # type: ignore[union-attr]
174174
exec_pipeline = (
175175
Pipeline()
176176
.match({
177177
ExecutionDocument.created_at: {"$gte": start_time},
178178
ExecutionDocument.status: "completed",
179-
ExecutionDocument.resource_usage.execution_time_wall_seconds: {"$exists": True},
179+
ExecutionDocument.resource_usage.execution_time_wall_seconds: {"$exists": True}, # type: ignore[union-attr]
180180
})
181181
.group(by=None, query={"avg_duration": S.avg(exec_time_field)})
182182
)

backend/app/db/repositories/admin/admin_user_repository.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from datetime import datetime, timezone
33

44
from beanie.odm.operators.find import BaseFindOperator
5-
from beanie.operators import Or, RegEx
5+
from beanie.operators import Eq, Or, RegEx
66

77
from app.core.security import SecurityService
88
from app.db.docs import (
@@ -50,7 +50,7 @@ async def list_users(
5050
)
5151

5252
if role:
53-
conditions.append(UserDocument.role == role)
53+
conditions.append(Eq(UserDocument.role, role))
5454

5555
query = UserDocument.find(*conditions)
5656
total = await query.count()

backend/app/db/repositories/event_repository.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
from typing import Any, Mapping
44

55
from beanie.odm.enums import SortDirection
6-
from beanie.operators import GTE, LT, LTE, In, Not, Or, RegEx
6+
from beanie.odm.operators.find import BaseFindOperator
7+
from beanie.operators import GTE, LT, LTE, Eq, In, Not, Or, RegEx
78
from monggregate import Pipeline, S
89

910
from app.core.tracing import EventAttributes
@@ -96,11 +97,9 @@ async def get_events_by_type(
9697
async def get_events_by_aggregate(
9798
self, aggregate_id: str, event_types: list[EventType] | None = None, limit: int = 100
9899
) -> list[DomainEvent]:
99-
conditions = [
100-
EventDocument.aggregate_id == aggregate_id,
101-
In(EventDocument.event_type, list(event_types)) if event_types else None,
102-
]
103-
conditions = [c for c in conditions if c is not None]
100+
conditions: list[BaseFindOperator] = [Eq(EventDocument.aggregate_id, aggregate_id)]
101+
if event_types:
102+
conditions.append(In(EventDocument.event_type, list(event_types)))
104103
docs = (
105104
await EventDocument.find(*conditions).sort([("timestamp", SortDirection.ASCENDING)]).limit(limit).to_list()
106105
)

backend/app/db/repositories/saga_repository.py

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
from beanie.odm.enums import SortDirection
55
from beanie.odm.operators.find import BaseFindOperator
6-
from beanie.operators import GT, LT, In
6+
from beanie.operators import GT, LT, NE, Eq, In
77
from monggregate import Pipeline, S
88

99
from app.db.docs import ExecutionDocument, SagaDocument
@@ -14,19 +14,24 @@
1414
class SagaRepository:
1515
def _filter_conditions(self, saga_filter: SagaFilter) -> list[BaseFindOperator]:
1616
"""Build Beanie query conditions from SagaFilter."""
17-
conditions = [
18-
SagaDocument.state == saga_filter.state if saga_filter.state else None,
19-
In(SagaDocument.execution_id, saga_filter.execution_ids) if saga_filter.execution_ids else None,
20-
SagaDocument.context_data["user_id"] == saga_filter.user_id if saga_filter.user_id else None,
21-
SagaDocument.saga_name == saga_filter.saga_name if saga_filter.saga_name else None,
22-
GT(SagaDocument.created_at, saga_filter.created_after) if saga_filter.created_after else None,
23-
LT(SagaDocument.created_at, saga_filter.created_before) if saga_filter.created_before else None,
24-
]
17+
conditions: list[BaseFindOperator] = []
18+
if saga_filter.state:
19+
conditions.append(Eq(SagaDocument.state, saga_filter.state))
20+
if saga_filter.execution_ids:
21+
conditions.append(In(SagaDocument.execution_id, saga_filter.execution_ids))
22+
if saga_filter.user_id:
23+
conditions.append(Eq(SagaDocument.context_data["user_id"], saga_filter.user_id))
24+
if saga_filter.saga_name:
25+
conditions.append(Eq(SagaDocument.saga_name, saga_filter.saga_name))
26+
if saga_filter.created_after:
27+
conditions.append(GT(SagaDocument.created_at, saga_filter.created_after))
28+
if saga_filter.created_before:
29+
conditions.append(LT(SagaDocument.created_at, saga_filter.created_before))
2530
if saga_filter.error_status is True:
26-
conditions.append(SagaDocument.error_message != None) # noqa: E711
31+
conditions.append(NE(SagaDocument.error_message, None))
2732
elif saga_filter.error_status is False:
28-
conditions.append(SagaDocument.error_message == None) # noqa: E711
29-
return [c for c in conditions if c is not None]
33+
conditions.append(Eq(SagaDocument.error_message, None))
34+
return conditions
3035

3136
async def upsert_saga(self, saga: Saga) -> bool:
3237
existing = await SagaDocument.find_one(SagaDocument.saga_id == saga.saga_id)
@@ -55,11 +60,9 @@ async def get_saga(self, saga_id: str) -> Saga | None:
5560
async def get_sagas_by_execution(
5661
self, execution_id: str, state: SagaState | None = None, limit: int = 100, skip: int = 0
5762
) -> SagaListResult:
58-
conditions = [
59-
SagaDocument.execution_id == execution_id,
60-
SagaDocument.state == state if state else None,
61-
]
62-
conditions = [c for c in conditions if c is not None]
63+
conditions: list[BaseFindOperator] = [Eq(SagaDocument.execution_id, execution_id)]
64+
if state:
65+
conditions.append(Eq(SagaDocument.state, state))
6366

6467
query = SagaDocument.find(*conditions)
6568
total = await query.count()
@@ -135,10 +138,10 @@ async def get_saga_statistics(self, saga_filter: SagaFilter | None = None) -> di
135138
states[doc["_id"]] = doc["count"]
136139

137140
# Average duration for completed sagas
138-
completed_conditions = [
141+
completed_conditions: list[BaseFindOperator] = [
139142
*conditions,
140-
SagaDocument.state == SagaState.COMPLETED,
141-
SagaDocument.completed_at != None, # noqa: E711
143+
Eq(SagaDocument.state, SagaState.COMPLETED),
144+
NE(SagaDocument.completed_at, None),
142145
]
143146
duration_pipeline = (
144147
Pipeline()

backend/app/db/repositories/user_repository.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from datetime import datetime, timezone
33

44
from beanie.odm.operators.find import BaseFindOperator
5-
from beanie.operators import Or, RegEx
5+
from beanie.operators import Eq, Or, RegEx
66

77
from app.db.docs import UserDocument
88
from app.domain.enums.user import UserRole
@@ -38,7 +38,7 @@ async def list_users(
3838
)
3939

4040
if role:
41-
conditions.append(UserDocument.role == role)
41+
conditions.append(Eq(UserDocument.role, role))
4242

4343
query = UserDocument.find(*conditions)
4444
total = await query.count()

backend/app/db/repositories/user_settings_repository.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22
from datetime import datetime
33

44
from beanie.odm.enums import SortDirection
5-
from beanie.operators import GT, LTE, In
5+
from beanie.odm.operators.find import BaseFindOperator
6+
from beanie.operators import GT, LTE, Eq, In
67

78
from app.db.docs import EventDocument, UserSettingsDocument, UserSettingsSnapshotDocument
89
from app.domain.enums.events import EventType
@@ -37,13 +38,14 @@ async def get_settings_events(
3738
sort_order: SortDirection = SortDirection.ASCENDING,
3839
) -> list[DomainUserSettingsChangedEvent]:
3940
aggregate_id = f"user_settings_{user_id}"
40-
conditions = [
41-
EventDocument.aggregate_id == aggregate_id,
41+
conditions: list[BaseFindOperator] = [
42+
Eq(EventDocument.aggregate_id, aggregate_id),
4243
In(EventDocument.event_type, [str(et) for et in event_types]),
43-
GT(EventDocument.timestamp, since) if since else None,
44-
LTE(EventDocument.timestamp, until) if until else None,
4544
]
46-
conditions = [c for c in conditions if c is not None]
45+
if since:
46+
conditions.append(GT(EventDocument.timestamp, since))
47+
if until:
48+
conditions.append(LTE(EventDocument.timestamp, until))
4749

4850
find_query = EventDocument.find(*conditions).sort([("timestamp", sort_order)])
4951
if limit:

backend/pyproject.toml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ dependencies = [
1818
"backoff==2.2.1",
1919
"blinker==1.9.0",
2020
"Brotli==1.2.0",
21-
"cachetools==6.2.0",
21+
"cachetools==6.2.4",
2222
"certifi==2024.8.30",
2323
"charset-normalizer==3.4.0",
2424
"click==8.1.7",
@@ -37,7 +37,7 @@ dependencies = [
3737
"fastavro==1.12.1",
3838
"fonttools==4.61.1",
3939
"frozenlist==1.7.0",
40-
"google-auth==2.45.0",
40+
"google-auth==2.47.0",
4141
"googleapis-common-protos==1.70.0",
4242
"greenlet==3.3.0",
4343
"grpcio==1.76.0",
@@ -52,13 +52,13 @@ dependencies = [
5252
"Jinja2==3.1.6",
5353
"kiwisolver==1.4.9",
5454
"kubernetes==31.0.0",
55-
"limits==3.13.0",
55+
"limits==5.6.0",
5656
"markdown-it-py==4.0.0",
5757
"MarkupSafe==3.0.2",
5858
"mdurl==0.1.2",
5959
"msgpack==1.1.0",
6060
"multidict==6.7.0",
61-
"oauthlib==3.2.2",
61+
"oauthlib==3.3.1",
6262
"opentelemetry-api==1.22.0",
6363
"opentelemetry-exporter-otlp==1.22.0",
6464
"opentelemetry-exporter-otlp-proto-common==1.22.0",
@@ -140,7 +140,7 @@ dev = [
140140
"hypothesis==6.103.4",
141141
"iniconfig==2.0.0",
142142
"matplotlib==3.10.8",
143-
"mypy==1.17.1",
143+
"mypy==1.19.1",
144144
"mypy_extensions==1.1.0",
145145
"pipdeptree==2.23.4",
146146
"pluggy==1.5.0",

0 commit comments

Comments
 (0)