backlogops-cli 1.2__tar.gz → 1.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 (45) hide show
  1. {backlogops_cli-1.2 → backlogops_cli-1.3}/PKG-INFO +28 -8
  2. {backlogops_cli-1.2 → backlogops_cli-1.3}/README_pypi.md +24 -4
  3. {backlogops_cli-1.2 → backlogops_cli-1.3}/backlogops_cli.egg-info/PKG-INFO +28 -8
  4. backlogops_cli-1.3/backlogops_cli.egg-info/requires.txt +5 -0
  5. {backlogops_cli-1.2 → backlogops_cli-1.3}/setup.py +4 -4
  6. {backlogops_cli-1.2 → backlogops_cli-1.3}/src/backlogops_cli/_command_io.py +5 -3
  7. {backlogops_cli-1.2 → backlogops_cli-1.3}/src/backlogops_cli/add_to_jira.py +1 -0
  8. {backlogops_cli-1.2 → backlogops_cli-1.3}/src/backlogops_cli/encrypt_token_file.py +1 -1
  9. {backlogops_cli-1.2 → backlogops_cli-1.3}/src/backlogops_cli/estimate_ready_date.py +5 -3
  10. {backlogops_cli-1.2 → backlogops_cli-1.3}/src/backlogops_cli/update_backlog_in_jira.py +8 -3
  11. backlogops_cli-1.2/backlogops_cli.egg-info/requires.txt +0 -5
  12. {backlogops_cli-1.2 → backlogops_cli-1.3}/LICENSE.txt +0 -0
  13. {backlogops_cli-1.2 → backlogops_cli-1.3}/backlogops_cli.egg-info/SOURCES.txt +0 -0
  14. {backlogops_cli-1.2 → backlogops_cli-1.3}/backlogops_cli.egg-info/dependency_links.txt +0 -0
  15. {backlogops_cli-1.2 → backlogops_cli-1.3}/backlogops_cli.egg-info/top_level.txt +0 -0
  16. {backlogops_cli-1.2 → backlogops_cli-1.3}/pyproject.toml +0 -0
  17. {backlogops_cli-1.2 → backlogops_cli-1.3}/setup.cfg +0 -0
  18. {backlogops_cli-1.2 → backlogops_cli-1.3}/src/backlogops_cli/__init__.py +0 -0
  19. {backlogops_cli-1.2 → backlogops_cli-1.3}/src/backlogops_cli/__main__.py +0 -0
  20. {backlogops_cli-1.2 → backlogops_cli-1.3}/src/backlogops_cli/_migrate_warn.py +0 -0
  21. {backlogops_cli-1.2 → backlogops_cli-1.3}/src/backlogops_cli/_wizard_io.py +0 -0
  22. {backlogops_cli-1.2 → backlogops_cli-1.3}/src/backlogops_cli/add_releases_to_jira.py +0 -0
  23. {backlogops_cli-1.2 → backlogops_cli-1.3}/src/backlogops_cli/adjust_release_content.py +0 -0
  24. {backlogops_cli-1.2 → backlogops_cli-1.3}/src/backlogops_cli/bloc_version_reporter.py +0 -0
  25. {backlogops_cli-1.2 → backlogops_cli-1.3}/src/backlogops_cli/config_edit.py +0 -0
  26. {backlogops_cli-1.2 → backlogops_cli-1.3}/src/backlogops_cli/config_wizard.py +0 -0
  27. {backlogops_cli-1.2 → backlogops_cli-1.3}/src/backlogops_cli/convert.py +0 -0
  28. {backlogops_cli-1.2 → backlogops_cli-1.3}/src/backlogops_cli/demo_backlog.py +0 -0
  29. {backlogops_cli-1.2 → backlogops_cli-1.3}/src/backlogops_cli/extract_keys.py +0 -0
  30. {backlogops_cli-1.2 → backlogops_cli-1.3}/src/backlogops_cli/jira_fields.py +0 -0
  31. {backlogops_cli-1.2 → backlogops_cli-1.3}/src/backlogops_cli/list.py +0 -0
  32. {backlogops_cli-1.2 → backlogops_cli-1.3}/src/backlogops_cli/migrate_cfg.py +0 -0
  33. {backlogops_cli-1.2 → backlogops_cli-1.3}/src/backlogops_cli/order_by_deps.py +0 -0
  34. {backlogops_cli-1.2 → backlogops_cli-1.3}/src/backlogops_cli/order_by_keys.py +0 -0
  35. {backlogops_cli-1.2 → backlogops_cli-1.3}/src/backlogops_cli/order_by_release.py +0 -0
  36. {backlogops_cli-1.2 → backlogops_cli-1.3}/src/backlogops_cli/order_releases.py +0 -0
  37. {backlogops_cli-1.2 → backlogops_cli-1.3}/src/backlogops_cli/order_releases_in_jira.py +0 -0
  38. {backlogops_cli-1.2 → backlogops_cli-1.3}/src/backlogops_cli/plan_release_dates.py +0 -0
  39. {backlogops_cli-1.2 → backlogops_cli-1.3}/src/backlogops_cli/preset_wizard.py +0 -0
  40. {backlogops_cli-1.2 → backlogops_cli-1.3}/src/backlogops_cli/py.typed +0 -0
  41. {backlogops_cli-1.2 → backlogops_cli-1.3}/src/backlogops_cli/rank_in_jira.py +0 -0
  42. {backlogops_cli-1.2 → backlogops_cli-1.3}/src/backlogops_cli/read_jira.py +0 -0
  43. {backlogops_cli-1.2 → backlogops_cli-1.3}/src/backlogops_cli/rename_releases_in_jira.py +0 -0
  44. {backlogops_cli-1.2 → backlogops_cli-1.3}/src/backlogops_cli/update_releases_in_jira.py +0 -0
  45. {backlogops_cli-1.2 → backlogops_cli-1.3}/src/backlogops_cli/version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: backlogops-cli
