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
@@ -1,8 +1,9 @@
1
1
  # This file is dual licensed under the terms of the Apache License, Version
2
2
  # 2.0, and the BSD License. See the LICENSE file in the root of this repository
3
3
  # for complete details.
4
+ from __future__ import annotations
4
5
 
5
- from typing import Any, Iterator, Optional, Set
6
+ from typing import Any, Iterator
6
7
 
7
8
  from ._parser import parse_requirement as _parse_requirement
8
9
  from ._tokenizer import ParserSyntaxError
@@ -37,10 +38,10 @@ class Requirement:
37
38
  raise InvalidRequirement(str(e)) from e
38
39
 
39
40
  self.name: str = parsed.name
40
- self.url: Optional[str] = parsed.url or None
41
- self.extras: Set[str] = set(parsed.extras or [])
41
+ self.url: str | None = parsed.url or None
42
+ self.extras: set[str] = set(parsed.extras or [])
42
43
  self.specifier: SpecifierSet = SpecifierSet(parsed.specifier)
43
- self.marker: Optional[Marker] = None
44
+ self.marker: Marker | None = None
44
45
  if parsed.marker is not None:
45
46
  self.marker = Marker.__new__(Marker)
46
47
  self.marker._markers = _normalize_extra_values(parsed.marker)
@@ -8,10 +8,12 @@
8
8
  from packaging.version import Version
9
9
  """
10
10
 
11
+ from __future__ import annotations
12
+
11
13
  import abc
12
14
  import itertools
13
15
  import re
14
- from typing import Callable, Iterable, Iterator, List, Optional, Tuple, TypeVar, Union
16
+ from typing import Callable, Iterable, Iterator, TypeVar, Union
15
17
 
16
18
  from .utils import canonicalize_version
17
19
  from .version import Version
@@ -64,7 +66,7 @@ class BaseSpecifier(metaclass=abc.ABCMeta):
64
66
 
65
67
  @property
66
68
  @abc.abstractmethod
67
- def prereleases(self) -> Optional[bool]:
69
+ def prereleases(self) -> bool | None:
68
70
  """Whether or not pre-releases as a whole are allowed.
69
71
 
70
72
  This can be set to either ``True`` or ``False`` to explicitly enable or disable
@@ -79,14 +81,14 @@ class BaseSpecifier(metaclass=abc.ABCMeta):
79
81
  """
80
82
 
81
83
  @abc.abstractmethod
82
- def contains(self, item: str, prereleases: Optional[bool] = None) -> bool:
84
+ def contains(self, item: str, prereleases: bool | None = None) -> bool:
83
85
  """
84
86
  Determines if the given item is contained within this specifier.
85
87
  """
86
88
 
87
89
  @abc.abstractmethod
88
90
  def filter(
89
- self, iterable: Iterable[UnparsedVersionVar], prereleases: Optional[bool] = None
91
+ self, iterable: Iterable[UnparsedVersionVar], prereleases: bool | None = None
90
92
  ) -> Iterator[UnparsedVersionVar]:
91
93
  """
92
94
  Takes an iterable of items and filters them so that only items which
@@ -217,7 +219,7 @@ class Specifier(BaseSpecifier):
217
219
  "===": "arbitrary",
218
220
  }
219
221
 
220
- def __init__(self, spec: str = "", prereleases: Optional[bool] = None) -> None:
222
+ def __init__(self, spec: str = "", prereleases: bool | None = None) -> None:
221
223
  """Initialize a Specifier instance.
222
224
 
223
225
  :param spec:
@@ -232,9 +234,9 @@ class Specifier(BaseSpecifier):
232
234
  """
233
235
  match = self._regex.search(spec)
234
236
  if not match:
235
- raise InvalidSpecifier(f"Invalid specifier: '{spec}'")
237
+ raise InvalidSpecifier(f"Invalid specifier: {spec!r}")
236
238
 
