Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-pingparsing for 
openSUSE:Factory checked in at 2021-10-26 20:13:46
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pingparsing (Old)
 and      /work/SRC/openSUSE:Factory/.python-pingparsing.new.1890 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-pingparsing"

Tue Oct 26 20:13:46 2021 rev:11 rq:927365 version:1.4.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-pingparsing/python-pingparsing.changes    
2021-05-18 18:27:11.474767686 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-pingparsing.new.1890/python-pingparsing.changes
  2021-10-26 20:14:27.630034108 +0200
@@ -1,0 +2,13 @@
+Mon Oct 25 19:39:25 UTC 2021 - Martin Hauke <[email protected]>
+
+- Update to version 1.4.0
+  * Drop support for Python 3.5
+  * Add support for pyparsing v3
+
+-------------------------------------------------------------------
+Sat Jun  5 13:12:50 UTC 2021 - Martin Hauke <[email protected]>
+
+- Update to version 1.3.2
+  * Fix parsing when ping results with pipe field.
+
+-------------------------------------------------------------------

Old:
----
  pingparsing-1.3.1.tar.gz

New:
----
  pingparsing-1.4.0.tar.gz

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

Other differences:
------------------
++++++ python-pingparsing.spec ++++++
--- /var/tmp/diff_new_pack.enVS8a/_old  2021-10-26 20:14:28.114034363 +0200
+++ /var/tmp/diff_new_pack.enVS8a/_new  2021-10-26 20:14:28.118034366 +0200
@@ -19,7 +19,7 @@
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 %define skip_python2 1
 Name:           python-pingparsing
-Version:        1.3.1
+Version:        1.4.0
 Release:        0
 Summary:        CLI-tool/Python-library for parsing ping command output
 License:        MIT

