class_docstr: Geocoder using the Google Maps v3 API.
  
  Documentation at:
      https://developers.google.com/maps/documentation/geocoding/
  
  Pricing details:
      https://developers.google.com/maps/documentation/geocoding/usage-and-billing
code: def _format_components_param(self, components):
      component_items = []
  
      if isinstance(components, collections.abc.Mapping):
          component_items = components.items()
      elif isinstance(
          components, collections.abc.Sequence
      ) and not isinstance(components, (str, bytes)):
          component_items = components
      else:
          raise ValueError(
              "`components` parameter must be of type `dict` or `list`"
          )
  
      return "|".join(":".join(item) for item in component_items)
  
imports: import base64
  import collections.abc
  import hashlib
  import hmac
  from calendar import timegm
  from datetime import datetime
  from functools import partial
  from urllib.parse import urlencode
  from geopy.exc import ConfigurationError, GeocoderQueryError, GeocoderQuotaExceeded, GeocoderServiceError, GeocoderUnavailable
  from geopy.geocoders.base import DEFAULT_SENTINEL, Geocoder
  from geopy.location import Location
  from geopy.timezone import ensure_pytz_is_installed, from_timezone_name
  from geopy.util import logger
label_desc: Use image node_id 3 for calling the GoogleV3 obj's underlying member method code with example usage: obj._format_components_param(components) and returns: str