Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-yamllint for openSUSE:Factory 
checked in at 2023-12-17 21:31:43
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-yamllint (Old)
 and      /work/SRC/openSUSE:Factory/.python-yamllint.new.25432 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-yamllint"

Sun Dec 17 21:31:43 2023 rev:18 rq:1133548 version:1.33.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-yamllint/python-yamllint.changes  
2023-06-01 17:21:14.550772887 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-yamllint.new.25432/python-yamllint.changes   
    2023-12-17 21:34:15.861812603 +0100
@@ -1,0 +2,9 @@
+Fri Dec 15 22:11:00 UTC 2023 - Dirk Müller <dmuel...@suse.com>
+
+- update to 1.33.0:
+  * Add support for Python 3.12, drop support for Python 3.7
+  * Rule ``document-end``: fix spurious "missing document end"
+  * Rule ``empty-values``: add ``forbid-in-block-sequences``
+    option
+
+-------------------------------------------------------------------

Old:
----
  yamllint-1.32.0.tar.gz

New:
----
  yamllint-1.33.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-yamllint.spec ++++++
--- /var/tmp/diff_new_pack.KmqliQ/_old  2023-12-17 21:34:16.353830479 +0100
+++ /var/tmp/diff_new_pack.KmqliQ/_new  2023-12-17 21:34:16.353830479 +0100
@@ -18,23 +18,19 @@
 
 %{?sle15_python_module_pythons}
 Name:           python-yamllint
-Version:        1.32.0
+Version:        1.33.0
 Release:        0
 Summary:        A linter for YAML files
 License:        GPL-3.0-only
 Group:          Development/Languages/Python
 URL:            https://github.com/adrienverge/yamllint
 Source:         
https://files.pythonhosted.org/packages/source/y/yamllint/yamllint-%{version}.tar.gz
-BuildRequires:  %{python_module base >= 3.6}
+BuildRequires:  %{python_module base >= 3.8}
 BuildRequires:  %{python_module setuptools}
 BuildRequires:  fdupes
 BuildRequires:  python-rpm-macros
 Requires:       python-PyYAML
 Requires:       python-pathspec >= 0.5.3
-%if 0%{python_version_nodots} < 38
-# boo#1151703, See below
-Requires:       python-setuptools
-%endif
 Requires(post): update-alternatives
 Requires(postun):update-alternatives
 BuildArch:      noarch

++++++ yamllint-1.32.0.tar.gz -> yamllint-1.33.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yamllint-1.32.0/CHANGELOG.rst 
new/yamllint-1.33.0/CHANGELOG.rst
--- old/yamllint-1.32.0/CHANGELOG.rst   2023-05-22 18:01:32.000000000 +0200
+++ new/yamllint-1.33.0/CHANGELOG.rst   2023-11-09 10:32:03.000000000 +0100
@@ -1,6 +1,13 @@
 Changelog
 =========
 
+1.33.0 (2023-11-09)
+-------------------
+
+- Add support for Python 3.12, drop support for Python 3.7
+- Rule ``document-end``: fix spurious "missing document end"
+- Rule ``empty-values``: add ``forbid-in-block-sequences`` option
+
 1.32.0 (2023-05-22)
 -------------------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yamllint-1.32.0/PKG-INFO new/yamllint-1.33.0/PKG-INFO
--- old/yamllint-1.32.0/PKG-INFO        2023-05-22 18:03:07.044988400 +0200
+++ new/yamllint-1.33.0/PKG-INFO        2023-11-09 10:34:59.056179000 +0100
@@ -1,9 +1,9 @@
 Metadata-Version: 2.1
 Name: yamllint
-Version: 1.32.0
+Version: 1.33.0
 Summary: A linter for YAML files.
 Author: Adrien Vergé
-License: GPL-3.0-only
+License: GPL-3.0-or-later
 Project-URL: homepage, https://github.com/adrienverge/yamllint
 Project-URL: repository, https://github.com/adrienverge/yamllint
 Project-URL: documentation, https://yamllint.readthedocs.io
@@ -17,10 +17,17 @@
 Classifier: Topic :: Software Development :: Debuggers
 Classifier: Topic :: Software Development :: Quality Assurance
 Classifier: Topic :: Software Development :: Testing
-Requires-Python: >=3.7
+Requires-Python: >=3.8
 Description-Content-Type: text/x-rst
-Provides-Extra: dev
 License-File: LICENSE
+Requires-Dist: pathspec>=0.5.3
+Requires-Dist: pyyaml
+Provides-Extra: dev
+Requires-Dist: doc8; extra == "dev"
+Requires-Dist: flake8; extra == "dev"
+Requires-Dist: flake8-import-order; extra == "dev"
+Requires-Dist: rstcheck[sphinx]; extra == "dev"
+Requires-Dist: sphinx; extra == "dev"
 
 yamllint
 ========
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yamllint-1.32.0/pyproject.toml 
new/yamllint-1.33.0/pyproject.toml
--- old/yamllint-1.32.0/pyproject.toml  2023-05-06 10:13:45.000000000 +0200
+++ new/yamllint-1.33.0/pyproject.toml  2023-09-14 16:20:09.000000000 +0200
@@ -2,8 +2,8 @@
 name = "yamllint"
 description = "A linter for YAML files."
 readme = {file = "README.rst", content-type = "text/x-rst"}
-requires-python = ">=3.7"
-license = {text = "GPL-3.0-only"}
+requires-python = ">=3.8"
+license = {text = "GPL-3.0-or-later"}
 authors = [{name = "Adrien Vergé"}]
 keywords = ["yaml", "lint", "linter", "syntax", "checker"]
 classifiers = [
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yamllint-1.32.0/tests/rules/test_document_end.py 
new/yamllint-1.33.0/tests/rules/test_document_end.py
--- old/yamllint-1.32.0/tests/rules/test_document_end.py        2022-06-20 
18:34:21.000000000 +0200
+++ new/yamllint-1.33.0/tests/rules/test_document_end.py        2023-06-27 
11:20:04.000000000 +0200
@@ -71,3 +71,22 @@
                    '---\n'
                    'third: document\n'
                    '...\n', conf, problem=(6, 1))
+
+    def test_directives(self):
+        conf = 'document-end: {present: true}'
+        self.check('%YAML 1.2\n'
+                   '---\n'
+                   'document: end\n'
+                   '...\n', conf)
+        self.check('%YAML 1.2\n'
+                   '%TAG ! tag:clarkevans.com,2002:\n'
+                   '---\n'
+                   'document: end\n'
+                   '...\n', conf)
+        self.check('---\n'
+                   'first: document\n'
+                   '...\n'
+                   '%YAML 1.2\n'
+                   '---\n'
+                   'second: document\n'
+                   '...\n', conf)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yamllint-1.32.0/tests/rules/test_empty_values.py 
new/yamllint-1.33.0/tests/rules/test_empty_values.py
--- old/yamllint-1.32.0/tests/rules/test_empty_values.py        2022-06-20 
18:34:21.000000000 +0200
+++ new/yamllint-1.33.0/tests/rules/test_empty_values.py        2023-11-09 
10:29:12.000000000 +0100
@@ -42,7 +42,8 @@
 
     def test_in_block_mappings_disabled(self):
         conf = ('empty-values: {forbid-in-block-mappings: false,\n'
-                '               forbid-in-flow-mappings: false}\n')
+                '               forbid-in-flow-mappings: false,\n'
+                '               forbid-in-block-sequences: false}\n')
         self.check('---\n'
                    'foo:\n', conf)
         self.check('---\n'
@@ -51,7 +52,8 @@
 
     def test_in_block_mappings_single_line(self):
         conf = ('empty-values: {forbid-in-block-mappings: true,\n'
-                '               forbid-in-flow-mappings: false}\n')
+                '               forbid-in-flow-mappings: false,\n'
+                '               forbid-in-block-sequences: false}\n')
         self.check('---\n'
                    'implicitly-null:\n', conf, problem1=(2, 17))
         self.check('---\n'
@@ -63,7 +65,8 @@
 
     def test_in_block_mappings_all_lines(self):
         conf = ('empty-values: {forbid-in-block-mappings: true,\n'
-                '               forbid-in-flow-mappings: false}\n')
+                '               forbid-in-flow-mappings: false,\n'
+                '               forbid-in-block-sequences: false}\n')
         self.check('---\n'
                    'foo:\n'
                    'bar:\n'
@@ -72,14 +75,16 @@
 
     def test_in_block_mappings_explicit_end_of_document(self):
         conf = ('empty-values: {forbid-in-block-mappings: true,\n'
-                '               forbid-in-flow-mappings: false}\n')
+                '               forbid-in-flow-mappings: false,\n'
+                '               forbid-in-block-sequences: false}\n')
         self.check('---\n'
                    'foo:\n'
                    '...\n', conf, problem1=(2, 5))
 
     def test_in_block_mappings_not_end_of_document(self):
         conf = ('empty-values: {forbid-in-block-mappings: true,\n'
-                '               forbid-in-flow-mappings: false}\n')
+                '               forbid-in-flow-mappings: false,\n'
+                '               forbid-in-block-sequences: false}\n')
         self.check('---\n'
                    'foo:\n'
                    'bar:\n'
@@ -87,7 +92,8 @@
 
     def test_in_block_mappings_different_level(self):
         conf = ('empty-values: {forbid-in-block-mappings: true,\n'
-                '               forbid-in-flow-mappings: false}\n')
+                '               forbid-in-flow-mappings: false,\n'
+                '               forbid-in-block-sequences: false}\n')
         self.check('---\n'
                    'foo:\n'
                    ' bar:\n'
@@ -95,7 +101,8 @@
 
     def test_in_block_mappings_empty_flow_mapping(self):
         conf = ('empty-values: {forbid-in-block-mappings: true,\n'
-                '               forbid-in-flow-mappings: false}\n'
+                '               forbid-in-flow-mappings: false,\n'
+                '               forbid-in-block-sequences: false}\n'
                 'braces: disable\n'
                 'commas: disable\n')
         self.check('---\n'
@@ -107,14 +114,16 @@
 
     def test_in_block_mappings_empty_block_sequence(self):
         conf = ('empty-values: {forbid-in-block-mappings: true,\n'
-                '               forbid-in-flow-mappings: false}\n')
+                '               forbid-in-flow-mappings: false,\n'
+                '               forbid-in-block-sequences: false}\n')
         self.check('---\n'
                    'foo:\n'
                    '  -\n', conf)
 
     def test_in_block_mappings_not_empty_or_explicit_null(self):
         conf = ('empty-values: {forbid-in-block-mappings: true,\n'
-                '               forbid-in-flow-mappings: false}\n')
+                '               forbid-in-flow-mappings: false,\n'
+                '               forbid-in-block-sequences: false}\n')
         self.check('---\n'
                    'foo:\n'
                    ' bar:\n'
@@ -137,7 +146,8 @@
 
     def test_in_block_mappings_various_explicit_null(self):
         conf = ('empty-values: {forbid-in-block-mappings: true,\n'
-                '               forbid-in-flow-mappings: false}\n')
+                '               forbid-in-flow-mappings: false,\n'
+                '               forbid-in-block-sequences: false}\n')
         self.check('---\n'
                    'null-alias: ~\n', conf)
         self.check('---\n'
@@ -147,7 +157,8 @@
 
     def test_in_block_mappings_comments(self):
         conf = ('empty-values: {forbid-in-block-mappings: true,\n'
-                '               forbid-in-flow-mappings: false}\n'
+                '               forbid-in-flow-mappings: false,\n'
+                '               forbid-in-block-sequences: false}\n'
                 'comments: disable\n')
         self.check('---\n'
                    'empty:  # comment\n'
@@ -158,7 +169,8 @@
 
     def test_in_flow_mappings_disabled(self):
         conf = ('empty-values: {forbid-in-block-mappings: false,\n'
-                '               forbid-in-flow-mappings: false}\n'
+                '               forbid-in-flow-mappings: false,\n'
+                '               forbid-in-block-sequences: false}\n'
                 'braces: disable\n'
                 'commas: disable\n')
         self.check('---\n'
@@ -175,7 +187,8 @@
 
     def test_in_flow_mappings_single_line(self):
         conf = ('empty-values: {forbid-in-block-mappings: false,\n'
-                '               forbid-in-flow-mappings: true}\n'
+                '               forbid-in-flow-mappings: true,\n'
+                '               forbid-in-block-sequences: false}\n'
                 'braces: disable\n'
                 'commas: disable\n')
         self.check('---\n'
@@ -201,7 +214,8 @@
 
     def test_in_flow_mappings_multi_line(self):
         conf = ('empty-values: {forbid-in-block-mappings: false,\n'
-                '               forbid-in-flow-mappings: true}\n'
+                '               forbid-in-flow-mappings: true,\n'
+                '               forbid-in-block-sequences: false}\n'
                 'braces: disable\n'
                 'commas: disable\n')
         self.check('---\n'
@@ -226,7 +240,8 @@
 
     def test_in_flow_mappings_various_explicit_null(self):
         conf = ('empty-values: {forbid-in-block-mappings: false,\n'
-                '               forbid-in-flow-mappings: true}\n'
+                '               forbid-in-flow-mappings: true,\n'
+                '               forbid-in-block-sequences: false}\n'
                 'braces: disable\n'
                 'commas: disable\n')
         self.check('---\n'
@@ -240,7 +255,8 @@
 
     def test_in_flow_mappings_comments(self):
         conf = ('empty-values: {forbid-in-block-mappings: false,\n'
-                '               forbid-in-flow-mappings: true}\n'
+                '               forbid-in-flow-mappings: true,\n'
+                '               forbid-in-block-sequences: false}\n'
                 'braces: disable\n'
                 'commas: disable\n'
                 'comments: disable\n')
@@ -258,3 +274,95 @@
                    problem1=(4, 7),
                    problem2=(7, 9),
                    problem3=(10, 5))
+
+    def test_in_block_sequences_disabled(self):
+        conf = ('empty-values: {forbid-in-block-mappings: false,\n'
+                '               forbid-in-flow-mappings: false,\n'
+                '               forbid-in-block-sequences: false}\n')
+        self.check('---\n'
+                   'foo:\n'
+                   '  - bar\n'
+                   '  -\n', conf)
+        self.check('---\n'
+                   'foo:\n'
+                   '  -\n', conf)
+
+    def test_in_block_sequences_primative_item(self):
+        conf = ('empty-values: {forbid-in-block-mappings: false,\n'
+                '               forbid-in-flow-mappings: false,\n'
+                '               forbid-in-block-sequences: true}\n')
+        self.check('---\n'
+                   'foo:\n'
+                   '  -\n', conf,
+                   problem=(3, 4))
+        self.check('---\n'
+                   'foo:\n'
+                   '  - bar\n'
+                   '  -\n', conf,
+                   problem=(4, 4))
+        self.check('---\n'
+                   'foo:\n'
+                   '  - 1\n'
+                   '  - 2\n'
+                   '  -\n', conf,
+                   problem=(5, 4))
+        self.check('---\n'
+                   'foo:\n'
+                   '  - true\n', conf)
+
+    def test_in_block_sequences_complex_objects(self):
+        conf = ('empty-values: {forbid-in-block-mappings: false,\n'
+                '               forbid-in-flow-mappings: false,\n'
+                '               forbid-in-block-sequences: true}\n')
+        self.check('---\n'
+                   'foo:\n'
+                   '  - a: 1\n', conf)
+        self.check('---\n'
+                   'foo:\n'
+                   '  - a: 1\n'
+                   '  -\n', conf,
+                   problem=(4, 4))
+        self.check('---\n'
+                   'foo:\n'
+                   '  - a: 1\n'
+                   '    b: 2\n'
+                   '  -\n', conf,
+                   problem=(5, 4))
+        self.check('---\n'
+                   'foo:\n'
+                   '  - a: 1\n'
+                   '  - b: 2\n'
+                   '  -\n', conf,
+                   problem=(5, 4))
+        self.check('---\n'
+                   'foo:\n'
+                   '  - - a\n'
+                   '    - b: 2\n'
+                   '    -\n', conf,
+                   problem=(5, 6))
+        self.check('---\n'
+                   'foo:\n'
+                   '  - - a\n'
+                   '    - b: 2\n'
+                   '  -\n', conf,
+                   problem=(5, 4))
+
+    def test_in_block_sequences_various_explicit_null(self):
+        conf = ('empty-values: {forbid-in-block-mappings: false,\n'
+                '               forbid-in-flow-mappings: false,\n'
+                '               forbid-in-block-sequences: true}\n')
+        self.check('---\n'
+                   'foo:\n'
+                   '  - null\n', conf)
+        self.check('---\n'
+                   '- null\n', conf)
+        self.check('---\n'
+                   'foo:\n'
+                   '  - bar: null\n'
+                   '  - null\n', conf)
+        self.check('---\n'
+                   '- null\n'
+                   '- null\n', conf)
+        self.check('---\n'
+                   '- - null\n'
+                   '  - null\n', conf)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yamllint-1.32.0/tests/test_cli.py 
new/yamllint-1.33.0/tests/test_cli.py
--- old/yamllint-1.32.0/tests/test_cli.py       2023-05-22 18:00:04.000000000 
+0200
+++ new/yamllint-1.33.0/tests/test_cli.py       2023-10-06 09:19:49.000000000 
+0200
@@ -65,7 +65,7 @@
 class CommandLineTestCase(unittest.TestCase):
     @classmethod
     def setUpClass(cls):
-        super(CommandLineTestCase, cls).setUpClass()
+        super().setUpClass()
 
         cls.wd = build_temp_workspace({
             # .yaml file at root
@@ -97,7 +97,7 @@
                 '- hétérogénéité\n'
                 '# 19.99 €\n'
                 '- お早う御座います。\n'
-                '# الأَبْجَدِيَّة 
العَرَبِيَّة\n').encode('utf-8'),
+                '# الأَبْجَدِيَّة 
العَرَبِيَّة\n').encode(),
             # dos line endings yaml
             'dos.yml': '---\r\n'
                        'dos: true',
@@ -112,7 +112,7 @@
 
     @classmethod
     def tearDownClass(cls):
-        super(CommandLineTestCase, cls).tearDownClass()
+        super().tearDownClass()
 
         shutil.rmtree(cls.wd)
 
@@ -286,8 +286,8 @@
 
         with RunContext(self) as ctx:
             cli.run(('-d', 'default', '-f', 'parsable', path))
-        expected_out = ('%s:1:1: [warning] missing document start "---" '
-                        '(document-start)\n' % path)
+        expected_out = (f'{path}:1:1: [warning] missing document start "---" '
+                        f'(document-start)\n')
         self.assertEqual(
             (ctx.returncode, ctx.stdout, ctx.stderr), (0, expected_out, ''))
 
@@ -424,9 +424,9 @@
             cli.run(('-f', 'parsable', path))
         self.assertEqual(ctx.returncode, 1)
         self.assertEqual(ctx.stdout, (
-            '%s:2:4: [error] trailing spaces (trailing-spaces)\n'
-            '%s:3:4: [error] no new line character at the end of file '
-            '(new-line-at-end-of-file)\n' % (path, path)))
+            f'{path}:2:4: [error] trailing spaces (trailing-spaces)\n'
+            f'{path}:3:4: [error] no new line character at the end of file '
+            f'(new-line-at-end-of-file)\n'))
         self.assertEqual(ctx.stderr, '')
 
     def test_run_one_warning(self):
@@ -476,8 +476,8 @@
             cli.run(['-f', 'parsable'] + items)
         self.assertEqual((ctx.returncode, ctx.stderr), (1, ''))
         self.assertEqual(ctx.stdout, (
-            '%s:3:1: [error] duplication of key "key" in mapping '
-            '(key-duplicates)\n') % path)
+            f'{path}:3:1: [error] duplication of key "key" in mapping '
+            f'(key-duplicates)\n'))
 
     def test_run_piped_output_nocolor(self):
         path = os.path.join(self.wd, 'a.yaml')
@@ -486,11 +486,11 @@
             cli.run((path, ))
         self.assertEqual((ctx.returncode, ctx.stderr), (1, ''))
         self.assertEqual(ctx.stdout, (
-            '%s\n'
-            '  2:4       error    trailing spaces  (trailing-spaces)\n'
-            '  3:4       error    no new line character at the end of file  '
-            '(new-line-at-end-of-file)\n'
-            '\n' % path))
+            f'{path}\n'
+            f'  2:4       error    trailing spaces  (trailing-spaces)\n'
+            f'  3:4       error    no new line character at the end of file  '
+            f'(new-line-at-end-of-file)\n'
+            f'\n'))
 
     def test_run_default_format_output_in_tty(self):
         path = os.path.join(self.wd, 'a.yaml')
@@ -517,13 +517,13 @@
         output.close()
 
         self.assertEqual(out, (
-            '\033[4m%s\033[0m\n'
-            '  \033[2m2:4\033[0m       \033[31merror\033[0m    '
-            'trailing spaces  \033[2m(trailing-spaces)\033[0m\n'
-            '  \033[2m3:4\033[0m       \033[31merror\033[0m    '
-            'no new line character at the end of file  '
-            '\033[2m(new-line-at-end-of-file)\033[0m\n'
-            '\n' % path))
+            f'\033[4m{path}\033[0m\n'
+            f'  \033[2m2:4\033[0m       \033[31merror\033[0m    '
+            f'trailing spaces  \033[2m(trailing-spaces)\033[0m\n'
+            f'  \033[2m3:4\033[0m       \033[31merror\033[0m    '
+            f'no new line character at the end of file  '
+            f'\033[2m(new-line-at-end-of-file)\033[0m\n'
+            f'\n'))
 
     def test_run_default_format_output_without_tty(self):
         path = os.path.join(self.wd, 'a.yaml')
