2015-11-20 1 views
2

Que signifie 09:00 dans YAML? A-t-il une définition officielle?Que signifie 09:00 dans YAML?

Je ne peux pas voir anything about this syntax in the tags section of the spec. Compte tenu de la YAML suivante:

- 09:00 
- 10:00 

PyYAML interprète seule la première en tant que chaîne

>>> import yaml 
>>> yaml.load("- 09:00\n- 10:00") 
['09:00', 600] 

Alors que YAMLlint convertit à la fois à ce qui ressemble secondes:

--- 
- 32400 
- 36000 

Que devrait-il être? Est-ce bien défini?

Répondre

1

Vous faites référence à la version 1.2 de la spécification, mais PyYAML est seulement conforme à 1.1. Dans la spécification 1.1, il y a référence à sexagesimals et le code pour cela est ce qui reconnaît le 09:00 comme un nombre entier.

Ma réponse here on SO donne un exemple sur la façon de modifier mon ruamel.yaml (dérivé de PyYAML) pour ne pas reconnaître les sexagesimals comme des entiers, mais comme des chaînes. Vous devriez être capable d'appliquer cette astuce à PyYAML lui-même. A partir de ruamel.yaml 0.11, son RoundTripLoader ne prendra pas en charge les sexagesimals dans les documents non explicitement marqués %YAML 1.1.