git: 6bf6a93c8f3f - main - devel/py-pyTooling: update 8.16.1 → 9.0.0

From: Yuri Victorovich <yuri_at_FreeBSD.org>
Date: Sat, 19 Sep 2026 22:43:02 UTC
The branch main has been updated by yuri:

URL: https://cgit.FreeBSD.org/ports/commit/?id=6bf6a93c8f3fabf7e6efc66e3893f392c31dcb2d

commit 6bf6a93c8f3fabf7e6efc66e3893f392c31dcb2d
Author:     Yuri Victorovich <yuri@FreeBSD.org>
AuthorDate: 2026-09-19 21:20:40 +0000
Commit:     Yuri Victorovich <yuri@FreeBSD.org>
CommitDate: 2026-09-19 22:42:23 +0000

    devel/py-pyTooling: update 8.16.1 → 9.0.0
---
 devel/py-pyTooling/Makefile                        | 24 ++++++--------
 devel/py-pyTooling/distinfo                        |  6 ++--
 .../files/patch-pyTooling_Platform_____init____.py | 29 +++++++++++++++++
 .../files/patch-pyTooling_Process_____init____.py  | 37 ++++++++++++++++++++++
 4 files changed, 78 insertions(+), 18 deletions(-)

diff --git a/devel/py-pyTooling/Makefile b/devel/py-pyTooling/Makefile
index c72550ef152b..a27df8e3f8d4 100644
--- a/devel/py-pyTooling/Makefile
+++ b/devel/py-pyTooling/Makefile
@@ -1,6 +1,6 @@
 PORTNAME=	pyTooling
 DISTVERSIONPREFIX=	v
-DISTVERSION=	8.16.1
+DISTVERSION=	9.0.0
 CATEGORIES=	devel
 #MASTER_SITES=	PYPI # requirements.txt is missing
 PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}
@@ -15,18 +15,11 @@ LICENSE_FILE=	${WRKSRC}/LICENSE.md
 
 BUILD_DEPENDS=	${PY_SETUPTOOLS} \
 		${PYTHON_PKGNAMEPREFIX}wheel>=0.40.0:devel/py-wheel@${PY_FLAVOR}
-TEST_DEPENDS=	${PYTHON_PKGNAMEPREFIX}anytree>=2.8.0:devel/py-anytree@${PY_FLAVOR} \
+TEST_DEPENDS=	${PYTHON_PKGNAMEPREFIX}aiohttp>=3.12:www/py-aiohttp@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}colorama>=0.4.6:devel/py-colorama@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}coverage>0:devel/py-coverage@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}igraph>0:math/py-igraph@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}itertree>0:devel/py-itertree@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}lxml>0:devel/py-lxml@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}mypy>=1.10:devel/py-mypy@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}networkx>=2.6:math/py-networkx@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}pytest-benchmark>=4.0.0:devel/py-pytest-benchmark@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}pytest-cov>0:devel/py-pytest-cov@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}ruamel.yaml>=0.17:devel/py-ruamel.yaml@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}treelib>0:devel/py-treelib@${PY_FLAVOR}
+		${PYTHON_PKGNAMEPREFIX}pytest>=9.1:devel/py-pytest@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}requests>=2.32:www/py-requests@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}ruamel.yaml>=0.19.1:devel/py-ruamel.yaml@${PY_FLAVOR}
 
 USES=		python
 USE_PYTHON=	pep517 autoplist
@@ -34,11 +27,12 @@ USE_GITHUB=	yes
 
 NO_ARCH=	yes
 
+TEST_ARGS=	--disable-plugin-autoload
 TEST_WRKSRC=	${WRKSRC}
 
-# tests as of 8.14.0: 1149 passed, 19 skipped, 8 xfailed, 17 deselected
-
 do-test:
-	cd ${TEST_WRKSRC} && ${PYTHON_CMD} -m pytest tests/unit -k 'not ExplicitPathsOnWindows and not ExplicitPathsOnLinux and not ExplicitBinaryDirectoryOnWindows and not ExplicitBinaryDirectoryOnLinux and not test_TypeConvertToInt and not test_LineTerminal' -v
+	cd ${TEST_WRKSRC} && ${PYTHON_CMD} -m pytest ${TEST_ARGS} tests/unit -k 'not ExplicitPathsOnWindows and not ExplicitPathsOnLinux and not ExplicitBinaryDirectoryOnWindows and not ExplicitBinaryDirectoryOnLinux and not Packaging and not test_TypeConvertToInt and not test_LineTerminal' -v
+
+# tests as of 9.0.0: 1311 passed, 16 skipped, 29 deselected, 3 xfailed, 93 subtests passed in 35.40s
 
 .include <bsd.port.mk>
