Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-prettytable for 
openSUSE:Factory checked in at 2022-06-06 11:10:21
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-prettytable (Old)
 and      /work/SRC/openSUSE:Factory/.python-prettytable.new.1548 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-prettytable"

Mon Jun  6 11:10:21 2022 rev:4 rq:980754 version:3.3.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-prettytable/python-prettytable.changes    
2022-04-02 18:20:06.614564916 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-prettytable.new.1548/python-prettytable.changes
  2022-06-06 11:10:28.787303911 +0200
@@ -1,0 +2,8 @@
+Sat Jun  4 11:42:00 UTC 2022 - Dirk M??ller <[email protected]>
+
+- update to 3.3.0:
+  * Support Python 3.11
+  * Add flag to preserve internal borders when border=False
+  * Alignment timing fix (#179) @myheroyuki 
+
+-------------------------------------------------------------------

Old:
----
  prettytable-3.2.0.tar.gz

New:
----
  prettytable-3.3.0.tar.gz

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

Other differences:
------------------
++++++ python-prettytable.spec ++++++
--- /var/tmp/diff_new_pack.4A97KM/_old  2022-06-06 11:10:29.251304583 +0200
+++ /var/tmp/diff_new_pack.4A97KM/_new  2022-06-06 11:10:29.255304589 +0200
@@ -20,7 +20,7 @@
 %{?!python_module:%define python_module() python3-%{**}}
 %define skip_python2 1
 Name:           python-prettytable
-Version:        3.2.0
+Version:        3.3.0
 Release:        0
 Summary:        Library for displaying tabular data in formatted fashion
 License:        BSD-2-Clause

++++++ prettytable-3.2.0.tar.gz -> prettytable-3.3.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prettytable-3.2.0/.github/dependabot.yml 
new/prettytable-3.3.0/.github/dependabot.yml
--- old/prettytable-3.2.0/.github/dependabot.yml        1970-01-01 
01:00:00.000000000 +0100
+++ new/prettytable-3.3.0/.github/dependabot.yml        2022-05-05 
17:20:13.000000000 +0200
@@ -0,0 +1,25 @@
+version: 2
+updates:
+  - package-ecosystem: github-actions
+    directory: "/"
+    schedule:
+      interval: monthly
+      time: "03:00"
+    open-pull-requests-limit: 10
+    labels:
+      - "changelog: skip"
+      - "dependencies"
+    ignore:
+      - dependency-name: "*"
+        update-types:
+          - "version-update:semver-minor"
+          - "version-update:semver-patch"
+  - package-ecosystem: pip
+    directory: "/"
+    schedule:
+      interval: monthly
+      time: "03:00"
+    open-pull-requests-limit: 10
+    labels:
+      - "changelog: skip"
+      - "dependencies"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prettytable-3.2.0/.github/workflows/labels.yml 
new/prettytable-3.3.0/.github/workflows/labels.yml
--- old/prettytable-3.2.0/.github/workflows/labels.yml  2022-03-07 
08:13:49.000000000 +0100
+++ new/prettytable-3.3.0/.github/workflows/labels.yml  2022-05-05 
17:20:13.000000000 +0200
@@ -12,7 +12,7 @@
   sync:
     runs-on: ubuntu-latest
     steps:
-      - uses: actions/checkout@v2
+      - uses: actions/checkout@v3
       - uses: micnncim/action-label-syncer@v1
         with:
           prune: false
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prettytable-3.2.0/.github/workflows/lint.yml 
new/prettytable-3.3.0/.github/workflows/lint.yml
--- old/prettytable-3.2.0/.github/workflows/lint.yml    2022-03-07 
08:13:49.000000000 +0100
+++ new/prettytable-3.3.0/.github/workflows/lint.yml    2022-05-05 
17:20:13.000000000 +0200
@@ -4,9 +4,9 @@
 
 jobs:
   lint:
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-latest
 
     steps:
-      - uses: actions/checkout@v2
-      - uses: actions/setup-python@v2
+      - uses: actions/checkout@v3
+      - uses: actions/setup-python@v3
       - uses: pre-commit/[email protected]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prettytable-3.2.0/.github/workflows/release.yml 
new/prettytable-3.3.0/.github/workflows/release.yml
--- old/prettytable-3.2.0/.github/workflows/release.yml 2022-03-07 
08:13:49.000000000 +0100
+++ new/prettytable-3.3.0/.github/workflows/release.yml 2022-05-05 
17:20:13.000000000 +0200
@@ -15,7 +15,7 @@
     runs-on: ubuntu-latest
 
     steps:
-      - uses: actions/checkout@v2
+      - uses: actions/checkout@v3
         with:
           fetch-depth: 0
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/prettytable-3.2.0/.github/workflows/require-pr-label.yml 
new/prettytable-3.3.0/.github/workflows/require-pr-label.yml
--- old/prettytable-3.2.0/.github/workflows/require-pr-label.yml        
1970-01-01 01:00:00.000000000 +0100
+++ new/prettytable-3.3.0/.github/workflows/require-pr-label.yml        
2022-05-05 17:20:13.000000000 +0200
@@ -0,0 +1,18 @@
+name: Require PR label
+
+on:
+  pull_request:
+    types: [opened, reopened, labeled, unlabeled, synchronize]
+
+jobs:
+  label:
+    runs-on: ubuntu-latest
+
+    steps:
+      - uses: mheap/github-action-required-labels@v1
+        with:
+          mode: minimum
+          count: 1
+          labels:
+            "changelog: Added, changelog: Changed, changelog: Deprecated, 
changelog:
+            Fixed, changelog: Removed, changelog: Security, changelog: skip"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prettytable-3.2.0/.github/workflows/test.yml 
new/prettytable-3.3.0/.github/workflows/test.yml
--- old/prettytable-3.2.0/.github/workflows/test.yml    2022-03-07 
08:13:49.000000000 +0100
+++ new/prettytable-3.3.0/.github/workflows/test.yml    2022-05-05 
17:20:13.000000000 +0200
@@ -11,23 +11,18 @@
     strategy:
       fail-fast: false
       matrix:
-        python-version: ["pypy-3.8", "3.7", "3.8", "3.9", "3.10"]
-        os: [ubuntu-latest, macos-latest, windows-latest]
-        include:
-          # Include new variables for Codecov
-          - { codecov-flag: GHA_Ubuntu, os: ubuntu-latest }
-          - { codecov-flag: GHA_macOS, os: macos-latest }
-          - { codecov-flag: GHA_Windows, os: windows-latest }
+        python-version: ["pypy-3.8", "3.7", "3.8", "3.9", "3.10", "3.11-dev"]
+        os: [windows-latest, macos-latest, ubuntu-latest]
 
     steps:
-      - uses: actions/checkout@v2
+      - uses: actions/checkout@v3
 
       - name: Set up Python ${{ matrix.python-version }}
-        uses: actions/setup-python@v2
+        uses: actions/setup-python@v3
         with:
           python-version: ${{ matrix.python-version }}
           cache: pip
-          cache-dependency-path: "setup.py"
+          cache-dependency-path: setup.cfg
 
       - name: Install dependencies
         run: |
@@ -39,7 +34,7 @@
           tox -e py
 
       - name: Upload coverage
-        uses: codecov/codecov-action@v2
+        uses: codecov/codecov-action@v3
         with:
-          flags: ${{ matrix.codecov-flag }}
+          flags: ${{ matrix.os }}
           name: ${{ matrix.os }} Python ${{ matrix.python-version }}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prettytable-3.2.0/.pre-commit-config.yaml 
new/prettytable-3.3.0/.pre-commit-config.yaml
--- old/prettytable-3.2.0/.pre-commit-config.yaml       2022-03-07 
08:13:49.000000000 +0100
+++ new/prettytable-3.3.0/.pre-commit-config.yaml       2022-05-05 
17:20:13.000000000 +0200
@@ -1,12 +1,12 @@
 repos:
   - repo: https://github.com/asottile/pyupgrade
-    rev: v2.31.0
+    rev: v2.32.1
     hooks:
       - id: pyupgrade
         args: [--py37-plus]
 
   - repo: https://github.com/psf/black
-    rev: 21.12b0
+    rev: 22.3.0
     hooks:
       - id: black
         args: [--target-version=py37]
@@ -28,15 +28,16 @@
       - id: python-check-blanket-noqa
 
   - repo: https://github.com/pre-commit/pre-commit-hooks
-    rev: v4.1.0
+    rev: v4.2.0
     hooks:
       - id: check-merge-conflict
       - id: check-yaml
 
   - repo: https://github.com/asottile/setup-cfg-fmt
-    rev: v1.20.0
+    rev: v1.20.1
     hooks:
       - id: setup-cfg-fmt
+        args: [--max-py-version=3.11]
 
   - repo: https://github.com/tox-dev/tox-ini-fmt
     rev: 0.5.2
@@ -44,7 +45,7 @@
       - id: tox-ini-fmt
 
   - repo: https://github.com/pre-commit/mirrors-prettier
-    rev: v2.5.1
+    rev: v2.6.2
     hooks:
       - id: prettier
         args: [--prose-wrap=always, --print-width=88]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prettytable-3.2.0/PKG-INFO 
new/prettytable-3.3.0/PKG-INFO
--- old/prettytable-3.2.0/PKG-INFO      2022-03-07 08:14:08.130133000 +0100
+++ new/prettytable-3.3.0/PKG-INFO      2022-05-05 17:20:34.741367600 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: prettytable
-Version: 3.2.0
+Version: 3.3.0
 Summary: A simple Python library for easily displaying tabular data in a 
visually appealing ASCII table format
 Home-page: https://github.com/jazzband/prettytable
 Author: Luke Maurits
@@ -17,6 +17,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: Programming Language :: Python :: Implementation :: CPython
 Classifier: Programming Language :: Python :: Implementation :: PyPy
 Classifier: Topic :: Text Processing
@@ -429,7 +430,9 @@
 The options are these:
 
 - `border` - A boolean option (must be `True` or `False`). Controls whether a 
border is
-  drawn around the table.
+  drawn inside and around the table.
+- `preserve_internal_border` - A boolean option (must be `True` or `False`). 
Controls
+  whether borders are still drawn within the table even when `border=False`.
 - `header` - A boolean option (must be `True` or `False`). Controls whether 
the first
   row of the table is a header showing the names of all the fields.
 - `hrules` - Controls printing of horizontal rules after rows. Allowed values: 
`FRAME`,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prettytable-3.2.0/README.md 
new/prettytable-3.3.0/README.md
--- old/prettytable-3.2.0/README.md     2022-03-07 08:13:49.000000000 +0100
+++ new/prettytable-3.3.0/README.md     2022-05-05 17:20:13.000000000 +0200
@@ -402,7 +402,9 @@
 The options are these:
 
 - `border` - A boolean option (must be `True` or `False`). Controls whether a 
border is
-  drawn around the table.
+  drawn inside and around the table.
+- `preserve_internal_border` - A boolean option (must be `True` or `False`). 
Controls
+  whether borders are still drawn within the table even when `border=False`.
 - `header` - A boolean option (must be `True` or `False`). Controls whether 
the first
   row of the table is a header showing the names of all the fields.
 - `hrules` - Controls printing of horizontal rules after rows. Allowed values: 
`FRAME`,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prettytable-3.2.0/setup.cfg 
new/prettytable-3.3.0/setup.cfg
--- old/prettytable-3.2.0/setup.cfg     2022-03-07 08:14:08.130133000 +0100
+++ new/prettytable-3.3.0/setup.cfg     2022-05-05 17:20:34.741367600 +0200
@@ -17,6 +17,7 @@
        Programming Language :: Python :: 3.8
        Programming Language :: Python :: 3.9
        Programming Language :: Python :: 3.10
+       Programming Language :: Python :: 3.11
        Programming Language :: Python :: Implementation :: CPython
        Programming Language :: Python :: Implementation :: PyPy
        Topic :: Text Processing
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prettytable-3.2.0/setup.py 
new/prettytable-3.3.0/setup.py
--- old/prettytable-3.2.0/setup.py      2022-03-07 08:13:49.000000000 +0100
+++ new/prettytable-3.3.0/setup.py      2022-05-05 17:20:13.000000000 +0200
@@ -1,7 +1,7 @@
 from setuptools import setup
 
 
-def local_scheme(version):
+def local_scheme(version: str) -> str:
     """Skip the local version (eg. +xyz of 0.6.1.dev4+gdf99fe2)
     to be able to upload to Test PyPI"""
     return ""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prettytable-3.2.0/src/prettytable/prettytable.py 
new/prettytable-3.3.0/src/prettytable/prettytable.py
--- old/prettytable-3.2.0/src/prettytable/prettytable.py        2022-03-07 
08:13:49.000000000 +0100
+++ new/prettytable-3.3.0/src/prettytable/prettytable.py        2022-05-05 
17:20:13.000000000 +0200
@@ -59,6 +59,7 @@
 DOUBLE_BORDER = 15
 SINGLE_BORDER = 16
 RANDOM = 20
+BASE_ALIGN_VALUE = "base_align_value"
 
 _re = re.compile(r"\033\[[0-9;]*m|\033\(B")
 
@@ -86,6 +87,8 @@
         header_style - stylisation to apply to field names in header
             ("cap", "title", "upper", "lower" or None)
         border - print a border around the table (True or False)
+        preserve_internal_border - print a border inside the table even if
+            border is disabled (True or False)
         hrules - controls printing of horizontal rules after rows.
             Allowed values: FRAME, HEADER, ALL, NONE
         vrules - controls printing of vertical rules between columns.
@@ -151,6 +154,7 @@
             "fields",
             "header",
             "border",
+            "preserve_internal_border",
             "sortby",
             "reversesort",
             "sort_key",
@@ -210,6 +214,10 @@
             self._border = kwargs["border"]
         else:
             self._border = True
+        if kwargs["preserve_internal_border"] in (True, False):
+            self._preserve_internal_border = kwargs["preserve_internal_border"]
+        else:
+            self._preserve_internal_border = False
         self._hrules = kwargs["hrules"] or FRAME
         self._vrules = kwargs["vrules"] or ALL
 
@@ -372,6 +380,7 @@
         elif option in (
             "header",
             "border",
+            "preserve_internal_border",
             "reversesort",
             "xhtml",
             "print_empty",
@@ -601,6 +610,9 @@
             for old_name in old_names:
                 if old_name not in self._align:
                     self._align.pop(old_name)
+        elif self._align:
+            for field_name in self._field_names:
+                self._align[field_name] = self._align[BASE_ALIGN_VALUE]
         else:
             self.align = "c"
         if self._valign and old_names:
@@ -622,15 +634,19 @@
 
     @align.setter
     def align(self, val):
-        if not self._field_names:
-            self._align = {}
-        elif val is None or (isinstance(val, dict) and len(val) == 0):
-            for field in self._field_names:
-                self._align[field] = "c"
+        if val is None or (isinstance(val, dict) and len(val) == 0):
+            if not self._field_names:
+                self._align = {BASE_ALIGN_VALUE: "c"}
+            else:
+                for field in self._field_names:
+                    self._align[field] = "c"
         else:
             self._validate_align(val)
-            for field in self._field_names:
-                self._align[field] = val
+            if not self._field_names:
+                self._align = {BASE_ALIGN_VALUE: val}
+            else:
+                for field in self._field_names:
+                    self._align[field] = val
 
     @property
     def valign(self):
@@ -843,6 +859,21 @@
         self._border = val
 
     @property
+    def preserve_internal_border(self):
+        """Controls printing of border inside table
+
+        Arguments:
+
+        preserve_internal_border - print a border inside the table even if
+            border is disabled (True or False)"""
+        return self._preserve_internal_border
+
+    @preserve_internal_border.setter
+    def preserve_internal_border(self, val):
+        self._validate_option("preserve_internal_border", val)
+        self._preserve_internal_border = val
+
+    @property
     def hrules(self):
         """Controls printing of horizontal rules after rows
 
@@ -1347,6 +1378,7 @@
         self.vertical_char = 
random.choice(r"~!@#$%^&*()_+|-=\{}[];':\",./;<>?")
         self.horizontal_char = 
random.choice(r"~!@#$%^&*()_+|-=\{}[];':\",./;<>?")
         self.junction_char = 
random.choice(r"~!@#$%^&*()_+|-=\{}[];':\",./;<>?")
+        self.preserve_internal_border = random.choice((True, False))
 
     ##############################
     # DATA INPUT METHODS         #
@@ -1618,6 +1650,8 @@
         fields - names of fields (columns) to include
         header - print a header showing field names (True or False)
         border - print a border around the table (True or False)
+        preserve_internal_border - print a border inside the table even if
+            border is disabled (True or False)
         hrules - controls printing of horizontal rules after rows.
             Allowed values: ALL, FRAME, HEADER, NONE
         vrules - controls printing of vertical rules between columns.
@@ -1713,7 +1747,7 @@
 
     def _stringify_hrule(self, options, where=""):
 
-        if not options["border"]:
+        if not options["border"] and not options["preserve_internal_border"]:
             return ""
         lpad, rpad = self._get_padding_widths(options)
         if options["vrules"] in (ALL, FRAME):
@@ -1745,6 +1779,10 @@
         if options["vrules"] in (ALL, FRAME):
             bits.pop()
             bits.append(options[where + "right_junction_char"])
+
+        if options["preserve_internal_border"] and not options["border"]:
+            bits = bits[1:-1]
+
         return "".join(bits)
 
     def _stringify_title(self, title, options):
@@ -1760,7 +1798,9 @@
                 lines.append(self._stringify_hrule(options, "top_"))
         bits = []
         endpoint = (
-            options["vertical_char"] if options["vrules"] in (ALL, FRAME) else 
" "
+            options["vertical_char"]
+            if options["vrules"] in (ALL, FRAME) and options["border"]
+            else " "
         )
         bits.append(endpoint)
         title = " " * lpad + title + " " * rpad
@@ -1813,17 +1853,25 @@
                 + self._justify(fieldname, width, self._align[field])
                 + " " * rpad
             )
-            if options["border"]:
+            if options["border"] or options["preserve_internal_border"]:
                 if options["vrules"] == ALL:
                     bits.append(options["vertical_char"])
                 else:
                     bits.append(" ")
+
+        # If only preserve_internal_border is true, then we just appended
+        # a vertical character at the end when we wanted a space
+        if not options["border"] and options["preserve_internal_border"]:
+            bits.pop()
+            bits.append(" ")
         # If vrules is FRAME, then we just appended a space at the end
         # of the last field, when we really want a vertical character
         if options["border"] and options["vrules"] == FRAME:
             bits.pop()
             bits.append(options["vertical_char"])
-        if options["border"] and options["hrules"] != NONE:
+        if (options["border"] or options["preserve_internal_border"]) and 
options[
+            "hrules"
+        ] != NONE:
             bits.append("\n")
             bits.append(self._hrule)
         return "".join(bits)
@@ -1889,13 +1937,19 @@
                     + self._justify(line, width, self._align[field])
                     + " " * rpad
                 )
-                if options["border"]:
+                if options["border"] or options["preserve_internal_border"]:
                     if options["vrules"] == ALL:
                         bits[y].append(self.vertical_char)
                     else:
                         bits[y].append(" ")
                 y += 1
 
+        # If only preserve_internal_border is true, then we just appended
+        # a vertical character at the end when we wanted a space
+        if not options["border"] and options["preserve_internal_border"]:
+            bits[-1].pop()
+            bits[-1].append(" ")
+
         # If vrules is FRAME, then we just appended a space at the end
         # of the last field, when we really want a vertical character
         for y in range(0, row_height):
@@ -1997,6 +2051,8 @@
         fields - names of fields (columns) to include
         header - print a header showing field names (True or False)
         border - print a border around the table (True or False)
+        preserve_internal_border - print a border inside the table even if
+            border is disabled (True or False)
         hrules - controls printing of horizontal rules after rows.
             Allowed values: ALL, FRAME, HEADER, NONE
         vrules - controls printing of vertical rules between columns.
@@ -2101,6 +2157,8 @@
                 open_tag.append(' frame="vsides"')
             elif options["vrules"] == ALL:
                 open_tag.append(' frame="vsides" rules="cols"')
+        if not options["border"] and options["preserve_internal_border"]:
+            open_tag.append(' rules="cols"')
         if options["attributes"]:
             for attr_name in options["attributes"]:
                 open_tag.append(f' 
{attr_name}="{options["attributes"][attr_name]}"')
@@ -2177,6 +2235,8 @@
         fields - names of fields (columns) to include
         header - print a header showing field names (True or False)
         border - print a border around the table (True or False)
+        preserve_internal_border - print a border inside the table even if
+            border is disabled (True or False)
         hrules - controls printing of horizontal rules after rows.
             Allowed values: ALL, FRAME, HEADER, NONE
         vrules - controls printing of vertical rules between columns.
@@ -2243,6 +2303,8 @@
         wanted_alignments = [self._align[field] for field in wanted_fields]
         if options["border"] and options["vrules"] == ALL:
             alignment_str = "|".join(wanted_alignments)
+        elif not options["border"] and options["preserve_internal_border"]:
+            alignment_str = "|".join(wanted_alignments)
         else:
             alignment_str = "".join(wanted_alignments)
 
@@ -2251,14 +2313,15 @@
 
         begin_cmd = "\\begin{tabular}{%s}" % alignment_str
         lines.append(begin_cmd)
-
         if options["border"] and options["hrules"] in [ALL, FRAME]:
             lines.append("\\hline")
 
         # Headers
         if options["header"]:
             lines.append(" & ".join(wanted_fields) + " \\\\")
-        if options["border"] and options["hrules"] in [ALL, HEADER]:
+        if (options["border"] or options["preserve_internal_border"]) and 
options[
+            "hrules"
+        ] in [ALL, HEADER]:
             lines.append("\\hline")
 
         # Data
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prettytable-3.2.0/src/prettytable.egg-info/PKG-INFO 
new/prettytable-3.3.0/src/prettytable.egg-info/PKG-INFO
--- old/prettytable-3.2.0/src/prettytable.egg-info/PKG-INFO     2022-03-07 
08:14:07.000000000 +0100
+++ new/prettytable-3.3.0/src/prettytable.egg-info/PKG-INFO     2022-05-05 
17:20:34.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: prettytable
-Version: 3.2.0
+Version: 3.3.0
 Summary: A simple Python library for easily displaying tabular data in a 
visually appealing ASCII table format
 Home-page: https://github.com/jazzband/prettytable
 Author: Luke Maurits
@@ -17,6 +17,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: Programming Language :: Python :: Implementation :: CPython
 Classifier: Programming Language :: Python :: Implementation :: PyPy
 Classifier: Topic :: Text Processing
@@ -429,7 +430,9 @@
 The options are these:
 
 - `border` - A boolean option (must be `True` or `False`). Controls whether a 
border is
-  drawn around the table.
+  drawn inside and around the table.
+- `preserve_internal_border` - A boolean option (must be `True` or `False`). 
Controls
+  whether borders are still drawn within the table even when `border=False`.
 - `header` - A boolean option (must be `True` or `False`). Controls whether 
the first
   row of the table is a header showing the names of all the fields.
 - `hrules` - Controls printing of horizontal rules after rows. Allowed values: 
`FRAME`,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/prettytable-3.2.0/src/prettytable.egg-info/SOURCES.txt 
new/prettytable-3.3.0/src/prettytable.egg-info/SOURCES.txt
--- old/prettytable-3.2.0/src/prettytable.egg-info/SOURCES.txt  2022-03-07 
08:14:08.000000000 +0100
+++ new/prettytable-3.3.0/src/prettytable.egg-info/SOURCES.txt  2022-05-05 
17:20:34.000000000 +0200
@@ -10,6 +10,7 @@
 setup.cfg
 setup.py
 tox.ini
+.github/dependabot.yml
 .github/labels.yml
 .github/release-drafter.yml
 .github/ISSUE_TEMPLATE/bug_report.md
@@ -18,6 +19,7 @@
 .github/workflows/lint.yml
 .github/workflows/release-drafter.yml
 .github/workflows/release.yml
+.github/workflows/require-pr-label.yml
 .github/workflows/test.yml
 src/prettytable/__init__.py
 src/prettytable/colortable.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prettytable-3.2.0/tests/test_prettytable.py 
new/prettytable-3.3.0/tests/test_prettytable.py
--- old/prettytable-3.2.0/tests/test_prettytable.py     2022-03-07 
08:13:49.000000000 +0100
+++ new/prettytable-3.3.0/tests/test_prettytable.py     2022-05-05 
17:20:13.000000000 +0200
@@ -328,6 +328,62 @@
 
 
 @pytest.fixture(scope="function")
+def aligned_before_table():
+    x = PrettyTable()
+    x.align = "r"
+    x.field_names = ["City name", "Area", "Population", "Annual Rainfall"]
+    x.add_row(["Adelaide", 1295, 1158259, 600.5])
+    x.add_row(["Brisbane", 5905, 1857594, 1146.4])
+    x.add_row(["Darwin", 112, 120900, 1714.7])
+    x.add_row(["Hobart", 1357, 205556, 619.5])
+    x.add_row(["Sydney", 2058, 4336374, 1214.8])
+    x.add_row(["Melbourne", 1566, 3806092, 646.9])
+    x.add_row(["Perth", 5386, 1554769, 869.4])
+    return x
+
+
[email protected](scope="function")
+def aligned_after_table():
+    x = PrettyTable()
+    x.field_names = ["City name", "Area", "Population", "Annual Rainfall"]
+    x.add_row(["Adelaide", 1295, 1158259, 600.5])
+    x.add_row(["Brisbane", 5905, 1857594, 1146.4])
+    x.add_row(["Darwin", 112, 120900, 1714.7])
+    x.add_row(["Hobart", 1357, 205556, 619.5])
+    x.add_row(["Sydney", 2058, 4336374, 1214.8])
+    x.add_row(["Melbourne", 1566, 3806092, 646.9])
+    x.add_row(["Perth", 5386, 1554769, 869.4])
+    x.align = "r"
+    return x
+
+
+class TestAlignment:
+
+    """Make sure alignment works regardless of when it was set"""
+
+    def test_aligned_ascii(
+        self, aligned_before_table: prettytable, aligned_after_table: 
prettytable
+    ):
+        before = aligned_before_table.get_string()
+        after = aligned_after_table.get_string()
+        assert before == after
+
+    def test_aligned_html(
+        self, aligned_before_table: prettytable, aligned_after_table: 
prettytable
+    ):
+        before = aligned_before_table.get_html_string()
+        after = aligned_after_table.get_html_string()
+        assert before == after
+
+    def test_aligned_latex(
+        self, aligned_before_table: prettytable, aligned_after_table: 
prettytable
+    ):
+        before = aligned_before_table.get_latex_string()
+        after = aligned_after_table.get_latex_string()
+        assert before == after
+
+
[email protected](scope="function")
 def city_data_prettytable():
     """Just build the Australian capital city data example table."""
     pt = PrettyTable(["City name", "Area", "Population", "Annual Rainfall"])
@@ -428,6 +484,10 @@
             city_data_prettytable.get_string() == 
city_data_prettytable[:].get_string()
         )
 
+    def test_preserve_internal_border(self):
+        pt = PrettyTable(preserve_internal_border=True)
+        assert pt.preserve_internal_border is True
+
 
 @pytest.fixture(scope="module")
 def db_cursor():
@@ -1852,3 +1912,74 @@
 +-----+
 """.strip()
         )
+
+
+class TestPreservingInternalBorders:
+    def test_internal_border_preserved(self):
+        pt = helper_table(3)
+        pt.border = False
+        pt.preserve_internal_border = True
+
+        assert (
+            pt.get_string().strip()
+            == """
+ Field 1 | Field 2 | Field 3  
+---------+---------+---------
+ value 1 |  value2 |  value3  
+ value 4 |  value5 |  value6  
+ value 7 |  value8 |  value9 
+""".strip()  # noqa: W291
+        )
+
+    def test_internal_border_preserved_latex(self):
+        pt = helper_table(3)
+        pt.border = False
+        pt.format = True
+        pt.preserve_internal_border = True
+
+        assert pt.get_latex_string().strip() == (
+            "\\begin{tabular}{c|c|c}\r\n"
+            "Field 1 & Field 2 & Field 3 \\\\\r\n"
+            "value 1 & value2 & value3 \\\\\r\n"
+            "value 4 & value5 & value6 \\\\\r\n"
+            "value 7 & value8 & value9 \\\\\r\n"
+            "\\end{tabular}"
+        )
+
+    def test_internal_border_preserved_html(self):
+        pt = helper_table(3)
+        pt.format = True
+        pt.border = False
+        pt.preserve_internal_border = True
+
+        assert (
+            pt.get_html_string().strip()
+            == """
+<table rules="cols">
+    <thead>
+        <tr>
+            <th style="padding-left: 1em; padding-right: 1em; text-align: 
center">Field 1</th>
+            <th style="padding-left: 1em; padding-right: 1em; text-align: 
center">Field 2</th>
+            <th style="padding-left: 1em; padding-right: 1em; text-align: 
center">Field 3</th>
+        </tr>
+    </thead>
+    <tbody>
+        <tr>
+            <td style="padding-left: 1em; padding-right: 1em; text-align: 
center; vertical-align: top">value 1</td>
+            <td style="padding-left: 1em; padding-right: 1em; text-align: 
center; vertical-align: top">value2</td>
+            <td style="padding-left: 1em; padding-right: 1em; text-align: 
center; vertical-align: top">value3</td>
+        </tr>
+        <tr>
+            <td style="padding-left: 1em; padding-right: 1em; text-align: 
center; vertical-align: top">value 4</td>
+            <td style="padding-left: 1em; padding-right: 1em; text-align: 
center; vertical-align: top">value5</td>
+            <td style="padding-left: 1em; padding-right: 1em; text-align: 
center; vertical-align: top">value6</td>
+        </tr>
+        <tr>
+            <td style="padding-left: 1em; padding-right: 1em; text-align: 
center; vertical-align: top">value 7</td>
+            <td style="padding-left: 1em; padding-right: 1em; text-align: 
center; vertical-align: top">value8</td>
+            <td style="padding-left: 1em; padding-right: 1em; text-align: 
center; vertical-align: top">value9</td>
+        </tr>
+    </tbody>
+</table>
+""".strip()  # noqa: E501
+        )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prettytable-3.2.0/tox.ini 
new/prettytable-3.3.0/tox.ini
--- old/prettytable-3.2.0/tox.ini       2022-03-07 08:13:49.000000000 +0100
+++ new/prettytable-3.3.0/tox.ini       2022-05-05 17:20:13.000000000 +0200
@@ -1,7 +1,7 @@
 [tox]
 envlist =
     lint
-    py{py3, 310, 39, 38, 37}
+    py{py3, 311, 310, 39, 38, 37}
 
 [testenv]
 passenv =

Reply via email to