24
24
)
25
25
26
26
27
- class TestBuildSchema :
28
- def setup_method (self , method ):
29
- self .df = DataFrame (
30
- {
31
- "A" : [1 , 2 , 3 , 4 ],
32
- "B" : ["a" , "b" , "c" , "c" ],
33
- "C" : pd .date_range ("2016-01-01" , freq = "d" , periods = 4 ),
34
- "D" : pd .timedelta_range ("1H" , periods = 4 , freq = "T" ),
35
- },
36
- index = pd .Index (range (4 ), name = "idx" ),
37
- )
27
+ @pytest .fixture
28
+ def df_schema ():
29
+ return DataFrame (
30
+ {
31
+ "A" : [1 , 2 , 3 , 4 ],
32
+ "B" : ["a" , "b" , "c" , "c" ],
33
+ "C" : pd .date_range ("2016-01-01" , freq = "d" , periods = 4 ),
34
+ "D" : pd .timedelta_range ("1H" , periods = 4 , freq = "T" ),
35
+ },
36
+ index = pd .Index (range (4 ), name = "idx" ),
37
+ )
38
+
39
+
40
+ @pytest .fixture
41
+ def df_table ():
42
+ return DataFrame (
43
+ {
44
+ "A" : [1 , 2 , 3 , 4 ],
45
+ "B" : ["a" , "b" , "c" , "c" ],
46
+ "C" : pd .date_range ("2016-01-01" , freq = "d" , periods = 4 ),
47
+ "D" : pd .timedelta_range ("1H" , periods = 4 , freq = "T" ),
48
+ "E" : pd .Series (pd .Categorical (["a" , "b" , "c" , "c" ])),
49
+ "F" : pd .Series (pd .Categorical (["a" , "b" , "c" , "c" ], ordered = True )),
50
+ "G" : [1.0 , 2.0 , 3 , 4.0 ],
51
+ "H" : pd .date_range ("2016-01-01" , freq = "d" , periods = 4 , tz = "US/Central" ),
52
+ },
53
+ index = pd .Index (range (4 ), name = "idx" ),
54
+ )
38
55
39
- def test_build_table_schema (self ):
40
- result = build_table_schema (self .df , version = False )
56
+
57
+ class TestBuildSchema :
58
+ def test_build_table_schema (self , df_schema ):
59
+ result = build_table_schema (df_schema , version = False )
41
60
expected = {
42
61
"fields" : [
43
62
{"name" : "idx" , "type" : "integer" },
@@ -49,7 +68,7 @@ def test_build_table_schema(self):
49
68
"primaryKey" : ["idx" ],
50
69
}
51
70
assert result == expected
52
- result = build_table_schema (self . df )
71
+ result = build_table_schema (df_schema )
53
72
assert "pandas_version" in result
54
73
55
74
def test_series (self ):
@@ -77,8 +96,8 @@ def test_series_unnamed(self):
77
96
}
78
97
assert result == expected
79
98
80
- def test_multiindex (self ):
81
- df = self . df . copy ()
99
+ def test_multiindex (self , df_schema ):
100
+ df = df_schema
82
101
idx = pd .MultiIndex .from_product ([("a" , "b" ), (1 , 2 )])
83
102
df .index = idx
84
103
@@ -195,21 +214,6 @@ def test_as_json_table_type_categorical_dtypes(self):
195
214
196
215
197
216
class TestTableOrient :
198
- def setup_method (self , method ):
199
- self .df = DataFrame (
200
- {
201
- "A" : [1 , 2 , 3 , 4 ],
202
- "B" : ["a" , "b" , "c" , "c" ],
203
- "C" : pd .date_range ("2016-01-01" , freq = "d" , periods = 4 ),
204
- "D" : pd .timedelta_range ("1H" , periods = 4 , freq = "T" ),
205
- "E" : pd .Series (pd .Categorical (["a" , "b" , "c" , "c" ])),
206
- "F" : pd .Series (pd .Categorical (["a" , "b" , "c" , "c" ], ordered = True )),
207
- "G" : [1.0 , 2.0 , 3 , 4.0 ],
208
- "H" : pd .date_range ("2016-01-01" , freq = "d" , periods = 4 , tz = "US/Central" ),
209
- },
210
- index = pd .Index (range (4 ), name = "idx" ),
211
- )
212
-
213
217
def test_build_series (self ):
214
218
s = pd .Series ([1 , 2 ], name = "a" )
215
219
s .index .name = "id"
@@ -259,8 +263,8 @@ def test_read_json_from_to_json_results(self):
259
263
@pytest .mark .filterwarnings (
260
264
"ignore:an integer is required (got type float)*:DeprecationWarning"
261
265
)
262
- def test_to_json (self ):
263
- df = self . df . copy ()
266
+ def test_to_json (self , df_table ):
267
+ df = df_table
264
268
df .index .name = "idx"
265
269
result = df .to_json (orient = "table" , date_format = "iso" )
266
270
result = json .loads (result , object_pairs_hook = OrderedDict )
@@ -438,17 +442,17 @@ def test_to_json_categorical_index(self):
438
442
@pytest .mark .filterwarnings (
439
443
"ignore:an integer is required (got type float)*:DeprecationWarning"
440
444
)
441
- def test_date_format_raises (self ):
445
+ def test_date_format_raises (self , df_table ):
442
446
msg = (
443
447
"Trying to write with `orient='table'` and `date_format='epoch'`. Table "
444
448
"Schema requires dates to be formatted with `date_format='iso'`"
445
449
)
446
450
with pytest .raises (ValueError , match = msg ):
447
- self . df .to_json (orient = "table" , date_format = "epoch" )
451
+ df_table .to_json (orient = "table" , date_format = "epoch" )
448
452
449
453
# others work
450
- self . df .to_json (orient = "table" , date_format = "iso" )
451
- self . df .to_json (orient = "table" )
454
+ df_table .to_json (orient = "table" , date_format = "iso" )
455
+ df_table .to_json (orient = "table" )
452
456
453
457
def test_convert_pandas_type_to_json_field_int (self , index_or_series ):
454
458
kind = index_or_series
0 commit comments