git: 42c652dc43e9 - main - finance/py-ccxt: update 4.5.78 → 4.5.85
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
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]