Top AI Repos — open-source AI, indexed and scored
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
A tool for refurbishing and modernizing Python codebases
| Date | Stars |
|---|---|
| 2026-07-24 | 2534 |
| 2026-07-25 | 2534 |
| 2026-07-28 | 2534 |
| 2026-07-30 | 2534 |
| 2026-08-06 | 2534 |
Today
— stars today
This week
— stars this week
This month
— stars this month
Momentum
0.0
growth rate 0.00%/day
# Refurb
A tool for refurbishing and modernizing Python codebases.
## Example
```python
# main.py
for filename in ["file1.txt", "file2.txt"]:
with open(filename) as f:
contents = f.read()
lines = contents.splitlines()
for line in lines:
if not line or line.startswith("# ") or line.startswith("// "):
continue
for word in line.split():
print(f"[{word}]", end="")
print("")
```
Running:
```
$ refurb main.py
main.py:3:17 [FURB109]: Use `in (x, y, z)` instead of `in [x, y, z]`
main.py:4:5 [FURB101]: Use `y = Path(x).read_text()` instead of `with open(x, ...) as f: y = f.read()`
main.py:10:40 [FURB102]: Replace `x.startswith(y) or x.startswith(z)` with `x.startswith((y, z))`
main.py:16:9 [FURB105]: Use `print() instead of `print("")`
```
## Installing
```
$ pipx install refurb
$ refurb file.py folder/
```
> **Note**
> Refurb must be run on Python 3.10+, though it can check Python 3.7+ code by setting the `--python-version` flag.
## Explanations For Checks
You can use `refurb --explain FURB123`, where `FURB123` is the error code you are trying to look up.
For example:
````
$ refurb --explain FURB123
Don't cast a variable or literal if it is already of that type. For
example:
Bad:
```
name = str("bob")
num = int(123)
```
Good:
```
name = "bob"
num = 123
```
````
An online list of all available checks can be viewed [here](./docs/checks.md).
## Ignoring Errors
Use `--ignore 123` to ignore error 123. The error code can be in the form `FURB123` or `123`.
This flag can be repeated.
> The `FURB` prefix indicates that this is a built-in error. The `FURB` prefix is optional,
> but for all other errors (ie, `ABC123`), the prefix is required.
You can also use inline comments to disable errors:
```python
x = int(0) # noqa: FURB123
y = list() # noqa
```
Here, `noqa: FURB123` specifically ignores the FURB123 error for that line, and `noqa` ignores
all errors on that line.
You can also specify multiple errors to ignore by separating them with a comma/space:
```python
x = not not int(0) # noqa: FURB114, FURB123
x = not not int(0) # noqa: FURB114 FURB123
```
## Enabling/Disabling Checks
Certain checks are disabled by default, and need to be enabled first. You can do this using the
`--enable ERR` flag, where `ERR` is the error code of the check you want to enable. A disabled
check differs from an ignored check in that a disabled check will never be loaded, whereas an
ignored check will be loaded, an error will be emitted, and the error will be suppressed.
Use the `--verbose`/`-v` flag to get a full list of enabled checks.
The opposite of `--enable` is `--disable`, which will disable a check. When `--enable` and `--disable`
are both specified via the command line, whichever one comes last will take precedence. When using
`enable` and `disable` via the config file, `disable` will always take precedence.
Use the `--disable-all` flag to disable all checks. This allows you to incrementally `--enable` checks
as you see fit, as opposed to adding a bunch of `--ignore` flags. To use this in the config file,
set `disable_all` to `true`.
Use the `--enable-all` flag to enable all checks by default. This allows you to opt into all checks
that Refurb (and Refurb plugins) have to offer. This is a good option for new codebases. To use this
in a config file, set `enable_all` to `true`.
In the config file, `disable_all`/`enable_all` is applied first, and then the `enable` and `disable`
fields are applied afterwards.
> Note that `disable_all` and `enable_all` are mutually exclusive, both on the command line and in
> the config file. You will get an error if you try to specify both.
You can also disable checks by category using the `#category` syntax. For example, `--disable "#readability"`
will disable all checks with the `readability` category. The same applies for `enable` and `ignore`.
Also, if you disable an entire category you can still explicitly re-enable Excerpt of 15,278 characters
Read on GitHub398
Fridayworks
6
@nokia @ghostty-org · Poland
3
3
Roman Pavelka · Czech Republic
2
Simon Brugman
2
Jacobo de Vera · Doist · Spain
1
1
1
1
1
Ang · Malaysia
1
1
Yilei · United States
1
Jair Henrique · @grupoboticario
1
1
1
1
Would you bet a product on this? Bounded 0–100 and slow moving.
matched fp:1836211963d75e6c, topic:testing