@pairling/runtime-darwin-arm64 0.2.1 → 0.2.2

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 (248) hide show
  1. package/bin/pairling-connectd +0 -0
  2. package/manifest.json +4 -4
  3. package/package.json +1 -1
  4. package/python/bin/python3 +0 -0
  5. package/python/bin/python3.12 +0 -0
  6. package/python/lib/libpython3.12.dylib +0 -0
  7. package/python/lib/python3.12/__pycache__/__future__.cpython-312.pyc +0 -0
  8. package/python/lib/python3.12/__pycache__/_compression.cpython-312.pyc +0 -0
  9. package/python/lib/python3.12/__pycache__/_weakrefset.cpython-312.pyc +0 -0
  10. package/python/lib/python3.12/__pycache__/base64.cpython-312.pyc +0 -0
  11. package/python/lib/python3.12/__pycache__/bisect.cpython-312.pyc +0 -0
  12. package/python/lib/python3.12/__pycache__/bz2.cpython-312.pyc +0 -0
  13. package/python/lib/python3.12/__pycache__/calendar.cpython-312.pyc +0 -0
  14. package/python/lib/python3.12/__pycache__/contextlib.cpython-312.pyc +0 -0
  15. package/python/lib/python3.12/__pycache__/copyreg.cpython-312.pyc +0 -0
  16. package/python/lib/python3.12/__pycache__/datetime.cpython-312.pyc +0 -0
  17. package/python/lib/python3.12/__pycache__/enum.cpython-312.pyc +0 -0
  18. package/python/lib/python3.12/__pycache__/fnmatch.cpython-312.pyc +0 -0
  19. package/python/lib/python3.12/__pycache__/functools.cpython-312.pyc +0 -0
  20. package/python/lib/python3.12/__pycache__/hashlib.cpython-312.pyc +0 -0
  21. package/python/lib/python3.12/__pycache__/hmac.cpython-312.pyc +0 -0
  22. package/python/lib/python3.12/__pycache__/ipaddress.cpython-312.pyc +0 -0
  23. package/python/lib/python3.12/__pycache__/keyword.cpython-312.pyc +0 -0
  24. package/python/lib/python3.12/__pycache__/locale.cpython-312.pyc +0 -0
  25. package/python/lib/python3.12/__pycache__/lzma.cpython-312.pyc +0 -0
  26. package/python/lib/python3.12/__pycache__/operator.cpython-312.pyc +0 -0
  27. package/python/lib/python3.12/__pycache__/plistlib.cpython-312.pyc +0 -0
  28. package/python/lib/python3.12/__pycache__/pty.cpython-312.pyc +0 -0
  29. package/python/lib/python3.12/__pycache__/quopri.cpython-312.pyc +0 -0
  30. package/python/lib/python3.12/__pycache__/random.cpython-312.pyc +0 -0
  31. package/python/lib/python3.12/__pycache__/reprlib.cpython-312.pyc +0 -0
  32. package/python/lib/python3.12/__pycache__/selectors.cpython-312.pyc +0 -0
  33. package/python/lib/python3.12/__pycache__/shutil.cpython-312.pyc +0 -0
  34. package/python/lib/python3.12/__pycache__/signal.cpython-312.pyc +0 -0
  35. package/python/lib/python3.12/__pycache__/socket.cpython-312.pyc +0 -0
  36. package/python/lib/python3.12/__pycache__/ssl.cpython-312.pyc +0 -0
  37. package/python/lib/python3.12/__pycache__/string.cpython-312.pyc +0 -0
  38. package/python/lib/python3.12/__pycache__/struct.cpython-312.pyc +0 -0
  39. package/python/lib/python3.12/__pycache__/subprocess.cpython-312.pyc +0 -0
  40. package/python/lib/python3.12/__pycache__/tempfile.cpython-312.pyc +0 -0
  41. package/python/lib/python3.12/__pycache__/threading.cpython-312.pyc +0 -0
  42. package/python/lib/python3.12/__pycache__/tty.cpython-312.pyc +0 -0
  43. package/python/lib/python3.12/__pycache__/types.cpython-312.pyc +0 -0
  44. package/python/lib/python3.12/__pycache__/typing.cpython-312.pyc +0 -0
  45. package/python/lib/python3.12/__pycache__/warnings.cpython-312.pyc +0 -0
  46. package/python/lib/python3.12/__pycache__/weakref.cpython-312.pyc +0 -0
  47. package/python/lib/python3.12/collections/__pycache__/__init__.cpython-312.pyc +0 -0
  48. package/python/lib/python3.12/collections/__pycache__/abc.cpython-312.pyc +0 -0
  49. package/python/lib/python3.12/email/__pycache__/__init__.cpython-312.pyc +0 -0
  50. package/python/lib/python3.12/email/__pycache__/_encoded_words.cpython-312.pyc +0 -0
  51. package/python/lib/python3.12/email/__pycache__/_parseaddr.cpython-312.pyc +0 -0
  52. package/python/lib/python3.12/email/__pycache__/_policybase.cpython-312.pyc +0 -0
  53. package/python/lib/python3.12/email/__pycache__/base64mime.cpython-312.pyc +0 -0
  54. package/python/lib/python3.12/email/__pycache__/charset.cpython-312.pyc +0 -0
  55. package/python/lib/python3.12/email/__pycache__/encoders.cpython-312.pyc +0 -0
  56. package/python/lib/python3.12/email/__pycache__/errors.cpython-312.pyc +0 -0
  57. package/python/lib/python3.12/email/__pycache__/feedparser.cpython-312.pyc +0 -0
  58. package/python/lib/python3.12/email/__pycache__/header.cpython-312.pyc +0 -0
  59. package/python/lib/python3.12/email/__pycache__/iterators.cpython-312.pyc +0 -0
  60. package/python/lib/python3.12/email/__pycache__/message.cpython-312.pyc +0 -0
  61. package/python/lib/python3.12/email/__pycache__/parser.cpython-312.pyc +0 -0
  62. package/python/lib/python3.12/email/__pycache__/quoprimime.cpython-312.pyc +0 -0
  63. package/python/lib/python3.12/email/__pycache__/utils.cpython-312.pyc +0 -0
  64. package/python/lib/python3.12/encodings/__pycache__/__init__.cpython-312.pyc +0 -0
  65. package/python/lib/python3.12/encodings/__pycache__/aliases.cpython-312.pyc +0 -0
  66. package/python/lib/python3.12/encodings/__pycache__/utf_8.cpython-312.pyc +0 -0
  67. package/python/lib/python3.12/http/__pycache__/__init__.cpython-312.pyc +0 -0
  68. package/python/lib/python3.12/http/__pycache__/client.cpython-312.pyc +0 -0
  69. package/python/lib/python3.12/json/__pycache__/__init__.cpython-312.pyc +0 -0
  70. package/python/lib/python3.12/json/__pycache__/decoder.cpython-312.pyc +0 -0
  71. package/python/lib/python3.12/json/__pycache__/encoder.cpython-312.pyc +0 -0
  72. package/python/lib/python3.12/json/__pycache__/scanner.cpython-312.pyc +0 -0
  73. package/python/lib/python3.12/lib-dynload/_crypt.cpython-312-darwin.so +0 -0
  74. package/python/lib/python3.12/lib-dynload/_dbm.cpython-312-darwin.so +0 -0
  75. package/python/lib/python3.12/re/__pycache__/__init__.cpython-312.pyc +0 -0
  76. package/python/lib/python3.12/re/__pycache__/_casefix.cpython-312.pyc +0 -0
  77. package/python/lib/python3.12/re/__pycache__/_compiler.cpython-312.pyc +0 -0
  78. package/python/lib/python3.12/re/__pycache__/_constants.cpython-312.pyc +0 -0
  79. package/python/lib/python3.12/re/__pycache__/_parser.cpython-312.pyc +0 -0
  80. package/python/lib/python3.12/site-packages/_cffi_backend.cpython-312-darwin.so +0 -0
  81. package/python/lib/python3.12/site-packages/cffi/__init__.py +14 -0
  82. package/python/lib/python3.12/site-packages/cffi/__pycache__/__init__.cpython-312.pyc +0 -0
  83. package/python/lib/python3.12/site-packages/cffi/__pycache__/api.cpython-312.pyc +0 -0
  84. package/python/lib/python3.12/site-packages/cffi/__pycache__/error.cpython-312.pyc +0 -0
  85. package/python/lib/python3.12/site-packages/cffi/__pycache__/lock.cpython-312.pyc +0 -0
  86. package/python/lib/python3.12/site-packages/cffi/__pycache__/model.cpython-312.pyc +0 -0
  87. package/python/lib/python3.12/site-packages/cffi/_cffi_errors.h +149 -0
  88. package/python/lib/python3.12/site-packages/cffi/_cffi_include.h +389 -0
  89. package/python/lib/python3.12/site-packages/cffi/_embedding.h +550 -0
  90. package/python/lib/python3.12/site-packages/cffi/_imp_emulation.py +83 -0
  91. package/python/lib/python3.12/site-packages/cffi/_shimmed_dist_utils.py +45 -0
  92. package/python/lib/python3.12/site-packages/cffi/api.py +967 -0
  93. package/python/lib/python3.12/site-packages/cffi/backend_ctypes.py +1121 -0
  94. package/python/lib/python3.12/site-packages/cffi/cffi_opcode.py +187 -0
  95. package/python/lib/python3.12/site-packages/cffi/commontypes.py +82 -0
  96. package/python/lib/python3.12/site-packages/cffi/cparser.py +1015 -0
  97. package/python/lib/python3.12/site-packages/cffi/error.py +31 -0
  98. package/python/lib/python3.12/site-packages/cffi/ffiplatform.py +113 -0
  99. package/python/lib/python3.12/site-packages/cffi/lock.py +30 -0
  100. package/python/lib/python3.12/site-packages/cffi/model.py +618 -0
  101. package/python/lib/python3.12/site-packages/cffi/parse_c_type.h +181 -0
  102. package/python/lib/python3.12/site-packages/cffi/pkgconfig.py +121 -0
  103. package/python/lib/python3.12/site-packages/cffi/recompiler.py +1598 -0
  104. package/python/lib/python3.12/site-packages/cffi/setuptools_ext.py +229 -0
  105. package/python/lib/python3.12/site-packages/cffi/vengine_cpy.py +1087 -0
  106. package/python/lib/python3.12/site-packages/cffi/vengine_gen.py +679 -0
  107. package/python/lib/python3.12/site-packages/cffi/verifier.py +306 -0
  108. package/python/lib/python3.12/site-packages/cffi-2.0.0.dist-info/INSTALLER +1 -0
  109. package/python/lib/python3.12/site-packages/cffi-2.0.0.dist-info/METADATA +68 -0
  110. package/python/lib/python3.12/site-packages/cffi-2.0.0.dist-info/RECORD +31 -0
  111. package/python/lib/python3.12/site-packages/cffi-2.0.0.dist-info/WHEEL +6 -0
  112. package/python/lib/python3.12/site-packages/cffi-2.0.0.dist-info/entry_points.txt +2 -0
  113. package/python/lib/python3.12/site-packages/cffi-2.0.0.dist-info/licenses/AUTHORS +8 -0
  114. package/python/lib/python3.12/site-packages/cffi-2.0.0.dist-info/licenses/LICENSE +23 -0
  115. package/python/lib/python3.12/site-packages/cffi-2.0.0.dist-info/top_level.txt +2 -0
  116. package/python/lib/python3.12/site-packages/cryptography/__about__.py +17 -0
  117. package/python/lib/python3.12/site-packages/cryptography/__init__.py +26 -0
  118. package/python/lib/python3.12/site-packages/cryptography/__pycache__/__about__.cpython-312.pyc +0 -0
  119. package/python/lib/python3.12/site-packages/cryptography/__pycache__/__init__.cpython-312.pyc +0 -0
  120. package/python/lib/python3.12/site-packages/cryptography/__pycache__/utils.cpython-312.pyc +0 -0
  121. package/python/lib/python3.12/site-packages/cryptography/exceptions.py +52 -0
  122. package/python/lib/python3.12/site-packages/cryptography/fernet.py +224 -0
  123. package/python/lib/python3.12/site-packages/cryptography/hazmat/__init__.py +13 -0
  124. package/python/lib/python3.12/site-packages/cryptography/hazmat/_oid.py +348 -0
  125. package/python/lib/python3.12/site-packages/cryptography/hazmat/backends/__init__.py +13 -0
  126. package/python/lib/python3.12/site-packages/cryptography/hazmat/backends/openssl/__init__.py +9 -0
  127. package/python/lib/python3.12/site-packages/cryptography/hazmat/backends/openssl/backend.py +308 -0
  128. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/__init__.py +3 -0
  129. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/__init__.pyi +37 -0
  130. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/_openssl.pyi +8 -0
  131. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/asn1.pyi +7 -0
  132. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/exceptions.pyi +17 -0
  133. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/ocsp.pyi +117 -0
  134. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/__init__.pyi +75 -0
  135. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/aead.pyi +107 -0
  136. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/ciphers.pyi +38 -0
  137. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/cmac.pyi +18 -0
  138. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/dh.pyi +51 -0
  139. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/dsa.pyi +41 -0
  140. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/ec.pyi +52 -0
  141. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/ed25519.pyi +13 -0
  142. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/ed448.pyi +13 -0
  143. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/hashes.pyi +28 -0
  144. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/hmac.pyi +22 -0
  145. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/kdf.pyi +49 -0
  146. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/keys.pyi +34 -0
  147. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/poly1305.pyi +15 -0
  148. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/rsa.pyi +55 -0
  149. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/x25519.pyi +13 -0
  150. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/x448.pyi +13 -0
  151. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/pkcs12.pyi +52 -0
  152. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/pkcs7.pyi +50 -0
  153. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/test_support.pyi +23 -0
  154. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/x509.pyi +313 -0
  155. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust.abi3.so +0 -0
  156. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/openssl/__init__.py +3 -0
  157. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/openssl/_conditional.py +191 -0
  158. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/openssl/binding.py +122 -0
  159. package/python/lib/python3.12/site-packages/cryptography/hazmat/decrepit/__init__.py +5 -0
  160. package/python/lib/python3.12/site-packages/cryptography/hazmat/decrepit/ciphers/__init__.py +5 -0
  161. package/python/lib/python3.12/site-packages/cryptography/hazmat/decrepit/ciphers/algorithms.py +112 -0
  162. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/__init__.py +3 -0
  163. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/_asymmetric.py +19 -0
  164. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/_cipheralgorithm.py +60 -0
  165. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/_serialization.py +168 -0
  166. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/__init__.py +3 -0
  167. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/dh.py +147 -0
  168. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/dsa.py +167 -0
  169. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/ec.py +447 -0
  170. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/ed25519.py +129 -0
  171. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/ed448.py +131 -0
  172. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/padding.py +113 -0
  173. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/rsa.py +277 -0
  174. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/types.py +111 -0
  175. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/utils.py +24 -0
  176. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/x25519.py +122 -0
  177. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/x448.py +125 -0
  178. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/__init__.py +27 -0
  179. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/aead.py +23 -0
  180. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/algorithms.py +183 -0
  181. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/base.py +146 -0
  182. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/modes.py +268 -0
  183. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/cmac.py +10 -0
  184. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/constant_time.py +14 -0
  185. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/hashes.py +246 -0
  186. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/hmac.py +13 -0
  187. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/__init__.py +23 -0
  188. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/argon2.py +13 -0
  189. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/concatkdf.py +125 -0
  190. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/hkdf.py +101 -0
  191. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/kbkdf.py +305 -0
  192. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/pbkdf2.py +62 -0
  193. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/scrypt.py +19 -0
  194. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/x963kdf.py +61 -0
  195. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/keywrap.py +177 -0
  196. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/padding.py +69 -0
  197. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/poly1305.py +11 -0
  198. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/__init__.py +65 -0
  199. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/base.py +14 -0
  200. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/pkcs12.py +176 -0
  201. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/pkcs7.py +411 -0
  202. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/ssh.py +1619 -0
  203. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/twofactor/__init__.py +9 -0
  204. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/twofactor/hotp.py +101 -0
  205. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/twofactor/totp.py +56 -0
  206. package/python/lib/python3.12/site-packages/cryptography/py.typed +0 -0
  207. package/python/lib/python3.12/site-packages/cryptography/utils.py +139 -0
  208. package/python/lib/python3.12/site-packages/cryptography/x509/__init__.py +270 -0
  209. package/python/lib/python3.12/site-packages/cryptography/x509/base.py +848 -0
  210. package/python/lib/python3.12/site-packages/cryptography/x509/certificate_transparency.py +35 -0
  211. package/python/lib/python3.12/site-packages/cryptography/x509/extensions.py +2528 -0
  212. package/python/lib/python3.12/site-packages/cryptography/x509/general_name.py +281 -0
  213. package/python/lib/python3.12/site-packages/cryptography/x509/name.py +477 -0
  214. package/python/lib/python3.12/site-packages/cryptography/x509/ocsp.py +379 -0
  215. package/python/lib/python3.12/site-packages/cryptography/x509/oid.py +37 -0
  216. package/python/lib/python3.12/site-packages/cryptography/x509/verification.py +34 -0
  217. package/python/lib/python3.12/site-packages/cryptography-45.0.7.dist-info/INSTALLER +1 -0
  218. package/python/lib/python3.12/site-packages/cryptography-45.0.7.dist-info/METADATA +139 -0
  219. package/python/lib/python3.12/site-packages/cryptography-45.0.7.dist-info/RECORD +106 -0
  220. package/python/lib/python3.12/site-packages/cryptography-45.0.7.dist-info/REQUESTED +0 -0
  221. package/python/lib/python3.12/site-packages/cryptography-45.0.7.dist-info/WHEEL +4 -0
  222. package/python/lib/python3.12/site-packages/cryptography-45.0.7.dist-info/licenses/LICENSE +3 -0
  223. package/python/lib/python3.12/site-packages/cryptography-45.0.7.dist-info/licenses/LICENSE.APACHE +202 -0
  224. package/python/lib/python3.12/site-packages/cryptography-45.0.7.dist-info/licenses/LICENSE.BSD +27 -0
  225. package/python/lib/python3.12/site-packages/pycparser/__init__.py +99 -0
  226. package/python/lib/python3.12/site-packages/pycparser/_ast_gen.py +355 -0
  227. package/python/lib/python3.12/site-packages/pycparser/_c_ast.cfg +195 -0
  228. package/python/lib/python3.12/site-packages/pycparser/ast_transforms.py +174 -0
  229. package/python/lib/python3.12/site-packages/pycparser/c_ast.py +1341 -0
  230. package/python/lib/python3.12/site-packages/pycparser/c_generator.py +573 -0
  231. package/python/lib/python3.12/site-packages/pycparser/c_lexer.py +706 -0
  232. package/python/lib/python3.12/site-packages/pycparser/c_parser.py +2376 -0
  233. package/python/lib/python3.12/site-packages/pycparser-3.0.dist-info/INSTALLER +1 -0
  234. package/python/lib/python3.12/site-packages/pycparser-3.0.dist-info/METADATA +244 -0
  235. package/python/lib/python3.12/site-packages/pycparser-3.0.dist-info/RECORD +14 -0
  236. package/python/lib/python3.12/site-packages/pycparser-3.0.dist-info/WHEEL +5 -0
  237. package/python/lib/python3.12/site-packages/pycparser-3.0.dist-info/licenses/LICENSE +27 -0
  238. package/python/lib/python3.12/site-packages/pycparser-3.0.dist-info/top_level.txt +1 -0
  239. package/python/lib/python3.12/sqlite3/__pycache__/__init__.cpython-312.pyc +0 -0
  240. package/python/lib/python3.12/sqlite3/__pycache__/dbapi2.cpython-312.pyc +0 -0
  241. package/python/lib/python3.12/urllib/__pycache__/__init__.cpython-312.pyc +0 -0
  242. package/python/lib/python3.12/urllib/__pycache__/error.cpython-312.pyc +0 -0
  243. package/python/lib/python3.12/urllib/__pycache__/parse.cpython-312.pyc +0 -0
  244. package/python/lib/python3.12/urllib/__pycache__/request.cpython-312.pyc +0 -0
  245. package/python/lib/python3.12/urllib/__pycache__/response.cpython-312.pyc +0 -0
  246. package/python/lib/python3.12/xml/__pycache__/__init__.cpython-312.pyc +0 -0
  247. package/python/lib/python3.12/xml/parsers/__pycache__/__init__.cpython-312.pyc +0 -0
  248. package/python/lib/python3.12/xml/parsers/__pycache__/expat.cpython-312.pyc +0 -0
