diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 0380955f..2fe44b9b 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -26,4 +26,4 @@ repos: rev: v3.20.0 hooks: - id: pyupgrade - args: [--py3-only] + args: [--py310-plus] diff --git a/oslo_versionedobjects/base.py b/oslo_versionedobjects/base.py index 8e619b36..ed78b78e 100644 --- a/oslo_versionedobjects/base.py +++ b/oslo_versionedobjects/base.py @@ -83,7 +83,7 @@ def _make_class_properties(cls): return setattr(self, attrname, field_value) except Exception: with excutils.save_and_reraise_exception(): - attr = "{}.{}".format(self.obj_name(), name) + attr = f"{self.obj_name()}.{name}" LOG.exception('Error setting %(attr)s', {'attr': attr}) @@ -343,7 +343,7 @@ class VersionedObject: @classmethod def _obj_primitive_key(cls, field): - return '{}.{}'.format(cls.OBJ_SERIAL_NAMESPACE, field) + return f'{cls.OBJ_SERIAL_NAMESPACE}.{field}' @classmethod def _obj_primitive_field(cls, primitive, field, @@ -408,7 +408,7 @@ class VersionedObject: # NOTE(danms): We don't do anything with this now, but it's # there for "the future" raise exception.UnsupportedObjectError( - objtype='{}.{}'.format(objns, objname)) + objtype=f'{objns}.{objname}') objclass = cls.obj_class_from_name(objname, objver) return objclass._obj_from_primitive(context, objver, primitive) diff --git a/oslo_versionedobjects/exception.py b/oslo_versionedobjects/exception.py index 6e299155..f621d0c1 100644 --- a/oslo_versionedobjects/exception.py +++ b/oslo_versionedobjects/exception.py @@ -122,7 +122,7 @@ class VersionedObjectsException(Exception): # log the issue and the kwargs LOG.exception('Exception in string format operation') for name, value in kwargs.items(): - LOG.error("{}: {}".format(name, value)) # noqa + LOG.error(f"{name}: {value}") # noqa if CONF.oslo_versionedobjects.fatal_exception_format_errors: raise diff --git a/oslo_versionedobjects/fields.py b/oslo_versionedobjects/fields.py index f1feeaf5..6b621b23 100644 --- a/oslo_versionedobjects/fields.py +++ b/oslo_versionedobjects/fields.py @@ -687,19 +687,19 @@ class Dict(CompoundFieldType): primitive = {} for key, element in value.items(): primitive[key] = self._element_type.to_primitive( - obj, '{}["{}"]'.format(attr, key), element) + obj, f'{attr}["{key}"]', element) return primitive def from_primitive(self, obj, attr, value): concrete = {} for key, element in value.items(): concrete[key] = self._element_type.from_primitive( - obj, '{}["{}"]'.format(attr, key), element) + obj, f'{attr}["{key}"]', element) return concrete def stringify(self, value): return '{%s}' % ( - ','.join(['{}={}'.format(key, self._element_type.stringify(val)) + ','.join([f'{key}={self._element_type.stringify(val)}' for key, val in sorted(value.items())])) def get_schema(self): @@ -838,7 +838,7 @@ class Object(FieldType): else: ident = '' - return '{}{}'.format(value.obj_name(), ident) + return f'{value.obj_name()}{ident}' def get_schema(self): from oslo_versionedobjects import base as obj_base @@ -937,7 +937,7 @@ class BaseEnumField(AutoTypedField): } args.update({'valid_values': valid_values}) return '{}({})'.format(self._type.__class__.__name__, - ','.join(['{}={}'.format(k, v) + ','.join([f'{k}={v}' for k, v in sorted(args.items())])) @property @@ -1152,7 +1152,7 @@ class ListOfEnumField(AutoTypedField): } args.update({'valid_values': valid_values}) return '{}({})'.format(self._type.__class__.__name__, - ','.join(['{}={}'.format(k, v) + ','.join([f'{k}={v}' for k, v in sorted(args.items())])) @@ -1293,7 +1293,7 @@ class CoercedDict(CoercedCollectionMixin, dict): if not isinstance(key, str): raise KeyTypeError(str, key) if hasattr(self, "_element_type") and self._element_type is not None: - att_name = "{}[{}]".format(self._field, key) + att_name = f"{self._field}[{key}]" return self._element_type.coerce(self._obj, att_name, item) else: return item diff --git a/oslo_versionedobjects/tests/test_fields.py b/oslo_versionedobjects/tests/test_fields.py index 0f41a1cf..98583dce 100644 --- a/oslo_versionedobjects/tests/test_fields.py +++ b/oslo_versionedobjects/tests/test_fields.py @@ -866,7 +866,7 @@ class TestListOfUUIDField(TestField): self.from_primitive_values = [([self.uuid1], [self.uuid1])] def test_stringify(self): - self.assertEqual('[{},{}]'.format(self.uuid1, self.uuid2), + self.assertEqual(f'[{self.uuid1},{self.uuid2}]', self.field.stringify([self.uuid1, self.uuid2])) diff --git a/oslo_versionedobjects/tests/test_fixture.py b/oslo_versionedobjects/tests/test_fixture.py index 78e6f69a..3aa87c7c 100644 --- a/oslo_versionedobjects/tests/test_fixture.py +++ b/oslo_versionedobjects/tests/test_fixture.py @@ -542,7 +542,7 @@ class TestObjectVersionChecker(test.TestCase): # bandit rule while py38 is in our supported runtimes. expected_hash = hashlib.md5(bytes(repr( expected_relevant_data).encode())).hexdigest() # nosec - expected_fp = '{}-{}'.format(MyObject.VERSION, expected_hash) + expected_fp = f'{MyObject.VERSION}-{expected_hash}' self.assertEqual(expected_fp, fp, "_get_fingerprint() did not " "generate a correct fingerprint.") @@ -574,7 +574,7 @@ class TestObjectVersionChecker(test.TestCase): # bandit rule while py38 is in our supported runtimes. expected_hash = hashlib.md5(bytes(repr( exp_relevant_data).encode())).hexdigest() # nosec - expected_fp = '{}-{}'.format(MyObject.VERSION, expected_hash) + expected_fp = f'{MyObject.VERSION}-{expected_hash}' self.assertEqual(expected_fp, fp, "_get_fingerprint() did not " "generate a correct fingerprint.") @@ -609,7 +609,7 @@ class TestObjectVersionChecker(test.TestCase): # bandit rule while py38 is in our supported runtimes. expected_hash = hashlib.md5(bytes(repr( exp_relevant_data).encode())).hexdigest() # nosec - expected_fp = '{}-{}'.format(ExtraDataObj.VERSION, expected_hash) + expected_fp = f'{ExtraDataObj.VERSION}-{expected_hash}' self.assertEqual(expected_fp, fp, "_get_fingerprint() did not " "generate a correct fingerprint.")