You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beam.apache.org by tv...@apache.org on 2024/05/06 19:14:06 UTC
(beam) 01/01: Move lint, yapf and dependency compat tests to from py38 to py39
This is an automated email from the ASF dual-hosted git repository.
tvalentyn pushed a commit to branch tvalentyn-gha-py39
in repository https://gitbox.apache.org/repos/asf/beam.git
commit 550b5d7a172b20d3d791100e22a5a71ae52f03d5
Author: Valentyn Tymofieiev <va...@google.com>
AuthorDate: Mon May 6 11:26:55 2024 -0700
Move lint, yapf and dependency compat tests to from py38 to py39
---
.../beam_PostCommit_Python_Dependency.yml | 4 +-
.../workflows/beam_PreCommit_PythonFormatter.yml | 2 +-
.github/workflows/beam_PreCommit_PythonLint.yml | 2 +-
.../workflows/beam_PreCommit_Python_Coverage.yml | 4 +-
.github/workflows/beam_PreCommit_Whitespace.yml | 2 +-
build.gradle.kts | 14 +-
sdks/python/test-suites/tox/py38/build.gradle | 184 ---------------------
sdks/python/test-suites/tox/py39/build.gradle | 182 ++++++++++++++++++++
8 files changed, 196 insertions(+), 198 deletions(-)
diff --git a/.github/workflows/beam_PostCommit_Python_Dependency.yml b/.github/workflows/beam_PostCommit_Python_Dependency.yml
index 51a3a572234..12f353c4152 100644
--- a/.github/workflows/beam_PostCommit_Python_Dependency.yml
+++ b/.github/workflows/beam_PostCommit_Python_Dependency.yml
@@ -77,11 +77,11 @@ jobs:
uses: ./.github/actions/setup-environment-action
with:
java-version: 8
- python-version: 3.8
+ python-version: 3.9
- name: Run postCommitPyDep
uses: ./.github/actions/gradle-command-self-hosted-action
with:
- gradle-command: :sdks:python:test-suites:tox:py38:postCommitPyDep
+ gradle-command: :sdks:python:test-suites:tox:py39:postCommitPyDep
- name: Archive Python Test Results
uses: actions/upload-artifact@v4
if: failure()
diff --git a/.github/workflows/beam_PreCommit_PythonFormatter.yml b/.github/workflows/beam_PreCommit_PythonFormatter.yml
index 8eaf99ba83a..79d30b04ba0 100644
--- a/.github/workflows/beam_PreCommit_PythonFormatter.yml
+++ b/.github/workflows/beam_PreCommit_PythonFormatter.yml
@@ -81,7 +81,7 @@ jobs:
uses: ./.github/actions/setup-environment-action
with:
java-version: 8
- python-version: 3.8
+ python-version: 3.9
- name: run pythonFormatterPreCommit script
uses: ./.github/actions/gradle-command-self-hosted-action
with:
diff --git a/.github/workflows/beam_PreCommit_PythonLint.yml b/.github/workflows/beam_PreCommit_PythonLint.yml
index 2cc469170d5..b69adfdea4c 100644
--- a/.github/workflows/beam_PreCommit_PythonLint.yml
+++ b/.github/workflows/beam_PreCommit_PythonLint.yml
@@ -81,7 +81,7 @@ jobs:
uses: ./.github/actions/setup-environment-action
with:
java-version: 8
- python-version: 3.8
+ python-version: 3.9
go-version: 1.16
- name: run pythonLintPreCommit script
uses: ./.github/actions/gradle-command-self-hosted-action
diff --git a/.github/workflows/beam_PreCommit_Python_Coverage.yml b/.github/workflows/beam_PreCommit_Python_Coverage.yml
index 9d836ef6332..c71edef8acf 100644
--- a/.github/workflows/beam_PreCommit_Python_Coverage.yml
+++ b/.github/workflows/beam_PreCommit_Python_Coverage.yml
@@ -83,11 +83,11 @@ jobs:
uses: ./.github/actions/setup-environment-action
with:
java-version: 8
- python-version: 3.8
+ python-version: 3.9
- name: Run preCommitPyCoverage
uses: ./.github/actions/gradle-command-self-hosted-action
with:
- gradle-command: :sdks:python:test-suites:tox:py38:preCommitPyCoverage
+ gradle-command: :sdks:python:test-suites:tox:py39:preCommitPyCoverage
- uses: codecov/codecov-action@v3
with:
flags: python
diff --git a/.github/workflows/beam_PreCommit_Whitespace.yml b/.github/workflows/beam_PreCommit_Whitespace.yml
index 4eba39f0824..f0b37e9fbd7 100644
--- a/.github/workflows/beam_PreCommit_Whitespace.yml
+++ b/.github/workflows/beam_PreCommit_Whitespace.yml
@@ -81,7 +81,7 @@ jobs:
uses: ./.github/actions/setup-environment-action
with:
java-version: 8
- python-version: 3.8
+ python-version: 3.9
- name: run whitespacePreCommit script
uses: ./.github/actions/gradle-command-self-hosted-action
with:
diff --git a/build.gradle.kts b/build.gradle.kts
index 0fd98ad3b05..8780131f62b 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -492,11 +492,11 @@ tasks.register("pythonDockerBuildPreCommit") {
tasks.register("pythonLintPreCommit") {
// TODO(https://github.com/apache/beam/issues/20209): Find a better way to specify lint and formatter tasks without hardcoding py version.
- dependsOn(":sdks:python:test-suites:tox:py38:lint")
+ dependsOn(":sdks:python:test-suites:tox:py39:lint")
}
tasks.register("pythonFormatterPreCommit") {
- dependsOn("sdks:python:test-suites:tox:py38:formatter")
+ dependsOn("sdks:python:test-suites:tox:py39:formatter")
}
tasks.register("python38PostCommit") {
@@ -566,15 +566,15 @@ tasks.register("javaExamplesDataflowPrecommit") {
tasks.register("whitespacePreCommit") {
// TODO(https://github.com/apache/beam/issues/20209): Find a better way to specify the tasks without hardcoding py version.
- dependsOn(":sdks:python:test-suites:tox:py38:archiveFilesToLint")
- dependsOn(":sdks:python:test-suites:tox:py38:unpackFilesToLint")
- dependsOn(":sdks:python:test-suites:tox:py38:whitespacelint")
+ dependsOn(":sdks:python:test-suites:tox:py39:archiveFilesToLint")
+ dependsOn(":sdks:python:test-suites:tox:py39:unpackFilesToLint")
+ dependsOn(":sdks:python:test-suites:tox:py39:whitespacelint")
}
tasks.register("typescriptPreCommit") {
// TODO(https://github.com/apache/beam/issues/20209): Find a better way to specify the tasks without hardcoding py version.
- dependsOn(":sdks:python:test-suites:tox:py38:eslint")
- dependsOn(":sdks:python:test-suites:tox:py38:jest")
+ dependsOn(":sdks:python:test-suites:tox:py39:eslint")
+ dependsOn(":sdks:python:test-suites:tox:py39:jest")
}
tasks.register("pushAllRunnersDockerImages") {
diff --git a/sdks/python/test-suites/tox/py38/build.gradle b/sdks/python/test-suites/tox/py38/build.gradle
index 46388532c1e..81083b6c441 100644
--- a/sdks/python/test-suites/tox/py38/build.gradle
+++ b/sdks/python/test-suites/tox/py38/build.gradle
@@ -26,188 +26,4 @@ applyPythonNature()
// Required to setup a Python 3 virtualenv and task names.
pythonVersion = '3.8'
-toxTask "formatter", "py3-yapf-check"
-check.dependsOn formatter
-
-// TODO(BEAM-12000): Move tasks that aren't specific to 3.8 to Py 3.9.
-def posargs = project.findProperty("posargs") ?: ""
-
-task lint {}
-check.dependsOn lint
-
-toxTask "lintPy38", "py38-lint", "${posargs}"
-lint.dependsOn lintPy38
-
-toxTask "mypyPy38", "py38-mypy", "${posargs}"
-lint.dependsOn mypyPy38
-
apply from: "../common.gradle"
-
-
-toxTask "testPy38CloudCoverage", "py38-cloudcoverage", "${posargs}"
-test.dependsOn "testPy38CloudCoverage"
-project.tasks.register("preCommitPyCoverage") {
- dependsOn = ["testPy38CloudCoverage"]
-}
-
-// Dep Postcommit runs test suites that evaluate compatibility of particular
-// dependencies. It is exercised on a single Python version.
-//
-// Should still leave at least one version in PreCommit unless the marked tests
-// are also exercised by existing PreCommit
-// e.g. pyarrow and pandas also run on PreCommit Dataframe and Coverage
-project.tasks.register("postCommitPyDep") {}
-
-// Create a test task for each supported major version of pyarrow
-toxTask "testPy38pyarrow-3", "py38-pyarrow-3", "${posargs}"
-test.dependsOn "testPy38pyarrow-3"
-postCommitPyDep.dependsOn "testPy38pyarrow-3"
-
-toxTask "testPy38pyarrow-4", "py38-pyarrow-4", "${posargs}"
-test.dependsOn "testPy38pyarrow-4"
-postCommitPyDep.dependsOn "testPy38pyarrow-4"
-
-toxTask "testPy38pyarrow-5", "py38-pyarrow-5", "${posargs}"
-test.dependsOn "testPy38pyarrow-5"
-postCommitPyDep.dependsOn "testPy38pyarrow-5"
-
-toxTask "testPy38pyarrow-6", "py38-pyarrow-6", "${posargs}"
-test.dependsOn "testPy38pyarrow-6"
-postCommitPyDep.dependsOn "testPy38pyarrow-6"
-
-toxTask "testPy38pyarrow-7", "py38-pyarrow-7", "${posargs}"
-test.dependsOn "testPy38pyarrow-7"
-postCommitPyDep.dependsOn "testPy38pyarrow-7"
-
-toxTask "testPy38pyarrow-8", "py38-pyarrow-8", "${posargs}"
-test.dependsOn "testPy38pyarrow-8"
-postCommitPyDep.dependsOn "testPy38pyarrow-8"
-
-toxTask "testPy38pyarrow-9", "py38-pyarrow-9", "${posargs}"
-test.dependsOn "testPy38pyarrow-9"
-postCommitPyDep.dependsOn "testPy38pyarrow-9"
-
-// Create a test task for each minor version of pandas
-toxTask "testPy38pandas-14", "py38-pandas-14", "${posargs}"
-test.dependsOn "testPy38pandas-14"
-postCommitPyDep.dependsOn "testPy38pandas-14"
-
-toxTask "testPy38pandas-15", "py38-pandas-15", "${posargs}"
-test.dependsOn "testPy38pandas-15"
-postCommitPyDep.dependsOn "testPy38pandas-15"
-
-toxTask "testPy38pandas-20", "py38-pandas-20", "${posargs}"
-test.dependsOn "testPy38pandas-20"
-postCommitPyDep.dependsOn "testPy38pandas-20"
-
-// Create a test task for each minor version of pytorch
-toxTask "testPy38pytorch-19", "py38-pytorch-19", "${posargs}"
-test.dependsOn "testPy38pytorch-19"
-postCommitPyDep.dependsOn "testPy38pytorch-19"
-
-toxTask "testPy38pytorch-110", "py38-pytorch-110", "${posargs}"
-test.dependsOn "testPy38pytorch-110"
-postCommitPyDep.dependsOn "testPy38pytorch-110"
-
-toxTask "testPy38pytorch-111", "py38-pytorch-111", "${posargs}"
-test.dependsOn "testPy38pytorch-111"
-postCommitPyDep.dependsOn "testPy38pytorch-111"
-
-toxTask "testPy38pytorch-112", "py38-pytorch-112", "${posargs}"
-test.dependsOn "testPy38pytorch-112"
-postCommitPyDep.dependsOn "testPy38pytorch-112"
-
-toxTask "testPy38pytorch-113", "py38-pytorch-113", "${posargs}"
-test.dependsOn "testPy38pytorch-113"
-postCommitPyDep.dependsOn "testPy38pytorch-113"
-
-// run on precommit
-toxTask "testPy38pytorch-200", "py38-pytorch-200", "${posargs}"
-test.dependsOn "testPy38pytorch-200"
-preCommitPyCoverage.dependsOn "testPy38pytorch-200"
-
-toxTask "testPy38tft-113", "py38-tft-113", "${posargs}"
-test.dependsOn "testPy38tft-113"
-preCommitPyCoverage.dependsOn "testPy38tft-113"
-
-// TODO(https://github.com/apache/beam/issues/25796) - uncomment onnx tox task once onnx supports protobuf 4.x.x
-// Create a test task for each minor version of onnx
-// toxTask "testPy38onnx-113", "py38-onnx-113", "${posargs}"
-// test.dependsOn "testPy38onnx-113"
-// postCommitPyDep.dependsOn "testPy38onnx-113"
-// Create a test task for each minor version of tensorflow
-toxTask "testPy38tensorflow-212", "py38-tensorflow-212", "${posargs}"
-test.dependsOn "testPy38tensorflow-212"
-preCommitPyCoverage.dependsOn "testPy38tensorflow-212"
-
-// Create a test task for each minor version of transformers
-toxTask "testPy38transformers-428", "py38-transformers-428", "${posargs}"
-test.dependsOn "testPy38transformers-428"
-postCommitPyDep.dependsOn "testPy38transformers-428"
-
-toxTask "testPy38transformers-429", "py38-transformers-429", "${posargs}"
-test.dependsOn "testPy38transformers-429"
-postCommitPyDep.dependsOn "testPy38transformers-429"
-
-// run on precommit
-toxTask "testPy38transformers-430", "py38-transformers-430", "${posargs}"
-test.dependsOn "testPy38transformers-430"
-preCommitPyCoverage.dependsOn "testPy38transformers-430"
-
-toxTask "testPy38embeddingsMLTransform", "py38-embeddings", "${posargs}"
-test.dependsOn "testPy38embeddingsMLTransform"
-preCommitPyCoverage.dependsOn "testPy38embeddingsMLTransform"
-
-// Part of MLTransform embeddings test suite but requires tensorflow hub, which we need to test on
-// mutliple versions so keeping this suite separate.
-toxTask "testPy38TensorflowHubEmbeddings-014", "py38-TFHubEmbeddings-014", "${posargs}"
-test.dependsOn "testPy38TensorflowHubEmbeddings-014"
-postCommitPyDep.dependsOn "testPy38TensorflowHubEmbeddings-014"
-
-// run on precommit
-toxTask "testPy38TensorflowHubEmbeddings-015", "py38-TFHubEmbeddings-015", "${posargs}"
-test.dependsOn "testPy38TensorflowHubEmbeddings-015"
-preCommitPyCoverage.dependsOn "testPy38TensorflowHubEmbeddings-015"
-
-toxTask "whitespacelint", "whitespacelint", "${posargs}"
-
-task archiveFilesToLint(type: Zip) {
- archiveFileName = "files-to-whitespacelint.zip"
- destinationDirectory = file("$buildDir/dist")
-
- from ("$rootProject.projectDir") {
- include "**/*.md"
- include "**/build.gradle"
- include '**/build.gradle.kts'
- exclude '**/build/**' // intermediate build directory
- exclude 'website/www/site/themes/docsy/**' // fork to google/docsy
- exclude "**/node_modules/*"
- exclude "**/.gogradle/*"
- }
-}
-
-task unpackFilesToLint(type: Copy) {
- from zipTree("$buildDir/dist/files-to-whitespacelint.zip")
- into "$buildDir/files-to-whitespacelint"
-}
-
-whitespacelint.dependsOn archiveFilesToLint, unpackFilesToLint
-unpackFilesToLint.dependsOn archiveFilesToLint
-archiveFilesToLint.dependsOn cleanPython
-
-toxTask "jest", "jest", "${posargs}"
-
-toxTask "eslint", "eslint", "${posargs}"
-
-task copyTsSource(type: Copy) {
- from ("$rootProject.projectDir") {
- include "sdks/python/apache_beam/runners/interactive/extensions/**/*"
- exclude "sdks/python/apache_beam/runners/interactive/extensions/**/lib/*"
- exclude "sdks/python/apache_beam/runners/interactive/extensions/**/node_modules/*"
- }
- into "$buildDir/ts"
-}
-
-jest.dependsOn copyTsSource
-eslint.dependsOn copyTsSource
-copyTsSource.dependsOn cleanPython
diff --git a/sdks/python/test-suites/tox/py39/build.gradle b/sdks/python/test-suites/tox/py39/build.gradle
index 5bb73b60a5d..00b7702c0e9 100644
--- a/sdks/python/test-suites/tox/py39/build.gradle
+++ b/sdks/python/test-suites/tox/py39/build.gradle
@@ -27,3 +27,185 @@ applyPythonNature()
pythonVersion = '3.9'
apply from: "../common.gradle"
+
+toxTask "formatter", "py3-yapf-check"
+check.dependsOn formatter
+
+def posargs = project.findProperty("posargs") ?: ""
+
+task lint {}
+check.dependsOn lint
+
+toxTask "lintPy39", "py39-lint", "${posargs}"
+lint.dependsOn lintPy39
+
+toxTask "mypyPy39", "py39-mypy", "${posargs}"
+lint.dependsOn mypyPy39
+
+toxTask "testPy39CloudCoverage", "py39-cloudcoverage", "${posargs}"
+test.dependsOn "testPy39CloudCoverage"
+project.tasks.register("preCommitPyCoverage") {
+ dependsOn = ["testPy39CloudCoverage"]
+}
+
+// Dep Postcommit runs test suites that evaluate compatibility of particular
+// dependencies. It is exercised on a single Python version.
+//
+// Should still leave at least one version in PreCommit unless the marked tests
+// are also exercised by existing PreCommit
+// e.g. pyarrow and pandas also run on PreCommit Dataframe and Coverage
+project.tasks.register("postCommitPyDep") {}
+
+// Create a test task for each supported major version of pyarrow
+toxTask "testPy39pyarrow-3", "py39-pyarrow-3", "${posargs}"
+test.dependsOn "testPy39pyarrow-3"
+postCommitPyDep.dependsOn "testPy39pyarrow-3"
+
+toxTask "testPy39pyarrow-4", "py39-pyarrow-4", "${posargs}"
+test.dependsOn "testPy39pyarrow-4"
+postCommitPyDep.dependsOn "testPy39pyarrow-4"
+
+toxTask "testPy39pyarrow-5", "py39-pyarrow-5", "${posargs}"
+test.dependsOn "testPy39pyarrow-5"
+postCommitPyDep.dependsOn "testPy39pyarrow-5"
+
+toxTask "testPy39pyarrow-6", "py39-pyarrow-6", "${posargs}"
+test.dependsOn "testPy39pyarrow-6"
+postCommitPyDep.dependsOn "testPy39pyarrow-6"
+
+toxTask "testPy39pyarrow-7", "py39-pyarrow-7", "${posargs}"
+test.dependsOn "testPy39pyarrow-7"
+postCommitPyDep.dependsOn "testPy39pyarrow-7"
+
+toxTask "testPy39pyarrow-8", "py39-pyarrow-8", "${posargs}"
+test.dependsOn "testPy39pyarrow-8"
+postCommitPyDep.dependsOn "testPy39pyarrow-8"
+
+toxTask "testPy39pyarrow-9", "py39-pyarrow-9", "${posargs}"
+test.dependsOn "testPy39pyarrow-9"
+postCommitPyDep.dependsOn "testPy39pyarrow-9"
+
+// Create a test task for each minor version of pandas
+toxTask "testPy39pandas-14", "py39-pandas-14", "${posargs}"
+test.dependsOn "testPy39pandas-14"
+postCommitPyDep.dependsOn "testPy39pandas-14"
+
+toxTask "testPy39pandas-15", "py39-pandas-15", "${posargs}"
+test.dependsOn "testPy39pandas-15"
+postCommitPyDep.dependsOn "testPy39pandas-15"
+
+toxTask "testPy39pandas-20", "py39-pandas-20", "${posargs}"
+test.dependsOn "testPy39pandas-20"
+postCommitPyDep.dependsOn "testPy39pandas-20"
+
+// Create a test task for each minor version of pytorch
+toxTask "testPy39pytorch-19", "py39-pytorch-19", "${posargs}"
+test.dependsOn "testPy39pytorch-19"
+postCommitPyDep.dependsOn "testPy39pytorch-19"
+
+toxTask "testPy39pytorch-110", "py39-pytorch-110", "${posargs}"
+test.dependsOn "testPy39pytorch-110"
+postCommitPyDep.dependsOn "testPy39pytorch-110"
+
+toxTask "testPy39pytorch-111", "py39-pytorch-111", "${posargs}"
+test.dependsOn "testPy39pytorch-111"
+postCommitPyDep.dependsOn "testPy39pytorch-111"
+
+toxTask "testPy39pytorch-112", "py39-pytorch-112", "${posargs}"
+test.dependsOn "testPy39pytorch-112"
+postCommitPyDep.dependsOn "testPy39pytorch-112"
+
+toxTask "testPy39pytorch-113", "py39-pytorch-113", "${posargs}"
+test.dependsOn "testPy39pytorch-113"
+postCommitPyDep.dependsOn "testPy39pytorch-113"
+
+// run on precommit
+toxTask "testPy39pytorch-200", "py39-pytorch-200", "${posargs}"
+test.dependsOn "testPy39pytorch-200"
+preCommitPyCoverage.dependsOn "testPy39pytorch-200"
+
+toxTask "testPy39tft-113", "py39-tft-113", "${posargs}"
+test.dependsOn "testPy39tft-113"
+preCommitPyCoverage.dependsOn "testPy39tft-113"
+
+// TODO(https://github.com/apache/beam/issues/25796) - uncomment onnx tox task once onnx supports protobuf 4.x.x
+// Create a test task for each minor version of onnx
+// toxTask "testPy39onnx-113", "py39-onnx-113", "${posargs}"
+// test.dependsOn "testPy39onnx-113"
+// postCommitPyDep.dependsOn "testPy39onnx-113"
+// Create a test task for each minor version of tensorflow
+toxTask "testPy39tensorflow-212", "py39-tensorflow-212", "${posargs}"
+test.dependsOn "testPy39tensorflow-212"
+preCommitPyCoverage.dependsOn "testPy39tensorflow-212"
+
+// Create a test task for each minor version of transformers
+toxTask "testPy39transformers-428", "py39-transformers-428", "${posargs}"
+test.dependsOn "testPy39transformers-428"
+postCommitPyDep.dependsOn "testPy39transformers-428"
+
+toxTask "testPy39transformers-429", "py39-transformers-429", "${posargs}"
+test.dependsOn "testPy39transformers-429"
+postCommitPyDep.dependsOn "testPy39transformers-429"
+
+// run on precommit
+toxTask "testPy39transformers-430", "py39-transformers-430", "${posargs}"
+test.dependsOn "testPy39transformers-430"
+preCommitPyCoverage.dependsOn "testPy39transformers-430"
+
+toxTask "testPy39embeddingsMLTransform", "py39-embeddings", "${posargs}"
+test.dependsOn "testPy39embeddingsMLTransform"
+preCommitPyCoverage.dependsOn "testPy39embeddingsMLTransform"
+
+// Part of MLTransform embeddings test suite but requires tensorflow hub, which we need to test on
+// mutliple versions so keeping this suite separate.
+toxTask "testPy39TensorflowHubEmbeddings-014", "py39-TFHubEmbeddings-014", "${posargs}"
+test.dependsOn "testPy39TensorflowHubEmbeddings-014"
+postCommitPyDep.dependsOn "testPy39TensorflowHubEmbeddings-014"
+
+// run on precommit
+toxTask "testPy39TensorflowHubEmbeddings-015", "py39-TFHubEmbeddings-015", "${posargs}"
+test.dependsOn "testPy39TensorflowHubEmbeddings-015"
+preCommitPyCoverage.dependsOn "testPy39TensorflowHubEmbeddings-015"
+
+toxTask "whitespacelint", "whitespacelint", "${posargs}"
+
+task archiveFilesToLint(type: Zip) {
+ archiveFileName = "files-to-whitespacelint.zip"
+ destinationDirectory = file("$buildDir/dist")
+
+ from ("$rootProject.projectDir") {
+ include "**/*.md"
+ include "**/build.gradle"
+ include '**/build.gradle.kts'
+ exclude '**/build/**' // intermediate build directory
+ exclude 'website/www/site/themes/docsy/**' // fork to google/docsy
+ exclude "**/node_modules/*"
+ exclude "**/.gogradle/*"
+ }
+}
+
+task unpackFilesToLint(type: Copy) {
+ from zipTree("$buildDir/dist/files-to-whitespacelint.zip")
+ into "$buildDir/files-to-whitespacelint"
+}
+
+whitespacelint.dependsOn archiveFilesToLint, unpackFilesToLint
+unpackFilesToLint.dependsOn archiveFilesToLint
+archiveFilesToLint.dependsOn cleanPython
+
+toxTask "jest", "jest", "${posargs}"
+
+toxTask "eslint", "eslint", "${posargs}"
+
+task copyTsSource(type: Copy) {
+ from ("$rootProject.projectDir") {
+ include "sdks/python/apache_beam/runners/interactive/extensions/**/*"
+ exclude "sdks/python/apache_beam/runners/interactive/extensions/**/lib/*"
+ exclude "sdks/python/apache_beam/runners/interactive/extensions/**/node_modules/*"
+ }
+ into "$buildDir/ts"
+}
+
+jest.dependsOn copyTsSource
+eslint.dependsOn copyTsSource
+copyTsSource.dependsOn cleanPython