15
0

Accepting request 1132963 from devel:languages:python

OBS-URL: https://build.opensuse.org/request/show/1132963
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-jsonpickle?expand=0&rev=12
This commit is contained in:
2023-12-14 21:03:17 +00:00
committed by Git OBS Bridge
5 changed files with 35 additions and 83 deletions

View File

@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:032538804795e73b94ead410800ac387fdb6de98f8882ac957fcd247e3a85200
size 265121

3
jsonpickle-3.0.2.tar.gz Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e37abba4bfb3ca4a4647d28bb9f4706436f7b46c8a8333b4a718abafa8e46b37
size 266361

View File

@@ -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),

View File

@@ -1,3 +1,21 @@
-------------------------------------------------------------------
Wed Dec 13 16:18:51 UTC 2023 - Ben Greiner <code@bnavigator.de>
- 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á <mmachova@suse.com>

View File

@@ -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