map-ai-py
MAP (Markdown for AI Processing) documentation scaffold — install and drift-check CLI for Django, Flask, FastAPI, and plain Python projects.
This package doesn't reimplement MAP's install/patch logic — it vendors and shells out to larablocks/map-ai's install.sh/doctor.sh, the same zero-runtime-dependency scripts that back non-PHP, non-JS installs of MAP. The only Python-native part is auto-detecting your project's name, stack, and commands from pyproject.toml/requirements.txt to fill in AGENTS.md, the same role map-ai-laravel's ProcessesStubContent and map-ai-js's detect.js play for their ecosystems.
Requires bash to be on PATH — true for Mac/Linux and WSL, but worth knowing if you're on native Windows without WSL.
Install
pipx run map-ai-py install
# or
uvx map-ai-py install
Copies the MAP scaffold (AGENTS.md, CLAUDE.md, GEMINI.md, .claude/, docs/, etc.) into the current directory, merges the required .gitignore/.gitattributes entries, bootstraps your gitignored personal files (docs/MEMORY.md, docs/memory/gotchas.md, etc.), and fills in what it can detect:
- Project name — from
pyproject.toml's[project].name(or Poetry's[tool.poetry].name), title-cased; falls back to the directory name - Stack — the first framework it recognizes (Django, FastAPI, Flask, Litestar, Starlette, Tornado, Sanic, Pyramid) plus any data-layer dependency (SQLAlchemy, PostgreSQL, MySQL, Redis, MongoDB drivers)
- Test command —
pytestif it's a dependency, prefixed withuv run/poetry run/pipenv rundepending on which lockfile is present - Static analysis command —
ruff/mypy/flake8, whichever are dependencies - Start command —
python manage.py runserverfor Django,docker compose up -dif a compose file exists,uvicorn/flask runotherwise if detectable - Build command — only for a
src/-layout package meant to ship to PyPI itself (python -m build); omitted for applications, where "build" has no meaning
Start/build command detection is weaker here than map-ai-js's — Python has no package.json-scripts-equivalent single convention, so this falls back to a [MANUAL] placeholder more often. That's an accepted, documented gap, not a bug.
Files that already exist are left alone unless you pass --force, which overwrites SCAFFOLD_FILES after backing each one up to <file>.bak:
pipx run map-ai-py install --force
Pass a path to install somewhere other than the current directory:
pipx run map-ai-py install ./backend
Checking for drift
pipx run map-ai-py doctor # report only — exits 1 if anything needs attention
pipx run map-ai-py doctor --fix # applies fixable findings unattended, then reports what's left
pipx run map-ai-py doctor --interactive # same fixable set as --fix, confirmed one file at a time
doctor never touches real project content — it only ever adds missing files/lines, or replaces a stub's own instructional text (a stale italic note, HTML comment, or fenced-code trailing comment) with its current wording. Anything else is reported for you to merge by hand, never auto-applied. See larablocks/map-ai's README for the exact safety rules; this package's doctor/install commands are the same doctor.sh/install.sh scripts, unmodified.
Keeping this package in sync with map-ai
This package vendors a copy of install.sh/doctor.sh/lib.sh/stubs/ rather than depending on larablocks/map-ai at install time (there's no PyPI-native way to depend on a Composer package). scripts/sync-from-map-ai.sh re-vendors those files from a local larablocks/map-ai checkout — run it, review the diff, bump this package's version, and publish whenever map-ai core releases something this package should pick up.
Development
python3 -m venv .venv
.venv/bin/pip install -e ".[dev]"
.venv/bin/pytest
License
MIT
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file map_ai_py-0.1.1.tar.gz.
File metadata
- Download URL: map_ai_py-0.1.1.tar.gz
- Upload date:
- Size: 36.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
52c572b39681b598889e5eb98a9fd5547ca141bba23f4ad220dcf36eedefe00e
|
|
| MD5 |
b4fc1fd1899bb0332ae780643fdc80a3
|
|
| BLAKE2b-256 |
ce64b7a050e265c8b04ff8e89bfdb70b9cb158aad0b106b1c15c4947878d6c4d
|
File details
Details for the file map_ai_py-0.1.1-py3-none-any.whl.
File metadata
- Download URL: map_ai_py-0.1.1-py3-none-any.whl
- Upload date:
- Size: 60.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e16e48db26668782455e12152d05d8baca1d0211f22e5a6d276f7a8c504907f3
|
|
| MD5 |
689aad77f617caa11466b25850b9b6f5
|
|
| BLAKE2b-256 |
36562740cd7972b67f05dc6cbe547af35c7f9c9197eed9c9a0ba36edf3b2c136
|