(self, args, transport: EventTransport, message: EventMessage, bus: BusPath)
Print out the given message
Print out the given message
Print out the given message
def output(self, args, transport: EventTransport, message: EventMessage, bus: BusPath):
        """Print out the given message"""

        serialized = transport.serializer(message)
        if args.format in ("json", "pretty"):
            if args.format == "pretty":
                dumped = json.dumps(serialized, indent=4)
            else:
                dumped = json.dumps(serialized)
            sys.stdout.write(dumped)
            sys.stdout.write("\n")
            sys.stdout.flush()

        elif args.format == "human":
            print(Colors.BGreen, end="")
            print(f" {message.api_name}.{message.event_name} ".center(80, "="))
            if hasattr(message, "datetime"):
                print(f" {message.datetime.strftime('%c')} ".center(80, " "))
            print(Colors.Reset, end="")

            print(f"\n{Colors.BWhite}Metadata:{Colors.Reset}")
            for k, v in message.get_metadata().items():
                print(f"    {str(k).ljust(20)}: {v}")

            print(f"\n{Colors.BWhite}Data:{Colors.Reset}")
            for k, v in message.get_kwargs().items():
                if isinstance(v, (dict, list)):
                    v = json.dumps(v, indent=4)
                    pad = " " * 24
                    v = "".join(pad + v for v in v.splitlines(keepends=True)).lstrip()
                print(f"    {str(k).ljust(20)}: {v}")

            if args.validate or args.show_casting:
                print(f"\n{Colors.BWhite}Extra:{Colors.Reset}")

            if args.validate:
                try:
                    bus.client.schema.validate_parameters(
                        message.api_name, message.event_name, message.kwargs
                    )
                except ValidationError as e:
                    validation_message = f"{Colors.Red}{e}{Colors.Reset}"
                else:
                    validation_message = f"{Colors.Green}Passed{Colors.Reset}"

                print(f"    Validation:         {validation_message}")

            if args.show_casting:
                block(bus.client.hook_registry.execute("before_worker_start"))

                for listener in bus.client.event_client._event_listeners:
                    if (message.api_name, message.event_name) not in listener.events:
                        continue

                    hints = get_type_hints(listener.callable)
                    casted = cast_to_signature(
                        parameters=message.kwargs, callable=listener.callable
                    )
                    print(
                        f"\n    {Colors.BWhite}Casting for listener: {listener.name}{Colors.Reset}"
                    )

                    for key, value in message.kwargs.items():
                        was = type(value)
                        via = hints[key]
                        now = type(casted[key])
                        color = Colors.Green if via == now else Colors.Red
                        print(
                            "        "
                            f"{color}{str(key).ljust(20)}: "
                            f"Received a '{was.__name__}', "
                            f"casted to a '{via.__name__}', "
                            f"result was a '{now.__name__}'"
                            f"{Colors.Reset}"
                        )

            print("\n")

        else:
            sys.stderr.write(f"Unknown output format '{args.format}'\n")
            sys.exit(1)
def output ( self , args , transport : EventTransport , message : EventMessage , bus : BusPath ) : serialized = transport . serializer ( message ) if args . format in ( "json" , "pretty" ) : if args . format == "pretty" : dumped = json . dumps ( serialized , indent = 4 ) else : dumped = json . dumps ( serialized ) sys . stdout . write ( dumped ) sys . stdout . write ( "\n" ) sys . stdout . flush ( ) elif args . format == "human" : print ( Colors . BGreen , end = "" ) print ( f" {message.api_name}.{message.event_name} " . center ( 80 , "=" ) ) if hasattr ( message , "datetime" ) : print ( f" {message.datetime.strftime('%c')} " . center ( 80 , " " ) ) print ( Colors . Reset , end = "" ) print ( f"\n{Colors.BWhite}Metadata:{Colors.Reset}" ) for k , v in message . get_metadata ( ) . items ( ) : print ( f"    {str(k).ljust(20)}: {v}" ) print ( f"\n{Colors.BWhite}Data:{Colors.Reset}" ) for k , v in message . get_kwargs ( ) . items ( ) : if isinstance ( v , ( dict , list ) ) : v = json . dumps ( v , indent = 4 ) pad = " " * 24 v = "" . join ( pad + v for v in v . splitlines ( keepends = True ) ) . lstrip ( ) print ( f"    {str(k).ljust(20)}: {v}" ) if args . validate or args . show_casting : print ( f"\n{Colors.BWhite}Extra:{Colors.Reset}" ) if args . validate : try : bus . client . schema . validate_parameters ( message . api_name , message . event_name , message . kwargs ) except ValidationError as e : validation_message = f"{Colors.Red}{e}{Colors.Reset}" else : validation_message = f"{Colors.Green}Passed{Colors.Reset}" print ( f"    Validation:         {validation_message}" ) if args . show_casting : block ( bus . client . hook_registry . execute ( "before_worker_start" ) ) for listener in bus . client . event_client . _event_listeners : if ( message . api_name , message . event_name ) not in listener . events : continue hints = get_type_hints ( listener . callable ) casted = cast_to_signature ( parameters = message . kwargs , callable = listener . callable ) print ( f"\n    {Colors.BWhite}Casting for listener: {listener.name}{Colors.Reset}" ) for key , value in message . kwargs . items ( ) : was = type ( value ) via = hints [ key ] now = type ( casted [ key ] ) color = Colors . Green if via == now else Colors . Red print ( "        " f"{color}{str(key).ljust(20)}: " f"Received a '{was.__name__}', " f"casted to a '{via.__name__}', " f"result was a '{now.__name__}'" f"{Colors.Reset}" ) print ( "\n" ) else : sys . stderr . write ( f"Unknown output format '{args.format}'\n" ) sys . exit ( 1 )