diff --git a/README.md b/README.md index f9e94756b..01235425e 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@

- Scriptable interface to a powerful, multi-lingual language server. + A natural, intuitive API for code manipulation and analysis

@@ -22,7 +22,7 @@
-[Codegen](https://docs.codegen.com) is a python library for manipulating codebases. +[Codegen](https://docs.codegen.com) is a Python library for manipulating and analyzing codebases with a natural, intuitive API. ```python from codegen import Codebase @@ -41,18 +41,27 @@ for function in codebase.functions: Write code that transforms code. Codegen combines the parsing power of [Tree-sitter](https://tree-sitter.github.io/tree-sitter/) with the graph algorithms of [rustworkx](https://github.com/Qiskit/rustworkx) to enable scriptable, multi-language code manipulation at scale. +## Features + +- **Intuitive API**: Manipulate code with natural operations like `move`, `rename`, and `add_parameter` +- **Multi-language support**: Works with Python, TypeScript, JavaScript, and React codebases +- **Comprehensive analysis**: Analyze dependencies, references, and relationships between code elements +- **Import management**: Automatically handles imports when moving or refactoring code +- **Scriptable transformations**: Create reusable scripts for common refactoring patterns +- **Enterprise-ready**: Scales to handle codebases with millions of lines of code + ## Installation and Usage -We support +We support: - Running Codegen in Python 3.12 - 3.13 (recommended: Python 3.13+) - macOS and Linux - macOS is supported - Linux is supported on x86_64 and aarch64 with glibc 2.34+ - Windows is supported via WSL. See [here](https://docs.codegen.com/building-with-codegen/codegen-with-wsl) for more details. -- Python, Typescript, Javascript and React codebases +- Python, TypeScript, JavaScript and React codebases -``` +```bash # Install inside existing project uv pip install codegen @@ -62,7 +71,7 @@ uv tool install codegen --python 3.13 # Create a codemod for a given repo cd path/to/repo codegen init -codegen create test-function +codegen create PATH test-function # Run the codemod codegen run test-function @@ -75,8 +84,32 @@ codegen notebook See [Getting Started](https://docs.codegen.com/introduction/getting-started) for a full tutorial. -``` +```python from codegen import Codebase + +# Initialize a codebase +codebase = Codebase("./") + +# Find and manipulate functions +for function in codebase.functions: + # Add type hints to parameters + if function.name == "process_data" and not function.return_type: + function.set_return_type("Dict[str, Any]") + + # Rename variables consistently + for variable in function.variables: + if variable.name == "data" and function.name.startswith("process_"): + variable.rename("input_data") + +# Move classes between files +user_class = codebase.classes.find(name="User") +if user_class: + user_class.move_to_file("models/user.py") + +# Add imports where needed +for py_file in codebase.files(extension=".py"): + if "process_data" in py_file.content and "typing" not in py_file.imports: + py_file.add_import("from typing import Dict, Any") ``` ## Troubleshooting @@ -91,7 +124,9 @@ If you run into additional issues not listed here, please [join our slack commun ## Resources -- [Docs](https://docs.codegen.com) +- [Documentation](https://docs.codegen.com) +- [API Reference](https://docs.codegen.com/api-reference) +- [CLI Commands](https://docs.codegen.com/cli) - [Getting Started](https://docs.codegen.com/introduction/getting-started) - [Contributing](CONTRIBUTING.md) - [Contact Us](https://codegen.com/contact)