From 3e85c3829d57429cf4325cb499f46a2fa18c2f20 Mon Sep 17 00:00:00 2001 From: Bertrand Benjamin Date: Tue, 17 Sep 2019 19:03:21 +0200 Subject: [PATCH 01/10] Feat: add dependencies --- setup.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/setup.py b/setup.py index dc7de1a..900354c 100644 --- a/setup.py +++ b/setup.py @@ -5,7 +5,7 @@ from setuptools import setup, find_packages setup( name='Recopytex', - version='0.1', + version='1.1.1', description='Assessment analysis', author='Benjamin Bertrand', author_email='', @@ -13,6 +13,10 @@ setup( include_package_data=True, install_requires=[ 'Click', + 'pandas', + 'numpy', + 'papermill', + 'pyyaml', ], entry_points=''' [console_scripts] From fe3280b91d6f1ab28043a571e88a657cf0652b9e Mon Sep 17 00:00:00 2001 From: Bertrand Benjamin Date: Tue, 17 Sep 2019 19:29:43 +0200 Subject: [PATCH 02/10] Feat: Process all csv if nothing is specify --- recopytex/scripts/recopytex.py | 42 +++++++++++++++++++++++----------- 1 file changed, 29 insertions(+), 13 deletions(-) diff --git a/recopytex/scripts/recopytex.py b/recopytex/scripts/recopytex.py index 83885e0..8bb12b2 100644 --- a/recopytex/scripts/recopytex.py +++ b/recopytex/scripts/recopytex.py @@ -26,18 +26,8 @@ def print_config(): click.echo(config) -@cli.command() -@click.argument("csv_file") -def report(csv_file): - csv = Path(csv_file) - if not csv.exists(): - click.echo(f"{csv_file} does not exists") - sys.exit(1) - if csv.suffix != ".csv": - click.echo(f"{csv_file} has to be a csv file") - sys.exit(1) - - csv_file = Path(csv_file) +def reporting(csv_file): + #csv_file = Path(csv_file) tribe_dir = csv_file.parent csv_filename = csv_file.name.split(".")[0] @@ -46,7 +36,7 @@ def report(csv_file): try: date = datetime.strptime(date, "%y%m%d") except ValueError: - date = None + date = datetime.today().strptime(date, "%y%m%d") tribe = str(tribe_dir).split("/")[-1] @@ -64,6 +54,32 @@ def report(csv_file): ), ) +@cli.command() +@click.argument("csv_file", required=False) +def report(csv_file=""): + if csv_file: + csv = Path(csv_file) + if not csv.exists(): + click.echo(f"{csv_file} does not exists") + sys.exit(1) + if csv.suffix != ".csv": + click.echo(f"{csv_file} has to be a csv file") + sys.exit(1) + csvs = [csv] + else: + csvs = list(Path(config["source"]).glob('**/*.csv')) + + for csv in csvs: + click.echo(f"Processing {csv}") + try: + reporting(csv) + except pm.exceptions.PapermillExecutionError as e: + click.echo(f"Error with {csv}: {e}") + + + + + # with open(csv_file.parent / "description.yml") as f: # tribe_desc = yaml.load(f, Loader=yaml.FullLoader) From 7a0bb4179df0600df079a52833f105f5de0fb59e Mon Sep 17 00:00:00 2001 From: Bertrand Benjamin Date: Tue, 24 Sep 2019 15:36:24 +0200 Subject: [PATCH 03/10] Feat: clean recopytex.py --- recopytex/scripts/recopytex.py | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/recopytex/scripts/recopytex.py b/recopytex/scripts/recopytex.py index 8bb12b2..dbfa045 100644 --- a/recopytex/scripts/recopytex.py +++ b/recopytex/scripts/recopytex.py @@ -76,22 +76,3 @@ def report(csv_file=""): except pm.exceptions.PapermillExecutionError as e: click.echo(f"Error with {csv}: {e}") - - - - - # with open(csv_file.parent / "description.yml") as f: - # tribe_desc = yaml.load(f, Loader=yaml.FullLoader) - - # template = Path(config["templates"]) / "tpl_student.ipynb" - # dest = Path(config["output"]) / tribe / csv_filename / "students" - # dest.mkdir(parents=True, exist_ok=True) - - # for st in tribe_desc["students"]: - # click.echo(f"Building {st} report on {assessment}") - # pm.execute_notebook( - # str(template), - # str(dest / f"{st}.ipynb"), - # parameters=dict(tribe=tribe, student=st, source=str(tribe_dir.absolute())), - # ) - From 6fb11cb0545f04643b2f0e53d2b7d8980981d12b Mon Sep 17 00:00:00 2001 From: Bertrand Benjamin Date: Tue, 24 Sep 2019 15:41:57 +0200 Subject: [PATCH 04/10] Feat: report a csv file, a directory or all --- recopytex/scripts/recopytex.py | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/recopytex/scripts/recopytex.py b/recopytex/scripts/recopytex.py index dbfa045..fc8ab11 100644 --- a/recopytex/scripts/recopytex.py +++ b/recopytex/scripts/recopytex.py @@ -55,18 +55,25 @@ def reporting(csv_file): ) @cli.command() -@click.argument("csv_file", required=False) -def report(csv_file=""): - if csv_file: - csv = Path(csv_file) - if not csv.exists(): - click.echo(f"{csv_file} does not exists") - sys.exit(1) - if csv.suffix != ".csv": - click.echo(f"{csv_file} has to be a csv file") - sys.exit(1) - csvs = [csv] - else: +@click.argument("target", required=False) +def report(target=""): + """ Make a report for the eval + + :param target: csv file or a directory where csvs are + """ + try: + if target.endswith(".csv"): + csv = Path(target) + if not csv.exists(): + click.echo(f"{target} does not exists") + sys.exit(1) + if csv.suffix != ".csv": + click.echo(f"{target} has to be a csv file") + sys.exit(1) + csvs = [csv] + else: + csvs = list(Path(target).glob('**/*.csv')) + except AttributeError: csvs = list(Path(config["source"]).glob('**/*.csv')) for csv in csvs: From 409b80994a6ebb46f6ca29bf2f30400265796b35 Mon Sep 17 00:00:00 2001 From: Bertrand Benjamin Date: Wed, 1 Jan 2020 15:29:30 +0100 Subject: [PATCH 05/10] Feat: no half_point rounding in converting level to score --- recopytex/df_marks_manip.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/recopytex/df_marks_manip.py b/recopytex/df_marks_manip.py index 8d1e570..a39b3d0 100644 --- a/recopytex/df_marks_manip.py +++ b/recopytex/df_marks_manip.py @@ -44,7 +44,8 @@ def score_to_mark(x): if x[COLUMNS["is_leveled"]]: if x[COLUMNS["score"]] not in [0, 1, 2, 3]: raise ValueError(f"The evaluation is out of range: {x[COLUMNS['score']]} at {x}") - return round_half_point(x[COLUMNS["score"]] * x[COLUMNS["score_rate"]] / 3) + #return round_half_point(x[COLUMNS["score"]] * x[COLUMNS["score_rate"]] / 3) + return round(x[COLUMNS["score"]] * x[COLUMNS["score_rate"]] / 3, 2) if x[COLUMNS["score"]] > x[COLUMNS["score_rate"]]: raise ValueError( From 7d2cde304d22d26f8fef519a59a2cb7e7db5ba7f Mon Sep 17 00:00:00 2001 From: Bertrand Benjamin Date: Wed, 22 Jan 2020 19:49:08 +0100 Subject: [PATCH 06/10] Feat: Prepare prompt to creat new csv score file --- recopytex/scripts/config.py | 10 +++ recopytex/scripts/prepare_csv.py | 120 +++++++++++++++++++++++++++++++ recopytex/scripts/recopytex.py | 33 ++++++--- 3 files changed, 155 insertions(+), 8 deletions(-) create mode 100644 recopytex/scripts/config.py create mode 100644 recopytex/scripts/prepare_csv.py diff --git a/recopytex/scripts/config.py b/recopytex/scripts/config.py new file mode 100644 index 0000000..9ac61ef --- /dev/null +++ b/recopytex/scripts/config.py @@ -0,0 +1,10 @@ +#!/usr/bin/env python +# encoding: utf-8 + +import yaml + +CONFIGPATH = "recoconfig.yml" + +with open(CONFIGPATH, "r") as configfile: + config = yaml.load(configfile, Loader=yaml.FullLoader) + diff --git a/recopytex/scripts/prepare_csv.py b/recopytex/scripts/prepare_csv.py new file mode 100644 index 0000000..309109e --- /dev/null +++ b/recopytex/scripts/prepare_csv.py @@ -0,0 +1,120 @@ +#!/usr/bin/env python +# encoding: utf-8 + +import click +from pathlib import Path +from datetime import datetime +from PyInquirer import prompt, print_json + +from .config import config + +def prepare_csv(): + click.echo(f"Préparation d'un nouveau devoir") + + eval_questions = [ + { + "type": "input", + "name": "evalname", + "message": "Nom de l'évaluation", + }, + { + "type": "input", + "name": "tribe", + "message": "Classe concernée", + }, + { + "type": "input", + "name": "date", + "message": "Date du devoir", + "filter": lambda val: datetime.strptime(val, "%y%m%d") + }, + { + "type": "list", + "name": "term", + "message": "Trimestre", + "choices": ["1", "2", "3"], + } + ] + + exercise_questions = [ + { + "type": "input", + "name": "exercisename", + "message": "Nom de l'exercice" + }, + ] + + item_questions = [ + { + "type": "input", + "name": "itemname", + "message": "Nom de l'item", + }, + { + "type": "input", + "name": "comment", + "message": "Description", + }, + { + "type": "list", + "name": "competence", + "message": "Competence", + "choices": ["Cher", "Rep", "Mod", "Rai", "Cal", "Com"], + }, + { + "type": "input", + "name": "domain", + "message": "Domaine", + }, + { + "type": "confirm", + "name": "is_leveled", + "message": "Évaluation par niveau", + "default": True + }, + { + "type": "input", + "name": "scorerate", + "message": "Bareme" + }, + { + "type": "confirm", + "name": "correct", + "message": "Tout est correct?", + "default": True + }, + { + "type": "confirm", + "name": "add_item", + "message": "Ajouter un autre item", + "default": True, + }, + ] + + eval_ans = prompt(eval_questions) + + + items = [] + add_exo = True + while add_exo: + click.echo(f"Nouvel exercice") + exercise_ans = prompt(exercise_questions) + + add_item = True + while add_item: + click.echo(f"Nouvelle question pour l'exercice {exercise_ans['exercisename']}") + item_ans = prompt(item_questions) + if item_ans["correct"]: + add_item = item_ans["add_item"] + item_ans.update(eval_ans) + item_ans.update(exercise_ans) + items.append(item_ans) + + add_exo = prompt([{ + "type": "confirm", + "name": "add_exo", + "message": "Ajouter un autre exercice", + "default": True + }])["add_exo"] + + return items diff --git a/recopytex/scripts/recopytex.py b/recopytex/scripts/recopytex.py index fc8ab11..65bee8c 100644 --- a/recopytex/scripts/recopytex.py +++ b/recopytex/scripts/recopytex.py @@ -8,10 +8,8 @@ import sys import papermill as pm from datetime import datetime -CONFIGPATH = "recoconfig.yml" - -with open(CONFIGPATH, "r") as config: - config = yaml.load(config, Loader=yaml.FullLoader) +from .prepare_csv import prepare_csv +from .config import config @click.group() @@ -27,7 +25,7 @@ def print_config(): def reporting(csv_file): - #csv_file = Path(csv_file) + # csv_file = Path(csv_file) tribe_dir = csv_file.parent csv_filename = csv_file.name.split(".")[0] @@ -50,10 +48,14 @@ def reporting(csv_file): str(template), str(dest / f"{assessment}.ipynb"), parameters=dict( - tribe=tribe, assessment=assessment, date=f"{date:%d/%m/%y}", csv_file=str(csv_file.absolute()) + tribe=tribe, + assessment=assessment, + date=f"{date:%d/%m/%y}", + csv_file=str(csv_file.absolute()), ), ) + @cli.command() @click.argument("target", required=False) def report(target=""): @@ -72,9 +74,9 @@ def report(target=""): sys.exit(1) csvs = [csv] else: - csvs = list(Path(target).glob('**/*.csv')) + csvs = list(Path(target).glob("**/*.csv")) except AttributeError: - csvs = list(Path(config["source"]).glob('**/*.csv')) + csvs = list(Path(config["source"]).glob("**/*.csv")) for csv in csvs: click.echo(f"Processing {csv}") @@ -83,3 +85,18 @@ def report(target=""): except pm.exceptions.PapermillExecutionError as e: click.echo(f"Error with {csv}: {e}") + +@cli.command() +def prepare(): + """ Prepare csv file """ + + items = prepare_csv() + + click.echo(items) + + +@cli.command() +@click.argument("tribe") +def random_pick(tribe): + """ Randomly pick a student """ + pass From 33117cde719ec3ef2ac13caed70be6a9993c33c5 Mon Sep 17 00:00:00 2001 From: Bertrand Benjamin Date: Wed, 22 Jan 2020 21:38:52 +0100 Subject: [PATCH 07/10] Feat: Questionnary is ok --- recopytex/scripts/prepare_csv.py | 155 +++++++++++++++++-------------- 1 file changed, 86 insertions(+), 69 deletions(-) diff --git a/recopytex/scripts/prepare_csv.py b/recopytex/scripts/prepare_csv.py index 309109e..535c1ff 100644 --- a/recopytex/scripts/prepare_csv.py +++ b/recopytex/scripts/prepare_csv.py @@ -8,113 +8,130 @@ from PyInquirer import prompt, print_json from .config import config + +class PromptAbortException(EOFError): + def __init__(self, message, errors=None): + + # Call the base class constructor with the parameters it needs + super(PromptAbortException, self).__init__("Abort questionnary", errors) + + +def get_tribes(answers): + """ List tribes based on subdirectory of config["source"] which have an "eleves.csv" file inside """ + return [ + p.name for p in Path(config["source"]).iterdir() if (p / "eleves.csv").exists() + ] + + def prepare_csv(): + items = new_eval() + + +def new_eval(answers={}): click.echo(f"Préparation d'un nouveau devoir") eval_questions = [ + {"type": "input", "name": "evalname", "message": "Nom de l'évaluation",}, { - "type": "input", - "name": "evalname", - "message": "Nom de l'évaluation", - }, - { - "type": "input", + "type": "list", "name": "tribe", "message": "Classe concernée", + "choices": get_tribes, }, { "type": "input", "name": "date", - "message": "Date du devoir", - "filter": lambda val: datetime.strptime(val, "%y%m%d") + "message": "Date du devoir (%y%m%d)", + "default": datetime.today().strftime("%y%m%d"), + "filter": lambda val: datetime.strptime(val, "%y%m%d"), }, { "type": "list", "name": "term", "message": "Trimestre", "choices": ["1", "2", "3"], - } + }, ] + eval_ans = prompt(eval_questions) + + items = [] + add_exo = True + while add_exo: + ex_items = new_exercice(eval_ans) + items += ex_items + add_exo = prompt( + [ + { + "type": "confirm", + "name": "add_exo", + "message": "Ajouter un autre exercice", + "default": True, + } + ] + )["add_exo"] + return items + + +def new_exercice(answers={}): exercise_questions = [ - { - "type": "input", - "name": "exercisename", - "message": "Nom de l'exercice" - }, + {"type": "input", "name": "exercisename", "message": "Nom de l'exercice"}, ] + click.echo(f"Nouvel exercice") + exercise_ans = prompt(exercise_questions, answers=answers) + + items = [] + + add_item = True + while add_item: + try: + item_ans = new_item(exercise_ans) + except PromptAbortException: + click.echo("Création de l'item annulée") + else: + items.append(item_ans) + add_item = prompt( + [ + { + "type": "confirm", + "name": "add_item", + "message": f"Ajouter un autre item pour l'exercice {exercise_ans['exercisename']}", + "default": True, + } + ] + )["add_item"] + + return items + + +def new_item(answers={}): item_questions = [ - { - "type": "input", - "name": "itemname", - "message": "Nom de l'item", - }, - { - "type": "input", - "name": "comment", - "message": "Description", - }, + {"type": "input", "name": "itemname", "message": "Nom de l'item",}, + {"type": "input", "name": "comment", "message": "Description",}, { "type": "list", "name": "competence", "message": "Competence", "choices": ["Cher", "Rep", "Mod", "Rai", "Cal", "Com"], }, - { - "type": "input", - "name": "domain", - "message": "Domaine", - }, + {"type": "input", "name": "domain", "message": "Domaine",}, { "type": "confirm", "name": "is_leveled", "message": "Évaluation par niveau", - "default": True - }, - { - "type": "input", - "name": "scorerate", - "message": "Bareme" + "default": True, }, + {"type": "input", "name": "scorerate", "message": "Bareme"}, { "type": "confirm", "name": "correct", "message": "Tout est correct?", - "default": True - }, - { - "type": "confirm", - "name": "add_item", - "message": "Ajouter un autre item", "default": True, }, ] - - eval_ans = prompt(eval_questions) - - - items = [] - add_exo = True - while add_exo: - click.echo(f"Nouvel exercice") - exercise_ans = prompt(exercise_questions) - - add_item = True - while add_item: - click.echo(f"Nouvelle question pour l'exercice {exercise_ans['exercisename']}") - item_ans = prompt(item_questions) - if item_ans["correct"]: - add_item = item_ans["add_item"] - item_ans.update(eval_ans) - item_ans.update(exercise_ans) - items.append(item_ans) - - add_exo = prompt([{ - "type": "confirm", - "name": "add_exo", - "message": "Ajouter un autre exercice", - "default": True - }])["add_exo"] - - return items + click.echo(f"Nouvelle question pour l'exercice {answers['exercisename']}") + item_ans = prompt(item_questions, answers=answers) + if item_ans["correct"]: + return item_ans + raise PromptAbortException("Abort item creation") From 7e026bedb24c1ca8bef3b71b3d63f8b0d6916e81 Mon Sep 17 00:00:00 2001 From: Bertrand Benjamin Date: Wed, 22 Jan 2020 22:44:17 +0100 Subject: [PATCH 08/10] Feat: Save to csv works --- recopytex/config.py | 4 ++-- recopytex/scripts/prepare_csv.py | 39 +++++++++++++++++++++++++------- 2 files changed, 33 insertions(+), 10 deletions(-) diff --git a/recopytex/config.py b/recopytex/config.py index c5eb096..75413d7 100644 --- a/recopytex/config.py +++ b/recopytex/config.py @@ -2,16 +2,16 @@ # encoding: utf-8 NO_ST_COLUMNS = { - "term": "Trimestre", "assessment": "Nom", + "term": "Trimestre", "date": "Date", "exercise": "Exercice", "question": "Question", "competence": "Competence", "theme": "Domaine", "comment": "Commentaire", - "score_rate": "Bareme", "is_leveled": "Est_nivele", + "score_rate": "Bareme", } COLUMNS = { diff --git a/recopytex/scripts/prepare_csv.py b/recopytex/scripts/prepare_csv.py index 535c1ff..38edc4c 100644 --- a/recopytex/scripts/prepare_csv.py +++ b/recopytex/scripts/prepare_csv.py @@ -5,8 +5,11 @@ import click from pathlib import Path from datetime import datetime from PyInquirer import prompt, print_json +import pandas as pd +import numpy as np from .config import config +from ..config import NO_ST_COLUMNS class PromptAbortException(EOFError): @@ -26,12 +29,32 @@ def get_tribes(answers): def prepare_csv(): items = new_eval() + item = items[0] + # item = {"tribe": "308", "date": datetime.today(), "assessment": "plop"} + csv_output = ( + Path(config["source"]) + / item["tribe"] + / f"{item['date']:%y%m%d}_{item['assessment']}.csv" + ) + + students = pd.read_csv(Path(config["source"]) / item["tribe"] / "eleves.csv")["Nom"] + + columns = list(NO_ST_COLUMNS.keys()) + items = [[it[c] for c in columns] for it in items] + columns = list(NO_ST_COLUMNS.values()) + items_df = pd.DataFrame.from_records(items, columns=columns) + for s in students: + items_df[s] = np.nan + + items_df.to_csv(csv_output, index=False, date_format="%d/%m/%Y") + click.echo(f"Saving csv file to {csv_output}") + def new_eval(answers={}): click.echo(f"Préparation d'un nouveau devoir") eval_questions = [ - {"type": "input", "name": "evalname", "message": "Nom de l'évaluation",}, + {"type": "input", "name": "assessment", "message": "Nom de l'évaluation",}, { "type": "list", "name": "tribe", @@ -75,7 +98,7 @@ def new_eval(answers={}): def new_exercice(answers={}): exercise_questions = [ - {"type": "input", "name": "exercisename", "message": "Nom de l'exercice"}, + {"type": "input", "name": "exercise", "message": "Nom de l'exercice"}, ] click.echo(f"Nouvel exercice") @@ -96,7 +119,7 @@ def new_exercice(answers={}): { "type": "confirm", "name": "add_item", - "message": f"Ajouter un autre item pour l'exercice {exercise_ans['exercisename']}", + "message": f"Ajouter un autre item pour l'exercice {exercise_ans['exercise']}", "default": True, } ] @@ -107,22 +130,22 @@ def new_exercice(answers={}): def new_item(answers={}): item_questions = [ - {"type": "input", "name": "itemname", "message": "Nom de l'item",}, - {"type": "input", "name": "comment", "message": "Description",}, + {"type": "input", "name": "question", "message": "Nom de l'item",}, + {"type": "input", "name": "comment", "message": "Commentaire",}, { "type": "list", "name": "competence", "message": "Competence", "choices": ["Cher", "Rep", "Mod", "Rai", "Cal", "Com"], }, - {"type": "input", "name": "domain", "message": "Domaine",}, + {"type": "input", "name": "theme", "message": "Domaine",}, { "type": "confirm", "name": "is_leveled", "message": "Évaluation par niveau", "default": True, }, - {"type": "input", "name": "scorerate", "message": "Bareme"}, + {"type": "input", "name": "score_rate", "message": "Bareme"}, { "type": "confirm", "name": "correct", @@ -130,7 +153,7 @@ def new_item(answers={}): "default": True, }, ] - click.echo(f"Nouvelle question pour l'exercice {answers['exercisename']}") + click.echo(f"Nouvelle question pour l'exercice {answers['exercise']}") item_ans = prompt(item_questions, answers=answers) if item_ans["correct"]: return item_ans From d488807c570b6ad6485b5cc578252e3b6a9b08c4 Mon Sep 17 00:00:00 2001 From: Bertrand Benjamin Date: Wed, 22 Jan 2020 22:44:51 +0100 Subject: [PATCH 09/10] Fix: Remake requirements --- requirements.txt | 75 ++++++++++++++++++++++++++---------------------- 1 file changed, 41 insertions(+), 34 deletions(-) diff --git a/requirements.txt b/requirements.txt index c57f4d0..07c2f90 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,8 @@ ansiwrap==0.8.4 +appdirs==1.4.3 attrs==19.1.0 backcall==0.1.0 +black==19.10b0 bleach==3.1.0 certifi==2019.6.16 chardet==3.0.4 @@ -13,57 +15,62 @@ entrypoints==0.3 future==0.17.1 idna==2.8 importlib-resources==1.0.2 -ipykernel==5.1.1 -ipython==7.7.0 +ipykernel==5.1.3 +ipython==7.11.1 ipython-genutils==0.2.0 ipywidgets==7.5.1 -jedi==0.14.1 -Jinja2==2.10.1 -jsonschema==3.0.2 +jedi==0.15.2 +Jinja2==2.10.3 +jsonschema==3.2.0 jupyter==1.0.0 -jupyter-client==5.3.1 -jupyter-console==6.0.0 -jupyter-core==4.5.0 +jupyter-client==5.3.4 +jupyter-console==6.1.0 +jupyter-core==4.6.1 jupytex==0.0.3 kiwisolver==1.1.0 +Markdown==3.1.1 MarkupSafe==1.1.1 -matplotlib==3.1.1 +matplotlib==3.1.2 mistune==0.8.4 -nbconvert==5.5.0 -nbformat==4.4.0 -notebook==6.0.0 -numpy==1.17.0 -pandas==0.25.0 +nbconvert==5.6.1 +nbformat==5.0.3 +notebook==6.0.3 +numpy==1.18.1 +pandas==0.25.3 pandocfilters==1.4.2 -papermill==1.0.1 -parso==0.5.1 -pexpect==4.7.0 +papermill==1.2.1 +parso==0.5.2 +pathspec==0.7.0 +pexpect==4.8.0 pickleshare==0.7.5 prometheus-client==0.7.1 -prompt-toolkit==2.0.9 +prompt-toolkit==1.0.14 ptyprocess==0.6.0 -Pygments==2.4.2 -pyparsing==2.4.2 -pyrsistent==0.15.4 +Pygments==2.5.2 +PyInquirer==1.0.3 +pyparsing==2.4.6 +pyrsistent==0.15.7 python-dateutil==2.8.0 -pytz==2019.2 -PyYAML==5.1.2 -pyzmq==18.0.2 -qtconsole==4.5.2 --e git+git_opytex:/lafrite/recopytex.git@e9a8310f151ead60434ae944d726a2fd22b23d06#egg=Recopytex +pytz==2019.3 +PyYAML==5.3 +pyzmq==18.1.1 +qtconsole==4.6.0 +-e git+git_opytex:/lafrite/recopytex.git@7e026bedb24c1ca8bef3b71b3d63f8b0d6916e81#egg=Recopytex +regex==2020.1.8 requests==2.22.0 -scipy==1.3.0 -seaborn==0.9.0 +scipy==1.4.1 Send2Trash==1.5.0 six==1.12.0 -tenacity==5.0.4 -terminado==0.8.2 -testpath==0.4.2 +tenacity==6.0.0 +terminado==0.8.3 +testpath==0.4.4 textwrap3==0.9.2 +toml==0.10.0 tornado==6.0.3 -tqdm==4.32.2 +tqdm==4.41.1 traitlets==4.3.2 -urllib3==1.25.3 -wcwidth==0.1.7 +typed-ast==1.4.1 +urllib3==1.25.8 +wcwidth==0.1.8 webencodings==0.5.1 widgetsnbextension==3.5.1 From 7058c799759a5e21e6adf8ba6cc0cd7515c17df5 Mon Sep 17 00:00:00 2001 From: Bertrand Benjamin Date: Wed, 22 Jan 2020 22:46:05 +0100 Subject: [PATCH 10/10] Feat: add PyInquirer to setup --- setup.py | 1 + 1 file changed, 1 insertion(+) diff --git a/setup.py b/setup.py index 900354c..aa334c6 100644 --- a/setup.py +++ b/setup.py @@ -17,6 +17,7 @@ setup( 'numpy', 'papermill', 'pyyaml', + 'PyInquirer', ], entry_points=''' [console_scripts]