diff --git a/PLAN b/PLAN index 5525841a3..a48fa30fc 100644 --- a/PLAN +++ b/PLAN @@ -7,9 +7,6 @@ Updated: $Date$ Planned work in rough order =========================== -* Remove Python 2.7 compatibility code. This includes cleaning up 'from future' - imports and usages of 'six' 2/3 compatibility modules. - * Transition to Django 2.2 (via 2.0 and 2.1). This depends on Python 3.x. Security updates to Django 1.11 will cease around April 2020. diff --git a/bin/check-copyright b/bin/check-copyright index 1d52e5d3a..6698e3fda 100755 --- a/bin/check-copyright +++ b/bin/check-copyright @@ -33,7 +33,7 @@ COPYRIGHT Open Source Initiative at http://opensource.org/licenses/BSD-2-Clause. """ -from __future__ import print_function + import datetime import os diff --git a/bin/setupenv b/bin/setupenv index d63fd8f43..b9f0f72da 100755 --- a/bin/setupenv +++ b/bin/setupenv @@ -1,5 +1,5 @@ #!/usr/bin/env python -from __future__ import print_function + import os import subprocess diff --git a/ietf/__init__.py b/ietf/__init__.py index 93dc32c7d..3e92136a8 100644 --- a/ietf/__init__.py +++ b/ietf/__init__.py @@ -2,18 +2,16 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - from . import checks # pyflakes:ignore # Don't add patch number here: -__version__ = "6.126.1.dev0" +__version__ = "6.124.1.dev0" # set this to ".p1", ".p2", etc. after patching __patch__ = "" __date__ = "$Date$" -__rev__ = "$Rev$ (dev) Latest release: Rev. 17612 " +__rev__ = "$Rev$ (dev) Latest release: Rev. 17582 " __id__ = "$Id$" diff --git a/ietf/api/__init__.py b/ietf/api/__init__.py index ff0b57bd3..b4c6203d9 100644 --- a/ietf/api/__init__.py +++ b/ietf/api/__init__.py @@ -1,14 +1,11 @@ -# Copyright The IETF Trust 2014-2019, All Rights Reserved +# Copyright The IETF Trust 2014-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import datetime import re -import six -from six.moves.urllib.parse import urlencode +from urllib.parse import urlencode from django.conf import settings from django.core.exceptions import ObjectDoesNotExist @@ -82,7 +79,7 @@ class TimedeltaField(ApiField): if value is None: return None - if isinstance(value, six.string_types): + if isinstance(value, str): match = TIMEDELTA_REGEX.search(value) if match: @@ -97,7 +94,7 @@ class TimedeltaField(ApiField): value = super(TimedeltaField, self).hydrate(bundle) if value and not hasattr(value, 'seconds'): - if isinstance(value, six.string_types): + if isinstance(value, str): try: match = TIMEDELTA_REGEX.search(value) @@ -125,7 +122,7 @@ class ToOneField(tastypie.fields.ToOneField): if callable(self.attribute): previous_obj = bundle.obj foreign_obj = self.attribute(bundle) - elif isinstance(self.attribute, six.string_types): + elif isinstance(self.attribute, str): foreign_obj = bundle.obj for attr in self._attrs: diff --git a/ietf/api/management/commands/makeresources.py b/ietf/api/management/commands/makeresources.py index 54830b5c1..087ed1b0f 100644 --- a/ietf/api/management/commands/makeresources.py +++ b/ietf/api/management/commands/makeresources.py @@ -1,6 +1,6 @@ -# Copyright The IETF Trust 2014-2019, All Rights Reserved +# Copyright The IETF Trust 2014-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals + import os import datetime diff --git a/ietf/api/serializer.py b/ietf/api/serializer.py index 98e276efe..9c26dd6c5 100644 --- a/ietf/api/serializer.py +++ b/ietf/api/serializer.py @@ -1,12 +1,9 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import hashlib import json -import six from django.core.cache import cache from django.core.exceptions import ObjectDoesNotExist, FieldError @@ -154,7 +151,7 @@ class AdminJsonSerializer(Serializer): if hasattr(field_value, "_meta"): self._current[name] = self.expand_related(field_value, name) else: - self._current[name] = six.text_type(field_value) + self._current[name] = str(field_value) except ObjectDoesNotExist: pass except AttributeError: diff --git a/ietf/api/tests.py b/ietf/api/tests.py index accc96989..5987c033c 100644 --- a/ietf/api/tests.py +++ b/ietf/api/tests.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2015-2019, All Rights Reserved +# Copyright The IETF Trust 2015-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import os import sys diff --git a/ietf/api/views.py b/ietf/api/views.py index c25a25f56..41970bf3f 100644 --- a/ietf/api/views.py +++ b/ietf/api/views.py @@ -1,6 +1,6 @@ -# Copyright The IETF Trust 2017-2019, All Rights Reserved +# Copyright The IETF Trust 2017-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals + from jwcrypto.jwk import JWK diff --git a/ietf/bin/list-role-holder-emails b/ietf/bin/list-role-holder-emails index b6749c858..1e5c5ed42 100755 --- a/ietf/bin/list-role-holder-emails +++ b/ietf/bin/list-role-holder-emails @@ -1,5 +1,5 @@ #!/usr/bin/env python -from __future__ import print_function + import os, sys import syslog diff --git a/ietf/checks.py b/ietf/checks.py index 235824c68..864ef419e 100644 --- a/ietf/checks.py +++ b/ietf/checks.py @@ -2,15 +2,11 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import os -import six import sys import time from textwrap import dedent -if six.PY3: - from typing import List, Tuple # pyflakes:ignore +from typing import List, Tuple # pyflakes:ignore import debug # pyflakes:ignore debug.debug = True diff --git a/ietf/community/admin.py b/ietf/community/admin.py index fd7889f74..890819d9d 100644 --- a/ietf/community/admin.py +++ b/ietf/community/admin.py @@ -1,6 +1,6 @@ -# Copyright The IETF Trust 2017-2019, All Rights Reserved +# Copyright The IETF Trust 2017-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals + from django.contrib import admin diff --git a/ietf/community/forms.py b/ietf/community/forms.py index f5aabf2ae..4ca29b6d9 100644 --- a/ietf/community/forms.py +++ b/ietf/community/forms.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2012-2019, All Rights Reserved +# Copyright The IETF Trust 2012-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import re from django import forms diff --git a/ietf/community/migrations/0001_initial.py b/ietf/community/migrations/0001_initial.py index d28b1755b..dc1ae75a3 100644 --- a/ietf/community/migrations/0001_initial.py +++ b/ietf/community/migrations/0001_initial.py @@ -1,11 +1,9 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.10 on 2018-02-20 10:52 -from __future__ import absolute_import, print_function, unicode_literals -import six -if six.PY3: - from typing import List, Tuple # pyflakes:ignore + +from typing import List, Tuple # pyflakes:ignore from django.db import migrations, models import django.db.models.deletion diff --git a/ietf/community/migrations/0002_auto_20180220_1052.py b/ietf/community/migrations/0002_auto_20180220_1052.py index 93a0ebd5e..cb5658ac1 100644 --- a/ietf/community/migrations/0002_auto_20180220_1052.py +++ b/ietf/community/migrations/0002_auto_20180220_1052.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.10 on 2018-02-20 10:52 -from __future__ import absolute_import, print_function, unicode_literals - from django.conf import settings from django.db import migrations, models import django.db.models.deletion diff --git a/ietf/community/migrations/0003_add_communitylist_docs2_m2m.py b/ietf/community/migrations/0003_add_communitylist_docs2_m2m.py index 34c620fbe..3bfaee9aa 100644 --- a/ietf/community/migrations/0003_add_communitylist_docs2_m2m.py +++ b/ietf/community/migrations/0003_add_communitylist_docs2_m2m.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-05-21 14:23 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations, models import django.db.models.deletion import ietf.utils.models diff --git a/ietf/community/migrations/0004_set_document_m2m_keys.py b/ietf/community/migrations/0004_set_document_m2m_keys.py index 095ef5243..60e51fc36 100644 --- a/ietf/community/migrations/0004_set_document_m2m_keys.py +++ b/ietf/community/migrations/0004_set_document_m2m_keys.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-05-21 14:27 -from __future__ import absolute_import, print_function, unicode_literals - import sys from tqdm import tqdm diff --git a/ietf/community/migrations/0005_1_del_docs_m2m_table.py b/ietf/community/migrations/0005_1_del_docs_m2m_table.py index 0ff9ace87..9a7b7f945 100644 --- a/ietf/community/migrations/0005_1_del_docs_m2m_table.py +++ b/ietf/community/migrations/0005_1_del_docs_m2m_table.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-05-22 08:15 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations diff --git a/ietf/community/migrations/0005_2_add_docs_m2m_table.py b/ietf/community/migrations/0005_2_add_docs_m2m_table.py index 8847eadc4..ef1f9bc4f 100644 --- a/ietf/community/migrations/0005_2_add_docs_m2m_table.py +++ b/ietf/community/migrations/0005_2_add_docs_m2m_table.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-05-22 08:15 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations, models diff --git a/ietf/community/migrations/0006_copy_docs_m2m_table.py b/ietf/community/migrations/0006_copy_docs_m2m_table.py index 9a9b40a7b..6d1a5e3a8 100644 --- a/ietf/community/migrations/0006_copy_docs_m2m_table.py +++ b/ietf/community/migrations/0006_copy_docs_m2m_table.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-05-27 05:56 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations import sys, time diff --git a/ietf/community/migrations/0007_remove_docs2_m2m.py b/ietf/community/migrations/0007_remove_docs2_m2m.py index dce7e45cc..a454fbf07 100644 --- a/ietf/community/migrations/0007_remove_docs2_m2m.py +++ b/ietf/community/migrations/0007_remove_docs2_m2m.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-05-30 03:06 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations diff --git a/ietf/community/models.py b/ietf/community/models.py index a5c98f8e5..fb4098e8c 100644 --- a/ietf/community/models.py +++ b/ietf/community/models.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2012-2019, All Rights Reserved +# Copyright The IETF Trust 2012-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - from django.contrib.auth.models import User from django.db import models from django.db.models import signals diff --git a/ietf/community/tests.py b/ietf/community/tests.py index f9cffff7f..a4290e48e 100644 --- a/ietf/community/tests.py +++ b/ietf/community/tests.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2016-2019, All Rights Reserved +# Copyright The IETF Trust 2016-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - from pyquery import PyQuery from django.urls import reverse as urlreverse diff --git a/ietf/community/utils.py b/ietf/community/utils.py index f773839c7..f08176e3c 100644 --- a/ietf/community/utils.py +++ b/ietf/community/utils.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2016-2019, All Rights Reserved +# Copyright The IETF Trust 2016-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import re from django.db.models import Q diff --git a/ietf/community/views.py b/ietf/community/views.py index c1a061e5d..eb4c8efd7 100644 --- a/ietf/community/views.py +++ b/ietf/community/views.py @@ -1,13 +1,10 @@ -# Copyright The IETF Trust 2012-2019, All Rights Reserved +# Copyright The IETF Trust 2012-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import csv import datetime import json -import six import uuid from django.http import HttpResponse, HttpResponseForbidden, HttpResponseRedirect, Http404 @@ -204,7 +201,7 @@ def export_to_csv(request, username=None, acronym=None, group_type=None): row.append(e.time.strftime("%Y-%m-%d") if e else "") row.append(strip_tags(doc.friendly_state())) row.append(doc.group.acronym if doc.group else "") - row.append(six.text_type(doc.ad) if doc.ad else "") + row.append(str(doc.ad) if doc.ad else "") e = doc.latest_event() row.append(e.time.strftime("%Y-%m-%d") if e else "") writer.writerow([v.encode("utf-8") for v in row]) diff --git a/ietf/cookies/__init__.py b/ietf/cookies/__init__.py index f17c21d38..6ac522698 100644 --- a/ietf/cookies/__init__.py +++ b/ietf/cookies/__init__.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2010-2019, All Rights Reserved +# Copyright The IETF Trust 2010-2020, All Rights Reserved # coding: latin-1 -from __future__ import absolute_import, print_function, unicode_literals - from types import ModuleType # These people will be sent a stack trace if there's an uncaught exception in diff --git a/ietf/cookies/tests.py b/ietf/cookies/tests.py index 302cab100..d23b64910 100644 --- a/ietf/cookies/tests.py +++ b/ietf/cookies/tests.py @@ -1,11 +1,9 @@ -# Copyright The IETF Trust 2015-2019, All Rights Reserved +# Copyright The IETF Trust 2015-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - from pyquery import PyQuery -from six.moves.http_cookies import SimpleCookie +from http.cookies import SimpleCookie from django.urls import reverse as urlreverse diff --git a/ietf/cookies/views.py b/ietf/cookies/views.py index 58268dc61..065e0a649 100644 --- a/ietf/cookies/views.py +++ b/ietf/cookies/views.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2010-2019, All Rights Reserved +# Copyright The IETF Trust 2010-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - from django.shortcuts import render from django.conf import settings diff --git a/ietf/dbtemplate/forms.py b/ietf/dbtemplate/forms.py index 987d61b60..03f2bc0fc 100644 --- a/ietf/dbtemplate/forms.py +++ b/ietf/dbtemplate/forms.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2012-2019, All Rights Reserved +# Copyright The IETF Trust 2012-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - from django import forms from django.core.exceptions import ValidationError from django.template import Context diff --git a/ietf/dbtemplate/migrations/0001_initial.py b/ietf/dbtemplate/migrations/0001_initial.py index 4d63c74d3..53defbda2 100644 --- a/ietf/dbtemplate/migrations/0001_initial.py +++ b/ietf/dbtemplate/migrations/0001_initial.py @@ -1,13 +1,9 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.10 on 2018-02-20 10:52 -from __future__ import absolute_import, print_function, unicode_literals - -import six -if six.PY3: - from typing import List, Tuple # pyflakes:ignore +from typing import List, Tuple # pyflakes:ignore from django.db import migrations, models diff --git a/ietf/dbtemplate/migrations/0002_auto_20180220_1052.py b/ietf/dbtemplate/migrations/0002_auto_20180220_1052.py index 84f026f7a..9cff93f4a 100644 --- a/ietf/dbtemplate/migrations/0002_auto_20180220_1052.py +++ b/ietf/dbtemplate/migrations/0002_auto_20180220_1052.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.10 on 2018-02-20 10:52 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations import django.db.models.deletion import ietf.utils.models diff --git a/ietf/dbtemplate/migrations/0003_adjust_review_templates.py b/ietf/dbtemplate/migrations/0003_adjust_review_templates.py index 80699981c..d3038c946 100644 --- a/ietf/dbtemplate/migrations/0003_adjust_review_templates.py +++ b/ietf/dbtemplate/migrations/0003_adjust_review_templates.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-03-05 11:39 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations def forward(apps, schema_editor): diff --git a/ietf/dbtemplate/migrations/0004_adjust_assignment_email_summary_templates.py b/ietf/dbtemplate/migrations/0004_adjust_assignment_email_summary_templates.py index 9aa7493fe..f9a249609 100644 --- a/ietf/dbtemplate/migrations/0004_adjust_assignment_email_summary_templates.py +++ b/ietf/dbtemplate/migrations/0004_adjust_assignment_email_summary_templates.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-03-13 13:41 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations def forward(apps, schema_editor): diff --git a/ietf/dbtemplate/migrations/0005_adjust_assignment_email_summary_templates_2526.py b/ietf/dbtemplate/migrations/0005_adjust_assignment_email_summary_templates_2526.py index 06465460a..8a07d8936 100644 --- a/ietf/dbtemplate/migrations/0005_adjust_assignment_email_summary_templates_2526.py +++ b/ietf/dbtemplate/migrations/0005_adjust_assignment_email_summary_templates_2526.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-03-13 13:41 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations def forward(apps, schema_editor): diff --git a/ietf/dbtemplate/migrations/0006_add_review_assigned_template.py b/ietf/dbtemplate/migrations/0006_add_review_assigned_template.py index f2a0ddaab..cedd84322 100644 --- a/ietf/dbtemplate/migrations/0006_add_review_assigned_template.py +++ b/ietf/dbtemplate/migrations/0006_add_review_assigned_template.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations def forward(apps, schema_editor): diff --git a/ietf/dbtemplate/migrations/0007_adjust_review_assigned.py b/ietf/dbtemplate/migrations/0007_adjust_review_assigned.py index a3c876d08..c1e8324ef 100644 --- a/ietf/dbtemplate/migrations/0007_adjust_review_assigned.py +++ b/ietf/dbtemplate/migrations/0007_adjust_review_assigned.py @@ -1,7 +1,7 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.26 on 2019-11-19 11:47 -from __future__ import unicode_literals + from django.db import migrations diff --git a/ietf/dbtemplate/migrations/0008_add_default_iesg_req_template.py b/ietf/dbtemplate/migrations/0008_add_default_iesg_req_template.py index 44012d5ff..3ca9a6fc8 100644 --- a/ietf/dbtemplate/migrations/0008_add_default_iesg_req_template.py +++ b/ietf/dbtemplate/migrations/0008_add_default_iesg_req_template.py @@ -1,7 +1,7 @@ # Copyright The IETF Trust 2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.27 on 2020-01-07 09:25 -from __future__ import unicode_literals + from django.db import migrations diff --git a/ietf/dbtemplate/models.py b/ietf/dbtemplate/models.py index 0678236c5..bd70c9148 100644 --- a/ietf/dbtemplate/models.py +++ b/ietf/dbtemplate/models.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright The IETF Trust 2012-2019, All Rights Reserved -from __future__ import absolute_import, print_function, unicode_literals +# Copyright The IETF Trust 2012-2020, All Rights Reserved + from django.db import models from django.core.exceptions import ValidationError diff --git a/ietf/dbtemplate/template.py b/ietf/dbtemplate/template.py index ba5cadfd0..02d6a512c 100644 --- a/ietf/dbtemplate/template.py +++ b/ietf/dbtemplate/template.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2012-2019, All Rights Reserved +# Copyright The IETF Trust 2012-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import os import string from docutils.core import publish_string diff --git a/ietf/doc/admin.py b/ietf/doc/admin.py index 590017468..1124e1ec3 100644 --- a/ietf/doc/admin.py +++ b/ietf/doc/admin.py @@ -2,8 +2,6 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - from django.contrib import admin from django.db import models from django import forms diff --git a/ietf/doc/expire.py b/ietf/doc/expire.py index b21b25e50..141ccfaa3 100644 --- a/ietf/doc/expire.py +++ b/ietf/doc/expire.py @@ -1,17 +1,14 @@ -# Copyright The IETF Trust 2010-2019, All Rights Reserved +# Copyright The IETF Trust 2010-2020, All Rights Reserved # -*- coding: utf-8 -*- # expiry of Internet Drafts -from __future__ import absolute_import, print_function, unicode_literals - from django.conf import settings import datetime, os, shutil, glob, re -import six from pathlib import Path -if six.PY3: - from typing import List, Tuple # pyflakes:ignore + +from typing import List, Tuple # pyflakes:ignore from ietf.utils import log from ietf.utils.mail import send_mail diff --git a/ietf/doc/factories.py b/ietf/doc/factories.py index 466d32c72..f22e80cab 100644 --- a/ietf/doc/factories.py +++ b/ietf/doc/factories.py @@ -1,16 +1,13 @@ -# Copyright The IETF Trust 2016-2019, All Rights Reserved +# Copyright The IETF Trust 2016-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import debug # pyflakes:ignore import factory import factory.fuzzy import datetime -import six -if six.PY3: - from typing import Optional # pyflakes:ignore + +from typing import Optional # pyflakes:ignore from django.conf import settings diff --git a/ietf/doc/feeds.py b/ietf/doc/feeds.py index bcdefe112..4b8d2789a 100644 --- a/ietf/doc/feeds.py +++ b/ietf/doc/feeds.py @@ -1,11 +1,8 @@ -# Copyright The IETF Trust 2007-2019, All Rights Reserved +# Copyright The IETF Trust 2007-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import datetime -import six from django.contrib.syndication.views import Feed, FeedDoesNotExist from django.utils.feedgenerator import Atom1Feed, Rss201rev2Feed @@ -50,7 +47,7 @@ class DocumentChangesFeed(Feed): return item.time def item_author_name(self, item): - return six.text_type(item.by) + return str(item.by) def item_link(self, item): return urlreverse('ietf.doc.views_doc.document_history', kwargs=dict(name=item.doc.canonical_name())) + "#history-%s" % item.pk diff --git a/ietf/doc/fields.py b/ietf/doc/fields.py index 7266f5d34..592cf439e 100644 --- a/ietf/doc/fields.py +++ b/ietf/doc/fields.py @@ -1,11 +1,8 @@ -# Copyright The IETF Trust 2014-2019, All Rights Reserved +# Copyright The IETF Trust 2014-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import json -import six from django.utils.html import escape from django import forms @@ -57,9 +54,9 @@ class SearchableDocumentsField(forms.CharField): def prepare_value(self, value): if not value: value = "" - if isinstance(value, six.integer_types): + if isinstance(value, int): value = str(value) - if isinstance(value, six.string_types): + if isinstance(value, str): items = self.parse_select2_value(value) # accept both names and pks here names = [ i for i in items if not i.isdigit() ] @@ -83,7 +80,7 @@ class SearchableDocumentsField(forms.CharField): "model_name": self.model.__name__.lower() }) - return ",".join(six.text_type(o.pk) for o in value) + return ",".join(str(o.pk) for o in value) def clean(self, value): value = super(SearchableDocumentsField, self).clean(value) diff --git a/ietf/doc/forms.py b/ietf/doc/forms.py index 1dd23f474..18d72587d 100644 --- a/ietf/doc/forms.py +++ b/ietf/doc/forms.py @@ -1,10 +1,7 @@ -# Copyright The IETF Trust 2013-2019, All Rights Reserved +# Copyright The IETF Trust 2013-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - - import datetime import debug #pyflakes:ignore from django import forms diff --git a/ietf/doc/mails.py b/ietf/doc/mails.py index a36c06185..a6fdfac76 100644 --- a/ietf/doc/mails.py +++ b/ietf/doc/mails.py @@ -3,10 +3,7 @@ # generation of mails -from __future__ import absolute_import, print_function, unicode_literals - import datetime -import six import textwrap from django.template.loader import render_to_string @@ -288,7 +285,7 @@ def generate_publication_request(request, doc): approving_body = "IRSG" consensus_body = doc.group.acronym.upper() else: - approving_body = six.text_type(doc.stream) + approving_body = str(doc.stream) consensus_body = approving_body e = doc.latest_event(WriteupDocEvent, type="changed_rfc_editor_note_text") diff --git a/ietf/doc/management/commands/fix_105_slides.py b/ietf/doc/management/commands/fix_105_slides.py index 3f19ecc94..b8689482e 100644 --- a/ietf/doc/management/commands/fix_105_slides.py +++ b/ietf/doc/management/commands/fix_105_slides.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import os from collections import Counter diff --git a/ietf/doc/management/commands/generate_draft_bibxml_files.py b/ietf/doc/management/commands/generate_draft_bibxml_files.py index 47f6f0f54..82c50b037 100644 --- a/ietf/doc/management/commands/generate_draft_bibxml_files.py +++ b/ietf/doc/management/commands/generate_draft_bibxml_files.py @@ -1,7 +1,6 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2012-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals import datetime import io diff --git a/ietf/doc/migrations/0001_initial.py b/ietf/doc/migrations/0001_initial.py index b7fcec14b..fd50d34fc 100644 --- a/ietf/doc/migrations/0001_initial.py +++ b/ietf/doc/migrations/0001_initial.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.10 on 2018-02-20 10:52 -from __future__ import absolute_import, print_function, unicode_literals - import datetime import django.core.validators from django.db import migrations, models diff --git a/ietf/doc/migrations/0002_auto_20180220_1052.py b/ietf/doc/migrations/0002_auto_20180220_1052.py index 471054bc9..811e9eb81 100644 --- a/ietf/doc/migrations/0002_auto_20180220_1052.py +++ b/ietf/doc/migrations/0002_auto_20180220_1052.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.10 on 2018-02-20 10:52 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations, models import django.db.models.deletion import ietf.utils.models diff --git a/ietf/doc/migrations/0003_auto_20180401_1231.py b/ietf/doc/migrations/0003_auto_20180401_1231.py index f6f6144bc..7760b2511 100644 --- a/ietf/doc/migrations/0003_auto_20180401_1231.py +++ b/ietf/doc/migrations/0003_auto_20180401_1231.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.11 on 2018-04-01 12:31 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations, models diff --git a/ietf/doc/migrations/0004_add_draft_stream_replaced_states.py b/ietf/doc/migrations/0004_add_draft_stream_replaced_states.py index 5ab95997f..9d57cb476 100644 --- a/ietf/doc/migrations/0004_add_draft_stream_replaced_states.py +++ b/ietf/doc/migrations/0004_add_draft_stream_replaced_states.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.13 on 2018-05-03 11:50 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations def forward(apps, schema_editor): diff --git a/ietf/doc/migrations/0005_fix_replaced_iab_irtf_stream_docs.py b/ietf/doc/migrations/0005_fix_replaced_iab_irtf_stream_docs.py index da03c5fa1..3529baf98 100644 --- a/ietf/doc/migrations/0005_fix_replaced_iab_irtf_stream_docs.py +++ b/ietf/doc/migrations/0005_fix_replaced_iab_irtf_stream_docs.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.13 on 2018-05-03 12:16 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations def forward(apps, schema_editor): diff --git a/ietf/doc/migrations/0006_ballotpositiondocevent_send_email.py b/ietf/doc/migrations/0006_ballotpositiondocevent_send_email.py index 44ea6295f..42f58ca02 100644 --- a/ietf/doc/migrations/0006_ballotpositiondocevent_send_email.py +++ b/ietf/doc/migrations/0006_ballotpositiondocevent_send_email.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.15 on 2018-10-03 06:39 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations, models diff --git a/ietf/doc/migrations/0007_idexists.py b/ietf/doc/migrations/0007_idexists.py index 3731661ae..d8df81d5f 100644 --- a/ietf/doc/migrations/0007_idexists.py +++ b/ietf/doc/migrations/0007_idexists.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.16 on 2018-11-04 10:56 -from __future__ import absolute_import, print_function, unicode_literals - from tqdm import tqdm from django.db import migrations diff --git a/ietf/doc/migrations/0008_add_uploaded_filename.py b/ietf/doc/migrations/0008_add_uploaded_filename.py index 82e528b8d..bf3690108 100644 --- a/ietf/doc/migrations/0008_add_uploaded_filename.py +++ b/ietf/doc/migrations/0008_add_uploaded_filename.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.17 on 2018-12-28 13:11 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations, models diff --git a/ietf/doc/migrations/0009_move_non_url_externalurls_to_uploaded_filename.py b/ietf/doc/migrations/0009_move_non_url_externalurls_to_uploaded_filename.py index 95ef47d11..f97ebbdff 100644 --- a/ietf/doc/migrations/0009_move_non_url_externalurls_to_uploaded_filename.py +++ b/ietf/doc/migrations/0009_move_non_url_externalurls_to_uploaded_filename.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.17 on 2018-12-28 13:33 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations from django.db.models import F diff --git a/ietf/doc/migrations/0010_auto_20190225_1302.py b/ietf/doc/migrations/0010_auto_20190225_1302.py index 1d581c59b..2f8dfef45 100644 --- a/ietf/doc/migrations/0010_auto_20190225_1302.py +++ b/ietf/doc/migrations/0010_auto_20190225_1302.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-02-25 13:02 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations, models diff --git a/ietf/doc/migrations/0011_reviewassignmentdocevent.py b/ietf/doc/migrations/0011_reviewassignmentdocevent.py index 0482dd967..e143b5339 100644 --- a/ietf/doc/migrations/0011_reviewassignmentdocevent.py +++ b/ietf/doc/migrations/0011_reviewassignmentdocevent.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.18 on 2019-01-11 11:22 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations, models import django.db.models.deletion import ietf.utils.models diff --git a/ietf/doc/migrations/0012_add_event_type_closed_review_assignment.py b/ietf/doc/migrations/0012_add_event_type_closed_review_assignment.py index b6562f163..ae9bb3ce8 100644 --- a/ietf/doc/migrations/0012_add_event_type_closed_review_assignment.py +++ b/ietf/doc/migrations/0012_add_event_type_closed_review_assignment.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-05-01 04:43 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations, models diff --git a/ietf/doc/migrations/0013_add_document_docalias_id.py b/ietf/doc/migrations/0013_add_document_docalias_id.py index 09d3f1a87..1b9d0ab91 100644 --- a/ietf/doc/migrations/0013_add_document_docalias_id.py +++ b/ietf/doc/migrations/0013_add_document_docalias_id.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-05-08 08:41 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations, models diff --git a/ietf/doc/migrations/0014_set_document_docalias_id.py b/ietf/doc/migrations/0014_set_document_docalias_id.py index 785b82bf2..a97f6d7e4 100644 --- a/ietf/doc/migrations/0014_set_document_docalias_id.py +++ b/ietf/doc/migrations/0014_set_document_docalias_id.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-05-08 08:42 -from __future__ import absolute_import, print_function, unicode_literals - import sys from tqdm import tqdm diff --git a/ietf/doc/migrations/0015_1_add_fk_to_document_id.py b/ietf/doc/migrations/0015_1_add_fk_to_document_id.py index 7a6248a1d..6d2e7415f 100644 --- a/ietf/doc/migrations/0015_1_add_fk_to_document_id.py +++ b/ietf/doc/migrations/0015_1_add_fk_to_document_id.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-05-08 10:29 -from __future__ import absolute_import, print_function, unicode_literals - import django.core.validators from django.db import migrations, models import django.db.models.deletion diff --git a/ietf/doc/migrations/0015_2_add_doc_document_m2m_fields.py b/ietf/doc/migrations/0015_2_add_doc_document_m2m_fields.py index 2bd8a7ae1..99ff30c55 100644 --- a/ietf/doc/migrations/0015_2_add_doc_document_m2m_fields.py +++ b/ietf/doc/migrations/0015_2_add_doc_document_m2m_fields.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-05-28 12:42 -from __future__ import absolute_import, print_function, unicode_literals - import sys, time from django.db import migrations, models diff --git a/ietf/doc/migrations/0016_set_document_docalias_fk.py b/ietf/doc/migrations/0016_set_document_docalias_fk.py index e931f1306..67d1333f3 100644 --- a/ietf/doc/migrations/0016_set_document_docalias_fk.py +++ b/ietf/doc/migrations/0016_set_document_docalias_fk.py @@ -1,11 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-05-08 14:04 -from __future__ import absolute_import, print_function, unicode_literals - -import six import sys from tqdm import tqdm @@ -18,7 +15,7 @@ def forward(apps, schema_editor): n = getattr(o, a+'_id') if n: i = nameid[n] - if not isinstance(i, six.integer_types): + if not isinstance(i, int): raise ValueError("Inappropriate value: %s: nameid[%s]: %s" % (o.__class__.__name__, n, i)) if getattr(o, a+'2_id') != i: setattr(o, a+'2_id', i) diff --git a/ietf/doc/migrations/0017_make_document_id_primary_key.py b/ietf/doc/migrations/0017_make_document_id_primary_key.py index 3bbaa8176..baadd6f72 100644 --- a/ietf/doc/migrations/0017_make_document_id_primary_key.py +++ b/ietf/doc/migrations/0017_make_document_id_primary_key.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-05-09 05:46 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations, models diff --git a/ietf/doc/migrations/0018_remove_old_document_field.py b/ietf/doc/migrations/0018_remove_old_document_field.py index 19a8a4065..887dcc770 100644 --- a/ietf/doc/migrations/0018_remove_old_document_field.py +++ b/ietf/doc/migrations/0018_remove_old_document_field.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-05-20 09:53 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations, models import django.db.models.deletion import ietf.utils.models diff --git a/ietf/doc/migrations/0019_rename_field_document2.py b/ietf/doc/migrations/0019_rename_field_document2.py index 396e29c50..517ae9ee7 100644 --- a/ietf/doc/migrations/0019_rename_field_document2.py +++ b/ietf/doc/migrations/0019_rename_field_document2.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-05-21 05:31 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations, models diff --git a/ietf/doc/migrations/0020_copy_docs_m2m_table.py b/ietf/doc/migrations/0020_copy_docs_m2m_table.py index 1bc395c33..482c4d785 100644 --- a/ietf/doc/migrations/0020_copy_docs_m2m_table.py +++ b/ietf/doc/migrations/0020_copy_docs_m2m_table.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-05-21 05:31 -from __future__ import absolute_import, print_function, unicode_literals - import sys, time from django.db import migrations diff --git a/ietf/doc/migrations/0021_remove_docs2_m2m.py b/ietf/doc/migrations/0021_remove_docs2_m2m.py index 469523732..c659b65de 100644 --- a/ietf/doc/migrations/0021_remove_docs2_m2m.py +++ b/ietf/doc/migrations/0021_remove_docs2_m2m.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-05-30 03:36 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations diff --git a/ietf/doc/migrations/0022_document_primary_key_cleanup.py b/ietf/doc/migrations/0022_document_primary_key_cleanup.py index 5b666907c..9ddc908f5 100644 --- a/ietf/doc/migrations/0022_document_primary_key_cleanup.py +++ b/ietf/doc/migrations/0022_document_primary_key_cleanup.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-06-10 03:47 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations, models import django.db.models.deletion import ietf.utils.models diff --git a/ietf/doc/migrations/0023_one_to_many_docalias.py b/ietf/doc/migrations/0023_one_to_many_docalias.py index cf7f54756..cf3c8330a 100644 --- a/ietf/doc/migrations/0023_one_to_many_docalias.py +++ b/ietf/doc/migrations/0023_one_to_many_docalias.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-06-10 04:36 -from __future__ import absolute_import, print_function, unicode_literals - import sys from tqdm import tqdm diff --git a/ietf/doc/migrations/0024_iana_experts.py b/ietf/doc/migrations/0024_iana_experts.py index 14faf15e1..0922b9c24 100644 --- a/ietf/doc/migrations/0024_iana_experts.py +++ b/ietf/doc/migrations/0024_iana_experts.py @@ -1,7 +1,7 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.23 on 2019-08-07 12:07 -from __future__ import unicode_literals + from django.db import migrations diff --git a/ietf/doc/migrations/0025_ianaexpertdocevent.py b/ietf/doc/migrations/0025_ianaexpertdocevent.py index e6bbe0fa9..282d506d9 100644 --- a/ietf/doc/migrations/0025_ianaexpertdocevent.py +++ b/ietf/doc/migrations/0025_ianaexpertdocevent.py @@ -1,7 +1,7 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.23 on 2019-08-07 12:27 -from __future__ import unicode_literals + from django.db import migrations, models import django.db.models.deletion diff --git a/ietf/doc/migrations/0026_add_draft_rfceditor_state.py b/ietf/doc/migrations/0026_add_draft_rfceditor_state.py index 9f51f1529..0490f15ba 100644 --- a/ietf/doc/migrations/0026_add_draft_rfceditor_state.py +++ b/ietf/doc/migrations/0026_add_draft_rfceditor_state.py @@ -1,7 +1,6 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals from django.db import migrations diff --git a/ietf/doc/migrations/0027_add_irsg_doc_positions.py b/ietf/doc/migrations/0027_add_irsg_doc_positions.py index 4bb5f6a5a..e88ac9dda 100644 --- a/ietf/doc/migrations/0027_add_irsg_doc_positions.py +++ b/ietf/doc/migrations/0027_add_irsg_doc_positions.py @@ -1,7 +1,7 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.22 on 2019-08-03 10:09 -from __future__ import unicode_literals + from django.db import migrations diff --git a/ietf/doc/migrations/0028_irsgballotdocevent.py b/ietf/doc/migrations/0028_irsgballotdocevent.py index b3ecd6814..92f4d52d7 100644 --- a/ietf/doc/migrations/0028_irsgballotdocevent.py +++ b/ietf/doc/migrations/0028_irsgballotdocevent.py @@ -1,7 +1,7 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.25 on 2019-10-10 10:37 -from __future__ import unicode_literals + from django.db import migrations, models import django.db.models.deletion diff --git a/ietf/doc/migrations/0029_add_ipr_event_types.py b/ietf/doc/migrations/0029_add_ipr_event_types.py index 3c29628e2..08073b16e 100644 --- a/ietf/doc/migrations/0029_add_ipr_event_types.py +++ b/ietf/doc/migrations/0029_add_ipr_event_types.py @@ -1,7 +1,7 @@ # Copyright The IETF Trust 2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.27 on 2020-01-17 11:54 -from __future__ import unicode_literals + from django.db import migrations, models diff --git a/ietf/doc/models.py b/ietf/doc/models.py index 1b7389687..30b5e2f62 100644 --- a/ietf/doc/models.py +++ b/ietf/doc/models.py @@ -1,13 +1,12 @@ # Copyright The IETF Trust 2010-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals + import datetime import logging import io import os import rfc2html -import six from django.db import models from django.core import checks @@ -418,7 +417,7 @@ class DocumentInfo(models.Model): def relations_that(self, relationship): """Return the related-document objects that describe a given relationship targeting self.""" - if isinstance(relationship, six.string_types): + if isinstance(relationship, str): relationship = ( relationship, ) if not isinstance(relationship, tuple): raise TypeError("Expected a string or tuple, received %s" % type(relationship)) @@ -441,7 +440,7 @@ class DocumentInfo(models.Model): def relations_that_doc(self, relationship): """Return the related-document objects that describe a given relationship from self to other documents.""" - if isinstance(relationship, six.string_types): + if isinstance(relationship, str): relationship = ( relationship, ) if not isinstance(relationship, tuple): raise TypeError("Expected a string or tuple, received %s" % type(relationship)) diff --git a/ietf/doc/templatetags/ietf_filters.py b/ietf/doc/templatetags/ietf_filters.py index 9bde6d9f8..948db9238 100644 --- a/ietf/doc/templatetags/ietf_filters.py +++ b/ietf/doc/templatetags/ietf_filters.py @@ -2,12 +2,9 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import bleach import datetime import re -import six from email.utils import parseaddr @@ -23,11 +20,12 @@ from django.urls import reverse as urlreverse import debug # pyflakes:ignore +from ietf.doc.models import BallotDocEvent from ietf.doc.models import ConsensusDocEvent +from ietf.utils.html import sanitize_fragment +from ietf.utils import log from ietf.doc.utils import prettify_std_name from ietf.utils.text import wordwrap, fill, wrap_text_if_unwrapped -from ietf.utils.html import sanitize_fragment -from ietf.doc.models import BallotDocEvent register = template.Library() @@ -72,7 +70,7 @@ def parse_email_list(value): """ - if value and isinstance(value, (six.binary_type, six.text_type)): # testing for 'value' being true isn't necessary; it's a fast-out route + if value and isinstance(value, str): # testing for 'value' being true isn't necessary; it's a fast-out route addrs = re.split(", ?", value) ret = [] for addr in addrs: @@ -81,6 +79,8 @@ def parse_email_list(value): name = email ret.append('%s' % ( email.replace('&', '&'), escape(name) )) return mark_safe(", ".join(ret)) + elif value and isinstance(value, bytes): + log.assertion('isinstance(value, str)') else: return value @@ -117,8 +117,10 @@ def make_one_per_line(value): >>> make_one_per_line(None) """ - if value and isinstance(value, (six.binary_type, six.text_type)): + if value and isinstance(value, str): return re.sub(", ?", "\n", value) + elif value and isinstance(value, bytes): + log.assertion('isinstance(value, str)') else: return value @@ -153,10 +155,12 @@ def sanitize(value): @register.filter(name='bracket') def square_brackets(value): """Adds square brackets around text.""" - if isinstance(value, (six.binary_type, six.text_type)): + if isinstance(value, str): if value == "": value = " " return "[ %s ]" % value + elif isinstance(value, bytes): + log.assertion('isinstance(value, str)') elif value > 0: return "[ X ]" elif value < 0: @@ -364,7 +368,7 @@ def expires_soon(x,request): @register.filter(name='startswith') def startswith(x, y): - return six.text_type(x).startswith(y) + return str(x).startswith(y) @register.filter def has_role(user, role_names): diff --git a/ietf/doc/templatetags/managed_groups.py b/ietf/doc/templatetags/managed_groups.py index 53a16d3a2..b291fc324 100644 --- a/ietf/doc/templatetags/managed_groups.py +++ b/ietf/doc/templatetags/managed_groups.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2016-2019, All Rights Reserved +# Copyright The IETF Trust 2016-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - from django import template import debug # pyflakes:ignore diff --git a/ietf/doc/tests.py b/ietf/doc/tests.py index 9fece2372..57feadff8 100644 --- a/ietf/doc/tests.py +++ b/ietf/doc/tests.py @@ -2,8 +2,6 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import os import shutil import datetime @@ -17,9 +15,9 @@ if sys.version_info[0] == 2 and sys.version_info[1] < 7: else: import unittest -from six.moves.http_cookies import SimpleCookie +from http.cookies import SimpleCookie from pyquery import PyQuery -from six.moves.urllib.parse import urlparse, parse_qs +from urllib.parse import urlparse, parse_qs from tempfile import NamedTemporaryFile from django.urls import reverse as urlreverse diff --git a/ietf/doc/tests_charter.py b/ietf/doc/tests_charter.py index 8edc49d48..5a8d20e71 100644 --- a/ietf/doc/tests_charter.py +++ b/ietf/doc/tests_charter.py @@ -2,8 +2,6 @@ # Copyright The IETF Trust 2011-2020, All Rights Reserved -from __future__ import absolute_import, print_function, unicode_literals - import datetime import io import os diff --git a/ietf/doc/tests_conflict_review.py b/ietf/doc/tests_conflict_review.py index eb1c83371..f3beccf80 100644 --- a/ietf/doc/tests_conflict_review.py +++ b/ietf/doc/tests_conflict_review.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2012-2019, All Rights Reserved +# Copyright The IETF Trust 2012-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import io import os import shutil diff --git a/ietf/doc/tests_downref.py b/ietf/doc/tests_downref.py index 714e2d965..62b20db29 100644 --- a/ietf/doc/tests_downref.py +++ b/ietf/doc/tests_downref.py @@ -1,10 +1,7 @@ -# Copyright The IETF Trust 2017-2019, All Rights Reserved +# Copyright The IETF Trust 2017-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - - from django.urls import reverse as urlreverse from pyquery import PyQuery diff --git a/ietf/doc/tests_draft.py b/ietf/doc/tests_draft.py index ae210e4bf..b89f76808 100644 --- a/ietf/doc/tests_draft.py +++ b/ietf/doc/tests_draft.py @@ -2,8 +2,6 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import os import shutil import datetime diff --git a/ietf/doc/tests_material.py b/ietf/doc/tests_material.py index 4c1d1978a..8d4482139 100644 --- a/ietf/doc/tests_material.py +++ b/ietf/doc/tests_material.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2014-2019, All Rights Reserved +# Copyright The IETF Trust 2014-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import os import shutil import datetime diff --git a/ietf/doc/tests_review.py b/ietf/doc/tests_review.py index 1856d5fcb..b558c3f26 100644 --- a/ietf/doc/tests_review.py +++ b/ietf/doc/tests_review.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2016-2019, All Rights Reserved +# Copyright The IETF Trust 2016-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import datetime, os, shutil import io import tarfile, tempfile, mailbox diff --git a/ietf/doc/tests_status_change.py b/ietf/doc/tests_status_change.py index 01dd42457..cbfd131f2 100644 --- a/ietf/doc/tests_status_change.py +++ b/ietf/doc/tests_status_change.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2013-2019, All Rights Reserved +# Copyright The IETF Trust 2013-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import io import os import shutil diff --git a/ietf/doc/urls.py b/ietf/doc/urls.py index 9038ff1bb..1bef6f9ed 100644 --- a/ietf/doc/urls.py +++ b/ietf/doc/urls.py @@ -1,4 +1,4 @@ -# Copyright The IETF Trust 2009-2019, All Rights Reserved +# Copyright The IETF Trust 2009-2020, All Rights Reserved # -*- coding: utf-8 -*- # Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). # All rights reserved. Contact: Pasi Eronen @@ -33,8 +33,6 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -from __future__ import absolute_import, print_function, unicode_literals - from django.conf.urls import include from django.views.generic import RedirectView from django.conf import settings diff --git a/ietf/doc/urls_conflict_review.py b/ietf/doc/urls_conflict_review.py index 3e244d852..aaad3259b 100644 --- a/ietf/doc/urls_conflict_review.py +++ b/ietf/doc/urls_conflict_review.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2012-2019, All Rights Reserved +# Copyright The IETF Trust 2012-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - from ietf.doc import views_conflict_review, views_doc from ietf.utils.urls import url diff --git a/ietf/doc/utils.py b/ietf/doc/utils.py index 6fe946b87..a9dbb0127 100644 --- a/ietf/doc/utils.py +++ b/ietf/doc/utils.py @@ -2,8 +2,6 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import datetime import hashlib import io @@ -11,10 +9,9 @@ import json import math import os import re -import six from collections import defaultdict -from six.moves.urllib.parse import quote +from urllib.parse import quote from django.conf import settings from django.contrib import messages @@ -705,7 +702,7 @@ def get_initial_notify(doc,extra=None): receivers = [] if extra: - if isinstance(extra, six.string_types): + if isinstance(extra, str): extra = extra.split(', ') receivers.extend(extra) diff --git a/ietf/doc/utils_charter.py b/ietf/doc/utils_charter.py index 58e656bf4..0adeae231 100644 --- a/ietf/doc/utils_charter.py +++ b/ietf/doc/utils_charter.py @@ -2,8 +2,6 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import datetime import io import os diff --git a/ietf/doc/utils_search.py b/ietf/doc/utils_search.py index f2ee4622f..7aa170fe0 100644 --- a/ietf/doc/utils_search.py +++ b/ietf/doc/utils_search.py @@ -2,8 +2,6 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import datetime import debug # pyflakes:ignore diff --git a/ietf/doc/views_ballot.py b/ietf/doc/views_ballot.py index 1722aab30..02ef19b37 100644 --- a/ietf/doc/views_ballot.py +++ b/ietf/doc/views_ballot.py @@ -4,8 +4,6 @@ # Directors and Secretariat -from __future__ import absolute_import, print_function, unicode_literals - import datetime, json from django import forms diff --git a/ietf/doc/views_charter.py b/ietf/doc/views_charter.py index 8234be4f0..632ab4364 100644 --- a/ietf/doc/views_charter.py +++ b/ietf/doc/views_charter.py @@ -2,8 +2,6 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import datetime import io import json diff --git a/ietf/doc/views_conflict_review.py b/ietf/doc/views_conflict_review.py index e7545bdf7..dd41021bc 100644 --- a/ietf/doc/views_conflict_review.py +++ b/ietf/doc/views_conflict_review.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2012-2019, All Rights Reserved +# Copyright The IETF Trust 2012-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import datetime import io import os diff --git a/ietf/doc/views_doc.py b/ietf/doc/views_doc.py index 1b4ab7724..f514de2ba 100644 --- a/ietf/doc/views_doc.py +++ b/ietf/doc/views_doc.py @@ -34,17 +34,14 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -from __future__ import absolute_import, print_function, unicode_literals - import datetime import glob import io import json import os import re -import six -from six.moves.urllib.parse import quote +from urllib.parse import quote from django.http import HttpResponse, Http404 , HttpResponseForbidden from django.shortcuts import render, get_object_or_404, redirect @@ -1392,7 +1389,7 @@ def add_sessionpresentation(request,name): if doc.group: sessions = sorted(sessions,key=lambda x:0 if x.group==doc.group else 1) - session_choices = [(s.pk, six.text_type(s)) for s in sessions] + session_choices = [(s.pk, str(s)) for s in sessions] if request.method == 'POST': version_form = VersionForm(request.POST,choices=version_choices) diff --git a/ietf/doc/views_downref.py b/ietf/doc/views_downref.py index 4336566f8..1b7b51edb 100644 --- a/ietf/doc/views_downref.py +++ b/ietf/doc/views_downref.py @@ -1,10 +1,7 @@ -# Copyright The IETF Trust 2017-2019, All Rights Reserved +# Copyright The IETF Trust 2017-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - - from django.urls import reverse as urlreverse from django.http import HttpResponseRedirect from django.shortcuts import render diff --git a/ietf/doc/views_draft.py b/ietf/doc/views_draft.py index 0c87330bc..9b025956e 100644 --- a/ietf/doc/views_draft.py +++ b/ietf/doc/views_draft.py @@ -2,8 +2,6 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - # changing state and metadata on Internet Drafts import datetime diff --git a/ietf/doc/views_material.py b/ietf/doc/views_material.py index d8b3847c3..46a24fd90 100644 --- a/ietf/doc/views_material.py +++ b/ietf/doc/views_material.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2014-2019, All Rights Reserved +# Copyright The IETF Trust 2014-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - # views for managing group materials (slides, ...) import io import os diff --git a/ietf/doc/views_review.py b/ietf/doc/views_review.py index 4e4db5efe..47bb1d441 100644 --- a/ietf/doc/views_review.py +++ b/ietf/doc/views_review.py @@ -2,8 +2,6 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import io import itertools import json diff --git a/ietf/doc/views_search.py b/ietf/doc/views_search.py index d2f76a991..3bf12a4d9 100644 --- a/ietf/doc/views_search.py +++ b/ietf/doc/views_search.py @@ -34,8 +34,6 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -from __future__ import absolute_import, print_function, unicode_literals - import re import datetime diff --git a/ietf/doc/views_status_change.py b/ietf/doc/views_status_change.py index 271f4086e..b5f628e2e 100644 --- a/ietf/doc/views_status_change.py +++ b/ietf/doc/views_status_change.py @@ -1,16 +1,13 @@ -# Copyright The IETF Trust 2012-2019, All Rights Reserved +# Copyright The IETF Trust 2012-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import datetime import io import os import re -import six -if six.PY3: - from typing import Dict # pyflakes:ignore + +from typing import Dict # pyflakes:ignore from django import forms from django.shortcuts import render, get_object_or_404, redirect diff --git a/ietf/group/admin.py b/ietf/group/admin.py index ca72a4397..cbfcc24b6 100644 --- a/ietf/group/admin.py +++ b/ietf/group/admin.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2010-2019, All Rights Reserved +# Copyright The IETF Trust 2010-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - from functools import update_wrapper from django.contrib import admin diff --git a/ietf/group/dot.py b/ietf/group/dot.py index 0efc40545..e5fa1b297 100644 --- a/ietf/group/dot.py +++ b/ietf/group/dot.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2017-2019, All Rights Reserved +# Copyright The IETF Trust 2017-2020, All Rights Reserved # -*- coding: utf-8 -*- # -*- check-flake8 -*- -from __future__ import absolute_import, print_function, unicode_literals - from django.db.models import Q from django.template.loader import render_to_string diff --git a/ietf/group/feeds.py b/ietf/group/feeds.py index 8cc8a98ee..10713f91f 100644 --- a/ietf/group/feeds.py +++ b/ietf/group/feeds.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2011-2019, All Rights Reserved +# Copyright The IETF Trust 2011-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - from django.contrib.syndication.views import Feed, FeedDoesNotExist from django.utils.feedgenerator import Atom1Feed from django.urls import reverse as urlreverse diff --git a/ietf/group/forms.py b/ietf/group/forms.py index 2e68461be..573c4a6f0 100644 --- a/ietf/group/forms.py +++ b/ietf/group/forms.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2017-2019, All Rights Reserved +# Copyright The IETF Trust 2017-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - # Stdlib imports import datetime import re diff --git a/ietf/group/mails.py b/ietf/group/mails.py index 9adcbc4d1..6ebf5b0f1 100644 --- a/ietf/group/mails.py +++ b/ietf/group/mails.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2012-2019, All Rights Reserved +# Copyright The IETF Trust 2012-2020, All Rights Reserved # -*- coding: utf-8 -*- # generation of mails -from __future__ import absolute_import, print_function, unicode_literals - import re diff --git a/ietf/group/management/commands/show_group_features.py b/ietf/group/management/commands/show_group_features.py index 75789d23f..645eb0958 100644 --- a/ietf/group/management/commands/show_group_features.py +++ b/ietf/group/management/commands/show_group_features.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import collections from django.core.management.base import BaseCommand diff --git a/ietf/group/migrations/0001_initial.py b/ietf/group/migrations/0001_initial.py index faebd4811..740d5315b 100644 --- a/ietf/group/migrations/0001_initial.py +++ b/ietf/group/migrations/0001_initial.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.10 on 2018-02-20 10:52 -from __future__ import absolute_import, print_function, unicode_literals - import datetime from django.db import migrations, models import django.db.models.deletion diff --git a/ietf/group/migrations/0002_groupfeatures_historicalgroupfeatures.py b/ietf/group/migrations/0002_groupfeatures_historicalgroupfeatures.py index b26fa386a..7828722cc 100644 --- a/ietf/group/migrations/0002_groupfeatures_historicalgroupfeatures.py +++ b/ietf/group/migrations/0002_groupfeatures_historicalgroupfeatures.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.13 on 2018-07-10 15:58 -from __future__ import absolute_import, print_function, unicode_literals - import django.core.validators import django.db.models.deletion diff --git a/ietf/group/migrations/0003_groupfeatures_data.py b/ietf/group/migrations/0003_groupfeatures_data.py index 6d78632ed..1e46f1df5 100644 --- a/ietf/group/migrations/0003_groupfeatures_data.py +++ b/ietf/group/migrations/0003_groupfeatures_data.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.13 on 2018-07-10 15:58 -from __future__ import absolute_import, print_function, unicode_literals - from django.conf import settings from django.db import migrations diff --git a/ietf/group/migrations/0004_add_group_feature_fields.py b/ietf/group/migrations/0004_add_group_feature_fields.py index e103bc028..681232f6c 100644 --- a/ietf/group/migrations/0004_add_group_feature_fields.py +++ b/ietf/group/migrations/0004_add_group_feature_fields.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.16 on 2019-01-10 07:51 -from __future__ import absolute_import, print_function, unicode_literals - import django.core.validators from django.db import migrations, models diff --git a/ietf/group/migrations/0005_group_features_list_data_to_json.py b/ietf/group/migrations/0005_group_features_list_data_to_json.py index 604cdecd7..68727ffe4 100644 --- a/ietf/group/migrations/0005_group_features_list_data_to_json.py +++ b/ietf/group/migrations/0005_group_features_list_data_to_json.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.16 on 2019-01-09 09:02 -from __future__ import absolute_import, print_function, unicode_literals - import json import re diff --git a/ietf/group/migrations/0006_group_features_lists_to_jsonfield.py b/ietf/group/migrations/0006_group_features_lists_to_jsonfield.py index f332cd058..76412c821 100644 --- a/ietf/group/migrations/0006_group_features_lists_to_jsonfield.py +++ b/ietf/group/migrations/0006_group_features_lists_to_jsonfield.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.16 on 2019-01-16 05:53 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations, models import jsonfield.fields diff --git a/ietf/group/migrations/0007_new_group_features_data.py b/ietf/group/migrations/0007_new_group_features_data.py index 35b28609d..b08e7f8ae 100644 --- a/ietf/group/migrations/0007_new_group_features_data.py +++ b/ietf/group/migrations/0007_new_group_features_data.py @@ -1,11 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.16 on 2019-01-09 09:02 -from __future__ import absolute_import, print_function, unicode_literals - - from django.db import migrations import debug # pyflakes:ignore diff --git a/ietf/group/migrations/0008_group_features_onetoone.py b/ietf/group/migrations/0008_group_features_onetoone.py index 27883d18f..86bfacc1e 100644 --- a/ietf/group/migrations/0008_group_features_onetoone.py +++ b/ietf/group/migrations/0008_group_features_onetoone.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.16 on 2019-01-19 10:08 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations, models import django.db.models.deletion import ietf.utils.models diff --git a/ietf/group/migrations/0009_auto_20190122_1012.py b/ietf/group/migrations/0009_auto_20190122_1012.py index b026bee72..397757404 100644 --- a/ietf/group/migrations/0009_auto_20190122_1012.py +++ b/ietf/group/migrations/0009_auto_20190122_1012.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.18 on 2019-01-22 10:12 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations, models import django.db.models.deletion diff --git a/ietf/group/migrations/0010_add_group_types.py b/ietf/group/migrations/0010_add_group_types.py index c32d73f26..59c2c07f7 100644 --- a/ietf/group/migrations/0010_add_group_types.py +++ b/ietf/group/migrations/0010_add_group_types.py @@ -1,11 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.16 on 2019-01-09 09:02 -from __future__ import absolute_import, print_function, unicode_literals - - from django.db import migrations import debug # pyflakes:ignore diff --git a/ietf/group/migrations/0011_auto_20190225_1302.py b/ietf/group/migrations/0011_auto_20190225_1302.py index 0dfa13f25..1b5e45e2e 100644 --- a/ietf/group/migrations/0011_auto_20190225_1302.py +++ b/ietf/group/migrations/0011_auto_20190225_1302.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-02-25 13:02 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations diff --git a/ietf/group/migrations/0012_add_old_nomcom_announcements.py b/ietf/group/migrations/0012_add_old_nomcom_announcements.py index 50308af2c..3aa65bc91 100644 --- a/ietf/group/migrations/0012_add_old_nomcom_announcements.py +++ b/ietf/group/migrations/0012_add_old_nomcom_announcements.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-03-23 17:50 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations from ietf.group.models import Group diff --git a/ietf/group/migrations/0013_add_groupmilestone_docs2_m2m.py b/ietf/group/migrations/0013_add_groupmilestone_docs2_m2m.py index d3422419e..dd1eba669 100644 --- a/ietf/group/migrations/0013_add_groupmilestone_docs2_m2m.py +++ b/ietf/group/migrations/0013_add_groupmilestone_docs2_m2m.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-02-25 13:02 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations, models import django.db.models.deletion import ietf.utils.models diff --git a/ietf/group/migrations/0014_set_document_m2m_keys.py b/ietf/group/migrations/0014_set_document_m2m_keys.py index 46311d284..f886a9006 100644 --- a/ietf/group/migrations/0014_set_document_m2m_keys.py +++ b/ietf/group/migrations/0014_set_document_m2m_keys.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-05-10 06:48 -from __future__ import absolute_import, print_function, unicode_literals - import sys from tqdm import tqdm diff --git a/ietf/group/migrations/0015_1_del_docs_m2m_table.py b/ietf/group/migrations/0015_1_del_docs_m2m_table.py index 1f9868880..717eccaa7 100644 --- a/ietf/group/migrations/0015_1_del_docs_m2m_table.py +++ b/ietf/group/migrations/0015_1_del_docs_m2m_table.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-05-22 08:00 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations, models diff --git a/ietf/group/migrations/0015_2_add_docs_m2m_table.py b/ietf/group/migrations/0015_2_add_docs_m2m_table.py index 02d16942c..e7c0e3bfb 100644 --- a/ietf/group/migrations/0015_2_add_docs_m2m_table.py +++ b/ietf/group/migrations/0015_2_add_docs_m2m_table.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-05-22 08:00 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations, models diff --git a/ietf/group/migrations/0016_copy_docs_m2m_table.py b/ietf/group/migrations/0016_copy_docs_m2m_table.py index 0b34ff7ff..2871c34a9 100644 --- a/ietf/group/migrations/0016_copy_docs_m2m_table.py +++ b/ietf/group/migrations/0016_copy_docs_m2m_table.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-05-27 05:57 -from __future__ import absolute_import, print_function, unicode_literals - import sys, time from tqdm import tqdm diff --git a/ietf/group/migrations/0017_remove_docs2_m2m.py b/ietf/group/migrations/0017_remove_docs2_m2m.py index 0839ace4f..00a44303d 100644 --- a/ietf/group/migrations/0017_remove_docs2_m2m.py +++ b/ietf/group/migrations/0017_remove_docs2_m2m.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-05-30 03:23 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations diff --git a/ietf/group/migrations/0018_remove_old_document_field.py b/ietf/group/migrations/0018_remove_old_document_field.py index 46b165e29..5a47e545c 100644 --- a/ietf/group/migrations/0018_remove_old_document_field.py +++ b/ietf/group/migrations/0018_remove_old_document_field.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-05-25 06:51 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations diff --git a/ietf/group/migrations/0019_rename_field_document2.py b/ietf/group/migrations/0019_rename_field_document2.py index ee6747514..438c669d2 100644 --- a/ietf/group/migrations/0019_rename_field_document2.py +++ b/ietf/group/migrations/0019_rename_field_document2.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-05-25 06:52 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations diff --git a/ietf/group/migrations/0020_add_uses_milestone_dates.py b/ietf/group/migrations/0020_add_uses_milestone_dates.py index 1dc7c3e33..a14b49fbe 100644 --- a/ietf/group/migrations/0020_add_uses_milestone_dates.py +++ b/ietf/group/migrations/0020_add_uses_milestone_dates.py @@ -1,7 +1,7 @@ # Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.25 on 2019-10-30 11:41 -from __future__ import unicode_literals + from django.db import migrations, models diff --git a/ietf/group/migrations/0021_add_order_to_milestones.py b/ietf/group/migrations/0021_add_order_to_milestones.py index bf0be03c9..22f40af6c 100644 --- a/ietf/group/migrations/0021_add_order_to_milestones.py +++ b/ietf/group/migrations/0021_add_order_to_milestones.py @@ -1,7 +1,7 @@ # Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.25 on 2019-10-30 13:37 -from __future__ import unicode_literals + from django.db import migrations, models diff --git a/ietf/group/migrations/0022_populate_uses_milestone_dates.py b/ietf/group/migrations/0022_populate_uses_milestone_dates.py index 43ab00977..a7b7d3eaa 100644 --- a/ietf/group/migrations/0022_populate_uses_milestone_dates.py +++ b/ietf/group/migrations/0022_populate_uses_milestone_dates.py @@ -1,7 +1,7 @@ # Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.25 on 2019-10-30 11:42 -from __future__ import unicode_literals + from django.db import migrations diff --git a/ietf/group/migrations/0023_use_milestone_dates_default_to_true.py b/ietf/group/migrations/0023_use_milestone_dates_default_to_true.py index 7e9433e26..440fce54a 100644 --- a/ietf/group/migrations/0023_use_milestone_dates_default_to_true.py +++ b/ietf/group/migrations/0023_use_milestone_dates_default_to_true.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # Copyright The IETF Trust 2020, All Rights Reserved # Generated by Django 1.11.28 on 2020-02-11 07:47 -from __future__ import unicode_literals + from django.db import migrations, models diff --git a/ietf/group/models.py b/ietf/group/models.py index 1232ce8a6..e79431b90 100644 --- a/ietf/group/models.py +++ b/ietf/group/models.py @@ -1,15 +1,14 @@ # Copyright The IETF Trust 2010-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals + import datetime import email.utils import jsonfield import os import re -import six -from six.moves.urllib.parse import urljoin +from urllib.parse import urljoin from django.conf import settings from django.core.validators import RegexValidator @@ -97,7 +96,7 @@ class Group(GroupInfo): return e[0] if e else None def has_role(self, user, role_names): - if isinstance(role_names, six.string_types): + if not isinstance(role_names, (list, tuple)): role_names = [role_names] return user.is_authenticated and self.role_set.filter(name__in=role_names, person__user=user).exists() diff --git a/ietf/group/tests.py b/ietf/group/tests.py index 1fbe40cb6..04e3ac78c 100644 --- a/ietf/group/tests.py +++ b/ietf/group/tests.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2013-2019, All Rights Reserved +# Copyright The IETF Trust 2013-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import os from unittest import skipIf diff --git a/ietf/group/tests_info.py b/ietf/group/tests_info.py index 950f099a2..42f395747 100644 --- a/ietf/group/tests_info.py +++ b/ietf/group/tests_info.py @@ -2,15 +2,12 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import os import shutil import calendar import datetime import io import bleach -import six from pyquery import PyQuery from tempfile import NamedTemporaryFile @@ -1455,7 +1452,7 @@ class StatusUpdateTests(TestCase): response = self.client.get(url) self.assertEqual(response.status_code,200) q=PyQuery(response.content) - self.assertTrue(bleach.linkify(escape(event.desc)) in six.text_type(q('pre'))) + self.assertTrue(bleach.linkify(escape(event.desc)) in str(q('pre'))) self.assertFalse(q('a#edit_button')) self.client.login(username=chair.person.user.username,password='%s+password'%chair.person.user.username) response = self.client.get(url) diff --git a/ietf/group/tests_review.py b/ietf/group/tests_review.py index f498a2edb..d76835c09 100644 --- a/ietf/group/tests_review.py +++ b/ietf/group/tests_review.py @@ -2,11 +2,8 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import datetime import debug # pyflakes:ignore -import six from pyquery import PyQuery @@ -522,7 +519,7 @@ class ReviewTests(TestCase): # i.e. the document name is expected twice in the output (#2118) self.assertEqual(generated_text.count(review_req1.doc.name), 2) self.assertEqual(generated_text.count('(-0 lc reviewed)'), 2) # previous completed assignment - self.assertTrue(six.text_type(Person.objects.get(user__username="marschairman")) in generated_text) + self.assertTrue(str(Person.objects.get(user__username="marschairman")) in generated_text) empty_outbox() r = self.client.post(url, { diff --git a/ietf/group/utils.py b/ietf/group/utils.py index 94dafc0ec..65be4861f 100644 --- a/ietf/group/utils.py +++ b/ietf/group/utils.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2012-2019, All Rights Reserved +# Copyright The IETF Trust 2012-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import io import os diff --git a/ietf/group/views.py b/ietf/group/views.py index 8f32bd34b..8d9ceaed3 100644 --- a/ietf/group/views.py +++ b/ietf/group/views.py @@ -34,8 +34,6 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -from __future__ import absolute_import, print_function, unicode_literals - import copy import datetime import itertools @@ -44,7 +42,6 @@ import json import math import os import re -import six from tempfile import mkstemp from collections import OrderedDict, defaultdict @@ -1541,7 +1538,7 @@ def manage_review_requests(request, acronym, group_type=None, assignment_status= saving = form_action.startswith("save") # check for conflicts - review_requests_dict = { six.text_type(r.pk): r for r in review_requests if r.pk} + review_requests_dict = { str(r.pk): r for r in review_requests if r.pk} posted_reqs = set(request.POST.getlist("reviewrequest", [])) posted_reqs.discard(u'None') current_reqs = set(review_requests_dict.keys()) diff --git a/ietf/idindex/generate_all_id2_txt.py b/ietf/idindex/generate_all_id2_txt.py index 43a137bde..91ef549cb 100755 --- a/ietf/idindex/generate_all_id2_txt.py +++ b/ietf/idindex/generate_all_id2_txt.py @@ -35,10 +35,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -from __future__ import absolute_import, print_function, unicode_literals - import os -import six import sys os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ietf.settings") @@ -47,7 +44,5 @@ import django django.setup() from ietf.idindex.index import all_id2_txt -if six.PY3: - sys.stdout.write(all_id2_txt()) -else: - sys.stdout.write(all_id2_txt().encode('utf-8')) + +sys.stdout.write(all_id2_txt()) diff --git a/ietf/idindex/generate_all_id_txt.py b/ietf/idindex/generate_all_id_txt.py index dffa650c8..b953f0004 100755 --- a/ietf/idindex/generate_all_id_txt.py +++ b/ietf/idindex/generate_all_id_txt.py @@ -34,10 +34,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -from __future__ import absolute_import, print_function, unicode_literals - import os -import six import sys os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ietf.settings") @@ -45,7 +42,5 @@ import django django.setup() from ietf.idindex.index import all_id_txt -if six.PY3: - sys.stdout.write(all_id_txt()) -else: - sys.stdout.write(all_id_txt().encode('utf-8')) + +sys.stdout.write(all_id_txt()) diff --git a/ietf/idindex/generate_id_abstracts_txt.py b/ietf/idindex/generate_id_abstracts_txt.py index fce23dea0..62e43c496 100755 --- a/ietf/idindex/generate_id_abstracts_txt.py +++ b/ietf/idindex/generate_id_abstracts_txt.py @@ -34,10 +34,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -from __future__ import absolute_import, print_function, unicode_literals - import os -import six import sys os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ietf.settings") @@ -45,8 +42,6 @@ import django django.setup() from ietf.idindex.index import id_index_txt -if six.PY3: - sys.stdout.write(id_index_txt(with_abstracts=True)) -else: - sys.stdout.write(id_index_txt(with_abstracts=True).encode('utf-8')) + +sys.stdout.write(id_index_txt(with_abstracts=True)) diff --git a/ietf/idindex/generate_id_index_txt.py b/ietf/idindex/generate_id_index_txt.py index 6a32ebced..6a27dfdac 100755 --- a/ietf/idindex/generate_id_index_txt.py +++ b/ietf/idindex/generate_id_index_txt.py @@ -34,10 +34,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -from __future__ import absolute_import, print_function, unicode_literals - import os -import six import sys os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ietf.settings") @@ -45,8 +42,6 @@ import django django.setup() from ietf.idindex.index import id_index_txt -if six.PY3: - sys.stdout.write(id_index_txt()) -else: - sys.stdout.write(id_index_txt().encode('utf-8')) + +sys.stdout.write(id_index_txt()) diff --git a/ietf/idindex/index.py b/ietf/idindex/index.py index abbafc828..3d17b197c 100644 --- a/ietf/idindex/index.py +++ b/ietf/idindex/index.py @@ -1,16 +1,13 @@ -# Copyright The IETF Trust 2013-2019, All Rights Reserved +# Copyright The IETF Trust 2013-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - # code to generate plain-text index files that are placed on # www.ietf.org in the same directory as the I-Ds import datetime import os import pytz -import six from django.conf import settings from django.template.loader import render_to_string @@ -193,7 +190,7 @@ def all_id2_txt(): area = d.group.parent.acronym fields.append(area) # 9 responsible AD name - fields.append(six.text_type(d.ad) if d.ad else "") + fields.append(str(d.ad) if d.ad else "") # 10 fields.append(d.intended_std_level.name if d.intended_std_level else "") # 11 diff --git a/ietf/idindex/tests.py b/ietf/idindex/tests.py index 07b0eebd7..101d9aa26 100644 --- a/ietf/idindex/tests.py +++ b/ietf/idindex/tests.py @@ -1,14 +1,11 @@ -# Copyright The IETF Trust 2009-2019, All Rights Reserved +# Copyright The IETF Trust 2009-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import datetime import io import os import shutil -import six from django.conf import settings @@ -102,7 +99,7 @@ class IndexTests(TestCase): self.assertEqual(t[6], draft.latest_event(type="new_revision").time.strftime("%Y-%m-%d")) self.assertEqual(t[7], draft.group.acronym) self.assertEqual(t[8], draft.group.parent.acronym) - self.assertEqual(t[9], six.text_type(draft.ad)) + self.assertEqual(t[9], str(draft.ad)) self.assertEqual(t[10], draft.intended_std_level.name) self.assertEqual(t[11], "") self.assertEqual(t[12], ".pdf,.txt") diff --git a/ietf/iesg/__init__.py b/ietf/iesg/__init__.py index 78e8b3ff8..f53d26ebf 100644 --- a/ietf/iesg/__init__.py +++ b/ietf/iesg/__init__.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2007-2019, All Rights Reserved +# Copyright The IETF Trust 2007-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - from types import ModuleType # These people will be sent a stack trace if there's an uncaught exception in diff --git a/ietf/iesg/agenda.py b/ietf/iesg/agenda.py index cabe85af2..3783ad25e 100644 --- a/ietf/iesg/agenda.py +++ b/ietf/iesg/agenda.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2013-2019, All Rights Reserved +# Copyright The IETF Trust 2013-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - # utilities for constructing agendas for IESG telechats import io diff --git a/ietf/iesg/feeds.py b/ietf/iesg/feeds.py index 0cd17f5fe..6e8d290c6 100644 --- a/ietf/iesg/feeds.py +++ b/ietf/iesg/feeds.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2007-2019, All Rights Reserved +# Copyright The IETF Trust 2007-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import datetime from django.contrib.syndication.views import Feed diff --git a/ietf/iesg/models.py b/ietf/iesg/models.py index bf716a9d9..3691edb6d 100644 --- a/ietf/iesg/models.py +++ b/ietf/iesg/models.py @@ -1,4 +1,4 @@ -# Copyright The IETF Trust 2007-2019, All Rights Reserved +# Copyright The IETF Trust 2007-2020, All Rights Reserved # -*- coding: utf-8 -*- # # Portion Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies). @@ -34,8 +34,6 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -from __future__ import absolute_import, print_function, unicode_literals - import datetime from django.db import models diff --git a/ietf/iesg/tests.py b/ietf/iesg/tests.py index e28d471ff..a0b2eaa3b 100644 --- a/ietf/iesg/tests.py +++ b/ietf/iesg/tests.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2009-2019, All Rights Reserved +# Copyright The IETF Trust 2009-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import datetime import io import os diff --git a/ietf/iesg/views.py b/ietf/iesg/views.py index 9d3a9bb4a..b023e1612 100644 --- a/ietf/iesg/views.py +++ b/ietf/iesg/views.py @@ -1,4 +1,4 @@ -# Copyright The IETF Trust 2007-2019, All Rights Reserved +# Copyright The IETF Trust 2007-2020, All Rights Reserved # -*- coding: utf-8 -*- # # Portion Copyright (C) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). @@ -34,14 +34,11 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -from __future__ import absolute_import, print_function, unicode_literals - import datetime import io import itertools import json import os -import six import tarfile import time @@ -317,9 +314,9 @@ def agenda_documents_txt(request): row = ( d.computed_telechat_date.isoformat(), d.name, - six.text_type(d.intended_std_level), + str(d.intended_std_level), "1" if d.stream_id in ("ise", "irtf") else "0", - six.text_type(d.area_acronym()).lower(), + (d.area_acronym() or 'none').lower(), d.ad.plain_name() if d.ad else "None Assigned", d.rev, ) diff --git a/ietf/ietfauth/forms.py b/ietf/ietfauth/forms.py index a56258140..b6a680cb8 100644 --- a/ietf/ietfauth/forms.py +++ b/ietf/ietfauth/forms.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2011-2019, All Rights Reserved +# Copyright The IETF Trust 2011-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import re from unidecode import unidecode diff --git a/ietf/ietfauth/htpasswd.py b/ietf/ietfauth/htpasswd.py index cc42a5d8a..3716d9860 100644 --- a/ietf/ietfauth/htpasswd.py +++ b/ietf/ietfauth/htpasswd.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2016-2019, All Rights Reserved +# Copyright The IETF Trust 2016-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import io import subprocess, hashlib from django.utils.encoding import force_bytes diff --git a/ietf/ietfauth/management/commands/send_apikey_usage_emails.py b/ietf/ietfauth/management/commands/send_apikey_usage_emails.py index ad671c218..557866de3 100644 --- a/ietf/ietfauth/management/commands/send_apikey_usage_emails.py +++ b/ietf/ietfauth/management/commands/send_apikey_usage_emails.py @@ -1,9 +1,7 @@ # -*- coding: utf-8 -*- -# Copyright The IETF Trust 2017-2019, All Rights Reserved +# Copyright The IETF Trust 2017-2020, All Rights Reserved -from __future__ import absolute_import, print_function, unicode_literals - import datetime from textwrap import dedent diff --git a/ietf/ietfauth/tests.py b/ietf/ietfauth/tests.py index ea7eea7e8..e381893d6 100644 --- a/ietf/ietfauth/tests.py +++ b/ietf/ietfauth/tests.py @@ -1,12 +1,10 @@ -# Copyright The IETF Trust 2009-2019, All Rights Reserved +# Copyright The IETF Trust 2009-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import io import os, shutil, time, datetime -from six.moves.urllib.parse import urlsplit +from urllib.parse import urlsplit from pyquery import PyQuery from unittest import skipIf diff --git a/ietf/ietfauth/utils.py b/ietf/ietfauth/utils.py index f51509f54..34d410980 100644 --- a/ietf/ietfauth/utils.py +++ b/ietf/ietfauth/utils.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2013-2019, All Rights Reserved +# Copyright The IETF Trust 2013-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - # various authentication and authorization utilities from functools import wraps diff --git a/ietf/ietfauth/views.py b/ietf/ietfauth/views.py index 859c9cedb..c12275bf1 100644 --- a/ietf/ietfauth/views.py +++ b/ietf/ietfauth/views.py @@ -1,4 +1,4 @@ -# Copyright The IETF Trust 2007-2019, All Rights Reserved +# Copyright The IETF Trust 2007-2020, All Rights Reserved # -*- coding: utf-8 -*- # # Portions Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). @@ -34,8 +34,6 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -from __future__ import absolute_import, print_function, unicode_literals - import importlib from datetime import datetime as DateTime, timedelta as TimeDelta, date as Date diff --git a/ietf/ipr/admin.py b/ietf/ipr/admin.py index bcc0c33aa..a0185f58c 100644 --- a/ietf/ipr/admin.py +++ b/ietf/ipr/admin.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2010-2019, All Rights Reserved +# Copyright The IETF Trust 2010-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - from django import forms from django.contrib import admin from ietf.name.models import DocRelationshipName diff --git a/ietf/ipr/factories.py b/ietf/ipr/factories.py index cf07d6d24..3d31895b7 100644 --- a/ietf/ipr/factories.py +++ b/ietf/ipr/factories.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import datetime import factory diff --git a/ietf/ipr/feeds.py b/ietf/ipr/feeds.py index 7b8f1938f..b5f4c4e6a 100644 --- a/ietf/ipr/feeds.py +++ b/ietf/ipr/feeds.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2007-2019, All Rights Reserved +# Copyright The IETF Trust 2007-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - from django.contrib.syndication.views import Feed from django.utils.feedgenerator import Atom1Feed from django.urls import reverse_lazy diff --git a/ietf/ipr/fields.py b/ietf/ipr/fields.py index 4b9987967..d842e0e14 100644 --- a/ietf/ipr/fields.py +++ b/ietf/ipr/fields.py @@ -1,11 +1,8 @@ -# Copyright The IETF Trust 2014-2019, All Rights Reserved +# Copyright The IETF Trust 2014-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import json -import six from django.utils.html import escape from django import forms @@ -54,7 +51,7 @@ class SearchableIprDisclosuresField(forms.CharField): def prepare_value(self, value): if not value: value = "" - if isinstance(value, six.string_types): + if isinstance(value, str): pks = self.parse_select2_value(value) # if the user posted a non integer value we need to remove it for key in pks: @@ -70,7 +67,7 @@ class SearchableIprDisclosuresField(forms.CharField): # patterns may not have been fully constructed there yet self.widget.attrs["data-ajax-url"] = urlreverse('ietf.ipr.views.ajax_search') - return ",".join(six.text_type(e.pk) for e in value) + return ",".join(str(e.pk) for e in value) def clean(self, value): value = super(SearchableIprDisclosuresField, self).clean(value) diff --git a/ietf/ipr/forms.py b/ietf/ipr/forms.py index 049dd9c95..6898137e3 100644 --- a/ietf/ipr/forms.py +++ b/ietf/ipr/forms.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2014-2019, All Rights Reserved +# Copyright The IETF Trust 2014-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import datetime import email diff --git a/ietf/ipr/mail.py b/ietf/ipr/mail.py index ec875b05a..5995f7944 100644 --- a/ietf/ipr/mail.py +++ b/ietf/ipr/mail.py @@ -2,8 +2,6 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import base64 import email import datetime diff --git a/ietf/ipr/management/commands/process_email.py b/ietf/ipr/management/commands/process_email.py index 0bb200ff6..1d3c1b2e3 100644 --- a/ietf/ipr/management/commands/process_email.py +++ b/ietf/ipr/management/commands/process_email.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2014-2019, All Rights Reserved +# Copyright The IETF Trust 2014-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import io import sys diff --git a/ietf/ipr/migrations/0001_initial.py b/ietf/ipr/migrations/0001_initial.py index 668d8e1df..e370d3d5a 100644 --- a/ietf/ipr/migrations/0001_initial.py +++ b/ietf/ipr/migrations/0001_initial.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.10 on 2018-02-20 10:52 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations, models import django.db.models.deletion import ietf.utils.models diff --git a/ietf/ipr/migrations/0002_auto_20180225_1207.py b/ietf/ipr/migrations/0002_auto_20180225_1207.py index 01c1fa9b1..3f34a491d 100644 --- a/ietf/ipr/migrations/0002_auto_20180225_1207.py +++ b/ietf/ipr/migrations/0002_auto_20180225_1207.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.10 on 2018-02-25 12:07 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations diff --git a/ietf/ipr/migrations/0003_add_ipdocrel_document2_fk.py b/ietf/ipr/migrations/0003_add_ipdocrel_document2_fk.py index 35576ffb3..e5ac7f441 100644 --- a/ietf/ipr/migrations/0003_add_ipdocrel_document2_fk.py +++ b/ietf/ipr/migrations/0003_add_ipdocrel_document2_fk.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-05-08 11:58 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations import django.db.models.deletion import ietf.utils.models diff --git a/ietf/ipr/migrations/0004_remove_iprdocrel_document.py b/ietf/ipr/migrations/0004_remove_iprdocrel_document.py index 2439193a6..d5af9d947 100644 --- a/ietf/ipr/migrations/0004_remove_iprdocrel_document.py +++ b/ietf/ipr/migrations/0004_remove_iprdocrel_document.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-05-20 09:53 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations diff --git a/ietf/ipr/migrations/0005_rename_field_document2.py b/ietf/ipr/migrations/0005_rename_field_document2.py index 6db908888..4fef4c227 100644 --- a/ietf/ipr/migrations/0005_rename_field_document2.py +++ b/ietf/ipr/migrations/0005_rename_field_document2.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-05-21 05:31 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations diff --git a/ietf/ipr/migrations/0006_document_primary_key_cleanup.py b/ietf/ipr/migrations/0006_document_primary_key_cleanup.py index 32dca70c4..df8f66c54 100644 --- a/ietf/ipr/migrations/0006_document_primary_key_cleanup.py +++ b/ietf/ipr/migrations/0006_document_primary_key_cleanup.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-06-10 03:42 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations import django.db.models.deletion import ietf.utils.models diff --git a/ietf/ipr/migrations/0007_create_ipr_doc_events.py b/ietf/ipr/migrations/0007_create_ipr_doc_events.py index d5f17ab43..395bc11ce 100644 --- a/ietf/ipr/migrations/0007_create_ipr_doc_events.py +++ b/ietf/ipr/migrations/0007_create_ipr_doc_events.py @@ -1,7 +1,7 @@ # Copyright The IETF Trust 2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.27 on 2020-01-17 12:32 -from __future__ import unicode_literals + from django.db import migrations diff --git a/ietf/ipr/models.py b/ietf/ipr/models.py index 9e6c3bc26..e38f7f5cc 100644 --- a/ietf/ipr/models.py +++ b/ietf/ipr/models.py @@ -2,8 +2,6 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import datetime from django.conf import settings diff --git a/ietf/ipr/templatetags/ipr_filters.py b/ietf/ipr/templatetags/ipr_filters.py index 43bf90234..19586d1eb 100644 --- a/ietf/ipr/templatetags/ipr_filters.py +++ b/ietf/ipr/templatetags/ipr_filters.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2014-2019, All Rights Reserved +# Copyright The IETF Trust 2014-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - from django import template from django.utils.html import format_html diff --git a/ietf/ipr/tests.py b/ietf/ipr/tests.py index ff9e98cbc..6542d4d28 100644 --- a/ietf/ipr/tests.py +++ b/ietf/ipr/tests.py @@ -2,13 +2,11 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import datetime from pyquery import PyQuery -from six.moves.urllib.parse import quote +from urllib.parse import quote from django.urls import reverse as urlreverse diff --git a/ietf/ipr/utils.py b/ietf/ipr/utils.py index b31d5195a..69e03087f 100644 --- a/ietf/ipr/utils.py +++ b/ietf/ipr/utils.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2014-2019, All Rights Reserved +# Copyright The IETF Trust 2014-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import debug # pyflakes:ignore def get_genitive(name): diff --git a/ietf/ipr/views.py b/ietf/ipr/views.py index 81df9ab95..300fc5d78 100644 --- a/ietf/ipr/views.py +++ b/ietf/ipr/views.py @@ -1,12 +1,9 @@ -# Copyright The IETF Trust 2007-2019, All Rights Reserved +# Copyright The IETF Trust 2007-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import datetime import itertools -import six from django.conf import settings from django.contrib import messages @@ -456,7 +453,7 @@ def by_draft_txt(request): lines = [ "# Machine-readable list of IPR disclosures by draft name" ] for name, iprs in docipr.items(): - lines.append(name + "\t" + "\t".join(six.text_type(ipr_id) for ipr_id in sorted(iprs))) + lines.append(name + "\t" + "\t".join(str(ipr_id) for ipr_id in sorted(iprs))) return HttpResponse("\n".join(lines), content_type="text/plain; charset=%s"%settings.DEFAULT_CHARSET) @@ -478,7 +475,7 @@ def by_draft_recursive_txt(request): lines = [ "# Machine-readable list of IPR disclosures by draft name" ] for name, iprs in docipr.items(): - lines.append(name + "\t" + "\t".join(six.text_type(ipr_id) for ipr_id in sorted(iprs))) + lines.append(name + "\t" + "\t".join(str(ipr_id) for ipr_id in sorted(iprs))) return HttpResponse("\n".join(lines), content_type="text/plain; charset=%s"%settings.DEFAULT_CHARSET) diff --git a/ietf/liaisons/__init__.py b/ietf/liaisons/__init__.py index fd066bea4..fc762171a 100644 --- a/ietf/liaisons/__init__.py +++ b/ietf/liaisons/__init__.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2007-2019, All Rights Reserved +# Copyright The IETF Trust 2007-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - from types import ModuleType # These people will be sent a stack trace if there's an uncaught exception in diff --git a/ietf/liaisons/admin.py b/ietf/liaisons/admin.py index b78152c10..8159e4866 100644 --- a/ietf/liaisons/admin.py +++ b/ietf/liaisons/admin.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2010-2019, All Rights Reserved +# Copyright The IETF Trust 2010-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - from django.contrib import admin from django.urls import reverse diff --git a/ietf/liaisons/feeds.py b/ietf/liaisons/feeds.py index 21920935a..f4411a805 100644 --- a/ietf/liaisons/feeds.py +++ b/ietf/liaisons/feeds.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2007-2019, All Rights Reserved +# Copyright The IETF Trust 2007-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import re from django.contrib.syndication.views import Feed, FeedDoesNotExist diff --git a/ietf/liaisons/fields.py b/ietf/liaisons/fields.py index 6f21b7c74..031e8379b 100644 --- a/ietf/liaisons/fields.py +++ b/ietf/liaisons/fields.py @@ -1,11 +1,8 @@ -# Copyright The IETF Trust 2014-2019, All Rights Reserved +# Copyright The IETF Trust 2014-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import json -import six from django.utils.html import escape from django import forms @@ -51,9 +48,9 @@ class SearchableLiaisonStatementsField(forms.CharField): def prepare_value(self, value): if not value: value = "" - if isinstance(value, six.integer_types): + if isinstance(value, int): value = str(value) - if isinstance(value, six.string_types): + if isinstance(value, str): pks = self.parse_select2_value(value) value = self.model.objects.filter(pk__in=pks) if isinstance(value, LiaisonStatement): @@ -65,7 +62,7 @@ class SearchableLiaisonStatementsField(forms.CharField): # patterns may not have been fully constructed there yet self.widget.attrs["data-ajax-url"] = urlreverse("ietf.liaisons.views.ajax_select2_search_liaison_statements") - return ",".join(six.text_type(o.pk) for o in value) + return ",".join(str(o.pk) for o in value) def clean(self, value): value = super(SearchableLiaisonStatementsField, self).clean(value) diff --git a/ietf/liaisons/forms.py b/ietf/liaisons/forms.py index 8f409fb90..7ad5b2dd9 100644 --- a/ietf/liaisons/forms.py +++ b/ietf/liaisons/forms.py @@ -1,15 +1,12 @@ -# Copyright The IETF Trust 2011-2019, All Rights Reserved +# Copyright The IETF Trust 2011-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import io import datetime, os import operator -import six -if six.PY3: - from typing import Union # pyflakes:ignore + +from typing import Union # pyflakes:ignore from email.utils import parseaddr from form_utils.forms import BetterModelForm @@ -206,7 +203,7 @@ class CustomModelMultipleChoiceField(forms.ModelMultipleChoiceField): if isinstance(value, QuerySet): return value if (hasattr(value, '__iter__') and - not isinstance(value, six.text_type) and + not isinstance(value, str) and not hasattr(value, '_meta')): return [super(CustomModelMultipleChoiceField, self).prepare_value(v) for v in value] return super(CustomModelMultipleChoiceField, self).prepare_value(value) @@ -454,7 +451,7 @@ class IncomingLiaisonForm(LiaisonModelForm): self.fields['from_contact'].initial = self.person.role_set.filter(group=queryset[0]).first().email.address self.fields['from_contact'].widget.attrs['readonly'] = True self.fields['from_groups'].queryset = queryset - self.fields['from_groups'].widget.submitter = six.text_type(self.person) + self.fields['from_groups'].widget.submitter = str(self.person) # if there's only one possibility make it the default if len(queryset) == 1: diff --git a/ietf/liaisons/mails.py b/ietf/liaisons/mails.py index caba5d366..47f18c75b 100644 --- a/ietf/liaisons/mails.py +++ b/ietf/liaisons/mails.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2011-2019, All Rights Reserved +# Copyright The IETF Trust 2011-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import datetime from django.conf import settings diff --git a/ietf/liaisons/management/commands/check_liaison_deadlines.py b/ietf/liaisons/management/commands/check_liaison_deadlines.py index 77032fe4b..84faa5fed 100644 --- a/ietf/liaisons/management/commands/check_liaison_deadlines.py +++ b/ietf/liaisons/management/commands/check_liaison_deadlines.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2010-2019, All Rights Reserved +# Copyright The IETF Trust 2010-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import datetime from django.core.management.base import BaseCommand diff --git a/ietf/liaisons/management/commands/remind_update_sdo_list.py b/ietf/liaisons/management/commands/remind_update_sdo_list.py index 264b11b21..e9966d783 100644 --- a/ietf/liaisons/management/commands/remind_update_sdo_list.py +++ b/ietf/liaisons/management/commands/remind_update_sdo_list.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2010-2019, All Rights Reserved +# Copyright The IETF Trust 2010-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - from django.core.management.base import BaseCommand from ietf.group.models import Group diff --git a/ietf/liaisons/migrations/0001_initial.py b/ietf/liaisons/migrations/0001_initial.py index 6071f82de..7b58564ff 100644 --- a/ietf/liaisons/migrations/0001_initial.py +++ b/ietf/liaisons/migrations/0001_initial.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.10 on 2018-02-20 10:52 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations, models import django.db.models.deletion import ietf.utils.models diff --git a/ietf/liaisons/migrations/0002_auto_20180225_1207.py b/ietf/liaisons/migrations/0002_auto_20180225_1207.py index f848a0391..62a9b8a13 100644 --- a/ietf/liaisons/migrations/0002_auto_20180225_1207.py +++ b/ietf/liaisons/migrations/0002_auto_20180225_1207.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.10 on 2018-02-25 12:07 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations diff --git a/ietf/liaisons/migrations/0003_liaison_document2_fk.py b/ietf/liaisons/migrations/0003_liaison_document2_fk.py index b46ced747..5fdf0f0f4 100644 --- a/ietf/liaisons/migrations/0003_liaison_document2_fk.py +++ b/ietf/liaisons/migrations/0003_liaison_document2_fk.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-05-08 11:58 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations import django.db.models.deletion import ietf.utils.models diff --git a/ietf/liaisons/migrations/0004_remove_liaisonstatementattachment_document.py b/ietf/liaisons/migrations/0004_remove_liaisonstatementattachment_document.py index 30a697d58..3f5868ef2 100644 --- a/ietf/liaisons/migrations/0004_remove_liaisonstatementattachment_document.py +++ b/ietf/liaisons/migrations/0004_remove_liaisonstatementattachment_document.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-05-20 09:53 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations diff --git a/ietf/liaisons/migrations/0005_rename_field_document2.py b/ietf/liaisons/migrations/0005_rename_field_document2.py index c557b3360..ddb800573 100644 --- a/ietf/liaisons/migrations/0005_rename_field_document2.py +++ b/ietf/liaisons/migrations/0005_rename_field_document2.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-05-21 05:31 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations diff --git a/ietf/liaisons/migrations/0006_document_primary_key_cleanup.py b/ietf/liaisons/migrations/0006_document_primary_key_cleanup.py index bc2918667..cae4b0ab1 100644 --- a/ietf/liaisons/migrations/0006_document_primary_key_cleanup.py +++ b/ietf/liaisons/migrations/0006_document_primary_key_cleanup.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-06-10 03:47 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations import django.db.models.deletion import ietf.utils.models diff --git a/ietf/liaisons/models.py b/ietf/liaisons/models.py index 70e1339af..0cacfcb27 100644 --- a/ietf/liaisons/models.py +++ b/ietf/liaisons/models.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2007-2019, All Rights Reserved +# Copyright The IETF Trust 2007-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - from django.conf import settings from django.urls import reverse as urlreverse from django.db import models diff --git a/ietf/liaisons/tests.py b/ietf/liaisons/tests.py index c5cd80b27..c149abd38 100644 --- a/ietf/liaisons/tests.py +++ b/ietf/liaisons/tests.py @@ -1,14 +1,11 @@ -# Copyright The IETF Trust 2009-2019, All Rights Reserved +# Copyright The IETF Trust 2009-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import datetime import io import os import shutil -import six import debug # pyflakes:ignore @@ -241,7 +238,7 @@ class ManagementCommandTests(TestCase): LiaisonStatementFactory(deadline=datetime.date.today()+datetime.timedelta(days=1)) - out = six.StringIO() + out = io.StringIO() mailbox_before = len(outbox) call_command('check_liaison_deadlines',stdout=out) self.assertEqual(len(outbox), mailbox_before + 1) @@ -251,7 +248,7 @@ class ManagementCommandTests(TestCase): RoleFactory(name_id='liaiman',group__type_id='sdo') - out = six.StringIO() + out = io.StringIO() mailbox_before = len(outbox) call_command('remind_update_sdo_list',stdout=out) self.assertTrue(len(outbox) > mailbox_before) diff --git a/ietf/liaisons/views.py b/ietf/liaisons/views.py index 0b68cf8b6..51e6225c6 100644 --- a/ietf/liaisons/views.py +++ b/ietf/liaisons/views.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2007-2019, All Rights Reserved +# Copyright The IETF Trust 2007-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import json from email.utils import parseaddr diff --git a/ietf/liaisons/widgets.py b/ietf/liaisons/widgets.py index 1b522f701..dde4d168e 100644 --- a/ietf/liaisons/widgets.py +++ b/ietf/liaisons/widgets.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2010-2019, All Rights Reserved +# Copyright The IETF Trust 2010-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - from django.urls import reverse as urlreverse from django.db.models.query import QuerySet from django.forms.widgets import Widget diff --git a/ietf/mailinglists/factories.py b/ietf/mailinglists/factories.py index d713cbbde..1949cafc6 100644 --- a/ietf/mailinglists/factories.py +++ b/ietf/mailinglists/factories.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import factory import random diff --git a/ietf/mailinglists/migrations/0001_initial.py b/ietf/mailinglists/migrations/0001_initial.py index 0ddb625a0..52c04861c 100644 --- a/ietf/mailinglists/migrations/0001_initial.py +++ b/ietf/mailinglists/migrations/0001_initial.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.10 on 2018-02-20 10:52 -from __future__ import absolute_import, print_function, unicode_literals - import django.core.validators from django.db import migrations, models import django.db.models.deletion diff --git a/ietf/mailinglists/migrations/0002_auto_20190703_1344.py b/ietf/mailinglists/migrations/0002_auto_20190703_1344.py index a99b72323..b55c482a2 100644 --- a/ietf/mailinglists/migrations/0002_auto_20190703_1344.py +++ b/ietf/mailinglists/migrations/0002_auto_20190703_1344.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # Generated by Django 1.11.22 on 2019-07-03 13:44 -from __future__ import unicode_literals + import django.core.validators from django.db import migrations, models diff --git a/ietf/mailinglists/models.py b/ietf/mailinglists/models.py index 239583fae..ef066c5ed 100644 --- a/ietf/mailinglists/models.py +++ b/ietf/mailinglists/models.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2016-2019, All Rights Reserved +# Copyright The IETF Trust 2016-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - from django.conf import settings from django.core.validators import validate_email from django.db import models diff --git a/ietf/mailinglists/tests.py b/ietf/mailinglists/tests.py index 34b555d91..543904991 100644 --- a/ietf/mailinglists/tests.py +++ b/ietf/mailinglists/tests.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2009-2019, All Rights Reserved +# Copyright The IETF Trust 2009-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - from pyquery import PyQuery from django.urls import reverse as urlreverse diff --git a/ietf/mailtrigger/forms.py b/ietf/mailtrigger/forms.py index 1d5ef284e..366c429d8 100644 --- a/ietf/mailtrigger/forms.py +++ b/ietf/mailtrigger/forms.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2015-2019, All Rights Reserved +# Copyright The IETF Trust 2015-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals -import six -if six.PY3: - from typing import Dict, List # pyflakes:ignore + +from typing import Dict, List # pyflakes:ignore from django import forms diff --git a/ietf/mailtrigger/migrations/0001_initial.py b/ietf/mailtrigger/migrations/0001_initial.py index ab013788f..37de9a646 100644 --- a/ietf/mailtrigger/migrations/0001_initial.py +++ b/ietf/mailtrigger/migrations/0001_initial.py @@ -1,13 +1,9 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.10 on 2018-02-20 10:52 -from __future__ import absolute_import, print_function, unicode_literals - -import six -if six.PY3: - from typing import List, Tuple # pyflakes:ignore +from typing import List, Tuple # pyflakes:ignore from django.db import migrations, models diff --git a/ietf/mailtrigger/migrations/0002_conflrev_changes.py b/ietf/mailtrigger/migrations/0002_conflrev_changes.py index 3330e196d..858d3a11d 100644 --- a/ietf/mailtrigger/migrations/0002_conflrev_changes.py +++ b/ietf/mailtrigger/migrations/0002_conflrev_changes.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.13 on 2018-05-21 12:07 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations def forward(apps, schema_editor): diff --git a/ietf/mailtrigger/migrations/0003_add_review_notify_ad.py b/ietf/mailtrigger/migrations/0003_add_review_notify_ad.py index b8eebea5e..5abf17538 100644 --- a/ietf/mailtrigger/migrations/0003_add_review_notify_ad.py +++ b/ietf/mailtrigger/migrations/0003_add_review_notify_ad.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.16 on 2018-11-02 11:34 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations def forward(apps, schema_editor): diff --git a/ietf/mailtrigger/migrations/0004_ballot_rfceditornote_changed_postapproval.py b/ietf/mailtrigger/migrations/0004_ballot_rfceditornote_changed_postapproval.py index 411fc68b1..50fb71a51 100644 --- a/ietf/mailtrigger/migrations/0004_ballot_rfceditornote_changed_postapproval.py +++ b/ietf/mailtrigger/migrations/0004_ballot_rfceditornote_changed_postapproval.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.16 on 2018-11-03 00:24 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations def forward(apps, schema_editor): diff --git a/ietf/mailtrigger/migrations/0005_slides_proposed.py b/ietf/mailtrigger/migrations/0005_slides_proposed.py index 8efa3397d..88af91281 100644 --- a/ietf/mailtrigger/migrations/0005_slides_proposed.py +++ b/ietf/mailtrigger/migrations/0005_slides_proposed.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-03-25 06:11 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations def forward(apps, schema_editor): diff --git a/ietf/mailtrigger/migrations/0006_sub_new_wg_00.py b/ietf/mailtrigger/migrations/0006_sub_new_wg_00.py index a380a20a1..8b7936d90 100644 --- a/ietf/mailtrigger/migrations/0006_sub_new_wg_00.py +++ b/ietf/mailtrigger/migrations/0006_sub_new_wg_00.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations def forward(apps, schema_editor): diff --git a/ietf/mailtrigger/migrations/0007_add_review_mailtriggers.py b/ietf/mailtrigger/migrations/0007_add_review_mailtriggers.py index 8d41037d1..91a963d18 100644 --- a/ietf/mailtrigger/migrations/0007_add_review_mailtriggers.py +++ b/ietf/mailtrigger/migrations/0007_add_review_mailtriggers.py @@ -1,7 +1,6 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals from django.db import migrations diff --git a/ietf/mailtrigger/migrations/0008_lengthen_mailtrigger_slug.py b/ietf/mailtrigger/migrations/0008_lengthen_mailtrigger_slug.py index fe5f83dd9..df83bdb5f 100644 --- a/ietf/mailtrigger/migrations/0008_lengthen_mailtrigger_slug.py +++ b/ietf/mailtrigger/migrations/0008_lengthen_mailtrigger_slug.py @@ -1,7 +1,7 @@ -# Copyright The IETF Trust 2015-2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.23 on 2019-08-30 09:02 -from __future__ import unicode_literals + from django.db import migrations, models diff --git a/ietf/mailtrigger/migrations/0009_custom_review_complete_mailtriggers.py b/ietf/mailtrigger/migrations/0009_custom_review_complete_mailtriggers.py index ec0acfdf5..496d4658f 100644 --- a/ietf/mailtrigger/migrations/0009_custom_review_complete_mailtriggers.py +++ b/ietf/mailtrigger/migrations/0009_custom_review_complete_mailtriggers.py @@ -1,7 +1,6 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals from django.db import migrations diff --git a/ietf/mailtrigger/migrations/0010_add_review_reminder_mailtriggers.py b/ietf/mailtrigger/migrations/0010_add_review_reminder_mailtriggers.py index 701870317..384c55e8f 100644 --- a/ietf/mailtrigger/migrations/0010_add_review_reminder_mailtriggers.py +++ b/ietf/mailtrigger/migrations/0010_add_review_reminder_mailtriggers.py @@ -1,7 +1,6 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals from django.db import migrations diff --git a/ietf/mailtrigger/migrations/0011_ietf_last_call.py b/ietf/mailtrigger/migrations/0011_ietf_last_call.py index 15e29ac09..6999d64f9 100644 --- a/ietf/mailtrigger/migrations/0011_ietf_last_call.py +++ b/ietf/mailtrigger/migrations/0011_ietf_last_call.py @@ -1,7 +1,7 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.25 on 2019-10-04 12:12 -from __future__ import unicode_literals + from django.db import migrations diff --git a/ietf/mailtrigger/migrations/0012_dont_last_call_early_reviews.py b/ietf/mailtrigger/migrations/0012_dont_last_call_early_reviews.py index 571917413..5302a0c89 100644 --- a/ietf/mailtrigger/migrations/0012_dont_last_call_early_reviews.py +++ b/ietf/mailtrigger/migrations/0012_dont_last_call_early_reviews.py @@ -1,7 +1,7 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.25 on 2019-10-04 13:12 -from __future__ import unicode_literals + from django.db import migrations diff --git a/ietf/mailtrigger/migrations/0013_add_irsg_ballot_saved.py b/ietf/mailtrigger/migrations/0013_add_irsg_ballot_saved.py index 7fe3cfd65..a7400e48a 100644 --- a/ietf/mailtrigger/migrations/0013_add_irsg_ballot_saved.py +++ b/ietf/mailtrigger/migrations/0013_add_irsg_ballot_saved.py @@ -1,7 +1,7 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.25 on 2019-10-04 13:12 -from __future__ import unicode_literals + from django.db import migrations diff --git a/ietf/mailtrigger/models.py b/ietf/mailtrigger/models.py index 6942ec222..48e7d3f18 100644 --- a/ietf/mailtrigger/models.py +++ b/ietf/mailtrigger/models.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2015-2019, All Rights Reserved +# Copyright The IETF Trust 2015-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - from django.db import models from django.template import Template, Context from django.utils.encoding import python_2_unicode_compatible diff --git a/ietf/mailtrigger/test_utils.py b/ietf/mailtrigger/test_utils.py index 91007ebdf..aef1a2997 100644 --- a/ietf/mailtrigger/test_utils.py +++ b/ietf/mailtrigger/test_utils.py @@ -1,14 +1,11 @@ -# Copyright The IETF Trust 2015-2019, All Rights Reserved +# Copyright The IETF Trust 2015-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - from ietf.doc.factories import WgDraftFactory from ietf.mailtrigger.models import MailTrigger from .utils import gather_address_lists from ietf.utils.test_utils import TestCase -import six class GatherAddressListsTests(TestCase): @@ -19,15 +16,15 @@ class GatherAddressListsTests(TestCase): def test_regular_trigger(self): to, cc = gather_address_lists('doc_pulled_from_rfc_queue', doc=self.doc) # Despite its name, assertCountEqual also compares content, but does not care for ordering - six.assertCountEqual(self, to, ['iana@iana.org', 'rfc-editor@rfc-editor.org']) - six.assertCountEqual(self, cc, ['The IESG ', self.author_address, + self.assertCountEqual(to, ['iana@iana.org', 'rfc-editor@rfc-editor.org']) + self.assertCountEqual(cc, ['The IESG ', self.author_address, 'mars-chairs@ietf.org', 'iesg-secretary@ietf.org']) def test_skipped_recipient(self): to, cc = gather_address_lists('doc_pulled_from_rfc_queue', doc=self.doc, skipped_recipients=['mars-chairs@ietf.org', 'iana@iana.org']) - six.assertCountEqual(self, to, ['rfc-editor@rfc-editor.org']) - six.assertCountEqual(self, cc, ['The IESG ', self.author_address, + self.assertCountEqual(to, ['rfc-editor@rfc-editor.org']) + self.assertCountEqual(cc, ['The IESG ', self.author_address, 'iesg-secretary@ietf.org']) def test_trigger_does_not_exist(self): @@ -39,8 +36,8 @@ class GatherAddressListsTests(TestCase): new_desc = 'Autocreated mailtrigger from doc_pulled_from_rfc_queue' to, cc = gather_address_lists(new_slug, doc=self.doc, desc_if_not_exists=new_desc, create_from_slug_if_not_exists='doc_pulled_from_rfc_queue') - six.assertCountEqual(self, to, ['iana@iana.org', 'rfc-editor@rfc-editor.org']) - six.assertCountEqual(self, cc, ['The IESG ', self.author_address, + self.assertCountEqual(to, ['iana@iana.org', 'rfc-editor@rfc-editor.org']) + self.assertCountEqual(cc, ['The IESG ', self.author_address, 'mars-chairs@ietf.org', 'iesg-secretary@ietf.org']) new_trigger = MailTrigger.objects.get(slug=new_slug) self.assertEqual(new_trigger.desc, new_desc) diff --git a/ietf/mailtrigger/tests.py b/ietf/mailtrigger/tests.py index 91fcc1f19..e7fef7fa9 100644 --- a/ietf/mailtrigger/tests.py +++ b/ietf/mailtrigger/tests.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2015-2019, All Rights Reserved +# Copyright The IETF Trust 2015-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - from django.urls import reverse as urlreverse from ietf.utils.test_utils import TestCase diff --git a/ietf/meeting/admin.py b/ietf/meeting/admin.py index 23d9ba316..f8477ce2f 100644 --- a/ietf/meeting/admin.py +++ b/ietf/meeting/admin.py @@ -2,8 +2,6 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - from django.contrib import admin from ietf.meeting.models import (Meeting, Room, Session, TimeSlot, Constraint, Schedule, diff --git a/ietf/meeting/factories.py b/ietf/meeting/factories.py index 20bbf8530..ef91afcb5 100644 --- a/ietf/meeting/factories.py +++ b/ietf/meeting/factories.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2016-2019, All Rights Reserved +# Copyright The IETF Trust 2016-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import factory import random import datetime diff --git a/ietf/meeting/feeds.py b/ietf/meeting/feeds.py index 66c834ea1..61c010c5e 100644 --- a/ietf/meeting/feeds.py +++ b/ietf/meeting/feeds.py @@ -2,8 +2,6 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import os from django.contrib.syndication.views import Feed diff --git a/ietf/meeting/forms.py b/ietf/meeting/forms.py index 30b6910a8..c0e4475c4 100644 --- a/ietf/meeting/forms.py +++ b/ietf/meeting/forms.py @@ -2,8 +2,6 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import io import os import datetime diff --git a/ietf/meeting/helpers.py b/ietf/meeting/helpers.py index 6f956220f..47522fce3 100644 --- a/ietf/meeting/helpers.py +++ b/ietf/meeting/helpers.py @@ -2,8 +2,6 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import datetime import io import os diff --git a/ietf/meeting/management/commands/update_important_dates.py b/ietf/meeting/management/commands/update_important_dates.py index 8689ba7b3..c1a6ad424 100644 --- a/ietf/meeting/management/commands/update_important_dates.py +++ b/ietf/meeting/management/commands/update_important_dates.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import datetime from django.core.management.base import BaseCommand diff --git a/ietf/meeting/migrations/0001_initial.py b/ietf/meeting/migrations/0001_initial.py index c8f5aa48d..668fd0392 100644 --- a/ietf/meeting/migrations/0001_initial.py +++ b/ietf/meeting/migrations/0001_initial.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.10 on 2018-02-20 10:52 -from __future__ import absolute_import, print_function, unicode_literals - import datetime import django.core.validators from django.db import migrations, models diff --git a/ietf/meeting/migrations/0002_auto_20180225_1207.py b/ietf/meeting/migrations/0002_auto_20180225_1207.py index 55709244c..523dd66bc 100644 --- a/ietf/meeting/migrations/0002_auto_20180225_1207.py +++ b/ietf/meeting/migrations/0002_auto_20180225_1207.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.10 on 2018-02-25 12:07 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations, models diff --git a/ietf/meeting/migrations/0003_rename_modified_fields.py b/ietf/meeting/migrations/0003_rename_modified_fields.py index c63aa49a8..4b1dbbe85 100644 --- a/ietf/meeting/migrations/0003_rename_modified_fields.py +++ b/ietf/meeting/migrations/0003_rename_modified_fields.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.10 on 2018-03-02 14:33 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations, models diff --git a/ietf/meeting/migrations/0004_meeting_attendees.py b/ietf/meeting/migrations/0004_meeting_attendees.py index 502b0b126..a92945924 100644 --- a/ietf/meeting/migrations/0004_meeting_attendees.py +++ b/ietf/meeting/migrations/0004_meeting_attendees.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.11 on 2018-03-20 09:17 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations, models diff --git a/ietf/meeting/migrations/0005_backfill_old_meetings.py b/ietf/meeting/migrations/0005_backfill_old_meetings.py index af245617c..928ed4afd 100644 --- a/ietf/meeting/migrations/0005_backfill_old_meetings.py +++ b/ietf/meeting/migrations/0005_backfill_old_meetings.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations diff --git a/ietf/meeting/migrations/0006_backfill_attendees.py b/ietf/meeting/migrations/0006_backfill_attendees.py index 2e4103c16..212260d72 100644 --- a/ietf/meeting/migrations/0006_backfill_attendees.py +++ b/ietf/meeting/migrations/0006_backfill_attendees.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations diff --git a/ietf/meeting/migrations/0007_auto_20180716_1337.py b/ietf/meeting/migrations/0007_auto_20180716_1337.py index 3079d4cf6..a20d9dba9 100644 --- a/ietf/meeting/migrations/0007_auto_20180716_1337.py +++ b/ietf/meeting/migrations/0007_auto_20180716_1337.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.14 on 2018-07-16 13:37 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations, models diff --git a/ietf/meeting/migrations/0008_rename_meeting_agenda_note.py b/ietf/meeting/migrations/0008_rename_meeting_agenda_note.py index 528bb2afd..884940c22 100644 --- a/ietf/meeting/migrations/0008_rename_meeting_agenda_note.py +++ b/ietf/meeting/migrations/0008_rename_meeting_agenda_note.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.15 on 2018-10-09 13:09 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations diff --git a/ietf/meeting/migrations/0009_add_agenda_info_note.py b/ietf/meeting/migrations/0009_add_agenda_info_note.py index 0f527ecaf..8fc4fdb46 100644 --- a/ietf/meeting/migrations/0009_add_agenda_info_note.py +++ b/ietf/meeting/migrations/0009_add_agenda_info_note.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.16 on 2018-10-09 14:07 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations, models diff --git a/ietf/meeting/migrations/0010_set_ietf_103_agenda_info_note.py b/ietf/meeting/migrations/0010_set_ietf_103_agenda_info_note.py index 92bbd6a24..bb3148f78 100644 --- a/ietf/meeting/migrations/0010_set_ietf_103_agenda_info_note.py +++ b/ietf/meeting/migrations/0010_set_ietf_103_agenda_info_note.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.16 on 2018-10-09 14:23 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations def forward(apps,schema_editor): diff --git a/ietf/meeting/migrations/0011_auto_20190114_0550.py b/ietf/meeting/migrations/0011_auto_20190114_0550.py index 9e775980a..50b8b71ec 100644 --- a/ietf/meeting/migrations/0011_auto_20190114_0550.py +++ b/ietf/meeting/migrations/0011_auto_20190114_0550.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.18 on 2019-01-14 05:50 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations, models diff --git a/ietf/meeting/migrations/0012_add_slide_submissions.py b/ietf/meeting/migrations/0012_add_slide_submissions.py index 617809de0..e1a798d59 100644 --- a/ietf/meeting/migrations/0012_add_slide_submissions.py +++ b/ietf/meeting/migrations/0012_add_slide_submissions.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-03-23 07:41 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations, models import django.db.models.deletion import ietf.utils.models diff --git a/ietf/meeting/migrations/0013_make_separate_break_sessobj.py b/ietf/meeting/migrations/0013_make_separate_break_sessobj.py index 359f75ce5..ceea5179d 100644 --- a/ietf/meeting/migrations/0013_make_separate_break_sessobj.py +++ b/ietf/meeting/migrations/0013_make_separate_break_sessobj.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-03-23 06:11 -from __future__ import absolute_import, print_function, unicode_literals - import datetime from django.db import migrations diff --git a/ietf/meeting/migrations/0014_auto_20190426_0305.py b/ietf/meeting/migrations/0014_auto_20190426_0305.py index d3ff2084f..8f4b6b0b3 100644 --- a/ietf/meeting/migrations/0014_auto_20190426_0305.py +++ b/ietf/meeting/migrations/0014_auto_20190426_0305.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-04-26 03:05 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations, models diff --git a/ietf/meeting/migrations/0015_sessionpresentation_document2_fk.py b/ietf/meeting/migrations/0015_sessionpresentation_document2_fk.py index 8354d546e..257a5060c 100644 --- a/ietf/meeting/migrations/0015_sessionpresentation_document2_fk.py +++ b/ietf/meeting/migrations/0015_sessionpresentation_document2_fk.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-05-08 11:58 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations import django.db.models.deletion import ietf.utils.models diff --git a/ietf/meeting/migrations/0016_remove_sessionpresentation_document.py b/ietf/meeting/migrations/0016_remove_sessionpresentation_document.py index 724bfcfc0..e93baaa33 100644 --- a/ietf/meeting/migrations/0016_remove_sessionpresentation_document.py +++ b/ietf/meeting/migrations/0016_remove_sessionpresentation_document.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-05-21 03:57 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations diff --git a/ietf/meeting/migrations/0017_rename_field_document2.py b/ietf/meeting/migrations/0017_rename_field_document2.py index 5095a33ff..5965d8d20 100644 --- a/ietf/meeting/migrations/0017_rename_field_document2.py +++ b/ietf/meeting/migrations/0017_rename_field_document2.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-05-21 05:31 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations diff --git a/ietf/meeting/migrations/0018_document_primary_key_cleanup.py b/ietf/meeting/migrations/0018_document_primary_key_cleanup.py index 786530908..749caa443 100644 --- a/ietf/meeting/migrations/0018_document_primary_key_cleanup.py +++ b/ietf/meeting/migrations/0018_document_primary_key_cleanup.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-06-10 03:47 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations import django.db.models.deletion import ietf.utils.models diff --git a/ietf/meeting/migrations/0019_slidesubmission_time.py b/ietf/meeting/migrations/0019_slidesubmission_time.py index 0cdfd1fea..3dc0e2c52 100644 --- a/ietf/meeting/migrations/0019_slidesubmission_time.py +++ b/ietf/meeting/migrations/0019_slidesubmission_time.py @@ -1,7 +1,7 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.22 on 2019-07-21 14:03 -from __future__ import unicode_literals + from django.db import migrations, models diff --git a/ietf/meeting/migrations/0020_remove_future_break_sessions.py b/ietf/meeting/migrations/0020_remove_future_break_sessions.py index 9ea104043..5d2569b1c 100644 --- a/ietf/meeting/migrations/0020_remove_future_break_sessions.py +++ b/ietf/meeting/migrations/0020_remove_future_break_sessions.py @@ -1,8 +1,7 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.22 on 2019-07-22 14:56 -from __future__ import unicode_literals import datetime from django.db import migrations diff --git a/ietf/meeting/migrations/0021_rename_meeting_agenda_to_schedule.py b/ietf/meeting/migrations/0021_rename_meeting_agenda_to_schedule.py index 63bc646e7..5399968cb 100644 --- a/ietf/meeting/migrations/0021_rename_meeting_agenda_to_schedule.py +++ b/ietf/meeting/migrations/0021_rename_meeting_agenda_to_schedule.py @@ -1,7 +1,7 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.26 on 2019-11-18 04:01 -from __future__ import unicode_literals + from django.db import migrations import django.db.models.deletion diff --git a/ietf/meeting/migrations/0022_schedulingevent.py b/ietf/meeting/migrations/0022_schedulingevent.py index 4ea0091ac..22602a06b 100644 --- a/ietf/meeting/migrations/0022_schedulingevent.py +++ b/ietf/meeting/migrations/0022_schedulingevent.py @@ -1,7 +1,7 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.26 on 2019-11-19 02:41 -from __future__ import unicode_literals + import datetime from django.db import migrations, models diff --git a/ietf/meeting/migrations/0023_create_scheduling_events.py b/ietf/meeting/migrations/0023_create_scheduling_events.py index d1d07d149..5adcdd59e 100644 --- a/ietf/meeting/migrations/0023_create_scheduling_events.py +++ b/ietf/meeting/migrations/0023_create_scheduling_events.py @@ -1,7 +1,7 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.26 on 2019-11-19 02:42 -from __future__ import unicode_literals + from django.db import migrations diff --git a/ietf/meeting/migrations/0024_auto_20191204_1731.py b/ietf/meeting/migrations/0024_auto_20191204_1731.py index 7f7454137..828611bb9 100644 --- a/ietf/meeting/migrations/0024_auto_20191204_1731.py +++ b/ietf/meeting/migrations/0024_auto_20191204_1731.py @@ -1,7 +1,7 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.26 on 2019-12-04 17:31 -from __future__ import unicode_literals + from django.db import migrations diff --git a/ietf/meeting/migrations/0025_rename_type_session_to_regular.py b/ietf/meeting/migrations/0025_rename_type_session_to_regular.py index 51d747a0d..1eeac57b5 100644 --- a/ietf/meeting/migrations/0025_rename_type_session_to_regular.py +++ b/ietf/meeting/migrations/0025_rename_type_session_to_regular.py @@ -1,7 +1,7 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.26 on 2019-12-06 11:13 -from __future__ import unicode_literals + from django.db import migrations diff --git a/ietf/meeting/models.py b/ietf/meeting/models.py index f3936eceb..0ee39b9a7 100644 --- a/ietf/meeting/models.py +++ b/ietf/meeting/models.py @@ -1,17 +1,18 @@ # Copyright The IETF Trust 2007-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals + # old meeting models can be found in ../proceedings/models.py -import pytz import datetime import io -from six.moves.urllib.parse import urljoin import os +import pytz import re import string +from urllib.parse import urljoin + import debug # pyflakes:ignore from django.core.validators import MinValueValidator diff --git a/ietf/meeting/templatetags/agenda_custom_tags.py b/ietf/meeting/templatetags/agenda_custom_tags.py index a1501ab64..b04227f23 100644 --- a/ietf/meeting/templatetags/agenda_custom_tags.py +++ b/ietf/meeting/templatetags/agenda_custom_tags.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2013-2019, All Rights Reserved +# Copyright The IETF Trust 2013-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - from django import template register = template.Library() diff --git a/ietf/meeting/test_data.py b/ietf/meeting/test_data.py index 3c72a4bc1..5ce91cd86 100644 --- a/ietf/meeting/test_data.py +++ b/ietf/meeting/test_data.py @@ -2,8 +2,6 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import datetime from django.utils.text import slugify diff --git a/ietf/meeting/tests_api.py b/ietf/meeting/tests_api.py index 5ffc16d77..d176d3749 100644 --- a/ietf/meeting/tests_api.py +++ b/ietf/meeting/tests_api.py @@ -2,11 +2,9 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import datetime -from six.moves.urllib.parse import urlsplit +from urllib.parse import urlsplit from django.urls import reverse as urlreverse diff --git a/ietf/meeting/tests_js.py b/ietf/meeting/tests_js.py index bf756ddcd..de96f1424 100644 --- a/ietf/meeting/tests_js.py +++ b/ietf/meeting/tests_js.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2014-2019, All Rights Reserved +# Copyright The IETF Trust 2014-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import sys import time from pyquery import PyQuery diff --git a/ietf/meeting/tests_views.py b/ietf/meeting/tests_views.py index ef6e90f6c..9a34bf1e8 100644 --- a/ietf/meeting/tests_views.py +++ b/ietf/meeting/tests_views.py @@ -2,8 +2,6 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import datetime import io import json @@ -11,14 +9,13 @@ import os import random import re import shutil -import six from unittest import skipIf from mock import patch from pyquery import PyQuery from io import StringIO, BytesIO from bs4 import BeautifulSoup -from six.moves.urllib.parse import urlparse +from urllib.parse import urlparse from django.urls import reverse as urlreverse from django.conf import settings @@ -449,12 +446,12 @@ class MeetingTests(TestCase): q = PyQuery(response.content) self.assertEqual(1,len(q("#id_attendees tbody tr"))) - @patch('six.moves.urllib.request.urlopen') + @patch('urllib.request.urlopen') def test_proceedings_overview(self, mock_urlopen): '''Test proceedings IETF Overview page. Note: old meetings aren't supported so need to add a new meeting then test. ''' - mock_urlopen.return_value = six.BytesIO(b'[{"LastName":"Smith","FirstName":"John","Company":"ABC","Country":"US"}]') + mock_urlopen.return_value = BytesIO(b'[{"LastName":"Smith","FirstName":"John","Company":"ABC","Country":"US"}]') make_meeting_test_data() meeting = MeetingFactory(type_id='ietf', date=datetime.date(2016,7,14), number="96") finalize(meeting) @@ -2111,7 +2108,7 @@ class IphoneAppJsonTests(TestCase): self.assertTrue(msessions.filter(group__acronym=s['group']['acronym']).exists()) class FinalizeProceedingsTests(TestCase): - @patch('six.moves.urllib.request.urlopen') + @patch('urllib.request.urlopen') def test_finalize_proceedings(self, mock_urlopen): mock_urlopen.return_value = BytesIO(b'[{"LastName":"Smith","FirstName":"John","Company":"ABC","Country":"US"}]') make_meeting_test_data() @@ -2173,7 +2170,7 @@ class MaterialsTests(TestCase): r = self.client.get(url) self.assertEqual(r.status_code, 200) q = PyQuery(r.content) - self.assertIn('Upload', six.text_type(q("title"))) + self.assertIn('Upload', str(q("title"))) self.assertFalse(session.sessionpresentation_set.exists()) test_file = StringIO('%PDF-1.4\n%âãÏÓ\nthis is some text for a test') test_file.name = "not_really.pdf" @@ -2184,7 +2181,7 @@ class MaterialsTests(TestCase): r = self.client.get(url) self.assertEqual(r.status_code, 200) q = PyQuery(r.content) - self.assertIn('Revise', six.text_type(q("title"))) + self.assertIn('Revise', str(q("title"))) test_file = StringIO('%PDF-1.4\n%âãÏÓ\nthis is some different text for a test') test_file.name = "also_not_really.pdf" r = self.client.post(url,dict(file=test_file)) @@ -2208,7 +2205,7 @@ class MaterialsTests(TestCase): r = self.client.get(url) self.assertEqual(r.status_code, 200) q = PyQuery(r.content) - self.assertIn('Upload', six.text_type(q("title"))) + self.assertIn('Upload', str(q("title"))) self.assertFalse(session.sessionpresentation_set.exists()) test_file = StringIO('%PDF-1.4\n%âãÏÓ\nthis is some text for a test') test_file.name = "not_really.pdf" @@ -2226,7 +2223,7 @@ class MaterialsTests(TestCase): r = self.client.get(url) self.assertEqual(r.status_code, 200) q = PyQuery(r.content) - self.assertIn('Upload', six.text_type(q("title"))) + self.assertIn('Upload', str(q("title"))) def test_upload_minutes_agenda(self): @@ -2241,7 +2238,7 @@ class MaterialsTests(TestCase): r = self.client.get(url) self.assertEqual(r.status_code, 200) q = PyQuery(r.content) - self.assertIn('Upload', six.text_type(q("Title"))) + self.assertIn('Upload', str(q("Title"))) self.assertFalse(session.sessionpresentation_set.exists()) self.assertFalse(q('form input[type="checkbox"]')) @@ -2296,7 +2293,7 @@ class MaterialsTests(TestCase): r = self.client.get(url) self.assertEqual(r.status_code, 200) q = PyQuery(r.content) - self.assertIn('Revise', six.text_type(q("Title"))) + self.assertIn('Revise', str(q("Title"))) test_file = BytesIO(b'this is some different text for a test') test_file.name = "also_some.txt" r = self.client.post(url,dict(file=test_file,apply_to_all=True)) @@ -2330,7 +2327,7 @@ class MaterialsTests(TestCase): r = self.client.get(url) self.assertEqual(r.status_code, 200) q = PyQuery(r.content) - self.assertIn('Upload', six.text_type(q("Title"))) + self.assertIn('Upload', str(q("Title"))) self.assertFalse(session.sessionpresentation_set.exists()) self.assertFalse(q('form input[type="checkbox"]')) @@ -2351,7 +2348,7 @@ class MaterialsTests(TestCase): r = self.client.get(url) self.assertEqual(r.status_code, 200) q = PyQuery(r.content) - self.assertIn('Upload', six.text_type(q("title"))) + self.assertIn('Upload', str(q("title"))) self.assertFalse(session.sessionpresentation_set.filter(document__type_id=doctype)) test_file = BytesIO(b'this is some text for a test') test_file.name = "not_really.txt" @@ -2374,7 +2371,7 @@ class MaterialsTests(TestCase): r = self.client.get(url) self.assertEqual(r.status_code, 200) q = PyQuery(r.content) - self.assertIn('Upload', six.text_type(q("title"))) + self.assertIn('Upload', str(q("title"))) self.assertFalse(session1.sessionpresentation_set.filter(document__type_id='slides')) test_file = BytesIO(b'this is not really a slide') test_file.name = 'not_really.txt' @@ -2402,7 +2399,7 @@ class MaterialsTests(TestCase): r = self.client.get(url) self.assertTrue(r.status_code, 200) q = PyQuery(r.content) - self.assertIn('Revise', six.text_type(q("title"))) + self.assertIn('Revise', str(q("title"))) test_file = BytesIO(b'new content for the second slide deck') test_file.name = 'doesnotmatter.txt' r = self.client.post(url,dict(file=test_file,title='rename the presentation',apply_to_all=False)) diff --git a/ietf/meeting/utils.py b/ietf/meeting/utils.py index 4329919ed..84483fec1 100644 --- a/ietf/meeting/utils.py +++ b/ietf/meeting/utils.py @@ -2,12 +2,10 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import datetime import requests -from six.moves.urllib.error import HTTPError +from urllib.error import HTTPError from django.conf import settings from django.template.loader import render_to_string from django.db.models.expressions import Subquery, OuterRef diff --git a/ietf/meeting/views.py b/ietf/meeting/views.py index d5bfae822..90e387661 100644 --- a/ietf/meeting/views.py +++ b/ietf/meeting/views.py @@ -2,8 +2,6 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import csv import datetime import glob @@ -13,14 +11,13 @@ import json import os import pytz import re -import six import tarfile import markdown2 from calendar import timegm from collections import OrderedDict, Counter, deque -from six.moves.urllib.parse import unquote +from urllib.parse import unquote from tempfile import mkstemp from wsgiref.handlers import format_date_time @@ -556,7 +553,7 @@ def agenda_csv(schedule, filtered_assignments): headings = ["Date", "Start", "End", "Session", "Room", "Area", "Acronym", "Type", "Description", "Session ID", "Agenda", "Slides"] def write_row(row): - encoded_row = [v.encode('utf-8') if isinstance(v, six.text_type) else v for v in row] + encoded_row = [v.encode('utf-8') if isinstance(v, str) else v for v in row] while len(encoded_row) < len(headings): encoded_row.append(None) # produce empty entries at the end as necessary diff --git a/ietf/message/management/commands/send_messages.py b/ietf/message/management/commands/send_messages.py index 3eea53034..4593eab57 100644 --- a/ietf/message/management/commands/send_messages.py +++ b/ietf/message/management/commands/send_messages.py @@ -1,8 +1,6 @@ # Copyright The IETF Trust 2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import email import smtplib diff --git a/ietf/message/management/commands/show_messages.py b/ietf/message/management/commands/show_messages.py index 9581eedb1..b232da481 100644 --- a/ietf/message/management/commands/show_messages.py +++ b/ietf/message/management/commands/show_messages.py @@ -1,7 +1,6 @@ # Copyright The IETF Trust 2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals import email import datetime diff --git a/ietf/message/migrations/0001_initial.py b/ietf/message/migrations/0001_initial.py index 3fc073cbd..c9e850dfb 100644 --- a/ietf/message/migrations/0001_initial.py +++ b/ietf/message/migrations/0001_initial.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.10 on 2018-02-20 10:52 -from __future__ import absolute_import, print_function, unicode_literals - import datetime from django.db import migrations, models import django.db.models.deletion diff --git a/ietf/message/migrations/0002_add_message_docs2_m2m.py b/ietf/message/migrations/0002_add_message_docs2_m2m.py index 1402fa8d8..c6a138ba6 100644 --- a/ietf/message/migrations/0002_add_message_docs2_m2m.py +++ b/ietf/message/migrations/0002_add_message_docs2_m2m.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-05-21 14:23 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations, models import django.db.models.deletion import ietf.utils.models diff --git a/ietf/message/migrations/0003_set_document_m2m_keys.py b/ietf/message/migrations/0003_set_document_m2m_keys.py index 493adc2ee..6429af443 100644 --- a/ietf/message/migrations/0003_set_document_m2m_keys.py +++ b/ietf/message/migrations/0003_set_document_m2m_keys.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-05-21 14:27 -from __future__ import absolute_import, print_function, unicode_literals - import sys from tqdm import tqdm diff --git a/ietf/message/migrations/0004_1_del_docs_m2m_table.py b/ietf/message/migrations/0004_1_del_docs_m2m_table.py index 670609fc7..7b116789d 100644 --- a/ietf/message/migrations/0004_1_del_docs_m2m_table.py +++ b/ietf/message/migrations/0004_1_del_docs_m2m_table.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-05-22 08:01 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations, models diff --git a/ietf/message/migrations/0004_2_add_docs_m2m_table.py b/ietf/message/migrations/0004_2_add_docs_m2m_table.py index 9da02c6e6..4f24a26fe 100644 --- a/ietf/message/migrations/0004_2_add_docs_m2m_table.py +++ b/ietf/message/migrations/0004_2_add_docs_m2m_table.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-05-22 08:01 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations, models diff --git a/ietf/message/migrations/0005_copy_docs_m2m_table.py b/ietf/message/migrations/0005_copy_docs_m2m_table.py index f85def627..8f7c18588 100644 --- a/ietf/message/migrations/0005_copy_docs_m2m_table.py +++ b/ietf/message/migrations/0005_copy_docs_m2m_table.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-05-27 05:56 -from __future__ import absolute_import, print_function, unicode_literals - import sys, time from django.db import migrations diff --git a/ietf/message/migrations/0006_remove_docs2_m2m.py b/ietf/message/migrations/0006_remove_docs2_m2m.py index 58743da07..97e3ef5f0 100644 --- a/ietf/message/migrations/0006_remove_docs2_m2m.py +++ b/ietf/message/migrations/0006_remove_docs2_m2m.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-05-30 03:32 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations diff --git a/ietf/message/migrations/0007_message_sent.py b/ietf/message/migrations/0007_message_sent.py index 611c3843f..9ab1a4041 100644 --- a/ietf/message/migrations/0007_message_sent.py +++ b/ietf/message/migrations/0007_message_sent.py @@ -1,7 +1,7 @@ # Copyright The IETF Trust 2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.27 on 2020-02-22 09:29 -from __future__ import unicode_literals + from django.db import migrations, models diff --git a/ietf/message/migrations/0008_set_message_sent.py b/ietf/message/migrations/0008_set_message_sent.py index 5d4bb805a..281099305 100644 --- a/ietf/message/migrations/0008_set_message_sent.py +++ b/ietf/message/migrations/0008_set_message_sent.py @@ -3,8 +3,6 @@ # Generated by Django 1.11.20 on 2019-05-21 14:27 -from __future__ import absolute_import, print_function, unicode_literals - from tqdm import tqdm from django.db import migrations diff --git a/ietf/message/migrations/0009_fix_address_lists.py b/ietf/message/migrations/0009_fix_address_lists.py index 736225da8..e14b6511c 100644 --- a/ietf/message/migrations/0009_fix_address_lists.py +++ b/ietf/message/migrations/0009_fix_address_lists.py @@ -3,8 +3,6 @@ # Generated by Django 1.11.20 on 2019-05-21 14:27 -from __future__ import absolute_import, print_function, unicode_literals - from tqdm import tqdm from django.db import migrations diff --git a/ietf/message/migrations/0010_fix_content_type.py b/ietf/message/migrations/0010_fix_content_type.py index e2b6c7152..074114290 100644 --- a/ietf/message/migrations/0010_fix_content_type.py +++ b/ietf/message/migrations/0010_fix_content_type.py @@ -3,8 +3,6 @@ # Generated by Django 1.11.20 on 2019-05-21 14:27 -from __future__ import absolute_import, print_function, unicode_literals - from tqdm import tqdm from django.db import migrations diff --git a/ietf/message/models.py b/ietf/message/models.py index d66564228..3c8bbd0c9 100644 --- a/ietf/message/models.py +++ b/ietf/message/models.py @@ -2,8 +2,6 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import datetime import email.utils diff --git a/ietf/message/tests.py b/ietf/message/tests.py index a499344c7..c610cdbb1 100644 --- a/ietf/message/tests.py +++ b/ietf/message/tests.py @@ -2,8 +2,6 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import datetime from django.urls import reverse as urlreverse diff --git a/ietf/message/utils.py b/ietf/message/utils.py index 4ee1b0033..1acda232a 100644 --- a/ietf/message/utils.py +++ b/ietf/message/utils.py @@ -2,8 +2,6 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import re, datetime, email from django.utils.encoding import force_str diff --git a/ietf/middleware.py b/ietf/middleware.py index b0759894e..3e1579561 100644 --- a/ietf/middleware.py +++ b/ietf/middleware.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2007-2019, All Rights Reserved +# Copyright The IETF Trust 2007-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - from django.db import connection from django.db.utils import OperationalError from django.shortcuts import render diff --git a/ietf/name/management/commands/generate_name_fixture.py b/ietf/name/management/commands/generate_name_fixture.py index 5409286e4..4db04bb50 100644 --- a/ietf/name/management/commands/generate_name_fixture.py +++ b/ietf/name/management/commands/generate_name_fixture.py @@ -1,4 +1,4 @@ -# Copyright The IETF Trust 2011-2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved #!/usr/bin/python # simple script for exporting name related base data for the tests @@ -6,9 +6,8 @@ import inspect import io import os, sys -import six -if six.PY3: - from typing import Any, List # pyflakes:ignore + +from typing import Any, List # pyflakes:ignore from django.conf import settings diff --git a/ietf/name/migrations/0001_initial.py b/ietf/name/migrations/0001_initial.py index 6dafea236..075054504 100644 --- a/ietf/name/migrations/0001_initial.py +++ b/ietf/name/migrations/0001_initial.py @@ -1,13 +1,9 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.10 on 2018-02-20 10:52 -from __future__ import absolute_import, print_function, unicode_literals - -import six -if six.PY3: - from typing import List, Tuple # pyflakes:ignore +from typing import List, Tuple # pyflakes:ignore from django.db import migrations, models import django.db.models.deletion diff --git a/ietf/name/migrations/0002_agendatypename.py b/ietf/name/migrations/0002_agendatypename.py index cf9f42950..f916f60da 100644 --- a/ietf/name/migrations/0002_agendatypename.py +++ b/ietf/name/migrations/0002_agendatypename.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.13 on 2018-07-10 13:47 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations, models class Migration(migrations.Migration): diff --git a/ietf/name/migrations/0003_agendatypename_data.py b/ietf/name/migrations/0003_agendatypename_data.py index 48d72129d..4db2056d7 100644 --- a/ietf/name/migrations/0003_agendatypename_data.py +++ b/ietf/name/migrations/0003_agendatypename_data.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.13 on 2018-07-10 13:47 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations agenda_type_names = ( diff --git a/ietf/name/migrations/0004_add_prefix_to_doctypenames.py b/ietf/name/migrations/0004_add_prefix_to_doctypenames.py index 038b7c2a5..05c103319 100644 --- a/ietf/name/migrations/0004_add_prefix_to_doctypenames.py +++ b/ietf/name/migrations/0004_add_prefix_to_doctypenames.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.16 on 2018-10-19 11:34 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations def forward(apps, schema_editor): diff --git a/ietf/name/migrations/0005_reviewassignmentstatename.py b/ietf/name/migrations/0005_reviewassignmentstatename.py index c8660920d..d75f9b774 100644 --- a/ietf/name/migrations/0005_reviewassignmentstatename.py +++ b/ietf/name/migrations/0005_reviewassignmentstatename.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.18 on 2019-01-04 13:59 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations, models diff --git a/ietf/name/migrations/0006_adjust_statenames.py b/ietf/name/migrations/0006_adjust_statenames.py index 116e25f3c..6c6092407 100644 --- a/ietf/name/migrations/0006_adjust_statenames.py +++ b/ietf/name/migrations/0006_adjust_statenames.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.18 on 2019-01-04 14:02 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations def forward(apps, schema_editor): diff --git a/ietf/name/migrations/0007_fix_m2m_slug_id_length.py b/ietf/name/migrations/0007_fix_m2m_slug_id_length.py index 4449680f9..578415bc5 100644 --- a/ietf/name/migrations/0007_fix_m2m_slug_id_length.py +++ b/ietf/name/migrations/0007_fix_m2m_slug_id_length.py @@ -1,6 +1,6 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import unicode_literals + from django.db import migrations diff --git a/ietf/name/migrations/0008_reviewerqueuepolicyname.py b/ietf/name/migrations/0008_reviewerqueuepolicyname.py index 7e9804245..caee6384b 100644 --- a/ietf/name/migrations/0008_reviewerqueuepolicyname.py +++ b/ietf/name/migrations/0008_reviewerqueuepolicyname.py @@ -1,7 +1,7 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.23 on 2019-11-18 08:35 -from __future__ import unicode_literals + from django.db import migrations, models diff --git a/ietf/name/migrations/0009_add_verified_errata_to_doctagname.py b/ietf/name/migrations/0009_add_verified_errata_to_doctagname.py index ba64796a8..94c1134d6 100644 --- a/ietf/name/migrations/0009_add_verified_errata_to_doctagname.py +++ b/ietf/name/migrations/0009_add_verified_errata_to_doctagname.py @@ -1,7 +1,6 @@ # Copyright The IETF Trust 2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals from django.db import migrations diff --git a/ietf/name/models.py b/ietf/name/models.py index 34a2c6eb8..a9ec1733d 100644 --- a/ietf/name/models.py +++ b/ietf/name/models.py @@ -2,8 +2,6 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - from django.db import models from django.utils.encoding import python_2_unicode_compatible diff --git a/ietf/nomcom/admin.py b/ietf/nomcom/admin.py index 10cea0be4..252a5f845 100644 --- a/ietf/nomcom/admin.py +++ b/ietf/nomcom/admin.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2012-2019, All Rights Reserved +# Copyright The IETF Trust 2012-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - from django.contrib import admin from ietf.nomcom.models import ( ReminderDates, NomCom, Nomination, Nominee, NomineePosition, diff --git a/ietf/nomcom/decorators.py b/ietf/nomcom/decorators.py index bbaebd0cd..a002f7c7e 100644 --- a/ietf/nomcom/decorators.py +++ b/ietf/nomcom/decorators.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2012-2019, All Rights Reserved +# Copyright The IETF Trust 2012-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import functools from django.urls import reverse diff --git a/ietf/nomcom/factories.py b/ietf/nomcom/factories.py index 95b68c771..f8954d491 100644 --- a/ietf/nomcom/factories.py +++ b/ietf/nomcom/factories.py @@ -2,8 +2,6 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import factory import random diff --git a/ietf/nomcom/fields.py b/ietf/nomcom/fields.py index be8c5ba6c..e64fce089 100644 --- a/ietf/nomcom/fields.py +++ b/ietf/nomcom/fields.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2012-2019, All Rights Reserved +# Copyright The IETF Trust 2012-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - from django.conf import settings from django.db import models from django.utils.encoding import smart_str diff --git a/ietf/nomcom/forms.py b/ietf/nomcom/forms.py index fe8942bbc..52780d271 100644 --- a/ietf/nomcom/forms.py +++ b/ietf/nomcom/forms.py @@ -2,11 +2,7 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - -import six -if six.PY3: - from typing import List, Tuple # pyflakes:ignore +from typing import List, Tuple # pyflakes:ignore from django.conf import settings from django import forms @@ -42,12 +38,12 @@ class PositionNomineeField(forms.ChoiceField): results = [] for position in positions: accepted_nominees = [np.nominee for np in NomineePosition.objects.filter(position=position,state='accepted').exclude(nominee__duplicated__isnull=False)] - nominees = [('%s_%s' % (position.id, i.id), six.text_type(i)) for i in accepted_nominees] + nominees = [('%s_%s' % (position.id, i.id), str(i)) for i in accepted_nominees] if nominees: results.append((position.name+" (Accepted)", nominees)) for position in positions: other_nominees = [np.nominee for np in NomineePosition.objects.filter(position=position).exclude(state='accepted').exclude(nominee__duplicated__isnull=False)] - nominees = [('%s_%s' % (position.id, i.id), six.text_type(i)) for i in other_nominees] + nominees = [('%s_%s' % (position.id, i.id), str(i)) for i in other_nominees] if nominees: results.append((position.name+" (Declined or Pending)", nominees)) kwargs['choices'] = results diff --git a/ietf/nomcom/management/commands/feedback_email.py b/ietf/nomcom/management/commands/feedback_email.py index 7774a6c08..fef340275 100644 --- a/ietf/nomcom/management/commands/feedback_email.py +++ b/ietf/nomcom/management/commands/feedback_email.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2013-2019, All Rights Reserved +# Copyright The IETF Trust 2013-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import io import sys diff --git a/ietf/nomcom/management/commands/make_dummy_nomcom.py b/ietf/nomcom/management/commands/make_dummy_nomcom.py index 2e34aba6a..417182b79 100644 --- a/ietf/nomcom/management/commands/make_dummy_nomcom.py +++ b/ietf/nomcom/management/commands/make_dummy_nomcom.py @@ -2,8 +2,6 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import socket from django.core.management.base import BaseCommand diff --git a/ietf/nomcom/management/commands/send_reminders.py b/ietf/nomcom/management/commands/send_reminders.py index a4a442de8..3dce0a361 100644 --- a/ietf/nomcom/management/commands/send_reminders.py +++ b/ietf/nomcom/management/commands/send_reminders.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2013-2019, All Rights Reserved +# Copyright The IETF Trust 2013-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import datetime import syslog diff --git a/ietf/nomcom/migrations/0001_initial.py b/ietf/nomcom/migrations/0001_initial.py index a2c41ff44..9ef8e5476 100644 --- a/ietf/nomcom/migrations/0001_initial.py +++ b/ietf/nomcom/migrations/0001_initial.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.10 on 2018-02-20 10:52 -from __future__ import absolute_import, print_function, unicode_literals - from django.conf import settings from django.db import migrations, models import django.db.models.deletion diff --git a/ietf/nomcom/migrations/0002_auto_20180918_0550.py b/ietf/nomcom/migrations/0002_auto_20180918_0550.py index 9d32121c9..44fd8d4df 100644 --- a/ietf/nomcom/migrations/0002_auto_20180918_0550.py +++ b/ietf/nomcom/migrations/0002_auto_20180918_0550.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.15 on 2018-09-18 05:50 -from __future__ import absolute_import, print_function, unicode_literals - from django.conf import settings from django.db import migrations import django.db.models.deletion diff --git a/ietf/nomcom/migrations/0003_nomcom_show_accepted_nominees.py b/ietf/nomcom/migrations/0003_nomcom_show_accepted_nominees.py index df2b37105..cc7d73283 100644 --- a/ietf/nomcom/migrations/0003_nomcom_show_accepted_nominees.py +++ b/ietf/nomcom/migrations/0003_nomcom_show_accepted_nominees.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.15 on 2018-09-26 11:10 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations, models diff --git a/ietf/nomcom/migrations/0004_set_show_accepted_nominees_false_on_existing_nomcoms.py b/ietf/nomcom/migrations/0004_set_show_accepted_nominees_false_on_existing_nomcoms.py index d3ab2f478..7f4746a27 100644 --- a/ietf/nomcom/migrations/0004_set_show_accepted_nominees_false_on_existing_nomcoms.py +++ b/ietf/nomcom/migrations/0004_set_show_accepted_nominees_false_on_existing_nomcoms.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.15 on 2018-09-26 11:12 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations def forward(apps, schema_editor): diff --git a/ietf/nomcom/migrations/0005_auto_20181008_0602.py b/ietf/nomcom/migrations/0005_auto_20181008_0602.py index 9a5a37d4f..cd56b0993 100644 --- a/ietf/nomcom/migrations/0005_auto_20181008_0602.py +++ b/ietf/nomcom/migrations/0005_auto_20181008_0602.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.16 on 2018-10-08 06:02 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations diff --git a/ietf/nomcom/migrations/0006_auto_20190716_1216.py b/ietf/nomcom/migrations/0006_auto_20190716_1216.py index ab355eb2f..7c3a374f4 100644 --- a/ietf/nomcom/migrations/0006_auto_20190716_1216.py +++ b/ietf/nomcom/migrations/0006_auto_20190716_1216.py @@ -1,7 +1,7 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.22 on 2019-07-16 12:16 -from __future__ import unicode_literals + from django.db import migrations, models diff --git a/ietf/nomcom/migrations/0007_position_is_iesg_position.py b/ietf/nomcom/migrations/0007_position_is_iesg_position.py index 25ebb48f9..edd4cf0f0 100644 --- a/ietf/nomcom/migrations/0007_position_is_iesg_position.py +++ b/ietf/nomcom/migrations/0007_position_is_iesg_position.py @@ -1,7 +1,7 @@ # Copyright The IETF Trust 2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.27 on 2020-01-07 14:41 -from __future__ import unicode_literals + from django.db import migrations, models diff --git a/ietf/nomcom/models.py b/ietf/nomcom/models.py index 4a69bd238..53d9f375c 100644 --- a/ietf/nomcom/models.py +++ b/ietf/nomcom/models.py @@ -1,6 +1,6 @@ # Copyright The IETF Trust 2012-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals + import os diff --git a/ietf/nomcom/test_data.py b/ietf/nomcom/test_data.py index 29d92029e..fc4c4fded 100644 --- a/ietf/nomcom/test_data.py +++ b/ietf/nomcom/test_data.py @@ -2,8 +2,6 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import io import tempfile import os diff --git a/ietf/nomcom/tests.py b/ietf/nomcom/tests.py index 2f71b4f1b..eb523bfe1 100644 --- a/ietf/nomcom/tests.py +++ b/ietf/nomcom/tests.py @@ -2,15 +2,13 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import datetime import io import random import shutil from pyquery import PyQuery -from six.moves.urllib.parse import urlparse +from urllib.parse import urlparse from django.db import IntegrityError from django.db.models import Max diff --git a/ietf/nomcom/utils.py b/ietf/nomcom/utils.py index ed228daba..2383b29f1 100644 --- a/ietf/nomcom/utils.py +++ b/ietf/nomcom/utils.py @@ -2,13 +2,10 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import datetime import hashlib import os import re -import six import tempfile from email import message_from_string @@ -409,7 +406,7 @@ def getheader(header_text, default="ascii"): """Decode the specified header""" tuples = decode_header(header_text) - header_sections = [ text.decode(charset or default) if isinstance(text, six.binary_type) else text for text, charset in tuples] + header_sections = [ text.decode(charset or default) if isinstance(text, bytes) else text for text, charset in tuples] return "".join(header_sections) diff --git a/ietf/nomcom/views.py b/ietf/nomcom/views.py index 93a312861..9613501e1 100644 --- a/ietf/nomcom/views.py +++ b/ietf/nomcom/views.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2012-2019, All Rights Reserved +# Copyright The IETF Trust 2012-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import datetime import re from collections import OrderedDict, Counter diff --git a/ietf/person/factories.py b/ietf/person/factories.py index e076b4ef7..7cbe621a9 100644 --- a/ietf/person/factories.py +++ b/ietf/person/factories.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2015-2019, All Rights Reserved +# Copyright The IETF Trust 2015-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import factory import faker import faker.config diff --git a/ietf/person/fields.py b/ietf/person/fields.py index 077b6c4ca..a90d0a62c 100644 --- a/ietf/person/fields.py +++ b/ietf/person/fields.py @@ -1,14 +1,11 @@ -# Copyright The IETF Trust 2012-2019, All Rights Reserved +# Copyright The IETF Trust 2012-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import json -import six from collections import Counter -from six.moves.urllib.parse import urlencode +from urllib.parse import urlencode from django import forms from django.core.validators import validate_email @@ -90,7 +87,7 @@ class SearchablePersonsField(forms.CharField): def prepare_value(self, value): if not value: value = "" - if isinstance(value, six.string_types): + if isinstance(value, str): pks = self.parse_select2_value(value) if self.model == Person: value = self.model.objects.filter(pk__in=pks) @@ -179,7 +176,7 @@ class PersonEmailChoiceField(forms.ModelChoiceField): def label_from_instance(self, email): if self.label_with == "person": - return six.text_type(email.person) + return str(email.person) elif self.label_with == "email": return email.address else: diff --git a/ietf/person/forms.py b/ietf/person/forms.py index d146aa0b1..81ee36256 100644 --- a/ietf/person/forms.py +++ b/ietf/person/forms.py @@ -1,10 +1,7 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - - from django import forms from ietf.person.models import Person diff --git a/ietf/person/management/commands/deactivate_email_addresses.py b/ietf/person/management/commands/deactivate_email_addresses.py index 04357dc9f..c91761987 100644 --- a/ietf/person/management/commands/deactivate_email_addresses.py +++ b/ietf/person/management/commands/deactivate_email_addresses.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import flufl.bounce import io import mailbox diff --git a/ietf/person/migrations/0001_initial.py b/ietf/person/migrations/0001_initial.py index 6e73eacbe..72f6c9105 100644 --- a/ietf/person/migrations/0001_initial.py +++ b/ietf/person/migrations/0001_initial.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.10 on 2018-02-20 10:52 -from __future__ import absolute_import, print_function, unicode_literals - import datetime from django.conf import settings import django.core.validators diff --git a/ietf/person/migrations/0002_auto_20180330_0808.py b/ietf/person/migrations/0002_auto_20180330_0808.py index 455389865..ec2d2d893 100644 --- a/ietf/person/migrations/0002_auto_20180330_0808.py +++ b/ietf/person/migrations/0002_auto_20180330_0808.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.11 on 2018-03-30 08:08 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations, models diff --git a/ietf/person/migrations/0003_auto_20180504_1519.py b/ietf/person/migrations/0003_auto_20180504_1519.py index b7e9cbd97..928c637c5 100644 --- a/ietf/person/migrations/0003_auto_20180504_1519.py +++ b/ietf/person/migrations/0003_auto_20180504_1519.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.12 on 2018-05-04 15:19 -from __future__ import absolute_import, print_function, unicode_literals - import datetime from django.conf import settings import django.core.validators diff --git a/ietf/person/migrations/0004_populate_email_origin.py b/ietf/person/migrations/0004_populate_email_origin.py index 5a07e0b83..147b7b70c 100644 --- a/ietf/person/migrations/0004_populate_email_origin.py +++ b/ietf/person/migrations/0004_populate_email_origin.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.12 on 2018-05-10 05:28 -from __future__ import absolute_import, print_function, unicode_literals - import sys from django.db import migrations diff --git a/ietf/person/migrations/0005_populate_person_name_from_draft.py b/ietf/person/migrations/0005_populate_person_name_from_draft.py index dc4cb829d..d83dd2284 100644 --- a/ietf/person/migrations/0005_populate_person_name_from_draft.py +++ b/ietf/person/migrations/0005_populate_person_name_from_draft.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.12 on 2018-05-10 05:28 -from __future__ import absolute_import, print_function, unicode_literals - import sys from django.db import migrations diff --git a/ietf/person/migrations/0006_auto_20180910_0719.py b/ietf/person/migrations/0006_auto_20180910_0719.py index 2a86ac351..9e17137a8 100644 --- a/ietf/person/migrations/0006_auto_20180910_0719.py +++ b/ietf/person/migrations/0006_auto_20180910_0719.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.13 on 2018-09-10 07:19 -from __future__ import absolute_import, print_function, unicode_literals - from django.conf import settings from django.db import migrations import django.db.models.deletion diff --git a/ietf/person/migrations/0007_auto_20180929_1303.py b/ietf/person/migrations/0007_auto_20180929_1303.py index 4c83b5177..b4e41d7fa 100644 --- a/ietf/person/migrations/0007_auto_20180929_1303.py +++ b/ietf/person/migrations/0007_auto_20180929_1303.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.15 on 2018-09-29 13:03 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations, models diff --git a/ietf/person/migrations/0008_auto_20181014_1448.py b/ietf/person/migrations/0008_auto_20181014_1448.py index 9712919af..f6d765b02 100644 --- a/ietf/person/migrations/0008_auto_20181014_1448.py +++ b/ietf/person/migrations/0008_auto_20181014_1448.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.16 on 2018-10-14 14:48 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations, models diff --git a/ietf/person/migrations/0009_auto_20190118_0725.py b/ietf/person/migrations/0009_auto_20190118_0725.py index 3ceb958b9..be609f109 100644 --- a/ietf/person/migrations/0009_auto_20190118_0725.py +++ b/ietf/person/migrations/0009_auto_20190118_0725.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.18 on 2019-01-18 07:25 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations, models diff --git a/ietf/person/models.py b/ietf/person/models.py index 92cf46f64..360b05790 100644 --- a/ietf/person/models.py +++ b/ietf/person/models.py @@ -2,16 +2,13 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import datetime import email.utils import email.header -import six import uuid from hashids import Hashids -from six.moves.urllib.parse import urljoin +from urllib.parse import urljoin from django.conf import settings from django.contrib.auth.models import User @@ -88,9 +85,8 @@ class Person(models.Model): def plain_ascii(self): if not hasattr(self, '_cached_plain_ascii'): if self.ascii: - if isinstance(self.ascii, six.binary_type): - uname = six.text_type(self.ascii) - ascii = unidecode_name(uname) + if isinstance(self.ascii, bytes): + ascii = unidecode_name(self.ascii.decode('utf-8')) else: ascii = unidecode_name(self.ascii) else: @@ -109,7 +105,7 @@ class Person(models.Model): may be an object or the group acronym.""" if group: from ietf.group.models import Group - if isinstance(group, six.string_types): + if isinstance(group, str): group = Group.objects.get(acronym=group) e = Email.objects.filter(person=self, role__group=group, role__name=role_name) else: @@ -351,7 +347,7 @@ class PersonalApiKey(models.Model): @classmethod def validate_key(cls, s): import struct, hashlib, base64 - assert isinstance(s, six.binary_type) + assert isinstance(s, bytes) key = base64.urlsafe_b64decode(s) id, salt, hash = struct.unpack(KEY_STRUCT, key) k = cls.objects.filter(id=id) diff --git a/ietf/person/name.py b/ietf/person/name.py index bcae148d6..7edc0fe70 100644 --- a/ietf/person/name.py +++ b/ietf/person/name.py @@ -2,8 +2,6 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import re import unidecode diff --git a/ietf/person/tests.py b/ietf/person/tests.py index 29215be95..f0c7196b6 100644 --- a/ietf/person/tests.py +++ b/ietf/person/tests.py @@ -2,10 +2,7 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import datetime -import six from pyquery import PyQuery from io import StringIO @@ -94,7 +91,7 @@ class PersonTests(TestCase): empty_outbox() p = PersonFactory(name="Föö Bär") PersonFactory(name=p.name) - self.assertTrue("possible duplicate" in six.text_type(outbox[0]["Subject"]).lower()) + self.assertTrue("possible duplicate" in str(outbox[0]["Subject"]).lower()) def test_merge(self): url = urlreverse("ietf.person.views.merge") diff --git a/ietf/person/utils.py b/ietf/person/utils.py index 1f3e78b2a..8afe79791 100755 --- a/ietf/person/utils.py +++ b/ietf/person/utils.py @@ -1,13 +1,10 @@ -# Copyright The IETF Trust 2015-2019, All Rights Reserved +# Copyright The IETF Trust 2015-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import datetime import os import pprint -import six import sys import syslog @@ -55,13 +52,13 @@ def merge_persons(source, target, file=sys.stdout, verbose=False): objs, opts, user, admin_site, using) deletable_objects_summary = deletable_objects[1] if len(deletable_objects_summary) > 1: # should only inlcude one object (Person) - six.print_("Not Deleting Person: {}({})".format(source.ascii,source.pk), file=file) - six.print_("Related objects remain:", file=file) + print("Not Deleting Person: {}({})".format(source.ascii,source.pk), file=file) + print("Related objects remain:", file=file) pprint.pprint(deletable_objects[1], stream=file) success = False else: success = True - six.print_("Deleting Person: {}({})".format(source.ascii,source.pk), file=file) + print("Deleting Person: {}({})".format(source.ascii,source.pk), file=file) source.delete() return success, changes @@ -114,7 +111,7 @@ def move_related_objects(source, target, file, verbose=False): field_name = related_object.field.name queryset = getattr(source, accessor).all() if verbose: - six.print_("Merging {}:{}".format(accessor,queryset.count()), file=file) + print("Merging {}:{}".format(accessor,queryset.count()), file=file) kwargs = { field_name:target } queryset.update(**kwargs) diff --git a/ietf/person/views.py b/ietf/person/views.py index 59e0cc101..dade5c1ff 100644 --- a/ietf/person/views.py +++ b/ietf/person/views.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2012-2019, All Rights Reserved +# Copyright The IETF Trust 2012-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import datetime from io import StringIO diff --git a/ietf/redirects/models.py b/ietf/redirects/models.py index 6a3b702e5..c173c736c 100644 --- a/ietf/redirects/models.py +++ b/ietf/redirects/models.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2007-2019, All Rights Reserved +# Copyright The IETF Trust 2007-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - from django.db import models from django.utils.encoding import python_2_unicode_compatible diff --git a/ietf/redirects/tests.py b/ietf/redirects/tests.py index 0337c68b1..7656a10ee 100644 --- a/ietf/redirects/tests.py +++ b/ietf/redirects/tests.py @@ -1,4 +1,4 @@ -# Copyright The IETF Trust 2009-2019, All Rights Reserved +# Copyright The IETF Trust 2009-2020, All Rights Reserved # -*- coding: utf-8 -*- # Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). # All rights reserved. Contact: Pasi Eronen @@ -33,8 +33,6 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -from __future__ import absolute_import, print_function, unicode_literals - from ietf.utils.test_utils import split_url, TestCase import debug # pyflakes:ignore diff --git a/ietf/redirects/views.py b/ietf/redirects/views.py index 37d2b7645..597e39cec 100644 --- a/ietf/redirects/views.py +++ b/ietf/redirects/views.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2007-2019, All Rights Reserved +# Copyright The IETF Trust 2007-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - from django.http import HttpResponsePermanentRedirect, Http404, BadHeaderError from django.shortcuts import get_object_or_404 import re diff --git a/ietf/release/tests.py b/ietf/release/tests.py index 3a4ac01a2..bb2d95100 100644 --- a/ietf/release/tests.py +++ b/ietf/release/tests.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2012-2019, All Rights Reserved +# Copyright The IETF Trust 2012-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - from pyquery import PyQuery from django.urls import reverse diff --git a/ietf/release/urls.py b/ietf/release/urls.py index 34d8605c7..0053d9f2c 100644 --- a/ietf/release/urls.py +++ b/ietf/release/urls.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2015-2019, All Rights Reserved +# Copyright The IETF Trust 2015-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - from django.views.generic import TemplateView from ietf.release import views diff --git a/ietf/release/views.py b/ietf/release/views.py index 49b5bc123..1dc9a8ce5 100644 --- a/ietf/release/views.py +++ b/ietf/release/views.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2012-2019, All Rights Reserved +# Copyright The IETF Trust 2012-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import io import os import re diff --git a/ietf/review/admin.py b/ietf/review/admin.py index 5e693c570..44959ec57 100644 --- a/ietf/review/admin.py +++ b/ietf/review/admin.py @@ -2,8 +2,6 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import simple_history from django.contrib import admin diff --git a/ietf/review/mailarch.py b/ietf/review/mailarch.py index e391cee70..986b79b36 100644 --- a/ietf/review/mailarch.py +++ b/ietf/review/mailarch.py @@ -2,9 +2,6 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - - # various utilities for working with the mailarch mail archive at # mailarchive.ietf.org @@ -17,8 +14,8 @@ import mailbox import tarfile import tempfile -from six.moves.urllib.parse import urlencode -from six.moves.urllib.request import urlopen +from urllib.parse import urlencode +from urllib.request import urlopen import debug # pyflakes:ignore diff --git a/ietf/review/migrations/0001_initial.py b/ietf/review/migrations/0001_initial.py index 8b6f8d861..5e7fde9ec 100644 --- a/ietf/review/migrations/0001_initial.py +++ b/ietf/review/migrations/0001_initial.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.10 on 2018-02-20 10:52 -from __future__ import absolute_import, print_function, unicode_literals - import datetime from django.db import migrations, models import django.db.models.deletion diff --git a/ietf/review/migrations/0002_unavailableperiod_reason.py b/ietf/review/migrations/0002_unavailableperiod_reason.py index 8e6dc8d98..e4c81ad7c 100644 --- a/ietf/review/migrations/0002_unavailableperiod_reason.py +++ b/ietf/review/migrations/0002_unavailableperiod_reason.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.14 on 2018-07-23 15:11 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations, models diff --git a/ietf/review/migrations/0003_add_notify_ad_when.py b/ietf/review/migrations/0003_add_notify_ad_when.py index 3a950a413..78e0d7959 100644 --- a/ietf/review/migrations/0003_add_notify_ad_when.py +++ b/ietf/review/migrations/0003_add_notify_ad_when.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.16 on 2018-11-02 10:10 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations, models import ietf.review.models diff --git a/ietf/review/migrations/0004_reviewteamsettings_secr_mail_alias.py b/ietf/review/migrations/0004_reviewteamsettings_secr_mail_alias.py index 535f776d1..96fb0ba1c 100644 --- a/ietf/review/migrations/0004_reviewteamsettings_secr_mail_alias.py +++ b/ietf/review/migrations/0004_reviewteamsettings_secr_mail_alias.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.16 on 2018-11-03 03:10 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations, models diff --git a/ietf/review/migrations/0005_set_secdir_notify_ad_when.py b/ietf/review/migrations/0005_set_secdir_notify_ad_when.py index ade5a5287..66b768a50 100644 --- a/ietf/review/migrations/0005_set_secdir_notify_ad_when.py +++ b/ietf/review/migrations/0005_set_secdir_notify_ad_when.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.16 on 2018-11-02 10:20 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations def forward(apps, schema_editor): diff --git a/ietf/review/migrations/0006_historicalreviewersettings.py b/ietf/review/migrations/0006_historicalreviewersettings.py index 33f330cf9..4129ab409 100644 --- a/ietf/review/migrations/0006_historicalreviewersettings.py +++ b/ietf/review/migrations/0006_historicalreviewersettings.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.16 on 2018-11-09 08:31 -from __future__ import absolute_import, print_function, unicode_literals - from django.conf import settings from django.db import migrations, models import django.db.models.deletion diff --git a/ietf/review/migrations/0007_allow_notify_ad_when_to_be_blank.py b/ietf/review/migrations/0007_allow_notify_ad_when_to_be_blank.py index 91016a8ed..11da10b36 100644 --- a/ietf/review/migrations/0007_allow_notify_ad_when_to_be_blank.py +++ b/ietf/review/migrations/0007_allow_notify_ad_when_to_be_blank.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.17 on 2018-12-06 13:16 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations, models diff --git a/ietf/review/migrations/0008_remove_reviewrequest_old_id.py b/ietf/review/migrations/0008_remove_reviewrequest_old_id.py index df107e5b0..7f3e0b24c 100644 --- a/ietf/review/migrations/0008_remove_reviewrequest_old_id.py +++ b/ietf/review/migrations/0008_remove_reviewrequest_old_id.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.17 on 2019-01-03 12:34 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations diff --git a/ietf/review/migrations/0009_refactor_review_request.py b/ietf/review/migrations/0009_refactor_review_request.py index 87eaba0a7..d3b22e138 100644 --- a/ietf/review/migrations/0009_refactor_review_request.py +++ b/ietf/review/migrations/0009_refactor_review_request.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.18 on 2019-01-04 14:27 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations, models import django.db.models.deletion import ietf.utils.models diff --git a/ietf/review/migrations/0010_populate_review_assignments.py b/ietf/review/migrations/0010_populate_review_assignments.py index 3602645c4..83f87325b 100644 --- a/ietf/review/migrations/0010_populate_review_assignments.py +++ b/ietf/review/migrations/0010_populate_review_assignments.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.18 on 2019-01-04 14:34 -from __future__ import absolute_import, print_function, unicode_literals - import sys from tqdm import tqdm diff --git a/ietf/review/migrations/0011_review_document2_fk.py b/ietf/review/migrations/0011_review_document2_fk.py index f613cdb9b..1fca4fd4e 100644 --- a/ietf/review/migrations/0011_review_document2_fk.py +++ b/ietf/review/migrations/0011_review_document2_fk.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-05-08 11:58 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations import django.db.models.deletion import ietf.utils.models diff --git a/ietf/review/migrations/0012_remove_old_document_field.py b/ietf/review/migrations/0012_remove_old_document_field.py index 56790f507..2c5b5c277 100644 --- a/ietf/review/migrations/0012_remove_old_document_field.py +++ b/ietf/review/migrations/0012_remove_old_document_field.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-05-20 09:53 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations diff --git a/ietf/review/migrations/0013_rename_field_document2.py b/ietf/review/migrations/0013_rename_field_document2.py index da3c17ea0..0577b0d31 100644 --- a/ietf/review/migrations/0013_rename_field_document2.py +++ b/ietf/review/migrations/0013_rename_field_document2.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-05-21 05:31 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations diff --git a/ietf/review/migrations/0014_document_primary_key_cleanup.py b/ietf/review/migrations/0014_document_primary_key_cleanup.py index c8ef25beb..20c28ace6 100644 --- a/ietf/review/migrations/0014_document_primary_key_cleanup.py +++ b/ietf/review/migrations/0014_document_primary_key_cleanup.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-06-10 03:47 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations import django.db.models.deletion import ietf.utils.models diff --git a/ietf/review/migrations/0015_populate_completed_on_for_rejected.py b/ietf/review/migrations/0015_populate_completed_on_for_rejected.py index e1126f23c..feed8ea1c 100644 --- a/ietf/review/migrations/0015_populate_completed_on_for_rejected.py +++ b/ietf/review/migrations/0015_populate_completed_on_for_rejected.py @@ -1,7 +1,7 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.24 on 2019-09-30 08:17 -from __future__ import unicode_literals + from django.db import migrations diff --git a/ietf/review/migrations/0016_add_remind_days_open_reviews.py b/ietf/review/migrations/0016_add_remind_days_open_reviews.py index 5b64fcc2a..57e991147 100644 --- a/ietf/review/migrations/0016_add_remind_days_open_reviews.py +++ b/ietf/review/migrations/0016_add_remind_days_open_reviews.py @@ -1,7 +1,7 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.23 on 2019-09-05 05:03 -from __future__ import unicode_literals + from django.db import migrations, models diff --git a/ietf/review/migrations/0017_add_review_team_remind_days_unconfirmed_assignments.py b/ietf/review/migrations/0017_add_review_team_remind_days_unconfirmed_assignments.py index ccbf83442..af48a4243 100644 --- a/ietf/review/migrations/0017_add_review_team_remind_days_unconfirmed_assignments.py +++ b/ietf/review/migrations/0017_add_review_team_remind_days_unconfirmed_assignments.py @@ -1,7 +1,7 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.23 on 2019-10-01 04:40 -from __future__ import unicode_literals + from django.db import migrations, models diff --git a/ietf/review/migrations/0018_auto_20191015_1014.py b/ietf/review/migrations/0018_auto_20191015_1014.py index b695905ee..f61c75502 100644 --- a/ietf/review/migrations/0018_auto_20191015_1014.py +++ b/ietf/review/migrations/0018_auto_20191015_1014.py @@ -1,7 +1,7 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.25 on 2019-10-15 10:14 -from __future__ import unicode_literals + from django.db import migrations, models diff --git a/ietf/review/migrations/0019_auto_20191023_0829.py b/ietf/review/migrations/0019_auto_20191023_0829.py index 9ef375b69..c5e84573c 100644 --- a/ietf/review/migrations/0019_auto_20191023_0829.py +++ b/ietf/review/migrations/0019_auto_20191023_0829.py @@ -1,7 +1,7 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.25 on 2019-10-23 08:29 -from __future__ import unicode_literals + import datetime from django.db import migrations, models diff --git a/ietf/review/migrations/0020_auto_20191115_2059.py b/ietf/review/migrations/0020_auto_20191115_2059.py index ccf041800..025e3d2d3 100644 --- a/ietf/review/migrations/0020_auto_20191115_2059.py +++ b/ietf/review/migrations/0020_auto_20191115_2059.py @@ -1,7 +1,7 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.26 on 2019-11-15 20:59 -from __future__ import unicode_literals + from django.db import migrations, models diff --git a/ietf/review/migrations/0021_add_additional_history.py b/ietf/review/migrations/0021_add_additional_history.py index bbabb494d..58dc709ec 100644 --- a/ietf/review/migrations/0021_add_additional_history.py +++ b/ietf/review/migrations/0021_add_additional_history.py @@ -1,7 +1,7 @@ -# Copyright The IETF Trust 2016-2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.23 on 2019-11-19 04:36 -from __future__ import unicode_literals + import datetime from django.conf import settings diff --git a/ietf/review/migrations/0022_reviewer_queue_policy_and_request_assignment_next.py b/ietf/review/migrations/0022_reviewer_queue_policy_and_request_assignment_next.py index c1f3885a1..9d705ea14 100644 --- a/ietf/review/migrations/0022_reviewer_queue_policy_and_request_assignment_next.py +++ b/ietf/review/migrations/0022_reviewer_queue_policy_and_request_assignment_next.py @@ -1,7 +1,7 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.23 on 2019-11-18 08:50 -from __future__ import unicode_literals + from django.db import migrations, models import django.db.models.deletion diff --git a/ietf/review/migrations/0023_historicalreviewersettings-change-reason-text-field.py b/ietf/review/migrations/0023_historicalreviewersettings-change-reason-text-field.py new file mode 100644 index 000000000..1e83f2650 --- /dev/null +++ b/ietf/review/migrations/0023_historicalreviewersettings-change-reason-text-field.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +# Copyright The IETF Trust 2019-2020, All Rights Reserved +# Generated by Django 1.11.26 on 2019-12-21 11:52 + + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('review', '0022_reviewer_queue_policy_and_request_assignment_next'), + ] + + operations = [ + migrations.AlterField( + model_name='historicalreviewersettings', + name='history_change_reason', + field=models.TextField(null=True), + ), + ] diff --git a/ietf/review/models.py b/ietf/review/models.py index 9c2619cbc..ef5ee48ef 100644 --- a/ietf/review/models.py +++ b/ietf/review/models.py @@ -2,8 +2,6 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import datetime from simple_history.models import HistoricalRecords diff --git a/ietf/review/policies.py b/ietf/review/policies.py index 8946bd5c6..9c541e5f1 100644 --- a/ietf/review/policies.py +++ b/ietf/review/policies.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved -from __future__ import absolute_import, print_function, unicode_literals import re -import six from django.db.models.aggregates import Max from ietf.doc.models import DocumentAuthor, DocAlias @@ -289,7 +287,7 @@ class AssignmentOrderResolver: if stats: explanations.append(", ".join(stats)) - label = six.text_type(email.person) + label = str(email.person) if explanations: label = "{}: {}".format(label, "; ".join(explanations)) return { diff --git a/ietf/review/tests.py b/ietf/review/tests.py index 589866043..bb8cea89e 100644 --- a/ietf/review/tests.py +++ b/ietf/review/tests.py @@ -2,8 +2,6 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - from ietf.review.factories import ReviewAssignmentFactory, ReviewRequestFactory from ietf.utils.test_utils import TestCase, reload_db_objects from .mailarch import hash_list_message_id diff --git a/ietf/review/utils.py b/ietf/review/utils.py index a6418808f..898cabaad 100644 --- a/ietf/review/utils.py +++ b/ietf/review/utils.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2016-2019, All Rights Reserved +# Copyright The IETF Trust 2016-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import datetime import itertools diff --git a/ietf/secr/announcement/forms.py b/ietf/secr/announcement/forms.py index e3d3cd9e6..46b2e7b78 100644 --- a/ietf/secr/announcement/forms.py +++ b/ietf/secr/announcement/forms.py @@ -2,8 +2,6 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - from django import forms from ietf.group.models import Group, Role diff --git a/ietf/secr/announcement/tests.py b/ietf/secr/announcement/tests.py index 5d7ee45a9..d4df48163 100644 --- a/ietf/secr/announcement/tests.py +++ b/ietf/secr/announcement/tests.py @@ -2,8 +2,6 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - from pyquery import PyQuery from django.urls import reverse diff --git a/ietf/secr/console/tests.py b/ietf/secr/console/tests.py index 75ddf483b..9de570795 100644 --- a/ietf/secr/console/tests.py +++ b/ietf/secr/console/tests.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2013-2019, All Rights Reserved +# Copyright The IETF Trust 2013-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - """ This file demonstrates two different styles of tests (one doctest and one unittest). These will both pass when you run "manage.py test". diff --git a/ietf/secr/groups/tests.py b/ietf/secr/groups/tests.py index 92184be6f..35bd245eb 100644 --- a/ietf/secr/groups/tests.py +++ b/ietf/secr/groups/tests.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2013-2019, All Rights Reserved +# Copyright The IETF Trust 2013-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - from django.urls import reverse from ietf.utils.test_utils import TestCase from ietf.group.models import Group diff --git a/ietf/secr/meetings/blue_sheets.py b/ietf/secr/meetings/blue_sheets.py index 49d8755ca..617554121 100644 --- a/ietf/secr/meetings/blue_sheets.py +++ b/ietf/secr/meetings/blue_sheets.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2013-2019, All Rights Reserved +# Copyright The IETF Trust 2013-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import io from django.conf import settings diff --git a/ietf/secr/meetings/tests.py b/ietf/secr/meetings/tests.py index 91ad389e2..40d2ac9f4 100644 --- a/ietf/secr/meetings/tests.py +++ b/ietf/secr/meetings/tests.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2013-2019, All Rights Reserved +# Copyright The IETF Trust 2013-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import datetime import os import shutil diff --git a/ietf/secr/proceedings/migrations/0001_initial.py b/ietf/secr/proceedings/migrations/0001_initial.py index 48d6b6264..70bf55f31 100644 --- a/ietf/secr/proceedings/migrations/0001_initial.py +++ b/ietf/secr/proceedings/migrations/0001_initial.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.10 on 2018-02-20 10:52 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations, models diff --git a/ietf/secr/proceedings/models.py b/ietf/secr/proceedings/models.py index e7d24e7c8..fb672bf23 100644 --- a/ietf/secr/proceedings/models.py +++ b/ietf/secr/proceedings/models.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2013-2019, All Rights Reserved +# Copyright The IETF Trust 2013-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import os from django.conf import settings diff --git a/ietf/secr/proceedings/proc_utils.py b/ietf/secr/proceedings/proc_utils.py index c8cd6323b..9e49c7ac8 100644 --- a/ietf/secr/proceedings/proc_utils.py +++ b/ietf/secr/proceedings/proc_utils.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2013-2019, All Rights Reserved +# Copyright The IETF Trust 2013-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - ''' proc_utils.py @@ -13,7 +11,7 @@ import datetime import os import re import subprocess -from six.moves.urllib.parse import urlencode +from urllib.parse import urlencode import debug # pyflakes:ignore diff --git a/ietf/secr/proceedings/tests.py b/ietf/secr/proceedings/tests.py index 2004b88f6..e6ee6a593 100644 --- a/ietf/secr/proceedings/tests.py +++ b/ietf/secr/proceedings/tests.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2013-2019, All Rights Reserved +# Copyright The IETF Trust 2013-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import debug # pyflakes:ignore import io import json diff --git a/ietf/secr/proceedings/views.py b/ietf/secr/proceedings/views.py index 1c65780ca..916118217 100644 --- a/ietf/secr/proceedings/views.py +++ b/ietf/secr/proceedings/views.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2013-2019, All Rights Reserved +# Copyright The IETF Trust 2013-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import datetime import glob import itertools diff --git a/ietf/secr/roles/tests.py b/ietf/secr/roles/tests.py index e70d5e563..242d396db 100644 --- a/ietf/secr/roles/tests.py +++ b/ietf/secr/roles/tests.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2013-2019, All Rights Reserved +# Copyright The IETF Trust 2013-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - from django.urls import reverse from ietf.utils.test_utils import TestCase diff --git a/ietf/secr/rolodex/forms.py b/ietf/secr/rolodex/forms.py index ab094bdca..8c95da88d 100644 --- a/ietf/secr/rolodex/forms.py +++ b/ietf/secr/rolodex/forms.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2013-2019, All Rights Reserved +# Copyright The IETF Trust 2013-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import re from django import forms diff --git a/ietf/secr/sreq/forms.py b/ietf/secr/sreq/forms.py index cb7266ed3..b88da052e 100644 --- a/ietf/secr/sreq/forms.py +++ b/ietf/secr/sreq/forms.py @@ -2,8 +2,6 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - from django import forms import debug # pyflakes:ignore diff --git a/ietf/secr/sreq/tests.py b/ietf/secr/sreq/tests.py index 04e912fe7..2c311752a 100644 --- a/ietf/secr/sreq/tests.py +++ b/ietf/secr/sreq/tests.py @@ -2,10 +2,7 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import datetime -import six from django.urls import reverse @@ -316,14 +313,14 @@ class SubmitRequestCase(TestCase): r = self.client.post(url,post_data) self.assertEqual(r.status_code, 200) q = PyQuery(r.content) - self.assertTrue('Confirm' in six.text_type(q("title")), r.context['form'].errors) + self.assertTrue('Confirm' in str(q("title")), r.context['form'].errors) # confirm post_data['submit'] = 'Submit' r = self.client.post(confirm_url,post_data) self.assertRedirects(r, reverse('ietf.secr.sreq.views.main')) self.assertEqual(len(outbox),len_before+1) notification = outbox[-1] - notification_payload = six.text_type(notification.get_payload(decode=True),"utf-8","replace") + notification_payload = notification.get_payload(decode=True).decode(encoding="utf-8", errors="replace") sessions = Session.objects.filter(meeting=meeting,group=group) self.assertEqual(len(sessions), 2) session = sessions[0] diff --git a/ietf/secr/sreq/views.py b/ietf/secr/sreq/views.py index 4d3ab10e0..0ff31bdb4 100644 --- a/ietf/secr/sreq/views.py +++ b/ietf/secr/sreq/views.py @@ -2,8 +2,6 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import datetime from collections import defaultdict diff --git a/ietf/secr/telechat/tests.py b/ietf/secr/telechat/tests.py index 1264a12ab..c707675fc 100644 --- a/ietf/secr/telechat/tests.py +++ b/ietf/secr/telechat/tests.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2013-2019, All Rights Reserved +# Copyright The IETF Trust 2013-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import datetime from pyquery import PyQuery diff --git a/ietf/secr/telechat/views.py b/ietf/secr/telechat/views.py index c192e447e..8359d5bb3 100644 --- a/ietf/secr/telechat/views.py +++ b/ietf/secr/telechat/views.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2013-2019, All Rights Reserved +# Copyright The IETF Trust 2013-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import datetime from django.contrib import messages diff --git a/ietf/secr/utils/ams_utils.py b/ietf/secr/utils/ams_utils.py index d8e3c2a62..17c780a02 100644 --- a/ietf/secr/utils/ams_utils.py +++ b/ietf/secr/utils/ams_utils.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2013-2019, All Rights Reserved +# Copyright The IETF Trust 2013-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - from django.conf import settings from ietf.person.models import Person diff --git a/ietf/secr/utils/document.py b/ietf/secr/utils/document.py index 216958b70..0a34512a1 100644 --- a/ietf/secr/utils/document.py +++ b/ietf/secr/utils/document.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2013-2019, All Rights Reserved +# Copyright The IETF Trust 2013-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - def get_full_path(doc): ''' Returns for name of file on disk with full path. This should really be a method on doc diff --git a/ietf/secr/utils/group.py b/ietf/secr/utils/group.py index 3895367ec..44ef5f022 100644 --- a/ietf/secr/utils/group.py +++ b/ietf/secr/utils/group.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2013-2019, All Rights Reserved +# Copyright The IETF Trust 2013-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - # Python imports import io import os diff --git a/ietf/secr/utils/test.py b/ietf/secr/utils/test.py index 3fc791923..4f3578234 100644 --- a/ietf/secr/utils/test.py +++ b/ietf/secr/utils/test.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2013-2019, All Rights Reserved +# Copyright The IETF Trust 2013-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - ''' Functions to aid unit testing ''' diff --git a/ietf/settings.py b/ietf/settings.py index e835a7b3d..3352fc7de 100644 --- a/ietf/settings.py +++ b/ietf/settings.py @@ -2,19 +2,15 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - # Django settings for ietf project. # BASE_DIR and "settings_local" are from # http://code.djangoproject.com/wiki/SplitSettings import os -import six import sys import datetime import warnings -if six.PY3: - from typing import Any, Dict, List, Tuple # pyflakes:ignore +from typing import Any, Dict, List, Tuple # pyflakes:ignore warnings.simplefilter("always", DeprecationWarning) warnings.filterwarnings("ignore", message="Report.file_reporters will no longer be available in Coverage.py 4.2", module="coverage.report") diff --git a/ietf/settings_releasetest.py b/ietf/settings_releasetest.py index 421e6f851..99c275d1b 100644 --- a/ietf/settings_releasetest.py +++ b/ietf/settings_releasetest.py @@ -1,10 +1,7 @@ -# Copyright The IETF Trust 2015-2019, All Rights Reserved +# Copyright The IETF Trust 2015-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - - # Standard settings except we use SQLite, this is useful for speeding # up tests that depend on the test database, try for instance: # diff --git a/ietf/settings_sqlitetest.py b/ietf/settings_sqlitetest.py index 2a884768c..bc678ab18 100644 --- a/ietf/settings_sqlitetest.py +++ b/ietf/settings_sqlitetest.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2010-2019, All Rights Reserved +# Copyright The IETF Trust 2010-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - # Standard settings except we use SQLite and skip migrations, this is # useful for speeding up tests that depend on the test database, try # for instance: diff --git a/ietf/settings_testcrawl.py b/ietf/settings_testcrawl.py index f4ae6ee63..7dfb08f1b 100644 --- a/ietf/settings_testcrawl.py +++ b/ietf/settings_testcrawl.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2015-2019, All Rights Reserved +# Copyright The IETF Trust 2015-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - # Standard settings except we enable caching like in the production # environment, this is useful for speeding up the test crawl, try for # instance: diff --git a/ietf/stats/backfill_data.py b/ietf/stats/backfill_data.py index 41fca2049..c8ee39531 100755 --- a/ietf/stats/backfill_data.py +++ b/ietf/stats/backfill_data.py @@ -1,18 +1,16 @@ #!/usr/bin/env python -# Copyright The IETF Trust 2017-2019, All Rights Reserved +# Copyright The IETF Trust 2017-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals import io import sys import os import os.path import argparse -import six import time -if six.PY3: - from typing import Set, Optional # pyflakes:ignore + +from typing import Set, Optional # pyflakes:ignore basedir = os.path.abspath(os.path.join(os.path.dirname(__file__), "../..")) sys.path = [ basedir ] + sys.path @@ -133,10 +131,10 @@ for doc in docs_qs.prefetch_related("docalias", "formal_languages", "documentaut # it's an extra author - skip those extra authors seen = set() # type: Set[Optional[str]] for full, _, _, _, _, email, country, company in d.get_author_list(): - assert full is None or isinstance(full, six.text_type) - assert email is None or isinstance(email, six.text_type) - assert country is None or isinstance(country, six.text_type) - assert isinstance(company, six.text_type) + assert full is None or isinstance(full, str) + assert email is None or isinstance(email, str) + assert country is None or isinstance(country, str) + assert isinstance(company, str) #full, email, country, company = [ unicode(s) for s in [full, email, country, company, ] ] if email in seen: continue diff --git a/ietf/stats/migrations/0001_initial.py b/ietf/stats/migrations/0001_initial.py index 33d48edbe..bf702b9a4 100644 --- a/ietf/stats/migrations/0001_initial.py +++ b/ietf/stats/migrations/0001_initial.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.10 on 2018-02-20 10:52 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations, models import django.db.models.deletion import ietf.utils.models diff --git a/ietf/stats/models.py b/ietf/stats/models.py index 924ff962e..14bba4984 100644 --- a/ietf/stats/models.py +++ b/ietf/stats/models.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2017-2019, All Rights Reserved +# Copyright The IETF Trust 2017-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - from django.db import models from django.utils.encoding import python_2_unicode_compatible diff --git a/ietf/stats/tests.py b/ietf/stats/tests.py index 3431903c9..e755a6c88 100644 --- a/ietf/stats/tests.py +++ b/ietf/stats/tests.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2016-2019, All Rights Reserved +# Copyright The IETF Trust 2016-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import calendar import datetime import json diff --git a/ietf/stats/urls.py b/ietf/stats/urls.py index 7929ecadd..d2993759d 100644 --- a/ietf/stats/urls.py +++ b/ietf/stats/urls.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2016-2019, All Rights Reserved +# Copyright The IETF Trust 2016-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - from django.conf import settings from ietf.stats import views diff --git a/ietf/stats/utils.py b/ietf/stats/utils.py index fa8f23f1b..93c12a45f 100644 --- a/ietf/stats/utils.py +++ b/ietf/stats/utils.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2017-2019, All Rights Reserved +# Copyright The IETF Trust 2017-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import re import requests from collections import defaultdict diff --git a/ietf/stats/views.py b/ietf/stats/views.py index f9d7968f0..c7e38bf38 100644 --- a/ietf/stats/views.py +++ b/ietf/stats/views.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2016-2019, All Rights Reserved +# Copyright The IETF Trust 2016-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import os import calendar import datetime diff --git a/ietf/submit/checkers.py b/ietf/submit/checkers.py index 64cfc579f..59db02f16 100644 --- a/ietf/submit/checkers.py +++ b/ietf/submit/checkers.py @@ -2,13 +2,10 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import io import os import re import shutil -import six import sys import tempfile @@ -148,8 +145,8 @@ class DraftYangChecker(object): # This places the yang models as files in workdir saved_stdout = sys.stdout saved_stderr = sys.stderr - sys.stdout = six.StringIO() - sys.stderr = six.StringIO() + sys.stdout = io.StringIO() + sys.stderr = io.StringIO() extractor.extract_yang_model(file.readlines()) model_list = extractor.get_extracted_models(False, True) out = sys.stdout.getvalue() diff --git a/ietf/submit/forms.py b/ietf/submit/forms.py index f7e0a7a87..149c7524c 100644 --- a/ietf/submit/forms.py +++ b/ietf/submit/forms.py @@ -2,15 +2,12 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import io import os import re import datetime import email import pytz -import six import sys import tempfile import xml2rfc @@ -18,12 +15,6 @@ import xml2rfc from email.utils import formataddr from unidecode import unidecode -if six.PY2: - from StringIO import StringIO -else: - from io import StringIO - - from django import forms from django.conf import settings from django.utils.html import mark_safe # type:ignore @@ -175,8 +166,8 @@ class SubmissionBaseUploadForm(forms.Form): name, ext = os.path.splitext(os.path.basename(xml_file.name)) tfh, tfn = tempfile.mkstemp(prefix=name+'-', suffix='.xml') file_name = {} - xml2rfc.log.write_out = StringIO() # open(os.devnull, "w") - xml2rfc.log.write_err = StringIO() # open(os.devnull, "w") + xml2rfc.log.write_out = io.StringIO() # open(os.devnull, "w") + xml2rfc.log.write_err = io.StringIO() # open(os.devnull, "w") try: # We need to write the xml file to disk in order to hand it # over to the xml parser. XXX FIXME: investigate updating @@ -207,11 +198,11 @@ class SubmissionBaseUploadForm(forms.Form): self.revision = None self.filename = draftname self.title = self.xmlroot.findtext('front/title').strip() - if type(self.title) is six.text_type: + if type(self.title) is str: self.title = unidecode(self.title) self.title = normalize_text(self.title) self.abstract = (self.xmlroot.findtext('front/abstract') or '').strip() - if type(self.abstract) is six.text_type: + if type(self.abstract) is str: self.abstract = unidecode(self.abstract) author_info = self.xmlroot.findall('front/author') for author in author_info: diff --git a/ietf/submit/mail.py b/ietf/submit/mail.py index 43db7285e..32dd89e25 100644 --- a/ietf/submit/mail.py +++ b/ietf/submit/mail.py @@ -2,8 +2,6 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import re import email import datetime diff --git a/ietf/submit/management/commands/manualpost_email.py b/ietf/submit/management/commands/manualpost_email.py index 10d3ed3d5..aaabfb39b 100644 --- a/ietf/submit/management/commands/manualpost_email.py +++ b/ietf/submit/management/commands/manualpost_email.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2016-2019, All Rights Reserved +# Copyright The IETF Trust 2016-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import io import sys diff --git a/ietf/submit/migrations/0001_initial.py b/ietf/submit/migrations/0001_initial.py index 79d5fc3db..619260600 100644 --- a/ietf/submit/migrations/0001_initial.py +++ b/ietf/submit/migrations/0001_initial.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.10 on 2018-02-20 10:52 -from __future__ import absolute_import, print_function, unicode_literals - import datetime from django.db import migrations, models import django.db.models.deletion diff --git a/ietf/submit/migrations/0002_submission_document2_fk.py b/ietf/submit/migrations/0002_submission_document2_fk.py index 27d9daa7f..7885cff32 100644 --- a/ietf/submit/migrations/0002_submission_document2_fk.py +++ b/ietf/submit/migrations/0002_submission_document2_fk.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-05-08 11:58 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations import django.db.models.deletion import ietf.utils.models diff --git a/ietf/submit/migrations/0003_remove_old_document_field.py b/ietf/submit/migrations/0003_remove_old_document_field.py index fe4d880ef..f8deb2ff9 100644 --- a/ietf/submit/migrations/0003_remove_old_document_field.py +++ b/ietf/submit/migrations/0003_remove_old_document_field.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-05-25 06:44 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations diff --git a/ietf/submit/migrations/0004_rename_field_document2.py b/ietf/submit/migrations/0004_rename_field_document2.py index b1bdbdcec..422265923 100644 --- a/ietf/submit/migrations/0004_rename_field_document2.py +++ b/ietf/submit/migrations/0004_rename_field_document2.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-05-25 06:46 -from __future__ import absolute_import, print_function, unicode_literals - from django.db import migrations diff --git a/ietf/submit/models.py b/ietf/submit/models.py index 04f7400bf..e8e1e0849 100644 --- a/ietf/submit/models.py +++ b/ietf/submit/models.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2011-2019, All Rights Reserved +# Copyright The IETF Trust 2011-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import datetime import email import jsonfield diff --git a/ietf/submit/parsers/base.py b/ietf/submit/parsers/base.py index 4eb3d3b8f..5c5d0d6fc 100644 --- a/ietf/submit/parsers/base.py +++ b/ietf/submit/parsers/base.py @@ -1,15 +1,12 @@ -# Copyright The IETF Trust 2011-2019, All Rights Reserved +# Copyright The IETF Trust 2011-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import re import datetime import debug # pyflakes:ignore -import six -if six.PY3: - from typing import List, Optional # pyflakes:ignore + +from typing import List, Optional # pyflakes:ignore from django.conf import settings from django.template.defaultfilters import filesizeformat diff --git a/ietf/submit/parsers/plain_parser.py b/ietf/submit/parsers/plain_parser.py index a0e1f3659..a3338e35a 100644 --- a/ietf/submit/parsers/plain_parser.py +++ b/ietf/submit/parsers/plain_parser.py @@ -1,8 +1,6 @@ # Copyright The IETF Trust 2011-2020, All Rights Reserved -from __future__ import absolute_import, print_function, unicode_literals - import re import debug # pyflakes:ignore diff --git a/ietf/submit/templatetags/submit_tags.py b/ietf/submit/templatetags/submit_tags.py index b2bbde386..416564881 100644 --- a/ietf/submit/templatetags/submit_tags.py +++ b/ietf/submit/templatetags/submit_tags.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2011-2019, All Rights Reserved +# Copyright The IETF Trust 2011-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import os from django import template diff --git a/ietf/submit/tests.py b/ietf/submit/tests.py index f02f5f3da..06808c168 100644 --- a/ietf/submit/tests.py +++ b/ietf/submit/tests.py @@ -2,15 +2,12 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import datetime import email import io import os import re import shutil -import six import sys @@ -160,7 +157,7 @@ class SubmitTests(TestCase): submission = Submission.objects.get(name=name) if len(submission.authors) != 1: sys.stderr.write("\nAuthor extraction failure.\n") - sys.stderr.write(six.ensure_text("Author name used in test: %s\n"%author)) + sys.stderr.write(force_str("Author name used in test: %s\n"%author)) sys.stderr.write("Author ascii name: %s\n" % author.ascii) sys.stderr.write("Author initials: %s\n" % author.initials()) self.assertEqual(len(submission.authors), 1) @@ -421,7 +418,7 @@ class SubmitTests(TestCase): self.assertTrue("unknown-email-" not in confirm_email["To"]) if change_authors: # Since authors changed, ensure chairs are copied (and that the message says why) - self.assertTrue("chairs have been copied" in six.text_type(confirm_email)) + self.assertTrue("chairs have been copied" in str(confirm_email)) if group_type in ['wg','rg','ag']: self.assertTrue("mars-chairs@" in confirm_email["To"].lower()) elif group_type == 'area': @@ -431,7 +428,7 @@ class SubmitTests(TestCase): if stream_type=='ise': self.assertTrue("rfc-ise@" in confirm_email["To"].lower()) else: - self.assertNotIn("chairs have been copied", six.text_type(confirm_email)) + self.assertNotIn("chairs have been copied", str(confirm_email)) self.assertNotIn("mars-chairs@", confirm_email["To"].lower()) confirmation_url = self.extract_confirmation_url(confirm_email) @@ -570,7 +567,7 @@ class SubmitTests(TestCase): # both submitter and author get email self.assertTrue(author.email().address.lower() in confirm_email["To"]) self.assertTrue("submitter@example.com" in confirm_email["To"]) - self.assertFalse("chairs have been copied" in six.text_type(confirm_email)) + self.assertFalse("chairs have been copied" in str(confirm_email)) confirmation_url = self.extract_confirmation_url(outbox[-1]) diff --git a/ietf/submit/utils.py b/ietf/submit/utils.py index cc4c88331..057054842 100644 --- a/ietf/submit/utils.py +++ b/ietf/submit/utils.py @@ -2,16 +2,13 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import datetime import io import os import pathlib import re -import six # pyflakes:ignore -if six.PY3: - from typing import Callable, Optional # pyflakes:ignore + +from typing import Callable, Optional # pyflakes:ignore from django.conf import settings from django.core.validators import validate_email, ValidationError @@ -503,7 +500,7 @@ def ensure_person_email_info_exists(name, email, docname): person = Person() person.name = name person.name_from_draft = name - log.assertion('isinstance(person.name, six.text_type)') + log.assertion('isinstance(person.name, str)') person.ascii = unidecode_name(person.name) person.save() else: @@ -692,7 +689,7 @@ def get_draft_meta(form, saved_files): if s is None: return "" - if isinstance(s, six.text_type): + if isinstance(s, str): return s else: try: diff --git a/ietf/submit/views.py b/ietf/submit/views.py index 4a01cb7cf..f7a33f5c9 100644 --- a/ietf/submit/views.py +++ b/ietf/submit/views.py @@ -2,14 +2,11 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import re import base64 import datetime -import six -if six.PY3: - from typing import Optional # pyflakes:ignore + +from typing import Optional # pyflakes:ignore from django.conf import settings from django.contrib import messages diff --git a/ietf/sync/iana.py b/ietf/sync/iana.py index 92f1242e9..7e6085e93 100644 --- a/ietf/sync/iana.py +++ b/ietf/sync/iana.py @@ -2,8 +2,6 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import base64 import datetime import email diff --git a/ietf/sync/rfceditor.py b/ietf/sync/rfceditor.py index 69929e0b9..258883b68 100644 --- a/ietf/sync/rfceditor.py +++ b/ietf/sync/rfceditor.py @@ -2,15 +2,12 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import base64 import datetime import re import requests -import six -from six.moves.urllib.parse import urlencode +from urllib.parse import urlencode from xml.dom import pulldom, Node from django.conf import settings @@ -559,6 +556,6 @@ def post_approved_draft(url, name): log(msg) if settings.SERVER_MODE == 'test': debug.say(msg) - error = six.text_type(e) + error = str(e) return text, error diff --git a/ietf/sync/tests.py b/ietf/sync/tests.py index bbdcf7149..8b43117d4 100644 --- a/ietf/sync/tests.py +++ b/ietf/sync/tests.py @@ -2,8 +2,6 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import os import io import json diff --git a/ietf/utils/accesstoken.py b/ietf/utils/accesstoken.py index a6ba65935..b2a93f77d 100644 --- a/ietf/utils/accesstoken.py +++ b/ietf/utils/accesstoken.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2013-2019, All Rights Reserved +# Copyright The IETF Trust 2013-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import time, random, hashlib from django.conf import settings diff --git a/ietf/utils/admin.py b/ietf/utils/admin.py index ec141b78c..3e562c2bc 100644 --- a/ietf/utils/admin.py +++ b/ietf/utils/admin.py @@ -1,11 +1,7 @@ -# Copyright The IETF Trust 2011-2019, All Rights Reserved +# Copyright The IETF Trust 2011-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - -import six - from django.contrib import admin from django.utils.encoding import force_text @@ -21,7 +17,7 @@ def name(obj): name = force_text(obj.name) if name: return name - return six.text_type(obj) + return str(obj) def admin_link(field, label=None, ordering="", display=name, suffix=""): if not label: diff --git a/ietf/utils/aliases.py b/ietf/utils/aliases.py index 6c31e9ec2..53a7f815e 100644 --- a/ietf/utils/aliases.py +++ b/ietf/utils/aliases.py @@ -1,5 +1,5 @@ #!/usr/bin/env python -# Copyright The IETF Trust 2013-2019, All Rights Reserved +# Copyright The IETF Trust 2013-2020, All Rights Reserved # -*- coding: utf-8 -*- # -*- Python -*- # @@ -9,8 +9,6 @@ # -from __future__ import absolute_import, print_function, unicode_literals - """ Mailing list alias dumping utilities diff --git a/ietf/utils/bootstrap.py b/ietf/utils/bootstrap.py index b4e169f5a..0ff40084c 100644 --- a/ietf/utils/bootstrap.py +++ b/ietf/utils/bootstrap.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2016-2019, All Rights Reserved +# Copyright The IETF Trust 2016-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import bootstrap3.renderers class SeparateErrorsFromHelpTextFieldRenderer(bootstrap3.renderers.FieldRenderer): diff --git a/ietf/utils/decorators.py b/ietf/utils/decorators.py index ff91a2860..6d01dc409 100644 --- a/ietf/utils/decorators.py +++ b/ietf/utils/decorators.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2016-2019, All Rights Reserved +# Copyright The IETF Trust 2016-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import datetime from decorator import decorator, decorate diff --git a/ietf/utils/draft.py b/ietf/utils/draft.py index 368d545eb..938b0148c 100755 --- a/ietf/utils/draft.py +++ b/ietf/utils/draft.py @@ -1,11 +1,9 @@ #!/usr/bin/python -# Copyright The IETF Trust 2009-2019, All Rights Reserved +# Copyright The IETF Trust 2009-2020, All Rights Reserved # -*- coding: utf-8 -*- # -*- python -*- -from __future__ import absolute_import, print_function, unicode_literals - """ NAME %(program)s - Extract meta-information from an IETF draft. @@ -45,12 +43,11 @@ import io import os import os.path import re -import six import stat import sys import time -if six.PY3: - from typing import Dict, List # pyflakes:ignore + +from typing import Dict, List # pyflakes:ignore version = "0.35" program = os.path.basename(sys.argv[0]) @@ -136,7 +133,7 @@ def acronym_match(s, l): class Draft(): def __init__(self, text, source, name_from_source=False): - assert isinstance(text, six.text_type) + assert isinstance(text, str) self.source = source self.rawtext = text self.name_from_source = name_from_source diff --git a/ietf/utils/draft_search.py b/ietf/utils/draft_search.py index dd250e319..2363250d4 100644 --- a/ietf/utils/draft_search.py +++ b/ietf/utils/draft_search.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2007-2019, All Rights Reserved +# Copyright The IETF Trust 2007-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import re def normalize_draftname(string): diff --git a/ietf/utils/fields.py b/ietf/utils/fields.py index 8663cab58..681b111db 100644 --- a/ietf/utils/fields.py +++ b/ietf/utils/fields.py @@ -1,11 +1,8 @@ -# Copyright The IETF Trust 2012-2019, All Rights Reserved +# Copyright The IETF Trust 2012-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import datetime -import six import re import debug # pyflakes:ignore @@ -23,7 +20,7 @@ class MultiEmailField(forms.Field): if not value: return [] - if isinstance(value, six.string_types): + if isinstance(value, str): values = value.split(',') return [ x.strip() for x in values if x.strip() ] else: diff --git a/ietf/utils/history.py b/ietf/utils/history.py index 35d532641..03fad4793 100644 --- a/ietf/utils/history.py +++ b/ietf/utils/history.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2011-2019, All Rights Reserved +# Copyright The IETF Trust 2011-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import debug # pyflakes:ignore def find_history_active_at(obj, time): diff --git a/ietf/utils/html.py b/ietf/utils/html.py index 35f2c14e4..1630c8acc 100644 --- a/ietf/utils/html.py +++ b/ietf/utils/html.py @@ -4,15 +4,12 @@ """Utilities for working with HTML.""" -from __future__ import absolute_import, print_function, unicode_literals - import bleach import copy import html2text import lxml.etree import lxml.html import lxml.html.clean -import six import debug # pyflakes:ignore @@ -63,7 +60,7 @@ class Cleaner(lxml.html.clean.Cleaner): # Copied from lxml 4.2.0 and modified to insert charset meta: def clean_html(self, html): result_type = type(html) - if isinstance(html, six.string_types): + if isinstance(html, (str, bytes)): doc = lxml.html.fromstring(html) else: doc = copy.deepcopy(html) diff --git a/ietf/utils/log.py b/ietf/utils/log.py index de56ba02b..720c95b3f 100644 --- a/ietf/utils/log.py +++ b/ietf/utils/log.py @@ -2,16 +2,13 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import sys import logging import inspect import os.path -import six import traceback -if six.PY3: - from typing import Callable # pyflakes:ignore + +from typing import Callable # pyflakes:ignore try: import syslog diff --git a/ietf/utils/mail.py b/ietf/utils/mail.py index 8e997c306..054e4ae4a 100644 --- a/ietf/utils/mail.py +++ b/ietf/utils/mail.py @@ -2,13 +2,10 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import copy import datetime #import logging import re -import six import smtplib import sys import textwrap @@ -38,8 +35,7 @@ import ietf from ietf.utils.log import log, assertion from ietf.utils.text import isascii -if six.PY3: - from typing import Any, Dict, List # pyflakes:ignore +from typing import Any, Dict, List # pyflakes:ignore # Testing mode: # import ietf.utils.mail @@ -189,7 +185,7 @@ def send_mail(request, to, frm, subject, template, context, *args, **kwargs): return send_mail_text(request, to, frm, subject, txt, *args, **kwargs) def encode_message(txt): - assert isinstance(txt, six.text_type) + assert isinstance(txt, str) return MIMEText(txt.encode('utf-8'), 'plain', 'UTF-8') def send_mail_text(request, to, frm, subject, txt, cc=None, extra=None, toUser=False, bcc=None, copy=True, save=True): @@ -228,13 +224,7 @@ def formataddr(addrtuple): address field. Does what's needed, and returns a string value suitable for use in a To: or Cc: email header field. """ - if six.PY2: - name, addr = addrtuple - if name and not isascii(name): - name = str(Header(name, 'utf-8')) - return simple_formataddr((name, addr)) - else: - return simple_formataddr(addrtuple) + return simple_formataddr(addrtuple) def parseaddr(addr): """ @@ -245,7 +235,7 @@ def parseaddr(addr): """ - addr = ''.join( [ ( s.decode(m) if m else s.decode()) if isinstance(s, six.binary_type) else s for (s,m) in decode_header(addr) ] ) + addr = ''.join( [ ( s.decode(m) if m else s.decode()) if isinstance(s, bytes) else s for (s,m) in decode_header(addr) ] ) name, addr = simple_parseaddr(addr) return name, addr @@ -477,7 +467,7 @@ def send_mail_preformatted(request, preformatted, extra={}, override={}): def send_mail_message(request, message, extra={}): """Send a Message object.""" # note that this doesn't handle MIME messages at the moment - assertion('isinstance(message.to, six.string_types) and isinstance(message.cc, six.string_types) and isinstance(message.bcc, six.string_types)') + assertion('isinstance(message.to, str) and isinstance(message.cc, str) and isinstance(message.bcc, str)') e = extra.copy() if message.reply_to: @@ -627,8 +617,5 @@ def get_email_addresses_from_text(text): def get_payload(msg, decode=False): - if six.PY2: - return msg.get_payload(decode=decode).decode(msg.get_content_charset('utf-8')) - else: - return msg.get_payload(decode=decode) + return msg.get_payload(decode=decode) diff --git a/ietf/utils/management/commands/check_referential_integrity.py b/ietf/utils/management/commands/check_referential_integrity.py index de54083f6..bbffe323f 100644 --- a/ietf/utils/management/commands/check_referential_integrity.py +++ b/ietf/utils/management/commands/check_referential_integrity.py @@ -2,8 +2,6 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - from tqdm import tqdm import django diff --git a/ietf/utils/management/commands/coverage_changes.py b/ietf/utils/management/commands/coverage_changes.py index 9058fc790..7a445bd0c 100644 --- a/ietf/utils/management/commands/coverage_changes.py +++ b/ietf/utils/management/commands/coverage_changes.py @@ -1,14 +1,11 @@ -# Copyright The IETF Trust 2015-2019, All Rights Reserved +# Copyright The IETF Trust 2015-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import gzip import io import json import os -import six from difflib import ndiff @@ -61,7 +58,7 @@ class Command(BaseCommand): valid_sections = ['template', 'url', 'code'] def read_coverage(self, filename, version=None): - if isinstance(filename, six.string_types): + if isinstance(filename, str): try: if filename.endswith(".gz"): file = gzip.open(filename, "rb") diff --git a/ietf/utils/management/commands/create_group_wikis.py b/ietf/utils/management/commands/create_group_wikis.py index cf6d947d7..13315b012 100644 --- a/ietf/utils/management/commands/create_group_wikis.py +++ b/ietf/utils/management/commands/create_group_wikis.py @@ -1,14 +1,11 @@ -# Copyright The IETF Trust 2016-2019, All Rights Reserved +# Copyright The IETF Trust 2016-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import os import copy import io import pkg_resources -import six import syslog from trac.core import TracError @@ -334,7 +331,7 @@ class Command(BaseCommand): if not self.group_list is None: self.group_list = self.group_list.split('.') - if isinstance(self.verbosity, six.string_types) and self.verbosity.isdigit(): + if isinstance(self.verbosity, str) and self.verbosity.isdigit(): self.verbosity = int(self.verbosity) if self.dummy_run and self.verbosity < 2: diff --git a/ietf/utils/management/commands/download_extras.py b/ietf/utils/management/commands/download_extras.py index 74bfc1e1b..a74291bc2 100644 --- a/ietf/utils/management/commands/download_extras.py +++ b/ietf/utils/management/commands/download_extras.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import os import subprocess diff --git a/ietf/utils/management/commands/dumprelated.py b/ietf/utils/management/commands/dumprelated.py index 60a7ea70b..66fbb33bf 100644 --- a/ietf/utils/management/commands/dumprelated.py +++ b/ietf/utils/management/commands/dumprelated.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import io import warnings from collections import OrderedDict diff --git a/ietf/utils/management/commands/fix_ambiguous_timestamps.py b/ietf/utils/management/commands/fix_ambiguous_timestamps.py index 9a20d1cc5..fc872f458 100644 --- a/ietf/utils/management/commands/fix_ambiguous_timestamps.py +++ b/ietf/utils/management/commands/fix_ambiguous_timestamps.py @@ -1,6 +1,6 @@ -# Copyright The IETF Trust 2014-2019, All Rights Reserved +# Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals + import datetime import pytz diff --git a/ietf/utils/management/commands/import_htpasswd.py b/ietf/utils/management/commands/import_htpasswd.py index 2a8a2e5b7..ed19eea6f 100644 --- a/ietf/utils/management/commands/import_htpasswd.py +++ b/ietf/utils/management/commands/import_htpasswd.py @@ -1,4 +1,4 @@ -# Copyright The IETF Trust 2014-2019, All Rights Reserved +# Copyright The IETF Trust 2014-2020, All Rights Reserved import io import sys @@ -11,8 +11,8 @@ def import_htpasswd_file(filename, verbosity=1, overwrite=False): with io.open(filename) as file: for line in file: if not ':' in line: - raise ValueError('Found a line without colon separator in the htpassword file %s:'+ - ' "%s"' % (file.name, line)) # pylint: disable=too-many-format-args + raise ValueError('Found a line without colon separator in the htpassword file %s:' + ' "%s"' % (file.name, line)) username, password = line.strip().split(':', 1) try: user = User.objects.get(username=username) diff --git a/ietf/utils/management/commands/loadrelated.py b/ietf/utils/management/commands/loadrelated.py index 78da0e33e..e3d84990c 100644 --- a/ietf/utils/management/commands/loadrelated.py +++ b/ietf/utils/management/commands/loadrelated.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import gzip import os #import sys diff --git a/ietf/utils/management/commands/makefixture.py b/ietf/utils/management/commands/makefixture.py index fbffb061f..0044dc719 100644 --- a/ietf/utils/management/commands/makefixture.py +++ b/ietf/utils/management/commands/makefixture.py @@ -1,10 +1,8 @@ -# Copyright The IETF Trust 2013-2019, All Rights Reserved +# Copyright The IETF Trust 2013-2020, All Rights Reserved # -*- coding: utf-8 -*- # From https://github.com/ericholscher/django-test-utils/blob/master/test_utils/management/commands/makefixture.py -from __future__ import absolute_import, print_function, unicode_literals - """ "Make fixture" command. @@ -45,8 +43,6 @@ python manage.py makefixture --format=xml --indent=4 YourModel[3] AnotherModel a #no support for generic relations #no support for one-to-one relations -import six - from django.core import serializers from django.core.management.base import CommandError from django.core.management.base import LabelCommand @@ -110,7 +106,7 @@ class Command(LabelCommand): objects = [] for model, slice in models: - if isinstance(slice, six.string_types) and slice: + if isinstance(slice, str) and slice: objects.extend(model._default_manager.filter(pk__exact=slice)) elif not slice or type(slice) is list: items = model._default_manager.all() diff --git a/ietf/utils/management/commands/mergedata.py b/ietf/utils/management/commands/mergedata.py index 732e2ad4b..3a169c51e 100644 --- a/ietf/utils/management/commands/mergedata.py +++ b/ietf/utils/management/commands/mergedata.py @@ -1,7 +1,6 @@ # Copyright The IETF Trust 2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals import os import warnings diff --git a/ietf/utils/management/commands/populate_yang_model_dirs.py b/ietf/utils/management/commands/populate_yang_model_dirs.py index 14c72d421..9151cedff 100644 --- a/ietf/utils/management/commands/populate_yang_model_dirs.py +++ b/ietf/utils/management/commands/populate_yang_model_dirs.py @@ -1,15 +1,13 @@ -# Copyright The IETF Trust 2016-2019, All Rights Reserved +# Copyright The IETF Trust 2016-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - +import io import os import sys import time from pathlib2 import Path -from six import StringIO from textwrap import dedent from xym import xym @@ -66,8 +64,8 @@ class Command(BaseCommand): def extract_from(file, dir, strict=True): saved_stdout = sys.stdout saved_stderr = sys.stderr - xymerr = StringIO() - xymout = StringIO() + xymerr = io.StringIO() + xymout = io.StringIO() sys.stderr = xymerr sys.stdout = xymout model_list = [] diff --git a/ietf/utils/management/commands/pyflakes.py b/ietf/utils/management/commands/pyflakes.py index b83c9e5e1..3f33970e1 100644 --- a/ietf/utils/management/commands/pyflakes.py +++ b/ietf/utils/management/commands/pyflakes.py @@ -2,8 +2,6 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import - import ast import io import os diff --git a/ietf/utils/management/commands/run_yang_model_checks.py b/ietf/utils/management/commands/run_yang_model_checks.py index 3fed40a44..ad053746b 100644 --- a/ietf/utils/management/commands/run_yang_model_checks.py +++ b/ietf/utils/management/commands/run_yang_model_checks.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2017-2019, All Rights Reserved +# Copyright The IETF Trust 2017-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import json from textwrap import dedent diff --git a/ietf/utils/management/commands/send_apikey_usage_emails.py b/ietf/utils/management/commands/send_apikey_usage_emails.py index f8f923021..4aa4e5524 100644 --- a/ietf/utils/management/commands/send_apikey_usage_emails.py +++ b/ietf/utils/management/commands/send_apikey_usage_emails.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2017-2019, All Rights Reserved +# Copyright The IETF Trust 2017-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import datetime from textwrap import dedent diff --git a/ietf/utils/management/commands/send_gdpr_consent_request.py b/ietf/utils/management/commands/send_gdpr_consent_request.py index 9a50399dc..2bb08eed1 100644 --- a/ietf/utils/management/commands/send_gdpr_consent_request.py +++ b/ietf/utils/management/commands/send_gdpr_consent_request.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import datetime import time diff --git a/ietf/utils/management/commands/sqldumpdump.py b/ietf/utils/management/commands/sqldumpdump.py index a8e596330..68c15b3f8 100644 --- a/ietf/utils/management/commands/sqldumpdump.py +++ b/ietf/utils/management/commands/sqldumpdump.py @@ -1,6 +1,6 @@ # Copyright The IETF Trust 2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals + import collections import io diff --git a/ietf/utils/management/commands/tests.py b/ietf/utils/management/commands/tests.py index 807141703..6619cb819 100644 --- a/ietf/utils/management/commands/tests.py +++ b/ietf/utils/management/commands/tests.py @@ -1,12 +1,9 @@ -# Copyright The IETF Trust 2015-2019, All Rights Reserved +# Copyright The IETF Trust 2015-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import io import os -import six import tempfile from django.core.management import call_command @@ -90,7 +87,7 @@ class CoverageChangeTestCase(TestCase): lfh, latest = tempfile.mkstemp(suffix='.json') with io.open(latest, "w") as file: file.write(latest_txt) - output = six.StringIO() + output = io.StringIO() call_command('coverage_changes', master, latest, stdout=output) text = output.getvalue() os.unlink(master) diff --git a/ietf/utils/management/commands/update_community_list_index.py b/ietf/utils/management/commands/update_community_list_index.py index 4fc64facb..609577763 100644 --- a/ietf/utils/management/commands/update_community_list_index.py +++ b/ietf/utils/management/commands/update_community_list_index.py @@ -1,9 +1,6 @@ # Copyright The IETF Trust 2019-2020, All Rights Reserved # -*- coding: utf-8 -*- - -from __future__ import absolute_import, print_function, unicode_literals - from tqdm import tqdm from django.core.management.base import BaseCommand diff --git a/ietf/utils/management/commands/update_external_command_info.py b/ietf/utils/management/commands/update_external_command_info.py index c7b3497ad..9cc1d1ba4 100644 --- a/ietf/utils/management/commands/update_external_command_info.py +++ b/ietf/utils/management/commands/update_external_command_info.py @@ -2,8 +2,6 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import sys from textwrap import dedent diff --git a/ietf/utils/markup_txt.py b/ietf/utils/markup_txt.py index 6e680fd81..cb4f23820 100644 --- a/ietf/utils/markup_txt.py +++ b/ietf/utils/markup_txt.py @@ -1,4 +1,4 @@ -# Copyright The IETF Trust 2009-2019, All Rights Reserved +# Copyright The IETF Trust 2009-2020, All Rights Reserved # -*- coding: utf-8 -*- # # Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). @@ -34,10 +34,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -from __future__ import absolute_import, print_function, unicode_literals - import re -import six # pyflakes:ignore from django.utils.html import escape @@ -45,7 +42,7 @@ from ietf.utils import log from ietf.utils.text import wordwrap def markup(content, width=None): - log.assertion('isinstance(content, six.text_type)') + log.assertion('isinstance(content, str)') # normalize line endings to LF only content = content.replace("\r\n", "\n") content = content.replace("\r", "\n") diff --git a/ietf/utils/migrations/0001_initial.py b/ietf/utils/migrations/0001_initial.py index d8513c1a3..87cb75287 100644 --- a/ietf/utils/migrations/0001_initial.py +++ b/ietf/utils/migrations/0001_initial.py @@ -1,13 +1,9 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Generated by Django 1.11.10 on 2018-02-20 10:52 -from __future__ import absolute_import, print_function, unicode_literals - -import six -if six.PY3: - from typing import List, Tuple # pyflakes:ignore +from typing import List, Tuple # pyflakes:ignore from django.db import migrations, models diff --git a/ietf/utils/mime.py b/ietf/utils/mime.py index 84d197fc7..ab21cfe5c 100644 --- a/ietf/utils/mime.py +++ b/ietf/utils/mime.py @@ -1,7 +1,6 @@ # Copyright The IETF Trust 2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals import magic import re diff --git a/ietf/utils/ordereddict.py b/ietf/utils/ordereddict.py index bdc911efd..a5b1380c5 100644 --- a/ietf/utils/ordereddict.py +++ b/ietf/utils/ordereddict.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2014-2019, All Rights Reserved +# Copyright The IETF Trust 2014-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - def insert_after_in_ordered_dict(dictionary, key, value, after): """There's no "insert" in ordered dict so simulate it instead by re-adding entries. Obviously that's not ideal, but for small dicts the diff --git a/ietf/utils/patch.py b/ietf/utils/patch.py index 0c1952f3f..b98106126 100644 --- a/ietf/utils/patch.py +++ b/ietf/utils/patch.py @@ -1,4 +1,4 @@ -# Copyright The IETF Trust 2020, All Rights Reserved +# Some parts Copyright The IETF Trust 2020, All Rights Reserved #!/usr/bin/env python """ Patch utility to apply unified diffs @@ -11,7 +11,7 @@ https://github.com/techtonik/python-patch/ """ -from __future__ import print_function + __author__ = "anatoly techtonik " __version__ = "1.16" diff --git a/ietf/utils/pdf.py b/ietf/utils/pdf.py index 989e1a871..cb856dadc 100644 --- a/ietf/utils/pdf.py +++ b/ietf/utils/pdf.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2015-2019, All Rights Reserved +# Copyright The IETF Trust 2015-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import io import re diff --git a/ietf/utils/pipe.py b/ietf/utils/pipe.py index e61fce373..907e4af5f 100644 --- a/ietf/utils/pipe.py +++ b/ietf/utils/pipe.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2010-2019, All Rights Reserved +# Copyright The IETF Trust 2010-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - # Simplified interface to os.popen3() def pipe(cmd, str=None): diff --git a/ietf/utils/templatetags/htmlfilters.py b/ietf/utils/templatetags/htmlfilters.py index 80ad13e78..10c40408c 100644 --- a/ietf/utils/templatetags/htmlfilters.py +++ b/ietf/utils/templatetags/htmlfilters.py @@ -1,10 +1,7 @@ -# Copyright The IETF Trust 2017-2019, All Rights Reserved +# Copyright The IETF Trust 2017-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - - from django.template.library import Library from django.template.defaultfilters import stringfilter diff --git a/ietf/utils/templatetags/textfilters.py b/ietf/utils/templatetags/textfilters.py index 752ce5899..980915330 100644 --- a/ietf/utils/templatetags/textfilters.py +++ b/ietf/utils/templatetags/textfilters.py @@ -2,8 +2,6 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import re import bleach diff --git a/ietf/utils/test_data.py b/ietf/utils/test_data.py index a0ce65f80..d39aacd7c 100644 --- a/ietf/utils/test_data.py +++ b/ietf/utils/test_data.py @@ -1,10 +1,7 @@ -# Copyright The IETF Trust 2011-2019, All Rights Reserved +# Copyright The IETF Trust 2011-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - - import datetime from django.conf import settings diff --git a/ietf/utils/test_runner.py b/ietf/utils/test_runner.py index 2bd0b5ac5..c39090d5a 100644 --- a/ietf/utils/test_runner.py +++ b/ietf/utils/test_runner.py @@ -34,8 +34,6 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -from __future__ import absolute_import, print_function, unicode_literals - import io import re import os diff --git a/ietf/utils/test_smtpserver.py b/ietf/utils/test_smtpserver.py index b74797e52..e8e6727a5 100644 --- a/ietf/utils/test_smtpserver.py +++ b/ietf/utils/test_smtpserver.py @@ -1,13 +1,10 @@ -# Copyright The IETF Trust 2014-2019, All Rights Reserved +# Copyright The IETF Trust 2014-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import smtpd import threading import asyncore -import six import debug # pyflakes:ignore @@ -39,25 +36,19 @@ class SMTPTestChannel(smtpd.SMTPChannel): # mail_options = ['BODY=8BITMIME', 'SMTPUTF8'] def smtp_RCPT(self, arg): - if (six.PY2 and not self._SMTPChannel__mailfrom) or (six.PY3 and not self.mailfrom): + if not self.mailfrom: self.push(str('503 Error: need MAIL command')) return - if six.PY2: - address = self._SMTPChannel__getaddr('TO:', arg) if arg else None - else: - arg = self._strip_command_keyword('TO:', arg) - address, __ = self._getaddr(arg) + arg = self._strip_command_keyword('TO:', arg) + address, __ = self._getaddr(arg) if not address: self.push(str('501 Syntax: RCPT TO:
')) return if "poison" in address: self.push(str('550 Error: Not touching that')) return - if six.PY2: - self._SMTPChannel__rcpttos.append(address) - else: - self.rcpt_options = [] - self.rcpttos.append(address) + self.rcpt_options = [] + self.rcpttos.append(address) self.push(str('250 Ok')) class SMTPTestServer(smtpd.SMTPServer): diff --git a/ietf/utils/test_textupload.py b/ietf/utils/test_textupload.py index a79fb73f8..8790fe7a9 100644 --- a/ietf/utils/test_textupload.py +++ b/ietf/utils/test_textupload.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2015-2019, All Rights Reserved +# Copyright The IETF Trust 2014-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - from django.core.exceptions import ValidationError from django.core.files.uploadedfile import SimpleUploadedFile diff --git a/ietf/utils/test_utils.py b/ietf/utils/test_utils.py index fc5df7ef6..b8b8367a8 100644 --- a/ietf/utils/test_utils.py +++ b/ietf/utils/test_utils.py @@ -1,4 +1,4 @@ -# Copyright The IETF Trust 2009-2019, All Rights Reserved +# Copyright The IETF Trust 2009-2020, All Rights Reserved # -*- coding: utf-8 -*- # # Portion Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). @@ -34,16 +34,13 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -from __future__ import absolute_import, print_function, unicode_literals - import os import re import email import html5lib -import six import sys -from six.moves.urllib.parse import unquote +from urllib.parse import unquote from unittest.util import strclass from bs4 import BeautifulSoup @@ -175,7 +172,7 @@ class TestCase(django.test.TestCase): if subject: mlist = [ m for m in mlist if subject in m["Subject"] ] if text: - assert isinstance(text, six.text_type) + assert isinstance(text, str) mlist = [ m for m in mlist if text in get_payload(m) ] if count and len(mlist) != count: sys.stderr.write("Wrong count in assertMailboxContains(). The complete mailbox contains %s emails:\n\n" % len(mailbox)) diff --git a/ietf/utils/tests.py b/ietf/utils/tests.py index b11ce5a19..b6556df0b 100644 --- a/ietf/utils/tests.py +++ b/ietf/utils/tests.py @@ -1,16 +1,14 @@ -# Copyright The IETF Trust 2014-2019, All Rights Reserved +# Copyright The IETF Trust 2014-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import io import os.path import shutil -import six +import sys import types -if six.PY3: - from typing import Dict, List # pyflakes:ignore + +from typing import Dict, List # pyflakes:ignore from email.mime.image import MIMEImage from email.mime.multipart import MIMEMultipart @@ -52,7 +50,6 @@ skip_message = "" try: import svn # pyflakes:ignore except ImportError as e: - import sys skip_wiki_glue_testing = True skip_message = "Skipping trac tests: %s" % e sys.stderr.write(" "+skip_message+'\n') @@ -282,7 +279,7 @@ class TemplateChecksTestCase(TestCase): r = self.client.get(url) self.assertTemplateUsed(r, '500.html') -@skipIf(six.PY3, "Trac not available for Python3 as of 14 Jul 2019") +@skipIf(sys.version_info.major==3, "Trac not available for Python3 as of 14 Jul 2019") @skipIf(skip_wiki_glue_testing, skip_message) class TestWikiGlueManagementCommand(TestCase): @@ -311,8 +308,8 @@ class TestWikiGlueManagementCommand(TestCase): type__slug__in=['wg','rg','ag','area'], state__slug='active' ).order_by('acronym') - out = six.StringIO() - err = six.StringIO() + out = io.StringIO() + err = io.StringIO() call_command('create_group_wikis', stdout=out, stderr=err, verbosity=2, wiki_dir_pattern=self.wiki_dir_pattern, svn_dir_pattern=self.svn_dir_pattern, diff --git a/ietf/utils/tests_restapi.py b/ietf/utils/tests_restapi.py index b8eb591b6..a1a646db6 100644 --- a/ietf/utils/tests_restapi.py +++ b/ietf/utils/tests_restapi.py @@ -1,10 +1,7 @@ -# Copyright The IETF Trust 2014-2019, All Rights Reserved +# Copyright The IETF Trust 2014-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - -import six import sys import debug @@ -84,6 +81,6 @@ class RestApi(ResourceTestCaseMixin, TestCase): for doc in doclist: for key in doc: value = doc[key] - if isinstance(value, six.string_types) and value.startswith('%s/'%apitop): + if isinstance(value, str) and value.startswith('%s/'%apitop): self.api_client.get(value, format='json') diff --git a/ietf/utils/texescape.py b/ietf/utils/texescape.py index 623c192db..a38d8a5b2 100644 --- a/ietf/utils/texescape.py +++ b/ietf/utils/texescape.py @@ -1,11 +1,9 @@ -# Copyright The IETF Trust 2018-2019, All Rights Reserved +# Copyright The IETF Trust 2018-2020, All Rights Reserved # -*- coding: utf-8 -*- # Copied from https://github.com/sphinx-doc/sphinx/blob/master/sphinx/util/texescape.py # Copyright and license as indicated in the original and below -from __future__ import absolute_import, print_function, unicode_literals - """ sphinx.util.texescape ~~~~~~~~~~~~~~~~~~~~~ diff --git a/ietf/utils/text.py b/ietf/utils/text.py index 611ff7e86..8040f0978 100644 --- a/ietf/utils/text.py +++ b/ietf/utils/text.py @@ -1,11 +1,8 @@ -# Copyright The IETF Trust 2016-2019, All Rights Reserved +# Copyright The IETF Trust 2016-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import re -import six import textwrap import unicodedata @@ -60,7 +57,7 @@ def fill(text, width): def wordwrap(text, width=80): """Wraps long lines without loosing the formatting and indentation of short lines""" - if not isinstance(text, six.string_types): + if not isinstance(text, str): return text def block_separator(s): "Look for lines of identical symbols, at least three long" @@ -142,7 +139,7 @@ def maybe_split(text, split=True, pos=5000): return text def decode(raw): - assert isinstance(raw, six.binary_type) + assert isinstance(raw, bytes) try: text = raw.decode('utf-8') except UnicodeDecodeError: @@ -154,7 +151,7 @@ def decode(raw): def text_to_dict(t): "Converts text with RFC2822-formatted header fields into a dictionary-like object." # ensure we're handed a unicode parameter - assert isinstance(t, six.text_type) + assert isinstance(t, str) d = {} # Return {} for malformed input if not len(t.lstrip()) == len(t): diff --git a/ietf/utils/textupload.py b/ietf/utils/textupload.py index d9779df45..239a3dc05 100644 --- a/ietf/utils/textupload.py +++ b/ietf/utils/textupload.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2012-2019, All Rights Reserved +# Copyright The IETF Trust 2012-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import re from django.conf import settings diff --git a/ietf/utils/urls.py b/ietf/utils/urls.py index a6a3abe9d..7f46d9c43 100644 --- a/ietf/utils/urls.py +++ b/ietf/utils/urls.py @@ -1,16 +1,14 @@ -# Copyright The IETF Trust 2016-2019, All Rights Reserved +# Copyright The IETF Trust 2016-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - import debug # pyflakes:ignore -import six from inspect import isclass from django.conf.urls import url as django_url from django.views.generic import View +from django.utils.encoding import force_str def url(regex, view, kwargs=None, name=None): if callable(view) and hasattr(view, '__name__'): @@ -22,9 +20,9 @@ def url(regex, view, kwargs=None, name=None): branch = 'name' elif isinstance(view, (list, tuple)): branch = 'list' - elif isinstance(view, six.string_types): + elif isinstance(view, (str, bytes)): branch = 'string' - name = view + name = force_str(view) elif callable(view) and hasattr(view, '__name__'): branch = 'callable' name = view_name diff --git a/ietf/utils/validators.py b/ietf/utils/validators.py index 9bf179ae3..fba46e564 100644 --- a/ietf/utils/validators.py +++ b/ietf/utils/validators.py @@ -1,7 +1,6 @@ # Copyright The IETF Trust 2016-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals import os import re diff --git a/ietf/wsgi.py b/ietf/wsgi.py index cacc8ed60..76b63bde9 100644 --- a/ietf/wsgi.py +++ b/ietf/wsgi.py @@ -1,9 +1,7 @@ -# Copyright The IETF Trust 2013-2019, All Rights Reserved +# Copyright The IETF Trust 2013-2020, All Rights Reserved # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals - """ WSGI configuration for the datatracker. diff --git a/requirements.txt b/requirements.txt index 7f0deef58..5705be35d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -20,6 +20,7 @@ django-markup>=1.1 django-password-strength>=1.2.1 django-referrer-policy>=1.0 django-simple-history>=2.3.0 +django-stubs==1.3.0 django-tastypie>=0.13.2 django-webtest>=1.9.7 django-widget-tweaks>=1.3 @@ -37,6 +38,7 @@ jwcrypto>=0.4.0 # for signed notifications #lxml>=3.4.0 # from PyQuery; markdown2>=2.3.8 mock>=2.0.0 +mypy==0.750 # Version requirements determined by django-stubs. mysqlclient>=1.3.13 oauth2client>=4.0.0 # required by google-api-python-client, but not always pulled in pathlib>=1.0 @@ -60,8 +62,7 @@ six>=1.9.0 sqlparse>=0.2.2 tblib>=1.3.0 tqdm>=3.7.0 -Trac>=1.0.10,<1.2 -typing>=3.7.4.1 +#Trac>=1.0.10,<1.2 Unidecode>=0.4.18 #wsgiref>=0.1.2 xml2rfc>=2.35.0 diff --git a/requirements3.txt b/requirements3.txt deleted file mode 100644 index 15e1d796d..000000000 --- a/requirements3.txt +++ /dev/null @@ -1,71 +0,0 @@ -# -*- conf-mode -*- -setuptools>=18.5 # Require this first, to prevent later errors -# -argon2-cffi>=16.1.0 # For the Argon2 password hasher option -beautifulsoup4>=4.5.0 -bibtexparser>=0.6.2,<1.0 # Version 1.0 doesn't work under python 2.7. 1.0.1 doesn't recognize month names or abbreviations. -bleach>=2.0.0,!=3.0.0,!=3.0.1,!=3.0.2 -coverage>=4.0.1,!=4.0.2,<5.0 -#cssselect>=0.6.1 # for PyQuery -decorator>=4.0.4 -defusedxml>=0.4.1 # for TastyPie when ussing xml; not a declared dependency -Django>=1.11,!=1.11.18,<1.12 # 1.11.18 has problems exporting BinaryField from django.db.models -django-bcrypt>=0.9.2 # for the BCrypt password hasher option. Remove when all bcrypt upgraded to argon2 -django-bootstrap3>=8.2.1,<9.0.0 -django-csp>=3.5 -django-cors-headers>=2.4.0 -django-form-utils>=1.0.3 -django-formtools>=1.0 # instead of django.contrib.formtools in 1.8 -django-markup>=1.1 -django-password-strength>=1.2.1 -django-referrer-policy>=1.0 -django-simple-history>=2.3.0 -django-stubs==1.3.0 -django-tastypie>=0.13.2 -django-webtest>=1.9.7 -django-widget-tweaks>=1.3 -docutils>=0.12,!=0.15 -factory-boy>=2.9.0 -google-api-python-client -Faker>=0.8.8,!=0.8.9,!=0.8.10 # from factory-boy # Faker 0.8.9,0.8.10 sometimes return string names instead of unicode. -hashids>=1.1.0 -html2text>=2019.8.11 -html5lib>=1.0.1 -httplib2>=0.10.3 -# jsonfield 3.x and higher requires Django 2.2 or higher -jsonfield>=1.0.3,<3.0 # for SubmissionCheck. This is https://github.com/bradjasper/django-jsonfield/. -jwcrypto>=0.4.0 # for signed notifications -#lxml>=3.4.0 # from PyQuery; -markdown2>=2.3.8 -mock>=2.0.0 -mypy==0.750 # Version requirements determined by django-stubs. -mysqlclient>=1.3.13 -oauth2client>=4.0.0 # required by google-api-python-client, but not always pulled in -pathlib>=1.0 -pathlib2>=2.3.0 -Pillow>=3.0 -#pip==9.0.1 # Earlier pip has issues, 9.0.2 and 9.0.3, 10.0.0b1 leaves dross when down- and up-grading packages -pyang>=1.7.2 -pyflakes>=0.9.2 -pyopenssl>=17.5.0 # Used by urllib3.contrib, which is used by PyQuery but not marked as a dependency -pyquery>=1.2.13,!=1.2.14 # Pyqyery 1.2.14 fails on some selectors or stacked selectors -python-dateutil>=2.2 -python-magic>=0.4.6 -python-memcached>=1.48 # for django.core.cache.backends.memcached -python-mimeparse>=1.6 # from TastyPie -pytz>=2014.7 -#pyzmail>=1.0.3 -requests!=2.12.* -rfc2html>=2.0.1 -selenium>=2.42,<3.8.1 -six>=1.9.0 -sqlparse>=0.2.2 -tblib>=1.3.0 -tqdm>=3.7.0 -#Trac>=1.0.10,<1.2 -Unidecode>=0.4.18 -#wsgiref>=0.1.2 -xml2rfc>=2.9.3,!=2.6.0 -xym>=0.4.4,!=0.4.7,<1.0 -#zxcvbn-python>=4.4.14 # Not needed until we do back-end password entropy validation -