Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-dm-tree for openSUSE:Factory 
checked in at 2026-04-11 22:26:23
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-dm-tree (Old)
 and      /work/SRC/openSUSE:Factory/.python-dm-tree.new.21863 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-dm-tree"

Sat Apr 11 22:26:23 2026 rev:2 rq:1346058 version:0.1.10

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-dm-tree/python-dm-tree.changes    
2024-07-11 20:30:12.050311118 +0200
+++ /work/SRC/openSUSE:Factory/.python-dm-tree.new.21863/python-dm-tree.changes 
2026-04-11 22:31:34.809165946 +0200
@@ -1,0 +2,8 @@
+Sat Apr 11 11:59:42 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 0.1.10:
+  * Added support for Python 3.14.
+  * Dropped support for Python <3.10.
+- remove-abseil.patch, use-system-pybind11.patch: refresh
+
+-------------------------------------------------------------------

Old:
----
  dm-tree-0.1.8.tar.gz

New:
----
  dm_tree-0.1.10.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-dm-tree.spec ++++++
--- /var/tmp/diff_new_pack.Fxd5WW/_old  2026-04-11 22:31:35.701202431 +0200
+++ /var/tmp/diff_new_pack.Fxd5WW/_new  2026-04-11 22:31:35.701202431 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package python-dm-tree
 #
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2026 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,41 +17,41 @@
 
 
 Name:           python-dm-tree
-Version:        0.1.8
+Version:        0.1.10
 Release:        0
 Summary:        Tree is a library for working with nested data structures
 License:        Apache-2.0
 URL:            https://github.com/deepmind/tree
-Source:         
https://files.pythonhosted.org/packages/source/d/dm-tree/dm-tree-%{version}.tar.gz
+Source:         
https://files.pythonhosted.org/packages/source/d/dm_tree/dm_tree-%{version}.tar.gz
 # PATCH-FIX-UPSTREAM https://github.com/google-deepmind/tree/pull/50
 Patch0:         remove-abseil.patch
 # PATCH-FIX-UPSTREAM Based on https://github.com/google-deepmind/tree/pull/73
 Patch1:         use-system-pybind11.patch
 # PATCH-FIX-OPENSUSE Set debug build so we get symbols
 Patch2:         set-debug.patch
-BuildRequires:  python-rpm-macros
-BuildRequires:  cmake
-BuildRequires:  gcc-c++
-BuildRequires:  %{python_module pip}
-BuildRequires:  %{python_module setuptools}
 BuildRequires:  %{python_module devel}
+BuildRequires:  %{python_module pip}
 BuildRequires:  %{python_module pybind11-devel}
+BuildRequires:  %{python_module setuptools}
 BuildRequires:  %{python_module wheel}
+BuildRequires:  cmake
+BuildRequires:  fdupes
+BuildRequires:  gcc-c++
+BuildRequires:  python-rpm-macros
 # SECTION test requirements
 BuildRequires:  %{python_module absl-py >= 0.6.1}
 BuildRequires:  %{python_module attrs >= 18.2.0}
-BuildRequires:  %{python_module numpy >= 1.15.4}
-BuildRequires:  %{python_module wrapt >= 1.11.2}
+BuildRequires:  %{python_module numpy >= 1.21}
 BuildRequires:  %{python_module pytest}
+BuildRequires:  %{python_module wrapt >= 1.11.2}
 # /SECTION
-BuildRequires:  fdupes
 %python_subpackages
 
 %description
 Tree is a library for working with nested data structures.
 
 %prep
-%autosetup -p1 -n dm-tree-%{version}
+%autosetup -p1 -n dm_tree-%{version}
 
 %build
 export CFLAGS="%{optflags}"

