class_docstr: The ZipCodeBase Codes within Radius Table implementation
docstr: Pulls data from the https://app.zipcodebase.com/documentation#radius API
  
  Parameters
  ----------
  query : ast.Select
     Given SQL SELECT query
  
  Returns
  -------
  pd.DataFrame
      codes within the radius
  
  Raises
  ------
  ValueError
      If the query contains an unsupported condition
docstr_tok: ["Pulls","data","from","the","https",":","\/\/app.zipcodebase.com\/documentation","#","radius","API","Parameters","--","--","--","--","--","query",":","ast.Select","Given","SQL","SELECT","query","Returns","--","--","--","-","pd.DataFrame","codes","within","the","radius","Raises","--","--","--","ValueError","If","the","query","contains","an","unsupported","condition"]
code: def select(self, query: ast.Select) -> pd.DataFrame:
      """Pulls data from the https://app.zipcodebase.com/documentation#radius API
  
      Parameters
      ----------
      query : ast.Select
         Given SQL SELECT query
  
      Returns
      -------
      pd.DataFrame
          codes within the radius
  
      Raises
      ------
      ValueError
          If the query contains an unsupported condition
      """
  
      select_statement_parser = SELECTQueryParser(
          query, "codes_within_radius", self.get_columns()
      )
  
      (
          selected_columns,
          where_conditions,
          order_by_conditions,
          result_limit,
      ) = select_statement_parser.parse_query()
  
      search_params = {}
      subset_where_conditions = []
  
      for op, arg1, arg2 in where_conditions:
          if arg1 == "code":
              if op == "=":
                  search_params["code"] = arg2
              else:
                  raise NotImplementedError(
                      "Only '=' operator is supported for code column."
                  )
  
          if arg1 == "radius":
              if op == "=":
                  search_params["radius"] = arg2
              else:
                  raise NotImplementedError(
                      "Only '=' operator is supported for radius column."
                  )
  
          if arg1 == "country":
              if op == "=":
                  search_params["country"] = arg2
              else:
                  raise NotImplementedError(
                      "Only '=' operator is supported for country column."
                  )
  
          if arg1 == "unit":
              if op == "=":
                  search_params["unit"] = arg2
              else:
                  raise NotImplementedError(
                      "Only '=' operator is supported for unit column."
                  )
  
          elif arg1 in self.get_columns():
              subset_where_conditions.append([op, arg1, arg2])
  
      filter_flag = (
          ("code" in search_params)
          and ("radius" in search_params)
          and ("country" in search_params)
      )
  
      if not filter_flag:
          raise NotImplementedError(
              "`codes`, `radius` and `country` columns have to be present in where clause."
          )
  
      code_to_location_df = pd.DataFrame(columns=self.get_columns())
  
      response = self.handler.client.codes_within_radius(
          search_params.get("code"),
          search_params.get("radius"),
          search_params.get("country"),
          search_params.get("unit", "km"),
      )
  
      self.check_res(res=response)
  
      content = response["content"]
  
      logger.info(f"response size - {len(content['results'])}")
      code_to_location_df = pd.json_normalize(content["results"])
  
      select_statement_executor = SELECTQueryExecutor(
          code_to_location_df,
          selected_columns,
          subset_where_conditions,
          order_by_conditions,
          result_limit,
      )
  
      code_to_location_df = select_statement_executor.execute_query()
  
      return code_to_location_df
  
imports: import pandas
  from typing import List
  from mindsdb.integrations.libs.api_handler import APITable
  from mindsdb.integrations.handlers.utilities.query_utilities import SELECTQueryParser, SELECTQueryExecutor
  from mindsdb.utilities import log
  from mindsdb_sql.parser import ast
label_desc: Use image node_id 1 for calling the ZipCodeBaseCodeInRadiusTable obj's underlying member method code with example usage: obj.select(query) and returns: code_to_location_df