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

Type functions decorated by @pulumi.getter #15865

Merged
merged 1 commit into from
Apr 5, 2024
Merged

Type functions decorated by @pulumi.getter #15865

merged 1 commit into from
Apr 5, 2024

Conversation

lunaris
Copy link
Contributor

@lunaris lunaris commented Apr 5, 2024

This commit strengthens the type of the @pulumi.getter decorator so that tools like Pyright infer the type of the decorated function correctly. Prior to this, decorated properties could be inferred as having the type Any. This is particularly troublesome when using methods such as apply:

x = random.RandomString("x", ...)

y = x.result.apply(lambda value: f"y-{value}")

Here, x.result having the type Any means that value will end up being Unknown, providing no useful type information inside the lambda. With this commit, result will correctly be inferred as having the type Output[str], and thus value will be typed as str. Fixes #12557.

@lunaris lunaris requested a review from a team as a code owner April 5, 2024 14:09
@pulumi-bot
Copy link
Contributor

Changelog

[uncommitted] (2024-04-05)

Bug Fixes

  • [sdk/python] Improve types of getters in Python SDK
    #15865

This commit strengthens the type of the `@pulumi.getter` decorator so
that tools like Pyright infer the type of the decorated function
correctly. Prior to this, decorated properties could be inferred as
having the type `Any`. This is particularly troublesome when using
methods such as `apply`:

```python
x = random.RandomString("x", ...)

y = x.result.apply(lambda value: f"y-{value}")
```

Here, `x.result` having the type `Any` means that `value` will end up
being `Unknown`, providing no useful type information inside the lambda.
With this commit, `result` will correctly be inferred as having the type
`Output[str]`, and thus `value` will be typed as `str`.
@lunaris lunaris added this pull request to the merge queue Apr 5, 2024
Merged via the queue into master with commit fbe675a Apr 5, 2024
49 checks passed
@lunaris lunaris deleted the wjones/12557 branch April 5, 2024 16:07
github-merge-queue bot pushed a commit that referenced this pull request Apr 11, 2024
Tentative changelog:


### Features

