Source code for astropy.units.format.console
# Licensed under a 3-clause BSD style license - see LICENSE.rst
"""
Handles the "Console" unit format.
"""
from . import base, utils
[docs]
class Console(base.Base):
"""
Output-only format for to display pretty formatting at the
console.
For example::
>>> import astropy.units as u
>>> print(u.Ry.decompose().to_string('console')) # doctest: +FLOAT_CMP
2.1798721*10^-18 m^2 kg s^-2
>>> print(u.Ry.decompose().to_string('console', fraction='multiline')) # doctest: +FLOAT_CMP
m^2 kg
2.1798721*10^-18 ------
s^2
>>> print(u.Ry.decompose().to_string('console', fraction='inline')) # doctest: +FLOAT_CMP
2.1798721*10^-18 m^2 kg / s^2
"""
_times = "*"
_line = "-"
_space = " "
@classmethod
def _format_mantissa(cls, m):
return m
@classmethod
def _format_superscript(cls, number):
return f"^{number}"
@classmethod
def _format_fraction(cls, scale, numerator, denominator, fraction="multiline"):
if fraction != "multiline":
return super()._format_fraction(
scale, numerator, denominator, fraction=fraction
)
fraclength = max(len(numerator), len(denominator))
f = f"{{0:<{len(scale)}s}}{{1:^{fraclength}s}}"
return "\n".join(
(
f.format("", numerator),
f.format(scale, cls._line * fraclength),
f.format("", denominator),
)
)
[docs]
@classmethod
def to_string(cls, unit, fraction=False):
# Change default of fraction to False, i.e., we typeset
# without a fraction by default.
return super().to_string(unit, fraction=fraction)