Ejemplo n.º 1
0
def _request_export_info() -> Tuple[Text, Text, Text]:
    """Request file path and export stories & nlu data to that path"""

    # export training data and quit
    questions = questionary.form(
        export_stories=questionary.text(
            message="Export stories to (if file exists, this "
                    "will append the stories)",
            default=PATHS["stories"]),
        export_nlu=questionary.text(
            message="Export NLU data to (if file exists, this will "
                    "merge learned data with previous training examples)",
            default=PATHS["nlu"]),
        export_domain=questionary.text(
            message="Export domain file to (if file exists, this "
                    "will be overwritten)",
            default=PATHS["domain"]),
    )

    answers = questions.ask()
    if not answers:
        sys.exit()

    return (answers["export_stories"],
            answers["export_nlu"],
            answers["export_domain"])
Ejemplo n.º 2
0
def example_form(inp):
    return form(q1=questionary.confirm("Hello?",
                                       input=inp,
                                       output=DummyOutput()),
                q2=questionary.select("World?",
                                      choices=["foo", "bar"],
                                      input=inp,
                                      output=DummyOutput()))
Ejemplo n.º 3
0
    def playlist_download(self):
        playlists = self.spotify.get_user_playlists()

        choices = [questionary.Choice("Saved Music", value=0)]
        choices.extend(
            [
                questionary.Choice(playlists[i].name, value=i + 1)
                for i in range(len(playlists))
            ]
        )

        answers = questionary.form(
            filename=questionary.text("What should the file be named?"),
            playlist_idx=questionary.select(
                "Which playlist would you like to download?", choices=choices
            ),
        ).ask()

        playlist_idx = answers["playlist_idx"]

        tracklist: List[tekore.model.FullTrack]

        if playlist_idx == 0:
            # Saved music
            tracklist = self.spotify.get_user_library()
        else:
            # Other playlist
            paging_tracks = playlists[playlist_idx - 1].tracks
            tracklist = [
                track.track for track in paging_tracks.items if not track.is_local
            ]

        processed_tracks = [
            {
                "Title": track.name,
                "Album Artist": ", ".join(
                    [artist.name for artist in track.album.artists]
                ),
                "Album": track.album.name,
            }
            for track in tracklist
        ]

        pyexcel.save_as(
            records=processed_tracks, dest_file_name=answers["filename"] + ".xlsx"
        )
Ejemplo n.º 4
0
def collect_project_init_info(ctx, project=None):
    defaults = {
        "full_name": "Organization Name",
        "email": f"{project.git.user_email}",
        "project_title": "Awesome Workflow Packages",
        "github_account": "github-account",
        "project_slug": "github-repo",
    }

    project_slug = questionary.text(
        f"Project name / GitHub repo name [{defaults['project_slug']}]:",
        default="").ask()

    if project_slug is None:
        ctx.abort()
    elif project_slug == '':
        project_slug = defaults['project_slug']

    if not re.match(PRJ_NAME_REGEX, project_slug):
        echo(
            f"Error: '{project_slug}' is not a valid project name. Expected pattern: '{PRJ_NAME_REGEX}'"
        )
        ctx.abort()

    if os.path.isdir(project_slug):
        echo(f"Error: '{project_slug}' directory already exists")
        ctx.abort()

    answers = questionary.form(
        github_account=questionary.text(
            f"GitHub account [{defaults['github_account']}]:", default=""),
        project_title=questionary.text(
            f"Project title [{defaults['project_title']}]:", default=""),
        full_name=questionary.text(
            f"Organization or your name [{defaults['full_name']}]:",
            default=""),
        email=questionary.text(f"Your email [{defaults['email']}]:",
                               default=""),
        open_source_license=questionary.select(
            "Open source license:",
            choices=[
                "MIT", "BSD", "ISC", "Apache Software License 2.0",
                "GNU General Public License v3", "Not open source"
            ])).ask()

    if not answers:
        ctx.abort()

    answers = {'project_slug': project_slug, **answers}

    for q in answers:
        if answers[q] == "" and defaults.get(q):
            answers[q] = defaults[q]

    if not re.match(GIT_ACCT_REGEX, answers['github_account']):
        echo(
            f"Invalid GitHub account: '{answers['github_account']}'. Excepted pattern: '{GIT_ACCT_REGEX}'"
        )
        ctx.abort()

    echo(json.dumps(answers, indent=4))
    res = questionary.confirm("Please confirm the information and continue:",
                              default=True).ask()

    if not res:
        ctx.abort()

    return answers
