Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
Please login to access the resource
home:dgarcia:python312:numeric
python-dm-tree
remove-abseil.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File remove-abseil.patch of Package python-dm-tree
From edcb42955ad1970d0cb4924775323433ca88ce5d Mon Sep 17 00:00:00 2001 From: Iurii Kemaev <iukemaev@google.com> 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. #include <functional> #include <memory> +#include <sstream> #include <string> #include <unordered_map> // logging -#include "absl/strings/str_cat.h" -#include "absl/strings/string_view.h" #include <pybind11/pybind11.h> #ifdef LOG @@ -55,11 +54,26 @@ bool IsString(PyObject* o) { return PyBytes_Check(o) || PyByteArray_Check(o) || PyUnicode_Check(o); } +void AddToStringStream(std::ostringstream&) {} + +template <typename T, typename... Args> +void AddToStringStream(std::ostringstream& sstream, T&& arg, Args&&... args) { + sstream << std::forward<T>(arg); + AddToStringStream(sstream, std::forward<Args>(args)...); +} + +template <typename... Args> +std::string StrCat(Args&&... args) { + std::ostringstream sstream; + AddToStringStream(sstream, std::forward<Args>(args)...); + return sstream.str(); +} + // Equivalent to Python's 'o.__class__.__name__' // Note that '__class__' attribute is set only in new-style classes. // A lot of tensorflow code uses __class__ without checks, so it seems like // we only support new-style classes. -absl::string_view GetClassName(PyObject* o) { +std::string GetClassName(PyObject* o) { // __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* // __name__ is the value of `tp_name` after the last '.' // (https://docs.python.org/2/c-api/typeobj.html#c.PyTypeObject.tp_name) - absl::string_view name(type->tp_name); + std::string name(type->tp_name); size_t pos = name.rfind('.'); - if (pos != absl::string_view::npos) { - name.remove_prefix(pos + 1); + if (pos != std::string::npos) { + name.erase(0, pos + 1); } return name; } @@ -85,7 +99,7 @@ std::string PyObjectToString(PyObject* o if (str) { std::string s(PyUnicode_AsUTF8(str)); Py_DECREF(str); - return absl::StrCat("type=", GetClassName(o), " str=", s); + return StrCat("type=", GetClassName(o), " str=", s); } else { return "<failed to execute str() on object>"; } @@ -436,7 +450,7 @@ void SetDifferentKeysError(PyObject* dic return; } *is_type_error = false; - *error_msg = absl::StrCat( + *error_msg = StrCat( "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* std::string non_seq_str = is_seq1 ? PyObjectToString(o2) : PyObjectToString(o1); *is_type_error = false; - *error_msg = absl::StrCat("Substructure \"", seq_str, - "\" is a sequence, while substructure \"", - non_seq_str, "\" is not"); + *error_msg = StrCat("Substructure \"", seq_str, + "\" is a sequence, while substructure \"", non_seq_str, + "\" is not"); return true; } @@ -510,7 +524,7 @@ bool AssertSameStructureHelper(PyObject* Py_DECREF(same_tuples); if (not_same_tuples) { *is_type_error = true; - *error_msg = absl::StrCat( + *error_msg = StrCat( "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* and dict compare equal. */ && !(IsMappingHelper(o1) && IsMappingHelper(o2))) { *is_type_error = true; - *error_msg = absl::StrCat( + *error_msg = StrCat( "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* return true; } else { *is_type_error = false; - *error_msg = absl::StrCat( - "The two structures don't have the same number of elements. ", - "First structure: ", PyObjectToString(o1), - ". Second structure: ", PyObjectToString(o2)); + *error_msg = + StrCat("The two structures don't have the same number of elements. ", + "First structure: ", PyObjectToString(o1), + ". Second structure: ", PyObjectToString(o2)); return true; } } @@ -692,7 +706,7 @@ PyObject* SameNamedtuples(PyObject* o1, Py_RETURN_FALSE; } - if (GetClassName(o1).compare(GetClassName(o2)) == 0) { + if (GetClassName(o1) == GetClassName(o2)) { Py_RETURN_TRUE; } else { Py_RETURN_FALSE; @@ -711,10 +725,10 @@ void AssertSameStructure(PyObject* o1, P if (!error_msg.empty()) { PyErr_SetString( is_type_error ? PyExc_TypeError : PyExc_ValueError, - absl::StrCat( - "The two structures don't have the same nested structure.\n\n", - "First structure: ", PyObjectToString(o1), "\n\nSecond structure: ", - PyObjectToString(o2), "\n\nMore specifically: ", error_msg) + StrCat("The two structures don't have the same nested structure.\n\n", + "First structure: ", PyObjectToString(o1), + "\n\nSecond structure: ", PyObjectToString(o2), + "\n\nMore specifically: ", error_msg) .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)
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor