8000 [pull] main from adap:main by pull[bot] · Pull Request #43 · kp-forks/flower · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

[pull] main from adap:main #43

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 156 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
156 commits
Select commit Hold shift + click to select a range
e337909
Update text and language files (#5337)
github-actions[bot] May 8, 2025
d7ac59e
feat(framework) Introduce `Inflatable` class (#5335)
jafermarq May 8, 2025
547e7f4
ci(framework:skip) Adjust Slack notifications for stale issues (#5326)
WilliamLindskog May 9, 2025
e637925
feat(framework) Introduce `inflate` functionality in `InflatableObjec…
jafermarq May 9, 2025
3cecfd5
ci(intelligence) Add Kotlin SDK release script (#5333)
May 9, 2025
8a74a95
refactor(framework) Move utils functions out of `serde.py` (#5343)
jafermarq May 9, 2025
d99542f
feat(datasets) Add `ContinuousPartitioner` (#5235)
Haoran-Jie May 9, 2025
fde37c9
feat(framework) Make `Array`, `ConfigRecord` and `MetricRecord` infla…
jafermarq May 9, 2025
6fec854
Update text and language files (#5345)
github-actions[bot] May 10, 2025
57b0a65
refactor(examples) Update `custom-mods` example (#5063)
jafermarq May 10, 2025
4418947
feat(baselines) Add `Floco` Baseline (#4941)
dennis-grinwald May 11, 2025
46743ca
refactor(examples) Bump version of `torch` and `torchvision` used in …
jafermarq May 11, 2025
6a51792
build(deps): bump torch from 2.4.0 to 2.7.0 in /examples/flowertune-l…
dependabot[bot] May 11, 2025
d4271c5
refactor(framework) Set upper limit for `click` (#5350)
jafermarq May 11, 2025
2c839d5
feat(framework) Add `build_fab` function to build FAB in memory (#5334)
panh99 May 11, 2025
5b5c4c7
refactor(*:skip) Update baselines template and baselines CI installat…
jafermarq May 11, 2025
e7a38f7
feat(framework) Add and implement `LinkState.acknowledge_app_heartbea…
panh99 May 12, 2025
1fb40a8
docs(intelligence) Add Kotlin API reference (#5339)
May 12, 2025
66857ab
ci(intelligence) Add Kotlin API generation to CI (#5352)
May 12, 2025
ad2e15b
refactor(intelligence) Update Kotlin API chat function signature (#5355)
May 12, 2025
47dd8b6
docs(intelligence) Update Kotlin API chat documentation (#5357)
May 12, 2025
a3d641b
fix(baselines) Upgrade torch versions (#5359)
maddox-j May 12, 2025
fedb46f
build(deps): bump torch in /examples/quickstart-huggingface (#5260)
dependabot[bot] May 13, 2025
a410fc4
feat(framework) Add `is_running` property to `HeartbeatSender` (#5358)
panh99 May 13, 2025
f09ccca
feat(intelligence) Add Kotlin SDK e2ee (#5362)
danielnugraha May 13, 2025
ba95fd5
feat(framework) Add `children` property to `InflatableObject` (#5353)
jafermarq May 13, 2025
bc5ce5f
feat(framework) Make `ArrayRecord` an `InflatableObject` (#5354)
jafermarq May 13, 2025
f9d66b7
feat(framework) Make `RecordDict` an `InflatableObject` (#5364)
jafermarq May 13, 2025
65b8ef2
feat(intelligence) Bump Kotlin SDK version to v0.1.8 (#5368)
danielnugraha May 14, 2025
848824b
Update text and language files (#5365)
github-actions[bot] May 14, 2025
8e17c78
docs(framework) Fix paths in docker docs (#5367)
panh99 May 14, 2025
eaa10cf
fix(framework) Fix `devcontainer.json` config due to failing `taplo` …
chongshenng May 14, 2025
5765571
feat(framework) Add `SendAppHeartbeat` to `ServerAppIo` service (#5322)
panh99 May 14, 2025
d0ca46b
feat(framework) Add ServerApp heartbeat (#5332)
panh99 May 14, 2025
3b872fa
feat(framework) Add `Pull/PushObjectRequest` to `ServerAppIo` (#5369)
jafermarq May 14, 2025
fb68422
refactor(framework) Add `get_object_head_values_from_object_content` …
panh99 May 14, 2025
27b63ba
fix(datasets) Fix partition inconsistencies across dataset splits (#5…
adamtupper May 14, 2025
86a7880
feat(framework) Enable app heartbeat from `flwr-simulation` (#5370)
panh99 May 14, 2025
35dc212
feat(framework) Add `Pull/PushObjectRequest` to `Fleet API` (#5372)
jafermarq May 14, 2025
9b7a2b8
Update text and language files (#5373)
github-actions[bot] May 15, 2025
fe5ba31
feat(framework) Include child object IDs in the object head (#5380)
panh99 May 16, 2025
2b33c39
ci(*:skip) Add heartbeat CI (#5304)
panh99 May 20, 2025
bd3d0af
feat(intelligence) Add Kotlin SDK examples (#5363)
danielnugraha May 20, 2025
4556eb8
feat(framework) Add workflow to ping for stale PRs (#5385)
WilliamLindskog May 20, 2025
27063eb
feat(framework) Add helpers to push and pull `InflatableObjects` recu…
jafermarq May 20, 2025
d4544ba
refactor(framework) Move `Metadata` and `Error` to own modules (#5390)
jafermarq May 20, 2025
c25b4ba
refactor(framework) Introduce new flwr subpackages (#5389)
danieljanes May 20, 2025
6fd9fe1
refactor(framework) Move `Metadata` and `Error` to `supercore` (#5392)
jafermarq May 20, 2025
da70161
Update text and language files (#5395)
github-actions[bot] May 21, 2025
6d1aeea
docs(framework) Add guide on how to run Flower on GCP (#5327)
dstripelis May 21, 2025
fc9352f
refactor(framework) Move `start_client` into `flwr.compat.client` (#5…
danieljanes May 21, 2025
60ab181
feat(framework) Make `Message` an `InflatableObject` (#5393)
jafermarq May 21, 2025
d92deab
refactor(framework) Move `nodestate` module to `flwr.supernode` (#5396)
panh99 May 21, 2025
6ce4cd5
Update text and language files (#5400)
github-actions[bot] May 22, 2025
916a9ec
ci(intelligence) Update CODEOWNERS for `dev/` (#5391)
charlesbvll May 22, 2025
9f6cdb7
Add bump kotlin version (#5387)
danielnugraha May 22, 2025
cbcf3e3
feat(framework) Introduce ObjectStore (#5308)
danieljanes May 22, 2025
d6f6297
refactor(framework) Add `ObjectStore` factory to `ServerAppIoServicer…
jafermarq May 22, 2025
3b8f6ad
feat(framework) Add workflow to label PR as Maintainer or Contributor…
WilliamLindskog May 22, 2025
9cd60a7
refactor(framework) Extend `InflatableObject` helper functions to inc…
jafermarq May 22, 2025
0966aa8
refactor(framework) Remove grpc-bidi support from SuperNode main loop…
danieljanes May 22, 2025
9c34f1c
refactor(framework) Remove in-process Client execution from SuperNode…
danieljanes May 22, 2025
387141f
docs(framework) Remove links to deprecated video tutorials (#5401)
jafermarq May 22, 2025
c9c0d21
Update text and language files (#5406)
github-actions[bot] May 23, 2025
17b4770
refactor(framework) Move SuperNode code to `flwr.supernode` module (#…
panh99 May 23, 2025
0e4d5ee
refactor(framework) Move `flwr.supernode.app` to `flwr.supernode.cli.…
panh99 May 23, 2025
d2fb2bd
refactor(framework) Centralize connection code in `start_client_inter…
panh99 May 23, 2025
f1740bd
refactor(framework) Delete `CreateRun` RPC (#5412)
panh99 May 23, 2025
b7499e1
refactor(framework) Remove unused `try-except` block in SuperNode (#5…
panh99 May 23, 2025
97f5a7a
ci(intelligence) Add version consistency check (#5386)
danielnugraha May 23, 2025
d7e60af
refactor(framework) Move start_server to flwr.compat (#5413)
danieljanes May 24, 2025
888d7b6
ci(intelligence) Change to automatic deployment for Kotlin SDK (#5388)
danielnugraha May 26, 2025
c49fa1a
Update text and language files (#5416)
github-actions[bot] May 26, 2025
34bb0de
refactor(framework) Remove unused code in `compat.client.app` to faci…
panh99 May 27, 2025
3ef3af0
feat(framework) Add `ExecAuthzPlugin` ABC (#5420)
chongshenng May 27, 2025
a47e8b5
refactor(framework) Extend protos to support for `ObjectStore` (#5425)
jafermarq May 27, 2025
fcd2af5
refactor(framework) Exclude `message_id` from `Message` deflate (#5426)
jafermarq May 27, 2025
e33e9e4
feat(framework) Add get authorization plugin to SuperLink (#5421)
chongshenng May 27, 2025
007d3cb
feat(framework) Add descendant computation helper (#5430)
jafermarq May 28, 2025
695834d
feat(framework) Add preregister functionality to `ObjecStore` (#5424)
jafermarq May 28, 2025
bde335f
refactor(*:skip) Fix typos in docstrings and comments (#5433)
DeVikingMark May 28, 2025
249e8cc
refactor(framework) Cache `.object_id` and introduce `.is_dirty` (#5429)
panh99 May 28, 2025
3b449ba
refactor(framework) Move `message_id` creation out of `LinkState` and…
jafermarq May 28, 2025
cf90fe2
refactor(framework) Rename `unauthenticated_exc_handler` to a generic…
chongshenng May 28, 2025
e6eb74b
feat(framework) Load both authorization and authentication plugins (#…
chongshenng May 29, 2025
f3f7c76
feat(framework) Log for both incoming and outgoing messages in `messa…
panh99 May 29, 2025
6ddb51d
refactor(framework) Enable preregistration of objects in `ObjectStore…
jafermarq May 29, 2025
59ee602
Update text and language files (#5436)
github-actions[bot] May 29, 2025
090ff1d
fix(framework) Add option to label bot PRs as Bot (#5440)
WilliamLindskog May 29, 2025
66c757e
refactor(framework) Trim unnecessary code in `flwr.supernode.start_cl…
panh99 May 30, 2025
dd31778
refactor(framework) Update gRPC utils for `InflatableObjects` (#5445)
jafermarq May 30, 2025
423bdf2
refactor(framework) Introduce `NoObjectInStoreError` (#5446)
jafermarq May 30, 2025
b267e9c
fix(framework) Check `user_info` is valid when refreshing authenticat…
chongshenng May 30, 2025
9486776
refactor(framework) Change the type of `Array.shape` to `tuple[int, .…
panh99 May 30, 2025
0422982
fix(framework) Use covariant loader signature to support `ExecAuthPlu…
chongshenng May 30, 2025
e297792
refactor(framework) Update Servicers to provide list of objects to pu…
jafermarq May 30, 2025
c92e408
feat(framework) Allow registering exit handlers (#4927)
panh99 May 30, 2025
081126f
feat(framework) Add user authorization logic to user authentication g…
chongshenng May 30, 2025
fef07ea
docs(framework) Compare Flower Simulation to Deployment Runtime (#5361)
dstripelis May 31, 2025
37e75da
docs(framework) Update Flower with Deployment Engine Page (#5374)
dstripelis May 31, 2025
b3b0fdd
docs(framework) Add Flower Components Network Interface and Comm Mode…
dstripelis Jun 1, 2025
149f48b
Update text and language files (#5457)
github-actions[bot] Jun 2, 2025
c2e2660
refactor(framework) Make record protocol serialization/deserializatio…
panh99 Jun 2, 2025
0c2f498
refactor(framework) Move `ClientAppIoServicer` to `flwr.supernode.ser…
panh99 Jun 2, 2025
caa6668
fix(framework) Fix `ObjectStore` usage in `rest_api.py` (#5458)
panh99 Jun 2, 2025
ea00b75
feat(framework) Extend `NodeState` ABC (#5402)
panh99 Jun 2, 2025
93ed883
refactor(framework) Move `flwr-clientapp` code to `flwr.supernode` (#…
panh99 Jun 2, 2025
56eb701
refactor(framework) Pass `run_id` in Object requests to servicers (#5…
jafermarq Jun 2, 2025
b072a59
fix(framework) Update children condition in `MetricRecord` (#5467)
jafermarq Jun 3, 2025
11b49fe
docs(framework) Fix small issues (#5463)
danieljanes Jun 3, 2025
218db26
refactor(framework) Implement push and pull objects in servicers (#5450)
jafermarq Jun 3, 2025
46ac50d
fix(framework) Fix cyclic import error on Windows (#5465)
panh99 Jun 3, 2025
f0ded43
refactor(framework) Wrap stub with `RetryInvoker` on client side (#5468)
jafermarq Jun 3, 2025
53450a6
Update text and language files (#5471)
github-actions[bot] Jun 4, 2025
e6e06d0
refactor(framework) Run `flwr-clientapp` command in SuperNode (#5469)
panh99 Jun 4, 2025
ca38e27
refactor(framework) Switch to new messaging system (#5449)
jafermarq Jun 4, 2025
7409111
feat(framework) Use `NodeState` to store incoming messages (#5473)
panh99 Jun 4, 2025
eb522b0
fix(framework) Ensure `ClientManager` update-to-date and fix `test_re…
panh99 Jun 5, 2025
6f8050a
refactor(framework) Remove `Message` content before sending (#5475)
jafermarq Jun 5, 2025
6dfcac7
ci(intelligence) Update WebLLM in TS SDK (#5484)
charlesbvll Jun 6, 2025
dd8d6f4
ci(framework) Fix E2E tensorflow dataset loading (#5483)
mohammadnaseri Jun 6, 2025
109117e
ci(framework:skip) Disable reconnection test due to lack of file-base…
panh99 Jun 6, 2025
bef74d4
refactor(framework) Make pull/push object helper functions accept `Ca…
panh99 Jun 6, 2025
0960e13
feat(framework) Introduce validator function of object content (#5477)
jafermarq Jun 7, 2025
8b68b27
feat(framework) Add utils for pushing and pulling objects (#5486)
panh99 Jun 7, 2025
6e46fef
feat(framework) Use new utils for pushing and pulling objects (#5487)
panh99 Jun 7, 2025
0278849
refactor(framework) Remove old util functions for pushing and pulling…
panh99 Jun 7, 2025
0cff6c0
fix(framework) Fix typo of `get_descendant_object_ids` function name …
panh99 Jun 7, 2025
1c79c60
feat(framework) Add `NodeState.create/verify/delete_token` methods an…
panh99 Jun 7, 2025
bdd894e
refactor(framework) Make use of new object content validator (#5492)
jafermarq Jun 9, 2025
9071dc6
Update text and language files (#5491)
github-actions[bot] Jun 9, 2025
38bd90b
refactor(framework) Move `PushObject` and `PullObject` logic in `Flee…
jafermarq Jun 10, 2025
aba1e92
refactor(framework) Move generic inflatable utils out of gRPC utils (…
jafermarq Jun 10, 2025
f3c5d8d
refactor(framework) Move into a separate function the code logic of p…
panh99 Jun 10, 2025
ca32d9e
refactor(framework) Make `REST` work with content-addressable messagi…
jafermarq Jun 11, 2025
47c1ceb
feat(framework) Bump setuptools version to 78.1.1 (#5499)
Robert-Steiner Jun 11, 2025
4c3a026
feat(framework) Bump version of Alpine base image to 3.22 (#5498)
Robert-Steiner Jun 11, 2025
a1c1a23
ci(framework) Add Dependabot for Docker base images (#5500)
Robert-Steiner Jun 11, 2025
9189ac2
refactor(framework) Rename `UserInfo.user_id` to `UserInfo.flwr_aid` …
chongshenng Jun 11, 2025
1e32d63
refactor(framework) Rename `UserInfo` to `AccountInfo` (#5502)
chongshenng Jun 11, 2025
81cc5d3
refactor(framework) Rename `user_name` to `account_name` (#5503)
chongshenng Jun 11, 2025
aea46f6
feat(baselines) Add FEMNIST dataset to `FedProx` baseline and reprodu…
Ashley0909 Jun 11, 2025
d4050ce
feat(framework) Add `no_object_id_recompute` context to avoid recompu…
panh99 Jun 11, 2025
bd62fc1
feat(framework) Use `no_object_id_recompute` when pushing messages (#…
panh99 Jun 12, 2025
b0c3f68
feat(framework) Add `flwr_aid` to `Run` (#5506)
chongshenng Jun 12, 2025
49dc995
feat(framework) Add `flwr_aid` to `LinkState` (#5505)
chongshenng Jun 12, 2025
4bf3ae8
feat(framework) Use `ObjectTree` for pre-registration (#5507)
panh99 Jun 12, 2025
95e230d
feat(framework) Add `flwr_aid` to `LinkState.get_run_ids` method (#5510)
chongshenng Jun 12, 2025
4bf5959
feat(framework) Count references and runs in `ObjectStore` (#5509)
panh99 Jun 12, 2025
259c25d
feat(framework) Add `ConfirmMessageReceived` RPC (#5513)
panh99 Jun 12, 2025
b3d54cd
refactor(*:skip) Fix typos (#5444)
jafermarq Jun 12, 2025
dadea92
feat(framework) Implement and call RPCs for safe object deletion (#5514)
panh99 Jun 12, 2025
7a2aa0d
break(framework) Add `flwr_aid`-`run_id` guard clause to `ExecService…
chongshenng Jun 13, 2025
cd904c8
feat(intelligence) Use stricter typing for Message role (#5515)
charlesbvll Jun 13, 2025
70cb211
fix(framework) Fix the CLI output for `flwr ls/stop/log` when run ID …
panh99 Jun 13, 2025
2905b59
feat(framework) Trigger object deletion in `ExecServicer` (#5517)
panh99 Jun 13, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 5 additions & 1 deletion .devcontainer/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,11 @@ RUN apt-get install -y curl wget gnupg python3 python-is-python3 python3-pip git
RUN python -m pip install \
pip==24.1.2 \
setuptools==70.3.0 \
poetry==2.1.3
poetry==2.1.3 \
maturin==1.8.6
# Install taplo from the main branch on GitHub so that maturin can build the wheel
RUN python -m pip install \
"git+https://github.com/tamasfe/taplo.git@1bb2c1881995a819d2bda7681d145709c783be1b#egg=taplo"

USER $USERNAME
ENV PATH="/home/$USERNAME/.local/bin:${PATH}"
11 changes: 7 additions & 4 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
{
"dockerFile": "Dockerfile",
"postCreateCommand": "sudo poetry install --extras \"simulation\"",
"postCreateCommand": ".devcontainer/post-create.sh",
"customizations": {
"vscode": {
"settings": {
"files.watcherExclude": { },
"search.exclude": { },
"files.watcherExclude": {},
"search.exclude": {},
"terminal.integrated.defaultProfile.linux": "bash"
},
"extensions": [ "ms-python.python" ]
"extensions": [
"ms-python.python",
"tamasfe.even-better-toml"
]
}
},
"remoteUser": "flwr-vscode",
Expand Down
32 changes: 32 additions & 0 deletions .devcontainer/post-create.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#!/bin/bash

set -euo pipefail

cd framework

files=(
"pyproject.toml"
"devtool/pyproject.toml"
)

comment_taplo() {
sed -i "s/^\(\s*taplo\s*=.*\)$/#\1/" "$1"
}

uncomment_taplo() {
sed -i "s/^#\(\s*taplo\s*=.*\)/\1/" "$1"
}

# Comment out taplo from pyproject.toml and devtool/pyproject.toml.
# This prevents version conflicts with taplo built from maturin and
# is only required for devcontainer builds.
for f in "${files[@]}"; do
comment_taplo "$f"
done

sudo poetry install --with dev --extras "simulation"

# Restore taplo lines in "files"
for f in "${files[@]}"; do
uncomment_taplo "$f"
done
1 change: 1 addition & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ README.md @jafermarq @tanertopal @danieljanes
/examples @chongshenng @jafermarq @tanertopal @danieljanes

# Flower Intelligence
/intelligence/dev @charlesbvll @tanertopal @danieljanes
/intelligence/docs @charlesbvll @tanertopal @danieljanes
/intelligence/ts @charlesbvll @tanertopal @danieljanes

Expand Down
2 changes: 1 addition & 1 deletion .github/actions/bootstrap/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ inputs:
default: 24.1.2
setuptools-version:
description: "Version of setuptools to be installed using pip"
default: 70.3.0
default: 78.1.1
poetry-version:
description: "Version of poetry to be installed using pip"
default: 2.1.3
Expand Down
5 changes: 5 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -76,3 +76,8 @@ updates:
schedule:
# Check for updates to GitHub Actions every week
interval: "weekly"

- package-ecosystem: "docker"
directory: "/framework/docker/base"
schedule:
interval: "weekly"
2 changes: 1 addition & 1 deletion .github/workflows/baselines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ jobs:

- name: Install dependencies
working-directory: baselines/${{ matrix.baseline }}
run: python -m poetry install
run: pip install ."[dev]"

- name: Testing ${{ matrix.baseline }}
working-directory: baselines
Expand Down
45 changes: 40 additions & 5 deletions .github/workflows/framework-e2e.yml
Original file line number Diff line number Diff line change
Expand Up @@ -162,8 +162,7 @@ jobs:
- directory: e2e-tensorflow
e2e: e2e_tensorflow
dataset: |
import tensorflow as tf
tf.keras.datasets.cifar10.load_data()
from datasets import load_dataset;import numpy as np;dataset = load_dataset(\"uoft-cs/cifar10\");np.stack(dataset[\"train\"][\"img\"])

- directory: e2e-opacus
e2e: e2e_opacus
Expand Down Expand Up @@ -250,9 +249,9 @@ jobs:
- name: Run driver test with client authentication
if: ${{ needs.changes.outputs.framework == 'true' && matrix.directory == 'e2e-bare-auth' }}
run: ./../test_superlink.sh "${{ matrix.directory }}" client-auth
- name: Run reconnection test with SQLite database
if: ${{ needs.changes.outputs.framework == 'true' && matrix.directory == 'e2e-bare' }}
run: ./../test_reconnection.sh sqlite
# - name: Run reconnection test with SQLite database (Temporarily disabled due to in-memory ObjectStore)
# if: ${{ needs.changes.outputs.framework == 'true' && matrix.directory == 'e2e-bare' }}
# run: ./../test_reconnection.sh sqlite
- name: Cache save Python location
id: cache-save-python
uses: actions/cache/save@v4
Expand Down Expand Up @@ -470,3 +469,39 @@ jobs:
working-directory: ./framework/e2e
run: ./test_windows.sh
shell: bash

serverapp-heartbeat-test:
runs-on: ubuntu-22.04
timeout-minutes: 10
needs: [changes, wheel]
strategy:
matrix:
engine: [deployment, simulation]
python-version: ["3.9", "3.10", "3.11", "3.12"]

if: ${{ needs.changes.outputs.framework == 'true' }}

name: |
ServerApp/run heartbeat test with ${{ matrix.engine }} runtime /
Python ${{ matrix.python-version }}

steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install build tools
run: python -m pip install -U pip==23.3.1
- name: Overwrite ping interval and patience
run: |
sed -i 's/\(HEARTBEAT_DEFAULT_INTERVAL *= *\).*/\16/' framework/py/flwr/common/constant.py
sed -i 's/\(HEARTBEAT_PATIENCE *= *\).*/\11/' framework/py/flwr/common/constant.py
- name: Install dependencies
run: |
cd framework
python -m pip install --upgrade .[simulation]
- name: Run test
working-directory: ./framework/e2e/e2e-serverapp-heartbeat
run: python ../test_serverapp_heartbeat.py ${{ matrix.engine }}
shell: bash
33 changes: 32 additions & 1 deletion .github/workflows/intelligence-docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -99,9 +99,34 @@ jobs:
name: swift-docs
path: intelligence/docs/source/swift-api-ref/

build_kt_docs:
runs-on: ubuntu-22.04
name: Build Kotlin Docs
steps:
- uses: actions/checkout@v4

- name: Bootstrap
uses: ./.github/actions/bootstrap

- name: Set up JDK
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: '17'

- name: Build Kotlin docs
run: |
./intelligence/dev/build-kt-docs.sh

- name: Upload Kotlin docs artifact
uses: actions/upload-artifact@v4
with:
name: kt-docs
path: intelligence/docs/source/kt-api-ref/

build_and_deploy:
runs-on: ubuntu-22.04
needs: [build_ts_docs, build_swift_docs]
needs: [build_ts_docs, build_swift_docs, build_kt_docs]
name: Deploy Docs
steps:
- uses: actions/checkout@v4
Expand Down Expand Up @@ -129,6 +154,12 @@ jobs:
with:
name: swift-docs
path: intelligence/docs/source/swift-api-ref/
- name: Download Kotlin docs
if: ${{ github.ref == 'refs/heads/main' && github.repository == 'adap/flower' && !github.event.pull_request.head.repo.fork }}
uses: actions/download-artifact@v4
with:
name: kt-docs
path: intelligence/docs/source/kt-api-ref/
- name: Build final docs
if: ${{ github.ref == 'refs/heads/main' && github.repository == 'adap/flower' && !github.event.pull_request.head.repo.fork }}
run: |
Expand Down
50 changes: 47 additions & 3 deletions .github/workflows/intelligence-release.yml
F438
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Publish `@flwr/flwr` release on NPM
name: Publish `@flwr/flwr` (NPM) and `ai.flower:flwr` (Maven)

on:
push:
Expand All @@ -10,9 +10,26 @@ concurrency:
cancel-in-progress: true

jobs:
publish:
check-version:
name: Check version consistency
runs-on: ubuntu-22.04
steps:
- name: Checkout code
uses: actions/checkout@v4

3D11 - name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: '22.14.0'
registry-url: https://registry.npmjs.org

- name: Run version consistency check
run: ./intelligence/dev/check-version-consistency.sh

publish-typescript:
needs: check-version
if: ${{ github.repository == 'adap/flower' }}
name: Publish release
name: Publish Flower Intelligence TypeScript SDK to NPM
runs-on: ubuntu-22.04
timeout-minutes: 10
steps:
Expand Down Expand Up @@ -41,3 +58,30 @@ jobs:
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
run: pnpm publish . --access public --no-git-checks

publish-kotlin:
needs: check-version
if: ${{ github.repository == 'adap/flower' }}
name: Publish Flower Intelligence Kotlin SDK to Maven Central
runs-on: ubuntu-22.04
timeout-minutes: 10

env:
MVN_CENTRAL_USER: ${{ secrets.MVN_CENTRAL_USER }}
MVN_CENTRAL_PASSWORD: ${{ secrets.MVN_CENTRAL_PASSWORD }}
ORG_GRADLE_PROJECT_signingKey: ${{ secrets.GRADLE_SIGNING_KEY }}
ORG_GRADLE_PROJECT_signingPassword: ${{ secrets.GRADLE_SIGNING_PASSWORD }}

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Java
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 17

- name: Publish Kotlin package
working-directory: intelligence/kt
run: ./dev/publish.sh
71 changes: 71 additions & 0 deletions .github/workflows/label-pr-author.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
name: Label PR Authors (Scheduled)

on:
schedule:
- cron: '0 * * * *' # every hour
workflow_dispatch: # allow manual run too

permissions:
pull-requests: write
issues: write

jobs:
label-prs:
runs-on: ubuntu-22.04
steps:
- uses: actions/github-script@v7
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const org = "adap";

const prs = await github.rest.pulls.list({
owner: context.repo.owner,
repo: context.repo.repo,
state: "open",
per_page: 100,
});

for (const pr of prs.data) {
const labels = pr.labels.map(l => l.name);
const hasLabel = labels.includes("Maintainer") || labels.includes("Contributor") || labels.includes("Bot");
if (hasLabel) continue;

const author = pr.user.login;
const isBot = pr.user.type === "Bot";

if (isBot) {
console.log(`Labeling PR #${pr.number} by ${author} as Bot`);
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pr.number,
labels: ["Bot"],
});
continue;
}

let isMaintainer = false;
try {
const result = await github.rest.orgs.checkMembershipForUser({
org,
username: author
});
isMaintainer = result.status === 204;
} catch (e) {
if (e.status !== 404) throw e;
}

const label = isMaintainer ? "Maintainer" : "Contributor";
console.log(`Labeling PR #${pr.number} by ${author} as ${label}`);

await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pr.number,
labels: [label],
});
}

console.log("All PRs processed");
return `Labeled ${prs.data.length} PRs successfully.`;
Loading
0