@@ -0,0 +1,1121 @@
1
+ import ctypes, ctypes.util, operator, sys
2
+ from . import model
3
+
4
+ if sys.version_info < (3,):
5
+ bytechr = chr
6
+ else:
7
+ unicode = str
8
+ long = int
9
+ xrange = range
10
+ bytechr = lambda num: bytes([num])
11
+
12
+ class CTypesType(type):
13
+ pass
14
+
15
+ class CTypesData(object):
16
+ __metaclass__ = CTypesType
17
+ __slots__ = ['__weakref__']
18
+ __name__ = '<cdata>'
19
+
20
+ def __init__(self, *args):
21
+ raise TypeError("cannot instantiate %r" % (self.__class__,))
22
+
23
+ @classmethod
24
+ def _newp(cls, init):
25
+ raise TypeError("expected a pointer or array ctype, got '%s'"
26
+ % (cls._get_c_name(),))
27
+
28
+ @staticmethod
29
+ def _to_ctypes(value):
30
+ raise TypeError
31
+
32
+ @classmethod
33
+ def _arg_to_ctypes(cls, *value):
34
+ try:
35
+ ctype = cls._ctype
36
+ except AttributeError:
37
+ raise TypeError("cannot create an instance of %r" % (cls,))
38
+ if value:
39
+ res = cls._to_ctypes(*value)
40
+ if not isinstance(res, ctype):
41
+ res = cls._ctype(res)
42
+ else:
43
+ res = cls._ctype()
44
+ return res
45
+
46
+ @classmethod
47
+ def _create_ctype_obj(cls, init):
48
+ if init is None:
49
+ return cls._arg_to_ctypes()
50
+ else:
51
+ return cls._arg_to_ctypes(init)
52
+
53
+ @staticmethod
54
+ def _from_ctypes(ctypes_value):
55
+ raise TypeError
56
+
57
+ @classmethod
58
+ def _get_c_name(cls, replace_with=''):
59
+ return cls._reftypename.replace(' &', replace_with)
60
+
61
+ @classmethod
62
+ def _fix_class(cls):
63
+ cls.__name__ = 'CData<%s>' % (cls._get_c_name(),)
64
+ cls.__qualname__ = 'CData<%s>' % (cls._get_c_name(),)
65
+ cls.__module__ = 'ffi'
66
+
67
+ def _get_own_repr(self):
68
+ raise NotImplementedError
69
+
70
+ def _addr_repr(self, address):
71
+ if address == 0:
72
+ return 'NULL'
73
+ else:
74
+ if address < 0:
75
+ address += 1 << (8*ctypes.sizeof(ctypes.c_void_p))
76
+ return '0x%x' % address
77
+
78
+ def __repr__(self, c_name=None):
79
+ own = self._get_own_repr()
80
+ return '<cdata %r %s>' % (c_name or self._get_c_name(), own)
81
+
82
+ def _convert_to_address(self, BClass):
83
+ if BClass is None:
84
+ raise TypeError("cannot convert %r to an address" % (
85
+ self._get_c_name(),))
86
+ else:
87
+ raise TypeError("cannot convert %r to %r" % (
88
+ self._get_c_name(), BClass._get_c_name()))
89
+
90
+ @classmethod
91
+ def _get_size(cls):
92
+ return ctypes.sizeof(cls._ctype)
93
+
94
+ def _get_size_of_instance(self):
95
+ return ctypes.sizeof(self._ctype)
96
+
97
+ @classmethod
98
+ def _cast_from(cls, source):
99
+ raise TypeError("cannot cast to %r" % (cls._get_c_name(),))
100
+
101
+ def _cast_to_integer(self):
102
+ return self._convert_to_address(None)
103
+
104
+ @classmethod
105
+ def _alignment(cls):
106
+ return ctypes.alignment(cls._ctype)
107
+
108
+ def __iter__(self):
109
+ raise TypeError("cdata %r does not support iteration" % (
110
+ self._get_c_name()),)
111
+
112
+ def _make_cmp(name):
113
+ cmpfunc = getattr(operator, name)
114
+ def cmp(self, other):
115
+ v_is_ptr = not isinstance(self, CTypesGenericPrimitive)
116
+ w_is_ptr = (isinstance(other, CTypesData) and
117
+ not isinstance(other, CTypesGenericPrimitive))
118
+ if v_is_ptr and w_is_ptr:
119
+ return cmpfunc(self._convert_to_address(None),
120
+ other._convert_to_address(None))
121
+ elif v_is_ptr or w_is_ptr:
122
+ return NotImplemented
123
+ else:
124
+ if isinstance(self, CTypesGenericPrimitive):
125
+ self = self._value
126
+ if isinstance(other, CTypesGenericPrimitive):
127
+ other = other._value
128
+ return cmpfunc(self, other)
129
+ cmp.func_name = name
130
+ return cmp
131
+
132
+ __eq__ = _make_cmp('__eq__')
133
+ __ne__ = _make_cmp('__ne__')
134
+ __lt__ = _make_cmp('__lt__')
135
+ __le__ = _make_cmp('__le__')
136
+ __gt__ = _make_cmp('__gt__')
137
+ __ge__ = _make_cmp('__ge__')
138
+
139
+ def __hash__(self):
140
+ return hash(self._convert_to_address(None))
141
+
142
+ def _to_string(self, maxlen):
143
+ raise TypeError("string(): %r" % (self,))
144
+
145
+
146
+ class CTypesGenericPrimitive(CTypesData):
147
+ __slots__ = []
148
+
149
+ def __hash__(self):
150
+ return hash(self._value)
151
+
152
+ def _get_own_repr(self):
153
+ return repr(self._from_ctypes(self._value))
154
+
155
+
156
+ class CTypesGenericArray(CTypesData):
157
+ __slots__ = []
158
+
159
+ @classmethod
160
+ def _newp(cls, init):
161
+ return cls(init)
162
+
163
+ def __iter__(self):
164
+ for i in xrange(len(self)):
165
+ yield self[i]
166
+
167
+ def _get_own_repr(self):
168
+ return self._addr_repr(ctypes.addressof(self._blob))
169
+
170
+
171
+ class CTypesGenericPtr(CTypesData):
172
+ __slots__ = ['_address', '_as_ctype_ptr']
173
+ _automatic_casts = False
174
+ kind = "pointer"
175
+
176
+ @classmethod
177
+ def _newp(cls, init):
178
+ return cls(init)
179
+
180
+ @classmethod
181
+ def _cast_from(cls, source):
182
+ if source is None:
183
+ address = 0
184
+ elif isinstance(source, CTypesData):
185
+ address = source._cast_to_integer()
186
+ elif isinstance(source, (int, long)):
187
+ address = source
188
+ else:
189
+ raise TypeError("bad type for cast to %r: %r" %
190
+ (cls, type(source).__name__))
191
+ return cls._new_pointer_at(address)
192
+
193
+ @classmethod
194
+ def _new_pointer_at(cls, address):
195
+ self = cls.__new__(cls)
196
+ self._address = address
197
+ self._as_ctype_ptr = ctypes.cast(address, cls._ctype)
198
+ return self
199
+
200
+ def _get_own_repr(self):
201
+ try:
202
+ return self._addr_repr(self._address)
203
+ except AttributeError:
204
+ return '???'
205
+
206
+ def _cast_to_integer(self):
207
+ return self._address
208
+
209
+ def __nonzero__(self):
210
+ return bool(self._address)
211
+ __bool__ = __nonzero__
212
+
213
+ @classmethod
214
+ def _to_ctypes(cls, value):
215
+ if not isinstance(value, CTypesData):
216
+ raise TypeError("unexpected %s object" % type(value).__name__)
217
+ address = value._convert_to_address(cls)
218
+ return ctypes.cast(address, cls._ctype)
219
+
220
+ @classmethod
221
+ def _from_ctypes(cls, ctypes_ptr):
222
+ address = ctypes.cast(ctypes_ptr, ctypes.c_void_p).value or 0
223
+ return cls._new_pointer_at(address)
224
+
225
+ @classmethod
226
+ def _initialize(cls, ctypes_ptr, value):
227
+ if value:
228
+ ctypes_ptr.contents = cls._to_ctypes(value).contents
229
+
230
+ def _convert_to_address(self, BClass):
231
+ if (BClass in (self.__class__, None) or BClass._automatic_casts
232
+ or self._automatic_casts):
233
+ return self._address
234
+ else:
235
+ return CTypesData._convert_to_address(self, BClass)
236
+
237
+
238
+ class CTypesBaseStructOrUnion(CTypesData):
239
+ __slots__ = ['_blob']
240
+
241
+ @classmethod
242
+ def _create_ctype_obj(cls, init):
243
+ # may be overridden
244
+ raise TypeError("cannot instantiate opaque type %s" % (cls,))
245
+
246
+ def _get_own_repr(self):
247
+ return self._addr_repr(ctypes.addressof(self._blob))
248
+
249
+ @classmethod
250
+ def _offsetof(cls, fieldname):
251
+ return getattr(cls._ctype, fieldname).offset
252
+
253
+ def _convert_to_address(self, BClass):
254
+ if getattr(BClass, '_BItem', None) is self.__class__:
255
+ return ctypes.addressof(self._blob)
256
+ else:
257
+ return CTypesData._convert_to_address(self, BClass)
258
+
259
+ @classmethod
260
+ def _from_ctypes(cls, ctypes_struct_or_union):
261
+ self = cls.__new__(cls)
262
+ self._blob = ctypes_struct_or_union
263
+ return self
264
+
265
+ @classmethod
266
+ def _to_ctypes(cls, value):
267
+ return value._blob
268
+
269
+ def __repr__(self, c_name=None):
270
+ return CTypesData.__repr__(self, c_name or self._get_c_name(' &'))
271
+
272
+
273
+ class CTypesBackend(object):
274
+
275
+ PRIMITIVE_TYPES = {
276
+ 'char': ctypes.c_char,
277
+ 'short': ctypes.c_short,
278
+ 'int': ctypes.c_int,
279
+ 'long': ctypes.c_long,
280
+ 'long long': ctypes.c_longlong,
281
+ 'signed char': ctypes.c_byte,
282
+ 'unsigned char': ctypes.c_ubyte,
283
+ 'unsigned short': ctypes.c_ushort,
284
+ 'unsigned int': ctypes.c_uint,
285
+ 'unsigned long': ctypes.c_ulong,
286
+ 'unsigned long long': ctypes.c_ulonglong,
287
+ 'float': ctypes.c_float,
288
+ 'double': ctypes.c_double,
289
+ '_Bool': ctypes.c_bool,
290
+ }
291
+
292
+ for _name in ['unsigned long long', 'unsigned long',
293
+ 'unsigned int', 'unsigned short', 'unsigned char']:
294
+ _size = ctypes.sizeof(PRIMITIVE_TYPES[_name])
295
+ PRIMITIVE_TYPES['uint%d_t' % (8*_size)] = PRIMITIVE_TYPES[_name]
296
+ if _size == ctypes.sizeof(ctypes.c_void_p):
297
+ PRIMITIVE_TYPES['uintptr_t'] = PRIMITIVE_TYPES[_name]
298
+ if _size == ctypes.sizeof(ctypes.c_size_t):
299
+ PRIMITIVE_TYPES['size_t'] = PRIMITIVE_TYPES[_name]
300
+
301
+ for _name in ['long long', 'long', 'int', 'short', 'signed char']:
302
+ _size = ctypes.sizeof(PRIMITIVE_TYPES[_name])
303
+ PRIMITIVE_TYPES['int%d_t' % (8*_size)] = PRIMITIVE_TYPES[_name]
304
+ if _size == ctypes.sizeof(ctypes.c_void_p):
305
+ PRIMITIVE_TYPES['intptr_t'] = PRIMITIVE_TYPES[_name]
306
+ PRIMITIVE_TYPES['ptrdiff_t'] = PRIMITIVE_TYPES[_name]
307
+ if _size == ctypes.sizeof(ctypes.c_size_t):
308
+ PRIMITIVE_TYPES['ssize_t'] = PRIMITIVE_TYPES[_name]
309
+
310
+
311
+ def __init__(self):
312
+ self.RTLD_LAZY = 0 # not supported anyway by ctypes
313
+ self.RTLD_NOW = 0
314
+ self.RTLD_GLOBAL = ctypes.RTLD_GLOBAL
315
+ self.RTLD_LOCAL = ctypes.RTLD_LOCAL
316
+
317
+ def set_ffi(self, ffi):
318
+ self.ffi = ffi
319
+
320
+ def _get_types(self):
321
+ return CTypesData, CTypesType
322
+
323
+ def load_library(self, path, flags=0):
324
+ cdll = ctypes.CDLL(path, flags)
325
+ return CTypesLibrary(self, cdll)
326
+
327
+ def new_void_type(self):
328
+ class CTypesVoid(CTypesData):
329
+ __slots__ = []
330
+ _reftypename = 'void &'
331
+ @staticmethod
332
+ def _from_ctypes(novalue):
333
+ return None
334
+ @staticmethod
335
+ def _to_ctypes(novalue):
336
+ if novalue is not None:
337
+ raise TypeError("None expected, got %s object" %
338
+ (type(novalue).__name__,))
339
+ return None
340
+ CTypesVoid._fix_class()
341
+ return CTypesVoid
342
+
343
+ def new_primitive_type(self, name):
344
+ if name == 'wchar_t':
345
+ raise NotImplementedError(name)
346
+ ctype = self.PRIMITIVE_TYPES[name]
347
+ if name == 'char':
348
+ kind = 'char'
349
+ elif name in ('float', 'double'):
350
+ kind = 'float'
351
+ else:
352
+ if name in ('signed char', 'unsigned char'):
353
+ kind = 'byte'
354
+ elif name == '_Bool':
355
+ kind = 'bool'
356
+ else:
357
+ kind = 'int'
358
+ is_signed = (ctype(-1).value == -1)
359
+ #
360
+ def _cast_source_to_int(source):
361
+ if isinstance(source, (int, long, float)):
362
+ source = int(source)
363
+ elif isinstance(source, CTypesData):
364
+ source = source._cast_to_integer()
365
+ elif isinstance(source, bytes):
366
+ source = ord(source)
367
+ elif source is None:
368
+ source = 0
369
+ else:
370
+ raise TypeError("bad type for cast to %r: %r" %
371
+ (CTypesPrimitive, type(source).__name__))
372
+ return source
373
+ #
374
+ kind1 = kind
375
+ class CTypesPrimitive(CTypesGenericPrimitive):
376
+ __slots__ = ['_value']
377
+ _ctype = ctype
378
+ _reftypename = '%s &' % name
379
+ kind = kind1
380
+
381
+ def __init__(self, value):
382
+ self._value = value
383
+
384
+ @staticmethod
385
+ def _create_ctype_obj(init):
386
+ if init is None:
387
+ return ctype()
388
+ return ctype(CTypesPrimitive._to_ctypes(init))
389
+
390
+ if kind == 'int' or kind == 'byte':
391
+ @classmethod
392
+ def _cast_from(cls, source):
393
+ source = _cast_source_to_int(source)
394
+ source = ctype(source).value # cast within range
395
+ return cls(source)
396
+ def __int__(self):
397
+ return self._value
398
+
399
+ if kind == 'bool':
400
+ @classmethod
401
+ def _cast_from(cls, source):
402
+ if not isinstance(source, (int, long, float)):
403
+ source = _cast_source_to_int(source)
404
+ return cls(bool(source))
405
+ def __int__(self):
406
+ return int(self._value)
407
+
408
+ if kind == 'char':
409
+ @classmethod
410
+ def _cast_from(cls, source):
411
+ source = _cast_source_to_int(source)
412
+ source = bytechr(source & 0xFF)
413
+ return cls(source)
414
+ def __int__(self):
415
+ return ord(self._value)
416
+
417
+ if kind == 'float':
418
+ @classmethod
419
+ def _cast_from(cls, source):
420
+ if isinstance(source, float):
421
+ pass
422
+ elif isinstance(source, CTypesGenericPrimitive):
423
+ if hasattr(source, '__float__'):
424
+ source = float(source)
425
+ else:
426
+ source = int(source)
427
+ else:
428
+ source = _cast_source_to_int(source)
429
+ source = ctype(source).value # fix precision
430
+ return cls(source)
431
+ def __int__(self):
432
+ return int(self._value)
433
+ def __float__(self):
434
+ return self._value
435
+
436
+ _cast_to_integer = __int__
437
+
438
+ if kind == 'int' or kind == 'byte' or kind == 'bool':
439
+ @staticmethod
440
+ def _to_ctypes(x):
441
+ if not isinstance(x, (int, long)):
442
+ if isinstance(x, CTypesData):
443
+ x = int(x)
444
+ else:
445
+ raise TypeError("integer expected, got %s" %
446
+ type(x).__name__)
447
+ if ctype(x).value != x:
448
+ if not is_signed and x < 0:
449
+ raise OverflowError("%s: negative integer" % name)
450
+ else:
451
+ raise OverflowError("%s: integer out of bounds"
452
+ % name)
453
+ return x
454
+
455
+ if kind == 'char':
456
+ @staticmethod
457
+ def _to_ctypes(x):
458
+ if isinstance(x, bytes) and len(x) == 1:
459
+ return x
460
+ if isinstance(x, CTypesPrimitive): # <CData <char>>
461
+ return x._value
462
+ raise TypeError("character expected, got %s" %
463
+ type(x).__name__)
464
+ def __nonzero__(self):
465
+ return ord(self._value) != 0
466
+ else:
467
+ def __nonzero__(self):
468
+ return self._value != 0
469
+ __bool__ = __nonzero__
470
+
471
+ if kind == 'float':
472
+ @staticmethod
473
+ def _to_ctypes(x):
474
+ if not isinstance(x, (int, long, float, CTypesData)):
475
+ raise TypeError("float expected, got %s" %
476
+ type(x).__name__)
477
+ return ctype(x).value
478
+
479
+ @staticmethod
480
+ def _from_ctypes(value):
481
+ return getattr(value, 'value', value)
482
+
483
+ @staticmethod
484
+ def _initialize(blob, init):
485
+ blob.value = CTypesPrimitive._to_ctypes(init)
486
+
487
+ if kind == 'char':
488
+ def _to_string(self, maxlen):
489
+ return self._value
490
+ if kind == 'byte':
491
+ def _to_string(self, maxlen):
492
+ return chr(self._value & 0xff)
493
+ #
494
+ CTypesPrimitive._fix_class()
495
+ return CTypesPrimitive
496
+
497
+ def new_pointer_type(self, BItem):
498
+ getbtype = self.ffi._get_cached_btype
499
+ if BItem is getbtype(model.PrimitiveType('char')):
500
+ kind = 'charp'
501
+ elif BItem in (getbtype(model.PrimitiveType('signed char')),
502
+ getbtype(model.PrimitiveType('unsigned char'))):
503
+ kind = 'bytep'
504
+ elif BItem is getbtype(model.void_type):
505
+ kind = 'voidp'
506
+ else:
507
+ kind = 'generic'
508
+ #
509
+ class CTypesPtr(CTypesGenericPtr):
510
+ __slots__ = ['_own']
511
+ if kind == 'charp':
512
+ __slots__ += ['__as_strbuf']
513
+ _BItem = BItem
514
+ if hasattr(BItem, '_ctype'):
515
+ _ctype = ctypes.POINTER(BItem._ctype)
516
+ _bitem_size = ctypes.sizeof(BItem._ctype)
517
+ else:
518
+ _ctype = ctypes.c_void_p
519
+ if issubclass(BItem, CTypesGenericArray):
520
+ _reftypename = BItem._get_c_name('(* &)')
521
+ else:
522
+ _reftypename = BItem._get_c_name(' * &')
523
+
524
+ def __init__(self, init):
525
+ ctypeobj = BItem._create_ctype_obj(init)
526
+ if kind == 'charp':
527
+ self.__as_strbuf = ctypes.create_string_buffer(
528
+ ctypeobj.value + b'\x00')
529
+ self._as_ctype_ptr = ctypes.cast(
530
+ self.__as_strbuf, self._ctype)
531
+ else:
532
+ self._as_ctype_ptr = ctypes.pointer(ctypeobj)
533
+ self._address = ctypes.cast(self._as_ctype_ptr,
534
+ ctypes.c_void_p).value
535
+ self._own = True
536
+
537
+ def __add__(self, other):
538
+ if isinstance(other, (int, long)):
539
+ return self._new_pointer_at(self._address +
540
+ other * self._bitem_size)
541
+ else:
542
+ return NotImplemented
543
+
544
+ def __sub__(self, other):
545
+ if isinstance(other, (int, long)):
546
+ return self._new_pointer_at(self._address -
547
+ other * self._bitem_size)
548
+ elif type(self) is type(other):
549
+ return (self._address - other._address) // self._bitem_size
550
+ else:
551
+ return NotImplemented
552
+
553
+ def __getitem__(self, index):
554
+ if getattr(self, '_own', False) and index != 0:
555
+ raise IndexError
556
+ return BItem._from_ctypes(self._as_ctype_ptr[index])
557
+
558
+ def __setitem__(self, index, value):
559
+ self._as_ctype_ptr[index] = BItem._to_ctypes(value)
560
+
561
+ if kind == 'charp' or kind == 'voidp':
562
+ @classmethod
563
+ def _arg_to_ctypes(cls, *value):
564
+ if value and isinstance(value[0], bytes):
565
+ return ctypes.c_char_p(value[0])
566
+ else:
567
+ return super(CTypesPtr, cls)._arg_to_ctypes(*value)
568
+
569
+ if kind == 'charp' or kind == 'bytep':
570
+ def _to_string(self, maxlen):
571
+ if maxlen < 0:
572
+ maxlen = sys.maxsize
573
+ p = ctypes.cast(self._as_ctype_ptr,
574
+ ctypes.POINTER(ctypes.c_char))
575
+ n = 0
576
+ while n < maxlen and p[n] != b'\x00':
577
+ n += 1
578
+ return b''.join([p[i] for i in range(n)])
579
+
580
+ def _get_own_repr(self):
581
+ if getattr(self, '_own', False):
582
+ return 'owning %d bytes' % (
583
+ ctypes.sizeof(self._as_ctype_ptr.contents),)
584
+ return super(CTypesPtr, self)._get_own_repr()
585
+ #
586
+ if (BItem is self.ffi._get_cached_btype(model.void_type) or
587
+ BItem is self.ffi._get_cached_btype(model.PrimitiveType('char'))):
588
+ CTypesPtr._automatic_casts = True
589
+ #
590
+ CTypesPtr._fix_class()
591
+ return CTypesPtr
592
+
593
+ def new_array_type(self, CTypesPtr, length):
594
+ if length is None:
595
+ brackets = ' &[]'
596
+ else:
597
+ brackets = ' &[%d]' % length
598
+ BItem = CTypesPtr._BItem
599
+ getbtype = self.ffi._get_cached_btype
600
+ if BItem is getbtype(model.PrimitiveType('char')):
601
+ kind = 'char'
602
+ elif BItem in (getbtype(model.PrimitiveType('signed char')),
603
+ getbtype(model.PrimitiveType('unsigned char'))):
604
+ kind = 'byte'
605
+ else:
606
+ kind = 'generic'
607
+ #
608
+ class CTypesArray(CTypesGenericArray):
609
+ __slots__ = ['_blob', '_own']
610
+ if length is not None:
611
+ _ctype = BItem._ctype * length
612
+ else:
613
+ __slots__.append('_ctype')
614
+ _reftypename = BItem._get_c_name(brackets)
615
+ _declared_length = length
616
+ _CTPtr = CTypesPtr
617
+
618
+ def __init__(self, init):
619
+ if length is None:
620
+ if isinstance(init, (int, long)):
621
+ len1 = init
622
+ init = None
623
+ elif kind == 'char' and isinstance(init, bytes):
624
+ len1 = len(init) + 1 # extra null
625
+ else:
626
+ init = tuple(init)
627
+ len1 = len(init)
628
+ self._ctype = BItem._ctype * len1
629
+ self._blob = self._ctype()
630
+ self._own = True
631
+ if init is not None:
632
+ self._initialize(self._blob, init)
633
+
634
+ @staticmethod
635
+ def _initialize(blob, init):
636
+ if isinstance(init, bytes):
637
+ init = [init[i:i+1] for i in range(len(init))]
638
+ else:
639
+ if isinstance(init, CTypesGenericArray):
640
+ if (len(init) != len(blob) or
641
+ not isinstance(init, CTypesArray)):
642
+ raise TypeError("length/type mismatch: %s" % (init,))
643
+ init = tuple(init)
644
+ if len(init) > len(blob):
645
+ raise IndexError("too many initializers")
646
+ addr = ctypes.cast(blob, ctypes.c_void_p).value
647
+ PTR = ctypes.POINTER(BItem._ctype)
648
+ itemsize = ctypes.sizeof(BItem._ctype)
649
+ for i, value in enumerate(init):
650
+ p = ctypes.cast(addr + i * itemsize, PTR)
651
+ BItem._initialize(p.contents, value)
652
+
653
+ def __len__(self):
654
+ return len(self._blob)
655
+
656
+ def __getitem__(self, index):
657
+ if not (0 <= index < len(self._blob)):
658
+ raise IndexError
659
+ return BItem._from_ctypes(self._blob[index])
660
+
661
+ def __setitem__(self, index, value):
662
+ if not (0 <= index < len(self._blob)):
663
+ raise IndexError
664
+ self._blob[index] = BItem._to_ctypes(value)
665
+
666
+ if kind == 'char' or kind == 'byte':
667
+ def _to_string(self, maxlen):
668
+ if maxlen < 0:
669
+ maxlen = len(self._blob)
670
+ p = ctypes.cast(self._blob,
671
+ ctypes.POINTER(ctypes.c_char))
672
+ n = 0
673
+ while n < maxlen and p[n] != b'\x00':
674
+ n += 1
675
+ return b''.join([p[i] for i in range(n)])
676
+
677
+ def _get_own_repr(self):
678
+ if getattr(self, '_own', False):
679
+ return 'owning %d bytes' % (ctypes.sizeof(self._blob),)
680
+ return super(CTypesArray, self)._get_own_repr()
681
+
682
+ def _convert_to_address(self, BClass):
683
+ if BClass in (CTypesPtr, None) or BClass._automatic_casts:
684
+ return ctypes.addressof(self._blob)
685
+ else:
686
+ return CTypesData._convert_to_address(self, BClass)
687
+
688
+ @staticmethod
689
+ def _from_ctypes(ctypes_array):
690
+ self = CTypesArray.__new__(CTypesArray)
691
+ self._blob = ctypes_array
692
+ return self
693
+
694
+ @staticmethod
695
+ def _arg_to_ctypes(value):
696
+ return CTypesPtr._arg_to_ctypes(value)
697
+
698
+ def __add__(self, other):
699
+ if isinstance(other, (int, long)):
700
+ return CTypesPtr._new_pointer_at(
701
+ ctypes.addressof(self._blob) +
702
+ other * ctypes.sizeof(BItem._ctype))
703
+ else:
704
+ return NotImplemented
705
+
706
+ @classmethod
707
+ def _cast_from(cls, source):
708
+ raise NotImplementedError("casting to %r" % (
709
+ cls._get_c_name(),))
710
+ #
711
+ CTypesArray._fix_class()
712
+ return CTypesArray
713
+
714
+ def _new_struct_or_union(self, kind, name, base_ctypes_class):
715
+ #
716
+ class struct_or_union(base_ctypes_class):
717
+ pass
718
+ struct_or_union.__name__ = '%s_%s' % (kind, name)
719
+ kind1 = kind
720
+ #
721
+ class CTypesStructOrUnion(CTypesBaseStructOrUnion):
722
+ __slots__ = ['_blob']
723
+ _ctype = struct_or_union
724
+ _reftypename = '%s &' % (name,)
725
+ _kind = kind = kind1
726
+ #
727
+ CTypesStructOrUnion._fix_class()
728
+ return CTypesStructOrUnion
729
+
730
+ def new_struct_type(self, name):
731
+ return self._new_struct_or_union('struct', name, ctypes.Structure)
732
+
733
+ def new_union_type(self, name):
734
+ return self._new_struct_or_union('union', name, ctypes.Union)
735
+
736
+ def complete_struct_or_union(self, CTypesStructOrUnion, fields, tp,
737
+ totalsize=-1, totalalignment=-1, sflags=0,
738
+ pack=0):
739
+ if totalsize >= 0 or totalalignment >= 0:
740
+ raise NotImplementedError("the ctypes backend of CFFI does not support "
741
+ "structures completed by verify(); please "
742
+ "compile and install the _cffi_backend module.")
743
+ struct_or_union = CTypesStructOrUnion._ctype
744
+ fnames = [fname for (fname, BField, bitsize) in fields]
745
+ btypes = [BField for (fname, BField, bitsize) in fields]
746
+ bitfields = [bitsize for (fname, BField, bitsize) in fields]
747
+ #
748
+ bfield_types = {}
749
+ cfields = []
750
+ for (fname, BField, bitsize) in fields:
751
+ if bitsize < 0:
752
+ cfields.append((fname, BField._ctype))
753
+ bfield_types[fname] = BField
754
+ else:
755
+ cfields.append((fname, BField._ctype, bitsize))
756
+ bfield_types[fname] = Ellipsis
757
+ if sflags & 8:
758
+ struct_or_union._pack_ = 1
759
+ elif pack:
760
+ struct_or_union._pack_ = pack
761
+ struct_or_union._fields_ = cfields
762
+ CTypesStructOrUnion._bfield_types = bfield_types
763
+ #
764
+ @staticmethod
765
+ def _create_ctype_obj(init):
766
+ result = struct_or_union()
767
+ if init is not None:
768
+ initialize(result, init)
769
+ return result
770
+ CTypesStructOrUnion._create_ctype_obj = _create_ctype_obj
771
+ #
772
+ def initialize(blob, init):
773
+ if is_union:
774
+ if len(init) > 1:
775
+ raise ValueError("union initializer: %d items given, but "
776
+ "only one supported (use a dict if needed)"
777
+ % (len(init),))
778
+ if not isinstance(init, dict):
779
+ if isinstance(init, (bytes, unicode)):
780
+ raise TypeError("union initializer: got a str")
781
+ init = tuple(init)
782
+ if len(init) > len(fnames):
783
+ raise ValueError("too many values for %s initializer" %
784
+ CTypesStructOrUnion._get_c_name())
785
+ init = dict(zip(fnames, init))
786
+ addr = ctypes.addressof(blob)
787
+ for fname, value in init.items():
788
+ BField, bitsize = name2fieldtype[fname]
789
+ assert bitsize < 0, \
790
+ "not implemented: initializer with bit fields"
791
+ offset = CTypesStructOrUnion._offsetof(fname)
792
+ PTR = ctypes.POINTER(BField._ctype)
793
+ p = ctypes.cast(addr + offset, PTR)
794
+ BField._initialize(p.contents, value)
795
+ is_union = CTypesStructOrUnion._kind == 'union'
796
+ name2fieldtype = dict(zip(fnames, zip(btypes, bitfields)))
797
+ #
798
+ for fname, BField, bitsize in fields:
799
+ if fname == '':
800
+ raise NotImplementedError("nested anonymous structs/unions")
801
+ if hasattr(CTypesStructOrUnion, fname):
802
+ raise ValueError("the field name %r conflicts in "
803
+ "the ctypes backend" % fname)
804
+ if bitsize < 0:
805
+ def getter(self, fname=fname, BField=BField,
806
+ offset=CTypesStructOrUnion._offsetof(fname),
807
+ PTR=ctypes.POINTER(BField._ctype)):
808
+ addr = ctypes.addressof(self._blob)
809
+ p = ctypes.cast(addr + offset, PTR)
810
+ return BField._from_ctypes(p.contents)
811
+ def setter(self, value, fname=fname, BField=BField):
812
+ setattr(self._blob, fname, BField._to_ctypes(value))
813
+ #
814
+ if issubclass(BField, CTypesGenericArray):
815
+ setter = None
816
+ if BField._declared_length == 0:
817
+ def getter(self, fname=fname, BFieldPtr=BField._CTPtr,
818
+ offset=CTypesStructOrUnion._offsetof(fname),
819
+ PTR=ctypes.POINTER(BField._ctype)):
820
+ addr = ctypes.addressof(self._blob)
821
+ p = ctypes.cast(addr + offset, PTR)
822
+ return BFieldPtr._from_ctypes(p)
823
+ #
824
+ else:
825
+ def getter(self, fname=fname, BField=BField):
826
+ return BField._from_ctypes(getattr(self._blob, fname))
827
+ def setter(self, value, fname=fname, BField=BField):
828
+ # xxx obscure workaround
829
+ value = BField._to_ctypes(value)
830
+ oldvalue = getattr(self._blob, fname)
831
+ setattr(self._blob, fname, value)
832
+ if value != getattr(self._blob, fname):
833
+ setattr(self._blob, fname, oldvalue)
834
+ raise OverflowError("value too large for bitfield")
835
+ setattr(CTypesStructOrUnion, fname, property(getter, setter))
836
+ #
837
+ CTypesPtr = self.ffi._get_cached_btype(model.PointerType(tp))
838
+ for fname in fnames:
839
+ if hasattr(CTypesPtr, fname):
840
+ raise ValueError("the field name %r conflicts in "
841
+ "the ctypes backend" % fname)
842
+ def getter(self, fname=fname):
843
+ return getattr(self[0], fname)
844
+ def setter(self, value, fname=fname):
845
+ setattr(self[0], fname, value)
846
+ setattr(CTypesPtr, fname, property(getter, setter))
847
+
848
+ def new_function_type(self, BArgs, BResult, has_varargs):
849
+ nameargs = [BArg._get_c_name() for BArg in BArgs]
850
+ if has_varargs:
851
+ nameargs.append('...')
852
+ nameargs = ', '.join(nameargs)
853
+ #
854
+ class CTypesFunctionPtr(CTypesGenericPtr):
855
+ __slots__ = ['_own_callback', '_name']
856
+ _ctype = ctypes.CFUNCTYPE(getattr(BResult, '_ctype', None),
857
+ *[BArg._ctype for BArg in BArgs],
858
+ use_errno=True)
859
+ _reftypename = BResult._get_c_name('(* &)(%s)' % (nameargs,))
860
+
861
+ def __init__(self, init, error=None):
862
+ # create a callback to the Python callable init()
863
+ import traceback
864
+ assert not has_varargs, "varargs not supported for callbacks"
865
+ if getattr(BResult, '_ctype', None) is not None:
866
+ error = BResult._from_ctypes(
867
+ BResult._create_ctype_obj(error))
868
+ else:
869
+ error = None
870
+ def callback(*args):
871
+ args2 = []
872
+ for arg, BArg in zip(args, BArgs):
873
+ args2.append(BArg._from_ctypes(arg))
874
+ try:
875
+ res2 = init(*args2)
876
+ res2 = BResult._to_ctypes(res2)
877
+ except:
878
+ traceback.print_exc()
879
+ res2 = error
880
+ if issubclass(BResult, CTypesGenericPtr):
881
+ if res2:
882
+ res2 = ctypes.cast(res2, ctypes.c_void_p).value
883
+ # .value: http://bugs.python.org/issue1574593
884
+ else:
885
+ res2 = None
886
+ #print repr(res2)
887
+ return res2
888
+ if issubclass(BResult, CTypesGenericPtr):
889
+ # The only pointers callbacks can return are void*s:
890
+ # http://bugs.python.org/issue5710
891
+ callback_ctype = ctypes.CFUNCTYPE(
892
+ ctypes.c_void_p,
893
+ *[BArg._ctype for BArg in BArgs],
894
+ use_errno=True)
895
+ else:
896
+ callback_ctype = CTypesFunctionPtr._ctype
897
+ self._as_ctype_ptr = callback_ctype(callback)
898
+ self._address = ctypes.cast(self._as_ctype_ptr,
899
+ ctypes.c_void_p).value
900
+ self._own_callback = init
901
+
902
+ @staticmethod
903
+ def _initialize(ctypes_ptr, value):
904
+ if value:
905
+ raise NotImplementedError("ctypes backend: not supported: "
906
+ "initializers for function pointers")
907
+
908
+ def __repr__(self):
909
+ c_name = getattr(self, '_name', None)
910
+ if c_name:
911
+ i = self._reftypename.index('(* &)')
912
+ if self._reftypename[i-1] not in ' )*':
913
+ c_name = ' ' + c_name
914
+ c_name = self._reftypename.replace('(* &)', c_name)
915
+ return CTypesData.__repr__(self, c_name)
916
+
917
+ def _get_own_repr(self):
918
+ if getattr(self, '_own_callback', None) is not None:
919
+ return 'calling %r' % (self._own_callback,)
920
+ return super(CTypesFunctionPtr, self)._get_own_repr()
921
+
922
+ def __call__(self, *args):
923
+ if has_varargs:
924
+ assert len(args) >= len(BArgs)
925
+ extraargs = args[len(BArgs):]
926
+ args = args[:len(BArgs)]
927
+ else:
928
+ assert len(args) == len(BArgs)
929
+ ctypes_args = []
930
+ for arg, BArg in zip(args, BArgs):
931
+ ctypes_args.append(BArg._arg_to_ctypes(arg))
932
+ if has_varargs:
933
+ for i, arg in enumerate(extraargs):
934
+ if arg is None:
935
+ ctypes_args.append(ctypes.c_void_p(0)) # NULL
936
+ continue
937
+ if not isinstance(arg, CTypesData):
938
+ raise TypeError(
939
+ "argument %d passed in the variadic part "
940
+ "needs to be a cdata object (got %s)" %
941
+ (1 + len(BArgs) + i, type(arg).__name__))
942
+ ctypes_args.append(arg._arg_to_ctypes(arg))
943
+ result = self._as_ctype_ptr(*ctypes_args)
944
+ return BResult._from_ctypes(result)
945
+ #
946
+ CTypesFunctionPtr._fix_class()
947
+ return CTypesFunctionPtr
948
+
949
+ def new_enum_type(self, name, enumerators, enumvalues, CTypesInt):
950
+ assert isinstance(name, str)
951
+ reverse_mapping = dict(zip(reversed(enumvalues),
952
+ reversed(enumerators)))
953
+ #
954
+ class CTypesEnum(CTypesInt):
955
+ __slots__ = []
956
+ _reftypename = '%s &' % name
957
+
958
+ def _get_own_repr(self):
959
+ value = self._value
960
+ try:
961
+ return '%d: %s' % (value, reverse_mapping[value])
962
+ except KeyError:
963
+ return str(value)
964
+
965
+ def _to_string(self, maxlen):
966
+ value = self._value
967
+ try:
968
+ return reverse_mapping[value]
969
+ except KeyError:
970
+ return str(value)
971
+ #
972
+ CTypesEnum._fix_class()
973
+ return CTypesEnum
974
+
975
+ def get_errno(self):
976
+ return ctypes.get_errno()
977
+
978
+ def set_errno(self, value):
979
+ ctypes.set_errno(value)
980
+
981
+ def string(self, b, maxlen=-1):
982
+ return b._to_string(maxlen)
983
+
984
+ def buffer(self, bptr, size=-1):
985
+ raise NotImplementedError("buffer() with ctypes backend")
986
+
987
+ def sizeof(self, cdata_or_BType):
988
+ if isinstance(cdata_or_BType, CTypesData):
989
+ return cdata_or_BType._get_size_of_instance()
990
+ else:
991
+ assert issubclass(cdata_or_BType, CTypesData)
992
+ return cdata_or_BType._get_size()
993
+
994
+ def alignof(self, BType):
995
+ assert issubclass(BType, CTypesData)
996
+ return BType._alignment()
997
+
998
+ def newp(self, BType, source):
999
+ if not issubclass(BType, CTypesData):
1000
+ raise TypeError
1001
+ return BType._newp(source)
1002
+
1003
+ def cast(self, BType, source):
1004
+ return BType._cast_from(source)
1005
+
1006
+ def callback(self, BType, source, error, onerror):
1007
+ assert onerror is None # XXX not implemented
1008
+ return BType(source, error)
1009
+
1010
+ _weakref_cache_ref = None
1011
+
1012
+ def gcp(self, cdata, destructor, size=0):
1013
+ if self._weakref_cache_ref is None:
1014
+ import weakref
1015
+ class MyRef(weakref.ref):
1016
+ def __eq__(self, other):
1017
+ myref = self()
1018
+ return self is other or (
1019
+ myref is not None and myref is other())
1020
+ def __ne__(self, other):
1021
+ return not (self == other)
1022
+ def __hash__(self):
1023
+ try:
1024
+ return self._hash
1025
+ except AttributeError:
1026
+ self._hash = hash(self())
1027
+ return self._hash
1028
+ self._weakref_cache_ref = {}, MyRef
1029
+ weak_cache, MyRef = self._weakref_cache_ref
1030
+
1031
+ if destructor is None:
1032
+ try:
1033
+ del weak_cache[MyRef(cdata)]
1034
+ except KeyError:
1035
+ raise TypeError("Can remove destructor only on a object "
1036
+ "previously returned by ffi.gc()")
1037
+ return None
1038
+
1039
+ def remove(k):
1040
+ cdata, destructor = weak_cache.pop(k, (None, None))
1041
+ if destructor is not None:
1042
+ destructor(cdata)
1043
+
1044
+ new_cdata = self.cast(self.typeof(cdata), cdata)
1045
+ assert new_cdata is not cdata
1046
+ weak_cache[MyRef(new_cdata, remove)] = (cdata, destructor)
1047
+ return new_cdata
1048
+
1049
+ typeof = type
1050
+
1051
+ def getcname(self, BType, replace_with):
1052
+ return BType._get_c_name(replace_with)
1053
+
1054
+ def typeoffsetof(self, BType, fieldname, num=0):
1055
+ if isinstance(fieldname, str):
1056
+ if num == 0 and issubclass(BType, CTypesGenericPtr):
1057
+ BType = BType._BItem
1058
+ if not issubclass(BType, CTypesBaseStructOrUnion):
1059
+ raise TypeError("expected a struct or union ctype")
1060
+ BField = BType._bfield_types[fieldname]
1061
+ if BField is Ellipsis:
1062
+ raise TypeError("not supported for bitfields")
1063
+ return (BField, BType._offsetof(fieldname))
1064
+ elif isinstance(fieldname, (int, long)):
1065
+ if issubclass(BType, CTypesGenericArray):
1066
+ BType = BType._CTPtr
1067
+ if not issubclass(BType, CTypesGenericPtr):
1068
+ raise TypeError("expected an array or ptr ctype")
1069
+ BItem = BType._BItem
1070
+ offset = BItem._get_size() * fieldname
1071
+ if offset > sys.maxsize:
1072
+ raise OverflowError
1073
+ return (BItem, offset)
1074
+ else:
1075
+ raise TypeError(type(fieldname))
1076
+
1077
+ def rawaddressof(self, BTypePtr, cdata, offset=None):
1078
+ if isinstance(cdata, CTypesBaseStructOrUnion):
1079
+ ptr = ctypes.pointer(type(cdata)._to_ctypes(cdata))
1080
+ elif isinstance(cdata, CTypesGenericPtr):
1081
+ if offset is None or not issubclass(type(cdata)._BItem,
1082
+ CTypesBaseStructOrUnion):
1083
+ raise TypeError("unexpected cdata type")
1084
+ ptr = type(cdata)._to_ctypes(cdata)
1085
+ elif isinstance(cdata, CTypesGenericArray):
1086
+ ptr = type(cdata)._to_ctypes(cdata)
1087
+ else:
1088
+ raise TypeError("expected a <cdata 'struct-or-union'>")
1089
+ if offset:
1090
+ ptr = ctypes.cast(
1091
+ ctypes.c_void_p(
1092
+ ctypes.cast(ptr, ctypes.c_void_p).value + offset),
1093
+ type(ptr))
1094
+ return BTypePtr._from_ctypes(ptr)
1095
+
1096
+
1097
+ class CTypesLibrary(object):
1098
+
1099
+ def __init__(self, backend, cdll):
1100
+ self.backend = backend
1101
+ self.cdll = cdll
1102
+
1103
+ def load_function(self, BType, name):
1104
+ c_func = getattr(self.cdll, name)
1105
+ funcobj = BType._from_ctypes(c_func)
1106
+ funcobj._name = name
1107
+ return funcobj
1108
+
1109
+ def read_variable(self, BType, name):
1110
+ try:
1111
+ ctypes_obj = BType._ctype.in_dll(self.cdll, name)
1112
+ except AttributeError as e:
1113
+ raise NotImplementedError(e)
1114
+ return BType._from_ctypes(ctypes_obj)
1115
+
1116
+ def write_variable(self, BType, name, value):
1117
+ new_ctypes_obj = BType._to_ctypes(value)
1118
+ ctypes_obj = BType._ctype.in_dll(self.cdll, name)
1119
+ ctypes.memmove(ctypes.addressof(ctypes_obj),
1120
+ ctypes.addressof(new_ctypes_obj),
1121
+ ctypes.sizeof(BType._ctype))