fin-infra 0.1.79__py3-none-any.whl → 0.1.80__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.
@@ -7,6 +7,16 @@ This module provides comprehensive financial analytics capabilities including:
7
7
  - Portfolio analytics (returns, allocation, benchmarking)
8
8
  - Growth projections (net worth forecasting with scenarios)
9
9
 
10
+ Feature Status:
11
+ ✅ STABLE: Core calculation functions (all analytics work with provided data)
12
+ ⚠️ INTEGRATION: Auto-fetching from providers requires setup:
13
+ - Banking provider for transaction data
14
+ - Brokerage provider for investment data
15
+ - Categorization for expense categorization
16
+
17
+ When providers aren't configured, functions accept data directly or return
18
+ sensible placeholder values for testing/development.
19
+
10
20
  Serves multiple use cases:
11
21
  - Personal finance apps (cash flow, savings tracking)
12
22
  - Wealth management platforms (portfolio analytics, projections)
@@ -174,7 +174,6 @@ def easy_banking(provider: str = "teller", **config) -> BankingProvider:
174
174
  See Also:
175
175
  - add_banking(): For FastAPI integration with routes
176
176
  - docs/banking.md: Comprehensive banking integration guide
177
- - docs/adr/0003-banking-integration.md: Architecture decisions
178
177
  """
179
178
  # Auto-detect provider config from environment if not explicitly provided
180
179
  # Only auto-detect if no config params were passed
@@ -1,3 +1,25 @@
1
- from .base import BankingClient, MarketDataClient, CreditClient
1
+ """DEPRECATED: Use fin_infra.providers instead.
2
+
3
+ This module is deprecated and will be removed in a future version.
4
+ All ABCs have been consolidated into fin_infra.providers.base.
5
+
6
+ Migration:
7
+ # Old (deprecated)
8
+ from fin_infra.clients import BankingClient, MarketDataClient
9
+
10
+ # New
11
+ from fin_infra.providers.base import BankingProvider, MarketDataProvider
12
+ """
13
+
14
+ import warnings
15
+
16
+ from .base import BankingClient, CreditClient, MarketDataClient
17
+
18
+ warnings.warn(
19
+ "fin_infra.clients is deprecated. Use fin_infra.providers instead. "
20
+ "This module will be removed in a future version.",
21
+ DeprecationWarning,
22
+ stacklevel=2,
23
+ )
2
24
 
3
25
  __all__ = ["BankingClient", "MarketDataClient", "CreditClient"]
@@ -20,7 +20,10 @@ if TYPE_CHECKING:
20
20
  from fastapi import FastAPI
21
21
 
22
22
  from ..providers.base import MarketDataProvider
23
- from ..clients.base import MarketDataClient
23
+
24
+ # Deprecated: MarketDataClient alias for backward compatibility
25
+ # Use MarketDataProvider instead
26
+ MarketDataClient = MarketDataProvider # type: ignore[misc]
24
27
 
25
28
 
26
29
  def easy_market(
@@ -178,7 +181,6 @@ def add_market_data(
178
181
  See Also:
179
182
  - easy_market(): For standalone provider usage without FastAPI
180
183
  - docs/market-data.md: API documentation and examples
181
- - docs/adr/0004-market-data-integration.md: Architecture decisions
182
184
  """
183
185
  from fastapi import HTTPException, Query
184
186
 
@@ -4,6 +4,13 @@ Net Worth Tracking Module
4
4
  Calculates net worth by aggregating balances from multiple financial providers
5
5
  (banking, brokerage, crypto) with historical snapshots and change detection.
6
6
 
7
+ **Feature Status**:
8
+ ✅ STABLE: Core calculation (works with provided data)
9
+ ✅ STABLE: Banking integration (Plaid, Teller)
10
+ ⚠️ INTEGRATION: Brokerage integration (requires provider setup)
11
+ ⚠️ INTEGRATION: Crypto integration (requires provider setup)
12
+ ⚠️ INTEGRATION: Currency conversion (pass exchange_rate manually)
13
+
7
14
  **Key Features**:
8
15
  - Multi-provider aggregation (banking + brokerage + crypto)
9
16
  - Currency normalization (all currencies → USD)
