B [u^@shddlZddlZddlZddlZddlZddlmZdddZ dddZ dd d Z d d Z dddZ dS)Nc Csd}x|||kry |}WnRtk rj}z4|jdddkrJtddStd||Sd}~XYnXt|||7}qWdS)NrErrorCodeZResourceNotFoundExceptionzSuccessful delete zDeletion failed: ) Exceptionresponselogginginfotimesleep)callbackZ check_timetimeout elapsed_timeouterA/workspace/my-aws-example/Forecasting-workshop/util/fcst_utils.pywait_till_deletes    rcCs|d}t||}d}x@|dkr\|d}t|||7}tdddd|dkrPqW|dkrjd}|rrd nd }tdtd |d || S) NStatusTZACTIVE.)endflushZ CREATE_FAILEDFfailedsuccessz Finished in z seconds with status )r r printrr )r Z time_intervalZ last_statusrZ is_failedZ job_statusrrrwaits"      rFcCs<tj|dd}dddg|_|r*dddg|_|j|d|kS)N)headeritem_id timestamptarget)pdread_csvcolumnsloc)fnamerZis_schema_permexactrrrload_exact_sol,s   r(cCstd}d}ddddiddgd }d}y$|j|t|d }|d d }Wn:|jjk rtd |dtd |j }YnXd}|j ||d|j d|dt dt||S)NiamZForecastDemoRolez 2012-10-17ZAllowServicezforecast.amazonaws.comzsts:AssumeRole)ZEffectZ PrincipalAction)Version Statement)RoleNameZAssumeRolePolicyDocumentRoleZArnz The role zexists, ignore to create itz0arn:aws:iam::aws:policy/AmazonForecastFullAccess)r. PolicyArnz*arn:aws:iam::aws:policy/AmazonS3FullAccess)r0r.r)boto3clientZ create_rolejsondumps exceptionsZEntityAlreadyExistsExceptionrresourcer/arnZattach_role_policyr r )r) role_nameZassume_role_policy_documentrole_arnZcreate_role_responseZ policy_arnrrrget_or_create_role_arn3s2  r:1HPc Cs0t|ddd}t|ddd}t|ddd}|ddd}|d } |d d d} tj| | d|d j| dd dtj||djddtj|dj|dj|djdddtjt| ddddtjt| ||dddddtj ddtj ddgdddS)NZForecastZ Predictionsp10p50p90 TimestampcSs t|S)N)r"rA)xrrr`z plot_forecasts..rr cSs t|S)N)r"rA)rBrrrrCbrDr!r)colorZValuekbg333333?)rFalphagdashed)rB linewidthrFlsr)rotationZTargetz lower left)r%) r" DataFrameapplypltplotvalues fill_betweenaxvlinerAxtickslegend) Zfcstsr'freqZforecastHorizonZ time_backr>r?r@Zpred_intZfcst_start_dateZtime_intrrrplot_forecasts\s *  " r[)rr)r)F)r;r<r=)r r1r3pandasr"rmatplotlib.pyplotpyplotrSrrr(r:r[rrrrs    )