Skip to content

Preliminary format refactor #20341

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 26 commits into from
Mar 14, 2018
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
fb79b19
Separating the formatters into different files
shangyian Mar 8, 2018
d57630d
Fixing flake8 issues
shangyian Mar 8, 2018
d4bcb17
Changing _put_lines from protected function
shangyian Mar 8, 2018
dc0778a
Adding back CSVFormatter to be compatible
shangyian Mar 8, 2018
13ba22f
Some small changes based on feedback
shangyian Mar 8, 2018
fcfb87a
flake8 fixes
shangyian Mar 8, 2018
7b26f2c
changing csv import name or else conflicts
shangyian Mar 8, 2018
d6f4c8e
renaming because of naming conflicts otherwise
shangyian Mar 8, 2018
3afd771
Merge branch 'master' into PR_TOOL_MERGE_PR_20051
jreback Mar 10, 2018
f8abfec
clean up imports
jreback Mar 10, 2018
196220b
rename csv -> csvs
jreback Mar 10, 2018
6451eb5
Removing io.formats.common and moving functions to formats.format
shangyian Mar 10, 2018
1b4182a
Fixing imports
shangyian Mar 10, 2018
8e5fdec
Separating the formatters into different files
shangyian Mar 8, 2018
e114ba9
Fixing flake8 issues
shangyian Mar 8, 2018
b3e5ff4
Changing _put_lines from protected function
shangyian Mar 8, 2018
832d26e
Adding back CSVFormatter to be compatible
shangyian Mar 8, 2018
45f6aac
Some small changes based on feedback
shangyian Mar 8, 2018
fae177b
flake8 fixes
shangyian Mar 8, 2018
2cd9648
changing csv import name or else conflicts
shangyian Mar 8, 2018
691aa6c
renaming because of naming conflicts otherwise
shangyian Mar 8, 2018
28b66dc
clean up imports
jreback Mar 10, 2018
764533c
rename csv -> csvs
jreback Mar 10, 2018
719b02c
Removing io.formats.common and moving functions to formats.format
shangyian Mar 10, 2018
de39e22
Fixing imports
shangyian Mar 10, 2018
c9b4504
Merge branch 'prelim_format_refactor' of github.com:shangyian/pandas …
shangyian Mar 14, 2018
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
clean up imports
  • Loading branch information
jreback authored and shangyian committed Mar 14, 2018
commit 28b66dc790cf4380f52476afbdea081924a99f08
27 changes: 14 additions & 13 deletions pandas/core/frame.py
Original file line number Diff line number Diff line change
Expand Up @@ -92,8 +92,8 @@
import pandas.core.common as com
import pandas.core.nanops as nanops
import pandas.core.ops as ops
import pandas.io.formats.format as fmt
import pandas.io.formats.console as console
import pandas.io.formats.format as fmt
from pandas.io.formats.printing import pprint_thing
import pandas.plotting._core as gfx

