Skip to content

Commit 3ae975f

Browse files
gijzelaerrclaude
andcommitted
Update documentation for 3.0 release
Strengthen messaging around the pure Python rewrite: emphasize that 3.0 completely breaks with the C snap7 shared library wrapper approach, highlight improved portability and easier installation, and add clear guidance for reporting issues and falling back to pre-3.0 releases. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent d7556ff commit 3ae975f

File tree

4 files changed

+61
-15
lines changed

4 files changed

+61
-15
lines changed

CHANGES.md

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,24 @@ CHANGES
55
-----
66

77
Major release: python-snap7 is now a pure Python S7 communication library.
8+
This version completely breaks with the previous approach of wrapping the C snap7
9+
shared library. The entire S7 protocol stack is now implemented in pure Python,
10+
greatly improving portability and making it easier to install and extend.
811

912
* **Breaking**: The C snap7 library is no longer required or used
1013
* Complete rewrite of the S7 protocol stack in pure Python
1114
* Native Python implementation of TPKT (RFC 1006) and COTP (ISO 8073) layers
1215
* Native S7 protocol PDU encoding/decoding
1316
* Pure Python server implementation for testing and simulation
14-
* No platform-specific binary dependencies
17+
* No platform-specific binary dependencies — works on any platform that runs Python
1518
* Improved error handling and connection management
1619
* Full type annotations with mypy strict mode
1720
* CLI interface for running an S7 server emulator (`pip install "python-snap7[cli]"`)
1821

19-
If you experience issues with 3.0, pin to the last pre-3.0 release:
22+
If you experience issues with 3.0, please report them on the
23+
[issue tracker](https://github.com/gijzelaerr/python-snap7/issues) with a clear
24+
description and the version you are using. As a workaround, pin to the last
25+
pre-3.0 release:
2026

2127
$ pip install "python-snap7<3"
2228

README.rst

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,34 @@ Python-snap7 is tested with Python 3.10+, on Windows, Linux and OS X.
88
The full documentation is available on `Read The Docs <https://python-snap7.readthedocs.io/en/latest/>`_.
99

1010

11-
Version 3.0 - Breaking Changes
12-
===============================
11+
Version 3.0 - Pure Python Rewrite
12+
==================================
1313

14-
Version 3.0 is a major release that rewrites python-snap7 as a pure Python
15-
implementation. The C snap7 library is no longer required.
14+
Version 3.0 is a ground-up rewrite of python-snap7. The library no longer wraps the
15+
C snap7 shared library — instead, the entire S7 protocol stack (TPKT, COTP, and S7)
16+
is now implemented in pure Python. This is a **breaking change** from all previous
17+
versions.
1618

17-
This release may contain breaking changes. If you experience issues, you can
18-
pin to the last pre-3.0 release::
19+
**Why this matters:**
1920

20-
$ pip install "python-snap7<3"
21+
* **Portability**: No more platform-specific shared libraries (`.dll`, `.so`, `.dylib`).
22+
python-snap7 now works on any platform that runs Python — including ARM, Alpine Linux,
23+
and other environments where the C library was difficult or impossible to install.
24+
* **Easier installation**: Just ``pip install python-snap7``. No native dependencies,
25+
no compiler toolchains, no manual library setup.
26+
* **Easier to extend**: New features and protocol support can be added directly in Python.
2127

22-
The latest stable pre-3.0 release is version 2.1.0.
28+
**If you experience issues with 3.0:**
29+
30+
1. Please report them on the `issue tracker <https://github.com/gijzelaerr/python-snap7/issues>`_
31+
with a clear description of the problem and the version you are using
32+
(``python -c "import snap7; print(snap7.__version__)"``).
33+
2. As a workaround, you can pin to the last pre-3.0 release::
34+
35+
$ pip install "python-snap7<3"
36+
37+
The latest stable pre-3.0 release is version 2.1.0. Documentation for pre-3.0
38+
versions is available at `Read The Docs <https://python-snap7.readthedocs.io/en/v2/>`_.
2339

2440

2541
Installation
@@ -29,4 +45,4 @@ Install using pip::
2945

3046
$ pip install python-snap7
3147

32-
No native libraries or platform-specific dependencies are required - python-snap7 is a pure Python package that works on all platforms.
48+
No native libraries or platform-specific dependencies are required python-snap7 is a pure Python package that works on all platforms.

doc/installation.rst

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,23 @@ If you want to use the CLI interface for running an emulator, install it with::
1010

1111
$ pip install "python-snap7[cli]"
1212

13-
That's it! No native libraries or platform-specific setup is required.
13+
That's it! No native libraries or platform-specific setup is required. This works
14+
on any platform that supports Python 3.10+, including ARM, Alpine Linux, and other
15+
environments where the old C library was hard to install.
1416

1517
Upgrading from 2.x
1618
-------------------
1719

18-
Version 3.0 is a major rewrite. If you experience issues after upgrading,
19-
you can pin to the last pre-3.0 release::
20+
Version 3.0 is a complete rewrite. Previous versions wrapped the C snap7 shared
21+
library; version 3.0 implements the entire protocol stack in pure Python. While
22+
the public API is largely the same, this is a fundamental change under the hood.
2023

21-
$ pip install "python-snap7<3"
24+
If you experience issues after upgrading:
25+
26+
1. Please report them on the `issue tracker <https://github.com/gijzelaerr/python-snap7/issues>`_
27+
with a clear description and your version (``python -c "import snap7; print(snap7.__version__)"``).
28+
2. As a workaround, pin to the last pre-3.0 release::
29+
30+
$ pip install "python-snap7<3"
31+
32+
The latest stable pre-3.0 release is version 2.1.0.

doc/introduction.rst

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,17 @@ protocol layers.
99
python-snap7 requires Python 3.10+ and runs on Windows, macOS and Linux
1010
without any native dependencies.
1111

12+
.. note::
13+
14+
**Version 3.0 is a complete rewrite.** Previous versions of python-snap7
15+
were a wrapper around the C snap7 shared library. Starting with version 3.0,
16+
the entire protocol stack is implemented in pure Python. This eliminates the
17+
need for platform-specific shared libraries and makes the library portable to
18+
any platform that runs Python.
19+
20+
If you experience issues, please report them on the
21+
`issue tracker <https://github.com/gijzelaerr/python-snap7/issues>`_ with a
22+
clear description and the version you are using. As a workaround, you can
23+
install the last pre-3.0 release with ``pip install "python-snap7<3"``.
24+
1225
The project development is centralized on `github <https://github.com/gijzelaerr/python-snap7>`_.

0 commit comments

Comments
 (0)