Skip to content

Module treefrog.cli

None

None

View Source
from pathlib import Path

from typing import Any, Mapping, Sequence, TypedDict

from .parse.parsers import month, stage, year

from .parse.utils import character_name, most_used_character, opponent, user

from .rename import default_filename

from .tree import Tree

class CLIArgument(TypedDict):

    name_or_flags: Sequence[str]

    kwargs: Mapping[str, Any]

def organize(tree: Tree, args):

    if args.netplay_code:

        def opponent_netplay_code(game):

            return opponent(game, args.netplay_code).netplay.code

        def ordered_matchup(game):

            p1 = user(game, args.netplay_code)

            p2 = opponent(game, args.netplay_code)

            return f"{character_name(most_used_character(p1))} vs {character_name(most_used_character(p2))}"

        ordering = (year, month, opponent_netplay_code, ordered_matchup, stage)

        tree.organize(ordering=ordering)

    else:

        tree.organize()

def flatten(tree: Tree, args):

    tree.flatten()

def rename(tree: Tree, args):

    if args.default_rename:

        tree.rename(create_filename=default_filename)

    else:

        tree.rename()

root_folder: CLIArgument = {

    "name_or_flags": ["root_folder"],

    "kwargs": {"type": Path, "help": "Slippi folder root path"},

}

glob: CLIArgument = {

    "name_or_flags": ["-g", "--glob"],

    "kwargs": {"type": str, "default": "**/*.slp", "help": "The glob pattern to search with"},

}

show_progress: CLIArgument = {

    "name_or_flags": ["-p", "--show-progress"],

    "kwargs": {"action": "store_true", "help": "Whether to show a progress bar"},

}

netplay_code: CLIArgument = {

    "name_or_flags": ["-c", "--netplay-code"],

    "kwargs": {"type": str, "help": "Netplay code (e.g. DTB#566)"},

}

default_rename: CLIArgument = {

    "name_or_flags": ["-d", "--default-rename"],

    "kwargs": {"action": "store_true", "help": "Whether to restore the filenames to their defaults"},

}

Variables

1
default_rename
1
glob
1
netplay_code
1
root_folder
1
show_progress

Functions

flatten

1
2
3
4
def flatten(
    tree: treefrog.tree.Tree,
    args
)
View Source
def flatten(tree: Tree, args):

    tree.flatten()

organize

1
2
3
4
def organize(
    tree: treefrog.tree.Tree,
    args
)
View Source
def organize(tree: Tree, args):

    if args.netplay_code:

        def opponent_netplay_code(game):

            return opponent(game, args.netplay_code).netplay.code

        def ordered_matchup(game):

            p1 = user(game, args.netplay_code)

            p2 = opponent(game, args.netplay_code)

            return f"{character_name(most_used_character(p1))} vs {character_name(most_used_character(p2))}"

        ordering = (year, month, opponent_netplay_code, ordered_matchup, stage)

        tree.organize(ordering=ordering)

    else:

        tree.organize()

rename

1
2
3
4
def rename(
    tree: treefrog.tree.Tree,
    args
)
View Source
def rename(tree: Tree, args):

    if args.default_rename:

        tree.rename(create_filename=default_filename)

    else:

        tree.rename()

Classes

CLIArgument

1
2
3
4
5
class CLIArgument(
    /,
    *args,
    **kwargs
)
View Source
class CLIArgument(TypedDict):

    name_or_flags: Sequence[str]

    kwargs: Mapping[str, Any]

Ancestors (in MRO)

  • builtins.dict

Methods

clear

1
2
3
def clear(
    ...
)

D.clear() -> None. Remove all items from D.

copy

1
2
3
def copy(
    ...
)

D.copy() -> a shallow copy of D

fromkeys

1
2
3
4
5
def fromkeys(
    iterable,
    value=None,
    /
)

Create a new dictionary with keys from iterable and values set to value.

get

1
2
3
4
5
6
def get(
    self,
    key,
    default=None,
    /
)

Return the value for key if key is in the dictionary, else default.

items

1
2
3
def items(
    ...
)

D.items() -> a set-like object providing a view on D's items

keys

1
2
3
def keys(
    ...
)

D.keys() -> a set-like object providing a view on D's keys

pop

1
2
3
def pop(
    ...
)

D.pop(k[,d]) -> v, remove specified key and return the corresponding value.

If key is not found, d is returned if given, otherwise KeyError is raised

popitem

1
2
3
4
def popitem(
    self,
    /
)

Remove and return a (key, value) pair as a 2-tuple.

Pairs are returned in LIFO (last-in, first-out) order. Raises KeyError if the dict is empty.

setdefault

1
2
3
4
5
6
def setdefault(
    self,
    key,
    default=None,
    /
)

Insert key with a value of default if key is not in the dictionary.

Return the value for key if key is in the dictionary, else default.

update

1
2
3
def update(
    ...
)

D.update([E, ]**F) -> None. Update D from dict/iterable E and F.

If E is present and has a .keys() method, then does: for k in E: D[k] = E[k] If E is present and lacks a .keys() method, then does: for k, v in E: D[k] = v In either case, this is followed by: for k in F: D[k] = F[k]

values

1
2
3
def values(
    ...
)

D.values() -> an object providing a view on D's values