esiaccel 0.1.4.dev31__cp310-cp310-win_amd64.whl → 0.2.3.dev80__cp310-cp310-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.
Files changed (58) hide show
  1. esiaccel/CosimBackend.dll +0 -0
  2. esiaccel/CosimBackend.lib +0 -0
  3. esiaccel/CosimRpc.dll +0 -0
  4. esiaccel/CosimRpc.lib +0 -0
  5. esiaccel/ESICppRuntime.dll +0 -0
  6. esiaccel/ESICppRuntime.lib +0 -0
  7. esiaccel/EsiCosimDpiServer.dll +0 -0
  8. esiaccel/EsiCosimDpiServer.lib +0 -0
  9. esiaccel/{lib/MtiPli.dll → MtiPli.dll} +0 -0
  10. esiaccel/{lib/MtiPli.lib → MtiPli.lib} +0 -0
  11. esiaccel/__init__.py +22 -4
  12. esiaccel/abseil_dll.dll +0 -0
  13. esiaccel/accelerator.py +37 -5
  14. esiaccel/cares.dll +0 -0
  15. esiaccel/cmake/esiaccelConfig.cmake +34 -0
  16. esiaccel/codegen.py +3 -3
  17. esiaccel/cosim/Cosim_CycleCount.sv +84 -0
  18. esiaccel/cosim/Cosim_Endpoint.sv +61 -32
  19. esiaccel/cosim/driver.cpp +6 -6
  20. esiaccel/cosim/driver.sv +14 -0
  21. esiaccel/cosim/questa.py +141 -0
  22. esiaccel/cosim/simulator.py +383 -0
  23. esiaccel/cosim/verilator.py +92 -0
  24. esiaccel/esi-cosim.py +104 -0
  25. esiaccel/esiCppAccel.cp312-win_amd64.pyd +0 -0
  26. esiaccel/esiquery.exe +0 -0
  27. esiaccel/include/esi/Accelerator.h +14 -17
  28. esiaccel/include/esi/CLI.h +5 -5
  29. esiaccel/include/esi/Common.h +19 -2
  30. esiaccel/include/esi/Context.h +17 -9
  31. esiaccel/include/esi/Design.h +9 -4
  32. esiaccel/include/esi/Manifest.h +0 -2
  33. esiaccel/include/esi/Ports.h +230 -23
  34. esiaccel/include/esi/Services.h +92 -31
  35. esiaccel/include/esi/Types.h +162 -10
  36. esiaccel/include/esi/Values.h +313 -0
  37. esiaccel/include/esi/backends/Cosim.h +5 -12
  38. esiaccel/include/esi/backends/RpcClient.h +97 -0
  39. esiaccel/include/esi/backends/RpcServer.h +21 -3
  40. esiaccel/libcrypto-3-x64.dll +0 -0
  41. esiaccel/libprotobuf.dll +0 -0
  42. esiaccel/libssl-3-x64.dll +0 -0
  43. esiaccel/re2.dll +0 -0
  44. esiaccel/types.py +66 -26
  45. esiaccel/utils.py +21 -3
  46. esiaccel/zlib1.dll +0 -0
  47. {esiaccel-0.1.4.dev31.dist-info → esiaccel-0.2.3.dev80.dist-info}/METADATA +1 -1
  48. esiaccel-0.2.3.dev80.dist-info/RECORD +58 -0
  49. esiaccel/bin/esi-cosim.py +0 -423
  50. esiaccel/bin/esiquery.exe +0 -0
  51. esiaccel/esiCppAccel.cp310-win_amd64.pyd +0 -0
  52. esiaccel/lib/EsiCosimDpiServer.dll +0 -0
  53. esiaccel/lib/EsiCosimDpiServer.lib +0 -0
  54. esiaccel-0.1.4.dev31.dist-info/RECORD +0 -43
  55. {esiaccel-0.1.4.dev31.dist-info → esiaccel-0.2.3.dev80.dist-info}/WHEEL +0 -0
  56. {esiaccel-0.1.4.dev31.dist-info → esiaccel-0.2.3.dev80.dist-info}/entry_points.txt +0 -0
  57. {esiaccel-0.1.4.dev31.dist-info → esiaccel-0.2.3.dev80.dist-info}/licenses/LICENSE +0 -0
  58. {esiaccel-0.1.4.dev31.dist-info → esiaccel-0.2.3.dev80.dist-info}/top_level.txt +0 -0
esiaccel/types.py CHANGED
@@ -15,6 +15,7 @@ from __future__ import annotations
15
15
  from . import esiCppAccel as cpp
16
16
 
17
17
  from typing import TYPE_CHECKING
18
+
18
19
  if TYPE_CHECKING:
19
20
  from .accelerator import HWModule
20
21
 
@@ -26,22 +27,33 @@ import traceback
26
27
 
27
28
  def _get_esi_type(cpp_type: cpp.Type):
28
29
  """Get the wrapper class for a C++ type."""
29
- for cpp_type_cls, fn in __esi_mapping.items():
30
+ if isinstance(cpp_type, cpp.ChannelType):
31
+ return _get_esi_type(cpp_type.inner)
32
+
33
+ for cpp_type_cls, wrapper_cls in __esi_mapping.items():
30
34
  if isinstance(cpp_type, cpp_type_cls):
31
- return fn(cpp_type)
32
- return ESIType(cpp_type)
35
+ return wrapper_cls.wrap_cpp(cpp_type)
36
+ return ESIType.wrap_cpp(cpp_type)
33
37
 
34
38
 
35
- # Mapping from C++ types to functions constructing the Python object
36
- # corresponding to that type.
37
- __esi_mapping: Dict[Type, Callable] = {
38
- cpp.ChannelType: lambda cpp_type: _get_esi_type(cpp_type.inner)
39
- }
39
+ # Mapping from C++ types to wrapper classes
40
+ __esi_mapping: Dict[Type, Type] = {}
40
41
 
41
42
 
42
43
  class ESIType:
43
44
 
44
- def __init__(self, cpp_type: cpp.Type):
45
+ def __init__(self, id: str):
46
+ self._init_from_cpp(cpp.Type(id))
47
+
48
+ @classmethod
49
+ def wrap_cpp(cls, cpp_type: cpp.Type):
50
+ """Wrap a C++ ESI type with its corresponding Python ESI Type."""
51
+ instance = cls.__new__(cls)
52
+ instance._init_from_cpp(cpp_type)
53
+ return instance
54
+
55
+ def _init_from_cpp(self, cpp_type: cpp.Type):
56
+ """Initialize instance attributes from a C++ type object."""
45
57
  self.cpp_type = cpp_type
46
58
 
47
59
  @property
@@ -86,6 +98,9 @@ class ESIType:
86
98
 
87
99
  class VoidType(ESIType):
88
100
 
101
+ def __init__(self, id: str):
102
+ self._init_from_cpp(cpp.VoidType(id))
103
+
89
104
  def is_valid(self, obj) -> Tuple[bool, Optional[str]]:
90
105
  if obj is not None:
91
106
  return (False, f"void type cannot must represented by None, not {obj}")
@@ -110,8 +125,8 @@ __esi_mapping[cpp.VoidType] = VoidType
110
125
 
111
126
  class BitsType(ESIType):
112
127
 
113
- def __init__(self, cpp_type: cpp.BitsType):
114
- self.cpp_type: cpp.BitsType = cpp_type
128
+ def __init__(self, id: str, width: int):
129
+ self._init_from_cpp(cpp.BitsType(id, width))
115
130
 
116
131
  def is_valid(self, obj) -> Tuple[bool, Optional[str]]:
117
132
  if not isinstance(obj, (bytearray, bytes, list)):
