Metadata-Version: 2.4
Name: curl_cffi_patch
Version: 0.15.2
Summary: libcurl ffi bindings for Python, with impersonation support.
Author-email: lexiforest <infinitesheldon@gmail.com>
License-Expression: MIT
Project-URL: repository, https://github.com/Ehsan-U/curl-cffi-patch
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Programming Language :: Python :: Free Threading
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: cffi>=2.0.0
Requires-Dist: certifi>=2024.2.2
Provides-Extra: extra
Requires-Dist: readability-lxml>=0.8.1; extra == "extra"
Requires-Dist: markdownify>=1.1.0; extra == "extra"
Requires-Dist: lxml_html_clean; extra == "extra"
Provides-Extra: cli
Requires-Dist: rich; extra == "cli"
Provides-Extra: dev
Requires-Dist: charset_normalizer<4.0,>=3.3.2; extra == "dev"
Requires-Dist: coverage<7.0,>=6.4.1; extra == "dev"
Requires-Dist: cryptography<47.0,>=46.0.4; extra == "dev"
Requires-Dist: httpx==0.23.1; extra == "dev"
Requires-Dist: mypy<2.0,>=1.9.0; extra == "dev"
Requires-Dist: pytest<9.0,>=8.1.1; extra == "dev"
Requires-Dist: pytest-asyncio<1.0,>=0.23.6; extra == "dev"
Requires-Dist: pytest-trio<1.0,>=0.8.0; extra == "dev"
Requires-Dist: ruff<1.0,>=0.3.5; extra == "dev"
Requires-Dist: trio<1.0,>=0.25.0; extra == "dev"
Requires-Dist: trustme<2.0,>=1.1.0; extra == "dev"
Requires-Dist: uvicorn<1.0,>=0.29.0; extra == "dev"
Requires-Dist: websockets>=14.0; extra == "dev"
Requires-Dist: typing_extensions; extra == "dev"
Provides-Extra: build
Requires-Dist: cibuildwheel; extra == "build"
Requires-Dist: wheel; extra == "build"
Provides-Extra: test
Requires-Dist: charset_normalizer<4.0,>=3.3.2; extra == "test"
Requires-Dist: cryptography<47.0,>=46.0.4; extra == "test"
Requires-Dist: litestar<3.0,>=2.19.0; extra == "test"
Requires-Dist: httpx==0.23.1; extra == "test"
Requires-Dist: proxy.py<3.0,>=2.4.3; extra == "test"
Requires-Dist: pytest<9.0,>=8.1.1; extra == "test"
Requires-Dist: pytest-asyncio<1.0,>=0.23.6; extra == "test"
Requires-Dist: pytest-trio<1.0,>=0.8.0; extra == "test"
Requires-Dist: python-multipart<1.0,>=0.0.9; extra == "test"
Requires-Dist: trio<1.0,>=0.25.0; extra == "test"
Requires-Dist: trustme<2.0,>=1.1.0; extra == "test"
Requires-Dist: uvicorn<1.0,>=0.29.0; extra == "test"
Requires-Dist: websockets>=14.0; extra == "test"
Requires-Dist: typing_extensions; extra == "test"
Dynamic: license-file

# curl_cffi_patch

A patched version of [curl_cffi](https://github.com/lexiforest/curl_cffi), tracking upstream `main` with the following patches on top:

- **Fix resolve-list memory leak** in `Curl.reset()` — see [issue #677](https://github.com/lexiforest/curl_cffi/issues/677).
- **Add `CURLOPT_CONNECT_TO` support** — `setopt` builds a proper curl slist for `CONNECT_TO` (like `RESOLVE`/`HTTPHEADER`) instead of segfaulting, and the slist is freed in `clean_handles_and_buffers()` and `reset()`. Lets you pin a request's origin host/port (e.g. through a CONNECT proxy) via `curl_options={CurlOpt.CONNECT_TO: ["host:port:target:port"]}`.
