Compare commits
2 Commits
| Author | SHA256 | Date | |
|---|---|---|---|
| dd4ca3ebc8 | |||
| 61353c5cf7 |
BIN
cached-property-1.5.2.tar.gz
LFS
BIN
cached-property-1.5.2.tar.gz
LFS
Binary file not shown.
3
cached_property-2.0.1.tar.gz
Normal file
3
cached_property-2.0.1.tar.gz
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:484d617105e3ee0e4f1f58725e72a8ef9e93deee462222dbd51cd91230897641
|
||||||
|
size 10574
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
---
|
|
||||||
tests/test_cached_property.py | 1 +
|
|
||||||
1 file changed, 1 insertion(+)
|
|
||||||
|
|
||||||
--- a/tests/test_cached_property.py
|
|
||||||
+++ b/tests/test_cached_property.py
|
|
||||||
@@ -188,6 +188,7 @@ class TestCachedPropertyWithTTL(TestCach
|
|
||||||
self.assert_cached(check, 2)
|
|
||||||
self.assert_cached(check, 2)
|
|
||||||
|
|
||||||
+ @unittest.skip("new freezegun breaks behaviour of this test")
|
|
||||||
def test_threads_ttl_expiry(self):
|
|
||||||
Check = CheckFactory(self.cached_property_factory(ttl=100000), threadsafe=True)
|
|
||||||
check = Check()
|
|
||||||
@@ -1,3 +1,19 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Sep 12 11:24:20 UTC 2025 - Daniel Garcia <daniel.garcia@suse.com>
|
||||||
|
|
||||||
|
- Drop patches:
|
||||||
|
* freezegun-skip.patch
|
||||||
|
* python311.patch
|
||||||
|
- update to 2.0.1:
|
||||||
|
* Via python_requires specifies that cached_property is for Python
|
||||||
|
version 3.8 or higher
|
||||||
|
* Officiall drop support for Python 2.6
|
||||||
|
- 2.0.0 (2024-10-25)
|
||||||
|
* Remove support for Python versions < 3.8
|
||||||
|
* Add formal support for Python versions up to 3.13
|
||||||
|
* Switch to Markdown for docs
|
||||||
|
* Migrate from black to ruff
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Thu May 15 12:13:24 UTC 2025 - Markéta Machová <mmachova@suse.com>
|
Thu May 15 12:13:24 UTC 2025 - Markéta Machová <mmachova@suse.com>
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#
|
#
|
||||||
# spec file for package python-cached-property
|
# spec file for package python-cached-property
|
||||||
#
|
#
|
||||||
# Copyright (c) 2025 SUSE LLC
|
# Copyright (c) 2025 SUSE LLC and contributors
|
||||||
#
|
#
|
||||||
# All modifications and additions to the file contributed by third parties
|
# All modifications and additions to the file contributed by third parties
|
||||||
# remain the property of their copyright owners, unless otherwise agreed
|
# remain the property of their copyright owners, unless otherwise agreed
|
||||||
@@ -18,18 +18,13 @@
|
|||||||
|
|
||||||
%{?sle15_python_module_pythons}
|
%{?sle15_python_module_pythons}
|
||||||
Name: python-cached-property
|
Name: python-cached-property
|
||||||
Version: 1.5.2
|
Version: 2.0.1
|
||||||
Release: 0
|
Release: 0
|
||||||
Summary: A decorator for caching properties in classes
|
Summary: A decorator for caching properties in classes
|
||||||
License: BSD-3-Clause
|
License: BSD-3-Clause
|
||||||
Group: Development/Libraries/Python
|
Group: Development/Libraries/Python
|
||||||
URL: https://github.com/pydanny/cached-property
|
URL: https://github.com/pydanny/cached-property
|
||||||
Source: https://files.pythonhosted.org/packages/source/c/cached-property/cached-property-%{version}.tar.gz
|
Source: https://files.pythonhosted.org/packages/source/c/cached-property/cached_property-%{version}.tar.gz
|
||||||
# PATCH-FIX-UPSTREAM skip test that rely on wrong freezegun behaviour
|
|
||||||
# https://github.com/pydanny/cached-property/pull/125
|
|
||||||
Patch0: freezegun-skip.patch
|
|
||||||
# PATCH-FIX-UPSTREAM Don't use asyncio.coroutine if it's not available -- https://github.com/pydanny/cached-property/pull/267
|
|
||||||
Patch1: python311.patch
|
|
||||||
BuildRequires: %{python_module freezegun}
|
BuildRequires: %{python_module freezegun}
|
||||||
BuildRequires: %{python_module pip}
|
BuildRequires: %{python_module pip}
|
||||||
BuildRequires: %{python_module pytest}
|
BuildRequires: %{python_module pytest}
|
||||||
@@ -46,7 +41,7 @@ computational expensive properties quick and easy and it works in Python 2
|
|||||||
and 3.
|
and 3.
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
%autosetup -p1 -n cached-property-%{version}
|
%autosetup -p1 -n cached_property-%{version}
|
||||||
|
|
||||||
%build
|
%build
|
||||||
%pyproject_wheel
|
%pyproject_wheel
|
||||||
@@ -60,7 +55,7 @@ and 3.
|
|||||||
|
|
||||||
%files %{python_files}
|
%files %{python_files}
|
||||||
%license LICENSE
|
%license LICENSE
|
||||||
%doc AUTHORS.rst README.rst HISTORY.rst
|
%doc AUTHORS.md README.md HISTORY.md
|
||||||
%{python_sitelib}/cached[-_]property.py
|
%{python_sitelib}/cached[-_]property.py
|
||||||
%{python_sitelib}/cached[-_]property-%{version}*-info
|
%{python_sitelib}/cached[-_]property-%{version}*-info
|
||||||
%pycache_only %{python_sitelib}/__pycache__/cached[-_]property*
|
%pycache_only %{python_sitelib}/__pycache__/cached[-_]property*
|
||||||
|
|||||||
106
python311.patch
106
python311.patch
@@ -1,106 +0,0 @@
|
|||||||
From 297031687679762849dedeaf24aa3a19116f095b Mon Sep 17 00:00:00 2001
|
|
||||||
From: Petr Viktorin <encukou@gmail.com>
|
|
||||||
Date: Thu, 2 Dec 2021 11:26:20 +0100
|
|
||||||
Subject: [PATCH 1/2] Don't use asyncio.coroutinefunction if it's not available
|
|
||||||
|
|
||||||
Python 3.11 drops the deprecated @asyncio.coroutine and
|
|
||||||
asyncio.iscoroutinefunction.
|
|
||||||
|
|
||||||
Using a wrapper with @asyncio.coroutine in __get__ wasn't
|
|
||||||
necessary (the future from asyncio.ensure_future is awaitable,
|
|
||||||
and the wrapper doesn't do anything asynchronous), so the
|
|
||||||
logic can be simplified to just call asyncio.ensure_future
|
|
||||||
(to schedule the task and store the result when it's
|
|
||||||
available).
|
|
||||||
|
|
||||||
Tests for @asyncio.coroutine are skipped on 3.11+.
|
|
||||||
|
|
||||||
An unnecessary call to asyncio.coroutine in tests is
|
|
||||||
removed: it's not necessary to call this for `async def`
|
|
||||||
functions.
|
|
||||||
---
|
|
||||||
cached_property.py | 24 +++++++++++-------------
|
|
||||||
conftest.py | 8 ++++----
|
|
||||||
tests/test_async_cached_property.py | 3 +--
|
|
||||||
3 files changed, 16 insertions(+), 19 deletions(-)
|
|
||||||
|
|
||||||
--- a/cached_property.py
|
|
||||||
+++ b/cached_property.py
|
|
||||||
@@ -13,6 +13,12 @@ try:
|
|
||||||
import asyncio
|
|
||||||
except (ImportError, SyntaxError):
|
|
||||||
asyncio = None
|
|
||||||
+if asyncio:
|
|
||||||
+ try:
|
|
||||||
+ iscoroutinefunction = asyncio.iscoroutinefunction
|
|
||||||
+ except AttributeError:
|
|
||||||
+ # Python 3.11: @asyncio.coroutine was removed
|
|
||||||
+ from inspect import iscoroutinefunction
|
|
||||||
|
|
||||||
|
|
||||||
class cached_property(object):
|
|
||||||
@@ -30,22 +36,14 @@ class cached_property(object):
|
|
||||||
if obj is None:
|
|
||||||
return self
|
|
||||||
|
|
||||||
- if asyncio and asyncio.iscoroutinefunction(self.func):
|
|
||||||
- return self._wrap_in_coroutine(obj)
|
|
||||||
+ if asyncio and iscoroutinefunction(self.func):
|
|
||||||
+ value = asyncio.ensure_future(self.func(obj))
|
|
||||||
+ else:
|
|
||||||
+ value = self.func(obj)
|
|
||||||
|
|
||||||
- value = obj.__dict__[self.func.__name__] = self.func(obj)
|
|
||||||
+ obj.__dict__[self.func.__name__] = value
|
|
||||||
return value
|
|
||||||
|
|
||||||
- def _wrap_in_coroutine(self, obj):
|
|
||||||
- @wraps(obj)
|
|
||||||
- @asyncio.coroutine
|
|
||||||
- def wrapper():
|
|
||||||
- future = asyncio.ensure_future(self.func(obj))
|
|
||||||
- obj.__dict__[self.func.__name__] = future
|
|
||||||
- return future
|
|
||||||
-
|
|
||||||
- return wrapper()
|
|
||||||
-
|
|
||||||
|
|
||||||
class threaded_cached_property(object):
|
|
||||||
"""
|
|
||||||
--- a/conftest.py
|
|
||||||
+++ b/conftest.py
|
|
||||||
@@ -1,4 +1,3 @@
|
|
||||||
-
|
|
||||||
import sys
|
|
||||||
|
|
||||||
# Whether "import asyncio" works
|
|
||||||
@@ -7,13 +6,14 @@ has_asyncio = sys.version_info[0] == 3 a
|
|
||||||
# Whether the async and await keywords work
|
|
||||||
has_async_await = sys.version_info[0] == 3 and sys.version_info[1] >= 5
|
|
||||||
|
|
||||||
+# Whether "from asyncio import coroutine" *fails*
|
|
||||||
+dropped_asyncio_coroutine = sys.version_info[0] == 3 and sys.version_info[1] >= 11
|
|
||||||
|
|
||||||
-print("conftest.py", has_asyncio, has_async_await)
|
|
||||||
-
|
|
||||||
+print("conftest.py", has_asyncio, has_async_await, dropped_asyncio_coroutine)
|
|
||||||
|
|
||||||
collect_ignore = []
|
|
||||||
|
|
||||||
-if not has_asyncio:
|
|
||||||
+if not has_asyncio or dropped_asyncio_coroutine:
|
|
||||||
collect_ignore.append("tests/test_coroutine_cached_property.py")
|
|
||||||
|
|
||||||
if not has_async_await:
|
|
||||||
--- a/tests/test_async_cached_property.py
|
|
||||||
+++ b/tests/test_async_cached_property.py
|
|
||||||
@@ -9,8 +9,7 @@ import cached_property
|
|
||||||
|
|
||||||
def unittest_run_loop(f):
|
|
||||||
def wrapper(*args, **kwargs):
|
|
||||||
- coro = asyncio.coroutine(f)
|
|
||||||
- future = coro(*args, **kwargs)
|
|
||||||
+ future = f(*args, **kwargs)
|
|
||||||
loop = asyncio.get_event_loop()
|
|
||||||
loop.run_until_complete(future)
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user