backlogops 0.1__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.
@@ -0,0 +1,238 @@
1
+ Metadata-Version: 2.4
2
+ Name: backlogops
3
+ Version: 0.1
4
+ Summary: Library with backlog operations.
5
+ Author: Tom Björkholm
6
+ Author-email: Tom Björkholm <klausuler_linnet0q@icloud.com>
7
+ License-Expression: MIT
8
+ Project-URL: Homepage, https://bitbucket.org/tom-bjorkholm/backlog-ops
9
+ Project-URL: Source code, https://bitbucket.org/tom-bjorkholm/backlog-ops
10
+ Project-URL: Documentation, https://bitbucket.org/tom-bjorkholm/backlog-ops/src/master/doc/
11
+ Keywords: backlog,release planning,agile,scrum,scheduling,roadmap,project management,product owner,product management
12
+ Classifier: Programming Language :: Python :: 3
13
+ Classifier: Programming Language :: Python :: 3.12
14
+ Classifier: Programming Language :: Python :: 3.13
15
+ Classifier: Programming Language :: Python :: 3.14
16
+ Classifier: Operating System :: OS Independent
17
+ Classifier: Development Status :: 3 - Alpha
18
+ Classifier: Intended Audience :: Developers
19
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
20
+ Classifier: Topic :: Office/Business :: Scheduling
21
+ Requires-Python: >=3.12
22
+ Description-Content-Type: text/markdown
23
+ License-File: LICENSE.txt
24
+ Requires-Dist: config-as-json>=1.2
25
+ Requires-Dist: tableio>=1.0
26
+ Requires-Dist: tableio-cfg-json>=0.4
27
+ Requires-Dist: versionreporter>=0.2
28
+ Dynamic: author
29
+ Dynamic: license-file
30
+ Dynamic: requires-dist
31
+ Dynamic: requires-python
32
+
33
+ # backlogops
34
+
35
+ There are 3 related packages for backlog operations:
36
+
37
+ - backlogops: a collection of library functions to manipulate backlogs
38
+
39
+ - backlogops-cli: command line interface to use the functions in the library.
40
+ This is just a thin wrapper around the library functions. It serves a dual
41
+ purpose as both an example of how to use the library and as a tool for the
42
+ user to use the library.
43
+
44
+ - backlogops-gui: graphical user interface to use the functions in the library.
45
+ It is based on TkInter. The ambition is to keep it as a thin wrapper around
46
+ the library.
47
+
48
+ ## Available functionality
49
+
50
+ The following functionality is available in all 3 packages:
51
+
52
+ - Reading backlog and releases from file types that TableIO supports reading
53
+ from (Currently CSV, Excel, and ODS).
54
+
55
+ - Writing backlog and releases to file types that TableIO supports writing to
56
+ (Currently CSV, Excel, ODS and 9 other file formats).
57
+
58
+ - File format is detected from the file extension, but may be overridden.
59
+
60
+ - Adjust release content to fit the planned release dates.
61
+
62
+ - Create a demonstration backlog and releases (for exploring the features).
63
+
64
+ - Estimate ready date for the backlog items based on available teams, team
65
+ velocity, vacation dates, periods with half time work, etc.
66
+
67
+ - Extract backlog keys at given backlog item levels.
68
+
69
+ - Reorder the backlog so that the dependencies are satisfied.
70
+
71
+ - Reorder the backlog so that items identified by keys in a list come first. If
72
+ the key is at a higher level it will bring all items it is a parent of in
73
+ front of it (recursively).
74
+
75
+ - Set planned release dates from the estimated release dates.
76
+
77
+ - Calculate the release dates from the backlog items estimated ready dates, with
78
+ a configurable buffer time.
79
+
80
+ - Validate the backlog and releases for consistency.
81
+
82
+ - A wizard to create an available teams configuration.
83
+
84
+ ## The operating model
85
+
86
+ The operating model that most of the functionality is designed for is that the
87
+ teams work off a single backlog in the order of the backlog. The backlog items
88
+ are ordered by priority and dependencies to allow the teams to work in the
89
+ backlog order. Each backlog item and each release may have a planned ready date,
90
+ that records what has been communicated to the customer. Each backlog item and
91
+ each release may have an estimated ready date, that is calculated from the
92
+ current backlog state, the team velocity, and what we know about the
93
+ availability of the team members.
94
+
95
+ ## The backlog item fields
96
+
97
+ Each backlog item has the following fields that are used by the algorithms in
98
+ the library:
99
+
100
+ - key: The key of the backlog item. Required. Must be unique. Must not be empty,
101
+ must not contain whitespace and must not contain any of the characters , . ; :
102
+ ( ) \[ \] \{ \}.
103
+
104
+ - level: The level of the backlog item. Required. Must be an integer.
105
+
106
+ - title: The title of the backlog item. Required.
107
+
108
+ - story_points: The story points of the backlog item. Required.
109
+
110
+ - status: The status of the backlog item. Required.
111
+
112
+ - parent_key: The key of the parent backlog item. Optional. Must exist as a key
113
+ in the backlog. Parent keys are used to build the hierarchy of the backlog.
114
+ The parent key must be at a higher level than the current item. Parent keys
115
+ introduce implicit dependencies between items: the current item cannot start
116
+ before the parent item starts, and the parent item cannot finish before all
117
+ its children have finished.
118
+
119
+ - release: The release of the backlog item. Optional. Follows the same character
120
+ rules as the key. Must not be empty string.
121
+
122
+ - team: The team responsible for the backlog item. Optional. Must not be empty
123
+ string. Must be a valid team name. If None the item can be done by any team.
124
+ If not None. the item can only be done by the specified team.
125
+
126
+ - depends_on_f2s: The list of keys of the backlog items that must have been
127
+ finished before the current item can start. May be empty.
128
+
129
+ - depends_on_f2f: The list of keys of the backlog items that must have been
130
+ finished before the current item can finish. May be empty.
131
+
132
+ - depends_on_s2s: The list of keys of the backlog items that must have been
133
+ started before the current item can start. May be empty.
134
+
135
+ - planned_ready_date: The planned ready date of the backlog item. The date that
136
+ is communicated to the customer. Optional.
137
+
138
+ - estimated_ready_date: The estimated ready date of the backlog item. Optional.
139
+
140
+ Additionally each backlog item can have any number of other fields.
141
+
142
+ ## Installing backlogops
143
+
144
+ ### On macOS and Linux
145
+
146
+ To install backlogops on macOS and Linux, run the following command:
147
+
148
+ ````sh
149
+ pip3 install --upgrade backlogops
150
+ ````
151
+
152
+ ### On Microsoft Windows
153
+
154
+ To install backlogops on Microsoft Windows, run the following command:
155
+
156
+ ````sh
157
+ pip install --upgrade backlogops
158
+ ````
159
+
160
+ ## API documentation
161
+
162
+ For more detailed code documentation, see the API documentation:
163
+
164
+ - [Library public API](https://bitbucket.org/tom-bjorkholm/backlog-ops/src/master/doc/backlogops_api.md)
165
+
166
+ - [Library protected API](https://bitbucket.org/tom-bjorkholm/backlog-ops/src/master/doc/backlogops_protected_api.md)
167
+
168
+ - [Library public CLI](https://bitbucket.org/tom-bjorkholm/backlog-ops/src/master/doc/backlogops_cli.md)
169
+
170
+ - [Library protected CLI](https://bitbucket.org/tom-bjorkholm/backlog-ops/src/master/doc/backlogops_protected_cli.md)
171
+
172
+ - [Library public GUI](https://bitbucket.org/tom-bjorkholm/backlog-ops/src/master/doc/backlogops_gui.md)
173
+
174
+ - [Library protected GUI](https://bitbucket.org/tom-bjorkholm/backlog-ops/src/master/doc/backlogops_protected_gui.md)
175
+
176
+ ## Library main entry points
177
+
178
+ All names an application programmer is most likely to need are
179
+ re-exported from the top-level `backlogops` package, so they can be
180
+ imported directly, for example:
181
+
182
+ ````python
183
+ from backlogops import (
184
+ read_backlog_releases, order_by_dependencies, estimate_ready_date,
185
+ get_demo_backlog)
186
+ ````
187
+
188
+ ### Core data model
189
+
190
+ - `Backlog`, `BacklogItem`, `Status`: the backlog and its items.
191
+
192
+ - `Releases`, `Release`: the planned releases.
193
+
194
+ - `BacklogReleases`: a backlog together with its releases.
195
+
196
+ - `AvailableTeams`, `Team`, `Person`, `Membership`: the workforce that
197
+ the date estimation uses.
198
+
199
+ ### Reading and writing
200
+
201
+ - `read_backlog_releases`, `write_backlog_releases`: read and write a
202
+ backlog and its releases from and to a table file.
203
+
204
+ - `read_available_teams`, `write_available_teams`: read and write the
205
+ available-teams configuration.
206
+
207
+ - `read_key_list`, `write_key_list`: read and write a list of keys.
208
+
209
+ - `get_demo_backlog`: create a demonstration backlog and releases.
210
+
211
+ ### Operations
212
+
213
+ - `order_by_dependencies`: reorder the backlog so that dependencies are
214
+ satisfied.
215
+
216
+ - `move_keys_first`: reorder so that listed keys (and their children)
217
+ come first.
218
+
219
+ - `estimate_ready_date`, `set_plan_from_estimate`: estimate ready dates
220
+ and set planned dates from the estimate.
221
+
222
+ - `estimate_release_dates`, `release_plan_on_estimate`,
223
+ `adjust_release_content`: estimate and plan release dates, and adjust
224
+ release content to fit the planned dates.
225
+
226
+ - `check_backlog_consistency`: validate the backlog and releases for
227
+ consistency.
228
+
229
+ For the full set of public names see the API documentation linked above.
230
+
231
+ ## Test summary
232
+
233
+ - Test result: 1066 passed in 16s
234
+ - No flake8 warnings.
235
+ - No mypy errors found.
236
+ - No python layout warnings.
237
+ - Built version(s): 0.1
238
+ - Build and test using Python 3.14.6
@@ -0,0 +1,34 @@
1
+ backlogops/__init__.py,sha256=2T91n4MnG6phui4pn_AyVc8zXhsuqlkQlcsmFZU0Ick,4552
2
+ backlogops/apply_format_rules.py,sha256=_5azzJMRxk47JFaVBsa5KSI-tFJXlG0WrUiIGuTgSU0,3554
3
+ backlogops/available_teams.py,sha256=7ROS0hSaUqL5xnm-CnF7eH2HVszC2qgUxxwyLY-ARrA,8828
4
+ backlogops/available_teams_config.py,sha256=0n1zD7laF5G2J1Hym8gmN93hGDH5-AyRAjPBLM4R7Pk,22441
5
+ backlogops/available_teams_wizard.py,sha256=yf2nogpDnbVbRSgmD5EClcE254G0lZ1vo9FCZ9NyMkU,18528
6
+ backlogops/backlog.py,sha256=OP1uY0RLiPjHH8TgcgiYUOQcOy9GaD2vVpPbDSOFCXY,19128
7
+ backlogops/backlog_helpers.py,sha256=QZoyzSpCmgX_juo-nVRYOF-R-J-uwQZr03bhEj42DCc,24247
8
+ backlogops/backlog_releases.py,sha256=gJO8cngsoM4C_gmFzAXvCohCmi1_1zgVMcxwdGrpIUI,13382
9
+ backlogops/backlog_releases_io.py,sha256=t6TEKZA2IM7zSOmRM_4x-4LCjm1Ivm0odR9d4YudMpw,9177
10
+ backlogops/console_yes_no_bridge.py,sha256=Li12__Cb35lGIPCV4c7-M-ABQ6BYAktN0nlU8h2GvuE,1664
11
+ backlogops/date_ranges.py,sha256=fwQuh7k-KTfVGKucHrXUr7cvgujgL-eAFBBXYmVrnuM,2134
12
+ backlogops/demo_backlog.py,sha256=xcJJt2avp_2F3yzR1W7bXxAhTbAdtyPTBVfc1UmsyY0,4817
13
+ backlogops/estimate_ready_date.py,sha256=FEY6apg04JI_gM7wbJIuM2PBSEA_gNBQCOgbCq8K6rQ,15434
14
+ backlogops/format_rules.py,sha256=tzSMi1YPXNHquwvctLl5Qcuv2zuYOWf5SnrAmzJn8wg,2616
15
+ backlogops/io_config.py,sha256=V4t14IleJ6eO6YcykORmKfPdsqS0ArWnhMTI5WRa91E,12089
16
+ backlogops/key_list_io.py,sha256=TbQoDBMMqTBVjZuAvGNM_AUc19-ANV9WmOqzTkOmNsI,9517
17
+ backlogops/levels.py,sha256=0nA1t-rdjcU4p2HxSYVWzoIJDGH40FdmS9mtPtjOhbk,6561
18
+ backlogops/move_keys_first.py,sha256=xCMUv_Z-yvs2JmrstepMxosZxRfh_teiWhF2JL9y0VM,6861
19
+ backlogops/no_text_io.py,sha256=0mC5ktLyvOTZL0W-w1oDkNHrcllEWde_RvjcjhR5k9Q,2594
20
+ backlogops/order_by_dependencies.py,sha256=OgOpa0wnPguSUd8hHLm9h4orDKoXQyWhgH6KBKdh7gM,15759
21
+ backlogops/person.py,sha256=vjL45iDKR-6vrajZSw9x1WjC_98HrF20UI94BdNnZ00,749
22
+ backlogops/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
23
+ backlogops/release_backlog_updates.py,sha256=3IyirXo2G2Y4BJNKUN_yPmfNZVV2z8gW1rDwTJtup20,8996
24
+ backlogops/release_change_io.py,sha256=TlYC-uDEw-Hn_AK-RxLEDQ91wMKnrW__Hu8Oj3DOFo4,5211
25
+ backlogops/releases.py,sha256=g5I9htddip697N67Lh-nvetLSVlPXn6VPWffnRRcNw4,6382
26
+ backlogops/table_create.py,sha256=5iEEQ5bm4EoGPrJZlEFJuWB9sVpOAYATaLp1htXsGJU,1811
27
+ backlogops/table_rows.py,sha256=bEQNAnYLGM_mNClFslooecsa_Q29YkcEfk0UUVkV4gY,4474
28
+ backlogops/team.py,sha256=3rk7-nPxSaiaB2EiDXv00X47h63F-g8sNPjUi0CDJvM,7966
29
+ backlogops/work_hours.py,sha256=dpzKFLtjeTpThKk6lWeGvss5zpm6MzSFwKa45rXUH_4,5951
30
+ backlogops-0.1.dist-info/licenses/LICENSE.txt,sha256=YbzYf1byKHV7rKnb_zN_ouS8n9ttzGcYHpfTdTf-dPk,1072
31
+ backlogops-0.1.dist-info/METADATA,sha256=3GCzoNUUXUqlaBs_mHAioTaBWFCfShmy8sk7NQ2t4pM,8694
32
+ backlogops-0.1.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
33
+ backlogops-0.1.dist-info/top_level.txt,sha256=KXiJZCfBVeb2m5OQQ8lrxKFeJ-bZ9qP1WjheMtwd_6I,11
34
+ backlogops-0.1.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (82.0.1)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,22 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Tom Björkholm
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.
22
+
@@ -0,0 +1 @@
1
+ backlogops