mirror of
https://github.com/spiral-project/ihatemoney.git
synced 2025-04-28 01:12:38 +02:00
Add isort support. (#561)
This commit is contained in:
parent
f0b40578ad
commit
299c64a48c
16 changed files with 113 additions and 107 deletions
13
.isort.cfg
Normal file
13
.isort.cfg
Normal 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/**
|
12
Makefile
12
Makefile
|
@ -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
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
# coding: utf8
|
||||
import sys, os
|
||||
import os
|
||||
import sys
|
||||
|
||||
templates_path = ["_templates"]
|
||||
source_suffix = ".rst"
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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
|
||||
|
||||
|
||||
|
|
|
@ -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(
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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."""
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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__)
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
4
tox.ini
4
tox.ini
|
@ -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]
|
||||
|
|
Loading…
Reference in a new issue