#!/usr/bin/env python
#
# Autogenerated by Thrift Compiler (0.15.0)
#
# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
#
#  options string: py
#

import sys
import pprint
if sys.version_info[0] > 2:
    from urllib.parse import urlparse
else:
    from urlparse import urlparse
from thrift.transport import TTransport, TSocket, TSSLSocket, THttpClient
from thrift.protocol.TBinaryProtocol import TBinaryProtocol

from heavydb.thrift import Heavy
from heavydb.thrift.ttypes import *

if len(sys.argv) <= 1 or sys.argv[1] == '--help':
    print('')
    print('Usage: ' + sys.argv[0] + ' [-h host[:port]] [-u url] [-f[ramed]] [-s[sl]] [-novalidate] [-ca_certs certs] [-keyfile keyfile] [-certfile certfile] function [arg1 [arg2...]]')
    print('')
    print('Functions:')
    print('  TSessionId connect(string user, string passwd, string dbname)')
    print('  TKrb5Session krb5_connect(string inputToken, string dbname)')
    print('  void disconnect(TSessionId session)')
    print('  void switch_database(TSessionId session, string dbname)')
    print('  TSessionId clone_session(TSessionId session)')
    print('  TServerStatus get_server_status(TSessionId session)')
    print('   get_status(TSessionId session)')
    print('  TClusterHardwareInfo get_hardware_info(TSessionId session)')
    print('   get_tables(TSessionId session)')
    print('   get_tables_for_database(TSessionId session, string database_name)')
    print('   get_physical_tables(TSessionId session)')
    print('   get_views(TSessionId session)')
    print('   get_tables_meta(TSessionId session)')
    print('  TTableDetails get_table_details(TSessionId session, string table_name)')
    print('  TTableDetails get_table_details_for_database(TSessionId session, string table_name, string database_name)')
    print('  TTableDetails get_internal_table_details(TSessionId session, string table_name, bool include_system_columns)')
    print('  TTableDetails get_internal_table_details_for_database(TSessionId session, string table_name, string database_name)')
    print('   get_users(TSessionId session)')
    print('   get_databases(TSessionId session)')
    print('  string get_version()')
    print('  void start_heap_profile(TSessionId session)')
    print('  void stop_heap_profile(TSessionId session)')
    print('  string get_heap_profile(TSessionId session)')
    print('   get_memory(TSessionId session, string memory_level)')
    print('  void clear_cpu_memory(TSessionId session)')
    print('  void clear_gpu_memory(TSessionId session)')
    print('  void set_cur_session(TSessionId parent_session, TSessionId leaf_session, string start_time_str, string label, bool for_running_query_kernel)')
    print('  void invalidate_cur_session(TSessionId parent_session, TSessionId leaf_session, string start_time_str, string label, bool for_running_query_kernel)')
    print('  void set_table_epoch(TSessionId session, i32 db_id, i32 table_id, i32 new_epoch)')
    print('  void set_table_epoch_by_name(TSessionId session, string table_name, i32 new_epoch)')
    print('  i32 get_table_epoch(TSessionId session, i32 db_id, i32 table_id)')
    print('  i32 get_table_epoch_by_name(TSessionId session, string table_name)')
    print('   get_table_epochs(TSessionId session, i32 db_id, i32 table_id)')
    print('  void set_table_epochs(TSessionId session, i32 db_id,  table_epochs)')
    print('  TSessionInfo get_session_info(TSessionId session)')
    print('   get_queries_info(TSessionId session)')
    print('  void set_leaf_info(TSessionId session, TLeafInfo leaf_info)')
    print('  TQueryResult sql_execute(TSessionId session, string query, bool column_format, string nonce, i32 first_n, i32 at_most_n)')
    print('  TDataFrame sql_execute_df(TSessionId session, string query, TDeviceType device_type, i32 device_id, i32 first_n, TArrowTransport transport_method)')
    print('  TDataFrame sql_execute_gdf(TSessionId session, string query, i32 device_id, i32 first_n)')
    print('  void deallocate_df(TSessionId session, TDataFrame df, TDeviceType device_type, i32 device_id)')
    print('  void interrupt(TSessionId query_session, TSessionId interrupt_session)')
    print('  TRowDescriptor sql_validate(TSessionId session, string query)')
    print('   get_completion_hints(TSessionId session, string sql, i32 cursor)')
    print('  void set_execution_mode(TSessionId session, TExecuteMode mode)')
    print('  TRenderResult render_vega(TSessionId session, i64 widget_id, string vega_json, i32 compression_level, string nonce)')
    print('  TPixelTableRowResult get_result_row_for_pixel(TSessionId session, i64 widget_id, TPixel pixel,  table_col_names, bool column_format, i32 pixelRadius, string nonce)')
    print('  i32 create_custom_expression(TSessionId session, TCustomExpression custom_expression)')
    print('   get_custom_expressions(TSessionId session)')
    print('  void update_custom_expression(TSessionId session, i32 id, string expression_json)')
    print('  void delete_custom_expressions(TSessionId session,  custom_expression_ids, bool do_soft_delete)')
    print('  TDashboard get_dashboard(TSessionId session, i32 dashboard_id)')
    print('   get_dashboards(TSessionId session)')
    print('  i32 create_dashboard(TSessionId session, string dashboard_name, string dashboard_state, string image_hash, string dashboard_metadata)')
    print('  void replace_dashboard(TSessionId session, i32 dashboard_id, string dashboard_name, string dashboard_owner, string dashboard_state, string image_hash, string dashboard_metadata)')
    print('  void delete_dashboard(TSessionId session, i32 dashboard_id)')
    print('  void share_dashboards(TSessionId session,  dashboard_ids,  groups, TDashboardPermissions permissions)')
    print('  void delete_dashboards(TSessionId session,  dashboard_ids)')
    print('  void share_dashboard(TSessionId session, i32 dashboard_id,  groups,  objects, TDashboardPermissions permissions, bool grant_role)')
    print('  void unshare_dashboard(TSessionId session, i32 dashboard_id,  groups,  objects, TDashboardPermissions permissions)')
    print('  void unshare_dashboards(TSessionId session,  dashboard_ids,  groups, TDashboardPermissions permissions)')
    print('   get_dashboard_grantees(TSessionId session, i32 dashboard_id)')
    print('  TFrontendView get_link_view(TSessionId session, string link)')
    print('  string create_link(TSessionId session, string view_state, string view_metadata)')
    print('  void load_table_binary(TSessionId session, string table_name,  rows,  column_names)')
    print('  void load_table_binary_columnar(TSessionId session, string table_name,  cols,  column_names)')
    print('  void load_table_binary_columnar_polys(TSessionId session, string table_name,  cols,  column_names, bool assign_render_groups)')
    print('  void load_table_binary_arrow(TSessionId session, string table_name, string arrow_stream, bool use_column_names)')
    print('  void load_table(TSessionId session, string table_name,  rows,  column_names)')
    print('  TDetectResult detect_column_types(TSessionId session, string file_name, TCopyParams copy_params)')
    print('  void create_table(TSessionId session, string table_name, TRowDescriptor row_desc, TCreateParams create_params)')
    print('  void import_table(TSessionId session, string table_name, string file_name, TCopyParams copy_params)')
    print('  void import_geo_table(TSessionId session, string table_name, string file_name, TCopyParams copy_params, TRowDescriptor row_desc, TCreateParams create_params)')
    print('  TImportStatus import_table_status(TSessionId session, string import_id)')
    print('  string get_first_geo_file_in_archive(TSessionId session, string archive_path, TCopyParams copy_params)')
    print('   get_all_files_in_archive(TSessionId session, string archive_path, TCopyParams copy_params)')
    print('   get_layers_in_geo_file(TSessionId session, string file_name, TCopyParams copy_params)')
    print('  i64 query_get_outer_fragment_count(TSessionId session, string query)')
    print('  TTableMeta check_table_consistency(TSessionId session, i32 table_id)')
    print('  TPendingQuery start_query(TSessionId leaf_session, TSessionId parent_session, string query_ra, string start_time_str, bool just_explain,  outer_fragment_indices)')
    print('  TStepResult execute_query_step(TPendingQuery pending_query, TSubqueryId subquery_id, string start_time_str)')
    print('  void broadcast_serialized_rows(TSerializedRows serialized_rows, TRowDescriptor row_desc, TQueryId query_id, TSubqueryId subquery_id, bool is_final_subquery_result)')
    print('  TPendingRenderQuery start_render_query(TSessionId session, i64 widget_id, i16 node_idx, string vega_json)')
    print('  TRenderStepResult execute_next_render_step(TPendingRenderQuery pending_render, TRenderAggDataMap merged_data)')
    print('  void insert_data(TSessionId session, TInsertData insert_data)')
    print('  void insert_chunks(TSessionId session, TInsertChunks insert_chunks)')
    print('  void checkpoint(TSessionId session, i32 table_id)')
    print('   get_roles(TSessionId session)')
    print('   get_db_objects_for_grantee(TSessionId session, string roleName)')
    print('   get_db_object_privs(TSessionId session, string objectName, TDBObjectType type)')
    print('   get_all_roles_for_user(TSessionId session, string userName)')
    print('   get_all_effective_roles_for_user(TSessionId session, string userName)')
    print('  bool has_role(TSessionId session, string granteeName, string roleName)')
    print('  bool has_object_privilege(TSessionId session, string granteeName, string ObjectName, TDBObjectType objectType, TDBObjectPermissions permissions)')
    print('  TLicenseInfo set_license_key(TSessionId session, string key, string nonce)')
    print('  TLicenseInfo get_license_claims(TSessionId session, string nonce)')
    print('   get_device_parameters(TSessionId session)')
    print('  void register_runtime_extension_functions(TSessionId session,  udfs,  udtfs,  device_ir_map)')
    print('   get_table_function_names(TSessionId session)')
    print('   get_runtime_table_function_names(TSessionId session)')
    print('   get_table_function_details(TSessionId session,  udtf_names)')
    print('   get_function_names(TSessionId session)')
    print('   get_runtime_function_names(TSessionId session)')
    print('   get_function_details(TSessionId session,  udf_names)')
    print('')
    sys.exit(0)