Ejemplo n.º 5
0
def collect_new_pkg_info(ctx, project=None, template=None):
    pkg_type = os.path.basename(template)

    defaults = {
        "full_name": f"{project.git.user_name}",
        "email": f"{project.git.user_email}",
        "pkg_version": "0.1.0",
    }

    if pkg_type == 'tool':
        defaults.update({
            "pkg_description": "FastQC tool",
            "keywords": "bioinformatics, seq, qc metrics",
            "docker_base_image": "pegi3s/fastqc:0.11.9",
            "container_registry": "ghcr.io",
            "registry_account": f"{project.repo_account}",
            "dependencies": "",
            "devDependencies": "",
        })
    elif pkg_type == 'workflow':
        defaults.update({
            "pkg_description":
            "FastQC workflow",
            "keywords":
            "bioinformatics, seq, qc metrics",
            "dependencies":
            "github.com/icgc-argo/demo-wfpkgs/[email protected], "
            "github.com/icgc-tcga-pancancer/awesome-wfpkgs1/[email protected]",
            "devDependencies":
            "",
        })
    elif pkg_type == 'function':
        defaults.update({
            "pkg_description": "Awesome functions",
            "keywords": "bioinformatics",
            "dependencies": "",
            "devDependencies": "",
        })

    answers_1 = questionary.form(
        full_name=questionary.text(f"Your name [{defaults['full_name']}]:",
                                   default=""),
        email=questionary.text(f"Your email [{defaults['email']}]:",
                               default=""),
        pkg_version=questionary.text(
            f"Package version [{defaults['pkg_version']}]:", default=""),
        pkg_description=questionary.text(
            f"Package description [{defaults['pkg_description']}]:",
            default=""),
        keywords=questionary.text(
            f"Keywords (use ',' to separate keywords) [{defaults['keywords']}]:",
            default=""),
    ).ask()

    if not answers_1:
        ctx.abort()

    if answers_1.get('pkg_version') and not re.match(PKG_VER_REGEX,
                                                     answers_1['pkg_version']):
        echo(
            f"Error: '{answers_1['pkg_version']}' is not a valid package version. "
            f"Expected pattern: '{PKG_VER_REGEX}'")
        ctx.abort()

    if pkg_type == 'tool':
        tool_only_answers = questionary.form(
            docker_base_image=questionary.text(
                f"Docker base image [{defaults.get('docker_base_image', '')}]:",
                default=""),
            container_registry=questionary.text(
                f"Container registory [{defaults.get('container_registry', '')}]:",
                default=""),
            registry_account=questionary.text(
                f"Container registory account [{defaults.get('registry_account', '')}]:",
                default=""),
        ).ask()

        if not tool_only_answers:
            ctx.abort()

        if tool_only_answers.get('registry_account') and \
                not re.match(CONTAINER_REG_ACCT_REGEX, tool_only_answers['registry_account']):
            echo(
                f"Error: '{tool_only_answers['registry_account']}' is not a valid container registry account. "
                f"Expected pattern: '{CONTAINER_REG_ACCT_REGEX}'")
            ctx.abort()

    else:
        tool_only_answers = {}

    dependencies = questionary.text(
        f"Dependencies (use ',' to separate dependencies) [{defaults['dependencies']}]:",
        default="").ask()

    if dependencies is None:
        ctx.abort()
    elif dependencies == '':
        dependencies = defaults['dependencies']

    devDependencies = questionary.text(
        f"devDependencies (use ',' to separate devDependencies) [{defaults['devDependencies']}]:",
        default="").ask()

    if devDependencies is None:
        ctx.abort()
    elif devDependencies == '':
        devDependencies = defaults['devDependencies']

    answers = {
        **answers_1,
        **tool_only_answers, 'dependencies': dependencies,
        'devDependencies': devDependencies
    }

    for q in answers:
        if answers[q] == "" and defaults.get(q):
            answers[q] = defaults[q]

    echo(json.dumps(answers, indent=4))
    res = questionary.confirm("Please confirm the information and continue:",
                              default=True).ask()

    if not res:
        ctx.abort()

    return answers