summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGraham Dumpleton <Graham.Dumpleton@gmail.com>2020-02-17 10:02:48 +1100
committerGraham Dumpleton <Graham.Dumpleton@gmail.com>2020-02-17 10:02:48 +1100
commit61359e67448bdfc5fefb1692fd2a97f76394b20c (patch)
tree81c8a8facf3a06ebc5af08f6b6a6368b03ec2b85
parent2b51ee931265a77a2afd148dde3264c2b2600e67 (diff)
parent3ffdcecb7075bb254a245130aa55b2a1dae0a55b (diff)
downloadmod_wsgi-61359e67448bdfc5fefb1692fd2a97f76394b20c.tar.gz
Merge branch 'release/4.7.1'4.7.1
-rw-r--r--MANIFEST.in1
-rw-r--r--README-standalone.rst30
-rw-r--r--configure.ac2
-rw-r--r--docs/conf.py2
-rw-r--r--docs/configuration-directives/WSGIChunkedRequest.rst4
-rw-r--r--docs/release-notes.rst1
-rw-r--r--docs/release-notes/version-4.7.1.rst14
-rwxr-xr-xpackage.sh2
-rw-r--r--setup.py9
-rw-r--r--src/server/mod_wsgi.c2
-rw-r--r--src/server/wsgi_apache.c2
-rw-r--r--src/server/wsgi_apache.h2
-rw-r--r--src/server/wsgi_buckets.c2
-rw-r--r--src/server/wsgi_buckets.h2
-rw-r--r--src/server/wsgi_convert.c2
-rw-r--r--src/server/wsgi_convert.h2
-rw-r--r--src/server/wsgi_daemon.c2
-rw-r--r--src/server/wsgi_daemon.h2
-rw-r--r--src/server/wsgi_interp.c2
-rw-r--r--src/server/wsgi_interp.h2
-rw-r--r--src/server/wsgi_logger.c2
-rw-r--r--src/server/wsgi_logger.h2
-rw-r--r--src/server/wsgi_memory.h2
-rw-r--r--src/server/wsgi_metrics.c2
-rw-r--r--src/server/wsgi_metrics.h2
-rw-r--r--src/server/wsgi_python.h2
-rw-r--r--src/server/wsgi_restrict.c2
-rw-r--r--src/server/wsgi_restrict.h2
-rw-r--r--src/server/wsgi_server.c2
-rw-r--r--src/server/wsgi_server.h2
-rw-r--r--src/server/wsgi_stream.c2
-rw-r--r--src/server/wsgi_stream.h2
-rw-r--r--src/server/wsgi_thread.c2
-rw-r--r--src/server/wsgi_thread.h2
-rw-r--r--src/server/wsgi_validate.c2
-rw-r--r--src/server/wsgi_validate.h2
-rwxr-xr-xsrc/server/wsgi_version.h6
37 files changed, 89 insertions, 36 deletions
diff --git a/MANIFEST.in b/MANIFEST.in
index 2952dd0..f28e72a 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -3,6 +3,7 @@ include configure
include LICENSE
include Makefile.in
include README.rst
+include README-standalone.rst
include CREDITS.rst
include src/server/*.h
include src/server/*.c
diff --git a/README-standalone.rst b/README-standalone.rst
new file mode 100644
index 0000000..7ce3bea
--- /dev/null
+++ b/README-standalone.rst
@@ -0,0 +1,30 @@
+Overview
+--------
+
+The mod_wsgi package provides an Apache module that implements a WSGI
+compliant interface for hosting Python based web applications on top of the
+Apache web server.
+
+The primary package for mod_wsgi is available on the Python package index
+(PyPi) as ``mod_wsgi``. That package assumes that you have a suitable
+version of Apache pre-installed on your target system, and if you don't,
+installation of the package will fail.
+
+If you are on a UNIX like system (Linux, macOS) and need a version of
+Apache to be installed for you, you can use the ``mod_wsgi-standalone``
+package on PyPi instead. When installing the ``mod_wsgi-standalone``
+package it will first trigger the installation of the ``mod_wsgi-httpd``
+package, which will result in a version of Apache being installed as
+part of your Python installation. Next the ``mod_wsgi`` package will be
+installed, with it using the version of Apache installed by the
+``mod_wsgi-httpd`` package rather than any system package for Apache.
+
+Note that this method of installation is only suitable for where you want
+to use ``mod_wsgi-expres``. It cannot be used to build mod_wsgi for use
+with your system Apache installation. This installation method will also
+not work on Windows.
+
+When installing mod_wsgi using this method, except that you will install
+the ``mod_wsgi-standalone`` package instead of the ``mod_wsgi`` package,
+you should follow installation and usage instructions outlined on the
+PyPi page for the ``mod_wsgi`` package.
diff --git a/configure.ac b/configure.ac
index 1a58137..63d1bbc 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,6 +1,6 @@
dnl vim: set sw=4 expandtab :
dnl
-dnl Copyright 2007-2018 GRAHAM DUMPLETON
+dnl Copyright 2007-2020 GRAHAM DUMPLETON
dnl
dnl Licensed under the Apache License, Version 2.0 (the "License");
dnl you may not use this file except in compliance with the License.
diff --git a/docs/conf.py b/docs/conf.py
index 3374409..cba9938 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -41,7 +41,7 @@ master_doc = 'index'
# General information about the project.
project = u'mod_wsgi'
-copyright = u'2007-2019, Graham Dumpleton'
+copyright = u'2007-2020, Graham Dumpleton'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
diff --git a/docs/configuration-directives/WSGIChunkedRequest.rst b/docs/configuration-directives/WSGIChunkedRequest.rst
index 059103a..4d0ea6b 100644
--- a/docs/configuration-directives/WSGIChunkedRequest.rst
+++ b/docs/configuration-directives/WSGIChunkedRequest.rst
@@ -29,7 +29,7 @@ block size passed as argument and do this until ``read()`` returns an empty
string.
Because both calling methods are not allowed under WSGI specification, in
-using these your code will not technically be portable to other WSGI hosting
+using these, your code will not technically be portable to other WSGI hosting
mechanisms, although if those other WSGI servers support it, you will be
okay.
@@ -43,6 +43,6 @@ request WSGI ``environ`` dictionary. When this is done the web frameworks
will always read all available input and ignore ``CONTENT_LENGTH``.
Because mod_wsgi guarantees that an empty string is returned when all input
-is exhausted, it will will always set this flag.
+is exhausted, it will always set this flag.
It is known that Flask/Werkzeug supports the ``wsgi.input_terminated`` flag.
diff --git a/docs/release-notes.rst b/docs/release-notes.rst
index 964571b..50d0b98 100644
--- a/docs/release-notes.rst
+++ b/docs/release-notes.rst
@@ -6,6 +6,7 @@ Release Notes
:maxdepth: 2
release-notes/version-4.7.0
+ release-notes/version-4.7.1
release-notes/version-4.6.8
release-notes/version-4.6.7
diff --git a/docs/release-notes/version-4.7.1.rst b/docs/release-notes/version-4.7.1.rst
new file mode 100644
index 0000000..9acc339
--- /dev/null
+++ b/docs/release-notes/version-4.7.1.rst
@@ -0,0 +1,14 @@
+=============
+Version 4.7.1
+=============
+
+Version 4.7.1 of mod_wsgi can be obtained from:
+
+ https://codeload.github.com/GrahamDumpleton/mod_wsgi/tar.gz/4.7.1
+
+Bugs Fixed
+----------
+
+* Fix up installation on Windows into a virtual environment when
+ using latest ``virtualenv`` version, or recent Python versions
+ with the bundled ``venv`` module for creating virtual environments.
diff --git a/package.sh b/package.sh
index a9d9768..ee5c58f 100755
--- a/package.sh
+++ b/package.sh
@@ -2,7 +2,7 @@
set -eo pipefail
-rm -rf dist
+rm -rf build dist
rm -f pyproject.toml
diff --git a/setup.py b/setup.py
index 548bff8..bf272ba 100644
--- a/setup.py
+++ b/setup.py
@@ -424,6 +424,8 @@ PYTHON_VERSION = get_python_config('VERSION')
if os.name == 'nt':
if hasattr(sys, 'real_prefix'):
PYTHON_LIBDIR = sys.real_prefix
+ elif hasattr(sys, 'base_prefix'):
+ PYTHON_LIBDIR = sys.base_prefix
else:
PYTHON_LIBDIR = get_python_config('BINDIR')
@@ -542,11 +544,16 @@ if os.name != 'nt':
# Now finally run distutils.
+package_name = 'mod_wsgi'
long_description = open('README.rst').read()
standalone = os.path.exists('pyproject.toml')
-setup(name = standalone and 'mod_wsgi-standalone' or 'mod_wsgi',
+if standalone:
+ package_name = 'mod_wsgi-standalone'
+ long_description = open('README-standalone.rst').read()
+
+setup(name = package_name,
version = _version(),
description = 'Installer for Apache/mod_wsgi.',
long_description = long_description,
diff --git a/src/server/mod_wsgi.c b/src/server/mod_wsgi.c
index a2b6153..d3c6302 100644
--- a/src/server/mod_wsgi.c
+++ b/src/server/mod_wsgi.c
@@ -1,7 +1,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2019 GRAHAM DUMPLETON
+ * Copyright 2007-2020 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/src/server/wsgi_apache.c b/src/server/wsgi_apache.c
index 40e706b..8cc4e83 100644
--- a/src/server/wsgi_apache.c
+++ b/src/server/wsgi_apache.c
@@ -1,7 +1,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2019 GRAHAM DUMPLETON
+ * Copyright 2007-2020 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/src/server/wsgi_apache.h b/src/server/wsgi_apache.h
index 32fe52f..a223522 100644
--- a/src/server/wsgi_apache.h
+++ b/src/server/wsgi_apache.h
@@ -4,7 +4,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2019 GRAHAM DUMPLETON
+ * Copyright 2007-2020 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/src/server/wsgi_buckets.c b/src/server/wsgi_buckets.c
index 7ddb902..e3a6dd9 100644
--- a/src/server/wsgi_buckets.c
+++ b/src/server/wsgi_buckets.c
@@ -1,7 +1,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2019 GRAHAM DUMPLETON
+ * Copyright 2007-2020 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/src/server/wsgi_buckets.h b/src/server/wsgi_buckets.h
index 4317e83..e56e727 100644
--- a/src/server/wsgi_buckets.h
+++ b/src/server/wsgi_buckets.h
@@ -4,7 +4,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2019 GRAHAM DUMPLETON
+ * Copyright 2007-2020 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/src/server/wsgi_convert.c b/src/server/wsgi_convert.c
index 48b84b7..0accdbf 100644
--- a/src/server/wsgi_convert.c
+++ b/src/server/wsgi_convert.c
@@ -1,7 +1,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2019 GRAHAM DUMPLETON
+ * Copyright 2007-2020 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/src/server/wsgi_convert.h b/src/server/wsgi_convert.h
index fcbb894..e6cdbde 100644
--- a/src/server/wsgi_convert.h
+++ b/src/server/wsgi_convert.h
@@ -4,7 +4,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2019 GRAHAM DUMPLETON
+ * Copyright 2007-2020 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/src/server/wsgi_daemon.c b/src/server/wsgi_daemon.c
index 3d08871..60b4c4d 100644
--- a/src/server/wsgi_daemon.c
+++ b/src/server/wsgi_daemon.c
@@ -1,7 +1,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2019 GRAHAM DUMPLETON
+ * Copyright 2007-2020 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/src/server/wsgi_daemon.h b/src/server/wsgi_daemon.h
index 77e344a..ec112fa 100644
--- a/src/server/wsgi_daemon.h
+++ b/src/server/wsgi_daemon.h
@@ -4,7 +4,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2019 GRAHAM DUMPLETON
+ * Copyright 2007-2020 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/src/server/wsgi_interp.c b/src/server/wsgi_interp.c
index 3fbca04..48680f4 100644
--- a/src/server/wsgi_interp.c
+++ b/src/server/wsgi_interp.c
@@ -1,7 +1,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2019 GRAHAM DUMPLETON
+ * Copyright 2007-2020 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/src/server/wsgi_interp.h b/src/server/wsgi_interp.h
index 6e6ffff..18df8f0 100644
--- a/src/server/wsgi_interp.h
+++ b/src/server/wsgi_interp.h
@@ -4,7 +4,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2019 GRAHAM DUMPLETON
+ * Copyright 2007-2020 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/src/server/wsgi_logger.c b/src/server/wsgi_logger.c
index d67f805..71c7d69 100644
--- a/src/server/wsgi_logger.c
+++ b/src/server/wsgi_logger.c
@@ -1,7 +1,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2019 GRAHAM DUMPLETON
+ * Copyright 2007-2020 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/src/server/wsgi_logger.h b/src/server/wsgi_logger.h
index ac98412..a973430 100644
--- a/src/server/wsgi_logger.h
+++ b/src/server/wsgi_logger.h
@@ -4,7 +4,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2019 GRAHAM DUMPLETON
+ * Copyright 2007-2020 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/src/server/wsgi_memory.h b/src/server/wsgi_memory.h
index 6be3b5d..9203c4d 100644
--- a/src/server/wsgi_memory.h
+++ b/src/server/wsgi_memory.h
@@ -4,7 +4,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2019 GRAHAM DUMPLETON
+ * Copyright 2007-2020 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/src/server/wsgi_metrics.c b/src/server/wsgi_metrics.c
index d828181..b147d54 100644
--- a/src/server/wsgi_metrics.c
+++ b/src/server/wsgi_metrics.c
@@ -1,7 +1,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2019 GRAHAM DUMPLETON
+ * Copyright 2007-2020 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/src/server/wsgi_metrics.h b/src/server/wsgi_metrics.h
index fd63c73..9d69806 100644
--- a/src/server/wsgi_metrics.h
+++ b/src/server/wsgi_metrics.h
@@ -4,7 +4,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2019 GRAHAM DUMPLETON
+ * Copyright 2007-2020 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/src/server/wsgi_python.h b/src/server/wsgi_python.h
index fd30ecc..0464fe6 100644
--- a/src/server/wsgi_python.h
+++ b/src/server/wsgi_python.h
@@ -4,7 +4,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2019 GRAHAM DUMPLETON
+ * Copyright 2007-2020 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/src/server/wsgi_restrict.c b/src/server/wsgi_restrict.c
index 8ce32f8..3825a47 100644
--- a/src/server/wsgi_restrict.c
+++ b/src/server/wsgi_restrict.c
@@ -1,7 +1,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2019 GRAHAM DUMPLETON
+ * Copyright 2007-2020 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/src/server/wsgi_restrict.h b/src/server/wsgi_restrict.h
index 8b83b51..cc41c4c 100644
--- a/src/server/wsgi_restrict.h
+++ b/src/server/wsgi_restrict.h
@@ -4,7 +4,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2019 GRAHAM DUMPLETON
+ * Copyright 2007-2020 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/src/server/wsgi_server.c b/src/server/wsgi_server.c
index cfbd197..b3eca28 100644
--- a/src/server/wsgi_server.c
+++ b/src/server/wsgi_server.c
@@ -1,7 +1,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2019 GRAHAM DUMPLETON
+ * Copyright 2007-2020 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/src/server/wsgi_server.h b/src/server/wsgi_server.h
index 3f24ac3..07ded14 100644
--- a/src/server/wsgi_server.h
+++ b/src/server/wsgi_server.h
@@ -4,7 +4,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2019 GRAHAM DUMPLETON
+ * Copyright 2007-2020 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/src/server/wsgi_stream.c b/src/server/wsgi_stream.c
index 76fe7ec..70b2545 100644
--- a/src/server/wsgi_stream.c
+++ b/src/server/wsgi_stream.c
@@ -1,7 +1,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2019 GRAHAM DUMPLETON
+ * Copyright 2007-2020 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/src/server/wsgi_stream.h b/src/server/wsgi_stream.h
index 7de278d..1edb6a6 100644
--- a/src/server/wsgi_stream.h
+++ b/src/server/wsgi_stream.h
@@ -4,7 +4,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2019 GRAHAM DUMPLETON
+ * Copyright 2007-2020 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/src/server/wsgi_thread.c b/src/server/wsgi_thread.c
index 0c266f2..ff0264d 100644
--- a/src/server/wsgi_thread.c
+++ b/src/server/wsgi_thread.c
@@ -1,7 +1,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2019 GRAHAM DUMPLETON
+ * Copyright 2007-2020 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/src/server/wsgi_thread.h b/src/server/wsgi_thread.h
index eb30368..284f1b5 100644
--- a/src/server/wsgi_thread.h
+++ b/src/server/wsgi_thread.h
@@ -4,7 +4,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2019 GRAHAM DUMPLETON
+ * Copyright 2007-2020 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/src/server/wsgi_validate.c b/src/server/wsgi_validate.c
index aaf6c7a..3753182 100644
--- a/src/server/wsgi_validate.c
+++ b/src/server/wsgi_validate.c
@@ -1,7 +1,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2019 GRAHAM DUMPLETON
+ * Copyright 2007-2020 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/src/server/wsgi_validate.h b/src/server/wsgi_validate.h
index 9a03cec..fe06900 100644
--- a/src/server/wsgi_validate.h
+++ b/src/server/wsgi_validate.h
@@ -4,7 +4,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2019 GRAHAM DUMPLETON
+ * Copyright 2007-2020 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/src/server/wsgi_version.h b/src/server/wsgi_version.h
index 3a25587..998ac2f 100755
--- a/src/server/wsgi_version.h
+++ b/src/server/wsgi_version.h
@@ -4,7 +4,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2019 GRAHAM DUMPLETON
+ * Copyright 2007-2020 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -25,8 +25,8 @@
#define MOD_WSGI_MAJORVERSION_NUMBER 4
#define MOD_WSGI_MINORVERSION_NUMBER 7
-#define MOD_WSGI_MICROVERSION_NUMBER 0
-#define MOD_WSGI_VERSION_STRING "4.7.0"
+#define MOD_WSGI_MICROVERSION_NUMBER 1
+#define MOD_WSGI_VERSION_STRING "4.7.1"
/* ------------------------------------------------------------------------- */