I think all the libraries are currently wrappers for cmdline programs. See this evaluation of ble python libraries. For pygatt there’s at least a pull request to use the bluez dbus api. So I would recommend to use pygatt and hope that the dbus api lands soon.