While this may be incorrect, I like to think of it...
# general
m
While this may be incorrect, I like to think of it as your pulumi python program's output is an object graph. That object graph is compared against the pulumi state to build a resource diff, and that resource diff is handed off to the actual providers (often written in go) to interact with the actual provider API in order to apply the diff between the object graph and the state