diff --git a/doc/source/tutorial/weave.rst b/doc/source/tutorial/weave.rst
index 12cff19..7a481db 100644
--- a/doc/source/tutorial/weave.rst
+++ b/doc/source/tutorial/weave.rst
@@ -885,11 +885,11 @@ Microsoft VC++ installed.
When ``inline`` is first run, you'll notice that pause and some trash printed
to the screen. The "trash" is acutually part of the compilers output that
distutils does not supress. The name of the extension file,
-``sc_bighonkingnumber.cpp``, is generated from the md5 check sum of the C/C++
-code fragment. On Unix or windows machines with only gcc installed, the trash
-will not appear. On the second call, the code fragment is not compiled since
-it already exists, and only the answer is returned. Now kill the interpreter
-and restart, and run the same code with a different string.
+``sc_bighonkingnumber.cpp``, is generated from the SHA-256 check sum of the
+C/C++ code fragment. On Unix or windows machines with only gcc installed, the
+trash will not appear. On the second call, the code fragment is not compiled
+since it already exists, and only the answer is returned. Now kill the
+interpreter and restart, and run the same code with a different string.
::
@@ -1151,8 +1151,8 @@ A quick look at the code
------------------------
``weave`` generates a C++ file holding an extension function for each
-``inline`` code snippet. These file names are generated using from the md5
-signature of the code snippet and saved to a location specified by the
+``inline`` code snippet. These file names are generated using from the
+SHA-256 signature of the code snippet and saved to a location specified by the
PYTHONCOMPILED environment variable (discussed later). The cpp files are
generally about 200-400 lines long and include quite a few functions to
support type conversions, etc. However, the actual compiled function is
@@ -2401,10 +2401,10 @@ been built before.
.. note::
If we were willing to always pay the penalty of building the C++
- code for a module, we could store the md5 checksum of the C++ code
+ code for a module, we could store the SHA-256 checksum of the C++ code
along with some information about the compiler, platform, etc. Then,
``ext_module.compile()`` could try importing the module before it
- actually compiles it, check the md5 checksum and other meta-data in
+ actually compiles it, check the SHA-256 checksum and other meta-data in
the imported module with the meta-data of the code it just produced
and only compile the code if the module didn't exist or the
meta-data didn't match. This would reduce the above code to::
diff --git a/scipy/weave/accelerate_tools.py b/scipy/weave/accelerate_tools.py
index 935ca23..1627447 100644
--- a/scipy/weave/accelerate_tools.py
+++ b/scipy/weave/accelerate_tools.py
@@ -12,7 +12,7 @@ from __future__ import absolute_import, print_function
from types import InstanceType, XRangeType
import inspect
-import scipy.weave.md5_load as md5
+from hashlib import sha256
import scipy.weave as weave
from numpy.testing import assert_
@@ -342,7 +342,7 @@ class accelerate(object):
return fast
def identifier(self,signature):
- # Build an MD5 checksum
+ # Build a SHA-256 checksum
f = self.function
co = f.func_code
identifier = str(signature)+\
@@ -350,7 +350,7 @@ class accelerate(object):
str(co.co_consts)+\
str(co.co_varnames)+\
co.co_code
- return 'F'+md5.md5(identifier).hexdigest()
+ return 'F' + sha256(identifier).hexdigest()
def accelerate(self,signature,identifier):
P = Python2CXX(self.function,signature,name=identifier)
diff --git a/scipy/weave/build_tools.py b/scipy/weave/build_tools.py
index c0f8baa..27d27a4 100644
--- a/scipy/weave/build_tools.py
+++ b/scipy/weave/build_tools.py
@@ -234,7 +234,7 @@ def build_extension(module_path,compiler_name = '',build_dir = None,
# dag. We keep having to add directories to the path to keep
# object files separated from each other. gcc2.x and gcc3.x C++
# object files are not compatible, so we'll stick them in a sub
- # dir based on their version. This will add an md5 check sum
+ # dir based on their version. This will add a SHA-256 check sum
# of the compiler binary to the directory name to keep objects
# from different compilers in different locations.
diff --git a/scipy/weave/catalog.py b/scipy/weave/catalog.py
index 274ed41..bb15f26 100644
--- a/scipy/weave/catalog.py
+++ b/scipy/weave/catalog.py
@@ -84,13 +84,13 @@ def getmodule(object):
def expr_to_filename(expr):
""" Convert an arbitrary expr string to a valid file name.
- The name is based on the md5 check sum for the string and
+ The name is based on the SHA-256 check sum for the string and
Something that was a little more human readable would be
nice, but the computer doesn't seem to care.
"""
- import scipy.weave.md5_load as md5
+ from hashlib import sha256
base = 'sc_'
- return base + md5.new(expr).hexdigest()
+ return base + sha256(expr).hexdigest()
def unique_file(d,expr):
""" Generate a unqiue file name based on expr in directory d
diff --git a/scipy/weave/md5_load.py b/scipy/weave/md5_load.py
deleted file mode 100644
index 80594ad..0000000
--- a/scipy/weave/md5_load.py
+++ /dev/null
@@ -1,11 +0,0 @@
-# Import correct md5, irrespective of the Python version
-#
-# `hashlib` was introduced in 2.5, deprecating `md5`
-from __future__ import absolute_import, print_function
-
-try:
- from hashlib import *
-except ImportError:
- from md5 import *
-
-new = md5
diff --git a/scipy/weave/platform_info.py b/scipy/weave/platform_info.py
index df67ca5..f7d7490 100644
--- a/scipy/weave/platform_info.py
+++ b/scipy/weave/platform_info.py
@@ -89,13 +89,13 @@ def compiler_exe_path(exe_name):
return exe_path
def check_sum(file):
- import scipy.weave.md5_load as md5
+ from hashlib import sha256
try:
f = open(file,'r')
bytes = f.read(-1)
except IOError:
bytes = ''
- chk_sum = md5.md5(bytes)
+ chk_sum = sha256(bytes)
return chk_sum.hexdigest()
def get_compiler_dir(compiler_name):