Skip to content

Commit

Permalink
Move object_classes and some imports to other files for easier codegen (
Browse files Browse the repository at this point in the history
#579)

* Move namespaced imports into the main api_resources/__init__.py

* Move object_classes to their own file for easier codegen

* Cleanups per PR

* Move some code around for codegen, make fmt
  • Loading branch information
rattrayalex-stripe authored May 31, 2019
1 parent b6fe4bc commit 7a747ba
Show file tree
Hide file tree
Showing 4 changed files with 99 additions and 101 deletions.
6 changes: 0 additions & 6 deletions stripe/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,6 @@

# API resources
from stripe.api_resources import * # noqa
from stripe.api_resources import checkout # noqa
from stripe.api_resources import issuing # noqa
from stripe.api_resources import radar # noqa
from stripe.api_resources import reporting # noqa
from stripe.api_resources import sigma # noqa
from stripe.api_resources import terminal # noqa

# OAuth
from stripe.oauth import OAuth # noqa
Expand Down
7 changes: 7 additions & 0 deletions stripe/api_resources/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,13 @@

from stripe.api_resources.list_object import ListObject

from stripe.api_resources import checkout
from stripe.api_resources import issuing
from stripe.api_resources import radar
from stripe.api_resources import reporting
from stripe.api_resources import sigma
from stripe.api_resources import terminal

from stripe.api_resources.account import Account
from stripe.api_resources.account_link import AccountLink
from stripe.api_resources.alipay_account import AlipayAccount
Expand Down
85 changes: 85 additions & 0 deletions stripe/object_classes.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
from __future__ import absolute_import, division, print_function

from stripe import api_resources


OBJECT_CLASSES = {
# data structures
api_resources.ListObject.OBJECT_NAME: api_resources.ListObject,
# business objects
api_resources.Account.OBJECT_NAME: api_resources.Account,
api_resources.AccountLink.OBJECT_NAME: api_resources.AccountLink,
api_resources.AlipayAccount.OBJECT_NAME: api_resources.AlipayAccount,
api_resources.ApplePayDomain.OBJECT_NAME: api_resources.ApplePayDomain,
api_resources.ApplicationFee.OBJECT_NAME: api_resources.ApplicationFee,
api_resources.ApplicationFeeRefund.OBJECT_NAME: api_resources.ApplicationFeeRefund,
api_resources.Balance.OBJECT_NAME: api_resources.Balance,
api_resources.BalanceTransaction.OBJECT_NAME: api_resources.BalanceTransaction,
api_resources.BankAccount.OBJECT_NAME: api_resources.BankAccount,
api_resources.BitcoinReceiver.OBJECT_NAME: api_resources.BitcoinReceiver,
api_resources.BitcoinTransaction.OBJECT_NAME: api_resources.BitcoinTransaction,
api_resources.Capability.OBJECT_NAME: api_resources.Capability,
api_resources.Card.OBJECT_NAME: api_resources.Card,
api_resources.Charge.OBJECT_NAME: api_resources.Charge,
api_resources.checkout.Session.OBJECT_NAME: api_resources.checkout.Session,
api_resources.CountrySpec.OBJECT_NAME: api_resources.CountrySpec,
api_resources.Coupon.OBJECT_NAME: api_resources.Coupon,
api_resources.CreditNote.OBJECT_NAME: api_resources.CreditNote,
api_resources.Customer.OBJECT_NAME: api_resources.Customer,
api_resources.Dispute.OBJECT_NAME: api_resources.Dispute,
api_resources.EphemeralKey.OBJECT_NAME: api_resources.EphemeralKey,
api_resources.Event.OBJECT_NAME: api_resources.Event,
api_resources.ExchangeRate.OBJECT_NAME: api_resources.ExchangeRate,
api_resources.File.OBJECT_NAME: api_resources.File,
api_resources.File.OBJECT_NAME_ALT: api_resources.File,
api_resources.FileLink.OBJECT_NAME: api_resources.FileLink,
api_resources.Invoice.OBJECT_NAME: api_resources.Invoice,
api_resources.InvoiceItem.OBJECT_NAME: api_resources.InvoiceItem,
api_resources.InvoiceLineItem.OBJECT_NAME: api_resources.InvoiceLineItem,
api_resources.IssuerFraudRecord.OBJECT_NAME: api_resources.IssuerFraudRecord,
api_resources.issuing.Authorization.OBJECT_NAME: api_resources.issuing.Authorization,
api_resources.issuing.Card.OBJECT_NAME: api_resources.issuing.Card,
api_resources.issuing.CardDetails.OBJECT_NAME: api_resources.issuing.CardDetails,
api_resources.issuing.Cardholder.OBJECT_NAME: api_resources.issuing.Cardholder,
api_resources.issuing.Dispute.OBJECT_NAME: api_resources.issuing.Dispute,
api_resources.issuing.Transaction.OBJECT_NAME: api_resources.issuing.Transaction,
api_resources.LoginLink.OBJECT_NAME: api_resources.LoginLink,
api_resources.Order.OBJECT_NAME: api_resources.Order,
api_resources.OrderReturn.OBJECT_NAME: api_resources.OrderReturn,
api_resources.PaymentIntent.OBJECT_NAME: api_resources.PaymentIntent,
api_resources.PaymentMethod.OBJECT_NAME: api_resources.PaymentMethod,
api_resources.Payout.OBJECT_NAME: api_resources.Payout,
api_resources.Person.OBJECT_NAME: api_resources.Person,
api_resources.Plan.OBJECT_NAME: api_resources.Plan,
api_resources.Product.OBJECT_NAME: api_resources.Product,
api_resources.radar.EarlyFraudWarning.OBJECT_NAME: api_resources.radar.EarlyFraudWarning,
api_resources.radar.ValueList.OBJECT_NAME: api_resources.radar.ValueList,
api_resources.radar.ValueListItem.OBJECT_NAME: api_resources.radar.ValueListItem,
api_resources.Recipient.OBJECT_NAME: api_resources.Recipient,
api_resources.RecipientTransfer.OBJECT_NAME: api_resources.RecipientTransfer,
api_resources.Refund.OBJECT_NAME: api_resources.Refund,
api_resources.reporting.ReportRun.OBJECT_NAME: api_resources.reporting.ReportRun,
api_resources.reporting.ReportType.OBJECT_NAME: api_resources.reporting.ReportType,
api_resources.Reversal.OBJECT_NAME: api_resources.Reversal,
api_resources.Review.OBJECT_NAME: api_resources.Review,
api_resources.sigma.ScheduledQueryRun.OBJECT_NAME: api_resources.sigma.ScheduledQueryRun,
api_resources.SKU.OBJECT_NAME: api_resources.SKU,
api_resources.Source.OBJECT_NAME: api_resources.Source,
api_resources.SourceTransaction.OBJECT_NAME: api_resources.SourceTransaction,
api_resources.Subscription.OBJECT_NAME: api_resources.Subscription,
api_resources.SubscriptionItem.OBJECT_NAME: api_resources.SubscriptionItem,
api_resources.SubscriptionSchedule.OBJECT_NAME: api_resources.SubscriptionSchedule,
api_resources.SubscriptionScheduleRevision.OBJECT_NAME: api_resources.SubscriptionScheduleRevision,
api_resources.TaxId.OBJECT_NAME: api_resources.TaxId,
api_resources.TaxRate.OBJECT_NAME: api_resources.TaxRate,
api_resources.terminal.ConnectionToken.OBJECT_NAME: api_resources.terminal.ConnectionToken,
api_resources.terminal.Location.OBJECT_NAME: api_resources.terminal.Location,
api_resources.terminal.Reader.OBJECT_NAME: api_resources.terminal.Reader,
api_resources.ThreeDSecure.OBJECT_NAME: api_resources.ThreeDSecure,
api_resources.Token.OBJECT_NAME: api_resources.Token,
api_resources.Topup.OBJECT_NAME: api_resources.Topup,
api_resources.Transfer.OBJECT_NAME: api_resources.Transfer,
api_resources.UsageRecord.OBJECT_NAME: api_resources.UsageRecord,
api_resources.UsageRecordSummary.OBJECT_NAME: api_resources.UsageRecordSummary,
api_resources.WebhookEndpoint.OBJECT_NAME: api_resources.WebhookEndpoint,
}
102 changes: 7 additions & 95 deletions stripe/util.py
Original file line number Diff line number Diff line change
Expand Up @@ -130,106 +130,16 @@ def secure_compare(val1, val2):
return result == 0


OBJECT_CLASSES = {}


def load_object_classes():
def get_object_classes():
# This is here to avoid a circular dependency
from stripe import api_resources

global OBJECT_CLASSES

OBJECT_CLASSES = {
# data structures
api_resources.ListObject.OBJECT_NAME: api_resources.ListObject,
# business objects
api_resources.Account.OBJECT_NAME: api_resources.Account,
api_resources.AccountLink.OBJECT_NAME: api_resources.AccountLink,
api_resources.AlipayAccount.OBJECT_NAME: api_resources.AlipayAccount,
api_resources.ApplePayDomain.OBJECT_NAME: api_resources.ApplePayDomain,
api_resources.ApplicationFee.OBJECT_NAME: api_resources.ApplicationFee,
api_resources.ApplicationFeeRefund.OBJECT_NAME: api_resources.ApplicationFeeRefund,
api_resources.Balance.OBJECT_NAME: api_resources.Balance,
api_resources.BalanceTransaction.OBJECT_NAME: api_resources.BalanceTransaction,
api_resources.BankAccount.OBJECT_NAME: api_resources.BankAccount,
api_resources.BitcoinReceiver.OBJECT_NAME: api_resources.BitcoinReceiver,
api_resources.BitcoinTransaction.OBJECT_NAME: api_resources.BitcoinTransaction,
api_resources.Capability.OBJECT_NAME: api_resources.Capability,
api_resources.Card.OBJECT_NAME: api_resources.Card,
api_resources.Charge.OBJECT_NAME: api_resources.Charge,
api_resources.checkout.Session.OBJECT_NAME: api_resources.checkout.Session,
api_resources.CountrySpec.OBJECT_NAME: api_resources.CountrySpec,
api_resources.Coupon.OBJECT_NAME: api_resources.Coupon,
api_resources.CreditNote.OBJECT_NAME: api_resources.CreditNote,
api_resources.Customer.OBJECT_NAME: api_resources.Customer,
api_resources.Dispute.OBJECT_NAME: api_resources.Dispute,
api_resources.EphemeralKey.OBJECT_NAME: api_resources.EphemeralKey,
api_resources.Event.OBJECT_NAME: api_resources.Event,
api_resources.ExchangeRate.OBJECT_NAME: api_resources.ExchangeRate,
api_resources.File.OBJECT_NAME: api_resources.File,
api_resources.File.OBJECT_NAME_ALT: api_resources.File,
api_resources.FileLink.OBJECT_NAME: api_resources.FileLink,
api_resources.Invoice.OBJECT_NAME: api_resources.Invoice,
api_resources.InvoiceItem.OBJECT_NAME: api_resources.InvoiceItem,
api_resources.InvoiceLineItem.OBJECT_NAME: api_resources.InvoiceLineItem,
api_resources.IssuerFraudRecord.OBJECT_NAME: api_resources.IssuerFraudRecord,
api_resources.issuing.Authorization.OBJECT_NAME: api_resources.issuing.Authorization,
api_resources.issuing.Card.OBJECT_NAME: api_resources.issuing.Card,
api_resources.issuing.CardDetails.OBJECT_NAME: api_resources.issuing.CardDetails,
api_resources.issuing.Cardholder.OBJECT_NAME: api_resources.issuing.Cardholder,
api_resources.issuing.Dispute.OBJECT_NAME: api_resources.issuing.Dispute,
api_resources.issuing.Transaction.OBJECT_NAME: api_resources.issuing.Transaction,
api_resources.LoginLink.OBJECT_NAME: api_resources.LoginLink,
api_resources.Order.OBJECT_NAME: api_resources.Order,
api_resources.OrderReturn.OBJECT_NAME: api_resources.OrderReturn,
api_resources.PaymentIntent.OBJECT_NAME: api_resources.PaymentIntent,
api_resources.PaymentMethod.OBJECT_NAME: api_resources.PaymentMethod,
api_resources.Payout.OBJECT_NAME: api_resources.Payout,
api_resources.Person.OBJECT_NAME: api_resources.Person,
api_resources.Plan.OBJECT_NAME: api_resources.Plan,
api_resources.Product.OBJECT_NAME: api_resources.Product,
api_resources.radar.EarlyFraudWarning.OBJECT_NAME: api_resources.radar.EarlyFraudWarning,
api_resources.radar.ValueList.OBJECT_NAME: api_resources.radar.ValueList,
api_resources.radar.ValueListItem.OBJECT_NAME: api_resources.radar.ValueListItem,
api_resources.Recipient.OBJECT_NAME: api_resources.Recipient,
api_resources.RecipientTransfer.OBJECT_NAME: api_resources.RecipientTransfer,
api_resources.Refund.OBJECT_NAME: api_resources.Refund,
api_resources.reporting.ReportRun.OBJECT_NAME: api_resources.reporting.ReportRun,
api_resources.reporting.ReportType.OBJECT_NAME: api_resources.reporting.ReportType,
api_resources.Reversal.OBJECT_NAME: api_resources.Reversal,
api_resources.Review.OBJECT_NAME: api_resources.Review,
api_resources.sigma.ScheduledQueryRun.OBJECT_NAME: api_resources.sigma.ScheduledQueryRun,
api_resources.SKU.OBJECT_NAME: api_resources.SKU,
api_resources.Source.OBJECT_NAME: api_resources.Source,
api_resources.SourceTransaction.OBJECT_NAME: api_resources.SourceTransaction,
api_resources.Subscription.OBJECT_NAME: api_resources.Subscription,
api_resources.SubscriptionItem.OBJECT_NAME: api_resources.SubscriptionItem,
api_resources.SubscriptionSchedule.OBJECT_NAME: api_resources.SubscriptionSchedule,
api_resources.SubscriptionScheduleRevision.OBJECT_NAME: api_resources.SubscriptionScheduleRevision,
api_resources.TaxId.OBJECT_NAME: api_resources.TaxId,
api_resources.TaxRate.OBJECT_NAME: api_resources.TaxRate,
api_resources.ThreeDSecure.OBJECT_NAME: api_resources.ThreeDSecure,
api_resources.Token.OBJECT_NAME: api_resources.Token,
api_resources.Topup.OBJECT_NAME: api_resources.Topup,
api_resources.Transfer.OBJECT_NAME: api_resources.Transfer,
api_resources.UsageRecord.OBJECT_NAME: api_resources.UsageRecord,
api_resources.UsageRecordSummary.OBJECT_NAME: api_resources.UsageRecordSummary,
api_resources.WebhookEndpoint.OBJECT_NAME: api_resources.WebhookEndpoint,
api_resources.terminal.Location.OBJECT_NAME: api_resources.terminal.Location,
api_resources.terminal.ConnectionToken.OBJECT_NAME: api_resources.terminal.ConnectionToken,
api_resources.terminal.Reader.OBJECT_NAME: api_resources.terminal.Reader,
}
from stripe.object_classes import OBJECT_CLASSES

return OBJECT_CLASSES


def convert_to_stripe_object(
resp, api_key=None, stripe_version=None, stripe_account=None
):
global OBJECT_CLASSES

if not OBJECT_CLASSES:
load_object_classes()
types = OBJECT_CLASSES.copy()

# If we get a StripeResponse, we'll want to return a
# StripeObject with the last_response field filled out with
# the raw API response information
Expand All @@ -252,7 +162,9 @@ def convert_to_stripe_object(
resp = resp.copy()
klass_name = resp.get("object")
if isinstance(klass_name, six.string_types):
klass = types.get(klass_name, stripe.stripe_object.StripeObject)
klass = get_object_classes().get(
klass_name, stripe.stripe_object.StripeObject
)
else:
klass = stripe.stripe_object.StripeObject

Expand Down

0 comments on commit 7a747ba

Please sign in to comment.