@@ -33,95 +33,38 @@ class InstanceCacheInspector:
3333 Helper class to inspect instance caches of filesystem classes in tests.
3434 """
3535
36- @staticmethod
37- def classes_from_refs (
38- cls_reference : "tuple[str | type[fsspec.AbstractFileSystem], ...]" ,
39- / ,
40- * ,
41- empty_is_all : bool = True ,
42- ) -> deque [type [fsspec .AbstractFileSystem ]]:
36+ def clear (self ) -> None :
4337 """
44- Convert class references (strings or types) to a deque of filesystem classes.
45-
46- Parameters
47- ----------
48- cls_reference:
49- Tuple of class references as strings or types.
50- Supports fqns, protocol names, or the class types themselves.
51- empty_is_all:
52- If True and no classes are specified, include all imported filesystem classes.
53-
54- Returns
55- -------
56- fs_classes:
57- Deque of filesystem classes corresponding to the provided references.
38+ Clear instance caches of all currently imported filesystem classes.
5839 """
59- classes : deque [type [fsspec .AbstractFileSystem ]] = deque ()
60-
61- for ref in cls_reference :
62- if isinstance (ref , str ):
63- try :
64- cls = fsspec .get_filesystem_class (ref )
65- except ValueError :
66- module_name , _ , class_name = ref .rpartition ("." )
67- module = __import__ (module_name , fromlist = [class_name ])
68- cls = getattr (module , class_name )
69- classes .append (cls )
70- else :
71- classes .append (ref )
72- if empty_is_all and not classes :
73- classes .append (fsspec .spec .AbstractFileSystem )
74- return classes
75-
76- def clear (
77- self ,
78- * cls_reference : "str | type[fsspec.AbstractFileSystem]" ,
79- recursive : bool = True ,
80- ) -> None :
81- """
82- Clear instance caches of specified filesystem classes.
83- """
84- classes = self .classes_from_refs (cls_reference )
85- # Clear specified classes and optionally their subclasses
40+ classes = deque ([fsspec .spec .AbstractFileSystem ])
8641 while classes :
8742 cls = classes .popleft ()
8843 cls .clear_instance_cache ()
89- if recursive :
90- subclasses = cls .__subclasses__ ()
91- classes .extend (subclasses )
92-
93- def gather_counts (
94- self ,
95- * cls_reference : "str | type[fsspec.AbstractFileSystem]" ,
96- omit_zero : bool = True ,
97- recursive : bool = True ,
98- ) -> dict [str , int ]:
44+ classes .extend (cls .__subclasses__ ())
45+
46+ def gather_counts (self , * , omit_zero : bool = True ) -> dict [str , int ]:
9947 """
100- Gather counts of filesystem instances in the instance caches of all loaded classes.
48+ Gather counts of filesystem instances in the instance caches
49+ of all currently imported filesystem classes.
10150
10251 Parameters
10352 ----------
104- cls_reference:
105- class references as strings or types.
10653 omit_zero:
10754 Whether to omit instance types with no cached instances.
108- recursive:
109- Whether to include subclasses of the specified classes.
11055 """
11156 out : dict [str , int ] = {}
112- classes = self . classes_from_refs ( cls_reference )
57+ classes = deque ([ fsspec . spec . AbstractFileSystem ] )
11358 while classes :
11459 cls = classes .popleft ()
115- count = len (cls ._cache )
60+ count = len (cls ._cache ) # there is no public interface for the cache
11661 # note: skip intermediate AbstractFileSystem subclasses
11762 # if they proxy the protocol attribute via a property.
11863 if isinstance (cls .protocol , (Sequence , str )):
11964 key = cls .protocol if isinstance (cls .protocol , str ) else cls .protocol [0 ]
12065 if count or not omit_zero :
12166 out [key ] = count
122- if recursive :
123- subclasses = cls .__subclasses__ ()
124- classes .extend (subclasses )
67+ classes .extend (cls .__subclasses__ ())
12568 return out
12669
12770
0 commit comments