3
- Version: 1.2
3
+ Version: 1.3
4
4
  Summary: Command line interface for backlog operations.
5
5
  Author: Tom Björkholm
6
6
  Author-email: Tom Björkholm <klausuler_linnet0q@icloud.com>
@@ -24,9 +24,9 @@ Requires-Python: >=3.12
24
24
  Description-Content-Type: text/markdown
25
25
  License-File: LICENSE.txt
26
26
  Requires-Dist: argcomplete>=3.7.2
27
- Requires-Dist: backlogops>=1.2
28
- Requires-Dist: wizard-ui-bridge[textual]>=1.3
29
- Requires-Dist: edit-cfg-json-textual>=0.2.0
27
+ Requires-Dist: backlogops>=1.3
28
+ Requires-Dist: wizard-ui-bridge[textual]>=1.4
29
+ Requires-Dist: edit-cfg-json-textual>=0.3.0
30
30
  Requires-Dist: versionreporter>=0.4
31
31
  Dynamic: author
32
32
  Dynamic: license-file
@@ -76,6 +76,10 @@ The following functionality is available in all 3 packages:
76
76
  - Estimate ready date for the backlog items based on available teams, team
77
77
  velocity, vacation dates, periods with half time work, etc.
78
78
 
79
+ - Configure what a backlog item that nobody has estimated counts as, per backlog
80
+ item level, so that an unestimated item does not make the estimated dates too
81
+ optimistic.
82
+
79
83
  - Extract backlog keys at given backlog item levels.
80
84
 
81
85
  - Reorder the backlog so that the dependencies are satisfied.
@@ -110,7 +114,16 @@ The following functionality is available in all 3 packages:
110
114
  - Migrate an older configuration or preset file to the current file format.
111
115
 
112
116
  - A wizard to create a backlog-ops configuration file with the workforce, named
