Skip to main content

Python: Internet Printing Protocol (IPP) Client

Asynchronous Python client for Internet Printing Protocol (IPP).

Note: aioipp is a maintained fork of pyipp by Chris Talkington. It keeps the pyipp import name and adds page counter support. It is published on PyPI as aioipp; do not install it alongside pyipp.

About

This package allows you to monitor printers that support the Internet Printing Protocol (IPP) programmatically.

Installation

pip install aioipp

Usage

import asyncio

from pyipp import IPP, Printer


async def main():
    """Show example of connecting to your IPP print server."""
    async with IPP("ipps://EPSON123456.local:631/ipp/print") as ipp:
        printer: Printer = await ipp.printer()
        print(printer)


if __name__ == "__main__":
    loop = asyncio.get_event_loop()
    loop.run_until_complete(main())

Reporting a problem with your printer

Printers vary a lot in how closely they follow the IPP specification. If your printer fails to set up in Home Assistant, or a value looks wrong, the most useful thing you can provide is a raw capture of what the printer sends. The package ships a small diagnostics command for exactly that:

uvx --python 3.14 aioipp ipp://192.168.1.10:631/ipp/print

or, in an environment where the package is already installed:

python -m pyipp ipp://192.168.1.10:631/ipp/print

Use ipps:// if the printer requires TLS, and --ipp-version 1.1 for older devices. The command prints the attributes the library received, what it parsed them into, and a full traceback if parsing failed. It always writes the raw response to ipp-<host>.bin in the current directory.

Then open an issue with:

  • the printer make, model and firmware version
  • the full output of the command
  • the ipp-<host>.bin file (zip it if GitHub refuses the extension)

Serial numbers, UUIDs, hosts and names are masked in both the capture and the output, so they are safe to post. Masking keeps every value the same length, so a masked capture still reproduces the problem. Pass --no-scrub to keep the original values, for example when debugging locally. Captured files become regression tests in tests/fixtures, so they are the fastest route to a fix.

When aioipp fails to parse a response inside another application, such as Home Assistant, the logged error ends with a -----BEGIN SCRUBBED IPP RESPONSE----- block. It holds the same masked capture, compressed and base64 encoded, so pasting the full error into an issue is enough. Maintainers can turn it back into a capture file with:

python -m pyipp --from-log home-assistant.log -o ipp-capture.bin

If you cannot install Python packages, the ipptool command that ships with CUPS on Linux and macOS is a good substitute. Its output is not masked, so remove the serial number, UUIDs and hosts before posting it:

ipptool -tv ipp://192.168.1.10:631/ipp/print get-printer-attributes.test

Setting up development environment

This Python project is fully managed using the Poetry dependency manager. But also relies on the use of NodeJS for certain checks during development.

You need at least:

  • Python 3.9+
  • Poetry
  • NodeJS 20+ (including NPM)

To install all packages, including all development requirements:

npm install
poetry install

As this repository uses the pre-commit framework, all changes are linted and tested with each commit. You can run all checks and tests manually, using the following command:

poetry run pre-commit run --all-files

To run just the Python tests:

poetry run pytest

Metadata

Release files for aioipp 0.21.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 aioipp 0.21.0
File Size Uploaded
aioipp-0.21.0.tar.gz 25.8 kB Details

Built distribution (wheel)

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

Total release size: 53.4 kB

Release files / aioipp-0.21.0.tar.gz

Download URL aioipp-0.21.0.tar.gz
Size 25.8 kB
Tags Source
SHA-256 checksum
How to use checksums
49e39a207e49984a401f64e0a46a09c617df4c907fe4f3d5eafe50e56c245e12
BLAKE2b-256 checksum
How to use checksums
eaaf4311829abfb5695c94dcc4458a7434b268f6df2dc5e1e174ea5223f48eb2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 12, 2026.

Transparency log

Release files / aioipp-0.21.0-py3-none-any.whl

Download URL aioipp-0.21.0-py3-none-any.whl
Size 27.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
93e05765aece06a97f9ccff8e0112edbff3a6e24d9da64d47a0780c9f54f6b9c
BLAKE2b-256 checksum
How to use checksums
37036ed9718f25fbec73dc3a1bc3432abab03f38726a19b616fa9031078c274d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 12, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.21.0 This release

2 release files

0.20.0

2 release files

0.19.3

2 release files

0.19.2

2 release files

0.19.1

2 release files

0.19.0

2 release files

0.18.1

2 release files

0.18.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