backlogops 0.1__tar.gz → 0.3__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 (71) hide show
  1. {backlogops-0.1 → backlogops-0.3}/PKG-INFO +116 -42
  2. backlogops-0.3/README_pypi.md +277 -0
  3. {backlogops-0.1 → backlogops-0.3}/backlogops.egg-info/PKG-INFO +116 -42
  4. {backlogops-0.1 → backlogops-0.3}/backlogops.egg-info/SOURCES.txt +24 -2
  5. backlogops-0.3/backlogops.egg-info/requires.txt +6 -0
  6. {backlogops-0.1 → backlogops-0.3}/pyproject.toml +6 -5
  7. {backlogops-0.1 → backlogops-0.3}/setup.py +7 -6
  8. backlogops-0.3/src/backlogops/__init__.py +165 -0
  9. {backlogops-0.1 → backlogops-0.3}/src/backlogops/available_teams_config.py +4 -153
  10. {backlogops-0.1 → backlogops-0.3}/src/backlogops/backlog.py +51 -7
  11. {backlogops-0.1 → backlogops-0.3}/src/backlogops/backlog_helpers.py +68 -6
  12. backlogops-0.3/src/backlogops/backlog_in_release_order.py +255 -0
  13. backlogops-0.3/src/backlogops/backlog_ops_config.py +451 -0
  14. backlogops-0.3/src/backlogops/backlog_ops_wizard.py +305 -0
  15. {backlogops-0.1 → backlogops-0.3}/src/backlogops/backlog_releases.py +54 -1
  16. backlogops-0.3/src/backlogops/backlog_releases_io.py +296 -0
  17. backlogops-0.3/src/backlogops/blo_version_reporter.py +40 -0
  18. backlogops-0.3/src/backlogops/io_config.py +590 -0
  19. backlogops-0.3/src/backlogops/io_preset_wizard.py +148 -0
  20. backlogops-0.3/src/backlogops/jira_connect.py +105 -0
  21. backlogops-0.3/src/backlogops/jira_io_config.py +787 -0
  22. backlogops-0.3/src/backlogops/jira_order_releases.py +202 -0
  23. backlogops-0.3/src/backlogops/jira_rank_backlog.py +251 -0
  24. backlogops-0.3/src/backlogops/jira_rank_by_keys.py +165 -0
  25. backlogops-0.3/src/backlogops/jira_rank_move_keys.py +273 -0
  26. backlogops-0.3/src/backlogops/jira_read.py +372 -0
  27. backlogops-0.3/src/backlogops/jira_rename_releases.py +214 -0
  28. backlogops-0.3/src/backlogops/jira_token.py +76 -0
  29. backlogops-0.3/src/backlogops/jira_update_backlog.py +629 -0
  30. backlogops-0.3/src/backlogops/jira_update_releases.py +229 -0
  31. backlogops-0.3/src/backlogops/jira_wizard.py +246 -0
  32. backlogops-0.3/src/backlogops/jira_write.py +927 -0
  33. backlogops-0.3/src/backlogops/jira_write_fields.py +167 -0
  34. backlogops-0.3/src/backlogops/jira_write_format.py +101 -0
  35. backlogops-0.3/src/backlogops/jira_write_releases.py +327 -0
  36. {backlogops-0.1 → backlogops-0.3}/src/backlogops/key_list_io.py +36 -23
  37. {backlogops-0.1 → backlogops-0.3}/src/backlogops/levels.py +77 -13
  38. backlogops-0.3/src/backlogops/name_list_io.py +68 -0
  39. {backlogops-0.1 → backlogops-0.3}/src/backlogops/order_by_dependencies.py +24 -0
  40. {backlogops-0.1 → backlogops-0.3}/src/backlogops/release_change_io.py +25 -20
  41. {backlogops-0.1 → backlogops-0.3}/src/backlogops/releases.py +40 -15
  42. backlogops-0.3/src/backlogops/rename_list_io.py +135 -0
  43. backlogops-0.3/src/backlogops/table_create.py +98 -0
  44. backlogops-0.3/src/backlogops/table_rows.py +294 -0
  45. backlogops-0.3/src/backlogops/wizard_helpers.py +993 -0
  46. backlogops-0.1/README_pypi.md +0 -206
  47. backlogops-0.1/backlogops.egg-info/requires.txt +0 -4
  48. backlogops-0.1/src/backlogops/__init__.py +0 -87
  49. backlogops-0.1/src/backlogops/available_teams_wizard.py +0 -448
  50. backlogops-0.1/src/backlogops/backlog_releases_io.py +0 -200
  51. backlogops-0.1/src/backlogops/console_yes_no_bridge.py +0 -45
  52. backlogops-0.1/src/backlogops/io_config.py +0 -277
  53. backlogops-0.1/src/backlogops/table_create.py +0 -47
  54. backlogops-0.1/src/backlogops/table_rows.py +0 -125
  55. {backlogops-0.1 → backlogops-0.3}/LICENSE.txt +0 -0
  56. {backlogops-0.1 → backlogops-0.3}/backlogops.egg-info/dependency_links.txt +0 -0
  57. {backlogops-0.1 → backlogops-0.3}/backlogops.egg-info/top_level.txt +0 -0
  58. {backlogops-0.1 → backlogops-0.3}/setup.cfg +0 -0
  59. {backlogops-0.1 → backlogops-0.3}/src/backlogops/apply_format_rules.py +0 -0
  60. {backlogops-0.1 → backlogops-0.3}/src/backlogops/available_teams.py +0 -0
  61. {backlogops-0.1 → backlogops-0.3}/src/backlogops/date_ranges.py +0 -0
  62. {backlogops-0.1 → backlogops-0.3}/src/backlogops/demo_backlog.py +0 -0
  63. {backlogops-0.1 → backlogops-0.3}/src/backlogops/estimate_ready_date.py +0 -0
  64. {backlogops-0.1 → backlogops-0.3}/src/backlogops/format_rules.py +0 -0
  65. {backlogops-0.1 → backlogops-0.3}/src/backlogops/move_keys_first.py +0 -0
  66. {backlogops-0.1 → backlogops-0.3}/src/backlogops/no_text_io.py +0 -0
  67. {backlogops-0.1 → backlogops-0.3}/src/backlogops/person.py +0 -0
  68. {backlogops-0.1 → backlogops-0.3}/src/backlogops/py.typed +0 -0
  69. {backlogops-0.1 → backlogops-0.3}/src/backlogops/release_backlog_updates.py +0 -0
  70. {backlogops-0.1 → backlogops-0.3}/src/backlogops/team.py +0 -0
  71. {backlogops-0.1 → backlogops-0.3}/src/backlogops/work_hours.py +0 -0