++++++ remove-abseil.patch ++++++
--- /var/tmp/diff_new_pack.Fxd5WW/_old  2026-04-11 22:31:35.789206030 +0200
+++ /var/tmp/diff_new_pack.Fxd5WW/_new  2026-04-11 22:31:35.797206357 +0200
@@ -1,22 +1,10 @@
-From edcb42955ad1970d0cb4924775323433ca88ce5d Mon Sep 17 00:00:00 2001
-From: Iurii Kemaev <[email protected]>
-Date: Wed, 16 Jun 2021 01:45:45 -0700
-Subject: [PATCH] Remove abseil dependencies.
-
-PiperOrigin-RevId: 379669838
----
- tree/BUILD   |  2 --
- tree/tree.cc | 74 +++++++++++++++++++++++++++++++++-------------------
- 2 files changed, 47 insertions(+), 29 deletions(-)
-
-Index: dm-tree-0.1.8/tree/tree.cc
-===================================================================
---- dm-tree-0.1.8.orig/tree/tree.cc
-+++ dm-tree-0.1.8/tree/tree.cc
-@@ -16,12 +16,11 @@ limitations under the License.
- 
+--- dm_tree-0.1.10.orig/tree/tree.cc   2026-03-31 14:56:46.000000000 +0000
++++ dm_tree-0.1.10/tree/tree.cc        2026-04-11 11:59:49.872591133 +0000
+@@ -17,13 +17,15 @@
  #include <functional>
+ #include <atomic>
  #include <memory>
++#include <mutex>
 +#include <sstream>
  #include <string>
  #include <unordered_map>
@@ -24,10 +12,14 @@
  // logging
 -#include "absl/strings/str_cat.h"
 -#include "absl/strings/string_view.h"
+-#include "absl/synchronization/mutex.h"
++
++
++
  #include <pybind11/pybind11.h>
  
  #ifdef LOG
-@@ -55,11 +54,26 @@ bool IsString(PyObject* o) {
+@@ -57,11 +59,26 @@
    return PyBytes_Check(o) || PyByteArray_Check(o) || PyUnicode_Check(o);
  }
  
@@ -55,7 +47,7 @@
    // __class__ is equivalent to type() for new style classes.
    // type() is equivalent to PyObject_Type()
    // (https://docs.python.org/3.5/c-api/object.html#c.PyObject_Type)
-@@ -69,10 +83,10 @@ absl::string_view GetClassName(PyObject*
+@@ -71,10 +88,10 @@
  
    // __name__ is the value of `tp_name` after the last '.'
    // (https://docs.python.org/2/c-api/typeobj.html#c.PyTypeObject.tp_name)
@@ -69,7 +61,7 @@
    }
    return name;
  }
