Skip to content

Add SearchableAPIResource and SearchResultObject for types-stripe #8696

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 12 commits into from
Sep 13, 2022
2 changes: 2 additions & 0 deletions stubs/stripe/@tests/stubtest_allowlist.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# The following methods have custom classmethod decorators
stripe\..*\.delete
stripe\..*PaymentIntent\.confirm
stripe\.api_resources\..*\.SearchableAPIResource\.search # Not defined on the actual class in v3, but expected to exist.
stripe\.api_resources\..*\.SearchableAPIResource\.search_auto_paging_iter # Not defined on the actual class in v3, but expected to exist.
1 change: 1 addition & 0 deletions stubs/stripe/stripe/api_resources/__init__.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ from stripe.api_resources.recipient_transfer import RecipientTransfer as Recipie
from stripe.api_resources.refund import Refund as Refund
from stripe.api_resources.reversal import Reversal as Reversal
from stripe.api_resources.review import Review as Review
from stripe.api_resources.search_result_object import SearchResultObject as SearchResultObject
from stripe.api_resources.setup_attempt import SetupAttempt as SetupAttempt
from stripe.api_resources.setup_intent import SetupIntent as SetupIntent
from stripe.api_resources.sku import SKU as SKU
Expand Down
1 change: 1 addition & 0 deletions stubs/stripe/stripe/api_resources/abstract/__init__.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ from stripe.api_resources.abstract.listable_api_resource import ListableAPIResou
from stripe.api_resources.abstract.nested_resource_class_methods import (
nested_resource_class_methods as nested_resource_class_methods,
)
from stripe.api_resources.abstract.searchable_api_resource import SearchableAPIResource as SearchableAPIResource
from stripe.api_resources.abstract.singleton_api_resource import SingletonAPIResource as SingletonAPIResource
from stripe.api_resources.abstract.updateable_api_resource import UpdateableAPIResource as UpdateableAPIResource
from stripe.api_resources.abstract.verify_mixin import VerifyMixin as VerifyMixin
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
from _typeshed import Self
from collections.abc import Iterator

from stripe.api_resources.abstract.api_resource import APIResource as APIResource
from stripe.api_resources.search_result_object import SearchResultObject

class SearchableAPIResource(APIResource):
@classmethod
def search(cls: type[Self], *args: str | None, **kwargs) -> SearchResultObject[Self]: ...
@classmethod
def search_auto_paging_iter(cls: type[Self], *args: str | None, **kwargs) -> Iterator[Self]: ...
3 changes: 2 additions & 1 deletion stubs/stripe/stripe/api_resources/charge.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,12 @@ from stripe import api_requestor as api_requestor
from stripe.api_resources.abstract import (
CreateableAPIResource as CreateableAPIResource,
ListableAPIResource as ListableAPIResource,
SearchableAPIResource as SearchableAPIResource,
UpdateableAPIResource as UpdateableAPIResource,
custom_method as custom_method,
)

class Charge(CreateableAPIResource, ListableAPIResource, UpdateableAPIResource):
class Charge(CreateableAPIResource, ListableAPIResource, SearchableAPIResource, UpdateableAPIResource):
OBJECT_NAME: str
def capture(self, idempotency_key: str | None = ..., **params): ...
def refund(self, idempotency_key: str | None = ..., **params): ...
Expand Down
3 changes: 2 additions & 1 deletion stubs/stripe/stripe/api_resources/customer.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,13 @@ from stripe.api_resources.abstract import (
CreateableAPIResource as CreateableAPIResource,
DeletableAPIResource as DeletableAPIResource,
ListableAPIResource as ListableAPIResource,
SearchableAPIResource as SearchableAPIResource,
UpdateableAPIResource as UpdateableAPIResource,
custom_method as custom_method,
nested_resource_class_methods as nested_resource_class_methods,
)

class Customer(CreateableAPIResource, DeletableAPIResource, ListableAPIResource, UpdateableAPIResource):
class Customer(CreateableAPIResource, DeletableAPIResource, ListableAPIResource, SearchableAPIResource, UpdateableAPIResource):
OBJECT_NAME: str
def delete_discount(self, **params) -> None: ...
@classmethod
Expand Down
3 changes: 2 additions & 1 deletion stubs/stripe/stripe/api_resources/invoice.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,12 @@ from stripe.api_resources.abstract import (
CreateableAPIResource as CreateableAPIResource,
DeletableAPIResource as DeletableAPIResource,
ListableAPIResource as ListableAPIResource,
SearchableAPIResource as SearchableAPIResource,
UpdateableAPIResource as UpdateableAPIResource,
custom_method as custom_method,
)

class Invoice(CreateableAPIResource, DeletableAPIResource, ListableAPIResource, UpdateableAPIResource):
class Invoice(CreateableAPIResource, DeletableAPIResource, ListableAPIResource, SearchableAPIResource, UpdateableAPIResource):
OBJECT_NAME: str
def finalize_invoice(self: Self, idempotency_key: str | None = ..., **params) -> Self: ...
def mark_uncollectible(self: Self, idempotency_key: str | None = ..., **params) -> Self: ...
Expand Down
3 changes: 2 additions & 1 deletion stubs/stripe/stripe/api_resources/payment_intent.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,12 @@ from typing import overload
from stripe.api_resources.abstract import (
CreateableAPIResource as CreateableAPIResource,
ListableAPIResource as ListableAPIResource,
SearchableAPIResource as SearchableAPIResource,
UpdateableAPIResource as UpdateableAPIResource,
custom_method as custom_method,
)

class PaymentIntent(CreateableAPIResource, ListableAPIResource, UpdateableAPIResource):
class PaymentIntent(CreateableAPIResource, ListableAPIResource, SearchableAPIResource, UpdateableAPIResource):
OBJECT_NAME: str
def cancel(self, idempotency_key: str | None = ..., **params): ...
def capture(self, idempotency_key: str | None = ..., **params): ...
Expand Down
3 changes: 2 additions & 1 deletion stubs/stripe/stripe/api_resources/price.pyi
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
from stripe.api_resources.abstract import (
CreateableAPIResource as CreateableAPIResource,
ListableAPIResource as ListableAPIResource,
SearchableAPIResource as SearchableAPIResource,
UpdateableAPIResource as UpdateableAPIResource,
)

class Price(CreateableAPIResource, ListableAPIResource, UpdateableAPIResource):
class Price(CreateableAPIResource, ListableAPIResource, SearchableAPIResource, UpdateableAPIResource):
OBJECT_NAME: str
3 changes: 2 additions & 1 deletion stubs/stripe/stripe/api_resources/product.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@ from stripe.api_resources.abstract import (
CreateableAPIResource as CreateableAPIResource,
DeletableAPIResource as DeletableAPIResource,
ListableAPIResource as ListableAPIResource,
SearchableAPIResource as SearchableAPIResource,
UpdateableAPIResource as UpdateableAPIResource,
)

class Product(CreateableAPIResource, DeletableAPIResource, ListableAPIResource, UpdateableAPIResource):
class Product(CreateableAPIResource, DeletableAPIResource, ListableAPIResource, SearchableAPIResource, UpdateableAPIResource):
OBJECT_NAME: str
33 changes: 33 additions & 0 deletions stubs/stripe/stripe/api_resources/search_result_object.pyi
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
from _typeshed import Self
from collections.abc import Iterator
from typing import Any, ClassVar, Generic, TypeVar
from typing_extensions import Literal

from stripe.stripe_object import StripeObject

_T = TypeVar("_T")

class SearchResultObject(StripeObject, Generic[_T]):
OBJECT_NAME: ClassVar[Literal["search_result"]]
url: str
has_more: bool
data: list[_T]
next_page: str
total_count: int

def search(
self: Self, api_key: str | None = ..., stripe_version: str | None = ..., stripe_account: str | None = ..., **params
) -> Self: ...
def __getitem__(self, k: str) -> Any: ...
def __iter__(self) -> Iterator[_T]: ...
def __len__(self) -> int: ...
def auto_paging_iter(self) -> Iterator[_T]: ...
@classmethod
def empty_search_result(
cls: type[Self], api_key: str | None = ..., stripe_version: str | None = ..., stripe_account: str | None = ...
) -> Self: ...
@property
def is_empty(self) -> bool: ...
def next_search_result_page(
self: Self, api_key: str | None = ..., stripe_version: str | None = ..., stripe_account: str | None = ..., **params
) -> Self: ...
5 changes: 4 additions & 1 deletion stubs/stripe/stripe/api_resources/subscription.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,13 @@ from stripe.api_resources.abstract import (
CreateableAPIResource as CreateableAPIResource,
DeletableAPIResource as DeletableAPIResource,
ListableAPIResource as ListableAPIResource,
SearchableAPIResource as SearchableAPIResource,
UpdateableAPIResource as UpdateableAPIResource,
custom_method as custom_method,
)

class Subscription(CreateableAPIResource, DeletableAPIResource, ListableAPIResource, UpdateableAPIResource):
class Subscription(
CreateableAPIResource, DeletableAPIResource, ListableAPIResource, SearchableAPIResource, UpdateableAPIResource
):
OBJECT_NAME: str
def delete_discount(self, **params) -> None: ...