This is an automated email from the ASF dual-hosted git repository.

dill0wn pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/allura.git


The following commit(s) were added to refs/heads/master by this push:
     new 542a06021 run pyupgrade (targeting 3.7 still)
542a06021 is described below

commit 542a060218aa4ea769fa8082b90af9e81c55f3cd
Author: Dave Brondsema <[email protected]>
AuthorDate: Mon Jul 3 20:28:22 2023 +0000

    run pyupgrade (targeting 3.7 still)
---
 Allura/allura/app.py                                     |  2 +-
 Allura/allura/config/middleware.py                       |  2 +-
 Allura/allura/controllers/attachments.py                 |  2 +-
 Allura/allura/controllers/auth.py                        |  2 +-
 Allura/allura/controllers/basetest_project_root.py       |  2 +-
 Allura/allura/controllers/discuss.py                     |  4 ++--
 Allura/allura/controllers/project.py                     |  2 +-
 Allura/allura/controllers/repository.py                  |  2 +-
 Allura/allura/controllers/rest.py                        |  2 +-
 Allura/allura/controllers/site_admin.py                  |  2 +-
 Allura/allura/ext/admin/admin_main.py                    |  4 ++--
 Allura/allura/lib/app_globals.py                         |  2 +-
 Allura/allura/lib/decorators.py                          |  2 +-
 Allura/allura/lib/helpers.py                             |  2 +-
 Allura/allura/lib/macro.py                               |  2 +-
 Allura/allura/lib/mail_util.py                           |  4 ++--
 Allura/allura/lib/markdown_extensions.py                 |  2 +-
 Allura/allura/lib/phone/nexmo.py                         |  2 +-
 Allura/allura/lib/plugin.py                              |  4 ++--
 Allura/allura/lib/project_create_helpers.py              |  2 +-
 Allura/allura/lib/repository.py                          |  2 +-
 Allura/allura/lib/utils.py                               |  4 ++--
 Allura/allura/lib/validators.py                          |  2 +-
 Allura/allura/model/auth.py                              | 14 +++++++-------
 Allura/allura/model/index.py                             |  4 ++--
 Allura/allura/model/project.py                           | 10 +++++-----
 Allura/allura/model/repo_refresh.py                      |  2 +-
 Allura/allura/model/repository.py                        | 16 ++++++++--------
 Allura/allura/scripts/trac_export.py                     |  2 +-
 Allura/allura/tests/decorators.py                        |  2 +-
 Allura/allura/tests/functional/test_auth.py              |  4 ++--
 Allura/allura/tests/functional/test_gravatar.py          |  2 +-
 Allura/allura/tests/functional/test_newforge.py          |  2 +-
 Allura/allura/tests/test_helpers.py                      |  4 ++--
 Allura/allura/tests/test_mail_util.py                    |  4 ++--
 Allura/ldap-setup.py                                     |  2 +-
 AlluraTest/alluratest/test_syntax.py                     |  2 +-
 ForgeActivity/forgeactivity/main.py                      |  2 +-
 ForgeChat/forgechat/command.py                           |  2 +-
 ForgeDiscussion/forgediscussion/controllers/root.py      |  2 +-
 .../forgediscussion/tests/functional/test_forum.py       |  6 +++---
 ForgeFiles/forgefiles/files_main.py                      |  2 +-
 ForgeFiles/forgefiles/model/files.py                     |  2 +-
 ForgeGit/forgegit/model/git_repo.py                      |  2 +-
 ForgeImporters/forgeimporters/base.py                    |  4 ++--
 ForgeImporters/forgeimporters/github/tracker.py          |  2 +-
 .../forgeimporters/tests/github/test_tracker.py          |  2 +-
 ForgeTracker/forgetracker/tracker_main.py                |  2 +-
 ForgeWiki/forgewiki/wiki_main.py                         |  4 ++--
 scripts/teamforge-import.py                              |  6 +++---
 50 files changed, 82 insertions(+), 82 deletions(-)

diff --git a/Allura/allura/app.py b/Allura/allura/app.py
index 154c6bf32..a1489cbde 100644
--- a/Allura/allura/app.py
+++ b/Allura/allura/app.py
@@ -17,7 +17,7 @@
 
 import os
 import logging
-from six.moves.urllib_parse import urljoin
+from urllib.parse import urljoin
 from io import BytesIO
 from collections import defaultdict
 from xml.etree import ElementTree as ET
diff --git a/Allura/allura/config/middleware.py 
b/Allura/allura/config/middleware.py
index 58ee37078..c7503f17a 100644
--- a/Allura/allura/config/middleware.py
+++ b/Allura/allura/config/middleware.py
@@ -228,7 +228,7 @@ def allura_globals_middleware(app):
 def get_tg_vars(context):
     import tg
     from allura.lib import helpers as h
-    from six.moves.urllib.parse import quote, quote_plus
+    from urllib.parse import quote, quote_plus
     context.setdefault('g', tg.app_globals)
     context.setdefault('c', tg.tmpl_context)
     context.setdefault('h', h)