++++++ pingparsing-1.3.1.tar.gz -> pingparsing-1.4.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/pingparsing-1.3.1/.github/workflows/codeql-analysis.yml 
new/pingparsing-1.4.0/.github/workflows/codeql-analysis.yml
--- old/pingparsing-1.3.1/.github/workflows/codeql-analysis.yml 1970-01-01 
01:00:00.000000000 +0100
+++ new/pingparsing-1.4.0/.github/workflows/codeql-analysis.yml 2021-10-24 
17:08:57.000000000 +0200
@@ -0,0 +1,36 @@
+name: "CodeQL"
+
+on:
+  push:
+    branches: [ master ]
+  pull_request:
+    # The branches below must be a subset of the branches above
+    branches: [ master ]
+  schedule:
+    - cron: '24 8 * * 6'
+
+jobs:
+  analyze:
+    name: Analyze
+    runs-on: ubuntu-latest
+    permissions:
+      actions: read
+      contents: read
+      security-events: write
+
+    strategy:
+      fail-fast: false
+      matrix:
+        language: [ 'python' ]
+
+    steps:
+    - name: Checkout repository
+      uses: actions/checkout@v2
+
+    - name: Initialize CodeQL
+      uses: github/codeql-action/init@v1
+      with:
+        languages: ${{ matrix.language }}
+
+    - name: Perform CodeQL Analysis
+      uses: github/codeql-action/analyze@v1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/pingparsing-1.3.1/.github/workflows/lint_and_test.yml 
new/pingparsing-1.4.0/.github/workflows/lint_and_test.yml
--- old/pingparsing-1.3.1/.github/workflows/lint_and_test.yml   1970-01-01 
01:00:00.000000000 +0100
+++ new/pingparsing-1.4.0/.github/workflows/lint_and_test.yml   2021-10-24 
17:08:57.000000000 +0200
@@ -0,0 +1,97 @@
+name: Lint and Test
+
+on: [push, pull_request]
+
+jobs:
+  lint:
+    runs-on: ${{ matrix.os }}
+    strategy:
+      matrix:
+        python-version: ['3.8']
+        os: [ubuntu-latest]
+    timeout-minutes: 20
+
+    steps:
+      - uses: actions/checkout@v2
+
+      - name: Setup Python ${{ matrix.python-version }}
+        uses: actions/setup-python@v2
+        with:
+          python-version: ${{ matrix.python-version }}
+
+      - name: Install pip
+        run: python -m pip install --upgrade --disable-pip-version-check 
"pip>=21.1"
+
+      - name: Get pip cache dir
+        id: pip-cache
+        run: echo "::set-output name=dir::$(pip cache dir)"
+
+      - name: Cache pip
+        id: cache-pip
+        uses: actions/cache@v2
+        with:
+          path: |
+            ${{ steps.pip-cache.outputs.dir }}
+            ./.tox
+          key: ${{ matrix.os }}-${{ matrix.python-version }}-pip-${{ 
hashFiles('**/requirements.txt') }}
+          restore-keys: |
+            ${{ matrix.os }}-${{ matrix.python-version }}-pip-
+
+      - name: Install dependencies
+        run: make setup-ci
+
+      - name: Lint
+        run: make check
+
+  unit-test:
+    runs-on: ${{ matrix.os }}
+    strategy:
+      fail-fast: false
+      matrix:
+        python-version: ["3.6", "3.7", "3.8", "3.9", "3.10", pypy3]
+        os: [ubuntu-latest, macos-latest, windows-latest]
+        exclude:
+          - os: windows-latest
+            python-version: "3.6"
+    timeout-minutes: 20
+
+    steps:
+      - uses: actions/checkout@v2
+
+      - name: Setup Python ${{ matrix.python-version }}
+        uses: actions/setup-python@v2
+        with:
+          python-version: ${{ matrix.python-version }}
+
+      - name: Install pip
+        run: python -m pip install --upgrade --disable-pip-version-check 
"pip>=21.1"
+
+      - name: Get pip cache dir
+        id: pip-cache
+        run: echo "::set-output name=dir::$(pip cache dir)"
+
+      - name: Cache pip
+        uses: actions/cache@v2
+        with:
+          path: |
+            ${{ steps.pip-cache.outputs.dir }}
+            ./.tox
+          key: ${{ matrix.os }}-${{ matrix.python-version }}-pip-${{ 
hashFiles('**/requirements.txt') }}
+          restore-keys: |
+            ${{ matrix.os }}-${{ matrix.python-version }}-pip-
+
+      - name: Install dependencies
+        run: make setup-ci
+
+      - name: Run tox
+        run: tox -e cov -- --discord-verbose=0
+        env:
+          PYTEST_DISCORD_WEBHOOK: ${{ secrets.PYTEST_DISCORD_WEBHOOK }}
+
+      - name: Upload coverage report
+        run: |
+          python -m pip install --upgrade --disable-pip-version-check coveralls
+          coveralls --service=github
+        env:
+          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+        if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.8'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pingparsing-1.3.1/.github/workflows/tests.yml 
new/pingparsing-1.4.0/.github/workflows/tests.yml
--- old/pingparsing-1.3.1/.github/workflows/tests.yml   2021-05-05 
09:44:57.000000000 +0200
+++ new/pingparsing-1.4.0/.github/workflows/tests.yml   1970-01-01 
01:00:00.000000000 +0100
@@ -1,52 +0,0 @@
-name: Tests
-
-on: [push, pull_request]
-
-jobs:
-  build:
-    runs-on: ${{ matrix.os }}
-    strategy:
-      fail-fast: false
-      matrix:
-        python-version: [3.5, 3.6, 3.7, 3.8, 3.9, 3.10.0-beta.1, pypy3]
-        os: [ubuntu-latest, macos-latest, windows-latest]
-
-    steps:
-      - uses: actions/checkout@v2
-
-      - name: Set up Python ${{ matrix.python-version }}
-        uses: actions/setup-python@v2
-        with:
-          python-version: ${{ matrix.python-version }}
-
-      - name: Get pip cache dir
-        id: pip-cache
-        run: |
-          python -m pip install --upgrade "pip>=20.1"
-          echo "::set-output name=dir::$(pip cache dir)"
-
-      - name: Cache pip
-        uses: actions/cache@v2
-        with:
-          path: ${{ steps.pip-cache.outputs.dir }}
-          key: ${{ matrix.os }}-${{ matrix.python-version }}-pip-${{ 
hashFiles('**/requirements.txt') }}
-          restore-keys: |
-            ${{ matrix.os }}-${{ matrix.python-version }}-pip-
-
-      - name: Install dependencies
-        run: |
-          python -m pip install --upgrade tox
-
-      - name: Run tox
-        run: |
-          tox -e cov -- --discord-verbose=0
-        env:
-          PYTEST_DISCORD_WEBHOOK: ${{ secrets.PYTEST_DISCORD_WEBHOOK }}
-
-      - name: Coverage report
-        run: |
-          python -m pip install --upgrade coveralls
-          coveralls --service=github
-        env:
-          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-        if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.8'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pingparsing-1.3.1/Makefile 
new/pingparsing-1.4.0/Makefile
--- old/pingparsing-1.3.1/Makefile      2021-05-05 09:44:57.000000000 +0200
+++ new/pingparsing-1.4.0/Makefile      2021-10-24 17:08:57.000000000 +0200
@@ -1,24 +1,37 @@
+AUTHOR := thombashi
+PACKAGE := pingparsing
+BUILD_WORK_DIR := _work
+PKG_BUILD_DIR := $(BUILD_WORK_DIR)/$(PACKAGE)
 PYTHON := python3
 
 
 .PHONY: build
