Skip to content

Commit

Permalink
Merge pull request #856 from azmeuk/flask-precommit
Browse files Browse the repository at this point in the history
use pre-commit configuration from Flask
  • Loading branch information
azmeuk authored Oct 11, 2024
2 parents f4903ad + 32372b2 commit e73f930
Show file tree
Hide file tree
Showing 40 changed files with 265 additions and 115 deletions.
32 changes: 8 additions & 24 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -1,30 +1,14 @@
---
repos:
- repo: https://github.com/asottile/pyupgrade
rev: v3.13.0
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.6.9
hooks:
- id: pyupgrade
args: ["--py39-plus"]
- repo: https://github.com/asottile/reorder_python_imports
rev: v3.11.0
hooks:
- id: reorder-python-imports
args: ["--application-directories", "src"]
- repo: https://github.com/psf/black
rev: 23.9.1
hooks:
- id: black
- repo: https://github.com/pycqa/flake8
rev: 6.1.0
hooks:
- id: flake8
additional_dependencies:
- flake8-bugbear
- flake8-implicit-str-concat
- flake8-pyproject
- id: ruff
- id: ruff-format
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.4.0
rev: v5.0.0
hooks:
- id: check-byte-order-marker
- id: check-merge-conflict
- id: debug-statements
- id: fix-byte-order-marker
- id: trailing-whitespace
- id: end-of-file-fixer
44 changes: 18 additions & 26 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -78,30 +78,22 @@ exclude_lines = [
"pass",
]

