-í
c¸§Ec       sÁ      d  k  Z   d  k Z  d  k Z  d  k Z  d  k i Z  d  k i Z  d  k i	 Z
  d e i i f d „  ƒ  YZ v d e i i f d „  ƒ  YZ û d e i i f d „  ƒ  YZ d  S(   Ns   AnimatedMapc      s&    d  Z    d „  Z : d „  Z RS(   s  This class supports maps that "animate" (i.e. - support multiple data
       layer images that 'move' over the map). Although this class still
       works (and is still used) for maps that only have one data image to
       display -- you just won't see any 'movement'c    sÀ     t  i i i |  | ƒ  d |  _  d |  _  d |  _ ! t	 i
 d } " | d } # |  i d d t i ƒ  |  i ƒ  f + d | . d g  1 d	 d 2 d
 d 6 d d 7 d d ƒ d  S(   Niÿÿÿÿi    s
   TWCPERSDIRs   /data/volatile/imagess   productStrings   Config.%s.%ss	   imageRoots	   imageLists   imageFrequencys	   maxImagess   imageDurations   lastImageDuration(   s   twcs   productss   Products   __init__s   selfs   paramss   _maxAllowedImageGaps   _ignoreImageExpirations   _ignoreTimeGapss   oss   environs
   TWCPERSDIRs	   imageRoots
   updateDatas   dsms   getConfigVersions   getName(   s   selfs   paramss	   imageRoots
   TWCPERSDIR(    (    s'   /twc/products/pm/Local/lib/prodLocal.pys   __init__ s   %					c    sü  : ; t  i |  i ƒ  ƒ } < |  i ƒ  } ? d | _ B d | _ E d | i	 f } H t i i | ƒ d j o4 I t  i i d | i	 f ƒ J d | _ K d  Sn N t i d | i O d | i	 P d d	 Q d
 d d d d d ƒ | _ T |  i d j o t | i ƒ d j o: Y t i |  i ƒ  | i | i [ |  i |  i ƒ | _ n ^ | i d | i !| _ a t | i ƒ d j o c d | _ n e t  i i d | i	 f ƒ m | i i ƒ  p | i | _ q | i | _ r | i | _ s | i | _ d  S(   Ni   s   Temporarily Unavailables   /twc/data/map.cuts/%s.map.tifi    s/   no map cut found for %s. Can't display product.s   dataPaths   prefixs   suffixs
   *[0-9].tifs   startTimeNdxi   s
   endTimeNdxi   s	   sortIndexs1   no valid images found for %s. No data to display.(    s	   twccommons   DefaultedDatas   selfs	   getParamss   paramss   getDatas   datas   noDataAvailables   noDataAvailableTexts   productStrings   mapCuts   oss   paths   existss   Logs   warnings   dataUtils   getValidFileLists   imageDirs	   imageLists   _maxAllowedImageGaps   lens   checkImageListForGapss   getNames   imageFrequencys   _ignoreTimeGapss	   maxImagess   reverses   vectors
   textStrings	   tiffImages   labeledTiffImage(   s   selfs   paramss   mapCuts   data(    (    s'   /twc/products/pm/Local/lib/prodLocal.pys	   _loadData: s2   	)(   s   __doc__s   __init__s	   _loadData(    (    (    s'   /twc/products/pm/Local/lib/prodLocal.pys   AnimatedMap s   	)s   ObservationMapc      s)   v x d „  Z  ƒ d „  Z ž d „  Z RS(   Nc    sI   x y t  i i i |  | ƒ { |  i d d t i ƒ  |  i	 ƒ  f ƒ d  S(   Ns   productStrings   Config.%s.%s(
   s   twcs   productss   Products   __init__s   selfs   paramss
   updateDatas   dsms   getConfigVersions   getName(   s   selfs   params(    (    s'   /twc/products/pm/Local/lib/prodLocal.pys   __init__x s   c    sÝ   ƒ † t  } ‰ d | f } Š t i | t  ƒ } Œ | t  j	 o‘  t i | ƒ }  | d j o ‘ | i
 } n\ ’ | d j oK “ t i | i ” d d ƒ } – | d j o — t  } n ™ | i } n n › | Sd  S(   Ns   obs.%ss   temps   skyConditions   Observationi    (   s   Nones   values
   obsStations   obsKeys   dsms   defaultedGets   observations	   twccommons   DefaultedDatas   dataTypes   temps
   wxDataUtils   formatSkyConditions   skyConditions   iconFile(   s   selfs
   obsStations   dataTypes   observations   obsKeys   value(    (    s'   /twc/products/pm/Local/lib/prodLocal.pys   _getObservationDataƒ s   	c    ss  ž Ÿ t  i |  i ƒ  ƒ }   |  i ƒ  } ¢ d | _ ¥ d | _ ¨ d | i	 f } « t i i | ƒ d j o4 ¬ t  i i d | i	 f ƒ ­ d | _ ® d  Sn ° y_² d } ³ d } ¶ g  } º | i oï ¼ xå | i D¼ ]× \ } } ¿ | d } Á g  } Â d }	 Ã xw | DÃ ]l }
 Ä |
 d } Å |
 d } È |  i | | ƒ } É | t j o Ê | d 7} n Ë | i | | f ƒ qWÍ | t  | ƒ 7} Î | i | t! | ƒ f ƒ qà Wn Ð | | _ Ó g  } × | i# oÙ Ù xÏ | i# DÙ ]Á \ } } Ü g  } Ý xw | DÝ ]l }
 Þ |
 d } ß |
 d } â |  i | d ƒ } ã | t j o ä | d 7} n å | i | | f ƒ qWç | t  | ƒ 7} è | i | t! | ƒ f ƒ qñWn ê | | _# ë t  i i d | | f ƒ í | | j o î d | _ n Wn) ð ñ t  i i% d	 ƒ ò d | _ n Xõ | i& | _& ö | i' | _' ÷ | i( | _( ø | i) | _) d  S(
   Ni    s	   No Reports   /twc/data/map.cuts/%s.map.tifs/   no map cut found for %s. Can't display product.i   i   s   skyConditions   MISSING %s, MAX, %ss   ObservationMap loadData error:(*   s	   twccommons   DefaultedDatas   selfs	   getParamss   paramss   getDatas   datas   noDataAvailables   noDataAvailableTexts   productStrings   mapCuts   oss   paths   existss   Logs   warnings   maxDataCounts   missingDataCounts	   obsValuess   obsValues
   propertiess   elementss   dataTypes   updatedElementss	   dataCounts   items
   obsStations   positions   _getObservationDatas   values   Nones   appends   lens   tuples   obsIconss   obsIcons   iconFiles   logCurrentExceptions   vectors	   tiffImages   labeledTiffImages
   textString(   s   selfs   elementss
   obsStations	   obsValuess   updatedElementss   maxDataCounts   iconFiles   mapCuts   missingDataCounts	   dataCounts   items   datas   values
   propertiess   dataTypes   paramss   positions   obsIcons(    (    s'   /twc/products/pm/Local/lib/prodLocal.pys	   _loadDataž sp   			 		
 	$	 	
 	$(   s   __init__s   _getObservationDatas	   _loadData(    (    (    s'   /twc/products/pm/Local/lib/prodLocal.pys   ObservationMapv s   s   ForecastMapc      s)   û ý d „  Z  d „  Z d „  Z RS(   Nc    sI   ý þ t  i i i |  | ƒ  |  i d d t i ƒ  |  i	 ƒ  f ƒ d  S(   Ns   productStrings   Config.%s.%s(
   s   twcs   productss   Products   __init__s   selfs   paramss
   updateDatas   dsms   getConfigVersions   getName(   s   selfs   params(    (    s'   /twc/products/pm/Local/lib/prodLocal.pys   __init__ý s   c    s«   	t  } d | | | | f } t i | ƒ } | t  j	 oY | } | d j p | d j p
 | d j o" t
 i t | ƒ d ƒ i } n n | Sd  S(   Ns   %s.%s.%d.%ss   skyConditions   daySkyConditions   eveningSkyConditions   Forecast(   s   Nones   values   recTypes   coopIds
   timePeriods   dataTypes   fcstKeys   dsms   defaultedGets   fcstDatas
   wxDataUtils   formatSkyConditions   ints   iconFile(   s   selfs   coopIds
   timePeriods   recTypes   dataTypes   fcstDatas   values   fcstKey(    (    s'   /twc/products/pm/Local/lib/prodLocal.pys   _getDailyForecastDatas   		*&c    sH  t  i |  i ƒ  ƒ } $t  i ƒ  } &d | _ )g  } *g  }
 -| i
 oõ .xë | i
 D.]Ý \ }	 } 1| t j o t |	 ƒ d j o 2|	 d } n 4g  } 5xr | D5]g } 6| d } 7| d } :|  i | | | | ƒ } <|
 i | t j ƒ =| i | | f ƒ q¸ W?| i |	 t | ƒ f ƒ qb Wn A| | _
 Dg  } Eg  } H| i oÎ IxÄ | i DI]¶ \ }	 } Kg  } Lx | DL]t } M| d } N| d } Q|  i | | | | ƒ } R| i | t j o
 | d j ƒ S| i | | f ƒ q¤WU| i |	 t | ƒ f ƒ q‚Wn W| | _ \|
 o | o ]t d „  |
 | ƒ | _  nA ^|
 o _|
 | _  n' `| o a| | _  n ct | _  g| i  o t! d „  | i  d ƒ o hd | _ n jd | _ m| i" | _" n| i# | _# o| i$ | _$ p| i% | _% r| Sd  S(   Ni   i   i    s	   BlankIconc    s   ]|  p | S(   N(   s   as   b(   s   as   b(    (    s'   /twc/products/pm/Local/lib/prodLocal.pys   <lambda>]s    c    s   g|  p | S(   N(   s   as   b(   s   as   b(    (    s'   /twc/products/pm/Local/lib/prodLocal.pys   <lambda>gs    (&   s	   twccommons   DefaultedDatas   selfs	   getParamss   paramss   Datas   timePeriodDatas   noDataAvailables   fdatas   validValueLists	   fcstValues
   propertiess   elementss
   valueFields   Nones   lens   updatedElementss   items   stations   positions   _getDailyForecastDatas
   timePeriods   recTypes   values   appends   tuples   idatas   validIconLists   fcstIcons	   iconFields   iconFiles   maps   validLocLists   reduces   vectors	   tiffImages   labeledTiffImages
   textString(   s   selfs
   timePeriods   recTypes
   valueFields	   iconFields   elementss   updatedElementss   iconFiles   stations
   propertiess   validValueLists   idatas   timePeriodDatas   values   validIconLists   items   paramss   positions   fdata(    (    s'   /twc/products/pm/Local/lib/prodLocal.pys   _loadDataTimePeriodsd   		 #	
 	$		 	
 	#$

&(   s   __init__s   _getDailyForecastDatas   _loadDataTimePeriod(    (    (    s'   /twc/products/pm/Local/lib/prodLocal.pys   ForecastMapû s   (   s   oss   twcs   twc.productss	   twccommons   domestic.dataUtils   dataUtils   twcWx.dataUtils
   wxDataUtils   twc.dsmarshals	   dsmarshals   dsms   productss   Products   AnimatedMaps   ObservationMaps   ForecastMap(	   s   ForecastMaps   twcs   ObservationMaps   dsms	   twccommons
   wxDataUtils   dataUtils   AnimatedMaps   os(    (    s'   /twc/products/pm/Local/lib/prodLocal.pys   ? s   k…