Add isort support. (#561)

This commit is contained in:
Rémy HUBSCHER 2020-04-21 13:59:41 +02:00 committed by GitHub
parent f0b40578ad
commit 299c64a48c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
16 changed files with 113 additions and 107 deletions

13
.isort.cfg Normal file
View file

@ -0,0 +1,13 @@
[settings]
# Needed for black compatibility
multi_line_output=3
include_trailing_comma=True
force_grid_wrap=0
line_length=88
combine_as_imports=True
# If set, imports will be sorted within their section independent to the import_type.
force_sort_within_sections=True
# skip
skip_glob=.local,**/migrations/**,**/node_modules/**,**/node-forge/**

View file

@ -41,11 +41,19 @@ serve: install ## Run the ihatemoney server
$(PYTHON) -m ihatemoney.manage runserver
.PHONY: test
test: $(DEV_STAMP) ## Run the tests
test: install-dev ## Run the tests
$(VENV)/bin/tox
.PHONY: black
black: install-dev ## Run the tests
$(VENV)/bin/black --target-version=py34 .
.PHONY: isort
isort: install-dev ## Run the tests
$(VENV)/bin/isort -rc .
.PHONY: release
release: $(DEV_STAMP) ## Release a new version (see https://ihatemoney.readthedocs.io/en/latest/contributing.html#how-to-release)
release: install-dev ## Release a new version (see https://ihatemoney.readthedocs.io/en/latest/contributing.html#how-to-release)
$(VENV)/bin/fullrelease
.PHONY: compress-assets

View file

@ -1,5 +1,6 @@
# coding: utf8
import sys, os
import os
import sys
templates_path = ["_templates"]
source_suffix = ".rst"

View file

@ -1,12 +1,13 @@
# coding: utf8
from flask import request, current_app
from functools import wraps
from flask import current_app, request
from flask_restful import Resource, abort
from werkzeug.security import check_password_hash
from wtforms.fields.core import BooleanField
from ihatemoney.models import db, Project, Person, Bill
from ihatemoney.forms import ProjectForm, EditProjectForm, MemberForm, get_billform_for
from werkzeug.security import check_password_hash
from functools import wraps
from ihatemoney.forms import EditProjectForm, MemberForm, ProjectForm, get_billform_for
from ihatemoney.models import Bill, Person, Project, db
def need_auth(f):

View file

@ -1,17 +1,17 @@
# coding: utf8
from flask import Blueprint
from flask_restful import Api
from flask_cors import CORS
from flask_restful import Api
from ihatemoney.api.common import (
ProjectsHandler,
ProjectHandler,
TokenHandler,
MemberHandler,
ProjectStatsHandler,
MembersHandler,
BillHandler,
BillsHandler,
MemberHandler,
MembersHandler,
ProjectHandler,
ProjectsHandler,
ProjectStatsHandler,
TokenHandler,
)
api = Blueprint("api", __name__, url_prefix="/api")

View file

@ -1,29 +1,27 @@
from datetime import datetime
from re import match
import email_validator
from flask import request
from flask_babel import lazy_gettext as _
from flask_wtf.file import FileAllowed, FileField, FileRequired
from flask_wtf.form import FlaskForm
from jinja2 import Markup
from werkzeug.security import check_password_hash, generate_password_hash
from wtforms.fields.core import SelectField, SelectMultipleField
from wtforms.fields.html5 import DateField, DecimalField, URLField
from wtforms.fields.simple import PasswordField, SubmitField, StringField, BooleanField
from wtforms.fields.simple import BooleanField, PasswordField, StringField, SubmitField
from wtforms.validators import (
Email,
DataRequired,
ValidationError,
Email,
EqualTo,
NumberRange,
Optional,
ValidationError,
)
from flask_wtf.file import FileField, FileAllowed, FileRequired
from flask_babel import lazy_gettext as _
from flask import request
from werkzeug.security import generate_password_hash, check_password_hash
from datetime import datetime
from re import match
from jinja2 import Markup
import email_validator
from ihatemoney.models import Project, Person, LoggingMode
from ihatemoney.utils import slugify, eval_arithmetic_expression
from ihatemoney.models import LoggingMode, Person, Project
from ihatemoney.utils import eval_arithmetic_expression, slugify
def strip_filter(string):

View file

@ -1,15 +1,7 @@
from flask_babel import gettext as _
from sqlalchemy_continuum import (
Operation,
parent_class,
)
from sqlalchemy_continuum import Operation, parent_class
from ihatemoney.models import (
PersonVersion,
ProjectVersion,
BillVersion,
Person,
)
from ihatemoney.models import BillVersion, Person, PersonVersion, ProjectVersion
def get_history_queries(project):

View file

@ -1,16 +1,16 @@
#!/usr/bin/env python
import getpass
import os
import random
import sys
import getpass
from flask_script import Manager, Command, Option
from flask_migrate import Migrate, MigrateCommand
from flask_script import Command, Manager, Option
from werkzeug.security import generate_password_hash
from ihatemoney.models import Project, db
from ihatemoney.run import create_app
from ihatemoney.models import db, Project
from ihatemoney.utils import create_jinja_env

View file

@ -1,33 +1,29 @@
from collections import defaultdict
from datetime import datetime
import sqlalchemy
from flask_sqlalchemy import SQLAlchemy, BaseQuery
from flask import g, current_app
from debts import settle
from sqlalchemy import orm
from sqlalchemy.sql import func
from flask import current_app, g
from flask_sqlalchemy import BaseQuery, SQLAlchemy
from itsdangerous import (
TimedJSONWebSignatureSerializer,
URLSafeSerializer,
BadSignature,
SignatureExpired,
TimedJSONWebSignatureSerializer,
URLSafeSerializer,
)
from sqlalchemy_continuum import make_versioned
import sqlalchemy
from sqlalchemy import orm
from sqlalchemy.sql import func
from sqlalchemy_continuum import make_versioned, version_class
from sqlalchemy_continuum.plugins import FlaskPlugin
from sqlalchemy_continuum import version_class
from ihatemoney.patch_sqlalchemy_continuum import PatchedBuilder
from ihatemoney.versioning import (
LoggingMode,
ConditionalVersioningManager,
version_privacy_predicate,
LoggingMode,
get_ip_if_allowed,
version_privacy_predicate,
)
make_versioned(
user_cls=None,
manager=ConditionalVersioningManager(

View file

@ -38,7 +38,7 @@ from sqlalchemy_continuum import Operation
from sqlalchemy_continuum.builder import Builder
from sqlalchemy_continuum.expression_reflector import VersionExpressionReflector
from sqlalchemy_continuum.relationship_builder import RelationshipBuilder
from sqlalchemy_continuum.utils import option, adapt_columns
from sqlalchemy_continuum.utils import adapt_columns, option
class PatchedRelationShipBuilder(RelationshipBuilder):

View file

@ -2,12 +2,13 @@ import os
import os.path
import warnings
from flask import Flask, g, request, session, render_template
from flask import Flask, g, render_template, request, session
from flask_babel import Babel
from flask_mail import Mail
from flask_migrate import Migrate, upgrade, stamp
from flask_migrate import Migrate, stamp, upgrade
from werkzeug.middleware.proxy_fix import ProxyFix
from ihatemoney import default_settings
from ihatemoney.api.v1 import api as apiv1
from ihatemoney.models import db
from ihatemoney.utils import (
@ -19,8 +20,6 @@ from ihatemoney.utils import (
)
from ihatemoney.web import main as web_interface
from ihatemoney import default_settings
def setup_database(app):
"""Prepare the database. Create tables, run migrations etc."""

View file

@ -1,26 +1,23 @@
# coding: utf8
import base64
from collections import defaultdict
import datetime
import io
import json
import os
from time import sleep
import unittest
from unittest.mock import patch
import datetime
import os
import io
import json
import base64
from collections import defaultdict
from time import sleep
from werkzeug.security import generate_password_hash, check_password_hash
from flask import session
from flask_testing import TestCase
from ihatemoney.run import create_app, db, load_configuration
from ihatemoney.manage import GenerateConfig, GeneratePasswordHash, DeleteProject
from ihatemoney import models, history
from ihatemoney.versioning import LoggingMode
from ihatemoney import utils
from sqlalchemy import orm
from werkzeug.security import check_password_hash, generate_password_hash
from ihatemoney import history, models, utils
from ihatemoney.manage import DeleteProject, GenerateConfig, GeneratePasswordHash
from ihatemoney.run import create_app, db, load_configuration
from ihatemoney.versioning import LoggingMode
# Unset configuration file env var if previously set
os.environ.pop("IHATEMONEY_SETTINGS_FILE_PATH", None)

View file

@ -1,19 +1,17 @@
import re
import os
import ast
import operator
from enum import Enum
from io import BytesIO, StringIO
import jinja2
from json import dumps, JSONEncoder
from flask import redirect, current_app
from babel import Locale
from werkzeug.routing import HTTPException, RoutingException
from datetime import datetime, timedelta
import csv
from datetime import datetime, timedelta
from enum import Enum
from io import BytesIO, StringIO
from json import JSONEncoder, dumps
import operator
import os
import re
from babel import Locale
from flask import current_app, redirect
import jinja2
from werkzeug.routing import HTTPException, RoutingException
def slugify(value):

View file

@ -8,25 +8,27 @@ Basically, this blueprint takes care of the authentication and provides
some shortcuts to make your life better when coding (see `pull_project`
and `add_project_id` for a quick overview)
"""
from datetime import datetime
from functools import wraps
import json
import os
from functools import wraps
from smtplib import SMTPRecipientsRefused
from dateutil.parser import parse
from dateutil.relativedelta import relativedelta
from flask import (
abort,
Blueprint,
abort,
current_app,
flash,
g,
redirect,
render_template,
request,
session,
url_for,
send_file,
send_from_directory,
session,
url_for,
)
from flask_babel import get_locale, gettext as _
from flask_mail import Message
@ -42,23 +44,21 @@ from ihatemoney.forms import (
InviteForm,
MemberForm,
PasswordReminder,
ResetPasswordForm,
ProjectForm,
get_billform_for,
ResetPasswordForm,
UploadForm,
get_billform_for,
)
from ihatemoney.history import get_history_queries, get_history
from ihatemoney.models import db, Project, Person, Bill, LoggingMode
from ihatemoney.history import get_history, get_history_queries
from ihatemoney.models import Bill, LoggingMode, Person, Project, db
from ihatemoney.utils import (
Redirect303,
list_of_dicts2json,
list_of_dicts2csv,
LoginThrottler,
Redirect303,
get_members,
list_of_dicts2csv,
list_of_dicts2json,
same_bill,
)
from datetime import datetime
from dateutil.relativedelta import relativedelta
main = Blueprint("main", __name__)

View file

@ -44,6 +44,7 @@ dev =
black==19.10b0 ; python_version >= '3.6'
flake8==3.7.9
Flask-Testing==0.8.0
isort==4.3.21
pytest==5.4.1
tox==3.14.6
zest.releaser==6.20.1

View file

@ -21,7 +21,9 @@ deps =
changedir = {toxinidir}
[testenv:black]
commands = black --check --target-version=py34 .
commands =
black --check --target-version=py34 .
isort -c -rc .
changedir = {toxinidir}
[testenv:flake8]