From ad5cbbfdfacdcd3b4663e91a638de022d6e20477 Mon Sep 17 00:00:00 2001 From: eevelweezel Date: Mon, 6 Nov 2023 00:17:20 -0600 Subject: [PATCH] fix regexen and classname Upstream: https://github.com/web2py/web2py/commit/ad5cbbfdfacdcd3b4663e91a638de022d6e20477 [yann.morin.1998@free.fr: backport from upstream] Signed-off-by: Yann E. MORIN --- applications/admin/controllers/default.py | 64 +++++++++++------------ gluon/compileapp.py | 4 +- gluon/contrib/appconfig.py | 2 +- 3 files changed, 35 insertions(+), 35 deletions(-) diff --git a/applications/admin/controllers/default.py b/applications/admin/controllers/default.py index 88697267..c53a3a76 100644 --- a/applications/admin/controllers/default.py +++ b/applications/admin/controllers/default.py @@ -85,7 +85,7 @@ def safe_open(a, b): return tmp() a_for_check = os.path.abspath(os.path.normpath(a)) - + web2py_apps_root = os.path.abspath(up(request.folder)) web2py_deposit_root = os.path.join(up(web2py_apps_root), 'deposit') @@ -230,7 +230,7 @@ def site(): class IS_VALID_APPNAME(object): def __call__(self, value): - if not re.compile('^\w+$').match(value): + if not re.compile(r'^\w+$').match(value): return (value, T('Invalid application name')) if not request.vars.overwrite and \ os.path.exists(os.path.join(apath(r=request), value)): @@ -321,7 +321,7 @@ def site(): session.flash = T(msg, dict(appname=form_update.vars.name)) redirect(URL(r=request)) - regex = re.compile('^\w+$') + regex = re.compile(r'^\w+$') if is_manager(): apps = [a for a in os.listdir(apath(r=request)) if regex.match(a) and @@ -341,7 +341,7 @@ def site(): def report_progress(app): import datetime progress_file = os.path.join(apath(app, r=request), 'progress.log') - regex = re.compile('\[(.*?)\][^\:]+\:\s+(\-?\d+)') + regex = re.compile(r'\[(.*?)\][^\:]+\:\s+(\-?\d+)') if not os.path.exists(progress_file): return [] matches = regex.findall(open(progress_file, 'r').read()) @@ -609,7 +609,7 @@ def test(): if len(request.args) > 1: file = request.args[1] else: - file = '.*\.py' + file = r'.*\.py' controllers = listdir( apath('%s/controllers/' % app, r=request), file + '$') @@ -869,12 +869,12 @@ def todolist(): app_path = apath('%(app)s' % {'app': app}, r=request) dirs = ['models', 'controllers', 'modules', 'private'] - def listfiles(app, dir, regexp='.*\.py$'): + def listfiles(app, dir, regexp=r'.*\.py$'): files = sorted(listdir(apath('%(app)s/%(dir)s/' % {'app': app, 'dir': dir}, r=request), regexp)) files = [x.replace(os.path.sep, '/') for x in files if not x.endswith('.bak')] return files - pattern = '#\s*(todo)+\s+(.*)' + pattern = r'#\s*(todo)+\s+(.*)' regex = re.compile(pattern, re.IGNORECASE) output = [] @@ -1126,7 +1126,7 @@ def design(): redirect(URL('site')) # Get all models - models = listdir(apath('%s/models/' % app, r=request), '.*\.py$') + models = listdir(apath('%s/models/' % app, r=request), r'.*\.py$') models = [x.replace('\\', '/') for x in models] defines = {} for m in models: @@ -1136,7 +1136,7 @@ def design(): # Get all controllers controllers = sorted( - listdir(apath('%s/controllers/' % app, r=request), '.*\.py$')) + listdir(apath('%s/controllers/' % app, r=request), r'.*\.py$')) controllers = [x.replace('\\', '/') for x in controllers] functions = {} for c in controllers: @@ -1149,7 +1149,7 @@ def design(): # Get all views views = sorted( - listdir(apath('%s/views/' % app, r=request), '[\w/\-]+(\.\w+)+$')) + listdir(apath('%s/views/' % app, r=request), r'[\w/\-]+(\.\w+)+$')) views = [x.replace('\\', '/') for x in views if not x.endswith('.bak')] extend = {} include = {} @@ -1164,17 +1164,17 @@ def design(): include[c] = [i[1] for i in items] # Get all modules - modules = listdir(apath('%s/modules/' % app, r=request), '.*\.py$') + modules = listdir(apath('%s/modules/' % app, r=request), r'.*\.py$') modules = modules = [x.replace('\\', '/') for x in modules] modules.sort() # Get all private files - privates = listdir(apath('%s/private/' % app, r=request), '[^\.#].*') + privates = listdir(apath('%s/private/' % app, r=request), r'[^\.#].*') privates = [x.replace('\\', '/') for x in privates] privates.sort() # Get all static files - statics = listdir(apath('%s/static/' % app, r=request), '[^\.#].*', + statics = listdir(apath('%s/static/' % app, r=request), r'[^\.#].*', maxnum=MAXNFILES) statics = [x.replace(os.path.sep, '/') for x in statics] statics.sort() @@ -1267,7 +1267,7 @@ def plugin(): redirect(URL('site')) # Get all models - models = listdir(apath('%s/models/' % app, r=request), '.*\.py$') + models = listdir(apath('%s/models/' % app, r=request), r'.*\.py$') models = [x.replace('\\', '/') for x in models] defines = {} for m in models: @@ -1277,7 +1277,7 @@ def plugin(): # Get all controllers controllers = sorted( - listdir(apath('%s/controllers/' % app, r=request), '.*\.py$')) + listdir(apath('%s/controllers/' % app, r=request), r'.*\.py$')) controllers = [x.replace('\\', '/') for x in controllers] functions = {} for c in controllers: @@ -1290,7 +1290,7 @@ def plugin(): # Get all views views = sorted( - listdir(apath('%s/views/' % app, r=request), '[\w/\-]+\.\w+$')) + listdir(apath('%s/views/' % app, r=request), r'[\w/\-]+\.\w+$')) views = [x.replace('\\', '/') for x in views] extend = {} include = {} @@ -1304,17 +1304,17 @@ def plugin(): include[c] = [i[1] for i in items] # Get all modules - modules = listdir(apath('%s/modules/' % app, r=request), '.*\.py$') + modules = listdir(apath('%s/modules/' % app, r=request), r'.*\.py$') modules = modules = [x.replace('\\', '/') for x in modules] modules.sort() # Get all private files - privates = listdir(apath('%s/private/' % app, r=request), '[^\.#].*') + privates = listdir(apath('%s/private/' % app, r=request), r'[^\.#].*') privates = [x.replace('\\', '/') for x in privates] privates.sort() # Get all static files - statics = listdir(apath('%s/static/' % app, r=request), '[^\.#].*', + statics = listdir(apath('%s/static/' % app, r=request), r'[^\.#].*', maxnum=MAXNFILES) statics = [x.replace(os.path.sep, '/') for x in statics] statics.sort() @@ -1331,7 +1331,7 @@ def plugin(): safe_write(crontab, '#crontab') def filter_plugins(items): - regex = re.compile('^plugin_' + plugin + '(/.*|\..*)?$') + regex = re.compile(r'^plugin_' + plugin + r'(/.*|\..*)?$') return [item for item in items if item and regex.match(item)] return dict(app=app, @@ -1363,14 +1363,14 @@ def create_file(): request.vars.location += request.vars.dir + '/' app = get_app(name=request.vars.location.split('/')[0]) path = apath(request.vars.location, r=request) - filename = re.sub('[^\w./-]+', '_', request.vars.filename) + filename = re.sub(r'[^\w./-]+', '_', request.vars.filename) if path[-7:] == '/rules/': # Handle plural rules files if len(filename) == 0: raise SyntaxError if not filename[-3:] == '.py': filename += '.py' - lang = re.match('^plural_rules-(.*)\.py$', filename).group(1) + lang = re.match(r'^plural_rules-(.*)\.py$', filename).group(1) langinfo = read_possible_languages(apath(app, r=request))[lang] text = dedent(""" #!/usr/bin/env python @@ -1518,7 +1518,7 @@ def create_file(): redirect(request.vars.sender + anchor) -def listfiles(app, dir, regexp='.*\.py$'): +def listfiles(app, dir, regexp=r'.*\.py$'): files = sorted( listdir(apath('%(app)s/%(dir)s/' % {'app': app, 'dir': dir}, r=request), regexp)) files = [x.replace('\\', '/') for x in files if not x.endswith('.bak')] @@ -1533,12 +1533,12 @@ def editfile(path, file, vars={}, app=None): def files_menu(): app = request.vars.app or 'welcome' - dirs = [{'name': 'models', 'reg': '.*\.py$'}, - {'name': 'controllers', 'reg': '.*\.py$'}, - {'name': 'views', 'reg': '[\w/\-]+(\.\w+)+$'}, - {'name': 'modules', 'reg': '.*\.py$'}, - {'name': 'static', 'reg': '[^\.#].*'}, - {'name': 'private', 'reg': '.*\.py$'}] + dirs = [{'name': 'models', 'reg': r'.*\.py$'}, + {'name': 'controllers', 'reg': r'.*\.py$'}, + {'name': 'views', 'reg': r'[\w/\-]+(\.\w+)+$'}, + {'name': 'modules', 'reg': r'.*\.py$'}, + {'name': 'static', 'reg': r'[^\.#].*'}, + {'name': 'private', 'reg': r'.*\.py$'}] result_files = [] for dir in dirs: result_files.append(TAG[''](LI(dir['name'], _class="nav-header component", _onclick="collapse('" + dir['name'] + "_files');"), @@ -1559,7 +1559,7 @@ def upload_file(): path = apath(request.vars.location, r=request) if request.vars.filename: - filename = re.sub('[^\w\./]+', '_', request.vars.filename) + filename = re.sub(r'[^\w\./]+', '_', request.vars.filename) else: filename = os.path.split(request.vars.file.filename)[-1] @@ -1628,7 +1628,7 @@ def errors(): hash2error = dict() - for fn in listdir(errors_path, '^[a-fA-F0-9.\-]+$'): + for fn in listdir(errors_path, r'^[a-fA-F0-9.\-]+$'): fullpath = os.path.join(errors_path, fn) if not os.path.isfile(fullpath): continue @@ -1727,7 +1727,7 @@ def errors(): func = lambda p: os.stat(apath('%s/errors/%s' % (app, p), r=request)).st_mtime tickets = sorted( - listdir(apath('%s/errors/' % app, r=request), '^\w.*'), + listdir(apath('%s/errors/' % app, r=request), r'^\w.*'), key=func, reverse=True) diff --git a/gluon/compileapp.py b/gluon/compileapp.py index 45fa8a0e..be0446e1 100644 --- a/gluon/compileapp.py +++ b/gluon/compileapp.py @@ -14,7 +14,7 @@ Note: import copy import fnmatch -import imp +from importlib import import_module import marshal import os import py_compile @@ -345,7 +345,7 @@ def local_import_aux(name, reload_force=False, app="welcome"): """ items = name.replace("/", ".") name = "applications.%s.modules.%s" % (app, items) - module = __import__(name) + module = import_module(name) for item in name.split(".")[1:]: module = getattr(module, item) if reload_force: diff --git a/gluon/contrib/appconfig.py b/gluon/contrib/appconfig.py index 1160e08a..2bf81841 100644 --- a/gluon/contrib/appconfig.py +++ b/gluon/contrib/appconfig.py @@ -120,7 +120,7 @@ class AppConfigLoader(object): self.read_config() def read_config_ini(self): - config = configparser.SafeConfigParser() + config = configparser.RawConfigParser() config.read(self.file) settings = {} for section in config.sections(): -- 2.45.1