
    o                     Z   d Z ddlmZ ddlmZ ddlmZ ddlZddlZddlZddlm	Z	 ddlm
Z
 ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ  G d dej(                        Z G d dej(                        Z G d dej(                        Z G d dej(                        Z	 	 	 ddZy)z)Utilities for local ml-engine operations.    )absolute_import)division)unicode_literalsN)local_predict)predict_utilities)config)
exceptions)log)
properties)encoding)filesc                       e Zd Zy)InvalidInstancesFileErrorN)__name__
__module____qualname__     7lib/googlecloudsdk/command_lib/ml_engine/local_utils.pyr   r   #   s    r   r   c                       e Zd ZdZy)LocalPredictRuntimeError8Indicates that some error happened within local_predict.Nr   r   r   __doc__r   r   r   r   r   '       @r   r   c                       e Zd ZdZy)LocalPredictEnvironmentErrorr   Nr   r   r   r   r   r   ,   r   r   r   c                       e Zd ZdZy)InvalidReturnValueErrorzBIndicates that the return value from local_predict has some error.Nr   r   r   r   r   r   1   s    Jr   r   c           
      H   t        j                  |||      }t        j                         j                  }|st        d      t        j                  j                         }t        j                  |d|       t        j                  d      }	t        j                  |d      xs d}
|
rd|
z   }
t        j                  |dt        j                  j                  |ddd	      |
z          |	st        d
      t         j"                  j$                  j&                  j)                         xs |	d   }d| d|g}|r|d|gz  }|t*        j,                  g|z   D cg c]  }t        j.                  |       }}t1        j2                  |t0        j4                  t0        j4                  t0        j4                  |      }|D ]B  }|j6                  j9                  t;        j<                  |      dz   j?                  d             D |j6                  jA                          |jC                         \  }}|jD                  dk7  rtG        |      |rtI        jJ                  |       	 t;        jL                  t        jN                  |            S c c}w # tP        $ r tS        d|z         w xY w)zRun ML Engine local prediction.zGYou must be running an installed Cloud SDK to perform local prediction.CLOUDSDK_ROOTpython
PYTHONPATH :libthird_partyml_sdkzVSomething has gone really wrong; we can't find a valid Python executable on your PATH.r   z--model-dirz--frameworkz--signature-name)stdinstdoutstderrenv
zutf-8z1The output for prediction is not in JSON format: )*r   ReadInstancesFromArgsr   Pathssdk_rootr   osenvironcopyr   SetEncodedValuer   SearchForExecutableOnPathGetEncodedValuepathjoinr   VALUES	ml_enginelocal_pythonGetr   __file__Encode
subprocessPopenPIPEr)   writejsondumpsencodeflushcommunicate
returncoder   r
   warningloadsDecode
ValueErrorr   )	model_dirjson_requestjson_instancestext_instances	frameworksignature_name	instancesr0   r,   python_executablesorig_py_pathpython_executablepredict_argsaargsprocinstanceoutputerrs                      r   
RunPredictr^   6   sr     55l6D6DF) \\^$$(	
&	  	

#
3: 66x@ ))#|<B,%L
	<ggll8UM8<|KM 
 '	#$ $ "((22??CCE -)!, M9E,'88L }556E
HE "#(//!
E  
H			
OOJOOJOO

$ hJJdjj*T199'BC **   "+&#	__
"3
''KK?::hoof-..)
H* 
 ?
! #57=#> ? ??s   J'J	 	J!)NNN
tensorflowN)r   
__future__r   r   r   rC   r1   r?   $googlecloudsdk.command_lib.ml_enginer   r   googlecloudsdk.corer   r	   core_exceptionsr
   r   googlecloudsdk.core.utilr   r   Errorr   r   r   r   r^   r   r   r   <module>rf      s    0 &  '  	  > B & = # * - * 5 5 44 
?#8#8 
o33 
 =A.:"B?r   