class_docstr: Do not use this class explicitly.
  
  Instead you should construct its objects with special functions:
  `geocode()`, `geocode_cities()`, `geocode_counties()`, `geocode_states()`,
  `geocode_countries()`, `reverse_geocode()`.
class_docstr_tok: ["Do","not","use","this","class","explicitly",".","Instead","you","should","construct","its","objects","with","special","functions",":","`","geocode","(",")","`",",","`","geocode_cities","(",")","`",",","`","geocode_counties","(",")","`",",","`","geocode_states","(",")","`",",","`","geocode_countries","(",")","`",",","`","reverse_geocode","(",")","`","."]
docstr: Set parents for 'country' level to resolve an ambiguity
  or to join geometry with data via multi-key.
  
  Parameters
  ----------
  countries : str or `Geocoder` or list
      Parents for 'country' level.
      If it is of str type then it should be the country name.
      If it is of `Geocoder` type then it must contain the same number
      of values as the number of names of `Geocoder`.
      If it is of list type then it must be the same size
      as the number of names of `Geocoder`.
  
  Returns
  -------
  `NamesGeocoder`
      Geocoder object specification.
  
  Examples
  --------
  .. jupyter-execute::
      :linenos:
      :emphasize-lines: 5
  
      from IPython.display import display
      from lets_plot import *
      from lets_plot.geo_data import *
      LetsPlot.setup_html()
      cities = geocode_cities(['Boston', 'Boston']).countries(['US', 'UK']).get_centroids()
      display(cities)
      ggplot() + geom_livemap() + geom_point(data=cities, color='red', size=5)
docstr_tok: ["Set","parents","for","'country","'","level","to","resolve","an","ambiguity","or","to","join","geometry","with","data","via","multi-key",".","Parameters","--","--","--","--","--","countries",":","str","or","`","Geocoder","`","or","list","Parents","for","'country","'","level",".","If","it","is","of","str","type","then","it","should","be","the","country","name",".","If","it","is","of","`","Geocoder","`","type","then","it","must","contain","the","same","number","of","values","as","the","number","of","names","of","`","Geocoder","`",".","If","it","is","of","list","type","then","it","must","be","the","same","size","as","the","number","of","names","of","`","Geocoder","`",".","Returns","--","--","--","-","`","NamesGeocoder","`","Geocoder","object","specification",".","Examples","--","--","--","--","..","jupyter-execute",":",":",":","linenos",":",":","emphasize-lines",":","5","from","IPython.display","import","display","from","lets_plot","import","*","from","lets_plot.geo_data","import","*","LetsPlot.setup_html","(",")","cities","=","geocode_cities","(","[","'Boston","'",",","'Boston","'","]",")",".countries","(","[","'US","'",",","'UK","'","]",")",".get_centroids","(",")","display","(","cities",")","ggplot","(",")","+","geom_livemap","(",")","+","geom_point","(","data=cities",",","color='red","'",",","size=5",")"]
code: def countries(self, countries):
      """
      Set parents for 'country' level to resolve an ambiguity
      or to join geometry with data via multi-key.
  
      Parameters
      ----------
      countries : str or `Geocoder` or list
          Parents for 'country' level.
          If it is of str type then it should be the country name.
          If it is of `Geocoder` type then it must contain the same number
          of values as the number of names of `Geocoder`.
          If it is of list type then it must be the same size
          as the number of names of `Geocoder`.
  
      Returns
      -------
      `NamesGeocoder`
          Geocoder object specification.
  
      Examples
      --------
      .. jupyter-execute::
          :linenos:
          :emphasize-lines: 5
  
          from IPython.display import display
          from lets_plot import *
          from lets_plot.geo_data import *
          LetsPlot.setup_html()
          cities = geocode_cities(['Boston', 'Boston']).countries(['US', 'UK']).get_centroids()
          display(cities)
          ggplot() + geom_livemap() + geom_point(data=cities, color='red', size=5)
  
      """
      self._reset_geocodes()
      self._countries = _make_parents(countries)
      return self
  
imports: from collections import namedtuple
  from collections.abc import Iterable
  from typing import Union, List, Optional, Dict
  from pandas import Series
  from .geocodes import _to_level_kind, request_types, Geocodes, _raise_exception, _ensure_is_list
  from .gis.geocoding_service import GeocodingService
  from .gis.geometry import GeoRect, GeoPoint
  from .gis.request import RequestBuilder, GeocodingRequest, RequestKind, MapRegion, AmbiguityResolver, RegionQuery, LevelKind, IgnoringStrategyKind, PayloadKind, ReverseGeocodingRequest
  from .gis.response import Response, SuccessResponse
  from .type_assertion import assert_list_type
label_desc: Use image node_id 4 for calling the NamesGeocoder obj's underlying member method code with example usage: obj.countries(countries) and returns: self