Run pyupgrade to clean up Python 2 syntaxes
Update all .py source files by $ pyupgrade --py3-only $(git ls-files | grep ".py$") to modernize the code according to Python 3 syntaxes. Also add the pyupgrade hook to pre-commit to avoid merging additional Python 2 syntaxes. Change-Id: I904e16214939a52e42ca509ea5d5e06d59b18503
This commit is contained in:
parent
b2be069675
commit
06123454ef
@ -1,6 +1,6 @@
|
|||||||
repos:
|
repos:
|
||||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||||
rev: v4.5.0
|
rev: v5.0.0
|
||||||
hooks:
|
hooks:
|
||||||
- id: trailing-whitespace
|
- id: trailing-whitespace
|
||||||
# Replaces or checks mixed line ending
|
# Replaces or checks mixed line ending
|
||||||
@ -19,13 +19,18 @@ repos:
|
|||||||
- id: check-yaml
|
- id: check-yaml
|
||||||
files: .*\.(yaml|yml)$
|
files: .*\.(yaml|yml)$
|
||||||
- repo: https://opendev.org/openstack/hacking
|
- repo: https://opendev.org/openstack/hacking
|
||||||
rev: 6.1.0
|
rev: 7.0.0
|
||||||
hooks:
|
hooks:
|
||||||
- id: hacking
|
- id: hacking
|
||||||
additional_dependencies: []
|
additional_dependencies: []
|
||||||
exclude: '^(doc|releasenotes|tools)/.*$'
|
exclude: '^(doc|releasenotes|tools)/.*$'
|
||||||
- repo: https://github.com/PyCQA/bandit
|
- repo: https://github.com/PyCQA/bandit
|
||||||
rev: 1.7.6
|
rev: 1.7.10
|
||||||
hooks:
|
hooks:
|
||||||
- id: bandit
|
- id: bandit
|
||||||
args: ['-x', 'tests']
|
args: ['-x', 'tests']
|
||||||
|
- repo: https://github.com/asottile/pyupgrade
|
||||||
|
rev: v3.18.0
|
||||||
|
hooks:
|
||||||
|
- id: pyupgrade
|
||||||
|
args: [--py3-only]
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
# Copyright (C) 2020 Red Hat, Inc.
|
# Copyright (C) 2020 Red Hat, Inc.
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
@ -32,7 +32,7 @@ class NoContentTypeRequest(webob.request.Request):
|
|||||||
ResponseClass = NoContentTypeResponse
|
ResponseClass = NoContentTypeResponse
|
||||||
|
|
||||||
|
|
||||||
class ConfigurableMiddleware(object):
|
class ConfigurableMiddleware:
|
||||||
"""Base WSGI middleware wrapper.
|
"""Base WSGI middleware wrapper.
|
||||||
|
|
||||||
These classes require an application to be initialized that will be called
|
These classes require an application to be initialized that will be called
|
||||||
|
@ -82,7 +82,7 @@ def authenticate(auth_file, username, password):
|
|||||||
|
|
||||||
line_prefix = username + ':'
|
line_prefix = username + ':'
|
||||||
try:
|
try:
|
||||||
with open(auth_file, 'r') as f:
|
with open(auth_file) as f:
|
||||||
for line in f:
|
for line in f:
|
||||||
entry = line.strip()
|
entry = line.strip()
|
||||||
if entry and entry.startswith(line_prefix):
|
if entry and entry.startswith(line_prefix):
|
||||||
@ -124,7 +124,7 @@ def validate_auth_file(auth_file):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
try:
|
try:
|
||||||
with open(auth_file, 'r') as f:
|
with open(auth_file) as f:
|
||||||
for line in f:
|
for line in f:
|
||||||
entry = line.strip()
|
entry = line.strip()
|
||||||
if entry and ':' in entry:
|
if entry and ':' in entry:
|
||||||
|
@ -74,9 +74,9 @@ def set_defaults(**kwargs):
|
|||||||
# there's no good way for a user to override only one option, because all
|
# there's no good way for a user to override only one option, because all
|
||||||
# the others would be overridden to 'None'.
|
# the others would be overridden to 'None'.
|
||||||
|
|
||||||
valid_params = set(k.name for k in CORS_OPTS
|
valid_params = {k.name for k in CORS_OPTS
|
||||||
if k.name != 'allowed_origin')
|
if k.name != 'allowed_origin'}
|
||||||
passed_params = set(k for k in kwargs)
|
passed_params = {k for k in kwargs}
|
||||||
|
|
||||||
wrong_params = passed_params - valid_params
|
wrong_params = passed_params - valid_params
|
||||||
if wrong_params:
|
if wrong_params:
|
||||||
@ -92,7 +92,7 @@ class InvalidOriginError(Exception):
|
|||||||
|
|
||||||
def __init__(self, origin):
|
def __init__(self, origin):
|
||||||
self.origin = origin
|
self.origin = origin
|
||||||
super(InvalidOriginError, self).__init__(
|
super().__init__(
|
||||||
'CORS request from origin \'%s\' not permitted.' % origin)
|
'CORS request from origin \'%s\' not permitted.' % origin)
|
||||||
|
|
||||||
|
|
||||||
@ -117,7 +117,7 @@ class CORS(base.ConfigurableMiddleware):
|
|||||||
]
|
]
|
||||||
|
|
||||||
def __init__(self, application, *args, **kwargs):
|
def __init__(self, application, *args, **kwargs):
|
||||||
super(CORS, self).__init__(application, *args, **kwargs)
|
super().__init__(application, *args, **kwargs)
|
||||||
# Begin constructing our configuration hash.
|
# Begin constructing our configuration hash.
|
||||||
self.allowed_origins = {}
|
self.allowed_origins = {}
|
||||||
self._init_conf()
|
self._init_conf()
|
||||||
@ -143,7 +143,7 @@ class CORS(base.ConfigurableMiddleware):
|
|||||||
'oslo_config_project' not in local_conf):
|
'oslo_config_project' not in local_conf):
|
||||||
raise TypeError("allowed_origin or oslo_config_project "
|
raise TypeError("allowed_origin or oslo_config_project "
|
||||||
"is required")
|
"is required")
|
||||||
return super(CORS, cls).factory(global_conf, **local_conf)
|
return super().factory(global_conf, **local_conf)
|
||||||
|
|
||||||
def _init_conf(self):
|
def _init_conf(self):
|
||||||
'''Initialize this middleware from an oslo.config instance.'''
|
'''Initialize this middleware from an oslo.config instance.'''
|
||||||
|
@ -388,7 +388,7 @@ Reason
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
super(Healthcheck, self).__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
self.oslo_conf.register_opts(opts.HEALTHCHECK_OPTS,
|
self.oslo_conf.register_opts(opts.HEALTHCHECK_OPTS,
|
||||||
group='healthcheck')
|
group='healthcheck')
|
||||||
self._path = self._conf_get('path')
|
self._path = self._conf_get('path')
|
||||||
@ -430,14 +430,14 @@ Reason
|
|||||||
'enabled at the same time.')
|
'enabled at the same time.')
|
||||||
|
|
||||||
def _conf_get(self, key, group='healthcheck'):
|
def _conf_get(self, key, group='healthcheck'):
|
||||||
return super(Healthcheck, self)._conf_get(key, group=group)
|
return super()._conf_get(key, group=group)
|
||||||
|
|
||||||
@removals.remove(
|
@removals.remove(
|
||||||
message="The healthcheck middleware must now be configured as "
|
message="The healthcheck middleware must now be configured as "
|
||||||
"an application, not as a filter")
|
"an application, not as a filter")
|
||||||
@classmethod
|
@classmethod
|
||||||
def factory(cls, global_conf, **local_conf):
|
def factory(cls, global_conf, **local_conf):
|
||||||
return super(Healthcheck, cls).factory(global_conf, **local_conf)
|
return super().factory(global_conf, **local_conf)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def app_factory(cls, global_conf, **local_conf):
|
def app_factory(cls, global_conf, **local_conf):
|
||||||
@ -539,7 +539,7 @@ Reason
|
|||||||
def _make_html_response(self, results, healthy):
|
def _make_html_response(self, results, healthy):
|
||||||
try:
|
try:
|
||||||
hostname = socket.gethostname()
|
hostname = socket.gethostname()
|
||||||
except socket.error:
|
except OSError:
|
||||||
hostname = None
|
hostname = None
|
||||||
translated_results = []
|
translated_results = []
|
||||||
for result in results:
|
for result in results:
|
||||||
|
@ -44,7 +44,7 @@ class DisableByFilesPortsHealthcheck(pluginbase.HealthcheckBaseExtension):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
super(DisableByFilesPortsHealthcheck, self).__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
self.oslo_conf.register_opts(opts.DISABLE_BY_FILES_OPTS,
|
self.oslo_conf.register_opts(opts.DISABLE_BY_FILES_OPTS,
|
||||||
group='healthcheck')
|
group='healthcheck')
|
||||||
self.status_files = {}
|
self.status_files = {}
|
||||||
@ -99,7 +99,7 @@ class DisableByFileHealthcheck(pluginbase.HealthcheckBaseExtension):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
super(DisableByFileHealthcheck, self).__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
self.oslo_conf.register_opts(opts.DISABLE_BY_FILE_OPTS,
|
self.oslo_conf.register_opts(opts.DISABLE_BY_FILE_OPTS,
|
||||||
group='healthcheck')
|
group='healthcheck')
|
||||||
|
|
||||||
|
@ -42,7 +42,7 @@ class EnableByFilesHealthcheck(pluginbase.HealthcheckBaseExtension):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
super(EnableByFilesHealthcheck, self).__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
self.oslo_conf.register_opts(opts.ENABLE_BY_FILES_OPTS,
|
self.oslo_conf.register_opts(opts.ENABLE_BY_FILES_OPTS,
|
||||||
group='healthcheck')
|
group='healthcheck')
|
||||||
self.file_paths = self._conf_get('enable_by_file_paths')
|
self.file_paths = self._conf_get('enable_by_file_paths')
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
import abc
|
import abc
|
||||||
|
|
||||||
|
|
||||||
class HealthcheckResult(object):
|
class HealthcheckResult:
|
||||||
"""Result of a ``healthcheck`` method call should be this object."""
|
"""Result of a ``healthcheck`` method call should be this object."""
|
||||||
|
|
||||||
def __init__(self, available, reason, details=None):
|
def __init__(self, available, reason, details=None):
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
# -*- encoding: utf-8 -*-
|
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
# you may not use this file except in compliance with the License.
|
# you may not use this file except in compliance with the License.
|
||||||
@ -33,7 +32,7 @@ class HTTPProxyToWSGI(base.ConfigurableMiddleware):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, application, *args, **kwargs):
|
def __init__(self, application, *args, **kwargs):
|
||||||
super(HTTPProxyToWSGI, self).__init__(application, *args, **kwargs)
|
super().__init__(application, *args, **kwargs)
|
||||||
self.oslo_conf.register_opts(OPTS, group='oslo_middleware')
|
self.oslo_conf.register_opts(OPTS, group='oslo_middleware')
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
@ -44,7 +44,7 @@ _opts = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
class LimitingReader(object):
|
class LimitingReader:
|
||||||
"""Reader to limit the size of an incoming request."""
|
"""Reader to limit the size of an incoming request."""
|
||||||
def __init__(self, data, limit):
|
def __init__(self, data, limit):
|
||||||
"""Initiates LimitingReader object.
|
"""Initiates LimitingReader object.
|
||||||
@ -83,7 +83,7 @@ class RequestBodySizeLimiter(base.ConfigurableMiddleware):
|
|||||||
"""Limit the size of incoming requests."""
|
"""Limit the size of incoming requests."""
|
||||||
|
|
||||||
def __init__(self, application, conf=None):
|
def __init__(self, application, conf=None):
|
||||||
super(RequestBodySizeLimiter, self).__init__(application, conf)
|
super().__init__(application, conf)
|
||||||
self.oslo_conf.register_opts(_opts, group='oslo_middleware')
|
self.oslo_conf.register_opts(_opts, group='oslo_middleware')
|
||||||
|
|
||||||
@webob.dec.wsgify
|
@webob.dec.wsgify
|
||||||
|
@ -64,7 +64,7 @@ class StatsMiddleware(base.ConfigurableMiddleware):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, application, conf):
|
def __init__(self, application, conf):
|
||||||
super(StatsMiddleware, self).__init__(application, conf)
|
super().__init__(application, conf)
|
||||||
self.application = application
|
self.application = application
|
||||||
self.stat_name = conf.get('name')
|
self.stat_name = conf.get('name')
|
||||||
if self.stat_name is None:
|
if self.stat_name is None:
|
||||||
|
@ -24,7 +24,7 @@ from oslo_middleware import correlation_id
|
|||||||
class CorrelationIdTest(test_base.BaseTestCase):
|
class CorrelationIdTest(test_base.BaseTestCase):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(CorrelationIdTest, self).setUp()
|
super().setUp()
|
||||||
|
|
||||||
def test_process_request(self):
|
def test_process_request(self):
|
||||||
app = mock.Mock()
|
app = mock.Mock()
|
||||||
|
@ -56,7 +56,7 @@ class CORSTestBase(test_base.BaseTestCase):
|
|||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
"""Setup the tests."""
|
"""Setup the tests."""
|
||||||
super(CORSTestBase, self).setUp()
|
super().setUp()
|
||||||
|
|
||||||
# Set up the config fixture.
|
# Set up the config fixture.
|
||||||
self.config_fixture = self.useFixture(fixture.Config())
|
self.config_fixture = self.useFixture(fixture.Config())
|
||||||
@ -132,7 +132,7 @@ class CORSTestBase(test_base.BaseTestCase):
|
|||||||
|
|
||||||
class CORSTestDefaultOverrides(CORSTestBase):
|
class CORSTestDefaultOverrides(CORSTestBase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(CORSTestDefaultOverrides, self).setUp()
|
super().setUp()
|
||||||
|
|
||||||
fixture = self.config_fixture # Line length accommodation
|
fixture = self.config_fixture # Line length accommodation
|
||||||
|
|
||||||
@ -292,7 +292,7 @@ class CORSRegularRequestTest(CORSTestBase):
|
|||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
"""Setup the tests."""
|
"""Setup the tests."""
|
||||||
super(CORSRegularRequestTest, self).setUp()
|
super().setUp()
|
||||||
|
|
||||||
fixture = self.config_fixture # Line length accommodation
|
fixture = self.config_fixture # Line length accommodation
|
||||||
fixture.load_raw_values(group='cors',
|
fixture.load_raw_values(group='cors',
|
||||||
@ -613,7 +613,7 @@ class CORSPreflightRequestTest(CORSTestBase):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(CORSPreflightRequestTest, self).setUp()
|
super().setUp()
|
||||||
|
|
||||||
fixture = self.config_fixture # Line length accommodation
|
fixture = self.config_fixture # Line length accommodation
|
||||||
fixture.load_raw_values(group='cors',
|
fixture.load_raw_values(group='cors',
|
||||||
@ -1146,7 +1146,7 @@ class CORSTestWildcard(CORSTestBase):
|
|||||||
"""Test the CORS wildcard specification."""
|
"""Test the CORS wildcard specification."""
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(CORSTestWildcard, self).setUp()
|
super().setUp()
|
||||||
|
|
||||||
fixture = self.config_fixture # Line length accommodation
|
fixture = self.config_fixture # Line length accommodation
|
||||||
fixture.load_raw_values(group='cors',
|
fixture.load_raw_values(group='cors',
|
||||||
|
@ -54,7 +54,7 @@ class HealthcheckMainTests(test_base.BaseTestCase):
|
|||||||
class HealthcheckTests(test_base.BaseTestCase):
|
class HealthcheckTests(test_base.BaseTestCase):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(HealthcheckTests, self).setUp()
|
super().setUp()
|
||||||
self.useFixture(config.Config())
|
self.useFixture(config.Config())
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
@ -191,8 +191,9 @@ class HealthcheckTests(test_base.BaseTestCase):
|
|||||||
def test_disable_by_port_many_files(self):
|
def test_disable_by_port_many_files(self):
|
||||||
filename = self.create_tempfiles([('test', 'foobar')])[0]
|
filename = self.create_tempfiles([('test', 'foobar')])[0]
|
||||||
filename2 = self.create_tempfiles([('test2', 'foobar2')])[0]
|
filename2 = self.create_tempfiles([('test2', 'foobar2')])[0]
|
||||||
conf = {'backends': 'disable_by_files_ports',
|
conf = {
|
||||||
'disable_by_file_paths': "80:%s,81:%s" % (filename, filename2)}
|
'backends': 'disable_by_files_ports',
|
||||||
|
'disable_by_file_paths': "80:{},81:{}".format(filename, filename2)}
|
||||||
self._do_test(conf,
|
self._do_test(conf,
|
||||||
expected_code=webob.exc.HTTPServiceUnavailable.code,
|
expected_code=webob.exc.HTTPServiceUnavailable.code,
|
||||||
expected_body=b'DISABLED BY FILE')
|
expected_body=b'DISABLED BY FILE')
|
||||||
|
@ -22,7 +22,7 @@ from oslo_middleware import http_proxy_to_wsgi
|
|||||||
class TestHTTPProxyToWSGI(test_base.BaseTestCase):
|
class TestHTTPProxyToWSGI(test_base.BaseTestCase):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(TestHTTPProxyToWSGI, self).setUp()
|
super().setUp()
|
||||||
|
|
||||||
@webob.dec.wsgify()
|
@webob.dec.wsgify()
|
||||||
def fake_app(req):
|
def fake_app(req):
|
||||||
@ -139,7 +139,7 @@ class TestHTTPProxyToWSGI(test_base.BaseTestCase):
|
|||||||
class TestHTTPProxyToWSGIDisabled(test_base.BaseTestCase):
|
class TestHTTPProxyToWSGIDisabled(test_base.BaseTestCase):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(TestHTTPProxyToWSGIDisabled, self).setUp()
|
super().setUp()
|
||||||
|
|
||||||
@webob.dec.wsgify()
|
@webob.dec.wsgify()
|
||||||
def fake_app(req):
|
def fake_app(req):
|
||||||
|
@ -78,7 +78,7 @@ class TestLimitingReader(test_base.BaseTestCase):
|
|||||||
class TestRequestBodySizeLimiter(test_base.BaseTestCase):
|
class TestRequestBodySizeLimiter(test_base.BaseTestCase):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(TestRequestBodySizeLimiter, self).setUp()
|
super().setUp()
|
||||||
self.useFixture(config.Config())
|
self.useFixture(config.Config())
|
||||||
|
|
||||||
@webob.dec.wsgify()
|
@webob.dec.wsgify()
|
||||||
|
@ -47,7 +47,7 @@ class TestStaticMethods(test_base.BaseTestCase):
|
|||||||
class TestStatsMiddleware(test_base.BaseTestCase):
|
class TestStatsMiddleware(test_base.BaseTestCase):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(TestStatsMiddleware, self).setUp()
|
super().setUp()
|
||||||
self.patch(statsd, 'StatsClient', mock.MagicMock())
|
self.patch(statsd, 'StatsClient', mock.MagicMock())
|
||||||
|
|
||||||
def make_stats_middleware(self, stat_name=None, stats_host=None,
|
def make_stats_middleware(self, stat_name=None, stats_host=None,
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
# you may not use this file except in compliance with the License.
|
# you may not use this file except in compliance with the License.
|
||||||
# You may obtain a copy of the License at
|
# You may obtain a copy of the License at
|
||||||
|
Loading…
Reference in New Issue
Block a user