glidepath 1.0.0__tar.gz → 1.0.2__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 (93) hide show
  1. {glidepath-1.0.0 → glidepath-1.0.2}/PKG-INFO +47 -12
  2. {glidepath-1.0.0 → glidepath-1.0.2}/README.md +45 -10
  3. {glidepath-1.0.0 → glidepath-1.0.2}/pyproject.toml +2 -2
  4. {glidepath-1.0.0 → glidepath-1.0.2}/LICENSE +0 -0
  5. {glidepath-1.0.0 → glidepath-1.0.2}/LICENSE-DATA +0 -0
  6. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/__init__.py +0 -0
  7. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/app/__init__.py +0 -0
  8. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/app/backtest.py +0 -0
  9. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/app/charts.py +0 -0
  10. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/app/copy.py +0 -0
  11. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/app/display.py +0 -0
  12. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/app/drawdown.py +0 -0
  13. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/app/example.py +0 -0
  14. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/app/exports.py +0 -0
  15. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/app/files.py +0 -0
  16. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/app/firstrun.py +0 -0
  17. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/app/forms.py +0 -0
  18. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/app/inspector.py +0 -0
  19. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/app/labels.py +0 -0
  20. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/app/montecarlo.py +0 -0
  21. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/app/outlook.py +0 -0
  22. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/app/plan.py +0 -0
  23. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/app/retirement.py +0 -0
  24. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/app/scenarios.py +0 -0
  25. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/app/shell.py +0 -0
  26. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/app/tables.py +0 -0
  27. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/core/__init__.py +0 -0
  28. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/core/annuities.py +0 -0
  29. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/core/backtest.py +0 -0
  30. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/core/comparison.py +0 -0
  31. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/core/config.py +0 -0
  32. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/core/contributions.py +0 -0
  33. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/core/engine.py +0 -0
  34. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/core/entities.py +0 -0
  35. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/core/glide.py +0 -0
  36. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/core/investments.py +0 -0
  37. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/core/money.py +0 -0
  38. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/core/montecarlo.py +0 -0
  39. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/core/pensions.py +0 -0
  40. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/core/periods.py +0 -0
  41. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/core/provenance.py +0 -0
  42. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/core/randomness.py +0 -0
  43. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/core/region.py +0 -0
  44. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/core/reporting.py +0 -0
  45. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/core/results.py +0 -0
  46. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/core/retirement.py +0 -0
  47. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/core/returns.py +0 -0
  48. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/core/scenarios.py +0 -0
  49. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/core/state_pension.py +0 -0
  50. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/core/tax.py +0 -0
  51. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/core/withdrawals.py +0 -0
  52. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/core/wrappers.py +0 -0
  53. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/gui/__init__.py +0 -0
  54. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/gui/assets/icon_128.png +0 -0
  55. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/gui/assets/icon_16.png +0 -0
  56. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/gui/assets/icon_24.png +0 -0
  57. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/gui/assets/icon_256.png +0 -0
  58. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/gui/assets/icon_32.png +0 -0
  59. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/gui/assets/icon_48.png +0 -0
  60. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/gui/assets/icon_64.png +0 -0
  61. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/gui/assets/wordmark.png +0 -0
  62. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/gui/charts.py +0 -0
  63. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/gui/forms.py +0 -0
  64. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/gui/inspector.py +0 -0
  65. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/gui/main.py +0 -0
  66. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/gui/scenarios.py +0 -0
  67. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/gui/style.py +0 -0
  68. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/gui/tableview.py +0 -0
  69. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/gui/widgets.py +0 -0
  70. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/persistence/__init__.py +0 -0
  71. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/persistence/assumptions.py +0 -0
  72. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/persistence/decode.py +0 -0
  73. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/persistence/document.py +0 -0
  74. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/persistence/encode.py +0 -0
  75. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/persistence/migrations.py +0 -0
  76. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/persistence/values.py +0 -0
  77. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/py.typed +0 -0
  78. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/regions/__init__.py +0 -0
  79. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/regions/uk/__init__.py +0 -0
  80. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/regions/uk/ages.py +0 -0
  81. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/regions/uk/contributions.py +0 -0
  82. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/regions/uk/data/age_rules.toml +0 -0
  83. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/regions/uk/data/assumptions_default.toml +0 -0
  84. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/regions/uk/data/returns_history.toml +0 -0
  85. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/regions/uk/data/tax_year_2026_27.toml +0 -0
  86. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/regions/uk/extension.py +0 -0
  87. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/regions/uk/loader.py +0 -0
  88. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/regions/uk/region.py +0 -0
  89. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/regions/uk/schema.py +0 -0
  90. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/regions/uk/state_pension.py +0 -0
  91. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/regions/uk/tax.py +0 -0
  92. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/regions/uk/wrappers.py +0 -0
  93. {glidepath-1.0.0 → glidepath-1.0.2}/src/glidepath/regions/uk/years.py +0 -0
