Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package partio for openSUSE:Factory checked 
in at 2026-04-20 16:13:34
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/partio (Old)
 and      /work/SRC/openSUSE:Factory/.partio.new.11940 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "partio"

Mon Apr 20 16:13:34 2026 rev:3 rq:1348178 version:1.20.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/partio/partio.changes    2025-07-21 
20:02:08.055664916 +0200
+++ /work/SRC/openSUSE:Factory/.partio.new.11940/partio.changes 2026-04-20 
16:13:43.003167931 +0200
@@ -1,0 +2,11 @@
+Sun Apr 19 10:14:26 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 1.20.0:
+  * python: add compatibility with newer versions of swig
+  * partedit: reorder imports
+  * partedit: avoid importing PyQt5 directly
+  * enable C++17
+  * python: improve swig bindings
+  * tests: avoid deprecated assertEquals()
+
+-------------------------------------------------------------------

Old:
----
  partio-1.19.0.tar.gz

New:
----
  partio-1.20.0.tar.gz

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

Other differences:
------------------
++++++ partio.spec ++++++
--- /var/tmp/diff_new_pack.Cf9xyb/_old  2026-04-20 16:13:43.719197831 +0200
+++ /var/tmp/diff_new_pack.Cf9xyb/_new  2026-04-20 16:13:43.723197998 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package partio
 #
-# Copyright (c) 2025 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
@@ -21,18 +21,18 @@
 %define pyver python3
 
 Name:           partio
-Version:        1.19.0
-Release:        1
+Version:        1.20.0
+Release:        0
 Summary:        Library for reading/writing/manipulating common animation 
particle
 License:        BSD-3-Clause
 URL:            https://github.com/wdas/%{name}
 Source:         
https://github.com/wdas/%{name}/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz
+BuildRequires:  %{pyver}-devel
 BuildRequires:  cmake >= 3.15
 BuildRequires:  doxygen
 BuildRequires:  fdupes
 BuildRequires:  gcc-c++
 BuildRequires:  pkgconfig
-BuildRequires:  %{pyver}-devel
 BuildRequires:  swig
 BuildRequires:  pkgconfig(gl)
 BuildRequires:  pkgconfig(glut)

++++++ partio-1.19.0.tar.gz -> partio-1.20.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/partio-1.19.0/.github/workflows/build.yml 
new/partio-1.20.0/.github/workflows/build.yml
--- old/partio-1.19.0/.github/workflows/build.yml       2025-01-28 
23:44:08.000000000 +0100
+++ new/partio-1.20.0/.github/workflows/build.yml       2025-11-19 
01:27:49.000000000 +0100
@@ -11,7 +11,7 @@
       matrix:
         os: [ubuntu]
         config: [Debug, Release]
-        standard: [c++11, c++14, c++17, c++20]
+        standard: [c++17, c++20]
     name: ${{matrix.os}}-${{matrix.config}}-${{matrix.standard}}
     runs-on: ${{matrix.os}}-latest
 
@@ -20,7 +20,7 @@
     - name: Install dependencies
       run: sudo apt update && sudo apt install -y zlib1g-dev freeglut3-dev 
libgtest-dev
     - name: CMake configure
-      run: cmake -G "Unix Makefiles" -DPARTIO_GTEST_ENABLED=ON 
-DCMAKE_BUILD_TYPE=${{matrix.config}} .
+      run: cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=${{matrix.config}} .
       env:
         CXXFLAGS_STD: ${{matrix.standard}}
     - name: Build
@@ -32,7 +32,7 @@
       matrix:
         architecture: [x64]
         config: [Release]
-        standard: [c++11, c++14, c++17, c++20]
+        standard: [c++17, c++20]
     name: 
windows-${{matrix.architecture}}-${{matrix.config}}-${{matrix.standard}}
     
     steps:
@@ -46,7 +46,7 @@
     - name: Get gtest
       run: vcpkg install gtest:${{matrix.architecture}}-windows
     - name: CMake configure
-      run: cmake 
"-DCMAKE_TOOLCHAIN_FILE=$env:VCPKG_INSTALLATION_ROOT/scripts/buildsystems/vcpkg.cmake"
 -DPARTIO_GTEST_ENABLED=ON -A ${{matrix.architecture}} .
+      run: cmake 
"-DCMAKE_TOOLCHAIN_FILE=$env:VCPKG_INSTALLATION_ROOT/scripts/buildsystems/vcpkg.cmake"
 -A ${{matrix.architecture}} .
       env:
         CXXFLAGS_STD: ${{matrix.standard}}
     - name: Build
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/partio-1.19.0/CMakeLists.txt 
new/partio-1.20.0/CMakeLists.txt
--- old/partio-1.19.0/CMakeLists.txt    2025-01-28 23:44:08.000000000 +0100
+++ new/partio-1.20.0/CMakeLists.txt    2025-11-19 01:27:49.000000000 +0100
@@ -35,22 +35,25 @@
 project(partio LANGUAGES CXX)
 set(PARTIO_VERSION_MAJOR "1")
 
-option(PARTIO_GTEST_ENABLED "Enable GTest for tests" OFF)
+option(PARTIO_ENABLE_TESTING "Enable testing" ON)
 option(PARTIO_ORIGIN_RPATH "Enable ORIGIN rpath in the installed libraries" 
OFF)
 
 if(WIN32 OR APPLE)
     option(PARTIO_USE_GLVND "Use GLVND for OpenGL" OFF)
-    option(PARTIO_BUILD_SHARED_LIBS "Enabled shared libraries" OFF)
+    option(PARTIO_BUILD_SHARED_LIBS "Enable shared libraries" OFF)
 else()
     option(PARTIO_USE_GLVND "Use GLVND for OpenGL" ON)
-    option(PARTIO_BUILD_SHARED_LIBS "Enabled shared libraries" ON)
+    option(PARTIO_BUILD_SHARED_LIBS "Enable shared libraries" ON)
 endif()
+option(PARTIO_BUILD_TOOLS "Enable partio's CLI tools" ON)
+option(PARTIO_BUILD_PYTHON "Enable partio's Python bindings" ON)
+option(PARTIO_BUILD_DOCS "Enable partio's documentation" ON)
 
 # Enable C++11
 if (DEFINED ENV{CXXFLAGS_STD})
     set(CXXFLAGS_STD $ENV{CXXFLAGS_STD})
 else()
-    set(CXXFLAGS_STD "c++14")
+    set(CXXFLAGS_STD "c++17")
 endif()
 # Transform "c++17" into "17".  "-1" means "rest of the string".
 if (NOT DEFINED WDAS_CXX_STANDARD)
@@ -76,16 +79,16 @@
 ## Setup platform specific helper defines build variants
 if (WIN32)
     if (MSVC)
-        add_definitions(-DPARTIO_WIN32)
+        add_compile_definitions(PARTIO_WIN32)
     endif()
-    add_definitions(-D_USE_MATH_DEFINES)
+    add_compile_definitions(_USE_MATH_DEFINES)
 else()
     add_compile_options(-Wextra -Wno-unused-parameter)
 endif()
 
 if (APPLE)
   set(CMAKE_SHARED_LINKER_FLAGS "-undefined dynamic_lookup")
-  add_definitions(-DGL_SILENCE_DEPRECATION)
+  add_compile_definitions(GL_SILENCE_DEPRECATION)
 endif()
 
 if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
@@ -119,30 +122,33 @@
 
 ## Search for useful libraries
 find_package(Threads REQUIRED)
-find_package(GLUT REQUIRED)
-find_package(OpenGL REQUIRED)
-find_package(Python REQUIRED COMPONENTS Interpreter Development)
+
+set(PARTIO_LIBRARIES partio)
 find_package(ZLIB)
 if (ZLIB_FOUND)
-    add_definitions(-DPARTIO_USE_ZLIB)
-else()
-    set(ZLIB_LIBRARY "")
+    add_compile_definitions(PARTIO_USE_ZLIB)
+    list(APPEND PARTIO_LIBRARIES ZLIB::ZLIB)
 endif()
 
-# Make modules able to see partio library
-set(PARTIO_LIBRARIES partio ${ZLIB_LIBRARY})
+if (PARTIO_BUILD_PYTHON)
+    find_package(Python REQUIRED COMPONENTS Interpreter Development)
+endif()
 
 ## Traverse subdirectories
 add_subdirectory(src/lib)
