Skip to content

Commit

Permalink
Merge pull request #162 from pv/bug/1597-umfpack-free
Browse files Browse the repository at this point in the history
Make Umfpack free its data (#1597)
  • Loading branch information
rgommers committed Feb 18, 2012
2 parents df1c6fb + d2096e2 commit d24cc56
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 3 deletions.
20 changes: 17 additions & 3 deletions scipy/sparse/linalg/dsolve/umfpack/tests/test_umfpack.py
Expand Up @@ -7,8 +7,10 @@

import warnings
import random

from numpy.testing import TestCase, assert_array_almost_equal, dec, \
decorate_methods
from numpy.testing.utils import WarningManager

from scipy import rand, matrix, diag, eye
from scipy.sparse import csc_matrix, spdiags, SparseEfficiencyWarning
Expand All @@ -29,7 +31,17 @@
_umfpack_skip = dec.skipif(not _have_umfpack,
'UMFPACK appears not to be compiled')

class TestSolvers(TestCase):
class _DeprecationAccept:
def setUp(self):
self.mgr = WarningManager()
self.mgr.__enter__()
warnings.simplefilter("ignore", DeprecationWarning)

def tearDown(self):
self.mgr.__exit__()


class TestSolvers(TestCase, _DeprecationAccept):
"""Tests inverting a sparse linear system"""

def test_solve_complex_without_umfpack(self):
Expand Down Expand Up @@ -113,9 +125,9 @@ def setUp(self):
self.b = np.array([1, 2, 3, 4, 5])
self.b2 = np.array([5, 4, 3, 2, 1])

_DeprecationAccept.setUp(self)


class TestFactorization(TestCase):
class TestFactorization(TestCase, _DeprecationAccept):
"""Tests factorizing a sparse linear system"""

def test_complex_lu(self):
Expand Down Expand Up @@ -175,6 +187,8 @@ def setUp(self):
self.complex_matrices = [x.astype(np.complex128)
for x in self.real_matrices]

_DeprecationAccept.setUp(self)

# Skip methods if umfpack not present
for cls in [TestSolvers, TestFactorization]:
decorate_methods(cls, _umfpack_skip)
Expand Down
3 changes: 3 additions & 0 deletions scipy/sparse/linalg/dsolve/umfpack/umfpack.py
Expand Up @@ -296,6 +296,9 @@ def __init__( self, family = 'di', **kwargs ):
self.funs.defaults( self.control )
self.control[UMFPACK_PRL] = 3

def __del__(self):
self.free()

##
# 30.11.2005, c
def strControl( self ):
Expand Down

0 comments on commit d24cc56

Please sign in to comment.