Skip to content

Commit 155c159

Browse files
authored
Merge pull request #69 from highcharts-for-python/develop
PR for v.1.2.4
2 parents de94799 + e0f2ef4 commit 155c159

File tree

8 files changed

+40
-2
lines changed

8 files changed

+40
-2
lines changed

CHANGES.rst

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
Release 1.2.4
2+
=========================================
3+
4+
* **BUGFIX:** Fixed ``.from_array()`` de-serialization to support propagation of string-type ``x`` values to ``name``(#67).
5+
6+
------------------
7+
18
Release 1.2.3
29
=========================================
310

highcharts_core/__version__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = '1.2.3'
1+
__version__ = '1.2.4'

highcharts_core/options/series/data/bar.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -361,7 +361,10 @@ def from_array(cls, value):
361361
raise errors.HighchartsValueError(f'data expects either a 4D or 3D '
362362
f'collection. Collection received '
363363
f'had {len(item)} dimensions.')
364+
364365
as_obj = cls.from_dict(as_dict)
366+
if checkers.is_string(as_obj.x):
367+
as_obj.name = as_obj.x
365368
else:
366369
raise errors.HighchartsValueError(f'each data point supplied must either '
367370
f'be a WindBarb Data Point or be '

highcharts_core/options/series/data/boxplot.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,8 @@ def from_array(cls, value):
278278
f'had {len(item)} dimensions.')
279279

280280
as_obj = cls.from_dict(as_dict)
281+
if checkers.is_string(as_obj.x):
282+
as_obj.name = as_obj.x
281283
else:
282284
raise errors.HighchartsValueError(f'each data point supplied must either '
283285
f'be a BoxPlot Data Point or be '

highcharts_core/options/series/data/bullet.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,10 @@ def from_array(cls, value):
8585
raise errors.HighchartsValueError(f'data expects either a 3D or 2D '
8686
f'collection. Collection received '
8787
f'had {len(item)} dimensions.')
88-
88+
8989
as_obj = cls.from_dict(as_dict)
90+
if checkers.is_string(as_obj.x):
91+
as_obj.name = as_obj.x
9092
else:
9193
raise errors.HighchartsValueError(f'each data point supplied must either '
9294
f'be a Bullet Data Point or be '

highcharts_core/options/series/data/cartesian.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,8 @@ def from_array(cls, value):
171171
elif checkers.is_iterable(item):
172172
if len(item) == 2:
173173
as_obj = cls(x = item[0], y = item[1])
174+
if checkers.is_string(as_obj.x):
175+
as_obj.name = as_obj.x
174176
elif len(item) == 1:
175177
as_obj = cls(y = item[0])
176178
else:
@@ -473,6 +475,8 @@ def from_array(cls, value):
473475
f'collection. Collection received '
474476
f'had {len(item)} dimensions.')
475477
as_obj = cls.from_dict(as_dict)
478+
if checkers.is_string(as_obj.x):
479+
as_obj.name = as_obj.x
476480
else:
477481
raise errors.HighchartsValueError(f'each data point supplied must either '
478482
f'be a Cartesian Value Data Point or be'

highcharts_core/options/series/data/range.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,8 @@ def from_array(cls, value):
204204
f'had {len(item)} dimensions.')
205205

206206
as_obj = cls.from_dict(as_dict)
207+
if checkers.is_string(as_obj.x):
208+
as_obj.name = as_obj.x
207209
else:
208210
raise errors.HighchartsValueError(f'each data point supplied must either '
209211
f'be an AreaRangeData Point or be '

tests/options/series/data/test_bar.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -307,6 +307,24 @@ def test_BarData_from_js_literal(input_files, filename, as_file, error):
307307
Class_from_js_literal(cls, input_files, filename, as_file, error)
308308

309309

310+
@pytest.mark.parametrize('array, expected, error', [
311+
([['A', 123]], {'name': 'A', 'x': 'A', 'y': 123}, None),
312+
([{'x': 'A', 'y': 123, 'name': 'A'}], {'name': 'A', 'x': 'A', 'y': 123}, None)
313+
])
314+
def test_BarData_from_array(array, expected, error):
315+
if not expected:
316+
expected = {}
317+
if not error:
318+
result = cls.from_array(array)
319+
assert result is not None
320+
for item in result:
321+
assert isinstance(item, cls) is True
322+
for key in expected:
323+
assert getattr(item, key) == expected.get(key, None)
324+
else:
325+
with pytest.raises(error):
326+
result = cls.from_array(array)
327+
310328
## NEXT CLASS
311329

312330
STANDARD_PARAMS_2 = [

0 commit comments

Comments
 (0)