@@ -143,8 +158,8 @@ __esi_mapping[cpp.BitsType] = BitsType
143
158
 
144
159
  class IntType(ESIType):
145
160
 
146
- def __init__(self, cpp_type: cpp.IntegerType):
147
- self.cpp_type: cpp.IntegerType = cpp_type
161
+ def __init__(self, id: str, width: int):
162
+ self._init_from_cpp(cpp.IntegerType(id, width))
148
163
 
149
164
  @property
150
165
  def bit_width(self) -> int:
@@ -153,6 +168,9 @@ class IntType(ESIType):
153
168
 
154
169
  class UIntType(IntType):
155
170
 
171
+ def __init__(self, id: str, width: int):
172
+ self._init_from_cpp(cpp.UIntType(id, width))
173
+
156
174
  def is_valid(self, obj) -> Tuple[bool, Optional[str]]:
157
175
  if not isinstance(obj, int):
158
176
  return (False, f"must be an int, not {type(obj)}")
@@ -176,6 +194,9 @@ __esi_mapping[cpp.UIntType] = UIntType
176
194
 
177
195
  class SIntType(IntType):
178
196
 
197
+ def __init__(self, id: str, width: int):
198
+ self._init_from_cpp(cpp.SIntType(id, width))
199
+
179
200
  def is_valid(self, obj) -> Tuple[bool, Optional[str]]:
180
201
  if not isinstance(obj, int):
181
202
  return (False, f"must be an int, not {type(obj)}")
@@ -203,11 +224,16 @@ __esi_mapping[cpp.SIntType] = SIntType
203
224
 
204
225
  class StructType(ESIType):
205
226
 
206
- def __init__(self, cpp_type: cpp.StructType):
207
- self.cpp_type = cpp_type
208
- self.fields: List[Tuple[str, ESIType]] = [
209
- (name, _get_esi_type(ty)) for (name, ty) in cpp_type.fields
210
- ]
227
+ def __init__(self, id: str, fields: List[Tuple[str, "ESIType"]]):
228
+ # Convert Python ESIType fields to cpp Type fields
229
+ cpp_fields = [(name, field_type.cpp_type) for name, field_type in fields]
230
+ self._init_from_cpp(cpp.StructType(id, cpp_fields))
231
+
232
+ def _init_from_cpp(self, cpp_type: cpp.StructType):
233
+ """Initialize instance attributes from a C++ type object."""
234
+ super()._init_from_cpp(cpp_type)
235
+ # For wrap_cpp path, we need to convert C++ fields back to Python
236
+ self.fields = [(name, _get_esi_type(ty)) for (name, ty) in cpp_type.fields]
211
237
 
212
238
  @property
213
239
  def bit_width(self) -> int:
@@ -219,6 +245,8 @@ class StructType(ESIType):
219
245
  def is_valid(self, obj) -> Tuple[bool, Optional[str]]:
220
246
  fields_count = 0
221
247
  if not isinstance(obj, dict):
248
+ if not hasattr(obj, "__dict__"):
249
+ return (False, "must be a dict or have __dict__ attribute")
222
250
  obj = obj.__dict__
223
251
 
224
252
  for (fname, ftype) in self.fields:
@@ -234,14 +262,20 @@ class StructType(ESIType):
234
262
 
235
263
  def serialize(self, obj) -> bytearray:
236
264
  ret = bytearray()
237
- for (fname, ftype) in reversed(self.fields):
265
+ if not isinstance(obj, dict):
266
+ obj = obj.__dict__
267
+ ordered_fields = reversed(
268
+ self.fields) if self.cpp_type.reverse else self.fields
269
+ for (fname, ftype) in ordered_fields:
238
270
  fval = obj[fname]
239
271
  ret.extend(ftype.serialize(fval))
240
272
  return ret
241
273
 
242
274
  def deserialize(self, data: bytearray) -> Tuple[Dict[str, Any], bytearray]:
