jazzband / prettytable

Display tabular data in a visually appealing ASCII table format
https://pypi.org/project/PrettyTable/
Other
1.32k stars 149 forks source link

Fix GitHub-Flavoured Markdown for narrow columns #296

Closed hugovk closed 3 months ago

hugovk commented 3 months ago

Fixes #295.

Code

from prettytable import MARKDOWN, PrettyTable

table = PrettyTable()
table.set_style(MARKDOWN)
table.add_row([1, "Adelaide"])
table.add_row([2, "Brisbane"])
table.add_row([3, "Darwin"])
table.add_row([4, "Hobart"])
table.add_row([5, "Sydney"])
table.add_row([6, "Melbourne"])
table.add_row([7, "Perth"])

for first_header in ("", "A", "AB", "ABC"):
    table.field_names = [first_header, "City name"]

    for align in ("l", "c", "r"):
        table.align = align

        print(table)
        print()

Before

|   | City name |
| :-| :---------|
| 1 | Adelaide  |
| 2 | Brisbane  |
| 3 | Darwin    |
| 4 | Hobart    |
| 5 | Sydney    |
| 6 | Melbourne |
| 7 | Perth     |

|   | City name |
| : | :-------: |
| 1 |  Adelaide |
| 2 |  Brisbane |
| 3 |   Darwin  |
| 4 |   Hobart  |
| 5 |   Sydney  |
| 6 | Melbourne |
| 7 |   Perth   |

|   | City name |
|-: |---------: |
| 1 |  Adelaide |
| 2 |  Brisbane |
| 3 |    Darwin |
| 4 |    Hobart |
| 5 |    Sydney |
| 6 | Melbourne |
| 7 |     Perth |

| A | City name |
| :-| :---------|
| 1 | Adelaide  |
| 2 | Brisbane  |
| 3 | Darwin    |
| 4 | Hobart    |
| 5 | Sydney    |
| 6 | Melbourne |
| 7 | Perth     |

| A | City name |
| : | :-------: |
| 1 |  Adelaide |
| 2 |  Brisbane |
| 3 |   Darwin  |
| 4 |   Hobart  |
| 5 |   Sydney  |
| 6 | Melbourne |
| 7 |   Perth   |

| A | City name |
|-: |---------: |
| 1 |  Adelaide |
| 2 |  Brisbane |
| 3 |    Darwin |
| 4 |    Hobart |
| 5 |    Sydney |
| 6 | Melbourne |
| 7 |     Perth |

| AB | City name |
| :--| :---------|
| 1  | Adelaide  |
| 2  | Brisbane  |
| 3  | Darwin    |
| 4  | Hobart    |
| 5  | Sydney    |
| 6  | Melbourne |
| 7  | Perth     |

| AB | City name |
| :: | :-------: |
| 1  |  Adelaide |
| 2  |  Brisbane |
| 3  |   Darwin  |
| 4  |   Hobart  |
| 5  |   Sydney  |
| 6  | Melbourne |
| 7  |   Perth   |

| AB | City name |
|--: |---------: |
|  1 |  Adelaide |
|  2 |  Brisbane |
|  3 |    Darwin |
|  4 |    Hobart |
|  5 |    Sydney |
|  6 | Melbourne |
|  7 |     Perth |

| ABC | City name |
| :---| :---------|
| 1   | Adelaide  |
| 2   | Brisbane  |
| 3   | Darwin    |
| 4   | Hobart    |
| 5   | Sydney    |
| 6   | Melbourne |
| 7   | Perth     |

| ABC | City name |
| :-: | :-------: |
|  1  |  Adelaide |
|  2  |  Brisbane |
|  3  |   Darwin  |
|  4  |   Hobart  |
|  5  |   Sydney  |
|  6  | Melbourne |
|  7  |   Perth   |

