@pairling/runtime-darwin-arm64 0.2.0 → 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 (249) hide show
  1. package/README.md +1 -1
  2. package/bin/pairling-connectd +0 -0
  3. package/manifest.json +4 -4
  4. package/package.json +3 -3
  5. package/python/bin/python3 +0 -0
  6. package/python/bin/python3.12 +0 -0
  7. package/python/lib/libpython3.12.dylib +0 -0
  8. package/python/lib/python3.12/__pycache__/__future__.cpython-312.pyc +0 -0
  9. package/python/lib/python3.12/__pycache__/_compression.cpython-312.pyc +0 -0
  10. package/python/lib/python3.12/__pycache__/_weakrefset.cpython-312.pyc +0 -0
  11. package/python/lib/python3.12/__pycache__/base64.cpython-312.pyc +0 -0
  12. package/python/lib/python3.12/__pycache__/bisect.cpython-312.pyc +0 -0
  13. package/python/lib/python3.12/__pycache__/bz2.cpython-312.pyc +0 -0
  14. package/python/lib/python3.12/__pycache__/calendar.cpython-312.pyc +0 -0
  15. package/python/lib/python3.12/__pycache__/contextlib.cpython-312.pyc +0 -0
  16. package/python/lib/python3.12/__pycache__/copyreg.cpython-312.pyc +0 -0
  17. package/python/lib/python3.12/__pycache__/datetime.cpython-312.pyc +0 -0
  18. package/python/lib/python3.12/__pycache__/enum.cpython-312.pyc +0 -0
  19. package/python/lib/python3.12/__pycache__/fnmatch.cpython-312.pyc +0 -0
  20. package/python/lib/python3.12/__pycache__/functools.cpython-312.pyc +0 -0
  21. package/python/lib/python3.12/__pycache__/hashlib.cpython-312.pyc +0 -0
  22. package/python/lib/python3.12/__pycache__/hmac.cpython-312.pyc +0 -0
  23. package/python/lib/python3.12/__pycache__/ipaddress.cpython-312.pyc +0 -0
  24. package/python/lib/python3.12/__pycache__/keyword.cpython-312.pyc +0 -0
  25. package/python/lib/python3.12/__pycache__/locale.cpython-312.pyc +0 -0
  26. package/python/lib/python3.12/__pycache__/lzma.cpython-312.pyc +0 -0
  27. package/python/lib/python3.12/__pycache__/operator.cpython-312.pyc +0 -0
  28. package/python/lib/python3.12/__pycache__/plistlib.cpython-312.pyc +0 -0
  29. package/python/lib/python3.12/__pycache__/pty.cpython-312.pyc +0 -0
  30. package/python/lib/python3.12/__pycache__/quopri.cpython-312.pyc +0 -0
  31. package/python/lib/python3.12/__pycache__/random.cpython-312.pyc +0 -0
  32. package/python/lib/python3.12/__pycache__/reprlib.cpython-312.pyc +0 -0
  33. package/python/lib/python3.12/__pycache__/selectors.cpython-312.pyc +0 -0
  34. package/python/lib/python3.12/__pycache__/shutil.cpython-312.pyc +0 -0
  35. package/python/lib/python3.12/__pycache__/signal.cpython-312.pyc +0 -0
  36. package/python/lib/python3.12/__pycache__/socket.cpython-312.pyc +0 -0
  37. package/python/lib/python3.12/__pycache__/ssl.cpython-312.pyc +0 -0
  38. package/python/lib/python3.12/__pycache__/string.cpython-312.pyc +0 -0
  39. package/python/lib/python3.12/__pycache__/struct.cpython-312.pyc +0 -0
  40. package/python/lib/python3.12/__pycache__/subprocess.cpython-312.pyc +0 -0
  41. package/python/lib/python3.12/__pycache__/tempfile.cpython-312.pyc +0 -0
  42. package/python/lib/python3.12/__pycache__/threading.cpython-312.pyc +0 -0
  43. package/python/lib/python3.12/__pycache__/tty.cpython-312.pyc +0 -0
  44. package/python/lib/python3.12/__pycache__/types.cpython-312.pyc +0 -0
  45. package/python/lib/python3.12/__pycache__/typing.cpython-312.pyc +0 -0
  46. package/python/lib/python3.12/__pycache__/warnings.cpython-312.pyc +0 -0
  47. package/python/lib/python3.12/__pycache__/weakref.cpython-312.pyc +0 -0
  48. package/python/lib/python3.12/collections/__pycache__/__init__.cpython-312.pyc +0 -0
  49. package/python/lib/python3.12/collections/__pycache__/abc.cpython-312.pyc +0 -0
  50. package/python/lib/python3.12/email/__pycache__/__init__.cpython-312.pyc +0 -0
  51. package/python/lib/python3.12/email/__pycache__/_encoded_words.cpython-312.pyc +0 -0
  52. package/python/lib/python3.12/email/__pycache__/_parseaddr.cpython-312.pyc +0 -0
  53. package/python/lib/python3.12/email/__pycache__/_policybase.cpython-312.pyc +0 -0
  54. package/python/lib/python3.12/email/__pycache__/base64mime.cpython-312.pyc +0 -0
  55. package/python/lib/python3.12/email/__pycache__/charset.cpython-312.pyc +0 -0
  56. package/python/lib/python3.12/email/__pycache__/encoders.cpython-312.pyc +0 -0
  57. package/python/lib/python3.12/email/__pycache__/errors.cpython-312.pyc +0 -0
  58. package/python/lib/python3.12/email/__pycache__/feedparser.cpython-312.pyc +0 -0
  59. package/python/lib/python3.12/email/__pycache__/header.cpython-312.pyc +0 -0
  60. package/python/lib/python3.12/email/__pycache__/iterators.cpython-312.pyc +0 -0
  61. package/python/lib/python3.12/email/__pycache__/message.cpython-312.pyc +0 -0
  62. package/python/lib/python3.12/email/__pycache__/parser.cpython-312.pyc +0 -0
  63. package/python/lib/python3.12/email/__pycache__/quoprimime.cpython-312.pyc +0 -0
  64. package/python/lib/python3.12/email/__pycache__/utils.cpython-312.pyc +0 -0
  65. package/python/lib/python3.12/encodings/__pycache__/__init__.cpython-312.pyc +0 -0
  66. package/python/lib/python3.12/encodings/__pycache__/aliases.cpython-312.pyc +0 -0
  67. package/python/lib/python3.12/encodings/__pycache__/utf_8.cpython-312.pyc +0 -0
  68. package/python/lib/python3.12/http/__pycache__/__init__.cpython-312.pyc +0 -0
  69. package/python/lib/python3.12/http/__pycache__/client.cpython-312.pyc +0 -0
  70. package/python/lib/python3.12/json/__pycache__/__init__.cpython-312.pyc +0 -0
  71. package/python/lib/python3.12/json/__pycache__/decoder.cpython-312.pyc +0 -0
  72. package/python/lib/python3.12/json/__pycache__/encoder.cpython-312.pyc +0 -0
  73. package/python/lib/python3.12/json/__pycache__/scanner.cpython-312.pyc +0 -0
  74. package/python/lib/python3.12/lib-dynload/_crypt.cpython-312-darwin.so +0 -0
  75. package/python/lib/python3.12/lib-dynload/_dbm.cpython-312-darwin.so +0 -0
  76. package/python/lib/python3.12/re/__pycache__/__init__.cpython-312.pyc +0 -0
  77. package/python/lib/python3.12/re/__pycache__/_casefix.cpython-312.pyc +0 -0
  78. package/python/lib/python3.12/re/__pycache__/_compiler.cpython-312.pyc +0 -0
  79. package/python/lib/python3.12/re/__pycache__/_constants.cpython-312.pyc +0 -0
  80. package/python/lib/python3.12/re/__pycache__/_parser.cpython-312.pyc +0 -0
  81. package/python/lib/python3.12/site-packages/_cffi_backend.cpython-312-darwin.so +0 -0
  82. package/python/lib/python3.12/site-packages/cffi/__init__.py +14 -0
  83. package/python/lib/python3.12/site-packages/cffi/__pycache__/__init__.cpython-312.pyc +0 -0
  84. package/python/lib/python3.12/site-packages/cffi/__pycache__/api.cpython-312.pyc +0 -0
  85. package/python/lib/python3.12/site-packages/cffi/__pycache__/error.cpython-312.pyc +0 -0
  86. package/python/lib/python3.12/site-packages/cffi/__pycache__/lock.cpython-312.pyc +0 -0
  87. package/python/lib/python3.12/site-packages/cffi/__pycache__/model.cpython-312.pyc +0 -0
  88. package/python/lib/python3.12/site-packages/cffi/_cffi_errors.h +149 -0
  89. package/python/lib/python3.12/site-packages/cffi/_cffi_include.h +389 -0
  90. package/python/lib/python3.12/site-packages/cffi/_embedding.h +550 -0
  91. package/python/lib/python3.12/site-packages/cffi/_imp_emulation.py +83 -0
  92. package/python/lib/python3.12/site-packages/cffi/_shimmed_dist_utils.py +45 -0
  93. package/python/lib/python3.12/site-packages/cffi/api.py +967 -0
  94. package/python/lib/python3.12/site-packages/cffi/backend_ctypes.py +1121 -0
  95. package/python/lib/python3.12/site-packages/cffi/cffi_opcode.py +187 -0
  96. package/python/lib/python3.12/site-packages/cffi/commontypes.py +82 -0
  97. package/python/lib/python3.12/site-packages/cffi/cparser.py +1015 -0
  98. package/python/lib/python3.12/site-packages/cffi/error.py +31 -0
  99. package/python/lib/python3.12/site-packages/cffi/ffiplatform.py +113 -0
  100. package/python/lib/python3.12/site-packages/cffi/lock.py +30 -0
  101. package/python/lib/python3.12/site-packages/cffi/model.py +618 -0
  102. package/python/lib/python3.12/site-packages/cffi/parse_c_type.h +181 -0
  103. package/python/lib/python3.12/site-packages/cffi/pkgconfig.py +121 -0
  104. package/python/lib/python3.12/site-packages/cffi/recompiler.py +1598 -0
  105. package/python/lib/python3.12/site-packages/cffi/setuptools_ext.py +229 -0
  106. package/python/lib/python3.12/site-packages/cffi/vengine_cpy.py +1087 -0
  107. package/python/lib/python3.12/site-packages/cffi/vengine_gen.py +679 -0
  108. package/python/lib/python3.12/site-packages/cffi/verifier.py +306 -0
  109. package/python/lib/python3.12/site-packages/cffi-2.0.0.dist-info/INSTALLER +1 -0
  110. package/python/lib/python3.12/site-packages/cffi-2.0.0.dist-info/METADATA +68 -0
  111. package/python/lib/python3.12/site-packages/cffi-2.0.0.dist-info/RECORD +31 -0
  112. package/python/lib/python3.12/site-packages/cffi-2.0.0.dist-info/WHEEL +6 -0
  113. package/python/lib/python3.12/site-packages/cffi-2.0.0.dist-info/entry_points.txt +2 -0
  114. package/python/lib/python3.12/site-packages/cffi-2.0.0.dist-info/licenses/AUTHORS +8 -0
  115. package/python/lib/python3.12/site-packages/cffi-2.0.0.dist-info/licenses/LICENSE +23 -0
  116. package/python/lib/python3.12/site-packages/cffi-2.0.0.dist-info/top_level.txt +2 -0
  117. package/python/lib/python3.12/site-packages/cryptography/__about__.py +17 -0
  118. package/python/lib/python3.12/site-packages/cryptography/__init__.py +26 -0
  119. package/python/lib/python3.12/site-packages/cryptography/__pycache__/__about__.cpython-312.pyc +0 -0
  120. package/python/lib/python3.12/site-packages/cryptography/__pycache__/__init__.cpython-312.pyc +0 -0
  121. package/python/lib/python3.12/site-packages/cryptography/__pycache__/utils.cpython-312.pyc +0 -0
  122. package/python/lib/python3.12/site-packages/cryptography/exceptions.py +52 -0
  123. package/python/lib/python3.12/site-packages/cryptography/fernet.py +224 -0
  124. package/python/lib/python3.12/site-packages/cryptography/hazmat/__init__.py +13 -0
  125. package/python/lib/python3.12/site-packages/cryptography/hazmat/_oid.py +348 -0
  126. package/python/lib/python3.12/site-packages/cryptography/hazmat/backends/__init__.py +13 -0
  127. package/python/lib/python3.12/site-packages/cryptography/hazmat/backends/openssl/__init__.py +9 -0
  128. package/python/lib/python3.12/site-packages/cryptography/hazmat/backends/openssl/backend.py +308 -0
  129. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/__init__.py +3 -0
  130. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/__init__.pyi +37 -0
  131. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/_openssl.pyi +8 -0
  132. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/asn1.pyi +7 -0
  133. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/exceptions.pyi +17 -0
  134. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/ocsp.pyi +117 -0
  135. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/__init__.pyi +75 -0
  136. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/aead.pyi +107 -0
  137. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/ciphers.pyi +38 -0
  138. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/cmac.pyi +18 -0
  139. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/dh.pyi +51 -0
  140. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/dsa.pyi +41 -0
  141. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/ec.pyi +52 -0
  142. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/ed25519.pyi +13 -0
  143. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/ed448.pyi +13 -0
  144. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/hashes.pyi +28 -0
  145. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/hmac.pyi +22 -0
  146. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/kdf.pyi +49 -0
  147. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/keys.pyi +34 -0
  148. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/poly1305.pyi +15 -0
  149. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/rsa.pyi +55 -0
  150. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/x25519.pyi +13 -0
  151. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/x448.pyi +13 -0
  152. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/pkcs12.pyi +52 -0
  153. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/pkcs7.pyi +50 -0
  154. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/test_support.pyi +23 -0
  155. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/x509.pyi +313 -0
  156. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust.abi3.so +0 -0
  157. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/openssl/__init__.py +3 -0
  158. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/openssl/_conditional.py +191 -0
  159. package/python/lib/python3.12/site-packages/cryptography/hazmat/bindings/openssl/binding.py +122 -0
  160. package/python/lib/python3.12/site-packages/cryptography/hazmat/decrepit/__init__.py +5 -0
  161. package/python/lib/python3.12/site-packages/cryptography/hazmat/decrepit/ciphers/__init__.py +5 -0
  162. package/python/lib/python3.12/site-packages/cryptography/hazmat/decrepit/ciphers/algorithms.py +112 -0
  163. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/__init__.py +3 -0
  164. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/_asymmetric.py +19 -0
  165. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/_cipheralgorithm.py +60 -0
  166. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/_serialization.py +168 -0
  167. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/__init__.py +3 -0
  168. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/dh.py +147 -0
  169. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/dsa.py +167 -0
  170. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/ec.py +447 -0
  171. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/ed25519.py +129 -0
  172. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/ed448.py +131 -0
  173. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/padding.py +113 -0
  174. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/rsa.py +277 -0
  175. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/types.py +111 -0
  176. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/utils.py +24 -0
  177. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/x25519.py +122 -0
  178. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/x448.py +125 -0
  179. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/__init__.py +27 -0
  180. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/aead.py +23 -0
  181. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/algorithms.py +183 -0
  182. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/base.py +146 -0
  183. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/modes.py +268 -0
  184. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/cmac.py +10 -0
  185. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/constant_time.py +14 -0
  186. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/hashes.py +246 -0
  187. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/hmac.py +13 -0
  188. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/__init__.py +23 -0
  189. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/argon2.py +13 -0
  190. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/concatkdf.py +125 -0
  191. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/hkdf.py +101 -0
  192. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/kbkdf.py +305 -0
  193. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/pbkdf2.py +62 -0
  194. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/scrypt.py +19 -0
  195. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/x963kdf.py +61 -0
  196. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/keywrap.py +177 -0
  197. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/padding.py +69 -0
  198. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/poly1305.py +11 -0
  199. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/__init__.py +65 -0
  200. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/base.py +14 -0
  201. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/pkcs12.py +176 -0
  202. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/pkcs7.py +411 -0
  203. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/ssh.py +1619 -0
  204. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/twofactor/__init__.py +9 -0
  205. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/twofactor/hotp.py +101 -0
  206. package/python/lib/python3.12/site-packages/cryptography/hazmat/primitives/twofactor/totp.py +56 -0
  207. package/python/lib/python3.12/site-packages/cryptography/py.typed +0 -0
  208. package/python/lib/python3.12/site-packages/cryptography/utils.py +139 -0
  209. package/python/lib/python3.12/site-packages/cryptography/x509/__init__.py +270 -0
  210. package/python/lib/python3.12/site-packages/cryptography/x509/base.py +848 -0
  211. package/python/lib/python3.12/site-packages/cryptography/x509/certificate_transparency.py +35 -0
  212. package/python/lib/python3.12/site-packages/cryptography/x509/extensions.py +2528 -0
  213. package/python/lib/python3.12/site-packages/cryptography/x509/general_name.py +281 -0
  214. package/python/lib/python3.12/site-packages/cryptography/x509/name.py +477 -0
  215. package/python/lib/python3.12/site-packages/cryptography/x509/ocsp.py +379 -0
  216. package/python/lib/python3.12/site-packages/cryptography/x509/oid.py +37 -0
  217. package/python/lib/python3.12/site-packages/cryptography/x509/verification.py +34 -0
  218. package/python/lib/python3.12/site-packages/cryptography-45.0.7.dist-info/INSTALLER +1 -0
  219. package/python/lib/python3.12/site-packages/cryptography-45.0.7.dist-info/METADATA +139 -0
  220. package/python/lib/python3.12/site-packages/cryptography-45.0.7.dist-info/RECORD +106 -0
  221. package/python/lib/python3.12/site-packages/cryptography-45.0.7.dist-info/REQUESTED +0 -0
  222. package/python/lib/python3.12/site-packages/cryptography-45.0.7.dist-info/WHEEL +4 -0
  223. package/python/lib/python3.12/site-packages/cryptography-45.0.7.dist-info/licenses/LICENSE +3 -0
  224. package/python/lib/python3.12/site-packages/cryptography-45.0.7.dist-info/licenses/LICENSE.APACHE +202 -0
  225. package/python/lib/python3.12/site-packages/cryptography-45.0.7.dist-info/licenses/LICENSE.BSD +27 -0
  226. package/python/lib/python3.12/site-packages/pycparser/__init__.py +99 -0
  227. package/python/lib/python3.12/site-packages/pycparser/_ast_gen.py +355 -0
  228. package/python/lib/python3.12/site-packages/pycparser/_c_ast.cfg +195 -0
  229. package/python/lib/python3.12/site-packages/pycparser/ast_transforms.py +174 -0
  230. package/python/lib/python3.12/site-packages/pycparser/c_ast.py +1341 -0
  231. package/python/lib/python3.12/site-packages/pycparser/c_generator.py +573 -0
  232. package/python/lib/python3.12/site-packages/pycparser/c_lexer.py +706 -0
  233. package/python/lib/python3.12/site-packages/pycparser/c_parser.py +2376 -0
  234. package/python/lib/python3.12/site-packages/pycparser-3.0.dist-info/INSTALLER +1 -0
  235. package/python/lib/python3.12/site-packages/pycparser-3.0.dist-info/METADATA +244 -0
  236. package/python/lib/python3.12/site-packages/pycparser-3.0.dist-info/RECORD +14 -0
  237. package/python/lib/python3.12/site-packages/pycparser-3.0.dist-info/WHEEL +5 -0
  238. package/python/lib/python3.12/site-packages/pycparser-3.0.dist-info/licenses/LICENSE +27 -0
  239. package/python/lib/python3.12/site-packages/pycparser-3.0.dist-info/top_level.txt +1 -0
  240. package/python/lib/python3.12/sqlite3/__pycache__/__init__.cpython-312.pyc +0 -0
  241. package/python/lib/python3.12/sqlite3/__pycache__/dbapi2.cpython-312.pyc +0 -0
  242. package/python/lib/python3.12/urllib/__pycache__/__init__.cpython-312.pyc +0 -0
  243. package/python/lib/python3.12/urllib/__pycache__/error.cpython-312.pyc +0 -0
  244. package/python/lib/python3.12/urllib/__pycache__/parse.cpython-312.pyc +0 -0
  245. package/python/lib/python3.12/urllib/__pycache__/request.cpython-312.pyc +0 -0
  246. package/python/lib/python3.12/urllib/__pycache__/response.cpython-312.pyc +0 -0
  247. package/python/lib/python3.12/xml/__pycache__/__init__.cpython-312.pyc +0 -0
  248. package/python/lib/python3.12/xml/parsers/__pycache__/__init__.cpython-312.pyc +0 -0
  249. package/python/lib/python3.12/xml/parsers/__pycache__/expat.cpython-312.pyc +0 -0
