diff options
| author | Michael Merickel <michael@merickel.org> | 2022-05-15 21:09:16 -0500 |
|---|---|---|
| committer | Michael Merickel <michael@merickel.org> | 2022-05-15 21:23:28 -0500 |
| commit | 32fb766fa01d436b98e7687f717f6e71c58b9a83 (patch) | |
| tree | 2fa125334fea9a1ebdbd5381f875368636462afc /src/paste/deploy/config.py | |
| parent | ac91794dfb7617b473c9d06d04900debfcdf585e (diff) | |
| download | pastedeploy-git-32fb766fa01d436b98e7687f717f6e71c58b9a83.tar.gz | |
blackify/isort/flake8
Diffstat (limited to 'src/paste/deploy/config.py')
| -rw-r--r-- | src/paste/deploy/config.py | 63 |
1 files changed, 45 insertions, 18 deletions
diff --git a/src/paste/deploy/config.py b/src/paste/deploy/config.py index f448350..3c24151 100644 --- a/src/paste/deploy/config.py +++ b/src/paste/deploy/config.py @@ -1,8 +1,8 @@ # (c) 2005 Ian Bicking and contributors; written for Paste (http://pythonpaste.org) # Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php """Paste Configuration Middleware and Objects""" -import threading import re +import threading # Loaded lazily wsgilib = None @@ -47,7 +47,7 @@ class DispatchingConfig: self.dispatching_id = 0 while 1: self._local_key = 'paste.processconfig_%i' % self.dispatching_id - if not self._local_key in local_dict(): + if self._local_key not in local_dict(): break self.dispatching_id += 1 finally: @@ -84,8 +84,8 @@ class DispatchingConfig: if conf is not None and popped is not conf: raise AssertionError( "The config popped (%s) is not the same as the config " - "expected (%s)" - % (popped, conf)) + "expected (%s)" % (popped, conf) + ) def push_process_config(self, conf): """ @@ -101,8 +101,8 @@ class DispatchingConfig: conf = self.current_conf() if conf is None: raise AttributeError( - "No configuration has been registered for this process " - "or thread") + "No configuration has been registered for this process " "or thread" + ) return getattr(conf, attr) def current_conf(self): @@ -119,8 +119,8 @@ class DispatchingConfig: conf = self.current_conf() if conf is None: raise TypeError( - "No configuration has been registered for this process " - "or thread") + "No configuration has been registered for this process " "or thread" + ) return conf[key] def __contains__(self, key): @@ -132,6 +132,7 @@ class DispatchingConfig: conf = self.current_conf() conf[key] = value + CONFIG = DispatchingConfig() @@ -155,6 +156,7 @@ class ConfigMiddleware: global wsgilib if wsgilib is None: import pkg_resources + pkg_resources.require('Paste') from paste import wsgilib popped_config = None @@ -180,8 +182,10 @@ class ConfigMiddleware: environ['paste.config'] = popped_config return app_iter else: + def close_config(): CONFIG.pop_thread_config(conf) + new_app_iter = wsgilib.add_close(app_iter, close_config) return new_app_iter @@ -191,6 +195,7 @@ def make_config_filter(app, global_conf, **local_conf): conf.update(local_conf) return ConfigMiddleware(app, conf) + make_config_middleware = ConfigMiddleware.__doc__ @@ -246,9 +251,16 @@ class PrefixMiddleware: You can also use ``scheme`` to explicitly set the scheme (like ``scheme = https``). """ - def __init__(self, app, global_conf=None, prefix='/', - translate_forwarded_server=True, - force_port=None, scheme=None): + + def __init__( + self, + app, + global_conf=None, + prefix='/', + translate_forwarded_server=True, + force_port=None, + scheme=None, + ): self.app = app self.prefix = prefix.rstrip('/') self.translate_forwarded_server = translate_forwarded_server @@ -265,11 +277,17 @@ class PrefixMiddleware: environ['SCRIPT_NAME'] = self.prefix if self.translate_forwarded_server: if 'HTTP_X_FORWARDED_SERVER' in environ: - environ['SERVER_NAME'] = environ['HTTP_HOST'] = environ.pop('HTTP_X_FORWARDED_SERVER').split(',')[0] + environ['SERVER_NAME'] = environ['HTTP_HOST'] = environ.pop( + 'HTTP_X_FORWARDED_SERVER' + ).split(',')[0] if 'HTTP_X_FORWARDED_HOST' in environ: - environ['HTTP_HOST'] = environ.pop('HTTP_X_FORWARDED_HOST').split(',')[0] + environ['HTTP_HOST'] = environ.pop('HTTP_X_FORWARDED_HOST').split(',')[ + 0 + ] if 'HTTP_X_FORWARDED_FOR' in environ: - environ['REMOTE_ADDR'] = environ.pop('HTTP_X_FORWARDED_FOR').split(',')[0] + environ['REMOTE_ADDR'] = environ.pop('HTTP_X_FORWARDED_FOR').split(',')[ + 0 + ] if 'HTTP_X_FORWARDED_SCHEME' in environ: environ['wsgi.url_scheme'] = environ.pop('HTTP_X_FORWARDED_SCHEME') elif 'HTTP_X_FORWARDED_PROTO' in environ: @@ -292,14 +310,23 @@ class PrefixMiddleware: def make_prefix_middleware( - app, global_conf, prefix='/', + app, + global_conf, + prefix='/', translate_forwarded_server=True, - force_port=None, scheme=None): + force_port=None, + scheme=None, +): from paste.deploy.converters import asbool + translate_forwarded_server = asbool(translate_forwarded_server) return PrefixMiddleware( - app, prefix=prefix, + app, + prefix=prefix, translate_forwarded_server=translate_forwarded_server, - force_port=force_port, scheme=scheme) + force_port=force_port, + scheme=scheme, + ) + make_prefix_middleware.__doc__ = PrefixMiddleware.__doc__ |
