l0n0lc 0.5.1__tar.gz → 0.6.0__tar.gz
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.
- {l0n0lc-0.5.1 → l0n0lc-0.6.0}/PKG-INFO +1 -2
- {l0n0lc-0.5.1 → l0n0lc-0.6.0}/l0n0lc/c/345/237/272/347/241/200/345/244/204/347/220/206.py +0 -100
- {l0n0lc-0.5.1 → l0n0lc-0.6.0}/l0n0lc/jit.py +0 -4
- {l0n0lc-0.5.1 → l0n0lc-0.6.0}/l0n0lc.egg-info/PKG-INFO +1 -2
- {l0n0lc-0.5.1 → l0n0lc-0.6.0}/l0n0lc.egg-info/SOURCES.txt +0 -1
- {l0n0lc-0.5.1 → l0n0lc-0.6.0}/pyproject.toml +2 -4
- l0n0lc-0.5.1/l0n0lc.egg-info/requires.txt +0 -1
- {l0n0lc-0.5.1 → l0n0lc-0.6.0}/LICENSE +0 -0
- {l0n0lc-0.5.1 → l0n0lc-0.6.0}/README.md +0 -0
- {l0n0lc-0.5.1 → l0n0lc-0.6.0}/l0n0lc/StdList.py +0 -0
- {l0n0lc-0.5.1 → l0n0lc-0.6.0}/l0n0lc/StdMap.py +0 -0
- {l0n0lc-0.5.1 → l0n0lc-0.6.0}/l0n0lc/__init__.py +0 -0
- {l0n0lc-0.5.1 → l0n0lc-0.6.0}/l0n0lc//347/274/226/350/257/221.py" +0 -0
- {l0n0lc-0.5.1 → l0n0lc-0.6.0}/l0n0lc//351/200/232/347/224/250.py" +0 -0
- {l0n0lc-0.5.1 → l0n0lc-0.6.0}/l0n0lc.egg-info/dependency_links.txt +0 -0
- {l0n0lc-0.5.1 → l0n0lc-0.6.0}/l0n0lc.egg-info/top_level.txt +0 -0
- {l0n0lc-0.5.1 → l0n0lc-0.6.0}/setup.cfg +0 -0
@@ -1,12 +1,11 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: l0n0lc
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.6.0
|
4
4
|
Summary: 用python写c
|
5
5
|
Classifier: Programming Language :: Python :: 3
|
6
6
|
Requires-Python: >=3.10
|
7
7
|
Description-Content-Type: text/markdown
|
8
8
|
License-File: LICENSE
|
9
|
-
Requires-Dist: numpy>=1.26.0
|
10
9
|
Dynamic: license-file
|
11
10
|
|
12
11
|
# 将python函数翻译为c++函数并运行
|
@@ -1,6 +1,5 @@
|
|
1
1
|
from typing import Union, List, get_origin, get_args
|
2
2
|
from .通用 import 生成变量Id, toCString
|
3
|
-
import numpy as np
|
4
3
|
import ctypes
|
5
4
|
|
6
5
|
|
@@ -61,10 +60,6 @@ def py类型转ctypes类型(类型):
|
|
61
60
|
if 类型 is 指针:
|
62
61
|
return ctypes.c_void_p
|
63
62
|
|
64
|
-
# numpy dtype 转换
|
65
|
-
return numpy类型转ctypes类型(类型)
|
66
|
-
|
67
|
-
|
68
63
|
额外py转c函数 = []
|
69
64
|
|
70
65
|
|
@@ -104,98 +99,12 @@ def py类型转c类型(类型):
|
|
104
99
|
val_type = py类型转c类型(args[1])
|
105
100
|
return f"std::unordered_map<{key_type}, {val_type}>&"
|
106
101
|
|
107
|
-
# numpy dtype 转换
|
108
|
-
ret = numpy类型转c类型(类型)
|
109
|
-
if ret is not None:
|
110
|
-
return ret
|
111
|
-
|
112
102
|
# 直接传字符串类型名
|
113
103
|
if isinstance(类型, str):
|
114
104
|
return 类型
|
115
105
|
|
116
106
|
return cpp类型.ANY
|
117
107
|
|
118
|
-
|
119
|
-
额外numpy转ctypes函数 = []
|
120
|
-
|
121
|
-
|
122
|
-
def numpy类型转ctypes类型(npdtype):
|
123
|
-
ret = 执行额外函数(额外numpy转ctypes函数, npdtype)
|
124
|
-
if ret is not None:
|
125
|
-
return ret
|
126
|
-
|
127
|
-
if npdtype == np.int8:
|
128
|
-
return ctypes.c_int8
|
129
|
-
if npdtype == np.int16:
|
130
|
-
return ctypes.c_int16
|
131
|
-
if npdtype == np.int32:
|
132
|
-
return ctypes.c_int32
|
133
|
-
if npdtype == np.int64:
|
134
|
-
return ctypes.c_int64
|
135
|
-
if npdtype == np.uint8:
|
136
|
-
return ctypes.c_uint8
|
137
|
-
if npdtype == np.uint16:
|
138
|
-
return ctypes.c_uint16
|
139
|
-
if npdtype == np.uint32:
|
140
|
-
return ctypes.c_uint32
|
141
|
-
if npdtype == np.uint64:
|
142
|
-
return ctypes.c_uint64
|
143
|
-
try:
|
144
|
-
if npdtype == np.bool_:
|
145
|
-
return ctypes.c_bool
|
146
|
-
except:
|
147
|
-
pass
|
148
|
-
try:
|
149
|
-
if npdtype == np.bool: # type: ignore
|
150
|
-
return ctypes.c_bool
|
151
|
-
except:
|
152
|
-
pass
|
153
|
-
if npdtype == np.float32:
|
154
|
-
return ctypes.c_float
|
155
|
-
if npdtype == np.float64:
|
156
|
-
return ctypes.c_double
|
157
|
-
|
158
|
-
|
159
|
-
额外numpy转c函数 = []
|
160
|
-
|
161
|
-
|
162
|
-
def numpy类型转c类型(npdtype):
|
163
|
-
ret = 执行额外函数(额外numpy转c函数, npdtype)
|
164
|
-
if ret is not None:
|
165
|
-
return ret
|
166
|
-
|
167
|
-
if npdtype == np.int8:
|
168
|
-
return cpp类型.INT8_T
|
169
|
-
if npdtype == np.int16:
|
170
|
-
return cpp类型.INT16_T
|
171
|
-
if npdtype == np.int32:
|
172
|
-
return cpp类型.INT32_T
|
173
|
-
if npdtype == np.int64:
|
174
|
-
return cpp类型.INT64_T
|
175
|
-
if npdtype == np.uint8:
|
176
|
-
return cpp类型.UINT8_T
|
177
|
-
if npdtype == np.uint16:
|
178
|
-
return cpp类型.UINT16_T
|
179
|
-
if npdtype == np.uint32:
|
180
|
-
return cpp类型.UINT32_T
|
181
|
-
if npdtype == np.uint64:
|
182
|
-
return cpp类型.UINT64_T
|
183
|
-
try:
|
184
|
-
if npdtype == np.bool_:
|
185
|
-
return cpp类型.BOOL
|
186
|
-
except:
|
187
|
-
pass
|
188
|
-
try:
|
189
|
-
if npdtype == np.bool: # type: ignore
|
190
|
-
return cpp类型.BOOL
|
191
|
-
except:
|
192
|
-
pass
|
193
|
-
if npdtype == np.float16:
|
194
|
-
return cpp类型.HALF
|
195
|
-
if npdtype == np.float32:
|
196
|
-
return cpp类型.FLOAT
|
197
|
-
|
198
|
-
|
199
108
|
def cpp类型检查(类型, 支持提示: str):
|
200
109
|
if 类型 not in [int, float, str, bool]:
|
201
110
|
raise Exception(f'{支持提示} 仅支持 [int, float, str, bool]')
|
@@ -235,15 +144,6 @@ def 从list构建初始化列表(value: List):
|
|
235
144
|
return list初始化列表(初始化列表, 数据类型列表, len(value))
|
236
145
|
|
237
146
|
|
238
|
-
def 从ndarray构建初始化列表(value: np.ndarray):
|
239
|
-
value = value.reshape(value.size)
|
240
|
-
类型 = numpy类型转c类型(value.dtype)
|
241
|
-
if 类型 is None:
|
242
|
-
raise Exception(f'暂不支持{value.dtype}')
|
243
|
-
初始化列表 = '{' + ','.join(value) + '}'
|
244
|
-
return list初始化列表(初始化列表, 类型, value.size)
|
245
|
-
|
246
|
-
|
247
147
|
class dict初始化列表:
|
248
148
|
def __init__(
|
249
149
|
self,
|
@@ -290,10 +290,6 @@ class py2cpp编译器(ast.NodeVisitor):
|
|
290
290
|
参数字符串 = ','.join(参数列表)
|
291
291
|
return f'{fn.__name__}({参数字符串});'
|
292
292
|
|
293
|
-
def 获取numpy属性(self, 对象, 属性):
|
294
|
-
if 属性 == 'size':
|
295
|
-
pass
|
296
|
-
|
297
293
|
def 获取Subscript(self, node: ast.Subscript):
|
298
294
|
对象 = self.获取值(node.value)
|
299
295
|
切片 = node.slice
|
@@ -1,12 +1,11 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: l0n0lc
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.6.0
|
4
4
|
Summary: 用python写c
|
5
5
|
Classifier: Programming Language :: Python :: 3
|
6
6
|
Requires-Python: >=3.10
|
7
7
|
Description-Content-Type: text/markdown
|
8
8
|
License-File: LICENSE
|
9
|
-
Requires-Dist: numpy>=1.26.0
|
10
9
|
Dynamic: license-file
|
11
10
|
|
12
11
|
# 将python函数翻译为c++函数并运行
|
@@ -1,12 +1,10 @@
|
|
1
1
|
[project]
|
2
2
|
name = "l0n0lc"
|
3
|
-
version = "0.
|
3
|
+
version = "0.6.0"
|
4
4
|
description = "用python写c"
|
5
5
|
readme = "README.md"
|
6
6
|
requires-python = ">=3.10"
|
7
|
-
dependencies = [
|
8
|
-
"numpy>=1.26.0",
|
9
|
-
]
|
7
|
+
dependencies = []
|
10
8
|
classifiers = [
|
11
9
|
"Programming Language :: Python :: 3"
|
12
10
|
]
|
@@ -1 +0,0 @@
|
|
1
|
-
numpy>=1.26.0
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|