diff mbox series

wpas-dbus-new.py: fix python formatting

Message ID 20200128145429.29120-1-yegorslists@googlemail.com
State Changes Requested
Headers show
Series wpas-dbus-new.py: fix python formatting | expand

Commit Message

Yegor Yefremov Jan. 28, 2020, 2:54 p.m. UTC
From: Yegor Yefremov <yegorslists@googlemail.com>

Run autopep8 and changes some other warning manually.

Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
---
 wpa_supplicant/examples/wpas-dbus-new.py | 244 ++++++++++++-----------
 1 file changed, 127 insertions(+), 117 deletions(-)

Comments

Yegor Yefremov Jan. 29, 2020, 9:14 a.m. UTC | #1
On Tue, Jan 28, 2020 at 3:54 PM <yegorslists@googlemail.com> wrote:
>
> From: Yegor Yefremov <yegorslists@googlemail.com>
>
> Run autopep8 and changes some other warning manually.
>
> Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
> ---
>  wpa_supplicant/examples/wpas-dbus-new.py | 244 ++++++++++++-----------
>  1 file changed, 127 insertions(+), 117 deletions(-)
>
> diff --git a/wpa_supplicant/examples/wpas-dbus-new.py b/wpa_supplicant/examples/wpas-dbus-new.py
> index 6bf74ae44..6201c2ace 100755
> --- a/wpa_supplicant/examples/wpas-dbus-new.py
> +++ b/wpa_supplicant/examples/wpas-dbus-new.py
> @@ -1,9 +1,10 @@
>  #!/usr/bin/python
>
> -import dbus
> -import sys, os
> +import os
> +import sys
>  import time
>  import gobject
> +import dbus
>  from dbus.mainloop.glib import DBusGMainLoop
>
>  WPAS_DBUS_SERVICE = "fi.w1.wpa_supplicant1"
> @@ -14,136 +15,145 @@ WPAS_DBUS_INTERFACES_INTERFACE = "fi.w1.wpa_supplicant1.Interface"
>  WPAS_DBUS_INTERFACES_OPATH = "/fi/w1/wpa_supplicant1/Interfaces"
>  WPAS_DBUS_BSS_INTERFACE = "fi.w1.wpa_supplicant1.BSS"
>
> +
>  def byte_array_to_string(s):
> -       import urllib
> -       r = ""
> -       for c in s:
> -               if c >= 32 and c < 127:
> -                       r += "%c" % c
> -               else:
> -                       r += urllib.quote(chr(c))
> -       return r
> +    import urllib
> +    r = ""
> +    for c in s:
> +        if c >= 32 and c < 127:
> +            r += "%c" % c
> +        else:
> +            r += urllib.quote(chr(c))
> +    return r
> +
>
>  def list_interfaces(wpas_obj):
> -       ifaces = wpas_obj.Get(WPAS_DBUS_INTERFACE, 'Interfaces',
> -                             dbus_interface=dbus.PROPERTIES_IFACE)
> -       for path in ifaces:
> -               if_obj = bus.get_object(WPAS_DBUS_SERVICE, path)
> -               ifname = if_obj.Get(WPAS_DBUS_INTERFACES_INTERFACE, 'Ifname',
> -                             dbus_interface=dbus.PROPERTIES_IFACE)
> -               print(ifname)
> +    ifaces = wpas_obj.Get(WPAS_DBUS_INTERFACE, 'Interfaces',
> +                          dbus_interface=dbus.PROPERTIES_IFACE)
> +    for path in ifaces:
> +        if_obj = bus.get_object(WPAS_DBUS_SERVICE, path)
> +        ifname = if_obj.Get(WPAS_DBUS_INTERFACES_INTERFACE, 'Ifname',
> +                            dbus_interface=dbus.PROPERTIES_IFACE)
> +        print(ifname)
> +
>
>  def propertiesChanged(properties):
> -       if properties.has_key("State"):
> -               print("PropertiesChanged: State: %s" % (properties["State"]))
> +    if "State" in properties:
> +        print("PropertiesChanged: State: %s" % (properties["State"]))
> +
>
>  def showBss(bss):
> -       net_obj = bus.get_object(WPAS_DBUS_SERVICE, bss)
> -       net = dbus.Interface(net_obj, WPAS_DBUS_BSS_INTERFACE)
> -
> -       # Convert the byte-array for SSID and BSSID to printable strings
> -       val = net_obj.Get(WPAS_DBUS_BSS_INTERFACE, 'BSSID',
> -                         dbus_interface=dbus.PROPERTIES_IFACE)
> -       bssid = ""
> -       for item in val:
> -               bssid = bssid + ":%02x" % item
> -       bssid = bssid[1:]
> -       val = net_obj.Get(WPAS_DBUS_BSS_INTERFACE, 'SSID',
> -                         dbus_interface=dbus.PROPERTIES_IFACE)
> -       ssid = byte_array_to_string(val)
> -
> -       val = net_obj.Get(WPAS_DBUS_BSS_INTERFACE, 'WPA',
> -                         dbus_interface=dbus.PROPERTIES_IFACE)
> -       wpa = "no"
> -       if len(val["KeyMgmt"]) > 0:
> -               wpa = "yes"
> -       val = net_obj.Get(WPAS_DBUS_BSS_INTERFACE, 'RSN',
> -                         dbus_interface=dbus.PROPERTIES_IFACE)
> -       wpa2 = "no"
> -       if len(val["KeyMgmt"]) > 0:
> -               wpa2 = "yes"
> -       freq = net_obj.Get(WPAS_DBUS_BSS_INTERFACE, 'Frequency',
> -                          dbus_interface=dbus.PROPERTIES_IFACE)
> -       signal = net_obj.Get(WPAS_DBUS_BSS_INTERFACE, 'Signal',
> -                            dbus_interface=dbus.PROPERTIES_IFACE)
> -       val = net_obj.Get(WPAS_DBUS_BSS_INTERFACE, 'Rates',
> -                         dbus_interface=dbus.PROPERTIES_IFACE)
> -       if len(val) > 0:
> -               maxrate = val[0] / 1000000
> -       else:
> -               maxrate = 0
> -
> -       print("  %s  ::  ssid='%s'  wpa=%s  wpa2=%s  signal=%d  rate=%d  freq=%d" % (bssid, ssid, wpa, wpa2, signal, maxrate, freq))
> +    net_obj = bus.get_object(WPAS_DBUS_SERVICE, bss)
> +    net = dbus.Interface(net_obj, WPAS_DBUS_BSS_INTERFACE)
> +
> +    # Convert the byte-array for SSID and BSSID to printable strings
> +    val = net_obj.Get(WPAS_DBUS_BSS_INTERFACE, 'BSSID',
> +                      dbus_interface=dbus.PROPERTIES_IFACE)
> +    bssid = ""
> +    for item in val:
> +        bssid = bssid + ":%02x" % item
> +    bssid = bssid[1:]
> +    val = net_obj.Get(WPAS_DBUS_BSS_INTERFACE, 'SSID',
> +                      dbus_interface=dbus.PROPERTIES_IFACE)
> +    ssid = byte_array_to_string(val)
> +
> +    val = net_obj.Get(WPAS_DBUS_BSS_INTERFACE, 'WPA',
> +                      dbus_interface=dbus.PROPERTIES_IFACE)
> +    wpa = "no"
> +    if val["KeyMgmt"]:
> +        wpa = "yes"
> +    val = net_obj.Get(WPAS_DBUS_BSS_INTERFACE, 'RSN',
> +                      dbus_interface=dbus.PROPERTIES_IFACE)
> +    wpa2 = "no"
> +    if val["KeyMgmt"]:
> +        wpa2 = "yes"
> +    freq = net_obj.Get(WPAS_DBUS_BSS_INTERFACE, 'Frequency',
> +                       dbus_interface=dbus.PROPERTIES_IFACE)
> +    signal = net_obj.Get(WPAS_DBUS_BSS_INTERFACE, 'Signal',
> +                         dbus_interface=dbus.PROPERTIES_IFACE)
> +    val = net_obj.Get(WPAS_DBUS_BSS_INTERFACE, 'Rates',
> +                      dbus_interface=dbus.PROPERTIES_IFACE)
> +    if val:
> +        maxrate = val[0] / 1000000
> +    else:
> +        maxrate = 0
> +
> +    print("  %s  ::  ssid='%s'  wpa=%s  wpa2=%s  signal=%d  rate=%d  freq=%d" %
> +          (bssid, ssid, wpa, wpa2, signal, maxrate, freq))
> +
>
>  def scanDone(success):
> -       print("Scan done: success=%s" % success)
> -
> -       res = if_obj.Get(WPAS_DBUS_INTERFACES_INTERFACE, 'BSSs',
> -                        dbus_interface=dbus.PROPERTIES_IFACE)
> +    print("Scan done: success=%s" % success)
> +
> +    res = if_obj.Get(WPAS_DBUS_INTERFACES_INTERFACE, 'BSSs',
> +                     dbus_interface=dbus.PROPERTIES_IFACE)
> +
> +    print("Scanned wireless networks:")
> +    for opath in res:
> +        print(opath)
> +        showBss(opath)
>
> -       print("Scanned wireless networks:")
> -       for opath in res:
> -               print(opath)
> -               showBss(opath)
>
>  def bssAdded(bss, properties):
> -       print("BSS added: %s" % (bss))
> -       showBss(bss)
> +    print("BSS added: %s" % (bss))
> +    showBss(bss)
> +
>
>  def bssRemoved(bss):
> -       print("BSS removed: %s" % (bss))
> +    print("BSS removed: %s" % (bss))
> +
>
>  def main():
> -       dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
> -       global bus
> -       bus = dbus.SystemBus()
> -       wpas_obj = bus.get_object(WPAS_DBUS_SERVICE, WPAS_DBUS_OPATH)
> -
> -       if len(sys.argv) != 2:
> -               list_interfaces(wpas_obj)
> -               os._exit(1)
> -
> -       wpas = dbus.Interface(wpas_obj, WPAS_DBUS_INTERFACE)
> -       bus.add_signal_receiver(scanDone,
> -                               dbus_interface=WPAS_DBUS_INTERFACES_INTERFACE,
> -                               signal_name="ScanDone")
> -       bus.add_signal_receiver(bssAdded,
> -                               dbus_interface=WPAS_DBUS_INTERFACES_INTERFACE,
> -                               signal_name="BSSAdded")
> -       bus.add_signal_receiver(bssRemoved,
> -                               dbus_interface=WPAS_DBUS_INTERFACES_INTERFACE,
> -                               signal_name="BSSRemoved")
> -       bus.add_signal_receiver(propertiesChanged,
> -                               dbus_interface=WPAS_DBUS_INTERFACES_INTERFACE,
> -                               signal_name="PropertiesChanged")
> -
> -       ifname = sys.argv[1]
> -
> -       # See if wpa_supplicant already knows about this interface
> -       path = None
> -       try:
> -               path = wpas.GetInterface(ifname)
> -       except dbus.DBusException as exc:
> -               if not str(exc).startswith("fi.w1.wpa_supplicant1.InterfaceUnknown:"):
> -                       raise exc
> -               try:
> -                       path = wpas.CreateInterface({'Ifname': ifname, 'Driver': 'test'})
> -                       time.sleep(1)
> -
> -               except dbus.DBusException as exc:
> -                       if not str(exc).startswith("fi.w1.wpa_supplicant1.InterfaceExists:"):
> -                               raise exc
> -
> -       global if_obj
> -       if_obj = bus.get_object(WPAS_DBUS_SERVICE, path)
> -       global iface
> -       iface = dbus.Interface(if_obj, WPAS_DBUS_INTERFACES_INTERFACE)
> -       iface.Scan({'Type': 'active'})
> -
> -       gobject.MainLoop().run()
> -
> -       wpas.RemoveInterface(dbus.ObjectPath(path))
> +    dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
> +    global bus
> +    bus = dbus.SystemBus()
> +    wpas_obj = bus.get_object(WPAS_DBUS_SERVICE, WPAS_DBUS_OPATH)
> +
> +    if len(sys.argv) != 2:
> +        list_interfaces(wpas_obj)
> +        os._exit(1)
> +
> +    wpas = dbus.Interface(wpas_obj, WPAS_DBUS_INTERFACE)
> +    bus.add_signal_receiver(scanDone,
> +                            dbus_interface=WPAS_DBUS_INTERFACES_INTERFACE,
> +                            signal_name="ScanDone")
> +    bus.add_signal_receiver(bssAdded,
> +                            dbus_interface=WPAS_DBUS_INTERFACES_INTERFACE,
> +                            signal_name="BSSAdded")
> +    bus.add_signal_receiver(bssRemoved,
> +                            dbus_interface=WPAS_DBUS_INTERFACES_INTERFACE,
> +                            signal_name="BSSRemoved")
> +    bus.add_signal_receiver(propertiesChanged,
> +                            dbus_interface=WPAS_DBUS_INTERFACES_INTERFACE,
> +                            signal_name="PropertiesChanged")
> +
> +    ifname = sys.argv[1]
> +
> +    # See if wpa_supplicant already knows about this interface
> +    path = None
> +    try:
> +        path = wpas.GetInterface(ifname)
> +    except dbus.DBusException as exc:
> +        if not str(exc).startswith("fi.w1.wpa_supplicant1.InterfaceUnknown:"):
> +            raise exc
> +        try:
> +            path = wpas.CreateInterface({'Ifname': ifname, 'Driver': 'test'})
> +            time.sleep(1)
> +
> +        except dbus.DBusException as exc:
> +            if not str(exc).startswith("fi.w1.wpa_supplicant1.InterfaceExists:"):
> +                raise exc
> +
> +    global if_obj
> +    if_obj = bus.get_object(WPAS_DBUS_SERVICE, path)
> +    global iface
> +    iface = dbus.Interface(if_obj, WPAS_DBUS_INTERFACES_INTERFACE)
> +    iface.Scan({'Type': 'active'})
> +
> +    gobject.MainLoop().run()
> +
> +    wpas.RemoveInterface(dbus.ObjectPath(path))
>
> -if __name__ == "__main__":
> -       main()
>
> +if __name__ == "__main__":
> +    main()
> --
> 2.17.0

