Skip to content

Commit

Permalink
Merge pull request #1153 from stripe/pakrym/Move_exports_for_modules_…
Browse files Browse the repository at this point in the history
…that_will_become_internal

Move exports for more modules
  • Loading branch information
pakrym-stripe authored Dec 7, 2023
2 parents b243286 + 3d25e4f commit b8dabab
Show file tree
Hide file tree
Showing 89 changed files with 2,086 additions and 1,821 deletions.
14 changes: 12 additions & 2 deletions .flake8
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,26 @@ ignore = E501, W503
per-file-ignores =
*/__init__.py: E402, F401
# we test various import patterns
tests/test_exports.py: IMP100, IMP101
tests/*: IMP101
tests/test_exports.py: IMP100, IMP101, IMP102
tests/*: IMP101, IMP102, IMP102
# backcompat with outdated import patterns
stripe/api_resources/*: IMP100, E402, F401

# IMP101: Do not import stripe
# breaking circular dependencies in overrides
stripe/_file.py: IMP101
stripe/_account.py: IMP101
stripe/_person.py: IMP101
stripe/_quote.py: IMP101

# IMP102: Do not create public modules
# contains a single deprecated class
stripe/api_resources/recipient_transfer.py: IMP102
# type names conflict with existing error names in stripe
stripe/oauth_error.py: IMP102
# setup.py is required for tooling
setup.py: IMP102

[flake8:local-plugins]
extension =
SPY = flake8_stripe:TypingImportsChecker
Expand Down
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ clean:

update-version:
@echo "$(VERSION)" > VERSION
@perl -pi -e 's|VERSION = "[.\d\w]+"|VERSION = "$(VERSION)"|' stripe/version.py
@perl -pi -e 's|VERSION = "[.\d\w]+"|VERSION = "$(VERSION)"|' stripe/_version.py

codegen-format: fmt

Expand Down
36 changes: 21 additions & 15 deletions flake8_stripe/flake8_stripe.py
Original file line number Diff line number Diff line change
Expand Up @@ -121,23 +121,30 @@ class StripeImportsChecker:
name = __name__
version = "0.1.0"

def __init__(self, tree: ast.AST):
def __init__(self, tree: ast.AST, filename: str):
self.tree = tree

allowed_non_private_imports = [
# These have not been converted yet
"stripe.util",
"stripe.oauth",
"stripe.webhook",
"stripe.multipart_data_generator",
"stripe.request_metrics",
"stripe.object_classes",
"stripe.app_info",
"stripe.api_version",
"stripe.http_client",
]
self.filename = filename

def run(self) -> Iterator[Tuple[int, int, str, type]]:
if not self.filename.split("/")[-1].startswith("_"):
backcompat = False
for node in ast.walk(self.tree):
# check node is a constant string that contains package is deprecated
if (
isinstance(node, ast.Constant)
and isinstance(node.value, str)
and "is deprecated" in node.value
):
backcompat = True

if not backcompat:
yield (
0,
0,
"IMP102 Do not create non-private modules",
type(self),
)

for node in ast.walk(self.tree):
if isinstance(node, ast.Import):
# Forbid: import stripe
Expand All @@ -154,7 +161,6 @@ def run(self) -> Iterator[Tuple[int, int, str, type]]:
parts = node.module.split(".")
if (
len(parts) > 1
and node.module not in self.allowed_non_private_imports
and parts[0] == "stripe"
and not parts[-1].startswith("_")
):
Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
long_description = fp.read()

version_contents = {}
with open(os.path.join(here, "stripe", "version.py"), encoding="utf-8") as f:
with open(os.path.join(here, "stripe", "_version.py"), encoding="utf-8") as f:
exec(f.read(), version_contents)

setup(
Expand Down
33 changes: 26 additions & 7 deletions stripe/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,13 @@
# Andrew Metcalf <andrew@stripe.com>

# Configuration variables
from stripe.api_version import _ApiVersion
from stripe._api_version import _ApiVersion

from stripe.app_info import AppInfo

if TYPE_CHECKING:
from stripe.http_client import HTTPClient
# We must import the app_info module eagerly before defining the app_info global
# otherwise the late import will overwrite the global
import stripe.app_info
from stripe._app_info import AppInfo
from stripe._version import VERSION as VERSION

api_key: Optional[str] = None
client_id: Optional[str] = None
Expand All @@ -38,10 +39,10 @@
log: Optional[Literal["debug", "info"]] = None

# OAuth
from stripe.oauth import OAuth
from stripe._oauth import OAuth

# Webhooks
from stripe.webhook import Webhook, WebhookSignature
from stripe._webhook import Webhook, WebhookSignature


# Sets some basic information about the running application that's sent along
Expand Down Expand Up @@ -130,13 +131,31 @@ def set_app_info(
SignatureVerificationError as SignatureVerificationError,
)

# HttpClient
from stripe._http_client import (
HTTPClient as HTTPClient,
PycurlClient as PycurlClient,
RequestsClient as RequestsClient,
UrlFetchClient as UrlFetchClient,
new_default_http_client as new_default_http_client,
)

# Util
from stripe._util import convert_to_stripe_object as convert_to_stripe_object

# Backwards compatibility re-exports
if not TYPE_CHECKING:
from stripe import _api_requestor as api_requestor
from stripe import _stripe_response as stripe_response
from stripe import _stripe_object as stripe_object
from stripe import _error_object as error_object
from stripe import _error as error
from stripe import _http_client as http_client
from stripe import _util as util
from stripe import _oauth as oauth
from stripe import _webhook as webhook
from stripe import _multipart_data_generator as multipart_data_generator
from stripe import _request_metrics as request_metrics
from stripe._file import File as FileUpload

import warnings
Expand Down
56 changes: 30 additions & 26 deletions stripe/_account.py
Original file line number Diff line number Diff line change
@@ -1,17 +1,18 @@
# -*- coding: utf-8 -*-
# File generated from our OpenAPI spec
from stripe import oauth, util
from stripe import _util
from stripe._createable_api_resource import CreateableAPIResource
from stripe._deletable_api_resource import DeletableAPIResource
from stripe._expandable_field import ExpandableField
from stripe._list_object import ListObject
from stripe._listable_api_resource import ListableAPIResource
from stripe._nested_resource_class_methods import nested_resource_class_methods
from stripe._oauth import OAuth
from stripe._person import Person
from stripe._request_options import RequestOptions
from stripe._stripe_object import StripeObject
from stripe._updateable_api_resource import UpdateableAPIResource
from stripe.util import class_method_variant
from stripe._util import class_method_variant
from typing import ClassVar, Dict, List, Optional, Union, cast, overload
from typing_extensions import (
Literal,
Expand Down Expand Up @@ -3609,7 +3610,7 @@ def _cls_persons(
cls._static_request(
"get",
"/v1/accounts/{account}/persons".format(
account=util.sanitize_id(account)
account=_util.sanitize_id(account)
),
api_key=api_key,
stripe_version=stripe_version,
Expand Down Expand Up @@ -3663,7 +3664,7 @@ def persons( # pyright: ignore[reportGeneralTypeIssues]
self._request(
"get",
"/v1/accounts/{account}/persons".format(
account=util.sanitize_id(self.get("id"))
account=_util.sanitize_id(self.get("id"))
),
idempotency_key=idempotency_key,
params=params,
Expand Down Expand Up @@ -3691,7 +3692,7 @@ def _cls_reject(
cls._static_request(
"post",
"/v1/accounts/{account}/reject".format(
account=util.sanitize_id(account)
account=_util.sanitize_id(account)
),
api_key=api_key,
stripe_version=stripe_version,
Expand Down Expand Up @@ -3751,7 +3752,7 @@ def reject( # pyright: ignore[reportGeneralTypeIssues]
self._request(
"post",
"/v1/accounts/{account}/reject".format(
account=util.sanitize_id(self.get("id"))
account=_util.sanitize_id(self.get("id"))
),
idempotency_key=idempotency_key,
params=params,
Expand Down Expand Up @@ -3785,7 +3786,7 @@ def instance_url(self):

def deauthorize(self, **params):
params["stripe_user_id"] = self.id
return oauth.OAuth.deauthorize(**params)
return OAuth.deauthorize(**params)

def serialize(self, previous):
params = super(Account, self).serialize(previous)
Expand Down Expand Up @@ -3817,8 +3818,8 @@ def retrieve_capability(
cls._static_request(
"get",
"/v1/accounts/{account}/capabilities/{capability}".format(
account=util.sanitize_id(account),
capability=util.sanitize_id(capability),
account=_util.sanitize_id(account),
capability=_util.sanitize_id(capability),
),
api_key=api_key,
stripe_version=stripe_version,
Expand Down Expand Up @@ -3847,8 +3848,8 @@ def modify_capability(
cls._static_request(
"post",
"/v1/accounts/{account}/capabilities/{capability}".format(
account=util.sanitize_id(account),
capability=util.sanitize_id(capability),
account=_util.sanitize_id(account),
capability=_util.sanitize_id(capability),
),
api_key=api_key,
stripe_version=stripe_version,
Expand Down Expand Up @@ -3876,7 +3877,7 @@ def list_capabilities(
cls._static_request(
"get",
"/v1/accounts/{account}/capabilities".format(
account=util.sanitize_id(account)
account=_util.sanitize_id(account)
),
api_key=api_key,
stripe_version=stripe_version,
Expand Down Expand Up @@ -3904,7 +3905,7 @@ def create_external_account(
cls._static_request(
"post",
"/v1/accounts/{account}/external_accounts".format(
account=util.sanitize_id(account)
account=_util.sanitize_id(account)
),
api_key=api_key,
stripe_version=stripe_version,
Expand Down Expand Up @@ -3933,7 +3934,8 @@ def retrieve_external_account(
cls._static_request(
"get",
"/v1/accounts/{account}/external_accounts/{id}".format(
account=util.sanitize_id(account), id=util.sanitize_id(id)
account=_util.sanitize_id(account),
id=_util.sanitize_id(id),
),
api_key=api_key,
stripe_version=stripe_version,
Expand Down Expand Up @@ -3964,7 +3966,8 @@ def modify_external_account(
cls._static_request(
"post",
"/v1/accounts/{account}/external_accounts/{id}".format(
account=util.sanitize_id(account), id=util.sanitize_id(id)
account=_util.sanitize_id(account),
id=_util.sanitize_id(id),
),
api_key=api_key,
stripe_version=stripe_version,
Expand Down Expand Up @@ -3993,7 +3996,8 @@ def delete_external_account(
cls._static_request(
"delete",
"/v1/accounts/{account}/external_accounts/{id}".format(
account=util.sanitize_id(account), id=util.sanitize_id(id)
account=_util.sanitize_id(account),
id=_util.sanitize_id(id),
),
api_key=api_key,
stripe_version=stripe_version,
Expand Down Expand Up @@ -4021,7 +4025,7 @@ def list_external_accounts(
cls._static_request(
"get",
"/v1/accounts/{account}/external_accounts".format(
account=util.sanitize_id(account)
account=_util.sanitize_id(account)
),
api_key=api_key,
stripe_version=stripe_version,
Expand Down Expand Up @@ -4051,7 +4055,7 @@ def create_login_link(
cls._static_request(
"post",
"/v1/accounts/{account}/login_links".format(
account=util.sanitize_id(account)
account=_util.sanitize_id(account)
),
api_key=api_key,
stripe_version=stripe_version,
Expand Down Expand Up @@ -4079,7 +4083,7 @@ def create_person(
cls._static_request(
"post",
"/v1/accounts/{account}/persons".format(
account=util.sanitize_id(account)
account=_util.sanitize_id(account)
),
api_key=api_key,
stripe_version=stripe_version,
Expand Down Expand Up @@ -4108,8 +4112,8 @@ def retrieve_person(
cls._static_request(
"get",
"/v1/accounts/{account}/persons/{person}".format(
account=util.sanitize_id(account),
person=util.sanitize_id(person),
account=_util.sanitize_id(account),
person=_util.sanitize_id(person),
),
api_key=api_key,
stripe_version=stripe_version,
Expand Down Expand Up @@ -4138,8 +4142,8 @@ def modify_person(
cls._static_request(
"post",
"/v1/accounts/{account}/persons/{person}".format(
account=util.sanitize_id(account),
person=util.sanitize_id(person),
account=_util.sanitize_id(account),
person=_util.sanitize_id(person),
),
api_key=api_key,
stripe_version=stripe_version,
Expand Down Expand Up @@ -4168,8 +4172,8 @@ def delete_person(
cls._static_request(
"delete",
"/v1/accounts/{account}/persons/{person}".format(
account=util.sanitize_id(account),
person=util.sanitize_id(person),
account=_util.sanitize_id(account),
person=_util.sanitize_id(person),
),
api_key=api_key,
stripe_version=stripe_version,
Expand Down Expand Up @@ -4197,7 +4201,7 @@ def list_persons(
cls._static_request(
"get",
"/v1/accounts/{account}/persons".format(
account=util.sanitize_id(account)
account=_util.sanitize_id(account)
),
api_key=api_key,
stripe_version=stripe_version,
Expand Down
Loading

0 comments on commit b8dabab

Please sign in to comment.