diff mbox series

[FFmpeg-devel] tools/zmqshell: port to python3

Message ID 20230326213459.90011-1-stefasab@gmail.com
State Accepted
Commit 774d358e0fd520ab9503447c5f8f5e1633b96e39
Headers show
Series [FFmpeg-devel] tools/zmqshell: port to python3 | expand

Checks

Context Check Description
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished

Commit Message

Stefano Sabatini March 26, 2023, 9:34 p.m. UTC
Also extend docs, use argparse and logging.
---
 tools/zmqshell.py | 63 ++++++++++++++++++++++++++++++++++++++---------
 1 file changed, 52 insertions(+), 11 deletions(-)

Comments

Stefano Sabatini March 28, 2023, 10:08 p.m. UTC | #1
On date Sunday 2023-03-26 23:34:59 +0200, Stefano Sabatini wrote:
> Also extend docs, use argparse and logging.
> ---
>  tools/zmqshell.py | 63 ++++++++++++++++++++++++++++++++++++++---------
>  1 file changed, 52 insertions(+), 11 deletions(-)

Will apply in a few days if I see no comments.
Leo Izen March 29, 2023, 4:06 a.m. UTC | #2
On 3/26/23 17:34, Stefano Sabatini wrote:
> Also extend docs, use argparse and logging.
> ---
>   tools/zmqshell.py | 63 ++++++++++++++++++++++++++++++++++++++---------
>   1 file changed, 52 insertions(+), 11 deletions(-)
> 
> diff --git a/tools/zmqshell.py b/tools/zmqshell.py
> index a7d1126006..8d941636e1 100755
> --- a/tools/zmqshell.py
> +++ b/tools/zmqshell.py
> @@ -1,6 +1,32 @@
> -#!/usr/bin/env python2
> +#!/usr/bin/env python3
> +
> +import argparse
> +import cmd
> +import logging
> +import sys
> +import zmq
> +
> +HELP = '''
> +Provide a shell used to send interactive commands to a zmq filter.
> +
> +The command assumes there is a running zmq or azmq filter acting as a
> +ZMQ server.
> +
> +You can send a command to it, follwing the syntax:
> +TARGET COMMAND [COMMAND_ARGS]
> +
> +* TARGET is the target filter identifier to send the command to
> +* COMMAND is the name of the command sent to the filter
> +* COMMAND_ARGS is the optional specification of command arguments
> +
> +See the zmq/azmq filters documentation for more details, and the
> +zeromq documentation at:
> +https://zeromq.org/
> +'''
> +
> +logging.basicConfig(format='zmqshell|%(levelname)s> %(message)s', level=logging.INFO)
> +log = logging.getLogger()
>   
> -import sys, zmq, cmd
>   
>   class LavfiCmd(cmd.Cmd):
>       prompt = 'lavfi> '
> @@ -14,13 +40,28 @@ class LavfiCmd(cmd.Cmd):
>       def onecmd(self, cmd):
>           if cmd == 'EOF':
>               sys.exit(0)
> -        print 'Sending command:[%s]' % cmd
> -        self.requester.send(cmd)
> -        message = self.requester.recv()
> -        print 'Received reply:[%s]' % message
> -
> -try:
> -    bind_address = sys.argv[1] if len(sys.argv) > 1 else "tcp://localhost:5555"
> -    LavfiCmd(bind_address).cmdloop('FFmpeg libavfilter interactive shell')
> -except KeyboardInterrupt:
> +        log.info(f"Sending command: {cmd}")
> +        self.requester.send_string(cmd)
> +        response = self.requester.recv_string()
> +        log.info(f"Received response: {response}")
> +
> +
> +class Formatter(
> +    argparse.ArgumentDefaultsHelpFormatter, argparse.RawDescriptionHelpFormatter
> +):
>       pass
> +
> +
> +def main():
> +    parser = argparse.ArgumentParser(description=HELP, formatter_class=Formatter)
> +    parser.add_argument('--bind-address', '-b', default='tcp://localhost:5555', help='specify bind address used to communicate with ZMQ')
> +

This changes the interface to use `--bind-address` instead of just 
passing the address directly as argv[1]. Does this have the potential to 
break anything downstream? Or do we make no promises about this interface?


