Mercurial > hg-stable
view mercurial/diffutil.py @ 43076:2372284d9457
formatting: blacken the codebase
This is using my patch to black
(https://github.com/psf/black/pull/826) so we don't un-wrap collection
literals.
Done with:
hg files 'set:**.py - mercurial/thirdparty/** - "contrib/python-zstandard/**"' | xargs black -S
# skip-blame mass-reformatting only
# no-check-commit reformats foo_bar functions
Differential Revision: https://phab.mercurial-scm.org/D6971
author | Augie Fackler <augie@google.com> |
---|---|
date | Sun, 06 Oct 2019 09:45:02 -0400 |
parents | 78b270a55dc6 |
children | 687b865b95ad |
line wrap: on
line source
# diffutil.py - utility functions related to diff and patch # # Copyright 2006 Brendan Cully <brendan@kublai.com> # Copyright 2007 Chris Mason <chris.mason@oracle.com> # Copyright 2018 Octobus <octobus@octobus.net> # # This software may be used and distributed according to the terms of the # GNU General Public License version 2 or any later version. from __future__ import absolute_import from .i18n import _ from . import ( mdiff, pycompat, ) def diffallopts( ui, opts=None, untrusted=False, section='diff', configprefix='' ): '''return diffopts with all features supported and parsed''' return difffeatureopts( ui, opts=opts, untrusted=untrusted, section=section, git=True, whitespace=True, formatchanging=True, configprefix=configprefix, ) def difffeatureopts( ui, opts=None, untrusted=False, section='diff', git=False, whitespace=False, formatchanging=False, configprefix='', ): '''return diffopts with only opted-in features parsed Features: - git: git-style diffs - whitespace: whitespace options like ignoreblanklines and ignorews - formatchanging: options that will likely break or cause correctness issues with most diff parsers ''' def get(key, name=None, getter=ui.configbool, forceplain=None): if opts: v = opts.get(key) # diffopts flags are either None-default (which is passed # through unchanged, so we can identify unset values), or # some other falsey default (eg --unified, which defaults # to an empty string). We only want to override the config # entries from hgrc with command line values if they # appear to have been set, which is any truthy value, # True, or False. if v or isinstance(v, bool): return v if forceplain is not None and ui.plain(): return forceplain return getter( section, configprefix + (name or key), untrusted=untrusted ) # core options, expected to be understood by every diff parser buildopts = { 'nodates': get('nodates'), 'showfunc': get('show_function', 'showfunc'), 'context': get('unified', getter=ui.config), } buildopts['xdiff'] = ui.configbool('experimental', 'xdiff') if git: buildopts['git'] = get('git') # since this is in the experimental section, we need to call # ui.configbool directory buildopts['showsimilarity'] = ui.configbool( 'experimental', 'extendedheader.similarity' ) # need to inspect the ui object instead of using get() since we want to # test for an int hconf = ui.config('experimental', 'extendedheader.index') if hconf is not None: hlen = None try: # the hash config could be an integer (for length of hash) or a # word (e.g. short, full, none) hlen = int(hconf) if hlen < 0 or hlen > 40: msg = _("invalid length for extendedheader.index: '%d'\n") ui.warn(msg % hlen) except ValueError: # default value if hconf == 'short' or hconf == '': hlen = 12 elif hconf == 'full': hlen = 40 elif hconf != 'none': msg = _("invalid value for extendedheader.index: '%s'\n") ui.warn(msg % hconf) finally: buildopts['index'] = hlen if whitespace: buildopts['ignorews'] = get('ignore_all_space', 'ignorews') buildopts['ignorewsamount'] = get( 'ignore_space_change', 'ignorewsamount' ) buildopts['ignoreblanklines'] = get( 'ignore_blank_lines', 'ignoreblanklines' ) buildopts['ignorewseol'] = get('ignore_space_at_eol', 'ignorewseol') if formatchanging: buildopts['text'] = opts and opts.get('text') binary = None if opts is None else opts.get('binary') buildopts['nobinary'] = ( not binary if binary is not None else get('nobinary', forceplain=False) ) buildopts['noprefix'] = get('noprefix', forceplain=False) buildopts['worddiff'] = get('word_diff', 'word-diff', forceplain=False) return mdiff.diffopts(**pycompat.strkwargs(buildopts))