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
-