view mercurial/interfaces/util.py @ 47062:f38bf44e077f stable

black: make codebase compatible with black v21.4b2 and v20.8b1 I don't know what exact version of black made it care about these whitespace differences, but this is the version I got when I just installed it with `pip3 install black`. I'm intentionally not increasing the version of black required, as I don't want to force everyone to upgrade their version of black, and these fixes are backwards compatible with black v20.8b1. If there are more issues in the future and this becomes a maintenance burden I may do so in a future change. Tested with both versions of black (I got the older version via `pip3 install black==20.8b1`) Differential Revision: https://phab.mercurial-scm.org/D10539
author Kyle Lippincott <spectral@google.com>
date Fri, 30 Apr 2021 16:13:02 -0700
parents 687b865b95ad
children 6000f5b25c9b
line wrap: on
line source

# util.py - Utilities for declaring interfaces.
#
# Copyright 2018 Gregory Szorc <gregory.szorc@gmail.com>
#
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.

# zope.interface imposes a run-time cost due to module import overhead and
# bookkeeping for declaring interfaces. So, we use stubs for various
# zope.interface primitives unless instructed otherwise.

from __future__ import absolute_import

from .. import encoding

if encoding.environ.get(b'HGREALINTERFACES'):
    from ..thirdparty.zope import interface as zi

    Attribute = zi.Attribute
    Interface = zi.Interface
    implementer = zi.implementer
else:

    class Attribute(object):
        def __init__(self, __name__, __doc__=b''):
            pass

    class Interface(object):
        def __init__(
            self, name, bases=(), attrs=None, __doc__=None, __module__=None
        ):
            pass

    def implementer(*ifaces):
        def wrapper(cls):
            return cls

        return wrapper