view mercurial/interfaces/util.py @ 52478:d01af74e67b4

interfaces: convert `repository.imanifeststorage` from zope `Attribute` attrs This is the same transformation as b455dfddfed0 did for dirstate.
author Matt Harbison <matt_harbison@yahoo.com>
date Tue, 22 Oct 2024 22:41:04 -0400
parents 3c6809941280
children
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 annotations

if True:

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

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

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

        return wrapper