@@ -1,13 +1,13 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: glidepath
3
- Version: 1.0.0
3
+ Version: 1.0.2
4
4
  Summary: Desktop retirement and investment planner (UK-first, region-extensible).
5
5
  Keywords: retirement,pension,financial-planning,investment,uk,sipp,isa,monte-carlo
6
6
  Author: James Williams
7
7
  License-Expression: MIT AND CC-BY-NC-SA-4.0
8
8
  License-File: LICENSE
9
9
  License-File: LICENSE-DATA
10
- Classifier: Development Status :: 4 - Beta
10
+ Classifier: Development Status :: 5 - Production/Stable
11
11
  Classifier: Environment :: Win32 (MS Windows)
12
12
  Classifier: Environment :: X11 Applications :: Qt
13
13
  Classifier: Intended Audience :: End Users/Desktop
@@ -130,19 +130,45 @@ It is not financial advice and is not regulated; its outputs depend on
130
130
  assumptions that will not match reality. Do not make financial decisions
131
131
  based solely on this tool.
132
132
 
133
- ## Run
133
+ ## Install
134
134
 
135
- Requires only [uv](https://docs.astral.sh/uv/). Install the latest
136
- release [from PyPI](https://pypi.org/project/glidepath/) and launch it:
135
+ Glidepath is installed from [PyPI](https://pypi.org/project/glidepath/)
136
+ with [uv](https://docs.astral.sh/uv/), which also fetches the Python it
137
+ needs — you do not need Python installed first.
137
138
 
138
- ```sh
139
- uv tool install glidepath
140
- glidepath
141
- ```
139
+ 1. **Install uv.** Windows (PowerShell):
140
+
141
+ ```powershell
142
+ powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
143
+ ```
144
+
145
+ macOS or Linux:
146
+
147
+ ```sh
148
+ curl -LsSf https://astral.sh/uv/install.sh | sh
149
+ ```
150
+
151
+ Close and reopen the terminal, then check `uv --version` prints a
152
+ version.
142
153
 
143
- (`pipx install glidepath` works too. Glidepath is a desktop app
144
- distributed through PyPI, not a library — importing `glidepath`
145
- modules is not a supported API.)
154
+ 2. **Install glidepath:**
155
+
156
+ ```sh
157
+ uv tool install glidepath
158
+ ```
159
+
160
+ 3. **Launch it:**
161
+
162
+ ```sh
163
+ glidepath
164
+ ```
165
+
166
+ If the shell cannot find `glidepath` afterwards, run
167
+ `uv tool update-shell` once and reopen the terminal. Upgrade to a new
168
+ release later with `uv tool upgrade glidepath`. (`pipx install
169
+ glidepath` works too. Glidepath is a desktop app distributed through
170
+ PyPI, not a library — importing `glidepath` modules is not a supported
171
+ API.)
146
172
 
147
173
  Or run straight from a checkout:
148
174
 
@@ -164,6 +190,15 @@ use glidepath" walks through every tab. Save your plan from the File
164
190
  menu as a `.glidepath.json` file you own, stored wherever you choose;
165
191
  the next launch reopens your last plan automatically.
166
192
 
193
+ ## User guide
194
+
195
+ [`docs/getting-started.md`](https://github.com/williajm/glidepath/blob/main/docs/getting-started.md)
196
+ walks through the app step by step: installing on a machine with
197
+ nothing on it, what to gather before you start, entering it on the
198
+ Facts tab, reading the projection, and changing the assumptions behind
199
+ it — the growth rate, inflation, fees, the planning horizon — on the
200
+ Stated vs assumed tab.
201
+
167
202
  ## Developing
168
203
 
169
204
  Development additionally requires GNU Make, which drives every workflow
@@ -102,19 +102,45 @@ It is not financial advice and is not regulated; its outputs depend on
102
102
  assumptions that will not match reality. Do not make financial decisions
103
103
  based solely on this tool.
104
104
 
105
- ## Run
105
+ ## Install
106
106
 
107
- Requires only [uv](https://docs.astral.sh/uv/). Install the latest
108
- release [from PyPI](https://pypi.org/project/glidepath/) and launch it:
107
+ Glidepath is installed from [PyPI](https://pypi.org/project/glidepath/)
108
+ with [uv](https://docs.astral.sh/uv/), which also fetches the Python it
109
+ needs — you do not need Python installed first.
109
110
 
110
- ```sh
111
- uv tool install glidepath
112
- glidepath
113
- ```
111
+ 1. **Install uv.** Windows (PowerShell):
112
+
113
+ ```powershell
114
+ powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
115
+ ```
116
+
117
+ macOS or Linux:
118
+
119
+ ```sh
120
+ curl -LsSf https://astral.sh/uv/install.sh | sh
121
+ ```
122
+
123
+ Close and reopen the terminal, then check `uv --version` prints a
124
+ version.
114
125
 
115
- (`pipx install glidepath` works too. Glidepath is a desktop app
116
- distributed through PyPI, not a library — importing `glidepath`
117
- modules is not a supported API.)
126
+ 2. **Install glidepath:**
127
+
128
+ ```sh
129
+ uv tool install glidepath
130
+ ```
131
+
132
+ 3. **Launch it:**
133
+
134
+ ```sh
135
+ glidepath
136
+ ```
137
+
138
+ If the shell cannot find `glidepath` afterwards, run
139
+ `uv tool update-shell` once and reopen the terminal. Upgrade to a new
140
+ release later with `uv tool upgrade glidepath`. (`pipx install
141
+ glidepath` works too. Glidepath is a desktop app distributed through
142
+ PyPI, not a library — importing `glidepath` modules is not a supported
143
+ API.)
118
144
 
119
145
  Or run straight from a checkout:
120
146
 
@@ -136,6 +162,15 @@ use glidepath" walks through every tab. Save your plan from the File
136
162
  menu as a `.glidepath.json` file you own, stored wherever you choose;
137
163
  the next launch reopens your last plan automatically.
138
164
 
165
+ ## User guide
166
+
167
+ [`docs/getting-started.md`](https://github.com/williajm/glidepath/blob/main/docs/getting-started.md)
168
+ walks through the app step by step: installing on a machine with
169
+ nothing on it, what to gather before you start, entering it on the
170
+ Facts tab, reading the projection, and changing the assumptions behind
171
+ it — the growth rate, inflation, fees, the planning horizon — on the
172
+ Stated vs assumed tab.
173
+
139
174
  ## Developing
140
175
 
141
176
  Development additionally requires GNU Make, which drives every workflow
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "glidepath"
3
- version = "1.0.0"
3
+ version = "1.0.2"
4
4
  description = "Desktop retirement and investment planner (UK-first, region-extensible)."
5
5
  readme = "README.md"
6
6
  # MIT code plus one CC BY-NC-SA 4.0 data file (returns_history.toml —
@@ -22,7 +22,7 @@ keywords = [
22
22
  # No License :: classifier — PEP 639: the SPDX expression above is the
23
23
  # license metadata, and mixing it with license classifiers is deprecated.
24
24
  classifiers = [
25
- "Development Status :: 4 - Beta",
25
+ "Development Status :: 5 - Production/Stable",
26
26
  "Environment :: Win32 (MS Windows)",
27
27
  "Environment :: X11 Applications :: Qt",
28
28
  "Intended Audience :: End Users/Desktop",
File without changes
File without changes