owlplanner 2025.3.11__tar.gz → 2025.3.12__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.
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/PKG-INFO +1 -1
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/pyproject.toml +1 -1
- owlplanner-2025.3.12/src/owlplanner/version.py +1 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/ui/About_Owl.py +1 -1
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/ui/Output_Files.py +2 -1
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/ui/requirements.txt +1 -1
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/ui/sskeys.py +6 -0
- owlplanner-2025.3.11/src/owlplanner/version.py +0 -1
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/.devcontainer/devcontainer.json +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/.flake8 +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/.gitattributes +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/.github/workflows/github-actions-runtests.yml +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/.gitignore +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/INSTALL.md +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/LICENSE +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/Papers/Kou-OptionPricingDouble-2004.pdf +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/Papers/Multi-Period Mean Expected-Shortfall Strategies Cut Your Losses and Ride Your Gains .pdf +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/Papers/Optimal Asset Allocation for Retirement Saving Deterministic Vs. Time Consistent Adaptive Strategies.pdf +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/Papers/Rule-based_strategies_for_dynamic_life_cycle_inves.pdf +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/Papers/s10436-006-0062-y.pdf +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/README.md +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/USER_GUIDE.md +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/docker/Dockerfile +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/docker/README.md +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/docker/docker-compose.yml +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/docker/fastentrypoint.sh +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/docs/images/AD-taxDef.png +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/docs/images/AD-taxFree.png +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/docs/images/AD-taxable.png +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/docs/images/Hist_Bequest.png +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/docs/images/Hist_Spending.png +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/docs/images/MC-tutorial2a.png +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/docs/images/MC-tutorial2b.png +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/docs/images/OwlUI.png +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/docs/images/allocations.png +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/docs/images/owl.png +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/docs/images/profile.png +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/docs/images/ratesCorrelations.png +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/docs/images/ratesPlot.png +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/docs/images/savingsPlot.png +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/docs/images/sourcesPlot.png +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/docs/images/spendingPlot.png +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/docs/images/taxIncomePlot.png +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/docs/images/taxesPlot.png +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/docs/owl.pdf +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/docs/owl.tex +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/examples/case_jack+jill.toml +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/examples/case_joe.toml +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/examples/case_john+sally.toml +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/examples/case_jon+jane.toml +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/examples/case_kim+sam-bequest.toml +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/examples/case_kim+sam-spending.toml +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/examples/jack+jill.xlsx +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/examples/joe.xlsx +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/examples/john+sally.xlsx +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/examples/jon+jane.xlsx +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/examples/template.xlsx +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/notebooks/john+sally.ipynb +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/notebooks/kim+sam.ipynb +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/notebooks/template.ipynb +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/notebooks/tutorial_1.ipynb +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/notebooks/tutorial_2.ipynb +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/notebooks/tutorial_3.ipynb +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/owlplanner.cmd +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/owlplanner.sh +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/requirements.txt +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/src/owlplanner/__init__.py +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/src/owlplanner/abcapi.py +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/src/owlplanner/config.py +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/src/owlplanner/data/__init__.py +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/src/owlplanner/data/rates.csv +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/src/owlplanner/logging.py +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/src/owlplanner/plan.py +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/src/owlplanner/progress.py +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/src/owlplanner/rates.py +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/src/owlplanner/tax2025.py +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/src/owlplanner/timelists.py +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/src/owlplanner/utils.py +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/tests/test_logger.py +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/tests/test_regressions.py +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/tests/test_repro.py +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/tests/test_toml_cases.py +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/tests/test_units.py +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/ttt.py +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/ui/Asset_Allocation.py +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/ui/Create_Case.py +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/ui/Current_Assets.py +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/ui/Documentation.py +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/ui/Fixed_Income.py +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/ui/Graphs.py +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/ui/Historical_Range.py +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/ui/Logs.py +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/ui/Monte_Carlo.py +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/ui/Optimization_Parameters.py +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/ui/Quick_Start.py +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/ui/README.md +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/ui/Rates_Selection.py +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/ui/Settings.py +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/ui/Wages_And_Contributions.py +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/ui/Worksheets.py +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/ui/main+fonts.py +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/ui/main.py +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/ui/owlbridge.py +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/ui/plots.py +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/ui/progress.py +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/ui/style.css +0 -0
- {owlplanner-2025.3.11 → owlplanner-2025.3.12}/ui/tomlexamples.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "2025.03.12"
|
|
@@ -18,7 +18,8 @@ else:
|
|
|
18
18
|
df = kz.compareSummaries()
|
|
19
19
|
if df is not None:
|
|
20
20
|
st.write("#### Synopsis")
|
|
21
|
-
|
|
21
|
+
styledDf = df[1:].style.map(kz.colorBySign)
|
|
22
|
+
st.dataframe(styledDf, use_container_width=True)
|
|
22
23
|
st.caption("Values are in today's \\$ unless marked otherwise.")
|
|
23
24
|
st.download_button(
|
|
24
25
|
"Download synopsis", data=df[1:].to_string(), file_name=f"Synopsis_{caseName}.txt",
|
|
@@ -313,6 +313,12 @@ def getAccountBalances(ni):
|
|
|
313
313
|
return bal
|
|
314
314
|
|
|
315
315
|
|
|
316
|
+
def colorBySign(val):
|
|
317
|
+
color = "green" if "\u2191" in val else "red" if "\u2193" in val else None
|
|
318
|
+
|
|
319
|
+
return f"color:{color};" if color else ""
|
|
320
|
+
|
|
321
|
+
|
|
316
322
|
def compareSummaries():
|
|
317
323
|
df = getKey("summaryDf")
|
|
318
324
|
if df is None:
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "2025.03.11"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|