-build:
-       @make clean
-       @tox -e build
+build: clean
+       @$(PYTHON) -m tox -e build
        ls -lh dist/*
 
+.PHONY: build-remote
+build-remote: clean
+       @mkdir -p $(BUILD_WORK_DIR)
+       @cd $(BUILD_WORK_DIR) && \
+               git clone https://github.com/$(AUTHOR)/$(PACKAGE).git --depth 1 
&& \
+               cd $(PACKAGE) && \
+               $(PYTHON) -m tox -e build
+       ls -lh $(PKG_BUILD_DIR)/dist/*
+
 .PHONY: check
 check:
-       @-tox -e lint
+       @$(PYTHON) -m tox -e lint
 
 .PHONY: clean
 clean:
-       @tox -e clean
+       @rm -rf $(BUILD_WORK_DIR)
+       @$(PYTHON) -m tox -e clean
 
 .PHONY: docs
 docs:
        @cd docs && ./update_command_help.py
-       @tox -e docs
+       @$(PYTHON) -m tox -e docs
 
 .PHONY: idocs
 idocs:
@@ -27,19 +40,23 @@
 
 .PHONY: fmt
 fmt:
-       @tox -e fmt
+       @$(PYTHON) -m tox -e fmt
 
 .PHONY: readme
 readme:
        @cd docs && ./update_command_help.py
-       @tox -e readme
+       @$(PYTHON) -m tox -e readme
 
 .PHONY: release
 release:
-       @$(PYTHON) setup.py release --sign --search-dir pingparsing
+       @cd $(PKG_BUILD_DIR) && $(PYTHON) setup.py release --sign --search-dir 
$(PACKAGE)
        @make clean
 
+.PHONY: setup-ci
+setup-ci:
+       @$(PYTHON) -m pip install -q --disable-pip-version-check --upgrade tox
+
 .PHONY: setup
-setup:
-       @$(PYTHON) -m pip install -q --disable-pip-version-check --upgrade -e 
.[test] releasecmd tox
+setup: setup-ci
+       @$(PYTHON) -m pip install -q --disable-pip-version-check --upgrade -e 
.[test] releasecmd
        @$(PYTHON) -m pip check
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pingparsing-1.3.1/README.rst 
new/pingparsing-1.4.0/README.rst
--- old/pingparsing-1.3.1/README.rst    2021-05-05 09:44:57.000000000 +0200
+++ new/pingparsing-1.4.0/README.rst    2021-10-24 17:08:57.000000000 +0200
@@ -22,9 +22,9 @@
     :target: 
https://github.com/thombashi/pingparsing/actions?query=workflow%3ATests
     :alt: Linux/macOS/Windows CI status
 
-.. image:: 
https://img.shields.io/github/stars/thombashi/pingparsing.svg?style=social&label=Star
-    :target: https://github.com/thombashi/pingparsing
-    :alt: GitHub stars
+.. image:: 
https://github.com/thombashi/pingparsing/actions/workflows/codeql-analysis.yml/badge.svg
+    :target: 
https://github.com/thombashi/pingparsing/actions/workflows/codeql-analysis.yml
+    :alt: CodeQL
 
 CLI Usage
 ====================
@@ -485,7 +485,7 @@
 
 Dependencies
 ============
-- Python 3.5+
+- Python 3.6+
 - `Python package dependencies (automatically installed) 
<https://github.com/thombashi/pingparsing/network/dependencies>`__
 
 Optional Dependencies
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pingparsing-1.3.1/docs/make_readme.py 
new/pingparsing-1.4.0/docs/make_readme.py
--- old/pingparsing-1.3.1/docs/make_readme.py   2021-05-05 09:44:57.000000000 
+0200
+++ new/pingparsing-1.4.0/docs/make_readme.py   2021-10-24 17:08:57.000000000 
+0200
@@ -29,7 +29,7 @@
         PROJECT_NAME,
         OUTPUT_DIR,
         is_make_toc=True,
-        project_url="https://github.com/thombashi/{}".format(PROJECT_NAME),
+        project_url=f"https://github.com/thombashi/{PROJECT_NAME}";,
     )
     maker.examples_dir_name = "usage"
 
@@ -45,7 +45,7 @@
 
     maker.set_indent_level(0)
     maker.write_chapter("Documentation")
-    maker.write_lines(["https://{:s}.rtfd.io/".format(PROJECT_NAME)])
+    maker.write_lines([f"https://{PROJECT_NAME:s}.rtfd.io/";])
 
     maker.write_file(maker.doc_page_root_dir_path.joinpath("sponsors.rst"))
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pingparsing-1.3.1/docs/pages/introduction/badges.txt 
new/pingparsing-1.4.0/docs/pages/introduction/badges.txt
--- old/pingparsing-1.3.1/docs/pages/introduction/badges.txt    2021-05-05 
09:44:57.000000000 +0200
+++ new/pingparsing-1.4.0/docs/pages/introduction/badges.txt    2021-10-24 
17:08:57.000000000 +0200
@@ -14,6 +14,6 @@
     :target: 
https://github.com/thombashi/pingparsing/actions?query=workflow%3ATests
     :alt: Linux/macOS/Windows CI status
 
-.. image:: 
https://img.shields.io/github/stars/thombashi/pingparsing.svg?style=social&label=Star
-    :target: https://github.com/thombashi/pingparsing
-    :alt: GitHub stars
+.. image:: 
https://github.com/thombashi/pingparsing/actions/workflows/codeql-analysis.yml/badge.svg
+    :target: 
https://github.com/thombashi/pingparsing/actions/workflows/codeql-analysis.yml
+    :alt: CodeQL
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/pingparsing-1.3.1/docs/pages/introduction/installation.rst 
new/pingparsing-1.4.0/docs/pages/introduction/installation.rst
--- old/pingparsing-1.3.1/docs/pages/introduction/installation.rst      
2021-05-05 09:44:57.000000000 +0200
+++ new/pingparsing-1.4.0/docs/pages/introduction/installation.rst      
2021-10-24 17:08:57.000000000 +0200
@@ -7,7 +7,7 @@
 
 Dependencies
 ============
-- Python 3.5+
+- Python 3.6+
 - `Python package dependencies (automatically installed) 
<https://github.com/thombashi/pingparsing/network/dependencies>`__
 
 Optional Dependencies
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pingparsing-1.3.1/examples/examplecommon.py 
new/pingparsing-1.4.0/examples/examplecommon.py
--- old/pingparsing-1.3.1/examples/examplecommon.py     2021-05-05 
09:44:57.000000000 +0200
+++ new/pingparsing-1.4.0/examples/examplecommon.py     2021-10-24 
17:08:57.000000000 +0200
@@ -9,22 +9,22 @@
 
 def print_ping_parser(ping_parser):
     print("# properties ---")
-    print("packet_transmit: {:d} packets".format(ping_parser.packet_transmit))
-    print("packet_receive: {:d} packets".format(ping_parser.packet_receive))
-    print("packet_loss_rate: {:.1f} %".format(ping_parser.packet_loss_rate))
-    print("packet_loss_count: {:d} 
packets".format(ping_parser.packet_loss_count))
+    print(f"packet_transmit: {ping_parser.packet_transmit:d} packets")
+    print(f"packet_receive: {ping_parser.packet_receive:d} packets")
+    print(f"packet_loss_rate: {ping_parser.packet_loss_rate:.1f} %")
+    print(f"packet_loss_count: {ping_parser.packet_loss_count:d} packets")
 
     if ping_parser.packet_duplicate_rate:
-        packet_duplicate_rate = "{:.1f} 
%".format(ping_parser.packet_duplicate_rate)
+        packet_duplicate_rate = f"{ping_parser.packet_duplicate_rate:.1f} %"
     else:
         packet_duplicate_rate = "NaN"
-    print("packet_duplicate_rate: {:s}".format(packet_duplicate_rate))
+    print(f"packet_duplicate_rate: {packet_duplicate_rate:s}")
 
     if ping_parser.packet_duplicate_count:
-        packet_duplicate_count = "{:d} 
packets".format(ping_parser.packet_duplicate_count)
+        packet_duplicate_count = f"{ping_parser.packet_duplicate_count:d} 
packets"
     else:
         packet_duplicate_count = "NaN"
-    print("packet_duplicate_count: {:s}".format(packet_duplicate_count))
+    print(f"packet_duplicate_count: {packet_duplicate_count:s}")
 
     print("rtt_min:", ping_parser.rtt_min)
     print("rtt_avg:", ping_parser.rtt_avg)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pingparsing-1.3.1/pingparsing/__main__.py 
new/pingparsing-1.4.0/pingparsing/__main__.py
--- old/pingparsing-1.3.1/pingparsing/__main__.py       2021-05-05 
09:44:57.000000000 +0200
+++ new/pingparsing-1.4.0/pingparsing/__main__.py       2021-10-24 
17:08:57.000000000 +0200
@@ -60,9 +60,7 @@
             """
         ),
     )
-    parser.add_argument(
-        "-V", "--version", action="version", version="%(prog)s 
{}".format(__version__)
-    )
+    parser.add_argument("-V", "--version", action="version", 
version=f"%(prog)s {__version__}")
 
     use_stdin, found_stdin_specifier = is_use_stdin()
     if not use_stdin or found_stdin_specifier:
@@ -321,7 +319,7 @@
     if isinstance(obj, TIMESTAMP_TYPES):
         return obj
 
-    raise TypeError("not supported type to convert: {}".format(type(obj)))
+    raise TypeError(f"not supported type to convert: {type(obj)}")
 
 
 def _serialize_datetime(obj):
@@ -331,7 +329,7 @@
     if isinstance(obj, TIMESTAMP_TYPES):
         return obj
 
-    raise TypeError("not supported type to convert: {}".format(type(obj)))
+    raise TypeError(f"not supported type to convert: {type(obj)}")
 
 
 timestamp_serialize_map = {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pingparsing-1.3.1/pingparsing/__version__.py 
new/pingparsing-1.4.0/pingparsing/__version__.py
--- old/pingparsing-1.3.1/pingparsing/__version__.py    2021-05-05 
09:44:57.000000000 +0200
+++ new/pingparsing-1.4.0/pingparsing/__version__.py    2021-10-24 
17:08:57.000000000 +0200
@@ -1,6 +1,6 @@
 __author__ = "Tsuyoshi Hombashi"
-__copyright__ = "Copyright 2016, {}".format(__author__)
+__copyright__ = f"Copyright 2016, {__author__}"
 __license__ = "MIT License"
-__version__ = "1.3.1"
+__version__ = "1.4.0"
 __maintainer__ = __author__
 __email__ = "[email protected]"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pingparsing-1.3.1/pingparsing/_cmd_maker.py 
new/pingparsing-1.4.0/pingparsing/_cmd_maker.py
--- old/pingparsing-1.3.1/pingparsing/_cmd_maker.py     2021-05-05 
09:44:57.000000000 +0200
+++ new/pingparsing-1.4.0/pingparsing/_cmd_maker.py     2021-10-24 
17:08:57.000000000 +0200
@@ -209,7 +209,7 @@
 
     def _get_destination_host(self, destination: str) -> str:
         if self._is_ipv6:
-            return "{:s}%{}".format(destination, self.interface)
+            return f"{destination:s}%{self.interface}"
 
         return destination
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pingparsing-1.3.1/pingparsing/_parser.py 
new/pingparsing-1.4.0/pingparsing/_parser.py
--- old/pingparsing-1.3.1/pingparsing/_parser.py        2021-05-05 
09:44:57.000000000 +0200
+++ new/pingparsing-1.4.0/pingparsing/_parser.py        2021-10-24 
17:08:57.000000000 +0200
@@ -32,14 +32,14 @@
 
 class PingParser(PingParserInterface):
 
-    _BYTES_PATTERN = r"\s*(?P<{key}>[0-9]+) 
bytes".format(key=IcmpReplyKey.BYTES)
+    _BYTES_PATTERN = fr"\s*(?P<{IcmpReplyKey.BYTES}>[0-9]+) bytes"
     _DEST_PATTERN = r"(?P<{key}>[a-zA-Z0-9:\-\.\(\)% ]+)".format(
         key=IcmpReplyKey.DESTINATION
     )  # host or ipv4/ipv6 addr
     _IPADDR_PATTERN = r"(\d{1,3}\.){3}\d{1,3}"
-    _ICMP_SEQ_PATTERN = 
r"\s*icmp_seq=(?P<{key}>\d+)".format(key=IcmpReplyKey.SEQUENCE_NO)
-    _TTL_PATTERN = r"\s*ttl=(?P<{key}>\d+)".format(key=IcmpReplyKey.TTL)
-    _TIME_PATTERN = 
r"\s*time[=<](?P<{key}>[0-9\.]+)".format(key=IcmpReplyKey.TIME)
+    _ICMP_SEQ_PATTERN = fr"\s*icmp_seq=(?P<{IcmpReplyKey.SEQUENCE_NO}>\d+)"
+    _TTL_PATTERN = fr"\s*ttl=(?P<{IcmpReplyKey.TTL}>\d+)"
+    _TIME_PATTERN = fr"\s*time[=<](?P<{IcmpReplyKey.TIME}>[0-9\.]+)"
 
     def __init__(self, timezone: Optional[tzinfo] = None) -> None:
         self.__timezone = timezone
@@ -82,7 +82,7 @@
                 continue
 
             results = match.groupdict()
-            reply = {}  # type: Dict[str, Union[str, bool, float, int, 
datetime]]
+            reply: Dict[str, Union[str, bool, float, int, datetime]] = {}
 
             if IcmpReplyKey.DESTINATION in results:
                 reply[IcmpReplyKey.DESTINATION] = 
results[IcmpReplyKey.DESTINATION]
@@ -118,7 +118,7 @@
         return icmp_reply_list
 
     def _preprocess_parse_stats(self, lines: Sequence[str]) -> Tuple[str, str, 
Sequence[str]]:
-        logger.debug("parsing as {:s} ping result 
format".format(self._parser_name))
+        logger.debug(f"parsing as {self._parser_name:s} ping result format")
 
         stats_headline_idx = self.__find_stats_headline_idx(
             lines, re.compile(self._stats_headline_pattern)
@@ -202,8 +202,8 @@
     def _parser_name(self) -> str:
         return "Linux"
 
-    _TIMESTAMP_PATTERN = 
r"(?P<{key}>\[[0-9\.]+\])".format(key=IcmpReplyKey.TIMESTAMP)
-    _NO_ANS_TIMESTAMP_PATTERN = 
r"(?P<{key}>\[[0-9\.]+\])".format(key=IcmpReplyKey.TIMESTAMP_NO_ANS)
+    _TIMESTAMP_PATTERN = fr"(?P<{IcmpReplyKey.TIMESTAMP}>\[[0-9\.]+\])"
+    _NO_ANS_TIMESTAMP_PATTERN = 
fr"(?P<{IcmpReplyKey.TIMESTAMP_NO_ANS}>\[[0-9\.]+\])"
 
     @property
     def _icmp_no_ans_pattern(self) -> str:
@@ -225,7 +225,7 @@
 
     @property
     def _stats_headline_pattern(self) -> str:
-        return r"--- {} ping statistics ---".format(self._DEST_PATTERN)
+        return fr"--- {self._DEST_PATTERN} ping statistics ---"
 
     @property
     def _is_support_packet_duplicate(self) -> bool:
@@ -276,7 +276,19 @@
             + pp.Word(pp.nums + ".")
             + pp.Word(pp.nums + "ms")
         )
-        parse_list = rtt_pattern.parseString(_to_unicode(rtt_line))
+        try:
+            parse_list = rtt_pattern.parseString(_to_unicode(rtt_line))
+        except pp.ParseException:
+            if not re.search(r"\s*pipe \d+", rtt_line):
+                raise ValueError
+
+            return PingStats(
+                destination=destination,
+                packet_transmit=packet_transmit,
+                packet_receive=packet_receive,
+                duplicates=duplicates,
+                icmp_replies=icmp_replies,
+            )
 
         return PingStats(
             destination=destination,
@@ -301,7 +313,7 @@
         return (
             " from "
             + self._DEST_PATTERN
-            + r":\s*bytes=(?P<{key}>[0-9]+)".format(key=IcmpReplyKey.BYTES)
+            + fr":\s*bytes=(?P<{IcmpReplyKey.BYTES}>[0-9]+)"
             + self._TIME_PATTERN
             + "ms"
             + self._TTL_PATTERN
@@ -309,7 +321,7 @@
 
     @property
     def _stats_headline_pattern(self) -> str:
-        return r"^Ping statistics for {}".format(self._DEST_PATTERN)
+        return fr"^Ping statistics for {self._DEST_PATTERN}"
 
     @property
     def _is_support_packet_duplicate(self) -> bool:
@@ -390,7 +402,7 @@
 
     @property
     def _stats_headline_pattern(self) -> str:
-        return r"--- {} ping statistics ---".format(self._DEST_PATTERN)
+        return fr"--- {self._DEST_PATTERN} ping statistics ---"
 
     @property
     def _is_support_packet_duplicate(self) -> bool:
@@ -468,7 +480,7 @@
             + r"\s+from "
             + self._DEST_PATTERN
             + ": "
-            + r"seq=(?P<{key}>\d+) ".format(key=IcmpReplyKey.SEQUENCE_NO)
+            + fr"seq=(?P<{IcmpReplyKey.SEQUENCE_NO}>\d+) "
             + self._TTL_PATTERN
             + self._TIME_PATTERN
         )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pingparsing-1.3.1/pingparsing/_pingparsing.py 
new/pingparsing-1.4.0/pingparsing/_pingparsing.py
--- old/pingparsing-1.3.1/pingparsing/_pingparsing.py   2021-05-05 
09:44:57.000000000 +0200
+++ new/pingparsing-1.4.0/pingparsing/_pingparsing.py   2021-10-24 
17:08:57.000000000 +0200
@@ -33,7 +33,7 @@
     """
 
     def __init__(self, timezone: Optional[tzinfo] = None) -> None:
-        self.__parser = NullPingParser()  # type: PingParser
+        self.__parser: PingParser = NullPingParser()
         self.__timezone = timezone
 
     @property
@@ -61,7 +61,7 @@
         else:
             ping_text = ping_message
 
-        logger.debug("parsing ping result: {}".format(ping_text))
+        logger.debug(f"parsing ping result: {ping_text}")
 
         self.__parser = NullPingParser()
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pingparsing-1.3.1/pingparsing/_pingtransmitter.py 
new/pingparsing-1.4.0/pingparsing/_pingtransmitter.py
--- old/pingparsing-1.3.1/pingparsing/_pingtransmitter.py       2021-05-05 
09:44:57.000000000 +0200
+++ new/pingparsing-1.4.0/pingparsing/_pingtransmitter.py       2021-10-24 
17:08:57.000000000 +0200
@@ -156,7 +156,7 @@
     @timeout.setter
     def timeout(self, value: TimeArg) -> None:
         if value is None:
-            self.__timeout = value  # type: Optional[hr.Time]
+            self.__timeout: Optional[hr.Time] = value
             return
 
         if isinstance(value, hr.Time):
@@ -220,12 +220,12 @@
 
     def __init__(self) -> None:
         self.__destination = ""
-        self.count = None  # type: Optional[int]
-        self.packet_size = None  # type: Optional[int]
-        self.ttl = None  # type: Optional[int]
-        self.ping_option = []  # type: PingAddOpts
+        self.count: Optional[int] = None
+        self.packet_size: Optional[int] = None
+        self.ttl: Optional[int] = None
+        self.ping_option: PingAddOpts = []
         self.is_quiet = False
-        self.interface = None  # type: Optional[str]
+        self.interface: Optional[str] = None
         self.auto_codepage = True
 
         self.timeout = None
@@ -267,7 +267,7 @@
             logger.debug(e)
             return False
 
-        logger.debug("IP address: version={}, 
address={}".format(network.version, self.destination))
+        logger.debug(f"IP address: version={network.version}, 
address={self.destination}")
 
         return network.version == 6
 
@@ -282,7 +282,7 @@
         try:
             count = Integer(self.count).convert()
         except TypeConversionError as e:
-            raise ValueError("count must be an integer: {}".format(e))
+            raise ValueError(f"count must be an integer: {e}")
 
         if count <= 0:
             raise ValueError("count must be greater than zero")
@@ -300,7 +300,7 @@
     def __make_ping_command(self) -> Command:
         from typing import Any  # noqa
 
-        maker_class = None  # type: Any
+        maker_class: Any = None
 
         if self.__is_linux():
             maker_class = LinuxPingCmdMaker
@@ -309,7 +309,7 @@
         elif self.__is_windows():
             maker_class = WindowsPingCmdMaker
         else:
-            raise RuntimeError("not supported platform: 
{}".format(platform.system()))
+            raise RuntimeError(f"not supported platform: {platform.system()}")
 
         return maker_class(
             count=self.count,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pingparsing-1.3.1/pingparsing/_stats.py 
new/pingparsing-1.4.0/pingparsing/_stats.py
--- old/pingparsing-1.3.1/pingparsing/_stats.py 2021-05-05 09:44:57.000000000 
+0200
+++ new/pingparsing-1.4.0/pingparsing/_stats.py 2021-10-24 17:08:57.000000000 
+0200
@@ -211,7 +211,7 @@
             }
         """
 
-        d = {
+        d: Dict[str, Union[str, int, float, IcmpReplies, None]] = {
             "destination": self.destination,
             "packet_transmit": self.packet_transmit,
             "packet_receive": self.packet_receive,
@@ -223,7 +223,7 @@
             "rtt_mdev": self.rtt_mdev,
             "packet_duplicate_count": self.packet_duplicate_count,
             "packet_duplicate_rate": self.packet_duplicate_rate,
-        }  # type: Dict[str, Union[str, int, float, IcmpReplies, None]]
+        }
         if include_icmp_replies:
             d["icmp_replies"] = self.icmp_replies
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pingparsing-1.3.1/pylama.ini 
new/pingparsing-1.4.0/pylama.ini
--- old/pingparsing-1.3.1/pylama.ini    2021-05-05 09:44:57.000000000 +0200
+++ new/pingparsing-1.4.0/pylama.ini    2021-10-24 17:08:57.000000000 +0200
@@ -1,6 +1,9 @@
 [pylama]
 skip = .eggs/*,.tox/*,*/.env/*,_sandbox/*,build/*,docs/conf.py
 
+[pylama:mccabe]
+complexity=15
+
 [pylama:pycodestyle]
 max_line_length = 100
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pingparsing-1.3.1/pyproject.toml 
new/pingparsing-1.4.0/pyproject.toml
--- old/pingparsing-1.3.1/pyproject.toml        2021-05-05 09:44:57.000000000 
+0200
+++ new/pingparsing-1.4.0/pyproject.toml        2021-10-24 17:08:57.000000000 
+0200
@@ -58,6 +58,16 @@
     'warnings.warn',
 ]
 
+[tool.mypy]
+ignore_missing_imports = true
+python_version = 3.6
+
+pretty = true
+show_error_codes = true
+show_error_context = true
+warn_unreachable = true
+warn_unused_configs = true
+
 [tool.pytest.ini_options]
 testpaths = [
     "test",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pingparsing-1.3.1/requirements/requirements.txt 
new/pingparsing-1.4.0/requirements/requirements.txt
--- old/pingparsing-1.3.1/requirements/requirements.txt 2021-05-05 
09:44:57.000000000 +0200
+++ new/pingparsing-1.4.0/requirements/requirements.txt 2021-10-24 
17:08:57.000000000 +0200
@@ -1,4 +1,4 @@
 humanreadable>=0.1.0,<1
-pyparsing>=2.0.3,<3
+pyparsing>=2.0.3,<4
 subprocrunner>=1.2.2,<2
 typepy[datetime]>=1.1.0,<2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pingparsing-1.3.1/setup.py 
new/pingparsing-1.4.0/setup.py
--- old/pingparsing-1.3.1/setup.py      2021-05-05 09:44:57.000000000 +0200
+++ new/pingparsing-1.4.0/setup.py      2021-10-24 17:08:57.000000000 +0200
@@ -9,11 +9,11 @@
 
 
 MODULE_NAME = "pingparsing"
-REPOSITORY_URL = "https://github.com/thombashi/{:s}".format(MODULE_NAME)
+REPOSITORY_URL = f"https://github.com/thombashi/{MODULE_NAME:s}";
 REQUIREMENT_DIR = "requirements"
 ENCODING = "utf8"
 
-pkg_info = {}  # type: Dict[str, str]
+pkg_info: Dict[str, str] = {}
 
 
 def get_release_command_class() -> Dict[str, setuptools.Command]:
@@ -57,11 +57,11 @@
     packages=setuptools.find_packages(exclude=["test*"]),
     package_data={MODULE_NAME: ["py.typed"]},
     project_urls={
-        "Documentation": "https://{:s}.rtfd.io/".format(MODULE_NAME),
+        "Documentation": f"https://{MODULE_NAME:s}.rtfd.io/";,
         "Source": REPOSITORY_URL,
-        "Tracker": "{:s}/issues".format(REPOSITORY_URL),
+        "Tracker": f"{REPOSITORY_URL:s}/issues",
     },
-    python_requires=">=3.5",
+    python_requires=">=3.6",
     install_requires=install_requires,
     extras_require={"test": tests_requires, "cli": CLI_OPT_REQUIRES},
     classifiers=[
@@ -76,7 +76,6 @@
         "Operating System :: POSIX",
         "Operating System :: POSIX :: Linux",
         "Programming Language :: Python :: 3",
-        "Programming Language :: Python :: 3.5",
         "Programming Language :: Python :: 3.6",
         "Programming Language :: Python :: 3.7",
         "Programming Language :: Python :: 3.8",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pingparsing-1.3.1/test/test_cli.py 
new/pingparsing-1.4.0/test/test_cli.py
--- old/pingparsing-1.3.1/test/test_cli.py      2021-05-05 09:44:57.000000000 
+0200
+++ new/pingparsing-1.4.0/test/test_cli.py      2021-10-24 17:08:57.000000000 
+0200
@@ -14,10 +14,10 @@
 
 def print_result(stdout, stderr, expected=None):
     if expected:
-        print("[expected]\n{}".format(expected))
+        print(f"[expected]\n{expected}")
 
-    print("[stdout]\n{}".format(stdout))
-    print("[stderr]\n{}".format(stderr))
+    print(f"[stdout]\n{stdout}")
+    print(f"[stderr]\n{stderr}")
 
 
 @pytest.mark.xfail(run=False)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pingparsing-1.3.1/test/test_pingparsing.py 
new/pingparsing-1.4.0/test/test_pingparsing.py
--- old/pingparsing-1.3.1/test/test_pingparsing.py      2021-05-05 
09:44:57.000000000 +0200
+++ new/pingparsing-1.4.0/test/test_pingparsing.py      2021-10-24 
17:08:57.000000000 +0200
@@ -585,6 +585,62 @@
     ],
 )
 
+LINUX_PIPE = PingTestData(
+    dedent(
+        r"""\
+        PING 91.221.122.179 (91.221.122.179) 64(92) bytes of data.
+        [1622145167.999326] no answer yet for icmp_seq=1
+        [1622145168.201746] no answer yet for icmp_seq=2
+        [1622145168.405761] no answer yet for icmp_seq=3
+        [1622145168.609750] no answer yet for icmp_seq=4
+        [1622145170.826836] From 91.221.122.179 icmp_seq=1 Destination Host 
Unreachable
+        [1622145170.826888] From 91.221.122.179 icmp_seq=2 Destination Host 
Unreachable
+        [1622145170.826896] From 91.221.122.179 icmp_seq=3 Destination Host 
Unreachable
+        [1622145170.826901] From 91.221.122.179 icmp_seq=4 Destination Host 
Unreachable
+        [1622145170.826907] From 91.221.122.179 icmp_seq=5 Destination Host 
Unreachable
+
+        --- 91.221.122.179 ping statistics ---
+        5 packets transmitted, 0 received, +5 errors, 100% packet loss, time 
811ms
+        pipe 5
+        """
+    ),
+    {
+        "destination": "91.221.122.179",
+        "packet_transmit": 5,
+        "packet_receive": 0,
+        "packet_loss_count": 5,
+        "packet_loss_rate": 100.0,
+        "rtt_min": None,
+        "rtt_avg": None,
+        "rtt_max": None,
+        "rtt_mdev": None,
+        "packet_duplicate_count": 0,
+        "packet_duplicate_rate": None,
+    },
+    [
+        {
+            "timestamp": datetime(2021, 5, 27, 19, 52, 47, 999326, 
tzinfo=pytz.UTC),
+            "icmp_seq": 1,
+            "duplicate": False,
+        },
+        {
+            "timestamp": datetime(2021, 5, 27, 19, 52, 48, 201746, 
tzinfo=pytz.UTC),
+            "icmp_seq": 2,
+            "duplicate": False,
+        },
+        {
+            "timestamp": datetime(2021, 5, 27, 19, 52, 48, 405761, 
tzinfo=pytz.UTC),
+            "icmp_seq": 3,
+            "duplicate": False,
+        },
+        {
+            "timestamp": datetime(2021, 5, 27, 19, 52, 48, 609750, 
tzinfo=pytz.UTC),
+            "icmp_seq": 4,
+            "duplicate": False,
+        },
+    ],
+)
+
 WINDOWS10_LOSS = PingTestData(
     dedent(
         """\
@@ -693,14 +749,15 @@
             [WINDOWS_UNREACHABLE_1, "Windows"],
             [WINDOWS_UNREACHABLE_2, "Windows"],
             [IPV6_LINUX, "Linux"],
+            [LINUX_PIPE, "Linux"],
         ],
     )
     def test_normal_text(self, ping_parser, test_data, parser_name):
         stats = ping_parser.parse(test_data.value)
 
-        print("[input text]\n{}\n".format(test_data.value))
-        print("[expected]\n{}\n".format(test_data.expected))
-        print("[actual]\n{}\n".format(stats.as_dict()))
+        print(f"[input text]\n{test_data.value}\n")
+        print(f"[expected]\n{test_data.expected}\n")
+        print(f"[actual]\n{stats.as_dict()}\n")
         for icmp_reply in stats.icmp_replies:
             print(icmp_reply)
 
@@ -715,9 +772,9 @@
     def test_normal_timestamp(self, ping_parser, test_data, parser_name):
         stats = ping_parser.parse(test_data.value)
 
-        print("[input text]\n{}\n".format(test_data.value))
-        print("[expected]\n{}\n".format(test_data.expected))
-        print("[actual]\n{}\n".format(stats.as_dict()))
+        print(f"[input text]\n{test_data.value}\n")
+        print(f"[expected]\n{test_data.expected}\n")
+        print(f"[actual]\n{stats.as_dict()}\n")
         for icmp_reply in stats.icmp_replies:
             print(icmp_reply)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pingparsing-1.3.1/tox.ini 
new/pingparsing-1.4.0/tox.ini
--- old/pingparsing-1.3.1/tox.ini       2021-05-05 09:44:57.000000000 +0200
+++ new/pingparsing-1.4.0/tox.ini       2021-10-24 17:08:57.000000000 +0200
@@ -1,6 +1,6 @@
 [tox]
 envlist =
-    py{35,36,37,38,39,310}
+    py{36,37,38,39,310}
     pypy3
     build
     clean
@@ -28,17 +28,17 @@
 [testenv:clean]
 skip_install = true
 deps =
-    cleanpy
+    cleanpy>=0.3.1
 commands =
     cleanpy --all --exclude-envs .
 
 [testenv:cov]
 deps =
     .[test]
-    coverage[toml]
-    pytest-cov
+    coverage[toml]>=5
 commands =
-    pytest --cov {posargs:-vv}
+    coverage run -m pytest {posargs:-vv}
+    coverage report -m
 
 [testenv:docs]
 basepython = python3.8
@@ -64,15 +64,15 @@
 skip_install = true
 deps =
     codespell
-    mypy>=0.761
+    mypy>=0.910
     pylama
-    pytype
+    types-pytz
+    types-simplejson
 commands =
     python setup.py check
     codespell pingparsing docs/pages examples test -q 2 --check-filenames
-    -pytype --keep-going --jobs 2 --disable import-error pingparsing
-    -mypy pingparsing setup.py --ignore-missing-imports --show-error-context 
--show-error-codes --python-version 3.5
-    -pylama
+    mypy pingparsing setup.py
+    pylama setup.py examples pingparsing test
 
 [testenv:readme]
 changedir = docs

Reply via email to