diff --git a/zerver/lib/actions.py b/zerver/lib/actions.py index 2e7a037eef..2cef9719b6 100644 --- a/zerver/lib/actions.py +++ b/zerver/lib/actions.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from __future__ import print_function from typing import ( AbstractSet, Any, AnyStr, Callable, Dict, Iterable, List, Mapping, MutableMapping, diff --git a/zerver/lib/addressee.py b/zerver/lib/addressee.py index e556ac0785..ffd13e741d 100644 --- a/zerver/lib/addressee.py +++ b/zerver/lib/addressee.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from __future__ import print_function from typing import Iterable, List, Optional, Sequence, Text diff --git a/zerver/lib/alert_words.py b/zerver/lib/alert_words.py index 9fd33774ba..96675520f2 100644 --- a/zerver/lib/alert_words.py +++ b/zerver/lib/alert_words.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from django.db.models import Q from zerver.models import UserProfile, Realm diff --git a/zerver/lib/attachments.py b/zerver/lib/attachments.py index 2c699340a2..bf5e9f83fb 100644 --- a/zerver/lib/attachments.py +++ b/zerver/lib/attachments.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from django.utils.translation import ugettext as _ from typing import Any, Dict, List diff --git a/zerver/lib/avatar.py b/zerver/lib/avatar.py index 25f66106c7..4808bac95e 100644 --- a/zerver/lib/avatar.py +++ b/zerver/lib/avatar.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from django.conf import settings if False: diff --git a/zerver/lib/avatar_hash.py b/zerver/lib/avatar_hash.py index 118aad3e12..a3a0e5aedb 100644 --- a/zerver/lib/avatar_hash.py +++ b/zerver/lib/avatar_hash.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from django.conf import settings from typing import Text diff --git a/zerver/lib/bot_lib.py b/zerver/lib/bot_lib.py index e74010117f..9327dd8637 100644 --- a/zerver/lib/bot_lib.py +++ b/zerver/lib/bot_lib.py @@ -1,5 +1,4 @@ from __future__ import print_function -from __future__ import absolute_import import logging import os diff --git a/zerver/lib/bugdown/__init__.py b/zerver/lib/bugdown/__init__.py index 28d0d2e0a4..468eff6960 100644 --- a/zerver/lib/bugdown/__init__.py +++ b/zerver/lib/bugdown/__init__.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import import subprocess # Zulip's main markdown implementation. See docs/markdown.md for # detailed documentation on our markdown syntax. diff --git a/zerver/lib/bugdown/testing_mocks.py b/zerver/lib/bugdown/testing_mocks.py index fb39518ea6..8ac7c92ef7 100644 --- a/zerver/lib/bugdown/testing_mocks.py +++ b/zerver/lib/bugdown/testing_mocks.py @@ -1,5 +1,4 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import from __future__ import unicode_literals from typing import Any, Dict, Optional, Text diff --git a/zerver/lib/bulk_create.py b/zerver/lib/bulk_create.py index 9557c870fb..bf6c1f3540 100644 --- a/zerver/lib/bulk_create.py +++ b/zerver/lib/bulk_create.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from typing import Any, Dict, Iterable, List, Mapping, Optional, Set, Tuple, Text from zerver.lib.initial_password import initial_password diff --git a/zerver/lib/cache.py b/zerver/lib/cache.py index 1e4caeb80e..44e7c00eb1 100644 --- a/zerver/lib/cache.py +++ b/zerver/lib/cache.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from __future__ import print_function from functools import wraps diff --git a/zerver/lib/cache_helpers.py b/zerver/lib/cache_helpers.py index e3fb625c24..cede3ade6f 100644 --- a/zerver/lib/cache_helpers.py +++ b/zerver/lib/cache_helpers.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from six import binary_type from typing import Any, Callable, Dict, List, Tuple, Text diff --git a/zerver/lib/ccache.py b/zerver/lib/ccache.py index 69a63d9fe1..180bf8798b 100644 --- a/zerver/lib/ccache.py +++ b/zerver/lib/ccache.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from typing import Any, Dict, List, Optional, Text # This file is adapted from samples/shellinabox/ssh-krb-wrapper in diff --git a/zerver/lib/context_managers.py b/zerver/lib/context_managers.py index 9e657882ec..ce169cb0e5 100644 --- a/zerver/lib/context_managers.py +++ b/zerver/lib/context_managers.py @@ -2,7 +2,6 @@ Context managers, i.e. things you can use with the 'with' statement. """ -from __future__ import absolute_import import fcntl from contextlib import contextmanager diff --git a/zerver/lib/create_user.py b/zerver/lib/create_user.py index 8e6a8f207e..2ff856ff5a 100644 --- a/zerver/lib/create_user.py +++ b/zerver/lib/create_user.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from django.contrib.auth.models import UserManager from django.utils.timezone import now as timezone_now diff --git a/zerver/lib/db.py b/zerver/lib/db.py index fb13760d4f..a1202c30d8 100644 --- a/zerver/lib/db.py +++ b/zerver/lib/db.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import import time from psycopg2.extensions import cursor, connection diff --git a/zerver/lib/debug.py b/zerver/lib/debug.py index 1e2f98520a..8ca4b6e71f 100644 --- a/zerver/lib/debug.py +++ b/zerver/lib/debug.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import import code import traceback diff --git a/zerver/lib/digest.py b/zerver/lib/digest.py index eea22a39e8..79df9b0b11 100644 --- a/zerver/lib/digest.py +++ b/zerver/lib/digest.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from typing import Any, Callable, Dict, Iterable, List, Set, Tuple, Text from collections import defaultdict diff --git a/zerver/lib/email_mirror.py b/zerver/lib/email_mirror.py index bcb9f32e07..f21743d0e4 100644 --- a/zerver/lib/email_mirror.py +++ b/zerver/lib/email_mirror.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from typing import Any, Dict, List, Optional, Text import logging diff --git a/zerver/lib/emoji.py b/zerver/lib/emoji.py index 8685c2c950..689c1ea1f6 100644 --- a/zerver/lib/emoji.py +++ b/zerver/lib/emoji.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import import os import re diff --git a/zerver/lib/error_notify.py b/zerver/lib/error_notify.py index 67bb34cddc..93fee06a9d 100644 --- a/zerver/lib/error_notify.py +++ b/zerver/lib/error_notify.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import import logging import six diff --git a/zerver/lib/events.py b/zerver/lib/events.py index 5d25d7715a..db0064ed7c 100644 --- a/zerver/lib/events.py +++ b/zerver/lib/events.py @@ -1,6 +1,5 @@ # See http://zulip.readthedocs.io/en/latest/events-system.html for # high-level documentation on how this system works. -from __future__ import absolute_import from __future__ import print_function import copy diff --git a/zerver/lib/exceptions.py b/zerver/lib/exceptions.py index e28c5e420c..1fa1a99f11 100644 --- a/zerver/lib/exceptions.py +++ b/zerver/lib/exceptions.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from enum import Enum from typing import Any, Dict, List, Optional, Text, Type diff --git a/zerver/lib/export.py b/zerver/lib/export.py index a1b0c97a09..fa607c2438 100644 --- a/zerver/lib/export.py +++ b/zerver/lib/export.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from __future__ import print_function import datetime from boto.s3.key import Key diff --git a/zerver/lib/feedback.py b/zerver/lib/feedback.py index 9a7cb9100f..29d5d316b1 100644 --- a/zerver/lib/feedback.py +++ b/zerver/lib/feedback.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from django.conf import settings from django.core.mail import EmailMessage diff --git a/zerver/lib/fix_unreads.py b/zerver/lib/fix_unreads.py index 580bd5d0b9..2d718107e2 100644 --- a/zerver/lib/fix_unreads.py +++ b/zerver/lib/fix_unreads.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from __future__ import print_function import time diff --git a/zerver/lib/generate_test_data.py b/zerver/lib/generate_test_data.py index 55e0e0537f..9fa7932025 100644 --- a/zerver/lib/generate_test_data.py +++ b/zerver/lib/generate_test_data.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from __future__ import print_function import itertools import ujson diff --git a/zerver/lib/html_diff.py b/zerver/lib/html_diff.py index 96aa71544a..1591f88b88 100644 --- a/zerver/lib/html_diff.py +++ b/zerver/lib/html_diff.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from typing import Callable, List, Tuple, Text diff --git a/zerver/lib/i18n.py b/zerver/lib/i18n.py index 213d8446b0..ccd3b143fe 100644 --- a/zerver/lib/i18n.py +++ b/zerver/lib/i18n.py @@ -1,5 +1,4 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import import operator from django.conf import settings diff --git a/zerver/lib/initial_password.py b/zerver/lib/initial_password.py index a16d5cffd8..e706033afb 100644 --- a/zerver/lib/initial_password.py +++ b/zerver/lib/initial_password.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from django.conf import settings diff --git a/zerver/lib/integrations.py b/zerver/lib/integrations.py index b8c4d6aff8..a6aa54b02f 100644 --- a/zerver/lib/integrations.py +++ b/zerver/lib/integrations.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import import os from typing import Dict, List, Optional, TypeVar, Any, Text diff --git a/zerver/lib/logging_util.py b/zerver/lib/logging_util.py index d316daea65..8a71ab1110 100644 --- a/zerver/lib/logging_util.py +++ b/zerver/lib/logging_util.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from django.utils.timezone import now as timezone_now from django.utils.timezone import utc as timezone_utc diff --git a/zerver/lib/management.py b/zerver/lib/management.py index 09a447c31f..b492e7f7d4 100644 --- a/zerver/lib/management.py +++ b/zerver/lib/management.py @@ -1,5 +1,4 @@ # Library code for use in management commands -from __future__ import absolute_import from __future__ import print_function import sys diff --git a/zerver/lib/mention.py b/zerver/lib/mention.py index 078782c130..6f48a00764 100644 --- a/zerver/lib/mention.py +++ b/zerver/lib/mention.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from typing import Optional, Set, Text diff --git a/zerver/lib/message.py b/zerver/lib/message.py index 8bc1d0bdc0..eaed5aa7d8 100644 --- a/zerver/lib/message.py +++ b/zerver/lib/message.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import import datetime import ujson diff --git a/zerver/lib/mobile_auth_otp.py b/zerver/lib/mobile_auth_otp.py index 68c0b69c44..e3e91692ec 100644 --- a/zerver/lib/mobile_auth_otp.py +++ b/zerver/lib/mobile_auth_otp.py @@ -7,7 +7,6 @@ # # The decryption logic here isn't actually used by the flow; we just # have it here as part of testing the overall library. -from __future__ import absolute_import import binascii from six.moves import zip diff --git a/zerver/lib/onboarding.py b/zerver/lib/onboarding.py index 85016864ca..968a74c1a1 100644 --- a/zerver/lib/onboarding.py +++ b/zerver/lib/onboarding.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from __future__ import print_function from django.conf import settings diff --git a/zerver/lib/outgoing_webhook.py b/zerver/lib/outgoing_webhook.py index 2a15d49a95..86209d8de8 100644 --- a/zerver/lib/outgoing_webhook.py +++ b/zerver/lib/outgoing_webhook.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from typing import Any, AnyStr, Iterable, Dict, Tuple, Callable, Text, Mapping, Optional import requests diff --git a/zerver/lib/parallel.py b/zerver/lib/parallel.py index 98c46de776..b6cabcc77c 100644 --- a/zerver/lib/parallel.py +++ b/zerver/lib/parallel.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from __future__ import print_function from typing import Any, Dict, Generator, Iterable, Tuple diff --git a/zerver/lib/profile.py b/zerver/lib/profile.py index 375c509769..3925d9d1dd 100644 --- a/zerver/lib/profile.py +++ b/zerver/lib/profile.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import import cProfile diff --git a/zerver/lib/push_notifications.py b/zerver/lib/push_notifications.py index 1530575b52..f95f303316 100644 --- a/zerver/lib/push_notifications.py +++ b/zerver/lib/push_notifications.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import import base64 import binascii diff --git a/zerver/lib/queue.py b/zerver/lib/queue.py index c5e7fdd186..1ac9838436 100644 --- a/zerver/lib/queue.py +++ b/zerver/lib/queue.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from django.conf import settings import pika diff --git a/zerver/lib/rate_limiter.py b/zerver/lib/rate_limiter.py index 01f1f2bc6a..b1beec47e3 100644 --- a/zerver/lib/rate_limiter.py +++ b/zerver/lib/rate_limiter.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import import os diff --git a/zerver/lib/realm_icon.py b/zerver/lib/realm_icon.py index e740552d04..7a16ec13f8 100644 --- a/zerver/lib/realm_icon.py +++ b/zerver/lib/realm_icon.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from django.conf import settings from typing import Text diff --git a/zerver/lib/redis_utils.py b/zerver/lib/redis_utils.py index e2c589fab1..821ff3f6fc 100644 --- a/zerver/lib/redis_utils.py +++ b/zerver/lib/redis_utils.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from django.conf import settings diff --git a/zerver/lib/request.py b/zerver/lib/request.py index aefd57bf82..08154f0878 100644 --- a/zerver/lib/request.py +++ b/zerver/lib/request.py @@ -5,7 +5,6 @@ # # Because request.pyi exists, the type annotations in this file are # mostly not processed by mypy. -from __future__ import absolute_import from functools import wraps import ujson from six.moves import zip diff --git a/zerver/lib/response.py b/zerver/lib/response.py index e31c2c1b72..4750212aad 100644 --- a/zerver/lib/response.py +++ b/zerver/lib/response.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from django.http import HttpResponse, HttpResponseNotAllowed import ujson diff --git a/zerver/lib/rest.py b/zerver/lib/rest.py index 0e878df850..cb7bfde86f 100644 --- a/zerver/lib/rest.py +++ b/zerver/lib/rest.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from typing import Any, Dict diff --git a/zerver/lib/retention.py b/zerver/lib/retention.py index 854852ddfa..692d6a84c5 100644 --- a/zerver/lib/retention.py +++ b/zerver/lib/retention.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from __future__ import print_function from datetime import timedelta diff --git a/zerver/lib/sessions.py b/zerver/lib/sessions.py index a02b63108e..6c8df14acf 100644 --- a/zerver/lib/sessions.py +++ b/zerver/lib/sessions.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import import logging diff --git a/zerver/lib/soft_deactivation.py b/zerver/lib/soft_deactivation.py index be21b4605c..32a4fdab24 100644 --- a/zerver/lib/soft_deactivation.py +++ b/zerver/lib/soft_deactivation.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from zerver.lib.logging_util import create_logger from collections import defaultdict diff --git a/zerver/lib/statistics.py b/zerver/lib/statistics.py index b4d9d3710b..a8fe65f6bd 100644 --- a/zerver/lib/statistics.py +++ b/zerver/lib/statistics.py @@ -1,5 +1,4 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import from __future__ import division from zerver.models import UserProfile, UserActivity, UserActivityInterval, Message diff --git a/zerver/lib/stream_recipient.py b/zerver/lib/stream_recipient.py index 1f40937efe..e5d044464b 100644 --- a/zerver/lib/stream_recipient.py +++ b/zerver/lib/stream_recipient.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from __future__ import print_function from typing import (Dict, List) diff --git a/zerver/lib/streams.py b/zerver/lib/streams.py index c5c51e8431..e6df284392 100644 --- a/zerver/lib/streams.py +++ b/zerver/lib/streams.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from typing import Any, Iterable, List, Mapping, Set, Text, Tuple diff --git a/zerver/lib/test_classes.py b/zerver/lib/test_classes.py index acae1d93bf..0be041f951 100644 --- a/zerver/lib/test_classes.py +++ b/zerver/lib/test_classes.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from __future__ import print_function from contextlib import contextmanager from typing import (cast, Any, Callable, Dict, Iterable, Iterator, List, Mapping, Optional, diff --git a/zerver/lib/test_helpers.py b/zerver/lib/test_helpers.py index 7f8dd3cd33..dc97dffbcc 100644 --- a/zerver/lib/test_helpers.py +++ b/zerver/lib/test_helpers.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from __future__ import print_function from contextlib import contextmanager from typing import (cast, Any, Callable, Dict, Generator, Iterable, Iterator, List, Mapping, diff --git a/zerver/lib/tex.py b/zerver/lib/tex.py index c0b4ddfac0..d48ab18be4 100644 --- a/zerver/lib/tex.py +++ b/zerver/lib/tex.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import import logging import os diff --git a/zerver/lib/timeout.py b/zerver/lib/timeout.py index 1f44234b71..c624348c1e 100644 --- a/zerver/lib/timeout.py +++ b/zerver/lib/timeout.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from types import TracebackType from typing import Any, Callable, Optional, Tuple, Type, TypeVar diff --git a/zerver/lib/timestamp.py b/zerver/lib/timestamp.py index f91cd6cb02..d951784df6 100644 --- a/zerver/lib/timestamp.py +++ b/zerver/lib/timestamp.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import import datetime import calendar diff --git a/zerver/lib/timezone.py b/zerver/lib/timezone.py index 84a919ddb3..51a0ed2dd6 100644 --- a/zerver/lib/timezone.py +++ b/zerver/lib/timezone.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from typing import Text, List diff --git a/zerver/lib/topic_mutes.py b/zerver/lib/topic_mutes.py index db1c459273..29c05f96e1 100644 --- a/zerver/lib/topic_mutes.py +++ b/zerver/lib/topic_mutes.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from zerver.models import UserProfile from typing import Any, Callable, Dict, List, Optional, Text diff --git a/zerver/lib/unminify.py b/zerver/lib/unminify.py index 9224ef8291..d54f117410 100644 --- a/zerver/lib/unminify.py +++ b/zerver/lib/unminify.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import import re import os diff --git a/zerver/lib/upload.py b/zerver/lib/upload.py index ab989fb3ad..d93dc345be 100644 --- a/zerver/lib/upload.py +++ b/zerver/lib/upload.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from typing import Any, Dict, Mapping, Optional, Tuple, Text from django.utils.translation import ugettext as _ diff --git a/zerver/lib/url_preview/oembed/__init__.py b/zerver/lib/url_preview/oembed/__init__.py index 49d842b479..153c0a4c8f 100644 --- a/zerver/lib/url_preview/oembed/__init__.py +++ b/zerver/lib/url_preview/oembed/__init__.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from typing import Optional, Any, Text from pyoembed import oEmbed, PyOembedException diff --git a/zerver/lib/url_preview/parsers/base.py b/zerver/lib/url_preview/parsers/base.py index 9f662a21fd..7da3781ded 100644 --- a/zerver/lib/url_preview/parsers/base.py +++ b/zerver/lib/url_preview/parsers/base.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from typing import Any, Text from bs4 import BeautifulSoup diff --git a/zerver/lib/url_preview/parsers/generic.py b/zerver/lib/url_preview/parsers/generic.py index 504239c98f..829dbd6e1a 100644 --- a/zerver/lib/url_preview/parsers/generic.py +++ b/zerver/lib/url_preview/parsers/generic.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from typing import Any, Dict from zerver.lib.url_preview.parsers.base import BaseParser diff --git a/zerver/lib/url_preview/parsers/open_graph.py b/zerver/lib/url_preview/parsers/open_graph.py index 280dba17d5..f2728d0f9c 100644 --- a/zerver/lib/url_preview/parsers/open_graph.py +++ b/zerver/lib/url_preview/parsers/open_graph.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import import re from typing import Dict, Text from .base import BaseParser diff --git a/zerver/lib/url_preview/preview.py b/zerver/lib/url_preview/preview.py index e6f6b8bc61..f14980c4c0 100644 --- a/zerver/lib/url_preview/preview.py +++ b/zerver/lib/url_preview/preview.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import import re import logging import traceback diff --git a/zerver/lib/users.py b/zerver/lib/users.py index 7e0b9d4dac..c3a5c40aa1 100644 --- a/zerver/lib/users.py +++ b/zerver/lib/users.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from typing import Text from django.utils.translation import ugettext as _ diff --git a/zerver/lib/utils.py b/zerver/lib/utils.py index d69176f605..3ebcd6cfb8 100644 --- a/zerver/lib/utils.py +++ b/zerver/lib/utils.py @@ -1,5 +1,4 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import from __future__ import division from typing import Any, Callable, List, Optional, Sequence, TypeVar, Iterable, Set, Tuple, Text diff --git a/zerver/lib/validator.py b/zerver/lib/validator.py index 9bd0b19571..9c030c4997 100644 --- a/zerver/lib/validator.py +++ b/zerver/lib/validator.py @@ -25,7 +25,6 @@ A simple example of composition is this: To extend this concept, it's simply a matter of writing your own validator for any particular type of object. ''' -from __future__ import absolute_import from django.utils.translation import ugettext as _ from django.core.exceptions import ValidationError from django.core.validators import validate_email, URLValidator