NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #1488 most downloaded on PyPI
Pulumi's Python SDK
Last release today
06 Oct 2026
Ships on a steady schedule
a new release about every 8 days
Nearly every release is documented
notes for 59 of the last 60 stable releases
7 versions withdrawn
withdrawn after publishing
8 years old
4965 releases · first in 2018
[backend/filestate] Add support for project-scoped stacks. Newly initialized backends will automatically use this mode. Set PULUMI_SELF_MANAGED_STATE_
[backend/filestate] Add support for project-scoped stacks. Newly initialized backends will automatically use this mode. Set PULUMI_SELF_MANAGED_STATE_LEGACY_LAYOUT=1 to opt-out of this. This mode needs write access to the root of the .pulumi directory; if you're using a cloud storage, be sure to update your ACLs.
[cli/state] Add 'upgrade' subcommand to upgrade a Pulumi self-managed state to use project layout. #12438
[cli/display] Fix a bug in the interactive update tree display where small terminals would cause the Pulumi CLI to panic. #12571
[sdkgen/dotnet] Fix a whitespace error in generated .csproj files. #12577
[backend/filestate] Print a warning if a project-scoped backend has non-project stacks in it. Disable this warning by setting PULUMI_SELF_MANAGED_STATE_NO_LEGACY_WARNING=1.
One column per quarter.
[sdkgen/python] In codegen, use 3.7 as a default if not provided. #12287
[backend/filestate] Don't write a state metadata file for legacy layouts. This should prevent permissioning issues for users with tight access control to the storage backend.
[docs] Fix filename clashes between resources and functions on case-insensitive filesystems in docsgen. #12453
[engine] Fix updating a resource from a component to custom resource. #12561
[engine] Revert PR moving deletedWith inheritance logic to the engine as get resources and packaged components are incompatible.
#12564
[sdk] Fix multiplied retries when downloading plugins. #12504
[auto/go] Added support for the path option for config operations #12265
[backend/filestate] Rename state metadata file from .pulumi/Pulumi.yaml to .pulumi/meta.yaml. This is an internal detail to the self-managed backend's storage format intended to avoid confusion with Pulumi project files, and should not affect most users.
[engine] Enhances the state schema to track fields Created, Modified per each resource. The timestamp is captured in RFC3339. It pertains to timestamp
[engine] Enhances the state schema to track fields Created, Modified per each resource. The timestamp is captured in RFC3339. It pertains to timestamps of state modification done by the engine.
#12082
[engine] DeletedWith ResourceOption is now inherited from its parent across SDKs. #12446
[programgen/{dotnet,nodejs}] Object-typed config variables for components #12488
[sdk] Make default logger thread-safe. #12485
[sdk] Make default logger thread-safe. #12485
[sdk/go] Track rehydrated components as dependencies. #12494
[sdkgen/go] Fixes emission of dup types breaking Go compilation when chunking >500 helper types. #12484
[programgen] PCL program.WriteSource(afero.Fs) writes the full directory tree of PCL source files. #12428
[programgen] PCL program.WriteSource(afero.Fs) writes the full directory tree of PCL source files. #12428
[programgen/{dotnet,go,nodejs,python}] Implement description as comments or docstring for config variables in program-gen #12464
[programgen/{dotnet,nodejs}] Component resources implementation including nested components #12398
[backend/service] Add "--teams" flag to assign team name to stack during init #11974
[auto/go] Fix memory leak in stack.Up() in Automation API. #12475
[auto/{go,nodejs,python}] Fix calling WhoAmI against pre 3.58 CLIs. #12466
[engine] Fixed automatic plugin downloads for third-party plugins. #12441
[programgen/python] Fix handling of reserved words in imports. #12447
[auto/go] Add WhoAmIDetails which includes user, url and organizations to Go Automation API #12374
[auto/go] Add WhoAmIDetails which includes user, url and organizations to Go Automation API #12374
[auto/nodejs] Add url and organizations to WhoAmIResult for NodeJS Automation API #12374
[auto/python] Add url and organizations to WhoAmIResult for Python Automation API #12374
[cli] Add --json flag to pulumi whoami to emit output as JSON
#12374
[cli/display] Add a view in browser shortcut to the interactive display. #12412 #12380
[programgen/dotnet] PCL components and dotnet program-gen implementation #12361
[programgen/{dotnet,go,nodejs,python}] Add "NotImplemented" PCL function intrinsic #12409
[sdk/go] Adds NewInvokeOptions to preview the effect of a list of InvokeOption values.
#12128
[cli/plugin] Fix sending empty tokens to GitHub API. #12392
[sdk/go] common/util/contract: Deprecate functions that don't accept printf-style arguments. #12350
[cli/display] Autoscroll the interactive display and support pgup/pgdown #12363
[programgen] Support options.retainOnDelete on resources in PCL.
#12305
[sdkgen/dotnet] Update sdkgen to target dotnet 6. #12333
[programgen/{dotnet,go,nodejs,python}] Adds support for generating RetainOnDelete options. #12306
[auto/go] Enable programmatic tagging of stacks (Go only) #12329
[auto/python] Enable programmatic tagging of stacks (Python only) #12275
[sdk/go] Adds NewResourceOptions to preview the effect of a list of ResourceOption values.
#12124
[sdk/python] Added support for shimless Python plugins. #12362
[cli/display] Reorder options to handle pending creates. Users can now hold enter to select the clear option which should be more ergonomic. #12375
[auto/{dotnet,go,nodejs,python}] Fix support for specifying a git commit for remote workspaces #11716
[auto/go] Fetch commits before checkout #12331
[auto/go] The various workspace load routines (e.g. LoadProject) are no longer singularly cached. #12370
[sdk/go] Fixes overwrite of the Provider option by the Providers option due to ordering. #12296
[auto/nodejs] Fixes issue with specifying a git username for remote workspaces #12269
[sdk/python] Fixes Component Resources not correctly propagating the provider option to its children. #12292
[cli/display] Display now shows default colorized stacktraces in NodeJS. #10410
[cli/display] Display now shows default colorized stacktraces in NodeJS. #10410
[cli/plugin] Plugin download urls now support GitLab as a first class url schema. For example "gitlab://gitlab.com/43429536". #12145
[backend/service] Reduce retrieval-validation latency for update tokens #12323
[sdk/go] Fix panic from attempting to create a resource with an uninitialized parent resource. #12303
[cli/import] Fixes panic on incomplete resources in JSON file. #12182
[sdk/nodejs] Cleanup temporary pulumi-node-pipes folders after running. #12294
[sdk/nodejs] Fix stack outputs picking up co-located JSON files. #12302
[cli/plugin] Remove temporary files from plugin downloads. #12146
[cli] Remove the [experimental] yes, using Update Plans prompt. #12135
[cli] Remove the [experimental] yes, using Update Plans prompt.
#12135
[backend/filestate] pulumi login gs:// to support google oauth access tokens via environment variable for Google Cloud Storage backends #12102
[sdk/go] Adds StackReference.GetOutputDetails to retrieve outputs from StackReferences as plain objects. #12034
[sdk/nodejs] Adds StackReference.getOutputDetails to retrieve outputs from StackReferences as plain objects. #12072
[sdk/python] Adds StackReference.get_output_details to retrieve outputs from StackReferences as plain objects. #12071
[cli] Fix verbose logging to filter secrets. #12079
[engine] This fixes an issue where 'pulumi state delete ' would prompt the user to disambiguate between multiple resources in state with the same URN and proceed to delete all of them. With this change, dependency checks are performed only if the deletion will lead to no resources possessing the URN. The targetDependents flag will only target dependents if the deleted resource will orphan the dependents. #12111
[engine] Fixed issue where pulumi displays multiline secrets when the newlines('\n') are escaped. #12140
[sdkgen/go] Prevent defaults from overriding set values. #12099
[cli] Add --shell flag to pulumi stack output to print outputs as a shell script. #11956
[cli] Add --shell flag to pulumi stack output to print outputs as a shell script.
#11956
[cli] Add --insecure flag to pulumi login which disables https certificate checks
#9159
[programgen] Add a new unsecret intrinsic function to PCL.
#12026
[sdkgen/go] Go SDKs now use errors.New instead of github.com/pkg/errors.New.
#12046
[auto] Add support for cloning from Azure DevOps #12001
[sdkgen] Correctly error on resource using the reserved name "provider". #11996
[sdk/python] Fix handling of Output keys in dicts passed to Output.from_input. #11968
[engine] Revert go-cloud upgrade to fix issues with Azure secrets. #11984
[auto/nodejs] Enable programmatic tagging of stacks (Nodejs only) #11659
[auto/nodejs] Enable programmatic tagging of stacks (Nodejs only) #11659
[sdk/go] Coerces output values in ApplyT calls if the types are equivalent. #11903
[sdk/nodejs] Add optional / backwards compatible generic types to pulumi.dynamic.ResourceProvider. #11881
[auto/nodejs] Fix NodeJS automation api always setting the PULUMI_CONFIG environment variable. #11943
[cli/display] Display text-based diff if yaml/json diff is semantically equal #11803
[sdk/go] Fixes data race in provider plugin resulting in weakly typed secrets. #11975
[sdk/nodejs] Fix handling of recursive symlinks in node_modules. #11950
[engine] Fix launching non-Go plugins on Windows. #11915
[sdk/go] Allows users to discover if their program is being run with a mock monitor #11788
[sdk/go] Allows users to discover if their program is being run with a mock monitor #11788
[sdk/nodejs] Add support for custom naming of dynamic provider resource. #11873
[sdkgen/{dotnet,nodejs}] Initial implementation of simplified invokes for dotnet and nodejs. #11753
[sdk/go] Add JSONUnmarshal to go sdk. #11745
Happy New Years from the Pulumi team! This is our first release of 2023, and we're very excited for all the things to come this year.
Happy New Years from the Pulumi team! This is our first release of 2023, and we're very excited for all the things to come this year.
Happy holidays! The Pulumi team thanks grpc maintainers for addressing build issues and publishing wheels on macOS.
Happy holidays! The Pulumi team thanks grpc maintainers for addressing build issues and publishing wheels on macOS.
grpcio dependency.
#11431[cli/display] Fix flickering in the interactive display #11695
We're approaching the end of 2022, and this is the final minor release scheduled for the year! 🎸 Thank you very much to our wonderful community for yo
We're approaching the end of 2022, and this is the final minor release scheduled for the year! 🎸 Thank you very much to our wonderful community for your many contributions! ❤️
[auto/{go,nodejs,python}] Adds SkipInstallDependencies option for Remote Workspaces #11674
[ci] GitHub release artifacts are now signed using cosign and signatures are uploaded to the Rekor transparency log. #11310
[cli] Adds a flag that allows user to set the node label as the resource name instead of full URN in the stack graph #11383
[cli] pulumi destroy --remove will now delete the stack config file #11394
[cli] Allow rotating the encrpytion key for cloud secrets. #11554
[cli/{config,new,package}] Preserve comments on editing of project and config files. #11456
[sdk/dotnet] Add Output.JsonSerialize using System.Text.Json. #11556
[sdk/go] Add JSONMarshal to go sdk. #11609
[sdkgen/{dotnet,nodejs}] Initial implementation of simplified invokes for dotnet and nodejs. #11418
[sdk/nodejs] Delegates alias computation to engine for Node SDK #11206
[sdk/nodejs] Emit closure requires in global scope for improved cold start on Lambda #11481
[sdk/nodejs] Add output jsonStringify using JSON.stringify. #11605
[sdk/python] Add json_dumps to python sdk. #11607
[backend/service] Fixes out-of-memory issues when using PULUMI_OPTIMIZED_CHECKPOINT_PATCH protocol #11666
[cli] Improve performance of convert to not try and load so many provider plugins. #11639
[programgen] Don't panic on some empty objects #11660
[cli/display] Fixes negative durations on update display. #11631
[programgen/go] Check for optional/ Ptr types within Union types. This fixes a bug in Go programgen where optional outputs are not returned as pointers. #11635
[sdkgen/{dotnet,go,nodejs,python}] Do not generate Result types for functions with empty outputs #11596
[sdk/python] Fix a deadlock on provider-side error with automation api #11595
[sdkgen/{dotnet,nodejs}] Fix imports when a component is using another component from the same schema as a property #11606 #11467
[sdkgen/go] Illegal cast in resource constructors when secret-wrapping input arguments. #11673
Previously this required setting the PULUMI_OPTIMIZED_CHECKPOINT_PATCH env variable on the client. This env variable is now deprecated. #11421
[sdk] Add methods to cast pointer types to corresponding Pulumi Ptr types #11539
[yaml] Updates Pulumi YAML to v1.0.4 unblocking Docker Image resource support in a future Docker provider release. #11583
[backend/service] Allows the service to opt into a bandwidth-optimized DIFF protocol for storing checkpoints. Previously this required setting the PULUMI_OPTIMIZED_CHECKPOINT_PATCH env variable on the client. This env variable is now deprecated. #11421
[cli/about] Add fully qualified stack name to current stack. #11387
[sdk/{dotnet,nodejs}] Add InvokeSingle variants to dotnet and nodejs SDKs #11564
[docs] Exclude id output property for component resources #11469
[engine] Fix an assert for resources being replaced but also pending deletion. #11475
[pkg] Fixes codegen/python generation of non-string secrets in provider properties #11494
[pkg/testing] Optionally caches python venvs for testing #11532
[programgen] Improve error message for invalid enum values on pulumi convert.
#11019
[programgen] Interpret schema.Asset as pcl.AssetOrArchive. #11593
[programgen/go] Convert the result of immediate invokes to ouputs when necessary. #11480
[programgen/nodejs] Add . between ? and [.
#11477
[programgen/nodejs] Fix capitalization when generating fs.readdirSync.
#11478
[sdk/nodejs] Fix regression when passing a provider to a MLC #11509
[sdk/python] Allows for duplicate output values in python #11559
[sdkgen/go] Fixes superfluous newline being added between documentation comment and package statement in doc.go #11492
[sdkgen/nodejs] Generate JS doc comments for output-versioned invokes and use explicit any type. #11511
[cli] Don't print update plan message with --json. #11454
[cli] Add prompt to up to use experimental update plans. #11353
[sdk/{dotnet,go,nodejs}] Attempt to select stack then create as fallback on 'createOrSelect' #11402
[cli] Added "--from=tf" to pulumi convert. #11341
[cli] Added "--from=tf" to pulumi convert. #11341
[engine] Engine and Golang support for language plugins starting providers directly. #10916
[sdk/dotnet] Add DictionaryInvokeArgs for dynamically constructing invoke input bag of properties. #11335
[sdk/go] Allow sane conversions for As*Map* and As*Array* conversions.
#11351
[sdkgen/{dotnet,nodejs}] Add default dependencies for generated SDKs. #11315
[sdkgen/nodejs] Splits input and output definitions into multiple files. #10831
[cli] Fix stack selection prompt. #11354
[engine] Always keep resources when pulumi:pulumi:getResource is invoked #11382
[pkg] Fix a panic in codegen for an edge case involving object expressions without corresponding function arguments. #11311
[programgen] Enable type checking for resource attributes #11371
[cli/display] Fix text cutting off prior to the edge of the terminal #11202
[programgen/{dotnet,go,nodejs,python}] Don't generate traverse errors when typechecking a dynamic type #11359
[sdk/{go,nodejs,python}] Set acceptResources when invoking pulumi:pulumi:getResource #11382
[sdk/python] Copy ResourceOptions correctly during a merge. #11327
[cli] Enables debug tracing of Pulumi gRPC internals: PULUMI_DEBUG_GRPC=$PWD/grpc.json pulumi up #11085
[cli] Enables debug tracing of Pulumi gRPC internals: PULUMI_DEBUG_GRPC=$PWD/grpc.json pulumi up
#11085
[cli/display] Improve the usability of the interactive dipslay by making the treetable scrollable #11200
[pkg] Add DeletedWith as a resource option.
#11095
[programgen] More programs can be converted to Pulumi when using pulumi convert, provider bridging, and conversion tools by allowing property accesses and field names to fall back to a case insensitive lookup.
#11266
[engine] Disable auto parenting to see if that fixes #10950. #11272
[yaml] Updates Pulumi YAML to v1.0.2 which fixes a bug encountered using templates with project level config. #11296
[sdkgen/go] Allow resource names that conflict with additional types. #11244
[sdkgen/go] Guard against conflicting field names. #11262
[sdk/python] Handle None being passed to register_resource_outputs. #11226
[programgen/{dotnet,go,java,nodejs,python}] Support a logical name for config vars #11231
[programgen/{dotnet,go,java,nodejs,python}] Support a logical name for config vars #11231
[sdk/dotnet] Make the LocalSerializer class public.
#11106
[sdk/yaml] Updates Pulumi YAML to v1.0.0 containing runtime support for external config. #11222
[engine] Fix a bug in update plans handling resources being replaced due to other resources being deleted before replacement. #11009
[engine] Pending deletes are no longer executed before everything else. This correctly handles dependencies for resource graphs that were partially deleted. #11027
[engine] Expand duplicate URN checks across direct URNs and aliases. #11212
[auto/dotnet] Support for remote operations #11194
[auto/dotnet] Support for remote operations #11194
[cli/config] Typing made optional, extended short-hand values to arrays and correctly pass stack name to config validator #11192
[auto/go] Support for remote operations #11168
[auto/nodejs] Support for remote operations #11170
[auto/python] Support for remote operations #11174
[cli/state] Add the --target-dependents flag to pulumi state delete #11164
pulumi state delete
#11164[cli] Allow globbing for resources that do not yet exist #11150
[engine] Fix an invalid cast in analyzer plugins. #11141
[sdk/go] Update notes, update the deprecated functions, make some lint. #11002
[auto/go] Add InstallPluginFromServer method #10955
[auto/nodejs] Add InstallPluginFromServer #10955
[auto/python] Add install_plugin_from_server #10955
[cli] Implement initial MVP for hierarchical and structured project configuration. #10832
[cli] Allow rotating the passphrase non-interactively #11094
[programgen] Add error reporting infrastructure #11032
[ci] Fix pull request URLs in Pulumi changelogs #11060
[engine] Fix type validation of stack config with secure values. #11084
[cli/engine] Component Resources inherit thier parents providers map #10933
[cli/import] Only trigger an import when necessary during refresh. #11100
[sdk/go] Allow decoding *asset and *archive values #11053
[sdkgen/{go,python}] Handle hypheneated names in go and python #11049
[sdk/nodejs] Fixes loss of undefined type case in all()
#11048
[sdk/python] pulumi.automation.create_or_select_stack() attempts to select the stack before attempting to create #11115
[sdk/python] Python runtime now respects the --parallel flag. #11122
[sdkgen/{go,python}] Revert 10738, fixing python class generation #11033
[auto/nodejs] Adds support for parallel programs in NodeJS Automation API #10568
[auto/nodejs] Adds support for parallel programs in NodeJS Automation API #10568
[backend/service] Implements diff-based snapshot saving protocol that reduces bandwidth on large stacks. To opt into this feature, set the environment variable and value PULUMI_OPTIMIZED_CHECKPOINT_PATCH=true.
#10788
[engine] Adds structured alias support to the engine #10819
[cli/display] Displays time elapsed when modifying a resource. #10953
[sdk/go] Modifies built-in As-ArrayOutput methods to attempt to convert []interface{} to []T. #10991
[sdkgen/go] Add modulePath to go, allowing accurate go.mod files for prerelease packages
#10944
[cli/new] Add --remove flag topulumi destroy
#10943
[cli] Project path is included in error messages when a project can't be loaded. #10973
[cli/display] Fix gocloud unconditonally writing to stderr. #11007
[cli/{display,engine}] Use of unsupported ResourceOptions on components will no longer raise resource warnings, instead they are just logged to the diagnostic error stream. #11010
[cli/import] Handle importing resource properties that are typed as a union #10995
[cli/package] Require a path separator for path based binaries. This allows us to distinguish between ./myProvider (execute the binary at path) and myProvider (execute the installed plugin). #11015
[programgen/dotnet] Annotate deeply nested objects with their schema types and apply property name overrides #10976
[programgen/go] Fixes int constant range expressions for go #10979
[programgen/go] Missing default case handling when generating local variables #10978
[sdk/go] Avoid backfilling property deps for Go #11021
[sdkgen] Re-enables caching the schemas of versioned provider plugins. #10971
[programgen/python] Recursively annotate expressions under invoke calls with their associated schema types #10958
pulumi convert from YAML."
#11018[cli/new] Fix cloning templates from Azure DevOps repos. #10954
[cli] Allow per-execution override of the cloud secrets provider url via the PULUMI_CLOUD_SECRET_OVERRIDE environment variable. This allows a temporar
[cli] Allow per-execution override of the cloud secrets provider url via the PULUMI_CLOUD_SECRET_OVERRIDE environment variable. This allows a temporary replacement without updating the stack config, such a during CI. This does not effect stacks using service secrets or passphrases.
#10749
[cli/new] Enables pulumi new to use templates from Azure DevOps(currently limited to master/main branches and does not support providing subdirectories).
#10789
[engine] 'pulumi policy new' now uses the same system as 'pulumi new' to install dependencies. #10797
[programgen] Support resource option "version" in pulumi convert to select specific provider SDK versions.
#10194
[cli/plugin] Don't retry plugin downloads in 403 and 404 responses #10803
[sdk/dotnet] Added Deployment.OrganizationName to return the current organization if available.
#10564
[sdk/go] Pulumi Go Programs now support a Pulumi.yaml option buildTarget: path/to/binary to compile/recompile a Go binary to that location.
#10731
[sdk/go] Added Context.Organization to return the current organization if available.
#10811
[ci] Re-enable Homebrew Tap publishing. #10796
[cli] Fixes --tracing to account for response parsing in HTTP api/* spans. #10828
[cli] Fixes Pulumi.yaml validation error when the refresh: always option is specified
#10833
[engine] Mark pulumi-analyzer-policy and pulumi-analyzer-policy-python as bundled plugins. #10817
[engine] Fix node and python MLCs on Windows. #10827
[sdkgen/dotnet] Fixes a .NET SDK codegen bug when emitting functions with secret parameters. #10840
[sdkgen/dotnet] Fix the type emitted for ImmutableArray.Create and ImmutableDictionary.Create for secret properties.
#10850
[sdk/nodejs] The @pulumi/pulumi package is now interoperable with ESModules.
#10622
[sdk/{nodejs,python}] getOrganization now returns "organization" by default.
#10820
[programgen/yaml] Fix incorrect import for non-pulumi owned package on convert #10727
[backend] Adds a flag PULUMI_SKIP_CHECKPOINTS=true that makes Pulumi skip saving state checkpoints as it modifies resources and only save the final st
[backend] Adds a flag PULUMI_SKIP_CHECKPOINTS=true that makes Pulumi skip saving state checkpoints as it modifies resources and only save the final state of a deployment.
#10750
This is an experimental feature that also requires PULUMI_EXPERIMENTAL=true to be set.
Using the feature introduces risk that in the case of network disconnect or crash state edits will be lost and may require manual recovery. When this risk is acceptable, using the feature can speed up Pulumi deployments.
See also:
[ci] Improves first-time contributor developer experience and reduces test execution time by defaulting integration.ProgramTest to a filestate backend. Tests that require running against a service should set RequireService to true.
#10720
[cli] Add a package author focused subcommand: pulumi package with subcommands pulumi package gen-sdk and pulumi package get-schema.
#10711
[cli] Use "https://github.com/pulumi/pulumi/blob/master/sdk/go/common/workspace/project.json" to validate loaded project files. #10596
[engine] Plugin resolution now automatically installs any missing plugins as they are encountered. #10691
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →