lazy-github 0.3.2__tar.gz → 0.3.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.
- {lazy_github-0.3.2 → lazy_github-0.3.3}/.github/workflows/publish.yaml +5 -0
- {lazy_github-0.3.2 → lazy_github-0.3.3}/PKG-INFO +1 -1
- {lazy_github-0.3.2 → lazy_github-0.3.3}/lazy_github/lib/config.py +1 -0
- {lazy_github-0.3.2 → lazy_github-0.3.3}/lazy_github/lib/github/notifications.py +20 -1
- {lazy_github-0.3.2 → lazy_github-0.3.3}/lazy_github/lib/messages.py +21 -1
- {lazy_github-0.3.2 → lazy_github-0.3.3}/lazy_github/ui/screens/notifications.py +29 -11
- {lazy_github-0.3.2 → lazy_github-0.3.3}/lazy_github/ui/screens/primary.py +68 -18
- {lazy_github-0.3.2 → lazy_github-0.3.3}/lazy_github/ui/widgets/conversations.py +5 -4
- {lazy_github-0.3.2 → lazy_github-0.3.3}/lazy_github/ui/widgets/pull_requests.py +2 -2
- lazy_github-0.3.3/lazy_github/version.py +1 -0
- {lazy_github-0.3.2 → lazy_github-0.3.3}/uv.lock +125 -125
- lazy_github-0.3.2/lazy_github/version.py +0 -1
- {lazy_github-0.3.2 → lazy_github-0.3.3}/.devcontainer/devcontainer.json +0 -0
- {lazy_github-0.3.2 → lazy_github-0.3.3}/.github/workflows/code-checks.yaml +0 -0
- {lazy_github-0.3.2 → lazy_github-0.3.3}/.gitignore +0 -0
- {lazy_github-0.3.2 → lazy_github-0.3.3}/.pre-commit-config.yaml +0 -0
- {lazy_github-0.3.2 → lazy_github-0.3.3}/LICENSE +0 -0
- {lazy_github-0.3.2 → lazy_github-0.3.3}/README.md +0 -0
- {lazy_github-0.3.2 → lazy_github-0.3.3}/images/lazy-github-conversation-ui.svg +0 -0
- {lazy_github-0.3.2 → lazy_github-0.3.3}/images/lazy-github-settings-ui.png +0 -0
- {lazy_github-0.3.2 → lazy_github-0.3.3}/lazy_github/__main__.py +0 -0
- {lazy_github-0.3.2 → lazy_github-0.3.3}/lazy_github/cli.py +0 -0
- {lazy_github-0.3.2 → lazy_github-0.3.3}/lazy_github/lib/bindings.py +0 -0
- {lazy_github-0.3.2 → lazy_github-0.3.3}/lazy_github/lib/constants.py +0 -0
- {lazy_github-0.3.2 → lazy_github-0.3.3}/lazy_github/lib/context.py +0 -0
- {lazy_github-0.3.2 → lazy_github-0.3.3}/lazy_github/lib/git_cli.py +0 -0
- {lazy_github-0.3.2 → lazy_github-0.3.3}/lazy_github/lib/github/auth.py +0 -0
- {lazy_github-0.3.2 → lazy_github-0.3.3}/lazy_github/lib/github/backends/cli.py +0 -0
- {lazy_github-0.3.2 → lazy_github-0.3.3}/lazy_github/lib/github/backends/hishel.py +0 -0
- {lazy_github-0.3.2 → lazy_github-0.3.3}/lazy_github/lib/github/backends/protocol.py +0 -0
- {lazy_github-0.3.2 → lazy_github-0.3.3}/lazy_github/lib/github/branches.py +0 -0
- {lazy_github-0.3.2 → lazy_github-0.3.3}/lazy_github/lib/github/checks.py +0 -0
- {lazy_github-0.3.2 → lazy_github-0.3.3}/lazy_github/lib/github/client.py +0 -0
- {lazy_github-0.3.2 → lazy_github-0.3.3}/lazy_github/lib/github/issues.py +0 -0
- {lazy_github-0.3.2 → lazy_github-0.3.3}/lazy_github/lib/github/pull_requests.py +0 -0
- {lazy_github-0.3.2 → lazy_github-0.3.3}/lazy_github/lib/github/repositories.py +0 -0
- {lazy_github-0.3.2 → lazy_github-0.3.3}/lazy_github/lib/github/workflows.py +0 -0
- {lazy_github-0.3.2 → lazy_github-0.3.3}/lazy_github/lib/logging.py +0 -0
- {lazy_github-0.3.2 → lazy_github-0.3.3}/lazy_github/lib/utils.py +0 -0
- {lazy_github-0.3.2 → lazy_github-0.3.3}/lazy_github/models/github.py +0 -0
- {lazy_github-0.3.2 → lazy_github-0.3.3}/lazy_github/ui/app.py +0 -0
- {lazy_github-0.3.2 → lazy_github-0.3.3}/lazy_github/ui/screens/auth.py +0 -0
- {lazy_github-0.3.2 → lazy_github-0.3.3}/lazy_github/ui/screens/edit_issue.py +0 -0
- {lazy_github-0.3.2 → lazy_github-0.3.3}/lazy_github/ui/screens/lookup_pull_request.py +0 -0
- {lazy_github-0.3.2 → lazy_github-0.3.3}/lazy_github/ui/screens/lookup_repository.py +0 -0
- {lazy_github-0.3.2 → lazy_github-0.3.3}/lazy_github/ui/screens/new_comment.py +0 -0
- {lazy_github-0.3.2 → lazy_github-0.3.3}/lazy_github/ui/screens/new_issue.py +0 -0
- {lazy_github-0.3.2 → lazy_github-0.3.3}/lazy_github/ui/screens/new_pull_request.py +0 -0
- {lazy_github-0.3.2 → lazy_github-0.3.3}/lazy_github/ui/screens/settings.py +0 -0
- {lazy_github-0.3.2 → lazy_github-0.3.3}/lazy_github/ui/screens/trigger_workflow.py +0 -0
- {lazy_github-0.3.2 → lazy_github-0.3.3}/lazy_github/ui/widgets/command_log.py +0 -0
- {lazy_github-0.3.2 → lazy_github-0.3.3}/lazy_github/ui/widgets/common.py +0 -0
- {lazy_github-0.3.2 → lazy_github-0.3.3}/lazy_github/ui/widgets/info.py +0 -0
- {lazy_github-0.3.2 → lazy_github-0.3.3}/lazy_github/ui/widgets/issues.py +0 -0
- {lazy_github-0.3.2 → lazy_github-0.3.3}/lazy_github/ui/widgets/repositories.py +0 -0
- {lazy_github-0.3.2 → lazy_github-0.3.3}/lazy_github/ui/widgets/workflows.py +0 -0
- {lazy_github-0.3.2 → lazy_github-0.3.3}/lint.sh +0 -0
- {lazy_github-0.3.2 → lazy_github-0.3.3}/pyproject.toml +0 -0
- {lazy_github-0.3.2 → lazy_github-0.3.3}/start.sh +0 -0
|
@@ -47,6 +47,11 @@ jobs:
|
|
|
47
47
|
ref: 'refs/tags/v${{ needs.pypi-publish.outputs.new-version }}',
|
|
48
48
|
sha: context.sha
|
|
49
49
|
})
|
|
50
|
+
github.rest.git.createRelease({
|
|
51
|
+
owner: context.repo.owner,
|
|
52
|
+
repo: context.repo.repo,
|
|
53
|
+
tag_name: 'v${{ needs.pypi-publish.outputs.new-version }}',
|
|
54
|
+
})
|
|
50
55
|
|
|
51
56
|
notify-discord:
|
|
52
57
|
name: Notify when this workflow completes (regardless of success or failure)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: lazy-github
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.3
|
|
4
4
|
Summary: A terminal UI for interacting with Github
|
|
5
5
|
Author-email: "Chris (Gizmo)" <gizmo385@users.noreply.github.com>
|
|
6
6
|
Maintainer-email: "Chris (Gizmo)" <gizmo385@users.noreply.github.com>
|
|
@@ -42,6 +42,7 @@ class NotificationSettings(BaseModel):
|
|
|
42
42
|
"""Controls the settings for the optional notification feature, which relies on the standard GitHub CLI."""
|
|
43
43
|
|
|
44
44
|
enabled: bool = False
|
|
45
|
+
mark_notification_as_read_when_selected: bool = True
|
|
45
46
|
|
|
46
47
|
|
|
47
48
|
class BindingsSettings(BaseModel):
|
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
import json
|
|
2
|
+
import re
|
|
2
3
|
|
|
4
|
+
from lazy_github.lib.context import LazyGithubContext
|
|
3
5
|
from lazy_github.lib.github.backends.cli import run_gh_cli_command
|
|
6
|
+
from lazy_github.lib.github.pull_requests import get_full_pull_request
|
|
4
7
|
from lazy_github.lib.logging import lg
|
|
5
|
-
from lazy_github.models.github import Notification
|
|
8
|
+
from lazy_github.models.github import FullPullRequest, Notification, NotificationSubject
|
|
6
9
|
|
|
7
10
|
NOTIFICATIONS_PAGE_COUNT = 30
|
|
8
11
|
|
|
12
|
+
_PULL_REQUEST_URL_REGEX = re.compile(r"[^:]+:[\/]+[^\/]+\/repos\/([^\/]+)\/([^\/]+)\/pulls\/(\d+)")
|
|
13
|
+
|
|
9
14
|
|
|
10
15
|
async def fetch_notifications(all: bool) -> list[Notification]:
|
|
11
16
|
"""Fetches notifications on GitHub. If all=True, then previously read notifications will also be returned"""
|
|
@@ -30,3 +35,17 @@ async def mark_notification_as_read(notification: Notification) -> None:
|
|
|
30
35
|
async def unread_notification_count() -> int:
|
|
31
36
|
"""Returns the number of currently unread notifications on GitHub"""
|
|
32
37
|
return len(await fetch_notifications(all=False))
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
async def extract_notification_subject(subject: NotificationSubject) -> FullPullRequest | None:
|
|
41
|
+
"""Attempts to connect the specified notification subject to another Github object, such as a PR"""
|
|
42
|
+
if not (LazyGithubContext.current_repo and subject.url):
|
|
43
|
+
return
|
|
44
|
+
|
|
45
|
+
try:
|
|
46
|
+
# Try and load a PR number from the subject URL
|
|
47
|
+
if matches := _PULL_REQUEST_URL_REGEX.match(subject.url):
|
|
48
|
+
pr_number = int(matches.group(3))
|
|
49
|
+
return await get_full_pull_request(LazyGithubContext.current_repo, pr_number)
|
|
50
|
+
except Exception:
|
|
51
|
+
return None
|
|
@@ -2,7 +2,15 @@ from functools import cached_property
|
|
|
2
2
|
|
|
3
3
|
from textual.message import Message
|
|
4
4
|
|
|
5
|
-
from lazy_github.models.github import
|
|
5
|
+
from lazy_github.models.github import (
|
|
6
|
+
Branch,
|
|
7
|
+
FullPullRequest,
|
|
8
|
+
Issue,
|
|
9
|
+
IssueComment,
|
|
10
|
+
Notification,
|
|
11
|
+
PartialPullRequest,
|
|
12
|
+
Repository,
|
|
13
|
+
)
|
|
6
14
|
|
|
7
15
|
|
|
8
16
|
class RepoSelected(Message):
|
|
@@ -89,3 +97,15 @@ class BranchesLoaded(Message):
|
|
|
89
97
|
def __init__(self, branches: list[Branch]) -> None:
|
|
90
98
|
super().__init__()
|
|
91
99
|
self.branches = branches
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
class NotificationMarkedAsRead(Message):
|
|
103
|
+
def __init__(self, notification: Notification) -> None:
|
|
104
|
+
super().__init__()
|
|
105
|
+
self.notification = notification
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
class NotificationSelected(Message):
|
|
109
|
+
def __init__(self, notification: Notification) -> None:
|
|
110
|
+
super().__init__()
|
|
111
|
+
self.notification = notification
|
|
@@ -2,23 +2,19 @@ from textual import on, work
|
|
|
2
2
|
from textual.app import ComposeResult
|
|
3
3
|
from textual.containers import Container
|
|
4
4
|
from textual.coordinate import Coordinate
|
|
5
|
-
from textual.message import Message
|
|
6
5
|
from textual.screen import ModalScreen
|
|
7
|
-
from textual.widgets import Markdown, TabbedContent, TabPane
|
|
6
|
+
from textual.widgets import DataTable, Markdown, TabbedContent, TabPane
|
|
7
|
+
from textual.widgets.data_table import RowDoesNotExist
|
|
8
8
|
|
|
9
9
|
from lazy_github.lib.bindings import LazyGithubBindings
|
|
10
10
|
from lazy_github.lib.constants import BULLET_POINT, CHECKMARK
|
|
11
|
+
from lazy_github.lib.context import LazyGithubContext
|
|
11
12
|
from lazy_github.lib.github.notifications import fetch_notifications, mark_notification_as_read
|
|
13
|
+
from lazy_github.lib.messages import NotificationMarkedAsRead, NotificationSelected
|
|
12
14
|
from lazy_github.models.github import Notification
|
|
13
15
|
from lazy_github.ui.widgets.common import LazyGithubFooter, SearchableDataTable
|
|
14
16
|
|
|
15
17
|
|
|
16
|
-
class NotificationMarkedAsRead(Message):
|
|
17
|
-
def __init__(self, notification: Notification) -> None:
|
|
18
|
-
super().__init__()
|
|
19
|
-
self.notification = notification
|
|
20
|
-
|
|
21
|
-
|
|
22
18
|
class _NotificationsTableTabPane(TabPane):
|
|
23
19
|
def __init__(self, prefix: str, *args, **kwargs) -> None:
|
|
24
20
|
super().__init__(*args, **kwargs)
|
|
@@ -46,6 +42,16 @@ class _NotificationsTableTabPane(TabPane):
|
|
|
46
42
|
key=str(notification.id),
|
|
47
43
|
)
|
|
48
44
|
|
|
45
|
+
def get_selected_notification(self) -> Notification:
|
|
46
|
+
current_row = self.searchable_table.table.cursor_row
|
|
47
|
+
id = self.searchable_table.table.get_cell_at(Coordinate(current_row, self.id_column))
|
|
48
|
+
return self.notifications[int(id)]
|
|
49
|
+
|
|
50
|
+
@on(DataTable.RowSelected)
|
|
51
|
+
def notification_selected(self) -> None:
|
|
52
|
+
notification = self.get_selected_notification()
|
|
53
|
+
self.post_message(NotificationSelected(notification))
|
|
54
|
+
|
|
49
55
|
def on_mount(self) -> None:
|
|
50
56
|
self.searchable_table.loading = True
|
|
51
57
|
self.searchable_table.table.cursor_type = "row"
|
|
@@ -102,8 +108,11 @@ class NotificationsContainer(Container):
|
|
|
102
108
|
@on(NotificationMarkedAsRead)
|
|
103
109
|
async def notification_marked_read(self, message: NotificationMarkedAsRead) -> None:
|
|
104
110
|
await mark_notification_as_read(message.notification)
|
|
105
|
-
|
|
106
|
-
|
|
111
|
+
try:
|
|
112
|
+
self.unread_tab.remove_notification(message.notification)
|
|
113
|
+
self.read_tab.add_notification(message.notification)
|
|
114
|
+
except RowDoesNotExist:
|
|
115
|
+
pass
|
|
107
116
|
|
|
108
117
|
def action_view_read(self) -> None:
|
|
109
118
|
self.query_one(TabbedContent).active = "read"
|
|
@@ -137,7 +146,7 @@ class NotificationsContainer(Container):
|
|
|
137
146
|
self.load_notifications()
|
|
138
147
|
|
|
139
148
|
|
|
140
|
-
class NotificationsModal(ModalScreen[None]):
|
|
149
|
+
class NotificationsModal(ModalScreen[Notification | None]):
|
|
141
150
|
DEFAULT_CSS = """
|
|
142
151
|
NotificationsModal {
|
|
143
152
|
height: 80%;
|
|
@@ -160,5 +169,14 @@ class NotificationsModal(ModalScreen[None]):
|
|
|
160
169
|
yield NotificationsContainer(id="notifications")
|
|
161
170
|
yield LazyGithubFooter()
|
|
162
171
|
|
|
172
|
+
@on(NotificationSelected)
|
|
173
|
+
async def handle_notification_selected(self, message: NotificationSelected) -> None:
|
|
174
|
+
if (
|
|
175
|
+
message.notification.unread
|
|
176
|
+
and LazyGithubContext.config.notifications.mark_notification_as_read_when_selected
|
|
177
|
+
):
|
|
178
|
+
await mark_notification_as_read(message.notification)
|
|
179
|
+
self.dismiss(message.notification)
|
|
180
|
+
|
|
163
181
|
async def action_close(self) -> None:
|
|
164
182
|
self.dismiss()
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from functools import partial
|
|
2
2
|
from typing import NamedTuple
|
|
3
3
|
|
|
4
|
-
from textual import work
|
|
4
|
+
from textual import on, work
|
|
5
5
|
from textual.app import ComposeResult
|
|
6
6
|
from textual.command import Hit, Hits, Provider
|
|
7
7
|
from textual.containers import Container, Horizontal
|
|
@@ -18,7 +18,7 @@ from lazy_github.lib.context import LazyGithubContext
|
|
|
18
18
|
from lazy_github.lib.github.auth import is_logged_in_to_cli
|
|
19
19
|
from lazy_github.lib.github.backends.protocol import GithubApiRequestFailed
|
|
20
20
|
from lazy_github.lib.github.issues import list_issues
|
|
21
|
-
from lazy_github.lib.github.notifications import unread_notification_count
|
|
21
|
+
from lazy_github.lib.github.notifications import extract_notification_subject, unread_notification_count
|
|
22
22
|
from lazy_github.lib.github.pull_requests import get_full_pull_request
|
|
23
23
|
from lazy_github.lib.logging import lg
|
|
24
24
|
from lazy_github.lib.messages import (
|
|
@@ -27,7 +27,7 @@ from lazy_github.lib.messages import (
|
|
|
27
27
|
PullRequestSelected,
|
|
28
28
|
RepoSelected,
|
|
29
29
|
)
|
|
30
|
-
from lazy_github.models.github import Repository
|
|
30
|
+
from lazy_github.models.github import Issue, PartialPullRequest, Repository
|
|
31
31
|
from lazy_github.ui.screens.new_issue import NewIssueModal
|
|
32
32
|
from lazy_github.ui.screens.new_pull_request import NewPullRequestModal
|
|
33
33
|
from lazy_github.ui.screens.notifications import NotificationsModal
|
|
@@ -198,6 +198,13 @@ class SelectionsPane(Container):
|
|
|
198
198
|
|
|
199
199
|
@work
|
|
200
200
|
async def fetch_issues_and_pull_requests(self, repo: Repository) -> None:
|
|
201
|
+
"""
|
|
202
|
+
Fetches the combined issues and pull requests from the Github API and then adds them to the appropriate tables.
|
|
203
|
+
|
|
204
|
+
Pull Requests are technically issues in the Github data model, so they are fetched by loading issues and then
|
|
205
|
+
checking returned attributes to determine if those attributes indicate that an issue can be treated as a pull
|
|
206
|
+
request instead.
|
|
207
|
+
"""
|
|
201
208
|
state_filter = LazyGithubContext.config.issues.state_filter
|
|
202
209
|
owner_filter = LazyGithubContext.config.issues.owner_filter
|
|
203
210
|
try:
|
|
@@ -209,13 +216,16 @@ class SelectionsPane(Container):
|
|
|
209
216
|
self.pull_requests.post_message(issue_and_pr_message)
|
|
210
217
|
self.issues.post_message(issue_and_pr_message)
|
|
211
218
|
|
|
212
|
-
async def
|
|
213
|
-
|
|
214
|
-
LazyGithubContext.current_repo = message.repo
|
|
219
|
+
async def load_repository(self, repo: Repository) -> None:
|
|
220
|
+
"""Loads more information about the specified repository, such as the PRs, issues, and workflows"""
|
|
215
221
|
if self.pull_requests.display or self.issues.display:
|
|
216
|
-
self.fetch_issues_and_pull_requests(
|
|
222
|
+
self.fetch_issues_and_pull_requests(repo)
|
|
217
223
|
if self.workflows.display:
|
|
218
|
-
self.workflows.load_repo(
|
|
224
|
+
self.workflows.load_repo(repo)
|
|
225
|
+
|
|
226
|
+
@on(RepoSelected)
|
|
227
|
+
async def handle_repo_selection(self, message: RepoSelected) -> None:
|
|
228
|
+
await self.load_repository(message.repo)
|
|
219
229
|
|
|
220
230
|
|
|
221
231
|
class SelectionDetailsPane(Container):
|
|
@@ -269,8 +279,11 @@ class MainViewPane(Container):
|
|
|
269
279
|
def details(self) -> SelectionDetailsContainer:
|
|
270
280
|
return self.query_one("#selection_details", SelectionDetailsContainer)
|
|
271
281
|
|
|
272
|
-
async def
|
|
273
|
-
|
|
282
|
+
async def load_repository(self, repo: Repository) -> None:
|
|
283
|
+
await self.selections.load_repository(repo)
|
|
284
|
+
|
|
285
|
+
async def load_pull_request(self, pull_request: PartialPullRequest) -> None:
|
|
286
|
+
full_pr = await get_full_pull_request(pull_request.repo, pull_request.number)
|
|
274
287
|
tabbed_content = self.query_one("#selection_detail_tabs", TabbedContent)
|
|
275
288
|
await tabbed_content.clear_panes()
|
|
276
289
|
await tabbed_content.add_pane(PrOverviewTabPane(full_pr))
|
|
@@ -279,13 +292,21 @@ class MainViewPane(Container):
|
|
|
279
292
|
tabbed_content.children[0].focus()
|
|
280
293
|
self.details.border_title = f"[5] PR #{full_pr.number} Details"
|
|
281
294
|
|
|
282
|
-
async def
|
|
295
|
+
async def load_issue(self, issue: Issue) -> None:
|
|
283
296
|
tabbed_content = self.query_one("#selection_detail_tabs", TabbedContent)
|
|
284
297
|
await tabbed_content.clear_panes()
|
|
285
|
-
await tabbed_content.add_pane(IssueOverviewTabPane(
|
|
286
|
-
await tabbed_content.add_pane(IssueConversationTabPane(
|
|
298
|
+
await tabbed_content.add_pane(IssueOverviewTabPane(issue))
|
|
299
|
+
await tabbed_content.add_pane(IssueConversationTabPane(issue))
|
|
287
300
|
tabbed_content.children[0].focus()
|
|
288
|
-
self.details.border_title = f"[5] Issue #{
|
|
301
|
+
self.details.border_title = f"[5] Issue #{issue.number} Details"
|
|
302
|
+
|
|
303
|
+
@on(PullRequestSelected)
|
|
304
|
+
async def handle_pull_request_selection(self, message: PullRequestSelected) -> None:
|
|
305
|
+
await self.load_pull_request(message.pr)
|
|
306
|
+
|
|
307
|
+
@on(IssueSelected)
|
|
308
|
+
async def handle_issue_selection(self, message: IssueSelected) -> None:
|
|
309
|
+
await self.load_issue(message.issue)
|
|
289
310
|
|
|
290
311
|
|
|
291
312
|
class LazyGithubCommand(NamedTuple):
|
|
@@ -348,14 +369,37 @@ class LazyGithubMainScreen(Screen):
|
|
|
348
369
|
def compose(self):
|
|
349
370
|
with Container():
|
|
350
371
|
yield LazyGithubStatusSummary()
|
|
351
|
-
yield MainViewPane()
|
|
372
|
+
yield MainViewPane(id="main-view-pane")
|
|
352
373
|
yield LazyGithubFooter()
|
|
353
374
|
|
|
375
|
+
@property
|
|
376
|
+
def main_view_pane(self) -> MainViewPane:
|
|
377
|
+
return self.query_one("#main-view-pane", MainViewPane)
|
|
378
|
+
|
|
354
379
|
@work
|
|
355
380
|
async def action_view_notifications(self) -> None:
|
|
356
|
-
await self.app.push_screen_wait(NotificationsModal())
|
|
381
|
+
notification = await self.app.push_screen_wait(NotificationsModal())
|
|
357
382
|
self.refresh_notification_count()
|
|
358
383
|
|
|
384
|
+
if not notification:
|
|
385
|
+
return
|
|
386
|
+
|
|
387
|
+
# The thing we'll do most immediately is swap over to the repo associated with the notification
|
|
388
|
+
await self.main_view_pane.load_repository(notification.repository)
|
|
389
|
+
self.set_currently_loaded_repo(notification.repository)
|
|
390
|
+
|
|
391
|
+
# Try to determine the source of the notification more specifically than just the repo. If we can, then we'll
|
|
392
|
+
# load that more-specific subject (such as the pull request), otherwise we will settle for the already loaded
|
|
393
|
+
# repo.
|
|
394
|
+
subject = await extract_notification_subject(notification.subject)
|
|
395
|
+
match subject:
|
|
396
|
+
case None:
|
|
397
|
+
self.notify("Opening repository for notification")
|
|
398
|
+
return
|
|
399
|
+
case PartialPullRequest():
|
|
400
|
+
await self.main_view_pane.load_pull_request(subject)
|
|
401
|
+
self.notify("Opening pull request for notification")
|
|
402
|
+
|
|
359
403
|
async def on_mount(self) -> None:
|
|
360
404
|
if LazyGithubContext.config.notifications.enabled:
|
|
361
405
|
self.refresh_notification_count()
|
|
@@ -399,5 +443,11 @@ class LazyGithubMainScreen(Screen):
|
|
|
399
443
|
NOTIFICATION_REFRESH_INTERVAL, self.refresh_notification_count
|
|
400
444
|
)
|
|
401
445
|
|
|
402
|
-
def
|
|
403
|
-
|
|
446
|
+
def set_currently_loaded_repo(self, repo: Repository) -> None:
|
|
447
|
+
lg.info(f"Selected repo {repo.full_name}")
|
|
448
|
+
LazyGithubContext.current_repo = repo
|
|
449
|
+
self.query_one("#currently_selected_repo", CurrentlySelectedRepo).current_repo_name = repo.full_name
|
|
450
|
+
|
|
451
|
+
@on(RepoSelected)
|
|
452
|
+
def handle_repo_selection(self, message: RepoSelected) -> None:
|
|
453
|
+
self.set_currently_loaded_repo(message.repo)
|
|
@@ -111,10 +111,11 @@ class ReviewContainer(Collapsible, can_focus=True):
|
|
|
111
111
|
else:
|
|
112
112
|
review_state_text = self.review.state.title()
|
|
113
113
|
yield Label(f"Review from {self.review.user.login} ({review_state_text})")
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
114
|
+
if self.review.body:
|
|
115
|
+
yield Markdown(self.review.body)
|
|
116
|
+
for comment in self.review.comments:
|
|
117
|
+
if comment_node := self.hierarchy[comment.id]:
|
|
118
|
+
yield ReviewConversation(self.pr, comment_node)
|
|
118
119
|
|
|
119
120
|
def action_reply_to_review(self) -> None:
|
|
120
121
|
self.app.push_screen(NewCommentModal(self.pr.repo, self.pr, self.review))
|
|
@@ -315,8 +315,8 @@ class PrConversationTabPane(TabPane):
|
|
|
315
315
|
for review in reviews:
|
|
316
316
|
if review.body:
|
|
317
317
|
handled_comment_node_ids.extend([c.id for c in review.comments])
|
|
318
|
-
|
|
319
|
-
|
|
318
|
+
review_container = ReviewContainer(self.pr, review, review_hierarchy)
|
|
319
|
+
self.comments_and_reviews.mount(review_container)
|
|
320
320
|
|
|
321
321
|
for comment in comments:
|
|
322
322
|
if comment.body and comment.id not in handled_comment_node_ids:
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
VERSION = "0.3.3"
|
|
@@ -12,7 +12,7 @@ wheels = [
|
|
|
12
12
|
|
|
13
13
|
[[package]]
|
|
14
14
|
name = "aiohttp"
|
|
15
|
-
version = "3.11.
|
|
15
|
+
version = "3.11.11"
|
|
16
16
|
source = { registry = "https://pypi.org/simple" }
|
|
17
17
|
dependencies = [
|
|
18
18
|
{ name = "aiohappyeyeballs" },
|
|
@@ -23,53 +23,53 @@ dependencies = [
|
|
|
23
23
|
{ name = "propcache" },
|
|
24
24
|
{ name = "yarl" },
|
|
25
25
|
]
|
|
26
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
27
|
-
wheels = [
|
|
28
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
29
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
30
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
31
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
32
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
33
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
34
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
35
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
36
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
37
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
38
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
39
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
40
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
41
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
42
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
43
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
44
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
45
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
46
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
47
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
48
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
49
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
50
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
51
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
52
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
53
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
54
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
55
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
56
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
57
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
58
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
59
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
60
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
61
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
62
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
63
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
64
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
65
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
66
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
67
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
68
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
69
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
70
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
71
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
72
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
26
|
+
sdist = { url = "https://files.pythonhosted.org/packages/fe/ed/f26db39d29cd3cb2f5a3374304c713fe5ab5a0e4c8ee25a0c45cc6adf844/aiohttp-3.11.11.tar.gz", hash = "sha256:bb49c7f1e6ebf3821a42d81d494f538107610c3a705987f53068546b0e90303e", size = 7669618 }
|
|
27
|
+
wheels = [
|
|
28
|
+
{ url = "https://files.pythonhosted.org/packages/34/ae/e8806a9f054e15f1d18b04db75c23ec38ec954a10c0a68d3bd275d7e8be3/aiohttp-3.11.11-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ba74ec819177af1ef7f59063c6d35a214a8fde6f987f7661f4f0eecc468a8f76", size = 708624 },
|
|
29
|
+
{ url = "https://files.pythonhosted.org/packages/c7/e0/313ef1a333fb4d58d0c55a6acb3cd772f5d7756604b455181049e222c020/aiohttp-3.11.11-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4af57160800b7a815f3fe0eba9b46bf28aafc195555f1824555fa2cfab6c1538", size = 468507 },
|
|
30
|
+
{ url = "https://files.pythonhosted.org/packages/a9/60/03455476bf1f467e5b4a32a465c450548b2ce724eec39d69f737191f936a/aiohttp-3.11.11-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ffa336210cf9cd8ed117011085817d00abe4c08f99968deef0013ea283547204", size = 455571 },
|
|
31
|
+
{ url = "https://files.pythonhosted.org/packages/be/f9/469588603bd75bf02c8ffb8c8a0d4b217eed446b49d4a767684685aa33fd/aiohttp-3.11.11-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81b8fe282183e4a3c7a1b72f5ade1094ed1c6345a8f153506d114af5bf8accd9", size = 1685694 },
|
|
32
|
+
{ url = "https://files.pythonhosted.org/packages/88/b9/1b7fa43faf6c8616fa94c568dc1309ffee2b6b68b04ac268e5d64b738688/aiohttp-3.11.11-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3af41686ccec6a0f2bdc66686dc0f403c41ac2089f80e2214a0f82d001052c03", size = 1743660 },
|
|
33
|
+
{ url = "https://files.pythonhosted.org/packages/2a/8b/0248d19dbb16b67222e75f6aecedd014656225733157e5afaf6a6a07e2e8/aiohttp-3.11.11-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:70d1f9dde0e5dd9e292a6d4d00058737052b01f3532f69c0c65818dac26dc287", size = 1785421 },
|
|
34
|
+
{ url = "https://files.pythonhosted.org/packages/c4/11/f478e071815a46ca0a5ae974651ff0c7a35898c55063305a896e58aa1247/aiohttp-3.11.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:249cc6912405917344192b9f9ea5cd5b139d49e0d2f5c7f70bdfaf6b4dbf3a2e", size = 1675145 },
|
|
35
|
+
{ url = "https://files.pythonhosted.org/packages/26/5d/284d182fecbb5075ae10153ff7374f57314c93a8681666600e3a9e09c505/aiohttp-3.11.11-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0eb98d90b6690827dcc84c246811feeb4e1eea683c0eac6caed7549be9c84665", size = 1619804 },
|
|
36
|
+
{ url = "https://files.pythonhosted.org/packages/1b/78/980064c2ad685c64ce0e8aeeb7ef1e53f43c5b005edcd7d32e60809c4992/aiohttp-3.11.11-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ec82bf1fda6cecce7f7b915f9196601a1bd1a3079796b76d16ae4cce6d0ef89b", size = 1654007 },
|
|
37
|
+
{ url = "https://files.pythonhosted.org/packages/21/8d/9e658d63b1438ad42b96f94da227f2e2c1d5c6001c9e8ffcc0bfb22e9105/aiohttp-3.11.11-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9fd46ce0845cfe28f108888b3ab17abff84ff695e01e73657eec3f96d72eef34", size = 1650022 },
|
|
38
|
+
{ url = "https://files.pythonhosted.org/packages/85/fd/a032bf7f2755c2df4f87f9effa34ccc1ef5cea465377dbaeef93bb56bbd6/aiohttp-3.11.11-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:bd176afcf8f5d2aed50c3647d4925d0db0579d96f75a31e77cbaf67d8a87742d", size = 1732899 },
|
|
39
|
+
{ url = "https://files.pythonhosted.org/packages/c5/0c/c2b85fde167dd440c7ba50af2aac20b5a5666392b174df54c00f888c5a75/aiohttp-3.11.11-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:ec2aa89305006fba9ffb98970db6c8221541be7bee4c1d027421d6f6df7d1ce2", size = 1755142 },
|
|
40
|
+
{ url = "https://files.pythonhosted.org/packages/bc/78/91ae1a3b3b3bed8b893c5d69c07023e151b1c95d79544ad04cf68f596c2f/aiohttp-3.11.11-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:92cde43018a2e17d48bb09c79e4d4cb0e236de5063ce897a5e40ac7cb4878773", size = 1692736 },
|
|
41
|
+
{ url = "https://files.pythonhosted.org/packages/77/89/a7ef9c4b4cdb546fcc650ca7f7395aaffbd267f0e1f648a436bec33c9b95/aiohttp-3.11.11-cp311-cp311-win32.whl", hash = "sha256:aba807f9569455cba566882c8938f1a549f205ee43c27b126e5450dc9f83cc62", size = 416418 },
|
|
42
|
+
{ url = "https://files.pythonhosted.org/packages/fc/db/2192489a8a51b52e06627506f8ac8df69ee221de88ab9bdea77aa793aa6a/aiohttp-3.11.11-cp311-cp311-win_amd64.whl", hash = "sha256:ae545f31489548c87b0cced5755cfe5a5308d00407000e72c4fa30b19c3220ac", size = 442509 },
|
|
43
|
+
{ url = "https://files.pythonhosted.org/packages/69/cf/4bda538c502f9738d6b95ada11603c05ec260807246e15e869fc3ec5de97/aiohttp-3.11.11-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e595c591a48bbc295ebf47cb91aebf9bd32f3ff76749ecf282ea7f9f6bb73886", size = 704666 },
|
|
44
|
+
{ url = "https://files.pythonhosted.org/packages/46/7b/87fcef2cad2fad420ca77bef981e815df6904047d0a1bd6aeded1b0d1d66/aiohttp-3.11.11-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3ea1b59dc06396b0b424740a10a0a63974c725b1c64736ff788a3689d36c02d2", size = 464057 },
|
|
45
|
+
{ url = "https://files.pythonhosted.org/packages/5a/a6/789e1f17a1b6f4a38939fbc39d29e1d960d5f89f73d0629a939410171bc0/aiohttp-3.11.11-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8811f3f098a78ffa16e0ea36dffd577eb031aea797cbdba81be039a4169e242c", size = 455996 },
|
|
46
|
+
{ url = "https://files.pythonhosted.org/packages/b7/dd/485061fbfef33165ce7320db36e530cd7116ee1098e9c3774d15a732b3fd/aiohttp-3.11.11-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd7227b87a355ce1f4bf83bfae4399b1f5bb42e0259cb9405824bd03d2f4336a", size = 1682367 },
|
|
47
|
+
{ url = "https://files.pythonhosted.org/packages/e9/d7/9ec5b3ea9ae215c311d88b2093e8da17e67b8856673e4166c994e117ee3e/aiohttp-3.11.11-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d40f9da8cabbf295d3a9dae1295c69975b86d941bc20f0a087f0477fa0a66231", size = 1736989 },
|
|
48
|
+
{ url = "https://files.pythonhosted.org/packages/d6/fb/ea94927f7bfe1d86178c9d3e0a8c54f651a0a655214cce930b3c679b8f64/aiohttp-3.11.11-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ffb3dc385f6bb1568aa974fe65da84723210e5d9707e360e9ecb51f59406cd2e", size = 1793265 },
|
|
49
|
+
{ url = "https://files.pythonhosted.org/packages/40/7f/6de218084f9b653026bd7063cd8045123a7ba90c25176465f266976d8c82/aiohttp-3.11.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8f5f7515f3552d899c61202d99dcb17d6e3b0de777900405611cd747cecd1b8", size = 1691841 },
|
|
50
|
+
{ url = "https://files.pythonhosted.org/packages/77/e2/992f43d87831cbddb6b09c57ab55499332f60ad6fdbf438ff4419c2925fc/aiohttp-3.11.11-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3499c7ffbfd9c6a3d8d6a2b01c26639da7e43d47c7b4f788016226b1e711caa8", size = 1619317 },
|
|
51
|
+
{ url = "https://files.pythonhosted.org/packages/96/74/879b23cdd816db4133325a201287c95bef4ce669acde37f8f1b8669e1755/aiohttp-3.11.11-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8e2bf8029dbf0810c7bfbc3e594b51c4cc9101fbffb583a3923aea184724203c", size = 1641416 },
|
|
52
|
+
{ url = "https://files.pythonhosted.org/packages/30/98/b123f6b15d87c54e58fd7ae3558ff594f898d7f30a90899718f3215ad328/aiohttp-3.11.11-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b6212a60e5c482ef90f2d788835387070a88d52cf6241d3916733c9176d39eab", size = 1646514 },
|
|
53
|
+
{ url = "https://files.pythonhosted.org/packages/d7/38/257fda3dc99d6978ab943141d5165ec74fd4b4164baa15e9c66fa21da86b/aiohttp-3.11.11-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:d119fafe7b634dbfa25a8c597718e69a930e4847f0b88e172744be24515140da", size = 1702095 },
|
|
54
|
+
{ url = "https://files.pythonhosted.org/packages/0c/f4/ddab089053f9fb96654df5505c0a69bde093214b3c3454f6bfdb1845f558/aiohttp-3.11.11-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:6fba278063559acc730abf49845d0e9a9e1ba74f85f0ee6efd5803f08b285853", size = 1734611 },
|
|
55
|
+
{ url = "https://files.pythonhosted.org/packages/c3/d6/f30b2bc520c38c8aa4657ed953186e535ae84abe55c08d0f70acd72ff577/aiohttp-3.11.11-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:92fc484e34b733704ad77210c7957679c5c3877bd1e6b6d74b185e9320cc716e", size = 1694576 },
|
|
56
|
+
{ url = "https://files.pythonhosted.org/packages/bc/97/b0a88c3f4c6d0020b34045ee6d954058abc870814f6e310c4c9b74254116/aiohttp-3.11.11-cp312-cp312-win32.whl", hash = "sha256:9f5b3c1ed63c8fa937a920b6c1bec78b74ee09593b3f5b979ab2ae5ef60d7600", size = 411363 },
|
|
57
|
+
{ url = "https://files.pythonhosted.org/packages/7f/23/cc36d9c398980acaeeb443100f0216f50a7cfe20c67a9fd0a2f1a5a846de/aiohttp-3.11.11-cp312-cp312-win_amd64.whl", hash = "sha256:1e69966ea6ef0c14ee53ef7a3d68b564cc408121ea56c0caa2dc918c1b2f553d", size = 437666 },
|
|
58
|
+
{ url = "https://files.pythonhosted.org/packages/49/d1/d8af164f400bad432b63e1ac857d74a09311a8334b0481f2f64b158b50eb/aiohttp-3.11.11-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:541d823548ab69d13d23730a06f97460f4238ad2e5ed966aaf850d7c369782d9", size = 697982 },
|
|
59
|
+
{ url = "https://files.pythonhosted.org/packages/92/d1/faad3bf9fa4bfd26b95c69fc2e98937d52b1ff44f7e28131855a98d23a17/aiohttp-3.11.11-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:929f3ed33743a49ab127c58c3e0a827de0664bfcda566108989a14068f820194", size = 460662 },
|
|
60
|
+
{ url = "https://files.pythonhosted.org/packages/db/61/0d71cc66d63909dabc4590f74eba71f91873a77ea52424401c2498d47536/aiohttp-3.11.11-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0882c2820fd0132240edbb4a51eb8ceb6eef8181db9ad5291ab3332e0d71df5f", size = 452950 },
|
|
61
|
+
{ url = "https://files.pythonhosted.org/packages/07/db/6d04bc7fd92784900704e16b745484ef45b77bd04e25f58f6febaadf7983/aiohttp-3.11.11-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b63de12e44935d5aca7ed7ed98a255a11e5cb47f83a9fded7a5e41c40277d104", size = 1665178 },
|
|
62
|
+
{ url = "https://files.pythonhosted.org/packages/54/5c/e95ade9ae29f375411884d9fd98e50535bf9fe316c9feb0f30cd2ac8f508/aiohttp-3.11.11-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aa54f8ef31d23c506910c21163f22b124facb573bff73930735cf9fe38bf7dff", size = 1717939 },
|
|
63
|
+
{ url = "https://files.pythonhosted.org/packages/6f/1c/1e7d5c5daea9e409ed70f7986001b8c9e3a49a50b28404498d30860edab6/aiohttp-3.11.11-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a344d5dc18074e3872777b62f5f7d584ae4344cd6006c17ba12103759d407af3", size = 1775125 },
|
|
64
|
+
{ url = "https://files.pythonhosted.org/packages/5d/66/890987e44f7d2f33a130e37e01a164168e6aff06fce15217b6eaf14df4f6/aiohttp-3.11.11-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b7fb429ab1aafa1f48578eb315ca45bd46e9c37de11fe45c7f5f4138091e2f1", size = 1677176 },
|
|
65
|
+
{ url = "https://files.pythonhosted.org/packages/8f/dc/e2ba57d7a52df6cdf1072fd5fa9c6301a68e1cd67415f189805d3eeb031d/aiohttp-3.11.11-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c341c7d868750e31961d6d8e60ff040fb9d3d3a46d77fd85e1ab8e76c3e9a5c4", size = 1603192 },
|
|
66
|
+
{ url = "https://files.pythonhosted.org/packages/6c/9e/8d08a57de79ca3a358da449405555e668f2c8871a7777ecd2f0e3912c272/aiohttp-3.11.11-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ed9ee95614a71e87f1a70bc81603f6c6760128b140bc4030abe6abaa988f1c3d", size = 1618296 },
|
|
67
|
+
{ url = "https://files.pythonhosted.org/packages/56/51/89822e3ec72db352c32e7fc1c690370e24e231837d9abd056490f3a49886/aiohttp-3.11.11-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:de8d38f1c2810fa2a4f1d995a2e9c70bb8737b18da04ac2afbf3971f65781d87", size = 1616524 },
|
|
68
|
+
{ url = "https://files.pythonhosted.org/packages/2c/fa/e2e6d9398f462ffaa095e84717c1732916a57f1814502929ed67dd7568ef/aiohttp-3.11.11-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:a9b7371665d4f00deb8f32208c7c5e652059b0fda41cf6dbcac6114a041f1cc2", size = 1685471 },
|
|
69
|
+
{ url = "https://files.pythonhosted.org/packages/ae/5f/6bb976e619ca28a052e2c0ca7b0251ccd893f93d7c24a96abea38e332bf6/aiohttp-3.11.11-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:620598717fce1b3bd14dd09947ea53e1ad510317c85dda2c9c65b622edc96b12", size = 1715312 },
|
|
70
|
+
{ url = "https://files.pythonhosted.org/packages/79/c1/756a7e65aa087c7fac724d6c4c038f2faaa2a42fe56dbc1dd62a33ca7213/aiohttp-3.11.11-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:bf8d9bfee991d8acc72d060d53860f356e07a50f0e0d09a8dfedea1c554dd0d5", size = 1672783 },
|
|
71
|
+
{ url = "https://files.pythonhosted.org/packages/73/ba/a6190ebb02176c7f75e6308da31f5d49f6477b651a3dcfaaaca865a298e2/aiohttp-3.11.11-cp313-cp313-win32.whl", hash = "sha256:9d73ee3725b7a737ad86c2eac5c57a4a97793d9f442599bea5ec67ac9f4bdc3d", size = 410229 },
|
|
72
|
+
{ url = "https://files.pythonhosted.org/packages/b8/62/c9fa5bafe03186a0e4699150a7fed9b1e73240996d0d2f0e5f70f3fdf471/aiohttp-3.11.11-cp313-cp313-win_amd64.whl", hash = "sha256:c7a06301c2fb096bdb0bd25fe2011531c1453b9f2c163c8031600ec73af1cc99", size = 436081 },
|
|
73
73
|
]
|
|
74
74
|
|
|
75
75
|
[[package]]
|
|
@@ -122,11 +122,11 @@ wheels = [
|
|
|
122
122
|
|
|
123
123
|
[[package]]
|
|
124
124
|
name = "attrs"
|
|
125
|
-
version = "24.
|
|
125
|
+
version = "24.3.0"
|
|
126
126
|
source = { registry = "https://pypi.org/simple" }
|
|
127
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
127
|
+
sdist = { url = "https://files.pythonhosted.org/packages/48/c8/6260f8ccc11f0917360fc0da435c5c9c7504e3db174d5a12a1494887b045/attrs-24.3.0.tar.gz", hash = "sha256:8f5c07333d543103541ba7be0e2ce16eeee8130cb0b3f9238ab904ce1e85baff", size = 805984 }
|
|
128
128
|
wheels = [
|
|
129
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
129
|
+
{ url = "https://files.pythonhosted.org/packages/89/aa/ab0f7891a01eeb2d2e338ae8fecbe57fcebea1a24dbb64d45801bfab481d/attrs-24.3.0-py3-none-any.whl", hash = "sha256:ac96cd038792094f438ad1f6ff80837353805ac950cd2aa0e0625ef19850c308", size = 63397 },
|
|
130
130
|
]
|
|
131
131
|
|
|
132
132
|
[[package]]
|
|
@@ -321,8 +321,8 @@ wheels = [
|
|
|
321
321
|
|
|
322
322
|
[[package]]
|
|
323
323
|
name = "lazy-github"
|
|
324
|
-
version = "0.2
|
|
325
|
-
source = {
|
|
324
|
+
version = "0.3.2"
|
|
325
|
+
source = { editable = "." }
|
|
326
326
|
dependencies = [
|
|
327
327
|
{ name = "click" },
|
|
328
328
|
{ name = "hishel" },
|
|
@@ -645,69 +645,69 @@ wheels = [
|
|
|
645
645
|
|
|
646
646
|
[[package]]
|
|
647
647
|
name = "pydantic"
|
|
648
|
-
version = "2.10.
|
|
648
|
+
version = "2.10.4"
|
|
649
649
|
source = { registry = "https://pypi.org/simple" }
|
|
650
650
|
dependencies = [
|
|
651
651
|
{ name = "annotated-types" },
|
|
652
652
|
{ name = "pydantic-core" },
|
|
653
653
|
{ name = "typing-extensions" },
|
|
654
654
|
]
|
|
655
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
655
|
+
sdist = { url = "https://files.pythonhosted.org/packages/70/7e/fb60e6fee04d0ef8f15e4e01ff187a196fa976eb0f0ab524af4599e5754c/pydantic-2.10.4.tar.gz", hash = "sha256:82f12e9723da6de4fe2ba888b5971157b3be7ad914267dea8f05f82b28254f06", size = 762094 }
|
|
656
656
|
wheels = [
|
|
657
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
657
|
+
{ url = "https://files.pythonhosted.org/packages/f3/26/3e1bbe954fde7ee22a6e7d31582c642aad9e84ffe4b5fb61e63b87cd326f/pydantic-2.10.4-py3-none-any.whl", hash = "sha256:597e135ea68be3a37552fb524bc7d0d66dcf93d395acd93a00682f1efcb8ee3d", size = 431765 },
|
|
658
658
|
]
|
|
659
659
|
|
|
660
660
|
[[package]]
|
|
661
661
|
name = "pydantic-core"
|
|
662
|
-
version = "2.27.
|
|
662
|
+
version = "2.27.2"
|
|
663
663
|
source = { registry = "https://pypi.org/simple" }
|
|
664
664
|
dependencies = [
|
|
665
665
|
{ name = "typing-extensions" },
|
|
666
666
|
]
|
|
667
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
668
|
-
wheels = [
|
|
669
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
670
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
671
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
672
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
673
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
674
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
675
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
676
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
677
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
678
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
679
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
680
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
681
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
682
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
683
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
684
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
685
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
686
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
687
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
688
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
689
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
690
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
691
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
692
|
-
{ url = "https://files.pythonhosted.org/packages/f2/
|
|
693
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
694
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
695
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
696
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
697
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
698
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
699
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
700
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
701
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
702
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
703
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
704
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
705
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
706
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
707
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
708
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
709
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
710
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
667
|
+
sdist = { url = "https://files.pythonhosted.org/packages/fc/01/f3e5ac5e7c25833db5eb555f7b7ab24cd6f8c322d3a3ad2d67a952dc0abc/pydantic_core-2.27.2.tar.gz", hash = "sha256:eb026e5a4c1fee05726072337ff51d1efb6f59090b7da90d30ea58625b1ffb39", size = 413443 }
|
|
668
|
+
wheels = [
|
|
669
|
+
{ url = "https://files.pythonhosted.org/packages/c2/89/f3450af9d09d44eea1f2c369f49e8f181d742f28220f88cc4dfaae91ea6e/pydantic_core-2.27.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:8e10c99ef58cfdf2a66fc15d66b16c4a04f62bca39db589ae8cba08bc55331bc", size = 1893421 },
|
|
670
|
+
{ url = "https://files.pythonhosted.org/packages/9e/e3/71fe85af2021f3f386da42d291412e5baf6ce7716bd7101ea49c810eda90/pydantic_core-2.27.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:26f32e0adf166a84d0cb63be85c562ca8a6fa8de28e5f0d92250c6b7e9e2aff7", size = 1814998 },
|
|
671
|
+
{ url = "https://files.pythonhosted.org/packages/a6/3c/724039e0d848fd69dbf5806894e26479577316c6f0f112bacaf67aa889ac/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c19d1ea0673cd13cc2f872f6c9ab42acc4e4f492a7ca9d3795ce2b112dd7e15", size = 1826167 },
|
|
672
|
+
{ url = "https://files.pythonhosted.org/packages/2b/5b/1b29e8c1fb5f3199a9a57c1452004ff39f494bbe9bdbe9a81e18172e40d3/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5e68c4446fe0810e959cdff46ab0a41ce2f2c86d227d96dc3847af0ba7def306", size = 1865071 },
|
|
673
|
+
{ url = "https://files.pythonhosted.org/packages/89/6c/3985203863d76bb7d7266e36970d7e3b6385148c18a68cc8915fd8c84d57/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d9640b0059ff4f14d1f37321b94061c6db164fbe49b334b31643e0528d100d99", size = 2036244 },
|
|
674
|
+
{ url = "https://files.pythonhosted.org/packages/0e/41/f15316858a246b5d723f7d7f599f79e37493b2e84bfc789e58d88c209f8a/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:40d02e7d45c9f8af700f3452f329ead92da4c5f4317ca9b896de7ce7199ea459", size = 2737470 },
|
|
675
|
+
{ url = "https://files.pythonhosted.org/packages/a8/7c/b860618c25678bbd6d1d99dbdfdf0510ccb50790099b963ff78a124b754f/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c1fd185014191700554795c99b347d64f2bb637966c4cfc16998a0ca700d048", size = 1992291 },
|
|
676
|
+
{ url = "https://files.pythonhosted.org/packages/bf/73/42c3742a391eccbeab39f15213ecda3104ae8682ba3c0c28069fbcb8c10d/pydantic_core-2.27.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d81d2068e1c1228a565af076598f9e7451712700b673de8f502f0334f281387d", size = 1994613 },
|
|
677
|
+
{ url = "https://files.pythonhosted.org/packages/94/7a/941e89096d1175d56f59340f3a8ebaf20762fef222c298ea96d36a6328c5/pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1a4207639fb02ec2dbb76227d7c751a20b1a6b4bc52850568e52260cae64ca3b", size = 2002355 },
|
|
678
|
+
{ url = "https://files.pythonhosted.org/packages/6e/95/2359937a73d49e336a5a19848713555605d4d8d6940c3ec6c6c0ca4dcf25/pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:3de3ce3c9ddc8bbd88f6e0e304dea0e66d843ec9de1b0042b0911c1663ffd474", size = 2126661 },
|
|
679
|
+
{ url = "https://files.pythonhosted.org/packages/2b/4c/ca02b7bdb6012a1adef21a50625b14f43ed4d11f1fc237f9d7490aa5078c/pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:30c5f68ded0c36466acede341551106821043e9afaad516adfb6e8fa80a4e6a6", size = 2153261 },
|
|
680
|
+
{ url = "https://files.pythonhosted.org/packages/72/9d/a241db83f973049a1092a079272ffe2e3e82e98561ef6214ab53fe53b1c7/pydantic_core-2.27.2-cp311-cp311-win32.whl", hash = "sha256:c70c26d2c99f78b125a3459f8afe1aed4d9687c24fd677c6a4436bc042e50d6c", size = 1812361 },
|
|
681
|
+
{ url = "https://files.pythonhosted.org/packages/e8/ef/013f07248041b74abd48a385e2110aa3a9bbfef0fbd97d4e6d07d2f5b89a/pydantic_core-2.27.2-cp311-cp311-win_amd64.whl", hash = "sha256:08e125dbdc505fa69ca7d9c499639ab6407cfa909214d500897d02afb816e7cc", size = 1982484 },
|
|
682
|
+
{ url = "https://files.pythonhosted.org/packages/10/1c/16b3a3e3398fd29dca77cea0a1d998d6bde3902fa2706985191e2313cc76/pydantic_core-2.27.2-cp311-cp311-win_arm64.whl", hash = "sha256:26f0d68d4b235a2bae0c3fc585c585b4ecc51382db0e3ba402a22cbc440915e4", size = 1867102 },
|
|
683
|
+
{ url = "https://files.pythonhosted.org/packages/d6/74/51c8a5482ca447871c93e142d9d4a92ead74de6c8dc5e66733e22c9bba89/pydantic_core-2.27.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:9e0c8cfefa0ef83b4da9588448b6d8d2a2bf1a53c3f1ae5fca39eb3061e2f0b0", size = 1893127 },
|
|
684
|
+
{ url = "https://files.pythonhosted.org/packages/d3/f3/c97e80721735868313c58b89d2de85fa80fe8dfeeed84dc51598b92a135e/pydantic_core-2.27.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:83097677b8e3bd7eaa6775720ec8e0405f1575015a463285a92bfdfe254529ef", size = 1811340 },
|
|
685
|
+
{ url = "https://files.pythonhosted.org/packages/9e/91/840ec1375e686dbae1bd80a9e46c26a1e0083e1186abc610efa3d9a36180/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:172fce187655fece0c90d90a678424b013f8fbb0ca8b036ac266749c09438cb7", size = 1822900 },
|
|
686
|
+
{ url = "https://files.pythonhosted.org/packages/f6/31/4240bc96025035500c18adc149aa6ffdf1a0062a4b525c932065ceb4d868/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:519f29f5213271eeeeb3093f662ba2fd512b91c5f188f3bb7b27bc5973816934", size = 1869177 },
|
|
687
|
+
{ url = "https://files.pythonhosted.org/packages/fa/20/02fbaadb7808be578317015c462655c317a77a7c8f0ef274bc016a784c54/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:05e3a55d124407fffba0dd6b0c0cd056d10e983ceb4e5dbd10dda135c31071d6", size = 2038046 },
|
|
688
|
+
{ url = "https://files.pythonhosted.org/packages/06/86/7f306b904e6c9eccf0668248b3f272090e49c275bc488a7b88b0823444a4/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c3ed807c7b91de05e63930188f19e921d1fe90de6b4f5cd43ee7fcc3525cb8c", size = 2685386 },
|
|
689
|
+
{ url = "https://files.pythonhosted.org/packages/8d/f0/49129b27c43396581a635d8710dae54a791b17dfc50c70164866bbf865e3/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fb4aadc0b9a0c063206846d603b92030eb6f03069151a625667f982887153e2", size = 1997060 },
|
|
690
|
+
{ url = "https://files.pythonhosted.org/packages/0d/0f/943b4af7cd416c477fd40b187036c4f89b416a33d3cc0ab7b82708a667aa/pydantic_core-2.27.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:28ccb213807e037460326424ceb8b5245acb88f32f3d2777427476e1b32c48c4", size = 2004870 },
|
|
691
|
+
{ url = "https://files.pythonhosted.org/packages/35/40/aea70b5b1a63911c53a4c8117c0a828d6790483f858041f47bab0b779f44/pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:de3cd1899e2c279b140adde9357c4495ed9d47131b4a4eaff9052f23398076b3", size = 1999822 },
|
|
692
|
+
{ url = "https://files.pythonhosted.org/packages/f2/b3/807b94fd337d58effc5498fd1a7a4d9d59af4133e83e32ae39a96fddec9d/pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:220f892729375e2d736b97d0e51466252ad84c51857d4d15f5e9692f9ef12be4", size = 2130364 },
|
|
693
|
+
{ url = "https://files.pythonhosted.org/packages/fc/df/791c827cd4ee6efd59248dca9369fb35e80a9484462c33c6649a8d02b565/pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a0fcd29cd6b4e74fe8ddd2c90330fd8edf2e30cb52acda47f06dd615ae72da57", size = 2158303 },
|
|
694
|
+
{ url = "https://files.pythonhosted.org/packages/9b/67/4e197c300976af185b7cef4c02203e175fb127e414125916bf1128b639a9/pydantic_core-2.27.2-cp312-cp312-win32.whl", hash = "sha256:1e2cb691ed9834cd6a8be61228471d0a503731abfb42f82458ff27be7b2186fc", size = 1834064 },
|
|
695
|
+
{ url = "https://files.pythonhosted.org/packages/1f/ea/cd7209a889163b8dcca139fe32b9687dd05249161a3edda62860430457a5/pydantic_core-2.27.2-cp312-cp312-win_amd64.whl", hash = "sha256:cc3f1a99a4f4f9dd1de4fe0312c114e740b5ddead65bb4102884b384c15d8bc9", size = 1989046 },
|
|
696
|
+
{ url = "https://files.pythonhosted.org/packages/bc/49/c54baab2f4658c26ac633d798dab66b4c3a9bbf47cff5284e9c182f4137a/pydantic_core-2.27.2-cp312-cp312-win_arm64.whl", hash = "sha256:3911ac9284cd8a1792d3cb26a2da18f3ca26c6908cc434a18f730dc0db7bfa3b", size = 1885092 },
|
|
697
|
+
{ url = "https://files.pythonhosted.org/packages/41/b1/9bc383f48f8002f99104e3acff6cba1231b29ef76cfa45d1506a5cad1f84/pydantic_core-2.27.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7d14bd329640e63852364c306f4d23eb744e0f8193148d4044dd3dacdaacbd8b", size = 1892709 },
|
|
698
|
+
{ url = "https://files.pythonhosted.org/packages/10/6c/e62b8657b834f3eb2961b49ec8e301eb99946245e70bf42c8817350cbefc/pydantic_core-2.27.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:82f91663004eb8ed30ff478d77c4d1179b3563df6cdb15c0817cd1cdaf34d154", size = 1811273 },
|
|
699
|
+
{ url = "https://files.pythonhosted.org/packages/ba/15/52cfe49c8c986e081b863b102d6b859d9defc63446b642ccbbb3742bf371/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71b24c7d61131bb83df10cc7e687433609963a944ccf45190cfc21e0887b08c9", size = 1823027 },
|
|
700
|
+
{ url = "https://files.pythonhosted.org/packages/b1/1c/b6f402cfc18ec0024120602bdbcebc7bdd5b856528c013bd4d13865ca473/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fa8e459d4954f608fa26116118bb67f56b93b209c39b008277ace29937453dc9", size = 1868888 },
|
|
701
|
+
{ url = "https://files.pythonhosted.org/packages/bd/7b/8cb75b66ac37bc2975a3b7de99f3c6f355fcc4d89820b61dffa8f1e81677/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce8918cbebc8da707ba805b7fd0b382816858728ae7fe19a942080c24e5b7cd1", size = 2037738 },
|
|
702
|
+
{ url = "https://files.pythonhosted.org/packages/c8/f1/786d8fe78970a06f61df22cba58e365ce304bf9b9f46cc71c8c424e0c334/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eda3f5c2a021bbc5d976107bb302e0131351c2ba54343f8a496dc8783d3d3a6a", size = 2685138 },
|
|
703
|
+
{ url = "https://files.pythonhosted.org/packages/a6/74/d12b2cd841d8724dc8ffb13fc5cef86566a53ed358103150209ecd5d1999/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd8086fa684c4775c27f03f062cbb9eaa6e17f064307e86b21b9e0abc9c0f02e", size = 1997025 },
|
|
704
|
+
{ url = "https://files.pythonhosted.org/packages/a0/6e/940bcd631bc4d9a06c9539b51f070b66e8f370ed0933f392db6ff350d873/pydantic_core-2.27.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8d9b3388db186ba0c099a6d20f0604a44eabdeef1777ddd94786cdae158729e4", size = 2004633 },
|
|
705
|
+
{ url = "https://files.pythonhosted.org/packages/50/cc/a46b34f1708d82498c227d5d80ce615b2dd502ddcfd8376fc14a36655af1/pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7a66efda2387de898c8f38c0cf7f14fca0b51a8ef0b24bfea5849f1b3c95af27", size = 1999404 },
|
|
706
|
+
{ url = "https://files.pythonhosted.org/packages/ca/2d/c365cfa930ed23bc58c41463bae347d1005537dc8db79e998af8ba28d35e/pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:18a101c168e4e092ab40dbc2503bdc0f62010e95d292b27827871dc85450d7ee", size = 2130130 },
|
|
707
|
+
{ url = "https://files.pythonhosted.org/packages/f4/d7/eb64d015c350b7cdb371145b54d96c919d4db516817f31cd1c650cae3b21/pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ba5dd002f88b78a4215ed2f8ddbdf85e8513382820ba15ad5ad8955ce0ca19a1", size = 2157946 },
|
|
708
|
+
{ url = "https://files.pythonhosted.org/packages/a4/99/bddde3ddde76c03b65dfd5a66ab436c4e58ffc42927d4ff1198ffbf96f5f/pydantic_core-2.27.2-cp313-cp313-win32.whl", hash = "sha256:1ebaf1d0481914d004a573394f4be3a7616334be70261007e47c2a6fe7e50130", size = 1834387 },
|
|
709
|
+
{ url = "https://files.pythonhosted.org/packages/71/47/82b5e846e01b26ac6f1893d3c5f9f3a2eb6ba79be26eef0b759b4fe72946/pydantic_core-2.27.2-cp313-cp313-win_amd64.whl", hash = "sha256:953101387ecf2f5652883208769a79e48db18c6df442568a0b5ccd8c2723abee", size = 1990453 },
|
|
710
|
+
{ url = "https://files.pythonhosted.org/packages/51/b2/b2b50d5ecf21acf870190ae5d093602d95f66c9c31f9d5de6062eb329ad1/pydantic_core-2.27.2-cp313-cp313-win_arm64.whl", hash = "sha256:ac4dbfd1691affb8f48c2c13241a2e3b60ff23247cbcf981759c768b6633cf8b", size = 1885186 },
|
|
711
711
|
]
|
|
712
712
|
|
|
713
713
|
[[package]]
|
|
@@ -721,15 +721,15 @@ wheels = [
|
|
|
721
721
|
|
|
722
722
|
[[package]]
|
|
723
723
|
name = "pyright"
|
|
724
|
-
version = "1.1.
|
|
724
|
+
version = "1.1.391"
|
|
725
725
|
source = { registry = "https://pypi.org/simple" }
|
|
726
726
|
dependencies = [
|
|
727
727
|
{ name = "nodeenv" },
|
|
728
728
|
{ name = "typing-extensions" },
|
|
729
729
|
]
|
|
730
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
730
|
+
sdist = { url = "https://files.pythonhosted.org/packages/11/05/4ea52a8a45cc28897edb485b4102d37cbfd5fce8445d679cdeb62bfad221/pyright-1.1.391.tar.gz", hash = "sha256:66b2d42cdf5c3cbab05f2f4b76e8bec8aa78e679bfa0b6ad7b923d9e027cadb2", size = 21965 }
|
|
731
731
|
wheels = [
|
|
732
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
732
|
+
{ url = "https://files.pythonhosted.org/packages/ad/89/66f49552fbeb21944c8077d11834b2201514a56fd1b7747ffff9630f1bd9/pyright-1.1.391-py3-none-any.whl", hash = "sha256:54fa186f8b3e8a55a44ebfa842636635688670c6896dcf6cf4a7fc75062f4d15", size = 18579 },
|
|
733
733
|
]
|
|
734
734
|
|
|
735
735
|
[[package]]
|
|
@@ -782,27 +782,27 @@ wheels = [
|
|
|
782
782
|
|
|
783
783
|
[[package]]
|
|
784
784
|
name = "ruff"
|
|
785
|
-
version = "0.8.
|
|
786
|
-
source = { registry = "https://pypi.org/simple" }
|
|
787
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
788
|
-
wheels = [
|
|
789
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
790
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
791
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
792
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
793
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
794
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
795
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
796
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
797
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
798
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
799
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
800
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
801
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
802
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
803
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
804
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
805
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
785
|
+
version = "0.8.4"
|
|
786
|
+
source = { registry = "https://pypi.org/simple" }
|
|
787
|
+
sdist = { url = "https://files.pythonhosted.org/packages/34/37/9c02181ef38d55b77d97c68b78e705fd14c0de0e5d085202bb2b52ce5be9/ruff-0.8.4.tar.gz", hash = "sha256:0d5f89f254836799af1615798caa5f80b7f935d7a670fad66c5007928e57ace8", size = 3402103 }
|
|
788
|
+
wheels = [
|
|
789
|
+
{ url = "https://files.pythonhosted.org/packages/05/67/f480bf2f2723b2e49af38ed2be75ccdb2798fca7d56279b585c8f553aaab/ruff-0.8.4-py3-none-linux_armv6l.whl", hash = "sha256:58072f0c06080276804c6a4e21a9045a706584a958e644353603d36ca1eb8a60", size = 10546415 },
|
|
790
|
+
{ url = "https://files.pythonhosted.org/packages/eb/7a/5aba20312c73f1ce61814e520d1920edf68ca3b9c507bd84d8546a8ecaa8/ruff-0.8.4-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:ffb60904651c00a1e0b8df594591770018a0f04587f7deeb3838344fe3adabac", size = 10346113 },
|
|
791
|
+
{ url = "https://files.pythonhosted.org/packages/76/f4/c41de22b3728486f0aa95383a44c42657b2db4062f3234ca36fc8cf52d8b/ruff-0.8.4-py3-none-macosx_11_0_arm64.whl", hash = "sha256:6ddf5d654ac0d44389f6bf05cee4caeefc3132a64b58ea46738111d687352296", size = 9943564 },
|
|
792
|
+
{ url = "https://files.pythonhosted.org/packages/0e/f0/afa0d2191af495ac82d4cbbfd7a94e3df6f62a04ca412033e073b871fc6d/ruff-0.8.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e248b1f0fa2749edd3350a2a342b67b43a2627434c059a063418e3d375cfe643", size = 10805522 },
|
|
793
|
+
{ url = "https://files.pythonhosted.org/packages/12/57/5d1e9a0fd0c228e663894e8e3a8e7063e5ee90f8e8e60cf2085f362bfa1a/ruff-0.8.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bf197b98ed86e417412ee3b6c893f44c8864f816451441483253d5ff22c0e81e", size = 10306763 },
|
|
794
|
+
{ url = "https://files.pythonhosted.org/packages/04/df/f069fdb02e408be8aac6853583572a2873f87f866fe8515de65873caf6b8/ruff-0.8.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c41319b85faa3aadd4d30cb1cffdd9ac6b89704ff79f7664b853785b48eccdf3", size = 11359574 },
|
|
795
|
+
{ url = "https://files.pythonhosted.org/packages/d3/04/37c27494cd02e4a8315680debfc6dfabcb97e597c07cce0044db1f9dfbe2/ruff-0.8.4-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:9f8402b7c4f96463f135e936d9ab77b65711fcd5d72e5d67597b543bbb43cf3f", size = 12094851 },
|
|
796
|
+
{ url = "https://files.pythonhosted.org/packages/81/b1/c5d7fb68506cab9832d208d03ea4668da9a9887a4a392f4f328b1bf734ad/ruff-0.8.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e4e56b3baa9c23d324ead112a4fdf20db9a3f8f29eeabff1355114dd96014604", size = 11655539 },
|
|
797
|
+
{ url = "https://files.pythonhosted.org/packages/ef/38/8f8f2c8898dc8a7a49bc340cf6f00226917f0f5cb489e37075bcb2ce3671/ruff-0.8.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:736272574e97157f7edbbb43b1d046125fce9e7d8d583d5d65d0c9bf2c15addf", size = 12912805 },
|
|
798
|
+
{ url = "https://files.pythonhosted.org/packages/06/dd/fa6660c279f4eb320788876d0cff4ea18d9af7d9ed7216d7bd66877468d0/ruff-0.8.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e5fe710ab6061592521f902fca7ebcb9fabd27bc7c57c764298b1c1f15fff720", size = 11205976 },
|
|
799
|
+
{ url = "https://files.pythonhosted.org/packages/a8/d7/de94cc89833b5de455750686c17c9e10f4e1ab7ccdc5521b8fe911d1477e/ruff-0.8.4-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:13e9ec6d6b55f6da412d59953d65d66e760d583dd3c1c72bf1f26435b5bfdbae", size = 10792039 },
|
|
800
|
+
{ url = "https://files.pythonhosted.org/packages/6d/15/3e4906559248bdbb74854af684314608297a05b996062c9d72e0ef7c7097/ruff-0.8.4-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:97d9aefef725348ad77d6db98b726cfdb075a40b936c7984088804dfd38268a7", size = 10400088 },
|
|
801
|
+
{ url = "https://files.pythonhosted.org/packages/a2/21/9ed4c0e8133cb4a87a18d470f534ad1a8a66d7bec493bcb8bda2d1a5d5be/ruff-0.8.4-py3-none-musllinux_1_2_i686.whl", hash = "sha256:ab78e33325a6f5374e04c2ab924a3367d69a0da36f8c9cb6b894a62017506111", size = 10900814 },
|
|
802
|
+
{ url = "https://files.pythonhosted.org/packages/0d/5d/122a65a18955bd9da2616b69bc839351f8baf23b2805b543aa2f0aed72b5/ruff-0.8.4-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:8ef06f66f4a05c3ddbc9121a8b0cecccd92c5bf3dd43b5472ffe40b8ca10f0f8", size = 11268828 },
|
|
803
|
+
{ url = "https://files.pythonhosted.org/packages/43/a9/1676ee9106995381e3d34bccac5bb28df70194167337ed4854c20f27c7ba/ruff-0.8.4-py3-none-win32.whl", hash = "sha256:552fb6d861320958ca5e15f28b20a3d071aa83b93caee33a87b471f99a6c0835", size = 8805621 },
|
|
804
|
+
{ url = "https://files.pythonhosted.org/packages/10/98/ed6b56a30ee76771c193ff7ceeaf1d2acc98d33a1a27b8479cbdb5c17a23/ruff-0.8.4-py3-none-win_amd64.whl", hash = "sha256:f21a1143776f8656d7f364bd264a9d60f01b7f52243fbe90e7670c0dfe0cf65d", size = 9660086 },
|
|
805
|
+
{ url = "https://files.pythonhosted.org/packages/13/9f/026e18ca7d7766783d779dae5e9c656746c6ede36ef73c6d934aaf4a6dec/ruff-0.8.4-py3-none-win_arm64.whl", hash = "sha256:9183dd615d8df50defa8b1d9a074053891ba39025cf5ae88e8bcb52edcc4bf08", size = 9074500 },
|
|
806
806
|
]
|
|
807
807
|
|
|
808
808
|
[[package]]
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
VERSION = "0.3.2"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|