@@ -1,9 +1,33 @@
1
+ """Base provider ABCs for fin-infra.
2
+
3
+ This module defines abstract base classes for all financial data providers.
4
+ These are the canonical ABCs - use these instead of fin_infra.clients.
5
+
6
+ Sync vs Async Pattern:
7
+ Most providers use SYNCHRONOUS methods for simplicity. The exceptions are:
8
+ - InvestmentProvider: Uses async methods (get_holdings, get_investment_accounts)
9
+
10
+ If you need async, wrap sync providers with asyncio.to_thread():
11
+ import asyncio
12
+ result = await asyncio.to_thread(provider.quote, "AAPL")
13
+
14
+ Provider Categories:
15
+ - MarketDataProvider: Stock/equity quotes and historical data
16
+ - CryptoDataProvider: Cryptocurrency market data
17
+ - BankingProvider: Bank account aggregation (Plaid, Teller, MX)
18
+ - BrokerageProvider: Trading operations (Alpaca, Interactive Brokers)
19
+ - CreditProvider: Credit scores and reports
20
+ - TaxProvider: Tax documents and calculations
21
+ - IdentityProvider: Identity verification
22
+ - InvestmentProvider: Investment holdings (async)
23
+ """
24
+
1
25
  from __future__ import annotations
2
26
 
3
27
  from abc import ABC, abstractmethod
4
28
  from typing import Any, Iterable, Sequence
5
29
 
6
- from ..models import Quote, Candle
30
+ from ..models import Candle, Quote
7
31
 
8
32
 
9
33
  class MarketDataProvider(ABC):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: fin-infra
3
- Version: 0.1.79
3
+ Version: 0.1.80
4
4
  Summary: Financial infrastructure toolkit: banking connections, market data, credit, cashflows, and brokerage integrations
5
5
  License: MIT
6
6
  Keywords: finance,banking,plaid,brokerage,markets,credit,tax,cashflow,fintech,infra
@@ -1,6 +1,6 @@
1
1
  fin_infra/__init__.py,sha256=7oL-CCsALNifBODAn9LriicaIrzgJkmVPvE-9duP0mw,1574
2
2
  fin_infra/__main__.py,sha256=1qNP7j0ffw0wFs1dBwDcJ9TNXlC6FcYuulzoV87pMi8,262
3
- fin_infra/analytics/__init__.py,sha256=aiuNnii0vc34XlNzrSiMbz33lzgmR7W1nHkmAEXavCY,1870
3
+ fin_infra/analytics/__init__.py,sha256=_qbkbj5cy9uuCp9WdWbIz29XNwvakKf2T2sTRMeUiAs,2326
4
4
  fin_infra/analytics/add.py,sha256=YhNxFAH0m-GiLxgNzwZY09wt6kmy4n88Xa9DrYBLB6E,12709
5
5
  fin_infra/analytics/cash_flow.py,sha256=lH-J6RIUzcV9Fuy56i12N6vuIdPaGz-rhWquSgjkldU,10300
6
6
  fin_infra/analytics/ease.py,sha256=p8WwFP4ivvFsvZzYRCZZVHgnPThiODve9r4-m0xnxQQ,14343
@@ -11,7 +11,7 @@ fin_infra/analytics/rebalancing.py,sha256=VM8MgoJofmrCXPK1rbmVqWGB4FauNmHCL5HOEb
11
11
  fin_infra/analytics/savings.py,sha256=n3rGNFP8TU5mW-uz9kOuqX_mDiVnDyAeDN06Q7Abotw,7570
12
12
  fin_infra/analytics/scenarios.py,sha256=LE_dZVkbxxAx5sxitGhiOhZfWTlYtVbIvS9pEXkijLc,12246
13
13
  fin_infra/analytics/spending.py,sha256=wCa8mhtdMTnI3eG9W28ljCgB_AQRVGxkrRA2ZwLi_RQ,26249
14
- fin_infra/banking/__init__.py,sha256=6brdnsK6ddLhypk4h0sblM1yv6BkQ46Nyq8Zvf5AewY,22570
14
+ fin_infra/banking/__init__.py,sha256=5yB_Pi8cnlKzbJu1JiwtaismVFJXrBU7tmThZJ76Pqc,22499
15
15
  fin_infra/banking/history.py,sha256=2C3R9rZMYSyPtR0oe-kCZ14SMhPAy_M9v_Xc5XzBVLs,10618
16
16
  fin_infra/banking/utils.py,sha256=mCDwU34SpwTqeXoDYhNGAUqxooVxW6TAtqYorzFmPfQ,15341
