pulumi/pkg/codegen/python
Will Jones e65c2aa368
Don't incorrectly emit deprecated warnings (#16400)
Presently, the Python SDK incorrectly emits deprecation warnings for
properties even if user code does not reference them. This is due to
various pieces of code in the SDK that enumerate properties e.g. for the
purpose of serialisation/RPC calls. In enumerating properties, their
getters are invoked, triggering the deprecation warnings.

There isn't currently a way for us to detect which properties may or may
not be deprecated and handle them appropriately, so this commit
introduces one. Deprecation messages are moved into a new decorator,
`@pulumi.deprecated`. This decorator accepts a `Callable` and wraps it,
making two changes:

* Before the decorated `Callable`'s execution, deprecation messages are
printed.
* The returned `Callable` is tagged with a new reserved property,
`_pulumi_deprecated_callable`, which references the wrapped `Callable`
(that is, the original `Callable` whose invocation will _not_ produce
deprecation warnings).

With this in place, we subsequently make the following two changes:

* We modify the SDK enumeration code (specifically that in
`input_type_to_dict` to check for `_pulumi_deprecated_callable`
properties and use them where appropriate to invoke getters without
triggering deprecation warnings.
* We modify Python code generation so that instead of emitting
statements to print deprecation warnings, we simply emit applications of
the `@pulumi.deprecated` decorator instead.

This commit adds some Python unit tests to exercise the decorator and
manual testing has been performed using the AWS Classic SDK.

Fixes #15894
2024-06-17 16:04:55 +00:00
..
gen_program_test Use `assert.NoError` rather than `assert.Nil` (#14233) 2023-10-13 09:46:07 +00:00
.gitignore Simplify output-funcs codegen test (#8039) 2021-09-23 13:42:20 -04:00
doc.go Enable perfsprint linter (#14813) 2023-12-12 12:19:42 +00:00
gen.go Don't incorrectly emit deprecated warnings (#16400) 2024-06-17 16:04:55 +00:00
gen_intrinsics.go ci: gofmt 1.18+ clean 2022-09-21 09:48:39 -07:00
gen_program.go Add explict provider test to conformance tests (#16362) 2024-06-11 14:56:08 +00:00
gen_program_expressions.go [docs] Fix generating constructor examples for resources that have numeric enums as input (#16223) 2024-05-30 22:43:12 +00:00
gen_program_lower.go all: Reformat with gofumpt 2023-03-03 09:00:24 -08:00
gen_program_quotes.go [python/program-gen] Fix panic in python program-gen when rewriting index expressions (#14099) 2023-10-06 22:26:04 +00:00
gen_program_quotes_test.go Add missing required attributes for TestLowerPropertyAccess 2023-03-08 15:42:02 +01:00
gen_program_test.go chore: Update makefile, ensure make test_codegen_go 2022-10-17 00:22:48 -07:00
gen_program_utils.go throw/raise an error when input list does not have a single element 2023-05-30 13:38:01 +02:00
gen_resource_mappings.go Use slice.Prealloc instead of make([]T, 0, ...) 2023-06-29 11:27:50 +01:00
gen_resource_mappings_test.go sdk/go: Remove 'nolint' directives from package docs 2023-01-06 09:06:47 -08:00
gen_test.go [Python] Move existing dependency installation and python command invocation to a Toolchain interface (#16243) 2024-06-03 13:52:27 +00:00
importer.go Add Pyproject schema. 2023-05-27 13:18:27 -04:00
pyproject.go Python SDK generation with pyproject.toml stops generating setup.py (#13812) 2023-09-06 13:08:42 +00:00
python.go ci: gofmt 1.18+ clean 2022-09-21 09:48:39 -07:00
python_test.go Support a logical name for config vars 2022-11-02 12:39:57 -07:00
requirements.txt Simplify output-funcs codegen test (#8039) 2021-09-23 13:42:20 -04:00
test.go [Python] Move existing dependency installation and python command invocation to a Toolchain interface (#16243) 2024-06-03 13:52:27 +00:00
utilities.go Enable python conformance tests (#15283) 2024-01-30 15:02:59 +00:00
utilities.py [sdkgen/python] Require Python >=3.8 (#15368) 2024-02-04 19:07:53 +00:00
utilities_test.go Enable python conformance tests (#15283) 2024-01-30 15:02:59 +00:00