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 =
