Skip to content

Commit

Permalink
Avoid executing writers constructor when import pytablewriter
Browse files Browse the repository at this point in the history
  • Loading branch information
thombashi committed Nov 25, 2018
1 parent 677ec87 commit 9fd9631
Show file tree
Hide file tree
Showing 21 changed files with 90 additions and 57 deletions.
58 changes: 24 additions & 34 deletions pytablewriter/_table_format.py
Expand Up @@ -69,140 +69,130 @@ class TableFormat(enum.Enum):
Enum to represent table format attributes.
"""

CSV = (
[CsvTableWriter().format_name],
CsvTableWriter,
FormatAttr.FILE | FormatAttr.TEXT,
["csv"],
)
ELASTICSEARCH = ([ElasticsearchWriter().format_name], ElasticsearchWriter, FormatAttr.API, [])
CSV = ([CsvTableWriter.FORMAT_NAME], CsvTableWriter, FormatAttr.FILE | FormatAttr.TEXT, ["csv"])
ELASTICSEARCH = ([ElasticsearchWriter.FORMAT_NAME], ElasticsearchWriter, FormatAttr.API, [])
EXCEL_XLS = (
[ExcelXlsTableWriter().format_name],
[ExcelXlsTableWriter.FORMAT_NAME],
ExcelXlsTableWriter,
FormatAttr.FILE | FormatAttr.BIN | FormatAttr.SECONDARY_NAME,
["xls"],
)
EXCEL_XLSX = (
[ExcelXlsxTableWriter().format_name],
[ExcelXlsxTableWriter.FORMAT_NAME],
ExcelXlsxTableWriter,
FormatAttr.FILE | FormatAttr.BIN,
["xlsx"],
)
HTML = (
[HtmlTableWriter().format_name, "htm"],
[HtmlTableWriter.FORMAT_NAME, "htm"],
HtmlTableWriter,
FormatAttr.FILE | FormatAttr.TEXT,
["html", "htm"],
)
JAVASCRIPT = (
[JavaScriptTableWriter().format_name, "js"],
[JavaScriptTableWriter.FORMAT_NAME, "js"],
JavaScriptTableWriter,
FormatAttr.FILE | FormatAttr.TEXT | FormatAttr.SOURCECODE,
["js"],
)
JSON = (
[JsonTableWriter().format_name],
[JsonTableWriter.FORMAT_NAME],
JsonTableWriter,
FormatAttr.FILE | FormatAttr.TEXT,
["json"],
)
JSON_LINES = (
[JsonLinesTableWriter().format_name, "jsonl", "ldjson", "ndjson"],
[JsonLinesTableWriter.FORMAT_NAME, "jsonl", "ldjson", "ndjson"],
JsonLinesTableWriter,
FormatAttr.FILE | FormatAttr.TEXT,
["jsonl", "ldjson", "ndjson"],
)
LATEX_MATRIX = (
[LatexMatrixWriter().format_name],
[LatexMatrixWriter.FORMAT_NAME],
LatexMatrixWriter,
FormatAttr.FILE | FormatAttr.TEXT,
["tex"],
)
LATEX_TABLE = (
[LatexTableWriter().format_name],
[LatexTableWriter.FORMAT_NAME],
LatexTableWriter,
FormatAttr.FILE | FormatAttr.TEXT | FormatAttr.SECONDARY_EXT,
["tex"],
)
LTSV = (
[LtsvTableWriter().format_name],
[LtsvTableWriter.FORMAT_NAME],
LtsvTableWriter,
FormatAttr.FILE | FormatAttr.TEXT,
["ltsv"],
)
MARKDOWN = (
[MarkdownTableWriter().format_name, "md"],
[MarkdownTableWriter.FORMAT_NAME, "md"],
MarkdownTableWriter,
FormatAttr.FILE | FormatAttr.TEXT,
["md"],
)
MEDIAWIKI = (
[MediaWikiTableWriter().format_name],
[MediaWikiTableWriter.FORMAT_NAME],
MediaWikiTableWriter,
FormatAttr.FILE | FormatAttr.TEXT,
[],
)
NULL = ([NullTableWriter().format_name], NullTableWriter, FormatAttr.NONE, [])
NULL = ([NullTableWriter.FORMAT_NAME], NullTableWriter, FormatAttr.NONE, [])
NUMPY = (
[NumpyTableWriter().format_name],
[NumpyTableWriter.FORMAT_NAME],
NumpyTableWriter,
FormatAttr.FILE | FormatAttr.TEXT | FormatAttr.SOURCECODE | FormatAttr.SECONDARY_EXT,
["py"],
)
PANDAS = (
[PandasDataFrameWriter().format_name],
[PandasDataFrameWriter.FORMAT_NAME],
PandasDataFrameWriter,
FormatAttr.FILE | FormatAttr.TEXT | FormatAttr.SOURCECODE | FormatAttr.SECONDARY_EXT,
["py"],
)
PYTHON = (
[PythonCodeTableWriter().format_name, "py"],
[PythonCodeTableWriter.FORMAT_NAME, "py"],
PythonCodeTableWriter,
FormatAttr.FILE | FormatAttr.TEXT | FormatAttr.SOURCECODE,
["py"],
)
RST_CSV_TABLE = (
[RstCsvTableWriter().format_name, "rst_csv"],
[RstCsvTableWriter.FORMAT_NAME, "rst_csv"],
RstCsvTableWriter,
FormatAttr.FILE | FormatAttr.TEXT | FormatAttr.SECONDARY_EXT,
["rst"],
)
RST_GRID_TABLE = (
[RstGridTableWriter().format_name, "rst_grid", "rst"],
[RstGridTableWriter.FORMAT_NAME, "rst_grid", "rst"],
RstGridTableWriter,
FormatAttr.FILE | FormatAttr.TEXT,
["rst"],
)
RST_SIMPLE_TABLE = (
[RstSimpleTableWriter().format_name, "rst_simple"],
[RstSimpleTableWriter.FORMAT_NAME, "rst_simple"],
RstSimpleTableWriter,
FormatAttr.FILE | FormatAttr.TEXT | FormatAttr.SECONDARY_EXT,
["rst"],
)
SPACE_ALIGNED = (
[SpaceAlignedTableWriter().format_name],
[SpaceAlignedTableWriter.FORMAT_NAME],
SpaceAlignedTableWriter,
FormatAttr.FILE | FormatAttr.TEXT,
[],
)
SQLITE = (
[SqliteTableWriter().format_name],
[SqliteTableWriter.FORMAT_NAME],
SqliteTableWriter,
FormatAttr.FILE | FormatAttr.BIN,
["sqlite", "sqlite3"],
)
TOML = (
[TomlTableWriter().format_name],
[TomlTableWriter.FORMAT_NAME],
TomlTableWriter,
FormatAttr.FILE | FormatAttr.TEXT,
["toml"],
)
TSV = (
[TsvTableWriter().format_name],
TsvTableWriter,
FormatAttr.FILE | FormatAttr.TEXT,
["tsv"],
)
TSV = ([TsvTableWriter.FORMAT_NAME], TsvTableWriter, FormatAttr.FILE | FormatAttr.TEXT, ["tsv"])

@property
def name_list(self):
Expand Down
4 changes: 3 additions & 1 deletion pytablewriter/writer/_elasticsearch.py
Expand Up @@ -50,9 +50,11 @@ class ElasticsearchWriter(AbstractTableWriter):
:ref:`example-elasticsearch-table-writer`
"""

