adobe-cc-font-extractor 1.0.0__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.
- adobe_cc_font_extractor-1.0.0/.gitignore +154 -0
- adobe_cc_font_extractor-1.0.0/.vscode/settings.json +3 -0
- adobe_cc_font_extractor-1.0.0/PKG-INFO +8 -0
- adobe_cc_font_extractor-1.0.0/README.md +65 -0
- adobe_cc_font_extractor-1.0.0/adobe_cc_font_extractor/__init__.py +0 -0
- adobe_cc_font_extractor-1.0.0/adobe_cc_font_extractor/main.py +224 -0
- adobe_cc_font_extractor-1.0.0/pyproject.toml +17 -0
- adobe_cc_font_extractor-1.0.0/uv.lock +162 -0
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
# File created using '.gitignore Generator' for Visual Studio Code: https://bit.ly/vscode-gig
|
|
2
|
+
|
|
3
|
+
# Created by https://www.gitignore.io/api/windows,visualstudiocode,python
|
|
4
|
+
# Edit at https://www.gitignore.io/?templates=windows,visualstudiocode,python
|
|
5
|
+
|
|
6
|
+
### Python ###
|
|
7
|
+
# Byte-compiled / optimized / DLL files
|
|
8
|
+
__pycache__/
|
|
9
|
+
*.py[cod]
|
|
10
|
+
*$py.class
|
|
11
|
+
|
|
12
|
+
# C extensions
|
|
13
|
+
*.so
|
|
14
|
+
|
|
15
|
+
# Distribution / packaging
|
|
16
|
+
.Python
|
|
17
|
+
build/
|
|
18
|
+
develop-eggs/
|
|
19
|
+
dist/
|
|
20
|
+
downloads/
|
|
21
|
+
eggs/
|
|
22
|
+
.eggs/
|
|
23
|
+
lib/
|
|
24
|
+
lib64/
|
|
25
|
+
parts/
|
|
26
|
+
sdist/
|
|
27
|
+
var/
|
|
28
|
+
wheels/
|
|
29
|
+
pip-wheel-metadata/
|
|
30
|
+
share/python-wheels/
|
|
31
|
+
*.egg-info/
|
|
32
|
+
.installed.cfg
|
|
33
|
+
*.egg
|
|
34
|
+
MANIFEST
|
|
35
|
+
|
|
36
|
+
# PyInstaller
|
|
37
|
+
# Usually these files are written by a python script from a template
|
|
38
|
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
|
39
|
+
*.manifest
|
|
40
|
+
*.spec
|
|
41
|
+
|
|
42
|
+
# Installer logs
|
|
43
|
+
pip-log.txt
|
|
44
|
+
pip-delete-this-directory.txt
|
|
45
|
+
|
|
46
|
+
# Unit test / coverage reports
|
|
47
|
+
htmlcov/
|
|
48
|
+
.tox/
|
|
49
|
+
.nox/
|
|
50
|
+
.coverage
|
|
51
|
+
.coverage.*
|
|
52
|
+
.cache
|
|
53
|
+
nosetests.xml
|
|
54
|
+
coverage.xml
|
|
55
|
+
*.cover
|
|
56
|
+
.hypothesis/
|
|
57
|
+
.pytest_cache/
|
|
58
|
+
|
|
59
|
+
# Translations
|
|
60
|
+
*.mo
|
|
61
|
+
*.pot
|
|
62
|
+
|
|
63
|
+
# Scrapy stuff:
|
|
64
|
+
.scrapy
|
|
65
|
+
|
|
66
|
+
# Sphinx documentation
|
|
67
|
+
docs/_build/
|
|
68
|
+
|
|
69
|
+
# PyBuilder
|
|
70
|
+
target/
|
|
71
|
+
|
|
72
|
+
# pyenv
|
|
73
|
+
.python-version
|
|
74
|
+
|
|
75
|
+
# pipenv
|
|
76
|
+
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
|
77
|
+
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
|
78
|
+
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
|
79
|
+
# install all needed dependencies.
|
|
80
|
+
#Pipfile.lock
|
|
81
|
+
|
|
82
|
+
# celery beat schedule file
|
|
83
|
+
celerybeat-schedule
|
|
84
|
+
|
|
85
|
+
# SageMath parsed files
|
|
86
|
+
*.sage.py
|
|
87
|
+
|
|
88
|
+
# Spyder project settings
|
|
89
|
+
.spyderproject
|
|
90
|
+
.spyproject
|
|
91
|
+
|
|
92
|
+
# Rope project settings
|
|
93
|
+
.ropeproject
|
|
94
|
+
|
|
95
|
+
# Mr Developer
|
|
96
|
+
.mr.developer.cfg
|
|
97
|
+
.project
|
|
98
|
+
.pydevproject
|
|
99
|
+
|
|
100
|
+
# mkdocs documentation
|
|
101
|
+
/site
|
|
102
|
+
|
|
103
|
+
# mypy
|
|
104
|
+
.mypy_cache/
|
|
105
|
+
.dmypy.json
|
|
106
|
+
dmypy.json
|
|
107
|
+
|
|
108
|
+
# Pyre type checker
|
|
109
|
+
.pyre/
|
|
110
|
+
|
|
111
|
+
### VisualStudioCode ###
|
|
112
|
+
.vscode/*
|
|
113
|
+
!.vscode/settings.json
|
|
114
|
+
!.vscode/tasks.json
|
|
115
|
+
!.vscode/launch.json
|
|
116
|
+
!.vscode/extensions.json
|
|
117
|
+
|
|
118
|
+
### VisualStudioCode Patch ###
|
|
119
|
+
# Ignore all local history of files
|
|
120
|
+
.history
|
|
121
|
+
|
|
122
|
+
### Windows ###
|
|
123
|
+
# Windows thumbnail cache files
|
|
124
|
+
Thumbs.db
|
|
125
|
+
Thumbs.db:encryptable
|
|
126
|
+
ehthumbs.db
|
|
127
|
+
ehthumbs_vista.db
|
|
128
|
+
|
|
129
|
+
# Dump file
|
|
130
|
+
*.stackdump
|
|
131
|
+
|
|
132
|
+
# Folder config file
|
|
133
|
+
[Dd]esktop.ini
|
|
134
|
+
|
|
135
|
+
# Recycle Bin used on file shares
|
|
136
|
+
$RECYCLE.BIN/
|
|
137
|
+
|
|
138
|
+
# Windows Installer files
|
|
139
|
+
*.cab
|
|
140
|
+
*.msi
|
|
141
|
+
*.msix
|
|
142
|
+
*.msm
|
|
143
|
+
*.msp
|
|
144
|
+
|
|
145
|
+
# Windows shortcuts
|
|
146
|
+
*.lnk
|
|
147
|
+
|
|
148
|
+
# End of https://www.gitignore.io/api/windows,visualstudiocode,python
|
|
149
|
+
|
|
150
|
+
# Custom rules (everything added below won't be overriden by 'Generate .gitignore File' if you use 'Update' option)
|
|
151
|
+
|
|
152
|
+
.venv/
|
|
153
|
+
output/*
|
|
154
|
+
.vscode
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# adobe-cc-font-extractor
|
|
2
|
+
|
|
3
|
+
Extracts Adobe CC fonts from the local CoreSync cache into named OTF files organized by family.
|
|
4
|
+
|
|
5
|
+
## Requirements
|
|
6
|
+
|
|
7
|
+
- [uv](https://docs.astral.sh/uv/)
|
|
8
|
+
- Adobe Creative Cloud with fonts synced via Adobe Fonts
|
|
9
|
+
|
|
10
|
+
## Installation
|
|
11
|
+
|
|
12
|
+
```sh
|
|
13
|
+
uv sync
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Usage
|
|
17
|
+
|
|
18
|
+
```sh
|
|
19
|
+
uv run adobe-cc-font-extractor [OPTIONS]
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
| Option | Short | Description |
|
|
23
|
+
|---|---|---|
|
|
24
|
+
| `--output PATH` | `-o` | Output directory (default: `output/`) |
|
|
25
|
+
| `--dry-run` | `-n` | Preview what would be extracted without copying |
|
|
26
|
+
| `--family TEXT` | `-f` | Filter by family name — repeatable |
|
|
27
|
+
| `--force` | | Overwrite existing files |
|
|
28
|
+
| `--flat` | | Disable per-family subdirectories |
|
|
29
|
+
| `--zip-files` | `-z` | Create one zip archive per family |
|
|
30
|
+
| `--font-dir PATH` | | Override the Adobe CoreSync directory |
|
|
31
|
+
|
|
32
|
+
### Examples
|
|
33
|
+
|
|
34
|
+
Extract all fonts:
|
|
35
|
+
```sh
|
|
36
|
+
uv run adobe-cc-font-extractor
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Preview a specific family:
|
|
40
|
+
```sh
|
|
41
|
+
uv run adobe-cc-font-extractor --dry-run --family "Proxima Nova"
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Extract multiple families and zip each one:
|
|
45
|
+
```sh
|
|
46
|
+
uv run adobe-cc-font-extractor -f "Proxima Nova" -f "Museo Sans" --zip-files
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Output structure
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
output/
|
|
53
|
+
Proxima Nova/
|
|
54
|
+
Proxima Nova Regular.otf
|
|
55
|
+
Proxima Nova Bold.otf
|
|
56
|
+
...
|
|
57
|
+
Museo Sans/
|
|
58
|
+
Museo Sans 300.otf
|
|
59
|
+
...
|
|
60
|
+
Proxima Nova.zip # with --zip-files
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Supported platforms
|
|
64
|
+
|
|
65
|
+
Windows and macOS.
|
|
File without changes
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import platform
|
|
3
|
+
import re
|
|
4
|
+
import shutil
|
|
5
|
+
import zipfile
|
|
6
|
+
from dataclasses import dataclass, field
|
|
7
|
+
from pathlib import Path
|
|
8
|
+
from typing import Optional
|
|
9
|
+
from xml.etree import ElementTree
|
|
10
|
+
|
|
11
|
+
import typer
|
|
12
|
+
from fontTools.ttLib import TTFont
|
|
13
|
+
from rich.console import Console
|
|
14
|
+
from rich.progress import BarColumn, Progress, SpinnerColumn, TaskProgressColumn, TextColumn
|
|
15
|
+
from rich.table import Table
|
|
16
|
+
|
|
17
|
+
FONT_SPECIFIER_VARIATION_ID = 4
|
|
18
|
+
FONT_SPECIFIER_NAME_ID = 1
|
|
19
|
+
|
|
20
|
+
console = Console()
|
|
21
|
+
app = typer.Typer(
|
|
22
|
+
help="Extract Adobe CC fonts to OTF files organized by family folder.",
|
|
23
|
+
no_args_is_help=True,
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
@dataclass
|
|
28
|
+
class FontEntry:
|
|
29
|
+
font_id: str
|
|
30
|
+
full_name: str
|
|
31
|
+
family_name: str
|
|
32
|
+
variation_name: str
|
|
33
|
+
is_variable: bool
|
|
34
|
+
install_state: str
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
@dataclass
|
|
38
|
+
class ExtractionStats:
|
|
39
|
+
extracted: int = 0
|
|
40
|
+
skipped: int = 0
|
|
41
|
+
missing: int = 0
|
|
42
|
+
errors: int = 0
|
|
43
|
+
families: dict[str, list[str]] = field(default_factory=dict)
|
|
44
|
+
family_files: dict[str, list[Path]] = field(default_factory=dict)
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def get_adobe_font_path() -> Path:
|
|
48
|
+
if platform.system() == "Windows":
|
|
49
|
+
return Path(os.path.expandvars(r"%APPDATA%\Adobe\CoreSync\plugins\livetype"))
|
|
50
|
+
elif platform.system() == "Darwin":
|
|
51
|
+
return Path(os.path.expandvars("$HOME/Library/Application Support/Adobe/CoreSync/plugins/livetype"))
|
|
52
|
+
else:
|
|
53
|
+
console.print(f"[red]Unsupported platform:[/red] {platform.system()}")
|
|
54
|
+
raise typer.Exit(1)
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def sanitize_path_component(name: str) -> str:
|
|
58
|
+
return re.sub(r'[<>:"/\\|?*]', "_", name).strip(". ")
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
def parse_entitlements(manifest: Path) -> list[FontEntry]:
|
|
62
|
+
root = ElementTree.parse(manifest).getroot()
|
|
63
|
+
entries = []
|
|
64
|
+
for font in root.find("fonts").findall("font"):
|
|
65
|
+
font_id = font.find("id").text
|
|
66
|
+
props = font.find("properties")
|
|
67
|
+
entries.append(
|
|
68
|
+
FontEntry(
|
|
69
|
+
font_id=font_id,
|
|
70
|
+
full_name=props.findtext("fullName", "").strip(),
|
|
71
|
+
family_name=props.findtext("familyName", "").strip(),
|
|
72
|
+
variation_name=props.findtext("variationName", "").strip(),
|
|
73
|
+
is_variable=props.findtext("isVariable", "false").lower() == "true",
|
|
74
|
+
install_state=props.findtext("installState", ""),
|
|
75
|
+
)
|
|
76
|
+
)
|
|
77
|
+
return entries
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
def find_font_file(font_id: str, font_path: Path) -> Optional[Path]:
|
|
81
|
+
for candidate in ("r", "t", "w"):
|
|
82
|
+
source = font_path / candidate / font_id
|
|
83
|
+
if source.exists():
|
|
84
|
+
return source
|
|
85
|
+
return None
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
@app.command()
|
|
89
|
+
def extract(
|
|
90
|
+
output: Path = typer.Option(Path("output"), "--output", "-o", help="Output directory"),
|
|
91
|
+
dry_run: bool = typer.Option(False, "--dry-run", "-n", help="Show what would be extracted without copying files"),
|
|
92
|
+
family: Optional[list[str]] = typer.Option(None, "--family", "-f", help="Filter by family name (repeatable)"),
|
|
93
|
+
force: bool = typer.Option(False, "--force", help="Overwrite existing files"),
|
|
94
|
+
flat: bool = typer.Option(False, "--flat", help="Put all fonts in output dir without family subdirectories"),
|
|
95
|
+
zip_files: bool = typer.Option(False, "--zip-files", "-z", help="Create one zip archive per family in the output directory"),
|
|
96
|
+
font_dir: Optional[Path] = typer.Option(None, "--font-dir", help="Override the Adobe CoreSync font directory"),
|
|
97
|
+
) -> None:
|
|
98
|
+
"""Extract Adobe CC fonts to OTF files, organized in per-family subdirectories."""
|
|
99
|
+
font_path = font_dir or get_adobe_font_path()
|
|
100
|
+
manifest = font_path / "c" / "entitlements.xml"
|
|
101
|
+
|
|
102
|
+
if not manifest.exists():
|
|
103
|
+
console.print(f"[red]Manifest not found:[/red] {manifest}")
|
|
104
|
+
raise typer.Exit(1)
|
|
105
|
+
|
|
106
|
+
console.print(f"[dim]Reading entitlements from[/dim] {manifest}")
|
|
107
|
+
entries = parse_entitlements(manifest)
|
|
108
|
+
|
|
109
|
+
if family:
|
|
110
|
+
filter_set = {f.lower() for f in family}
|
|
111
|
+
entries = [e for e in entries if e.family_name.lower() in filter_set]
|
|
112
|
+
|
|
113
|
+
if not entries:
|
|
114
|
+
console.print("[yellow]No fonts matched the given filters.[/yellow]")
|
|
115
|
+
raise typer.Exit(0)
|
|
116
|
+
|
|
117
|
+
if not dry_run:
|
|
118
|
+
output.mkdir(parents=True, exist_ok=True)
|
|
119
|
+
|
|
120
|
+
stats = ExtractionStats()
|
|
121
|
+
|
|
122
|
+
with Progress(
|
|
123
|
+
SpinnerColumn(),
|
|
124
|
+
TextColumn("[progress.description]{task.description}"),
|
|
125
|
+
BarColumn(),
|
|
126
|
+
TaskProgressColumn(),
|
|
127
|
+
console=console,
|
|
128
|
+
transient=True,
|
|
129
|
+
) as progress:
|
|
130
|
+
task = progress.add_task("Processing...", total=len(entries))
|
|
131
|
+
|
|
132
|
+
for entry in entries:
|
|
133
|
+
progress.update(task, description=f"[dim]{entry.full_name[:50]}[/dim]")
|
|
134
|
+
|
|
135
|
+
source = find_font_file(entry.font_id, font_path)
|
|
136
|
+
if source is None:
|
|
137
|
+
stats.missing += 1
|
|
138
|
+
progress.advance(task)
|
|
139
|
+
continue
|
|
140
|
+
|
|
141
|
+
safe_family = sanitize_path_component(entry.family_name)
|
|
142
|
+
safe_full = sanitize_path_component(entry.full_name)
|
|
143
|
+
dest_dir = output if flat else output / safe_family
|
|
144
|
+
destination = dest_dir / f"{safe_full}.otf"
|
|
145
|
+
|
|
146
|
+
stats.families.setdefault(entry.family_name, [])
|
|
147
|
+
stats.family_files.setdefault(entry.family_name, [])
|
|
148
|
+
|
|
149
|
+
if destination.exists() and not force:
|
|
150
|
+
stats.skipped += 1
|
|
151
|
+
progress.advance(task)
|
|
152
|
+
continue
|
|
153
|
+
|
|
154
|
+
try:
|
|
155
|
+
TTFont(file=source)
|
|
156
|
+
except Exception as exc:
|
|
157
|
+
console.print(f"[yellow] Invalid font file:[/yellow] {entry.full_name} — {exc}")
|
|
158
|
+
stats.errors += 1
|
|
159
|
+
progress.advance(task)
|
|
160
|
+
continue
|
|
161
|
+
|
|
162
|
+
if not dry_run:
|
|
163
|
+
dest_dir.mkdir(parents=True, exist_ok=True)
|
|
164
|
+
shutil.copy(source, destination)
|
|
165
|
+
|
|
166
|
+
stats.families[entry.family_name].append(entry.variation_name)
|
|
167
|
+
stats.family_files[entry.family_name].append(destination)
|
|
168
|
+
stats.extracted += 1
|
|
169
|
+
progress.advance(task)
|
|
170
|
+
|
|
171
|
+
zipped = 0
|
|
172
|
+
if zip_files and not dry_run:
|
|
173
|
+
zipped = _zip_families(stats.family_files, output)
|
|
174
|
+
|
|
175
|
+
_print_report(stats, dry_run, zipped)
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
def _zip_families(family_files: dict[str, list[Path]], output: Path) -> int:
|
|
179
|
+
zipped = 0
|
|
180
|
+
for family_name, paths in family_files.items():
|
|
181
|
+
if not paths:
|
|
182
|
+
continue
|
|
183
|
+
zip_path = output / f"{sanitize_path_component(family_name)}.zip"
|
|
184
|
+
with zipfile.ZipFile(zip_path, "w", compression=zipfile.ZIP_DEFLATED) as zf:
|
|
185
|
+
for p in paths:
|
|
186
|
+
zf.write(p, arcname=p.name)
|
|
187
|
+
zipped += 1
|
|
188
|
+
return zipped
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
def _print_report(stats: ExtractionStats, dry_run: bool, zipped: int = 0) -> None:
|
|
192
|
+
extracted_families = {fam: vars for fam, vars in stats.families.items() if vars}
|
|
193
|
+
|
|
194
|
+
if extracted_families:
|
|
195
|
+
table = Table(title="Fonts Extracted by Family", show_header=True, header_style="bold")
|
|
196
|
+
table.add_column("Family", style="cyan", no_wrap=True)
|
|
197
|
+
table.add_column("Variations", style="green")
|
|
198
|
+
table.add_column("#", justify="right", style="bold")
|
|
199
|
+
|
|
200
|
+
for fam_name, variations in sorted(extracted_families.items()):
|
|
201
|
+
table.add_row(fam_name, ", ".join(sorted(variations)), str(len(variations)))
|
|
202
|
+
|
|
203
|
+
console.print()
|
|
204
|
+
console.print(table)
|
|
205
|
+
|
|
206
|
+
console.print()
|
|
207
|
+
action = "Would extract" if dry_run else "Extracted"
|
|
208
|
+
console.print(f"[bold green]{action}:[/bold green] {stats.extracted} fonts across {len(extracted_families)} families")
|
|
209
|
+
if stats.skipped:
|
|
210
|
+
console.print(f"[yellow]Skipped (already exist):[/yellow] {stats.skipped}")
|
|
211
|
+
if stats.missing:
|
|
212
|
+
console.print(f"[red]Missing from filesystem:[/red] {stats.missing}")
|
|
213
|
+
if stats.errors:
|
|
214
|
+
console.print(f"[red]Errors:[/red] {stats.errors}")
|
|
215
|
+
if zipped:
|
|
216
|
+
console.print(f"[bold cyan]Zipped:[/bold cyan] {zipped} family archives created")
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
def main() -> None:
|
|
220
|
+
app()
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
if __name__ == "__main__":
|
|
224
|
+
main()
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "adobe-cc-font-extractor"
|
|
3
|
+
version = "1.0.0"
|
|
4
|
+
description = "Extract Adobe CC fonts to local OTF files organized by family"
|
|
5
|
+
requires-python = ">=3.10"
|
|
6
|
+
dependencies = [
|
|
7
|
+
"fonttools>=4.54.0",
|
|
8
|
+
"typer>=0.12.0",
|
|
9
|
+
"rich>=13.0.0",
|
|
10
|
+
]
|
|
11
|
+
|
|
12
|
+
[project.scripts]
|
|
13
|
+
adobe-cc-font-extractor = "adobe_cc_font_extractor.main:main"
|
|
14
|
+
|
|
15
|
+
[build-system]
|
|
16
|
+
requires = ["hatchling"]
|
|
17
|
+
build-backend = "hatchling.build"
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
version = 1
|
|
2
|
+
revision = 3
|
|
3
|
+
requires-python = ">=3.10"
|
|
4
|
+
|
|
5
|
+
[[package]]
|
|
6
|
+
name = "adobe-cc-font-extractor"
|
|
7
|
+
version = "1.0.0"
|
|
8
|
+
source = { editable = "." }
|
|
9
|
+
dependencies = [
|
|
10
|
+
{ name = "fonttools" },
|
|
11
|
+
{ name = "rich" },
|
|
12
|
+
{ name = "typer" },
|
|
13
|
+
]
|
|
14
|
+
|
|
15
|
+
[package.metadata]
|
|
16
|
+
requires-dist = [
|
|
17
|
+
{ name = "fonttools", specifier = ">=4.54.0" },
|
|
18
|
+
{ name = "rich", specifier = ">=13.0.0" },
|
|
19
|
+
{ name = "typer", specifier = ">=0.12.0" },
|
|
20
|
+
]
|
|
21
|
+
|
|
22
|
+
[[package]]
|
|
23
|
+
name = "annotated-doc"
|
|
24
|
+
version = "0.0.4"
|
|
25
|
+
source = { registry = "https://pypi.org/simple" }
|
|
26
|
+
sdist = { url = "https://files.pythonhosted.org/packages/57/ba/046ceea27344560984e26a590f90bc7f4a75b06701f653222458922b558c/annotated_doc-0.0.4.tar.gz", hash = "sha256:fbcda96e87e9c92ad167c2e53839e57503ecfda18804ea28102353485033faa4", size = 7288, upload-time = "2025-11-10T22:07:42.062Z" }
|
|
27
|
+
wheels = [
|
|
28
|
+
{ url = "https://files.pythonhosted.org/packages/1e/d3/26bf1008eb3d2daa8ef4cacc7f3bfdc11818d111f7e2d0201bc6e3b49d45/annotated_doc-0.0.4-py3-none-any.whl", hash = "sha256:571ac1dc6991c450b25a9c2d84a3705e2ae7a53467b5d111c24fa8baabbed320", size = 5303, upload-time = "2025-11-10T22:07:40.673Z" },
|
|
29
|
+
]
|
|
30
|
+
|
|
31
|
+
[[package]]
|
|
32
|
+
name = "colorama"
|
|
33
|
+
version = "0.4.6"
|
|
34
|
+
source = { registry = "https://pypi.org/simple" }
|
|
35
|
+
sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" }
|
|
36
|
+
wheels = [
|
|
37
|
+
{ url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" },
|
|
38
|
+
]
|
|
39
|
+
|
|
40
|
+
[[package]]
|
|
41
|
+
name = "fonttools"
|
|
42
|
+
version = "4.63.0"
|
|
43
|
+
source = { registry = "https://pypi.org/simple" }
|
|
44
|
+
sdist = { url = "https://files.pythonhosted.org/packages/84/69/c97f2c18e0db87d2c7b15da1974dace76ae938f1cfa22e2727a648b7ed43/fonttools-4.63.0.tar.gz", hash = "sha256:caeb583deeb5168e694b65cda8b4ee62abedfa66cf88488734466f2366b9c4e0", size = 3597189, upload-time = "2026-05-14T12:04:30.958Z" }
|
|
45
|
+
wheels = [
|
|
46
|
+
{ url = "https://files.pythonhosted.org/packages/f2/c9/4141c90a90db20f807c7e10bfd689fe53eb8f7f4caff58ee4d4dfe46919f/fonttools-4.63.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e3297a6a4059b4acc3a1e9a8b04741f240a80044eef08ebd32e8b5bcdddce75b", size = 2884632, upload-time = "2026-05-14T12:02:38.56Z" },
|
|
47
|
+
{ url = "https://files.pythonhosted.org/packages/b8/46/ad12b5c10eae602d7ef814b02afa08aacbf89da917fed5b071282b7eadc2/fonttools-4.63.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b1cd75a03ad8cb5bc40c90bfde68c0c47de423aa19e5c0f362b43520645eea94", size = 2429441, upload-time = "2026-05-14T12:02:41.162Z" },
|
|
48
|
+
{ url = "https://files.pythonhosted.org/packages/90/8f/bdca24a84c81d56fffed052229cdcff368f6e05882e526f4558891481f65/fonttools-4.63.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c0425b277a59cff3d80ca42162a8de360f318438a2ac83570842a678d826d579", size = 4946346, upload-time = "2026-05-14T12:02:43.41Z" },
|
|
49
|
+
{ url = "https://files.pythonhosted.org/packages/04/59/a639c0e136441ee91a65b56fdf89e5d075927e7a09c559d1b0f5276577db/fonttools-4.63.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d7e5c9973aa04c95650c96e5f5ad865fbf42d62079163ecfab1e01cbc2504c22", size = 4903184, upload-time = "2026-05-14T12:02:45.742Z" },
|
|
50
|
+
{ url = "https://files.pythonhosted.org/packages/e6/53/91b7e0cb45b536f3da1b29ba8cbab89f27e8b986809e0b1982303a3f4eca/fonttools-4.63.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cb014d58140a38135f16064c74c652ed57aa0b75cbf8bb59cac821f7edb5334e", size = 4922967, upload-time = "2026-05-14T12:02:48.386Z" },
|
|
51
|
+
{ url = "https://files.pythonhosted.org/packages/c7/b7/87439bf44e6b97c5538cd29d0b7e366a5b8ce2cc132a4134fb67fa3f2fa2/fonttools-4.63.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:032038247a96c1690f9f31e377c389383c902531b085aa4e4dabd6f57f870e69", size = 5042799, upload-time = "2026-05-14T12:02:50.424Z" },
|
|
52
|
+
{ url = "https://files.pythonhosted.org/packages/ad/7c/8b96c3263b89ef99cded544c0f0636686f85dbd3c211c4dceef0231fca23/fonttools-4.63.0-cp310-cp310-win32.whl", hash = "sha256:a8b33a82979e0a6a34ff435cc81317be1f95ec1ebb7a3a2d1c8a6a54f02ae44e", size = 1519704, upload-time = "2026-05-14T12:02:52.523Z" },
|
|
53
|
+
{ url = "https://files.pythonhosted.org/packages/e5/4d/2c2f0069970b6907de8fb5b05c5c0193cc22f717df151d1c7aef1c738f58/fonttools-4.63.0-cp310-cp310-win_amd64.whl", hash = "sha256:0c18358a155d75034911c5ee397a5b44cd19dd325dbb8b35fb60bf421d6a72ac", size = 1568666, upload-time = "2026-05-14T12:02:54.917Z" },
|
|
54
|
+
{ url = "https://files.pythonhosted.org/packages/75/2b/a7f1545bdf5da69c4bda0cea2a5781f0ad2a6623e0277267672db43c5fe6/fonttools-4.63.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2b8ae05d9eacf6081414d759c0a352769ac28ce31280d6bb8e77b03f9e3c449f", size = 2881793, upload-time = "2026-05-14T12:02:56.645Z" },
|
|
55
|
+
{ url = "https://files.pythonhosted.org/packages/49/50/965308c703f085f225db2886813b27e015b8b3438c350b22dd65b52c2a2c/fonttools-4.63.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:79cdc9f567aec74a72918fd060283911406750cbc9fd28c1316023deb6ce31a9", size = 2428130, upload-time = "2026-05-14T12:02:58.891Z" },
|
|
56
|
+
{ url = "https://files.pythonhosted.org/packages/d8/38/6937fbd7f2dc3a6b48725851bc2c15ec949b9af14d9bbcb5fe83cdf9bdf9/fonttools-4.63.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2c14b4fd138c4bafcca294765c547914e1aa431ae1ca94ab99d8db08c958bd3b", size = 5111952, upload-time = "2026-05-14T12:03:01.263Z" },
|
|
57
|
+
{ url = "https://files.pythonhosted.org/packages/0b/43/a81f20050a3115b57d62c8e781446949512eac36690dc384ccea65ff4cc1/fonttools-4.63.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d76ac49f929aecaf82d83250b8347e099d7aecba0f4726c1d9b6df3b8bb5fe18", size = 5082308, upload-time = "2026-05-14T12:03:03.211Z" },
|
|
58
|
+
{ url = "https://files.pythonhosted.org/packages/67/00/cdd9d4944ca6ae280d01e69cc37bde3bf663630b837a6fc6d2cd65d80e0e/fonttools-4.63.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:dcf076a4474fe0d7367e5bbf5b052c7284fa1feca729c04176ce513521afd8a0", size = 5087932, upload-time = "2026-05-14T12:03:05.147Z" },
|
|
59
|
+
{ url = "https://files.pythonhosted.org/packages/f5/f1/0aa0dbea778c75adbef223c42019fd47d22262b905974d62d829545d485f/fonttools-4.63.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:7dd683fef0663e9f0f45cf541d788d24caa3ec9db50796b588e1757d8b3bc007", size = 5213271, upload-time = "2026-05-14T12:03:07.238Z" },
|
|
60
|
+
{ url = "https://files.pythonhosted.org/packages/a8/99/253e4056e1f0e67b9390125a154b73b5eb73ad521bece95c004858fdeec2/fonttools-4.63.0-cp311-cp311-win32.whl", hash = "sha256:afefc1ed0a59785a7fb06ea7e1678e849c193e1e387db783579bc7b3056fcfcb", size = 2304473, upload-time = "2026-05-14T12:03:09.271Z" },
|
|
61
|
+
{ url = "https://files.pythonhosted.org/packages/08/60/defa5e69641db890a63be281f41345f4c33b157824eaf0b9fad3e08b0dcb/fonttools-4.63.0-cp311-cp311-win_amd64.whl", hash = "sha256:063e08bd17bd5a90127a14123de0d6a952dbc847695fd98b63c043d58057f90c", size = 2356389, upload-time = "2026-05-14T12:03:11.53Z" },
|
|
62
|
+
{ url = "https://files.pythonhosted.org/packages/08/ef/b3c6b9b5be2f82416d73fe2ed2e96e2793cd80e7510bd6a17ca79cdd88ec/fonttools-4.63.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:37dd23e621e3b0aef1baa70a303b80aaf38449632cfc8fd2a55fb285bbccfc02", size = 2881131, upload-time = "2026-05-14T12:03:13.386Z" },
|
|
63
|
+
{ url = "https://files.pythonhosted.org/packages/44/a0/c815bea63117fa63e4e1c01f8a1110d2112fa003f838e6467094ec2432ce/fonttools-4.63.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a9faff9e0c1f76f9fd55899d2ce785832efebab37eb8ae13995853aef178bef0", size = 2426704, upload-time = "2026-05-14T12:03:15.801Z" },
|
|
64
|
+
{ url = "https://files.pythonhosted.org/packages/44/04/0b91d8e916e92ad1fac9e4624760baf0fd5ff2ead614c2f68fb21373f03f/fonttools-4.63.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ef3048ef05dbb552b89817713d9cac912e00d0fde4a3105c00d29e52e10c89af", size = 5044298, upload-time = "2026-05-14T12:03:18.085Z" },
|
|
65
|
+
{ url = "https://files.pythonhosted.org/packages/77/c7/2342da9830e3e9d4870305ca5d2091d2a83284f2953079b7bdd3b5e029d8/fonttools-4.63.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:58dc6bb86a78d782f00f9190ca02c119cf5bbe2807536e361e18d42019f877d8", size = 4999800, upload-time = "2026-05-14T12:03:20.161Z" },
|
|
66
|
+
{ url = "https://files.pythonhosted.org/packages/e6/6d/67fe16c48d7ce050979b33f47e0d28a318f02da030602e944c34f7a16ef3/fonttools-4.63.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ee08ebfa58f6e1aeff5697ab9582105bb620008c1caafb681e4c557e7483027b", size = 4982666, upload-time = "2026-05-14T12:03:22.87Z" },
|
|
67
|
+
{ url = "https://files.pythonhosted.org/packages/f2/00/3bbab338c07c71fa56269953845e92c951a61457bbbb0f1022551ea266d9/fonttools-4.63.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:27fdc65af8da6f88b9c6121c47a464cbe359fcfff7ff6fc2d37a1f395d755b78", size = 5133598, upload-time = "2026-05-14T12:03:25.168Z" },
|
|
68
|
+
{ url = "https://files.pythonhosted.org/packages/62/f2/aa27c7f98db5b064883dadcc5283947e81e034de42e22a33675878d98b54/fonttools-4.63.0-cp312-cp312-win32.whl", hash = "sha256:af2fd1664d00a397d75f806985ddb36282091c2131a73a6485c23b4a34722263", size = 2292575, upload-time = "2026-05-14T12:03:27.496Z" },
|
|
69
|
+
{ url = "https://files.pythonhosted.org/packages/87/36/cccb9bc2a6ab63d1b2980374f0dca72ce95ae267c9b4cfe77455bb70d0d4/fonttools-4.63.0-cp312-cp312-win_amd64.whl", hash = "sha256:59ac449f8cca9b4ffa08d2e7bbadad87ce710d69d1eda5c3c1ce579baa987272", size = 2343211, upload-time = "2026-05-14T12:03:30.057Z" },
|
|
70
|
+
{ url = "https://files.pythonhosted.org/packages/0f/8d/d8fec3dcde2963f8c908fb315e5ff2cd0ac34f82394bbbf73a2aa5145ce3/fonttools-4.63.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:cd7e9857e5e63738b9d9fd707bc1f59c8b09e5177726d23664db393c59bb08bd", size = 2876062, upload-time = "2026-05-14T12:03:32.554Z" },
|
|
71
|
+
{ url = "https://files.pythonhosted.org/packages/ef/71/d935dc54e4ff121bfdd11e08702db63a7e6f25af21d8a3d7b7212df53641/fonttools-4.63.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c2a2a42198b696a6f48fad91709afb55176e66a5e566131219dba372fb7f8c59", size = 2424594, upload-time = "2026-05-14T12:03:34.86Z" },
|
|
72
|
+
{ url = "https://files.pythonhosted.org/packages/8e/40/e76320afa1df918e146155ef239b1719ee266092e96f5423bfd075affba1/fonttools-4.63.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1e874792a8212b44583ea02189d9e693906b2f78b261f372f95d6c563210ac1d", size = 5024840, upload-time = "2026-05-14T12:03:36.745Z" },
|
|
73
|
+
{ url = "https://files.pythonhosted.org/packages/ce/36/0b805d8c485f872f65a509cbe3b58a5d0d17bee855333b54a150c79d3061/fonttools-4.63.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:22135da48a348785c5e2d5d2d9d6bec5ed44adacbaeb9db12d9493bf6c6bfa68", size = 4975801, upload-time = "2026-05-14T12:03:38.833Z" },
|
|
74
|
+
{ url = "https://files.pythonhosted.org/packages/c8/26/2cee03d0aa083ab022da5c07aff9ed3f689da1defb81ad6917c9627896da/fonttools-4.63.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ccf41f2efdf56994d22d73bef4ced1052161958169428d06ba9724ea9e9a64be", size = 4965009, upload-time = "2026-05-14T12:03:41.494Z" },
|
|
75
|
+
{ url = "https://files.pythonhosted.org/packages/7e/48/cc4b66d9058c0d0982c833fad10127c4b0e9324606aafa41382295ca4102/fonttools-4.63.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9ced0bd02ac751dd6319b0da88aaef24414e3b0dbc32bb4f24944821a3741a27", size = 5105892, upload-time = "2026-05-14T12:03:43.525Z" },
|
|
76
|
+
{ url = "https://files.pythonhosted.org/packages/d8/1f/a98a30a814b9ddef3a2e706025f90b9e0bc94890e6cb15254bc86547d11a/fonttools-4.63.0-cp313-cp313-win32.whl", hash = "sha256:85be818f5506e8a7753153def2c9550178f0ecae6a47b5e0e8dbb23f7cc90380", size = 2291313, upload-time = "2026-05-14T12:03:45.594Z" },
|
|
77
|
+
{ url = "https://files.pythonhosted.org/packages/92/46/5177b01f3b4abfdd4409f31cca4ab279c9343a26efbe9ec78c97fc612e02/fonttools-4.63.0-cp313-cp313-win_amd64.whl", hash = "sha256:ba04cb5891d4c0c21b6da95eda8d7b090021508a294fff33464fc7d241e0856b", size = 2342299, upload-time = "2026-05-14T12:03:47.414Z" },
|
|
78
|
+
{ url = "https://files.pythonhosted.org/packages/27/d2/23d25e3f247b328be58d04a4c9f894178a0d1eda7d42867cfb388adaf416/fonttools-4.63.0-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:fd1e3094f42d806d3d7c79162fc59e5910fcbe3a7360c385b8da969bc4493745", size = 2875338, upload-time = "2026-05-14T12:03:50.052Z" },
|
|
79
|
+
{ url = "https://files.pythonhosted.org/packages/cd/58/7dfa0c761cb3b2964e2a84c4dc986c926a87de0cb9fb60d5b28ded3f2914/fonttools-4.63.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:6e528da43bc3791085f8cb6141b1d13e459226790240340fcbb4625649238b03", size = 2422661, upload-time = "2026-05-14T12:03:52.154Z" },
|
|
80
|
+
{ url = "https://files.pythonhosted.org/packages/dd/87/64cfa18a7a1621d17b7f4502b2b0ed8a135a90c3db51ea590ee99043e76b/fonttools-4.63.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b2248c5decb223562f7902ff6325077a073f608ee8e33e88ad88db734eb9f49", size = 5010526, upload-time = "2026-05-14T12:03:54.647Z" },
|
|
81
|
+
{ url = "https://files.pythonhosted.org/packages/36/e1/a8933a72c45a87177fbde2696e0d0755c8c9062f8c077a961c6215fa27b1/fonttools-4.63.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:308f957cdeaf8abe4e5f2f124902ef405448af92c90f80e302a3b771c2e6116b", size = 4923946, upload-time = "2026-05-14T12:03:56.984Z" },
|
|
82
|
+
{ url = "https://files.pythonhosted.org/packages/27/60/872e6e233b8c5e8b41413796ff18b7fe479661bd40147e071b450dfad7a1/fonttools-4.63.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:bf00f21eb5fb721dbaf73d1e9da6d02a1af7768f2ebcf9798be98beab8ba90f6", size = 4962489, upload-time = "2026-05-14T12:03:59.443Z" },
|
|
83
|
+
{ url = "https://files.pythonhosted.org/packages/30/c4/83c24f2ec38b90cfda84bf4b1a1f49df80e84a1db4e7ac6e0d41bf23bc39/fonttools-4.63.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:c1aaa4b9c75798400ac043ce04d74e7830376c85095a5a6ed7cba2f17a266bf4", size = 5071870, upload-time = "2026-05-14T12:04:02.122Z" },
|
|
84
|
+
{ url = "https://files.pythonhosted.org/packages/de/40/3ae22b60ff1d41ce0bd044b31238cdc72cef99f28b976f1e128ebd618c9b/fonttools-4.63.0-cp314-cp314-win32.whl", hash = "sha256:22693918177bd9ceabec4736d338045f357769416fc6b0b2508eefef75b08616", size = 2295026, upload-time = "2026-05-14T12:04:04.47Z" },
|
|
85
|
+
{ url = "https://files.pythonhosted.org/packages/c3/d4/98078064ccc76b45cb0f6c002452011e93c4bd26f6850344f0951cc1fe89/fonttools-4.63.0-cp314-cp314-win_amd64.whl", hash = "sha256:7d782fac32985914c351556f68ac0855391572bcd87de50e05970d3cd4c96fc5", size = 2347454, upload-time = "2026-05-14T12:04:06.752Z" },
|
|
86
|
+
{ url = "https://files.pythonhosted.org/packages/49/4e/652d1580c5f4e39f7d103b0c793e4773129ad633dce4addd0cf4dfebde02/fonttools-4.63.0-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:6db5140a60a5d731d21ec076745b40a310607731b0a565b50776393188649001", size = 2958152, upload-time = "2026-05-14T12:04:08.706Z" },
|
|
87
|
+
{ url = "https://files.pythonhosted.org/packages/0e/55/ad864c9a9b219f552eb46b32cd7906c466e5a578ba0c3abfcc0fe7413eb6/fonttools-4.63.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:7d76edbff9014094dbf03bd2d074709dfa6ec7aba13d838c937a2b33d2d6a86e", size = 2460809, upload-time = "2026-05-14T12:04:10.783Z" },
|
|
88
|
+
{ url = "https://files.pythonhosted.org/packages/ea/2b/0aa8db70f18cf52e49b4ed5ecec68547f981160bf5ded3b5aed6faa0a6f9/fonttools-4.63.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0eac00b9118c3c2f87d272e45341871c5b3066baa3c86897fa634a7c3fb59096", size = 5148649, upload-time = "2026-05-14T12:04:12.747Z" },
|
|
89
|
+
{ url = "https://files.pythonhosted.org/packages/7f/63/18e4369c25043096f1048e0c9915951adc4f842bd81c6b18155824d6fa99/fonttools-4.63.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:51394295f1a51de8b5f30bdb1e1b9a4231536c7064ef5c6e211eec19fa36036f", size = 4932147, upload-time = "2026-05-14T12:04:14.806Z" },
|
|
90
|
+
{ url = "https://files.pythonhosted.org/packages/a1/3f/67f3eac2ffd8a98446c5022f8ed3864eac878a5ff7af8df4c8286dba16cc/fonttools-4.63.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:9e12f105d2b6342c559c298afb674006bb2893afc7102dcf8a1b55b0486b4e40", size = 5027237, upload-time = "2026-05-14T12:04:17.675Z" },
|
|
91
|
+
{ url = "https://files.pythonhosted.org/packages/1a/ba/4e6214cb38a7b04779e97bb7636de9a5c7f20af7018d03dee0b64c08510a/fonttools-4.63.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:796f27556dbe094c4824f75ca85267e4df776c79036c8441469a4df37038c196", size = 5053933, upload-time = "2026-05-14T12:04:20.818Z" },
|
|
92
|
+
{ url = "https://files.pythonhosted.org/packages/34/3b/214dcc19ee31d3d38fb5ad2755c11ef0514e5dc300bbaf41c0b69f393799/fonttools-4.63.0-cp314-cp314t-win32.whl", hash = "sha256:948428a275741f0b64b113c955425a953314f4b9ab9997f73a72c83e68e569c8", size = 2359326, upload-time = "2026-05-14T12:04:24.22Z" },
|
|
93
|
+
{ url = "https://files.pythonhosted.org/packages/dd/1e/3ff1a9b523058c2eeb6a9d50f5574e2a738200d0d94107d5bc4105e8da3f/fonttools-4.63.0-cp314-cp314t-win_amd64.whl", hash = "sha256:6d4741eb179121cab9eea4cb2393d24492373a260d7945006358c08cfbf45419", size = 2425829, upload-time = "2026-05-14T12:04:26.829Z" },
|
|
94
|
+
{ url = "https://files.pythonhosted.org/packages/2c/47/c99d5268f354002ce80f8d029cd9d7d872969da1de8b93d32de4dc56d6f4/fonttools-4.63.0-py3-none-any.whl", hash = "sha256:445af2eab030a16b9171ea8bdda7ebf7d96bda2df88ee182a464252f6e05e20d", size = 1164562, upload-time = "2026-05-14T12:04:29.092Z" },
|
|
95
|
+
]
|
|
96
|
+
|
|
97
|
+
[[package]]
|
|
98
|
+
name = "markdown-it-py"
|
|
99
|
+
version = "4.2.0"
|
|
100
|
+
source = { registry = "https://pypi.org/simple" }
|
|
101
|
+
dependencies = [
|
|
102
|
+
{ name = "mdurl" },
|
|
103
|
+
]
|
|
104
|
+
sdist = { url = "https://files.pythonhosted.org/packages/06/ff/7841249c247aa650a76b9ee4bbaeae59370dc8bfd2f6c01f3630c35eb134/markdown_it_py-4.2.0.tar.gz", hash = "sha256:04a21681d6fbb623de53f6f364d352309d4094dd4194040a10fd51833e418d49", size = 82454, upload-time = "2026-05-07T12:08:28.36Z" }
|
|
105
|
+
wheels = [
|
|
106
|
+
{ url = "https://files.pythonhosted.org/packages/b3/81/4da04ced5a082363ecfa159c010d200ecbd959ae410c10c0264a38cac0f5/markdown_it_py-4.2.0-py3-none-any.whl", hash = "sha256:9f7ebbcd14fe59494226453aed97c1070d83f8d24b6fc3a3bcf9a38092641c4a", size = 91687, upload-time = "2026-05-07T12:08:27.182Z" },
|
|
107
|
+
]
|
|
108
|
+
|
|
109
|
+
[[package]]
|
|
110
|
+
name = "mdurl"
|
|
111
|
+
version = "0.1.2"
|
|
112
|
+
source = { registry = "https://pypi.org/simple" }
|
|
113
|
+
sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729, upload-time = "2022-08-14T12:40:10.846Z" }
|
|
114
|
+
wheels = [
|
|
115
|
+
{ url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979, upload-time = "2022-08-14T12:40:09.779Z" },
|
|
116
|
+
]
|
|
117
|
+
|
|
118
|
+
[[package]]
|
|
119
|
+
name = "pygments"
|
|
120
|
+
version = "2.20.0"
|
|
121
|
+
source = { registry = "https://pypi.org/simple" }
|
|
122
|
+
sdist = { url = "https://files.pythonhosted.org/packages/c3/b2/bc9c9196916376152d655522fdcebac55e66de6603a76a02bca1b6414f6c/pygments-2.20.0.tar.gz", hash = "sha256:6757cd03768053ff99f3039c1a36d6c0aa0b263438fcab17520b30a303a82b5f", size = 4955991, upload-time = "2026-03-29T13:29:33.898Z" }
|
|
123
|
+
wheels = [
|
|
124
|
+
{ url = "https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl", hash = "sha256:81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946d0176", size = 1231151, upload-time = "2026-03-29T13:29:30.038Z" },
|
|
125
|
+
]
|
|
126
|
+
|
|
127
|
+
[[package]]
|
|
128
|
+
name = "rich"
|
|
129
|
+
version = "15.0.0"
|
|
130
|
+
source = { registry = "https://pypi.org/simple" }
|
|
131
|
+
dependencies = [
|
|
132
|
+
{ name = "markdown-it-py" },
|
|
133
|
+
{ name = "pygments" },
|
|
134
|
+
]
|
|
135
|
+
sdist = { url = "https://files.pythonhosted.org/packages/c0/8f/0722ca900cc807c13a6a0c696dacf35430f72e0ec571c4275d2371fca3e9/rich-15.0.0.tar.gz", hash = "sha256:edd07a4824c6b40189fb7ac9bc4c52536e9780fbbfbddf6f1e2502c31b068c36", size = 230680, upload-time = "2026-04-12T08:24:00.75Z" }
|
|
136
|
+
wheels = [
|
|
137
|
+
{ url = "https://files.pythonhosted.org/packages/82/3b/64d4899d73f91ba49a8c18a8ff3f0ea8f1c1d75481760df8c68ef5235bf5/rich-15.0.0-py3-none-any.whl", hash = "sha256:33bd4ef74232fb73fe9279a257718407f169c09b78a87ad3d296f548e27de0bb", size = 310654, upload-time = "2026-04-12T08:24:02.83Z" },
|
|
138
|
+
]
|
|
139
|
+
|
|
140
|
+
[[package]]
|
|
141
|
+
name = "shellingham"
|
|
142
|
+
version = "1.5.4"
|
|
143
|
+
source = { registry = "https://pypi.org/simple" }
|
|
144
|
+
sdist = { url = "https://files.pythonhosted.org/packages/58/15/8b3609fd3830ef7b27b655beb4b4e9c62313a4e8da8c676e142cc210d58e/shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de", size = 10310, upload-time = "2023-10-24T04:13:40.426Z" }
|
|
145
|
+
wheels = [
|
|
146
|
+
{ url = "https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686", size = 9755, upload-time = "2023-10-24T04:13:38.866Z" },
|
|
147
|
+
]
|
|
148
|
+
|
|
149
|
+
[[package]]
|
|
150
|
+
name = "typer"
|
|
151
|
+
version = "0.26.8"
|
|
152
|
+
source = { registry = "https://pypi.org/simple" }
|
|
153
|
+
dependencies = [
|
|
154
|
+
{ name = "annotated-doc" },
|
|
155
|
+
{ name = "colorama", marker = "sys_platform == 'win32'" },
|
|
156
|
+
{ name = "rich" },
|
|
157
|
+
{ name = "shellingham" },
|
|
158
|
+
]
|
|
159
|
+
sdist = { url = "https://files.pythonhosted.org/packages/7c/f7/68adc395201b20b872d68e975386832e8005ffeacedd43a1d837a32815be/typer-0.26.8.tar.gz", hash = "sha256:c244a6bd558886fe3f8780efb6bdd28bb9aff005a94eedebaa5cb32926fe2f7e", size = 202097, upload-time = "2026-06-26T09:22:45.705Z" }
|
|
160
|
+
wheels = [
|
|
161
|
+
{ url = "https://files.pythonhosted.org/packages/80/87/b9fd69c92c6102a066e1b86a35243f53e70bd4c709f2a26d9f4fee4f4dc0/typer-0.26.8-py3-none-any.whl", hash = "sha256:3512ca79ac5c11113414b36e80281b872884477722440691c89d1112e321a49c", size = 122564, upload-time = "2026-06-26T09:22:44.72Z" },
|
|
162
|
+
]
|