{"id":10266,"url":"https://github.com/gyermolenko/awesome-python-ast","name":"awesome-python-ast","description":"Python tools, libraries and resources about AST (as in Abstract Syntax Trees)","projects_count":36,"last_synced_at":"2026-08-07T06:00:28.317Z","repository":{"id":39794176,"uuid":"186484105","full_name":"gyermolenko/awesome-python-ast","owner":"gyermolenko","description":"Python tools, libraries and resources about AST (as in Abstract Syntax Trees)","archived":false,"fork":false,"pushed_at":"2022-05-25T16:41:16.000Z","size":5,"stargazers_count":103,"open_issues_count":6,"forks_count":9,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-07-28T06:16:28.706Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/gyermolenko.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}},"created_at":"2019-05-13T19:39:43.000Z","updated_at":"2026-05-25T04:01:36.000Z","dependencies_parsed_at":"2022-08-30T22:30:29.231Z","dependency_job_id":null,"html_url":"https://github.com/gyermolenko/awesome-python-ast","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/gyermolenko/awesome-python-ast","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gyermolenko%2Fawesome-python-ast","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gyermolenko%2Fawesome-python-ast/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gyermolenko%2Fawesome-python-ast/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gyermolenko%2Fawesome-python-ast/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gyermolenko","download_url":"https://codeload.github.com/gyermolenko/awesome-python-ast/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gyermolenko%2Fawesome-python-ast/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":36363345,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-08-06T04:43:03.162Z","status":"online","status_checked_at":"2026-08-07T02:00:06.708Z","response_time":57,"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"}},"created_at":"2024-01-12T20:23:23.751Z","updated_at":"2026-08-07T06:00:28.317Z","primary_language":null,"list_of_lists":false,"displayable":true,"categories":["Linters","Online resources","Articles","Formatters","Other","Unused code detection","Tools","Online tools","Import sorters"],"sub_categories":[],"readme":"# awesome-python-ast\nPython tools, libraries and resources about AST (as in Abstract Syntax Trees)\n\n\n## Online resources\n\n- [brown-water-python](https://www.asmeurer.com/brown-water-python/)\n\n    _\"extended documentation for effectively working with the tokenize module\"_\n\n    Project of [Aaron Meurer](https://twitter.com/asmeurer) |\n    [Repo](https://github.com/asmeurer/brown-water-python)\n\n- [greentreesnakes](https://greentreesnakes.readthedocs.io/)\n\n    _\"the missing Python AST docs\"_\n\n    Project of [Thomas Kluyver](https://twitter.com/takluyver) |\n    [Repo](https://bitbucket.org/takluyver/greentreesnakes).\n\n\n## Tools\n\n- [astmonkey](https://github.com/mutpy/astmonkey) - Set of tools to play with Python AST\n- [astor](https://github.com/berkerpeksag/astor) - AST read/write\n- [astpath](https://github.com/hchasestevens/astpath) - A command-line search utility for Python ASTs using XPath syntax.\n- [astpretty](https://github.com/asottile/astpretty) - Pretty print the output of python stdlib `ast.parse`.\n- [astroid](https://github.com/PyCQA/astroid) - A common base representation of python source code for pylint and other projects\n- [astsearch](https://github.com/takluyver/astsearch) - Search through ASTs using XPath syntax\n- [astunparse](https://github.com/simonpercivall/astunparse) - a factored out version of unparse found in the Python source distribution\n- [baron](https://github.com/PyCQA/baron) - a Full Syntax Tree (FST) library\n- [parso](https://github.com/davidhalter/parso) - parser that supports error recovery and round-trip parsing\n- [redbaron](https://github.com/PyCQA/redbaron) - Bottom-up approach to refactoring in python\n- [show_ast](https://github.com/hchasestevens/show_ast) - An IPython notebook plugin for visualizing ASTs.\n- [tokenize-rt](https://github.com/asottile/tokenize-rt) - A wrapper around the stdlib `tokenize` which roundtrips.\n\n\n## Unused code detection\n- [dead](https://github.com/asottile/dead)\n- [vulture](https://github.com/jendrikseipp/vulture)\n\n\n## Formatters\n- [autopep8](https://github.com/hhatto/autopep8) - A tool that automatically formats Python code to conform to the PEP 8 style guide\n- [black](https://github.com/python/black) - The uncompromising Python code formatter | [Online demo](https://black.now.sh)\n- [yapf](https://github.com/google/yapf) - configurable formatter from Google | [Online demo](https://yapf.now.sh/)\n\n\n## Linters\n- [flake8](https://gitlab.com/pycqa/flake8) - glues together pycodestyle, pyflakes, mccabe, and third-party plugins to check the style and quality of code \n- [mccabe](https://github.com/PyCQA/mccabe) - McCabe complexity checker\n- [pycodestyle](https://github.com/PyCQA/pycodestyle) - former `pep8`. Check your Python code against some of the style conventions in PEP 8.\n- [pydocstyle](https://github.com/PyCQA/pydocstyle) - docstring style checker \n- [pyflakes](https://github.com/PyCQA/pyflakes) - A simple program which checks Python source files for errors.\n- [pylint](https://github.com/PyCQA/pylint) - code analysis tool which looks for programming errors, helps enforcing a coding standard, sniffs for code smells and offers simple refactoring suggestions.\n\n## Import sorters\n- [isort](https://github.com/timothycrosley/isort) - sort imports alphabetically, and automatically separated into sections\n- [reorder_python_imports](https://github.com/asottile/reorder_python_imports) - reordering python imports\n\n\n## Other\n- [add-trailing-comma](https://github.com/asottile/add-trailing-comma) - A tool (and pre-commit hook) to automatically add trailing commas to calls and literals.\n- [pyupgrade](https://github.com/asottile/pyupgrade) - A tool (and pre-commit hook) to automatically upgrade syntax for newer versions of the language.\n- [yesqa](https://github.com/asottile/yesqa) - A tool (and pre-commit hook) to automatically remove unnecessary # noqa comments\n\n\n## Online tools\n- [python-ast-explorer](https://github.com/maligree/python-ast-explorer)\n\n\n\n## Articles\n2010-02-22: [Instrumenting the AST](http://www.dalkescientific.com/writings/diary/archive/2010/02/22/instrumenting_the_ast.html)\n\n\n## Code examples\n\n\n## TODOs\n- common dependencies\n- \"getting into\" howto\n- static/dynamic code analysis\n- pluggable or not\n","projects_url":"https://awesome.ecosyste.ms/api/v1/lists/gyermolenko%2Fawesome-python-ast/projects"}