Skip to content

Conversation

@ShaharNaveh
Copy link
Contributor

Summary

I'm trying to reduce code complexity for RustPython, we have this file: https://github.com/RustPython/RustPython/blob/056795eed4dc0b09de00c2fabe45493ea1de7194/compiler/codegen/src/unparse.rs which can be replaced entirely by ruff_python_codegen::Generator. Unfortunately we can not create an instance of Generator easily, because Indentation is not exported at

pub use stylist::Stylist;

I have managed to bypass this restriction by doing:

let contents = r"x = 1";
let module = ruff_python_parser::parse_module(contents).unwrap();
let stylist = ruff_python_codegen::Stylist::from_tokens(module.tokens(), contents);
stylist.indentation()

But ideally I'd rather use:

ruff_python_codegen::Indentation::default()

@github-actions
Copy link
Contributor

github-actions bot commented Sep 3, 2025

ruff-ecosystem results

Linter (stable)

✅ ecosystem check detected no linter changes.

Linter (preview)

✅ ecosystem check detected no linter changes.

Copy link
Contributor

@ntBre ntBre left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Makes sense to me, thank you!

@ntBre ntBre added the internal An internal refactor or improvement label Sep 3, 2025
@ntBre ntBre merged commit cb1ba0d into astral-sh:main Sep 3, 2025
35 checks passed
second-ed pushed a commit to second-ed/ruff that referenced this pull request Sep 9, 2025
## Summary

I'm trying to reduce code complexity for
[RustPython](https://github.com/RustPython/RustPython), we have this
file:
https://github.com/RustPython/RustPython/blob/056795eed4dc0b09de00c2fabe45493ea1de7194/compiler/codegen/src/unparse.rs
which can be replaced entirely by `ruff_python_codegen::Generator`.
Unfortunately we can not create an instance of `Generator` easily,
because `Indentation` is not exported at
https://github.com/astral-sh/ruff/blob/cda376afe079b54b6779704bdd740c9e81423e39/crates/ruff_python_codegen/src/lib.rs#L3

I have managed to bypass this restriction by doing:
```rust
let contents = r"x = 1";
let module = ruff_python_parser::parse_module(contents).unwrap();
let stylist = ruff_python_codegen::Stylist::from_tokens(module.tokens(), contents);
stylist.indentation()
```

But ideally I'd rather use:
```rust
ruff_python_codegen::Indentation::default()
```
@ShaharNaveh ShaharNaveh deleted the expose-indent branch September 18, 2025 11:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

internal An internal refactor or improvement

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants