From 82f3c59ed2eefe5069be2541919bb4b5aec01084051ff97823fa5e6116cfdf3c Mon Sep 17 00:00:00 2001 From: Steve Kowalik Date: Thu, 14 Dec 2023 00:58:00 +0000 Subject: [PATCH] Accepting request 1132921 from home:bnavigator:branches:devel:languages:python - Update to 3.0.2 * Properly raise warning if a custom pickling handler returns None. (#433) * Fix issue with serialization of certain sklearn objects breaking when the numpy handler was enabled. (#431) (+434) * Allow custom backends to not implement _encoder_options (#436) (+446) * Implement compatibility with pandas 2 (+446) * Fix encoding/decoding of dictionary subclasses with referencing (+455) * Fix depth tracking for list/dict referencing (+456) - Drop pandas2.patch - Skip a noncritical test due to pandas built with Cython 3 gh#jsonpickle/jsonpickle#460 OBS-URL: https://build.opensuse.org/request/show/1132921 OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-jsonpickle?expand=0&rev=28 --- jsonpickle-3.0.1.tar.gz | 3 -- jsonpickle-3.0.2.tar.gz | 3 ++ pandas2.patch | 68 --------------------------------------- python-jsonpickle.changes | 18 +++++++++++ python-jsonpickle.spec | 26 ++++++++------- 5 files changed, 35 insertions(+), 83 deletions(-) delete mode 100644 jsonpickle-3.0.1.tar.gz create mode 100644 jsonpickle-3.0.2.tar.gz delete mode 100644 pandas2.patch diff --git a/jsonpickle-3.0.1.tar.gz b/jsonpickle-3.0.1.tar.gz deleted file mode 100644 index b4b541a..0000000 --- a/jsonpickle-3.0.1.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:032538804795e73b94ead410800ac387fdb6de98f8882ac957fcd247e3a85200 -size 265121 diff --git a/jsonpickle-3.0.2.tar.gz b/jsonpickle-3.0.2.tar.gz new file mode 100644 index 0000000..4078604 --- /dev/null +++ b/jsonpickle-3.0.2.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e37abba4bfb3ca4a4647d28bb9f4706436f7b46c8a8333b4a718abafa8e46b37 +size 266361 diff --git a/pandas2.patch b/pandas2.patch deleted file mode 100644 index 8a12d03..0000000 --- a/pandas2.patch +++ /dev/null @@ -1,68 +0,0 @@ -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 026ad34..6c53251 100644 --- a/python-jsonpickle.changes +++ b/python-jsonpickle.changes @@ -1,3 +1,21 @@ +------------------------------------------------------------------- +Wed Dec 13 16:18:51 UTC 2023 - Ben Greiner + +- Update to 3.0.2 + * Properly raise warning if a custom pickling handler returns + None. (#433) + * Fix issue with serialization of certain sklearn objects + breaking when the numpy handler was enabled. (#431) (+434) + * Allow custom backends to not implement _encoder_options (#436) + (+446) + * Implement compatibility with pandas 2 (+446) + * Fix encoding/decoding of dictionary subclasses with referencing + (+455) + * Fix depth tracking for list/dict referencing (+456) +- Drop pandas2.patch +- Skip a noncritical test due to pandas built with Cython 3 + gh#jsonpickle/jsonpickle#460 + ------------------------------------------------------------------- Wed Jun 14 10:48:59 UTC 2023 - Markéta Machová diff --git a/python-jsonpickle.spec b/python-jsonpickle.spec index 4270bbb..322277e 100644 --- a/python-jsonpickle.spec +++ b/python-jsonpickle.spec @@ -18,24 +18,23 @@ %{?sle15_python_module_pythons} Name: python-jsonpickle -Version: 3.0.1 +Version: 3.0.2 Release: 0 Summary: Python library for serializing any arbitrary object graph into JSON 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 pip} +BuildRequires: %{python_module setuptools >= 42} BuildRequires: %{python_module setuptools_scm >= 3.4.1} -BuildRequires: %{python_module setuptools} +BuildRequires: %{python_module wheel} BuildRequires: fdupes BuildRequires: python-rpm-macros -Recommends: python-simplejson -Suggests: python-ujson -Suggests: python-numpy -Suggests: python-pandas +%if %python_version_nodots < 38 +Requires: python-importlib_metadata +%endif BuildArch: noarch # SECTION test requirements BuildRequires: %{python_module SQLAlchemy} @@ -61,20 +60,23 @@ Additionally, it can reconstitute the object back into Python. sed -i 's/ --cov//' pytest.ini %build -%python_build +%pyproject_wheel %install -%python_install +%pyproject_install %python_expand %fdupes %{buildroot}%{$python_sitelib} %check # test_multindex_dataframe_roundtrip is flaky on i586 -%pytest -ra -k "not test_multindex_dataframe_roundtrip" +donttest="test_multindex_dataframe_roundtrip" +# https://github.com/jsonpickle/jsonpickle/issues/460 +donttest+=" or test_timedelta_index_roundtrip" +%pytest -ra -k "not ($donttest)" %files %{python_files} %license LICENSE %doc README.rst CHANGES.rst %{python_sitelib}/jsonpickle -%{python_sitelib}/jsonpickle-%{version}*-info +%{python_sitelib}/jsonpickle-%{version}.dist-info %changelog