113
- input and output presets, level names, and status name mapping.
117
+ input and output presets, level names, status name mapping, the guess for
118
+ unestimated items, how the graphical user interface shows the data, and the
119
+ Jira integration.
120
+
121
+ - An editor showing a whole configuration file or a stand-alone preset file at
122
+ once, folded where it is deep, to change a single value without stepping
123
+ through the wizard.
124
+
125
+ - Encrypt the Jira API token to a pass-phrase-protected file, so that no
126
+ configuration file holds the token in clear text.
114
127
 
115
128
  - Read a backlog and releases from Jira into a backlog and release table.
116
129
 
@@ -129,6 +142,10 @@ The following functionality is available in all 3 packages:
129
142
  - Move backlog items to a chosen anchor in the Jira rank order, following a key
130
143
  list.
131
144
 
145
+ - Report what a Jira operation did not do. Every Jira result opens with what
146
+ Jira refused or what was skipped, so a value that was not written is visible
147
+ without reading the whole listing.
148
+
132
149
  ## The operating model
133
150
 
134
151
  The operating model that most of the functionality is designed for is that the
@@ -153,7 +170,10 @@ the library:
153
170
 
154
171
  - `title` The title of the backlog item. Required.
155
172
 
156
- - `story_points` The story points of the backlog item. Required.
173
+ - `story_points` The story points of the backlog item. Optional. An item with no
174
+ story points is one that nobody has estimated yet, and what such an item is
175
+ worked with when a completion date is estimated is configured. May be a
176
+ fraction, such as 0.5.
157
177
 
158
178
  - `status` The status of the backlog item. Required.
159
179
 
@@ -322,10 +342,10 @@ backlogops_cli serves 2 purposes:
322
342
 
323
343
  ## Test summary
324
344
 
325
- - Test result: 2309 passed, 1 deselected in 58s
345
+ - Test result: 2555 passed, 1 deselected in 58s
326
346
  - No flake8 warnings.
327
347
  - No mypy errors found.
328
348
  - No pylint warnings.
329
349
  - No python layout warnings.
330
- - Built version(s): 1.2
350
+ - Built version(s): 1.3
331
351
  - Build and test using Python 3.14.7
@@ -41,6 +41,10 @@ The following functionality is available in all 3 packages:
41
41
  - Estimate ready date for the backlog items based on available teams, team
42
42
  velocity, vacation dates, periods with half time work, etc.
43
43
 
44
+ - Configure what a backlog item that nobody has estimated counts as, per backlog
45
+ item level, so that an unestimated item does not make the estimated dates too
46
+ optimistic.
47
+
44
48
  - Extract backlog keys at given backlog item levels.
45
49
 
46
50
  - Reorder the backlog so that the dependencies are satisfied.
@@ -75,7 +79,16 @@ The following functionality is available in all 3 packages:
75
79
  - Migrate an older configuration or preset file to the current file format.
76
80
 
77
81
  - A wizard to create a backlog-ops configuration file with the workforce, named
78
- input and output presets, level names, and status name mapping.
82
+ input and output presets, level names, status name mapping, the guess for
83
+ unestimated items, how the graphical user interface shows the data, and the
84
+ Jira integration.
85
+
86
+ - An editor showing a whole configuration file or a stand-alone preset file at
87
+ once, folded where it is deep, to change a single value without stepping
88
+ through the wizard.
89
+
90
+ - Encrypt the Jira API token to a pass-phrase-protected file, so that no
91
+ configuration file holds the token in clear text.
79
92
 
80
93
  - Read a backlog and releases from Jira into a backlog and release table.
81
94
 
@@ -94,6 +107,10 @@ The following functionality is available in all 3 packages:
94
107
  - Move backlog items to a chosen anchor in the Jira rank order, following a key
95
108
  list.
96
109
 
110
+ - Report what a Jira operation did not do. Every Jira result opens with what
111
+ Jira refused or what was skipped, so a value that was not written is visible
112
+ without reading the whole listing.
113
+
97
114
  ## The operating model
98
115
 
99
116
  The operating model that most of the functionality is designed for is that the
@@ -118,7 +135,10 @@ the library:
118
135
 
119
136
  - `title` The title of the backlog item. Required.
120
137
 
121
- - `story_points` The story points of the backlog item. Required.
138
+ - `story_points` The story points of the backlog item. Optional. An item with no
139
+ story points is one that nobody has estimated yet, and what such an item is
140
+ worked with when a completion date is estimated is configured. May be a
141
+ fraction, such as 0.5.
122
142
 
123
143
  - `status` The status of the backlog item. Required.
124
144
 
@@ -287,10 +307,10 @@ backlogops_cli serves 2 purposes:
287
307
 
288
308
  ## Test summary
289
309
 
290
- - Test result: 2309 passed, 1 deselected in 58s
310
+ - Test result: 2555 passed, 1 deselected in 58s
291
311
  - No flake8 warnings.
292
312
  - No mypy errors found.
293
313
  - No pylint warnings.
294
314
  - No python layout warnings.
295
- - Built version(s): 1.2
315
+ - Built version(s): 1.3
296
316
  - Build and test using Python 3.14.7
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: backlogops-cli
3
- Version: 1.2
3
+ Version: 1.3
4
4
  Summary: Command line interface for backlog operations.
5
5
  Author: Tom Björkholm
6
6
  Author-email: Tom Björkholm <klausuler_linnet0q@icloud.com>
@@ -24,9 +24,9 @@ Requires-Python: >=3.12
24
24
  Description-Content-Type: text/markdown
25
25
  License-File: LICENSE.txt
26
26
  Requires-Dist: argcomplete>=3.7.2
27
- Requires-Dist: backlogops>=1.2
28
- Requires-Dist: wizard-ui-bridge[textual]>=1.3
29
- Requires-Dist: edit-cfg-json-textual>=0.2.0
27
+ Requires-Dist: backlogops>=1.3
28
+ Requires-Dist: wizard-ui-bridge[textual]>=1.4
29
+ Requires-Dist: edit-cfg-json-textual>=0.3.0
30
30
  Requires-Dist: versionreporter>=0.4
31
31
  Dynamic: author
32
32
  Dynamic: license-file
@@ -76,6 +76,10 @@ The following functionality is available in all 3 packages:
76
76
  - Estimate ready date for the backlog items based on available teams, team
77
77
  velocity, vacation dates, periods with half time work, etc.
78
78
 
79
+ - Configure what a backlog item that nobody has estimated counts as, per backlog
80
+ item level, so that an unestimated item does not make the estimated dates too
81
+ optimistic.
82
+
79
83
  - Extract backlog keys at given backlog item levels.
80
84
 
81
85
  - Reorder the backlog so that the dependencies are satisfied.
@@ -110,7 +114,16 @@ The following functionality is available in all 3 packages:
110
114
  - Migrate an older configuration or preset file to the current file format.
111
115
 
112
116
  - A wizard to create a backlog-ops configuration file with the workforce, named
113
- input and output presets, level names, and status name mapping.
117
+ input and output presets, level names, status name mapping, the guess for
118
+ unestimated items, how the graphical user interface shows the data, and the
119
+ Jira integration.
120
+
121
+ - An editor showing a whole configuration file or a stand-alone preset file at
122
+ once, folded where it is deep, to change a single value without stepping
123
+ through the wizard.
124
+
125
+ - Encrypt the Jira API token to a pass-phrase-protected file, so that no
126
+ configuration file holds the token in clear text.
114
127
 
115
128
  - Read a backlog and releases from Jira into a backlog and release table.
116
129
 
@@ -129,6 +142,10 @@ The following functionality is available in all 3 packages:
129
142
  - Move backlog items to a chosen anchor in the Jira rank order, following a key
130
143
  list.
131
144
 
