frostming / fix-future-annotations Goto Github PK
View Code? Open in Web Editor NEWA CLI and pre-commit hook to fix future annotations
License: MIT License
A CLI and pre-commit hook to fix future annotations
License: MIT License
The "bug" reproducting branch:
https://github.com/boholder/puntgun/commits/test-fix-tool
Env( boholder/puntgun@7ba9738 ):
pyproject.toml
:
[tool.fix_future_annotations]
exclude_lines = [
'class .+\(BaseModel\):'
]
Run the tool (with pre-commit) with the configuration above, then revert the data.py
file, unit tests can pass as usual.
Ok, I then tried one by one against the changes (made to the data.py
file by this tool) and found that only the insert of from __future__ import annotations
statement will actually triggered the error.
Without this line (tests pass):
boholder/puntgun@1e85bb9
With this line (tests fail):
boholder/puntgun@005e180
(puntgun-3.10) \code\python\puntgun>pdm test
ImportError while loading conftest 'E:\code\python\puntgun\tests\conftest.py'.
tests\conftest.py:9: in <module>
from puntgun.rules.config_parser import ConfigParser
puntgun\rules\config_parser.py:93: in <module>
import_rule_classes()
puntgun\rules\config_parser.py:32: in import_rule_classes
importlib.import_module(f"{base_module_name}.{module_name}")
puntgun\rules\user\action_rules.py:3: in <module>
from puntgun.client import NeedClientMixin
puntgun\client.py:15: in <module>
from puntgun.rules.data import Media, Place, Poll, Tweet, User
puntgun\rules\data.py:217: in <module>
class Tweet(BaseModel):
puntgun\rules\data.py:228: in Tweet
author: User | None = User()
pydantic\main.py:342: in pydantic.main.BaseModel.__init__
???
E pydantic.error_wrappers.ValidationError: 1 validation error for User
E pinned_tweet
E field required (type=value_error.missing)
I think it would be better to change the logic of exclude class
configuration to "exclude the file where the class is located"? Although there is already a configuration to exclude files, but the configuration to exclude special classes is more flexible than to exclude files?
It up to you, dear maintainer, thank you very much for your work and quick response to the needs. ♥
I wish I had seen this one month ago, before doing that with a handful of regular expressions 🤣
And I'll use it right now on another project! So thanks, lots of time spared thanks to this tool 🙂
Have it considered adding an option like "-r" to fix every file in the specified directory?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.