py2docfx 0.1.16.dev2052678__py3-none-any.whl → 0.1.16.dev2064350__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 (281) hide show
  1. py2docfx/convert_prepare/environment.py +3 -1
  2. py2docfx/convert_prepare/get_source.py +6 -1
  3. py2docfx/convert_prepare/package_info.py +1 -1
  4. py2docfx/venv/basevenv/Lib/site-packages/babel/py.typed +1 -0
  5. py2docfx/venv/basevenv/Lib/site-packages/markupsafe/_speedups.pyi +1 -0
  6. py2docfx/venv/basevenv/Lib/site-packages/markupsafe/py.typed +0 -0
  7. py2docfx/venv/basevenv/Lib/site-packages/packaging/py.typed +0 -0
  8. py2docfx/venv/basevenv/Lib/site-packages/pip/_vendor/cachecontrol/py.typed +0 -0
  9. py2docfx/venv/basevenv/Lib/site-packages/pip/_vendor/certifi/py.typed +0 -0
  10. py2docfx/venv/basevenv/Lib/site-packages/pip/_vendor/chardet/py.typed +0 -0
  11. py2docfx/venv/basevenv/Lib/site-packages/pip/_vendor/distro/py.typed +0 -0
  12. py2docfx/venv/basevenv/Lib/site-packages/pip/_vendor/idna/py.typed +0 -0
  13. py2docfx/venv/basevenv/Lib/site-packages/pip/_vendor/packaging/py.typed +0 -0
  14. py2docfx/venv/basevenv/Lib/site-packages/pip/_vendor/platformdirs/py.typed +0 -0
  15. py2docfx/venv/basevenv/Lib/site-packages/pip/_vendor/pyparsing/py.typed +0 -0
  16. py2docfx/venv/basevenv/Lib/site-packages/pip/_vendor/resolvelib/py.typed +0 -0
  17. py2docfx/venv/basevenv/Lib/site-packages/pip/_vendor/rich/py.typed +0 -0
  18. py2docfx/venv/basevenv/Lib/site-packages/pip/_vendor/tenacity/py.typed +0 -0
  19. py2docfx/venv/basevenv/Lib/site-packages/pip/_vendor/tomli/py.typed +1 -0
  20. py2docfx/venv/basevenv/Lib/site-packages/pip/_vendor/truststore/py.typed +0 -0
  21. py2docfx/venv/basevenv/Lib/site-packages/pip/py.typed +4 -0
  22. py2docfx/venv/basevenv/Lib/site-packages/pkg_resources/py.typed +0 -0
  23. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_metadata/py.typed +0 -0
  24. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/inflect/py.typed +0 -0
  25. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/jaraco/collections/py.typed +0 -0
  26. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/jaraco/functools/__init__.pyi +125 -0
  27. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/jaraco/functools/py.typed +0 -0
  28. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/more_itertools/__init__.pyi +2 -0
  29. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/more_itertools/more.pyi +709 -0
  30. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/more_itertools/py.typed +0 -0
  31. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/more_itertools/recipes.pyi +136 -0
  32. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/packaging/py.typed +0 -0
  33. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/platformdirs/py.typed +0 -0
  34. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/tomli/py.typed +1 -0
  35. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/typeguard/py.typed +0 -0
  36. py2docfx/venv/basevenv/Lib/site-packages/sphinx/py.typed +0 -0
  37. py2docfx/venv/basevenv/Lib/site-packages/sphinxcontrib/applehelp/py.typed +0 -0
  38. py2docfx/venv/basevenv/Lib/site-packages/sphinxcontrib/htmlhelp/py.typed +0 -0
  39. py2docfx/venv/basevenv/Lib/site-packages/sphinxcontrib/qthelp/py.typed +0 -0
  40. py2docfx/venv/basevenv/Lib/site-packages/sphinxcontrib/serializinghtml/py.typed +0 -0
  41. py2docfx/venv/basevenv/Lib/site-packages/urllib3/_version.py +9 -4
  42. py2docfx/venv/basevenv/Lib/site-packages/urllib3/contrib/emscripten/response.py +8 -16
  43. py2docfx/venv/basevenv/Lib/site-packages/urllib3/contrib/pyopenssl.py +10 -0
  44. py2docfx/venv/basevenv/Lib/site-packages/urllib3/exceptions.py +12 -4
  45. py2docfx/venv/basevenv/Lib/site-packages/urllib3/http2/connection.py +1 -1
  46. py2docfx/venv/basevenv/Lib/site-packages/urllib3/py.typed +2 -0
  47. py2docfx/venv/basevenv/Lib/site-packages/urllib3/util/ssl_.py +21 -1
  48. py2docfx/venv/basevenv/Lib/site-packages/urllib3/util/ssl_match_hostname.py +1 -1
  49. py2docfx/venv/basevenv/Lib/site-packages/wheel/__init__.py +1 -1
  50. py2docfx/venv/basevenv/Lib/site-packages/wheel/__main__.py +7 -5
  51. py2docfx/venv/basevenv/Lib/site-packages/wheel/{cli → _commands}/__init__.py +3 -5
  52. py2docfx/venv/basevenv/Lib/site-packages/wheel/{cli → _commands}/convert.py +14 -9
  53. py2docfx/venv/basevenv/Lib/site-packages/wheel/{cli → _commands}/pack.py +1 -2
  54. py2docfx/venv/basevenv/Lib/site-packages/wheel/{cli → _commands}/tags.py +4 -3
  55. py2docfx/venv/basevenv/Lib/site-packages/wheel/_metadata.py +184 -0
  56. py2docfx/venv/basevenv/Lib/site-packages/wheel/bdist_wheel.py +12 -23
  57. py2docfx/venv/basevenv/Lib/site-packages/wheel/macosx_libfile.py +4 -0
  58. py2docfx/venv/basevenv/Lib/site-packages/wheel/metadata.py +17 -183
  59. py2docfx/venv/basevenv/Lib/site-packages/wheel/wheelfile.py +30 -16
  60. py2docfx/venv/venv1/Lib/site-packages/azure/core/_version.py +1 -1
  61. py2docfx/venv/venv1/Lib/site-packages/azure/core/credentials.py +5 -4
  62. py2docfx/venv/venv1/Lib/site-packages/azure/core/instrumentation.py +67 -0
  63. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/_base.py +3 -1
  64. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/_tools.py +1 -1
  65. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_authentication.py +4 -4
  66. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_authentication_async.py +1 -2
  67. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_distributed_tracing.py +152 -29
  68. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_redirect.py +3 -2
  69. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_redirect_async.py +2 -2
  70. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_retry.py +3 -10
  71. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_retry_async.py +3 -8
  72. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_universal.py +2 -0
  73. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/_aiohttp.py +0 -1
  74. py2docfx/venv/venv1/Lib/site-packages/azure/core/polling/base_polling.py +3 -3
  75. py2docfx/venv/venv1/Lib/site-packages/azure/core/py.typed +0 -0
  76. py2docfx/venv/venv1/Lib/site-packages/azure/core/rest/_http_response_impl_async.py +3 -0
  77. py2docfx/venv/venv1/Lib/site-packages/azure/core/rest/_rest_py3.py +2 -2
  78. py2docfx/venv/venv1/Lib/site-packages/azure/core/settings.py +27 -21
  79. py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/__init__.py +3 -7
  80. py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/_abstract_span.py +2 -35
  81. py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/_models.py +71 -0
  82. py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/common.py +12 -4
  83. py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/decorator.py +66 -13
  84. py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/decorator_async.py +62 -23
  85. py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/ext/opencensus_span/py.typed +0 -0
  86. py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/opentelemetry.py +244 -0
  87. py2docfx/venv/venv1/Lib/site-packages/azure/core/utils/_connection_string_parser.py +1 -2
  88. py2docfx/venv/venv1/Lib/site-packages/azure/core/utils/_messaging_shared.py +1 -1
  89. py2docfx/venv/venv1/Lib/site-packages/azure/core/utils/_pipeline_transport_rest_shared.py +1 -1
  90. py2docfx/venv/venv1/Lib/site-packages/azure/core/utils/_utils.py +1 -1
  91. py2docfx/venv/venv1/Lib/site-packages/azure/identity/py.typed +0 -0
  92. py2docfx/venv/venv1/Lib/site-packages/certifi/py.typed +0 -0
  93. py2docfx/venv/venv1/Lib/site-packages/charset_normalizer/py.typed +0 -0
  94. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/__init__.pyi +28 -0
  95. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/_openssl.pyi +8 -0
  96. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/asn1.pyi +7 -0
  97. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/exceptions.pyi +17 -0
  98. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/ocsp.pyi +117 -0
  99. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/__init__.pyi +72 -0
  100. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/aead.pyi +103 -0
  101. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/ciphers.pyi +38 -0
  102. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/cmac.pyi +18 -0
  103. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/dh.pyi +51 -0
  104. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/dsa.pyi +41 -0
  105. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/ec.pyi +52 -0
  106. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/ed25519.pyi +12 -0
  107. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/ed448.pyi +12 -0
  108. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/hashes.pyi +19 -0
  109. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/hmac.pyi +21 -0
  110. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/kdf.pyi +43 -0
  111. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/keys.pyi +33 -0
  112. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/poly1305.pyi +13 -0
  113. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/rsa.pyi +55 -0
  114. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/x25519.pyi +12 -0
  115. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/x448.pyi +12 -0
  116. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/pkcs12.pyi +46 -0
  117. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/pkcs7.pyi +49 -0
  118. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/test_support.pyi +22 -0
  119. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/x509.pyi +246 -0
  120. py2docfx/venv/venv1/Lib/site-packages/cryptography/py.typed +0 -0
  121. py2docfx/venv/venv1/Lib/site-packages/google/api/annotations_pb2.pyi +24 -0
  122. py2docfx/venv/venv1/Lib/site-packages/google/api/auth_pb2.pyi +120 -0
  123. py2docfx/venv/venv1/Lib/site-packages/google/api/backend_pb2.pyi +102 -0
  124. py2docfx/venv/venv1/Lib/site-packages/google/api/billing_pb2.pyi +50 -0
  125. py2docfx/venv/venv1/Lib/site-packages/google/api/client_pb2.pyi +405 -0
  126. py2docfx/venv/venv1/Lib/site-packages/google/api/config_change_pb2.pyi +65 -0
  127. py2docfx/venv/venv1/Lib/site-packages/google/api/consumer_pb2.pyi +62 -0
  128. py2docfx/venv/venv1/Lib/site-packages/google/api/context_pb2.pyi +60 -0
  129. py2docfx/venv/venv1/Lib/site-packages/google/api/control_pb2.pyi +43 -0
  130. py2docfx/venv/venv1/Lib/site-packages/google/api/distribution_pb2.pyi +144 -0
  131. py2docfx/venv/venv1/Lib/site-packages/google/api/documentation_pb2.pyi +86 -0
  132. py2docfx/venv/venv1/Lib/site-packages/google/api/endpoint_pb2.pyi +41 -0
  133. py2docfx/venv/venv1/Lib/site-packages/google/api/error_reason_pb2.pyi +90 -0
  134. py2docfx/venv/venv1/Lib/site-packages/google/api/field_behavior_pb2.pyi +45 -0
  135. py2docfx/venv/venv1/Lib/site-packages/google/api/field_info_pb2.pyi +60 -0
  136. py2docfx/venv/venv1/Lib/site-packages/google/api/http_pb2.pyi +94 -0
  137. py2docfx/venv/venv1/Lib/site-packages/google/api/httpbody_pb2.pyi +41 -0
  138. py2docfx/venv/venv1/Lib/site-packages/google/api/label_pb2.pyi +47 -0
  139. py2docfx/venv/venv1/Lib/site-packages/google/api/launch_stage_pb2.pyi +40 -0
  140. py2docfx/venv/venv1/Lib/site-packages/google/api/log_pb2.pyi +47 -0
  141. py2docfx/venv/venv1/Lib/site-packages/google/api/logging_pb2.pyi +57 -0
  142. py2docfx/venv/venv1/Lib/site-packages/google/api/metric_pb2.pyi +186 -0
  143. py2docfx/venv/venv1/Lib/site-packages/google/api/monitored_resource_pb2.pyi +104 -0
  144. py2docfx/venv/venv1/Lib/site-packages/google/api/monitoring_pb2.pyi +57 -0
  145. py2docfx/venv/venv1/Lib/site-packages/google/api/policy_pb2.pyi +57 -0
  146. py2docfx/venv/venv1/Lib/site-packages/google/api/quota_pb2.pyi +116 -0
  147. py2docfx/venv/venv1/Lib/site-packages/google/api/resource_pb2.pyi +93 -0
  148. py2docfx/venv/venv1/Lib/site-packages/google/api/routing_pb2.pyi +49 -0
  149. py2docfx/venv/venv1/Lib/site-packages/google/api/service_pb2.pyi +170 -0
  150. py2docfx/venv/venv1/Lib/site-packages/google/api/source_info_pb2.pyi +34 -0
  151. py2docfx/venv/venv1/Lib/site-packages/google/api/system_parameter_pb2.pyi +60 -0
  152. py2docfx/venv/venv1/Lib/site-packages/google/api/usage_pb2.pyi +55 -0
  153. py2docfx/venv/venv1/Lib/site-packages/google/api/visibility_pb2.pyi +56 -0
  154. py2docfx/venv/venv1/Lib/site-packages/google/api_core/py.typed +2 -0
  155. py2docfx/venv/venv1/Lib/site-packages/google/auth/py.typed +2 -0
  156. py2docfx/venv/venv1/Lib/site-packages/google/cloud/extended_operations_pb2.pyi +45 -0
  157. py2docfx/venv/venv1/Lib/site-packages/google/cloud/location/locations_pb2.pyi +96 -0
  158. py2docfx/venv/venv1/Lib/site-packages/google/gapic/metadata/gapic_metadata_pb2.pyi +118 -0
  159. py2docfx/venv/venv1/Lib/site-packages/google/logging/type/http_request_pb2.pyi +91 -0
  160. py2docfx/venv/venv1/Lib/site-packages/google/logging/type/log_severity_pb2.pyi +42 -0
  161. py2docfx/venv/venv1/Lib/site-packages/google/longrunning/operations_proto_pb2.pyi +126 -0
  162. py2docfx/venv/venv1/Lib/site-packages/google/oauth2/py.typed +2 -0
  163. py2docfx/venv/venv1/Lib/site-packages/google/rpc/code_pb2.pyi +58 -0
  164. py2docfx/venv/venv1/Lib/site-packages/google/rpc/context/attribute_context_pb2.pyi +309 -0
  165. py2docfx/venv/venv1/Lib/site-packages/google/rpc/context/audit_context_pb2.pyi +51 -0
  166. py2docfx/venv/venv1/Lib/site-packages/google/rpc/error_details_pb2.pyi +207 -0
  167. py2docfx/venv/venv1/Lib/site-packages/google/rpc/http_pb2.pyi +71 -0
  168. py2docfx/venv/venv1/Lib/site-packages/google/rpc/status_pb2.pyi +41 -0
  169. py2docfx/venv/venv1/Lib/site-packages/google/type/calendar_period_pb2.pyi +40 -0
  170. py2docfx/venv/venv1/Lib/site-packages/google/type/color_pb2.pyi +42 -0
  171. py2docfx/venv/venv1/Lib/site-packages/google/type/date_pb2.pyi +36 -0
  172. py2docfx/venv/venv1/Lib/site-packages/google/type/datetime_pb2.pyi +77 -0
  173. py2docfx/venv/venv1/Lib/site-packages/google/type/dayofweek_pb2.pyi +40 -0
  174. py2docfx/venv/venv1/Lib/site-packages/google/type/decimal_pb2.pyi +27 -0
  175. py2docfx/venv/venv1/Lib/site-packages/google/type/expr_pb2.pyi +39 -0
  176. py2docfx/venv/venv1/Lib/site-packages/google/type/fraction_pb2.pyi +31 -0
  177. py2docfx/venv/venv1/Lib/site-packages/google/type/interval_pb2.pyi +36 -0
  178. py2docfx/venv/venv1/Lib/site-packages/google/type/latlng_pb2.pyi +31 -0
  179. py2docfx/venv/venv1/Lib/site-packages/google/type/localized_text_pb2.pyi +31 -0
  180. py2docfx/venv/venv1/Lib/site-packages/google/type/money_pb2.pyi +36 -0
  181. py2docfx/venv/venv1/Lib/site-packages/google/type/month_pb2.pyi +50 -0
  182. py2docfx/venv/venv1/Lib/site-packages/google/type/phone_number_pb2.pyi +48 -0
  183. py2docfx/venv/venv1/Lib/site-packages/google/type/postal_address_pb2.pyi +74 -0
  184. py2docfx/venv/venv1/Lib/site-packages/google/type/quaternion_pb2.pyi +39 -0
  185. py2docfx/venv/venv1/Lib/site-packages/google/type/timeofday_pb2.pyi +39 -0
  186. py2docfx/venv/venv1/Lib/site-packages/idna/py.typed +0 -0
  187. py2docfx/venv/venv1/Lib/site-packages/jwt/py.typed +0 -0
  188. py2docfx/venv/venv1/Lib/site-packages/packaging/__init__.py +15 -0
  189. py2docfx/venv/venv1/Lib/site-packages/{wheel/vendored/packaging → packaging}/_elffile.py +9 -7
  190. py2docfx/venv/{basevenv/Lib/site-packages/wheel/vendored → venv1/Lib/site-packages}/packaging/_manylinux.py +12 -9
  191. py2docfx/venv/{basevenv/Lib/site-packages/wheel/vendored → venv1/Lib/site-packages}/packaging/_musllinux.py +5 -3
  192. py2docfx/venv/venv1/Lib/site-packages/{wheel/vendored/packaging → packaging}/_parser.py +11 -13
  193. py2docfx/venv/{basevenv/Lib/site-packages/wheel/vendored → venv1/Lib/site-packages}/packaging/_tokenizer.py +10 -8
  194. py2docfx/venv/venv1/Lib/site-packages/packaging/licenses/__init__.py +145 -0
  195. py2docfx/venv/venv1/Lib/site-packages/packaging/licenses/_spdx.py +759 -0
  196. py2docfx/venv/venv1/Lib/site-packages/{wheel/vendored/packaging → packaging}/markers.py +103 -25
  197. py2docfx/venv/venv1/Lib/site-packages/packaging/metadata.py +863 -0
  198. py2docfx/venv/venv1/Lib/site-packages/packaging/py.typed +0 -0
  199. py2docfx/venv/{basevenv/Lib/site-packages/wheel/vendored → venv1/Lib/site-packages}/packaging/requirements.py +5 -4
  200. py2docfx/venv/{basevenv/Lib/site-packages/wheel/vendored → venv1/Lib/site-packages}/packaging/specifiers.py +40 -31
  201. py2docfx/venv/venv1/Lib/site-packages/{wheel/vendored/packaging → packaging}/tags.py +96 -50
  202. py2docfx/venv/{basevenv/Lib/site-packages/wheel/vendored → venv1/Lib/site-packages}/packaging/utils.py +39 -48
  203. py2docfx/venv/{basevenv/Lib/site-packages/wheel/vendored → venv1/Lib/site-packages}/packaging/version.py +53 -32
  204. py2docfx/venv/venv1/Lib/site-packages/pip/_vendor/cachecontrol/py.typed +0 -0
  205. py2docfx/venv/venv1/Lib/site-packages/pip/_vendor/certifi/py.typed +0 -0
  206. py2docfx/venv/venv1/Lib/site-packages/pip/_vendor/chardet/py.typed +0 -0
  207. py2docfx/venv/venv1/Lib/site-packages/pip/_vendor/distro/py.typed +0 -0
  208. py2docfx/venv/venv1/Lib/site-packages/pip/_vendor/idna/py.typed +0 -0
  209. py2docfx/venv/venv1/Lib/site-packages/pip/_vendor/packaging/py.typed +0 -0
  210. py2docfx/venv/venv1/Lib/site-packages/pip/_vendor/platformdirs/py.typed +0 -0
  211. py2docfx/venv/venv1/Lib/site-packages/pip/_vendor/pyparsing/py.typed +0 -0
  212. py2docfx/venv/venv1/Lib/site-packages/pip/_vendor/resolvelib/py.typed +0 -0
  213. py2docfx/venv/venv1/Lib/site-packages/pip/_vendor/rich/py.typed +0 -0
  214. py2docfx/venv/venv1/Lib/site-packages/pip/_vendor/tenacity/py.typed +0 -0
  215. py2docfx/venv/venv1/Lib/site-packages/pip/_vendor/tomli/py.typed +1 -0
  216. py2docfx/venv/venv1/Lib/site-packages/pip/_vendor/truststore/py.typed +0 -0
  217. py2docfx/venv/venv1/Lib/site-packages/pip/py.typed +4 -0
  218. py2docfx/venv/venv1/Lib/site-packages/pkg_resources/py.typed +0 -0
  219. py2docfx/venv/venv1/Lib/site-packages/rsa/py.typed +1 -0
  220. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_metadata/py.typed +0 -0
  221. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/inflect/py.typed +0 -0
  222. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/jaraco/collections/py.typed +0 -0
  223. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/jaraco/functools/__init__.pyi +125 -0
  224. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/jaraco/functools/py.typed +0 -0
  225. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/more_itertools/__init__.pyi +2 -0
  226. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/more_itertools/more.pyi +709 -0
  227. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/more_itertools/py.typed +0 -0
  228. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/more_itertools/recipes.pyi +136 -0
  229. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/py.typed +0 -0
  230. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/platformdirs/py.typed +0 -0
  231. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/tomli/py.typed +1 -0
  232. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/typeguard/py.typed +0 -0
  233. py2docfx/venv/venv1/Lib/site-packages/typing_extensions.py +30 -12
  234. py2docfx/venv/venv1/Lib/site-packages/urllib3/_version.py +9 -4
  235. py2docfx/venv/venv1/Lib/site-packages/urllib3/contrib/emscripten/response.py +8 -16
  236. py2docfx/venv/venv1/Lib/site-packages/urllib3/contrib/pyopenssl.py +10 -0
  237. py2docfx/venv/venv1/Lib/site-packages/urllib3/exceptions.py +12 -4
  238. py2docfx/venv/venv1/Lib/site-packages/urllib3/http2/connection.py +1 -1
  239. py2docfx/venv/venv1/Lib/site-packages/urllib3/py.typed +2 -0
  240. py2docfx/venv/venv1/Lib/site-packages/urllib3/util/ssl_.py +21 -1
  241. py2docfx/venv/venv1/Lib/site-packages/urllib3/util/ssl_match_hostname.py +1 -1
  242. py2docfx/venv/venv1/Lib/site-packages/wheel/__init__.py +1 -1
  243. py2docfx/venv/venv1/Lib/site-packages/wheel/__main__.py +7 -5
  244. py2docfx/venv/venv1/Lib/site-packages/wheel/{cli → _commands}/__init__.py +3 -5
  245. py2docfx/venv/venv1/Lib/site-packages/wheel/{cli → _commands}/convert.py +14 -9
  246. py2docfx/venv/venv1/Lib/site-packages/wheel/{cli → _commands}/pack.py +1 -2
  247. py2docfx/venv/venv1/Lib/site-packages/wheel/{cli → _commands}/tags.py +4 -3
  248. py2docfx/venv/venv1/Lib/site-packages/wheel/_metadata.py +184 -0
  249. py2docfx/venv/venv1/Lib/site-packages/wheel/bdist_wheel.py +12 -23
  250. py2docfx/venv/venv1/Lib/site-packages/wheel/macosx_libfile.py +4 -0
  251. py2docfx/venv/venv1/Lib/site-packages/wheel/metadata.py +17 -183
  252. py2docfx/venv/venv1/Lib/site-packages/wheel/wheelfile.py +30 -16
  253. {py2docfx-0.1.16.dev2052678.dist-info → py2docfx-0.1.16.dev2064350.dist-info}/METADATA +2 -3
  254. {py2docfx-0.1.16.dev2052678.dist-info → py2docfx-0.1.16.dev2064350.dist-info}/RECORD +263 -104
  255. {py2docfx-0.1.16.dev2052678.dist-info → py2docfx-0.1.16.dev2064350.dist-info}/WHEEL +1 -1
  256. py2docfx/venv/basevenv/Lib/site-packages/wheel/_bdist_wheel.py +0 -613
  257. py2docfx/venv/basevenv/Lib/site-packages/wheel/_setuptools_logging.py +0 -26
  258. py2docfx/venv/basevenv/Lib/site-packages/wheel/util.py +0 -17
  259. py2docfx/venv/basevenv/Lib/site-packages/wheel/vendored/packaging/_elffile.py +0 -108
  260. py2docfx/venv/basevenv/Lib/site-packages/wheel/vendored/packaging/_parser.py +0 -356
  261. py2docfx/venv/basevenv/Lib/site-packages/wheel/vendored/packaging/markers.py +0 -253
  262. py2docfx/venv/basevenv/Lib/site-packages/wheel/vendored/packaging/tags.py +0 -571
  263. py2docfx/venv/venv1/Lib/site-packages/wheel/_bdist_wheel.py +0 -613
  264. py2docfx/venv/venv1/Lib/site-packages/wheel/_setuptools_logging.py +0 -26
  265. py2docfx/venv/venv1/Lib/site-packages/wheel/util.py +0 -17
  266. py2docfx/venv/venv1/Lib/site-packages/wheel/vendored/packaging/_manylinux.py +0 -260
  267. py2docfx/venv/venv1/Lib/site-packages/wheel/vendored/packaging/_musllinux.py +0 -83
  268. py2docfx/venv/venv1/Lib/site-packages/wheel/vendored/packaging/_structures.py +0 -61
  269. py2docfx/venv/venv1/Lib/site-packages/wheel/vendored/packaging/_tokenizer.py +0 -192
  270. py2docfx/venv/venv1/Lib/site-packages/wheel/vendored/packaging/requirements.py +0 -90
  271. py2docfx/venv/venv1/Lib/site-packages/wheel/vendored/packaging/specifiers.py +0 -1011
  272. py2docfx/venv/venv1/Lib/site-packages/wheel/vendored/packaging/utils.py +0 -172
  273. py2docfx/venv/venv1/Lib/site-packages/wheel/vendored/packaging/version.py +0 -561
  274. /py2docfx/venv/basevenv/Lib/site-packages/{wheel/vendored/__init__.py → certifi/py.typed} +0 -0
  275. /py2docfx/venv/basevenv/Lib/site-packages/{wheel/vendored/packaging/__init__.py → charset_normalizer/py.typed} +0 -0
  276. /py2docfx/venv/{venv1/Lib/site-packages/wheel/vendored/__init__.py → basevenv/Lib/site-packages/idna/py.typed} +0 -0
  277. /py2docfx/venv/{venv1/Lib/site-packages/wheel/vendored/packaging/__init__.py → basevenv/Lib/site-packages/jinja2/py.typed} +0 -0
  278. /py2docfx/venv/basevenv/Lib/site-packages/wheel/{cli → _commands}/unpack.py +0 -0
  279. /py2docfx/venv/{basevenv/Lib/site-packages/wheel/vendored → venv1/Lib/site-packages}/packaging/_structures.py +0 -0
  280. /py2docfx/venv/venv1/Lib/site-packages/wheel/{cli → _commands}/unpack.py +0 -0
  281. {py2docfx-0.1.16.dev2052678.dist-info → py2docfx-0.1.16.dev2064350.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,184 @@
1
+ """
2
+ Tools for converting old- to new-style metadata.
3
+ """
4
+
5
+ from __future__ import annotations
6
+
7
+ import functools
8
+ import itertools
9
+ import os.path
10
+ import re
11
+ import textwrap
12
+ from collections.abc import Generator, Iterable, Iterator
13
+ from email.message import Message
14
+ from email.parser import Parser
15
+ from typing import Literal
16
+
17
+ from packaging.requirements import Requirement
18
+
19
+
20
+ def _nonblank(str: str) -> bool | Literal[""]:
21
+ return str and not str.startswith("#")
22
+
23
+
24
+ @functools.singledispatch
25
+ def yield_lines(iterable: Iterable[str]) -> Iterator[str]:
26
+ r"""
27
+ Yield valid lines of a string or iterable.
28
+ >>> list(yield_lines(''))
29
+ []
30
+ >>> list(yield_lines(['foo', 'bar']))
31
+ ['foo', 'bar']
32
+ >>> list(yield_lines('foo\nbar'))
33
+ ['foo', 'bar']
34
+ >>> list(yield_lines('\nfoo\n#bar\nbaz #comment'))
35
+ ['foo', 'baz #comment']
36
+ >>> list(yield_lines(['foo\nbar', 'baz', 'bing\n\n\n']))
37
+ ['foo', 'bar', 'baz', 'bing']
38
+ """
39
+ return itertools.chain.from_iterable(map(yield_lines, iterable))
40
+
41
+
42
+ @yield_lines.register(str)
43
+ def _(text: str) -> Iterator[str]:
44
+ return filter(_nonblank, map(str.strip, text.splitlines()))
45
+
46
+
47
+ def split_sections(
48
+ s: str | Iterator[str],
49
+ ) -> Generator[tuple[str | None, list[str]], None, None]:
50
+ """Split a string or iterable thereof into (section, content) pairs
51
+ Each ``section`` is a stripped version of the section header ("[section]")
52
+ and each ``content`` is a list of stripped lines excluding blank lines and
53
+ comment-only lines. If there are any such lines before the first section
54
+ header, they're returned in a first ``section`` of ``None``.
55
+ """
56
+ section = None
57
+ content: list[str] = []
58
+ for line in yield_lines(s):
59
+ if line.startswith("["):
60
+ if line.endswith("]"):
61
+ if section or content:
62
+ yield section, content
63
+ section = line[1:-1].strip()
64
+ content = []
65
+ else:
66
+ raise ValueError("Invalid section heading", line)
67
+ else:
68
+ content.append(line)
69
+
70
+ # wrap up last segment
71
+ yield section, content
72
+
73
+
74
+ def safe_extra(extra: str) -> str:
75
+ """Convert an arbitrary string to a standard 'extra' name
76
+ Any runs of non-alphanumeric characters are replaced with a single '_',
77
+ and the result is always lowercased.
78
+ """
79
+ return re.sub("[^A-Za-z0-9.-]+", "_", extra).lower()
80
+
81
+
82
+ def safe_name(name: str) -> str:
83
+ """Convert an arbitrary string to a standard distribution name
84
+ Any runs of non-alphanumeric/. characters are replaced with a single '-'.
85
+ """
86
+ return re.sub("[^A-Za-z0-9.]+", "-", name)
87
+
88
+
89
+ def requires_to_requires_dist(requirement: Requirement) -> str:
90
+ """Return the version specifier for a requirement in PEP 345/566 fashion."""
91
+ if requirement.url:
92
+ return " @ " + requirement.url
93
+
94
+ requires_dist: list[str] = []
95
+ for spec in requirement.specifier:
96
+ requires_dist.append(spec.operator + spec.version)
97
+
98
+ if requires_dist:
99
+ return " " + ",".join(sorted(requires_dist))
100
+ else:
101
+ return ""
102
+
103
+
104
+ def convert_requirements(requirements: list[str]) -> Iterator[str]:
105
+ """Yield Requires-Dist: strings for parsed requirements strings."""
106
+ for req in requirements:
107
+ parsed_requirement = Requirement(req)
108
+ spec = requires_to_requires_dist(parsed_requirement)
109
+ extras = ",".join(sorted(safe_extra(e) for e in parsed_requirement.extras))
110
+ if extras:
111
+ extras = f"[{extras}]"
112
+
113
+ yield safe_name(parsed_requirement.name) + extras + spec
114
+
115
+
116
+ def generate_requirements(
117
+ extras_require: dict[str | None, list[str]],
118
+ ) -> Iterator[tuple[str, str]]:
119
+ """
120
+ Convert requirements from a setup()-style dictionary to
121
+ ('Requires-Dist', 'requirement') and ('Provides-Extra', 'extra') tuples.
122
+
123
+ extras_require is a dictionary of {extra: [requirements]} as passed to setup(),
124
+ using the empty extra {'': [requirements]} to hold install_requires.
125
+ """
126
+ for extra, depends in extras_require.items():
127
+ condition = ""
128
+ extra = extra or ""
129
+ if ":" in extra: # setuptools extra:condition syntax
130
+ extra, condition = extra.split(":", 1)
131
+
132
+ extra = safe_extra(extra)
133
+ if extra:
134
+ yield "Provides-Extra", extra
135
+ if condition:
136
+ condition = "(" + condition + ") and "
137
+ condition += f"extra == '{extra}'"
138
+
139
+ if condition:
140
+ condition = " ; " + condition
141
+
142
+ for new_req in convert_requirements(depends):
143
+ canonical_req = str(Requirement(new_req + condition))
144
+ yield "Requires-Dist", canonical_req
145
+
146
+
147
+ def pkginfo_to_metadata(egg_info_path: str, pkginfo_path: str) -> Message:
148
+ """
149
+ Convert .egg-info directory with PKG-INFO to the Metadata 2.1 format
150
+ """
151
+ with open(pkginfo_path, encoding="utf-8") as headers:
152
+ pkg_info = Parser().parse(headers)
153
+
154
+ pkg_info.replace_header("Metadata-Version", "2.1")
155
+ # Those will be regenerated from `requires.txt`.
156
+ del pkg_info["Provides-Extra"]
157
+ del pkg_info["Requires-Dist"]
158
+ requires_path = os.path.join(egg_info_path, "requires.txt")
159
+ if os.path.exists(requires_path):
160
+ with open(requires_path, encoding="utf-8") as requires_file:
161
+ requires = requires_file.read()
162
+
163
+ parsed_requirements = sorted(split_sections(requires), key=lambda x: x[0] or "")
164
+ for extra, reqs in parsed_requirements:
165
+ for key, value in generate_requirements({extra: reqs}):
166
+ if (key, value) not in pkg_info.items():
167
+ pkg_info[key] = value
168
+
169
+ description = pkg_info["Description"]
170
+ if description:
171
+ description_lines = pkg_info["Description"].splitlines()
172
+ dedented_description = "\n".join(
173
+ # if the first line of long_description is blank,
174
+ # the first line here will be indented.
175
+ (
176
+ description_lines[0].lstrip(),
177
+ textwrap.dedent("\n".join(description_lines[1:])),
178
+ "\n",
179
+ )
180
+ )
181
+ pkg_info.set_payload(dedented_description)
182
+ del pkg_info["Description"]
183
+
184
+ return pkg_info
@@ -1,26 +1,15 @@
1
- from typing import TYPE_CHECKING
2
1
  from warnings import warn
3
2
 
4
- warn(
5
- "The 'wheel' package is no longer the canonical location of the 'bdist_wheel' "
6
- "command, and will be removed in a future release. Please update to setuptools "
7
- "v70.1 or later which contains an integrated version of this command.",
8
- DeprecationWarning,
9
- stacklevel=1,
10
- )
3
+ ERROR = """\
4
+ The 'wheel.bdist_wheel' module has been removed.
5
+ Please update your setuptools to v70.1 or later.
6
+ If you're explicitly importing 'wheel.bdist_wheel', please update your import to point \
7
+ to 'setuptools.command.bdist_wheel' instead.
8
+ """
11
9
 
12
- if TYPE_CHECKING:
13
- from ._bdist_wheel import bdist_wheel as bdist_wheel
14
- else:
15
- try:
16
- # Better integration/compatibility with setuptools:
17
- # in the case new fixes or PEPs are implemented in setuptools
18
- # there is no need to backport them to the deprecated code base.
19
- # This is useful in the case of old packages in the ecosystem
20
- # that are still used but have low maintenance.
21
- from setuptools.command.bdist_wheel import bdist_wheel
22
- except ImportError:
23
- # Only used in the case of old setuptools versions.
24
- # If the user wants to get the latest fixes/PEPs,
25
- # they are encouraged to address the deprecation warning.
26
- from ._bdist_wheel import bdist_wheel as bdist_wheel
10
+ try:
11
+ from setuptools.command.bdist_wheel import bdist_wheel as bdist_wheel
12
+ except ModuleNotFoundError as exc:
13
+ raise ImportError(ERROR) from exc
14
+
15
+ warn(ERROR, DeprecationWarning, stacklevel=2)
@@ -1,4 +1,8 @@
1
1
  """
2
+ IMPORTANT: DO NOT IMPORT THIS MODULE DIRECTLY.
3
+ THIS IS ONLY KEPT IN PLACE FOR BACKWARDS COMPATIBILITY WITH
4
+ setuptools.command.bdist_wheel.
5
+
2
6
  This module contains function to analyse dynamic library
3
7
  headers to extract system information
4
8
 
@@ -1,183 +1,17 @@
1
- """
2
- Tools for converting old- to new-style metadata.
3
- """
4
-
5
- from __future__ import annotations
6
-
7
- import functools
8
- import itertools
9
- import os.path
10
- import re
11
- import textwrap
12
- from email.message import Message
13
- from email.parser import Parser
14
- from typing import Generator, Iterable, Iterator, Literal
15
-
16
- from .vendored.packaging.requirements import Requirement
17
-
18
-
19
- def _nonblank(str: str) -> bool | Literal[""]:
20
- return str and not str.startswith("#")
21
-
22
-
23
- @functools.singledispatch
24
- def yield_lines(iterable: Iterable[str]) -> Iterator[str]:
25
- r"""
26
- Yield valid lines of a string or iterable.
27
- >>> list(yield_lines(''))
28
- []
29
- >>> list(yield_lines(['foo', 'bar']))
30
- ['foo', 'bar']
31
- >>> list(yield_lines('foo\nbar'))
32
- ['foo', 'bar']
33
- >>> list(yield_lines('\nfoo\n#bar\nbaz #comment'))
34
- ['foo', 'baz #comment']
35
- >>> list(yield_lines(['foo\nbar', 'baz', 'bing\n\n\n']))
36
- ['foo', 'bar', 'baz', 'bing']
37
- """
38
- return itertools.chain.from_iterable(map(yield_lines, iterable))
39
-
40
-
41
- @yield_lines.register(str)
42
- def _(text: str) -> Iterator[str]:
43
- return filter(_nonblank, map(str.strip, text.splitlines()))
44
-
45
-
46
- def split_sections(
47
- s: str | Iterator[str],
48
- ) -> Generator[tuple[str | None, list[str]], None, None]:
49
- """Split a string or iterable thereof into (section, content) pairs
50
- Each ``section`` is a stripped version of the section header ("[section]")
51
- and each ``content`` is a list of stripped lines excluding blank lines and
52
- comment-only lines. If there are any such lines before the first section
53
- header, they're returned in a first ``section`` of ``None``.
54
- """
55
- section = None
56
- content: list[str] = []
57
- for line in yield_lines(s):
58
- if line.startswith("["):
59
- if line.endswith("]"):
60
- if section or content:
61
- yield section, content
62
- section = line[1:-1].strip()
63
- content = []
64
- else:
65
- raise ValueError("Invalid section heading", line)
66
- else:
67
- content.append(line)
68
-
69
- # wrap up last segment
70
- yield section, content
71
-
72
-
73
- def safe_extra(extra: str) -> str:
74
- """Convert an arbitrary string to a standard 'extra' name
75
- Any runs of non-alphanumeric characters are replaced with a single '_',
76
- and the result is always lowercased.
77
- """
78
- return re.sub("[^A-Za-z0-9.-]+", "_", extra).lower()
79
-
80
-
81
- def safe_name(name: str) -> str:
82
- """Convert an arbitrary string to a standard distribution name
83
- Any runs of non-alphanumeric/. characters are replaced with a single '-'.
84
- """
85
- return re.sub("[^A-Za-z0-9.]+", "-", name)
86
-
87
-
88
- def requires_to_requires_dist(requirement: Requirement) -> str:
89
- """Return the version specifier for a requirement in PEP 345/566 fashion."""
90
- if requirement.url:
91
- return " @ " + requirement.url
92
-
93
- requires_dist: list[str] = []
94
- for spec in requirement.specifier:
95
- requires_dist.append(spec.operator + spec.version)
96
-
97
- if requires_dist:
98
- return " " + ",".join(sorted(requires_dist))
99
- else:
100
- return ""
101
-
102
-
103
- def convert_requirements(requirements: list[str]) -> Iterator[str]:
104
- """Yield Requires-Dist: strings for parsed requirements strings."""
105
- for req in requirements:
106
- parsed_requirement = Requirement(req)
107
- spec = requires_to_requires_dist(parsed_requirement)
108
- extras = ",".join(sorted(safe_extra(e) for e in parsed_requirement.extras))
109
- if extras:
110
- extras = f"[{extras}]"
111
-
112
- yield safe_name(parsed_requirement.name) + extras + spec
113
-
114
-
115
- def generate_requirements(
116
- extras_require: dict[str | None, list[str]],
117
- ) -> Iterator[tuple[str, str]]:
118
- """
119
- Convert requirements from a setup()-style dictionary to
120
- ('Requires-Dist', 'requirement') and ('Provides-Extra', 'extra') tuples.
121
-
122
- extras_require is a dictionary of {extra: [requirements]} as passed to setup(),
123
- using the empty extra {'': [requirements]} to hold install_requires.
124
- """
125
- for extra, depends in extras_require.items():
126
- condition = ""
127
- extra = extra or ""
128
- if ":" in extra: # setuptools extra:condition syntax
129
- extra, condition = extra.split(":", 1)
130
-
131
- extra = safe_extra(extra)
132
- if extra:
133
- yield "Provides-Extra", extra
134
- if condition:
135
- condition = "(" + condition + ") and "
136
- condition += f"extra == '{extra}'"
137
-
138
- if condition:
139
- condition = " ; " + condition
140
-
141
- for new_req in convert_requirements(depends):
142
- canonical_req = str(Requirement(new_req + condition))
143
- yield "Requires-Dist", canonical_req
144
-
145
-
146
- def pkginfo_to_metadata(egg_info_path: str, pkginfo_path: str) -> Message:
147
- """
148
- Convert .egg-info directory with PKG-INFO to the Metadata 2.1 format
149
- """
150
- with open(pkginfo_path, encoding="utf-8") as headers:
151
- pkg_info = Parser().parse(headers)
152
-
153
- pkg_info.replace_header("Metadata-Version", "2.1")
154
- # Those will be regenerated from `requires.txt`.
155
- del pkg_info["Provides-Extra"]
156
- del pkg_info["Requires-Dist"]
157
- requires_path = os.path.join(egg_info_path, "requires.txt")
158
- if os.path.exists(requires_path):
159
- with open(requires_path, encoding="utf-8") as requires_file:
160
- requires = requires_file.read()
161
-
162
- parsed_requirements = sorted(split_sections(requires), key=lambda x: x[0] or "")
163
- for extra, reqs in parsed_requirements:
164
- for key, value in generate_requirements({extra: reqs}):
165
- if (key, value) not in pkg_info.items():
166
- pkg_info[key] = value
167
-
168
- description = pkg_info["Description"]
169
- if description:
170
- description_lines = pkg_info["Description"].splitlines()
171
- dedented_description = "\n".join(
172
- # if the first line of long_description is blank,
173
- # the first line here will be indented.
174
- (
175
- description_lines[0].lstrip(),
176
- textwrap.dedent("\n".join(description_lines[1:])),
177
- "\n",
178
- )
179
- )
180
- pkg_info.set_payload(dedented_description)
181
- del pkg_info["Description"]
182
-
183
- return pkg_info
1
+ from warnings import warn
2
+
3
+ from ._metadata import convert_requirements as convert_requirements
4
+ from ._metadata import generate_requirements as generate_requirements
5
+ from ._metadata import pkginfo_to_metadata as pkginfo_to_metadata
6
+ from ._metadata import requires_to_requires_dist as requires_to_requires_dist
7
+ from ._metadata import safe_extra as safe_extra
8
+ from ._metadata import safe_name as safe_name
9
+ from ._metadata import split_sections as split_sections
10
+
11
+ warn(
12
+ f"The {__name__!r} package has been made private and should no longer be imported. "
13
+ f"Please either copy the code or find an alternative library to import it from, as "
14
+ f"this warning will be removed in a future version of 'wheel'.",
15
+ DeprecationWarning,
16
+ stacklevel=2,
17
+ )
@@ -1,7 +1,11 @@
1
1
  from __future__ import annotations
2
2
 
3
+ __all__ = ["WHEEL_INFO_RE", "WheelFile", "WheelError"]
4
+
5
+ import base64
3
6
  import csv
4
7
  import hashlib
8
+ import logging
5
9
  import os.path
6
10
  import re
7
11
  import stat
@@ -10,17 +14,8 @@ from io import StringIO, TextIOWrapper
10
14
  from typing import IO, TYPE_CHECKING, Literal
11
15
  from zipfile import ZIP_DEFLATED, ZipFile, ZipInfo
12
16
 
13
- from wheel.cli import WheelError
14
- from wheel.util import log, urlsafe_b64decode, urlsafe_b64encode
15
-
16
17
  if TYPE_CHECKING:
17
- from typing import Protocol, Sized, Union
18
-
19
- from typing_extensions import Buffer
20
-
21
- StrPath = Union[str, os.PathLike[str]]
22
-
23
- class SizedBuffer(Sized, Buffer, Protocol): ...
18
+ from _typeshed import SizedBuffer, StrPath
24
19
 
25
20
 
26
21
  # Non-greedy matching of an optional build number may be too clever (more
@@ -32,8 +27,27 @@ WHEEL_INFO_RE = re.compile(
32
27
  )
33
28
  MINIMUM_TIMESTAMP = 315532800 # 1980-01-01 00:00:00 UTC
34
29
 
30
+ log = logging.getLogger("wheel")
31
+
32
+
33
+ class WheelError(Exception):
34
+ pass
35
35
 
36
- def get_zipinfo_datetime(timestamp: float | None = None):
36
+
37
+ def urlsafe_b64encode(data: bytes) -> bytes:
38
+ """urlsafe_b64encode without padding"""
39
+ return base64.urlsafe_b64encode(data).rstrip(b"=")
40
+
41
+
42
+ def urlsafe_b64decode(data: bytes) -> bytes:
43
+ """urlsafe_b64decode without padding"""
44
+ pad = b"=" * (4 - (len(data) & 3))
45
+ return base64.urlsafe_b64decode(data + pad)
46
+
47
+
48
+ def get_zipinfo_datetime(
49
+ timestamp: float | None = None,
50
+ ) -> tuple[int, int, int, int, int]:
37
51
  # Some applications need reproducible .whl files, but they can't do this without
38
52
  # forcing the timestamp of the individual ZipInfo objects. See issue #143.
39
53
  timestamp = int(os.environ.get("SOURCE_DATE_EPOCH", timestamp or time.time()))
@@ -140,8 +154,8 @@ class WheelFile(ZipFile):
140
154
 
141
155
  return ef
142
156
 
143
- def write_files(self, base_dir: str):
144
- log.info(f"creating '{self.filename}' and adding '{base_dir}' to it")
157
+ def write_files(self, base_dir: str) -> None:
158
+ log.info("creating %r and adding %r to it", self.filename, base_dir)
145
159
  deferred: list[tuple[str, str]] = []
146
160
  for root, dirnames, filenames in os.walk(base_dir):
147
161
  # Sort the directory names so that `os.walk` will walk them in a
@@ -184,7 +198,7 @@ class WheelFile(ZipFile):
184
198
  zinfo_or_arcname: str | ZipInfo,
185
199
  data: SizedBuffer | str,
186
200
  compress_type: int | None = None,
187
- ):
201
+ ) -> None:
188
202
  if isinstance(zinfo_or_arcname, str):
189
203
  zinfo_or_arcname = ZipInfo(
190
204
  zinfo_or_arcname, date_time=get_zipinfo_datetime()
@@ -201,7 +215,7 @@ class WheelFile(ZipFile):
201
215
  if isinstance(zinfo_or_arcname, ZipInfo)
202
216
  else zinfo_or_arcname
203
217
  )
204
- log.info(f"adding '{fname}'")
218
+ log.info("adding %r", fname)
205
219
  if fname != self.record_path:
206
220
  hash_ = self._default_algorithm(data)
207
221
  self._file_hashes[fname] = (
@@ -210,7 +224,7 @@ class WheelFile(ZipFile):
210
224
  )
211
225
  self._file_sizes[fname] = len(data)
212
226
 
213
- def close(self):
227
+ def close(self) -> None:
214
228
  # Write RECORD
215
229
  if self.fp is not None and self.mode == "w" and self._file_hashes:
216
230
  data = StringIO()
@@ -9,4 +9,4 @@
9
9
  # regenerated.
10
10
  # --------------------------------------------------------------------------
11
11
 
12
- VERSION = "1.32.0"
12
+ VERSION = "1.33.0"
@@ -147,7 +147,7 @@ class AzureKeyCredential:
147
147
  It provides the ability to update the key without creating a new client.
148
148
 
149
149
  :param str key: The key used to authenticate to an Azure service
150
- :raises: TypeError
150
+ :raises TypeError: If the key is not a string.
151
151
  """
152
152
 
153
153
  def __init__(self, key: str) -> None:
@@ -185,7 +185,7 @@ class AzureSasCredential:
185
185
  It provides the ability to update the shared access signature without creating a new client.
186
186
 
187
187
  :param str signature: The shared access signature used to authenticate to an Azure service
188
- :raises: TypeError
188
+ :raises TypeError: If the signature is not a string.
189
189
  """
190
190
 
191
191
  def __init__(self, signature: str) -> None:
@@ -209,7 +209,8 @@ class AzureSasCredential:
209
209
  to update long-lived clients.
210
210
 
211
211
  :param str signature: The shared access signature used to authenticate to an Azure service
212
- :raises: ValueError or TypeError
212
+ :raises ValueError: If the signature is None or empty.
213
+ :raises TypeError: If the signature is not a string.
213
214
  """
214
215
  if not signature:
215
216
  raise ValueError("The signature used for updating can not be None or empty")
@@ -224,7 +225,7 @@ class AzureNamedKeyCredential:
224
225
 
225
226
  :param str name: The name of the credential used to authenticate to an Azure service.
226
227
  :param str key: The key used to authenticate to an Azure service.
227
- :raises: TypeError
228
+ :raises TypeError: If the name or key is not a string.
228
229
  """
229
230
 
230
231
  def __init__(self, name: str, key: str) -> None:
@@ -0,0 +1,67 @@
1
+ # ------------------------------------
2
+ # Copyright (c) Microsoft Corporation.
3
+ # Licensed under the MIT License.
4
+ # ------------------------------------
5
+ from typing import Optional, Union, Mapping, TYPE_CHECKING
6
+ from functools import lru_cache
7
+
8
+ if TYPE_CHECKING:
9
+ from .tracing.opentelemetry import OpenTelemetryTracer
10
+
11
+
12
+ def _get_tracer_impl():
13
+ # Check if OpenTelemetry is available/installed.
14
+ try:
15
+ from .tracing.opentelemetry import OpenTelemetryTracer
16
+
17
+ return OpenTelemetryTracer
18
+ except ImportError:
19
+ return None
20
+
21
+
22
+ @lru_cache
23
+ def _get_tracer_cached(
24
+ library_name: Optional[str],
25
+ library_version: Optional[str],
26
+ schema_url: Optional[str],
27
+ attributes_key: Optional[frozenset],
28
+ ) -> Optional["OpenTelemetryTracer"]:
29
+ tracer_impl = _get_tracer_impl()
30
+ if tracer_impl:
31
+ # Convert attributes_key back to dict if needed
32
+ attributes = dict(attributes_key) if attributes_key else None
33
+ return tracer_impl(
34
+ library_name=library_name,
35
+ library_version=library_version,
36
+ schema_url=schema_url,
37
+ attributes=attributes,
38
+ )
39
+ return None
40
+
41
+
42
+ def get_tracer(
43
+ *,
44
+ library_name: Optional[str] = None,
45
+ library_version: Optional[str] = None,
46
+ schema_url: Optional[str] = None,
47
+ attributes: Optional[Mapping[str, Union[str, bool, int, float]]] = None,
48
+ ) -> Optional["OpenTelemetryTracer"]:
49
+ """Get the OpenTelemetry tracer instance if available.
50
+
51
+ If OpenTelemetry is not available, this method will return None. This method caches
52
+ the tracer instance for each unique set of parameters.
53
+
54
+ :keyword library_name: The name of the library to use in the tracer.
55
+ :paramtype library_name: str
56
+ :keyword library_version: The version of the library to use in the tracer.
57
+ :paramtype library_version: str
58
+ :keyword schema_url: Specifies the Schema URL of the emitted spans. Defaults to
59
+ "https://opentelemetry.io/schemas/1.23.1".
60
+ :paramtype schema_url: str
61
+ :keyword attributes: Attributes to add to the emitted spans.
62
+ :paramtype attributes: Mapping[str, Union[str, bool, int, float]]
63
+ :return: The OpenTelemetry tracer instance if available.
64
+ :rtype: Optional[~azure.core.tracing.opentelemetry.OpenTelemetryTracer]
65
+ """
66
+ attributes_key = frozenset(attributes.items()) if attributes else None
67
+ return _get_tracer_cached(library_name, library_version, schema_url, attributes_key)
@@ -53,6 +53,7 @@ _LOGGER = logging.getLogger(__name__)
53
53
 
54
54
  def cleanup_kwargs_for_transport(kwargs: Dict[str, str]) -> None:
55
55
  """Remove kwargs that are not meant for the transport layer.
56
+
56
57
  :param kwargs: The keyword arguments.
57
58
  :type kwargs: dict
58
59
 
@@ -62,8 +63,9 @@ def cleanup_kwargs_for_transport(kwargs: Dict[str, str]) -> None:
62
63
  to the transport layer. This code is needed to handle the case that the
63
64
  SensitiveHeaderCleanupPolicy is not added into the pipeline and "insecure_domain_change" is not popped.
64
65
  "enable_cae" is added to the `get_token` method of the `TokenCredential` protocol.
66
+ "tracing_options" is used in the DistributedTracingPolicy and tracing decorators.
65
67
  """
66
- kwargs_to_remove = ["insecure_domain_change", "enable_cae"]
68
+ kwargs_to_remove = ["insecure_domain_change", "enable_cae", "tracing_options"]
67
69
  if not kwargs:
68
70
  return
69
71
  for key in kwargs_to_remove:
@@ -44,7 +44,7 @@ def await_result(func: Callable[P, T], *args: P.args, **kwargs: P.kwargs) -> T:
44
44
  :type args: list
45
45
  :rtype: any
46
46
  :return: The result of the function
47
- :raises: TypeError
47
+ :raises TypeError: If the function returns an awaitable object.
48
48
  """
49
49
  result = func(*args, **kwargs)
50
50
  if hasattr(result, "__await__"):