145
+ - Report what a Jira operation did not do. Every Jira result opens with what
146
+ Jira refused or what was skipped, so a value that was not written is visible
147
+ without reading the whole listing.
148
+
132
149
  ## The operating model
133
150
 
134
151
  The operating model that most of the functionality is designed for is that the
@@ -153,7 +170,10 @@ the library:
153
170
 
154
171
  - `title` The title of the backlog item. Required.
155
172
 
156
- - `story_points` The story points of the backlog item. Required.
173
+ - `story_points` The story points of the backlog item. Optional. An item with no
174
+ story points is one that nobody has estimated yet, and what such an item is
175
+ worked with when a completion date is estimated is configured. May be a
176
+ fraction, such as 0.5.
157
177
 
158
178
  - `status` The status of the backlog item. Required.
159
179
 
@@ -322,10 +342,10 @@ backlogops_cli serves 2 purposes:
322
342
 
323
343
  ## Test summary
324
344
 
325
- - Test result: 2309 passed, 1 deselected in 58s
345
+ - Test result: 2555 passed, 1 deselected in 58s
326
346
  - No flake8 warnings.
327
347
  - No mypy errors found.
328
348
  - No pylint warnings.
329
349
  - No python layout warnings.
330
- - Built version(s): 1.2
350
+ - Built version(s): 1.3
331
351
  - Build and test using Python 3.14.7
@@ -0,0 +1,5 @@
1
+ argcomplete>=3.7.2
2
+ backlogops>=1.3
3
+ wizard-ui-bridge[textual]>=1.4
4
+ edit-cfg-json-textual>=0.3.0
5
+ versionreporter>=0.4
@@ -5,7 +5,7 @@ from setuptools import setup
5
5
 
