Module paroxython.cli_collect
Walk a directory, tag its Python files and make a database of the results.
Usage
paroxython collect [options] DIRECTORY
Options
-c --cleanup=STR Transformation to apply to the source code before processing. [default: full] Currently available: • full: remove all blank lines, docstrings and comments (except Paroxython hints). • none: no transformation is applied. -e --skip=REGEX Filter out any file whose name fully matches this regular expression. NB: --glob precedes --skip. [default: (__init__|setup|.*[-_]tests?)\.py] -g --glob=PATTERN The names of the collected files must match this Unix- like glob pattern (not a regular expression). Special syntax: "**/" prefix means “this directory and all subdirectories, recursively”. [default: **/*.py] --log Print a detailed report of the labelling times. --no_timestamp Don't store programs' last modification date. -o --output=PATH The path of the resulting database. If not specified, create a JSON file under the name "DIRECTORY_db.json". Otherwise, use the extension (either ".json", ".sql" or ".sqlite") to decide the format of the tag database. [default: ] -t --taxonomy=PATH The path of a TSV file mapping labels onto taxa. If not specified, use the "taxonomy.tsv" present in DIRECTORY's parent. If absent, 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 .goodies import print_exit
from .make_db import TagDatabase
def cli_wrapper(args):
directory = Path(args["DIRECTORY"])
if not directory.is_dir():
print_exit(f"no directory at '{directory.absolute()}': aborted.")
taxonomy = args.get("--taxonomy")
if taxonomy:
taxonomy_path = Path(taxonomy)
else:
taxonomy_path = directory.parent / "taxonomy.tsv"
if not taxonomy_path.is_file():
taxonomy_path = None
db = TagDatabase(
directory=directory,
ignore_timestamps=args["--no_timestamp"],
cleanup_strategy=args["--cleanup"], # -> list_programs
skip_pattern=args["--skip"], # -> list_programs
glob_pattern=args["--glob"], # -> list_programs
print_performances=args["--log"], # -> labelled_programs
taxonomy_path=taxonomy_path, # -> Taxonomy
)
if not args["--output"]:
db.write_json()
elif args["--output"].endswith(".json"):
db.write_json(Path(args["--output"]))
elif args["--output"].endswith((".sqlite", ".sql")):
db.write_sqlite(Path(args["--output"]))
Functions
def cli_wrapper(args)
-
Expand source code Browse GitHub
def cli_wrapper(args): directory = Path(args["DIRECTORY"]) if not directory.is_dir(): print_exit(f"no directory at '{directory.absolute()}': aborted.") taxonomy = args.get("--taxonomy") if taxonomy: taxonomy_path = Path(taxonomy) else: taxonomy_path = directory.parent / "taxonomy.tsv" if not taxonomy_path.is_file(): taxonomy_path = None db = TagDatabase( directory=directory, ignore_timestamps=args["--no_timestamp"], cleanup_strategy=args["--cleanup"], # -> list_programs skip_pattern=args["--skip"], # -> list_programs glob_pattern=args["--glob"], # -> list_programs print_performances=args["--log"], # -> labelled_programs taxonomy_path=taxonomy_path, # -> Taxonomy ) if not args["--output"]: db.write_json() elif args["--output"].endswith(".json"): db.write_json(Path(args["--output"])) elif args["--output"].endswith((".sqlite", ".sql")): db.write_sqlite(Path(args["--output"]))