py2docfx 0.1.16.dev2064350__py3-none-any.whl → 0.1.17__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (388) hide show
  1. py2docfx/convert_prepare/environment.py +1 -3
  2. py2docfx/convert_prepare/get_source.py +1 -6
  3. py2docfx/convert_prepare/package_info.py +1 -1
  4. py2docfx/docfx_yaml/miss_reference.py +1 -1
  5. py2docfx/docfx_yaml/parameter_utils.py +58 -6
  6. py2docfx/docfx_yaml/tests/roots/test-translator-typing/code_with_typing.py +14 -0
  7. py2docfx/docfx_yaml/tests/roots/test-translator-typing/conf.py +18 -0
  8. py2docfx/docfx_yaml/tests/test_translator_typing.py +39 -0
  9. py2docfx/docfx_yaml/utils.py +2 -2
  10. py2docfx/venv/basevenv/Lib/site-packages/certifi/__init__.py +1 -1
  11. py2docfx/venv/basevenv/Lib/site-packages/certifi/core.py +1 -32
  12. py2docfx/venv/basevenv/Lib/site-packages/charset_normalizer/cli/__main__.py +62 -2
  13. py2docfx/venv/basevenv/Lib/site-packages/charset_normalizer/constant.py +17 -0
  14. py2docfx/venv/basevenv/Lib/site-packages/charset_normalizer/legacy.py +1 -3
  15. py2docfx/venv/basevenv/Lib/site-packages/charset_normalizer/md.py +19 -14
  16. py2docfx/venv/basevenv/Lib/site-packages/charset_normalizer/utils.py +6 -0
  17. py2docfx/venv/basevenv/Lib/site-packages/charset_normalizer/version.py +1 -1
  18. py2docfx/venv/basevenv/Lib/site-packages/packaging/__init__.py +1 -1
  19. py2docfx/venv/basevenv/Lib/site-packages/packaging/_elffile.py +1 -2
  20. py2docfx/venv/basevenv/Lib/site-packages/packaging/_manylinux.py +1 -2
  21. py2docfx/venv/basevenv/Lib/site-packages/packaging/_parser.py +1 -2
  22. py2docfx/venv/basevenv/Lib/site-packages/packaging/_tokenizer.py +5 -4
  23. py2docfx/venv/basevenv/Lib/site-packages/packaging/licenses/__init__.py +1 -1
  24. py2docfx/venv/basevenv/Lib/site-packages/packaging/markers.py +53 -22
  25. py2docfx/venv/basevenv/Lib/site-packages/packaging/metadata.py +1 -2
  26. py2docfx/venv/basevenv/Lib/site-packages/packaging/specifiers.py +1 -2
  27. py2docfx/venv/basevenv/Lib/site-packages/packaging/tags.py +39 -0
  28. py2docfx/venv/basevenv/Lib/site-packages/pkg_resources/__init__.py +6 -7
  29. py2docfx/venv/basevenv/Lib/site-packages/pygments/__init__.py +1 -1
  30. py2docfx/venv/basevenv/Lib/site-packages/pygments/lexers/_sql_builtins.py +106 -0
  31. py2docfx/venv/basevenv/Lib/site-packages/pygments/lexers/scripting.py +5 -3
  32. py2docfx/venv/basevenv/Lib/site-packages/pygments/lexers/sql.py +24 -118
  33. py2docfx/venv/basevenv/Lib/site-packages/requests/__version__.py +2 -2
  34. py2docfx/venv/basevenv/Lib/site-packages/requests/compat.py +12 -0
  35. py2docfx/venv/basevenv/Lib/site-packages/requests/models.py +3 -1
  36. py2docfx/venv/basevenv/Lib/site-packages/requests/utils.py +6 -16
  37. py2docfx/venv/basevenv/Lib/site-packages/setuptools/__init__.py +0 -38
  38. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_discovery.py +33 -0
  39. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/command/build_scripts.py +1 -1
  40. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/command/config.py +0 -2
  41. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/compilers/C/tests/test_unix.py +63 -0
  42. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/compilers/C/unix.py +5 -6
  43. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_entry_points.py +4 -0
  44. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_normalization.py +0 -2
  45. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_path.py +12 -3
  46. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_reqs.py +1 -1
  47. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_scripts.py +361 -0
  48. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_shutil.py +6 -0
  49. py2docfx/venv/basevenv/Lib/site-packages/setuptools/build_meta.py +25 -37
  50. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/bdist_egg.py +9 -11
  51. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/bdist_wheel.py +1 -1
  52. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/build_ext.py +29 -28
  53. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/develop.py +39 -179
  54. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/easy_install.py +17 -2352
  55. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/editable_wheel.py +14 -31
  56. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/egg_info.py +0 -2
  57. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/install.py +3 -55
  58. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/install_scripts.py +5 -11
  59. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/sdist.py +1 -1
  60. py2docfx/venv/basevenv/Lib/site-packages/setuptools/compat/py310.py +11 -0
  61. py2docfx/venv/basevenv/Lib/site-packages/setuptools/dist.py +10 -12
  62. py2docfx/venv/basevenv/Lib/site-packages/setuptools/installer.py +34 -29
  63. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/contexts.py +0 -14
  64. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/fixtures.py +235 -0
  65. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/integration/test_pbr.py +20 -0
  66. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_build_meta.py +0 -24
  67. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_develop.py +1 -64
  68. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_dist.py +2 -2
  69. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_dist_info.py +0 -63
  70. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_editable_install.py +15 -41
  71. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_egg_info.py +3 -2
  72. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_scripts.py +12 -0
  73. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_wheel.py +12 -36
  74. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_windows_wrappers.py +3 -4
  75. py2docfx/venv/basevenv/Lib/site-packages/setuptools/wheel.py +49 -24
  76. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/__init__.py +6 -0
  77. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/arabic_stemmer.py +798 -797
  78. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/armenian_stemmer.py +212 -213
  79. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/basestemmer.py +20 -54
  80. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/basque_stemmer.py +202 -228
  81. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/catalan_stemmer.py +370 -375
  82. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/danish_stemmer.py +63 -61
  83. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/dutch_porter_stemmer.py +466 -0
  84. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/dutch_stemmer.py +1217 -343
  85. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/english_stemmer.py +295 -264
  86. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/esperanto_stemmer.py +588 -0
  87. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/estonian_stemmer.py +850 -0
  88. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/finnish_stemmer.py +144 -143
  89. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/french_stemmer.py +308 -246
  90. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/german_stemmer.py +224 -167
  91. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/greek_stemmer.py +1314 -1313
  92. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/hindi_stemmer.py +39 -38
  93. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/hungarian_stemmer.py +231 -256
  94. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/indonesian_stemmer.py +61 -64
  95. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/irish_stemmer.py +101 -106
  96. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/italian_stemmer.py +272 -272
  97. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/lithuanian_stemmer.py +233 -240
  98. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/nepali_stemmer.py +108 -134
  99. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/norwegian_stemmer.py +108 -63
  100. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/porter_stemmer.py +101 -108
  101. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/portuguese_stemmer.py +241 -250
  102. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/romanian_stemmer.py +332 -296
  103. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/russian_stemmer.py +178 -179
  104. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/serbian_stemmer.py +2331 -2332
  105. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/spanish_stemmer.py +254 -259
  106. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/swedish_stemmer.py +143 -70
  107. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/tamil_stemmer.py +638 -1491
  108. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/turkish_stemmer.py +326 -292
  109. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/yiddish_stemmer.py +245 -246
  110. py2docfx/venv/basevenv/Lib/site-packages/urllib3/_version.py +2 -2
  111. py2docfx/venv/basevenv/Lib/site-packages/urllib3/connection.py +87 -38
  112. py2docfx/venv/basevenv/Lib/site-packages/urllib3/contrib/emscripten/fetch.py +20 -0
  113. py2docfx/venv/basevenv/Lib/site-packages/urllib3/poolmanager.py +17 -1
  114. py2docfx/venv/basevenv/Lib/site-packages/urllib3/response.py +53 -24
  115. py2docfx/venv/basevenv/Lib/site-packages/urllib3/util/request.py +12 -4
  116. py2docfx/venv/basevenv/Lib/site-packages/urllib3/util/ssl_.py +1 -1
  117. py2docfx/venv/venv1/Lib/site-packages/azure/core/_version.py +1 -1
  118. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/_base_async.py +1 -1
  119. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/_aiohttp.py +1 -1
  120. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/_base_async.py +2 -1
  121. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/_requests_asyncio.py +1 -1
  122. py2docfx/venv/venv1/Lib/site-packages/azure/core/rest/_aiohttp.py +2 -2
  123. py2docfx/venv/venv1/Lib/site-packages/azure/core/rest/_requests_asyncio.py +1 -1
  124. py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/opentelemetry.py +13 -1
  125. py2docfx/venv/venv1/Lib/site-packages/azure/core/utils/_pipeline_transport_rest_shared_async.py +2 -1
  126. py2docfx/venv/venv1/Lib/site-packages/azure/core/utils/_utils.py +1 -1
  127. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_constants.py +1 -0
  128. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/default.py +23 -2
  129. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/environment.py +12 -16
  130. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/service_fabric.py +22 -1
  131. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/user_password.py +10 -6
  132. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/vscode.py +13 -4
  133. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/auth_code_redirect_handler.py +3 -5
  134. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/msal_client.py +2 -1
  135. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_persistent_cache.py +3 -2
  136. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_version.py +1 -1
  137. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/azd_cli.py +1 -1
  138. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/azure_cli.py +1 -1
  139. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/azure_powershell.py +1 -1
  140. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/chained.py +1 -1
  141. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/default.py +22 -2
  142. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/environment.py +2 -2
  143. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/service_fabric.py +17 -1
  144. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/vscode.py +4 -4
  145. py2docfx/venv/venv1/Lib/site-packages/certifi/__init__.py +1 -1
  146. py2docfx/venv/venv1/Lib/site-packages/certifi/core.py +1 -32
  147. py2docfx/venv/venv1/Lib/site-packages/charset_normalizer/cli/__main__.py +62 -2
  148. py2docfx/venv/venv1/Lib/site-packages/charset_normalizer/constant.py +17 -0
  149. py2docfx/venv/venv1/Lib/site-packages/charset_normalizer/legacy.py +1 -3
  150. py2docfx/venv/venv1/Lib/site-packages/charset_normalizer/md.py +19 -14
  151. py2docfx/venv/venv1/Lib/site-packages/charset_normalizer/utils.py +6 -0
  152. py2docfx/venv/venv1/Lib/site-packages/charset_normalizer/version.py +1 -1
  153. py2docfx/venv/venv1/Lib/site-packages/cryptography/__about__.py +2 -2
  154. py2docfx/venv/venv1/Lib/site-packages/cryptography/__init__.py +2 -2
  155. py2docfx/venv/venv1/Lib/site-packages/cryptography/fernet.py +2 -1
  156. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/_oid.py +35 -2
  157. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/backends/openssl/backend.py +33 -10
  158. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/__init__.pyi +14 -5
  159. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/ocsp.pyi +2 -2
  160. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/__init__.pyi +3 -0
  161. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/aead.pyi +49 -45
  162. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/ciphers.pyi +2 -2
  163. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/ed25519.pyi +2 -1
  164. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/ed448.pyi +2 -1
  165. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/hashes.pyi +10 -1
  166. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/hmac.pyi +3 -2
  167. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/kdf.pyi +8 -2
  168. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/keys.pyi +3 -2
  169. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/poly1305.pyi +6 -4
  170. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/x25519.pyi +2 -1
  171. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/x448.pyi +2 -1
  172. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/pkcs12.pyi +9 -3
  173. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/pkcs7.pyi +7 -6
  174. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/test_support.pyi +2 -1
  175. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/x509.pyi +79 -12
  176. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/openssl/_conditional.py +9 -1
  177. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/openssl/binding.py +2 -1
  178. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/decrepit/ciphers/algorithms.py +5 -0
  179. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/_cipheralgorithm.py +4 -2
  180. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/_serialization.py +1 -2
  181. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/dh.py +12 -0
  182. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/dsa.py +16 -3
  183. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/ec.py +47 -3
  184. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/ed25519.py +16 -3
  185. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/ed448.py +16 -3
  186. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/rsa.py +14 -0
  187. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/x25519.py +14 -1
  188. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/x448.py +14 -1
  189. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/ciphers/algorithms.py +6 -6
  190. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/ciphers/base.py +5 -4
  191. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/ciphers/modes.py +18 -18
  192. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/hashes.py +5 -1
  193. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/kdf/concatkdf.py +5 -4
  194. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/kdf/hkdf.py +4 -4
  195. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/kdf/kbkdf.py +7 -4
  196. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/kdf/pbkdf2.py +1 -1
  197. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/kdf/x963kdf.py +1 -1
  198. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/padding.py +7 -121
  199. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/serialization/__init__.py +2 -0
  200. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/serialization/pkcs12.py +21 -1
  201. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/serialization/pkcs7.py +48 -6
  202. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/serialization/ssh.py +68 -18
  203. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/twofactor/hotp.py +3 -2
  204. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/twofactor/totp.py +2 -1
  205. py2docfx/venv/venv1/Lib/site-packages/cryptography/utils.py +15 -3
  206. py2docfx/venv/venv1/Lib/site-packages/cryptography/x509/__init__.py +3 -0
  207. py2docfx/venv/venv1/Lib/site-packages/cryptography/x509/base.py +39 -6
  208. py2docfx/venv/venv1/Lib/site-packages/cryptography/x509/extensions.py +100 -49
  209. py2docfx/venv/venv1/Lib/site-packages/cryptography/x509/name.py +27 -15
  210. py2docfx/venv/venv1/Lib/site-packages/cryptography/x509/ocsp.py +60 -25
  211. py2docfx/venv/venv1/Lib/site-packages/cryptography/x509/oid.py +2 -0
  212. py2docfx/venv/venv1/Lib/site-packages/cryptography/x509/verification.py +6 -0
  213. py2docfx/venv/venv1/Lib/site-packages/google/api_core/bidi.py +17 -4
  214. py2docfx/venv/venv1/Lib/site-packages/google/api_core/client_info.py +6 -0
  215. py2docfx/venv/venv1/Lib/site-packages/google/api_core/gapic_v1/client_info.py +1 -0
  216. py2docfx/venv/venv1/Lib/site-packages/google/api_core/retry/retry_base.py +13 -4
  217. py2docfx/venv/venv1/Lib/site-packages/google/api_core/retry/retry_streaming.py +7 -6
  218. py2docfx/venv/venv1/Lib/site-packages/google/api_core/retry/retry_streaming_async.py +8 -5
  219. py2docfx/venv/venv1/Lib/site-packages/google/api_core/retry/retry_unary.py +7 -6
  220. py2docfx/venv/venv1/Lib/site-packages/google/api_core/retry/retry_unary_async.py +7 -6
  221. py2docfx/venv/venv1/Lib/site-packages/google/api_core/version.py +1 -1
  222. py2docfx/venv/venv1/Lib/site-packages/google/auth/_default.py +2 -36
  223. py2docfx/venv/venv1/Lib/site-packages/google/auth/_helpers.py +240 -0
  224. py2docfx/venv/venv1/Lib/site-packages/google/auth/aio/_helpers.py +62 -0
  225. py2docfx/venv/venv1/Lib/site-packages/google/auth/aio/transport/aiohttp.py +6 -0
  226. py2docfx/venv/venv1/Lib/site-packages/google/auth/compute_engine/_metadata.py +5 -1
  227. py2docfx/venv/venv1/Lib/site-packages/google/auth/compute_engine/credentials.py +2 -1
  228. py2docfx/venv/venv1/Lib/site-packages/google/auth/identity_pool.py +91 -2
  229. py2docfx/venv/venv1/Lib/site-packages/google/auth/impersonated_credentials.py +75 -0
  230. py2docfx/venv/venv1/Lib/site-packages/google/auth/transport/__init__.py +1 -0
  231. py2docfx/venv/venv1/Lib/site-packages/google/auth/transport/_aiohttp_requests.py +8 -1
  232. py2docfx/venv/venv1/Lib/site-packages/google/auth/transport/_http_client.py +3 -1
  233. py2docfx/venv/venv1/Lib/site-packages/google/auth/transport/requests.py +4 -1
  234. py2docfx/venv/venv1/Lib/site-packages/google/auth/transport/urllib3.py +15 -5
  235. py2docfx/venv/venv1/Lib/site-packages/google/auth/version.py +1 -1
  236. py2docfx/venv/venv1/Lib/site-packages/google/oauth2/id_token.py +12 -0
  237. py2docfx/venv/venv1/Lib/site-packages/google/oauth2/webauthn_types.py +1 -1
  238. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/__init__.py +1 -1
  239. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/any.py +15 -1
  240. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/any_pb2.py +3 -3
  241. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/api_pb2.py +3 -3
  242. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/compiler/plugin_pb2.py +3 -3
  243. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/descriptor.py +15 -2
  244. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/descriptor_pb2.py +258 -113
  245. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/descriptor_pool.py +22 -8
  246. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/duration_pb2.py +3 -3
  247. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/empty_pb2.py +3 -3
  248. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/field_mask_pb2.py +3 -3
  249. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/decoder.py +106 -23
  250. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/field_mask.py +3 -1
  251. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/python_edition_defaults.py +1 -1
  252. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/python_message.py +21 -18
  253. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/testing_refleaks.py +8 -2
  254. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/well_known_types.py +60 -43
  255. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/json_format.py +4 -5
  256. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/message_factory.py +16 -0
  257. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/runtime_version.py +2 -2
  258. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/source_context_pb2.py +3 -3
  259. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/struct_pb2.py +3 -3
  260. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/text_format.py +11 -7
  261. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/timestamp_pb2.py +3 -3
  262. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/type_pb2.py +3 -3
  263. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/wrappers_pb2.py +3 -3
  264. py2docfx/venv/venv1/Lib/site-packages/google/rpc/error_details_pb2.py +29 -23
  265. py2docfx/venv/venv1/Lib/site-packages/google/rpc/error_details_pb2.pyi +41 -2
  266. py2docfx/venv/venv1/Lib/site-packages/msal/application.py +1 -0
  267. py2docfx/venv/venv1/Lib/site-packages/msal/individual_cache.py +9 -5
  268. py2docfx/venv/venv1/Lib/site-packages/msal/managed_identity.py +4 -5
  269. py2docfx/venv/venv1/Lib/site-packages/msal/sku.py +1 -1
  270. py2docfx/venv/venv1/Lib/site-packages/msal/throttled_http_client.py +58 -30
  271. py2docfx/venv/venv1/Lib/site-packages/opencensus/__init__.py +1 -1
  272. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/__init__.py +1 -1
  273. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/__init__.py +1 -1
  274. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/common/__init__.py +138 -138
  275. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/common/exporter.py +93 -93
  276. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/common/processor.py +63 -63
  277. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/common/protocol.py +206 -206
  278. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/common/storage.py +205 -205
  279. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/common/transport.py +355 -355
  280. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/common/utils.py +79 -79
  281. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/common/version.py +15 -15
  282. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/log_exporter/__init__.py +314 -314
  283. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/metrics_exporter/__init__.py +190 -190
  284. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/metrics_exporter/standard_metrics/__init__.py +62 -62
  285. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/metrics_exporter/standard_metrics/cpu.py +50 -50
  286. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/metrics_exporter/standard_metrics/http_requests.py +176 -176
  287. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/metrics_exporter/standard_metrics/memory.py +42 -42
  288. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/metrics_exporter/standard_metrics/process.py +87 -87
  289. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/statsbeat/__init__.py +1 -1
  290. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/statsbeat/state.py +50 -50
  291. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/statsbeat/statsbeat.py +100 -100
  292. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/statsbeat/statsbeat_metrics.py +480 -480
  293. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/trace_exporter/__init__.py +236 -236
  294. py2docfx/venv/venv1/Lib/site-packages/packaging/__init__.py +1 -1
  295. py2docfx/venv/venv1/Lib/site-packages/packaging/_elffile.py +1 -2
  296. py2docfx/venv/venv1/Lib/site-packages/packaging/_manylinux.py +1 -2
  297. py2docfx/venv/venv1/Lib/site-packages/packaging/_parser.py +1 -2
  298. py2docfx/venv/venv1/Lib/site-packages/packaging/_tokenizer.py +5 -4
  299. py2docfx/venv/venv1/Lib/site-packages/packaging/licenses/__init__.py +1 -1
  300. py2docfx/venv/venv1/Lib/site-packages/packaging/markers.py +53 -22
  301. py2docfx/venv/venv1/Lib/site-packages/packaging/metadata.py +1 -2
  302. py2docfx/venv/venv1/Lib/site-packages/packaging/specifiers.py +1 -2
  303. py2docfx/venv/venv1/Lib/site-packages/packaging/tags.py +39 -0
  304. py2docfx/venv/venv1/Lib/site-packages/pkg_resources/__init__.py +6 -7
  305. py2docfx/venv/venv1/Lib/site-packages/requests/__version__.py +2 -2
  306. py2docfx/venv/venv1/Lib/site-packages/requests/compat.py +12 -0
  307. py2docfx/venv/venv1/Lib/site-packages/requests/models.py +3 -1
  308. py2docfx/venv/venv1/Lib/site-packages/requests/utils.py +6 -16
  309. py2docfx/venv/venv1/Lib/site-packages/rsa/__init__.py +2 -2
  310. py2docfx/venv/venv1/Lib/site-packages/rsa/asn1.py +52 -52
  311. py2docfx/venv/venv1/Lib/site-packages/rsa/cli.py +321 -321
  312. py2docfx/venv/venv1/Lib/site-packages/rsa/common.py +184 -184
  313. py2docfx/venv/venv1/Lib/site-packages/rsa/core.py +53 -53
  314. py2docfx/venv/venv1/Lib/site-packages/rsa/key.py +858 -858
  315. py2docfx/venv/venv1/Lib/site-packages/rsa/parallel.py +96 -96
  316. py2docfx/venv/venv1/Lib/site-packages/rsa/pem.py +134 -134
  317. py2docfx/venv/venv1/Lib/site-packages/rsa/pkcs1.py +485 -485
  318. py2docfx/venv/venv1/Lib/site-packages/rsa/pkcs1_v2.py +100 -100
  319. py2docfx/venv/venv1/Lib/site-packages/rsa/prime.py +198 -198
  320. py2docfx/venv/venv1/Lib/site-packages/rsa/py.typed +1 -1
  321. py2docfx/venv/venv1/Lib/site-packages/rsa/randnum.py +95 -95
  322. py2docfx/venv/venv1/Lib/site-packages/rsa/transform.py +72 -72
  323. py2docfx/venv/venv1/Lib/site-packages/rsa/util.py +97 -97
  324. py2docfx/venv/venv1/Lib/site-packages/setuptools/__init__.py +0 -38
  325. py2docfx/venv/venv1/Lib/site-packages/setuptools/_discovery.py +33 -0
  326. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/command/build_scripts.py +1 -1
  327. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/command/config.py +0 -2
  328. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/compilers/C/tests/test_unix.py +63 -0
  329. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/compilers/C/unix.py +5 -6
  330. py2docfx/venv/venv1/Lib/site-packages/setuptools/_entry_points.py +4 -0
  331. py2docfx/venv/venv1/Lib/site-packages/setuptools/_normalization.py +0 -2
  332. py2docfx/venv/venv1/Lib/site-packages/setuptools/_path.py +12 -3
  333. py2docfx/venv/venv1/Lib/site-packages/setuptools/_reqs.py +1 -1
  334. py2docfx/venv/venv1/Lib/site-packages/setuptools/_scripts.py +361 -0
  335. py2docfx/venv/venv1/Lib/site-packages/setuptools/_shutil.py +6 -0
  336. py2docfx/venv/venv1/Lib/site-packages/setuptools/build_meta.py +25 -37
  337. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/bdist_egg.py +9 -11
  338. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/bdist_wheel.py +1 -1
  339. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/build_ext.py +29 -28
  340. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/develop.py +39 -179
  341. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/easy_install.py +17 -2352
  342. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/editable_wheel.py +14 -31
  343. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/egg_info.py +0 -2
  344. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/install.py +3 -55
  345. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/install_scripts.py +5 -11
  346. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/sdist.py +1 -1
  347. py2docfx/venv/venv1/Lib/site-packages/setuptools/compat/py310.py +11 -0
  348. py2docfx/venv/venv1/Lib/site-packages/setuptools/dist.py +10 -12
  349. py2docfx/venv/venv1/Lib/site-packages/setuptools/installer.py +34 -29
  350. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/contexts.py +0 -14
  351. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/fixtures.py +235 -0
  352. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/integration/test_pbr.py +20 -0
  353. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_build_meta.py +0 -24
  354. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_develop.py +1 -64
  355. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_dist.py +2 -2
  356. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_dist_info.py +0 -63
  357. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_editable_install.py +15 -41
  358. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_egg_info.py +3 -2
  359. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_scripts.py +12 -0
  360. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_wheel.py +12 -36
  361. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_windows_wrappers.py +3 -4
  362. py2docfx/venv/venv1/Lib/site-packages/setuptools/wheel.py +49 -24
  363. py2docfx/venv/venv1/Lib/site-packages/typing_extensions.py +357 -703
  364. py2docfx/venv/venv1/Lib/site-packages/urllib3/_version.py +2 -2
  365. py2docfx/venv/venv1/Lib/site-packages/urllib3/connection.py +87 -38
  366. py2docfx/venv/venv1/Lib/site-packages/urllib3/contrib/emscripten/fetch.py +20 -0
  367. py2docfx/venv/venv1/Lib/site-packages/urllib3/poolmanager.py +17 -1
  368. py2docfx/venv/venv1/Lib/site-packages/urllib3/response.py +53 -24
  369. py2docfx/venv/venv1/Lib/site-packages/urllib3/util/request.py +12 -4
  370. py2docfx/venv/venv1/Lib/site-packages/urllib3/util/ssl_.py +1 -1
  371. {py2docfx-0.1.16.dev2064350.dist-info → py2docfx-0.1.17.dist-info}/METADATA +1 -1
  372. {py2docfx-0.1.16.dev2064350.dist-info → py2docfx-0.1.17.dist-info}/RECORD +374 -372
  373. {py2docfx-0.1.16.dev2064350.dist-info → py2docfx-0.1.17.dist-info}/WHEEL +1 -1
  374. py2docfx/venv/basevenv/Lib/site-packages/setuptools/package_index.py +0 -1137
  375. py2docfx/venv/basevenv/Lib/site-packages/setuptools/sandbox.py +0 -536
  376. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/server.py +0 -86
  377. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_easy_install.py +0 -1476
  378. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_packageindex.py +0 -267
  379. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_sandbox.py +0 -134
  380. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/application.py +0 -119
  381. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/application.py +0 -121
  382. py2docfx/venv/venv1/Lib/site-packages/setuptools/package_index.py +0 -1137
  383. py2docfx/venv/venv1/Lib/site-packages/setuptools/sandbox.py +0 -536
  384. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/server.py +0 -86
  385. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_easy_install.py +0 -1476
  386. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_packageindex.py +0 -267
  387. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_sandbox.py +0 -134
  388. {py2docfx-0.1.16.dev2064350.dist-info → py2docfx-0.1.17.dist-info}/top_level.txt +0 -0