pp = pprint.PrettyPrinter(indent=2)
host = 'localhost'
port = 9090
uri = ''
framed = False
ssl = False
validate = True
ca_certs = None
keyfile = None
certfile = None
http = False
argi = 1

if sys.argv[argi] == '-h':
    parts = sys.argv[argi + 1].split(':')
    host = parts[0]
    if len(parts) > 1:
        port = int(parts[1])
    argi += 2

if sys.argv[argi] == '-u':
    url = urlparse(sys.argv[argi + 1])
    parts = url[1].split(':')
    host = parts[0]
    if len(parts) > 1:
        port = int(parts[1])
    else:
        port = 80
    uri = url[2]
    if url[4]:
        uri += '?%s' % url[4]
    http = True
    argi += 2

if sys.argv[argi] == '-f' or sys.argv[argi] == '-framed':
    framed = True
    argi += 1

if sys.argv[argi] == '-s' or sys.argv[argi] == '-ssl':
    ssl = True
    argi += 1

if sys.argv[argi] == '-novalidate':
    validate = False
    argi += 1

if sys.argv[argi] == '-ca_certs':
    ca_certs = sys.argv[argi+1]
    argi += 2

if sys.argv[argi] == '-keyfile':
    keyfile = sys.argv[argi+1]
    argi += 2

