Accepting request 793341 from devel:languages:python
OBS-URL: https://build.opensuse.org/request/show/793341 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-Werkzeug?expand=0&rev=30
This commit is contained in:
commit
10f82f7cdd
@ -1,65 +0,0 @@
|
|||||||
From 676bc5fa4b6aa9d153c9805cdbad0ff0450bade6 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Alberto Planas <aplanas@gmail.com>
|
|
||||||
Date: Wed, 3 Feb 2016 11:56:23 +0100
|
|
||||||
Subject: [PATCH] Create a thread to reap death process
|
|
||||||
|
|
||||||
ForkingWSGIServer use `SocketServer.ForkingMixIn` to implement a
|
|
||||||
multiprocess server. This class provides a workflow that collect
|
|
||||||
death process (process in Zombie status) before the
|
|
||||||
`process_request`. This means that this process itself will be
|
|
||||||
in Zombie status at the end of the request, that will be eventually
|
|
||||||
collected during the next `process_request`.
|
|
||||||
|
|
||||||
To minimize transient Zombie process, `ForkingWSGIServer` is
|
|
||||||
creating a daemon thread (via `threading.Timer`) to call the
|
|
||||||
collector every (by default) 5 seconds.
|
|
||||||
|
|
||||||
Fixes #810
|
|
||||||
---
|
|
||||||
werkzeug/serving.py | 21 ++++++++++++++++++++-
|
|
||||||
1 file changed, 20 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
Index: Werkzeug-0.16.0/src/werkzeug/serving.py
|
|
||||||
===================================================================
|
|
||||||
--- Werkzeug-0.16.0.orig/src/werkzeug/serving.py
|
|
||||||
+++ Werkzeug-0.16.0/src/werkzeug/serving.py
|
|
||||||
@@ -40,6 +40,7 @@ import os
|
|
||||||
import signal
|
|
||||||
import socket
|
|
||||||
import sys
|
|
||||||
+import threading
|
|
||||||
|
|
||||||
from ._compat import PY2
|
|
||||||
from ._compat import reraise
|
|
||||||
@@ -776,6 +777,7 @@ class ForkingWSGIServer(ForkingMixIn, Ba
|
|
||||||
passthrough_errors=False,
|
|
||||||
ssl_context=None,
|
|
||||||
fd=None,
|
|
||||||
+ frequency=5,
|
|
||||||
):
|
|
||||||
if not can_fork:
|
|
||||||
raise ValueError("Your platform does not support forking.")
|
|
||||||
@@ -784,6 +786,23 @@ class ForkingWSGIServer(ForkingMixIn, Ba
|
|
||||||
)
|
|
||||||
self.max_children = processes
|
|
||||||
|
|
||||||
+ if frequency:
|
|
||||||
+ self.frequency = frequency
|
|
||||||
+ self.setup_reap_children()
|
|
||||||
+
|
|
||||||
+ def setup_reap_children(self):
|
|
||||||
+ """Create a thread to collect death children."""
|
|
||||||
+ t = threading.Timer(self.frequency, self.reap_children)
|
|
||||||
+ # Set daemon mode to provide a clean termination of the thread
|
|
||||||
+ # when the system ends
|
|
||||||
+ t.daemon = True
|
|
||||||
+ t.start()
|
|
||||||
+
|
|
||||||
+ def reap_children(self):
|
|
||||||
+ """Reap or collect death children."""
|
|
||||||
+ self.collect_children()
|
|
||||||
+ self.setup_reap_children()
|
|
||||||
+
|
|
||||||
|
|
||||||
def make_server(
|
|
||||||
host=None,
|
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:7280924747b5733b246fe23972186c6b348f9ae29724135a6dfc1e53cea433e7
|
|
||||||
size 925717
|
|
3
Werkzeug-1.0.1.tar.gz
Normal file
3
Werkzeug-1.0.1.tar.gz
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:6c80b1e5ad3665290ea39320b91e1be1e0d5f60652b964a3070216de83d2e47c
|
||||||
|
size 904455
|
@ -1,3 +1,69 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Sat Apr 4 17:47:06 UTC 2020 - Arun Persaud <arun@gmx.de>
|
||||||
|
|
||||||
|
- specfile:
|
||||||
|
* be more specific in %files section
|
||||||
|
* add sortedcontainers for tests
|
||||||
|
|
||||||
|
- update to version 1.0.1:
|
||||||
|
* Make the argument to RequestRedirect.get_response
|
||||||
|
optional. :issue:`1718`
|
||||||
|
* Only allow a single access control allow origin value. :pr:`1723`
|
||||||
|
* Fix crash when trying to parse a non-existent Content Security
|
||||||
|
Policy header. :pr:`1731`
|
||||||
|
* http_date zero fills years < 1000 to always output four
|
||||||
|
digits. :issue:`1739`
|
||||||
|
* Fix missing local variables in interactive debugger
|
||||||
|
console. :issue:`1746`
|
||||||
|
* Fix passing file-like objects like io.BytesIO to
|
||||||
|
FileStorage.save. :issue:`1733`
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Mar 12 06:49:08 UTC 2020 - Steve Kowalik <steven.kowalik@suse.com>
|
||||||
|
|
||||||
|
- Update to 1.0.0:
|
||||||
|
* Drop support for Python 3.4. (#1478)
|
||||||
|
* Remove code that issued deprecation warnings in version 0.15. (#1477)
|
||||||
|
* Remove most top-level attributes provided by the werkzeug module in favor of direct imports. For example, instead of import werkzeug; werkzeug.url_quote, do from werkzeug.urls import url_quote. Install version 0.16 first to see deprecation warnings while upgrading. #2, #1640
|
||||||
|
* Added utils.invalidate_cached_property() to invalidate cached properties. (#1474)
|
||||||
|
* Directive keys for the Set-Cookie response header are not ignored when parsing the Cookie request header. This allows cookies with names such as “expires” and “version”. (#1495)
|
||||||
|
* Request cookies are parsed into a MultiDict to capture all values for cookies with the same key. cookies[key] returns the first value rather than the last. Use cookies.getlist(key) to get all values. parse_cookie also defaults to a MultiDict. #1562, #1458
|
||||||
|
* Add charset=utf-8 to an HTTP exception response’s CONTENT_TYPE header. (#1526)
|
||||||
|
* The interactive debugger handles outer variables in nested scopes such as lambdas and comprehensions. #913, #1037, #1532
|
||||||
|
* The user agent for Opera 60 on Mac is correctly reported as “opera” instead of “chrome”. #1556
|
||||||
|
* The platform for Crosswalk on Android is correctly reported as “android” instead of “chromeos”. (#1572)
|
||||||
|
* Issue a warning when the current server name does not match the configured server name. #760
|
||||||
|
* A configured server name with the default port for a scheme will match the current server name without the port if the current scheme matches. #1584
|
||||||
|
* InternalServerError has a original_exception attribute that frameworks can use to track the original cause of the error. #1590
|
||||||
|
* Headers are tested for equality independent of the header key case, such that X-Foo is the same as x-foo. #1605
|
||||||
|
* http.dump_cookie() accepts 'None' as a value for samesite. #1549
|
||||||
|
* set_cookie() accepts a samesite argument. #1705
|
||||||
|
* Support the Content Security Policy header through the Response.content_security_policy data structure. #1617
|
||||||
|
* LanguageAccept will fall back to matching “en” for “en-US” or “en-US” for “en” to better support clients or translations that only match at the primary language tag. #450, #1507
|
||||||
|
* MIMEAccept uses MIME parameters for specificity when matching. #458, #1574
|
||||||
|
* If the development server is started with an SSLContext configured to verify client certificates, the certificate in PEM format will be available as environ["SSL_CLIENT_CERT"]. #1469
|
||||||
|
* is_resource_modified will run for methods other than GET and HEAD, rather than always returning False. #409
|
||||||
|
* SharedDataMiddleware returns 404 rather than 500 when trying to access a directory instead of a file with the package loader. The dependency on setuptools and pkg_resources is removed. #1599
|
||||||
|
* Add a response.cache_control.immutable flag. Keep in mind that browser support for this Cache-Control header option is still experimental and may not be implemented. #1185
|
||||||
|
* Optional request log highlighting with the development server is handled by Click instead of termcolor. #1235
|
||||||
|
* Optional ad-hoc TLS support for the development server is handled by cryptography instead of pyOpenSSL. #1555
|
||||||
|
* FileStorage.save() supports pathlib and PEP 519 PathLike objects. #1653
|
||||||
|
* The debugger security pin is unique in containers managed by Podman. #1661
|
||||||
|
* Building a URL when host_matching is enabled takes into account the current host when there are duplicate endpoints with different hosts. #488
|
||||||
|
* The 429 TooManyRequests and 503 ServiceUnavailable HTTP exceptions takes a retry_after parameter to set the Retry-After header. #1657
|
||||||
|
* Map and Rule have a merge_slashes option to collapse multiple slashes into one, similar to how many HTTP servers behave. This is enabled by default. #1286, #1694
|
||||||
|
* Add HTTP 103, 208, 306, 425, 506, 508, and 511 to the list of status codes. #1678
|
||||||
|
* Add update, setlist, and setlistdefault methods to the Headers data structure. extend method can take MultiDict and kwargs. #1687, #1697
|
||||||
|
* The development server accepts paths that start with two slashes, rather than stripping off the first path segment. #491
|
||||||
|
* Add access control (Cross Origin Request Sharing, CORS) header properties to the Request and Response wrappers. #1699
|
||||||
|
* Accept values are no longer ordered alphabetically for equal quality tags. Instead the initial order is preserved. #1686
|
||||||
|
* Added Map.lock_class attribute for alternative implementations. #1702
|
||||||
|
* Support matching and building WebSocket rules in the routing system, for use by async frameworks. #1709
|
||||||
|
* Range requests that span an entire file respond with 206 instead of 200, to be more compliant with RFC 7233. This may help serving media to older browsers. #410, #1704
|
||||||
|
* The SharedDataMiddleware default fallback_mimetype is application/octet-stream. If a filename looks like a text mimetype, the utf-8 charset is added to it. This matches the behavior of BaseResponse and Flask’s send_file(). #1689
|
||||||
|
- Remove patch 0001_create_a_thread_to_reap_death_process.patch, not required
|
||||||
|
- Add pytest-timeout to BuildRequires
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Tue Sep 24 10:15:31 UTC 2019 - Tomáš Chvátal <tchvatal@suse.com>
|
Tue Sep 24 10:15:31 UTC 2019 - Tomáš Chvátal <tchvatal@suse.com>
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#
|
#
|
||||||
# spec file for package python-Werkzeug
|
# spec file for package python-Werkzeug
|
||||||
#
|
#
|
||||||
# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
|
# Copyright (c) 2020 SUSE LLC
|
||||||
#
|
#
|
||||||
# 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
|
||||||
@ -19,19 +19,19 @@
|
|||||||
%define oldpython python
|
%define oldpython python
|
||||||
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
|
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
|
||||||
Name: python-Werkzeug
|
Name: python-Werkzeug
|
||||||
Version: 0.16.0
|
Version: 1.0.1
|
||||||
Release: 0
|
Release: 0
|
||||||
Summary: The Swiss Army knife of Python web development
|
Summary: The Swiss Army knife of Python web development
|
||||||
License: BSD-3-Clause
|
License: BSD-3-Clause
|
||||||
Group: Development/Languages/Python
|
Group: Development/Languages/Python
|
||||||
URL: http://werkzeug.pocoo.org/
|
URL: http://werkzeug.pocoo.org/
|
||||||
Source: https://files.pythonhosted.org/packages/source/W/Werkzeug/Werkzeug-%{version}.tar.gz
|
Source: https://files.pythonhosted.org/packages/source/W/Werkzeug/Werkzeug-%{version}.tar.gz
|
||||||
# PATCH-FIX-UPSTREAM 0001_create_a_thread_to_reap_death_process.patch bsc#954591
|
|
||||||
Patch0: 0001_create_a_thread_to_reap_death_process.patch
|
|
||||||
BuildRequires: %{python_module hypothesis}
|
BuildRequires: %{python_module hypothesis}
|
||||||
|
BuildRequires: %{python_module pytest-timeout}
|
||||||
BuildRequires: %{python_module pytest}
|
BuildRequires: %{python_module pytest}
|
||||||
BuildRequires: %{python_module requests}
|
BuildRequires: %{python_module requests}
|
||||||
BuildRequires: %{python_module setuptools}
|
BuildRequires: %{python_module setuptools}
|
||||||
|
BuildRequires: %{python_module sortedcontainers}
|
||||||
BuildRequires: fdupes
|
BuildRequires: fdupes
|
||||||
BuildRequires: python-rpm-macros
|
BuildRequires: python-rpm-macros
|
||||||
Recommends: python-termcolor
|
Recommends: python-termcolor
|
||||||
@ -66,7 +66,6 @@ bulletin boards, etc.).
|
|||||||
%prep
|
%prep
|
||||||
%setup -q -n Werkzeug-%{version}
|
%setup -q -n Werkzeug-%{version}
|
||||||
sed -i "1d" examples/manage-{i18nurls,simplewiki,shorty,couchy,cupoftee,webpylike,plnt,coolmagic}.py # Fix non-executable scripts
|
sed -i "1d" examples/manage-{i18nurls,simplewiki,shorty,couchy,cupoftee,webpylike,plnt,coolmagic}.py # Fix non-executable scripts
|
||||||
%patch0 -p1
|
|
||||||
|
|
||||||
%build
|
%build
|
||||||
%python_build
|
%python_build
|
||||||
@ -83,6 +82,7 @@ export PYTHONDONTWRITEBYTECODE=1
|
|||||||
%files %{python_files}
|
%files %{python_files}
|
||||||
%license LICENSE.rst
|
%license LICENSE.rst
|
||||||
%doc CHANGES.rst README.rst
|
%doc CHANGES.rst README.rst
|
||||||
%{python_sitelib}/*
|
%{python_sitelib}/werkzeug
|
||||||
|
%{python_sitelib}/Werkzeug-%{version}-py*.egg-info
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
Loading…
Reference in New Issue
Block a user