@@ -580,11 +580,21 @@ class DescriptorPool(object):
580
580
  if self._descriptor_db and hasattr(
581
581
  self._descriptor_db, 'FindAllExtensionNumbers'):
582
582
  full_name = message_descriptor.full_name
583
- all_numbers = self._descriptor_db.FindAllExtensionNumbers(full_name)
584
- for number in all_numbers:
585
- if number in self._extensions_by_number[message_descriptor]:
586
- continue
587
- self._TryLoadExtensionFromDB(message_descriptor, number)
583
+ try:
584
+ all_numbers = self._descriptor_db.FindAllExtensionNumbers(full_name)
585
+ except:
586
+ pass
587
+ else:
588
+ if isinstance(all_numbers, list):
589
+ for number in all_numbers:
590
+ if number in self._extensions_by_number[message_descriptor]:
591
+ continue
592
+ self._TryLoadExtensionFromDB(message_descriptor, number)
593
+ else:
594
+ warnings.warn(
595
+ 'FindAllExtensionNumbers() on fall back DB must return a list,'
596
+ ' not {0}'.format(type(all_numbers))
597
+ )
588
598
 
589
599
  return list(self._extensions_by_number[message_descriptor].values())
590
600
 
@@ -603,8 +613,13 @@ class DescriptorPool(object):
603
613
  return
