File plplot-numpy-2.0-compat.patch of Package plplot
From 0bf0fe35c044326c6720e14c7ab3df8c55868f2a Mon Sep 17 00:00:00 2001
From: Jan Kohnert <jan@jan-kohnert.de>
Date: Sun, 14 Jul 2024 14:46:48 +0200
Subject: [PATCH] Patch to make PLplot work with Numpy-2.0.0.
---
.gitignore | 4 ++++
bindings/python/Pltk_init.i | 2 +-
bindings/python/plplotc.i | 2 +-
cmake/modules/python.cmake | 12 +++++-------
examples/python/x08.py | 6 +++---
examples/python/x21.py | 8 ++++----
examples/python/x33.py | 24 ++++++++++++------------
7 files changed, 30 insertions(+), 28 deletions(-)
Index: plplot-5.15.0/.gitignore
===================================================================
--- plplot-5.15.0.orig/.gitignore
+++ plplot-5.15.0/.gitignore
@@ -29,3 +29,7 @@ tmp/
# Ignore Mac OS X generated file/directory attribute storage files
\.DS_Store
\._\.DS_Store
+
+# Ignore CLion config/buils directory
+.idea/
+cmake-build-debug/
Index: plplot-5.15.0/bindings/python/Pltk_init.i
===================================================================
--- plplot-5.15.0.orig/bindings/python/Pltk_init.i
+++ plplot-5.15.0/bindings/python/Pltk_init.i
@@ -24,7 +24,7 @@
%{
#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION
#include <Python.h>
-#include <arrayobject.h>
+#include <numpy/arrayobject.h>
#include "plplot.h"
#include "plplotP.h"
Index: plplot-5.15.0/bindings/python/plplotc.i
===================================================================
--- plplot-5.15.0.orig/bindings/python/plplotc.i
+++ plplot-5.15.0/bindings/python/plplotc.i
@@ -46,7 +46,7 @@
%{
#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION
-#include <arrayobject.h>
+#include <numpy/arrayobject.h>
#include "plplot.h"
#include "plplotP.h"
Index: plplot-5.15.0/cmake/modules/python.cmake
===================================================================
--- plplot-5.15.0.orig/cmake/modules/python.cmake
+++ plplot-5.15.0/cmake/modules/python.cmake
@@ -107,20 +107,18 @@ if(ENABLE_python)
execute_process(
COMMAND
${PYTHON_EXECUTABLE} -c "import numpy; print(numpy.get_include())"
- OUTPUT_VARIABLE NUMPY_INCLUDE_PATH_PARENT
+ OUTPUT_VARIABLE NUMPY_GET_INCLUDE
RESULT_VARIABLE NUMPY_ERR
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(NUMPY_ERR)
set(NUMPY_INCLUDE_PATH)
else(NUMPY_ERR)
- # We use the full path name (including numpy on the end), but
- # Double-check that all is well with that choice.
find_path(
- NUMPY_INCLUDE_PATH
- arrayobject.h
- ${NUMPY_INCLUDE_PATH_PARENT}/numpy
- )
+ NUMPY_INCLUDE_PATH
+ numpy/arrayobject.h
+ ${NUMPY_GET_INCLUDE}
+ )
endif(NUMPY_ERR)
endif(NOT NUMPY_INCLUDE_PATH)
Index: plplot-5.15.0/examples/python/x08.py
===================================================================
--- plplot-5.15.0.orig/examples/python/x08.py
+++ plplot-5.15.0/examples/python/x08.py
@@ -104,13 +104,13 @@ def main(w):
y0 = 0.5*(YPTS - 1)
b = 0.7*y0
for i in range(indexxmin, indexxmax):
- square_root = sqrt(1. - min(1., ((double(i) - x0)/a)**2))
+ square_root = sqrt(1. - min([1., ((double(i) - x0)/a**2)]))
# Add 0.5 to find nearest integer and therefore preserve symmetry
# with regard to lower and upper bound of y range.
- indexymin[i] = max(0, int(0.5 + y0 - b*square_root))
+ indexymin[i] = max([0, int(0.5 + y0 - b*square_root)])
# indexymax calculated with the convention that it is 1
# greater than highest valid index.
- indexymax[i] = min(YPTS, 1 + int(0.5 + y0 + b*square_root))
+ indexymax[i] = min([YPTS, 1 + int(0.5 + y0 + b*square_root)])
zlimited[i][indexymin[i]:indexymax[i]] = z[i][indexymin[i]:indexymax[i]]
w.pllightsource(1., 1., 1.)
Index: plplot-5.15.0/examples/python/x21.py
===================================================================
--- plplot-5.15.0.orig/examples/python/x21.py
+++ plplot-5.15.0/examples/python/x21.py
@@ -131,8 +131,8 @@ def main(w):
if isnan(zg[i][j]):
zg[i][j] = 0.0
dist = 0.0
- for ii in range(max(i-1,0),min(i+2,xp)):
- for jj in range(max(j-1,0),min(j+2,yp)):
+ for ii in range(max([i-1,0]),min([i+2,xp])):
+ for jj in range(max([j-1,0]),min([j+2,yp])):
if (not isnan(zg[ii][jj])):
d = abs(ii-i) + abs(jj-j)
if (d != 1.0) :
@@ -148,8 +148,8 @@ def main(w):
lzM = max(zg.flat)
lzm = min(zg.flat)
- lzm = min(lzm,zmin)
- lzM = max(lzM,zmax)
+ lzm = min([lzm,zmin])
+ lzM = max([lzM,zmax])
lzm = lzm - 0.01
lzM = lzM + 0.01
Index: plplot-5.15.0/examples/python/x33.py
===================================================================
--- plplot-5.15.0.orig/examples/python/x33.py
+++ plplot-5.15.0/examples/python/x33.py
@@ -435,7 +435,7 @@ def main(w):
nlegend += 1
else:
nlegend -= 1
- nlegend = max(1, nlegend)
+ nlegend = max([1, nlegend])
opt_array = zeros(nlegend, "int")
text_colors = zeros(nlegend, "int")
text = zeros(nlegend, "S200")
@@ -469,12 +469,12 @@ def main(w):
w.plsfont(w.PL_FCI_MONO, -1, -1)
w.plscol0a( 15, 32, 32, 32, 0.70 )
- nrow = min(3, nlegend)
+ nrow = min([3, nlegend])
ncolumn = 0
(legend_width, legend_height) = \
w.pllegend( opt, position, x, y,
- 0.025, 15, 1, 1, nrow, ncolumn, opt_array, 1.0, 1.0, 1.5,
+ 0.025, 15, 1, 1, int(nrow), ncolumn, opt_array, 1.0, 1.0, 1.5,
1., text_colors, text,
box_colors, box_patterns, box_scales, box_line_widths,
line_colors, line_styles, line_widths,
@@ -572,7 +572,7 @@ def main(w):
box_colors, box_patterns, box_scales, box_line_widths,
line_colors, line_styles, line_widths,
symbol_colors, symbol_scales, symbol_numbers, symbols )
- max_height = max(max_height, legend_height)
+ max_height = max([max_height, legend_height])
# Set up symbol legend entries with various symbols.
for i in range(nlegend):
@@ -595,7 +595,7 @@ def main(w):
box_colors, box_patterns, box_scales, box_line_widths,
line_colors, line_styles, line_widths,
symbol_colors, symbol_scales, symbol_numbers, symbols )
- max_height = max(max_height, legend_height)
+ max_height = max([max_height, legend_height])
# Set up symbol legend entries with various numbers of symbols.
for i in range(nlegend):
@@ -617,7 +617,7 @@ def main(w):
box_colors, box_patterns, box_scales, box_line_widths,
line_colors, line_styles, line_widths,
symbol_colors, symbol_scales, symbol_numbers, symbols )
- max_height = max(max_height, legend_height)
+ max_height = max([max_height, legend_height])
# Set up box legend entries with various colours.
for i in range(nlegend):
@@ -642,7 +642,7 @@ def main(w):
box_colors, box_patterns, box_scales, box_line_widths,
line_colors, line_styles, line_widths,
symbol_colors, symbol_scales, symbol_numbers, symbols )
- max_height = max(max_height, legend_height)
+ max_height = max([max_height, legend_height])
# Set up box legend entries with various patterns.
for i in range(nlegend):
@@ -664,7 +664,7 @@ def main(w):
box_colors, box_patterns, box_scales, box_line_widths,
line_colors, line_styles, line_widths,
symbol_colors, symbol_scales, symbol_numbers, symbols )
- max_height = max(max_height, legend_height)
+ max_height = max([max_height, legend_height])
# Set up box legend entries with various box pattern line widths.
for i in range(nlegend):
@@ -686,7 +686,7 @@ def main(w):
box_colors, box_patterns, box_scales, box_line_widths,
line_colors, line_styles, line_widths,
symbol_colors, symbol_scales, symbol_numbers, symbols )
- max_height = max(max_height, legend_height)
+ max_height = max([max_height, legend_height])
# Set up line legend entries with various colours.
for i in range(nlegend):
@@ -710,7 +710,7 @@ def main(w):
box_colors, box_patterns, box_scales, box_line_widths,
line_colors, line_styles, line_widths,
symbol_colors, symbol_scales, symbol_numbers, symbols )
- max_height = max(max_height, legend_height)
+ max_height = max([max_height, legend_height])
# Set up line legend entries with various styles
for i in range(nlegend):
@@ -731,7 +731,7 @@ def main(w):
box_colors, box_patterns, box_scales, box_line_widths,
line_colors, line_styles, line_widths,
symbol_colors, symbol_scales, symbol_numbers, symbols )
- max_height = max(max_height, legend_height)
+ max_height = max([max_height, legend_height])
# Set up line legend entries with various widths.
for i in range(nlegend):
@@ -752,7 +752,7 @@ def main(w):
box_colors, box_patterns, box_scales, box_line_widths,
line_colors, line_styles, line_widths,
symbol_colors, symbol_scales, symbol_numbers, symbols )
- max_height = max(max_height, legend_height)
+ max_height = max([max_height, legend_height])
# Color bar examples
values_small = [ -1.0e-20, 1.0e-20 ]