1515from ..services import folders as folders_service
1616from .._services .service import Service
1717
18+
1819class CodeFile (Service ):
1920 """
2021 A class for creating Python code files formatted for SAS Intelligent Decisioning.
@@ -26,7 +27,6 @@ class CodeFile(Service):
2627
2728 _SERVICE_ROOT = "/decisions"
2829
29-
3030 @classmethod
3131 def _validate_code_format_via_api (cls , code : str ) -> bool :
3232 """
@@ -48,26 +48,28 @@ def _validate_code_format_via_api(cls, code: str) -> bool:
4848 try :
4949 response = cls .post (
5050 "/commons/validations/codeFiles" ,
51- json = {"content" : code , "type" : "decisionPythonFile" }
51+ json = {"content" : code , "type" : "decisionPythonFile" },
5252 )
5353
5454 # If validation fails, the response will contain an error
55- if not response .get (' valid' , True ):
56- error = response .get (' error' , {})
55+ if not response .get (" valid" , True ):
56+ error = response .get (" error" , {})
5757 if isinstance (error , dict ):
58- error_message = error .get (' message' , str (error ))
58+ error_message = error .get (" message" , str (error ))
5959 else :
6060 error_message = str (error )
6161 raise ValueError (error_message )
62-
62+
6363 except Exception as e :
6464 # Re-raise ValueError as-is, wrap other exceptions
6565 if isinstance (e , ValueError ):
6666 raise
6767 raise ValueError (f"Code validation failed: { str (e )} " )
6868
6969 @classmethod
70- def _find_file_in_folder (cls , folder_id : str , file_name : str ) -> Union [RestObj , None ]:
70+ def _find_file_in_folder (
71+ cls , folder_id : str , file_name : str
72+ ) -> Union [RestObj , None ]:
7173 """
7274 Find a file in a specific folder by name.
7375
@@ -84,29 +86,26 @@ def _find_file_in_folder(cls, folder_id: str, file_name: str) -> Union[RestObj,
8486 File details if found, None otherwise.
8587 """
8688 from ..services import folders as folders_service
87-
89+
8890 # Search for the file in the folder
8991 file_filter = f"and(eq(name, '{ file_name } '), eq(contentType, 'file'))"
9092 response = folders_service .get (
91- f"/folders/{ folder_id } /members" ,
92- params = {"filter" : file_filter }
93+ f"/folders/{ folder_id } /members" , params = {"filter" : file_filter }
9394 )
94-
95+
9596 if len (response ) <= 0 :
9697 # No files with file_name were found.
9798 return None
98-
99- file_uri = response .get (' uri' )
100-
99+
100+ file_uri = response .get (" uri" )
101+
101102 if file_uri :
102103 return response
103-
104+
104105 return None
105-
106+
106107 @classmethod
107- def _load_python_code (
108- cls , code : Union [str , Path ]
109- ) -> str :
108+ def _load_python_code (cls , code : Union [str , Path ]) -> str :
110109 """
111110 Load and prepare a Python code file for SAS Intelligent Decisioning.
112111
@@ -205,7 +204,7 @@ def write_id_code_file(
205204 folder_obj = folders_service .get_folder (folder )
206205 if not folder_obj :
207206 raise ValueError (f"Folder '{ folder } ' not found" )
208-
207+
209208 # Verify that a file with that name doesn't exist
210209 file_obj = cls ._find_file_in_folder (folder_obj .id , file_name )
211210 if file_obj :
@@ -230,14 +229,15 @@ def write_id_code_file(
230229 # Try to clean up the uploaded file since code file creation failed
231230 try :
232231 # There is no response from deleting a file object
233- file_service .delete_file ({"id" : file_obj ['id' ]})
232+ file_service .delete_file ({"id" : file_obj ["id" ]})
234233
235234 except Exception as delete_error :
236235 raise RuntimeError (
237236 f"There was an error creating the code file: { post_error } . "
238237 f"Additionally, failed to delete the orphaned file: { delete_error } "
239238 )
240- raise RuntimeError (f"There was an error with creating the code file: { post_error } " )
241-
239+ raise RuntimeError (
240+ f"There was an error with creating the code file: { post_error } "
241+ )
242242
243243 return code_file
0 commit comments