mod-wsgi 5.0.2__tar.gz → 6.0.0.dev3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. mod_wsgi-6.0.0.dev3/MANIFEST.in +13 -0
  2. mod_wsgi-6.0.0.dev3/PKG-INFO +92 -0
  3. mod_wsgi-6.0.0.dev3/README-express.rst +46 -0
  4. {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/README-standalone.rst +12 -10
  5. mod_wsgi-6.0.0.dev3/README.rst +135 -0
  6. {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/configure +1678 -933
  7. {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/configure.ac +14 -26
  8. mod_wsgi-6.0.0.dev3/mod_wsgi.egg-info/PKG-INFO +92 -0
  9. {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/mod_wsgi.egg-info/SOURCES.txt +43 -8
  10. mod_wsgi-6.0.0.dev3/mod_wsgi.egg-info/entry_points.txt +2 -0
  11. {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/setup.py +22 -30
  12. mod_wsgi-6.0.0.dev3/src/diagnostics/environ.py +86 -0
  13. mod_wsgi-6.0.0.dev3/src/express/apache.py +1033 -0
  14. mod_wsgi-6.0.0.dev3/src/express/cli.py +260 -0
  15. mod_wsgi-6.0.0.dev3/src/express/management/commands/__init__.py +0 -0
  16. {mod_wsgi-5.0.2/src/server → mod_wsgi-6.0.0.dev3/src/express}/management/commands/runmodwsgi.py +19 -13
  17. mod_wsgi-6.0.0.dev3/src/express/options.py +889 -0
  18. mod_wsgi-6.0.0.dev3/src/express/platform.py +103 -0
  19. mod_wsgi-6.0.0.dev3/src/express/reloader.py +113 -0
  20. mod_wsgi-6.0.0.dev3/src/express/runtime.py +305 -0
  21. mod_wsgi-6.0.0.dev3/src/express/scripts.py +297 -0
  22. mod_wsgi-6.0.0.dev3/src/express/server.py +955 -0
  23. mod_wsgi-6.0.0.dev3/src/server/__init__.py +8 -0
  24. mod_wsgi-6.0.0.dev3/src/server/management/__init__.py +0 -0
  25. mod_wsgi-6.0.0.dev3/src/server/management/commands/__init__.py +0 -0
  26. mod_wsgi-6.0.0.dev3/src/server/management/commands/runmodwsgi.py +1 -0
  27. mod_wsgi-6.0.0.dev3/src/server/mod_wsgi.c +1284 -0
  28. mod_wsgi-6.0.0.dev3/src/server/wsgi_adapter.c +2256 -0
  29. mod_wsgi-6.0.0.dev3/src/server/wsgi_adapter.h +117 -0
  30. {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/src/server/wsgi_apache.c +65 -86
  31. {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/src/server/wsgi_apache.h +12 -72
  32. mod_wsgi-6.0.0.dev3/src/server/wsgi_auth.c +1790 -0
  33. mod_wsgi-6.0.0.dev3/src/server/wsgi_auth.h +81 -0
  34. {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/src/server/wsgi_buckets.c +70 -20
  35. {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/src/server/wsgi_buckets.h +1 -1
  36. mod_wsgi-6.0.0.dev3/src/server/wsgi_config.c +2390 -0
  37. mod_wsgi-6.0.0.dev3/src/server/wsgi_config.h +132 -0
  38. {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/src/server/wsgi_convert.c +34 -33
  39. {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/src/server/wsgi_convert.h +2 -2
  40. mod_wsgi-6.0.0.dev3/src/server/wsgi_daemon.c +4677 -0
  41. {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/src/server/wsgi_daemon.h +54 -13
  42. mod_wsgi-6.0.0.dev3/src/server/wsgi_dispatch.c +738 -0
  43. mod_wsgi-6.0.0.dev3/src/server/wsgi_dispatch.h +86 -0
  44. mod_wsgi-6.0.0.dev3/src/server/wsgi_environ.c +1129 -0
  45. mod_wsgi-6.0.0.dev3/src/server/wsgi_environ.h +35 -0
  46. mod_wsgi-6.0.0.dev3/src/server/wsgi_execute.c +455 -0
  47. mod_wsgi-5.0.2/src/server/wsgi_stream.h → mod_wsgi-6.0.0.dev3/src/server/wsgi_execute.h +4 -10
  48. mod_wsgi-6.0.0.dev3/src/server/wsgi_gc.c +483 -0
  49. mod_wsgi-6.0.0.dev3/src/server/wsgi_gc.h +126 -0
  50. mod_wsgi-6.0.0.dev3/src/server/wsgi_input.c +1164 -0
  51. mod_wsgi-6.0.0.dev3/src/server/wsgi_input.h +105 -0
  52. mod_wsgi-6.0.0.dev3/src/server/wsgi_interp.c +3572 -0
  53. mod_wsgi-6.0.0.dev3/src/server/wsgi_interp.h +128 -0
  54. mod_wsgi-6.0.0.dev3/src/server/wsgi_logger.c +1171 -0
  55. mod_wsgi-6.0.0.dev3/src/server/wsgi_logger.h +275 -0
  56. {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/src/server/wsgi_memory.c +25 -33
  57. {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/src/server/wsgi_memory.h +1 -1
  58. mod_wsgi-6.0.0.dev3/src/server/wsgi_metrics.c +3409 -0
  59. mod_wsgi-6.0.0.dev3/src/server/wsgi_metrics.h +392 -0
  60. mod_wsgi-6.0.0.dev3/src/server/wsgi_module.c +613 -0
  61. mod_wsgi-6.0.0.dev3/src/server/wsgi_module.h +269 -0
  62. mod_wsgi-6.0.0.dev3/src/server/wsgi_python.h +65 -0
  63. mod_wsgi-6.0.0.dev3/src/server/wsgi_remote.c +2104 -0
  64. mod_wsgi-5.0.2/src/server/wsgi_daemon.c → mod_wsgi-6.0.0.dev3/src/server/wsgi_remote.h +11 -9
  65. mod_wsgi-6.0.0.dev3/src/server/wsgi_restrict.c +172 -0
  66. mod_wsgi-6.0.0.dev3/src/server/wsgi_restrict.h +81 -0
  67. {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/src/server/wsgi_server.c +18 -13
  68. {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/src/server/wsgi_server.h +121 -16
  69. mod_wsgi-6.0.0.dev3/src/server/wsgi_shutdown.c +322 -0
  70. mod_wsgi-6.0.0.dev3/src/server/wsgi_shutdown.h +86 -0
  71. mod_wsgi-6.0.0.dev3/src/server/wsgi_signal.c +246 -0
  72. mod_wsgi-6.0.0.dev3/src/server/wsgi_signal.h +94 -0
  73. mod_wsgi-6.0.0.dev3/src/server/wsgi_stream.c +339 -0
  74. mod_wsgi-6.0.0.dev3/src/server/wsgi_stream.h +84 -0
  75. mod_wsgi-6.0.0.dev3/src/server/wsgi_telemetry.c +1663 -0
  76. mod_wsgi-6.0.0.dev3/src/server/wsgi_telemetry.h +978 -0
  77. {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/src/server/wsgi_thread.c +64 -31
  78. mod_wsgi-6.0.0.dev3/src/server/wsgi_thread.h +262 -0
  79. {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/src/server/wsgi_validate.c +50 -34
  80. {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/src/server/wsgi_validate.h +1 -1
  81. {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/src/server/wsgi_version.h +4 -4
  82. mod_wsgi-5.0.2/MANIFEST.in +0 -18
  83. mod_wsgi-5.0.2/PKG-INFO +0 -467
  84. mod_wsgi-5.0.2/README.rst +0 -434
  85. mod_wsgi-5.0.2/mod_wsgi.egg-info/PKG-INFO +0 -467
  86. mod_wsgi-5.0.2/mod_wsgi.egg-info/entry_points.txt +0 -2
  87. mod_wsgi-5.0.2/src/server/__init__.py +0 -3859
  88. mod_wsgi-5.0.2/src/server/environ.py +0 -111
  89. mod_wsgi-5.0.2/src/server/mod_wsgi.c +0 -16477
  90. mod_wsgi-5.0.2/src/server/wsgi_interp.c +0 -2813
  91. mod_wsgi-5.0.2/src/server/wsgi_interp.h +0 -90
  92. mod_wsgi-5.0.2/src/server/wsgi_logger.c +0 -743
  93. mod_wsgi-5.0.2/src/server/wsgi_logger.h +0 -46
  94. mod_wsgi-5.0.2/src/server/wsgi_metrics.c +0 -1422
  95. mod_wsgi-5.0.2/src/server/wsgi_metrics.h +0 -61
  96. mod_wsgi-5.0.2/src/server/wsgi_python.h +0 -190
  97. mod_wsgi-5.0.2/src/server/wsgi_restrict.c +0 -98
  98. mod_wsgi-5.0.2/src/server/wsgi_restrict.h +0 -43
  99. mod_wsgi-5.0.2/src/server/wsgi_stream.c +0 -255
  100. mod_wsgi-5.0.2/src/server/wsgi_thread.h +0 -56
  101. mod_wsgi-5.0.2/tests/access.wsgi +0 -3
  102. mod_wsgi-5.0.2/tests/auth.wsgi +0 -36
  103. mod_wsgi-5.0.2/tests/environ.wsgi +0 -129
  104. mod_wsgi-5.0.2/tests/events.wsgi +0 -89
  105. {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/CREDITS.rst +0 -0
  106. {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/LICENSE +0 -0
  107. {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/Makefile.in +0 -0
  108. {mod_wsgi-5.0.2/docs/_build/html → mod_wsgi-6.0.0.dev3/images}/__init__.py +0 -0
  109. {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/images/snake-whiskey.jpg +0 -0
  110. {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/mod_wsgi.egg-info/dependency_links.txt +0 -0
  111. {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/mod_wsgi.egg-info/not-zip-safe +0 -0
  112. {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/mod_wsgi.egg-info/top_level.txt +0 -0
  113. {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/setup.cfg +0 -0
  114. {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/src/__init__.py +0 -0
  115. {mod_wsgi-5.0.2/images → mod_wsgi-6.0.0.dev3/src/diagnostics}/__init__.py +0 -0
  116. /mod_wsgi-5.0.2/tests/hello.wsgi → /mod_wsgi-6.0.0.dev3/src/diagnostics/hello.py +0 -0
  117. {mod_wsgi-5.0.2/src/server/management → mod_wsgi-6.0.0.dev3/src/express}/__init__.py +0 -0
  118. {mod_wsgi-5.0.2/src/server/management/commands → mod_wsgi-6.0.0.dev3/src/express/management}/__init__.py +0 -0
@@ -0,0 +1,13 @@
1
+ include configure.ac
2
+ include configure
3
+ include LICENSE
4
+ include Makefile.in
5
+ include README.rst
6
+ include README-express.rst
7
+ include README-standalone.rst
8
+ include CREDITS.rst
9
+ include src/server/*.h
10
+ include src/server/*.c
11
+ exclude src/express/apxs_config.py
12
+ include images/*
13
+ include pyproject.toml
@@ -0,0 +1,92 @@
1
+ Metadata-Version: 2.4
2
+ Name: mod_wsgi
3
+ Version: 6.0.0.dev3
4
+ Summary: Installer for Apache/mod_wsgi.
5
+ Home-page: https://www.modwsgi.org/
6
+ Author: Graham Dumpleton
7
+ Author-email: Graham.Dumpleton@gmail.com
8
+ Maintainer: Graham Dumpleton
9
+ Maintainer-email: Graham.Dumpleton@gmail.com
10
+ License: Apache License, Version 2.0
11
+ Project-URL: Documentation, https://modwsgi.readthedocs.io/
12
+ Project-URL: Source, https://github.com/GrahamDumpleton/mod_wsgi
13
+ Project-URL: Tracker, https://github.com/GrahamDumpleton/mod_wsgi/issues
14
+ Keywords: mod_wsgi wsgi apache
15
+ Classifier: Development Status :: 6 - Mature
16
+ Classifier: License :: OSI Approved :: Apache Software License
17
+ Classifier: Operating System :: MacOS :: MacOS X
18
+ Classifier: Operating System :: POSIX
19
+ Classifier: Operating System :: POSIX :: BSD
20
+ Classifier: Operating System :: POSIX :: Linux
21
+ Classifier: Operating System :: POSIX :: SunOS/Solaris
22
+ Classifier: Programming Language :: Python
23
+ Classifier: Programming Language :: Python :: Implementation :: CPython
24
+ Classifier: Programming Language :: Python :: 3.10
25
+ Classifier: Programming Language :: Python :: 3.11
26
+ Classifier: Programming Language :: Python :: 3.12
27
+ Classifier: Programming Language :: Python :: 3.13
28
+ Classifier: Programming Language :: Python :: 3.14
29
+ Classifier: Topic :: Internet :: WWW/HTTP :: WSGI
30
+ Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Server
31
+ Requires-Python: >=3.10
32
+ License-File: LICENSE
33
+ Dynamic: author
34
+ Dynamic: author-email
35
+ Dynamic: classifier
36
+ Dynamic: description
37
+ Dynamic: home-page
38
+ Dynamic: keywords
39
+ Dynamic: license
40
+ Dynamic: license-file
41
+ Dynamic: maintainer
42
+ Dynamic: maintainer-email
43
+ Dynamic: project-url
44
+ Dynamic: requires-python
45
+ Dynamic: summary
46
+
47
+ Overview
48
+ --------
49
+
50
+ The mod_wsgi package provides an Apache module that implements a WSGI
51
+ compliant interface for hosting Python-based web applications on top of
52
+ the Apache web server, conforming to the WSGI specification (PEP 3333).
53
+
54
+ When installed from PyPi using ``pip``, the ``mod_wsgi`` package builds
55
+ the mod_wsgi Apache module against the Apache and Python installations
56
+ on your host, and installs the ``mod_wsgi-express`` command-line wrapper
57
+ alongside it.
58
+
59
+ ``mod_wsgi-express`` ships a curated Apache configuration template
60
+ tuned for hosting a single WSGI application, and generates a complete
61
+ Apache configuration from it on the fly based on the command-line
62
+ options you supply. Running ``mod_wsgi-express start-server`` brings
63
+ up an Apache instance owned by your own user account, with the
64
+ generated configuration loading mod_wsgi and wiring in your WSGI
65
+ application, without you needing to write or maintain any Apache
66
+ configuration yourself. This makes the package an alternative to
67
+ using a system-supplied mod_wsgi package together with a hand-managed
68
+ Apache configuration, and is well suited to development environments,
69
+ container images, and production deployments where having Apache
70
+ configured automatically is preferable to managing the Apache
71
+ configuration directly.
72
+
73
+ The ``mod_wsgi`` package can also be used purely as a way to build the
74
+ mod_wsgi Apache module (``mod_wsgi.so``) for use with an existing
75
+ Apache installation. The built module can be referenced from where
76
+ ``pip`` placed it, or copied into the modules directory of the target
77
+ Apache using the ``mod_wsgi-express install-module`` command. This
78
+ works both with the system-supplied Apache on your operating system
79
+ and with a self-built Apache installation. In this mode you continue
80
+ to write the Apache configuration yourself, and the ``mod_wsgi``
81
+ package serves as a convenient way to obtain a compiled Apache module
82
+ that matches your Python interpreter.
83
+
84
+ The ``mod_wsgi`` package on PyPi assumes that you have a suitable
85
+ version of Apache pre-installed on your target system, including its
86
+ development headers. If you do not, and you are on a UNIX-like system
87
+ (Linux), see the companion ``mod_wsgi-standalone`` package on PyPi,
88
+ which additionally installs a private build of Apache as part of the
89
+ Python installation.
90
+
91
+ For installation instructions, configuration directives, and usage
92
+ guides, see the mod_wsgi documentation site at https://www.modwsgi.org.
@@ -0,0 +1,46 @@
1
+ Overview
2
+ --------
3
+
4
+ The mod_wsgi package provides an Apache module that implements a WSGI
5
+ compliant interface for hosting Python-based web applications on top of
6
+ the Apache web server, conforming to the WSGI specification (PEP 3333).
7
+
8
+ When installed from PyPi using ``pip``, the ``mod_wsgi`` package builds
9
+ the mod_wsgi Apache module against the Apache and Python installations
10
+ on your host, and installs the ``mod_wsgi-express`` command-line wrapper
11
+ alongside it.
12
+
13
+ ``mod_wsgi-express`` ships a curated Apache configuration template
14
+ tuned for hosting a single WSGI application, and generates a complete
15
+ Apache configuration from it on the fly based on the command-line
16
+ options you supply. Running ``mod_wsgi-express start-server`` brings
17
+ up an Apache instance owned by your own user account, with the
18
+ generated configuration loading mod_wsgi and wiring in your WSGI
19
+ application, without you needing to write or maintain any Apache
20
+ configuration yourself. This makes the package an alternative to
21
+ using a system-supplied mod_wsgi package together with a hand-managed
22
+ Apache configuration, and is well suited to development environments,
23
+ container images, and production deployments where having Apache
24
+ configured automatically is preferable to managing the Apache
25
+ configuration directly.
26
+
27
+ The ``mod_wsgi`` package can also be used purely as a way to build the
28
+ mod_wsgi Apache module (``mod_wsgi.so``) for use with an existing
29
+ Apache installation. The built module can be referenced from where
30
+ ``pip`` placed it, or copied into the modules directory of the target
31
+ Apache using the ``mod_wsgi-express install-module`` command. This
32
+ works both with the system-supplied Apache on your operating system
33
+ and with a self-built Apache installation. In this mode you continue
34
+ to write the Apache configuration yourself, and the ``mod_wsgi``
35
+ package serves as a convenient way to obtain a compiled Apache module
36
+ that matches your Python interpreter.
37
+
38
+ The ``mod_wsgi`` package on PyPi assumes that you have a suitable
39
+ version of Apache pre-installed on your target system, including its
40
+ development headers. If you do not, and you are on a UNIX-like system
41
+ (Linux), see the companion ``mod_wsgi-standalone`` package on PyPi,
42
+ which additionally installs a private build of Apache as part of the
43
+ Python installation.
44
+
45
+ For installation instructions, configuration directives, and usage
46
+ guides, see the mod_wsgi documentation site at https://www.modwsgi.org.
@@ -2,15 +2,17 @@ Overview
2
2
  --------
3
3
 
4
4
  The mod_wsgi package provides an Apache module that implements a WSGI
5
- compliant interface for hosting Python based web applications on top of the
5
+ compliant interface for hosting Python-based web applications on top of the
6
6
  Apache web server.
7
7
 
8
8
  The primary package for mod_wsgi is available on the Python package index
9
- (PyPi) as ``mod_wsgi``. That package assumes that you have a suitable
10
- version of Apache pre-installed on your target system, and if you don't,
11
- installation of the package will fail.
9
+ (PyPi) as ``mod_wsgi``. That package installs the Apache mod_wsgi module
10
+ itself, along with the ``mod_wsgi-express`` command-line wrapper for
11
+ starting Apache/httpd with mod_wsgi pre-configured. It assumes that you
12
+ have a suitable version of Apache pre-installed on your target system,
13
+ and if you don't, installation of the package will fail.
12
14
 
13
- If you are on a UNIX like system (Linux) and need a version of Apache
15
+ If you are on a UNIX-like system (Linux) and need a version of Apache
14
16
  to be installed for you, you can use the ``mod_wsgi-standalone``
15
17
  package on PyPi instead. When installing the ``mod_wsgi-standalone``
16
18
  package it will first trigger the installation of the ``mod_wsgi-httpd``
@@ -24,15 +26,15 @@ This method of installation is only suitable for where you want to use
24
26
  your system Apache installation. This installation method will not
25
27
  work on Windows.
26
28
 
27
- When installing mod_wsgi using this method, except that you will install
28
- the ``mod_wsgi-standalone`` package instead of the ``mod_wsgi`` package,
29
- you should follow installation and usage instructions outlined on the
30
- PyPi page for the ``mod_wsgi`` package.
29
+ When installing mod_wsgi using this method, follow the installation and
30
+ usage instructions outlined on the mod_wsgi documentation site at
31
+ https://www.modwsgi.org, substituting ``mod_wsgi-standalone`` for
32
+ ``mod_wsgi`` as the package to install.
31
33
 
32
34
  **NOTE: Although this package may allow you to install a standalone Apache
33
35
  version, it is only really recommended that you use this package if you
34
36
  have absolutely no other choice for getting the Apache httpd server
35
37
  installed. Always use the Apache httpd server supplied with the operating
36
38
  system if you can. Building this package if you do choose to do so, will
37
- take some time. So if you you think the install is hanging, it is probably
39
+ take some time. So if you think the install is hanging, it is probably
38
40
  still busy compiling everything.**
@@ -0,0 +1,135 @@
1
+ ========
2
+ mod_wsgi
3
+ ========
4
+
5
+ mod_wsgi is an Apache HTTP Server module for hosting Python web
6
+ applications that implement the WSGI specification (`PEP 3333`_). It
7
+ has been used in production deployments for over 15 years and
8
+ continues to be actively maintained.
9
+
10
+ mod_wsgi requires Python 3.10 or later and Apache 2.4. The 6.x
11
+ release line is the current focus of development; see the
12
+ documentation for the full version support policy.
13
+
14
+ Documentation
15
+ -------------
16
+
17
+ Full documentation for mod_wsgi is published at:
18
+
19
+ * https://www.modwsgi.org
20
+
21
+ That site covers installation on the various supported platforms,
22
+ the complete reference for ``WSGI`` configuration directives, the
23
+ error code reference for ``WSGI####`` log messages, deployment and
24
+ hardening guides, and troubleshooting.
25
+
26
+ The documentation sources live under ``docs`` in this repository
27
+ and are built with Sphinx.
28
+
29
+ Releases
30
+ --------
31
+
32
+ This source code repository publishes three distinct packages to the
33
+ Python Package Index:
34
+
35
+ * `mod_wsgi`_ on PyPI builds the mod_wsgi Apache module against an
36
+ existing Apache and Python installation on your host, and
37
+ installs the ``mod_wsgi-express`` command-line wrapper for
38
+ running Apache with a generated configuration tuned for hosting
39
+ a single WSGI application.
40
+
41
+ * `mod_wsgi-standalone`_ on PyPI additionally installs a private
42
+ build of Apache into your Python environment, for use on
43
+ UNIX-like systems where no system Apache is available.
44
+
45
+ * `mod_wsgi-telemetry`_ on PyPI is the out-of-process telemetry
46
+ ingester and live UI that consume datagrams emitted when the
47
+ ``WSGITelemetryService`` directive is enabled. It is distributed
48
+ separately so that installations using the operating-system
49
+ ``mod_wsgi`` package, or any other manually-configured Apache,
50
+ can adopt the telemetry pipeline without switching to the PyPI
51
+ ``mod_wsgi`` or ``mod_wsgi-express`` packages.
52
+
53
+ Reporting bugs
54
+ --------------
55
+
56
+ File bug reports and feature requests on the GitHub issue tracker:
57
+
58
+ * https://github.com/GrahamDumpleton/mod_wsgi/issues
59
+
60
+ Before filing a bug report, work through the troubleshooting guide
61
+ in the documentation. A substantial share of reports against
62
+ mod_wsgi turn out to be configuration, application, or third-party
63
+ package issues rather than mod_wsgi bugs.
64
+
65
+ For suspected security issues, do not open a public issue. Submit a
66
+ private security advisory via GitHub:
67
+
68
+ * https://github.com/GrahamDumpleton/mod_wsgi/security/advisories/new
69
+
70
+ See the security issues page in the documentation for the full
71
+ disclosure process and the list of past CVEs.
72
+
73
+ Contributing
74
+ ------------
75
+
76
+ Pull requests are welcome. Small fixes and self-contained features
77
+ can be sent straight through. For larger changes it is worth opening
78
+ an issue first to discuss the approach, since mod_wsgi sits across
79
+ both the Apache and CPython C APIs and the relevant context is not
80
+ always obvious from the code alone.
81
+
82
+ If you have hit a problem or have an idea but writing the code
83
+ yourself would be more friction than help, describing it in an issue
84
+ is just as useful. The maintainer is usually quicker at producing a
85
+ fix or a small feature in this code base than a first-time
86
+ contributor would be.
87
+
88
+ Sponsorship is set up through GitHub Sponsors:
89
+
90
+ * https://github.com/sponsors/GrahamDumpleton
91
+
92
+ Building from source
93
+ --------------------
94
+
95
+ The repository contains:
96
+
97
+ * ``src/server`` for the Apache module sources (C).
98
+ * ``src/express`` and the rest of ``src`` for the Python-side
99
+ package that includes ``mod_wsgi-express`` and the diagnostics
100
+ WSGI applications.
101
+ * ``telemetry`` for the separately-distributed
102
+ ``mod_wsgi-telemetry`` package, which provides the out-of-process
103
+ telemetry ingester, browser-based live UI and ``top``-style
104
+ curses monitor that consume datagrams emitted when the
105
+ ``WSGITelemetryService`` directive is enabled.
106
+ * ``docs`` for the Sphinx documentation published to
107
+ https://www.modwsgi.org.
108
+ * ``tests`` for the test suite and sample WSGI applications used by
109
+ it.
110
+ * ``scripts`` for helper scripts, including the test runner.
111
+
112
+ Building from source requires a complete Apache installation
113
+ including its development headers (``apache2-dev`` or
114
+ ``httpd-devel`` depending on distribution), and the Python
115
+ development headers. See the documentation's installation page for
116
+ the full prerequisites.
117
+
118
+ For an editable development build into a virtual environment::
119
+
120
+ uv pip install -e . --no-cache
121
+
122
+ To run the test suite::
123
+
124
+ ./scripts/run-tests.sh
125
+
126
+ License
127
+ -------
128
+
129
+ mod_wsgi is distributed under the Apache License, Version 2.0. See
130
+ the ``LICENSE`` file in this repository for the full text.
131
+
132
+ .. _PEP 3333: https://peps.python.org/pep-3333/
133
+ .. _mod_wsgi: https://pypi.org/project/mod_wsgi/
134
+ .. _mod_wsgi-standalone: https://pypi.org/project/mod_wsgi-standalone/
135
+ .. _mod_wsgi-telemetry: https://pypi.org/project/mod_wsgi-telemetry/