9 import sys, logging, os, collections
16 """!Reads stdin, converts data, writes to stdout."""
18 logger=logging.getLogger(
'hhs2storms')
20 epsilon=to_timedelta(5)
21 six_hours=to_timedelta(6*3600)
23 storms=collections.defaultdict(set)
25 for line
in sys.stdin:
29 line=line.rstrip().upper()
33 storm=basin+number+ymdh[0:4]
34 storms[storm].add(ymdh)
36 sortstorms=[ x
for x
in storms.iterkeys() ]
39 for storm
in sortstorms:
40 unsorted_cycles=storms[storm]
41 cycles=list(unsorted_cycles)
42 cycles = [ to_datetime(x)
for x
in cycles ]
44 basin2=storm[0:2].lower()
56 "Unsupported basin %s: only AL, EP, CP and WP have unambiguous "
57 "one letter basins."%(basin2,))
58 sys.stdout.write(
'<!ENTITY %ssid "%s%s">\n'%(storm,number,basin1))
59 sys.stdout.write(
'<!ENTITY %ssidlc "%s%s">\n'
60 %(storm,number,basin1.lower()))
61 sys.stdout.write(
'<!ENTITY %scyc "'%(storm,))
64 sent=cycles[0]-six_hours
66 if to_datetime(cycle) > to_datetime(last)+six_hours+epsilon:
68 sys.stdout.write(
'<cycledef>%s00 %s00 06:00:00</cycledef> '
69 %(first.strftime(
'%Y%m%d%H'),
70 last.strftime(
'%Y%m%d%H')))
76 if sent+epsilon < last:
78 sys.stdout.write(
'<cycledef>%s00 %s00 06:00:00</cycledef> '
79 %(first.strftime(
'%Y%m%d%H'),
80 last.strftime(
'%Y%m%d%H')))
81 sys.stdout.write(
'">\n')
83 if __name__==
'__main__': main()
Contains setup(), which initializes the produtil package.
def setup(ignore_hup=False, dbnalert_logger=None, jobname=None, cluster=None, send_dbn=None, thread_logger=False, thread_stack=2 **24, kwargs)
Initializes the produtil package.
Time manipulation and other numerical routines.