* [ruby-core:122369] [Ruby Bug#21392] Data classes do not allow overriding #inspect
@ 2025-06-01 23:32 austin (Austin Ziegler) via ruby-core
2025-06-02 0:34 ` [ruby-core:122372] " nobu (Nobuyoshi Nakada) via ruby-core
` (6 more replies)
0 siblings, 7 replies; 8+ messages in thread
From: austin (Austin Ziegler) via ruby-core @ 2025-06-01 23:32 UTC (permalink / raw)
To: ruby-core; +Cc: austin (Austin Ziegler)
Issue #21392 has been reported by austin (Austin Ziegler).
----------------------------------------
Bug #21392: Data classes do not allow overriding #inspect
https://bugs.ruby-lang.org/issues/21392
* Author: austin (Austin Ziegler)
* Status: Open
* ruby -v: 3.4.4
* Backport: 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN
----------------------------------------
I'm preparing a new version of Color and I have decided to make all of the colour classes Data classes. However, it does not appear that `#inspect` can be overridden:
```ruby
module Color
CIELAB = Data.define(:l, :a, :b) do
def inspect
"CIELAB [%.4f%% %.4f %.4f]" % [l, a, b]
end
end
end
p Color::CIELAB[1,2,3]
# Expected => CIELAB[1.000% 2.000 3.000]
# Actual #<data Color::CIELAB l=10, a=-125.0, b=20.5>
```
This feels like it should be permitted.
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/
^ permalink raw reply [flat|nested] 8+ messages in thread
* [ruby-core:122372] [Ruby Bug#21392] Data classes do not allow overriding #inspect
2025-06-01 23:32 [ruby-core:122369] [Ruby Bug#21392] Data classes do not allow overriding #inspect austin (Austin Ziegler) via ruby-core
@ 2025-06-02 0:34 ` nobu (Nobuyoshi Nakada) via ruby-core
2025-06-02 1:57 ` [ruby-core:122373] " mame (Yusuke Endoh) via ruby-core
` (5 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: nobu (Nobuyoshi Nakada) via ruby-core @ 2025-06-02 0:34 UTC (permalink / raw)
To: ruby-core; +Cc: nobu (Nobuyoshi Nakada)
Issue #21392 has been updated by nobu (Nobuyoshi Nakada).
Status changed from Open to Feedback
I get the expected results for 3.2..master.
----------------------------------------
Bug #21392: Data classes do not allow overriding #inspect
https://bugs.ruby-lang.org/issues/21392#change-113516
* Author: austin (Austin Ziegler)
* Status: Feedback
* ruby -v: 3.4.4
* Backport: 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN
----------------------------------------
I'm preparing a new version of Color and I have decided to make all of the colour classes Data classes. However, it does not appear that `#inspect` can be overridden:
```ruby
module Color
CIELAB = Data.define(:l, :a, :b) do
def inspect
"CIELAB [%.4f%% %.4f %.4f]" % [l, a, b]
end
end
end
p Color::CIELAB[1,2,3]
# Expected => CIELAB[1.000% 2.000 3.000]
# Actual #<data Color::CIELAB l=10, a=-125.0, b=20.5>
```
This feels like it should be permitted.
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/
^ permalink raw reply [flat|nested] 8+ messages in thread
* [ruby-core:122373] [Ruby Bug#21392] Data classes do not allow overriding #inspect
2025-06-01 23:32 [ruby-core:122369] [Ruby Bug#21392] Data classes do not allow overriding #inspect austin (Austin Ziegler) via ruby-core
2025-06-02 0:34 ` [ruby-core:122372] " nobu (Nobuyoshi Nakada) via ruby-core
@ 2025-06-02 1:57 ` mame (Yusuke Endoh) via ruby-core
2025-06-02 2:14 ` [ruby-core:122374] " austin (Austin Ziegler) via ruby-core
` (4 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: mame (Yusuke Endoh) via ruby-core @ 2025-06-02 1:57 UTC (permalink / raw)
To: ruby-core; +Cc: mame (Yusuke Endoh)
Issue #21392 has been updated by mame (Yusuke Endoh).
I cannot reproduce the issue neither.
```
$ cat t.rb
module Color
CIELAB = Data.define(:l, :a, :b) do
def inspect
"CIELAB [%.4f%% %.4f %.4f]" % [l, a, b]
end
end
end
p Color::CIELAB[1,2,3]
$ ruby -v t.rb
ruby 3.4.2 (2025-02-15 revision d2930f8e7a) +PRISM [x86_64-linux]
CIELAB [1.0000% 2.0000 3.0000]
```
----------------------------------------
Bug #21392: Data classes do not allow overriding #inspect
https://bugs.ruby-lang.org/issues/21392#change-113517
* Author: austin (Austin Ziegler)
* Status: Feedback
* ruby -v: 3.4.4
* Backport: 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN
----------------------------------------
I'm preparing a new version of Color and I have decided to make all of the colour classes Data classes. However, it does not appear that `#inspect` can be overridden:
```ruby
module Color
CIELAB = Data.define(:l, :a, :b) do
def inspect
"CIELAB [%.4f%% %.4f %.4f]" % [l, a, b]
end
end
end
p Color::CIELAB[1,2,3]
# Expected => CIELAB[1.000% 2.000 3.000]
# Actual #<data Color::CIELAB l=10, a=-125.0, b=20.5>
```
This feels like it should be permitted.
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/
^ permalink raw reply [flat|nested] 8+ messages in thread
* [ruby-core:122374] [Ruby Bug#21392] Data classes do not allow overriding #inspect
2025-06-01 23:32 [ruby-core:122369] [Ruby Bug#21392] Data classes do not allow overriding #inspect austin (Austin Ziegler) via ruby-core
2025-06-02 0:34 ` [ruby-core:122372] " nobu (Nobuyoshi Nakada) via ruby-core
2025-06-02 1:57 ` [ruby-core:122373] " mame (Yusuke Endoh) via ruby-core
@ 2025-06-02 2:14 ` austin (Austin Ziegler) via ruby-core
2025-06-02 2:22 ` [ruby-core:122375] " mame (Yusuke Endoh) via ruby-core
` (3 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: austin (Austin Ziegler) via ruby-core @ 2025-06-02 2:14 UTC (permalink / raw)
To: ruby-core; +Cc: austin (Austin Ziegler)
Issue #21392 has been updated by austin (Austin Ziegler).
You are correct (and I should have known better; I have unit tests proving this).
I'm not sure if this is an IRB issue, because IRB's output always outputs `<data …>`.
```
irb(main):002> p Color::CIELAB[1,2,3]
CIELAB [1.0000% 2.0000 3.0000]
=> #<data Color::CIELAB l=1, a=2, b=3>
```
----------------------------------------
Bug #21392: Data classes do not allow overriding #inspect
https://bugs.ruby-lang.org/issues/21392#change-113518
* Author: austin (Austin Ziegler)
* Status: Feedback
* ruby -v: 3.4.4
* Backport: 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN
----------------------------------------
I'm preparing a new version of Color and I have decided to make all of the colour classes Data classes. However, it does not appear that `#inspect` can be overridden:
```ruby
module Color
CIELAB = Data.define(:l, :a, :b) do
def inspect
"CIELAB [%.4f%% %.4f %.4f]" % [l, a, b]
end
end
end
p Color::CIELAB[1,2,3]
# Expected => CIELAB[1.000% 2.000 3.000]
# Actual #<data Color::CIELAB l=10, a=-125.0, b=20.5>
```
This feels like it should be permitted.
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/
^ permalink raw reply [flat|nested] 8+ messages in thread
* [ruby-core:122375] [Ruby Bug#21392] Data classes do not allow overriding #inspect
2025-06-01 23:32 [ruby-core:122369] [Ruby Bug#21392] Data classes do not allow overriding #inspect austin (Austin Ziegler) via ruby-core
` (2 preceding siblings ...)
2025-06-02 2:14 ` [ruby-core:122374] " austin (Austin Ziegler) via ruby-core
@ 2025-06-02 2:22 ` mame (Yusuke Endoh) via ruby-core
2025-06-02 6:00 ` [ruby-core:122377] " nobu (Nobuyoshi Nakada) via ruby-core
` (2 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: mame (Yusuke Endoh) via ruby-core @ 2025-06-02 2:22 UTC (permalink / raw)
To: ruby-core; +Cc: mame (Yusuke Endoh)
Issue #21392 has been updated by mame (Yusuke Endoh).
Status changed from Feedback to Assigned
Assignee set to ima1zumi (Mari Imaizumi)
Thank you, confirmed. @ima1zumi @tompng Can you take a look?
```
$ irb
irb(main):001* module Color
irb(main):002* CIELAB = Data.define(:l, :a, :b) do
irb(main):003* def inspect
irb(main):004* "CIELAB [%.4f%% %.4f %.4f]" % [l, a, b]
irb(main):005* end
irb(main):006* end
irb(main):007> end
=> Color::CIELAB
irb(main):008> Color::CIELAB[1,2,3]
=> #<data Color::CIELAB l=1, a=2, b=3>
```
----------------------------------------
Bug #21392: Data classes do not allow overriding #inspect
https://bugs.ruby-lang.org/issues/21392#change-113519
* Author: austin (Austin Ziegler)
* Status: Assigned
* Assignee: ima1zumi (Mari Imaizumi)
* ruby -v: 3.4.4
* Backport: 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN
----------------------------------------
I'm preparing a new version of Color and I have decided to make all of the colour classes Data classes. However, it does not appear that `#inspect` can be overridden:
```ruby
module Color
CIELAB = Data.define(:l, :a, :b) do
def inspect
"CIELAB [%.4f%% %.4f %.4f]" % [l, a, b]
end
end
end
p Color::CIELAB[1,2,3]
# Expected => CIELAB[1.000% 2.000 3.000]
# Actual #<data Color::CIELAB l=10, a=-125.0, b=20.5>
```
This feels like it should be permitted.
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/
^ permalink raw reply [flat|nested] 8+ messages in thread
* [ruby-core:122377] [Ruby Bug#21392] Data classes do not allow overriding #inspect
2025-06-01 23:32 [ruby-core:122369] [Ruby Bug#21392] Data classes do not allow overriding #inspect austin (Austin Ziegler) via ruby-core
` (3 preceding siblings ...)
2025-06-02 2:22 ` [ruby-core:122375] " mame (Yusuke Endoh) via ruby-core
@ 2025-06-02 6:00 ` nobu (Nobuyoshi Nakada) via ruby-core
2025-06-03 2:14 ` [ruby-core:122384] " austin (Austin Ziegler) via ruby-core
2025-06-05 12:11 ` [ruby-core:122453] " alanwu (Alan Wu) via ruby-core
6 siblings, 0 replies; 8+ messages in thread
From: nobu (Nobuyoshi Nakada) via ruby-core @ 2025-06-02 6:00 UTC (permalink / raw)
To: ruby-core; +Cc: nobu (Nobuyoshi Nakada)
Issue #21392 has been updated by nobu (Nobuyoshi Nakada).
austin (Austin Ziegler) wrote in #note-3:
> You are correct (and I should have known better; I have unit tests proving this).
What unit tests?
You can define `pretty_print` for IRB.
```ruby
def pretty_print(q)
q.text "CIELAB"
q.breakable
q.group 2, "[", "]" do
q.text "%.4f%%" % l
q.breakable
q.text "%.4f" % a
q.breakable
q.text "%.4f" % b
end
end
```
----------------------------------------
Bug #21392: Data classes do not allow overriding #inspect
https://bugs.ruby-lang.org/issues/21392#change-113523
* Author: austin (Austin Ziegler)
* Status: Assigned
* Assignee: ima1zumi (Mari Imaizumi)
* ruby -v: 3.4.4
* Backport: 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN
----------------------------------------
I'm preparing a new version of Color and I have decided to make all of the colour classes Data classes. However, it does not appear that `#inspect` can be overridden:
```ruby
module Color
CIELAB = Data.define(:l, :a, :b) do
def inspect
"CIELAB [%.4f%% %.4f %.4f]" % [l, a, b]
end
end
end
p Color::CIELAB[1,2,3]
# Expected => CIELAB[1.000% 2.000 3.000]
# Actual #<data Color::CIELAB l=10, a=-125.0, b=20.5>
```
This feels like it should be permitted.
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/
^ permalink raw reply [flat|nested] 8+ messages in thread
* [ruby-core:122384] [Ruby Bug#21392] Data classes do not allow overriding #inspect
2025-06-01 23:32 [ruby-core:122369] [Ruby Bug#21392] Data classes do not allow overriding #inspect austin (Austin Ziegler) via ruby-core
` (4 preceding siblings ...)
2025-06-02 6:00 ` [ruby-core:122377] " nobu (Nobuyoshi Nakada) via ruby-core
@ 2025-06-03 2:14 ` austin (Austin Ziegler) via ruby-core
2025-06-05 12:11 ` [ruby-core:122453] " alanwu (Alan Wu) via ruby-core
6 siblings, 0 replies; 8+ messages in thread
From: austin (Austin Ziegler) via ruby-core @ 2025-06-03 2:14 UTC (permalink / raw)
To: ruby-core; +Cc: austin (Austin Ziegler)
Issue #21392 has been updated by austin (Austin Ziegler).
nobu (Nobuyoshi Nakada) wrote in #note-5:
> austin (Austin Ziegler) wrote in #note-3:
> > You are correct (and I should have known better; I have unit tests proving this).
>
> What unit tests?
In my feature branch where I'm converting to Data classes.
>
> You can define `pretty_print` for IRB.
>
> ```ruby
> def pretty_print(q)
> q.text "CIELAB"
> q.breakable
> q.group 2, "[", "]" do
> q.text "%.4f%%" % l
> q.breakable
> q.text "%.4f" % a
> q.breakable
> q.text "%.4f" % b
> end
> end
> ```
This is the problem, of course, with having maintained something backwards compatible (Color is currently _nominally_ valid for 1.8) as long as I have. I wasn't aware that there was a new call for defining a pretty print, because IRB *used* to fall back to `inspect`. However, `Data` classes presumably define a pretty printer and overrides `#inspect` within IRB.
This is good to know, and I'll define a `pretty_print` method.
This can be closed.
----------------------------------------
Bug #21392: Data classes do not allow overriding #inspect
https://bugs.ruby-lang.org/issues/21392#change-113532
* Author: austin (Austin Ziegler)
* Status: Assigned
* Assignee: ima1zumi (Mari Imaizumi)
* ruby -v: 3.4.4
* Backport: 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN
----------------------------------------
I'm preparing a new version of Color and I have decided to make all of the colour classes Data classes. However, it does not appear that `#inspect` can be overridden:
```ruby
module Color
CIELAB = Data.define(:l, :a, :b) do
def inspect
"CIELAB [%.4f%% %.4f %.4f]" % [l, a, b]
end
end
end
p Color::CIELAB[1,2,3]
# Expected => CIELAB[1.000% 2.000 3.000]
# Actual #<data Color::CIELAB l=10, a=-125.0, b=20.5>
```
This feels like it should be permitted.
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/
^ permalink raw reply [flat|nested] 8+ messages in thread
* [ruby-core:122453] [Ruby Bug#21392] Data classes do not allow overriding #inspect
2025-06-01 23:32 [ruby-core:122369] [Ruby Bug#21392] Data classes do not allow overriding #inspect austin (Austin Ziegler) via ruby-core
` (5 preceding siblings ...)
2025-06-03 2:14 ` [ruby-core:122384] " austin (Austin Ziegler) via ruby-core
@ 2025-06-05 12:11 ` alanwu (Alan Wu) via ruby-core
6 siblings, 0 replies; 8+ messages in thread
From: alanwu (Alan Wu) via ruby-core @ 2025-06-05 12:11 UTC (permalink / raw)
To: ruby-core; +Cc: alanwu (Alan Wu)
Issue #21392 has been updated by alanwu (Alan Wu).
Status changed from Assigned to Closed
Closing as requested.
----------------------------------------
Bug #21392: Data classes do not allow overriding #inspect
https://bugs.ruby-lang.org/issues/21392#change-113638
* Author: austin (Austin Ziegler)
* Status: Closed
* Assignee: ima1zumi (Mari Imaizumi)
* ruby -v: 3.4.4
* Backport: 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN
----------------------------------------
I'm preparing a new version of Color and I have decided to make all of the colour classes Data classes. However, it does not appear that `#inspect` can be overridden:
```ruby
module Color
CIELAB = Data.define(:l, :a, :b) do
def inspect
"CIELAB [%.4f%% %.4f %.4f]" % [l, a, b]
end
end
end
p Color::CIELAB[1,2,3]
# Expected => CIELAB[1.000% 2.000 3.000]
# Actual #<data Color::CIELAB l=10, a=-125.0, b=20.5>
```
This feels like it should be permitted.
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2025-06-05 12:11 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-06-01 23:32 [ruby-core:122369] [Ruby Bug#21392] Data classes do not allow overriding #inspect austin (Austin Ziegler) via ruby-core
2025-06-02 0:34 ` [ruby-core:122372] " nobu (Nobuyoshi Nakada) via ruby-core
2025-06-02 1:57 ` [ruby-core:122373] " mame (Yusuke Endoh) via ruby-core
2025-06-02 2:14 ` [ruby-core:122374] " austin (Austin Ziegler) via ruby-core
2025-06-02 2:22 ` [ruby-core:122375] " mame (Yusuke Endoh) via ruby-core
2025-06-02 6:00 ` [ruby-core:122377] " nobu (Nobuyoshi Nakada) via ruby-core
2025-06-03 2:14 ` [ruby-core:122384] " austin (Austin Ziegler) via ruby-core
2025-06-05 12:11 ` [ruby-core:122453] " alanwu (Alan Wu) via ruby-core
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).