604
614
 
605
615
  full_name = message_descriptor.full_name
606
- file_proto = self._descriptor_db.FindFileContainingExtension(
607
- full_name, number)
616
+ file_proto = None
617
+ try:
618
+ file_proto = self._descriptor_db.FindFileContainingExtension(
619
+ full_name, number
620
+ )
621
+ except:
622
+ return
608
623
 
609
624
  if file_proto is None:
610
625
  return
@@ -668,7 +683,6 @@ class DescriptorPool(object):
668
683
  if not isinstance(defaults, descriptor_pb2.FeatureSetDefaults):
669
684
  raise TypeError('SetFeatureSetDefaults called with invalid type')
670
685
 
671
-
672
686
  if defaults.minimum_edition > defaults.maximum_edition:
673
687
  raise ValueError(
674
688
  'Invalid edition range %s to %s'
@@ -2,7 +2,7 @@
2
2
  # Generated by the protocol buffer compiler. DO NOT EDIT!
3
3
  # NO CHECKED-IN PROTOBUF GENCODE
4
4
  # source: google/protobuf/duration.proto
5
- # Protobuf Python Version: 6.30.2
5
+ # Protobuf Python Version: 6.31.1
6
6
  """Generated protocol buffer code."""
7
7
  from google.protobuf import descriptor as _descriptor
8
8
  from google.protobuf import descriptor_pool as _descriptor_pool
@@ -12,8 +12,8 @@ from google.protobuf.internal import builder as _builder
12
12
  _runtime_version.ValidateProtobufRuntimeVersion(
13
13
  _runtime_version.Domain.PUBLIC,
14
14
  6,
15
- 30,
16
- 2,
15
+ 31,
16
+ 1,
17
17
  '',
18
18
  'google/protobuf/duration.proto'
19
19
  )
@@ -2,7 +2,7 @@
2
2
  # Generated by the protocol buffer compiler. DO NOT EDIT!
3
3
  # NO CHECKED-IN PROTOBUF GENCODE
4
4
  # source: google/protobuf/empty.proto
5
- # Protobuf Python Version: 6.30.2
5
+ # Protobuf Python Version: 6.31.1
6
6
  """Generated protocol buffer code."""
7
7
  from google.protobuf import descriptor as _descriptor
8
8
  from google.protobuf import descriptor_pool as _descriptor_pool
@@ -12,8 +12,8 @@ from google.protobuf.internal import builder as _builder
12
12
  _runtime_version.ValidateProtobufRuntimeVersion(
13
13
  _runtime_version.Domain.PUBLIC,
14
14
  6,
15
- 30,
16
- 2,
15
+ 31,
16
+ 1,
17
17
  '',
18
18
  'google/protobuf/empty.proto'
19
19
  )
@@ -2,7 +2,7 @@
2
2
  # Generated by the protocol buffer compiler. DO NOT EDIT!
3
3
  # NO CHECKED-IN PROTOBUF GENCODE
4
4
  # source: google/protobuf/field_mask.proto
5
- # Protobuf Python Version: 6.30.2
5
+ # Protobuf Python Version: 6.31.1
6
6
  """Generated protocol buffer code."""
7
7
  from google.protobuf import descriptor as _descriptor
8
8
  from google.protobuf import descriptor_pool as _descriptor_pool
@@ -12,8 +12,8 @@ from google.protobuf.internal import builder as _builder
12
12
  _runtime_version.ValidateProtobufRuntimeVersion(
13
13
  _runtime_version.Domain.PUBLIC,
14
14
  6,
15
- 30,
16
- 2,
15
+ 31,
16
+ 1,
17
17
  '',
18
18
  'google/protobuf/field_mask.proto'
19
19
  )
@@ -219,7 +219,10 @@ def _SimpleDecoder(wire_type, decode_value):
219
219
  clear_if_default=False):
220
220
  if is_packed:
221
221
  local_DecodeVarint = _DecodeVarint
222
- def DecodePackedField(buffer, pos, end, message, field_dict):
222
+ def DecodePackedField(
223
+ buffer, pos, end, message, field_dict, current_depth=0
224
+ ):
225
+ del current_depth # unused
223
226
  value = field_dict.get(key)
224
227
  if value is None:
225
228
  value = field_dict.setdefault(key, new_default(message))
@@ -234,11 +237,15 @@ def _SimpleDecoder(wire_type, decode_value):
234
237
  del value[-1] # Discard corrupt value.
235
238
  raise _DecodeError('Packed element was truncated.')
236
239
  return pos
240
+
237
241
  return DecodePackedField
238
242
  elif is_repeated:
239
243
  tag_bytes = encoder.TagBytes(field_number, wire_type)
240
244
  tag_len = len(tag_bytes)
241
- def DecodeRepeatedField(buffer, pos, end, message, field_dict):
245
+ def DecodeRepeatedField(
246
+ buffer, pos, end, message, field_dict, current_depth=0
247
+ ):
248
+ del current_depth # unused
242
249
  value = field_dict.get(key)
243
250
  if value is None:
244
251
  value = field_dict.setdefault(key, new_default(message))
@@ -253,9 +260,12 @@ def _SimpleDecoder(wire_type, decode_value):
253
260
  if new_pos > end:
