{"id":13822221,"url":"https://github.com/sanitizers/octomachinery","last_synced_at":"2025-04-05T13:02:20.494Z","repository":{"id":53469222,"uuid":"164512032","full_name":"sanitizers/octomachinery","owner":"sanitizers","description":"🤖 Invisible engine driving octobot machines. Simple, yet powerful. [DEMO BOT @ https://github.com/sanitizers/chronographer-github-app] | [tutorial @ https://tutorial.octomachinery.dev] | [docs @ https://docs.octomachinery.dev] | official web-site is at --\u003e","archived":false,"fork":false,"pushed_at":"2025-01-07T01:11:03.000Z","size":925,"stargazers_count":58,"open_issues_count":28,"forks_count":10,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-29T12:11:20.090Z","etag":null,"topics":["github","github-action","github-actions","github-actions-framework","github-actions-python","github-apps","github-bot","github-bot-framework","hacktoberfest","octomachinery","probot","python","python-githubapi"],"latest_commit_sha":null,"homepage":"https://octomachinery.dev","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sanitizers.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","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},"funding":{"custom":["https://www.comebackalive.in.ua/donate","https://github.com/vshymanskyy/StandWithUkraine#for-maintainers-and-authors","https://www.paypal.me/webknjazCZ","https://webknjaz.me"],"github":["webknjaz"],"ko_fi":"webknjaz","liberapay":"webknjaz","tidelift":"pypi/octomachinery"}},"created_at":"2019-01-07T23:11:29.000Z","updated_at":"2025-02-18T16:37:14.000Z","dependencies_parsed_at":"2023-02-16T16:16:19.204Z","dependency_job_id":"8b195629-d796-44f6-9ab5-3e804dae548e","html_url":"https://github.com/sanitizers/octomachinery","commit_stats":{"total_commits":624,"total_committers":9,"mean_commits":69.33333333333333,"dds":0.03205128205128205,"last_synced_commit":"09b5e5ca2f7eb1f7d7b6f974392456a25411a11a"},"previous_names":[],"tags_count":43,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sanitizers%2Foctomachinery","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sanitizers%2Foctomachinery/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sanitizers%2Foctomachinery/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sanitizers%2Foctomachinery/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sanitizers","download_url":"https://codeload.github.com/sanitizers/octomachinery/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247339147,"owners_count":20923013,"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":["github","github-action","github-actions","github-actions-framework","github-actions-python","github-apps","github-bot","github-bot-framework","hacktoberfest","octomachinery","probot","python","python-githubapi"],"created_at":"2024-08-04T08:01:49.021Z","updated_at":"2025-04-05T13:02:20.467Z","avatar_url":"https://github.com/sanitizers.png","language":"Python","funding_links":["https://www.comebackalive.in.ua/donate","https://github.com/vshymanskyy/StandWithUkraine#for-maintainers-and-authors","https://www.paypal.me/webknjazCZ","https://webknjaz.me","https://github.com/sponsors/webknjaz","https://ko-fi.com/webknjaz","https://liberapay.com/webknjaz","https://tidelift.com/funding/github/pypi/octomachinery","https://tidelift.com/badges/package/pypi/octomachinery","https://tidelift.com/subscription/pkg/pypi-octomachinery?utm_source=pypi-octomachinery\u0026utm_medium=readme","https://tidelift.com/subscription/pkg/pypi-octomachinery?utm_source=pypi-octomachinery\u0026utm_medium=referral\u0026utm_campaign=github"],"categories":["Python"],"sub_categories":[],"readme":".. image:: https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/banner-direct.svg\n   :target: https://github.com/vshymanskyy/StandWithUkraine/blob/main/docs/README.md\n   :alt: SWUbanner\n\n.. image:: https://img.shields.io/pypi/v/octomachinery.svg?logo=Python\u0026logoColor=white\n   :target: https://pypi.org/project/octomachinery\n   :alt: octomachinery @ PyPI\n\n.. image:: https://tidelift.com/badges/package/pypi/octomachinery\n   :target: https://tidelift.com/subscription/pkg/pypi-octomachinery?utm_source=pypi-octomachinery\u0026utm_medium=readme\n   :alt: octomachinery is available as part of the Tidelift Subscription\n\n.. image:: https://github.com/sanitizers/octomachinery/actions/workflows/ci-cd.yml/badge.svg?event=push\n   :target: https://github.com/sanitizers/octomachinery/actions/workflows/ci-cd.yml?query=event:push\n   :alt: GitHub Actions CI/CD workflows status\n\n.. image:: https://img.shields.io/matrix/octomachinery:matrix.org?label=Discuss%20on%20Matrix%20at%20%23octomachinery%3Amatrix.org\u0026logo=matrix\u0026server_fqdn=matrix.org\u0026style=flat\n   :target: https://matrix.to/#/%23octomachinery:matrix.org\n   :alt: Matrix Room — #octomachinery:matrix.org\n\n.. image:: https://img.shields.io/matrix/pyba:matrix.org?label=Discuss%20on%20Matrix%20at%20%23pyba%3Amatrix.org\u0026logo=matrix\u0026server_fqdn=matrix.org\u0026style=flat\n   :target: https://matrix.to/#/%23pyba:matrix.org\n   :alt: Matrix Space — #pyba:matrix.org\n\n.. DO-NOT-REMOVE-docs-badges-END\n\n.. image:: https://img.shields.io/readthedocs/octomachinery/latest.svg?logo=Read%20The%20Docs\u0026logoColor=white\n   :target: https://docs.octomachinery.dev/en/latest/?badge=latest\n   :alt: Documentation Status\n\noctomachinery: Bots Without Boilerplate\n=======================================\n\nInvisible engine driving octobot machines. Simple, yet powerful.\n\nWeb-site @ https://octomachinery.dev. Stay tuned!\n\n.. DO-NOT-REMOVE-docs-intro-START\n\n**How-to create a GitHub Bot tutorial** is ready for preview\n@ `tutorial.octomachinery.dev\n\u003chttps://tutorial.octomachinery.dev/en/latest/\u003e`_\n\nElevator pitch\n--------------\n\nHere's how you 👍 a just-created comment:\n\n.. code:: python\n\n    from octomachinery.app.server.runner import run as run_app\n    from octomachinery.routing import process_event_actions\n    from octomachinery.routing.decorators import process_webhook_payload\n    from octomachinery.runtime.context import RUNTIME_CONTEXT\n\n\n    @process_event_actions('issue_comment', {'created'})\n    @process_webhook_payload\n    async def on_comment(\n            *,\n            action, issue, comment,\n            repository=None, sender=None,\n            installation=None,\n            assignee=None, changes=None,\n    ):\n        github_api = RUNTIME_CONTEXT.app_installation_client\n        comment_reactions_api_url = f'{comment[\"url\"]}/reactions'\n        await github_api.post(\n            comment_reactions_api_url,\n            preview_api_version='squirrel-girl',\n            data={'content': '+1'},\n        )\n\n\n    run_app(\n        name='Thumbs-Up-Bot',\n        version='1.0.0',\n        url='https://github.com/apps/thuuuuuuuuuuuuuumbs-uuuuuuuuuuuup',\n    )\n\nPrerequisites\n-------------\n\nPython 3.7+\n\nContribute octomachinery\n------------------------\n\n**Want to add something to upstream?** Feel free to submit a PR or file\nan issue if unsure.\nNote that PR is more likely to be accepted if it includes tests and\ndetailed description helping maintainers to understand it better 🎉\n\nOh, and be pythonic, please 🐍\n\n**Don't know how?** Check out `How to Contribute to Open Source\n\u003chttps://opensource.guide/how-to-contribute/\u003e`_ article by GitHub 🚀\n\nLicense\n-------\n\nThe source code and the documentation in this project are released under\nthe `GPL v3 license`_.\n\n.. _`GPL v3 license`:\n   https://github.com/sanitizers/octomachinery/blob/master/LICENSE\n\nFor Enterprise\n--------------\n\noctomachinery is available as part of the Tidelift Subscription.\n\nThe octomachinery maintainers and the maintainers of thousands of other packages\nare working with Tidelift to deliver one enterprise subscription that covers\nall of the open source you use.\n\n`Learn more \u003chttps://tidelift.com/subscription/pkg/pypi-octomachinery?utm_source=pypi-octomachinery\u0026utm_medium=referral\u0026utm_campaign=github\u003e`_.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsanitizers%2Foctomachinery","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsanitizers%2Foctomachinery","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsanitizers%2Foctomachinery/lists"}