{"id":51153068,"url":"https://github.com/soldatov-ss/django-completion","last_synced_at":"2026-06-26T08:01:23.189Z","repository":{"id":353919483,"uuid":"1220701611","full_name":"soldatov-ss/django-completion","owner":"soldatov-ss","description":"Tab completion for Django's manage.py — commands, app labels, options, and migration targets in bash and zsh","archived":false,"fork":false,"pushed_at":"2026-05-24T06:17:40.000Z","size":377,"stargazers_count":32,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-24T08:17:04.337Z","etag":null,"topics":["autocomplete","bash-completion","developer-tools","django","manage-py","python","shell-completion","tab-completion","zsh-completion"],"latest_commit_sha":null,"homepage":"https://soldatov-ss.github.io/django-completion/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/soldatov-ss.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG/0.1.0.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-25T08:03:51.000Z","updated_at":"2026-05-24T06:17:36.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/soldatov-ss/django-completion","commit_stats":null,"previous_names":["soldatov-ss/django-completion"],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/soldatov-ss/django-completion","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soldatov-ss%2Fdjango-completion","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soldatov-ss%2Fdjango-completion/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soldatov-ss%2Fdjango-completion/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soldatov-ss%2Fdjango-completion/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/soldatov-ss","download_url":"https://codeload.github.com/soldatov-ss/django-completion/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soldatov-ss%2Fdjango-completion/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34808043,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-26T02:00:06.560Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["autocomplete","bash-completion","developer-tools","django","manage-py","python","shell-completion","tab-completion","zsh-completion"],"created_at":"2026-06-26T08:01:21.789Z","updated_at":"2026-06-26T08:01:23.169Z","avatar_url":"https://github.com/soldatov-ss.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# django-completion\n\n![PyPI version](https://img.shields.io/pypi/v/django-completion.svg)\n![Python versions](https://img.shields.io/pypi/pyversions/django-completion.svg)\n![CI](https://github.com/soldatov-ss/django-completion/actions/workflows/ci.yml/badge.svg)\n![License](https://img.shields.io/pypi/l/django-completion.svg)\n\nProject-aware **tab completion** for Django's `manage.py`.\n\nPress Tab to complete commands, app labels, options, and migration targets — in bash and zsh — from your actual Django project.\n\n![django-completion demo](https://raw.githubusercontent.com/soldatov-ss/django-completion/main/demo.gif)\n\n## Installation\n\nInstall it in the same environment as your Django project:\n\n```bash\npip install django-completion\n# or\nuv add django-completion\n```\n\nAdd the app:\n\n```python\nINSTALLED_APPS = [\n    ...\n    \"django_completion\",\n]\n```\n\nInstall the shell hook:\n\n```bash\npython manage.py autocomplete install\n```\n\nThen restart your terminal or reload your shell config:\n\n```bash\nsource ~/.bashrc   # bash\nsource ~/.zshrc    # zsh\n```\n\n## What Completes\n\nSupported invocation styles:\n\n```bash\nmanage.py \u003cTAB\u003e\npython manage.py \u003cTAB\u003e\npython3 manage.py \u003cTAB\u003e\npython ./manage.py \u003cTAB\u003e\nuv run python manage.py \u003cTAB\u003e\n```\n\nCompletion depth:\n\n- command names after `manage.py`\n- option flags for all commands; app labels for `migrate`, `check`, `dumpdata`, `test`, and `makemigrations`\n- `migrate` app labels filtered to apps that have migrations\n- migration names and `zero` after `python manage.py migrate app_label`\n- option descriptions in zsh where available\n\nDjango's built-in completion covers command names and option flags — it has no knowledge of your app labels, migration names, or project-specific targets. django-completion fills that gap. See [comparison with Django's built-in completion](https://soldatov-ss.github.io/django-completion/comparison/) for a full feature breakdown.\n\n## Commands\n\n```bash\npython manage.py autocomplete status\npython manage.py autocomplete status --verbose\npython manage.py autocomplete refresh\npython manage.py autocomplete uninstall\n```\n\n`status --verbose` is the best first diagnostic when completion behaves unexpectedly. It reports the cache path, schema version, migration counts, warning count, shell hooks, installed script versions, and package version.\n\n`refresh` rebuilds `.django-completion-cache.json` manually. The cache also refreshes automatically after `manage.py` commands with a 60-second cooldown. To disable auto-refresh:\n\n```python\nDJANGO_COMPLETION_AUTO_REFRESH = False\n```\n\n## Compatibility\n\n| Area | Supported |\n|---|---|\n| Python | 3.10+ |\n| Django | 4.2+ |\n| Shells | bash, zsh |\n| OS | Linux and macOS expected |\n| Windows | not officially supported; WSL with bash/zsh may work |\n| Invocations | `manage.py`, `python manage.py`, `python3 manage.py`, `python ./manage.py`, `uv run python manage.py` |\n| Completion depth | commands, app labels, options, migrate app labels, migration names |\n\n## Safety and Privacy\n\n- No telemetry.\n- No network calls.\n- Tab completion reads only the local cache file.\n- Tab completion does not import Django.\n- Tab completion does not touch the database.\n- The cache is local runtime state in the project root.\n- The cache contains command names, app labels, option names/help, migration names, warnings, and timestamps.\n- Shell rc edits are marker-delimited and reversible.\n- `autocomplete uninstall` removes managed shell hooks and managed scripts.\n- The package has no middleware, models, migrations, or request-time behavior.\n\nFor teams that prefer strict production settings:\n\n```python\nif DEBUG:\n    INSTALLED_APPS += [\"django_completion\"]\n```\n\n`DEBUG` is not always the right environment switch; separate settings modules or a custom environment flag may fit your deployment process better.\n\n## Limitations\n\n- bash and zsh only; fish is planned for a later release\n- no `django-admin` support\n- no official native Windows or PowerShell support\n- no global options before command, such as `python manage.py --settings config.settings migrate`\n- no custom alias support, such as `dj migrate`\n- no database-aware applied/unapplied migration filtering\n\n## Roadmap\n\nNear-term candidates include more wrapper support, better Docker-oriented examples, fish shell support, and additional command-specific completion rules.\n\nLong term, the goal is to learn from real-world usage and explore whether parts of this approach could inform Django's own management-command completion story.\n\n## Documentation\n\nFull documentation is at https://soldatov-ss.github.io/django-completion/.\n\n## Development\n\n```bash\ngit clone git@github.com:soldatov-ss/django-completion.git\ncd django-completion\nuv sync\nuv run pytest -q\nuv run ruff check .\nuv run ty check\n```\n\ndjango-completion was created in 2026 by [Soldatov Serhii](https://github.com/soldatov-ss).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoldatov-ss%2Fdjango-completion","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsoldatov-ss%2Fdjango-completion","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoldatov-ss%2Fdjango-completion/lists"}