@@ -531,11 +531,11 @@
         with RunContext(self) as ctx:
             cli.run((path, ))
         expected_out = (
-            '%s\n'
-            '  2:4       error    trailing spaces  (trailing-spaces)\n'
-            '  3:4       error    no new line character at the end of file  '
-            '(new-line-at-end-of-file)\n'
-            '\n' % path)
+            f'{path}\n'
+            f'  2:4       error    trailing spaces  (trailing-spaces)\n'
+            f'  3:4       error    no new line character at the end of file  '
+            f'(new-line-at-end-of-file)\n'
+            f'\n')
         self.assertEqual(
             (ctx.returncode, ctx.stdout, ctx.stderr), (1, expected_out, ''))
 
@@ -545,11 +545,11 @@
         with RunContext(self) as ctx:
             cli.run((path, '--format', 'auto'))
         expected_out = (
-            '%s\n'
-            '  2:4       error    trailing spaces  (trailing-spaces)\n'
-            '  3:4       error    no new line character at the end of file  '
-            '(new-line-at-end-of-file)\n'
-            '\n' % path)
+            f'{path}\n'
+            f'  2:4       error    trailing spaces  (trailing-spaces)\n'
+            f'  3:4       error    no new line character at the end of file  '
+            f'(new-line-at-end-of-file)\n'
+            f'\n')
         self.assertEqual(
             (ctx.returncode, ctx.stdout, ctx.stderr), (1, expected_out, ''))
 
