Skip to content

DEPR: read_table #21948

Closed
Closed
@dahlbaek

Description

@dahlbaek

Went through #18262 looking for an easy task, and deprecating read_table looked like one. Currently, there's a function factory _make_parser_function which produces both read_csv and read_table here:

read_csv = _make_parser_function('read_csv', sep=',')
read_csv = Appender(_read_csv_doc)(read_csv)


read_table = _make_parser_function('read_table', sep='\t')
read_table = Appender(_read_table_doc)(read_table)

Seems to me the simplest solution is wrapping read_table like this:

def depr_read_table(func):
    """Deprecates read_table."""
    from functools import wraps
    @wraps(read_table)
    def depr_func(*args, **kwargs):
        if len(args) > 1 or "sep" in kwargs or "delimiter" in kwargs:
            warnings.warn("read_table is deprecated, use read_csv instead",
                          FutureWarning, stacklevel=2)
        else:
            warnings.warn("read_table is deprecated, use read_csv with "
                          "sep='\\t' instead",
                          FutureWarning, stacklevel=2)
        return func(*args, **kwargs)
    return depr_func
read_table = depr_read_table(read_table)

I would have to find out how to change the docs to declare the function deprecated, but I suppose that is easy...?

Result:

In [1]: import pandas as pd

In [2]: df = pd.DataFrame({"a": [1], "b": [2]})

In [3]: df.to_csv("test.csv", sep="\t")

In [4]: pd.read_table("test.csv", index_col=0)
/home/dahlbaek/virtualenvs/pandas-dev/bin/ipython:1: FutureWarning: read_table is deprecated, use read_csv with sep='\t' instead
  #!/home/dahlbaek/virtualenvs/pandas-dev/bin/python
Out[4]: 
   a  b
0  1  2

In [5]: pd.read_table("test.csv", "\t", index_col=0)
/home/dahlbaek/virtualenvs/pandas-dev/bin/ipython:1: FutureWarning: read_table is deprecated, use read_csv instead
  #!/home/dahlbaek/virtualenvs/pandas-dev/bin/python
Out[5]: 
   a  b
0  1  2

In [6]: pd.read_table("test.csv", sep="\t", index_col=0)
/home/dahlbaek/virtualenvs/pandas-dev/bin/ipython:1: FutureWarning: read_table is deprecated, use read_csv instead
  #!/home/dahlbaek/virtualenvs/pandas-dev/bin/python
Out[6]: 
   a  b
0  1  2

In [7]: pd.read_table("test.csv", delimiter="\t", index_col=0)
/home/dahlbaek/virtualenvs/pandas-dev/bin/ipython:1: FutureWarning: read_table is deprecated, use read_csv instead
  #!/home/dahlbaek/virtualenvs/pandas-dev/bin/python
Out[7]: 
   a  b
0  1  2

In [8]: df
Out[8]: 
   a  b
0  1  2

Any thoughts?

Metadata

Metadata

Assignees

No one assigned

    Labels

    DeprecateFunctionality to remove in pandasIO DataIO issues that don't fit into a more specific label

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions