Comments (7)
This is also true for PD011 with .values()
, e.g. Flask request object has an attribute values
, too.
from pandas-vet.
A quick hack (that could be optional for example) would be to check if pandas is imported in the file. Sure, it won't work for a lot of cases, but for a lot of cases it also will work.
from pandas-vet.
Regarding the case for PD011 - .values
, one check could be for the parentheses. I get a lot of false positives because I'm using both pandas and dictionaries. Looping through the values of the dictionary with .values()
triggers PD011.
I'm not really familiar with the AST, so I don't know if this is an easy check or not.
from pandas-vet.
Indeed. I should create a new Issue detailing this, but the problem is that many of our checks rely on the type of the object being a pandas object. This is a fundamental issue with static linting in Python because the AST doesn't know what type a thing is.
I am open to suggestions on how to get around this, but it will likely be a big job. For now, the undesirable workaround is to turn off checks that are particularly bothersome.
from pandas-vet.
A quick hack (that could be optional for example) would be to check if pandas is imported in the file. Sure, it won't work for a lot of cases, but for a lot of cases it also will work.
I have considered this. If you'd like to put in a PR that adds this, I'd be happy to take a look at it.
from pandas-vet.
What about type hinting?
Mypy uses the typed-ast package, but this has been included on the ast on Python 3.8+
So, in python < 3.8 you can use typed-ast
, and on python 3.8+ you can just use the ast
Using type hinting, this shouldn't be a false positive:
import pandas as pd
bl: UnixDateBuilder = UnixDateBuilder()
bl.sub(month=3).change(day=1, hour=0, minute=0, second=0)
You can get the type of something using typing.get_type_hints()
Example from towardsdatascience: https://towardsdatascience.com/python-type-hints-docstrings-7ec7f6d3416b
from pandas-vet.
from pandas-vet.
Related Issues (20)
- pandas-vet should run when flake-8 invoked by pre-commit HOT 1
- Automate releases to PyPI and conda-forge
- Challenging PD008: .at can be useful HOT 3
- False positive: dict().values()
- False positive: PD005 for regex `sub` method HOT 1
- New approach to docs with JupyterBook HOT 1
- Use generator expressions when possible HOT 2
- inplace set to a variable raises exception
- PD011 - shoud be to_numpy() instead of to_array()?
- Improve contributor experience HOT 1
- Constant column check with `nunique` HOT 2
- `PD012` is outdated HOT 1
- Improve official docs
- Check for proper `reset_index`
- torch.Tensor.sort return type values access PD011 false positive
- Add nox support to run tests, flake8, black locally HOT 1
- Add banners to Readme. HOT 1
- Add check for python functions that should be pandas methods
- Add notes about disabling checks to README
- Conda and pip install (0.2.2) not showing plugins with flake8 --version; 0.2.1 works HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from pandas-vet.