FORMAT_NAME = "elasticsearch"

@property
def format_name(self):
return "elasticsearch"
return self.FORMAT_NAME

@property
def support_split_write(self):
Expand Down
4 changes: 3 additions & 1 deletion pytablewriter/writer/_null.py
Expand Up @@ -11,9 +11,11 @@


class NullTableWriter(IndentationInterface, TextWriterInterface, TableWriterInterface):
FORMAT_NAME = "null"

@property
def format_name(self):
return "null"
return self.FORMAT_NAME

@property
def support_split_write(self):
Expand Down
4 changes: 3 additions & 1 deletion pytablewriter/writer/binary/_excel.py
Expand Up @@ -19,9 +19,11 @@ class ExcelTableWriter(AbstractBinaryTableWriter):
An abstract class of a table writer for Excel file format.
"""

FORMAT_NAME = "excel"

@property
def format_name(self):
return "excel"
return self.FORMAT_NAME

@property
def support_split_write(self):
Expand Down
4 changes: 3 additions & 1 deletion pytablewriter/writer/binary/_sqlite.py
Expand Up @@ -25,9 +25,11 @@ class SqliteTableWriter(AbstractBinaryTableWriter):
:ref:`example-sqlite-table-writer`
"""

FORMAT_NAME = "sqlite"

@property
def format_name(self):
return "sqlite"
return self.FORMAT_NAME

@property
def support_split_write(self):
Expand Down
4 changes: 3 additions & 1 deletion pytablewriter/writer/text/_csv.py
Expand Up @@ -16,9 +16,11 @@ class CsvTableWriter(TextTableWriter):
:ref:`example-csv-table-writer`
"""

FORMAT_NAME = "csv"

@property
def format_name(self):
return "csv"
return self.FORMAT_NAME

@property
def support_split_write(self):
Expand Down
4 changes: 3 additions & 1 deletion pytablewriter/writer/text/_html.py
Expand Up @@ -21,9 +21,11 @@ class HtmlTableWriter(TextTableWriter):
A table writer class for HTML format.
"""

FORMAT_NAME = "html"

@property
def format_name(self):
return "html"
return self.FORMAT_NAME

@property
def support_split_write(self):
Expand Down
4 changes: 3 additions & 1 deletion pytablewriter/writer/text/_json.py
Expand Up @@ -40,9 +40,11 @@ class JsonTableWriter(IndentationTextTableWriter):
- |nan|: written as ``NaN``
"""

FORMAT_NAME = "json"

@property
def format_name(self):
return "json"
return self.FORMAT_NAME

@property
def support_split_write(self):
Expand Down
4 changes: 3 additions & 1 deletion pytablewriter/writer/text/_jsonlines.py
Expand Up @@ -16,9 +16,11 @@ class JsonLinesTableWriter(JsonTableWriter):
A table writer class for JSON lines format.
"""

FORMAT_NAME = "json_lines"

@property
def format_name(self):
return "json_lines"
return self.FORMAT_NAME

@property
def support_split_write(self):
Expand Down
7 changes: 5 additions & 2 deletions pytablewriter/writer/text/_latex.py
Expand Up @@ -93,11 +93,12 @@ class LatexMatrixWriter(LatexWriter):
:ref:`example-latex-matrix-writer`
"""

FORMAT_NAME = "latex_matrix"
_RE_VAR = re.compile(r"^[a-zA-Z]+_\{[a-zA-Z0-9]+\}$")

@property
def format_name(self):
return "latex_matrix"
return self.FORMAT_NAME

def __init__(self):
super(LatexMatrixWriter, self).__init__()
Expand Down Expand Up @@ -159,9 +160,11 @@ class LatexTableWriter(LatexWriter):
:ref:`example-latex-table-writer`
"""

FORMAT_NAME = "latex_table"

@property
def format_name(self):
return "latex_table"
return self.FORMAT_NAME

def __init__(self):
super(LatexTableWriter, self).__init__()
Expand Down
4 changes: 3 additions & 1 deletion pytablewriter/writer/text/_ltsv.py
Expand Up @@ -15,9 +15,11 @@ class LtsvTableWriter(CsvTableWriter):
`Labeled Tab-separated Values (LTSV) <http://ltsv.org/>`__ format.
"""

FORMAT_NAME = "ltsv"

@property
def format_name(self):
return "ltsv"
return self.FORMAT_NAME

@property
def support_split_write(self):
Expand Down
4 changes: 3 additions & 1 deletion pytablewriter/writer/text/_markdown.py
Expand Up @@ -17,9 +17,11 @@ class MarkdownTableWriter(IndentationTextTableWriter):
A table writer class for Markdown format.
"""

FORMAT_NAME = "markdown"

@property
def format_name(self):
return "markdown"
return self.FORMAT_NAME

@property
def support_split_write(self):
Expand Down
3 changes: 2 additions & 1 deletion pytablewriter/writer/text/_mediawiki.py
Expand Up @@ -22,11 +22,12 @@ class MediaWikiTableWriter(TextTableWriter):
:ref:`example-mediawiki-table-writer`
"""

FORMAT_NAME = "mediawiki"
__RE_TABLE_SEQUENCE = re.compile(r"^[\s]+[*|#]+")

@property
def format_name(self):
return "mediawiki"
return self.FORMAT_NAME

@property
def support_split_write(self):
Expand Down
12 changes: 9 additions & 3 deletions pytablewriter/writer/text/_rst.py
Expand Up @@ -57,9 +57,11 @@ class RstCsvTableWriter(RstTableWriter):
format.
"""

FORMAT_NAME = "rst_csv_table"

@property
def format_name(self):
return "rst_csv_table"
return self.FORMAT_NAME

@property
def support_split_write(self):
Expand Down Expand Up @@ -148,9 +150,11 @@ class RstGridTableWriter(RstTableWriter):
- |None| values are written as an empty string
"""

FORMAT_NAME = "rst_grid_table"

@property
def format_name(self):
return "rst_grid_table"
return self.FORMAT_NAME

@property
def support_split_write(self):
Expand Down Expand Up @@ -180,9 +184,11 @@ class RstSimpleTableWriter(RstTableWriter):
- |None| values are written as an empty string
"""

FORMAT_NAME = "rst_simple_table"

@property
def format_name(self):
return "rst_simple_table"
return self.FORMAT_NAME

@property
def support_split_write(self):
Expand Down
4 changes: 3 additions & 1 deletion pytablewriter/writer/text/_spacealigned.py
Expand Up @@ -21,9 +21,11 @@ class SpaceAlignedTableWriter(CsvTableWriter):
:ref:`example-space-aligned-table-writer`
"""

FORMAT_NAME = "space_aligned"

@property
def format_name(self):
return "space_aligned"
return self.FORMAT_NAME

def __init__(self):
super(SpaceAlignedTableWriter, self).__init__()
Expand Down

0 comments on commit 9fd9631

Please sign in to comment.