Giter Site home page Giter Site logo

fix-future-annotations's Introduction

Typing SVG

Python Flask Django Vue.js React

fix-future-annotations's People

Contributors

frostming avatar pierre-sassoulas avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

fix-future-annotations's Issues

[0.5.0 misuse] Only exclude 'class .+\(BaseModel\):' is not enough for pydantic proj.

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. ♥

Thanks!

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 🙂

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.