6
6
  setup(
7
7
  name='backlogops-cli',
8
- version='1.2',
8
+ version='1.3',
9
9
  description='Command line interface for backlog operations.',
10
10
  author='Tom Björkholm',
11
11
  author_email='klausuler_linnet0q@icloud.com',
@@ -15,9 +15,9 @@ setup(
15
15
  package_data={'backlogops_cli': ['src/py.typed']},
16
16
  install_requires=[
17
17
  'argcomplete >= 3.7.2',
18
- 'backlogops >= 1.2',
19
- 'wizard-ui-bridge[textual] >= 1.3',
20
- 'edit-cfg-json-textual >= 0.2.0',
18
+ 'backlogops >= 1.3',
19
+ 'wizard-ui-bridge[textual] >= 1.4',
20
+ 'edit-cfg-json-textual >= 0.3.0',
21
21
  'versionreporter >= 0.4'
22
22
  ]
23
23
  )
@@ -145,12 +145,14 @@ def add_config_arg(parser: argparse.ArgumentParser) -> None:
145
145
  """Add the ``-c``/``--config`` backlog-ops configuration argument.
146
146
 
147
147
  The configuration file holds the workforce, the named input and output
148
- presets, the levels and the global status map. Without ``-c`` the file
149
- is discovered the same way as the GUI.
148
+ presets, the levels, the global status map, the guess for unestimated
149
+ items, the GUI display settings and the Jira configuration. Without
150
+ ``-c`` the file is discovered the same way as the GUI.
150
151
  """
151
152
  parser.add_argument('-c', '--config', dest='config',
152
153
  help='Backlog-ops configuration file (workforce, '
153
- 'named presets, levels, status map). Without -c the '
154
+ 'named presets, levels, status map, default story '
155
+ 'points, Jira configuration). Without -c the '
154
156
  'file is found from $BACKLOGOPS_CFG, else '
155
157
  'backlogops.cfg in $BACKLOGOPS_DIR, else '
156
158
  '$HOME/.backlogops.cfg.')
@@ -70,6 +70,7 @@ def _add(parsed: argparse.Namespace, config: BacklogOpsConfig,
70
70
  print(f'Added {len(result.stored)} items to Jira; '
71
71
  f'{len(result.already_present)} already present; '
72
72
  f'{len(result.failed)} failed; '
73
+ f'{len(result.failed_fields)} fields not set; '
73
74
  f'{len(result.failed_links)} links not written.', file=sys.stderr)
74
75
  return result
75
76
 
@@ -4,7 +4,7 @@
4
4
  Read a clear text API token from a file or from standard input, encrypt it
5
5
  with a pass phrase and write the encrypted token to a file. The pass phrase
6
6
  is requested on the terminal and is not echoed. The clear text token file
7
- is not modified, unless the the encrypted token file is the same as the
7
+ is not modified, unless the encrypted token file is the same as the
8
8
  clear text token file, in which case the clear text token file is overwritten
9
9
  with the encrypted token. The encrypted token file is written atomically,
10
10
  so that it is either the old version or the new version, and never a
@@ -6,7 +6,8 @@ estimates the ready date of each backlog item from the available teams,
6
6
  as documented for :func:`backlogops.estimate_ready_date`. The teams
7
7
  configuration (velocity, work hours, vacations and so on) is taken from
8
8
  the file given by ``--config`` or, when that is absent, from the
9
- configured backlog-ops file. The backlog with the estimated dates and the
9
+ configured backlog-ops file, and so is what a backlog item that nobody
10
+ has estimated is worked with. The backlog with the estimated dates and the
10
11
  releases are written to the output file. The input and output formats are
11
12
  inferred from the file name extensions, but can be overridden by a
12
13
  configuration file or by a named preset.
@@ -58,8 +59,9 @@ def _estimate(parsed: argparse.Namespace, config: Optional[BacklogOpsConfig],
58
59
  None here; the assertion makes that explicit for the type checker.
59
60
  """
60
61
  assert isinstance(config, BacklogOpsConfig)
61
- changes = data.estimate_ready_date(config.available_teams,
62
- _start_date(parsed))
62
+ changes = data.estimate_ready_date(
63
+ config.available_teams, _start_date(parsed),
64
+ default_story_points=config.default_story_points)
63
65
  if parsed.set_plan:
64
66
  data.set_plan_from_estimate()
65
67
  return date_report(changes, overwrite_callback(parsed.force))
@@ -20,8 +20,9 @@ selected fields are updated the same way under either value. With ``--rank``
20
20
  the items are also ranked in Jira to match the backlog order, at the chosen
21
21
  anchor.
22
22
 
23
- The updated, already-correct, ignored, added and failed items are printed
24
- to stdout as labelled lists, unless ``-q``/``--quiet`` is given. An
23
+ The updated, already-correct, ignored and added items, and what Jira
24
+ refused to add, to set or to link, are printed to stdout as labelled
25
+ lists, unless ``-q``/``--quiet`` is given. An
25
26
  encrypted Jira token is unlocked by a pass phrase asked on the terminal
26
27
  only when it is needed.
27
28
  """
@@ -128,7 +129,11 @@ def _report_summary(result: UpdatedBacklogInJira) -> None:
128
129
  print(f'Updated {len(result.updated)} items in Jira; '
129
130
  f'{len(result.already_correct)} already correct; '
130
131
  f'{len(result.ignored)} ignored; {len(result.added.stored)} added; '
131
- f'{len(result.failed)} failed.', file=sys.stderr)
132
+ f'{len(result.added.failed)} not added; '
133
+ f'{len(result.failed_fields) + len(result.added.failed_fields)} '
134
+ 'fields not set; '
135
+ f'{len(result.failed_links) + len(result.added.failed_links)} '
136
+ 'links not written.', file=sys.stderr)
132
137
 
133
138
 
134
139
  def _run(parsed: argparse.Namespace) -> int:
@@ -1,5 +0,0 @@
1
- argcomplete>=3.7.2
2
- backlogops>=1.2
3
- wizard-ui-bridge[textual]>=1.3
4
- edit-cfg-json-textual>=0.2.0
5
- versionreporter>=0.4
File without changes
File without changes