Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-ansi2html for 
openSUSE:Factory checked in at 2022-08-05 19:50:49
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-ansi2html (Old)
 and      /work/SRC/openSUSE:Factory/.python-ansi2html.new.1521 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-ansi2html"

Fri Aug  5 19:50:49 2022 rev:5 rq:992783 version:1.8.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-ansi2html/python-ansi2html.changes        
2022-04-27 21:42:25.477092365 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-ansi2html.new.1521/python-ansi2html.changes  
    2022-08-05 19:51:46.473575513 +0200
@@ -1,0 +2,15 @@
+Thu Aug  4 08:46:29 UTC 2022 - Otto Hollmann <otto.hollm...@suse.com>
+
+- Update to 1.8.0:
+  * Fix for ANSI color codes that include blank values (#178)
+  * style.py: Drop unused CSS class .bold (#161)
+  * Added py.typed file (#176)
+  * style.py: Get CSS class .inv_foreground in sync with .body_foreground 
(#160)
+  * Fix --input-encoding=<encoding> regression added in PR #143 + related 
tests (alternative to PR #162) (#172)
+  * Migrate from mock to unittest.mock of Python >=3.3 (fixes #169) (#171)
+  * Add ability to also recognize colons in ANSI escapes (#167)
+  * Fixes to respect bright colors in palette (#126)
+  * CHANGELOG.rst: Fix misleading 1.6.0 entry and missing 1.7.0 entries (#159)
+  * Add comments to reduce reader research time (#158)
+
+-------------------------------------------------------------------

Old:
----
  1.7.0.tar.gz

New:
----
  1.8.0.tar.gz

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

Other differences:
------------------
++++++ python-ansi2html.spec ++++++
--- /var/tmp/diff_new_pack.JsSNZ3/_old  2022-08-05 19:51:47.017576917 +0200
+++ /var/tmp/diff_new_pack.JsSNZ3/_new  2022-08-05 19:51:47.021576928 +0200
@@ -18,7 +18,7 @@
 
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 Name:           python-ansi2html
-Version:        1.7.0
+Version:        1.8.0
 Release:        0
 Summary:        Python module to convert text with ANSI color codes to HTML or 
LaTeX
 License:        LGPL-3.0-or-later

++++++ 1.7.0.tar.gz -> 1.8.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ansi2html-1.7.0/.github/workflows/release.yml 
new/ansi2html-1.8.0/.github/workflows/release.yml
--- old/ansi2html-1.7.0/.github/workflows/release.yml   2022-01-28 
12:02:38.000000000 +0100
+++ new/ansi2html-1.8.0/.github/workflows/release.yml   2022-07-07 
17:31:12.000000000 +0200
@@ -21,6 +21,16 @@
       uses: actions/setup-python@v2
       with:
         python-version: 3.8
+    - name: Install non-PyPI dependencies (Linux only)
+      if: runner.os == 'Linux'
+      run: |
+        set -x
+        sudo apt-get update
+        sudo apt-get install --yes --no-install-recommends -V \
+          docbook-xml \
+          docbook-xsl \
+          libxml2-utils \
+          xsltproc
     - name: Install tox
       run: >-
         python3 -m
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ansi2html-1.7.0/.github/workflows/tox.yml 
new/ansi2html-1.8.0/.github/workflows/tox.yml
--- old/ansi2html-1.7.0/.github/workflows/tox.yml       2022-01-28 
12:02:38.000000000 +0100
+++ new/ansi2html-1.8.0/.github/workflows/tox.yml       2022-07-07 
17:31:12.000000000 +0200
@@ -72,8 +72,19 @@
         uses: actions/setup-python@v2
         with:
           python-version: ${{ matrix.python-version }}
-      - name: Install dependencies
+      - name: Install non-PyPI dependencies (Linux only)
+        if: runner.os == 'Linux'
         run: |
+          set -x
+          sudo apt-get update
+          sudo apt-get install --yes --no-install-recommends -V \
+            docbook-xml \
+            docbook-xsl \
+            libxml2-utils \
+            xsltproc
+      - name: Install PyPI dependencies
+        run: |
+          set -x
           python -m pip install -U pip
           pip install tox coverage
       - name: Run tox -e ${{ matrix.tox_env }}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ansi2html-1.7.0/.pre-commit-config.yaml 
new/ansi2html-1.8.0/.pre-commit-config.yaml
--- old/ansi2html-1.7.0/.pre-commit-config.yaml 2022-01-28 12:02:38.000000000 
+0100
+++ new/ansi2html-1.8.0/.pre-commit-config.yaml 2022-07-07 17:31:12.000000000 
+0200
@@ -27,12 +27,12 @@
     hooks:
       - id: isort
   - repo: https://github.com/psf/black.git
-    rev: 21.12b0
+    rev: 22.6.0
     hooks:
       - id: black
         language_version: python3
   - repo: https://github.com/pre-commit/pre-commit-hooks.git
-    rev: v4.1.0
+    rev: v4.3.0
     hooks:
       - id: end-of-file-fixer
       - id: trailing-whitespace
@@ -54,11 +54,11 @@
           - flake8-pytest-style>=1.5.0
         language_version: python3
   - repo: https://github.com/pycqa/pylint
-    rev: v2.12.2
+    rev: v2.14.4
     hooks:
       - id: pylint
   - repo: https://github.com/pre-commit/mirrors-mypy
-    rev: v0.931
+    rev: v0.961
     hooks:
     - id: mypy
       # empty args needed in order to match mypy cli behavior
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ansi2html-1.7.0/.pylintrc 
new/ansi2html-1.8.0/.pylintrc
--- old/ansi2html-1.7.0/.pylintrc       2022-01-28 12:02:38.000000000 +0100
+++ new/ansi2html-1.8.0/.pylintrc       2022-07-07 17:31:12.000000000 +0200
@@ -13,7 +13,6 @@
     missing-class-docstring,
     missing-function-docstring,
     missing-module-docstring,
-    no-self-use,
     redefined-builtin,
     redefined-outer-name,
     too-few-public-methods,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ansi2html-1.7.0/CHANGELOG.rst 
new/ansi2html-1.8.0/CHANGELOG.rst
--- old/ansi2html-1.7.0/CHANGELOG.rst   2022-01-28 12:02:38.000000000 +0100
+++ new/ansi2html-1.8.0/CHANGELOG.rst   2022-07-07 17:31:12.000000000 +0200
@@ -1,3 +1,28 @@
+1.7.0
+-----
+
+Minor Changes
+^^^^^^^^^^^^^
+
+* Replace recommendation of using system packages with pip3 (`#129 
<https://github.com/pycontribs/ansi2html/pull/129>`_) @ssbarnea
+* Add truecolor support (`#155 
<https://github.com/pycontribs/ansi2html/pull/155>`_) @miltolstoy
+* Generate documentation with Sphinx and use Read the Docs (`#141 
<https://github.com/pycontribs/ansi2html/pull/141>`_) @tristanlatr
+* Adds support for OSC hyperlink sequences. (`#131 
<https://github.com/pycontribs/ansi2html/pull/131>`_) @hakonhagland
+
+Bugfixes
+^^^^^^^^
+
+* Add test coverage (`#148 
<https://github.com/pycontribs/ansi2html/pull/148>`_) @ziegenberg
+* Replace pkg_resources with importlib.metadata (`#144 
<https://github.com/pycontribs/ansi2html/pull/144>`_) @ziegenberg
+* fix including of CHANGELOG.rst (`#151 
<https://github.com/pycontribs/ansi2html/pull/151>`_) @ziegenberg
+* Update linting dependencies (`#147 
<https://github.com/pycontribs/ansi2html/pull/147>`_) @ziegenberg
+* Upgrade the build process (`#145 
<https://github.com/pycontribs/ansi2html/pull/145>`_) @ziegenberg
+* Add type hinting (`#143 
<https://github.com/pycontribs/ansi2html/pull/143>`_) @ziegenberg
+* Update CI badges in readme (`#142 
<https://github.com/pycontribs/ansi2html/pull/142>`_) @ssbarnea
+* Bump setuptools-scm version (`#138 
<https://github.com/pycontribs/ansi2html/pull/138>`_) @ssbarnea
+
+Kudos goes to: @hakonhagland, @miltolstoy, @pre-commit-ci, 
@pre-commit-ci[bot], @ssbarnea, @tristanlatr and @ziegenberg
+
 1.6.0
 -----
 
@@ -17,7 +42,7 @@
 Deprecations
 ^^^^^^^^^^^^
 
-* Officialy retire support for python <= 3.6 (`#112 
<https://github.com/pycontribs/ansi2html/pull/112>`__) @ssbarnea
+* Officially retire support for Python <=3.5 (`#112 
<https://github.com/pycontribs/ansi2html/pull/112>`__) @ssbarnea
 
 1.5.2
 -----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ansi2html-1.7.0/MANIFEST.in 
new/ansi2html-1.8.0/MANIFEST.in
--- old/ansi2html-1.7.0/MANIFEST.in     2022-01-28 12:02:38.000000000 +0100
+++ new/ansi2html-1.8.0/MANIFEST.in     2022-07-07 17:31:12.000000000 +0200
@@ -1,8 +1,8 @@
 include README.rst
 include LICENSE
-include Makefile
 include man/asciidoc.conf
 include man/ansi2html.1
 include man/ansi2html.1.txt
+include ansi2html/py.typed
 recursive-include tests *
 recursive-exclude tests *.pyc
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ansi2html-1.7.0/Makefile new/ansi2html-1.8.0/Makefile
--- old/ansi2html-1.7.0/Makefile        2022-01-28 12:02:38.000000000 +0100
+++ new/ansi2html-1.8.0/Makefile        1970-01-01 01:00:00.000000000 +0100
@@ -1,47 +0,0 @@
-# Copyright (C) 2013 Sebastian Pipping <sebast...@pipping.org>
-# Licensed under LGPL v3 or later
-
-DESTDIR = /
-SETUP_PY = ./setup.py
-
-A2X = a2x
-PYTHON = python
-RM = rm
-
-GENERATED_FILES = man/ansi2html.1
-
-_MANUAL_PACKAGE = ansi2html
-_MANUAL_TITLE = ansi2html Manual
-_MANUAL_VERSION = $(shell $(PYTHON) setup.py --version)
-
-
-all: $(GENERATED_FILES)
-       $(SETUP_PY) build
-
-check: $(GENERATED_FILES)
-       $(SETUP_PY) check
-       $(SETUP_PY) test
-
-clean:
-       $(SETUP_PY) clean
-       $(RM) -f $(GENERATED_FILES)
-
-dist: $(GENERATED_FILES)
-       $(SETUP_PY) sdist
-
-upload: $(GENERATED_FILES)
-       $(SETUP_PY) sdist upload --sign
-
-install: $(GENERATED_FILES)
-       $(SETUP_PY) install --root '$(DESTDIR)'
-
-man/ansi2html.1: man/ansi2html.1.txt man/asciidoc.conf Makefile setup.py
-       $(A2X) \
-               --conf-file=man/asciidoc.conf \
-               --attribute="manual_package=$(_MANUAL_PACKAGE)" \
-               --attribute="manual_title=$(_MANUAL_TITLE)" \
-               --attribute="manual_version=$(_MANUAL_VERSION)" \
-               --format=manpage -D man \
-               "$<"
-
-.PHONY: all check clean dist install upload
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ansi2html-1.7.0/ansi2html/converter.py 
new/ansi2html-1.8.0/ansi2html/converter.py
--- old/ansi2html-1.7.0/ansi2html/converter.py  2022-01-28 12:02:38.000000000 
+0100
+++ new/ansi2html-1.8.0/ansi2html/converter.py  2022-07-07 17:31:12.000000000 
+0200
@@ -20,6 +20,7 @@
 #  along with this program.  If not, see
 #  <http://www.gnu.org/licenses/>.
 
+import io
 import optparse
 import re
 import sys
@@ -325,7 +326,7 @@
             )
 
         self.vt100_box_codes_prog = re.compile("\033\\(([B0])")
-        self.ansi_codes_prog = re.compile("\033\\[" "([\\d;]*)" "([a-zA-z])")
+        self.ansi_codes_prog = re.compile("\033\\[([\\d;:]*)([a-zA-z])")
         self.url_matcher = re.compile(
             r"(((((https?|ftps?|gopher|telnet|nntp)://)|"
             r"(mailto:|news:))(%[0-9A-Fa-f]{2}|[-()_.!~*"
@@ -453,8 +454,15 @@
                 yield CursorMoveUp()
                 continue
 
+            while True:
+                param_len = len(params)
+                params = params.replace("::", ":")
+                params = params.replace(";;", ";")
+                if len(params) == param_len:
+                    break
+
             try:
-                params = list(map(int, params.split(";")))
+                params = [int(x) for x in re.split("[;:]", params)]
             except ValueError:
                 params = [ANSI_FULL_RESET]
 
@@ -626,7 +634,7 @@
         else:
             _template = _html_template
         all_styles = get_styles(self.dark_bg, self.line_wrap, self.scheme)
-        backgrounds = all_styles[:6]
+        backgrounds = all_styles[:5]
         used_styles = filter(
             lambda e: e.klass.lstrip(".") in attrs["styles"], all_styles
         )
@@ -786,6 +794,12 @@
         title=opts.output_title,
     )
 
+    if hasattr(sys.stdin, "detach") and not isinstance(
+        sys.stdin, io.StringIO
+    ):  # e.g. during tests
+        input_buffer = sys.stdin.detach()  # type: ignore
+        sys.stdin = io.TextIOWrapper(input_buffer, opts.input_encoding, 
"replace")
+
     def _print(output_unicode: str, end: str = "\n") -> None:
         if hasattr(sys.stdout, "buffer"):
             output_bytes = (output_unicode + end).encode(opts.output_encoding)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ansi2html-1.7.0/ansi2html/style.py 
new/ansi2html-1.8.0/ansi2html/style.py
--- old/ansi2html-1.7.0/ansi2html/style.py      2022-01-28 12:02:38.000000000 
+0100
+++ new/ansi2html-1.8.0/ansi2html/style.py      2022-07-07 17:31:12.000000000 
+0200
@@ -34,10 +34,18 @@
 
 
 def index(r: int, g: int, b: int) -> str:
+    """
+    Implements the 6x6x6 color cube location of 8bit mode described at
+    https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit
+    """
     return str(16 + (r * 36) + (g * 6) + b)
 
 
 def color_component(x: int) -> int:
+    """
+    Implements the 6x6x6 color cube values of 8bit mode described at
+    https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit
+    """
     if x == 0:
         return 0
     return 0x37 + (0x28 * x)
@@ -52,10 +60,18 @@
 
 
 def level(grey: int) -> str:
+    """
+    Implements 24 grey values of 8bit mode described at
+    https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit
+    """
     return "#%.2x%.2x%.2x" % (((grey * 10) + 8,) * 3)
 
 
 def index2(grey: int) -> str:
+    """
+    Implements 24 grey location of 8bit mode described at
+    https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit
+    """
     return str(232 + grey)
 
 
@@ -98,6 +114,7 @@
         "#00ffff",
         "#ffffff",
     ),
+    # Based on the "osx" palette in previous versions of ansi2html.
     "osx": (
         "#000000",
         "#c23621",
@@ -107,8 +124,54 @@
         "#d338d3",
         "#33bbc8",
         "#cbcccd",
-    )
-    * 2,
+        "#404040",
+        "#ff7661",
+        "#65fc64",
+        "#eded67",
+        "#896eff",
+        "#ff78ff",
+        "#73fbff",
+        "#ffffff",
+    ),
+    # Based on the "Basic" palette in macOS Terminal.
+    "osx-basic": (
+        "#000000",
+        "#800000",
+        "#008000",
+        "#808000",
+        "#000080",
+        "#800080",
+        "#008080",
+        "#808080",
+        "#666666",
+        "#e60000",
+        "#00d900",
+        "#e6e600",
+        "#0000ff",
+        "#e600e6",
+        "#00e6e6",
+        "#e6e6e6",
+    ),
+    # Based on the "Solid Colors" palette in macOS Terminal.
+    # The colors are brighter than osx-basic.
+    "osx-solid-colors": (
+        "#000000",
+        "#990000",
+        "#00a600",
+        "#999900",
+        "#0000b3",
+        "#b300b3",
+        "#00a6b3",
+        "#bfbfbf",
+        "#666666",
+        "#e60000",
+        "#00d900",
+        "#e6e600",
+        "#0000ff",
+        "#e600e6",
+        "#00e6e6",
+        "#e6e6e6",
+    ),
     # http://ethanschoonover.com/solarized
     "solarized": (
         "#262626",
@@ -178,7 +241,9 @@
 
 
 def get_styles(
-    dark_bg: bool = True, line_wrap: bool = True, scheme: str = "ansi2html"
+    dark_bg: bool = True,
+    line_wrap: bool = True,
+    scheme: str = "ansi2html",
 ) -> List[Rule]:
     css = [
         Rule(
@@ -189,13 +254,10 @@
         ),
         Rule(".body_foreground", color=("#000000", "#AAAAAA")[dark_bg]),
         Rule(".body_background", background_color=("#AAAAAA", 
"#000000")[dark_bg]),
-        Rule(
-            ".body_foreground > .bold,.bold > .body_foreground, 
body.body_foreground > pre > .bold",
-            color=("#000000", "#FFFFFF")[dark_bg],
-            font_weight=("bold", "normal")[dark_bg],
-        ),
-        Rule(".inv_foreground", color=("#000000", "#FFFFFF")[not dark_bg]),
+        Rule(".inv_foreground", color=("#000000", "#AAAAAA")[not dark_bg]),
         Rule(".inv_background", background_color=("#AAAAAA", "#000000")[not 
dark_bg]),
+        # These effects are "SGR (Select Graphic Rendition) parameters"
+        # 
https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_(Select_Graphic_Rendition)_parameters
         Rule(".ansi1", font_weight="bold"),
         Rule(".ansi2", font_weight="lighter"),
         Rule(".ansi3", font_style="italic"),
@@ -206,27 +268,40 @@
         Rule(".ansi9", text_decoration="line-through"),
     ]
 
-    # set palette
-    pal = SCHEME[scheme]
+    try:
+        pal = SCHEME[scheme]
+    except KeyError as e:
+        raise ValueError(f"Unsupported color scheme {scheme!r}") from e
+
+    if len(pal) < 16:
+        raise Exception(
+            f"Color scheme {scheme!r} specifies fewer than 16 colors. 16 
colors are required."
+        )
+
+    # This is 8x2 palette of 3/4-bit color mode described at
+    # https://en.wikipedia.org/wiki/ANSI_escape_code#3-bit_and_4-bit
+    # .ansi{30..37} is foreground
+    # .ansi{40..47} is background
     for _index in range(8):
         css.append(Rule(".ansi3%s" % _index, color=pal[_index]))
         css.append(Rule(".inv3%s" % _index, background_color=pal[_index]))
     for _index in range(8):
         css.append(Rule(".ansi4%s" % _index, background_color=pal[_index]))
         css.append(Rule(".inv4%s" % _index, color=pal[_index]))
+
+    # This is the 8x2 bright(!) palette of 4-bit color mode described at
+    # https://en.wikipedia.org/wiki/ANSI_escape_code#3-bit_and_4-bit
+    # .ansi{90..97} is foreground
+    # .ansi{100..107} is background
     for _index in range(8):
-        css.append(Rule(".ansi9%s" % _index, color=intensify(pal[_index], 
dark_bg)))
-        css.append(
-            Rule(".inv9%s" % _index, background_color=intensify(pal[_index], 
dark_bg))
-        )
+        css.append(Rule(".ansi9%s" % _index, color=pal[_index + 8]))
+        css.append(Rule(".inv9%s" % _index, background_color=pal[_index + 8]))
     for _index in range(8):
-        css.append(
-            Rule(".ansi10%s" % _index, background_color=intensify(pal[_index], 
dark_bg))
-        )
-        css.append(Rule(".inv10%s" % _index, color=intensify(pal[_index], 
dark_bg)))
+        css.append(Rule(".ansi10%s" % _index, background_color=pal[_index + 
8]))
+        css.append(Rule(".inv10%s" % _index, color=pal[_index + 8]))
 
-    # set palette colors in 256 color encoding
-    pal = SCHEME[scheme]
+    # This is the first 16 palette slots of 8-bit color mode described at
+    # https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit
     for _index in range(len(pal)):
         css.append(Rule(".ansi38-%s" % _index, color=pal[_index]))
         css.append(Rule(".inv38-%s" % _index, background_color=pal[_index]))
@@ -236,6 +311,10 @@
 
     # css.append("/* Define the explicit color codes (obnoxious) */\n\n")
 
+    # This is the 6x6x6 color cube of 8-bit mode described at
+    # https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit
+    # .ansi38-{16..231} is foreground
+    # .ansi48-{16..231} is background
     for green in range(0, 6):
         for red in range(0, 6):
             for blue in range(0, 6):
@@ -264,6 +343,10 @@
                     )
                 )
 
+    # This is the 24 shades of grey of 8-bit mode described at
+    # https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit
+    # .ansi38-{232..255} is foreground
+    # .ansi48-{232..255} is background
     for grey in range(0, 24):
         css.append(Rule(".ansi38-%s" % index2(grey), color=level(grey)))
         css.append(Rule(".inv38-%s" % index2(grey), background=level(grey)))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ansi2html-1.7.0/tests/ansicolor.html 
new/ansi2html-1.8.0/tests/ansicolor.html
--- old/ansi2html-1.7.0/tests/ansicolor.html    2022-01-28 12:02:38.000000000 
+0100
+++ new/ansi2html-1.8.0/tests/ansicolor.html    2022-07-07 17:31:12.000000000 
+0200
@@ -7,7 +7,6 @@
 .ansi2html-content { display: inline; white-space: pre-wrap; word-wrap: 
break-word; }
 .body_foreground { color: #AAAAAA; }
 .body_background { background-color: #000000; }
-.body_foreground > .bold,.bold > .body_foreground, body.body_foreground > pre 
> .bold { color: #FFFFFF; font-weight: normal; }
 .inv_foreground { color: #000000; }
 .inv_background { background-color: #AAAAAA; }
 .ansi1 { font-weight: bold; }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ansi2html-1.7.0/tests/ansicolor_eix.html 
new/ansi2html-1.8.0/tests/ansicolor_eix.html
--- old/ansi2html-1.7.0/tests/ansicolor_eix.html        2022-01-28 
12:02:38.000000000 +0100
+++ new/ansi2html-1.8.0/tests/ansicolor_eix.html        2022-07-07 
17:31:12.000000000 +0200
@@ -7,7 +7,6 @@
 .ansi2html-content { display: inline; white-space: pre-wrap; word-wrap: 
break-word; }
 .body_foreground { color: #AAAAAA; }
 .body_background { background-color: #000000; }
-.body_foreground > .bold,.bold > .body_foreground, body.body_foreground > pre 
> .bold { color: #FFFFFF; font-weight: normal; }
 .inv_foreground { color: #000000; }
 .inv_background { background-color: #AAAAAA; }
 .ansi1 { font-weight: bold; }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ansi2html-1.7.0/tests/produce_headers.txt 
new/ansi2html-1.8.0/tests/produce_headers.txt
--- old/ansi2html-1.7.0/tests/produce_headers.txt       2022-01-28 
12:02:38.000000000 +0100
+++ new/ansi2html-1.8.0/tests/produce_headers.txt       2022-07-07 
17:31:12.000000000 +0200
@@ -2,7 +2,6 @@
 .ansi2html-content { display: inline; white-space: pre-wrap; word-wrap: 
break-word; }
 .body_foreground { color: #AAAAAA; }
 .body_background { background-color: #000000; }
-.body_foreground > .bold,.bold > .body_foreground, body.body_foreground > pre 
> .bold { color: #FFFFFF; font-weight: normal; }
 .inv_foreground { color: #000000; }
 .inv_background { background-color: #AAAAAA; }
 .ansi1 { font-weight: bold; }
@@ -45,36 +44,36 @@
 .inv46 { color: #00aaaa; }
 .ansi47 { background-color: #F5F1DE; }
 .inv47 { color: #F5F1DE; }
-.ansi90 { color: #404356; }
-.inv90 { background-color: #404356; }
-.ansi91 { color: #ea4040; }
-.inv91 { background-color: #ea4040; }
-.ansi92 { color: #40ea40; }
-.inv92 { background-color: #40ea40; }
-.ansi93 { color: #ea9540; }
-.inv93 { background-color: #ea9540; }
-.ansi94 { color: #4040ea; }
-.inv94 { background-color: #4040ea; }
-.ansi95 { color: #ff90e8; }
-.inv95 { background-color: #ff90e8; }
-.ansi96 { color: #40eaea; }
-.inv96 { background-color: #40eaea; }
+.ansi90 { color: #7f7f7f; }
+.inv90 { background-color: #7f7f7f; }
+.ansi91 { color: #ff0000; }
+.inv91 { background-color: #ff0000; }
+.ansi92 { color: #00ff00; }
+.inv92 { background-color: #00ff00; }
+.ansi93 { color: #ffff00; }
+.inv93 { background-color: #ffff00; }
+.ansi94 { color: #5c5cff; }
+.inv94 { background-color: #5c5cff; }
+.ansi95 { color: #ff00ff; }
+.inv95 { background-color: #ff00ff; }
+.ansi96 { color: #00ffff; }
+.inv96 { background-color: #00ffff; }
 .ansi97 { color: #ffffff; }
 .inv97 { background-color: #ffffff; }
-.ansi100 { background-color: #404356; }
-.inv100 { color: #404356; }
-.ansi101 { background-color: #ea4040; }
-.inv101 { color: #ea4040; }
-.ansi102 { background-color: #40ea40; }
-.inv102 { color: #40ea40; }
-.ansi103 { background-color: #ea9540; }
-.inv103 { color: #ea9540; }
-.ansi104 { background-color: #4040ea; }
-.inv104 { color: #4040ea; }
-.ansi105 { background-color: #ff90e8; }
-.inv105 { color: #ff90e8; }
-.ansi106 { background-color: #40eaea; }
-.inv106 { color: #40eaea; }
+.ansi100 { background-color: #7f7f7f; }
+.inv100 { color: #7f7f7f; }
+.ansi101 { background-color: #ff0000; }
+.inv101 { color: #ff0000; }
+.ansi102 { background-color: #00ff00; }
+.inv102 { color: #00ff00; }
+.ansi103 { background-color: #ffff00; }
+.inv103 { color: #ffff00; }
+.ansi104 { background-color: #5c5cff; }
+.inv104 { color: #5c5cff; }
+.ansi105 { background-color: #ff00ff; }
+.inv105 { color: #ff00ff; }
+.ansi106 { background-color: #00ffff; }
+.inv106 { color: #00ffff; }
 .ansi107 { background-color: #ffffff; }
 .inv107 { color: #ffffff; }
 .ansi38-0 { color: #000316; }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ansi2html-1.7.0/tests/test_ansi2html.py 
new/ansi2html-1.8.0/tests/test_ansi2html.py
--- old/ansi2html-1.7.0/tests/test_ansi2html.py 2022-01-28 12:02:38.000000000 
+0100
+++ new/ansi2html-1.8.0/tests/test_ansi2html.py 2022-07-07 17:31:12.000000000 
+0200
@@ -24,10 +24,9 @@
 import textwrap
 from io import StringIO
 from os.path import abspath, dirname, join
-from subprocess import run
+from subprocess import PIPE, Popen, run
 from typing import List
-
-from mock import patch
+from unittest.mock import patch
 
 from ansi2html import Ansi2HTMLConverter
 from ansi2html.converter import (
@@ -470,6 +469,35 @@
         result = run(["ansi2html", "--version"], check=True)
         assert result.returncode == 0
 
+    def test_command_input_output_encoding(self) -> None:
+        input_encoding = "utf-16"
+        input_bytes = "regular \033[31mred\033[0m 
regular".encode(input_encoding)
+        output_encoding = "utf-32"
+        output_bytes_expected = (
+            'regular <span style="color: #aa0000">red</span> regular\n'.encode(
+                output_encoding
+            )
+        )
+
+        with Popen(
+            [
+                "ansi2html",
+                "--inline",
+                f"--input-encoding={input_encoding}",
+                f"--output-encoding={output_encoding}",
+            ],
+            stdin=PIPE,
+            stdout=PIPE,
+        ) as process:
+            assert process.stdin  # for mypy
+            assert process.stdout  # for mypy
+            process.stdin.write(input_bytes)
+            process.stdin.close()
+            stdout_bytes_actual = process.stdout.read()
+
+        assert stdout_bytes_actual == output_bytes_expected
+        assert process.returncode == 0
+
     def test_command_module(self) -> None:
         result = run(["python3", "-m", "ansi2html", "--version"], check=True)
         assert result.returncode == 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ansi2html-1.7.0/tox.ini new/ansi2html-1.8.0/tox.ini
--- old/ansi2html-1.7.0/tox.ini 2022-01-28 12:02:38.000000000 +0100
+++ new/ansi2html-1.8.0/tox.ini 2022-07-07 17:31:12.000000000 +0200
@@ -13,7 +13,6 @@
     # PYTHONWARNINGS=error
     COVERAGE_FILE = {env:COVERAGE_FILE:{toxworkdir}/.coverage.{envname}}
 deps =
-    mock
     pytest
     pytest-cov
 sitepackages = False
@@ -38,14 +37,23 @@
 # don't install molecule itself in this env
 skip_install = true
 deps =
+    asciidoc >= 10.1.4
     collective.checkdocs >= 0.2
     build >= 0.7.0
     pip >= 20.2.2
+    setuptools_scm >= 6.0.1
     toml >= 0.10.1
     twine >= 3.2.0  # pyup: ignore
 setenv =
 commands =
     rm -rfv {toxinidir}/dist/
+    sh -c 'a2x \
+      --conf-file=man/asciidoc.conf \
+      --attribute="manual_package=ansi2html" \
+      --attribute="manual_title=ansi2html Manual" \
+      --attribute="manual_version=$(python3 -m setuptools_scm)" \
+      --format=manpage -D man \
+      man/ansi2html.1.txt'
     python -m build \
       --outdir {toxinidir}/dist/ \
       {toxinidir}

Reply via email to