if sys.argv[argi] == '-certfile':
    certfile = sys.argv[argi+1]
    argi += 2

cmd = sys.argv[argi]
args = sys.argv[argi + 1:]

if http:
    transport = THttpClient.THttpClient(host, port, uri)
else:
    if ssl:
        socket = TSSLSocket.TSSLSocket(host, port, validate=validate, ca_certs=ca_certs, keyfile=keyfile, certfile=certfile)
    else:
        socket = TSocket.TSocket(host, port)
    if framed:
        transport = TTransport.TFramedTransport(socket)
    else:
        transport = TTransport.TBufferedTransport(socket)
protocol = TBinaryProtocol(transport)
client = Heavy.Client(protocol)
transport.open()

if cmd == 'connect':
    if len(args) != 3:
        print('connect requires 3 args')
        sys.exit(1)
    pp.pprint(client.connect(args[0], args[1], args[2],))

elif cmd == 'krb5_connect':
    if len(args) != 2:
        print('krb5_connect requires 2 args')
        sys.exit(1)
    pp.pprint(client.krb5_connect(args[0], args[1],))

elif cmd == 'disconnect':
    if len(args) != 1:
        print('disconnect requires 1 args')
        sys.exit(1)
    pp.pprint(client.disconnect(eval(args[0]),))

elif cmd == 'switch_database':
    if len(args) != 2:
        print('switch_database requires 2 args')
        sys.exit(1)
    pp.pprint(client.switch_database(eval(args[0]), args[1],))

elif cmd == 'clone_session':
    if len(args) != 1:
        print('clone_session requires 1 args')
        sys.exit(1)
    pp.pprint(client.clone_session(eval(args[0]),))

elif cmd == 'get_server_status':
    if len(args) != 1:
        print('get_server_status requires 1 args')
        sys.exit(1)
    pp.pprint(client.get_server_status(eval(args[0]),))

elif cmd == 'get_status':
    if len(args) != 1:
        print('get_status requires 1 args')
        sys.exit(1)
    pp.pprint(client.get_status(eval(args[0]),))

elif cmd == 'get_hardware_info':
    if len(args) != 1:
        print('get_hardware_info requires 1 args')
        sys.exit(1)
    pp.pprint(client.get_hardware_info(eval(args[0]),))

elif cmd == 'get_tables':
    if len(args) != 1:
        print('get_tables requires 1 args')
        sys.exit(1)
    pp.pprint(client.get_tables(eval(args[0]),))

elif cmd == 'get_tables_for_database':
    if len(args) != 2:
        print('get_tables_for_database requires 2 args')
        sys.exit(1)
    pp.pprint(client.get_tables_for_database(eval(args[0]), args[1],))

elif cmd == 'get_physical_tables':
    if len(args) != 1:
        print('get_physical_tables requires 1 args')
        sys.exit(1)
    pp.pprint(client.get_physical_tables(eval(args[0]),))

elif cmd == 'get_views':
    if len(args) != 1:
        print('get_views requires 1 args')
        sys.exit(1)
    pp.pprint(client.get_views(eval(args[0]),))

elif cmd == 'get_tables_meta':
    if len(args) != 1:
        print('get_tables_meta requires 1 args')
        sys.exit(1)
    pp.pprint(client.get_tables_meta(eval(args[0]),))

elif cmd == 'get_table_details':
    if len(args) != 2:
        print('get_table_details requires 2 args')
        sys.exit(1)
    pp.pprint(client.get_table_details(eval(args[0]), args[1],))

elif cmd == 'get_table_details_for_database':
    if len(args) != 3:
        print('get_table_details_for_database requires 3 args')
        sys.exit(1)
    pp.pprint(client.get_table_details_for_database(eval(args[0]), args[1], args[2],))

elif cmd == 'get_internal_table_details':
    if len(args) != 3:
        print('get_internal_table_details requires 3 args')
        sys.exit(1)
    pp.pprint(client.get_internal_table_details(eval(args[0]), args[1], eval(args[2]),))

elif cmd == 'get_internal_table_details_for_database':
    if len(args) != 3:
        print('get_internal_table_details_for_database requires 3 args')
        sys.exit(1)
    pp.pprint(client.get_internal_table_details_for_database(eval(args[0]), args[1], args[2],))

elif cmd == 'get_users':
    if len(args) != 1:
        print('get_users requires 1 args')
        sys.exit(1)
    pp.pprint(client.get_users(eval(args[0]),))

elif cmd == 'get_databases':
    if len(args) != 1:
        print('get_databases requires 1 args')
        sys.exit(1)
    pp.pprint(client.get_databases(eval(args[0]),))

elif cmd == 'get_version':
    if len(args) != 0:
        print('get_version requires 0 args')
        sys.exit(1)
    pp.pprint(client.get_version())

elif cmd == 'start_heap_profile':
    if len(args) != 1:
        print('start_heap_profile requires 1 args')
        sys.exit(1)
    pp.pprint(client.start_heap_profile(eval(args[0]),))

elif cmd == 'stop_heap_profile':
    if len(args) != 1:
        print('stop_heap_profile requires 1 args')
        sys.exit(1)
    pp.pprint(client.stop_heap_profile(eval(args[0]),))

elif cmd == 'get_heap_profile':
    if len(args) != 1:
        print('get_heap_profile requires 1 args')
        sys.exit(1)
    pp.pprint(client.get_heap_profile(eval(args[0]),))

elif cmd == 'get_memory':
    if len(args) != 2:
        print('get_memory requires 2 args')
        sys.exit(1)
    pp.pprint(client.get_memory(eval(args[0]), args[1],))

elif cmd == 'clear_cpu_memory':
    if len(args) != 1:
        print('clear_cpu_memory requires 1 args')
        sys.exit(1)
    pp.pprint(client.clear_cpu_memory(eval(args[0]),))

elif cmd == 'clear_gpu_memory':
    if len(args) != 1:
        print('clear_gpu_memory requires 1 args')
        sys.exit(1)
    pp.pprint(client.clear_gpu_memory(eval(args[0]),))

elif cmd == 'set_cur_session':
    if len(args) != 5:
        print('set_cur_session requires 5 args')
        sys.exit(1)
    pp.pprint(client.set_cur_session(eval(args[0]), eval(args[1]), args[2], args[3], eval(args[4]),))

elif cmd == 'invalidate_cur_session':
    if len(args) != 5:
        print('invalidate_cur_session requires 5 args')
        sys.exit(1)
    pp.pprint(client.invalidate_cur_session(eval(args[0]), eval(args[1]), args[2], args[3], eval(args[4]),))

elif cmd == 'set_table_epoch':
    if len(args) != 4:
        print('set_table_epoch requires 4 args')
        sys.exit(1)
    pp.pprint(client.set_table_epoch(eval(args[0]), eval(args[1]), eval(args[2]), eval(args[3]),))

