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"])
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()))
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" )
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
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