Crc

Latest version: v7.0.0

Safety actively analyzes 675368 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 3

7.0.0

🚨 Breaking Changes

Update of crc configurations
- **Rename:** The `Crc16.CCITT` configuration to `Crc16.XMODEM`.
- **New Addition:** Introduced `Crc16.KERMIT`, which matches the official configuration for `Crc16.CCITT`.

Decision Rationale
It was intentionally decided not to reintroduce `Crc16.CCITT` with the updated configuration. While it could have been added as an alias for `Crc16.KERMIT` or a replacement, omitting `Crc16.CCITT` ensures that client code will break upon update, thereby forcing maintainers to take notice and react accordingly.

Migration Guide
Below are solutions to the two common scenarios that need to be addressed due to this change:

1. **If you previously used `Crc16.CCITT` and expected the configuration defined [here](https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-kermit):**

**Solution:** Replace all usages of `Crc16.CCITT` in your code with `Crc16.KERMIT`.

2. **If you depended on or wanted to use the configuration values that `Crc16.CCITT` provided so far:**

**Solution:** Replace all usages of `Crc16.CCITT` in your code with `Crc16.XMODEM`.

Related Issues
- [148](https://github.com/Nicoretti/crc/issues/148)
- [145](https://github.com/Nicoretti/crc/issues/145)

πŸ”© Internal
* Update `python-environment` action
* Add classifiers to `pyproject.toml`

6.1.2

🐞 Bug Fixes
* Fixed unstable return values of `digest` function. For more details, see issue [151](https://github.com/Nicoretti/crc/issues/151).

!!! bug
This issue specifically affected scenarios where the CRC register was manually manipulated. Standard usages of the `Calculator` class were not impacted.
Furthermore, this issue primarily occurred in configurations that required reverse output.

πŸ“š Documentation
* Add overview of crc configurations

πŸ”© Internal
* Re-lock dependencies

6.1.1

πŸš€ This release is powered by **Ramya-Ab**, thank you for your contribution!

πŸ“š Documentation
* Fix typos in README

πŸ”© Internal
* Re-lock dependencies

6.1.0

πŸš€ This release is powered by **Riccardo Malavolti**, thank you for your contribution!

✨ Features
* Add support for IBM-3740 (also known as CCITT-FALSE)

πŸ”© Internal
* Update GitHub Action(s)
* Re-lock dependencies

6.0.0

🚨️ Breaking Changes

* Remove Python 3.7 support
* Changed SAE1850J configuration (see Bug fixes)

🐞 Bug Fix
* Adjusted the SAE-J1850 configuration to match the specification

🚨️ For users which do rely on the previously misconfigured `SAEJ1850` settings a configuration named `SAE_J1850_ZERO` was added.


πŸ”© Internal / Development
* Add `python 3.12` to test matrix
* Re-lock dev dependencies

5.0.0

πŸš€ This release is powered by **Gert van Dijk**, thank you for your contribution!

🚨 Breaking Changes
* Move from a single-file/module to an β€˜src-based layout’ package.

The layout of the source repository has changed from single file `crc.py` in the
root into a package where `crc.py` is now a private module `_crc.py` of package
`crc`.


src/
└── crc/
β”œβ”€β”€ _crc.py
└── __init__.py


`__init__.py` re-exports all the public entities from the private module, so that
typical imports like `from crc import Calculator` remain working as-is.

The need and choice for this new layout is discussed in [Issue 110][issue-110].

* The shebang line on the main `src/crc/_crc.py` file (formerly `crc.py`) has been
removed.

This shouldn't affect anyone installing `crc` as package. Both the entrypoint `crc`
and the package-level `__main__` remain in place.

However, in case you were to obtain the `src/crc/_crc.py` file (formerly `crc.py`)
and mark it as executable afterwards to run it directly, then this change may affect
you. Running the `main()` function can then still be achieved by either:

- `python path/to/crc.py`
- `python -m crc` (if the module is on your `PYTHON_PATH`)

✨ Added
* Add `py.typed` marker to indicate the `crc` package ships with type information. The
type information was added inline since [2.0.0](changes_2.0.0.md), but the marker file
was missing in the package, so type checkers did not consider the type information.
This eliminates the use of `ignore_missing_imports` (mypy) or `reportMissingTypeStubs`
(Pylance/Pyright) in downstream projects.

πŸ“š Documentation
* Add contributors page

πŸ”© Internal / Development
* Several improvements to type annotations:
* Conform to mypy in strict mode.
* Type information now follows a more modern syntax by implementing recommendations
from PEPs [563][PEP 563], [585][PEP 585], [604][PEP 604] while maintaining
support for Python 3.8.
* Declare all instance variables on classes.
* Create a Type Alias for a complex Union used repetitively.
* Remove unnecessary parentheses and `start` argument in `range()`.
* Remove unused imports.
* Update lockfile.

[issue-110]: https://github.com/Nicoretti/crc/issues/110
[PEP 563]: https://peps.python.org/pep-0563/
[PEP 585]: https://peps.python.org/pep-0585/
[PEP 604]: https://peps.python.org/pep-0604/

Page 1 of 3

Β© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.