- [cli] Support always fully qualifying stack names in CLI output
  [#15857](#15857)

- [cli] Add --no-plugins and --no-dependencies to `pulumi install`
  [#15910](#15910)

- [docs] Implement Java constructor syntax examples
  [#15805](#15805)

- [sdk/nodejs] Make TypeScript and ts-node optional peer dependencies to
allow using user specified versions
  [#15622](#15622)

- [sdk/{nodejs,python}] Allow apply to have unknown values during
updates
  [#15898](#15898)

- [sdk/python] Adds 'typeChecker' runtime option to the Python language
host
  [#15725](#15725)


### Bug Fixes

- [auto] Tolerate missing stack and bookkeeping files in ProgramTest.
  [#15863](#15863)

- [cli] Fix a panic when user's home directory could not be looked up
  [#15872](#15872)

- [cli] Fix some commands that didn't respect
`--disable-integrity-checking`

- [programgen/dotnet] Removes trailing whitespace from emitted DependsOn
resource option expressions
  [#15892](#15892)

- [auto/go] Avoid flakyness when reading the event log from pulumi
commands
  [#15856](#15856)

- [sdk/go] Fix Provider and Providers options in Go transform functions
  [#15885](#15885)

- [sdk/nodejs] Handle serialization of aliases for well known native
functions
  [#15873](#15873)

- [sdk/nodejs] Correctly serialise functions whose code would make use
of reserved identifiers
  [#15879](#15879)

- [sdk/nodejs] Serialize function values obtained from Function.bind
  [#15887](#15887)

- [sdk/python] Improve types of getters in Python SDK
  [#15865](#15865)

- [sdkgen/{dotnet,go}] Fixes SDK-generation when referencing shared
types in config variables
  [#15772](#15772)


### Miscellaneous

- [sdk/nodejs] Update builtin module list for function serialization
  [#15830](#15830)

- [sdk/nodejs] Set package.json engines to node >= 18
  [#15845](#15845)
@justinvp justinvp mentioned this pull request Apr 11, 2024
github-merge-queue bot pushed a commit that referenced this pull request Apr 12, 2024
### Features

- [cli] Support always fully qualifying stack names in CLI output
  [#15857](#15857)

- [cli] Add --no-plugins and --no-dependencies to `pulumi install`
  [#15910](#15910)

- [docs] Implement Java constructor syntax examples
  [#15805](#15805)

- [sdk/nodejs] Make TypeScript and ts-node optional peer dependencies to
allow using user specified versions
  [#15622](#15622)

- [sdk/{nodejs,python}] Allow apply to have unknown values during
updates
  [#15898](#15898)

- [sdk/python] Adds 'typeChecker' runtime option to the Python language
host
  [#15725](#15725)


### Bug Fixes

- [auto] Tolerate missing stack and bookkeeping files in ProgramTest.
  [#15863](#15863)

- [cli] Fix a panic when user's home directory could not be looked up
  [#15872](#15872)

- [cli] Fix some commands that didn't respect
`--disable-integrity-checking`
  [#15911](#15911)

- [programgen/dotnet] Removes trailing whitespace from emitted DependsOn
resource option expressions
  [#15892](#15892)

- [auto/go] Avoid flakyness when reading the event log from pulumi
commands
  [#15856](#15856)

- [sdk/go] Fix Provider and Providers options in Go transform functions
  [#15885](#15885)

- [sdk/nodejs] Handle serialization of aliases for well known native
functions
  [#15873](#15873)

- [sdk/nodejs] Correctly serialise functions whose code would make use
of reserved identifiers
  [#15879](#15879)

- [sdk/nodejs] Serialize function values obtained from Function.bind
  [#15887](#15887)

- [sdk/python] Improve types of getters in Python SDK
  [#15865](#15865)

- [sdkgen/{dotnet,go}] Fixes SDK-generation when referencing shared
types in config variables
  [#15772](#15772)


### Miscellaneous

- [sdk/nodejs] Update builtin module list for function serialization
  [#15830](#15830)

- [sdk/nodejs] Set package.json engines to node >= 18
  [#15845](#15845)
@justinvp justinvp mentioned this pull request Apr 12, 2024
github-merge-queue bot pushed a commit that referenced this pull request Apr 15, 2024
### Features

- [auto/{go,nodejs,python}] Add support for continue-on-error parameter
of the destroy command to the Automation API
  [#15921](#15921)

- [cli] Support always fully qualifying stack names in CLI output
  [#15857](#15857)

- [cli] Add --no-plugins and --no-dependencies to `pulumi install`
  [#15910](#15910)

- [docs] Implement Java constructor syntax examples
  [#15805](#15805)

- [sdk/nodejs] Make TypeScript and ts-node optional peer dependencies to
allow using user specified versions
  [#15622](#15622)

- [sdk/{nodejs,python}] Allow apply to have unknown values during
updates
  [#15898](#15898)

- [sdk/python] Add 'typeChecker' runtime option to the Python language
host
  [#15922](#15922)
  [#15725](#15725)


### Bug Fixes

- [auto] Tolerate missing stack and bookkeeping files in ProgramTest
  [#15922](#15922)
  [#15863](#15863)

- [cli] Fix a panic when user's home directory could not be looked up
  [#15872](#15872)

- [cli] Fix some commands that didn't respect
`--disable-integrity-checking`
  [#15911](#15911)

- [programgen/dotnet] Remove trailing whitespace from emitted DependsOn
resource option expressions
  [#15922](#15922)
  [#15892](#15892)

- [auto/go] Avoid flakyness when reading the event log from pulumi
commands
  [#15856](#15856)

- [sdk/go] Fix Provider and Providers options in Go transform functions
  [#15885](#15885)

- [sdk/nodejs] Handle serialization of aliases for well known native
functions
  [#15873](#15873)

- [sdk/nodejs] Correctly serialise functions whose code would make use
of reserved identifiers
  [#15879](#15879)

- [sdk/nodejs] Serialize function values obtained from Function.bind
  [#15887](#15887)

- [sdk/python] Improve types of getters in Python SDK
  [#15865](#15865)

- [sdkgen/{dotnet,go}] Fix SDK-generation when referencing shared types
in config variables
  [#15772](#15772)
  [#15922](#15922)


### Miscellaneous

- [sdk/nodejs] Update builtin module list for function serialization
  [#15830](#15830)

- [sdk/nodejs] Set package.json engines to node >= 18
  [#15845](#15845)
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.

Type values don't get decorated correctly when using pyright
3 participants