-@@ -85,7 +99,7 @@ std::string PyObjectToString(PyObject* o
+@@ -87,7 +104,7 @@
    if (str) {
      std::string s(PyUnicode_AsUTF8(str));
      Py_DECREF(str);
@@ -78,7 +70,34 @@
    } else {
      return "<failed to execute str() on object>";
    }
-@@ -436,7 +450,7 @@ void SetDifferentKeysError(PyObject* dic
+@@ -115,7 +132,7 @@
+     auto* type = Py_TYPE(o);
+ 
+     {
+-      absl::MutexLock lock(mutex_);
++      std::lock_guard<std::mutex> lock(mutex_);
+       auto it = type_to_sequence_map_.find(type);
+       if (it != type_to_sequence_map_.end()) {
+         return it->second;
+@@ -135,7 +152,7 @@
+     // that are eligible for decref. As a precaution, we limit the size of the
+     // map to 1024.
+     {
+-      absl::MutexLock lock(mutex_);
++      std::lock_guard<std::mutex> lock(mutex_);
+       if (type_to_sequence_map_.size() < kMaxItemsInCache) {
+         Py_INCREF(type);
+         type_to_sequence_map_.insert({type, check_result});
+@@ -148,7 +165,7 @@
+  private:
+   std::function<int(PyObject*)> ternary_predicate_;
+   std::unordered_map<PyTypeObject*, bool> type_to_sequence_map_;
+-  mutable absl::Mutex mutex_;
++  mutable std::mutex mutex_;
+ };
+ 
+ py::object GetCollectionsSequenceType() {
+@@ -441,7 +458,7 @@
      return;
    }
    *is_type_error = false;
@@ -87,7 +106,7 @@
        "The two dictionaries don't have the same set of keys. "
        "First structure has keys ",
        PyObjectToString(k1.get()), ", while second structure has keys ",
-@@ -465,9 +479,9 @@ bool AssertSameStructureHelper(PyObject*
+@@ -470,9 +487,9 @@
      std::string non_seq_str =
          is_seq1 ? PyObjectToString(o2) : PyObjectToString(o1);
      *is_type_error = false;
@@ -100,7 +119,7 @@
      return true;
    }
  
-@@ -510,7 +524,7 @@ bool AssertSameStructureHelper(PyObject*
+@@ -515,7 +532,7 @@
        Py_DECREF(same_tuples);
        if (not_same_tuples) {
          *is_type_error = true;
@@ -109,7 +128,7 @@
              "The two namedtuples don't have the same sequence type. "
              "First structure ",
              PyObjectToString(o1), " has type ", type1->tp_name,
-@@ -527,7 +541,7 @@ bool AssertSameStructureHelper(PyObject*
+@@ -532,7 +549,7 @@
                    and dict compare equal. */
                 && !(IsMappingHelper(o1) && IsMappingHelper(o2))) {
        *is_type_error = true;
@@ -118,7 +137,7 @@
            "The two namedtuples don't have the same sequence type. "
            "First structure ",
            PyObjectToString(o1), " has type ", type1->tp_name,
-@@ -593,10 +607,10 @@ bool AssertSameStructureHelper(PyObject*
+@@ -598,10 +615,10 @@
        return true;
      } else {
        *is_type_error = false;
@@ -133,7 +152,7 @@
        return true;
      }
    }
-@@ -692,7 +706,7 @@ PyObject* SameNamedtuples(PyObject* o1,
+@@ -697,7 +714,7 @@
      Py_RETURN_FALSE;
    }
  
@@ -142,7 +161,7 @@
      Py_RETURN_TRUE;
    } else {
      Py_RETURN_FALSE;
-@@ -711,10 +725,10 @@ void AssertSameStructure(PyObject* o1, P
+@@ -716,10 +733,10 @@
    if (!error_msg.empty()) {
      PyErr_SetString(
          is_type_error ? PyExc_TypeError : PyExc_ValueError,
@@ -157,64 +176,4 @@
              .c_str());
    }
  }
-Index: dm-tree-0.1.8/tree/CMakeLists.txt
-===================================================================
---- dm-tree-0.1.8.orig/tree/CMakeLists.txt
-+++ dm-tree-0.1.8/tree/CMakeLists.txt
-@@ -64,55 +64,8 @@ if(NOT pybind11_POPULATED)
-     include_directories(${pybind11_INCLUDE_DIR})
- endif()
- 
--# Needed to disable Abseil tests.
--set (BUILD_TESTING OFF)
--
--# Include abseil-cpp.
--set(ABSEIL_VER 20210324.2)
--include(ExternalProject)
--set(ABSEIL_CMAKE_ARGS
--    "-DCMAKE_INSTALL_PREFIX=${CMAKE_SOURCE_DIR}/abseil-cpp"
--    "-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}"
--    "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}"
--    "-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}"
--    "-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}"
--    "-DCMAKE_POSITION_INDEPENDENT_CODE=${CMAKE_POSITION_INDEPENDENT_CODE}"
--    "-DLIBRARY_OUTPUT_PATH=${CMAKE_SOURCE_DIR}/abseil-cpp/lib")
--if(DEFINED CMAKE_OSX_ARCHITECTURES)
--    set(ABSEIL_CMAKE_ARGS
--        ${ABSEIL_CMAKE_ARGS}
--        "-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}")
--endif()
--ExternalProject_Add(abseil-cpp
--  GIT_REPOSITORY    https://github.com/abseil/abseil-cpp.git
--  GIT_TAG           ${ABSEIL_VER}
--  PREFIX            ${CMAKE_SOURCE_DIR}/abseil-cpp
--  CMAKE_ARGS        ${ABSEIL_CMAKE_ARGS}
--)
--ExternalProject_Get_Property(abseil-cpp install_dir)
--set(abseil_install_dir ${install_dir})
--include_directories (${abseil_install_dir}/include)
--
--
- # Define pybind11 tree module.
- pybind11_add_module(_tree tree.h tree.cc)
--add_dependencies(_tree abseil-cpp)
--
--if (WIN32 OR MSVC)
--    set(ABSEIL_LIB_PREF "absl")
--    set(LIB_SUFF "lib")
--else()
--    set(ABSEIL_LIB_PREF "libabsl")
--    set(LIB_SUFF "a")
--endif()
--
--# Link abseil static libs.
--# We don't use find_library here to force cmake to build abseil before 
linking.
--set(ABSEIL_LIBS int128 raw_hash_set raw_logging_internal strings 
throw_delegate)
--foreach(ABSEIL_LIB IN LISTS ABSEIL_LIBS)
--  target_link_libraries(_tree PRIVATE
--      
"${abseil_install_dir}/lib/${ABSEIL_LIB_PREF}_${ABSEIL_LIB}.${LIB_SUFF}")
--endforeach()
- 
- # Make the module private to tree package.
- set_target_properties(_tree PROPERTIES OUTPUT_NAME tree/_tree)
 

++++++ use-system-pybind11.patch ++++++
--- /var/tmp/diff_new_pack.Fxd5WW/_old  2026-04-11 22:31:35.825207502 +0200
+++ /var/tmp/diff_new_pack.Fxd5WW/_new  2026-04-11 22:31:35.833207829 +0200
@@ -1,49 +1,88 @@
-From 5dd767f3e60d9e4c58f6ee7764b24e1dec2c5edb Mon Sep 17 00:00:00 2001
-From: Alexander Tsvyashchenko <[email protected]>
-Date: Sat, 1 Jan 2022 13:22:47 +0100
-Subject: [PATCH] Use system pybind11 and absl when available
-
-Current CMakeLists.txt always downloads and builds `pybind11` and `absl` which 
conflicts with packaging best practices in some of the distributions. This 
change uses system libraries (if available) and falls back to the old behavior 
(if not).
----
- tree/CMakeLists.txt | 122 ++++++++++++++++++++++++--------------------
- 1 file changed, 66 insertions(+), 56 deletions(-)
-
-Index: dm-tree-0.1.8/tree/CMakeLists.txt
-===================================================================
---- dm-tree-0.1.8.orig/tree/CMakeLists.txt
-+++ dm-tree-0.1.8/tree/CMakeLists.txt
-@@ -50,18 +50,21 @@ if(APPLE)
-   set (CMAKE_FIND_FRAMEWORK LAST)
+--- dm_tree-0.1.10.orig/tree/CMakeLists.txt    2026-03-31 14:56:46.000000000 
+0000
++++ dm_tree-0.1.10/tree/CMakeLists.txt 2026-04-11 11:59:57.471680860 +0000
+@@ -7,8 +7,7 @@
+ 
+ project (tree LANGUAGES CXX)
+ 
+-option(USE_SYSTEM_ABSEIL "Force use of system abseil-cpp" OFF)
+-option(USE_SYSTEM_PYBIND11 "Force use of system pybind11" OFF)
++option(USE_SYSTEM_PYBIND11 "Force use of system pybind11" ON)
+ 
+ # Required for Python.h and python binding.
+ find_package(Python3 COMPONENTS Interpreter Development)
+@@ -61,66 +60,21 @@
+ # abseil-cpp and pybind11).
+ include(FetchContent)
+ 
+-# Needed to disable Abseil tests.
+-set(BUILD_TESTING OFF)
+-
+-# Try to find abseil-cpp package system-wide first.
+-if (USE_SYSTEM_ABSEIL)
+-    message(STATUS "Use system abseil-cpp: ${USE_SYSTEM_ABSEIL}")
+-    set(ABSEIL_FIND_PACKAGE_ARGS FIND_PACKAGE_ARGS)
+-endif()
+-
+-# Include abseil-cpp.
+-set(ABSEIL_REPO https://github.com/abseil/abseil-cpp)
+-set(ABSEIL_CMAKE_ARGS
+-  "-DCMAKE_INSTALL_PREFIX=${CMAKE_SOURCE_DIR}/abseil-cpp"
+-  "-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}"
+-  "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}"
+-  "-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}"
+-  "-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}"
+-  "-DCMAKE_POSITION_INDEPENDENT_CODE=${CMAKE_POSITION_INDEPENDENT_CODE}"
+-  "-DLIBRARY_OUTPUT_PATH=${CMAKE_SOURCE_DIR}/abseil-cpp/lib"
+-  "-DABSL_PROPAGATE_CXX_STD=ON")
+-if(DEFINED CMAKE_OSX_ARCHITECTURES)
+-  set(ABSEIL_CMAKE_ARGS
+-      ${ABSEIL_CMAKE_ARGS}
+-      "-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}")
+-endif()
+-
+-FetchContent_Declare(
+-  absl
+-  URL         ${ABSEIL_REPO}/archive/refs/tags/20260107.1.tar.gz
+-  URL_HASH    
SHA256=4314e2a7cbac89cac25a2f2322870f343d81579756ceff7f431803c2c9090195
+-  CMAKE_ARGS  ${ABSEIL_CMAKE_ARGS}
+-  EXCLUDE_FROM_ALL
+-  ${ABSEIL_FIND_PACKAGE_ARGS})
+-
+ # Try to find pybind11 package system-wide first.
+ if (USE_SYSTEM_PYBIND11)
+-    message(STATUS "Use system pybind11: ${USE_SYSTEM_PYBIND11}")
+-    set(PYBIND11_FIND_PACKAGE_ARGS FIND_PACKAGE_ARGS)
++    find_package(pybind11 CONFIG)
  endif()
  
--# Fetch pybind to be able to use pybind11_add_module symbol.
--set(PYBIND_VER v2.10.1)
--include(FetchContent)
 -FetchContent_Declare(
 -  pybind11
--  GIT_REPOSITORY https://github.com/pybind/pybind11
--  GIT_TAG        ${PYBIND_VER}
--)
--if(NOT pybind11_POPULATED)
--    FetchContent_Populate(pybind11)
--    add_subdirectory(${pybind11_SOURCE_DIR} ${pybind11_BINARY_DIR})
--    include_directories(${pybind11_INCLUDE_DIR})
-+find_package(pybind11 CONFIG)
+-  URL       https://github.com/pybind/pybind11/archive/refs/tags/v3.0.1.tar.gz
+-  URL_HASH  
SHA256=741633da746b7c738bb71f1854f957b9da660bcd2dce68d71949037f0969d0ca
+-  ${PYBIND11_FIND_PACKAGE_ARGS})
+-
+-FetchContent_MakeAvailable(absl pybind11)
 +if (NOT pybind11_FOUND)
-+  # Fetch pybind to be able to use pybind11_add_module symbol.
-+  set(PYBIND_VER v2.10.1)
-+  include(FetchContent)
 +  FetchContent_Declare(
 +    pybind11
-+    GIT_REPOSITORY https://github.com/pybind/pybind11
-+    GIT_TAG        ${PYBIND_VER}
-+  )
-+  if(NOT pybind11_POPULATED)
-+      FetchContent_Populate(pybind11)
-+      add_subdirectory(${pybind11_SOURCE_DIR} ${pybind11_BINARY_DIR})
-+      include_directories(${pybind11_INCLUDE_DIR})
-+  endif()
- endif()
++    URL       
https://github.com/pybind/pybind11/archive/refs/tags/v3.0.1.tar.gz
++    URL_HASH  
SHA256=741633da746b7c738bb71f1854f957b9da660bcd2dce68d71949037f0969d0ca)
++  FetchContent_MakeAvailable(pybind11)
++endif()
  
  # Define pybind11 tree module.
+ pybind11_add_module(_tree tree.h tree.cc)
+ 
+-target_link_libraries(
+-  _tree
+-  PRIVATE
+-    absl::int128
+-    absl::raw_hash_set
+-    absl::raw_logging_internal
+-    absl::strings
+-    absl::synchronization
+-    absl::throw_delegate)
+-
+ # Make the module private to tree package.
+ set_target_properties(_tree PROPERTIES OUTPUT_NAME tree/_tree)
 

Reply via email to