github-issue-list 0.0.1__tar.gz → 0.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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: github-issue-list
3
- Version: 0.0.1
3
+ Version: 0.0.2
4
4
  Summary: List open GitHub issues assigned to a user in an organization.
5
5
  Author: Kaizten Analytics
6
6
  License-Expression: LicenseRef-Proprietary
@@ -57,7 +57,7 @@ options:
57
57
  --username USERNAME GitHub assignee. Defaults to the authenticated gh user.
58
58
  ```
59
59
 
60
- The table contains the full repository name, issue number, truncated title, UTC creation time, and elapsed time since creation. The search returns at most 1,000 issues, matching GitHub's issue-search result limit.
60
+ The table contains the full repository name, issue number, truncated title, issue URL, UTC creation time, and elapsed time since creation. The search returns at most 1,000 issues, matching GitHub's issue-search result limit.
61
61
 
62
62
  ## Development
63
63
 
@@ -46,7 +46,7 @@ options:
46
46
  --username USERNAME GitHub assignee. Defaults to the authenticated gh user.
47
47
  ```
48
48
 
49
- The table contains the full repository name, issue number, truncated title, UTC creation time, and elapsed time since creation. The search returns at most 1,000 issues, matching GitHub's issue-search result limit.
49
+ The table contains the full repository name, issue number, truncated title, issue URL, UTC creation time, and elapsed time since creation. The search returns at most 1,000 issues, matching GitHub's issue-search result limit.
50
50
 
51
51
  ## Development
52
52
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "github-issue-list"
7
- version = "0.0.1"
7
+ version = "0.0.2"
8
8
  description = "List open GitHub issues assigned to a user in an organization."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: github-issue-list
3
- Version: 0.0.1
3
+ Version: 0.0.2
4
4
  Summary: List open GitHub issues assigned to a user in an organization.
5
5
  Author: Kaizten Analytics
6
6
  License-Expression: LicenseRef-Proprietary
@@ -57,7 +57,7 @@ options:
57
57
  --username USERNAME GitHub assignee. Defaults to the authenticated gh user.
58
58
  ```
59
59
 
60
- The table contains the full repository name, issue number, truncated title, UTC creation time, and elapsed time since creation. The search returns at most 1,000 issues, matching GitHub's issue-search result limit.
60
+ The table contains the full repository name, issue number, truncated title, issue URL, UTC creation time, and elapsed time since creation. The search returns at most 1,000 issues, matching GitHub's issue-search result limit.
61
61
 
62
62
  ## Development
63
63
 
@@ -176,6 +176,10 @@ def truncate_title(title: str, limit: int = TITLE_LIMIT) -> str:
176
176
  return clean[: limit - 3] + "..."
177
177
 
178
178
 
179
+ def issue_url(issue: Issue) -> str:
180
+ return f"https://github.com/{issue.repository}/issues/{issue.number}"
181
+
182
+
179
183
  def table(headers: list[str], rows: list[list[str]]) -> str:
180
184
  widths = [len(header) for header in headers]
181
185
  for row in rows:
@@ -200,13 +204,14 @@ def render_issue_table(issues: list[Issue], now: datetime) -> str:
200
204
  issue.repository,
201
205
  f"#{issue.number}",
202
206
  truncate_title(issue.title),
207
+ issue_url(issue),
203
208
  format_github_datetime(issue.created_at),
204
209
  elapsed_time(issue.created_at, now),
205
210
  ]
206
211
  for issue in issues
207
212
  ]
208
213
  return table(
209
- ["Repository", "Issue number", "Issue title", "Creation time", "Time since creation"],
214
+ ["Repository", "Issue number", "Issue title", "Issue URL", "Creation time", "Time since creation"],
210
215
  rows,
211
216
  )
212
217
 
@@ -143,12 +143,19 @@ class GithubIssueListTests(unittest.TestCase):
143
143
  self.assertIn("Repository", rendered)
144
144
  self.assertIn("Issue number", rendered)
145
145
  self.assertIn("Issue title", rendered)
146
+ self.assertIn("Issue URL", rendered)
146
147
  self.assertIn("Creation time", rendered)
147
148
  self.assertIn("Time since creation", rendered)
148
149
  self.assertIn("octo/repo", rendered)
149
150
  self.assertIn("#7", rendered)
151
+ self.assertIn("https://github.com/octo/repo/issues/7", rendered)
150
152
  self.assertIn("2026-10-12T10:30:00Z", rendered)
151
153
  self.assertIn("2d 1h 30m", rendered)
154
+ headers = [cell.strip() for cell in rendered.splitlines()[0].strip("|").split("|")]
155
+ self.assertEqual(
156
+ headers,
157
+ ["Repository", "Issue number", "Issue title", "Issue URL", "Creation time", "Time since creation"],
158
+ )
152
159
  self.assertEqual(issue_list.render_issue_table([], now), "(none found)")
153
160
 
154
161
  def test_run_resolves_defaults_and_prints_table(self):