# # spec file for package python-bottle # # Copyright (c) 2024 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/ # %{?sle15_python_module_pythons} Name: python-bottle Version: 0.13.2 Release: 1.5 Summary: WSGI framework for small web applications License: MIT URL: https://bottlepy.org/ Source: https://files.pythonhosted.org/packages/source/b/bottle/bottle-%{version}.tar.gz Source1: http://bottlepy.org/docs/0.12/bottle-docs.pdf BuildRequires: %{python_module pip} BuildRequires: %{python_module setuptools} BuildRequires: %{python_module wheel} BuildRequires: fdupes BuildRequires: python-rpm-macros Requires(post): update-alternatives Requires(postun): update-alternatives BuildArch: noarch %python_subpackages %description Bottle is a micro-framework for small web applications. It offers request dispatching (routes) with URL parameter support, templates, a built-in HTTP server, and adapters for many third party WSGI/HTTP servers and template engines. This is all in a single file and with no dependencies other than the Python Standard Library. %if 0%{?suse_version} > 1500 %package -n %{name}-doc Summary: Documentation for %{name} Provides: %{python_module bottle-doc = %{version}} %description -n %{name}-doc Bottle is a micro-framework for small web applications. It offers request dispatching (routes) with URL parameter support, templates, a built-in HTTP server, and adapters for many third party WSGI/HTTP servers and template engines. This is all in a single file and with no dependencies other than the Python Standard Library. This subpackage contains the PDF documentation for %{name}. %endif %prep %autosetup -p1 -n bottle-%{version} cp %{SOURCE1} . %build %pyproject_wheel %install %pyproject_install %python_expand %fdupes %{buildroot}%{$python_sitelib} %python_clone -a %{buildroot}%{_bindir}/bottle.py %python_clone -a %{buildroot}%{_bindir}/bottle %check %pyunittest -v %post %python_install_alternative bottle.py bottle %postun %python_uninstall_alternative bottle.py bottle %files %{python_files} %license LICENSE %doc README.rst %python_alternative %{_bindir}/bottle.py %python_alternative %{_bindir}/bottle %{python_sitelib}/bottle.py* %pycache_only %{python_sitelib}/__pycache__ %{python_sitelib}/bottle-%{version}.dist-info %if 0%{?suse_version} > 1500 %files -n %{name}-doc %endif %doc bottle-docs.pdf %changelog * Sat Oct 12 2024 Benoît Monin - update to version 0.13.2: * fix: depr() should return DeprecationWarning * change: Deprecate bottle.py script install * docs: Added deprecation note for Python 2.x to release notes - add bottle script as alternative alongside bottle.py * Mon Sep 9 2024 John Paul Adrian Glaubitz - Update to version 0.13.1 * Added DeprecationWarning warning for Python 2 * fix: Bottle.__setattr__ breaks data descriptors - from version 0.13.0 * This release contains breaking changers, please read the notes below * Dropped support for Python versions that reached their end-of-life. * The documented API of the :class:`ConfigDict` class is now considered stable and ready to use. * Plugins with the old API (``api=1`` or no api attribute) will no longer work. * Parameter order of :meth:`Bottle.mount` changed in 0.10. The old order will now result in an error instead of a warning. * The :class:`ConfigDict` class was introduced in 0.11 and changed during 0.12. These changes are now final. * Attribute access and assignment was removed due to high overhead and limited usability. * Namespaced sub-instance creation was removed. ``config["a"]["b"]`` has a high overhead and little benefit over ``config["a.b"]``. * :class:`ConfigDict` instances are no longer callable. This was a shortcut for :meth:`ConfigDict.update`. * :class:`ConfigDict` constructor no longer accepts any parameters. Use the `load_*` methods instead. * Bottle 0.12 changed some aspects of the Simple Template Engine. These changes are now final and the old syntax will now longer work. * The magic ``{{rebase()}}`` call was replaced by a ``base`` variable. Example: ``{{base}}`` * In STPL Templates, the ``rebase`` and ``include`` keywords were replaced with functions in 0.12. * PEP-263 encoding strings are no longer recognized. Templates are always utf-8. * The 'geventSocketIO' server adapter was removed without notice. It did not work anyway. * Signed cookies now use a stronger HMAC algorithm by default. This will result in old cookies to appear invalid after the update. Pass an explicit ``digestmod=hashlib.md5`` to :meth:`Request.get_cookie ` and :meth:`Response.set_cookie ` to get the old behavior. * Bottle now ships with its own multipart form data parser (borrowed from `multipart `_) and no longer relies on ``cgi.FieldStorage``, which was removed in Python 3.13. This may change the way broken (non-standard) form submissions are parsed. The new parser is more strict and correct than ohe old one. * :class:`Bottle` instances are now context managers. If used in a with-statement, the default application changes to the specific instance and the shortcuts for many instance methods can be used. * Added support for ``PATCH`` requests and the :meth:`Bottle.patch` decorator. * Added `aiohttp `_ and `uvloop `_ server adapters. * Added command-line arguments for config from json or ini files. * :meth:`Bottle.mount` now recognizes instances of :class:`Bottle` and mounts them with significantly less overhead than other WSGI applications. * The :attr:`Request.json ` property now accepts ``application/json-rpc`` requests. * :func:`static_file` gained support for ``ETag`` headers. It will generate ETags and recognizes ``If-None-Match`` headers. * :func:`static_file` will now guess the mime type of ``*.gz`` and other compressed files correctly (e.g. ``application/gzip``) and NOT set the ``Content-Encoding`` header. * Jinja2 templates will produce better error messages than before. - Drop update-module-loader.patch, merged upstream * Wed Oct 18 2023 Steve Kowalik - Add patch update-module-loader.patch: * Add find_spec to the magic bottle.ext loader, Python 3.12 no longer calls find_module. - Switch to pyproject and autosetup macros. * Fri May 19 2023 Jiri Srain - refresh bottle-docs.pdf from the upstream URL * Sun Apr 23 2023 Matej Cepl - Switch documentation to be within the main package. * Fri Apr 21 2023 Dirk Müller - add sle15_python_module_pythons (jsc#PED-68) * Sun Mar 5 2023 Benoît Monin - update to version 0.12.25: bugfix release * Reduce deprectation warnings during tests * Adjusts the test_server 'fetch' method to disable proxying within test cases where it is used * fix #1194: Regular expression catastrophic backtracking in bottle.Router.rule_syntax * fix #1155: Catastrophic backtracking issue in template parser * Fix release task in Makefile * fix: Raising HTTPResponse should not bypass JsonPlugin - drop python_module macro: provided by python-rpm-macros - run fdupes to deduplicate identical files * Tue Feb 21 2023 Benoît Monin - update to version 0.12.24: bugfix release * Fix fapws3 link * fix: Route.get_config typo * fix #1111: Unicode multipart/form-data values in python3 * Wed Aug 3 2022 Benoît Monin - update to version 0.12.23: bugfix release * fix: Include keyword-only-args in getarcspec() polyfill - additional changes from version 0.12.22: * fix: Jinja2 and mako test path issues * getargspec is gone in python 3.11: so use getfullargspec on all 3.x versions instead * fix: view decorator does not forward default values if route result is None * fix: Make tests runnable with both unittest and pytest * fix: Cookie test falsely reports a failure for some python versions - drop fix_cookie_test.patch: fixed upstream - run the tests with unittest * Thu May 26 2022 Benoît Monin - update to version 0.12.21: bugfix release * Fix: Bad deprecation warning in cherrypy server adapter - update to version 0.12.20 (bsc#1200286, CVE-2022-31799): * fix: Multipart file uploads with empty filename not detected as binary * obsoletes 0002_Gracefully_handle_errors_during_early_request_binding.patch in older dists * fix auth_basic decorator (#586) * Add ServerAdapter for CherryPy >= 9 * Gracefully handle errors during early request binding * Fri Nov 13 2020 Benoît Monin - update to version 0.12.19 (bsc#1182181, CVE-2020-28473): * obsoletes 0001_Do_not_split_query_strings_on_semicolon_anymore.patch in older dists * Do not split query strings on `;` anymore. * Fix the Allow: header value in 405 "Method not allowed." response. - add fix_cookie_test.patch: imported from upstream master branch - update the documentation pdf - remove the separate LICENSE file: now packaged in release - drop removing the executable bit from egg-info files: fixed - run the tests during build * Tue Apr 14 2020 Matej Cepl - Don't use %%python3_only command, but properly use alternatives. * Wed Apr 8 2020 Tomáš Chvátal - Drop require on doc package to pull python2 package * Sun Dec 8 2019 Benoît Monin - update to version 0.12.18: * Bugfix release to improve Python 3.8+ support - add the missing LICENSE file - update the documentation pdf - remove the executable bit from egg-info files * Sun Jul 28 2019 Arun Persaud - update to version 0.12.17: * fix #1148: redirect() and non-ascii characters * Sun Mar 17 2019 Jan Engelhardt - Ensure neutrality of description and fixup some spelling/grammar issues. * Thu Feb 28 2019 Ondřej Súkup - update to 0.12.16 * DeprecationWarning: Flags not at the start of the expression * Some modules set __file__ as None * gevent-1.3.0 removes 'fast' wsgi implementation. * Wed Mar 29 2017 toddrme2178@gmail.com - update pdf doc file. * Thu Mar 23 2017 jmatejek@suse.com - update for singlespec - use automation for docs - update to 0.12.13 * bugfix release * fixed TypeError on unicode WSGI headers * fixed get_header on FileUpload * fixed crlf header injection (CVE-2016-9964) * switch to setuptools for build * allow multiline dict/list/set comprehensions in templates * allow unicode keys in ConfigDict * Sun Apr 26 2015 benoit.monin@gmx.fr - update to version 0.12.8: no upstream changelog - update bottle-docs.pdf - point the source URL of the pdf to the project homepage - create of separate subpackage for the pdf documentation * Tue May 20 2014 toddrme2178@gmail.com - Update to 0.12.7 * No upstream changelog - Update to 0.12 * New SimpleTemplate parser implementation * Support for multi-line code blocks (<%% ... %%>). * The keywords include and rebase are functions now and can accept variable template names. * The new BaseRequest.route() property returns the Route that originally matched the request. * Removed the BaseRequest.MAX_PARAMS limit. The hash collision bug in CPythons dict() implementation was fixed over a year ago. If you are still using Python 2.5 in production, consider upgrading or at least make sure that you get security fixed from your distributor. * New ConfigDict API (see Configuration (DRAFT)) * Tue Sep 17 2013 os-dev@jacraig.com - Update to 0.11.6: * Fix content-type header in mounted apps - Changes from 0.11.5: * Update HTTPResponse call when mounting apps * BUg fix: Some cookies are lost when using mount() * Thu Nov 22 2012 saschpe@suse.de - Update to version 0.11.4: + Upstream provides no changelog - Changes from version 0.11: + Native support for Python 2.x and 3.x syntax. No need to run 2to3 anymore. + Support for partial downloads (Range header) in static_file(). + The new ResourceManager interface helps locating files bundled with an application. + Added a server adapter for waitress. + New Bottle.merge() method to install all routes from one application into another. + New BaseRequest.app property to get the application object that handles a request. + Added FormsDict.decode() to get an all-unicode version (needed by WTForms). + MultiDict and subclasses are now pickle-able. + Response.status is a read-write property that can be assigned either a numeric status code or a status string with a reason phrase (200 OK). The return value is now a string to better match existing APIs (WebOb, werkzeug). To be absolutely clear, you can use the read-only properties BaseResponse.status_code and BaseResponse.status_line. + SimpleTALTemplate is now deprecating. There seems to be no demand. * Wed Aug 15 2012 highwaystar.ru@gmail.com - updated to 0.10.11 - python3 package added - spec improved (files section) * Mon Mar 12 2012 saschpe@gmx.de - update to version 0.10.9 * Fri Sep 23 2011 saschpe@suse.de - Update to version 0.9.6 - Removed file LICENSE, upstream now has LICENSE.txt * Fri Nov 19 2010 cfarrell@novell.com - Added LICENSE and bottle-docs.pdf. - Removed dead symlink README * Fri Nov 19 2010 cfarrell@novell.com - Initial build