Comments (9)
Possibly related: go-yaml/yaml#34
from cue.
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.
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.
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.
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.
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.
@niemeyer is the general (simple?) idea to quote any string which has a colon when emitting?
from cue.
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.
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)
- cmd/cue: import/export (go|rust|...) HOT 3
- cmd/cue: import should ignore null documents HOT 4
- cmd/cue: fmt converts tabs to spaces in comments HOT 2
- cue eval panic instead of erroing with circular definition HOT 2
- Intermittent #FileInfo errors when parsing cue HOT 3
- cue vet hangs with template, list and default value HOT 1
- cmd/cue: simplify ["k"]: v to "k": v HOT 1
- Exporting binary & text protos via protoreflect HOT 1
- cuelang.org: document cue export for all conversions HOT 1
- panic in `cue get go github.com/argoproj/argo-cd/v2/...` HOT 2
- import cycle causes infinite loop HOT 2
- [regression] cue def openapi fails to handle disjunctions HOT 2
- cue segfault HOT 2
- exec.Run runner of kind "XXX" not found with k8s resources HOT 1
- cue trim bug: conjunctions and definitions HOT 1
- Parse error on default constraints (...type) HOT 5
- Tags across packages HOT 3
- `command "dump" is not defined` when running `cue dump ./...` HOT 2
- CUE has moved to a new home! HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from cue.