docstr: Return boundaries for given regions in form of GeoDataFrame.
  
  Parameters
  ----------
  resolution: [str | int | None]
      Boundaries resolution.
  
      int: [1-15]
          15 - maximum quality, 1 - maximum performance:
           - 1-3 for world scale view
           - 4-6 for country scale view
           - 7-9 for state scale view
           - 10-12 for county scale view
           - 13-15 for city scale view
  
      str: ['world', 'country', 'state', 'county', 'city']
          'city' - maximum quality, 'world'  - maximum performance.
          Corresponding numeric resolutions:
           - 'world' - 2
           - 'country' - 5
           - 'state' - 8
           - 'county' - 11
           - 'city' - 14
  
      Kind of area expected to be displayed. Resolution depends on a number of objects - single state is a 'state'
      scale view, while 50 states is a 'country' scale view.
  
      It is allowed to use any kind of resolution for any regions, i.e. 'city' for state to see more detailed
      boundary (when need to show zoomed part), or 'world' (when used for small preview).
  
      None:
          Autodetection. Uses level_kind that was used for geocoding this regions object and number of objects in it.
          Prefers performance over qulity. It's expected to get pixelated geometries with autodetection.
          Use explicit resolution for better quality.
  
          Resolution for countries:
              If n < 3 => 3
              else => 1
  
          Resolution for states:
              If n < 3 => 7
              If n < 10 => 4
              else => 2
  
          Resolution for counties:
              If n < 5 => 10
              If n < 20 => 8
              else => 3
  
          Resolution for cities:
              If n < 5 => 13
              If n < 50 => 4
              else => 3
  
  inc_res: int
      Increase auto-detected resolution.
  
  Examples
  --------
  .. jupyter-execute::
  
      >>> from lets_plot.geo_data import *
      >>> rb = regions_country(['germany', 'russia']).boundaries()
      >>> rb
code: def boundaries(
      self,
      resolution: Optional[Union[int, str, Resolution]] = None,
      inc_res: int = 0,
  ):
      """
      Return boundaries for given regions in form of GeoDataFrame.
  
      Parameters
      ----------
      resolution: [str | int | None]
          Boundaries resolution.
  
          int: [1-15]
              15 - maximum quality, 1 - maximum performance:
               - 1-3 for world scale view
               - 4-6 for country scale view
               - 7-9 for state scale view
               - 10-12 for county scale view
               - 13-15 for city scale view
  
          str: ['world', 'country', 'state', 'county', 'city']
              'city' - maximum quality, 'world'  - maximum performance.
              Corresponding numeric resolutions:
               - 'world' - 2
               - 'country' - 5
               - 'state' - 8
               - 'county' - 11
               - 'city' - 14
  
          Kind of area expected to be displayed. Resolution depends on a number of objects - single state is a 'state'
          scale view, while 50 states is a 'country' scale view.
  
          It is allowed to use any kind of resolution for any regions, i.e. 'city' for state to see more detailed
          boundary (when need to show zoomed part), or 'world' (when used for small preview).
  
          None:
              Autodetection. Uses level_kind that was used for geocoding this regions object and number of objects in it.
              Prefers performance over qulity. It's expected to get pixelated geometries with autodetection.
              Use explicit resolution for better quality.
  
              Resolution for countries:
                  If n < 3 => 3
                  else => 1
  
              Resolution for states:
                  If n < 3 => 7
                  If n < 10 => 4
                  else => 2
  
              Resolution for counties:
                  If n < 5 => 10
                  If n < 20 => 8
                  else => 3
  
              Resolution for cities:
                  If n < 5 => 13
                  If n < 50 => 4
                  else => 3
  
      inc_res: int
          Increase auto-detected resolution.
  
      Examples
      --------
      .. jupyter-execute::
  
          >>> from lets_plot.geo_data import *
          >>> rb = regions_country(['germany', 'russia']).boundaries()
          >>> rb
      """
      from lets_plot.geo_data.to_geo_data_frame import (
          BoundariesGeoDataFrame,
      )
  
      if resolution is None:
          autodetected_resolution = _autodetect_resolution(
              self._level_kind, len(self._geocoded_features)
          )
          int_resolution = min(
              Resolution.city_high.value,
              autodetected_resolution + inc_res,
          )
      elif isinstance(resolution, int):
          int_resolution = resolution
      elif isinstance(resolution, Resolution):
          int_resolution = resolution.value
      elif isinstance(resolution, str):
          int_resolution = _parse_resolution(resolution).value
      else:
          raise ValueError(
              "Invalid resolution: " + type(resolution).__name__
          )
  
      if (
          int_resolution < Resolution.world_low.value
          or int_resolution > Resolution.city_high.value
      ):
          raise ValueError(
              "Resolution is out of range. Expected to be from ({}) to ({}), but was ({}).".format(
                  Resolution.world_low.value,
                  Resolution.city_high.value,
                  int_resolution,
              )
          )
  
      return self._execute(
          self._request_builder(PayloadKind.boundaries).set_resolution(
              int_resolution
          ),
          BoundariesGeoDataFrame(),
      )
  
imports: import enum
  from abc import abstractmethod
  from collections.abc import Iterable
  from typing import List, Optional, Union, Dict
  from pandas import DataFrame, Series
  from lets_plot.geo_data_internals.constants import DF_COLUMN_HIGHLIGHTS, DF_COLUMN_COUNTRY, DF_COLUMN_STATE, DF_COLUMN_COUNTY, DF_COLUMN_CITY, DF_COLUMN_ID, DF_COLUMN_FOUND_NAME, DF_COLUMN_POSITION, DF_COLUMN_LIMIT, DF_COLUMN_CENTROID
  from .gis.geocoding_service import GeocodingService
  from .gis.request import PayloadKind, RequestBuilder, RequestKind, MapRegion, RegionQuery
  from .gis.response import Answer, GeocodedFeature, Namesake, AmbiguousFeature, LevelKind
  from .gis.response import SuccessResponse, Response, AmbiguousResponse, ErrorResponse
  from .type_assertion import assert_type, assert_list_type
label_desc: Use image node_id 7 for calling the Geocodes obj's underlying member method code with example usage: obj.boundaries(resolution, inc_res) and returns: self