moovio_sdk 0.8.2__py3-none-any.whl → 0.10.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -56,7 +56,7 @@ class CreateTransferRequestTypedDict(TypedDict):
56
56
  x_idempotency_key: str
57
57
  r"""Prevents duplicate transfers from being created."""
58
58
  account_id: str
59
- r"""The merchant's Moov account ID."""
59
+ r"""Your Moov account ID."""
60
60
  create_transfer: components_createtransfer.CreateTransferTypedDict
61
61
  x_wait_for: NotRequired[components_transferwaitfor.TransferWaitFor]
62
62
  r"""Optional header that indicates whether to return a synchronous response that includes full transfer and rail-specific details or an
@@ -77,7 +77,7 @@ class CreateTransferRequest(BaseModel):
77
77
  pydantic.Field(alias="accountID"),
78
78
  FieldMetadata(path=PathParamMetadata(style="simple", explode=False)),
79
79
  ]
80
- r"""The merchant's Moov account ID."""
80
+ r"""Your Moov account ID."""
81
81
 
82
82
  create_transfer: Annotated[
83
83
  components_createtransfer.CreateTransfer,
moovio_sdk/sdk.py CHANGED
@@ -6,46 +6,49 @@ from .sdkconfiguration import SDKConfiguration
6
6
  from .utils.logger import Logger, get_default_logger
7
7
  from .utils.retries import RetryConfig
8
8
  import httpx
9
+ import importlib
9
10
  from moovio_sdk import utils
10
11
  from moovio_sdk._hooks import SDKHooks
11
- from moovio_sdk.account_terminal_applications import AccountTerminalApplications
12
- from moovio_sdk.accounts import Accounts
13
- from moovio_sdk.adjustments import Adjustments
14
- from moovio_sdk.apple_pay import ApplePay
15
- from moovio_sdk.authentication import Authentication
16
- from moovio_sdk.avatars import Avatars
17
- from moovio_sdk.bank_accounts import BankAccounts
18
- from moovio_sdk.branding import Branding
19
- from moovio_sdk.capabilities import Capabilities
20
- from moovio_sdk.card_issuing import CardIssuing
21
- from moovio_sdk.cards import Cards
22
- from moovio_sdk.disputes import Disputes
23
- from moovio_sdk.end_to_end_encryption import EndToEndEncryption
24
- from moovio_sdk.enriched_address import EnrichedAddress
25
- from moovio_sdk.enriched_profile import EnrichedProfile
26
- from moovio_sdk.fee_plans import FeePlans
27
- from moovio_sdk.files import Files
28
- from moovio_sdk.industries import Industries
29
- from moovio_sdk.institutions import Institutions
30
- from moovio_sdk.issuing_transactions import IssuingTransactions
31
12
  from moovio_sdk.models import components, internal
32
- from moovio_sdk.onboarding import Onboarding
33
- from moovio_sdk.payment_links import PaymentLinks
34
- from moovio_sdk.payment_methods import PaymentMethods
35
- from moovio_sdk.ping import Ping
36
- from moovio_sdk.receipts import Receipts
37
- from moovio_sdk.representatives import Representatives
38
- from moovio_sdk.scheduling import Scheduling
39
- from moovio_sdk.sweeps import Sweeps
40
- from moovio_sdk.terminal_applications import TerminalApplications
41
- from moovio_sdk.transfers import Transfers
42
13
  from moovio_sdk.types import OptionalNullable, UNSET
43
- from moovio_sdk.underwriting import Underwriting
44
- from moovio_sdk.wallet_transactions import WalletTransactions
45
- from moovio_sdk.wallets import Wallets
46
- from typing import Callable, Dict, Optional, Union, cast
14
+ from typing import Callable, Dict, Optional, TYPE_CHECKING, Union, cast
47
15
  import weakref
48
16
 
17
+ if TYPE_CHECKING:
18
+ from moovio_sdk.account_terminal_applications import AccountTerminalApplications
19
+ from moovio_sdk.accounts import Accounts
20
+ from moovio_sdk.adjustments import Adjustments
21
+ from moovio_sdk.apple_pay import ApplePay
22
+ from moovio_sdk.authentication import Authentication
23
+ from moovio_sdk.avatars import Avatars
24
+ from moovio_sdk.bank_accounts import BankAccounts
25
+ from moovio_sdk.branding import Branding
26
+ from moovio_sdk.capabilities import Capabilities
27
+ from moovio_sdk.card_issuing import CardIssuing
28
+ from moovio_sdk.cards import Cards
29
+ from moovio_sdk.disputes import Disputes
30
+ from moovio_sdk.end_to_end_encryption import EndToEndEncryption
31
+ from moovio_sdk.enriched_address import EnrichedAddress
32
+ from moovio_sdk.enriched_profile import EnrichedProfile
33
+ from moovio_sdk.fee_plans import FeePlans
34
+ from moovio_sdk.files import Files
35
+ from moovio_sdk.industries import Industries
36
+ from moovio_sdk.institutions import Institutions
37
+ from moovio_sdk.issuing_transactions import IssuingTransactions
38
+ from moovio_sdk.onboarding import Onboarding
39
+ from moovio_sdk.payment_links import PaymentLinks
40
+ from moovio_sdk.payment_methods import PaymentMethods
41
+ from moovio_sdk.ping import Ping
42
+ from moovio_sdk.receipts import Receipts
43
+ from moovio_sdk.representatives import Representatives
44
+ from moovio_sdk.scheduling import Scheduling
45
+ from moovio_sdk.sweeps import Sweeps
46
+ from moovio_sdk.terminal_applications import TerminalApplications
47
+ from moovio_sdk.transfers import Transfers
48
+ from moovio_sdk.underwriting import Underwriting
49
+ from moovio_sdk.wallet_transactions import WalletTransactions
50
+ from moovio_sdk.wallets import Wallets
51
+
49
52
 
50
53
  class Moov(BaseSDK):
51
54
  r"""Moov API: Moov is a platform that enables developers to integrate all aspects of money movement with ease and speed.
@@ -54,39 +57,86 @@ class Moov(BaseSDK):
54
57
  works at a high level, read our [concepts](https://docs.moov.io/guides/get-started/glossary/) guide.
55
58
  """
56
59
 
57
- accounts: Accounts
58
- adjustments: Adjustments
59
- apple_pay: ApplePay
60
- bank_accounts: BankAccounts
61
- branding: Branding
62
- capabilities: Capabilities
63
- cards: Cards
64
- disputes: Disputes
65
- fee_plans: FeePlans
66
- files: Files
67
- payment_links: PaymentLinks
68
- payment_methods: PaymentMethods
69
- representatives: Representatives
70
- scheduling: Scheduling
71
- sweeps: Sweeps
72
- account_terminal_applications: AccountTerminalApplications
73
- transfers: Transfers
74
- underwriting: Underwriting
75
- wallets: Wallets
76
- wallet_transactions: WalletTransactions
77
- avatars: Avatars
78
- end_to_end_encryption: EndToEndEncryption
79
- enriched_address: EnrichedAddress
80
- enriched_profile: EnrichedProfile
81
- industries: Industries
82
- institutions: Institutions
83
- issuing_transactions: IssuingTransactions
84
- card_issuing: CardIssuing
85
- authentication: Authentication
86
- onboarding: Onboarding
87
- ping: Ping
88
- receipts: Receipts
89
- terminal_applications: TerminalApplications
60
+ accounts: "Accounts"
61
+ adjustments: "Adjustments"
62
+ apple_pay: "ApplePay"
63
+ bank_accounts: "BankAccounts"
64
+ branding: "Branding"
65
+ capabilities: "Capabilities"
66
+ cards: "Cards"
67
+ disputes: "Disputes"
68
+ fee_plans: "FeePlans"
69
+ files: "Files"
70
+ payment_links: "PaymentLinks"
71
+ payment_methods: "PaymentMethods"
72
+ representatives: "Representatives"
73
+ scheduling: "Scheduling"
74
+ sweeps: "Sweeps"
75
+ account_terminal_applications: "AccountTerminalApplications"
76
+ transfers: "Transfers"
77
+ underwriting: "Underwriting"
78
+ wallets: "Wallets"
79
+ wallet_transactions: "WalletTransactions"
80
+ avatars: "Avatars"
81
+ end_to_end_encryption: "EndToEndEncryption"
82
+ enriched_address: "EnrichedAddress"
83
+ enriched_profile: "EnrichedProfile"
84
+ industries: "Industries"
85
+ institutions: "Institutions"
86
+ issuing_transactions: "IssuingTransactions"
87
+ card_issuing: "CardIssuing"
88
+ authentication: "Authentication"
89
+ onboarding: "Onboarding"
90
+ ping: "Ping"
91
+ receipts: "Receipts"
92
+ terminal_applications: "TerminalApplications"
93
+ _sub_sdk_map = {
94
+ "accounts": ("moovio_sdk.accounts", "Accounts"),
95
+ "adjustments": ("moovio_sdk.adjustments", "Adjustments"),
96
+ "apple_pay": ("moovio_sdk.apple_pay", "ApplePay"),
97
+ "bank_accounts": ("moovio_sdk.bank_accounts", "BankAccounts"),
98
+ "branding": ("moovio_sdk.branding", "Branding"),
99
+ "capabilities": ("moovio_sdk.capabilities", "Capabilities"),
100
+ "cards": ("moovio_sdk.cards", "Cards"),
101
+ "disputes": ("moovio_sdk.disputes", "Disputes"),
102
+ "fee_plans": ("moovio_sdk.fee_plans", "FeePlans"),
103
+ "files": ("moovio_sdk.files", "Files"),
104
+ "payment_links": ("moovio_sdk.payment_links", "PaymentLinks"),
105
+ "payment_methods": ("moovio_sdk.payment_methods", "PaymentMethods"),
106
+ "representatives": ("moovio_sdk.representatives", "Representatives"),
107
+ "scheduling": ("moovio_sdk.scheduling", "Scheduling"),
108
+ "sweeps": ("moovio_sdk.sweeps", "Sweeps"),
109
+ "account_terminal_applications": (
110
+ "moovio_sdk.account_terminal_applications",
111
+ "AccountTerminalApplications",
112
+ ),
113
+ "transfers": ("moovio_sdk.transfers", "Transfers"),
114
+ "underwriting": ("moovio_sdk.underwriting", "Underwriting"),
115
+ "wallets": ("moovio_sdk.wallets", "Wallets"),
116
+ "wallet_transactions": ("moovio_sdk.wallet_transactions", "WalletTransactions"),
117
+ "avatars": ("moovio_sdk.avatars", "Avatars"),
118
+ "end_to_end_encryption": (
119
+ "moovio_sdk.end_to_end_encryption",
120
+ "EndToEndEncryption",
121
+ ),
122
+ "enriched_address": ("moovio_sdk.enriched_address", "EnrichedAddress"),
123
+ "enriched_profile": ("moovio_sdk.enriched_profile", "EnrichedProfile"),
124
+ "industries": ("moovio_sdk.industries", "Industries"),
125
+ "institutions": ("moovio_sdk.institutions", "Institutions"),
126
+ "issuing_transactions": (
127
+ "moovio_sdk.issuing_transactions",
128
+ "IssuingTransactions",
129
+ ),
130
+ "card_issuing": ("moovio_sdk.card_issuing", "CardIssuing"),
131
+ "authentication": ("moovio_sdk.authentication", "Authentication"),
132
+ "onboarding": ("moovio_sdk.onboarding", "Onboarding"),
133
+ "ping": ("moovio_sdk.ping", "Ping"),
134
+ "receipts": ("moovio_sdk.receipts", "Receipts"),
135
+ "terminal_applications": (
136
+ "moovio_sdk.terminal_applications",
137
+ "TerminalApplications",
138
+ ),
139
+ }
90
140
 
91
141
  def __init__(
92
142
  self,
@@ -185,44 +235,32 @@ class Moov(BaseSDK):
185
235
  self.sdk_configuration.async_client_supplied,
186
236
  )
187
237
 
188
- self._init_sdks()
189
-
190
- def _init_sdks(self):
191
- self.accounts = Accounts(self.sdk_configuration)
192
- self.adjustments = Adjustments(self.sdk_configuration)
193
- self.apple_pay = ApplePay(self.sdk_configuration)
194
- self.bank_accounts = BankAccounts(self.sdk_configuration)
195
- self.branding = Branding(self.sdk_configuration)
196
- self.capabilities = Capabilities(self.sdk_configuration)
197
- self.cards = Cards(self.sdk_configuration)
198
- self.disputes = Disputes(self.sdk_configuration)
199
- self.fee_plans = FeePlans(self.sdk_configuration)
200
- self.files = Files(self.sdk_configuration)
201
- self.payment_links = PaymentLinks(self.sdk_configuration)
202
- self.payment_methods = PaymentMethods(self.sdk_configuration)
203
- self.representatives = Representatives(self.sdk_configuration)
204
- self.scheduling = Scheduling(self.sdk_configuration)
205
- self.sweeps = Sweeps(self.sdk_configuration)
206
- self.account_terminal_applications = AccountTerminalApplications(
207
- self.sdk_configuration
238
+ def __getattr__(self, name: str):
239
+ if name in self._sub_sdk_map:
240
+ module_path, class_name = self._sub_sdk_map[name]
241
+ try:
242
+ module = importlib.import_module(module_path)
243
+ klass = getattr(module, class_name)
244
+ instance = klass(self.sdk_configuration)
245
+ setattr(self, name, instance)
246
+ return instance
247
+ except ImportError as e:
248
+ raise AttributeError(
249
+ f"Failed to import module {module_path} for attribute {name}: {e}"
250
+ ) from e
251
+ except AttributeError as e:
252
+ raise AttributeError(
253
+ f"Failed to find class {class_name} in module {module_path} for attribute {name}: {e}"
254
+ ) from e
255
+
256
+ raise AttributeError(
257
+ f"'{type(self).__name__}' object has no attribute '{name}'"
208
258
  )
209
- self.transfers = Transfers(self.sdk_configuration)
210
- self.underwriting = Underwriting(self.sdk_configuration)
211
- self.wallets = Wallets(self.sdk_configuration)
212
- self.wallet_transactions = WalletTransactions(self.sdk_configuration)
213
- self.avatars = Avatars(self.sdk_configuration)
214
- self.end_to_end_encryption = EndToEndEncryption(self.sdk_configuration)
215
- self.enriched_address = EnrichedAddress(self.sdk_configuration)
216
- self.enriched_profile = EnrichedProfile(self.sdk_configuration)
217
- self.industries = Industries(self.sdk_configuration)
218
- self.institutions = Institutions(self.sdk_configuration)
219
- self.issuing_transactions = IssuingTransactions(self.sdk_configuration)
220
- self.card_issuing = CardIssuing(self.sdk_configuration)
221
- self.authentication = Authentication(self.sdk_configuration)
222
- self.onboarding = Onboarding(self.sdk_configuration)
223
- self.ping = Ping(self.sdk_configuration)
224
- self.receipts = Receipts(self.sdk_configuration)
225
- self.terminal_applications = TerminalApplications(self.sdk_configuration)
259
+
260
+ def __dir__(self):
261
+ default_attrs = list(super().__dir__())
262
+ lazy_attrs = list(self._sub_sdk_map.keys())
263
+ return sorted(list(set(default_attrs + lazy_attrs)))
226
264
 
227
265
  def __enter__(self):
228
266
  return self
moovio_sdk/transfers.py CHANGED
@@ -46,7 +46,7 @@ class Transfers(BaseSDK):
46
46
  you'll need to specify the `/accounts/{accountID}/transfers.write` scope.
47
47
 
48
48
  :param x_idempotency_key: Prevents duplicate transfers from being created.
49
- :param account_id: The merchant's Moov account ID.
49
+ :param account_id: Your Moov account ID.
50
50
  :param source: Where funds for a transfer originate. For the source, you must include either a `paymentMethodID` or a `transferID`.
51
51
  :param destination: The final stage of a transfer and the ultimate recipient of the funds.
52
52
  :param amount:
@@ -239,7 +239,7 @@ class Transfers(BaseSDK):
239
239
  you'll need to specify the `/accounts/{accountID}/transfers.write` scope.
240
240
 
241
241
  :param x_idempotency_key: Prevents duplicate transfers from being created.
242
- :param account_id: The merchant's Moov account ID.
242
+ :param account_id: Your Moov account ID.
243
243
  :param source: Where funds for a transfer originate. For the source, you must include either a `paymentMethodID` or a `transferID`.
244
244
  :param destination: The final stage of a transfer and the ultimate recipient of the funds.
245
245
  :param amount:
@@ -1,52 +1,56 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
- from .annotations import get_discriminator
4
- from .datetimes import parse_datetime
5
- from .enums import OpenEnumMeta
6
- from .headers import get_headers, get_response_headers
7
- from .metadata import (
8
- FieldMetadata,
9
- find_metadata,
10
- FormMetadata,
11
- HeaderMetadata,
12
- MultipartFormMetadata,
13
- PathParamMetadata,
14
- QueryParamMetadata,
15
- RequestMetadata,
16
- SecurityMetadata,
17
- )
18
- from .queryparams import get_query_params
19
- from .retries import BackoffStrategy, Retries, retry, retry_async, RetryConfig
20
- from .requestbodies import serialize_request_body, SerializedRequestBody
21
- from .security import get_security, get_security_from_env
3
+ from typing import TYPE_CHECKING
4
+ from importlib import import_module
22
5
 
23
- from .serializers import (
24
- get_pydantic_model,
25
- marshal_json,
26
- unmarshal,
27
- unmarshal_json,
28
- serialize_decimal,
29
- serialize_float,
30
- serialize_int,
31
- stream_to_text,
32
- stream_to_text_async,
33
- stream_to_bytes,
34
- stream_to_bytes_async,
35
- validate_const,
36
- validate_decimal,
37
- validate_float,
38
- validate_int,
39
- validate_open_enum,
40
- )
41
- from .url import generate_url, template_url, remove_suffix
42
- from .values import (
43
- get_global_from_env,
44
- match_content_type,
45
- match_status_codes,
46
- match_response,
47
- cast_partial,
48
- )
49
- from .logger import Logger, get_body_content, get_default_logger
6
+ if TYPE_CHECKING:
7
+ from .annotations import get_discriminator
8
+ from .datetimes import parse_datetime
9
+ from .enums import OpenEnumMeta
10
+ from .headers import get_headers, get_response_headers
11
+ from .metadata import (
12
+ FieldMetadata,
13
+ find_metadata,
14
+ FormMetadata,
15
+ HeaderMetadata,
16
+ MultipartFormMetadata,
17
+ PathParamMetadata,
18
+ QueryParamMetadata,
19
+ RequestMetadata,
20
+ SecurityMetadata,
21
+ )
22
+ from .queryparams import get_query_params
23
+ from .retries import BackoffStrategy, Retries, retry, retry_async, RetryConfig
24
+ from .requestbodies import serialize_request_body, SerializedRequestBody
25
+ from .security import get_security, get_security_from_env
26
+
27
+ from .serializers import (
28
+ get_pydantic_model,
29
+ marshal_json,
30
+ unmarshal,
31
+ unmarshal_json,
32
+ serialize_decimal,
33
+ serialize_float,
34
+ serialize_int,
35
+ stream_to_text,
36
+ stream_to_text_async,
37
+ stream_to_bytes,
38
+ stream_to_bytes_async,
39
+ validate_const,
40
+ validate_decimal,
41
+ validate_float,
42
+ validate_int,
43
+ validate_open_enum,
44
+ )
45
+ from .url import generate_url, template_url, remove_suffix
46
+ from .values import (
47
+ get_global_from_env,
48
+ match_content_type,
49
+ match_status_codes,
50
+ match_response,
51
+ cast_partial,
52
+ )
53
+ from .logger import Logger, get_body_content, get_default_logger
50
54
 
51
55
  __all__ = [
52
56
  "BackoffStrategy",
@@ -57,6 +61,7 @@ __all__ = [
57
61
  "get_body_content",
58
62
  "get_default_logger",
59
63
  "get_discriminator",
64
+ "parse_datetime",
60
65
  "get_global_from_env",
61
66
  "get_headers",
62
67
  "get_pydantic_model",
@@ -100,3 +105,83 @@ __all__ = [
100
105
  "validate_open_enum",
101
106
  "cast_partial",
102
107
  ]
108
+
109
+ _dynamic_imports: dict[str, str] = {
110
+ "BackoffStrategy": ".retries",
111
+ "FieldMetadata": ".metadata",
112
+ "find_metadata": ".metadata",
113
+ "FormMetadata": ".metadata",
114
+ "generate_url": ".url",
115
+ "get_body_content": ".logger",
116
+ "get_default_logger": ".logger",
117
+ "get_discriminator": ".annotations",
118
+ "parse_datetime": ".datetimes",
119
+ "get_global_from_env": ".values",
120
+ "get_headers": ".headers",
121
+ "get_pydantic_model": ".serializers",
122
+ "get_query_params": ".queryparams",
123
+ "get_response_headers": ".headers",
124
+ "get_security": ".security",
125
+ "get_security_from_env": ".security",
126
+ "HeaderMetadata": ".metadata",
127
+ "Logger": ".logger",
128
+ "marshal_json": ".serializers",
129
+ "match_content_type": ".values",
130
+ "match_status_codes": ".values",
131
+ "match_response": ".values",
132
+ "MultipartFormMetadata": ".metadata",
133
+ "OpenEnumMeta": ".enums",
134
+ "PathParamMetadata": ".metadata",
135
+ "QueryParamMetadata": ".metadata",
136
+ "remove_suffix": ".url",
137
+ "Retries": ".retries",
138
+ "retry": ".retries",
139
+ "retry_async": ".retries",
140
+ "RetryConfig": ".retries",
141
+ "RequestMetadata": ".metadata",
142
+ "SecurityMetadata": ".metadata",
143
+ "serialize_decimal": ".serializers",
144
+ "serialize_float": ".serializers",
145
+ "serialize_int": ".serializers",
146
+ "serialize_request_body": ".requestbodies",
147
+ "SerializedRequestBody": ".requestbodies",
148
+ "stream_to_text": ".serializers",
149
+ "stream_to_text_async": ".serializers",
150
+ "stream_to_bytes": ".serializers",
151
+ "stream_to_bytes_async": ".serializers",
152
+ "template_url": ".url",
153
+ "unmarshal": ".serializers",
154
+ "unmarshal_json": ".serializers",
155
+ "validate_decimal": ".serializers",
156
+ "validate_const": ".serializers",
157
+ "validate_float": ".serializers",
158
+ "validate_int": ".serializers",
159
+ "validate_open_enum": ".serializers",
160
+ "cast_partial": ".values",
161
+ }
162
+
163
+
164
+ def __getattr__(attr_name: str) -> object:
165
+ module_name = _dynamic_imports.get(attr_name)
166
+ if module_name is None:
167
+ raise AttributeError(
168
+ f"no {attr_name} found in _dynamic_imports, module name -> {__name__} "
169
+ )
170
+
171
+ try:
172
+ module = import_module(module_name, __package__)
173
+ result = getattr(module, attr_name)
174
+ return result
175
+ except ImportError as e:
176
+ raise ImportError(
177
+ f"Failed to import {attr_name} from {module_name}: {e}"
178
+ ) from e
179
+ except AttributeError as e:
180
+ raise AttributeError(
181
+ f"Failed to get {attr_name} from {module_name}: {e}"
182
+ ) from e
183
+
184
+
185
+ def __dir__():
186
+ lazy_attrs = list(_dynamic_imports.keys())
187
+ return sorted(lazy_attrs)