@@ -2601,49 +2601,6 @@ def array(
26012601 )
26022602
26032603
2604- async def members_recursive (
2605- store : Store ,
2606- path : str ,
2607- ) -> Any :
2608- """
2609- Recursively fetch all members of a group.
2610- """
2611- metadata_keys = ("zarr.json" ,)
2612-
2613- members_flat : tuple [tuple [str , ArrayV3Metadata | GroupMetadata ], ...] = ()
2614-
2615- keys = [key async for key in store .list_dir (path )]
2616- keys_filtered = tuple (filter (lambda v : v not in metadata_keys , keys ))
2617- doc_keys = []
2618-
2619- for key in keys_filtered :
2620- doc_keys .extend (
2621- [f"{ path .lstrip ('/' )} /{ key } /{ metadata_key } " for metadata_key in metadata_keys ]
2622- )
2623-
2624- # optimistically fetch extant metadata documents
2625- blobs = await asyncio .gather (
2626- * (store .get (key , prototype = default_buffer_prototype ()) for key in doc_keys )
2627- )
2628-
2629- to_recurse = []
2630-
2631- # insert resolved metadata_documents into members_flat
2632- for key , blob in zip (doc_keys , blobs , strict = False ):
2633- key_body = "/" .join (key .split ("/" )[:- 1 ])
2634-
2635- if blob is not None :
2636- resolved_metadata = _build_metadata_v3 (json .loads (blob .to_bytes ()))
2637- members_flat += ((key_body , resolved_metadata ),)
2638- if isinstance (resolved_metadata , GroupMetadata ):
2639- to_recurse .append (members_recursive (store , key_body ))
2640-
2641- subgroups = await asyncio .gather (* to_recurse )
2642- members_flat += tuple (subgroup for subgroup in subgroups )
2643-
2644- return members_flat
2645-
2646-
26472604async def _getitem_semaphore (
26482605 node : AsyncGroup , key : str , semaphore : asyncio .Semaphore | None
26492606) -> AsyncArray [ArrayV3Metadata ] | AsyncArray [ArrayV2Metadata ] | AsyncGroup :
0 commit comments