diff --git a/Allura/allura/controllers/attachments.py 
b/Allura/allura/controllers/attachments.py
index 9d1ec5e2a..1552ecb91 100644
--- a/Allura/allura/controllers/attachments.py
+++ b/Allura/allura/controllers/attachments.py
@@ -17,7 +17,7 @@
 
 
 import six
-from six.moves.urllib.parse import unquote
+from urllib.parse import unquote
 from webob import exc
 
 from tg import expose, request, redirect
diff --git a/Allura/allura/controllers/auth.py 
b/Allura/allura/controllers/auth.py
index cfd85933e..fea00d13e 100644
--- a/Allura/allura/controllers/auth.py
+++ b/Allura/allura/controllers/auth.py
@@ -21,7 +21,7 @@ from base64 import b32encode
 from datetime import datetime
 import re
 import warnings
-from six.moves.urllib.parse import urlparse, urljoin
+from urllib.parse import urlparse, urljoin
 
 import bson
 import formencode as fe
diff --git a/Allura/allura/controllers/basetest_project_root.py 
b/Allura/allura/controllers/basetest_project_root.py
index 428b24b79..90dc7e88c 100644
--- a/Allura/allura/controllers/basetest_project_root.py
+++ b/Allura/allura/controllers/basetest_project_root.py
@@ -17,7 +17,7 @@
 
 """Main Controller"""
 import logging
-from six.moves.urllib.parse import unquote
+from urllib.parse import unquote
 
 from tg import tmpl_context as c
 from tg import request
diff --git a/Allura/allura/controllers/discuss.py 
b/Allura/allura/controllers/discuss.py
index 986fe9151..94cc65e8d 100644
--- a/Allura/allura/controllers/discuss.py
+++ b/Allura/allura/controllers/discuss.py
@@ -15,7 +15,7 @@
 #       specific language governing permissions and limitations
 #       under the License.
 
-from six.moves.urllib.parse import unquote, urlsplit, parse_qs
+from urllib.parse import unquote, urlsplit, parse_qs
 from datetime import datetime
 import logging
 
