util.py
38 lines
| 1.0 KiB
| text/x-python
|
PythonLexer
Pulkit Goyal
|
r43079 | # 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. | ||||
Matt Harbison
|
r52756 | from __future__ import annotations | ||
Pulkit Goyal
|
r43079 | |||
Augie Fackler
|
r43346 | from .. import encoding | ||
Pulkit Goyal
|
r43079 | |||
Augie Fackler
|
r43347 | if encoding.environ.get(b'HGREALINTERFACES'): | ||
Augie Fackler
|
r43346 | from ..thirdparty.zope import interface as zi | ||
Pulkit Goyal
|
r43079 | |||
Attribute = zi.Attribute | ||||
Interface = zi.Interface | ||||
implementer = zi.implementer | ||||
else: | ||||
Augie Fackler
|
r43346 | |||
Gregory Szorc
|
r49801 | class Attribute: | ||
Augie Fackler
|
r43347 | def __init__(self, __name__, __doc__=b''): | ||
Pulkit Goyal
|
r43079 | pass | ||
Gregory Szorc
|
r49801 | class Interface: | ||
Augie Fackler
|
r43346 | def __init__( | ||
self, name, bases=(), attrs=None, __doc__=None, __module__=None | ||||
): | ||||
Pulkit Goyal
|
r43079 | pass | ||
def implementer(*ifaces): | ||||
def wrapper(cls): | ||||
return cls | ||||
return wrapper | ||||