elif cmd == 'set_table_epoch_by_name':
    if len(args) != 3:
        print('set_table_epoch_by_name requires 3 args')
        sys.exit(1)
    pp.pprint(client.set_table_epoch_by_name(eval(args[0]), args[1], eval(args[2]),))

elif cmd == 'get_table_epoch':
    if len(args) != 3:
        print('get_table_epoch requires 3 args')
        sys.exit(1)
    pp.pprint(client.get_table_epoch(eval(args[0]), eval(args[1]), eval(args[2]),))

elif cmd == 'get_table_epoch_by_name':
    if len(args) != 2:
        print('get_table_epoch_by_name requires 2 args')
        sys.exit(1)
    pp.pprint(client.get_table_epoch_by_name(eval(args[0]), args[1],))

elif cmd == 'get_table_epochs':
    if len(args) != 3:
        print('get_table_epochs requires 3 args')
        sys.exit(1)
    pp.pprint(client.get_table_epochs(eval(args[0]), eval(args[1]), eval(args[2]),))

elif cmd == 'set_table_epochs':
    if len(args) != 3:
        print('set_table_epochs requires 3 args')
        sys.exit(1)
    pp.pprint(client.set_table_epochs(eval(args[0]), eval(args[1]), eval(args[2]),))

elif cmd == 'get_session_info':
    if len(args) != 1:
        print('get_session_info requires 1 args')
        sys.exit(1)
    pp.pprint(client.get_session_info(eval(args[0]),))

elif cmd == 'get_queries_info':
    if len(args) != 1:
        print('get_queries_info requires 1 args')
        sys.exit(1)
    pp.pprint(client.get_queries_info(eval(args[0]),))

elif cmd == 'set_leaf_info':
    if len(args) != 2:
        print('set_leaf_info requires 2 args')
        sys.exit(1)
    pp.pprint(client.set_leaf_info(eval(args[0]), eval(args[1]),))

elif cmd == 'sql_execute':
    if len(args) != 6:
        print('sql_execute requires 6 args')
        sys.exit(1)
    pp.pprint(client.sql_execute(eval(args[0]), args[1], eval(args[2]), args[3], eval(args[4]), eval(args[5]),))

elif cmd == 'sql_execute_df':
    if len(args) != 6:
        print('sql_execute_df requires 6 args')
        sys.exit(1)
    pp.pprint(client.sql_execute_df(eval(args[0]), args[1], eval(args[2]), eval(args[3]), eval(args[4]), eval(args[5]),))

elif cmd == 'sql_execute_gdf':
    if len(args) != 4:
        print('sql_execute_gdf requires 4 args')
        sys.exit(1)
    pp.pprint(client.sql_execute_gdf(eval(args[0]), args[1], eval(args[2]), eval(args[3]),))

elif cmd == 'deallocate_df':
    if len(args) != 4:
        print('deallocate_df requires 4 args')
        sys.exit(1)
    pp.pprint(client.deallocate_df(eval(args[0]), eval(args[1]), eval(args[2]), eval(args[3]),))

elif cmd == 'interrupt':
    if len(args) != 2:
        print('interrupt requires 2 args')
        sys.exit(1)
    pp.pprint(client.interrupt(eval(args[0]), eval(args[1]),))

elif cmd == 'sql_validate':
    if len(args) != 2:
        print('sql_validate requires 2 args')
        sys.exit(1)
    pp.pprint(client.sql_validate(eval(args[0]), args[1],))

elif cmd == 'get_completion_hints':
    if len(args) != 3:
        print('get_completion_hints requires 3 args')
        sys.exit(1)
    pp.pprint(client.get_completion_hints(eval(args[0]), args[1], eval(args[2]),))

elif cmd == 'set_execution_mode':
    if len(args) != 2:
        print('set_execution_mode requires 2 args')
        sys.exit(1)
    pp.pprint(client.set_execution_mode(eval(args[0]), eval(args[1]),))

elif cmd == 'render_vega':
    if len(args) != 5:
        print('render_vega requires 5 args')
        sys.exit(1)
    pp.pprint(client.render_vega(eval(args[0]), eval(args[1]), args[2], eval(args[3]), args[4],))

elif cmd == 'get_result_row_for_pixel':
    if len(args) != 7:
        print('get_result_row_for_pixel requires 7 args')
        sys.exit(1)
    pp.pprint(client.get_result_row_for_pixel(eval(args[0]), eval(args[1]), eval(args[2]), eval(args[3]), eval(args[4]), eval(args[5]), args[6],))

elif cmd == 'create_custom_expression':
    if len(args) != 2:
        print('create_custom_expression requires 2 args')
        sys.exit(1)
    pp.pprint(client.create_custom_expression(eval(args[0]), eval(args[1]),))

elif cmd == 'get_custom_expressions':
    if len(args) != 1:
        print('get_custom_expressions requires 1 args')
        sys.exit(1)
    pp.pprint(client.get_custom_expressions(eval(args[0]),))

elif cmd == 'update_custom_expression':
    if len(args) != 3:
        print('update_custom_expression requires 3 args')
        sys.exit(1)
    pp.pprint(client.update_custom_expression(eval(args[0]), eval(args[1]), args[2],))

elif cmd == 'delete_custom_expressions':
    if len(args) != 3:
        print('delete_custom_expressions requires 3 args')
        sys.exit(1)
    pp.pprint(client.delete_custom_expressions(eval(args[0]), eval(args[1]), eval(args[2]),))

elif cmd == 'get_dashboard':
    if len(args) != 2:
        print('get_dashboard requires 2 args')
        sys.exit(1)
    pp.pprint(client.get_dashboard(eval(args[0]), eval(args[1]),))

elif cmd == 'get_dashboards':
    if len(args) != 1:
        print('get_dashboards requires 1 args')
        sys.exit(1)
    pp.pprint(client.get_dashboards(eval(args[0]),))

elif cmd == 'create_dashboard':
    if len(args) != 5:
        print('create_dashboard requires 5 args')
        sys.exit(1)
    pp.pprint(client.create_dashboard(eval(args[0]), args[1], args[2], args[3], args[4],))

elif cmd == 'replace_dashboard':
    if len(args) != 7:
        print('replace_dashboard requires 7 args')
        sys.exit(1)
    pp.pprint(client.replace_dashboard(eval(args[0]), eval(args[1]), args[2], args[3], args[4], args[5], args[6],))

elif cmd == 'delete_dashboard':
    if len(args) != 2:
        print('delete_dashboard requires 2 args')
        sys.exit(1)
    pp.pprint(client.delete_dashboard(eval(args[0]), eval(args[1]),))

elif cmd == 'share_dashboards':
    if len(args) != 4:
        print('share_dashboards requires 4 args')
        sys.exit(1)
    pp.pprint(client.share_dashboards(eval(args[0]), eval(args[1]), eval(args[2]), eval(args[3]),))

elif cmd == 'delete_dashboards':
    if len(args) != 2:
        print('delete_dashboards requires 2 args')
        sys.exit(1)
    pp.pprint(client.delete_dashboards(eval(args[0]), eval(args[1]),))

elif cmd == 'share_dashboard':
    if len(args) != 6:
        print('share_dashboard requires 6 args')
        sys.exit(1)
    pp.pprint(client.share_dashboard(eval(args[0]), eval(args[1]), eval(args[2]), eval(args[3]), eval(args[4]), eval(args[5]),))

elif cmd == 'unshare_dashboard':
    if len(args) != 5:
        print('unshare_dashboard requires 5 args')
        sys.exit(1)
    pp.pprint(client.unshare_dashboard(eval(args[0]), eval(args[1]), eval(args[2]), eval(args[3]), eval(args[4]),))

elif cmd == 'unshare_dashboards':
    if len(args) != 4:
        print('unshare_dashboards requires 4 args')
        sys.exit(1)
    pp.pprint(client.unshare_dashboards(eval(args[0]), eval(args[1]), eval(args[2]), eval(args[3]),))

elif cmd == 'get_dashboard_grantees':
    if len(args) != 2:
        print('get_dashboard_grantees requires 2 args')
        sys.exit(1)
    pp.pprint(client.get_dashboard_grantees(eval(args[0]), eval(args[1]),))

elif cmd == 'get_link_view':
    if len(args) != 2:
        print('get_link_view requires 2 args')
        sys.exit(1)
    pp.pprint(client.get_link_view(eval(args[0]), args[1],))

elif cmd == 'create_link':
    if len(args) != 3:
        print('create_link requires 3 args')
        sys.exit(1)
    pp.pprint(client.create_link(eval(args[0]), args[1], args[2],))

elif cmd == 'load_table_binary':
    if len(args) != 4:
        print('load_table_binary requires 4 args')
        sys.exit(1)
    pp.pprint(client.load_table_binary(eval(args[0]), args[1], eval(args[2]), eval(args[3]),))

elif cmd == 'load_table_binary_columnar':
    if len(args) != 4:
        print('load_table_binary_columnar requires 4 args')
        sys.exit(1)
    pp.pprint(client.load_table_binary_columnar(eval(args[0]), args[1], eval(args[2]), eval(args[3]),))