@@ -559,13 +559,13 @@
         with RunContext(self) as ctx:
             cli.run((path, '--format', 'colored'))
         expected_out = (
-            '\033[4m%s\033[0m\n'
-            '  \033[2m2:4\033[0m       \033[31merror\033[0m    '
-            'trailing spaces  \033[2m(trailing-spaces)\033[0m\n'
-            '  \033[2m3:4\033[0m       \033[31merror\033[0m    '
-            'no new line character at the end of file  '
-            '\033[2m(new-line-at-end-of-file)\033[0m\n'
-            '\n' % path)
+            f'\033[4m{path}\033[0m\n'
+            f'  \033[2m2:4\033[0m       \033[31merror\033[0m    '
+            f'trailing spaces  \033[2m(trailing-spaces)\033[0m\n'
+            f'  \033[2m3:4\033[0m       \033[31merror\033[0m    '
+            f'no new line character at the end of file  '
+            f'\033[2m(new-line-at-end-of-file)\033[0m\n'
+            f'\n')
         self.assertEqual(
             (ctx.returncode, ctx.stdout, ctx.stderr), (1, expected_out, ''))
 
@@ -575,10 +575,10 @@
         with RunContext(self) as ctx:
             cli.run((path, '--format', 'colored'))
         expected_out = (
-            '\033[4m%s\033[0m\n'
-            '  \033[2m1:1\033[0m       \033[33mwarning\033[0m  '
-            'missing document start "---"  \033[2m(document-start)\033[0m\n'
-            '\n' % path)
+            f'\033[4m{path}\033[0m\n'
+            f'  \033[2m1:1\033[0m       \033[33mwarning\033[0m  '
+            f'missing document start "---"  \033[2m(document-start)\033[0m\n'
+            f'\n')
         self.assertEqual(
             (ctx.returncode, ctx.stdout, ctx.stderr), (0, expected_out, ''))
 
@@ -588,13 +588,12 @@
         with RunContext(self) as ctx:
             cli.run((path, '--format', 'github'))
         expected_out = (
-            '::group::%s\n'
-            '::error file=%s,line=2,col=4::2:4 [trailing-spaces] trailing'
-            ' spaces\n'
-            '::error file=%s,line=3,col=4::3:4 [new-line-at-end-of-file] no'
-            ' new line character at the end of file\n'
-            '::endgroup::\n\n'
-            % (path, path, path))
+            f'::group::{path}\n'
+            f'::error file={path},line=2,col=4::2:4 [trailing-spaces] trailing'
+            f' spaces\n'
+            f'::error file={path},line=3,col=4::3:4 [new-line-at-end-of-file]'
+            f' no new line character at the end of file\n'
+            f'::endgroup::\n\n')
         self.assertEqual(
             (ctx.returncode, ctx.stdout, ctx.stderr), (1, expected_out, ''))
 
