[arvados] updated: 2.7.0-6208-g33b86b169d

git repository hosting git at public.arvados.org
Sun Mar 17 18:09:31 UTC 2024


Summary of changes:
 sdk/cwl/arvados_version.py                  | 15 ++++++++++++++-
 sdk/python/arvados_version.py               | 15 ++++++++++++++-
 services/dockercleaner/arvados_version.py   | 15 ++++++++++++++-
 services/fuse/arvados_version.py            | 15 ++++++++++++++-
 tools/crunchstat-summary/arvados_version.py | 15 ++++++++++++++-
 tools/user-activity/arvados_version.py      | 15 ++++++++++++++-
 6 files changed, 84 insertions(+), 6 deletions(-)

       via  33b86b169d9427418e350f099a72c81707c13ede (commit)
      from  e512d73d1fc576f468510fcc67b185f01a70c0c2 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.


commit 33b86b169d9427418e350f099a72c81707c13ede
Author: Brett Smith <brett.smith at curii.com>
Date:   Sun Mar 17 13:49:50 2024 -0400

    21601: Accommodate dev dependencies in outside-Git packages
    
    We do this with Docker sometimes: we build sdists at one point, and then
    pip install the sdists later. Dependencies need to allow for a range of
    development versions for that to work.
    
    This relaxes the dependency a little like <= did earlier in setup.py,
    but with a much higher floor on what versions are acceptable. This
    should prevent situations in the future where pip installs an older
    release version to satisfy a dependency for a development package.
    
    Arvados-DCO-1.1-Signed-off-by: Brett Smith <brett.smith at curii.com>

diff --git a/sdk/cwl/arvados_version.py b/sdk/cwl/arvados_version.py
index 1ec7c5487a..5804986a49 100644
--- a/sdk/cwl/arvados_version.py
+++ b/sdk/cwl/arvados_version.py
@@ -16,6 +16,8 @@ import runpy
 import subprocess
 import sys
 
+import packaging.version
+
 from pathlib import Path
 
 # These maps explain the relationships between different Python modules in
@@ -127,7 +129,18 @@ def iter_dependencies(version=None):
     if version is None:
         version = get_version()
     if ENV_VERSION or (REPO_PATH is None):
-        dep_fmt = f'{{}}=={version}'.format
+        parsed_ver = packaging.version.parse(version)
+        if parsed_ver.is_devrelease:
+            # A packaged development release should be installed with other
+            # development packages built from the same source, but those
+            # dependencies may have earlier "dev" versions (read: less recent
+            # Git commit timestamps). This compatible version dependency
+            # expresses that as closely as possible. Allowing versions
+            # compatible with .dev0 allows any development release.
+            ver_dep = f'~={parsed_ver.base_version}.dev0'
+        else:
+            ver_dep = f'=={version}'
+        dep_fmt = f'{{}}{ver_dep}'.format
     else:
         def dep_fmt(pkg):
             pkg_path = REPO_PATH / PACKAGE_SRCPATH_MAP[pkg]
diff --git a/sdk/python/arvados_version.py b/sdk/python/arvados_version.py
index 1ec7c5487a..5804986a49 100644
--- a/sdk/python/arvados_version.py
+++ b/sdk/python/arvados_version.py
@@ -16,6 +16,8 @@ import runpy
 import subprocess
 import sys
 
+import packaging.version
+
 from pathlib import Path
 
 # These maps explain the relationships between different Python modules in
@@ -127,7 +129,18 @@ def iter_dependencies(version=None):
     if version is None:
         version = get_version()
     if ENV_VERSION or (REPO_PATH is None):
-        dep_fmt = f'{{}}=={version}'.format
+        parsed_ver = packaging.version.parse(version)
+        if parsed_ver.is_devrelease:
+            # A packaged development release should be installed with other
+            # development packages built from the same source, but those
+            # dependencies may have earlier "dev" versions (read: less recent
+            # Git commit timestamps). This compatible version dependency
+            # expresses that as closely as possible. Allowing versions
+            # compatible with .dev0 allows any development release.
+            ver_dep = f'~={parsed_ver.base_version}.dev0'
+        else:
+            ver_dep = f'=={version}'
+        dep_fmt = f'{{}}{ver_dep}'.format
     else:
         def dep_fmt(pkg):
             pkg_path = REPO_PATH / PACKAGE_SRCPATH_MAP[pkg]
diff --git a/services/dockercleaner/arvados_version.py b/services/dockercleaner/arvados_version.py
index 1ec7c5487a..5804986a49 100644
--- a/services/dockercleaner/arvados_version.py
+++ b/services/dockercleaner/arvados_version.py
@@ -16,6 +16,8 @@ import runpy
 import subprocess
 import sys
 
+import packaging.version
+
 from pathlib import Path
 
 # These maps explain the relationships between different Python modules in
@@ -127,7 +129,18 @@ def iter_dependencies(version=None):
     if version is None:
         version = get_version()
     if ENV_VERSION or (REPO_PATH is None):
