From 5cfa60182bfca5297205bf4659469d1fd99dd3aa Mon Sep 17 00:00:00 2001 From: Ryan Nazareth Date: Sun, 31 Mar 2019 06:49:05 +0100 Subject: [PATCH 1/8] Add adbsolute imports, removed data_label method and remove stata from mypy.ini blacklist --- mypy.ini | 3 --- pandas/io/stata.py | 14 ++++++-------- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/mypy.ini b/mypy.ini index 62a3d535b561a..d82f04f5d7fa0 100644 --- a/mypy.ini +++ b/mypy.ini @@ -164,9 +164,6 @@ ignore_errors=True [mypy-pandas.io.pytables] ignore_errors=True -[mypy-pandas.io.stata] -ignore_errors=True - [mypy-pandas.plotting._core] ignore_errors=True diff --git a/pandas/io/stata.py b/pandas/io/stata.py index 3e9a61280f0b5..11b669891bc5f 100644 --- a/pandas/io/stata.py +++ b/pandas/io/stata.py @@ -30,12 +30,16 @@ from pandas.core.dtypes.common import ( ensure_object, is_categorical_dtype, is_datetime64_dtype) -from pandas import ( - DatetimeIndex, compat, concat, isna, to_datetime, to_timedelta) +from pandas import compat from pandas.core.arrays import Categorical from pandas.core.base import StringMixin from pandas.core.frame import DataFrame +from pandas.core.index import DatetimeIndex +from pandas.core.missing import isna +from pandas.core.reshape.concat import concat from pandas.core.series import Series +from pandas.core.tools.datetimes import to_datetime +from pandas.core.tools.timedeltas import to_timedelta from pandas.io.common import ( BaseIterator, _stringify_path, get_filepath_or_buffer) @@ -1731,12 +1735,6 @@ def _do_convert_categoricals(self, data, value_label_dict, lbllist, data = DataFrame.from_dict(OrderedDict(cat_converted_data)) return data - def data_label(self): - """ - Return data label of Stata file. - """ - return self.data_label - def variable_labels(self): """ Return variable labels as a dict, associating each variable name From e9c27b96a274521998fb3491037b9364e6f802c4 Mon Sep 17 00:00:00 2001 From: Ryan Nazareth Date: Mon, 1 Apr 2019 19:41:36 +0100 Subject: [PATCH 2/8] Remove StataReader.data_label method from api rst file to fix error --- doc/source/reference/io.rst | 1 - 1 file changed, 1 deletion(-) diff --git a/doc/source/reference/io.rst b/doc/source/reference/io.rst index 9c776e3ff8a82..64dda065678ac 100644 --- a/doc/source/reference/io.rst +++ b/doc/source/reference/io.rst @@ -134,7 +134,6 @@ STATA :toctree: api/ StataReader.data - StataReader.data_label StataReader.value_labels StataReader.variable_labels StataWriter.write_file From c410e6f5df1d2c228a57bd7f7f308e1607ff8fc7 Mon Sep 17 00:00:00 2001 From: Ryan Nazareth Date: Tue, 2 Apr 2019 19:06:27 +0100 Subject: [PATCH 3/8] Revert "Remove StataReader.data_label method from api rst file to fix error" This reverts commit 9ae0804a8f6b77d6980c3bdfc4d70d75cf2c0277. --- doc/source/reference/io.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/source/reference/io.rst b/doc/source/reference/io.rst index 64dda065678ac..9c776e3ff8a82 100644 --- a/doc/source/reference/io.rst +++ b/doc/source/reference/io.rst @@ -134,6 +134,7 @@ STATA :toctree: api/ StataReader.data + StataReader.data_label StataReader.value_labels StataReader.variable_labels StataWriter.write_file From f9a037e8fa6b2682a1293094db4adb606b135d80 Mon Sep 17 00:00:00 2001 From: Ryan Nazareth Date: Tue, 2 Apr 2019 19:17:41 +0100 Subject: [PATCH 4/8] Making instance variable private and adding back data_label method --- pandas/io/stata.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pandas/io/stata.py b/pandas/io/stata.py index 11b669891bc5f..cba59124c4ea9 100644 --- a/pandas/io/stata.py +++ b/pandas/io/stata.py @@ -1054,7 +1054,7 @@ def _read_new_header(self, first_char): self.nobs = self._get_nobs() self.path_or_buf.read(11) # self.time_stamp = self._get_time_stamp() self.path_or_buf.read(26) # @@ -1735,6 +1735,12 @@ def _do_convert_categoricals(self, data, value_label_dict, lbllist, data = DataFrame.from_dict(OrderedDict(cat_converted_data)) return data + def data_label(self): + """ + Return data label of Stata file. + """ + return self.data_label + def variable_labels(self): """ Return variable labels as a dict, associating each variable name From 8a1e5604d58a17b68b6d29efae0aadd2befe2a02 Mon Sep 17 00:00:00 2001 From: Ryan Nazareth Date: Wed, 3 Apr 2019 23:59:19 +0100 Subject: [PATCH 5/8] modifying more assignments to self.data_label to pass tests --- pandas/io/stata.py | 2 +- pandas/tests/io/test_stata.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pandas/io/stata.py b/pandas/io/stata.py index cba59124c4ea9..057a8bb09fc8e 100644 --- a/pandas/io/stata.py +++ b/pandas/io/stata.py @@ -1241,7 +1241,7 @@ def _read_old_header(self, first_char): self.path_or_buf.read(2))[0] self.nobs = self._get_nobs() - self.data_label = self._get_data_label() + self._data_label = self._get_data_label() self.time_stamp = self._get_time_stamp() diff --git a/pandas/tests/io/test_stata.py b/pandas/tests/io/test_stata.py index 21cb3e597ca2a..3f0085d9c2140 100644 --- a/pandas/tests/io/test_stata.py +++ b/pandas/tests/io/test_stata.py @@ -303,7 +303,7 @@ def test_read_dta18(self): 'Floats': 'float data'} tm.assert_dict_equal(vl, vl_expected) - assert rdr.data_label == 'This is a Ünicode data label' + assert rdr._data_label == 'This is a Ünicode data label' def test_read_write_dta5(self): original = DataFrame([(np.nan, np.nan, np.nan, np.nan, np.nan)], @@ -501,7 +501,7 @@ def test_timestamp_and_label(self, version): with StataReader(path) as reader: assert reader.time_stamp == '29 Feb 2000 14:21' - assert reader.data_label == data_label + assert reader._data_label == data_label @pytest.mark.parametrize('version', [114, 117]) def test_invalid_timestamp(self, version): From 4a581423625fa5b86bccbc1474ce2aa77c1a8b89 Mon Sep 17 00:00:00 2001 From: Ryan Nazareth Date: Thu, 4 Apr 2019 23:48:23 +0100 Subject: [PATCH 6/8] Make Stata.data_label method a property --- pandas/io/stata.py | 3 ++- pandas/tests/io/test_stata.py | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/pandas/io/stata.py b/pandas/io/stata.py index 057a8bb09fc8e..088b3226516a9 100644 --- a/pandas/io/stata.py +++ b/pandas/io/stata.py @@ -1735,11 +1735,12 @@ def _do_convert_categoricals(self, data, value_label_dict, lbllist, data = DataFrame.from_dict(OrderedDict(cat_converted_data)) return data + @property def data_label(self): """ Return data label of Stata file. """ - return self.data_label + return self._data_label def variable_labels(self): """ diff --git a/pandas/tests/io/test_stata.py b/pandas/tests/io/test_stata.py index 3f0085d9c2140..21cb3e597ca2a 100644 --- a/pandas/tests/io/test_stata.py +++ b/pandas/tests/io/test_stata.py @@ -303,7 +303,7 @@ def test_read_dta18(self): 'Floats': 'float data'} tm.assert_dict_equal(vl, vl_expected) - assert rdr._data_label == 'This is a Ünicode data label' + assert rdr.data_label == 'This is a Ünicode data label' def test_read_write_dta5(self): original = DataFrame([(np.nan, np.nan, np.nan, np.nan, np.nan)], @@ -501,7 +501,7 @@ def test_timestamp_and_label(self, version): with StataReader(path) as reader: assert reader.time_stamp == '29 Feb 2000 14:21' - assert reader._data_label == data_label + assert reader.data_label == data_label @pytest.mark.parametrize('version', [114, 117]) def test_invalid_timestamp(self, version): From 02bdfe5c81a3cdca12305ab884cd75537afee1c6 Mon Sep 17 00:00:00 2001 From: Ryan Nazareth Date: Wed, 10 Apr 2019 02:36:56 +0100 Subject: [PATCH 7/8] Import from top level pandas --- pandas/io/stata.py | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/pandas/io/stata.py b/pandas/io/stata.py index 0e1dbf3221bf9..ccaf73756887b 100644 --- a/pandas/io/stata.py +++ b/pandas/io/stata.py @@ -22,7 +22,6 @@ import numpy as np from pandas._libs.lib import infer_dtype -from pandas._libs.tslibs import NaT, Timestamp from pandas._libs.writers import max_len_string_array from pandas.compat import lmap, lrange, lzip from pandas.util._decorators import Appender, deprecate_kwarg @@ -30,16 +29,14 @@ from pandas.core.dtypes.common import ( ensure_object, is_categorical_dtype, is_datetime64_dtype) -from pandas import compat -from pandas.core.arrays import Categorical +from pandas import ( + compat, Categorical, DatetimeIndex, isna, concat, + to_datetime, to_timedelta, NaT, Timestamp) + from pandas.core.base import StringMixin from pandas.core.frame import DataFrame -from pandas.core.index import DatetimeIndex -from pandas.core.missing import isna -from pandas.core.reshape.concat import concat from pandas.core.series import Series -from pandas.core.tools.datetimes import to_datetime -from pandas.core.tools.timedeltas import to_timedelta + from pandas.io.common import ( BaseIterator, _stringify_path, get_filepath_or_buffer) From 72a170264b5305cd5ed2d2c1d5f930517f42ded7 Mon Sep 17 00:00:00 2001 From: Ryan Nazareth Date: Wed, 10 Apr 2019 02:49:49 +0100 Subject: [PATCH 8/8] Sorting imports with isort --- pandas/io/stata.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/pandas/io/stata.py b/pandas/io/stata.py index ccaf73756887b..5b186afdfdb3e 100644 --- a/pandas/io/stata.py +++ b/pandas/io/stata.py @@ -30,14 +30,12 @@ ensure_object, is_categorical_dtype, is_datetime64_dtype) from pandas import ( - compat, Categorical, DatetimeIndex, isna, concat, - to_datetime, to_timedelta, NaT, Timestamp) - + Categorical, DatetimeIndex, NaT, Timestamp, compat, concat, isna, + to_datetime, to_timedelta) from pandas.core.base import StringMixin from pandas.core.frame import DataFrame from pandas.core.series import Series - from pandas.io.common import ( BaseIterator, _stringify_path, get_filepath_or_buffer)