-add_subdirectory(src/tools)
-add_subdirectory(src/py)
-add_subdirectory(src/doc)
-
-if (${PARTIO_GTEST_ENABLED})
-    set(GTEST_LOCATION "/usr" CACHE STRING "gtest installation prefix")
-    set(GTEST_INCLUDE_PATH ${GTEST_LOCATION}/include)
-    set(GTEST_LIBDIR ${CMAKE_INSTALL_LIBDIR})
-    set(GTEST_LINK_PATH ${GTEST_LOCATION}/${GTEST_LIBDIR} CACHE STRING "gtest 
library directory")
+if (PARTIO_BUILD_TOOLS)
+    find_package(GLUT REQUIRED)
+    find_package(OpenGL REQUIRED)
+    add_subdirectory(src/tools)
+endif()
+if (PARTIO_BUILD_PYTHON)
+    add_subdirectory(src/py)
+endif()
+if (PARTIO_BUILD_DOCS)
+    add_subdirectory(src/doc)
+endif()
 
+find_package(GTest)
+if (GTest_FOUND AND PARTIO_ENABLE_TESTING)
     add_subdirectory(src/tests)
 endif()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/partio-1.19.0/Makefile new/partio-1.20.0/Makefile
--- old/partio-1.19.0/Makefile  2025-01-28 23:44:08.000000000 +0100
+++ new/partio-1.20.0/Makefile  2025-11-19 01:27:49.000000000 +0100
@@ -12,6 +12,11 @@
 #DESTDIR =
 
 CMAKE_FLAGS =
+
+NINJA_OK := $(shell type ninja >/dev/null 2>&1 && echo 1)
+ifeq ($(NINJA_OK),1)
+    CMAKE_FLAGS += -G Ninja
+endif
 # Allow out-of-band customization
 -include Makefile.config
 
@@ -23,41 +28,31 @@
 # Installation location: prefix=<path>
 CMAKE_FLAGS += -DCMAKE_INSTALL_PREFIX=$(prefix)
 
-# gtest location: RP_gtest=<path>
-ifdef RP_gtest
-    CMAKE_FLAGS += -DGTEST_LOCATION=$(RP_gtest)
-    CMAKE_FLAGS += -DPARTIO_GTEST_ENABLED=1
-endif
-
 # Extra cmake flags: CMAKE_EXTRA_FLAGS=<flags>
 ifdef CMAKE_EXTRA_FLAGS
     CMAKE_FLAGS += $(CMAKE_EXTRA_FLAGS)
 endif
 
-ifdef RP_zlib
-    CMAKE_FLAGS += -DZLIB_INCLUDE_DIR=$(RP_zlib)/include
-    CMAKE_FLAGS += -DZLIB_LIBRARY_RELEASE=$(RP_zlib)/$(lib)/libz.so
-endif
+cmake_ready = $(builddir)/cmake.ready
 
 # The default target in this Makefile is...
 all::
 
 install: all
-       $(MAKE) -C $(builddir) DESTDIR=$(DESTDIR) install
+       cmake --build $(builddir) --target install
 
 test: all
-       $(MAKE) -C $(builddir) DESTDIR=$(DESTDIR) test
+       cmake --build $(builddir) --target test
 
-doc: $(builddir)/stamp
-       $(MAKE) -C $(builddir) DESTDIR=$(DESTDIR) doc
+doc: $(cmake_ready)
+       cmake --build $(builddir) --target doc
 
-$(builddir)/stamp:
-       mkdir -p $(builddir)
-       cd $(builddir) && cmake $(CMAKE_FLAGS) ../..
-       touch $@
+all:: $(cmake_ready)
+       cmake --build $(builddir) --target all
 
-all:: $(builddir)/stamp
-       $(MAKE) -C $(builddir) $(MAKEARGS) all
+clean: $(cmake_ready)
+       cmake --build $(builddir) --target clean
 
-clean: $(builddir)/stamp
-       $(MAKE) -C $(builddir) $(MAKEARGS) clean
+$(cmake_ready):
+       cmake -S . -B $(builddir) $(CMAKE_FLAGS)
+       touch $@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/partio-1.19.0/src/Makefile 
new/partio-1.20.0/src/Makefile
--- old/partio-1.19.0/src/Makefile      2025-01-28 23:44:08.000000000 +0100
+++ new/partio-1.20.0/src/Makefile      1970-01-01 01:00:00.000000000 +0100
@@ -1,28 +0,0 @@
-CXX=g++
-CXXFLAGS=-g -I/opt/local/include  -fPIC
-LINKFLAGS=
-OBJS=ParticleSimple.o Particle.o DEBUG_PRINT.o  \
-       reader/PDB.o reader/GEO.o reader/BGEO.o
-
-
-
-all: lib partinfo test
-lib: ${OBJS}
-       ${CXX} ${LINKFLAGS} -shared -o libpapi.so ${OBJS}
-partinfo:  lib partinfo.cpp
-       ${CXX} ${LINKFLAGS} -o partinfo libpapi.so partinfo.cpp
-test: lib test.cpp
-       ${CXX} ${LINKFLAGS} -o test libpapi.so test.cpp
-
-ParticleSimple.o: ParticleSimple.cpp ParticleSimple.h Particle.h
-Particle.o: Particle.cpp Particle.h 
-test.o: test.cpp ParticleSimple.h Particle.h
-DEBUG_PRINT.o: DEBUG_PRINT.h DEBUG_PRINT.cpp
-reader/GEO.o: reader/GEO.cpp Particle.h ParticleSimple.h \
-  reader/../Particle.h
-reader/BGEO.o: reader/BGEO.cpp Particle.h ParticleSimple.h \
-  reader/../Particle.h reader/endian.h
-reader/PDB.o: reader/PDB.cpp Particle.h ParticleSimple.h \
-  reader/../Particle.h reader/pdb.h
-partinfo.o: partinfo.cpp Particle.h
-partconvert.o: partconf.cpp Particle.h
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/partio-1.19.0/src/lib/Partio.h 
new/partio-1.20.0/src/lib/Partio.h
--- old/partio-1.19.0/src/lib/Partio.h  2025-01-28 23:44:08.000000000 +0100
+++ new/partio-1.20.0/src/lib/Partio.h  2025-11-19 01:27:49.000000000 +0100
@@ -290,6 +290,7 @@
 //! To copy only the detail attributes, pass particles=false.
 //! If attrNameMap is provided, it is used to rename attributes during cloning.
 ParticlesDataMutable* clone(const ParticlesData&, bool particles=true, const 
std::map<std::string, std::string>* attrNameMap = nullptr);
+ParticlesDataMutable* clone(const ParticlesData&, bool particles, const 
std::map<std::string, std::string>& attrNameMap);
 
 //! Provides read/write access to a particle set stored in a file
 //! freed with p->release()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/partio-1.19.0/src/lib/core/Particle.cpp 
new/partio-1.20.0/src/lib/core/Particle.cpp
--- old/partio-1.19.0/src/lib/core/Particle.cpp 2025-01-28 23:44:08.000000000 
+0100
+++ new/partio-1.20.0/src/lib/core/Particle.cpp 2025-11-19 01:27:49.000000000 
+0100
@@ -164,6 +164,11 @@
     return p;
 }
 
+ParticlesDataMutable*
+clone(const ParticlesData& other, bool particles, const std::map<std::string, 
std::string>& attrNameMap)
+{
+    return clone(other, particles, &attrNameMap);
+}
 
 template<ParticleAttributeType ETYPE> void
 printAttr(const ParticlesData* p,const ParticleAttribute& attr,const int 
particleIndex)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/partio-1.19.0/src/lib/io/PDC.cpp 
new/partio-1.20.0/src/lib/io/PDC.cpp
--- old/partio-1.19.0/src/lib/io/PDC.cpp        2025-01-28 23:44:08.000000000 
+0100
+++ new/partio-1.20.0/src/lib/io/PDC.cpp        2025-11-19 01:27:49.000000000 
+0100
@@ -42,6 +42,18 @@
 #include "PartioEndian.h"
 #include "io.h"
 
+namespace {
+std::string readName(std::istream& input){
+    int nameLen = 0;
+    Partio::read<Partio::BIGEND>(input, nameLen);
+    char* name = new char[nameLen];
+    input.read(name, nameLen);
+    std::string result(name, name+nameLen);
+    delete [] name;
+    return result;
+}
+}
+
 namespace Partio{
 
 using namespace std;
@@ -58,16 +70,6 @@
     int numAttrs;
 } PDC_HEADER;
 
