class_docstr: Specialise :class:`cartopy.io.Downloader` to download the zipped
  GSHHS shapefiles and extract them to the defined location.
  
  The keys which should be passed through when using the ``format_dict``
  are ``scale`` (a single character indicating the resolution) and ``level``
  (a number indicating the type of feature).
class_docstr_tok: ["Specialise",":","class",":","`","cartopy.io.Downloader","`","to","download","the","zipped","GSHHS","shapefiles","and","extract","them","to","the","defined","location",".","The","keys","which","should","be","passed","through","when","using","the","``","format_dict","``","are","``","scale","``","(","a","single","character","indicating","the","resolution",")","and","``","level","``","(","a","number","indicating","the","type","of","feature",")","."]
docstr: Return a GSHHSShpDownloader instance that expects (and if necessary
  downloads and installs) shapefiles in the data directory of the
  cartopy installation.
  
  Typically, a user will not need to call this staticmethod.
  
  To find the path template of the GSHHSShpDownloader:
  
      >>> gshhs_dnldr = GSHHSShpDownloader.default_downloader()
      >>> print(gshhs_dnldr.target_path_template)
      {config[data_dir]}/shapefiles/gshhs/{scale}/GSHHS_{scale}_L{level}.shp
code: def default_downloader():
      """
          Return a GSHHSShpDownloader instance that expects (and if necessary
          downloads and installs) shapefiles in the data directory of the
          cartopy installation.
  
          Typically, a user will not need to call this staticmethod.
  
          To find the path template of the GSHHSShpDownloader:
  
              >>> gshhs_dnldr = GSHHSShpDownloader.default_downloader()
              >>> print(gshhs_dnldr.target_path_template)
              {config[data_dir]}/shapefiles/gshhs/{scale}/\
  GSHHS_{scale}_L{level}.shp
  
          """
      default_spec = (
          "shapefiles",
          "gshhs",
          "{scale}",
          "GSHHS_{scale}_L{level}.shp",
      )
      gshhs_path_template = str(
          Path("{config[data_dir]}").joinpath(*default_spec)
      )
      pre_path_tmplt = str(
          Path("{config[pre_existing_data_dir]}").joinpath(
              *default_spec
          )
      )
      return GSHHSShpDownloader(
          target_path_template=gshhs_path_template,
          pre_downloaded_path_template=pre_path_tmplt,
      )
  
imports: import io
  import itertools
  from pathlib import Path
  from urllib.error import HTTPError
  import shapefile
  import shapely.geometry
  from cartopy import config
  from cartopy.io import Downloader
label_desc: Use image node_id 5 for calling the GSHHSShpDownloader obj's underlying member method code with example usage: obj.default_downloader() and returns: GSHHSShpDownloader