Module paroxython.cli_tag
Tag one Python file and output the table of its taxa or labels.
Usage
paroxython tag [options] FILENAME
Options
-f --format=FORMAT Format of the output, either "md" (Markdown) or "tsv" (Tab Separated Values). [default: md] -l --labels Output the labels instead of the taxa. -t --taxonomy=PATH The path of a TSV file mapping labels onto taxa. If not specified, use the included default taxonomy: <https://github.com/laowantong/paroxython/blob/0.7.0/paroxython/resources/taxonomy.tsv>
Expand source code Browse GitHub
from pathlib import Path
from typing import List, Tuple, Optional
from typing_extensions import Literal
from .goodies import couple_to_string, print_exit
from .parse_program import ProgramParser
from .list_programs import get_program
from .map_taxonomy import Taxonomy
from .user_types import Source
def main(
source: Source,
tags: Literal["Taxon", "Label"] = "Taxon",
relative_path: Path = Path("."),
output_format: Literal["md", "tsv"] = "md",
taxonomy_path: Optional[Path] = None,
) -> str:
program = get_program(source, relative_path)
parse = ProgramParser()
program.labels[:] = parse(program)
couples: List[Tuple[str, str]] = [(tags, "Lines")]
if tags == "Label":
for (label_name, label_spans) in sorted(program.labels):
s = ", ".join(map(couple_to_string, sorted(label_spans)))
couples.append((label_name, s))
else:
taxonomy = Taxonomy(taxonomy_path)
taxa = taxonomy.to_taxa(program.labels)
for (taxon_name, taxon_spans) in sorted(taxa):
s = ", ".join(map(couple_to_string, sorted(taxon_spans.elements())))
couples.append((taxon_name, s))
if output_format == "md":
result = [f"| `{tag}` | {lines} |" for (tag, lines) in couples]
result[0] = result[0].replace("`", "")
result[1:1] = ["|:--|:--|"]
else:
result = [f"{tag}\t{lines}" for (tag, lines) in couples]
return "\n".join(result)
def cli_wrapper(args):
path = Path(args["FILENAME"])
try:
source = path.read_text()
except Exception as e:
print_exit(str(e))
result = main(
source=Source(source),
tags="Label" if args["--labels"] else "Taxon",
relative_path=path.parent,
output_format=args["--format"],
taxonomy_path=Path(args["--taxonomy"]) if args["--taxonomy"] else None,
)
print(result)
Functions
def main(source: Source,
tags: Literal['Taxon', 'Label'] = 'Taxon',
relative_path: pathlib.Path = PosixPath('.'),
output_format: Literal['md', 'tsv'] = 'md',
taxonomy_path: Union[pathlib.Path, NoneType] = None
) ‑> str-
Expand source code Browse GitHub
def main( source: Source, tags: Literal["Taxon", "Label"] = "Taxon", relative_path: Path = Path("."), output_format: Literal["md", "tsv"] = "md", taxonomy_path: Optional[Path] = None, ) -> str: program = get_program(source, relative_path) parse = ProgramParser() program.labels[:] = parse(program) couples: List[Tuple[str, str]] = [(tags, "Lines")] if tags == "Label": for (label_name, label_spans) in sorted(program.labels): s = ", ".join(map(couple_to_string, sorted(label_spans))) couples.append((label_name, s)) else: taxonomy = Taxonomy(taxonomy_path) taxa = taxonomy.to_taxa(program.labels) for (taxon_name, taxon_spans) in sorted(taxa): s = ", ".join(map(couple_to_string, sorted(taxon_spans.elements()))) couples.append((taxon_name, s)) if output_format == "md": result = [f"| `{tag}` | {lines} |" for (tag, lines) in couples] result[0] = result[0].replace("`", "") result[1:1] = ["|:--|:--|"] else: result = [f"{tag}\t{lines}" for (tag, lines) in couples] return "\n".join(result)
def cli_wrapper(args)
-
Expand source code Browse GitHub
def cli_wrapper(args): path = Path(args["FILENAME"]) try: source = path.read_text() except Exception as e: print_exit(str(e)) result = main( source=Source(source), tags="Label" if args["--labels"] else "Taxon", relative_path=path.parent, output_format=args["--format"], taxonomy_path=Path(args["--taxonomy"]) if args["--taxonomy"] else None, ) print(result)