1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

from __future__ import division, absolute_import, print_function 

 

from .info import __doc__ 

from numpy.version import version as __version__ 

 

import os 

 

# on Windows NumPy loads an important OpenBLAS-related DLL 

# and the code below aims to alleviate issues with DLL 

# path resolution portability with an absolute path DLL load 

if os.name == 'nt': 

from ctypes import WinDLL 

import glob 

# convention for storing / loading the DLL from 

# numpy/.libs/, if present 

libs_path = os.path.abspath(os.path.join(os.path.dirname(__file__), 

'..', '.libs')) 

DLL_filenames = [] 

if os.path.isdir(libs_path): 

for filename in glob.glob(os.path.join(libs_path, '*openblas*dll')): 

# NOTE: would it change behavior to load ALL 

# DLLs at this path vs. the name restriction? 

WinDLL(os.path.abspath(filename)) 

DLL_filenames.append(filename) 

if len(DLL_filenames) > 1: 

import warnings 

warnings.warn("loaded more than 1 DLL from .libs:\n%s" % 

"\n".join(DLL_filenames), 

stacklevel=1) 

 

# disables OpenBLAS affinity setting of the main thread that limits 

# python threads or processes to one core 

env_added = [] 

for envkey in ['OPENBLAS_MAIN_FREE', 'GOTOBLAS_MAIN_FREE']: 

if envkey not in os.environ: 

os.environ[envkey] = '1' 

env_added.append(envkey) 

 

try: 

from . import multiarray 

except ImportError as exc: 

import sys 

msg = """ 

 

IMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE! 

 

Importing the multiarray numpy extension module failed. Most 

likely you are trying to import a failed build of numpy. 

Here is how to proceed: 

- If you're working with a numpy git repository, try `git clean -xdf` 

(removes all files not under version control) and rebuild numpy. 

- If you are simply trying to use the numpy version that you have installed: 

your installation is broken - please reinstall numpy. 

- If you have already reinstalled and that did not fix the problem, then: 

1. Check that you are using the Python you expect (you're using %s), 

and that you have no directories in your PATH or PYTHONPATH that can 

interfere with the Python and numpy versions you're trying to use. 

2. If (1) looks fine, you can open a new issue at 

https://github.com/numpy/numpy/issues. Please include details on: 

- how you installed Python 

- how you installed numpy 

- your operating system 

- whether or not you have multiple versions of Python installed 

- if you built from source, your compiler versions and ideally a build log 

 

Note: this error has many possible causes, so please don't comment on 

an existing issue about this - open a new one instead. 

 

Original error was: %s 

""" % (sys.executable, exc) 

raise ImportError(msg) 

finally: 

for envkey in env_added: 

del os.environ[envkey] 

del envkey 

del env_added 

del os 

 

from . import umath 

 

# Check that multiarray,umath are pure python modules wrapping 

# _multiarray_umath and not either of the old c-extension modules 

if not (hasattr(multiarray, '_multiarray_umath') and 

hasattr(umath, '_multiarray_umath')): 

import sys 

path = sys.modules['numpy'].__path__ 

msg = ("Something is wrong with the numpy installation. " 

"While importing we detected an older version of " 

"numpy in {}. One method of fixing this is to repeatedly uninstall " 

"numpy until none is found, then reinstall this version.") 

raise ImportError(msg.format(path)) 

 

from . import numerictypes as nt 

multiarray.set_typeDict(nt.sctypeDict) 

from . import numeric 

from .numeric import * 

from . import fromnumeric 

from .fromnumeric import * 

from . import defchararray as char 

from . import records as rec 

from .records import * 

from .memmap import * 

from .defchararray import chararray 

from . import function_base 

from .function_base import * 

from . import machar 

from .machar import * 

from . import getlimits 

from .getlimits import * 

from . import shape_base 

from .shape_base import * 

from . import einsumfunc 

from .einsumfunc import * 

del nt 

 

from .fromnumeric import amax as max, amin as min, round_ as round 

from .numeric import absolute as abs 

 

# do this after everything else, to minimize the chance of this misleadingly 

# appearing in an import-time traceback 

from . import _add_newdocs 

# add these for module-freeze analysis (like PyInstaller) 

from . import _dtype_ctypes 

from . import _internal 

from . import _dtype 

from . import _methods 

 

__all__ = ['char', 'rec', 'memmap'] 

__all__ += numeric.__all__ 

__all__ += fromnumeric.__all__ 

__all__ += rec.__all__ 

__all__ += ['chararray'] 

__all__ += function_base.__all__ 

__all__ += machar.__all__ 

__all__ += getlimits.__all__ 

__all__ += shape_base.__all__ 

__all__ += einsumfunc.__all__ 

 

# Make it possible so that ufuncs can be pickled 

# Here are the loading and unloading functions 

# The name numpy.core._ufunc_reconstruct must be 

# available for unpickling to work. 

def _ufunc_reconstruct(module, name): 

# The `fromlist` kwarg is required to ensure that `mod` points to the 

# inner-most module rather than the parent package when module name is 

# nested. This makes it possible to pickle non-toplevel ufuncs such as 

# scipy.special.expit for instance. 

mod = __import__(module, fromlist=[name]) 

return getattr(mod, name) 

 

def _ufunc_reduce(func): 

from pickle import whichmodule 

name = func.__name__ 

return _ufunc_reconstruct, (whichmodule(func, name), name) 

 

 

import sys 

if sys.version_info[0] >= 3: 

import copyreg 

else: 

import copy_reg as copyreg 

 

copyreg.pickle(ufunc, _ufunc_reduce, _ufunc_reconstruct) 

# Unclutter namespace (must keep _ufunc_reconstruct for unpickling) 

del copyreg 

del sys 

del _ufunc_reduce 

 

from numpy._pytesttester import PytestTester 

test = PytestTester(__name__) 

del PytestTester