Skip to content

Commit b2e4110

Browse files
Merge branch 'master' into add-conversations
2 parents 7bcdeeb + 1d581a9 commit b2e4110

File tree

189 files changed

+3252
-851
lines changed

Some content is hidden

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

189 files changed

+3252
-851
lines changed

.env-devel

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ DYNAMIC_SIDECAR_API_SAVE_RESTORE_STATE_TIMEOUT=01:00:00
132132
DIRECTOR_V2_TRACING=null
133133

134134
# DYNAMIC_SCHEDULER ----
135-
DYNAMIC_SCHEDULER_LOGLEVEL=DEBUG
135+
DYNAMIC_SCHEDULER_LOGLEVEL=INFO
136136
DYNAMIC_SCHEDULER_PROFILING=1
137137
DYNAMIC_SCHEDULER_USE_INTERNAL_SCHEDULER=0
138138
DYNAMIC_SCHEDULER_STOP_SERVICE_TIMEOUT=01:00:00
@@ -164,6 +164,9 @@ INVITATIONS_TRACING=null
164164
LOG_FORMAT_LOCAL_DEV_ENABLED=1
165165
LOG_FILTER_MAPPING='{}'
166166

167+
NOTIFICATIONS_LOGLEVEL=INFO
168+
NOTIFICATIONS_TRACING=null
169+
167170
PAYMENTS_ACCESS_TOKEN_EXPIRE_MINUTES=30
168171
PAYMENTS_ACCESS_TOKEN_SECRET_KEY=2c0411810565e063309be1457009fb39ce023946f6a354e6935107b57676
169172
PAYMENTS_AUTORECHARGE_DEFAULT_MONTHLY_LIMIT=10000

.github/CODEOWNERS

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,13 @@ Makefile @pcrespov @sanderegg
3535
/services/efs-guardian/ @matusdrobuliak66
3636
/services/invitations/ @pcrespov
3737
/services/migration/ @pcrespov
38+
/services/notifications/ @GitHK
3839
/services/payments/ @pcrespov @matusdrobuliak66
3940
/services/resource-usage-tracker/ @matusdrobuliak66
4041
/services/static-webserver/ @GitHK
4142
/services/static-webserver/client/ @odeimaiz
4243
/services/storage/ @sanderegg
44+
/services/storage/modules/celery @giancarloromeo
4345
/services/web/server/ @pcrespov @sanderegg @GitHK @matusdrobuliak66
4446
/tests/e2e-frontend/ @odeimaiz
4547
/tests/e2e-playwright/ @matusdrobuliak66

.github/copilot-instructions.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,13 @@ This document provides guidelines and best practices for using GitHub Copilot in
2323
- ensure we use `fastapi` >0.100 compatible code
2424
- use f-string formatting
2525

26+
27+
### Json serialization
28+
29+
- Generally use `json_dumps`/`json_loads` from `common_library.json_serialization` to built-in `json.dumps` / `json.loads`.
30+
- Prefer Pydantic model methods (e.g., `model.model_dump_json()`) for serialization.
31+
32+
2633
## Node.js-Specific Instructions
2734

2835
- Use ES6+ syntax and features.

.github/workflows/ci-testing-deploy.yml

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ jobs:
6262
settings-library: ${{ steps.filter.outputs.settings-library }}
6363
simcore-sdk: ${{ steps.filter.outputs.simcore-sdk }}
6464
agent: ${{ steps.filter.outputs.agent }}
65+
notifications: ${{ steps.filter.outputs.notifications }}
6566
api: ${{ steps.filter.outputs.api }}
6667
api-server: ${{ steps.filter.outputs.api-server }}
6768
autoscaling: ${{ steps.filter.outputs.autoscaling }}
@@ -150,6 +151,12 @@ jobs:
150151
- 'services/docker-compose*'
151152
- 'scripts/mypy/*'
152153
- 'mypy.ini'
154+
notifications:
155+
- 'packages/**'
156+
- 'services/notifications/**'
157+
- 'services/docker-compose*'
158+
- 'scripts/mypy/*'
159+
- 'mypy.ini'
153160
api:
154161
- 'api/**'
155162
api-server:
@@ -602,6 +609,49 @@ jobs:
602609
with:
603610
flags: unittests #optional
604611

