You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by ca...@codespot.com on 2011/11/07 22:54:35 UTC

[cassandra-dbapi2] push by pcannon@gmail.com - remove cqlsh on 2011-11-07 21:53 GMT

Revision: c3f024086cb8
Author:   paul cannon <pa...@riptano.com>
Date:     Mon Nov  7 13:51:47 2011
Log:      remove cqlsh

http://code.google.com/a/apache-extras.org/p/cassandra-dbapi2/source/detail?r=c3f024086cb8

Deleted:
  /cqlsh
Modified:
  /setup.py

=======================================
--- /cqlsh	Fri Sep  9 10:07:55 2011
+++ /dev/null
@@ -1,334 +0,0 @@
-#!/usr/bin/env python
-
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from collections import defaultdict
-from optparse import OptionParser
-from StringIO import StringIO
-
-import cmd
-import sys
-import readline
-import os
-import re
-import string
-import time
-
-try:
-    import cql
-except ImportError:
-    sys.path.append(os.path.abspath(os.path.dirname(__file__)))
-    import cql
-from cql.cursor import _COUNT_DESCRIPTION, _VOID_DESCRIPTION
-
-HISTORY = os.path.join(os.path.expanduser('~'), '.cqlsh')
-CQLTYPES =  
("bytes", "ascii", "utf8", "timeuuid", "uuid", "long", "int", "int32")
-
-RED = "\033[1;31m%s\033[0m"
-GREEN = "\033[1;32m%s\033[0m"
-BLUE = "\033[1;34m%s\033[0m"
-YELLOW = "\033[1;33m%s\033[0m"
-CYAN = "\033[1;36m%s\033[0m"
-MAGENTA = "\033[1;35m%s\033[0m"
-
-def startswith(words, text):
-    return [i for i in words if i.startswith(text)]
-
-class Shell(cmd.Cmd):
-    default_prompt  = "cqlsh> "
-    continue_prompt = "   ... "
-
-    def __init__(self, hostname, port, color=False, username=None,
-            password=None):
-        cmd.Cmd.__init__(self)
-        self.conn = cql.connect(hostname, port, user=username,  
password=password)
-        self.cursor = self.conn.cursor()
-
-        if os.path.exists(HISTORY):
-            readline.read_history_file(HISTORY)
-
-        if sys.stdin.isatty():
-            self.prompt = Shell.default_prompt
-        else:
-            self.prompt = ""
-
-        self.statement = StringIO()
-        self.color = color
-        self.in_comment = False
-        self.in_batch = False
-
-    def reset_statement(self):
-        self.set_prompt(Shell.default_prompt)
-        self.statement.truncate(0)
-
-    def get_statement(self, line):
-        if self.in_comment:
-            if "*/" in line:
-                fragment = line[line.index("*/")+2:]
-                if fragment.strip():
-                    line = fragment
-                    self.in_comment = False
-                else:
-                    self.in_comment = False
-                    self.set_prompt(Shell.default_prompt)
-                    return None
-            else:
-                return None
-
-        if "/*" in line and (not self.in_comment):
-            self.in_comment = True
-            self.set_prompt(Shell.continue_prompt)
-            if line.lstrip().index("/*") != 0:
-                self.statement.write(line[:line.lstrip().index("/*")])
-            return None
-
-        if ["BEGIN", "BATCH"] == line.upper().split()[:2]:
-            self.set_prompt(Shell.continue_prompt)
-            self.in_batch = True
-            self.statement.write("%s\n" % line)
-            return None
-        elif (["APPLY", "BATCH"] == line.upper().split()) and  
self.in_batch:
-            self.in_batch = False
-            self.statement.write("%s\n" % line)
-            try:
-                return self.statement.getvalue()
-            finally:
-                self.reset_statement()
-
-        self.statement.write("%s\n" % line)
-
-        # The end of a statement
-        if not line.endswith(";") or self.in_batch:
-            self.set_prompt(Shell.continue_prompt)
-            return None
-
-        try:
-            return self.statement.getvalue()
-        finally:
-            self.reset_statement()
-
-    def default(self, arg):
-        def scrub_oneline_comments(s):
-            res = re.sub(r'\/\*.*\*\/', '', s)
-            res = re.sub(r'--.*$', '', res)
-            return res
-
-        input = scrub_oneline_comments(arg)
-        if not input.strip(): return
-        statement = self.get_statement(input)
-        if not statement: return
-
-        for i in range(1,4):
-            try:
-                self.cursor.execute(statement)
-                break
-            except cql.IntegrityError, err:
-                self.printerr("Attempt #%d: %s" % (i, str(err)))
-                time.sleep(1*i)
-
-        if self.cursor.description is _VOID_DESCRIPTION:
-            return
-        elif self.cursor.description is _COUNT_DESCRIPTION:
-            self.print_count_result()
-        else:
-            self.print_result()
-
-    def print_count_result(self):
-        if not self.cursor.result:
-            return
-        print 'count'
-        print '-----'
-        print self.cursor.result[0]
-        self.printout("")
-
-    def print_result(self):
-        # first pass: see if we have a static column set
-        last_description = None
-        for row in self.cursor:
-            if last_description is not None and self.cursor.description !=  
last_description:
-                static = False
-                break
-        else:
-            static = True
-        self.cursor._reset()
-
-        if static:
-            self.print_static_result()
-        else:
-            self.print_dynamic_result()
-        self.printout("")
-
-    def print_static_result(self):
-        # first pass, get widths
-        widths = defaultdict(lambda: 0)
-        for row in self.cursor:
-            for desc, value in zip(self.cursor.description, row):
-                name = desc[0]
-                widths[name] = max(widths[name], len(str(name)),  
len(str(value)))
-        self.cursor._reset()
-
-        # print header
-        for desc in self.cursor.description:
-            name = desc[0]
-            width = widths[name]
-            self.printout(" ", newline=False)
-            self.printout(string.rjust(str(name), width), MAGENTA, False)
-            self.printout(" |", newline=False)
-        self.printout("")
-
-        # print row data
-        for row in self.cursor:
-            for desc, value in zip(self.cursor.description, row):
-                name = desc[0]
-                width = widths[desc[0]]
-                self.printout(" ", newline=False)
-                self.printout(string.rjust(str(value), width), YELLOW,  
False)
-                self.printout(" |", newline=False)
-            self.printout("")
-
-    def print_dynamic_result(self):
-        for row in self.cursor:
-            self.printout(" ", newline=False)
-            for desc, value in zip(self.cursor.description, row):
-                name = desc[0]
-                self.printout(str(name), MAGENTA, False)
-                self.printout(",", newline=False)
-                self.printout(str(value), YELLOW, False)
-                self.printout(" | ", newline=False)
-            self.printout("")
-
-    def emptyline(self):
-        pass
-
-    def complete_select(self, text, line, begidx, endidx):
-        keywords = ('FIRST', 'REVERSED', 'FROM', 'WHERE', 'KEY')
-        return startswith(keywords, text.upper())
-    complete_SELECT = complete_select
-
-    def complete_update(self, text, line, begidx, endidx):
-        keywords = ('WHERE', 'KEY', 'SET')
-        return startswith(keywords, text.upper())
-    complete_UPDATE = complete_update
-
-    def complete_create(self, text, line, begidx, endidx):
-        words = line.split()
-        if len(words) < 3:
-            return startswith(['COLUMNFAMILY', 'KEYSPACE'], text.upper())
-
-        common = ['WITH', 'AND']
-
-        if words[1].upper() == 'COLUMNFAMILY':
-            types = startswith(CQLTYPES, text)
-            keywords = startswith(('KEY', 'PRIMARY'), text.upper())
-            props = startswith(("comparator",
-                                "comment",
-                                "row_cache_size",
-                                "key_cache_size",
-                                "read_repair_chance",
-                                "gc_grace_seconds",
-                                "default_validation",
-                                "min_compaction_threshold",
-                                "max_compaction_threshold",
-                                "row_cache_save_period_in_seconds",
-                                "key_cache_save_period_in_seconds",
-                                "memtable_flush_after_mins",
-                                "memtable_throughput_in_mb",
-                                "memtable_operations_in_millions",
-                                "replicate_on_write"), text)
-            return startswith(common, text.upper()) + types + keywords +  
props
-
-        if words[1].upper() == 'KEYSPACE':
-            props =  
("replication_factor", "strategy_options", "strategy_class")
-            return startswith(common, text.upper()) + startswith(props,  
text)
-    complete_CREATE = complete_create
-
-    def complete_drop(self, text, line, begidx, endidx):
-        words = line.split()
-        if len(words) < 3:
-            return startswith(['COLUMNFAMILY', 'KEYSPACE'], text.upper())
-    complete_DROP = complete_drop
-
-    def completenames(self, text, *ignored):
-        cmds =  
startswith(('USE', 'SELECT', 'UPDATE', 'DELETE', 'CREATE', 'DROP'),
-                          text.upper())
-        return cmd.Cmd.completenames(self, text, ignored) + cmds
-
-    def set_prompt(self, prompt):
-        if sys.stdin.isatty():
-            self.prompt = prompt
-
-    def do_EOF(self, arg):
-        if sys.stdin.isatty(): print
-        self.do_exit(None)
-
-    def do_exit(self, arg):
-        sys.exit()
-    do_quit = do_exit
-
-    def printout(self, text, color=None, newline=True, out=sys.stdout):
-        if not color or not self.color:
-            out.write(text)
-        else:
-            out.write(color % text)
-
-        if newline:
-            out.write("\n");
-
-    def printerr(self, text, color=RED, newline=True):
-        self.printout(text, color, newline, sys.stderr)
-
-if __name__ == '__main__':
-    parser = OptionParser(usage = "Usage: %prog [host [port]]")
-    parser.add_option("-C",
-                      "--color",
-                      action="store_true",
-                      help="Enable color output.")
-    parser.add_option("-u", "--username", help="Authenticate as user.")
-    parser.add_option("-p", "--password", help="Authenticate using  
password.")
-    (options, arguments) = parser.parse_args()
-
-    hostname = len(arguments) > 0 and arguments[0] or "localhost"
-
-    if len(arguments) > 1:
-        try:
-            port = int(arguments[1])
-        except ValueError:
-            print >>sys.stderr, "%s is not a valid port number" %  
arguments[1]
-            parser.print_help(file=sys.stderr)
-            sys.exit(1)
-    else:
-        port = 9160
-
-
-    shell = Shell(hostname,
-                  port,
-                  color=options.color,
-                  username=options.username,
-                  password=options.password)
-    while True:
-        try:
-            shell.cmdloop()
-        except SystemExit:
-            readline.write_history_file(HISTORY)
-            break
-        except cql.Error, cqlerr:
-            shell.printerr(str(cqlerr))
-        except KeyboardInterrupt:
-            shell.reset_statement()
-            print
-        except Exception, err:
-            shell.printerr("Exception: %s" % err)
=======================================
--- /setup.py	Tue Sep 27 14:54:00 2011
+++ /setup.py	Mon Nov  7 13:51:47 2011
@@ -27,7 +27,6 @@
      maintainer_email='client-dev@cassandra.apache.org',
      url="http://code.google.com/a/apache-extras.org/p/cassandra-dbapi2",
      packages=["cql", "cql.cassandra"],
-    scripts=["cqlsh"],
      requires=["thrift"],
      provides=["cql"],
      classifiers=[