Feat: add python sdk for Agones game server#4496
Feat: add python sdk for Agones game server#4496markmandel merged 20 commits intoagones-dev:mainfrom
Conversation
- Introduced core SDK functionality for managing GameServer lifecycle, including methods for connecting, marking readiness, and handling player connections. - Implemented Alpha and Beta features for player tracking and counters/lists management. - Added gRPC code generation script and necessary configuration files. - Included README documentation for installation and usage instructions. - Created .gitignore to exclude unnecessary files from version control. Signed-off-by: hiromesh <417969567@qq.com>
- Added Python Client SDK documentation with installation and usage instructions. - Updated README to include a link to the new Python Client SDK. - Enhanced the main SDK documentation index to reference the Python SDK. Signed-off-by: hiromesh <417969567@qq.com>
- Introduced Dockerfile for building Python SDK images, including installation of Python and necessary packages. - Added code generation script (gen.sh) for setting up a Python virtual environment and installing grpcio-tools. - Included test script (test.sh) for running pytest with required dependencies. - Updated Makefile to support Python SDK commands for generation and conformance testing. Signed-off-by: hiromesh <417969567@qq.com>
|
This PR exceeds the recommended size of 1000 lines. Please make sure you are NOT addressing multiple issues with one PR. Note this PR might be rejected due to its size. |
markmandel
left a comment
There was a problem hiding this comment.
This is a huge PR 😄 so tough to review - but let's see if it passes CI at least!
|
/gcbrun |
|
Build Failed 😭 Build Id: 4cc02a9e-8564-4474-9261-5fdda1e658b3 Status: FAILURE To get permission to view the Cloud Build view, join the agones-discuss Google Group. |
- Replaced sed commands with a Python script to modify import statements for relative imports in generated gRPC files. - Removed obsolete license classifier from pyproject.toml. Signed-off-by: hiromesh <417969567@qq.com>
|
This PR exceeds the recommended size of 1000 lines. Please make sure you are NOT addressing multiple issues with one PR. Note this PR might be rejected due to its size. |
|
This PR exceeds the recommended size of 1000 lines. Please make sure you are NOT addressing multiple issues with one PR. Note this PR might be rejected due to its size. |
|
/gcbrun |
found the issue: generate.sh was using sed -i '' (macos-only syntax) which fails on linux. |
|
/gcbrun |
|
Build Failed 😭 Build Id: c8baa8f7-c622-4b89-9105-9eee017856f7 Status: FAILURE To get permission to view the Cloud Build view, join the agones-discuss Google Group. |
- Introduced a new test script (sdktest.sh) for setting up a Python virtual environment and running the Agones SDK client. - Added a comprehensive Python client implementation (testSDKClient.py) for managing player connections, counters, and lists within the Agones game server. Signed-off-by: hiromesh <417969567@qq.com>
|
This PR exceeds the recommended size of 1000 lines. Please make sure you are NOT addressing multiple issues with one PR. Note this PR might be rejected due to its size. |
thanks for triggering the build — really helpful! found the issue: the missing sdktest.sh + conformance test client which the sdk conformance step requires. fix is pushed : ) |
|
/gcbrun |
|
Build Failed 😭 Build Id: 6a25bccc-6ded-47ed-a369-a62872e6bdd6 Status: FAILURE To get permission to view the Cloud Build view, join the agones-discuss Google Group. |
- Updated the game server callback to ensure that the annotation is set only once by introducing a flag. - This change prevents redundant calls to `sdk.set_annotation` during the game server event handling. Signed-off-by: hiromesh <417969567@qq.com>
|
Build Succeeded 🥳 Build Id: f69043b8-7554-4441-b799-bc44d52fd26e The following development artifacts have been built, and will exist for the next 30 days:
A preview of the website (the last 30 builds are retained): To install this version: |
finally, all passed 😭 |
markmandel
left a comment
There was a problem hiding this comment.
Nice work!
We finally worked out what the Apache header needs to be:
#4514
So can we switch that over too please?
- Changed copyright attribution from "Google LLC" to "Contributors to Agones a Series of LF Projects, LLC" across multiple Python scripts and SCSS files to reflect the correct ownership. Signed-off-by: hiromesh <417969567@qq.com>
|
This PR exceeds the recommended size of 1000 lines. Please make sure you are NOT addressing multiple issues with one PR. Note this PR might be rejected due to its size. |
…ructions - Added a publish date to the Python Game Server Client SDK documentation. - Simplified the installation instructions by removing the code blocks and providing a direct link to install from source on GitHub. Signed-off-by: hiromesh <417969567@qq.com>
|
This PR exceeds the recommended size of 1000 lines. Please make sure you are NOT addressing multiple issues with one PR. Note this PR might be rejected due to its size. |
done, updated to the new header. |
|
This PR exceeds the recommended size of 1000 lines. Please make sure you are NOT addressing multiple issues with one PR. Note this PR might be rejected due to its size. |
markmandel
left a comment
There was a problem hiding this comment.
Looks good other than that small thing. @galalmounir you were looking at this previously -- anything else you'd like to check in your review, or are you happy with this?
|
/gcbrun |
|
Build Failed 😭 Build Id: 6b7ff78d-a9af-4858-bb54-9c98080be38d Status: FAILURE To get permission to view the Cloud Build view, join the agones-discuss Google Group. |
ruh roh |
|
That's no on you though |
- Introduced a license header to all generated Python files in the SDK to ensure proper attribution and compliance with the Apache License, Version 2.0. - Updated the `generate.sh` script to automatically prepend the license header to newly generated files. Signed-off-by: hiromesh <417969567@qq.com>
|
This PR exceeds the recommended size of 1000 lines. Please make sure you are NOT addressing multiple issues with one PR. Note this PR might be rejected due to its size. |
galalmounir
left a comment
There was a problem hiding this comment.
LGTM! 🔥
Since we're going to do the pip workflow in a separate PR, we'll need an issue created for it so we dont lose track
done #4524 |
|
/gcbrun |
|
/gcbrun Should work now. Things broke. Also because security, only approvers or releasers can kick off CI builds. |
|
Build Succeeded 🥳 Build Id: 508d2e3c-085f-4e06-8bb6-3f57cc5e7b68 The following development artifacts have been built, and will exist for the next 30 days:
A preview of the website (the last 30 builds are retained): To install this version: |
* feat: add initial Python SDK for Agones game server - Introduced core SDK functionality for managing GameServer lifecycle, including methods for connecting, marking readiness, and handling player connections. - Implemented Alpha and Beta features for player tracking and counters/lists management. - Added gRPC code generation script and necessary configuration files. - Included README documentation for installation and usage instructions. - Created .gitignore to exclude unnecessary files from version control. Signed-off-by: hiromesh <417969567@qq.com> * docs: add Python Client SDK documentation and update README - Added Python Client SDK documentation with installation and usage instructions. - Updated README to include a link to the new Python Client SDK. - Enhanced the main SDK documentation index to reference the Python SDK. Signed-off-by: hiromesh <417969567@qq.com> * feat: add Python SDK Dockerfile and scripts - Introduced Dockerfile for building Python SDK images, including installation of Python and necessary packages. - Added code generation script (gen.sh) for setting up a Python virtual environment and installing grpcio-tools. - Included test script (test.sh) for running pytest with required dependencies. - Updated Makefile to support Python SDK commands for generation and conformance testing. Signed-off-by: hiromesh <417969567@qq.com> * refactor: update import statements in Python SDK generation script - Replaced sed commands with a Python script to modify import statements for relative imports in generated gRPC files. - Removed obsolete license classifier from pyproject.toml. Signed-off-by: hiromesh <417969567@qq.com> * feat: add Python SDK test script and client implementation - Introduced a new test script (sdktest.sh) for setting up a Python virtual environment and running the Agones SDK client. - Added a comprehensive Python client implementation (testSDKClient.py) for managing player connections, counters, and lists within the Agones game server. Signed-off-by: hiromesh <417969567@qq.com> * fix: prevent multiple annotations in Python SDK game server callback - Updated the game server callback to ensure that the annotation is set only once by introducing a flag. - This change prevents redundant calls to `sdk.set_annotation` during the game server event handling. Signed-off-by: hiromesh <417969567@qq.com> * refactor: update Google APIs directory in Python SDK generation script - Changed the path for the Google APIs proto definitions to use the canonical location from the repo root instead of the Rust SDK vendored version. - This update simplifies the generation process and ensures consistency with the latest proto definitions. Signed-off-by: hiromesh <417969567@qq.com> * fix: update repository URLs in Python SDK configuration - Changed the repository and issues URLs in pyproject.toml to reflect the new Agones organization on GitHub. - This update ensures that users are directed to the correct resources for the Agones project. Signed-off-by: hiromesh <417969567@qq.com> * fix: update dependencies in Python SDK configuration and enhance game server watching - Updated grpcio and protobuf dependencies to specific versions for improved compatibility. - Enhanced the watch_game_server method to include error handling and retry logic, ensuring more robust operation during GameServer updates. Signed-off-by: hiromesh <417969567@qq.com> * fix: improve game server UID handling in Python SDK client - Replaced the single-use flag with a threading event to manage the game server UID retrieval more effectively. - Updated the annotation setting logic to ensure it occurs after the UID is successfully obtained, enhancing the reliability of the operation. Signed-off-by: hiromesh <417969567@qq.com> * fix: enhance game server watching with blocking stream - Introduced a blocking stream for the WatchGameServer method to simulate real-time updates. - This change allows the test to handle game server state changes more effectively, improving the reliability of the test suite. Signed-off-by: hiromesh <417969567@qq.com> * fix: improve health ping handling in AgonesSDK - Refactored the health ping method to run the health stream in a separate thread, allowing for non-blocking operation. - Added error logging to capture any exceptions that occur during the health stream, enhancing the robustness of the health check process. Signed-off-by: hiromesh <417969567@qq.com> * chore: update copyright notices in Python and SCSS files - Changed copyright attribution from "Google LLC" to "Contributors to Agones a Series of LF Projects, LLC" across multiple Python scripts and SCSS files to reflect the correct ownership. Signed-off-by: hiromesh <417969567@qq.com> * docs: update Python SDK guide with publish date and installation instructions - Added a publish date to the Python Game Server Client SDK documentation. - Simplified the installation instructions by removing the code blocks and providing a direct link to install from source on GitHub. Signed-off-by: hiromesh <417969567@qq.com> * feat: add license header to generated Python files - Introduced a license header to all generated Python files in the SDK to ensure proper attribution and compliance with the Apache License, Version 2.0. - Updated the `generate.sh` script to automatically prepend the license header to newly generated files. Signed-off-by: hiromesh <417969567@qq.com> --------- Signed-off-by: hiromesh <417969567@qq.com> Co-authored-by: Mark Mandel <mark@compoundtheory.com> Signed-off-by: Alexander Taran <a.taran@strikerz.inc>
* feat: add initial Python SDK for Agones game server - Introduced core SDK functionality for managing GameServer lifecycle, including methods for connecting, marking readiness, and handling player connections. - Implemented Alpha and Beta features for player tracking and counters/lists management. - Added gRPC code generation script and necessary configuration files. - Included README documentation for installation and usage instructions. - Created .gitignore to exclude unnecessary files from version control. Signed-off-by: hiromesh <417969567@qq.com> * docs: add Python Client SDK documentation and update README - Added Python Client SDK documentation with installation and usage instructions. - Updated README to include a link to the new Python Client SDK. - Enhanced the main SDK documentation index to reference the Python SDK. Signed-off-by: hiromesh <417969567@qq.com> * feat: add Python SDK Dockerfile and scripts - Introduced Dockerfile for building Python SDK images, including installation of Python and necessary packages. - Added code generation script (gen.sh) for setting up a Python virtual environment and installing grpcio-tools. - Included test script (test.sh) for running pytest with required dependencies. - Updated Makefile to support Python SDK commands for generation and conformance testing. Signed-off-by: hiromesh <417969567@qq.com> * refactor: update import statements in Python SDK generation script - Replaced sed commands with a Python script to modify import statements for relative imports in generated gRPC files. - Removed obsolete license classifier from pyproject.toml. Signed-off-by: hiromesh <417969567@qq.com> * feat: add Python SDK test script and client implementation - Introduced a new test script (sdktest.sh) for setting up a Python virtual environment and running the Agones SDK client. - Added a comprehensive Python client implementation (testSDKClient.py) for managing player connections, counters, and lists within the Agones game server. Signed-off-by: hiromesh <417969567@qq.com> * fix: prevent multiple annotations in Python SDK game server callback - Updated the game server callback to ensure that the annotation is set only once by introducing a flag. - This change prevents redundant calls to `sdk.set_annotation` during the game server event handling. Signed-off-by: hiromesh <417969567@qq.com> * refactor: update Google APIs directory in Python SDK generation script - Changed the path for the Google APIs proto definitions to use the canonical location from the repo root instead of the Rust SDK vendored version. - This update simplifies the generation process and ensures consistency with the latest proto definitions. Signed-off-by: hiromesh <417969567@qq.com> * fix: update repository URLs in Python SDK configuration - Changed the repository and issues URLs in pyproject.toml to reflect the new Agones organization on GitHub. - This update ensures that users are directed to the correct resources for the Agones project. Signed-off-by: hiromesh <417969567@qq.com> * fix: update dependencies in Python SDK configuration and enhance game server watching - Updated grpcio and protobuf dependencies to specific versions for improved compatibility. - Enhanced the watch_game_server method to include error handling and retry logic, ensuring more robust operation during GameServer updates. Signed-off-by: hiromesh <417969567@qq.com> * fix: improve game server UID handling in Python SDK client - Replaced the single-use flag with a threading event to manage the game server UID retrieval more effectively. - Updated the annotation setting logic to ensure it occurs after the UID is successfully obtained, enhancing the reliability of the operation. Signed-off-by: hiromesh <417969567@qq.com> * fix: enhance game server watching with blocking stream - Introduced a blocking stream for the WatchGameServer method to simulate real-time updates. - This change allows the test to handle game server state changes more effectively, improving the reliability of the test suite. Signed-off-by: hiromesh <417969567@qq.com> * fix: improve health ping handling in AgonesSDK - Refactored the health ping method to run the health stream in a separate thread, allowing for non-blocking operation. - Added error logging to capture any exceptions that occur during the health stream, enhancing the robustness of the health check process. Signed-off-by: hiromesh <417969567@qq.com> * chore: update copyright notices in Python and SCSS files - Changed copyright attribution from "Google LLC" to "Contributors to Agones a Series of LF Projects, LLC" across multiple Python scripts and SCSS files to reflect the correct ownership. Signed-off-by: hiromesh <417969567@qq.com> * docs: update Python SDK guide with publish date and installation instructions - Added a publish date to the Python Game Server Client SDK documentation. - Simplified the installation instructions by removing the code blocks and providing a direct link to install from source on GitHub. Signed-off-by: hiromesh <417969567@qq.com> * feat: add license header to generated Python files - Introduced a license header to all generated Python files in the SDK to ensure proper attribution and compliance with the Apache License, Version 2.0. - Updated the `generate.sh` script to automatically prepend the license header to newly generated files. Signed-off-by: hiromesh <417969567@qq.com> --------- Signed-off-by: hiromesh <417969567@qq.com> Co-authored-by: Mark Mandel <mark@compoundtheory.com> Signed-off-by: Alexander Taran <a.taran@strikerz.inc>
* feat: add initial Python SDK for Agones game server - Introduced core SDK functionality for managing GameServer lifecycle, including methods for connecting, marking readiness, and handling player connections. - Implemented Alpha and Beta features for player tracking and counters/lists management. - Added gRPC code generation script and necessary configuration files. - Included README documentation for installation and usage instructions. - Created .gitignore to exclude unnecessary files from version control. Signed-off-by: hiromesh <417969567@qq.com> * docs: add Python Client SDK documentation and update README - Added Python Client SDK documentation with installation and usage instructions. - Updated README to include a link to the new Python Client SDK. - Enhanced the main SDK documentation index to reference the Python SDK. Signed-off-by: hiromesh <417969567@qq.com> * feat: add Python SDK Dockerfile and scripts - Introduced Dockerfile for building Python SDK images, including installation of Python and necessary packages. - Added code generation script (gen.sh) for setting up a Python virtual environment and installing grpcio-tools. - Included test script (test.sh) for running pytest with required dependencies. - Updated Makefile to support Python SDK commands for generation and conformance testing. Signed-off-by: hiromesh <417969567@qq.com> * refactor: update import statements in Python SDK generation script - Replaced sed commands with a Python script to modify import statements for relative imports in generated gRPC files. - Removed obsolete license classifier from pyproject.toml. Signed-off-by: hiromesh <417969567@qq.com> * feat: add Python SDK test script and client implementation - Introduced a new test script (sdktest.sh) for setting up a Python virtual environment and running the Agones SDK client. - Added a comprehensive Python client implementation (testSDKClient.py) for managing player connections, counters, and lists within the Agones game server. Signed-off-by: hiromesh <417969567@qq.com> * fix: prevent multiple annotations in Python SDK game server callback - Updated the game server callback to ensure that the annotation is set only once by introducing a flag. - This change prevents redundant calls to `sdk.set_annotation` during the game server event handling. Signed-off-by: hiromesh <417969567@qq.com> * refactor: update Google APIs directory in Python SDK generation script - Changed the path for the Google APIs proto definitions to use the canonical location from the repo root instead of the Rust SDK vendored version. - This update simplifies the generation process and ensures consistency with the latest proto definitions. Signed-off-by: hiromesh <417969567@qq.com> * fix: update repository URLs in Python SDK configuration - Changed the repository and issues URLs in pyproject.toml to reflect the new Agones organization on GitHub. - This update ensures that users are directed to the correct resources for the Agones project. Signed-off-by: hiromesh <417969567@qq.com> * fix: update dependencies in Python SDK configuration and enhance game server watching - Updated grpcio and protobuf dependencies to specific versions for improved compatibility. - Enhanced the watch_game_server method to include error handling and retry logic, ensuring more robust operation during GameServer updates. Signed-off-by: hiromesh <417969567@qq.com> * fix: improve game server UID handling in Python SDK client - Replaced the single-use flag with a threading event to manage the game server UID retrieval more effectively. - Updated the annotation setting logic to ensure it occurs after the UID is successfully obtained, enhancing the reliability of the operation. Signed-off-by: hiromesh <417969567@qq.com> * fix: enhance game server watching with blocking stream - Introduced a blocking stream for the WatchGameServer method to simulate real-time updates. - This change allows the test to handle game server state changes more effectively, improving the reliability of the test suite. Signed-off-by: hiromesh <417969567@qq.com> * fix: improve health ping handling in AgonesSDK - Refactored the health ping method to run the health stream in a separate thread, allowing for non-blocking operation. - Added error logging to capture any exceptions that occur during the health stream, enhancing the robustness of the health check process. Signed-off-by: hiromesh <417969567@qq.com> * chore: update copyright notices in Python and SCSS files - Changed copyright attribution from "Google LLC" to "Contributors to Agones a Series of LF Projects, LLC" across multiple Python scripts and SCSS files to reflect the correct ownership. Signed-off-by: hiromesh <417969567@qq.com> * docs: update Python SDK guide with publish date and installation instructions - Added a publish date to the Python Game Server Client SDK documentation. - Simplified the installation instructions by removing the code blocks and providing a direct link to install from source on GitHub. Signed-off-by: hiromesh <417969567@qq.com> * feat: add license header to generated Python files - Introduced a license header to all generated Python files in the SDK to ensure proper attribution and compliance with the Apache License, Version 2.0. - Updated the `generate.sh` script to automatically prepend the license header to newly generated files. Signed-off-by: hiromesh <417969567@qq.com> --------- Signed-off-by: hiromesh <417969567@qq.com> Co-authored-by: Mark Mandel <mark@compoundtheory.com> Signed-off-by: Alexander Taran <a.taran@strikerz.inc>
* feat: add initial Python SDK for Agones game server - Introduced core SDK functionality for managing GameServer lifecycle, including methods for connecting, marking readiness, and handling player connections. - Implemented Alpha and Beta features for player tracking and counters/lists management. - Added gRPC code generation script and necessary configuration files. - Included README documentation for installation and usage instructions. - Created .gitignore to exclude unnecessary files from version control. Signed-off-by: hiromesh <417969567@qq.com> * docs: add Python Client SDK documentation and update README - Added Python Client SDK documentation with installation and usage instructions. - Updated README to include a link to the new Python Client SDK. - Enhanced the main SDK documentation index to reference the Python SDK. Signed-off-by: hiromesh <417969567@qq.com> * feat: add Python SDK Dockerfile and scripts - Introduced Dockerfile for building Python SDK images, including installation of Python and necessary packages. - Added code generation script (gen.sh) for setting up a Python virtual environment and installing grpcio-tools. - Included test script (test.sh) for running pytest with required dependencies. - Updated Makefile to support Python SDK commands for generation and conformance testing. Signed-off-by: hiromesh <417969567@qq.com> * refactor: update import statements in Python SDK generation script - Replaced sed commands with a Python script to modify import statements for relative imports in generated gRPC files. - Removed obsolete license classifier from pyproject.toml. Signed-off-by: hiromesh <417969567@qq.com> * feat: add Python SDK test script and client implementation - Introduced a new test script (sdktest.sh) for setting up a Python virtual environment and running the Agones SDK client. - Added a comprehensive Python client implementation (testSDKClient.py) for managing player connections, counters, and lists within the Agones game server. Signed-off-by: hiromesh <417969567@qq.com> * fix: prevent multiple annotations in Python SDK game server callback - Updated the game server callback to ensure that the annotation is set only once by introducing a flag. - This change prevents redundant calls to `sdk.set_annotation` during the game server event handling. Signed-off-by: hiromesh <417969567@qq.com> * refactor: update Google APIs directory in Python SDK generation script - Changed the path for the Google APIs proto definitions to use the canonical location from the repo root instead of the Rust SDK vendored version. - This update simplifies the generation process and ensures consistency with the latest proto definitions. Signed-off-by: hiromesh <417969567@qq.com> * fix: update repository URLs in Python SDK configuration - Changed the repository and issues URLs in pyproject.toml to reflect the new Agones organization on GitHub. - This update ensures that users are directed to the correct resources for the Agones project. Signed-off-by: hiromesh <417969567@qq.com> * fix: update dependencies in Python SDK configuration and enhance game server watching - Updated grpcio and protobuf dependencies to specific versions for improved compatibility. - Enhanced the watch_game_server method to include error handling and retry logic, ensuring more robust operation during GameServer updates. Signed-off-by: hiromesh <417969567@qq.com> * fix: improve game server UID handling in Python SDK client - Replaced the single-use flag with a threading event to manage the game server UID retrieval more effectively. - Updated the annotation setting logic to ensure it occurs after the UID is successfully obtained, enhancing the reliability of the operation. Signed-off-by: hiromesh <417969567@qq.com> * fix: enhance game server watching with blocking stream - Introduced a blocking stream for the WatchGameServer method to simulate real-time updates. - This change allows the test to handle game server state changes more effectively, improving the reliability of the test suite. Signed-off-by: hiromesh <417969567@qq.com> * fix: improve health ping handling in AgonesSDK - Refactored the health ping method to run the health stream in a separate thread, allowing for non-blocking operation. - Added error logging to capture any exceptions that occur during the health stream, enhancing the robustness of the health check process. Signed-off-by: hiromesh <417969567@qq.com> * chore: update copyright notices in Python and SCSS files - Changed copyright attribution from "Google LLC" to "Contributors to Agones a Series of LF Projects, LLC" across multiple Python scripts and SCSS files to reflect the correct ownership. Signed-off-by: hiromesh <417969567@qq.com> * docs: update Python SDK guide with publish date and installation instructions - Added a publish date to the Python Game Server Client SDK documentation. - Simplified the installation instructions by removing the code blocks and providing a direct link to install from source on GitHub. Signed-off-by: hiromesh <417969567@qq.com> * feat: add license header to generated Python files - Introduced a license header to all generated Python files in the SDK to ensure proper attribution and compliance with the Apache License, Version 2.0. - Updated the `generate.sh` script to automatically prepend the license header to newly generated files. Signed-off-by: hiromesh <417969567@qq.com> --------- Signed-off-by: hiromesh <417969567@qq.com> Co-authored-by: Mark Mandel <mark@compoundtheory.com>
What type of PR is this?
/kind feature
What this PR does / Why we need it:
Adds a Python SDK for the Agones game server platform, providing a gRPC client for communicating with the Agones sidecar.
The SDK follows the same architecture and API patterns as the existing Go, Rust, and Node.js SDKs:
Commits:
feat: add initial Python SDK for Agones game serveragones/sdk.py,agones/alpha.py,agones/beta.py— SDK implementationagones/_generated/— generated gRPC/protobuf codegenerate.sh— proto code generation script (strips HTTP/swagger annotations)pyproject.toml— package configurationtests/test_sdk.py,tests/test_alpha.py,tests/test_beta.py— 37 unit testsdocs: add Python Client SDK documentation and update READMEsite/content/en/docs/Guides/Client SDKs/python.md— full SDK documentation pagesite/content/en/docs/Guides/Client SDKs/_index.md— added Python to SDK indexsdks/README.md— added Python entrysdks/python/README.md— simplified to point to site docsfeat: add Python SDK Dockerfile and scriptsbuild/build-sdk-images/python/Dockerfile— Docker build imagebuild/build-sdk-images/python/gen.sh— code generation entrypointbuild/build-sdk-images/python/test.sh— test runner entrypointbuild/includes/sdk.mk— added Python targets and conformance testbuild/scripts/sdk-update-version/main.go— addedpyproject.tomlto version update listTesting:
All tests use
unittest.mock.MagicMockto mock gRPC stubs (same approach as Go'ssdkMockand Node.js'sspyOn).Which issue(s) this PR fixes:
None — new feature.
Special notes for your reviewer:
agones/_generated/) is checked in, same approach as the Node.js SDKgenerate.shstrips HTTP/swagger annotations from proto files before compilation to avoid unnecessary runtime dependencies