Compare commits

...

2 commits

3 changed files with 22 additions and 22 deletions

View file

@ -6,7 +6,7 @@ from xmet.config import Config
from xmet.db import Database
from xmet.s3 import S3Bucket
from xmet.storm import StormEvent
from xmet.archive import Archive
from xmet.nexrad import NEXRADArchive
parser = argparse.ArgumentParser(
description = 'Archive NEXRAD Level II data from Amazon S3'
@ -27,7 +27,7 @@ args = parser.parse_args()
config = Config.load()
db = Database.from_config(config)
bucket = S3Bucket()
archive = Archive(getattr(args, 'archive-dir'), bucket)
archive = NEXRADArchive(getattr(args, 'archive-dir'), bucket)
exclude = None
types = None

View file

@ -85,7 +85,7 @@ args = argparser.parse_args()
config = Config.load()
db = Database.from_config(config)
conus = SPCOutlookMap(args.dark)
conus = SPCOutlookMap(dark=args.dark)
if args.file is None:
if args.valid is None or args.day is None:

View file

@ -7,7 +7,7 @@ from xmet.db import Database
from xmet.s3 import S3Bucket, S3_KEY_RE
from xmet.radar import RADAR_RANGE
class ArchiveDateError(Exception):
class NEXRADArchiveDateError(Exception):
def __init__(self, supplied: str, missing: str):
self.supplied = supplied
self.missing = missing
@ -15,15 +15,15 @@ class ArchiveDateError(Exception):
def __str__(self):
return "Archive {self.supplied} was supplied, but required {self.missing} is missing"
class ArchiveProductType(enum.Enum):
class NEXRADArchiveProductType(enum.Enum):
DEFAULT = 1
V03 = 3
V04 = 4
class ArchiveProduct():
class NEXRADArchiveProduct():
__slots__ = 'typeof', 'radar', 'timestamp',
typeof: ArchiveProductType
typeof: NEXRADArchiveProductType
radar: str
timestamp: datetime.datetime
@ -43,9 +43,9 @@ class ArchiveProduct():
def __str__(self):
ret = '/'.join(self.__parts__())
if self.typeof == ArchiveProductType.V03:
if self.typeof == NEXRADArchiveProductType.V03:
ret += "_V03"
elif self.typeof == ArchiveProductType.V04:
elif self.typeof == NEXRADArchiveProductType.V04:
ret += "_V04"
ret += ".gz"
@ -56,9 +56,9 @@ class ArchiveProduct():
parts = self.__parts__()
ret = os.path.join(*parts)
if self.typeof == ArchiveProductType.V03:
if self.typeof == NEXRADArchiveProductType.V03:
ret += "_V03"
elif self.typeof == ArchiveProductType.V04:
elif self.typeof == NEXRADArchiveProductType.V04:
ret += "_V04"
ret += ".gz"
@ -70,7 +70,7 @@ class ArchiveProduct():
@staticmethod
def from_s3_key(key: str):
product = ArchiveProduct()
product = NEXRADArchiveProduct()
match = S3_KEY_RE.match(key)
product.timestamp = datetime.datetime(
@ -84,8 +84,8 @@ class ArchiveProduct():
)
product.radar = match[4]
product.typeof = ArchiveProductType.V03 \
if key[-7:] == '_V03.gz' else ArchiveProductType.DEFAULT
product.typeof = NEXRADArchiveProductType.V03 \
if key[-7:] == '_V03.gz' else NEXRADArchiveProductType.DEFAULT
return product
@ -116,7 +116,7 @@ class ArchiveProduct():
return result['num'] == 1
class Archive():
class NEXRADArchive():
path: str
bucket: S3Bucket
@ -148,10 +148,10 @@ class Archive():
parts = [self.path]
if day is not None and month is None:
raise ArchiveDateError('day', 'month')
raise NEXRADArchiveDateError('day', 'month')
if month is not None and year is None:
raise ArchiveDateError('month', 'year')
raise NEXRADArchiveDateError('month', 'year')
for cur_year in os.scandir(os.path.join(*parts)):
if not (cur_year.is_dir() and self.RE_YEAR.match(cur_year.name)):
@ -205,4 +205,4 @@ class Archive():
month: int=None,
day: int=None):
for key in self.each_downloaded_key(year, month, day):
yield ArchiveProduct.from_s3_key(key)
yield NEXRADArchiveProduct.from_s3_key(key)