Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
36d2a6a
feat: add initial Python SDK for Agones game server
hiromesh Apr 1, 2026
17811a5
docs: add Python Client SDK documentation and update README
hiromesh Apr 1, 2026
b742954
feat: add Python SDK Dockerfile and scripts
hiromesh Apr 1, 2026
3f7b959
refactor: update import statements in Python SDK generation script
hiromesh Apr 2, 2026
fef90f3
Merge branch 'main' into feature/python-sdk
hiromesh Apr 2, 2026
84698fe
feat: add Python SDK test script and client implementation
hiromesh Apr 3, 2026
48a2703
fix: prevent multiple annotations in Python SDK game server callback
hiromesh Apr 7, 2026
98dd49b
refactor: update Google APIs directory in Python SDK generation script
hiromesh Apr 7, 2026
2ac4a12
fix: update repository URLs in Python SDK configuration
hiromesh Apr 7, 2026
0edff62
fix: update dependencies in Python SDK configuration and enhance game…
hiromesh Apr 7, 2026
e1bcdee
fix: improve game server UID handling in Python SDK client
hiromesh Apr 7, 2026
409f239
Merge branch 'main' into feature/python-sdk
hiromesh Apr 8, 2026
73c3a3e
Merge branch 'main' into feature/python-sdk
markmandel Apr 11, 2026
f74a20f
fix: enhance game server watching with blocking stream
hiromesh Apr 13, 2026
34c6e40
Merge branch 'main' into feature/python-sdk
hiromesh Apr 13, 2026
d056ef0
fix: improve health ping handling in AgonesSDK
hiromesh Apr 14, 2026
29de3d4
chore: update copyright notices in Python and SCSS files
hiromesh Apr 17, 2026
e6e2b62
docs: update Python SDK guide with publish date and installation inst…
hiromesh Apr 17, 2026
9c746a5
Merge branch 'main' into feature/python-sdk
hiromesh Apr 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions build/build-sdk-images/python/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Copyright Contributors to Agones a Series of LF Projects, LLC.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
ARG BASE_IMAGE=agones-build-sdk-base:latest
FROM $BASE_IMAGE

RUN apt-get --allow-releaseinfo-change update && \
apt-get install -y python3 python3-pip python3-venv && \
apt-get clean

# code generation scripts
COPY *.sh /root/
RUN chmod +x /root/*.sh
21 changes: 21 additions & 0 deletions build/build-sdk-images/python/gen.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#!/usr/bin/env bash

# Copyright Contributors to Agones a Series of LF Projects, LLC.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

set -ex
cd /go/src/agones.dev/agones/sdks/python
python3 -m venv .venv
.venv/bin/pip install grpcio-tools
PATH="$(pwd)/.venv/bin:$PATH" bash generate.sh
21 changes: 21 additions & 0 deletions build/build-sdk-images/python/sdktest.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#!/usr/bin/env bash

# Copyright Contributors to Agones a Series of LF Projects, LLC.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

set -ex
cd /go/src/agones.dev/agones/sdks/python
python3 -m venv .venv
.venv/bin/pip install grpcio protobuf
.venv/bin/python /go/src/agones.dev/agones/test/sdk/python/testSDKClient.py
21 changes: 21 additions & 0 deletions build/build-sdk-images/python/test.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#!/usr/bin/env bash

# Copyright Contributors to Agones a Series of LF Projects, LLC.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

set -ex
cd /go/src/agones.dev/agones/sdks/python
python3 -m venv .venv
.venv/bin/pip install grpcio protobuf pytest
.venv/bin/python -m pytest tests/
13 changes: 11 additions & 2 deletions build/includes/sdk.mk
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ gen-sdk-grpc: COMMAND := gen
gen-sdk-grpc: run-sdk-command

# Runs a command on all supported languages, use COMMAND variable to select which command.
run-all-sdk-command: run-sdk-command-go run-sdk-command-rust run-sdk-command-cpp run-sdk-command-node run-sdk-command-restapi run-sdk-command-csharp
run-all-sdk-command: run-sdk-command-go run-sdk-command-rust run-sdk-command-cpp run-sdk-command-node run-sdk-command-restapi run-sdk-command-csharp run-sdk-command-python

run-sdk-command-node:
$(MAKE) run-sdk-command COMMAND=$(COMMAND) SDK_FOLDER=node
Expand All @@ -86,6 +86,9 @@ run-sdk-command-restapi:
run-sdk-command-csharp:
$(MAKE) run-sdk-command COMMAND=$(COMMAND) SDK_FOLDER=csharp

run-sdk-command-python:
$(MAKE) run-sdk-command COMMAND=$(COMMAND) SDK_FOLDER=python

# Runs a command for a specific SDK if it exists.
run-sdk-command:
@cd $(sdk_build_folder); \
Expand Down Expand Up @@ -201,8 +204,14 @@ run-sdk-conformance-test-rest:

$(MAKE) run-sdk-command COMMAND=clean SDK_FOLDER=restapi

run-sdk-conformance-test-python:
# run with Beta feature flags enabled
$(MAKE) run-sdk-conformance-test SDK_FOLDER=python GRPC_PORT=9006 HTTP_PORT=9106 FEATURE_GATES=$(BETA_FEATURE_GATES) TESTS=$(DEFAULT_CONFORMANCE_TESTS),$(COUNTS_AND_LISTS_TESTS)
# run with Alpha feature flags enabled
$(MAKE) run-sdk-conformance-test SDK_FOLDER=python GRPC_PORT=9006 HTTP_PORT=9106 FEATURE_GATES=$(ALPHA_FEATURE_GATES) TESTS=$(DEFAULT_CONFORMANCE_TESTS),$(ALPHA_CONFORMANCE_TESTS)

# Run a conformance test for all SDKs supported
run-sdk-conformance-tests: run-sdk-conformance-test-node run-sdk-conformance-test-go run-sdk-conformance-test-rust run-sdk-conformance-test-rest run-sdk-conformance-test-cpp run-sdk-conformance-test-csharp
run-sdk-conformance-tests: run-sdk-conformance-test-node run-sdk-conformance-test-go run-sdk-conformance-test-rust run-sdk-conformance-test-rest run-sdk-conformance-test-cpp run-sdk-conformance-test-csharp run-sdk-conformance-test-python

# Clean package directories and binary files left
# after building conformance tests for all SDKs supported
Expand Down
1 change: 1 addition & 0 deletions build/scripts/sdk-update-version/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ func main() {
"sdks/csharp/sdk/AgonesSDK.nuspec",
"sdks/csharp/sdk/csharp-sdk.csproj",
"sdks/rust/Cargo.toml",
"sdks/python/pyproject.toml",
}

for _, filename := range files {
Expand Down
1 change: 1 addition & 0 deletions sdks/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ For detailed instruction on how to develop each client library please refer to r
* Agones Go Client SDK (todo)
* [Agones NodeJS Client SDK](nodejs/README.md)
* [Agones Rust Client SDK](rust/README.md)
* [Agones Python Client SDK](python/README.md)
* OpenAPI/Swagger Definitions (todo)
* [Agones Unity Client SDK](unity/README.md)
* Agones Unreal Client SDK (todo)
6 changes: 6 additions & 0 deletions sdks/python/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
__pycache__/
*.py[cod]
*.egg-info/
dist/
build/
.pytest_cache/
7 changes: 7 additions & 0 deletions sdks/python/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Python Game Server Client SDK

This is the Python version of the Agones Game Server Client SDK.

See the [Python SDK Documentation](https://agones.dev/site/docs/guides/client-sdks/python/) for details

The [Client SDK Documentation](https://agones.dev/site/docs/guides/client-sdks/) has details on each of the SDK functions and how to run the SDK locally.
17 changes: 17 additions & 0 deletions sdks/python/agones/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Copyright Contributors to Agones a Series of LF Projects, LLC.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

from agones.sdk import AgonesSDK

__all__ = ["AgonesSDK"]
Empty file.
Empty file.
47 changes: 47 additions & 0 deletions sdks/python/agones/_generated/alpha/alpha_pb2.py

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading