git: 42c652dc43e9 - main - finance/py-ccxt: update 4.5.78 → 4.5.85

From: Yuri Victorovich <yuri_at_FreeBSD.org>
Date: Mon, 12 Oct 2026 00:56:40 UTC
The branch main has been updated by yuri:

URL: https://cgit.FreeBSD.org/ports/commit/?id=42c652dc43e9c26e12c768759464081e709c8d9a

commit 42c652dc43e9c26e12c768759464081e709c8d9a
Author:     Yuri Victorovich <yuri@FreeBSD.org>
AuthorDate: 2026-10-12 00:39:33 +0000
Commit:     Yuri Victorovich <yuri@FreeBSD.org>
CommitDate: 2026-10-12 00:56:30 +0000

    finance/py-ccxt: update 4.5.78 → 4.5.85
    
    ChangeLog: https://github.com/ccxt/ccxt/releases/tag/v4.5.85
---
 finance/py-ccxt/Makefile                   | 28 +++++------
 finance/py-ccxt/distinfo                   |  6 +--
 finance/py-ccxt/files/patch-pyproject.toml | 75 +++++++++++++++++++++++++++---
 3 files changed, 87 insertions(+), 22 deletions(-)

diff --git a/finance/py-ccxt/Makefile b/finance/py-ccxt/Makefile
index c6f8ea8792c2..6fa0e43c7fe9 100644
--- a/finance/py-ccxt/Makefile
+++ b/finance/py-ccxt/Makefile
@@ -1,8 +1,8 @@
 PORTNAME=	ccxt
-DISTVERSION=	4.5.78
-PORTREVISION=	1
+DISTVERSIONPREFIX=	v
+DISTVERSION=	4.5.85
 CATEGORIES=	finance python
-MASTER_SITES=	PYPI
+#MASTER_SITES=	PYPI # missing file for tests, seee https://github.com/ccxt/ccxt/issues/30798
 PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}
 
 MAINTAINER=	yuri@FreeBSD.org
@@ -16,6 +16,7 @@ BUILD_DEPENDS=	${PY_SETUPTOOLS} \
 		${PYTHON_PKGNAMEPREFIX}wheel>0:devel/py-wheel@${PY_FLAVOR}
 RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}aiohappyeyeballs>=2.7.1:net/py-aiohappyeyeballs@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}aiohttp>=3.14.3:www/py-aiohttp@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}aiohttp-fast-zlib>=0.3.0:www/py-aiohttp-fast-zlib@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}aiosignal>=1.4.0:devel/py-aiosignal@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}attrs>=26.1.0:devel/py-attrs@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}certifi>=2026.6.17:security/py-certifi@${PY_FLAVOR} \
@@ -26,11 +27,11 @@ RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}aiohappyeyeballs>=2.7.1:net/py-aiohappyeyeba
 		${PYTHON_PKGNAMEPREFIX}idna>=3.18:dns/py-idna@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}multidict>=6.7.1:www/py-multidict@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}orjson>=3.11.9:devel/py-orjson@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}propcache>0:devel/py-propcache@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}pycparser>=2.23:devel/py-pycparser@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}propcache>=0.5.2:devel/py-propcache@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}pycparser>=3.0:devel/py-pycparser@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}requests>=2.32:www/py-requests@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}typing-extensions>=4.16.0:devel/py-typing-extensions@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}urllib3>=2.7.0:net/py-urllib3@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}urllib3>=2.8.0:net/py-urllib3@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}uvloop>=0.22.1:devel/py-uvloop@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}yarl>=1.20:www/py-yarl@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}zlib-ng>=1.0.0:archivers/py-zlib-ng@${PY_FLAVOR}
@@ -38,22 +39,23 @@ TEST_DEPENDS=	${PYTHON_PKGNAMEPREFIX}pytest-asyncio>0:devel/py-pytest-asyncio@${
 
 USES=		python
 USE_PYTHON=	pep517 autoplist cryptography pytest # see https://github.com/ccxt/ccxt/issues/29383
+USE_GITHUB=	yes
 
 NO_ARCH=	yes
 
 TEST_ENV=	${MAKE_ENV} PYTHONPATH=${STAGEDIR}${PYTHONPREFIX_SITELIBDIR}
 TEST_WRKSRC=	${WRKSRC}/python/ccxt/test/base
-TEST_ARGS=	--confcutdir=. \
-		-p pytest_asyncio -o asyncio_mode=auto \
-		-p no:relaxed -p no:ruff -p no:mypy -p no:cov \
+TEST_ARGS=	--disable-plugin-autoload \
+		--confcutdir=. \
+		-p asyncio -p pytest_asyncio -o asyncio_mode=auto \
 		--ignore=language_specific/test_throttler_performance.py
 
-post-install:
-	@${FIND} ${STAGEDIR}${PYTHON_SITELIBDIR}/ccxt -type d \( -name '.benchmarks' -o -name '.pytest_cache' \) -exec ${RM} -rf {} + 2>/dev/null || true
-
 post-extract: # workaround for https://github.com/ccxt/ccxt/issues/16220
 	@${TOUCH} ${WRKSRC}/README.md
 
-# tests as of 4.5.78: 102 passed, 6 warnings in 19.00s
+post-install:
+	@${FIND} ${STAGEDIR}${PYTHON_SITELIBDIR}/ccxt -type d \( -name '.benchmarks' -o -name '.pytest_cache' \) -exec ${RM} -rf {} + 2>/dev/null || true
+
+# tests as of 4.5.85: 1 failed, 192 passed, 7 warnings, 1 error in 17.39s, see https://github.com/ccxt/ccxt/issues/30799
 
 .include <bsd.port.mk>
diff --git a/finance/py-ccxt/distinfo b/finance/py-ccxt/distinfo
index f0f5abcfdea6..84fd1fc0a99b 100644
--- a/finance/py-ccxt/distinfo
+++ b/finance/py-ccxt/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1789395242
-SHA256 (ccxt-4.5.78.tar.gz) = 90ce2837b574dbfe2b8574eda9c3bf97cda1b65d90415b5f16f2d22ceba9b89a
-SIZE (ccxt-4.5.78.tar.gz) = 6003937
+TIMESTAMP = 1791765505
+SHA256 (ccxt-ccxt-v4.5.85_GH0.tar.gz) = b221f59a3ff96a9ab17f34c8f4fd567af1adb3ca539b79515d78fe983c8b5e23
+SIZE (ccxt-ccxt-v4.5.85_GH0.tar.gz) = 87964887
diff --git a/finance/py-ccxt/files/patch-pyproject.toml b/finance/py-ccxt/files/patch-pyproject.toml
index 2da83b0c4f43..5c06d7206c21 100644
--- a/finance/py-ccxt/files/patch-pyproject.toml
+++ b/finance/py-ccxt/files/patch-pyproject.toml
@@ -2,7 +2,7 @@
 -- pycparser is a transitive dependency of cffi; the latest release is 2.23.
 -- Upstream: https://github.com/ccxt/ccxt/issues/29383
 
---- pyproject.toml.orig	2026-09-14 21:09:39 UTC
+--- pyproject.toml.orig	2026-10-01 06:19:36 UTC
 +++ pyproject.toml
 @@ -1,5 +1,5 @@
  [build-system]
@@ -12,7 +12,7 @@
  
  [project]
 @@ -7,7 +7,7 @@ readme = "python/README.md"
- version = "4.5.78"
+ version = "4.5.85"
  description = "A cryptocurrency trading API with more than 100 exchanges in JavaScript / TypeScript / Python / C# / PHP / Go"
  readme = "python/README.md"
 -license = "MIT"
@@ -20,12 +20,75 @@
  authors = [
      { name = "Igor Kroitor", email = "igor.kroitor@gmail.com" },
  ]
-@@ -87,7 +87,7 @@ dependencies = [
+@@ -43,20 +43,20 @@ dependencies = [
+ # all dependencies are pinned to exact versions to protect against
+ # malicious or vulnerable releases of downstream dependencies
+ dependencies = [
+-    "certifi==2026.6.17",
++    "certifi>=2026.6.17",
+     "requests>=2.32,<3",
+     "cryptography>=50,<51",
+-    "typing_extensions==4.16.0",
++    "typing_extensions>=4.16.0",
+     # keep tight: uses TCPConnector/ClientSession loop= (removed in aiohttp 4.0),
+     # happy_eyeballs_delay, ClientTimeout sock_read, and is coupled to aiohttp-fast-zlib
+     "aiohttp>=3.14.3,<3.15",
+     "yarl>=1.20,<2",
+     # fast zlib backend for aiohttp, enabled in ccxt.async_support.base.exchange
+-    "aiohttp-fast-zlib==0.3.0",
+-    "zlib-ng==1.0.0",
++    "aiohttp-fast-zlib>=0.3.0",
++    "zlib-ng>=1.0.0",
+     # event loop accelerator, installed where supported (no Windows/PyPy wheels);
+     # opt-in at the application entry point: uvloop.run(main())
+-    "uvloop==0.22.1; platform_system != \"Windows\" and implementation_name == \"cpython\"",
++    "uvloop>=0.22.1; platform_system != \"Windows\" and implementation_name == \"cpython\"",
+     # Windows counterpart of uvloop (same API, incl. winloop.run); wheels exist
+     # for CPython 3.8-3.14 on win_amd64/win_arm64 only - no win32, no sdist builds
+     "winloop==0.6.3; platform_system == \"Windows\" and implementation_name == \"cpython\" and python_version < \"3.15\" and platform_machine in \"AMD64 ARM64\"",
+@@ -65,7 +65,7 @@ dependencies = [
+     # wheel matrix on PyPI (CPython 3.10-3.14 only, no PyPy, no free-threaded builds).
+     # NOTE: lowercase "arm64" matches macOS but intentionally NOT Windows "ARM64"
+     # (marker `in` is a case-sensitive substring match; cp310 has no win_arm64 wheel)
+-    "orjson==3.11.9; implementation_name == \"cpython\" and python_version < \"3.15\" and platform_machine in \"x86_64 AMD64 aarch64 arm64 armv7l i686 ppc64le s390x\"",
++    "orjson>=3.11.9; implementation_name == \"cpython\" and python_version < \"3.15\" and platform_machine in \"x86_64 AMD64 aarch64 arm64 armv7l i686 ppc64le s390x\"",
+     # fast secp256k1 signing (libsecp256k1), installed only where coincurve 21.0.0
+     # ships a prebuilt wheel so that `pip install ccxt` never triggers a C source
+     # build. Allowlist mirrors the wheel matrix on PyPI (CPython 3.9-3.13 only,
+@@ -74,24 +74,24 @@ dependencies = [
+     # needs an explicit exclusion because "x86" is a substring of "x86_64" and
+     # the `in` marker operator does case-sensitive substring matching.
+     # ccxt falls back to the `cryptography` implementation when absent.
+-    "coincurve==21.0.0; implementation_name == \"cpython\" and python_version < \"3.14\" and platform_machine in \"x86_64 AMD64 aarch64 arm64 ARM64 i686\" and platform_machine != \"x86\"",
++    "coincurve>=21.0.0; implementation_name == \"cpython\" and python_version < \"3.14\" and platform_machine in \"x86_64 AMD64 aarch64 arm64 ARM64 i686\" and platform_machine != \"x86\"",
+     # transitive dependencies of aiohttp
+-    "aiohappyeyeballs==2.7.1",
+-    "aiosignal==1.4.0",
+-    "attrs==26.1.0",
+-    "frozenlist==1.8.0",
+-    "multidict==6.7.1",
+-    "propcache==0.5.2",
++    "aiohappyeyeballs>=2.7.1",
++    "aiosignal>=1.4.0",
++    "attrs>=26.1.0",
++    "frozenlist>=1.8.0",
++    "multidict>=6.7.1",
++    "propcache>=0.5.2",
+     # "aiodns==4.0.4",
+     # # transitive dependencies of aiodns
      # "pycares==5.0.1",
      # transitive dependencies of cryptography
-     "cffi==2.0.0",
+-    "cffi==2.0.0",
 -    "pycparser==3.0",
++    "cffi>=2.0.0",
 +    "pycparser>=2.23",
      # transitive dependencies of requests
-     "charset_normalizer==3.4.7",
-     "idna==3.18",
+-    "charset_normalizer==3.4.7",
+-    "idna==3.18",
+-    "urllib3==2.8.0",
++    "charset_normalizer>=3.4.7",
++    "idna>=3.18",
++    "urllib3>=2.8.0",
+ ]
+ 
+ [project.optional-dependencies]