Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add "generic" option to the "optional" configuration for handling nullable types #252

Merged
merged 5 commits into from
May 6, 2023

Conversation

DylanRJohnston
Copy link
Contributor

@DylanRJohnston DylanRJohnston commented Feb 10, 2023

This is an implementation for #251, it adds a new "generic" option for the "optional" configuration, and a companion type "optional_generic_type" which is a fully qualified type with a placeholder % for the generic parameter.

I have tested this locally with a custom optional.Value[A] implementation but I'm unsure how to add tests for this without bumping the Go version from 1.16 to 1.18. I would appreciate any input on how best to achieve this. Interested in any feedback on the design before I fill out the details on documentation and changelog.

I have:

  • Written a clear PR title and description (above)
  • Signed the Khan Academy CLA
  • Added tests covering my changes, if applicable
  • Included a link to the issue fixed, if applicable
  • Included documentation, for new features
  • Added an entry to the changelog

generate/convert.go Outdated Show resolved Hide resolved
generate/generate.go Outdated Show resolved Hide resolved
@DylanRJohnston
Copy link
Contributor Author

Here's an example of it in use DylanRJohnston/genqlient@main...DylanRJohnston:genqlient:example

@benjaminjkraft
Copy link
Collaborator

I love the concept, thanks very much for implementing it! I don't have time for a proper review today but one thing I see is we'll want tests for this -- there are snapshot tests already set up and you'll just have to make some way to skip these on versions below 1.18. I'm a bit busy right now but I'll try to get back with a full review within a week or so.

Copy link
Collaborator

@benjaminjkraft benjaminjkraft left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cool, this all seems reasonable to me once it has tests and a bit of documentation! I don't love the config syntax having two separate options but I don't have any better ideas right now so let's go with it. The only other thing I wonder is whether trying to substitute in a % in an arbitrary expression is going to be more confusing than helpful -- for example if you do path/to.MyWeirdOptional[path/to.MyArg, %] it probably(?) won't work because we don't know how to do the import. So I wonder if we want to just say it has to be a generic with one argument, and you just say the name of the type (path/to.Optional).

For the tests, thinking a bit more and I think what you can do is something like:

  • For the generate tests, just check runtime.Version and skip the tests if it's too low (feel free to do this in a mildly hacky way, like a list of test case names).
  • For the integration tests, I guess it's tricky because they all share one generated file. Maybe make a separate subpackage with a copy of the wiring, genqlient.config, etc., and put //go:build lines in each file? Although even that might be awkward because we don't have a great way to put //go:build in the generated.go itself, and I'm guessing it will break things like go generate ./... if we can't parse arbitrary files. And we also don't have a great setup for integration testing different configs. Honestly maybe it's not worth integration testing this right now, you could just leave that out for now, or run it manually and then comment it out so we can hopefully add it back when we're ready to only support 1.18+ (hopefully soon since 1.20 is out).

generate/generate.go Outdated Show resolved Hide resolved
generate/convert.go Outdated Show resolved Hide resolved
generate/types.go Outdated Show resolved Hide resolved
@benjaminjkraft
Copy link
Collaborator

Actually, one more thought on integration tests: I'm ok just running all the integration tests only against 1.18+, I don't think there's much we really need to test against older Go versions there. Not sure if that will be enough to make it easy though, so what I said before still applies.

@benjaminjkraft benjaminjkraft mentioned this pull request Feb 15, 2023
@DylanRJohnston
Copy link
Contributor Author

DylanRJohnston commented Feb 16, 2023

@benjaminjkraft I've added a snapshot test and some more documentation. Do you want the the entire integration test to be updated to use the testutil.Option or to just leave it for now? Also should the change log be updated now, or only when do you a release?

Copy link
Collaborator

@benjaminjkraft benjaminjkraft left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry for the delay in reviewing. This seems great!

It's not ideal to have this without integration tests, but I think it's gonna be a decent amount of work to add the support. I've created #261 for this; for now I think it's fine if you just want to test it manually in some other project and that plus snapshot tests should be good enough. Do make sure to at least test it manually as marshaling can go wrong in surprising places!

