Skip to main content

samps

A hypermodern, type-safe, zero-dependency Python library for serial port I/O access.

Installation

pip install samps

or

using your preferred environment / package manager of choice, e.g., poetry, conda or uv:

poetry add samps
conda install samps
uv add samps

Usage

The general usage of this library is to create a serial connection to the device you want to communicate with.

You'll need to know the serial port name and the baudrate of the device you want to communicate with, this is usually found in the device's documentation.

Once you have the serial port name and baudrate, you can create a SerialCommonInterface (or SerialAsyncCommonInterface) object and use it to communicate with the device as follows:

from samps import SerialCommonInterface as Serial

serial = Serial(port="/dev/tty.usbserial-0001", baudrate=9600)

serial.open()

print(["Serial Port Is Open?", "Yes" if serial.is_open() else "No"])

line = serial.readline()

print(line.decode("utf-8").strip())

serial.close()

print(["Serial Port Closed"])

or, using a context manager:

from samps import SerialCommonInterface as Serial

with Serial(port="/dev/tty.usbserial-0001", baudrate=9600) as serial:
    print(["Serial Port Is Open?", "Yes" if serial.is_open() else "No"])

    line = serial.readline()

    print(line.decode("utf-8").strip())

print(["Serial Port Closed"])

The library also provides an asynchronous interface for serial communication, which can be used in an asyncio event loop.

Here's an example of how to use the asynchronous interface:

from samps import SerialAsyncCommonInterface as Serial

async with Serial(port="/dev/tty.usbserial-0001", baudrate=9600) as serial:
    print(["Serial Port Is Open?", "Yes" if serial.is_open() else "No"])

    line = await serial.readline()

    print(line.decode("utf-8").strip())

print(["Serial Port Closed"])

Milestones

  • Implement SerialCommonInterface for POSIX systems
  • Implement SerialAsyncCommonInterface for POSIX systems
  • Implement SerialCommonInterface for Windows systems
  • Implement SerialAsyncCommonInterface for Windows systems
  • Implement SerialCommonInterface for MacOS systems
  • Implement SerialAsyncCommonInterface for MacOS systems
  • Implement SerialOverTCP (e.g., telnet RFC 2217)
  • Documentation

Contributing

Contributions are welcome! Please read the CONTRIBUTING.md file for details on how to contribute to this project.

License

This project is licensed under the terms of the MIT license.

Metadata

Release files for samps 0.11.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for samps 0.11.0
File Size Uploaded
samps-0.11.0.tar.gz 51.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for samps 0.11.0
File Interpreter ABI Platform
samps-0.11.0-py3-none-any.whl Python 3 none any Details

Total release size: 76.6 kB

Release files / samps-0.11.0.tar.gz

Download URL samps-0.11.0.tar.gz
Size 51.9 kB
Tags Source
SHA-256 checksum
How to use checksums
c8199bf7c61c36acf666157429d428ebdf353d2e63ce6ff9dfeb56e230e27de9
BLAKE2b-256 checksum
How to use checksums
ce9b5fb111b5d9f2a7509aee02d5dd67bdd81fb7478f213247cc8faff23839a5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 2, 2025.

Transparency log

Release files / samps-0.11.0-py3-none-any.whl

Download URL samps-0.11.0-py3-none-any.whl
Size 24.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7968f6e3602a601a11e834cdd30a9c4aa7dcba5043e0159c40eea0e218c1ef0b
BLAKE2b-256 checksum
How to use checksums
57036a686623bc2e24c06124d9174a3bdfba079aee13cb70a78ff1838ba21217
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 2, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

0.11.0 This release

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page