# encoding: utf8
from optparse import OptionParser
import os
-import pkg_resources
import sys
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:
`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
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)
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})" \
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)
-import os
-import pkg_resources
-
from sqlalchemy import MetaData, Table, create_engine, orm
+from ..defaults import get_default_db_uri
from .tables import metadata
+
def connect(uri=None, session_args={}, engine_args={}):
"""Connects to the requested URI. Returns a session object.
Calling this function also binds the metadata object to the created engine.
"""
- # Fall back to the environment, then a URI within the package
- if not uri:
- uri = os.environ.get('POKEDEX_DB_ENGINE', None)
-
- if not uri:
- sqlite_path = pkg_resources.resource_filename('pokedex',
- 'data/pokedex.sqlite')
- uri = 'sqlite:///' + sqlite_path
+ # If we didn't get a uri, fall back to the default
+ if uri is None:
+ uri = get_default_db_uri()
### Do some fixery for MySQL
if uri[0:5] == 'mysql':
import csv
import fnmatch
import os.path
-import pkg_resources
import sys
from sqlalchemy.orm.attributes import instrumentation_registry
from pokedex.db import metadata
import pokedex.db.tables as tables
+from pokedex.defaults import get_default_csv_dir
def _get_table_names(metadata, patterns):
print_start, print_status, print_done = _get_verbose_prints(verbose)
- if not directory:
- directory = pkg_resources.resource_filename('pokedex', 'data/csv')
+ if directory is None:
+ directory = get_default_csv_dir()
table_names = _get_table_names(metadata, tables)
table_objs = [metadata.tables[name] for name in table_names]
if not directory:
- directory = pkg_resources.resource_filename('pokedex', 'data/csv')
+ directory = get_default_csv_dir()
table_names = _get_table_names(metadata, tables)
table_names.sort()
--- /dev/null
+""" pokedex.defaults - logic for finding default paths """
+
+import os
+import pkg_resources
+
+def get_default_db_uri_with_origin():
+ uri = os.environ.get('POKEDEX_DB_ENGINE', None)
+ origin = 'environment'
+
+ if uri is None:
+ sqlite_path = pkg_resources.resource_filename('pokedex',
+ 'data/pokedex.sqlite')
+ uri = 'sqlite:///' + sqlite_path
+ origin = 'default'
+
+ return uri, origin
+
+def get_default_index_dir_with_origin():
+ index_dir = os.environ.get('POKEDEX_INDEX_DIR', None)
+ origin = 'environment'
+
+ if index_dir is None:
+ index_dir = pkg_resources.resource_filename('pokedex',
+ 'data/whoosh-index')
+ origin = 'default'
+
+ return index_dir, origin
+
+def get_default_csv_dir_with_origin():
+ csv_dir = pkg_resources.resource_filename('pokedex', 'data/csv')
+ origin = 'default'
+
+ return csv_dir, origin
+
+
+def get_default_db_uri():
+ return get_default_db_uri_with_origin()[0]
+
+def get_default_index_dir():
+ return get_default_index_dir_with_origin()[0]
+
+def get_default_csv_dir():
+ return get_default_csv_dir_with_origin()[0]
+
+
# encoding: utf8
from collections import namedtuple
import os, os.path
-import pkg_resources
import random
import re
import shutil
from pokedex.db import connect
import pokedex.db.tables as tables
from pokedex.roomaji import romanize
+from pokedex.defaults import get_default_index_dir
__all__ = ['PokedexLookup']
# By the time this returns, self.index, self.speller, and self.session
# must be set
- # Defaults
- if not directory:
- directory = os.environ.get('POKEDEX_INDEX_DIR', None)
+ # If a directory was not given, use the default
+ if directory is None:
+ directory = get_default_index_dir()
- if not directory:
- directory = pkg_resources.resource_filename('pokedex',
- 'data/whoosh-index')
self.directory = directory
if session: