Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 04 Aug 2026 20:11:03 +0000
From:      Yuri Victorovich <yuri@FreeBSD.org>
To:        ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org
Subject:   git: c48babd71c47 - main - math/py-yt: update 4=?utf-8?Q?=2E3.1 =E2=86=92?= 4.4.2
Message-ID:  <6a724757.3d25f.30c9cfd7@gitrepo.freebsd.org>

index | next in thread | raw e-mail

The branch main has been updated by yuri:

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

commit c48babd71c47296d2eb8c904dd94d6e10c974944
Author:     Yuri Victorovich <yuri@FreeBSD.org>
AuthorDate: 2026-08-04 19:07:50 +0000
Commit:     Yuri Victorovich <yuri@FreeBSD.org>
CommitDate: 2026-08-04 20:10:27 +0000

    math/py-yt: update 4.3.1 → 4.4.2
---
 math/py-yt/Makefile                                | 50 +++++++++++-----------
 math/py-yt/distinfo                                |  6 +--
 math/py-yt/files/patch-pyproject.toml              | 28 ++++++++++++
 ...t_data__objects_tests_test__data__containers.py | 49 +++++++++++++++++++++
 ...yt_data__objects_tests_test__dataset__access.py | 29 +++++++++++++
 ...t_data__objects_tests_test__particle__filter.py | 31 ++++++++++++++
 math/py-yt/files/patch-yt_tests_test__funcs.py     | 48 +++++++++++++++++++++
 .../files/patch-yt_utilities_lib_platform__dep.h   | 14 ------
 .../patch-yt_utilities_lib_platform__dep__math.hpp | 16 -------
 ...tch-yt_visualization_tests_test__color__maps.py | 22 ++++++++++
 ...h-yt_visualization_tests_test__image__writer.py | 22 ++++++++++
 11 files changed, 257 insertions(+), 58 deletions(-)

diff --git a/math/py-yt/Makefile b/math/py-yt/Makefile
index e9ed57e30b3b..76cc8ac88331 100644
--- a/math/py-yt/Makefile
+++ b/math/py-yt/Makefile
@@ -1,6 +1,5 @@
 PORTNAME=	yt
-DISTVERSION=	4.3.1
-PORTREVISION=	5
+DISTVERSION=	4.4.2
 CATEGORIES=	math astro python
 MASTER_SITES=	PYPI
 PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}
@@ -12,38 +11,39 @@ WWW=		https://yt-project.org/
 LICENSE=	BSD3CLAUSE
 LICENSE_FILE=	${WRKSRC}/COPYING.txt
 
-# dependencies are in setup.cfg
-BUILD_DEPENDS=	${PYTHON_PKGNAMEPREFIX}numpy>=1.16:math/py-numpy@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}ewah-bool-utils>=1.0.2:devel/py-ewah-bool-utils@${PY_FLAVOR}
-RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}numpy>=1.16:math/py-numpy@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}cmyt>=0.2.2:math/py-cmyt@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}ewah-bool-utils>=1.0.2:devel/py-ewah-bool-utils@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}ipywidgets>0:devel/py-ipywidgets@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}ipython>=1.0:devel/ipython@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}matplotlib>0:math/py-matplotlib@${PY_FLAVOR} \
+BUILD_DEPENDS=	${PYTHON_PKGNAMEPREFIX}ewah-bool-utils>=1.2.0:devel/py-ewah-bool-utils@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}numpy>=2.0.0:math/py-numpy@${PY_FLAVOR}
+RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}cmyt>=1.1.2:math/py-cmyt@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}ewah-bool-utils>=1.2.0:devel/py-ewah-bool-utils@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}matplotlib>=3.5:math/py-matplotlib@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}more-itertools>=8.4:devel/py-more-itertools@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}numpy>=1.16:math/py-numpy@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}numpy>=1.21.3:math/py-numpy@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}packaging>=20.9:devel/py-packaging@${PY_FLAVOR} \
-		${PY_PILLOW} \
-		${PYTHON_PKGNAMEPREFIX}pyparsing>=2.0.2:devel/py-pyparsing@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}sympy>=1.2:math/py-sympy@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}toml>=0.10.2:textproc/py-toml@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}pillow>=8.3.2:graphics/py-pillow@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}tomli>=1.2.3:textproc/py-tomli@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}tomli-w>=0.4.0:textproc/py-tomli-w@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}tqdm>=3.4.0:misc/py-tqdm@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}unyt>=2.8.0:math/py-unyt@${PY_FLAVOR}
+		${PYTHON_PKGNAMEPREFIX}typing-extensions>=4.4.0:devel/py-typing-extensions@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}unyt>=2.9.2:math/py-unyt@${PY_FLAVOR}
 
 USES=		dos2unix localbase python
 USE_PYTHON=	autoplist concurrent cython distutils
 
