notesctl 1.0.0__tar.gz → 1.0.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {notesctl-1.0.0 → notesctl-1.0.2}/.github/workflows/ci.yml +1 -1
- {notesctl-1.0.0 → notesctl-1.0.2}/CHANGELOG.md +19 -1
- notesctl-1.0.2/CLAUDE.md +63 -0
- {notesctl-1.0.0 → notesctl-1.0.2}/PKG-INFO +2 -4
- {notesctl-1.0.0 → notesctl-1.0.2}/pyproject.toml +21 -23
- {notesctl-1.0.0 → notesctl-1.0.2}/src/notesctl/__init__.py +1 -1
- {notesctl-1.0.0 → notesctl-1.0.2}/src/notesctl/converter/markdown.py +12 -1
- {notesctl-1.0.0 → notesctl-1.0.2}/src/notesctl/database/connection.py +19 -8
- {notesctl-1.0.0 → notesctl-1.0.2}/src/notesctl/database/queries.py +7 -2
- {notesctl-1.0.0 → notesctl-1.0.2}/src/notesctl/parser/note_parser.py +6 -3
- {notesctl-1.0.0 → notesctl-1.0.2}/uv.lock +28 -145
- {notesctl-1.0.0 → notesctl-1.0.2}/.github/workflows/publish.yml +0 -0
- {notesctl-1.0.0 → notesctl-1.0.2}/.gitignore +0 -0
- {notesctl-1.0.0 → notesctl-1.0.2}/LICENSE +0 -0
- {notesctl-1.0.0 → notesctl-1.0.2}/README.md +0 -0
- {notesctl-1.0.0 → notesctl-1.0.2}/proto/notestore.proto +0 -0
- {notesctl-1.0.0 → notesctl-1.0.2}/src/notesctl/cli.py +0 -0
- {notesctl-1.0.0 → notesctl-1.0.2}/src/notesctl/converter/__init__.py +0 -0
- {notesctl-1.0.0 → notesctl-1.0.2}/src/notesctl/database/__init__.py +0 -0
- {notesctl-1.0.0 → notesctl-1.0.2}/src/notesctl/database/models.py +0 -0
- {notesctl-1.0.0 → notesctl-1.0.2}/src/notesctl/exporter.py +0 -0
- {notesctl-1.0.0 → notesctl-1.0.2}/src/notesctl/parser/__init__.py +0 -0
- {notesctl-1.0.0 → notesctl-1.0.2}/src/notesctl/parser/protobuf/__init__.py +0 -0
- {notesctl-1.0.0 → notesctl-1.0.2}/src/notesctl/parser/protobuf/notestore_pb2.py +0 -0
- {notesctl-1.0.0 → notesctl-1.0.2}/tests/__init__.py +0 -0
- {notesctl-1.0.0 → notesctl-1.0.2}/tests/test_connection.py +0 -0
- {notesctl-1.0.0 → notesctl-1.0.2}/tests/test_converter.py +0 -0
- {notesctl-1.0.0 → notesctl-1.0.2}/tests/test_models.py +0 -0
- {notesctl-1.0.0 → notesctl-1.0.2}/tests/test_parser.py +0 -0
|
@@ -7,6 +7,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [1.0.2] - 2026-01-17
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- Fixed duplicate title headers appearing in exported markdown files
|
|
15
|
+
- 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
|
|
16
|
+
- Skip the first paragraph when it matches the note title to eliminate duplication
|
|
17
|
+
|
|
18
|
+
## [1.0.1] - 2026-01-17
|
|
19
|
+
|
|
20
|
+
### Fixed
|
|
21
|
+
|
|
22
|
+
- Fixed mypy strict type checking errors across database and parser modules
|
|
23
|
+
- Added proper type annotations for tuple parameters and return types
|
|
24
|
+
- Fixed type-checking imports to satisfy ruff TC rules
|
|
25
|
+
|
|
10
26
|
## [1.0.0] - 2026-01-17
|
|
11
27
|
|
|
12
28
|
### Added
|
|
@@ -34,5 +50,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
34
50
|
- Original Notes database is never modified
|
|
35
51
|
- All queries validated to be SELECT statements only
|
|
36
52
|
|
|
37
|
-
[Unreleased]: https://github.com/jwmoss/notesctl/compare/v1.0.
|
|
53
|
+
[Unreleased]: https://github.com/jwmoss/notesctl/compare/v1.0.2...HEAD
|
|
54
|
+
[1.0.2]: https://github.com/jwmoss/notesctl/compare/v1.0.1...v1.0.2
|
|
55
|
+
[1.0.1]: https://github.com/jwmoss/notesctl/compare/v1.0.0...v1.0.1
|
|
38
56
|
[1.0.0]: https://github.com/jwmoss/notesctl/releases/tag/v1.0.0
|
notesctl-1.0.2/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.2
|
|
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.2"
|
|
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"]
|
|
@@ -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)
|
|
@@ -1,14 +1,19 @@
|
|
|
1
1
|
"""Safe read-only database connection for Apple Notes."""
|
|
2
2
|
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
3
5
|
import shutil
|
|
4
6
|
import sqlite3
|
|
5
7
|
import tempfile
|
|
6
|
-
from collections.abc import Iterator
|
|
7
8
|
from contextlib import contextmanager
|
|
8
9
|
from pathlib import Path
|
|
10
|
+
from typing import TYPE_CHECKING, Any
|
|
9
11
|
|
|
10
12
|
from rich.console import Console
|
|
11
13
|
|
|
14
|
+
if TYPE_CHECKING:
|
|
15
|
+
from collections.abc import Iterator
|
|
16
|
+
|
|
12
17
|
console = Console()
|
|
13
18
|
|
|
14
19
|
# Default location of the Apple Notes database
|
|
@@ -100,7 +105,7 @@ class SafeNotesDatabase:
|
|
|
100
105
|
raise RuntimeError("Database not connected. Call connect() first.")
|
|
101
106
|
return self._connection
|
|
102
107
|
|
|
103
|
-
def execute(self, query: str, params: tuple = ()) -> sqlite3.Cursor:
|
|
108
|
+
def execute(self, query: str, params: tuple[Any, ...] = ()) -> sqlite3.Cursor:
|
|
104
109
|
"""
|
|
105
110
|
Execute a SELECT query safely.
|
|
106
111
|
|
|
@@ -121,20 +126,26 @@ class SafeNotesDatabase:
|
|
|
121
126
|
|
|
122
127
|
return self.connection.execute(query, params)
|
|
123
128
|
|
|
124
|
-
def fetchall(self, query: str, params: tuple = ()) -> list[sqlite3.Row]:
|
|
129
|
+
def fetchall(self, query: str, params: tuple[Any, ...] = ()) -> list[sqlite3.Row]:
|
|
125
130
|
"""Execute a query and fetch all results."""
|
|
126
|
-
return self.execute(query, params).fetchall()
|
|
131
|
+
return list(self.execute(query, params).fetchall())
|
|
127
132
|
|
|
128
|
-
def fetchone(self, query: str, params: tuple = ()) -> sqlite3.Row | None:
|
|
133
|
+
def fetchone(self, query: str, params: tuple[Any, ...] = ()) -> sqlite3.Row | None:
|
|
129
134
|
"""Execute a query and fetch one result."""
|
|
130
|
-
|
|
135
|
+
result: sqlite3.Row | None = self.execute(query, params).fetchone()
|
|
136
|
+
return result
|
|
131
137
|
|
|
132
|
-
def __enter__(self) ->
|
|
138
|
+
def __enter__(self) -> SafeNotesDatabase:
|
|
133
139
|
"""Context manager entry."""
|
|
134
140
|
self.connect()
|
|
135
141
|
return self
|
|
136
142
|
|
|
137
|
-
def __exit__(
|
|
143
|
+
def __exit__(
|
|
144
|
+
self,
|
|
145
|
+
exc_type: type[BaseException] | None,
|
|
146
|
+
exc_val: BaseException | None,
|
|
147
|
+
exc_tb: Any,
|
|
148
|
+
) -> None:
|
|
138
149
|
"""Context manager exit."""
|
|
139
150
|
self.close()
|
|
140
151
|
|
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
"""SQL queries for reading Apple Notes data (SELECT only)."""
|
|
2
2
|
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
3
5
|
from datetime import UTC, datetime
|
|
4
6
|
from pathlib import Path
|
|
7
|
+
from typing import TYPE_CHECKING, Any
|
|
5
8
|
|
|
6
|
-
from .connection import SafeNotesDatabase
|
|
7
9
|
from .models import Attachment, Folder, Note
|
|
8
10
|
|
|
11
|
+
if TYPE_CHECKING:
|
|
12
|
+
from .connection import SafeNotesDatabase
|
|
13
|
+
|
|
9
14
|
# Apple's Core Data timestamp epoch (2001-01-01 00:00:00 UTC)
|
|
10
15
|
APPLE_EPOCH = datetime(2001, 1, 1, tzinfo=UTC)
|
|
11
16
|
|
|
@@ -114,7 +119,7 @@ class NotesQueries:
|
|
|
114
119
|
WHERE n.ZTITLE1 IS NOT NULL
|
|
115
120
|
"""
|
|
116
121
|
|
|
117
|
-
params: list = []
|
|
122
|
+
params: list[Any] = []
|
|
118
123
|
|
|
119
124
|
if folder_id is not None:
|
|
120
125
|
query += " AND n.ZFOLDER = ?"
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
"""Parser for Apple Notes gzip-compressed protobuf content."""
|
|
2
2
|
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
3
5
|
import gzip
|
|
4
6
|
from dataclasses import dataclass, field
|
|
5
7
|
from enum import IntEnum
|
|
8
|
+
from typing import Any
|
|
6
9
|
|
|
7
|
-
from .protobuf.notestore_pb2 import NoteStoreProto
|
|
10
|
+
from .protobuf.notestore_pb2 import NoteStoreProto # type: ignore[attr-defined]
|
|
8
11
|
|
|
9
12
|
|
|
10
13
|
class StyleType(IntEnum):
|
|
@@ -69,7 +72,7 @@ class ParsedNote:
|
|
|
69
72
|
class NoteParser:
|
|
70
73
|
"""Parser for Apple Notes protobuf content."""
|
|
71
74
|
|
|
72
|
-
def __init__(self):
|
|
75
|
+
def __init__(self) -> None:
|
|
73
76
|
"""Initialize the parser."""
|
|
74
77
|
self._numbered_list_counters: dict[int, int] = {}
|
|
75
78
|
|
|
@@ -104,7 +107,7 @@ class NoteParser:
|
|
|
104
107
|
|
|
105
108
|
return self._parse_proto(proto, title)
|
|
106
109
|
|
|
107
|
-
def _parse_proto(self, proto:
|
|
110
|
+
def _parse_proto(self, proto: Any, title: str) -> ParsedNote:
|
|
108
111
|
"""Parse the protobuf message into structured content."""
|
|
109
112
|
note = ParsedNote(title=title)
|
|
110
113
|
|
|
@@ -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,57 +248,9 @@ 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
|
-
version = "0.1
|
|
253
|
+
version = "1.0.1"
|
|
365
254
|
source = { editable = "." }
|
|
366
255
|
dependencies = [
|
|
367
256
|
{ name = "pillow" },
|
|
@@ -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
|