circfirm 4.0.1__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 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
  """Shared functionality for the tool.
@@ -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
  """Shared backend functionality.
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,7 +8,6 @@ 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
@@ -55,7 +53,7 @@ def download_uf2(board_id: str, version: str, language: str = "en_US") -> None:
55
53
  uf2file.write(response.content)
56
54
 
57
55
 
58
- def get_sorted_boards(board_id: Optional[str]) -> dict[str, dict[str, set[str]]]:
56
+ def get_sorted_boards(board_id: str | None) -> dict[str, dict[str, set[str]]]:
59
57
  """Get a sorted collection of boards, versions, and languages."""
60
58
  boards: dict[str, dict[str, set[str]]] = {}
61
59
  for board_folder in sorted(os.listdir(circfirm.UF2_ARCHIVE)):
@@ -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) -> Optional[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() -> Optional[str]:
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() -> Optional[str]:
53
+ def find_bootloader() -> str | None:
56
54
  """Find CircuitPython device in bootloader mode."""
57
55
  return _find_device(circfirm.UF2INFO_FILE)
@@ -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 CircuitPython GitHub repository.
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
@@ -25,7 +23,7 @@ BUCKET = S3_RESOURCE.Bucket(BUCKET_NAME)
25
23
 
26
24
 
27
25
  def get_board_versions(
28
- board_id: str, language: str = "en_US", *, regex: Optional[str] = None
26
+ board_id: str, language: str = "en_US", *, regex: str | None = None
29
27
  ) -> list[str]:
30
28
  """Get a list of CircuitPython versions for a given board."""
31
29
  prefix = f"bin/{board_id}/{language}"
@@ -50,7 +48,7 @@ def get_board_versions(
50
48
 
51
49
  def get_latest_board_version(
52
50
  board_id: str, language: str, pre_release: bool
53
- ) -> Optional[str]:
51
+ ) -> str | None:
54
52
  """Get the latest version for a board in a given language."""
55
53
  versions = get_board_versions(board_id, language)
56
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, Callable, Optional, TypeVar
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: Optional[str],
48
- bootloader: Optional[str],
49
- board: Optional[str],
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[Optional[str], Optional[str]]:
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: Optional[str]) -> None:
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: Optional[dict[str, Any]] = None,
132
+ kwargs: dict[str, Any] | None = None,
134
133
  *,
135
134
  use_spinner: bool = True,
136
135
  ) -> _T:
circfirm/cli/about.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 about subcommand.
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,7 +10,6 @@ import os
11
10
  import pathlib
12
11
  import re
13
12
  import shutil
14
- from typing import Optional
15
13
 
16
14
  import botocore.exceptions
17
15
  import click
@@ -40,9 +38,9 @@ def cli():
40
38
  help="The board ID, version, and language options represent regex patterns",
41
39
  )
42
40
  def clear( # noqa: PLR0913
43
- board_id: Optional[str],
44
- version: Optional[str],
45
- language: Optional[str],
41
+ board_id: str | None,
42
+ version: str | None,
43
+ language: str | None,
46
44
  regex: bool,
47
45
  ) -> None:
48
46
  """Clear the cache, either entirely or for a specific board/version."""
@@ -91,7 +89,7 @@ def clear( # noqa: PLR0913
91
89
 
92
90
  @cli.command(name="list")
93
91
  @click.option("-b", "--board-id", default=None, help="CircuitPython board ID")
94
- def cache_list(board_id: Optional[str]) -> None:
92
+ def cache_list(board_id: str | None) -> None:
95
93
  """List all the boards/versions cached."""
96
94
  board_list = os.listdir(circfirm.UF2_ARCHIVE)
97
95
 
circfirm/cli/config.py CHANGED
@@ -1,6 +1,5 @@
1
1
  # SPDX-FileCopyrightText: 2024 Alec Delaney, for Adafruit Industries
2
2
  # Based on code from circlink (Authored by Alec Delaney, licensed under MIT license)
3
- #
4
3
  # SPDX-License-Identifier: MIT
5
4
 
6
5
  """CLI functionality for the config subcommand.
circfirm/cli/current.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 current subcommand.
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: Optional[str], timeout: int) -> None:
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.
@@ -51,7 +50,7 @@ def query_board_ids(regex: str) -> None:
51
50
  boards = circfirm.backend.github.get_board_id_list(gh_token)
52
51
  except ValueError as err:
53
52
  raise click.ClickException(err.args[0])
54
- except requests.ConnectionError as err:
53
+ except requests.ConnectionError:
55
54
  print("Triggered!")
56
55
  raise click.ClickException(
57
56
  "Issue with requesting information from git repository, check network connection"
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,8 +6,6 @@
7
6
  Author(s): Alec Delaney
8
7
  """
9
8
 
10
- from typing import Optional
11
-
12
9
  import botocore.exceptions
13
10
  import click
14
11
  import packaging.version
@@ -53,7 +50,7 @@ import circfirm.backend.s3
53
50
  help="Upgrade up to patch version updates",
54
51
  )
