Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-python-barcode for 
openSUSE:Factory checked in at 2023-09-21 22:22:53
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-python-barcode (Old)
 and      /work/SRC/openSUSE:Factory/.python-python-barcode.new.1770 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-python-barcode"

Thu Sep 21 22:22:53 2023 rev:8 rq:1112732 version:0.15.1

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-python-barcode/python-python-barcode.changes  
    2022-07-15 13:52:58.987573213 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-python-barcode.new.1770/python-python-barcode.changes
    2023-09-21 22:23:03.832899167 +0200
@@ -1,0 +2,8 @@
+Wed Sep 20 15:26:50 UTC 2023 - Ondřej Súkup <mimi...@gmail.com>
+
+- update to 0.15.1
+ * Improved type hints.
+ * Updated ISBN to support newer allocated ranges.
+ * Fixed compatibility with Pillow 10.0.
+
+-------------------------------------------------------------------

Old:
----
  python-barcode-0.14.0.tar.gz

New:
----
  python-barcode-0.15.1.tar.gz

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

Other differences:
------------------
++++++ python-python-barcode.spec ++++++
--- /var/tmp/diff_new_pack.6acDGX/_old  2023-09-21 22:23:05.020942277 +0200
+++ /var/tmp/diff_new_pack.6acDGX/_new  2023-09-21 22:23:05.020942277 +0200
@@ -1,7 +1,7 @@
 #
 # spec file
 #
-# Copyright (c) 2022 SUSE LLC
+# Copyright (c) 2023 SUSE LLC
 # Copyright (c) 2019 Dr. Axel Braun
 #
 # All modifications and additions to the file contributed by third parties
@@ -17,11 +17,9 @@
 #
 
 
-%{?!python_module:%define python_module() python-%{**} python3-%{**}}
-%define skip_python2 1
 %define base_name python-barcode
 Name:           python-%{base_name}
-Version:        0.14.0
+Version:        0.15.1
 Release:        0
 Summary:        Library to create Barcodes with Python
 License:        MIT

++++++ python-barcode-0.14.0.tar.gz -> python-barcode-0.15.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-barcode-0.14.0/.github/workflows/publish.yml 
new/python-barcode-0.15.1/.github/workflows/publish.yml
--- old/python-barcode-0.14.0/.github/workflows/publish.yml     2022-05-17 
12:05:57.000000000 +0200
+++ new/python-barcode-0.15.1/.github/workflows/publish.yml     2023-07-06 
00:56:49.000000000 +0200
@@ -6,39 +6,16 @@
       - v*
 
 jobs:
-  github-release:
-    runs-on: ubuntu-18.04
-    name: Publish GitHub Release
-    steps:
-      - uses: actions/checkout@master
-      - uses: actions/setup-python@v1
-        with:
-          python-version: 3.7
-          architecture: x64
-      - name: Install build dependencies
-        run: pip install wheel
-      - name: Build packages
-        run: python setup.py sdist bdist_wheel
-      - name: Release
-        uses: softprops/action-gh-release@v1
-        with:
-          files: dist/*
-        env:
-          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
   pypi:
-    runs-on: ubuntu-18.04
+    runs-on: ubuntu-22.04
     name: Publish package on PyPI
     steps:
-      - uses: actions/checkout@master
-      - uses: actions/setup-python@v1
+      - uses: actions/checkout@v3
+      - uses: actions/setup-python@v3
         with:
           python-version: 3.7
-          architecture: x64
-      - name: Install build dependencies
-        run: pip install wheel
-      - name: Build packages
-        run: python setup.py sdist bdist_wheel
-      - name: Publish a Python distribution to PyPI
-        uses: pypa/gh-action-pypi-publish@master
+      - run: pip install build setuptools wheel build setuptools_scm
+      - run: python -m build --sdist --wheel --no-isolation
+      - uses: pypa/gh-action-pypi-publish@release/v1
         with:
           password: ${{ secrets.PYPI_TOKEN }}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-barcode-0.14.0/.github/workflows/tests.yml 
new/python-barcode-0.15.1/.github/workflows/tests.yml
--- old/python-barcode-0.14.0/.github/workflows/tests.yml       2022-05-17 
12:05:57.000000000 +0200
+++ new/python-barcode-0.15.1/.github/workflows/tests.yml       2023-07-06 
00:56:49.000000000 +0200
@@ -7,9 +7,17 @@
     runs-on: ${{ matrix.os }}
     strategy:
       matrix:
-        os: [ ubuntu-20.04, macOS-10.15, windows-2019 ]
-        python: [ '3.6', '3.7', '3.8', '3.9', '3.10' ]
+        os: [ ubuntu-20.04 ]
+        python: [ '3.7', '3.8', '3.9', '3.10', '3.11' ]
         variant: [ "py", "py-images" ]
+        include:
+          - os: macOS-11
+            python: "3.10"
+            variant: py-images
+          - os: windows-2019
+            python: "3.10"
+            variant: py-images
+          - os: windows-2019
     name: python${{ matrix.python }} on ${{ matrix.os }} ${{ matrix.variant }}
     steps:
       - uses: actions/checkout@v2
@@ -17,12 +25,8 @@
         with:
           python-version: ${{ matrix.python }}
       - name: Install test dependency
-        run: pip install tox codecov
+        run: pip install tox
       - name: Run tests
         run: tox
         env:
           TOXENV: ${{ matrix.variant }}
-      - name: Report coverage
-        run: codecov
-        env:
-          CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-barcode-0.14.0/.pre-commit-config.yaml 
new/python-barcode-0.15.1/.pre-commit-config.yaml
--- old/python-barcode-0.14.0/.pre-commit-config.yaml   2022-05-17 
12:05:57.000000000 +0200
+++ new/python-barcode-0.15.1/.pre-commit-config.yaml   2023-07-06 
00:56:49.000000000 +0200
@@ -1,32 +1,21 @@
 repos:
   - repo: https://github.com/pre-commit/pre-commit-hooks
-    rev: v4.2.0
+    rev: v4.4.0
     hooks:
       - id: trailing-whitespace
         args: [--markdown-linebreak-ext=md]
       - id: end-of-file-fixer
       - id: debug-statements
-  - repo: https://github.com/pycqa/isort
-    rev: 5.10.1
-    hooks:
-      - id: isort
   - repo: https://github.com/psf/black
-    rev: "22.3.0"
+    rev: "23.3.0"
     hooks:
       - id: black
-  - repo: https://github.com/PyCQA/flake8
-    rev: "4.0.1"
-    hooks:
-      - id: flake8
-        additional_dependencies:
-          - flake8-comprehensions
-          - flake8-bugbear
-  - repo: https://github.com/asottile/pyupgrade
-    rev: v2.32.1
-    hooks:
-    -   id: pyupgrade
-        args: [--py36-plus]
   - repo: https://github.com/pre-commit/mirrors-mypy
-    rev: 'v0.950'
+    rev: 'v1.4.1'
     hooks:
     -   id: mypy
+  - repo: https://github.com/charliermarsh/ruff-pre-commit
+    rev: 'v0.0.275'
+    hooks:
+      - id: ruff
+        args: [--fix, --exit-non-zero-on-fix]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-barcode-0.14.0/PKG-INFO 
new/python-barcode-0.15.1/PKG-INFO
--- old/python-barcode-0.14.0/PKG-INFO  2022-05-17 12:06:06.000000000 +0200
+++ new/python-barcode-0.15.1/PKG-INFO  2023-07-06 00:56:54.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: python-barcode
-Version: 0.14.0
+Version: 0.15.1
 Summary: Create standard barcodes with Python. No external modules needed. 
(optional Pillow support included).
 Home-page: https://github.com/WhyNotHugo/python-barcode
 Author: Hugo Osvaldo Barrera et al
@@ -13,10 +13,6 @@
           :target: https://github.com/WhyNotHugo/python-barcode/actions
           :alt: CI status
         
-        .. image:: 
https://codecov.io/gh/WhyNotHugo/python-barcode/branch/main/graph/badge.svg
-          :target: https://codecov.io/gh/WhyNotHugo/python-barcode
-          :alt: Build coverage
-        
         .. image:: https://readthedocs.org/projects/python-barcode/badge/
           :target: https://python-barcode.rtfd.org/
           :alt: documentation
@@ -38,7 +34,7 @@
         There are no external dependencies when generating SVG files.
         Pillow is required for generating images (e.g.: PNGs).
         
-        Support Python 3.6 to 3.10.
+        Support Python 3.7 to 3.11.
         
         .. image:: example-ean13.png
           :target: https://github.com/WhyNotHugo/python-barcode
@@ -62,11 +58,11 @@
 Classifier: Operating System :: OS Independent
 Classifier: Programming Language :: Python
 Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.6
 Classifier: Programming Language :: Python :: 3.7
 Classifier: Programming Language :: Python :: 3.8
 Classifier: Programming Language :: Python :: 3.9
 Classifier: Programming Language :: Python :: 3.10
+Classifier: Programming Language :: Python :: 3.11
 Classifier: Topic :: Multimedia :: Graphics
 Classifier: Topic :: Software Development :: Libraries :: Python Modules
 Provides-Extra: images
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-barcode-0.14.0/README.rst 
new/python-barcode-0.15.1/README.rst
--- old/python-barcode-0.14.0/README.rst        2022-05-17 12:05:57.000000000 
+0200
+++ new/python-barcode-0.15.1/README.rst        2023-07-06 00:56:49.000000000 
+0200
@@ -5,10 +5,6 @@
   :target: https://github.com/WhyNotHugo/python-barcode/actions
   :alt: CI status
 
-.. image:: 
https://codecov.io/gh/WhyNotHugo/python-barcode/branch/main/graph/badge.svg
-  :target: https://codecov.io/gh/WhyNotHugo/python-barcode
-  :alt: Build coverage
-
 .. image:: https://readthedocs.org/projects/python-barcode/badge/
   :target: https://python-barcode.rtfd.org/
   :alt: documentation
@@ -30,7 +26,7 @@
 There are no external dependencies when generating SVG files.
 Pillow is required for generating images (e.g.: PNGs).
 
-Support Python 3.6 to 3.10.
+Support Python 3.7 to 3.11.
 
 .. image:: example-ean13.png
   :target: https://github.com/WhyNotHugo/python-barcode
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-barcode-0.14.0/barcode/__init__.py 
new/python-barcode-0.15.1/barcode/__init__.py
--- old/python-barcode-0.14.0/barcode/__init__.py       2022-05-17 
12:05:57.000000000 +0200
+++ new/python-barcode-0.15.1/barcode/__init__.py       2023-07-06 
00:56:49.000000000 +0200
@@ -6,6 +6,7 @@
 import os
 from typing import BinaryIO
 from typing import Dict
+from typing import Optional
 from typing import Union
 
 from barcode.codabar import CODABAR
@@ -56,27 +57,32 @@
 PROVIDED_BARCODES.sort()
 
 
-def get(name, code=None, writer=None, options=None):
+def get(
+    name: str,
+    code: Optional[str] = None,
+    writer=None,
+    options: Optional[dict] = None,
+):
     """Helper method for getting a generator or even a generated code.
 
-    :param str name: The name of the type of barcode desired.
-    :param str code: The actual information to encode. If this parameter is
+    :param name: The name of the type of barcode desired.
+    :param code: The actual information to encode. If this parameter is
         provided, a generated barcode is returned. Otherwise, the barcode class
         is returned.
     :param Writer writer: An alternative writer to use when generating the
         barcode.
-    :param dict options: Additional options to be passed on to the barcode when
+    :param options: Additional options to be passed on to the barcode when
         generating.
     """
     options = options or {}
     try:
         barcode = __BARCODE_MAP[name.lower()]
-    except KeyError:
-        raise BarcodeNotFoundError(f"The barcode {name!r} you requested is not 
known.")
+    except KeyError as e:
+        raise BarcodeNotFoundError(f"The barcode {name!r} is not known.") from 
e
     if code is not None:
         return barcode(code, writer, **options)
-    else:
-        return barcode
+
+    return barcode
 
 
 def get_class(name):
@@ -87,9 +93,9 @@
     name: str,
     code: str,
     writer=None,
-    output: Union[str, os.PathLike, BinaryIO] = None,
-    writer_options: Dict = None,
-    text: str = None,
+    output: Union[str, os.PathLike, BinaryIO, None] = None,
+    writer_options: Union[Dict, None] = None,
+    text: Union[str, None] = None,
 ):
     """Shortcut to generate a barcode in one line.
 
@@ -109,12 +115,12 @@
     barcode = get(name, code, writer)
 
     if isinstance(output, str):
-        fullname = barcode.save(output, writer_options, text)
-        return fullname
-    elif output:
+        return barcode.save(output, writer_options, text)
+    if output:
         barcode.write(output, writer_options, text)
-    else:
-        raise TypeError("'output' cannot be None")
+        return None
+
+    raise TypeError("'output' cannot be None")
 
 
 get_barcode = get
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-barcode-0.14.0/barcode/base.py 
new/python-barcode-0.15.1/barcode/base.py
--- old/python-barcode-0.14.0/barcode/base.py   2022-05-17 12:05:57.000000000 
+0200
+++ new/python-barcode-0.15.1/barcode/base.py   2023-07-06 00:56:49.000000000 
+0200
@@ -1,18 +1,22 @@
 """barcode.base
 
 """
+from typing import ClassVar
+from typing import List
+from typing import Optional
+
+from barcode.writer import BaseWriter
 from barcode.writer import SVGWriter
 
 
 class Barcode:
-
     name = ""
 
     digits = 0
 
     default_writer = SVGWriter
 
-    default_writer_options = {
+    default_writer_options: ClassVar[dict] = {
         "module_width": 0.2,
         "module_height": 15.0,
         "quiet_zone": 6.5,
@@ -24,16 +28,18 @@
         "text": "",
     }
 
-    def to_ascii(self):
+    writer: BaseWriter
+
+    def to_ascii(self) -> str:
         code = self.build()
         for i, line in enumerate(code):
             code[i] = line.replace("1", "X").replace("0", " ")
         return "\n".join(code)
 
-    def __repr__(self):
+    def __repr__(self) -> str:
         return f"<{self.__class__.__name__}({self.get_fullcode()!r})>"
 
-    def build(self):
+    def build(self) -> List[str]:
         raise NotImplementedError
 
     def get_fullcode(self):
@@ -44,28 +50,20 @@
         """
         raise NotImplementedError
 
-    def save(self, filename, options=None, text=None):
+    def save(
+        self, filename: str, options: Optional[dict] = None, text: 
Optional[str] = None
+    ) -> str:
         """Renders the barcode and saves it in `filename`.
 
-        :parameters:
-            filename : String
-                Filename to save the barcode in (without filename
-                extension).
-            options : Dict
-                The same as in `self.render`.
-            text : str
-                Text to render under the barcode.
+        :param filename: Filename to save the barcode in (without filename 
extension).
+        :param options: The same as in `self.render`.
+        :param text: Text to render under the barcode.
 
         :returns: The full filename with extension.
-        :rtype: String
         """
-        if text:
-            output = self.render(options, text)
-        else:
-            output = self.render(options)
+        output = self.render(options, text) if text else self.render(options)
 
-        _filename = self.writer.save(filename, output)
-        return _filename
+        return self.writer.save(filename, output)
 
     def write(self, fp, options=None, text=None):
         """Renders the barcode and writes it to the file like object
@@ -82,14 +80,11 @@
         output = self.render(options, text)
         self.writer.write(output, fp)
 
-    def render(self, writer_options=None, text=None):
+    def render(self, writer_options: Optional[dict] = None, text: 
Optional[str] = None):
         """Renders the barcode using `self.writer`.
 
-        :parameters:
-            writer_options : Dict
-                Options for `self.writer`, see writer docs for details.
-            text : str
-                Text to render under the barcode.
+        :param writer_options: Options for `self.writer`, see writer docs for 
details.
+        :param text: Text to render under the barcode.
 
         :returns: Output of the writers render method.
         """
@@ -102,5 +97,4 @@
                 options["text"] = self.get_fullcode()
         self.writer.set_options(options)
         code = self.build()
-        raw = self.writer.render(code)
-        return raw
+        return self.writer.render(code)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-barcode-0.14.0/barcode/charsets/code128.py 
new/python-barcode-0.15.1/barcode/charsets/code128.py
--- old/python-barcode-0.14.0/barcode/charsets/code128.py       2022-05-17 
12:05:57.000000000 +0200
+++ new/python-barcode-0.15.1/barcode/charsets/code128.py       2023-07-06 
00:56:49.000000000 +0200
@@ -3,45 +3,40 @@
 # Charsets for code 128
 
 _common = (
-    (
-        " ",
-        "!",
-        '"',
-        "#",
-        "$",
-        "%",
-        "&",
-        "'",
-        "(",
-        ")",
-        "*",
-        "+",
-        ",",
-        "-",
-        ".",
-        "/",
-    )
-    + tuple(string.digits)
-    + (
-        ":",
-        ";",
-        "<",
-        "=",
-        ">",
-        "?",
-        "@",
-    )
-    + tuple(string.ascii_uppercase)
-    + (
-        "[",
-        "\\",
-        "]",
-        "^",
-        "_",
-    )
+    " ",
+    "!",
+    '"',
+    "#",
+    "$",
+    "%",
+    "&",
+    "'",
+    "(",
+    ")",
+    "*",
+    "+",
+    ",",
+    "-",
+    ".",
+    "/",
+    *tuple(string.digits),
+    ":",
+    ";",
+    "<",
+    "=",
+    ">",
+    "?",
+    "@",
+    *tuple(string.ascii_uppercase),
+    "[",
+    "\\",
+    "]",
+    "^",
+    "_",
 )
 
-_charset_a = _common + (
+_charset_a = (
+    *_common,
     "\x00",
     "\x01",
     "\x02",
@@ -51,11 +46,11 @@
     "\x06",
     "\x07",
     "\x08",
-    "\x09",
-    "\x0a",
+    "\t",
+    "\n",
     "\x0b",
     "\x0c",
-    "\x0d",
+    "\r",
     "\x0e",
     "\x0f",
     "\x10",
@@ -74,33 +69,31 @@
     "\x1d",
     "\x1e",
     "\x1f",
-    "\xf3",
-    "\xf2",
+    "ó",
+    "ò",
     "SHIFT",
     "TO_C",
     "TO_B",
-    "\xf4",
-    "\xf1",
+    "ô",
+    "ñ",
 )
 
 _charset_b = (
-    _common
-    + ("`",)
-    + tuple(string.ascii_lowercase)
-    + (
-        "{",
-        "|",
-        "}",
-        "~",
-        "\x7f",
-        "\xf3",
-        "\xf2",
-        "SHIFT",
-        "TO_C",
-        "\xf4",
-        "TO_A",
-        "\xf1",
-    )
+    *_common,
+    "`",
+    *tuple(string.ascii_lowercase),
+    "{",
+    "|",
+    "}",
+    "~",
+    "\x7f",
+    "ó",
+    "ò",
+    "SHIFT",
+    "TO_C",
+    "ô",
+    "TO_A",
+    "ñ",
 )
 
 ALL = set(_common + _charset_a + _charset_b)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-barcode-0.14.0/barcode/codabar.py 
new/python-barcode-0.15.1/barcode/codabar.py
--- old/python-barcode-0.14.0/barcode/codabar.py        2022-05-17 
12:05:57.000000000 +0200
+++ new/python-barcode-0.15.1/barcode/codabar.py        2023-07-06 
00:56:49.000000000 +0200
@@ -27,13 +27,13 @@
 
     name = "Codabar (NW-7)"
 
-    def __init__(self, code, writer=None, narrow=2, wide=5):
+    def __init__(self, code, writer=None, narrow=2, wide=5) -> None:
         self.code = code
         self.writer = writer or self.default_writer()
         self.narrow = narrow
         self.wide = wide
 
-    def __str__(self):
+    def __str__(self) -> str:
         return self.code
 
     def get_fullcode(self):
@@ -46,19 +46,21 @@
             )  # Start with [A-D], followed by a narrow space
 
         except KeyError:
-            raise BarcodeError("Codabar should start with either A,B,C or D")
+            raise BarcodeError("Codabar should start with either A,B,C or D") 
from None
 
         try:
             data += "n".join(
                 [codabar.CODES[c] for c in self.code[1:-1]]
             )  # separated by a narrow space
         except KeyError:
-            raise IllegalCharacterError("Codabar can only contain numerics or 
$:/.+-")
+            raise IllegalCharacterError(
+                "Codabar can only contain numerics or $:/.+-"
+            ) from None
 
         try:
             data += "n" + codabar.STARTSTOP[self.code[-1]]  # End with [A-D]
         except KeyError:
-            raise BarcodeError("Codabar should end with either A,B,C or D")
+            raise BarcodeError("Codabar should end with either A,B,C or D") 
from None
 
         raw = ""
         for e in data:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-barcode-0.14.0/barcode/codex.py 
new/python-barcode-0.15.1/barcode/codex.py
--- old/python-barcode-0.14.0/barcode/codex.py  2022-05-17 12:05:57.000000000 
+0200
+++ new/python-barcode-0.15.1/barcode/codex.py  2023-07-06 00:56:49.000000000 
+0200
@@ -2,6 +2,9 @@
 
 :Provided barcodes: Code 39, Code 128, PZN
 """
+
+from typing import Collection
+
 from barcode.base import Barcode
 from barcode.charsets import code39
 from barcode.charsets import code128
@@ -16,7 +19,7 @@
 MIN_QUIET_ZONE = 2.54
 
 
-def check_code(code, name, allowed):
+def check_code(code: str, name: str, allowed: Collection[str]) -> None:
     wrong = []
     for char in code:
         if char not in allowed:
@@ -34,7 +37,7 @@
 
     name = "Code 39"
 
-    def __init__(self, code: str, writer=None, add_checksum: bool = True):
+    def __init__(self, code: str, writer=None, add_checksum: bool = True) -> 
None:
         r"""
         :param code: Code 39 string without \* and without checksum.
         :param writer: A ``barcode.writer`` instance used to render the barcode
@@ -48,7 +51,7 @@
         self.writer = writer or self.default_writer()
         check_code(self.code, self.name, code39.REF)
 
-    def __str__(self):
+    def __str__(self) -> str:
         return self.code
 
     def get_fullcode(self) -> str:
@@ -60,6 +63,7 @@
         for k, v in code39.MAP.items():
             if check == v[0]:
                 return k
+        return None
 
     def build(self):
         chars = [code39.EDGE]
@@ -88,7 +92,7 @@
 
     digits = 6
 
-    def __init__(self, pzn, writer=None):
+    def __init__(self, pzn, writer=None) -> None:
         pzn = pzn[: self.digits]
         if not pzn.isdigit():
             raise IllegalCharacterError("PZN can only contain numbers.")
@@ -108,8 +112,8 @@
         checksum = sum_ % 11
         if checksum == 10:
             raise BarcodeError("Checksum can not be 10 for PZN.")
-        else:
-            return checksum
+
+        return checksum
 
 
 class PZN8(PZN7):
@@ -131,14 +135,14 @@
 
     name = "Code 128"
 
-    def __init__(self, code, writer=None):
+    def __init__(self, code, writer=None) -> None:
         self.code = code
         self.writer = writer or self.default_writer()
         self._charset = "B"
         self._buffer = ""
         check_code(self.code, self.name, code128.ALL)
 
-    def __str__(self):
+    def __str__(self) -> str:
         return self.code
 
     @property
@@ -183,31 +187,32 @@
         elif self._charset == "B":
             if look_next():
                 codes = self._new_charset("C")
-            elif char not in code128.B:
-                if char in code128.A:
-                    codes = self._new_charset("A")
+            elif char not in code128.B and char in code128.A:
+                codes = self._new_charset("A")
         elif self._charset == "A":
             if look_next():
                 codes = self._new_charset("C")
-            elif char not in code128.A:
-                if char in code128.B:
-                    codes = self._new_charset("B")
+            elif char not in code128.A and char in code128.B:
+                codes = self._new_charset("B")
         return codes
 
     def _convert(self, char):
         if self._charset == "A":
             return code128.A[char]
-        elif self._charset == "B":
+        if self._charset == "B":
             return code128.B[char]
-        elif self._charset == "C":
+        if self._charset == "C":
             if char in code128.C:
                 return code128.C[char]
-            elif char.isdigit():
+            if char.isdigit():
                 self._buffer += char
                 if len(self._buffer) == 2:
                     value = int(self._buffer)
                     self._buffer = ""
                     return value
+                return None
+            return None
+        return None
 
     def _try_to_optimize(self, encoded):
         if encoded[1] in code128.TO:
@@ -232,8 +237,7 @@
             encoded.extend(self._new_charset("B"))
             encoded.append(self._convert(self._buffer[0]))
             self._buffer = ""
-        encoded = self._try_to_optimize(encoded)
-        return encoded
+        return self._try_to_optimize(encoded)
 
     def build(self):
         encoded = self._build()
@@ -251,7 +255,7 @@
         return super().render(options, text)
 
 
-class Gs1_128(Code128):
+class Gs1_128(Code128):  # noqa: N801
     """
     following the norm, a gs1-128 barcode is a subset of code 128 barcode,
     it can be generated by prepending the code with the FNC1 character
@@ -263,7 +267,7 @@
 
     FNC1_CHAR = "\xf1"
 
-    def __init__(self, code, writer=None):
+    def __init__(self, code, writer=None) -> None:
         code = self.FNC1_CHAR + code
         super().__init__(code, writer)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-barcode-0.14.0/barcode/ean.py 
new/python-barcode-0.15.1/barcode/ean.py
--- old/python-barcode-0.14.0/barcode/ean.py    2022-05-17 12:05:57.000000000 
+0200
+++ new/python-barcode-0.15.1/barcode/ean.py    2023-07-06 00:56:49.000000000 
+0200
@@ -41,7 +41,7 @@
 
     digits = 12
 
-    def __init__(self, ean, writer=None, no_checksum=False, guardbar=False):
+    def __init__(self, ean, writer=None, no_checksum=False, guardbar=False) -> 
None:
         ean = ean[: self.digits]
         if not ean.isdigit():
             raise IllegalCharacterError("EAN code can only contain numbers.")
@@ -72,7 +72,7 @@
             self.MIDDLE = _ean.MIDDLE
         self.writer = writer or self.default_writer()
 
-    def __str__(self):
+    def __str__(self) -> str:
         return self.ean
 
     def get_fullcode(self):
@@ -127,11 +127,10 @@
 
 
 class EuropeanArticleNumber13WithGuard(EuropeanArticleNumber13):
-
     name = "EAN-13 with guards"
 
-    def __init__(self, *args, guardbar=True, **kwargs):
-        return super().__init__(*args, guardbar=guardbar, **kwargs)
+    def __init__(self, ean, writer=None, no_checksum=False, guardbar=True) -> 
None:
+        super().__init__(ean, writer, no_checksum, guardbar)
 
 
 class JapanArticleNumber(EuropeanArticleNumber13):
@@ -148,7 +147,7 @@
 
     valid_country_codes = list(range(450, 460)) + list(range(490, 500))
 
-    def __init__(self, jan, *args, **kwargs):
+    def __init__(self, jan, *args, **kwargs) -> None:
         if int(jan[:3]) not in self.valid_country_codes:
             raise WrongCountryCodeError(
                 "Country code isn't between 450-460 or 490-500."
@@ -192,11 +191,10 @@
 
 
 class EuropeanArticleNumber8WithGuard(EuropeanArticleNumber8):
-
     name = "EAN-8 with guards"
 
-    def __init__(self, *args, guardbar=True, **kwargs):
-        return super().__init__(*args, guardbar=guardbar, **kwargs)
+    def __init__(self, ean, writer=None, no_checksum=False, guardbar=True) -> 
None:
+        super().__init__(ean, writer, no_checksum, guardbar)
 
 
 class EuropeanArticleNumber14(EuropeanArticleNumber13):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-barcode-0.14.0/barcode/errors.py 
new/python-barcode-0.15.1/barcode/errors.py
--- old/python-barcode-0.14.0/barcode/errors.py 2022-05-17 12:05:57.000000000 
+0200
+++ new/python-barcode-0.15.1/barcode/errors.py 2023-07-06 00:56:49.000000000 
+0200
@@ -3,10 +3,10 @@
 
 
 class BarcodeError(Exception):
-    def __init__(self, msg):
+    def __init__(self, msg) -> None:
         self.msg = msg
 
-    def __str__(self):
+    def __str__(self) -> str:
         return self.msg
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-barcode-0.14.0/barcode/isxn.py 
new/python-barcode-0.15.1/barcode/isxn.py
--- old/python-barcode-0.14.0/barcode/isxn.py   2022-05-17 12:05:57.000000000 
+0200
+++ new/python-barcode-0.15.1/barcode/isxn.py   2023-07-06 00:56:49.000000000 
+0200
@@ -40,14 +40,13 @@
 
     name = "ISBN-13"
 
-    def __init__(self, isbn, writer=None):
+    def __init__(self, isbn, writer=None) -> None:
         isbn = isbn.replace("-", "")
         self.isbn13 = isbn
         if isbn[:3] not in ("978", "979"):
             raise WrongCountryCodeError("ISBN must start with 978 or 979.")
-        if isbn[:3] == "979":
-            if isbn[3:5] not in ("10", "11"):
-                raise BarcodeError("ISBN must start with 97910 or 97911.")
+        if isbn[:3] == "979" and isbn[3:4] not in ("1", "8"):
+            raise BarcodeError("ISBN must start with 97910 or 97911.")
         super().__init__(isbn, writer)
 
 
@@ -66,21 +65,21 @@
 
     digits = 9
 
-    def __init__(self, isbn, writer=None):
+    def __init__(self, isbn, writer=None) -> None:
         isbn = isbn.replace("-", "")
         isbn = isbn[: self.digits]
+        super().__init__("978" + isbn, writer)
         self.isbn10 = isbn
         self.isbn10 = f"{isbn}{self._calculate_checksum()}"
-        super().__init__("978" + isbn, writer)
 
     def _calculate_checksum(self):
         tmp = sum(x * int(y) for x, y in enumerate(self.isbn10[:9], start=1)) 
% 11
         if tmp == 10:
             return "X"
-        else:
-            return tmp
 
-    def __str__(self):
+        return tmp
+
+    def __str__(self) -> str:
         return self.isbn10
 
 
@@ -99,7 +98,7 @@
 
     digits = 7
 
-    def __init__(self, issn, writer=None):
+    def __init__(self, issn, writer=None) -> None:
         issn = issn.replace("-", "")
         issn = issn[: self.digits]
         self.issn = issn
@@ -114,13 +113,13 @@
         )
         if tmp == 10:
             return "X"
-        else:
-            return tmp
+
+        return tmp
 
     def make_ean(self):
         return f"977{self.issn[:7]}00{self._calculate_checksum()}"
 
-    def __str__(self):
+    def __str__(self) -> str:
         return self.issn
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-barcode-0.14.0/barcode/itf.py 
new/python-barcode-0.15.1/barcode/itf.py
--- old/python-barcode-0.14.0/barcode/itf.py    2022-05-17 12:05:57.000000000 
+0200
+++ new/python-barcode-0.15.1/barcode/itf.py    2023-07-06 00:56:49.000000000 
+0200
@@ -29,7 +29,7 @@
 
     name = "ITF"
 
-    def __init__(self, code, writer=None, narrow=2, wide=5):
+    def __init__(self, code, writer=None, narrow=2, wide=5) -> None:
         if not code.isdigit():
             raise IllegalCharacterError("ITF code can only contain numbers.")
         # Length must be even, prepend 0 if necessary
@@ -40,7 +40,7 @@
         self.narrow = narrow
         self.wide = wide
 
-    def __str__(self):
+    def __str__(self) -> str:
         return self.code
 
     def get_fullcode(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-barcode-0.14.0/barcode/upc.py 
new/python-barcode-0.15.1/barcode/upc.py
--- old/python-barcode-0.14.0/barcode/upc.py    2022-05-17 12:05:57.000000000 
+0200
+++ new/python-barcode-0.15.1/barcode/upc.py    2023-07-06 00:56:49.000000000 
+0200
@@ -22,7 +22,7 @@
 
     digits = 11
 
-    def __init__(self, upc, writer=None, make_ean=False):
+    def __init__(self, upc, writer=None, make_ean=False) -> None:
         """Initializes new UPC-A barcode.
 
         :param str upc: The upc number as string.
@@ -44,17 +44,17 @@
         self.upc = f"{upc}{self.calculate_checksum()}"
         self.writer = writer or self.default_writer()
 
-    def __str__(self):
+    def __str__(self) -> str:
         if self.ean:
             return "0" + self.upc
-        else:
-            return self.upc
+
+        return self.upc
 
     def get_fullcode(self):
         if self.ean:
             return "0" + self.upc
-        else:
-            return self.upc
+
+        return self.upc
 
     def calculate_checksum(self):
         """Calculates the checksum for UPCA/UPC codes
@@ -72,8 +72,8 @@
         check = (evensum + oddsum * 3) % 10
         if check == 0:
             return 0
-        else:
-            return 10 - check
+
+        return 10 - check
 
     def build(self):
         """Builds the barcode pattern from 'self.upc'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-barcode-0.14.0/barcode/version.py 
new/python-barcode-0.15.1/barcode/version.py
--- old/python-barcode-0.14.0/barcode/version.py        2022-05-17 
12:06:06.000000000 +0200
+++ new/python-barcode-0.15.1/barcode/version.py        2023-07-06 
00:56:54.000000000 +0200
@@ -1,5 +1,4 @@
-# coding: utf-8
 # file generated by setuptools_scm
 # don't change, don't track in version control
-version = '0.14.0'
-version_tuple = (0, 14, 0)
+__version__ = version = '0.15.1'
+__version_tuple__ = version_tuple = (0, 15, 1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-barcode-0.14.0/barcode/writer.py 
new/python-barcode-0.15.1/barcode/writer.py
--- old/python-barcode-0.14.0/barcode/writer.py 2022-05-17 12:05:57.000000000 
+0200
+++ new/python-barcode-0.15.1/barcode/writer.py 2023-07-06 00:56:49.000000000 
+0200
@@ -80,8 +80,12 @@
     """
 
     def __init__(
-        self, initialize=None, paint_module=None, paint_text=None, finish=None
-    ):
+        self,
+        initialize=None,
+        paint_module=None,
+        paint_text=None,
+        finish=None,
+    ) -> None:
         self._callbacks = {
             "initialize": initialize,
             "paint_module": paint_module,
@@ -101,6 +105,8 @@
         self.text_line_distance = 1
         self.center_text = True
         self.guard_height_factor = 1.1
+        self.margin_top = 1
+        self.margin_bottom = 1
 
     def calculate_size(self, modules_per_line, number_of_lines):
         """Calculates the size of the barcode in pixel.
@@ -115,7 +121,9 @@
         :rtype: Tuple
         """
         width = 2 * self.quiet_zone + modules_per_line * self.module_width
-        height = 2.0 + self.module_height * number_of_lines
+        height = (
+            self.margin_bottom + self.margin_top + self.module_height * 
number_of_lines
+        )
         number_of_text_lines = len(self.text.splitlines())
         if self.font_size and self.text:
             height += (
@@ -204,7 +212,7 @@
         """
         if self._callbacks["initialize"] is not None:
             self._callbacks["initialize"](code)
-        ypos = 1.0
+        ypos = self.margin_top
         base_height = self.module_height
         for cc, line in enumerate(code):
             # Left quiet zone is x startposition
@@ -257,11 +265,7 @@
             if not text["start"]:
                 # If we don't have any start value, print the entire ean
                 ypos += self.text_distance
-                if self.center_text:
-                    # better center position for text
-                    xpos = bxs + ((bxe - bxs) / 2.0)
-                else:
-                    xpos = bxs
+                xpos = bxs + (bxe - bxs) / 2.0 if self.center_text else bxs
                 self._callbacks["paint_text"](xpos, ypos)
             else:
                 # Else, divide the ean into blocks and print each block
@@ -271,7 +275,7 @@
                 # Calculates the position of the text by getting the difference
                 # between a guard end and the next start
                 text["start"].pop(0)
-                for (s, e) in zip(text["start"], text["end"]):
+                for s, e in zip(text["start"], text["end"]):
                     text["xpos"].append(e + (s - e) / 2)
 
                 # The last text block is always put after the last guard end
@@ -283,7 +287,7 @@
                 ypos += pt2mm(self.font_size)
 
                 blocks = self.text
-                for (text_, xpos) in zip(blocks, text["xpos"]):
+                for text_, xpos in zip(blocks, text["xpos"]):
                     self.text = text_
                     self._callbacks["paint_text"](xpos, ypos)
 
@@ -291,7 +295,7 @@
 
 
 class SVGWriter(BaseWriter):
-    def __init__(self):
+    def __init__(self) -> None:
         BaseWriter.__init__(
             self, self._init, self._create_module, self._create_text, 
self._finish
         )
@@ -344,10 +348,7 @@
     def _create_text(self, xpos, ypos):
         # check option to override self.text with self.human (barcode as
         # human readable data, can be used to print own formats)
-        if self.human != "":
-            barcodetext = self.human
-        else:
-            barcodetext = self.text
+        barcodetext = self.human if self.human != "" else self.text
         for subtext in barcodetext.split("\n"):
             element = self._document.createElement("text")
             attributes = {
@@ -367,10 +368,10 @@
     def _finish(self):
         if self.compress:
             return self._document.toxml(encoding="UTF-8")
-        else:
-            return self._document.toprettyxml(
-                indent=4 * " ", newl=os.linesep, encoding="UTF-8"
-            )
+
+        return self._document.toprettyxml(
+            indent=4 * " ", newl=os.linesep, encoding="UTF-8"
+        )
 
     def save(self, filename, output):
         if self.compress:
@@ -396,12 +397,12 @@
     ImageWriter = None
 else:
 
-    class ImageWriter(BaseWriter):  # type: ignore
+    class ImageWriter(BaseWriter):  # type: ignore[no-redef]
         format: str
         mode: str
         dpi: int
 
-        def __init__(self, format="PNG", mode="RGB"):
+        def __init__(self, format="PNG", mode="RGB") -> None:
             """Initialise a new write instance.
 
             :params format: The file format for the generated image. This 
parameter can
@@ -428,7 +429,7 @@
             size = [
                 (mm2px(xpos, self.dpi), mm2px(ypos, self.dpi)),
                 (
-                    mm2px(xpos + width, self.dpi),
+                    mm2px(xpos + width, self.dpi) - 1,
                     mm2px(ypos + self.module_height, self.dpi),
                 ),
             ]
@@ -438,13 +439,13 @@
             font_size = int(mm2px(pt2mm(self.font_size), self.dpi))
             font = ImageFont.truetype(self.font_path, font_size)
             for subtext in self.text.split("\n"):
-                width, height = font.getsize(subtext)
-                # determine the maximum width of each line
                 pos = (
-                    mm2px(xpos, self.dpi) - width // 2,
-                    mm2px(ypos, self.dpi) - height,
+                    mm2px(xpos, self.dpi),
+                    mm2px(ypos, self.dpi),
+                )
+                self._draw.text(
+                    pos, subtext, font=font, fill=self.foreground, anchor="md"
                 )
-                self._draw.text(pos, subtext, font=font, fill=self.foreground)
                 ypos += pt2mm(self.font_size) / 2 + self.text_line_distance
 
         def _finish(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-barcode-0.14.0/docs/changelog.rst 
new/python-barcode-0.15.1/docs/changelog.rst
--- old/python-barcode-0.14.0/docs/changelog.rst        2022-05-17 
12:05:57.000000000 +0200
+++ new/python-barcode-0.15.1/docs/changelog.rst        2023-07-06 
00:56:49.000000000 +0200
@@ -1,9 +1,23 @@
 Changelog
 ---------
 
-v0.14.0
+v0.15.1
+~~~~~~~~~~
+
+* Add missing dependency to release script.
+
+v0.15.0
 ~~~~~~~~~~
 
+* **Breaking** Dropped support for Python 3.6.
+* Added support for Python 3.11.
+* Fixed compatibility with Pillow 10.0.
+* Updated ISBN to support newer allocated ranges.
+* Improved type hints.
+
+v0.14.0
+~~~~~~~
+
 * **Breaking**: The default dimensions have changed slightly. This is so that
   the results of generating a PNG and an SVG look more alike.
 * Previous versions included an empty text element for SVGs with no comment.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-barcode-0.14.0/docs/conf.py 
new/python-barcode-0.15.1/docs/conf.py
--- old/python-barcode-0.14.0/docs/conf.py      2022-05-17 12:05:57.000000000 
+0200
+++ new/python-barcode-0.15.1/docs/conf.py      2023-07-06 00:56:49.000000000 
+0200
@@ -1,3 +1,4 @@
+# noqa: INP001
 # Configuration file for the Sphinx documentation builder.
 #
 # This file only contains a selection of the most common options. For a full
@@ -8,9 +9,6 @@
 # add these directories to sys.path here. If the directory is relative to the
 # documentation root, use os.path.abspath to make it absolute, like shown here.
 #
-# import os
-# import sys
-# sys.path.insert(0, os.path.abspath('.'))
 import barcode
 
 # -- Project information -----------------------------------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-barcode-0.14.0/docs/getting-started.rst 
new/python-barcode-0.15.1/docs/getting-started.rst
--- old/python-barcode-0.14.0/docs/getting-started.rst  2022-05-17 
12:05:57.000000000 +0200
+++ new/python-barcode-0.15.1/docs/getting-started.rst  2023-07-06 
00:56:49.000000000 +0200
@@ -43,7 +43,7 @@
 
     # Write to a file-like object:
     rv = BytesIO()
-    EAN13(str("100000902922"), writer=SVGWriter()).write(rv)
+    EAN13("100000902922", writer=SVGWriter()).write(rv)
 
     # Or to an actual file:
     with open("somefile.svg", "wb") as f:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-barcode-0.14.0/docs/writers.rst 
new/python-barcode-0.15.1/docs/writers.rst
--- old/python-barcode-0.14.0/docs/writers.rst  2022-05-17 12:05:57.000000000 
+0200
+++ new/python-barcode-0.15.1/docs/writers.rst  2023-07-06 00:56:49.000000000 
+0200
@@ -32,6 +32,7 @@
 
 :font_size:
     Font size of the text under the barcode in pt as *integer*.
+    Font size zero suppresses text.
     Defaults to **10**.
 
 :text_distance:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-barcode-0.14.0/pyproject.toml 
new/python-barcode-0.15.1/pyproject.toml
--- old/python-barcode-0.14.0/pyproject.toml    1970-01-01 01:00:00.000000000 
+0100
+++ new/python-barcode-0.15.1/pyproject.toml    2023-07-06 00:56:49.000000000 
+0200
@@ -0,0 +1,45 @@
+[build-system]
+requires = ["setuptools>=45", "wheel", "setuptools_scm>=6.2"]
+
+[tool.setuptools_scm]
+write_to = "barcode/version.py"
+version_scheme = "post-release"
+
+[tool.black]
+target-version = ['py37']
+
+[tool.ruff]
+select = [
+    "F",
+    "E",
+    "W",
+    "I",
+    "N",
+    "UP",
+    "YTT",
+    "BLE",
+    "B",
+    "C4",
+    "ISC",
+    "ICN",
+    "G",
+    "INP",
+    "PIE",
+    "PYI",
+    "PT",
+    "Q",
+    "RSE",
+    "RET",
+    "SIM",
+    "TID",
+    "TCH",
+    "INT",
+    "ERA",
+    "PGH",
+    "PLE",
+    "RUF",
+]
+target-version = "py37"
+
+[tool.ruff.isort]
+force-single-line = true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-barcode-0.14.0/python_barcode.egg-info/PKG-INFO 
new/python-barcode-0.15.1/python_barcode.egg-info/PKG-INFO
--- old/python-barcode-0.14.0/python_barcode.egg-info/PKG-INFO  2022-05-17 
12:06:06.000000000 +0200
+++ new/python-barcode-0.15.1/python_barcode.egg-info/PKG-INFO  2023-07-06 
00:56:54.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: python-barcode
-Version: 0.14.0
+Version: 0.15.1
 Summary: Create standard barcodes with Python. No external modules needed. 
(optional Pillow support included).
 Home-page: https://github.com/WhyNotHugo/python-barcode
 Author: Hugo Osvaldo Barrera et al
@@ -13,10 +13,6 @@
           :target: https://github.com/WhyNotHugo/python-barcode/actions
           :alt: CI status
         
-        .. image:: 
https://codecov.io/gh/WhyNotHugo/python-barcode/branch/main/graph/badge.svg
-          :target: https://codecov.io/gh/WhyNotHugo/python-barcode
-          :alt: Build coverage
-        
         .. image:: https://readthedocs.org/projects/python-barcode/badge/
           :target: https://python-barcode.rtfd.org/
           :alt: documentation
@@ -38,7 +34,7 @@
         There are no external dependencies when generating SVG files.
         Pillow is required for generating images (e.g.: PNGs).
         
-        Support Python 3.6 to 3.10.
+        Support Python 3.7 to 3.11.
         
         .. image:: example-ean13.png
           :target: https://github.com/WhyNotHugo/python-barcode
@@ -62,11 +58,11 @@
 Classifier: Operating System :: OS Independent
 Classifier: Programming Language :: Python
 Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.6
 Classifier: Programming Language :: Python :: 3.7
 Classifier: Programming Language :: Python :: 3.8
 Classifier: Programming Language :: Python :: 3.9
 Classifier: Programming Language :: Python :: 3.10
+Classifier: Programming Language :: Python :: 3.11
 Classifier: Topic :: Multimedia :: Graphics
 Classifier: Topic :: Software Development :: Libraries :: Python Modules
 Provides-Extra: images
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-barcode-0.14.0/python_barcode.egg-info/SOURCES.txt 
new/python-barcode-0.15.1/python_barcode.egg-info/SOURCES.txt
--- old/python-barcode-0.14.0/python_barcode.egg-info/SOURCES.txt       
2022-05-17 12:06:06.000000000 +0200
+++ new/python-barcode-0.15.1/python_barcode.egg-info/SOURCES.txt       
2023-07-06 00:56:54.000000000 +0200
@@ -3,6 +3,7 @@
 LICENCE
 README.rst
 example-ean13.png
+pyproject.toml
 setup.cfg
 setup.py
 tox.ini
@@ -46,6 +47,7 @@
 python_barcode.egg-info/entry_points.txt
 python_barcode.egg-info/requires.txt
 python_barcode.egg-info/top_level.txt
+tests/__init__.py
 tests/test_builds.py
 tests/test_checksums.py
 tests/test_init.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-barcode-0.14.0/setup.cfg 
new/python-barcode-0.15.1/setup.cfg
--- old/python-barcode-0.14.0/setup.cfg 2022-05-17 12:06:06.000000000 +0200
+++ new/python-barcode-0.15.1/setup.cfg 2023-07-06 00:56:54.000000000 +0200
@@ -1,13 +1,3 @@
-[flake8]
-exclude = docs/conf.py
-extend-ignore = 
-       E203,  # Black-incompatible colon spacing.
-       W503,  # Line jump before binary operator.
-max-line-length = 88
-
-[isort]
-force_single_line = true
-
 [tool:pytest]
 addopts = 
        -vv
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-barcode-0.14.0/setup.py 
new/python-barcode-0.15.1/setup.py
--- old/python-barcode-0.14.0/setup.py  2022-05-17 12:05:57.000000000 +0200
+++ new/python-barcode-0.15.1/setup.py  2023-07-06 00:56:49.000000000 +0200
@@ -23,19 +23,15 @@
         "Operating System :: OS Independent",
         "Programming Language :: Python",
         "Programming Language :: Python :: 3",
-        "Programming Language :: Python :: 3.6",
         "Programming Language :: Python :: 3.7",
         "Programming Language :: Python :: 3.8",
         "Programming Language :: Python :: 3.9",
         "Programming Language :: Python :: 3.10",
+        "Programming Language :: Python :: 3.11",
         "Topic :: Multimedia :: Graphics",
         "Topic :: Software Development :: Libraries :: Python Modules",
     ],
     entry_points={"console_scripts": ["python-barcode = 
barcode.pybarcode:main"]},
-    use_scm_version={
-        "version_scheme": "post-release",
-        "write_to": "barcode/version.py",
-    },
     setup_requires=["setuptools_scm"],
     extras_require={"images": ["pillow"]},
     include_package_data=True,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-barcode-0.14.0/tests/test_checksums.py 
new/python-barcode-0.15.1/tests/test_checksums.py
--- old/python-barcode-0.14.0/tests/test_checksums.py   2022-05-17 
12:05:57.000000000 +0200
+++ new/python-barcode-0.15.1/tests/test_checksums.py   2023-07-06 
00:56:49.000000000 +0200
@@ -3,44 +3,44 @@
 
 def test_code39_checksum():
     code39 = get_barcode("code39", "Code39")
-    assert "CODE39W" == code39.get_fullcode()
+    assert code39.get_fullcode() == "CODE39W"
 
 
 def test_pzn_checksum():
     pzn = get_barcode("pzn", "103940")
-    assert "PZN-1039406" == pzn.get_fullcode()
+    assert pzn.get_fullcode() == "PZN-1039406"
 
 
 def test_ean13_checksum():
     ean = get_barcode("ean13", "400614457735")
-    assert "4006144577350" == ean.get_fullcode()
+    assert ean.get_fullcode() == "4006144577350"
 
 
 def test_ean8_checksum():
     ean = get_barcode("ean8", "6032299")
-    assert "60322999" == ean.get_fullcode()
+    assert ean.get_fullcode() == "60322999"
 
 
 def test_jan_checksum():
     jan = get_barcode("jan", "491400614457")
-    assert "4914006144575" == jan.get_fullcode()
+    assert jan.get_fullcode() == "4914006144575"
 
 
 def test_ean14_checksum():
     ean = get_barcode("ean14", "1234567891258")
-    assert "12345678912589" == ean.get_fullcode()
+    assert ean.get_fullcode() == "12345678912589"
 
 
 def test_isbn10_checksum():
     isbn = get_barcode("isbn10", "376926085")
-    assert "3769260856" == isbn.isbn10
+    assert isbn.isbn10 == "3769260856"
 
 
 def test_isbn13_checksum():
     isbn = get_barcode("isbn13", "978376926085")
-    assert "9783769260854" == isbn.get_fullcode()
+    assert isbn.get_fullcode() == "9783769260854"
 
 
 def test_gs1_128_checksum():
     gs1_128 = get_barcode("gs1_128", "00376401856400470087")
-    assert "00376401856400470087" == gs1_128.get_fullcode()
+    assert gs1_128.get_fullcode() == "00376401856400470087"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-barcode-0.14.0/tests/test_init.py 
new/python-barcode-0.15.1/tests/test_init.py
--- old/python-barcode-0.14.0/tests/test_init.py        2022-05-17 
12:05:57.000000000 +0200
+++ new/python-barcode-0.15.1/tests/test_init.py        2023-07-06 
00:56:49.000000000 +0200
@@ -39,4 +39,4 @@
     bio = BytesIO()
     barcode.generate("ean13", "123455559121112", output=bio)
     # XXX: File is not 100% deterministic; needs to be addressed at some point.
-    # assert len(bio.getvalue()) == 6127
+    # assert len(bio.getvalue()) == 6127  # noqa: ERA001
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-barcode-0.14.0/tox.ini 
new/python-barcode-0.15.1/tox.ini
--- old/python-barcode-0.14.0/tox.ini   2022-05-17 12:05:57.000000000 +0200
+++ new/python-barcode-0.15.1/tox.ini   2023-07-06 00:56:49.000000000 +0200
@@ -1,5 +1,5 @@
 [tox]
-envlist = {py36,py37,py38,py39,py310}{,-images}
+envlist = {py37,py38,py39,py310,py311}{,-images}
 skip_missing_interpreters = True
 
 [testenv]
@@ -9,8 +9,3 @@
   images: Pillow
 commands = pytest --cov barcode
 usedevelop = True
-
-[flake8]
-exclude=.tox,build,.eggs
-application-import-names=barcode,tests
-import-order-style=smarkets

Reply via email to