eggfetch 0.2.1__tar.gz → 0.3.0__tar.gz

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 (326) hide show
  1. {eggfetch-0.2.1 → eggfetch-0.3.0}/Cargo.lock +48 -43
  2. eggfetch-0.3.0/PKG-INFO +154 -0
  3. eggfetch-0.3.0/README.md +125 -0
  4. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/Cargo.toml +12 -4
  5. eggfetch-0.3.0/crates/eggfetch-core/README.md +125 -0
  6. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/auth.rs +6 -0
  7. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/body.rs +28 -13
  8. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/client/routes.rs +119 -113
  9. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/client.rs +69 -9
  10. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/compression.rs +72 -17
  11. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/cookie.rs +50 -11
  12. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/error.rs +474 -0
  13. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/headers.rs +4 -1
  14. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/http_origin.rs +123 -4
  15. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/http_version.rs +134 -10
  16. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/lib.rs +6 -1
  17. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/multipart.rs +9 -1
  18. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/network_stream.rs +9 -3
  19. eggfetch-0.3.0/crates/eggfetch-core/src/pipeline/custom_dialing.rs +225 -0
  20. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/pipeline/finalize.rs +4 -1
  21. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/pipeline/h3_dispatch.rs +8 -3
  22. eggfetch-0.3.0/crates/eggfetch-core/src/pipeline/hop.rs +563 -0
  23. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/pipeline/hyper_dispatch.rs +47 -13
  24. eggfetch-0.3.0/crates/eggfetch-core/src/pipeline/lean.rs +94 -0
  25. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/pipeline/mod.rs +148 -60
  26. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/pipeline/prepare.rs +57 -61
  27. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/pipeline/proxy_dispatch.rs +12 -5
  28. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/pipeline/redirect.rs +125 -268
  29. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/pipeline/retry.rs +64 -9
  30. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/pipeline/route.rs +6 -0
  31. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/pool.rs +329 -117
  32. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/proxy.rs +17 -14
  33. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/redact.rs +34 -6
  34. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/redirect.rs +8 -3
  35. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/request.rs +11 -28
  36. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/response.rs +33 -9
  37. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/retry.rs +68 -8
  38. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/stream/body_timeout.rs +2 -1
  39. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/stream/write_timeout.rs +4 -2
  40. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/timeout.rs +70 -12
  41. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/tls.rs +12 -6
  42. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/transport/connect.rs +108 -29
  43. eggfetch-0.3.0/crates/eggfetch-core/src/transport/datagram.rs +923 -0
  44. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/transport/direct.rs +103 -18
  45. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/transport/direct_connector.rs +6 -5
  46. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/transport/http3.rs +389 -47
  47. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/transport/hyper_client.rs +24 -47
  48. eggfetch-0.3.0/crates/eggfetch-core/src/transport/mod.rs +274 -0
  49. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/transport/proxy.rs +99 -43
  50. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/transport/socks.rs +22 -8
  51. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/transport/uds.rs +19 -9
  52. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/transport_hints.rs +47 -1
  53. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/tests/adverse_tests.rs +5 -1
  54. eggfetch-0.3.0/crates/eggfetch-core/tests/consolidation_evidence_tests.rs +392 -0
  55. eggfetch-0.3.0/crates/eggfetch-core/tests/cookie_policy_parity_tests.rs +541 -0
  56. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/tests/custom_dialer_tests.rs +4 -0
  57. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/tests/direct_transport_tests.rs +17 -1
  58. eggfetch-0.3.0/crates/eggfetch-core/tests/h3_datagram_route.rs +1078 -0
  59. eggfetch-0.3.0/crates/eggfetch-core/tests/hop_equivalence_support.rs +210 -0
  60. eggfetch-0.3.0/crates/eggfetch-core/tests/http_version_capability_tests.rs +150 -0
  61. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/tests/integration.rs +5 -1
  62. eggfetch-0.3.0/crates/eggfetch-core/tests/lean_path_equivalence.rs +68 -0
  63. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/tests/lean_policy_tests.rs +1 -1
  64. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/tests/lean_route_tests.rs +1 -1
  65. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/tests/native_http_body_tests.rs +43 -1
  66. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/tests/native_tower_service_tests.rs +4 -0
  67. eggfetch-0.3.0/crates/eggfetch-core/tests/native_transport_failure_classification.rs +429 -0
  68. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/tests/network_stream_tests.rs +15 -5
  69. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/tests/pool_tests.rs +1 -0
  70. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/tests/proxy_tests.rs +46 -21
  71. eggfetch-0.3.0/crates/eggfetch-core/tests/public_api_contracts.rs +179 -0
  72. eggfetch-0.3.0/crates/eggfetch-core/tests/redirect_path_equivalence.rs +65 -0
  73. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/tests/redirect_strict_tests.rs +4 -0
  74. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/tests/request_failure_tests.rs +4 -0
  75. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/tests/resolved_route_cache_tests.rs +4 -0
  76. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/tests/resource_stabilization.rs +1 -0
  77. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/tests/retry_integration.rs +4 -0
  78. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/tests/streaming_decompression_tests.rs +10 -0
  79. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/tests/timeout_tests.rs +122 -1
  80. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/tests/tls_integration.rs +4 -0
  81. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/tests/tls_response_completeness.rs +4 -0
  82. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/tests/total_body_deadline_tests.rs +4 -0
  83. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/tests/trailer_tests.rs +1 -0
  84. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/tests/transport_metrics_tests.rs +22 -8
  85. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-http-connect/Cargo.toml +1 -1
  86. eggfetch-0.3.0/crates/eggfetch-http-connect/README.md +125 -0
  87. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-http-connect/src/target.rs +23 -1
  88. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-http-connect/tests/wire.rs +13 -1
  89. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/Cargo.toml +2 -2
  90. eggfetch-0.3.0/crates/eggfetch-python/README.md +125 -0
  91. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/src/async_client.rs +62 -13
  92. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/src/auth.rs +8 -2
  93. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/src/client.rs +78 -26
  94. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/src/conversion.rs +85 -11
  95. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/src/cookies.rs +59 -10
  96. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/src/errors.rs +73 -13
  97. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/src/headers.rs +43 -8
  98. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/src/lib.rs +47 -9
  99. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/src/limits.rs +7 -3
  100. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/src/multipart.rs +81 -19
  101. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/src/network_stream.rs +111 -50
  102. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/src/proxy.rs +63 -3
  103. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/src/request_preparation.rs +58 -13
  104. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/src/response.rs +33 -63
  105. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/src/retry.rs +15 -5
  106. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/src/streaming/async_iterators.rs +42 -14
  107. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/src/streaming/sync_bridge.rs +36 -8
  108. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/src/streaming/sync_iterators.rs +63 -8
  109. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/src/streaming.rs +2 -3
  110. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/src/timeout.rs +52 -17
  111. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/src/tls.rs +5 -1
  112. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/src/trace_bridge.rs +56 -17
  113. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/native_fixtures.py +10 -1
  114. eggfetch-0.3.0/crates/eggfetch-python/tests/compat/test_cookie_policy_parity.py +478 -0
  115. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_cookies.py +20 -0
  116. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_corrective_01_tls_and_proxy_trust_safety.py +17 -5
  117. eggfetch-0.3.0/crates/eggfetch-python/tests/compat/test_environment_isolation.py +367 -0
  118. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_h2_differential.py +5 -1
  119. eggfetch-0.3.0/crates/eggfetch-python/tests/compat/test_httpx2_origin_reachability.py +274 -0
  120. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_httpx2_websocket.py +27 -1
  121. eggfetch-0.3.0/crates/eggfetch-python/tests/compat/test_httpx_transport_bridge.py +84 -0
  122. eggfetch-0.3.0/crates/eggfetch-python/tests/compat/test_httpx_transport_sdk_construction.py +128 -0
  123. eggfetch-0.3.0/crates/eggfetch-python/tests/compat/test_redirect_policy_parity.py +519 -0
  124. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_resource_assertions.py +4 -0
  125. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_ssl_context_network_proof.py +1 -0
  126. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_ssl_context_translation.py +21 -0
  127. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_url_query.py +11 -0
  128. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/conftest.py +14 -0
  129. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/native_api_manifest.json +2 -2
  130. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/test_differential.py +19 -0
  131. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/test_sync.py +10 -1
  132. {eggfetch-0.2.1 → eggfetch-0.3.0}/pyproject.toml +4 -1
  133. {eggfetch-0.2.1 → eggfetch-0.3.0}/python/eggfetch/_native.pyi +2 -2
  134. {eggfetch-0.2.1 → eggfetch-0.3.0}/python/eggfetch/_ssl_context.py +17 -6
  135. {eggfetch-0.2.1 → eggfetch-0.3.0}/python/eggfetch/compat/httpx/_client.py +16 -2
  136. {eggfetch-0.2.1 → eggfetch-0.3.0}/python/eggfetch/compat/httpx/_cookies.py +1 -2
  137. {eggfetch-0.2.1 → eggfetch-0.3.0}/python/eggfetch/compat/httpx/_transports.py +10 -0
  138. {eggfetch-0.2.1 → eggfetch-0.3.0}/python/eggfetch/compat/httpx/_urls.py +67 -19
  139. {eggfetch-0.2.1 → eggfetch-0.3.0}/python/eggfetch/compat/httpx2/__init__.py +4 -2
  140. {eggfetch-0.2.1 → eggfetch-0.3.0}/python/eggfetch/compat/httpx2/__init__.pyi +8 -2
  141. {eggfetch-0.2.1 → eggfetch-0.3.0}/python/eggfetch/compat/httpx2/_api.py +1 -1
  142. {eggfetch-0.2.1 → eggfetch-0.3.0}/python/eggfetch/compat/httpx2/_client.py +30 -0
  143. eggfetch-0.3.0/python/eggfetch/compat/httpx2/_request.py +67 -0
  144. eggfetch-0.3.0/python/eggfetch/compat/httpx2/_response.py +90 -0
  145. {eggfetch-0.2.1 → eggfetch-0.3.0}/python/eggfetch/compat/httpx2/_urls.py +60 -0
  146. {eggfetch-0.2.1 → eggfetch-0.3.0}/python/eggfetch/compat/httpx2/websockets/_api.py +51 -9
  147. eggfetch-0.3.0/python/eggfetch/integrations/__init__.py +2 -0
  148. eggfetch-0.3.0/python/eggfetch/integrations/httpx.py +197 -0
  149. eggfetch-0.2.1/PKG-INFO +0 -271
  150. eggfetch-0.2.1/README.md +0 -244
  151. eggfetch-0.2.1/crates/eggfetch-core/README.md +0 -244
  152. eggfetch-0.2.1/crates/eggfetch-core/src/pipeline/lean.rs +0 -121
  153. eggfetch-0.2.1/crates/eggfetch-core/src/transport/mod.rs +0 -129
  154. eggfetch-0.2.1/crates/eggfetch-core/tests/public_api_contracts.rs +0 -78
  155. eggfetch-0.2.1/crates/eggfetch-http-connect/README.md +0 -244
  156. eggfetch-0.2.1/crates/eggfetch-python/README.md +0 -244
  157. eggfetch-0.2.1/python/eggfetch/compat/httpx2/_request.py +0 -7
  158. eggfetch-0.2.1/python/eggfetch/compat/httpx2/_response.py +0 -7
  159. {eggfetch-0.2.1 → eggfetch-0.3.0}/Cargo.toml +0 -0
  160. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/examples/quickstart.rs +0 -0
  161. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/client/config.rs +0 -0
  162. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/client/connectors.rs +0 -0
  163. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/h2_headers.rs +0 -0
  164. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/limits.rs +0 -0
  165. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/proxy/environment.rs +0 -0
  166. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/proxy/identity.rs +0 -0
  167. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/proxy/no_proxy.rs +0 -0
  168. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/response_decode.rs +0 -0
  169. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/service.rs +0 -0
  170. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/stream/mod.rs +0 -0
  171. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/trace.rs +0 -0
  172. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/transport/alt_svc.rs +0 -0
  173. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/transport/connect_timeout.rs +0 -0
  174. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/transport/dialer.rs +0 -0
  175. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/transport/lifecycle.rs +0 -0
  176. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/transport/metrics.rs +0 -0
  177. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/src/transport/standard_resolver.rs +0 -0
  178. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/tests/cross_feature_tests.rs +1 -1
  179. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/tests/h3_alt_svc_discovery.rs +0 -0
  180. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/tests/h3_hardening.rs +1 -1
  181. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/tests/h3_integration.rs +1 -1
  182. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/tests/h3_interop_qualification.rs +1 -1
  183. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/tests/http2_tests.rs +1 -1
  184. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/tests/http3_tests.rs +0 -0
  185. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/tests/native_json.rs +1 -1
  186. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/tests/proxy_env_tests.rs +0 -0
  187. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/tests/response_body_public_shape.rs +0 -0
  188. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/tests/test_server.rs +0 -0
  189. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-core/tests/tls_fixtures.rs +0 -0
  190. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-http-connect/src/error.rs +0 -0
  191. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-http-connect/src/lib.rs +0 -0
  192. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-http-connect/src/request.rs +0 -0
  193. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-http-connect/src/response.rs +0 -0
  194. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/src/extensions.rs +0 -0
  195. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/src/streaming/decoding.rs +0 -0
  196. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/src/streaming/state.rs +0 -0
  197. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/__init__.py +0 -0
  198. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/conftest.py +0 -0
  199. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/fixtures.py +0 -0
  200. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_asgi.py +0 -0
  201. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_auth.py +0 -0
  202. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_auth_input_normalization.py +0 -0
  203. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_auth_replay.py +0 -0
  204. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_backends.py +0 -0
  205. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_behavior_cases.py +0 -0
  206. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_client.py +0 -0
  207. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_client_mutability_and_state.py +0 -0
  208. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_client_stream_overrides.py +0 -0
  209. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_config_objects.py +0 -0
  210. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_cookie_scope_parity.py +0 -0
  211. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_corrective_01_tls_network_proof.py +0 -0
  212. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_corrective_02_extensions_and_wire_metadata.py +0 -0
  213. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_corrective_03_network_stream_upgrade.py +0 -0
  214. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_corrective_kernel.py +0 -0
  215. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_downstream_portfolio.py +0 -0
  216. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_downstream_runner_negative.py +0 -0
  217. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_environment.py +0 -0
  218. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_exceptions.py +0 -0
  219. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_extensions.py +0 -0
  220. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_headers.py +0 -0
  221. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_hook_auth_ordering.py +0 -0
  222. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_hook_cookie_auth_ordering.py +0 -0
  223. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_hooks.py +0 -0
  224. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_httpx2_api_parity.py +0 -0
  225. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_httpx2_behavior.py +0 -0
  226. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_httpx2_sse.py +0 -0
  227. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_httpx_extras.py +0 -0
  228. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_httpx_reference_pinning.py +0 -0
  229. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_httpx_required.py +0 -0
  230. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_imports.py +0 -0
  231. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_lifecycle.py +0 -0
  232. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_lossy_conversions.py +0 -0
  233. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_merge_lossless.py +0 -0
  234. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_merge_matrix.py +0 -0
  235. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_mock_transport.py +0 -0
  236. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_mounts.py +0 -0
  237. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_multihop_cleanup.py +0 -0
  238. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_native_proxy_tls.py +0 -0
  239. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_native_timeout_classification.py +0 -0
  240. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_no_proxy_differential.py +0 -0
  241. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_oracle_negative.py +0 -0
  242. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_protocol_and_unsupported_options.py +0 -0
  243. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_proxy_differential.py +0 -0
  244. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_proxy_phase05_tracks.py +0 -0
  245. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_raw_stream_httpx_differential.py +0 -0
  246. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_raw_stream_lifecycle.py +0 -0
  247. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_redirect_state_machine_parity.py +0 -0
  248. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_request.py +0 -0
  249. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_request_construction_parity.py +0 -0
  250. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_request_stream_state.py +0 -0
  251. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_request_streaming.py +0 -0
  252. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_response.py +0 -0
  253. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_response_encoding_parity.py +0 -0
  254. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_response_metadata_parity.py +0 -0
  255. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_response_status_and_redirect_state.py +0 -0
  256. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_response_stream_state_parity.py +0 -0
  257. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_response_streaming.py +0 -0
  258. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_shutdown.py +0 -0
  259. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_soak.py +0 -0
  260. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_socks_transport.py +0 -0
  261. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_stream_resources.py +0 -0
  262. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_timeout_integration.py +0 -0
  263. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_timeout_proxysis.py +0 -0
  264. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_timeout_reference_differential.py +0 -0
  265. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_top_level_helpers_parity.py +0 -0
  266. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_trace_detection.py +0 -0
  267. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_transports.py +0 -0
  268. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_uds_transport.py +0 -0
  269. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/compat/test_wsgi.py +0 -0
  270. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/test_async.py +0 -0
  271. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/test_auth.py +0 -0
  272. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/test_close_races.py +0 -0
  273. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/test_cookie_auth.py +0 -0
  274. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/test_cookies.py +0 -0
  275. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/test_http2.py +0 -0
  276. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/test_interpreter_shutdown.py +0 -0
  277. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/test_native_api.py +0 -0
  278. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/test_parity.py +0 -0
  279. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/test_proxy.py +0 -0
  280. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/test_python_typing_surface.py +0 -0
  281. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/test_redirects.py +0 -0
  282. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/test_response_compat.py +0 -0
  283. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/test_retry.py +0 -0
  284. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/test_streaming.py +0 -0
  285. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/typing/compat_consumer.py +0 -0
  286. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/typing/consumer.py +0 -0
  287. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/typing/negative_sync_async_body.py +0 -0
  288. {eggfetch-0.2.1 → eggfetch-0.3.0}/crates/eggfetch-python/tests/typing/negative_verify_and_return.py +0 -0
  289. {eggfetch-0.2.1 → eggfetch-0.3.0}/python/eggfetch/__init__.py +0 -0
  290. {eggfetch-0.2.1 → eggfetch-0.3.0}/python/eggfetch/__init__.pyi +0 -0
  291. {eggfetch-0.2.1 → eggfetch-0.3.0}/python/eggfetch/compat/__init__.py +0 -0
  292. {eggfetch-0.2.1 → eggfetch-0.3.0}/python/eggfetch/compat/httpx/__init__.py +0 -0
  293. {eggfetch-0.2.1 → eggfetch-0.3.0}/python/eggfetch/compat/httpx/__init__.pyi +0 -0
  294. {eggfetch-0.2.1 → eggfetch-0.3.0}/python/eggfetch/compat/httpx/_asgi.py +0 -0
  295. {eggfetch-0.2.1 → eggfetch-0.3.0}/python/eggfetch/compat/httpx/_auth.py +0 -0
  296. {eggfetch-0.2.1 → eggfetch-0.3.0}/python/eggfetch/compat/httpx/_diagnostics.py +0 -0
  297. {eggfetch-0.2.1 → eggfetch-0.3.0}/python/eggfetch/compat/httpx/_exceptions.py +0 -0
  298. {eggfetch-0.2.1 → eggfetch-0.3.0}/python/eggfetch/compat/httpx/_headers.py +0 -0
  299. {eggfetch-0.2.1 → eggfetch-0.3.0}/python/eggfetch/compat/httpx/_limits.py +0 -0
  300. {eggfetch-0.2.1 → eggfetch-0.3.0}/python/eggfetch/compat/httpx/_mock.py +0 -0
  301. {eggfetch-0.2.1 → eggfetch-0.3.0}/python/eggfetch/compat/httpx/_proxy.py +0 -0
  302. {eggfetch-0.2.1 → eggfetch-0.3.0}/python/eggfetch/compat/httpx/_request.py +0 -0
  303. {eggfetch-0.2.1 → eggfetch-0.3.0}/python/eggfetch/compat/httpx/_response.py +0 -0
  304. {eggfetch-0.2.1 → eggfetch-0.3.0}/python/eggfetch/compat/httpx/_ssl_context.py +0 -0
  305. {eggfetch-0.2.1 → eggfetch-0.3.0}/python/eggfetch/compat/httpx/_status_codes.py +0 -0
  306. {eggfetch-0.2.1 → eggfetch-0.3.0}/python/eggfetch/compat/httpx/_stream.py +0 -0
  307. {eggfetch-0.2.1 → eggfetch-0.3.0}/python/eggfetch/compat/httpx/_timeout.py +0 -0
  308. {eggfetch-0.2.1 → eggfetch-0.3.0}/python/eggfetch/compat/httpx/_wsgi.py +0 -0
  309. {eggfetch-0.2.1 → eggfetch-0.3.0}/python/eggfetch/compat/httpx2/_alias.py +0 -0
  310. {eggfetch-0.2.1 → eggfetch-0.3.0}/python/eggfetch/compat/httpx2/_asgi.py +0 -0
  311. {eggfetch-0.2.1 → eggfetch-0.3.0}/python/eggfetch/compat/httpx2/_auth.py +0 -0
  312. {eggfetch-0.2.1 → eggfetch-0.3.0}/python/eggfetch/compat/httpx2/_config.py +0 -0
  313. {eggfetch-0.2.1 → eggfetch-0.3.0}/python/eggfetch/compat/httpx2/_cookies.py +0 -0
  314. {eggfetch-0.2.1 → eggfetch-0.3.0}/python/eggfetch/compat/httpx2/_exceptions.py +0 -0
  315. {eggfetch-0.2.1 → eggfetch-0.3.0}/python/eggfetch/compat/httpx2/_headers.py +0 -0
  316. {eggfetch-0.2.1 → eggfetch-0.3.0}/python/eggfetch/compat/httpx2/_mock.py +0 -0
  317. {eggfetch-0.2.1 → eggfetch-0.3.0}/python/eggfetch/compat/httpx2/_sse.py +0 -0
  318. {eggfetch-0.2.1 → eggfetch-0.3.0}/python/eggfetch/compat/httpx2/_status_codes.py +0 -0
  319. {eggfetch-0.2.1 → eggfetch-0.3.0}/python/eggfetch/compat/httpx2/_stream.py +0 -0
  320. {eggfetch-0.2.1 → eggfetch-0.3.0}/python/eggfetch/compat/httpx2/_transports.py +0 -0
  321. {eggfetch-0.2.1 → eggfetch-0.3.0}/python/eggfetch/compat/httpx2/_wsgi.py +0 -0
  322. {eggfetch-0.2.1 → eggfetch-0.3.0}/python/eggfetch/compat/httpx2/websockets/__init__.py +0 -0
  323. {eggfetch-0.2.1 → eggfetch-0.3.0}/python/eggfetch/compat/httpx2/websockets/_exceptions.py +0 -0
  324. {eggfetch-0.2.1 → eggfetch-0.3.0}/python/eggfetch/compat/httpx2/websockets/_ping.py +0 -0
  325. {eggfetch-0.2.1 → eggfetch-0.3.0}/python/eggfetch/compat/httpx2/websockets/_transport.py +0 -0
  326. {eggfetch-0.2.1 → eggfetch-0.3.0}/python/eggfetch/py.typed +0 -0
@@ -19,15 +19,15 @@ dependencies = [
19
19
 
20
20
  [[package]]
21
21
  name = "alloc-no-stdlib"
22
- version = "2.0.4"
22
+ version = "3.0.0"
23
23
  source = "registry+https://github.com/rust-lang/crates.io-index"
24
- checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3"
24
+ checksum = "c2fb6cfd47bf496ff64095c20eaba0c201404ee38714d4142fcfa1dc334fcc7a"
25
25
 
26
26
  [[package]]
27
27
  name = "alloc-stdlib"
28
- version = "0.2.4"
28
+ version = "0.3.0"
29
29
  source = "registry+https://github.com/rust-lang/crates.io-index"
30
- checksum = "0e76a019e91224d279006ff972f1e984179a6e9feb050adba6ce8274aef23195"
30
+ checksum = "0b5c1865780388bfa186411ab5f247819487fc4864c6e9c3106611fa347586e1"
31
31
  dependencies = [
32
32
  "alloc-no-stdlib",
33
33
  ]
@@ -96,9 +96,9 @@ checksum = "2a4385e2e34eb35d6b3efe798b9eb88096925d87726c0798709bf56d9ed84af3"
96
96
 
97
97
  [[package]]
98
98
  name = "async-compression"
99
- version = "0.4.42"
99
+ version = "0.4.51"
100
100
  source = "registry+https://github.com/rust-lang/crates.io-index"
101
- checksum = "e79b3f8a79cccc2898f31920fc69f304859b3bd567490f75ebf51ae1c792a9ac"
101
+ checksum = "9d5755640120b24961f8231e05892e4a4f7e0d04e8aeca161508c9c397946970"
102
102
  dependencies = [
103
103
  "compression-codecs",
104
104
  "compression-core",
@@ -159,9 +159,9 @@ checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8"
159
159
 
160
160
  [[package]]
161
161
  name = "brotli"
162
- version = "8.0.4"
162
+ version = "9.1.1"
163
163
  source = "registry+https://github.com/rust-lang/crates.io-index"
164
- checksum = "5cc91aac060a7a1e25823bdccbfb6af1875b88f17c6daac97894eed8207166b3"
164
+ checksum = "627b7cfb0578f0eafce087a90fcd40add1231900b69e4d4de2d456260a4f5d81"
165
165
  dependencies = [
166
166
  "alloc-no-stdlib",
167
167
  "alloc-stdlib",
@@ -170,9 +170,9 @@ dependencies = [
170
170
 
171
171
  [[package]]
172
172
  name = "brotli-decompressor"
173
- version = "5.0.3"
173
+ version = "6.2.0"
174
174
  source = "registry+https://github.com/rust-lang/crates.io-index"
175
- checksum = "3a32acac15fe1967bc3986b2a6347dffc965602354ea6f450ad07e8bfd253583"
175
+ checksum = "34c6783f42c21c952ad7112b354f0ba2f10760e9decea5b1b60523d6e270faaf"
176
176
  dependencies = [
177
177
  "alloc-no-stdlib",
178
178
  "alloc-stdlib",
@@ -316,9 +316,9 @@ checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570"
316
316
 
317
317
  [[package]]
318
318
  name = "compression-codecs"
319
- version = "0.4.38"
319
+ version = "0.4.46"
320
320
  source = "registry+https://github.com/rust-lang/crates.io-index"
321
- checksum = "ce2548391e9c1929c21bf6aa2680af86fe4c1b33e6cea9ac1cfeec0bd11218cf"
321
+ checksum = "cae36683101b2899f48bd31f8db9839437356188e3b1ff23096e73dab09ba8fe"
322
322
  dependencies = [
323
323
  "brotli",
324
324
  "compression-core",
@@ -330,9 +330,9 @@ dependencies = [
330
330
 
331
331
  [[package]]
332
332
  name = "compression-core"
333
- version = "0.4.32"
333
+ version = "0.4.34"
334
334
  source = "registry+https://github.com/rust-lang/crates.io-index"
335
- checksum = "cc14f565cf027a105f7a44ccf9e5b424348421a1d8952a8fc9d499d313107789"
335
+ checksum = "2ebdda89edc534bf8d5dd2857562633b6495557e5846552ade994b99ed13c36a"
336
336
 
337
337
  [[package]]
338
338
  name = "convert_case"
@@ -505,7 +505,7 @@ dependencies = [
505
505
 
506
506
  [[package]]
507
507
  name = "eggfetch-cli"
508
- version = "0.2.1"
508
+ version = "0.3.0"
509
509
  dependencies = [
510
510
  "anyhow",
511
511
  "bytes",
@@ -514,15 +514,20 @@ dependencies = [
514
514
  "eggfetch-core",
515
515
  "flate2",
516
516
  "futures-util",
517
+ "h2",
517
518
  "http",
519
+ "rcgen",
520
+ "rustls",
518
521
  "serde_json",
519
522
  "tempfile",
520
523
  "tokio",
524
+ "tokio-rustls",
525
+ "tracing",
521
526
  ]
522
527
 
523
528
  [[package]]
524
529
  name = "eggfetch-core"
525
- version = "0.2.1"
530
+ version = "0.3.0"
526
531
  dependencies = [
527
532
  "async-compression",
528
533
  "base64 0.23.1",
@@ -568,7 +573,7 @@ dependencies = [
568
573
 
569
574
  [[package]]
570
575
  name = "eggfetch-ffi"
571
- version = "0.2.1"
576
+ version = "0.3.0"
572
577
  dependencies = [
573
578
  "bytes",
574
579
  "eggfetch-core",
@@ -580,7 +585,7 @@ dependencies = [
580
585
 
581
586
  [[package]]
582
587
  name = "eggfetch-http-connect"
583
- version = "0.2.1"
588
+ version = "0.3.0"
584
589
  dependencies = [
585
590
  "base64 0.23.1",
586
591
  "thiserror",
@@ -589,7 +594,7 @@ dependencies = [
589
594
 
590
595
  [[package]]
591
596
  name = "eggfetch-node"
592
- version = "0.2.1"
597
+ version = "0.3.0"
593
598
  dependencies = [
594
599
  "eggfetch-ffi",
595
600
  "napi",
@@ -601,7 +606,7 @@ dependencies = [
601
606
 
602
607
  [[package]]
603
608
  name = "eggfetch-python"
604
- version = "0.2.1"
609
+ version = "0.3.0"
605
610
  dependencies = [
606
611
  "bytes",
607
612
  "eggfetch-core",
@@ -642,7 +647,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
642
647
  checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
643
648
  dependencies = [
644
649
  "libc",
645
- "windows-sys 0.61.2",
650
+ "windows-sys 0.52.0",
646
651
  ]
647
652
 
648
653
  [[package]]
@@ -1097,7 +1102,7 @@ checksum = "3640c1c38b8e4e43584d8df18be5fc6b0aa314ce6ebf51b53313d4306cca8e46"
1097
1102
  dependencies = [
1098
1103
  "hermit-abi",
1099
1104
  "libc",
1100
- "windows-sys 0.61.2",
1105
+ "windows-sys 0.52.0",
1101
1106
  ]
1102
1107
 
1103
1108
  [[package]]
@@ -1545,9 +1550,9 @@ dependencies = [
1545
1550
 
1546
1551
  [[package]]
1547
1552
  name = "quinn-proto"
1548
- version = "0.11.16"
1553
+ version = "0.11.18"
1549
1554
  source = "registry+https://github.com/rust-lang/crates.io-index"
1550
- checksum = "2f4bfc015262b9df63c8845072ce59068853ff5872180c2ce2f13038b970e560"
1555
+ checksum = "a9746dbde176634f4f2f1faf2404e30a31b2bc1e9cafb5329c95d8177a18c9fc"
1551
1556
  dependencies = [
1552
1557
  "bytes",
1553
1558
  "getrandom 0.4.3",
@@ -1576,7 +1581,7 @@ dependencies = [
1576
1581
  "once_cell",
1577
1582
  "socket2",
1578
1583
  "tracing",
1579
- "windows-sys 0.61.2",
1584
+ "windows-sys 0.52.0",
1580
1585
  ]
1581
1586
 
1582
1587
  [[package]]
@@ -1751,14 +1756,14 @@ dependencies = [
1751
1756
  "errno",
1752
1757
  "libc",
1753
1758
  "linux-raw-sys",
1754
- "windows-sys 0.61.2",
1759
+ "windows-sys 0.52.0",
1755
1760
  ]
1756
1761
 
1757
1762
  [[package]]
1758
1763
  name = "rustls"
1759
- version = "0.23.45"
1764
+ version = "0.23.46"
1760
1765
  source = "registry+https://github.com/rust-lang/crates.io-index"
1761
- checksum = "0d41d731c7d2f962d1ccc364cec258de3c0e93b38c2fb3ba97ac74513048d634"
1766
+ checksum = "48e13bd8c0e9365c43cfa5c9e8f9ad49d3c8444926c9aac819e0e4dc503c8fdf"
1762
1767
  dependencies = [
1763
1768
  "log",
1764
1769
  "once_cell",
@@ -1793,9 +1798,9 @@ dependencies = [
1793
1798
 
1794
1799
  [[package]]
1795
1800
  name = "rustls-webpki"
1796
- version = "0.103.15"
1801
+ version = "0.103.16"
1797
1802
  source = "registry+https://github.com/rust-lang/crates.io-index"
1798
- checksum = "f3c3cf1d8b1e7d4927e2d154c3fcb02979afb9939629c62cd9048d4f07b60ac2"
1803
+ checksum = "4443b1b6d39d7c663139942cc4558262562d2c84123bb6282ef177009ca8b281"
1799
1804
  dependencies = [
1800
1805
  "ring",
1801
1806
  "rustls-pki-types",
@@ -2010,7 +2015,7 @@ dependencies = [
2010
2015
  "getrandom 0.4.3",
2011
2016
  "once_cell",
2012
2017
  "rustix",
2013
- "windows-sys 0.61.2",
2018
+ "windows-sys 0.52.0",
2014
2019
  ]
2015
2020
 
2016
2021
  [[package]]
@@ -2110,9 +2115,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
2110
2115
 
2111
2116
  [[package]]
2112
2117
  name = "tokio"
2113
- version = "1.52.3"
2118
+ version = "1.53.3"
2114
2119
  source = "registry+https://github.com/rust-lang/crates.io-index"
2115
- checksum = "8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe"
2120
+ checksum = "ce3335fa71841cda333a58d7615b03901380ecf09d59b3296d21f8bbac0dde4e"
2116
2121
  dependencies = [
2117
2122
  "bytes",
2118
2123
  "libc",
@@ -2360,14 +2365,14 @@ version = "0.26.11"
2360
2365
  source = "registry+https://github.com/rust-lang/crates.io-index"
2361
2366
  checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9"
2362
2367
  dependencies = [
2363
- "webpki-roots 1.0.8",
2368
+ "webpki-roots 1.0.10",
2364
2369
  ]
2365
2370
 
2366
2371
  [[package]]
2367
2372
  name = "webpki-roots"
2368
- version = "1.0.8"
2373
+ version = "1.0.10"
2369
2374
  source = "registry+https://github.com/rust-lang/crates.io-index"
2370
- checksum = "bf85cb06032201fa7c6f829d7db5a7e5aa45bcc0655327713065f6f0576731bf"
2375
+ checksum = "1c1c8e20c8a38fc7d65abfe74eb7280e4aa667e8eec8bc84996d2874810748d9"
2371
2376
  dependencies = [
2372
2377
  "rustls-pki-types",
2373
2378
  ]
@@ -2378,7 +2383,7 @@ version = "0.1.11"
2378
2383
  source = "registry+https://github.com/rust-lang/crates.io-index"
2379
2384
  checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
2380
2385
  dependencies = [
2381
- "windows-sys 0.61.2",
2386
+ "windows-sys 0.52.0",
2382
2387
  ]
2383
2388
 
2384
2389
  [[package]]
@@ -2595,27 +2600,27 @@ checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b"
2595
2600
 
2596
2601
  [[package]]
2597
2602
  name = "zstd"
2598
- version = "0.13.3"
2603
+ version = "0.14.3"
2599
2604
  source = "registry+https://github.com/rust-lang/crates.io-index"
2600
- checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a"
2605
+ checksum = "db3ae9bf90af6e40197bef767eeefc46ad6397420fe873830bd85e5fbbfb3c70"
2601
2606
  dependencies = [
2602
2607
  "zstd-safe",
2603
2608
  ]
2604
2609
 
2605
2610
  [[package]]
2606
2611
  name = "zstd-safe"
2607
- version = "7.2.4"
2612
+ version = "8.2.0"
2608
2613
  source = "registry+https://github.com/rust-lang/crates.io-index"
2609
- checksum = "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d"
2614
+ checksum = "ded520f16b29e1a9b771c722221b2b0a0398c2316d9bb3c42b458a5414d7434b"
2610
2615
  dependencies = [
2611
2616
  "zstd-sys",
2612
2617
  ]
2613
2618
 
2614
2619
  [[package]]
2615
2620
  name = "zstd-sys"
2616
- version = "2.0.16+zstd.1.5.7"
2621
+ version = "2.1.2+zstd.1.5.7"
2617
2622
  source = "registry+https://github.com/rust-lang/crates.io-index"
2618
- checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748"
2623
+ checksum = "481ada9c543b2323cbb7bbdbb5249177fbf0188ed959ed2c15e4b22421c84ed3"
2619
2624
  dependencies = [
2620
2625
  "cc",
2621
2626
  "pkg-config",
@@ -0,0 +1,154 @@
1
+ Metadata-Version: 2.4
2
+ Name: eggfetch
3
+ Version: 0.3.0
4
+ Classifier: Development Status :: 3 - Alpha
5
+ Classifier: Programming Language :: Python :: 3
6
+ Classifier: Programming Language :: Python :: 3.10
7
+ Classifier: Programming Language :: Python :: 3.11
8
+ Classifier: Programming Language :: Python :: 3.12
9
+ Classifier: Programming Language :: Python :: 3.13
10
+ Classifier: Programming Language :: Python :: 3.14
11
+ Classifier: Programming Language :: Python :: 3.15
12
+ Classifier: Programming Language :: Rust
13
+ Classifier: License :: OSI Approved :: MIT License
14
+ Requires-Dist: httpx>=0.28,<0.29 ; extra == 'httpx-transport'
15
+ Requires-Dist: pytest>=8.4 ; extra == 'test'
16
+ Requires-Dist: pytest-asyncio>=1.0 ; extra == 'test'
17
+ Provides-Extra: httpx-transport
18
+ Provides-Extra: test
19
+ Summary: Python bindings for eggfetch
20
+ Keywords: http,client,httpx,async,rust
21
+ Home-Page: https://github.com/eggstack/eggfetch
22
+ Author: eggfetch contributors
23
+ License: MIT
24
+ Requires-Python: >=3.10
25
+ Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
26
+ Project-URL: Homepage, https://github.com/eggstack/eggfetch
27
+ Project-URL: Repository, https://github.com/eggstack/eggfetch
28
+
29
+ # eggfetch
30
+
31
+ [![CI](https://github.com/eggstack/eggfetch/actions/workflows/ci.yml/badge.svg)](https://github.com/eggstack/eggfetch/actions/workflows/ci.yml)
32
+ [![Crates.io](https://img.shields.io/crates/v/eggfetch-core)](https://crates.io/crates/eggfetch-core)
33
+ [![Crates.io Downloads](https://img.shields.io/crates/d/eggfetch-core)](https://crates.io/crates/d/eggfetch-core)
34
+ [![PyPI version](https://img.shields.io/pypi/v/eggfetch)](https://pypi.org/project/eggfetch/)
35
+ [![PyPI Downloads](https://static.pepy.tech/personalized-badge/eggfetch?period=total&units=INTERNATIONAL_SYSTEM&left_color=BLACK&right_color=GREEN&left_text=downloads)](https://pepy.tech/projects/eggfetch)
36
+ [![License](https://img.shields.io/crates/l/eggfetch-core)](LICENSE-MIT)
37
+
38
+ eggfetch is a Rust-native async HTTP client engine (tokio + hyper) with Python bindings and a CLI. All networking lives in `eggfetch-core`; the Python sync API blocks on the async engine while releasing the GIL, and the async API integrates with asyncio.
39
+
40
+ ## Features
41
+
42
+ - **HTTP/1.1, HTTP/2, and experimental HTTP/3** with ALPN negotiation
43
+ - **Streaming** request and response bodies with backpressure, plus trailers
44
+ - **Pooling and phase-aware timeouts** (pool/connect/write/read/total) with transport metrics
45
+ - **TLS** via rustls: additive or replacement CA roots, mTLS, version policy ([TLS](docs/concepts/tls.md))
46
+ - **Proxy**: HTTP forwarding, HTTPS CONNECT, proxy auth, `NO_PROXY`, SOCKS5 ([proxy](docs/concepts/proxy.md))
47
+ - **Cookies, auth, multipart, compression**: RFC 6265 jar, Basic/Bearer, streaming uploads, gzip/brotli/zstd/deflate
48
+ - **Retries and redirects**: backoff with `Retry-After`, replayable-body redirect handling
49
+ - **Python**: requests/HTTPX-compatible sync and async APIs plus versioned `eggfetch.compat.httpx` (0.28.1) and `eggfetch.compat.httpx2` (2.12.0) facades ([compatibility](docs/reference/compatibility.md))
50
+ - **CLI** with streaming output, machine-readable formats, and shell completions ([guide](docs/cli/guide.md))
51
+
52
+ ## Installation
53
+
54
+ ```bash
55
+ pip install eggfetch # Python 3.10–3.15
56
+ cargo install eggfetch-cli # CLI
57
+ ```
58
+
59
+ ```toml
60
+ [dependencies]
61
+ eggfetch-core = "0.2" # Rust (MSRV 1.89)
62
+ ```
63
+
64
+ See [installation](docs/getting-started/installation.md) for wheels, feature recipes, and platform support.
65
+
66
+ ## Quickstart
67
+
68
+ ```python
69
+ import eggfetch
70
+
71
+ r = eggfetch.get("https://httpbin.org/get")
72
+ print(r.status_code, r.json())
73
+
74
+ with eggfetch.Client(headers={"User-Agent": "my-app/1.0"}) as client:
75
+ r = client.post("https://httpbin.org/post", json={"key": "value"})
76
+ print(r.status_code)
77
+
78
+ with client.stream("GET", "https://httpbin.org/stream-bytes/10000") as r:
79
+ for chunk in r.iter_bytes():
80
+ print(f"chunk: {len(chunk)} bytes")
81
+ ```
82
+
83
+ ```python
84
+ import asyncio
85
+ import eggfetch
86
+
87
+ async def main():
88
+ async with eggfetch.AsyncClient() as client:
89
+ responses = await asyncio.gather(
90
+ client.get("https://httpbin.org/get"),
91
+ client.get("https://httpbin.org/ip"),
92
+ )
93
+ for resp in responses:
94
+ print(resp.status_code, resp.json())
95
+
96
+ asyncio.run(main())
97
+ ```
98
+
99
+ ```rust
100
+ use eggfetch_core::{Client, Timeout};
101
+ use futures_util::StreamExt;
102
+
103
+ #[tokio::main]
104
+ async fn main() -> Result<(), Box<dyn std::error::Error>> {
105
+ let client = Client::builder()
106
+ .timeout(Timeout::from_secs(30))
107
+ .follow_redirects(true)
108
+ .user_agent("my-app/1.0")
109
+ .build();
110
+
111
+ let mut resp = client.get("https://httpbin.org/get")?.send().await?;
112
+ println!("Status: {}", resp.status());
113
+ println!("Body: {}", resp.text().await?);
114
+
115
+ let mut resp = client.get("https://httpbin.org/stream/3")?.send().await?;
116
+ let mut stream = resp.bytes_stream()?;
117
+ while let Some(chunk) = stream.next().await {
118
+ println!("chunk: {} bytes", chunk?.len());
119
+ }
120
+ Ok(())
121
+ }
122
+ ```
123
+
124
+ ```bash
125
+ eggfetch https://httpbin.org/get
126
+ eggfetch -X POST https://httpbin.org/post --json '{"key": "value"}'
127
+ eggfetch --auth user:pass https://httpbin.org/basic-auth/user/pass
128
+ eggfetch --output file.bin https://httpbin.org/stream-bytes/10000
129
+ ```
130
+
131
+ ## Examples
132
+
133
+ Runnable starting points (each takes an optional base URL, default `https://httpbin.org`):
134
+
135
+ - `cargo run -p eggfetch-core --example quickstart` — configured GET/POST, timeout override, auth, streaming
136
+ - `python examples/python_sync.py` — sync client, JSON POST, streaming download
137
+ - `python examples/python_async.py` — async client with concurrent requests
138
+
139
+ More patterns are in [`docs/cookbook/`](docs/cookbook/).
140
+
141
+ ## Documentation
142
+
143
+ - [Getting started](docs/getting-started/quickstart.md) — installation and first requests
144
+ - [Rust guide](docs/rust/guide.md) · [Python guide](docs/python/guide.md) · [CLI guide](docs/cli/guide.md)
145
+ - [Migration](docs/migration/from-httpx.md) from HTTPX/requests · [Compatibility](docs/reference/compatibility.md) · [C ABI / FFI](docs/ffi/)
146
+
147
+ ## Security
148
+
149
+ All `Debug`/`Display`/error output redacts credentials, cookies, and tokens. See [SECURITY.md](SECURITY.md) to report a vulnerability.
150
+
151
+ ## License
152
+
153
+ eggfetch is licensed under the [MIT License](LICENSE-MIT).
154
+
@@ -0,0 +1,125 @@
1
+ # eggfetch
2
+
3
+ [![CI](https://github.com/eggstack/eggfetch/actions/workflows/ci.yml/badge.svg)](https://github.com/eggstack/eggfetch/actions/workflows/ci.yml)
4
+ [![Crates.io](https://img.shields.io/crates/v/eggfetch-core)](https://crates.io/crates/eggfetch-core)
5
+ [![Crates.io Downloads](https://img.shields.io/crates/d/eggfetch-core)](https://crates.io/crates/d/eggfetch-core)
6
+ [![PyPI version](https://img.shields.io/pypi/v/eggfetch)](https://pypi.org/project/eggfetch/)
7
+ [![PyPI Downloads](https://static.pepy.tech/personalized-badge/eggfetch?period=total&units=INTERNATIONAL_SYSTEM&left_color=BLACK&right_color=GREEN&left_text=downloads)](https://pepy.tech/projects/eggfetch)
8
+ [![License](https://img.shields.io/crates/l/eggfetch-core)](LICENSE-MIT)
9
+
10
+ eggfetch is a Rust-native async HTTP client engine (tokio + hyper) with Python bindings and a CLI. All networking lives in `eggfetch-core`; the Python sync API blocks on the async engine while releasing the GIL, and the async API integrates with asyncio.
11
+
12
+ ## Features
13
+
14
+ - **HTTP/1.1, HTTP/2, and experimental HTTP/3** with ALPN negotiation
15
+ - **Streaming** request and response bodies with backpressure, plus trailers
16
+ - **Pooling and phase-aware timeouts** (pool/connect/write/read/total) with transport metrics
17
+ - **TLS** via rustls: additive or replacement CA roots, mTLS, version policy ([TLS](docs/concepts/tls.md))
18
+ - **Proxy**: HTTP forwarding, HTTPS CONNECT, proxy auth, `NO_PROXY`, SOCKS5 ([proxy](docs/concepts/proxy.md))
19
+ - **Cookies, auth, multipart, compression**: RFC 6265 jar, Basic/Bearer, streaming uploads, gzip/brotli/zstd/deflate
20
+ - **Retries and redirects**: backoff with `Retry-After`, replayable-body redirect handling
21
+ - **Python**: requests/HTTPX-compatible sync and async APIs plus versioned `eggfetch.compat.httpx` (0.28.1) and `eggfetch.compat.httpx2` (2.12.0) facades ([compatibility](docs/reference/compatibility.md))
22
+ - **CLI** with streaming output, machine-readable formats, and shell completions ([guide](docs/cli/guide.md))
23
+
24
+ ## Installation
25
+
26
+ ```bash
27
+ pip install eggfetch # Python 3.10–3.15
28
+ cargo install eggfetch-cli # CLI
29
+ ```
30
+
31
+ ```toml
32
+ [dependencies]
33
+ eggfetch-core = "0.2" # Rust (MSRV 1.89)
34
+ ```
35
+
36
+ See [installation](docs/getting-started/installation.md) for wheels, feature recipes, and platform support.
37
+
38
+ ## Quickstart
39
+
40
+ ```python
41
+ import eggfetch
42
+
43
+ r = eggfetch.get("https://httpbin.org/get")
44
+ print(r.status_code, r.json())
45
+
46
+ with eggfetch.Client(headers={"User-Agent": "my-app/1.0"}) as client:
47
+ r = client.post("https://httpbin.org/post", json={"key": "value"})
48
+ print(r.status_code)
49
+
50
+ with client.stream("GET", "https://httpbin.org/stream-bytes/10000") as r:
51
+ for chunk in r.iter_bytes():
52
+ print(f"chunk: {len(chunk)} bytes")
53
+ ```
54
+
55
+ ```python
56
+ import asyncio
57
+ import eggfetch
58
+
59
+ async def main():
60
+ async with eggfetch.AsyncClient() as client:
61
+ responses = await asyncio.gather(
62
+ client.get("https://httpbin.org/get"),
63
+ client.get("https://httpbin.org/ip"),
64
+ )
65
+ for resp in responses:
66
+ print(resp.status_code, resp.json())
67
+
68
+ asyncio.run(main())
69
+ ```
70
+
71
+ ```rust
72
+ use eggfetch_core::{Client, Timeout};
73
+ use futures_util::StreamExt;
74
+
75
+ #[tokio::main]
76
+ async fn main() -> Result<(), Box<dyn std::error::Error>> {
77
+ let client = Client::builder()
78
+ .timeout(Timeout::from_secs(30))
79
+ .follow_redirects(true)
80
+ .user_agent("my-app/1.0")
81
+ .build();
82
+
83
+ let mut resp = client.get("https://httpbin.org/get")?.send().await?;
84
+ println!("Status: {}", resp.status());
85
+ println!("Body: {}", resp.text().await?);
86
+
87
+ let mut resp = client.get("https://httpbin.org/stream/3")?.send().await?;
88
+ let mut stream = resp.bytes_stream()?;
89
+ while let Some(chunk) = stream.next().await {
90
+ println!("chunk: {} bytes", chunk?.len());
91
+ }
92
+ Ok(())
93
+ }
94
+ ```
95
+
96
+ ```bash
97
+ eggfetch https://httpbin.org/get
98
+ eggfetch -X POST https://httpbin.org/post --json '{"key": "value"}'
99
+ eggfetch --auth user:pass https://httpbin.org/basic-auth/user/pass
100
+ eggfetch --output file.bin https://httpbin.org/stream-bytes/10000
101
+ ```
102
+
103
+ ## Examples
104
+
105
+ Runnable starting points (each takes an optional base URL, default `https://httpbin.org`):
106
+
107
+ - `cargo run -p eggfetch-core --example quickstart` — configured GET/POST, timeout override, auth, streaming
108
+ - `python examples/python_sync.py` — sync client, JSON POST, streaming download
109
+ - `python examples/python_async.py` — async client with concurrent requests
110
+
111
+ More patterns are in [`docs/cookbook/`](docs/cookbook/).
112
+
113
+ ## Documentation
114
+
115
+ - [Getting started](docs/getting-started/quickstart.md) — installation and first requests
116
+ - [Rust guide](docs/rust/guide.md) · [Python guide](docs/python/guide.md) · [CLI guide](docs/cli/guide.md)
117
+ - [Migration](docs/migration/from-httpx.md) from HTTPX/requests · [Compatibility](docs/reference/compatibility.md) · [C ABI / FFI](docs/ffi/)
118
+
119
+ ## Security
120
+
121
+ All `Debug`/`Display`/error output redacts credentials, cookies, and tokens. See [SECURITY.md](SECURITY.md) to report a vulnerability.
122
+
123
+ ## License
124
+
125
+ eggfetch is licensed under the [MIT License](LICENSE-MIT).
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "eggfetch-core"
3
- version = "0.2.1"
3
+ version = "0.3.0"
4
4
  edition.workspace = true
5
5
  rust-version.workspace = true
6
6
  license.workspace = true
@@ -82,7 +82,7 @@ test-util = ["tokio/test-util"]
82
82
 
83
83
  [dependencies]
84
84
  bytes = "1"
85
- eggfetch-http-connect = { version = "0.2.1", path = "../eggfetch-http-connect", optional = true }
85
+ eggfetch-http-connect = { version = "0.3.0", path = "../eggfetch-http-connect", optional = true }
86
86
  futures-core = "0.3"
87
87
  futures-util = { version = "0.3", default-features = false, features = ["alloc"] }
88
88
  http = "1"
@@ -109,8 +109,8 @@ cookie = { version = "0.18", default-features = false, features = ["percent-enco
109
109
  async-compression = { version = "0.4", default-features = false, features = ["tokio"], optional = true }
110
110
  tokio-util = { version = "0.7", features = ["io"], optional = true }
111
111
  flate2 = { version = "1", optional = true }
112
- brotli = { version = "8", optional = true, default-features = false, features = ["std"] }
113
- zstd = { version = "0.13", optional = true }
112
+ brotli = { version = "9", optional = true, default-features = false, features = ["std"] }
113
+ zstd = { version = "0.14", optional = true }
114
114
  tracing = { version = "0.1", optional = true }
115
115
  getrandom = { version = "0.2", optional = true }
116
116
  httpdate = { version = "1", optional = true }
@@ -131,3 +131,11 @@ proptest = "=1.5.0"
131
131
  rcgen = "0.13"
132
132
  tempfile = "3"
133
133
  tokio = { version = "1", features = ["io-util", "net", "macros", "sync", "time", "rt-multi-thread"] }
134
+
135
+ # The quickstart example exercises redirect following and basic auth, which
136
+ # are compiled out of the lean profiles. Declaring the requirement keeps the
137
+ # example out of the lean-profile `--all-targets` compile instead of failing
138
+ # it, so the whole-suite lean gate can be green.
139
+ [[example]]
140
+ name = "quickstart"
141
+ required-features = ["redirects", "basic-auth"]