243
275
  ret = {}
244
- for (fname, ftype) in reversed(self.fields):
276
+ ordered_fields = reversed(
277
+ self.fields) if self.cpp_type.reverse else self.fields
278
+ for (fname, ftype) in ordered_fields:
245
279
  (fval, data) = ftype.deserialize(data)
246
280
  ret[fname] = fval
247
281
  return (ret, data)
@@ -252,8 +286,12 @@ __esi_mapping[cpp.StructType] = StructType
252
286
 
253
287
  class ArrayType(ESIType):
254
288
 
255
- def __init__(self, cpp_type: cpp.ArrayType):
256
- self.cpp_type = cpp_type
289
+ def __init__(self, id: str, element_type: "ESIType", size: int):
290
+ self._init_from_cpp(cpp.ArrayType(id, element_type.cpp_type, size))
291
+
292
+ def _init_from_cpp(self, cpp_type: cpp.ArrayType):
293
+ """Initialize instance attributes from a C++ type object."""
294
+ super()._init_from_cpp(cpp_type)
257
295
  self.element_type = _get_esi_type(cpp_type.element)
258
296
  self.size = cpp_type.size
259
297
 
@@ -304,7 +342,9 @@ class Port:
304
342
  if not supports_host:
305
343
  raise TypeError(f"unsupported type: {reason}")
306
344
 
307
- self.cpp_port.connect(buffer_size)
345
+ opts = cpp.ConnectOptions()
346
+ opts.buffer_size = buffer_size
347
+ self.cpp_port.connect(opts)
308
348
  return self
309
349
 
310
350
  def disconnect(self):
@@ -370,8 +410,8 @@ class BundlePort:
370
410
  return super().__new__(CallbackPort)
371
411
  if isinstance(cpp_port, cpp.MMIORegion):
372
412
  return super().__new__(MMIORegion)
373
- if isinstance(cpp_port, cpp.Telemetry):
374
- return super().__new__(TelemetryPort)
413
+ if isinstance(cpp_port, cpp.Metric):
414
+ return super().__new__(MetricPort)
375
415
  return super().__new__(cls)
376
416
 
377
417
  def __init__(self, owner: HWModule, cpp_port: cpp.BundlePort):
@@ -507,7 +547,7 @@ class CallbackPort(BundlePort):
507
547
  self.connected = True
508
548
 
509
549
 
510
- class TelemetryPort(BundlePort):
550
+ class MetricPort(BundlePort):
511
551
  """Telemetry ports report an individual piece of information from the
512
552
  acceelerator. The method of accessing telemetry will likely change in the
513
553
  future."""
esiaccel/utils.py CHANGED
@@ -4,6 +4,7 @@
4
4
 
5
5
  from . import codegen
6
6
 
7
+ import platform
7
8
  from pathlib import Path
8
9
  import subprocess
9
10
  import sys
@@ -13,16 +14,23 @@ _thisdir = Path(__file__).absolute().resolve().parent
13
14
 
14
15
  def run_esiquery():
15
16
  """Run the esiquery executable with the same arguments as this script."""
16
- esiquery = _thisdir / "bin" / "esiquery"
17
+ if platform.system() == "Windows":
18
+ esiquery = _thisdir / "esiquery.exe"
19
+ else:
20
+ esiquery = _thisdir / "bin" / "esiquery"
17
21
  return subprocess.call([esiquery] + sys.argv[1:])
18
22
 
19
23
 
20
24
  def run_esi_cosim():
21
25
  """Run the esi-cosim.py script with the same arguments as this script."""
22
26
  import importlib.util
23
- esi_cosim = _thisdir / "bin" / "esi-cosim.py"
27
+ if platform.system() == "Windows":
28
+ esi_cosim = _thisdir / "esi-cosim.py"
29
+ else:
30
+ esi_cosim = _thisdir / "bin" / "esi-cosim.py"
24
31
  spec = importlib.util.spec_from_file_location("esi_cosim", esi_cosim)
25
32
  assert spec is not None
33
+ assert spec.loader is not None
26
34
  cosim_import = importlib.util.module_from_spec(spec)
27
35
  spec.loader.exec_module(cosim_import)
28
36
  return cosim_import.__main__(sys.argv)
@@ -32,5 +40,15 @@ def run_cppgen():
32
40
  return codegen.run()
33
41
 
34
42
 
35
- def get_cmake_dir():
43
+ def get_cmake_dir() -> Path:
36
44
  return _thisdir / "cmake"
45
+
46
+
47
+ def get_dll_dir() -> Path:
48
+ """Return the directory where the ESI dll's are located"""
49
+ import sys
50
+ import os
51
+ if sys.platform == "win32":
52
+ return _thisdir
53
+ else:
54
+ return _thisdir / "lib"
esiaccel/zlib1.dll ADDED
Binary file
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: esiaccel
3
- Version: 0.1.4.dev31
3
+ Version: 0.2.3.dev80
4
4
  Summary: ESI accelerators runtime
5
5
  Author-email: John Demme <John.Demme@microsoft.com>
6
6
  License: ==============================================================================
@@ -0,0 +1,58 @@
1
+ esiaccel/CosimBackend.dll,sha256=WsYLiG3cIttOml8ny9Njfr8lgLfO2UspeNb29z7Z-9M,634368
2
+ esiaccel/CosimBackend.lib,sha256=RjY1bWCyxi-PtXFiDHtunmM0UT8vpl_m-CNCCaMqdnc,2180566
3
+ esiaccel/CosimRpc.dll,sha256=44uYkGUJjNF5Wws-yBw2KuKT2MzdlzZpdT0x7tMHI5M,7044096
4
+ esiaccel/CosimRpc.lib,sha256=FZt1QsMRNtDjWVZp_5aqTq5DVBo8BodUy-Zc0_KAXkU,3615226
5
+ esiaccel/ESICppRuntime.dll,sha256=AfWGIMvdzj1qMkBx2q3f_qYLbK0ww8QbQEOBiPnblps,4495360
6
+ esiaccel/ESICppRuntime.lib,sha256=Autv7_UNy9EMWCueiEVkjxY72PagFVz2u3KvLV8LCFk,16556242
7
+ esiaccel/EsiCosimDpiServer.dll,sha256=9ns3g54_CdOTdw6_j79xrGjSgXDdT3dCV1EA_vDUmcU,512512
8
+ esiaccel/EsiCosimDpiServer.lib,sha256=ZNNl0AsT-O4QXrzFNGsY7vVElYEywOL6aiOy7nCJOpc,1153606
9
+ esiaccel/MtiPli.dll,sha256=c_RmAWqfQmNCx1eaSudLaEXPdytRIbLVLFNmptcb8UM,14848
10
+ esiaccel/MtiPli.lib,sha256=7r8KNdR2EpFEAZ-GBIlnwV3b4_bpjg5PUpQ9vYqOJww,14570
11
+ esiaccel/__init__.py,sha256=kQGIPdInC-YoumE8uVqmfAckqcTGmCnMJGtWZzCc2lE,1270
12
+ esiaccel/abseil_dll.dll,sha256=z6OYn9rgcn_NaYIG19JtNGkGJXnyECwTJ8nVW4t4PvY,2002432
13
+ esiaccel/accelerator.py,sha256=wv1EXaRZlXtyHeBA-_uKycBjn-lVxj83AYeIVlutVRs,4466
14
+ esiaccel/cares.dll,sha256=Gklp21IWShGybAbFhUs6bJecDG7rBS3jZrllG7lWmJw,200704
15
+ esiaccel/codegen.py,sha256=QaBNVwcsCyYWmhEesQsXp72rV-8dVC9G33K4YR6PxRo,6577
16
+ esiaccel/esi-cosim.py,sha256=P7n3SBgKPnXynwghY5zK1FmpqZkbC_YxfVIvNNQNl6Q,3817
17
+ esiaccel/esiCppAccel.cp312-win_amd64.pyd,sha256=E43DpY0FDzaycz2oz-vaeAGMOLCxbHbXdANOiYfGLYw,290304
18
+ esiaccel/esiquery.exe,sha256=rpYtOIN18TRmGNFQdQ4iWquqG9uh8PvX7Os8FwDW8Cg,475136
19
+ esiaccel/libcrypto-3-x64.dll,sha256=3G4D_aIsqXmeDjc8ZyGVTvdtPiA1YKA3egorXgALnWQ,5326336
20
+ esiaccel/libprotobuf.dll,sha256=-vtzg2rh6IGAJpWOyhzOpXc9Nfcx9MyvouKBs49hlBw,12089344
21
+ esiaccel/libssl-3-x64.dll,sha256=TvNJRc86Hj67LBHgNxBOqzcKay2miFCtQMW6NvV18XQ,871424
22
+ esiaccel/re2.dll,sha256=mPqwlW4I_3e4cgOaBVObJOgu-stfJyXKinAmJJcl6js,1214464
23
+ esiaccel/types.py,sha256=pTF2J5cSlyrpq6pBZ9Xd9--NuIOpR4JkEYNicf6ffkM,19097
24
+ esiaccel/utils.py,sha256=q-8fmgJ9tUvmBsIvqZiZ7u845IJhOjvjYTQLhhrNYl0,1515
25
+ esiaccel/zlib1.dll,sha256=GFQuaEY4-GUYg4WtQlHOen8j4ODxUlfITZ48VkPPhDE,90112
26
+ esiaccel/cmake/esiaccelConfig.cmake,sha256=BEnPuGZ7OqOZuTuXl3wjRraw93nf-UznJT-EChKmu9c,1782
27
+ esiaccel/cosim/Cosim_CycleCount.sv,sha256=dcxn_9l469IJvZvW4onObmgRMQyeG_zhTu11QtD-0zs,2385
28
+ esiaccel/cosim/Cosim_DpiPkg.sv,sha256=9qGn1VyAVrzBP5At1thV6xrovg0WghICD01Zz9J221E,3458
29
+ esiaccel/cosim/Cosim_Endpoint.sv,sha256=-XXrGvvk6hdiZ-Ex6_QtdKXXUwKJLKSvpTUK3o0gPZ8,7589
30
+ esiaccel/cosim/Cosim_Manifest.sv,sha256=vl9b6XieEkP880IBw1ferekBnDJwFanZZggJJGertXM,1123
31
+ esiaccel/cosim/driver.cpp,sha256=Lvmo03pzzhoswdxAtdXAm-oU6UkfTyl1LgoCpyDzLhY,3842
32
+ esiaccel/cosim/driver.sv,sha256=LAkFEXTwX3KKwZLSzYZFwMPWxZwVStuhUsfecHHpGzU,1890
33
+ esiaccel/cosim/questa.py,sha256=2xALwRzsOFZ1_xk3f2d849GMvGspNCK4XL8zVDBjXlA,4626
34
+ esiaccel/cosim/simulator.py,sha256=oTZCUrDT_YCR5bMzgtlQ39JLSlxCmYt_tpTGQ2PLRxU,13994
35
+ esiaccel/cosim/verilator.py,sha256=dwiEkKOem5OKPV9AK6O1ohr22MTsyDxBVnriDRFoVa8,2877
36
+ esiaccel/include/esi/Accelerator.h,sha256=f-fbqWMUKgNISuf9T7UDN36xMqYm0qHBLAzASFGpieo,9318
37
+ esiaccel/include/esi/CLI.h,sha256=LLLWpvE7JDuwNyuCSjLj3sGsAh1BenOh1W7MbhAf3WQ,2619
38
+ esiaccel/include/esi/Common.h,sha256=7bXy9bRt4C7oeO6SBm8BneujbL17fbPM6K7YMqazvLE,6155
39
+ esiaccel/include/esi/Context.h,sha256=Bd698megdjlsmGsKQjsw3JE9vTuKLQjIrn-DrWRpkFw,2686
40
+ esiaccel/include/esi/Design.h,sha256=KbynfLZ6Y2PXomq-c9IKXRZGmeHFTObWTfvjL8G6X-c,5040
41
+ esiaccel/include/esi/Engines.h,sha256=bbGbhXjYMpIpXh_DR0OS57zyGQUIDXh_S7xHX3su0Y0,4831
42
+ esiaccel/include/esi/Logging.h,sha256=sHqMcpp0lNIHkIEyvSm-BBWx4zXXh6NOATCgZpgzYI4,8944
43
+ esiaccel/include/esi/Manifest.h,sha256=ZdIu_vXXLS4bwOoISFo-sFjzvB9x5ddYmNmaknyF0ds,2110
44
+ esiaccel/include/esi/Ports.h,sha256=FQn7ckL_biFBKRSe_lMinW-24a3PzmW0TSorHxI8Ts0,19351
45
+ esiaccel/include/esi/Services.h,sha256=MERULjcAaS5A1bCu7YXOU09ZfqyatQUvOt5xpwrYNqE,17165
46
+ esiaccel/include/esi/Types.h,sha256=SyTU3YteKWQJ7HuUK4G6f1sQDBJ7nhHh-r1OMpH4MVY,11416
47
+ esiaccel/include/esi/Utils.h,sha256=KPd75GajIFeTBVJocXBjwsJqhbZg-ShWZCIe3oQdBss,3061
48
+ esiaccel/include/esi/Values.h,sha256=1xXxNV2oUr84At3Y7aXBqbiPZxyJXeUbhycl0O0fUtk,11074
49
+ esiaccel/include/esi/backends/Cosim.h,sha256=Y8s2krmqNqrNJT5qG9Wy9oQzgRpIt3dhcAjYjOXHmTA,2575
50
+ esiaccel/include/esi/backends/RpcClient.h,sha256=ZMPJkZTSedcyPEfbNGkzMUcb_C0SjCNbueDmH9C2SX8,3168
51
+ esiaccel/include/esi/backends/RpcServer.h,sha256=aWCtNxUT9PB3dibEgcMWDudpJ5VX_UCahld_lxoD5dU,2570
52
+ esiaccel/include/esi/backends/Trace.h,sha256=kx4wwLH3a0ndmRUdaDyYGZ1SP83zlpFrk30Nw8ZrJJA,3286
53
+ esiaccel-0.2.3.dev80.dist-info/licenses/LICENSE,sha256=vtnVnB8_lN1yPYcA5MeT56R8UsQtBhyzZLBvu_KMf7I,13468
54
+ esiaccel-0.2.3.dev80.dist-info/METADATA,sha256=JIGvHzZLELkjO_NpWJazh_OsHrNNj-IzbFe3rUJxx1s,16147
55
+ esiaccel-0.2.3.dev80.dist-info/WHEEL,sha256=KUuBC6lxAbHCKilKua8R9W_TM71_-9Sg5uEP3uDWcoU,101
56
+ esiaccel-0.2.3.dev80.dist-info/entry_points.txt,sha256=_CuNLV0fyTURxRREFwpzGycifZW_-7-MyuJNEwKK9J8,137
57
+ esiaccel-0.2.3.dev80.dist-info/top_level.txt,sha256=fYWTWMDK4PDu4ePQ9NtcFHas2k8-d1kWhTs2avPpgB4,9
58
+ esiaccel-0.2.3.dev80.dist-info/RECORD,,