owlplanner 2025.2.10__tar.gz → 2025.2.11__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.
Files changed (90) hide show
  1. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/PKG-INFO +1 -1
  2. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/pyproject.toml +1 -1
  3. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/src/owlplanner/plan.py +6 -6
  4. owlplanner-2025.2.11/src/owlplanner/version.py +1 -0
  5. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/ui/requirements.txt +1 -1
  6. owlplanner-2025.2.10/src/owlplanner/version.py +0 -1
  7. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/.devcontainer/devcontainer.json +0 -0
  8. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/.flake8 +0 -0
  9. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/.github/workflows/github-actions-runtests.yml +0 -0
  10. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/.gitignore +0 -0
  11. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/INSTALL.md +0 -0
  12. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/LICENSE +0 -0
  13. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/README.md +0 -0
  14. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/docs/images/AD-taxDef.png +0 -0
  15. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/docs/images/AD-taxFree.png +0 -0
  16. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/docs/images/AD-taxable.png +0 -0
  17. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/docs/images/Hist_Bequest.png +0 -0
  18. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/docs/images/Hist_Spending.png +0 -0
  19. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/docs/images/MC-tutorial2a.png +0 -0
  20. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/docs/images/MC-tutorial2b.png +0 -0
  21. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/docs/images/OwlUI.png +0 -0
  22. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/docs/images/allocations.png +0 -0
  23. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/docs/images/owl.png +0 -0
  24. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/docs/images/profile.png +0 -0
  25. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/docs/images/ratesCorrelations.png +0 -0
  26. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/docs/images/ratesPlot.png +0 -0
  27. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/docs/images/savingsPlot.png +0 -0
  28. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/docs/images/sourcesPlot.png +0 -0
  29. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/docs/images/spendingPlot.png +0 -0
  30. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/docs/images/taxIncomePlot.png +0 -0
  31. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/docs/images/taxesPlot.png +0 -0
  32. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/docs/owl.pdf +0 -0
  33. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/docs/owl.tex +0 -0
  34. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/examples/case_jack+jill.toml +0 -0
  35. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/examples/case_joe.toml +0 -0
  36. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/examples/case_john+sally.toml +0 -0
  37. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/examples/case_kim+sam-bequest.toml +0 -0
  38. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/examples/case_kim+sam-spending.toml +0 -0
  39. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/examples/jack+jill.xlsx +0 -0
  40. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/examples/joe.xlsx +0 -0
  41. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/examples/john+sally.xlsx +0 -0
  42. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/examples/template.xlsx +0 -0
  43. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/notebooks/john+sally.ipynb +0 -0
  44. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/notebooks/kim+sam.ipynb +0 -0
  45. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/notebooks/template.ipynb +0 -0
  46. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/notebooks/tutorial_1.ipynb +0 -0
  47. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/notebooks/tutorial_2.ipynb +0 -0
  48. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/notebooks/tutorial_3.ipynb +0 -0
  49. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/owlplanner.cmd +0 -0
  50. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/requirements.txt +0 -0
  51. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/src/owlplanner/__init__.py +0 -0
  52. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/src/owlplanner/abcapi.py +0 -0
  53. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/src/owlplanner/config.py +0 -0
  54. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/src/owlplanner/data/__init__.py +0 -0
  55. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/src/owlplanner/data/rates.csv +0 -0
  56. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/src/owlplanner/logging.py +0 -0
  57. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/src/owlplanner/progress.py +0 -0
  58. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/src/owlplanner/rates.py +0 -0
  59. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/src/owlplanner/tax2025.py +0 -0
  60. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/src/owlplanner/timelists.py +0 -0
  61. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/src/owlplanner/utils.py +0 -0
  62. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/test.py +0 -0
  63. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/tests/test_logger.py +0 -0
  64. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/tests/test_regressions.py +0 -0
  65. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/tests/test_repro.py +0 -0
  66. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/tests/test_toml_cases.py +0 -0
  67. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/tests/test_units.py +0 -0
  68. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/ui/About_Owl.py +0 -0
  69. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/ui/Asset_Allocation.py +0 -0
  70. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/ui/Assets.py +0 -0
  71. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/ui/Create_Case.py +0 -0
  72. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/ui/Documentation.py +0 -0
  73. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/ui/Fixed_Income.py +0 -0
  74. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/ui/Graphs.py +0 -0
  75. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/ui/Historical_Range.py +0 -0
  76. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/ui/Logs.py +0 -0
  77. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/ui/Monte_Carlo.py +0 -0
  78. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/ui/Optimization_Parameters.py +0 -0
  79. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/ui/Output_Files.py +0 -0
  80. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/ui/Quick_Start.py +0 -0
  81. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/ui/README.md +0 -0
  82. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/ui/Rates_Selection.py +0 -0
  83. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/ui/Settings.py +0 -0
  84. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/ui/Wages_And_Contributions.py +0 -0
  85. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/ui/Worksheets.py +0 -0
  86. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/ui/main.py +0 -0
  87. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/ui/owlbridge.py +0 -0
  88. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/ui/plots.py +0 -0
  89. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/ui/progress.py +0 -0
  90. {owlplanner-2025.2.10 → owlplanner-2025.2.11}/ui/sskeys.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: owlplanner