- Leo Izen (thebombzen)
Stefano Sabatini April 1, 2023, 11:21 p.m. UTC | #3
On date Wednesday 2023-03-29 00:06:40 -0400, Leo Izen wrote:
> On 3/26/23 17:34, Stefano Sabatini wrote:
> > Also extend docs, use argparse and logging.
> > ---
> >   tools/zmqshell.py | 63 ++++++++++++++++++++++++++++++++++++++---------
> >   1 file changed, 52 insertions(+), 11 deletions(-)
[...]
> > +def main():
> > +    parser = argparse.ArgumentParser(description=HELP, formatter_class=Formatter)
> > +    parser.add_argument('--bind-address', '-b', default='tcp://localhost:5555', help='specify bind address used to communicate with ZMQ')
> > +

> This changes the interface to use `--bind-address` instead of just passing
> the address directly as argv[1]. Does this have the potential to break
> anything downstream? Or do we make no promises about this interface?

This is mostly meant for interactive use, so I'd rather keep things
simple and drop the old syntax.
Stefano Sabatini April 2, 2023, 3:14 p.m. UTC | #4
On date Sunday 2023-04-02 01:21:12 +0200, Stefano Sabatini wrote:
> On date Wednesday 2023-03-29 00:06:40 -0400, Leo Izen wrote:
> > On 3/26/23 17:34, Stefano Sabatini wrote:
> > > Also extend docs, use argparse and logging.
> > > ---
> > >   tools/zmqshell.py | 63 ++++++++++++++++++++++++++++++++++++++---------
> > >   1 file changed, 52 insertions(+), 11 deletions(-)
> [...]
> > > +def main():
> > > +    parser = argparse.ArgumentParser(description=HELP, formatter_class=Formatter)
> > > +    parser.add_argument('--bind-address', '-b', default='tcp://localhost:5555', help='specify bind address used to communicate with ZMQ')
> > > +
> 
> > This changes the interface to use `--bind-address` instead of just passing
> > the address directly as argv[1]. Does this have the potential to break
> > anything downstream? Or do we make no promises about this interface?
> 
> This is mostly meant for interactive use, so I'd rather keep things
> simple and drop the old syntax.

Pushed.
diff mbox series

Patch

diff --git a/tools/zmqshell.py b/tools/zmqshell.py
index a7d1126006..8d941636e1 100755
--- a/tools/zmqshell.py
+++ b/tools/zmqshell.py
@@ -1,6 +1,32 @@ 
-#!/usr/bin/env python2
+#!/usr/bin/env python3
+
+import argparse
+import cmd
+import logging
+import sys
+import zmq
+
+HELP = '''
+Provide a shell used to send interactive commands to a zmq filter.
+
+The command assumes there is a running zmq or azmq filter acting as a
+ZMQ server.
+
+You can send a command to it, follwing the syntax:
+TARGET COMMAND [COMMAND_ARGS]
+
+* TARGET is the target filter identifier to send the command to
+* COMMAND is the name of the command sent to the filter
+* COMMAND_ARGS is the optional specification of command arguments
+
+See the zmq/azmq filters documentation for more details, and the
+zeromq documentation at:
+https://zeromq.org/
+'''
+
+logging.basicConfig(format='zmqshell|%(levelname)s> %(message)s', level=logging.INFO)
+log = logging.getLogger()
 
-import sys, zmq, cmd
 
 class LavfiCmd(cmd.Cmd):
     prompt = 'lavfi> '
@@ -14,13 +40,28 @@  class LavfiCmd(cmd.Cmd):
     def onecmd(self, cmd):
         if cmd == 'EOF':
             sys.exit(0)
-        print 'Sending command:[%s]' % cmd
-        self.requester.send(cmd)
-        message = self.requester.recv()
-        print 'Received reply:[%s]' % message
-
-try:
-    bind_address = sys.argv[1] if len(sys.argv) > 1 else "tcp://localhost:5555"
-    LavfiCmd(bind_address).cmdloop('FFmpeg libavfilter interactive shell')
-except KeyboardInterrupt:
+        log.info(f"Sending command: {cmd}")
+        self.requester.send_string(cmd)
+        response = self.requester.recv_string()
+        log.info(f"Received response: {response}")
+
+
+class Formatter(
+    argparse.ArgumentDefaultsHelpFormatter, argparse.RawDescriptionHelpFormatter
+):
     pass
+
+
+def main():
+    parser = argparse.ArgumentParser(description=HELP, formatter_class=Formatter)
+    parser.add_argument('--bind-address', '-b', default='tcp://localhost:5555', help='specify bind address used to communicate with ZMQ')
+
+    args = parser.parse_args()
+    try:
+        LavfiCmd(args.bind_address).cmdloop('FFmpeg libavfilter interactive shell')
+    except KeyboardInterrupt:
+        pass
+
+
+if __name__ == '__main__':
+    main()