changeset 497:36c3e9b1d1e3

cm: Upgrade all dependencies and fix deprecation issues.
author Ludovic Chabant <ludovic@chabant.com>
date Sat, 06 Jun 2020 22:24:38 -0700
parents eacacee352f7
children e7d7ebcd0d56
files dev-requirements.txt requirements.txt setup.py tests/__init__.py tests/mock.py tests/test_auth.py wikked/db/sql.py wikked/fs.py wikked/wiki.py
diffstat 9 files changed, 55 insertions(+), 48 deletions(-) [+]
line wrap: on
line diff
--- a/dev-requirements.txt	Wed Nov 07 23:19:43 2018 -0800
+++ b/dev-requirements.txt	Sat Jun 06 22:24:38 2020 -0700
@@ -1,3 +1,2 @@
-invoke==0.22.0
-pytest==3.3.1
-
+invoke==1.4.1
+pytest==5.4.3
--- a/requirements.txt	Wed Nov 07 23:19:43 2018 -0800
+++ b/requirements.txt	Sat Jun 06 22:24:38 2020 -0700
@@ -1,11 +1,29 @@
-Flask==0.12.2
+attrs==19.3.0
+bcrypt==3.1.7
+cffi==1.14.0
+click==7.1.2
+colorama==0.4.3
+Flask==1.1.2
 Flask-Bcrypt==0.7.1
-Flask-Login==0.2.10
-Jinja2==2.10
-Markdown==3.0.1
-Pygments==2.2.0
-SQLAlchemy==1.2.0
+Flask-Login==0.5.0
+importlib-metadata==1.6.1
+itsdangerous==1.1.0
+Jinja2==2.11.2
+Markdown==3.2.2
+MarkupSafe==1.1.1
+more-itertools==8.3.0
+packaging==20.4
+pkg-resources==0.0.0
+pluggy==0.13.1
+py==1.8.1
+pycparser==2.20
+Pygments==2.6.1
+pyparsing==2.4.7
+python-hglib==2.6.1
+repoze.lru==0.7
+six==1.15.0
+SQLAlchemy==1.3.17
+wcwidth==0.2.3
+Werkzeug==1.0.1
 Whoosh==2.7.4
-colorama==0.3.9
-python-hglib==1.8
-repoze.lru==0.6
+zipp==3.1.0
--- a/setup.py	Wed Nov 07 23:19:43 2018 -0800
+++ b/setup.py	Sat Jun 06 22:24:38 2020 -0700
@@ -9,21 +9,21 @@
 
 
 install_requires = [
-    'Flask>=0.12.2',
+    'Flask>=1.1.2',
     'Flask-Bcrypt>=0.7.1',
-    'Flask-Login>=0.2.10',
-    'Jinja2>=2.10',
-    'Markdown>=3',
-    'Pygments>=2.2.0',
+    'Flask-Login>=0.5.0',
+    'Jinja2>=2.11.2',
+    'Markdown>=3.2.2',
+    'Pygments>=2.6.1',
     'SQLAlchemy>=1.2.0',
     'Whoosh>=2.7.4',
-    'colorama>=0.3.9',
-    'python-hglib>=1.8',
-    'repoze.lru>=0.6'
+    'colorama>=0.4.3',
+    'python-hglib>=2.6.1',
+    'repoze.lru>=0.7'
 ]
 tests_require = [
-    'invoke>=0.22.0'
-    'pytest>=3.3.1'
+    'invoke>=1.4.1'
+    'pytest>=5.4.3'
 ]
 
 
--- a/tests/__init__.py	Wed Nov 07 23:19:43 2018 -0800
+++ b/tests/__init__.py	Sat Jun 06 22:24:38 2020 -0700
@@ -72,7 +72,7 @@
 
     if endpoint:
         url = '%s:%s' % (endpoint, url)
-    url = urllib.parse.quote(url)
+    url = urllib.parse.quote(url, safe='/:')
     res += ' data-wiki-url="%s"' % url
 
     if mod:
--- a/tests/mock.py	Wed Nov 07 23:19:43 2018 -0800
+++ b/tests/mock.py	Sat Jun 06 22:24:38 2020 -0700
@@ -5,7 +5,7 @@
 import io
 from collections import deque
 from contextlib import closing
-from configparser import SafeConfigParser
+from configparser import ConfigParser
 from wikked.fs import FileSystem
 from wikked.db.base import Database
 from wikked.indexer.base import WikiIndex
@@ -59,12 +59,12 @@
             os.path.dirname(__file__), '..',
             'wikked', 'resources', 'defaults.cfg')
 
-        config = SafeConfigParser()
-        config.readfp(open(default_config_path))
+        config = ConfigParser()
+        config.read_file(open(default_config_path))
         config.set('wiki', 'root', '/fake/root')
         if self.config_text:
             with closing(io.StringIO(self.config_text)) as conf:
-                config.readfp(conf)
+                config.read_file(conf)
 
         return config
 
--- a/tests/test_auth.py	Wed Nov 07 23:19:43 2018 -0800
+++ b/tests/test_auth.py	Sat Jun 06 22:24:38 2020 -0700
@@ -1,5 +1,5 @@
 import pytest
-from configparser import SafeConfigParser
+from configparser import ConfigParser
 from wikked.auth import (
         UserManager, PERM_NAMES,
         NoSuchGroupOrUserError, MultipleGroupMembershipError,
@@ -7,7 +7,7 @@
 
 
 def _user_manager_from_str(txt):
-    config = SafeConfigParser()
+    config = ConfigParser()
     config.read_string(txt)
     return UserManager(config)
 
--- a/wikked/db/sql.py	Wed Nov 07 23:19:43 2018 -0800
+++ b/wikked/db/sql.py	Sat Jun 06 22:24:38 2020 -0700
@@ -205,8 +205,7 @@
                                  self.engine_url)
                     self._engine = create_engine(
                             self.engine_url,
-                            connect_args=self.connect_args,
-                            convert_unicode=True)
+                            connect_args=self.connect_args)
         return self._engine
 
     def close(self, exception=None):
@@ -562,8 +561,7 @@
             return None
         return SQLDatabasePage(self, page, fields)
 
-    def _addFieldOptions(self, query, fields, use_joined=True,
-                         use_load_obj=False):
+    def _addFieldOptions(self, query, fields, use_load_obj=False):
         if fields is None:
             return query
 
@@ -571,17 +569,11 @@
             obj = Load(SQLPage)
             l_load_only = obj.load_only
             l_joinedload = obj.joinedload
-            l_subqueryload = obj.subqueryload
         else:
             l_load_only = load_only
             l_joinedload = joinedload
-            l_subqueryload = subqueryload
 
         fieldnames = {
-                'local_meta': SQLPage.meta,
-                'local_links': SQLPage.links,
-                'meta': SQLPage.ready_meta,
-                'links': SQLPage.ready_links,
                 'text': SQLPage.ready_text,
                 'is_resolved': SQLPage.is_ready}
         subqueryfields = {
@@ -593,14 +585,12 @@
         query = query.options(l_load_only(SQLPage.id))
         # Load requested fields... some need subqueries.
         for f in fields:
-            col = fieldnames.get(f) or f
-            query = query.options(l_load_only(col))
             sqf = subqueryfields.get(f)
             if sqf:
-                if use_joined:
-                    query = query.options(l_joinedload(sqf))
-                else:
-                    query = query.options(l_subqueryload(sqf))
+                query = query.options(l_joinedload(sqf))
+            else:
+                col = fieldnames.get(f) or f
+                query = query.options(l_load_only(col))
         return query
 
     def _addPage(self, page):
--- a/wikked/fs.py	Wed Nov 07 23:19:43 2018 -0800
+++ b/wikked/fs.py	Sat Jun 06 22:24:38 2020 -0700
@@ -13,7 +13,7 @@
 
 logger = logging.getLogger(__name__)
 
-valid_filename_pattern = re.compile('^[\w \.\-\(\)\[\]\\/]+$', re.UNICODE)
+valid_filename_pattern = re.compile(r'^[\w \.\-\(\)\[\]\\/]+$', re.UNICODE)
 
 
 class PageInfo(object):
--- a/wikked/wiki.py	Wed Nov 07 23:19:43 2018 -0800
+++ b/wikked/wiki.py	Sat Jun 06 22:24:38 2020 -0700
@@ -114,7 +114,7 @@
         except ImportError:
             return
 
-        from markdown.util import etree
+        import xml.etree.ElementTree as ET
 
         class HeaderAnchorsTreeprocessor(
                 markdown.treeprocessors.Treeprocessor):
@@ -126,7 +126,7 @@
                     if elem.tag in hd_tags:
                         hd_id = elem.text.lower().replace(' ', '-')
                         hd_id = elem.attrib.setdefault('id', hd_id)
-                        elem.append(etree.Element(
+                        elem.append(ET.Element(
                             'a',
                             {'class': 'wiki-header-link',
                              'href': '#%s' % hd_id}))