elif cmd == 'load_table_binary_columnar_polys':
    if len(args) != 5:
        print('load_table_binary_columnar_polys requires 5 args')
        sys.exit(1)
    pp.pprint(client.load_table_binary_columnar_polys(eval(args[0]), args[1], eval(args[2]), eval(args[3]), eval(args[4]),))

elif cmd == 'load_table_binary_arrow':
    if len(args) != 4:
        print('load_table_binary_arrow requires 4 args')
        sys.exit(1)
    pp.pprint(client.load_table_binary_arrow(eval(args[0]), args[1], args[2], eval(args[3]),))

elif cmd == 'load_table':
    if len(args) != 4:
        print('load_table requires 4 args')
        sys.exit(1)
    pp.pprint(client.load_table(eval(args[0]), args[1], eval(args[2]), eval(args[3]),))

elif cmd == 'detect_column_types':
    if len(args) != 3:
        print('detect_column_types requires 3 args')
        sys.exit(1)
    pp.pprint(client.detect_column_types(eval(args[0]), args[1], eval(args[2]),))

elif cmd == 'create_table':
    if len(args) != 4:
        print('create_table requires 4 args')
        sys.exit(1)
    pp.pprint(client.create_table(eval(args[0]), args[1], eval(args[2]), eval(args[3]),))

elif cmd == 'import_table':
    if len(args) != 4:
        print('import_table requires 4 args')
        sys.exit(1)
    pp.pprint(client.import_table(eval(args[0]), args[1], args[2], eval(args[3]),))

elif cmd == 'import_geo_table':
    if len(args) != 6:
        print('import_geo_table requires 6 args')
        sys.exit(1)
    pp.pprint(client.import_geo_table(eval(args[0]), args[1], args[2], eval(args[3]), eval(args[4]), eval(args[5]),))

elif cmd == 'import_table_status':
    if len(args) != 2:
        print('import_table_status requires 2 args')
        sys.exit(1)
    pp.pprint(client.import_table_status(eval(args[0]), args[1],))

elif cmd == 'get_first_geo_file_in_archive':
    if len(args) != 3:
        print('get_first_geo_file_in_archive requires 3 args')
        sys.exit(1)
    pp.pprint(client.get_first_geo_file_in_archive(eval(args[0]), args[1], eval(args[2]),))

elif cmd == 'get_all_files_in_archive':
    if len(args) != 3:
        print('get_all_files_in_archive requires 3 args')
        sys.exit(1)
    pp.pprint(client.get_all_files_in_archive(eval(args[0]), args[1], eval(args[2]),))

elif cmd == 'get_layers_in_geo_file':
    if len(args) != 3:
        print('get_layers_in_geo_file requires 3 args')
        sys.exit(1)
    pp.pprint(client.get_layers_in_geo_file(eval(args[0]), args[1], eval(args[2]),))

elif cmd == 'query_get_outer_fragment_count':
    if len(args) != 2:
        print('query_get_outer_fragment_count requires 2 args')
        sys.exit(1)
    pp.pprint(client.query_get_outer_fragment_count(eval(args[0]), args[1],))

elif cmd == 'check_table_consistency':
    if len(args) != 2:
        print('check_table_consistency requires 2 args')
        sys.exit(1)
    pp.pprint(client.check_table_consistency(eval(args[0]), eval(args[1]),))

elif cmd == 'start_query':
    if len(args) != 6:
        print('start_query requires 6 args')
        sys.exit(1)
    pp.pprint(client.start_query(eval(args[0]), eval(args[1]), args[2], args[3], eval(args[4]), eval(args[5]),))

elif cmd == 'execute_query_step':
    if len(args) != 3:
        print('execute_query_step requires 3 args')
        sys.exit(1)
    pp.pprint(client.execute_query_step(eval(args[0]), eval(args[1]), args[2],))

elif cmd == 'broadcast_serialized_rows':
    if len(args) != 5:
        print('broadcast_serialized_rows requires 5 args')
        sys.exit(1)
    pp.pprint(client.broadcast_serialized_rows(eval(args[0]), eval(args[1]), eval(args[2]), eval(args[3]), eval(args[4]),))

elif cmd == 'start_render_query':
    if len(args) != 4:
        print('start_render_query requires 4 args')
        sys.exit(1)
    pp.pprint(client.start_render_query(eval(args[0]), eval(args[1]), eval(args[2]), args[3],))

elif cmd == 'execute_next_render_step':
    if len(args) != 2:
        print('execute_next_render_step requires 2 args')
        sys.exit(1)
    pp.pprint(client.execute_next_render_step(eval(args[0]), eval(args[1]),))