@@ -608,13 +607,12 @@
             os.environ['GITHUB_WORKFLOW'] = 'something'
             cli.run((path, ))
         expected_out = (
-            '::group::%s\n'
-            '::error file=%s,line=2,col=4::2:4 [trailing-spaces] trailing'
-            ' spaces\n'
-            '::error file=%s,line=3,col=4::3:4 [new-line-at-end-of-file] no'
-            ' new line character at the end of file\n'
-            '::endgroup::\n\n'
-            % (path, path, path))
+            f'::group::{path}\n'
+            f'::error file={path},line=2,col=4::2:4 [trailing-spaces] trailing'
+            f' spaces\n'
+            f'::error file={path},line=3,col=4::3:4 [new-line-at-end-of-file]'
+            f' no new line character at the end of file\n'
+            f'::endgroup::\n\n')
         self.assertEqual(
             (ctx.returncode, ctx.stdout, ctx.stderr), (1, expected_out, ''))
 
@@ -640,11 +638,11 @@
         with RunContext(self) as ctx:
             cli.run((path, '--no-warnings', '-f', 'auto'))
         expected_out = (
-            '%s\n'
-            '  2:4       error    trailing spaces  (trailing-spaces)\n'
-            '  3:4       error    no new line character at the end of file  '
-            '(new-line-at-end-of-file)\n'
-            '\n' % path)
+            f'{path}\n'
+            f'  2:4       error    trailing spaces  (trailing-spaces)\n'
+            f'  3:4       error    no new line character at the end of file  '
+            f'(new-line-at-end-of-file)\n'
+            f'\n')
         self.assertEqual(
             (ctx.returncode, ctx.stdout, ctx.stderr), (1, expected_out, ''))
 
@@ -671,10 +669,10 @@
         with RunContext(self) as ctx:
             cli.run(('-d', 'rules:\n  new-lines:\n    type: unix', path))
         expected_out = (
-            '%s\n'
-            '  1:4       error    wrong new line character: expected \\n'
-            '  (new-lines)\n'
-            '\n' % path)
+            f'{path}\n'
+            f'  1:4       error    wrong new line character: expected \\n'
+            f'  (new-lines)\n'
+            f'\n')
         self.assertEqual(
             (ctx.returncode, ctx.stdout, ctx.stderr), (1, expected_out, ''))
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yamllint-1.32.0/tests/test_spec_examples.py 
new/yamllint-1.33.0/tests/test_spec_examples.py
--- old/yamllint-1.32.0/tests/test_spec_examples.py     2022-11-06 
11:49:08.000000000 +0100
+++ new/yamllint-1.33.0/tests/test_spec_examples.py     2023-10-06 
09:19:49.000000000 +0200
@@ -39,7 +39,7 @@
 #             text = text.replace('\u21d4', '')    # byte order mark
 #             text = text.replace('\u2192', '\t')  # right arrow
 #             text = text.replace('\u00b0', '')    # empty scalar
-#             with open('tests/yaml-1.2-spec-examples/%s' % id, 'w',
+#             with open(f'tests/yaml-1.2-spec-examples/{id}', 'w',
 #                       encoding='utf-8') as g:
 #                 g.write(text)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yamllint-1.32.0/yamllint/__init__.py 
new/yamllint-1.33.0/yamllint/__init__.py
--- old/yamllint-1.32.0/yamllint/__init__.py    2023-05-22 18:00:15.000000000 
+0200
+++ new/yamllint-1.33.0/yamllint/__init__.py    2023-11-09 10:29:45.000000000 
+0100
@@ -21,7 +21,7 @@
 
 
 APP_NAME = 'yamllint'
-APP_VERSION = '1.32.0'
+APP_VERSION = '1.33.0'
 APP_DESCRIPTION = __doc__
 
 __author__ = 'Adrien Vergé'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yamllint-1.32.0/yamllint/cli.py 
new/yamllint-1.33.0/yamllint/cli.py
--- old/yamllint-1.32.0/yamllint/cli.py 2023-05-22 18:00:04.000000000 +0200
+++ new/yamllint-1.33.0/yamllint/cli.py 2023-10-06 09:19:49.000000000 +0200
@@ -49,52 +49,41 @@
 class Format:
     @staticmethod
     def parsable(problem, filename):
-        return ('%(file)s:%(line)s:%(column)s: [%(level)s] %(message)s' %
-                {'file': filename,
-                 'line': problem.line,
-                 'column': problem.column,
-                 'level': problem.level,
-                 'message': problem.message})
+        return (f'{filename}:{problem.line}:{problem.column}: '
+                f'[{problem.level}] {problem.message}')
 
     @staticmethod
     def standard(problem, filename):
-        line = '  %d:%d' % (problem.line, problem.column)
+        line = f'  {problem.line}:{problem.column}'
         line += max(12 - len(line), 0) * ' '
         line += problem.level
         line += max(21 - len(line), 0) * ' '
         line += problem.desc
         if problem.rule:
-            line += '  (%s)' % problem.rule
+            line += f'  ({problem.rule})'
         return line
 
     @staticmethod
     def standard_color(problem, filename):
-        line = '  \033[2m%d:%d\033[0m' % (problem.line, problem.column)
+        line = f'  \033[2m{problem.line}:{problem.column}\033[0m'
         line += max(20 - len(line), 0) * ' '
         if problem.level == 'warning':
-            line += '\033[33m%s\033[0m' % problem.level
+            line += f'\033[33m{problem.level}\033[0m'
         else:
-            line += '\033[31m%s\033[0m' % problem.level
+            line += f'\033[31m{problem.level}\033[0m'
         line += max(38 - len(line), 0) * ' '
         line += problem.desc
         if problem.rule:
-            line += '  \033[2m(%s)\033[0m' % problem.rule
+            line += f'  \033[2m({problem.rule})\033[0m'
         return line
 
     @staticmethod
     def github(problem, filename):
-        line = '::'
-        line += problem.level
-        line += ' file=' + filename + ','
-        line += 'line=' + format(problem.line) + ','
-        line += 'col=' + format(problem.column)
-        line += '::'
-        line += format(problem.line)
-        line += ':'
-        line += format(problem.column)
-        line += ' '
+        line = f'::{problem.level} file={format(filename)},' \
+               f'line={format(problem.line)},col={format(problem.column)}' \
+               f'::{format(problem.line)}:{format(problem.column)} '
         if problem.rule:
-            line += '[' + problem.rule + '] '
+            line += f'[{problem.rule}] '
         line += problem.desc
         return line
 
@@ -118,12 +107,12 @@
             print(Format.parsable(problem, file))
         elif args_format == 'github':
             if first:
-                print('::group::%s' % file)
+                print(f'::group::{file}')
                 first = False
             print(Format.github(problem, file))
         elif args_format == 'colored':
             if first:
-                print('\033[4m%s\033[0m' % file)
+                print(f'\033[4m{file}\033[0m')
                 first = False
             print(Format.standard_color(problem, file))
         else:
@@ -184,7 +173,7 @@
                         action='store_true',
                         help='output only error level problems')
     parser.add_argument('-v', '--version', action='version',
-                        version='{} {}'.format(APP_NAME, APP_VERSION))
+                        version=f'{APP_NAME} {APP_VERSION}')
 
     args = parser.parse_args(argv)
 
