From 44deb1e4c8107a271b6873e505d8508631cb2ab2004b200ca6b51a287770befb Mon Sep 17 00:00:00 2001 From: Dirk Mueller Date: Mon, 9 Sep 2024 08:31:17 +0000 Subject: [PATCH] - 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. OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-bottle?expand=0&rev=55 --- .gitattributes | 23 +++ .gitignore | 1 + bottle-0.12.25.tar.gz | 3 + bottle-0.13.1.tar.gz | 3 + bottle-docs.pdf | 3 + python-bottle.changes | 292 +++++++++++++++++++++++++++++++++++++ python-bottle.spec | 94 ++++++++++++ update-module-loader.patch | 32 ++++ 8 files changed, 451 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 bottle-0.12.25.tar.gz create mode 100644 bottle-0.13.1.tar.gz create mode 100644 bottle-docs.pdf create mode 100644 python-bottle.changes create mode 100644 python-bottle.spec create mode 100644 update-module-loader.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/bottle-0.12.25.tar.gz b/bottle-0.12.25.tar.gz new file mode 100644 index 0000000..00419ea --- /dev/null +++ b/bottle-0.12.25.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e1a9c94970ae6d710b3fb4526294dfeb86f2cb4a81eff3a4b98dc40fb0e5e021 +size 74231 diff --git a/bottle-0.13.1.tar.gz b/bottle-0.13.1.tar.gz new file mode 100644 index 0000000..67fa784 --- /dev/null +++ b/bottle-0.13.1.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a48852dc7a051353d3e4de3dd5590cd25de370bcfd94a72237561e314ceb0c88 +size 836422 diff --git a/bottle-docs.pdf b/bottle-docs.pdf new file mode 100644 index 0000000..2026a8f --- /dev/null +++ b/bottle-docs.pdf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:82b40dad03abac5e2c29b83a3f29e1159ea99cee3f275943691927255c23a332 +size 478211 diff --git a/python-bottle.changes b/python-bottle.changes new file mode 100644 index 0000000..f8767c6 --- /dev/null +++ b/python-bottle.changes @@ -0,0 +1,292 @@ +------------------------------------------------------------------- +Mon Sep 9 06:21:36 UTC 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 05:46:24 UTC 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 09:25:55 UTC 2023 - Jiri Srain + +- refresh bottle-docs.pdf from the upstream URL + +------------------------------------------------------------------- +Sun Apr 23 23:06:11 UTC 2023 - Matej Cepl + +- Switch documentation to be within the main package. + +------------------------------------------------------------------- +Fri Apr 21 12:22:51 UTC 2023 - Dirk Müller + +- add sle15_python_module_pythons (jsc#PED-68) + +------------------------------------------------------------------- +Sun Mar 5 17:56:40 UTC 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 18:22:20 UTC 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 20:24:55 UTC 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 20:41:56 UTC 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 17:49:59 UTC 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 11:52:22 UTC 2020 - Matej Cepl + +- Don't use %python3_only command, but properly use alternatives. + +------------------------------------------------------------------- +Wed Apr 8 12:04:22 UTC 2020 - Tomáš Chvátal + +- Drop require on doc package to pull python2 package + +------------------------------------------------------------------- +Sun Dec 8 16:56:51 UTC 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 16:13:23 UTC 2019 - Arun Persaud + +- update to version 0.12.17: + * fix #1148: redirect() and non-ascii characters + +------------------------------------------------------------------- +Sun Mar 17 14:57:13 UTC 2019 - Jan Engelhardt + +- Ensure neutrality of description and fixup some + spelling/grammar issues. + +------------------------------------------------------------------- +Thu Feb 28 15:20:17 UTC 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 15:24:50 UTC 2017 - toddrme2178@gmail.com + +- update pdf doc file. + +------------------------------------------------------------------- +Thu Mar 23 18:09:54 UTC 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 18:21:13 UTC 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 12:20:37 UTC 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 19:50:09 UTC 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 13:35:28 UTC 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 03:24:14 UTC 2012 - highwaystar.ru@gmail.com + +- updated to 0.10.11 +- python3 package added +- spec improved (files section) + +------------------------------------------------------------------- +Mon Mar 12 20:46:22 UTC 2012 - saschpe@gmx.de + +- update to version 0.10.9 + +------------------------------------------------------------------- +Fri Sep 23 13:53:20 UTC 2011 - saschpe@suse.de + +- Update to version 0.9.6 +- Removed file LICENSE, upstream now has LICENSE.txt + +------------------------------------------------------------------- +Fri Nov 19 10:38:29 UTC 2010 - cfarrell@novell.com + +- Added LICENSE and bottle-docs.pdf. +- Removed dead symlink README + +------------------------------------------------------------------- +Fri Nov 19 09:21:46 UTC 2010 - cfarrell@novell.com + +- Initial build + diff --git a/python-bottle.spec b/python-bottle.spec new file mode 100644 index 0000000..5c3f4f2 --- /dev/null +++ b/python-bottle.spec @@ -0,0 +1,94 @@ +# +# 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.1 +Release: 0 +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 + +%check +%pyunittest -v + +%post +%python_install_alternative bottle.py + +%postun +%python_uninstall_alternative bottle.py + +%files %{python_files} +%license LICENSE +%doc README.rst +%python_alternative %{_bindir}/bottle.py +%{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 diff --git a/update-module-loader.patch b/update-module-loader.patch new file mode 100644 index 0000000..1177598 --- /dev/null +++ b/update-module-loader.patch @@ -0,0 +1,32 @@ +From ca6762c559c5e71e0dff71dc97eb4c6b3ed9bbcd Mon Sep 17 00:00:00 2001 +From: Marcel Hellkamp +Date: Sun, 12 Jun 2022 15:15:35 +0200 +Subject: [PATCH] Fix #1378: Module loader should move from find_mdoule to + find_spec. + +--- + bottle.py | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +Index: bottle-0.12.25/bottle.py +=================================================================== +--- bottle-0.12.25.orig/bottle.py ++++ bottle-0.12.25/bottle.py +@@ -1803,10 +1803,15 @@ class _ImportRedirect(object): + '__all__': [], '__loader__': self}) + sys.meta_path.append(self) + ++ def find_spec(self, fullname, path, target=None): ++ if '.' not in fullname: return ++ if fullname.rsplit('.', 1)[0] != self.name: return ++ from importlib.util import spec_from_loader ++ return spec_from_loader(fullname, self) ++ + def find_module(self, fullname, path=None): + if '.' not in fullname: return +- packname = fullname.rsplit('.', 1)[0] +- if packname != self.name: return ++ if fullname.rsplit('.', 1)[0] != self.name: return + return self + + def load_module(self, fullname):