I suspect that you'll have to either fully drop support for 1.18 (which means removing it from the list of versions we run tests on as well) or put the additions to types.go behind a build flag and add a flag to the test itself. Probably we can just drop 1.18 and that will be easier. (Or if I have time I can do the version changes in a separate PR first, but it's not super likely I will this week or next.)

Beyond that (and one question for your thoughts below), I think all we need is the changelog entry (or two, if dropping 1.18)!

return errorf(nil, "optional must be one of: 'value' (default), 'pointer', or 'generic'")
}

if c.Optional == "generic" && c.OptionalGenericType == "" {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe also complain if c.Optional != "generic" && c.OptionalGenericType != ""?

go.mod Outdated
Comment on lines 14 to 27

require (
github.com/agnivade/levenshtein v1.1.1 // indirect
github.com/alexflint/go-scalar v1.0.0 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/gorilla/websocket v1.4.2 // indirect
github.com/hashicorp/golang-lru v0.5.0 // indirect
github.com/mitchellh/mapstructure v1.2.3 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3 // indirect
golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8 // indirect
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c // indirect
)
Copy link
Collaborator

@benjaminjkraft benjaminjkraft Mar 1, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It seems like this is duplicated now? Did you edit this manually or are the go tools doing something weird? (I'm guessing this is also the source of the merge conflict.)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is auto generated by go tidy. My editor was complaining it needed to be run, but I'm happy to remove ti.

Emails []string `json:"emails"`
EmailsOrNull []string `json:"emailsOrNull"`
EmailsWithNulls []testutil.Option[string] `json:"emailsWithNulls"`
EmailsWithNullsOrNull []testutil.Option[string] `json:"emailsWithNullsOrNull"`
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hmm, I wonder if this (which I believe corresponds to a GraphQL [String], i.e. optional list of optional strings) should be testutil.Option[[]testutil.Option[string]]. We don't do that for pointers because it's annoying in practice, but if you're using an Option type it might be convenient and make it clearer for users to distinguish between [] and null using Option. What do you think?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Generally speaking I prefer to use an empty array instead of option where I can because empty arrays have nice ergonomics, however you may want this in a situation where you're trying to set something to an empty array and it gets interpreted as a missing value. However I've never come across such a situation personally.

@benjaminjkraft
Copy link
Collaborator

benjaminjkraft commented Apr 8, 2023

Ok, I pulled the version upgrade into #257, so once that merges you should be able to just merge and avoid dealing with that!

@benjaminjkraft
Copy link
Collaborator

I went ahead and merged main and added the changelog. Thanks again for writing this -- I'm planning on using it in a project I'm working on!

@DylanRJohnston-FZ
Copy link
Contributor

Thanks! Apologies for not pushing this over the line myself. I just got absolutely swamped at work just after putting this pull request up. Glad to see it in main though!

dmitryax referenced this pull request in open-telemetry/opentelemetry-collector-contrib Mar 12, 2024
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [github.com/Khan/genqlient](https://togithub.com/Khan/genqlient) |
`v0.6.0` -> `v0.7.0` |
[![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fKhan%2fgenqlient/v0.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2fKhan%2fgenqlient/v0.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2fKhan%2fgenqlient/v0.6.0/v0.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fKhan%2fgenqlient/v0.6.0/v0.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

> [!WARNING]
> Some dependencies could not be looked up. Check the Dependency
Dashboard for more information.

---

### Release Notes

<details>
<summary>Khan/genqlient (github.com/Khan/genqlient)</summary>

### [`v0.7.0`](https://togithub.com/Khan/genqlient/releases/tag/v0.7.0)

[Compare
Source](https://togithub.com/Khan/genqlient/compare/v0.6.0...v0.7.0)

In addition to several new features and bugfixes, along with this
release comes reorganized
[documentation](https://togithub.com/Khan/genqlient/blob/main/docs) for
genqlient. Note that genqlient now requires Go 1.20 or higher, and is
tested through Go 1.22.

#### What's Changed

- Add "generic" option to the "optional" configuration for handling
nullable types by
[@&#8203;DylanRJohnston](https://togithub.com/DylanRJohnston) in
[https://github.com/Khan/genqlient/pull/252](https://togithub.com/Khan/genqlient/pull/252)
- Documentation tweaks relating to releases by
[@&#8203;benjaminjkraft](https://togithub.com/benjaminjkraft) in
[https://github.com/Khan/genqlient/pull/271](https://togithub.com/Khan/genqlient/pull/271)
- Add some better tests for use_struct_references by
[@&#8203;benjaminjkraft](https://togithub.com/benjaminjkraft) in
[https://github.com/Khan/genqlient/pull/273](https://togithub.com/Khan/genqlient/pull/273)
- Add an option to handle enums with ugly casing by
[@&#8203;benjaminjkraft](https://togithub.com/benjaminjkraft) in
[https://github.com/Khan/genqlient/pull/270](https://togithub.com/Khan/genqlient/pull/270)
- Add some more tests for config validation, and fix some gaps by
[@&#8203;benjaminjkraft](https://togithub.com/benjaminjkraft) in
[https://github.com/Khan/genqlient/pull/274](https://togithub.com/Khan/genqlient/pull/274)
- Add consideration for pointer false directive when optional: pointer
configuration option is used by
[@&#8203;spencermurray](https://togithub.com/spencermurray) in
[https://github.com/Khan/genqlient/pull/280](https://togithub.com/Khan/genqlient/pull/280)
- Update gqlparser and gqlgen dependencies by
[@&#8203;StevenACoffman](https://togithub.com/StevenACoffman) in
[https://github.com/Khan/genqlient/pull/282](https://togithub.com/Khan/genqlient/pull/282)
- Update gqlparser to omit comments by
[@&#8203;StevenACoffman](https://togithub.com/StevenACoffman) in
[https://github.com/Khan/genqlient/pull/284](https://togithub.com/Khan/genqlient/pull/284)
- bugfix: local variable 'data' colliding with argument name by
[@&#8203;zholti](https://togithub.com/zholti) in
[https://github.com/Khan/genqlient/pull/291](https://togithub.com/Khan/genqlient/pull/291)
- Pin lint workflow's Go version by
[@&#8203;benjaminjkraft](https://togithub.com/benjaminjkraft) in
[https://github.com/Khan/genqlient/pull/311](https://togithub.com/Khan/genqlient/pull/311)
- Upgrade golangci-lint and which go we run it with by
[@&#8203;benjaminjkraft](https://togithub.com/benjaminjkraft) in
[https://github.com/Khan/genqlient/pull/314](https://togithub.com/Khan/genqlient/pull/314)
- fix implementation type generation for fragment on a union by
[@&#8203;zzh8829](https://togithub.com/zzh8829) in
[https://github.com/Khan/genqlient/pull/310](https://togithub.com/Khan/genqlient/pull/310)
- Support more valid graphql file extensions by
[@&#8203;zzh8829](https://togithub.com/zzh8829) in
[https://github.com/Khan/genqlient/pull/309](https://togithub.com/Khan/genqlient/pull/309)
- Add tests on Go 1.22, and upgrade x/tools to make them work by
[@&#8203;benjaminjkraft](https://togithub.com/benjaminjkraft) in
[https://github.com/Khan/genqlient/pull/315](https://togithub.com/Khan/genqlient/pull/315)
- Update gqlgen to latest by
[@&#8203;StevenACoffman](https://togithub.com/StevenACoffman) in
[https://github.com/Khan/genqlient/pull/317](https://togithub.com/Khan/genqlient/pull/317)
- move genqlient Go module to 1.20 by
[@&#8203;StevenACoffman](https://togithub.com/StevenACoffman) in
[https://github.com/Khan/genqlient/pull/318](https://togithub.com/Khan/genqlient/pull/318)
- Improve package-sniffing and bind correctly to types in the same
package by [@&#8203;benjaminjkraft](https://togithub.com/benjaminjkraft)
in
[https://github.com/Khan/genqlient/pull/316](https://togithub.com/Khan/genqlient/pull/316)
- Reorganize and improve documentation by
[@&#8203;benjaminjkraft](https://togithub.com/benjaminjkraft) in
[https://github.com/Khan/genqlient/pull/322](https://togithub.com/Khan/genqlient/pull/322)
- Fix non-deterministic generated code involving interfaces and
fragments. by [@&#8203;csilvers](https://togithub.com/csilvers) in
[https://github.com/Khan/genqlient/pull/323](https://togithub.com/Khan/genqlient/pull/323)
- Release v0.7.0 by
[@&#8203;benjaminjkraft](https://togithub.com/benjaminjkraft) in
[https://github.com/Khan/genqlient/pull/324](https://togithub.com/Khan/genqlient/pull/324)

#### New Contributors

- [@&#8203;DylanRJohnston](https://togithub.com/DylanRJohnston) made
their first contribution in
[https://github.com/Khan/genqlient/pull/252](https://togithub.com/Khan/genqlient/pull/252)
- [@&#8203;spencermurray](https://togithub.com/spencermurray) made their
first contribution in
[https://github.com/Khan/genqlient/pull/280](https://togithub.com/Khan/genqlient/pull/280)
- [@&#8203;zholti](https://togithub.com/zholti) made their first
contribution in
[https://github.com/Khan/genqlient/pull/291](https://togithub.com/Khan/genqlient/pull/291)
- [@&#8203;zzh8829](https://togithub.com/zzh8829) made their first
contribution in
[https://github.com/Khan/genqlient/pull/310](https://togithub.com/Khan/genqlient/pull/310)

**Full Changelog**:
Khan/genqlient@v0.6.0...v0.7.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "on tuesday" (UTC), Automerge - At any
time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/open-telemetry/opentelemetry-collector-contrib).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yMjAuMiIsInVwZGF0ZWRJblZlciI6IjM3LjIyMC4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: opentelemetrybot <[email protected]>
Co-authored-by: Andrzej Stencel <[email protected]>
DougManton referenced this pull request in DougManton/opentelemetry-collector-contrib Mar 13, 2024
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [github.com/Khan/genqlient](https://togithub.com/Khan/genqlient) |
`v0.6.0` -> `v0.7.0` |
[![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fKhan%2fgenqlient/v0.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2fKhan%2fgenqlient/v0.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2fKhan%2fgenqlient/v0.6.0/v0.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fKhan%2fgenqlient/v0.6.0/v0.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

> [!WARNING]
> Some dependencies could not be looked up. Check the Dependency
Dashboard for more information.

---

### Release Notes

<details>
<summary>Khan/genqlient (github.com/Khan/genqlient)</summary>

### [`v0.7.0`](https://togithub.com/Khan/genqlient/releases/tag/v0.7.0)

[Compare
Source](https://togithub.com/Khan/genqlient/compare/v0.6.0...v0.7.0)

In addition to several new features and bugfixes, along with this
release comes reorganized
[documentation](https://togithub.com/Khan/genqlient/blob/main/docs) for
genqlient. Note that genqlient now requires Go 1.20 or higher, and is
tested through Go 1.22.

#### What's Changed

- Add "generic" option to the "optional" configuration for handling
nullable types by
[@&open-telemetry#8203;DylanRJohnston](https://togithub.com/DylanRJohnston) in
[https://github.com/Khan/genqlient/pull/252](https://togithub.com/Khan/genqlient/pull/252)
- Documentation tweaks relating to releases by
[@&open-telemetry#8203;benjaminjkraft](https://togithub.com/benjaminjkraft) in
[https://github.com/Khan/genqlient/pull/271](https://togithub.com/Khan/genqlient/pull/271)
- Add some better tests for use_struct_references by
[@&open-telemetry#8203;benjaminjkraft](https://togithub.com/benjaminjkraft) in
[https://github.com/Khan/genqlient/pull/273](https://togithub.com/Khan/genqlient/pull/273)
- Add an option to handle enums with ugly casing by
[@&open-telemetry#8203;benjaminjkraft](https://togithub.com/benjaminjkraft) in
[https://github.com/Khan/genqlient/pull/270](https://togithub.com/Khan/genqlient/pull/270)
- Add some more tests for config validation, and fix some gaps by
[@&open-telemetry#8203;benjaminjkraft](https://togithub.com/benjaminjkraft) in
[https://github.com/Khan/genqlient/pull/274](https://togithub.com/Khan/genqlient/pull/274)
- Add consideration for pointer false directive when optional: pointer
configuration option is used by
[@&open-telemetry#8203;spencermurray](https://togithub.com/spencermurray) in
[https://github.com/Khan/genqlient/pull/280](https://togithub.com/Khan/genqlient/pull/280)
- Update gqlparser and gqlgen dependencies by
[@&open-telemetry#8203;StevenACoffman](https://togithub.com/StevenACoffman) in
[https://github.com/Khan/genqlient/pull/282](https://togithub.com/Khan/genqlient/pull/282)
- Update gqlparser to omit comments by
[@&open-telemetry#8203;StevenACoffman](https://togithub.com/StevenACoffman) in
[https://github.com/Khan/genqlient/pull/284](https://togithub.com/Khan/genqlient/pull/284)
- bugfix: local variable 'data' colliding with argument name by
[@&open-telemetry#8203;zholti](https://togithub.com/zholti) in
[https://github.com/Khan/genqlient/pull/291](https://togithub.com/Khan/genqlient/pull/291)
- Pin lint workflow's Go version by
[@&open-telemetry#8203;benjaminjkraft](https://togithub.com/benjaminjkraft) in
[https://github.com/Khan/genqlient/pull/311](https://togithub.com/Khan/genqlient/pull/311)
- Upgrade golangci-lint and which go we run it with by
[@&open-telemetry#8203;benjaminjkraft](https://togithub.com/benjaminjkraft) in
[https://github.com/Khan/genqlient/pull/314](https://togithub.com/Khan/genqlient/pull/314)
- fix implementation type generation for fragment on a union by
[@&open-telemetry#8203;zzh8829](https://togithub.com/zzh8829) in
[https://github.com/Khan/genqlient/pull/310](https://togithub.com/Khan/genqlient/pull/310)
- Support more valid graphql file extensions by
[@&open-telemetry#8203;zzh8829](https://togithub.com/zzh8829) in
[https://github.com/Khan/genqlient/pull/309](https://togithub.com/Khan/genqlient/pull/309)
- Add tests on Go 1.22, and upgrade x/tools to make them work by
[@&open-telemetry#8203;benjaminjkraft](https://togithub.com/benjaminjkraft) in
[https://github.com/Khan/genqlient/pull/315](https://togithub.com/Khan/genqlient/pull/315)
- Update gqlgen to latest by
[@&open-telemetry#8203;StevenACoffman](https://togithub.com/StevenACoffman) in
[https://github.com/Khan/genqlient/pull/317](https://togithub.com/Khan/genqlient/pull/317)
- move genqlient Go module to 1.20 by
[@&open-telemetry#8203;StevenACoffman](https://togithub.com/StevenACoffman) in
[https://github.com/Khan/genqlient/pull/318](https://togithub.com/Khan/genqlient/pull/318)
- Improve package-sniffing and bind correctly to types in the same
package by [@&open-telemetry#8203;benjaminjkraft](https://togithub.com/benjaminjkraft)
in
[https://github.com/Khan/genqlient/pull/316](https://togithub.com/Khan/genqlient/pull/316)
- Reorganize and improve documentation by
[@&open-telemetry#8203;benjaminjkraft](https://togithub.com/benjaminjkraft) in
[https://github.com/Khan/genqlient/pull/322](https://togithub.com/Khan/genqlient/pull/322)
- Fix non-deterministic generated code involving interfaces and
fragments. by [@&open-telemetry#8203;csilvers](https://togithub.com/csilvers) in
[https://github.com/Khan/genqlient/pull/323](https://togithub.com/Khan/genqlient/pull/323)
- Release v0.7.0 by
[@&open-telemetry#8203;benjaminjkraft](https://togithub.com/benjaminjkraft) in
[https://github.com/Khan/genqlient/pull/324](https://togithub.com/Khan/genqlient/pull/324)

#### New Contributors

- [@&open-telemetry#8203;DylanRJohnston](https://togithub.com/DylanRJohnston) made
their first contribution in
[https://github.com/Khan/genqlient/pull/252](https://togithub.com/Khan/genqlient/pull/252)
- [@&open-telemetry#8203;spencermurray](https://togithub.com/spencermurray) made their
first contribution in
[https://github.com/Khan/genqlient/pull/280](https://togithub.com/Khan/genqlient/pull/280)
- [@&open-telemetry#8203;zholti](https://togithub.com/zholti) made their first
contribution in
[https://github.com/Khan/genqlient/pull/291](https://togithub.com/Khan/genqlient/pull/291)
- [@&open-telemetry#8203;zzh8829](https://togithub.com/zzh8829) made their first
contribution in
[https://github.com/Khan/genqlient/pull/310](https://togithub.com/Khan/genqlient/pull/310)

**Full Changelog**:
Khan/genqlient@v0.6.0...v0.7.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "on tuesday" (UTC), Automerge - At any
time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/open-telemetry/opentelemetry-collector-contrib).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yMjAuMiIsInVwZGF0ZWRJblZlciI6IjM3LjIyMC4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: opentelemetrybot <[email protected]>
Co-authored-by: Andrzej Stencel <[email protected]>
XinRanZhAWS referenced this pull request in XinRanZhAWS/opentelemetry-collector-contrib Mar 13, 2024
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [github.com/Khan/genqlient](https://togithub.com/Khan/genqlient) |
`v0.6.0` -> `v0.7.0` |
[![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fKhan%2fgenqlient/v0.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2fKhan%2fgenqlient/v0.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2fKhan%2fgenqlient/v0.6.0/v0.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fKhan%2fgenqlient/v0.6.0/v0.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

> [!WARNING]
> Some dependencies could not be looked up. Check the Dependency
Dashboard for more information.

---

### Release Notes

<details>
<summary>Khan/genqlient (github.com/Khan/genqlient)</summary>

### [`v0.7.0`](https://togithub.com/Khan/genqlient/releases/tag/v0.7.0)

[Compare
Source](https://togithub.com/Khan/genqlient/compare/v0.6.0...v0.7.0)

In addition to several new features and bugfixes, along with this
release comes reorganized
[documentation](https://togithub.com/Khan/genqlient/blob/main/docs) for
genqlient. Note that genqlient now requires Go 1.20 or higher, and is
tested through Go 1.22.

#### What's Changed

- Add "generic" option to the "optional" configuration for handling
nullable types by
[@&open-telemetry#8203;DylanRJohnston](https://togithub.com/DylanRJohnston) in
[https://github.com/Khan/genqlient/pull/252](https://togithub.com/Khan/genqlient/pull/252)
- Documentation tweaks relating to releases by
[@&open-telemetry#8203;benjaminjkraft](https://togithub.com/benjaminjkraft) in
[https://github.com/Khan/genqlient/pull/271](https://togithub.com/Khan/genqlient/pull/271)
- Add some better tests for use_struct_references by
[@&open-telemetry#8203;benjaminjkraft](https://togithub.com/benjaminjkraft) in
[https://github.com/Khan/genqlient/pull/273](https://togithub.com/Khan/genqlient/pull/273)
- Add an option to handle enums with ugly casing by
[@&open-telemetry#8203;benjaminjkraft](https://togithub.com/benjaminjkraft) in
[https://github.com/Khan/genqlient/pull/270](https://togithub.com/Khan/genqlient/pull/270)
- Add some more tests for config validation, and fix some gaps by
[@&open-telemetry#8203;benjaminjkraft](https://togithub.com/benjaminjkraft) in
[https://github.com/Khan/genqlient/pull/274](https://togithub.com/Khan/genqlient/pull/274)
- Add consideration for pointer false directive when optional: pointer
configuration option is used by
[@&open-telemetry#8203;spencermurray](https://togithub.com/spencermurray) in
[https://github.com/Khan/genqlient/pull/280](https://togithub.com/Khan/genqlient/pull/280)
- Update gqlparser and gqlgen dependencies by
[@&open-telemetry#8203;StevenACoffman](https://togithub.com/StevenACoffman) in
[https://github.com/Khan/genqlient/pull/282](https://togithub.com/Khan/genqlient/pull/282)
- Update gqlparser to omit comments by
[@&open-telemetry#8203;StevenACoffman](https://togithub.com/StevenACoffman) in
[https://github.com/Khan/genqlient/pull/284](https://togithub.com/Khan/genqlient/pull/284)
- bugfix: local variable 'data' colliding with argument name by
[@&open-telemetry#8203;zholti](https://togithub.com/zholti) in
[https://github.com/Khan/genqlient/pull/291](https://togithub.com/Khan/genqlient/pull/291)
- Pin lint workflow's Go version by
[@&open-telemetry#8203;benjaminjkraft](https://togithub.com/benjaminjkraft) in
[https://github.com/Khan/genqlient/pull/311](https://togithub.com/Khan/genqlient/pull/311)
- Upgrade golangci-lint and which go we run it with by
[@&open-telemetry#8203;benjaminjkraft](https://togithub.com/benjaminjkraft) in
[https://github.com/Khan/genqlient/pull/314](https://togithub.com/Khan/genqlient/pull/314)
- fix implementation type generation for fragment on a union by
[@&open-telemetry#8203;zzh8829](https://togithub.com/zzh8829) in
[https://github.com/Khan/genqlient/pull/310](https://togithub.com/Khan/genqlient/pull/310)
- Support more valid graphql file extensions by
[@&open-telemetry#8203;zzh8829](https://togithub.com/zzh8829) in
[https://github.com/Khan/genqlient/pull/309](https://togithub.com/Khan/genqlient/pull/309)
- Add tests on Go 1.22, and upgrade x/tools to make them work by
[@&open-telemetry#8203;benjaminjkraft](https://togithub.com/benjaminjkraft) in
[https://github.com/Khan/genqlient/pull/315](https://togithub.com/Khan/genqlient/pull/315)
- Update gqlgen to latest by
[@&open-telemetry#8203;StevenACoffman](https://togithub.com/StevenACoffman) in
[https://github.com/Khan/genqlient/pull/317](https://togithub.com/Khan/genqlient/pull/317)
- move genqlient Go module to 1.20 by
[@&open-telemetry#8203;StevenACoffman](https://togithub.com/StevenACoffman) in
[https://github.com/Khan/genqlient/pull/318](https://togithub.com/Khan/genqlient/pull/318)
- Improve package-sniffing and bind correctly to types in the same
package by [@&open-telemetry#8203;benjaminjkraft](https://togithub.com/benjaminjkraft)
in
[https://github.com/Khan/genqlient/pull/316](https://togithub.com/Khan/genqlient/pull/316)
- Reorganize and improve documentation by
[@&open-telemetry#8203;benjaminjkraft](https://togithub.com/benjaminjkraft) in
[https://github.com/Khan/genqlient/pull/322](https://togithub.com/Khan/genqlient/pull/322)
- Fix non-deterministic generated code involving interfaces and
fragments. by [@&open-telemetry#8203;csilvers](https://togithub.com/csilvers) in
[https://github.com/Khan/genqlient/pull/323](https://togithub.com/Khan/genqlient/pull/323)
- Release v0.7.0 by
[@&open-telemetry#8203;benjaminjkraft](https://togithub.com/benjaminjkraft) in
[https://github.com/Khan/genqlient/pull/324](https://togithub.com/Khan/genqlient/pull/324)

#### New Contributors

- [@&open-telemetry#8203;DylanRJohnston](https://togithub.com/DylanRJohnston) made
their first contribution in
[https://github.com/Khan/genqlient/pull/252](https://togithub.com/Khan/genqlient/pull/252)
- [@&open-telemetry#8203;spencermurray](https://togithub.com/spencermurray) made their
first contribution in
[https://github.com/Khan/genqlient/pull/280](https://togithub.com/Khan/genqlient/pull/280)
- [@&open-telemetry#8203;zholti](https://togithub.com/zholti) made their first
contribution in
[https://github.com/Khan/genqlient/pull/291](https://togithub.com/Khan/genqlient/pull/291)
- [@&open-telemetry#8203;zzh8829](https://togithub.com/zzh8829) made their first
contribution in
[https://github.com/Khan/genqlient/pull/310](https://togithub.com/Khan/genqlient/pull/310)

**Full Changelog**:
Khan/genqlient@v0.6.0...v0.7.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "on tuesday" (UTC), Automerge - At any
time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/open-telemetry/opentelemetry-collector-contrib).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yMjAuMiIsInVwZGF0ZWRJblZlciI6IjM3LjIyMC4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: opentelemetrybot <[email protected]>
Co-authored-by: Andrzej Stencel <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants