mirror of https://github.com/astral-sh/ruff
Add PD002 use-of-inplace-argument documentation (#2799)
This commit is contained in:
parent
02897a141b
commit
26f39cac2f
|
|
@ -1353,7 +1353,7 @@ For more, see [pandas-vet](https://pypi.org/project/pandas-vet/) on PyPI.
|
||||||
|
|
||||||
| Code | Name | Message | Fix |
|
| Code | Name | Message | Fix |
|
||||||
| ---- | ---- | ------- | --- |
|
| ---- | ---- | ------- | --- |
|
||||||
| PD002 | use-of-inplace-argument | `inplace=True` should be avoided; it has inconsistent behavior | 🛠 |
|
| PD002 | [use-of-inplace-argument](https://github.com/charliermarsh/ruff/blob/main/docs/rules/use-of-inplace-argument.md) | `inplace=True` should be avoided; it has inconsistent behavior | 🛠 |
|
||||||
| PD003 | use-of-dot-is-null | `.isna` is preferred to `.isnull`; functionality is equivalent | |
|
| PD003 | use-of-dot-is-null | `.isna` is preferred to `.isnull`; functionality is equivalent | |
|
||||||
| PD004 | use-of-dot-not-null | `.notna` is preferred to `.notnull`; functionality is equivalent | |
|
| PD004 | use-of-dot-not-null | `.notna` is preferred to `.notnull`; functionality is equivalent | |
|
||||||
| PD007 | use-of-dot-ix | `.ix` is deprecated; use more explicit `.loc` or `.iloc` | |
|
| PD007 | use-of-dot-ix | `.ix` is deprecated; use more explicit `.loc` or `.iloc` | |
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,30 @@ use crate::rules::pandas_vet::fixes::fix_inplace_argument;
|
||||||
use crate::violation::AlwaysAutofixableViolation;
|
use crate::violation::AlwaysAutofixableViolation;
|
||||||
|
|
||||||
define_violation!(
|
define_violation!(
|
||||||
|
/// ## What it does
|
||||||
|
/// Checks for `inplace=True` usages in `pandas` function and method
|
||||||
|
/// calls.
|
||||||
|
///
|
||||||
|
/// ## Why is this bad?
|
||||||
|
/// Using `inplace=True` encourages mutation rather than immutable data,
|
||||||
|
/// which is harder to reason about and may cause bugs. It also removes the
|
||||||
|
/// ability to use the method chaining style for `pandas` operations.
|
||||||
|
///
|
||||||
|
/// Further, in many cases, `inplace=True` does not provide a performance
|
||||||
|
/// benefit, as `pandas` will often copy `DataFrames` in the background.
|
||||||
|
///
|
||||||
|
/// ## Example
|
||||||
|
/// ```python
|
||||||
|
/// df.sort_values("col1", inplace=True)
|
||||||
|
/// ```
|
||||||
|
///
|
||||||
|
/// Use instead:
|
||||||
|
/// ```python
|
||||||
|
/// sorted_df = df.sort_values("col1")
|
||||||
|
/// ```
|
||||||
|
///
|
||||||
|
/// ## References
|
||||||
|
/// - [Why You Should Probably Never Use pandas inplace=True](https://towardsdatascience.com/why-you-should-probably-never-use-pandas-inplace-true-9f9f211849e4)
|
||||||
pub struct UseOfInplaceArgument;
|
pub struct UseOfInplaceArgument;
|
||||||
);
|
);
|
||||||
impl AlwaysAutofixableViolation for UseOfInplaceArgument {
|
impl AlwaysAutofixableViolation for UseOfInplaceArgument {
|
||||||
|
|
@ -17,7 +41,7 @@ impl AlwaysAutofixableViolation for UseOfInplaceArgument {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn autofix_title(&self) -> String {
|
fn autofix_title(&self) -> String {
|
||||||
format!("Assign to variable and remove the `inplace` arg")
|
format!("Assign to variable; remove `inplace` arg")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
# use-of-inplace-argument (PD002)
|
||||||
|
|
||||||
|
Derived from the **pandas-vet** linter.
|
||||||
|
|
||||||
|
Autofix is always available.
|
||||||
|
|
||||||
|
## What it does
|
||||||
|
Checks for `inplace=True` usages in `pandas` function and method
|
||||||
|
calls.
|
||||||
|
|
||||||
|
## Why is this bad?
|
||||||
|
Using `inplace=True` encourages mutation rather than immutable data,
|
||||||
|
which is harder to reason about and may cause bugs. It also removes the
|
||||||
|
ability to use the method chaining style for `pandas` operations.
|
||||||
|
|
||||||
|
Further, in many cases, `inplace=True` does not provide a performance
|
||||||
|
benefit, as `pandas` will often copy `DataFrames` in the background.
|
||||||
|
|
||||||
|
## Example
|
||||||
|
```python
|
||||||
|
df.sort_values("col1", inplace=True)
|
||||||
|
```
|
||||||
|
|
||||||
|
Use instead:
|
||||||
|
```python
|
||||||
|
sorted_df = df.sort_values("col1")
|
||||||
|
```
|
||||||
|
|
||||||
|
## References
|
||||||
|
- [Why You Should Probably Never Use pandas inplace=True](https://towardsdatascience.com/why-you-should-probably-never-use-pandas-inplace-true-9f9f211849e4)
|
||||||
Loading…
Reference in New Issue