-
Notifications
You must be signed in to change notification settings - Fork 9
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added option to specify custom CRC function
- Loading branch information
1 parent
1e128bd
commit d261a65
Showing
35 changed files
with
393 additions
and
225 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -10,8 +10,8 @@ jobs: | |
- uses: actions/checkout@v4 | ||
- uses: actions/setup-python@v5 | ||
with: | ||
python-version: '3.10' | ||
- uses: pre-commit/[email protected].0 | ||
python-version: '3.12' | ||
- uses: pre-commit/[email protected].1 | ||
|
||
|
||
tests: | ||
|
@@ -20,7 +20,7 @@ jobs: | |
strategy: | ||
max-parallel: 2 | ||
matrix: | ||
python-version: ['3.8', '3.9', '3.10', '3.11', '3.12'] | ||
python-version: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13'] | ||
|
||
steps: | ||
- uses: actions/checkout@v4 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,66 +1,96 @@ | ||
|
||
line-length = 120 | ||
indent-width = 4 | ||
line-length = 120 | ||
|
||
target-version = "py38" | ||
src = ["src", "test"] | ||
|
||
[lint] | ||
|
||
# https://docs.astral.sh/ruff/settings/#ignore-init-module-imports | ||
ignore-init-module-imports = true | ||
|
||
select = [ | ||
"E", "W", # https://docs.astral.sh/ruff/rules/#pycodestyle-e-w | ||
"I", # https://docs.astral.sh/ruff/rules/#isort-i | ||
"UP", # https://docs.astral.sh/ruff/rules/#pyupgrade-up | ||
|
||
"A", # https://docs.astral.sh/ruff/rules/#flake8-builtins-a | ||
"ASYNC", # https://docs.astral.sh/ruff/rules/#flake8-async-async | ||
"C4", # https://docs.astral.sh/ruff/rules/#flake8-comprehensions-c4 | ||
"EM", # https://docs.astral.sh/ruff/rules/#flake8-errmsg-em | ||
"FIX", # https://docs.astral.sh/ruff/rules/#flake8-fixme-fix | ||
"INP", # https://docs.astral.sh/ruff/rules/#flake8-no-pep420-inp | ||
"ISC", # https://docs.astral.sh/ruff/rules/#flake8-implicit-str-concat-isc | ||
"PIE", # https://docs.astral.sh/ruff/rules/#flake8-pie-pie | ||
"PT", # https://docs.astral.sh/ruff/rules/#flake8-pytest-style-pt | ||
"PTH", # https://docs.astral.sh/ruff/rules/#flake8-use-pathlib-pth | ||
"RET", # https://docs.astral.sh/ruff/rules/#flake8-return-ret | ||
"SIM", # https://docs.astral.sh/ruff/rules/#flake8-simplify-sim | ||
"SLOT", # https://docs.astral.sh/ruff/rules/#flake8-slots-slot | ||
"T10", # https://docs.astral.sh/ruff/rules/#flake8-debugger-t10 | ||
"TCH", # https://docs.astral.sh/ruff/rules/#flake8-type-checking-tch | ||
"TD", # https://docs.astral.sh/ruff/rules/#flake8-todos-td | ||
|
||
"TRY", # https://docs.astral.sh/ruff/rules/#tryceratops-try | ||
"FLY", # https://docs.astral.sh/ruff/rules/#flynt-fly | ||
"PERF", # https://docs.astral.sh/ruff/rules/#perflint-perf | ||
"RUF", # https://docs.astral.sh/ruff/rules/#ruff-specific-rules-ruf | ||
|
||
# "PL", # https://docs.astral.sh/ruff/rules/#pylint-pl | ||
# "FURB", # https://docs.astral.sh/ruff/rules/#refurb-furb | ||
src = [ | ||
"src", | ||
"tests" | ||
] | ||
|
||
|
||
[lint] | ||
select = ["ALL"] | ||
|
||
ignore = [ | ||
"PT007" # Wrong values type in `@pytest.mark.parametrize` expected `list` of `tuple` | ||
"D", # https://docs.astral.sh/ruff/rules/#pydocstyle-d | ||
"T20", # https://docs.astral.sh/ruff/rules/#flake8-print-t20 | ||
"DTZ", # https://docs.astral.sh/ruff/rules/#flake8-datetimez-dtz | ||
"SLF", # https://docs.astral.sh/ruff/rules/#flake8-self-slf | ||
|
||
"RET501", # https://docs.astral.sh/ruff/rules/unnecessary-return-none/#unnecessary-return-none-ret501 | ||
"TRY400", # https://docs.astral.sh/ruff/rules/error-instead-of-exception/ | ||
|
||
# https://docs.astral.sh/ruff/rules/#flake8-builtins-a | ||
"A003", # Python builtin is shadowed by class attribute {name} from {row} | ||
|
||
# https://docs.astral.sh/ruff/rules/#pyflakes-f | ||
"F401", # {name} imported but unused; consider using importlib.util.find_spec to test for availability | ||
|
||
# https://docs.astral.sh/ruff/rules/#flake8-bandit-s | ||
"S311", # Standard pseudo-random generators are not suitable for cryptographic purposes | ||
|
||
# https://docs.astral.sh/ruff/rules/#pyupgrade-up | ||
"UP038", # Use X | Y in {} call instead of (X, Y) | ||
|
||
# https://docs.astral.sh/ruff/rules/#flake8-annotations-ann | ||
"ANN101", # Missing type annotation for {name} in method | ||
"ANN102", # Missing type annotation for {name} in classmethod | ||
"ANN401", # Dynamically typed expressions (typing.Any) are disallowed in {name} | ||
|
||
# https://docs.astral.sh/ruff/rules/#flake8-blind-except-ble | ||
"BLE001", # Do not catch blind exception: {name} | ||
|
||
# https://docs.astral.sh/ruff/rules/#flake8-raise-rse | ||
"RSE102", # Unnecessary parentheses on raised exception | ||
|
||
# https://docs.astral.sh/ruff/rules/#flake8-commas-com | ||
"COM812", # Trailing comma missing | ||
"COM819", # Trailing comma prohibited | ||
|
||
# https://docs.astral.sh/ruff/rules/#warning-w_1 | ||
"PLW0603", # Using the global statement to update {name} is discouraged | ||
|
||
# https://docs.astral.sh/ruff/rules/#flake8-logging-format-g | ||
"G004", # Logging statement uses f-string | ||
|
||
# https://docs.astral.sh/ruff/rules/#refactor-r | ||
"PLR1711", # Useless return statement at end of function | ||
|
||
# https://docs.astral.sh/ruff/rules/#ruff-specific-rules-ruf | ||
"RUF005", # Consider {expression} instead of concatenation | ||
] | ||
|
||
|
||
[format] | ||
# Use single quotes for non-triple-quoted strings. | ||
quote-style = "single" | ||
|
||
|
||
# [lint.flake8-builtins] | ||
# builtins-ignorelist = ["id", "input"] | ||
# https://docs.astral.sh/ruff/settings/#lintflake8-quotes | ||
[lint.flake8-quotes] | ||
inline-quotes = "single" | ||
multiline-quotes = "single" | ||
|
||
|
||
[lint.per-file-ignores] | ||
"src/smllib/errors.py" = ["A002"] # Argument `type` is shadowing a Python builtin | ||
"src/smllib/sml/_field_info.py" = ["A002"] # Argument `type` is shadowing a Python builtin | ||
"tests/*" = ["INP001"] # INP001 File `PATH` is part of an implicit namespace package. Add an `__init__.py`. | ||
[lint.flake8-builtins] | ||
builtins-ignorelist = ["id", "input"] | ||
|
||
|
||
# https://docs.astral.sh/ruff/settings/#lintisort | ||
[lint.isort] | ||
# https://docs.astral.sh/ruff/settings/#lint_isort_lines-after-imports | ||
lines-after-imports = 2 | ||
lines-after-imports = 2 # https://docs.astral.sh/ruff/settings/#lint_isort_lines-after-imports | ||
|
||
|
||
[lint.per-file-ignores] | ||
"setup.py" = ["PTH123"] | ||
|
||
"tests/*" = [ | ||
"ANN", # https://docs.astral.sh/ruff/rules/#flake8-annotations-ann | ||
|
||
# https://docs.astral.sh/ruff/rules/#flake8-bandit-s | ||
"S101", # Use of assert detected | ||
|
||
# https://docs.astral.sh/ruff/rules/#refactor-r | ||
"PLR2004", # Magic value used in comparison, consider replacing {value} with a constant variable | ||
"PLR0913", # Too many arguments in function definition ({c_args} > {max_args}) | ||
] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1 @@ | ||
pytest == 8.1.1 | ||
pytest == 8.3.3 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1 @@ | ||
__version__ = '1.4' | ||
__version__ = '1.5' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
from . import kermit, x25 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
from typing import Union | ||
|
||
|
||
CRC_16_KERMIT_TABLE = [ | ||
0x0000, 0x1189, 0x2312, 0x329B, 0x4624, 0x57AD, 0x6536, 0x74BF, | ||
0x8C48, 0x9DC1, 0xAF5A, 0xBED3, 0xCA6C, 0xDBE5, 0xE97E, 0xF8F7, | ||
0x1081, 0x0108, 0x3393, 0x221A, 0x56A5, 0x472C, 0x75B7, 0x643E, | ||
0x9CC9, 0x8D40, 0xBFDB, 0xAE52, 0xDAED, 0xCB64, 0xF9FF, 0xE876, | ||
0x2102, 0x308B, 0x0210, 0x1399, 0x6726, 0x76AF, 0x4434, 0x55BD, | ||
0xAD4A, 0xBCC3, 0x8E58, 0x9FD1, 0xEB6E, 0xFAE7, 0xC87C, 0xD9F5, | ||
0x3183, 0x200A, 0x1291, 0x0318, 0x77A7, 0x662E, 0x54B5, 0x453C, | ||
0xBDCB, 0xAC42, 0x9ED9, 0x8F50, 0xFBEF, 0xEA66, 0xD8FD, 0xC974, | ||
0x4204, 0x538D, 0x6116, 0x709F, 0x0420, 0x15A9, 0x2732, 0x36BB, | ||
0xCE4C, 0xDFC5, 0xED5E, 0xFCD7, 0x8868, 0x99E1, 0xAB7A, 0xBAF3, | ||
0x5285, 0x430C, 0x7197, 0x601E, 0x14A1, 0x0528, 0x37B3, 0x263A, | ||
0xDECD, 0xCF44, 0xFDDF, 0xEC56, 0x98E9, 0x8960, 0xBBFB, 0xAA72, | ||
0x6306, 0x728F, 0x4014, 0x519D, 0x2522, 0x34AB, 0x0630, 0x17B9, | ||
0xEF4E, 0xFEC7, 0xCC5C, 0xDDD5, 0xA96A, 0xB8E3, 0x8A78, 0x9BF1, | ||
0x7387, 0x620E, 0x5095, 0x411C, 0x35A3, 0x242A, 0x16B1, 0x0738, | ||
0xFFCF, 0xEE46, 0xDCDD, 0xCD54, 0xB9EB, 0xA862, 0x9AF9, 0x8B70, | ||
0x8408, 0x9581, 0xA71A, 0xB693, 0xC22C, 0xD3A5, 0xE13E, 0xF0B7, | ||
0x0840, 0x19C9, 0x2B52, 0x3ADB, 0x4E64, 0x5FED, 0x6D76, 0x7CFF, | ||
0x9489, 0x8500, 0xB79B, 0xA612, 0xD2AD, 0xC324, 0xF1BF, 0xE036, | ||
0x18C1, 0x0948, 0x3BD3, 0x2A5A, 0x5EE5, 0x4F6C, 0x7DF7, 0x6C7E, | ||
0xA50A, 0xB483, 0x8618, 0x9791, 0xE32E, 0xF2A7, 0xC03C, 0xD1B5, | ||
0x2942, 0x38CB, 0x0A50, 0x1BD9, 0x6F66, 0x7EEF, 0x4C74, 0x5DFD, | ||
0xB58B, 0xA402, 0x9699, 0x8710, 0xF3AF, 0xE226, 0xD0BD, 0xC134, | ||
0x39C3, 0x284A, 0x1AD1, 0x0B58, 0x7FE7, 0x6E6E, 0x5CF5, 0x4D7C, | ||
0xC60C, 0xD785, 0xE51E, 0xF497, 0x8028, 0x91A1, 0xA33A, 0xB2B3, | ||
0x4A44, 0x5BCD, 0x6956, 0x78DF, 0x0C60, 0x1DE9, 0x2F72, 0x3EFB, | ||
0xD68D, 0xC704, 0xF59F, 0xE416, 0x90A9, 0x8120, 0xB3BB, 0xA232, | ||
0x5AC5, 0x4B4C, 0x79D7, 0x685E, 0x1CE1, 0x0D68, 0x3FF3, 0x2E7A, | ||
0xE70E, 0xF687, 0xC41C, 0xD595, 0xA12A, 0xB0A3, 0x8238, 0x93B1, | ||
0x6B46, 0x7ACF, 0x4854, 0x59DD, 0x2D62, 0x3CEB, 0x0E70, 0x1FF9, | ||
0xF78F, 0xE606, 0xD49D, 0xC514, 0xB1AB, 0xA022, 0x92B9, 0x8330, | ||
0x7BC7, 0x6A4E, 0x58D5, 0x495C, 0x3DE3, 0x2C6A, 0x1EF1, 0x0F78 | ||
] | ||
|
||
|
||
def get_crc(buf: Union[memoryview, bytes]) -> int: | ||
crc = 0x0000 # Initial value for CRC16 KERMIT | ||
for byte in buf: | ||
crc = (crc >> 8) ^ CRC_16_KERMIT_TABLE[(crc ^ byte) & 0xFF] | ||
return crc |
File renamed without changes.
Oops, something went wrong.