Re: value "on"=True in pyyaml?

Oren Ben-Kiki <[email protected]> Thu, 3 Mar 2016 19:24:15 +0200
Newsgroups gmane.text.yaml.general
Message-ID <CADJiDhtn8_W6jRZPQGiMT+Mt3uVX0Mb4o5RF5UXPTs1j+fUHcQ@mail.gmail.com>
It goes back to "how breaking we want 2.0 to be". E.g., we could say >
behaves like ", (with a warning?), so as not to break existing files "too
much". Or something.

On Thu, Mar 3, 2016 at 6:05 PM, Ingy dot Net <[email protected]> wrote:

> On Tue, Mar 1, 2016 at 9:26 PM, Oren Ben-Kiki <[email protected]> wrote:
>
>> I'm uncomfortable saying that `foo: true` has different meaning if it is
>> in block mapping vs. a flow mapping, even in 2.0.
>>
>
> I was uncomfortable having simple plain words type differently in block
> context, which was not needed to achieve JSON compatibility. We've done
> some weird things. :)
>
>
>>
>> Wrt. the wiki:
>>
>
> First off the wiki needs grooming. I'll go through it this week and get
> back to you. Most of my content was added in 2011 and I'm fairly sure my
> opinions have evolved a bit. (Mostly because of the exponential uptake of
> YAML since then).
>
>
>>
>> - Lots of potential in the flow scalars proposal, details need to be
>> polished. Definitely 2.0 here. Agree > isn't used in the wild but |
>> definitely is. How breaking do we want 2.0 to be? Hmmm.
>>
>
> Now it is used in the wild. A lot. I see it in Ansible playbooks a lot. It
> fits fairly well for very long bash commands that should have no escaping
> semantics.
>
>
>> - Not sure about the embedded YAML, most languages allow their own
>> variable interpolation in "here documents" (e.g., Ruby allows `<<EOF ...
>> #{foo} ... EOF`).
>>
>> - Allowing explicit invalid UTF values using the \... escape sequences: I
>> guess so - if people _explicitly_ request invalid UTF bytes, "on their head
>> be it". This would allow for using "strings" to use as "binary blobs"
>> without needing esoteric data types such as base64.
>>
>> - Defining a standard way to convert to/from JSON: Sure.
>>
>> - YAML profiles: This is exactly what we started doing in the spec
>> (failsafe vs. JSON vs. Core). We need to clean up the type repository
>> accordingly. Probably in the context of some semi-standard schema mechanism.
>>
>
>
>
>>
>> On Wed, Mar 2, 2016 at 12:57 AM, Ingy dot Net <[email protected]> wrote:
>>
>>> Oren,
>>>
>>> JSON compatibility only applies to flow form. I'm suggesting only string
>>> and numeric (and possibly null) implicits in the block form.
>>>
>>> Andrey,
>>>
>>> Certainly too late for 1.2.
>>>
>>> re 2.0, I assume you've seen: https://github.com/yaml/YAML2/wiki
>>>
>>> I'd like to see your list. :-)
>>>
>>> On Tue, Mar 1, 2016 at 11:18 AM, Oren Ben-Kiki <[email protected]>
>>> wrote:
>>>
>>>>
>>>> The 1.2 spec defines the JSON-compatible schema which I think satisfies
>>>> all the points you made.
>>>>
>>>> We should definitely retire http://yaml.org/type/ or at least replace
>>>> it with something better. People doing YAML 1.2 should not start copying
>>>> from the current content there - you are right, this is something that
>>>> hurts us.
>>>>
>>>> Working on a schema language - it is a decade late, but sure, why not?
>>>> Would be fun :-)
>>>>
>>>> I'm not certain I follow wrt. booleans though. Do you suggest we break
>>>> JSON compatibility?
>>>>
>>>> Oren.
>>>>
>>>>
>>>> On Tue, Mar 1, 2016 at 9:07 PM, Ingy dot Net <[email protected]> wrote:
>>>>
>>>>> This is an example of one of the biggest issues with the state of
>>>>> modern day YAML. I'd bet no 2 implementations do the same thing wrt
>>>>> implicit typing of plain scalars.
>>>>>
>>>>> I think we need to retire http://yaml.org/type/
>>>>>
>>>>> It's an idea from over 10 years ago that was well meaning but turned
>>>>> out poorly. People making new YAML frameworks still use this info.
>>>>>
>>>>> I am currently of the opinion that:
>>>>>
>>>>>    - Plain scalars in block context should only implicitly type to
>>>>>    numbers, strings or null
>>>>>       - Only JSON numerics are typed to !!int or !!float
>>>>>       - Plain (unquoted) empty value is typed to !!null
>>>>>       - Everything else is typed to !!str
>>>>>    - Booleans should migrate to only supporting !!true and !!false
>>>>>       - Loaders using a default schema should support !true !false
>>>>>       (and !null)
>>>>>       - The plain values of true and false should become strings
>>>>>       - This might take a while to get everyone on board
>>>>>    - Plain scalars in flow context should behave same as JSON.
>>>>>       - Empty values are !!null
>>>>>    - We should ditch octal, binary etc as possible implicit typing of
>>>>>    numbers
>>>>>    - We should ditch the (22 of them!!) special plain values that
>>>>>    become boolean
>>>>>       - Only true and false. In flow context. Lowercase.
>>>>>
>>>>> We can still keep the tag:yaml.org,2002 types, but we need to get out
>>>>> of the implicit grab bag business. It will be the death of YAML!
>>>>>
>>>>> ---
>>>>>
>>>>> Related to that, is the concept that every YAML loader loads YAML to
>>>>> native objects under the direction of a "schema"; but currently that
>>>>> "schema" is baked into the code implementing loader.
>>>>>
>>>>> If we had a schema language, then all loaders could load YAML
>>>>> according to a textual (thus easily reasonable) guide. Schemas could even
>>>>> be written for loaders that didn't yet support them (as part of their doc)
>>>>> so that people would know what to expect from their baked in behavior.
>>>>>
>>>>> More importantly, schemas could be written for popular YAML uses like,
>>>>> say, Ansible or TravisCI that need values loaded a particular way. These
>>>>> schemas could even be made to implicitly type true/false/null scalars, for
>>>>> backwards compat.
>>>>>
>>>>>
>>>>> On Mon, Feb 29, 2016 at 7:41 AM, Oren Ben-Kiki <[email protected]>
>>>>> wrote:
>>>>>
>>>>>> This is old YAML 1.0/1.1 proposed schema behavior. It was deprecated
>>>>>> (to maximize JSON compatibility among other reasons).
>>>>>>
>>>>>> On Mon, Feb 29, 2016 at 5:20 PM, <[email protected]> wrote:
>>>>>>
>>>>>>> Is this as expected?
>>>>>>>
>>>>>>>
>>>>>>> kbriggs> cat yaml_on.py
>>>>>>>
>>>>>>>
>>>>>>> import yaml
>>>>>>> x="""
>>>>>>>  0: on
>>>>>>>  1: ON
>>>>>>>  2: 'ON'
>>>>>>> """
>>>>>>> print yaml.load(x)
>>>>>>>
>>>>>>>
>>>>>>> kbriggs> python yaml_on.py
>>>>>>> {0: True, 1: True, 2: 'ON'}
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Keith
>>>>>>>
>>>>>>>
>>>>>>> ------------------------------------------------------------------------------
>>>>>>> Site24x7 APM Insight: Get Deep Visibility into Application
>>>>>>> Performance
>>>>>>> APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
>>>>>>> Monitor end-to-end web transactions and take corrective actions now
>>>>>>> Troubleshoot faster and improve end-user experience. Signup Now!
>>>>>>> http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
>>>>>>> _______________________________________________
>>>>>>> Yaml-core mailing list
>>>>>>> [email protected]
>>>>>>> https://lists.sourceforge.net/lists/listinfo/yaml-core
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>> ------------------------------------------------------------------------------
>>>>>> Site24x7 APM Insight: Get Deep Visibility into Application Performance
>>>>>> APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
>>>>>> Monitor end-to-end web transactions and take corrective actions now
>>>>>> Troubleshoot faster and improve end-user experience. Signup Now!
>>>>>> http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
>>>>>> _______________________________________________
>>>>>> Yaml-core mailing list
>>>>>> [email protected]
>>>>>> https://lists.sourceforge.net/lists/listinfo/yaml-core
>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>

------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140

_______________________________________________
Yaml-core mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/yaml-core