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 diff --git a/pyproject.toml b/pyproject.toml index 6fb6103a..f3e09f7c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,19 +6,21 @@ 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", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", ] keywords=["lsst"] dependencies = [ @@ -47,7 +49,6 @@ where = ["python"] [tool.setuptools] zip-safe = true -license-files = ["COPYRIGHT", "LICENSE"] [tool.setuptools.package-data] "lsst.utils" = ["py.typed"] 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.