libv8 6.7.288.46.1 → 7.3.492.27.0beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (408) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +3 -0
  3. data/CHANGELOG.md +4 -0
  4. data/README.md +2 -0
  5. data/ext/libv8/builder.rb +6 -2
  6. data/lib/libv8/version.rb +1 -1
  7. data/vendor/depot_tools/.gitattributes +1 -0
  8. data/vendor/depot_tools/.gitignore +7 -0
  9. data/vendor/depot_tools/CROS_OWNERS +5 -0
  10. data/vendor/depot_tools/OWNERS +12 -1
  11. data/vendor/depot_tools/PRESUBMIT.py +16 -9
  12. data/vendor/depot_tools/README.md +9 -2
  13. data/vendor/depot_tools/autoninja +14 -6
  14. data/vendor/depot_tools/autoninja.bat +11 -1
  15. data/vendor/depot_tools/autoninja.py +40 -18
  16. data/vendor/depot_tools/bb +12 -0
  17. data/vendor/depot_tools/bb.bat +7 -0
  18. data/vendor/depot_tools/bootstrap/win/manifest.txt +1 -1
  19. data/vendor/depot_tools/bootstrap/win/manifest_bleeding_edge.txt +1 -1
  20. data/vendor/depot_tools/bootstrap/win/win_tools.py +2 -1
  21. data/vendor/depot_tools/buildbucket.py +57 -4
  22. data/vendor/depot_tools/cipd +157 -44
  23. data/vendor/depot_tools/cipd.bat +51 -14
  24. data/vendor/depot_tools/cipd.ps1 +104 -42
  25. data/vendor/depot_tools/cipd_client_version +1 -1
  26. data/vendor/depot_tools/cipd_client_version.digests +21 -0
  27. data/vendor/depot_tools/cipd_manifest.txt +19 -6
  28. data/vendor/depot_tools/cipd_manifest.versions +318 -0
  29. data/vendor/depot_tools/clang_format.py +4 -4
  30. data/vendor/depot_tools/cpplint.py +44 -199
  31. data/vendor/depot_tools/dart_format.py +2 -2
  32. data/vendor/depot_tools/detect_host_arch.py +8 -3
  33. data/vendor/depot_tools/download_from_google_storage.py +47 -39
  34. data/vendor/depot_tools/fetch.py +30 -18
  35. data/vendor/depot_tools/fetch_configs/android_internal.py +34 -0
  36. data/vendor/depot_tools/fetch_configs/chromium.py +18 -1
  37. data/vendor/depot_tools/fetch_configs/config_util.py +4 -2
  38. data/vendor/depot_tools/fetch_configs/inspector_protocol.py +40 -0
  39. data/vendor/depot_tools/fetch_configs/node-ci.py +41 -0
  40. data/vendor/depot_tools/fix_encoding.py +3 -3
  41. data/vendor/depot_tools/gclient +1 -1
  42. data/vendor/depot_tools/gclient.py +415 -198
  43. data/vendor/depot_tools/gclient_eval.py +220 -171
  44. data/vendor/depot_tools/gclient_paths.py +142 -0
  45. data/vendor/depot_tools/gclient_scm.py +200 -51
  46. data/vendor/depot_tools/gclient_utils.py +88 -191
  47. data/vendor/depot_tools/gerrit_client.py +13 -0
  48. data/vendor/depot_tools/gerrit_util.py +158 -23
  49. data/vendor/depot_tools/git-nav-upstream +1 -1
  50. data/vendor/depot_tools/git_cache.py +77 -24
  51. data/vendor/depot_tools/git_cl.py +705 -1099
  52. data/vendor/depot_tools/git_common.py +9 -6
  53. data/vendor/depot_tools/git_map_branches.py +19 -2
  54. data/vendor/depot_tools/git_nav_downstream.py +3 -4
  55. data/vendor/depot_tools/git_rebase_update.py +14 -0
  56. data/vendor/depot_tools/git_reparent_branch.py +8 -2
  57. data/vendor/depot_tools/gn.py +38 -3
  58. data/vendor/depot_tools/gsutil.py +8 -3
  59. data/vendor/depot_tools/gsutil.py.bat +15 -0
  60. data/vendor/depot_tools/gsutil.vpython +16 -0
  61. data/vendor/depot_tools/infra/config/OWNERS +0 -1
  62. data/vendor/depot_tools/infra/config/recipes.cfg +3 -2
  63. data/vendor/depot_tools/lucicfg +12 -0
  64. data/vendor/depot_tools/lucicfg.bat +7 -0
  65. data/vendor/depot_tools/man/html/git-map-branches.html +34 -2
  66. data/vendor/depot_tools/man/html/git-new-branch.html +40 -32
  67. data/vendor/depot_tools/man/man1/git-map-branches.1 +24 -5
  68. data/vendor/depot_tools/man/man1/git-new-branch.1 +35 -27
  69. data/vendor/depot_tools/man/src/git-map-branches.demo.1.sh +1 -0
  70. data/vendor/depot_tools/man/src/git-map-branches.txt +10 -0
  71. data/vendor/depot_tools/man/src/git-new-branch.demo.1.sh +9 -4
  72. data/vendor/depot_tools/man/src/git-new-branch.txt +1 -1
  73. data/vendor/depot_tools/metrics.README.md +98 -0
  74. data/vendor/depot_tools/metrics.py +296 -0
  75. data/vendor/depot_tools/metrics_utils.py +303 -0
  76. data/vendor/depot_tools/my_activity.py +91 -29
  77. data/vendor/depot_tools/ninja +1 -1
  78. data/vendor/depot_tools/ninjalog.README.md +64 -0
  79. data/vendor/depot_tools/ninjalog_uploader.py +232 -0
  80. data/vendor/depot_tools/ninjalog_uploader_wrapper.py +116 -0
  81. data/vendor/depot_tools/owners.py +30 -13
  82. data/vendor/depot_tools/owners_finder.py +5 -2
  83. data/vendor/depot_tools/presubmit_canned_checks.py +188 -29
  84. data/vendor/depot_tools/presubmit_support.py +18 -41
  85. data/vendor/depot_tools/pylintrc +23 -19
  86. data/vendor/depot_tools/recipes/OWNERS +2 -0
  87. data/vendor/depot_tools/recipes/README.recipes.md +344 -151
  88. data/vendor/depot_tools/recipes/recipe_modules/bot_update/OWNERS +2 -0
  89. data/vendor/depot_tools/recipes/recipe_modules/bot_update/__init__.py +2 -16
  90. data/vendor/depot_tools/recipes/recipe_modules/bot_update/api.py +141 -99
  91. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic.json +5 -8
  92. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic_luci.json +5 -8
  93. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic_with_branch_heads.json +6 -98
  94. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/clobber.json +4 -9
  95. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/deprecated_got_revision_mapping.json +45 -5
  96. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/gerrit_no_rebase_patch_ref.json +4 -9
  97. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/gerrit_no_reset.json +4 -9
  98. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/{tryjob.json → input_commit_with_id_without_repo.json} +6 -11
  99. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/{tryjob_empty_revision.json → multiple_patch_refs.json} +8 -9
  100. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_apply_patch_on_gclient.json +19 -29
  101. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/{trychange.json → refs.json} +4 -9
  102. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/reset_root_solution_revision.json +4 -9
  103. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail.json +51 -6
  104. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail_patch.json +50 -6
  105. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail_patch_download.json +51 -6
  106. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_angle.json +17 -25
  107. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_branch_heads.json +17 -25
  108. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_feature_branch.json +18 -26
  109. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_v8_feature_branch.json +18 -26
  110. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_webrtc.json +26 -28
  111. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_v8.json +45 -5
  112. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_v8_head_by_default.json +17 -25
  113. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/unrecognized_commit_repo.json +13 -0
  114. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/with_manifest_name.json +13 -152
  115. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/with_tags.json +4 -9
  116. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.py +185 -202
  117. data/vendor/depot_tools/recipes/recipe_modules/bot_update/resources/bot_update.py +52 -157
  118. data/vendor/depot_tools/recipes/recipe_modules/bot_update/test_api.py +5 -14
  119. data/vendor/depot_tools/recipes/recipe_modules/bot_update/tests/ensure_checkout.py +34 -0
  120. data/vendor/depot_tools/recipes/recipe_modules/cipd/api.py +14 -2
  121. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/basic.json +4 -5
  122. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/basic_pkg.json +4 -5
  123. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/describe-failed.json +7 -5
  124. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/describe-many-instances.json +4 -5
  125. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/mac64.json +4 -5
  126. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_file.json +9 -3
  127. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_mode.json +9 -3
  128. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_verfile.json +9 -3
  129. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/win64.json +4 -5
  130. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/junk arch.json +2 -3
  131. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/junk bits.json +2 -3
  132. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_arm_32.json +2 -3
  133. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_arm_64.json +2 -3
  134. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_intel_32.json +2 -3
  135. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_intel_64.json +2 -3
  136. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_mips_64.json +2 -3
  137. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/mac_intel_64.json +2 -3
  138. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/win_intel_32.json +2 -3
  139. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/win_intel_64.json +2 -3
  140. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/api.py +13 -8
  141. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/basic.json +18 -12
  142. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/basic_luci.json +18 -12
  143. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/win.json +18 -12
  144. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.py +3 -0
  145. data/vendor/depot_tools/recipes/recipe_modules/gclient/__init__.py +1 -0
  146. data/vendor/depot_tools/recipes/recipe_modules/gclient/api.py +58 -46
  147. data/vendor/depot_tools/recipes/recipe_modules/gclient/config.py +65 -22
  148. data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/basic.json +20 -21
  149. data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/buildbot.json +20 -21
  150. data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/revision.json +20 -21
  151. data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/tryserver.json +20 -21
  152. data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.py +5 -2
  153. data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/patch_project.py +62 -14
  154. data/vendor/depot_tools/recipes/recipe_modules/gerrit/api.py +24 -38
  155. data/vendor/depot_tools/recipes/recipe_modules/gerrit/examples/full.expected/basic.json +56 -50
  156. data/vendor/depot_tools/recipes/recipe_modules/gerrit/examples/full.py +15 -9
  157. data/vendor/depot_tools/recipes/recipe_modules/git/__init__.py +4 -1
  158. data/vendor/depot_tools/recipes/recipe_modules/git/api.py +34 -22
  159. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic.json +5 -6
  160. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_branch.json +5 -6
  161. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_file_name.json +5 -6
  162. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_hash.json +5 -6
  163. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_luci.json +222 -0
  164. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_ref.json +5 -6
  165. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_submodule_update_force.json +5 -6
  166. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_tags.json +224 -0
  167. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/can_fail_build.json +10 -6
  168. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/cannot_fail_build.json +5 -7
  169. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/cat-file_test.json +5 -6
  170. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_delta.json +5 -6
  171. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_failed.json +5 -7
  172. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_with_bad_output.json +5 -6
  173. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_with_bad_output_fails_build.json +10 -5
  174. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/curl_trace_file.json +5 -6
  175. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/git-cache-checkout.json +8 -9
  176. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/platform_win.json +5 -6
  177. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/rebase_failed.json +12 -8
  178. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/remote_not_origin.json +5 -6
  179. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/set_got_revision.json +5 -6
  180. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.py +27 -11
  181. data/vendor/depot_tools/recipes/recipe_modules/git_cl/api.py +1 -1
  182. data/vendor/depot_tools/recipes/recipe_modules/git_cl/examples/full.expected/basic.json +12 -13
  183. data/vendor/depot_tools/recipes/recipe_modules/gitiles/__init__.py +5 -0
  184. data/vendor/depot_tools/recipes/recipe_modules/gitiles/api.py +120 -5
  185. data/vendor/depot_tools/recipes/recipe_modules/gitiles/examples/full.expected/basic.json +45 -3
  186. data/vendor/depot_tools/recipes/recipe_modules/gitiles/examples/full.py +25 -0
  187. data/vendor/depot_tools/recipes/recipe_modules/gitiles/resources/gerrit_client.py +56 -4
  188. data/vendor/depot_tools/recipes/recipe_modules/gitiles/tests/parse_repo_url.expected/basic.json +6 -0
  189. data/vendor/depot_tools/recipes/recipe_modules/gitiles/tests/parse_repo_url.py +49 -0
  190. data/vendor/depot_tools/recipes/recipe_modules/gsutil/api.py +24 -13
  191. data/vendor/depot_tools/recipes/recipe_modules/gsutil/examples/full.expected/basic.json +13 -14
  192. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/basic.json +2 -3
  193. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_buildbot_linux.json +2 -3
  194. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_buildbot_mac.json +2 -3
  195. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_buildbot_win.json +2 -3
  196. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_generic_linux.json +2 -3
  197. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_generic_mac.json +2 -3
  198. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_generic_win.json +2 -3
  199. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_kitchen_linux.json +2 -3
  200. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_kitchen_mac.json +2 -3
  201. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_kitchen_win.json +2 -3
  202. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/path_config.py +1 -2
  203. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/__init__.py +35 -0
  204. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/api.py +116 -0
  205. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/linux.json +22 -0
  206. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/mac.json +82 -0
  207. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/win.json +22 -0
  208. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.py +23 -0
  209. data/vendor/depot_tools/recipes/recipe_modules/presubmit/__init__.py +1 -0
  210. data/vendor/depot_tools/recipes/recipe_modules/presubmit/api.py +2 -7
  211. data/vendor/depot_tools/recipes/recipe_modules/presubmit/examples/full.expected/basic.json +7 -6
  212. data/vendor/depot_tools/recipes/recipe_modules/tryserver/__init__.py +1 -0
  213. data/vendor/depot_tools/recipes/recipe_modules/tryserver/api.py +117 -8
  214. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/basic_tags.json +4 -5
  215. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/set_failure_hash_with_no_steps.json +7 -4
  216. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_gerrit_patch.json +98 -7
  217. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_gerrit_patch_and_target_ref.json +147 -0
  218. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_git_patch.json +8 -5
  219. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_git_patch_luci.json +8 -5
  220. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_wrong_patch.json +9 -6
  221. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_wrong_patch_new.json +9 -6
  222. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.py +27 -2
  223. data/vendor/depot_tools/recipes/recipe_modules/tryserver/test_api.py +14 -0
  224. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/__init__.py +25 -0
  225. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/api.py +137 -0
  226. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/linux.json +22 -0
  227. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/mac.json +22 -0
  228. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/win.json +107 -0
  229. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.py +26 -0
  230. data/vendor/depot_tools/recipes/recipes.py +37 -27
  231. data/vendor/depot_tools/recipes/recipes/fetch_end_to_end_test.expected/basic.json +7 -10
  232. data/vendor/depot_tools/repo +34 -8
  233. data/vendor/depot_tools/roll_dep.py +52 -49
  234. data/vendor/depot_tools/scm.py +38 -23
  235. data/vendor/depot_tools/setup_color.py +4 -2
  236. data/vendor/depot_tools/split_cl.py +32 -4
  237. data/vendor/depot_tools/subprocess2.py +22 -4
  238. data/vendor/depot_tools/third_party/httplib2/README.chromium +2 -2
  239. data/vendor/depot_tools/third_party/httplib2/__init__.py +242 -158
  240. data/vendor/depot_tools/third_party/httplib2/cacerts.txt +57 -44
  241. data/vendor/depot_tools/third_party/httplib2/socks.py +15 -5
  242. data/vendor/depot_tools/third_party/logilab/README.chromium +2 -4
  243. data/vendor/depot_tools/third_party/logilab/astroid/README.chromium +2 -1
  244. data/vendor/depot_tools/third_party/logilab/astroid/__init__.py +10 -5
  245. data/vendor/depot_tools/third_party/logilab/astroid/__pkginfo__.py +5 -5
  246. data/vendor/depot_tools/third_party/logilab/astroid/arguments.py +233 -0
  247. data/vendor/depot_tools/third_party/logilab/astroid/as_string.py +82 -33
  248. data/vendor/depot_tools/third_party/logilab/astroid/bases.py +137 -153
  249. data/vendor/depot_tools/third_party/logilab/astroid/brain/{builtin_inference.py → brain_builtin_inference.py} +117 -26
  250. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_dateutil.py +15 -0
  251. data/vendor/depot_tools/third_party/logilab/astroid/brain/{py2gi.py → brain_gi.py} +48 -8
  252. data/vendor/depot_tools/third_party/logilab/astroid/brain/{py2mechanize.py → brain_mechanize.py} +0 -0
  253. data/vendor/depot_tools/third_party/logilab/astroid/brain/{pynose.py → brain_nose.py} +4 -1
  254. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_numpy.py +62 -0
  255. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_pytest.py +76 -0
  256. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_qt.py +44 -0
  257. data/vendor/depot_tools/third_party/logilab/astroid/brain/{pysix_moves.py → brain_six.py} +28 -1
  258. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_ssl.py +65 -0
  259. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_stdlib.py +473 -0
  260. data/vendor/depot_tools/third_party/logilab/astroid/builder.py +104 -81
  261. data/vendor/depot_tools/third_party/logilab/astroid/context.py +81 -0
  262. data/vendor/depot_tools/third_party/logilab/astroid/decorators.py +75 -0
  263. data/vendor/depot_tools/third_party/logilab/astroid/exceptions.py +20 -0
  264. data/vendor/depot_tools/third_party/logilab/astroid/inference.py +137 -183
  265. data/vendor/depot_tools/third_party/logilab/astroid/manager.py +45 -169
  266. data/vendor/depot_tools/third_party/logilab/astroid/mixins.py +37 -14
  267. data/vendor/depot_tools/third_party/logilab/astroid/modutils.py +112 -41
  268. data/vendor/depot_tools/third_party/logilab/astroid/node_classes.py +243 -156
  269. data/vendor/depot_tools/third_party/logilab/astroid/nodes.py +35 -22
  270. data/vendor/depot_tools/third_party/logilab/astroid/objects.py +186 -0
  271. data/vendor/depot_tools/third_party/logilab/astroid/protocols.py +157 -102
  272. data/vendor/depot_tools/third_party/logilab/astroid/raw_building.py +32 -8
  273. data/vendor/depot_tools/third_party/logilab/astroid/rebuilder.py +372 -309
  274. data/vendor/depot_tools/third_party/logilab/astroid/scoped_nodes.py +652 -420
  275. data/vendor/depot_tools/third_party/logilab/astroid/test_utils.py +4 -21
  276. data/vendor/depot_tools/third_party/logilab/astroid/transforms.py +96 -0
  277. data/vendor/depot_tools/third_party/logilab/astroid/util.py +89 -0
  278. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/LICENSE +19 -0
  279. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/README.chromium +11 -0
  280. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/__init__.py +20 -0
  281. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/cext.c +1421 -0
  282. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/compat.py +9 -0
  283. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/simple.py +246 -0
  284. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/slots.py +414 -0
  285. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/utils.py +13 -0
  286. data/vendor/depot_tools/third_party/logilab/wrapt/LICENSE +24 -0
  287. data/vendor/depot_tools/third_party/logilab/wrapt/README.chromium +11 -0
  288. data/vendor/depot_tools/third_party/logilab/wrapt/__init__.py +19 -0
  289. data/vendor/depot_tools/third_party/logilab/wrapt/_wrappers.c +2729 -0
  290. data/vendor/depot_tools/third_party/logilab/wrapt/arguments.py +96 -0
  291. data/vendor/depot_tools/third_party/logilab/wrapt/decorators.py +512 -0
  292. data/vendor/depot_tools/third_party/logilab/wrapt/importer.py +228 -0
  293. data/vendor/depot_tools/third_party/logilab/wrapt/wrappers.py +901 -0
  294. data/vendor/depot_tools/third_party/pylint/README.chromium +2 -25
  295. data/vendor/depot_tools/third_party/pylint/__pkginfo__.py +13 -3
  296. data/vendor/depot_tools/third_party/pylint/checkers/__init__.py +1 -2
  297. data/vendor/depot_tools/third_party/pylint/checkers/async.py +82 -0
  298. data/vendor/depot_tools/third_party/pylint/checkers/base.py +893 -119
  299. data/vendor/depot_tools/third_party/pylint/checkers/classes.py +342 -204
  300. data/vendor/depot_tools/third_party/pylint/checkers/design_analysis.py +51 -34
  301. data/vendor/depot_tools/third_party/pylint/checkers/exceptions.py +84 -47
  302. data/vendor/depot_tools/third_party/pylint/checkers/format.py +55 -30
  303. data/vendor/depot_tools/third_party/pylint/checkers/imports.py +314 -73
  304. data/vendor/depot_tools/third_party/pylint/checkers/logging.py +10 -8
  305. data/vendor/depot_tools/third_party/pylint/checkers/misc.py +2 -1
  306. data/vendor/depot_tools/third_party/pylint/checkers/newstyle.py +45 -48
  307. data/vendor/depot_tools/third_party/pylint/checkers/python3.py +31 -21
  308. data/vendor/depot_tools/third_party/pylint/checkers/raw_metrics.py +3 -3
  309. data/vendor/depot_tools/third_party/pylint/checkers/similar.py +4 -5
  310. data/vendor/depot_tools/third_party/pylint/checkers/spelling.py +24 -10
  311. data/vendor/depot_tools/third_party/pylint/checkers/stdlib.py +120 -56
  312. data/vendor/depot_tools/third_party/pylint/checkers/strings.py +38 -35
  313. data/vendor/depot_tools/third_party/pylint/checkers/typecheck.py +485 -138
  314. data/vendor/depot_tools/third_party/pylint/checkers/utils.py +319 -142
  315. data/vendor/depot_tools/third_party/pylint/checkers/variables.py +329 -207
  316. data/vendor/depot_tools/third_party/pylint/config.py +739 -76
  317. data/vendor/depot_tools/third_party/pylint/epylint.py +9 -5
  318. data/vendor/depot_tools/third_party/pylint/extensions/__init__.py +0 -0
  319. data/vendor/depot_tools/third_party/pylint/extensions/check_docs.py +311 -0
  320. data/vendor/depot_tools/third_party/pylint/extensions/check_elif.py +62 -0
  321. data/vendor/depot_tools/third_party/{logilab/common → pylint}/graph.py +30 -133
  322. data/vendor/depot_tools/third_party/pylint/gui.py +2 -2
  323. data/vendor/depot_tools/third_party/pylint/interfaces.py +21 -3
  324. data/vendor/depot_tools/third_party/pylint/lint.py +123 -140
  325. data/vendor/depot_tools/third_party/pylint/pyreverse/diadefslib.py +10 -13
  326. data/vendor/depot_tools/third_party/pylint/pyreverse/diagrams.py +15 -4
  327. data/vendor/depot_tools/third_party/pylint/pyreverse/inspector.py +372 -0
  328. data/vendor/depot_tools/third_party/pylint/pyreverse/main.py +30 -7
  329. data/vendor/depot_tools/third_party/pylint/pyreverse/utils.py +80 -2
  330. data/vendor/depot_tools/third_party/{logilab/common → pylint/pyreverse}/vcgutils.py +19 -37
  331. data/vendor/depot_tools/third_party/pylint/pyreverse/writer.py +3 -4
  332. data/vendor/depot_tools/third_party/pylint/reporters/__init__.py +34 -18
  333. data/vendor/depot_tools/third_party/pylint/reporters/guireporter.py +1 -1
  334. data/vendor/depot_tools/third_party/pylint/reporters/html.py +10 -3
  335. data/vendor/depot_tools/third_party/pylint/reporters/json.py +10 -4
  336. data/vendor/depot_tools/third_party/pylint/reporters/text.py +94 -3
  337. data/vendor/depot_tools/third_party/pylint/reporters/ureports/__init__.py +106 -0
  338. data/vendor/depot_tools/third_party/{logilab/common → pylint/reporters}/ureports/html_writer.py +17 -57
  339. data/vendor/depot_tools/third_party/{logilab/common → pylint/reporters}/ureports/nodes.py +52 -74
  340. data/vendor/depot_tools/third_party/{logilab/common → pylint/reporters}/ureports/text_writer.py +14 -60
  341. data/vendor/depot_tools/third_party/pylint/testutils.py +22 -20
  342. data/vendor/depot_tools/third_party/pylint/utils.py +268 -44
  343. data/vendor/depot_tools/third_party/repo/progress.py +42 -0
  344. data/vendor/depot_tools/update_depot_tools +1 -1
  345. data/vendor/depot_tools/upload_metrics.py +25 -0
  346. data/vendor/depot_tools/win_toolchain/get_toolchain_if_necessary.py +45 -15
  347. data/vendor/depot_tools/win_toolchain/package_from_installed.py +71 -24
  348. data/vendor/depot_tools/yapf +1 -1
  349. data/vendor/depot_tools/yapf.bat +1 -1
  350. metadata +92 -77
  351. data/vendor/depot_tools/git-crsync +0 -3
  352. data/vendor/depot_tools/infra/config/cq.cfg +0 -32
  353. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/apply_gerrit_ref.json +0 -29
  354. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/apply_gerrit_ref_custom.json +0 -29
  355. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/buildbot.json +0 -105
  356. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/shallow.json +0 -195
  357. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_angle_deprecated.json +0 -248
  358. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_v8.json +0 -248
  359. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/with_manifest_name_no_patch.json +0 -105
  360. data/vendor/depot_tools/recipes/recipe_modules/bot_update/resources/apply_gerrit.py +0 -33
  361. data/vendor/depot_tools/third_party/logilab/astroid/brain/py2pytest.py +0 -31
  362. data/vendor/depot_tools/third_party/logilab/astroid/brain/py2qt4.py +0 -22
  363. data/vendor/depot_tools/third_party/logilab/astroid/brain/py2stdlib.py +0 -334
  364. data/vendor/depot_tools/third_party/logilab/astroid/inspector.py +0 -273
  365. data/vendor/depot_tools/third_party/logilab/astroid/utils.py +0 -239
  366. data/vendor/depot_tools/third_party/logilab/common/LICENSE.txt +0 -339
  367. data/vendor/depot_tools/third_party/logilab/common/README.chromium +0 -11
  368. data/vendor/depot_tools/third_party/logilab/common/__init__.py +0 -175
  369. data/vendor/depot_tools/third_party/logilab/common/__pkginfo__.py +0 -57
  370. data/vendor/depot_tools/third_party/logilab/common/cache.py +0 -114
  371. data/vendor/depot_tools/third_party/logilab/common/changelog.py +0 -238
  372. data/vendor/depot_tools/third_party/logilab/common/clcommands.py +0 -334
  373. data/vendor/depot_tools/third_party/logilab/common/cli.py +0 -211
  374. data/vendor/depot_tools/third_party/logilab/common/compat.py +0 -78
  375. data/vendor/depot_tools/third_party/logilab/common/configuration.py +0 -1105
  376. data/vendor/depot_tools/third_party/logilab/common/contexts.py +0 -5
  377. data/vendor/depot_tools/third_party/logilab/common/corbautils.py +0 -117
  378. data/vendor/depot_tools/third_party/logilab/common/daemon.py +0 -101
  379. data/vendor/depot_tools/third_party/logilab/common/date.py +0 -335
  380. data/vendor/depot_tools/third_party/logilab/common/dbf.py +0 -231
  381. data/vendor/depot_tools/third_party/logilab/common/debugger.py +0 -214
  382. data/vendor/depot_tools/third_party/logilab/common/decorators.py +0 -281
  383. data/vendor/depot_tools/third_party/logilab/common/deprecation.py +0 -189
  384. data/vendor/depot_tools/third_party/logilab/common/fileutils.py +0 -404
  385. data/vendor/depot_tools/third_party/logilab/common/interface.py +0 -71
  386. data/vendor/depot_tools/third_party/logilab/common/logging_ext.py +0 -195
  387. data/vendor/depot_tools/third_party/logilab/common/modutils.py +0 -702
  388. data/vendor/depot_tools/third_party/logilab/common/optik_ext.py +0 -392
  389. data/vendor/depot_tools/third_party/logilab/common/optparser.py +0 -92
  390. data/vendor/depot_tools/third_party/logilab/common/proc.py +0 -277
  391. data/vendor/depot_tools/third_party/logilab/common/pyro_ext.py +0 -180
  392. data/vendor/depot_tools/third_party/logilab/common/pytest.py +0 -1199
  393. data/vendor/depot_tools/third_party/logilab/common/registry.py +0 -1119
  394. data/vendor/depot_tools/third_party/logilab/common/shellutils.py +0 -462
  395. data/vendor/depot_tools/third_party/logilab/common/sphinx_ext.py +0 -87
  396. data/vendor/depot_tools/third_party/logilab/common/sphinxutils.py +0 -122
  397. data/vendor/depot_tools/third_party/logilab/common/table.py +0 -929
  398. data/vendor/depot_tools/third_party/logilab/common/tasksqueue.py +0 -101
  399. data/vendor/depot_tools/third_party/logilab/common/testlib.py +0 -1392
  400. data/vendor/depot_tools/third_party/logilab/common/textutils.py +0 -537
  401. data/vendor/depot_tools/third_party/logilab/common/tree.py +0 -369
  402. data/vendor/depot_tools/third_party/logilab/common/umessage.py +0 -194
  403. data/vendor/depot_tools/third_party/logilab/common/ureports/__init__.py +0 -172
  404. data/vendor/depot_tools/third_party/logilab/common/ureports/docbook_writer.py +0 -140
  405. data/vendor/depot_tools/third_party/logilab/common/urllib2ext.py +0 -89
  406. data/vendor/depot_tools/third_party/logilab/common/visitor.py +0 -109
  407. data/vendor/depot_tools/third_party/logilab/common/xmlrpcutils.py +0 -131
  408. data/vendor/depot_tools/third_party/logilab/common/xmlutils.py +0 -61
@@ -1,7 +1,6 @@
1
1
  """Utility functions for test code that uses astroid ASTs as input."""
2
2
  import functools
3
3
  import sys
4
- import textwrap
5
4
 
6
5
  from astroid import nodes
7
6
  from astroid import builder
@@ -14,7 +13,6 @@ _TRANSIENT_FUNCTION = '__'
14
13
  # when calling extract_node.
15
14
  _STATEMENT_SELECTOR = '#@'
16
15
 
17
-
18
16
  def _extract_expressions(node):
19
17
  """Find expressions in a call to _TRANSIENT_FUNCTION and extract them.
20
18
 
@@ -28,7 +26,7 @@ def _extract_expressions(node):
28
26
  :yields: The sequence of wrapped expressions on the modified tree
29
27
  expression can be found.
30
28
  """
31
- if (isinstance(node, nodes.CallFunc)
29
+ if (isinstance(node, nodes.Call)
32
30
  and isinstance(node.func, nodes.Name)
33
31
  and node.func.name == _TRANSIENT_FUNCTION):
34
32
  real_expr = node.args[0]
@@ -68,7 +66,7 @@ def _find_statement_by_line(node, line):
68
66
  can be found.
69
67
  :rtype: astroid.bases.NodeNG or None
70
68
  """
71
- if isinstance(node, (nodes.Class, nodes.Function)):
69
+ if isinstance(node, (nodes.ClassDef, nodes.FunctionDef)):
72
70
  # This is an inaccuracy in the AST: the nodes that can be
73
71
  # decorated do not carry explicit information on which line
74
72
  # the actual definition (class/def), but .fromline seems to
@@ -142,7 +140,7 @@ def extract_node(code, module_name=''):
142
140
  :rtype: astroid.bases.NodeNG, or a list of nodes.
143
141
  """
144
142
  def _extract(node):
145
- if isinstance(node, nodes.Discard):
143
+ if isinstance(node, nodes.Expr):
146
144
  return node.value
147
145
  else:
148
146
  return node
@@ -152,7 +150,7 @@ def extract_node(code, module_name=''):
152
150
  if line.strip().endswith(_STATEMENT_SELECTOR):
153
151
  requested_lines.append(idx + 1)
154
152
 
155
- tree = build_module(code, module_name=module_name)
153
+ tree = builder.parse(code, module_name=module_name)
156
154
  extracted = []
157
155
  if requested_lines:
158
156
  for line in requested_lines:
@@ -171,21 +169,6 @@ def extract_node(code, module_name=''):
171
169
  return extracted
172
170
 
173
171
 
174
- def build_module(code, module_name='', path=None):
175
- """Parses a string module with a builder.
176
- :param code: The code for the module.
177
- :type code: str
178
- :param module_name: The name for the module
179
- :type module_name: str
180
- :param path: The path for the module
181
- :type module_name: str
182
- :returns: The module AST.
183
- :rtype: astroid.bases.NodeNG
184
- """
185
- code = textwrap.dedent(code)
186
- return builder.AstroidBuilder(None).string_build(code, modname=module_name, path=path)
187
-
188
-
189
172
  def require_version(minver=None, maxver=None):
190
173
  """ Compare version of python interpreter to the given one. Skip the test
191
174
  if older.
@@ -0,0 +1,96 @@
1
+ # copyright 2003-2015 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
2
+ # contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
3
+ #
4
+ # This file is part of astroid.
5
+ #
6
+ # astroid is free software: you can redistribute it and/or modify it
7
+ # under the terms of the GNU Lesser General Public License as published by the
8
+ # Free Software Foundation, either version 2.1 of the License, or (at your
9
+ # option) any later version.
10
+ #
11
+ # astroid is distributed in the hope that it will be useful, but
12
+ # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13
+ # FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
14
+ # for more details.
15
+ #
16
+ # You should have received a copy of the GNU Lesser General Public License along
17
+ # with astroid. If not, see <http://www.gnu.org/licenses/>.
18
+
19
+ import collections
20
+ import warnings
21
+
22
+
23
+ class TransformVisitor(object):
24
+ """A visitor for handling transforms.
25
+
26
+ The standard approach of using it is to call
27
+ :meth:`~visit` with an *astroid* module and the class
28
+ will take care of the rest, walking the tree and running the
29
+ transforms for each encountered node.
30
+ """
31
+
32
+ def __init__(self):
33
+ self.transforms = collections.defaultdict(list)
34
+
35
+ def _transform(self, node):
36
+ """Call matching transforms for the given node if any and return the
37
+ transformed node.
38
+ """
39
+ cls = node.__class__
40
+ if cls not in self.transforms:
41
+ # no transform registered for this class of node
42
+ return node
43
+
44
+ transforms = self.transforms[cls]
45
+ orig_node = node # copy the reference
46
+ for transform_func, predicate in transforms:
47
+ if predicate is None or predicate(node):
48
+ ret = transform_func(node)
49
+ # if the transformation function returns something, it's
50
+ # expected to be a replacement for the node
51
+ if ret is not None:
52
+ if node is not orig_node:
53
+ # node has already be modified by some previous
54
+ # transformation, warn about it
55
+ warnings.warn('node %s substituted multiple times' % node)
56
+ node = ret
57
+ return node
58
+
59
+ def _visit(self, node):
60
+ if hasattr(node, '_astroid_fields'):
61
+ for field in node._astroid_fields:
62
+ value = getattr(node, field)
63
+ visited = self._visit_generic(value)
64
+ setattr(node, field, visited)
65
+ return self._transform(node)
66
+
67
+ def _visit_generic(self, node):
68
+ if isinstance(node, list):
69
+ return [self._visit_generic(child) for child in node]
70
+ elif isinstance(node, tuple):
71
+ return tuple(self._visit_generic(child) for child in node)
72
+ else:
73
+ return self._visit(node)
74
+
75
+ def register_transform(self, node_class, transform, predicate=None):
76
+ """Register `transform(node)` function to be applied on the given
77
+ astroid's `node_class` if `predicate` is None or returns true
78
+ when called with the node as argument.
79
+
80
+ The transform function may return a value which is then used to
81
+ substitute the original node in the tree.
82
+ """
83
+ self.transforms[node_class].append((transform, predicate))
84
+
85
+ def unregister_transform(self, node_class, transform, predicate=None):
86
+ """Unregister the given transform."""
87
+ self.transforms[node_class].remove((transform, predicate))
88
+
89
+ def visit(self, module):
90
+ """Walk the given astroid *tree* and transform each encountered node
91
+
92
+ Only the nodes which have transforms registered will actually
93
+ be replaced or changed.
94
+ """
95
+ module.body = [self._visit(child) for child in module.body]
96
+ return self._transform(module)
@@ -0,0 +1,89 @@
1
+ # copyright 2003-2015 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
2
+ # contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
3
+ #
4
+ # This file is part of astroid.
5
+ #
6
+ # astroid is free software: you can redistribute it and/or modify it
7
+ # under the terms of the GNU Lesser General Public License as published by the
8
+ # Free Software Foundation, either version 2.1 of the License, or (at your
9
+ # option) any later version.
10
+ #
11
+ # astroid is distributed in the hope that it will be useful, but
12
+ # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13
+ # FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
14
+ # for more details.
15
+ #
16
+ # You should have received a copy of the GNU Lesser General Public License along
17
+ # with astroid. If not, see <http://www.gnu.org/licenses/>.
18
+ #
19
+ # The code in this file was originally part of logilab-common, licensed under
20
+ # the same license.
21
+ import warnings
22
+
23
+ from astroid import exceptions
24
+
25
+
26
+ def generate_warning(message, warning):
27
+ return lambda *args: warnings.warn(message % args, warning, stacklevel=3)
28
+
29
+ rename_warning = generate_warning(
30
+ "%r is deprecated and will be removed in astroid %.1f, use %r instead",
31
+ PendingDeprecationWarning)
32
+
33
+ attribute_to_method_warning = generate_warning(
34
+ "%s is deprecated and will be removed in astroid %.1f, use the "
35
+ "method '%s()' instead.", PendingDeprecationWarning)
36
+
37
+ attribute_to_function_warning = generate_warning(
38
+ "%s is deprecated and will be removed in astroid %.1f, use the "
39
+ "function '%s()' instead.", PendingDeprecationWarning)
40
+
41
+ method_to_function_warning = generate_warning(
42
+ "%s() is deprecated and will be removed in astroid %.1f, use the "
43
+ "function '%s()' instead.", PendingDeprecationWarning)
44
+
45
+
46
+ class _Yes(object):
47
+ """Special inference object, which is returned when inference fails."""
48
+ def __repr__(self):
49
+ return 'YES'
50
+
51
+ __str__ = __repr__
52
+
53
+ def __getattribute__(self, name):
54
+ if name == 'next':
55
+ raise AttributeError('next method should not be called')
56
+ if name.startswith('__') and name.endswith('__'):
57
+ return super(_Yes, self).__getattribute__(name)
58
+ if name == 'accept':
59
+ return super(_Yes, self).__getattribute__(name)
60
+ return self
61
+
62
+ def __call__(self, *args, **kwargs):
63
+ return self
64
+
65
+ def accept(self, visitor):
66
+ func = getattr(visitor, "visit_yes")
67
+ return func(self)
68
+
69
+
70
+ YES = _Yes()
71
+
72
+ def safe_infer(node, context=None):
73
+ """Return the inferred value for the given node.
74
+
75
+ Return None if inference failed or if there is some ambiguity (more than
76
+ one node has been inferred).
77
+ """
78
+ try:
79
+ inferit = node.infer(context=context)
80
+ value = next(inferit)
81
+ except exceptions.InferenceError:
82
+ return
83
+ try:
84
+ next(inferit)
85
+ return # None if there is ambiguity on the inferred node
86
+ except exceptions.InferenceError:
87
+ return # there is some kind of ambiguity
88
+ except StopIteration:
89
+ return value
@@ -0,0 +1,19 @@
1
+ Copyright (c) 2014-2017, Ionel Cristian Mărieș
2
+ All rights reserved.
3
+
4
+ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
5
+ following conditions are met:
6
+
7
+ 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following
8
+ disclaimer.
9
+
10
+ 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
11
+ disclaimer in the documentation and/or other materials provided with the distribution.
12
+
13
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
14
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
15
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
16
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
17
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
18
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
19
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -0,0 +1,11 @@
1
+ URL: https://github.com/ionelmc/python-lazy-object-proxy
2
+ URL: https://pypi.org/project/lazy-object-proxy/#files
3
+ Version: 1.3.1
4
+ License: BSD-2
5
+ License File: LICENSE
6
+
7
+ Description:
8
+ This directory contains the lazy-object-proxy module, required for pylint.
9
+
10
+ Local Modifications:
11
+ None
@@ -0,0 +1,20 @@
1
+ try:
2
+ import copy_reg as copyreg
3
+ except ImportError:
4
+ import copyreg
5
+
6
+ from .utils import identity
7
+
8
+ copyreg.constructor(identity)
9
+
10
+ try:
11
+ from .cext import Proxy
12
+ from .cext import identity
13
+ except ImportError:
14
+ from .slots import Proxy
15
+ else:
16
+ copyreg.constructor(identity)
17
+
18
+ __version__ = "1.3.1"
19
+
20
+ __all__ = "Proxy",
@@ -0,0 +1,1421 @@
1
+ /* ------------------------------------------------------------------------- */
2
+
3
+ #include "Python.h"
4
+
5
+ #include "structmember.h"
6
+
7
+ #ifndef PyVarObject_HEAD_INIT
8
+ #define PyVarObject_HEAD_INIT(type, size) PyObject_HEAD_INIT(type) size,
9
+ #endif
10
+
11
+ #define Proxy__WRAPPED_REPLACE_OR_RETURN_NULL(object) \
12
+ if (PyObject_TypeCheck(object, &Proxy_Type)) { \
13
+ object = Proxy__ensure_wrapped((ProxyObject *)object); \
14
+ if (!object) return NULL; \
15
+ }
16
+
17
+ #define Proxy__ENSURE_WRAPPED_OR_RETURN_NULL(self) if (!Proxy__ensure_wrapped(self)) return NULL;
18
+ #define Proxy__ENSURE_WRAPPED_OR_RETURN_MINUS1(self) if (!Proxy__ensure_wrapped(self)) return -1;
19
+
20
+ #if PY_MAJOR_VERSION < 3
21
+ #define Py_hash_t long
22
+ #endif
23
+
24
+ /* ------------------------------------------------------------------------- */
25
+
26
+ typedef struct {
27
+ PyObject_HEAD
28
+
29
+ PyObject *dict;
30
+ PyObject *wrapped;
31
+ PyObject *factory;
32
+ } ProxyObject;
33
+
34
+ PyTypeObject Proxy_Type;
35
+
36
+
37
+ /* ------------------------------------------------------------------------- */
38
+
39
+ static PyObject *identity_ref = NULL;
40
+ static PyObject *
41
+ identity(PyObject *self, PyObject *value)
42
+ {
43
+ Py_INCREF(value);
44
+ return value;
45
+ }
46
+
47
+ /* ------------------------------------------------------------------------- */
48
+
49
+ PyDoc_STRVAR(identity_doc, "Indentity function: returns the single argument.");
50
+
51
+ static struct PyMethodDef module_functions[] = {
52
+ {"identity", identity, METH_O, identity_doc},
53
+ {NULL, NULL}
54
+ };
55
+
56
+ /* ------------------------------------------------------------------------- */
57
+
58
+ static PyObject *Proxy__ensure_wrapped(ProxyObject *self)
59
+ {
60
+ PyObject *wrapped;
61
+
62
+ if (self->wrapped) {
63
+ return self->wrapped;
64
+ } else {
65
+ if (self->factory) {
66
+ wrapped = PyObject_CallFunctionObjArgs(self->factory, NULL);
67
+ if (wrapped) {
68
+ self->wrapped = wrapped;
69
+ return wrapped;
70
+ } else {
71
+ return NULL;
72
+ }
73
+ } else {
74
+ PyErr_SetString(PyExc_ValueError, "Proxy hasn't been initiated: __factory__ is missing.");
75
+ return NULL;
76
+ }
77
+ }
78
+ }
79
+
80
+ /* ------------------------------------------------------------------------- */
81
+
82
+ static PyObject *Proxy_new(PyTypeObject *type,
83
+ PyObject *args, PyObject *kwds)
84
+ {
85
+ ProxyObject *self;
86
+
87
+ self = (ProxyObject *)type->tp_alloc(type, 0);
88
+
89
+ if (!self)
90
+ return NULL;
91
+
92
+ self->dict = PyDict_New();
93
+ self->wrapped = NULL;
94
+ self->factory = NULL;
95
+
96
+ return (PyObject *)self;
97
+ }
98
+
99
+ /* ------------------------------------------------------------------------- */
100
+
101
+ static int Proxy_raw_init(ProxyObject *self,
102
+ PyObject *factory)
103
+ {
104
+ Py_INCREF(factory);
105
+ Py_XDECREF(self->wrapped);
106
+ Py_XDECREF(self->factory);
107
+ self->factory = factory;
108
+
109
+ return 0;
110
+ }
111
+
112
+ /* ------------------------------------------------------------------------- */
113
+
114
+ static int Proxy_init(ProxyObject *self,
115
+ PyObject *args, PyObject *kwds)
116
+ {
117
+ PyObject *wrapped = NULL;
118
+
119
+ static char *kwlist[] = { "wrapped", NULL };
120
+
121
+ if (!PyArg_ParseTupleAndKeywords(args, kwds, "O:ObjectProxy",
122
+ kwlist, &wrapped)) {
123
+ return -1;
124
+ }
125
+
126
+ return Proxy_raw_init(self, wrapped);
127
+ }
128
+
129
+ /* ------------------------------------------------------------------------- */
130
+
131
+ static int Proxy_traverse(ProxyObject *self,
132
+ visitproc visit, void *arg)
133
+ {
134
+ Py_VISIT(self->dict);
135
+ Py_VISIT(self->wrapped);
136
+ Py_VISIT(self->factory);
137
+ return 0;
138
+ }
139
+
140
+ /* ------------------------------------------------------------------------- */
141
+
142
+ static int Proxy_clear(ProxyObject *self)
143
+ {
144
+ Py_CLEAR(self->dict);
145
+ Py_CLEAR(self->wrapped);
146
+ Py_CLEAR(self->factory);
147
+ return 0;
148
+ }
149
+
150
+ /* ------------------------------------------------------------------------- */
151
+
152
+ static void Proxy_dealloc(ProxyObject *self)
153
+ {
154
+ PyObject_GC_UnTrack(self);
155
+
156
+ Proxy_clear(self);
157
+
158
+ Py_TYPE(self)->tp_free(self);
159
+ }
160
+
161
+ /* ------------------------------------------------------------------------- */
162
+
163
+ static PyObject *Proxy_repr(ProxyObject *self)
164
+ {
165
+
166
+ #if PY_MAJOR_VERSION < 3
167
+ PyObject *factory_repr;
168
+
169
+ factory_repr = PyObject_Repr(self->factory);
170
+ if (factory_repr == NULL)
171
+ return NULL;
172
+ #endif
173
+
174
+ if (self->wrapped) {
175
+ #if PY_MAJOR_VERSION >= 3
176
+ return PyUnicode_FromFormat("<%s at %p wrapping %R at %p with factory %R>",
177
+ Py_TYPE(self)->tp_name, self,
178
+ self->wrapped, self->wrapped,
179
+ self->factory);
180
+ #else
181
+ PyObject *wrapped_repr;
182
+
183
+ wrapped_repr = PyObject_Repr(self->wrapped);
184
+ if (wrapped_repr == NULL)
185
+ return NULL;
186
+
187
+ return PyString_FromFormat("<%s at %p wrapping %s at %p with factory %s>",
188
+ Py_TYPE(self)->tp_name, self,
189
+ PyString_AS_STRING(wrapped_repr), self->wrapped,
190
+ PyString_AS_STRING(factory_repr));
191
+ #endif
192
+ } else {
193
+ #if PY_MAJOR_VERSION >= 3
194
+ return PyUnicode_FromFormat("<%s at %p with factory %R>",
195
+ Py_TYPE(self)->tp_name, self,
196
+ self->factory);
197
+ #else
198
+ return PyString_FromFormat("<%s at %p with factory %s>",
199
+ Py_TYPE(self)->tp_name, self,
200
+ PyString_AS_STRING(factory_repr));
201
+ #endif
202
+ }
203
+ }
204
+
205
+ /* ------------------------------------------------------------------------- */
206
+
207
+ static Py_hash_t Proxy_hash(ProxyObject *self)
208
+ {
209
+ Proxy__ENSURE_WRAPPED_OR_RETURN_MINUS1(self);
210
+
211
+ return PyObject_Hash(self->wrapped);
212
+ }
213
+
214
+ /* ------------------------------------------------------------------------- */
215
+
216
+ static PyObject *Proxy_str(ProxyObject *self)
217
+ {
218
+ Proxy__ENSURE_WRAPPED_OR_RETURN_NULL(self);
219
+
220
+ return PyObject_Str(self->wrapped);
221
+ }
222
+
223
+ /* ------------------------------------------------------------------------- */
224
+
225
+ static PyObject *Proxy_add(PyObject *o1, PyObject *o2)
226
+ {
227
+ Proxy__WRAPPED_REPLACE_OR_RETURN_NULL(o1);
228
+ Proxy__WRAPPED_REPLACE_OR_RETURN_NULL(o2);
229
+
230
+ return PyNumber_Add(o1, o2);
231
+ }
232
+
233
+ /* ------------------------------------------------------------------------- */
234
+
235
+ static PyObject *Proxy_subtract(PyObject *o1, PyObject *o2)
236
+ {
237
+ Proxy__WRAPPED_REPLACE_OR_RETURN_NULL(o1);
238
+ Proxy__WRAPPED_REPLACE_OR_RETURN_NULL(o2);
239
+
240
+ return PyNumber_Subtract(o1, o2);
241
+ }
242
+
243
+ /* ------------------------------------------------------------------------- */
244
+
245
+ static PyObject *Proxy_multiply(PyObject *o1, PyObject *o2)
246
+ {
247
+ Proxy__WRAPPED_REPLACE_OR_RETURN_NULL(o1);
248
+ Proxy__WRAPPED_REPLACE_OR_RETURN_NULL(o2);
249
+
250
+ return PyNumber_Multiply(o1, o2);
251
+ }
252
+
253
+ /* ------------------------------------------------------------------------- */
254
+
255
+ #if PY_MAJOR_VERSION < 3
256
+ static PyObject *Proxy_divide(PyObject *o1, PyObject *o2)
257
+ {
258
+ Proxy__WRAPPED_REPLACE_OR_RETURN_NULL(o1);
259
+ Proxy__WRAPPED_REPLACE_OR_RETURN_NULL(o2);
260
+
261
+ return PyNumber_Divide(o1, o2);
262
+ }
263
+ #endif
264
+
265
+ /* ------------------------------------------------------------------------- */
266
+
267
+ static PyObject *Proxy_remainder(PyObject *o1, PyObject *o2)
268
+ {
269
+ Proxy__WRAPPED_REPLACE_OR_RETURN_NULL(o1);
270
+ Proxy__WRAPPED_REPLACE_OR_RETURN_NULL(o2);
271
+
272
+ return PyNumber_Remainder(o1, o2);
273
+ }
274
+
275
+ /* ------------------------------------------------------------------------- */
276
+
277
+ static PyObject *Proxy_divmod(PyObject *o1, PyObject *o2)
278
+ {
279
+ Proxy__WRAPPED_REPLACE_OR_RETURN_NULL(o1);
280
+ Proxy__WRAPPED_REPLACE_OR_RETURN_NULL(o2);
281
+
282
+ return PyNumber_Divmod(o1, o2);
283
+ }
284
+
285
+ /* ------------------------------------------------------------------------- */
286
+
287
+ static PyObject *Proxy_power(PyObject *o1, PyObject *o2,
288
+ PyObject *modulo)
289
+ {
290
+ Proxy__WRAPPED_REPLACE_OR_RETURN_NULL(o1);
291
+ Proxy__WRAPPED_REPLACE_OR_RETURN_NULL(o2);
292
+
293
+ return PyNumber_Power(o1, o2, modulo);
294
+ }
295
+
296
+ /* ------------------------------------------------------------------------- */
297
+
298
+ static PyObject *Proxy_negative(ProxyObject *self)
299
+ {
300
+ Proxy__ENSURE_WRAPPED_OR_RETURN_NULL(self);
301
+
302
+ return PyNumber_Negative(self->wrapped);
303
+ }
304
+
305
+ /* ------------------------------------------------------------------------- */
306
+
307
+ static PyObject *Proxy_positive(ProxyObject *self)
308
+ {
309
+ Proxy__ENSURE_WRAPPED_OR_RETURN_NULL(self);
310
+
311
+ return PyNumber_Positive(self->wrapped);
312
+ }
313
+
314
+ /* ------------------------------------------------------------------------- */
315
+
316
+ static PyObject *Proxy_absolute(ProxyObject *self)
317
+ {
318
+ Proxy__ENSURE_WRAPPED_OR_RETURN_NULL(self);
319
+
320
+ return PyNumber_Absolute(self->wrapped);
321
+ }
322
+
323
+ /* ------------------------------------------------------------------------- */
324
+
325
+ static int Proxy_bool(ProxyObject *self)
326
+ {
327
+ Proxy__ENSURE_WRAPPED_OR_RETURN_MINUS1(self);
328
+
329
+ return PyObject_IsTrue(self->wrapped);
330
+ }
331
+
332
+ /* ------------------------------------------------------------------------- */
333
+
334
+ static PyObject *Proxy_invert(ProxyObject *self)
335
+ {
336
+ Proxy__ENSURE_WRAPPED_OR_RETURN_NULL(self);
337
+
338
+ return PyNumber_Invert(self->wrapped);
339
+ }
340
+
341
+ /* ------------------------------------------------------------------------- */
342
+
343
+ static PyObject *Proxy_lshift(PyObject *o1, PyObject *o2)
344
+ {
345
+ Proxy__WRAPPED_REPLACE_OR_RETURN_NULL(o1);
346
+ Proxy__WRAPPED_REPLACE_OR_RETURN_NULL(o2);
347
+
348
+ return PyNumber_Lshift(o1, o2);
349
+ }
350
+
351
+ /* ------------------------------------------------------------------------- */
352
+
353
+ static PyObject *Proxy_rshift(PyObject *o1, PyObject *o2)
354
+ {
355
+ Proxy__WRAPPED_REPLACE_OR_RETURN_NULL(o1);
356
+ Proxy__WRAPPED_REPLACE_OR_RETURN_NULL(o2);
357
+
358
+ return PyNumber_Rshift(o1, o2);
359
+ }
360
+
361
+ /* ------------------------------------------------------------------------- */
362
+
363
+ static PyObject *Proxy_and(PyObject *o1, PyObject *o2)
364
+ {
365
+ Proxy__WRAPPED_REPLACE_OR_RETURN_NULL(o1);
366
+ Proxy__WRAPPED_REPLACE_OR_RETURN_NULL(o2);
367
+
368
+ return PyNumber_And(o1, o2);
369
+ }
370
+
371
+ /* ------------------------------------------------------------------------- */
372
+
373
+ static PyObject *Proxy_xor(PyObject *o1, PyObject *o2)
374
+ {
375
+ Proxy__WRAPPED_REPLACE_OR_RETURN_NULL(o1);
376
+ Proxy__WRAPPED_REPLACE_OR_RETURN_NULL(o2);
377
+
378
+ return PyNumber_Xor(o1, o2);
379
+ }
380
+
381
+ /* ------------------------------------------------------------------------- */
382
+
383
+ static PyObject *Proxy_or(PyObject *o1, PyObject *o2)
384
+ {
385
+ Proxy__WRAPPED_REPLACE_OR_RETURN_NULL(o1);
386
+ Proxy__WRAPPED_REPLACE_OR_RETURN_NULL(o2);
387
+
388
+ return PyNumber_Or(o1, o2);
389
+ }
390
+
391
+ /* ------------------------------------------------------------------------- */
392
+
393
+ #if PY_MAJOR_VERSION < 3
394
+ static PyObject *Proxy_int(ProxyObject *self)
395
+ {
396
+ Proxy__ENSURE_WRAPPED_OR_RETURN_NULL(self);
397
+
398
+ return PyNumber_Int(self->wrapped);
399
+ }
400
+ #endif
401
+
402
+ /* ------------------------------------------------------------------------- */
403
+
404
+ static PyObject *Proxy_long(ProxyObject *self)
405
+ {
406
+ Proxy__ENSURE_WRAPPED_OR_RETURN_NULL(self);
407
+
408
+ return PyNumber_Long(self->wrapped);
409
+ }
410
+
411
+ /* ------------------------------------------------------------------------- */
412
+
413
+ static PyObject *Proxy_float(ProxyObject *self)
414
+ {
415
+ Proxy__ENSURE_WRAPPED_OR_RETURN_NULL(self);
416
+
417
+ return PyNumber_Float(self->wrapped);
418
+ }
419
+
420
+ /* ------------------------------------------------------------------------- */
421
+
422
+ #if PY_MAJOR_VERSION < 3
423
+ static PyObject *Proxy_oct(ProxyObject *self)
424
+ {
425
+ PyNumberMethods *nb;
426
+
427
+ Proxy__ENSURE_WRAPPED_OR_RETURN_NULL(self);
428
+
429
+ if ((nb = self->wrapped->ob_type->tp_as_number) == NULL ||
430
+ nb->nb_oct == NULL) {
431
+ PyErr_SetString(PyExc_TypeError,
432
+ "oct() argument can't be converted to oct");
433
+ return NULL;
434
+ }
435
+
436
+ return (*nb->nb_oct)(self->wrapped);
437
+ }
438
+ #endif
439
+
440
+ /* ------------------------------------------------------------------------- */
441
+
442
+ #if PY_MAJOR_VERSION < 3
443
+ static PyObject *Proxy_hex(ProxyObject *self)
444
+ {
445
+ PyNumberMethods *nb;
446
+
447
+ Proxy__ENSURE_WRAPPED_OR_RETURN_NULL(self);
448
+
449
+ if ((nb = self->wrapped->ob_type->tp_as_number) == NULL ||
450
+ nb->nb_hex == NULL) {
451
+ PyErr_SetString(PyExc_TypeError,
452
+ "hex() argument can't be converted to hex");
453
+ return NULL;
454
+ }
455
+
456
+ return (*nb->nb_hex)(self->wrapped);
457
+ }
458
+ #endif
459
+
460
+ /* ------------------------------------------------------------------------- */
461
+
462
+ static PyObject *Proxy_inplace_add(ProxyObject *self,
463
+ PyObject *other)
464
+ {
465
+ PyObject *object = NULL;
466
+
467
+ Proxy__ENSURE_WRAPPED_OR_RETURN_NULL(self);
468
+ Proxy__WRAPPED_REPLACE_OR_RETURN_NULL(other);
469
+
470
+ object = PyNumber_InPlaceAdd(self->wrapped, other);
471
+
472
+ if (!object)
473
+ return NULL;
474
+
475
+ Py_DECREF(self->wrapped);
476
+ self->wrapped = object;
477
+
478
+ Py_INCREF(self);
479
+ return (PyObject *)self;
480
+ }
481
+
482
+ /* ------------------------------------------------------------------------- */
483
+
484
+ static PyObject *Proxy_inplace_subtract(
485
+ ProxyObject *self, PyObject *other)
486
+ {
487
+ PyObject *object = NULL;
488
+
489
+ Proxy__ENSURE_WRAPPED_OR_RETURN_NULL(self);
490
+ Proxy__WRAPPED_REPLACE_OR_RETURN_NULL(other);
491
+
492
+ object = PyNumber_InPlaceSubtract(self->wrapped, other);
493
+
494
+ if (!object)
495
+ return NULL;
496
+
497
+ Py_DECREF(self->wrapped);
498
+ self->wrapped = object;
499
+
500
+ Py_INCREF(self);
501
+ return (PyObject *)self;
502
+ }
503
+
504
+ /* ------------------------------------------------------------------------- */
505
+
506
+ static PyObject *Proxy_inplace_multiply(
507
+ ProxyObject *self, PyObject *other)
508
+ {
509
+ PyObject *object = NULL;
510
+
511
+ Proxy__ENSURE_WRAPPED_OR_RETURN_NULL(self);
512
+ Proxy__WRAPPED_REPLACE_OR_RETURN_NULL(other);
513
+
514
+ object = PyNumber_InPlaceMultiply(self->wrapped, other);
515
+
516
+ if (!object)
517
+ return NULL;
518
+
519
+ Py_DECREF(self->wrapped);
520
+ self->wrapped = object;
521
+
522
+ Py_INCREF(self);
523
+ return (PyObject *)self;
524
+ }
525
+
526
+ /* ------------------------------------------------------------------------- */
527
+
528
+ #if PY_MAJOR_VERSION < 3
529
+ static PyObject *Proxy_inplace_divide(
530
+ ProxyObject *self, PyObject *other)
531
+ {
532
+ PyObject *object = NULL;
533
+
534
+ Proxy__ENSURE_WRAPPED_OR_RETURN_NULL(self);
535
+ Proxy__WRAPPED_REPLACE_OR_RETURN_NULL(other);
536
+
537
+ object = PyNumber_InPlaceDivide(self->wrapped, other);
538
+
539
+ if (!object)
540
+ return NULL;
541
+
542
+ Py_DECREF(self->wrapped);
543
+ self->wrapped = object;
544
+
545
+ Py_INCREF(self);
546
+ return (PyObject *)self;
547
+ }
548
+ #endif
549
+
550
+ /* ------------------------------------------------------------------------- */
551
+
552
+ static PyObject *Proxy_inplace_remainder(
553
+ ProxyObject *self, PyObject *other)
554
+ {
555
+ PyObject *object = NULL;
556
+
557
+ Proxy__ENSURE_WRAPPED_OR_RETURN_NULL(self);
558
+ Proxy__WRAPPED_REPLACE_OR_RETURN_NULL(other);
559
+
560
+ object = PyNumber_InPlaceRemainder(self->wrapped, other);
561
+
562
+ if (!object)
563
+ return NULL;
564
+
565
+ Py_DECREF(self->wrapped);
566
+ self->wrapped = object;
567
+
568
+ Py_INCREF(self);
569
+ return (PyObject *)self;
570
+ }
571
+
572
+ /* ------------------------------------------------------------------------- */
573
+
574
+ static PyObject *Proxy_inplace_power(ProxyObject *self,
575
+ PyObject *other, PyObject *modulo)
576
+ {
577
+ PyObject *object = NULL;
578
+
579
+ Proxy__ENSURE_WRAPPED_OR_RETURN_NULL(self);
580
+ Proxy__WRAPPED_REPLACE_OR_RETURN_NULL(other);
581
+
582
+ object = PyNumber_InPlacePower(self->wrapped, other, modulo);
583
+
584
+ if (!object)
585
+ return NULL;
586
+
587
+ Py_DECREF(self->wrapped);
588
+ self->wrapped = object;
589
+
590
+ Py_INCREF(self);
591
+ return (PyObject *)self;
592
+ }
593
+
594
+ /* ------------------------------------------------------------------------- */
595
+
596
+ static PyObject *Proxy_inplace_lshift(ProxyObject *self,
597
+ PyObject *other)
598
+ {
599
+ PyObject *object = NULL;
600
+
601
+ Proxy__ENSURE_WRAPPED_OR_RETURN_NULL(self);
602
+ Proxy__WRAPPED_REPLACE_OR_RETURN_NULL(other);
603
+
604
+ object = PyNumber_InPlaceLshift(self->wrapped, other);
605
+
606
+ if (!object)
607
+ return NULL;
608
+
609
+ Py_DECREF(self->wrapped);
610
+ self->wrapped = object;
611
+
612
+ Py_INCREF(self);
613
+ return (PyObject *)self;
614
+ }
615
+
616
+ /* ------------------------------------------------------------------------- */
617
+
618
+ static PyObject *Proxy_inplace_rshift(ProxyObject *self,
619
+ PyObject *other)
620
+ {
621
+ PyObject *object = NULL;
622
+
623
+ Proxy__ENSURE_WRAPPED_OR_RETURN_NULL(self);
624
+ Proxy__WRAPPED_REPLACE_OR_RETURN_NULL(other);
625
+
626
+ object = PyNumber_InPlaceRshift(self->wrapped, other);
627
+
628
+ if (!object)
629
+ return NULL;
630
+
631
+ Py_DECREF(self->wrapped);
632
+ self->wrapped = object;
633
+
634
+ Py_INCREF(self);
635
+ return (PyObject *)self;
636
+ }
637
+
638
+ /* ------------------------------------------------------------------------- */
639
+
640
+ static PyObject *Proxy_inplace_and(ProxyObject *self,
641
+ PyObject *other)
642
+ {
643
+ PyObject *object = NULL;
644
+
645
+ Proxy__ENSURE_WRAPPED_OR_RETURN_NULL(self);
646
+ Proxy__WRAPPED_REPLACE_OR_RETURN_NULL(other);
647
+
648
+ object = PyNumber_InPlaceAnd(self->wrapped, other);
649
+
650
+ if (!object)
651
+ return NULL;
652
+
653
+ Py_DECREF(self->wrapped);
654
+ self->wrapped = object;
655
+
656
+ Py_INCREF(self);
657
+ return (PyObject *)self;
658
+ }
659
+
660
+ /* ------------------------------------------------------------------------- */
661
+
662
+ static PyObject *Proxy_inplace_xor(ProxyObject *self,
663
+ PyObject *other)
664
+ {
665
+ PyObject *object = NULL;
666
+
667
+ Proxy__ENSURE_WRAPPED_OR_RETURN_NULL(self);
668
+ Proxy__WRAPPED_REPLACE_OR_RETURN_NULL(other);
669
+
670
+ object = PyNumber_InPlaceXor(self->wrapped, other);
671
+
672
+ if (!object)
673
+ return NULL;
674
+
675
+ Py_DECREF(self->wrapped);
676
+ self->wrapped = object;
677
+
678
+ Py_INCREF(self);
679
+ return (PyObject *)self;
680
+ }
681
+
682
+ /* ------------------------------------------------------------------------- */
683
+
684
+ static PyObject *Proxy_inplace_or(ProxyObject *self,
685
+ PyObject *other)
686
+ {
687
+ PyObject *object = NULL;
688
+
689
+ Proxy__ENSURE_WRAPPED_OR_RETURN_NULL(self);
690
+ Proxy__WRAPPED_REPLACE_OR_RETURN_NULL(other);
691
+
692
+ object = PyNumber_InPlaceOr(self->wrapped, other);
693
+
694
+ Py_DECREF(self->wrapped);
695
+ self->wrapped = object;
696
+
697
+ Py_INCREF(self);
698
+ return (PyObject *)self;
699
+ }
700
+
701
+ /* ------------------------------------------------------------------------- */
702
+
703
+ static PyObject *Proxy_floor_divide(PyObject *o1, PyObject *o2)
704
+ {
705
+ Proxy__WRAPPED_REPLACE_OR_RETURN_NULL(o1);
706
+ Proxy__WRAPPED_REPLACE_OR_RETURN_NULL(o2);
707
+
708
+ return PyNumber_FloorDivide(o1, o2);
709
+ }
710
+
711
+ /* ------------------------------------------------------------------------- */
712
+
713
+ static PyObject *Proxy_true_divide(PyObject *o1, PyObject *o2)
714
+ {
715
+ Proxy__WRAPPED_REPLACE_OR_RETURN_NULL(o1);
716
+ Proxy__WRAPPED_REPLACE_OR_RETURN_NULL(o2);
717
+
718
+ return PyNumber_TrueDivide(o1, o2);
719
+ }
720
+
721
+ /* ------------------------------------------------------------------------- */
722
+
723
+ static PyObject *Proxy_inplace_floor_divide(
724
+ ProxyObject *self, PyObject *other)
725
+ {
726
+ PyObject *object = NULL;
727
+
728
+ Proxy__ENSURE_WRAPPED_OR_RETURN_NULL(self);
729
+ Proxy__WRAPPED_REPLACE_OR_RETURN_NULL(other);
730
+
731
+ object = PyNumber_InPlaceFloorDivide(self->wrapped, other);
732
+
733
+ if (!object)
734
+ return NULL;
735
+
736
+ Py_DECREF(self->wrapped);
737
+ self->wrapped = object;
738
+
739
+ Py_INCREF(self);
740
+ return (PyObject *)self;
741
+ }
742
+
743
+ /* ------------------------------------------------------------------------- */
744
+
745
+ static PyObject *Proxy_inplace_true_divide(
746
+ ProxyObject *self, PyObject *other)
747
+ {
748
+ PyObject *object = NULL;
749
+
750
+ Proxy__ENSURE_WRAPPED_OR_RETURN_NULL(self);
751
+ Proxy__WRAPPED_REPLACE_OR_RETURN_NULL(other);
752
+
753
+ object = PyNumber_InPlaceTrueDivide(self->wrapped, other);
754
+
755
+ if (!object)
756
+ return NULL;
757
+
758
+ Py_DECREF(self->wrapped);
759
+ self->wrapped = object;
760
+
761
+ Py_INCREF(self);
762
+ return (PyObject *)self;
763
+ }
764
+
765
+ /* ------------------------------------------------------------------------- */
766
+
767
+ static PyObject *Proxy_index(ProxyObject *self)
768
+ {
769
+ Proxy__ENSURE_WRAPPED_OR_RETURN_NULL(self);
770
+
771
+ return PyNumber_Index(self->wrapped);
772
+ }
773
+
774
+ /* ------------------------------------------------------------------------- */
775
+
776
+ static Py_ssize_t Proxy_length(ProxyObject *self)
777
+ {
778
+ Proxy__ENSURE_WRAPPED_OR_RETURN_MINUS1(self);
779
+
780
+ return PyObject_Length(self->wrapped);
781
+ }
782
+
783
+ /* ------------------------------------------------------------------------- */
784
+
785
+ static int Proxy_contains(ProxyObject *self,
786
+ PyObject *value)
787
+ {
788
+ Proxy__ENSURE_WRAPPED_OR_RETURN_MINUS1(self);
789
+
790
+ return PySequence_Contains(self->wrapped, value);
791
+ }
792
+
793
+ /* ------------------------------------------------------------------------- */
794
+
795
+ static PyObject *Proxy_getitem(ProxyObject *self,
796
+ PyObject *key)
797
+ {
798
+ Proxy__ENSURE_WRAPPED_OR_RETURN_NULL(self);
799
+
800
+ return PyObject_GetItem(self->wrapped, key);
801
+ }
802
+
803
+ /* ------------------------------------------------------------------------- */
804
+
805
+ static int Proxy_setitem(ProxyObject *self,
806
+ PyObject *key, PyObject* value)
807
+ {
808
+ Proxy__ENSURE_WRAPPED_OR_RETURN_MINUS1(self);
809
+
810
+ if (value == NULL)
811
+ return PyObject_DelItem(self->wrapped, key);
812
+ else
813
+ return PyObject_SetItem(self->wrapped, key, value);
814
+ }
815
+
816
+ /* ------------------------------------------------------------------------- */
817
+
818
+ static PyObject *Proxy_dir(
819
+ ProxyObject *self, PyObject *args)
820
+ {
821
+ Proxy__ENSURE_WRAPPED_OR_RETURN_NULL(self);
822
+
823
+ return PyObject_Dir(self->wrapped);
824
+ }
825
+
826
+ /* ------------------------------------------------------------------------- */
827
+
828
+ static PyObject *Proxy_enter(
829
+ ProxyObject *self, PyObject *args, PyObject *kwds)
830
+ {
831
+ PyObject *method = NULL;
832
+ PyObject *result = NULL;
833
+
834
+ Proxy__ENSURE_WRAPPED_OR_RETURN_NULL(self);
835
+
836
+ method = PyObject_GetAttrString(self->wrapped, "__enter__");
837
+
838
+ if (!method)
839
+ return NULL;
840
+
841
+ result = PyObject_Call(method, args, kwds);
842
+
843
+ Py_DECREF(method);
844
+
845
+ return result;
846
+ }
847
+
848
+ /* ------------------------------------------------------------------------- */
849
+
850
+ static PyObject *Proxy_exit(
851
+ ProxyObject *self, PyObject *args, PyObject *kwds)
852
+ {
853
+ PyObject *method = NULL;
854
+ PyObject *result = NULL;
855
+
856
+ Proxy__ENSURE_WRAPPED_OR_RETURN_NULL(self);
857
+
858
+ method = PyObject_GetAttrString(self->wrapped, "__exit__");
859
+
860
+ if (!method)
861
+ return NULL;
862
+
863
+ result = PyObject_Call(method, args, kwds);
864
+
865
+ Py_DECREF(method);
866
+
867
+ return result;
868
+ }
869
+
870
+ /* ------------------------------------------------------------------------- */
871
+
872
+ static PyObject *Proxy_bytes(
873
+ ProxyObject *self, PyObject *args)
874
+ {
875
+ Proxy__ENSURE_WRAPPED_OR_RETURN_NULL(self);
876
+
877
+ return PyObject_Bytes(self->wrapped);
878
+ }
879
+
880
+ /* ------------------------------------------------------------------------- */
881
+
882
+ static PyObject *Proxy_reversed(
883
+ ProxyObject *self, PyObject *args)
884
+ {
885
+ Proxy__ENSURE_WRAPPED_OR_RETURN_NULL(self);
886
+
887
+ return PyObject_CallFunctionObjArgs((PyObject *)&PyReversed_Type,
888
+ self->wrapped, NULL);
889
+ }
890
+
891
+ /* ------------------------------------------------------------------------- */
892
+ static PyObject *Proxy_reduce(
893
+ ProxyObject *self, PyObject *args)
894
+ {
895
+ Proxy__ENSURE_WRAPPED_OR_RETURN_NULL(self);
896
+
897
+ return Py_BuildValue("(O(O))", identity_ref, self->wrapped);
898
+ }
899
+
900
+ /* ------------------------------------------------------------------------- */
901
+
902
+ #if PY_MAJOR_VERSION >= 3
903
+ static PyObject *Proxy_round(
904
+ ProxyObject *self, PyObject *args)
905
+ {
906
+ PyObject *module = NULL;
907
+ PyObject *dict = NULL;
908
+ PyObject *round = NULL;
909
+
910
+ PyObject *result = NULL;
911
+
912
+ Proxy__ENSURE_WRAPPED_OR_RETURN_NULL(self);
913
+
914
+ module = PyImport_ImportModule("builtins");
915
+
916
+ if (!module)
917
+ return NULL;
918
+
919
+ dict = PyModule_GetDict(module);
920
+ round = PyDict_GetItemString(dict, "round");
921
+
922
+ if (!round) {
923
+ Py_DECREF(module);
924
+ return NULL;
925
+ }
926
+
927
+ Py_INCREF(round);
928
+ Py_DECREF(module);
929
+
930
+ result = PyObject_CallFunctionObjArgs(round, self->wrapped, NULL);
931
+
932
+ Py_DECREF(round);
933
+
934
+ return result;
935
+ }
936
+ #endif
937
+
938
+ /* ------------------------------------------------------------------------- */
939
+
940
+ static PyObject *Proxy_get_name(
941
+ ProxyObject *self)
942
+ {
943
+ Proxy__ENSURE_WRAPPED_OR_RETURN_NULL(self);
944
+
945
+ return PyObject_GetAttrString(self->wrapped, "__name__");
946
+ }
947
+
948
+ /* ------------------------------------------------------------------------- */
949
+
950
+ static int Proxy_set_name(ProxyObject *self,
951
+ PyObject *value)
952
+ {
953
+ Proxy__ENSURE_WRAPPED_OR_RETURN_MINUS1(self);
954
+
955
+ return PyObject_SetAttrString(self->wrapped, "__name__", value);
956
+ }
957
+
958
+ /* ------------------------------------------------------------------------- */
959
+
960
+ static PyObject *Proxy_get_qualname(
961
+ ProxyObject *self)
962
+ {
963
+ Proxy__ENSURE_WRAPPED_OR_RETURN_NULL(self);
964
+
965
+ return PyObject_GetAttrString(self->wrapped, "__qualname__");
966
+ }
967
+
968
+ /* ------------------------------------------------------------------------- */
969
+
970
+ static int Proxy_set_qualname(ProxyObject *self,
971
+ PyObject *value)
972
+ {
973
+ Proxy__ENSURE_WRAPPED_OR_RETURN_MINUS1(self);
974
+
975
+ return PyObject_SetAttrString(self->wrapped, "__qualname__", value);
976
+ }
977
+
978
+ /* ------------------------------------------------------------------------- */
979
+
980
+ static PyObject *Proxy_get_module(
981
+ ProxyObject *self)
982
+ {
983
+ Proxy__ENSURE_WRAPPED_OR_RETURN_NULL(self);
984
+
985
+ return PyObject_GetAttrString(self->wrapped, "__module__");
986
+ }
987
+
988
+ /* ------------------------------------------------------------------------- */
989
+
990
+ static int Proxy_set_module(ProxyObject *self,
991
+ PyObject *value)
992
+ {
993
+ Proxy__ENSURE_WRAPPED_OR_RETURN_MINUS1(self);
994
+
995
+ if (PyObject_SetAttrString(self->wrapped, "__module__", value) == -1)
996
+ return -1;
997
+
998
+ return PyDict_SetItemString(self->dict, "__module__", value);
999
+ }
1000
+
1001
+ /* ------------------------------------------------------------------------- */
1002
+
1003
+ static PyObject *Proxy_get_doc(
1004
+ ProxyObject *self)
1005
+ {
1006
+ Proxy__ENSURE_WRAPPED_OR_RETURN_NULL(self);
1007
+
1008
+ return PyObject_GetAttrString(self->wrapped, "__doc__");
1009
+ }
1010
+
1011
+ /* ------------------------------------------------------------------------- */
1012
+
1013
+ static int Proxy_set_doc(ProxyObject *self,
1014
+ PyObject *value)
1015
+ {
1016
+ Proxy__ENSURE_WRAPPED_OR_RETURN_MINUS1(self);
1017
+
1018
+ if (PyObject_SetAttrString(self->wrapped, "__doc__", value) == -1)
1019
+ return -1;
1020
+
1021
+ return PyDict_SetItemString(self->dict, "__doc__", value);
1022
+ }
1023
+
1024
+ /* ------------------------------------------------------------------------- */
1025
+
1026
+ static PyObject *Proxy_get_class(
1027
+ ProxyObject *self)
1028
+ {
1029
+ Proxy__ENSURE_WRAPPED_OR_RETURN_NULL(self);
1030
+
1031
+ return PyObject_GetAttrString(self->wrapped, "__class__");
1032
+ }
1033
+
1034
+ /* ------------------------------------------------------------------------- */
1035
+
1036
+ static PyObject *Proxy_get_annotations(
1037
+ ProxyObject *self)
1038
+ {
1039
+ Proxy__ENSURE_WRAPPED_OR_RETURN_NULL(self);
1040
+
1041
+ return PyObject_GetAttrString(self->wrapped, "__annotations__");
1042
+ }
1043
+
1044
+ /* ------------------------------------------------------------------------- */
1045
+
1046
+ static int Proxy_set_annotations(ProxyObject *self,
1047
+ PyObject *value)
1048
+ {
1049
+ Proxy__ENSURE_WRAPPED_OR_RETURN_MINUS1(self);
1050
+
1051
+ return PyObject_SetAttrString(self->wrapped, "__annotations__", value);
1052
+ }
1053
+
1054
+ /* ------------------------------------------------------------------------- */
1055
+
1056
+ static PyObject *Proxy_get_wrapped(
1057
+ ProxyObject *self)
1058
+ {
1059
+ Proxy__ENSURE_WRAPPED_OR_RETURN_NULL(self);
1060
+
1061
+ Py_INCREF(self->wrapped);
1062
+ return self->wrapped;
1063
+ }
1064
+
1065
+ /* ------------------------------------------------------------------------- */
1066
+
1067
+ static int Proxy_set_wrapped(ProxyObject *self,
1068
+ PyObject *value)
1069
+ {
1070
+ if (value) Py_INCREF(value);
1071
+ Py_XDECREF(self->wrapped);
1072
+
1073
+ self->wrapped = value;
1074
+
1075
+ return 0;
1076
+ }
1077
+
1078
+ /* ------------------------------------------------------------------------- */
1079
+
1080
+ static PyObject *Proxy_get_factory(
1081
+ ProxyObject *self)
1082
+ {
1083
+ Py_INCREF(self->factory);
1084
+ return self->factory;
1085
+ }
1086
+
1087
+ /* ------------------------------------------------------------------------- */
1088
+
1089
+ static int Proxy_set_factory(ProxyObject *self,
1090
+ PyObject *value)
1091
+ {
1092
+ if (value) Py_INCREF(value);
1093
+ Py_XDECREF(self->factory);
1094
+
1095
+ self->factory = value;
1096
+
1097
+ return 0;
1098
+ }
1099
+
1100
+ /* ------------------------------------------------------------------------- */
1101
+
1102
+ static PyObject *Proxy_getattro(
1103
+ ProxyObject *self, PyObject *name)
1104
+ {
1105
+ PyObject *object = NULL;
1106
+ PyObject *result = NULL;
1107
+
1108
+ static PyObject *getattr_str = NULL;
1109
+
1110
+ object = PyObject_GenericGetAttr((PyObject *)self, name);
1111
+
1112
+ if (object)
1113
+ return object;
1114
+
1115
+ PyErr_Clear();
1116
+
1117
+ if (!getattr_str) {
1118
+ #if PY_MAJOR_VERSION >= 3
1119
+ getattr_str = PyUnicode_InternFromString("__getattr__");
1120
+ #else
1121
+ getattr_str = PyString_InternFromString("__getattr__");
1122
+ #endif
1123
+ }
1124
+
1125
+ object = PyObject_GenericGetAttr((PyObject *)self, getattr_str);
1126
+
1127
+ if (!object)
1128
+ return NULL;
1129
+
1130
+ result = PyObject_CallFunctionObjArgs(object, name, NULL);
1131
+
1132
+ Py_DECREF(object);
1133
+
1134
+ return result;
1135
+ }
1136
+
1137
+ /* ------------------------------------------------------------------------- */
1138
+
1139
+ static PyObject *Proxy_getattr(
1140
+ ProxyObject *self, PyObject *args)
1141
+ {
1142
+ PyObject *name = NULL;
1143
+
1144
+ #if PY_MAJOR_VERSION >= 3
1145
+ if (!PyArg_ParseTuple(args, "U:__getattr__", &name))
1146
+ return NULL;
1147
+ #else
1148
+ if (!PyArg_ParseTuple(args, "S:__getattr__", &name))
1149
+ return NULL;
1150
+ #endif
1151
+
1152
+ Proxy__ENSURE_WRAPPED_OR_RETURN_NULL(self);
1153
+
1154
+ return PyObject_GetAttr(self->wrapped, name);
1155
+ }
1156
+
1157
+ /* ------------------------------------------------------------------------- */
1158
+
1159
+ static int Proxy_setattro(
1160
+ ProxyObject *self, PyObject *name, PyObject *value)
1161
+ {
1162
+ if (PyObject_HasAttr((PyObject *)Py_TYPE(self), name))
1163
+ return PyObject_GenericSetAttr((PyObject *)self, name, value);
1164
+
1165
+ Proxy__ENSURE_WRAPPED_OR_RETURN_MINUS1(self);
1166
+
1167
+ return PyObject_SetAttr(self->wrapped, name, value);
1168
+ }
1169
+
1170
+ /* ------------------------------------------------------------------------- */
1171
+
1172
+ static PyObject *Proxy_richcompare(ProxyObject *self,
1173
+ PyObject *other, int opcode)
1174
+ {
1175
+ Proxy__ENSURE_WRAPPED_OR_RETURN_NULL(self);
1176
+
1177
+ return PyObject_RichCompare(self->wrapped, other, opcode);
1178
+ }
1179
+
1180
+ /* ------------------------------------------------------------------------- */
1181
+
1182
+ static PyObject *Proxy_iter(ProxyObject *self)
1183
+ {
1184
+ Proxy__ENSURE_WRAPPED_OR_RETURN_NULL(self);
1185
+
1186
+ return PyObject_GetIter(self->wrapped);
1187
+ }
1188
+
1189
+ /* ------------------------------------------------------------------------- */
1190
+
1191
+ static PyObject *Proxy_call(
1192
+ ProxyObject *self, PyObject *args, PyObject *kwds)
1193
+ {
1194
+ Proxy__ENSURE_WRAPPED_OR_RETURN_NULL(self);
1195
+
1196
+ return PyObject_Call(self->wrapped, args, kwds);
1197
+ }
1198
+
1199
+ /* ------------------------------------------------------------------------- */;
1200
+
1201
+ static PyNumberMethods Proxy_as_number = {
1202
+ (binaryfunc)Proxy_add, /*nb_add*/
1203
+ (binaryfunc)Proxy_subtract, /*nb_subtract*/
1204
+ (binaryfunc)Proxy_multiply, /*nb_multiply*/
1205
+ #if PY_MAJOR_VERSION < 3
1206
+ (binaryfunc)Proxy_divide, /*nb_divide*/
1207
+ #endif
1208
+ (binaryfunc)Proxy_remainder, /*nb_remainder*/
1209
+ (binaryfunc)Proxy_divmod, /*nb_divmod*/
1210
+ (ternaryfunc)Proxy_power, /*nb_power*/
1211
+ (unaryfunc)Proxy_negative, /*nb_negative*/
1212
+ (unaryfunc)Proxy_positive, /*nb_positive*/
1213
+ (unaryfunc)Proxy_absolute, /*nb_absolute*/
1214
+ (inquiry)Proxy_bool, /*nb_nonzero/nb_bool*/
1215
+ (unaryfunc)Proxy_invert, /*nb_invert*/
1216
+ (binaryfunc)Proxy_lshift, /*nb_lshift*/
1217
+ (binaryfunc)Proxy_rshift, /*nb_rshift*/
1218
+ (binaryfunc)Proxy_and, /*nb_and*/
1219
+ (binaryfunc)Proxy_xor, /*nb_xor*/
1220
+ (binaryfunc)Proxy_or, /*nb_or*/
1221
+ #if PY_MAJOR_VERSION < 3
1222
+ 0, /*nb_coerce*/
1223
+ #endif
1224
+ #if PY_MAJOR_VERSION < 3
1225
+ (unaryfunc)Proxy_int, /*nb_int*/
1226
+ (unaryfunc)Proxy_long, /*nb_long*/
1227
+ #else
1228
+ (unaryfunc)Proxy_long, /*nb_int*/
1229
+ 0, /*nb_long/nb_reserved*/
1230
+ #endif
1231
+ (unaryfunc)Proxy_float, /*nb_float*/
1232
+ #if PY_MAJOR_VERSION < 3
1233
+ (unaryfunc)Proxy_oct, /*nb_oct*/
1234
+ (unaryfunc)Proxy_hex, /*nb_hex*/
1235
+ #endif
1236
+ (binaryfunc)Proxy_inplace_add, /*nb_inplace_add*/
1237
+ (binaryfunc)Proxy_inplace_subtract, /*nb_inplace_subtract*/
1238
+ (binaryfunc)Proxy_inplace_multiply, /*nb_inplace_multiply*/
1239
+ #if PY_MAJOR_VERSION < 3
1240
+ (binaryfunc)Proxy_inplace_divide, /*nb_inplace_divide*/
1241
+ #endif
1242
+ (binaryfunc)Proxy_inplace_remainder, /*nb_inplace_remainder*/
1243
+ (ternaryfunc)Proxy_inplace_power, /*nb_inplace_power*/
1244
+ (binaryfunc)Proxy_inplace_lshift, /*nb_inplace_lshift*/
1245
+ (binaryfunc)Proxy_inplace_rshift, /*nb_inplace_rshift*/
1246
+ (binaryfunc)Proxy_inplace_and, /*nb_inplace_and*/
1247
+ (binaryfunc)Proxy_inplace_xor, /*nb_inplace_xor*/
1248
+ (binaryfunc)Proxy_inplace_or, /*nb_inplace_or*/
1249
+ (binaryfunc)Proxy_floor_divide, /*nb_floor_divide*/
1250
+ (binaryfunc)Proxy_true_divide, /*nb_true_divide*/
1251
+ (binaryfunc)Proxy_inplace_floor_divide, /*nb_inplace_floor_divide*/
1252
+ (binaryfunc)Proxy_inplace_true_divide, /*nb_inplace_true_divide*/
1253
+ (unaryfunc)Proxy_index, /*nb_index*/
1254
+ };
1255
+
1256
+ static PySequenceMethods Proxy_as_sequence = {
1257
+ (lenfunc)Proxy_length, /*sq_length*/
1258
+ 0, /*sq_concat*/
1259
+ 0, /*sq_repeat*/
1260
+ 0, /*sq_item*/
1261
+ 0, /*sq_slice*/
1262
+ 0, /*sq_ass_item*/
1263
+ 0, /*sq_ass_slice*/
1264
+ (objobjproc)Proxy_contains, /* sq_contains */
1265
+ };
1266
+
1267
+ static PyMappingMethods Proxy_as_mapping = {
1268
+ (lenfunc)Proxy_length, /*mp_length*/
1269
+ (binaryfunc)Proxy_getitem, /*mp_subscript*/
1270
+ (objobjargproc)Proxy_setitem, /*mp_ass_subscript*/
1271
+ };
1272
+
1273
+ static PyMethodDef Proxy_methods[] = {
1274
+ { "__dir__", (PyCFunction)Proxy_dir, METH_NOARGS, 0 },
1275
+ { "__enter__", (PyCFunction)Proxy_enter,
1276
+ METH_VARARGS | METH_KEYWORDS, 0 },
1277
+ { "__exit__", (PyCFunction)Proxy_exit,
1278
+ METH_VARARGS | METH_KEYWORDS, 0 },
1279
+ { "__getattr__", (PyCFunction)Proxy_getattr,
1280
+ METH_VARARGS , 0 },
1281
+ { "__bytes__", (PyCFunction)Proxy_bytes, METH_NOARGS, 0 },
1282
+ { "__reversed__", (PyCFunction)Proxy_reversed, METH_NOARGS, 0 },
1283
+ { "__reduce__", (PyCFunction)Proxy_reduce, METH_NOARGS, 0 },
1284
+ { "__reduce_ex__", (PyCFunction)Proxy_reduce, METH_O, 0 },
1285
+ #if PY_MAJOR_VERSION >= 3
1286
+ { "__round__", (PyCFunction)Proxy_round, METH_NOARGS, 0 },
1287
+ #endif
1288
+ { NULL, NULL },
1289
+ };
1290
+
1291
+ static PyGetSetDef Proxy_getset[] = {
1292
+ { "__name__", (getter)Proxy_get_name,
1293
+ (setter)Proxy_set_name, 0 },
1294
+ { "__qualname__", (getter)Proxy_get_qualname,
1295
+ (setter)Proxy_set_qualname, 0 },
1296
+ { "__module__", (getter)Proxy_get_module,
1297
+ (setter)Proxy_set_module, 0 },
1298
+ { "__doc__", (getter)Proxy_get_doc,
1299
+ (setter)Proxy_set_doc, 0 },
1300
+ { "__class__", (getter)Proxy_get_class,
1301
+ NULL, 0 },
1302
+ { "__annotations__", (getter)Proxy_get_annotations,
1303
+ (setter)Proxy_set_annotations, 0 },
1304
+ { "__wrapped__", (getter)Proxy_get_wrapped,
1305
+ (setter)Proxy_set_wrapped, 0 },
1306
+ { "__factory__", (getter)Proxy_get_factory,
1307
+ (setter)Proxy_set_factory, 0 },
1308
+ { NULL },
1309
+ };
1310
+
1311
+ PyTypeObject Proxy_Type = {
1312
+ PyVarObject_HEAD_INIT(NULL, 0)
1313
+ "Proxy", /*tp_name*/
1314
+ sizeof(ProxyObject), /*tp_basicsize*/
1315
+ 0, /*tp_itemsize*/
1316
+ /* methods */
1317
+ (destructor)Proxy_dealloc, /*tp_dealloc*/
1318
+ 0, /*tp_print*/
1319
+ 0, /*tp_getattr*/
1320
+ 0, /*tp_setattr*/
1321
+ 0, /*tp_compare*/
1322
+ (unaryfunc)Proxy_repr, /*tp_repr*/
1323
+ &Proxy_as_number, /*tp_as_number*/
1324
+ &Proxy_as_sequence, /*tp_as_sequence*/
1325
+ &Proxy_as_mapping, /*tp_as_mapping*/
1326
+ (hashfunc)Proxy_hash, /*tp_hash*/
1327
+ (ternaryfunc)Proxy_call, /*tp_call*/
1328
+ (unaryfunc)Proxy_str, /*tp_str*/
1329
+ (getattrofunc)Proxy_getattro, /*tp_getattro*/
1330
+ (setattrofunc)Proxy_setattro, /*tp_setattro*/
1331
+ 0, /*tp_as_buffer*/
1332
+ #if PY_MAJOR_VERSION < 3
1333
+ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_CHECKTYPES,
1334
+ /*tp_flags*/
1335
+ #else
1336
+ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC,
1337
+ /*tp_flags*/
1338
+ #endif
1339
+ 0, /*tp_doc*/
1340
+ (traverseproc)Proxy_traverse, /*tp_traverse*/
1341
+ (inquiry)Proxy_clear, /*tp_clear*/
1342
+ (richcmpfunc)Proxy_richcompare, /*tp_richcompare*/
1343
+ 0, /*tp_weaklistoffset*/
1344
+ (getiterfunc)Proxy_iter, /*tp_iter*/
1345
+ 0, /*tp_iternext*/
1346
+ Proxy_methods, /*tp_methods*/
1347
+ 0, /*tp_members*/
1348
+ Proxy_getset, /*tp_getset*/
1349
+ 0, /*tp_base*/
1350
+ 0, /*tp_dict*/
1351
+ 0, /*tp_descr_get*/
1352
+ 0, /*tp_descr_set*/
1353
+ offsetof(ProxyObject, dict), /*tp_dictoffset*/
1354
+ (initproc)Proxy_init, /*tp_init*/
1355
+ PyType_GenericAlloc, /*tp_alloc*/
1356
+ Proxy_new, /*tp_new*/
1357
+ PyObject_GC_Del, /*tp_free*/
1358
+ 0, /*tp_is_gc*/
1359
+ };
1360
+
1361
+ /* ------------------------------------------------------------------------- */
1362
+
1363
+ #if PY_MAJOR_VERSION >= 3
1364
+ static struct PyModuleDef moduledef = {
1365
+ PyModuleDef_HEAD_INIT,
1366
+ "lazy_object_proxy.cext", /* m_name */
1367
+ NULL, /* m_doc */
1368
+ -1, /* m_size */
1369
+ module_functions, /* m_methods */
1370
+ NULL, /* m_reload */
1371
+ NULL, /* m_traverse */
1372
+ NULL, /* m_clear */
1373
+ NULL, /* m_free */
1374
+ };
1375
+ #endif
1376
+
1377
+ static PyObject *
1378
+ moduleinit(void)
1379
+ {
1380
+ PyObject *module;
1381
+ PyObject *dict;
1382
+
1383
+ #if PY_MAJOR_VERSION >= 3
1384
+ module = PyModule_Create(&moduledef);
1385
+ #else
1386
+ module = Py_InitModule3("lazy_object_proxy.cext", module_functions, NULL);
1387
+ #endif
1388
+
1389
+ if (module == NULL)
1390
+ return NULL;
1391
+
1392
+ if (PyType_Ready(&Proxy_Type) < 0)
1393
+ return NULL;
1394
+
1395
+ dict = PyModule_GetDict(module);
1396
+ if (dict == NULL)
1397
+ return NULL;
1398
+ identity_ref = PyDict_GetItemString(dict, "identity");
1399
+ if (identity_ref == NULL)
1400
+ return NULL;
1401
+ Py_INCREF(identity_ref);
1402
+
1403
+ Py_INCREF(&Proxy_Type);
1404
+ PyModule_AddObject(module, "Proxy",
1405
+ (PyObject *)&Proxy_Type);
1406
+ return module;
1407
+ }
1408
+
1409
+ #if PY_MAJOR_VERSION < 3
1410
+ PyMODINIT_FUNC initcext(void)
1411
+ {
1412
+ moduleinit();
1413
+ }
1414
+ #else
1415
+ PyMODINIT_FUNC PyInit_cext(void)
1416
+ {
1417
+ return moduleinit();
1418
+ }
1419
+ #endif
1420
+
1421
+ /* ------------------------------------------------------------------------- */