@@ -0,0 +1,679 @@
1
+ #
2
+ # DEPRECATED: implementation for ffi.verify()
3
+ #
4
+ import sys, os
5
+ import types
6
+
7
+ from . import model
8
+ from .error import VerificationError
9
+
10
+
11
+ class VGenericEngine(object):
12
+ _class_key = 'g'
13
+ _gen_python_module = False
14
+
15
+ def __init__(self, verifier):
16
+ self.verifier = verifier
17
+ self.ffi = verifier.ffi
18
+ self.export_symbols = []
19
+ self._struct_pending_verification = {}
20
+
21
+ def patch_extension_kwds(self, kwds):
22
+ # add 'export_symbols' to the dictionary. Note that we add the
23
+ # list before filling it. When we fill it, it will thus also show
24
+ # up in kwds['export_symbols'].
25
+ kwds.setdefault('export_symbols', self.export_symbols)
26
+
27
+ def find_module(self, module_name, path, so_suffixes):
28
+ for so_suffix in so_suffixes:
29
+ basename = module_name + so_suffix
30
+ if path is None:
31
+ path = sys.path
32
+ for dirname in path:
33
+ filename = os.path.join(dirname, basename)
34
+ if os.path.isfile(filename):
35
+ return filename
36
+
37
+ def collect_types(self):
38
+ pass # not needed in the generic engine
39
+
40
+ def _prnt(self, what=''):
41
+ self._f.write(what + '\n')
42
+
43
+ def write_source_to_f(self):
44
+ prnt = self._prnt
45
+ # first paste some standard set of lines that are mostly '#include'
46
+ prnt(cffimod_header)
47
+ # then paste the C source given by the user, verbatim.
48
+ prnt(self.verifier.preamble)
49
+ #
50
+ # call generate_gen_xxx_decl(), for every xxx found from
51
+ # ffi._parser._declarations. This generates all the functions.
52
+ self._generate('decl')
53
+ #
54
+ # on Windows, distutils insists on putting init_cffi_xyz in
55
+ # 'export_symbols', so instead of fighting it, just give up and
56
+ # give it one
57
+ if sys.platform == 'win32':
58
+ if sys.version_info >= (3,):
59
+ prefix = 'PyInit_'
60
+ else:
61
+ prefix = 'init'
62
+ modname = self.verifier.get_module_name()
63
+ prnt("void %s%s(void) { }\n" % (prefix, modname))
64
+
65
+ def load_library(self, flags=0):
66
+ # import it with the CFFI backend
67
+ backend = self.ffi._backend
68
+ # needs to make a path that contains '/', on Posix
69
+ filename = os.path.join(os.curdir, self.verifier.modulefilename)
70
+ module = backend.load_library(filename, flags)
71
+ #
72
+ # call loading_gen_struct() to get the struct layout inferred by
73
+ # the C compiler
74
+ self._load(module, 'loading')
75
+
76
+ # build the FFILibrary class and instance, this is a module subclass
77
+ # because modules are expected to have usually-constant-attributes and
78
+ # in PyPy this means the JIT is able to treat attributes as constant,
79
+ # which we want.
80
+ class FFILibrary(types.ModuleType):
81
+ _cffi_generic_module = module
82
+ _cffi_ffi = self.ffi
83
+ _cffi_dir = []
84
+ def __dir__(self):
85
+ return FFILibrary._cffi_dir
86
+ library = FFILibrary("")
87
+ #
88
+ # finally, call the loaded_gen_xxx() functions. This will set
89
+ # up the 'library' object.
90
+ self._load(module, 'loaded', library=library)
91
+ return library
92
+
93
+ def _get_declarations(self):
94
+ lst = [(key, tp) for (key, (tp, qual)) in
95
+ self.ffi._parser._declarations.items()]
96
+ lst.sort()
97
+ return lst
98
+
99
+ def _generate(self, step_name):
100
+ for name, tp in self._get_declarations():
101
+ kind, realname = name.split(' ', 1)
102
+ try:
103
+ method = getattr(self, '_generate_gen_%s_%s' % (kind,
104
+ step_name))
105
+ except AttributeError:
106
+ raise VerificationError(
107
+ "not implemented in verify(): %r" % name)
108
+ try:
109
+ method(tp, realname)
110
+ except Exception as e:
111
+ model.attach_exception_info(e, name)
112
+ raise
113
+
114
+ def _load(self, module, step_name, **kwds):
115
+ for name, tp in self._get_declarations():
116
+ kind, realname = name.split(' ', 1)
117
+ method = getattr(self, '_%s_gen_%s' % (step_name, kind))
118
+ try:
119
+ method(tp, realname, module, **kwds)
120
+ except Exception as e:
121
+ model.attach_exception_info(e, name)
122
+ raise
123
+
124
+ def _generate_nothing(self, tp, name):
125
+ pass
126
+
127
+ def _loaded_noop(self, tp, name, module, **kwds):
128
+ pass
129
+
130
+ # ----------
131
+ # typedefs: generates no code so far
132
+
133
+ _generate_gen_typedef_decl = _generate_nothing
134
+ _loading_gen_typedef = _loaded_noop
135
+ _loaded_gen_typedef = _loaded_noop
136
+
137
+ # ----------
138
+ # function declarations
139
+
140
+ def _generate_gen_function_decl(self, tp, name):
141
+ assert isinstance(tp, model.FunctionPtrType)
142
+ if tp.ellipsis:
143
+ # cannot support vararg functions better than this: check for its
144
+ # exact type (including the fixed arguments), and build it as a
145
+ # constant function pointer (no _cffi_f_%s wrapper)
146
+ self._generate_gen_const(False, name, tp)
147
+ return
148
+ prnt = self._prnt
149
+ numargs = len(tp.args)
150
+ argnames = []
151
+ for i, type in enumerate(tp.args):
152
+ indirection = ''
153
+ if isinstance(type, model.StructOrUnion):
154
+ indirection = '*'
155
+ argnames.append('%sx%d' % (indirection, i))
156
+ context = 'argument of %s' % name
157
+ arglist = [type.get_c_name(' %s' % arg, context)
158
+ for type, arg in zip(tp.args, argnames)]
159
+ tpresult = tp.result
160
+ if isinstance(tpresult, model.StructOrUnion):
161
+ arglist.insert(0, tpresult.get_c_name(' *r', context))
162
+ tpresult = model.void_type
163
+ arglist = ', '.join(arglist) or 'void'
164
+ wrappername = '_cffi_f_%s' % name
165
+ self.export_symbols.append(wrappername)
166
+ if tp.abi:
167
+ abi = tp.abi + ' '
168
+ else:
169
+ abi = ''
170
+ funcdecl = ' %s%s(%s)' % (abi, wrappername, arglist)
171
+ context = 'result of %s' % name
172
+ prnt(tpresult.get_c_name(funcdecl, context))
173
+ prnt('{')
174
+ #
175
+ if isinstance(tp.result, model.StructOrUnion):
176
+ result_code = '*r = '
177
+ elif not isinstance(tp.result, model.VoidType):
178
+ result_code = 'return '
179
+ else:
180
+ result_code = ''
181
+ prnt(' %s%s(%s);' % (result_code, name, ', '.join(argnames)))
182
+ prnt('}')
183
+ prnt()
184
+
185
+ _loading_gen_function = _loaded_noop
186
+
187
+ def _loaded_gen_function(self, tp, name, module, library):
188
+ assert isinstance(tp, model.FunctionPtrType)
189
+ if tp.ellipsis:
190
+ newfunction = self._load_constant(False, tp, name, module)
191
+ else:
192
+ indirections = []
193
+ base_tp = tp
194
+ if (any(isinstance(typ, model.StructOrUnion) for typ in tp.args)
195
+ or isinstance(tp.result, model.StructOrUnion)):
196
+ indirect_args = []
197
+ for i, typ in enumerate(tp.args):
198
+ if isinstance(typ, model.StructOrUnion):
199
+ typ = model.PointerType(typ)
200
+ indirections.append((i, typ))
201
+ indirect_args.append(typ)
202
+ indirect_result = tp.result
203
+ if isinstance(indirect_result, model.StructOrUnion):
204
+ if indirect_result.fldtypes is None:
205
+ raise TypeError("'%s' is used as result type, "
206
+ "but is opaque" % (
207
+ indirect_result._get_c_name(),))
208
+ indirect_result = model.PointerType(indirect_result)
209
+ indirect_args.insert(0, indirect_result)
210
+ indirections.insert(0, ("result", indirect_result))
211
+ indirect_result = model.void_type
212
+ tp = model.FunctionPtrType(tuple(indirect_args),
213
+ indirect_result, tp.ellipsis)
214
+ BFunc = self.ffi._get_cached_btype(tp)
215
+ wrappername = '_cffi_f_%s' % name
216
+ newfunction = module.load_function(BFunc, wrappername)
217
+ for i, typ in indirections:
218
+ newfunction = self._make_struct_wrapper(newfunction, i, typ,
219
+ base_tp)
220
+ setattr(library, name, newfunction)
221
+ type(library)._cffi_dir.append(name)
222
+
223
+ def _make_struct_wrapper(self, oldfunc, i, tp, base_tp):
224
+ backend = self.ffi._backend
225
+ BType = self.ffi._get_cached_btype(tp)
226
+ if i == "result":
227
+ ffi = self.ffi
228
+ def newfunc(*args):
229
+ res = ffi.new(BType)
230
+ oldfunc(res, *args)
231
+ return res[0]
232
+ else:
233
+ def newfunc(*args):
234
+ args = args[:i] + (backend.newp(BType, args[i]),) + args[i+1:]
235
+ return oldfunc(*args)
236
+ newfunc._cffi_base_type = base_tp
237
+ return newfunc
238
+
239
+ # ----------
240
+ # named structs
241
+
242
+ def _generate_gen_struct_decl(self, tp, name):
243
+ assert name == tp.name
244
+ self._generate_struct_or_union_decl(tp, 'struct', name)
245
+
246
+ def _loading_gen_struct(self, tp, name, module):
247
+ self._loading_struct_or_union(tp, 'struct', name, module)
248
+
249
+ def _loaded_gen_struct(self, tp, name, module, **kwds):
250
+ self._loaded_struct_or_union(tp)
251
+
252
+ def _generate_gen_union_decl(self, tp, name):
253
+ assert name == tp.name
254
+ self._generate_struct_or_union_decl(tp, 'union', name)
255
+
256
+ def _loading_gen_union(self, tp, name, module):
257
+ self._loading_struct_or_union(tp, 'union', name, module)
258
+
259
+ def _loaded_gen_union(self, tp, name, module, **kwds):
260
+ self._loaded_struct_or_union(tp)
261
+
262
+ def _generate_struct_or_union_decl(self, tp, prefix, name):
263
+ if tp.fldnames is None:
264
+ return # nothing to do with opaque structs
265
+ checkfuncname = '_cffi_check_%s_%s' % (prefix, name)
266
+ layoutfuncname = '_cffi_layout_%s_%s' % (prefix, name)
267
+ cname = ('%s %s' % (prefix, name)).strip()
268
+ #
269
+ prnt = self._prnt
270
+ prnt('static void %s(%s *p)' % (checkfuncname, cname))
271
+ prnt('{')
272
+ prnt(' /* only to generate compile-time warnings or errors */')
273
+ prnt(' (void)p;')
274
+ for fname, ftype, fbitsize, fqual in tp.enumfields():
275
+ if (isinstance(ftype, model.PrimitiveType)
276
+ and ftype.is_integer_type()) or fbitsize >= 0:
277
+ # accept all integers, but complain on float or double
278
+ prnt(' (void)((p->%s) << 1);' % fname)
279
+ else:
280
+ # only accept exactly the type declared.
281
+ try:
282
+ prnt(' { %s = &p->%s; (void)tmp; }' % (
283
+ ftype.get_c_name('*tmp', 'field %r'%fname, quals=fqual),
284
+ fname))
285
+ except VerificationError as e:
286
+ prnt(' /* %s */' % str(e)) # cannot verify it, ignore
287
+ prnt('}')
288
+ self.export_symbols.append(layoutfuncname)
289
+ prnt('intptr_t %s(intptr_t i)' % (layoutfuncname,))
290
+ prnt('{')
291
+ prnt(' struct _cffi_aligncheck { char x; %s y; };' % cname)
292
+ prnt(' static intptr_t nums[] = {')
293
+ prnt(' sizeof(%s),' % cname)
294
+ prnt(' offsetof(struct _cffi_aligncheck, y),')
295
+ for fname, ftype, fbitsize, fqual in tp.enumfields():
296
+ if fbitsize >= 0:
297
+ continue # xxx ignore fbitsize for now
298
+ prnt(' offsetof(%s, %s),' % (cname, fname))
299
+ if isinstance(ftype, model.ArrayType) and ftype.length is None:
300
+ prnt(' 0, /* %s */' % ftype._get_c_name())
301
+ else:
302
+ prnt(' sizeof(((%s *)0)->%s),' % (cname, fname))
303
+ prnt(' -1')
304
+ prnt(' };')
305
+ prnt(' return nums[i];')
306
+ prnt(' /* the next line is not executed, but compiled */')
307
+ prnt(' %s(0);' % (checkfuncname,))
308
+ prnt('}')
309
+ prnt()
310
+
311
+ def _loading_struct_or_union(self, tp, prefix, name, module):
312
+ if tp.fldnames is None:
313
+ return # nothing to do with opaque structs
314
+ layoutfuncname = '_cffi_layout_%s_%s' % (prefix, name)
315
+ #
316
+ BFunc = self.ffi._typeof_locked("intptr_t(*)(intptr_t)")[0]
317
+ function = module.load_function(BFunc, layoutfuncname)
318
+ layout = []
319
+ num = 0
320
+ while True:
321
+ x = function(num)
322
+ if x < 0: break
323
+ layout.append(x)
324
+ num += 1
325
+ if isinstance(tp, model.StructOrUnion) and tp.partial:
326
+ # use the function()'s sizes and offsets to guide the
327
+ # layout of the struct
328
+ totalsize = layout[0]
329
+ totalalignment = layout[1]
330
+ fieldofs = layout[2::2]
331
+ fieldsize = layout[3::2]
332
+ tp.force_flatten()
333
+ assert len(fieldofs) == len(fieldsize) == len(tp.fldnames)
334
+ tp.fixedlayout = fieldofs, fieldsize, totalsize, totalalignment
335
+ else:
336
+ cname = ('%s %s' % (prefix, name)).strip()
337
+ self._struct_pending_verification[tp] = layout, cname
338
+
339
+ def _loaded_struct_or_union(self, tp):
340
+ if tp.fldnames is None:
341
+ return # nothing to do with opaque structs
342
+ self.ffi._get_cached_btype(tp) # force 'fixedlayout' to be considered
343
+
344
+ if tp in self._struct_pending_verification:
345
+ # check that the layout sizes and offsets match the real ones
346
+ def check(realvalue, expectedvalue, msg):
347
+ if realvalue != expectedvalue:
348
+ raise VerificationError(
349
+ "%s (we have %d, but C compiler says %d)"
350
+ % (msg, expectedvalue, realvalue))
351
+ ffi = self.ffi
352
+ BStruct = ffi._get_cached_btype(tp)
353
+ layout, cname = self._struct_pending_verification.pop(tp)
354
+ check(layout[0], ffi.sizeof(BStruct), "wrong total size")
355
+ check(layout[1], ffi.alignof(BStruct), "wrong total alignment")
356
+ i = 2
357
+ for fname, ftype, fbitsize, fqual in tp.enumfields():
358
+ if fbitsize >= 0:
359
+ continue # xxx ignore fbitsize for now
360
+ check(layout[i], ffi.offsetof(BStruct, fname),
361
+ "wrong offset for field %r" % (fname,))
362
+ if layout[i+1] != 0:
363
+ BField = ffi._get_cached_btype(ftype)
364
+ check(layout[i+1], ffi.sizeof(BField),
365
+ "wrong size for field %r" % (fname,))
366
+ i += 2
367
+ assert i == len(layout)
368
+
369
+ # ----------
370
+ # 'anonymous' declarations. These are produced for anonymous structs
371
+ # or unions; the 'name' is obtained by a typedef.
372
+
373
+ def _generate_gen_anonymous_decl(self, tp, name):
374
+ if isinstance(tp, model.EnumType):
375
+ self._generate_gen_enum_decl(tp, name, '')
376
+ else:
377
+ self._generate_struct_or_union_decl(tp, '', name)
378
+
379
+ def _loading_gen_anonymous(self, tp, name, module):
380
+ if isinstance(tp, model.EnumType):
381
+ self._loading_gen_enum(tp, name, module, '')
382
+ else:
383
+ self._loading_struct_or_union(tp, '', name, module)
384
+
385
+ def _loaded_gen_anonymous(self, tp, name, module, **kwds):
386
+ if isinstance(tp, model.EnumType):
387
+ self._loaded_gen_enum(tp, name, module, **kwds)
388
+ else:
389
+ self._loaded_struct_or_union(tp)
390
+
391
+ # ----------
392
+ # constants, likely declared with '#define'
393
+
394
+ def _generate_gen_const(self, is_int, name, tp=None, category='const',
395
+ check_value=None):
396
+ prnt = self._prnt
397
+ funcname = '_cffi_%s_%s' % (category, name)
398
+ self.export_symbols.append(funcname)
399
+ if check_value is not None:
400
+ assert is_int
401
+ assert category == 'const'
402
+ prnt('int %s(char *out_error)' % funcname)
403
+ prnt('{')
404
+ self._check_int_constant_value(name, check_value)
405
+ prnt(' return 0;')
406
+ prnt('}')
407
+ elif is_int:
408
+ assert category == 'const'
409
+ prnt('int %s(long long *out_value)' % funcname)
410
+ prnt('{')
411
+ prnt(' *out_value = (long long)(%s);' % (name,))
412
+ prnt(' return (%s) <= 0;' % (name,))
413
+ prnt('}')
414
+ else:
415
+ assert tp is not None
416
+ assert check_value is None
417
+ if category == 'var':
418
+ ampersand = '&'
419
+ else:
420
+ ampersand = ''
421
+ extra = ''
422
+ if category == 'const' and isinstance(tp, model.StructOrUnion):
423
+ extra = 'const *'
424
+ ampersand = '&'
425
+ prnt(tp.get_c_name(' %s%s(void)' % (extra, funcname), name))
426
+ prnt('{')
427
+ prnt(' return (%s%s);' % (ampersand, name))
428
+ prnt('}')
429
+ prnt()
430
+
431
+ def _generate_gen_constant_decl(self, tp, name):
432
+ is_int = isinstance(tp, model.PrimitiveType) and tp.is_integer_type()
433
+ self._generate_gen_const(is_int, name, tp)
434
+
435
+ _loading_gen_constant = _loaded_noop
436
+
437
+ def _load_constant(self, is_int, tp, name, module, check_value=None):
438
+ funcname = '_cffi_const_%s' % name
439
+ if check_value is not None:
440
+ assert is_int
441
+ self._load_known_int_constant(module, funcname)
442
+ value = check_value
443
+ elif is_int:
444
+ BType = self.ffi._typeof_locked("long long*")[0]
445
+ BFunc = self.ffi._typeof_locked("int(*)(long long*)")[0]
446
+ function = module.load_function(BFunc, funcname)
447
+ p = self.ffi.new(BType)
448
+ negative = function(p)
449
+ value = int(p[0])
450
+ if value < 0 and not negative:
451
+ BLongLong = self.ffi._typeof_locked("long long")[0]
452
+ value += (1 << (8*self.ffi.sizeof(BLongLong)))
453
+ else:
454
+ assert check_value is None
455
+ fntypeextra = '(*)(void)'
456
+ if isinstance(tp, model.StructOrUnion):
457
+ fntypeextra = '*' + fntypeextra
458
+ BFunc = self.ffi._typeof_locked(tp.get_c_name(fntypeextra, name))[0]
459
+ function = module.load_function(BFunc, funcname)
460
+ value = function()
461
+ if isinstance(tp, model.StructOrUnion):
462
+ value = value[0]
463
+ return value
464
+
465
+ def _loaded_gen_constant(self, tp, name, module, library):
466
+ is_int = isinstance(tp, model.PrimitiveType) and tp.is_integer_type()
467
+ value = self._load_constant(is_int, tp, name, module)
468
+ setattr(library, name, value)
469
+ type(library)._cffi_dir.append(name)
470
+
471
+ # ----------
472
+ # enums
473
+
474
+ def _check_int_constant_value(self, name, value):
475
+ prnt = self._prnt
476
+ if value <= 0:
477
+ prnt(' if ((%s) > 0 || (long)(%s) != %dL) {' % (
478
+ name, name, value))
479
+ else:
480
+ prnt(' if ((%s) <= 0 || (unsigned long)(%s) != %dUL) {' % (
481
+ name, name, value))
482
+ prnt(' char buf[64];')
483
+ prnt(' if ((%s) <= 0)' % name)
484
+ prnt(' sprintf(buf, "%%ld", (long)(%s));' % name)
485
+ prnt(' else')
486
+ prnt(' sprintf(buf, "%%lu", (unsigned long)(%s));' %
487
+ name)
488
+ prnt(' sprintf(out_error, "%s has the real value %s, not %s",')
489
+ prnt(' "%s", buf, "%d");' % (name[:100], value))
490
+ prnt(' return -1;')
491
+ prnt(' }')
492
+
493
+ def _load_known_int_constant(self, module, funcname):
494
+ BType = self.ffi._typeof_locked("char[]")[0]
495
+ BFunc = self.ffi._typeof_locked("int(*)(char*)")[0]
496
+ function = module.load_function(BFunc, funcname)
497
+ p = self.ffi.new(BType, 256)
498
+ if function(p) < 0:
499
+ error = self.ffi.string(p)
500
+ if sys.version_info >= (3,):
501
+ error = str(error, 'utf-8')
502
+ raise VerificationError(error)
503
+
504
+ def _enum_funcname(self, prefix, name):
505
+ # "$enum_$1" => "___D_enum____D_1"
506
+ name = name.replace('$', '___D_')
507
+ return '_cffi_e_%s_%s' % (prefix, name)
508
+
509
+ def _generate_gen_enum_decl(self, tp, name, prefix='enum'):
510
+ if tp.partial:
511
+ for enumerator in tp.enumerators:
512
+ self._generate_gen_const(True, enumerator)
513
+ return
514
+ #
515
+ funcname = self._enum_funcname(prefix, name)
516
+ self.export_symbols.append(funcname)
517
+ prnt = self._prnt
518
+ prnt('int %s(char *out_error)' % funcname)
519
+ prnt('{')
520
+ for enumerator, enumvalue in zip(tp.enumerators, tp.enumvalues):
521
+ self._check_int_constant_value(enumerator, enumvalue)
522
+ prnt(' return 0;')
523
+ prnt('}')
524
+ prnt()
525
+
526
+ def _loading_gen_enum(self, tp, name, module, prefix='enum'):
527
+ if tp.partial:
528
+ enumvalues = [self._load_constant(True, tp, enumerator, module)
529
+ for enumerator in tp.enumerators]
530
+ tp.enumvalues = tuple(enumvalues)
531
+ tp.partial_resolved = True
532
+ else:
533
+ funcname = self._enum_funcname(prefix, name)
534
+ self._load_known_int_constant(module, funcname)
535
+
536
+ def _loaded_gen_enum(self, tp, name, module, library):
537
+ for enumerator, enumvalue in zip(tp.enumerators, tp.enumvalues):
538
+ setattr(library, enumerator, enumvalue)
539
+ type(library)._cffi_dir.append(enumerator)
540
+
541
+ # ----------
542
+ # macros: for now only for integers
543
+
544
+ def _generate_gen_macro_decl(self, tp, name):
545
+ if tp == '...':
546
+ check_value = None
547
+ else:
548
+ check_value = tp # an integer
549
+ self._generate_gen_const(True, name, check_value=check_value)
550
+
551
+ _loading_gen_macro = _loaded_noop
552
+
553
+ def _loaded_gen_macro(self, tp, name, module, library):
554
+ if tp == '...':
555
+ check_value = None
556
+ else:
557
+ check_value = tp # an integer
558
+ value = self._load_constant(True, tp, name, module,
559
+ check_value=check_value)
560
+ setattr(library, name, value)
561
+ type(library)._cffi_dir.append(name)
562
+
563
+ # ----------
564
+ # global variables
565
+
566
+ def _generate_gen_variable_decl(self, tp, name):
567
+ if isinstance(tp, model.ArrayType):
568
+ if tp.length_is_unknown():
569
+ prnt = self._prnt
570
+ funcname = '_cffi_sizeof_%s' % (name,)
571
+ self.export_symbols.append(funcname)
572
+ prnt("size_t %s(void)" % funcname)
573
+ prnt("{")
574
+ prnt(" return sizeof(%s);" % (name,))
575
+ prnt("}")
576
+ tp_ptr = model.PointerType(tp.item)
577
+ self._generate_gen_const(False, name, tp_ptr)
578
+ else:
579
+ tp_ptr = model.PointerType(tp)
580
+ self._generate_gen_const(False, name, tp_ptr, category='var')
581
+
582
+ _loading_gen_variable = _loaded_noop
583
+
584
+ def _loaded_gen_variable(self, tp, name, module, library):
585
+ if isinstance(tp, model.ArrayType): # int a[5] is "constant" in the
586
+ # sense that "a=..." is forbidden
587
+ if tp.length_is_unknown():
588
+ funcname = '_cffi_sizeof_%s' % (name,)
589
+ BFunc = self.ffi._typeof_locked('size_t(*)(void)')[0]
590
+ function = module.load_function(BFunc, funcname)
591
+ size = function()
592
+ BItemType = self.ffi._get_cached_btype(tp.item)
593
+ length, rest = divmod(size, self.ffi.sizeof(BItemType))
594
+ if rest != 0:
595
+ raise VerificationError(
596
+ "bad size: %r does not seem to be an array of %s" %
597
+ (name, tp.item))
598
+ tp = tp.resolve_length(length)
599
+ tp_ptr = model.PointerType(tp.item)
600
+ value = self._load_constant(False, tp_ptr, name, module)
601
+ # 'value' is a <cdata 'type *'> which we have to replace with
602
+ # a <cdata 'type[N]'> if the N is actually known
603
+ if tp.length is not None:
604
+ BArray = self.ffi._get_cached_btype(tp)
605
+ value = self.ffi.cast(BArray, value)
606
+ setattr(library, name, value)
607
+ type(library)._cffi_dir.append(name)
608
+ return
609
+ # remove ptr=<cdata 'int *'> from the library instance, and replace
610
+ # it by a property on the class, which reads/writes into ptr[0].
611
+ funcname = '_cffi_var_%s' % name
612
+ BFunc = self.ffi._typeof_locked(tp.get_c_name('*(*)(void)', name))[0]
613
+ function = module.load_function(BFunc, funcname)
614
+ ptr = function()
615
+ def getter(library):
616
+ return ptr[0]
617
+ def setter(library, value):
618
+ ptr[0] = value
619
+ setattr(type(library), name, property(getter, setter))
620
+ type(library)._cffi_dir.append(name)
621
+
622
+ cffimod_header = r'''
623
+ #include <stdio.h>
624
+ #include <stddef.h>
625
+ #include <stdarg.h>
626
+ #include <errno.h>
627
+ #include <sys/types.h> /* XXX for ssize_t on some platforms */
628
+
629
+ /* this block of #ifs should be kept exactly identical between
630
+ c/_cffi_backend.c, cffi/vengine_cpy.py, cffi/vengine_gen.py
631
+ and cffi/_cffi_include.h */
632
+ #if defined(_MSC_VER)
633
+ # include <malloc.h> /* for alloca() */
634
+ # if _MSC_VER < 1600 /* MSVC < 2010 */
635
+ typedef __int8 int8_t;
636
+ typedef __int16 int16_t;
637
+ typedef __int32 int32_t;
638
+ typedef __int64 int64_t;
639
+ typedef unsigned __int8 uint8_t;
640
+ typedef unsigned __int16 uint16_t;
641
+ typedef unsigned __int32 uint32_t;
642
+ typedef unsigned __int64 uint64_t;
643
+ typedef __int8 int_least8_t;
644
+ typedef __int16 int_least16_t;
645
+ typedef __int32 int_least32_t;
646
+ typedef __int64 int_least64_t;
647
+ typedef unsigned __int8 uint_least8_t;
648
+ typedef unsigned __int16 uint_least16_t;
649
+ typedef unsigned __int32 uint_least32_t;
650
+ typedef unsigned __int64 uint_least64_t;
651
+ typedef __int8 int_fast8_t;
652
+ typedef __int16 int_fast16_t;
653
+ typedef __int32 int_fast32_t;
654
+ typedef __int64 int_fast64_t;
655
+ typedef unsigned __int8 uint_fast8_t;
656
+ typedef unsigned __int16 uint_fast16_t;
657
+ typedef unsigned __int32 uint_fast32_t;
658
+ typedef unsigned __int64 uint_fast64_t;
659
+ typedef __int64 intmax_t;
660
+ typedef unsigned __int64 uintmax_t;
661
+ # else
662
+ # include <stdint.h>
663
+ # endif
664
+ # if _MSC_VER < 1800 /* MSVC < 2013 */
665
+ # ifndef __cplusplus
666
+ typedef unsigned char _Bool;
667
+ # endif
668
+ # endif
669
+ # define _cffi_float_complex_t _Fcomplex /* include <complex.h> for it */
670
+ # define _cffi_double_complex_t _Dcomplex /* include <complex.h> for it */
671
+ #else
672
+ # include <stdint.h>
673
+ # if (defined (__SVR4) && defined (__sun)) || defined(_AIX) || defined(__hpux)
674
+ # include <alloca.h>
675
+ # endif
676
+ # define _cffi_float_complex_t float _Complex
677
+ # define _cffi_double_complex_t double _Complex
678
+ #endif
679
+ '''