X-Git-Url: http://git.veekun.com/zzz-pokedex.git/blobdiff_plain/47218a7fb65bb2ad2e1c0808d4a2c56046f3740b..2fee7534634e0f96094500811ae88b2bfae94fc6:/pokedex/__init__.py diff --git a/pokedex/__init__.py b/pokedex/__init__.py index ad11043..e4397af 100644 --- a/pokedex/__init__.py +++ b/pokedex/__init__.py @@ -1,13 +1,14 @@ # encoding: utf8 from optparse import OptionParser import os -import pkg_resources import sys +# XXX importing pokedex.whatever should not import all these import pokedex.db import pokedex.db.load import pokedex.db.tables import pokedex.lookup +from pokedex import defaults def main(): if len(sys.argv) <= 1: @@ -35,8 +36,8 @@ def get_parser(verbose=True): `verbose` is whether or not the options should be verbose by default. """ parser = OptionParser() - parser.add_option('-e', '--engine', dest='engine_uri', default=os.environ.get('POKEDEX_DB_ENGINE', None)) - parser.add_option('-i', '--index', dest='index_dir', default=os.environ.get('POKEDEX_INDEX_DIR', None)) + parser.add_option('-e', '--engine', dest='engine_uri', default=None) + parser.add_option('-i', '--index', dest='index_dir', default=None) parser.add_option('-q', '--quiet', dest='verbose', default=verbose, action='store_false') parser.add_option('-v', '--verbose', dest='verbose', default=verbose, action='store_true') return parser @@ -46,25 +47,17 @@ def get_session(options): session. """ - # WARNING: This logic duplicates that in db.connect(), because there's no - # other reliable way to tell where the engine actually came from. Keep it - # up to date! engine_uri = options.engine_uri - got_from = None - if engine_uri: - got_from = 'command line' - else: - engine_uri = os.environ.get('POKEDEX_DB_ENGINE', None) - if engine_uri: - got_from = 'environment' - else: - got_from = 'default setting' + got_from = 'command line' + + if engine_uri is None: + engine_uri, got_from = defaults.get_default_db_uri_with_origin() session = pokedex.db.connect(engine_uri) if options.verbose: - print "Connected to database {engine} (from {got_from})" \ - .format(engine=session.bind.url, got_from=got_from) + print "Connected to database %(engine)s (from %(got_from)s)" \ + % dict(engine=session.bind.url, got_from=got_from) return session @@ -73,28 +66,18 @@ def get_lookup(options, session=None, recreate=False): PokedexLookup object. """ - # WARNING: This logic duplicates that in PokedexLookup, because there's no - # other reliable way to tell where the engine actually came from. Keep it - # up to date! if recreate and not session: raise ValueError("get_lookup() needs an explicit session to regen the index") index_dir = options.index_dir - got_from = None - if index_dir: - got_from = 'command line' - else: - index_dir = os.environ.get('POKEDEX_INDEX_DIR', None) - if index_dir: - got_from = 'environment' - else: - index_dir = pkg_resources.resource_filename('pokedex', - 'data/whoosh-index') - got_from = 'default setting' + got_from = 'command line' + + if index_dir is None: + index_dir, got_from = defaults.get_default_index_dir_with_origin() if options.verbose: - print "Opened lookup index {index_dir} (from {got_from})" \ - .format(index_dir=index_dir, got_from=got_from) + print "Opened lookup index %(index_dir)s (from %(got_from)s)" \ + % dict(index_dir=index_dir, got_from=got_from) lookup = pokedex.lookup.PokedexLookup(index_dir, session=session) @@ -109,16 +92,14 @@ def get_csv_directory(options): if not options.verbose: return - if options.directory: - csvdir = options.directory - got_from = 'command line' - else: - # This is the same as the db.load default - csvdir = pkg_resources.resource_filename('pokedex', 'data/csv') - got_from = 'default setting' + csvdir = options.directory + got_from = 'command line' + + if csvdir is None: + csvdir, got_from = defaults.get_default_csv_dir_with_origin() - print "Using CSV directory {csvdir} (from {got_from})" \ - .format(csvdir=csvdir, got_from=got_from) + print "Using CSV directory %(csvdir)s (from %(got_from)s)" \ + % dict(csvdir=csvdir, got_from=got_from) return csvdir @@ -141,6 +122,8 @@ def command_load(*args): parser = get_parser(verbose=True) parser.add_option('-d', '--directory', dest='directory', default=None) parser.add_option('-D', '--drop-tables', dest='drop_tables', default=False, action='store_true') + parser.add_option('-S', '--safe', dest='safe', default=False, action='store_true', + help="Do not use backend-specific optimalizations.") options, tables = parser.parse_args(list(args)) if not options.engine_uri: @@ -156,7 +139,8 @@ def command_load(*args): pokedex.db.load.load(session, directory=options.directory, drop_tables=options.drop_tables, tables=tables, - verbose=options.verbose) + verbose=options.verbose, + safe=options.safe) def command_reindex(*args): parser = get_parser(verbose=True) @@ -177,7 +161,8 @@ def command_setup(*args): session = get_session(options) get_csv_directory(options) pokedex.db.load.load(session, directory=None, drop_tables=True, - verbose=options.verbose) + verbose=options.verbose, + safe=False) lookup = get_lookup(options, session=session, recreate=True)