diff --git a/devel/py-pyTooling/distinfo b/devel/py-pyTooling/distinfo
index 2f956d89f73a..52b91624f505 100644
--- a/devel/py-pyTooling/distinfo
+++ b/devel/py-pyTooling/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1783581648
-SHA256 (pyTooling-pyTooling-v8.16.1_GH0.tar.gz) = afc35f9aa5a780dc48923b9a990d0660a36162b7bb3ed2454899226af7999cdd
-SIZE (pyTooling-pyTooling-v8.16.1_GH0.tar.gz) = 802579
+TIMESTAMP = 1789676918
+SHA256 (pyTooling-pyTooling-v9.0.0_GH0.tar.gz) = 7a6ce693fc4b2ba183c86a16c3831994bc8fc86206fa6734d88903cfc41bac29
+SIZE (pyTooling-pyTooling-v9.0.0_GH0.tar.gz) = 879721
diff --git a/devel/py-pyTooling/files/patch-pyTooling_Platform_____init____.py b/devel/py-pyTooling/files/patch-pyTooling_Platform_____init____.py
new file mode 100644
index 000000000000..5109c15a4dca
--- /dev/null
+++ b/devel/py-pyTooling/files/patch-pyTooling_Platform_____init____.py
@@ -0,0 +1,29 @@
+-- Recognize FreeBSD arm64/aarch64 as AArch64 during test and runtime
+-- platform detection. This is needed because the upstream 9.0.0 release
+-- only accepts amd64 on FreeBSD, but the ports builders report arm64.
+--- pyTooling/Platform/__init__.py.orig	2026-08-20 21:49:09 UTC
++++ pyTooling/Platform/__init__.py
+@@ -306,6 +306,8 @@ class Platform(metaclass=ExtendedType, singleton=True,
+ 			elif sys_platform.startswith("freebsd"):
+ 				if machine == "amd64":
+ 					self._platform = Platforms.FreeBSD
++				elif machine in ("aarch64", "arm64"):
++					self._platform = Platforms.OS_FreeBSD | Platforms.ENV_Native | Platforms.ARCH_AArch64
+ 				else:  # pragma: no cover
+ 					raise UnknownPlatformException(f"Unknown architecture '{machine}' for FreeBSD.")
+ 			else:  # pragma: no cover
+@@ -366,11 +368,11 @@ class Platform(metaclass=ExtendedType, singleton=True,
+ 
+ 	@readonly
+ 	def IsNativeFreeBSD(self) -> bool:
+-		"""Returns true, if the platform is a :term:`native` FreeBSD x86-64 platform.
++		"""Returns true, if the platform is a :term:`native` FreeBSD platform.
+ 
+-		:returns: ``True``, if the platform is a native FreeBSD x86-64 platform.
++		:returns: ``True``, if the platform is a native FreeBSD platform.
+ 		"""
+-		return Platforms.FreeBSD in self._platform
++		return (Platforms.OS_FreeBSD in self._platform) and (Platforms.ENV_Native in self._platform)
+ 
+ 	@readonly
+ 	def IsNativeMacOS(self) -> bool:
diff --git a/devel/py-pyTooling/files/patch-pyTooling_Process_____init____.py b/devel/py-pyTooling/files/patch-pyTooling_Process_____init____.py
new file mode 100644
index 000000000000..37958ddc56cf
--- /dev/null
+++ b/devel/py-pyTooling/files/patch-pyTooling_Process_____init____.py
@@ -0,0 +1,37 @@
+-- Add a minimal FreeBSD process-memory implementation so the upstream 9.0.0
+-- test suite can run on FreeBSD arm64 builders. Upstream lacks a FreeBSD
+-- branch here and otherwise aborts during module import.
+--- pyTooling/Process/__init__.py.orig	2026-09-17 20:37:56 UTC
++++ pyTooling/Process/__init__.py
+@@ -114,6 +114,8 @@ class ProcessInformation(metaclass=ExtendedType, slots
+ 		_processHandle: Any
+ 	elif CurrentPlatform.IsNativeLinux:
+ 		_processStatusFile: ClassVar[Path] = Path(f"/proc/self/statm")
++	elif CurrentPlatform.IsNativeFreeBSD:
++		pass
+ 
+ 	if CurrentPlatform.IsNativeWindows or CurrentPlatform.IsMSYS2Environment:
+ 		def __init__(self) -> None:
+@@ -182,6 +184,22 @@ class ProcessInformation(metaclass=ExtendedType, slots
+ 			rss = int(fields[1]) * self._pageSize  #: VmRSS
+ 
+ 			return MemoryInfo(rss, vms)
++
++	elif CurrentPlatform.IsNativeFreeBSD:
++		def GetMemoryUsage(self) -> MemoryInfo:
++			"""
++			Get the memory usage of this Python process on a FreeBSD system.
++
++			``resource.getrusage`` provides the resident size portably on FreeBSD.
++			Virtual memory usage is not exposed by the stdlib here, so report ``0``
++			for the virtual component until upstream adds a native implementation.
++
++			:returns: Memory usage of the current process.
++			"""
++			from resource import RUSAGE_SELF, getrusage
++
++			rss = getrusage(RUSAGE_SELF).ru_maxrss * 1024
++			return MemoryInfo(rss, 0)
+ 
+ 	elif CurrentPlatform.IsNativeMacOS:
+ 		class _ProcTaskInfo(Structure):