changeset dcc8d636faeb in trytond:default
details: https://hg.tryton.org/trytond?cmd=changeset&node=dcc8d636faeb
description:
Follow isort formatting
issue10928
diffstat:
.isort.cfg | 3 +
bin/trytond | 4 +-
bin/trytond-admin | 2 +-
bin/trytond-console | 2 +-
bin/trytond-cron | 4 +-
bin/trytond-stat | 1 -
bin/trytond-worker | 4 +-
setup.py | 7 ++-
trytond/admin.py | 12 +++---
trytond/application.py | 2 +-
trytond/backend/__init__.py | 1 +
trytond/backend/database.py | 1 +
trytond/backend/postgresql/database.py | 24 ++++++-------
trytond/backend/postgresql/table.py | 6 +-
trytond/backend/sqlite/database.py | 9 +++-
trytond/backend/sqlite/table.py | 5 +-
trytond/bus.py | 15 ++++----
trytond/cache.py | 2 +-
trytond/commandline.py | 2 +-
trytond/config.py | 3 +-
trytond/convert.py | 7 +--
trytond/cron.py | 2 +-
trytond/filestore.py | 2 +-
trytond/i18n.py | 2 +-
trytond/ir/__init__.py | 29 +++--------------
trytond/ir/action.py | 11 +++---
trytond/ir/attachment.py | 3 +-
trytond/ir/avatar.py | 4 +-
trytond/ir/calendar_.py | 2 +-
trytond/ir/configuration.py | 2 +-
trytond/ir/cron.py | 5 +-
trytond/ir/email_.py | 12 +++---
trytond/ir/error.py | 4 +-
trytond/ir/exceptions.py | 14 +++----
trytond/ir/export.py | 2 +-
trytond/ir/lang.py | 8 ++--
trytond/ir/message.py | 2 +-
trytond/ir/model.py | 16 ++++----
trytond/ir/module.py | 12 +++---
trytond/ir/note.py | 3 +-
trytond/ir/queue.py | 2 +-
trytond/ir/routes.py | 7 ++-
trytond/ir/rule.py | 2 +-
trytond/ir/sequence.py | 10 +++---
trytond/ir/session.py | 3 +-
trytond/ir/translation.py | 21 ++++++------
trytond/ir/trigger.py | 6 +-
trytond/ir/ui/__init__.py | 4 +-
trytond/ir/ui/icon.py | 4 +-
trytond/ir/ui/menu.py | 6 +-
trytond/ir/ui/view.py | 14 ++++----
trytond/model/__init__.py | 28 ++++++++--------
trytond/model/active.py | 5 ++-
trytond/model/avatar.py | 2 +-
trytond/model/dictschema.py | 2 +-
trytond/model/exceptions.py | 9 +++--
trytond/model/fields/__init__.py | 30 +++++++++---------
trytond/model/fields/binary.py | 1 +
trytond/model/fields/char.py | 3 +-
trytond/model/fields/date.py | 3 +-
trytond/model/fields/dict.py | 7 ++-
trytond/model/fields/field.py | 9 +++--
trytond/model/fields/float.py | 3 +-
trytond/model/fields/function.py | 2 +-
trytond/model/fields/many2many.py | 8 +++-
trytond/model/fields/many2one.py | 8 +++-
trytond/model/fields/multiselection.py | 3 +-
trytond/model/fields/numeric.py | 4 +-
trytond/model/fields/one2many.py | 9 +++-
trytond/model/fields/reference.py | 10 +++--
trytond/model/fields/selection.py | 1 +
trytond/model/fields/text.py | 6 +-
trytond/model/model.py | 6 +-
trytond/model/modelsingleton.py | 3 +-
trytond/model/modelsql.py | 34 +++++++++++---------
trytond/model/modelstorage.py | 32 +++++++++---------
trytond/model/modelview.py | 16 +++++----
trytond/model/multivalue.py | 3 +-
trytond/model/tree.py | 1 +
trytond/model/union.py | 2 +-
trytond/modules/__init__.py | 12 +++---
trytond/pool.py | 8 +++-
trytond/protocols/dispatcher.py | 18 +++++-----
trytond/protocols/jsonrpc.py | 14 ++++----
trytond/protocols/wrappers.py | 15 +++++---
trytond/protocols/xmlrpc.py | 15 ++++----
trytond/pyson.py | 5 +-
trytond/report/report.py | 17 +++++----
trytond/res/__init__.py | 5 +--
trytond/res/exceptions.py | 2 +-
trytond/res/group.py | 4 +-
trytond/res/ir.py | 2 +-
trytond/res/routes.py | 8 ++--
trytond/res/user.py | 37 +++++++++++-----------
trytond/security.py | 6 +-
trytond/sendmail.py | 2 +-
trytond/tests/__init__.py | 49 +++++------------------------
trytond/tests/export_data.py | 2 +-
trytond/tests/field_context.py | 2 +-
trytond/tests/field_dict.py | 2 +-
trytond/tests/field_many2one.py | 2 +-
trytond/tests/model.py | 4 +-
trytond/tests/modelsql.py | 2 +-
trytond/tests/modelstorage.py | 6 ++-
trytond/tests/modelview.py | 4 +-
trytond/tests/mptt.py | 2 +-
trytond/tests/path.py | 2 +-
trytond/tests/resource.py | 3 +-
trytond/tests/run-tests.py | 6 ++-
trytond/tests/test_access.py | 2 +-
trytond/tests/test_backend.py | 3 +-
trytond/tests/test_bus.py | 6 +-
trytond/tests/test_cache.py | 10 +++---
trytond/tests/test_copy.py | 2 +-
trytond/tests/test_descriptors.py | 2 +-
trytond/tests/test_exportdata.py | 5 +-
trytond/tests/test_field_binary.py | 2 +-
trytond/tests/test_field_char.py | 6 +-
trytond/tests/test_field_context.py | 2 +-
trytond/tests/test_field_dict.py | 4 +-
trytond/tests/test_field_float.py | 2 +-
trytond/tests/test_field_integer.py | 2 +-
trytond/tests/test_field_multiselection.py | 2 +-
trytond/tests/test_field_numeric.py | 2 +-
trytond/tests/test_field_one2one.py | 2 +-
trytond/tests/test_field_selection.py | 2 +-
trytond/tests/test_history.py | 6 +-
trytond/tests/test_i18n.py | 3 +-
trytond/tests/test_importdata.py | 6 +-
trytond/tests/test_ir.py | 3 +-
trytond/tests/test_mixins.py | 8 ++--
trytond/tests/test_model.py | 3 +-
trytond/tests/test_modelsingleton.py | 3 +-
trytond/tests/test_modelsql.py | 8 ++--
trytond/tests/test_modelstorage.py | 4 +-
trytond/tests/test_modelview.py | 6 +-
trytond/tests/test_mptt.py | 2 +-
trytond/tests/test_multivalue.py | 2 +-
trytond/tests/test_order.py | 2 +-
trytond/tests/test_protocols.py | 8 ++--
trytond/tests/test_pyson.py | 4 +-
trytond/tests/test_report.py | 4 +-
trytond/tests/test_resource.py | 2 +-
trytond/tests/test_routes.py | 2 +-
trytond/tests/test_rpc.py | 4 +-
trytond/tests/test_sendmail.py | 7 ++-
trytond/tests/test_sequence.py | 7 ++-
trytond/tests/test_tools.py | 18 +++++-----
trytond/tests/test_transaction.py | 2 +-
trytond/tests/test_tree.py | 2 +-
trytond/tests/test_trigger.py | 9 ++---
trytond/tests/test_tryton.py | 18 +++++-----
trytond/tests/test_union.py | 2 +-
trytond/tests/test_user.py | 6 +-
trytond/tests/test_wizard.py | 2 +-
trytond/tests/test_workflow.py | 2 +-
trytond/tests/test_wsgi.py | 5 +-
trytond/tests/tools.py | 5 +-
trytond/tests/tree.py | 2 +-
trytond/tests/wizard.py | 6 +-
trytond/tools/__init__.py | 11 +++---
trytond/tools/decimal_.py | 2 +-
trytond/tools/domain_inversion.py | 6 +-
trytond/tools/multivalue.py | 2 +-
trytond/tools/string_.py | 3 +-
trytond/transaction.py | 3 +-
trytond/url.py | 2 +-
trytond/wizard/__init__.py | 5 +-
trytond/wizard/wizard.py | 10 +++---
trytond/worker.py | 3 +-
trytond/wsgi.py | 10 +++--
171 files changed, 561 insertions(+), 561 deletions(-)
diffs (3489 lines):
diff -r 8cd6dd7196eb -r dcc8d636faeb .isort.cfg
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/.isort.cfg Sat Dec 11 17:58:45 2021 +0100
@@ -0,0 +1,3 @@
+[settings]
+multi_line_output=4
+known_first_party=trytond
diff -r 8cd6dd7196eb -r dcc8d636faeb bin/trytond
--- a/bin/trytond Sun Nov 28 14:31:45 2021 +0100
+++ b/bin/trytond Sat Dec 11 17:58:45 2021 +0100
@@ -25,10 +25,10 @@
from gevent import monkey
monkey.patch_all()
+from trytond.modules import get_module_info, get_module_list
+from trytond.pool import Pool
# Import trytond things after it is configured
from trytond.wsgi import app
-from trytond.pool import Pool
-from trytond.modules import get_module_list, get_module_info
with commandline.pidfile(options):
Pool.start()
diff -r 8cd6dd7196eb -r dcc8d636faeb bin/trytond-admin
--- a/bin/trytond-admin Sun Nov 28 14:31:45 2021 +0100
+++ b/bin/trytond-admin Sat Dec 11 17:58:45 2021 +0100
@@ -1,8 +1,8 @@
#!/usr/bin/env python3
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
+import os
import sys
-import os
DIR = os.path.abspath(os.path.normpath(os.path.join(__file__,
'..', '..', 'trytond')))
diff -r 8cd6dd7196eb -r dcc8d636faeb bin/trytond-console
--- a/bin/trytond-console Sun Nov 28 14:31:45 2021 +0100
+++ b/bin/trytond-console Sat Dec 11 17:58:45 2021 +0100
@@ -1,8 +1,8 @@
#!/usr/bin/env python3
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
+import os
import sys
-import os
DIR = os.path.abspath(os.path.normpath(os.path.join(__file__,
'..', '..', 'trytond')))
diff -r 8cd6dd7196eb -r dcc8d636faeb bin/trytond-cron
--- a/bin/trytond-cron Sun Nov 28 14:31:45 2021 +0100
+++ b/bin/trytond-cron Sat Dec 11 17:58:45 2021 +0100
@@ -1,8 +1,8 @@
#!/usr/bin/env python3
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
+import os
import sys
-import os
DIR = os.path.abspath(os.path.normpath(os.path.join(__file__,
'..', '..', 'trytond')))
@@ -17,9 +17,9 @@
config.update_etc(options.configfile)
commandline.config_log(options)
+import trytond.cron as cron
# Import after application is configured
from trytond.pool import Pool
-import trytond.cron as cron
with commandline.pidfile(options):
Pool.start()
diff -r 8cd6dd7196eb -r dcc8d636faeb bin/trytond-stat
--- a/bin/trytond-stat Sun Nov 28 14:31:45 2021 +0100
+++ b/bin/trytond-stat Sat Dec 11 17:58:45 2021 +0100
@@ -6,7 +6,6 @@
import math
import os
import sys
-
from collections import defaultdict
DIR = os.path.abspath(os.path.normpath(os.path.join(__file__,
diff -r 8cd6dd7196eb -r dcc8d636faeb bin/trytond-worker
--- a/bin/trytond-worker Sun Nov 28 14:31:45 2021 +0100
+++ b/bin/trytond-worker Sat Dec 11 17:58:45 2021 +0100
@@ -1,8 +1,8 @@
#!/usr/bin/env python3
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
+import os
import sys
-import os
DIR = os.path.abspath(os.path.normpath(os.path.join(__file__,
'..', '..', 'trytond')))
@@ -17,9 +17,9 @@
config.update_etc(options.configfile)
commandline.config_log(options)
+import trytond.worker as worker
# Import after application is configured
from trytond.pool import Pool
-import trytond.worker as worker
with commandline.pidfile(options):
Pool.start()
diff -r 8cd6dd7196eb -r dcc8d636faeb setup.py
--- a/setup.py Sun Nov 28 14:31:45 2021 +0100
+++ b/setup.py Sat Dec 11 17:58:45 2021 +0100
@@ -2,14 +2,15 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
-from setuptools import setup, find_packages, Command
import glob
+import io
import os
+import platform
import re
-import io
-import platform
import subprocess
+from setuptools import Command, find_packages, setup
+
def read(fname):
return io.open(
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/admin.py
--- a/trytond/admin.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/admin.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,18 +1,18 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
-import sys
+import logging
import os
-import logging
import random
+import sys
from getpass import getpass
-from sql import Table, Literal
+from sql import Literal, Table
from trytond import backend
-from trytond.transaction import Transaction
+from trytond.config import config
from trytond.pool import Pool
-from trytond.config import config
from trytond.sendmail import send_test_email
+from trytond.transaction import Transaction
__all__ = ['run']
logger = logging.getLogger(__name__)
@@ -128,7 +128,7 @@
def validate(models, percentage=100):
- from trytond.model import ModelStorage, ModelSingleton
+ from trytond.model import ModelSingleton, ModelStorage
from trytond.model.exceptions import ValidationError
logger = logging.getLogger('validate')
pool = Pool()
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/application.py
--- a/trytond/application.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/application.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,8 +1,8 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
import csv
+import logging.config
import os
-import logging.config
import threading
from io import StringIO
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/backend/__init__.py
--- a/trytond/backend/__init__.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/backend/__init__.py Sat Dec 11 17:58:45 2021 +0100
@@ -2,6 +2,7 @@
# this repository contains the full copyright notices and license terms.
import importlib
import urllib.parse
+
try:
import pkg_resources
except ImportError:
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/backend/database.py
--- a/trytond/backend/database.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/backend/database.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,6 +1,7 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from collections import namedtuple
+
from sql import For
DatabaseIntegrityError = None
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/backend/postgresql/database.py
--- a/trytond/backend/postgresql/database.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/backend/postgresql/database.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,11 +1,11 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
-from collections import defaultdict
-import time
+import json
import logging
import os
-import json
+import time
import warnings
+from collections import defaultdict
from datetime import datetime
from decimal import Decimal
from itertools import chain, repeat
@@ -16,24 +16,22 @@
compat.register()
except ImportError:
pass
-from psycopg2 import connect, Binary
+from psycopg2 import Binary, connect
+from psycopg2.extensions import (
+ ISOLATION_LEVEL_AUTOCOMMIT, ISOLATION_LEVEL_REPEATABLE_READ, UNICODE, AsIs,
+ cursor, register_adapter, register_type)
+from psycopg2.pool import PoolError, ThreadedConnectionPool
from psycopg2.sql import SQL, Identifier
-from psycopg2.pool import ThreadedConnectionPool, PoolError
-from psycopg2.extensions import cursor
-from psycopg2.extensions import ISOLATION_LEVEL_REPEATABLE_READ
-from psycopg2.extensions import ISOLATION_LEVEL_AUTOCOMMIT
-from psycopg2.extensions import register_type, register_adapter
-from psycopg2.extensions import UNICODE, AsIs
+
try:
- from psycopg2.extensions import PYDATE, PYDATETIME, PYTIME, PYINTERVAL
+ from psycopg2.extensions import PYDATE, PYDATETIME, PYINTERVAL, PYTIME
except ImportError:
PYDATE, PYDATETIME, PYTIME, PYINTERVAL = None, None, None, None
from psycopg2 import IntegrityError as DatabaseIntegrityError
from psycopg2 import OperationalError as DatabaseOperationalError
from psycopg2 import ProgrammingError
from psycopg2.extras import register_default_json, register_default_jsonb
-
-from sql import Flavor, Cast, For, Table
+from sql import Cast, Flavor, For, Table
from sql.conditionals import Coalesce
from sql.functions import Function
from sql.operators import BinaryOperator, Concat
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/backend/postgresql/table.py
--- a/trytond/backend/postgresql/table.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/backend/postgresql/table.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,12 +1,12 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
+import logging
import re
-import logging
-from psycopg2.sql import SQL, Identifier, Composed
+from psycopg2.sql import SQL, Composed, Identifier
+from trytond.backend.table import TableHandlerInterface
from trytond.transaction import Transaction
-from trytond.backend.table import TableHandlerInterface
__all__ = ['TableHandler']
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/backend/sqlite/database.py
--- a/trytond/backend/sqlite/database.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/backend/sqlite/database.py Sat Dec 11 17:58:45 2021 +0100
@@ -11,6 +11,7 @@
import warnings
from decimal import Decimal
from weakref import WeakKeyDictionary
+
from werkzeug.security import safe_join
try:
@@ -21,10 +22,12 @@
import sqlite3 as sqlite
from sqlite3 import IntegrityError as DatabaseIntegrityError
from sqlite3 import OperationalError as DatabaseOperationalError
-from sql import Flavor, Table, Query, Expression, Literal, Null
+
+from sql import Expression, Flavor, Literal, Null, Query, Table
from sql.conditionals import NullIf
-from sql.functions import (Function, Extract, Position, Substring,
- Overlay, CharLength, CurrentTimestamp, Trim)
+from sql.functions import (
+ CharLength, CurrentTimestamp, Extract, Function, Overlay, Position,
+ Substring, Trim)
from trytond.backend.database import DatabaseInterface, SQLType
from trytond.config import config, parse_uri
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/backend/sqlite/table.py
--- a/trytond/backend/sqlite/table.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/backend/sqlite/table.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,12 +1,13 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
-from trytond.transaction import Transaction
-from trytond.backend.table import TableHandlerInterface
import logging
import re
import warnings
+from trytond.backend.table import TableHandlerInterface
+from trytond.transaction import Transaction
+
from .database import sqlite
__all__ = ['TableHandler']
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/bus.py
--- a/trytond/bus.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/bus.py Sat Dec 11 17:58:45 2021 +0100
@@ -9,24 +9,25 @@
import threading
import time
import uuid
+
try:
from http import HTTPStatus
except ImportError:
from http import client as HTTPStatus
+
from urllib.parse import urljoin
+from werkzeug.exceptions import BadRequest
+from werkzeug.exceptions import NotImplemented as NotImplementedException
from werkzeug.utils import redirect
from werkzeug.wrappers import Response
-from werkzeug.exceptions import (
- NotImplemented as NotImplementedException, BadRequest)
from trytond import backend
-from trytond.wsgi import app
+from trytond.config import config
+from trytond.protocols.jsonrpc import JSONDecoder, JSONEncoder
+from trytond.tools import resolve
from trytond.transaction import Transaction
-from trytond.protocols.jsonrpc import JSONEncoder, JSONDecoder
-from trytond.config import config
-from trytond.tools import resolve
-
+from trytond.wsgi import app
logger = logging.getLogger(__name__)
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/cache.py
--- a/trytond/cache.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/cache.py Sat Dec 11 17:58:45 2021 +0100
@@ -17,8 +17,8 @@
from trytond import backend
from trytond.config import config
from trytond.pool import Pool
+from trytond.tools import grouped_slice, resolve
from trytond.transaction import Transaction
-from trytond.tools import resolve, grouped_slice
__all__ = ['BaseCache', 'Cache', 'LRUDict', 'LRUDictTransaction']
_clear_timeout = config.getint('cache', 'clean_timeout', default=5 * 60)
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/commandline.py
--- a/trytond/commandline.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/commandline.py Sat Dec 11 17:58:45 2021 +0100
@@ -2,10 +2,10 @@
# this repository contains the full copyright notices and license terms.
import argparse
import csv
-import os
import logging
import logging.config
import logging.handlers
+import os
from contextlib import contextmanager
from io import StringIO
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/config.py
--- a/trytond/config.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/config.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,11 +1,12 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
-import __main__ as main
import configparser
import logging
import os
import urllib.parse
+import __main__ as main
+
from . import status
__all__ = ['config', 'get_hostname', 'get_port', 'split_netloc',
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/convert.py
--- a/trytond/convert.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/convert.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,16 +1,15 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
-import time
import datetime
-from xml import sax
import logging
import re
-
+import time
from collections import defaultdict
from decimal import Decimal
+from xml import sax
from trytond import __version__
-from trytond.pyson import PYSONEncoder, CONTEXT
+from trytond.pyson import CONTEXT, PYSONEncoder
from trytond.tools import grouped_slice
from trytond.transaction import Transaction
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/cron.py
--- a/trytond/cron.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/cron.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,8 +1,8 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
+import logging
import threading
import time
-import logging
from trytond.pool import Pool
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/filestore.py
--- a/trytond/filestore.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/filestore.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,7 +1,7 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
+import hashlib
import os
-import hashlib
from trytond.config import config
from trytond.tools import resolve
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/i18n.py
--- a/trytond/i18n.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/i18n.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,8 +1,8 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
+from trytond.pool import Pool
from trytond.tools.string_ import LazyString
from trytond.transaction import Transaction
-from trytond.pool import Pool
def gettext(message_id, *args, **variables):
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/ir/__init__.py
--- a/trytond/ir/__init__.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/ir/__init__.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,30 +1,11 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from trytond.pool import Pool
-from . import configuration
-from . import translation
-from . import sequence
-from . import ui
-from . import action
-from . import model
-from . import attachment
-from . import note
-from . import avatar
-from . import cron
-from . import lang
-from . import export
-from . import rule
-from . import module
-from . import cache
-from . import date
-from . import trigger
-from . import session
-from . import queue
-from . import calendar_
-from . import message
-from . import email_
-from . import routes
-from . import error
+
+from . import (
+ action, attachment, avatar, cache, calendar_, configuration, cron, date,
+ email_, error, export, lang, message, model, module, note, queue, routes,
+ rule, sequence, session, translation, trigger, ui)
__all__ = ['register', 'routes']
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/ir/action.py
--- a/trytond/ir/action.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/ir/action.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,23 +1,22 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
import os
-from operator import itemgetter
from collections import defaultdict
from functools import partial
+from operator import itemgetter
+from genshi.template.text import TextTemplate
from sql import Null
-from genshi.template.text import TextTemplate
from trytond.cache import Cache, MemoryCache
from trytond.config import config
from trytond.i18n import gettext
from trytond.model import (
- ModelView, ModelStorage, ModelSQL, DeactivableMixin, fields,
- sequence_ordered, ModelSingleton)
+ DeactivableMixin, ModelSingleton, ModelSQL, ModelStorage, ModelView,
+ fields, sequence_ordered)
from trytond.model.exceptions import ValidationError
from trytond.pool import Pool
-from trytond.pyson import PYSONDecoder, PYSON, Eval
-from trytond.pyson import PYSONEncoder
+from trytond.pyson import PYSON, Eval, PYSONDecoder, PYSONEncoder
from trytond.rpc import RPC
from trytond.tools import file_open
from trytond.transaction import Transaction
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/ir/attachment.py
--- a/trytond/ir/attachment.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/ir/attachment.py Sat Dec 11 17:58:45 2021 +0100
@@ -5,11 +5,12 @@
from trytond.config import config
from trytond.i18n import lazy_gettext
-from trytond.model import ModelView, ModelSQL, fields
+from trytond.model import ModelSQL, ModelView, fields
from trytond.pool import Pool
from trytond.pyson import Eval
from trytond.tools import firstline
from trytond.transaction import Transaction
+
from .resource import ResourceMixin, resource_copy
__all__ = ['AttachmentCopyMixin']
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/ir/avatar.py
--- a/trytond/ir/avatar.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/ir/avatar.py Sat Dec 11 17:58:45 2021 +0100
@@ -5,7 +5,7 @@
import os
import uuid
from random import Random
-from urllib.parse import urljoin, quote
+from urllib.parse import quote, urljoin
try:
import PIL
@@ -14,7 +14,7 @@
PIL = None
from trytond.config import config
-from trytond.model import ModelSQL, fields, Unique
+from trytond.model import ModelSQL, Unique, fields
from trytond.pool import Pool
from trytond.transaction import Transaction
from trytond.wsgi import Base64Converter
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/ir/calendar_.py
--- a/trytond/ir/calendar_.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/ir/calendar_.py Sat Dec 11 17:58:45 2021 +0100
@@ -2,7 +2,7 @@
# this repository contains the full copyright notices and license terms.
from trytond.cache import Cache
-from trytond.model import ModelSQL, fields, Unique
+from trytond.model import ModelSQL, Unique, fields
from trytond.rpc import RPC
from trytond.transaction import Transaction
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/ir/configuration.py
--- a/trytond/ir/configuration.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/ir/configuration.py Sat Dec 11 17:58:45 2021 +0100
@@ -2,7 +2,7 @@
# this repository contains the full copyright notices and license terms.
from trytond.cache import Cache
from trytond.config import config
-from trytond.model import ModelSQL, ModelSingleton, fields
+from trytond.model import ModelSingleton, ModelSQL, fields
class Configuration(ModelSingleton, ModelSQL):
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/ir/cron.py
--- a/trytond/ir/cron.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/ir/cron.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,15 +1,16 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
import datetime
+import logging
import time
+
from dateutil.relativedelta import relativedelta
-import logging
from trytond import backend
from trytond.config import config
from trytond.exceptions import UserError, UserWarning
from trytond.model import (
- ModelView, ModelSQL, DeactivableMixin, fields, dualmethod)
+ DeactivableMixin, ModelSQL, ModelView, dualmethod, fields)
from trytond.pool import Pool
from trytond.pyson import Eval
from trytond.status import processing
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/ir/email_.py
--- a/trytond/ir/email_.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/ir/email_.py Sat Dec 11 17:58:45 2021 +0100
@@ -17,18 +17,18 @@
html2text = None
from genshi.template import TextTemplate
+from trytond.config import config
from trytond.i18n import gettext
-from trytond.config import config
-from trytond.model import ModelSQL, ModelView, fields, EvalEnvironment
-from trytond.model.exceptions import ValidationError, AccessError
+from trytond.model import EvalEnvironment, ModelSQL, ModelView, fields
+from trytond.model.exceptions import AccessError, ValidationError
from trytond.pool import Pool
-from trytond.pyson import Eval, Bool, PYSONDecoder
+from trytond.pyson import Bool, Eval, PYSONDecoder
from trytond.report import Report
from trytond.rpc import RPC
-from trytond.sendmail import sendmail_transactional, SMTPDataManager
+from trytond.sendmail import SMTPDataManager, sendmail_transactional
from trytond.tools import escape_wildcard
+from trytond.tools.email_ import set_from_header
from trytond.tools.string_ import StringMatcher
-from trytond.tools.email_ import set_from_header
from trytond.transaction import Transaction
from .resource import ResourceAccessMixin
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/ir/error.py
--- a/trytond/ir/error.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/ir/error.py Sat Dec 11 17:58:45 2021 +0100
@@ -7,10 +7,10 @@
from trytond.config import config
from trytond.exceptions import UserError, UserWarning
from trytond.model import ModelSQL, ModelView, Workflow, fields
+from trytond.pool import Pool
+from trytond.pyson import Eval
from trytond.tools import firstline
from trytond.transaction import Transaction
-from trytond.pool import Pool
-from trytond.pyson import Eval
logger = logging.getLogger(__name__)
clean_days = config.getint('error', 'clean_days', default=90)
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/ir/exceptions.py
--- a/trytond/ir/exceptions.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/ir/exceptions.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,15 +1,13 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
-from .lang import (
- GroupingError as LanguageGroupingError,
- DateError as LanguageDateError,
- TranslatableError as LanguageTranslatableError,
- DeleteDefaultError as LanguageDeleteDefaultError)
+from .lang import DateError as LanguageDateError
+from .lang import DeleteDefaultError as LanguageDeleteDefaultError
+from .lang import GroupingError as LanguageGroupingError
+from .lang import TranslatableError as LanguageTranslatableError
from .module import DeactivateDependencyError
-from .sequence import (
- AffixError as SequenceAffixError,
- MissingError as SequenceMissingError)
+from .sequence import AffixError as SequenceAffixError
+from .sequence import MissingError as SequenceMissingError
from .translation import OverriddenError as TranslationOverriddenError
from .trigger import ConditionError as TriggerConditionError
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/ir/export.py
--- a/trytond/ir/export.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/ir/export.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,7 +1,7 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
"Exports"
-from trytond.model import ModelView, ModelSQL, fields
+from trytond.model import ModelSQL, ModelView, fields
from trytond.pool import Pool
from trytond.rpc import RPC
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/ir/lang.py
--- a/trytond/ir/lang.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/ir/lang.py Sat Dec 11 17:58:45 2021 +0100
@@ -2,22 +2,22 @@
# this repository contains the full copyright notices and license terms.
import datetime
+from ast import literal_eval
+from decimal import Decimal
from locale import CHAR_MAX
-from ast import literal_eval
-from decimal import Decimal
from sql import Table
from trytond.cache import Cache
from trytond.exceptions import UserError
from trytond.i18n import gettext
from trytond.model import (
- ModelView, ModelSQL, DeactivableMixin, fields, Check, Unique)
+ Check, DeactivableMixin, ModelSQL, ModelView, Unique, fields)
from trytond.modules import create_graph, load_translations
from trytond.pool import Pool
from trytond.pyson import Eval
from trytond.transaction import Transaction
-from trytond.wizard import Wizard, StateView, Button, StateTransition
+from trytond.wizard import Button, StateTransition, StateView, Wizard
Transaction.cache_keys.add('translate_name')
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/ir/message.py
--- a/trytond/ir/message.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/ir/message.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,8 +1,8 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
-from trytond.model import ModelView, ModelSQL, fields
from trytond.cache import Cache
+from trytond.model import ModelSQL, ModelView, fields
from trytond.pool import Pool
from trytond.transaction import Transaction
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/ir/model.py
--- a/trytond/ir/model.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/ir/model.py Sat Dec 11 17:58:45 2021 +0100
@@ -4,28 +4,28 @@
import json
import logging
import re
+from collections import defaultdict
+from itertools import groupby
-from sql import Null, Literal
+from sql import Literal, Null
from sql.aggregate import Max
from sql.conditionals import Case
-from collections import defaultdict
-from itertools import groupby
from trytond.cache import Cache
from trytond.i18n import gettext
from trytond.model import (
- ModelView, ModelSQL, Workflow, DeactivableMixin, fields, Unique,
- EvalEnvironment)
+ DeactivableMixin, EvalEnvironment, ModelSQL, ModelView, Unique, Workflow,
+ fields)
from trytond.model.exceptions import AccessError, ValidationError
from trytond.pool import Pool
from trytond.protocols.jsonrpc import JSONDecoder, JSONEncoder
from trytond.pyson import Bool, Eval, PYSONDecoder
from trytond.report import Report
from trytond.rpc import RPC
-from trytond.tools import is_instance_method, cursor_dict, grouped_slice
+from trytond.tools import cursor_dict, grouped_slice, is_instance_method
from trytond.tools.string_ import StringMatcher
from trytond.transaction import Transaction
-from trytond.wizard import Wizard, StateView, StateAction, Button
+from trytond.wizard import Button, StateAction, StateView, Wizard
logger = logging.getLogger(__name__)
@@ -1295,8 +1295,8 @@
return dict(json.loads(values, object_hook=JSONDecoder()))
except ValueError:
# Migration from 3.2
+ import datetime
from decimal import Decimal
- import datetime
return eval(values, {
'Decimal': Decimal,
'datetime': datetime,
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/ir/module.py
--- a/trytond/ir/module.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/ir/module.py Sat Dec 11 17:58:45 2021 +0100
@@ -5,19 +5,19 @@
from sql.operators import NotIn
+from trytond import backend
from trytond.cache import Cache
from trytond.exceptions import UserError
from trytond.i18n import gettext
-from trytond.model import ModelView, ModelSQL, fields, Unique, sequence_ordered
+from trytond.model import ModelSQL, ModelView, Unique, fields, sequence_ordered
from trytond.model.exceptions import AccessError
-from trytond.modules import get_module_list, get_module_info
-from trytond.wizard import Wizard, StateView, Button, StateTransition, \
- StateAction
-from trytond import backend
+from trytond.modules import get_module_info, get_module_list
from trytond.pool import Pool
-from trytond.transaction import Transaction
from trytond.pyson import Eval
from trytond.rpc import RPC
+from trytond.transaction import Transaction
+from trytond.wizard import (
+ Button, StateAction, StateTransition, StateView, Wizard)
class DeactivateDependencyError(UserError):
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/ir/note.py
--- a/trytond/ir/note.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/ir/note.py Sat Dec 11 17:58:45 2021 +0100
@@ -6,11 +6,12 @@
from sql.conditionals import Case
from trytond.i18n import lazy_gettext
-from trytond.model import ModelView, ModelSQL, ModelStorage, fields
+from trytond.model import ModelSQL, ModelStorage, ModelView, fields
from trytond.pool import Pool
from trytond.pyson import Eval
from trytond.tools import grouped_slice, reduce_ids
from trytond.transaction import Transaction
+
from .resource import ResourceMixin, resource_copy
__all__ = ['NoteCopyMixin']
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/ir/queue.py
--- a/trytond/ir/queue.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/ir/queue.py Sat Dec 11 17:58:45 2021 +0100
@@ -2,7 +2,7 @@
# this repository contains the full copyright notices and license terms.
import datetime
-from sql import With, Literal, Null
+from sql import Literal, Null, With
from sql.aggregate import Min
from sql.functions import CurrentTimestamp, Extract
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/ir/routes.py
--- a/trytond/ir/routes.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/ir/routes.py Sat Dec 11 17:58:45 2021 +0100
@@ -2,9 +2,10 @@
# this repository contains the full copyright notices and license terms.
import csv
import datetime as dt
+import io
import json
-import io
from numbers import Number
+
try:
from http import HTTPStatus
except ImportError:
@@ -14,13 +15,13 @@
from werkzeug.utils import redirect
from werkzeug.wrappers import Response
+from trytond.config import config
from trytond.i18n import gettext
-from trytond.config import config
-from trytond.wsgi import app
from trytond.protocols.jsonrpc import JSONDecoder
from trytond.protocols.wrappers import with_pool, with_transaction
from trytond.tools import slugify
from trytond.transaction import Transaction
+from trytond.wsgi import app
SOURCE = config.get(
'html', 'src', default='https://cloud.tinymce.com/stable/tinymce.min.js')
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/ir/rule.py
--- a/trytond/ir/rule.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/ir/rule.py Sat Dec 11 17:58:45 2021 +0100
@@ -6,7 +6,7 @@
from trytond.cache import Cache
from trytond.i18n import gettext
-from trytond.model import ModelView, ModelSQL, fields, EvalEnvironment, Check
+from trytond.model import Check, EvalEnvironment, ModelSQL, ModelView, fields
from trytond.model.exceptions import ValidationError
from trytond.pool import Pool
from trytond.pyson import PYSONDecoder
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/ir/sequence.py
--- a/trytond/ir/sequence.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/ir/sequence.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,17 +1,17 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
+import time
from string import Template
-import time
-from sql import Literal, For
+from sql import For, Literal
from trytond import backend
from trytond.exceptions import UserError
from trytond.i18n import gettext
-from trytond.model import ModelView, ModelSQL, DeactivableMixin, fields, Check
-from trytond.model.exceptions import ValidationError, AccessError
+from trytond.model import Check, DeactivableMixin, ModelSQL, ModelView, fields
+from trytond.model.exceptions import AccessError, ValidationError
from trytond.pool import Pool
-from trytond.pyson import Eval, And
+from trytond.pyson import And, Eval
from trytond.transaction import Transaction
sql_sequence = backend.Database.has_sequence()
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/ir/session.py
--- a/trytond/ir/session.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/ir/session.py Sat Dec 11 17:58:45 2021 +0100
@@ -4,6 +4,7 @@
import datetime
import json
import os
+
try:
from secrets import token_hex
except ImportError:
@@ -12,8 +13,8 @@
nbytes = 32
return binascii.hexlify(os.urandom(nbytes)).decode('ascii')
+from trytond.config import config
from trytond.model import ModelSQL, fields
-from trytond.config import config
class Session(ModelSQL):
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/ir/translation.py
--- a/trytond/ir/translation.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/ir/translation.py Sat Dec 11 17:58:45 2021 +0100
@@ -2,33 +2,32 @@
# this repository contains the full copyright notices and license terms.
import os
import xml.dom.minidom
+from collections import defaultdict
from difflib import SequenceMatcher
-from collections import defaultdict
from io import BytesIO
-from lxml import etree
import polib
-from sql import Column, Null, Literal
-from sql.functions import Substring, Position
-from sql.conditionals import Case
-from sql.aggregate import Max
-
from genshi.filters.i18n import extract as genshi_extract
+from lxml import etree
from relatorio.reporting import MIMETemplateLoader
from relatorio.templates.opendocument import get_zip_file
+from sql import Column, Literal, Null
+from sql.aggregate import Max
+from sql.conditionals import Case
+from sql.functions import Position, Substring
from trytond.cache import Cache
from trytond.config import config
from trytond.exceptions import UserError
from trytond.i18n import gettext
-from trytond.model import ModelView, ModelSQL, fields
+from trytond.model import ModelSQL, ModelView, fields
from trytond.pool import Pool
-from trytond.pyson import PYSONEncoder, Eval
-from trytond.tools import file_open, grouped_slice, cursor_dict
+from trytond.pyson import Eval, PYSONEncoder
+from trytond.tools import cursor_dict, file_open, grouped_slice
from trytond.tools.string_ import LazyString, StringPartitioned
from trytond.transaction import Transaction
from trytond.wizard import (
- Wizard, StateView, StateTransition, StateAction, Button)
+ Button, StateAction, StateTransition, StateView, Wizard)
from .lang import get_parent_language as get_parent
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/ir/trigger.py
--- a/trytond/ir/trigger.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/ir/trigger.py Sat Dec 11 17:58:45 2021 +0100
@@ -2,6 +2,7 @@
# this repository contains the full copyright notices and license terms.
import datetime
import time
+
from sql import Literal, Null, Select
from sql.aggregate import Count, Max
from sql.functions import CurrentTimestamp
@@ -10,12 +11,11 @@
from trytond.cache import Cache
from trytond.i18n import gettext
from trytond.model import (
- ModelView, ModelSQL, DeactivableMixin, fields, EvalEnvironment, Check)
+ Check, DeactivableMixin, EvalEnvironment, ModelSQL, ModelView, fields)
from trytond.model.exceptions import ValidationError
from trytond.pool import Pool
from trytond.pyson import Eval, PYSONDecoder
-from trytond.tools import grouped_slice
-from trytond.tools import reduce_ids
+from trytond.tools import grouped_slice, reduce_ids
from trytond.transaction import Transaction
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/ir/ui/__init__.py
--- a/trytond/ir/ui/__init__.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/ir/ui/__init__.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,7 +1,5 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
-from . import menu
-from . import view
-from . import icon
+from . import icon, menu, view
__all__ = ['menu', 'view', 'icon']
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/ir/ui/icon.py
--- a/trytond/ir/ui/icon.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/ir/ui/icon.py Sat Dec 11 17:58:45 2021 +0100
@@ -3,10 +3,10 @@
import os
-from trytond.model import ModelView, ModelSQL, fields, sequence_ordered
+from trytond.model import ModelSQL, ModelView, fields, sequence_ordered
+from trytond.rpc import RPC
from trytond.tools import file_open
from trytond.transaction import Transaction
-from trytond.rpc import RPC
class Icon(sequence_ordered(), ModelSQL, ModelView):
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/ir/ui/menu.py
--- a/trytond/ir/ui/menu.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/ir/ui/menu.py Sat Dec 11 17:58:45 2021 +0100
@@ -4,11 +4,11 @@
from itertools import groupby
from trytond.model import (
- ModelView, ModelSQL, DeactivableMixin, fields, sequence_ordered, tree)
-from trytond.transaction import Transaction
-from trytond.tools import grouped_slice
+ DeactivableMixin, ModelSQL, ModelView, fields, sequence_ordered, tree)
from trytond.pool import Pool
from trytond.rpc import RPC
+from trytond.tools import grouped_slice
+from trytond.transaction import Transaction
def one_in(i, j):
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/ir/ui/view.py
--- a/trytond/ir/ui/view.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/ir/ui/view.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,20 +1,20 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
+import json
import os
-import json
from lxml import etree
+from trytond.cache import Cache
from trytond.i18n import gettext
-from trytond.model import ModelView, ModelSQL, fields
+from trytond.model import ModelSQL, ModelView, fields
from trytond.model.exceptions import ValidationError
-from trytond.pyson import Eval, Bool, PYSONDecoder, If
+from trytond.pool import Pool
+from trytond.pyson import Bool, Eval, If, PYSONDecoder
+from trytond.rpc import RPC
from trytond.tools import file_open
from trytond.transaction import Transaction
-from trytond.wizard import Wizard, StateView, Button
-from trytond.pool import Pool
-from trytond.cache import Cache
-from trytond.rpc import RPC
+from trytond.wizard import Button, StateView, Wizard
class XMLError(ValidationError):
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/model/__init__.py
--- a/trytond/model/__init__.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/model/__init__.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,22 +1,22 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
+from .active import DeactivableMixin
+from .avatar import avatar_mixin
+from .descriptors import dualmethod
+from .dictschema import DictSchemaMixin
+from .digits import DigitsMixin
+from .match import MatchMixin
from .model import Model
-from .modelview import ModelView
-from .modelstorage import ModelStorage, EvalEnvironment
from .modelsingleton import ModelSingleton
-from .modelsql import ModelSQL, Check, Unique, Exclude
-from .workflow import Workflow
-from .dictschema import DictSchemaMixin
-from .match import MatchMixin
+from .modelsql import Check, Exclude, ModelSQL, Unique
+from .modelstorage import EvalEnvironment, ModelStorage
+from .modelview import ModelView
+from .multivalue import MultiValueMixin, ValueMixin
+from .order import sequence_ordered
+from .symbol import SymbolMixin
+from .tree import tree
from .union import UnionMixin
-from .symbol import SymbolMixin
-from .digits import DigitsMixin
-from .multivalue import MultiValueMixin, ValueMixin
-from .descriptors import dualmethod
-from .order import sequence_ordered
-from .active import DeactivableMixin
-from .tree import tree
-from .avatar import avatar_mixin
+from .workflow import Workflow
__all__ = ['Model', 'ModelView', 'ModelStorage', 'ModelSingleton', 'ModelSQL',
'Check', 'Unique', 'Exclude',
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/model/active.py
--- a/trytond/model/active.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/model/active.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,9 +1,12 @@
# This file is part of Tryton. The COPYRIGHT file at the toplevel of this
# repository contains the full copyright notices and license terms.
from trytond.i18n import lazy_gettext
-from trytond.model import Model, ModelView, fields
from trytond.pyson import Eval
+from . import fields
+from .model import Model
+from .modelview import ModelView
+
class DeactivableMixin(Model):
"Mixin to allow to soft deletion of records"
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/model/avatar.py
--- a/trytond/model/avatar.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/model/avatar.py Sat Dec 11 17:58:45 2021 +0100
@@ -55,7 +55,7 @@
@classmethod
def generate_avatar(cls, records, field='rec_name'):
- from trytond.ir.avatar import generate, PIL
+ from trytond.ir.avatar import PIL, generate
if not PIL:
return
records = [r for r in records if not r.has_avatar]
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/model/dictschema.py
--- a/trytond/model/dictschema.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/model/dictschema.py Sat Dec 11 17:58:45 2021 +0100
@@ -8,11 +8,11 @@
from trytond.i18n import gettext, lazy_gettext
from trytond.model import fields
from trytond.model.exceptions import ValidationError
+from trytond.pool import Pool
from trytond.pyson import Eval, PYSONDecoder
from trytond.rpc import RPC
from trytond.tools import slugify
from trytond.transaction import Transaction
-from trytond.pool import Pool
class DomainError(ValidationError):
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/model/exceptions.py
--- a/trytond/model/exceptions.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/model/exceptions.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,11 +1,12 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
-from .modelstorage import (AccessError, ImportDataError, ValidationError,
- DomainValidationError, RequiredValidationError, SizeValidationError,
- DigitsValidationError, ForbiddenCharValidationError,
- SelectionValidationError, TimeFormatValidationError)
from .modelsql import ForeignKeyError, SQLConstraintError
+from .modelstorage import (
+ AccessError, DigitsValidationError, DomainValidationError,
+ ForbiddenCharValidationError, ImportDataError, RequiredValidationError,
+ SelectionValidationError, SizeValidationError, TimeFormatValidationError,
+ ValidationError)
from .modelview import AccessButtonError
from .tree import RecursionError
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/model/fields/__init__.py
--- a/trytond/model/fields/__init__.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/model/fields/__init__.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,26 +1,26 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
-from .field import (
- depends, with_inactive_records, SQL_OPERATORS, on_change_result,
- get_eval_fields, states_validate, domain_validate, context_validate, Field)
+from .binary import Binary
from .boolean import Boolean
-from .integer import Integer, BigInteger
from .char import Char
-from .text import Text, FullText
+from .date import Date, DateTime, Time, TimeDelta, Timestamp
+from .dict import Dict
+from .field import (
+ SQL_OPERATORS, Field, context_validate, depends, domain_validate,
+ get_eval_fields, on_change_result, states_validate, with_inactive_records)
from .float import Float
+from .function import Function, MultiValue
+from .integer import BigInteger, Integer
+from .many2many import Many2Many
+from .many2one import Many2One
+from .multiselection import MultiSelection
from .numeric import Numeric
-from .date import Date, Timestamp, DateTime, Time, TimeDelta
-from .binary import Binary
-from .selection import Selection
+from .one2many import One2Many
+from .one2one import One2One
from .reference import Reference
-from .many2one import Many2One
-from .one2many import One2Many
-from .many2many import Many2Many
-from .function import Function, MultiValue
-from .one2one import One2One
-from .dict import Dict
-from .multiselection import MultiSelection
+from .selection import Selection
+from .text import FullText, Text
__all__ = [
depends, with_inactive_records, SQL_OPERATORS, on_change_result,
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/model/fields/binary.py
--- a/trytond/model/fields/binary.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/model/fields/binary.py Sat Dec 11 17:58:45 2021 +0100
@@ -5,6 +5,7 @@
from trytond.filestore import filestore
from trytond.tools import grouped_slice, reduce_ids
from trytond.transaction import Transaction
+
from .field import Field
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/model/fields/char.py
--- a/trytond/model/fields/char.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/model/fields/char.py Sat Dec 11 17:58:45 2021 +0100
@@ -6,8 +6,9 @@
from sql.operators import Not
from trytond.rpc import RPC
-from trytond.tools import unescape_wildcard, is_full_text
+from trytond.tools import is_full_text, unescape_wildcard
from trytond.transaction import Transaction
+
from .field import Field, FieldTranslate, size_validate
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/model/fields/date.py
--- a/trytond/model/fields/date.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/model/fields/date.py Sat Dec 11 17:58:45 2021 +0100
@@ -2,10 +2,11 @@
# this repository contains the full copyright notices and license terms.
import datetime
-from sql.functions import Function, AtTimeZone
+from sql.functions import AtTimeZone, Function
from trytond import backend
from trytond.pyson import PYSONEncoder
+
from .field import Field
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/model/fields/dict.py
--- a/trytond/model/fields/dict.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/model/fields/dict.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,9 +1,9 @@
# This file is part of Tryton. The COPYRIGHT file at the toplevel of this
# repository contains the full copyright notices and license terms.
+import json
from functools import partial
-import json
-from sql import operators, Literal, Select, CombiningQuery, Cast, Null
+from sql import Cast, CombiningQuery, Literal, Null, Select, operators
from trytond import backend
from trytond.pool import Pool
@@ -11,7 +11,8 @@
from trytond.tools import grouped_slice
from trytond.tools.immutabledict import ImmutableDict
from trytond.transaction import Transaction
-from .field import Field, SQL_OPERATORS
+
+from .field import SQL_OPERATORS, Field
# Use canonical form
dumps = partial(
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/model/fields/field.py
--- a/trytond/model/fields/field.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/model/fields/field.py Sat Dec 11 17:58:45 2021 +0100
@@ -4,8 +4,9 @@
from functools import wraps
import sql
-from sql import (operators, Column, Literal, Select, CombiningQuery, Null,
- Query, Expression, Cast)
+from sql import (
+ Cast, Column, CombiningQuery, Expression, Literal, Null, Query, Select,
+ operators)
from sql.aggregate import Min
from sql.conditionals import Coalesce, NullIf
from sql.operators import Concat
@@ -13,9 +14,9 @@
from trytond import backend
from trytond.const import OPERATORS
from trytond.pool import Pool
-from trytond.pyson import PYSON, PYSONEncoder, PYSONDecoder, Eval
+from trytond.pyson import PYSON, Eval, PYSONDecoder, PYSONEncoder
from trytond.rpc import RPC
-from trytond.tools.string_ import StringPartitioned, LazyString
+from trytond.tools.string_ import LazyString, StringPartitioned
from trytond.transaction import Transaction
_sql_version = tuple(map(int, sql.__version__.split('.')))
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/model/fields/float.py
--- a/trytond/model/fields/float.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/model/fields/float.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,6 +1,7 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
-from trytond.pyson import PYSONEncoder, PYSON
+from trytond.pyson import PYSON, PYSONEncoder
+
from .field import Field
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/model/fields/function.py
--- a/trytond/model/fields/function.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/model/fields/function.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,8 +1,8 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
+import copy
import inspect
-import copy
from functools import wraps
from trytond.i18n import gettext
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/model/fields/many2many.py
--- a/trytond/model/fields/many2many.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/model/fields/many2many.py Sat Dec 11 17:58:45 2021 +0100
@@ -4,15 +4,17 @@
from itertools import chain
from sql import Cast, Literal, Null
-from sql.functions import Substring, Position
from sql.conditionals import Coalesce
+from sql.functions import Position, Substring
from trytond.pool import Pool
from trytond.pyson import PYSONEncoder
from trytond.tools import grouped_slice
from trytond.transaction import Transaction
-from .field import (Field, size_validate, instanciate_values, domain_validate,
- search_order_validate, context_validate, instantiate_context)
+
+from .field import (
+ Field, context_validate, domain_validate, instanciate_values,
+ instantiate_context, search_order_validate, size_validate)
from .function import Function
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/model/fields/many2one.py
--- a/trytond/model/fields/many2one.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/model/fields/many2one.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,6 +1,6 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
-from sql import Literal, Column, With, Query, Expression
+from sql import Column, Expression, Literal, Query, With
from sql.aggregate import Max
from sql.conditionals import Coalesce
from sql.operators import Or
@@ -9,8 +9,10 @@
from trytond.pyson import PYSONEncoder
from trytond.tools import reduce_ids
from trytond.transaction import Transaction
-from .field import (Field, search_order_validate, context_validate,
- with_inactive_records, instantiate_context)
+
+from .field import (
+ Field, context_validate, instantiate_context, search_order_validate,
+ with_inactive_records)
class Many2One(Field):
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/model/fields/multiselection.py
--- a/trytond/model/fields/multiselection.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/model/fields/multiselection.py Sat Dec 11 17:58:45 2021 +0100
@@ -3,10 +3,11 @@
import json
from functools import partial
-from sql import operators, Literal
+from sql import Literal, operators
from trytond.rpc import RPC
from trytond.transaction import Transaction
+
from .field import Field
from .selection import SelectionMixin
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/model/fields/numeric.py
--- a/trytond/model/fields/numeric.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/model/fields/numeric.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,9 +1,11 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from decimal import Decimal
-from sql import Cast, Literal, Select, CombiningQuery, As
+
+from sql import As, Cast, CombiningQuery, Literal, Select
from trytond import backend
+
from .float import Float
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/model/fields/one2many.py
--- a/trytond/model/fields/one2many.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/model/fields/one2many.py Sat Dec 11 17:58:45 2021 +0100
@@ -2,16 +2,19 @@
# this repository contains the full copyright notices and license terms.
from collections import defaultdict
from itertools import chain
+
from sql import Cast, Literal
-from sql.functions import Substring, Position
from sql.conditionals import Coalesce
+from sql.functions import Position, Substring
from trytond.pool import Pool
from trytond.pyson import PYSONEncoder
from trytond.tools import grouped_slice
from trytond.transaction import Transaction
-from .field import (Field, size_validate, instanciate_values, domain_validate,
- search_order_validate, context_validate, instantiate_context)
+
+from .field import (
+ Field, context_validate, domain_validate, instanciate_values,
+ instantiate_context, search_order_validate, size_validate)
from .function import Function
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/model/fields/reference.py
--- a/trytond/model/fields/reference.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/model/fields/reference.py Sat Dec 11 17:58:45 2021 +0100
@@ -2,16 +2,18 @@
# this repository contains the full copyright notices and license terms.
import warnings
-from sql import Cast, Literal, Query, Expression
-from sql.functions import Substring, Position
+from sql import Cast, Expression, Literal, Query
+from sql.functions import Position, Substring
from trytond.pool import Pool
from trytond.pyson import PYSONEncoder
from trytond.rpc import RPC
from trytond.transaction import Transaction
+
+from .field import (
+ Field, context_validate, instantiate_context, search_order_validate,
+ with_inactive_records)
from .selection import SelectionMixin
-from .field import (Field, search_order_validate, context_validate,
- with_inactive_records, instantiate_context)
class Reference(SelectionMixin, Field):
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/model/fields/selection.py
--- a/trytond/model/fields/selection.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/model/fields/selection.py Sat Dec 11 17:58:45 2021 +0100
@@ -10,6 +10,7 @@
from trytond.tools import is_instance_method
from trytond.tools.string_ import LazyString
from trytond.transaction import Transaction
+
from .field import Field
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/model/fields/text.py
--- a/trytond/model/fields/text.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/model/fields/text.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,12 +1,12 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
-from sql import Query, Expression, Null, Literal
-from sql.operators import ILike, Not, In, NotIn
+from sql import Expression, Literal, Null, Query
+from sql.operators import ILike, In, Not, NotIn
from trytond.transaction import Transaction
-from .field import Field, SQL_OPERATORS
from .char import Char
+from .field import SQL_OPERATORS, Field
class Text(Char):
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/model/model.py
--- a/trytond/model/model.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/model/model.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,8 +1,8 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
+import collections.abc
import copy
-import collections.abc
import sys
from collections import defaultdict
from functools import total_ordering
@@ -11,10 +11,10 @@
from trytond.i18n import lazy_gettext
from trytond.model import fields
from trytond.pool import Pool, PoolBase, PoolMeta
-from trytond.pyson import PYSONEncoder, PYSONDecoder
+from trytond.pyson import PYSONDecoder, PYSONEncoder
+from trytond.rpc import RPC
from trytond.transaction import Transaction
from trytond.url import URLMixin
-from trytond.rpc import RPC
__all__ = ['Model']
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/model/modelsingleton.py
--- a/trytond/model/modelsingleton.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/model/modelsingleton.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,8 +1,9 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
-from trytond.model import ModelStorage
from trytond.transaction import Transaction
+from .modelstorage import ModelStorage
+
class ModelSingleton(ModelStorage):
"""
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/model/modelsql.py
--- a/trytond/model/modelsql.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/model/modelsql.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,33 +1,35 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
import datetime
-from itertools import islice, chain, product, groupby, repeat
from collections import OrderedDict, defaultdict
from functools import wraps
+from itertools import chain, groupby, islice, product, repeat
-from sql import (Table, Column, Literal, Desc, Asc, Expression, Null,
- NullsFirst, NullsLast, For, Union, With)
-from sql.functions import CurrentTimestamp, Extract, Substring
+from sql import (
+ Asc, Column, Desc, Expression, For, Literal, Null, NullsFirst, NullsLast,
+ Table, Union, With)
+from sql.aggregate import Count, Max
from sql.conditionals import Coalesce
-from sql.operators import Or, And, Operator, Equal, Concat
-from sql.aggregate import Count, Max
+from sql.functions import CurrentTimestamp, Extract, Substring
+from sql.operators import And, Concat, Equal, Operator, Or
-from trytond.i18n import gettext
-from trytond.model import ModelStorage, ModelView
-from trytond.model import fields
from trytond import backend
-from trytond.tools import reduce_ids, grouped_slice, cursor_dict
-from trytond.transaction import Transaction, record_cache_size
-from trytond.pool import Pool
-from trytond.pyson import PYSONEncoder, PYSONDecoder
from trytond.cache import freeze
+from trytond.config import config
from trytond.exceptions import ConcurrencyException
+from trytond.i18n import gettext
+from trytond.pool import Pool
+from trytond.pyson import PYSONDecoder, PYSONEncoder
from trytond.rpc import RPC
-from trytond.config import config
+from trytond.tools import cursor_dict, grouped_slice, reduce_ids
+from trytond.transaction import Transaction, record_cache_size
-from .modelstorage import (is_leaf,
- ValidationError, RequiredValidationError, AccessError)
+from . import fields
from .descriptors import dualmethod
+from .modelstorage import (
+ AccessError, ModelStorage, RequiredValidationError, ValidationError,
+ is_leaf)
+from .modelview import ModelView
class ForeignKeyError(ValidationError):
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/model/modelstorage.py
--- a/trytond/model/modelstorage.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/model/modelstorage.py Sat Dec 11 17:58:45 2021 +0100
@@ -2,32 +2,32 @@
# this repository contains the full copyright notices and license terms.
import base64
+import csv
import datetime
+import random
import time
-import csv
-import random
-
+from collections import defaultdict
from decimal import Decimal
-from itertools import islice, chain
from functools import lru_cache, wraps
+from itertools import chain, islice
from operator import itemgetter
-from collections import defaultdict
+from trytond.cache import Cache, LRUDictTransaction, freeze, unfreeze
+from trytond.config import config
+from trytond.const import OPERATORS
from trytond.exceptions import UserError
-from trytond.model import Model
-from trytond.model import fields
-from trytond.tools import reduce_domain, is_instance_method, grouped_slice
-from trytond.tools.domain_inversion import (
- domain_inversion, eval_domain, parse as domain_parse)
-from trytond.pyson import PYSONEncoder, PYSONDecoder, PYSON
-from trytond.const import OPERATORS
-from trytond.config import config
from trytond.i18n import gettext, lazy_gettext
+from trytond.pool import Pool
+from trytond.pyson import PYSON, PYSONDecoder, PYSONEncoder
+from trytond.rpc import RPC
+from trytond.tools import grouped_slice, is_instance_method, reduce_domain
+from trytond.tools.domain_inversion import domain_inversion, eval_domain
+from trytond.tools.domain_inversion import parse as domain_parse
from trytond.transaction import Transaction, record_cache_size
-from trytond.pool import Pool
-from trytond.cache import Cache, LRUDictTransaction, freeze, unfreeze
-from trytond.rpc import RPC
+
+from . import fields
from .descriptors import dualmethod
+from .model import Model
__all__ = ['ModelStorage', 'EvalEnvironment']
_cache_field = config.getint('cache', 'field')
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/model/modelview.py
--- a/trytond/model/modelview.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/model/modelview.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,20 +1,22 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
-from lxml import etree
+import collections
from functools import wraps
-import collections
+from lxml import etree
+
+from trytond.cache import Cache
from trytond.exceptions import UserError
from trytond.i18n import gettext
-from trytond.model import Model, fields
+from trytond.pool import Pool
+from trytond.pyson import PYSONDecoder, PYSONEncoder
+from trytond.rpc import RPC
from trytond.tools import ClassProperty, is_instance_method
-from trytond.pyson import PYSONDecoder, PYSONEncoder
from trytond.transaction import Transaction
-from trytond.cache import Cache
-from trytond.pool import Pool
-from trytond.rpc import RPC
+from . import fields
from .fields import on_change_result
+from .model import Model
__all__ = ['ModelView']
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/model/multivalue.py
--- a/trytond/model/multivalue.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/model/multivalue.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,8 +1,9 @@
# This file is part of Tryton. The COPYRIGHT file at the toplevel of this
# repository contains the full copyright notices and license terms.
from trytond.pool import Pool
+
+from .match import MatchMixin
from .model import Model
-from .match import MatchMixin
class MultiValueMixin(object):
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/model/tree.py
--- a/trytond/model/tree.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/model/tree.py Sat Dec 11 17:58:45 2021 +0100
@@ -3,6 +3,7 @@
from itertools import chain
from trytond.i18n import gettext
+
from .modelstorage import ValidationError
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/model/union.py
--- a/trytond/model/union.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/model/union.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,6 +1,6 @@
# This file is part of Tryton. The COPYRIGHT file at the toplevel of this
# repository contains the full copyright notices and license terms.
-from sql import Union, Column, Literal
+from sql import Column, Literal, Union
from trytond.model import fields
from trytond.pool import Pool
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/modules/__init__.py
--- a/trytond/modules/__init__.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/modules/__init__.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,23 +1,23 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
-import os
-import sys
+import configparser
import importlib
import itertools
import logging
-import configparser
+import os
+import sys
+from collections import defaultdict
from glob import iglob
-from collections import defaultdict
-from importlib.machinery import FileFinder, SourceFileLoader, SOURCE_SUFFIXES
+from importlib.machinery import SOURCE_SUFFIXES, FileFinder, SourceFileLoader
from sql import Table
from sql.functions import CurrentTimestamp
+import trytond.convert as convert
import trytond.tools as tools
from trytond.config import config
from trytond.exceptions import MissingDependenciesException
from trytond.transaction import Transaction
-import trytond.convert as convert
logger = logging.getLogger(__name__)
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/pool.py
--- a/trytond/pool.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/pool.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,11 +1,12 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
-from collections import defaultdict, OrderedDict
+import builtins
+import logging
+from collections import OrderedDict, defaultdict
from threading import RLock
-import logging
+
from trytond.modules import load_modules, register_classes
from trytond.transaction import Transaction
-import builtins
__all__ = ['Pool', 'PoolMeta', 'PoolBase', 'isregisteredby']
@@ -188,6 +189,7 @@
except KeyError:
if type == 'report':
from trytond.report import Report
+
# Keyword argument 'type' conflicts with builtin function
cls = builtins.type(name, (Report,), {'__slots__': ()})
cls.__setup__()
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/protocols/dispatcher.py
--- a/trytond/protocols/dispatcher.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/protocols/dispatcher.py Sat Dec 11 17:58:45 2021 +0100
@@ -4,26 +4,26 @@
import logging
import pydoc
import time
+
try:
from http import HTTPStatus
except ImportError:
from http import client as HTTPStatus
+from sql import Table
from werkzeug.exceptions import abort
from werkzeug.wrappers import Response
-from sql import Table
-from trytond import security
-from trytond import backend
+from trytond import __version__, backend, security
from trytond.config import config, get_hostname
-from trytond import __version__
+from trytond.exceptions import (
+ ConcurrencyException, LoginException, RateLimitException, UserError,
+ UserWarning)
+from trytond.tools import is_instance_method
from trytond.transaction import Transaction
-from trytond.exceptions import (
- UserError, UserWarning, ConcurrencyException, LoginException,
- RateLimitException)
-from trytond.tools import is_instance_method
+from trytond.worker import run_task
from trytond.wsgi import app
-from trytond.worker import run_task
+
from .wrappers import with_pool
logger = logging.getLogger(__name__)
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/protocols/jsonrpc.py
--- a/trytond/protocols/jsonrpc.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/protocols/jsonrpc.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,19 +1,19 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
+import base64
import datetime
-from decimal import Decimal
import json
-import base64
+from decimal import Decimal
-from werkzeug.wrappers import Response
from werkzeug.exceptions import (
- BadRequest, InternalServerError, Conflict, Forbidden, Locked,
+ BadRequest, Conflict, Forbidden, InternalServerError, Locked,
TooManyRequests)
+from werkzeug.wrappers import Response
+from trytond.exceptions import (
+ ConcurrencyException, LoginException, MissingDependenciesException,
+ RateLimitException, TrytonException, UserWarning)
from trytond.protocols.wrappers import Request
-from trytond.exceptions import (
- TrytonException, UserWarning, LoginException, ConcurrencyException,
- RateLimitException, MissingDependenciesException)
from trytond.tools import cached_property
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/protocols/wrappers.py
--- a/trytond/protocols/wrappers.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/protocols/wrappers.py Sat Dec 11 17:58:45 2021 +0100
@@ -4,23 +4,25 @@
import gzip
import logging
import time
+from functools import wraps
from io import BytesIO
-from functools import wraps
+
try:
from http import HTTPStatus
except ImportError:
from http import client as HTTPStatus
-from werkzeug.wrappers import Request as _Request, Response
from werkzeug.datastructures import Authorization
-from werkzeug.exceptions import abort, HTTPException
+from werkzeug.exceptions import HTTPException, abort
+from werkzeug.wrappers import Request as _Request
+from werkzeug.wrappers import Response
-from trytond import security, backend
+from trytond import backend, security
+from trytond.config import config
from trytond.exceptions import RateLimitException
from trytond.pool import Pool
from trytond.tools import cached_property
from trytond.transaction import Transaction
-from trytond.config import config
logger = logging.getLogger(__name__)
@@ -209,7 +211,8 @@
def user_application(name, json=True):
- from .jsonrpc import JSONEncoder, json as json_
+ from .jsonrpc import JSONEncoder
+ from .jsonrpc import json as json_
def decorator(func):
@wraps(func)
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/protocols/xmlrpc.py
--- a/trytond/protocols/xmlrpc.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/protocols/xmlrpc.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,22 +1,21 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
-import xmlrpc.client as client
import datetime
import logging
-
+import xmlrpc.client as client
# convert decimal to float before marshalling:
from decimal import Decimal
+from werkzeug.exceptions import (
+ BadRequest, Conflict, Forbidden, InternalServerError, Locked,
+ TooManyRequests)
from werkzeug.wrappers import Response
-from werkzeug.exceptions import (
- BadRequest, InternalServerError, Conflict, Forbidden, Locked,
- TooManyRequests)
+from trytond.exceptions import (
+ ConcurrencyException, LoginException, MissingDependenciesException,
+ RateLimitException, TrytonException, UserWarning)
from trytond.model.fields.dict import ImmutableDict
from trytond.protocols.wrappers import Request
-from trytond.exceptions import (
- TrytonException, UserWarning, LoginException, ConcurrencyException,
- RateLimitException, MissingDependenciesException)
from trytond.tools import cached_property
logger = logging.getLogger(__name__)
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/pyson.py
--- a/trytond/pyson.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/pyson.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,10 +1,11 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
+import datetime
import json
-import datetime
from decimal import Decimal
+from functools import reduce
+
from dateutil.relativedelta import relativedelta
-from functools import reduce
class PYSON(object):
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/report/report.py
--- a/trytond/report/report.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/report/report.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,23 +1,23 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
import datetime
-import dateutil.tz
-import os
import inspect
import logging
import math
+import operator
+import os
import subprocess
import tempfile
import time
import warnings
import zipfile
-import operator
-
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from io import BytesIO
from itertools import groupby
+import dateutil.tz
+
try:
import html2text
except ImportError:
@@ -31,19 +31,20 @@
from genshi.filters import Translator
from genshi.template.text import TextTemplate
+from trytond.exceptions import UserError
from trytond.i18n import gettext
from trytond.pool import Pool, PoolBase
+from trytond.rpc import RPC
+from trytond.tools import slugify
from trytond.transaction import Transaction
-from trytond.tools import slugify
from trytond.url import URLMixin
-from trytond.rpc import RPC
-from trytond.exceptions import UserError
warnings.simplefilter("ignore")
import relatorio.reporting # noqa: E402
+
warnings.resetwarnings()
try:
- from relatorio.templates.opendocument import Manifest, MANIFEST
+ from relatorio.templates.opendocument import MANIFEST, Manifest
except ImportError:
Manifest, MANIFEST = None, None
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/res/__init__.py
--- a/trytond/res/__init__.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/res/__init__.py Sat Dec 11 17:58:45 2021 +0100
@@ -2,10 +2,7 @@
# this repository contains the full copyright notices and license terms.
from trytond.pool import Pool
-from . import group
-from . import user
-from . import ir
-from . import routes
+from . import group, ir, routes, user
__all__ = ['register', 'routes']
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/res/exceptions.py
--- a/trytond/res/exceptions.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/res/exceptions.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,7 +1,7 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
-from .user import PasswordError, DeleteError
+from .user import DeleteError, PasswordError
__all__ = [
PasswordError,
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/res/group.py
--- a/trytond/res/group.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/res/group.py Sat Dec 11 17:58:45 2021 +0100
@@ -4,8 +4,8 @@
from sql import With
-from trytond.model import ModelView, ModelSQL, DeactivableMixin, tree, fields
-from trytond.model import Unique
+from trytond.model import (
+ DeactivableMixin, ModelSQL, ModelView, Unique, fields, tree)
from trytond.pool import Pool
from trytond.tools import grouped_slice
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/res/ir.py
--- a/trytond/res/ir.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/res/ir.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,6 +1,6 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
-from trytond.model import ModelSQL, DeactivableMixin, fields
+from trytond.model import DeactivableMixin, ModelSQL, fields
from trytond.pool import Pool, PoolMeta
from trytond.pyson import Eval
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/res/routes.py
--- a/trytond/res/routes.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/res/routes.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,16 +1,16 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
import logging
+import random
import time
-import random
from werkzeug.exceptions import abort
from trytond.config import config
+from trytond.protocols.wrappers import (
+ allow_null_origin, with_pool, with_transaction)
+from trytond.transaction import Transaction
from trytond.wsgi import app
-from trytond.protocols.wrappers import (
- with_pool, with_transaction, allow_null_origin)
-from trytond.transaction import Transaction
logger = logging.getLogger(__name__)
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/res/user.py
--- a/trytond/res/user.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/res/user.py Sat Dec 11 17:58:45 2021 +0100
@@ -3,34 +3,34 @@
"User"
import copy
-import string
+import datetime
+import hashlib
+import logging
+import mmap
import random
-import hashlib
+import re
+import string
import time
-import datetime
-import logging
import uuid
-import mmap
-import re
+
try:
import secrets
except ImportError:
secrets = None
import ipaddress
import warnings
+from ast import literal_eval
from email.header import Header
from functools import wraps
from itertools import groupby
from operator import attrgetter
-from ast import literal_eval
-
-from sql import Literal, Null
-from sql.functions import CurrentTimestamp
-from sql.conditionals import Coalesce, Case
-from sql.aggregate import Count
-from sql.operators import Concat
from passlib.context import CryptContext
+from sql import Literal, Null
+from sql.aggregate import Count
+from sql.conditionals import Case, Coalesce
+from sql.functions import CurrentTimestamp
+from sql.operators import Concat
try:
import bcrypt
@@ -43,14 +43,13 @@
from trytond.cache import Cache
from trytond.config import config
-from trytond.exceptions import LoginException, RateLimitException
-from trytond.exceptions import UserError
+from trytond.exceptions import LoginException, RateLimitException, UserError
from trytond.i18n import gettext
from trytond.model import (
- ModelView, ModelSQL, Workflow, DeactivableMixin, fields, Unique,
- avatar_mixin)
+ DeactivableMixin, ModelSQL, ModelView, Unique, Workflow, avatar_mixin,
+ fields)
from trytond.pool import Pool
-from trytond.pyson import PYSONEncoder, Eval, Bool
+from trytond.pyson import Bool, Eval, PYSONEncoder
from trytond.report import Report, get_email
from trytond.rpc import RPC
from trytond.sendmail import sendmail_transactional
@@ -58,7 +57,7 @@
from trytond.tools.email_ import set_from_header
from trytond.transaction import Transaction
from trytond.url import host, http_host
-from trytond.wizard import Wizard, StateView, Button, StateTransition
+from trytond.wizard import Button, StateTransition, StateView, Wizard
logger = logging.getLogger(__name__)
_has_password = 'password' in re.split('[,+]', config.get(
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/security.py
--- a/trytond/security.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/security.py Sat Dec 11 17:58:45 2021 +0100
@@ -2,11 +2,11 @@
# this repository contains the full copyright notices and license terms.
import logging
+from trytond import backend
+from trytond.config import config
+from trytond.exceptions import LoginException, RateLimitException
from trytond.pool import Pool
-from trytond.config import config
from trytond.transaction import Transaction
-from trytond import backend
-from trytond.exceptions import LoginException, RateLimitException
logger = logging.getLogger(__name__)
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/sendmail.py
--- a/trytond/sendmail.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/sendmail.py Sat Dec 11 17:58:45 2021 +0100
@@ -3,8 +3,8 @@
import logging
import smtplib
from email.message import Message
+from email.mime.text import MIMEText
from email.utils import formatdate
-from email.mime.text import MIMEText
from urllib.parse import parse_qs, unquote_plus
from trytond.config import config, parse_uri
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/__init__.py
--- a/trytond/tests/__init__.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/__init__.py Sat Dec 11 17:58:45 2021 +0100
@@ -8,46 +8,15 @@
def register():
- from . import access
- from . import copy_
- from . import export_data
- from . import field_binary
- from . import field_boolean
- from . import field_char
- from . import field_context
- from . import field_date
- from . import field_datetime
- from . import field_dict
- from . import field_float
- from . import field_function
- from . import field_integer
- from . import field_many2many
- from . import field_many2one
- from . import field_multiselection
- from . import field_numeric
- from . import field_one2many
- from . import field_one2one
- from . import field_reference
- from . import field_selection
- from . import field_text
- from . import field_time
- from . import field_timedelta
- from . import history
- from . import import_data
- from . import mixin
- from . import model
- from . import modelsql
- from . import modelstorage
- from . import modelview
- from . import mptt
- from . import multivalue
- from . import path
- from . import resource
- from . import rule
- from . import tree
- from . import trigger
- from . import wizard
- from . import workflow
+ from . import (
+ access, copy_, export_data, field_binary, field_boolean, field_char,
+ field_context, field_date, field_datetime, field_dict, field_float,
+ field_function, field_integer, field_many2many, field_many2one,
+ field_multiselection, field_numeric, field_one2many, field_one2one,
+ field_reference, field_selection, field_text, field_time,
+ field_timedelta, history, import_data, mixin, model, modelsql,
+ modelstorage, modelview, mptt, multivalue, path, resource, rule, tree,
+ trigger, wizard, workflow)
access.register('tests')
copy_.register('tests')
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/export_data.py
--- a/trytond/tests/export_data.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/export_data.py Sat Dec 11 17:58:45 2021 +0100
@@ -2,7 +2,7 @@
# this repository contains the full copyright notices and license terms.
"Test for export_data"
from trytond.model import ModelSQL, fields
-from trytond.pool import PoolMeta, Pool
+from trytond.pool import Pool, PoolMeta
class ExportDataTarget(ModelSQL):
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/field_context.py
--- a/trytond/tests/field_context.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/field_context.py Sat Dec 11 17:58:45 2021 +0100
@@ -2,8 +2,8 @@
# this repository contains the full copyright notices and license terms.
from trytond.model import ModelSQL, fields
+from trytond.pool import Pool
from trytond.pyson import Eval
-from trytond.pool import Pool
class FieldContextParent(ModelSQL):
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/field_dict.py
--- a/trytond/tests/field_dict.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/field_dict.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,7 +1,7 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
-from trytond.model import ModelSQL, DictSchemaMixin, fields
+from trytond.model import DictSchemaMixin, ModelSQL, fields
from trytond.pool import Pool
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/field_many2one.py
--- a/trytond/tests/field_many2one.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/field_many2one.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,7 +1,7 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
-from trytond.model import ModelSQL, ModelStorage, DeactivableMixin, fields
+from trytond.model import DeactivableMixin, ModelSQL, ModelStorage, fields
from trytond.pool import Pool
from trytond.transaction import Transaction
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/model.py
--- a/trytond/tests/model.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/model.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,7 +1,7 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
-from trytond.model import (ModelSingleton, ModelSQL, UnionMixin, fields,
- sequence_ordered)
+from trytond.model import (
+ ModelSingleton, ModelSQL, UnionMixin, fields, sequence_ordered)
from trytond.pool import Pool
from trytond.pyson import Eval
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/modelsql.py
--- a/trytond/tests/modelsql.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/modelsql.py Sat Dec 11 17:58:45 2021 +0100
@@ -4,7 +4,7 @@
from sql.operators import Equal
from trytond.model import (
- ModelSQL, fields, Check, Unique, Exclude, DeactivableMixin)
+ Check, DeactivableMixin, Exclude, ModelSQL, Unique, fields)
from trytond.pool import Pool
from trytond.pyson import Eval
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/modelstorage.py
--- a/trytond/tests/modelstorage.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/modelstorage.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,9 +1,11 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
-from trytond.model import ModelSQL, ModelStorage as ModelStorage_, fields
+from trytond.model import ModelSQL
+from trytond.model import ModelStorage as ModelStorage_
+from trytond.model import fields
+from trytond.pool import Pool
from trytond.pyson import Eval, If
from trytond.transaction import Transaction
-from trytond.pool import Pool
class ModelStorage(ModelSQL):
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/modelview.py
--- a/trytond/tests/modelview.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/modelview.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,9 +1,9 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
-from trytond.model import ModelView, ModelSQL, DictSchemaMixin, fields
+from trytond.model import DictSchemaMixin, ModelSQL, ModelView, fields
from trytond.pool import Pool
-from trytond.pyson import If, Eval
+from trytond.pyson import Eval, If
class ModelViewChangedValues(ModelView):
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/mptt.py
--- a/trytond/tests/mptt.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/mptt.py Sat Dec 11 17:58:45 2021 +0100
@@ -4,7 +4,7 @@
from sql import Null
from sql.conditionals import Case
-from trytond.model import ModelView, ModelSQL, DeactivableMixin, tree, fields
+from trytond.model import DeactivableMixin, ModelSQL, ModelView, fields, tree
from trytond.pool import Pool
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/path.py
--- a/trytond/tests/path.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/path.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,6 +1,6 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
-from trytond.model import ModelSQL, DeactivableMixin, tree, fields
+from trytond.model import DeactivableMixin, ModelSQL, fields, tree
from trytond.pool import Pool
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/resource.py
--- a/trytond/tests/resource.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/resource.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,10 +1,9 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
+from trytond.ir.note import NoteCopyMixin
from trytond.model import ModelSQL
from trytond.pool import Pool
-from trytond.ir.note import NoteCopyMixin
-
class TestResource(ModelSQL, NoteCopyMixin):
"Test Resource"
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/run-tests.py
--- a/trytond/tests/run-tests.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/run-tests.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,12 +1,12 @@
#!/usr/bin/env python3
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
+import argparse
import logging
-import argparse
import os
+import sys
import time
import unittest
-import sys
from trytond.config import config
@@ -36,6 +36,7 @@
# Import after application is configured
from trytond import backend # noqa: E402
+
if backend.name == 'sqlite':
database_name = ':memory:'
else:
@@ -43,6 +44,7 @@
os.environ.setdefault('DB_NAME', database_name)
from trytond.tests.test_tryton import all_suite, modules_suite # noqa: E402
+
if not opt.modules:
suite = all_suite(opt.tests)
else:
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/test_access.py
--- a/trytond/tests/test_access.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/test_access.py Sat Dec 11 17:58:45 2021 +0100
@@ -4,9 +4,9 @@
import unittest
from trytond.model.exceptions import AccessError
+from trytond.pool import Pool
from trytond.tests.test_tryton import activate_module, with_transaction
from trytond.transaction import Transaction
-from trytond.pool import Pool
_context = {'_check_access': True}
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/test_backend.py
--- a/trytond/tests/test_backend.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/test_backend.py Sat Dec 11 17:58:45 2021 +0100
@@ -4,8 +4,7 @@
import math
import unittest
-from sql import Select
-from sql import functions, Literal
+from sql import Literal, Select, functions
from sql.functions import CurrentTimestamp, ToChar
from trytond.tests.test_tryton import activate_module, with_transaction
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/test_bus.py
--- a/trytond/tests/test_bus.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/test_bus.py Sat Dec 11 17:58:45 2021 +0100
@@ -5,10 +5,10 @@
import unittest
from unittest.mock import patch
-from trytond import bus, backend
-from trytond.bus import _MessageQueue, notify, Bus
+from trytond import backend, bus
+from trytond.bus import Bus, _MessageQueue, notify
from trytond.tests.test_tryton import (
- activate_module, with_transaction, DB_NAME)
+ DB_NAME, activate_module, with_transaction)
from trytond.transaction import Transaction
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/test_cache.py
--- a/trytond/tests/test_cache.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/test_cache.py Sat Dec 11 17:58:45 2021 +0100
@@ -4,14 +4,14 @@
import time
import unittest
-from trytond import backend, cache as cache_mod
+from trytond import backend
+from trytond import cache as cache_mod
from trytond.cache import (
- freeze, unfreeze, MemoryCache, LRUDict, LRUDictTransaction)
-from trytond.tests.test_tryton import with_transaction, activate_module
-from trytond.tests.test_tryton import DB_NAME, USER
+ LRUDict, LRUDictTransaction, MemoryCache, freeze, unfreeze)
+from trytond.tests.test_tryton import (
+ DB_NAME, USER, activate_module, with_transaction)
from trytond.transaction import Transaction
-
cache = MemoryCache('test.cache')
cache_expire = MemoryCache('test.cache_expire', duration=1)
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/test_copy.py
--- a/trytond/tests/test_copy.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/test_copy.py Sat Dec 11 17:58:45 2021 +0100
@@ -5,9 +5,9 @@
from trytond.model import fields
from trytond.model.exceptions import AccessError
+from trytond.pool import Pool
from trytond.tests.test_tryton import activate_module, with_transaction
from trytond.transaction import Transaction
-from trytond.pool import Pool
from .test_modelsql import TranslationTestCase
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/test_descriptors.py
--- a/trytond/tests/test_descriptors.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/test_descriptors.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,7 +1,7 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
+import doctest
import unittest
-import doctest
from trytond.model import descriptors
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/test_exportdata.py
--- a/trytond/tests/test_exportdata.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/test_exportdata.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,11 +1,12 @@
# -*- coding: utf-8 -*-
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
+import datetime
import unittest
from decimal import Decimal
-import datetime
+
+from trytond.pool import Pool
from trytond.tests.test_tryton import activate_module, with_transaction
-from trytond.pool import Pool
class ExportDataTestCase(unittest.TestCase):
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/test_field_binary.py
--- a/trytond/tests/test_field_binary.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/test_field_binary.py Sat Dec 11 17:58:45 2021 +0100
@@ -7,8 +7,8 @@
from sql import Literal
from trytond.config import config
+from trytond.model import fields
from trytond.model.exceptions import RequiredValidationError
-from trytond.model import fields
from trytond.pool import Pool
from trytond.tests.test_tryton import activate_module, with_transaction
from trytond.transaction import Transaction
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/test_field_char.py
--- a/trytond/tests/test_field_char.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/test_field_char.py Sat Dec 11 17:58:45 2021 +0100
@@ -7,10 +7,10 @@
from trytond import backend
from trytond.model.exceptions import (
- RequiredValidationError, ForbiddenCharValidationError)
+ ForbiddenCharValidationError, RequiredValidationError)
from trytond.pool import Pool
-from trytond.tests.test_tryton import activate_module, with_transaction
-from trytond.tests.test_tryton import ExtensionTestCase
+from trytond.tests.test_tryton import (
+ ExtensionTestCase, activate_module, with_transaction)
from trytond.transaction import Transaction
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/test_field_context.py
--- a/trytond/tests/test_field_context.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/test_field_context.py Sat Dec 11 17:58:45 2021 +0100
@@ -3,8 +3,8 @@
import unittest
+from trytond.pool import Pool
from trytond.tests.test_tryton import activate_module, with_transaction
-from trytond.pool import Pool
class FieldContextTestCase(unittest.TestCase):
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/test_field_dict.py
--- a/trytond/tests/test_field_dict.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/test_field_dict.py Sat Dec 11 17:58:45 2021 +0100
@@ -6,8 +6,8 @@
from trytond.model.dictschema import SelectionError
from trytond.model.exceptions import RequiredValidationError
from trytond.pool import Pool
-from trytond.tests.test_tryton import activate_module, with_transaction
-from trytond.tests.test_tryton import ExtensionTestCase
+from trytond.tests.test_tryton import (
+ ExtensionTestCase, activate_module, with_transaction)
class FieldDictTestCase(unittest.TestCase):
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/test_field_float.py
--- a/trytond/tests/test_field_float.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/test_field_float.py Sat Dec 11 17:58:45 2021 +0100
@@ -5,7 +5,7 @@
from sql import Literal
from trytond.model.exceptions import (
- RequiredValidationError, DigitsValidationError)
+ DigitsValidationError, RequiredValidationError)
from trytond.pool import Pool
from trytond.tests.test_tryton import activate_module, with_transaction
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/test_field_integer.py
--- a/trytond/tests/test_field_integer.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/test_field_integer.py Sat Dec 11 17:58:45 2021 +0100
@@ -5,7 +5,7 @@
from sql import Literal
from trytond.model.exceptions import (
- RequiredValidationError, DomainValidationError)
+ DomainValidationError, RequiredValidationError)
from trytond.pool import Pool
from trytond.tests.test_tryton import activate_module, with_transaction
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/test_field_multiselection.py
--- a/trytond/tests/test_field_multiselection.py Sun Nov 28 14:31:45
2021 +0100
+++ b/trytond/tests/test_field_multiselection.py Sat Dec 11 17:58:45
2021 +0100
@@ -4,7 +4,7 @@
from trytond import backend
from trytond.model.exceptions import (
- SelectionValidationError, RequiredValidationError)
+ RequiredValidationError, SelectionValidationError)
from trytond.pool import Pool
from trytond.tests.test_tryton import activate_module, with_transaction
from trytond.transaction import Transaction
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/test_field_numeric.py
--- a/trytond/tests/test_field_numeric.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/test_field_numeric.py Sat Dec 11 17:58:45 2021 +0100
@@ -6,7 +6,7 @@
from sql import Literal
from trytond.model.exceptions import (
- RequiredValidationError, DigitsValidationError)
+ DigitsValidationError, RequiredValidationError)
from trytond.pool import Pool
from trytond.tests.test_tryton import activate_module, with_transaction
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/test_field_one2one.py
--- a/trytond/tests/test_field_one2one.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/test_field_one2one.py Sat Dec 11 17:58:45 2021 +0100
@@ -3,7 +3,7 @@
import unittest
from trytond.model.exceptions import (
- SQLConstraintError, RequiredValidationError, DomainValidationError)
+ DomainValidationError, RequiredValidationError, SQLConstraintError)
from trytond.pool import Pool
from trytond.tests.test_tryton import activate_module, with_transaction
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/test_field_selection.py
--- a/trytond/tests/test_field_selection.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/test_field_selection.py Sat Dec 11 17:58:45 2021 +0100
@@ -3,7 +3,7 @@
import unittest
from trytond.model.exceptions import (
- SelectionValidationError, RequiredValidationError)
+ RequiredValidationError, SelectionValidationError)
from trytond.pool import Pool
from trytond.tests.test_tryton import activate_module, with_transaction
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/test_history.py
--- a/trytond/tests/test_history.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/test_history.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,13 +1,13 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
+import datetime
import unittest
-import datetime
+from trytond import backend
from trytond.model.exceptions import AccessError
+from trytond.pool import Pool
from trytond.tests.test_tryton import activate_module, with_transaction
from trytond.transaction import Transaction
-from trytond.pool import Pool
-from trytond import backend
class HistoryTestCase(unittest.TestCase):
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/test_i18n.py
--- a/trytond/tests/test_i18n.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/test_i18n.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,9 +1,10 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
import unittest
-from trytond.tests.test_tryton import activate_module, with_transaction
+
from trytond.i18n import gettext, lazy_gettext
from trytond.pool import Pool
+from trytond.tests.test_tryton import activate_module, with_transaction
from trytond.tools.string_ import LazyString
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/test_importdata.py
--- a/trytond/tests/test_importdata.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/test_importdata.py Sat Dec 11 17:58:45 2021 +0100
@@ -3,13 +3,13 @@
# this repository contains the full copyright notices and license terms.
import datetime
import unittest
-from decimal import InvalidOperation, Decimal
+from decimal import Decimal, InvalidOperation
from trytond.model.exceptions import (
- RequiredValidationError, SelectionValidationError, ImportDataError)
+ ImportDataError, RequiredValidationError, SelectionValidationError)
+from trytond.pool import Pool
from trytond.tests.test_tryton import activate_module, with_transaction
from trytond.transaction import Transaction
-from trytond.pool import Pool
class ImportDataTestCase(unittest.TestCase):
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/test_ir.py
--- a/trytond/tests/test_ir.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/test_ir.py Sat Dec 11 17:58:45 2021 +0100
@@ -3,7 +3,7 @@
import datetime
import unittest
from decimal import Decimal
-from unittest.mock import Mock, patch, ANY
+from unittest.mock import ANY, Mock, patch
from dateutil.relativedelta import relativedelta
@@ -11,6 +11,7 @@
from trytond.pool import Pool
from trytond.pyson import Eval, If, PYSONEncoder
from trytond.transaction import Transaction
+
from .test_tryton import ModuleTestCase, with_transaction
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/test_mixins.py
--- a/trytond/tests/test_mixins.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/test_mixins.py Sat Dec 11 17:58:45 2021 +0100
@@ -5,13 +5,13 @@
import unittest
import urllib.parse
-from trytond.tests.test_tryton import activate_module, with_transaction
-from trytond.transaction import Transaction
from trytond.model import ModelView
from trytond.pool import Pool
-from trytond.url import http_host, HOSTNAME
+from trytond.tests.test_tryton import activate_module, with_transaction
+from trytond.transaction import Transaction
+from trytond.url import HOSTNAME, http_host
-from .mixin import TestMixin, TestSecondMixin, NotMixin, ReportMixin
+from .mixin import NotMixin, ReportMixin, TestMixin, TestSecondMixin
class UrlTestCase(unittest.TestCase):
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/test_model.py
--- a/trytond/tests/test_model.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/test_model.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,9 +1,8 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of this
# repository contains the full copyright notices and license terms.
+import unittest
from copy import copy
-import unittest
-
from trytond.model.model import record
from trytond.pool import Pool
from trytond.tests.test_tryton import activate_module, with_transaction
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/test_modelsingleton.py
--- a/trytond/tests/test_modelsingleton.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/test_modelsingleton.py Sat Dec 11 17:58:45 2021 +0100
@@ -3,9 +3,10 @@
# this repository contains the full copyright notices and license terms.
import unittest
from datetime import datetime
+
+from trytond.pool import Pool
from trytond.tests.test_tryton import activate_module, with_transaction
from trytond.transaction import Transaction
-from trytond.pool import Pool
class ModelSingletonTestCase(unittest.TestCase):
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/test_modelsql.py
--- a/trytond/tests/test_modelsql.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/test_modelsql.py Sat Dec 11 17:58:45 2021 +0100
@@ -3,18 +3,18 @@
# repository contains the full copyright notices and license terms.
import random
+import time
import unittest
-import time
-from unittest.mock import patch, call
+from unittest.mock import call, patch
from trytond import backend
from trytond.exceptions import ConcurrencyException
from trytond.model.exceptions import (
- RequiredValidationError, SQLConstraintError, ForeignKeyError)
+ ForeignKeyError, RequiredValidationError, SQLConstraintError)
from trytond.model.modelsql import split_subquery_domain
-from trytond.transaction import Transaction
from trytond.pool import Pool
from trytond.tests.test_tryton import activate_module, with_transaction
+from trytond.transaction import Transaction
class ModelSQLTestCase(unittest.TestCase):
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/test_modelstorage.py
--- a/trytond/tests/test_modelstorage.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/test_modelstorage.py Sat Dec 11 17:58:45 2021 +0100
@@ -5,10 +5,10 @@
from trytond.model import EvalEnvironment
from trytond.model.exceptions import (
- RequiredValidationError, DomainValidationError, AccessError)
+ AccessError, DomainValidationError, RequiredValidationError)
from trytond.pool import Pool
+from trytond.tests.test_tryton import activate_module, with_transaction
from trytond.transaction import Transaction
-from trytond.tests.test_tryton import activate_module, with_transaction
class ModelStorageTestCase(unittest.TestCase):
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/test_modelview.py
--- a/trytond/tests/test_modelview.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/test_modelview.py Sat Dec 11 17:58:45 2021 +0100
@@ -6,10 +6,10 @@
from lxml import etree
-from trytond.model.exceptions import AccessError, AccessButtonError
+from trytond.model.exceptions import AccessButtonError, AccessError
+from trytond.pool import Pool
+from trytond.pyson import Eval, PYSONDecoder, PYSONEncoder
from trytond.tests.test_tryton import activate_module, with_transaction
-from trytond.pool import Pool
-from trytond.pyson import PYSONEncoder, PYSONDecoder, Eval
class ModelView(unittest.TestCase):
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/test_mptt.py
--- a/trytond/tests/test_mptt.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/test_mptt.py Sat Dec 11 17:58:45 2021 +0100
@@ -5,9 +5,9 @@
import unittest
from unittest.mock import patch
+from trytond.pool import Pool
from trytond.tests.test_tryton import activate_module, with_transaction
from trytond.transaction import Transaction
-from trytond.pool import Pool
from .test_tree import TreeTestCaseMixin
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/test_multivalue.py
--- a/trytond/tests/test_multivalue.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/test_multivalue.py Sat Dec 11 17:58:45 2021 +0100
@@ -2,8 +2,8 @@
# this repository contains the full copyright notices and license terms.
import unittest
+from trytond.pool import Pool
from trytond.tests.test_tryton import activate_module, with_transaction
-from trytond.pool import Pool
class MultiValueTestCase(unittest.TestCase):
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/test_order.py
--- a/trytond/tests/test_order.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/test_order.py Sat Dec 11 17:58:45 2021 +0100
@@ -2,8 +2,8 @@
# this repository contains the full copyright notices and license terms.
import unittest
+from trytond.pool import Pool
from trytond.tests.test_tryton import activate_module, with_transaction
-from trytond.pool import Pool
class SequenceOrderedMixinTestCase(unittest.TestCase):
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/test_protocols.py
--- a/trytond/tests/test_protocols.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/test_protocols.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,14 +1,14 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
-import unittest
+import datetime
import json
-import datetime
+import unittest
from decimal import Decimal
+from trytond.protocols.jsonrpc import JSONDecoder, JSONEncoder, JSONRequest
+from trytond.protocols.xmlrpc import XMLRequest, client
from trytond.tools.immutabledict import ImmutableDict
-from trytond.protocols.jsonrpc import JSONEncoder, JSONDecoder, JSONRequest
-from trytond.protocols.xmlrpc import client, XMLRequest
class DumpsLoadsMixin:
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/test_pyson.py
--- a/trytond/tests/test_pyson.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/test_pyson.py Sat Dec 11 17:58:45 2021 +0100
@@ -2,11 +2,11 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
-import unittest
import datetime
import sys
+import unittest
+from decimal import Decimal
-from decimal import Decimal
from trytond import pyson
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/test_report.py
--- a/trytond/tests/test_report.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/test_report.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,10 +1,10 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
+import datetime
import unittest
-import datetime
+from trytond.report.report import Report
from trytond.tests.test_tryton import activate_module, with_transaction
-from trytond.report.report import Report
class ReportTestCase(unittest.TestCase):
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/test_resource.py
--- a/trytond/tests/test_resource.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/test_resource.py Sat Dec 11 17:58:45 2021 +0100
@@ -3,8 +3,8 @@
import unittest
from trytond.pool import Pool
+from trytond.tests.test_tryton import activate_module, with_transaction
from trytond.transaction import Transaction
-from trytond.tests.test_tryton import activate_module, with_transaction
class ResourceTestCase(unittest.TestCase):
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/test_routes.py
--- a/trytond/tests/test_routes.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/test_routes.py Sat Dec 11 17:58:45 2021 +0100
@@ -9,7 +9,7 @@
from werkzeug.wrappers import BaseResponse
from trytond.pool import Pool
-from trytond.tests.test_tryton import activate_module, DB_NAME, drop_db
+from trytond.tests.test_tryton import DB_NAME, activate_module, drop_db
from trytond.transaction import Transaction
from trytond.wsgi import app
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/test_rpc.py
--- a/trytond/tests/test_rpc.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/test_rpc.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,10 +1,10 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
import unittest
-from unittest.mock import Mock, DEFAULT, call
+from unittest.mock import DEFAULT, Mock, call
-from trytond.tests.test_tryton import with_transaction, activate_module
from trytond.rpc import RPC
+from trytond.tests.test_tryton import activate_module, with_transaction
from trytond.transaction import Transaction
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/test_sendmail.py
--- a/trytond/tests/test_sendmail.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/test_sendmail.py Sat Dec 11 17:58:45 2021 +0100
@@ -3,12 +3,13 @@
import smtplib
import unittest
from email.message import Message
-from unittest.mock import Mock, MagicMock, patch, call
+from unittest.mock import MagicMock, Mock, call, patch
from trytond.sendmail import (
- sendmail_transactional, sendmail, SMTPDataManager, get_smtp_server)
+ SMTPDataManager, get_smtp_server, sendmail, sendmail_transactional)
from trytond.transaction import Transaction
-from .test_tryton import with_transaction, activate_module
+
+from .test_tryton import activate_module, with_transaction
class SendmailTestCase(unittest.TestCase):
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/test_sequence.py
--- a/trytond/tests/test_sequence.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/test_sequence.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,12 +1,13 @@
# -*- coding: utf-8 -*-
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
+import datetime
import unittest
-import datetime
+
+from trytond.ir.sequence import LastTimestampError
+from trytond.pool import Pool
from trytond.tests.test_tryton import activate_module, with_transaction
from trytond.transaction import Transaction
-from trytond.pool import Pool
-from trytond.ir.sequence import LastTimestampError
class SequenceTestCase(unittest.TestCase):
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/test_tools.py
--- a/trytond/tests/test_tools.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/test_tools.py Sat Dec 11 17:58:45 2021 +0100
@@ -3,24 +3,24 @@
# this repository contains the full copyright notices and license terms.
import datetime as dt
-import unittest
import doctest
import sys
+import unittest
import sql
import sql.operators
from trytond.tools import (
- reduce_ids, reduce_domain, decimal_, is_instance_method, file_open,
- strip_wildcard, lstrip_wildcard, rstrip_wildcard, slugify, sortable_values,
- escape_wildcard, unescape_wildcard, is_full_text, firstline,
- remove_forbidden_chars)
-from trytond.tools.string_ import StringPartitioned, LazyString
+ decimal_, escape_wildcard, file_open, firstline, is_full_text,
+ is_instance_method, lstrip_wildcard, reduce_domain, reduce_ids,
+ remove_forbidden_chars, rstrip_wildcard, slugify, sortable_values,
+ strip_wildcard, unescape_wildcard)
from trytond.tools.domain_inversion import (
- domain_inversion, parse, simplify, merge, concat, unique_value,
- eval_domain, localize_domain,
- prepare_reference_domain, extract_reference_models)
+ concat, domain_inversion, eval_domain, extract_reference_models,
+ localize_domain, merge, parse, prepare_reference_domain, simplify,
+ unique_value)
from trytond.tools.immutabledict import ImmutableDict
+from trytond.tools.string_ import LazyString, StringPartitioned
class ToolsTestCase(unittest.TestCase):
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/test_transaction.py
--- a/trytond/tests/test_transaction.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/test_transaction.py Sat Dec 11 17:58:45 2021 +0100
@@ -3,7 +3,7 @@
import unittest
from unittest.mock import Mock
-from trytond.tests.test_tryton import DB_NAME, USER, CONTEXT, activate_module
+from trytond.tests.test_tryton import CONTEXT, DB_NAME, USER, activate_module
from trytond.transaction import Transaction
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/test_tree.py
--- a/trytond/tests/test_tree.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/test_tree.py Sat Dec 11 17:58:45 2021 +0100
@@ -4,8 +4,8 @@
import unittest
from trytond.model.exceptions import DomainValidationError, RecursionError
+from trytond.pool import Pool
from trytond.tests.test_tryton import activate_module, with_transaction
-from trytond.pool import Pool
class TreeTestCaseMixin:
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/test_trigger.py
--- a/trytond/tests/test_trigger.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/test_trigger.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,18 +1,17 @@
# -*- coding: utf-8 -*-
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
+import datetime
import unittest
-import datetime
from itertools import combinations
+from trytond.ir.exceptions import TriggerConditionError
from trytond.model.exceptions import SQLConstraintError
+from trytond.pool import Pool
+from trytond.pyson import Eval, PYSONEncoder
from trytond.tests.test_tryton import activate_module, with_transaction
from trytond.tests.trigger import TRIGGER_LOGS
from trytond.transaction import Transaction
-from trytond.pool import Pool
-from trytond.pyson import PYSONEncoder, Eval
-
-from trytond.ir.exceptions import TriggerConditionError
class TriggerTestCase(unittest.TestCase):
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/test_tryton.py
--- a/trytond/tests/test_tryton.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/test_tryton.py Sat Dec 11 17:58:45 2021 +0100
@@ -11,9 +11,9 @@
import unittest
import unittest.mock
from configparser import ConfigParser
-from functools import reduce
-from functools import wraps
+from functools import reduce, wraps
from itertools import chain
+
try:
import pkg_resources
except ImportError:
@@ -22,17 +22,17 @@
from lxml import etree
from sql import Table
-from trytond.pool import Pool, isregisteredby
from trytond import backend
-from trytond.model import (
- Workflow, ModelSQL, ModelStorage, ModelSingleton, ModelView, fields)
-from trytond.model.fields import get_eval_fields, Function
-from trytond.tools import is_instance_method, file_open
-from trytond.transaction import Transaction
from trytond.cache import Cache
from trytond.config import config, parse_uri
-from trytond.wizard import StateView, StateAction
+from trytond.model import (
+ ModelSingleton, ModelSQL, ModelStorage, ModelView, Workflow, fields)
+from trytond.model.fields import Function, get_eval_fields
+from trytond.pool import Pool, isregisteredby
from trytond.pyson import PYSONDecoder, PYSONEncoder
+from trytond.tools import file_open, is_instance_method
+from trytond.transaction import Transaction
+from trytond.wizard import StateAction, StateView
__all__ = ['DB_NAME', 'USER', 'CONTEXT',
'activate_module', 'ModuleTestCase', 'with_transaction',
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/test_union.py
--- a/trytond/tests/test_union.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/test_union.py Sat Dec 11 17:58:45 2021 +0100
@@ -2,8 +2,8 @@
# this repository contains the full copyright notices and license terms.
import unittest
+from trytond.pool import Pool
from trytond.tests.test_tryton import activate_module, with_transaction
-from trytond.pool import Pool
class UnionMixinTestCase(unittest.TestCase):
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/test_user.py
--- a/trytond/tests/test_user.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/test_user.py Sat Dec 11 17:58:45 2021 +0100
@@ -4,13 +4,13 @@
import os
import unittest
from contextlib import contextmanager
-from unittest.mock import patch, ANY, Mock
+from unittest.mock import ANY, Mock, patch
-from trytond.tests.test_tryton import activate_module, with_transaction
+from trytond.config import config
from trytond.pool import Pool
-from trytond.config import config
from trytond.res import user as user_module
from trytond.res.user import PasswordError
+from trytond.tests.test_tryton import activate_module, with_transaction
from trytond.transaction import Transaction
FROM = '[email protected]'
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/test_wizard.py
--- a/trytond/tests/test_wizard.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/test_wizard.py Sat Dec 11 17:58:45 2021 +0100
@@ -3,9 +3,9 @@
import unittest
from trytond.model.exceptions import AccessError
+from trytond.pool import Pool
from trytond.tests.test_tryton import activate_module, with_transaction
from trytond.transaction import Transaction
-from trytond.pool import Pool
class WizardTestCase(unittest.TestCase):
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/test_workflow.py
--- a/trytond/tests/test_workflow.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/test_workflow.py Sat Dec 11 17:58:45 2021 +0100
@@ -3,8 +3,8 @@
import unittest
+from trytond.pool import Pool
from trytond.tests.test_tryton import activate_module, with_transaction
-from trytond.pool import Pool
class WorkflowTestCase(unittest.TestCase):
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/test_wsgi.py
--- a/trytond/tests/test_wsgi.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/test_wsgi.py Sat Dec 11 17:58:45 2021 +0100
@@ -4,10 +4,11 @@
import unittest
from unittest.mock import Mock, sentinel
+from werkzeug.test import Client
from werkzeug.wrappers import Response
-from werkzeug.test import Client
+
+from trytond.exceptions import TrytonException
from trytond.wsgi import TrytondWSGI
-from trytond.exceptions import TrytonException
class WSGIAppTestCase(unittest.TestCase):
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/tools.py
--- a/trytond/tests/tools.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/tools.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,8 +1,9 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
-from proteus import config as pconfig, Model, Wizard
+from proteus import Model, Wizard
+from proteus import config as pconfig
-from .test_tryton import restore_db_cache, backup_db_cache, drop_create
+from .test_tryton import backup_db_cache, drop_create, restore_db_cache
__all__ = ['activate_modules', 'set_user']
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/tree.py
--- a/trytond/tests/tree.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/tree.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,7 +1,7 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
-from trytond.model import ModelSQL, tree, fields
+from trytond.model import ModelSQL, fields, tree
from trytond.pool import Pool
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tests/wizard.py
--- a/trytond/tests/wizard.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tests/wizard.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,10 +1,10 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
-from trytond.model import ModelView, ModelSQL, fields
+from trytond.model import ModelSQL, ModelView, fields
from trytond.pool import Pool
from trytond.transaction import Transaction
-from trytond.wizard import Wizard, StateView, StateTransition, StateAction, \
- Button
+from trytond.wizard import (
+ Button, StateAction, StateTransition, StateView, Wizard)
class TestWizardStart(ModelSQL, ModelView):
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tools/__init__.py
--- a/trytond/tools/__init__.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tools/__init__.py Sat Dec 11 17:58:45 2021 +0100
@@ -5,13 +5,12 @@
except ImportError:
from werkzeug.utils import cached_property
+from .decimal_ import decistmt
from .misc import (
- file_open, get_smtp_server, reduce_ids, reduce_domain,
- grouped_slice, is_instance_method, resolve, strip_wildcard,
- lstrip_wildcard, rstrip_wildcard, slugify, sortable_values,
- escape_wildcard, unescape_wildcard, is_full_text, sql_pairing, firstline,
- remove_forbidden_chars)
-from .decimal_ import decistmt
+ escape_wildcard, file_open, firstline, get_smtp_server, grouped_slice,
+ is_full_text, is_instance_method, lstrip_wildcard, reduce_domain,
+ reduce_ids, remove_forbidden_chars, resolve, rstrip_wildcard, slugify,
+ sortable_values, sql_pairing, strip_wildcard, unescape_wildcard)
__all__ = ['file_open', 'get_smtp_server', 'reduce_ids',
'reduce_domain', 'grouped_slice', 'is_instance_method', 'resolve',
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tools/decimal_.py
--- a/trytond/tools/decimal_.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tools/decimal_.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,7 +1,7 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
-from tokenize import tokenize, untokenize, NUMBER, NAME, OP, STRING
from io import BytesIO
+from tokenize import NAME, NUMBER, OP, STRING, tokenize, untokenize
# code snippet taken from http://docs.python.org/library/tokenize.html
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tools/domain_inversion.py
--- a/trytond/tools/domain_inversion.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tools/domain_inversion.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,11 +1,11 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
-import re
+import datetime
import operator
-import datetime
+import re
from collections import defaultdict
-from functools import reduce, partial
+from functools import partial, reduce
def sql_like(value, pattern, ignore_case=True):
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tools/multivalue.py
--- a/trytond/tools/multivalue.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tools/multivalue.py Sat Dec 11 17:58:45 2021 +0100
@@ -2,7 +2,7 @@
# this repository contains the full copyright notices and license terms.
from decimal import Decimal
-from sql import Table, Column, Literal, Union, Null
+from sql import Column, Literal, Null, Table, Union
from sql.aggregate import Max
from trytond import backend
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/tools/string_.py
--- a/trytond/tools/string_.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/tools/string_.py Sat Dec 11 17:58:45 2021 +0100
@@ -6,8 +6,9 @@
__all__ = ['StringMatcher', 'StringPartitioned', 'LazyString']
from warnings import warn
+
try:
- from Levenshtein import opcodes, editops, matching_blocks, ratio, distance
+ from Levenshtein import distance, editops, matching_blocks, opcodes, ratio
class StringMatcher:
"""A SequenceMatcher-like class built on the top of Levenshtein"""
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/transaction.py
--- a/trytond/transaction.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/transaction.py Sat Dec 11 17:58:45 2021 +0100
@@ -4,6 +4,7 @@
import time
from collections import defaultdict
from threading import local
+
from sql import Flavor
from trytond.config import config
@@ -65,8 +66,8 @@
started_at = None
def __new__(cls, new=False):
+ from trytond.cache import LRUDict
from trytond.pool import Pool
- from trytond.cache import LRUDict
transactions = cls._local.transactions
if new or not transactions:
instance = super(Transaction, cls).__new__(cls)
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/url.py
--- a/trytond/url.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/url.py Sat Dec 11 17:58:45 2021 +0100
@@ -62,8 +62,8 @@
def __get__(self, inst, cls):
from trytond.model import Model
+ from trytond.report import Report
from trytond.wizard import Wizard
- from trytond.report import Report
url_part = {}
if issubclass(cls, Model):
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/wizard/__init__.py
--- a/trytond/wizard/__init__.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/wizard/__init__.py Sat Dec 11 17:58:45 2021 +0100
@@ -1,8 +1,7 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
-from .wizard import Wizard
-from .wizard import StateView, StateTransition, StateAction, StateReport
-from .wizard import Button
+from .wizard import (
+ Button, StateAction, StateReport, StateTransition, StateView, Wizard)
__all__ = ['Wizard',
'StateView', 'StateTransition', 'StateAction', 'StateReport',
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/wizard/wizard.py
--- a/trytond/wizard/wizard.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/wizard/wizard.py Sat Dec 11 17:58:45 2021 +0100
@@ -5,20 +5,20 @@
'StateView', 'StateTransition', 'StateAction', 'StateReport',
'Button']
+import copy
import json
-import copy
from trytond.i18n import gettext
-from trytond.pool import Pool, PoolBase
-from trytond.transaction import Transaction
-from trytond.url import URLMixin
-from trytond.protocols.jsonrpc import JSONDecoder, JSONEncoder
from trytond.model import ModelSQL
from trytond.model.exceptions import AccessError
from trytond.model.fields import states_validate
+from trytond.pool import Pool, PoolBase
+from trytond.protocols.jsonrpc import JSONDecoder, JSONEncoder
from trytond.pyson import PYSONEncoder
from trytond.rpc import RPC
from trytond.tools import cached_property
+from trytond.transaction import Transaction
+from trytond.url import URLMixin
class Button(object):
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/worker.py
--- a/trytond/worker.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/worker.py Sat Dec 11 17:58:45 2021 +0100
@@ -6,7 +6,8 @@
import select
import signal
import time
-from multiprocessing import Pool as MPool, cpu_count
+from multiprocessing import Pool as MPool
+from multiprocessing import cpu_count
from sql import Flavor
diff -r 8cd6dd7196eb -r dcc8d636faeb trytond/wsgi.py
--- a/trytond/wsgi.py Sun Nov 28 14:31:45 2021 +0100
+++ b/trytond/wsgi.py Sat Dec 11 17:58:45 2021 +0100
@@ -8,14 +8,16 @@
import sys
import traceback
import urllib.parse
+
try:
from http import HTTPStatus
except ImportError:
from http import client as HTTPStatus
+from werkzeug.exceptions import HTTPException, InternalServerError, abort
+from werkzeug.routing import BaseConverter, Map, Rule
from werkzeug.wrappers import Response
-from werkzeug.routing import Map, Rule, BaseConverter
-from werkzeug.exceptions import abort, HTTPException, InternalServerError
+
try:
from werkzeug.middleware.proxy_fix import ProxyFix
@@ -37,8 +39,8 @@
import wrapt
from trytond.config import config
+from trytond.protocols.jsonrpc import JSONProtocol
from trytond.protocols.wrappers import Request
-from trytond.protocols.jsonrpc import JSONProtocol
from trytond.protocols.xmlrpc import XMLProtocol
from trytond.status import processing
from trytond.tools import resolve
@@ -250,5 +252,5 @@
kwargs = eval(config.get(section, 'kwargs'))
app.wsgi_app = Middleware(app.wsgi_app, *args, **kwargs)
+import trytond.bus # noqa: E402,F401
import trytond.protocols.dispatcher # noqa: E402,F401
-import trytond.bus # noqa: E402,F401