awkward-cpp 51__cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

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.
@@ -0,0 +1,22 @@
1
+ # BSD 3-Clause License; see https://github.com/scikit-hep/awkward/blob/main/LICENSE
2
+
3
+ from __future__ import annotations
4
+
5
+ import ctypes
6
+ import importlib.resources as importlib_resources
7
+ import platform
8
+
9
+ import awkward_cpp._kernel_signatures
10
+
11
+ if platform.system() == "Windows":
12
+ name = "awkward-cpu-kernels.dll"
13
+ elif platform.system() == "Darwin":
14
+ name = "libawkward-cpu-kernels.dylib"
15
+ else:
16
+ name = "libawkward-cpu-kernels.so"
17
+
18
+ libpath_ref = importlib_resources.files(awkward_cpp) / "lib" / name
19
+ with importlib_resources.as_file(libpath_ref) as libpath:
20
+ lib = ctypes.cdll.LoadLibrary(str(libpath))
21
+
22
+ kernel = awkward_cpp._kernel_signatures.by_signature(lib)
Binary file
@@ -0,0 +1,186 @@
1
+ # BSD 3-Clause License; see https://github.com/scikit-hep/awkward/blob/main/LICENSE
2
+
3
+ from __future__ import annotations
4
+
5
+ import ctypes
6
+ import importlib.resources as importlib_resources
7
+ import platform
8
+
9
+ if platform.system() == "Windows":
10
+ name = "awkward.dll"
11
+ elif platform.system() == "Darwin":
12
+ name = "libawkward.dylib"
13
+ else:
14
+ name = "libawkward.so"
15
+
16
+ libpath_ref = importlib_resources.files(__package__) / "lib" / name
17
+ with importlib_resources.as_file(libpath_ref) as libpath:
18
+ lib = ctypes.cdll.LoadLibrary(str(libpath))
19
+
20
+ # bool awkward_ArrayBuilder_length(void* arraybuilder,
21
+ # int64_t* result);
22
+ ArrayBuilder_length = lib.awkward_ArrayBuilder_length
23
+ ArrayBuilder_length.name = "ArrayBuilder.length"
24
+ ArrayBuilder_length.argtypes = [ctypes.c_voidp, ctypes.POINTER(ctypes.c_int64)]
25
+ ArrayBuilder_length.restype = ctypes.c_uint8
26
+
27
+ # bool awkward_ArrayBuilder_clear(void* arraybuilder);
28
+ ArrayBuilder_clear = lib.awkward_ArrayBuilder_clear
29
+ ArrayBuilder_clear.name = "ArrayBuilder.clear"
30
+ ArrayBuilder_clear.argtypes = [ctypes.c_voidp]
31
+ ArrayBuilder_clear.restype = ctypes.c_uint8
32
+
33
+ # bool awkward_ArrayBuilder_null(void* arraybuilder);
34
+ ArrayBuilder_null = lib.awkward_ArrayBuilder_null
35
+ ArrayBuilder_null.name = "ArrayBuilder.null"
36
+ ArrayBuilder_null.argtypes = [ctypes.c_voidp]
37
+ ArrayBuilder_null.restype = ctypes.c_uint8
38
+
39
+ # bool awkward_ArrayBuilder_boolean(void* arraybuilder,
40
+ # bool x);
41
+ ArrayBuilder_boolean = lib.awkward_ArrayBuilder_boolean
42
+ ArrayBuilder_boolean.name = "ArrayBuilder.boolean"
43
+ ArrayBuilder_boolean.argtypes = [ctypes.c_voidp, ctypes.c_uint8]
44
+ ArrayBuilder_boolean.restype = ctypes.c_uint8
45
+
46
+ # bool awkward_ArrayBuilder_integer(void* arraybuilder,
47
+ # int64_t x);
48
+ ArrayBuilder_integer = lib.awkward_ArrayBuilder_integer
49
+ ArrayBuilder_integer.name = "ArrayBuilder.integer"
50
+ ArrayBuilder_integer.argtypes = [ctypes.c_voidp, ctypes.c_int64]
51
+ ArrayBuilder_integer.restype = ctypes.c_uint8
52
+
53
+ # bool awkward_ArrayBuilder_real(void* arraybuilder,
54
+ # double x);
55
+ ArrayBuilder_real = lib.awkward_ArrayBuilder_real
56
+ ArrayBuilder_real.name = "ArrayBuilder.real"
57
+ ArrayBuilder_real.argtypes = [ctypes.c_voidp, ctypes.c_double]
58
+ ArrayBuilder_real.restype = ctypes.c_uint8
59
+
60
+ # bool awkward_ArrayBuilder_complex(void* arraybuilder,
61
+ # double real,
62
+ # double imag);
63
+ ArrayBuilder_complex = lib.awkward_ArrayBuilder_complex
64
+ ArrayBuilder_complex.name = "ArrayBuilder.complex"
65
+ ArrayBuilder_complex.argtypes = [ctypes.c_voidp, ctypes.c_double, ctypes.c_double]
66
+ ArrayBuilder_complex.restype = ctypes.c_uint8
67
+
68
+ # bool awkward_ArrayBuilder_datetime(void* arraybuilder,
69
+ # int64_t x,
70
+ # const char* unit);
71
+ ArrayBuilder_datetime = lib.awkward_ArrayBuilder_datetime
72
+ ArrayBuilder_datetime.name = "ArrayBuilder.datetime"
73
+ ArrayBuilder_datetime.argtypes = [ctypes.c_voidp, ctypes.c_int64, ctypes.c_voidp]
74
+ ArrayBuilder_datetime.restype = ctypes.c_uint8
75
+
76
+ # bool awkward_ArrayBuilder_timedelta(void* arraybuilder,
77
+ # int64_t x,
78
+ # const char* unit);
79
+ ArrayBuilder_timedelta = lib.awkward_ArrayBuilder_timedelta
80
+ ArrayBuilder_timedelta.name = "ArrayBuilder.timedelta"
81
+ ArrayBuilder_timedelta.argtypes = [ctypes.c_voidp, ctypes.c_int64, ctypes.c_voidp]
82
+ ArrayBuilder_timedelta.restype = ctypes.c_uint8
83
+
84
+ # bool awkward_ArrayBuilder_bytestring(void* arraybuilder,
85
+ # const char* unit);
86
+ ArrayBuilder_bytestring = lib.awkward_ArrayBuilder_bytestring
87
+ ArrayBuilder_bytestring.name = "ArrayBuilder.bytestring"
88
+ ArrayBuilder_bytestring.argtypes = [ctypes.c_voidp, ctypes.c_voidp]
89
+ ArrayBuilder_bytestring.restype = ctypes.c_uint8
90
+
91
+ # bool awkward_ArrayBuilder_bytestring_length(void* arraybuilder,
92
+ # const char* unit);
93
+ ArrayBuilder_bytestring_length = lib.awkward_ArrayBuilder_bytestring_length
94
+ ArrayBuilder_bytestring_length.name = "ArrayBuilder.bytestring_length"
95
+ ArrayBuilder_bytestring_length.argtypes = [
96
+ ctypes.c_voidp,
97
+ ctypes.c_voidp,
98
+ ctypes.c_int64,
99
+ ]
100
+ ArrayBuilder_bytestring_length.restype = ctypes.c_uint8
101
+
102
+ # bool awkward_ArrayBuilder_string(void* arraybuilder,
103
+ # const char* unit);
104
+ ArrayBuilder_string = lib.awkward_ArrayBuilder_string
105
+ ArrayBuilder_string.name = "ArrayBuilder.string"
106
+ ArrayBuilder_string.argtypes = [ctypes.c_voidp, ctypes.c_voidp]
107
+ ArrayBuilder_string.restype = ctypes.c_uint8
108
+
109
+ # bool awkward_ArrayBuilder_string_length(void* arraybuilder,
110
+ # const char* unit);
111
+ ArrayBuilder_string_length = lib.awkward_ArrayBuilder_string_length
112
+ ArrayBuilder_string_length.name = "ArrayBuilder.string_length"
113
+ ArrayBuilder_string_length.argtypes = [ctypes.c_voidp, ctypes.c_voidp, ctypes.c_int64]
114
+ ArrayBuilder_string_length.restype = ctypes.c_uint8
115
+
116
+ # bool awkward_ArrayBuilder_beginlist(void* arraybuilder);
117
+ ArrayBuilder_beginlist = lib.awkward_ArrayBuilder_beginlist
118
+ ArrayBuilder_beginlist.name = "ArrayBuilder.beginlist"
119
+ ArrayBuilder_beginlist.argtypes = [ctypes.c_voidp]
120
+ ArrayBuilder_beginlist.restype = ctypes.c_uint8
121
+
122
+ # bool awkward_ArrayBuilder_endlist(void* arraybuilder);
123
+ ArrayBuilder_endlist = lib.awkward_ArrayBuilder_endlist
124
+ ArrayBuilder_endlist.name = "ArrayBuilder.endlist"
125
+ ArrayBuilder_endlist.argtypes = [ctypes.c_voidp]
126
+ ArrayBuilder_endlist.restype = ctypes.c_uint8
127
+
128
+ # uint8_t awkward_ArrayBuilder_begintuple(void* arraybuilder,
129
+ # int64_t numfields);
130
+ ArrayBuilder_begintuple = lib.awkward_ArrayBuilder_begintuple
131
+ ArrayBuilder_begintuple.name = "ArrayBuilder.begintuple"
132
+ ArrayBuilder_begintuple.argtypes = [ctypes.c_voidp, ctypes.c_int64]
133
+ ArrayBuilder_begintuple.restype = ctypes.c_uint8
134
+
135
+ # uint8_t awkward_ArrayBuilder_index(void* arraybuilder,
136
+ # int64_t index);
137
+ ArrayBuilder_index = lib.awkward_ArrayBuilder_index
138
+ ArrayBuilder_index.name = "ArrayBuilder.index"
139
+ ArrayBuilder_index.argtypes = [ctypes.c_voidp, ctypes.c_int64]
140
+ ArrayBuilder_index.restype = ctypes.c_uint8
141
+
142
+ # uint8_t awkward_ArrayBuilder_endtuple(void* arraybuilder);
143
+ ArrayBuilder_endtuple = lib.awkward_ArrayBuilder_endtuple
144
+ ArrayBuilder_endtuple.name = "ArrayBuilder.endtuple"
145
+ ArrayBuilder_endtuple.argtypes = [ctypes.c_voidp]
146
+ ArrayBuilder_endtuple.restype = ctypes.c_uint8
147
+
148
+ # uint8_t awkward_ArrayBuilder_beginrecord(void* arraybuilder);
149
+ ArrayBuilder_beginrecord = lib.awkward_ArrayBuilder_beginrecord
150
+ ArrayBuilder_beginrecord.name = "ArrayBuilder.beginrecord"
151
+ ArrayBuilder_beginrecord.argtypes = [ctypes.c_voidp]
152
+ ArrayBuilder_beginrecord.restype = ctypes.c_uint8
153
+
154
+ # uint8_t awkward_ArrayBuilder_beginrecord_fast(void* arraybuilder,
155
+ # const char* name);
156
+ ArrayBuilder_beginrecord_fast = lib.awkward_ArrayBuilder_beginrecord_fast
157
+ ArrayBuilder_beginrecord_fast.name = "ArrayBuilder.beginrecord_fast"
158
+ ArrayBuilder_beginrecord_fast.argtypes = [ctypes.c_voidp, ctypes.c_voidp]
159
+ ArrayBuilder_beginrecord_fast.restype = ctypes.c_uint8
160
+
161
+ # uint8_t awkward_ArrayBuilder_beginrecord_check(void* arraybuilder,
162
+ # const char* name);
163
+ ArrayBuilder_beginrecord_check = lib.awkward_ArrayBuilder_beginrecord_check
164
+ ArrayBuilder_beginrecord_check.name = "ArrayBuilder.beginrecord_check"
165
+ ArrayBuilder_beginrecord_check.argtypes = [ctypes.c_voidp, ctypes.c_voidp]
166
+ ArrayBuilder_beginrecord_check.restype = ctypes.c_uint8
167
+
168
+ # uint8_t awkward_ArrayBuilder_field_fast(void* arraybuilder,
169
+ # const char* key);
170
+ ArrayBuilder_field_fast = lib.awkward_ArrayBuilder_field_fast
171
+ ArrayBuilder_field_fast.name = "ArrayBuilder.field_fast"
172
+ ArrayBuilder_field_fast.argtypes = [ctypes.c_voidp, ctypes.c_voidp]
173
+ ArrayBuilder_field_fast.restype = ctypes.c_uint8
174
+
175
+ # uint8_t awkward_ArrayBuilder_field_check(void* arraybuilder,
176
+ # const char* key);
177
+ ArrayBuilder_field_check = lib.awkward_ArrayBuilder_field_check
178
+ ArrayBuilder_field_check.name = "ArrayBuilder.field_check"
179
+ ArrayBuilder_field_check.argtypes = [ctypes.c_voidp, ctypes.c_voidp]
180
+ ArrayBuilder_field_check.restype = ctypes.c_uint8
181
+
182
+ # uint8_t awkward_ArrayBuilder_endrecord(void* arraybuilder);
183
+ ArrayBuilder_endrecord = lib.awkward_ArrayBuilder_endrecord
184
+ ArrayBuilder_endrecord.name = "ArrayBuilder.endrecord"
185
+ ArrayBuilder_endrecord.argtypes = [ctypes.c_voidp]
186
+ ArrayBuilder_endrecord.restype = ctypes.c_uint8
@@ -0,0 +1,46 @@
1
+ Metadata-Version: 2.4
2
+ Name: awkward_cpp
3
+ Version: 51
4
+ Summary: CPU kernels and compiled extensions for Awkward Array
5
+ Author-Email: Jim Pivarski <jpivarski@gmail.com>
6
+ Maintainer-Email: Scikit-HEP <scikit-hep-admins@googlegroups.com>
7
+ License-Expression: BSD-3-Clause AND MIT
8
+ License-File: LICENSE
9
+ License-File: rapidjson/license.txt
10
+ Classifier: Development Status :: 5 - Production/Stable
11
+ Classifier: Intended Audience :: Developers
12
+ Classifier: Intended Audience :: Information Technology
13
+ Classifier: Intended Audience :: Science/Research
14
+ Classifier: Operating System :: MacOS :: MacOS X
15
+ Classifier: Operating System :: Microsoft :: Windows
16
+ Classifier: Operating System :: POSIX :: Linux
17
+ Classifier: Operating System :: Unix
18
+ Classifier: Programming Language :: Python
19
+ Classifier: Programming Language :: Python :: 3 :: Only
20
+ Classifier: Programming Language :: Python :: 3
21
+ Classifier: Programming Language :: Python :: 3.9
22
+ Classifier: Programming Language :: Python :: 3.10
23
+ Classifier: Programming Language :: Python :: 3.11
24
+ Classifier: Programming Language :: Python :: 3.12
25
+ Classifier: Programming Language :: Python :: 3.13
26
+ Classifier: Programming Language :: Python :: 3.14
27
+ Classifier: Topic :: Scientific/Engineering
28
+ Classifier: Topic :: Scientific/Engineering :: Information Analysis
29
+ Classifier: Topic :: Scientific/Engineering :: Mathematics
30
+ Classifier: Topic :: Scientific/Engineering :: Physics
31
+ Classifier: Topic :: Software Development
32
+ Classifier: Topic :: Utilities
33
+ Project-URL: Homepage, https://github.com/scikit-hep/awkward-1.0
34
+ Project-URL: Documentation, https://awkward-array.org
35
+ Project-URL: Source Code, https://github.com/scikit-hep/awkward-1.0
36
+ Project-URL: Bug Tracker, https://github.com/scikit-hep/awkward-1.0/issues
37
+ Project-URL: Discussions, https://github.com/scikit-hep/awkward-1.0/discussions
38
+ Project-URL: Chat, https://gitter.im/Scikit-HEP/awkward-array
39
+ Project-URL: Releases, https://github.com/scikit-hep/awkward-1.0/releases
40
+ Requires-Python: >=3.9
41
+ Requires-Dist: numpy>=1.18.0
42
+ Description-Content-Type: text/markdown
43
+
44
+ # `awkward-cpp`
45
+
46
+ `awkward-cpp` provides precompiled routines for the `awkward` package. It is not useful on its own, only as a dependency for `awkward `.
@@ -0,0 +1,12 @@
1
+ awkward_cpp/__init__.py,sha256=malu6jtLO0A1MbePF1n7_OHQ7TWYMMRJA9gcjpFsEAs,196
2
+ awkward_cpp/_kernel_signatures.py,sha256=f354WWp763koIHh-tacBVVNMTsYc6XvlHkpFxi6zH9Y,121449
3
+ awkward_cpp/cpu_kernels.py,sha256=tNi7C--EPxx3Vp98RTSrztvSdaxW80Ou4dVvGS9WluU,670
4
+ awkward_cpp/libawkward.py,sha256=nGvLxsZAuYKaxEMwAm4LnNrm1BPp9LDGTtBbFAd5Ccw,8616
5
+ awkward_cpp/lib/_ext.cpython-314-x86_64-linux-gnu.so,sha256=cOkVph82taWyWBm0CE9fJCt3I2dZJvIuf0NvPAB0Vk8,422616
6
+ awkward_cpp/lib/libawkward-cpu-kernels.so,sha256=TRVRFQ4SDX8BVNMnB0MxmidAWqmMDuk4PSj1KQBYaeM,698688
7
+ awkward_cpp/lib/libawkward.so,sha256=49IxX04AF2H5kpuj7I0iqTXpF1B9vaVFa4iTVbVtLO8,1061888
8
+ awkward_cpp-51.dist-info/METADATA,sha256=-nYEQ4FM9i7SsIirW4uVu33le3lTIE5TK9ByDc69gtA,2197
9
+ awkward_cpp-51.dist-info/WHEEL,sha256=MxvQWEoGJc3iaAiBjZladWWjfAK59HnYiOvk528D-60,157
10
+ awkward_cpp-51.dist-info/RECORD,,
11
+ awkward_cpp-51.dist-info/licenses/LICENSE,sha256=8F5OAD_PpZAb4NOYgFqGU6oelSEEM-AOiaTFUoSRtOY,1520
12
+ awkward_cpp-51.dist-info/licenses/rapidjson/license.txt,sha256=oUDl1G_nNKHHjxo8PvIHhx3XVki-cf3ajjCbI6uLHzI,5152
@@ -0,0 +1,6 @@
1
+ Wheel-Version: 1.0
2
+ Generator: scikit-build-core 0.11.6
3
+ Root-Is-Purelib: false
4
+ Tag: cp314-cp314-manylinux_2_27_x86_64
5
+ Tag: cp314-cp314-manylinux_2_28_x86_64
6
+
@@ -0,0 +1,29 @@
1
+ BSD 3-Clause License
2
+
3
+ Copyright (c) 2019, Jim Pivarski
4
+ All rights reserved.
5
+
6
+ Redistribution and use in source and binary forms, with or without
7
+ modification, are permitted provided that the following conditions are met:
8
+
9
+ 1. Redistributions of source code must retain the above copyright notice, this
10
+ list of conditions and the following disclaimer.
11
+
12
+ 2. Redistributions in binary form must reproduce the above copyright notice,
13
+ this list of conditions and the following disclaimer in the documentation
14
+ and/or other materials provided with the distribution.
15
+
16
+ 3. Neither the name of the copyright holder nor the names of its
17
+ contributors may be used to endorse or promote products derived from
18
+ this software without specific prior written permission.
19
+
20
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
23
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
24
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
26
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
27
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
28
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -0,0 +1,57 @@
1
+ Tencent is pleased to support the open source community by making RapidJSON available.
2
+
3
+ Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
4
+
5
+ If you have downloaded a copy of the RapidJSON binary from Tencent, please note that the RapidJSON binary is licensed under the MIT License.
6
+ If you have downloaded a copy of the RapidJSON source code from Tencent, please note that RapidJSON source code is licensed under the MIT License, except for the third-party components listed below which are subject to different license terms. Your integration of RapidJSON into your own projects may require compliance with the MIT License, as well as the other licenses applicable to the third-party components included within RapidJSON. To avoid the problematic JSON license in your own projects, it's sufficient to exclude the bin/jsonchecker/ directory, as it's the only code under the JSON license.
7
+ A copy of the MIT License is included in this file.
8
+
9
+ Other dependencies and licenses:
10
+
11
+ Open Source Software Licensed Under the BSD License:
12
+ --------------------------------------------------------------------
13
+
14
+ The msinttypes r29
15
+ Copyright (c) 2006-2013 Alexander Chemeris
16
+ All rights reserved.
17
+
18
+ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
19
+
20
+ * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
21
+ * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
22
+ * Neither the name of copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
23
+
24
+ THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25
+
26
+ Open Source Software Licensed Under the JSON License:
27
+ --------------------------------------------------------------------
28
+
29
+ json.org
30
+ Copyright (c) 2002 JSON.org
31
+ All Rights Reserved.
32
+
33
+ JSON_checker
34
+ Copyright (c) 2002 JSON.org
35
+ All Rights Reserved.
36
+
37
+
38
+ Terms of the JSON License:
39
+ ---------------------------------------------------
40
+
41
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
42
+
43
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
44
+
45
+ The Software shall be used for Good, not Evil.
46
+
47
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
48
+
49
+
50
+ Terms of the MIT License:
51
+ --------------------------------------------------------------------
52
+
53
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
54
+
55
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
56
+
57
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.