Skip to main content

adipro

One import for the whole toolbox.

import adipro as ap

df   = ap.pd.read_csv("rows.csv")
soup = ap.BeautifulSoup(ap.requests.get(url).text, "lxml")
doc  = ap.Document()
ap.load_dotenv()

No import block at the top of every script, and one pip install on a new machine instead of forty.

Install

pip install adipro

That installs everything — all 50 packages, every group below. On a machine where you only need a slice of it:

pip install adipro[scraping]   # bs4, lxml, cloudscraper, curl_cffi, ddgs, ...
pip install adipro[llm]        # openai, groq, anthropic, langgraph, tiktoken, ...
pip install adipro[docs]       # python-docx, python-pptx, openpyxl, pdf
pip install adipro[browser]    # playwright, selenium
pip install adipro[media]      # gTTS, edge-tts, pillow, lameenc
pip install adipro[data]       # gspread, pyodbc
pip install adipro[cloud]      # boto3
pip install adipro[app]        # fastapi, streamlit, gradio, pydantic, ...

Development install:

git clone <this repo> && cd adipro
pip install -e ".[dev]"
pytest

Nothing loads until you touch it

import adipro takes about 4 ms whether you have 5 packages installed or 50. Aliases resolve on first attribute access and are cached afterwards, so ap.pd imports pandas once and every later ap.pd is a dict lookup.

Two things follow from that:

  • A missing package only breaks the line that needs it. If playwright failed to build on this machine, ap.pd still works fine.

  • You get told how to fix it, not a bare traceback:

    MissingPackage: adipro.sync_playwright needs 'playwright', which is not installed.
    
        pip install adipro[browser]   # the whole browser group
        pip install playwright        # just this one
    

Finding things

ap.search("pdf")     # {'PdfReader': 'pypdf:PdfReader', 'open_pdf': ..., ...}
ap.doctor()          # what is installed, what is missing, how to fix it
ap.loaded()          # aliases resolved so far this process
dir(ap)              # every alias — tab-completion works in Jupyter

From the shell:

python -m adipro          # health report
python -m adipro pdf      # search aliases

Import styles

Style Lazy? Use it?
import adipro as ap then ap.pd yes preferred
from adipro import pd, requests yes fine
from adipro import * no stdlib + core only, on purpose

from adipro import * is deliberately limited to the stdlib and core aliases — the ones a base install guarantees are present. Star-importing the heavy groups would have to load all of them eagerly and would die if any single one were missing, so __all__ leaves them out. Reach for them through ap..

What is in it

Group Packages
stdlib Path, json, re, os, dt, defaultdict, dataclass, ThreadPoolExecutor, sha256, urljoin, … — no install needed
core pandas, numpy, requests, httpx, python-dotenv, rich, tqdm
scraping beautifulsoup4, lxml, cloudscraper, curl_cffi, ddgs, feedparser, readability-lxml, ftfy, dateparser, rapidfuzz, pycryptodome
browser playwright, selenium
llm openai, groq, anthropic, google-generativeai, langgraph, langchain-google-genai, langchain-groq, langchain-text-splitters, tiktoken
docs python-docx, python-pptx, openpyxl, pdfplumber, pypdf
data gspread, pyodbc
media gTTS, edge-tts, pillow, lameenc
cloud boto3
app fastapi, uvicorn, pydantic, streamlit, gradio, schedule, aiohttp, nest-asyncio

Run python -m adipro for the live list with install status.

Adding a package

Two edits, in this order:

  1. Add it to the right group in src/adipro/_registry.py — its import root and pip name under packages, and the aliases you want under aliases.
  2. Add the pip name to that extra and to dependencies and all in pyproject.toml.

tests/test_adipro.py::test_registry_matches_pyproject fails if you do one and forget the other, and test_every_installed_alias_resolves fails if an alias points at a module path or attribute that does not exist.

Notes

  • Versions are loose on purpose. Only a few floors are pinned. Hard pins here would fight the pins in projects you install alongside this, so installing adipro will not drag your other venvs sideways.
  • google-generativeai is end-of-life upstream. It still works and is still in the llm group because it is what is installed, but Google has stopped updating it in favour of google-genai (from google import genai). Worth migrating when convenient; the alias is ap.genai.
  • Two aliases are renamed to avoid a clash. readability-lxml's Document is ap.ReadabilityDoc, because python-docx already owns ap.Document.

Licence

MIT

Metadata

Release files for adipro 0.1.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 adipro 0.1.0
File Size Uploaded Provenance
adipro-0.1.0.tar.gz 18.5 kB Without provenance Details

Built distribution (wheel)

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

Total release size: 31.4 kB

Release files / adipro-0.1.0.tar.gz

Download URL adipro-0.1.0.tar.gz
Size 18.5 kB
Tags Source
SHA-256 checksum
How to use checksums
7cc2c4cc9090b6ee0cdae06bfb94815cb650ed02fbef1e684f12ad72a1977ce5
BLAKE2b-256 checksum
How to use checksums
58d65e886dacb2f54483dbe7c3d0a1b5768f9de425ee6f8b1d097b285c3380a4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / adipro-0.1.0-py3-none-any.whl

Download URL adipro-0.1.0-py3-none-any.whl
Size 12.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
943fc4e7279afa0014323e5605cc9092d7d55fc3b3bf499e8ec487fc95c93732
BLAKE2b-256 checksum
How to use checksums
8d04bb7b58c6e36dfe4221bef71b5a67380eb60d156e93b6a72333c40d02f599
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Security for adipro 0.1.0

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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

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