pyiotools
Provides several utilities for handling I/O
What it is and what it does
pyiotools is a unified I/O framework that abstracts away the differences between command-line, GUI, and programmatic argument handling. It provides an IOHandler class that works like argparse but can switch between modes: COMMANDLINE mode uses argparse under the hood with a custom help interface, GUI mode builds a PyQt5 form automatically based on argument types, and PROGRAMMATIC mode accepts arguments as a dictionary. The package also includes type validators, interactive console utilities for menu selection, a Script class that auto-profiles method calls and logs them, and a Cache class for object serialization.
The library is still in alpha and has been abandoned since April 2022, with the last release in February 2021. The description explicitly warns that the API will likely undergo significant breaking changes and documentation will fall out of sync. It carries 14 runtime dependencies including PyQt5, pandas, and APScheduler, making it a heavy addition to any project. The package is useful for rapid prototyping of tools that need multiple input modes, but the lack of maintenance and unstable API make it risky for production use.
Use it for:
- Build a tool that accepts input via command line, GUI, or programmatic API without rewriting argument handling logic.
- Quickly prototype interactive console applications with menu selection and multi-select support using arrow keys.
- Validate and coerce user input to specific types (integers, paths, datetimes, dataframes) with custom conditions.
- Automatically generate a PyQt5 GUI form from argument definitions without writing widget code.
- Profile and log method execution with automatic serialization of script state for debugging.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Provides unified I/O handling for command-line, GUI, and programmatic argument processing, with type validation, interactive console features, and object profiling and caching utilities.
No. The package is abandoned (last commit April 2022) and explicitly warns of unstable API and out-of-sync documentation. The 14 heavy runtime dependencies, including PyQt5, make it a substantial addition for an alpha-stage tool. Use argparse, click, or typer for command-line handling and PyQt5 directly for GUI work instead.
Install
pyiotools on PyPI
pip
pip install pyiotoolsuv
uv add pyiotoolspoetry
poetry add pyiotoolsInstalling pyiotools
Before you install
Low install friction, but the package is in alpha status and abandoned since 2022 with no recent maintenance. The 14 runtime dependencies include PyQt5 and other heavy libraries, which will pull in substantial system requirements despite the wheel distribution.
License in practice
MIT license is permissive and imposes no restrictions on use, modification, or distribution in your own projects.
Quickstart
pip install pyiotools
from pyiotools import IOHandler, Argument, RunMode
with IOHandler(run_mode=RunMode.COMMANDLINE) as handler:
Argument('name', argtype='STRING').add()
Argument('count', argtype='INTEGER', default=1).add()
result = handler.process()
PyQt5 requires a display server on Linux; GUI mode will fail in headless environments. Requires Python 3.8 or later.
Verify before relying
- Whether the 14 runtime dependencies (including PyQt5, pandas, APScheduler) are all actually required at install time or only for specific features.
- Current state of the codebase and whether breaking API changes have stabilized since the last release in February 2021.
- Whether the package works reliably with Python versions beyond 3.8, given the classifier only lists 3.8.
Package facts
| License | MIT (permissive) |
| Python support | not specified |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 14 — APScheduler, dill, cryptography, cursor, readchar, colorama, infi.systray, PyQt5, maybe-else, pandas, pathmagic, pymiscutils, pysubtypes, typepy |
| Maintenance | abandoned — 2,020 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 612,558/month — #5,756 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: pyiotools-0.3.18-py3-none-any.whl
Tags
More Application Frameworks packages
FastAPI is a Python web framework for building…
permissive · top 100 on PyPI
annotated-docProvides a way to document function parameters,…
permissive · top 100 on PyPI
textualTextual is a Python framework for building…
permissive · top 100 on PyPI
typerTyper builds command-line applications from…
permissive · top 1,000 on PyPI
mcpBuild and connect to Model Context Protocol…
permissive · top 1,000 on PyPI
WerkzeugWerkzeug is a WSGI utility library providing…
permissive · top 1,000 on PyPI
pymiscutilsProvides a collection of utility classes and…
permissive · top 15,000 on PyPI
argparse-addonsProvides additional type validators and action…
permissive · top 5,000 on PyPI
jupyter-ui-pollBlocks Jupyter cell execution while waiting for…
permissive · top 15,000 on PyPI
inquirer3Builds interactive command-line prompts with…
permissive · top 15,000 on PyPI
ipyeventsipyevents provides a Jupyter widget that…
permissive · top 15,000 on PyPI
intervalsProvides Python classes for representing and…
permissive · top 15,000 on PyPI
easyguiEasyGUI provides simple, non-event-driven GUI…
permissive · top 5,000 on PyPI
imguiPython bindings for the dear imgui C++ library,…
permissive · top 15,000 on PyPI
pickpick provides a Python library to create…
permissive · top 15,000 on PyPI
inquirerInquirer provides interactive command-line…
permissive · top 5,000 on PyPI