From 252572bd9971d53ab9a96a35a65aefea3c755b76 Mon Sep 17 00:00:00 2001 From: Tim Jenness Date: Tue, 28 Oct 2025 15:14:06 -0700 Subject: [PATCH 1/5] Use new license metadata standard in pyproject.toml --- pyproject.toml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 6fb6103a..df00acf0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,14 +6,14 @@ build-backend = "setuptools.build_meta" name = "lsst-utils" requires-python = ">=3.10.0" description = "Utility functions from Rubin Observatory Data Management for the Legacy Survey of Space and Time (LSST)." -license = {text = "BSD 3-Clause License"} +license = "BSD-3-Clause" +license-files = ["COPYRIGHT", "LICENSE"] readme = "README.rst" authors = [ {name="Rubin Observatory Data Management", email="dm-admin@lists.lsst.org"}, ] classifiers = [ "Intended Audience :: Developers", - "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.10", @@ -47,7 +47,6 @@ where = ["python"] [tool.setuptools] zip-safe = true -license-files = ["COPYRIGHT", "LICENSE"] [tool.setuptools.package-data] "lsst.utils" = ["py.typed"] From 7e83f3016f16050fdc48af5741afe06f6e49b114 Mon Sep 17 00:00:00 2001 From: Tim Jenness Date: Tue, 28 Oct 2025 15:14:36 -0700 Subject: [PATCH 2/5] Declare that the package works with python 3.13 --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index df00acf0..b922af4d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -19,6 +19,7 @@ classifiers = [ "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", ] keywords=["lsst"] dependencies = [ From 60c050c18c7640e2e82c286141ea236c78f3db48 Mon Sep 17 00:00:00 2001 From: Tim Jenness Date: Tue, 28 Oct 2025 15:15:10 -0700 Subject: [PATCH 3/5] Add 3.14 to build matrix --- .github/workflows/build.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index bd7bee33..12b8bb5e 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -13,7 +13,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: ["3.10", "3.11", "3.12", "3.13"] + python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"] steps: - uses: actions/checkout@v5 From 6d6fcfc0043663863ceafb74a0a5a71398d3ab23 Mon Sep 17 00:00:00 2001 From: Tim Jenness Date: Tue, 28 Oct 2025 15:35:42 -0700 Subject: [PATCH 4/5] Protect against an expected yaml loader not being available conda PyYaml for python 3.14 does not currently include CLoader. --- python/lsst/utils/packages.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/python/lsst/utils/packages.py b/python/lsst/utils/packages.py index 6400f071..5cb3da4a 100644 --- a/python/lsst/utils/packages.py +++ b/python/lsst/utils/packages.py @@ -780,7 +780,11 @@ def _pkg_constructor(loader: yaml.constructor.SafeConstructor, node: yaml.Node) yield Packages(loader.construct_mapping(node, deep=True)) # type: ignore -for loader in (yaml.Loader, yaml.CLoader, yaml.UnsafeLoader, yaml.SafeLoader, yaml.FullLoader): +for loader_str in ("Loader", "CLoader", "UnsafeLoader", "SafeLoader", "FullLoader"): + loader = getattr(yaml, loader_str, None) + if loader is None: + continue + yaml.add_constructor("lsst.utils.packages.Packages", _pkg_constructor, Loader=loader) # Register the old name with YAML. From 42c19aca221b838e891df15c6ddf95bfe53b71fc Mon Sep 17 00:00:00 2001 From: Tim Jenness Date: Tue, 28 Oct 2025 15:46:48 -0700 Subject: [PATCH 5/5] Declare that the package works with python 3.14 --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index b922af4d..f3e09f7c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -20,6 +20,7 @@ classifiers = [ "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", ] keywords=["lsst"] dependencies = [