66import matplotlib .pyplot as plt
77from mplaltair import convert
88from mplaltair ._convert import _convert
9+ from mplaltair .parse_chart import ChartMetadata
910
1011
1112df = pd .DataFrame ({
2223})
2324
2425
25- def test_encoding_not_provided ():
26+ def test_encoding_not_provided (): # TODO: move to the parse_chart tests
2627 chart_spec = alt .Chart (df ).mark_point ()
2728 with pytest .raises (ValueError ):
28- _convert (chart_spec )
29+ chart = ChartMetadata (chart_spec )
30+ # _convert(chart)
2931
3032def test_invalid_encodings ():
3133 chart_spec = alt .Chart (df ).encode (x2 = 'quant' ).mark_point ()
34+ chart = ChartMetadata (chart_spec )
3235 with pytest .raises (ValueError ):
33- _convert (chart_spec )
36+ _convert (chart )
3437
3538@pytest .mark .xfail (raises = TypeError )
36- def test_invalid_temporal ():
39+ def test_invalid_temporal (): # TODO: move to parse_chart tests???
3740 chart = alt .Chart (df ).mark_point ().encode (alt .X ('quant:T' ))
38- _convert (chart )
41+ ChartMetadata (chart )
42+ # _convert(chart)
3943
4044@pytest .mark .parametrize ('channel' , ['quant' , 'ord' , 'nom' ])
4145def test_convert_x_success (channel ):
4246 chart_spec = alt .Chart (df ).encode (x = channel ).mark_point ()
43- mapping = _convert (chart_spec )
47+ chart = ChartMetadata (chart_spec )
48+ mapping = _convert (chart )
4449 assert list (mapping ['x' ]) == list (df [channel ].values )
4550
4651@pytest .mark .parametrize ("column" , ["years" , "months" , "days" , "hrs" , "combination" ])
4752def test_convert_x_success_temporal (column ):
4853 chart = alt .Chart (df ).mark_point ().encode (alt .X (column ))
54+ chart = ChartMetadata (chart )
4955 mapping = _convert (chart )
5056 assert list (mapping ['x' ]) == list (mdates .date2num (df [column ].values ))
5157
5258def test_convert_x_fail ():
53- chart_spec = alt .Chart (df ).encode (x = 'b:N' ).mark_point ()
5459 with pytest .raises (KeyError ):
60+ chart_spec = ChartMetadata (alt .Chart (df ).encode (x = 'b:N' ).mark_point ())
5561 _convert (chart_spec )
5662
5763@pytest .mark .parametrize ('channel' , ['quant' , 'ord' , 'nom' ])
5864def test_convert_y_success (channel ):
59- chart_spec = alt .Chart (df ).encode (y = channel ).mark_point ()
65+ chart_spec = ChartMetadata ( alt .Chart (df ).encode (y = channel ).mark_point () )
6066 mapping = _convert (chart_spec )
6167 assert list (mapping ['y' ]) == list (df [channel ].values )
6268
6369@pytest .mark .parametrize ("column" , ["years" , "months" , "days" , "hrs" , "combination" ])
6470def test_convert_y_success_temporal (column ):
65- chart = alt .Chart (df ).mark_point ().encode (alt .Y (column ))
71+ chart = ChartMetadata ( alt .Chart (df ).mark_point ().encode (alt .Y (column ) ))
6672 mapping = _convert (chart )
6773 assert list (mapping ['y' ]) == list (mdates .date2num (df [column ].values ))
6874
6975def test_convert_y_fail ():
70- chart_spec = alt .Chart (df ).encode (y = 'b:N' ).mark_point ()
7176 with pytest .raises (KeyError ):
77+ chart_spec = ChartMetadata (alt .Chart (df ).encode (y = 'b:N' ).mark_point ())
7278 _convert (chart_spec )
7379
7480@pytest .mark .xfail (raises = ValueError , reason = "It doesn't make sense to have x2 and y2 on scatter plots" )
7581def test_quantitative_x2_y2 ():
76- chart = alt .Chart (df_quant ).mark_point ().encode (alt .X ('a' ), alt .Y ('b' ), alt .X2 ('c' ), alt .Y2 ('alpha' ))
82+ chart = ChartMetadata ( alt .Chart (df_quant ).mark_point ().encode (alt .X ('a' ), alt .Y ('b' ), alt .X2 ('c' ), alt .Y2 ('alpha' ) ))
7783 _convert (chart )
7884
7985@pytest .mark .xfail (raises = ValueError )
8086@pytest .mark .parametrize ("column" , ["years" , "months" , "days" , "hrs" , "combination" ])
8187def test_convert_x2_y2_fail_temporal (column ):
82- chart = alt .Chart (df ).mark_point ().encode (alt .X2 (column ), alt .Y2 (column ))
88+ chart = ChartMetadata ( alt .Chart (df ).mark_point ().encode (alt .X2 (column ), alt .Y2 (column ) ))
8389 _convert (chart )
8490
8591@pytest .mark .parametrize ('channel,dtype' , [('quant' ,'quantitative' ), ('ord' ,'ordinal' )])
8692def test_convert_color_success (channel , dtype ):
87- chart_spec = alt .Chart (df ).encode (color = alt .Color (field = channel , type = dtype )).mark_point ()
93+ chart_spec = ChartMetadata ( alt .Chart (df ).encode (color = alt .Color (field = channel , type = dtype )).mark_point () )
8894 mapping = _convert (chart_spec )
8995 assert list (mapping ['c' ]) == list (df [channel ].values )
9096
9197def test_convert_color_success_nominal ():
92- chart_spec = alt .Chart (df ).encode (color = 'nom' ).mark_point ()
98+ chart_spec = ChartMetadata ( alt .Chart (df ).encode (color = 'nom' ).mark_point () )
9399 with pytest .raises (NotImplementedError ):
94100 _convert (chart_spec )
95101
96102@pytest .mark .parametrize ("column" , ["years" , "months" , "days" , "hrs" , "combination" ])
97103def test_convert_color_success_temporal (column ):
98- chart = alt .Chart (df ).mark_point ().encode (alt .Color (column ))
104+ chart = ChartMetadata ( alt .Chart (df ).mark_point ().encode (alt .Color (column ) ))
99105 mapping = _convert (chart )
100106 assert list (mapping ['c' ]) == list (mdates .date2num (df [column ].values ))
101107
102- def test_convert_color_fail ():
103- chart_spec = alt .Chart (df ).encode (color = 'b:N' ).mark_point ()
108+ def test_convert_color_fail (): # TODO: What is this covering?
104109 with pytest .raises (KeyError ):
110+ chart_spec = ChartMetadata (alt .Chart (df ).encode (color = 'b:N' ).mark_point ())
105111 _convert (chart_spec )
106112
107113@pytest .mark .parametrize ('channel,type' , [('quant' , 'Q' ), ('ord' , 'O' )])
108114def test_convert_fill (channel , type ):
109- chart_spec = alt .Chart (df ).encode (fill = '{}:{}' .format (channel , type )).mark_point ()
115+ chart_spec = ChartMetadata ( alt .Chart (df ).encode (fill = '{}:{}' .format (channel , type )).mark_point () )
110116 mapping = _convert (chart_spec )
111117 assert list (mapping ['c' ]) == list (df [channel ].values )
112118
113119def test_convert_fill_success_nominal ():
114- chart_spec = alt .Chart (df ).encode (fill = 'nom' ).mark_point ()
120+ chart_spec = ChartMetadata ( alt .Chart (df ).encode (fill = 'nom' ).mark_point () )
115121 with pytest .raises (NotImplementedError ):
116122 _convert (chart_spec )
117123
118124@pytest .mark .parametrize ("column" , ["years" , "months" , "days" , "hrs" , "combination" ])
119125def test_convert_fill_success_temporal (column ):
120- chart = alt .Chart (df ).mark_point ().encode (alt .Fill (column ))
126+ chart = ChartMetadata ( alt .Chart (df ).mark_point ().encode (alt .Fill (column ) ))
121127 mapping = _convert (chart )
122128 assert list (mapping ['c' ]) == list (mdates .date2num (df [column ].values ))
123129
124130
125- def test_convert_fill_fail ():
126- chart_spec = alt .Chart (df ).encode (fill = 'b:N' ).mark_point ()
131+ def test_convert_fill_fail (): # TODO: what is this covering?
127132 with pytest .raises (KeyError ):
133+ chart_spec = ChartMetadata (alt .Chart (df ).encode (fill = 'b:N' ).mark_point ())
128134 _convert (chart_spec )
129135
130136@pytest .mark .xfail (raises = NotImplementedError , reason = "The marker argument in scatter() cannot take arrays" )
131137def test_quantitative_shape ():
132- chart = alt .Chart (df_quant ).mark_point ().encode (alt .Shape ('shape' ))
138+ chart = ChartMetadata ( alt .Chart (df_quant ).mark_point ().encode (alt .Shape ('shape' ) ))
133139 mapping = _convert (chart )
134140
135141@pytest .mark .xfail (raises = NotImplementedError , reason = "The marker argument in scatter() cannot take arrays" )
136142@pytest .mark .parametrize ("column" , ["years" , "months" , "days" , "hrs" , "combination" ])
137143def test_convert_shape_fail_temporal (column ):
138- chart = alt .Chart (df ).mark_point ().encode (alt .Shape (column ))
144+ chart = ChartMetadata ( alt .Chart (df ).mark_point ().encode (alt .Shape (column ) ))
139145 mapping = _convert (chart )
140146
141147@pytest .mark .xfail (raises = NotImplementedError , reason = "Merge: the dtype for opacity isn't assumed to be quantitative" )
142148def test_quantitative_opacity_value ():
143- chart = alt .Chart (df_quant ).mark_point ().encode (opacity = alt .value (.5 ))
149+ chart = ChartMetadata ( alt .Chart (df_quant ).mark_point ().encode (opacity = alt .value (.5 ) ))
144150 mapping = _convert (chart )
145151
146152@pytest .mark .xfail (raises = NotImplementedError , reason = "The alpha argument in scatter() cannot take arrays" )
147153def test_quantitative_opacity_array ():
148- chart = alt .Chart (df_quant ).mark_point ().encode (alt .Opacity ('alpha' ))
154+ chart = ChartMetadata ( alt .Chart (df_quant ).mark_point ().encode (alt .Opacity ('alpha' ) ))
149155 _convert (chart )
150156
151157@pytest .mark .xfail (raises = NotImplementedError , reason = "The alpha argument in scatter() cannot take arrays" )
152158@pytest .mark .parametrize ("column" , ["years" , "months" , "days" , "hrs" , "combination" ])
153159def test_convert_opacity_fail_temporal (column ):
154- chart = alt .Chart (df ).mark_point ().encode (alt .Opacity (column ))
160+ chart = ChartMetadata ( alt .Chart (df ).mark_point ().encode (alt .Opacity (column ) ))
155161 _convert (chart )
156162
157163@pytest .mark .parametrize ('channel,type' , [('quant' , 'Q' ), ('ord' , 'O' )])
158164def test_convert_size_success (channel , type ):
159- chart_spec = alt .Chart (df ).encode (size = '{}:{}' .format (channel , type )).mark_point ()
165+ chart_spec = ChartMetadata ( alt .Chart (df ).encode (size = '{}:{}' .format (channel , type )).mark_point () )
160166 mapping = _convert (chart_spec )
161167 assert list (mapping ['s' ]) == list (df [channel ].values )
162168
163169def test_convert_size_success_nominal ():
164- chart_spec = alt .Chart (df ).encode (size = 'nom' ).mark_point ()
165170 with pytest .raises (NotImplementedError ):
171+ chart_spec = ChartMetadata (alt .Chart (df ).encode (size = 'nom' ).mark_point ())
166172 _convert (chart_spec )
167173
168174def test_convert_size_fail ():
169- chart_spec = alt .Chart (df ).encode (size = 'b:N' ).mark_point ()
170175 with pytest .raises (KeyError ):
176+ chart_spec = ChartMetadata (alt .Chart (df ).encode (size = 'b:N' ).mark_point ())
171177 _convert (chart_spec )
172178
173179@pytest .mark .xfail (raises = NotImplementedError , reason = "Dates would need to be normalized for the size." )
174180@pytest .mark .parametrize ("column" , ["years" , "months" , "days" , "hrs" , "combination" ])
175181def test_convert_size_fail_temporal (column ):
176- chart = alt .Chart (df ).mark_point ().encode (alt .Size (column ))
182+ chart = ChartMetadata ( alt .Chart (df ).mark_point ().encode (alt .Size (column ) ))
177183 _convert (chart )
178184
179185
180186@pytest .mark .xfail (raises = NotImplementedError , reason = "Stroke is not well supported in Altair" )
181187def test_quantitative_stroke ():
182- chart = alt .Chart (df_quant ).mark_point ().encode (alt .Stroke ('fill' ))
188+ chart = ChartMetadata ( alt .Chart (df_quant ).mark_point ().encode (alt .Stroke ('fill' ) ))
183189 _convert (chart )
184190
185191@pytest .mark .xfail (raises = NotImplementedError , reason = "Stroke is not well defined in Altair" )
186192@pytest .mark .parametrize ("column" , ["years" , "months" , "days" , "hrs" , "combination" ])
187193def test_convert_stroke_fail_temporal (column ):
188- chart = alt .Chart (df ).mark_point ().encode (alt .Stroke (column ))
194+ chart = ChartMetadata ( alt .Chart (df ).mark_point ().encode (alt .Stroke (column ) ))
189195 _convert (chart )
190196
191197
@@ -194,12 +200,12 @@ def test_convert_stroke_fail_temporal(column):
194200@pytest .mark .xfail (raises = NotImplementedError , reason = "Aggregate functions are not supported yet" )
195201def test_quantitative_x_count_y ():
196202 df_count = pd .DataFrame ({"a" : [1 , 1 , 2 , 3 , 5 ], "b" : [1.4 , 1.4 , 2.9 , 3.18 , 5.3 ]})
197- chart = alt .Chart (df_count ).mark_point ().encode (alt .X ('a' ), alt .Y ('count()' ))
203+ chart = ChartMetadata ( alt .Chart (df_count ).mark_point ().encode (alt .X ('a' ), alt .Y ('count()' ) ))
198204 mapping = _convert (chart )
199205
200206@pytest .mark .xfail (raises = NotImplementedError , reason = "specifying timeUnit is not supported yet" )
201207def test_timeUnit ():
202- chart = alt .Chart (df ).mark_point ().encode (alt .X ('date(combination)' ))
208+ chart = ChartMetadata ( alt .Chart (df ).mark_point ().encode (alt .X ('date(combination)' ) ))
203209 _convert (chart )
204210
205211# Plots
0 commit comments