<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def read_object(ctx, pin, object_id):
 """ Read arbitrary PIV object. Read PIV object by providing the object id. \b OBJECT-ID Id of PIV object in HEX. """


    controller = ctx.obj['controller']

    def do_read_object(retry=True):
        try:
            click.echo(controller.get_data(object_id))
        except APDUError as e:
            if e.sw == SW.NOT_FOUND:
                ctx.fail('No data found.')
            elif e.sw == SW.SECURITY_CONDITION_NOT_SATISFIED:
                _verify_pin(ctx, controller, pin)
                do_read_object(retry=False)
            else:
                raise

    do_read_object()