| ABC | City name |
|---: |---------: |
|   1 |  Adelaide |
|   2 |  Brisbane |
|   3 |    Darwin |
|   4 |    Hobart |
|   5 |    Sydney |
|   6 | Melbourne |
|   7 |     Perth |
City name
1 Adelaide
2 Brisbane
3 Darwin
4 Hobart
5 Sydney
6 Melbourne
7 Perth
City name
1 Adelaide
2 Brisbane
3 Darwin
4 Hobart
5 Sydney
6 Melbourne
7 Perth
City name
1 Adelaide
2 Brisbane
3 Darwin
4 Hobart
5 Sydney
6 Melbourne
7 Perth
A City name
1 Adelaide
2 Brisbane
3 Darwin
4 Hobart
5 Sydney
6 Melbourne
7 Perth
A City name
1 Adelaide
2 Brisbane
3 Darwin
4 Hobart
5 Sydney
6 Melbourne
7 Perth
A City name
1 Adelaide
2 Brisbane
3 Darwin
4 Hobart
5 Sydney
6 Melbourne
7 Perth
AB City name
1 Adelaide
2 Brisbane
3 Darwin
4 Hobart
5 Sydney
6 Melbourne
7 Perth
AB City name
1 Adelaide
2 Brisbane
3 Darwin
4 Hobart
5 Sydney
6 Melbourne
7 Perth
AB City name
1 Adelaide
2 Brisbane
3 Darwin
4 Hobart
5 Sydney
6 Melbourne
7 Perth
ABC City name
1 Adelaide
2 Brisbane
3 Darwin
4 Hobart
5 Sydney
6 Melbourne
7 Perth
ABC City name
1 Adelaide
2 Brisbane
3 Darwin
4 Hobart
5 Sydney
6 Melbourne
7 Perth
ABC City name
1 Adelaide
2 Brisbane
3 Darwin
4 Hobart
5 Sydney
6 Melbourne
7 Perth

After

|   | City name |
| :-| :---------|
| 1 | Adelaide  |
| 2 | Brisbane  |
| 3 | Darwin    |
| 4 | Hobart    |
| 5 | Sydney    |
| 6 | Melbourne |
| 7 | Perth     |

|     | City name |
| :-: | :-------: |
|  1  |  Adelaide |
|  2  |  Brisbane |
|  3  |   Darwin  |
|  4  |   Hobart  |
|  5  |   Sydney  |
|  6  | Melbourne |
|  7  |   Perth   |

|   | City name |
|-: |---------: |
| 1 |  Adelaide |
| 2 |  Brisbane |
| 3 |    Darwin |
| 4 |    Hobart |
| 5 |    Sydney |
| 6 | Melbourne |
| 7 |     Perth |

| A | City name |
| :-| :---------|
| 1 | Adelaide  |
| 2 | Brisbane  |
| 3 | Darwin    |
| 4 | Hobart    |
| 5 | Sydney    |
| 6 | Melbourne |
| 7 | Perth     |

|  A  | City name |
| :-: | :-------: |
|  1  |  Adelaide |
|  2  |  Brisbane |
|  3  |   Darwin  |
|  4  |   Hobart  |
|  5  |   Sydney  |
|  6  | Melbourne |
|  7  |   Perth   |

| A | City name |
|-: |---------: |
| 1 |  Adelaide |
| 2 |  Brisbane |
| 3 |    Darwin |
| 4 |    Hobart |
| 5 |    Sydney |
| 6 | Melbourne |
| 7 |     Perth |

| AB | City name |
| :--| :---------|
| 1  | Adelaide  |
| 2  | Brisbane  |
| 3  | Darwin    |
| 4  | Hobart    |
| 5  | Sydney    |
| 6  | Melbourne |
| 7  | Perth     |

|  AB | City name |
| :-: | :-------: |
|  1  |  Adelaide |
|  2  |  Brisbane |
|  3  |   Darwin  |
|  4  |   Hobart  |
|  5  |   Sydney  |
|  6  | Melbourne |
|  7  |   Perth   |

| AB | City name |
|--: |---------: |
|  1 |  Adelaide |
|  2 |  Brisbane |
|  3 |    Darwin |
|  4 |    Hobart |
|  5 |    Sydney |
|  6 | Melbourne |
|  7 |     Perth |

