{"id":21455361,"url":"https://github.com/bmwant/hapless","last_synced_at":"2025-05-16T10:07:37.865Z","repository":{"id":39714969,"uuid":"481588469","full_name":"bmwant/hapless","owner":"bmwant","description":"Run and manage background processes","archived":false,"fork":false,"pushed_at":"2025-01-09T18:29:12.000Z","size":312,"stargazers_count":134,"open_issues_count":8,"forks_count":4,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-04-12T06:05:50.663Z","etag":null,"topics":["automation","background-jobs","cli","devops","jobs","process-manager","python","python3","runner","script","tool","ukraine"],"latest_commit_sha":null,"homepage":"https://bmwant.link/hapless-easily-run-and-manage-background-processes/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bmwant.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-04-14T12:02:52.000Z","updated_at":"2025-03-09T12:14:23.000Z","dependencies_parsed_at":"2024-01-16T10:37:21.880Z","dependency_job_id":"ee9b0352-d418-47c4-9a5a-ce8fb739e1df","html_url":"https://github.com/bmwant/hapless","commit_stats":{"total_commits":160,"total_committers":3,"mean_commits":"53.333333333333336","dds":"0.043749999999999956","last_synced_commit":"4da2b613e08a5bad2eaafa17cebc6bd31b22f08e"},"previous_names":[],"tags_count":21,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bmwant%2Fhapless","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bmwant%2Fhapless/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bmwant%2Fhapless/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bmwant%2Fhapless/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bmwant","download_url":"https://codeload.github.com/bmwant/hapless/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254509476,"owners_count":22082891,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["automation","background-jobs","cli","devops","jobs","process-manager","python","python3","runner","script","tool","ukraine"],"created_at":"2024-11-23T05:11:48.770Z","updated_at":"2025-05-16T10:07:32.857Z","avatar_url":"https://github.com/bmwant.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"## hapless\n\n![Checks](https://github.com/bmwant/hapless/actions/workflows/tests.yml/badge.svg)\n[![PyPI](https://img.shields.io/pypi/v/hapless)](https://pypi.org/project/hapless/)\n![PyPI - Python Version](https://img.shields.io/pypi/pyversions/hapless)\n\n\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/charliermarsh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)\n[![EditorConfig](https://img.shields.io/badge/-EditorConfig-grey?logo=editorconfig)](https://editorconfig.org/)\n[![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit\u0026logoColor=white)](https://github.com/pre-commit/pre-commit)\n\n\u003e **hapless** (*adjective*) - (especially of a person) unfortunate. A developer who accidentally launched long-running process in the foreground.\n\nSimplest way of running and tracking processes in the background.\n\n[![asciicast](https://asciinema.org/a/489924.svg)](https://asciinema.org/a/489924?speed=2)\n\n### Installation\n\n```bash\n$ pip install hapless\n\n# or to make sure proper pip is used for the given python executable\n$ python -m pip install hapless\n```\n\nInstall into user-specific directory in case of any permissions-related issues.\n\n```bash\n$ pip install --user hapless\n$ python -m pip install --user hapless\n```\n\n### Usage\n\n```bash\n# Run arbitrary script\n$ hap run -- python long_running.py\n\n# Show summary table\n$ hap\n\n# Display status of the specific process\n$ hap status 1\n```\n\nSee [USAGE.md](https://github.com/bmwant/hapless/blob/main/USAGE.md) for the complete list of commands and available parameters.\n\n### Contribute\n\nSee [DEVELOP.md](https://github.com/bmwant/hapless/blob/main/DEVELOP.md) to setup your local development environment and feel free to create a pull request with a new feature.\n\n### Releases changelog\n\nChangelog file was removed; you can now view the changes made in each release on the [Releases](https://github.com/bmwant/hapless/releases) page.\n\n### See also\n\n* [Rich](https://rich.readthedocs.io/en/stable/introduction.html) console UI library.\n* [Supervisor](http://supervisord.org/) full-fledged process manager.\n* [podmena](https://github.com/bmwant/podmena) provides nice emoji icons to commit messages.\n\n### Support 🇺🇦 Ukraine in the war!\n\n🇺🇦 Donate to [this foundation](https://prytulafoundation.org/en) in case you want to help. Every donation matter!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbmwant%2Fhapless","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbmwant%2Fhapless","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbmwant%2Fhapless/lists"}