-string readName(istream& input){
-    int nameLen = 0;
-    read<BIGEND>(input, nameLen);
-    char* name = new char[nameLen];
-    input.read(name, nameLen);
-    string result(name, name+nameLen);
-    delete [] name;
-    return result;
-}
-
 ParticlesDataMutable* readPDC(const char* filename, const bool 
headersOnly,std::ostream* errorStream){
 
     unique_ptr<istream> input(io::unzip(filename));
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/partio-1.19.0/src/lib/io/PRT.cpp 
new/partio-1.20.0/src/lib/io/PRT.cpp
--- old/partio-1.19.0/src/lib/io/PRT.cpp        2025-01-28 23:44:08.000000000 
+0100
+++ new/partio-1.20.0/src/lib/io/PRT.cpp        2025-11-19 01:27:49.000000000 
+0100
@@ -38,6 +38,7 @@
 
 
 */
+#include <iostream>
 #ifndef PARTIO_WIN32
 #ifdef PARTIO_USE_ZLIB
 #include "../Partio.h"
@@ -427,7 +428,6 @@
 }
 #else
 #include "../Partio.h"
-#include <iostream>
 #include <fstream>
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/partio-1.19.0/src/lib/io/ZIP.cpp 
new/partio-1.20.0/src/lib/io/ZIP.cpp
--- old/partio-1.19.0/src/lib/io/ZIP.cpp        2025-01-28 23:44:08.000000000 
+0100
+++ new/partio-1.20.0/src/lib/io/ZIP.cpp        2025-11-19 01:27:49.000000000 
+0100
@@ -163,7 +163,6 @@
 
     bool Read(std::istream& istream,const bool global)
     {unsigned int sig;
-    unsigned short version,flags;
     // read and check for local/global magic
     if(global){
         Read_Primitive(istream,sig);
@@ -399,7 +398,10 @@
     {if(pptr() && pptr()>pbase()) return process(false);return 0;}
 
     virtual int underflow()
-    {std::runtime_error("Attempt to read write only ostream");return 0;}
+    {
+        std::cerr << "error: Partio::ZipStreambufCompress attempted to read a 
write-only ostream" << std::endl;
+        return 0;
+    }
 
     virtual int overflow(int c=EOF)
     {if(c!=EOF){*pptr()=static_cast<char>(c);pbump(1);}
@@ -517,9 +519,9 @@
     unsigned int read_size_before_comment=22;
     std::streamoff read_start=max_comment_size+read_size_before_comment;
     if(read_start>end_position) read_start=end_position;
+    if(read_start<=0){std::cerr<<"ZIP: Invalid read buffer 
size"<<std::endl;return false;}
     istream.seekg(end_position-read_start);
     char *buf=new char[static_cast<unsigned int>(read_start)];
-    if(read_start<=0){std::cerr<<"ZIP: Invalid read buffer 
size"<<std::endl;return false;}
     istream.read(buf,read_start);
     int found=-1;
     for(unsigned int i=0;i<read_start-3;i++){
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/partio-1.19.0/src/py/partio.i 
new/partio-1.20.0/src/py/partio.i
--- old/partio-1.19.0/src/py/partio.i   2025-01-28 23:44:08.000000000 +0100
+++ new/partio-1.20.0/src/py/partio.i   2025-11-19 01:27:49.000000000 +0100
@@ -638,7 +638,13 @@
 
 %feature("autodoc");
 %feature("docstring","Clone a particle set");
-ParticlesDataMutable* clone(const ParticlesData& other, bool particles, const 
std::map<std::string, std::string>* attrNameMap=nullptr);
+ParticlesDataMutable* clone(const ParticlesData& other, bool particles, const 
std::map<std::string, std::string>& attrNameMap);
+
+%pythoncode %{
+def clone(self, particles=True, attrNameMap=None):
+    """Clone a particle set"""
+    return _partio.clone(self, particles, attrNameMap or {})
+%}
 
 %feature("autodoc");
 %feature("docstring","Return string name of given attribute type");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/partio-1.19.0/src/tests/CMakeLists.txt 
new/partio-1.20.0/src/tests/CMakeLists.txt
--- old/partio-1.19.0/src/tests/CMakeLists.txt  2025-01-28 23:44:08.000000000 
+0100
+++ new/partio-1.20.0/src/tests/CMakeLists.txt  2025-11-19 01:27:49.000000000 
+0100
@@ -32,25 +32,16 @@
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
 
 set(CMAKE_INSTALL_PARTIO_TESTDIR ${CMAKE_INSTALL_DATAROOTDIR}/partio/test)
-find_library(GTEST_LIB gtest HINTS ${GTEST_LINK_PATH})
  
-if ("${GTEST_LIB}" STREQUAL "GTEST_LIB-NOTFOUND")
-    message(STATUS "${GTEST_LIB} not found in ${GTEST_LINK_PATH}, tests 
disabled")
-else()
- 
-    foreach(item testiterator testio testcache testclonecopy testcluster 
teststr makecircle makeline testkdtree testmerge)
-        add_executable(${item} "${item}.cpp")
-        target_include_directories(${item} PRIVATE ${GTEST_INCLUDE_PATH})
-        target_link_libraries(
-            ${item} ${PARTIO_LIBRARIES} ${GTEST_LIB} Threads::Threads)
-        target_compile_definitions(${item} PRIVATE 
-DPARTIO_DATA_DIR="${PROJECT_SOURCE_DIR}/src/data")
-        target_link_directories(${item} PRIVATE ${GTEST_LINK_PATH})
-        install(TARGETS ${item} DESTINATION ${CMAKE_INSTALL_PARTIO_TESTDIR})
-        add_test(NAME ${item} COMMAND ${item})
-    endforeach(item)
+foreach(item testiterator testio testcache testclonecopy testcluster teststr 
makecircle makeline testkdtree testmerge)
+    add_executable(${item} "${item}.cpp")
+    target_link_libraries(${item} ${PARTIO_LIBRARIES} GTest::gtest 
Threads::Threads)
+    target_compile_definitions(${item} PRIVATE 
-DPARTIO_DATA_DIR="${PROJECT_SOURCE_DIR}/src/data")
+    install(TARGETS ${item} DESTINATION ${CMAKE_INSTALL_PARTIO_TESTDIR})
+    add_test(NAME ${item} COMMAND ${item})
+endforeach(item)
 
-    foreach(item testpartjson testpartio)
-        add_test(NAME ${item} COMMAND ${Python_EXECUTABLE} -B 
${CMAKE_CURRENT_SOURCE_DIR}/${item}.py)
-        install(PROGRAMS ${item}.py DESTINATION 
${CMAKE_INSTALL_PARTIO_TESTDIR} RENAME ${item})
-    endforeach(item)
-endif()
+foreach(item testpartjson testpartio)
+    add_test(NAME ${item} COMMAND ${Python_EXECUTABLE} -B 
${CMAKE_CURRENT_SOURCE_DIR}/${item}.py)
+    install(PROGRAMS ${item}.py DESTINATION ${CMAKE_INSTALL_PARTIO_TESTDIR} 
RENAME ${item})
+endforeach(item)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/partio-1.19.0/src/tests/testpartjson.py 
new/partio-1.20.0/src/tests/testpartjson.py
--- old/partio-1.19.0/src/tests/testpartjson.py 2025-01-28 23:44:08.000000000 
+0100
+++ new/partio-1.20.0/src/tests/testpartjson.py 2025-11-19 01:27:49.000000000 
+0100
@@ -18,7 +18,7 @@
         json1 = partjson.toJson(particleSet)
         particleSet2 = partjson.fromJson(json1)
         json2 = partjson.toJson(particleSet2)
-        self.assertEquals(json1, json2)
+        self.assertEqual(json1, json2)
 
 if __name__ == '__main__':
     unittest.main()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/partio-1.19.0/src/tools/CMakeLists.txt 
new/partio-1.20.0/src/tools/CMakeLists.txt
--- old/partio-1.19.0/src/tools/CMakeLists.txt  2025-01-28 23:44:08.000000000 
+0100
+++ new/partio-1.20.0/src/tools/CMakeLists.txt  2025-11-19 01:27:49.000000000 
+0100
@@ -67,5 +67,7 @@
 install(PROGRAMS partjson.py DESTINATION ${CMAKE_INSTALL_BINDIR} RENAME 
partjson)
 install(PROGRAMS partinspect.py DESTINATION ${CMAKE_INSTALL_BINDIR} RENAME 
partinspect)
 
-set(PYTHON_DEST 
"${CMAKE_INSTALL_LIBDIR}/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/site-packages"
 )
-install(FILES partedit.py partjson.py partinspect.py DESTINATION 
${PYTHON_DEST})
+if (PARTIO_BUILD_PYTHON)
+    set(PYTHON_DEST 
"${CMAKE_INSTALL_LIBDIR}/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/site-packages"
 )
+    install(FILES partedit.py partjson.py partinspect.py DESTINATION 
${PYTHON_DEST})
+endif()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/partio-1.19.0/src/tools/partedit.py 
new/partio-1.20.0/src/tools/partedit.py
--- old/partio-1.19.0/src/tools/partedit.py     2025-01-28 23:44:08.000000000 
+0100
+++ new/partio-1.20.0/src/tools/partedit.py     2025-11-19 01:27:49.000000000 
+0100
@@ -23,8 +23,9 @@
 # - delete fixed attribute
 # - rename fixed attribute
 
-import os, sys, math
-import partio
+import math
+import os
+import sys
 
 # pylint:disable=E0611,E0401
 from Qt.QtGui import QKeySequence, QIcon, QIntValidator, QDoubleValidator, 
QFontMetrics
@@ -32,8 +33,10 @@
     QPushButton, QTableWidget, QLabel, QWidget, QVBoxLayout, QHeaderView,\
     QHBoxLayout, QLineEdit, QFileDialog, QFrame, QDialog, QFormLayout, \
     QComboBox, QCheckBox, QTableWidgetItem, QSplitter, QSizePolicy
-from Qt.QtCore import Qt, QSize, QObject#, pyqtSignal
-from PyQt5.QtCore import pyqtSignal
+from Qt.QtCore import Qt, QSize, QObject, Signal
+
+import partio
+
 
 
#------------------------------------------------------------------------------_
 _attrTypes = [partio.NONE, partio.VECTOR, partio.FLOAT, partio.INT, 
partio.INDEXEDSTR]
@@ -107,11 +110,11 @@
 class ParticleData(QObject):
     """ UI Controller class for partio data """
 
-    particleAdded = pyqtSignal(int)
-    attributeAdded = pyqtSignal(str)
-    fixedAttributeAdded = pyqtSignal(str)
-    dataReset = pyqtSignal()
-    dirtied = pyqtSignal(bool)
+    particleAdded = Signal(int)
+    attributeAdded = Signal(str)
+    fixedAttributeAdded = Signal(str)
+    dataReset = Signal()
+    dirtied = Signal(bool)
 
     def __init__(self):
         QObject.__init__(self)
@@ -1066,6 +1069,7 @@
                 value = values[i]
             else:
                 value = values[-1]
+                values.append(value)
             if attrType == partio.INT or attrType == partio.INDEXEDSTR:
                 values[i] = int(value)
             elif attrType == partio.FLOAT or attrType == partio.VECTOR:
@@ -1079,8 +1083,7 @@
     #--------------------------------------------------------------------------
     def dataDirtiedSlot(self, dirty):
         """ Sets the window title with or without "*" for dirty state """
-
-        title = self.data.filename
+        title = self.data.filename or ''
         if dirty:
             title += '*'
         self.setWindowTitle(title)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/partio-1.19.0/src/tools/partinfo.cpp 
new/partio-1.20.0/src/tools/partinfo.cpp
--- old/partio-1.19.0/src/tools/partinfo.cpp    2025-01-28 23:44:08.000000000 
+0100
+++ new/partio-1.20.0/src/tools/partinfo.cpp    2025-11-19 01:27:49.000000000 
+0100
@@ -64,7 +64,7 @@
                 if (ii)
                     std::cout << ", ";
                 if (attr.type == Partio::INDEXEDSTR) {
-                    int val = p->data<int>(attr, particleIndex)[ii];
+                    size_t val = p->data<int>(attr, particleIndex)[ii];
                     std::cout << val << "=";
                     if (val < p->indexedStrs(attr).size()) {
                         std::cout << "'" << p->indexedStrs(attr)[val] << "'";

Reply via email to