# Current state and the future of PrettyTables.jl

**URL:** <https://discourse.julialang.org/t/current-state-and-the-future-of-prettytables-jl/118455>\
**Category:** Package Announcements\
**Tags:** prettytables\
**Created:** [August 21, 2024, 2:18pm UTC](https://discourse.julialang.org/t/current-state-and-the-future-of-prettytables-jl/118455 "2024-08-21T14:18:22Z")\
**Posts on this page:** 20\
**Page:** 7

<div class="post-metadata">

**Author:** ![juliohm](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/juliohm/32/215266_2.png) [@juliohm](https://discourse.julialang.org/u/juliohm)\
**Post date:** [February 27, 2025, 11:01pm UTC](https://discourse.julialang.org/t/current-state-and-the-future-of-prettytables-jl/118455/121 "2025-02-27T23:01:31Z")

</div>

Thank you @Ronis_BR ! No rush. Hope you can solve these problems🙏🏼

---

<div class="post-metadata">

**Author:** ![Ronis\_BR](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ronis_br/32/50999_2.png) [@Ronis\_BR](https://discourse.julialang.org/u/Ronis_BR)\
**Post date:** [February 27, 2025, 11:02pm UTC](https://discourse.julialang.org/t/current-state-and-the-future-of-prettytables-jl/118455/122 "2025-02-27T23:02:13Z")

</div>

Thanks!!

---

<div class="post-metadata">

**Author:** ![alfaromartino](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/alfaromartino/32/52986_2.png) [@alfaromartino](https://discourse.julialang.org/u/alfaromartino)\
**Post date:** [February 28, 2025, 6:17am UTC](https://discourse.julialang.org/t/current-state-and-the-future-of-prettytables-jl/118455/123 "2025-02-28T06:17:07Z")

</div>

Hope you can solve your problems soon! If it cheers you up, you should know that this package has massively helped a lot of people.

---

<div class="post-metadata">

**Author:** ![Ronis\_BR](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ronis_br/32/50999_2.png) [@Ronis\_BR](https://discourse.julialang.org/u/Ronis_BR)\
**Post date:** [February 28, 2025, 11:10am UTC](https://discourse.julialang.org/t/current-state-and-the-future-of-prettytables-jl/118455/124 "2025-02-28T11:10:20Z")

</div>

Thanks!!

---

<div class="post-metadata">

**Author:** ![hhaensel](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/hhaensel/32/1207_2.png) [@hhaensel](https://discourse.julialang.org/u/hhaensel)\
**Post date:** [March 28, 2025, 7:17am UTC](https://discourse.julialang.org/t/current-state-and-the-future-of-prettytables-jl/118455/125 "2025-03-28T07:17:47Z")

</div>

Hi @Ronis_BR,  
I hope your problems will be solved soon!

I am currently implementing PrettyTables into GenieFramework and I am about to define the following struct type that contains both the data and the configuration.

```julia
mutable struct PrettyTable{T}
    data::T
    conf::PrettyTablesConf
end

PrettyTable(data) = PrettyTable(data, PrettyTablesConf())

PrettyTables.pretty_table(@nospecialize(pt::PrettyTable); kwargs...) = pretty_table_with_conf(pt.conf, pt.data; kwargs...)
PrettyTables.pretty_table(@nospecialize(io_or_String), @nospecialize(pt::PrettyTable); kwargs...) = pretty_table_with_conf(pt.conf, pt.data; kwargs...)

```

Do you think it is reasonable to make that definition part of your package? Other frameworks might also benefit.

If so, I’d be happy to provide a PR including docs and tests.

---

<div class="post-metadata">

**Author:** ![Ronis\_BR](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ronis_br/32/50999_2.png) [@Ronis\_BR](https://discourse.julialang.org/u/Ronis_BR)\
**Post date:** [March 28, 2025, 1:10pm UTC](https://discourse.julialang.org/t/current-state-and-the-future-of-prettytables-jl/118455/126 "2025-03-28T13:10:32Z")

</div>

Hi @hhaensel !

I think it will be very nice. Indeed, there was a lot of request for this. However, maybe it is better to wait for the rewrite because I am changing **a lot** of things (check the `v3` branch).

---

<div class="post-metadata">

**Author:** ![hhaensel](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/hhaensel/32/1207_2.png) [@hhaensel](https://discourse.julialang.org/u/hhaensel)\
**Post date:** [March 28, 2025, 2:13pm UTC](https://discourse.julialang.org/t/current-state-and-the-future-of-prettytables-jl/118455/127 "2025-03-28T14:13:11Z")

</div>

Will do

---

<div class="post-metadata">

**Author:** ![hhaensel](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/hhaensel/32/1207_2.png) [@hhaensel](https://discourse.julialang.org/u/hhaensel)\
**Post date:** [March 29, 2025, 11:00pm UTC](https://discourse.julialang.org/t/current-state-and-the-future-of-prettytables-jl/118455/128 "2025-03-29T23:00:27Z")

</div>

Had a look into v3 and started a PR [add mutable struct `PrettyTable` to comprise data, backend and config by hhaensel · Pull Request #257 · ronisbr/PrettyTables.jl · GitHub](https://github.com/ronisbr/PrettyTables.jl/pull/257)

---

<div class="post-metadata">

**Author:** ![Ronis\_BR](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ronis_br/32/50999_2.png) [@Ronis\_BR](https://discourse.julialang.org/u/Ronis_BR)\
**Post date:** [March 31, 2025, 6:06pm UTC](https://discourse.julialang.org/t/current-state-and-the-future-of-prettytables-jl/118455/129 "2025-03-31T18:06:14Z")

</div>

Thanks! I will take a look as soon as possible!

---

<div class="post-metadata">

**Author:** ![Ronis\_BR](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ronis_br/32/50999_2.png) [@Ronis\_BR](https://discourse.julialang.org/u/Ronis_BR)\
**Post date:** [April 28, 2025, 10:07pm UTC](https://discourse.julialang.org/t/current-state-and-the-future-of-prettytables-jl/118455/130 "2025-04-28T22:07:21Z")

</div>

Hi everyone!

Just a small update, after a lot of life stuff, I will be able to resume the work in PrettyTables.jl 🙂 I hope to have some news during this weekend!

---

<div class="post-metadata">

**Author:** ![Jerry](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jerry/32/34537_2.png) [@Jerry](https://discourse.julialang.org/u/Jerry)\
**Post date:** [July 1, 2025, 3:10am UTC](https://discourse.julialang.org/t/current-state-and-the-future-of-prettytables-jl/118455/132 "2025-07-01T03:10:32Z")

</div>

Oh no! I use this all the time. Nothing easier to work with tables. Please keep it!

---

<div class="post-metadata">

**Author:** ![Ronis\_BR](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ronis_br/32/50999_2.png) [@Ronis\_BR](https://discourse.julialang.org/u/Ronis_BR)\
**Post date:** [July 1, 2025, 1:38pm UTC](https://discourse.julialang.org/t/current-state-and-the-future-of-prettytables-jl/118455/133 "2025-07-01T13:38:04Z")

</div>

Hi @Jerry !

Can you please detail your use case? I am really trying to keep the features at a minimum to make easier to maintain PrettyTables.jl.

---

<div class="post-metadata">

**Author:** ![karei](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/karei/32/214809_2.png) [@karei](https://discourse.julialang.org/u/karei)\
**Post date:** [July 1, 2025, 2:33pm UTC](https://discourse.julialang.org/t/current-state-and-the-future-of-prettytables-jl/118455/134 "2025-07-01T14:33:41Z")

</div>

Hi Ronis\_BR. Can I expect a little more compactness between columns? Currently, there is a minimum of 3 spaces between columns.

---

<div class="post-metadata">

**Author:** ![Ronis\_BR](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ronis_br/32/50999_2.png) [@Ronis\_BR](https://discourse.julialang.org/u/Ronis_BR)\
**Post date:** [July 1, 2025, 8:44pm UTC](https://discourse.julialang.org/t/current-state-and-the-future-of-prettytables-jl/118455/135 "2025-07-01T20:44:07Z")

</div>

Hi @karei!

If you remove all vertical lines, you can have two spaces between the columns:

```julia
julia> A = rand(3, 3)
3×3 Matrix{Float64}:
 0.488513 0.304572 0.29507
 0.0225261 0.402398 0.941425
 0.203874 0.570825 0.254407

julia> pretty_table(A; table_format = TextTableFormat(; @text__no_vertical_lines))
───────────────────────────────
    Col. 1 Col. 2 Col. 3
───────────────────────────────
  0.488513 0.304572 0.29507
 0.0225261 0.402398 0.941425
  0.203874 0.570825 0.254407
───────────────────────────────

```

---

<div class="post-metadata">

**Author:** ![Ronis\_BR](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ronis_br/32/50999_2.png) [@Ronis\_BR](https://discourse.julialang.org/u/Ronis_BR)\
**Post date:** [July 1, 2025, 8:49pm UTC](https://discourse.julialang.org/t/current-state-and-the-future-of-prettytables-jl/118455/136 "2025-07-01T20:49:53Z")

</div>

By the way, one very nice feature added to the v3 branch, which was created by @hhaensel, is the definition of the type `PrettyTable`. This was something that many people had asked for, but I had been hesitant to add it because PrettyTables.jl should primarily be a backend for printing tables, not a tool for defining objects. However, it turns out that we can use this new object to construct the table in a more bottom-up manner and also provide an object that can be used to overload printing in many cases.

```julia-repl
julia> using PrettyTables

julia> pt = PrettyTable(rand(3,3))
┌──────────┬──────────┬──────────┐
│ Col. 1 │ Col. 2 │ Col. 3 │
├──────────┼──────────┼──────────┤
│ 0.898637 │ 0.611356 │ 0.399206 │
│ 0.990356 │ 0.98928 │ 0.959873 │
│ 0.798757 │ 0.991781 │ 0.145727 │
└──────────┴──────────┴──────────┘

julia> pt.table_format = TextTableFormat(; @text__no_vertical_lines)
TextTableFormat(TextTableBorders('┐', '┌', '└', '┘', '┬', '├', '┤', '┼', '┴', '│', '─'), true, :none, true, :none, true, true, true, true, false, false, false, :none, false, false, true, 0)

julia> pt
──────────────────────────────
   Col. 1 Col. 2 Col. 3
──────────────────────────────
 0.898637 0.611356 0.399206
 0.990356 0.98928 0.959873
 0.798757 0.991781 0.145727
──────────────────────────────

julia> pt.column_labels = ["Column 1", MultiColumn(2, "Merged Columns")]
2-element Vector{Any}:
 "Column 1"
 MultiColumn(2, "Merged Columns", :c)

julia> pt
──────────────────────────────
 Column 1 Merged Columns
──────────────────────────────
 0.898637 0.611356 0.399206
 0.990356 0.98928 0.959873
 0.798757 0.991781 0.145727
──────────────────────────────

```

---

<div class="post-metadata">

**Author:** ![Ronis\_BR](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ronis_br/32/50999_2.png) [@Ronis\_BR](https://discourse.julialang.org/u/Ronis_BR)\
**Post date:** [July 3, 2025, 2:25pm UTC](https://discourse.julialang.org/t/current-state-and-the-future-of-prettytables-jl/118455/137 "2025-07-03T14:25:08Z")

</div>

Hi everyone!

I’ve finally pushed the version 3 of PrettyTables.jl to the `master` branch! While there’s still some documentation that I need to write, I believe we’re in a good position for everyone using the package to begin testing.

I anticipate breaking many things when I tag version 3. This is particularly concerning because DataFrames.jl will still be using version 2, and we cannot have two versions of the same package in use simultaneously. Therefore, I strongly believe that we should ensure a stable version 3 API before proceeding further.

Please, provide feedback here or in an issue in the repository!

---

<div class="post-metadata">

**Author:** ![Ronis\_BR](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ronis_br/32/50999_2.png) [@Ronis\_BR](https://discourse.julialang.org/u/Ronis_BR)\
**Post date:** [July 3, 2025, 2:26pm UTC](https://discourse.julialang.org/t/current-state-and-the-future-of-prettytables-jl/118455/138 "2025-07-03T14:26:01Z")

</div>

@Jerry by the way, I decided to keep the `stand_alone` option in HTML, but with a simplified CSS style that is easier to maintain.

---

<div class="post-metadata">

**Author:** ![Jerry](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jerry/32/34537_2.png) [@Jerry](https://discourse.julialang.org/u/Jerry)\
**Post date:** [July 4, 2025, 8:09pm UTC](https://discourse.julialang.org/t/current-state-and-the-future-of-prettytables-jl/118455/139 "2025-07-04T20:09:38Z")

</div>

Great. Sorry for the late reply. I dump the table to a HTML file and have the same Julia program command Firefox to open the new file in a new tab. Maybe I’m not using PrettyTables right.

---

<div class="post-metadata">

**Author:** ![Ronis\_BR](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ronis_br/32/50999_2.png) [@Ronis\_BR](https://discourse.julialang.org/u/Ronis_BR)\
**Post date:** [July 9, 2025, 3:51pm UTC](https://discourse.julialang.org/t/current-state-and-the-future-of-prettytables-jl/118455/140 "2025-07-09T15:51:21Z")

</div>

Hi!

The migration of DataFrames.jl to the new API is happening very smoothly 🙂

I decided to migrate the code in a local repository to check if features are missing.

 ![Captura de Tela 2025-07-09 às 12.45.05](https://global.discourse-cdn.com/julialang/original/3X/9/7/976422a96d9e5a66f2eaba30224eda0436f4ce8f.png)

---

<div class="post-metadata">

**Author:** ![Ronis\_BR](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ronis_br/32/50999_2.png) [@Ronis\_BR](https://discourse.julialang.org/u/Ronis_BR)\
**Post date:** [July 9, 2025, 8:57pm UTC](https://discourse.julialang.org/t/current-state-and-the-future-of-prettytables-jl/118455/141 "2025-07-09T20:57:49Z")

</div>

I am reaching a very nice integration between DataFrames.jl! When the support is added, we will be able to summarize `DataFrame`s very easily:

 ![Captura de Tela 2025-07-09 às 17.57.19](https://global.discourse-cdn.com/julialang/original/3X/9/f/9f6692681a5c1395e0ec653f6f9f50da03748b51.jpeg)

Maybe we can think about some deeper integration in DataFrames.jl so that it can use the new features in PrettyTables.jl.

[Previous page](https://discourse.julialang.org/t/current-state-and-the-future-of-prettytables-jl/118455.md?page=6)

[Next page](https://discourse.julialang.org/t/current-state-and-the-future-of-prettytables-jl/118455.md?page=8)