17
17
  fin_infra/brokerage/__init__.py,sha256=8-q1NfKZW9fUQ_2_49Vc19sskZkmHo67TJ5GQDcXqTQ,17259
@@ -43,7 +43,7 @@ fin_infra/chat/planning.py,sha256=eKUW6VDHJS-xQTks7bgjNQaO32Fr5gA_oP5NLt2y5Zs,19
43
43
  fin_infra/cli/__init__.py,sha256=7M8gKULnui4__9kXRKRHgETuFwZlacK9xrq5rSZ31CM,376
44
44
  fin_infra/cli/cmds/__init__.py,sha256=BvL3wRoUl3cO5wesv1Cqoatup7VeYMhq82tS19iNZHE,136
45
45
  fin_infra/cli/cmds/scaffold_cmds.py,sha256=SwNE8AnszmsjyUXDpmn-bauQx8HAQB_fw-6er2QaTCU,7655
46
- fin_infra/clients/__init__.py,sha256=EiKkAW8WY5dWtu7DDmpf3DBNcjJArxcQnE_wTAtVRho,129
46
+ fin_infra/clients/__init__.py,sha256=CL_NUNxLAKFvG7wL_F-rAhUucp6pm0sNHVtvCzVvLcw,708
47
47
  fin_infra/clients/base.py,sha256=K5nI4GJzT36oUUYGynV3b4eywJdTTa5EX26QK7XdTcc,970
48
48
  fin_infra/clients/plaid.py,sha256=jwcLdQe0G7afLO5JH5jsBosE4iz_cFsb04I8_hCbIb0,807
49
49
  fin_infra/compliance/__init__.py,sha256=IpeFi0ztw619Etvq2ln6kYFVwr6OrcVX6W7n5Mh3Nf4,5222
@@ -92,7 +92,7 @@ fin_infra/investments/scaffold_templates/__init__.py,sha256=iR0oiAzXFYXHBnVJjaEn
92
92
  fin_infra/investments/scaffold_templates/models.py.tmpl,sha256=5inP5-jw-qEfPYxSN71tn4AojZ9PesOIeuHTw181N-c,5849
93
93
  fin_infra/investments/scaffold_templates/repository.py.tmpl,sha256=XwOEpQZfuXut1WLiq-GSSvv0oX0iYCW54eJNL0Cav94,14656
94
94
  fin_infra/investments/scaffold_templates/schemas.py.tmpl,sha256=knWmn-Kyr7AdgPD4ZPMb6T49ZuPXeuOMqmjYNyA0CA0,5451
95
- fin_infra/markets/__init__.py,sha256=NWIHMchN4tndjAsxvd8KMnu-pmVaW8Qc0Qu1ooqIZXY,9828
95
+ fin_infra/markets/__init__.py,sha256=_cZGIdaRVZyurVDdqSFpvAgQZbpN2Dq6HvU42xqv66w,9867
96
96
  fin_infra/models/__init__.py,sha256=q3SkGzDGFkoAMxwqJw8i4cHWt5NGU5ypjOgntxDGVKo,860
97
97
  fin_infra/models/accounts.py,sha256=ExQimE2O5dyugFMW7nCboWbWcaX3Nnl5Gg-B1XLSdIk,1138
98
98
  fin_infra/models/brokerage.py,sha256=z6Zyf0N5zmmXtrN2y_4fNmtIP5wNq40H8lrHLBwY7rc,8311
@@ -102,7 +102,7 @@ fin_infra/models/money.py,sha256=5BX8IQZkrNtjjnGIQAK2tyKnVim0R-yc1F_EBxUhcr0,400
102
102
  fin_infra/models/quotes.py,sha256=_2cDJS8_RLo4tLpJlqWd32J8uFNP0bbf1V_0u3NuLwo,543
103
103
  fin_infra/models/tax.py,sha256=lhNVIW650CdtpfgmSyMMJdojV7QnpHOUFQKiwMLTT4A,15656
104
104
  fin_infra/models/transactions.py,sha256=NtIHk3RDM58wYHQiHNOsvU5K6lgpfZodrL7scDRKP6E,865
