class_docstr: Geocoder using the Woosmap Address API.
  
  Documentation at:
      https://developers.woosmap.com/products/address-api/geocode/
  
  .. versionadded:: 2.4
class_docstr_tok: ["Geocoder","using","the","Woosmap","Address","API",".","Documentation","at",":","https",":","\/\/developers.woosmap.com\/products\/address-api\/geocode\/","..","versionadded",":",":","2.4"]
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)
  
file_path: geopy/geopy/geocoders/woosmap.py
imports: import collections.abc
  from functools import partial
  from urllib.parse import urlencode
  from geopy.exc import GeocoderQueryError, GeocoderServiceError, GeocoderUnavailable
  from geopy.geocoders.base import DEFAULT_SENTINEL, Geocoder
  from geopy.location import Location
  from geopy.util import logger
label_desc: Use image node_id 2 for calling the Woosmap obj's underlying member method code with example usage: obj._format_components_param(components) and returns: str