diff --git a/.github/workflows/ci_cron.yml b/.github/workflows/ci_cron.yml index f57c373739..2339ee6942 100644 --- a/.github/workflows/ci_cron.yml +++ b/.github/workflows/ci_cron.yml @@ -15,8 +15,8 @@ jobs: strategy: matrix: os: [ubuntu-latest] - python: ['3.11', '3.12'] - toxenv: [test-alldeps, test-numpydev, test-linetoolsdev, test-gingadev, test-astropydev] + python: ['3.11', '3.12', '3.13'] + toxenv: [test, test-alldeps-cov, test-numpydev, test-linetoolsdev, test-gingadev, test-astropydev] steps: - name: Check out repository uses: actions/checkout@v3 diff --git a/.github/workflows/ci_tests.yml b/.github/workflows/ci_tests.yml index a5f541cc70..6559028df7 100644 --- a/.github/workflows/ci_tests.yml +++ b/.github/workflows/ci_tests.yml @@ -17,7 +17,7 @@ jobs: strategy: matrix: os: [ubuntu-latest] - python: ['3.11', '3.12'] + python: ['3.11', '3.12', '3.13'] toxenv: [test, test-alldeps-cov, test-numpydev, test-linetoolsdev, test-gingadev, test-astropydev] steps: - name: Check out repository @@ -48,7 +48,7 @@ jobs: fail-fast: false matrix: os: [windows-latest, macos-latest] - python: ['3.11', '3.12'] + python: ['3.11', '3.12', '3.13'] toxenv: [test-alldeps] steps: - name: Check out repository diff --git a/deprecated/qa.py b/deprecated/qa.py index 3eb94ff317..67992554ae 100644 --- a/deprecated/qa.py +++ b/deprecated/qa.py @@ -213,3 +213,23 @@ def match_qa(arc_spec, tcent, line_list, IDs, scores, outfile = None, title=None plt.close() return + + +def gen_timestamp(): + """ Generate a simple time stamp including the current user + + Returns + ------- + timestamp : str + user_datetime + """ + tstamp = datetime.datetime.today().strftime('%Y-%m-%d-T%Hh%Mm%Ss') + try: + import getpass + user = getpass.getuser() + except ModuleNotFoundError: + # there appears to be a bug in getpass in windows systems where the pwd module doesn't load + user = os.getlogin() + # Return + return '{:s}_{:s}'.format(user, tstamp) + diff --git a/doc/help/pypeit_chk_for_calibs.rst b/doc/help/pypeit_chk_for_calibs.rst index 653b5d1e81..745a4b5d90 100644 --- a/doc/help/pypeit_chk_for_calibs.rst +++ b/doc/help/pypeit_chk_for_calibs.rst @@ -12,7 +12,7 @@ options: -h, --help show this help message and exit - -s SPECTROGRAPH, --spectrograph SPECTROGRAPH + -s, --spectrograph SPECTROGRAPH A valid spectrograph identifier: aat_uhrf, bok_bc, gemini_flamingos1, gemini_flamingos2, gemini_gmos_north_e2v, gemini_gmos_north_ham, @@ -34,7 +34,7 @@ soar_goodman_red, tng_dolores, vlt_fors2, vlt_sinfoni, vlt_xshooter_nir, vlt_xshooter_uvb, vlt_xshooter_vis, wht_isis_blue, wht_isis_red (default: None) - -e EXTENSION, --extension EXTENSION + -e, --extension EXTENSION File extension to use. Must include the period (e.g., ".fits") and it must be one of the allowed extensions for this spectrograph. If None, root directory will be diff --git a/doc/help/pypeit_clean_cache.rst b/doc/help/pypeit_clean_cache.rst index 7e07b2134d..af59b1044a 100644 --- a/doc/help/pypeit_clean_cache.rst +++ b/doc/help/pypeit_clean_cache.rst @@ -8,13 +8,13 @@ options: -h, --help show this help message and exit - -p PATTERN [PATTERN ...], --pattern PATTERN [PATTERN ...] + -p, --pattern PATTERN [PATTERN ...] Remove any files matching the provided pattern. If combined with --version, this selects only files downloaded from the identified GitHub versoin. If the version is not specified, any file matching the provided pattern(s) are removed. (default: None) - -v VERSION [VERSION ...], --version VERSION [VERSION ...] + -v, --version VERSION [VERSION ...] Remove files associated one or more provided tags, branches, or commit references on GitHub. These must be an exact match to the relevant GitHub reference. If diff --git a/doc/help/pypeit_coadd_1dspec.rst b/doc/help/pypeit_coadd_1dspec.rst index d363703531..de925ee79b 100644 --- a/doc/help/pypeit_coadd_1dspec.rst +++ b/doc/help/pypeit_coadd_1dspec.rst @@ -107,7 +107,7 @@ --show show QA during coadding process --par_outfile PAR_OUTFILE Output to save the parameters - -v VERBOSITY, --verbosity VERBOSITY + -v, --verbosity VERBOSITY Verbosity level between 0 [none] and 2 [all]. Default: 1. Level 2 writes a log with filename coadd_1dspec_YYYYMMDD-HHMM.log diff --git a/doc/help/pypeit_coadd_2dspec.rst b/doc/help/pypeit_coadd_2dspec.rst index d5d0aae36c..91c8a3b4ee 100644 --- a/doc/help/pypeit_coadd_2dspec.rst +++ b/doc/help/pypeit_coadd_2dspec.rst @@ -21,7 +21,7 @@ --basename BASENAME Basename of files to save the parameters, spec1d, and spec2d (default: None) --debug show debug plots? (default: False) - -v VERBOSITY, --verbosity VERBOSITY + -v, --verbosity VERBOSITY Verbosity level between 0 [none] and 2 [all]. Default: 1. Level 2 writes a log with filename coadd_2dspec_YYYYMMDD-HHMM.log (default: 1) diff --git a/doc/help/pypeit_coadd_datacube.rst b/doc/help/pypeit_coadd_datacube.rst index 8443926bdf..c5d29fed99 100644 --- a/doc/help/pypeit_coadd_datacube.rst +++ b/doc/help/pypeit_coadd_datacube.rst @@ -13,7 +13,7 @@ --det DET Detector (default: 1) -o, --overwrite Overwrite any existing files/directories (default: False) - -v VERBOSITY, --verbosity VERBOSITY + -v, --verbosity VERBOSITY Verbosity level between 0 [none] and 2 [all]. Default: 1. Level 2 writes a log with filename coadd_datacube_YYYYMMDD-HHMM.log (default: 1) diff --git a/doc/help/pypeit_collate_1d.rst b/doc/help/pypeit_collate_1d.rst index 1054c1ee55..ca4ab6036e 100644 --- a/doc/help/pypeit_collate_1d.rst +++ b/doc/help/pypeit_collate_1d.rst @@ -94,7 +94,7 @@ to crash or lead to erroneous results. I.e., you really need to know what you are doing if you set this to False! - -v VERBOSITY, --verbosity VERBOSITY + -v, --verbosity VERBOSITY Verbosity level between 0 [none] and 2 [all]. Default: 1. Level 2 writes a log with filename collate_1d_YYYYMMDD-HHMM.log diff --git a/doc/help/pypeit_extract_datacube.rst b/doc/help/pypeit_extract_datacube.rst index f4b16eab69..dd395e3ed3 100644 --- a/doc/help/pypeit_extract_datacube.rst +++ b/doc/help/pypeit_extract_datacube.rst @@ -13,16 +13,16 @@ options: -h, --help show this help message and exit - -e EXT_FILE, --ext_file EXT_FILE + -e, --ext_file EXT_FILE Configuration file with extraction parameters (default: None) - -s SAVE, --save SAVE Output spec1d filename (default: None) + -s, --save SAVE Output spec1d filename (default: None) -o, --overwrite Overwrite any existing files/directories (default: False) - -b BOXCAR_RADIUS, --boxcar_radius BOXCAR_RADIUS + -b, --boxcar_radius BOXCAR_RADIUS Radius of the circular boxcar (in arcseconds) to use for the extraction. (default: None) - -v VERBOSITY, --verbosity VERBOSITY + -v, --verbosity VERBOSITY Verbosity level between 0 [none] and 2 [all]. Default: 1. Level 2 writes a log with filename extract_datacube_YYYYMMDD-HHMM.log (default: 1) diff --git a/doc/help/pypeit_flux_calib.rst b/doc/help/pypeit_flux_calib.rst index 162dab294c..8af82dd6e4 100644 --- a/doc/help/pypeit_flux_calib.rst +++ b/doc/help/pypeit_flux_calib.rst @@ -50,7 +50,7 @@ options: -h, --help show this help message and exit --par_outfile Output to save the parameters - -v VERBOSITY, --verbosity VERBOSITY + -v, --verbosity VERBOSITY Verbosity level between 0 [none] and 2 [all]. Default: 1. Level 2 writes a log with filename flux_calib_YYYYMMDD-HHMM.log diff --git a/doc/help/pypeit_identify.rst b/doc/help/pypeit_identify.rst index df7667c261..91c1347213 100644 --- a/doc/help/pypeit_identify.rst +++ b/doc/help/pypeit_identify.rst @@ -41,7 +41,7 @@ --force_save Save the solutions, despite the RMS (default: False) --rescale_resid Rescale the residual plot to include all points? (default: False) - -v VERBOSITY, --verbosity VERBOSITY + -v, --verbosity VERBOSITY Verbosity level between 0 [none] and 2 [all]. Default: 1. Level 2 writes a log with filename identify_YYYYMMDD- HHMM.log (default: 1) diff --git a/doc/help/pypeit_obslog.rst b/doc/help/pypeit_obslog.rst index 5b399fcee0..f473def8c7 100644 --- a/doc/help/pypeit_obslog.rst +++ b/doc/help/pypeit_obslog.rst @@ -34,7 +34,7 @@ options: -h, --help show this help message and exit - -r ROOT, --root ROOT Root to search for data files. You can provide the top- + -r, --root ROOT Root to search for data files. You can provide the top- level directory (e.g., /data/Kast) or the search string up through the wildcard (.e.g, /data/Kast/b). Use the --extension option to set the types of files to search @@ -44,7 +44,7 @@ associated header cards. Metadata keys with header cards that are None have no simple mapping between keyword and header card. (default: False) - -c COLUMNS, --columns COLUMNS + -c, --columns COLUMNS A comma-separated list of columns to include in the output table. Each column must be a valid pypeit metadata keyword specific to this spectrograph (run @@ -57,7 +57,7 @@ (default: pypeit) -b, --bad_frames Clean the output of bad frames that cannot be reduced by pypeit. (default: False) - -t BAD_TYPES, --bad_types BAD_TYPES + -t, --bad_types BAD_TYPES Dictates how frames that could not be given a valid type should be treated. Options are: "keep" to include them in the output, "rm" to remove them from the output, @@ -72,20 +72,20 @@ IPython session that you can use to interact with the table (an Astropy.Table called fitstbl) directly. (default: False) - -s SORT, --sort SORT Metadata keyword (pypeit-specific) to use to sort the + -s, --sort SORT Metadata keyword (pypeit-specific) to use to sort the output table. (default: mjd) - -e EXTENSION, --extension EXTENSION + -e, --extension EXTENSION File extension to use. Must include the period (e.g., ".fits") and it must be one of the allowed extensions for this spectrograph. If None, root directory will be searched for all files with any of the allowed extensions. (default: None) - -d OUTPUT_PATH, --output_path OUTPUT_PATH + -d, --output_path OUTPUT_PATH Path to top-level output directory. (default: current working directory) -o, --overwrite Overwrite any existing files/directories (default: False) - -f FILE, --file FILE Name for the ascii output file. Any leading directory + -f, --file FILE Name for the ascii output file. Any leading directory path is stripped; use -d to set the output directory. If None, the table is just printed to stdout. If set to 'default', the file is set to [spectrograph].obslog. diff --git a/doc/help/pypeit_sensfunc.rst b/doc/help/pypeit_sensfunc.rst index 26ac6639bb..9a7be117f2 100644 --- a/doc/help/pypeit_sensfunc.rst +++ b/doc/help/pypeit_sensfunc.rst @@ -55,7 +55,7 @@ [sensfunc] multi_spec_det = 3,7 - -o OUTFILE, --outfile OUTFILE + -o, --outfile OUTFILE Output file for sensitivity function. If not specified, the sensitivity function will be written out to a standard filename in the current working directory, i.e. @@ -69,7 +69,7 @@ same extensions for QA and throughput will be used if outfile is provided but with .fits trimmed off if it is in the filename. - -s SENS_FILE, --sens_file SENS_FILE + -s, --sens_file SENS_FILE Configuration file with sensitivity function parameters -f, --use_flat Use the extracted spectrum of the flatfield calibration to estimate the blaze function when generating the @@ -89,7 +89,7 @@ --par_outfile PAR_OUTFILE Name of output file to save the parameters used by the fit - -v VERBOSITY, --verbosity VERBOSITY + -v, --verbosity VERBOSITY Verbosity level between 0 [none] and 2 [all]. Default: 1. Level 2 writes a log with filename sensfunc_YYYYMMDD- HHMM.log diff --git a/doc/help/pypeit_setup.rst b/doc/help/pypeit_setup.rst index 01e0c078dd..180bcf4142 100644 --- a/doc/help/pypeit_setup.rst +++ b/doc/help/pypeit_setup.rst @@ -10,7 +10,7 @@ options: -h, --help show this help message and exit - -s SPECTROGRAPH, --spectrograph SPECTROGRAPH + -s, --spectrograph SPECTROGRAPH A valid spectrograph identifier: aat_uhrf, bok_bc, gemini_flamingos1, gemini_flamingos2, gemini_gmos_north_e2v, gemini_gmos_north_ham, @@ -32,24 +32,24 @@ soar_goodman_red, tng_dolores, vlt_fors2, vlt_sinfoni, vlt_xshooter_nir, vlt_xshooter_uvb, vlt_xshooter_vis, wht_isis_blue, wht_isis_red (default: None) - -r ROOT [ROOT ...], --root ROOT [ROOT ...] + -r, --root ROOT [ROOT ...] Root to search for data files. You can provide the top- level directory (e.g., /data/Kast) or the search string up through the wildcard (.e.g, /data/Kast/b). Use the --extension option to set the types of files to search for. (default: current working directory) - -e EXTENSION, --extension EXTENSION + -e, --extension EXTENSION File extension to use. Must include the period (e.g., ".fits") and it must be one of the allowed extensions for this spectrograph. If None, root directory will be searched for all files with any of the allowed extensions. (default: None) - -d OUTPUT_PATH, --output_path OUTPUT_PATH + -d, --output_path OUTPUT_PATH Path to top-level output directory. (default: current working directory) -o, --overwrite Overwrite any existing files/directories (default: False) - -c CFG_SPLIT, --cfg_split CFG_SPLIT + -c, --cfg_split CFG_SPLIT Generate the PypeIt files and folders by input configuration. To write all unique configurations identifed, use 'all', otherwise provide the list of @@ -62,7 +62,7 @@ -m, --manual_extraction Include the manual extraction column for the user to edit (default: False) - -v VERBOSITY, --verbosity VERBOSITY + -v, --verbosity VERBOSITY Verbosity level between 0 [none] and 2 [all]. Default: 1. Level 2 writes a log with filename setup_YYYYMMDD- HHMM.log (default: 1) diff --git a/doc/help/pypeit_setup_coadd2d.rst b/doc/help/pypeit_setup_coadd2d.rst index 54d9f23f6a..185fbbdb66 100644 --- a/doc/help/pypeit_setup_coadd2d.rst +++ b/doc/help/pypeit_setup_coadd2d.rst @@ -1,10 +1,9 @@ .. code-block:: console $ pypeit_setup_coadd2d -h - usage: pypeit_setup_coadd2d [-h] - (-f PYPEIT_FILE | -d SCIENCE_DIR [SCIENCE_DIR ...]) - [--keep_par] [--obj OBJ [OBJ ...]] - [--det DET [DET ...]] + usage: pypeit_setup_coadd2d [-h] (-f PYPEIT_FILE | + -d SCIENCE_DIR [SCIENCE_DIR ...]) [--keep_par] + [--obj OBJ [OBJ ...]] [--det DET [DET ...]] [--only_slits ONLY_SLITS [ONLY_SLITS ...]] [--exclude_slits EXCLUDE_SLITS [EXCLUDE_SLITS ...]] [--spat_toler SPAT_TOLER] [--offsets OFFSETS] @@ -16,9 +15,9 @@ options: -h, --help show this help message and exit - -f PYPEIT_FILE, --pypeit_file PYPEIT_FILE + -f, --pypeit_file PYPEIT_FILE PypeIt reduction file (default: None) - -d SCIENCE_DIR [SCIENCE_DIR ...], --science_dir SCIENCE_DIR [SCIENCE_DIR ...] + -d, --science_dir SCIENCE_DIR [SCIENCE_DIR ...] One or more directories with spec2d files to stack (use wildcard to specify multiple directories). (default: None) diff --git a/doc/help/pypeit_show_2dspec.rst b/doc/help/pypeit_show_2dspec.rst index 9b46fbc745..18b4e3f4b5 100644 --- a/doc/help/pypeit_show_2dspec.rst +++ b/doc/help/pypeit_show_2dspec.rst @@ -45,7 +45,7 @@ --prefix PREFIX Channel name prefix [lets you display more than one set] (default: ) --no_clear Do *not* clear all existing tabs (default: True) - -v VERBOSITY, --verbosity VERBOSITY + -v, --verbosity VERBOSITY Verbosity level between 0 [none] and 2 [all] (default: 1) --try_old Attempt to load old datamodel versions. A crash may diff --git a/doc/help/pypeit_skysub_regions.rst b/doc/help/pypeit_skysub_regions.rst index 99e96054be..43f669eeda 100644 --- a/doc/help/pypeit_skysub_regions.rst +++ b/doc/help/pypeit_skysub_regions.rst @@ -19,7 +19,7 @@ -i, --initial Use initial slit edges? (default: False) -f, --flexure Use flexure corrected slit edges? (default: False) -s, --standard List standard stars as well? (default: False) - -v VERBOSITY, --verbosity VERBOSITY + -v, --verbosity VERBOSITY Verbosity level between 0 [none] and 2 [all]. Default: 1. Level 2 writes a log with filename skysub_regions_YYYYMMDD-HHMM.log (default: 1) diff --git a/doc/help/pypeit_tellfit.rst b/doc/help/pypeit_tellfit.rst index 134ba35556..743acf8e1a 100644 --- a/doc/help/pypeit_tellfit.rst +++ b/doc/help/pypeit_tellfit.rst @@ -28,15 +28,15 @@ poly = For other type object, You might need to set fit_wv_min_max, and norder in the tell_file. - -r REDSHIFT, --redshift REDSHIFT + -r, --redshift REDSHIFT Specify redshift. Used with the --objmodel qso option above. - -g TELL_GRID, --tell_grid TELL_GRID + -g, --tell_grid TELL_GRID Telluric grid. You should download the giant grid file to the pypeit/data/telluric folder. It should only be passed if you want to overwrite the default tell_grid that is set via each spectrograph file. - -p PCA_FILE, --pca_file PCA_FILE + -p, --pca_file PCA_FILE Quasar PCA fits file with full path. The default file (qso_pca_1200_3100.fits) is stored in the pypeit/data/telluric folder. If you change the fits @@ -44,7 +44,7 @@ the tell_file to specify the wavelength coverage of your model. The defaults are pca_lower=1220. and pca_upper=3100. - -t TELL_FILE, --tell_file TELL_FILE + -t, --tell_file TELL_FILE Configuration file to change default telluric parameters. Note that the parameters in this file will be overwritten if you set argument in your terminal. @@ -71,7 +71,7 @@ --par_outfile PAR_OUTFILE Name of output file to save the parameters used by the fit - -v VERBOSITY, --verbosity VERBOSITY + -v, --verbosity VERBOSITY Verbosity level between 0 [none] and 2 [all]. Default: 1. Level 2 writes a log with filename tellfit_YYYYMMDD- HHMM.log diff --git a/doc/help/pypeit_trace_edges.rst b/doc/help/pypeit_trace_edges.rst index a9b5e21814..cd22f7ba57 100644 --- a/doc/help/pypeit_trace_edges.rst +++ b/doc/help/pypeit_trace_edges.rst @@ -10,21 +10,20 @@ options: -h, --help show this help message and exit - -f PYPEIT_FILE, --pypeit_file PYPEIT_FILE + -f, --pypeit_file PYPEIT_FILE PypeIt reduction file (default: None) - -t TRACE_FILE, --trace_file TRACE_FILE + -t, --trace_file TRACE_FILE Image to trace (default: None) - -g GROUP, --group GROUP - If providing a pypeit file, use the trace images for + -g, --group GROUP If providing a pypeit file, use the trace images for this calibration group. If None, use the first calibration group. (default: None) - -d [DETECTOR ...], --detector [DETECTOR ...] + -d, --detector [DETECTOR ...] Detector(s) to process. If more than one, the list of detectors must be one of the allowed mosaics hard-coded for the selected spectrograph. Using "mosaic" for gemini_gmos, keck_deimos, or keck_lris will use the default mosaic. (default: None) - -s SPECTROGRAPH, --spectrograph SPECTROGRAPH + -s, --spectrograph SPECTROGRAPH A valid spectrograph identifier, which is only used if providing files directly: aat_uhrf, bok_bc, gemini_flamingos1, gemini_flamingos2, @@ -47,14 +46,14 @@ soar_goodman_red, tng_dolores, vlt_fors2, vlt_sinfoni, vlt_xshooter_nir, vlt_xshooter_uvb, vlt_xshooter_vis, wht_isis_blue, wht_isis_red (default: None) - -b BINNING, --binning BINNING + -b, --binning BINNING Image binning in spectral and spatial directions. Only used if providing files directly; default is 1,1. (default: None) - -p REDUX_PATH, --redux_path REDUX_PATH + -p, --redux_path REDUX_PATH Path to top-level output directory. (default: current working directory) - -c CALIB_DIR, --calib_dir CALIB_DIR + -c, --calib_dir CALIB_DIR Name for directory in output path for calibration file(s) relative to the top-level directory. (default: Calibrations) @@ -63,7 +62,7 @@ --debug Run in debug mode. (default: False) --show Show the stages of trace refinements (only for the new code). (default: False) - -v VERBOSITY, --verbosity VERBOSITY + -v, --verbosity VERBOSITY Verbosity level between 0 [none] and 2 [all]. Default: 1. Level 2 writes a log with filename trace_edges_YYYYMMDD-HHMM.log (default: 1) diff --git a/doc/help/run_pypeit.rst b/doc/help/run_pypeit.rst index b0262023ad..e1c41d7f54 100644 --- a/doc/help/run_pypeit.rst +++ b/doc/help/run_pypeit.rst @@ -4,7 +4,7 @@ usage: run_pypeit [-h] [-v VERBOSITY] [-r REDUX_PATH] [-m] [-s] [-o] [-c] pypeit_file - ## PypeIt : The Python Spectroscopic Data Reduction Pipeline v1.16.1.dev635+g9540496b9 + ## PypeIt : The Python Spectroscopic Data Reduction Pipeline v1.17.1.dev2+g6e8b74d14 ## ## Available spectrographs include: ## aat_uhrf, bok_bc, gemini_flamingos1, gemini_flamingos2, @@ -29,9 +29,9 @@ options: -h, --help show this help message and exit - -v VERBOSITY, --verbosity VERBOSITY + -v, --verbosity VERBOSITY Verbosity level between 0 [none] and 2 [all] - -r REDUX_PATH, --redux_path REDUX_PATH + -r, --redux_path REDUX_PATH Path to directory for the reduction. Only advised for testing -m, --do_not_reuse_calibs diff --git a/doc/include/dependencies_table.rst b/doc/include/dependencies_table.rst index 5156b259ec..c6081eab84 100644 --- a/doc/include/dependencies_table.rst +++ b/doc/include/dependencies_table.rst @@ -1,5 +1,5 @@ ======================= ======================================================================================================================================================================================================================================================================================================================================================== -Python Version ``>=3.11,<3.13`` -Required for users ``IPython>=8.0.0``, ``PyERFA>=2.0.0``, ``PyYAML>=6.0``, ``astropy>=6.0``, ``bottleneck``, ``configobj>=5.0.6``, ``extension-helpers>=1.0``, ``fast-histogram>=0.11``, ``ginga>=5.1.0``, ``linetools>=0.3.2``, ``matplotlib>=3.7``, ``numpy>=1.24``, ``packaging>=22.0``, ``pygithub``, ``pyqt6``, ``qtpy>=2.2.0``, ``scikit-learn>=1.2``, ``scipy>=1.9`` +Python Version ``>=3.11,<3.14`` +Required for users ``IPython>=8.0.0``, ``PyERFA>=2.0.0``, ``PyYAML>=6.0``, ``astropy>=6.0``, ``bottleneck``, ``configobj>=5.0.6``, ``extension-helpers>=1.0``, ``fast-histogram>=0.11``, ``ginga>=5.1.0``, ``linetools>=0.3.2``, ``matplotlib>=3.7``, ``numpy>=1.26``, ``packaging>=22.0``, ``pygithub``, ``pyqt6``, ``qtpy>=2.2.0``, ``scikit-learn>=1.2``, ``scipy>=1.9`` Required for developers ``coverage``, ``docutils<0.21``, ``psutil``, ``pygit2``, ``pytest-astropy``, ``pytest-cov``, ``pytest-qt``, ``pytest>=7.0.0``, ``scikit-image>=0.23``, ``specutils>=1.13``, ``sphinx-automodapi``, ``sphinx>=1.6,<8``, ``sphinx_rtd_theme==2.0.0``, ``tox`` ======================= ======================================================================================================================================================================================================================================================================================================================================================== diff --git a/doc/include/dev_suite_readme.rst b/doc/include/dev_suite_readme.rst index 676dc66976..86ddf07b00 100644 --- a/doc/include/dev_suite_readme.rst +++ b/doc/include/dev_suite_readme.rst @@ -360,7 +360,7 @@ Finally, set the ``QT_QPA_PLATFORM`` environment variable to Running in Nautilus ------------------- -The dev-suite can be run in the `Nautilus cluster `__. +The dev-suite can be run in the `Nautilus cluster `__. To generate the YAML for a dev-suite job, use ``gen_kube_devsuite``. If needed, a specific branch of both the PypeIt repository and the Pypeit-development-suite repository can be chosen using ``-p`` and ``-d`` respectively. These default to @@ -386,6 +386,10 @@ follows: ``rclone`` can also be used access the Nautilus S3 storage. When configuring use ``https://s3-west.nrp-nautilus.io`` as the endpoint. +The default job created by ``gen_kube_devsuite`` runs directly from git. However it can be changed to run +by building a new PypeIt package and installing from that, simulating what a user would get when +installing from PyPi. This is enabled with the ``--from_wheel`` or ``-w`` option. + ``gen_kube_devsuite`` has additional code for generating coverage information and the test priority list. If ``--coverage`` and ``--priority_list`` are used, these files are also copied to S3: @@ -419,8 +423,8 @@ To monitor a test in Nautilus as it is running, the logs can be tailed: Additionally they can be monitored with the `Nautilus Grafana page `__. -By default ``gen_kube_devsuite`` creates a job using a default container with PypeIt -pre-installed. It also supports running with different python versions by +By default ``gen_kube_devsuite`` creates a job using a the latest Python container +available on Docker Hub. It also supports running with different python versions by selecting a different container. For example: .. code-block:: console diff --git a/doc/include/gemini_gnirs_echelle_A.pypeit.rst b/doc/include/gemini_gnirs_echelle_A.pypeit.rst index 996d0ea8ad..23fb41a9dd 100644 --- a/doc/include/gemini_gnirs_echelle_A.pypeit.rst +++ b/doc/include/gemini_gnirs_echelle_A.pypeit.rst @@ -1,7 +1,7 @@ .. code-block:: console - # Auto-generated PypeIt input file using PypeIt version: 1.16.0 - # UTC 2024-06-11T08:31:55 + # Auto-generated PypeIt input file using PypeIt version: 1.17.0 + # UTC 2024-11-04T15:38:09 # User-defined execution parameters [rdx] diff --git a/doc/include/keck_deimos_A.pypeit.rst b/doc/include/keck_deimos_A.pypeit.rst index ba4dae4c2b..fd224bb74b 100644 --- a/doc/include/keck_deimos_A.pypeit.rst +++ b/doc/include/keck_deimos_A.pypeit.rst @@ -1,7 +1,7 @@ .. code-block:: console - # Auto-generated PypeIt input file using PypeIt version: 1.16.0 - # UTC 2024-06-11T08:31:55 + # Auto-generated PypeIt input file using PypeIt version: 1.17.0 + # UTC 2024-11-04T15:38:09 # User-defined execution parameters [rdx] diff --git a/doc/include/keck_nires_A.pypeit.rst b/doc/include/keck_nires_A.pypeit.rst index d50c6ffb58..d33cec00c4 100644 --- a/doc/include/keck_nires_A.pypeit.rst +++ b/doc/include/keck_nires_A.pypeit.rst @@ -1,7 +1,7 @@ .. code-block:: console - # Auto-generated PypeIt input file using PypeIt version: 1.16.0 - # UTC 2024-06-11T08:31:55 + # Auto-generated PypeIt input file using PypeIt version: 1.17.0 + # UTC 2024-11-04T15:38:09 # User-defined execution parameters [rdx] diff --git a/doc/include/shane_kast_blue_A.pypeit.rst b/doc/include/shane_kast_blue_A.pypeit.rst index 50fed58129..f8f4693439 100644 --- a/doc/include/shane_kast_blue_A.pypeit.rst +++ b/doc/include/shane_kast_blue_A.pypeit.rst @@ -1,7 +1,7 @@ .. code-block:: console - # Auto-generated PypeIt input file using PypeIt version: 1.16.0 - # UTC 2024-06-11T08:31:55 + # Auto-generated PypeIt input file using PypeIt version: 1.17.0 + # UTC 2024-11-04T15:38:09 # User-defined execution parameters [rdx] diff --git a/doc/releases/1.17.1.rst b/doc/releases/1.17.1.rst new file mode 100644 index 0000000000..fd035e386d --- /dev/null +++ b/doc/releases/1.17.1.rst @@ -0,0 +1,5 @@ +Version 1.17.1 +============== + +- Bumped to ``numpy>=1.26`` +- Lifts restriction from ``python<3.13`` to ``python<3.14`` diff --git a/doc/whatsnew.rst b/doc/whatsnew.rst index 85de8cae70..013b1c4cc8 100644 --- a/doc/whatsnew.rst +++ b/doc/whatsnew.rst @@ -11,6 +11,10 @@ What's New in PypeIt ---- +.. include:: releases/1.17.1.rst + +---- + .. include:: releases/1.17.0.rst ---- diff --git a/environment.yml b/environment.yml index c020c2fd15..bd94b1a56a 100644 --- a/environment.yml +++ b/environment.yml @@ -2,7 +2,7 @@ name: pypeit channels: - defaults dependencies: - - python>=3.11,<3.13 + - python>=3.11,<3.14 - pip - pip: - pypeit diff --git a/pypeit/__init__.py b/pypeit/__init__.py index edaee7df32..aa4bb169a3 100644 --- a/pypeit/__init__.py +++ b/pypeit/__init__.py @@ -28,6 +28,24 @@ def short_warning(message, category, filename, lineno, file=None, line=None): # Report current coverage __coverage__ = 0.55 +# Import and instantiate the user +# NOTE: This **MUST** come before instantiating the logger, msgs +try: + # There appears to be a bug in getpass in windows systems where the pwd + # module doesn't load + import getpass + pypeit_user = getpass.getuser() +except (ModuleNotFoundError, OSError): + pypeit_user = None +if pypeit_user is None: + try: + pypeit_user = os.getlogin() + except OSError: + pypeit_user = None +if pypeit_user is None: + # Assume the user is not defined + pypeit_user = 'unknownuser' + # Import and instantiate the logger # NOTE: This **MUST** be defined after __version__; i.e., pypmsgs imports pypeit # and uses pypeit.__version__. diff --git a/pypeit/core/qa.py b/pypeit/core/qa.py index 1929f9c5c2..8c8e498e13 100644 --- a/pypeit/core/qa.py +++ b/pypeit/core/qa.py @@ -4,8 +4,6 @@ """ import os -import datetime -import getpass import glob import numpy as np import yaml @@ -132,24 +130,6 @@ def get_dimen(x, maxp=25): return pages, npp -def gen_timestamp(): - """ Generate a simple time stamp including the current user - - Returns - ------- - timestamp : str - user_datetime - """ - tstamp = datetime.datetime.today().strftime('%Y-%m-%d-T%Hh%Mm%Ss') - try: - user = getpass.getuser() - except ModuleNotFoundError: - # there appears to be a bug in getpass in windows systems where the pwd module doesn't load - user = os.getlogin() - # Return - return '{:s}_{:s}'.format(user, tstamp) - - def html_header(title): """ Generate a simple HTML header diff --git a/pypeit/pypmsgs.py b/pypeit/pypmsgs.py index ba5033a410..7b2e815078 100644 --- a/pypeit/pypmsgs.py +++ b/pypeit/pypmsgs.py @@ -8,7 +8,6 @@ from datetime import datetime import sys import os -import getpass import inspect import io @@ -27,6 +26,7 @@ import pypeit from pypeit.core.qa import close_qa +from pypeit import pypeit_user #pypeit_logger = None @@ -73,13 +73,7 @@ def __init__(self, log=None, verbosity=None, colors=True): # Initialize other variables self._defverb = 1 - try: - user = getpass.getuser() - except ModuleNotFoundError: - # there appears to be a bug in getpass in windows systems where the pwd module doesn't load - user = os.getlogin() - - if user in developers: + if pypeit_user in developers: self._defverb = 2 self._verbosity = self._defverb if verbosity is None else verbosity diff --git a/setup.cfg b/setup.cfg index 294a1e1615..42a738f7af 100644 --- a/setup.cfg +++ b/setup.cfg @@ -19,6 +19,7 @@ classifiers = Programming Language :: Python Programming Language :: Python :: 3.11 Programming Language :: Python :: 3.12 + Programming Language :: Python :: 3.13 Topic :: Documentation :: Sphinx Topic :: Scientific/Engineering :: Astronomy Topic :: Software Development :: Libraries :: Python Modules @@ -28,11 +29,11 @@ classifiers = zip_safe = False use_2to3=False packages = find: -python_requires = >=3.11,<3.13 +python_requires = >=3.11,<3.14 setup_requires = setuptools_scm include_package_data = True install_requires = - numpy>=1.24 + numpy>=1.26 astropy>=6.0 extension-helpers>=1.0 packaging>=22.0 diff --git a/tox.ini b/tox.ini index c8b7d51210..927c23351d 100644 --- a/tox.ini +++ b/tox.ini @@ -1,8 +1,8 @@ [tox] envlist = - {3.11,3.12}-test{,-alldeps,-shapely,-specutils}{,-cov} - {3.11,3.12}-test-numpy{124,125,126,200,201} - {3.11,3.12}-test-{numpy,astropy,linetools,ginga}dev + {3.11,3.12,3.13}-test{,-alldeps,-shapely,-specutils}{,-cov} + {3.11,3.12,3.13}-test-numpy{126,200,201,202} + {3.11,3.12,3.13}-test-{numpy,astropy,linetools,ginga}dev codestyle requires = setuptools >= 65.0 @@ -36,21 +36,19 @@ description = devdeps: with the latest developer version of key dependencies oldestdeps: with the oldest supported version of key dependencies cov: and test coverage - numpy124: with numpy 1.24.* - numpy125: with numpy 1.25.* numpy126: with numpy 1.26.* numpy200: with numpy 2.0.* numpy201: with numpy 2.1.* + numpy202: with numpy 2.2.* # The following provides some specific pinnings for key packages deps = cov: coverage - numpy124: numpy==1.24.* - numpy125: numpy==1.25.* numpy126: numpy==1.26.* numpy200: numpy==2.0.* numpy201: numpy==2.1.* + numpy202: numpy==2.2.* numpydev: numpy>=0.0.dev0 astropydev: git+https://github.com/astropy/astropy.git#egg=astropy