Commit 12df9146 authored by BO ZHANG's avatar BO ZHANG 🏀
Browse files

re-structured meta operations

parent 21e2d3d6
Loading
Loading
Loading
Loading
Loading
+12 −12
Original line number Diff line number Diff line
@@ -69,7 +69,7 @@ REQUIRED_KEYS_IN_META = dict(
)


def generate_meta(**kwargs) -> fits.Header:
def generate_meta(**kwargs) -> dict:
    """
    Generate metadata.

@@ -101,16 +101,10 @@ def generate_meta(**kwargs) -> fits.Header:
    meta["build"] = os.getenv("BUILD", default="__unset__")
    meta["prc_date"] = now()
    meta["data_uuid"] = str(uuid.uuid4())
    # convert meta to fits header
    meta_card = fits.Card(
        keyword="META",
        value=json.dumps(meta, separators=(",", ":"), ensure_ascii=False),
    )
    meta_header = reformat_header(fits.Header(cards=[meta_card]), comment="METADATA")
    return meta_header
    return meta


def append_meta(hdulist: fits.HDUList, **kwargs) -> fits.HDUList:
def append_meta(hdulist: fits.HDUList, meta: dict) -> fits.HDUList:
    """
    Append meta to hdulist.

@@ -118,8 +112,8 @@ def append_meta(hdulist: fits.HDUList, **kwargs) -> fits.HDUList:
    ----------
    hdulist : fits.HDUList
        HDUList.
    kwargs : Any
        Meta data.
    meta : dict
        Meta data dict.

    Returns
    -------
@@ -127,7 +121,13 @@ def append_meta(hdulist: fits.HDUList, **kwargs) -> fits.HDUList:
        HDUList with meta.

    """
    meta_header = generate_meta(**kwargs)
    # convert meta to fits header
    meta_card = fits.Card(
        keyword="META",
        value=json.dumps(meta, separators=(",", ":"), ensure_ascii=False),
    )
    meta_header = reformat_header(fits.Header(cards=[meta_card]), comment="METADATA")
    # append meta_header to hdulist[0].header
    hdulist[0].header = append_header(hdulist[0].header, meta_header)
    return hdulist

+3 −2
Original line number Diff line number Diff line
@@ -134,11 +134,12 @@ class TestFitsHeaderOps(unittest.TestCase):

    def test_generate_meta(self):
        h = generate_meta()
        self.assertIsInstance(h, fits.Header)
        self.assertIsInstance(h, dict)

    def test_append_meta(self):
        hdulist = fits.HDUList([fits.PrimaryHDU()])
        hdulist = append_meta(hdulist, obs_id="123456")
        meta = generate_meta(obs_id="123456")
        hdulist = append_meta(hdulist, meta)
        self.assertIn("META", set(hdulist[0].header.keys()))
        meta = extract_meta(hdulist)
        self.assertEqual(meta["obs_id"], "123456")