@@ -1,13 +1,13 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: backlogops
3
- Version: 0.1
3
+ Version: 0.3
4
4
  Summary: Library with backlog operations.
5
5
  Author: Tom Björkholm
6
6
  Author-email: Tom Björkholm <klausuler_linnet0q@icloud.com>
7
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/
8
+ Project-URL: Homepage, https://github.com/tom-bjorkholm/backlog-ops
9
+ Project-URL: Source code, https://github.com/tom-bjorkholm/backlog-ops
10
+ Project-URL: Documentation, https://github.com/tom-bjorkholm/backlog-ops/blob/master/doc/
11
11
  Keywords: backlog,release planning,agile,scrum,scheduling,roadmap,project management,product owner,product management
12
12
  Classifier: Programming Language :: Python :: 3
13
13
  Classifier: Programming Language :: Python :: 3.12
@@ -18,13 +18,16 @@ Classifier: Development Status :: 3 - Alpha
18
18
  Classifier: Intended Audience :: Developers
19
19
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
20
20
  Classifier: Topic :: Office/Business :: Scheduling
21
+ Classifier: Typing :: Typed
21
22
  Requires-Python: >=3.12
22
23
  Description-Content-Type: text/markdown
23
24
  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
25
+ Requires-Dist: config-as-json>=1.4
26
+ Requires-Dist: cryptography>=49.0.0
27
+ Requires-Dist: jira[cli,opt]>=3.10.5
28
+ Requires-Dist: tableio>=1.1
29
+ Requires-Dist: tableio-cfg-json>=0.8
30
+ Requires-Dist: versionreporter>=0.4
28
31
  Dynamic: author
