code: def select(self, query: ast.Select) -> pd.DataFrame:
      package_name = self.get_package_name(query)
      connection = self.handler.connection(package_name)
      github_data = connection.get_cols_in(
          ["collected", "github"],
          [
              "homepage",
              "starsCount",
              "forksCount",
              "subscribersCount",
              "issues",
          ],
      )
      rename_key(github_data, "num_stars", "starsCount")
      rename_key(github_data, "num_forks", "forksCount")
      rename_key(github_data, "num_subscribers", "subscribersCount")
      github_data["num_issues"] = github_data["issues"].get("count", 0)
      github_data["issues"] = github_data["issues"].get("openCount", 0)
      rename_key(github_data, "num_open_issues", "issues")
      df = pd.DataFrame.from_records([github_data])
      return self.apply_query_params(df, query)
  
imports: from typing import List
  import pandas
  from mindsdb_sql.parser import ast
  from mindsdb.integrations.handlers.utilities.query_utilities import SELECTQueryExecutor, SELECTQueryParser
  from mindsdb.integrations.libs.api_handler import APIHandler, APITable
  from mindsdb.integrations.utilities.sql_utils import conditions_to_filter
label_desc: Use image node_id 2 for calling the NPMGithubStatsTable obj's underlying member method code with example usage: obj.select(query) and returns: self