xnd 0.2.0dev3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. checksums.yaml +7 -0
  2. data/CONTRIBUTING.md +42 -0
  3. data/Gemfile +3 -0
  4. data/History.md +0 -0
  5. data/README.md +7 -0
  6. data/Rakefile +135 -0
  7. data/ext/ruby_xnd/extconf.rb +70 -0
  8. data/ext/ruby_xnd/float_pack_unpack.c +277 -0
  9. data/ext/ruby_xnd/float_pack_unpack.h +39 -0
  10. data/ext/ruby_xnd/gc_guard.c +36 -0
  11. data/ext/ruby_xnd/gc_guard.h +12 -0
  12. data/ext/ruby_xnd/include/xnd.h +449 -0
  13. data/ext/ruby_xnd/lib/libxnd.a +0 -0
  14. data/ext/ruby_xnd/lib/libxnd.so +1 -0
  15. data/ext/ruby_xnd/lib/libxnd.so.0 +1 -0
  16. data/ext/ruby_xnd/lib/libxnd.so.0.2.0dev3 +0 -0
  17. data/ext/ruby_xnd/memory_block_object.c +32 -0
  18. data/ext/ruby_xnd/memory_block_object.h +33 -0
  19. data/ext/ruby_xnd/ruby_xnd.c +1953 -0
  20. data/ext/ruby_xnd/ruby_xnd.h +61 -0
  21. data/ext/ruby_xnd/ruby_xnd_internal.h +85 -0
  22. data/ext/ruby_xnd/util.h +170 -0
  23. data/ext/ruby_xnd/xnd/AUTHORS.txt +5 -0
  24. data/ext/ruby_xnd/xnd/INSTALL.txt +134 -0
  25. data/ext/ruby_xnd/xnd/LICENSE.txt +29 -0
  26. data/ext/ruby_xnd/xnd/MANIFEST.in +3 -0
  27. data/ext/ruby_xnd/xnd/Makefile.in +80 -0
  28. data/ext/ruby_xnd/xnd/README.rst +44 -0
  29. data/ext/ruby_xnd/xnd/config.guess +1530 -0
  30. data/ext/ruby_xnd/xnd/config.h.in +22 -0
  31. data/ext/ruby_xnd/xnd/config.sub +1782 -0
  32. data/ext/ruby_xnd/xnd/configure +4867 -0
  33. data/ext/ruby_xnd/xnd/configure.ac +164 -0
  34. data/ext/ruby_xnd/xnd/doc/Makefile +14 -0
  35. data/ext/ruby_xnd/xnd/doc/_static/copybutton.js +66 -0
  36. data/ext/ruby_xnd/xnd/doc/conf.py +26 -0
  37. data/ext/ruby_xnd/xnd/doc/index.rst +44 -0
  38. data/ext/ruby_xnd/xnd/doc/libxnd/data-structures.rst +186 -0
  39. data/ext/ruby_xnd/xnd/doc/libxnd/functions.rst +148 -0
  40. data/ext/ruby_xnd/xnd/doc/libxnd/index.rst +25 -0
  41. data/ext/ruby_xnd/xnd/doc/releases/index.rst +34 -0
  42. data/ext/ruby_xnd/xnd/doc/xnd/align-pack.rst +96 -0
  43. data/ext/ruby_xnd/xnd/doc/xnd/buffer-protocol.rst +42 -0
  44. data/ext/ruby_xnd/xnd/doc/xnd/index.rst +30 -0
  45. data/ext/ruby_xnd/xnd/doc/xnd/quickstart.rst +62 -0
  46. data/ext/ruby_xnd/xnd/doc/xnd/types.rst +674 -0
  47. data/ext/ruby_xnd/xnd/install-sh +527 -0
  48. data/ext/ruby_xnd/xnd/libxnd/Makefile.in +102 -0
  49. data/ext/ruby_xnd/xnd/libxnd/Makefile.vc +112 -0
  50. data/ext/ruby_xnd/xnd/libxnd/bitmaps.c +345 -0
  51. data/ext/ruby_xnd/xnd/libxnd/contrib.h +313 -0
  52. data/ext/ruby_xnd/xnd/libxnd/copy.c +944 -0
  53. data/ext/ruby_xnd/xnd/libxnd/equal.c +1216 -0
  54. data/ext/ruby_xnd/xnd/libxnd/inline.h +154 -0
  55. data/ext/ruby_xnd/xnd/libxnd/overflow.h +147 -0
  56. data/ext/ruby_xnd/xnd/libxnd/split.c +286 -0
  57. data/ext/ruby_xnd/xnd/libxnd/tests/Makefile.in +39 -0
  58. data/ext/ruby_xnd/xnd/libxnd/tests/Makefile.vc +44 -0
  59. data/ext/ruby_xnd/xnd/libxnd/tests/README.txt +2 -0
  60. data/ext/ruby_xnd/xnd/libxnd/tests/runtest.c +101 -0
  61. data/ext/ruby_xnd/xnd/libxnd/tests/test.h +48 -0
  62. data/ext/ruby_xnd/xnd/libxnd/tests/test_fixed.c +108 -0
  63. data/ext/ruby_xnd/xnd/libxnd/xnd.c +1304 -0
  64. data/ext/ruby_xnd/xnd/libxnd/xnd.h +449 -0
  65. data/ext/ruby_xnd/xnd/python/test_xnd.py +3144 -0
  66. data/ext/ruby_xnd/xnd/python/xnd/__init__.py +290 -0
  67. data/ext/ruby_xnd/xnd/python/xnd/_xnd.c +2822 -0
  68. data/ext/ruby_xnd/xnd/python/xnd/contrib/pretty.py +850 -0
  69. data/ext/ruby_xnd/xnd/python/xnd/docstrings.h +129 -0
  70. data/ext/ruby_xnd/xnd/python/xnd/pyxnd.h +200 -0
  71. data/ext/ruby_xnd/xnd/python/xnd/util.h +182 -0
  72. data/ext/ruby_xnd/xnd/python/xnd_randvalue.py +1121 -0
  73. data/ext/ruby_xnd/xnd/python/xnd_support.py +106 -0
  74. data/ext/ruby_xnd/xnd/setup.py +303 -0
  75. data/ext/ruby_xnd/xnd/vcbuild/INSTALL.txt +42 -0
  76. data/ext/ruby_xnd/xnd/vcbuild/runtest32.bat +16 -0
  77. data/ext/ruby_xnd/xnd/vcbuild/runtest64.bat +14 -0
  78. data/ext/ruby_xnd/xnd/vcbuild/vcbuild32.bat +29 -0
  79. data/ext/ruby_xnd/xnd/vcbuild/vcbuild64.bat +29 -0
  80. data/ext/ruby_xnd/xnd/vcbuild/vcclean.bat +13 -0
  81. data/ext/ruby_xnd/xnd/vcbuild/vcdistclean.bat +14 -0
  82. data/lib/ruby_xnd.so +0 -0
  83. data/lib/xnd.rb +306 -0
  84. data/lib/xnd/monkeys.rb +29 -0
  85. data/lib/xnd/version.rb +6 -0
  86. data/spec/debug_spec.rb +9 -0
  87. data/spec/gc_guard_spec.rb +10 -0
  88. data/spec/leakcheck.rb +9 -0
  89. data/spec/spec_helper.rb +877 -0
  90. data/spec/type_inference_spec.rb +81 -0
  91. data/spec/xnd_spec.rb +2921 -0
  92. data/xnd.gemspec +47 -0
  93. metadata +215 -0