55
52
  def cli( # noqa: PLR0913
56
- board_id: Optional[str],
53
+ board_id: str | None,
57
54
  language: str,
58
55
  timeout: int,
59
56
  pre_release: bool,
circfirm/startup.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
  """Basic startup functionality for the tools.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: circfirm
3
- Version: 4.0.1
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,37 @@ 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.9.0
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~=1.35
34
- Requires-Dist: click~=8.1
35
- Requires-Dist: click-spinner~=0.1
36
- Requires-Dist: packaging~=24.2
37
- Requires-Dist: psutil~=6.1
38
- Requires-Dist: pyyaml~=6.0
39
- Requires-Dist: requests~=2.32
40
- Requires-Dist: boto3-stubs[essential]~=1.35
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~=1.2; extra == "dev"
43
- Requires-Dist: coverage~=7.6; extra == "dev"
44
- Requires-Dist: pre-commit~=4.0; extra == "dev"
45
- Requires-Dist: pytest~=8.3; extra == "dev"
46
- Requires-Dist: sphinx~=7.4; extra == "dev"
47
- Requires-Dist: sphinx-tabs~=3.4; extra == "dev"
48
- Requires-Dist: sphinx-rtd-theme~=3.0; extra == "dev"
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
49
  Dynamic: license-file
50
50
 
51
51
  ..
@@ -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,,
@@ -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=WZwBP-c9KkTX5IpkRovj46FUzk6JJdFB8-FIWC3--5k,2907
6
- circfirm/backend/device.py,sha256=t_g4iPJ4C2Qg5xKUr1AI6XPu5-ULTDZ4e3qAZVSfJs8,1776
7
- circfirm/backend/github.py,sha256=ePHXTCxqGcJOyVsutdbsL80MaxIYBdNIV9Yzz8aG4Yg,2090
8
- circfirm/backend/s3.py,sha256=rFxR4XcP9njGcAe3FikJmcvaJHmgFFCqGRSqHD3lqDE,2145
9
- circfirm/cli/__init__.py,sha256=TBJxvMqzTXQNEv2jKTZHqxeTTvGoQ9sz4o4R91Qe4Kg,6454
10
- circfirm/cli/about.py,sha256=_QNqXtbyerlxewPVieCdOvQ6BZWqdgvncBIzj39zpCU,340
11
- circfirm/cli/cache.py,sha256=fpwktpS7e0Ikg8qekUoC40qHHARcShiLuxSW7ZIqg5I,5430
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=hZMzxojZUNr7eNCj5dz9WY2u9DTXov21PnRcYcPhkQ4,3633
17
- circfirm/cli/update.py,sha256=ZXLjUmpaJCvEI19rafCzGIco3wJZ-zCB4YpYxb7Iciw,3559
18
- circfirm/templates/settings.yaml,sha256=SM1zjXvZg1jikzn9TjgOufl0Pn9KBbrw8sIcJ01BRhQ,69
19
- circfirm/templates/settings.yaml.license,sha256=F2H7kdQErBIQUjr5WG2gdwj35iaUHi4Eyc2hovaLTMA,97
20
- circfirm-4.0.1.dist-info/licenses/LICENSE,sha256=6pPP6gJ00tqCkxg5gABHDwWUiXZ_mBzH94xxPOqwGj4,1069
21
- circfirm-4.0.1.dist-info/licenses/NOTICE,sha256=-iTImDmAffekkp_kj8De0_pvckHvXAHLPAJTWOgQsiw,2956
22
- circfirm-4.0.1.dist-info/licenses/NOTICE.license,sha256=FIvC5TnLXwPBj-dgEV4FBwAlJxzMXhgl50TXLv2d88o,96
23
- circfirm-4.0.1.dist-info/METADATA,sha256=trxEBd0QhzT8ETbp7ce6R_8J0E1pHRUKjIx-_9TvY24,4700
24
- circfirm-4.0.1.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
25
- circfirm-4.0.1.dist-info/entry_points.txt,sha256=33qZTmSuXz8dgi29yjSyb8VsEA8HyhWuhn2MNcjatGQ,46
26
- circfirm-4.0.1.dist-info/top_level.txt,sha256=qA2407wap3My6jGA5uchH2JjUM7qn73oBPwALN7GR5k,9
27
- circfirm-4.0.1.dist-info/RECORD,,