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

Improve package-sniffing and bind correctly to types in the same package #316

Merged
merged 6 commits into from
Feb 19, 2024

Conversation

benjaminjkraft
Copy link
Collaborator

The original motivation here is to fix #283, which is that if you try to use bindings to bind to a type in the same package as the generated code, we generate a self-import, which Go doesn't allow. Fixing that is easy -- the three lines in imports.go -- once you know the package-path of the generated code. (The test that that all fits together is in integration-tests because that was the easiest place to set up the right situation.)

Determining the package-path is not too much harder: you ask go/packages, which we already use for package_bindings. But once we're doing that, and handling errors, it's kinda silly that we ask you to specify the package your generated code will use, because we have that too, usually. So I rewrote that handling too, making package now rarely necessary (see for example the example config), and warning if it looks wrong. This is the changes in config.go, and is the more substantial non-test change. (I also renamed some of the testdata dirs to be valid package-names, to exercise more of that code, or in the case of find-config, just for consistency.)

I have:

  • Written a clear PR title and description (above)
  • Signed the Khan Academy CLA
  • Added tests covering my changes, if applicable (and checked that the test for the bugfix fails without the rest of the changes)
  • Included a link to the issue fixed, if applicable
  • Included documentation, for new features
  • Added an entry two entries to the changelog

The original motivation here is to fix #283, which is that if you try to
use `bindings` to bind to a type in the same package as the generated
code, we generate a self-import, which Go doesn't allow. Fixing that is
easy -- the three lines in `imports.go` -- once you know the
package-path of the generated code. (The test that that all fits
together is in integration-tests because that was the easiest place to
set up the right situation.)

Determining the package-path is not too much harder: you ask
`go/packages`, which we already use for `package_bindings`. But once
we're doing that, and handling errors, it's kinda silly that we ask you
to specify the package your generated code will use, because we have
that too, usually. So I rewrote that handling too, making `package` now
rarely necessary (see for example the `example` config), and warning if
it looks wrong. This is the changes in `config.go`, and is the more
substantial non-test change. (I also renamed some of the testdata dirs
to be valid package-names, to exercise more of that code, or in the case
of `find-config`, just for consistency.)
Copy link
Member

@csilvers csilvers left a comment

Choose a reason for hiding this comment

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

This looks good to me! I like figuring out the package name automatically; that makes a lot of sense to me. Some style comments below but nothing requiring another go-around.

Comment on lines +144 to +147
pkgNameGuess := filepath.Base(dir)
if !token.IsIdentifier(pkgNameGuess) {
pkgNameGuess = ""
}
Copy link
Member

Choose a reason for hiding this comment

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

It seems like this could profitably be later down in the function, maybe lines 166- could be something like:

        packageNameGuess := ""
	if token.IsIdentifier(filepath.Base(pkg.PkgPath)) {
		pkgNameGuess = filepath.Base(pkg.PkgPath)
	} else if token.IsIdentifier(filepath.Base(dir)) {
                pkgNameGuess = filepath.Base(dir)
        }

But I don't really understand if/how that else case could fire. Maybe add some documentation here.

Comment on lines 157 to 158
// TODO(benkraft): Can PkgPath ever be empty without error? If so, we could
// warn.
Copy link
Member

Choose a reason for hiding this comment

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

Yeah, I don't know the semantics of packages.Load, but it seems like Name is empty if the package doesn't exist, but PkgPath is still set in that case?

return pkg.Name, pkg.PkgPath, nil
}

// e.g. empty package yet to be created, see if we can just guess a
Copy link
Member

Choose a reason for hiding this comment

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

Thanks, this comment is very helpful!

"\nSet package name in genqlient.yaml"+
"\nExample: https://github.com/Khan/genqlient/blob/main/example/genqlient.yaml#L6", base)
pkgName, pkgPath, err := c.getPackageNameAndPath()
if err == nil {
Copy link
Member

Choose a reason for hiding this comment

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

It took me a while to figure out what was going on here, because I'm so used to the Go convention of checking for the error case in the if's, not the success case.

I wonder if there's a way to reorganize this code to keep the current semantics but perhaps adhere more closely to Go convention. Maybe not.

// binding against the generated package, so at least warn.
warn(errorf(nil, "warning: unable to identify current package-path "+
"(using 'package' config '%v'): %v\n", c.Package, err))
} else if pkgName != "" {
Copy link
Member

Choose a reason for hiding this comment

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

It's unusual, though I guess not unheard of, for the value of the other return-values to matter when err is not nil. It may be worth emphasizing this in the relevant parts of getPackageNameAndPath, though.

return errorf(nil, "unable to guess package-name: '%v' is not a valid identifier"+
"\nSet package name in genqlient.yaml"+
"\nExample: https://github.com/Khan/genqlient/blob/main/example/genqlient.yaml#L6", base)
pkgName, pkgPath, err := c.getPackageNameAndPath()
Copy link
Member

Choose a reason for hiding this comment

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

You may want to comment that this ignores c.Package, and that below you'll check to make sure they're in agreement (or, at least, not in disagreement.)

@@ -201,6 +256,11 @@ func (c *Config) ValidateAndFillDefaults(baseDir string) error {
binding.Package)
}

if binding.Package == c.pkgPath {
warn(errorf(nil, "warning: package_bindings set to the same package as your generated "+
"code ('%v'); this will probably cause circularity issues", c.pkgPath))
Copy link
Member

Choose a reason for hiding this comment

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

"probably cause circular-import issues"?

@benjaminjkraft benjaminjkraft merged commit 5bdd7fd into main Feb 19, 2024
10 checks passed
@benjaminjkraft benjaminjkraft deleted the benkraft.bind-to-generated branch February 19, 2024 16:41
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.

Binding to a type in the same package as generated code produces invalid output
2 participants