From ef0995016e0ca3624b8eee146810b86b4b9a42e7 Mon Sep 17 00:00:00 2001 From: Richard Marmorstein <52928443+richardm-stripe@users.noreply.github.com> Date: Thu, 2 Feb 2023 15:50:32 -0800 Subject: [PATCH] API Updates for beta branch (#921) --- CHANGELOG.md | 7 ++++- OPENAPI_VERSION | 2 +- .../financial_connections/__init__.py | 4 +++ .../financial_connections/account.py | 2 ++ .../financial_connections/inferred_balance.py | 13 ++++++++ .../financial_connections/transaction.py | 13 ++++++++ stripe/api_resources/subscription.py | 31 +++++++++++++++++++ stripe/object_classes.py | 2 ++ stripe/util.py | 4 +-- tests/test_generated_examples.py | 11 +++++++ tests/test_util.py | 4 ++- 11 files changed, 88 insertions(+), 5 deletions(-) create mode 100644 stripe/api_resources/financial_connections/inferred_balance.py create mode 100644 stripe/api_resources/financial_connections/transaction.py diff --git a/CHANGELOG.md b/CHANGELOG.md index de575ce0a..7439ef543 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,9 +1,14 @@ # Changelog +## 5.1.0 - 2023-02-02 +* [#920](https://github.com/stripe/stripe-python/pull/920) API Updates + * Add support for `resume` method on resource `Subscription` +* [#913](https://github.com/stripe/stripe-python/pull/913) Pass params into logger.{info,debug} + ## 5.1.0b7 - 2023-01-26 * [#917](https://github.com/stripe/stripe-python/pull/917) API Updates for beta branch * Updated stable APIs to the latest version - * Add support for `list_transactions` method on resource `Tax.Transaction` + * Add support for `list_transactions` method on resource `Tax.Transaction` ## 5.1.0b6 - 2023-01-19 * [#915](https://github.com/stripe/stripe-python/pull/915) API Updates for beta branch diff --git a/OPENAPI_VERSION b/OPENAPI_VERSION index 73d5d6e51..4e134f2a9 100644 --- a/OPENAPI_VERSION +++ b/OPENAPI_VERSION @@ -1 +1 @@ -v221 \ No newline at end of file +v223 \ No newline at end of file diff --git a/stripe/api_resources/financial_connections/__init__.py b/stripe/api_resources/financial_connections/__init__.py index e593571f2..1646c8c3b 100644 --- a/stripe/api_resources/financial_connections/__init__.py +++ b/stripe/api_resources/financial_connections/__init__.py @@ -11,4 +11,8 @@ from stripe.api_resources.financial_connections.account_ownership import ( AccountOwnership, ) +from stripe.api_resources.financial_connections.inferred_balance import ( + InferredBalance, +) from stripe.api_resources.financial_connections.session import Session +from stripe.api_resources.financial_connections.transaction import Transaction diff --git a/stripe/api_resources/financial_connections/account.py b/stripe/api_resources/financial_connections/account.py index e7e46fb09..dee07b8ea 100644 --- a/stripe/api_resources/financial_connections/account.py +++ b/stripe/api_resources/financial_connections/account.py @@ -4,8 +4,10 @@ from stripe import util from stripe.api_resources.abstract import ListableAPIResource +from stripe.api_resources.abstract import nested_resource_class_methods +@nested_resource_class_methods("inferred_balance", operations=["list"]) class Account(ListableAPIResource): """ A Financial Connections Account represents an account that exists outside of Stripe, to which you have been granted some degree of access. diff --git a/stripe/api_resources/financial_connections/inferred_balance.py b/stripe/api_resources/financial_connections/inferred_balance.py new file mode 100644 index 000000000..57f90eddf --- /dev/null +++ b/stripe/api_resources/financial_connections/inferred_balance.py @@ -0,0 +1,13 @@ +# -*- coding: utf-8 -*- +# File generated from our OpenAPI spec +from __future__ import absolute_import, division, print_function + +from stripe.api_resources.abstract import ListableAPIResource + + +class InferredBalance(ListableAPIResource): + """ + A historical balance for the account on a particular day. It may be sourced from a balance snapshot provided by a financial institution, or inferred using transactions data. + """ + + OBJECT_NAME = "financial_connections.account_inferred_balance" diff --git a/stripe/api_resources/financial_connections/transaction.py b/stripe/api_resources/financial_connections/transaction.py new file mode 100644 index 000000000..bc49b0cc3 --- /dev/null +++ b/stripe/api_resources/financial_connections/transaction.py @@ -0,0 +1,13 @@ +# -*- coding: utf-8 -*- +# File generated from our OpenAPI spec +from __future__ import absolute_import, division, print_function + +from stripe.api_resources.abstract import ListableAPIResource + + +class Transaction(ListableAPIResource): + """ + A Transaction represents a real transaction that affects a Financial Connections Account balance. + """ + + OBJECT_NAME = "financial_connections.transaction" diff --git a/stripe/api_resources/subscription.py b/stripe/api_resources/subscription.py index 552530453..2e57e4c4a 100644 --- a/stripe/api_resources/subscription.py +++ b/stripe/api_resources/subscription.py @@ -91,6 +91,37 @@ def delete_discount(self, idempotency_key=None, **params): params=params, ) + @classmethod + def _cls_resume( + cls, + subscription, + api_key=None, + stripe_version=None, + stripe_account=None, + **params + ): + return cls._static_request( + "post", + "/v1/subscriptions/{subscription}/resume".format( + subscription=util.sanitize_id(subscription) + ), + api_key=api_key, + stripe_version=stripe_version, + stripe_account=stripe_account, + params=params, + ) + + @util.class_method_variant("_cls_resume") + def resume(self, idempotency_key=None, **params): + return self._request( + "post", + "/v1/subscriptions/{subscription}/resume".format( + subscription=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) + @classmethod def search(cls, *args, **kwargs): return cls._search( diff --git a/stripe/object_classes.py b/stripe/object_classes.py index 798a9cffd..70827d7b0 100644 --- a/stripe/object_classes.py +++ b/stripe/object_classes.py @@ -47,7 +47,9 @@ api_resources.financial_connections.Account.OBJECT_NAME: api_resources.financial_connections.Account, api_resources.financial_connections.AccountOwner.OBJECT_NAME: api_resources.financial_connections.AccountOwner, api_resources.financial_connections.AccountOwnership.OBJECT_NAME: api_resources.financial_connections.AccountOwnership, + api_resources.financial_connections.InferredBalance.OBJECT_NAME: api_resources.financial_connections.InferredBalance, api_resources.financial_connections.Session.OBJECT_NAME: api_resources.financial_connections.Session, + api_resources.financial_connections.Transaction.OBJECT_NAME: api_resources.financial_connections.Transaction, api_resources.FundingInstructions.OBJECT_NAME: api_resources.FundingInstructions, api_resources.gift_cards.Card.OBJECT_NAME: api_resources.gift_cards.Card, api_resources.gift_cards.Transaction.OBJECT_NAME: api_resources.gift_cards.Transaction, diff --git a/stripe/util.py b/stripe/util.py index b5ad1ab84..d4dbd53a6 100644 --- a/stripe/util.py +++ b/stripe/util.py @@ -53,14 +53,14 @@ def log_debug(message, **params): msg = logfmt(dict(message=message, **params)) if _console_log_level() == "debug": print(msg, file=sys.stderr) - logger.debug(msg) + logger.debug(msg, params) def log_info(message, **params): msg = logfmt(dict(message=message, **params)) if _console_log_level() in ["debug", "info"]: print(msg, file=sys.stderr) - logger.info(msg) + logger.info(msg, params) def _test_or_live_environment(): diff --git a/tests/test_generated_examples.py b/tests/test_generated_examples.py index 9aa7965ff..de02a96c4 100644 --- a/tests/test_generated_examples.py +++ b/tests/test_generated_examples.py @@ -489,6 +489,17 @@ def test_account_capability_update(self, request_mock): "/v1/accounts/acct_xxxxxxxxxxxxx/capabilities/card_payments", ) + def test_subscription_resume(self, request_mock): + stripe.Subscription.resume( + "sub_xxxxxxxxxxxxx", + proration_date=1675400000, + proration_behavior="always_invoice", + ) + request_mock.assert_requested( + "post", + "/v1/subscriptions/sub_xxxxxxxxxxxxx/resume", + ) + def test_account_person_retrieve(self, request_mock): stripe.Account.retrieve_person( "acct_xxxxxxxxxxxxx", "person_xxxxxxxxxxxxx" diff --git a/tests/test_util.py b/tests/test_util.py index ce3758c48..3106e6481 100644 --- a/tests/test_util.py +++ b/tests/test_util.py @@ -65,7 +65,9 @@ def log_test_loop(self, test_cases, logging_func, logger_name, mocker): ) else: print_mock.assert_not_called() - logger_mock.assert_called_once_with("message='foo \\nbar' y=3") + logger_mock.assert_called_once_with( + "message='foo \\nbar' y=3", {"y": 3} + ) finally: mocker.stopall()