Skip to content

CLN;: remove compat.lzip #26311

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 2 commits into from
May 8, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
6 changes: 1 addition & 5 deletions pandas/compat/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
Cross-compatible functions for different versions of Python.

Key items to import for compatible code:
* lists: lrange(), lmap(), lzip()
* lists: lrange(), lmap()

Other items:
* platform checker
Expand All @@ -24,10 +24,6 @@ def lrange(*args, **kwargs):
return list(range(*args, **kwargs))


def lzip(*args, **kwargs):
return list(zip(*args, **kwargs))


def lmap(*args, **kwargs):
return list(map(*args, **kwargs))

Expand Down
3 changes: 1 addition & 2 deletions pandas/core/arrays/categorical.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
from pandas._config import get_option

from pandas._libs import algos as libalgos, lib
from pandas.compat import lzip
from pandas.compat.numpy import function as nv
from pandas.util._decorators import (
Appender, Substitution, cache_readonly, deprecate_kwarg)
Expand Down Expand Up @@ -2692,4 +2691,4 @@ def _factorize_from_iterables(iterables):
if len(iterables) == 0:
# For consistency, it should return a list of 2 lists.
return [[], []]
return map(list, lzip(*[_factorize_from_iterable(it) for it in iterables]))
return map(list, zip(*(_factorize_from_iterable(it) for it in iterables)))
6 changes: 3 additions & 3 deletions pandas/core/frame.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
from pandas.util._validators import (validate_bool_kwarg,
validate_axis_style_args)

from pandas.compat import PY36, lmap, lzip, raise_with_traceback
from pandas.compat import PY36, lmap, raise_with_traceback
from pandas.compat.numpy import function as nv
from pandas.core.dtypes.cast import (
maybe_upcast,
Expand Down Expand Up @@ -1752,7 +1752,7 @@ def from_items(cls, items, columns=None, orient='columns'):
"preserve the key order.",
FutureWarning, stacklevel=2)

keys, values = lzip(*items)
keys, values = zip(*items)