@@ -202,7 +191,7 @@
     try:
         if args.config_data is not None:
             if args.config_data != '' and ':' not in args.config_data:
-                args.config_data = 'extends: ' + args.config_data
+                args.config_data = f'extends: {args.config_data}'
             conf = YamlLintConfig(content=args.config_data)
         elif args.config_file is not None:
             conf = YamlLintConfig(file=args.config_file)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yamllint-1.32.0/yamllint/config.py 
new/yamllint-1.33.0/yamllint/config.py
--- old/yamllint-1.32.0/yamllint/config.py      2023-04-13 19:27:24.000000000 
+0200
+++ new/yamllint-1.33.0/yamllint/config.py      2023-10-06 09:19:49.000000000 
+0200
@@ -76,7 +76,7 @@
         try:
             conf = yaml.safe_load(raw_content)
         except Exception as e:
-            raise YamlLintConfigError('invalid config: %s' % e)
+            raise YamlLintConfigError(f'invalid config: {e}')
 
         if not isinstance(conf, dict):
             raise YamlLintConfigError('invalid config: not a dict')
@@ -95,7 +95,7 @@
             try:
                 self.extend(base)
             except Exception as e:
-                raise YamlLintConfigError('invalid config: %s' % e)
+                raise YamlLintConfigError(f'invalid config: {e}')
 
         if 'ignore' in conf and 'ignore-from-file' in conf:
             raise YamlLintConfigError(
@@ -143,7 +143,7 @@
             try:
                 rule = yamllint.rules.get(id)
             except Exception as e:
-                raise YamlLintConfigError('invalid config: %s' % e)
+                raise YamlLintConfigError(f'invalid config: {e}')
 
             self.rules[id] = validate_rule_conf(rule, self.rules[id])
 
@@ -179,16 +179,16 @@
                 continue
             if optkey not in options:
                 raise YamlLintConfigError(
-                    'invalid config: unknown option "%s" for rule "%s"' %
-                    (optkey, rule.ID))
+                    f'invalid config: unknown option "{optkey}" for rule '
+                    f'"{rule.ID}"')
             # Example: CONF = {option: (bool, 'mixed')}
             #          → {option: true}         → {option: mixed}
             if isinstance(options[optkey], tuple):
                 if (conf[optkey] not in options[optkey] and
                         type(conf[optkey]) not in options[optkey]):
                     raise YamlLintConfigError(
-                        'invalid config: option "%s" of "%s" should be in %s'
-                        % (optkey, rule.ID, options[optkey]))
+                        f'invalid config: option "{optkey}" of "{rule.ID}" '
+                        f'should be in {options[optkey]}')
             # Example: CONF = {option: ['flag1', 'flag2', int]}
             #          → {option: [flag1]}      → {option: [42, flag1, 
flag2]}
             elif isinstance(options[optkey], list):
@@ -197,16 +197,15 @@
                             type(flag) not in options[optkey]
                             for flag in conf[optkey])):
                     raise YamlLintConfigError(
-                        ('invalid config: option "%s" of "%s" should only '
-                         'contain values in %s')
-                        % (optkey, rule.ID, str(options[optkey])))
+                        f'invalid config: option "{optkey}" of "{rule.ID}" '
+                        f'should only contain values in {options[optkey]}')
             # Example: CONF = {option: int}
             #          → {option: 42}
             else:
                 if not isinstance(conf[optkey], options[optkey]):
                     raise YamlLintConfigError(
-                        'invalid config: option "%s" of "%s" should be %s'
-                        % (optkey, rule.ID, options[optkey].__name__))
+                        f'invalid config: option "{optkey}" of "{rule.ID}" '
+                        f'should be {options[optkey].__name__}')
         for optkey in options:
             if optkey not in conf:
                 conf[optkey] = options_default[optkey]
@@ -214,12 +213,11 @@
         if hasattr(rule, 'VALIDATE'):
             res = rule.VALIDATE(conf)
             if res:
-                raise YamlLintConfigError('invalid config: %s: %s' %
-                                          (rule.ID, res))
+                raise YamlLintConfigError(f'invalid config: {rule.ID}: {res}')
     else:
-        raise YamlLintConfigError(('invalid config: rule "%s": should be '
-                                   'either "enable", "disable" or a dict')
-                                  % rule.ID)
+        raise YamlLintConfigError(
+            f'invalid config: rule "{rule.ID}": should be either "enable", '
+            f'"disable" or a dict')
 
     return conf
 
@@ -228,7 +226,7 @@
     # Is it a standard conf shipped with yamllint...
     if '/' not in name:
         std_conf = os.path.join(os.path.dirname(os.path.realpath(__file__)),
-                                'conf', name + '.yaml')
+                                'conf', f'{name}.yaml')
 
         if os.path.isfile(std_conf):
             return std_conf
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yamllint-1.32.0/yamllint/linter.py 
new/yamllint-1.33.0/yamllint/linter.py
--- old/yamllint-1.32.0/yamllint/linter.py      2023-03-19 11:18:44.000000000 
+0100
+++ new/yamllint-1.33.0/yamllint/linter.py      2023-10-06 09:19:49.000000000 
+0200
@@ -50,7 +50,7 @@
     @property
     def message(self):
         if self.rule is not None:
-            return '{} ({})'.format(self.desc, self.rule)
+            return f'{self.desc} ({self.rule})'
         return self.desc
 
     def __eq__(self, other):
@@ -63,7 +63,7 @@
                 (self.line == other.line and self.column < other.column))
 
     def __repr__(self):
-        return '%d:%d: %s' % (self.line, self.column, self.message)
+        return f'{self.line}:{self.column}: {self.message}'
 
 
 def get_cosmetic_problems(buffer, conf, filepath):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yamllint-1.32.0/yamllint/rules/__init__.py 
new/yamllint-1.33.0/yamllint/rules/__init__.py
--- old/yamllint-1.32.0/yamllint/rules/__init__.py      2023-04-04 
17:57:30.000000000 +0200
+++ new/yamllint-1.33.0/yamllint/rules/__init__.py      2023-10-06 
09:19:49.000000000 +0200
@@ -68,6 +68,6 @@
 
 def get(id):
     if id not in _RULES:
-        raise ValueError('no such rule: "%s"' % id)
+        raise ValueError(f'no such rule: "{id}"')
 
     return _RULES[id]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yamllint-1.32.0/yamllint/rules/document_end.py 
