{"id":13503322,"url":"https://github.com/yiblet/inquest","last_synced_at":"2025-03-29T14:31:19.712Z","repository":{"id":39997992,"uuid":"275224543","full_name":"yiblet/inquest","owner":"yiblet","description":"Inquest lets you add log statements to python without restarting your python instance. It helps you quickly uncover what is going wrong.","archived":true,"fork":false,"pushed_at":"2023-01-24T03:16:26.000Z","size":5734,"stargazers_count":132,"open_issues_count":34,"forks_count":3,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-10-31T23:31:03.138Z","etag":null,"topics":["development-tools","python","python3"],"latest_commit_sha":null,"homepage":"https://inquest.dev","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yiblet.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-06-26T18:42:25.000Z","updated_at":"2024-05-01T23:17:54.000Z","dependencies_parsed_at":"2023-02-13T14:30:51.907Z","dependency_job_id":null,"html_url":"https://github.com/yiblet/inquest","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yiblet%2Finquest","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yiblet%2Finquest/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yiblet%2Finquest/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yiblet%2Finquest/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yiblet","download_url":"https://codeload.github.com/yiblet/inquest/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246196955,"owners_count":20739199,"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":["development-tools","python","python3"],"created_at":"2024-07-31T22:02:46.461Z","updated_at":"2025-03-29T14:31:18.405Z","avatar_url":"https://github.com/yiblet.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"# What's Inquest?\n\nInquest is a logging tool for python programs. It let's you add logs to your running python programs without restarting the program, redeploying the program, or modifying the code in any way. Inquest takes extremely low overhead: the part that's a python library is completely idle unless there is something to log. Inquest is specifically designed to enable you to quickly introspect into Python even in production environments.\n\nHere's a gif of the magic. I'm running a single python instance in the background and I use Inquest to dynamically add log statements to the running code.\n\u003cimg src=\"https://raw.githubusercontent.com/yiblet/inquest/master/static/example.gif\"/\u003e\n\n## Installation\n\nThere are two ways to use Inquest:\n\n1. [A simple docker-compose](https://docs.inquest.dev/docs/getting_started_with_docker)\n2. [The Inquest Cloud](https://inquest.dev)\n\n## Resources\n\n- [Documentation](https://docs.inquest.dev/docs/overview)\n- [Troubleshooting](https://docs.inquest.dev/docs/logs_dont_appear)\n- [Slack Group](https://join.slack.com/t/inquestcommunity/shared_invite/zt-fq7lra68-nems8~EkICvgf6xRW_J3eg)\n- [Bug Tracker](https://github.com/yiblet/inquest/issues)\n\n## Frequently Asked Questions\n\n### How does Inquest work?\n\nInquest works by bytecode injection. The library sets up a connection with the backend. When you add a new\nlog statment on the dashboard, the backend relays that change the connected python instance. Inside python,\ninquest finds the affected functions inside the VM.\n\nThen it uses the python interpreter to recompile a newly generated piece of python bytecode with the new\nlog statements inserted. Then inquest pointer-swaps the new bytecode with the old bytecode.\n\nThis has 4 benefits:\n\n1. your underlying code object is never modified\n2. reverting a log statement is always possible and will always result in code behavior identical to the original\n3. it generates extremely efficient python\n4. it has not overhead\n\n### Why can't I edit the code in the dashboard?\n\nThe dashboard right now cannot persist changes to the files. So modifications to the file on the dashboard\nwouldn't have been reflected on the underlying file. This opens up an avenue for gotchas where you unintetionally change the IDE but never see those changes in your VCS. In order to avoid that, we made things, simple. The code viewer is read-only.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyiblet%2Finquest","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyiblet%2Finquest","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyiblet%2Finquest/lists"}