class_docstr: Base class for an Adapter.
  
  There are two types of adapters:
  
  - :class:`.BaseSyncAdapter` -- synchronous adapter,
  - :class:`.BaseAsyncAdapter` -- asynchronous (asyncio) adapter.
  
  Concrete adapter implementations must extend one of the two
  base adapters above.
  
  See :attr:`geopy.geocoders.options.default_adapter_factory`
  for details on how to specify an adapter to be used by geocoders.
docstr: Make a GET request and return the response as string.
  
  This method should not raise any exceptions other than these:
  
  - :class:`geopy.adapters.AdapterHTTPError` should be raised if the response
    was successfully retrieved but the status code was non-successful.
  - :class:`geopy.exc.GeocoderTimedOut` should be raised when the request
    times out.
  - :class:`geopy.exc.GeocoderUnavailable` should be raised when the target
    host is unreachable.
  - :class:`geopy.exc.GeocoderServiceError` is the least specific error
    in the exceptions hierarchy and should be raised in any other cases.
  
  :param str url: The target URL.
  
  :param float timeout:
      See :attr:`geopy.geocoders.options.default_timeout`.
  
  :param dict headers: A dict with custom HTTP request headers.
docstr_tok: ["Make","a","GET","request","and","return","the","response","as","string",".","This","method","should","not","raise","any","exceptions","other","than","these",":","-",":","class",":","`","geopy.adapters.AdapterHTTPError","`","should","be","raised","if","the","response","was","successfully","retrieved","but","the","status","code","was","non-successful",".","-",":","class",":","`","geopy.exc.GeocoderTimedOut","`","should","be","raised","when","the","request","times","out",".","-",":","class",":","`","geopy.exc.GeocoderUnavailable","`","should","be","raised","when","the","target","host","is","unreachable",".","-",":","class",":","`","geopy.exc.GeocoderServiceError","`","is","the","least","specific","error","in","the","exceptions","hierarchy","and","should","be","raised","in","any","other","cases",".",":","param","str","url",":","The","target","URL",".",":","param","float","timeout",":","See",":","attr",":","`","geopy.geocoders.options.default_timeout","`",".",":","param","dict","headers",":","A","dict","with","custom","HTTP","request","headers","."]
code: def get_text(self, url, *, timeout, headers):
      """Make a GET request and return the response as string.
  
      This method should not raise any exceptions other than these:
  
      - :class:`geopy.adapters.AdapterHTTPError` should be raised if the response
        was successfully retrieved but the status code was non-successful.
      - :class:`geopy.exc.GeocoderTimedOut` should be raised when the request
        times out.
      - :class:`geopy.exc.GeocoderUnavailable` should be raised when the target
        host is unreachable.
      - :class:`geopy.exc.GeocoderServiceError` is the least specific error
        in the exceptions hierarchy and should be raised in any other cases.
  
      :param str url: The target URL.
  
      :param float timeout:
          See :attr:`geopy.geocoders.options.default_timeout`.
  
      :param dict headers: A dict with custom HTTP request headers.
      """
  
imports: import abc
  import asyncio
  import contextlib
  import email
  import json
  import ssl
  import time
  import warnings
  from socket import timeout
  from ssl import SSLError
  from urllib.error import HTTPError
  from urllib.parse import urlparse
  from urllib.request import HTTPSHandler, ProxyHandler, Request, URLError, build_opener, getproxies
  from geopy.exc import GeocoderParseError, GeocoderServiceError, GeocoderTimedOut, GeocoderUnavailable, GeopyError
  from geopy.util import logger
label_desc: Use image node_id 3 for calling the BaseAdapter obj's underlying member method code with example usage: obj.get_text(url) without return types