This is an automated email from the ASF dual-hosted git repository.

xtsong pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/flink-agents.git

commit e3c0da3fb7e7fe5df0a064ac736c4bb208c62cde
Author: WenjinXie <[email protected]>
AuthorDate: Tue Sep 23 16:39:32 2025 +0800

    [package] Support package flink-agents-dist jar in python wheel.
---
 README.md             | 12 ++++++++++++
 python/pyproject.toml |  9 +++++++++
 tools/build.sh        | 36 ++++++++++++++++++++++++++++++++++--
 3 files changed, 55 insertions(+), 2 deletions(-)

diff --git a/README.md b/README.md
index b9b0f5c..03e9750 100644
--- a/README.md
+++ b/README.md
@@ -63,6 +63,18 @@ python -m build
 python -m pip install dist/*.whl
 ```
 
+### Build Python with Flink-Agents jars
+
+This will also package flink-agents jars in wheel, which
+is necessary when run agent as pyflink job.
+
+```shell
+# Build java and python
+bash -x tools/build.sh
+
+# Skip building java (must be built already)
+bash -x tools/build.sh -p
+```
 
 ## How to Contribute
 
diff --git a/python/pyproject.toml b/python/pyproject.toml
index fff11f5..e7f79c1 100644
--- a/python/pyproject.toml
+++ b/python/pyproject.toml
@@ -56,6 +56,15 @@ dependencies = [
     "chromadb==1.0.21",
 ]
 
+[tool.setuptools]
+include-package-data = true
+
+[tool.setuptools.packages.find]
+where = [""]
+
+[tool.setuptools.package-data]
+"flink_agents.lib" = ["*.jar"]
+
 # Optional dependencies (dependency groups)
 [project.optional-dependencies]
 # Development dependencies - includes all tools needed for development
diff --git a/tools/build.sh b/tools/build.sh
index dfe00be..ab35cad 100644
--- a/tools/build.sh
+++ b/tools/build.sh
@@ -15,11 +15,43 @@
 #  limitations under the License.
 #
 
+# Parse command-line arguments
+build_java=true
+while [[ "$#" -gt 0 ]]; do
+    case $1 in
+        -p|--python)
+            build_java=false
+            ;;
+        *)
+            echo "Error: Unknown option '$1'" >&2
+            show_help
+            exit 1
+            ;;
+    esac
+    shift
+done
+
+CURR_DIR=`pwd`
+BASE_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
+PROJECT_ROOT="${BASE_DIR}/../"
+
 # build java
-mvn clean package -DskipTests
+if $build_java; then
+    mvn clean package -DskipTests
+fi
+
+# copy flink-agents-dist jar to python lib
+PYTHON_LIB_DIR=${PROJECT_ROOT}/python/flink_agents/lib
+rm -rf ${PYTHON_LIB_DIR}
+mkdir -p ${PYTHON_LIB_DIR}
+
+PROJECT_VERSION=$(sed -n 's/.*<version>\(.*\)<\/version>.*/\1/p' pom.xml | 
head -n 2 | tail -n 1)
+cp "${PROJECT_ROOT}/dist/target/flink-agents-dist-${PROJECT_VERSION}.jar" 
${PYTHON_LIB_DIR}
 
 # build python
 cd python
 uv sync --extra dev
 uv run python -m build
-uv pip install dist/*.whl
\ No newline at end of file
+uv pip install dist/*.whl
+
+rm -rf ${PYTHON_LIB_DIR}
\ No newline at end of file

Reply via email to