aggregate_api 1.0.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.
Files changed (63) hide show
  1. aggregate_api/__init__.py +41 -0
  2. aggregate_api/__main__.py +154 -0
  3. aggregate_api/app.py +206 -0
  4. aggregate_api/audit.py +395 -0
  5. aggregate_api/bounds.py +331 -0
  6. aggregate_api/cache.py +319 -0
  7. aggregate_api/capability.py +823 -0
  8. aggregate_api/completion.py +219 -0
  9. aggregate_api/config.py +363 -0
  10. aggregate_api/cors.py +61 -0
  11. aggregate_api/examples.py +620 -0
  12. aggregate_api/layer_pricing.py +840 -0
  13. aggregate_api/library.py +94 -0
  14. aggregate_api/library_notes.py +96 -0
  15. aggregate_api/models.py +1407 -0
  16. aggregate_api/net.py +281 -0
  17. aggregate_api/pnl.py +101 -0
  18. aggregate_api/pricing.py +778 -0
  19. aggregate_api/resources.py +257 -0
  20. aggregate_api/routes/__init__.py +8 -0
  21. aggregate_api/routes/decl.py +327 -0
  22. aggregate_api/routes/examples.py +82 -0
  23. aggregate_api/routes/meta.py +282 -0
  24. aggregate_api/routes/objects.py +4119 -0
  25. aggregate_api/routes/status.py +466 -0
  26. aggregate_api/serializers.py +565 -0
  27. aggregate_api/sessions.py +353 -0
  28. aggregate_api/static/aggregate-api-logo-512.png +0 -0
  29. aggregate_api/static/aggregate-api-logo.png +0 -0
  30. aggregate_api/static/aggregate-api-trim.png +0 -0
  31. aggregate_api/static/android-chrome-192x192.png +0 -0
  32. aggregate_api/static/android-chrome-512x512.png +0 -0
  33. aggregate_api/static/apple-touch-icon.png +0 -0
  34. aggregate_api/static/assets/bootstrap-icons-BeopsB42.woff +0 -0
  35. aggregate_api/static/assets/bootstrap-icons-mSm7cUeB.woff2 +0 -0
  36. aggregate_api/static/assets/bootstrap-ohb1VZ53.js +5 -0
  37. aggregate_api/static/assets/codemirror-h62DHGGa.js +14 -0
  38. aggregate_api/static/assets/csv-grid.worker-DKzHGXac.js +4 -0
  39. aggregate_api/static/assets/echarts-B7o9sc00.js +40 -0
  40. aggregate_api/static/assets/echarts-gl-DG1Uf6wE.js +4282 -0
  41. aggregate_api/static/assets/lite-CUlcD8p4.css +1 -0
  42. aggregate_api/static/assets/lite-Dd2TnT4M.js +1 -0
  43. aggregate_api/static/assets/main-Bxhxa55v.css +9 -0
  44. aggregate_api/static/assets/main-CmoEiPit.js +9 -0
  45. aggregate_api/static/assets/tables-BHCF7qIF.js +8 -0
  46. aggregate_api/static/assets/tables-CxvajLr7.css +1 -0
  47. aggregate_api/static/favicon-16x16.png +0 -0
  48. aggregate_api/static/favicon-32x32.png +0 -0
  49. aggregate_api/static/favicon.ico +0 -0
  50. aggregate_api/static/index.html +912 -0
  51. aggregate_api/static/lite.html +83 -0
  52. aggregate_api/static/logo.png +0 -0
  53. aggregate_api/static/site.webmanifest +14 -0
  54. aggregate_api/static/sw.js +78 -0
  55. aggregate_api/status.py +536 -0
  56. aggregate_api/status_page.html +546 -0
  57. aggregate_api/tables.py +316 -0
  58. aggregate_api-1.0.0.dist-info/METADATA +187 -0
  59. aggregate_api-1.0.0.dist-info/RECORD +63 -0
  60. aggregate_api-1.0.0.dist-info/WHEEL +5 -0
  61. aggregate_api-1.0.0.dist-info/entry_points.txt +2 -0
  62. aggregate_api-1.0.0.dist-info/licenses/LICENSE +28 -0
  63. aggregate_api-1.0.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1 @@
