Skip to content

Commit 9ef8534

Browse files
committed
Merge pull request #11088 from jreback/fix_stata
TST: make sure to close stata readers
2 parents e8d4243 + 17d2220 commit 9ef8534

File tree

1 file changed

+26
-24
lines changed

1 file changed

+26
-24
lines changed

pandas/io/tests/test_stata.py

+26-24
Original file line numberDiff line numberDiff line change
@@ -98,19 +98,19 @@ def test_read_empty_dta(self):
9898

9999
def test_data_method(self):
100100
# Minimal testing of legacy data method
101-
reader_114 = StataReader(self.dta1_114)
102-
with warnings.catch_warnings(record=True) as w:
103-
parsed_114_data = reader_114.data()
101+
with StataReader(self.dta1_114) as rdr:
102+
with warnings.catch_warnings(record=True) as w:
103+
parsed_114_data = rdr.data()
104104

105-
reader_114 = StataReader(self.dta1_114)
106-
parsed_114_read = reader_114.read()
105+
with StataReader(self.dta1_114) as rdr:
106+
parsed_114_read = rdr.read()
107107
tm.assert_frame_equal(parsed_114_data, parsed_114_read)
108108

109109
def test_read_dta1(self):
110-
reader_114 = StataReader(self.dta1_114)
111-
parsed_114 = reader_114.read()
112-
reader_117 = StataReader(self.dta1_117)
113-
parsed_117 = reader_117.read()
110+
111+
parsed_114 = self.read_dta(self.dta1_114)
112+
parsed_117 = self.read_dta(self.dta1_117)
113+
114114
# Pandas uses np.nan as missing value.
115115
# Thus, all columns will be of type float, regardless of their name.
116116
expected = DataFrame([(np.nan, np.nan, np.nan, np.nan, np.nan)],
@@ -264,19 +264,18 @@ def test_read_dta18(self):
264264
for col in parsed_118.columns:
265265
tm.assert_almost_equal(parsed_118[col], expected[col])
266266

267-
rdr = StataReader(self.dta22_118)
268-
vl = rdr.variable_labels()
269-
vl_expected = {u'Unicode_Cities_Strl': u'Here are some strls with Ünicode chars',
270-
u'Longs': u'long data',
271-
u'Things': u'Here are some things',
272-
u'Bytes': u'byte data',
273-
u'Ints': u'int data',
274-
u'Cities': u'Here are some cities',
275-
u'Floats': u'float data'}
276-
tm.assert_dict_equal(vl, vl_expected)
277-
278-
self.assertEqual(rdr.data_label, u'This is a Ünicode data label')
267+
with StataReader(self.dta22_118) as rdr:
268+
vl = rdr.variable_labels()
269+
vl_expected = {u'Unicode_Cities_Strl': u'Here are some strls with Ünicode chars',
270+
u'Longs': u'long data',
271+
u'Things': u'Here are some things',
272+
u'Bytes': u'byte data',
273+
u'Ints': u'int data',
274+
u'Cities': u'Here are some cities',
275+
u'Floats': u'float data'}
276+
tm.assert_dict_equal(vl, vl_expected)
279277

278+
self.assertEqual(rdr.data_label, u'This is a Ünicode data label')
280279

281280
def test_read_write_dta5(self):
282281
original = DataFrame([(np.nan, np.nan, np.nan, np.nan, np.nan)],
@@ -610,8 +609,10 @@ def test_bool_uint(self):
610609
tm.assert_frame_equal(written_and_read_again, expected)
611610

612611
def test_variable_labels(self):
613-
sr_115 = StataReader(self.dta16_115).variable_labels()
614-
sr_117 = StataReader(self.dta16_117).variable_labels()
612+
with StataReader(self.dta16_115) as rdr:
613+
sr_115 = rdr.variable_labels()
614+
with StataReader(self.dta16_117) as rdr:
615+
sr_117 = rdr.variable_labels()
615616
keys = ('var1', 'var2', 'var3')
616617
labels = ('label1', 'label2', 'label3')
617618
for k,v in compat.iteritems(sr_115):
@@ -652,7 +653,8 @@ def test_missing_value_generator(self):
652653
df = DataFrame([[0.0]],columns=['float_'])
653654
with tm.ensure_clean() as path:
654655
df.to_stata(path)
655-
valid_range = StataReader(path).VALID_RANGE
656+
with StataReader(path) as rdr:
657+
valid_range = rdr.VALID_RANGE
656658
expected_values = ['.' + chr(97 + i) for i in range(26)]
657659
expected_values.insert(0, '.')
658660
for t in types:

0 commit comments

Comments
 (0)