237
- self._spec: Tuple[str, str] = (
239
+ self._spec: tuple[str, str] = (
238
240
  match.group("operator").strip(),
239
241
  match.group("version").strip(),
240
242
  )
@@ -254,7 +256,7 @@ class Specifier(BaseSpecifier):
254
256
  # operators, and if they are if they are including an explicit
255
257
  # prerelease.
256
258
  operator, version = self._spec
257
- if operator in ["==", ">=", "<=", "~=", "==="]:
259
+ if operator in ["==", ">=", "<=", "~=", "===", ">", "<"]:
258
260
  # The == specifier can include a trailing .*, if it does we
259
261
  # want to remove before parsing.
260
262
  if operator == "==" and version.endswith(".*"):
@@ -318,7 +320,7 @@ class Specifier(BaseSpecifier):
318
320
  return "{}{}".format(*self._spec)
319
321
 
320
322
  @property
321
- def _canonical_spec(self) -> Tuple[str, str]:
323
+ def _canonical_spec(self) -> tuple[str, str]:
322
324
  canonical_version = canonicalize_version(
323
325
  self._spec[1],
324
326
  strip_trailing_zero=(self._spec[0] != "~="),
@@ -495,7 +497,7 @@ class Specifier(BaseSpecifier):
495
497
  def _compare_arbitrary(self, prospective: Version, spec: str) -> bool:
496
498
  return str(prospective).lower() == str(spec).lower()
497
499
 
498
- def __contains__(self, item: Union[str, Version]) -> bool:
500
+ def __contains__(self, item: str | Version) -> bool:
499
501
  """Return whether or not the item is contained in this specifier.
500
502
 
501
503
  :param item: The item to check for.
@@ -516,9 +518,7 @@ class Specifier(BaseSpecifier):
516
518
  """
517
519
  return self.contains(item)
518
520
 
519
- def contains(
520
- self, item: UnparsedVersion, prereleases: Optional[bool] = None
521
- ) -> bool:
521
+ def contains(self, item: UnparsedVersion, prereleases: bool | None = None) -> bool:
522
522
  """Return whether or not the item is contained in this specifier.
523
523
 
524
524
  :param item:
@@ -563,7 +563,7 @@ class Specifier(BaseSpecifier):
563
563
  return operator_callable(normalized_item, self.version)
564
564
 
565
565
  def filter(
566
- self, iterable: Iterable[UnparsedVersionVar], prereleases: Optional[bool] = None
566
+ self, iterable: Iterable[UnparsedVersionVar], prereleases: bool | None = None
567
567
  ) -> Iterator[UnparsedVersionVar]:
568
568
  """Filter items in the given iterable, that match the specifier.
569
569
 
@@ -627,7 +627,7 @@ class Specifier(BaseSpecifier):
627
627
  _prefix_regex = re.compile(r"^([0-9]+)((?:a|b|c|rc)[0-9]+)$")
628
628
 
629
629
 
630
- def _version_split(version: str) -> List[str]:
630
+ def _version_split(version: str) -> list[str]:
631
631
  """Split version into components.
632
632
 
633
633
  The split components are intended for version comparison. The logic does
@@ -635,7 +635,7 @@ def _version_split(version: str) -> List[str]:
635
635
  components back with :func:`_version_join` may not produce the original
636
636
  version string.
637
637
  """
638
- result: List[str] = []
638
+ result: list[str] = []
639
639
 
640
640
  epoch, _, rest = version.rpartition("!")
641
641
  result.append(epoch or "0")
@@ -649,7 +649,7 @@ def _version_split(version: str) -> List[str]:
649
649
  return result
650
650
 
651
651
 
652
- def _version_join(components: List[str]) -> str:
652
+ def _version_join(components: list[str]) -> str:
653
653
  """Join split version components into a version string.
654
654
 
655
655
  This function assumes the input came from :func:`_version_split`, where the
@@ -666,7 +666,7 @@ def _is_not_suffix(segment: str) -> bool:
666
666
  )
667
667
 
668
668
 
669
- def _pad_version(left: List[str], right: List[str]) -> Tuple[List[str], List[str]]:
669
+ def _pad_version(left: list[str], right: list[str]) -> tuple[list[str], list[str]]:
670
670
  left_split, right_split = [], []
671
671
 
672
672
  # Get the release segment of our versions
@@ -695,13 +695,17 @@ class SpecifierSet(BaseSpecifier):
695
695
  """
696
696
 
697
697
  def __init__(
698
- self, specifiers: str = "", prereleases: Optional[bool] = None
698
+ self,
699
+ specifiers: str | Iterable[Specifier] = "",
700
+ prereleases: bool | None = None,
699
701
  ) -> None:
700
702
  """Initialize a SpecifierSet instance.
701
703
 
702
704
  :param specifiers:
703
705
  The string representation of a specifier or a comma-separated list of
704
706
  specifiers which will be parsed and normalized before use.
707
+ May also be an iterable of ``Specifier`` instances, which will be used
708
+ as is.
705
709
  :param prereleases:
706
710
  This tells the SpecifierSet if it should accept prerelease versions if
707
711
  applicable or not. The default of ``None`` will autodetect it from the
@@ -712,19 +716,24 @@ class SpecifierSet(BaseSpecifier):
712
716
  raised.
713
717
  """
714
718
 
715
- # Split on `,` to break each individual specifier into it's own item, and
716
- # strip each item to remove leading/trailing whitespace.
717
- split_specifiers = [s.strip() for s in specifiers.split(",") if s.strip()]
719
+ if isinstance(specifiers, str):
720
+ # Split on `,` to break each individual specifier into its own item, and
721
+ # strip each item to remove leading/trailing whitespace.
722
+ split_specifiers = [s.strip() for s in specifiers.split(",") if s.strip()]
718
723
 
719
- # Make each individual specifier a Specifier and save in a frozen set for later.
720
- self._specs = frozenset(map(Specifier, split_specifiers))
724
+ # Make each individual specifier a Specifier and save in a frozen set
725
+ # for later.
726
+ self._specs = frozenset(map(Specifier, split_specifiers))
727
+ else:
728
+ # Save the supplied specifiers in a frozen set.
729
+ self._specs = frozenset(specifiers)
721
730
 
722
731
  # Store our prereleases value so we can use it later to determine if
723
732
  # we accept prereleases or not.
724
733
  self._prereleases = prereleases
725
734
 
726
735
  @property
727
- def prereleases(self) -> Optional[bool]:
736
+ def prereleases(self) -> bool | None:
728
737
  # If we have been given an explicit prerelease modifier, then we'll
729
738
  # pass that through here.
730
739
  if self._prereleases is not None:
@@ -781,7 +790,7 @@ class SpecifierSet(BaseSpecifier):
781
790
  def __hash__(self) -> int:
782
791
  return hash(self._specs)
783
792
 
784
- def __and__(self, other: Union["SpecifierSet", str]) -> "SpecifierSet":
793
+ def __and__(self, other: SpecifierSet | str) -> SpecifierSet:
785
794
  """Return a SpecifierSet which is a combination of the two sets.
786
795
 
787
796
  :param other: The other object to combine with.
@@ -877,8 +886,8 @@ class SpecifierSet(BaseSpecifier):
877
886
  def contains(
878
887
  self,
879
888
  item: UnparsedVersion,
880
- prereleases: Optional[bool] = None,
881
- installed: Optional[bool] = None,
889
+ prereleases: bool | None = None,
890
+ installed: bool | None = None,
882
891
  ) -> bool:
883
892
  """Return whether or not the item is contained in this SpecifierSet.
884
893
 
@@ -932,7 +941,7 @@ class SpecifierSet(BaseSpecifier):
932
941
  return all(s.contains(item, prereleases=prereleases) for s in self._specs)
933
942
 
934
943
  def filter(
935
- self, iterable: Iterable[UnparsedVersionVar], prereleases: Optional[bool] = None
944
+ self, iterable: Iterable[UnparsedVersionVar], prereleases: bool | None = None
936
945
  ) -> Iterator[UnparsedVersionVar]:
937
946
  """Filter items in the given iterable, that match the specifiers in this set.
938
947
 
@@ -989,8 +998,8 @@ class SpecifierSet(BaseSpecifier):
989
998
  # which will filter out any pre-releases, unless there are no final
990
999
  # releases.
991
1000
  else:
992
- filtered: List[UnparsedVersionVar] = []
993
- found_prereleases: List[UnparsedVersionVar] = []
1001
+ filtered: list[UnparsedVersionVar] = []
1002
+ found_prereleases: list[UnparsedVersionVar] = []
994
1003
 
995
1004
  for item in iterable:
996
1005
  parsed_version = _coerce_version(item)
@@ -2,6 +2,8 @@
2
2
  # 2.0, and the BSD License. See the LICENSE file in the root of this repository
3
3
  # for complete details.
4
4
 
5
+ from __future__ import annotations
6
+
5
7
  import logging
6
8
  import platform
7
9
  import re
@@ -11,15 +13,10 @@ import sys
11
13
  import sysconfig
12
14
  from importlib.machinery import EXTENSION_SUFFIXES
13
15
  from typing import (
14
- Dict,
15
- FrozenSet,
16
16
  Iterable,
17
17
  Iterator,
18
- List,
19
- Optional,
20
18
  Sequence,
21
19
  Tuple,
22
- Union,
23
20
  cast,
24
21
  )
25
22
 
@@ -28,9 +25,9 @@ from . import _manylinux, _musllinux
28
25
  logger = logging.getLogger(__name__)
29
26
 
30
27
  PythonVersion = Sequence[int]
31
- MacVersion = Tuple[int, int]
28
+ AppleVersion = Tuple[int, int]
32
29
 
33
- INTERPRETER_SHORT_NAMES: Dict[str, str] = {
30
+ INTERPRETER_SHORT_NAMES: dict[str, str] = {
34
31
  "python": "py", # Generic.
35
32
  "cpython": "cp",
36
33
  "pypy": "pp",
@@ -50,7 +47,7 @@ class Tag:
50
47
  is also supported.
51
48
  """
52
49
 
53
- __slots__ = ["_interpreter", "_abi", "_platform", "_hash"]
50
+ __slots__ = ["_abi", "_hash", "_interpreter", "_platform"]
54
51
 
55
52
  def __init__(self, interpreter: str, abi: str, platform: str) -> None:
56
53
  self._interpreter = interpreter.lower()
@@ -96,7 +93,7 @@ class Tag:
96
93
  return f"<{self} @ {id(self)}>"
97
94
 
98
95
 
99
- def parse_tag(tag: str) -> FrozenSet[Tag]:
96
+ def parse_tag(tag: str) -> frozenset[Tag]:
100
97
  """
101
98
  Parses the provided tag (e.g. `py3-none-any`) into a frozenset of Tag instances.
102
99
 
@@ -112,8 +109,8 @@ def parse_tag(tag: str) -> FrozenSet[Tag]:
112
109
  return frozenset(tags)
113
110
 
114
111
 
115
- def _get_config_var(name: str, warn: bool = False) -> Union[int, str, None]:
116
- value: Union[int, str, None] = sysconfig.get_config_var(name)
112
+ def _get_config_var(name: str, warn: bool = False) -> int | str | None:
113
+ value: int | str | None = sysconfig.get_config_var(name)
117
114
  if value is None and warn:
118
115
  logger.debug(
119
116
  "Config variable '%s' is unset, Python ABI tag may be incorrect", name
@@ -125,7 +122,7 @@ def _normalize_string(string: str) -> str:
125
122
  return string.replace(".", "_").replace("-", "_").replace(" ", "_")
126
123
 
127
124
 
128
- def _is_threaded_cpython(abis: List[str]) -> bool:
125
+ def _is_threaded_cpython(abis: list[str]) -> bool:
129
126
  """
130
127
  Determine if the ABI corresponds to a threaded (`--disable-gil`) build.
131
128
 
@@ -151,7 +148,7 @@ def _abi3_applies(python_version: PythonVersion, threading: bool) -> bool:
151
148
  return len(python_version) > 1 and tuple(python_version) >= (3, 2) and not threading
152
149
 
153
150
 
154
- def _cpython_abis(py_version: PythonVersion, warn: bool = False) -> List[str]:
151
+ def _cpython_abis(py_version: PythonVersion, warn: bool = False) -> list[str]:
155
152
  py_version = tuple(py_version) # To allow for version comparison.
156
153
  abis = []
157
154
  version = _version_nodot(py_version[:2])
@@ -185,9 +182,9 @@ def _cpython_abis(py_version: PythonVersion, warn: bool = False) -> List[str]:
185
182
 
186
183
 
187
184
  def cpython_tags(
188
- python_version: Optional[PythonVersion] = None,
189
- abis: Optional[Iterable[str]] = None,
190
- platforms: Optional[Iterable[str]] = None,
185
+ python_version: PythonVersion | None = None,
186
+ abis: Iterable[str] | None = None,
187
+ platforms: Iterable[str] | None = None,
191
188
  *,
192
189
  warn: bool = False,
193
190
  ) -> Iterator[Tag]:
@@ -238,13 +235,12 @@ def cpython_tags(
238
235
  if use_abi3:
239
236
  for minor_version in range(python_version[1] - 1, 1, -1):
240
237
  for platform_ in platforms:
241
- interpreter = "cp{version}".format(
242
- version=_version_nodot((python_version[0], minor_version))
243
- )
238
+ version = _version_nodot((python_version[0], minor_version))
239
+ interpreter = f"cp{version}"
244
240
  yield Tag(interpreter, "abi3", platform_)
245
241
 
246
242
 
247
- def _generic_abi() -> List[str]:
243
+ def _generic_abi() -> list[str]:
248
244
  """
249
245
  Return the ABI tag based on EXT_SUFFIX.
250
246
  """
@@ -286,9 +282,9 @@ def _generic_abi() -> List[str]:
286
282
 
287
283
 
288
284
  def generic_tags(
289
- interpreter: Optional[str] = None,
290
- abis: Optional[Iterable[str]] = None,
291
- platforms: Optional[Iterable[str]] = None,
285
+ interpreter: str | None = None,
286
+ abis: Iterable[str] | None = None,
287
+ platforms: Iterable[str] | None = None,
292
288
  *,
293
289
  warn: bool = False,
294
290
  ) -> Iterator[Tag]:
@@ -332,9 +328,9 @@ def _py_interpreter_range(py_version: PythonVersion) -> Iterator[str]:
332
328
 
333
329
 
334
330
  def compatible_tags(
335
- python_version: Optional[PythonVersion] = None,
336
- interpreter: Optional[str] = None,
337
- platforms: Optional[Iterable[str]] = None,
331
+ python_version: PythonVersion | None = None,
332
+ interpreter: str | None = None,
333
+ platforms: Iterable[str] | None = None,
338
334
  ) -> Iterator[Tag]:
339
335
  """
340
336
  Yields the sequence of tags that are compatible with a specific version of Python.
@@ -366,7 +362,7 @@ def _mac_arch(arch: str, is_32bit: bool = _32_BIT_INTERPRETER) -> str:
366
362
  return "i386"
367
363
 
368
364
 
369
- def _mac_binary_formats(version: MacVersion, cpu_arch: str) -> List[str]:
365
+ def _mac_binary_formats(version: AppleVersion, cpu_arch: str) -> list[str]:
370
366
  formats = [cpu_arch]
371
367
  if cpu_arch == "x86_64":
372
368
  if version < (10, 4):
@@ -399,7 +395,7 @@ def _mac_binary_formats(version: MacVersion, cpu_arch: str) -> List[str]:
399
395
 
400
396
 
401
397
  def mac_platforms(
402
- version: Optional[MacVersion] = None, arch: Optional[str] = None
398
+ version: AppleVersion | None = None, arch: str | None = None
403
399
  ) -> Iterator[str]:
404
400
  """
405
401
  Yields the platform tags for a macOS system.
@@ -411,7 +407,7 @@ def mac_platforms(
411
407
  """
412
408
  version_str, _, cpu_arch = platform.mac_ver()
413
409
  if version is None:
414
- version = cast("MacVersion", tuple(map(int, version_str.split(".")[:2])))
410
+ version = cast("AppleVersion", tuple(map(int, version_str.split(".")[:2])))
415
411
  if version == (10, 16):
416
412
  # When built against an older macOS SDK, Python will report macOS 10.16
417
413
  # instead of the real version.
@@ -427,7 +423,7 @@ def mac_platforms(
427
423
  stdout=subprocess.PIPE,
428
424
  text=True,
429
425
  ).stdout
430
- version = cast("MacVersion", tuple(map(int, version_str.split(".")[:2])))
426
+ version = cast("AppleVersion", tuple(map(int, version_str.split(".")[:2])))
431
427
  else:
432
428
  version = version
433
429
  if arch is None:
@@ -438,24 +434,22 @@ def mac_platforms(
438
434
  if (10, 0) <= version and version < (11, 0):
439
435
  # Prior to Mac OS 11, each yearly release of Mac OS bumped the
440
436
  # "minor" version number. The major version was always 10.
437
+ major_version = 10
441
438
  for minor_version in range(version[1], -1, -1):
442
- compat_version = 10, minor_version
439
+ compat_version = major_version, minor_version
443
440
  binary_formats = _mac_binary_formats(compat_version, arch)
444
441
  for binary_format in binary_formats:
445
- yield "macosx_{major}_{minor}_{binary_format}".format(
446
- major=10, minor=minor_version, binary_format=binary_format
447
- )
442
+ yield f"macosx_{major_version}_{minor_version}_{binary_format}"
448
443
 
449
444
  if version >= (11, 0):
450
445
  # Starting with Mac OS 11, each yearly release bumps the major version
451
446
  # number. The minor versions are now the midyear updates.
447
+ minor_version = 0
452
448
  for major_version in range(version[0], 10, -1):
453
- compat_version = major_version, 0
449
+ compat_version = major_version, minor_version
454
450
  binary_formats = _mac_binary_formats(compat_version, arch)
455
451
  for binary_format in binary_formats:
456
- yield "macosx_{major}_{minor}_{binary_format}".format(
457
- major=major_version, minor=0, binary_format=binary_format
458
- )
452
+ yield f"macosx_{major_version}_{minor_version}_{binary_format}"
459
453
 
460
454
  if version >= (11, 0):
461
455
  # Mac OS 11 on x86_64 is compatible with binaries from previous releases.
@@ -465,25 +459,75 @@ def mac_platforms(
465
459
  # However, the "universal2" binary format can have a
466
460
  # macOS version earlier than 11.0 when the x86_64 part of the binary supports
467
461
  # that version of macOS.
462
+ major_version = 10
468
463
  if arch == "x86_64":
469
464
  for minor_version in range(16, 3, -1):
470
- compat_version = 10, minor_version
465
+ compat_version = major_version, minor_version
471
466
  binary_formats = _mac_binary_formats(compat_version, arch)
472
467
  for binary_format in binary_formats:
473
- yield "macosx_{major}_{minor}_{binary_format}".format(
474
- major=compat_version[0],
475
- minor=compat_version[1],
476
- binary_format=binary_format,
477
- )
468
+ yield f"macosx_{major_version}_{minor_version}_{binary_format}"
478
469
  else:
479
470
  for minor_version in range(16, 3, -1):
480
- compat_version = 10, minor_version
471
+ compat_version = major_version, minor_version
481
472
  binary_format = "universal2"
482
- yield "macosx_{major}_{minor}_{binary_format}".format(
483
- major=compat_version[0],
484
- minor=compat_version[1],
485
- binary_format=binary_format,
486
- )
473
+ yield f"macosx_{major_version}_{minor_version}_{binary_format}"
474
+
475
+
476
+ def ios_platforms(
477
+ version: AppleVersion | None = None, multiarch: str | None = None
478
+ ) -> Iterator[str]:
479
+ """
480
+ Yields the platform tags for an iOS system.
481
+
482
+ :param version: A two-item tuple specifying the iOS version to generate
483
+ platform tags for. Defaults to the current iOS version.
484
+ :param multiarch: The CPU architecture+ABI to generate platform tags for -
485
+ (the value used by `sys.implementation._multiarch` e.g.,
486
+ `arm64_iphoneos` or `x84_64_iphonesimulator`). Defaults to the current
487
+ multiarch value.
488
+ """
489
+ if version is None:
490
+ # if iOS is the current platform, ios_ver *must* be defined. However,
491
+ # it won't exist for CPython versions before 3.13, which causes a mypy
492
+ # error.
493
+ _, release, _, _ = platform.ios_ver() # type: ignore[attr-defined, unused-ignore]
494
+ version = cast("AppleVersion", tuple(map(int, release.split(".")[:2])))
495
+
496
+ if multiarch is None:
497
+ multiarch = sys.implementation._multiarch
498
+ multiarch = multiarch.replace("-", "_")
499
+
500
+ ios_platform_template = "ios_{major}_{minor}_{multiarch}"
501
+
502
+ # Consider any iOS major.minor version from the version requested, down to
503
+ # 12.0. 12.0 is the first iOS version that is known to have enough features
504
+ # to support CPython. Consider every possible minor release up to X.9. There
505
+ # highest the minor has ever gone is 8 (14.8 and 15.8) but having some extra
506
+ # candidates that won't ever match doesn't really hurt, and it saves us from
507
+ # having to keep an explicit list of known iOS versions in the code. Return
508
+ # the results descending order of version number.
509
+
510
+ # If the requested major version is less than 12, there won't be any matches.
511
+ if version[0] < 12:
512
+ return
513
+
514
+ # Consider the actual X.Y version that was requested.
515
+ yield ios_platform_template.format(
516
+ major=version[0], minor=version[1], multiarch=multiarch
517
+ )
518
+
519
+ # Consider every minor version from X.0 to the minor version prior to the
520
+ # version requested by the platform.
521
+ for minor in range(version[1] - 1, -1, -1):
522
+ yield ios_platform_template.format(
523
+ major=version[0], minor=minor, multiarch=multiarch
524
+ )
525
+
526
+ for major in range(version[0] - 1, 11, -1):
527
+ for minor in range(9, -1, -1):
528
+ yield ios_platform_template.format(
529
+ major=major, minor=minor, multiarch=multiarch
530
+ )
487
531
 
488
532
 
489
533
  def _linux_platforms(is_32bit: bool = _32_BIT_INTERPRETER) -> Iterator[str]:
@@ -515,6 +559,8 @@ def platform_tags() -> Iterator[str]:
515
559
  """
516
560
  if platform.system() == "Darwin":
517
561
  return mac_platforms()
562
+ elif platform.system() == "iOS":
563
+ return ios_platforms()
518
564
  elif platform.system() == "Linux":
519
565
  return _linux_platforms()
520
566
  else: