mirror of
https://github.com/m-labs/artiq.git
synced 2024-12-22 18:04:03 +08:00
compiler: turn __repr__ into __str__ when sphinx is used. Closes #741
This commit is contained in:
parent
c3d765f745
commit
97e994700b
@ -3,6 +3,7 @@ The :mod:`types` module contains the classes describing the types
|
|||||||
in :mod:`asttyped`.
|
in :mod:`asttyped`.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
import builtins
|
||||||
import string
|
import string
|
||||||
from collections import OrderedDict
|
from collections import OrderedDict
|
||||||
from . import iodelay
|
from . import iodelay
|
||||||
@ -96,6 +97,8 @@ class TVar(Type):
|
|||||||
return self.find().fold(accum, fn)
|
return self.find().fold(accum, fn)
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
|
if getattr(builtins, "__in_sphinx__", False):
|
||||||
|
return str(self)
|
||||||
if self.parent is self:
|
if self.parent is self:
|
||||||
return "<artiq.compiler.types.TVar %d>" % id(self)
|
return "<artiq.compiler.types.TVar %d>" % id(self)
|
||||||
else:
|
else:
|
||||||
@ -142,6 +145,8 @@ class TMono(Type):
|
|||||||
return fn(accum, self)
|
return fn(accum, self)
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
|
if getattr(builtins, "__in_sphinx__", False):
|
||||||
|
return str(self)
|
||||||
return "artiq.compiler.types.TMono(%s, %s)" % (repr(self.name), repr(self.params))
|
return "artiq.compiler.types.TMono(%s, %s)" % (repr(self.name), repr(self.params))
|
||||||
|
|
||||||
def __getitem__(self, param):
|
def __getitem__(self, param):
|
||||||
@ -190,6 +195,8 @@ class TTuple(Type):
|
|||||||
return fn(accum, self)
|
return fn(accum, self)
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
|
if getattr(builtins, "__in_sphinx__", False):
|
||||||
|
return str(self)
|
||||||
return "artiq.compiler.types.TTuple(%s)" % repr(self.elts)
|
return "artiq.compiler.types.TTuple(%s)" % repr(self.elts)
|
||||||
|
|
||||||
def __eq__(self, other):
|
def __eq__(self, other):
|
||||||
@ -268,6 +275,8 @@ class TFunction(Type):
|
|||||||
return fn(accum, self)
|
return fn(accum, self)
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
|
if getattr(builtins, "__in_sphinx__", False):
|
||||||
|
return str(self)
|
||||||
return "artiq.compiler.types.TFunction({}, {}, {})".format(
|
return "artiq.compiler.types.TFunction({}, {}, {})".format(
|
||||||
repr(self.args), repr(self.optargs), repr(self.ret))
|
repr(self.args), repr(self.optargs), repr(self.ret))
|
||||||
|
|
||||||
@ -361,6 +370,8 @@ class TRPC(Type):
|
|||||||
return fn(accum, self)
|
return fn(accum, self)
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
|
if getattr(builtins, "__in_sphinx__", False):
|
||||||
|
return str(self)
|
||||||
return "artiq.compiler.types.TRPC({})".format(repr(self.ret))
|
return "artiq.compiler.types.TRPC({})".format(repr(self.ret))
|
||||||
|
|
||||||
def __eq__(self, other):
|
def __eq__(self, other):
|
||||||
@ -398,6 +409,8 @@ class TBuiltin(Type):
|
|||||||
return fn(accum, self)
|
return fn(accum, self)
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
|
if getattr(builtins, "__in_sphinx__", False):
|
||||||
|
return str(self)
|
||||||
return "artiq.compiler.types.{}({})".format(type(self).__name__, repr(self.name))
|
return "artiq.compiler.types.{}({})".format(type(self).__name__, repr(self.name))
|
||||||
|
|
||||||
def __eq__(self, other):
|
def __eq__(self, other):
|
||||||
@ -458,6 +471,8 @@ class TInstance(TMono):
|
|||||||
self.constant_attributes = set()
|
self.constant_attributes = set()
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
|
if getattr(builtins, "__in_sphinx__", False):
|
||||||
|
return str(self)
|
||||||
return "artiq.compiler.types.TInstance({}, {})".format(
|
return "artiq.compiler.types.TInstance({}, {})".format(
|
||||||
repr(self.name), repr(self.attributes))
|
repr(self.name), repr(self.attributes))
|
||||||
|
|
||||||
@ -473,6 +488,8 @@ class TModule(TMono):
|
|||||||
self.constant_attributes = set()
|
self.constant_attributes = set()
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
|
if getattr(builtins, "__in_sphinx__", False):
|
||||||
|
return str(self)
|
||||||
return "artiq.compiler.types.TModule({}, {})".format(
|
return "artiq.compiler.types.TModule({}, {})".format(
|
||||||
repr(self.name), repr(self.attributes))
|
repr(self.name), repr(self.attributes))
|
||||||
|
|
||||||
@ -512,6 +529,8 @@ class TValue(Type):
|
|||||||
return fn(accum, self)
|
return fn(accum, self)
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
|
if getattr(builtins, "__in_sphinx__", False):
|
||||||
|
return str(self)
|
||||||
return "artiq.compiler.types.TValue(%s)" % repr(self.value)
|
return "artiq.compiler.types.TValue(%s)" % repr(self.value)
|
||||||
|
|
||||||
def __eq__(self, other):
|
def __eq__(self, other):
|
||||||
@ -570,6 +589,8 @@ class TDelay(Type):
|
|||||||
return not (self == other)
|
return not (self == other)
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
|
if getattr(builtins, "__in_sphinx__", False):
|
||||||
|
return str(self)
|
||||||
if self.duration is None:
|
if self.duration is None:
|
||||||
return "<{}.TIndeterminateDelay>".format(__name__)
|
return "<{}.TIndeterminateDelay>".format(__name__)
|
||||||
elif self.cause is None:
|
elif self.cause is None:
|
||||||
|
@ -20,11 +20,10 @@ from unittest.mock import Mock
|
|||||||
import sphinx_rtd_theme
|
import sphinx_rtd_theme
|
||||||
|
|
||||||
|
|
||||||
# Hack-patch Sphinx so that ARTIQ-Python types are correctly printed
|
# Ensure that ARTIQ-Python types are correctly printed
|
||||||
# See: https://github.com/m-labs/artiq/issues/741
|
# See: https://github.com/m-labs/artiq/issues/741
|
||||||
from sphinx.ext import autodoc
|
import builtins
|
||||||
from sphinx.util import inspect
|
builtins.__in_sphinx__ = True
|
||||||
autodoc.repr = inspect.repr = str
|
|
||||||
|
|
||||||
|
|
||||||
# we cannot use autodoc_mock_imports (does not help with argparse)
|
# we cannot use autodoc_mock_imports (does not help with argparse)
|
||||||
|
Loading…
Reference in New Issue
Block a user