class_docstr: The fallback adapter which uses urllib from the Python standard
  library, see :func:`urllib.request.urlopen`.
  
  urllib doesn't support keep-alives, request retries,
  doesn't persist Cookies and is HTTP/1.1 only.
  
  urllib was the only available option
  for making requests in geopy 1.x, so this adapter behaves the same
  as geopy 1.x in terms of HTTP requests.
code: def __init__(self, *, proxies, ssl_context):
      proxies = _normalize_proxies(proxies)
      super().__init__(proxies=proxies, ssl_context=ssl_context)
  
      # `ProxyHandler` should be present even when actually there're
      # no proxies. `build_opener` contains it anyway. By specifying
      # it here explicitly we can disable system proxies (i.e.
      # from HTTP_PROXY env var) by setting `proxies` to `{}`.
      # Otherwise, if we didn't specify ProxyHandler for empty
      # `proxies` here, the `build_opener` would have used one internally
      # which could have unwillingly picked up the system proxies.
      opener = build_opener(
          HTTPSHandler(context=ssl_context),
          ProxyHandler(proxies),
      )
      self.urlopen = opener.open
  
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 1 to create a new URLLibAdapter object from inherited base classes: BaseSyncAdapter with example: obj = URLLibAdapter()