new/yamllint-1.33.0/yamllint/rules/document_end.py
--- old/yamllint-1.32.0/yamllint/rules/document_end.py  2022-06-20 
18:34:21.000000000 +0200
+++ new/yamllint-1.33.0/yamllint/rules/document_end.py  2023-06-27 
11:20:04.000000000 +0200
@@ -99,11 +99,13 @@
         prev_is_end_or_stream_start = isinstance(
             prev, (yaml.DocumentEndToken, yaml.StreamStartToken)
         )
+        prev_is_directive = isinstance(prev, yaml.DirectiveToken)
 
         if is_stream_end and not prev_is_end_or_stream_start:
             yield LintProblem(token.start_mark.line, 1,
                               'missing document end "..."')
-        elif is_start and not prev_is_end_or_stream_start:
+        elif is_start and not (prev_is_end_or_stream_start
+                               or prev_is_directive):
             yield LintProblem(token.start_mark.line + 1, 1,
                               'missing document end "..."')
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yamllint-1.32.0/yamllint/rules/empty_lines.py 
new/yamllint-1.33.0/yamllint/rules/empty_lines.py
--- old/yamllint-1.32.0/yamllint/rules/empty_lines.py   2022-06-20 
18:34:21.000000000 +0200
+++ new/yamllint-1.33.0/yamllint/rules/empty_lines.py   2023-10-06 
09:19:49.000000000 +0200
@@ -113,5 +113,5 @@
             max = conf['max-end']
 
         if blank_lines > max:
-            yield LintProblem(line.line_no, 1, 'too many blank lines (%d > %d)'
-                                               % (blank_lines, max))
+            yield LintProblem(line.line_no, 1,
+                              f'too many blank lines ({blank_lines} > {max})')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yamllint-1.32.0/yamllint/rules/empty_values.py 
new/yamllint-1.33.0/yamllint/rules/empty_values.py
--- old/yamllint-1.32.0/yamllint/rules/empty_values.py  2022-06-20 
18:34:21.000000000 +0200
+++ new/yamllint-1.33.0/yamllint/rules/empty_values.py  2023-11-09 
10:29:12.000000000 +0100
@@ -21,6 +21,7 @@
 
 * Use ``forbid-in-block-mappings`` to prevent empty values in block mappings.
 * Use ``forbid-in-flow-mappings`` to prevent empty values in flow mappings.
+* Use ``forbid-in-block-sequences`` to prevent empty values in block sequences.
 
 .. rubric:: Default values (when enabled)
 
@@ -30,6 +31,7 @@
    empty-values:
      forbid-in-block-mappings: true
      forbid-in-flow-mappings: true
+     forbid-in-block-sequences: true
 
 .. rubric:: Examples
 
@@ -72,6 +74,31 @@
 
     {a: 1, b:, c: 3}
 
