Compare commits

..

2 commits

3 changed files with 22 additions and 22 deletions

View file

@ -2,11 +2,11 @@
import argparse
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.config import Config
from xmet.db import Database
from xmet.s3 import S3Bucket
from xmet.storm import StormEvent
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)