Giter VIP home page Giter VIP logo

Comments (9)

lytedev avatar lytedev commented on July 4, 2024

Possibly related: go-yaml/yaml#34

from cue.

lytedev avatar lytedev commented on July 4, 2024

My workaround for this, for anybody who cares, was to output JSON (cue ... --out json) which any YAML deserializer should handle just fine.

from cue.

verdverm avatar verdverm commented on July 4, 2024

This seems more like a problem with yq and Yaml 1.1 vs 1.2+ (looking through the go-yaml issue you linked

$ echo 'service: port_mappings: ["2222:22"]' | cue eval - --out yaml
service:
  port_mappings:
  - 2222:22

This looks to be valid YAML 1.2+

Also, which yq are you using

This one works fine https://github.com/mikefarah/yq/releases/tag/v4.9.6

$ echo 'service: port_mappings: ["2222:22"]' | cue eval - --out yaml | yq e -
service:
  port_mappings:
    - 2222:22

from cue.

lytedev avatar lytedev commented on July 4, 2024

This also happens with docker-compose, to be clear. I just used yq as a quick way to demonstrate the problem. Also, if you refer to this comment on the linked issue, you can see that these YAML deserializers/parsers are following the spec for parsing what my Cue intended to be a string as a base-60 float: go-yaml/yaml#34 (comment)

from cue.

verdverm avatar verdverm commented on July 4, 2024

It's been more than 10 years since YAML the 1.2 spec was written. Should the parsers be updated at this point? I'm not sure what CUE has said about how far back it supports various specs... not sure if there is a link anywhere. I only know for Go it is the same versions that the Go team supports.


Other libraries are specifically saying no to supporting the base60 nonsense

Note that CUE is using the yaml.v3 (https://github.com/cuelang/cue/blob/master/go.mod#L24) but may also have some custom yaml parsing around?

Are the python yq and docker-compose using the same python library which is supporting this? Is this primarily a python related thing? Looking at some other major languages, the top yaml libraries target v1.2 as well, some specifically calling out dropping the base60.

from cue.

niemeyer avatar niemeyer commented on July 4, 2024

go-yaml has indeed never supported the float 60 representation as it's a bad idea (spec 1.2 confirms that), but it does marshal such values as quoted strings to prevent them from being interpreted incorrectly by old parsers. So it doesn't look like that specific output was generated by go-yaml v3.

Here is how it would handle it:

https://play.golang.org/p/Y0Qg72VW2p1

from cue.

verdverm avatar verdverm commented on July 4, 2024

@niemeyer is the general (simple?) idea to quote any string which has a colon when emitting?

from cue.

niemeyer avatar niemeyer commented on July 4, 2024

No, we check the actual syntax of base 60 floats from the 1.1 spec. This is also far from being the only edge case in that regard. See bools on 1.1 vs. 1.2, for instance.

from cue.

cueckoo avatar cueckoo commented on July 4, 2024

This issue has been migrated to cue-lang/cue#1076.

For more details about CUE's migration to a new home, please see cue-lang/cue#1078.

from cue.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.