{"id":13419146,"url":"https://github.com/kolofordjango/kolo","last_synced_at":"2025-05-16T00:00:16.445Z","repository":{"id":41188092,"uuid":"372755708","full_name":"kolofordjango/kolo","owner":"kolofordjango","description":"See everything happening in your running Django app. All without leaving VSCode","archived":false,"fork":false,"pushed_at":"2024-07-12T15:51:32.000Z","size":127,"stargazers_count":494,"open_issues_count":18,"forks_count":14,"subscribers_count":5,"default_branch":"main","last_synced_at":"2024-09-05T22:09:57.243Z","etag":null,"topics":["django","python","vscode","vscode-extension","web"],"latest_commit_sha":null,"homepage":"https://kolo.app","language":null,"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/kolofordjango.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":"2021-06-01T08:25:19.000Z","updated_at":"2024-09-02T11:40:07.000Z","dependencies_parsed_at":"2024-10-26T16:03:54.958Z","dependency_job_id":"4ed3c340-3006-4179-b36f-55e3754564a2","html_url":"https://github.com/kolofordjango/kolo","commit_stats":{"total_commits":79,"total_committers":5,"mean_commits":15.8,"dds":0.5189873417721519,"last_synced_commit":"a9bc7adb7a160cac9bf72fa34672be82716f2399"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kolofordjango%2Fkolo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kolofordjango%2Fkolo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kolofordjango%2Fkolo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kolofordjango%2Fkolo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kolofordjango","download_url":"https://codeload.github.com/kolofordjango/kolo/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254442854,"owners_count":22071877,"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":["django","python","vscode","vscode-extension","web"],"created_at":"2024-07-30T22:01:11.961Z","updated_at":"2025-05-16T00:00:16.379Z","avatar_url":"https://github.com/kolofordjango.png","language":null,"funding_links":[],"categories":["Others","Misc"],"sub_categories":[],"readme":"# Kolo\n\nTrace and visualize your Python code. Generate working tests. \n\n[![downloads](https://img.shields.io/pypi/dm/kolo)](https://pypi.org/project/kolo/) [![Chat on Discord](https://img.shields.io/discord/899363528660635738?label=Chat%20on%20Discord)](https://discord.com/invite/FsTVcFwYUn)\n\n[![PyPI version](https://img.shields.io/pypi/v/kolo?label=python%20package)](https://pypi.org/project/kolo/) [![supported python versions](https://img.shields.io/pypi/pyversions/kolo)](https://pypi.org/project/kolo/)\n\n📋 [docs.kolo.app](https://docs.kolo.app)\n\n\n\u003cimg width=\"1283\" alt=\"image\" src=\"https://github.com/kolofordjango/kolo/assets/7718702/f332094d-a779-4d14-bd5c-1e0db4b2037e\"\u003e\n\u003cp align=\"center\"\u003e\u003csup\u003eScreenshot of Kolo from the \u003ca href=\"https://github.com/kolofordjango/todo-demo\"\u003eTodo Demo app\u003c/a\u003e\u003c/sup\u003e\u003c/p\u003e\n\n\n## Quickstart\n\nGetting started with Kolo only takes a couple of minutes. The fastest way to understand what Kolo does and how it can be helpful is by trying it out on a codebase you work on. But if you're in a hurry or can't try Kolo on your own codebase, you can preview some functionality in our [playground](https://play.kolo.app).\n\n\n### Trace a Django request\n\n*Trace a Django request for inspection, visualization, and debugging purposes.*\n\n\n1. Install kolo using `pip install kolo`\n2. Add `\"kolo.middleware.KoloMiddleware\"` to the top of your MIDDLEWARE list in settings.py\n3. Start your Django server using `python manage.py runserver` and make a request to any page.\n4. Browse to `localhost:8000/_kolo/` to view your traced request. It should look similar to the screenshot at the top of the page 🚀\n\n\n(For a more in-depth version of this tutorial see [How to: Trace Django requests](https://docs.kolo.app/en/latest/howto/trace-django-requests.html))\n\n\n### Generate a test from your trace\n*Now that we have a trace recorded, we can generate a working integration test from that trace.*\n\n1. Navigate from the \"Trace\" page to the \"Test\" page.\n\n\u003cimg width=\"1446\" alt=\"image\" src=\"https://github.com/kolofordjango/kolo/assets/7718702/b63347f0-def2-4abb-ad12-ee298afec21c\"\u003e\n\n2. You'll see a page similar to the screenshot above, with your integration test waiting for you 🥳\n3. Save the test file to your desired location or copy/paste it manually.\n4. Then run the test in the same way you normally would to check that it's working. Make any edits as desired.\n\n\n#### Customizing test generation\nEvery codebase has different testing requirements and code style. You can customize Kolo's test generation to suit your needs. Learn more about how to do this in [How to: Customize test generation](https://docs.kolo.app/en/latest/howto/customize-testgen.html)\n\n\n#### How does test generation work?\n\nBased on the data captured in the trace, Kolo first generate a test plan which includes the various \"steps\" it intends to include in the integration test. Each step in the plan is derived from some information in the trace itself. Then, based on the plan, Kolo then generates the test code on the left of the page. Learn more about how Kolo test generation works in [this blog post](https://blog.kolo.app/tests-no-joy.html)\n\n\n\n\n\n## Support\n\nIf you have any questions or trouble getting set up with Kolo, please get in touch with us. We're here to help and would love any feedback!\n\n* [Talk to us on Discord](https://discord.com/invite/FsTVcFwYUn)\n* [Create an issue](https://github.com/kolofordjango/kolo/issues/new/choose)\n* [Email us](mailto:support@kolo.app)\n* [Schedule a meeting with us to help get Kolo set up](https://calendly.com/wilhelmklopp)\n\n\n## Screenshots\n\nWhat Kolo looks like when used with a real world Django application ([Simple Poll](https://simplepoll.rocks))\n\n#### Viewing a trace\n\u003cimg width=\"1283\" alt=\"image\" src=\"https://github.com/kolofordjango/kolo/assets/7718702/16caa182-a496-497c-b9cd-6ae3f4029c36\"\u003e\n\n\n#### Exploring a trace\n\u003cimg width=\"1800\" alt=\"image\" src=\"https://github.com/kolofordjango/kolo/assets/7718702/cb78ce41-cd54-411c-bfac-40b6d914b935\"\u003e\n\n#### Viewing an SQL query\n\u003cimg width=\"1797\" alt=\"image\" src=\"https://github.com/kolofordjango/kolo/assets/7718702/b2224463-652b-4bbe-a414-ed2bd2e6db27\"\u003e\n\n\n#### Viewing a function call\n\u003cimg width=\"1799\" alt=\"image\" src=\"https://github.com/kolofordjango/kolo/assets/7718702/669f67ff-3740-4ce1-95f6-75b2ce0245fa\"\u003e\n\n\n#### Generating an integration test\n\n\u003cimg width=\"1797\" alt=\"image\" src=\"https://github.com/kolofordjango/kolo/assets/7718702/62d9c154-fa79-44f1-8d01-d3a8e93cecd5\"\u003e\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkolofordjango%2Fkolo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkolofordjango%2Fkolo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkolofordjango%2Fkolo/lists"}