Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
This will over-write if the key already exists, except
for COMMENT and HISTORY fields
parameters
-----------
record:
The record, either a dict or a header card string
or a FITSRecord or FITSCard
"""
if (isinstance(record_in, dict) and
'name' in record_in and 'value' in record_in):
record = {}
record.update(record_in)
else:
record = FITSRecord(record_in)
# only append when this name already exists if it is
# a comment or history field, otherwise simply over-write
key = record['name']
if key is not None:
key = key.upper()
key_exists = key in self._record_map
if not key_exists or key in ('COMMENT', 'HISTORY', 'CONTINUE', None):
# append new record
self._record_list.append(record)
index = len(self._record_list)-1
self._index_map[key] = index
else:
# over-write existing
parameters
----------
record: string
Dict representing a record or a string representing a FITS header
card
"""
if isstring(record):
card = FITSCard(record)
self.update(card)
self.verify()
else:
if isinstance(record, FITSRecord):
self.update(record)
elif isinstance(record, dict):
if 'name' in record and 'value' in record:
self.update(record)
elif 'card_string' in record:
self.set_record(record['card_string'])
else:
raise ValueError('record must have name,value fields '
'or a card_string field')
else:
raise ValueError("record must be a string card or "
"dictionary or FITSRecord")
"dictionary or FITSRecord")
def verify(self):
"""
make sure name,value exist
"""
if 'name' not in self:
raise ValueError("each record must have a 'name' field")
if 'value' not in self:
raise ValueError("each record must have a 'value' field")
_BLANK = ' '
class FITSCard(FITSRecord):
"""
class to represent ordinary FITS cards.
CONTINUE not supported
examples
--------
# from a card
card=FITSRecord('test = 77 / My comment')
"""
def __init__(self, card_string):
self.set_card(card_string)
def set_card(self, card_string):
self['card_string'] = card_string