git: 9af436b0654c - main - www/py-httpcore2: New port: Minimal low-level HTTP client

From: Yuri Victorovich <yuri_at_FreeBSD.org>
Date: Fri, 19 Jun 2026 06:37:21 UTC
The branch main has been updated by yuri:

URL: https://cgit.FreeBSD.org/ports/commit/?id=9af436b0654c3aa710a6a8d0ff613de081bc094f

commit 9af436b0654c3aa710a6a8d0ff613de081bc094f
Author:     Yuri Victorovich <yuri@FreeBSD.org>
AuthorDate: 2026-06-19 06:24:32 +0000
Commit:     Yuri Victorovich <yuri@FreeBSD.org>
CommitDate: 2026-06-19 06:37:00 +0000

    www/py-httpcore2: New port: Minimal low-level HTTP client
---
 www/Makefile               |  1 +
 www/py-httpcore2/Makefile  | 37 +++++++++++++++++++++++++++++++++++++
 www/py-httpcore2/distinfo  |  3 +++
 www/py-httpcore2/pkg-descr | 16 ++++++++++++++++
 4 files changed, 57 insertions(+)

diff --git a/www/Makefile b/www/Makefile
index e8b1ccbc1520..d4b1c4b306cc 100644
--- a/www/Makefile
+++ b/www/Makefile
@@ -1849,6 +1849,7 @@
     SUBDIR += py-http-sf
     SUBDIR += py-httpbin
     SUBDIR += py-httpcore
+    SUBDIR += py-httpcore2
     SUBDIR += py-httpie
     SUBDIR += py-httplib2
     SUBDIR += py-httpretty
diff --git a/www/py-httpcore2/Makefile b/www/py-httpcore2/Makefile
new file mode 100644
index 000000000000..6b02a68ee576
--- /dev/null
+++ b/www/py-httpcore2/Makefile
@@ -0,0 +1,37 @@
+PORTNAME=	httpcore2
+PORTVERSION=	2.4.0
+CATEGORIES=	www python
+MASTER_SITES=	PYPI
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}
+
+MAINTAINER=	yuri@FreeBSD.org
+COMMENT=	Minimal low-level HTTP client
+WWW=		https://github.com/pydantic/httpx2
+
+LICENSE=	BSD3CLAUSE
+LICENSE_FILE=	${WRKSRC}/LICENSE.md
+
+BUILD_DEPENDS=	${PYTHON_PKGNAMEPREFIX}hatch-fancy-pypi-readme>0:devel/py-hatch-fancy-pypi-readme@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}hatchling>0:devel/py-hatchling@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}uv-dynamic-versioning>=0.8.0:devel/py-uv-dynamic-versioning@${PY_FLAVOR}
+RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}h11>=0.16:net/py-h11@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}truststore>=0.10:security/py-truststore@${PY_FLAVOR}
+
+USES=		python
+USE_PYTHON=	autoplist concurrent pep517
+
+NO_ARCH=	yes
+
+OPTIONS_DEFINE=		ASYNCIO HTTP2 SOCKS TRIO
+OPTIONS_DEFAULT=	ASYNCIO HTTP2
+
+ASYNCIO_DESC=		Asynchronous support via anyio
+HTTP2_DESC=		HTTP/2 support
+TRIO_DESC=		Asynchronous support via trio
+
+ASYNCIO_RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}anyio>=4.5.0<5.0:devel/py-anyio@${PY_FLAVOR}
+HTTP2_RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}h2>=3<5:www/py-h2@${PY_FLAVOR}
+SOCKS_RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}socksio>=1<2:net/py-socksio@${PY_FLAVOR}
+TRIO_RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}trio>=0.22.0<1.0:net/py-trio@${PY_FLAVOR}
+
+.include <bsd.port.mk>
diff --git a/www/py-httpcore2/distinfo b/www/py-httpcore2/distinfo
new file mode 100644
index 000000000000..eeae8ed8a418
--- /dev/null
+++ b/www/py-httpcore2/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1781849537
+SHA256 (httpcore2-2.4.0.tar.gz) = 3093a8ab8980d9f910b9cb4351df9186a0ad2350a6284a9107ac9a362a584422
+SIZE (httpcore2-2.4.0.tar.gz) = 64618
diff --git a/www/py-httpcore2/pkg-descr b/www/py-httpcore2/pkg-descr
new file mode 100644
index 000000000000..b8c38e0610ff
--- /dev/null
+++ b/www/py-httpcore2/pkg-descr
@@ -0,0 +1,16 @@
+The HTTP Core package provides a minimal low-level HTTP client, which does one
+thing only. Sending HTTP requests.
+
+It does not provide any high level model abstractions over the API, does not
+handle redirects, multipart uploads, building authentication headers,
+transparent HTTP caching, URL parsing, session cookie handling, content or
+charset decoding, handling JSON, environment based configuration defaults, or
+any of that Jazz.
+
+Some things HTTP Core does do:
+- Sending HTTP requests.
+- Provides both sync and async interfaces.
+- Supports HTTP/1.1 and HTTP/2.
+- Async backend support for asyncio and trio.
+- Automatic connection pooling.
+- HTTP(S) proxy support.