1
+ :root{--ui: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--mono: "Cascadia Mono", SFMono-Regular, Consolas, Menlo, monospace;--fs-meta: .74rem;--fs-ui: .82rem;--fs-body: .94rem;--fs-head: 1.15rem;--ink: #000000;--ink-2: #2b2b2b;--mut: #5f5f5f;--line: #d4d4d4;--line-2: #ebebeb;--soft: #f6f6f6;--house: #a81313;--house-dark: #8c1010;--house-ring: rgba(168, 19, 19, .25);--ok-tint: #f2f8f3;--warn-tint: #fdf6e8;--fail-tint: #fbeeee;--radius: .375rem}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--ui);font-size:var(--fs-body);color:var(--ink-2);background:#fff;min-height:100dvh;display:flex;flex-direction:column}.p-hdr{position:sticky;top:0;z-index:5;background:#fff;display:flex;align-items:baseline;gap:.5rem;padding:.8rem .9rem .55rem;border-bottom:1px solid var(--line-2)}.p-brand{font-weight:700;font-size:1.02rem;color:var(--ink);line-height:1.05}.p-kicker{font-size:.56rem;font-variant:small-caps;letter-spacing:.16em;color:var(--mut);display:block;margin-top:.1rem}.p-vers{margin-left:auto;font-family:var(--mono);font-size:.62rem;color:var(--mut)}.p-sect{font-size:var(--fs-meta);color:var(--mut);text-transform:uppercase;letter-spacing:.05em;padding:.55rem .95rem 0}.p-chips{display:flex;gap:.45rem;overflow-x:auto;padding:.7rem .9rem .55rem;scrollbar-width:none}.p-chips::-webkit-scrollbar{display:none}.p-chip{flex:0 0 auto;font-size:var(--fs-ui);padding:.42rem .8rem;border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--ink-2);cursor:pointer;white-space:nowrap;font-family:var(--ui)}.p-chip.on{background:var(--house);border-color:var(--house);color:#fff}.p-prog{margin:.5rem .9rem;border:1px solid var(--line-2);border-radius:var(--radius);background:var(--soft);padding:.55rem .7rem .5rem;cursor:pointer}.p-prog pre{margin:0;font-family:var(--mono);font-size:.72rem;line-height:1.45;color:var(--ink-2);white-space:pre;overflow-x:auto}.p-prog.collapsed pre{max-height:8.7em;overflow-y:hidden}.p-prog .hint{font-size:var(--fs-meta);color:var(--mut);margin-top:.3rem}.p-build{display:block;width:calc(100% - 1.8rem);margin:.7rem .9rem;padding:.78rem;font-size:1rem;font-weight:650;font-family:var(--ui);color:#fff;background:var(--house);border:1px solid var(--house);border-radius:.55rem;cursor:pointer}.p-build:active{background:var(--house-dark)}.p-build:disabled{opacity:.55;cursor:default}.p-strip{margin:.6rem .9rem 0;padding:.5rem .7rem .55rem;border:1px solid #dbe7dd;border-left:3px solid #2e7d43;background:var(--ok-tint);border-radius:var(--radius)}.p-strip.is-warn{border-color:#eadfc0;border-left-color:#b68b1e;background:var(--warn-tint)}.p-strip.is-fail{border-color:#ecc9c9;border-left-color:var(--house);background:var(--fail-tint)}.p-name{font-weight:650;color:var(--ink);font-size:var(--fs-body)}.p-kind{font-size:var(--fs-meta);color:var(--mut);margin-left:.45rem}.p-verdict{font-size:var(--fs-meta);margin-left:.45rem}.p-strip.is-warn .p-verdict{color:#8a6a15}.p-strip.is-fail .p-verdict{color:var(--house)}.p-grid-facts{font-size:.68rem;color:var(--mut);margin-top:.15rem;font-family:var(--ui)}.p-grid-facts b{font-family:var(--mono);font-weight:500;color:var(--ink-2)}.p-error{font-size:var(--fs-ui);color:var(--ink-2);margin-top:.2rem;font-family:var(--mono);white-space:pre-wrap}.p-tiles{display:grid;grid-template-columns:repeat(4,1fr);gap:.45rem;margin:.55rem .9rem 0}.p-tile{border:1px solid var(--line-2);border-radius:var(--radius);padding:.4rem .2rem .45rem;text-align:center;background:#fff}.p-tile .l{font-size:.62rem;color:var(--mut)}.p-tile .v{font-family:var(--mono);font-size:.88rem;color:var(--ink);margin-top:.1rem}.p-chart{margin:.7rem .9rem 0}.p-chart .exhibit-controls,.p-chart .exhibit-footer{display:none}.exhibit-canvas{width:100%}.chart-readout{display:flex;flex-wrap:wrap;align-items:baseline;gap:.15rem .8rem;min-height:1.4rem;padding:0 0 .5rem;margin:0;font-size:.72rem;color:var(--ink)}.chart-readout-line{display:flex;flex-wrap:wrap;align-items:baseline;gap:.15rem .8rem;width:100%}.chart-readout-head{font-weight:700;font-variant-numeric:tabular-nums;min-width:13ch}.chart-readout-head.is-idle{font-weight:400;color:var(--mut);font-style:italic;min-width:0}.chart-readout-item{display:inline-flex;align-items:baseline;gap:.3rem;background:none;border:0;padding:0;margin:0;font:inherit;color:inherit;cursor:pointer}.chart-readout-item b{display:inline-block;min-width:9ch;text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums;font-weight:600}.chart-readout-item.is-off{opacity:.4}.chart-readout-name{color:var(--mut)}.chart-readout-swatch{display:inline-block;width:14px;height:2px;border-radius:1px;align-self:center}.exhibit-skeleton{position:absolute;inset:0;pointer-events:none}.exhibit-skeleton-panel{position:absolute;border:1px solid var(--line-2);border-radius:var(--radius);background:var(--soft);display:flex;align-items:center;justify-content:center;animation:lite-skeleton-pulse 1.8s ease-in-out infinite}.exhibit-skeleton-panel .bi{display:none}@keyframes lite-skeleton-pulse{0%,to{opacity:1}50%{opacity:.55}}.text-muted{color:var(--mut)}.small{font-size:var(--fs-meta)}.fst-italic{font-style:italic}.p-table{margin:.8rem .9rem 0;overflow-x:auto}.p-table-caption{font-size:.62rem;color:var(--mut);margin-top:.2rem}.p-dim[hidden],.p-sheet[hidden]{display:none}.p-dim{position:fixed;inset:0;background:#00000059;z-index:8}.p-sheet{position:fixed;left:0;right:0;bottom:0;z-index:9;background:#fff;border-radius:18px 18px 0 0;max-height:82%;display:flex;flex-direction:column;box-shadow:0 -8px 30px #00000040}.p-sheet-grab{width:38px;height:4px;border-radius:2px;background:var(--line);margin:.5rem auto .3rem;flex:0 0 auto}.p-sheet-head{padding:.2rem .95rem .5rem;border-bottom:1px solid var(--line-2)}.p-sheet-title{font-weight:650;color:var(--ink);font-size:var(--fs-body)}.p-search{width:100%;margin-top:.45rem;padding:.45rem .7rem;font-size:var(--fs-ui);font-family:var(--ui);border:1px solid var(--line);border-radius:999px;background:var(--soft);color:var(--ink-2)}.p-search:focus{outline:2px solid var(--house-ring)}.p-sheet-list{overflow-y:auto;padding:.2rem 0 .8rem}.p-item{padding:.55rem .95rem .5rem;border-bottom:1px solid var(--line-2);cursor:pointer}.p-item.on{background:#faf3f3;box-shadow:inset 3px 0 0 var(--house)}.p-item .nm{font-weight:600;color:var(--ink);font-size:var(--fs-ui)}.p-item-kind{font-size:.62rem;color:var(--mut);font-weight:400;margin-left:.45rem;text-transform:uppercase;letter-spacing:.04em}.p-item .nt{font-size:.72rem;color:var(--mut);line-height:1.35;margin-top:.1rem;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.p-item-none{padding:.8rem .95rem;font-size:var(--fs-ui);color:var(--mut)}.p-full{margin:auto .9rem 0;padding:.8rem 0 .95rem;border-top:1px solid var(--line-2);font-size:var(--fs-meta);color:var(--mut)}.p-full a{color:var(--house);text-decoration:none;font-weight:600}
@@ -0,0 +1 @@
1
+ import{a as C,u as P,l as B,s as x,m as A,i as M,c as D,q as T,A as _,h as q}from"./tables-BHCF7qIF.js";import"./echarts-B7o9sc00.js";const F=["DiceOfDice","BasicBook","Capstone.Gross","Capstone.XOL","Capstone.FullProgram"],I={agg:"Aggregate",port:"Portfolio",sev:"Severity",distortion:"Distortion",bvagg:"Bivariate",pnl:"P&L"},i=e=>document.getElementById(e),j=/^reinsurance;\s*subject\s+/;function R(e){const t=String(e).trim().toLowerCase().replace(j,"");return t==="not unreasonable"?"ok":/\bmean\b/.test(t)?"bad":"warn"}function y(e){if(e==null||!Number.isFinite(e))return"·";const t=Math.abs(e);return t>=1e6?`${Number((e/1e6).toPrecision(3))}M`:t>=100?Math.round(e).toLocaleString("en-US"):String(Number(e.toPrecision(3)))}let h=null,v=!1,m=null,u=[],w=[],E=null;function L(){const e=i("lite-prog").classList.contains("collapsed");i("lite-prog-hint").textContent=`DecL program from the library · tap to ${e?"expand":"collapse"}`}function H(e){const t=i("lite-prog");i("lite-prog-text").textContent=e.decl||"",t.hidden=!1,t.classList.add("collapsed"),L(),i("lite-build").disabled=!1}function O(e){const t=i("lite-chips");t.querySelectorAll(".on").forEach(n=>n.classList.remove("on"));for(const n of t.querySelectorAll(".p-chip"))n.dataset.name===e&&n.classList.add("on")}function k(e){h=e,O(e.name),H(e)}async function U(){u=(await B()).items||[],w=u.map(o=>`${o.name} ${o.kind} ${(o.tags||[]).join(" ")} ${o.note||""}`);const t=new Map(u.map(o=>[o.name,o])),n=i("lite-chips");for(const o of F){const s=t.get(o);if(!s){console.warn(`[lite] curated example not in the library: ${o}`);continue}const c=document.createElement("button");c.className="p-chip",c.type="button",c.textContent=s.name,c.dataset.name=s.name,c.addEventListener("click",()=>k(s)),n.appendChild(c)}const a=document.createElement("button");a.className="p-chip more",a.type="button",a.textContent="All examples…",a.addEventListener("click",G),n.appendChild(a);const l=n.querySelector(".p-chip:not(.more)");l&&k(t.get(l.dataset.name))}function N(e){const t=e.trim();return t?P(w,t).map(n=>u[n]):u}function $(e){const t=i("lite-sheet-list");t.replaceChildren();for(const n of e){const a=document.createElement("div");a.className=`p-item${h&&n.name===h.name?" on":""}`;const l=document.createElement("div");l.className="nm",l.textContent=n.name;const o=document.createElement("span");if(o.className="p-item-kind",o.textContent=n.kind,l.appendChild(o),a.appendChild(l),n.note){const s=document.createElement("div");s.className="nt",s.textContent=n.note,a.appendChild(s)}a.addEventListener("click",()=>{k(n),S()}),t.appendChild(a)}if(!e.length){const n=document.createElement("div");n.className="p-item-none",n.textContent="Nothing matches.",t.appendChild(n)}}function G(){$(N(i("lite-search").value)),i("lite-dim").hidden=!1,i("lite-sheet").hidden=!1}function S(){i("lite-dim").hidden=!0,i("lite-sheet").hidden=!0}function b(e,t){const n=document.createElement("div");n.className="p-tile";const a=document.createElement("div");a.className="l",a.textContent=e;const l=document.createElement("div");return l.className="v",l.textContent=t,n.append(a,l),{tile:n,value:l}}function V(e){const t=i("lite-strip");t.replaceChildren(),t.classList.remove("is-warn","is-fail");const n=e.validation?R(e.validation):"ok";n==="warn"&&t.classList.add("is-warn"),n==="bad"&&t.classList.add("is-fail");const a=document.createElement("span");a.className="p-name",a.textContent=e.name;const l=document.createElement("span");if(l.className="p-kind",l.textContent=I[e.kind]||e.kind,t.append(a,l),n!=="ok"&&e.validation){const r=document.createElement("span");r.className="p-verdict",r.textContent=e.validation,t.appendChild(r)}const o=document.createElement("div");o.className="p-grid-facts";const s=[],c=e.components||[];if(c.length){const r=g=>`(${c.map(p=>p[g]==null?"?":p[g]).join(", ")})`;s.push(`bs <b>${r("bs")}</b>`,`log2 <b>${r("log2")}</b>`)}else e.bs!==null&&e.bs!==void 0&&s.push(`bs <b>${e.bs}</b>`),e.log2!==null&&e.log2!==void 0&&s.push(`log2 <b>${e.log2}</b>`);e.value_type&&s.push(e.value_type),o.innerHTML=s.join(" · "),t.appendChild(o);const d=i("lite-tiles");d.replaceChildren(),d.appendChild(b("Mean",y(e.mean)).tile),d.appendChild(b("CV",y(e.cv)).tile);const f=b("P99","…");return d.appendChild(f.tile),d.appendChild(b("Build",`${(e.elapsed_ms/1e3).toFixed(2)} s`).tile),i("lite-built").hidden=!1,f}async function K(e){m&&(m.dispose(),m=null);const t=i("lite-chart"),n=i("lite-chart-host");n.replaceChildren(),t.hidden=!1;const a=e.capability?e.capability.primary_chart:null;if(!a){n.appendChild(x());return}let l=!1;try{m=await A(n,{id:e.id,chart:a})}catch{l=!0}m||n.replaceChildren(l?M():x())}function X(e){const t=new Set((e.capability&&e.capability.exhibits||[]).map(n=>n.name));return e.kind==="pnl"&&t.has("economic")?{name:"economic",block:null}:e.has_reins&&t.has("reins")?{name:"reins",block:0}:t.has("summary")?{name:"summary",block:null}:null}async function z(e){const t=i("lite-table");D("lite-table"),t.replaceChildren(),t.hidden=!0;const n=X(e);if(n)try{const l=(await C.exhibit(e.id,n.name)).blocks||[],o=n.block===null?l:l.slice(n.block,n.block+1);let s=!1;for(const c of o){const{caption:d,...f}=c,r=document.createElement("div");if(t.appendChild(r),await T("lite-table",r,f)&&(s=!0),d){const p=document.createElement("div");p.className="p-table-caption",p.textContent=d,t.appendChild(p)}}t.hidden=!s}catch(a){console.warn(`[lite] ${n.name} exhibit did not render`,a)}}function J(e){const t=i("lite-strip");t.replaceChildren(),t.classList.remove("is-warn"),t.classList.add("is-fail");const n=document.createElement("span");n.className="p-name";const a=document.createElement("div");if(a.className="p-error",e instanceof _&&e.status===429){n.textContent="Easy there";const l=Number(e.retryAfter);a.textContent="This is a shared, free demo, so builds are gently rate-limited. "+(Number.isFinite(l)&&l>0?`Please try again in about ${l} second${l===1?"":"s"}.`:"Please give it a moment and try again.")}else n.textContent="Build failed",a.textContent=q(e);t.append(n,a),i("lite-tiles").replaceChildren(),i("lite-chart").hidden=!0,i("lite-table").hidden=!0,i("lite-built").hidden=!1}function Q(e){const t=performance.now();e.textContent="Building…",E=setInterval(()=>{e.textContent=`Building… ${((performance.now()-t)/1e3).toFixed(1)} s`},100)}function W(e){clearInterval(E),E=null,e.textContent="Build"}async function Y(){if(!h||v)return;v=!0;const e=i("lite-build");e.disabled=!0,Q(e);try{const t=await C.build(h.decl),n=V(t),a=C.quantiles(t.id,[.99]).then(l=>{n.value.textContent=y(l.quantiles[0]?.q)}).catch(()=>{n.value.textContent="·"});await Promise.all([K(t),z(t),a])}catch(t){J(t)}finally{v=!1,W(e),e.disabled=!1}}function Z(){C.meta().then(e=>{i("lite-versions").textContent=`agg ${e.aggregate_version} · api ${e.version}`}).catch(()=>{}),i("lite-prog").addEventListener("click",()=>{i("lite-prog").classList.toggle("collapsed"),L()}),i("lite-build").addEventListener("click",Y),i("lite-dim").addEventListener("click",S),i("lite-search").addEventListener("input",e=>{$(N(e.target.value))}),U().catch(e=>{console.error("[lite] examples did not load",e);const t=i("lite-chips");t.textContent="The example library could not be loaded. ";const n=document.createElement("a");n.href="./?full=1",n.textContent="Open the full site",t.appendChild(n)})}new URLSearchParams(location.search).has("full")?location.replace(`./${location.search}${location.hash}`):Z();