You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beam.apache.org by vt...@apache.org on 2026/04/22 15:36:44 UTC
(beam) branch fix-precommit-python-apr-22 created (now 142949910d3)
This is an automated email from the ASF dual-hosted git repository.
Amar3tto pushed a change to branch fix-precommit-python-apr-22
in repository https://gitbox.apache.org/repos/asf/beam.git
at 142949910d3 Test
This branch includes the following new commits:
new 142949910d3 Test
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
(beam) 01/01: Test
Posted by vt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
Amar3tto pushed a commit to branch fix-precommit-python-apr-22
in repository https://gitbox.apache.org/repos/asf/beam.git
commit 142949910d319ff7f592d7dafa3388d07d653475
Author: Vitaly Terentyev <vi...@akvelon.com>
AuthorDate: Wed Apr 22 19:36:29 2026 +0400
Test
---
sdks/python/apache_beam/yaml/yaml_provider.py | 19 +++++++++++--------
.../apache_beam/yaml/yaml_provider_unit_test.py | 7 +++++++
2 files changed, 18 insertions(+), 8 deletions(-)
diff --git a/sdks/python/apache_beam/yaml/yaml_provider.py b/sdks/python/apache_beam/yaml/yaml_provider.py
index 093e68cb9c7..354772c2165 100755
--- a/sdks/python/apache_beam/yaml/yaml_provider.py
+++ b/sdks/python/apache_beam/yaml/yaml_provider.py
@@ -32,6 +32,7 @@ import shutil
import subprocess
import sys
import tempfile
+import time
import urllib.parse
import warnings
from collections.abc import Callable
@@ -1387,7 +1388,15 @@ class PypiExpansionService:
# Avoid hard dependency for environments where this is never used.
import clonevirtualenv
clonable_venv = cls._create_venv_to_clone(base_python)
- clonevirtualenv.clone_virtualenv(clonable_venv, venv)
+ for attempt in range(3):
+ try:
+ clonevirtualenv.clone_virtualenv(clonable_venv, venv)
+ break
+ except shutil.Error:
+ if attempt == 2:
+ raise
+ shutil.rmtree(venv, ignore_errors=True)
+ time.sleep(1)
venv_pip = os.path.join(venv, 'bin', 'pip')
# Issue warning when installing packages from PyPI
_LOGGER.warning(
@@ -1412,13 +1421,7 @@ class PypiExpansionService:
@classmethod
def _create_venv_to_clone(cls, base_python: str) -> str:
- # For '.dev', the default clone source is the venv that owns base_python.
- # In CI that is often the active tox/sandbox tree; clonevirtualenv can
- # race with ephemeral paths (tmp/, caches) under that tree. Use the
- # scratch clonable venv in CI instead. Locally, keep cloning the dev venv
- # for speed.
- _ci = os.environ.get('CI', '').lower() in ('true', '1', 'yes')
- if '.dev' in beam_version and not _ci:
+ if '.dev' in beam_version:
base_venv = os.path.dirname(os.path.dirname(base_python))
print('Cloning dev environment from', base_venv)
return base_venv
diff --git a/sdks/python/apache_beam/yaml/yaml_provider_unit_test.py b/sdks/python/apache_beam/yaml/yaml_provider_unit_test.py
index e1e3ee847d9..21c54c353bf 100644
--- a/sdks/python/apache_beam/yaml/yaml_provider_unit_test.py
+++ b/sdks/python/apache_beam/yaml/yaml_provider_unit_test.py
@@ -295,6 +295,13 @@ class PythonProviderDepsTest(unittest.TestCase):
after = yaml_provider.PypiExpansionService._key('base', [pkg])
self.assertNotEqual(before, after)
+ @mock.patch('apache_beam.yaml.yaml_provider.beam_version', '2.99.0.dev')
+ def test_create_venv_to_clone_uses_dev_venv(self):
+ base_python = os.path.join('/tmp', 'venv', 'bin', 'python')
+ self.assertEqual(
+ yaml_provider.PypiExpansionService._create_venv_to_clone(base_python),
+ os.path.join('/tmp', 'venv'))
+
class JoinUrlOrFilepathTest(unittest.TestCase):
def test_join_url_relative_path(self):