You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by ke...@apache.org on 2021/09/17 18:45:07 UTC

[allura] branch master updated (96787ed -> 06b8808)

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

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


    from 96787ed  Show multifactor setup key in addition to QR code
     new 2314636  [#8396] Revert "[#8386] remove chardet, make requests library still work"
     new 4f0db91  [#8396] restore nose cmd
     new 6d890cc  [#8396] upgrade requests, depend on charset-normalizer now
     new fe7829f  [#8396] upgrade requests deps
     new 1dd4d3d  [#8396] upgrade feedparser
     new bccd290  [#8396] upgrade inflection (from profanity filter, for ForgeFeedback)
     new fd1d335  [#8396] remove dependency on ipython
     new e3318c1  [#8396] upgrade colander and its dependencies
     new 19f35ce  [#8396] upgrade pysolr
     new 8aa8a77  [#8396] upgrade python-magic
     new 563ef7c  [#8396] upgrade setproctitle
     new e71b75c  [#8396] upgrade gitpython
     new fbc9f2b  [#8396] allow newer akismet
     new b70ea02  [#8396] upgrade beautifulsoup4
     new d8dd599  [#8396] upgrade decorator
     new d5c51f6  [#8396] upgrade html5lib
     new 1f8fb81  [#8396] upgrade markupsafe
     new 06b8808  [#8396] upgrade webtest and dep

The 18 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 Allura/allura/command/show_models.py               | 22 ------
 Allura/allura/lib/custom_middleware.py             |  2 +-
 Allura/allura/lib/helpers.py                       | 16 -----
 Allura/allura/lib/phone/nexmo.py                   |  1 -
 Allura/allura/lib/project_create_helpers.py        |  2 +-
 Allura/allura/lib/search.py                        | 16 ++++-
 Allura/allura/lib/security.py                      |  2 +-
 Allura/allura/lib/solr.py                          |  5 +-
 Allura/allura/lib/utils.py                         | 20 +-----
 Allura/allura/tests/functional/test_root.py        |  6 +-
 Allura/allura/tests/test_helpers.py                |  7 +-
 Allura/allura/webhooks.py                          |  2 +-
 Allura/docs/getting_started/install_each_step.rst  |  2 +-
 Allura/docs/getting_started/installation.rst       |  2 +-
 AlluraTest/alluratest/tools.py                     | 57 ++++++++++++---
 AlluraTest/alluratest/validation.py                |  3 +-
 ForgeBlog/forgeblog/tests/test_commands.py         |  5 +-
 ForgeImporters/forgeimporters/github/__init__.py   |  1 -
 .../forgeimporters/github/tests/test_wiki.py       | 18 ++---
 .../tests/github/functional/test_github.py         |  2 +-
 ForgeImporters/forgeimporters/trac/__init__.py     |  1 -
 .../forgeimporters/trac/tests/test_tickets.py      |  6 +-
 .../forgesvn/tests/functional/test_controllers.py  |  8 +--
 ForgeSVN/forgesvn/tests/model/test_repository.py   |  7 +-
 ForgeWiki/forgewiki/tests/test_converters.py       |  7 +-
 requirements-dev.txt                               | 10 +--
 requirements-optional.txt                          |  2 +-
 requirements.in                                    | 17 ++---
 requirements.txt                                   | 82 ++++++++--------------
 update.sh                                          |  6 +-
 30 files changed, 158 insertions(+), 179 deletions(-)

[allura] 14/18: [#8396] upgrade beautifulsoup4

Posted by ke...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit b70ea0206c5b42a5fede8b5be446867e45cd75da
Author: Dave Brondsema <db...@slashdotmedia.com>
AuthorDate: Mon Sep 13 19:10:25 2021 +0000

    [#8396] upgrade beautifulsoup4
---
 requirements.txt | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/requirements.txt b/requirements.txt
index 2b7dc0f..c28cd6c 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -8,7 +8,7 @@ activitystream==0.3.0
     # via -r requirements.in
 beaker==1.10.1
     # via -r requirements.in
-beautifulsoup4==4.8.0
+beautifulsoup4==4.10.0
     # via
     #   -r requirements.in
     #   webtest
@@ -182,7 +182,7 @@ six==1.15.0
     #   webtest
 smmap==4.0.0
     # via gitdb
-soupsieve==1.9.3
+soupsieve==2.2.1
     # via beautifulsoup4
 testfixtures==6.10.0
     # via -r requirements.in

[allura] 15/18: [#8396] upgrade decorator

Posted by ke...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit d8dd59967d5e73977300d837eb21e43f0e7fcbd1
Author: Dave Brondsema <db...@slashdotmedia.com>
AuthorDate: Mon Sep 13 19:16:35 2021 +0000

    [#8396] upgrade decorator
    
    rewrite one @decorator due to
    https://github.com/micheles/decorator/issues/109
---
 AlluraTest/alluratest/tools.py | 39 +++++++++++++++++++++++++++++----------
 requirements.txt               |  2 +-
 2 files changed, 30 insertions(+), 11 deletions(-)

diff --git a/AlluraTest/alluratest/tools.py b/AlluraTest/alluratest/tools.py
index 8831b12..71a9a6a 100644
--- a/AlluraTest/alluratest/tools.py
+++ b/AlluraTest/alluratest/tools.py
@@ -14,24 +14,28 @@
 #       KIND, either express or implied.  See the License for the
 #       specific language governing permissions and limitations
 #       under the License.
-
+import functools
 import unittest
 
 from decorator import decorator
 
 testcase = unittest.TestCase(methodName='__init__')  # py2 needs a methodName that is a valid attr :/
 
+
 def with_setup(setup, teardown=None):
     # this might have subtle ordering differences from a true "setup" method, esp. if other decorators are involved
-    @decorator
-    def inner_with_setup(func, *a, **kw):
-        try:
-            setup()
-            return func(*a, **kw)
-        finally:
-            if teardown:
-                teardown()
-    return inner_with_setup
+    def with_setup__wrapper(func):
+        @functools.wraps(func)
+        def with_setup__decorated(*a, **kw):
+            try:
+                setup()
+                return func(*a, **kw)
+            finally:
+                if teardown:
+                    teardown()
+        return with_setup__decorated
+    return with_setup__wrapper
+
 
 def raises(ExcType):
     @decorator
@@ -40,48 +44,63 @@ def raises(ExcType):
             return func(*a, **kw)
     return inner_raises
 
+
 def assert_equal(*a, **kw):
     return testcase.assertEqual(*a, **kw)
 
+
 def assert_equals(*a, **kw):
     return testcase.assertEquals(*a, **kw)
 
+
 def assert_not_equal(*a, **kw):
     return testcase.assertNotEqual(*a, **kw)
 
+
 def assert_raises(*a, **kw):
     return testcase.assertRaises(*a, **kw)
 
+
 def assert_is_none(*a, **kw):
     return testcase.assertIsNone(*a, **kw)
 
+
 def assert_is_not_none(*a, **kw):
     return testcase.assertIsNotNone(*a, **kw)
 
+
 def assert_is(*a, **kw):
     return testcase.assertIs(*a, **kw)
 
+
 def assert_true(*a, **kw):
     return testcase.assertTrue(*a, **kw)
 
+
 def assert_false(*a, **kw):
     return testcase.assertFalse(*a, **kw)
 
+
 def assert_in(*a, **kw):
     return testcase.assertIn(*a, **kw)
 
+
 def assert_not_in(*a, **kw):
     return testcase.assertNotIn(*a, **kw)
 
+
 def assert_less(*a, **kw):
     return testcase.assertLess(*a, **kw)
 
+
 def assert_greater(*a, **kw):
     return testcase.assertGreater(*a, **kw)
 
+
 def assert_greater_equal(*a, **kw):
     return testcase.assertGreaterEqual(*a, **kw)
 
+
 def assert_regexp_matches(*a, **kw):
     return testcase.assertRegexpMatches(*a, **kw)
 
diff --git a/requirements.txt b/requirements.txt
index c28cd6c..2132c71 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -32,7 +32,7 @@ cryptography==3.3.2
     # via -r requirements.in
 datadiff==2.0.0
     # via -r requirements.in
-decorator==4.4.0
+decorator==5.1.0
     # via -r requirements.in
 docutils==0.15.2
     # via pypeline

[allura] 02/18: [#8396] restore nose cmd

Posted by ke...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 4f0db916f6f231f0902c9d8ff13df7e14ed6dcdc
Author: Dave Brondsema <db...@slashdotmedia.com>
AuthorDate: Fri Sep 10 18:00:18 2021 +0000

    [#8396] restore nose cmd
---
 .travis.yml | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/.travis.yml b/.travis.yml
index ced0267..4d90096 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -26,7 +26,8 @@ jobs:
         - pip install https://sourceforge.net/projects/pysvn/files/pysvn/V1.9.12/pysvn-1.9.12.tar.gz
 install:
   - sudo apt-get install -qq libjpeg8-dev zlib1g-dev
-  - pip install -r requirements.txt
+  - pip install nose
+  - pip install -r requirements.txt --no-deps --upgrade --upgrade-strategy=only-if-needed
   - npm install
 script:
   - ./rebuild-all.bash

[allura] 07/18: [#8396] remove dependency on ipython

Posted by ke...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit fd1d33563d95abb45f3adb3fbfa95ddd584a476c
Author: Dave Brondsema <db...@slashdotmedia.com>
AuthorDate: Fri Sep 10 21:02:06 2021 +0000

    [#8396] remove dependency on ipython
---
 Allura/allura/command/show_models.py               | 22 ----------------
 Allura/allura/lib/utils.py                         | 20 +++------------
 Allura/allura/tests/functional/test_root.py        |  6 ++---
 Allura/allura/tests/test_helpers.py                |  7 +++---
 AlluraTest/alluratest/tools.py                     | 18 ++++++++++++++
 ForgeBlog/forgeblog/tests/test_commands.py         |  5 ++--
 .../forgeimporters/github/tests/test_wiki.py       | 18 +++++++-------
 .../forgeimporters/trac/tests/test_tickets.py      |  6 ++---
 .../forgesvn/tests/functional/test_controllers.py  |  8 +++---
 ForgeSVN/forgesvn/tests/model/test_repository.py   |  7 +++---
 ForgeWiki/forgewiki/tests/test_converters.py       |  7 ++++--
 requirements.in                                    |  1 -
 requirements.txt                                   | 29 ++--------------------
 13 files changed, 57 insertions(+), 97 deletions(-)

diff --git a/Allura/allura/command/show_models.py b/Allura/allura/command/show_models.py
index f4623de..b0fb3ac 100644
--- a/Allura/allura/command/show_models.py
+++ b/Allura/allura/command/show_models.py
@@ -385,25 +385,3 @@ def dfs(root, graph, depth=0):
     for node in graph[root][1]:
         for r in dfs(node, graph, depth + 1):
             yield r
-
-
-def pm(etype, value, tb):  # pragma no cover
-    import pdb
-    import traceback
-    try:
-        from IPython.ipapi import make_session
-        make_session()
-        from IPython.Debugger import Pdb
-        sys.stderr.write('Entering post-mortem IPDB shell\n')
-        p = Pdb(color_scheme='Linux')
-        p.reset()
-        p.setup(None, tb)
-        p.print_stack_trace()
-        sys.stderr.write('%s: %s\n' % (etype, value))
-        p.cmdloop()
-        p.forget()
-        # p.interaction(None, tb)
-    except ImportError:
-        sys.stderr.write('Entering post-mortem PDB shell\n')
-        traceback.print_exception(etype, value, tb)
-        pdb.post_mortem(tb)
diff --git a/Allura/allura/lib/utils.py b/Allura/allura/lib/utils.py
index 3f566a3..5adc4f4 100644
--- a/Allura/allura/lib/utils.py
+++ b/Allura/allura/lib/utils.py
@@ -440,23 +440,9 @@ def postmortem_hook(etype, value, tb):  # pragma no cover
     import sys
     import pdb
     import traceback
-    try:
-        from IPython.ipapi import make_session
-        make_session()
-        from IPython.Debugger import Pdb
-        sys.stderr.write('Entering post-mortem IPDB shell\n')
-        p = Pdb(color_scheme='Linux')
-        p.reset()
-        p.setup(None, tb)
-        p.print_stack_trace()
-        sys.stderr.write('%s: %s\n' % (etype, value))
-        p.cmdloop()
-        p.forget()
-        # p.interaction(None, tb)
-    except ImportError:
-        sys.stderr.write('Entering post-mortem PDB shell\n')
-        traceback.print_exception(etype, value, tb)
-        pdb.post_mortem(tb)
+    sys.stderr.write('Entering post-mortem PDB shell\n')
+    traceback.print_exception(etype, value, tb)
+    pdb.post_mortem(tb)
 
 
 class LineAnchorCodeHtmlFormatter(HtmlFormatter):
diff --git a/Allura/allura/tests/functional/test_root.py b/Allura/allura/tests/functional/test_root.py
index 3caf217..31efd55 100644
--- a/Allura/allura/tests/functional/test_root.py
+++ b/Allura/allura/tests/functional/test_root.py
@@ -31,14 +31,14 @@ Please read http://pythonpaste.org/webtest/ for more information.
 from __future__ import unicode_literals
 from __future__ import absolute_import
 import os
+from unittest import skipIf
 
 import six
 
 from tg import tmpl_context as c
-from alluratest.tools import assert_equal, assert_in
+from alluratest.tools import assert_equal, module_not_available
 from ming.orm.ormsession import ThreadLocalORMSession
 import mock
-from IPython.testing.decorators import module_not_available, skipif
 
 from allura.tests import decorators as td
 from allura.tests import TestController
@@ -177,7 +177,7 @@ class TestRootController(TestController):
         self.app.get('/p', status=301)
         self.app.get('/p/', status=302)
 
-    @skipif(module_not_available('newrelic'))
+    @skipIf(module_not_available('newrelic'), 'requires newrelic')
     def test_newrelic_set_transaction_name(self):
         from allura.controllers.project import NeighborhoodController
         with mock.patch('newrelic.agent.callable_name') as callable_name,\
diff --git a/Allura/allura/tests/test_helpers.py b/Allura/allura/tests/test_helpers.py
index 4e35c01..d743a95 100644
--- a/Allura/allura/tests/test_helpers.py
+++ b/Allura/allura/tests/test_helpers.py
@@ -19,7 +19,7 @@
 
 from __future__ import unicode_literals
 from __future__ import absolute_import
-from unittest import TestCase
+from unittest import TestCase, skipIf
 from os import path
 from datetime import datetime, timedelta
 import time
@@ -27,8 +27,7 @@ import time
 import PIL
 from mock import Mock, patch
 from tg import tmpl_context as c
-from alluratest.tools import assert_equals, assert_raises
-from IPython.testing.decorators import skipif, module_not_available
+from alluratest.tools import assert_equals, assert_raises, module_not_available
 from datadiff import tools as dd
 from webob import Request
 from webob.exc import HTTPUnauthorized
@@ -368,7 +367,7 @@ def test_notifications_disabled():
     assert_equals(project.notifications_disabled, False)
 
 
-@skipif(module_not_available('html2text'))
+@skipIf(module_not_available('html2text'), 'html2text required')
 def test_plain2markdown_with_html2text():
     """Test plain2markdown using html2text to escape markdown, if available."""
     text = '''paragraph
diff --git a/AlluraTest/alluratest/tools.py b/AlluraTest/alluratest/tools.py
index dd3e4d2..8831b12 100644
--- a/AlluraTest/alluratest/tools.py
+++ b/AlluraTest/alluratest/tools.py
@@ -84,3 +84,21 @@ def assert_greater_equal(*a, **kw):
 
 def assert_regexp_matches(*a, **kw):
     return testcase.assertRegexpMatches(*a, **kw)
+
+
+#
+# copied from IPython.testing.decorators
+#   BSD license
+def module_not_available(module):
+    """Can module be imported?  Returns true if module does NOT import.
+
+    This is used to make a decorator to skip tests that require module to be
+    available, but delay the 'import numpy' to test execution time.
+    """
+    try:
+        mod = __import__(module)
+        mod_not_avail = False
+    except ImportError:
+        mod_not_avail = True
+
+    return mod_not_avail
diff --git a/ForgeBlog/forgeblog/tests/test_commands.py b/ForgeBlog/forgeblog/tests/test_commands.py
index addc8ee..b275067 100644
--- a/ForgeBlog/forgeblog/tests/test_commands.py
+++ b/ForgeBlog/forgeblog/tests/test_commands.py
@@ -20,7 +20,7 @@ from __future__ import absolute_import
 from datetime import datetime, timedelta
 from tg import app_globals as g
 from datadiff.tools import assert_equal
-from IPython.testing.decorators import module_not_available, skipif
+from unittest import skipIf
 import pkg_resources
 import mock
 import feedparser
@@ -28,6 +28,7 @@ import feedparser
 from ming.orm.ormsession import ThreadLocalORMSession
 
 from alluratest.controller import setup_basic_test, setup_global_objects
+from alluratest.tools import module_not_available
 from allura import model as M
 from forgeblog import model as BM
 
@@ -71,7 +72,7 @@ def _mock_feed(*entries):
 _mock_feed.i = 0
 
 
-@skipif(module_not_available('html2text'))
+@skipIf(module_not_available('html2text'), 'requires html2text')
 @mock.patch.object(feedparser, 'parse')
 def test_pull_rss_feeds(parsefeed):
     html_content = (
diff --git a/ForgeImporters/forgeimporters/github/tests/test_wiki.py b/ForgeImporters/forgeimporters/github/tests/test_wiki.py
index 578a875..1be0a94 100644
--- a/ForgeImporters/forgeimporters/github/tests/test_wiki.py
+++ b/ForgeImporters/forgeimporters/github/tests/test_wiki.py
@@ -19,17 +19,17 @@
 
 from __future__ import unicode_literals
 from __future__ import absolute_import
-from unittest import TestCase
+from unittest import TestCase, skipIf
 from alluratest.tools import assert_equal
 from mock import Mock, patch, call
 from ming.odm import ThreadLocalORMSession
 import git
 
-from IPython.testing.decorators import module_not_available, skipif
 from allura import model as M
 from allura.tests import TestController
 from allura.tests.decorators import with_tool, without_module
 from alluratest.controller import setup_basic_test
+from alluratest.tools import module_not_available
 from forgeimporters.github.wiki import GitHubWikiImporter
 from forgeimporters.github.utils import GitHubMarkdownConverter
 from forgeimporters.github import GitHubOAuthMixin
@@ -187,7 +187,7 @@ class TestGitHubWikiImporter(TestCase):
         assert_equal(render.call_args_list,
                      [call('Home.rst', '# test message')])
 
-    @skipif(module_not_available('html2text'))
+    @skipIf(module_not_available('html2text'), 'html2text required')
     @patch('forgeimporters.github.wiki.WM.Page.upsert')
     @patch('forgeimporters.github.wiki.mediawiki2markdown')
     def test_with_history_mediawiki(self, md2mkm, upsert):
@@ -300,7 +300,7 @@ Our website is <http://domain.net>.
 
         assert_equal(f(source), result)
 
-    @skipif(module_not_available('html2text'))
+    @skipIf(module_not_available('html2text'), 'html2text required')
     def test_convert_markup(self):
         importer = GitHubWikiImporter()
         importer.github_wiki_url = 'https://github.com/a/b/wiki'
@@ -403,7 +403,7 @@ Our website is [[http://domain.net]].
               prefix, new),
             '<a href="/p/test/wiki/Test Page">Test <b>Page</b></a>')
 
-    @skipif(module_not_available('html2text'))
+    @skipIf(module_not_available('html2text'), 'html2text required')
     def test_convert_markup_with_mediawiki2markdown(self):
         importer = GitHubWikiImporter()
         importer.github_wiki_url = 'https://github.com/a/b/wiki'
@@ -431,7 +431,7 @@ Our website is [[http://domain.net]].
 
         assert_equal(f(source, 'test.mediawiki'), result)
 
-    @skipif(module_not_available('html2text'))
+    @skipIf(module_not_available('html2text'), 'html2text required')
     def test_convert_textile_no_leading_tabs(self):
         importer = GitHubWikiImporter()
         importer.github_wiki_url = 'https://github.com/a/b/wiki'
@@ -455,7 +455,7 @@ Some text 1.
 See [Page]'''
         assert_equal(f(source, 'test.textile').strip(), result)
 
-    @skipif(module_not_available('html2text'))
+    @skipIf(module_not_available('html2text'), 'html2text required')
     def test_convert_markup_with_amp_in_links(self):
         importer = GitHubWikiImporter()
         importer.github_wiki_url = 'https://github.com/a/b/wiki'
@@ -467,7 +467,7 @@ See [Page]'''
         # markdown should be untouched
         assert_equal(f(source, 'test.rst').strip(), result)
 
-    @skipif(module_not_available('html2text'))
+    @skipIf(module_not_available('html2text'), 'html2text required')
     def test_convert_markup_textile(self):
         importer = GitHubWikiImporter()
         importer.github_wiki_url = 'https://github.com/a/b/wiki'
@@ -513,7 +513,7 @@ some text and **[Tips n\u2019 Tricks]**
 '''
         assert_equal(f(source, 'test3.textile'), result)
 
-    @skipif(module_not_available('html2text'))
+    @skipIf(module_not_available('html2text'), 'html2text required')
     def test_convert_textile_special_tag(self):
         importer = GitHubWikiImporter()
         importer.github_wiki_url = 'https://github.com/a/b/wiki'
diff --git a/ForgeImporters/forgeimporters/trac/tests/test_tickets.py b/ForgeImporters/forgeimporters/trac/tests/test_tickets.py
index a942fd5..0b010e0 100644
--- a/ForgeImporters/forgeimporters/trac/tests/test_tickets.py
+++ b/ForgeImporters/forgeimporters/trac/tests/test_tickets.py
@@ -20,15 +20,15 @@ from __future__ import absolute_import
 import json
 import os
 
-from unittest import TestCase
+from unittest import TestCase, skipIf
 from mock import Mock, patch
 from ming.orm import ThreadLocalORMSession
 from tg import tmpl_context as c
-from IPython.testing.decorators import module_not_available, skipif
 
 from allura.tests import TestController
 from allura.tests.decorators import with_tracker
 from alluratest.controller import TestRestApiBase, setup_unit_test
+from alluratest.tools import module_not_available
 
 from allura import model as M
 from forgetracker import model as TM
@@ -262,7 +262,7 @@ class TestTracImportSupportFunctional(TestRestApiBase, TestCase):
             import_support.get_slug_by_id('204', '2'), comments[1].slug)
 
     @with_tracker
-    @skipif(module_not_available('html2text'))
+    @skipIf(module_not_available('html2text'), 'html2text required')
     def test_list(self):
         from allura.scripts.trac_export import TracExport, DateJSONEncoder
         csv_fp = open(os.path.dirname(__file__) + '/data/test-list.csv')
diff --git a/ForgeSVN/forgesvn/tests/functional/test_controllers.py b/ForgeSVN/forgesvn/tests/functional/test_controllers.py
index 116542c..99100f3 100644
--- a/ForgeSVN/forgesvn/tests/functional/test_controllers.py
+++ b/ForgeSVN/forgesvn/tests/functional/test_controllers.py
@@ -23,6 +23,7 @@ import json
 import re
 import shutil
 import os
+from unittest import skipUnless
 
 import six
 import tg
@@ -31,7 +32,6 @@ from tg import tmpl_context as c
 from ming.orm import ThreadLocalORMSession
 from mock import patch
 from alluratest.tools import assert_equal, assert_in
-from IPython.testing.decorators import onlyif
 
 from allura import model as M
 from allura.lib import helpers as h
@@ -230,7 +230,7 @@ class TestRootController(SVNTestController):
         r = self.app.get('/src/2/log/?path=does/not/exist/')
         assert 'No (more) commits' in r
 
-    @onlyif(os.path.exists(tg.config.get('scm.repos.tarball.zip_binary', '/usr/bin/zip')), 'zip binary is missing')
+    @skipUnless(os.path.exists(tg.config.get('scm.repos.tarball.zip_binary', '/usr/bin/zip')), 'zip binary is missing')
     def test_tarball(self):
         r = self.app.get('/src/3/tree/')
         assert 'Download Snapshot' in r
@@ -245,7 +245,7 @@ class TestRootController(SVNTestController):
         r = self.app.get('/src/3/tarball')
         assert 'Your download will begin shortly' in r
 
-    @onlyif(os.path.exists(tg.config.get('scm.repos.tarball.zip_binary', '/usr/bin/zip')), 'zip binary is missing')
+    @skipUnless(os.path.exists(tg.config.get('scm.repos.tarball.zip_binary', '/usr/bin/zip')), 'zip binary is missing')
     def test_tarball_cyrillic(self):
         r = self.app.get('/src/6/tree/')
         assert 'Download Snapshot' in r
@@ -260,7 +260,7 @@ class TestRootController(SVNTestController):
         r = self.app.get('/src/6/tarball')
         assert 'Your download will begin shortly' in r
 
-    @onlyif(os.path.exists(tg.config.get('scm.repos.tarball.zip_binary', '/usr/bin/zip')), 'zip binary is missing')
+    @skipUnless(os.path.exists(tg.config.get('scm.repos.tarball.zip_binary', '/usr/bin/zip')), 'zip binary is missing')
     def test_tarball_path(self):
         h.set_context('test', 'svn-tags', neighborhood='Projects')
         shutil.rmtree(c.app.repo.tarball_path, ignore_errors=True)
diff --git a/ForgeSVN/forgesvn/tests/model/test_repository.py b/ForgeSVN/forgesvn/tests/model/test_repository.py
index 6781b9f..f71a787 100644
--- a/ForgeSVN/forgesvn/tests/model/test_repository.py
+++ b/ForgeSVN/forgesvn/tests/model/test_repository.py
@@ -22,6 +22,8 @@ from __future__ import absolute_import
 import os
 import shutil
 import unittest
+from unittest import skipUnless
+
 import pkg_resources
 from itertools import count, product
 from datetime import datetime
@@ -38,7 +40,6 @@ import ming
 from ming.base import Object
 from ming.orm import session, ThreadLocalORMSession
 from testfixtures import TempDirectory
-from IPython.testing.decorators import onlyif
 
 from alluratest.controller import setup_basic_test, setup_global_objects
 from allura import model as M
@@ -434,7 +435,7 @@ class TestSVNRepo(unittest.TestCase, RepoImplTestBase):
                 revision=pysvn.Revision.return_value,
                 recurse=False)
 
-    @onlyif(os.path.exists(tg.config.get('scm.repos.tarball.zip_binary', '/usr/bin/zip')), 'zip binary is missing')
+    @skipUnless(os.path.exists(tg.config.get('scm.repos.tarball.zip_binary', '/usr/bin/zip')), 'zip binary is missing')
     def test_tarball(self):
         tmpdir = tg.config['scm.repos.tarball.root']
         assert_equal(self.repo.tarball_path,
@@ -451,7 +452,7 @@ class TestSVNRepo(unittest.TestCase, RepoImplTestBase):
         shutil.rmtree(self.repo.tarball_path.encode('utf-8'),
                       ignore_errors=True)
 
-    @onlyif(os.path.exists(tg.config.get('scm.repos.tarball.zip_binary', '/usr/bin/zip')), 'zip binary is missing')
+    @skipUnless(os.path.exists(tg.config.get('scm.repos.tarball.zip_binary', '/usr/bin/zip')), 'zip binary is missing')
     def test_tarball_paths(self):
         rev = '19'
         h.set_context('test', 'svn-tags', neighborhood='Projects')
diff --git a/ForgeWiki/forgewiki/tests/test_converters.py b/ForgeWiki/forgewiki/tests/test_converters.py
index 398c0a8..bd8fa4d 100644
--- a/ForgeWiki/forgewiki/tests/test_converters.py
+++ b/ForgeWiki/forgewiki/tests/test_converters.py
@@ -17,12 +17,15 @@
 
 from __future__ import unicode_literals
 from __future__ import absolute_import
-from IPython.testing.decorators import module_not_available, skipif
+
+from unittest import skipIf
+
+from alluratest.tools import module_not_available
 
 from forgewiki import converters
 
 
-@skipif(module_not_available('mediawiki'))
+@skipIf(module_not_available('mediawiki'), 'mediawiki required')
 def test_mediawiki2markdown():
     mediawiki_text = """
 '''bold''' ''italics''
diff --git a/requirements.in b/requirements.in
index 1357e79..1512c40 100644
--- a/requirements.in
+++ b/requirements.in
@@ -54,7 +54,6 @@ wrapt==1.11.2
 
 # testing
 datadiff
-ipython<6  # Ipython 7 starts to require py3
 mock
 pyflakes
 #pylint -- disabled due to [#8346]  (also requires diff versions on py2 vs 3, including transitive deps which gets tricky with pip-compile)
diff --git a/requirements.txt b/requirements.txt
index a79e0be..ff20e15 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -33,10 +33,7 @@ cryptography==3.3.2
 datadiff==2.0.0
     # via -r requirements.in
 decorator==4.4.0
-    # via
-    #   -r requirements.in
-    #   ipython
-    #   traitlets
+    # via -r requirements.in
 docutils==0.15.2
     # via pypeline
 easywidgets==0.3.6
@@ -72,10 +69,6 @@ idna==3.2
     # via requests
 inflection==0.5.1
     # via profanityfilter
-ipython==5.8.0
-    # via -r requirements.in
-ipython-genutils==0.2.0
-    # via traitlets
 iso8601==0.1.12
     # via colander
 jinja2==2.11.3
@@ -117,26 +110,16 @@ pastedeploy==2.0.1
     #   pastescript
 pastescript==3.1.0
     # via -r requirements.in
-pexpect==4.7.0
-    # via ipython
-pickleshare==0.7.5
-    # via ipython
 pillow==8.3.2
     # via -r requirements.in
 profanityfilter==2.0.6
     # via -r requirements.in
-prompt-toolkit==1.0.16
-    # via ipython
-ptyprocess==0.6.0
-    # via pexpect
 pycparser==2.19
     # via cffi
 pyflakes==2.1.1
     # via -r requirements.in
 pygments==2.9.0
-    # via
-    #   -r requirements.in
-    #   ipython
+    # via -r requirements.in
 pymongo==3.10.1
     # via
     #   -r requirements.in
@@ -178,8 +161,6 @@ setproctitle==1.1.9
     # via -r requirements.in
 sgmllib3k==1.0.0
     # via feedparser
-simplegeneric==0.8.1
-    # via ipython
 six==1.15.0
     # via
     #   -r requirements.in
@@ -194,11 +175,9 @@ six==1.15.0
     #   mock
     #   paste
     #   pastescript
-    #   prompt-toolkit
     #   python-dateutil
     #   qrcode
     #   textile
-    #   traitlets
     #   webhelpers2
     #   webtest
 smmap2==2.0.4
@@ -211,8 +190,6 @@ textile==3.0.4
     # via pypeline
 timermiddleware==0.5.1
     # via -r requirements.in
-traitlets==4.3.2
-    # via ipython
 translationstring==1.3
     # via colander
 turbogears2==2.3.12
@@ -221,8 +198,6 @@ urllib3==1.26.6
     # via requests
 waitress==1.4.3
     # via webtest
-wcwidth==0.1.7
-    # via prompt-toolkit
 webencodings==0.5.1
     # via
     #   bleach

[allura] 11/18: [#8396] upgrade setproctitle

Posted by ke...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 563ef7ca5656130c9f342845fcc2a9e6ca1a06b6
Author: Dave Brondsema <db...@slashdotmedia.com>
AuthorDate: Fri Sep 10 22:10:40 2021 +0000

    [#8396] upgrade setproctitle
---
 requirements.in  | 2 +-
 requirements.txt | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/requirements.in b/requirements.in
index 14b95cd..41188f0 100644
--- a/requirements.in
+++ b/requirements.in
@@ -43,7 +43,7 @@ qrcode
 requests
 requests-oauthlib
 # for taskd proc name switching
-setproctitle==1.1.9
+setproctitle
 six
 TimerMiddleware==0.5.1
 TurboGears2==2.3.12
diff --git a/requirements.txt b/requirements.txt
index ee1a96f..1dedb77 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -157,7 +157,7 @@ requests==2.26.0
     #   requests-oauthlib
 requests-oauthlib==1.2.0
     # via -r requirements.in
-setproctitle==1.1.9
+setproctitle==1.2.2
     # via -r requirements.in
 sgmllib3k==1.0.0
     # via feedparser

[allura] 09/18: [#8396] upgrade pysolr

Posted by ke...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 19f35cefe966762b6552b4e69366b3109051d4cd
Author: Dave Brondsema <db...@slashdotmedia.com>
AuthorDate: Fri Sep 10 22:04:57 2021 +0000

    [#8396] upgrade pysolr
---
 Allura/allura/lib/search.py | 14 ++++++++++++++
 Allura/allura/lib/solr.py   |  3 +++
 requirements.in             |  2 +-
 requirements.txt            |  2 +-
 4 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/Allura/allura/lib/search.py b/Allura/allura/lib/search.py
index 462ffc2..6d820cf 100644
--- a/Allura/allura/lib/search.py
+++ b/Allura/allura/lib/search.py
@@ -105,6 +105,20 @@ class SearchIndexable(object):
         # To do so, we convert markdown into html, and then strip all html tags.
         text = g.markdown.convert(text)
         doc['text'] = jinja2.Markup.escape(text).striptags()
+
+        # convert some date/time field types to str
+        # from https://github.com/django-haystack/pysolr/blob/1a8887cb2ce1c30ef9d6570704254b4520f8a959/pysolr.py#L692
+        for k, value in doc.items():
+            if hasattr(value, "strftime"):
+                if hasattr(value, "hour"):
+                    offset = value.utcoffset()
+                    if offset:
+                        value = value - offset
+                    value = value.replace(tzinfo=None).isoformat() + "Z"
+                else:
+                    value = "%sT00:00:00Z" % value.isoformat()
+                doc[k] = value
+
         return doc
 
     @classmethod
diff --git a/Allura/allura/lib/solr.py b/Allura/allura/lib/solr.py
index d97141e..de4c536 100644
--- a/Allura/allura/lib/solr.py
+++ b/Allura/allura/lib/solr.py
@@ -17,6 +17,8 @@
 
 from __future__ import unicode_literals
 from __future__ import absolute_import
+
+import json
 import logging
 
 from tg import config
@@ -145,6 +147,7 @@ class MockSOLR(object):
     def add(self, objects):
         for o in objects:
             o['text'] = ''.join(o['text'])
+            json.dumps(o)  # ensure no errors (since pysolr 3.9+ uses json API to solr)
             self.db[o['id']] = o
 
     def commit(self):
diff --git a/requirements.in b/requirements.in
index d4bf5af..14b95cd 100644
--- a/requirements.in
+++ b/requirements.in
@@ -34,7 +34,7 @@ profanityfilter==2.0.6
 Pygments
 pymongo==3.10.1
 Pypeline[creole,markdown,textile,rst]
-pysolr==3.6.0
+pysolr
 python-dateutil
 python-magic
 python-oembed
diff --git a/requirements.txt b/requirements.txt
index a987f50..c9cb3d0 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -131,7 +131,7 @@ pyparsing==2.4.7
     #   packaging
 pypeline[creole,markdown,rst,textile]==0.5.3
     # via -r requirements.in
-pysolr==3.6.0
+pysolr==3.9.0
     # via -r requirements.in
 python-dateutil==2.8.0
     # via

[allura] 12/18: [#8396] upgrade gitpython

Posted by ke...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit e71b75cd1a16ddc62b82f6904bcd0c2d25583acf
Author: Dave Brondsema <db...@slashdotmedia.com>
AuthorDate: Mon Sep 13 18:32:18 2021 +0000

    [#8396] upgrade gitpython
---
 requirements.in  |  6 ++----
 requirements.txt | 10 ++++++----
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/requirements.in b/requirements.in
index 41188f0..5b6c49d 100644
--- a/requirements.in
+++ b/requirements.in
@@ -7,13 +7,11 @@ cryptography
 decorator
 EasyWidgets>=0.3.6
 emoji
-# only needed < py3.4 and causes problems >=3.6 https://stackoverflow.com/a/45716067/
-enum34 ; python_version < "3.4"
-faulthandler ; python_version < "3.3"
 feedgenerator
 feedparser
 FormEncode>=2
-GitPython==2.1.11
+# 3.1.23 drops py36 support
+GitPython<=3.1.23
 html5lib==1.0.1
 Jinja2
 Markdown<3
diff --git a/requirements.txt b/requirements.txt
index 1dedb77..2b7dc0f 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -52,9 +52,9 @@ future==0.17.1
     # via timermiddleware
 genshi==0.7.3
     # via creoleparser
-gitdb2==2.0.4
+gitdb==4.0.7
     # via gitpython
-gitpython==2.1.11
+gitpython==3.1.18
     # via -r requirements.in
 gunicorn==20.1.0
     # via -r requirements.in
@@ -180,8 +180,8 @@ six==1.15.0
     #   textile
     #   webhelpers2
     #   webtest
-smmap2==2.0.4
-    # via gitdb2
+smmap==4.0.0
+    # via gitdb
 soupsieve==1.9.3
     # via beautifulsoup4
 testfixtures==6.10.0
@@ -194,6 +194,8 @@ translationstring==1.4
     # via colander
 turbogears2==2.3.12
     # via -r requirements.in
+typing-extensions==3.10.0.2
+    # via gitpython
 urllib3==1.26.6
     # via requests
 waitress==1.4.3

[allura] 04/18: [#8396] upgrade requests deps

Posted by ke...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit fe7829f33da88d9862d440315faafaec225885c0
Author: Dave Brondsema <db...@slashdotmedia.com>
AuthorDate: Fri Sep 10 20:37:02 2021 +0000

    [#8396] upgrade requests deps
---
 requirements-dev.txt | 6 +++---
 requirements.txt     | 6 +++---
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/requirements-dev.txt b/requirements-dev.txt
index a37ceba..b58798e 100644
--- a/requirements-dev.txt
+++ b/requirements-dev.txt
@@ -8,7 +8,7 @@ alabaster==0.7.12
     # via sphinx
 babel==2.7.0
     # via sphinx
-certifi==2019.6.16
+certifi==2021.5.30
     # via requests
 charset-normalizer==2.0.4
     # via requests
@@ -18,7 +18,7 @@ coverage==4.5.4
     # via -r requirements-dev.in
 docutils==0.15.2
     # via sphinx
-idna==2.8
+idna==3.2
     # via requests
 imagesize==1.1.0
     # via sphinx
@@ -67,7 +67,7 @@ tomli==1.2.1
     # via pep517
 typing-extensions==3.10.0.2
     # via importlib-metadata
-urllib3==1.26.5
+urllib3==1.26.6
     # via requests
 wheel==0.37.0
     # via pip-tools
diff --git a/requirements.txt b/requirements.txt
index 4c0370c..4827626 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -16,7 +16,7 @@ bleach==3.3.0
     # via pypeline
 cchardet==2.1.7
     # via -r requirements.in
-certifi==2019.6.16
+certifi==2021.5.30
     # via requests
 cffi==1.12.2
     # via cryptography
@@ -68,7 +68,7 @@ html5lib==1.0.1
     #   textile
 httplib2==0.19.0
     # via oauth2
-idna==2.8
+idna==3.2
     # via requests
 inflection==0.3.1
     # via profanityfilter
@@ -215,7 +215,7 @@ translationstring==1.3
     # via colander
 turbogears2==2.3.12
     # via -r requirements.in
-urllib3==1.26.5
+urllib3==1.26.6
     # via requests
 waitress==1.4.3
     # via webtest

[allura] 16/18: [#8396] upgrade html5lib

Posted by ke...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit d5c51f6642c2c4a7f61f0a08f029c753bec7e555
Author: Dave Brondsema <db...@slashdotmedia.com>
AuthorDate: Mon Sep 13 19:27:28 2021 +0000

    [#8396] upgrade html5lib
---
 requirements.in  | 2 +-
 requirements.txt | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/requirements.in b/requirements.in
index 5b6c49d..5867e54 100644
--- a/requirements.in
+++ b/requirements.in
@@ -12,7 +12,7 @@ feedparser
 FormEncode>=2
 # 3.1.23 drops py36 support
 GitPython<=3.1.23
-html5lib==1.0.1
+html5lib
 Jinja2
 Markdown<3
 markdown-checklist==0.4.1
diff --git a/requirements.txt b/requirements.txt
index 2132c71..02db468 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -58,7 +58,7 @@ gitpython==3.1.18
     # via -r requirements.in
 gunicorn==20.1.0
     # via -r requirements.in
-html5lib==1.0.1
+html5lib==1.1
     # via
     #   -r requirements.in
     #   pypeline

[allura] 01/18: [#8396] Revert "[#8386] remove chardet, make requests library still work"

Posted by ke...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 231463646e54dfd91b10bba8f14d5230ae7577c0
Author: Dave Brondsema <db...@slashdotmedia.com>
AuthorDate: Fri Sep 10 17:59:08 2021 +0000

    [#8396] Revert "[#8386] remove chardet, make requests library still work"
    
    This reverts commit f4ac641bcabcd7bdc199cd022fb13cf79cd93ff3.
---
 .travis.yml                                              |  3 +--
 Allura/allura/lib/custom_middleware.py                   |  2 +-
 Allura/allura/lib/helpers.py                             | 16 ----------------
 Allura/allura/lib/phone/nexmo.py                         |  1 -
 Allura/allura/lib/project_create_helpers.py              |  2 +-
 Allura/allura/lib/search.py                              |  2 +-
 Allura/allura/lib/security.py                            |  2 +-
 Allura/allura/lib/solr.py                                |  2 +-
 Allura/allura/webhooks.py                                |  2 +-
 Allura/docs/getting_started/install_each_step.rst        |  2 +-
 Allura/docs/getting_started/installation.rst             |  2 +-
 AlluraTest/alluratest/validation.py                      |  3 +--
 ForgeImporters/forgeimporters/github/__init__.py         |  1 -
 .../tests/github/functional/test_github.py               |  2 +-
 ForgeImporters/forgeimporters/trac/__init__.py           |  1 -
 requirements.txt                                         |  2 ++
 update.sh                                                |  6 +++---
 17 files changed, 16 insertions(+), 35 deletions(-)

diff --git a/.travis.yml b/.travis.yml
index 4d90096..ced0267 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -26,8 +26,7 @@ jobs:
         - pip install https://sourceforge.net/projects/pysvn/files/pysvn/V1.9.12/pysvn-1.9.12.tar.gz
 install:
   - sudo apt-get install -qq libjpeg8-dev zlib1g-dev
-  - pip install nose
-  - pip install -r requirements.txt --no-deps --upgrade --upgrade-strategy=only-if-needed
+  - pip install -r requirements.txt
   - npm install
 script:
   - ./rebuild-all.bash
diff --git a/Allura/allura/lib/custom_middleware.py b/Allura/allura/lib/custom_middleware.py
index 55f9ab6..25b31bf 100644
--- a/Allura/allura/lib/custom_middleware.py
+++ b/Allura/allura/lib/custom_middleware.py
@@ -29,11 +29,11 @@ from tg import tmpl_context as c
 from tg.support.middlewares import _call_wsgi_application as call_wsgi_application
 from timermiddleware import Timer, TimerMiddleware
 from webob import exc, Request
+import pysolr
 import six
 from ming.odm import session
 
 from allura.lib import helpers as h
-import pysolr  # after 'h' import to get requests/chardet patched
 from allura.lib.utils import is_ajax
 from allura import model as M
 import allura.model.repository
diff --git a/Allura/allura/lib/helpers.py b/Allura/allura/lib/helpers.py
index 79f8ad8..a7a334c 100644
--- a/Allura/allura/lib/helpers.py
+++ b/Allura/allura/lib/helpers.py
@@ -44,22 +44,6 @@ from functools import partial
 from io import BytesIO
 import cgi
 
-
-# https://forge-allura.apache.org/p/allura/tickets/8386/
-# we don't want to depend on LGPL'd chardet, but the requests library needs it
-# so if we can't import it, we'll make it exist as a copy of cchardet
-# this spot in the codebase is best, since it is imported by many things and is before 'requests' is imported
-# if https://github.com/psf/requests/pull/5797 is resolved, this hack could be removed
-try:
-    import chardet
-except ImportError:
-    import sys
-    import cchardet
-    sys.modules['chardet'] = sys.modules['cchardet']
-    import chardet
-    chardet.__version__ += '.cchardet'
-
-
 import emoji
 import tg
 import six
diff --git a/Allura/allura/lib/phone/nexmo.py b/Allura/allura/lib/phone/nexmo.py
index f5025d7..f251c93 100644
--- a/Allura/allura/lib/phone/nexmo.py
+++ b/Allura/allura/lib/phone/nexmo.py
@@ -22,7 +22,6 @@ from six.moves.urllib.parse import urljoin
 import cgi
 import json
 
-from allura.lib import helpers as h  # to get requests/chardet patched
 import requests
 import jinja2
 
diff --git a/Allura/allura/lib/project_create_helpers.py b/Allura/allura/lib/project_create_helpers.py
index 026b197..5e08fb3 100644
--- a/Allura/allura/lib/project_create_helpers.py
+++ b/Allura/allura/lib/project_create_helpers.py
@@ -29,6 +29,7 @@ except ImportError:  # py2 doesn't have typing yet
 
 import colander as col
 import bson
+import requests
 import formencode
 import six
 from six.moves.urllib.parse import urlparse
@@ -42,7 +43,6 @@ from tg import tmpl_context as c, app_globals as g
 
 from allura import model as M
 from allura.lib import helpers as h
-import requests
 from allura.lib.plugin import ProjectRegistrationProvider
 
 
diff --git a/Allura/allura/lib/search.py b/Allura/allura/lib/search.py
index 6d44361..462ffc2 100644
--- a/Allura/allura/lib/search.py
+++ b/Allura/allura/lib/search.py
@@ -30,9 +30,9 @@ import jinja2
 from tg import redirect, url
 from tg import tmpl_context as c, app_globals as g
 from tg import request
+from pysolr import SolrError
 
 from allura.lib import helpers as h
-from pysolr import SolrError  # after 'h' import to get requests/chardet patched
 from allura.lib.solr import escape_solr_arg
 from allura.lib.utils import urlencode
 import six
diff --git a/Allura/allura/lib/security.py b/Allura/allura/lib/security.py
index 2889c9e..4ff62f7 100644
--- a/Allura/allura/lib/security.py
+++ b/Allura/allura/lib/security.py
@@ -25,6 +25,7 @@ import sys
 import logging
 from collections import defaultdict
 import hashlib
+import requests
 
 from tg import tmpl_context as c
 from tg import request
@@ -562,7 +563,6 @@ class HIBPClient(object):
         Raises a named HIBPCompromisedCredentials exception if any found
         :param password: user-supplied password
         """
-        import requests
         result = 0
         try:
             # sha1 it
diff --git a/Allura/allura/lib/solr.py b/Allura/allura/lib/solr.py
index 138fa6d..d97141e 100644
--- a/Allura/allura/lib/solr.py
+++ b/Allura/allura/lib/solr.py
@@ -21,10 +21,10 @@ import logging
 
 from tg import config
 from paste.deploy.converters import asbool
+import pysolr
 import six
 
 from allura.lib.helpers import shlex_split
-import pysolr  # after helpers import to get requests/chardet patched
 
 log = logging.getLogger(__name__)
 
diff --git a/Allura/allura/webhooks.py b/Allura/allura/webhooks.py
index 5778b44..a5f0004 100644
--- a/Allura/allura/webhooks.py
+++ b/Allura/allura/webhooks.py
@@ -25,6 +25,7 @@ import time
 import socket
 import ssl
 
+import requests
 from bson import ObjectId
 from tg import expose, validate, redirect, flash, config
 from tg.decorators import with_trailing_slash, without_trailing_slash
@@ -39,7 +40,6 @@ from paste.deploy.converters import asint, aslist
 from allura.app import AdminControllerMixin
 from allura.controllers import BaseController
 from allura.lib import helpers as h
-import requests
 from allura.lib import validators as v
 from allura.lib.decorators import require_post, task
 from allura.lib.utils import DateJSONEncoder
diff --git a/Allura/docs/getting_started/install_each_step.rst b/Allura/docs/getting_started/install_each_step.rst
index 4bbe8f0..ec948c2 100644
--- a/Allura/docs/getting_started/install_each_step.rst
+++ b/Allura/docs/getting_started/install_each_step.rst
@@ -112,7 +112,7 @@ We'll upgrade `pip <https://pip.pypa.io/en/stable/>`_ to make sure its a current
 
     (env-allura)~/src$ cd allura
     (env-allura)~/src/allura$ pip install -U pip
-    (env-allura)~/src/allura$ pip install -r requirements.txt --no-deps --upgrade --upgrade-strategy=only-if-needed
+    (env-allura)~/src/allura$ pip install -r requirements.txt
 
 This may take a little while.
 
diff --git a/Allura/docs/getting_started/installation.rst b/Allura/docs/getting_started/installation.rst
index 1074af5..0c06b18 100644
--- a/Allura/docs/getting_started/installation.rst
+++ b/Allura/docs/getting_started/installation.rst
@@ -165,7 +165,7 @@ Update requirements and reinstall apps:
 
 .. code-block:: bash
 
-    docker-compose run web pip install -r requirements.txt --no-deps --upgrade --upgrade-strategy=only-if-needed
+    docker-compose run web pip install -r requirements.txt
     docker-compose run web ./rebuild-all.bash
 
 You may want to restart at least "taskd" container after that in order for it to
diff --git a/AlluraTest/alluratest/validation.py b/AlluraTest/alluratest/validation.py
index b10a783..30f9c46 100644
--- a/AlluraTest/alluratest/validation.py
+++ b/AlluraTest/alluratest/validation.py
@@ -39,10 +39,9 @@ import six
 import webtest
 from webtest import TestApp
 from ming.utils import LazyProperty
+import requests
 
 from allura.lib import utils
-from allura.lib import helpers as h  # to get requests/chardet patched
-import requests
 
 log = logging.getLogger(__name__)
 
diff --git a/ForgeImporters/forgeimporters/github/__init__.py b/ForgeImporters/forgeimporters/github/__init__.py
index 2d570b3..32098fa 100644
--- a/ForgeImporters/forgeimporters/github/__init__.py
+++ b/ForgeImporters/forgeimporters/github/__init__.py
@@ -29,7 +29,6 @@ from datetime import datetime
 from tg import config, session, redirect, request, expose
 from tg.decorators import without_trailing_slash
 from tg import tmpl_context as c
-from allura.lib import helpers as h  # to get requests/chardet patched
 from requests_oauthlib import OAuth2Session
 import requests
 from formencode import validators as fev
diff --git a/ForgeImporters/forgeimporters/tests/github/functional/test_github.py b/ForgeImporters/forgeimporters/tests/github/functional/test_github.py
index c83cc50..5cb7b8f 100644
--- a/ForgeImporters/forgeimporters/tests/github/functional/test_github.py
+++ b/ForgeImporters/forgeimporters/tests/github/functional/test_github.py
@@ -16,6 +16,7 @@
 #       under the License.
 from __future__ import unicode_literals
 from __future__ import absolute_import
+import requests
 import tg
 from mock import patch, call, Mock
 from alluratest.tools import assert_equal
@@ -23,7 +24,6 @@ from unittest import TestCase
 
 from allura.tests import TestController
 from allura import model as M
-import requests
 
 
 class TestGitHubImportController(TestController, TestCase):
diff --git a/ForgeImporters/forgeimporters/trac/__init__.py b/ForgeImporters/forgeimporters/trac/__init__.py
index 7ba6693..3a0949d 100644
--- a/ForgeImporters/forgeimporters/trac/__init__.py
+++ b/ForgeImporters/forgeimporters/trac/__init__.py
@@ -18,7 +18,6 @@
 from __future__ import unicode_literals
 from __future__ import absolute_import
 from formencode import validators as fev
-from allura.lib import helpers as h  # to get requests/chardet patched
 import requests
 
 from allura.lib import validators
diff --git a/requirements.txt b/requirements.txt
index 0af5cf6..3189b28 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -20,6 +20,8 @@ certifi==2019.6.16
     # via requests
 cffi==1.12.2
     # via cryptography
+chardet==3.0.4
+    # via requests
 colander==1.7.0
     # via -r requirements.in
 crank==0.8.1
diff --git a/update.sh b/update.sh
index f160744..9bf3a1e 100755
--- a/update.sh
+++ b/update.sh
@@ -25,12 +25,12 @@ fi
 echo 'Getting latest code with `git pull` ...'
 git pull
 
-echo 'Updating python packages with pip install ...'
-pip install -r requirements.txt --no-deps --upgrade --upgrade-strategy=only-if-needed
+echo 'Updating python packages with `pip install -r requirements.txt` ...'
+pip install -r requirements.txt
 if [ "$?" -gt 0 ]; then
 	echo
 	echo
-	echo 'Command `pip install ...` failed.  Sometimes this is a random download error.  If so, just try again.'
+	echo 'Command `pip install -r requirements.txt` failed.  Sometimes this is a random download error.  If so, just try again.'
 	exit;
 fi
 

[allura] 10/18: [#8396] upgrade python-magic

Posted by ke...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 8aa8a77c0a4587f3be6388722bad9410b3340853
Author: Dave Brondsema <db...@slashdotmedia.com>
AuthorDate: Fri Sep 10 22:08:27 2021 +0000

    [#8396] upgrade python-magic
---
 requirements.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/requirements.txt b/requirements.txt
index c9cb3d0..ee1a96f 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -137,7 +137,7 @@ python-dateutil==2.8.0
     # via
     #   -r requirements.in
     #   easywidgets
-python-magic==0.4.15
+python-magic==0.4.24
     # via -r requirements.in
 python-oembed==0.2.4
     # via -r requirements.in

[allura] 17/18: [#8396] upgrade markupsafe

Posted by ke...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 1f8fb812eee47b49375212bbe5c196460e059d2c
Author: Dave Brondsema <db...@slashdotmedia.com>
AuthorDate: Mon Sep 13 19:27:46 2021 +0000

    [#8396] upgrade markupsafe
---
 requirements.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/requirements.txt b/requirements.txt
index 02db468..9cda678 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -80,7 +80,7 @@ markdown==2.6.11
     #   pypeline
 markdown-checklist==0.4.1
     # via -r requirements.in
-markupsafe==1.1.1
+markupsafe==2.0.1
     # via
     #   -r requirements.in
     #   easywidgets

[allura] 18/18: [#8396] upgrade webtest and dep

Posted by ke...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 06b88084bfbc77a0c371be9d8455509efda3f203
Author: Dave Brondsema <db...@slashdotmedia.com>
AuthorDate: Mon Sep 13 19:30:25 2021 +0000

    [#8396] upgrade webtest and dep
---
 requirements.in  | 2 +-
 requirements.txt | 5 ++---
 2 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/requirements.in b/requirements.in
index 5867e54..0627b83 100644
--- a/requirements.in
+++ b/requirements.in
@@ -56,7 +56,7 @@ mock
 pyflakes
 #pylint -- disabled due to [#8346]  (also requires diff versions on py2 vs 3, including transitive deps which gets tricky with pip-compile)
 testfixtures
-WebTest==2.0.33
+WebTest
 
 # deployment
 gunicorn
diff --git a/requirements.txt b/requirements.txt
index 9cda678..a434e65 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -179,7 +179,6 @@ six==1.15.0
     #   qrcode
     #   textile
     #   webhelpers2
-    #   webtest
 smmap==4.0.0
     # via gitdb
 soupsieve==2.2.1
@@ -198,7 +197,7 @@ typing-extensions==3.10.0.2
     # via gitpython
 urllib3==1.26.6
     # via requests
-waitress==1.4.3
+waitress==2.0.0
     # via webtest
 webencodings==0.5.1
     # via
@@ -213,7 +212,7 @@ webob==1.7.4
     #   timermiddleware
     #   turbogears2
     #   webtest
-webtest==2.0.33
+webtest==3.0.0
     # via -r requirements.in
 werkzeug==1.0.1
     # via -r requirements.in

[allura] 03/18: [#8396] upgrade requests, depend on charset-normalizer now

Posted by ke...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 6d890ccba3cec49abd1fb787ded93f8355b3377e
Author: Dave Brondsema <db...@slashdotmedia.com>
AuthorDate: Fri Sep 10 19:43:23 2021 +0000

    [#8396] upgrade requests, depend on charset-normalizer now
---
 requirements-dev.txt | 4 ++--
 requirements.txt     | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/requirements-dev.txt b/requirements-dev.txt
index 1975e44..a37ceba 100644
--- a/requirements-dev.txt
+++ b/requirements-dev.txt
@@ -10,7 +10,7 @@ babel==2.7.0
     # via sphinx
 certifi==2019.6.16
     # via requests
-chardet==3.0.4
+charset-normalizer==2.0.4
     # via requests
 click==7.0
     # via pip-tools
@@ -44,7 +44,7 @@ pytz==2019.1
     # via babel
 q==2.3
     # via -r requirements-dev.in
-requests==2.25.1
+requests==2.26.0
     # via sphinx
 six==1.15.0
     # via sphinx
diff --git a/requirements.txt b/requirements.txt
index 3189b28..4c0370c 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -20,7 +20,7 @@ certifi==2019.6.16
     # via requests
 cffi==1.12.2
     # via cryptography
-chardet==3.0.4
+charset-normalizer==2.0.4
     # via requests
 colander==1.7.0
     # via -r requirements.in
@@ -167,7 +167,7 @@ qrcode==6.1
     # via -r requirements.in
 repoze.lru==0.7
     # via turbogears2
-requests==2.25.1
+requests==2.26.0
     # via
     #   -r requirements.in
     #   pysolr

[allura] 08/18: [#8396] upgrade colander and its dependencies

Posted by ke...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit e3318c124cd54f7a07082d4f340ee5f986b5e811
Author: Dave Brondsema <db...@slashdotmedia.com>
AuthorDate: Fri Sep 10 21:45:53 2021 +0000

    [#8396] upgrade colander and its dependencies
---
 requirements.in  | 2 +-
 requirements.txt | 6 +++---
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/requirements.in b/requirements.in
index 1512c40..d4bf5af 100644
--- a/requirements.in
+++ b/requirements.in
@@ -2,7 +2,7 @@ ActivityStream==0.3.0
 beautifulsoup4
 Beaker
 cchardet
-colander==1.7.0
+colander
 cryptography
 decorator
 EasyWidgets>=0.3.6
diff --git a/requirements.txt b/requirements.txt
index ff20e15..a987f50 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -22,7 +22,7 @@ cffi==1.12.2
     # via cryptography
 charset-normalizer==2.0.4
     # via requests
-colander==1.7.0
+colander==1.8.3
     # via -r requirements.in
 crank==0.8.1
     # via turbogears2
@@ -69,7 +69,7 @@ idna==3.2
     # via requests
 inflection==0.5.1
     # via profanityfilter
-iso8601==0.1.12
+iso8601==0.1.16
     # via colander
 jinja2==2.11.3
     # via -r requirements.in
@@ -190,7 +190,7 @@ textile==3.0.4
     # via pypeline
 timermiddleware==0.5.1
     # via -r requirements.in
-translationstring==1.3
+translationstring==1.4
     # via colander
 turbogears2==2.3.12
     # via -r requirements.in

[allura] 13/18: [#8396] allow newer akismet

Posted by ke...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit fbc9f2b55641bdcc88523be0df4395fafd19b3da
Author: Dave Brondsema <db...@slashdotmedia.com>
AuthorDate: Mon Sep 13 19:05:19 2021 +0000

    [#8396] allow newer akismet
---
 requirements-optional.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/requirements-optional.txt b/requirements-optional.txt
index 9248ca2..d3c4fb5 100644
--- a/requirements-optional.txt
+++ b/requirements-optional.txt
@@ -8,4 +8,4 @@ html2text==2019.8.11  # last to support py2
 mediawiki2html  # GPL
 
 # for spam checking
-akismet==1.0.1
+akismet>=1.0.1

[allura] 06/18: [#8396] upgrade inflection (from profanity filter, for ForgeFeedback)

Posted by ke...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit bccd290f904e8aa99b27c6f06245c458518c01b0
Author: Dave Brondsema <db...@slashdotmedia.com>
AuthorDate: Fri Sep 10 20:26:09 2021 +0000

    [#8396] upgrade inflection (from profanity filter, for ForgeFeedback)
---
 requirements.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/requirements.txt b/requirements.txt
index 78fe8d0..a79e0be 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -70,7 +70,7 @@ httplib2==0.19.0
     # via oauth2
 idna==3.2
     # via requests
-inflection==0.3.1
+inflection==0.5.1
     # via profanityfilter
 ipython==5.8.0
     # via -r requirements.in

[allura] 05/18: [#8396] upgrade feedparser

Posted by ke...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 1dd4d3d57e148955b71e7348b8fbdc2d89663a92
Author: Dave Brondsema <db...@slashdotmedia.com>
AuthorDate: Fri Sep 10 20:16:23 2021 +0000

    [#8396] upgrade feedparser
---
 requirements.txt | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/requirements.txt b/requirements.txt
index 4827626..78fe8d0 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -45,7 +45,7 @@ emoji==0.5.3
     # via -r requirements.in
 feedgenerator==1.9.1
     # via -r requirements.in
-feedparser==5.2.1
+feedparser==6.0.8
     # via -r requirements.in
 formencode==2.0.0
     # via
@@ -176,6 +176,8 @@ requests-oauthlib==1.2.0
     # via -r requirements.in
 setproctitle==1.1.9
     # via -r requirements.in
+sgmllib3k==1.0.0
+    # via feedparser
 simplegeneric==0.8.1
     # via ipython
 six==1.15.0