##// END OF EJS Templates
filter-traceback: minimal change to make 3.13 happy...
filter-traceback: minimal change to make 3.13 happy Python3.13 is including more context in the traceback for multi lines statement, so we need to extend the filtering. This is the minimal change, but the next changeset will do a larger change to convey where we effectively land

File last commit:

r52756:f4733654 default
r53406:3afe0be4 default
Show More
repoviewutil.py
53 lines | 1.6 KiB | text/x-python | PythonLexer
repoview: move subsettable in a dedicated module...
r42314 # repoviewutil.py - constaints data relevant to repoview.py and other module
#
# Copyright 2012 Pierre-Yves David <pierre-yves.david@ens-lyon.org>
# Logilab SA <contact@logilab.fr>
#
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.
Matt Harbison
typing: add `from __future__ import annotations` to most files...
r52756 from __future__ import annotations
branchcache: write branchmap in subset inheritance order...
r52380 from .. import error
repoview: move subsettable in a dedicated module...
r42314
### Nearest subset relation
# Nearest subset of filter X is a filter Y so that:
# * Y is included in X,
# * X - Y is as small as possible.
# This create and ordering used for branchmap purpose.
# the ordering may be partial
Augie Fackler
formatting: blacken the codebase...
r43346 subsettable = {
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 None: b'visible',
b'visible-hidden': b'visible',
b'visible': b'served',
b'served.hidden': b'served',
b'served': b'immutable',
b'immutable': b'base',
Augie Fackler
formatting: blacken the codebase...
r43346 }
branchcache: write branchmap in subset inheritance order...
r52380
def get_ordered_subset():
"""return a list of subset name from dependencies to dependents"""
_unfinalized = set(subsettable.values())
ordered = []
# the subset table is expected to be small so we do the stupid N² version
# of the algorithm
while _unfinalized:
this_level = []
for candidate in _unfinalized:
dependency = subsettable.get(candidate)
if dependency not in _unfinalized:
this_level.append(candidate)
if not this_level:
msg = "cyclic dependencies in repoview subset %r"
msg %= subsettable
raise error.ProgrammingError(msg)
this_level.sort(key=lambda x: x if x is not None else '')
ordered.extend(this_level)
_unfinalized.difference_update(this_level)
return ordered