File: C:/Users/fred/anaconda3/Lib/site-packages/astropy/io/fits/tests/test_tilde_path.py
# Licensed under a 3-clause BSD style license - see PYFITS.rst
import os
import numpy as np
import pytest
from astropy.io import fits
from astropy.utils.misc import _NOT_OVERWRITING_MSG_MATCH
from .conftest import FitsTestCase
class TestTildePaths(FitsTestCase):
"""
Exercises a few functions, just to ensure they run with tilde paths (i.e.
paths like '~/filename.fits'). Also exercises a few subclasses. Most of the
rest of the testing of tilde path handling is done by adding `home_is_data`
and `home_is_temp` fixtures (defined and explained in __init__.py) to
appropriate test cases, so that they are run both with and without tilde
paths.
"""
def test_fits_info(self, home_is_data):
fits.info(self.data("tb.fits"), output=False)
def test_fits_printdiff(self, home_is_data):
fits.printdiff(self.data("test0.fits"), self.data("tb.fits"))
def test_fits_get_data(self, home_is_data):
fits.getdata(self.data("test0.fits"))
fits.getdata(self.data("test0.fits"), header=True)
def test_fits_get_header(self, home_is_data):
fits.getheader(self.data("test0.fits"))
fits.getheader(self.data("tb.fits"), ext=1)
def test_fits_get_set_del_val(self, home_is_temp):
self.copy_file("test0.fits")
filename = self.temp("test0.fits")
assert fits.getval(filename, "shutter") == "B"
fits.setval(filename, "shutter", value="C")
assert fits.getval(filename, "shutter") == "C"
with pytest.raises(KeyError):
fits.getval(filename, "missing")
fits.setval(filename, "missing", value="C")
assert fits.getval(filename, "missing") == "C"
fits.delval(filename, "missing")
with pytest.raises(KeyError):
fits.getval(filename, "missing")
def test_header_formatter(self, home_is_data):
from astropy.io.fits.scripts import fitsheader
hf = fitsheader.HeaderFormatter(self.data("zerowidth.fits"))
hf.close()
thf = fitsheader.TableHeaderFormatter(self.data("zerowidth.fits"))
thf.close()
def test_BinTableHDU_dump_load(self, home_is_temp):
bright = np.rec.array(
[
(1, "Serius", -1.45, "A1V"),
(2, "Canopys", -0.73, "F0Ib"),
(3, "Rigil Kent", -0.1, "G2V"),
],
formats="int16,S20,float32,S10",
names="order,name,mag,Sp",
)
hdu = fits.BinTableHDU(bright)
hdu.dump(self.temp("data.txt"), self.temp("cdfile.txt"), self.temp("hfile.txt"))
with pytest.raises(OSError, match="already exists"):
hdu.dump(
self.temp("data.txt"),
self.temp("cdfile.txt"),
self.temp("hfile.txt"),
overwrite=False,
)
hdu.dump(
self.temp("data.txt"),
self.temp("cdfile.txt"),
self.temp("hfile.txt"),
overwrite=True,
)
fits.BinTableHDU.load(
self.temp("data.txt"), self.temp("cdfile.txt"), self.temp("hfile.txt")
)
self.copy_file("tb.fits")
with fits.open(self.temp("tb.fits")) as hdul:
hdu = hdul[1]
hdu.dump()
assert os.path.exists(os.path.expanduser(self.temp("tb.txt")))
def test_BinTableHDU_writeto(self, home_is_temp):
bright = np.rec.array(
[
(1, "Serius", -1.45, "A1V"),
(2, "Canopys", -0.73, "F0Ib"),
(3, "Rigil Kent", -0.1, "G2V"),
],
formats="int16,S20,float32,S10",
names="order,name,mag,Sp",
)
hdu = fits.BinTableHDU(bright)
hdu.writeto(self.temp("table.fits"))
with pytest.raises(OSError, match=_NOT_OVERWRITING_MSG_MATCH):
hdu.writeto(self.temp("table.fits"), overwrite=False)
hdu.writeto(self.temp("table.fits"), overwrite=True)
def test_TableHDU_writeto(self, home_is_temp):
bright = np.rec.array(
[
(1, "Serius", -1.45, "A1V"),
(2, "Canopys", -0.73, "F0Ib"),
(3, "Rigil Kent", -0.1, "G2V"),
],
formats="int16,S20,float32,S10",
names="order,name,mag,Sp",
)
hdu = fits.TableHDU.from_columns(bright, nrows=2)
hdu.writeto(self.temp("table.fits"))
with pytest.raises(OSError, match=_NOT_OVERWRITING_MSG_MATCH):
hdu.writeto(self.temp("table.fits"), overwrite=False)
hdu.writeto(self.temp("table.fits"), overwrite=True)
def fits_tabledump(self, home_is_temp):
self.copy_file("tb.fits")
fits.tabledump(
self.temp("tb.fits"),
self.temp("data.txt"),
self.temp("cdfile.txt"),
self.temp("hfile.txt"),
)
with pytest.raises(OSError, match=_NOT_OVERWRITING_MSG_MATCH):
fits.tabledump(
self.temp("tb.fits"),
self.temp("data.txt"),
self.temp("cdfile.txt"),
self.temp("hfile.txt"),
overwrite=False,
)
fits.tabledump(
self.temp("tb.fits"),
self.temp("data.txt"),
self.temp("cdfile.txt"),
self.temp("hfile.txt"),
overwrite=True,
)
fits.tableload(
self.temp("data.txt"), self.temp("cdfile.txt"), self.temp("hfile.txt")
)
def test_ImageHDU_writeto(self, home_is_temp):
hdu = fits.ImageHDU(np.arange(100).reshape((10, 10)))
hdu.writeto(self.temp("image.fits"))
with pytest.raises(OSError, match=_NOT_OVERWRITING_MSG_MATCH):
hdu.writeto(self.temp("image.fits"), overwrite=False)
hdu.writeto(self.temp("image.fits"), overwrite=True)
def test_CompImageHDU_writeto(self, home_is_temp):
hdu = fits.CompImageHDU(np.arange(100).reshape((10, 10)).astype(np.int32))
hdu.writeto(self.temp("image.fits"))
with pytest.raises(OSError, match=_NOT_OVERWRITING_MSG_MATCH):
hdu.writeto(self.temp("image.fits"), overwrite=False)
hdu.writeto(self.temp("image.fits"), overwrite=True)