105
- fin_infra/net_worth/__init__.py,sha256=EjEuHNg8gEfFwbfko1-o5j-gSUZ2FcO9h7l05C-zAJM,3101
105
+ fin_infra/net_worth/__init__.py,sha256=4LzVM2Y0OkBlZoD5FUAbLwtORp1okYcsYc4zj0P8C7k,3452
106
106
  fin_infra/net_worth/add.py,sha256=QWfHIHJs2CV99WRBqjQ2OteiOrn5cR9nurmxTF9v5rg,23191
107
107
  fin_infra/net_worth/aggregator.py,sha256=9Kx2vUR71QwqYZdGaCfmYrJ1hNxzd1EEuAdWJoNjqTI,12780
108
108
  fin_infra/net_worth/calculator.py,sha256=SQJGJDok5HgvoAhKBxeeqt8vhGMchABU3zPmNRpqNy4,13139
@@ -128,7 +128,7 @@ fin_infra/providers/__init__.py,sha256=jxhQm79T6DVXf7Wpy7luL-p50cE_IMUbjt4o3apzJ
128
128
  fin_infra/providers/banking/base.py,sha256=KeNU4ur3zLKHVsBF1LQifcs2AKX06IEE-Rx_SetFeAs,102
129
129
  fin_infra/providers/banking/plaid_client.py,sha256=LiBIwQLJp-5bA98oEQtTZpkQMC7kwhShq0mPATa9wD8,6520
130
130
  fin_infra/providers/banking/teller_client.py,sha256=QmrsBlk3_rHT-pTQPrIAA74kjIjcgdi-gOb8NA3oBO8,10268
131
- fin_infra/providers/base.py,sha256=_EmC37Bt8LA2JmVxMIy2poJyQsuD6FpAawkHPreq0M8,6678
131
+ fin_infra/providers/base.py,sha256=B2YTKU_NWk1opAV1fxT5y_3wYmm1ezF2QbzWpUP74CM,7695
132
132
  fin_infra/providers/brokerage/alpaca.py,sha256=M8Z2i6dY9mgrU4-SDei2nYRKgbxHuPDMHubMb7ZMbEY,9920
133
133
  fin_infra/providers/brokerage/base.py,sha256=JJFH0Cqca4Rg4rmxfiwcQt-peRoBf4JpG3g6jx8DVks,106
134
134
  fin_infra/providers/credit/experian.py,sha256=r7lpFecgOdNEhb_Lxz2Z-BG8R3p2n0XlqDKL7y8NZ-0,482
@@ -173,8 +173,8 @@ fin_infra/utils/__init__.py,sha256=gKacLSWMAis--pasd8AuVN7ap0e9Z1TjRGur0J23EDo,6
173
173
  fin_infra/utils/http.py,sha256=pvcxbNQ9oisoGPkNe3xX9aAgWzEN6mmdtr1w-L02Xj8,629
174
174
  fin_infra/utils/retry.py,sha256=ISBrup5XCuXqHZh9kjTGvGQYcuyYyqZE4u26wW7r3CM,1030
175
175
  fin_infra/version.py,sha256=4t_crzhrLum--oyowUMxtjBTzUtWp7oRTF22ewEvJG4,49
176
- fin_infra-0.1.79.dist-info/LICENSE,sha256=wK-Ya7Ylxa38dSIZRhvNj1ZVLIrHC-BAI8v38PNADiA,1061
177
- fin_infra-0.1.79.dist-info/METADATA,sha256=Trn15dKjdC6z3cG_1jxiJJIPBncm65HpuHRXCqJ7Gjc,10479
178
- fin_infra-0.1.79.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
179
- fin_infra-0.1.79.dist-info/entry_points.txt,sha256=Sr1uikvALZMeKm-DIkeKG4L9c4SNqysXGO_IRF8_9eU,53
180
- fin_infra-0.1.79.dist-info/RECORD,,
176
+ fin_infra-0.1.80.dist-info/LICENSE,sha256=wK-Ya7Ylxa38dSIZRhvNj1ZVLIrHC-BAI8v38PNADiA,1061
177
+ fin_infra-0.1.80.dist-info/METADATA,sha256=9eljCnpLxJO-6qbAsTCM2IM93N7nt0iLNHM3Cbmq-60,10479
178
+ fin_infra-0.1.80.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
179
+ fin_infra-0.1.80.dist-info/entry_points.txt,sha256=Sr1uikvALZMeKm-DIkeKG4L9c4SNqysXGO_IRF8_9eU,53
180
+ fin_infra-0.1.80.dist-info/RECORD,,