diff --git a/docs/agenda.rst b/docs/agenda.rst index 032d5e872842bd1546311d1223980a2fe2932039..ce4d5a5372a57d384ca85c4d4aaac699a28a75bd 100644 --- a/docs/agenda.rst +++ b/docs/agenda.rst @@ -2,39 +2,49 @@ Basic procedures ================ * Compose Fireworks and workflows - * Validate workflows - * View workflows * Add fireworks to LaunchPad: ``lpad add`` + * Validate workflows ``lpad add -c``, ``lpad check_wflow`` + * View workflows ``lpad check_wflow -g`` * Execution: ``rlaunch`` - * Monitoring: ``lpad get_*``, ``lpad webgui`` + * Query fireworks and workflows: ``lpad get_fws``, ``lpad get_wflows`` + * Monitoring: ``lpad report``, ``lpad track_fws`` Exercise 1: Managing control flow ================================= * Dependencies and concurrency - * Use standard Firetasks: ``ScriptTask`` + * Use built-in Firetasks: ``ScriptTask`` * Example: F1 pitstop Exercise 2: Managing data flow ============================== * Data flow dependencies - * Use custom Firetasks: ``PythonFunctionTask`` + * Use built-in Firetasks: ``PyTask`` * Example: Recruiting Exercise 3: Manage data in files and command line input ======================================================= - * Use custom Firetasks: ``CommandLineTask`` + * Use built-in Firetasks: ``CommandLineTask`` * Example: Image reconstruction Exercise 4: Extending a workflow ================================ + * Use built-in command ``lpad append_wflow`` * Extension of example from Exercise 3 * Example: Image swirl -Exercise 5: Writing a Firetask +Exercise 5: Productive use + * Best practices: separate configs, launches, templates, inputs + * Using FireWorks with a batch system on HPC clusters + * Recovery from failure + * Duplicates + * Heterogeneous and distributed computing: _category, _fworker, etc. + * ... + +Exercise 6: Writing a Firetask ============================== * Extension of example from Exercise 2 diff --git a/docs/basics.rst b/docs/basics.rst index 5de87b238ebf5bebe8175989ea0ec3aa9f1dce1f..c5bce57b5bd292e0e2cc7c6e92e66514068f852b 100644 --- a/docs/basics.rst +++ b/docs/basics.rst @@ -45,26 +45,26 @@ another in the order of their specification and share the same job working directory and the files in it. Here is a short example for a workflow demonstrating the usage of the -``PythonFunctionTask``:: +``PyTask``:: fws: - fw_id: 1 name: Grind coffee spec: _tasks: - - _fw_name: PythonFunctionTask - function: auxiliary.print_func + - _fw_name: PyTask + func: auxiliary.print_func inputs: [coffee beans] - outputs: coffee powder + outputs: [coffee powder] coffee beans: best selection - fw_id: 2 name: Brew coffee spec: _tasks: - - _fw_name: PythonFunctionTask - function: auxiliary.print_func + - _fw_name: PyTask + func: auxiliary.print_func inputs: [coffee powder, water] - outputs: pure coffee + outputs: [pure coffee] water: workflowing water links: '1': [2] @@ -84,7 +84,7 @@ Add Fireworks to LaunchPad The LaunchPad is a database where the workflows are stored during their full life cycle. It is hosted on a resource named FireServer. -**NOTE:** For simplicity, in this tutorial the FireServer is the same host on +**NOTE:** In tutorial settings the FireServer is sometimes on the same host on which you are logged on. When used productively the LaunchPad contains many workflows in different states. @@ -127,7 +127,7 @@ Visualize workflows Already added workflows can be converted into DOT format and viewed graphically:: - lpad check_wflow -i <firework ID> [--view_control_flow] [--view_data_flow] [-f <DOT_FILE>] + lpad check_wflow -i <firework ID> [-g <controlflow | dataflow | combined>] [-f <filename>] After the dot file is produced it can be converted to PDF and the workflow graph can be viewed:: @@ -146,8 +146,8 @@ running on different resources where individual Fireworks can be executed by the rocket launcher ``rlaunch`` which has three modes of operation: *singleshot*, *rapidfire* and *multi*. -**NOTE:** For simplicity, in this tutorial the FireWorker is the same host as -the FireServer. +**NOTE:** In tutorial settings the FireWorker is sometimes on the same host as +the FireServer and/or on the host where you are logged in. To only execute one Firework from the LaunchPad which is in *READY* state the following command is used:: diff --git a/docs/exercise2.rst b/docs/exercise2.rst index d937d1d2d2b82da4a3ebdd692a7fe7675906792d..97c2c61558e4738c1585a2a4efa676c98470fff3 100644 --- a/docs/exercise2.rst +++ b/docs/exercise2.rst @@ -2,10 +2,10 @@ Exercise 2: Managing data flow ============================== The purpose of this exercise is to learn how to pass data between Fireworks and -describe data dependencies using the custom Firetask ``PythonFunctionTask``:: +describe data dependencies using the custom Firetask ``PyTask``:: - - _fw_name: PythonFunctionTask - function: any_module.any_function + - _fw_name: PyTask + func: any_module.any_function inputs: - first argument - second argument diff --git a/docs/exercise4.rst b/docs/exercise4.rst index d3072b5c2ffd966430d091a7b2162aa8dccc14cc..a90afad05d7769fb264da13bcf95a7601c053303 100644 --- a/docs/exercise4.rst +++ b/docs/exercise4.rst @@ -27,8 +27,8 @@ latter workflow. For this, first copy the workflow **image_swirl.json** from name: Pass filename spec: _tasks: - - _fw_name: PythonFunctionTask - function: auxiliary.print_func + - _fw_name: PyTask + func: auxiliary.print_func inputs: [montaged image] outputs: [montaged image] and:: diff --git a/exercises/demos/2_data_flow/foreach_task.json b/exercises/demos/2_data_flow/foreach_task.json index f23ce76b1c990ee96ef93f05292516c8bd1580ec..10e250a2d11a0989f1471823581fa38361d43ac2 100644 --- a/exercises/demos/2_data_flow/foreach_task.json +++ b/exercises/demos/2_data_flow/foreach_task.json @@ -8,10 +8,10 @@ { "_fw_name": "ForeachTask", "task": { - "_fw_name": "PythonFunctionTask", - "function": "auxiliary.print_func", + "_fw_name": "PyTask", + "func": "auxiliary.print_func", "inputs": ["coffee beans"], - "outputs": "coffee powder" + "outputs": ["coffee powder"] }, "split": "coffee beans" } @@ -27,10 +27,10 @@ { "_fw_name": "ForeachTask", "task": { - "_fw_name": "PythonFunctionTask", - "function": "auxiliary.print_func", + "_fw_name": "PyTask", + "func": "auxiliary.print_func", "inputs": ["coffee powder", "water"], - "outputs": "pure coffee" + "outputs": ["pure coffee"] }, "split": "coffee powder" } @@ -44,8 +44,8 @@ "spec": { "_tasks": [ { - "_fw_name": "PythonFunctionTask", - "function": "auxiliary.print_func", + "_fw_name": "PyTask", + "func": "auxiliary.print_func", "inputs": ["pure coffee"] } ] diff --git a/exercises/demos/2_data_flow/foreach_task.yaml b/exercises/demos/2_data_flow/foreach_task.yaml index acdfa18bc74f0c4e7ca85c94b77f46a570c924d2..35cd1729733ba795ae9bfa1f3e102134a14e21d8 100644 --- a/exercises/demos/2_data_flow/foreach_task.yaml +++ b/exercises/demos/2_data_flow/foreach_task.yaml @@ -6,10 +6,10 @@ fws: - _fw_name: ForeachTask split: coffee beans task: - _fw_name: PythonFunctionTask - function: auxiliary.print_func + _fw_name: PyTask + func: auxiliary.print_func inputs: [coffee beans] - outputs: coffee powder + outputs: [coffee powder] coffee beans: [arabica, robusta, liberica] - fw_id: 2 name: Brew coffee @@ -18,17 +18,17 @@ fws: - _fw_name: ForeachTask split: coffee powder task: - _fw_name: PythonFunctionTask - function: auxiliary.print_func + _fw_name: PyTask + func: auxiliary.print_func inputs: [coffee powder, water] - outputs: pure coffee + outputs: [pure coffee] water: workflowing water - fw_id: 3 name: Serve coffee spec: _tasks: - - _fw_name: PythonFunctionTask - function: auxiliary.print_func + - _fw_name: PyTask + func: auxiliary.print_func inputs: [pure coffee] links: '1': [2] diff --git a/exercises/demos/2_data_flow/python_function_task.json b/exercises/demos/2_data_flow/python_function_task.json index fcb92ed5564893624fa68f65882754a964d9e423..e3abe0c4ddb88efb63e754b0b9769aab066ac235 100644 --- a/exercises/demos/2_data_flow/python_function_task.json +++ b/exercises/demos/2_data_flow/python_function_task.json @@ -6,10 +6,10 @@ "spec": { "_tasks": [ { - "_fw_name": "PythonFunctionTask", - "function": "auxiliary.print_func", + "_fw_name": "PyTask", + "func": "auxiliary.print_func", "inputs": ["fresh coffee beans"], - "outputs": "roasted coffee beans" + "outputs": ["roasted coffee beans"] } ], "fresh coffee beans": "top coffee selection" @@ -21,10 +21,10 @@ "spec": { "_tasks": [ { - "_fw_name": "PythonFunctionTask", - "function": "auxiliary.print_func", + "_fw_name": "PyTask", + "func": "auxiliary.print_func", "inputs": ["roasted coffee beans"], - "outputs": "coffee powder" + "outputs": ["coffee powder"] } ] } @@ -35,10 +35,10 @@ "spec": { "_tasks": [ { - "_fw_name": "PythonFunctionTask", - "function": "auxiliary.print_func", + "_fw_name": "PyTask", + "func": "auxiliary.print_func", "inputs": ["coffee powder", "water"], - "outputs": "pure coffee" + "outputs": ["pure coffee"] } ], "water": "workflowing water" @@ -50,10 +50,10 @@ "spec": { "_tasks": [ { - "_fw_name": "PythonFunctionTask", - "function": "auxiliary.print_func", + "_fw_name": "PyTask", + "func": "auxiliary.print_func", "inputs": ["pure coffee", "milk"], - "outputs": "cappuccino" + "outputs": ["cappuccino"] } ], "milk": "milky way milk" diff --git a/exercises/demos/2_data_flow/python_function_task.yaml b/exercises/demos/2_data_flow/python_function_task.yaml index 5798cfbeb0057b59b1c6e122d9d9a1f7f15635c3..be2e609c941d4b4fe48d54c7525670a5d7421603 100644 --- a/exercises/demos/2_data_flow/python_function_task.yaml +++ b/exercises/demos/2_data_flow/python_function_task.yaml @@ -3,36 +3,36 @@ fws: name: Roast coffee spec: _tasks: - - _fw_name: PythonFunctionTask - function: auxiliary.print_func + - _fw_name: PyTask + func: auxiliary.print_func inputs: [fresh coffee beans] - outputs: roasted coffee beans + outputs: [roasted coffee beans] fresh coffee beans: top coffee selection - fw_id: 1 name: Grind coffee spec: _tasks: - - _fw_name: PythonFunctionTask - function: auxiliary.print_func + - _fw_name: PyTask + func: auxiliary.print_func inputs: [roasted coffee beans] - outputs: coffee powder + outputs: [coffee powder] - fw_id: 2 name: Brew coffee spec: _tasks: - - _fw_name: PythonFunctionTask - function: auxiliary.print_func + - _fw_name: PyTask + func: auxiliary.print_func inputs: [coffee powder, water] - outputs: pure coffee + outputs: [pure coffee] water: workflowing water - fw_id: 3 name: Add extras spec: _tasks: - - _fw_name: PythonFunctionTask - function: auxiliary.print_func + - _fw_name: PyTask + func: auxiliary.print_func inputs: [pure coffee, milk] - outputs: cappuccino + outputs: [cappuccino] milk: milky way milk links: '0': [1] diff --git a/exercises/demos/3_files_and_commands/foreach_task_cmd.json b/exercises/demos/3_files_and_commands/foreach_task_cmd.json index 3a702a72e3ada542af999c92b5f5116c9857d5cd..17bb6635450659380bb830bd3e884018a6c8316b 100644 --- a/exercises/demos/3_files_and_commands/foreach_task_cmd.json +++ b/exercises/demos/3_files_and_commands/foreach_task_cmd.json @@ -50,8 +50,8 @@ "spec": { "_tasks": [ { - "_fw_name": "PythonFunctionTask", - "function": "auxiliary.print_func", + "_fw_name": "PyTask", + "func": "auxiliary.print_func", "inputs": [ "file set" ] @@ -77,8 +77,8 @@ } }, { - "_fw_name": "PythonFunctionTask", - "function": "auxiliary.print_func", + "_fw_name": "PyTask", + "func": "auxiliary.print_func", "inputs": [ "stdout dump" ] diff --git a/exercises/demos/3_files_and_commands/foreach_task_cmd.yaml b/exercises/demos/3_files_and_commands/foreach_task_cmd.yaml index 9992448f8de7c86a37e09f168b4392365a972151..efd7419027ff749d3e8305543b4a23238759e8ff 100644 --- a/exercises/demos/3_files_and_commands/foreach_task_cmd.yaml +++ b/exercises/demos/3_files_and_commands/foreach_task_cmd.yaml @@ -22,8 +22,8 @@ fws: name: Concatenate the files into a string spec: _tasks: - - _fw_name: PythonFunctionTask - function: auxiliary.print_func + - _fw_name: PyTask + func: auxiliary.print_func inputs: [file set] - _fw_name: CommandLineTask command_spec: @@ -34,8 +34,8 @@ fws: target: {type: data, value: stdout dump} inputs: [file set] outputs: [stdout dump] - - _fw_name: PythonFunctionTask - function: auxiliary.print_func + - _fw_name: PyTask + func: auxiliary.print_func inputs: [stdout dump] links: '1': [2] diff --git a/exercises/inputs/2_data_flow/template.json b/exercises/inputs/2_data_flow/template.json index 1cf1a5113d93ea2e661dc258ddd92b22ebcf567a..1abb5805a4ccadf586d3164824f832d9b8701613 100644 --- a/exercises/inputs/2_data_flow/template.json +++ b/exercises/inputs/2_data_flow/template.json @@ -6,8 +6,8 @@ "spec": { "_tasks": [ { - "_fw_name": "PythonFunctionTask", - "function": "auxiliary.print_func", + "_fw_name": "PyTask", + "func": "auxiliary.print_func", "inputs": ["job description"], "outputs": [""] } @@ -21,8 +21,8 @@ "spec": { "_tasks": [ { - "_fw_name": "PythonFunctionTask", - "function": "", + "_fw_name": "PyTask", + "func": "", "inputs": [ "", "" @@ -40,8 +40,8 @@ "spec": { "_tasks": [ { - "_fw_name": "PythonFunctionTask", - "function": "", + "_fw_name": "PyTask", + "func": "", "inputs": [ "", "", @@ -61,8 +61,8 @@ "spec": { "_tasks": [ { - "_fw_name": "PythonFunctionTask", - "function": "", + "_fw_name": "PyTask", + "func": "", "inputs": [ "", "", diff --git a/exercises/inputs/2_data_flow/template.yaml b/exercises/inputs/2_data_flow/template.yaml index d0b247cb3d224d00297c5610fd815e1c9e7a8049..7db2bf206e6ad28120086e797e76e6ccc801d7c5 100644 --- a/exercises/inputs/2_data_flow/template.yaml +++ b/exercises/inputs/2_data_flow/template.yaml @@ -3,40 +3,40 @@ fws: name: Post the job spec: _tasks: - - _fw_name: PythonFunctionTask - function: auxiliary.print_func + - _fw_name: PyTask + func: auxiliary.print_func inputs: [job description] - outputs: [''] + outputs: [' '] job description: {} - fw_id: 2 name: Candidates apply spec: _tasks: - - _fw_name: PythonFunctionTask - function: '' - inputs: ['', ''] - outputs: [''] + - _fw_name: PyTask + func: ' ' + inputs: [' ', ' '] + outputs: [' '] application template: {} maximum applications: 50 - fw_id: 3 name: Screen candidates spec: _tasks: - - _fw_name: PythonFunctionTask - function: '' - inputs: ['', '', '', ''] - outputs: [''] + - _fw_name: PyTask + func: ' ' + inputs: [' ', ' ', ' ', ' '] + outputs: [' '] minimum score: 2 number to invite: 4 - fw_id: 4 name: Interview candidates spec: _tasks: - - _fw_name: PythonFunctionTask - function: '' - inputs: ['', '', ''] - outputs: [''] + - _fw_name: PyTask + func: ' ' + inputs: [' ', ' ', ' '] + outputs: [' '] number to fill: 2 links: {} metadata: {} -name: '' +name: ' ' diff --git a/exercises/problems/2_data_flow/recruiting-0.json b/exercises/problems/2_data_flow/recruiting-0.json index e2cefec368cfcc3f643684cc90543e8096672db9..ef8d65d47de8d6bc6bfa990bbe9b0474fa316c9b 100644 --- a/exercises/problems/2_data_flow/recruiting-0.json +++ b/exercises/problems/2_data_flow/recruiting-0.json @@ -6,8 +6,8 @@ "spec": { "_tasks": [ { - "_fw_name": "PythonFunctionTask", - "function": "", + "_fw_name": "PyTask", + "func": "", "inputs": [], "outputs": [] } @@ -20,8 +20,8 @@ "spec": { "_tasks": [ { - "_fw_name": "PythonFunctionTask", - "function": "", + "_fw_name": "PyTask", + "func": "", "inputs": [], "outputs": [] } diff --git a/exercises/problems/2_data_flow/recruiting-0.yaml b/exercises/problems/2_data_flow/recruiting-0.yaml index 6b69a6d1417ac46cae3cd0fd5d71ce8c1313d25e..43038e8f5a4eeccba17d808ff2968f34bce854fb 100644 --- a/exercises/problems/2_data_flow/recruiting-0.yaml +++ b/exercises/problems/2_data_flow/recruiting-0.yaml @@ -3,16 +3,16 @@ fws: name: '' spec: _tasks: - - _fw_name: PythonFunctionTask - function: '' + - _fw_name: PyTask + func: '' inputs: [] outputs: [] - fw_id: 2 name: '' spec: _tasks: - - _fw_name: PythonFunctionTask - function: '' + - _fw_name: PyTask + func: '' inputs: [] outputs: [] links: diff --git a/exercises/problems/2_data_flow/recruiting-1.json b/exercises/problems/2_data_flow/recruiting-1.json index 14c7e7dd082a56963e5b4edab31df5935bfd38b3..a5141892d7e07533d3c6aafafc28538aa08c3484 100644 --- a/exercises/problems/2_data_flow/recruiting-1.json +++ b/exercises/problems/2_data_flow/recruiting-1.json @@ -6,8 +6,8 @@ "spec": { "_tasks": [ { - "_fw_name": "PythonFunctionTask", - "function": "auxiliary.print_func", + "_fw_name": "PyTask", + "func": "auxiliary.print_func", "inputs": ["job description"], "outputs": ["job description"] } @@ -35,8 +35,8 @@ "spec": { "_tasks": [ { - "_fw_name": "PythonFunctionTask", - "function": "recruiting.candidates_apply", + "_fw_name": "PyTask", + "func": "recruiting.candidates_apply", "inputs": ["application template", "maximum applications"], "outputs": ["applicant profiles"] } @@ -71,8 +71,8 @@ "spec": { "_tasks": [ { - "_fw_name": "PythonFunctionTask", - "function": "recruiting.screen_candidates", + "_fw_name": "PyTask", + "func": "recruiting.screen_candidates", "inputs": [ "job description", "applicant profiles", @@ -92,8 +92,8 @@ "spec": { "_tasks": [ { - "_fw_name": "PythonFunctionTask", - "function": "recruiting.interview_candidates", + "_fw_name": "PyTask", + "func": "recruiting.interview_candidates", "inputs": [ "job description", "applicant profiles", diff --git a/exercises/problems/2_data_flow/recruiting-1.yaml b/exercises/problems/2_data_flow/recruiting-1.yaml index deadbff4025f1c510cd920fcd5bbfedf3c9a8b27..c41093d37cdc8908f9de05470d6fe935abc63b3f 100644 --- a/exercises/problems/2_data_flow/recruiting-1.yaml +++ b/exercises/problems/2_data_flow/recruiting-1.yaml @@ -3,8 +3,8 @@ fws: name: Post the job spec: _tasks: - - _fw_name: PythonFunctionTask - function: auxiliary.print_func + - _fw_name: PyTask + func: auxiliary.print_func inputs: [job description] outputs: [job description] job description: @@ -17,8 +17,8 @@ fws: name: Candidates apply spec: _tasks: - - _fw_name: PythonFunctionTask - function: recruiting.candidates_apply + - _fw_name: PyTask + func: recruiting.candidates_apply inputs: [application template, maximum applications] outputs: [applicant profiles] application template: @@ -36,8 +36,8 @@ fws: name: Screen candidates spec: _tasks: - - _fw_name: PythonFunctionTask - function: recruiting.screen_candidates + - _fw_name: PyTask + func: recruiting.screen_candidates inputs: [job description, applicant profiles, minimum score, number to invite] outputs: [invited applicants] minimum score: 2 @@ -46,8 +46,8 @@ fws: name: Interview candidates spec: _tasks: - - _fw_name: PythonFunctionTask - function: recruiting.interview_candidates + - _fw_name: PyTask + func: recruiting.interview_candidates inputs: [job description, applicant profiles, number to fill] outputs: [selected applicants] number to fill: 2 diff --git a/exercises/problems/2_data_flow/recruiting-2.json b/exercises/problems/2_data_flow/recruiting-2.json index c5d213e477487fcd49c1c48e2009c1c2e912d629..c88c6200a780542a003620a9c20c004cb245216d 100644 --- a/exercises/problems/2_data_flow/recruiting-2.json +++ b/exercises/problems/2_data_flow/recruiting-2.json @@ -6,8 +6,8 @@ "spec": { "_tasks": [ { - "_fw_name": "PythonFunctionTask", - "function": "auxiliary.print_func", + "_fw_name": "PyTask", + "func": "auxiliary.print_func", "inputs": ["job description"], "outputs": ["job description"] } @@ -35,8 +35,8 @@ "spec": { "_tasks": [ { - "_fw_name": "PythonFunctionTask", - "function": "recruiting.candidates_apply", + "_fw_name": "PyTask", + "func": "recruiting.candidates_apply", "inputs": ["application template", "maximum applications"], "outputs": ["applicant profiles"] } @@ -71,8 +71,8 @@ "spec": { "_tasks": [ { - "_fw_name": "PythonFunctionTask", - "function": "recruiting.screen_candidates", + "_fw_name": "PyTask", + "func": "recruiting.screen_candidates", "inputs": [ "job description", "applicant profiles", @@ -92,8 +92,8 @@ "spec": { "_tasks": [ { - "_fw_name": "PythonFunctionTask", - "function": "recruiting.interview_candidates", + "_fw_name": "PyTask", + "func": "recruiting.interview_candidates", "inputs": [ "job description", "invited applicants", diff --git a/exercises/problems/2_data_flow/recruiting-2.yaml b/exercises/problems/2_data_flow/recruiting-2.yaml index c3e55cb6f311f20a304464cdff08e71a034f98b4..7e7c6af88c6bf34ec111fde39e7ce9b99d3c9f02 100644 --- a/exercises/problems/2_data_flow/recruiting-2.yaml +++ b/exercises/problems/2_data_flow/recruiting-2.yaml @@ -3,8 +3,8 @@ fws: name: Post the job spec: _tasks: - - _fw_name: PythonFunctionTask - function: auxiliary.print_func + - _fw_name: PyTask + func: auxiliary.print_func inputs: [job description] outputs: [job description] job description: @@ -17,8 +17,8 @@ fws: name: Candidates apply spec: _tasks: - - _fw_name: PythonFunctionTask - function: recruiting.candidates_apply + - _fw_name: PyTask + func: recruiting.candidates_apply inputs: [application template, maximum applications] outputs: [applicant profiles] application template: @@ -36,8 +36,8 @@ fws: name: Screen candidates spec: _tasks: - - _fw_name: PythonFunctionTask - function: recruiting.screen_candidates + - _fw_name: PyTask + func: recruiting.screen_candidates inputs: [job description, applicant profiles, minimum score, number to invite] outputs: [invited applicants] minimum score: 2 @@ -46,8 +46,8 @@ fws: name: Interview candidates spec: _tasks: - - _fw_name: PythonFunctionTask - function: recruiting.interview_candidates + - _fw_name: PyTask + func: recruiting.interview_candidates inputs: [job description, invited applicants, number to fill] outputs: [selected applicants] number to fill: 2 diff --git a/exercises/problems/5_author_firetask/dataloader+repeater.json b/exercises/problems/5_author_firetask/dataloader+repeater.json index 338294781fae54db50f1126c80e8df8498c8fd0e..400eb2e76d12d785939666c59db2eee2a2cf86cc 100644 --- a/exercises/problems/5_author_firetask/dataloader+repeater.json +++ b/exercises/problems/5_author_firetask/dataloader+repeater.json @@ -24,8 +24,8 @@ "spec": { "_tasks": [ { - "_fw_name": "PythonFunctionTask", - "function": "recruiting.candidates_apply", + "_fw_name": "PyTask", + "func": "recruiting.candidates_apply", "inputs": ["application template", "maximum applications"], "outputs": ["applicant profiles"] }, @@ -45,8 +45,8 @@ "spec": { "_tasks": [ { - "_fw_name": "PythonFunctionTask", - "function": "recruiting.screen_candidates", + "_fw_name": "PyTask", + "func": "recruiting.screen_candidates", "inputs": [ "job description", "applicant profiles", @@ -71,8 +71,8 @@ "spec": { "_tasks": [ { - "_fw_name": "PythonFunctionTask", - "function": "recruiting.interview_candidates", + "_fw_name": "PyTask", + "func": "recruiting.interview_candidates", "inputs": [ "job description", "invited applicants", diff --git a/exercises/problems/5_author_firetask/dataloader.json b/exercises/problems/5_author_firetask/dataloader.json index 3585d283b683f67d5246399ea4d06daad2403a59..cd4e3d373ef9ccab6f0ba06f81ea00c7f6ea92c2 100644 --- a/exercises/problems/5_author_firetask/dataloader.json +++ b/exercises/problems/5_author_firetask/dataloader.json @@ -24,8 +24,8 @@ "spec": { "_tasks": [ { - "_fw_name": "PythonFunctionTask", - "function": "recruiting.candidates_apply", + "_fw_name": "PyTask", + "func": "recruiting.candidates_apply", "inputs": ["application template", "maximum applications"], "outputs": ["applicant profiles"] } @@ -39,8 +39,8 @@ "spec": { "_tasks": [ { - "_fw_name": "PythonFunctionTask", - "function": "recruiting.screen_candidates", + "_fw_name": "PyTask", + "func": "recruiting.screen_candidates", "inputs": [ "job description", "applicant profiles", @@ -60,8 +60,8 @@ "spec": { "_tasks": [ { - "_fw_name": "PythonFunctionTask", - "function": "recruiting.interview_candidates", + "_fw_name": "PyTask", + "func": "recruiting.interview_candidates", "inputs": [ "job description", "invited applicants", diff --git a/exercises/solutions/2_data_flow/recruiting.json b/exercises/solutions/2_data_flow/recruiting.json index a49ba053449f10aa50f94419a7764aa2d970b336..ffd67fdfc2e9d2999946fa4899c853056b02baf7 100644 --- a/exercises/solutions/2_data_flow/recruiting.json +++ b/exercises/solutions/2_data_flow/recruiting.json @@ -6,8 +6,8 @@ "spec": { "_tasks": [ { - "_fw_name": "PythonFunctionTask", - "function": "auxiliary.print_func", + "_fw_name": "PyTask", + "func": "auxiliary.print_func", "inputs": ["job description"], "outputs": ["job description"] } @@ -35,8 +35,8 @@ "spec": { "_tasks": [ { - "_fw_name": "PythonFunctionTask", - "function": "recruiting.candidates_apply", + "_fw_name": "PyTask", + "func": "recruiting.candidates_apply", "inputs": ["application template", "maximum applications"], "outputs": ["applicant profiles"] } @@ -71,8 +71,8 @@ "spec": { "_tasks": [ { - "_fw_name": "PythonFunctionTask", - "function": "recruiting.screen_candidates", + "_fw_name": "PyTask", + "func": "recruiting.screen_candidates", "inputs": [ "job description", "applicant profiles", @@ -92,8 +92,8 @@ "spec": { "_tasks": [ { - "_fw_name": "PythonFunctionTask", - "function": "recruiting.interview_candidates", + "_fw_name": "PyTask", + "func": "recruiting.interview_candidates", "inputs": [ "job description", "invited applicants", diff --git a/exercises/solutions/2_data_flow/recruiting.yaml b/exercises/solutions/2_data_flow/recruiting.yaml index 3510e1786e51348773c4e49f667603b2147d402e..e1127afd571c7312c3593402ab3ae70e7b4a9ee2 100644 --- a/exercises/solutions/2_data_flow/recruiting.yaml +++ b/exercises/solutions/2_data_flow/recruiting.yaml @@ -3,8 +3,8 @@ fws: name: Post the job spec: _tasks: - - _fw_name: PythonFunctionTask - function: auxiliary.print_func + - _fw_name: PyTask + func: auxiliary.print_func inputs: [job description] outputs: [job description] job description: @@ -17,8 +17,8 @@ fws: name: Candidates apply spec: _tasks: - - _fw_name: PythonFunctionTask - function: recruiting.candidates_apply + - _fw_name: PyTask + func: recruiting.candidates_apply inputs: [application template, maximum applications] outputs: [applicant profiles] application template: @@ -36,8 +36,8 @@ fws: name: Screen candidates spec: _tasks: - - _fw_name: PythonFunctionTask - function: recruiting.screen_candidates + - _fw_name: PyTask + func: recruiting.screen_candidates inputs: [job description, applicant profiles, minimum score, number to invite] outputs: [invited applicants] minimum score: 2 @@ -46,8 +46,8 @@ fws: name: Interview candidates spec: _tasks: - - _fw_name: PythonFunctionTask - function: recruiting.interview_candidates + - _fw_name: PyTask + func: recruiting.interview_candidates inputs: [job description, invited applicants, number to fill] outputs: [selected applicants] number to fill: 2 diff --git a/exercises/solutions/4_wflow_append/image_swirl_montaged.json b/exercises/solutions/4_wflow_append/image_swirl_montaged.json index 014d8df4b946af014d5ddfb9a88040e450e6b1c0..a764f907cb471344c7fe4fddfc36f48bb3d194b9 100644 --- a/exercises/solutions/4_wflow_append/image_swirl_montaged.json +++ b/exercises/solutions/4_wflow_append/image_swirl_montaged.json @@ -7,8 +7,8 @@ "spec": { "_tasks": [ { - "_fw_name": "PythonFunctionTask", - "function": "auxiliary.print_func", + "_fw_name": "PyTask", + "func": "auxiliary.print_func", "inputs": ["montaged image"], "outputs": ["montaged image"] } diff --git a/exercises/solutions/4_wflow_append/image_swirl_montaged.yaml b/exercises/solutions/4_wflow_append/image_swirl_montaged.yaml index 6a151c8663e7881399bf6f529ba9b6aa32171657..f32f8221d2a55eeb5f052f3263a3dde96eea1747 100644 --- a/exercises/solutions/4_wflow_append/image_swirl_montaged.yaml +++ b/exercises/solutions/4_wflow_append/image_swirl_montaged.yaml @@ -3,8 +3,8 @@ fws: name: Pass filename spec: _tasks: - - _fw_name: PythonFunctionTask - function: auxiliary.print_func + - _fw_name: PyTask + func: auxiliary.print_func inputs: [montaged image] outputs: [montaged image] - fw_id: -1