-        dep_fmt = f'{{}}=={version}'.format
+        parsed_ver = packaging.version.parse(version)
+        if parsed_ver.is_devrelease:
+            # A packaged development release should be installed with other
+            # development packages built from the same source, but those
+            # dependencies may have earlier "dev" versions (read: less recent
+            # Git commit timestamps). This compatible version dependency
+            # expresses that as closely as possible. Allowing versions
+            # compatible with .dev0 allows any development release.
+            ver_dep = f'~={parsed_ver.base_version}.dev0'
+        else:
+            ver_dep = f'=={version}'
+        dep_fmt = f'{{}}{ver_dep}'.format
     else:
         def dep_fmt(pkg):
             pkg_path = REPO_PATH / PACKAGE_SRCPATH_MAP[pkg]
diff --git a/services/fuse/arvados_version.py b/services/fuse/arvados_version.py
index 1ec7c5487a..5804986a49 100644
--- a/services/fuse/arvados_version.py
+++ b/services/fuse/arvados_version.py
@@ -16,6 +16,8 @@ import runpy
 import subprocess
 import sys
 
+import packaging.version
+
 from pathlib import Path
 
 # These maps explain the relationships between different Python modules in
@@ -127,7 +129,18 @@ def iter_dependencies(version=None):
     if version is None:
         version = get_version()
     if ENV_VERSION or (REPO_PATH is None):
-        dep_fmt = f'{{}}=={version}'.format
+        parsed_ver = packaging.version.parse(version)
+        if parsed_ver.is_devrelease:
+            # A packaged development release should be installed with other
+            # development packages built from the same source, but those
+            # dependencies may have earlier "dev" versions (read: less recent
+            # Git commit timestamps). This compatible version dependency
+            # expresses that as closely as possible. Allowing versions
+            # compatible with .dev0 allows any development release.
+            ver_dep = f'~={parsed_ver.base_version}.dev0'
+        else:
+            ver_dep = f'=={version}'
+        dep_fmt = f'{{}}{ver_dep}'.format
     else:
         def dep_fmt(pkg):
             pkg_path = REPO_PATH / PACKAGE_SRCPATH_MAP[pkg]
diff --git a/tools/crunchstat-summary/arvados_version.py b/tools/crunchstat-summary/arvados_version.py
index 1ec7c5487a..5804986a49 100644
--- a/tools/crunchstat-summary/arvados_version.py
+++ b/tools/crunchstat-summary/arvados_version.py
@@ -16,6 +16,8 @@ import runpy
 import subprocess
 import sys
 
+import packaging.version
+
 from pathlib import Path
 
 # These maps explain the relationships between different Python modules in
@@ -127,7 +129,18 @@ def iter_dependencies(version=None):
     if version is None:
         version = get_version()
     if ENV_VERSION or (REPO_PATH is None):
-        dep_fmt = f'{{}}=={version}'.format
+        parsed_ver = packaging.version.parse(version)
+        if parsed_ver.is_devrelease:
+            # A packaged development release should be installed with other
+            # development packages built from the same source, but those
+            # dependencies may have earlier "dev" versions (read: less recent
+            # Git commit timestamps). This compatible version dependency
+            # expresses that as closely as possible. Allowing versions
+            # compatible with .dev0 allows any development release.
+            ver_dep = f'~={parsed_ver.base_version}.dev0'
+        else:
+            ver_dep = f'=={version}'
+        dep_fmt = f'{{}}{ver_dep}'.format
     else:
         def dep_fmt(pkg):
             pkg_path = REPO_PATH / PACKAGE_SRCPATH_MAP[pkg]
diff --git a/tools/user-activity/arvados_version.py b/tools/user-activity/arvados_version.py
index 1ec7c5487a..5804986a49 100644
--- a/tools/user-activity/arvados_version.py
+++ b/tools/user-activity/arvados_version.py
@@ -16,6 +16,8 @@ import runpy
 import subprocess
 import sys
 
+import packaging.version
+
 from pathlib import Path
 
 # These maps explain the relationships between different Python modules in
@@ -127,7 +129,18 @@ def iter_dependencies(version=None):
     if version is None:
         version = get_version()
     if ENV_VERSION or (REPO_PATH is None):
-        dep_fmt = f'{{}}=={version}'.format
+        parsed_ver = packaging.version.parse(version)
+        if parsed_ver.is_devrelease:
+            # A packaged development release should be installed with other
+            # development packages built from the same source, but those
+            # dependencies may have earlier "dev" versions (read: less recent
+            # Git commit timestamps). This compatible version dependency
+            # expresses that as closely as possible. Allowing versions
+            # compatible with .dev0 allows any development release.
+            ver_dep = f'~={parsed_ver.base_version}.dev0'
+        else:
+            ver_dep = f'=={version}'
+        dep_fmt = f'{{}}{ver_dep}'.format
     else:
         def dep_fmt(pkg):
             pkg_path = REPO_PATH / PACKAGE_SRCPATH_MAP[pkg]

-----------------------------------------------------------------------


hooks/post-receive
-- 




More information about the arvados-commits mailing list