From 4fbab87edb6d9986aa1e46b93dfa1d62e3748e13 Mon Sep 17 00:00:00 2001 From: Haoyang Wu Date: Fri, 9 Aug 2024 16:50:49 +0800 Subject: [PATCH 01/11] Fix multi-threading runtime library problem on Windows with MSVC --- CMakeLists.txt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5e50ae94..6ca409bd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,10 +1,18 @@ cmake_minimum_required(VERSION 3.10) +# https://discourse.cmake.org/t/msvc-runtime-library-completely-ignored/10004 +cmake_policy(SET CMP0091 NEW) + project(Bindings DESCRIPTION "Python bindings" ) +# MSVC needs explicit configuration for multithreading +# Select a multi-threaded statically-linked runtime library +# with or without debug information depending on the configuration +set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>") + set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) From 231d0f797e4f56862b6d396d9a9c8a2ffc409587 Mon Sep 17 00:00:00 2001 From: Oded Stein Date: Tue, 10 Sep 2024 10:45:37 -0700 Subject: [PATCH 02/11] starting work on fixing numpy/scipy incompatibilities --- pyproject.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 25e13a52..27d126c2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -2,8 +2,8 @@ build-verbosity = "3" [build-system] requires = [ - "numpy<=1.96.0", - "scipy", + "numpy>=1.16.5,<2.2", + "scipy>=1.6,<1.15", "setuptools>=42", "wheel", "cmake>=3.16", From f22e1d4aa7ac4f78367436cc353bc0411b06a43e Mon Sep 17 00:00:00 2001 From: Oded Stein Date: Tue, 10 Sep 2024 10:53:54 -0700 Subject: [PATCH 03/11] we support Python 3.6, adjusted scipy for that --- pyproject.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 27d126c2..8508d026 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -2,8 +2,8 @@ build-verbosity = "3" [build-system] requires = [ - "numpy>=1.16.5,<2.2", - "scipy>=1.6,<1.15", + "numpy>=1.14.5,<2.2", + "scipy>=1.5,<1.15", "setuptools>=42", "wheel", "cmake>=3.16", From 2ff3a634fd299059bd2c4a0c23648635f7808646 Mon Sep 17 00:00:00 2001 From: Oded Stein Date: Tue, 10 Sep 2024 11:23:52 -0700 Subject: [PATCH 04/11] np inf --- test/test_minimum_distance.py | 2 +- test/test_ray_mesh_intersect.py | 8 ++++---- test/test_ray_polyline_intersect.py | 2 +- test/test_ray_triangle_intersect.py | 4 ++-- test/test_traverse_aabbtree.py | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/test/test_minimum_distance.py b/test/test_minimum_distance.py index bb6bd9c6..26fcfd05 100644 --- a/test/test_minimum_distance.py +++ b/test/test_minimum_distance.py @@ -17,7 +17,7 @@ def test_cube(self): U2[:,j] += random_displacements[i] dist = gpytoolbox.minimum_distance(V,F,U2,G) # self.assertTrue(np.isclose(dist,0.0,atol=1e-2)) - dist_gt = np.clip(random_displacements[i]-1,0,np.Inf) + dist_gt = np.clip(random_displacements[i]-1,0,np.inf) # print(dist_gt,dist) self.assertTrue(np.isclose(dist,dist_gt,atol=1e-4)) def test_bunny_faces(self): diff --git a/test/test_ray_mesh_intersect.py b/test/test_ray_mesh_intersect.py index 98a453eb..1235cd98 100644 --- a/test/test_ray_mesh_intersect.py +++ b/test/test_ray_mesh_intersect.py @@ -28,11 +28,11 @@ def test_if_no_hit(self): cam_pos = np.array([[2,2.0,0.1],[0,2.2,2.0]]) cam_dir = np.array([[0,0,-1],[1,0,0]]) t, ids, l = gpytoolbox.ray_mesh_intersect(cam_pos,cam_dir,v,f) - self.assertTrue((t==np.Inf).all()) + self.assertTrue((t==np.inf).all()) self.assertTrue((ids==-1).all()) self.assertTrue((l==0.0).all()) t, ids, l = gpytoolbox.ray_mesh_intersect(cam_pos,cam_dir,v,f,use_embree=False) - self.assertTrue((t==np.Inf).all()) + self.assertTrue((t==np.inf).all()) self.assertTrue((ids==-1).all()) self.assertTrue((l==0.0).all()) def test_embree_vs_no_embree(self): @@ -49,8 +49,8 @@ def test_embree_vs_no_embree(self): te, idse, le = gpytoolbox.ray_mesh_intersect(cam_pos,-cam_pos,v,f,use_embree=True) t, ids, l = gpytoolbox.ray_mesh_intersect(cam_pos,-cam_pos,v,f,use_embree=False) # To compare - t[t==np.Inf] = 0. - te[te==np.Inf] = 0. + t[t==np.inf] = 0. + te[te==np.inf] = 0. # print(t) # print(te) self.assertTrue(np.isclose(te-t,0,atol=1e-4).all()) diff --git a/test/test_ray_polyline_intersect.py b/test/test_ray_polyline_intersect.py index 37efd615..704c5a49 100644 --- a/test/test_ray_polyline_intersect.py +++ b/test/test_ray_polyline_intersect.py @@ -29,7 +29,7 @@ def test_rays_against_square_2d(self): # There should be no intersection x, n, ind = gpytoolbox.ray_polyline_intersect(cam_pos,cam_dir,V) # if no intersection, x is infinity and n is zero - self.assertTrue((np.isclose(x,np.array([np.Inf,np.Inf]))).all()) + self.assertTrue((np.isclose(x,np.array([np.inf,np.inf]))).all()) self.assertTrue((np.isclose(n,np.array([0.0, 0.0]))).all()) # Index is -1 self.assertTrue(ind==-1) diff --git a/test/test_ray_triangle_intersect.py b/test/test_ray_triangle_intersect.py index 77f7397c..e8f56c9c 100644 --- a/test/test_ray_triangle_intersect.py +++ b/test/test_ray_triangle_intersect.py @@ -16,12 +16,12 @@ def test_against_embree(self): t,is_hit,hit_coord = gpytoolbox.ray_triangle_intersect(origin,dir,v1,v2,v3) F = np.array([[0,1,2]]) t2,_,lmb = gpytoolbox.ray_mesh_intersect(origin[None,:],dir[None,:],V,F) - if t2 Date: Tue, 10 Sep 2024 11:46:44 -0700 Subject: [PATCH 05/11] more inf --- src/gpytoolbox/approximate_hausdorff_distance.py | 4 ++-- src/gpytoolbox/minimum_distance.py | 2 +- src/gpytoolbox/ray_box_intersect.py | 2 +- src/gpytoolbox/ray_mesh_intersect.py | 4 ++-- src/gpytoolbox/ray_polyline_intersect.py | 4 ++-- src/gpytoolbox/ray_triangle_intersect.py | 16 ++++++++-------- src/gpytoolbox/reach_for_the_arcs.py | 16 ++++++++-------- src/gpytoolbox/reach_for_the_spheres.py | 14 +++++++------- src/gpytoolbox/squared_distance.py | 6 +++--- src/gpytoolbox/traverse_aabbtree.py | 2 +- 10 files changed, 35 insertions(+), 35 deletions(-) diff --git a/src/gpytoolbox/approximate_hausdorff_distance.py b/src/gpytoolbox/approximate_hausdorff_distance.py index caa1ff7b..7b9528b6 100644 --- a/src/gpytoolbox/approximate_hausdorff_distance.py +++ b/src/gpytoolbox/approximate_hausdorff_distance.py @@ -69,7 +69,7 @@ def approximate_hausdorff_distance(v1,f1,v2,f2,use_cpp=True): current_best_guess_hd = 0.0 for i in range(v1.shape[0]): # print("Vertex %d of %d" % (i+1,v1.shape[0])) - current_best_guess_dviB = np.Inf # current best guess for d(vi,B) + current_best_guess_dviB = np.inf # current best guess for d(vi,B) queue = [0] while (len(queue)>0 and current_best_guess_dviB>current_best_guess_hd): @@ -108,7 +108,7 @@ def approximate_hausdorff_distance(v1,f1,v2,f2,use_cpp=True): # Now we do the other side, i.e., max(d(vB,A)) for i in range(v2.shape[0]): # print("Vertex %d of %d" % (i+1,v2.shape[0])) - current_best_guess_dviA = np.Inf + current_best_guess_dviA = np.inf queue = [0] while (len(queue)>0 and current_best_guess_dviA>current_best_guess_hd): q2 = queue.pop() diff --git a/src/gpytoolbox/minimum_distance.py b/src/gpytoolbox/minimum_distance.py index b21ee4b6..382ca9da 100644 --- a/src/gpytoolbox/minimum_distance.py +++ b/src/gpytoolbox/minimum_distance.py @@ -43,7 +43,7 @@ def minimum_distance(v1,f1,v2,f2): first_queue_pair = [0,0] queue = [first_queue_pair] - current_best_guess = np.Inf + current_best_guess = np.inf while len(queue)>0: q1, q2 = queue.pop() # print("-----------") diff --git a/src/gpytoolbox/ray_box_intersect.py b/src/gpytoolbox/ray_box_intersect.py index 37873ec1..59546726 100644 --- a/src/gpytoolbox/ray_box_intersect.py +++ b/src/gpytoolbox/ray_box_intersect.py @@ -49,7 +49,7 @@ def ray_box_intersect(origin,dir,center,width): whichPlane = 0 minB = center - 0.5*width maxB = center + 0.5*width - hit_coord = np.Inf*np.ones(dim) + hit_coord = np.inf*np.ones(dim) for i in range(dim): if (origin[i] 1): - t = np.Inf - hit = np.Inf*np.ones(3) + t = np.inf + hit = np.inf*np.ones(3) is_hit = False return t,is_hit, hit @@ -79,8 +79,8 @@ def ray_triangle_intersect(origin,dir, v0, v1, v2, return_negative=False): v = np.dot(dir,qvec)*invDet if ((v < 0) or ((u + v) > 1)): - t = np.Inf - hit = np.Inf*np.ones(3) + t = np.inf + hit = np.inf*np.ones(3) is_hit = False return t,is_hit, hit @@ -89,8 +89,8 @@ def ray_triangle_intersect(origin,dir, v0, v1, v2, return_negative=False): is_hit = True if (not return_negative): if(t<0): - t = np.Inf - hit = np.Inf*np.ones(3) + t = np.inf + hit = np.inf*np.ones(3) is_hit = False return t,is_hit, hit diff --git a/src/gpytoolbox/reach_for_the_arcs.py b/src/gpytoolbox/reach_for_the_arcs.py index f788c1ae..85f3e58c 100644 --- a/src/gpytoolbox/reach_for_the_arcs.py +++ b/src/gpytoolbox/reach_for_the_arcs.py @@ -21,7 +21,7 @@ def reach_for_the_arcs(U, S, local_search_iters=20, local_search_t=0.01, tol=1e-4, - clamp_value=np.Inf, + clamp_value=np.inf, force_cpu=False, parallel=False, verbose=False): @@ -68,7 +68,7 @@ def reach_for_the_arcs(U, S, locally make feasible step tol : float, optional (default 1e-4) tolerance for determining whether a point is inside a sphere - clamp_value : float, optional (default np.Inf) + clamp_value : float, optional (default np.inf) value to which the SDF is clamped for clamped SDF reconstruction force_cpu : bool, optional (default False) whether to force rasterization onto the CPU @@ -259,7 +259,7 @@ def _sdf_to_point_cloud(U, S, batch_size=10000, num_rasterization_spheres=0, tol=1e-4, - clamp_value=np.Inf, + clamp_value=np.inf, force_cpu=False, parallel=False, verbose=False): @@ -291,7 +291,7 @@ def _sdf_to_point_cloud(U, S, Set to zero to use all spheres. tol : float, optional (default 1e-4) tolerance for determining whether a point is inside a sphere - clamp_value : float, optional (default np.Inf) + clamp_value : float, optional (default np.inf) value to which the SDF is clamped for clamped SDF reconstruction parallel : bool, optional (default False) whether to parallelize the algorithm or not @@ -461,7 +461,7 @@ def _locally_make_feasible(U, S, P, local_search_iters=20, batch_size=10000, tol=1e-4, - clamp_value=np.Inf, + clamp_value=np.inf, parallel=False, verbose=False): """Given a number of SDF samples and points, tries to make each point @@ -488,7 +488,7 @@ def _locally_make_feasible(U, S, P, how many points in one batch. Set to 0 to disable batching. tol : float, optional (default 1e-4) tolerance for determining whether a point is inside a sphere - clamp_value : float, optional (default np.Inf) + clamp_value : float, optional (default np.inf) value to which the SDF is clamped for clamped SDF reconstruction parallel : bool, optional (default False) whether to parallelize the algorithm or not @@ -557,7 +557,7 @@ def _fine_tune_point_cloud(U, S, P, N, f, local_search_iters=20, local_search_t=0.01, tol=1e-4, - clamp_value=np.Inf, + clamp_value=np.inf, parallel=False, verbose=False): """Improve the point cloud with respect to the SDF such that the @@ -602,7 +602,7 @@ def _fine_tune_point_cloud(U, S, P, N, f, locally make feasible step tol : float, optional (default 1e-4) tolerance for determining whether a point is inside a sphere - clamp_value : float, optional (default np.Inf) + clamp_value : float, optional (default np.inf) value to which the SDF is clamped for clamped SDF reconstruction parallel : bool, optional (default False) whether to parallelize the algorithm or not diff --git a/src/gpytoolbox/reach_for_the_spheres.py b/src/gpytoolbox/reach_for_the_spheres.py index 2984c2c3..f866d58d 100644 --- a/src/gpytoolbox/reach_for_the_spheres.py +++ b/src/gpytoolbox/reach_for_the_spheres.py @@ -496,7 +496,7 @@ def reach_for_the_spheres_iteration(state, 'remesh_iterations':1, 'batch_size':20000, 'fix_boundary':False, - 'clamp':np.Inf, 'pseudosdf_interior':False}, + 'clamp':np.inf, 'pseudosdf_interior':False}, 3: {'max_iter':20000, 'tol':1e-2, 'h':0.2, 'linesearch':True, 'min_t':1e-6, 'max_t':50., 'dt':10., @@ -507,7 +507,7 @@ def reach_for_the_spheres_iteration(state, 'visualize':False, 'batch_size':20000, 'fix_boundary':False, - 'clamp':np.Inf, 'pseudosdf_interior':False} + 'clamp':np.inf, 'pseudosdf_interior':False} } if max_iter is None: max_iter = default_params[dim]['max_iter'] @@ -566,11 +566,11 @@ def reach_for_the_spheres_iteration(state, if state.its is None: state.its = 0 if state.best_performance is None: - state.best_performance = np.Inf + state.best_performance = np.inf if state.convergence_counter is None: state.convergence_counter = 0 if state.best_avg_error is None: - state.best_avg_error = np.Inf + state.best_avg_error = np.inf # if state.use_features is None: # state.use_features = False if state.V_last_converged is None: @@ -699,7 +699,7 @@ def reach_for_the_spheres_iteration(state, if state.h>state.min_h: state.V_last_converged = state.V.copy() state.F_last_converged = state.F.copy() - state.best_avg_error = np.Inf + state.best_avg_error = np.inf state.convergence_counter = 0 state.h = np.maximum(state.h/2,state.min_h) if state.convergence_counter > 100 or F_invalid.shape[0] == 0: @@ -713,9 +713,9 @@ def reach_for_the_spheres_iteration(state, state.U_batch = state.U.copy() state.S_batch = state.S.copy() state.resample_counter += 1 - state.best_performance = np.Inf + state.best_performance = np.inf state.convergence_counter = 0 - state.best_avg_error = np.Inf + state.best_avg_error = np.inf if verbose: print(f"Resampled, I now have {state.U.shape[0]} sample points.") else: diff --git a/src/gpytoolbox/squared_distance.py b/src/gpytoolbox/squared_distance.py index f9f6ef21..af7bcaed 100644 --- a/src/gpytoolbox/squared_distance.py +++ b/src/gpytoolbox/squared_distance.py @@ -11,7 +11,7 @@ def __init__(self,V,F,ptest): self.F = F self.dim = V.shape[1] self.ptest = ptest - self.current_best_guess = np.Inf + self.current_best_guess = np.inf self.current_best_element = -1 self.others = [] self.num_traversal = 0 @@ -19,7 +19,7 @@ def __init__(self,V,F,ptest): # Auxiliary function which finds the distance of point to rectangle def sdBox(self,p,center,width): q = np.abs(p - center) - 0.5*width - maxval = -np.Inf + maxval = -np.inf for i in range(self.dim): maxval = np.maximum(maxval,q[i]) return np.linalg.norm((np.maximum(q,0.0))) + np.minimum(maxval,0.0) @@ -183,7 +183,7 @@ def squared_distance(P,V,F=None,use_cpp=False,use_aabb=False,C=None,W=None,CH=No # Loop over every element t = None for j in range(P.shape[0]): - min_sqrd_dist = np.Inf + min_sqrd_dist = np.inf ind = -1 best_lmb = [] for i in range(F.shape[0]): diff --git a/src/gpytoolbox/traverse_aabbtree.py b/src/gpytoolbox/traverse_aabbtree.py index 8ad7b20b..050f65bb 100644 --- a/src/gpytoolbox/traverse_aabbtree.py +++ b/src/gpytoolbox/traverse_aabbtree.py @@ -40,7 +40,7 @@ class test_closest_point_traversal: def __init__(self,P,ptest): self.P = P self.ptest = ptest - self.current_best_guess = np.Inf + self.current_best_guess = np.inf self.current_best_element = -1 self.others = [] # Auxiliary function which finds the distance of point to rectangle From b32872993a28b8f7f91e9fc060e1c210e2a2fb04 Mon Sep 17 00:00:00 2001 From: Oded Stein Date: Tue, 10 Sep 2024 15:46:08 -0700 Subject: [PATCH 06/11] update nan constant --- src/gpytoolbox/subdivide.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gpytoolbox/subdivide.py b/src/gpytoolbox/subdivide.py index 44a70793..9a087f1c 100644 --- a/src/gpytoolbox/subdivide.py +++ b/src/gpytoolbox/subdivide.py @@ -212,7 +212,7 @@ def _loop_triangle_mesh(V,F,return_matrix): # Compute, for each vertex, the β needed for Loop. n_adj = np.bincount(E.ravel(), minlength=n) n_adj[n_adj==0] = -1 - β = np.where(n_adj<3, np.NAN, np.where(n_adj==3, 3./16., (3./8.)/n_adj)) + β = np.where(n_adj<3, np.nan, np.where(n_adj==3, 3./16., (3./8.)/n_adj)) # We always compute the matrix S since we need it to construct Vu i = np.concatenate(( From 0f61a3f5b85a804b2a70d176863e8870b45bfe81 Mon Sep 17 00:00:00 2001 From: Oded Stein Date: Tue, 10 Sep 2024 17:25:16 -0700 Subject: [PATCH 07/11] bump pybind version and improve biharmonic energy binding --- ext/pybind11 | 2 +- src/gpytoolbox/biharmonic_energy_intrinsic.py | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/ext/pybind11 b/ext/pybind11 index a500f439..7c33cdc2 160000 --- a/ext/pybind11 +++ b/ext/pybind11 @@ -1 +1 @@ -Subproject commit a500f439d06d220ee2c680cdd2c8828eac8e7dfc +Subproject commit 7c33cdc2d39c7b99a122579f53bc94c8eb3332ff diff --git a/src/gpytoolbox/biharmonic_energy_intrinsic.py b/src/gpytoolbox/biharmonic_energy_intrinsic.py index 26c68428..29124eba 100644 --- a/src/gpytoolbox/biharmonic_energy_intrinsic.py +++ b/src/gpytoolbox/biharmonic_energy_intrinsic.py @@ -87,6 +87,8 @@ def _curved_hessian_energy(l_sq, F, n): Q = sp.sparse.block_diag([ Q, sp.sparse.csr_matrix((n-Q.shape[0], n-Q.shape[0]))], format='csr') + else: + Q = sp.sparse.csr_matrix(Q) return Q From 3a5c42ec0818798dcc98a1279bcc82131a4be801 Mon Sep 17 00:00:00 2001 From: Oded Stein Date: Tue, 10 Sep 2024 17:38:41 -0700 Subject: [PATCH 08/11] bump min version to 3.7 --- .github/workflows/ciwheels.yml | 4 +--- .github/workflows/linux_build.yml | 2 +- .github/workflows/macos_build.yml | 2 +- .github/workflows/windows_build.yml | 2 +- pyproject.toml | 4 ++-- 5 files changed, 6 insertions(+), 8 deletions(-) diff --git a/.github/workflows/ciwheels.yml b/.github/workflows/ciwheels.yml index 0f72dfaa..c614d614 100644 --- a/.github/workflows/ciwheels.yml +++ b/.github/workflows/ciwheels.yml @@ -34,11 +34,9 @@ jobs: strategy: fail-fast: false matrix: - cpversion: ["cp36", "cp37", "cp38", "cp39", "cp310", "cp311", "cp312"] + cpversion: [cp37", "cp38", "cp39", "cp310", "cp311", "cp312"] os: [ { runs-on: ubuntu-latest, cibw-arch: manylinux_x86_64}, { runs-on: macos-latest, cibw-arch: macosx_x86_64}, { runs-on: macos-latest, cibw-arch: macosx_arm64}, { runs-on: windows-latest, cibw-arch: win_amd64} ] exclude: - - os: { runs-on: macos-latest, cibw-arch: macosx_arm64} - cpversion: "cp36" - os: { runs-on: macos-latest, cibw-arch: macosx_arm64} cpversion: "cp37" diff --git a/.github/workflows/linux_build.yml b/.github/workflows/linux_build.yml index c437f8c1..f4448e2e 100644 --- a/.github/workflows/linux_build.yml +++ b/.github/workflows/linux_build.yml @@ -29,7 +29,7 @@ jobs: - name: Install dependencies shell: bash -l {0} run: | - python -m pip install "numpy<=1.96.0" + python -m pip install numpy python -m pip install scipy python -m pip install scikit-image sudo apt-get install \ diff --git a/.github/workflows/macos_build.yml b/.github/workflows/macos_build.yml index 5eb5dc5a..6da9d9ed 100644 --- a/.github/workflows/macos_build.yml +++ b/.github/workflows/macos_build.yml @@ -25,7 +25,7 @@ jobs: - name: Install dependencies shell: bash -l {0} run: | - ${{ steps.installpython.outputs.python-path }} -m pip install "numpy<=1.96.0" + ${{ steps.installpython.outputs.python-path }} -m pip install numpy ${{ steps.installpython.outputs.python-path }} -m pip install scipy ${{ steps.installpython.outputs.python-path }} -m pip install scikit-image diff --git a/.github/workflows/windows_build.yml b/.github/workflows/windows_build.yml index 3659d091..d99f0530 100644 --- a/.github/workflows/windows_build.yml +++ b/.github/workflows/windows_build.yml @@ -29,7 +29,7 @@ jobs: - name: Install dependencies (Windows) shell: bash -l {0} run: | - python -m pip install "numpy<=1.96.0" + python -m pip install numpy python -m pip install scipy python -m pip install scikit-image diff --git a/pyproject.toml b/pyproject.toml index 8508d026..27d126c2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -2,8 +2,8 @@ build-verbosity = "3" [build-system] requires = [ - "numpy>=1.14.5,<2.2", - "scipy>=1.5,<1.15", + "numpy>=1.16.5,<2.2", + "scipy>=1.6,<1.15", "setuptools>=42", "wheel", "cmake>=3.16", From 12e9cd245cc0555177a612bb36edc43025cbfcda Mon Sep 17 00:00:00 2001 From: Oded Stein Date: Tue, 10 Sep 2024 17:42:46 -0700 Subject: [PATCH 09/11] typo --- .github/workflows/ciwheels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ciwheels.yml b/.github/workflows/ciwheels.yml index c614d614..99be5d2c 100644 --- a/.github/workflows/ciwheels.yml +++ b/.github/workflows/ciwheels.yml @@ -34,7 +34,7 @@ jobs: strategy: fail-fast: false matrix: - cpversion: [cp37", "cp38", "cp39", "cp310", "cp311", "cp312"] + cpversion: ["cp37", "cp38", "cp39", "cp310", "cp311", "cp312"] os: [ { runs-on: ubuntu-latest, cibw-arch: manylinux_x86_64}, { runs-on: macos-latest, cibw-arch: macosx_x86_64}, { runs-on: macos-latest, cibw-arch: macosx_arm64}, { runs-on: windows-latest, cibw-arch: win_amd64} ] exclude: - os: { runs-on: macos-latest, cibw-arch: macosx_arm64} From fd74d5928f43d5a140f3ee5c256a78f92e0fca14 Mon Sep 17 00:00:00 2001 From: Oded Stein Date: Tue, 10 Sep 2024 17:44:59 -0700 Subject: [PATCH 10/11] install correct numpy and scipy versions in _build --- .github/workflows/linux_build.yml | 4 ++-- .github/workflows/macos_build.yml | 4 ++-- .github/workflows/windows_build.yml | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/linux_build.yml b/.github/workflows/linux_build.yml index f4448e2e..8d3b7a1b 100644 --- a/.github/workflows/linux_build.yml +++ b/.github/workflows/linux_build.yml @@ -29,8 +29,8 @@ jobs: - name: Install dependencies shell: bash -l {0} run: | - python -m pip install numpy - python -m pip install scipy + python -m pip install "numpy>=1.16.5,<2.2" + python -m pip install "scipy>=1.6,<1.15" python -m pip install scikit-image sudo apt-get install \ libmpfr-dev \ diff --git a/.github/workflows/macos_build.yml b/.github/workflows/macos_build.yml index 6da9d9ed..c4d03799 100644 --- a/.github/workflows/macos_build.yml +++ b/.github/workflows/macos_build.yml @@ -25,8 +25,8 @@ jobs: - name: Install dependencies shell: bash -l {0} run: | - ${{ steps.installpython.outputs.python-path }} -m pip install numpy - ${{ steps.installpython.outputs.python-path }} -m pip install scipy + ${{ steps.installpython.outputs.python-path }} -m pip install "numpy>=1.16.5,<2.2" + ${{ steps.installpython.outputs.python-path }} -m pip install "scipy>=1.6,<1.15" ${{ steps.installpython.outputs.python-path }} -m pip install scikit-image - name: Install c++ bindings diff --git a/.github/workflows/windows_build.yml b/.github/workflows/windows_build.yml index d99f0530..46d8d276 100644 --- a/.github/workflows/windows_build.yml +++ b/.github/workflows/windows_build.yml @@ -29,8 +29,8 @@ jobs: - name: Install dependencies (Windows) shell: bash -l {0} run: | - python -m pip install numpy - python -m pip install scipy + python -m pip install "numpy>=1.16.5,<2.2" + python -m pip install "scipy>=1.6,<1.15" python -m pip install scikit-image # - name: Install dependencies (Windows) From b9294fb5a165ce196441601decbcbb25fc0f4576 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Silvia=20Sell=C3=A1n?= Date: Tue, 29 Oct 2024 11:08:15 +0100 Subject: [PATCH 11/11] credit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6a8b2dd1..c8f785d8 100644 --- a/README.md +++ b/README.md @@ -158,7 +158,7 @@ library. We are thankful to them: - [Otman Benchekroun](https://github.com/otmanon) ([PR #59](https://github.com/sgsellan/gpytoolbox/pull/59)) - [Abhishek Madan](https://github.com/abhimadan) ([PR #103](https://github.com/sgsellan/gpytoolbox/pull/103)) - [Lukas Hermann](https://github.com/lsh) ([PR #135](https://github.com/sgsellan/gpytoolbox/pull/135)) - +- [Haoyang Wu](https://github.com/H-YWu) ([PR #142](https://github.com/sgsellan/gpytoolbox/pull/142))