This is an attempt to introduce a common python formatting "standard"
for Python examples. If this is OK, I have some other patches in the
queue.

For example python-gi support, as python3-gobject packet is not
available in newer Linux distributions and one is supposed to move to
python3-gi module.

+try:
+    from gi.repository import GObject as gobject
+except:
+    import gobject
+

I have also problems when passing a 'test' as a driver in Py3. This
variant is working for both python versions on at least Ubuntu 18.04.3
LTS:

-            path = wpas.CreateInterface({'Ifname': ifname, 'Driver': 'test'})
+            path = wpas.CreateInterface({'Ifname': ifname})

What do you think about it?

Regards,
Yegor
Jouni Malinen March 2, 2020, 10:12 a.m. UTC | #2
On Tue, Jan 28, 2020 at 03:54:29PM +0100, yegorslists@googlemail.com wrote:
> Run autopep8 and changes some other warning manually.

I'd be fine changes indentation to use spaces, but I'm not sure I want
to open the door for running some automated tools to reformat all 125+k
lines of python code in hostap.git since some of the other changes do
not seem to match the style used in tests/hwsim/*.py. This type of
changes are inconvenient to review manually, so there would need to be a
separate commit for each change that I could execute myself without
having to do such review. And in any case, there would need to be clear
justification on doing something like this if it ends up generating
thousands of modifications just to be closer to some definition of
python formatting.
diff mbox series

Patch

diff --git a/wpa_supplicant/examples/wpas-dbus-new.py b/wpa_supplicant/examples/wpas-dbus-new.py
index 6bf74ae44..6201c2ace 100755
--- a/wpa_supplicant/examples/wpas-dbus-new.py
+++ b/wpa_supplicant/examples/wpas-dbus-new.py
@@ -1,9 +1,10 @@ 
 #!/usr/bin/python
 
-import dbus
-import sys, os
+import os
+import sys
 import time
 import gobject
+import dbus
 from dbus.mainloop.glib import DBusGMainLoop
 
 WPAS_DBUS_SERVICE = "fi.w1.wpa_supplicant1"
@@ -14,136 +15,145 @@  WPAS_DBUS_INTERFACES_INTERFACE = "fi.w1.wpa_supplicant1.Interface"
 WPAS_DBUS_INTERFACES_OPATH = "/fi/w1/wpa_supplicant1/Interfaces"
 WPAS_DBUS_BSS_INTERFACE = "fi.w1.wpa_supplicant1.BSS"
 
+
 def byte_array_to_string(s):
-	import urllib
-	r = ""    
-	for c in s:
-		if c >= 32 and c < 127:
-			r += "%c" % c
-		else:
-			r += urllib.quote(chr(c))
-	return r
+    import urllib
+    r = ""
+    for c in s:
+        if c >= 32 and c < 127:
+            r += "%c" % c
+        else:
+            r += urllib.quote(chr(c))
+    return r
+
 
 def list_interfaces(wpas_obj):
-	ifaces = wpas_obj.Get(WPAS_DBUS_INTERFACE, 'Interfaces',
-			      dbus_interface=dbus.PROPERTIES_IFACE)
-	for path in ifaces:
-		if_obj = bus.get_object(WPAS_DBUS_SERVICE, path)
-		ifname = if_obj.Get(WPAS_DBUS_INTERFACES_INTERFACE, 'Ifname',
-			      dbus_interface=dbus.PROPERTIES_IFACE)
-		print(ifname)
+    ifaces = wpas_obj.Get(WPAS_DBUS_INTERFACE, 'Interfaces',
+                          dbus_interface=dbus.PROPERTIES_IFACE)
+    for path in ifaces:
+        if_obj = bus.get_object(WPAS_DBUS_SERVICE, path)
+        ifname = if_obj.Get(WPAS_DBUS_INTERFACES_INTERFACE, 'Ifname',
+                            dbus_interface=dbus.PROPERTIES_IFACE)
+        print(ifname)
+
 
 def propertiesChanged(properties):
-	if properties.has_key("State"):
-		print("PropertiesChanged: State: %s" % (properties["State"]))
+    if "State" in properties:
+        print("PropertiesChanged: State: %s" % (properties["State"]))
+
 
 def showBss(bss):
-	net_obj = bus.get_object(WPAS_DBUS_SERVICE, bss)
-	net = dbus.Interface(net_obj, WPAS_DBUS_BSS_INTERFACE)
-
-	# Convert the byte-array for SSID and BSSID to printable strings
-	val = net_obj.Get(WPAS_DBUS_BSS_INTERFACE, 'BSSID',
-			  dbus_interface=dbus.PROPERTIES_IFACE)
-	bssid = ""
-	for item in val:
-		bssid = bssid + ":%02x" % item
-	bssid = bssid[1:]
-	val = net_obj.Get(WPAS_DBUS_BSS_INTERFACE, 'SSID',
-			  dbus_interface=dbus.PROPERTIES_IFACE)
-	ssid = byte_array_to_string(val)
-
-	val = net_obj.Get(WPAS_DBUS_BSS_INTERFACE, 'WPA',
-			  dbus_interface=dbus.PROPERTIES_IFACE)
-	wpa = "no"
-	if len(val["KeyMgmt"]) > 0:
-		wpa = "yes"
-	val = net_obj.Get(WPAS_DBUS_BSS_INTERFACE, 'RSN',
-			  dbus_interface=dbus.PROPERTIES_IFACE)
-	wpa2 = "no"
-	if len(val["KeyMgmt"]) > 0:
-		wpa2 = "yes"
-	freq = net_obj.Get(WPAS_DBUS_BSS_INTERFACE, 'Frequency',
-			   dbus_interface=dbus.PROPERTIES_IFACE)
-	signal = net_obj.Get(WPAS_DBUS_BSS_INTERFACE, 'Signal',
-			     dbus_interface=dbus.PROPERTIES_IFACE)
-	val = net_obj.Get(WPAS_DBUS_BSS_INTERFACE, 'Rates',
-			  dbus_interface=dbus.PROPERTIES_IFACE)
-	if len(val) > 0:
-		maxrate = val[0] / 1000000
-	else:
-		maxrate = 0
-
-	print("  %s  ::  ssid='%s'  wpa=%s  wpa2=%s  signal=%d  rate=%d  freq=%d" % (bssid, ssid, wpa, wpa2, signal, maxrate, freq))
+    net_obj = bus.get_object(WPAS_DBUS_SERVICE, bss)
+    net = dbus.Interface(net_obj, WPAS_DBUS_BSS_INTERFACE)
+
+    # Convert the byte-array for SSID and BSSID to printable strings
+    val = net_obj.Get(WPAS_DBUS_BSS_INTERFACE, 'BSSID',
+                      dbus_interface=dbus.PROPERTIES_IFACE)
+    bssid = ""
+    for item in val:
+        bssid = bssid + ":%02x" % item
+    bssid = bssid[1:]
+    val = net_obj.Get(WPAS_DBUS_BSS_INTERFACE, 'SSID',
+                      dbus_interface=dbus.PROPERTIES_IFACE)
+    ssid = byte_array_to_string(val)
+
+    val = net_obj.Get(WPAS_DBUS_BSS_INTERFACE, 'WPA',
+                      dbus_interface=dbus.PROPERTIES_IFACE)
+    wpa = "no"
+    if val["KeyMgmt"]:
+        wpa = "yes"
+    val = net_obj.Get(WPAS_DBUS_BSS_INTERFACE, 'RSN',
+                      dbus_interface=dbus.PROPERTIES_IFACE)
+    wpa2 = "no"
+    if val["KeyMgmt"]:
+        wpa2 = "yes"
+    freq = net_obj.Get(WPAS_DBUS_BSS_INTERFACE, 'Frequency',
+                       dbus_interface=dbus.PROPERTIES_IFACE)
+    signal = net_obj.Get(WPAS_DBUS_BSS_INTERFACE, 'Signal',
+                         dbus_interface=dbus.PROPERTIES_IFACE)
+    val = net_obj.Get(WPAS_DBUS_BSS_INTERFACE, 'Rates',
+                      dbus_interface=dbus.PROPERTIES_IFACE)
+    if val:
+        maxrate = val[0] / 1000000
+    else:
+        maxrate = 0
+
+    print("  %s  ::  ssid='%s'  wpa=%s  wpa2=%s  signal=%d  rate=%d  freq=%d" %
+          (bssid, ssid, wpa, wpa2, signal, maxrate, freq))
+
 
 def scanDone(success):
-	print("Scan done: success=%s" % success)
-	
-	res = if_obj.Get(WPAS_DBUS_INTERFACES_INTERFACE, 'BSSs',
-			 dbus_interface=dbus.PROPERTIES_IFACE)
+    print("Scan done: success=%s" % success)
+
+    res = if_obj.Get(WPAS_DBUS_INTERFACES_INTERFACE, 'BSSs',
+                     dbus_interface=dbus.PROPERTIES_IFACE)
+
+    print("Scanned wireless networks:")
+    for opath in res:
+        print(opath)
+        showBss(opath)
 
-	print("Scanned wireless networks:")
-	for opath in res:
-		print(opath)
-		showBss(opath)
 
 def bssAdded(bss, properties):
-	print("BSS added: %s" % (bss))
-	showBss(bss)
+    print("BSS added: %s" % (bss))
+    showBss(bss)
+
 
 def bssRemoved(bss):
-	print("BSS removed: %s" % (bss))
+    print("BSS removed: %s" % (bss))
+
 
 def main():
-	dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
-	global bus
-	bus = dbus.SystemBus()
-	wpas_obj = bus.get_object(WPAS_DBUS_SERVICE, WPAS_DBUS_OPATH)
-
-	if len(sys.argv) != 2:
-		list_interfaces(wpas_obj)
-		os._exit(1)
-
-	wpas = dbus.Interface(wpas_obj, WPAS_DBUS_INTERFACE)
-	bus.add_signal_receiver(scanDone,
-				dbus_interface=WPAS_DBUS_INTERFACES_INTERFACE,
-				signal_name="ScanDone")
-	bus.add_signal_receiver(bssAdded,
-				dbus_interface=WPAS_DBUS_INTERFACES_INTERFACE,
-				signal_name="BSSAdded")
-	bus.add_signal_receiver(bssRemoved,
-				dbus_interface=WPAS_DBUS_INTERFACES_INTERFACE,
-				signal_name="BSSRemoved")
-	bus.add_signal_receiver(propertiesChanged,
-				dbus_interface=WPAS_DBUS_INTERFACES_INTERFACE,
-				signal_name="PropertiesChanged")
-
-	ifname = sys.argv[1]
-
-	# See if wpa_supplicant already knows about this interface
-	path = None
-	try:
-		path = wpas.GetInterface(ifname)
-	except dbus.DBusException as exc:
-		if not str(exc).startswith("fi.w1.wpa_supplicant1.InterfaceUnknown:"):
-			raise exc
-		try:
-			path = wpas.CreateInterface({'Ifname': ifname, 'Driver': 'test'})
-			time.sleep(1)
-
-		except dbus.DBusException as exc:
-			if not str(exc).startswith("fi.w1.wpa_supplicant1.InterfaceExists:"):
-				raise exc
-
-	global if_obj
-	if_obj = bus.get_object(WPAS_DBUS_SERVICE, path)
-	global iface
-	iface = dbus.Interface(if_obj, WPAS_DBUS_INTERFACES_INTERFACE)
-	iface.Scan({'Type': 'active'})
-
-	gobject.MainLoop().run()
-
-	wpas.RemoveInterface(dbus.ObjectPath(path))
+    dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
+    global bus
+    bus = dbus.SystemBus()
+    wpas_obj = bus.get_object(WPAS_DBUS_SERVICE, WPAS_DBUS_OPATH)
+
+    if len(sys.argv) != 2:
+        list_interfaces(wpas_obj)
+        os._exit(1)
+
+    wpas = dbus.Interface(wpas_obj, WPAS_DBUS_INTERFACE)
+    bus.add_signal_receiver(scanDone,
+                            dbus_interface=WPAS_DBUS_INTERFACES_INTERFACE,
+                            signal_name="ScanDone")
+    bus.add_signal_receiver(bssAdded,
+                            dbus_interface=WPAS_DBUS_INTERFACES_INTERFACE,
+                            signal_name="BSSAdded")
+    bus.add_signal_receiver(bssRemoved,
+                            dbus_interface=WPAS_DBUS_INTERFACES_INTERFACE,
+                            signal_name="BSSRemoved")
+    bus.add_signal_receiver(propertiesChanged,
+                            dbus_interface=WPAS_DBUS_INTERFACES_INTERFACE,
+                            signal_name="PropertiesChanged")
+
+    ifname = sys.argv[1]
+
+    # See if wpa_supplicant already knows about this interface
+    path = None
+    try:
+        path = wpas.GetInterface(ifname)
+    except dbus.DBusException as exc:
+        if not str(exc).startswith("fi.w1.wpa_supplicant1.InterfaceUnknown:"):
+            raise exc
+        try:
+            path = wpas.CreateInterface({'Ifname': ifname, 'Driver': 'test'})
+            time.sleep(1)
+
+        except dbus.DBusException as exc:
+            if not str(exc).startswith("fi.w1.wpa_supplicant1.InterfaceExists:"):
+                raise exc
+
+    global if_obj
+    if_obj = bus.get_object(WPAS_DBUS_SERVICE, path)
+    global iface
+    iface = dbus.Interface(if_obj, WPAS_DBUS_INTERFACES_INTERFACE)
+    iface.Scan({'Type': 'active'})
+
+    gobject.MainLoop().run()
+
+    wpas.RemoveInterface(dbus.ObjectPath(path))
 
-if __name__ == "__main__":
-	main()
 
+if __name__ == "__main__":
+    main()