notesctl 1.0.1__tar.gz → 1.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.
- {notesctl-1.0.1 → notesctl-1.0.3}/.github/workflows/ci.yml +1 -1
- {notesctl-1.0.1 → notesctl-1.0.3}/CHANGELOG.md +18 -1
- notesctl-1.0.3/CLAUDE.md +63 -0
- {notesctl-1.0.1 → notesctl-1.0.3}/PKG-INFO +2 -4
- {notesctl-1.0.1 → notesctl-1.0.3}/pyproject.toml +21 -23
- {notesctl-1.0.1 → notesctl-1.0.3}/src/notesctl/cli.py +4 -0
- {notesctl-1.0.1 → notesctl-1.0.3}/src/notesctl/converter/markdown.py +12 -1
- notesctl-1.0.3/tests/test_cli.py +49 -0
- {notesctl-1.0.1 → notesctl-1.0.3}/uv.lock +27 -144
- {notesctl-1.0.1 → notesctl-1.0.3}/.github/workflows/publish.yml +0 -0
- {notesctl-1.0.1 → notesctl-1.0.3}/.gitignore +0 -0
- {notesctl-1.0.1 → notesctl-1.0.3}/LICENSE +0 -0
- {notesctl-1.0.1 → notesctl-1.0.3}/README.md +0 -0
- {notesctl-1.0.1 → notesctl-1.0.3}/proto/notestore.proto +0 -0
- {notesctl-1.0.1 → notesctl-1.0.3}/src/notesctl/__init__.py +0 -0
- {notesctl-1.0.1 → notesctl-1.0.3}/src/notesctl/converter/__init__.py +0 -0
- {notesctl-1.0.1 → notesctl-1.0.3}/src/notesctl/database/__init__.py +0 -0
- {notesctl-1.0.1 → notesctl-1.0.3}/src/notesctl/database/connection.py +0 -0
- {notesctl-1.0.1 → notesctl-1.0.3}/src/notesctl/database/models.py +0 -0
- {notesctl-1.0.1 → notesctl-1.0.3}/src/notesctl/database/queries.py +0 -0
- {notesctl-1.0.1 → notesctl-1.0.3}/src/notesctl/exporter.py +0 -0
- {notesctl-1.0.1 → notesctl-1.0.3}/src/notesctl/parser/__init__.py +0 -0
- {notesctl-1.0.1 → notesctl-1.0.3}/src/notesctl/parser/note_parser.py +0 -0
- {notesctl-1.0.1 → notesctl-1.0.3}/src/notesctl/parser/protobuf/__init__.py +0 -0
- {notesctl-1.0.1 → notesctl-1.0.3}/src/notesctl/parser/protobuf/notestore_pb2.py +0 -0
- {notesctl-1.0.1 → notesctl-1.0.3}/tests/__init__.py +0 -0
- {notesctl-1.0.1 → notesctl-1.0.3}/tests/test_connection.py +0 -0
- {notesctl-1.0.1 → notesctl-1.0.3}/tests/test_converter.py +0 -0
- {notesctl-1.0.1 → notesctl-1.0.3}/tests/test_models.py +0 -0
- {notesctl-1.0.1 → notesctl-1.0.3}/tests/test_parser.py +0 -0
|
@@ -7,6 +7,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [1.0.3] - 2026-06-08
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- `export` now exits with a non-zero status when notes are skipped due to errors, so backup and automation workflows no longer treat an incomplete export as successful
|
|
15
|
+
- `list-notes --limit` rejects values below 1, preventing negative limits from hiding notes and printing a misleading "Showing -1 of N notes" count
|
|
16
|
+
|
|
17
|
+
## [1.0.2] - 2026-01-17
|
|
18
|
+
|
|
19
|
+
### Fixed
|
|
20
|
+
|
|
21
|
+
- Fixed duplicate title headers appearing in exported markdown files
|
|
22
|
+
- Apple Notes stores the note title as the first paragraph with `StyleType.TITLE`, causing the title to render twice when `include_title_heading` is enabled
|
|
23
|
+
- Skip the first paragraph when it matches the note title to eliminate duplication
|
|
24
|
+
|
|
10
25
|
## [1.0.1] - 2026-01-17
|
|
11
26
|
|
|
12
27
|
### Fixed
|
|
@@ -42,6 +57,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
42
57
|
- Original Notes database is never modified
|
|
43
58
|
- All queries validated to be SELECT statements only
|
|
44
59
|
|
|
45
|
-
[Unreleased]: https://github.com/jwmoss/notesctl/compare/v1.0.
|
|
60
|
+
[Unreleased]: https://github.com/jwmoss/notesctl/compare/v1.0.3...HEAD
|
|
61
|
+
[1.0.3]: https://github.com/jwmoss/notesctl/compare/v1.0.2...v1.0.3
|
|
62
|
+
[1.0.2]: https://github.com/jwmoss/notesctl/compare/v1.0.1...v1.0.2
|
|
46
63
|
[1.0.1]: https://github.com/jwmoss/notesctl/compare/v1.0.0...v1.0.1
|
|
47
64
|
[1.0.0]: https://github.com/jwmoss/notesctl/releases/tag/v1.0.0
|
notesctl-1.0.3/CLAUDE.md
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# CLAUDE.md
|
|
2
|
+
|
|
3
|
+
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
4
|
+
|
|
5
|
+
## Build & Development Commands
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# Install dependencies (including dev tools)
|
|
9
|
+
uv pip install -e ".[dev]"
|
|
10
|
+
|
|
11
|
+
# Run the CLI
|
|
12
|
+
uv run notesctl export -o ~/notes-backup
|
|
13
|
+
uv run notesctl list-notes
|
|
14
|
+
uv run notesctl list-folders
|
|
15
|
+
uv run notesctl stats
|
|
16
|
+
|
|
17
|
+
# Run tests
|
|
18
|
+
uv run pytest # all tests
|
|
19
|
+
uv run pytest tests/test_parser.py # single file
|
|
20
|
+
uv run pytest -k "test_name" # single test by name
|
|
21
|
+
|
|
22
|
+
# Linting and type checking
|
|
23
|
+
uv run ruff check src tests # lint
|
|
24
|
+
uv run ruff format src tests # format
|
|
25
|
+
uv run ty check # type check
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Architecture
|
|
29
|
+
|
|
30
|
+
This is a CLI tool (`notesctl`) that exports Apple Notes from the iCloud SQLite database to Markdown files.
|
|
31
|
+
|
|
32
|
+
### Data Flow
|
|
33
|
+
|
|
34
|
+
1. **Database Layer** (`database/`) - Safe read-only access to Apple Notes SQLite database
|
|
35
|
+
- `SafeNotesDatabase` copies the database to a temp directory before reading (for safety)
|
|
36
|
+
- Opens in read-only mode (`?mode=ro`) and only allows SELECT queries
|
|
37
|
+
- `NotesQueries` provides typed queries returning `Note`, `Folder`, `Attachment` models
|
|
38
|
+
|
|
39
|
+
2. **Parser Layer** (`parser/`) - Extracts content from Notes' gzip-compressed protobuf format
|
|
40
|
+
- `NoteParser` decompresses and parses protobuf data into `ParsedNote` structure
|
|
41
|
+
- Handles text formatting (bold, italic, links), paragraph styles (headings, lists, checklists)
|
|
42
|
+
- Protobuf definitions are in `parser/protobuf/` (auto-generated `_pb2.py` files)
|
|
43
|
+
|
|
44
|
+
3. **Converter Layer** (`converter/`) - Transforms parsed notes to Markdown
|
|
45
|
+
- `MarkdownConverter` generates Markdown with optional YAML frontmatter
|
|
46
|
+
- Handles inline formatting, lists, blockquotes, and attachment references
|
|
47
|
+
|
|
48
|
+
4. **Exporter** (`exporter.py`) - Orchestrates the full export pipeline
|
|
49
|
+
- Coordinates database queries, parsing, conversion, and file writing
|
|
50
|
+
- Copies attachments from `~/Library/Group Containers/group.com.apple.notes/`
|
|
51
|
+
|
|
52
|
+
5. **CLI** (`cli.py`) - Typer-based command interface with Rich output
|
|
53
|
+
|
|
54
|
+
### Key Safety Design
|
|
55
|
+
|
|
56
|
+
The tool is designed to never modify the original Notes database:
|
|
57
|
+
- Database files are copied to temp directory before reading
|
|
58
|
+
- SQLite connection uses URI mode=ro (read-only)
|
|
59
|
+
- Only SELECT queries are allowed (enforced in `SafeNotesDatabase.execute()`)
|
|
60
|
+
|
|
61
|
+
### Protobuf Files
|
|
62
|
+
|
|
63
|
+
The `parser/protobuf/notestore_pb2.py` is auto-generated and excluded from ty/ruff checks. The protobuf schema defines how Apple Notes stores note content (text, formatting, attachments).
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: notesctl
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.3
|
|
4
4
|
Summary: Export Apple iCloud Notes to Markdown files safely
|
|
5
5
|
Project-URL: Homepage, https://github.com/jwmoss/notesctl
|
|
6
6
|
Project-URL: Repository, https://github.com/jwmoss/notesctl
|
|
@@ -28,12 +28,10 @@ Requires-Dist: rich>=13.0.0
|
|
|
28
28
|
Requires-Dist: typer>=0.9.0
|
|
29
29
|
Provides-Extra: dev
|
|
30
30
|
Requires-Dist: grpcio-tools>=1.60.0; extra == 'dev'
|
|
31
|
-
Requires-Dist: mypy>=1.0.0; extra == 'dev'
|
|
32
31
|
Requires-Dist: pytest-cov>=4.0.0; extra == 'dev'
|
|
33
32
|
Requires-Dist: pytest>=7.0.0; extra == 'dev'
|
|
34
33
|
Requires-Dist: ruff>=0.8.0; extra == 'dev'
|
|
35
|
-
Requires-Dist:
|
|
36
|
-
Requires-Dist: types-protobuf>=4.24.0; extra == 'dev'
|
|
34
|
+
Requires-Dist: ty>=0.0.1; extra == 'dev'
|
|
37
35
|
Description-Content-Type: text/markdown
|
|
38
36
|
|
|
39
37
|
# notesctl
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "notesctl"
|
|
7
|
-
version = "1.0.
|
|
7
|
+
version = "1.0.3"
|
|
8
8
|
description = "Export Apple iCloud Notes to Markdown files safely"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.11"
|
|
@@ -42,9 +42,7 @@ dev = [
|
|
|
42
42
|
"pytest>=7.0.0",
|
|
43
43
|
"pytest-cov>=4.0.0",
|
|
44
44
|
"ruff>=0.8.0",
|
|
45
|
-
"
|
|
46
|
-
"types-protobuf>=4.24.0",
|
|
47
|
-
"types-Pillow>=10.0.0",
|
|
45
|
+
"ty>=0.0.1",
|
|
48
46
|
"grpcio-tools>=1.60.0",
|
|
49
47
|
]
|
|
50
48
|
|
|
@@ -111,25 +109,25 @@ ignore = [
|
|
|
111
109
|
[tool.ruff.lint.isort]
|
|
112
110
|
known-first-party = ["notesctl"]
|
|
113
111
|
|
|
114
|
-
[tool.
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
112
|
+
[tool.ty.environment]
|
|
113
|
+
python-version = "3.11"
|
|
114
|
+
|
|
115
|
+
[tool.ty.src]
|
|
116
|
+
include = ["src", "tests"]
|
|
117
|
+
exclude = ["*_pb2.py"]
|
|
118
|
+
|
|
119
|
+
[[tool.ty.overrides]]
|
|
120
|
+
include = ["src/notesctl/parser/protobuf/*"]
|
|
121
|
+
|
|
122
|
+
[tool.ty.overrides.rules]
|
|
123
|
+
# Ignore all errors in generated protobuf files
|
|
124
|
+
unresolved-import = "ignore"
|
|
125
|
+
invalid-assignment = "ignore"
|
|
126
|
+
unknown-argument = "ignore"
|
|
127
|
+
missing-argument = "ignore"
|
|
128
|
+
too-many-positional-arguments = "ignore"
|
|
129
|
+
invalid-return-type = "ignore"
|
|
130
|
+
unresolved-attribute = "ignore"
|
|
133
131
|
|
|
134
132
|
[tool.pytest.ini_options]
|
|
135
133
|
testpaths = ["tests"]
|
|
@@ -129,6 +129,9 @@ def export(
|
|
|
129
129
|
for error in result.errors[:10]:
|
|
130
130
|
console.print(f" {error}")
|
|
131
131
|
|
|
132
|
+
if not dry_run and (result.skipped_errors or result.errors):
|
|
133
|
+
raise typer.Exit(1)
|
|
134
|
+
|
|
132
135
|
|
|
133
136
|
@app.command("list-notes")
|
|
134
137
|
def list_notes(
|
|
@@ -153,6 +156,7 @@ def list_notes(
|
|
|
153
156
|
"--limit",
|
|
154
157
|
"-l",
|
|
155
158
|
help="Maximum number of notes to show",
|
|
159
|
+
min=1,
|
|
156
160
|
),
|
|
157
161
|
] = 50,
|
|
158
162
|
db_path: Annotated[
|
|
@@ -52,9 +52,20 @@ class MarkdownConverter:
|
|
|
52
52
|
parts.append(f"# {note.title}")
|
|
53
53
|
parts.append("")
|
|
54
54
|
|
|
55
|
+
# Filter out duplicate title paragraph if we're already including the title
|
|
56
|
+
paragraphs_to_convert = parsed.paragraphs
|
|
57
|
+
if self.options.include_title_heading and paragraphs_to_convert:
|
|
58
|
+
first_para = paragraphs_to_convert[0]
|
|
59
|
+
# Skip first paragraph if it's a title that matches the note title
|
|
60
|
+
if (
|
|
61
|
+
first_para.style == StyleType.TITLE
|
|
62
|
+
and first_para.plain_text.strip() == note.title.strip()
|
|
63
|
+
):
|
|
64
|
+
paragraphs_to_convert = paragraphs_to_convert[1:]
|
|
65
|
+
|
|
55
66
|
# Convert paragraphs
|
|
56
67
|
attachment_map = {a.identifier: a for a in (attachments or [])}
|
|
57
|
-
converted_paragraphs = self._convert_paragraphs(
|
|
68
|
+
converted_paragraphs = self._convert_paragraphs(paragraphs_to_convert, attachment_map)
|
|
58
69
|
parts.extend(converted_paragraphs)
|
|
59
70
|
|
|
60
71
|
return "\n".join(parts)
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"""Tests for the command-line interface."""
|
|
2
|
+
|
|
3
|
+
from pathlib import Path
|
|
4
|
+
from typing import Any
|
|
5
|
+
|
|
6
|
+
from typer.testing import CliRunner
|
|
7
|
+
|
|
8
|
+
from notesctl.cli import app
|
|
9
|
+
from notesctl.exporter import ExportResult
|
|
10
|
+
|
|
11
|
+
runner = CliRunner()
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def test_export_exits_nonzero_when_notes_fail(monkeypatch):
|
|
15
|
+
"""Export should fail automation when notes are skipped due to errors."""
|
|
16
|
+
|
|
17
|
+
class StubExporter:
|
|
18
|
+
def __init__(self, db_path: Path | None = None) -> None:
|
|
19
|
+
self.db_path = db_path
|
|
20
|
+
|
|
21
|
+
def export(self, *_args: Any) -> ExportResult:
|
|
22
|
+
return ExportResult(
|
|
23
|
+
total_notes=2,
|
|
24
|
+
exported_notes=1,
|
|
25
|
+
skipped_encrypted=0,
|
|
26
|
+
skipped_errors=1,
|
|
27
|
+
attachments_copied=0,
|
|
28
|
+
output_path=Path("/tmp/notes-export"),
|
|
29
|
+
exported_files=[],
|
|
30
|
+
errors=["boom"],
|
|
31
|
+
)
|
|
32
|
+
|
|
33
|
+
monkeypatch.setattr("notesctl.cli.NotesExporter", StubExporter)
|
|
34
|
+
|
|
35
|
+
result = runner.invoke(app, ["export"])
|
|
36
|
+
|
|
37
|
+
assert result.exit_code == 1
|
|
38
|
+
assert "Failed to export 1 notes" in result.output
|
|
39
|
+
assert "boom" in result.output
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def test_list_notes_rejects_negative_limit():
|
|
43
|
+
"""Negative limits should fail CLI validation before rendering notes."""
|
|
44
|
+
result = runner.invoke(app, ["list-notes", "--limit", "-1"])
|
|
45
|
+
|
|
46
|
+
assert result.exit_code != 0
|
|
47
|
+
assert "Invalid value" in result.output
|
|
48
|
+
assert "Showing -1" not in result.output
|
|
49
|
+
assert "Notes (" not in result.output
|
|
@@ -227,69 +227,6 @@ wheels = [
|
|
|
227
227
|
{ url = "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12", size = 7484 },
|
|
228
228
|
]
|
|
229
229
|
|
|
230
|
-
[[package]]
|
|
231
|
-
name = "librt"
|
|
232
|
-
version = "0.7.8"
|
|
233
|
-
source = { registry = "https://pypi.org/simple" }
|
|
234
|
-
sdist = { url = "https://files.pythonhosted.org/packages/e7/24/5f3646ff414285e0f7708fa4e946b9bf538345a41d1c375c439467721a5e/librt-0.7.8.tar.gz", hash = "sha256:1a4ede613941d9c3470b0368be851df6bb78ab218635512d0370b27a277a0862", size = 148323 }
|
|
235
|
-
wheels = [
|
|
236
|
-
{ url = "https://files.pythonhosted.org/packages/1b/a3/87ea9c1049f2c781177496ebee29430e4631f439b8553a4969c88747d5d8/librt-0.7.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ff3e9c11aa260c31493d4b3197d1e28dd07768594a4f92bec4506849d736248f", size = 56507 },
|
|
237
|
-
{ url = "https://files.pythonhosted.org/packages/5e/4a/23bcef149f37f771ad30203d561fcfd45b02bc54947b91f7a9ac34815747/librt-0.7.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ddb52499d0b3ed4aa88746aaf6f36a08314677d5c346234c3987ddc506404eac", size = 58455 },
|
|
238
|
-
{ url = "https://files.pythonhosted.org/packages/22/6e/46eb9b85c1b9761e0f42b6e6311e1cc544843ac897457062b9d5d0b21df4/librt-0.7.8-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:e9c0afebbe6ce177ae8edba0c7c4d626f2a0fc12c33bb993d163817c41a7a05c", size = 164956 },
|
|
239
|
-
{ url = "https://files.pythonhosted.org/packages/7a/3f/aa7c7f6829fb83989feb7ba9aa11c662b34b4bd4bd5b262f2876ba3db58d/librt-0.7.8-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:631599598e2c76ded400c0a8722dec09217c89ff64dc54b060f598ed68e7d2a8", size = 174364 },
|
|
240
|
-
{ url = "https://files.pythonhosted.org/packages/3f/2d/d57d154b40b11f2cb851c4df0d4c4456bacd9b1ccc4ecb593ddec56c1a8b/librt-0.7.8-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9c1ba843ae20db09b9d5c80475376168feb2640ce91cd9906414f23cc267a1ff", size = 188034 },
|
|
241
|
-
{ url = "https://files.pythonhosted.org/packages/59/f9/36c4dad00925c16cd69d744b87f7001792691857d3b79187e7a673e812fb/librt-0.7.8-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:b5b007bb22ea4b255d3ee39dfd06d12534de2fcc3438567d9f48cdaf67ae1ae3", size = 186295 },
|
|
242
|
-
{ url = "https://files.pythonhosted.org/packages/23/9b/8a9889d3df5efb67695a67785028ccd58e661c3018237b73ad081691d0cb/librt-0.7.8-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:dbd79caaf77a3f590cbe32dc2447f718772d6eea59656a7dcb9311161b10fa75", size = 181470 },
|
|
243
|
-
{ url = "https://files.pythonhosted.org/packages/43/64/54d6ef11afca01fef8af78c230726a9394759f2addfbf7afc5e3cc032a45/librt-0.7.8-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:87808a8d1e0bd62a01cafc41f0fd6818b5a5d0ca0d8a55326a81643cdda8f873", size = 201713 },
|
|
244
|
-
{ url = "https://files.pythonhosted.org/packages/2d/29/73e7ed2991330b28919387656f54109139b49e19cd72902f466bd44415fd/librt-0.7.8-cp311-cp311-win32.whl", hash = "sha256:31724b93baa91512bd0a376e7cf0b59d8b631ee17923b1218a65456fa9bda2e7", size = 43803 },
|
|
245
|
-
{ url = "https://files.pythonhosted.org/packages/3f/de/66766ff48ed02b4d78deea30392ae200bcbd99ae61ba2418b49fd50a4831/librt-0.7.8-cp311-cp311-win_amd64.whl", hash = "sha256:978e8b5f13e52cf23a9e80f3286d7546baa70bc4ef35b51d97a709d0b28e537c", size = 50080 },
|
|
246
|
-
{ url = "https://files.pythonhosted.org/packages/6f/e3/33450438ff3a8c581d4ed7f798a70b07c3206d298cf0b87d3806e72e3ed8/librt-0.7.8-cp311-cp311-win_arm64.whl", hash = "sha256:20e3946863d872f7cabf7f77c6c9d370b8b3d74333d3a32471c50d3a86c0a232", size = 43383 },
|
|
247
|
-
{ url = "https://files.pythonhosted.org/packages/56/04/79d8fcb43cae376c7adbab7b2b9f65e48432c9eced62ac96703bcc16e09b/librt-0.7.8-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:9b6943885b2d49c48d0cff23b16be830ba46b0152d98f62de49e735c6e655a63", size = 57472 },
|
|
248
|
-
{ url = "https://files.pythonhosted.org/packages/b4/ba/60b96e93043d3d659da91752689023a73981336446ae82078cddf706249e/librt-0.7.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:46ef1f4b9b6cc364b11eea0ecc0897314447a66029ee1e55859acb3dd8757c93", size = 58986 },
|
|
249
|
-
{ url = "https://files.pythonhosted.org/packages/7c/26/5215e4cdcc26e7be7eee21955a7e13cbf1f6d7d7311461a6014544596fac/librt-0.7.8-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:907ad09cfab21e3c86e8f1f87858f7049d1097f77196959c033612f532b4e592", size = 168422 },
|
|
250
|
-
{ url = "https://files.pythonhosted.org/packages/0f/84/e8d1bc86fa0159bfc24f3d798d92cafd3897e84c7fea7fe61b3220915d76/librt-0.7.8-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2991b6c3775383752b3ca0204842743256f3ad3deeb1d0adc227d56b78a9a850", size = 177478 },
|
|
251
|
-
{ url = "https://files.pythonhosted.org/packages/57/11/d0268c4b94717a18aa91df1100e767b010f87b7ae444dafaa5a2d80f33a6/librt-0.7.8-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:03679b9856932b8c8f674e87aa3c55ea11c9274301f76ae8dc4d281bda55cf62", size = 192439 },
|
|
252
|
-
{ url = "https://files.pythonhosted.org/packages/8d/56/1e8e833b95fe684f80f8894ae4d8b7d36acc9203e60478fcae599120a975/librt-0.7.8-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3968762fec1b2ad34ce57458b6de25dbb4142713e9ca6279a0d352fa4e9f452b", size = 191483 },
|
|
253
|
-
{ url = "https://files.pythonhosted.org/packages/17/48/f11cf28a2cb6c31f282009e2208312aa84a5ee2732859f7856ee306176d5/librt-0.7.8-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:bb7a7807523a31f03061288cc4ffc065d684c39db7644c676b47d89553c0d714", size = 185376 },
|
|
254
|
-
{ url = "https://files.pythonhosted.org/packages/b8/6a/d7c116c6da561b9155b184354a60a3d5cdbf08fc7f3678d09c95679d13d9/librt-0.7.8-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad64a14b1e56e702e19b24aae108f18ad1bf7777f3af5fcd39f87d0c5a814449", size = 206234 },
|
|
255
|
-
{ url = "https://files.pythonhosted.org/packages/61/de/1975200bb0285fc921c5981d9978ce6ce11ae6d797df815add94a5a848a3/librt-0.7.8-cp312-cp312-win32.whl", hash = "sha256:0241a6ed65e6666236ea78203a73d800dbed896cf12ae25d026d75dc1fcd1dac", size = 44057 },
|
|
256
|
-
{ url = "https://files.pythonhosted.org/packages/8e/cd/724f2d0b3461426730d4877754b65d39f06a41ac9d0a92d5c6840f72b9ae/librt-0.7.8-cp312-cp312-win_amd64.whl", hash = "sha256:6db5faf064b5bab9675c32a873436b31e01d66ca6984c6f7f92621656033a708", size = 50293 },
|
|
257
|
-
{ url = "https://files.pythonhosted.org/packages/bd/cf/7e899acd9ee5727ad8160fdcc9994954e79fab371c66535c60e13b968ffc/librt-0.7.8-cp312-cp312-win_arm64.whl", hash = "sha256:57175aa93f804d2c08d2edb7213e09276bd49097611aefc37e3fa38d1fb99ad0", size = 43574 },
|
|
258
|
-
{ url = "https://files.pythonhosted.org/packages/a1/fe/b1f9de2829cf7fc7649c1dcd202cfd873837c5cc2fc9e526b0e7f716c3d2/librt-0.7.8-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:4c3995abbbb60b3c129490fa985dfe6cac11d88fc3c36eeb4fb1449efbbb04fc", size = 57500 },
|
|
259
|
-
{ url = "https://files.pythonhosted.org/packages/eb/d4/4a60fbe2e53b825f5d9a77325071d61cd8af8506255067bf0c8527530745/librt-0.7.8-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:44e0c2cbc9bebd074cf2cdbe472ca185e824be4e74b1c63a8e934cea674bebf2", size = 59019 },
|
|
260
|
-
{ url = "https://files.pythonhosted.org/packages/6a/37/61ff80341ba5159afa524445f2d984c30e2821f31f7c73cf166dcafa5564/librt-0.7.8-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:4d2f1e492cae964b3463a03dc77a7fe8742f7855d7258c7643f0ee32b6651dd3", size = 169015 },
|
|
261
|
-
{ url = "https://files.pythonhosted.org/packages/1c/86/13d4f2d6a93f181ebf2fc953868826653ede494559da8268023fe567fca3/librt-0.7.8-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:451e7ffcef8f785831fdb791bd69211f47e95dc4c6ddff68e589058806f044c6", size = 178161 },
|
|
262
|
-
{ url = "https://files.pythonhosted.org/packages/88/26/e24ef01305954fc4d771f1f09f3dd682f9eb610e1bec188ffb719374d26e/librt-0.7.8-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3469e1af9f1380e093ae06bedcbdd11e407ac0b303a56bbe9afb1d6824d4982d", size = 193015 },
|
|
263
|
-
{ url = "https://files.pythonhosted.org/packages/88/a0/92b6bd060e720d7a31ed474d046a69bd55334ec05e9c446d228c4b806ae3/librt-0.7.8-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f11b300027ce19a34f6d24ebb0a25fd0e24a9d53353225a5c1e6cadbf2916b2e", size = 192038 },
|
|
264
|
-
{ url = "https://files.pythonhosted.org/packages/06/bb/6f4c650253704279c3a214dad188101d1b5ea23be0606628bc6739456624/librt-0.7.8-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:4adc73614f0d3c97874f02f2c7fd2a27854e7e24ad532ea6b965459c5b757eca", size = 186006 },
|
|
265
|
-
{ url = "https://files.pythonhosted.org/packages/dc/00/1c409618248d43240cadf45f3efb866837fa77e9a12a71481912135eb481/librt-0.7.8-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:60c299e555f87e4c01b2eca085dfccda1dde87f5a604bb45c2906b8305819a93", size = 206888 },
|
|
266
|
-
{ url = "https://files.pythonhosted.org/packages/d9/83/b2cfe8e76ff5c1c77f8a53da3d5de62d04b5ebf7cf913e37f8bca43b5d07/librt-0.7.8-cp313-cp313-win32.whl", hash = "sha256:b09c52ed43a461994716082ee7d87618096851319bf695d57ec123f2ab708951", size = 44126 },
|
|
267
|
-
{ url = "https://files.pythonhosted.org/packages/a9/0b/c59d45de56a51bd2d3a401fc63449c0ac163e4ef7f523ea8b0c0dee86ec5/librt-0.7.8-cp313-cp313-win_amd64.whl", hash = "sha256:f8f4a901a3fa28969d6e4519deceab56c55a09d691ea7b12ca830e2fa3461e34", size = 50262 },
|
|
268
|
-
{ url = "https://files.pythonhosted.org/packages/fc/b9/973455cec0a1ec592395250c474164c4a58ebf3e0651ee920fef1a2623f1/librt-0.7.8-cp313-cp313-win_arm64.whl", hash = "sha256:43d4e71b50763fcdcf64725ac680d8cfa1706c928b844794a7aa0fa9ac8e5f09", size = 43600 },
|
|
269
|
-
{ url = "https://files.pythonhosted.org/packages/1a/73/fa8814c6ce2d49c3827829cadaa1589b0bf4391660bd4510899393a23ebc/librt-0.7.8-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:be927c3c94c74b05128089a955fba86501c3b544d1d300282cc1b4bd370cb418", size = 57049 },
|
|
270
|
-
{ url = "https://files.pythonhosted.org/packages/53/fe/f6c70956da23ea235fd2e3cc16f4f0b4ebdfd72252b02d1164dd58b4e6c3/librt-0.7.8-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:7b0803e9008c62a7ef79058233db7ff6f37a9933b8f2573c05b07ddafa226611", size = 58689 },
|
|
271
|
-
{ url = "https://files.pythonhosted.org/packages/1f/4d/7a2481444ac5fba63050d9abe823e6bc16896f575bfc9c1e5068d516cdce/librt-0.7.8-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:79feb4d00b2a4e0e05c9c56df707934f41fcb5fe53fd9efb7549068d0495b758", size = 166808 },
|
|
272
|
-
{ url = "https://files.pythonhosted.org/packages/ac/3c/10901d9e18639f8953f57c8986796cfbf4c1c514844a41c9197cf87cb707/librt-0.7.8-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b9122094e3f24aa759c38f46bd8863433820654927370250f460ae75488b66ea", size = 175614 },
|
|
273
|
-
{ url = "https://files.pythonhosted.org/packages/db/01/5cbdde0951a5090a80e5ba44e6357d375048123c572a23eecfb9326993a7/librt-0.7.8-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7e03bea66af33c95ce3addf87a9bf1fcad8d33e757bc479957ddbc0e4f7207ac", size = 189955 },
|
|
274
|
-
{ url = "https://files.pythonhosted.org/packages/6a/b4/e80528d2f4b7eaf1d437fcbd6fc6ba4cbeb3e2a0cb9ed5a79f47c7318706/librt-0.7.8-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:f1ade7f31675db00b514b98f9ab9a7698c7282dad4be7492589109471852d398", size = 189370 },
|
|
275
|
-
{ url = "https://files.pythonhosted.org/packages/c1/ab/938368f8ce31a9787ecd4becb1e795954782e4312095daf8fd22420227c8/librt-0.7.8-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:a14229ac62adcf1b90a15992f1ab9c69ae8b99ffb23cb64a90878a6e8a2f5b81", size = 183224 },
|
|
276
|
-
{ url = "https://files.pythonhosted.org/packages/3c/10/559c310e7a6e4014ac44867d359ef8238465fb499e7eb31b6bfe3e3f86f5/librt-0.7.8-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5bcaaf624fd24e6a0cb14beac37677f90793a96864c67c064a91458611446e83", size = 203541 },
|
|
277
|
-
{ url = "https://files.pythonhosted.org/packages/f8/db/a0db7acdb6290c215f343835c6efda5b491bb05c3ddc675af558f50fdba3/librt-0.7.8-cp314-cp314-win32.whl", hash = "sha256:7aa7d5457b6c542ecaed79cec4ad98534373c9757383973e638ccced0f11f46d", size = 40657 },
|
|
278
|
-
{ url = "https://files.pythonhosted.org/packages/72/e0/4f9bdc2a98a798511e81edcd6b54fe82767a715e05d1921115ac70717f6f/librt-0.7.8-cp314-cp314-win_amd64.whl", hash = "sha256:3d1322800771bee4a91f3b4bd4e49abc7d35e65166821086e5afd1e6c0d9be44", size = 46835 },
|
|
279
|
-
{ url = "https://files.pythonhosted.org/packages/f9/3d/59c6402e3dec2719655a41ad027a7371f8e2334aa794ed11533ad5f34969/librt-0.7.8-cp314-cp314-win_arm64.whl", hash = "sha256:5363427bc6a8c3b1719f8f3845ea53553d301382928a86e8fab7984426949bce", size = 39885 },
|
|
280
|
-
{ url = "https://files.pythonhosted.org/packages/4e/9c/2481d80950b83085fb14ba3c595db56330d21bbc7d88a19f20165f3538db/librt-0.7.8-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:ca916919793a77e4a98d4a1701e345d337ce53be4a16620f063191f7322ac80f", size = 59161 },
|
|
281
|
-
{ url = "https://files.pythonhosted.org/packages/96/79/108df2cfc4e672336765d54e3ff887294c1cc36ea4335c73588875775527/librt-0.7.8-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:54feb7b4f2f6706bb82325e836a01be805770443e2400f706e824e91f6441dde", size = 61008 },
|
|
282
|
-
{ url = "https://files.pythonhosted.org/packages/46/f2/30179898f9994a5637459d6e169b6abdc982012c0a4b2d4c26f50c06f911/librt-0.7.8-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:39a4c76fee41007070f872b648cc2f711f9abf9a13d0c7162478043377b52c8e", size = 187199 },
|
|
283
|
-
{ url = "https://files.pythonhosted.org/packages/b4/da/f7563db55cebdc884f518ba3791ad033becc25ff68eb70902b1747dc0d70/librt-0.7.8-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ac9c8a458245c7de80bc1b9765b177055efff5803f08e548dd4bb9ab9a8d789b", size = 198317 },
|
|
284
|
-
{ url = "https://files.pythonhosted.org/packages/b3/6c/4289acf076ad371471fa86718c30ae353e690d3de6167f7db36f429272f1/librt-0.7.8-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:95b67aa7eff150f075fda09d11f6bfb26edffd300f6ab1666759547581e8f666", size = 210334 },
|
|
285
|
-
{ url = "https://files.pythonhosted.org/packages/4a/7f/377521ac25b78ac0a5ff44127a0360ee6d5ddd3ce7327949876a30533daa/librt-0.7.8-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:535929b6eff670c593c34ff435d5440c3096f20fa72d63444608a5aef64dd581", size = 211031 },
|
|
286
|
-
{ url = "https://files.pythonhosted.org/packages/c5/b1/e1e96c3e20b23d00cf90f4aad48f0deb4cdfec2f0ed8380d0d85acf98bbf/librt-0.7.8-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:63937bd0f4d1cb56653dc7ae900d6c52c41f0015e25aaf9902481ee79943b33a", size = 204581 },
|
|
287
|
-
{ url = "https://files.pythonhosted.org/packages/43/71/0f5d010e92ed9747e14bef35e91b6580533510f1e36a8a09eb79ee70b2f0/librt-0.7.8-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:cf243da9e42d914036fd362ac3fa77d80a41cadcd11ad789b1b5eec4daaf67ca", size = 224731 },
|
|
288
|
-
{ url = "https://files.pythonhosted.org/packages/22/f0/07fb6ab5c39a4ca9af3e37554f9d42f25c464829254d72e4ebbd81da351c/librt-0.7.8-cp314-cp314t-win32.whl", hash = "sha256:171ca3a0a06c643bd0a2f62a8944e1902c94aa8e5da4db1ea9a8daf872685365", size = 41173 },
|
|
289
|
-
{ url = "https://files.pythonhosted.org/packages/24/d4/7e4be20993dc6a782639625bd2f97f3c66125c7aa80c82426956811cfccf/librt-0.7.8-cp314-cp314t-win_amd64.whl", hash = "sha256:445b7304145e24c60288a2f172b5ce2ca35c0f81605f5299f3fa567e189d2e32", size = 47668 },
|
|
290
|
-
{ url = "https://files.pythonhosted.org/packages/fc/85/69f92b2a7b3c0f88ffe107c86b952b397004b5b8ea5a81da3d9c04c04422/librt-0.7.8-cp314-cp314t-win_arm64.whl", hash = "sha256:8766ece9de08527deabcd7cb1b4f1a967a385d26e33e536d6d8913db6ef74f06", size = 40550 },
|
|
291
|
-
]
|
|
292
|
-
|
|
293
230
|
[[package]]
|
|
294
231
|
name = "markdown-it-py"
|
|
295
232
|
version = "4.0.0"
|
|
@@ -311,54 +248,6 @@ wheels = [
|
|
|
311
248
|
{ url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979 },
|
|
312
249
|
]
|
|
313
250
|
|
|
314
|
-
[[package]]
|
|
315
|
-
name = "mypy"
|
|
316
|
-
version = "1.19.1"
|
|
317
|
-
source = { registry = "https://pypi.org/simple" }
|
|
318
|
-
dependencies = [
|
|
319
|
-
{ name = "librt", marker = "platform_python_implementation != 'PyPy'" },
|
|
320
|
-
{ name = "mypy-extensions" },
|
|
321
|
-
{ name = "pathspec" },
|
|
322
|
-
{ name = "typing-extensions" },
|
|
323
|
-
]
|
|
324
|
-
sdist = { url = "https://files.pythonhosted.org/packages/f5/db/4efed9504bc01309ab9c2da7e352cc223569f05478012b5d9ece38fd44d2/mypy-1.19.1.tar.gz", hash = "sha256:19d88bb05303fe63f71dd2c6270daca27cb9401c4ca8255fe50d1d920e0eb9ba", size = 3582404 }
|
|
325
|
-
wheels = [
|
|
326
|
-
{ url = "https://files.pythonhosted.org/packages/ef/47/6b3ebabd5474d9cdc170d1342fbf9dddc1b0ec13ec90bf9004ee6f391c31/mypy-1.19.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d8dfc6ab58ca7dda47d9237349157500468e404b17213d44fc1cb77bce532288", size = 13028539 },
|
|
327
|
-
{ url = "https://files.pythonhosted.org/packages/5c/a6/ac7c7a88a3c9c54334f53a941b765e6ec6c4ebd65d3fe8cdcfbe0d0fd7db/mypy-1.19.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e3f276d8493c3c97930e354b2595a44a21348b320d859fb4a2b9f66da9ed27ab", size = 12083163 },
|
|
328
|
-
{ url = "https://files.pythonhosted.org/packages/67/af/3afa9cf880aa4a2c803798ac24f1d11ef72a0c8079689fac5cfd815e2830/mypy-1.19.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2abb24cf3f17864770d18d673c85235ba52456b36a06b6afc1e07c1fdcd3d0e6", size = 12687629 },
|
|
329
|
-
{ url = "https://files.pythonhosted.org/packages/2d/46/20f8a7114a56484ab268b0ab372461cb3a8f7deed31ea96b83a4e4cfcfca/mypy-1.19.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a009ffa5a621762d0c926a078c2d639104becab69e79538a494bcccb62cc0331", size = 13436933 },
|
|
330
|
-
{ url = "https://files.pythonhosted.org/packages/5b/f8/33b291ea85050a21f15da910002460f1f445f8007adb29230f0adea279cb/mypy-1.19.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f7cee03c9a2e2ee26ec07479f38ea9c884e301d42c6d43a19d20fb014e3ba925", size = 13661754 },
|
|
331
|
-
{ url = "https://files.pythonhosted.org/packages/fd/a3/47cbd4e85bec4335a9cd80cf67dbc02be21b5d4c9c23ad6b95d6c5196bac/mypy-1.19.1-cp311-cp311-win_amd64.whl", hash = "sha256:4b84a7a18f41e167f7995200a1d07a4a6810e89d29859df936f1c3923d263042", size = 10055772 },
|
|
332
|
-
{ url = "https://files.pythonhosted.org/packages/06/8a/19bfae96f6615aa8a0604915512e0289b1fad33d5909bf7244f02935d33a/mypy-1.19.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a8174a03289288c1f6c46d55cef02379b478bfbc8e358e02047487cad44c6ca1", size = 13206053 },
|
|
333
|
-
{ url = "https://files.pythonhosted.org/packages/a5/34/3e63879ab041602154ba2a9f99817bb0c85c4df19a23a1443c8986e4d565/mypy-1.19.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ffcebe56eb09ff0c0885e750036a095e23793ba6c2e894e7e63f6d89ad51f22e", size = 12219134 },
|
|
334
|
-
{ url = "https://files.pythonhosted.org/packages/89/cc/2db6f0e95366b630364e09845672dbee0cbf0bbe753a204b29a944967cd9/mypy-1.19.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b64d987153888790bcdb03a6473d321820597ab8dd9243b27a92153c4fa50fd2", size = 12731616 },
|
|
335
|
-
{ url = "https://files.pythonhosted.org/packages/00/be/dd56c1fd4807bc1eba1cf18b2a850d0de7bacb55e158755eb79f77c41f8e/mypy-1.19.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c35d298c2c4bba75feb2195655dfea8124d855dfd7343bf8b8c055421eaf0cf8", size = 13620847 },
|
|
336
|
-
{ url = "https://files.pythonhosted.org/packages/6d/42/332951aae42b79329f743bf1da088cd75d8d4d9acc18fbcbd84f26c1af4e/mypy-1.19.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:34c81968774648ab5ac09c29a375fdede03ba253f8f8287847bd480782f73a6a", size = 13834976 },
|
|
337
|
-
{ url = "https://files.pythonhosted.org/packages/6f/63/e7493e5f90e1e085c562bb06e2eb32cae27c5057b9653348d38b47daaecc/mypy-1.19.1-cp312-cp312-win_amd64.whl", hash = "sha256:b10e7c2cd7870ba4ad9b2d8a6102eb5ffc1f16ca35e3de6bfa390c1113029d13", size = 10118104 },
|
|
338
|
-
{ url = "https://files.pythonhosted.org/packages/de/9f/a6abae693f7a0c697dbb435aac52e958dc8da44e92e08ba88d2e42326176/mypy-1.19.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e3157c7594ff2ef1634ee058aafc56a82db665c9438fd41b390f3bde1ab12250", size = 13201927 },
|
|
339
|
-
{ url = "https://files.pythonhosted.org/packages/9a/a4/45c35ccf6e1c65afc23a069f50e2c66f46bd3798cbe0d680c12d12935caa/mypy-1.19.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:bdb12f69bcc02700c2b47e070238f42cb87f18c0bc1fc4cdb4fb2bc5fd7a3b8b", size = 12206730 },
|
|
340
|
-
{ url = "https://files.pythonhosted.org/packages/05/bb/cdcf89678e26b187650512620eec8368fded4cfd99cfcb431e4cdfd19dec/mypy-1.19.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f859fb09d9583a985be9a493d5cfc5515b56b08f7447759a0c5deaf68d80506e", size = 12724581 },
|
|
341
|
-
{ url = "https://files.pythonhosted.org/packages/d1/32/dd260d52babf67bad8e6770f8e1102021877ce0edea106e72df5626bb0ec/mypy-1.19.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c9a6538e0415310aad77cb94004ca6482330fece18036b5f360b62c45814c4ef", size = 13616252 },
|
|
342
|
-
{ url = "https://files.pythonhosted.org/packages/71/d0/5e60a9d2e3bd48432ae2b454b7ef2b62a960ab51292b1eda2a95edd78198/mypy-1.19.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:da4869fc5e7f62a88f3fe0b5c919d1d9f7ea3cef92d3689de2823fd27e40aa75", size = 13840848 },
|
|
343
|
-
{ url = "https://files.pythonhosted.org/packages/98/76/d32051fa65ecf6cc8c6610956473abdc9b4c43301107476ac03559507843/mypy-1.19.1-cp313-cp313-win_amd64.whl", hash = "sha256:016f2246209095e8eda7538944daa1d60e1e8134d98983b9fc1e92c1fc0cb8dd", size = 10135510 },
|
|
344
|
-
{ url = "https://files.pythonhosted.org/packages/de/eb/b83e75f4c820c4247a58580ef86fcd35165028f191e7e1ba57128c52782d/mypy-1.19.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:06e6170bd5836770e8104c8fdd58e5e725cfeb309f0a6c681a811f557e97eac1", size = 13199744 },
|
|
345
|
-
{ url = "https://files.pythonhosted.org/packages/94/28/52785ab7bfa165f87fcbb61547a93f98bb20e7f82f90f165a1f69bce7b3d/mypy-1.19.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:804bd67b8054a85447c8954215a906d6eff9cabeabe493fb6334b24f4bfff718", size = 12215815 },
|
|
346
|
-
{ url = "https://files.pythonhosted.org/packages/0a/c6/bdd60774a0dbfb05122e3e925f2e9e846c009e479dcec4821dad881f5b52/mypy-1.19.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:21761006a7f497cb0d4de3d8ef4ca70532256688b0523eee02baf9eec895e27b", size = 12740047 },
|
|
347
|
-
{ url = "https://files.pythonhosted.org/packages/32/2a/66ba933fe6c76bd40d1fe916a83f04fed253152f451a877520b3c4a5e41e/mypy-1.19.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:28902ee51f12e0f19e1e16fbe2f8f06b6637f482c459dd393efddd0ec7f82045", size = 13601998 },
|
|
348
|
-
{ url = "https://files.pythonhosted.org/packages/e3/da/5055c63e377c5c2418760411fd6a63ee2b96cf95397259038756c042574f/mypy-1.19.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:481daf36a4c443332e2ae9c137dfee878fcea781a2e3f895d54bd3002a900957", size = 13807476 },
|
|
349
|
-
{ url = "https://files.pythonhosted.org/packages/cd/09/4ebd873390a063176f06b0dbf1f7783dd87bd120eae7727fa4ae4179b685/mypy-1.19.1-cp314-cp314-win_amd64.whl", hash = "sha256:8bb5c6f6d043655e055be9b542aa5f3bdd30e4f3589163e85f93f3640060509f", size = 10281872 },
|
|
350
|
-
{ url = "https://files.pythonhosted.org/packages/8d/f4/4ce9a05ce5ded1de3ec1c1d96cf9f9504a04e54ce0ed55cfa38619a32b8d/mypy-1.19.1-py3-none-any.whl", hash = "sha256:f1235f5ea01b7db5468d53ece6aaddf1ad0b88d9e7462b86ef96fe04995d7247", size = 2471239 },
|
|
351
|
-
]
|
|
352
|
-
|
|
353
|
-
[[package]]
|
|
354
|
-
name = "mypy-extensions"
|
|
355
|
-
version = "1.1.0"
|
|
356
|
-
source = { registry = "https://pypi.org/simple" }
|
|
357
|
-
sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343 }
|
|
358
|
-
wheels = [
|
|
359
|
-
{ url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963 },
|
|
360
|
-
]
|
|
361
|
-
|
|
362
251
|
[[package]]
|
|
363
252
|
name = "notesctl"
|
|
364
253
|
version = "1.0.1"
|
|
@@ -373,27 +262,23 @@ dependencies = [
|
|
|
373
262
|
[package.optional-dependencies]
|
|
374
263
|
dev = [
|
|
375
264
|
{ name = "grpcio-tools" },
|
|
376
|
-
{ name = "mypy" },
|
|
377
265
|
{ name = "pytest" },
|
|
378
266
|
{ name = "pytest-cov" },
|
|
379
267
|
{ name = "ruff" },
|
|
380
|
-
{ name = "
|
|
381
|
-
{ name = "types-protobuf" },
|
|
268
|
+
{ name = "ty" },
|
|
382
269
|
]
|
|
383
270
|
|
|
384
271
|
[package.metadata]
|
|
385
272
|
requires-dist = [
|
|
386
273
|
{ name = "grpcio-tools", marker = "extra == 'dev'", specifier = ">=1.60.0" },
|
|
387
|
-
{ name = "mypy", marker = "extra == 'dev'", specifier = ">=1.0.0" },
|
|
388
274
|
{ name = "pillow", specifier = ">=10.0.0" },
|
|
389
275
|
{ name = "protobuf", specifier = ">=4.25.0" },
|
|
390
276
|
{ name = "pytest", marker = "extra == 'dev'", specifier = ">=7.0.0" },
|
|
391
277
|
{ name = "pytest-cov", marker = "extra == 'dev'", specifier = ">=4.0.0" },
|
|
392
278
|
{ name = "rich", specifier = ">=13.0.0" },
|
|
393
279
|
{ name = "ruff", marker = "extra == 'dev'", specifier = ">=0.8.0" },
|
|
280
|
+
{ name = "ty", marker = "extra == 'dev'", specifier = ">=0.0.1" },
|
|
394
281
|
{ name = "typer", specifier = ">=0.9.0" },
|
|
395
|
-
{ name = "types-pillow", marker = "extra == 'dev'", specifier = ">=10.0.0" },
|
|
396
|
-
{ name = "types-protobuf", marker = "extra == 'dev'", specifier = ">=4.24.0" },
|
|
397
282
|
]
|
|
398
283
|
|
|
399
284
|
[[package]]
|
|
@@ -405,15 +290,6 @@ wheels = [
|
|
|
405
290
|
{ url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469 },
|
|
406
291
|
]
|
|
407
292
|
|
|
408
|
-
[[package]]
|
|
409
|
-
name = "pathspec"
|
|
410
|
-
version = "1.0.3"
|
|
411
|
-
source = { registry = "https://pypi.org/simple" }
|
|
412
|
-
sdist = { url = "https://files.pythonhosted.org/packages/4c/b2/bb8e495d5262bfec41ab5cb18f522f1012933347fb5d9e62452d446baca2/pathspec-1.0.3.tar.gz", hash = "sha256:bac5cf97ae2c2876e2d25ebb15078eb04d76e4b98921ee31c6f85ade8b59444d", size = 130841 }
|
|
413
|
-
wheels = [
|
|
414
|
-
{ url = "https://files.pythonhosted.org/packages/32/2b/121e912bd60eebd623f873fd090de0e84f322972ab25a7f9044c056804ed/pathspec-1.0.3-py3-none-any.whl", hash = "sha256:e80767021c1cc524aa3fb14bedda9c34406591343cc42797b386ce7b9354fb6c", size = 55021 },
|
|
415
|
-
]
|
|
416
|
-
|
|
417
293
|
[[package]]
|
|
418
294
|
name = "pillow"
|
|
419
295
|
version = "12.1.0"
|
|
@@ -675,6 +551,31 @@ wheels = [
|
|
|
675
551
|
{ url = "https://files.pythonhosted.org/packages/23/d1/136eb2cb77520a31e1f64cbae9d33ec6df0d78bdf4160398e86eec8a8754/tomli-2.4.0-py3-none-any.whl", hash = "sha256:1f776e7d669ebceb01dee46484485f43a4048746235e683bcdffacdf1fb4785a", size = 14477 },
|
|
676
552
|
]
|
|
677
553
|
|
|
554
|
+
[[package]]
|
|
555
|
+
name = "ty"
|
|
556
|
+
version = "0.0.12"
|
|
557
|
+
source = { registry = "https://pypi.org/simple" }
|
|
558
|
+
sdist = { url = "https://files.pythonhosted.org/packages/b5/78/ba1a4ad403c748fbba8be63b7e774a90e80b67192f6443d624c64fe4aaab/ty-0.0.12.tar.gz", hash = "sha256:cd01810e106c3b652a01b8f784dd21741de9fdc47bd595d02c122a7d5cefeee7", size = 4981303 }
|
|
559
|
+
wheels = [
|
|
560
|
+
{ url = "https://files.pythonhosted.org/packages/7d/8f/c21314d074dda5fb13d3300fa6733fd0d8ff23ea83a721818740665b6314/ty-0.0.12-py3-none-linux_armv6l.whl", hash = "sha256:eb9da1e2c68bd754e090eab39ed65edf95168d36cbeb43ff2bd9f86b4edd56d1", size = 9614164 },
|
|
561
|
+
{ url = "https://files.pythonhosted.org/packages/09/28/f8a4d944d13519d70c486e8f96d6fa95647ac2aa94432e97d5cfec1f42f6/ty-0.0.12-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:c181f42aa19b0ed7f1b0c2d559980b1f1d77cc09419f51c8321c7ddf67758853", size = 9542337 },
|
|
562
|
+
{ url = "https://files.pythonhosted.org/packages/e1/9c/f576e360441de7a8201daa6dc4ebc362853bc5305e059cceeb02ebdd9a48/ty-0.0.12-py3-none-macosx_11_0_arm64.whl", hash = "sha256:1f829e1eecd39c3e1b032149db7ae6a3284f72fc36b42436e65243a9ed1173db", size = 8909582 },
|
|
563
|
+
{ url = "https://files.pythonhosted.org/packages/d6/13/0898e494032a5d8af3060733d12929e3e7716db6c75eac63fa125730a3e7/ty-0.0.12-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f45162e7826e1789cf3374627883cdeb0d56b82473a0771923e4572928e90be3", size = 9384932 },
|
|
564
|
+
{ url = "https://files.pythonhosted.org/packages/e4/1a/b35b6c697008a11d4cedfd34d9672db2f0a0621ec80ece109e13fca4dfef/ty-0.0.12-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d11fec40b269bec01e751b2337d1c7ffa959a2c2090a950d7e21c2792442cccd", size = 9453140 },
|
|
565
|
+
{ url = "https://files.pythonhosted.org/packages/dd/1e/71c9edbc79a3c88a0711324458f29c7dbf6c23452c6e760dc25725483064/ty-0.0.12-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09d99e37e761a4d2651ad9d5a610d11235fbcbf35dc6d4bc04abf54e7cf894f1", size = 9960680 },
|
|
566
|
+
{ url = "https://files.pythonhosted.org/packages/0e/75/39375129f62dd22f6ad5a99cd2a42fd27d8b91b235ce2db86875cdad397d/ty-0.0.12-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:d9ca0cdb17bd37397da7b16a7cd23423fc65c3f9691e453ad46c723d121225a1", size = 10904518 },
|
|
567
|
+
{ url = "https://files.pythonhosted.org/packages/32/5e/26c6d88fafa11a9d31ca9f4d12989f57782ec61e7291d4802d685b5be118/ty-0.0.12-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcf2757b905e7eddb7e456140066335b18eb68b634a9f72d6f54a427ab042c64", size = 10525001 },
|
|
568
|
+
{ url = "https://files.pythonhosted.org/packages/c2/a5/2f0b91894af13187110f9ad7ee926d86e4e6efa755c9c88a820ed7f84c85/ty-0.0.12-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:00cf34c1ebe1147efeda3021a1064baa222c18cdac114b7b050bbe42deb4ca80", size = 10307103 },
|
|
569
|
+
{ url = "https://files.pythonhosted.org/packages/4b/77/13d0410827e4bc713ebb7fdaf6b3590b37dcb1b82e0a81717b65548f2442/ty-0.0.12-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb3a655bd869352e9a22938d707631ac9fbca1016242b1f6d132d78f347c851", size = 10072737 },
|
|
570
|
+
{ url = "https://files.pythonhosted.org/packages/e1/dd/fc36d8bac806c74cf04b4ca735bca14d19967ca84d88f31e121767880df1/ty-0.0.12-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:4658e282c7cb82be304052f8f64f9925f23c3c4f90eeeb32663c74c4b095d7ba", size = 9368726 },
|
|
571
|
+
{ url = "https://files.pythonhosted.org/packages/54/70/9e8e461647550f83e2fe54bc632ccbdc17a4909644783cdbdd17f7296059/ty-0.0.12-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:c167d838eaaa06e03bb66a517f75296b643d950fbd93c1d1686a187e5a8dbd1f", size = 9454704 },
|
|
572
|
+
{ url = "https://files.pythonhosted.org/packages/04/9b/6292cf7c14a0efeca0539cf7d78f453beff0475cb039fbea0eb5d07d343d/ty-0.0.12-py3-none-musllinux_1_2_i686.whl", hash = "sha256:2956e0c9ab7023533b461d8a0e6b2ea7b78e01a8dde0688e8234d0fce10c4c1c", size = 9649829 },
|
|
573
|
+
{ url = "https://files.pythonhosted.org/packages/49/bd/472a5d2013371e4870886cff791c94abdf0b92d43d305dd0f8e06b6ff719/ty-0.0.12-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:5c6a3fd7479580009f21002f3828320621d8a82d53b7ba36993234e3ccad58c8", size = 10162814 },
|
|
574
|
+
{ url = "https://files.pythonhosted.org/packages/31/e9/2ecbe56826759845a7c21d80aa28187865ea62bc9757b056f6cbc06f78ed/ty-0.0.12-py3-none-win32.whl", hash = "sha256:a91c24fd75c0f1796d8ede9083e2c0ec96f106dbda73a09fe3135e075d31f742", size = 9140115 },
|
|
575
|
+
{ url = "https://files.pythonhosted.org/packages/5d/6d/d9531eff35a5c0ec9dbc10231fac21f9dd6504814048e81d6ce1c84dc566/ty-0.0.12-py3-none-win_amd64.whl", hash = "sha256:df151894be55c22d47068b0f3b484aff9e638761e2267e115d515fcc9c5b4a4b", size = 9884532 },
|
|
576
|
+
{ url = "https://files.pythonhosted.org/packages/e9/f3/20b49e75967023b123a221134548ad7000f9429f13fdcdda115b4c26305f/ty-0.0.12-py3-none-win_arm64.whl", hash = "sha256:cea99d334b05629de937ce52f43278acf155d3a316ad6a35356635f886be20ea", size = 9313974 },
|
|
577
|
+
]
|
|
578
|
+
|
|
678
579
|
[[package]]
|
|
679
580
|
name = "typer"
|
|
680
581
|
version = "0.21.1"
|
|
@@ -690,24 +591,6 @@ wheels = [
|
|
|
690
591
|
{ url = "https://files.pythonhosted.org/packages/a0/1d/d9257dd49ff2ca23ea5f132edf1281a0c4f9de8a762b9ae399b670a59235/typer-0.21.1-py3-none-any.whl", hash = "sha256:7985e89081c636b88d172c2ee0cfe33c253160994d47bdfdc302defd7d1f1d01", size = 47381 },
|
|
691
592
|
]
|
|
692
593
|
|
|
693
|
-
[[package]]
|
|
694
|
-
name = "types-pillow"
|
|
695
|
-
version = "10.2.0.20240822"
|
|
696
|
-
source = { registry = "https://pypi.org/simple" }
|
|
697
|
-
sdist = { url = "https://files.pythonhosted.org/packages/18/4a/4495264dddaa600d65d68bcedb64dcccf9d9da61adff51f7d2ffd8e4c9ce/types-Pillow-10.2.0.20240822.tar.gz", hash = "sha256:559fb52a2ef991c326e4a0d20accb3bb63a7ba8d40eb493e0ecb0310ba52f0d3", size = 35389 }
|
|
698
|
-
wheels = [
|
|
699
|
-
{ url = "https://files.pythonhosted.org/packages/66/23/e81a5354859831fcf54d488d33b80ba6133ea84f874a9c0ec40a4881e133/types_Pillow-10.2.0.20240822-py3-none-any.whl", hash = "sha256:d9dab025aba07aeb12fd50a6799d4eac52a9603488eca09d7662543983f16c5d", size = 54354 },
|
|
700
|
-
]
|
|
701
|
-
|
|
702
|
-
[[package]]
|
|
703
|
-
name = "types-protobuf"
|
|
704
|
-
version = "6.32.1.20251210"
|
|
705
|
-
source = { registry = "https://pypi.org/simple" }
|
|
706
|
-
sdist = { url = "https://files.pythonhosted.org/packages/c2/59/c743a842911887cd96d56aa8936522b0cd5f7a7f228c96e81b59fced45be/types_protobuf-6.32.1.20251210.tar.gz", hash = "sha256:c698bb3f020274b1a2798ae09dc773728ce3f75209a35187bd11916ebfde6763", size = 63900 }
|
|
707
|
-
wheels = [
|
|
708
|
-
{ url = "https://files.pythonhosted.org/packages/aa/43/58e75bac4219cbafee83179505ff44cae3153ec279be0e30583a73b8f108/types_protobuf-6.32.1.20251210-py3-none-any.whl", hash = "sha256:2641f78f3696822a048cfb8d0ff42ccd85c25f12f871fbebe86da63793692140", size = 77921 },
|
|
709
|
-
]
|
|
710
|
-
|
|
711
594
|
[[package]]
|
|
712
595
|
name = "typing-extensions"
|
|
713
596
|
version = "4.15.0"
|
|
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
|