class_docstr: Implementation of a PathLike file object, that can be opened.
  
  Giving the filenames to :class:`Scene` with valid transfer protocols will automatically
  use this class so manual usage of this class is needed mainly for fine-grained control.
  
  This class is made to be used in conjuction with fsspec or s3fs. For example::
  
      from satpy import Scene
  
      import fsspec
      filename = 'noaa-goes16/ABI-L1b-RadC/2019/001/17/*_G16_s20190011702186*'
  
      the_files = fsspec.open_files("simplecache::s3://" + filename, s3={'anon': True})
  
      from satpy.readers import FSFile
      fs_files = [FSFile(open_file) for open_file in the_files]
  
      scn = Scene(filenames=fs_files, reader='abi_l1b')
      scn.load(['true_color_raw'])
class_docstr_tok: ["Implementation","of","a","PathLike","file","object",",","that","can","be","opened",".","Giving","the","filenames","to",":","class",":","`","Scene","`","with","valid","transfer","protocols","will","automatically","use","this","class","so","manual","usage","of","this","class","is","needed","mainly","for","fine-grained","control",".","This","class","is","made","to","be","used","in","conjuction","with","fsspec","or","s3fs",".","For","example",":",":","from","satpy","import","Scene","import","fsspec","filename","=","'noaa-goes16\/ABI-L1b-RadC\/2019\/001\/17\/","*","_G16_s20190011702186","*","'","the_files","=","fsspec.open_files","(","``","simplecache",":",":s3",":","\/\/","''","+","filename",",","s3=","{","'anon","'",":","True","}",")","from","satpy.readers","import","FSFile","fs_files","=","[","FSFile","(","open_file",")","for","open_file","in","the_files","]","scn","=","Scene","(","filenames=fs_files",",","reader='abi_l1b","'",")","scn.load","(","[","'true_color_raw","'","]",")"]
docstr: Implement hashing.
  
  Make FSFile objects hashable, so that they can be used in sets.  Some
  parts of satpy and perhaps others use sets of filenames (strings or
  pathlib.Path), or maybe use them as dictionary keys.  This requires
  them to be hashable.  To ensure FSFile can work as a drop-in
  replacement for strings of Path objects to represent the location of
  blob of data, FSFile should be hashable too.
  
  Returns the hash, computed from the hash of the filename and the hash
  of the filesystem.
docstr_tok: ["Implement","hashing",".","Make","FSFile","objects","hashable",",","so","that","they","can","be","used","in","sets",".","Some","parts","of","satpy","and","perhaps","others","use","sets","of","filenames","(","strings","or","pathlib.Path",")",",","or","maybe","use","them","as","dictionary","keys",".","This","requires","them","to","be","hashable",".","To","ensure","FSFile","can","work","as","a","drop-in","replacement","for","strings","of","Path","objects","to","represent","the","location","of","blob","of","data",",","FSFile","should","be","hashable","too",".","Returns","the","hash",",","computed","from","the","hash","of","the","filename","and","the","hash","of","the","filesystem","."]
code: def __hash__(self):
      """Implement hashing.
  
      Make FSFile objects hashable, so that they can be used in sets.  Some
      parts of satpy and perhaps others use sets of filenames (strings or
      pathlib.Path), or maybe use them as dictionary keys.  This requires
      them to be hashable.  To ensure FSFile can work as a drop-in
      replacement for strings of Path objects to represent the location of
      blob of data, FSFile should be hashable too.
  
      Returns the hash, computed from the hash of the filename and the hash
      of the filesystem.
      """
      try:
          fshash = hash(self._fs)
      except TypeError:  # fsspec < 0.8.8 for CachingFileSystem
          fshash = hash(pickle.dumps(self._fs))  # nosec B403
      return hash(self._file) ^ fshash
  
imports: from __future__ import annotations
  import logging
  import os
  import pathlib
  import pickle
  import warnings
  from datetime import datetime, timedelta
  from functools import total_ordering
  import yaml
  from yaml import UnsafeLoader
  from satpy._config import config_search_paths, get_entry_points_config_dirs, glob_config
  from .yaml_reader import AbstractYAMLReader
  from .yaml_reader import load_yaml_configs
label_desc: Use image node_id 9 for calling the FSFile obj's underlying member method code with example usage: obj.__hash__() and returns: unknown