@@ -0,0 +1,106 @@
1
+ #
2
+ # BSD 3-Clause License
3
+ #
4
+ # Copyright (c) 2017-2018, plures
5
+ # All rights reserved.
6
+ #
7
+ # Redistribution and use in source and binary forms, with or without
8
+ # modification, are permitted provided that the following conditions are met:
9
+ #
10
+ # 1. Redistributions of source code must retain the above copyright notice,
11
+ # this list of conditions and the following disclaimer.
12
+ #
13
+ # 2. Redistributions in binary form must reproduce the above copyright notice,
14
+ # this list of conditions and the following disclaimer in the documentation
15
+ # and/or other materials provided with the distribution.
16
+ #
17
+ # 3. Neither the name of the copyright holder nor the names of its
18
+ # contributors may be used to endorse or promote products derived from
19
+ # this software without specific prior written permission.
20
+ #
21
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22
+ # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23
+ # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
24
+ # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
25
+ # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26
+ # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
27
+ # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
28
+ # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
29
+ # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30
+ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31
+ #
32
+
33
+ from collections import OrderedDict
34
+ import unittest
35
+ import sys
36
+
37
+
38
+ # Support for test_xnd.py.
39
+
40
+
41
+ # OrderedDict literals hack.
42
+ class Record(OrderedDict):
43
+ @staticmethod
44
+ def _kv(s):
45
+ if not isinstance(s, slice):
46
+ raise TypeError("expect key-value pair")
47
+ if s.step is not None:
48
+ raise ValueError("expect key-value pair")
49
+ return s.start, s.stop
50
+ def __getitem__(self, items):
51
+ if not isinstance(items, tuple):
52
+ items = (items,)
53
+ return OrderedDict(list(map(self._kv, items)))
54
+
55
+ R = Record()
56
+
57
+
58
+ # Broken classes.
59
+ class BoolMemoryError(object):
60
+ def __bool__(self):
61
+ raise MemoryError
62
+
63
+ class Index(object):
64
+ def __index__(self):
65
+ return 10
66
+
67
+ class IndexMemoryError(object):
68
+ def __index__(self):
69
+ raise MemoryError
70
+
71
+ class IndexTypeError(object):
72
+ def __index__(self):
73
+ return ""
74
+
75
+ def assertEqualWithEx(self, func, x, y):
76
+ if x.value is y is None:
77
+ return
78
+
79
+ xerr = None
80
+ try:
81
+ xres = func(x)
82
+ except Exception as e:
83
+ xerr = e.__class__
84
+
85
+ yerr = None
86
+ try:
87
+ yres = func(y)
88
+ except Exception as e:
89
+ yerr = e.__class__
90
+
91
+ if xerr is None is yerr:
92
+ self.assertEqual(xres, yres, msg="x: %s y: %s" % (x.type, y))
93
+ else:
94
+ self.assertEqual(xerr, yerr, msg="x: %s y: %s" % (x.type, y))
95
+
96
+ def skip_if(condition, reason):
97
+ if condition:
98
+ raise unittest.SkipTest(reason)
99
+
100
+ HAVE_64_BIT = sys.maxsize == 2**63-1
101
+
102
+ HAVE_PYTHON_36 = sys.version_info >= (3, 6, 0)
103
+
104
+ requires_py36 = unittest.skipUnless(
105
+ sys.version_info > (3, 6),
106
+ "test requires Python 3.6 or greater")
@@ -0,0 +1,303 @@
1
+ #
2
+ # BSD 3-Clause License
3
+ #
4
+ # Copyright (c) 2017-2018, plures
5
+ # All rights reserved.
6
+ #
7
+ # Redistribution and use in source and binary forms, with or without
8
+ # modification, are permitted provided that the following conditions are met:
9
+ #
10
+ # 1. Redistributions of source code must retain the above copyright notice,
11
+ # this list of conditions and the following disclaimer.
12
+ #
13
+ # 2. Redistributions in binary form must reproduce the above copyright notice,
14
+ # this list of conditions and the following disclaimer in the documentation
15
+ # and/or other materials provided with the distribution.
16
+ #
17
+ # 3. Neither the name of the copyright holder nor the names of its
18
+ # contributors may be used to endorse or promote products derived from
19
+ # this software without specific prior written permission.
20
+ #
21
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22
+ # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23
+ # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
24
+ # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
25
+ # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26
+ # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
27
+ # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
28
+ # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
29
+ # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30
+ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31
+ #
32
+
33
+ import sys, os
34
+
35
+ if "bdist_wheel" in sys.argv:
36
+ from setuptools import setup, Extension
37
+ else:
38
+ from distutils.core import setup, Extension
39
+
40
+ from distutils.sysconfig import get_python_lib
41
+ from glob import glob
42
+ import platform
43
+ import subprocess
44
+ import shutil
45
+ import warnings
46
+
47
+ try:
48
+ import sphinx.cmd
49
+ SPHINX_BUILD = "sphinx.cmd.build"
50
+ except:
51
+ SPHINX_BUILD = "sphinx"
52
+
53
+
54
+ DESCRIPTION = """\
55
+ General container that maps a wide range of Python values directly to memory.\
56
+ """
57
+
58
+ LONG_DESCRIPTION = """
59
+ Overview
60
+ --------
61
+
62
+ The ``xnd`` module implements a container type that maps most Python values
63
+ relevant for scientific computing directly to typed memory.
64
+
65
+ Whenever possible, a single, pointer-free memory block is used.
66
+
67
+ ``xnd`` supports ragged arrays, categorical types, indexing, slicing, aligned
68
+ memory blocks and type inference.
69
+
70
+ Operations like indexing and slicing return zero-copy typed views on the data.
71
+
72
+ Importing PEP-3118 buffers is supported.
73
+
74
+ Links
75
+ -----
76
+
77
+ * https://github.com/plures/
78
+ * http://ndtypes.readthedocs.io/en/latest/
79
+ * http://xnd.readthedocs.io/en/latest/
80
+
81
+ """
82
+
83
+ warnings.simplefilter("ignore", UserWarning)
84
+
85
+ if sys.platform == "darwin":
86
+ LIBNAME = "libxnd.dylib"
87
+ LIBSONAME = "libxnd.0.dylib"
88
+ LIBSHARED = "libxnd.0.2.0dev3.dylib"
89
+ else:
90
+ LIBNAME = "libxnd.so"
91
+ LIBSONAME = "libxnd.so.0"
92
+ LIBSHARED = "libxnd.so.0.2.0dev3"
93
+ LIBNDTYPES = "libndtypes.so.0.2.0dev3"
94
+
95
+ if "install" in sys.argv or "bdist_wheel" in sys.argv:
96
+ CONFIGURE_INCLUDES = "%s/ndtypes" % get_python_lib()
97
+ CONFIGURE_LIBS = CONFIGURE_INCLUDES
98
+ INCLUDES = LIBS = [CONFIGURE_INCLUDES]
99
+ LIBXNDDIR = "%s/xnd" % get_python_lib()
100
+ INSTALL_LIBS = True
101
+ elif "conda_install" in sys.argv:
102
+ site = "%s/ndtypes" % get_python_lib()
103
+ sys_includes = os.path.join(os.environ['PREFIX'], "include")
104
+ libdir = "Library/bin" if sys.platform == "win32" else "lib"
105
+ sys_libs = os.path.join(os.environ['PREFIX'], libdir)
106
+ CONFIGURE_INCLUDES = INCLUDES = [sys_includes, site]
107
+ LIBS = [sys_libs, site]
108
+ LIBXNDDIR = "%s/xnd" % get_python_lib()
109
+ INSTALL_LIBS = False
110
+ else:
111
+ CONFIGURE_INCLUDES = "../python/ndtypes"
112
+ CONFIGURE_LIBS = CONFIGURE_INCLUDES
113
+ INCLUDES = LIBS = [CONFIGURE_INCLUDES]
114
+ LIBXNDDIR = "../python/xnd"
115
+ INSTALL_LIBS = False
116
+
117
+ PY_MAJOR = sys.version_info[0]
118
+ PY_MINOR = sys.version_info[1]
119
+ ARCH = platform.architecture()[0]
120
+ BUILD_ALL = \
121
+ "build" in sys.argv or "install" in sys.argv or "bdist_wheel" in sys.argv
122
+
123
+
124
+ if PY_MAJOR < 3:
125
+ raise NotImplementedError(
126
+ "python2 support is not implemented")
127
+
128
+
129
+ def get_module_path():
130
+ pathlist = glob("build/lib.*/")
131
+ if pathlist:
132
+ return pathlist[0]
133
+ raise RuntimeError("cannot find xnd module in build directory")
134
+
135
+ def copy_ext():
136
+ if sys.platform == "win32":
137
+ pathlist = glob("build/lib.*/xnd/_xnd.*.pyd")
138
+ else:
139
+ pathlist = glob("build/lib.*/xnd/_xnd.*.so")
140
+ if pathlist:
141
+ shutil.copy2(pathlist[0], "python/xnd")
142
+
143
+ def make_symlinks():
144
+ os.chdir(LIBXNDDIR)
145
+ os.chmod(LIBSHARED, 0o755)
146
+ os.system("ln -sf %s %s" % (LIBSHARED, LIBSONAME))
147
+ os.system("ln -sf %s %s" % (LIBSHARED, LIBNAME))
148
+
149
+
150
+ if len(sys.argv) == 3 and sys.argv[1] == "install" and \
151
+ sys.argv[2].startswith("--local"):
152
+ localdir = sys.argv[2].split("=")[1]
153
+ sys.argv = sys.argv[:2] + [
154
+ "--install-base=" + localdir,
155
+ "--install-purelib=" + localdir,
156
+ "--install-platlib=" + localdir,
157
+ "--install-scripts=" + localdir,
158
+ "--install-data=" + localdir,
159
+ "--install-headers=" + localdir]
160
+
161
+ LIBNDTYPESDIR = "%s/ndtypes" % localdir
162
+ CONFIGURE_INCLUDES = "%s/ndtypes" % localdir
163
+ CONFIGURE_LIBS = CONFIGURE_INCLUDES
164
+ INCLUDES = LIBS = [CONFIGURE_INCLUDES]
165
+ LIBXNDDIR = "%s/xnd" % localdir
166
+ INSTALL_LIBS = True
167
+
168
+ if sys.platform == "darwin": # homebrew bug
169
+ sys.argv.append("--prefix=")
170
+
171
+ elif len(sys.argv) == 2:
172
+ if sys.argv[1] == 'module':
173
+ sys.argv[1] = 'build'
174
+ if sys.argv[1] == 'module_install' or sys.argv[1] == 'conda_install':
175
+ sys.argv[1] = 'install'
176
+ if sys.argv[1] == 'test':
177
+ module_path = get_module_path()
178
+ python_path = os.getenv('PYTHONPATH')
179
+ path = module_path + ':' + python_path if python_path else module_path
180
+ env = os.environ.copy()
181
+ env['PYTHONPATH'] = path
182
+ ret = subprocess.call([sys.executable, "python/test_xnd.py", "--long"], env=env)
183
+ sys.exit(ret)
184
+ elif sys.argv[1] == 'doctest':
185
+ os.chdir("doc")
186
+ module_path = '../python'
187
+ python_path = os.getenv('PYTHONPATH')
188
+ path = module_path + ':' + python_path if python_path else module_path
189
+ env = os.environ.copy()
190
+ env['PYTHONPATH'] = path
191
+ cmd = [sys.executable, "-m", SPHINX_BUILD,
192
+ "-b", "doctest", "-d", "build/doctrees", ".", "build/html"]
193
+ ret = subprocess.call(cmd, env=env)
194
+ sys.exit(ret)
195
+ elif sys.argv[1] == 'clean':
196
+ shutil.rmtree("build", ignore_errors=True)
197
+ os.chdir("python/xnd")
198
+ shutil.rmtree("__pycache__", ignore_errors=True)
199
+ for f in glob("_xnd*.so"):
200
+ os.remove(f)
201
+ sys.exit(0)
202
+ elif sys.argv[1] == 'distclean':
203
+ if sys.platform == "win32":
204
+ os.chdir("vcbuild")
205
+ os.system("vcdistclean.bat")
206
+ else:
207
+ os.system("make distclean")
208
+ sys.exit(0)
209
+ else:
210
+ pass
211
+
212
+
213
+ def xnd_ext():
214
+ include_dirs = ["libxnd", "ndtypes/python/ndtypes"] + INCLUDES
215
+ library_dirs = ["libxnd", "ndtypes/libndtypes"] + LIBS
216
+ depends = ["libxnd/xnd.h", "python/xnd/util.h", "python/xnd/pyxnd.h"]
217
+ sources = ["python/xnd/_xnd.c"]
218
+
219
+ if sys.platform == "win32":
220
+ libraries = ["libndtypes-0.2.0dev3.dll", "libxnd-0.2.0dev3.dll"]
221
+ extra_compile_args = ["/DXND_IMPORT"]
222
+ extra_link_args = []
223
+ runtime_library_dirs = []
224
+
225
+ if BUILD_ALL:
226
+ from distutils.msvc9compiler import MSVCCompiler
227
+ MSVCCompiler().initialize()
228
+ os.chdir("vcbuild")
229
+ os.environ['LIBNDTYPESINCLUDE'] = os.path.normpath(CONFIGURE_INCLUDES)
230
+ os.environ['LIBNDTYPESDIR'] = os.path.normpath(CONFIGURE_LIBS)
231
+ if ARCH == "64bit":
232
+ os.system("vcbuild64.bat")
233
+ else:
234
+ os.system("vcbuild32.bat")
235
+ os.chdir("..")
236
+
237
+ else:
238
+ extra_compile_args = ["-Wextra", "-Wno-missing-field-initializers", "-std=c11"]
239
+ if sys.platform == "darwin":
240
+ libraries = ["ndtypes", "xnd"]
241
+ extra_link_args = ["-Wl,-rpath,@loader_path"]
242
+ runtime_library_dirs = []
243
+ else:
244
+ libraries = [":%s" % LIBNDTYPES, ":%s" % LIBSHARED]
245
+ extra_link_args = []
246
+ runtime_library_dirs = ["$ORIGIN"]
247
+
248
+ if BUILD_ALL:
249
+ os.system(
250
+ "./configure --with-includes='%s' --with-libs='%s' && make" %
251
+ (CONFIGURE_INCLUDES, CONFIGURE_LIBS))
252
+
253
+ return Extension (
254
+ "xnd._xnd",
255
+ include_dirs = include_dirs,
256
+ library_dirs = library_dirs,
257
+ depends = depends,
258
+ sources = sources,
259
+ libraries = libraries,
260
+ extra_compile_args = extra_compile_args,
261
+ extra_link_args = extra_link_args,
262
+ runtime_library_dirs = runtime_library_dirs
263
+ )
264
+
265
+ setup (
266
+ name = "xnd",
267
+ version = "0.2.0dev3",
268
+ description = DESCRIPTION,
269
+ long_description = LONG_DESCRIPTION,
270
+ url = "https://github.com/plures/xnd",
271
+ author = 'Stefan Krah',
272
+ author_email = 'skrah@bytereef.org',
273
+ license = "BSD License",
274
+ keywords = ["xnd", "array computing", "container", "memory blocks"],
275
+ platforms = ["Many"],
276
+ classifiers = [
277
+ "Development Status :: 4 - Beta",
278
+ "Intended Audience :: Developers",
279
+ "Intended Audience :: Education",
280
+ "Intended Audience :: End Users/Desktop",
281
+ "Intended Audience :: Financial and Insurance Industry",
282
+ "Intended Audience :: Science/Research",
283
+ "License :: OSI Approved :: BSD License",
284
+ "Programming Language :: C",
285
+ "Programming Language :: Python :: 3",
286
+ "Programming Language :: Python :: 3.6",
287
+ "Programming Language :: Python :: 3.7",
288
+ "Operating System :: OS Independent",
289
+ "Topic :: Scientific/Engineering :: Mathematics",
290
+ "Topic :: Software Development"
291
+ ],
292
+ install_requires = ["ndtypes == v0.2.0dev3"],
293
+ package_dir = {"": "python"},
294
+ packages = ["xnd"],
295
+ package_data = {"xnd": ["libxnd*", "xnd.h", "pyxnd.h", "contrib/*"]
296
+ if INSTALL_LIBS else ["pyxnd.h", "contrib/*"]},
297
+ ext_modules = [xnd_ext()],
298
+ )
299
+
300
+ copy_ext()
301
+
302
+ if INSTALL_LIBS and sys.platform != "win32" and not "bdist_wheel" in sys.argv:
303
+ make_symlinks()
@@ -0,0 +1,42 @@
1
+
2
+
3
+ libxnd build instructions for Visual Studio
4
+ ===========================================
5
+
6
+
7
+ Requirements
8
+ ------------
9
+
10
+ - Visual Studio 2015 or later.
11
+
12
+
13
+ 64-bit build
14
+ ------------
15
+
16
+ # Set the build environment
17
+ vcvarsall.bat x64
18
+
19
+ # Build: If successful, the static library, the dynamic library, the
20
+ # common header file and two executables for running the unit tests
21
+ # should be in the dist64 directory.
22
+ vcbuild64.bat
23
+
24
+ # Test
25
+ runtest64.bat
26
+
27
+
28
+ 32-bit build
29
+ ------------
30
+
31
+ # Set the build environment
32
+ vcvarsall.bat x86
33
+
34
+ # Build: If successful, the static library, the dynamic library, the
35
+ # common header file and two executables for running the unit tests
36
+ # should be in the dist32 directory.
37
+ vcbuild32.bat
38
+
39
+ # Test
40
+ runtest32.bat
41
+
42
+