class_docstr: This class represents an image file
  
  A file is considered as a single URL.
  
  A single file can contain multiple planes.
  
  This class assists in extracting information about the contents of
  a single file.
code: def file_extension(self):
      return os.path.splitext(self.path)[-1].lower()
  
imports: import os
  import urllib.parse
  import urllib.request
  import logging
  from functools import cached_property
  import numpy
  from cellprofiler_core.constants.image import MD_SIZE_S, MD_SIZE_C, MD_SIZE_Z, MD_SIZE_T, MD_SIZE_Y, MD_SIZE_X, MD_SIZE_KEYS, MD_SERIES_NAME
  from cellprofiler_core.constants.modules.metadata import COL_PATH, COL_SERIES, COL_INDEX, COL_URL
  from cellprofiler_core.constants.measurement import RESERVED_METADATA_KEYS
  from cellprofiler_core.reader import get_image_reader, Reader
  from cellprofiler_core.utilities.image import url_to_modpath, is_file_url
label_desc: Use image node_id 16 for calling the ImageFile obj's underlying member method code with example usage: obj.file_extension() and returns: os