class_docstr: Abstract base class for storage managers. Storage managers need to
  support five operations:
  
     1.  Upload an existing directory to storage
     2.  Download from storage to a target directory
     3.  Provide a path to write to, in order to upload
     4.  Provide a path to read from, after a download
     5.  Delete a directory in storage
  
  Advanced methods 3. and 4.  allow shared_fs to do optimized zero-copy checkpointing.
  Cloud-based implementations can subclass the CloudStorageManager, which will define 3. and 4. in
  terms of 1. and 2.
  
  Configuration for storage managers is represented as a dictionary of key value pairs. The
  primary key in the dictionary is the `type` defining which storage backend to use. Additional
  keys may be required to instantiate some implementations of the storage manager.
docstr: Prepare a local directory to be written to the storage backend.
docstr_tok: ["Prepare","a","local","directory","to","be","written","to","the","storage","backend","."]
code: def store_path(self, dst: str) -> Iterator[pathlib.Path]:
      """
      Prepare a local directory to be written to the storage backend.
      """
  
      path = self.pre_store_path(dst)
      yield path
      self.post_store_path(path, dst)
  
imports: import abc
  import contextlib
  import copy
  import glob
  import os
  import pathlib
  import tempfile
  import urllib
  from typing import Any, Callable, Dict, Iterator, List, Optional, Set, Union
  from determined import util
  from determined.common import storage
label_desc: Use image node_id 5 for calling the StorageManager obj's underlying member method code with example usage: obj.store_path(dst) without return types