"""
This file contains the benchmark protocols details for the tasks reported
in the paper only for now.
"""
import causal_world.evaluation.protocols as protocols

REACHING_BENCHMARK = dict(task_generator_id='reaching',
                          evaluation_protocols=[
                              protocols.ProtocolGenerator(name=
                                                          'P0',
                                                          first_level_regex=
                                                          '',
                                                          second_level_regex=
                                                          '',
                                                          variable_space='space_a_b'),
                              protocols.ProtocolGenerator(name=
                                                          'P5',
                                                          first_level_regex=
                                                          'goal_.*',
                                                          second_level_regex=
                                                          'cylindrical_position',
                                                          variable_space='space_a'),
                              protocols.ProtocolGenerator(name=
                                                          'P12',
                                                          first_level_regex=
                                                          'goal_.*',
                                                          second_level_regex=
                                                          'cylindrical_position',
                                                          variable_space='space_b')

                          ])

PUSHING_BENCHMARK = dict(task_generator_id='pushing',
                         evaluation_protocols=[
                             protocols.ProtocolGenerator(name=
                                                         'P0',
                                                         first_level_regex=
                                                         '',
                                                         second_level_regex=
                                                         '',
                                                         variable_space='space_a_b'),
                             protocols.ProtocolGenerator(name=
                                                         'P1',
                                                         first_level_regex=
                                                         'tool_block',
                                                         second_level_regex=
                                                         'mass',
                                                         variable_space='space_a'),
                             protocols.ProtocolGenerator(name=
                                                         'P2',
                                                         first_level_regex=
                                                         'tool_block',
                                                         second_level_regex=
                                                         'mass',
                                                         variable_space='space_b'),
                             protocols.ProtocolGenerator(name=
                                                         'P3',
                                                         first_level_regex=
                                                         'tool_block',
                                                         second_level_regex=
                                                         'size',
                                                         variable_space='space_a'),
                             protocols.ProtocolGenerator(name=
                                                         'P4',
                                                         first_level_regex=
                                                         'tool_block',
                                                         second_level_regex=
                                                         'cylindrical_position',
                                                         variable_space='space_a'),
                             protocols.ProtocolGenerator(name=
                                                         'P5',
                                                         first_level_regex=
                                                         'goal_block',
                                                         second_level_regex=
                                                         'cylindrical_position',
                                                         variable_space='space_a'),
                             protocols.ProtocolGenerator(name=
                                                         'P6',
                                                         first_level_regex=
                                                         'goal_block|tool_block',
                                                         second_level_regex=
                                                         'cylindrical_position',
                                                         variable_space='space_b'),
                             protocols.ProtocolGenerator(name=
                                                         'P7',
                                                         first_level_regex=
                                                         'goal_block|tool_block',
                                                         second_level_regex=
                                                         'cylindrical_position|mass',
                                                         variable_space='space_a'),
                             protocols.ProtocolGenerator(name=
                                                         'P8',
                                                         first_level_regex=
                                                         'goal_block|tool_block',
                                                         second_level_regex=
                                                         'cylindrical_position|mass',
                                                         variable_space='space_b'),
                             protocols.ProtocolGenerator(name=
                                                         'P9',
                                                         first_level_regex=
                                                         'goal_block|tool_block|floor_friction',
                                                         second_level_regex=
                                                         'cylindrical_position|mass',
                                                         variable_space='space_b'),
                             protocols.FullyRandomProtocol(name='P10',
                                                           variable_space='space_a'),
                             protocols.FullyRandomProtocol(name='P11',
                                                           variable_space='space_b')
                         ])

PICKING_BENCHMARK = dict(task_generator_id='picking',
                         evaluation_protocols=[
                             protocols.ProtocolGenerator(name=
                                                         'P0',
                                                         first_level_regex=
                                                         '',
                                                         second_level_regex=
                                                         '',
                                                         variable_space='space_a_b'),
                             protocols.ProtocolGenerator(name=
                                                         'P1',
                                                         first_level_regex=
                                                         'tool_block',
                                                         second_level_regex=
                                                         'mass',
                                                         variable_space='space_a'),
                             protocols.ProtocolGenerator(name=
                                                         'P2',
                                                         first_level_regex=
                                                         'tool_block',
                                                         second_level_regex=
                                                         'mass',
                                                         variable_space='space_b'),
                             protocols.ProtocolGenerator(name=
                                                         'P3',
                                                         first_level_regex=
                                                         'tool_block',
                                                         second_level_regex=
                                                         'size',
                                                         variable_space='space_a'),
                             protocols.ProtocolGenerator(name=
                                                         'P4',
                                                         first_level_regex=
                                                         'tool_block',
                                                         second_level_regex=
                                                         'cylindrical_position',
                                                         variable_space='space_a'),
                             protocols.ProtocolGenerator(name=
                                                         'P5',
                                                         first_level_regex=
                                                         'goal_block',
                                                         second_level_regex=
                                                         'cylindrical_position',
                                                         variable_space='space_a'),
                             protocols.ProtocolGenerator(name=
                                                         'P6',
                                                         first_level_regex=
                                                         'goal_block|tool_block',
                                                         second_level_regex=
                                                         'cylindrical_position',
                                                         variable_space='space_b'),
                             protocols.ProtocolGenerator(name=
                                                         'P7',
                                                         first_level_regex=
                                                         'goal_block|tool_block',
                                                         second_level_regex=
                                                         'cylindrical_position|mass',
                                                         variable_space='space_a'),
                             protocols.ProtocolGenerator(name=
                                                         'P8',
                                                         first_level_regex=
                                                         'goal_block|tool_block',
                                                         second_level_regex=
                                                         'cylindrical_position|mass',
                                                         variable_space='space_b'),
                             protocols.ProtocolGenerator(name=
                                                         'P9',
                                                         first_level_regex=
                                                         'goal_block|tool_block|floor_friction',
                                                         second_level_regex=
                                                         'cylindrical_position|mass',
                                                         variable_space='space_b'),
                             protocols.FullyRandomProtocol(name='P10',
                                                           variable_space='space_a'),
                             protocols.FullyRandomProtocol(name='P11',
                                                           variable_space='space_b')
                         ])

PICK_AND_PLACE_BENCHMARK = dict(task_generator_id='pick_and_place',
                                evaluation_protocols=[
                                    protocols.ProtocolGenerator(name=
                                                                'P0',
                                                                first_level_regex=
                                                                '',
                                                                second_level_regex=
                                                                '',
                                                                variable_space='space_a_b'),
                                    protocols.ProtocolGenerator(name=
                                                                'P1',
                                                                first_level_regex=
                                                                'tool_block',
                                                                second_level_regex=
                                                                'mass',
                                                                variable_space='space_a'),
                                    protocols.ProtocolGenerator(name=
                                                                'P2',
                                                                first_level_regex=
                                                                'tool_block',
                                                                second_level_regex=
                                                                'mass',
                                                                variable_space='space_b'),
                                    protocols.ProtocolGenerator(name=
                                                                'P3',
                                                                first_level_regex=
                                                                'tool_block',
                                                                second_level_regex=
                                                                'size',
                                                                variable_space='space_a'),
                                    protocols.ProtocolGenerator(name=
                                                                'P4',
                                                                first_level_regex=
                                                                'tool_block',
                                                                second_level_regex=
                                                                'cylindrical_position',
                                                                variable_space='space_a'),
                                    protocols.ProtocolGenerator(name=
                                                                'P5',
                                                                first_level_regex=
                                                                'goal_block',
                                                                second_level_regex=
                                                                'cylindrical_position',
                                                                variable_space='space_a'),
                                    protocols.ProtocolGenerator(name=
                                                                'P6',
                                                                first_level_regex=
                                                                'goal_block|tool_block',
                                                                second_level_regex=
                                                                'cylindrical_position',
                                                                variable_space='space_b'),
                                    protocols.ProtocolGenerator(name=
                                                                'P7',
                                                                first_level_regex=
                                                                'goal_block|tool_block',
                                                                second_level_regex=
                                                                'cylindrical_position|mass',
                                                                variable_space='space_a'),
                                    protocols.ProtocolGenerator(name=
                                                                'P8',
                                                                first_level_regex=
                                                                'goal_block|tool_block',
                                                                second_level_regex=
                                                                'cylindrical_position|mass',
                                                                variable_space='space_b'),
                                    protocols.ProtocolGenerator(name=
                                                                'P9',
                                                                first_level_regex=
                                                                'goal_block|tool_block|floor_friction',
                                                                second_level_regex=
                                                                'cylindrical_position|mass',
                                                                variable_space='space_b'),
                                    protocols.FullyRandomProtocol(name='P10',
                                                                  variable_space='space_a'),
                                    protocols.FullyRandomProtocol(name='P11',
                                                                  variable_space='space_b')
                                ])

STACKING2_BENCHMARK = dict(task_generator_id='stacking2',
                            evaluation_protocols=[
                                protocols.ProtocolGenerator(name=
                                                            'P0',
                                                            first_level_regex=
                                                            '',
                                                            second_level_regex=
                                                            '',
                                                            variable_space='space_a_b'),
                                protocols.ProtocolGenerator(name=
                                                            'P1',
                                                            first_level_regex=
                                                            'tool_block.*',
                                                            second_level_regex=
                                                            'mass',
                                                            variable_space='space_a'),
                                protocols.ProtocolGenerator(name=
                                                            'P2',
                                                            first_level_regex=
                                                            'tool_block.*',
                                                            second_level_regex=
                                                            'mass',
                                                            variable_space='space_b'),
                                protocols.ProtocolGenerator(name=
                                                            'P4',
                                                            first_level_regex=
                                                            'tool_block.*',
                                                            second_level_regex=
                                                            'cylindrical_position',
                                                            variable_space='space_a'),
                                protocols.ProtocolGenerator(name=
                                                            'P5',
                                                            first_level_regex=
                                                            'goal_tower',
                                                            second_level_regex=
                                                            'cylindrical_position',
                                                            variable_space='space_a'),
                                protocols.ProtocolGenerator(name=
                                                            'P6',
                                                            first_level_regex=
                                                            'goal_tower|tool_block.*',
                                                            second_level_regex=
                                                            'cylindrical_position',
                                                            variable_space='space_b'),
                                protocols.ProtocolGenerator(name=
                                                            'P7',
                                                            first_level_regex=
                                                            'goal_tower|tool_block.*',
                                                            second_level_regex=
                                                            'cylindrical_position|mass',
                                                            variable_space='space_a'),
                                protocols.ProtocolGenerator(name=
                                                            'P8',
                                                            first_level_regex=
                                                            'goal_tower|tool_block.*',
                                                            second_level_regex=
                                                            'cylindrical_position|mass',
                                                            variable_space='space_b'),
                                protocols.ProtocolGenerator(name=
                                                            'P9',
                                                            first_level_regex=
                                                            'goal_block|tool_block.*|floor_friction',
                                                            second_level_regex=
                                                            'cylindrical_position|mass',
                                                            variable_space='space_b'),
                                protocols.FullyRandomProtocol(name='P10',
                                                              variable_space='space_a'),
                                protocols.FullyRandomProtocol(name='P11',
                                                              variable_space='space_b')
                            ])
