Étienne Mollier pushed to branch upstream at Debian Med / augur
Commits: 7510d302 by Étienne Mollier at 2023-06-24T15:56:25+02:00 New upstream version 22.0.3 - - - - - 4 changed files: - CHANGES.md - augur/__version__.py - augur/utils.py - tests/test_utils.py Changes: ===================================== CHANGES.md ===================================== @@ -3,6 +3,14 @@ ## __NEXT__ +## 22.0.3 (14 June 2023) + +### Bug fixes + +* utils: Serialize pandas Series in `write_json`. [#1213][] (@victorlin) + +[#1213]: https://github.com/nextstrain/augur/pull/1213 + ## 22.0.2 (26 May 2023) ### Bug fixes ===================================== augur/__version__.py ===================================== @@ -1,4 +1,4 @@ -__version__ = '22.0.2' +__version__ = '22.0.3' def is_augur_version_compatible(version): ===================================== augur/utils.py ===================================== @@ -127,11 +127,14 @@ def write_json(data, file_name, indent=(None if os.environ.get("AUGUR_MINIFY_JSO data["generated_by"] = {"program": "augur", "version": get_augur_version()} with open(file_name, 'w', encoding='utf-8') as handle: sort_keys = False if isinstance(data, OrderedDict) else True - json.dump(data, handle, indent=indent, sort_keys=sort_keys, cls=NumpyJSONEncoder) + json.dump(data, handle, indent=indent, sort_keys=sort_keys, cls=AugurJSONEncoder) -class NumpyJSONEncoder(json.JSONEncoder): - """A custom JSONEncoder subclass to serialize additional numpy data types.""" +class AugurJSONEncoder(json.JSONEncoder): + """ + A custom JSONEncoder subclass to serialize data types used for various data + stored in dictionary format. + """ def default(self, obj): if isinstance(obj, np.integer): return int(obj) @@ -139,6 +142,8 @@ class NumpyJSONEncoder(json.JSONEncoder): return float(obj) if isinstance(obj, np.ndarray): return obj.tolist() + if isinstance(obj, pd.Series): + return obj.tolist() return super().default(obj) ===================================== tests/test_utils.py ===================================== @@ -2,6 +2,7 @@ import json import numpy as np from pathlib import Path from unittest.mock import patch +import pandas as pd import pytest @@ -93,12 +94,13 @@ class TestUtils: assert len(strains) == 3 assert "strain1" in strains - def test_write_json_numpy_types(self, tmpdir): - """write_json should be able to serialize numpy data types.""" + def test_write_json_data_types(self, tmpdir): + """write_json should be able to serialize various data types.""" data = { 'int': np.int64(1), 'float': np.float64(2.0), - 'array': np.array([3,4,5]) + 'array': np.array([3,4,5]), + 'series': pd.Series([6,7,8]) } file = Path(tmpdir) / Path("data.json") utils.write_json(data, file, include_version=False) @@ -106,5 +108,6 @@ class TestUtils: assert json.load(f) == { 'int': 1, 'float': 2.0, - 'array': [3,4,5] + 'array': [3,4,5], + 'series': [6,7,8] } View it on GitLab: https://salsa.debian.org/med-team/augur/-/commit/7510d302c514390b6db253106ca7221cf43182ef -- View it on GitLab: https://salsa.debian.org/med-team/augur/-/commit/7510d302c514390b6db253106ca7221cf43182ef You're receiving this email because of your account on salsa.debian.org.
_______________________________________________ debian-med-commit mailing list [email protected] https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/debian-med-commit
