diff --git a/pandas2.patch b/pandas2.patch new file mode 100644 index 0000000..8a12d03 --- /dev/null +++ b/pandas2.patch @@ -0,0 +1,68 @@ +From a24240bfdec6a9d5172c2f25e19654d23ffc61e1 Mon Sep 17 00:00:00 2001 +From: Theelx <43764914+Theelx@users.noreply.github.com> +Date: Fri, 26 May 2023 14:05:05 -0400 +Subject: [PATCH] Implement compatibility with pandas 2 + +--- + jsonpickle/ext/pandas.py | 7 ++++++- + requirements-dev.txt | 2 +- + setup.cfg | 2 +- + tests/pandas_test.py | 2 +- + 4 files changed, 9 insertions(+), 4 deletions(-) + +Index: jsonpickle-3.0.1/jsonpickle/ext/pandas.py +=================================================================== +--- jsonpickle-3.0.1.orig/jsonpickle/ext/pandas.py ++++ jsonpickle-3.0.1/jsonpickle/ext/pandas.py +@@ -62,10 +62,13 @@ def make_read_csv_params(meta, context): + parse_dates = [] + converters = {} + timedeltas = [] ++ # this is only for pandas v2+ due to a backwards-incompatible change ++ parse_datetime_v2 = {} + dtype = {} + for k, v in meta_dtypes.items(): + if v.startswith('datetime'): + parse_dates.append(k) ++ parse_datetime_v2[k] = v + elif v.startswith('complex'): + converters[k] = complex + elif v.startswith('timedelta'): +@@ -79,6 +82,7 @@ def make_read_csv_params(meta, context): + dtype=dtype, header=header, parse_dates=parse_dates, converters=converters + ), + timedeltas, ++ parse_datetime_v2, + ) + + +@@ -104,7 +108,7 @@ class PandasDfHandler(BaseHandler): + + def restore(self, data): + csv, meta = self.pp.restore_pandas(data) +- params, timedeltas = make_read_csv_params(meta, self.context) ++ params, timedeltas, parse_datetime_v2 = make_read_csv_params(meta, self.context) + # None makes it compatible with objects serialized before + # column_levels_names has been introduced. + column_level_names = meta.get('column_level_names', None) +@@ -115,6 +119,7 @@ class PandasDfHandler(BaseHandler): + ) + for col in timedeltas: + df[col] = pd.to_timedelta(df[col]) ++ df = df.astype(parse_datetime_v2) + + df.set_index(decode(meta['index']), inplace=True) + # restore the column level(s) name(s) +Index: jsonpickle-3.0.1/tests/pandas_test.py +=================================================================== +--- jsonpickle-3.0.1.orig/tests/pandas_test.py ++++ jsonpickle-3.0.1/tests/pandas_test.py +@@ -62,7 +62,7 @@ def test_dataframe_roundtrip(): + 'an_inf': np.array([np.inf] * 3), + 'a_str': np.str_('foo'), + 'a_unicode': np.unicode_('bar'), +- 'date': np.array([np.datetime64('2014-01-01')] * 3), ++ 'date': np.array([np.datetime64('2014-01-01')] * 3, dtype="datetime64[s]"), + 'complex': np.complex_([1 - 2j, 2 - 1.2j, 3 - 1.3j]), + # TODO: the following dtypes are not currently supported. + # 'object': np.object_([{'a': 'b'}]*3), diff --git a/python-jsonpickle.changes b/python-jsonpickle.changes index febaf46..026ad34 100644 --- a/python-jsonpickle.changes +++ b/python-jsonpickle.changes @@ -1,3 +1,14 @@ +------------------------------------------------------------------- +Wed Jun 14 10:48:59 UTC 2023 - Markéta Machová + +- Add patch pandas2.patch to fix compatibility +- Skip flaky test + +------------------------------------------------------------------- +Sat Jun 10 17:30:51 UTC 2023 - ecsos + +- Add %{?sle15_python_module_pythons} + ------------------------------------------------------------------- Sat Jan 21 19:24:29 UTC 2023 - Ben Greiner diff --git a/python-jsonpickle.spec b/python-jsonpickle.spec index 314ee63..4270bbb 100644 --- a/python-jsonpickle.spec +++ b/python-jsonpickle.spec @@ -16,6 +16,7 @@ # +%{?sle15_python_module_pythons} Name: python-jsonpickle Version: 3.0.1 Release: 0 @@ -23,15 +24,14 @@ Summary: Python library for serializing any arbitrary object graph into J License: BSD-3-Clause URL: https://github.com/jsonpickle/jsonpickle Source: https://files.pythonhosted.org/packages/source/j/jsonpickle/jsonpickle-%{version}.tar.gz +# PATCH-FIX-UPSTREAM https://github.com/jsonpickle/jsonpickle/commit/a24240bfdec6a9d5172c2f25e19654d23ffc61e1 Implement compatibility with pandas 2 +Patch: pandas2.patch BuildRequires: %{python_module base >= 3.7} BuildRequires: %{python_module importlib_metadata if %python-base < 3.8} BuildRequires: %{python_module setuptools_scm >= 3.4.1} BuildRequires: %{python_module setuptools} BuildRequires: fdupes BuildRequires: python-rpm-macros -%if 0%{python_version_nodots} < 38 -Requires: python-importlib_metadata -%endif Recommends: python-simplejson Suggests: python-ujson Suggests: python-numpy @@ -68,7 +68,8 @@ sed -i 's/ --cov//' pytest.ini %python_expand %fdupes %{buildroot}%{$python_sitelib} %check -%pytest -ra +# test_multindex_dataframe_roundtrip is flaky on i586 +%pytest -ra -k "not test_multindex_dataframe_roundtrip" %files %{python_files} %license LICENSE