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.
Background
Stripe resources have properties that are sometimes absent. The way stripe-python handles this is, it gives you an AttributeError if you try and access the property.
Unfortunately, we type these properties with
Optional[...]
, which implies that you can always access the property but it will sometimes beNone
.We can't type the properties with
NotRequired[...]
, asNotRequired
only exists forTypedDict
and Stripe resources are real classes that extend fromStripeObject
.Summary
This PR introduces
stripe.absent_as_none
. If you set this to true, then stripe-python will give youNone
when you try and access an absent property, instead of producing anAttributeError
. Hypothetical way to address the issue in #1227 without a breaking change.I'm not sure I like this. I don't know how discoverable we could make
stripe.absent_as_none
. We could consider adding a message to theAttributeError
you get when trying to access an absent property that advertisesstripe.absent_as_none
, but that would only help a little.