diff --git a/rhodecode/lib/rc_cache/cache_key_meta.py b/rhodecode/lib/rc_cache/cache_key_meta.py --- a/rhodecode/lib/rc_cache/cache_key_meta.py +++ b/rhodecode/lib/rc_cache/cache_key_meta.py @@ -1,5 +1,3 @@ - - # Copyright (C) 2015-2023 RhodeCode GmbH # # This program is free software: you can redistribute it and/or modify @@ -54,7 +52,7 @@ def free_cache_keys(*args): if cache_keys_by_pid: try: for cache_proc in set(cache_keys_by_pid): - like_expression = '{}%'.format(cache_proc) + like_expression = f'{cache_proc}%' qry = CacheKey.query().filter(CacheKey.cache_key.like(like_expression)) count = qry.count() log.info('Clearing %s: %s cache keys, total: %s', cache_proc, len(cache_keys_by_pid), count) diff --git a/rhodecode/lib/rc_cache/utils.py b/rhodecode/lib/rc_cache/utils.py --- a/rhodecode/lib/rc_cache/utils.py +++ b/rhodecode/lib/rc_cache/utils.py @@ -181,7 +181,7 @@ def get_or_create_region(region_name, re region_obj = region_meta.dogpile_cache_regions.get(region_name) if not region_obj: reg_keys = list(region_meta.dogpile_cache_regions.keys()) - raise EnvironmentError(f'Region `{region_name}` not in configured: {reg_keys}.') + raise OSError(f'Region `{region_name}` not in configured: {reg_keys}.') region_uid_name = f'{region_name}:{region_namespace}' @@ -331,7 +331,7 @@ class InvalidationContext(object): self.cache_key = compute_key_from_params(uid) self.cache_key = 'proc:{}|thread:{}|params:{}'.format( self.proc_id, self.thread_id, self.cache_key) - self.proc_key = 'proc:{}'.format(self.proc_id) + self.proc_key = f'proc:{self.proc_id}' self.compute_time = 0 def get_or_create_cache_obj(self, cache_type, invalidation_namespace=''): diff --git a/rhodecode/lib/rc_commands/add_artifact.py b/rhodecode/lib/rc_commands/add_artifact.py --- a/rhodecode/lib/rc_commands/add_artifact.py +++ b/rhodecode/lib/rc_commands/add_artifact.py @@ -1,5 +1,3 @@ - - # Copyright (C) 2016-2023 RhodeCode GmbH # # This program is free software: you can redistribute it and/or modify @@ -76,7 +74,7 @@ def command(ini_path, filename, file_pat repo = Repository.get(repo_id) if not repo: - click.secho('ERROR: Unable to find repository with id `{}`'.format(repo_id), + click.secho(f'ERROR: Unable to find repository with id `{repo_id}`', fg='red') sys.exit(-1) @@ -87,7 +85,7 @@ def command(ini_path, filename, file_pat db_user = User.get_first_super_admin() if not db_user: - click.secho('ERROR: Unable to find user with id/username `{}`'.format(user_id), + click.secho(f'ERROR: Unable to find user with id/username `{user_id}`', fg='red') sys.exit(-1) @@ -96,12 +94,12 @@ def command(ini_path, filename, file_pat storage = store_utils.get_file_storage(request.registry.settings) with open(file_path, 'rb') as f: - click.secho('Adding new artifact from path: `{}`'.format(file_path), + click.secho(f'Adding new artifact from path: `{file_path}`', fg='green') file_data = _store_file( storage, auth_user, filename, content=None, check_acl=True, file_obj=f, description=description, scope_repo_id=repo.repo_id) - click.secho('File Data: {}'.format(file_data), + click.secho(f'File Data: {file_data}', fg='green') diff --git a/rhodecode/lib/rc_commands/ishell.py b/rhodecode/lib/rc_commands/ishell.py --- a/rhodecode/lib/rc_commands/ishell.py +++ b/rhodecode/lib/rc_commands/ishell.py @@ -1,5 +1,3 @@ - - # Copyright (C) 2016-2023 RhodeCode GmbH # # This program is free software: you can redistribute it and/or modify diff --git a/rhodecode/lib/rc_commands/setup_rc.py b/rhodecode/lib/rc_commands/setup_rc.py --- a/rhodecode/lib/rc_commands/setup_rc.py +++ b/rhodecode/lib/rc_commands/setup_rc.py @@ -1,5 +1,3 @@ - - # Copyright (C) 2016-2023 RhodeCode GmbH # # This program is free software: you can redistribute it and/or modify diff --git a/rhodecode/lib/rc_commands/upgrade_db.py b/rhodecode/lib/rc_commands/upgrade_db.py --- a/rhodecode/lib/rc_commands/upgrade_db.py +++ b/rhodecode/lib/rc_commands/upgrade_db.py @@ -1,5 +1,3 @@ - - # Copyright (C) 2016-2023 RhodeCode GmbH # # This program is free software: you can redistribute it and/or modify diff --git a/rhodecode/lib/repo_maintenance.py b/rhodecode/lib/repo_maintenance.py --- a/rhodecode/lib/repo_maintenance.py +++ b/rhodecode/lib/repo_maintenance.py @@ -1,5 +1,3 @@ - - # Copyright (C) 2017-2023 RhodeCode GmbH # # This program is free software: you can redistribute it and/or modify diff --git a/rhodecode/lib/request.py b/rhodecode/lib/request.py --- a/rhodecode/lib/request.py +++ b/rhodecode/lib/request.py @@ -1,5 +1,3 @@ - - # Copyright (C) 2017-2023 RhodeCode GmbH # # This program is free software: you can redistribute it and/or modify diff --git a/rhodecode/lib/request_counter.py b/rhodecode/lib/request_counter.py --- a/rhodecode/lib/request_counter.py +++ b/rhodecode/lib/request_counter.py @@ -1,5 +1,3 @@ - - # Copyright (C) 2017-2023 RhodeCode GmbH # # This program is free software: you can redistribute it and/or modify diff --git a/rhodecode/lib/statsd_client.py b/rhodecode/lib/statsd_client.py --- a/rhodecode/lib/statsd_client.py +++ b/rhodecode/lib/statsd_client.py @@ -12,7 +12,7 @@ class _Singleton(type): def __call__(cls, *args, **kwargs): if cls not in cls._instances: - cls._instances[cls] = super(_Singleton, cls).__call__(*args, **kwargs) + cls._instances[cls] = super().__call__(*args, **kwargs) return cls._instances[cls] @@ -29,12 +29,12 @@ class StatsdClientClass(Singleton): if name.startswith("statsd"): if self.setup_run: - return super(StatsdClientClass, self).__getattribute__(name) + return super().__getattribute__(name) else: return None #raise StatsdClientNotInitialised("requested key was %s" % name) - return super(StatsdClientClass, self).__getattribute__(name) + return super().__getattribute__(name) def setup(self, settings): """ diff --git a/rhodecode/lib/str_utils.py b/rhodecode/lib/str_utils.py --- a/rhodecode/lib/str_utils.py +++ b/rhodecode/lib/str_utils.py @@ -1,4 +1,3 @@ - # Copyright (C) 2011-2023 RhodeCode GmbH # # This program is free software: you can redistribute it and/or modify @@ -67,7 +66,7 @@ def base64_to_str(text) -> str: return safe_str(base64.encodebytes(safe_bytes(text))).strip() -def get_default_encodings() -> typing.List[str]: +def get_default_encodings() -> list[str]: return aslist(rhodecode.CONFIG.get('default_encoding', 'utf8'), sep=',') diff --git a/rhodecode/lib/string_renderer.py b/rhodecode/lib/string_renderer.py --- a/rhodecode/lib/string_renderer.py +++ b/rhodecode/lib/string_renderer.py @@ -1,4 +1,3 @@ - # Copyright (C) 2010-2023 RhodeCode GmbH # # This program is free software: you can redistribute it and/or modify diff --git a/rhodecode/lib/system_info.py b/rhodecode/lib/system_info.py --- a/rhodecode/lib/system_info.py +++ b/rhodecode/lib/system_info.py @@ -1,5 +1,3 @@ - - # Copyright (C) 2017-2023 RhodeCode GmbH # # This program is free software: you can redistribute it and/or modify @@ -125,7 +123,7 @@ class SysInfoRes(object): return self.__json__() def __str__(self): - return ''.format(self.__json__()) + return f'' class SysInfo(object): @@ -146,7 +144,7 @@ class SysInfo(object): return computed.__json__() def __str__(self): - return ''.format(self.function_name) + return f'' def compute(self, **kwargs): return self.function_name(**kwargs) @@ -251,7 +249,7 @@ def uptime(): human_value['boot_time'] = time_to_datetime(boot_time) human_value['uptime'] = age(time_to_datetime(boot_time), show_suffix=False) - human_value['text'] = 'Server started {}'.format(date_or_age) + human_value['text'] = f'Server started {date_or_age}' return SysInfoRes(value=value, human_value=human_value) @@ -270,10 +268,10 @@ def memory(): value['used_real'], value['total'], 1) human_value = value.copy() - human_value['text'] = '%s/%s, %s%% used' % ( + human_value['text'] = '{}/{}, {}% used'.format( format_byte_size_binary(value['used_real']), format_byte_size_binary(value['total']), - value['percent_used'],) + value['percent_used']) keys = list(value.keys())[::] keys.pop(keys.index('percent')) @@ -546,7 +544,7 @@ def git_info(): value = human_value = '' try: value = git.discover_git_version(raise_on_exc=True) - human_value = 'version reported from VCSServer: {}'.format(value) + human_value = f'version reported from VCSServer: {value}' except Exception as e: state = {'message': str(e), 'type': STATE_ERR} @@ -560,7 +558,7 @@ def hg_info(): value = human_value = '' try: value = hg.discover_hg_version(raise_on_exc=True) - human_value = 'version reported from VCSServer: {}'.format(value) + human_value = f'version reported from VCSServer: {value}' except Exception as e: state = {'message': str(e), 'type': STATE_ERR} return SysInfoRes(value=value, state=state, human_value=human_value) @@ -573,7 +571,7 @@ def svn_info(): value = human_value = '' try: value = svn.discover_svn_version(raise_on_exc=True) - human_value = 'version reported from VCSServer: {}'.format(value) + human_value = f'version reported from VCSServer: {value}' except Exception as e: state = {'message': str(e), 'type': STATE_ERR} return SysInfoRes(value=value, state=state, human_value=human_value) @@ -774,7 +772,7 @@ def server_info(environ): from rhodecode.lib.base import get_server_ip_addr, get_server_port value = { - 'server_ip': '%s:%s' % ( + 'server_ip': '{}:{}'.format( get_server_ip_addr(environ, log_errors=False), get_server_port(environ) ), diff --git a/rhodecode/lib/type_utils.py b/rhodecode/lib/type_utils.py --- a/rhodecode/lib/type_utils.py +++ b/rhodecode/lib/type_utils.py @@ -1,5 +1,3 @@ - - # Copyright (C) 2011-2023 RhodeCode GmbH # # This program is free software: you can redistribute it and/or modify diff --git a/rhodecode/lib/user_log_filter.py b/rhodecode/lib/user_log_filter.py --- a/rhodecode/lib/user_log_filter.py +++ b/rhodecode/lib/user_log_filter.py @@ -1,4 +1,3 @@ - # Copyright (C) 2010-2023 RhodeCode GmbH # # This program is free software: you can redistribute it and/or modify diff --git a/rhodecode/lib/user_sessions.py b/rhodecode/lib/user_sessions.py --- a/rhodecode/lib/user_sessions.py +++ b/rhodecode/lib/user_sessions.py @@ -1,5 +1,3 @@ - - # Copyright (C) 2017-2023 RhodeCode GmbH # # This program is free software: you can redistribute it and/or modify @@ -165,9 +163,8 @@ class MemcachedAuthSessions(BaseAuthSess """ Return a list of tuples containing keys and details """ cmd = 'stats cachedump %s %s' for slab_id in slab_ids: - for key in self._key_regex.finditer( - self._run_telnet_cmd(client, cmd % (slab_id, limit))): - yield key + yield from self._key_regex.finditer( + self._run_telnet_cmd(client, cmd % (slab_id, limit))) def get_count(self): client = self._get_client() @@ -261,4 +258,4 @@ def get_session_handler(session_type): return types[session_type] except KeyError: raise ValueError( - 'This type {} is not supported'.format(session_type)) + f'This type {session_type} is not supported') diff --git a/rhodecode/lib/utils.py b/rhodecode/lib/utils.py --- a/rhodecode/lib/utils.py +++ b/rhodecode/lib/utils.py @@ -1,4 +1,3 @@ - # Copyright (C) 2010-2023 RhodeCode GmbH # # This program is free software: you can redistribute it and/or modify @@ -192,8 +191,7 @@ def get_filesystem_repos(path, recursive #check if this dir containts other repos for recursive scan rec_path = os.path.join(p, dirpath) if os.path.isdir(rec_path): - for inner_scm in _get_repos(rec_path): - yield inner_scm + yield from _get_repos(rec_path) return _get_repos(path) @@ -330,7 +328,7 @@ def ask_ok(prompt, retries=4, complaint= return False retries = retries - 1 if retries < 0: - raise IOError + raise OSError print(complaint) # propagated from mercurial documentation @@ -805,5 +803,5 @@ def send_test_email(recipients, email_bo from rhodecode.lib.celerylib import tasks, run_task email_body = email_body_plaintext = email_body - subject = 'SUBJECT FROM: {}'.format(socket.gethostname()) + subject = f'SUBJECT FROM: {socket.gethostname()}' tasks.send_email(recipients, subject, email_body_plaintext, email_body) diff --git a/rhodecode/lib/utils2.py b/rhodecode/lib/utils2.py --- a/rhodecode/lib/utils2.py +++ b/rhodecode/lib/utils2.py @@ -1,5 +1,3 @@ - - # Copyright (C) 2011-2023 RhodeCode GmbH # # This program is free software: you can redistribute it and/or modify @@ -715,7 +713,7 @@ def action_logger_generic(action, namesp user = '' logfunc = log.warning - logfunc('Logging action by {}: {}'.format(user, action)) + logfunc(f'Logging action by {user}: {action}') def escape_split(text, sep=',', maxsplit=-1): diff --git a/rhodecode/lib/vcs/backends/base.py b/rhodecode/lib/vcs/backends/base.py --- a/rhodecode/lib/vcs/backends/base.py +++ b/rhodecode/lib/vcs/backends/base.py @@ -1,5 +1,3 @@ - - # Copyright (C) 2014-2023 RhodeCode GmbH # # This program is free software: you can redistribute it and/or modify @@ -347,7 +345,7 @@ class BaseRepository(object): raise NotImplementedError def __repr__(self): - return '<{} at {}>'.format(self.__class__.__name__, self.path) + return f'<{self.__class__.__name__} at {self.path}>' def __len__(self): return self.count() @@ -716,7 +714,7 @@ class BaseRepository(object): """ return os.path.join( os.path.dirname(repo_path), - '.__shadow_{}_{}'.format(os.path.basename(repo_path), workspace_id)) + f'.__shadow_{os.path.basename(repo_path)}_{workspace_id}') @classmethod def _get_shadow_repository_path(cls, repo_path, repo_id, workspace_id): @@ -728,7 +726,7 @@ class BaseRepository(object): else: return os.path.join( os.path.dirname(repo_path), - '.__shadow_repo_{}_{}'.format(repo_id, workspace_id)) + f'.__shadow_repo_{repo_id}_{workspace_id}') def cleanup_merge_workspace(self, repo_id, workspace_id): """ @@ -806,7 +804,7 @@ class BaseRepository(object): def _validate_branch_name(self, branch_name): if branch_name and branch_name not in self.branches_all: - msg = ("Branch {} not found in {}".format(branch_name, self)) + msg = (f"Branch {branch_name} not found in {self}") raise BranchDoesNotExistError(msg) # @@ -1583,7 +1581,7 @@ class BaseInMemoryCommit(object): pass else: raise NodeAlreadyExistsError( - "Node `{}` already exists at {}".format(node.path, p)) + f"Node `{node.path}` already exists at {p}") # Check nodes marked as changed missing = set(self.changed) diff --git a/rhodecode/lib/vcs/backends/git/repository.py b/rhodecode/lib/vcs/backends/git/repository.py --- a/rhodecode/lib/vcs/backends/git/repository.py +++ b/rhodecode/lib/vcs/backends/git/repository.py @@ -373,7 +373,7 @@ class GitRepository(BaseRepository): if name in self.tags: raise TagAlreadyExistError("Tag %s already exists" % name) commit = self.get_commit(commit_id=commit_id) - message = message or "Added tag {} for commit {}".format(name, commit.raw_id) + message = message or f"Added tag {name} for commit {commit.raw_id}" self._remote.set_refs('refs/tags/%s' % name, commit.raw_id) @@ -641,7 +641,7 @@ class GitRepository(BaseRepository): else: output, __ = repo1.run_git_command( ['log', '--reverse', '--pretty=format: %H', '-s', - '{}..{}'.format(commit_id1, commit_id2)]) + f'{commit_id1}..{commit_id2}']) commits = [ repo1.get_commit(commit_id=commit_id, pre_load=pre_load) for commit_id in self.COMMIT_ID_PAT.findall(output)] @@ -912,7 +912,7 @@ class GitRepository(BaseRepository): target_repo._local_pull(self.path, source_branch) else: cmd = ['push', os.path.abspath(repository_path), - '{}:{}'.format(source_branch, target_branch)] + f'{source_branch}:{target_branch}'] gitenv = {} if rc_scm_data: gitenv.update({'RC_SCM_DATA': rc_scm_data}) @@ -922,7 +922,7 @@ class GitRepository(BaseRepository): self.run_git_command(cmd, fail_on_stderr=False, extra_env=gitenv) def _get_new_pr_branch(self, source_branch, target_branch): - prefix = 'pr_{}-{}_'.format(source_branch, target_branch) + prefix = f'pr_{source_branch}-{target_branch}_' pr_branches = [] for branch in self.branches: if branch.startswith(prefix): diff --git a/rhodecode/lib/vcs/backends/hg/commit.py b/rhodecode/lib/vcs/backends/hg/commit.py --- a/rhodecode/lib/vcs/backends/hg/commit.py +++ b/rhodecode/lib/vcs/backends/hg/commit.py @@ -289,7 +289,7 @@ class MercurialCommit(base.BaseCommit): if self._get_kind(path) != NodeKind.DIR: raise CommitError( - "Directory does not exist for idx {} at '{}'".format(self.raw_id, path)) + f"Directory does not exist for idx {self.raw_id} at '{path}'") path = self._fix_path(path) filenodes = [ diff --git a/rhodecode/lib/vcs/backends/hg/repository.py b/rhodecode/lib/vcs/backends/hg/repository.py --- a/rhodecode/lib/vcs/backends/hg/repository.py +++ b/rhodecode/lib/vcs/backends/hg/repository.py @@ -178,7 +178,7 @@ class MercurialRepository(BaseRepository local = kwargs.setdefault('local', False) if message is None: - message = "Added tag {} for commit {}".format(name, commit.short_id) + message = f"Added tag {name} for commit {commit.short_id}" date, tz = date_to_timestamp_plus_offset(date) @@ -529,17 +529,17 @@ class MercurialRepository(BaseRepository commit_filter = [] if branch_name and not branch_ancestors: - commit_filter.append('branch("{}")'.format(branch_name)) + commit_filter.append(f'branch("{branch_name}")') elif branch_name and branch_ancestors: - commit_filter.append('ancestors(branch("{}"))'.format(branch_name)) + commit_filter.append(f'ancestors(branch("{branch_name}"))') if start_date and not end_date: - commit_filter.append('date(">{}")'.format(start_date)) + commit_filter.append(f'date(">{start_date}")') if end_date and not start_date: - commit_filter.append('date("<{}")'.format(end_date)) + commit_filter.append(f'date("<{end_date}")') if start_date and end_date: commit_filter.append( - 'date(">{}") and date("<{}")'.format(start_date, end_date)) + f'date(">{start_date}") and date("<{end_date}")') if not show_hidden: commit_filter.append('not obsolete()') @@ -657,7 +657,7 @@ class MercurialRepository(BaseRepository unresolved = None if use_rebase: try: - bookmark_name = 'rcbook{}{}'.format(source_ref_commit_id, target_ref_commit_id) + bookmark_name = f'rcbook{source_ref_commit_id}{target_ref_commit_id}' self.bookmark(bookmark_name, revision=source_ref.commit_id) self._remote.rebase( source=source_ref_commit_id, dest=target_ref_commit_id) @@ -687,7 +687,7 @@ class MercurialRepository(BaseRepository self._remote.invalidate_vcs_cache() self._remote.commit( message=safe_str(merge_message), - username=safe_str('{} <{}>'.format(user_name, user_email))) + username=safe_str(f'{user_name} <{user_email}>')) self._remote.invalidate_vcs_cache() return self._identify(), True except RepositoryError as e: @@ -718,7 +718,7 @@ class MercurialRepository(BaseRepository try: self._remote.commit( message=safe_str(message), - username=safe_str('{} <{}>'.format(user_name, user_email)), + username=safe_str(f'{user_name} <{user_email}>'), close_branch=True) self._remote.invalidate_vcs_cache() return self._identify(), True @@ -767,7 +767,7 @@ class MercurialRepository(BaseRepository if len(heads_all) > max_heads: heads = '\n,'.join( heads_all[:max_heads] + - ['and {} more.'.format(len(heads_all)-max_heads)]) + [f'and {len(heads_all)-max_heads} more.']) else: heads = '\n,'.join(heads_all) metadata = { @@ -862,7 +862,7 @@ class MercurialRepository(BaseRepository max_conflicts = 20 if len(all_conflicts) > max_conflicts: conflicts = all_conflicts[:max_conflicts] \ - + ['and {} more.'.format(len(all_conflicts)-max_conflicts)] + + [f'and {len(all_conflicts)-max_conflicts} more.'] else: conflicts = all_conflicts metadata['unresolved_files'] = \ diff --git a/rhodecode/lib/vcs/backends/svn/commit.py b/rhodecode/lib/vcs/backends/svn/commit.py --- a/rhodecode/lib/vcs/backends/svn/commit.py +++ b/rhodecode/lib/vcs/backends/svn/commit.py @@ -53,7 +53,7 @@ class SubversionCommit(base.BaseCommit): # which knows how to translate commit index and commit id self.raw_id = commit_id self.short_id = commit_id - self.id = 'r{}'.format(commit_id) + self.id = f'r{commit_id}' # TODO: Implement the following placeholder attributes self.nodes = {} @@ -199,7 +199,7 @@ class SubversionCommit(base.BaseCommit): return nodes.NodeKind.DIR else: raise CommitError( - "Node does not exist at the given path '{}'".format(path)) + f"Node does not exist at the given path '{path}'") @LazyProperty def _changes_cache(self): diff --git a/rhodecode/lib/vcs/backends/svn/repository.py b/rhodecode/lib/vcs/backends/svn/repository.py --- a/rhodecode/lib/vcs/backends/svn/repository.py +++ b/rhodecode/lib/vcs/backends/svn/repository.py @@ -221,7 +221,7 @@ class SubversionRepository(base.BaseRepo commit_idx = svn_rev - 1 if commit_idx >= len(self.commit_ids): raise CommitDoesNotExistError( - "Commit at index {} does not exist.".format(commit_idx)) + f"Commit at index {commit_idx} does not exist.") return commit_idx @staticmethod @@ -245,7 +245,7 @@ class SubversionRepository(base.BaseRepo def _check_path(self): if not os.path.exists(self.path): - raise VCSError('Path "{}" does not exist!'.format(self.path)) + raise VCSError(f'Path "{self.path}" does not exist!') if not self._remote.is_path_valid_repository(self.path): raise VCSError( 'Path "%s" does not contain a Subversion repository' % @@ -341,11 +341,11 @@ class SubversionRepository(base.BaseRepo return commit_id else: raise CommitDoesNotExistError( - "Commit {} does not exist.".format(commit_id)) + f"Commit {commit_id} does not exist.") if commit_id not in [ None, 'HEAD', 'tip', self.DEFAULT_BRANCH_NAME]: raise CommitDoesNotExistError( - "Commit id {} not understood.".format(commit_id)) + f"Commit id {commit_id} not understood.") svn_rev = self._remote.lookup('HEAD') return str(svn_rev) diff --git a/rhodecode/lib/vcs/utils/helpers.py b/rhodecode/lib/vcs/utils/helpers.py --- a/rhodecode/lib/vcs/utils/helpers.py +++ b/rhodecode/lib/vcs/utils/helpers.py @@ -51,7 +51,7 @@ def get_scm(path): if len(found_scms) > 1: found = ', '.join(x[0] for x in found_scms) raise VCSError( - 'More than one [{}] scm found at given path {}'.format(found, path)) + f'More than one [{found}] scm found at given path {path}') if len(found_scms) == 0: raise VCSError('No scm found at given path %s' % path) diff --git a/rhodecode/lib/view_utils.py b/rhodecode/lib/view_utils.py --- a/rhodecode/lib/view_utils.py +++ b/rhodecode/lib/view_utils.py @@ -1,4 +1,3 @@ - # Copyright (C) 2010-2023 RhodeCode GmbH # # This program is free software: you can redistribute it and/or modify @@ -55,7 +54,7 @@ def _format_ref_id(name, raw_id): def _format_ref_id_svn(name, raw_id): """Special way of formatting a reference for Subversion including path""" - return '%s@%s' % (name, raw_id) + return '{}@{}'.format(name, raw_id) def get_commit_from_ref_name(repo, ref_name, ref_type=None): @@ -83,6 +82,6 @@ def get_commit_from_ref_name(repo, ref_n commit_id = ref_type_mapping[ref_type][ref_name] except KeyError: raise RepositoryError( - '%s "%s" does not exist' % (ref_type, ref_name)) + '{} "{}" does not exist'.format(ref_type, ref_name)) return repo_scm.get_commit(commit_id) diff --git a/rhodecode/model/__init__.py b/rhodecode/model/__init__.py --- a/rhodecode/model/__init__.py +++ b/rhodecode/model/__init__.py @@ -1,4 +1,3 @@ - # Copyright (C) 2010-2023 RhodeCode GmbH # # This program is free software: you can redistribute it and/or modify diff --git a/rhodecode/model/auth_token.py b/rhodecode/model/auth_token.py --- a/rhodecode/model/auth_token.py +++ b/rhodecode/model/auth_token.py @@ -1,5 +1,3 @@ - - # Copyright (C) 2013-2023 RhodeCode GmbH # # This program is free software: you can redistribute it and/or modify diff --git a/rhodecode/model/changeset_status.py b/rhodecode/model/changeset_status.py --- a/rhodecode/model/changeset_status.py +++ b/rhodecode/model/changeset_status.py @@ -1,4 +1,3 @@ - # Copyright (C) 2010-2023 RhodeCode GmbH # # This program is free software: you can redistribute it and/or modify diff --git a/rhodecode/model/comment.py b/rhodecode/model/comment.py --- a/rhodecode/model/comment.py +++ b/rhodecode/model/comment.py @@ -1,5 +1,3 @@ - - # Copyright (C) 2011-2023 RhodeCode GmbH # # This program is free software: you can redistribute it and/or modify @@ -95,8 +93,7 @@ class CommentsModel(BaseModel): [comment_groups[_co.pull_request_version_id].append(_co) for _co in comments] def yield_comments(pos): - for co in comment_groups[pos]: - yield co + yield from comment_groups[pos] comment_versions = collections.defaultdict( lambda: collections.defaultdict(list)) @@ -402,7 +399,7 @@ class CommentsModel(BaseModel): commit_comment_url = self.get_url(comment, request=request) commit_comment_reply_url = self.get_url( comment, request=request, - anchor='comment-{}/?/ReplyToComment'.format(comment.comment_id)) + anchor=f'comment-{comment.comment_id}/?/ReplyToComment') target_repo_url = h.link_to( repo.repo_name, @@ -438,7 +435,7 @@ class CommentsModel(BaseModel): pr_comment_url = self.get_url(comment, request=request) pr_comment_reply_url = self.get_url( comment, request=request, - anchor='comment-{}/?/ReplyToComment'.format(comment.comment_id)) + anchor=f'comment-{comment.comment_id}/?/ReplyToComment') pr_url = h.route_url( 'pullrequest_show', @@ -595,7 +592,7 @@ class CommentsModel(BaseModel): comment = self.__get_commit_comment(comment) if anchor is None: - anchor = 'comment-{}'.format(comment.comment_id) + anchor = f'comment-{comment.comment_id}' if comment.pull_request: pull_request = comment.pull_request @@ -823,7 +820,7 @@ class CommentsModel(BaseModel): def _parse_comment_line_number(line_no): - """ + r""" Parses line numbers of the form "(o|n)\d+" and returns them in a tuple. """ old_line = None @@ -839,10 +836,10 @@ def _parse_comment_line_number(line_no): def _diff_to_comment_line_number(diff_line): if diff_line.new is not None: - return u'n{}'.format(diff_line.new) + return f'n{diff_line.new}' elif diff_line.old is not None: - return u'o{}'.format(diff_line.old) - return u'' + return f'o{diff_line.old}' + return '' def _diff_line_delta(a, b): @@ -852,4 +849,4 @@ def _diff_line_delta(a, b): return abs(a.old - b.old) else: raise ValueError( - "Cannot compute delta between {} and {}".format(a, b)) + f"Cannot compute delta between {a} and {b}") diff --git a/rhodecode/model/db.py b/rhodecode/model/db.py --- a/rhodecode/model/db.py +++ b/rhodecode/model/db.py @@ -1,4 +1,3 @@ - # Copyright (C) 2010-2023 RhodeCode GmbH # # This program is free software: you can redistribute it and/or modify diff --git a/rhodecode/model/forms.py b/rhodecode/model/forms.py --- a/rhodecode/model/forms.py +++ b/rhodecode/model/forms.py @@ -1,4 +1,3 @@ - # Copyright (C) 2010-2023 RhodeCode GmbH # # This program is free software: you can redistribute it and/or modify @@ -84,8 +83,8 @@ def LoginForm(localizer): min=1, not_empty=True, messages={ - 'empty': _(u'Please enter a login'), - 'tooShort': _(u'Enter a value %(min)i characters long or more') + 'empty': _('Please enter a login'), + 'tooShort': _('Enter a value %(min)i characters long or more') } ) @@ -95,8 +94,8 @@ def LoginForm(localizer): max=72, not_empty=True, messages={ - 'empty': _(u'Please enter a password'), - 'tooShort': _(u'Enter %(min)i characters or more')} + 'empty': _('Please enter a password'), + 'tooShort': _('Enter %(min)i characters or more')} ) remember = v.StringBoolean(if_missing=False) @@ -322,7 +321,7 @@ def RepoFieldForm(localizer): new_field_key = All(v.FieldKey(localizer), v.UnicodeString(strip=True, min=3, not_empty=True)) - new_field_value = v.UnicodeString(not_empty=False, if_missing=u'') + new_field_value = v.UnicodeString(not_empty=False, if_missing='') new_field_type = v.OneOf(['str', 'unicode', 'list', 'tuple'], if_missing='str') new_field_label = v.UnicodeString(not_empty=False) diff --git a/rhodecode/model/gist.py b/rhodecode/model/gist.py --- a/rhodecode/model/gist.py +++ b/rhodecode/model/gist.py @@ -1,5 +1,3 @@ - - # Copyright (C) 2013-2023 RhodeCode GmbH # # This program is free software: you can redistribute it and/or modify @@ -102,7 +100,7 @@ class GistModel(BaseModel): repo = Gist.get_by_access_id(gist_access_id) vcs_repo = repo.scm_instance() if not vcs_repo: - raise VCSError('Failed to load gist repository for {}'.format(repo)) + raise VCSError(f'Failed to load gist repository for {repo}') commit = vcs_repo.get_commit(commit_id=revision) return commit, [n for n in commit.get_node('/')] diff --git a/rhodecode/model/integration.py b/rhodecode/model/integration.py --- a/rhodecode/model/integration.py +++ b/rhodecode/model/integration.py @@ -1,5 +1,3 @@ - - # Copyright (C) 2011-2023 RhodeCode GmbH # # This program is free software: you can redistribute it and/or modify diff --git a/rhodecode/model/meta.py b/rhodecode/model/meta.py --- a/rhodecode/model/meta.py +++ b/rhodecode/model/meta.py @@ -1,4 +1,3 @@ - # Copyright (C) 2010-2023 RhodeCode GmbH # # This program is free software: you can redistribute it and/or modify diff --git a/rhodecode/model/notification.py b/rhodecode/model/notification.py --- a/rhodecode/model/notification.py +++ b/rhodecode/model/notification.py @@ -1,5 +1,3 @@ - - # Copyright (C) 2011-2023 RhodeCode GmbH # # This program is free software: you can redistribute it and/or modify @@ -391,7 +389,7 @@ class EmailNotificationModel(BaseModel): EmailNotificationModel.TYPE_TEST, **email_kwargs) """ - super(EmailNotificationModel, self).__init__() + super().__init__() self.rhodecode_instance_name = rhodecode.CONFIG.get('rhodecode_title') def _update_kwargs_for_render(self, kwargs): diff --git a/rhodecode/model/permission.py b/rhodecode/model/permission.py --- a/rhodecode/model/permission.py +++ b/rhodecode/model/permission.py @@ -1,4 +1,3 @@ - # Copyright (C) 2010-2023 RhodeCode GmbH # # This program is free software: you can redistribute it and/or modify @@ -283,7 +282,7 @@ class PermissionModel(BaseModel): # at that stage we validate all are passed inside form_result for _perm_key, perm_value in _global_perms.items(): if perm_value is None: - raise ValueError('Missing permission for %s' % (_perm_key,)) + raise ValueError('Missing permission for {}'.format(_perm_key)) if obj_type == 'user': p = self._make_new_user_perm(to_object, perm_value) diff --git a/rhodecode/model/pull_request.py b/rhodecode/model/pull_request.py --- a/rhodecode/model/pull_request.py +++ b/rhodecode/model/pull_request.py @@ -1,5 +1,3 @@ - - # Copyright (C) 2012-2023 RhodeCode GmbH # # This program is free software: you can redistribute it and/or modify diff --git a/rhodecode/model/repo.py b/rhodecode/model/repo.py --- a/rhodecode/model/repo.py +++ b/rhodecode/model/repo.py @@ -1,4 +1,3 @@ - # Copyright (C) 2010-2023 RhodeCode GmbH # # This program is free software: you can redistribute it and/or modify @@ -1067,7 +1066,7 @@ class RepoModel(BaseModel): _now = datetime.datetime.now() _ms = str(_now.microsecond).rjust(6, '0') - _d = 'rm__%s__%s' % (_now.strftime('%Y%m%d_%H%M%S_' + _ms), + _d = 'rm__{}__{}'.format(_now.strftime('%Y%m%d_%H%M%S_' + _ms), repo.just_name) if repo_group: # if repository is in group, prefix the removal path with the group @@ -1196,4 +1195,4 @@ class ReadmeMatch: return self.node.path def __repr__(self): - return '" % (self.__class__.__name__, self.user_id) + return "<{}('id:{}')>".format(self.__class__.__name__, self.user_id) class RepoTemp(object): @@ -69,7 +68,7 @@ class RepoTemp(object): self.repo_id = repo_id def __repr__(self): - return "<%s('id:%s')>" % (self.__class__.__name__, self.repo_id) + return "<{}('id:{}')>".format(self.__class__.__name__, self.repo_id) class SimpleCachedRepoList(object): @@ -91,7 +90,7 @@ class SimpleCachedRepoList(object): return len(self.db_repo_list) def __repr__(self): - return '<%s (%s)>' % (self.__class__.__name__, self.__len__()) + return '<{} ({})>'.format(self.__class__.__name__, self.__len__()) def __iter__(self): for dbr in self.db_repo_list: @@ -133,7 +132,7 @@ class _PermCheckIterator(object): return len(self.obj_list) def __repr__(self): - return '<%s (%s)>' % (self.__class__.__name__, self.__len__()) + return '<{} ({})>'.format(self.__class__.__name__, self.__len__()) def __iter__(self): for db_obj in self.obj_list: @@ -152,7 +151,7 @@ class RepoList(_PermCheckIterator): if not perm_set: perm_set = ['repository.read', 'repository.write', 'repository.admin'] - super(RepoList, self).__init__( + super().__init__( obj_list=db_repo_list, obj_attr='_repo_name', perm_set=perm_set, perm_checker=HasRepoPermissionAny, @@ -165,7 +164,7 @@ class RepoGroupList(_PermCheckIterator): if not perm_set: perm_set = ['group.read', 'group.write', 'group.admin'] - super(RepoGroupList, self).__init__( + super().__init__( obj_list=db_repo_group_list, obj_attr='_group_name', perm_set=perm_set, perm_checker=HasRepoGroupPermissionAny, @@ -178,7 +177,7 @@ class UserGroupList(_PermCheckIterator): if not perm_set: perm_set = ['usergroup.read', 'usergroup.write', 'usergroup.admin'] - super(UserGroupList, self).__init__( + super().__init__( obj_list=db_user_group_list, obj_attr='users_group_name', perm_set=perm_set, perm_checker=HasUserGroupPermissionAny, @@ -284,7 +283,7 @@ class ScmModel(BaseModel): config.set('extensions', 'largefiles', '') repo.update_commit_cache(config=config, cs_cache=None) if delete: - cache_namespace_uid = 'cache_repo.{}'.format(repo_id) + cache_namespace_uid = f'cache_repo.{repo_id}' rc_cache.clear_cache_namespace('cache_repo', cache_namespace_uid, method=rc_cache.CLEAR_INVALIDATE) def toggle_following_repo(self, follow_repo_id, user_id): diff --git a/rhodecode/model/user.py b/rhodecode/model/user.py --- a/rhodecode/model/user.py +++ b/rhodecode/model/user.py @@ -87,7 +87,7 @@ class UserModel(BaseModel): query = query.filter(User.active == true()) if name_contains: - ilike_expression = u'%{}%'.format(safe_str(name_contains)) + ilike_expression = f'%{safe_str(name_contains)}%' query = query.filter( or_( User.name.ilike(ilike_expression), @@ -387,7 +387,7 @@ class UserModel(BaseModel): self.add_auth_token( user=username, lifetime_minutes=-1, role=self.auth_token_role.ROLE_FEED, - description=u'Generated feed token') + description='Generated feed token') kwargs = new_user.get_dict() # backward compat, require api_keys present diff --git a/rhodecode/model/validators.py b/rhodecode/model/validators.py --- a/rhodecode/model/validators.py +++ b/rhodecode/model/validators.py @@ -129,7 +129,7 @@ def UniqueListFromString(localizer): def _convert_to_python(self, value, state): if isinstance(value, str): value = aslist(value, ',') - return super(_validator, self)._convert_to_python(value, state) + return super()._convert_to_python(value, state) return _validator @@ -951,7 +951,7 @@ def ValidIp(localizer): # we override the default to_python() call def to_python(self, value, state): - v = super(_validator, self).to_python(value, state) + v = super().to_python(value, state) v = safe_str(v.strip()) net = ipaddress.ip_network(address=v, strict=False) return str(net) @@ -1078,7 +1078,7 @@ def ValidPattern(localizer): new_item_id = name[len(pattern_name)+1:] def _field(name): - return '%s_%s_%s' % (prefix, name, new_item_id) + return '{}_{}_{}'.format(prefix, name, new_item_id) values = { 'issuetracker_pat': value.get(_field('pattern')),