-post-patch:
-	@${REINPLACE_CMD} -e "s|check_for_pyembree() is not None|False|" \
-		${WRKSRC}/setup.py
-	@${REINPLACE_CMD} -e "s|check_for_openmp() is True|True|" \
-		${WRKSRC}/setup.py
-	@${REINPLACE_CMD} -e "s|\['-fopenmp', filename\]|['-I${LOCALBASE}/include', '-L${LOCALBASE}/lib', '-lm', '-fopenmp', filename]|" \
-		${WRKSRC}/setupext.py
-
 post-install:
 	@${STRIP_CMD} $$(${FIND} ${STAGEDIR}${PYTHON_SITELIBDIR} -name "*.so")
 
+TEST_ENV=	${MAKE_ENV} \
+		PYTHONPATH=${STAGEDIR}${PYTHONPREFIX_SITELIBDIR} \
+		MPLBACKEND=Agg \
+		PYTEST_ADDOPTS="-p no:black -p no:ruff -p no:mypy -p no:flake8 -p no:cov -p no:benchmark -p no:inline-snapshot -p no:xdist -p no:randomly"
+
+do-test:
+	@cd ${STAGEDIR}${PYTHONPREFIX_SITELIBDIR} && \
+		${SETENV} ${TEST_ENV} pytest yt/tests \
+		--deselect=yt/data_objects/tests/test_data_containers.py::TestDataContainers::test_to_astropy_table
+
+# tests as of 4.4.2: 53 passed, 10 skipped, 1 xfailed in 9.87s
+# Additional tests are excluded because they depend on nose (broken on Python 3.12)
+# or on data files/network access.
+
 .include <bsd.port.mk>