[tool.flake8]
# B = bugbear
# E = pycodestyle errors
# F = flake8 pyflakes
# W = pycodestyle warnings
# B9 = bugbear opinions
# ISC = implicit-str-concat
select = ["B", "E", "F", "W", "B9", "ISC"]
ignore = [
# slice notation whitespace, invalid
"E203",
# line length, handled by bugbear B950
"E501",
# bare except, handled by bugbear B001
"E722",
# bin op line break, invalid
"W503",
# requires 'strict' argument for 'zip'
# that needs python >= 3.10
"B905",
]
# up to 88 allowed by bugbear B950
max-line-length = 80
per-file-ignores = [
# __init__ modules export names
"**/__init__.py: F401, F403",
[tool.ruff]
src = ["src"]
fix = true
show-fixes = true
output-format = "full"

[tool.ruff.lint]
select = [
"B", # flake8-bugbear
"E", # pycodestyle error
"F", # pyflakes
"I", # isort
"UP", # pyupgrade
"W", # pycodestyle warning
]

[tool.ruff.lint.isort]
force-single-line = true
order-by-type = false
72 changes: 71 additions & 1 deletion src/wtforms/__init__.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,77 @@
from wtforms import validators
from wtforms import widgets
from wtforms.fields import *
from wtforms.fields.choices import RadioField
from wtforms.fields.choices import SelectField
from wtforms.fields.choices import SelectMultipleField
from wtforms.fields.core import Field
from wtforms.fields.core import Flags
from wtforms.fields.core import Label
from wtforms.fields.datetime import DateField
from wtforms.fields.datetime import DateTimeField
from wtforms.fields.datetime import DateTimeLocalField
from wtforms.fields.datetime import MonthField
from wtforms.fields.datetime import TimeField
from wtforms.fields.datetime import WeekField
from wtforms.fields.form import FormField
from wtforms.fields.list import FieldList
from wtforms.fields.numeric import DecimalField
from wtforms.fields.numeric import DecimalRangeField
from wtforms.fields.numeric import FloatField
from wtforms.fields.numeric import IntegerField
from wtforms.fields.numeric import IntegerRangeField
from wtforms.fields.simple import BooleanField
from wtforms.fields.simple import ColorField
from wtforms.fields.simple import EmailField
from wtforms.fields.simple import FileField
from wtforms.fields.simple import HiddenField
from wtforms.fields.simple import MultipleFileField
from wtforms.fields.simple import PasswordField
from wtforms.fields.simple import SearchField
from wtforms.fields.simple import StringField
from wtforms.fields.simple import SubmitField
from wtforms.fields.simple import TelField
from wtforms.fields.simple import TextAreaField
from wtforms.fields.simple import URLField
from wtforms.form import Form
from wtforms.validators import ValidationError

__version__ = "3.1.2"

__all__ = [
"validators",
"widgets",
"Form",
"ValidationError",
"SelectField",
"SelectMultipleField",
"RadioField",
"Field",
"Flags",
"Label",
"DateTimeField",
"DateField",
"TimeField",
"MonthField",
"DateTimeLocalField",
"WeekField",
"FormField",
"FieldList",
"IntegerField",
"DecimalField",
"FloatField",
"IntegerRangeField",
"DecimalRangeField",
"BooleanField",
"TextAreaField",
"PasswordField",
"FileField",
"MultipleFileField",
"HiddenField",
"SearchField",
"SubmitField",
"StringField",
"TelField",
"URLField",
"EmailField",
"ColorField",
]
1 change: 1 addition & 0 deletions src/wtforms/csrf/session.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
validates with the hmac of the random value + expiration time, and the
expiration time is not passed, the CSRF validation will pass.
"""

import hmac
import os
from datetime import datetime
Expand Down
72 changes: 65 additions & 7 deletions src/wtforms/fields/__init__.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,69 @@
from wtforms.fields.choices import *
from wtforms.fields.choices import SelectFieldBase
from wtforms.fields.choices import RadioField
from wtforms.fields.choices import SelectField
from wtforms.fields.choices import SelectMultipleField
from wtforms.fields.core import Field
from wtforms.fields.core import Flags
from wtforms.fields.core import Label
from wtforms.fields.datetime import *
from wtforms.fields.form import *
from wtforms.fields.list import *
from wtforms.fields.numeric import *
from wtforms.fields.simple import *
from wtforms.fields.datetime import DateField
from wtforms.fields.datetime import DateTimeField
from wtforms.fields.datetime import DateTimeLocalField
from wtforms.fields.datetime import MonthField
from wtforms.fields.datetime import TimeField
from wtforms.fields.datetime import WeekField
from wtforms.fields.form import FormField
from wtforms.fields.list import FieldList
from wtforms.fields.numeric import DecimalField
from wtforms.fields.numeric import DecimalRangeField
from wtforms.fields.numeric import FloatField
from wtforms.fields.numeric import IntegerField
from wtforms.fields.numeric import IntegerRangeField
from wtforms.fields.simple import BooleanField
from wtforms.fields.simple import ColorField
from wtforms.fields.simple import EmailField
from wtforms.fields.simple import FileField
from wtforms.fields.simple import HiddenField
from wtforms.fields.simple import MultipleFileField
from wtforms.fields.simple import PasswordField
from wtforms.fields.simple import SearchField
from wtforms.fields.simple import StringField
from wtforms.fields.simple import SubmitField
from wtforms.fields.simple import TelField
from wtforms.fields.simple import TextAreaField
from wtforms.fields.simple import URLField
from wtforms.utils import unset_value as _unset_value

__all__ = [
"Field",
"Flags",
"Label",
"SelectField",
"SelectMultipleField",
"RadioField",
"DateTimeField",
"DateField",
"TimeField",
"MonthField",
"DateTimeLocalField",
"WeekField",
"FormField",
"IntegerField",
"DecimalField",
"FloatField",
"IntegerRangeField",
"DecimalRangeField",
"BooleanField",
"TextAreaField",
"PasswordField",
"FileField",
"MultipleFileField",
"HiddenField",
"SearchField",
"SubmitField",
"StringField",
"TelField",
"URLField",
"EmailField",
"ColorField",
"FieldList",
"_unset_value",
]
17 changes: 10 additions & 7 deletions src/wtforms/fields/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -181,14 +181,14 @@ def check_validators(cls, validators):
for validator in validators:
if not callable(validator):
raise TypeError(
"{} is not a valid validator because it is not "
"callable".format(validator)
f"{validator} is not a valid validator because it is not "
"callable"
)

if inspect.isclass(validator):
raise TypeError(
"{} is not a valid validator because it is a class, "
"it should be an instance".format(validator)
f"{validator} is not a valid validator because it is a class, "
"it should be an instance"
)

def gettext(self, string):
Expand Down Expand Up @@ -399,8 +399,10 @@ def bind(self, form, name, prefix="", translations=None, **kwargs):
return self.field_class(*self.args, **kw)

def __repr__(self):
return "<UnboundField({}, {!r}, {!r})>".format(
self.field_class.__name__, self.args, self.kwargs
return (
"<UnboundField("
f"{self.field_class.__name__}, {self.args!r}, {self.kwargs!r}"
")>"
)


Expand All @@ -425,7 +427,8 @@ def __repr__(self):
for name in dir(self)
if not name.startswith("_")
)
return "<wtforms.fields.Flags: {%s}>" % ", ".join(flags)
flags = ", ".join(flags)
return f"<wtforms.fields.Flags: {{{flags}}}>"


class Label:
Expand Down
3 changes: 2 additions & 1 deletion src/wtforms/fields/form.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from wtforms.utils import unset_value

from .. import widgets
from .core import Field
from wtforms.utils import unset_value

__all__ = ("FormField",)

Expand Down
3 changes: 2 additions & 1 deletion src/wtforms/fields/list.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
import itertools

from wtforms.utils import unset_value

from .. import widgets
from .core import Field
from .core import UnboundField
from wtforms.utils import unset_value

__all__ = ("FieldList",)

Expand Down
2 changes: 1 addition & 1 deletion src/wtforms/form.py
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ def process(self, formdata=None, obj=None, data=None, extra_filters=None, **kwar
for name, field in self._fields.items():
field_extra_filters = filters.get(name, [])

inline_filter = getattr(self, "filter_%s" % name, None)
inline_filter = getattr(self, f"filter_{name}", None)
if inline_filter is not None:
field_extra_filters.append(inline_filter)

Expand Down
1 change: 0 additions & 1 deletion src/wtforms/utils.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import re


# https://docs.python.org/3/library/datetime.html#technical-detail (see NOTE #9)
_DATETIME_STRIP_ZERO_PADDING_FORMATS_RE = re.compile(
"%-["
Expand Down
56 changes: 55 additions & 1 deletion src/wtforms/widgets/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,57 @@
from wtforms.widgets.core import *
from wtforms.widgets.core import CheckboxInput
from wtforms.widgets.core import ColorInput
from wtforms.widgets.core import DateInput
from wtforms.widgets.core import DateTimeInput
from wtforms.widgets.core import DateTimeLocalInput
from wtforms.widgets.core import EmailInput
from wtforms.widgets.core import FileInput
from wtforms.widgets.core import HiddenInput
from wtforms.widgets.core import html_params
from wtforms.widgets.core import Input
from wtforms.widgets.core import ListWidget
from wtforms.widgets.core import MonthInput
from wtforms.widgets.core import NumberInput
from wtforms.widgets.core import Option
from wtforms.widgets.core import PasswordInput
from wtforms.widgets.core import RadioInput
from wtforms.widgets.core import RangeInput
from wtforms.widgets.core import SearchInput
from wtforms.widgets.core import Select
from wtforms.widgets.core import SubmitInput
from wtforms.widgets.core import TableWidget
from wtforms.widgets.core import TelInput
from wtforms.widgets.core import TextArea
from wtforms.widgets.core import TextInput
from wtforms.widgets.core import TimeInput
from wtforms.widgets.core import URLInput
from wtforms.widgets.core import WeekInput

__all__ = [
"CheckboxInput",
"ColorInput",
"DateInput",
"DateTimeInput",
"DateTimeLocalInput",
"EmailInput",
"FileInput",
"HiddenInput",
"ListWidget",
"MonthInput",
"NumberInput",
"Option",
"PasswordInput",
"RadioInput",
"RangeInput",
"SearchInput",
"Select",
"SubmitInput",
"TableWidget",
"TextArea",
"TextInput",
"TelInput",
"TimeInput",
"URLInput",
"WeekInput",
"html_params",
"Input",
]
Loading

0 comments on commit e73f930

Please sign in to comment.