254
261
  raise _DecodeError('Truncated message.')
255
262
  return new_pos
263
+
256
264
  return DecodeRepeatedField
257
265
  else:
258
- def DecodeField(buffer, pos, end, message, field_dict):
266
+
267
+ def DecodeField(buffer, pos, end, message, field_dict, current_depth=0):
268
+ del current_depth # unused
259
269
  (new_value, pos) = decode_value(buffer, pos)
260
270
  if pos > end:
261
271
  raise _DecodeError('Truncated message.')
@@ -264,6 +274,7 @@ def _SimpleDecoder(wire_type, decode_value):
264
274
  else:
265
275
  field_dict[key] = new_value
266
276
  return pos
277
+
267
278
  return DecodeField
268
279
 
269
280
  return SpecificDecoder
@@ -399,7 +410,9 @@ def EnumDecoder(field_number, is_repeated, is_packed, key, new_default,
399
410
  enum_type = key.enum_type
400
411
  if is_packed:
401
412
  local_DecodeVarint = _DecodeVarint
402
- def DecodePackedField(buffer, pos, end, message, field_dict):
413
+ def DecodePackedField(
414
+ buffer, pos, end, message, field_dict, current_depth=0
415
+ ):
403
416
  """Decode serialized packed enum to its value and a new position.
404
417
 
405
418
  Args:
@@ -412,6 +425,7 @@ def EnumDecoder(field_number, is_repeated, is_packed, key, new_default,
412
425
  Returns:
413
426
  int, new position in serialized data.
414
427
  """
428
+ del current_depth # unused
415
429
  value = field_dict.get(key)
416
430
  if value is None:
417
431
  value = field_dict.setdefault(key, new_default(message))
@@ -442,11 +456,14 @@ def EnumDecoder(field_number, is_repeated, is_packed, key, new_default,
442
456
  # pylint: enable=protected-access
443
457
  raise _DecodeError('Packed element was truncated.')
444
458
  return pos
459
+
445
460
  return DecodePackedField
446
461
  elif is_repeated:
447
462
  tag_bytes = encoder.TagBytes(field_number, wire_format.WIRETYPE_VARINT)
448
463
  tag_len = len(tag_bytes)
449
- def DecodeRepeatedField(buffer, pos, end, message, field_dict):
464
+ def DecodeRepeatedField(
465
+ buffer, pos, end, message, field_dict, current_depth=0
466
+ ):
450
467
  """Decode serialized repeated enum to its value and a new position.
451
468
 
452
469
  Args:
@@ -459,6 +476,7 @@ def EnumDecoder(field_number, is_repeated, is_packed, key, new_default,
459
476
  Returns:
460
477
  int, new position in serialized data.
461
478
  """
479
+ del current_depth # unused
462
480
  value = field_dict.get(key)
463
481
  if value is None:
464
482
  value = field_dict.setdefault(key, new_default(message))
@@ -481,9 +499,11 @@ def EnumDecoder(field_number, is_repeated, is_packed, key, new_default,
481
499
  if new_pos > end:
482
500
  raise _DecodeError('Truncated message.')
483
501
  return new_pos
502
+
484
503
  return DecodeRepeatedField
485
504
  else:
486
- def DecodeField(buffer, pos, end, message, field_dict):
505
+
506
+ def DecodeField(buffer, pos, end, message, field_dict, current_depth=0):
487
507
  """Decode serialized repeated enum to its value and a new position.
488
508
 
489
509
  Args:
@@ -496,6 +516,7 @@ def EnumDecoder(field_number, is_repeated, is_packed, key, new_default,
496
516
  Returns:
497
517
  int, new position in serialized data.
498
518
  """
519
+ del current_depth # unused
499
520
  value_start_pos = pos
500
521
  (enum_value, pos) = _DecodeSignedVarint32(buffer, pos)
501
522
  if pos > end:
@@ -515,6 +536,7 @@ def EnumDecoder(field_number, is_repeated, is_packed, key, new_default,
515
536
  (tag_bytes, buffer[value_start_pos:pos].tobytes()))
516
537
  # pylint: enable=protected-access
517
538
  return pos
539
+
518
540
  return DecodeField
519
541
 
520
542
 
@@ -573,7 +595,10 @@ def StringDecoder(field_number, is_repeated, is_packed, key, new_default,
573
595
  tag_bytes = encoder.TagBytes(field_number,
574
596
  wire_format.WIRETYPE_LENGTH_DELIMITED)
575
597
  tag_len = len(tag_bytes)
576
- def DecodeRepeatedField(buffer, pos, end, message, field_dict):
598
+ def DecodeRepeatedField(
599
+ buffer, pos, end, message, field_dict, current_depth=0
600
+ ):
601
+ del current_depth # unused
577
602
  value = field_dict.get(key)
578
603
  if value is None:
579
604
  value = field_dict.setdefault(key, new_default(message))
@@ -588,9 +613,12 @@ def StringDecoder(field_number, is_repeated, is_packed, key, new_default,
588
613
  if buffer[new_pos:pos] != tag_bytes or new_pos == end:
589
614
  # Prediction failed. Return.
590
615
  return new_pos
616
+
591
617
  return DecodeRepeatedField
592
618
  else:
593
- def DecodeField(buffer, pos, end, message, field_dict):
619
+
620
+ def DecodeField(buffer, pos, end, message, field_dict, current_depth=0):
621
+ del current_depth # unused
594
622
  (size, pos) = local_DecodeVarint(buffer, pos)
595
623
  new_pos = pos + size
596
624
  if new_pos > end:
@@ -600,6 +628,7 @@ def StringDecoder(field_number, is_repeated, is_packed, key, new_default,
600
628
  else:
601
629
  field_dict[key] = _ConvertToUnicode(buffer[pos:new_pos])
602
630
  return new_pos
631
+
603
632
  return DecodeField
604
633
 
605
634
 
@@ -614,7 +643,10 @@ def BytesDecoder(field_number, is_repeated, is_packed, key, new_default,
614
643
  tag_bytes = encoder.TagBytes(field_number,
615
644
  wire_format.WIRETYPE_LENGTH_DELIMITED)
616
645
  tag_len = len(tag_bytes)
617
- def DecodeRepeatedField(buffer, pos, end, message, field_dict):
646
+ def DecodeRepeatedField(
647
+ buffer, pos, end, message, field_dict, current_depth=0
648
+ ):
649
+ del current_depth # unused
618
650
  value = field_dict.get(key)
619
651
  if value is None:
620
652
  value = field_dict.setdefault(key, new_default(message))
@@ -629,9 +661,12 @@ def BytesDecoder(field_number, is_repeated, is_packed, key, new_default,
629
661
  if buffer[new_pos:pos] != tag_bytes or new_pos == end:
630
662
  # Prediction failed. Return.
631
663
  return new_pos
664
+
632
665
  return DecodeRepeatedField
633
666
  else:
634
- def DecodeField(buffer, pos, end, message, field_dict):
667
+
668
+ def DecodeField(buffer, pos, end, message, field_dict, current_depth=0):
669
+ del current_depth # unused
635
670
  (size, pos) = local_DecodeVarint(buffer, pos)
636
671
  new_pos = pos + size
637
672
  if new_pos > end:
@@ -641,6 +676,7 @@ def BytesDecoder(field_number, is_repeated, is_packed, key, new_default,
641
676
  else:
642
677
  field_dict[key] = buffer[pos:new_pos].tobytes()
643
678
  return new_pos
679
+
644
680
  return DecodeField
645
681
 
646
682
 
@@ -656,7 +692,9 @@ def GroupDecoder(field_number, is_repeated, is_packed, key, new_default):
656
692
  tag_bytes = encoder.TagBytes(field_number,
657
693
  wire_format.WIRETYPE_START_GROUP)
658
694
  tag_len = len(tag_bytes)
659
- def DecodeRepeatedField(buffer, pos, end, message, field_dict):
695
+ def DecodeRepeatedField(
696
+ buffer, pos, end, message, field_dict, current_depth=0
697
+ ):
660
698
  value = field_dict.get(key)
661
699
  if value is None:
662
700
  value = field_dict.setdefault(key, new_default(message))
@@ -665,7 +703,13 @@ def GroupDecoder(field_number, is_repeated, is_packed, key, new_default):
665
703
  if value is None:
666
704
  value = field_dict.setdefault(key, new_default(message))
667
705
  # Read sub-message.
668
- pos = value.add()._InternalParse(buffer, pos, end)
706
+ current_depth += 1
707
+ if current_depth > _recursion_limit:
708
+ raise _DecodeError(
709
+ 'Error parsing message: too many levels of nesting.'
710
+ )
711
+ pos = value.add()._InternalParse(buffer, pos, end, current_depth)
712
+ current_depth -= 1
669
713
  # Read end tag.
670
714
  new_pos = pos+end_tag_len
671
715
  if buffer[pos:new_pos] != end_tag_bytes or new_pos > end:
@@ -675,19 +719,26 @@ def GroupDecoder(field_number, is_repeated, is_packed, key, new_default):
675
719
  if buffer[new_pos:pos] != tag_bytes or new_pos == end:
676
720
  # Prediction failed. Return.
677
721
  return new_pos
722
+
678
723
  return DecodeRepeatedField
679
724
  else:
680
- def DecodeField(buffer, pos, end, message, field_dict):
725
+
726
+ def DecodeField(buffer, pos, end, message, field_dict, current_depth=0):
681
727
  value = field_dict.get(key)
682
728
  if value is None:
683
729
  value = field_dict.setdefault(key, new_default(message))
684
730
  # Read sub-message.
685
- pos = value._InternalParse(buffer, pos, end)
731
+ current_depth += 1
732
+ if current_depth > _recursion_limit:
733
+ raise _DecodeError('Error parsing message: too many levels of nesting.')
734
+ pos = value._InternalParse(buffer, pos, end, current_depth)
735
+ current_depth -= 1
686
736
  # Read end tag.
687
737
  new_pos = pos+end_tag_len
688
738
  if buffer[pos:new_pos] != end_tag_bytes or new_pos > end:
689
739
  raise _DecodeError('Missing group end tag.')
690
740
  return new_pos
741
+
691
742
  return DecodeField
692
743
 
693
744
 
@@ -701,7 +752,9 @@ def MessageDecoder(field_number, is_repeated, is_packed, key, new_default):
701
752
  tag_bytes = encoder.TagBytes(field_number,
702
753
  wire_format.WIRETYPE_LENGTH_DELIMITED)
703
754
  tag_len = len(tag_bytes)
704
- def DecodeRepeatedField(buffer, pos, end, message, field_dict):
755
+ def DecodeRepeatedField(
756
+ buffer, pos, end, message, field_dict, current_depth=0
757
+ ):
705
758
  value = field_dict.get(key)
706
759
  if value is None:
707
760
  value = field_dict.setdefault(key, new_default(message))
@@ -712,18 +765,29 @@ def MessageDecoder(field_number, is_repeated, is_packed, key, new_default):
712
765
  if new_pos > end:
713
766
  raise _DecodeError('Truncated message.')
714
767
  # Read sub-message.
715
- if value.add()._InternalParse(buffer, pos, new_pos) != new_pos:
768
+ current_depth += 1
769
+ if current_depth > _recursion_limit:
770
+ raise _DecodeError(
771
+ 'Error parsing message: too many levels of nesting.'
772
+ )
773
+ if (
774
+ value.add()._InternalParse(buffer, pos, new_pos, current_depth)
775
+ != new_pos
776
+ ):
716
777
  # The only reason _InternalParse would return early is if it
717
778
  # encountered an end-group tag.
718
779
  raise _DecodeError('Unexpected end-group tag.')
780
+ current_depth -= 1
719
781
  # Predict that the next tag is another copy of the same repeated field.
720
782
  pos = new_pos + tag_len
721
783
  if buffer[new_pos:pos] != tag_bytes or new_pos == end:
722
784
  # Prediction failed. Return.
723
785
  return new_pos
786
+
724
787
  return DecodeRepeatedField
725
788
  else:
726
- def DecodeField(buffer, pos, end, message, field_dict):
789
+
790
+ def DecodeField(buffer, pos, end, message, field_dict, current_depth=0):
727
791
  value = field_dict.get(key)
728
792
  if value is None:
729
793
  value = field_dict.setdefault(key, new_default(message))
@@ -733,11 +797,16 @@ def MessageDecoder(field_number, is_repeated, is_packed, key, new_default):
733
797
  if new_pos > end:
734
798
  raise _DecodeError('Truncated message.')
735
799
  # Read sub-message.
736
- if value._InternalParse(buffer, pos, new_pos) != new_pos:
800
+ current_depth += 1
801
+ if current_depth > _recursion_limit:
802
+ raise _DecodeError('Error parsing message: too many levels of nesting.')
803
+ if value._InternalParse(buffer, pos, new_pos, current_depth) != new_pos:
737
804
  # The only reason _InternalParse would return early is if it encountered
738
805
  # an end-group tag.
739
806
  raise _DecodeError('Unexpected end-group tag.')
807
+ current_depth -= 1
740
808
  return new_pos
809
+
741
810
  return DecodeField
742
811
 
743
812
 
@@ -887,7 +956,8 @@ def MapDecoder(field_descriptor, new_default, is_message_map):
887
956
  # Can't read _concrete_class yet; might not be initialized.
888
957
  message_type = field_descriptor.message_type
889
958
 
890
- def DecodeMap(buffer, pos, end, message, field_dict):
959
+ def DecodeMap(buffer, pos, end, message, field_dict, current_depth=0):
960
+ del current_depth # Unused.
891
961
  submsg = message_type._concrete_class()
892
962
  value = field_dict.get(key)
893
963
  if value is None:
@@ -930,9 +1000,16 @@ def _DecodeFixed32(buffer, pos):
930
1000
 
931
1001
  new_pos = pos + 4
932
1002
  return (struct.unpack('<I', buffer[pos:new_pos])[0], new_pos)
1003
+ DEFAULT_RECURSION_LIMIT = 100
1004
+ _recursion_limit = DEFAULT_RECURSION_LIMIT
1005
+
1006
+
1007
+ def SetRecursionLimit(new_limit):
1008
+ global _recursion_limit
1009
+ _recursion_limit = new_limit
933
1010
 
934
1011
 
935
- def _DecodeUnknownFieldSet(buffer, pos, end_pos=None):
1012
+ def _DecodeUnknownFieldSet(buffer, pos, end_pos=None, current_depth=0):
936
1013
  """Decode UnknownFieldSet. Returns the UnknownFieldSet and new position."""
937
1014
 
938
1015
  unknown_field_set = containers.UnknownFieldSet()
@@ -943,7 +1020,7 @@ def _DecodeUnknownFieldSet(buffer, pos, end_pos=None):
943
1020
  if wire_type == wire_format.WIRETYPE_END_GROUP:
944
1021
  break
945
1022
  (data, pos) = _DecodeUnknownField(
946
- buffer, pos, end_pos, field_number, wire_type
1023
+ buffer, pos, end_pos, field_number, wire_type, current_depth
947
1024
  )
948
1025
  # pylint: disable=protected-access
949
1026
  unknown_field_set._add(field_number, wire_type, data)
@@ -951,7 +1028,9 @@ def _DecodeUnknownFieldSet(buffer, pos, end_pos=None):
951
1028
  return (unknown_field_set, pos)
952
1029
 
953
1030
 
954
- def _DecodeUnknownField(buffer, pos, end_pos, field_number, wire_type):
1031
+ def _DecodeUnknownField(
1032
+ buffer, pos, end_pos, field_number, wire_type, current_depth=0
1033
+ ):
955
1034
  """Decode a unknown field. Returns the UnknownField and new position."""
956
1035
 
957
1036
  if wire_type == wire_format.WIRETYPE_VARINT:
@@ -968,7 +1047,11 @@ def _DecodeUnknownField(buffer, pos, end_pos, field_number, wire_type):
968
1047
  end_tag_bytes = encoder.TagBytes(
969
1048
  field_number, wire_format.WIRETYPE_END_GROUP
970
1049
  )
971
- data, pos = _DecodeUnknownFieldSet(buffer, pos, end_pos)
1050
+ current_depth += 1
1051
+ if current_depth >= _recursion_limit:
1052
+ raise _DecodeError('Error parsing message: too many levels of nesting.')
1053
+ data, pos = _DecodeUnknownFieldSet(buffer, pos, end_pos, current_depth)
1054
+ current_depth -= 1
972
1055
  # Check end tag.
973
1056
  if buffer[pos - len(end_tag_bytes) : pos] != end_tag_bytes:
974
1057
  raise _DecodeError('Missing group end tag.')
@@ -293,8 +293,10 @@ def _MergeMessage(
293
293
  destination.ClearField(_StrConvert(name))
294
294
  if source.HasField(name):
295
295
  getattr(destination, name).MergeFrom(getattr(source, name))
296
- else:
296
+ elif not field.has_presence or source.HasField(name):
297
297
  setattr(destination, name, getattr(source, name))
298
+ else:
299
+ destination.ClearField(_StrConvert(name))
298
300
 
299
301
 
300
302
  def _AddFieldPaths(node, prefix, field_mask):
@@ -2,4 +2,4 @@
2
2
  This file contains the serialized FeatureSetDefaults object corresponding to
3
3
  the Pure Python runtime. This is used for feature resolution under Editions.
4
4
  """
5
- _PROTOBUF_INTERNAL_PYTHON_EDITION_DEFAULTS = b"\n\025\030\204\007\"\000*\016\010\001\020\002\030\002 \003(\0010\0028\002\n\025\030\347\007\"\000*\016\010\002\020\001\030\001 \002(\0010\0018\002\n\025\030\350\007\"\014\010\001\020\001\030\001 \002(\0010\001*\0028\002 \346\007(\350\007"
5
+ _PROTOBUF_INTERNAL_PYTHON_EDITION_DEFAULTS = b"\n\027\030\204\007\"\000*\020\010\001\020\002\030\002 \003(\0010\0028\002@\001\n\027\030\347\007\"\000*\020\010\002\020\001\030\001 \002(\0010\0018\002@\001\n\027\030\350\007\"\014\010\001\020\001\030\001 \002(\0010\001*\0048\002@\001 \346\007(\350\007"
@@ -269,7 +269,6 @@ def _IsMessageMapField(field):
269
269
  return value_type.cpp_type == _FieldDescriptor.CPPTYPE_MESSAGE
270
270
 
271
271
  def _AttachFieldHelpers(cls, field_descriptor):
272
- is_repeated = field_descriptor.label == _FieldDescriptor.LABEL_REPEATED
273
272
  field_descriptor._default_constructor = _DefaultValueConstructorForField(
274
273
  field_descriptor
275
274
  )
@@ -282,7 +281,9 @@ def _AttachFieldHelpers(cls, field_descriptor):
282
281
  type_checkers.FIELD_TYPE_TO_WIRE_TYPE[field_descriptor.type], False
283
282
  )
284
283
 
285
- if is_repeated and wire_format.IsTypePackable(field_descriptor.type):
284
+ if field_descriptor.is_repeated and wire_format.IsTypePackable(
285
+ field_descriptor.type
286
+ ):
286
287
  # To support wire compatibility of adding packed = true, add a decoder for
287
288
  # packed values regardless of the field's options.
288
289
  AddFieldByTag(wire_format.WIRETYPE_LENGTH_DELIMITED, True)
@@ -291,7 +292,7 @@ def _AttachFieldHelpers(cls, field_descriptor):
291
292
  def _MaybeAddEncoder(cls, field_descriptor):
292
293
  if hasattr(field_descriptor, '_encoder'):
293
294
  return
294
- is_repeated = (field_descriptor.label == _FieldDescriptor.LABEL_REPEATED)
295
+ is_repeated = field_descriptor.is_repeated
295
296
  is_map_entry = _IsMapField(field_descriptor)
296
297
  is_packed = field_descriptor.is_packed
297
298
 
@@ -316,7 +317,7 @@ def _MaybeAddDecoder(cls, field_descriptor):
316
317
  if hasattr(field_descriptor, '_decoders'):
317
318
  return
318
319
 
319
- is_repeated = field_descriptor.label == _FieldDescriptor.LABEL_REPEATED
320
+ is_repeated = field_descriptor.is_repeated
320
321
  is_map_entry = _IsMapField(field_descriptor)
321
322
  helper_decoders = {}
322
323
 
@@ -387,7 +388,7 @@ def _AddEnumValues(descriptor, cls):
387
388
 
388
389
 
389
390
  def _GetInitializeDefaultForMap(field):
390
- if field.label != _FieldDescriptor.LABEL_REPEATED:
391
+ if not field.is_repeated:
391
392
  raise ValueError('map_entry set on non-repeated field %s' % (
392
393
  field.name))
393
394
  fields_by_name = field.message_type.fields_by_name
@@ -425,7 +426,7 @@ def _DefaultValueConstructorForField(field):
425
426
  if _IsMapField(field):
426
427
  return _GetInitializeDefaultForMap(field)
427
428
 
428
- if field.label == _FieldDescriptor.LABEL_REPEATED:
429
+ if field.is_repeated:
429
430
  if field.has_default_value and field.default_value != []:
430
431
  raise ValueError('Repeated field default value not empty list: %s' % (
431
432
  field.default_value))
@@ -517,7 +518,7 @@ def _AddInitMethod(message_descriptor, cls):
517
518
  if field_value is None:
518
519
  # field=None is the same as no field at all.
519
520
  continue
520
- if field.label == _FieldDescriptor.LABEL_REPEATED:
521
+ if field.is_repeated:
521
522
  field_copy = field._default_constructor(self)
522
523
  if field.cpp_type == _FieldDescriptor.CPPTYPE_MESSAGE: # Composite
523
524
  if _IsMapField(field):
@@ -636,7 +637,7 @@ def _AddPropertiesForField(field, cls):
636
637
  constant_name = field.name.upper() + '_FIELD_NUMBER'
637
638
  setattr(cls, constant_name, field.number)
638
639
 
639
- if field.label == _FieldDescriptor.LABEL_REPEATED:
640
+ if field.is_repeated:
640
641
  _AddPropertiesForRepeatedField(field, cls)
641
642
  elif field.cpp_type == _FieldDescriptor.CPPTYPE_MESSAGE:
642
643
  _AddPropertiesForNonRepeatedCompositeField(field, cls)
@@ -838,7 +839,7 @@ def _IsPresent(item):
838
839
  """Given a (FieldDescriptor, value) tuple from _fields, return true if the
839
840
  value should be included in the list returned by ListFields()."""
840
841
 
841
- if item[0].label == _FieldDescriptor.LABEL_REPEATED:
842
+ if item[0].is_repeated:
842
843
  return bool(item[1])
843
844
  elif item[0].cpp_type == _FieldDescriptor.CPPTYPE_MESSAGE:
844
845
  return item[1]._is_present_in_parent
@@ -862,7 +863,7 @@ def _AddHasFieldMethod(message_descriptor, cls):
862
863
 
863
864
  hassable_fields = {}
864
865
  for field in message_descriptor.fields:
865
- if field.label == _FieldDescriptor.LABEL_REPEATED:
866
+ if field.is_repeated:
866
867
  continue
867
868
  # For proto3, only submessages and fields inside a oneof have presence.
868
869
  if not field.has_presence:
@@ -950,7 +951,7 @@ def _AddHasExtensionMethod(cls):
950
951
  """Helper for _AddMessageMethods()."""
951
952
  def HasExtension(self, field_descriptor):
952
953
  extension_dict._VerifyExtensionHandle(self, field_descriptor)
953
- if field_descriptor.label == _FieldDescriptor.LABEL_REPEATED:
954
+ if field_descriptor.is_repeated:
954
955
  raise KeyError('"%s" is repeated.' % field_descriptor.full_name)
955
956
 
956
957
  if field_descriptor.cpp_type == _FieldDescriptor.CPPTYPE_MESSAGE:
@@ -1200,7 +1201,7 @@ def _AddMergeFromStringMethod(message_descriptor, cls):
1200
1201
  fields_by_tag = cls._fields_by_tag
1201
1202
  message_set_decoders_by_tag = cls._message_set_decoders_by_tag
1202
1203
 
1203
- def InternalParse(self, buffer, pos, end):
1204
+ def InternalParse(self, buffer, pos, end, current_depth=0):
1204
1205
  """Create a message from serialized bytes.
1205
1206
 
1206
1207
  Args:
@@ -1244,10 +1245,13 @@ def _AddMergeFromStringMethod(message_descriptor, cls):
1244
1245
  else:
1245
1246
  _MaybeAddDecoder(cls, field_des)
1246
1247
  field_decoder = field_des._decoders[is_packed]
1247
- pos = field_decoder(buffer, new_pos, end, self, field_dict)
1248
+ pos = field_decoder(
1249
+ buffer, new_pos, end, self, field_dict, current_depth
1250
+ )
1248
1251
  if field_des.containing_oneof:
1249
1252
  self._UpdateOneofState(field_des)
1250
1253
  return pos
1254
+
1251
1255
  cls._InternalParse = InternalParse
1252
1256
 
1253
1257
 
@@ -1281,7 +1285,7 @@ def _AddIsInitializedMethod(message_descriptor, cls):
1281
1285
 
1282
1286
  for field, value in list(self._fields.items()): # dict can change size!
1283
1287
  if field.cpp_type == _FieldDescriptor.CPPTYPE_MESSAGE:
1284
- if field.label == _FieldDescriptor.LABEL_REPEATED:
1288
+ if field.is_repeated:
1285
1289
  if (field.message_type._is_map_entry):
1286
1290
  continue
1287
1291
  for element in value:
@@ -1329,7 +1333,7 @@ def _AddIsInitializedMethod(message_descriptor, cls):
1329
1333
  else:
1330
1334
  # ScalarMaps can't have any initialization errors.
1331
1335
  pass
1332
- elif field.label == _FieldDescriptor.LABEL_REPEATED:
1336
+ elif field.is_repeated:
1333
1337
  for i in range(len(value)):
1334
1338
  element = value[i]
1335
1339
  prefix = '%s[%d].' % (name, i)
@@ -1354,7 +1358,6 @@ def _FullyQualifiedClassName(klass):
1354
1358
 
1355
1359
 
1356
1360
  def _AddMergeFromMethod(cls):
1357
- LABEL_REPEATED = _FieldDescriptor.LABEL_REPEATED
1358
1361
  CPPTYPE_MESSAGE = _FieldDescriptor.CPPTYPE_MESSAGE
1359
1362
 
1360
1363
  def MergeFrom(self, msg):
@@ -1370,7 +1373,7 @@ def _AddMergeFromMethod(cls):
1370
1373
  fields = self._fields
1371
1374
 
1372
1375
  for field, value in msg._fields.items():
1373
- if field.label == LABEL_REPEATED:
1376
+ if field.is_repeated:
1374
1377
  field_value = fields.get(field)
1375
1378
  if field_value is None:
1376
1379
  # Construct a new object to represent this field.
@@ -1439,7 +1442,7 @@ def _DiscardUnknownFields(self):
1439
1442
  if _IsMessageMapField(field):
1440
1443
  for key in value:
1441
1444
  value[key].DiscardUnknownFields()
1442
- elif field.label == _FieldDescriptor.LABEL_REPEATED:
1445
+ elif field.is_repeated:
1443
1446
  for sub_message in value:
1444
1447
  sub_message.DiscardUnknownFields()
1445
1448
  else:
@@ -62,11 +62,13 @@ class ReferenceLeakCheckerMixin(object):
62
62
  super(ReferenceLeakCheckerMixin, self).run(result=result)
63
63
  super(ReferenceLeakCheckerMixin, self).run(result=result)
64
64
 
65
- oldrefcount = 0 # pylint: disable=unused-variable but needed for refcounts.
66
65
  local_result = LocalTestResult(result)
67
66
  num_flakes = 0
68
-
69
67
  refcount_deltas = []
68
+
69
+ # Observe the refcount, then create oldrefcount which actually makes the
70
+ # refcount 1 higher than the recorded value immediately
71
+ oldrefcount = self._getRefcounts()
70
72
  while len(refcount_deltas) < self.NB_RUNS:
71
73
  oldrefcount = self._getRefcounts()
72
74
  super(ReferenceLeakCheckerMixin, self).run(result=local_result)
@@ -90,6 +92,10 @@ class ReferenceLeakCheckerMixin(object):
90
92
  result.addError(self, sys.exc_info())
91
93
 
92
94
  def _getRefcounts(self):
95
+ if hasattr(sys, "_clear_internal_caches"): # Since 3.13
96
+ sys._clear_internal_caches() # pylint: disable=protected-access
97
+ else:
98
+ sys._clear_type_cache() # pylint: disable=protected-access
93
99
  copyreg.dispatch_table.clear()
94
100
  copyreg.dispatch_table.update(self._saved_pickle_registry)
95
101
  # It is sometimes necessary to gc.collect() multiple times, to ensure