[Debian-astro-maintainers] Bug#1091138: specutils: FTBFS: KeyError: 'setuptools_scm'
Lucas Nussbaum
lucas at debian.org
Sun Dec 22 16:49:47 GMT 2024
Source: specutils
Version: 1.19.0-2
Severity: serious
Justification: FTBFS
Tags: trixie sid ftbfs
User: lucas at debian.org
Usertags: ftbfs-20241222 ftbfs-trixie
Hi,
During a rebuild of all packages in sid, your package failed to build
on amd64.
Relevant part (hopefully):
> debian/rules binary
> dh binary --with python3 --buildsystem=pybuild
> dh_update_autotools_config -O--buildsystem=pybuild
> dh_autoreconf -O--buildsystem=pybuild
> dh_auto_configure -O--buildsystem=pybuild
> I: pybuild base:311: python3.13 setup.py config
> WARNING setuptools_scm.pyproject_reading toml section missing 'pyproject.toml does not contain a tool.setuptools_scm section'
> Traceback (most recent call last):
> File "/usr/lib/python3/dist-packages/setuptools_scm/_integration/pyproject_reading.py", line 36, in read_pyproject
> section = defn.get("tool", {})[tool_name]
> ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
> KeyError: 'setuptools_scm'
> running config
> I: pybuild base:311: python3.12 setup.py config
> WARNING setuptools_scm.pyproject_reading toml section missing 'pyproject.toml does not contain a tool.setuptools_scm section'
> Traceback (most recent call last):
> File "/usr/lib/python3/dist-packages/setuptools_scm/_integration/pyproject_reading.py", line 36, in read_pyproject
> section = defn.get("tool", {})[tool_name]
> ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
> KeyError: 'setuptools_scm'
> running config
> dh_auto_build -O--buildsystem=pybuild
> I: pybuild base:311: /usr/bin/python3.13 setup.py build
> WARNING setuptools_scm.pyproject_reading toml section missing 'pyproject.toml does not contain a tool.setuptools_scm section'
> Traceback (most recent call last):
> File "/usr/lib/python3/dist-packages/setuptools_scm/_integration/pyproject_reading.py", line 36, in read_pyproject
> section = defn.get("tool", {})[tool_name]
> ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
> KeyError: 'setuptools_scm'
> running build
> running build_py
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils
> copying specutils/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils
> copying specutils/version.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils
> copying specutils/conftest.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/spectra
> copying specutils/spectra/spectral_region.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/spectra
> copying specutils/spectra/spectrum1d.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/spectra
> copying specutils/spectra/spectrum_collection.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/spectra
> copying specutils/spectra/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/spectra
> copying specutils/spectra/spectrum_list.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/spectra
> copying specutils/spectra/spectral_axis.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/spectra
> copying specutils/spectra/spectrum_mixin.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/spectra
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/fitting
> copying specutils/fitting/continuum.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/fitting
> copying specutils/fitting/fitmodels.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/fitting
> copying specutils/fitting/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/fitting
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/manipulation
> copying specutils/manipulation/manipulation.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/manipulation
> copying specutils/manipulation/utils.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/manipulation
> copying specutils/manipulation/resample.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/manipulation
> copying specutils/manipulation/model_replace.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/manipulation
> copying specutils/manipulation/extract_spectral_region.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/manipulation
> copying specutils/manipulation/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/manipulation
> copying specutils/manipulation/estimate_uncertainty.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/manipulation
> copying specutils/manipulation/smoothing.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/manipulation
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/tests
> copying specutils/tests/test_continuum.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/tests
> copying specutils/tests/test_resample.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/tests
> copying specutils/tests/test_slicing.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/tests
> copying specutils/tests/test_regions.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/tests
> copying specutils/tests/test_model_replace.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/tests
> copying specutils/tests/test_region_extract.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/tests
> copying specutils/tests/test_spectrum1d_unit_pix2.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/tests
> copying specutils/tests/setup_package.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/tests
> copying specutils/tests/test_spectrum_collection.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/tests
> copying specutils/tests/test_arithmetic.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/tests
> copying specutils/tests/test_utils.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/tests
> copying specutils/tests/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/tests
> copying specutils/tests/test_correlation.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/tests
> copying specutils/tests/test_spectral_axis.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/tests
> copying specutils/tests/test_fitting.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/tests
> copying specutils/tests/test_loaders.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/tests
> copying specutils/tests/test_template_comparison.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/tests
> copying specutils/tests/test_manipulation.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/tests
> copying specutils/tests/test_io.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/tests
> copying specutils/tests/test_dc_common_loaders.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/tests
> copying specutils/tests/test_analysis.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/tests
> copying specutils/tests/test_unc.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/tests
> copying specutils/tests/test_spectrum1d.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/tests
> copying specutils/tests/conftest.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/tests
> copying specutils/tests/test_smoothing.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/tests
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/utils
> copying specutils/utils/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/utils
> copying specutils/utils/quantity_model.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/utils
> copying specutils/utils/wcs_utils.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/utils
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io
> copying specutils/io/_list_of_loaders.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io
> copying specutils/io/parsing_utils.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io
> copying specutils/io/registers.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io
> copying specutils/io/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/analysis
> copying specutils/analysis/utils.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/analysis
> copying specutils/analysis/correlation.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/analysis
> copying specutils/analysis/moment.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/analysis
> copying specutils/analysis/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/analysis
> copying specutils/analysis/template_comparison.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/analysis
> copying specutils/analysis/location.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/analysis
> copying specutils/analysis/flux.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/analysis
> copying specutils/analysis/width.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/analysis
> copying specutils/analysis/uncertainty.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/analysis
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io/default_loaders
> copying specutils/io/default_loaders/apogee.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io/default_loaders
> copying specutils/io/default_loaders/subaru_pfs_spec.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io/default_loaders
> copying specutils/io/default_loaders/wigglez.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io/default_loaders
> copying specutils/io/default_loaders/generic_ecsv_reader.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io/default_loaders
> copying specutils/io/default_loaders/gama.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io/default_loaders
> copying specutils/io/default_loaders/twoslaq_lrg.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io/default_loaders
> copying specutils/io/default_loaders/generic_cube.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io/default_loaders
> copying specutils/io/default_loaders/muscles_sed.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io/default_loaders
> copying specutils/io/default_loaders/wcs_fits.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io/default_loaders
> copying specutils/io/default_loaders/galah.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io/default_loaders
> copying specutils/io/default_loaders/desi.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io/default_loaders
> copying specutils/io/default_loaders/aaomega_2df.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io/default_loaders
> copying specutils/io/default_loaders/tabular_fits.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io/default_loaders
> copying specutils/io/default_loaders/jwst_reader.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io/default_loaders
> copying specutils/io/default_loaders/sdss.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io/default_loaders
> copying specutils/io/default_loaders/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io/default_loaders
> copying specutils/io/default_loaders/sami.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io/default_loaders
> copying specutils/io/default_loaders/ascii.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io/default_loaders
> copying specutils/io/default_loaders/sixdfgs_reader.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io/default_loaders
> copying specutils/io/default_loaders/manga.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io/default_loaders
> copying specutils/io/default_loaders/hst_cos.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io/default_loaders
> copying specutils/io/default_loaders/hst_stis.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io/default_loaders
> copying specutils/io/default_loaders/twodfgrs_reader.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io/default_loaders
> copying specutils/io/default_loaders/sdss_v.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io/default_loaders
> copying specutils/io/default_loaders/ozdes.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io/default_loaders
> copying specutils/io/default_loaders/dc_common.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io/default_loaders
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io/asdf
> copying specutils/io/asdf/converters.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io/asdf
> copying specutils/io/asdf/extension.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io/asdf
> copying specutils/io/asdf/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io/asdf
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io/default_loaders/tests
> copying specutils/io/default_loaders/tests/test_apogee.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io/default_loaders/tests
> copying specutils/io/default_loaders/tests/test_desi.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io/default_loaders/tests
> copying specutils/io/default_loaders/tests/test_sdss_v.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io/default_loaders/tests
> copying specutils/io/default_loaders/tests/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io/default_loaders/tests
> copying specutils/io/default_loaders/tests/test_jwst_reader.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io/default_loaders/tests
> copying specutils/io/default_loaders/tests/generate_desi_test_data.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io/default_loaders/tests
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io/asdf/tests
> copying specutils/io/asdf/tests/helpers.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io/asdf/tests
> copying specutils/io/asdf/tests/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io/asdf/tests
> copying specutils/io/asdf/tests/test_spectra.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io/asdf/tests
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io/asdf/schemas
> copying specutils/io/asdf/schemas/spectrum1d-1.0.0.yaml -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io/asdf/schemas
> copying specutils/io/asdf/schemas/spectrum_list-1.0.0.yaml -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io/asdf/schemas
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io/asdf/manifests
> copying specutils/io/asdf/manifests/specutils-1.0.0.yaml -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io/asdf/manifests
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io/default_loaders/tests/desi_test_data
> copying specutils/io/default_loaders/tests/desi_test_data/coadd-sv3-dark-26065.fits -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io/default_loaders/tests/desi_test_data
> copying specutils/io/default_loaders/tests/desi_test_data/spectra-5-169-thru20210419.fits -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io/default_loaders/tests/desi_test_data
> copying specutils/io/default_loaders/tests/desi_test_data/coadd-5-169-thru20210419.fits -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io/default_loaders/tests/desi_test_data
> copying specutils/io/default_loaders/tests/desi_test_data/spectra-sv3-dark-26065.fits -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/specutils/io/default_loaders/tests/desi_test_data
> I: pybuild base:311: /usr/bin/python3 setup.py build
> WARNING setuptools_scm.pyproject_reading toml section missing 'pyproject.toml does not contain a tool.setuptools_scm section'
> Traceback (most recent call last):
> File "/usr/lib/python3/dist-packages/setuptools_scm/_integration/pyproject_reading.py", line 36, in read_pyproject
> section = defn.get("tool", {})[tool_name]
> ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
> KeyError: 'setuptools_scm'
> running build
> running build_py
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils
> copying specutils/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils
> copying specutils/version.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils
> copying specutils/conftest.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/spectra
> copying specutils/spectra/spectral_region.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/spectra
> copying specutils/spectra/spectrum1d.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/spectra
> copying specutils/spectra/spectrum_collection.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/spectra
> copying specutils/spectra/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/spectra
> copying specutils/spectra/spectrum_list.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/spectra
> copying specutils/spectra/spectral_axis.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/spectra
> copying specutils/spectra/spectrum_mixin.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/spectra
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/fitting
> copying specutils/fitting/continuum.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/fitting
> copying specutils/fitting/fitmodels.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/fitting
> copying specutils/fitting/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/fitting
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/manipulation
> copying specutils/manipulation/manipulation.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/manipulation
> copying specutils/manipulation/utils.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/manipulation
> copying specutils/manipulation/resample.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/manipulation
> copying specutils/manipulation/model_replace.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/manipulation
> copying specutils/manipulation/extract_spectral_region.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/manipulation
> copying specutils/manipulation/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/manipulation
> copying specutils/manipulation/estimate_uncertainty.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/manipulation
> copying specutils/manipulation/smoothing.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/manipulation
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/tests
> copying specutils/tests/test_continuum.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/tests
> copying specutils/tests/test_resample.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/tests
> copying specutils/tests/test_slicing.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/tests
> copying specutils/tests/test_regions.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/tests
> copying specutils/tests/test_model_replace.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/tests
> copying specutils/tests/test_region_extract.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/tests
> copying specutils/tests/test_spectrum1d_unit_pix2.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/tests
> copying specutils/tests/setup_package.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/tests
> copying specutils/tests/test_spectrum_collection.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/tests
> copying specutils/tests/test_arithmetic.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/tests
> copying specutils/tests/test_utils.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/tests
> copying specutils/tests/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/tests
> copying specutils/tests/test_correlation.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/tests
> copying specutils/tests/test_spectral_axis.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/tests
> copying specutils/tests/test_fitting.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/tests
> copying specutils/tests/test_loaders.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/tests
> copying specutils/tests/test_template_comparison.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/tests
> copying specutils/tests/test_manipulation.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/tests
> copying specutils/tests/test_io.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/tests
> copying specutils/tests/test_dc_common_loaders.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/tests
> copying specutils/tests/test_analysis.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/tests
> copying specutils/tests/test_unc.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/tests
> copying specutils/tests/test_spectrum1d.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/tests
> copying specutils/tests/conftest.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/tests
> copying specutils/tests/test_smoothing.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/tests
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/utils
> copying specutils/utils/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/utils
> copying specutils/utils/quantity_model.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/utils
> copying specutils/utils/wcs_utils.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/utils
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io
> copying specutils/io/_list_of_loaders.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io
> copying specutils/io/parsing_utils.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io
> copying specutils/io/registers.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io
> copying specutils/io/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/analysis
> copying specutils/analysis/utils.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/analysis
> copying specutils/analysis/correlation.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/analysis
> copying specutils/analysis/moment.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/analysis
> copying specutils/analysis/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/analysis
> copying specutils/analysis/template_comparison.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/analysis
> copying specutils/analysis/location.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/analysis
> copying specutils/analysis/flux.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/analysis
> copying specutils/analysis/width.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/analysis
> copying specutils/analysis/uncertainty.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/analysis
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io/default_loaders
> copying specutils/io/default_loaders/apogee.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io/default_loaders
> copying specutils/io/default_loaders/subaru_pfs_spec.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io/default_loaders
> copying specutils/io/default_loaders/wigglez.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io/default_loaders
> copying specutils/io/default_loaders/generic_ecsv_reader.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io/default_loaders
> copying specutils/io/default_loaders/gama.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io/default_loaders
> copying specutils/io/default_loaders/twoslaq_lrg.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io/default_loaders
> copying specutils/io/default_loaders/generic_cube.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io/default_loaders
> copying specutils/io/default_loaders/muscles_sed.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io/default_loaders
> copying specutils/io/default_loaders/wcs_fits.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io/default_loaders
> copying specutils/io/default_loaders/galah.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io/default_loaders
> copying specutils/io/default_loaders/desi.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io/default_loaders
> copying specutils/io/default_loaders/aaomega_2df.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io/default_loaders
> copying specutils/io/default_loaders/tabular_fits.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io/default_loaders
> copying specutils/io/default_loaders/jwst_reader.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io/default_loaders
> copying specutils/io/default_loaders/sdss.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io/default_loaders
> copying specutils/io/default_loaders/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io/default_loaders
> copying specutils/io/default_loaders/sami.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io/default_loaders
> copying specutils/io/default_loaders/ascii.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io/default_loaders
> copying specutils/io/default_loaders/sixdfgs_reader.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io/default_loaders
> copying specutils/io/default_loaders/manga.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io/default_loaders
> copying specutils/io/default_loaders/hst_cos.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io/default_loaders
> copying specutils/io/default_loaders/hst_stis.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io/default_loaders
> copying specutils/io/default_loaders/twodfgrs_reader.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io/default_loaders
> copying specutils/io/default_loaders/sdss_v.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io/default_loaders
> copying specutils/io/default_loaders/ozdes.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io/default_loaders
> copying specutils/io/default_loaders/dc_common.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io/default_loaders
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io/asdf
> copying specutils/io/asdf/converters.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io/asdf
> copying specutils/io/asdf/extension.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io/asdf
> copying specutils/io/asdf/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io/asdf
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io/default_loaders/tests
> copying specutils/io/default_loaders/tests/test_apogee.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io/default_loaders/tests
> copying specutils/io/default_loaders/tests/test_desi.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io/default_loaders/tests
> copying specutils/io/default_loaders/tests/test_sdss_v.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io/default_loaders/tests
> copying specutils/io/default_loaders/tests/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io/default_loaders/tests
> copying specutils/io/default_loaders/tests/test_jwst_reader.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io/default_loaders/tests
> copying specutils/io/default_loaders/tests/generate_desi_test_data.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io/default_loaders/tests
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io/asdf/tests
> copying specutils/io/asdf/tests/helpers.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io/asdf/tests
> copying specutils/io/asdf/tests/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io/asdf/tests
> copying specutils/io/asdf/tests/test_spectra.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io/asdf/tests
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io/asdf/schemas
> copying specutils/io/asdf/schemas/spectrum1d-1.0.0.yaml -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io/asdf/schemas
> copying specutils/io/asdf/schemas/spectrum_list-1.0.0.yaml -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io/asdf/schemas
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io/asdf/manifests
> copying specutils/io/asdf/manifests/specutils-1.0.0.yaml -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io/asdf/manifests
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io/default_loaders/tests/desi_test_data
> copying specutils/io/default_loaders/tests/desi_test_data/coadd-sv3-dark-26065.fits -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io/default_loaders/tests/desi_test_data
> copying specutils/io/default_loaders/tests/desi_test_data/spectra-5-169-thru20210419.fits -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io/default_loaders/tests/desi_test_data
> copying specutils/io/default_loaders/tests/desi_test_data/coadd-5-169-thru20210419.fits -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io/default_loaders/tests/desi_test_data
> copying specutils/io/default_loaders/tests/desi_test_data/spectra-sv3-dark-26065.fits -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/specutils/io/default_loaders/tests/desi_test_data
> dh_auto_test -O--buildsystem=pybuild
> I: pybuild base:311: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build; python3.13 -m pytest --remote-data=none --doctest-rst
> [1m============================= test session starts ==============================[0m
> platform linux -- Python 3.13.1, pytest-8.3.4, pluggy-1.5.0
> rootdir: /<<PKGBUILDDIR>>
> configfile: setup.cfg
> plugins: doctestplus-1.3.0, mock-3.14.0, arraydiff-0.6.1, astropy-0.11.0, astropy-header-0.2.2, remotedata-0.4.1, cov-5.0.0, typeguard-4.4.1, asdf-4.0.0, hypothesis-6.122.1, filter-subpackage-0.2.0
> collected 677 items
>
> specutils/io/asdf/tests/test_spectra.py [33mx[0m[33mx[0m[33mx[0m[33mx[0m[33mx[0m[33mx[0m[32m.[0m[32m [ 1%][0m
> specutils/io/default_loaders/tests/test_apogee.py [33ms[0m[33ms[0m[33ms[0m[32m [ 1%][0m
> specutils/io/default_loaders/tests/test_desi.py [32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m [ 4%][0m
> specutils/io/default_loaders/tests/test_jwst_reader.py [32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m [ 6%]
> [0m[33mx[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[32m [ 7%][0m
> specutils/io/default_loaders/tests/test_sdss_v.py [32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m [ 10%]
> [0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m [ 12%][0m
> specutils/manipulation/model_replace.py [32m.[0m[32m [ 13%][0m
> specutils/manipulation/resample.py [32m.[0m[32m.[0m[32m.[0m[32m [ 13%][0m
> specutils/tests/test_analysis.py [32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m [ 19%]
> [0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m [ 22%][0m
> specutils/tests/test_arithmetic.py [32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m [ 24%][0m
> specutils/tests/test_continuum.py [32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m [ 25%][0m
> specutils/tests/test_correlation.py [32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m [ 25%][0m
> specutils/tests/test_dc_common_loaders.py [33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[32m [ 28%][0m
> specutils/tests/test_fitting.py [32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m [ 32%][0m
> specutils/tests/test_io.py [32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m [ 32%][0m
> specutils/tests/test_loaders.py [32m.[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[32m.[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[32m.[0m[32m.[0m[32m.[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m [ 38%]
> [0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m [ 49%]
> [0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[32m.[0m[33ms[0m[32m [ 60%]
> [0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[32m [ 67%][0m
> specutils/tests/test_manipulation.py [32m.[0m[32m.[0m[32m.[0m[32m [ 67%][0m
> specutils/tests/test_model_replace.py [32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m [ 68%][0m
> specutils/tests/test_region_extract.py [32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m [ 71%][0m
> specutils/tests/test_regions.py [32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m [ 73%][0m
> specutils/tests/test_resample.py [32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[33mx[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m [ 76%][0m
> specutils/tests/test_slicing.py [32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m [ 77%][0m
> specutils/tests/test_smoothing.py [32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m [ 80%][0m
> specutils/tests/test_spectral_axis.py [33ms[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m [ 85%]
> [0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m [ 89%][0m
> specutils/tests/test_spectrum1d.py [32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[31mF[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[33ms[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[31m [ 93%][0m
> specutils/tests/test_spectrum1d_unit_pix2.py [32m.[0m[32m.[0m[31m [ 94%][0m
> specutils/tests/test_spectrum_collection.py [32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[31m [ 95%][0m
> specutils/tests/test_template_comparison.py [32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[31m [ 97%][0m
> specutils/tests/test_unc.py [32m.[0m[33mx[0m[32m.[0m[31m [ 97%][0m
> specutils/tests/test_utils.py [32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[31m [100%][0m
>
> =================================== FAILURES ===================================
> [31m[1m___________________________ test_wcs_transformations ___________________________[0m
>
> [0m[94mdef[39;49;00m [92mtest_wcs_transformations[39;49;00m():[90m[39;49;00m
> [90m# Test with a GWCS[39;49;00m[90m[39;49;00m
> spec = Spectrum1D(spectral_axis=np.arange([94m1[39;49;00m, [94m50[39;49;00m) * u.nm,[90m[39;49;00m
> flux=np.ones([94m49[39;49;00m) * u.Jy)[90m[39;49;00m
> [90m[39;49;00m
> > pix_axis = spec.wcs.world_to_pixel(np.arange([94m20[39;49;00m, [94m30[39;49;00m) * u.nm)[90m[39;49;00m
>
> [1m[31mspecutils/tests/test_spectrum1d.py[0m:321:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> [1m[31m/usr/lib/python3/dist-packages/gwcs/api.py[0m:325: in world_to_pixel
> [0mresult = [96mself[39;49;00m.invert(*world_objects, with_units=[94mTrue[39;49;00m)[90m[39;49;00m
> [1m[31m/usr/lib/python3/dist-packages/gwcs/wcs.py[0m:473: in invert
> [0margs = [96mself[39;49;00m.outside_footprint(args)[90m[39;49;00m
> [1m[31m/usr/lib/python3/dist-packages/gwcs/wcs.py[0m:501: in outside_footprint
> [0mworld_arrays = high_level_objects_to_values(*world_arrays, low_level_wcs=[96mself[39;49;00m)[90m[39;49;00m
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> low_level_wcs = <WCS(output_frame=SpectralFrame, input_frame=CoordinateFrame, forward_transform=Model: SpectralTabular1D
> N_inputs: 1
> N... 36.
> 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49.] nm
> method: linear
> fill_value: nan
> bounds_error: True)>
> world_objects = (<Quantity [20., 21., 22., 23., 24., 25., 26., 27., 28., 29.] nm>,)
> serialized_classes = {'spectral': (<class 'astropy.coordinates.spectral_coordinate.SpectralCoord'>, (), {'unit': Unit("nm")})}
> components = [('spectral', 0, <function SpectralFrame._world_axis_object_components.<locals>.<lambda> at 0x7fc05c331ee0>)]
>
> [0m[94mdef[39;49;00m [92mhigh_level_objects_to_values[39;49;00m(*world_objects, low_level_wcs):[90m[39;49;00m
> [90m [39;49;00m[33m"""[39;49;00m
> [33m Convert the input high level object to low level values.[39;49;00m
> [33m[39;49;00m
> [33m This function uses the information in ``wcs.world_axis_object_classes`` and[39;49;00m
> [33m ``wcs.world_axis_object_components`` to convert the high level objects[39;49;00m
> [33m (such as `~.SkyCoord`) to low level "values" which should be scalars or[39;49;00m
> [33m Numpy arrays.[39;49;00m
> [33m[39;49;00m
> [33m This is used in `.HighLevelWCSMixin.world_to_pixel`, but provided as a[39;49;00m
> [33m separate function for use in other places where needed.[39;49;00m
> [33m[39;49;00m
> [33m Parameters[39;49;00m
> [33m ----------[39;49;00m
> [33m *world_objects: object[39;49;00m
> [33m High level coordinate objects.[39;49;00m
> [33m[39;49;00m
> [33m low_level_wcs: `.BaseLowLevelWCS`[39;49;00m
> [33m The WCS object to use to interpret the coordinates.[39;49;00m
> [33m """[39;49;00m[90m[39;49;00m
> [90m# Cache the classes and components since this may be expensive[39;49;00m[90m[39;49;00m
> serialized_classes = low_level_wcs.world_axis_object_classes[90m[39;49;00m
> components = low_level_wcs.world_axis_object_components[90m[39;49;00m
> [90m[39;49;00m
> [90m# Deserialize world_axis_object_classes using the default order[39;49;00m[90m[39;49;00m
> classes = OrderedDict()[90m[39;49;00m
> [94mfor[39;49;00m key [95min[39;49;00m default_order(components):[90m[39;49;00m
> [94mif[39;49;00m low_level_wcs.serialized_classes:[90m[39;49;00m
> classes[key] = deserialize_class(serialized_classes[key], construct=[94mFalse[39;49;00m)[90m[39;49;00m
> [94melse[39;49;00m:[90m[39;49;00m
> classes[key] = serialized_classes[key][90m[39;49;00m
> [90m[39;49;00m
> [90m# Check that the number of classes matches the number of inputs[39;49;00m[90m[39;49;00m
> [94mif[39;49;00m [96mlen[39;49;00m(world_objects) != [96mlen[39;49;00m(classes):[90m[39;49;00m
> [94mraise[39;49;00m [96mValueError[39;49;00m([90m[39;49;00m
> [33mf[39;49;00m[33m"[39;49;00m[33mNumber of world inputs ([39;49;00m[33m{[39;49;00m[96mlen[39;49;00m(world_objects)[33m}[39;49;00m[33m) does not match expected[39;49;00m[33m"[39;49;00m[90m[39;49;00m
> [33mf[39;49;00m[33m"[39;49;00m[33m ([39;49;00m[33m{[39;49;00m[96mlen[39;49;00m(classes)[33m}[39;49;00m[33m)[39;49;00m[33m"[39;49;00m[90m[39;49;00m
> )[90m[39;49;00m
> [90m[39;49;00m
> [90m# Determine whether the classes are uniquely matched, that is we check[39;49;00m[90m[39;49;00m
> [90m# whether there is only one of each class.[39;49;00m[90m[39;49;00m
> world_by_key = {}[90m[39;49;00m
> unique_match = [94mTrue[39;49;00m[90m[39;49;00m
> [94mfor[39;49;00m w [95min[39;49;00m world_objects:[90m[39;49;00m
> matches = [][90m[39;49;00m
> [94mfor[39;49;00m key, (klass, *_) [95min[39;49;00m classes.items():[90m[39;49;00m
> [94mif[39;49;00m [96misinstance[39;49;00m(w, klass):[90m[39;49;00m
> matches.append(key)[90m[39;49;00m
> [94mif[39;49;00m [96mlen[39;49;00m(matches) == [94m1[39;49;00m:[90m[39;49;00m
> world_by_key[matches[[94m0[39;49;00m]] = w[90m[39;49;00m
> [94melse[39;49;00m:[90m[39;49;00m
> unique_match = [94mFalse[39;49;00m[90m[39;49;00m
> [94mbreak[39;49;00m[90m[39;49;00m
> [90m[39;49;00m
> [90m# If the match is not unique, the order of the classes needs to match,[39;49;00m[90m[39;49;00m
> [90m# whereas if all classes are unique, we can still intelligently match[39;49;00m[90m[39;49;00m
> [90m# them even if the order is wrong.[39;49;00m[90m[39;49;00m
> [90m[39;49;00m
> objects = {}[90m[39;49;00m
> [90m[39;49;00m
> [94mif[39;49;00m unique_match:[90m[39;49;00m
> [94mfor[39;49;00m key, (klass, args, kwargs, *rest) [95min[39;49;00m classes.items():[90m[39;49;00m
> [94mif[39;49;00m [96mlen[39;49;00m(rest) == [94m0[39;49;00m:[90m[39;49;00m
> klass_gen = klass[90m[39;49;00m
> [94melif[39;49;00m [96mlen[39;49;00m(rest) == [94m1[39;49;00m:[90m[39;49;00m
> klass_gen = rest[[94m0[39;49;00m][90m[39;49;00m
> [94melse[39;49;00m:[90m[39;49;00m
> [94mraise[39;49;00m [96mValueError[39;49;00m([90m[39;49;00m
> [33m"[39;49;00m[33mTuples in world_axis_object_classes should have length 3 or 4[39;49;00m[33m"[39;49;00m[90m[39;49;00m
> )[90m[39;49;00m
> [90m[39;49;00m
> [90m# FIXME: For now SkyCoord won't auto-convert upon initialization[39;49;00m[90m[39;49;00m
> [90m# https://github.com/astropy/astropy/issues/7689[39;49;00m[90m[39;49;00m
> [94mfrom[39;49;00m [04m[96mastropy[39;49;00m[04m[96m.[39;49;00m[04m[96mcoordinates[39;49;00m [94mimport[39;49;00m SkyCoord[90m[39;49;00m
> [90m[39;49;00m
> [94mif[39;49;00m [96misinstance[39;49;00m(world_by_key[key], SkyCoord):[90m[39;49;00m
> [94mif[39;49;00m [33m"[39;49;00m[33mframe[39;49;00m[33m"[39;49;00m [95min[39;49;00m kwargs:[90m[39;49;00m
> objects[key] = world_by_key[key].transform_to(kwargs[[33m"[39;49;00m[33mframe[39;49;00m[33m"[39;49;00m])[90m[39;49;00m
> [94melse[39;49;00m:[90m[39;49;00m
> objects[key] = world_by_key[key][90m[39;49;00m
> [94melse[39;49;00m:[90m[39;49;00m
> objects[key] = klass_gen(world_by_key[key], *args, **kwargs)[90m[39;49;00m
> [90m[39;49;00m
> [94melse[39;49;00m:[90m[39;49;00m
> [94mfor[39;49;00m ikey, key [95min[39;49;00m [96menumerate[39;49;00m(classes):[90m[39;49;00m
> klass, args, kwargs, *rest = classes[key][90m[39;49;00m
> [90m[39;49;00m
> [94mif[39;49;00m [96mlen[39;49;00m(rest) == [94m0[39;49;00m:[90m[39;49;00m
> klass_gen = klass[90m[39;49;00m
> [94melif[39;49;00m [96mlen[39;49;00m(rest) == [94m1[39;49;00m:[90m[39;49;00m
> klass_gen = rest[[94m0[39;49;00m][90m[39;49;00m
> [94melse[39;49;00m:[90m[39;49;00m
> [94mraise[39;49;00m [96mValueError[39;49;00m([90m[39;49;00m
> [33m"[39;49;00m[33mTuples in world_axis_object_classes should have length 3 or 4[39;49;00m[33m"[39;49;00m[90m[39;49;00m
> )[90m[39;49;00m
> [90m[39;49;00m
> w = world_objects[ikey][90m[39;49;00m
> [94mif[39;49;00m [95mnot[39;49;00m [96misinstance[39;49;00m(w, klass):[90m[39;49;00m
> > [94mraise[39;49;00m [96mValueError[39;49;00m([90m[39;49;00m
> [33m"[39;49;00m[33mExpected the following order of world arguments:[39;49;00m[33m"[39;49;00m[90m[39;49;00m
> [33mf[39;49;00m[33m"[39;49;00m[33m [39;49;00m[33m{[39;49;00m[33m'[39;49;00m[33m, [39;49;00m[33m'[39;49;00m.join([k.[91m__name__[39;49;00m[90m [39;49;00m[94mfor[39;49;00m[90m [39;49;00m(k,[90m [39;49;00m*_)[90m [39;49;00m[95min[39;49;00m[90m [39;49;00mclasses.values()])[33m}[39;49;00m[33m"[39;49;00m[90m[39;49;00m
> )[90m[39;49;00m
> [1m[31mE ValueError: Expected the following order of world arguments: SpectralCoord[0m
>
> [1m[31m/usr/lib/python3/dist-packages/astropy/wcs/wcsapi/high_level_api.py[0m:233: ValueError
> [36m[1m=========================== short test summary info ============================[0m
> [31mFAILED[0m specutils/tests/test_spectrum1d.py::[1mtest_wcs_transformations[0m - ValueError: Expected the following order of world arguments: SpectralCoord
> [31m============ [31m[1m1 failed[0m, [32m544 passed[0m, [33m123 skipped[0m, [33m9 xfailed[0m[31m in 33.12s[0m[31m ============[0m
> E: pybuild pybuild:389: test: plugin distutils failed with: exit code=1: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build; python3.13 -m pytest --remote-data=none --doctest-rst
> I: pybuild base:311: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build; python3.12 -m pytest --remote-data=none --doctest-rst
> [1m============================= test session starts ==============================[0m
> platform linux -- Python 3.12.8, pytest-8.3.4, pluggy-1.5.0
> rootdir: /<<PKGBUILDDIR>>
> configfile: setup.cfg
> plugins: doctestplus-1.3.0, mock-3.14.0, arraydiff-0.6.1, astropy-0.11.0, astropy-header-0.2.2, remotedata-0.4.1, cov-5.0.0, typeguard-4.4.1, asdf-4.0.0, hypothesis-6.122.1, filter-subpackage-0.2.0
> collected 677 items
>
> specutils/io/asdf/tests/test_spectra.py [33mx[0m[33mx[0m[33mx[0m[33mx[0m[33mx[0m[33mx[0m[32m.[0m[32m [ 1%][0m
> specutils/io/default_loaders/tests/test_apogee.py [33ms[0m[33ms[0m[33ms[0m[32m [ 1%][0m
> specutils/io/default_loaders/tests/test_desi.py [32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m [ 4%][0m
> specutils/io/default_loaders/tests/test_jwst_reader.py [32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m [ 6%]
> [0m[33mx[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[32m [ 7%][0m
> specutils/io/default_loaders/tests/test_sdss_v.py [32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m [ 10%]
> [0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m [ 12%][0m
> specutils/manipulation/model_replace.py [32m.[0m[32m [ 13%][0m
> specutils/manipulation/resample.py [32m.[0m[32m.[0m[32m.[0m[32m [ 13%][0m
> specutils/tests/test_analysis.py [32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m [ 19%]
> [0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m [ 22%][0m
> specutils/tests/test_arithmetic.py [32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m [ 24%][0m
> specutils/tests/test_continuum.py [32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m [ 25%][0m
> specutils/tests/test_correlation.py [32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m [ 25%][0m
> specutils/tests/test_dc_common_loaders.py [33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[32m [ 28%][0m
> specutils/tests/test_fitting.py [32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m [ 32%][0m
> specutils/tests/test_io.py [32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m [ 32%][0m
> specutils/tests/test_loaders.py [32m.[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[32m.[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[32m.[0m[32m.[0m[32m.[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m [ 38%]
> [0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m [ 49%]
> [0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[32m.[0m[33ms[0m[32m [ 60%]
> [0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[33ms[0m[32m [ 67%][0m
> specutils/tests/test_manipulation.py [32m.[0m[32m.[0m[32m.[0m[32m [ 67%][0m
> specutils/tests/test_model_replace.py [32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m [ 68%][0m
> specutils/tests/test_region_extract.py [32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m [ 71%][0m
> specutils/tests/test_regions.py [32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m [ 73%][0m
> specutils/tests/test_resample.py [32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[33mx[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m [ 76%][0m
> specutils/tests/test_slicing.py [32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m [ 77%][0m
> specutils/tests/test_smoothing.py [32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m [ 80%][0m
> specutils/tests/test_spectral_axis.py [33ms[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m [ 85%]
> [0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m [ 89%][0m
> specutils/tests/test_spectrum1d.py [32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[31mF[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[33ms[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[31m [ 93%][0m
> specutils/tests/test_spectrum1d_unit_pix2.py [32m.[0m[32m.[0m[31m [ 94%][0m
> specutils/tests/test_spectrum_collection.py [32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[31m [ 95%][0m
> specutils/tests/test_template_comparison.py [32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[31m [ 97%][0m
> specutils/tests/test_unc.py [32m.[0m[33mx[0m[32m.[0m[31m [ 97%][0m
> specutils/tests/test_utils.py [32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[31m [100%][0m
>
> =================================== FAILURES ===================================
> [31m[1m___________________________ test_wcs_transformations ___________________________[0m
>
> [0m[94mdef[39;49;00m [92mtest_wcs_transformations[39;49;00m():[90m[39;49;00m
> [90m# Test with a GWCS[39;49;00m[90m[39;49;00m
> spec = Spectrum1D(spectral_axis=np.arange([94m1[39;49;00m, [94m50[39;49;00m) * u.nm,[90m[39;49;00m
> flux=np.ones([94m49[39;49;00m) * u.Jy)[90m[39;49;00m
> [90m[39;49;00m
> > pix_axis = spec.wcs.world_to_pixel(np.arange([94m20[39;49;00m, [94m30[39;49;00m) * u.nm)[90m[39;49;00m
>
> [1m[31mspecutils/tests/test_spectrum1d.py[0m:321:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> [1m[31m/usr/lib/python3/dist-packages/gwcs/api.py[0m:325: in world_to_pixel
> [0mresult = [96mself[39;49;00m.invert(*world_objects, with_units=[94mTrue[39;49;00m)[90m[39;49;00m
> [1m[31m/usr/lib/python3/dist-packages/gwcs/wcs.py[0m:473: in invert
> [0margs = [96mself[39;49;00m.outside_footprint(args)[90m[39;49;00m
> [1m[31m/usr/lib/python3/dist-packages/gwcs/wcs.py[0m:501: in outside_footprint
> [0mworld_arrays = high_level_objects_to_values(*world_arrays, low_level_wcs=[96mself[39;49;00m)[90m[39;49;00m
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> low_level_wcs = <WCS(output_frame=SpectralFrame, input_frame=CoordinateFrame, forward_transform=Model: SpectralTabular1D
> N_inputs: 1
> N... 36.
> 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49.] nm
> method: linear
> fill_value: nan
> bounds_error: True)>
> world_objects = (<Quantity [20., 21., 22., 23., 24., 25., 26., 27., 28., 29.] nm>,)
> serialized_classes = {'spectral': (<class 'astropy.coordinates.spectral_coordinate.SpectralCoord'>, (), {'unit': Unit("nm")})}
> components = [('spectral', 0, <function SpectralFrame._world_axis_object_components.<locals>.<lambda> at 0x7f976ef0f7e0>)]
>
> [0m[94mdef[39;49;00m [92mhigh_level_objects_to_values[39;49;00m(*world_objects, low_level_wcs):[90m[39;49;00m
> [90m [39;49;00m[33m"""[39;49;00m
> [33m Convert the input high level object to low level values.[39;49;00m
> [33m[39;49;00m
> [33m This function uses the information in ``wcs.world_axis_object_classes`` and[39;49;00m
> [33m ``wcs.world_axis_object_components`` to convert the high level objects[39;49;00m
> [33m (such as `~.SkyCoord`) to low level "values" which should be scalars or[39;49;00m
> [33m Numpy arrays.[39;49;00m
> [33m[39;49;00m
> [33m This is used in `.HighLevelWCSMixin.world_to_pixel`, but provided as a[39;49;00m
> [33m separate function for use in other places where needed.[39;49;00m
> [33m[39;49;00m
> [33m Parameters[39;49;00m
> [33m ----------[39;49;00m
> [33m *world_objects: object[39;49;00m
> [33m High level coordinate objects.[39;49;00m
> [33m[39;49;00m
> [33m low_level_wcs: `.BaseLowLevelWCS`[39;49;00m
> [33m The WCS object to use to interpret the coordinates.[39;49;00m
> [33m """[39;49;00m[90m[39;49;00m
> [90m# Cache the classes and components since this may be expensive[39;49;00m[90m[39;49;00m
> serialized_classes = low_level_wcs.world_axis_object_classes[90m[39;49;00m
> components = low_level_wcs.world_axis_object_components[90m[39;49;00m
> [90m[39;49;00m
> [90m# Deserialize world_axis_object_classes using the default order[39;49;00m[90m[39;49;00m
> classes = OrderedDict()[90m[39;49;00m
> [94mfor[39;49;00m key [95min[39;49;00m default_order(components):[90m[39;49;00m
> [94mif[39;49;00m low_level_wcs.serialized_classes:[90m[39;49;00m
> classes[key] = deserialize_class(serialized_classes[key], construct=[94mFalse[39;49;00m)[90m[39;49;00m
> [94melse[39;49;00m:[90m[39;49;00m
> classes[key] = serialized_classes[key][90m[39;49;00m
> [90m[39;49;00m
> [90m# Check that the number of classes matches the number of inputs[39;49;00m[90m[39;49;00m
> [94mif[39;49;00m [96mlen[39;49;00m(world_objects) != [96mlen[39;49;00m(classes):[90m[39;49;00m
> [94mraise[39;49;00m [96mValueError[39;49;00m([90m[39;49;00m
> [33mf[39;49;00m[33m"[39;49;00m[33mNumber of world inputs ([39;49;00m[33m{[39;49;00m[96mlen[39;49;00m(world_objects)[33m}[39;49;00m[33m) does not match expected[39;49;00m[33m"[39;49;00m[90m[39;49;00m
> [33mf[39;49;00m[33m"[39;49;00m[33m ([39;49;00m[33m{[39;49;00m[96mlen[39;49;00m(classes)[33m}[39;49;00m[33m)[39;49;00m[33m"[39;49;00m[90m[39;49;00m
> )[90m[39;49;00m
> [90m[39;49;00m
> [90m# Determine whether the classes are uniquely matched, that is we check[39;49;00m[90m[39;49;00m
> [90m# whether there is only one of each class.[39;49;00m[90m[39;49;00m
> world_by_key = {}[90m[39;49;00m
> unique_match = [94mTrue[39;49;00m[90m[39;49;00m
> [94mfor[39;49;00m w [95min[39;49;00m world_objects:[90m[39;49;00m
> matches = [][90m[39;49;00m
> [94mfor[39;49;00m key, (klass, *_) [95min[39;49;00m classes.items():[90m[39;49;00m
> [94mif[39;49;00m [96misinstance[39;49;00m(w, klass):[90m[39;49;00m
> matches.append(key)[90m[39;49;00m
> [94mif[39;49;00m [96mlen[39;49;00m(matches) == [94m1[39;49;00m:[90m[39;49;00m
> world_by_key[matches[[94m0[39;49;00m]] = w[90m[39;49;00m
> [94melse[39;49;00m:[90m[39;49;00m
> unique_match = [94mFalse[39;49;00m[90m[39;49;00m
> [94mbreak[39;49;00m[90m[39;49;00m
> [90m[39;49;00m
> [90m# If the match is not unique, the order of the classes needs to match,[39;49;00m[90m[39;49;00m
> [90m# whereas if all classes are unique, we can still intelligently match[39;49;00m[90m[39;49;00m
> [90m# them even if the order is wrong.[39;49;00m[90m[39;49;00m
> [90m[39;49;00m
> objects = {}[90m[39;49;00m
> [90m[39;49;00m
> [94mif[39;49;00m unique_match:[90m[39;49;00m
> [94mfor[39;49;00m key, (klass, args, kwargs, *rest) [95min[39;49;00m classes.items():[90m[39;49;00m
> [94mif[39;49;00m [96mlen[39;49;00m(rest) == [94m0[39;49;00m:[90m[39;49;00m
> klass_gen = klass[90m[39;49;00m
> [94melif[39;49;00m [96mlen[39;49;00m(rest) == [94m1[39;49;00m:[90m[39;49;00m
> klass_gen = rest[[94m0[39;49;00m][90m[39;49;00m
> [94melse[39;49;00m:[90m[39;49;00m
> [94mraise[39;49;00m [96mValueError[39;49;00m([90m[39;49;00m
> [33m"[39;49;00m[33mTuples in world_axis_object_classes should have length 3 or 4[39;49;00m[33m"[39;49;00m[90m[39;49;00m
> )[90m[39;49;00m
> [90m[39;49;00m
> [90m# FIXME: For now SkyCoord won't auto-convert upon initialization[39;49;00m[90m[39;49;00m
> [90m# https://github.com/astropy/astropy/issues/7689[39;49;00m[90m[39;49;00m
> [94mfrom[39;49;00m [04m[96mastropy[39;49;00m[04m[96m.[39;49;00m[04m[96mcoordinates[39;49;00m [94mimport[39;49;00m SkyCoord[90m[39;49;00m
> [90m[39;49;00m
> [94mif[39;49;00m [96misinstance[39;49;00m(world_by_key[key], SkyCoord):[90m[39;49;00m
> [94mif[39;49;00m [33m"[39;49;00m[33mframe[39;49;00m[33m"[39;49;00m [95min[39;49;00m kwargs:[90m[39;49;00m
> objects[key] = world_by_key[key].transform_to(kwargs[[33m"[39;49;00m[33mframe[39;49;00m[33m"[39;49;00m])[90m[39;49;00m
> [94melse[39;49;00m:[90m[39;49;00m
> objects[key] = world_by_key[key][90m[39;49;00m
> [94melse[39;49;00m:[90m[39;49;00m
> objects[key] = klass_gen(world_by_key[key], *args, **kwargs)[90m[39;49;00m
> [90m[39;49;00m
> [94melse[39;49;00m:[90m[39;49;00m
> [94mfor[39;49;00m ikey, key [95min[39;49;00m [96menumerate[39;49;00m(classes):[90m[39;49;00m
> klass, args, kwargs, *rest = classes[key][90m[39;49;00m
> [90m[39;49;00m
> [94mif[39;49;00m [96mlen[39;49;00m(rest) == [94m0[39;49;00m:[90m[39;49;00m
> klass_gen = klass[90m[39;49;00m
> [94melif[39;49;00m [96mlen[39;49;00m(rest) == [94m1[39;49;00m:[90m[39;49;00m
> klass_gen = rest[[94m0[39;49;00m][90m[39;49;00m
> [94melse[39;49;00m:[90m[39;49;00m
> [94mraise[39;49;00m [96mValueError[39;49;00m([90m[39;49;00m
> [33m"[39;49;00m[33mTuples in world_axis_object_classes should have length 3 or 4[39;49;00m[33m"[39;49;00m[90m[39;49;00m
> )[90m[39;49;00m
> [90m[39;49;00m
> w = world_objects[ikey][90m[39;49;00m
> [94mif[39;49;00m [95mnot[39;49;00m [96misinstance[39;49;00m(w, klass):[90m[39;49;00m
> > [94mraise[39;49;00m [96mValueError[39;49;00m([90m[39;49;00m
> [33m"[39;49;00m[33mExpected the following order of world arguments:[39;49;00m[33m"[39;49;00m[90m[39;49;00m
> [33mf[39;49;00m[33m"[39;49;00m[33m [39;49;00m[33m{[39;49;00m[33m'[39;49;00m[33m, [39;49;00m[33m'[39;49;00m.join([k.[91m__name__[39;49;00m[90m [39;49;00m[94mfor[39;49;00m[90m [39;49;00m(k,[90m [39;49;00m*_)[90m [39;49;00m[95min[39;49;00m[90m [39;49;00mclasses.values()])[33m}[39;49;00m[33m"[39;49;00m[90m[39;49;00m
> )[90m[39;49;00m
> [1m[31mE ValueError: Expected the following order of world arguments: SpectralCoord[0m
>
> [1m[31m/usr/lib/python3/dist-packages/astropy/wcs/wcsapi/high_level_api.py[0m:233: ValueError
> [36m[1m=========================== short test summary info ============================[0m
> [31mFAILED[0m specutils/tests/test_spectrum1d.py::[1mtest_wcs_transformations[0m - ValueError: Expected the following order of world arguments: SpectralCoord
> [31m============ [31m[1m1 failed[0m, [32m544 passed[0m, [33m123 skipped[0m, [33m9 xfailed[0m[31m in 35.46s[0m[31m ============[0m
> E: pybuild pybuild:389: test: plugin distutils failed with: exit code=1: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build; python3.12 -m pytest --remote-data=none --doctest-rst
> dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.13 3.12" returned exit code 13
The full build log is available from:
http://qa-logs.debian.net/2024/12/22/specutils_1.19.0-2_unstable.log
All bugs filed during this archive rebuild are listed at:
https://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=ftbfs-20241222;users=lucas@debian.org
or:
https://udd.debian.org/bugs/?release=na&merged=ign&fnewerval=7&flastmodval=7&fusertag=only&fusertagtag=ftbfs-20241222&fusertaguser=lucas@debian.org&allbugs=1&cseverity=1&ctags=1&caffected=1#results
A list of current common problems and possible solutions is available at
http://wiki.debian.org/qa.debian.org/FTBFS . You're welcome to contribute!
If you reassign this bug to another package, please mark it as 'affects'-ing
this package. See https://www.debian.org/Bugs/server-control#affects
If you fail to reproduce this, please provide a build log and diff it with mine
so that we can identify if something relevant changed in the meantime.
More information about the Debian-astro-maintainers
mailing list