duewall 0.1.0__tar.gz

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.
duewall-0.1.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 DueWall Labs
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
duewall-0.1.0/PKG-INFO ADDED
@@ -0,0 +1,104 @@
1
+ Metadata-Version: 2.4
2
+ Name: duewall
3
+ Version: 0.1.0
4
+ Summary: Read-only client for the DueWall maturity calendar of tokenized credit (RWA) — events, liquidity terms, NAV series, Bitcoin-anchored integrity
5
+ Author: DueWall Labs
6
+ License: MIT
7
+ Project-URL: Homepage, https://duewall.com
8
+ Project-URL: Source, https://github.com/OneLight1688/duewall-adapters
9
+ Keywords: rwa,tokenized-credit,private-credit,maturity-calendar,defi,fintech,ai-agents
10
+ Classifier: Intended Audience :: Developers
11
+ Classifier: Intended Audience :: Financial and Insurance Industry
12
+ Classifier: License :: OSI Approved :: MIT License
13
+ Classifier: Programming Language :: Python :: 3
14
+ Classifier: Topic :: Office/Business :: Financial
15
+ Requires-Python: >=3.8
16
+ Description-Content-Type: text/markdown
17
+ License-File: LICENSE
18
+ Dynamic: license-file
19
+
20
+ # duewall
21
+
22
+ Read-only Python client for the [DueWall](https://duewall.com) maturity calendar
23
+ of tokenized credit — *"the liability time-axis for tokenized credit."*
24
+
25
+ On-chain data is a rear-view mirror: Maple's public API lists 266 loans, **all
26
+ matured, zero forward maturities visible on-chain**. The forward-looking layer
27
+ lives in documents — loan agreements and fund factsheets. DueWall reads them,
28
+ with per-field source links, human verification and a coverage-grade system,
29
+ and serves the result as a free public API.
30
+
31
+ ## Install
32
+
33
+ ```bash
34
+ pip install duewall
35
+ ```
36
+
37
+ ## Usage
38
+
39
+ Zero dependencies (stdlib only).
40
+
41
+ ```python
42
+ from duewall import DueWall
43
+
44
+ dw = DueWall()
45
+
46
+ dw.meta() # record counts, license, schema links
47
+ dw.events() # all events: maturities, redemption
48
+ # windows, NAV reports — each with a
49
+ # coverage grade (A/B/M) + source_url
50
+ dw.forward() # future-dated obligations (the layer
51
+ # on-chain lacks)
52
+ dw.forward(days=90) # next 90 days only
53
+ dw.terms() # human-verified liquidity terms per fund
54
+ dw.pools() # pool NAV + TVL/APY snapshot
55
+ dw.maturity_wall() # monthly on-chain maturity distribution
56
+ dw.price_history() # daily on-chain NAV/price series
57
+ dw.by_grade("A") # human-verified records only
58
+ ```
59
+
60
+ ## Example — what matures next?
61
+
62
+ ```python
63
+ from duewall import DueWall
64
+
65
+ dw = DueWall()
66
+ for e in sorted(dw.forward(days=180), key=lambda x: x["date"] or ""):
67
+ print(e["date"], e["token"], e["event_type"],
68
+ f"${e['amount_usd']:,.0f}" if e.get("amount_usd") else "",
69
+ e["source_url"])
70
+ ```
71
+
72
+ ## Coverage grades (A / B / M)
73
+
74
+ Every record carries a `grade` describing **data completeness — never credit
75
+ quality**:
76
+
77
+ | Grade | Meaning |
78
+ |-------|---------|
79
+ | **A** | Terms human-verified against issuer factsheets & published |
80
+ | **B** | Events covered by machine adapters with source links; terms pending |
81
+ | **M** | Below the TVL bar for a dedicated adapter; monitored |
82
+
83
+ Rules: an event never exceeds the grade of its entity; unmatched rows default
84
+ to B; new issuers enter at B and move to A only after a factsheet pass in
85
+ human verification. Full policy: [duewall.com/coverage/](https://duewall.com/coverage/).
86
+
87
+ ## Integrity — Bitcoin-anchored
88
+
89
+ Every daily snapshot is hash-chained (each day binds the previous anchor) and
90
+ timestamped via [OpenTimestamps](https://opentimestamps.org): receipts at
91
+ [duewall.com/anchor/](https://duewall.com/anchor/), verifiable with
92
+ `ots verify` — anyone can prove the data existed at its stated date, unaltered.
93
+
94
+ ## License & citation
95
+
96
+ - Data: **CC-BY 4.0** — cite *"DueWall Labs (duewall.com)"* and link back.
97
+ - Code: MIT.
98
+ - Schema: [duewall-adapters/docs/SCHEMA.md](https://github.com/OneLight1688/duewall-adapters/blob/main/docs/SCHEMA.md)
99
+
100
+ ## Links
101
+
102
+ - Live site: https://duewall.com
103
+ - API docs: https://duewall.com/api/
104
+ - Open-source adapters & snapshots: https://github.com/OneLight1688/duewall-adapters
@@ -0,0 +1,85 @@
1
+ # duewall
2
+
3
+ Read-only Python client for the [DueWall](https://duewall.com) maturity calendar
4
+ of tokenized credit — *"the liability time-axis for tokenized credit."*
5
+
6
+ On-chain data is a rear-view mirror: Maple's public API lists 266 loans, **all
7
+ matured, zero forward maturities visible on-chain**. The forward-looking layer
8
+ lives in documents — loan agreements and fund factsheets. DueWall reads them,
9
+ with per-field source links, human verification and a coverage-grade system,
10
+ and serves the result as a free public API.
11
+
12
+ ## Install
13
+
14
+ ```bash
15
+ pip install duewall
16
+ ```
17
+
18
+ ## Usage
19
+
20
+ Zero dependencies (stdlib only).
21
+
22
+ ```python
23
+ from duewall import DueWall
24
+
25
+ dw = DueWall()
26
+
27
+ dw.meta() # record counts, license, schema links
28
+ dw.events() # all events: maturities, redemption
29
+ # windows, NAV reports — each with a
30
+ # coverage grade (A/B/M) + source_url
31
+ dw.forward() # future-dated obligations (the layer
32
+ # on-chain lacks)
33
+ dw.forward(days=90) # next 90 days only
34
+ dw.terms() # human-verified liquidity terms per fund
35
+ dw.pools() # pool NAV + TVL/APY snapshot
36
+ dw.maturity_wall() # monthly on-chain maturity distribution
37
+ dw.price_history() # daily on-chain NAV/price series
38
+ dw.by_grade("A") # human-verified records only
39
+ ```
40
+
41
+ ## Example — what matures next?
42
+
43
+ ```python
44
+ from duewall import DueWall
45
+
46
+ dw = DueWall()
47
+ for e in sorted(dw.forward(days=180), key=lambda x: x["date"] or ""):
48
+ print(e["date"], e["token"], e["event_type"],
49
+ f"${e['amount_usd']:,.0f}" if e.get("amount_usd") else "",
50
+ e["source_url"])
51
+ ```
52
+
53
+ ## Coverage grades (A / B / M)
54
+
55
+ Every record carries a `grade` describing **data completeness — never credit
56
+ quality**:
57
+
58
+ | Grade | Meaning |
59
+ |-------|---------|
60
+ | **A** | Terms human-verified against issuer factsheets & published |
61
+ | **B** | Events covered by machine adapters with source links; terms pending |
62
+ | **M** | Below the TVL bar for a dedicated adapter; monitored |
63
+
64
+ Rules: an event never exceeds the grade of its entity; unmatched rows default
65
+ to B; new issuers enter at B and move to A only after a factsheet pass in
66
+ human verification. Full policy: [duewall.com/coverage/](https://duewall.com/coverage/).
67
+
68
+ ## Integrity — Bitcoin-anchored
69
+
70
+ Every daily snapshot is hash-chained (each day binds the previous anchor) and
71
+ timestamped via [OpenTimestamps](https://opentimestamps.org): receipts at
72
+ [duewall.com/anchor/](https://duewall.com/anchor/), verifiable with
73
+ `ots verify` — anyone can prove the data existed at its stated date, unaltered.
74
+
75
+ ## License & citation
76
+
77
+ - Data: **CC-BY 4.0** — cite *"DueWall Labs (duewall.com)"* and link back.
78
+ - Code: MIT.
79
+ - Schema: [duewall-adapters/docs/SCHEMA.md](https://github.com/OneLight1688/duewall-adapters/blob/main/docs/SCHEMA.md)
80
+
81
+ ## Links
82
+
83
+ - Live site: https://duewall.com
84
+ - API docs: https://duewall.com/api/
85
+ - Open-source adapters & snapshots: https://github.com/OneLight1688/duewall-adapters
@@ -0,0 +1,7 @@
1
+ # -*- coding: utf-8 -*-
2
+ """duewall: read-only client for the DueWall maturity calendar of tokenized credit
3
+ (RWA private credit) — the liability time-axis that on-chain data does not show."""
4
+ from .client import DueWall
5
+
6
+ __version__ = "0.1.0"
7
+ __all__ = ["DueWall"]
@@ -0,0 +1,96 @@
1
+ # -*- coding: utf-8 -*-
2
+ """stdlib-only client — zero dependencies, zero cost, read-only.
3
+
4
+ All data comes from public, CORS-enabled endpoints of https://duewall.com/api/v1/:
5
+ meta.json version, counts, license (CC-BY-4.0), schema link
6
+ events.json structured events (maturities, redemption windows, NAV reports)
7
+ — every record carries a coverage grade (A/B/M), status
8
+ (draft=machine-extracted, verified=human-checked) and a
9
+ per-field source_url
10
+ terms.json human-verified liquidity terms per fund (min investment,
11
+ settlement, lockups, fees, domicile, AUM)
12
+ pools.json pool NAV + TVL/APY snapshot (Centrifuge + DefiLlama RWA)
13
+ maturity_wall.json monthly on-chain maturity distribution
14
+ price_history.json daily on-chain NAV/price series per pool token
15
+
16
+ Coverage grades describe DATA COMPLETENESS, never credit quality:
17
+ A = terms human-verified against issuer factsheets and published
18
+ B = events covered by machine adapters with source links; terms pending
19
+ M = below the TVL bar for a dedicated adapter; monitored
20
+
21
+ Every daily snapshot is hash-chained and anchored to Bitcoin via OpenTimestamps —
22
+ publicly verifiable, zero cost. Data license: CC-BY 4.0 (cite "DueWall Labs
23
+ (duewall.com)"). Code: MIT.
24
+ """
25
+ import json
26
+ from datetime import date, timedelta
27
+ from urllib.parse import urlencode
28
+ from urllib.request import Request, urlopen
29
+
30
+ DEFAULT_BASE = "https://duewall.com"
31
+
32
+
33
+ class DueWall:
34
+ def __init__(self, base: str = DEFAULT_BASE, timeout: int = 15,
35
+ user_agent: str = "duewall/0.1"):
36
+ self.base = base.rstrip("/")
37
+ self.timeout = timeout
38
+ self.headers = {"User-Agent": user_agent, "Accept": "application/json"}
39
+
40
+ def _get(self, path: str):
41
+ url = self.base + path
42
+ req = Request(url, headers=self.headers)
43
+ with urlopen(req, timeout=self.timeout) as r:
44
+ return json.loads(r.read().decode("utf-8"))
45
+
46
+ # ---- data layer -----------------------------------------------------------
47
+ def meta(self) -> dict:
48
+ """API version, record counts, license, schema + coverage-policy links."""
49
+ return self._get("/api/v1/meta.json")
50
+
51
+ def events(self) -> list:
52
+ """All structured events: maturities, redemption windows, NAV reports.
53
+ Fields: token, issuer, event_type, date, amount_usd, seniority,
54
+ source_type, source_url, verified_by, status, last_updated, grade (A/B/M)."""
55
+ return self._get("/api/v1/events.json")
56
+
57
+ def terms(self) -> list:
58
+ """Human-verified liquidity terms per fund: structure, liquidity (daily/
59
+ weekly/...), settlement, min_investment, mgmt_fee_bps, domicile, AUM.
60
+ Each record carries its coverage grade and source_url."""
61
+ return self._get("/api/v1/terms.json")
62
+
63
+ def pools(self) -> dict:
64
+ """Pool NAV + TVL/APY snapshot (Centrifuge pool tokens + DefiLlama RWA)."""
65
+ return self._get("/api/v1/pools.json")
66
+
67
+ def maturity_wall(self) -> dict:
68
+ """Monthly on-chain maturity distribution (incl. the zero-future-maturities
69
+ finding that motivated DueWall)."""
70
+ return self._get("/api/v1/maturity_wall.json")
71
+
72
+ def price_history(self) -> list:
73
+ """Daily on-chain NAV/price series per pool token (one point per UTC day).
74
+ NAV-type oracle value — not a market traded price."""
75
+ return self._get("/api/v1/price_history.json")
76
+
77
+ # ---- convenience filters (pure client-side) --------------------------------
78
+ def forward(self, from_date: str = None, days: int = None) -> list:
79
+ """Future-dated obligations — the forward-looking layer on-chain lacks.
80
+ from_date: ISO 'YYYY-MM-DD' (default: today, UTC). days: horizon in days."""
81
+ start = from_date or date.today().isoformat()
82
+ end = None
83
+ if days is not None:
84
+ end = (date.today() + timedelta(days=days)).isoformat()
85
+ out = []
86
+ for e in self.events():
87
+ d = e.get("date") or ""
88
+ if d >= start and (end is None or d <= end):
89
+ out.append(e)
90
+ return out
91
+
92
+ def by_grade(self, *grades) -> list:
93
+ """Filter events by coverage grade, e.g. by_grade("A") for human-verified
94
+ records only. Grades describe data completeness, never credit quality."""
95
+ want = set(grades)
96
+ return [e for e in self.events() if e.get("grade") in want]
@@ -0,0 +1,104 @@
1
+ Metadata-Version: 2.4
2
+ Name: duewall
3
+ Version: 0.1.0
4
+ Summary: Read-only client for the DueWall maturity calendar of tokenized credit (RWA) — events, liquidity terms, NAV series, Bitcoin-anchored integrity
5
+ Author: DueWall Labs
6
+ License: MIT
7
+ Project-URL: Homepage, https://duewall.com
8
+ Project-URL: Source, https://github.com/OneLight1688/duewall-adapters
9
+ Keywords: rwa,tokenized-credit,private-credit,maturity-calendar,defi,fintech,ai-agents
10
+ Classifier: Intended Audience :: Developers
11
+ Classifier: Intended Audience :: Financial and Insurance Industry
12
+ Classifier: License :: OSI Approved :: MIT License
13
+ Classifier: Programming Language :: Python :: 3
14
+ Classifier: Topic :: Office/Business :: Financial
15
+ Requires-Python: >=3.8
16
+ Description-Content-Type: text/markdown
17
+ License-File: LICENSE
18
+ Dynamic: license-file
19
+
20
+ # duewall
21
+
22
+ Read-only Python client for the [DueWall](https://duewall.com) maturity calendar
23
+ of tokenized credit — *"the liability time-axis for tokenized credit."*
24
+
25
+ On-chain data is a rear-view mirror: Maple's public API lists 266 loans, **all
26
+ matured, zero forward maturities visible on-chain**. The forward-looking layer
27
+ lives in documents — loan agreements and fund factsheets. DueWall reads them,
28
+ with per-field source links, human verification and a coverage-grade system,
29
+ and serves the result as a free public API.
30
+
31
+ ## Install
32
+
33
+ ```bash
34
+ pip install duewall
35
+ ```
36
+
37
+ ## Usage
38
+
39
+ Zero dependencies (stdlib only).
40
+
41
+ ```python
42
+ from duewall import DueWall
43
+
44
+ dw = DueWall()
45
+
46
+ dw.meta() # record counts, license, schema links
47
+ dw.events() # all events: maturities, redemption
48
+ # windows, NAV reports — each with a
49
+ # coverage grade (A/B/M) + source_url
50
+ dw.forward() # future-dated obligations (the layer
51
+ # on-chain lacks)
52
+ dw.forward(days=90) # next 90 days only
53
+ dw.terms() # human-verified liquidity terms per fund
54
+ dw.pools() # pool NAV + TVL/APY snapshot
55
+ dw.maturity_wall() # monthly on-chain maturity distribution
56
+ dw.price_history() # daily on-chain NAV/price series
57
+ dw.by_grade("A") # human-verified records only
58
+ ```
59
+
60
+ ## Example — what matures next?
61
+
62
+ ```python
63
+ from duewall import DueWall
64
+
65
+ dw = DueWall()
66
+ for e in sorted(dw.forward(days=180), key=lambda x: x["date"] or ""):
67
+ print(e["date"], e["token"], e["event_type"],
68
+ f"${e['amount_usd']:,.0f}" if e.get("amount_usd") else "",
69
+ e["source_url"])
70
+ ```
71
+
72
+ ## Coverage grades (A / B / M)
73
+
74
+ Every record carries a `grade` describing **data completeness — never credit
75
+ quality**:
76
+
77
+ | Grade | Meaning |
78
+ |-------|---------|
79
+ | **A** | Terms human-verified against issuer factsheets & published |
80
+ | **B** | Events covered by machine adapters with source links; terms pending |
81
+ | **M** | Below the TVL bar for a dedicated adapter; monitored |
82
+
83
+ Rules: an event never exceeds the grade of its entity; unmatched rows default
84
+ to B; new issuers enter at B and move to A only after a factsheet pass in
85
+ human verification. Full policy: [duewall.com/coverage/](https://duewall.com/coverage/).
86
+
87
+ ## Integrity — Bitcoin-anchored
88
+
89
+ Every daily snapshot is hash-chained (each day binds the previous anchor) and
90
+ timestamped via [OpenTimestamps](https://opentimestamps.org): receipts at
91
+ [duewall.com/anchor/](https://duewall.com/anchor/), verifiable with
92
+ `ots verify` — anyone can prove the data existed at its stated date, unaltered.
93
+
94
+ ## License & citation
95
+
96
+ - Data: **CC-BY 4.0** — cite *"DueWall Labs (duewall.com)"* and link back.
97
+ - Code: MIT.
98
+ - Schema: [duewall-adapters/docs/SCHEMA.md](https://github.com/OneLight1688/duewall-adapters/blob/main/docs/SCHEMA.md)
99
+
100
+ ## Links
101
+
102
+ - Live site: https://duewall.com
103
+ - API docs: https://duewall.com/api/
104
+ - Open-source adapters & snapshots: https://github.com/OneLight1688/duewall-adapters
@@ -0,0 +1,9 @@
1
+ LICENSE
2
+ README.md
3
+ pyproject.toml
4
+ duewall/__init__.py
5
+ duewall/client.py
6
+ duewall.egg-info/PKG-INFO
7
+ duewall.egg-info/SOURCES.txt
8
+ duewall.egg-info/dependency_links.txt
9
+ duewall.egg-info/top_level.txt
@@ -0,0 +1 @@
1
+ duewall
@@ -0,0 +1,25 @@
1
+ [build-system]
2
+ requires = ["setuptools>=68"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "duewall"
7
+ version = "0.1.0"
8
+ description = "Read-only client for the DueWall maturity calendar of tokenized credit (RWA) — events, liquidity terms, NAV series, Bitcoin-anchored integrity"
9
+ readme = "README.md"
10
+ requires-python = ">=3.8"
11
+ license = { text = "MIT" }
12
+ authors = [{ name = "DueWall Labs" }]
13
+ keywords = ["rwa", "tokenized-credit", "private-credit", "maturity-calendar", "defi", "fintech", "ai-agents"]
14
+ classifiers = [
15
+ "Intended Audience :: Developers",
16
+ "Intended Audience :: Financial and Insurance Industry",
17
+ "License :: OSI Approved :: MIT License",
18
+ "Programming Language :: Python :: 3",
19
+ "Topic :: Office/Business :: Financial",
20
+ ]
21
+ dependencies = []
22
+
23
+ [project.urls]
24
+ Homepage = "https://duewall.com"
25
+ Source = "https://github.com/OneLight1688/duewall-adapters"
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+