Time objects fail to round-trip with equality
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 45/100
Direzione di ricerca
Esegui lo script Ruby fornito e analizza il round trip YAML.dump/YAML.load per gli oggetti Time, confrontando Time#==, Time#to_f e Time#nsec come mostrato. Il lavoro è completato quando le istanze Time originale e caricata risultano uguali, incluso il caso dei secondi frazionari riportato.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
I ran the following script:
require 'yaml'
puts Psych::VERSION
def compare(time)
dumped = YAML.dump(time)
loaded = YAML.load(YAML.dump(time))
equal = loaded == time
pp(
original: time,
loaded: loaded,
equal: equal,
# nsec: { original: time.nsec, loaded: loaded.nsec, equal: time.nsec == loaded.nsec }
float: { original: time.to_f, loaded: loaded.to_f, equal: time.to_f == loaded.to_f }
)
end
compare(Time.new(2002, 4, 5, 6, 7, 8.9992321))
compare(YAML.load YAML.dump Time.new(2002, 4, 5, 6, 7, 8.9992321))
And got the following output:
3.0.2
{:original=>2002-04-05 06:07:08 -0800,
:loaded=>2002-04-05 06:07:08 -0800,
:equal=>false,
:float=>
{:original=>1018015628.999232, :loaded=>1018015628.9992322, :equal=>false}}
{:original=>2002-04-05 06:07:08 -0800,
:loaded=>2002-04-05 06:07:08 -0800,
:equal=>true,
:float=>
{:original=>1018015628.9992322, :loaded=>1018015628.9992322, :equal=>true}}
I would expect both Time instances to compare equal to their dumped & loaded counterpart, but the first does not. By inspection, we can see that the Time#to_f of the original & loaded instances are different, which I'd guess is what's breaking Time#==. Curiously, the Time#nsec property is preserved properly.
- Lingua principale
- Ruby
- Stelle
- 597
- Fork
- 223
- Merge medio
- 14m
- PR unite (30g)
- 1
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di ruby/psych
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
-
Documentation
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 72/100
-
Psych.dump raises Encoding::CompatibilityError for UTF-16/UTF-32 stringsForse già presa @Halvanhelv l’ha presa 31 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 55/100
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 68/100
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 52/100
Issue simili
-
ds-drift
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 76/100
we-promise/sure#4120 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 4 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
scanaislop/aislop#476 ·
I maintainer di solito rispondono entro 1 giorno
-
Dependencies view: `getParent` loops forever on untitled documents, extension host runs out of memoryForse già presa Una pull request collegata a questa issue è aperta o già unita. Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
I maintainer di solito rispondono entro 1 giorno
-
area/web interface
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
mastodon/mastodon#41000 · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno