@@ -160,6 +160,75 @@ def create_package_from_astore(table):
160
160
return zip_file
161
161
162
162
163
+
164
+ def _create_files_from_astore (table ):
165
+ """Generate files for
166
+
167
+ Parameters
168
+ ----------
169
+ table
170
+
171
+ Returns
172
+ -------
173
+
174
+ """
175
+ if swat is None :
176
+ raise RuntimeError ("The 'swat' package is required to work with "
177
+ "ASTORE models." )
178
+
179
+ assert isinstance (table , swat .CASTable )
180
+
181
+ sess = table .session .get_connection ()
182
+ sess .loadactionset ('astore' )
183
+
184
+ result = sess .astore .describe (rstore = table , epcode = True )
185
+ astore = sess .astore .download (rstore = table )
186
+ if not hasattr (astore , "blob" ):
187
+ raise ValueError ("Failed to download binary data for ASTORE '%s'."
188
+ % astore )
189
+ astore = astore .blob
190
+
191
+ astore = bytes (astore ) # Convert from SWAT blob type
192
+
193
+ # Raise error if describe action fails
194
+ if result .status_code != 0 :
195
+ raise RuntimeError (result )
196
+
197
+ astore_key = result .Key .Key [0 ].strip ()
198
+ ep_ds2 = result .epcode
199
+ package_ds2 = _generate_package_code (result )
200
+ model_properties = _get_model_properties (result )
201
+ input_vars = [get_variable_properties (var )
202
+ for var in result .InputVariables .itertuples ()]
203
+ output_vars = [get_variable_properties (var )
204
+ for var in result .OutputVariables .itertuples ()]
205
+ astore_filename = '_' + uuid .uuid4 ().hex [:25 ].upper ()
206
+
207
+ # Copy the ASTORE table to the ModelStore.
208
+ # Raise an error if the action fails
209
+ with swat .options (exception_on_severity = 2 ):
210
+ table .save (name = astore_filename , caslib = 'ModelStore' , replace = True )
211
+
212
+ file_metadata = [{'role' : 'analyticStore' , 'name' : '' },
213
+ {'role' : 'score' , 'name' : 'dmcas_packagescorecode.sas' }]
214
+
215
+ astore_metadata = [{'name' : astore_filename ,
216
+ 'caslib' : 'ModelStore' ,
217
+ 'uri' : '/dataTables/dataSources/cas~fs~cas-shared-default~fs~ModelStore/tables/{}' .format (astore_filename ),
218
+ 'key' : astore_key }]
219
+
220
+ return {
221
+ 'dmcas_packagescorecode.sas' : '\n ' .join (package_ds2 ),
222
+ 'dmcas_epscorecode.sas' : ep_ds2 ,
223
+ astore_filename : astore ,
224
+ 'ModelProperties.json' : model_properties ,
225
+ 'fileMetadata.json' : file_metadata ,
226
+ 'AstoreMetadata.json' : astore_metadata ,
227
+ 'inputVar.json' : input_vars ,
228
+ 'outputVar.json' : output_vars
229
+ }
230
+
231
+
163
232
def _build_zip_from_files (files ):
164
233
"""Create a ZIP file containing the provided files.
165
234
0 commit comments