77* returns an array from ``numpy.asanyarray(obj)``; 
88* has an attribute or property ``shape``. 
99""" 
10+ from  __future__ import  annotations 
11+ 
12+ import  typing  as  ty 
1013
1114import  numpy  as  np 
15+ import  numpy .typing  as  npt 
1216
17+ from  .arrayproxy  import  ArrayLike 
1318from  .deprecated  import  deprecate_with_version 
14- from  .filebasedimages  import  FileBasedImage 
19+ from  .filebasedimages  import  FileBasedHeader ,  FileBasedImage ,  FileMap ,  FileSpec 
1520
1621
1722class  DataobjImage (FileBasedImage ):
1823    """Template class for images that have dataobj data stores""" 
1924
20-     def  __init__ (self , dataobj , header = None , extra = None , file_map = None ):
25+     _data_cache : np .ndarray  |  None 
26+     _fdata_cache : np .ndarray  |  None 
27+ 
28+     def  __init__ (
29+         self ,
30+         dataobj : ArrayLike ,
31+         header : FileBasedHeader  |  ty .Mapping  |  None  =  None ,
32+         extra : ty .Mapping  |  None  =  None ,
33+         file_map : FileMap  |  None  =  None ,
34+     ):
2135        """Initialize dataobj image 
2236
2337        The datobj image is a combination of (dataobj, header), with optional 
@@ -40,11 +54,11 @@ def __init__(self, dataobj, header=None, extra=None, file_map=None):
4054        """ 
4155        super ().__init__ (header = header , extra = extra , file_map = file_map )
4256        self ._dataobj  =  dataobj 
43-         self ._fdata_cache  =  None 
4457        self ._data_cache  =  None 
58+         self ._fdata_cache  =  None 
4559
4660    @property  
47-     def  dataobj (self ):
61+     def  dataobj (self )  ->   ArrayLike :
4862        return  self ._dataobj 
4963
5064    @deprecate_with_version ( 
@@ -202,7 +216,11 @@ def get_data(self, caching='fill'):
202216            self ._data_cache  =  data 
203217        return  data 
204218
205-     def  get_fdata (self , caching = 'fill' , dtype = np .float64 ):
219+     def  get_fdata (
220+         self ,
221+         caching : ty .Literal ['fill' , 'unchanged' ] =  'fill' ,
222+         dtype : npt .DTypeLike  =  np .float64 ,
223+     ) ->  np .ndarray :
206224        """Return floating point image data with necessary scaling applied 
207225
208226        The image ``dataobj`` property can be an array proxy or an array.  An 
@@ -351,7 +369,7 @@ def get_fdata(self, caching='fill', dtype=np.float64):
351369        return  data 
352370
353371    @property  
354-     def  in_memory (self ):
372+     def  in_memory (self )  ->   bool :
355373        """True when any array data is in memory cache 
356374
357375        There are separate caches for `get_data` reads and `get_fdata` reads. 
@@ -363,7 +381,7 @@ def in_memory(self):
363381            or  self ._data_cache  is  not None 
364382        )
365383
366-     def  uncache (self ):
384+     def  uncache (self )  ->   None :
367385        """Delete any cached read of data from proxied data 
368386
369387        Remember there are two types of images: 
@@ -392,15 +410,21 @@ def uncache(self):
392410        self ._data_cache  =  None 
393411
394412    @property  
395-     def  shape (self ):
413+     def  shape (self )  ->   tuple [ int , ...] :
396414        return  self ._dataobj .shape 
397415
398416    @property  
399-     def  ndim (self ):
417+     def  ndim (self )  ->   int :
400418        return  self ._dataobj .ndim 
401419
402420    @classmethod  
403-     def  from_file_map (klass , file_map , * , mmap = True , keep_file_open = None ):
421+     def  from_file_map (
422+         klass ,
423+         file_map : FileMap ,
424+         * ,
425+         mmap : bool  |  ty .Literal ['c' , 'r' ] =  True ,
426+         keep_file_open : bool  |  None  =  None ,
427+     ):
404428        """Class method to create image from mapping in ``file_map`` 
405429
406430        Parameters 
@@ -433,7 +457,13 @@ def from_file_map(klass, file_map, *, mmap=True, keep_file_open=None):
433457        raise  NotImplementedError 
434458
435459    @classmethod  
436-     def  from_filename (klass , filename , * , mmap = True , keep_file_open = None ):
460+     def  from_filename (
461+         klass ,
462+         filename : FileSpec ,
463+         * ,
464+         mmap : bool  |  ty .Literal ['c' , 'r' ] =  True ,
465+         keep_file_open : bool  |  None  =  None ,
466+     ):
437467        """Class method to create image from filename `filename` 
438468
439469        Parameters 
0 commit comments