@@ -189,7 +189,7 @@ class ThreadController(BaseController, FeedController, 
metaclass=h.ProxiedAttrMe
         self.discussion = discussion_controller.discussion
         self.thread = self.M.Thread.query.get(_id=thread_id)
         if not self.thread:
-            url = '/p/{}/discussion/{}/'.format(c.project.shortname, 
c.forum.shortname)
+            url = f'/p/{c.project.shortname}/discussion/{c.forum.shortname}/'
             utils.permanent_redirect(url)
 
     @expose()
diff --git a/Allura/allura/controllers/project.py 
b/Allura/allura/controllers/project.py
index 61abe252d..8ddb21da8 100644
--- a/Allura/allura/controllers/project.py
+++ b/Allura/allura/controllers/project.py
@@ -20,7 +20,7 @@ import logging
 from datetime import datetime, timedelta
 
 import six
-from six.moves.urllib.parse import unquote
+from urllib.parse import unquote
 
 from bson import ObjectId
 from tg import expose, flash, redirect, validate, request, config, session
diff --git a/Allura/allura/controllers/repository.py 
b/Allura/allura/controllers/repository.py
index ea9ac74f9..224e5decf 100644
--- a/Allura/allura/controllers/repository.py
+++ b/Allura/allura/controllers/repository.py
@@ -21,7 +21,7 @@ import difflib
 
 from allura.lib.utils import permanent_redirect
 from datetime import datetime
-from six.moves.urllib.parse import quote, unquote
+from urllib.parse import quote, unquote
 from collections import defaultdict, OrderedDict
 
 
diff --git a/Allura/allura/controllers/rest.py 
b/Allura/allura/controllers/rest.py
index 4972a575f..ef4ae4ca5 100644
--- a/Allura/allura/controllers/rest.py
+++ b/Allura/allura/controllers/rest.py
@@ -198,7 +198,7 @@ class Oauth1Validator(oauthlib.oauth1.RequestValidator):
     @property
     def safe_characters(self):
         # add a few characters, so tests can have clear readable values
-        return super(Oauth1Validator, self).safe_characters | {'_', '-'}
+        return super().safe_characters | {'_', '-'}
 
     def get_default_realms(self, client_key, request):
         return []
diff --git a/Allura/allura/controllers/site_admin.py 
b/Allura/allura/controllers/site_admin.py
index 440c024f0..5b41bc94a 100644
--- a/Allura/allura/controllers/site_admin.py
+++ b/Allura/allura/controllers/site_admin.py
@@ -48,7 +48,7 @@ from allura.command.show_models import dfs, 
build_model_inheritance_graph
 from allura.scripts.delete_projects import DeleteProjects
 import allura
 
-from six.moves.urllib.parse import urlparse
+from urllib.parse import urlparse
 import six
 
 
diff --git a/Allura/allura/ext/admin/admin_main.py 
b/Allura/allura/ext/admin/admin_main.py
index 08aec761d..fc2f2ac53 100644
--- a/Allura/allura/ext/admin/admin_main.py
+++ b/Allura/allura/ext/admin/admin_main.py
@@ -21,7 +21,7 @@ import os
 from random import randint
 from collections import OrderedDict
 from datetime import datetime
-from six.moves.urllib.parse import urlparse
+from urllib.parse import urlparse
 import json
 from operator import itemgetter, attrgetter
 import pkg_resources
@@ -570,7 +570,7 @@ class ProjectAdminController(BaseController):
         require_access(c.project, 'update')
         if id is not None and id != '':
             screenshot = M.ProjectFile.query.get(project_id=c.project._id, 
_id=ObjectId(id))
-            M.AuditLog.log('screenshots: deleted screenshot 
{}'.format(screenshot.filename))
+            M.AuditLog.log(f'screenshots: deleted screenshot 
{screenshot.filename}')
             M.ProjectFile.query.remove(
                 dict(project_id=c.project._id, _id=ObjectId(id)))
             g.post_event('project_updated')
diff --git a/Allura/allura/lib/app_globals.py b/Allura/allura/lib/app_globals.py
index d9aa1b9ed..2016d6b48 100644
--- a/Allura/allura/lib/app_globals.py
+++ b/Allura/allura/lib/app_globals.py
@@ -25,7 +25,7 @@ import html
 import hashlib
 import json
 import datetime
-from six.moves.urllib.parse import urlencode
+from urllib.parse import urlencode
 from subprocess import Popen, PIPE
 import os
 import time
diff --git a/Allura/allura/lib/decorators.py b/Allura/allura/lib/decorators.py
index b2b15f152..c889ea799 100644
--- a/Allura/allura/lib/decorators.py
+++ b/Allura/allura/lib/decorators.py
@@ -22,7 +22,7 @@ import logging
 import six
 from http.cookies import SimpleCookie as Cookie
 from collections import defaultdict
-from six.moves.urllib.parse import unquote
+from urllib.parse import unquote
 from datetime import datetime
 from datetime import timedelta
 
diff --git a/Allura/allura/lib/helpers.py b/Allura/allura/lib/helpers.py
index 2bea1c07a..a164863d9 100644
--- a/Allura/allura/lib/helpers.py
+++ b/Allura/allura/lib/helpers.py
@@ -30,7 +30,7 @@ import json
 import logging
 import string
 import random
-import six.moves.cPickle as pickle
+import pickle as pickle
 from hashlib import sha1
 from datetime import datetime, timedelta
 from collections import defaultdict, OrderedDict
diff --git a/Allura/allura/lib/macro.py b/Allura/allura/lib/macro.py
index a4e5b9bc5..20d8fb244 100644
--- a/Allura/allura/lib/macro.py
+++ b/Allura/allura/lib/macro.py
@@ -32,7 +32,7 @@ import oembed
 import jinja2
 import markupsafe
 from operator import attrgetter
-from six.moves.urllib.parse import urlparse, urlunparse
+from urllib.parse import urlparse, urlunparse
 
 import pymongo
 from tg import tmpl_context as c, app_globals as g
diff --git a/Allura/allura/lib/mail_util.py b/Allura/allura/lib/mail_util.py
index 2caef5c26..fb8459ec9 100644
--- a/Allura/allura/lib/mail_util.py
+++ b/Allura/allura/lib/mail_util.py
@@ -19,8 +19,8 @@ import re
 import logging
 import smtplib
 import email.parser
-from six.moves.email_mime_multipart import MIMEMultipart
-from six.moves.email_mime_text import MIMEText
+from email.mime.multipart import MIMEMultipart
+from email.mime.text import MIMEText
 from email import header
 from email.message import EmailMessage
 
diff --git a/Allura/allura/lib/markdown_extensions.py 
b/Allura/allura/lib/markdown_extensions.py
index ab7025d14..cc03be1b1 100644
--- a/Allura/allura/lib/markdown_extensions.py
+++ b/Allura/allura/lib/markdown_extensions.py
@@ -20,7 +20,7 @@ import logging
 from typing import List
 import xml.etree.ElementTree as etree
 
-from six.moves.urllib.parse import urljoin
+from urllib.parse import urljoin
 
 from tg import config
 from bs4 import BeautifulSoup
diff --git a/Allura/allura/lib/phone/nexmo.py b/Allura/allura/lib/phone/nexmo.py
index 1e20ef802..653159da2 100644
--- a/Allura/allura/lib/phone/nexmo.py
+++ b/Allura/allura/lib/phone/nexmo.py
@@ -16,7 +16,7 @@
 #       under the License.
 
 import logging
-from six.moves.urllib.parse import urljoin
+from urllib.parse import urljoin
 import html
 import json
 
diff --git a/Allura/allura/lib/plugin.py b/Allura/allura/lib/plugin.py
index 949051ca4..80c0525a2 100644
--- a/Allura/allura/lib/plugin.py
+++ b/Allura/allura/lib/plugin.py
@@ -25,8 +25,8 @@ import subprocess
 import string
 import crypt
 import random
-from six.moves.urllib.request import urlopen
-from six.moves.urllib.parse import urlparse
+from urllib.request import urlopen
+from urllib.parse import urlparse
 from io import BytesIO
 from random import randint
 from hashlib import sha256
diff --git a/Allura/allura/lib/project_create_helpers.py 
b/Allura/allura/lib/project_create_helpers.py
index 650058f89..77c2c5adf 100644
--- a/Allura/allura/lib/project_create_helpers.py
+++ b/Allura/allura/lib/project_create_helpers.py
@@ -30,7 +30,7 @@ import bson
 import requests
 import formencode
 import six
-from six.moves.urllib.parse import urlparse
+from urllib.parse import urlparse
 
 from allura.lib.helpers import slugify
 from allura.model import Neighborhood
diff --git a/Allura/allura/lib/repository.py b/Allura/allura/lib/repository.py
index b92c0ee25..a64f2c6dd 100644
--- a/Allura/allura/lib/repository.py
+++ b/Allura/allura/lib/repository.py
@@ -18,7 +18,7 @@
 import logging
 
 import six
-from six.moves.urllib.parse import quote
+from urllib.parse import quote
 
 from tg import tmpl_context as c, app_globals as g
 from tg import request
diff --git a/Allura/allura/lib/utils.py b/Allura/allura/lib/utils.py
index c1c27e118..df42eeeeb 100644
--- a/Allura/allura/lib/utils.py
+++ b/Allura/allura/lib/utils.py
@@ -35,7 +35,7 @@ from itertools import groupby
 import operator as op
 import collections
 import ming
-from six.moves.urllib.parse import urlparse
+from urllib.parse import urlparse
 import six.moves.urllib.request
 import six.moves.urllib.parse
 import six.moves.urllib.error
@@ -159,7 +159,7 @@ class 
CustomWatchedFileHandler(logging.handlers.WatchedFileHandler):
         return super().format(record)
 
 
-def chunked_find(cls: Type[T], query: dict | None = None, pagesize: int = 
1024, sort_key: str | None = '_id',
+def chunked_find(cls: type[T], query: dict | None = None, pagesize: int = 
1024, sort_key: str | None = '_id',
                  sort_dir: int = 1) -> Iterable[Iterable[T]]:
     '''
     Execute a mongo query against the specified class, yield some results at
diff --git a/Allura/allura/lib/validators.py b/Allura/allura/lib/validators.py
index 8d1d498f4..50f27834b 100644
--- a/Allura/allura/lib/validators.py
+++ b/Allura/allura/lib/validators.py
@@ -51,7 +51,7 @@ class URL(fev.URL):
 class URLIsPrivate(URL):
 
     def _convert_to_python(self, value, state):
-        value = super(URLIsPrivate, self)._convert_to_python(value, state)
+        value = super()._convert_to_python(value, state)
         url_components = urlsplit(value)
         try:
             host_ip = socket.gethostbyname(url_components.netloc)
diff --git a/Allura/allura/model/auth.py b/Allura/allura/model/auth.py
index 274cac15d..74652226a 100644
--- a/Allura/allura/model/auth.py
+++ b/Allura/allura/model/auth.py
@@ -23,7 +23,7 @@ import typing
 
 import six
 from markupsafe import Markup
-from six.moves.urllib.parse import urlparse
+from urllib.parse import urlparse
 from email import header
 from hashlib import sha256
 from datetime import timedelta, datetime, time
@@ -84,7 +84,7 @@ class EmailAddress(MappedClass):
         indexes = ['nonce', ]
         unique_indexes = [('email', 'claimed_by_user_id'), ]
 
-    query: 'Query[EmailAddress]'
+    query: Query[EmailAddress]
 
     _id = FieldProperty(S.ObjectId)
     email = FieldProperty(str)
@@ -195,7 +195,7 @@ class AuthGlobals(MappedClass):
         name = 'auth_globals'
         session = main_orm_session
 
-    query: 'Query[AuthGlobals]'
+    query: Query[AuthGlobals]
 
     _id = FieldProperty(int)
     next_uid = FieldProperty(int, if_missing=10000)
@@ -251,7 +251,7 @@ class User(MappedClass, ActivityNode, ActivityObject, 
SearchIndexable):
             dict(fields=('tool_data.phone_verification.number_hash',), 
sparse=True),
         ]
 
-    query: 'Query[User]'
+    query: Query[User]
 
     type_s = 'User'
 
@@ -887,7 +887,7 @@ class ProjectRole(MappedClass):
             ('roles',),
         ]
 
-    query: 'Query[ProjectRole]'
+    query: Query[ProjectRole]
 
     _id = FieldProperty(S.ObjectId)
     user_id: ObjectId = AlluraUserProperty(if_missing=None)
@@ -1021,7 +1021,7 @@ class AuditLog(MappedClass):
             'user_id',
         ]
 
-    query: 'Query[AuditLog]'
+    query: Query[AuditLog]
 
     _id = FieldProperty(S.ObjectId)
     project_id = ForeignIdProperty('Project', if_missing=None)
@@ -1111,7 +1111,7 @@ class UserLoginDetails(MappedClass):
         unique_indexes = [('user_id', 'ip', 'ua'),  # DuplicateKeyError 
checked in add_login_detail
                           ]
 
-    query: 'Query[UserLoginDetails]'
+    query: Query[UserLoginDetails]
 
     _id = FieldProperty(S.ObjectId)
     user_id: ObjectId = AlluraUserProperty(required=True)
diff --git a/Allura/allura/model/index.py b/Allura/allura/model/index.py
index 028e00c0c..374fcb9cf 100644
--- a/Allura/allura/model/index.py
+++ b/Allura/allura/model/index.py
@@ -21,9 +21,9 @@ from itertools import groupby
 import typing
 
 from ming.odm.property import FieldProperty
-from six.moves.cPickle import dumps, loads
+from pickle import dumps, loads
 from collections import defaultdict
-from six.moves.urllib.parse import unquote
+from urllib.parse import unquote
 
 import bson
 import pymongo
diff --git a/Allura/allura/model/project.py b/Allura/allura/model/project.py
index e6ff5af2e..63b7e413a 100644
--- a/Allura/allura/model/project.py
+++ b/Allura/allura/model/project.py
@@ -87,7 +87,7 @@ class ProjectFile(File):
         session = main_orm_session
         indexes = [('project_id', 'category')]
 
-    query: 'Query[ProjectFile]'
+    query: Query[ProjectFile]
 
     project_id = FieldProperty(S.ObjectId)
     category = FieldProperty(str)
@@ -101,7 +101,7 @@ class ProjectCategory(MappedClass):
         session = main_orm_session
         name = 'project_category'
 
-    query: 'Query[ProjectCategory]'
+    query: Query[ProjectCategory]
 
     _id = FieldProperty(S.ObjectId)
     parent_id = FieldProperty(S.ObjectId, if_missing=None)
@@ -138,7 +138,7 @@ class TroveCategory(MappedClass):
         extensions = [TroveCategoryMapperExtension]
         indexes = ['trove_cat_id', 'trove_parent_id', 'shortname', 'fullpath']
 
-    query: 'Query[TroveCategory]'
+    query: Query[TroveCategory]
 
     _id = FieldProperty(S.ObjectId)
     trove_cat_id = FieldProperty(int, if_missing=None)
@@ -228,7 +228,7 @@ class Project(SearchIndexable, MappedClass, ActivityNode, 
ActivityObject):
             ('neighborhood_id', 'is_nbhd_project', 'deleted')]
         unique_indexes = [('neighborhood_id', 'shortname')]
 
-    query: 'Query[Project]'
+    query: Query[Project]
 
     type_s = 'Project'
 
@@ -1409,7 +1409,7 @@ class AppConfig(MappedClass, ActivityObject):
             'options.import_id',
             ('options.mount_point', 'project_id')]
 
-    query: 'Query[AppConfig]'
+    query: Query[AppConfig]
 
     # AppConfig schema
     _id = FieldProperty(S.ObjectId)
diff --git a/Allura/allura/model/repo_refresh.py 
b/Allura/allura/model/repo_refresh.py
index 2cd19be3f..91b724568 100644
--- a/Allura/allura/model/repo_refresh.py
+++ b/Allura/allura/model/repo_refresh.py
@@ -16,7 +16,7 @@
 #       under the License.
 
 import logging
-from six.moves.cPickle import dumps
+from pickle import dumps
 
 import bson
 import tg
diff --git a/Allura/allura/model/repository.py 
b/Allura/allura/model/repository.py
index 90b47e5e4..0a4856ba6 100644
--- a/Allura/allura/model/repository.py
+++ b/Allura/allura/model/repository.py
@@ -28,9 +28,9 @@ from hashlib import sha1
 from datetime import datetime, timedelta
 from time import time
 from collections import defaultdict, OrderedDict
-from six.moves.urllib.parse import urljoin
+from urllib.parse import urljoin
 from threading import Thread
-from six.moves.queue import Queue
+from queue import Queue
 from itertools import chain, islice
 import typing
 from collections.abc import Iterable
@@ -354,7 +354,7 @@ class Repository(Artifact, ActivityObject):
         name = 'generic-repository'
         indexes = ['upstream_repo.name']
 
-    query: 'Query[Repository]'
+    query: Query[Repository]
 
     _impl = None
     repo_id = 'repo'
@@ -812,7 +812,7 @@ class MergeRequest(VersionedArtifact, ActivityObject):
         indexes = ['commit_id', 'creator_id']
         unique_indexes = [('app_config_id', 'request_number')]
 
-    query: 'Query[MergeRequest]'
+    query: Query[MergeRequest]
 
     type_s = 'MergeRequest'
 
@@ -1056,7 +1056,7 @@ class CommitStatus(MappedClass):
         name = 'commit_status'
         indexes = [('commit_id', 'context'),]
 
-    query: 'Query[CommitStatus]'
+    query: Query[CommitStatus]
 
     _id = FieldProperty(S.ObjectId)
     state = FieldProperty(str)
@@ -1094,7 +1094,7 @@ class Commit(MappedClass, RepoObject, ActivityObject):
             'repo_ids',
         ]
 
-    query: 'Query[Commit]'
+    query: Query[Commit]
 
     _id = FieldProperty(str)  # hexsha of the commit (for Git and Hg)
     tree_id = FieldProperty(str)
@@ -1362,7 +1362,7 @@ class Tree(MappedClass, RepoObject):
         indexes = [
         ]
 
-    query: 'Query[Tree]'
+    query: Query[Tree]
 
     _id = FieldProperty(str)
     tree_ids = FieldProperty([dict(name=str, id=str)])
@@ -1638,7 +1638,7 @@ class LastCommit(MappedClass, RepoObject):
             ('commit_id', 'path'),
         ]
 
-    query: 'Query[LastCommit]'
+    query: Query[LastCommit]
 
     _id = FieldProperty(S.ObjectId)
     commit_id = FieldProperty(str)
diff --git a/Allura/allura/scripts/trac_export.py 
b/Allura/allura/scripts/trac_export.py
index 6b2949ba4..86b5f569e 100644
--- a/Allura/allura/scripts/trac_export.py
+++ b/Allura/allura/scripts/trac_export.py
@@ -42,7 +42,7 @@ except ImportError:
     try:
         from allura.lib.helpers import urlopen
     except ImportError:
-        from six.moves.urllib.request import urlopen
+        from urllib.request import urlopen
 
 log = logging.getLogger(__name__)
 
diff --git a/Allura/allura/tests/decorators.py 
b/Allura/allura/tests/decorators.py
index 8ef264f71..6b1ea527e 100644
--- a/Allura/allura/tests/decorators.py
+++ b/Allura/allura/tests/decorators.py
@@ -19,7 +19,7 @@ import sys
 import re
 from functools import wraps
 import contextlib
-from six.moves.urllib.parse import parse_qs
+from urllib.parse import parse_qs
 
 from ming.odm.odmsession import ThreadLocalODMSession
 from tg import tmpl_context as c
diff --git a/Allura/allura/tests/functional/test_auth.py 
b/Allura/allura/tests/functional/test_auth.py
index fc2536678..5a2562ef3 100644
--- a/Allura/allura/tests/functional/test_auth.py
+++ b/Allura/allura/tests/functional/test_auth.py
@@ -22,8 +22,8 @@ from datetime import datetime, time, timedelta
 from time import time as time_time
 import json
 
-from six.moves.urllib.parse import urlparse, parse_qs
-from six.moves.urllib.parse import urlencode
+from urllib.parse import urlparse, parse_qs
+from urllib.parse import urlencode
 
 from bson import ObjectId
 import re
diff --git a/Allura/allura/tests/functional/test_gravatar.py 
b/Allura/allura/tests/functional/test_gravatar.py
index 7f8364518..8c3daa154 100644
--- a/Allura/allura/tests/functional/test_gravatar.py
+++ b/Allura/allura/tests/functional/test_gravatar.py
@@ -15,7 +15,7 @@
 #       specific language governing permissions and limitations
 #       under the License.
 
-from six.moves.urllib.parse import urlparse, parse_qs
+from urllib.parse import urlparse, parse_qs
 
 import tg
 from mock import patch
diff --git a/Allura/allura/tests/functional/test_newforge.py 
b/Allura/allura/tests/functional/test_newforge.py
index 9b8fbc01a..92b4cfe01 100644
--- a/Allura/allura/tests/functional/test_newforge.py
+++ b/Allura/allura/tests/functional/test_newforge.py
@@ -16,7 +16,7 @@
 #       under the License.
 
 
-from six.moves.urllib.parse import quote
+from urllib.parse import quote
 
 from allura.tests import TestController
 from allura.tests import decorators as td
diff --git a/Allura/allura/tests/test_helpers.py 
b/Allura/allura/tests/test_helpers.py
index 8b93283b1..9db093a81 100644
--- a/Allura/allura/tests/test_helpers.py
+++ b/Allura/allura/tests/test_helpers.py
@@ -485,7 +485,7 @@ class TestUrlOpen(TestCase):
 
     @patch('six.moves.urllib.request.urlopen')
     def test_handled_http_error(self, urlopen):
-        from six.moves.urllib.error import HTTPError
+        from urllib.error import HTTPError
 
         def side_effect(url, timeout=None):
             raise HTTPError('url', 408, 'timeout', None, io.BytesIO())
@@ -496,7 +496,7 @@ class TestUrlOpen(TestCase):
 
     @patch('six.moves.urllib.request.urlopen')
     def test_unhandled_http_error(self, urlopen):
-        from six.moves.urllib.error import HTTPError
+        from urllib.error import HTTPError
 
         def side_effect(url, timeout=None):
             raise HTTPError('url', 404, 'timeout', None, io.BytesIO())
diff --git a/Allura/allura/tests/test_mail_util.py 
b/Allura/allura/tests/test_mail_util.py
index b0454ac12..76fd42965 100644
--- a/Allura/allura/tests/test_mail_util.py
+++ b/Allura/allura/tests/test_mail_util.py
@@ -16,8 +16,8 @@
 #       under the License.
 
 import unittest
-from six.moves.email_mime_multipart import MIMEMultipart
-from six.moves.email_mime_text import MIMEText
+from email.mime.multipart import MIMEMultipart
+from email.mime.text import MIMEText
 
 import mock
 import pytest
diff --git a/Allura/ldap-setup.py b/Allura/ldap-setup.py
index 8b80b238b..baf5432ac 100644
--- a/Allura/ldap-setup.py
+++ b/Allura/ldap-setup.py
@@ -23,7 +23,7 @@ import string
 import logging
 from contextlib import contextmanager
 from tempfile import mkstemp
-from six.moves.configparser import ConfigParser, NoOptionError
+from configparser import ConfigParser, NoOptionError
 
 logging.basicConfig(level=logging.DEBUG)
 log = logging.getLogger('ldap-setup')
diff --git a/AlluraTest/alluratest/test_syntax.py 
b/AlluraTest/alluratest/test_syntax.py
index 39eef5302..c4feb0b9e 100644
--- a/AlluraTest/alluratest/test_syntax.py
+++ b/AlluraTest/alluratest/test_syntax.py
@@ -20,7 +20,7 @@ from subprocess import Popen, PIPE
 import sys
 
 from unittest import SkipTest
-from six.moves import zip_longest
+from itertools import zip_longest
 
 toplevel_dir = os.path.abspath(os.path.dirname(__file__) + "/../..")
 BASE_PATH = (toplevel_dir,) #freeze main path
diff --git a/ForgeActivity/forgeactivity/main.py 
b/ForgeActivity/forgeactivity/main.py
index ec2ca318c..5d85145da 100644
--- a/ForgeActivity/forgeactivity/main.py
+++ b/ForgeActivity/forgeactivity/main.py
@@ -149,7 +149,7 @@ class ForgeActivityController(BaseController):
                 else:
                     # fix gravatar urls with old default avatar urls in them
                     t.actor.activity_extras.icon_url = re.sub(r'([&?])d=[^&]*',
-                                                              
r'\1d={}'.format(default_avatar),
+                                                              
fr'\1d={default_avatar}',
                                                               
t.actor.activity_extras.icon_url)
             if t.actor.activity_url:
                 t.actor.activity_url = f'{t.actor.activity_url}profile/'
diff --git a/ForgeChat/forgechat/command.py b/ForgeChat/forgechat/command.py
index e3475b063..39999c75e 100644
--- a/ForgeChat/forgechat/command.py
+++ b/ForgeChat/forgechat/command.py
@@ -23,7 +23,7 @@ import socket
 import asyncore
 import asynchat
 import random
-from six.moves.urllib.parse import urljoin
+from urllib.parse import urljoin
 from datetime import datetime, timedelta
 
 import tg
diff --git a/ForgeDiscussion/forgediscussion/controllers/root.py 
b/ForgeDiscussion/forgediscussion/controllers/root.py
index d1a9ac9cb..212245f79 100644
--- a/ForgeDiscussion/forgediscussion/controllers/root.py
+++ b/ForgeDiscussion/forgediscussion/controllers/root.py
@@ -19,7 +19,7 @@ import json
 import logging
 
 import six
-from six.moves.urllib.parse import unquote
+from urllib.parse import unquote
 from datetime import date, datetime, timedelta, time
 import calendar
 from collections import OrderedDict
diff --git a/ForgeDiscussion/forgediscussion/tests/functional/test_forum.py 
b/ForgeDiscussion/forgediscussion/tests/functional/test_forum.py
index 7c2fb9913..18e2a3f93 100644
--- a/ForgeDiscussion/forgediscussion/tests/functional/test_forum.py
+++ b/ForgeDiscussion/forgediscussion/tests/functional/test_forum.py
@@ -19,9 +19,9 @@ import mock
 import pytest
 import random
 import logging
-from six.moves.email_mime_text import MIMEText
-from six.moves.email_mime_image import MIMEImage
-from six.moves.email_mime_multipart import MIMEMultipart
+from email.mime.text import MIMEText
+from email.mime.image import MIMEImage
+from email.mime.multipart import MIMEMultipart
 
 import pkg_resources
 import pymongo
diff --git a/ForgeFiles/forgefiles/files_main.py 
b/ForgeFiles/forgefiles/files_main.py
index 12c0ac652..98517a6ed 100755
--- a/ForgeFiles/forgefiles/files_main.py
+++ b/ForgeFiles/forgefiles/files_main.py
@@ -18,7 +18,7 @@
 '''This is the main controller module for the Files Plugin.'''
 
 import logging
-from six.moves.urllib.parse import unquote
+from urllib.parse import unquote
 
 from tg import config, redirect, expose, flash
 from tg.decorators import with_trailing_slash, without_trailing_slash
diff --git a/ForgeFiles/forgefiles/model/files.py 
b/ForgeFiles/forgefiles/model/files.py
index e2de35082..43d0af0af 100755
--- a/ForgeFiles/forgefiles/model/files.py
+++ b/ForgeFiles/forgefiles/model/files.py
@@ -20,7 +20,7 @@ Upload, UploadFolder & UploadFile are the collections'''
 
 from datetime import datetime
 
-from six.moves.urllib.parse import quote
+from urllib.parse import quote
 import re
 import typing
 
diff --git a/ForgeGit/forgegit/model/git_repo.py 
b/ForgeGit/forgegit/model/git_repo.py
index 4979a7dc3..37758f5d6 100644
--- a/ForgeGit/forgegit/model/git_repo.py
+++ b/ForgeGit/forgegit/model/git_repo.py
@@ -78,7 +78,7 @@ class Repository(M.Repository):
     class __mongometa__:
         name = 'git-repository'
 
-    query: 'Query[Repository]'
+    query: Query[Repository]
 
     @LazyProperty
     def _impl(self):
diff --git a/ForgeImporters/forgeimporters/base.py 
b/ForgeImporters/forgeimporters/base.py
index 8119d7f35..f21539c29 100644
--- a/ForgeImporters/forgeimporters/base.py
+++ b/ForgeImporters/forgeimporters/base.py
@@ -25,8 +25,8 @@ import six.moves.urllib.parse
 import six.moves.urllib.error
 from collections import defaultdict
 import traceback
-from six.moves.urllib.parse import urlparse
-from six.moves.urllib.parse import unquote
+from urllib.parse import urlparse
+from urllib.parse import unquote
 from datetime import datetime
 import six
 
diff --git a/ForgeImporters/forgeimporters/github/tracker.py 
b/ForgeImporters/forgeimporters/github/tracker.py
index f277a424e..334843542 100644
--- a/ForgeImporters/forgeimporters/github/tracker.py
+++ b/ForgeImporters/forgeimporters/github/tracker.py
@@ -18,7 +18,7 @@
 import re
 import logging
 from datetime import datetime
-from six.moves.urllib.error import HTTPError
+from urllib.error import HTTPError
 import six
 from io import BytesIO
 
diff --git a/ForgeImporters/forgeimporters/tests/github/test_tracker.py 
b/ForgeImporters/forgeimporters/tests/github/test_tracker.py
index 15c575c75..faf378381 100644
--- a/ForgeImporters/forgeimporters/tests/github/test_tracker.py
+++ b/ForgeImporters/forgeimporters/tests/github/test_tracker.py
@@ -18,7 +18,7 @@
 from datetime import datetime
 from operator import itemgetter
 from unittest import TestCase
-from six.moves.urllib.error import HTTPError
+from urllib.error import HTTPError
 import mock
 
 from ...github import tracker
diff --git a/ForgeTracker/forgetracker/tracker_main.py 
b/ForgeTracker/forgetracker/tracker_main.py
index 1a93e9166..d2dcc20cf 100644
--- a/ForgeTracker/forgetracker/tracker_main.py
+++ b/ForgeTracker/forgetracker/tracker_main.py
@@ -18,7 +18,7 @@
 import logging
 import re
 from datetime import datetime, timedelta
-from six.moves.urllib.parse import urlencode, unquote
+from urllib.parse import urlencode, unquote
 from webob import exc
 import json
 import os
diff --git a/ForgeWiki/forgewiki/wiki_main.py b/ForgeWiki/forgewiki/wiki_main.py
index e7d44c749..1414d2235 100644
--- a/ForgeWiki/forgewiki/wiki_main.py
+++ b/ForgeWiki/forgewiki/wiki_main.py
@@ -21,7 +21,7 @@ import os
 from pprint import pformat
 
 import six
-from six.moves.urllib.parse import unquote, urlencode
+from urllib.parse import unquote, urlencode
 
 # Non-stdlib imports
 from tg import expose, validate, redirect, flash, jsonify
@@ -411,7 +411,7 @@ class RootController(BaseController, DispatchIndex, 
FeedController):
         self._discuss = AppDiscussionController()
 
     def catch_all(self, *args, **kw):
-        url = '/{}/?{}'.format(request.controller_url, urlencode(kw))
+        url = f'/{request.controller_url}/?{urlencode(kw)}'
         redirect(h.urlquote(h.really_unicode(url)))
 
     def _check_security(self):
diff --git a/scripts/teamforge-import.py b/scripts/teamforge-import.py
index ff72c8398..939ae1e7f 100644
--- a/scripts/teamforge-import.py
+++ b/scripts/teamforge-import.py
@@ -24,13 +24,13 @@ import os
 from time import mktime
 import time
 import json
-from six.moves.urllib.parse import urlparse
+from urllib.parse import urlparse
 import six.moves.urllib.request
 import six.moves.urllib.parse
 import six.moves.urllib.error
-from six.moves.http_cookiejar import CookieJar
+from http.cookiejar import CookieJar
 from datetime import datetime
-from six.moves.configparser import ConfigParser
+from configparser import ConfigParser
 import random
 import string
 


Reply via email to