elif cmd == 'insert_data':
    if len(args) != 2:
        print('insert_data requires 2 args')
        sys.exit(1)
    pp.pprint(client.insert_data(eval(args[0]), eval(args[1]),))

elif cmd == 'insert_chunks':
    if len(args) != 2:
        print('insert_chunks requires 2 args')
        sys.exit(1)
    pp.pprint(client.insert_chunks(eval(args[0]), eval(args[1]),))

elif cmd == 'checkpoint':
    if len(args) != 2:
        print('checkpoint requires 2 args')
        sys.exit(1)
    pp.pprint(client.checkpoint(eval(args[0]), eval(args[1]),))

elif cmd == 'get_roles':
    if len(args) != 1:
        print('get_roles requires 1 args')
        sys.exit(1)
    pp.pprint(client.get_roles(eval(args[0]),))

elif cmd == 'get_db_objects_for_grantee':
    if len(args) != 2:
        print('get_db_objects_for_grantee requires 2 args')
        sys.exit(1)
    pp.pprint(client.get_db_objects_for_grantee(eval(args[0]), args[1],))

elif cmd == 'get_db_object_privs':
    if len(args) != 3:
        print('get_db_object_privs requires 3 args')
        sys.exit(1)
    pp.pprint(client.get_db_object_privs(eval(args[0]), args[1], eval(args[2]),))

elif cmd == 'get_all_roles_for_user':
    if len(args) != 2:
        print('get_all_roles_for_user requires 2 args')
        sys.exit(1)
    pp.pprint(client.get_all_roles_for_user(eval(args[0]), args[1],))

elif cmd == 'get_all_effective_roles_for_user':
    if len(args) != 2:
        print('get_all_effective_roles_for_user requires 2 args')
        sys.exit(1)
    pp.pprint(client.get_all_effective_roles_for_user(eval(args[0]), args[1],))

elif cmd == 'has_role':
    if len(args) != 3:
        print('has_role requires 3 args')
        sys.exit(1)
    pp.pprint(client.has_role(eval(args[0]), args[1], args[2],))

elif cmd == 'has_object_privilege':
    if len(args) != 5:
        print('has_object_privilege requires 5 args')
        sys.exit(1)
    pp.pprint(client.has_object_privilege(eval(args[0]), args[1], args[2], eval(args[3]), eval(args[4]),))

elif cmd == 'set_license_key':
    if len(args) != 3:
        print('set_license_key requires 3 args')
        sys.exit(1)
    pp.pprint(client.set_license_key(eval(args[0]), args[1], args[2],))

elif cmd == 'get_license_claims':
    if len(args) != 2:
        print('get_license_claims requires 2 args')
        sys.exit(1)
    pp.pprint(client.get_license_claims(eval(args[0]), args[1],))

elif cmd == 'get_device_parameters':
    if len(args) != 1:
        print('get_device_parameters requires 1 args')
        sys.exit(1)
    pp.pprint(client.get_device_parameters(eval(args[0]),))

elif cmd == 'register_runtime_extension_functions':
    if len(args) != 4:
        print('register_runtime_extension_functions requires 4 args')
        sys.exit(1)
    pp.pprint(client.register_runtime_extension_functions(eval(args[0]), eval(args[1]), eval(args[2]), eval(args[3]),))

elif cmd == 'get_table_function_names':
    if len(args) != 1:
        print('get_table_function_names requires 1 args')
        sys.exit(1)
    pp.pprint(client.get_table_function_names(eval(args[0]),))

elif cmd == 'get_runtime_table_function_names':
    if len(args) != 1:
        print('get_runtime_table_function_names requires 1 args')
        sys.exit(1)
    pp.pprint(client.get_runtime_table_function_names(eval(args[0]),))

elif cmd == 'get_table_function_details':
    if len(args) != 2:
        print('get_table_function_details requires 2 args')
        sys.exit(1)
    pp.pprint(client.get_table_function_details(eval(args[0]), eval(args[1]),))

elif cmd == 'get_function_names':
    if len(args) != 1:
        print('get_function_names requires 1 args')
        sys.exit(1)
    pp.pprint(client.get_function_names(eval(args[0]),))

elif cmd == 'get_runtime_function_names':
    if len(args) != 1:
        print('get_runtime_function_names requires 1 args')
        sys.exit(1)
    pp.pprint(client.get_runtime_function_names(eval(args[0]),))

elif cmd == 'get_function_details':
    if len(args) != 2:
        print('get_function_details requires 2 args')
        sys.exit(1)
    pp.pprint(client.get_function_details(eval(args[0]), eval(args[1]),))

else:
    print('Unrecognized method %s' % cmd)
    sys.exit(1)

transport.close()
