Metadata-Version: 2.4
Name: python-snap7
Version: 3.2.0
Summary: Pure Python S7 communication library for Siemens PLCs
Author-email: Gijs Molenaar <gijsmolenaar@gmail.com>
License-Expression: MIT
Project-URL: Homepage, https://github.com/gijzelaerr/python-snap7
Project-URL: Documentation, https://python-snap7.readthedocs.io/en/latest/
Keywords: snap7,s7,siemens,plc
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Console
Classifier: Topic :: System :: Hardware
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Manufacturing
Classifier: Operating System :: POSIX
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Requires-Python: >=3.10
Description-Content-Type: text/x-rst
License-File: LICENSE
Provides-Extra: test
Requires-Dist: pytest; extra == "test"
Requires-Dist: pytest-asyncio; extra == "test"
Requires-Dist: pytest-cov; extra == "test"
Requires-Dist: pytest-html; extra == "test"
Requires-Dist: hypothesis; extra == "test"
Requires-Dist: mypy; extra == "test"
Requires-Dist: types-setuptools; extra == "test"
Requires-Dist: ruff; extra == "test"
Requires-Dist: tox; extra == "test"
Requires-Dist: tox-uv; extra == "test"
Requires-Dist: types-click; extra == "test"
Requires-Dist: uv; extra == "test"
Provides-Extra: cli
Requires-Dist: rich; extra == "cli"
Requires-Dist: click; extra == "cli"
Provides-Extra: demo
Requires-Dist: psutil; extra == "demo"
Requires-Dist: rich; extra == "demo"
Requires-Dist: click; extra == "demo"
Provides-Extra: doc
Requires-Dist: sphinx; extra == "doc"
Requires-Dist: sphinx_rtd_theme; extra == "doc"
Provides-Extra: discovery
Requires-Dist: pnio-dcp; extra == "discovery"
Provides-Extra: ppi
Requires-Dist: pyserial>=3.5; extra == "ppi"
Dynamic: license-file

.. image:: https://img.shields.io/pypi/v/python-snap7.svg
   :target: https://pypi.org/project/python-snap7/

.. image:: https://img.shields.io/pypi/pyversions/python-snap7.svg
   :target: https://pypi.org/project/python-snap7/

.. image:: https://img.shields.io/github/license/gijzelaerr/python-snap7.svg
   :target: https://github.com/gijzelaerr/python-snap7/blob/master/LICENSE

.. image:: https://github.com/gijzelaerr/python-snap7/actions/workflows/test.yml/badge.svg
   :target: https://github.com/gijzelaerr/python-snap7/actions/workflows/test.yml

.. image:: https://readthedocs.org/projects/python-snap7/badge/
   :target: https://python-snap7.readthedocs.io/en/latest/


python-snap7
============

python-snap7 is a pure-Python library for communicating with Siemens S7 PLCs
using the classic S7 protocol. It supports S7-300 and S7-400 controllers, as
well as S7-1200 and S7-1500 controllers with PUT/GET access enabled. It
supports Python 3.10+ on Windows, Linux, and macOS without native dependencies.

Installation
============

Install from PyPI::

   pip install python-snap7

Quick start
===========

::

   from s7 import Client

   client = Client()
   client.connect("192.168.1.10", 0, 1)
   data = client.db_read(1, 0, 4)
   client.disconnect()

The ``s7`` package is the recommended import. The ``snap7`` package name is
also available for backwards compatibility.

Documentation
=============

Read the full documentation at
`python-snap7.readthedocs.io <https://python-snap7.readthedocs.io/en/latest/>`_.
