Source code for SatelliteCameraViewer.StarCatalog.star

"""
Star - A class to store important values for a star.

"""

import math
from dataclasses import dataclass

[docs] @dataclass(frozen=True) class Star: """ Star - A class to store important values for a star. :param number: Star catalog number (if known). :type number: int | None :param name: Star name (if known). :type name: str | None :param constellation: Star constellation name (if known). :type constellation: str | None :param ra: Star Right Ascension (RA) in radians. :type ra: float :param dec: Star Declination (DEC) in radians. :type dec: float :param mag: Star magnitude (if known). :type mag: float | None :return: Star class. :rtype: Star """ number: int|list[int] = None """ Star catalog number (if known). """ name: str = None """ Star name (if known). """ constellation: str = None """ Star constellation name (if known). """ ra: float = math.nan """ Star Right Ascension (RA) in radians. """ dec: float = math.nan """ Star Declination (DEC) in radians. """ mag: float = math.nan """ Star magnitude (if known). """ def __str__(self): """ __str__() """ if isinstance(self.number, int): num = str(self.number) else: if self.number is not None: num = '-'.join([str(v) for v in self.number]) else: num = '' if self.name is not None and self.constellation is not None and self.constellation != '': name = self.name + ' in ' + self.constellation else: name = self.name if self.ra is not None and not math.isnan(self.ra) or self.dec is not None and not math.isnan(self.dec): pos = '[%9.5f,%9.5f]' % (round(math.degrees(self.ra), 5), round(math.degrees(self.dec), 5)) else: pos = '[%9s,%9s]' % ('', '') if self.mag is not None and not math.isnan(self.mag): mag = '%6.3f' % (self.mag) else: mag = '' if name is None or len(name) == 0: r = '%s @ %6s ; %6s' % (pos, mag, num) elif name[0] == '"' and name[-1] == '"': r = '%s @ %6s ; %6s %s' % (pos, mag, num, name) else: r = '%s @ %6s ; %6s %s' % (pos, mag, num, '"' + name + '"') return r def __call__(self): """ __call__ """ return [self.number, self.name, self.constellation, self.ra, self.dec, self.mag]
def _main(args=None): """ _main """ s = Star() print(s) s = Star(1, 'Twinkle', 'Lullaby', 0.0, 0.0, 1.0) print(s) s = Star([1,2,3], 'Little Star', 'Poem', 0.0, 0.0, 1.0) print(s) print(s()) if __name__ == '__main__': _main()