612+
unit-test-notifications:
613+
needs: changes
614+
if: ${{ needs.changes.outputs.notifications == 'true' || github.event_name == 'push' }}
615+
timeout-minutes: 18 # if this timeout gets too small, then split the tests
616+
name: "[unit] notifications"
617+
runs-on: ${{ matrix.os }}
618+
strategy:
619+
matrix:
620+
python: ["3.11"]
621+
os: [ubuntu-24.04]
622+
fail-fast: false
623+
steps:
624+
- uses: actions/checkout@v4
625+
- name: setup docker buildx
626+
id: buildx
627+
uses: docker/setup-buildx-action@v3
628+
with:
629+
driver: docker-container
630+
- name: setup python environment
631+
uses: actions/setup-python@v5
632+
with:
633+
python-version: ${{ matrix.python }}
634+
- name: install uv
635+
uses: astral-sh/setup-uv@v5
636+
with:
637+
version: "0.5.x"
638+
enable-cache: false
639+
cache-dependency-glob: "**/notifications/requirements/ci.txt"
640+
- name: show system version
641+
run: ./ci/helpers/show_system_versions.bash
642+
- name: install
643+
run: ./ci/github/unit-testing/notifications.bash install
644+
- name: typecheck
645+
run: ./ci/github/unit-testing/notifications.bash typecheck
646+
- name: test
647+
if: ${{ !cancelled() }}
648+
run: ./ci/github/unit-testing/notifications.bash test
649+
- uses: codecov/codecov-action@v5
650+
if: ${{ !cancelled() }}
651+
env:
652+
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
653+
with:
654+
flags: unittests #optional
605655

606656
unit-test-api:
607657
needs: changes
@@ -1834,6 +1884,7 @@ jobs:
18341884
unit-test-common-library,
18351885
unit-test-notifications-library,
18361886
unit-test-payments,
1887+
unit-test-notifications,
18371888
unit-test-dynamic-scheduler,
18381889
unit-test-postgres-database,
18391890
unit-test-python-linting,

Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ SERVICES_NAMES_TO_BUILD := \
4444
efs-guardian \
4545
invitations \
4646
migration \
47+
notifications \
4748
payments \
4849
resource-usage-tracker \
4950
dynamic-scheduler \

