1414"""Classes and utilities for using and creating artifacts in components.""" 
1515
1616import  enum 
17+ import  math 
1718import  os 
1819from  typing  import  Dict , List , Optional , Type 
1920import  warnings 
@@ -121,8 +122,8 @@ def convert_local_path_to_remote_path(path: str) -> str:
121122        return  RemotePrefix .S3 .value  +  path [len (_S3_LOCAL_MOUNT_PREFIX ):]
122123    elif  path .startswith (_OCI_LOCAL_MOUNT_PREFIX ):
123124        remote_path  =  path [len (_OCI_LOCAL_MOUNT_PREFIX ):].replace ('_' , '/' )
124-         if  remote_path .endswith (" /models"  ):
125-             remote_path  =  remote_path [:- len (" /models"  )]
125+         if  remote_path .endswith (' /models'  ):
126+             remote_path  =  remote_path [:- len (' /models'  )]
126127
127128        return  RemotePrefix .OCI .value  +  remote_path 
128129
@@ -148,10 +149,10 @@ def _get_framework(self) -> str:
148149
149150    @property  
150151    def  path (self ) ->  str :
151-         if  self .uri .startswith (" oci://"  ):
152+         if  self .uri .startswith (' oci://'  ):
152153            # Modelcar container images are expected to have the model files stored in /models 
153154            # https://github.com/kserve/kserve/blob/v0.14.1/pkg/webhook/admission/pod/storage_initializer_injector.go#L732 
154-             return  self ._get_path () +  " /models" 
155+             return  self ._get_path () +  ' /models' 
155156
156157        return  self ._get_path ()
157158
@@ -191,6 +192,10 @@ def log_metric(self, metric: str, value: float) -> None:
191192          metric: The metric key. 
192193          value: The metric value. 
193194        """ 
195+         if  math .isnan (value ):
196+             warnings .warn (f'Metric "{ metric }  " is NaN and will be skipped.' , stacklevel = 2 )
197+             return 
198+ 
194199        self .metadata [metric ] =  value 
195200
196201
0 commit comments