29
32
  Dynamic: license-file
30
33
  Dynamic: requires-dist
@@ -34,16 +37,17 @@ Dynamic: requires-python
34
37
 
35
38
  There are 3 related packages for backlog operations:
36
39
 
37
- - backlogops: a collection of library functions to manipulate backlogs
40
+ - **[backlogops](https://pypi.org/project/backlogops/)** a collection of library
41
+ functions to manipulate backlogs
38
42
 
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
+ - **[backlogops-cli](https://pypi.org/project/backlogops-cli/)** command line
44
+ interface to use the functions in the library. This is just a thin wrapper
45
+ around the library functions. It serves a dual purpose as both an example of
46
+ how to use the library and as a tool for the user to use the library.
43
47
 
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.
48
+ - **[backlogops-gui](https://pypi.org/project/backlogops-gui/)** graphical user
49
+ interface to use the functions in the library. It is based on TkInter. The
50
+ ambition is to keep it as a thin wrapper around the library.
47
51
 
48
52
  ## Available functionality
49
53
 
@@ -72,6 +76,9 @@ The following functionality is available in all 3 packages:
72
76
  the key is at a higher level it will bring all items it is a parent of in
73
77
  front of it (recursively).
74
78
 
79
+ - Reorder the backlog in release order, optionally taking dependencies into
80
+ account.
81
+
75
82
  - Set planned release dates from the estimated release dates.
76
83
 
77
84
  - Calculate the release dates from the backlog items estimated ready dates, with
@@ -79,7 +86,40 @@ The following functionality is available in all 3 packages:
79
86
 
80
87
  - Validate the backlog and releases for consistency.
81
88
 
82
- - A wizard to create an available teams configuration.
89
+ - Convert a backlog and releases between table file formats.
90
+
91
+ - Order the releases by their planned or estimated date.
92
+
93
+ - Rename columns when reading a file and when writing a file.
94
+
95
+ - Map custom status names in input files to backlog item statuses.
96
+
97
+ - Choose how backlog item levels are written: by number, by name, or both, and
98
+ configure custom level names.
99
+
100
+ - Create stand-alone input or output preset configuration files.
101
+
102
+ - Migrate an older configuration or preset file to the current file format.
103
+
104
+ - A wizard to create a backlog-ops configuration file with the workforce, named
105
+ input and output presets, level names, and status name mapping.
106
+
107
+ - Read a backlog and releases from Jira into a backlog and release table.
108
+
109
+ - Write a backlog to Jira, creating a new Jira issue for each backlog item.
110
+
111
+ - Update a backlog that is already in Jira, changing only the chosen columns.
112
+
113
+ - Add the releases to Jira as Jira versions.
114
+
115
+ - Update the releases in Jira, setting their dates to the planned release dates.
116
+
117
+ - Order the releases in Jira by date, by a name list, or by the input order.
118
+
119
+ - Rename releases in Jira, changing the Jira version names.
120
+
121
+ - Move backlog items to a chosen anchor in the Jira rank order, following a key
122
+ list.
83
123
 
84
124
  ## The operating model
85
125
 
@@ -97,45 +137,46 @@ availability of the team members.
97
137
  Each backlog item has the following fields that are used by the algorithms in
98
138
  the library:
99
139
 
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
- ( ) \[ \] \{ \}.
140
+ - `key` The key of the backlog item. Required. Must be unique. Must not be
141
+ empty, must not contain whitespace and must not contain any of the characters
142
+ , . ; : ( ) \[ \] \{ \}.
103
143
 
104
- - level: The level of the backlog item. Required. Must be an integer.
144
+ - `level` The level of the backlog item. Required. Must be an integer.
105
145
 
106
- - title: The title of the backlog item. Required.
146
+ - `title` The title of the backlog item. Required.
107
147
 
108
- - story_points: The story points of the backlog item. Required.
148
+ - `story_points` The story points of the backlog item. Required.
109
149
 
110
- - status: The status of the backlog item. Required.
150
+ - `status` The status of the backlog item. Required.
111
151
 
112
- - parent_key: The key of the parent backlog item. Optional. Must exist as a key
152
+ - `parent_key` The key of the parent backlog item. Optional. Must exist as a key
113
153
  in the backlog. Parent keys are used to build the hierarchy of the backlog.
114
154
  The parent key must be at a higher level than the current item. Parent keys
115
155
  introduce implicit dependencies between items: the current item cannot start
116
156
  before the parent item starts, and the parent item cannot finish before all
117
157
  its children have finished.
118
158
 
119
- - release: The release of the backlog item. Optional. Follows the same character
120
- rules as the key. Must not be empty string.
159
+ - `release` The release of the backlog item. Optional. Must not be empty string,
160
+ must not start or end with whitespace, and must not contain tabs, newlines or
161
+ control characters.
121
162
 
122
- - team: The team responsible for the backlog item. Optional. Must not be empty
163
+ - `team` The team responsible for the backlog item. Optional. Must not be empty
123
164
  string. Must be a valid team name. If None the item can be done by any team.
124
165
  If not None. the item can only be done by the specified team.
125
166
 
126
- - depends_on_f2s: The list of keys of the backlog items that must have been
167
+ - `depends_on_f2s` The list of keys of the backlog items that must have been
127
168
  finished before the current item can start. May be empty.
128
169
 
129
- - depends_on_f2f: The list of keys of the backlog items that must have been
170
+ - `depends_on_f2f` The list of keys of the backlog items that must have been
130
171
  finished before the current item can finish. May be empty.
131
172
 
132
- - depends_on_s2s: The list of keys of the backlog items that must have been
173
+ - `depends_on_s2s` The list of keys of the backlog items that must have been
133
174
  started before the current item can start. May be empty.
134
175
 
135
- - planned_ready_date: The planned ready date of the backlog item. The date that
176
+ - `planned_ready_date` The planned ready date of the backlog item. The date that
136
177
  is communicated to the customer. Optional.
137
178
 
138
- - estimated_ready_date: The estimated ready date of the backlog item. Optional.
179
+ - `estimated_ready_date` The estimated ready date of the backlog item. Optional.
139
180
 
140
181
  Additionally each backlog item can have any number of other fields.
141
182
 
@@ -157,21 +198,27 @@ To install backlogops on Microsoft Windows, run the following command:
157
198
  pip install --upgrade backlogops
158
199
  ````
159
200
 
201
+ ## Using backlogops documentation
202
+
203
+ For a better understanding of how to use the library, CLI or GUI, see the user
204
+ documentation:
205
+ [Using backlogops](https://github.com/tom-bjorkholm/backlog-ops/blob/master/doc//using_backlogops/README.md)
206
+
160
207
  ## API documentation
161
208
 
162
209
  For more detailed code documentation, see the API documentation:
163
210
 
164
- - [Library public API](https://bitbucket.org/tom-bjorkholm/backlog-ops/src/master/doc/backlogops_api.md)
211
+ - [Library public API](https://github.com/tom-bjorkholm/backlog-ops/blob/master/doc/backlogops_api.md)
165
212
 
166
- - [Library protected API](https://bitbucket.org/tom-bjorkholm/backlog-ops/src/master/doc/backlogops_protected_api.md)
213
+ - [Library protected API](https://github.com/tom-bjorkholm/backlog-ops/blob/master/doc/backlogops_protected_api.md)
167
214
 
168
- - [Library public CLI](https://bitbucket.org/tom-bjorkholm/backlog-ops/src/master/doc/backlogops_cli.md)
215
+ - [Public CLI code documentation](https://github.com/tom-bjorkholm/backlog-ops/blob/master/doc/backlogops_cli.md)
169
216
 
170
- - [Library protected CLI](https://bitbucket.org/tom-bjorkholm/backlog-ops/src/master/doc/backlogops_protected_cli.md)
217
+ - [Protected CLI code documentation](https://github.com/tom-bjorkholm/backlog-ops/blob/master/doc/backlogops_protected_cli.md)
171
218
 
172
- - [Library public GUI](https://bitbucket.org/tom-bjorkholm/backlog-ops/src/master/doc/backlogops_gui.md)
219
+ - [Public GUI code documentation](https://github.com/tom-bjorkholm/backlog-ops/blob/master/doc/backlogops_gui.md)
173
220
 
174
- - [Library protected GUI](https://bitbucket.org/tom-bjorkholm/backlog-ops/src/master/doc/backlogops_protected_gui.md)
221
+ - [Protected GUI code documentation](https://github.com/tom-bjorkholm/backlog-ops/blob/master/doc/backlogops_protected_gui.md)
175
222
 
176
223
  ## Library main entry points
177
224
 
@@ -202,7 +249,12 @@ from backlogops import (
202
249
  backlog and its releases from and to a table file.
203
250
 
204
251
  - `read_available_teams`, `write_available_teams`: read and write the
205
- available-teams configuration.
252
+ available-teams workforce on its own.
253
+
254
+ - `read_backlog_ops_config`, `write_backlog_ops_config`,
255
+ `get_backlog_ops_config`: read, write, and look up the top-level
256
+ `BacklogOpsConfig` (workforce, named input and output presets, and the
257
+ optional backlog item levels).
206
258
 
207
259
  - `read_key_list`, `write_key_list`: read and write a list of keys.
208
260
 
@@ -216,6 +268,9 @@ from backlogops import (
216
268
  - `move_keys_first`: reorder so that listed keys (and their children)
217
269
  come first.
218
270
 
271
+ - `backlog_in_release_order`: reorder the backlog to follow the release
272
+ order, optionally honouring dependencies.
273
+
219
274
  - `estimate_ready_date`, `set_plan_from_estimate`: estimate ready dates
220
275
  and set planned dates from the estimate.
221
276
 
@@ -226,13 +281,32 @@ from backlogops import (
226
281
  - `check_backlog_consistency`: validate the backlog and releases for
227
282
  consistency.
228
283
 
284
+ ### Jira
285
+
286
+ - `read_backlog_from_jira`: read a backlog and its releases from Jira.
287
+
288
+ - `add_backlog_to_jira`, `update_backlog_in_jira`: create Jira issues
289
+ for the backlog items, or update selected fields of existing issues.
290
+
291
+ - `add_releases_to_jira`, `update_releases_in_jira`: create Jira
292
+ versions for the releases, or update their dates.
293
+
294
+ - `order_releases_in_jira`, `rename_releases_in_jira`: order and rename
295
+ the Jira versions.
296
+
297
+ - `jira_rank_backlog`, `jira_rank_move_keys`: rank backlog items in the
298
+ Jira rank order.
299
+
300
+ - `JiraIOConfig`, `JiraPreset`: the Jira connection and preset
301
+ configuration.
302
+
229
303
  For the full set of public names see the API documentation linked above.
230
304
 
231
305
  ## Test summary
232
306
 
233
- - Test result: 1066 passed in 16s
307
+ - Test result: 2284 passed, 7 deselected in 44s
234
308
  - No flake8 warnings.
235
309
  - No mypy errors found.
236
310
  - No python layout warnings.
237
- - Built version(s): 0.1
311
+ - Built version(s): 0.3
238
312
  - Build and test using Python 3.14.6
@@ -0,0 +1,277 @@
1
+ # backlogops
2
+
3
+ There are 3 related packages for backlog operations:
4
+
5
+ - **[backlogops](https://pypi.org/project/backlogops/)** a collection of library
6
+ functions to manipulate backlogs
7
+
8
+ - **[backlogops-cli](https://pypi.org/project/backlogops-cli/)** command line
9
+ interface to use the functions in the library. This is just a thin wrapper
10
+ around the library functions. It serves a dual purpose as both an example of
11
+ how to use the library and as a tool for the user to use the library.
12
+
13
+ - **[backlogops-gui](https://pypi.org/project/backlogops-gui/)** graphical user
14
+ interface to use the functions in the library. It is based on TkInter. The
15
+ ambition is to keep it as a thin wrapper around the library.
16
+
17
+ ## Available functionality
18
+
19
+ The following functionality is available in all 3 packages:
20
+
21
+ - Reading backlog and releases from file types that TableIO supports reading
22
+ from (Currently CSV, Excel, and ODS).
23
+
24
+ - Writing backlog and releases to file types that TableIO supports writing to
25
+ (Currently CSV, Excel, ODS and 9 other file formats).
26
+
27
+ - File format is detected from the file extension, but may be overridden.
28
+
29
+ - Adjust release content to fit the planned release dates.
30
+
31
+ - Create a demonstration backlog and releases (for exploring the features).
32
+
33
+ - Estimate ready date for the backlog items based on available teams, team
34
+ velocity, vacation dates, periods with half time work, etc.
35
+
36
+ - Extract backlog keys at given backlog item levels.
37
+
38
+ - Reorder the backlog so that the dependencies are satisfied.
39
+
40
+ - Reorder the backlog so that items identified by keys in a list come first. If
41
+ the key is at a higher level it will bring all items it is a parent of in
42
+ front of it (recursively).
43
+
44
+ - Reorder the backlog in release order, optionally taking dependencies into
45
+ account.
46
+
47
+ - Set planned release dates from the estimated release dates.
48
+
49
+ - Calculate the release dates from the backlog items estimated ready dates, with
50
+ a configurable buffer time.
51
+
52
+ - Validate the backlog and releases for consistency.
53
+
54
+ - Convert a backlog and releases between table file formats.
55
+
56
+ - Order the releases by their planned or estimated date.
57
+
58
+ - Rename columns when reading a file and when writing a file.
59
+
60
+ - Map custom status names in input files to backlog item statuses.
61
+
62
+ - Choose how backlog item levels are written: by number, by name, or both, and
63
+ configure custom level names.
64
+
65
+ - Create stand-alone input or output preset configuration files.
66
+
67
+ - Migrate an older configuration or preset file to the current file format.
68
+
69
+ - A wizard to create a backlog-ops configuration file with the workforce, named
70
+ input and output presets, level names, and status name mapping.
71
+
72
+ - Read a backlog and releases from Jira into a backlog and release table.
73
+
74
+ - Write a backlog to Jira, creating a new Jira issue for each backlog item.
75
+
76
+ - Update a backlog that is already in Jira, changing only the chosen columns.
77
+
78
+ - Add the releases to Jira as Jira versions.
79
+
80
+ - Update the releases in Jira, setting their dates to the planned release dates.
81
+
82
+ - Order the releases in Jira by date, by a name list, or by the input order.
83
+
84
+ - Rename releases in Jira, changing the Jira version names.
85
+
86
+ - Move backlog items to a chosen anchor in the Jira rank order, following a key
87
+ list.
88
+
89
+ ## The operating model
90
+
91
+ The operating model that most of the functionality is designed for is that the
92
+ teams work off a single backlog in the order of the backlog. The backlog items
93
+ are ordered by priority and dependencies to allow the teams to work in the
94
+ backlog order. Each backlog item and each release may have a planned ready date,
95
+ that records what has been communicated to the customer. Each backlog item and
96
+ each release may have an estimated ready date, that is calculated from the
97
+ current backlog state, the team velocity, and what we know about the
98
+ availability of the team members.
99
+
100
+ ## The backlog item fields
101
+
102
+ Each backlog item has the following fields that are used by the algorithms in
103
+ the library:
104
+
105
+ - `key` The key of the backlog item. Required. Must be unique. Must not be
106
+ empty, must not contain whitespace and must not contain any of the characters
107
+ , . ; : ( ) \[ \] \{ \}.
108
+
109
+ - `level` The level of the backlog item. Required. Must be an integer.
110
+
111
+ - `title` The title of the backlog item. Required.
112
+
113
+ - `story_points` The story points of the backlog item. Required.
114
+
115
+ - `status` The status of the backlog item. Required.
116
+
117
+ - `parent_key` The key of the parent backlog item. Optional. Must exist as a key
118
+ in the backlog. Parent keys are used to build the hierarchy of the backlog.
119
+ The parent key must be at a higher level than the current item. Parent keys
120
+ introduce implicit dependencies between items: the current item cannot start
121
+ before the parent item starts, and the parent item cannot finish before all
122
+ its children have finished.
123
+
124
+ - `release` The release of the backlog item. Optional. Must not be empty string,
125
+ must not start or end with whitespace, and must not contain tabs, newlines or
126
+ control characters.
127
+
128
+ - `team` The team responsible for the backlog item. Optional. Must not be empty
129
+ string. Must be a valid team name. If None the item can be done by any team.
130
+ If not None. the item can only be done by the specified team.
131
+
132
+ - `depends_on_f2s` The list of keys of the backlog items that must have been
133
+ finished before the current item can start. May be empty.
134
+
135
+ - `depends_on_f2f` The list of keys of the backlog items that must have been
136
+ finished before the current item can finish. May be empty.
137
+
138
+ - `depends_on_s2s` The list of keys of the backlog items that must have been
139
+ started before the current item can start. May be empty.
140
+
141
+ - `planned_ready_date` The planned ready date of the backlog item. The date that
142
+ is communicated to the customer. Optional.
143
+
144
+ - `estimated_ready_date` The estimated ready date of the backlog item. Optional.
145
+
146
+ Additionally each backlog item can have any number of other fields.
147
+
148
+ ## Installing backlogops
149
+
150
+ ### On macOS and Linux
151
+
152
+ To install backlogops on macOS and Linux, run the following command:
153
+
154
+ ````sh
155
+ pip3 install --upgrade backlogops
156
+ ````
157
+
158
+ ### On Microsoft Windows
159
+
160
+ To install backlogops on Microsoft Windows, run the following command:
161
+
162
+ ````sh
163
+ pip install --upgrade backlogops
164
+ ````
165
+
166
+ ## Using backlogops documentation
167
+
168
+ For a better understanding of how to use the library, CLI or GUI, see the user
169
+ documentation:
170
+ [Using backlogops](https://github.com/tom-bjorkholm/backlog-ops/blob/master/doc//using_backlogops/README.md)
171
+
172
+ ## API documentation
173
+
174
+ For more detailed code documentation, see the API documentation:
175
+
176
+ - [Library public API](https://github.com/tom-bjorkholm/backlog-ops/blob/master/doc/backlogops_api.md)
177
+
178
+ - [Library protected API](https://github.com/tom-bjorkholm/backlog-ops/blob/master/doc/backlogops_protected_api.md)
179
+
180
+ - [Public CLI code documentation](https://github.com/tom-bjorkholm/backlog-ops/blob/master/doc/backlogops_cli.md)
181
+
182
+ - [Protected CLI code documentation](https://github.com/tom-bjorkholm/backlog-ops/blob/master/doc/backlogops_protected_cli.md)
183
+
184
+ - [Public GUI code documentation](https://github.com/tom-bjorkholm/backlog-ops/blob/master/doc/backlogops_gui.md)
185
+
186
+ - [Protected GUI code documentation](https://github.com/tom-bjorkholm/backlog-ops/blob/master/doc/backlogops_protected_gui.md)
187
+
188
+ ## Library main entry points
189
+
190
+ All names an application programmer is most likely to need are
191
+ re-exported from the top-level `backlogops` package, so they can be
192
+ imported directly, for example:
193
+
194
+ ````python
195
+ from backlogops import (
196
+ read_backlog_releases, order_by_dependencies, estimate_ready_date,
197
+ get_demo_backlog)
198
+ ````
199
+
200
+ ### Core data model
201
+
202
+ - `Backlog`, `BacklogItem`, `Status`: the backlog and its items.
203
+
204
+ - `Releases`, `Release`: the planned releases.
205
+
206
+ - `BacklogReleases`: a backlog together with its releases.
207
+
208
+ - `AvailableTeams`, `Team`, `Person`, `Membership`: the workforce that
209
+ the date estimation uses.
210
+
211
+ ### Reading and writing
212
+
213
+ - `read_backlog_releases`, `write_backlog_releases`: read and write a
214
+ backlog and its releases from and to a table file.
215
+
216
+ - `read_available_teams`, `write_available_teams`: read and write the
217
+ available-teams workforce on its own.
218
+
219
+ - `read_backlog_ops_config`, `write_backlog_ops_config`,
220
+ `get_backlog_ops_config`: read, write, and look up the top-level
221
+ `BacklogOpsConfig` (workforce, named input and output presets, and the
222
+ optional backlog item levels).
223
+
224
+ - `read_key_list`, `write_key_list`: read and write a list of keys.
225
+
226
+ - `get_demo_backlog`: create a demonstration backlog and releases.
227
+
228
+ ### Operations
229
+
230
+ - `order_by_dependencies`: reorder the backlog so that dependencies are
231
+ satisfied.
232
+
233
+ - `move_keys_first`: reorder so that listed keys (and their children)
234
+ come first.
235
+
236
+ - `backlog_in_release_order`: reorder the backlog to follow the release
237
+ order, optionally honouring dependencies.
238
+
239
+ - `estimate_ready_date`, `set_plan_from_estimate`: estimate ready dates
240
+ and set planned dates from the estimate.
241
+
242
+ - `estimate_release_dates`, `release_plan_on_estimate`,
243
+ `adjust_release_content`: estimate and plan release dates, and adjust
244
+ release content to fit the planned dates.
245
+
246
+ - `check_backlog_consistency`: validate the backlog and releases for
247
+ consistency.
248
+
249
+ ### Jira
250
+
251
+ - `read_backlog_from_jira`: read a backlog and its releases from Jira.
252
+
253
+ - `add_backlog_to_jira`, `update_backlog_in_jira`: create Jira issues
254
+ for the backlog items, or update selected fields of existing issues.
255
+
256
+ - `add_releases_to_jira`, `update_releases_in_jira`: create Jira
257
+ versions for the releases, or update their dates.
258
+
259
+ - `order_releases_in_jira`, `rename_releases_in_jira`: order and rename
260
+ the Jira versions.
261
+
262
+ - `jira_rank_backlog`, `jira_rank_move_keys`: rank backlog items in the
263
+ Jira rank order.
264
+
265
+ - `JiraIOConfig`, `JiraPreset`: the Jira connection and preset
266
+ configuration.
267
+
268
+ For the full set of public names see the API documentation linked above.
269
+
270
+ ## Test summary
271
+
272
+ - Test result: 2284 passed, 7 deselected in 44s
273
+ - No flake8 warnings.
274
+ - No mypy errors found.
275
+ - No python layout warnings.
276
+ - Built version(s): 0.3
277
+ - Build and test using Python 3.14.6