From 33605962fcdd2f39050716804b970f4fce53c10b52c3e6db8928cf79377461b7 Mon Sep 17 00:00:00 2001 From: Steve Kowalik Date: Tue, 15 Apr 2025 06:22:45 +0000 Subject: [PATCH] - Switch to pyproject macros. - Add patch avoid-dbm-sqlite3.patch: * Avoid dbm.sqlite3 to support testing with Python 3.13. OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-Beaker?expand=0&rev=65 --- .gitattributes | 23 ++++ .gitignore | 1 + 1.13.0.tar.gz | 3 + avoid-dbm-sqlite3.patch | 40 ++++++ python-Beaker.changes | 291 +++++++++++++++++++++++++++++++++++++++ python-Beaker.spec | 118 ++++++++++++++++ support-pymemcache.patch | 26 ++++ 7 files changed, 502 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 1.13.0.tar.gz create mode 100644 avoid-dbm-sqlite3.patch create mode 100644 python-Beaker.changes create mode 100644 python-Beaker.spec create mode 100644 support-pymemcache.patch diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57affb6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.osc diff --git a/1.13.0.tar.gz b/1.13.0.tar.gz new file mode 100644 index 0000000..cf915ea --- /dev/null +++ b/1.13.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3987a336340e884bcec2a2496f2614ee2cd0a171079191f57df25247b6e0c4a7 +size 90138 diff --git a/avoid-dbm-sqlite3.patch b/avoid-dbm-sqlite3.patch new file mode 100644 index 0000000..00f6e56 --- /dev/null +++ b/avoid-dbm-sqlite3.patch @@ -0,0 +1,40 @@ +From 4fea03d3cef673917d30ca70ab693e2f851f7260 Mon Sep 17 00:00:00 2001 +From: Adam Williamson +Date: Fri, 21 Jun 2024 12:32:19 -0700 +Subject: [PATCH] Avoid using dbm.sqlite3 (#242) + +Python 3.13 added a new dbm backend, dbm.sqlite3, as the most- +preferred choice when you do `import dbm`. This backend causes +our test suite to fail with sqlite3 threading violations. This +tweaks our dbm loading to just skip sqlite3 and try the other +possible backends in the same order as Python < 3.13 did. + +Signed-off-by: Adam Williamson +--- + beaker/_compat.py | 11 +++++++++-- + 1 file changed, 9 insertions(+), 2 deletions(-) + +diff --git a/beaker/_compat.py b/beaker/_compat.py +index d7bac174..fd2ed42e 100644 +--- a/beaker/_compat.py ++++ b/beaker/_compat.py +@@ -28,10 +28,17 @@ + import http.cookies as http_cookies + from base64 import b64decode as _b64decode, b64encode as _b64encode + ++ # this reproduces the default behavior of Python 3.0 to 3.12 ++ # Python 3.13 added dbm.sqlite3 as the first choice, but it ++ # doesn't work for us due to threading violations: ++ # https://github.com/bbangert/beaker/issues/242 + try: +- import dbm as anydbm ++ import dbm.gnu as anydbm + except: +- import dumbdbm as anydbm ++ try: ++ import dbm.ndbm as anydbm ++ except: ++ import dbm.dumb as anydbm + + def b64decode(b): + return _b64decode(b.encode('ascii')) diff --git a/python-Beaker.changes b/python-Beaker.changes new file mode 100644 index 0000000..6f8c849 --- /dev/null +++ b/python-Beaker.changes @@ -0,0 +1,291 @@ +------------------------------------------------------------------- +Tue Apr 15 06:20:51 UTC 2025 - Steve Kowalik + +- Switch to pyproject macros. +- Add patch avoid-dbm-sqlite3.patch: + * Avoid dbm.sqlite3 to support testing with Python 3.13. + +------------------------------------------------------------------- +Sat Apr 20 13:26:25 UTC 2024 - Dirk Müller + +- update to 1.13.0: + * Fix validation messages for validate_key and encrypt_key + * Added support for rediscluster via ext:redisclusternm + * Removed the need to install mock library to run tests + +------------------------------------------------------------------- +Fri Feb 10 10:19:21 UTC 2023 - Dirk Müller + +- update to 1.12.1: + * Fix ext:database backend failing to initialize + * Improved inline code documentation for the crypto module + +------------------------------------------------------------------- +Tue Jan 3 08:16:03 UTC 2023 - Steve Kowalik + +- Actually correct BuildRequires. + +------------------------------------------------------------------- +Tue Dec 20 06:34:00 UTC 2022 - Steve Kowalik + +- Update to 1.12.0: + * Enabled testing on Python 3.10 and 3.11 + * Fixed issue #122 - Session ignores deserializer json + * Remove ID generation fallback for when the uuid module is not found + * Port testing from nose to pytest + * Fixed issue #180 - KeyError when loading deleted session +- Remove Python 2 and Python 3 gubbins. +- Remove patch denose.patch, merged upstream. +- Add patch support-pymemcache.patch: + * Also support pymemcache. +- Fiddle BuildRequires as appropiate. + +------------------------------------------------------------------- +Wed Mar 16 08:44:59 UTC 2022 - pgajdos@suse.com + +- python-mock is actually not required for build + +------------------------------------------------------------------- +Tue Mar 1 08:40:51 UTC 2022 - Dirk Müller + +- add glibc-locale dependency for tests + +------------------------------------------------------------------- +Fri Mar 5 09:13:58 UTC 2021 - Markéta Machová + +- Replace broken %ifpython3 macro + +------------------------------------------------------------------- +Wed Jul 22 20:24:19 UTC 2020 - Matej Cepl + +- Add denose.patch, which ports the package from the dependency + on nose to pytest (gh#bbangert/beaker#192). + +------------------------------------------------------------------- +Wed Apr 22 06:59:17 UTC 2020 - Steve Kowalik + +- Fix build without Python 2 present. + +------------------------------------------------------------------- +Sat Nov 23 13:35:32 UTC 2019 - Michael Ströder + +- only recommend installation of package python-python-memcached + +------------------------------------------------------------------- +Mon Sep 23 14:43:25 UTC 2019 - pgajdos@suse.com + +- version update to 1.11.0 + * Fixed cookie path option not being properly set (`self._path` + was removed, only `self.path` exists) + * Documented `SameSite` option + * Fixed cookie expiration being localised when it shouldn't. + +------------------------------------------------------------------- +Thu Apr 18 14:26:01 CEST 2019 - Matej Cepl + +- Actually for working around gh#bbangert/beaker#172 it is enough + to rm -fv tests/test.db, because the test suite apparently + doesn't clean up after itself. + +------------------------------------------------------------------- +Mon Apr 1 13:36:58 UTC 2019 - Matej Cepl + +- Ignore test_database tests to avoid gh#bbangert/beaker#172 + +------------------------------------------------------------------- +Fri Mar 1 09:08:58 UTC 2019 - Tomáš Chvátal + +- Update to 1.10.1: + * Fix issue with Redis namespace manager TTL + * Fix for SameSite cookie option not being set in some cases + * Fix for memcached tests on Python3 + * Redis namespace manager now supports providing a TTL for session entries that had a ``timeout`` provided. + This will remove the need to manually clear expired sessions from the redis storage. + * ``nsscrypto`` backend is now properly identified as providing AES support. + * When a crypto backend doesn't support AES it will no longer crash if the ``encrypt_key`` is ``None``. + * Session cookies will now provide support for ``SameSite`` through the ``samesite`` option. + By default this will be ``Lax``, but can be set to ``Strict`` or ``None`` to disable it. + +------------------------------------------------------------------- +Thu Sep 7 16:55:30 UTC 2017 - toddrme2178@gmail.com + +- Update to version 1.9.0 + * Beaker now provides builtin ``ext:mongodb`` and ``ext:redis`` + namespace managers. Both come with a Synchronizer implemented + on the storage backend instead of relying on file one. + * Fixed an issue where cookie options like ``Secure``, + ``Domain`` and so on where lost. + * Improved support for cache entries expiration. + NamespaceManagers that support it will expire their key + automatically. + * Pycryptodome can be used instead of pycrypto. + * An issue with ``Cookie`` module import on case insensitive + file systems should have been resolved. + * Cryptography module is now as a crypto function provider + instead of pycrypto + +------------------------------------------------------------------- +Thu Aug 24 13:33:15 UTC 2017 - jmatejek@suse.com + +- singlespec auto-conversion + +------------------------------------------------------------------- +Wed Nov 16 09:56:42 UTC 2016 - dmueller@suse.com + +- adjust for cryptopp -> pycryptopp rename + +------------------------------------------------------------------- +Mon Nov 14 13:58:04 UTC 2016 - dmueller@suse.com + +- update to 1.8.1 + * Bugfixes + +------------------------------------------------------------------- +Thu Sep 15 22:14:25 UTC 2016 - toddrme2178@gmail.com + +- Update to version 1.8.0 + * Encrypted sessions can now specify nonce length for salt + generation through encrypt_nonce_bits parameter. set it to 48 + for backward compatibility with sessions generated before 1.8.0 + * kwargs support in @cache_region decorator + * annotations support in @cache_region decorator + * data_serializer parameter in Session can now specify json to + avoid pickle security issues + * Invalid cookies are now skipped in cookie based sessions + * Memcached based on PyLibMC now share same connection pool for + same url + +------------------------------------------------------------------- +Sat Apr 25 18:36:03 UTC 2015 - benoit.monin@gmx.fr + +- update to version 1.7.0: + * Beaker no longer supports python 2.4 and 2.5 + * Beaker now supports Python 2.6, 2.7, 3.2, 3.3, 3.4 without + 2to3 usage + * Fixed Encrypted Cookie Session on Python3 #57 + * New pbkdf2 mobule working on Python3 #21 + * Fixed Test suite on Python 3.3 #53, #51 +- additional changes from version 1.6.5: + * @cached decorator now keeps docstring of decorated method. + * Fix crash when Session ``accessed_time`` is not available, + this happened when session ``encrypt_key`` was changed. + * Fix cache regions not providing a default key length even + though this was required and examples in the doc didn't + provide it. + * Fix crash when cache expire wasn't an int, this happened when + caching options were loaded from a config file. +- remove everything related to tests: + upstream deleted them from archive +- drop Beaker-1.6.4-setup_test.patch: only used by the tests +- do not delete the shebang of pbkdf2.py: fixed upstream +- remove CHANGELOG and LICENSE from package: deleted from archive +- add README.rst to the package documentation + +------------------------------------------------------------------- +Fri Aug 9 09:20:00 UTC 2013 - speilicke@suse.com + +- Add a build conditional for testing with memcached. It can be too + heavy at times +- Fix previous changes entry + +------------------------------------------------------------------- +Tue Aug 6 23:16:53 UTC 2013 - hpj@urpla.net + +- fix deps +- enable full testing +- Add Beaker-1.6.4-setup_test.patch: Workaround for TypeError in + multiprocessing/util.py + +------------------------------------------------------------------- +Fri Jul 19 17:12:05 UTC 2013 - berendt@b1-systems.de + +- added fdupes to remove rpmlint warning + +------------------------------------------------------------------- +Sat Sep 22 20:26:45 UTC 2012 - os-dev@jacraig.com + +- Update to 1.6.4: + * Warning: Session hashing for encrypted sessions using PyCrypto has + changed. This will result in sessions being invalidated upon upgrading + if PyCrypto is used. + * Fix bug with key_length not being coerced to a int for comparison. + * Fix bug with cookie invalidation not clearing the cookie data. + * Added ability to pass in cookie_path for the Session. + * Add NSS crypto support to Beaker. + * Fix security bug with pycrypto not securing data such that an attacker + could possibly determine parts of the encrypted payload. See CVE-2012-3458 + . + * Add ability to specify schema for database-backed sessions. + * Fix issue with long key names in memcached backend. +- Fix sed script so it removes the shebang instead of inserting "d" throughout + the pbkdf2.py file. +- Test suite now succeeds (for Python 2 package) but didn't add it to build + because it takes too long. +- Update URL to what is given in setup.py. + +------------------------------------------------------------------- +Wed May 23 03:08:32 UTC 2012 - highwaystar.ru@gmail.com + +- update to version 1.6.3 + * Fix bug with cookie deletion on leap years. Patch contributed + by Greg Nelson and Michael Wirth. + * Fix issue with referencing same module via different import paths. + Patch contributed by brianfrantz. + * Fix cookie expiration check. Patch contributed by Mike Dirolf. +- python3 package added +- minor spec improvement + +------------------------------------------------------------------- +Wed Feb 1 10:43:39 UTC 2012 - saschpe@suse.de + +- Update to version 1.6.2: + * Updated dogpile lock so that it locks per namespace+key rather than on the + entire namespace. (#101) + * Added encryption option for any backend. Patch contributed by Toby Elliot. + +------------------------------------------------------------------- +Thu Nov 10 10:13:51 UTC 2011 - saschpe@suse.de + +- Update to version 1.6.1: + * Remove stray print statement. + * Include .app for consistency instead of requiring wrap_app. +- Changes from version 1.6: + * Fix bug with cache_key length calculation. + * Fix bug with how path was set so that its restored properly and propagated. + * Fix bug with CacheMiddleware clobbering enabled setting. + * Update option for ``cookie_expires`` so that it can now handle an integer + which will be used as the seconds till the cookie expires. + * Merge fix for Issue 31, can now handle unicode cache keys. + * Add ``key_length`` option for cache regions, and for keyword args passed + into the cache system. Cache keys longer than this will be SHA'd. + * added runtime beaker.__version__ + * Add ``webtest_varname`` option to configuration to optionally include + the session value in the environ vars when using Beaker with WebTest. + * Defer running of pkg_resources to look for external cache modules + until requested. #66 + * memcached backend uses pylibmc.ThreadMappedPool to ensure thread-local + usage of pylibmc when that library is in use. (#60) + * memcached backend also has ``memcache_module`` string argument, allows + direct specification of the name of which memcache backend to use. + * Basic container/file-based Session support working in Py3K. (#72) + * Further Python 3 fixes + * Added an optimization to the FileNamespaceContainer when used with + Session, such that the pickled contents of the file are not + read a second time when session.save() is called. (#64) + * Fixed bug whereby CacheManager.invalidate wouldn't work for a function + decorated by cache.cache(). (#61) + * cache decorators @cache.cache(), @cache_region() won't include first + argument named 'self' or 'cls' as part of the cache key. This allows + reasonably safe usage for methods as well as functions. (#55) + * file backend no longer squashes unpickling errors. This was inconsistent + behavior versus all the other backends. + * invalidate_corrupt flag on Session now emits a warning. (#52) + * cache.remove_value() removes the value even if it's already marked + 'expired' (#42) + +------------------------------------------------------------------- +Thu Sep 1 13:13:32 UTC 2011 - saschpe@suse.de + +- Initial version + + diff --git a/python-Beaker.spec b/python-Beaker.spec new file mode 100644 index 0000000..cec8bb5 --- /dev/null +++ b/python-Beaker.spec @@ -0,0 +1,118 @@ +# +# spec file for package python-Beaker +# +# Copyright (c) 2025 SUSE LLC +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +Name: python-Beaker +Version: 1.13.0 +Release: 0 +Summary: A Session and Caching library with WSGI Middleware +License: BSD-3-Clause +URL: https://github.com/bbangert/beaker +Source: https://github.com/bbangert/beaker/archive/%{version}.tar.gz +# PATCH-FIX-OPENSUSE Support pymemcache +Patch0: support-pymemcache.patch +# PATCH-FIX-UPSTREAM gh#AdamWill/beaker#4fea03d3cef673917d30ca70ab693e2f851f7260 +Patch1: avoid-dbm-sqlite3.patch +BuildRequires: %{python_module SQLAlchemy} +BuildRequires: %{python_module WebTest} +BuildRequires: %{python_module coverage} +BuildRequires: %{python_module cryptography} +BuildRequires: %{python_module dbm} +BuildRequires: %{python_module pip} +BuildRequires: %{python_module pycryptodome} +BuildRequires: %{python_module pylibmc} +BuildRequires: %{python_module pymemcache} +BuildRequires: %{python_module pymongo} +BuildRequires: %{python_module pytest} +BuildRequires: %{python_module redis} +BuildRequires: %{python_module setuptools} +BuildRequires: %{python_module wheel} +BuildRequires: fdupes +BuildRequires: glibc-locale +BuildRequires: python-rpm-macros +Requires: python-dbm +Requires: python-pylibmc +Requires: python-setuptools +Recommends: python-SQLAlchemy +Recommends: python-cryptography +Recommends: python-pycrypto +Recommends: python-pycryptopp >= 0.5.12 +Recommends: python-pymemcache +Recommends: python-pymongo +Recommends: python-redis +BuildArch: noarch +%python_subpackages + +%description +Beaker is a web session and general caching library that includes WSGI +middleware for use in web applications. + +As a general caching library, Beaker can handle storing for various times +any Python object that can be pickled with optional back-ends on a +fine-grained basis. + +Beaker was built largely on the code from MyghtyUtils, then refactored and +extended with database support. + +Beaker includes Cache and Session WSGI middleware to ease integration with +WSGI capable frameworks, and is automatically used by Pylons. + +Features include: + +* Fast, robust performance +* Multiple reader/single writer lock system to avoid duplicate simultaneous + cache creation +* Cache back-ends include dbm, file, memory, memcached, and database (Using + SQLAlchemy for multiple-db vendor support) +* Signed cookie's to prevent session hijacking/spoofing +* Cookie-only sessions to remove the need for a db or file backend (ideal + for clustered systems) +* Extensible Container object to support new back-ends +* Cache's can be divided into namespaces (to represent templates, objects, + etc.) then keyed for different copies +* Create functions for automatic call-backs to create new cache copies after + expiration +* Fine-grained toggling of back-ends, keys, and expiration per Cache object + +%prep +%autosetup -p1 -n beaker-%{version} + +%build +%pyproject_wheel + +%install +%pyproject_install +%python_expand %fdupes %{buildroot}%{$python_sitelib} + +%check +# needs mongo and redis running +rm -r tests/test_managers +rm tests/test_memcached.py +rm tests/test_cachemanager.py +%{python_expand PYTHONPATH=%{buildroot}%{$python_sitelib} +# gh#bbangert/beaker#172 +rm -fv tests/test.db +pytest tests +} + +%files %{python_files} +%license LICENSE +%doc README.rst CHANGELOG +%{python_sitelib}/beaker/ +%{python_sitelib}/beaker-%{version}.dist-info + +%changelog diff --git a/support-pymemcache.patch b/support-pymemcache.patch new file mode 100644 index 0000000..cf0b40a --- /dev/null +++ b/support-pymemcache.patch @@ -0,0 +1,26 @@ +Index: beaker-1.12.0/beaker/ext/memcached.py +=================================================================== +--- beaker-1.12.0.orig/beaker/ext/memcached.py ++++ beaker-1.12.0/beaker/ext/memcached.py +@@ -39,8 +39,12 @@ def _load_client(name='auto'): + import bmemcached + return bmemcached + ++ def _pymemcache(): ++ from pymemcache.client.base import Client ++ return Client ++ + def _auto(): +- for _client in (_pylibmc, _cmemcache, _memcache, _bmemcached): ++ for _client in (_pymemcache, _pylibmc, _cmemcache, _memcache, _bmemcached): + try: + return _client() + except ImportError: +@@ -52,6 +56,7 @@ def _load_client(name='auto'): + + clients = { + 'pylibmc': _pylibmc, ++ 'pymemcache': _pymemcache, + 'cmemcache': _cmemcache, + 'memcache': _memcache, + 'bmemcached': _bmemcached,