diff --git a/math/py-yt/distinfo b/math/py-yt/distinfo
index 9a0e34c27856..f7193824e085 100644
--- a/math/py-yt/distinfo
+++ b/math/py-yt/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1725817547
-SHA256 (yt-4.3.1.tar.gz) = 7b6db5c336dc22dd2212bb17c3b18f42cfe144bb1f6c3dda0dcd47eb77195e0e
-SIZE (yt-4.3.1.tar.gz) = 13810591
+TIMESTAMP = 1785732501
+SHA256 (yt-4.4.2.tar.gz) = e0883a89c2543b436c3778f555edf253c71f252f744752dc1688f8524ad03b0b
+SIZE (yt-4.4.2.tar.gz) = 4946809
diff --git a/math/py-yt/files/patch-pyproject.toml b/math/py-yt/files/patch-pyproject.toml
new file mode 100644
index 000000000000..3e6c6e956abc
--- /dev/null
+++ b/math/py-yt/files/patch-pyproject.toml
@@ -0,0 +1,28 @@
+-- Relax the setuptools version requirement to match the version available in the
+-- FreeBSD ports tree (devel/py-setuptools). Also adapt the PEP 621 license
+-- fields to the form supported by that setuptools version.
+
+--- pyproject.toml.orig	2025-11-18 00:00:00 UTC
++++ pyproject.toml
+@@ -1,7 +1,7 @@
+ [build-system]
+ # keep in sync with .github/workflows/wheels.yaml
+ requires = [
+-  "setuptools>=77.0.0",
++  "setuptools>=63.1.0",
+   "Cython>=3.0.3",
+   "numpy>=2.0.0",
+   "ewah-bool-utils>=1.2.0",
+@@ -15,11 +15,7 @@
+ authors = [
+     { name = "The yt project", email = "yt-dev@python.org" },
+ ]
+-license = "BSD-3-Clause"
+-license-files = [
+-    "COPYING.txt",
+-    "yt/frontends/artio/artio_headers/LICENSE",
+-]
++license = {text = "BSD-3-Clause"}
+ classifiers = [
+     "Development Status :: 5 - Production/Stable",
+     "Environment :: Console",
diff --git a/math/py-yt/files/patch-yt_data__objects_tests_test__data__containers.py b/math/py-yt/files/patch-yt_data__objects_tests_test__data__containers.py
new file mode 100644
index 000000000000..c71204f9788e
--- /dev/null
+++ b/math/py-yt/files/patch-yt_data__objects_tests_test__data__containers.py
@@ -0,0 +1,49 @@
+-- Replace nose.tools.assert_raises with unittest.TestCase.assertRaises so yt tests can run under Python 3.12 where nose is broken.
+--- yt/data_objects/tests/test_data_containers.py.orig	2026-08-04 00:34:29 UTC
++++ yt/data_objects/tests/test_data_containers.py
+@@ -4,7 +4,8 @@ import numpy as np
+ import unittest
+ 
+ import numpy as np
+-from nose.tools import assert_raises
++from unittest import TestCase
++_assert_raises = TestCase().assertRaises
+ from numpy.testing import assert_array_equal, assert_equal
+ 
+ from yt.data_objects.data_containers import YTDataContainer
+@@ -32,7 +33,7 @@ class TestDataContainers(unittest.TestCase):
+ 
+     def test_yt_data_container(self):
+         # Test if ds could be None
+-        with assert_raises(RuntimeError) as err:
++        with _assert_raises(RuntimeError) as err:
+             YTDataContainer(None, None)
+         desired = (
+             "Error: ds must be set either through class"
+@@ -53,7 +54,7 @@ class TestDataContainers(unittest.TestCase):
+         assert_equal("density" in proj.keys(), False)
+ 
+         # Delete a non-existent field
+-        with assert_raises(YTFieldNotFound) as ex:
++        with _assert_raises(YTFieldNotFound) as ex:
+             del proj["p_mass"]
+         desired = "Could not find field 'p_mass' in UniformGridData."
+         assert_equal(str(ex.exception), desired)
+@@ -82,7 +83,7 @@ class TestDataContainers(unittest.TestCase):
+         ds = fake_random_ds(16, particles=10)
+         sp = ds.sphere(ds.domain_center, 0.25)
+ 
+-        with assert_raises(YTException):
++        with _assert_raises(YTException):
+             sp.write_out(filename, fields=[("all", "particle_ones")])
+ 
+     @requires_module("pandas")
+@@ -152,7 +153,7 @@ class TestDataContainers(unittest.TestCase):
+         dd = ds.all_data()
+         q = dd.quantities["WeightedAverageQuantity"]
+         rho = q(("all", "particle_velocity_x"), weight=("all", "particle_mass"))
+-        with assert_raises(NotImplementedError):
++        with _assert_raises(NotImplementedError):
+             dd.extract_isocontours("density", rho, sample_values="x")
+ 
+     def test_derived_field(self):
diff --git a/math/py-yt/files/patch-yt_data__objects_tests_test__dataset__access.py b/math/py-yt/files/patch-yt_data__objects_tests_test__dataset__access.py
new file mode 100644
index 000000000000..98394a102c2a
--- /dev/null
+++ b/math/py-yt/files/patch-yt_data__objects_tests_test__dataset__access.py
@@ -0,0 +1,29 @@
+-- Replace nose.tools.assert_raises with unittest.TestCase.assertRaises so yt tests can run under Python 3.12 where nose is broken.
+--- yt/data_objects/tests/test_dataset_access.py.orig	2026-08-04 00:34:29 UTC
++++ yt/data_objects/tests/test_dataset_access.py
+@@ -1,5 +1,6 @@ import numpy as np
+ import numpy as np
+-from nose.tools import assert_raises
++from unittest import TestCase
++_assert_raises = TestCase().assertRaises
+ from numpy.testing import assert_almost_equal, assert_equal
+ 
+ from yt.testing import (
+@@ -66,7 +67,7 @@ def test_region_from_d():
+     assert_equal(reg1["gas", "density"], reg2["gas", "density"])
+ 
+     # Test with bad boundary initialization
+-    with assert_raises(RuntimeError):
++    with _assert_raises(RuntimeError):
+         ds.r[0.3:0.1, 0.4:0.6, :]
+ 
+     # Test region by creating an arbitrary grid
+@@ -133,7 +134,7 @@ def test_point_from_r():
+     assert_equal(pt1["gas", "density"], pt2["gas", "density"])
+ 
+     # Test YTDimensionalityError
+-    with assert_raises(YTDimensionalityError) as ex:
++    with _assert_raises(YTDimensionalityError) as ex:
+         ds.r[0.5, 0.1]
+     assert_equal(str(ex.exception), "Dimensionality specified was 2 but we need 3")
+ 
diff --git a/math/py-yt/files/patch-yt_data__objects_tests_test__particle__filter.py b/math/py-yt/files/patch-yt_data__objects_tests_test__particle__filter.py
new file mode 100644
index 000000000000..2d1260caa8dc
--- /dev/null
+++ b/math/py-yt/files/patch-yt_data__objects_tests_test__particle__filter.py
@@ -0,0 +1,31 @@
+-- Replace nose.tools.assert_raises with unittest.TestCase.assertRaises so yt tests can run under Python 3.12 where nose is broken.
+--- yt/data_objects/tests/test_particle_filter.py.orig	2026-08-04 00:34:29 UTC
++++ yt/data_objects/tests/test_particle_filter.py
+@@ -3,7 +3,8 @@ import numpy as np
+ import tempfile
+ 
+ import numpy as np
+-from nose.tools import assert_raises
++from unittest import TestCase
++_assert_raises = TestCase().assertRaises
+ from numpy.testing import assert_equal
+ 
+ from yt.data_objects.particle_filters import add_particle_filter, particle_filter
+@@ -39,7 +40,7 @@ def test_add_particle_filter():
+     assert ("deposit", "stars2_cic") in ds.derived_field_list
+ 
+     # Test adding filter with fields not defined on the ds
+-    with assert_raises(YTIllDefinedParticleFilter) as ex:
++    with _assert_raises(YTIllDefinedParticleFilter) as ex:
+         add_particle_filter(
+             "bad_stars", function=stars, filtered_type="all", requires=["wrong_field"]
+         )
+@@ -131,7 +132,7 @@ def test_particle_filter_exceptions():
+     ds.add_particle_filter("filter1")
+ 
+     ad = ds.all_data()
+-    with assert_raises(YTIllDefinedFilter):
++    with _assert_raises(YTIllDefinedFilter):
+         ad["filter1", "particle_mass"].shape[0]
+ 
+     @particle_filter(filtered_type="all", requires=["particle_mass"])
diff --git a/math/py-yt/files/patch-yt_tests_test__funcs.py b/math/py-yt/files/patch-yt_tests_test__funcs.py
new file mode 100644
index 000000000000..02c5307f5663
--- /dev/null
+++ b/math/py-yt/files/patch-yt_tests_test__funcs.py
@@ -0,0 +1,48 @@
+-- Replace nose.tools.assert_raises with unittest.TestCase.assertRaises so yt tests can run under Python 3.12 where nose is broken.
+--- yt/tests/test_funcs.py.orig	2026-08-04 00:34:29 UTC
++++ yt/tests/test_funcs.py
+@@ -1,6 +1,7 @@ import os
+ import os
+ 
+-from nose.tools import assert_raises
++from unittest import TestCase
++_assert_raises = TestCase().assertRaises
+ from numpy.testing import assert_equal
+ 
+ from yt.funcs import (
+@@ -21,7 +22,7 @@ def test_validate_axis():
+     ds = fake_amr_ds(geometry="cylindrical")
+     ds.slice("Theta", 0.25)
+ 
+-    with assert_raises(TypeError) as ex:
++    with _assert_raises(TypeError) as ex:
+         # default geometry is cartesian
+         ds = fake_amr_ds()
+         ds.slice("r", 0.25)
+@@ -35,7 +36,7 @@ def test_validate_center():
+     validate_center("max")
+     validate_center("MIN_")
+ 
+-    with assert_raises(TypeError) as ex:
++    with _assert_raises(TypeError) as ex:
+         validate_center("avg")
+     desired = (
+         "Expected 'center' to be in ['c', 'center', 'm', 'max', 'min'] "
+@@ -50,7 +51,7 @@ def test_validate_center():
+         def __init__(self, center):
+             self.center = center
+ 
+-    with assert_raises(TypeError) as ex:
++    with _assert_raises(TypeError) as ex:
+         validate_center(CustomCenter(10))
+     desired = (
+         "Expected 'center' to be a numeric object of type "
+@@ -118,7 +119,7 @@ def test_simple_download_file():
+         except FileNotFoundError:
+             pass
+ 
+-    with assert_raises(RuntimeError) as ex:
++    with _assert_raises(RuntimeError) as ex:
+         simple_download_file("http://yt-project.org/404", "simple-download-file")
+ 
+     desired = "Attempt to download file from http://yt-project.org/404 failed with error 404: Not Found."
diff --git a/math/py-yt/files/patch-yt_utilities_lib_platform__dep.h b/math/py-yt/files/patch-yt_utilities_lib_platform__dep.h
deleted file mode 100644
index 286fb4d5ffc7..000000000000
--- a/math/py-yt/files/patch-yt_utilities_lib_platform__dep.h
+++ /dev/null
@@ -1,14 +0,0 @@
---- yt/utilities/lib/platform_dep.h.orig	2021-08-02 20:27:17 UTC
-+++ yt/utilities/lib/platform_dep.h
-@@ -59,6 +59,10 @@ double erf(double x)
- 
- #else
- #include <stdint.h>
--#include "alloca.h"
-+#if !defined(__FreeBSD__)
-+#  include "alloca.h"
-+#else
-+#  include <stdlib.h>
-+#endif
- #include <math.h>
- #endif
diff --git a/math/py-yt/files/patch-yt_utilities_lib_platform__dep__math.hpp b/math/py-yt/files/patch-yt_utilities_lib_platform__dep__math.hpp
deleted file mode 100644
index ddc45bddb8ec..000000000000
--- a/math/py-yt/files/patch-yt_utilities_lib_platform__dep__math.hpp
+++ /dev/null
@@ -1,16 +0,0 @@
---- yt/utilities/lib/platform_dep_math.hpp.orig	2021-08-02 20:38:53 UTC
-+++ yt/utilities/lib/platform_dep_math.hpp
-@@ -5,6 +5,7 @@ MSVC does not define isnormal in the std:: namespace, 
- However with GCC-5, there is a clash between the definition of isnormal in <math.h> and using C++14, so we need to import from cmath instead.
- */
- 
-+#if !defined(__FreeBSD__) // see https://github.com/yt-project/yt/issues/3459
- #if _MSC_VER
- #include <math.h>
- inline bool __isnormal(double x) {
-@@ -15,4 +16,5 @@ inline bool __isnormal(double x) {
- inline bool __isnormal(double x) {
-     return std::isnormal(x);
- }
-+#endif
- #endif
diff --git a/math/py-yt/files/patch-yt_visualization_tests_test__color__maps.py b/math/py-yt/files/patch-yt_visualization_tests_test__color__maps.py
new file mode 100644
index 000000000000..89c34520d699
--- /dev/null
+++ b/math/py-yt/files/patch-yt_visualization_tests_test__color__maps.py
@@ -0,0 +1,22 @@
+-- Replace nose.tools.assert_raises with unittest.TestCase.assertRaises so yt tests can run under Python 3.12 where nose is broken.
+--- yt/visualization/tests/test_color_maps.py.orig	2026-08-04 00:34:29 UTC
++++ yt/visualization/tests/test_color_maps.py
+@@ -5,7 +5,8 @@ import numpy as np
+ 
+ import matplotlib.pyplot as plt
+ import numpy as np
+-from nose.tools import assert_raises
++from unittest import TestCase
++_assert_raises = TestCase().assertRaises
+ from numpy.testing import assert_almost_equal, assert_equal
+ 
+ from yt import make_colormap, show_colormaps
+@@ -29,7 +30,7 @@ class TestColorMaps(unittest.TestCase):
+         show_colormaps(subset="yt_native", filename="yt_color_maps.png")
+ 
+         # Test for non-existent color map
+-        with assert_raises(AttributeError) as ex:
++        with _assert_raises(AttributeError) as ex:
+             show_colormaps(subset="unknown", filename="yt_color_maps.png")
+         desired = (
+             "show_colormaps requires subset attribute to be 'all', "
diff --git a/math/py-yt/files/patch-yt_visualization_tests_test__image__writer.py b/math/py-yt/files/patch-yt_visualization_tests_test__image__writer.py
new file mode 100644
index 000000000000..425114066339
--- /dev/null
+++ b/math/py-yt/files/patch-yt_visualization_tests_test__image__writer.py
@@ -0,0 +1,22 @@
+-- Replace nose.tools.assert_raises with unittest.TestCase.assertRaises so yt tests can run under Python 3.12 where nose is broken.
+--- yt/visualization/tests/test_image_writer.py.orig	2026-08-04 00:34:29 UTC
++++ yt/visualization/tests/test_image_writer.py
+@@ -4,7 +4,8 @@ import numpy as np
+ import unittest
+ 
+ import numpy as np
+-from nose.tools import assert_raises
++from unittest import TestCase
++_assert_raises = TestCase().assertRaises
+ from numpy.testing import assert_equal
+ 
+ from yt.testing import fake_random_ds
+@@ -65,7 +66,7 @@ class TestImageWriter(unittest.TestCase):
+         png_str_trans = write_bitmap(image_trans, None, transpose=True)
+         assert_equal(png_str, png_str_trans)
+ 
+-        with assert_raises(RuntimeError) as ex:
++        with _assert_raises(RuntimeError) as ex:
+             write_bitmap(np.ones([16, 16]), None)
+         desired = "Expecting image array of shape (N,M,3) or (N,M,4), received (16, 16)"
+         assert_equal(str(ex.exception)[:50], desired[:50])


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?6a724757.3d25f.30c9cfd7>