+#. With ``empty-values: {forbid-in-block-sequences: true}``
+
+   the following code snippet would **PASS**:
+   ::
+
+    some-sequence:
+      - string item
+
+   ::
+
+    some-sequence:
+      - null
+
+   the following code snippets would **FAIL**:
+   ::
+
+    some-sequence:
+      -
+
+   ::
+
+    some-sequence:
+      - string item
+      -
+
 """
 
 import yaml
@@ -82,9 +109,11 @@
 ID = 'empty-values'
 TYPE = 'token'
 CONF = {'forbid-in-block-mappings': bool,
-        'forbid-in-flow-mappings': bool}
+        'forbid-in-flow-mappings': bool,
+        'forbid-in-block-sequences': bool}
 DEFAULT = {'forbid-in-block-mappings': True,
-           'forbid-in-flow-mappings': True}
+           'forbid-in-flow-mappings': True,
+           'forbid-in-block-sequences': True}
 
 
 def check(conf, token, prev, next, nextnext, context):
@@ -102,3 +131,10 @@
             yield LintProblem(token.start_mark.line + 1,
                               token.end_mark.column + 1,
                               'empty value in flow mapping')
+
+    if conf['forbid-in-block-sequences']:
+        if isinstance(token, yaml.BlockEntryToken) and isinstance(next, (
+                yaml.KeyToken, yaml.BlockEndToken, yaml.BlockEntryToken)):
+            yield LintProblem(token.start_mark.line + 1,
+                              token.end_mark.column + 1,
+                              'empty value in block sequence')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yamllint-1.32.0/yamllint/rules/indentation.py 
new/yamllint-1.33.0/yamllint/rules/indentation.py
--- old/yamllint-1.32.0/yamllint/rules/indentation.py   2022-11-06 
11:49:08.000000000 +0100
+++ new/yamllint-1.33.0/yamllint/rules/indentation.py   2023-10-06 
09:19:49.000000000 +0200
@@ -227,7 +227,7 @@
         self.implicit_block_seq = False
 
     def __repr__(self):
-        return '%s:%d' % (labels[self.type], self.indent)
+        return f'{labels[self.type]}:{self.indent}'
 
 
 def check_scalar_indentation(conf, token, context):
@@ -303,8 +303,8 @@
 
         if indent != expected_indent:
             yield LintProblem(line_no, indent + 1,
-                              'wrong indentation: expected %d but found %d' %
-                              (expected_indent, indent))
+                              f'wrong indentation: expected {expected_indent}'
+                              f'but found {indent}')
 
 
 def _check(conf, token, prev, next, nextnext, context):
@@ -342,11 +342,11 @@
 
         if found_indentation != expected:
             if expected < 0:
-                message = 'wrong indentation: expected at least %d' % \
-                          (found_indentation + 1)
+                message = f'wrong indentation: expected at least ' \
+                          f'{found_indentation + 1}'
             else:
-                message = 'wrong indentation: expected %d but found %d' % \
-                          (expected, found_indentation)
+                message = f'wrong indentation: expected {expected} but ' \
+                          f'found {found_indentation}'
             yield LintProblem(token.start_mark.line + 1,
                               found_indentation + 1, message)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yamllint-1.32.0/yamllint/rules/key_duplicates.py 
new/yamllint-1.33.0/yamllint/rules/key_duplicates.py
--- old/yamllint-1.32.0/yamllint/rules/key_duplicates.py        2022-08-06 
15:23:31.000000000 +0200
+++ new/yamllint-1.33.0/yamllint/rules/key_duplicates.py        2023-10-06 
09:19:49.000000000 +0200
@@ -95,6 +95,6 @@
                     next.value != '<<'):
                 yield LintProblem(
                     next.start_mark.line + 1, next.start_mark.column + 1,
-                    'duplication of key "%s" in mapping' % next.value)
+                    f'duplication of key "{next.value}" in mapping')
             else:
                 context['stack'][-1].keys.append(next.value)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yamllint-1.32.0/yamllint/rules/key_ordering.py 
new/yamllint-1.33.0/yamllint/rules/key_ordering.py
--- old/yamllint-1.32.0/yamllint/rules/key_ordering.py  2022-10-24 
14:29:39.000000000 +0200
+++ new/yamllint-1.33.0/yamllint/rules/key_ordering.py  2023-10-06 
09:19:49.000000000 +0200
@@ -122,6 +122,6 @@
                    for key in context['stack'][-1].keys):
                 yield LintProblem(
                     next.start_mark.line + 1, next.start_mark.column + 1,
-                    'wrong ordering of key "%s" in mapping' % next.value)
+                    f'wrong ordering of key "{next.value}" in mapping')
             else:
                 context['stack'][-1].keys.append(next.value)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yamllint-1.32.0/yamllint/rules/octal_values.py 
new/yamllint-1.33.0/yamllint/rules/octal_values.py
--- old/yamllint-1.32.0/yamllint/rules/octal_values.py  2022-08-06 
15:23:31.000000000 +0200
+++ new/yamllint-1.33.0/yamllint/rules/octal_values.py  2023-10-06 
09:19:49.000000000 +0200
@@ -99,8 +99,7 @@
                         IS_OCTAL_NUMBER_PATTERN.match(val[1:])):
                     yield LintProblem(
                         token.start_mark.line + 1, token.end_mark.column + 1,
-                        'forbidden implicit octal value "%s"' %
-                        token.value)
+                        f'forbidden implicit octal value "{token.value}"')
 
     if conf['forbid-explicit-octal']:
         if isinstance(token, yaml.tokens.ScalarToken):
@@ -110,5 +109,4 @@
                         IS_OCTAL_NUMBER_PATTERN.match(val[2:])):
                     yield LintProblem(
                         token.start_mark.line + 1, token.end_mark.column + 1,
-                        'forbidden explicit octal value "%s"' %
-                        token.value)
+                        f'forbidden explicit octal value "{token.value}"')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yamllint-1.32.0/yamllint/rules/quoted_strings.py 
new/yamllint-1.33.0/yamllint/rules/quoted_strings.py
--- old/yamllint-1.32.0/yamllint/rules/quoted_strings.py        2022-11-06 
11:49:08.000000000 +0100
+++ new/yamllint-1.33.0/yamllint/rules/quoted_strings.py        2023-10-06 
09:19:49.000000000 +0200
@@ -176,7 +176,7 @@
                |[-+]?0[0-7_]+
                |[-+]?(?:0|[1-9][0-9_]*)
                |[-+]?0x[0-9a-fA-F_]+
-               |[-+]?[1-9][0-9_]*(?::[0-5]?[0-9])+)$''', re.X),
+               |[-+]?[1-9][0-9_]*(?::[0-5]?[0-9])+)$''', re.VERBOSE),
     list('-+0123456789'))
 
 
@@ -240,7 +240,7 @@
         if (token.style is None or
             not (_quote_match(quote_type, token.style) or
                  (conf['allow-quoted-quotes'] and _has_quoted_quotes(token)))):
-            msg = "string value is not quoted with %s quotes" % quote_type
+            msg = f"string value is not quoted with {quote_type} quotes"
 
     elif conf['required'] is False:
 
@@ -249,7 +249,7 @@
                 not _quote_match(quote_type, token.style) and
                 not (conf['allow-quoted-quotes'] and
                      _has_quoted_quotes(token))):
-            msg = "string value is not quoted with %s quotes" % quote_type
+            msg = f"string value is not quoted with {quote_type} quotes"
 
         elif not token.style:
             is_extra_required = any(re.search(r, token.value)
@@ -267,14 +267,14 @@
             is_extra_allowed = any(re.search(r, token.value)
                                    for r in conf['extra-allowed'])
             if not (is_extra_required or is_extra_allowed):
-                msg = "string value is redundantly quoted with %s quotes" % (
-                    quote_type)
+                msg = f"string value is redundantly quoted with " \
+                      f"{quote_type} quotes"
 
         # But when used need to match config
         elif (token.style and
               not _quote_match(quote_type, token.style) and
               not (conf['allow-quoted-quotes'] and _has_quoted_quotes(token))):
-            msg = "string value is not quoted with %s quotes" % quote_type
+            msg = f"string value is not quoted with {quote_type} quotes"
 
         elif not token.style:
             is_extra_required = len(conf['extra-required']) and any(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yamllint-1.32.0/yamllint/rules/truthy.py 
new/yamllint-1.33.0/yamllint/rules/truthy.py
--- old/yamllint-1.32.0/yamllint/rules/truthy.py        2023-01-09 
18:04:01.000000000 +0100
+++ new/yamllint-1.33.0/yamllint/rules/truthy.py        2023-10-04 
17:53:25.000000000 +0200
@@ -136,7 +136,7 @@
 
 ID = 'truthy'
 TYPE = 'token'
-CONF = {'allowed-values': list(TRUTHY), 'check-keys': bool}
+CONF = {'allowed-values': TRUTHY.copy(), 'check-keys': bool}
 DEFAULT = {'allowed-values': ['true', 'false'], 'check-keys': True}
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yamllint-1.32.0/yamllint.egg-info/PKG-INFO 
new/yamllint-1.33.0/yamllint.egg-info/PKG-INFO
--- old/yamllint-1.32.0/yamllint.egg-info/PKG-INFO      2023-05-22 
18:03:06.000000000 +0200
+++ new/yamllint-1.33.0/yamllint.egg-info/PKG-INFO      2023-11-09 
10:34:59.000000000 +0100
@@ -1,9 +1,9 @@
 Metadata-Version: 2.1
 Name: yamllint
-Version: 1.32.0
+Version: 1.33.0
 Summary: A linter for YAML files.
 Author: Adrien Vergé
-License: GPL-3.0-only
+License: GPL-3.0-or-later
 Project-URL: homepage, https://github.com/adrienverge/yamllint
 Project-URL: repository, https://github.com/adrienverge/yamllint
 Project-URL: documentation, https://yamllint.readthedocs.io
@@ -17,10 +17,17 @@
 Classifier: Topic :: Software Development :: Debuggers
 Classifier: Topic :: Software Development :: Quality Assurance
 Classifier: Topic :: Software Development :: Testing
-Requires-Python: >=3.7
+Requires-Python: >=3.8
 Description-Content-Type: text/x-rst
-Provides-Extra: dev
 License-File: LICENSE
+Requires-Dist: pathspec>=0.5.3
+Requires-Dist: pyyaml
+Provides-Extra: dev
+Requires-Dist: doc8; extra == "dev"
+Requires-Dist: flake8; extra == "dev"
+Requires-Dist: flake8-import-order; extra == "dev"
+Requires-Dist: rstcheck[sphinx]; extra == "dev"
+Requires-Dist: sphinx; extra == "dev"
 
 yamllint
 ========

Reply via email to