Skip to content

Commit

Permalink
Refactoring: simplify logging
Browse files Browse the repository at this point in the history
  • Loading branch information
thombashi committed Jun 25, 2018
1 parent 82fb362 commit cbbbcd6
Show file tree
Hide file tree
Showing 9 changed files with 53 additions and 61 deletions.
2 changes: 1 addition & 1 deletion requirements/requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@ nbformat>=4.4.0
path.py
pytablereader>=0.20.0
SimpleSQLite>=0.23.0
sqliteschema>=0.9.7
sqliteschema>=0.10.1
typepy>=0.1.0
33 changes: 6 additions & 27 deletions sqlitebiter/_common.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,33 +4,12 @@
.. codeauthor:: Tsuyoshi Hombashi <tsuyoshi.hombashi@gmail.com>
'''

from __future__ import absolute_import
from __future__ import absolute_import, unicode_literals

from sqliteschema import SqliteSchemaExtractor

from ._const import MAX_VERBOSITY_LEVEL
def get_success_message(source, schema_extractor, table_name, verbosity_level):
table_schema = schema_extractor.fetch_table_schema(table_name.strip())


def get_success_message(verbosity_level, source, dst_table_name):
message_template = u"convert '{:s}' to '{:s}' table"

return message_template.format(source, dst_table_name.strip())


def get_schema_extractor(source, verbosity_level):
found_ptw = True
try:
import pytablewriter # noqa: W0611
except ImportError:
found_ptw = False

if verbosity_level >= MAX_VERBOSITY_LEVEL and found_ptw:
return SqliteSchemaExtractor(source, verbosity_level=0, output_format="table")

if verbosity_level >= 1:
return SqliteSchemaExtractor(source, verbosity_level=3, output_format="text")

if verbosity_level == 0:
return SqliteSchemaExtractor(source, verbosity_level=0, output_format="text")

raise ValueError("invalid verbosity_level: {}".format(verbosity_level))
return "convert '{source:s}' to '{table_info:s}' table".format(
source=source,
table_info=table_schema.dumps(output_format="text", verbosity_level=verbosity_level))
4 changes: 2 additions & 2 deletions sqlitebiter/_dict_converter.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,5 +80,5 @@ def __write(self, table_data):
self.__result_counter.inc_success()

self.__logger.info(get_success_message(
self.__verbosity_level, self.__source,
self.__schema_extractor.get_table_schema_text(sqlite_tabledata.table_name)))
self.__source, self.__schema_extractor, sqlite_tabledata.table_name,
self.__verbosity_level))
16 changes: 4 additions & 12 deletions sqlitebiter/_table_creator.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
from __future__ import absolute_import

import simplesqlite
from sqliteschema import SqliteSchemaExtractor
from sqliteschema import SQLiteSchemaExtractor


class TableCreator(object):
Expand Down Expand Up @@ -43,18 +43,10 @@ def __require_rename_table(self, src_con, src_table_name):
if not self.__dst_con.has_table(src_table_name):
return False

if (self.__dst_con.fetch_attr_name_list(src_table_name) !=
src_con.fetch_attr_name_list(src_table_name)):
return True
lhs = SQLiteSchemaExtractor(self.__dst_con).fetch_table_schema(src_table_name).as_dict()
rhs = SQLiteSchemaExtractor(src_con).fetch_table_schema(src_table_name).as_dict()

con_schema_extractor = SqliteSchemaExtractor(self.__dst_con, verbosity_level=1)
con_mem_schema_extractor = SqliteSchemaExtractor(src_con, verbosity_level=1)

if (con_schema_extractor.get_database_schema() ==
con_mem_schema_extractor.get_database_schema()):
return False

return True
return lhs != rhs

def __make_unique_table_name(self, table_name_base):
exist_table_name_list = self.__dst_con.fetch_table_name_list()
Expand Down
32 changes: 27 additions & 5 deletions sqlitebiter/subcommand/_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,10 @@

from __future__ import absolute_import, unicode_literals

from .._common import get_schema_extractor
from textwrap import indent

from sqliteschema import SQLiteSchemaExtractor

from .._const import MAX_VERBOSITY_LEVEL, PROGRAM_NAME
from .._counter import ResultCounter
from .._table_creator import TableCreator
Expand All @@ -26,7 +29,7 @@ def __init__(self, logger, con, index_list, verbosity_level, format_name=None, e
self._format_name = format_name
self._encoding = encoding

self._schema_extractor = get_schema_extractor(con, verbosity_level)
self._schema_extractor = SQLiteSchemaExtractor(con)
self._result_counter = ResultCounter()
self._table_creator = TableCreator(logger=self._logger, dst_con=con)

Expand All @@ -40,9 +43,28 @@ def write_completion_message(self):
logger.debug("----- {:s} completed -----".format(PROGRAM_NAME))
logger.info("number of created tables: {:d}".format(self._result_counter.success_count))
if self._result_counter.success_count > 0:
output_format, verbosity_level = self.__get_dump_param()
logger.info(database_path_msg)
logger.debug("----- database schema -----")
logger.debug(get_schema_extractor(
self._con.database_path, MAX_VERBOSITY_LEVEL).dumps())
logger.debug("----- database schema -----\n{}".format(
indent(self._schema_extractor.dumps(
output_format=output_format, verbosity_level=verbosity_level), " ")))
else:
logger.debug(database_path_msg)

def __get_dump_param(self):
found_ptw = True
try:
import pytablewriter # noqa: W0611
except ImportError:
found_ptw = False

if found_ptw:
return ("rst_simple_table", self._verbosity_level)

if self._verbosity_level >= 1:
return ("text", MAX_VERBOSITY_LEVEL)

if self._verbosity_level == 0:
return ("text", 1)

raise ValueError("invalid verbosity_level: {}".format(self._verbosity_level))
7 changes: 3 additions & 4 deletions sqlitebiter/subcommand/_file.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,7 @@ def convert(self, file_path):
nb=load_ipynb_file(file_path, encoding=self._encoding))
for table_name in con.fetch_table_name_list():
logger.info(get_success_message(
verbosity_level, file_path,
self._schema_extractor.get_table_schema_text(table_name)))
file_path, self._schema_extractor, table_name, verbosity_level))
result_counter.inc_success()
if result_counter.total_count == convert_count:
TABLE_NOT_FOUND_MSG_FORMAT.format(file_path)
Expand Down Expand Up @@ -88,8 +87,8 @@ def convert(self, file_path):
return

logger.info(get_success_message(
verbosity_level, file_path,
self._schema_extractor.get_table_schema_text(sqlite_tabledata.table_name)))
file_path, self._schema_extractor, sqlite_tabledata.table_name,
verbosity_level))
except ptr.OpenError as e:
logger.error("{:s}: open error: file={}, message='{}'".format(
e.__class__.__name__, file_path, str(e)))
Expand Down
4 changes: 2 additions & 2 deletions sqlitebiter/subcommand/_gs.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,8 @@ def convert(self, credentials, title):
result_counter.inc_fail()

logger.info(get_success_message(
verbosity_level, "google sheets",
self._schema_extractor.get_table_schema_text(sqlite_tabledata.table_name)))
"google sheets", self._schema_extractor, sqlite_tabledata.table_name,
verbosity_level))
except ptr.OpenError as e:
logger.error(msgfy.to_error_message(e))
result_counter.inc_fail()
Expand Down
8 changes: 4 additions & 4 deletions sqlitebiter/subcommand/_url.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,8 +64,8 @@ def convert(self, url):
convert_nb(logger, con, result_counter, nb=load_ipynb_url(url, proxies=proxies))
for table_name in con.fetch_table_name_list():
logger.info(get_success_message(
verbosity_level, get_logging_url_path(url),
self._schema_extractor.get_table_schema_text(table_name)))
get_logging_url_path(url), self._schema_extractor, table_name,
verbosity_level))
result_counter.inc_success()
if result_counter.total_count == 0:
TABLE_NOT_FOUND_MSG_FORMAT.format(url)
Expand Down Expand Up @@ -106,8 +106,8 @@ def convert(self, url):
continue

logger.info(get_success_message(
verbosity_level, get_logging_url_path(url),
self._schema_extractor.get_table_schema_text(sqlite_tabledata.table_name)))
get_logging_url_path(url), self._schema_extractor, sqlite_tabledata.table_name,
verbosity_level))
except ptr.ValidationError as e:
is_fail = True
if loader.format_name == "json":
Expand Down
8 changes: 4 additions & 4 deletions test/test_file_subcommand.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
from pytablereader.interface import TableLoader
from sqlitebiter._enum import ExitCode
from sqlitebiter.sqlitebiter import cmd
from sqliteschema import SqliteSchemaExtractor
from sqliteschema import SQLiteSchemaExtractor

from .common import print_test_result, print_traceback
from .dataset import *
Expand Down Expand Up @@ -288,10 +288,10 @@ def test_normal_format_ssv(self):
[
valid_csv_file_3_1, "aa,ac",
dedent("""\
.. table:: valid_csv_3_1 (3 records)
.. table:: valid_csv_3_1
+--------------+---------+-----------+--------+------+-----+
|Attribute name|Data type|Primary key|Not NULL|Unique|Index|
|Attribute name|Data type|PRIMARY KEY|NOT NULL|UNIQUE|Index|
+==============+=========+===========+========+======+=====+
|aa |REAL | | | |X |
+--------------+---------+-----------+--------+------+-----+
Expand All @@ -314,7 +314,7 @@ def test_normal_index(self, file_creator, index_list, expected):

assert result.exit_code == ExitCode.SUCCESS

extractor = SqliteSchemaExtractor(db_path)
extractor = SQLiteSchemaExtractor(db_path)

print_test_result(expected=expected, actual=extractor.dumps())

Expand Down

0 comments on commit cbbbcd6

Please sign in to comment.