Expand Down Expand Up @@ -1695,18 +1695,19 @@ def to_csv(self, path_or_buf=None, sep=",", na_rep='', float_format=None,
else:
tupleize_cols = False

formatter = fmt.CSVFormatter(self, path_or_buf,
line_terminator=line_terminator, sep=sep,
encoding=encoding,
compression=compression, quoting=quoting,
na_rep=na_rep, float_format=float_format,
cols=columns, header=header, index=index,
index_label=index_label, mode=mode,
chunksize=chunksize, quotechar=quotechar,
tupleize_cols=tupleize_cols,
date_format=date_format,
doublequote=doublequote,
escapechar=escapechar, decimal=decimal)
from pandas.io.formats.csv import CSVFormatter
formatter = CSVFormatter(self, path_or_buf,
line_terminator=line_terminator, sep=sep,
encoding=encoding,
compression=compression, quoting=quoting,
na_rep=na_rep, float_format=float_format,
cols=columns, header=header, index=index,
index_label=index_label, mode=mode,
chunksize=chunksize, quotechar=quotechar,
tupleize_cols=tupleize_cols,
date_format=date_format,
doublequote=doublequote,
escapechar=escapechar, decimal=decimal)
formatter.save()

if path_or_buf is None:
Expand Down
23 changes: 0 additions & 23 deletions pandas/io/formats/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
Common helper methods used in different submodules of pandas.io.formats
"""

from pandas.core.dtypes.common import is_integer
from pandas import compat


Expand Down Expand Up @@ -61,25 +60,3 @@ def buffer_put_lines(buf, lines):
if any(isinstance(x, compat.text_type) for x in lines):
lines = [compat.text_type(x) for x in lines]
buf.write('\n'.join(lines))


class TableFormatter(object):

is_truncated = False
show_dimensions = None

@property
def should_show_dimensions(self):
return (self.show_dimensions is True or
(self.show_dimensions == 'truncate' and self.is_truncated))

def _get_formatter(self, i):
if isinstance(self.formatters, (list, tuple)):
if is_integer(i):
return self.formatters[i]
else:
return None
else:
if is_integer(i) and i not in self.columns:
i = self.columns[i]
return self.formatters.get(i, None)
File renamed without changes.
30 changes: 25 additions & 5 deletions pandas/io/formats/format.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
is_integer_dtype,
is_interval_dtype,
is_datetimetz,
is_integer,
is_float,
is_scalar,
is_numeric_dtype,
Expand All @@ -28,16 +29,11 @@
from pandas import compat
from pandas.compat import (StringIO, lzip, map, zip, u)

from pandas.io.formats.html_format import HTMLFormatter
from pandas.io.formats.latex_format import LatexFormatter
from pandas.io.formats.csv_format import CSVFormatter

from pandas.io.formats.terminal import get_terminal_size
from pandas.core.config import get_option, set_option
from pandas.io.common import (_expand_user, _stringify_path)
from pandas.io.formats.printing import adjoin, justify, pprint_thing
from pandas._libs import lib
from pandas.io.formats.common import TableFormatter

from pandas._libs.tslib import (iNaT, Timestamp, Timedelta,
format_array_from_datetime)
Expand Down Expand Up @@ -352,6 +348,28 @@ def _get_adjustment():
return TextAdjustment()


class TableFormatter(object):

is_truncated = False
show_dimensions = None

@property
def should_show_dimensions(self):
return (self.show_dimensions is True or
(self.show_dimensions == 'truncate' and self.is_truncated))

def _get_formatter(self, i):
if isinstance(self.formatters, (list, tuple)):
if is_integer(i):
return self.formatters[i]
else:
return None
else:
if is_integer(i) and i not in self.columns:
i = self.columns[i]
return self.formatters.get(i, None)


class DataFrameFormatter(TableFormatter):
"""
Render a DataFrame
Expand Down Expand Up @@ -676,6 +694,7 @@ def to_latex(self, column_format=None, longtable=False, encoding=None,
Render a DataFrame to a LaTeX tabular/longtable environment output.
"""

from pandas.io.formats.latex import LatexFormatter
latex_renderer = LatexFormatter(self, column_format=column_format,
longtable=longtable,
multicolumn=multicolumn,
Expand Down Expand Up @@ -720,6 +739,7 @@ def to_html(self, classes=None, notebook=False, border=None):

.. versionadded:: 0.19.0
"""
from pandas.io.formats.html import HTMLFormatter
html_renderer = HTMLFormatter(self, classes=classes,
max_rows=self.max_rows,
max_cols=self.max_cols,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,9 @@
OrderedDict, unichr)
from pandas.core.config import get_option
from pandas.io.formats.printing import pprint_thing
from pandas.io.formats.common import (get_level_lengths,
TableFormatter, buffer_put_lines)
from pandas.io.formats.common import (
get_level_lengths, buffer_put_lines)
from pandas.io.formats.format import TableFormatter


class HTMLFormatter(TableFormatter):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@

from pandas.core.index import MultiIndex
from pandas import compat
from pandas.compat import (range, map, zip, u)
from pandas.io.formats.common import TableFormatter
from pandas.compat import range, map, zip, u
from pandas.io.formats.format import TableFormatter
import numpy as np


Expand Down