3
- Version: 2025.2.10
3
+ Version: 2025.2.11
4
4
  Summary: Owl: Retirement planner with great wisdom
5
5
  Project-URL: HomePage, https://github.com/mdlacasse/owl
6
6
  Project-URL: Repository, https://github.com/mdlacasse/owl
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "owlplanner"
7
- version = "2025.02.10"
7
+ version = "2025.02.11"
8
8
  authors = [
9
9
  { name="Martin-D. Lacasse", email="martin.d.lacasse@gmail.com" },
10
10
  ]
@@ -463,7 +463,8 @@ class Plan(object):
463
463
  assert 0 <= phi[j] <= 1, "Fractions must be between 0 and 1."
464
464
 
465
465
  self.phi_j = np.array(phi, dtype=np.float32)
466
- self.mylog.vprint(f"Spousal beneficiary fractions set to {phi}.")
466
+ self.mylog.vprint("Spousal beneficiary fractions set to",
467
+ ["{:.2f}".format(self.phi_j[j]) for j in range(self.N_j)])
467
468
  self.caseStatus = "modified"
468
469
 
469
470
  if np.any(self.phi_j != 1):
@@ -493,7 +494,8 @@ class Plan(object):
493
494
  fac = u.getUnits(units)
494
495
  amounts = u.rescale(amounts, fac)
495
496
 
496
- self.mylog.vprint("Setting pension of", [u.d(amounts[i]) for i in range(self.N_i)], "at age(s)", ages)
497
+ self.mylog.vprint("Setting pension of", [u.d(amounts[i]) for i in range(self.N_i)],
498
+ "at age(s)", [int(ages[i]) for i in range(self.N_i)])
497
499
 
498
500
  thisyear = date.today().year
499
501
  # Use zero array freshly initialized.
@@ -525,10 +527,8 @@ class Plan(object):
525
527
  amounts = u.rescale(amounts, fac)
526
528
 
527
529
  self.mylog.vprint(
528
- "Setting social security benefits of",
529
- [u.d(amounts[i]) for i in range(self.N_i)],
530
- "at age(s)",
531
- ages,
530
+ "Setting social security benefits of", [u.d(amounts[i]) for i in range(self.N_i)],
531
+ "at age(s)", [int(ages[i]) for i in range(self.N_i)],
532
532
  )
533
533
 
534
534
  thisyear = date.today().year
@@ -0,0 +1 @@
1
+ __version__ = "2025.02.11"
@@ -7,4 +7,4 @@ scipy
7
7
  streamlit
8
8
  toml
9
9
  # --extra-index-url https://test.pypi.org/simple
10
- owlplanner >= 2025.02.10
10
+ owlplanner >= 2025.02.11
@@ -1 +0,0 @@
1
- __version__ = "2025.02.10"
File without changes
File without changes
File without changes
File without changes