if orient == 'columns':
if columns is not None:
Expand Down Expand Up @@ -4429,7 +4429,7 @@ def _maybe_casted_values(index, labels=None):
if isinstance(self.index, MultiIndex):
names = [n if n is not None else ('level_%d' % i)
for (i, n) in enumerate(self.index.names)]
to_insert = lzip(self.index.levels, self.index.codes)
to_insert = zip(self.index.levels, self.index.codes)
else:
default = 'index' if 'index' not in self else 'level_0'
names = ([default] if self.index.name is None
Expand Down
6 changes: 3 additions & 3 deletions pandas/core/generic.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
from pandas._config import config

from pandas._libs import Timestamp, iNaT, properties
from pandas.compat import lzip, set_function_name, to_str
from pandas.compat import set_function_name, to_str
from pandas.compat.numpy import function as nv
from pandas.errors import AbstractMethodError
from pandas.util._decorators import (
Expand Down Expand Up @@ -6502,7 +6502,7 @@ def replace(self, to_replace=None, value=None, inplace=False, limit=None,
regex = True

items = list(to_replace.items())
keys, values = lzip(*items) or ([], [])
keys, values = zip(*items) if items else ([], [])

are_mappings = [is_dict_like(v) for v in values]

Expand All @@ -6516,7 +6516,7 @@ def replace(self, to_replace=None, value=None, inplace=False, limit=None,
value_dict = {}

for k, v in items:
keys, values = lzip(*v.items()) or ([], [])
keys, values = list(zip(*v.items())) or ([], [])
if set(keys) & set(values):
raise ValueError("Replacement not allowed with "
"overlapping keys and values")
Expand Down
7 changes: 3 additions & 4 deletions pandas/core/groupby/generic.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
import numpy as np

from pandas._libs import Timestamp, lib
from pandas.compat import lzip
from pandas.errors import AbstractMethodError
from pandas.util._decorators import Appender, Substitution

Expand Down Expand Up @@ -781,13 +780,13 @@ def _aggregate_multiple_funcs(self, arg, _level):
FutureWarning, stacklevel=3)

columns = list(arg.keys())
arg = list(arg.items())
arg = arg.items()
elif any(isinstance(x, (tuple, list)) for x in arg):
arg = [(x, x) if not isinstance(x, (tuple, list)) else x
for x in arg]

# indicated column order
columns = lzip(*arg)[0]
columns = next(zip(*arg))
else:
# list of functions / function names
columns = []
Expand All @@ -797,7 +796,7 @@ def _aggregate_multiple_funcs(self, arg, _level):
else:
# protect against callables without names
columns.append(com.get_callable_name(f))
arg = lzip(columns, arg)
arg = zip(columns, arg)

results = OrderedDict()
for name, func in arg:
Expand Down
3 changes: 1 addition & 2 deletions pandas/core/groupby/ops.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
from pandas._libs import NaT, iNaT, lib
import pandas._libs.groupby as libgroupby
import pandas._libs.reduction as reduction
from pandas.compat import lzip
from pandas.errors import AbstractMethodError
from pandas.util._decorators import cache_readonly

Expand Down Expand Up @@ -259,7 +258,7 @@ def groups(self):
if len(self.groupings) == 1:
return self.groupings[0].groups
else:
to_groupby = lzip(*(ping.grouper for ping in self.groupings))
to_groupby = zip(*(ping.grouper for ping in self.groupings))
to_groupby = Index(to_groupby)
return self.axis.groupby(to_groupby)

Expand Down
13 changes: 6 additions & 7 deletions pandas/core/indexes/multi.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@

from pandas._libs import (
Timestamp, algos as libalgos, index as libindex, lib, tslibs)
from pandas.compat import lzip
from pandas.compat.numpy import function as nv
from pandas.errors import PerformanceWarning, UnsortedIndexError
from pandas.util._decorators import Appender, cache_readonly, deprecate_kwarg
Expand Down Expand Up @@ -402,7 +401,7 @@ def from_tuples(cls, tuples, sortorder=None, names=None):
elif isinstance(tuples, list):
arrays = list(lib.to_object_array_tuples(tuples).T)
else:
arrays = lzip(*tuples)
arrays = zip(*tuples)

return MultiIndex.from_arrays(arrays, sortorder=sortorder, names=names)

Expand Down Expand Up @@ -511,7 +510,7 @@ def from_frame(cls, df, sortorder=None, names=None):
if not isinstance(df, ABCDataFrame):
raise TypeError("Input must be a DataFrame")

column_names, columns = lzip(*df.iteritems())
column_names, columns = zip(*df.iteritems())
names = column_names if names is None else names
return cls.from_arrays(columns, sortorder=sortorder, names=names)

Expand Down Expand Up @@ -2933,7 +2932,7 @@ def union(self, other, sort=None):
other._ndarray_values],
sort=sort)

return MultiIndex.from_arrays(lzip(*uniq_tuples), sortorder=0,
return MultiIndex.from_arrays(zip(*uniq_tuples), sortorder=0,
names=result_names)

def intersection(self, other, sort=False):
Expand Down Expand Up @@ -2976,7 +2975,7 @@ def intersection(self, other, sort=False):
codes=[[]] * self.nlevels,
names=result_names, verify_integrity=False)
else:
return MultiIndex.from_arrays(lzip(*uniq_tuples), sortorder=0,
return MultiIndex.from_arrays(zip(*uniq_tuples), sortorder=0,
names=result_names)

def difference(self, other, sort=None):
Expand Down Expand Up @@ -3144,7 +3143,7 @@ def isin(self, values, level=None):


def _sparsify(label_list, start=0, sentinel=''):
pivoted = lzip(*label_list)
pivoted = list(zip(*label_list))
k = len(label_list)

result = pivoted[:start + 1]
Expand All @@ -3168,7 +3167,7 @@ def _sparsify(label_list, start=0, sentinel=''):

prev = cur

return lzip(*result)
return list(zip(*result))


def _get_na_rep(dtype):
Expand Down
4 changes: 2 additions & 2 deletions pandas/core/reshape/concat.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

import pandas.core.dtypes.concat as _concat

from pandas import DataFrame, Index, MultiIndex, Series, compat
from pandas import DataFrame, Index, MultiIndex, Series
from pandas.core import common as com
from pandas.core.arrays.categorical import (
_factorize_from_iterable, _factorize_from_iterables)
Expand Down Expand Up @@ -536,7 +536,7 @@ def _make_concat_multiindex(indexes, keys, levels=None, names=None):

if ((levels is None and isinstance(keys[0], tuple)) or
(levels is not None and len(levels) > 1)):
zipped = compat.lzip(*keys)
zipped = list(zip(*keys))
if names is None:
names = [None] * len(zipped)

Expand Down
3 changes: 1 addition & 2 deletions pandas/core/reshape/merge.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
import numpy as np

from pandas._libs import hashtable as libhashtable, join as libjoin, lib
from pandas.compat import lzip
from pandas.errors import MergeError
from pandas.util._decorators import Appender, Substitution

Expand Down Expand Up @@ -1512,7 +1511,7 @@ def flip(xs):
labels = list(string.ascii_lowercase[:len(xs)])
dtypes = [x.dtype for x in xs]
labeled_dtypes = list(zip(labels, dtypes))
return np.array(lzip(*xs), labeled_dtypes)
return np.array(list(zip(*xs)), labeled_dtypes)

# values to compare
left_values = (self.left.index.values if self.left_index else
Expand Down
3 changes: 1 addition & 2 deletions pandas/io/formats/format.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
from pandas._libs import lib
from pandas._libs.tslib import format_array_from_datetime
from pandas._libs.tslibs import NaT, Timedelta, Timestamp, iNaT
from pandas.compat import lzip

from pandas.core.dtypes.common import (
is_categorical_dtype, is_complex_dtype, is_datetime64_dtype,
Expand Down Expand Up @@ -753,7 +752,7 @@ def _get_formatted_column_labels(self, frame):

if isinstance(columns, ABCMultiIndex):
fmt_columns = columns.format(sparsify=False, adjoin=False)
fmt_columns = lzip(*fmt_columns)
fmt_columns = list(zip(*fmt_columns))
dtypes = self.frame.dtypes._values

# if we have a Float level, they don't use leading space at all
Expand Down
4 changes: 1 addition & 3 deletions pandas/io/formats/html.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@

from pandas._config import get_option

from pandas.compat import lzip

from pandas.core.dtypes.generic import ABCMultiIndex

from pandas import option_context
Expand Down Expand Up @@ -414,7 +412,7 @@ def _write_hierarchical_rows(self, fmt_values, indent):

idx_values = frame.index.format(sparsify=False, adjoin=False,
names=False)
idx_values = lzip(*idx_values)
idx_values = list(zip(*idx_values))

if self.fmt.sparsify:
# GH3547
Expand Down
3 changes: 1 addition & 2 deletions pandas/io/parsers.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
import pandas._libs.parsers as parsers
from pandas._libs.tslibs import parsing
import pandas.compat as compat
from pandas.compat import lzip
from pandas.errors import (
AbstractMethodError, EmptyDataError, ParserError, ParserWarning)
from pandas.util._decorators import Appender
Expand Down Expand Up @@ -1489,7 +1488,7 @@ def _extract_multi_indexer_columns(self, header, index_names, col_names,
def extract(r):
return tuple(r[i] for i in range(field_count) if i not in sic)

columns = lzip(*[extract(r) for r in header])
columns = list(zip(*(extract(r) for r in header)))
names = ic + columns

# If we find unnamed columns all in a single
Expand Down
23 changes: 11 additions & 12 deletions pandas/io/stata.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@

from pandas._libs.lib import infer_dtype
from pandas._libs.writers import max_len_string_array
from pandas.compat import lmap, lzip
from pandas.compat import lmap
from pandas.util._decorators import Appender, deprecate_kwarg

from pandas.core.dtypes.common import (
Expand Down Expand Up @@ -852,17 +852,16 @@ def __init__(self):
# NOTE: the byte type seems to be reserved for categorical variables
# with a label, but the underlying variable is -127 to 100
# we're going to drop the label and cast to int
self.DTYPE_MAP = \
dict(
lzip(range(1, 245), ['a' + str(i) for i in range(1, 245)]) +
[
(251, np.int8),
(252, np.int16),
(253, np.int32),
(254, np.float32),
(255, np.float64)
]
)
self.DTYPE_MAP = dict(
list(zip(range(1, 245), ['a' + str(i) for i in range(1, 245)])) +
[
(251, np.int8),
(252, np.int16),
(253, np.int32),
(254, np.float32),
(255, np.float64)
]
)
self.DTYPE_MAP_XML = \
dict(
[
Expand Down
4 changes: 2 additions & 2 deletions pandas/tests/frame/test_axis_select_reindex.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import numpy as np
import pytest

from pandas.compat import lrange, lzip
from pandas.compat import lrange
from pandas.errors import PerformanceWarning

import pandas as pd
Expand Down Expand Up @@ -100,7 +100,7 @@ def test_drop(self):
simple[['B']])

# non-unique - wheee!
nu_df = DataFrame(lzip(range(3), range(-3, 1), list('abc')),
nu_df = DataFrame(list(zip(range(3), range(-3, 1), list('abc'))),
columns=['a', 'a', 'b'])
assert_frame_equal(nu_df.drop('a', axis=1), nu_df[['b']])
assert_frame_equal(nu_df.drop('b', axis='columns'), nu_df['a'])
Expand Down
7 changes: 3 additions & 4 deletions pandas/tests/frame/test_constructors.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import numpy.ma as ma
import pytest

from pandas.compat import PY36, is_platform_little_endian, lmap, lrange, lzip
from pandas.compat import PY36, is_platform_little_endian, lmap, lrange

from pandas.core.dtypes.cast import construct_1d_object_array_from_listlike
from pandas.core.dtypes.common import is_integer_dtype
Expand Down Expand Up @@ -132,12 +132,11 @@ def _make_mixed_dtypes_df(typ, ad=None):
arrays = [np.array(np.random.randint(
10, size=10), dtype=d) for d in dtypes]

zipper = lzip(dtypes, arrays)
for d, a in zipper:
for d, a in zip(dtypes, arrays):
assert(a.dtype == d)
if ad is None:
ad = dict()
ad.update({d: a for d, a in zipper})
ad.update({d: a for d, a in zip(dtypes, arrays)})
return DataFrame(ad)

def _check_mixed_dtypes(df, dtypes=None):
Expand Down
8 changes: 4 additions & 4 deletions pandas/tests/frame/test_indexing.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import pytest

from pandas._libs.tslib import iNaT
from pandas.compat import lrange, lzip
from pandas.compat import lrange

from pandas.core.dtypes.common import is_float_dtype, is_integer, is_scalar
from pandas.core.dtypes.dtypes import CategoricalDtype
Expand Down Expand Up @@ -178,7 +178,7 @@ def test_setitem_list_not_dataframe(self):
assert_almost_equal(self.frame[['A', 'B']].values, data)

def test_setitem_list_of_tuples(self):
tuples = lzip(self.frame['A'], self.frame['B'])
tuples = list(zip(self.frame['A'], self.frame['B']))
self.frame['tuples'] = tuples

result = self.frame['tuples']
Expand Down Expand Up @@ -998,11 +998,11 @@ def test_setitem_fancy_2d(self):
assert_frame_equal(frame, expected)

# new corner case of boolean slicing / setting
frame = DataFrame(lzip([2, 3, 9, 6, 7], [np.nan] * 5),
frame = DataFrame(zip([2, 3, 9, 6, 7], [np.nan] * 5),
columns=['a', 'b'])
lst = [100]
lst.extend([np.nan] * 4)
expected = DataFrame(lzip([100, 3, 9, 6, 7], lst),
expected = DataFrame(zip([100, 3, 9, 6, 7], lst),
columns=['a', 'b'])
frame[frame['a'] == 2] = 100
assert_frame_equal(frame, expected)
Expand Down
Loading