# # spec file for package python-Beaker # # Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany. # # 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 http://bugs.opensuse.org/ # %{?!python_module:%define python_module() python-%{**} python3-%{**}} %define oldpython python # Test files not in source archive %bcond_with test Name: python-Beaker Version: 1.9.0 Release: 1.3 Summary: A Session and Caching library with WSGI Middleware License: BSD-3-Clause Group: Development/Languages/Python Url: https://github.com/bbangert/beaker Source: https://files.pythonhosted.org/packages/source/B/Beaker/Beaker-%{version}.tar.gz BuildRequires: %{python_module setuptools} BuildRequires: fdupes BuildRequires: python-rpm-macros %if %{with test} BuildRequires: %{python_module SQLAlchemy} BuildRequires: %{python_module WebTest} BuildRequires: %{python_module coverage} BuildRequires: %{python_module cryptography} BuildRequires: %{python_module mock} BuildRequires: %{python_module nose} BuildRequires: %{python_module pycryptodome} BuildRequires: %{python_module pylibmc} BuildRequires: %{python_module python-memcached} BuildRequires: %{python_module pymongo} BuildRequires: %{python_module redis} BuildRequires: python-funcsigs %endif Requires: python-pylibmc Requires: python-python-memcached Recommends: python-SQLAlchemy Recommends: python-cryptography Recommends: python-pycryptopp >= 0.5.12 Recommends: python-pycrypto Recommends: python-pymongo Recommends: python-redis BuildArch: noarch %ifpython2 Requires: python-funcsigs Provides: %{oldpython}-beaker = %{version} Obsoletes: %{oldpython}-beaker < %{version} %endif %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 %setup -q -n Beaker-%{version} %build %python_build %install %python_install %python_expand %fdupes %{buildroot}%{$python_sitelib} %if %{with test} %check %python_exec setup.py test %endif %files %{python_files} %defattr(-,root,root,-) %doc README.rst %{python_sitelib}/beaker/ %{python_sitelib}/Beaker-%{version}-py*.egg-info %changelog * Thu Sep 7 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 2017 jmatejek@suse.com - singlespec auto-conversion * Wed Nov 16 2016 dmueller@suse.com - adjust for cryptopp -> pycryptopp rename * Mon Nov 14 2016 dmueller@suse.com - update to 1.8.1 * Bugfixes * Thu Sep 15 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 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 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 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 2013 berendt@b1-systems.de - added fdupes to remove rpmlint warning * Sat Sep 22 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 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 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 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 2011 saschpe@suse.de - Initial version