mirror of https://github.com/apache/cassandra
Simplify pylib/cqlshlib/helptopics.py using associative array
patch by Vineet Gali; reviewed by Stefan Miklosovic and Brandon Williams for CASSANDRA-18726
This commit is contained in:
parent
53d1644ff4
commit
d24baecac9
|
|
@ -23,8 +23,6 @@ simple_cql_types = {'ascii', 'bigint', 'blob', 'boolean', 'counter', 'date', 'de
|
|||
'varint'}
|
||||
simple_cql_types.difference_update(('set', 'map', 'list'))
|
||||
|
||||
cqldocs = helptopics.CQL3HelpTopics()
|
||||
|
||||
|
||||
class UnexpectedTableStructure(UserWarning):
|
||||
|
||||
|
|
|
|||
|
|
@ -31,6 +31,8 @@ from contextlib import contextmanager
|
|||
from io import StringIO
|
||||
from uuid import UUID
|
||||
|
||||
from cqlshlib.helptopics import get_html_anchor, get_html_topics
|
||||
|
||||
UTF8 = 'utf-8'
|
||||
|
||||
description = "CQL Shell for Apache Cassandra"
|
||||
|
|
@ -1795,6 +1797,9 @@ class Shell(cmd.Cmd):
|
|||
pdb.set_trace()
|
||||
|
||||
def get_help_topics(self):
|
||||
"""
|
||||
List of 'do_' methods having method comments
|
||||
"""
|
||||
topics = [t[3:] for t in dir(self) if t.startswith('do_') and getattr(self, t, None).__doc__]
|
||||
for hide_from_help in ('quit',):
|
||||
topics.remove(hide_from_help)
|
||||
|
|
@ -1815,15 +1820,15 @@ class Shell(cmd.Cmd):
|
|||
if not topics:
|
||||
shell_topics = [t.upper() for t in self.get_help_topics()]
|
||||
self.print_topics("\nDocumented shell commands:", shell_topics, 15, 80)
|
||||
cql_topics = [t.upper() for t in cqldocs.get_help_topics()]
|
||||
cql_topics = [t.upper() for t in get_html_topics()]
|
||||
self.print_topics("CQL help topics:", cql_topics, 15, 80)
|
||||
return
|
||||
for t in topics:
|
||||
if t.lower() in self.get_help_topics():
|
||||
doc = getattr(self, 'do_' + t.lower()).__doc__
|
||||
self.stdout.write(doc + "\n")
|
||||
elif t.lower() in cqldocs.get_help_topics():
|
||||
urlpart = cqldocs.get_help_topic(t)
|
||||
elif t.lower() in get_html_topics():
|
||||
urlpart = get_html_anchor(t)
|
||||
if urlpart is not None:
|
||||
url = "%s#%s" % (CASSANDRA_CQL_HTML, urlpart)
|
||||
if self.browser is not None:
|
||||
|
|
@ -2217,11 +2222,6 @@ def setup_cqlruleset(cqlmodule):
|
|||
cqlruleset.commands_end_with_newline.update(cqlshhandling.my_commands_ending_with_newline)
|
||||
|
||||
|
||||
def setup_cqldocs(cqlmodule):
|
||||
global cqldocs
|
||||
cqldocs = cqlmodule.cqldocs
|
||||
|
||||
|
||||
def setup_docspath(path):
|
||||
global CASSANDRA_CQL_HTML
|
||||
CASSANDRA_CQL_HTML_FALLBACK = 'https://cassandra.apache.org/doc/latest/cql/index.html'
|
||||
|
|
@ -2269,7 +2269,6 @@ def main(cmdline, pkgpath):
|
|||
|
||||
setup_docspath(pkgpath)
|
||||
setup_cqlruleset(options.cqlmodule)
|
||||
setup_cqldocs(options.cqlmodule)
|
||||
csv.field_size_limit(options.field_size_limit)
|
||||
|
||||
if options.file is None:
|
||||
|
|
|
|||
|
|
@ -15,176 +15,74 @@
|
|||
# limitations under the License.
|
||||
|
||||
|
||||
class CQL3HelpTopics:
|
||||
def get_help_topics(self):
|
||||
return [t[5:] for t in dir(self) if t.startswith('help_')]
|
||||
"""
|
||||
html_help_topics maps topics to HTML anchors
|
||||
"""
|
||||
html_help_topics = {
|
||||
'aggregates': 'aggregates',
|
||||
'alter_keyspace': 'alterKeyspaceStmt',
|
||||
'alter_materialized_view': 'alterMVStmt',
|
||||
'alter_table': 'alterTableStmt',
|
||||
'alter_type': 'alterTypeStmt',
|
||||
'alter_user': 'alterUserStmt',
|
||||
'apply': 'batchStmt',
|
||||
'ascii': 'constants',
|
||||
'batch': 'batchStmt',
|
||||
'begin': 'batchStmt',
|
||||
'blob': 'constants',
|
||||
'boolean': 'boolean',
|
||||
'counter': 'counters',
|
||||
'create_aggregate': 'createAggregateStmt',
|
||||
'create_columnfamily': 'createTableStmt',
|
||||
'create_function': 'createFunctionStmt',
|
||||
'create_index': 'createIndexStmt',
|
||||
'create_keyspace': 'createKeyspaceStmt',
|
||||
'create_materialized_view': 'createMVStmt',
|
||||
'create_role': 'createRoleStmt',
|
||||
'create_table': 'createTableStmt',
|
||||
'create_trigger': 'createTriggerStmt',
|
||||
'create_type': 'createTypeStmt',
|
||||
'create_user': 'createUserStmt',
|
||||
'date': 'usingdates',
|
||||
'delete': 'deleteStmt',
|
||||
'drop_aggregate': 'dropAggregateStmt',
|
||||
'drop_columnfamily': 'dropTableStmt',
|
||||
'drop_function': 'dropFunctionStmt',
|
||||
'drop_index': 'dropIndexStmt',
|
||||
'drop_keyspace': 'dropKeyspaceStmt',
|
||||
'drop_materialized_view': 'dropMVStmt',
|
||||
'drop_role': 'dropRoleStmt',
|
||||
'drop_table': 'dropTableStmt',
|
||||
'drop_trigger': 'dropTriggerStmt',
|
||||
'drop_type': 'dropTypeStmt',
|
||||
'drop_user': 'dropUserStmt',
|
||||
'functions': 'functions',
|
||||
'grant': 'grantRoleStmt',
|
||||
'insert': 'insertStmt',
|
||||
'insert_json': 'insertJson',
|
||||
'int': 'constants',
|
||||
'json': 'json',
|
||||
'keywords': 'appendixA',
|
||||
'list_permissions': 'listPermissionsStmt',
|
||||
'list_roles': 'listRolesStmt',
|
||||
'list_users': 'listUsersStmt',
|
||||
'permissions': 'permissions',
|
||||
'revoke': 'revokeRoleStmt',
|
||||
'select': 'selectStmt',
|
||||
'select_json': 'selectJson',
|
||||
'text': 'constants',
|
||||
'time': 'usingtime',
|
||||
'timestamp': 'usingtimestamps',
|
||||
'truncate': 'truncateStmt',
|
||||
'types': 'types',
|
||||
'update': 'updateStmt',
|
||||
'use': 'useStmt',
|
||||
'uuid': 'constants'}
|
||||
|
||||
def get_help_topic(self, topic):
|
||||
return getattr(self, 'help_' + topic.lower())()
|
||||
|
||||
def help_types(self):
|
||||
return 'types'
|
||||
def get_html_topics():
|
||||
return list(html_help_topics.keys())
|
||||
|
||||
def help_timestamp(self):
|
||||
return 'usingtimestamps'
|
||||
|
||||
def help_date(self):
|
||||
return 'usingdates'
|
||||
|
||||
def help_time(self):
|
||||
return 'usingtime'
|
||||
|
||||
def help_blob(self):
|
||||
return 'constants'
|
||||
|
||||
def help_uuid(self):
|
||||
return 'constants'
|
||||
|
||||
def help_boolean(self):
|
||||
return 'constants'
|
||||
|
||||
def help_int(self):
|
||||
return 'constants'
|
||||
|
||||
def help_counter(self):
|
||||
return 'counters'
|
||||
|
||||
def help_text(self):
|
||||
return 'constants'
|
||||
help_ascii = help_text
|
||||
|
||||
def help_use(self):
|
||||
return 'useStmt'
|
||||
|
||||
def help_insert(self):
|
||||
return 'insertStmt'
|
||||
|
||||
def help_update(self):
|
||||
return 'updateStmt'
|
||||
|
||||
def help_delete(self):
|
||||
return 'deleteStmt'
|
||||
|
||||
def help_select(self):
|
||||
return 'selectStmt'
|
||||
|
||||
def help_json(self):
|
||||
return 'json'
|
||||
|
||||
def help_select_json(self):
|
||||
return 'selectJson'
|
||||
|
||||
def help_insert_json(self):
|
||||
return 'insertJson'
|
||||
|
||||
def help_batch(self):
|
||||
return 'batchStmt'
|
||||
help_begin = help_batch
|
||||
help_apply = help_batch
|
||||
|
||||
def help_create_keyspace(self):
|
||||
return 'createKeyspaceStmt'
|
||||
|
||||
def help_alter_keyspace(self):
|
||||
return 'alterKeyspaceStmt'
|
||||
|
||||
def help_drop_keyspace(self):
|
||||
return 'dropKeyspaceStmt'
|
||||
|
||||
def help_create_table(self):
|
||||
return 'createTableStmt'
|
||||
help_create_columnfamily = help_create_table
|
||||
|
||||
def help_alter_table(self):
|
||||
return 'alterTableStmt'
|
||||
|
||||
def help_drop_table(self):
|
||||
return 'dropTableStmt'
|
||||
help_drop_columnfamily = help_drop_table
|
||||
|
||||
def help_create_index(self):
|
||||
return 'createIndexStmt'
|
||||
|
||||
def help_drop_index(self):
|
||||
return 'dropIndexStmt'
|
||||
|
||||
def help_truncate(self):
|
||||
return 'truncateStmt'
|
||||
|
||||
def help_create_type(self):
|
||||
return 'createTypeStmt'
|
||||
|
||||
def help_alter_type(self):
|
||||
return 'alterTypeStmt'
|
||||
|
||||
def help_drop_type(self):
|
||||
return 'dropTypeStmt'
|
||||
|
||||
def help_create_function(self):
|
||||
return 'createFunctionStmt'
|
||||
|
||||
def help_drop_function(self):
|
||||
return 'dropFunctionStmt'
|
||||
|
||||
def help_functions(self):
|
||||
return 'functions'
|
||||
|
||||
def help_create_aggregate(self):
|
||||
return 'createAggregateStmt'
|
||||
|
||||
def help_drop_aggregate(self):
|
||||
return 'dropAggregateStmt'
|
||||
|
||||
def help_aggregates(self):
|
||||
return 'aggregates'
|
||||
|
||||
def help_create_trigger(self):
|
||||
return 'createTriggerStmt'
|
||||
|
||||
def help_drop_trigger(self):
|
||||
return 'dropTriggerStmt'
|
||||
|
||||
def help_create_materialized_view(self):
|
||||
return 'createMVStmt'
|
||||
|
||||
def help_alter_materialized_view(self):
|
||||
return 'alterMVStmt'
|
||||
|
||||
def help_drop_materialized_view(self):
|
||||
return 'dropMVStmt'
|
||||
|
||||
def help_keywords(self):
|
||||
return 'appendixA'
|
||||
|
||||
def help_create_user(self):
|
||||
return 'createUserStmt'
|
||||
|
||||
def help_alter_user(self):
|
||||
return 'alterUserStmt'
|
||||
|
||||
def help_drop_user(self):
|
||||
return 'dropUserStmt'
|
||||
|
||||
def help_list_users(self):
|
||||
return 'listUsersStmt'
|
||||
|
||||
def help_create_role(self):
|
||||
return 'createRoleStmt'
|
||||
|
||||
def help_drop_role(self):
|
||||
return 'dropRoleStmt'
|
||||
|
||||
def help_list_roles(self):
|
||||
return 'listRolesStmt'
|
||||
|
||||
def help_permissions(self):
|
||||
return 'permissions'
|
||||
|
||||
def help_list_permissions(self):
|
||||
return 'listPermissionsStmt'
|
||||
|
||||
def help_grant(self):
|
||||
return 'grantRoleStmt'
|
||||
|
||||
def help_revoke(self):
|
||||
return 'revokeRoleStmt'
|
||||
def get_html_anchor(topic):
|
||||
return html_help_topics[topic]
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ def get_extensions():
|
|||
from Cython.Build import cythonize
|
||||
return cythonize("cqlshlib/copyutil.py")
|
||||
|
||||
|
||||
setup(
|
||||
name="cassandra-pylib",
|
||||
description="Cassandra Python Libraries",
|
||||
|
|
|
|||
Loading…
Reference in New Issue