Source code for mendeleev.cli
# -*- coding: utf-8 -*-
"""Module defining the command line interface for mendeleev."""
import argparse
import textwrap
import colorama
import contextlib
from pyfiglet import Figlet
from mendeleev import element
from mendeleev.fetch import fetch_table
[docs]
def clielement() -> None:
"""
CLI for convenient printing of properties for a given element
"""
colorama.init(autoreset=True)
parser = argparse.ArgumentParser()
parser.add_argument(
"element", help="Element identifier: symbol, name or atomic number"
)
args = parser.parse_args()
with contextlib.suppress(ValueError):
args.element = int(args.element)
e = element(args.element)
f = Figlet("dotmatrix", justify="center")
symbol = f.renderText(e.symbol)
table = fetch_table("elements")
et = table[table["symbol"] == e.symbol].transpose()
et.drop("description", inplace=True)
et.drop("sources", inplace=True)
et.drop("uses", inplace=True)
et.index = et.index.str.replace("_", " ").str.capitalize()
et.sort_index(inplace=True)
# print the data
print(colorama.Fore.RED + symbol)
if e.description is not None:
print(colorama.Fore.BLUE + "Description\n===========\n")
print("\n".join(f" {s}" for s in textwrap.wrap(e.description, 70)))
if e.sources is not None:
print(colorama.Fore.BLUE + "\nSources\n=======\n")
print("\n".join(f" {s}" for s in textwrap.wrap(e.sources, 70)))
if e.uses is not None:
print(colorama.Fore.BLUE + "\nUses\n====\n")
print("\n".join(f" {s}" for s in textwrap.wrap(e.uses, 70)))
print(colorama.Fore.GREEN + "\nProperties\n==========\n")
print(et.to_string(justify="left", header=False))
if __name__ == "__main__":
clielement()