esiaccel 0.1.5.dev205__cp38-cp38-win_amd64.whl → 0.1.5.dev209__cp38-cp38-win_amd64.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.
Potentially problematic release.
This version of esiaccel might be problematic. Click here for more details.
- esiaccel/CosimBackend.dll +0 -0
- esiaccel/ESICppRuntime.dll +0 -0
- esiaccel/EsiCosimDpiServer.dll +0 -0
- esiaccel/MtiPli.dll +0 -0
- esiaccel/cosim/simulator.py +159 -35
- esiaccel/cosim/verilator.py +19 -4
- esiaccel/esiCppAccel.cp38-win_amd64.pyd +0 -0
- esiaccel/esiquery.exe +0 -0
- {esiaccel-0.1.5.dev205.dist-info → esiaccel-0.1.5.dev209.dist-info}/METADATA +1 -1
- {esiaccel-0.1.5.dev205.dist-info → esiaccel-0.1.5.dev209.dist-info}/RECORD +14 -14
- {esiaccel-0.1.5.dev205.dist-info → esiaccel-0.1.5.dev209.dist-info}/LICENSE +0 -0
- {esiaccel-0.1.5.dev205.dist-info → esiaccel-0.1.5.dev209.dist-info}/WHEEL +0 -0
- {esiaccel-0.1.5.dev205.dist-info → esiaccel-0.1.5.dev209.dist-info}/entry_points.txt +0 -0
- {esiaccel-0.1.5.dev205.dist-info → esiaccel-0.1.5.dev209.dist-info}/top_level.txt +0 -0
esiaccel/CosimBackend.dll
CHANGED
|
Binary file
|
esiaccel/ESICppRuntime.dll
CHANGED
|
Binary file
|
esiaccel/EsiCosimDpiServer.dll
CHANGED
|
Binary file
|
esiaccel/MtiPli.dll
CHANGED
|
Binary file
|
esiaccel/cosim/simulator.py
CHANGED
|
@@ -9,7 +9,8 @@ import socket
|
|
|
9
9
|
import subprocess
|
|
10
10
|
import time
|
|
11
11
|
from pathlib import Path
|
|
12
|
-
from typing import Dict, List
|
|
12
|
+
from typing import Dict, List, Optional, Callable, IO
|
|
13
|
+
import threading
|
|
13
14
|
|
|
14
15
|
_thisdir = Path(__file__).parent
|
|
15
16
|
CosimCollateralDir = _thisdir
|
|
@@ -77,9 +78,13 @@ class SourceFiles:
|
|
|
77
78
|
|
|
78
79
|
class SimProcess:
|
|
79
80
|
|
|
80
|
-
def __init__(self,
|
|
81
|
+
def __init__(self,
|
|
82
|
+
proc: subprocess.Popen,
|
|
83
|
+
port: int,
|
|
84
|
+
threads: Optional[List[threading.Thread]] = None):
|
|
81
85
|
self.proc = proc
|
|
82
86
|
self.port = port
|
|
87
|
+
self.threads: List[threading.Thread] = threads or []
|
|
83
88
|
|
|
84
89
|
def force_stop(self):
|
|
85
90
|
"""Make sure to stop the simulation no matter what."""
|
|
@@ -92,6 +97,10 @@ class SimProcess:
|
|
|
92
97
|
# If the simulation doesn't exit of its own free will, kill it.
|
|
93
98
|
self.proc.kill()
|
|
94
99
|
|
|
100
|
+
# Join reader threads (they should exit once pipes are closed).
|
|
101
|
+
for t in self.threads:
|
|
102
|
+
t.join()
|
|
103
|
+
|
|
95
104
|
|
|
96
105
|
class Simulator:
|
|
97
106
|
|
|
@@ -100,11 +109,72 @@ class Simulator:
|
|
|
100
109
|
# broken behavior by overriding this.
|
|
101
110
|
UsesStderr = True
|
|
102
111
|
|
|
103
|
-
def __init__(self,
|
|
112
|
+
def __init__(self,
|
|
113
|
+
sources: SourceFiles,
|
|
114
|
+
run_dir: Path,
|
|
115
|
+
debug: bool,
|
|
116
|
+
run_stdout_callback: Optional[Callable[[str], None]] = None,
|
|
117
|
+
run_stderr_callback: Optional[Callable[[str], None]] = None,
|
|
118
|
+
compile_stdout_callback: Optional[Callable[[str], None]] = None,
|
|
119
|
+
compile_stderr_callback: Optional[Callable[[str], None]] = None,
|
|
120
|
+
make_default_logs: bool = True):
|
|
121
|
+
"""Simulator base class.
|
|
122
|
+
|
|
123
|
+
Optional sinks can be provided for capturing output. If not provided,
|
|
124
|
+
the simulator will write to log files in `run_dir`.
|
|
125
|
+
|
|
126
|
+
Args:
|
|
127
|
+
sources: SourceFiles describing RTL/DPI inputs.
|
|
128
|
+
run_dir: Directory where build/run artifacts are placed.
|
|
129
|
+
debug: Enable cosim debug mode.
|
|
130
|
+
run_stdout_callback: Line-based callback for runtime stdout.
|
|
131
|
+
run_stderr_callback: Line-based callback for runtime stderr.
|
|
132
|
+
compile_stdout_callback: Line-based callback for compile stdout.
|
|
133
|
+
compile_stderr_callback: Line-based callback for compile stderr.
|
|
134
|
+
make_default_logs: If True and corresponding callback is not supplied,
|
|
135
|
+
create log file and emit via internally-created callback.
|
|
136
|
+
"""
|
|
104
137
|
self.sources = sources
|
|
105
138
|
self.run_dir = run_dir
|
|
106
139
|
self.debug = debug
|
|
107
140
|
|
|
141
|
+
# Unified list of any log file handles we opened.
|
|
142
|
+
self._default_files: List[IO[str]] = []
|
|
143
|
+
|
|
144
|
+
def _ensure_default(cb: Optional[Callable[[str], None]], filename: str):
|
|
145
|
+
"""Return (callback, file_handle_or_None) with optional file creation.
|
|
146
|
+
|
|
147
|
+
Behavior:
|
|
148
|
+
* If a callback is provided, return it unchanged with no file.
|
|
149
|
+
* If no callback and make_default_logs is False, return (None, None).
|
|
150
|
+
* If no callback and make_default_logs is True, create a log file and
|
|
151
|
+
return a writer callback plus the opened file handle.
|
|
152
|
+
"""
|
|
153
|
+
if cb is not None:
|
|
154
|
+
return cb, None
|
|
155
|
+
if not make_default_logs:
|
|
156
|
+
return None, None
|
|
157
|
+
p = self.run_dir / filename
|
|
158
|
+
p.parent.mkdir(parents=True, exist_ok=True)
|
|
159
|
+
logf = p.open("w+")
|
|
160
|
+
self._default_files.append(logf)
|
|
161
|
+
|
|
162
|
+
def _writer(line: str, _lf=logf):
|
|
163
|
+
_lf.write(line + "\n")
|
|
164
|
+
_lf.flush()
|
|
165
|
+
|
|
166
|
+
return _writer, logf
|
|
167
|
+
|
|
168
|
+
# Initialize all four (compile/run stdout/stderr) uniformly.
|
|
169
|
+
self._compile_stdout_cb, self._compile_stdout_log = _ensure_default(
|
|
170
|
+
compile_stdout_callback, 'compile_stdout.log')
|
|
171
|
+
self._compile_stderr_cb, self._compile_stderr_log = _ensure_default(
|
|
172
|
+
compile_stderr_callback, 'compile_stderr.log')
|
|
173
|
+
self._run_stdout_cb, self._run_stdout_log = _ensure_default(
|
|
174
|
+
run_stdout_callback, 'sim_stdout.log')
|
|
175
|
+
self._run_stderr_cb, self._run_stderr_log = _ensure_default(
|
|
176
|
+
run_stderr_callback, 'sim_stderr.log')
|
|
177
|
+
|
|
108
178
|
@staticmethod
|
|
109
179
|
def get_env() -> Dict[str, str]:
|
|
110
180
|
"""Get the environment variables to locate shared objects."""
|
|
@@ -123,23 +193,29 @@ class Simulator:
|
|
|
123
193
|
def compile(self) -> int:
|
|
124
194
|
cmds = self.compile_commands()
|
|
125
195
|
self.run_dir.mkdir(parents=True, exist_ok=True)
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
196
|
+
for cmd in cmds:
|
|
197
|
+
ret = self._start_process_with_callbacks(
|
|
198
|
+
cmd,
|
|
199
|
+
env=Simulator.get_env(),
|
|
200
|
+
cwd=None,
|
|
201
|
+
stdout_cb=self._compile_stdout_cb,
|
|
202
|
+
stderr_cb=self._compile_stderr_cb,
|
|
203
|
+
wait=True)
|
|
204
|
+
if isinstance(ret, int) and ret != 0:
|
|
205
|
+
print("====== Compilation failure")
|
|
206
|
+
|
|
207
|
+
# If we have the default file loggers, print the compilation logs to
|
|
208
|
+
# console. Else, assume that the user has already captured them.
|
|
209
|
+
if self.UsesStderr:
|
|
210
|
+
if self._compile_stderr_log is not None:
|
|
211
|
+
self._compile_stderr_log.seek(0)
|
|
212
|
+
print(self._compile_stderr_log.read())
|
|
213
|
+
else:
|
|
214
|
+
if self._compile_stdout_log is not None:
|
|
215
|
+
self._compile_stdout_log.seek(0)
|
|
216
|
+
print(self._compile_stdout_log.read())
|
|
217
|
+
|
|
218
|
+
return ret
|
|
143
219
|
return 0
|
|
144
220
|
|
|
145
221
|
def run_command(self, gui: bool) -> List[str]:
|
|
@@ -148,11 +224,12 @@ class Simulator:
|
|
|
148
224
|
|
|
149
225
|
def run_proc(self, gui: bool = False) -> SimProcess:
|
|
150
226
|
"""Run the simulation process. Returns the Popen object and the port which
|
|
151
|
-
the simulation is listening on.
|
|
152
|
-
|
|
227
|
+
the simulation is listening on.
|
|
228
|
+
|
|
229
|
+
If user-provided stdout/stderr sinks were supplied in the constructor,
|
|
230
|
+
they are used. Otherwise, log files are created in `run_dir`.
|
|
231
|
+
"""
|
|
153
232
|
self.run_dir.mkdir(parents=True, exist_ok=True)
|
|
154
|
-
simStdout = open(self.run_dir / "sim_stdout.log", "w")
|
|
155
|
-
simStderr = open(self.run_dir / "sim_stderr.log", "w")
|
|
156
233
|
|
|
157
234
|
# Erase the config file if it exists. We don't want to read
|
|
158
235
|
# an old config.
|
|
@@ -168,19 +245,19 @@ class Simulator:
|
|
|
168
245
|
# Slow the simulation down to one tick per millisecond.
|
|
169
246
|
simEnv["DEBUG_PERIOD"] = "1"
|
|
170
247
|
rcmd = self.run_command(gui)
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
248
|
+
# Start process with asynchronous output capture.
|
|
249
|
+
proc, threads = self._start_process_with_callbacks(
|
|
250
|
+
rcmd,
|
|
251
|
+
env=simEnv,
|
|
252
|
+
cwd=self.run_dir,
|
|
253
|
+
stdout_cb=self._run_stdout_cb,
|
|
254
|
+
stderr_cb=self._run_stderr_cb,
|
|
255
|
+
wait=False)
|
|
179
256
|
|
|
180
257
|
# Get the port which the simulation RPC selected.
|
|
181
258
|
checkCount = 0
|
|
182
259
|
while (not os.path.exists(portFileName)) and \
|
|
183
|
-
|
|
260
|
+
proc.poll() is None:
|
|
184
261
|
time.sleep(0.1)
|
|
185
262
|
checkCount += 1
|
|
186
263
|
if checkCount > 500 and not gui:
|
|
@@ -200,10 +277,57 @@ class Simulator:
|
|
|
200
277
|
checkCount += 1
|
|
201
278
|
if checkCount > 200:
|
|
202
279
|
raise Exception(f"Cosim RPC port ({port}) never opened")
|
|
203
|
-
if
|
|
280
|
+
if proc.poll() is not None:
|
|
204
281
|
raise Exception("Simulation exited early")
|
|
205
282
|
time.sleep(0.05)
|
|
206
|
-
return SimProcess(proc=
|
|
283
|
+
return SimProcess(proc=proc, port=port, threads=threads)
|
|
284
|
+
|
|
285
|
+
def _start_process_with_callbacks(
|
|
286
|
+
self, cmd: List[str], env: Optional[Dict[str, str]], cwd: Optional[Path],
|
|
287
|
+
stdout_cb: Optional[Callable[[str],
|
|
288
|
+
None]], stderr_cb: Optional[Callable[[str],
|
|
289
|
+
None]],
|
|
290
|
+
wait: bool) -> int | tuple[subprocess.Popen, List[threading.Thread]]:
|
|
291
|
+
"""Start a subprocess and stream its stdout/stderr to callbacks.
|
|
292
|
+
|
|
293
|
+
If wait is True, blocks until process completes and returns its exit code.
|
|
294
|
+
If wait is False, returns the Popen object (threads keep streaming).
|
|
295
|
+
"""
|
|
296
|
+
proc = subprocess.Popen(cmd,
|
|
297
|
+
stdout=subprocess.PIPE,
|
|
298
|
+
stderr=subprocess.PIPE,
|
|
299
|
+
env=env,
|
|
300
|
+
cwd=cwd,
|
|
301
|
+
text=True,
|
|
302
|
+
preexec_fn=os.setsid)
|
|
303
|
+
|
|
304
|
+
def _reader(pipe, cb):
|
|
305
|
+
if pipe is None:
|
|
306
|
+
return
|
|
307
|
+
for raw in pipe:
|
|
308
|
+
if raw.endswith('\n'):
|
|
309
|
+
raw = raw[:-1]
|
|
310
|
+
if cb:
|
|
311
|
+
try:
|
|
312
|
+
cb(raw)
|
|
313
|
+
except Exception as e:
|
|
314
|
+
print(f"Exception in simulator output callback: {e}")
|
|
315
|
+
|
|
316
|
+
threads: List[threading.Thread] = [
|
|
317
|
+
threading.Thread(target=_reader,
|
|
318
|
+
args=(proc.stdout, stdout_cb),
|
|
319
|
+
daemon=True),
|
|
320
|
+
threading.Thread(target=_reader,
|
|
321
|
+
args=(proc.stderr, stderr_cb),
|
|
322
|
+
daemon=True),
|
|
323
|
+
]
|
|
324
|
+
for t in threads:
|
|
325
|
+
t.start()
|
|
326
|
+
if wait:
|
|
327
|
+
for t in threads:
|
|
328
|
+
t.join()
|
|
329
|
+
return proc.wait()
|
|
330
|
+
return proc, threads
|
|
207
331
|
|
|
208
332
|
def run(self,
|
|
209
333
|
inner_command: str,
|
esiaccel/cosim/verilator.py
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
import os
|
|
6
6
|
from pathlib import Path
|
|
7
|
-
from typing import List
|
|
7
|
+
from typing import List, Optional, Callable
|
|
8
8
|
|
|
9
9
|
from .simulator import CosimCollateralDir, Simulator, SourceFiles
|
|
10
10
|
|
|
@@ -14,9 +14,23 @@ class Verilator(Simulator):
|
|
|
14
14
|
|
|
15
15
|
DefaultDriver = CosimCollateralDir / "driver.cpp"
|
|
16
16
|
|
|
17
|
-
def __init__(self,
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
def __init__(self,
|
|
18
|
+
sources: SourceFiles,
|
|
19
|
+
run_dir: Path,
|
|
20
|
+
debug: bool,
|
|
21
|
+
run_stdout_callback: Optional[Callable[[str], None]] = None,
|
|
22
|
+
run_stderr_callback: Optional[Callable[[str], None]] = None,
|
|
23
|
+
compile_stdout_callback: Optional[Callable[[str], None]] = None,
|
|
24
|
+
compile_stderr_callback: Optional[Callable[[str], None]] = None,
|
|
25
|
+
make_default_logs: bool = True):
|
|
26
|
+
super().__init__(sources=sources,
|
|
27
|
+
run_dir=run_dir,
|
|
28
|
+
debug=debug,
|
|
29
|
+
run_stdout_callback=run_stdout_callback,
|
|
30
|
+
run_stderr_callback=run_stderr_callback,
|
|
31
|
+
compile_stdout_callback=compile_stdout_callback,
|
|
32
|
+
compile_stderr_callback=compile_stderr_callback,
|
|
33
|
+
make_default_logs=make_default_logs)
|
|
20
34
|
self.verilator = "verilator"
|
|
21
35
|
if "VERILATOR_PATH" in os.environ:
|
|
22
36
|
self.verilator = os.environ["VERILATOR_PATH"]
|
|
@@ -36,6 +50,7 @@ class Verilator(Simulator):
|
|
|
36
50
|
"-j",
|
|
37
51
|
"0",
|
|
38
52
|
"--output-split",
|
|
53
|
+
"--autoflush",
|
|
39
54
|
"--assert",
|
|
40
55
|
str(Verilator.DefaultDriver),
|
|
41
56
|
]
|
|
Binary file
|
esiaccel/esiquery.exe
CHANGED
|
Binary file
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
esiaccel/CosimBackend.dll,sha256=
|
|
1
|
+
esiaccel/CosimBackend.dll,sha256=AgPnIBIWj-bX28_CcFml9S-qTXRy0htWbzT7bi0LPl8,7152128
|
|
2
2
|
esiaccel/CosimBackend.lib,sha256=5tnhX-BFxzlslXNsblCWXjY583sDW4lFLGNch7hzWZw,4992924
|
|
3
|
-
esiaccel/ESICppRuntime.dll,sha256=
|
|
3
|
+
esiaccel/ESICppRuntime.dll,sha256=mIqFn0UZyWxIbwIjhmwEz1eigWoQ9IdqITRSG0vlLA0,4078592
|
|
4
4
|
esiaccel/ESICppRuntime.lib,sha256=tltAogZ3c0ryYHirOXz_qltr5aNdoquZ-Q4yVqim3FY,15154004
|
|
5
|
-
esiaccel/EsiCosimDpiServer.dll,sha256=
|
|
5
|
+
esiaccel/EsiCosimDpiServer.dll,sha256=7sK-w-saE7RXOXJLkOvyv1VJQ7-fSaSmX39pnn23y_k,159744
|
|
6
6
|
esiaccel/EsiCosimDpiServer.lib,sha256=zn3bIX10e2HQtwZOi1xpqeNfy4AdZm8Jx634HVTVQ8w,604164
|
|
7
|
-
esiaccel/MtiPli.dll,sha256=
|
|
7
|
+
esiaccel/MtiPli.dll,sha256=fFEB2NgA7ppeUOf4o_z94MOn3VEIJpsxPwGwpyrzlic,14848
|
|
8
8
|
esiaccel/MtiPli.lib,sha256=juJ2Asmv6cnozNPpXvGeKkieYFcXK8MOYmDQZz-dAy4,14570
|
|
9
9
|
esiaccel/__init__.py,sha256=65xXWHwJwRePsyhWk837NpzuN0qsNhoAX29TOiSYKGc,905
|
|
10
10
|
esiaccel/accelerator.py,sha256=BcXPsUqcQV3YsVVyYbz9P6JnZLlcnuageFbJwID9_3s,3318
|
|
11
11
|
esiaccel/codegen.py,sha256=uoYELtnIabVvgLeCABj-mWras0BvmSKABPH-cd9nDFk,6560
|
|
12
12
|
esiaccel/esi-cosim.py,sha256=P7n3SBgKPnXynwghY5zK1FmpqZkbC_YxfVIvNNQNl6Q,3817
|
|
13
|
-
esiaccel/esiCppAccel.cp38-win_amd64.pyd,sha256=
|
|
14
|
-
esiaccel/esiquery.exe,sha256=
|
|
13
|
+
esiaccel/esiCppAccel.cp38-win_amd64.pyd,sha256=ZpFYVaz4Umxxe53ZR32ssCxAogWovCDky1SeWpUXlck,500224
|
|
14
|
+
esiaccel/esiquery.exe,sha256=jZ-k6yc0Yv20GUw2R6xfU37MuvhztKx18fgY3lzlyhU,441856
|
|
15
15
|
esiaccel/types.py,sha256=LFLzUCvtYF6FLsmKet6eJTMq2ija2Z5kxd5Ks6tkS4U,19044
|
|
16
16
|
esiaccel/utils.py,sha256=q-8fmgJ9tUvmBsIvqZiZ7u845IJhOjvjYTQLhhrNYl0,1515
|
|
17
17
|
esiaccel/cmake/esiaccelConfig.cmake,sha256=u2aW99k1lEcmYTG1P3BTJqtmDrj53wUUaBz_jzw8kYY,565
|
|
@@ -21,8 +21,8 @@ esiaccel/cosim/Cosim_Manifest.sv,sha256=vl9b6XieEkP880IBw1ferekBnDJwFanZZggJJGer
|
|
|
21
21
|
esiaccel/cosim/driver.cpp,sha256=DrEKkSN7Y_Hu7wcaUulH5mbC2L4yB9xLClRMeRUpzHM,3842
|
|
22
22
|
esiaccel/cosim/driver.sv,sha256=ro-j9GM164A1W0MDPkqYfEn3TUKHSqVvgjO31fnloQI,1428
|
|
23
23
|
esiaccel/cosim/questa.py,sha256=d6PnjzRxQpu47Zpez6hmzTc_aMQdrmQRSmnpOXSPFVU,2386
|
|
24
|
-
esiaccel/cosim/simulator.py,sha256=
|
|
25
|
-
esiaccel/cosim/verilator.py,sha256=
|
|
24
|
+
esiaccel/cosim/simulator.py,sha256=aWhEjuAwdzgAIRUsW9yC2ACBIbdxbmMhJSGnH-OP_n0,12975
|
|
25
|
+
esiaccel/cosim/verilator.py,sha256=WsPPqI7tYjW44SBFbGKhmxIK0JS0p85ar6oeAToNaks,2681
|
|
26
26
|
esiaccel/include/esi/Accelerator.h,sha256=RhkZ2HeMZ0iHc5BkHdDWXoeg9J9lyPQciH5bWq5Qc_w,9772
|
|
27
27
|
esiaccel/include/esi/CLI.h,sha256=Nn8tHn_xtEfkrD7USE2tao6ktYOJ6xcbnhZkS9-ox0A,2540
|
|
28
28
|
esiaccel/include/esi/Common.h,sha256=IGJvAU72dlearXFbSmlXFFriy8aomirp7opEBjgewek,5775
|
|
@@ -38,9 +38,9 @@ esiaccel/include/esi/Utils.h,sha256=KPd75GajIFeTBVJocXBjwsJqhbZg-ShWZCIe3oQdBss,
|
|
|
38
38
|
esiaccel/include/esi/backends/Cosim.h,sha256=s7vYd0ra6m1nvk-n37MjvBoGVI-CCUKBt0DU4PKlaHM,2838
|
|
39
39
|
esiaccel/include/esi/backends/RpcServer.h,sha256=WMwnhwU2qnrcglGNeiKg9QQHpkDx1QE1JydKYDK4jqE,1856
|
|
40
40
|
esiaccel/include/esi/backends/Trace.h,sha256=kx4wwLH3a0ndmRUdaDyYGZ1SP83zlpFrk30Nw8ZrJJA,3286
|
|
41
|
-
esiaccel-0.1.5.
|
|
42
|
-
esiaccel-0.1.5.
|
|
43
|
-
esiaccel-0.1.5.
|
|
44
|
-
esiaccel-0.1.5.
|
|
45
|
-
esiaccel-0.1.5.
|
|
46
|
-
esiaccel-0.1.5.
|
|
41
|
+
esiaccel-0.1.5.dev209.dist-info/LICENSE,sha256=vtnVnB8_lN1yPYcA5MeT56R8UsQtBhyzZLBvu_KMf7I,13468
|
|
42
|
+
esiaccel-0.1.5.dev209.dist-info/METADATA,sha256=uCEdBlicSp6xfwL1Cwvo_s0ME7XNS_k4NIB7SsOqbEE,16127
|
|
43
|
+
esiaccel-0.1.5.dev209.dist-info/WHEEL,sha256=2M046GvC9RLU1f1TWyM-2sB7cRKLhAC7ucAFK8l8f24,99
|
|
44
|
+
esiaccel-0.1.5.dev209.dist-info/entry_points.txt,sha256=_CuNLV0fyTURxRREFwpzGycifZW_-7-MyuJNEwKK9J8,137
|
|
45
|
+
esiaccel-0.1.5.dev209.dist-info/top_level.txt,sha256=fYWTWMDK4PDu4ePQ9NtcFHas2k8-d1kWhTs2avPpgB4,9
|
|
46
|
+
esiaccel-0.1.5.dev209.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|