api/specs/web-server/_long_running_tasks.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ def get_async_job_status(
5858
responses=_export_data_responses,
5959
status_code=status.HTTP_204_NO_CONTENT,
6060
)
61-
def abort_async_job(
61+
def cancel_async_job(
6262
_path_params: Annotated[_PathParam, Depends()],
6363
): ...
6464

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
#!/bin/bash
2+
# http://redsymbol.net/articles/unofficial-bash-strict-mode/
3+
set -o errexit # abort on nonzero exitstatus
4+
set -o nounset # abort on unbound variable
5+
set -o pipefail # don't hide errors within pipes
6+
IFS=$'\n\t'
7+
8+
install() {
9+
make devenv
10+
# shellcheck source=/dev/null
11+
source .venv/bin/activate
12+
pushd services/notifications
13+
make install-ci
14+
popd
15+
uv pip list
16+
}
17+
18+
test() {
19+
# shellcheck source=/dev/null
20+
source .venv/bin/activate
21+
pushd services/notifications
22+
make test-ci-unit
23+
popd
24+
}
25+
26+
typecheck() {
27+
# shellcheck source=/dev/null
28+
source .venv/bin/activate
29+
uv pip install mypy
30+
pushd services/notifications
31+
make mypy
32+
popd
33+
}
34+
35+
# Check if the function exists (bash specific)
36+
if declare -f "$1" >/dev/null; then
37+
# call arguments verbatim
38+
"$@"
39+
else
40+
# Show a helpful error
41+
echo "'$1' is not a known function name" >&2
42+
exit 1
43+
fi

ci/helpers/requirements/requirements.txt

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
aiohttp==3.9.5
2+
# via
3+
# -c requirements/../../../requirements/constraints.txt
4+
# -r requirements/requirements.in
25
aiosignal==1.3.1
36
# via aiohttp
47
annotated-types==0.7.0
@@ -8,11 +11,15 @@ anyio==4.3.0
811
attrs==23.2.0
912
# via aiohttp
1013
certifi==2024.12.14
11-
# via requests
14+
# via
15+
# -c requirements/../../../requirements/constraints.txt
16+
# requests
1217
charset-normalizer==3.4.1
1318
# via requests
1419
docker==7.1.0
20+
# via -r requirements/requirements.in
1521
fastapi==0.115.0
22+
# via -r requirements/requirements.in
1623
frozenlist==1.4.1
1724
# via
1825
# aiohttp
@@ -27,22 +34,27 @@ multidict==6.0.5
2734
# aiohttp
2835
# yarl
2936
pydantic==2.10.5
30-
# via fastapi
37+
# via
38+
# -c requirements/../../../requirements/constraints.txt
39+
# fastapi
3140
pydantic-core==2.27.2
3241
# via pydantic
3342
requests==2.32.3
3443
# via docker
3544
sniffio==1.3.1
3645
# via anyio
3746
starlette==0.38.6
38-
# via fastapi
47+
# via
48+
# -c requirements/../../../requirements/constraints.txt
49+
# fastapi
3950
typing-extensions==4.12.2
4051
# via
4152
# fastapi
4253
# pydantic
4354
# pydantic-core
4455
urllib3==2.3.0
4556
# via
57+
# -c requirements/../../../requirements/constraints.txt
4658
# docker
4759
# requests
4860
yarl==1.9.4

packages/aws-library/requirements/_base.txt

Lines changed: 9 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
aio-pika==9.5.5
22
# via -r requirements/../../../packages/service-library/requirements/_base.in
3-
aioboto3==13.3.0
3+
aioboto3==14.1.0
44
# via -r requirements/_base.in
5-
aiobotocore==2.16.0
5+
aiobotocore==2.21.1
66
# via aioboto3
77
aiocache==0.12.3
88
# via
@@ -57,22 +57,9 @@ attrs==25.1.0
5757
# aiohttp
5858
# jsonschema
5959
# referencing
60-
boto3==1.35.81
61-
# via
62-
# -c requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt
63-
# -c requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt
64-
# -c requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt
65-
# -c requirements/../../../packages/service-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt
66-
# -c requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt
67-
# -c requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt
68-
# -c requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt
69-
# -c requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/../../../requirements/constraints.txt
70-
# -c requirements/../../../packages/service-library/requirements/../../../requirements/constraints.txt
71-
# -c requirements/../../../packages/settings-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt
72-
# -c requirements/../../../packages/settings-library/requirements/../../../requirements/constraints.txt
73-
# -c requirements/../../../requirements/constraints.txt
74-
# aiobotocore
75-
botocore==1.35.81
60+
boto3==1.37.1
61+
# via aiobotocore
62+
botocore==1.37.1
7663
# via
7764
# aiobotocore
7865
# boto3
@@ -134,6 +121,7 @@ importlib-metadata==8.5.0
134121
# via opentelemetry-api
135122
jmespath==1.0.1
136123
# via
124+
# aiobotocore
137125
# boto3
138126
# botocore
139127
jsonschema==4.23.0
@@ -148,6 +136,7 @@ mdurl==0.1.2
148136
# via markdown-it-py
149137
multidict==6.1.0
150138
# via
139+
# aiobotocore
151140
# aiohttp
152141
# yarl
153142
opentelemetry-api==1.30.0
@@ -311,6 +300,7 @@ pyinstrument==5.0.1
311300
# via -r requirements/../../../packages/service-library/requirements/_base.in
312301
python-dateutil==2.9.0.post0
313302
# via
303+
# aiobotocore
314304
# arrow
315305
# botocore
316306
python-dotenv==1.0.1
@@ -372,7 +362,7 @@ rpds-py==0.23.1
372362
# via
373363
# jsonschema
374364
# referencing
375-
s3transfer==0.10.4
365+
s3transfer==0.11.3
376366
# via boto3
377367
sh==2.2.2
378368
# via -r requirements/_base.in

packages/aws-library/requirements/_test.txt

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,12 @@ aws-xray-sdk==2.14.0
2020
# via moto
2121
blinker==1.9.0
2222
# via flask
23-
boto3==1.35.81
23+
boto3==1.37.1
2424
# via
25-
# -c requirements/../../../requirements/constraints.txt
2625
# -c requirements/_base.txt
2726
# aws-sam-translator
2827
# moto
29-
botocore==1.35.81
28+
botocore==1.37.1
3029
# via
3130
# -c requirements/_base.txt
3231
# aws-xray-sdk
@@ -142,7 +141,7 @@ markupsafe==3.0.2
142141
# via
143142
# jinja2
144143
# werkzeug
145-
moto==5.1.1
144+
moto==5.1.4
146145
# via -r requirements/_test.in
147146
mpmath==1.3.0
148147
# via sympy
@@ -258,7 +257,7 @@ rpds-py==0.23.1
258257
# -c requirements/_base.txt
259258
# jsonschema
260259
# referencing
261-
s3transfer==0.10.4
260+
s3transfer==0.11.3
262261
# via
263262
# -c requirements/_base.txt
264263
# boto3

0 commit comments

Comments
 (0)