-
Notifications
You must be signed in to change notification settings - Fork 1.1k
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
sdk/go: Move Output implementation to internal #13495
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
abhinav
added
the
impact/no-changelog-required
This issue doesn't require a CHANGELOG update
label
Jul 14, 2023
Current dependencies on/for this PR:
This comment was auto-generated by Graphite. |
Changelog[uncommitted] (2023-07-26)Miscellaneous
|
bors try |
tryBuild failed: |
abhinav
force-pushed
the
abhinav/go-generics-internalize
branch
2 times, most recently
from
July 17, 2023 16:06
7f12431
to
fa82122
Compare
This was referenced Jul 17, 2023
abhinav
force-pushed
the
abhinav/go-generics-internalize
branch
2 times, most recently
from
July 18, 2023 23:18
e733a6f
to
5f202fb
Compare
abhinav
force-pushed
the
abhinav/go-generics-internalize
branch
3 times, most recently
from
July 26, 2023 00:51
896c4a3
to
44677d6
Compare
**Note to reviewers**: GitHub's PR view will show a lot more for this change than the actual code added/removed. Consider opening a `git diff` of this with, git diff -C --diff-algorithm=minimal This will correctly detect the bulk of the diff as "copy a file and delete a bunch of stuff from it." --- In preparation for implementing generic variants of Input and Output in a pulumix subpackage, move some of the requisite types to internal/ so that we don't have a cyclic dependency between pulumi and pulumix. This change is largely mechanical with adjustmenets made for compilation. For places in pulumi/ where internal state of an output was accessed, new top-level functions were added to internal/ that expose this information. Changes were noting explicitly: - `OutputState` was changed to record dependencies as `[]internal.Resource` instead of `[]Resource` because moving `Resource` into internal will end up moving most of pulumi/ into internal. We cast to/from internal.Resource as needed. - `internal.AnyOutputType` is a `reflect.Type` filled by sdk/go/pulumi at `init()` time. This is an annoying hack, but we can't move AnyOutput into internal. - `internal.FullyResolvedTypes` is similarly filled by sdk/go/pulumi at `init()` time. To add confidence to this change being safe, I used [apidiff] to compare the API of the go/pulumi package befor and after this change. The command reported no changes. [apidiff]: https://pkg.go.dev/golang.org/x/exp@v0.0.0-20230713183714-613f0c0eb8a1/cmd/apidiff On top of that, I also ran `go doc -all .` with the before/after and ran a text diff on the result. The following changes were reported: - `Input` is now an alias to `internal.Input` - `Output` is now an alias to `internal.Output` - `OutputState` is now an alias to `internal.OutputState` - `OutputState.ApplyT`, `OutputState.ApplyTWithContext` were deleted (except they're present on the alias so they're still available) - `Resource` now embeds `internal.Resource` Resolves #13585
abhinav
force-pushed
the
abhinav/go-generics-internalize
branch
from
July 26, 2023 02:00
44677d6
to
1912563
Compare
Frassle
approved these changes
Jul 31, 2023
bors merge |
Build succeeded! The publicly hosted instance of bors-ng is deprecated and will go away soon. If you want to self-host your own instance, instructions are here. If you want to switch to GitHub's built-in merge queue, visit their help page. |
This was referenced Aug 24, 2023
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Note to reviewers:
GitHub's PR view will show a lot more for this change
than the actual code added/removed.
Consider opening a
git diff
of this with,This will correctly detect the bulk of the diff as
"copy a file and delete a bunch of stuff from it."
In preparation for implementing generic variants of Input and Output
in a pulumix subpackage, move some of the requisite types to internal/
so that we don't have a cyclic dependency between pulumi and pulumix.
This change is largely mechanical with adjustmenets made for
compilation.
For places in pulumi/ where internal state of an output was accessed,
new top-level functions were added to internal/
that expose this information.
Changes were noting explicitly:
OutputState
was changed to record dependencies as[]internal.Resource
instead of
[]Resource
because movingResource
into internalwill end up moving most of pulumi/ into internal.
We cast to/from internal.Resource as needed.
internal.AnyOutputType
is areflect.Type
filled by sdk/go/pulumiat
init()
time.This is an annoying hack, but we can't move AnyOutput into internal.
internal.FullyResolvedTypes
is similarly filled by sdk/go/pulumiat
init()
time.To add confidence to this change being safe,
I used apidiff to compare the API of the go/pulumi package
befor and after this change.
The command reported no changes.
On top of that, I also ran
go doc -all .
with the before/afterand ran a text diff on the result. The following changes were reported:
Input
is now an alias tointernal.Input
Output
is now an alias tointernal.Output
OutputState
is now an alias tointernal.OutputState
OutputState.ApplyT
,OutputState.ApplyTWithContext
were deleted(except they're present on the alias so they're still available)
Resource
now embedsinternal.Resource
Resolves #13585