circfirm 4.0.0__py3-none-any.whl → 5.0.0__py3-none-any.whl
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.
- circfirm/__init__.py +0 -1
- circfirm/backend/__init__.py +0 -1
- circfirm/backend/cache.py +1 -4
- circfirm/backend/device.py +3 -5
- circfirm/backend/github.py +0 -1
- circfirm/backend/s3.py +2 -5
- circfirm/cli/__init__.py +8 -9
- circfirm/cli/about.py +0 -1
- circfirm/cli/cache.py +9 -6
- circfirm/cli/config.py +0 -1
- circfirm/cli/current.py +0 -1
- circfirm/cli/detect.py +0 -2
- circfirm/cli/install.py +1 -4
- circfirm/cli/query.py +25 -7
- circfirm/cli/update.py +6 -6
- circfirm/startup.py +0 -1
- {circfirm-4.0.0.dist-info → circfirm-5.0.0.dist-info}/METADATA +20 -19
- circfirm-5.0.0.dist-info/RECORD +27 -0
- {circfirm-4.0.0.dist-info → circfirm-5.0.0.dist-info}/WHEEL +1 -1
- circfirm-4.0.0.dist-info/RECORD +0 -27
- {circfirm-4.0.0.dist-info → circfirm-5.0.0.dist-info}/entry_points.txt +0 -0
- {circfirm-4.0.0.dist-info → circfirm-5.0.0.dist-info/licenses}/LICENSE +0 -0
- {circfirm-4.0.0.dist-info → circfirm-5.0.0.dist-info/licenses}/NOTICE +0 -0
- {circfirm-4.0.0.dist-info → circfirm-5.0.0.dist-info/licenses}/NOTICE.license +0 -0
- {circfirm-4.0.0.dist-info → circfirm-5.0.0.dist-info}/top_level.txt +0 -0
circfirm/__init__.py
CHANGED
circfirm/backend/__init__.py
CHANGED
circfirm/backend/cache.py
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# SPDX-FileCopyrightText: 2024 Alec Delaney, for Adafruit Industries
|
|
2
|
-
#
|
|
3
2
|
# SPDX-License-Identifier: MIT
|
|
4
3
|
|
|
5
4
|
"""Backend functionality for the working with the cache.
|
|
@@ -9,13 +8,11 @@ Author(s): Alec Delaney
|
|
|
9
8
|
|
|
10
9
|
import os
|
|
11
10
|
import pathlib
|
|
12
|
-
from typing import Optional
|
|
13
11
|
|
|
14
12
|
import packaging.version
|
|
15
13
|
import requests
|
|
16
14
|
|
|
17
15
|
import circfirm.backend
|
|
18
|
-
import circfirm.startup
|
|
19
16
|
|
|
20
17
|
|
|
21
18
|
def get_uf2_filepath(
|
|
@@ -56,7 +53,7 @@ def download_uf2(board_id: str, version: str, language: str = "en_US") -> None:
|
|
|
56
53
|
uf2file.write(response.content)
|
|
57
54
|
|
|
58
55
|
|
|
59
|
-
def get_sorted_boards(board_id:
|
|
56
|
+
def get_sorted_boards(board_id: str | None) -> dict[str, dict[str, set[str]]]:
|
|
60
57
|
"""Get a sorted collection of boards, versions, and languages."""
|
|
61
58
|
boards: dict[str, dict[str, set[str]]] = {}
|
|
62
59
|
for board_folder in sorted(os.listdir(circfirm.UF2_ARCHIVE)):
|
circfirm/backend/device.py
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# SPDX-FileCopyrightText: 2024 Alec Delaney, for Adafruit Industries
|
|
2
|
-
#
|
|
3
2
|
# SPDX-License-Identifier: MIT
|
|
4
3
|
|
|
5
4
|
"""Backend functionality for the working with the connected devices.
|
|
@@ -9,7 +8,6 @@ Author(s): Alec Delaney
|
|
|
9
8
|
|
|
10
9
|
import pathlib
|
|
11
10
|
import re
|
|
12
|
-
from typing import Optional
|
|
13
11
|
|
|
14
12
|
import psutil
|
|
15
13
|
|
|
@@ -35,7 +33,7 @@ def get_board_info(device_path: str) -> tuple[str, str]:
|
|
|
35
33
|
return board_match[1], version_match[1]
|
|
36
34
|
|
|
37
35
|
|
|
38
|
-
def _find_device(filename: str) ->
|
|
36
|
+
def _find_device(filename: str) -> str | None:
|
|
39
37
|
"""Find a specific connected device."""
|
|
40
38
|
for partition in psutil.disk_partitions():
|
|
41
39
|
try:
|
|
@@ -47,11 +45,11 @@ def _find_device(filename: str) -> Optional[str]:
|
|
|
47
45
|
return None
|
|
48
46
|
|
|
49
47
|
|
|
50
|
-
def find_circuitpy() ->
|
|
48
|
+
def find_circuitpy() -> str | None:
|
|
51
49
|
"""Find CircuitPython device in non-bootloader mode."""
|
|
52
50
|
return _find_device(circfirm.BOOTOUT_FILE)
|
|
53
51
|
|
|
54
52
|
|
|
55
|
-
def find_bootloader() ->
|
|
53
|
+
def find_bootloader() -> str | None:
|
|
56
54
|
"""Find CircuitPython device in bootloader mode."""
|
|
57
55
|
return _find_device(circfirm.UF2INFO_FILE)
|
circfirm/backend/github.py
CHANGED
circfirm/backend/s3.py
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# SPDX-FileCopyrightText: 2024 Alec Delaney, for Adafruit Industries
|
|
2
|
-
#
|
|
3
2
|
# SPDX-License-Identifier: MIT
|
|
4
3
|
|
|
5
4
|
"""Backend functionality for the working with the CircuitPython firmware S3 bucket.
|
|
@@ -8,7 +7,6 @@ Author(s): Alec Delaney
|
|
|
8
7
|
"""
|
|
9
8
|
|
|
10
9
|
import re
|
|
11
|
-
from typing import Optional
|
|
12
10
|
|
|
13
11
|
import boto3
|
|
14
12
|
import botocore
|
|
@@ -17,7 +15,6 @@ import packaging.version
|
|
|
17
15
|
from mypy_boto3_s3 import S3ServiceResource
|
|
18
16
|
|
|
19
17
|
import circfirm.backend
|
|
20
|
-
import circfirm.backend.cache
|
|
21
18
|
|
|
22
19
|
S3_CONFIG = botocore.client.Config(signature_version=botocore.UNSIGNED)
|
|
23
20
|
S3_RESOURCE: S3ServiceResource = boto3.resource("s3", config=S3_CONFIG)
|
|
@@ -26,7 +23,7 @@ BUCKET = S3_RESOURCE.Bucket(BUCKET_NAME)
|
|
|
26
23
|
|
|
27
24
|
|
|
28
25
|
def get_board_versions(
|
|
29
|
-
board_id: str, language: str = "en_US", *, regex:
|
|
26
|
+
board_id: str, language: str = "en_US", *, regex: str | None = None
|
|
30
27
|
) -> list[str]:
|
|
31
28
|
"""Get a list of CircuitPython versions for a given board."""
|
|
32
29
|
prefix = f"bin/{board_id}/{language}"
|
|
@@ -51,7 +48,7 @@ def get_board_versions(
|
|
|
51
48
|
|
|
52
49
|
def get_latest_board_version(
|
|
53
50
|
board_id: str, language: str, pre_release: bool
|
|
54
|
-
) ->
|
|
51
|
+
) -> str | None:
|
|
55
52
|
"""Get the latest version for a board in a given language."""
|
|
56
53
|
versions = get_board_versions(board_id, language)
|
|
57
54
|
if not pre_release:
|
circfirm/cli/__init__.py
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# SPDX-FileCopyrightText: 2022 Alec Delaney, for Adafruit Industries
|
|
2
|
-
#
|
|
3
2
|
# SPDX-License-Identifier: MIT
|
|
4
3
|
|
|
5
4
|
"""Main CLI functionality for the tool.
|
|
@@ -13,8 +12,8 @@ import pkgutil
|
|
|
13
12
|
import shutil
|
|
14
13
|
import sys
|
|
15
14
|
import time
|
|
16
|
-
from collections.abc import Iterable
|
|
17
|
-
from typing import Any,
|
|
15
|
+
from collections.abc import Callable, Iterable
|
|
16
|
+
from typing import Any, TypeVar
|
|
18
17
|
|
|
19
18
|
import click
|
|
20
19
|
import click_spinner
|
|
@@ -44,9 +43,9 @@ def maybe_support(msg: str) -> None:
|
|
|
44
43
|
|
|
45
44
|
|
|
46
45
|
def get_board_id(
|
|
47
|
-
circuitpy:
|
|
48
|
-
bootloader:
|
|
49
|
-
board:
|
|
46
|
+
circuitpy: str | None,
|
|
47
|
+
bootloader: str | None,
|
|
48
|
+
board: str | None,
|
|
50
49
|
timeout: int = -1,
|
|
51
50
|
) -> tuple[str, str]:
|
|
52
51
|
"""Get the board ID of a device via CLI."""
|
|
@@ -75,7 +74,7 @@ def get_board_id(
|
|
|
75
74
|
return bootloader, board
|
|
76
75
|
|
|
77
76
|
|
|
78
|
-
def get_connection_status() -> tuple[
|
|
77
|
+
def get_connection_status() -> tuple[str | None, str | None]:
|
|
79
78
|
"""Get the status of a connectted CircuitPython device as a CIRCUITPY and bootloader location."""
|
|
80
79
|
circuitpy = circfirm.backend.device.find_circuitpy()
|
|
81
80
|
bootloader = circfirm.backend.device.find_bootloader()
|
|
@@ -86,7 +85,7 @@ def get_connection_status() -> tuple[Optional[str], Optional[str]]:
|
|
|
86
85
|
return circuitpy, bootloader
|
|
87
86
|
|
|
88
87
|
|
|
89
|
-
def ensure_bootloader_mode(bootloader:
|
|
88
|
+
def ensure_bootloader_mode(bootloader: str | None) -> None:
|
|
90
89
|
"""Ensure the connected device is in bootloader mode."""
|
|
91
90
|
if not bootloader:
|
|
92
91
|
if circfirm.backend.device.find_circuitpy():
|
|
@@ -130,7 +129,7 @@ def announce_and_await(
|
|
|
130
129
|
msg: str,
|
|
131
130
|
func: Callable[..., _T],
|
|
132
131
|
args: Iterable = (),
|
|
133
|
-
kwargs:
|
|
132
|
+
kwargs: dict[str, Any] | None = None,
|
|
134
133
|
*,
|
|
135
134
|
use_spinner: bool = True,
|
|
136
135
|
) -> _T:
|
circfirm/cli/about.py
CHANGED
circfirm/cli/cache.py
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# SPDX-FileCopyrightText: 2024 Alec Delaney, for Adafruit Industries
|
|
2
|
-
#
|
|
3
2
|
# SPDX-License-Identifier: MIT
|
|
4
3
|
|
|
5
4
|
"""CLI functionality for the cache subcommand.
|
|
@@ -11,8 +10,8 @@ import os
|
|
|
11
10
|
import pathlib
|
|
12
11
|
import re
|
|
13
12
|
import shutil
|
|
14
|
-
from typing import Optional
|
|
15
13
|
|
|
14
|
+
import botocore.exceptions
|
|
16
15
|
import click
|
|
17
16
|
|
|
18
17
|
import circfirm
|
|
@@ -39,9 +38,9 @@ def cli():
|
|
|
39
38
|
help="The board ID, version, and language options represent regex patterns",
|
|
40
39
|
)
|
|
41
40
|
def clear( # noqa: PLR0913
|
|
42
|
-
board_id:
|
|
43
|
-
version:
|
|
44
|
-
language:
|
|
41
|
+
board_id: str | None,
|
|
42
|
+
version: str | None,
|
|
43
|
+
language: str | None,
|
|
45
44
|
regex: bool,
|
|
46
45
|
) -> None:
|
|
47
46
|
"""Clear the cache, either entirely or for a specific board/version."""
|
|
@@ -90,7 +89,7 @@ def clear( # noqa: PLR0913
|
|
|
90
89
|
|
|
91
90
|
@cli.command(name="list")
|
|
92
91
|
@click.option("-b", "--board-id", default=None, help="CircuitPython board ID")
|
|
93
|
-
def cache_list(board_id:
|
|
92
|
+
def cache_list(board_id: str | None) -> None:
|
|
94
93
|
"""List all the boards/versions cached."""
|
|
95
94
|
board_list = os.listdir(circfirm.UF2_ARCHIVE)
|
|
96
95
|
|
|
@@ -153,3 +152,7 @@ def cache_latest(board_id: str, language: str, pre_release: bool) -> None:
|
|
|
153
152
|
)
|
|
154
153
|
except ConnectionError as err:
|
|
155
154
|
raise click.exceptions.ClickException(err.args[0])
|
|
155
|
+
except botocore.exceptions.ConnectionError:
|
|
156
|
+
raise click.exceptions.ClickException(
|
|
157
|
+
"Could not connect to the S3 bucket - check network connection"
|
|
158
|
+
)
|
circfirm/cli/config.py
CHANGED
circfirm/cli/current.py
CHANGED
circfirm/cli/detect.py
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# SPDX-FileCopyrightText: 2024 Alec Delaney, for Adafruit Industries
|
|
2
|
-
#
|
|
3
2
|
# SPDX-License-Identifier: MIT
|
|
4
3
|
|
|
5
4
|
"""CLI functionality for the detect subcommand.
|
|
@@ -7,7 +6,6 @@
|
|
|
7
6
|
Author(s): Alec Delaney
|
|
8
7
|
"""
|
|
9
8
|
|
|
10
|
-
|
|
11
9
|
import click
|
|
12
10
|
|
|
13
11
|
import circfirm.backend.device
|
circfirm/cli/install.py
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# SPDX-FileCopyrightText: 2024 Alec Delaney, for Adafruit Industries
|
|
2
|
-
#
|
|
3
2
|
# SPDX-License-Identifier: MIT
|
|
4
3
|
|
|
5
4
|
"""CLI functionality for the install subcommand.
|
|
@@ -7,8 +6,6 @@
|
|
|
7
6
|
Author(s): Alec Delaney
|
|
8
7
|
"""
|
|
9
8
|
|
|
10
|
-
from typing import Optional
|
|
11
|
-
|
|
12
9
|
import click
|
|
13
10
|
|
|
14
11
|
import circfirm.cli
|
|
@@ -29,7 +26,7 @@ import circfirm.cli
|
|
|
29
26
|
default=-1,
|
|
30
27
|
help="Set a timeout in seconds for the switch to bootloader mode",
|
|
31
28
|
)
|
|
32
|
-
def cli(version: str, language: str, board_id:
|
|
29
|
+
def cli(version: str, language: str, board_id: str | None, timeout: int) -> None:
|
|
33
30
|
"""Install the specified version of CircuitPython."""
|
|
34
31
|
circuitpy, bootloader = circfirm.cli.get_connection_status()
|
|
35
32
|
try:
|
circfirm/cli/query.py
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# SPDX-FileCopyrightText: 2024 Alec Delaney, for Adafruit Industries
|
|
2
|
-
#
|
|
3
2
|
# SPDX-License-Identifier: MIT
|
|
4
3
|
|
|
5
4
|
"""CLI functionality for the query subcommand.
|
|
@@ -9,6 +8,7 @@ Author(s): Alec Delaney
|
|
|
9
8
|
|
|
10
9
|
import re
|
|
11
10
|
|
|
11
|
+
import botocore.exceptions
|
|
12
12
|
import click
|
|
13
13
|
import requests
|
|
14
14
|
|
|
@@ -50,13 +50,19 @@ def query_board_ids(regex: str) -> None:
|
|
|
50
50
|
boards = circfirm.backend.github.get_board_id_list(gh_token)
|
|
51
51
|
except ValueError as err:
|
|
52
52
|
raise click.ClickException(err.args[0])
|
|
53
|
-
except requests.ConnectionError
|
|
53
|
+
except requests.ConnectionError:
|
|
54
|
+
print("Triggered!")
|
|
54
55
|
raise click.ClickException(
|
|
55
56
|
"Issue with requesting information from git repository, check network connection"
|
|
56
57
|
)
|
|
57
58
|
for board in boards:
|
|
58
59
|
board_id = board.strip()
|
|
59
|
-
|
|
60
|
+
try:
|
|
61
|
+
result = re.search(regex, board_id)
|
|
62
|
+
except re.PatternError:
|
|
63
|
+
raise click.exceptions.ClickException(
|
|
64
|
+
"Regex pattern error - please check the regex syntax"
|
|
65
|
+
)
|
|
60
66
|
if result:
|
|
61
67
|
click.echo(board_id)
|
|
62
68
|
|
|
@@ -69,7 +75,16 @@ def query_board_ids(regex: str) -> None:
|
|
|
69
75
|
)
|
|
70
76
|
def query_versions(board_id: str, language: str, regex: str) -> None:
|
|
71
77
|
"""Query the CircuitPython versions available for a board."""
|
|
72
|
-
|
|
78
|
+
try:
|
|
79
|
+
versions = circfirm.backend.s3.get_board_versions(
|
|
80
|
+
board_id, language, regex=regex
|
|
81
|
+
)
|
|
82
|
+
except botocore.exceptions.ConnectionError as err:
|
|
83
|
+
raise click.exceptions.ClickException(err.args[0])
|
|
84
|
+
except re.PatternError:
|
|
85
|
+
raise click.exceptions.ClickException(
|
|
86
|
+
"Regex pattern error - please check the regex syntax"
|
|
87
|
+
)
|
|
73
88
|
for version in reversed(versions):
|
|
74
89
|
click.echo(version)
|
|
75
90
|
|
|
@@ -86,8 +101,11 @@ def query_versions(board_id: str, language: str, regex: str) -> None:
|
|
|
86
101
|
)
|
|
87
102
|
def query_latest(board_id: str, language: str, pre_release: bool) -> None:
|
|
88
103
|
"""Query the latest CircuitPython versions available."""
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
104
|
+
try:
|
|
105
|
+
version = circfirm.backend.s3.get_latest_board_version(
|
|
106
|
+
board_id, language, pre_release
|
|
107
|
+
)
|
|
108
|
+
except botocore.exceptions.ConnectionError as err:
|
|
109
|
+
raise click.exceptions.ClickException(err.args[0])
|
|
92
110
|
if version:
|
|
93
111
|
click.echo(version)
|
circfirm/cli/update.py
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# SPDX-FileCopyrightText: 2024 Alec Delaney, for Adafruit Industries
|
|
2
|
-
#
|
|
3
2
|
# SPDX-License-Identifier: MIT
|
|
4
3
|
|
|
5
4
|
"""CLI functionality for the update subcommand.
|
|
@@ -7,14 +6,12 @@
|
|
|
7
6
|
Author(s): Alec Delaney
|
|
8
7
|
"""
|
|
9
8
|
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
import botocore.exceptions
|
|
12
10
|
import click
|
|
13
11
|
import packaging.version
|
|
14
12
|
|
|
15
13
|
import circfirm.backend.device
|
|
16
14
|
import circfirm.backend.s3
|
|
17
|
-
import circfirm.cli.install
|
|
18
15
|
|
|
19
16
|
|
|
20
17
|
@click.command()
|
|
@@ -53,7 +50,7 @@ import circfirm.cli.install
|
|
|
53
50
|
help="Upgrade up to patch version updates",
|
|
54
51
|
)
|
|
55
52
|
def cli( # noqa: PLR0913
|
|
56
|
-
board_id:
|
|
53
|
+
board_id: str | None,
|
|
57
54
|
language: str,
|
|
58
55
|
timeout: int,
|
|
59
56
|
pre_release: bool,
|
|
@@ -79,7 +76,10 @@ def cli( # noqa: PLR0913
|
|
|
79
76
|
except OSError as err:
|
|
80
77
|
raise click.ClickException(err.args[0])
|
|
81
78
|
|
|
82
|
-
|
|
79
|
+
try:
|
|
80
|
+
new_versions = circfirm.backend.s3.get_board_versions(board_id, language)
|
|
81
|
+
except botocore.exceptions.ConnectionError as err:
|
|
82
|
+
raise click.exceptions.ClickException(err.args[0])
|
|
83
83
|
|
|
84
84
|
if not pre_release:
|
|
85
85
|
new_versions = [
|
circfirm/startup.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: circfirm
|
|
3
|
-
Version:
|
|
3
|
+
Version: 5.0.0
|
|
4
4
|
Summary: CLI tool for install firmware for CircuitPython boards
|
|
5
5
|
Author-email: Alec Delaney <tekktrik@gmail.com>
|
|
6
6
|
License: MIT
|
|
@@ -15,37 +15,38 @@ Classifier: License :: OSI Approved :: MIT License
|
|
|
15
15
|
Classifier: Development Status :: 5 - Production/Stable
|
|
16
16
|
Classifier: Environment :: Console
|
|
17
17
|
Classifier: Natural Language :: English
|
|
18
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
19
18
|
Classifier: Programming Language :: Python :: 3.10
|
|
20
19
|
Classifier: Programming Language :: Python :: 3.11
|
|
21
20
|
Classifier: Programming Language :: Python :: 3.12
|
|
22
21
|
Classifier: Programming Language :: Python :: 3.13
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
23
23
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
24
24
|
Classifier: Operating System :: Unix
|
|
25
25
|
Classifier: Operating System :: Microsoft :: Windows
|
|
26
26
|
Classifier: Operating System :: MacOS
|
|
27
27
|
Classifier: Typing :: Typed
|
|
28
|
-
Requires-Python: >=3.
|
|
28
|
+
Requires-Python: >=3.10.0
|
|
29
29
|
Description-Content-Type: text/x-rst
|
|
30
30
|
License-File: LICENSE
|
|
31
31
|
License-File: NOTICE
|
|
32
32
|
License-File: NOTICE.license
|
|
33
|
-
Requires-Dist: boto3
|
|
34
|
-
Requires-Dist:
|
|
35
|
-
Requires-Dist: click
|
|
36
|
-
Requires-Dist:
|
|
37
|
-
Requires-Dist:
|
|
38
|
-
Requires-Dist:
|
|
39
|
-
Requires-Dist:
|
|
40
|
-
Requires-Dist:
|
|
33
|
+
Requires-Dist: boto3==1.42.42
|
|
34
|
+
Requires-Dist: boto3-stubs[essential]==1.42.42
|
|
35
|
+
Requires-Dist: click==8.3.1
|
|
36
|
+
Requires-Dist: click-spinner==0.1.10
|
|
37
|
+
Requires-Dist: packaging==24.2
|
|
38
|
+
Requires-Dist: psutil==6.1.1
|
|
39
|
+
Requires-Dist: pyyaml==6.0.3
|
|
40
|
+
Requires-Dist: requests==2.32.5
|
|
41
41
|
Provides-Extra: dev
|
|
42
|
-
Requires-Dist: build
|
|
43
|
-
Requires-Dist: coverage
|
|
44
|
-
Requires-Dist: pre-commit
|
|
45
|
-
Requires-Dist: pytest
|
|
46
|
-
Requires-Dist: sphinx
|
|
47
|
-
Requires-Dist: sphinx-tabs
|
|
48
|
-
Requires-Dist: sphinx-rtd-theme
|
|
42
|
+
Requires-Dist: build==1.4.0; extra == "dev"
|
|
43
|
+
Requires-Dist: coverage==7.13.3; extra == "dev"
|
|
44
|
+
Requires-Dist: pre-commit==4.5.1; extra == "dev"
|
|
45
|
+
Requires-Dist: pytest==8.4.2; extra == "dev"
|
|
46
|
+
Requires-Dist: sphinx==7.4.7; extra == "dev"
|
|
47
|
+
Requires-Dist: sphinx-tabs==3.4.7; extra == "dev"
|
|
48
|
+
Requires-Dist: sphinx-rtd-theme==3.1.0; extra == "dev"
|
|
49
|
+
Dynamic: license-file
|
|
49
50
|
|
|
50
51
|
..
|
|
51
52
|
SPDX-FileCopyrightText: 2022 Alec Delaney, for Adafruit Industries
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
circfirm/__init__.py,sha256=p6ON2S-WFdtxOBTXUZbeh7qq-PFealnOUHmNCovg8B0,717
|
|
2
|
+
circfirm/py.typed,sha256=F2H7kdQErBIQUjr5WG2gdwj35iaUHi4Eyc2hovaLTMA,97
|
|
3
|
+
circfirm/startup.py,sha256=EESDlom97BWDaahPqUzTAO1LmnGkMPDDobWCcvGeIeA,1944
|
|
4
|
+
circfirm/backend/__init__.py,sha256=x_ZM50hQwljWLV4mcu8FtybXsFl12mi1RXyGEd6XukU,1856
|
|
5
|
+
circfirm/backend/cache.py,sha256=uVz8F-ksoi-wgwgZP5U3PY60yBqNtUWgE7I4Rnz_kJE,2874
|
|
6
|
+
circfirm/backend/device.py,sha256=sii80sAKFKtLscgbhaTIOKElGiLOG161iEQitMzBlUs,1737
|
|
7
|
+
circfirm/backend/github.py,sha256=xuJxeRjYsrQXearlQnoES0gLGs-xTjrbGeTtGeGtOw4,2088
|
|
8
|
+
circfirm/backend/s3.py,sha256=waz4Uq21tuvcWTk3ORaCKYooCsNmNG0iNXY-J8ceoJ4,2109
|
|
9
|
+
circfirm/cli/__init__.py,sha256=xsFUD69Md_Vhg4rvUBH2844JCRCCeAqjzDZ8B3tQzaw,6421
|
|
10
|
+
circfirm/cli/about.py,sha256=h5Ud5AKVHBmPqb0d4bQwPSBqtIR1aHLG-6V-H3bNqHU,338
|
|
11
|
+
circfirm/cli/cache.py,sha256=ctjbuwyG_Q3FLO8NGUb5Hp7lTcccK2Gch666A3xG9b4,5388
|
|
12
|
+
circfirm/cli/config.py,sha256=bYzIHzO0LQZhzoBGS9xKnbxPgxS8htWKMrUDaXw8fhg,3120
|
|
13
|
+
circfirm/cli/current.py,sha256=fx7z65oXUAmGZvp4L5nVrixNbft0-chM0jLiE_lMPyM,1032
|
|
14
|
+
circfirm/cli/detect.py,sha256=CJL9yeYH0YP2jHDYpfFbbze4i80uPFX-W_8m4fuRGEM,941
|
|
15
|
+
circfirm/cli/install.py,sha256=ajuGWO5touE8tg-5iOK4wpw-SBrFH7CwFKhENfGQMf0,1219
|
|
16
|
+
circfirm/cli/query.py,sha256=wL29qaFBt6lnWstkzNO6aPIy5lktI2DNewABSm9b_hU,3624
|
|
17
|
+
circfirm/cli/update.py,sha256=8EK5t8q-B237uIMDEffG0A4hrsG4C9PztDoIMqnmqI8,3525
|
|
18
|
+
circfirm/templates/settings.yaml,sha256=SM1zjXvZg1jikzn9TjgOufl0Pn9KBbrw8sIcJ01BRhQ,69
|
|
19
|
+
circfirm/templates/settings.yaml.license,sha256=F2H7kdQErBIQUjr5WG2gdwj35iaUHi4Eyc2hovaLTMA,97
|
|
20
|
+
circfirm-5.0.0.dist-info/licenses/LICENSE,sha256=6pPP6gJ00tqCkxg5gABHDwWUiXZ_mBzH94xxPOqwGj4,1069
|
|
21
|
+
circfirm-5.0.0.dist-info/licenses/NOTICE,sha256=-iTImDmAffekkp_kj8De0_pvckHvXAHLPAJTWOgQsiw,2956
|
|
22
|
+
circfirm-5.0.0.dist-info/licenses/NOTICE.license,sha256=FIvC5TnLXwPBj-dgEV4FBwAlJxzMXhgl50TXLv2d88o,96
|
|
23
|
+
circfirm-5.0.0.dist-info/METADATA,sha256=cQQ8ohzNydQOtgEXkQwaDqhqPLjFKHRBMEkoRHlgAM4,4734
|
|
24
|
+
circfirm-5.0.0.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
25
|
+
circfirm-5.0.0.dist-info/entry_points.txt,sha256=33qZTmSuXz8dgi29yjSyb8VsEA8HyhWuhn2MNcjatGQ,46
|
|
26
|
+
circfirm-5.0.0.dist-info/top_level.txt,sha256=qA2407wap3My6jGA5uchH2JjUM7qn73oBPwALN7GR5k,9
|
|
27
|
+
circfirm-5.0.0.dist-info/RECORD,,
|
circfirm-4.0.0.dist-info/RECORD
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
circfirm/__init__.py,sha256=Uk6XRo7aFQcwUOMfst4GVt8tuXbMRnDIsPRrWeBtxLQ,719
|
|
2
|
-
circfirm/py.typed,sha256=F2H7kdQErBIQUjr5WG2gdwj35iaUHi4Eyc2hovaLTMA,97
|
|
3
|
-
circfirm/startup.py,sha256=HoeMpISAJswKTFn-sHhtoCD5yISHW5z8ZPW7WgSr2xg,1946
|
|
4
|
-
circfirm/backend/__init__.py,sha256=fzxooHsys60iPrj6q6l-t3m2iGAC6FEIinP1UFgGHKE,1858
|
|
5
|
-
circfirm/backend/cache.py,sha256=cxd_Za68SotnQ4td9R3-_F20Rci5BMVO1LgD0CVpKRo,2931
|
|
6
|
-
circfirm/backend/device.py,sha256=t_g4iPJ4C2Qg5xKUr1AI6XPu5-ULTDZ4e3qAZVSfJs8,1776
|
|
7
|
-
circfirm/backend/github.py,sha256=ePHXTCxqGcJOyVsutdbsL80MaxIYBdNIV9Yzz8aG4Yg,2090
|
|
8
|
-
circfirm/backend/s3.py,sha256=eTwCD79E8TCia2kPcj1-p7qmIvTt2vqQC_K7mHKWeyk,2175
|
|
9
|
-
circfirm/cli/__init__.py,sha256=TBJxvMqzTXQNEv2jKTZHqxeTTvGoQ9sz4o4R91Qe4Kg,6454
|
|
10
|
-
circfirm/cli/about.py,sha256=_QNqXtbyerlxewPVieCdOvQ6BZWqdgvncBIzj39zpCU,340
|
|
11
|
-
circfirm/cli/cache.py,sha256=z1DtWFusGAeUnzFTl0dcxyko7eOQmJUyR1x3orfEWk8,5222
|
|
12
|
-
circfirm/cli/config.py,sha256=9ye3jQhgXaOMAXIlJWHp8PhBEtjUTJSL9szTXCQU2Cg,3122
|
|
13
|
-
circfirm/cli/current.py,sha256=3kjvAQ5oFuXxey8RtU6T5GJPnTmIy2saEpyYoqVOTU8,1034
|
|
14
|
-
circfirm/cli/detect.py,sha256=hXOIFjQAylx5kDT1chU2HJXqIv14scDJheO5-XUioeI,944
|
|
15
|
-
circfirm/cli/install.py,sha256=z0pT7J_n4A3dJn-ocZk-uYcKkOZ3iUHbId-f-k97cg0,1253
|
|
16
|
-
circfirm/cli/query.py,sha256=628UQhQxUMoTnKwPJhhL0ZjmKR_zNJTFgq-PzV-SPlM,2959
|
|
17
|
-
circfirm/cli/update.py,sha256=S25Cty4HXy71hQvAXbxP_JNN_2JgcvXxfocte0rzMWE,3433
|
|
18
|
-
circfirm/templates/settings.yaml,sha256=SM1zjXvZg1jikzn9TjgOufl0Pn9KBbrw8sIcJ01BRhQ,69
|
|
19
|
-
circfirm/templates/settings.yaml.license,sha256=F2H7kdQErBIQUjr5WG2gdwj35iaUHi4Eyc2hovaLTMA,97
|
|
20
|
-
circfirm-4.0.0.dist-info/LICENSE,sha256=6pPP6gJ00tqCkxg5gABHDwWUiXZ_mBzH94xxPOqwGj4,1069
|
|
21
|
-
circfirm-4.0.0.dist-info/METADATA,sha256=vedVLmckngt1DSxN0IUD9q5c_NujIfxih9JTUg0ktok,4678
|
|
22
|
-
circfirm-4.0.0.dist-info/NOTICE,sha256=-iTImDmAffekkp_kj8De0_pvckHvXAHLPAJTWOgQsiw,2956
|
|
23
|
-
circfirm-4.0.0.dist-info/NOTICE.license,sha256=FIvC5TnLXwPBj-dgEV4FBwAlJxzMXhgl50TXLv2d88o,96
|
|
24
|
-
circfirm-4.0.0.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
|
25
|
-
circfirm-4.0.0.dist-info/entry_points.txt,sha256=33qZTmSuXz8dgi29yjSyb8VsEA8HyhWuhn2MNcjatGQ,46
|
|
26
|
-
circfirm-4.0.0.dist-info/top_level.txt,sha256=qA2407wap3My6jGA5uchH2JjUM7qn73oBPwALN7GR5k,9
|
|
27
|
-
circfirm-4.0.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|