| ABC | City name |
| :---| :---------|
| 1   | Adelaide  |
| 2   | Brisbane  |
| 3   | Darwin    |
| 4   | Hobart    |
| 5   | Sydney    |
| 6   | Melbourne |
| 7   | Perth     |

| ABC | City name |
| :-: | :-------: |
|  1  |  Adelaide |
|  2  |  Brisbane |
|  3  |   Darwin  |
|  4  |   Hobart  |
|  5  |   Sydney  |
|  6  | Melbourne |
|  7  |   Perth   |

| ABC | City name |
|---: |---------: |
|   1 |  Adelaide |
|   2 |  Brisbane |
|   3 |    Darwin |
|   4 |    Hobart |
|   5 |    Sydney |
|   6 | Melbourne |
|   7 |     Perth |
City name
1 Adelaide
2 Brisbane
3 Darwin
4 Hobart
5 Sydney
6 Melbourne
7 Perth
City name
1 Adelaide
2 Brisbane
3 Darwin
4 Hobart
5 Sydney
6 Melbourne
7 Perth
City name
1 Adelaide
2 Brisbane
3 Darwin
4 Hobart
5 Sydney
6 Melbourne
7 Perth
A City name
1 Adelaide
2 Brisbane
3 Darwin
4 Hobart
5 Sydney
6 Melbourne
7 Perth
A City name
1 Adelaide
2 Brisbane
3 Darwin
4 Hobart
5 Sydney
6 Melbourne
7 Perth
A City name
1 Adelaide
2 Brisbane
3 Darwin
4 Hobart
5 Sydney
6 Melbourne
7 Perth
AB City name
1 Adelaide
2 Brisbane
3 Darwin
4 Hobart
5 Sydney
6 Melbourne
7 Perth
AB City name
1 Adelaide
2 Brisbane
3 Darwin
4 Hobart
5 Sydney
6 Melbourne
7 Perth
AB City name
1 Adelaide
2 Brisbane
3 Darwin
4 Hobart
5 Sydney
6 Melbourne
7 Perth
ABC City name
1 Adelaide
2 Brisbane
3 Darwin
4 Hobart
5 Sydney
6 Melbourne
7 Perth
ABC City name
1 Adelaide
2 Brisbane
3 Darwin
4 Hobart
5 Sydney
6 Melbourne
7 Perth
ABC City name
1 Adelaide
2 Brisbane
3 Darwin
4 Hobart
5 Sydney
6 Melbourne
7 Perth
codecov[bot] commented 3 months ago

Codecov Report

All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 94.51%. Comparing base (1f156f8) to head (fd24cf6).

Additional details and impacted files ```diff @@ Coverage Diff @@ ## main #296 +/- ## ========================================== + Coverage 94.48% 94.51% +0.02% ========================================== Files 5 5 Lines 2431 2441 +10 ========================================== + Hits 2297 2307 +10 Misses 134 134 ``` | [Flag](https://app.codecov.io/gh/jazzband/prettytable/pull/296/flags?src=pr&el=flags&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=jazzband) | Coverage Δ | | |---|---|---| | [macos-latest](https://app.codecov.io/gh/jazzband/prettytable/pull/296/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=jazzband) | `94.46% <100.00%> (+0.02%)` | :arrow_up: | | [ubuntu-latest](https://app.codecov.io/gh/jazzband/prettytable/pull/296/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=jazzband) | `94.46% <100.00%> (+0.02%)` | :arrow_up: | | [windows-latest](https://app.codecov.io/gh/jazzband/prettytable/pull/296/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=jazzband) | `94.42% <100.00%> (+0.02%)` | :arrow_up: | Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=jazzband#carryforward-flags-in-the-pull-request-comment) to find out more.

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

hugovk commented 3 months ago

Hi @mumblingMac!

This is a follow-on from https://github.com/jazzband/prettytable/pull/268, how does this fix look?