From 95940a3bb1817110e70fa472a89af601bde0578e Mon Sep 17 00:00:00 2001 From: tikki Date: Fri, 31 Jan 2020 00:53:32 +0100 Subject: [PATCH 01/17] reformat using Black, isort, autoflake --- examples/audio-only_client.py | 18 +- examples/echobot.py | 3 +- examples/talking_bot.py | 17 +- pymumble_py3/blobs.py | 13 +- pymumble_py3/callbacks.py | 76 +- pymumble_py3/channels.py | 21 +- pymumble_py3/commands.py | 19 +- pymumble_py3/constants.py | 20 +- pymumble_py3/errors.py | 4 +- pymumble_py3/messages.py | 25 +- pymumble_py3/mumble.py | 282 +- pymumble_py3/mumble_pb2.py | 6024 +++++++++++++++++++++------------ pymumble_py3/soundoutput.py | 115 +- pymumble_py3/soundqueue.py | 84 +- pymumble_py3/tools.py | 70 +- pymumble_py3/users.py | 43 +- setup.py | 36 +- 17 files changed, 4370 insertions(+), 2500 deletions(-) diff --git a/examples/audio-only_client.py b/examples/audio-only_client.py index 82397a0..9cd8eec 100644 --- a/examples/audio-only_client.py +++ b/examples/audio-only_client.py @@ -23,11 +23,9 @@ # Works on MacOS. Does NOT work on RPi 3B+ (I cannot figure out why. Help will # be much appreciated) +import pyaudio import pymumble.pymumble_py3 as pymumble_py3 from pymumble.pymumble_py3.callbacks import PYMUMBLE_CLBK_SOUNDRECEIVED as PCS -import subprocess as sp -from time import sleep -import pyaudio # Connection details for mumble server. Harded code for now, will have to be # command line arguments eventually @@ -44,12 +42,14 @@ RATE = 48000 # pymumble soundchunk.pcm is 48000Hz p = pyaudio.PyAudio() -stream = p.open(format=FORMAT, - channels=CHANNELS, - rate=RATE, - input=True, # enable both talk - output=True, # and listen - frames_per_buffer=CHUNK) +stream = p.open( + format=FORMAT, + channels=CHANNELS, + rate=RATE, + input=True, # enable both talk + output=True, # and listen + frames_per_buffer=CHUNK, +) # mumble client set up diff --git a/examples/echobot.py b/examples/echobot.py index c4cc74f..318893a 100755 --- a/examples/echobot.py +++ b/examples/echobot.py @@ -2,8 +2,9 @@ # This bot sends any sound it receives back to where it has come from. # WARNING! Don't put two bots in the same place! -import pymumble_py3 import time + +import pymumble_py3 from pymumble_py3.callbacks import PYMUMBLE_CLBK_SOUNDRECEIVED as PCS pwd = "" # password diff --git a/examples/talking_bot.py b/examples/talking_bot.py index 982abfa..28f7e7a 100755 --- a/examples/talking_bot.py +++ b/examples/talking_bot.py @@ -2,10 +2,12 @@ # This bot reads standard input and converts them to speech via espeak and # sends them to server(of course after converting the wave format to s32le) # A blank line to exit. -import pymumble_py3 import subprocess as sp + +import pymumble_py3 + try: - import readline # optional + import readline # optional except ImportError: pass @@ -17,13 +19,14 @@ mumble.start() s = " " while s: - s = input(") ") + s = input(") ") # converting text to speech - command = ["espeak","--stdout", s] + command = ["espeak", "--stdout", s] wave_file = sp.Popen(command, stdout=sp.PIPE).stdout # converting the wave speech to pcm - command = ["ffmpeg", "-i", "-", "-ac", "1", "-f", "s32le","-"] - sound = sp.Popen(command, stdout=sp.PIPE, stderr=sp.DEVNULL, - stdin=wave_file).stdout.read() + command = ["ffmpeg", "-i", "-", "-ac", "1", "-f", "s32le", "-"] + sound = sp.Popen( + command, stdout=sp.PIPE, stderr=sp.DEVNULL, stdin=wave_file + ).stdout.read() # sending speech to server mumble.sound_output.add_sound(sound) diff --git a/pymumble_py3/blobs.py b/pymumble_py3/blobs.py index f32db7f..a3d87f2 100644 --- a/pymumble_py3/blobs.py +++ b/pymumble_py3/blobs.py @@ -9,18 +9,19 @@ class Blobs(dict): """ Manage the Blob library """ + def __init__(self, mumble_object): self.mumble_object = mumble_object - + def get_user_comment(self, hash): """Request the comment of a user""" if hash in self: return request = RequestBlob() request.session_comment.extend(struct.unpack("!5I", hash)) - + self.mumble_object.send_message(PYMUMBLE_MSG_TYPES_REQUESTBLOB, request) - + def get_user_texture(self, hash): """Request the image of a user""" if hash in self: @@ -28,9 +29,9 @@ def get_user_texture(self, hash): request = RequestBlob() request.session_texture.extend(struct.unpack("!5I", hash)) - + self.mumble_object.send_message(PYMUMBLE_MSG_TYPES_REQUESTBLOB, request) - + def get_channel_description(self, hash): """Request the description/comment of a channel""" if hash in self: @@ -38,5 +39,5 @@ def get_channel_description(self, hash): request = RequestBlob() request.channel_description.extend(struct.unpack("!5I", hash)) - + self.mumble_object.send_message(PYMUMBLE_MSG_TYPES_REQUESTBLOB, request) diff --git a/pymumble_py3/callbacks.py b/pymumble_py3/callbacks.py index 8ac059c..16421ef 100644 --- a/pymumble_py3/callbacks.py +++ b/pymumble_py3/callbacks.py @@ -1,9 +1,10 @@ # -*- coding: utf-8 -*- -from .errors import UnknownCallbackError -from .constants import * import threading +from .constants import * +from .errors import UnknownCallbackError + class CallBacks(dict): """ @@ -13,67 +14,72 @@ class CallBacks(dict): The call is done from within the pymumble loop thread, it's important to keep processing short to avoid delays on audio transmission """ + def __init__(self): - self.update({ - PYMUMBLE_CLBK_CONNECTED: None, # Connection succeeded - PYMUMBLE_CLBK_CHANNELCREATED: None, # send the created channel object as parameter - PYMUMBLE_CLBK_CHANNELUPDATED: None, # send the updated channel object and a dict with all the modified fields as parameter - PYMUMBLE_CLBK_CHANNELREMOVED: None, # send the removed channel object as parameter - PYMUMBLE_CLBK_USERCREATED: None, # send the added user object as parameter - PYMUMBLE_CLBK_USERUPDATED: None, # send the updated user object and a dict with all the modified fields as parameter - PYMUMBLE_CLBK_USERREMOVED: None, # send the removed user object and the mumble message as parameter - PYMUMBLE_CLBK_SOUNDRECEIVED: None, # send the user object that received the sound and the SoundChunk object itself - PYMUMBLE_CLBK_TEXTMESSAGERECEIVED: None, # Send the received message - PYMUMBLE_CLBK_CONTEXTACTIONRECEIVED: None, # Send the contextaction message - }) - + self.update( + { + PYMUMBLE_CLBK_CONNECTED: None, # Connection succeeded + PYMUMBLE_CLBK_CHANNELCREATED: None, # send the created channel object as parameter + PYMUMBLE_CLBK_CHANNELUPDATED: None, # send the updated channel object and a dict with all the modified fields as parameter + PYMUMBLE_CLBK_CHANNELREMOVED: None, # send the removed channel object as parameter + PYMUMBLE_CLBK_USERCREATED: None, # send the added user object as parameter + PYMUMBLE_CLBK_USERUPDATED: None, # send the updated user object and a dict with all the modified fields as parameter + PYMUMBLE_CLBK_USERREMOVED: None, # send the removed user object and the mumble message as parameter + PYMUMBLE_CLBK_SOUNDRECEIVED: None, # send the user object that received the sound and the SoundChunk object itself + PYMUMBLE_CLBK_TEXTMESSAGERECEIVED: None, # Send the received message + PYMUMBLE_CLBK_CONTEXTACTIONRECEIVED: None, # Send the contextaction message + } + ) + def set_callback(self, callback, dest): """Define the function to call for a specific callback. Suppress any existing callback function""" if callback not in self: - raise UnknownCallbackError("Callback \"%s\" does not exists." % callback) - + raise UnknownCallbackError('Callback "%s" does not exists.' % callback) + self[callback] = [dest] - + def add_callback(self, callback, dest): """Add the function to call for a specific callback.""" if callback not in self: - raise UnknownCallbackError("Callback \"%s\" does not exists." % callback) - + raise UnknownCallbackError('Callback "%s" does not exists.' % callback) + if self[callback] is None: self[callback] = list() self[callback].append(dest) - + def get_callback(self, callback): """Get the functions assigned to a callback as a list. Return None if no callback defined""" if callback not in self: - raise UnknownCallbackError("Callback \"%s\" does not exists." % callback) - + raise UnknownCallbackError('Callback "%s" does not exists.' % callback) + return self[callback] - + def remove_callback(self, callback, dest): """Remove a specific function from a specific callback. Function object must be the one added before.""" if callback not in self: - raise UnknownCallbackError("Callback \"%s\" does not exists." % callback) - + raise UnknownCallbackError('Callback "%s" does not exists.' % callback) + if self[callback] is None or dest not in self[callback]: - raise UnknownCallbackError("Function not registered for callback \"%s\"." % callback) + raise UnknownCallbackError( + 'Function not registered for callback "%s".' % callback + ) self[callback].remove(dest) if len(self[callback]) == 0: self[callback] = None - + def reset_callback(self, callback): """remove functions for a defined callback""" if callback not in self: - raise UnknownCallbackError("Callback \"%s\" does not exists." % callback) - + raise UnknownCallbackError('Callback "%s" does not exists.' % callback) + self[callback] = None - + def call_callback(self, callback, *pos_parameters): """Call all the registered function for a specific callback.""" if callback not in self: - raise UnknownCallbackError("Callback \"%s\" does not exists." % callback) - + raise UnknownCallbackError('Callback "%s" does not exists.' % callback) + if self[callback]: for func in self[callback]: if callback is PYMUMBLE_CLBK_TEXTMESSAGERECEIVED: @@ -81,11 +87,11 @@ def call_callback(self, callback, *pos_parameters): thr.start() else: func(*pos_parameters) - + def __call__(self, callback, *pos_parameters): """shortcut to be able to call the dict element as a function""" self.call_callback(callback, *pos_parameters) - + def get_callbacks_list(self): """Get a list of all callbacks""" return list(self.keys()) diff --git a/pymumble_py3/channels.py b/pymumble_py3/channels.py index 27c32fd..9ffc69d 100644 --- a/pymumble_py3/channels.py +++ b/pymumble_py3/channels.py @@ -1,8 +1,9 @@ # -*- coding: utf-8 -*- -from .constants import * from threading import Lock -from .errors import UnknownChannelError, TextTooLongError, ImageTooBigError + from . import messages +from .constants import * +from .errors import ImageTooBigError, TextTooLongError, UnknownChannelError class Channels(dict): @@ -25,7 +26,9 @@ def update(self, message): self.callbacks(PYMUMBLE_CLBK_CHANNELCREATED, self[message.channel_id]) else: # update the channel actions = self[message.channel_id].update(message) - self.callbacks(PYMUMBLE_CLBK_CHANNELUPDATED, self[message.channel_id], actions) + self.callbacks( + PYMUMBLE_CLBK_CHANNELUPDATED, self[message.channel_id], actions + ) self.lock.release() @@ -42,7 +45,7 @@ def remove(self, id): def find_by_tree(self, tree): """Find a channel by its full path (a list with an element for each leaf)""" - if not getattr(tree, '__iter__', False): + if not getattr(tree, "__iter__", False): tree = tree # function use argument as a list current = self[0] @@ -66,7 +69,7 @@ def get_childs(self, channel): childs = list() for item in self.values(): - if item.get('parent') and item["parent"] == channel["channel_id"]: + if item.get("parent") and item["parent"] == channel["channel_id"]: childs.append(item) return childs @@ -142,11 +145,15 @@ def update(self, message): actions.update(self.update_field(field.name, value)) if message.HasField("description_hash"): - actions.update(self.update_field("description_hash", message.description_hash)) + actions.update( + self.update_field("description_hash", message.description_hash) + ) if message.HasField("description"): self.mumble_object.blobs[message.description_hash] = message.description else: - self.mumble_object.blobs.get_channel_description(message.description_hash) + self.mumble_object.blobs.get_channel_description( + message.description_hash + ) return actions # return a dict with updates performed, useful for the callback functions diff --git a/pymumble_py3/commands.py b/pymumble_py3/commands.py index c724fbb..4ba1ecd 100644 --- a/pymumble_py3/commands.py +++ b/pymumble_py3/commands.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -from threading import Lock from collections import deque +from threading import Lock class Commands: @@ -9,13 +9,14 @@ class Commands: from whatever tread. Each command has it's own lock semaphore to signal is received an answer """ + def __init__(self): self.id = 0 - - self.queue = deque() - + + self.queue = deque() + self.lock = Lock() - + def new_cmd(self, cmd): """Add a command to the queue""" self.lock.acquire() @@ -27,14 +28,14 @@ def new_cmd(self, cmd): self.lock.release() return cmd.lock - + def is_cmd(self): """Check if there is a command waiting in the queue""" if len(self.queue) > 0: return True else: return False - + def pop_cmd(self): """Return the next command and remove it from the queue""" self.lock.acquire() @@ -46,9 +47,7 @@ def pop_cmd(self): else: self.lock.release() return None - + def answer(self, cmd): """Unlock the command to signal it's completion""" cmd.lock.release() - - diff --git a/pymumble_py3/constants.py b/pymumble_py3/constants.py index 604a267..7321187 100644 --- a/pymumble_py3/constants.py +++ b/pymumble_py3/constants.py @@ -9,10 +9,10 @@ # Tunable parameters # ============================================================================ PYMUMBLE_CONNECTION_RETRY_INTERVAL = 10 # in sec -PYMUMBLE_AUDIO_PER_PACKET = float(20)/1000 # size of one audio packet in sec +PYMUMBLE_AUDIO_PER_PACKET = float(20) / 1000 # size of one audio packet in sec PYMUMBLE_BANDWIDTH = 50 * 1000 # total outgoing bitrate in bit/seconds PYMUMBLE_LOOP_RATE = 0.01 # pause done between two iteration of the main loop of the mumble thread, in sec - # should be small enough to manage the audio output, so smaller than PYMUMBLE_AUDIO_PER_PACKET +# should be small enough to manage the audio output, so smaller than PYMUMBLE_AUDIO_PER_PACKET # ============================================================================ # Constants @@ -20,22 +20,28 @@ PYMUMBLE_PROTOCOL_VERSION = (1, 2, 4) PYMUMBLE_VERSION_STRING = "PyMumble %s" % PYMUMBLE_VERSION PYMUMBLE_OS_STRING = "PyMumble %s" % PYMUMBLE_VERSION -PYMUMBLE_OS_VERSION_STRING = "Python %s - %s %s" % (sys.version, platform.system(), platform.release()) +PYMUMBLE_OS_VERSION_STRING = "Python %s - %s %s" % ( + sys.version, + platform.system(), + platform.release(), +) PYMUMBLE_PING_DELAY = 10 # interval between 2 pings in sec PYMUMBLE_SAMPLERATE = 48000 # in hz -PYMUMBLE_SEQUENCE_DURATION = float(10)/1000 # in sec +PYMUMBLE_SEQUENCE_DURATION = float(10) / 1000 # in sec PYMUMBLE_SEQUENCE_RESET_INTERVAL = 5 # in sec -PYMUMBLE_READ_BUFFER_SIZE = 4096 # how much bytes to read at a time from the control socket, in bytes +PYMUMBLE_READ_BUFFER_SIZE = ( + 4096 # how much bytes to read at a time from the control socket, in bytes +) # client connection state PYMUMBLE_CONN_STATE_NOT_CONNECTED = 0 PYMUMBLE_CONN_STATE_AUTHENTICATING = 1 PYMUMBLE_CONN_STATE_CONNECTED = 2 PYMUMBLE_CONN_STATE_FAILED = 3 - + # Mumble control messages types PYMUMBLE_MSG_TYPES_VERSION = 0 PYMUMBLE_MSG_TYPES_UDPTUNNEL = 1 @@ -65,7 +71,7 @@ # callbacks names PYMUMBLE_CLBK_CONNECTED = "connected" -PYMUMBLE_CLBK_CHANNELCREATED = "channel_created" +PYMUMBLE_CLBK_CHANNELCREATED = "channel_created" PYMUMBLE_CLBK_CHANNELUPDATED = "channel_updated" PYMUMBLE_CLBK_CHANNELREMOVED = "channel_remove" PYMUMBLE_CLBK_USERCREATED = "user_created" diff --git a/pymumble_py3/errors.py b/pymumble_py3/errors.py index 1c1d2bf..1bb5121 100644 --- a/pymumble_py3/errors.py +++ b/pymumble_py3/errors.py @@ -78,7 +78,7 @@ def __init__(self, value): self.value = value def __str__(self): - return 'Maximum Text allowed length: {}'.format(self.value) + return "Maximum Text allowed length: {}".format(self.value) class ImageTooBigError(Exception): @@ -88,4 +88,4 @@ def __init__(self, value): self.value = value def __str__(self): - return 'Maximum Text/Image allowed length: {}'.format(self.value) + return "Maximum Text/Image allowed length: {}".format(self.value) diff --git a/pymumble_py3/messages.py b/pymumble_py3/messages.py index 83a0ca1..bb7a80a 100644 --- a/pymumble_py3/messages.py +++ b/pymumble_py3/messages.py @@ -1,7 +1,8 @@ # -*- coding: utf-8 -*- -from .constants import * from threading import Lock +from .constants import * + class Cmd: """ @@ -25,8 +26,7 @@ def __init__(self, session, channel_id): Cmd.__init__(self) self.cmd = PYMUMBLE_CMD_MOVE - self.parameters = {"session": session, - "channel_id": channel_id} + self.parameters = {"session": session, "channel_id": channel_id} class TextMessage(Cmd): @@ -36,9 +36,11 @@ def __init__(self, session, channel_id, message): Cmd.__init__(self) self.cmd = PYMUMBLE_CMD_TEXTMESSAGE - self.parameters = {"session": session, - "channel_id": channel_id, - "message": message} + self.parameters = { + "session": session, + "channel_id": channel_id, + "message": message, + } class TextPrivateMessage(Cmd): @@ -48,8 +50,7 @@ def __init__(self, session, message): Cmd.__init__(self) self.cmd = PYMUMBLE_CMD_TEXTPRIVATEMESSAGE - self.parameters = {"session": session, - "message": message} + self.parameters = {"session": session, "message": message} class ModUserState(Cmd): @@ -69,9 +70,8 @@ def __init__(self, parent, name, temporary): Cmd.__init__(self) self.cmd = PYMUMBLE_MSG_TYPES_CHANNELSTATE - self.parameters = {"parent": parent, - "name": name, - "temporary": temporary} + self.parameters = {"parent": parent, "name": name, "temporary": temporary} + class RemoveChannel(Cmd): """Command to create channel""" @@ -90,5 +90,4 @@ def __init__(self, voice_id, targets): Cmd.__init__(self) self.cmd = PYMUMBLE_MSG_TYPES_VOICETARGET - self.parameters = {"id": voice_id, - "targets": targets} + self.parameters = {"id": voice_id, "targets": targets} diff --git a/pymumble_py3/mumble.py b/pymumble_py3/mumble.py index af553cf..ffbb188 100644 --- a/pymumble_py3/mumble.py +++ b/pymumble_py3/mumble.py @@ -1,23 +1,24 @@ # -*- coding: utf-8 -*- -import threading import logging -import time import select import socket import ssl import struct +import threading +import time -from .errors import * +from . import ( + blobs, + callbacks, + channels, + commands, + mumble_pb2, + soundoutput, + tools, + users, +) from .constants import * -from . import users -from . import channels -from . import blobs -from . import commands -from . import callbacks -from . import tools -from . import soundoutput - -from . import mumble_pb2 +from .errors import * class Mumble(threading.Thread): @@ -26,7 +27,18 @@ class Mumble(threading.Thread): basically a thread """ - def __init__(self, host, user, port=64738, password='', certfile=None, keyfile=None, reconnect=False, tokens=[], debug=False): + def __init__( + self, + host, + user, + port=64738, + password="", + certfile=None, + keyfile=None, + reconnect=False, + tokens=[], + debug=False, + ): """ host=mumble server hostname or address port=mumble server port @@ -41,7 +53,9 @@ def __init__(self, host, user, port=64738, password='', certfile=None, keyfile=N # TODO: use UDP audio threading.Thread.__init__(self) - self.Log = logging.getLogger("PyMumble") # logging object for errors and debugging + self.Log = logging.getLogger( + "PyMumble" + ) # logging object for errors and debugging if debug: self.Log.setLevel(logging.DEBUG) else: @@ -49,11 +63,13 @@ def __init__(self, host, user, port=64738, password='', certfile=None, keyfile=N ch = logging.StreamHandler() ch.setLevel(logging.DEBUG) - formatter = logging.Formatter('%(asctime)s-%(name)s-%(levelname)s-%(message)s') + formatter = logging.Formatter("%(asctime)s-%(name)s-%(levelname)s-%(message)s") ch.setFormatter(formatter) self.Log.addHandler(ch) - self.parent_thread = threading.current_thread() # main thread of the calling application + self.parent_thread = ( + threading.current_thread() + ) # main thread of the calling application self.mumble_thread = None # thread of the mumble client library self.host = host @@ -63,11 +79,19 @@ def __init__(self, host, user, port=64738, password='', certfile=None, keyfile=N self.certfile = certfile self.keyfile = keyfile self.reconnect = reconnect - self.ping_stats = {"last_rcv": 0, "time_send": 0, "nb": 0, "avg": 40.0, "var": 0.0} + self.ping_stats = { + "last_rcv": 0, + "time_send": 0, + "nb": 0, + "avg": 40.0, + "var": 0.0, + } self.tokens = tokens self.__opus_profile = PYMUMBLE_AUDIO_TYPE_OPUS_PROFILE - self.receive_sound = False # set to True to treat incoming audio, otherwise it is simply ignored + self.receive_sound = ( + False # set to True to treat incoming audio, otherwise it is simply ignored + ) self.loop_rate = PYMUMBLE_LOOP_RATE @@ -75,12 +99,16 @@ def __init__(self, host, user, port=64738, password='', certfile=None, keyfile=N self.callbacks = callbacks.CallBacks() # callbacks management - self.ready_lock = threading.Lock() # released when the connection is fully established with the server + self.ready_lock = ( + threading.Lock() + ) # released when the connection is fully established with the server self.ready_lock.acquire() def init_connection(self): """Initialize variables that are local to a connection, (needed if the client automatically reconnect)""" - self.ready_lock.acquire(False) # reacquire the ready-lock in case of reconnection + self.ready_lock.acquire( + False + ) # reacquire the ready-lock in case of reconnection self.connected = PYMUMBLE_CONN_STATE_NOT_CONNECTED self.control_socket = None @@ -95,11 +123,22 @@ def init_connection(self): self.server_max_message_length = 5000 self.server_max_image_message_length = 131072 - self.users = users.Users(self, self.callbacks) # contains the server's connected users information - self.channels = channels.Channels(self, self.callbacks) # contains the server's channels information + self.users = users.Users( + self, self.callbacks + ) # contains the server's connected users information + self.channels = channels.Channels( + self, self.callbacks + ) # contains the server's channels information self.blobs = blobs.Blobs(self) # manage the blob objects - self.sound_output = soundoutput.SoundOutput(self, PYMUMBLE_AUDIO_PER_PACKET, self.bandwidth, opus_profile=self.__opus_profile) # manage the outgoing sounds - self.commands = commands.Commands() # manage commands sent between the main and the mumble threads + self.sound_output = soundoutput.SoundOutput( + self, + PYMUMBLE_AUDIO_PER_PACKET, + self.bandwidth, + opus_profile=self.__opus_profile, + ) # manage the outgoing sounds + self.commands = ( + commands.Commands() + ) # manage commands sent between the main and the mumble threads self.receive_buffer = bytes() # initialize the control connection input buffer @@ -111,9 +150,13 @@ def run(self): while True: self.init_connection() # reset the connection-specific object members - if self.connect() >= PYMUMBLE_CONN_STATE_FAILED: # some error occurred, exit here + if ( + self.connect() >= PYMUMBLE_CONN_STATE_FAILED + ): # some error occurred, exit here self.ready_lock.release() - raise ConnectionRejectedError ("Connection error with the Mumble (murmur) Server") + raise ConnectionRejectedError( + "Connection error with the Mumble (murmur) Server" + ) break try: @@ -128,24 +171,40 @@ def run(self): def connect(self): """Connect to the server""" - # Get IPv4/IPv6 server address + # Get IPv4/IPv6 server address server_info = socket.getaddrinfo(self.host, self.port, type=socket.SOCK_STREAM) # Connect the SSL tunnel - self.Log.debug("connecting to %s (%s) on port %i.", self.host, server_info[0][1], self.port) + self.Log.debug( + "connecting to %s (%s) on port %i.", self.host, server_info[0][1], self.port + ) std_sock = socket.socket(server_info[0][0], socket.SOCK_STREAM) try: - self.control_socket = ssl.wrap_socket(std_sock, certfile=self.certfile, keyfile=self.keyfile, ssl_version=ssl.PROTOCOL_TLS) + self.control_socket = ssl.wrap_socket( + std_sock, + certfile=self.certfile, + keyfile=self.keyfile, + ssl_version=ssl.PROTOCOL_TLS, + ) except AttributeError: - self.control_socket = ssl.wrap_socket(std_sock, certfile=self.certfile, keyfile=self.keyfile, ssl_version=ssl.PROTOCOL_TLSv1) + self.control_socket = ssl.wrap_socket( + std_sock, + certfile=self.certfile, + keyfile=self.keyfile, + ssl_version=ssl.PROTOCOL_TLSv1, + ) try: self.control_socket.connect((self.host, self.port)) self.control_socket.setblocking(0) # Perform the Mumble authentication version = mumble_pb2.Version() - version.version = (PYMUMBLE_PROTOCOL_VERSION[0] << 16) + (PYMUMBLE_PROTOCOL_VERSION[1] << 8) + PYMUMBLE_PROTOCOL_VERSION[2] + version.version = ( + (PYMUMBLE_PROTOCOL_VERSION[0] << 16) + + (PYMUMBLE_PROTOCOL_VERSION[1] << 8) + + PYMUMBLE_PROTOCOL_VERSION[2] + ) version.release = self.application version.os = PYMUMBLE_OS_STRING version.os_version = PYMUMBLE_OS_VERSION_STRING @@ -180,20 +239,32 @@ def loop(self): last_ping = time.time() # keep track of the last ping time # loop as long as the connection and the parent thread are alive - while self.connected not in (PYMUMBLE_CONN_STATE_NOT_CONNECTED, PYMUMBLE_CONN_STATE_FAILED) and self.parent_thread.is_alive(): - if last_ping + PYMUMBLE_PING_DELAY <= time.time(): # when it is time, send the ping + while ( + self.connected + not in (PYMUMBLE_CONN_STATE_NOT_CONNECTED, PYMUMBLE_CONN_STATE_FAILED) + and self.parent_thread.is_alive() + ): + if ( + last_ping + PYMUMBLE_PING_DELAY <= time.time() + ): # when it is time, send the ping self.ping() last_ping = time.time() if self.connected == PYMUMBLE_CONN_STATE_CONNECTED: while self.commands.is_cmd(): - self.treat_command(self.commands.pop_cmd()) # send the commands coming from the application to the server + self.treat_command( + self.commands.pop_cmd() + ) # send the commands coming from the application to the server self.sound_output.send_audio() # send outgoing audio if available - (rlist, wlist, xlist) = select.select([self.control_socket], [], [self.control_socket], self.loop_rate) # wait for a socket activity + (rlist, wlist, xlist) = select.select( + [self.control_socket], [], [self.control_socket], self.loop_rate + ) # wait for a socket activity - if self.control_socket in rlist: # something to be read on the control socket + if ( + self.control_socket in rlist + ): # something to be read on the control socket self.read_control_messages() elif self.control_socket in xlist: # socket was closed self.control_socket.close() @@ -203,36 +274,44 @@ def ping(self): """Send the keepalive through available channels""" ping = mumble_pb2.Ping() ping.timestamp = int(time.time()) - ping.tcp_ping_avg = self.ping_stats['avg'] - ping.tcp_ping_var = self.ping_stats['var'] - ping.tcp_packets = self.ping_stats['nb'] + ping.tcp_ping_avg = self.ping_stats["avg"] + ping.tcp_ping_var = self.ping_stats["var"] + ping.tcp_packets = self.ping_stats["nb"] self.Log.debug("sending: ping: %s", ping) self.send_message(PYMUMBLE_MSG_TYPES_PING, ping) - self.ping_stats['time_send'] = int(time.time() * 1000) - self.Log.debug(self.ping_stats['last_rcv']) - if self.ping_stats['last_rcv'] != 0 and int(time.time() * 1000) > self.ping_stats['last_rcv'] + (60 * 1000): + self.ping_stats["time_send"] = int(time.time() * 1000) + self.Log.debug(self.ping_stats["last_rcv"]) + if self.ping_stats["last_rcv"] != 0 and int( + time.time() * 1000 + ) > self.ping_stats["last_rcv"] + (60 * 1000): self.Log.debug("Ping too long ! Disconnected ?") self.connected = PYMUMBLE_CONN_STATE_NOT_CONNECTED def ping_response(self, mess): - self.ping_stats['last_rcv'] = int(time.time() * 1000) - ping = int(time.time() * 1000) - self.ping_stats['time_send'] - old_avg = self.ping_stats['avg'] - nb = self.ping_stats['nb'] - new_avg = ((self.ping_stats['avg'] * nb) + ping) / (nb + 1) + self.ping_stats["last_rcv"] = int(time.time() * 1000) + ping = int(time.time() * 1000) - self.ping_stats["time_send"] + old_avg = self.ping_stats["avg"] + nb = self.ping_stats["nb"] + new_avg = ((self.ping_stats["avg"] * nb) + ping) / (nb + 1) try: - self.ping_stats['var'] = self.ping_stats['var'] + pow(old_avg - new_avg, 2) + (1 / nb) * pow(ping - new_avg, 2) + self.ping_stats["var"] = ( + self.ping_stats["var"] + + pow(old_avg - new_avg, 2) + + (1 / nb) * pow(ping - new_avg, 2) + ) except ZeroDivisionError: pass - self.ping_stats['avg'] = new_avg - self.ping_stats['nb'] += 1 + self.ping_stats["avg"] = new_avg + self.ping_stats["nb"] += 1 def send_message(self, type, message): """Send a control message to the server""" - packet = struct.pack("!HL", type, message.ByteSize()) + message.SerializeToString() + packet = ( + struct.pack("!HL", type, message.ByteSize()) + message.SerializeToString() + ) while len(packet) > 0: self.Log.debug("sending message") @@ -265,15 +344,19 @@ def read_control_messages(self): # self.Log.debug("message received : " + tohex(self.receive_buffer[0:size+6])) # for debugging - message = self.receive_buffer[6:size + 6] # get the control message - self.receive_buffer = self.receive_buffer[size + 6:] # remove from the buffer the read part + message = self.receive_buffer[6 : size + 6] # get the control message + self.receive_buffer = self.receive_buffer[ + size + 6 : + ] # remove from the buffer the read part self.dispatch_control_message(type, message) def dispatch_control_message(self, type, message): """Dispatch control messages based on their type""" self.Log.debug("dispatch control message") - if type == PYMUMBLE_MSG_TYPES_UDPTUNNEL: # audio encapsulated in control message + if ( + type == PYMUMBLE_MSG_TYPES_UDPTUNNEL + ): # audio encapsulated in control message self.sound_received(message) elif type == PYMUMBLE_MSG_TYPES_VERSION: @@ -300,7 +383,9 @@ def dispatch_control_message(self, type, message): self.ready_lock.release() raise ConnectionRejectedError(mess.reason) - elif type == PYMUMBLE_MSG_TYPES_SERVERSYNC: # this message finish the connection process + elif ( + type == PYMUMBLE_MSG_TYPES_SERVERSYNC + ): # this message finish the connection process mess = mumble_pb2.ServerSync() mess.ParseFromString(message) self.Log.debug("message: serversync : %s", mess) @@ -422,25 +507,30 @@ def dispatch_control_message(self, type, message): mess = mumble_pb2.ServerConfig() mess.ParseFromString(message) self.Log.debug("message: ServerConfig : %s", mess) - for line in str(mess).split('\n'): - items = line.split(':') + for line in str(mess).split("\n"): + items = line.split(":") if len(items) != 2: continue - if items[0] == 'allow_html': - self.server_allow_html = items[1].strip() == 'true' - elif items[0] == 'message_length': + if items[0] == "allow_html": + self.server_allow_html = items[1].strip() == "true" + elif items[0] == "message_length": self.server_max_message_length = int(items[1].strip()) - elif items[0] == 'image_message_length': + elif items[0] == "image_message_length": self.server_max_image_message_length = int(items[1].strip()) def set_bandwidth(self, bandwidth): """Set the total allowed outgoing bandwidth""" - if self.server_max_bandwidth is not None and bandwidth > self.server_max_bandwidth: + if ( + self.server_max_bandwidth is not None + and bandwidth > self.server_max_bandwidth + ): self.bandwidth = self.server_max_bandwidth else: self.bandwidth = bandwidth - self.sound_output.set_bandwidth(self.bandwidth) # communicate the update to the outgoing audio manager + self.sound_output.set_bandwidth( + self.bandwidth + ) # communicate the update to the outgoing audio manager def sound_received(self, message): """Manage a received sound message""" @@ -458,46 +548,76 @@ def sound_received(self, message): return session = tools.VarInt() # decode session id - pos += session.decode(message[pos:pos + 10]) + pos += session.decode(message[pos : pos + 10]) sequence = tools.VarInt() # decode sequence number - pos += sequence.decode(message[pos:pos + 10]) + pos += sequence.decode(message[pos : pos + 10]) - self.Log.debug("audio packet received from %i, sequence %i, type:%i, target:%i, length:%i", session.value, sequence.value, type, target, len(message)) + self.Log.debug( + "audio packet received from %i, sequence %i, type:%i, target:%i, length:%i", + session.value, + sequence.value, + type, + target, + len(message), + ) terminator = False # set to true if it's the last 10 ms audio frame for the packet (used with CELT codec) - while (pos < len(message)) and not terminator: # get the audio frames one by one + while ( + pos < len(message) + ) and not terminator: # get the audio frames one by one if type == PYMUMBLE_AUDIO_TYPE_OPUS: size = tools.VarInt() # OPUS use varint for the frame length - pos += size.decode(message[pos:pos + 10]) + pos += size.decode(message[pos : pos + 10]) size = size.value if not (size & 0x2000): # terminator is 0x2000 in the resulting int. terminator = True # should actually always be 0 as OPUS can use variable length audio frames - size &= 0x1fff # isolate the size from the terminator + size &= 0x1FFF # isolate the size from the terminator else: - (header,) = struct.unpack("!B", message[pos]) # CELT length and terminator is encoded in a 1 byte int + (header,) = struct.unpack( + "!B", message[pos] + ) # CELT length and terminator is encoded in a 1 byte int if not (header & 0b10000000): terminator = True size = header & 0b01111111 pos += 1 - self.Log.debug("Audio frame : time:%f, last:%s, size:%i, type:%i, target:%i, pos:%i", time.time(), str(terminator), size, type, target, pos - 1) + self.Log.debug( + "Audio frame : time:%f, last:%s, size:%i, type:%i, target:%i, pos:%i", + time.time(), + str(terminator), + size, + type, + target, + pos - 1, + ) if size > 0 and self.receive_sound: # if audio must be treated try: - newsound = self.users[session.value].sound.add(message[pos:pos + size], - sequence.value, - type, - target) # add the sound to the user's sound queue - - self.callbacks(PYMUMBLE_CLBK_SOUNDRECEIVED, self.users[session.value], newsound) - - sequence.value += int(round(newsound.duration / 1000 * 10)) # add 1 sequence per 10ms of audio - - self.Log.debug("Audio frame : time:%f last:%s, size:%i, uncompressed:%i, type:%i, target:%i", time.time(), str(terminator), size, newsound.size, type, target) + newsound = self.users[session.value].sound.add( + message[pos : pos + size], sequence.value, type, target + ) # add the sound to the user's sound queue + + self.callbacks( + PYMUMBLE_CLBK_SOUNDRECEIVED, self.users[session.value], newsound + ) + + sequence.value += int( + round(newsound.duration / 1000 * 10) + ) # add 1 sequence per 10ms of audio + + self.Log.debug( + "Audio frame : time:%f last:%s, size:%i, uncompressed:%i, type:%i, target:%i", + time.time(), + str(terminator), + size, + newsound.size, + type, + target, + ) except CodecNotSupportedError as msg: print(msg) except KeyError: # sound received after user removed diff --git a/pymumble_py3/mumble_pb2.py b/pymumble_py3/mumble_pb2.py index a03da4c..00931da 100644 --- a/pymumble_py3/mumble_pb2.py +++ b/pymumble_py3/mumble_pb2.py @@ -2,2399 +2,4067 @@ # source: Mumble.proto import sys -_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database -from google.protobuf import descriptor_pb2 -# @@protoc_insertion_point(imports) -_sym_db = _symbol_database.Default() +from google.protobuf import ( + descriptor as _descriptor, + descriptor_pb2, + message as _message, + reflection as _reflection, + symbol_database as _symbol_database, +) +_b = sys.version_info[0] < 3 and (lambda x: x) or (lambda x: x.encode("latin1")) +# @@protoc_insertion_point(imports) +_sym_db = _symbol_database.Default() DESCRIPTOR = _descriptor.FileDescriptor( - name='Mumble.proto', - package='MumbleProto', - syntax='proto2', - serialized_pb=_b('\n\x0cMumble.proto\x12\x0bMumbleProto\"K\n\x07Version\x12\x0f\n\x07version\x18\x01 \x01(\r\x12\x0f\n\x07release\x18\x02 \x01(\t\x12\n\n\x02os\x18\x03 \x01(\t\x12\x12\n\nos_version\x18\x04 \x01(\t\"\x1b\n\tUDPTunnel\x12\x0e\n\x06packet\x18\x01 \x02(\x0c\"n\n\x0c\x41uthenticate\x12\x10\n\x08username\x18\x01 \x01(\t\x12\x10\n\x08password\x18\x02 \x01(\t\x12\x0e\n\x06tokens\x18\x03 \x03(\t\x12\x15\n\rcelt_versions\x18\x04 \x03(\x05\x12\x13\n\x04opus\x18\x05 \x01(\x08:\x05\x66\x61lse\"\xd5\x01\n\x04Ping\x12\x11\n\ttimestamp\x18\x01 \x01(\x04\x12\x0c\n\x04good\x18\x02 \x01(\r\x12\x0c\n\x04late\x18\x03 \x01(\r\x12\x0c\n\x04lost\x18\x04 \x01(\r\x12\x0e\n\x06resync\x18\x05 \x01(\r\x12\x13\n\x0budp_packets\x18\x06 \x01(\r\x12\x13\n\x0btcp_packets\x18\x07 \x01(\r\x12\x14\n\x0cudp_ping_avg\x18\x08 \x01(\x02\x12\x14\n\x0cudp_ping_var\x18\t \x01(\x02\x12\x14\n\x0ctcp_ping_avg\x18\n \x01(\x02\x12\x14\n\x0ctcp_ping_var\x18\x0b \x01(\x02\"\xf7\x01\n\x06Reject\x12,\n\x04type\x18\x01 \x01(\x0e\x32\x1e.MumbleProto.Reject.RejectType\x12\x0e\n\x06reason\x18\x02 \x01(\t\"\xae\x01\n\nRejectType\x12\x08\n\x04None\x10\x00\x12\x10\n\x0cWrongVersion\x10\x01\x12\x13\n\x0fInvalidUsername\x10\x02\x12\x0f\n\x0bWrongUserPW\x10\x03\x12\x11\n\rWrongServerPW\x10\x04\x12\x11\n\rUsernameInUse\x10\x05\x12\x0e\n\nServerFull\x10\x06\x12\x11\n\rNoCertificate\x10\x07\x12\x15\n\x11\x41uthenticatorFail\x10\x08\"_\n\nServerSync\x12\x0f\n\x07session\x18\x01 \x01(\r\x12\x15\n\rmax_bandwidth\x18\x02 \x01(\r\x12\x14\n\x0cwelcome_text\x18\x03 \x01(\t\x12\x13\n\x0bpermissions\x18\x04 \x01(\x04\"#\n\rChannelRemove\x12\x12\n\nchannel_id\x18\x01 \x02(\r\"\xe9\x01\n\x0c\x43hannelState\x12\x12\n\nchannel_id\x18\x01 \x01(\r\x12\x0e\n\x06parent\x18\x02 \x01(\r\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\r\n\x05links\x18\x04 \x03(\r\x12\x13\n\x0b\x64\x65scription\x18\x05 \x01(\t\x12\x11\n\tlinks_add\x18\x06 \x03(\r\x12\x14\n\x0clinks_remove\x18\x07 \x03(\r\x12\x18\n\ttemporary\x18\x08 \x01(\x08:\x05\x66\x61lse\x12\x13\n\x08position\x18\t \x01(\x05:\x01\x30\x12\x18\n\x10\x64\x65scription_hash\x18\n \x01(\x0c\x12\x11\n\tmax_users\x18\x0b \x01(\r\"I\n\nUserRemove\x12\x0f\n\x07session\x18\x01 \x02(\r\x12\r\n\x05\x61\x63tor\x18\x02 \x01(\r\x12\x0e\n\x06reason\x18\x03 \x01(\t\x12\x0b\n\x03\x62\x61n\x18\x04 \x01(\x08\"\xec\x02\n\tUserState\x12\x0f\n\x07session\x18\x01 \x01(\r\x12\r\n\x05\x61\x63tor\x18\x02 \x01(\r\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x0f\n\x07user_id\x18\x04 \x01(\r\x12\x12\n\nchannel_id\x18\x05 \x01(\r\x12\x0c\n\x04mute\x18\x06 \x01(\x08\x12\x0c\n\x04\x64\x65\x61\x66\x18\x07 \x01(\x08\x12\x10\n\x08suppress\x18\x08 \x01(\x08\x12\x11\n\tself_mute\x18\t \x01(\x08\x12\x11\n\tself_deaf\x18\n \x01(\x08\x12\x0f\n\x07texture\x18\x0b \x01(\x0c\x12\x16\n\x0eplugin_context\x18\x0c \x01(\x0c\x12\x17\n\x0fplugin_identity\x18\r \x01(\t\x12\x0f\n\x07\x63omment\x18\x0e \x01(\t\x12\x0c\n\x04hash\x18\x0f \x01(\t\x12\x14\n\x0c\x63omment_hash\x18\x10 \x01(\x0c\x12\x14\n\x0ctexture_hash\x18\x11 \x01(\x0c\x12\x18\n\x10priority_speaker\x18\x12 \x01(\x08\x12\x11\n\trecording\x18\x13 \x01(\x08\"\xc4\x01\n\x07\x42\x61nList\x12+\n\x04\x62\x61ns\x18\x01 \x03(\x0b\x32\x1d.MumbleProto.BanList.BanEntry\x12\x14\n\x05query\x18\x02 \x01(\x08:\x05\x66\x61lse\x1av\n\x08\x42\x61nEntry\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x02(\x0c\x12\x0c\n\x04mask\x18\x02 \x02(\r\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x0c\n\x04hash\x18\x04 \x01(\t\x12\x0e\n\x06reason\x18\x05 \x01(\t\x12\r\n\x05start\x18\x06 \x01(\t\x12\x10\n\x08\x64uration\x18\x07 \x01(\r\"c\n\x0bTextMessage\x12\r\n\x05\x61\x63tor\x18\x01 \x01(\r\x12\x0f\n\x07session\x18\x02 \x03(\r\x12\x12\n\nchannel_id\x18\x03 \x03(\r\x12\x0f\n\x07tree_id\x18\x04 \x03(\r\x12\x0f\n\x07message\x18\x05 \x02(\t\"\xdf\x02\n\x10PermissionDenied\x12\x12\n\npermission\x18\x01 \x01(\r\x12\x12\n\nchannel_id\x18\x02 \x01(\r\x12\x0f\n\x07session\x18\x03 \x01(\r\x12\x0e\n\x06reason\x18\x04 \x01(\t\x12\x34\n\x04type\x18\x05 \x01(\x0e\x32&.MumbleProto.PermissionDenied.DenyType\x12\x0c\n\x04name\x18\x06 \x01(\t\"\xbd\x01\n\x08\x44\x65nyType\x12\x08\n\x04Text\x10\x00\x12\x0e\n\nPermission\x10\x01\x12\r\n\tSuperUser\x10\x02\x12\x0f\n\x0b\x43hannelName\x10\x03\x12\x0f\n\x0bTextTooLong\x10\x04\x12\x07\n\x03H9K\x10\x05\x12\x14\n\x10TemporaryChannel\x10\x06\x12\x16\n\x12MissingCertificate\x10\x07\x12\x0c\n\x08UserName\x10\x08\x12\x0f\n\x0b\x43hannelFull\x10\t\x12\x10\n\x0cNestingLimit\x10\n\"\xd4\x03\n\x03\x41\x43L\x12\x12\n\nchannel_id\x18\x01 \x02(\r\x12\x1a\n\x0cinherit_acls\x18\x02 \x01(\x08:\x04true\x12*\n\x06groups\x18\x03 \x03(\x0b\x32\x1a.MumbleProto.ACL.ChanGroup\x12&\n\x04\x61\x63ls\x18\x04 \x03(\x0b\x32\x18.MumbleProto.ACL.ChanACL\x12\x14\n\x05query\x18\x05 \x01(\x08:\x05\x66\x61lse\x1a\x9c\x01\n\tChanGroup\x12\x0c\n\x04name\x18\x01 \x02(\t\x12\x17\n\tinherited\x18\x02 \x01(\x08:\x04true\x12\x15\n\x07inherit\x18\x03 \x01(\x08:\x04true\x12\x19\n\x0binheritable\x18\x04 \x01(\x08:\x04true\x12\x0b\n\x03\x61\x64\x64\x18\x05 \x03(\r\x12\x0e\n\x06remove\x18\x06 \x03(\r\x12\x19\n\x11inherited_members\x18\x07 \x03(\r\x1a\x93\x01\n\x07\x43hanACL\x12\x18\n\napply_here\x18\x01 \x01(\x08:\x04true\x12\x18\n\napply_subs\x18\x02 \x01(\x08:\x04true\x12\x17\n\tinherited\x18\x03 \x01(\x08:\x04true\x12\x0f\n\x07user_id\x18\x04 \x01(\r\x12\r\n\x05group\x18\x05 \x01(\t\x12\r\n\x05grant\x18\x06 \x01(\r\x12\x0c\n\x04\x64\x65ny\x18\x07 \x01(\r\"(\n\nQueryUsers\x12\x0b\n\x03ids\x18\x01 \x03(\r\x12\r\n\x05names\x18\x02 \x03(\t\"E\n\nCryptSetup\x12\x0b\n\x03key\x18\x01 \x01(\x0c\x12\x14\n\x0c\x63lient_nonce\x18\x02 \x01(\x0c\x12\x14\n\x0cserver_nonce\x18\x03 \x01(\x0c\"\xd3\x01\n\x13\x43ontextActionModify\x12\x0e\n\x06\x61\x63tion\x18\x01 \x02(\t\x12\x0c\n\x04text\x18\x02 \x01(\t\x12\x0f\n\x07\x63ontext\x18\x03 \x01(\r\x12=\n\toperation\x18\x04 \x01(\x0e\x32*.MumbleProto.ContextActionModify.Operation\",\n\x07\x43ontext\x12\n\n\x06Server\x10\x01\x12\x0b\n\x07\x43hannel\x10\x02\x12\x08\n\x04User\x10\x04\" \n\tOperation\x12\x07\n\x03\x41\x64\x64\x10\x00\x12\n\n\x06Remove\x10\x01\"D\n\rContextAction\x12\x0f\n\x07session\x18\x01 \x01(\r\x12\x12\n\nchannel_id\x18\x02 \x01(\r\x12\x0e\n\x06\x61\x63tion\x18\x03 \x02(\t\"\x85\x01\n\x08UserList\x12)\n\x05users\x18\x01 \x03(\x0b\x32\x1a.MumbleProto.UserList.User\x1aN\n\x04User\x12\x0f\n\x07user_id\x18\x01 \x02(\r\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x11\n\tlast_seen\x18\x03 \x01(\t\x12\x14\n\x0clast_channel\x18\x04 \x01(\r\"\xb8\x01\n\x0bVoiceTarget\x12\n\n\x02id\x18\x01 \x01(\r\x12\x30\n\x07targets\x18\x02 \x03(\x0b\x32\x1f.MumbleProto.VoiceTarget.Target\x1ak\n\x06Target\x12\x0f\n\x07session\x18\x01 \x03(\r\x12\x12\n\nchannel_id\x18\x02 \x01(\r\x12\r\n\x05group\x18\x03 \x01(\t\x12\x14\n\x05links\x18\x04 \x01(\x08:\x05\x66\x61lse\x12\x17\n\x08\x63hildren\x18\x05 \x01(\x08:\x05\x66\x61lse\"P\n\x0fPermissionQuery\x12\x12\n\nchannel_id\x18\x01 \x01(\r\x12\x13\n\x0bpermissions\x18\x02 \x01(\r\x12\x14\n\x05\x66lush\x18\x03 \x01(\x08:\x05\x66\x61lse\"\\\n\x0c\x43odecVersion\x12\r\n\x05\x61lpha\x18\x01 \x02(\x05\x12\x0c\n\x04\x62\x65ta\x18\x02 \x02(\x05\x12\x1a\n\x0cprefer_alpha\x18\x03 \x02(\x08:\x04true\x12\x13\n\x04opus\x18\x04 \x01(\x08:\x05\x66\x61lse\"\xb8\x04\n\tUserStats\x12\x0f\n\x07session\x18\x01 \x01(\r\x12\x19\n\nstats_only\x18\x02 \x01(\x08:\x05\x66\x61lse\x12\x14\n\x0c\x63\x65rtificates\x18\x03 \x03(\x0c\x12\x31\n\x0b\x66rom_client\x18\x04 \x01(\x0b\x32\x1c.MumbleProto.UserStats.Stats\x12\x31\n\x0b\x66rom_server\x18\x05 \x01(\x0b\x32\x1c.MumbleProto.UserStats.Stats\x12\x13\n\x0budp_packets\x18\x06 \x01(\r\x12\x13\n\x0btcp_packets\x18\x07 \x01(\r\x12\x14\n\x0cudp_ping_avg\x18\x08 \x01(\x02\x12\x14\n\x0cudp_ping_var\x18\t \x01(\x02\x12\x14\n\x0ctcp_ping_avg\x18\n \x01(\x02\x12\x14\n\x0ctcp_ping_var\x18\x0b \x01(\x02\x12%\n\x07version\x18\x0c \x01(\x0b\x32\x14.MumbleProto.Version\x12\x15\n\rcelt_versions\x18\r \x03(\x05\x12\x0f\n\x07\x61\x64\x64ress\x18\x0e \x01(\x0c\x12\x11\n\tbandwidth\x18\x0f \x01(\r\x12\x12\n\nonlinesecs\x18\x10 \x01(\r\x12\x10\n\x08idlesecs\x18\x11 \x01(\r\x12!\n\x12strong_certificate\x18\x12 \x01(\x08:\x05\x66\x61lse\x12\x13\n\x04opus\x18\x13 \x01(\x08:\x05\x66\x61lse\x1a\x41\n\x05Stats\x12\x0c\n\x04good\x18\x01 \x01(\r\x12\x0c\n\x04late\x18\x02 \x01(\r\x12\x0c\n\x04lost\x18\x03 \x01(\r\x12\x0e\n\x06resync\x18\x04 \x01(\r\"\\\n\x0bRequestBlob\x12\x17\n\x0fsession_texture\x18\x01 \x03(\r\x12\x17\n\x0fsession_comment\x18\x02 \x03(\r\x12\x1b\n\x13\x63hannel_description\x18\x03 \x03(\r\"\x98\x01\n\x0cServerConfig\x12\x15\n\rmax_bandwidth\x18\x01 \x01(\r\x12\x14\n\x0cwelcome_text\x18\x02 \x01(\t\x12\x12\n\nallow_html\x18\x03 \x01(\x08\x12\x16\n\x0emessage_length\x18\x04 \x01(\r\x12\x1c\n\x14image_message_length\x18\x05 \x01(\r\x12\x11\n\tmax_users\x18\x06 \x01(\r\"J\n\rSuggestConfig\x12\x0f\n\x07version\x18\x01 \x01(\r\x12\x12\n\npositional\x18\x02 \x01(\x08\x12\x14\n\x0cpush_to_talk\x18\x03 \x01(\x08\x42\x02H\x01') + name="Mumble.proto", + package="MumbleProto", + syntax="proto2", + serialized_pb=_b( + '\n\x0cMumble.proto\x12\x0bMumbleProto"K\n\x07Version\x12\x0f\n\x07version\x18\x01 \x01(\r\x12\x0f\n\x07release\x18\x02 \x01(\t\x12\n\n\x02os\x18\x03 \x01(\t\x12\x12\n\nos_version\x18\x04 \x01(\t"\x1b\n\tUDPTunnel\x12\x0e\n\x06packet\x18\x01 \x02(\x0c"n\n\x0c\x41uthenticate\x12\x10\n\x08username\x18\x01 \x01(\t\x12\x10\n\x08password\x18\x02 \x01(\t\x12\x0e\n\x06tokens\x18\x03 \x03(\t\x12\x15\n\rcelt_versions\x18\x04 \x03(\x05\x12\x13\n\x04opus\x18\x05 \x01(\x08:\x05\x66\x61lse"\xd5\x01\n\x04Ping\x12\x11\n\ttimestamp\x18\x01 \x01(\x04\x12\x0c\n\x04good\x18\x02 \x01(\r\x12\x0c\n\x04late\x18\x03 \x01(\r\x12\x0c\n\x04lost\x18\x04 \x01(\r\x12\x0e\n\x06resync\x18\x05 \x01(\r\x12\x13\n\x0budp_packets\x18\x06 \x01(\r\x12\x13\n\x0btcp_packets\x18\x07 \x01(\r\x12\x14\n\x0cudp_ping_avg\x18\x08 \x01(\x02\x12\x14\n\x0cudp_ping_var\x18\t \x01(\x02\x12\x14\n\x0ctcp_ping_avg\x18\n \x01(\x02\x12\x14\n\x0ctcp_ping_var\x18\x0b \x01(\x02"\xf7\x01\n\x06Reject\x12,\n\x04type\x18\x01 \x01(\x0e\x32\x1e.MumbleProto.Reject.RejectType\x12\x0e\n\x06reason\x18\x02 \x01(\t"\xae\x01\n\nRejectType\x12\x08\n\x04None\x10\x00\x12\x10\n\x0cWrongVersion\x10\x01\x12\x13\n\x0fInvalidUsername\x10\x02\x12\x0f\n\x0bWrongUserPW\x10\x03\x12\x11\n\rWrongServerPW\x10\x04\x12\x11\n\rUsernameInUse\x10\x05\x12\x0e\n\nServerFull\x10\x06\x12\x11\n\rNoCertificate\x10\x07\x12\x15\n\x11\x41uthenticatorFail\x10\x08"_\n\nServerSync\x12\x0f\n\x07session\x18\x01 \x01(\r\x12\x15\n\rmax_bandwidth\x18\x02 \x01(\r\x12\x14\n\x0cwelcome_text\x18\x03 \x01(\t\x12\x13\n\x0bpermissions\x18\x04 \x01(\x04"#\n\rChannelRemove\x12\x12\n\nchannel_id\x18\x01 \x02(\r"\xe9\x01\n\x0c\x43hannelState\x12\x12\n\nchannel_id\x18\x01 \x01(\r\x12\x0e\n\x06parent\x18\x02 \x01(\r\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\r\n\x05links\x18\x04 \x03(\r\x12\x13\n\x0b\x64\x65scription\x18\x05 \x01(\t\x12\x11\n\tlinks_add\x18\x06 \x03(\r\x12\x14\n\x0clinks_remove\x18\x07 \x03(\r\x12\x18\n\ttemporary\x18\x08 \x01(\x08:\x05\x66\x61lse\x12\x13\n\x08position\x18\t \x01(\x05:\x01\x30\x12\x18\n\x10\x64\x65scription_hash\x18\n \x01(\x0c\x12\x11\n\tmax_users\x18\x0b \x01(\r"I\n\nUserRemove\x12\x0f\n\x07session\x18\x01 \x02(\r\x12\r\n\x05\x61\x63tor\x18\x02 \x01(\r\x12\x0e\n\x06reason\x18\x03 \x01(\t\x12\x0b\n\x03\x62\x61n\x18\x04 \x01(\x08"\xec\x02\n\tUserState\x12\x0f\n\x07session\x18\x01 \x01(\r\x12\r\n\x05\x61\x63tor\x18\x02 \x01(\r\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x0f\n\x07user_id\x18\x04 \x01(\r\x12\x12\n\nchannel_id\x18\x05 \x01(\r\x12\x0c\n\x04mute\x18\x06 \x01(\x08\x12\x0c\n\x04\x64\x65\x61\x66\x18\x07 \x01(\x08\x12\x10\n\x08suppress\x18\x08 \x01(\x08\x12\x11\n\tself_mute\x18\t \x01(\x08\x12\x11\n\tself_deaf\x18\n \x01(\x08\x12\x0f\n\x07texture\x18\x0b \x01(\x0c\x12\x16\n\x0eplugin_context\x18\x0c \x01(\x0c\x12\x17\n\x0fplugin_identity\x18\r \x01(\t\x12\x0f\n\x07\x63omment\x18\x0e \x01(\t\x12\x0c\n\x04hash\x18\x0f \x01(\t\x12\x14\n\x0c\x63omment_hash\x18\x10 \x01(\x0c\x12\x14\n\x0ctexture_hash\x18\x11 \x01(\x0c\x12\x18\n\x10priority_speaker\x18\x12 \x01(\x08\x12\x11\n\trecording\x18\x13 \x01(\x08"\xc4\x01\n\x07\x42\x61nList\x12+\n\x04\x62\x61ns\x18\x01 \x03(\x0b\x32\x1d.MumbleProto.BanList.BanEntry\x12\x14\n\x05query\x18\x02 \x01(\x08:\x05\x66\x61lse\x1av\n\x08\x42\x61nEntry\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x02(\x0c\x12\x0c\n\x04mask\x18\x02 \x02(\r\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x0c\n\x04hash\x18\x04 \x01(\t\x12\x0e\n\x06reason\x18\x05 \x01(\t\x12\r\n\x05start\x18\x06 \x01(\t\x12\x10\n\x08\x64uration\x18\x07 \x01(\r"c\n\x0bTextMessage\x12\r\n\x05\x61\x63tor\x18\x01 \x01(\r\x12\x0f\n\x07session\x18\x02 \x03(\r\x12\x12\n\nchannel_id\x18\x03 \x03(\r\x12\x0f\n\x07tree_id\x18\x04 \x03(\r\x12\x0f\n\x07message\x18\x05 \x02(\t"\xdf\x02\n\x10PermissionDenied\x12\x12\n\npermission\x18\x01 \x01(\r\x12\x12\n\nchannel_id\x18\x02 \x01(\r\x12\x0f\n\x07session\x18\x03 \x01(\r\x12\x0e\n\x06reason\x18\x04 \x01(\t\x12\x34\n\x04type\x18\x05 \x01(\x0e\x32&.MumbleProto.PermissionDenied.DenyType\x12\x0c\n\x04name\x18\x06 \x01(\t"\xbd\x01\n\x08\x44\x65nyType\x12\x08\n\x04Text\x10\x00\x12\x0e\n\nPermission\x10\x01\x12\r\n\tSuperUser\x10\x02\x12\x0f\n\x0b\x43hannelName\x10\x03\x12\x0f\n\x0bTextTooLong\x10\x04\x12\x07\n\x03H9K\x10\x05\x12\x14\n\x10TemporaryChannel\x10\x06\x12\x16\n\x12MissingCertificate\x10\x07\x12\x0c\n\x08UserName\x10\x08\x12\x0f\n\x0b\x43hannelFull\x10\t\x12\x10\n\x0cNestingLimit\x10\n"\xd4\x03\n\x03\x41\x43L\x12\x12\n\nchannel_id\x18\x01 \x02(\r\x12\x1a\n\x0cinherit_acls\x18\x02 \x01(\x08:\x04true\x12*\n\x06groups\x18\x03 \x03(\x0b\x32\x1a.MumbleProto.ACL.ChanGroup\x12&\n\x04\x61\x63ls\x18\x04 \x03(\x0b\x32\x18.MumbleProto.ACL.ChanACL\x12\x14\n\x05query\x18\x05 \x01(\x08:\x05\x66\x61lse\x1a\x9c\x01\n\tChanGroup\x12\x0c\n\x04name\x18\x01 \x02(\t\x12\x17\n\tinherited\x18\x02 \x01(\x08:\x04true\x12\x15\n\x07inherit\x18\x03 \x01(\x08:\x04true\x12\x19\n\x0binheritable\x18\x04 \x01(\x08:\x04true\x12\x0b\n\x03\x61\x64\x64\x18\x05 \x03(\r\x12\x0e\n\x06remove\x18\x06 \x03(\r\x12\x19\n\x11inherited_members\x18\x07 \x03(\r\x1a\x93\x01\n\x07\x43hanACL\x12\x18\n\napply_here\x18\x01 \x01(\x08:\x04true\x12\x18\n\napply_subs\x18\x02 \x01(\x08:\x04true\x12\x17\n\tinherited\x18\x03 \x01(\x08:\x04true\x12\x0f\n\x07user_id\x18\x04 \x01(\r\x12\r\n\x05group\x18\x05 \x01(\t\x12\r\n\x05grant\x18\x06 \x01(\r\x12\x0c\n\x04\x64\x65ny\x18\x07 \x01(\r"(\n\nQueryUsers\x12\x0b\n\x03ids\x18\x01 \x03(\r\x12\r\n\x05names\x18\x02 \x03(\t"E\n\nCryptSetup\x12\x0b\n\x03key\x18\x01 \x01(\x0c\x12\x14\n\x0c\x63lient_nonce\x18\x02 \x01(\x0c\x12\x14\n\x0cserver_nonce\x18\x03 \x01(\x0c"\xd3\x01\n\x13\x43ontextActionModify\x12\x0e\n\x06\x61\x63tion\x18\x01 \x02(\t\x12\x0c\n\x04text\x18\x02 \x01(\t\x12\x0f\n\x07\x63ontext\x18\x03 \x01(\r\x12=\n\toperation\x18\x04 \x01(\x0e\x32*.MumbleProto.ContextActionModify.Operation",\n\x07\x43ontext\x12\n\n\x06Server\x10\x01\x12\x0b\n\x07\x43hannel\x10\x02\x12\x08\n\x04User\x10\x04" \n\tOperation\x12\x07\n\x03\x41\x64\x64\x10\x00\x12\n\n\x06Remove\x10\x01"D\n\rContextAction\x12\x0f\n\x07session\x18\x01 \x01(\r\x12\x12\n\nchannel_id\x18\x02 \x01(\r\x12\x0e\n\x06\x61\x63tion\x18\x03 \x02(\t"\x85\x01\n\x08UserList\x12)\n\x05users\x18\x01 \x03(\x0b\x32\x1a.MumbleProto.UserList.User\x1aN\n\x04User\x12\x0f\n\x07user_id\x18\x01 \x02(\r\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x11\n\tlast_seen\x18\x03 \x01(\t\x12\x14\n\x0clast_channel\x18\x04 \x01(\r"\xb8\x01\n\x0bVoiceTarget\x12\n\n\x02id\x18\x01 \x01(\r\x12\x30\n\x07targets\x18\x02 \x03(\x0b\x32\x1f.MumbleProto.VoiceTarget.Target\x1ak\n\x06Target\x12\x0f\n\x07session\x18\x01 \x03(\r\x12\x12\n\nchannel_id\x18\x02 \x01(\r\x12\r\n\x05group\x18\x03 \x01(\t\x12\x14\n\x05links\x18\x04 \x01(\x08:\x05\x66\x61lse\x12\x17\n\x08\x63hildren\x18\x05 \x01(\x08:\x05\x66\x61lse"P\n\x0fPermissionQuery\x12\x12\n\nchannel_id\x18\x01 \x01(\r\x12\x13\n\x0bpermissions\x18\x02 \x01(\r\x12\x14\n\x05\x66lush\x18\x03 \x01(\x08:\x05\x66\x61lse"\\\n\x0c\x43odecVersion\x12\r\n\x05\x61lpha\x18\x01 \x02(\x05\x12\x0c\n\x04\x62\x65ta\x18\x02 \x02(\x05\x12\x1a\n\x0cprefer_alpha\x18\x03 \x02(\x08:\x04true\x12\x13\n\x04opus\x18\x04 \x01(\x08:\x05\x66\x61lse"\xb8\x04\n\tUserStats\x12\x0f\n\x07session\x18\x01 \x01(\r\x12\x19\n\nstats_only\x18\x02 \x01(\x08:\x05\x66\x61lse\x12\x14\n\x0c\x63\x65rtificates\x18\x03 \x03(\x0c\x12\x31\n\x0b\x66rom_client\x18\x04 \x01(\x0b\x32\x1c.MumbleProto.UserStats.Stats\x12\x31\n\x0b\x66rom_server\x18\x05 \x01(\x0b\x32\x1c.MumbleProto.UserStats.Stats\x12\x13\n\x0budp_packets\x18\x06 \x01(\r\x12\x13\n\x0btcp_packets\x18\x07 \x01(\r\x12\x14\n\x0cudp_ping_avg\x18\x08 \x01(\x02\x12\x14\n\x0cudp_ping_var\x18\t \x01(\x02\x12\x14\n\x0ctcp_ping_avg\x18\n \x01(\x02\x12\x14\n\x0ctcp_ping_var\x18\x0b \x01(\x02\x12%\n\x07version\x18\x0c \x01(\x0b\x32\x14.MumbleProto.Version\x12\x15\n\rcelt_versions\x18\r \x03(\x05\x12\x0f\n\x07\x61\x64\x64ress\x18\x0e \x01(\x0c\x12\x11\n\tbandwidth\x18\x0f \x01(\r\x12\x12\n\nonlinesecs\x18\x10 \x01(\r\x12\x10\n\x08idlesecs\x18\x11 \x01(\r\x12!\n\x12strong_certificate\x18\x12 \x01(\x08:\x05\x66\x61lse\x12\x13\n\x04opus\x18\x13 \x01(\x08:\x05\x66\x61lse\x1a\x41\n\x05Stats\x12\x0c\n\x04good\x18\x01 \x01(\r\x12\x0c\n\x04late\x18\x02 \x01(\r\x12\x0c\n\x04lost\x18\x03 \x01(\r\x12\x0e\n\x06resync\x18\x04 \x01(\r"\\\n\x0bRequestBlob\x12\x17\n\x0fsession_texture\x18\x01 \x03(\r\x12\x17\n\x0fsession_comment\x18\x02 \x03(\r\x12\x1b\n\x13\x63hannel_description\x18\x03 \x03(\r"\x98\x01\n\x0cServerConfig\x12\x15\n\rmax_bandwidth\x18\x01 \x01(\r\x12\x14\n\x0cwelcome_text\x18\x02 \x01(\t\x12\x12\n\nallow_html\x18\x03 \x01(\x08\x12\x16\n\x0emessage_length\x18\x04 \x01(\r\x12\x1c\n\x14image_message_length\x18\x05 \x01(\r\x12\x11\n\tmax_users\x18\x06 \x01(\r"J\n\rSuggestConfig\x12\x0f\n\x07version\x18\x01 \x01(\r\x12\x12\n\npositional\x18\x02 \x01(\x08\x12\x14\n\x0cpush_to_talk\x18\x03 \x01(\x08\x42\x02H\x01' + ), ) - _REJECT_REJECTTYPE = _descriptor.EnumDescriptor( - name='RejectType', - full_name='MumbleProto.Reject.RejectType', - filename=None, - file=DESCRIPTOR, - values=[ - _descriptor.EnumValueDescriptor( - name='None', index=0, number=0, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='WrongVersion', index=1, number=1, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='InvalidUsername', index=2, number=2, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='WrongUserPW', index=3, number=3, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='WrongServerPW', index=4, number=4, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='UsernameInUse', index=5, number=5, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='ServerFull', index=6, number=6, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='NoCertificate', index=7, number=7, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='AuthenticatorFail', index=8, number=8, - options=None, - type=None), - ], - containing_type=None, - options=None, - serialized_start=537, - serialized_end=711, + name="RejectType", + full_name="MumbleProto.Reject.RejectType", + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name="None", index=0, number=0, options=None, type=None + ), + _descriptor.EnumValueDescriptor( + name="WrongVersion", index=1, number=1, options=None, type=None + ), + _descriptor.EnumValueDescriptor( + name="InvalidUsername", index=2, number=2, options=None, type=None + ), + _descriptor.EnumValueDescriptor( + name="WrongUserPW", index=3, number=3, options=None, type=None + ), + _descriptor.EnumValueDescriptor( + name="WrongServerPW", index=4, number=4, options=None, type=None + ), + _descriptor.EnumValueDescriptor( + name="UsernameInUse", index=5, number=5, options=None, type=None + ), + _descriptor.EnumValueDescriptor( + name="ServerFull", index=6, number=6, options=None, type=None + ), + _descriptor.EnumValueDescriptor( + name="NoCertificate", index=7, number=7, options=None, type=None + ), + _descriptor.EnumValueDescriptor( + name="AuthenticatorFail", index=8, number=8, options=None, type=None + ), + ], + containing_type=None, + options=None, + serialized_start=537, + serialized_end=711, ) _sym_db.RegisterEnumDescriptor(_REJECT_REJECTTYPE) _PERMISSIONDENIED_DENYTYPE = _descriptor.EnumDescriptor( - name='DenyType', - full_name='MumbleProto.PermissionDenied.DenyType', - filename=None, - file=DESCRIPTOR, - values=[ - _descriptor.EnumValueDescriptor( - name='Text', index=0, number=0, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='Permission', index=1, number=1, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='SuperUser', index=2, number=2, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='ChannelName', index=3, number=3, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='TextTooLong', index=4, number=4, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='H9K', index=5, number=5, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='TemporaryChannel', index=6, number=6, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='MissingCertificate', index=7, number=7, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='UserName', index=8, number=8, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='ChannelFull', index=9, number=9, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='NestingLimit', index=10, number=10, - options=None, - type=None), - ], - containing_type=None, - options=None, - serialized_start=1988, - serialized_end=2177, + name="DenyType", + full_name="MumbleProto.PermissionDenied.DenyType", + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name="Text", index=0, number=0, options=None, type=None + ), + _descriptor.EnumValueDescriptor( + name="Permission", index=1, number=1, options=None, type=None + ), + _descriptor.EnumValueDescriptor( + name="SuperUser", index=2, number=2, options=None, type=None + ), + _descriptor.EnumValueDescriptor( + name="ChannelName", index=3, number=3, options=None, type=None + ), + _descriptor.EnumValueDescriptor( + name="TextTooLong", index=4, number=4, options=None, type=None + ), + _descriptor.EnumValueDescriptor( + name="H9K", index=5, number=5, options=None, type=None + ), + _descriptor.EnumValueDescriptor( + name="TemporaryChannel", index=6, number=6, options=None, type=None + ), + _descriptor.EnumValueDescriptor( + name="MissingCertificate", index=7, number=7, options=None, type=None + ), + _descriptor.EnumValueDescriptor( + name="UserName", index=8, number=8, options=None, type=None + ), + _descriptor.EnumValueDescriptor( + name="ChannelFull", index=9, number=9, options=None, type=None + ), + _descriptor.EnumValueDescriptor( + name="NestingLimit", index=10, number=10, options=None, type=None + ), + ], + containing_type=None, + options=None, + serialized_start=1988, + serialized_end=2177, ) _sym_db.RegisterEnumDescriptor(_PERMISSIONDENIED_DENYTYPE) _CONTEXTACTIONMODIFY_CONTEXT = _descriptor.EnumDescriptor( - name='Context', - full_name='MumbleProto.ContextActionModify.Context', - filename=None, - file=DESCRIPTOR, - values=[ - _descriptor.EnumValueDescriptor( - name='Server', index=0, number=1, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='Channel', index=1, number=2, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='User', index=2, number=4, - options=None, - type=None), - ], - containing_type=None, - options=None, - serialized_start=2897, - serialized_end=2941, + name="Context", + full_name="MumbleProto.ContextActionModify.Context", + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name="Server", index=0, number=1, options=None, type=None + ), + _descriptor.EnumValueDescriptor( + name="Channel", index=1, number=2, options=None, type=None + ), + _descriptor.EnumValueDescriptor( + name="User", index=2, number=4, options=None, type=None + ), + ], + containing_type=None, + options=None, + serialized_start=2897, + serialized_end=2941, ) _sym_db.RegisterEnumDescriptor(_CONTEXTACTIONMODIFY_CONTEXT) _CONTEXTACTIONMODIFY_OPERATION = _descriptor.EnumDescriptor( - name='Operation', - full_name='MumbleProto.ContextActionModify.Operation', - filename=None, - file=DESCRIPTOR, - values=[ - _descriptor.EnumValueDescriptor( - name='Add', index=0, number=0, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='Remove', index=1, number=1, - options=None, - type=None), - ], - containing_type=None, - options=None, - serialized_start=2943, - serialized_end=2975, + name="Operation", + full_name="MumbleProto.ContextActionModify.Operation", + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name="Add", index=0, number=0, options=None, type=None + ), + _descriptor.EnumValueDescriptor( + name="Remove", index=1, number=1, options=None, type=None + ), + ], + containing_type=None, + options=None, + serialized_start=2943, + serialized_end=2975, ) _sym_db.RegisterEnumDescriptor(_CONTEXTACTIONMODIFY_OPERATION) _VERSION = _descriptor.Descriptor( - name='Version', - full_name='MumbleProto.Version', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='version', full_name='MumbleProto.Version.version', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='release', full_name='MumbleProto.Version.release', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='os', full_name='MumbleProto.Version.os', index=2, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='os_version', full_name='MumbleProto.Version.os_version', index=3, - number=4, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=29, - serialized_end=104, + name="Version", + full_name="MumbleProto.Version", + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name="version", + full_name="MumbleProto.Version.version", + index=0, + number=1, + type=13, + cpp_type=3, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="release", + full_name="MumbleProto.Version.release", + index=1, + number=2, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=_b("").decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="os", + full_name="MumbleProto.Version.os", + index=2, + number=3, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=_b("").decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="os_version", + full_name="MumbleProto.Version.os_version", + index=3, + number=4, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=_b("").decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + ], + extensions=[], + nested_types=[], + enum_types=[], + options=None, + is_extendable=False, + syntax="proto2", + extension_ranges=[], + oneofs=[], + serialized_start=29, + serialized_end=104, ) _UDPTUNNEL = _descriptor.Descriptor( - name='UDPTunnel', - full_name='MumbleProto.UDPTunnel', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='packet', full_name='MumbleProto.UDPTunnel.packet', index=0, - number=1, type=12, cpp_type=9, label=2, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=106, - serialized_end=133, + name="UDPTunnel", + full_name="MumbleProto.UDPTunnel", + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name="packet", + full_name="MumbleProto.UDPTunnel.packet", + index=0, + number=1, + type=12, + cpp_type=9, + label=2, + has_default_value=False, + default_value=_b(""), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + ], + extensions=[], + nested_types=[], + enum_types=[], + options=None, + is_extendable=False, + syntax="proto2", + extension_ranges=[], + oneofs=[], + serialized_start=106, + serialized_end=133, ) _AUTHENTICATE = _descriptor.Descriptor( - name='Authenticate', - full_name='MumbleProto.Authenticate', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='username', full_name='MumbleProto.Authenticate.username', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='password', full_name='MumbleProto.Authenticate.password', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='tokens', full_name='MumbleProto.Authenticate.tokens', index=2, - number=3, type=9, cpp_type=9, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='celt_versions', full_name='MumbleProto.Authenticate.celt_versions', index=3, - number=4, type=5, cpp_type=1, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='opus', full_name='MumbleProto.Authenticate.opus', index=4, - number=5, type=8, cpp_type=7, label=1, - has_default_value=True, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=135, - serialized_end=245, + name="Authenticate", + full_name="MumbleProto.Authenticate", + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name="username", + full_name="MumbleProto.Authenticate.username", + index=0, + number=1, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=_b("").decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="password", + full_name="MumbleProto.Authenticate.password", + index=1, + number=2, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=_b("").decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="tokens", + full_name="MumbleProto.Authenticate.tokens", + index=2, + number=3, + type=9, + cpp_type=9, + label=3, + has_default_value=False, + default_value=[], + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="celt_versions", + full_name="MumbleProto.Authenticate.celt_versions", + index=3, + number=4, + type=5, + cpp_type=1, + label=3, + has_default_value=False, + default_value=[], + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="opus", + full_name="MumbleProto.Authenticate.opus", + index=4, + number=5, + type=8, + cpp_type=7, + label=1, + has_default_value=True, + default_value=False, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + ], + extensions=[], + nested_types=[], + enum_types=[], + options=None, + is_extendable=False, + syntax="proto2", + extension_ranges=[], + oneofs=[], + serialized_start=135, + serialized_end=245, ) _PING = _descriptor.Descriptor( - name='Ping', - full_name='MumbleProto.Ping', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='timestamp', full_name='MumbleProto.Ping.timestamp', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='good', full_name='MumbleProto.Ping.good', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='late', full_name='MumbleProto.Ping.late', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='lost', full_name='MumbleProto.Ping.lost', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='resync', full_name='MumbleProto.Ping.resync', index=4, - number=5, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='udp_packets', full_name='MumbleProto.Ping.udp_packets', index=5, - number=6, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='tcp_packets', full_name='MumbleProto.Ping.tcp_packets', index=6, - number=7, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='udp_ping_avg', full_name='MumbleProto.Ping.udp_ping_avg', index=7, - number=8, type=2, cpp_type=6, label=1, - has_default_value=False, default_value=float(0), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='udp_ping_var', full_name='MumbleProto.Ping.udp_ping_var', index=8, - number=9, type=2, cpp_type=6, label=1, - has_default_value=False, default_value=float(0), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='tcp_ping_avg', full_name='MumbleProto.Ping.tcp_ping_avg', index=9, - number=10, type=2, cpp_type=6, label=1, - has_default_value=False, default_value=float(0), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='tcp_ping_var', full_name='MumbleProto.Ping.tcp_ping_var', index=10, - number=11, type=2, cpp_type=6, label=1, - has_default_value=False, default_value=float(0), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=248, - serialized_end=461, + name="Ping", + full_name="MumbleProto.Ping", + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name="timestamp", + full_name="MumbleProto.Ping.timestamp", + index=0, + number=1, + type=4, + cpp_type=4, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="good", + full_name="MumbleProto.Ping.good", + index=1, + number=2, + type=13, + cpp_type=3, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="late", + full_name="MumbleProto.Ping.late", + index=2, + number=3, + type=13, + cpp_type=3, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="lost", + full_name="MumbleProto.Ping.lost", + index=3, + number=4, + type=13, + cpp_type=3, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="resync", + full_name="MumbleProto.Ping.resync", + index=4, + number=5, + type=13, + cpp_type=3, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="udp_packets", + full_name="MumbleProto.Ping.udp_packets", + index=5, + number=6, + type=13, + cpp_type=3, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="tcp_packets", + full_name="MumbleProto.Ping.tcp_packets", + index=6, + number=7, + type=13, + cpp_type=3, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="udp_ping_avg", + full_name="MumbleProto.Ping.udp_ping_avg", + index=7, + number=8, + type=2, + cpp_type=6, + label=1, + has_default_value=False, + default_value=float(0), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="udp_ping_var", + full_name="MumbleProto.Ping.udp_ping_var", + index=8, + number=9, + type=2, + cpp_type=6, + label=1, + has_default_value=False, + default_value=float(0), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="tcp_ping_avg", + full_name="MumbleProto.Ping.tcp_ping_avg", + index=9, + number=10, + type=2, + cpp_type=6, + label=1, + has_default_value=False, + default_value=float(0), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="tcp_ping_var", + full_name="MumbleProto.Ping.tcp_ping_var", + index=10, + number=11, + type=2, + cpp_type=6, + label=1, + has_default_value=False, + default_value=float(0), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + ], + extensions=[], + nested_types=[], + enum_types=[], + options=None, + is_extendable=False, + syntax="proto2", + extension_ranges=[], + oneofs=[], + serialized_start=248, + serialized_end=461, ) _REJECT = _descriptor.Descriptor( - name='Reject', - full_name='MumbleProto.Reject', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='type', full_name='MumbleProto.Reject.type', index=0, - number=1, type=14, cpp_type=8, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='reason', full_name='MumbleProto.Reject.reason', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - _REJECT_REJECTTYPE, - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=464, - serialized_end=711, + name="Reject", + full_name="MumbleProto.Reject", + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name="type", + full_name="MumbleProto.Reject.type", + index=0, + number=1, + type=14, + cpp_type=8, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="reason", + full_name="MumbleProto.Reject.reason", + index=1, + number=2, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=_b("").decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + ], + extensions=[], + nested_types=[], + enum_types=[_REJECT_REJECTTYPE,], + options=None, + is_extendable=False, + syntax="proto2", + extension_ranges=[], + oneofs=[], + serialized_start=464, + serialized_end=711, ) _SERVERSYNC = _descriptor.Descriptor( - name='ServerSync', - full_name='MumbleProto.ServerSync', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='session', full_name='MumbleProto.ServerSync.session', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='max_bandwidth', full_name='MumbleProto.ServerSync.max_bandwidth', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='welcome_text', full_name='MumbleProto.ServerSync.welcome_text', index=2, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='permissions', full_name='MumbleProto.ServerSync.permissions', index=3, - number=4, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=713, - serialized_end=808, + name="ServerSync", + full_name="MumbleProto.ServerSync", + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name="session", + full_name="MumbleProto.ServerSync.session", + index=0, + number=1, + type=13, + cpp_type=3, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="max_bandwidth", + full_name="MumbleProto.ServerSync.max_bandwidth", + index=1, + number=2, + type=13, + cpp_type=3, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="welcome_text", + full_name="MumbleProto.ServerSync.welcome_text", + index=2, + number=3, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=_b("").decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="permissions", + full_name="MumbleProto.ServerSync.permissions", + index=3, + number=4, + type=4, + cpp_type=4, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + ], + extensions=[], + nested_types=[], + enum_types=[], + options=None, + is_extendable=False, + syntax="proto2", + extension_ranges=[], + oneofs=[], + serialized_start=713, + serialized_end=808, ) _CHANNELREMOVE = _descriptor.Descriptor( - name='ChannelRemove', - full_name='MumbleProto.ChannelRemove', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='channel_id', full_name='MumbleProto.ChannelRemove.channel_id', index=0, - number=1, type=13, cpp_type=3, label=2, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=810, - serialized_end=845, + name="ChannelRemove", + full_name="MumbleProto.ChannelRemove", + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name="channel_id", + full_name="MumbleProto.ChannelRemove.channel_id", + index=0, + number=1, + type=13, + cpp_type=3, + label=2, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + ], + extensions=[], + nested_types=[], + enum_types=[], + options=None, + is_extendable=False, + syntax="proto2", + extension_ranges=[], + oneofs=[], + serialized_start=810, + serialized_end=845, ) _CHANNELSTATE = _descriptor.Descriptor( - name='ChannelState', - full_name='MumbleProto.ChannelState', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='channel_id', full_name='MumbleProto.ChannelState.channel_id', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='parent', full_name='MumbleProto.ChannelState.parent', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='name', full_name='MumbleProto.ChannelState.name', index=2, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='links', full_name='MumbleProto.ChannelState.links', index=3, - number=4, type=13, cpp_type=3, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='description', full_name='MumbleProto.ChannelState.description', index=4, - number=5, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='links_add', full_name='MumbleProto.ChannelState.links_add', index=5, - number=6, type=13, cpp_type=3, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='links_remove', full_name='MumbleProto.ChannelState.links_remove', index=6, - number=7, type=13, cpp_type=3, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='temporary', full_name='MumbleProto.ChannelState.temporary', index=7, - number=8, type=8, cpp_type=7, label=1, - has_default_value=True, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='position', full_name='MumbleProto.ChannelState.position', index=8, - number=9, type=5, cpp_type=1, label=1, - has_default_value=True, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='description_hash', full_name='MumbleProto.ChannelState.description_hash', index=9, - number=10, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='max_users', full_name='MumbleProto.ChannelState.max_users', index=10, - number=11, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=848, - serialized_end=1081, + name="ChannelState", + full_name="MumbleProto.ChannelState", + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name="channel_id", + full_name="MumbleProto.ChannelState.channel_id", + index=0, + number=1, + type=13, + cpp_type=3, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="parent", + full_name="MumbleProto.ChannelState.parent", + index=1, + number=2, + type=13, + cpp_type=3, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="name", + full_name="MumbleProto.ChannelState.name", + index=2, + number=3, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=_b("").decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="links", + full_name="MumbleProto.ChannelState.links", + index=3, + number=4, + type=13, + cpp_type=3, + label=3, + has_default_value=False, + default_value=[], + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="description", + full_name="MumbleProto.ChannelState.description", + index=4, + number=5, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=_b("").decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="links_add", + full_name="MumbleProto.ChannelState.links_add", + index=5, + number=6, + type=13, + cpp_type=3, + label=3, + has_default_value=False, + default_value=[], + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="links_remove", + full_name="MumbleProto.ChannelState.links_remove", + index=6, + number=7, + type=13, + cpp_type=3, + label=3, + has_default_value=False, + default_value=[], + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="temporary", + full_name="MumbleProto.ChannelState.temporary", + index=7, + number=8, + type=8, + cpp_type=7, + label=1, + has_default_value=True, + default_value=False, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="position", + full_name="MumbleProto.ChannelState.position", + index=8, + number=9, + type=5, + cpp_type=1, + label=1, + has_default_value=True, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="description_hash", + full_name="MumbleProto.ChannelState.description_hash", + index=9, + number=10, + type=12, + cpp_type=9, + label=1, + has_default_value=False, + default_value=_b(""), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="max_users", + full_name="MumbleProto.ChannelState.max_users", + index=10, + number=11, + type=13, + cpp_type=3, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + ], + extensions=[], + nested_types=[], + enum_types=[], + options=None, + is_extendable=False, + syntax="proto2", + extension_ranges=[], + oneofs=[], + serialized_start=848, + serialized_end=1081, ) _USERREMOVE = _descriptor.Descriptor( - name='UserRemove', - full_name='MumbleProto.UserRemove', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='session', full_name='MumbleProto.UserRemove.session', index=0, - number=1, type=13, cpp_type=3, label=2, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='actor', full_name='MumbleProto.UserRemove.actor', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='reason', full_name='MumbleProto.UserRemove.reason', index=2, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='ban', full_name='MumbleProto.UserRemove.ban', index=3, - number=4, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1083, - serialized_end=1156, + name="UserRemove", + full_name="MumbleProto.UserRemove", + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name="session", + full_name="MumbleProto.UserRemove.session", + index=0, + number=1, + type=13, + cpp_type=3, + label=2, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="actor", + full_name="MumbleProto.UserRemove.actor", + index=1, + number=2, + type=13, + cpp_type=3, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="reason", + full_name="MumbleProto.UserRemove.reason", + index=2, + number=3, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=_b("").decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="ban", + full_name="MumbleProto.UserRemove.ban", + index=3, + number=4, + type=8, + cpp_type=7, + label=1, + has_default_value=False, + default_value=False, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + ], + extensions=[], + nested_types=[], + enum_types=[], + options=None, + is_extendable=False, + syntax="proto2", + extension_ranges=[], + oneofs=[], + serialized_start=1083, + serialized_end=1156, ) _USERSTATE = _descriptor.Descriptor( - name='UserState', - full_name='MumbleProto.UserState', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='session', full_name='MumbleProto.UserState.session', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='actor', full_name='MumbleProto.UserState.actor', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='name', full_name='MumbleProto.UserState.name', index=2, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='user_id', full_name='MumbleProto.UserState.user_id', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='channel_id', full_name='MumbleProto.UserState.channel_id', index=4, - number=5, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='mute', full_name='MumbleProto.UserState.mute', index=5, - number=6, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='deaf', full_name='MumbleProto.UserState.deaf', index=6, - number=7, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='suppress', full_name='MumbleProto.UserState.suppress', index=7, - number=8, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='self_mute', full_name='MumbleProto.UserState.self_mute', index=8, - number=9, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='self_deaf', full_name='MumbleProto.UserState.self_deaf', index=9, - number=10, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='texture', full_name='MumbleProto.UserState.texture', index=10, - number=11, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='plugin_context', full_name='MumbleProto.UserState.plugin_context', index=11, - number=12, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='plugin_identity', full_name='MumbleProto.UserState.plugin_identity', index=12, - number=13, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='comment', full_name='MumbleProto.UserState.comment', index=13, - number=14, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='hash', full_name='MumbleProto.UserState.hash', index=14, - number=15, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='comment_hash', full_name='MumbleProto.UserState.comment_hash', index=15, - number=16, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='texture_hash', full_name='MumbleProto.UserState.texture_hash', index=16, - number=17, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='priority_speaker', full_name='MumbleProto.UserState.priority_speaker', index=17, - number=18, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='recording', full_name='MumbleProto.UserState.recording', index=18, - number=19, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1159, - serialized_end=1523, + name="UserState", + full_name="MumbleProto.UserState", + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name="session", + full_name="MumbleProto.UserState.session", + index=0, + number=1, + type=13, + cpp_type=3, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="actor", + full_name="MumbleProto.UserState.actor", + index=1, + number=2, + type=13, + cpp_type=3, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="name", + full_name="MumbleProto.UserState.name", + index=2, + number=3, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=_b("").decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="user_id", + full_name="MumbleProto.UserState.user_id", + index=3, + number=4, + type=13, + cpp_type=3, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="channel_id", + full_name="MumbleProto.UserState.channel_id", + index=4, + number=5, + type=13, + cpp_type=3, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="mute", + full_name="MumbleProto.UserState.mute", + index=5, + number=6, + type=8, + cpp_type=7, + label=1, + has_default_value=False, + default_value=False, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="deaf", + full_name="MumbleProto.UserState.deaf", + index=6, + number=7, + type=8, + cpp_type=7, + label=1, + has_default_value=False, + default_value=False, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="suppress", + full_name="MumbleProto.UserState.suppress", + index=7, + number=8, + type=8, + cpp_type=7, + label=1, + has_default_value=False, + default_value=False, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="self_mute", + full_name="MumbleProto.UserState.self_mute", + index=8, + number=9, + type=8, + cpp_type=7, + label=1, + has_default_value=False, + default_value=False, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="self_deaf", + full_name="MumbleProto.UserState.self_deaf", + index=9, + number=10, + type=8, + cpp_type=7, + label=1, + has_default_value=False, + default_value=False, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="texture", + full_name="MumbleProto.UserState.texture", + index=10, + number=11, + type=12, + cpp_type=9, + label=1, + has_default_value=False, + default_value=_b(""), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="plugin_context", + full_name="MumbleProto.UserState.plugin_context", + index=11, + number=12, + type=12, + cpp_type=9, + label=1, + has_default_value=False, + default_value=_b(""), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="plugin_identity", + full_name="MumbleProto.UserState.plugin_identity", + index=12, + number=13, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=_b("").decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="comment", + full_name="MumbleProto.UserState.comment", + index=13, + number=14, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=_b("").decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="hash", + full_name="MumbleProto.UserState.hash", + index=14, + number=15, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=_b("").decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="comment_hash", + full_name="MumbleProto.UserState.comment_hash", + index=15, + number=16, + type=12, + cpp_type=9, + label=1, + has_default_value=False, + default_value=_b(""), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="texture_hash", + full_name="MumbleProto.UserState.texture_hash", + index=16, + number=17, + type=12, + cpp_type=9, + label=1, + has_default_value=False, + default_value=_b(""), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="priority_speaker", + full_name="MumbleProto.UserState.priority_speaker", + index=17, + number=18, + type=8, + cpp_type=7, + label=1, + has_default_value=False, + default_value=False, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="recording", + full_name="MumbleProto.UserState.recording", + index=18, + number=19, + type=8, + cpp_type=7, + label=1, + has_default_value=False, + default_value=False, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + ], + extensions=[], + nested_types=[], + enum_types=[], + options=None, + is_extendable=False, + syntax="proto2", + extension_ranges=[], + oneofs=[], + serialized_start=1159, + serialized_end=1523, ) _BANLIST_BANENTRY = _descriptor.Descriptor( - name='BanEntry', - full_name='MumbleProto.BanList.BanEntry', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='address', full_name='MumbleProto.BanList.BanEntry.address', index=0, - number=1, type=12, cpp_type=9, label=2, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='mask', full_name='MumbleProto.BanList.BanEntry.mask', index=1, - number=2, type=13, cpp_type=3, label=2, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='name', full_name='MumbleProto.BanList.BanEntry.name', index=2, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='hash', full_name='MumbleProto.BanList.BanEntry.hash', index=3, - number=4, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='reason', full_name='MumbleProto.BanList.BanEntry.reason', index=4, - number=5, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='start', full_name='MumbleProto.BanList.BanEntry.start', index=5, - number=6, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='duration', full_name='MumbleProto.BanList.BanEntry.duration', index=6, - number=7, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1604, - serialized_end=1722, + name="BanEntry", + full_name="MumbleProto.BanList.BanEntry", + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name="address", + full_name="MumbleProto.BanList.BanEntry.address", + index=0, + number=1, + type=12, + cpp_type=9, + label=2, + has_default_value=False, + default_value=_b(""), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="mask", + full_name="MumbleProto.BanList.BanEntry.mask", + index=1, + number=2, + type=13, + cpp_type=3, + label=2, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="name", + full_name="MumbleProto.BanList.BanEntry.name", + index=2, + number=3, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=_b("").decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="hash", + full_name="MumbleProto.BanList.BanEntry.hash", + index=3, + number=4, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=_b("").decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="reason", + full_name="MumbleProto.BanList.BanEntry.reason", + index=4, + number=5, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=_b("").decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="start", + full_name="MumbleProto.BanList.BanEntry.start", + index=5, + number=6, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=_b("").decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="duration", + full_name="MumbleProto.BanList.BanEntry.duration", + index=6, + number=7, + type=13, + cpp_type=3, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + ], + extensions=[], + nested_types=[], + enum_types=[], + options=None, + is_extendable=False, + syntax="proto2", + extension_ranges=[], + oneofs=[], + serialized_start=1604, + serialized_end=1722, ) _BANLIST = _descriptor.Descriptor( - name='BanList', - full_name='MumbleProto.BanList', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='bans', full_name='MumbleProto.BanList.bans', index=0, - number=1, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='query', full_name='MumbleProto.BanList.query', index=1, - number=2, type=8, cpp_type=7, label=1, - has_default_value=True, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[_BANLIST_BANENTRY, ], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1526, - serialized_end=1722, + name="BanList", + full_name="MumbleProto.BanList", + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name="bans", + full_name="MumbleProto.BanList.bans", + index=0, + number=1, + type=11, + cpp_type=10, + label=3, + has_default_value=False, + default_value=[], + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="query", + full_name="MumbleProto.BanList.query", + index=1, + number=2, + type=8, + cpp_type=7, + label=1, + has_default_value=True, + default_value=False, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + ], + extensions=[], + nested_types=[_BANLIST_BANENTRY,], + enum_types=[], + options=None, + is_extendable=False, + syntax="proto2", + extension_ranges=[], + oneofs=[], + serialized_start=1526, + serialized_end=1722, ) _TEXTMESSAGE = _descriptor.Descriptor( - name='TextMessage', - full_name='MumbleProto.TextMessage', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='actor', full_name='MumbleProto.TextMessage.actor', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='session', full_name='MumbleProto.TextMessage.session', index=1, - number=2, type=13, cpp_type=3, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='channel_id', full_name='MumbleProto.TextMessage.channel_id', index=2, - number=3, type=13, cpp_type=3, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='tree_id', full_name='MumbleProto.TextMessage.tree_id', index=3, - number=4, type=13, cpp_type=3, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='message', full_name='MumbleProto.TextMessage.message', index=4, - number=5, type=9, cpp_type=9, label=2, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1724, - serialized_end=1823, + name="TextMessage", + full_name="MumbleProto.TextMessage", + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name="actor", + full_name="MumbleProto.TextMessage.actor", + index=0, + number=1, + type=13, + cpp_type=3, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="session", + full_name="MumbleProto.TextMessage.session", + index=1, + number=2, + type=13, + cpp_type=3, + label=3, + has_default_value=False, + default_value=[], + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="channel_id", + full_name="MumbleProto.TextMessage.channel_id", + index=2, + number=3, + type=13, + cpp_type=3, + label=3, + has_default_value=False, + default_value=[], + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="tree_id", + full_name="MumbleProto.TextMessage.tree_id", + index=3, + number=4, + type=13, + cpp_type=3, + label=3, + has_default_value=False, + default_value=[], + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="message", + full_name="MumbleProto.TextMessage.message", + index=4, + number=5, + type=9, + cpp_type=9, + label=2, + has_default_value=False, + default_value=_b("").decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + ], + extensions=[], + nested_types=[], + enum_types=[], + options=None, + is_extendable=False, + syntax="proto2", + extension_ranges=[], + oneofs=[], + serialized_start=1724, + serialized_end=1823, ) _PERMISSIONDENIED = _descriptor.Descriptor( - name='PermissionDenied', - full_name='MumbleProto.PermissionDenied', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='permission', full_name='MumbleProto.PermissionDenied.permission', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='channel_id', full_name='MumbleProto.PermissionDenied.channel_id', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='session', full_name='MumbleProto.PermissionDenied.session', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='reason', full_name='MumbleProto.PermissionDenied.reason', index=3, - number=4, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='type', full_name='MumbleProto.PermissionDenied.type', index=4, - number=5, type=14, cpp_type=8, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='name', full_name='MumbleProto.PermissionDenied.name', index=5, - number=6, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - _PERMISSIONDENIED_DENYTYPE, - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1826, - serialized_end=2177, + name="PermissionDenied", + full_name="MumbleProto.PermissionDenied", + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name="permission", + full_name="MumbleProto.PermissionDenied.permission", + index=0, + number=1, + type=13, + cpp_type=3, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="channel_id", + full_name="MumbleProto.PermissionDenied.channel_id", + index=1, + number=2, + type=13, + cpp_type=3, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="session", + full_name="MumbleProto.PermissionDenied.session", + index=2, + number=3, + type=13, + cpp_type=3, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="reason", + full_name="MumbleProto.PermissionDenied.reason", + index=3, + number=4, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=_b("").decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="type", + full_name="MumbleProto.PermissionDenied.type", + index=4, + number=5, + type=14, + cpp_type=8, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="name", + full_name="MumbleProto.PermissionDenied.name", + index=5, + number=6, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=_b("").decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + ], + extensions=[], + nested_types=[], + enum_types=[_PERMISSIONDENIED_DENYTYPE,], + options=None, + is_extendable=False, + syntax="proto2", + extension_ranges=[], + oneofs=[], + serialized_start=1826, + serialized_end=2177, ) _ACL_CHANGROUP = _descriptor.Descriptor( - name='ChanGroup', - full_name='MumbleProto.ACL.ChanGroup', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='name', full_name='MumbleProto.ACL.ChanGroup.name', index=0, - number=1, type=9, cpp_type=9, label=2, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='inherited', full_name='MumbleProto.ACL.ChanGroup.inherited', index=1, - number=2, type=8, cpp_type=7, label=1, - has_default_value=True, default_value=True, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='inherit', full_name='MumbleProto.ACL.ChanGroup.inherit', index=2, - number=3, type=8, cpp_type=7, label=1, - has_default_value=True, default_value=True, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='inheritable', full_name='MumbleProto.ACL.ChanGroup.inheritable', index=3, - number=4, type=8, cpp_type=7, label=1, - has_default_value=True, default_value=True, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='add', full_name='MumbleProto.ACL.ChanGroup.add', index=4, - number=5, type=13, cpp_type=3, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='remove', full_name='MumbleProto.ACL.ChanGroup.remove', index=5, - number=6, type=13, cpp_type=3, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='inherited_members', full_name='MumbleProto.ACL.ChanGroup.inherited_members', index=6, - number=7, type=13, cpp_type=3, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2342, - serialized_end=2498, + name="ChanGroup", + full_name="MumbleProto.ACL.ChanGroup", + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name="name", + full_name="MumbleProto.ACL.ChanGroup.name", + index=0, + number=1, + type=9, + cpp_type=9, + label=2, + has_default_value=False, + default_value=_b("").decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="inherited", + full_name="MumbleProto.ACL.ChanGroup.inherited", + index=1, + number=2, + type=8, + cpp_type=7, + label=1, + has_default_value=True, + default_value=True, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="inherit", + full_name="MumbleProto.ACL.ChanGroup.inherit", + index=2, + number=3, + type=8, + cpp_type=7, + label=1, + has_default_value=True, + default_value=True, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="inheritable", + full_name="MumbleProto.ACL.ChanGroup.inheritable", + index=3, + number=4, + type=8, + cpp_type=7, + label=1, + has_default_value=True, + default_value=True, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="add", + full_name="MumbleProto.ACL.ChanGroup.add", + index=4, + number=5, + type=13, + cpp_type=3, + label=3, + has_default_value=False, + default_value=[], + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="remove", + full_name="MumbleProto.ACL.ChanGroup.remove", + index=5, + number=6, + type=13, + cpp_type=3, + label=3, + has_default_value=False, + default_value=[], + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="inherited_members", + full_name="MumbleProto.ACL.ChanGroup.inherited_members", + index=6, + number=7, + type=13, + cpp_type=3, + label=3, + has_default_value=False, + default_value=[], + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + ], + extensions=[], + nested_types=[], + enum_types=[], + options=None, + is_extendable=False, + syntax="proto2", + extension_ranges=[], + oneofs=[], + serialized_start=2342, + serialized_end=2498, ) _ACL_CHANACL = _descriptor.Descriptor( - name='ChanACL', - full_name='MumbleProto.ACL.ChanACL', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='apply_here', full_name='MumbleProto.ACL.ChanACL.apply_here', index=0, - number=1, type=8, cpp_type=7, label=1, - has_default_value=True, default_value=True, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='apply_subs', full_name='MumbleProto.ACL.ChanACL.apply_subs', index=1, - number=2, type=8, cpp_type=7, label=1, - has_default_value=True, default_value=True, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='inherited', full_name='MumbleProto.ACL.ChanACL.inherited', index=2, - number=3, type=8, cpp_type=7, label=1, - has_default_value=True, default_value=True, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='user_id', full_name='MumbleProto.ACL.ChanACL.user_id', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='group', full_name='MumbleProto.ACL.ChanACL.group', index=4, - number=5, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='grant', full_name='MumbleProto.ACL.ChanACL.grant', index=5, - number=6, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='deny', full_name='MumbleProto.ACL.ChanACL.deny', index=6, - number=7, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2501, - serialized_end=2648, + name="ChanACL", + full_name="MumbleProto.ACL.ChanACL", + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name="apply_here", + full_name="MumbleProto.ACL.ChanACL.apply_here", + index=0, + number=1, + type=8, + cpp_type=7, + label=1, + has_default_value=True, + default_value=True, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="apply_subs", + full_name="MumbleProto.ACL.ChanACL.apply_subs", + index=1, + number=2, + type=8, + cpp_type=7, + label=1, + has_default_value=True, + default_value=True, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="inherited", + full_name="MumbleProto.ACL.ChanACL.inherited", + index=2, + number=3, + type=8, + cpp_type=7, + label=1, + has_default_value=True, + default_value=True, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="user_id", + full_name="MumbleProto.ACL.ChanACL.user_id", + index=3, + number=4, + type=13, + cpp_type=3, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="group", + full_name="MumbleProto.ACL.ChanACL.group", + index=4, + number=5, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=_b("").decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="grant", + full_name="MumbleProto.ACL.ChanACL.grant", + index=5, + number=6, + type=13, + cpp_type=3, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="deny", + full_name="MumbleProto.ACL.ChanACL.deny", + index=6, + number=7, + type=13, + cpp_type=3, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + ], + extensions=[], + nested_types=[], + enum_types=[], + options=None, + is_extendable=False, + syntax="proto2", + extension_ranges=[], + oneofs=[], + serialized_start=2501, + serialized_end=2648, ) _ACL = _descriptor.Descriptor( - name='ACL', - full_name='MumbleProto.ACL', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='channel_id', full_name='MumbleProto.ACL.channel_id', index=0, - number=1, type=13, cpp_type=3, label=2, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='inherit_acls', full_name='MumbleProto.ACL.inherit_acls', index=1, - number=2, type=8, cpp_type=7, label=1, - has_default_value=True, default_value=True, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='groups', full_name='MumbleProto.ACL.groups', index=2, - number=3, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='acls', full_name='MumbleProto.ACL.acls', index=3, - number=4, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='query', full_name='MumbleProto.ACL.query', index=4, - number=5, type=8, cpp_type=7, label=1, - has_default_value=True, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[_ACL_CHANGROUP, _ACL_CHANACL, ], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2180, - serialized_end=2648, + name="ACL", + full_name="MumbleProto.ACL", + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name="channel_id", + full_name="MumbleProto.ACL.channel_id", + index=0, + number=1, + type=13, + cpp_type=3, + label=2, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="inherit_acls", + full_name="MumbleProto.ACL.inherit_acls", + index=1, + number=2, + type=8, + cpp_type=7, + label=1, + has_default_value=True, + default_value=True, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="groups", + full_name="MumbleProto.ACL.groups", + index=2, + number=3, + type=11, + cpp_type=10, + label=3, + has_default_value=False, + default_value=[], + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="acls", + full_name="MumbleProto.ACL.acls", + index=3, + number=4, + type=11, + cpp_type=10, + label=3, + has_default_value=False, + default_value=[], + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="query", + full_name="MumbleProto.ACL.query", + index=4, + number=5, + type=8, + cpp_type=7, + label=1, + has_default_value=True, + default_value=False, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + ], + extensions=[], + nested_types=[_ACL_CHANGROUP, _ACL_CHANACL,], + enum_types=[], + options=None, + is_extendable=False, + syntax="proto2", + extension_ranges=[], + oneofs=[], + serialized_start=2180, + serialized_end=2648, ) _QUERYUSERS = _descriptor.Descriptor( - name='QueryUsers', - full_name='MumbleProto.QueryUsers', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='ids', full_name='MumbleProto.QueryUsers.ids', index=0, - number=1, type=13, cpp_type=3, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='names', full_name='MumbleProto.QueryUsers.names', index=1, - number=2, type=9, cpp_type=9, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2650, - serialized_end=2690, + name="QueryUsers", + full_name="MumbleProto.QueryUsers", + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name="ids", + full_name="MumbleProto.QueryUsers.ids", + index=0, + number=1, + type=13, + cpp_type=3, + label=3, + has_default_value=False, + default_value=[], + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="names", + full_name="MumbleProto.QueryUsers.names", + index=1, + number=2, + type=9, + cpp_type=9, + label=3, + has_default_value=False, + default_value=[], + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + ], + extensions=[], + nested_types=[], + enum_types=[], + options=None, + is_extendable=False, + syntax="proto2", + extension_ranges=[], + oneofs=[], + serialized_start=2650, + serialized_end=2690, ) _CRYPTSETUP = _descriptor.Descriptor( - name='CryptSetup', - full_name='MumbleProto.CryptSetup', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='key', full_name='MumbleProto.CryptSetup.key', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='client_nonce', full_name='MumbleProto.CryptSetup.client_nonce', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='server_nonce', full_name='MumbleProto.CryptSetup.server_nonce', index=2, - number=3, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2692, - serialized_end=2761, + name="CryptSetup", + full_name="MumbleProto.CryptSetup", + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name="key", + full_name="MumbleProto.CryptSetup.key", + index=0, + number=1, + type=12, + cpp_type=9, + label=1, + has_default_value=False, + default_value=_b(""), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="client_nonce", + full_name="MumbleProto.CryptSetup.client_nonce", + index=1, + number=2, + type=12, + cpp_type=9, + label=1, + has_default_value=False, + default_value=_b(""), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="server_nonce", + full_name="MumbleProto.CryptSetup.server_nonce", + index=2, + number=3, + type=12, + cpp_type=9, + label=1, + has_default_value=False, + default_value=_b(""), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + ], + extensions=[], + nested_types=[], + enum_types=[], + options=None, + is_extendable=False, + syntax="proto2", + extension_ranges=[], + oneofs=[], + serialized_start=2692, + serialized_end=2761, ) _CONTEXTACTIONMODIFY = _descriptor.Descriptor( - name='ContextActionModify', - full_name='MumbleProto.ContextActionModify', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='action', full_name='MumbleProto.ContextActionModify.action', index=0, - number=1, type=9, cpp_type=9, label=2, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='text', full_name='MumbleProto.ContextActionModify.text', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='context', full_name='MumbleProto.ContextActionModify.context', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='operation', full_name='MumbleProto.ContextActionModify.operation', index=3, - number=4, type=14, cpp_type=8, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - _CONTEXTACTIONMODIFY_CONTEXT, - _CONTEXTACTIONMODIFY_OPERATION, - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2764, - serialized_end=2975, + name="ContextActionModify", + full_name="MumbleProto.ContextActionModify", + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name="action", + full_name="MumbleProto.ContextActionModify.action", + index=0, + number=1, + type=9, + cpp_type=9, + label=2, + has_default_value=False, + default_value=_b("").decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="text", + full_name="MumbleProto.ContextActionModify.text", + index=1, + number=2, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=_b("").decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="context", + full_name="MumbleProto.ContextActionModify.context", + index=2, + number=3, + type=13, + cpp_type=3, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="operation", + full_name="MumbleProto.ContextActionModify.operation", + index=3, + number=4, + type=14, + cpp_type=8, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + ], + extensions=[], + nested_types=[], + enum_types=[_CONTEXTACTIONMODIFY_CONTEXT, _CONTEXTACTIONMODIFY_OPERATION,], + options=None, + is_extendable=False, + syntax="proto2", + extension_ranges=[], + oneofs=[], + serialized_start=2764, + serialized_end=2975, ) _CONTEXTACTION = _descriptor.Descriptor( - name='ContextAction', - full_name='MumbleProto.ContextAction', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='session', full_name='MumbleProto.ContextAction.session', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='channel_id', full_name='MumbleProto.ContextAction.channel_id', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='action', full_name='MumbleProto.ContextAction.action', index=2, - number=3, type=9, cpp_type=9, label=2, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2977, - serialized_end=3045, + name="ContextAction", + full_name="MumbleProto.ContextAction", + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name="session", + full_name="MumbleProto.ContextAction.session", + index=0, + number=1, + type=13, + cpp_type=3, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="channel_id", + full_name="MumbleProto.ContextAction.channel_id", + index=1, + number=2, + type=13, + cpp_type=3, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="action", + full_name="MumbleProto.ContextAction.action", + index=2, + number=3, + type=9, + cpp_type=9, + label=2, + has_default_value=False, + default_value=_b("").decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + ], + extensions=[], + nested_types=[], + enum_types=[], + options=None, + is_extendable=False, + syntax="proto2", + extension_ranges=[], + oneofs=[], + serialized_start=2977, + serialized_end=3045, ) _USERLIST_USER = _descriptor.Descriptor( - name='User', - full_name='MumbleProto.UserList.User', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='user_id', full_name='MumbleProto.UserList.User.user_id', index=0, - number=1, type=13, cpp_type=3, label=2, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='name', full_name='MumbleProto.UserList.User.name', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='last_seen', full_name='MumbleProto.UserList.User.last_seen', index=2, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='last_channel', full_name='MumbleProto.UserList.User.last_channel', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=3103, - serialized_end=3181, + name="User", + full_name="MumbleProto.UserList.User", + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name="user_id", + full_name="MumbleProto.UserList.User.user_id", + index=0, + number=1, + type=13, + cpp_type=3, + label=2, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="name", + full_name="MumbleProto.UserList.User.name", + index=1, + number=2, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=_b("").decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="last_seen", + full_name="MumbleProto.UserList.User.last_seen", + index=2, + number=3, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=_b("").decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="last_channel", + full_name="MumbleProto.UserList.User.last_channel", + index=3, + number=4, + type=13, + cpp_type=3, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + ], + extensions=[], + nested_types=[], + enum_types=[], + options=None, + is_extendable=False, + syntax="proto2", + extension_ranges=[], + oneofs=[], + serialized_start=3103, + serialized_end=3181, ) _USERLIST = _descriptor.Descriptor( - name='UserList', - full_name='MumbleProto.UserList', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='users', full_name='MumbleProto.UserList.users', index=0, - number=1, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[_USERLIST_USER, ], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=3048, - serialized_end=3181, + name="UserList", + full_name="MumbleProto.UserList", + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name="users", + full_name="MumbleProto.UserList.users", + index=0, + number=1, + type=11, + cpp_type=10, + label=3, + has_default_value=False, + default_value=[], + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + ], + extensions=[], + nested_types=[_USERLIST_USER,], + enum_types=[], + options=None, + is_extendable=False, + syntax="proto2", + extension_ranges=[], + oneofs=[], + serialized_start=3048, + serialized_end=3181, ) _VOICETARGET_TARGET = _descriptor.Descriptor( - name='Target', - full_name='MumbleProto.VoiceTarget.Target', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='session', full_name='MumbleProto.VoiceTarget.Target.session', index=0, - number=1, type=13, cpp_type=3, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='channel_id', full_name='MumbleProto.VoiceTarget.Target.channel_id', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='group', full_name='MumbleProto.VoiceTarget.Target.group', index=2, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='links', full_name='MumbleProto.VoiceTarget.Target.links', index=3, - number=4, type=8, cpp_type=7, label=1, - has_default_value=True, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='children', full_name='MumbleProto.VoiceTarget.Target.children', index=4, - number=5, type=8, cpp_type=7, label=1, - has_default_value=True, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=3261, - serialized_end=3368, + name="Target", + full_name="MumbleProto.VoiceTarget.Target", + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name="session", + full_name="MumbleProto.VoiceTarget.Target.session", + index=0, + number=1, + type=13, + cpp_type=3, + label=3, + has_default_value=False, + default_value=[], + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="channel_id", + full_name="MumbleProto.VoiceTarget.Target.channel_id", + index=1, + number=2, + type=13, + cpp_type=3, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="group", + full_name="MumbleProto.VoiceTarget.Target.group", + index=2, + number=3, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=_b("").decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="links", + full_name="MumbleProto.VoiceTarget.Target.links", + index=3, + number=4, + type=8, + cpp_type=7, + label=1, + has_default_value=True, + default_value=False, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="children", + full_name="MumbleProto.VoiceTarget.Target.children", + index=4, + number=5, + type=8, + cpp_type=7, + label=1, + has_default_value=True, + default_value=False, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + ], + extensions=[], + nested_types=[], + enum_types=[], + options=None, + is_extendable=False, + syntax="proto2", + extension_ranges=[], + oneofs=[], + serialized_start=3261, + serialized_end=3368, ) _VOICETARGET = _descriptor.Descriptor( - name='VoiceTarget', - full_name='MumbleProto.VoiceTarget', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='id', full_name='MumbleProto.VoiceTarget.id', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='targets', full_name='MumbleProto.VoiceTarget.targets', index=1, - number=2, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[_VOICETARGET_TARGET, ], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=3184, - serialized_end=3368, + name="VoiceTarget", + full_name="MumbleProto.VoiceTarget", + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name="id", + full_name="MumbleProto.VoiceTarget.id", + index=0, + number=1, + type=13, + cpp_type=3, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="targets", + full_name="MumbleProto.VoiceTarget.targets", + index=1, + number=2, + type=11, + cpp_type=10, + label=3, + has_default_value=False, + default_value=[], + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + ], + extensions=[], + nested_types=[_VOICETARGET_TARGET,], + enum_types=[], + options=None, + is_extendable=False, + syntax="proto2", + extension_ranges=[], + oneofs=[], + serialized_start=3184, + serialized_end=3368, ) _PERMISSIONQUERY = _descriptor.Descriptor( - name='PermissionQuery', - full_name='MumbleProto.PermissionQuery', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='channel_id', full_name='MumbleProto.PermissionQuery.channel_id', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='permissions', full_name='MumbleProto.PermissionQuery.permissions', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='flush', full_name='MumbleProto.PermissionQuery.flush', index=2, - number=3, type=8, cpp_type=7, label=1, - has_default_value=True, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=3370, - serialized_end=3450, + name="PermissionQuery", + full_name="MumbleProto.PermissionQuery", + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name="channel_id", + full_name="MumbleProto.PermissionQuery.channel_id", + index=0, + number=1, + type=13, + cpp_type=3, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="permissions", + full_name="MumbleProto.PermissionQuery.permissions", + index=1, + number=2, + type=13, + cpp_type=3, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="flush", + full_name="MumbleProto.PermissionQuery.flush", + index=2, + number=3, + type=8, + cpp_type=7, + label=1, + has_default_value=True, + default_value=False, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + ], + extensions=[], + nested_types=[], + enum_types=[], + options=None, + is_extendable=False, + syntax="proto2", + extension_ranges=[], + oneofs=[], + serialized_start=3370, + serialized_end=3450, ) _CODECVERSION = _descriptor.Descriptor( - name='CodecVersion', - full_name='MumbleProto.CodecVersion', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='alpha', full_name='MumbleProto.CodecVersion.alpha', index=0, - number=1, type=5, cpp_type=1, label=2, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='beta', full_name='MumbleProto.CodecVersion.beta', index=1, - number=2, type=5, cpp_type=1, label=2, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='prefer_alpha', full_name='MumbleProto.CodecVersion.prefer_alpha', index=2, - number=3, type=8, cpp_type=7, label=2, - has_default_value=True, default_value=True, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='opus', full_name='MumbleProto.CodecVersion.opus', index=3, - number=4, type=8, cpp_type=7, label=1, - has_default_value=True, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=3452, - serialized_end=3544, + name="CodecVersion", + full_name="MumbleProto.CodecVersion", + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name="alpha", + full_name="MumbleProto.CodecVersion.alpha", + index=0, + number=1, + type=5, + cpp_type=1, + label=2, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="beta", + full_name="MumbleProto.CodecVersion.beta", + index=1, + number=2, + type=5, + cpp_type=1, + label=2, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="prefer_alpha", + full_name="MumbleProto.CodecVersion.prefer_alpha", + index=2, + number=3, + type=8, + cpp_type=7, + label=2, + has_default_value=True, + default_value=True, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="opus", + full_name="MumbleProto.CodecVersion.opus", + index=3, + number=4, + type=8, + cpp_type=7, + label=1, + has_default_value=True, + default_value=False, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + ], + extensions=[], + nested_types=[], + enum_types=[], + options=None, + is_extendable=False, + syntax="proto2", + extension_ranges=[], + oneofs=[], + serialized_start=3452, + serialized_end=3544, ) _USERSTATS_STATS = _descriptor.Descriptor( - name='Stats', - full_name='MumbleProto.UserStats.Stats', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='good', full_name='MumbleProto.UserStats.Stats.good', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='late', full_name='MumbleProto.UserStats.Stats.late', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='lost', full_name='MumbleProto.UserStats.Stats.lost', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='resync', full_name='MumbleProto.UserStats.Stats.resync', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=4050, - serialized_end=4115, + name="Stats", + full_name="MumbleProto.UserStats.Stats", + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name="good", + full_name="MumbleProto.UserStats.Stats.good", + index=0, + number=1, + type=13, + cpp_type=3, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="late", + full_name="MumbleProto.UserStats.Stats.late", + index=1, + number=2, + type=13, + cpp_type=3, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="lost", + full_name="MumbleProto.UserStats.Stats.lost", + index=2, + number=3, + type=13, + cpp_type=3, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="resync", + full_name="MumbleProto.UserStats.Stats.resync", + index=3, + number=4, + type=13, + cpp_type=3, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + ], + extensions=[], + nested_types=[], + enum_types=[], + options=None, + is_extendable=False, + syntax="proto2", + extension_ranges=[], + oneofs=[], + serialized_start=4050, + serialized_end=4115, ) _USERSTATS = _descriptor.Descriptor( - name='UserStats', - full_name='MumbleProto.UserStats', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='session', full_name='MumbleProto.UserStats.session', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='stats_only', full_name='MumbleProto.UserStats.stats_only', index=1, - number=2, type=8, cpp_type=7, label=1, - has_default_value=True, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='certificates', full_name='MumbleProto.UserStats.certificates', index=2, - number=3, type=12, cpp_type=9, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='from_client', full_name='MumbleProto.UserStats.from_client', index=3, - number=4, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='from_server', full_name='MumbleProto.UserStats.from_server', index=4, - number=5, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='udp_packets', full_name='MumbleProto.UserStats.udp_packets', index=5, - number=6, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='tcp_packets', full_name='MumbleProto.UserStats.tcp_packets', index=6, - number=7, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='udp_ping_avg', full_name='MumbleProto.UserStats.udp_ping_avg', index=7, - number=8, type=2, cpp_type=6, label=1, - has_default_value=False, default_value=float(0), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='udp_ping_var', full_name='MumbleProto.UserStats.udp_ping_var', index=8, - number=9, type=2, cpp_type=6, label=1, - has_default_value=False, default_value=float(0), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='tcp_ping_avg', full_name='MumbleProto.UserStats.tcp_ping_avg', index=9, - number=10, type=2, cpp_type=6, label=1, - has_default_value=False, default_value=float(0), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='tcp_ping_var', full_name='MumbleProto.UserStats.tcp_ping_var', index=10, - number=11, type=2, cpp_type=6, label=1, - has_default_value=False, default_value=float(0), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='version', full_name='MumbleProto.UserStats.version', index=11, - number=12, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='celt_versions', full_name='MumbleProto.UserStats.celt_versions', index=12, - number=13, type=5, cpp_type=1, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='address', full_name='MumbleProto.UserStats.address', index=13, - number=14, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='bandwidth', full_name='MumbleProto.UserStats.bandwidth', index=14, - number=15, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='onlinesecs', full_name='MumbleProto.UserStats.onlinesecs', index=15, - number=16, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='idlesecs', full_name='MumbleProto.UserStats.idlesecs', index=16, - number=17, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='strong_certificate', full_name='MumbleProto.UserStats.strong_certificate', index=17, - number=18, type=8, cpp_type=7, label=1, - has_default_value=True, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='opus', full_name='MumbleProto.UserStats.opus', index=18, - number=19, type=8, cpp_type=7, label=1, - has_default_value=True, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[_USERSTATS_STATS, ], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=3547, - serialized_end=4115, + name="UserStats", + full_name="MumbleProto.UserStats", + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name="session", + full_name="MumbleProto.UserStats.session", + index=0, + number=1, + type=13, + cpp_type=3, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="stats_only", + full_name="MumbleProto.UserStats.stats_only", + index=1, + number=2, + type=8, + cpp_type=7, + label=1, + has_default_value=True, + default_value=False, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="certificates", + full_name="MumbleProto.UserStats.certificates", + index=2, + number=3, + type=12, + cpp_type=9, + label=3, + has_default_value=False, + default_value=[], + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="from_client", + full_name="MumbleProto.UserStats.from_client", + index=3, + number=4, + type=11, + cpp_type=10, + label=1, + has_default_value=False, + default_value=None, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="from_server", + full_name="MumbleProto.UserStats.from_server", + index=4, + number=5, + type=11, + cpp_type=10, + label=1, + has_default_value=False, + default_value=None, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="udp_packets", + full_name="MumbleProto.UserStats.udp_packets", + index=5, + number=6, + type=13, + cpp_type=3, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="tcp_packets", + full_name="MumbleProto.UserStats.tcp_packets", + index=6, + number=7, + type=13, + cpp_type=3, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="udp_ping_avg", + full_name="MumbleProto.UserStats.udp_ping_avg", + index=7, + number=8, + type=2, + cpp_type=6, + label=1, + has_default_value=False, + default_value=float(0), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="udp_ping_var", + full_name="MumbleProto.UserStats.udp_ping_var", + index=8, + number=9, + type=2, + cpp_type=6, + label=1, + has_default_value=False, + default_value=float(0), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="tcp_ping_avg", + full_name="MumbleProto.UserStats.tcp_ping_avg", + index=9, + number=10, + type=2, + cpp_type=6, + label=1, + has_default_value=False, + default_value=float(0), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="tcp_ping_var", + full_name="MumbleProto.UserStats.tcp_ping_var", + index=10, + number=11, + type=2, + cpp_type=6, + label=1, + has_default_value=False, + default_value=float(0), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="version", + full_name="MumbleProto.UserStats.version", + index=11, + number=12, + type=11, + cpp_type=10, + label=1, + has_default_value=False, + default_value=None, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="celt_versions", + full_name="MumbleProto.UserStats.celt_versions", + index=12, + number=13, + type=5, + cpp_type=1, + label=3, + has_default_value=False, + default_value=[], + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="address", + full_name="MumbleProto.UserStats.address", + index=13, + number=14, + type=12, + cpp_type=9, + label=1, + has_default_value=False, + default_value=_b(""), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="bandwidth", + full_name="MumbleProto.UserStats.bandwidth", + index=14, + number=15, + type=13, + cpp_type=3, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="onlinesecs", + full_name="MumbleProto.UserStats.onlinesecs", + index=15, + number=16, + type=13, + cpp_type=3, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="idlesecs", + full_name="MumbleProto.UserStats.idlesecs", + index=16, + number=17, + type=13, + cpp_type=3, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="strong_certificate", + full_name="MumbleProto.UserStats.strong_certificate", + index=17, + number=18, + type=8, + cpp_type=7, + label=1, + has_default_value=True, + default_value=False, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="opus", + full_name="MumbleProto.UserStats.opus", + index=18, + number=19, + type=8, + cpp_type=7, + label=1, + has_default_value=True, + default_value=False, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + ], + extensions=[], + nested_types=[_USERSTATS_STATS,], + enum_types=[], + options=None, + is_extendable=False, + syntax="proto2", + extension_ranges=[], + oneofs=[], + serialized_start=3547, + serialized_end=4115, ) _REQUESTBLOB = _descriptor.Descriptor( - name='RequestBlob', - full_name='MumbleProto.RequestBlob', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='session_texture', full_name='MumbleProto.RequestBlob.session_texture', index=0, - number=1, type=13, cpp_type=3, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='session_comment', full_name='MumbleProto.RequestBlob.session_comment', index=1, - number=2, type=13, cpp_type=3, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='channel_description', full_name='MumbleProto.RequestBlob.channel_description', index=2, - number=3, type=13, cpp_type=3, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=4117, - serialized_end=4209, + name="RequestBlob", + full_name="MumbleProto.RequestBlob", + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name="session_texture", + full_name="MumbleProto.RequestBlob.session_texture", + index=0, + number=1, + type=13, + cpp_type=3, + label=3, + has_default_value=False, + default_value=[], + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="session_comment", + full_name="MumbleProto.RequestBlob.session_comment", + index=1, + number=2, + type=13, + cpp_type=3, + label=3, + has_default_value=False, + default_value=[], + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="channel_description", + full_name="MumbleProto.RequestBlob.channel_description", + index=2, + number=3, + type=13, + cpp_type=3, + label=3, + has_default_value=False, + default_value=[], + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + ], + extensions=[], + nested_types=[], + enum_types=[], + options=None, + is_extendable=False, + syntax="proto2", + extension_ranges=[], + oneofs=[], + serialized_start=4117, + serialized_end=4209, ) _SERVERCONFIG = _descriptor.Descriptor( - name='ServerConfig', - full_name='MumbleProto.ServerConfig', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='max_bandwidth', full_name='MumbleProto.ServerConfig.max_bandwidth', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='welcome_text', full_name='MumbleProto.ServerConfig.welcome_text', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='allow_html', full_name='MumbleProto.ServerConfig.allow_html', index=2, - number=3, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='message_length', full_name='MumbleProto.ServerConfig.message_length', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='image_message_length', full_name='MumbleProto.ServerConfig.image_message_length', index=4, - number=5, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='max_users', full_name='MumbleProto.ServerConfig.max_users', index=5, - number=6, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=4212, - serialized_end=4364, + name="ServerConfig", + full_name="MumbleProto.ServerConfig", + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name="max_bandwidth", + full_name="MumbleProto.ServerConfig.max_bandwidth", + index=0, + number=1, + type=13, + cpp_type=3, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="welcome_text", + full_name="MumbleProto.ServerConfig.welcome_text", + index=1, + number=2, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=_b("").decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="allow_html", + full_name="MumbleProto.ServerConfig.allow_html", + index=2, + number=3, + type=8, + cpp_type=7, + label=1, + has_default_value=False, + default_value=False, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="message_length", + full_name="MumbleProto.ServerConfig.message_length", + index=3, + number=4, + type=13, + cpp_type=3, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="image_message_length", + full_name="MumbleProto.ServerConfig.image_message_length", + index=4, + number=5, + type=13, + cpp_type=3, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="max_users", + full_name="MumbleProto.ServerConfig.max_users", + index=5, + number=6, + type=13, + cpp_type=3, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + ], + extensions=[], + nested_types=[], + enum_types=[], + options=None, + is_extendable=False, + syntax="proto2", + extension_ranges=[], + oneofs=[], + serialized_start=4212, + serialized_end=4364, ) _SUGGESTCONFIG = _descriptor.Descriptor( - name='SuggestConfig', - full_name='MumbleProto.SuggestConfig', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='version', full_name='MumbleProto.SuggestConfig.version', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='positional', full_name='MumbleProto.SuggestConfig.positional', index=1, - number=2, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='push_to_talk', full_name='MumbleProto.SuggestConfig.push_to_talk', index=2, - number=3, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=4366, - serialized_end=4440, -) - -_REJECT.fields_by_name['type'].enum_type = _REJECT_REJECTTYPE + name="SuggestConfig", + full_name="MumbleProto.SuggestConfig", + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name="version", + full_name="MumbleProto.SuggestConfig.version", + index=0, + number=1, + type=13, + cpp_type=3, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="positional", + full_name="MumbleProto.SuggestConfig.positional", + index=1, + number=2, + type=8, + cpp_type=7, + label=1, + has_default_value=False, + default_value=False, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + _descriptor.FieldDescriptor( + name="push_to_talk", + full_name="MumbleProto.SuggestConfig.push_to_talk", + index=2, + number=3, + type=8, + cpp_type=7, + label=1, + has_default_value=False, + default_value=False, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + options=None, + ), + ], + extensions=[], + nested_types=[], + enum_types=[], + options=None, + is_extendable=False, + syntax="proto2", + extension_ranges=[], + oneofs=[], + serialized_start=4366, + serialized_end=4440, +) + +_REJECT.fields_by_name["type"].enum_type = _REJECT_REJECTTYPE _REJECT_REJECTTYPE.containing_type = _REJECT _BANLIST_BANENTRY.containing_type = _BANLIST -_BANLIST.fields_by_name['bans'].message_type = _BANLIST_BANENTRY -_PERMISSIONDENIED.fields_by_name['type'].enum_type = _PERMISSIONDENIED_DENYTYPE +_BANLIST.fields_by_name["bans"].message_type = _BANLIST_BANENTRY +_PERMISSIONDENIED.fields_by_name["type"].enum_type = _PERMISSIONDENIED_DENYTYPE _PERMISSIONDENIED_DENYTYPE.containing_type = _PERMISSIONDENIED _ACL_CHANGROUP.containing_type = _ACL _ACL_CHANACL.containing_type = _ACL -_ACL.fields_by_name['groups'].message_type = _ACL_CHANGROUP -_ACL.fields_by_name['acls'].message_type = _ACL_CHANACL -_CONTEXTACTIONMODIFY.fields_by_name['operation'].enum_type = _CONTEXTACTIONMODIFY_OPERATION +_ACL.fields_by_name["groups"].message_type = _ACL_CHANGROUP +_ACL.fields_by_name["acls"].message_type = _ACL_CHANACL +_CONTEXTACTIONMODIFY.fields_by_name[ + "operation" +].enum_type = _CONTEXTACTIONMODIFY_OPERATION _CONTEXTACTIONMODIFY_CONTEXT.containing_type = _CONTEXTACTIONMODIFY _CONTEXTACTIONMODIFY_OPERATION.containing_type = _CONTEXTACTIONMODIFY _USERLIST_USER.containing_type = _USERLIST -_USERLIST.fields_by_name['users'].message_type = _USERLIST_USER +_USERLIST.fields_by_name["users"].message_type = _USERLIST_USER _VOICETARGET_TARGET.containing_type = _VOICETARGET -_VOICETARGET.fields_by_name['targets'].message_type = _VOICETARGET_TARGET +_VOICETARGET.fields_by_name["targets"].message_type = _VOICETARGET_TARGET _USERSTATS_STATS.containing_type = _USERSTATS -_USERSTATS.fields_by_name['from_client'].message_type = _USERSTATS_STATS -_USERSTATS.fields_by_name['from_server'].message_type = _USERSTATS_STATS -_USERSTATS.fields_by_name['version'].message_type = _VERSION -DESCRIPTOR.message_types_by_name['Version'] = _VERSION -DESCRIPTOR.message_types_by_name['UDPTunnel'] = _UDPTUNNEL -DESCRIPTOR.message_types_by_name['Authenticate'] = _AUTHENTICATE -DESCRIPTOR.message_types_by_name['Ping'] = _PING -DESCRIPTOR.message_types_by_name['Reject'] = _REJECT -DESCRIPTOR.message_types_by_name['ServerSync'] = _SERVERSYNC -DESCRIPTOR.message_types_by_name['ChannelRemove'] = _CHANNELREMOVE -DESCRIPTOR.message_types_by_name['ChannelState'] = _CHANNELSTATE -DESCRIPTOR.message_types_by_name['UserRemove'] = _USERREMOVE -DESCRIPTOR.message_types_by_name['UserState'] = _USERSTATE -DESCRIPTOR.message_types_by_name['BanList'] = _BANLIST -DESCRIPTOR.message_types_by_name['TextMessage'] = _TEXTMESSAGE -DESCRIPTOR.message_types_by_name['PermissionDenied'] = _PERMISSIONDENIED -DESCRIPTOR.message_types_by_name['ACL'] = _ACL -DESCRIPTOR.message_types_by_name['QueryUsers'] = _QUERYUSERS -DESCRIPTOR.message_types_by_name['CryptSetup'] = _CRYPTSETUP -DESCRIPTOR.message_types_by_name['ContextActionModify'] = _CONTEXTACTIONMODIFY -DESCRIPTOR.message_types_by_name['ContextAction'] = _CONTEXTACTION -DESCRIPTOR.message_types_by_name['UserList'] = _USERLIST -DESCRIPTOR.message_types_by_name['VoiceTarget'] = _VOICETARGET -DESCRIPTOR.message_types_by_name['PermissionQuery'] = _PERMISSIONQUERY -DESCRIPTOR.message_types_by_name['CodecVersion'] = _CODECVERSION -DESCRIPTOR.message_types_by_name['UserStats'] = _USERSTATS -DESCRIPTOR.message_types_by_name['RequestBlob'] = _REQUESTBLOB -DESCRIPTOR.message_types_by_name['ServerConfig'] = _SERVERCONFIG -DESCRIPTOR.message_types_by_name['SuggestConfig'] = _SUGGESTCONFIG +_USERSTATS.fields_by_name["from_client"].message_type = _USERSTATS_STATS +_USERSTATS.fields_by_name["from_server"].message_type = _USERSTATS_STATS +_USERSTATS.fields_by_name["version"].message_type = _VERSION +DESCRIPTOR.message_types_by_name["Version"] = _VERSION +DESCRIPTOR.message_types_by_name["UDPTunnel"] = _UDPTUNNEL +DESCRIPTOR.message_types_by_name["Authenticate"] = _AUTHENTICATE +DESCRIPTOR.message_types_by_name["Ping"] = _PING +DESCRIPTOR.message_types_by_name["Reject"] = _REJECT +DESCRIPTOR.message_types_by_name["ServerSync"] = _SERVERSYNC +DESCRIPTOR.message_types_by_name["ChannelRemove"] = _CHANNELREMOVE +DESCRIPTOR.message_types_by_name["ChannelState"] = _CHANNELSTATE +DESCRIPTOR.message_types_by_name["UserRemove"] = _USERREMOVE +DESCRIPTOR.message_types_by_name["UserState"] = _USERSTATE +DESCRIPTOR.message_types_by_name["BanList"] = _BANLIST +DESCRIPTOR.message_types_by_name["TextMessage"] = _TEXTMESSAGE +DESCRIPTOR.message_types_by_name["PermissionDenied"] = _PERMISSIONDENIED +DESCRIPTOR.message_types_by_name["ACL"] = _ACL +DESCRIPTOR.message_types_by_name["QueryUsers"] = _QUERYUSERS +DESCRIPTOR.message_types_by_name["CryptSetup"] = _CRYPTSETUP +DESCRIPTOR.message_types_by_name["ContextActionModify"] = _CONTEXTACTIONMODIFY +DESCRIPTOR.message_types_by_name["ContextAction"] = _CONTEXTACTION +DESCRIPTOR.message_types_by_name["UserList"] = _USERLIST +DESCRIPTOR.message_types_by_name["VoiceTarget"] = _VOICETARGET +DESCRIPTOR.message_types_by_name["PermissionQuery"] = _PERMISSIONQUERY +DESCRIPTOR.message_types_by_name["CodecVersion"] = _CODECVERSION +DESCRIPTOR.message_types_by_name["UserStats"] = _USERSTATS +DESCRIPTOR.message_types_by_name["RequestBlob"] = _REQUESTBLOB +DESCRIPTOR.message_types_by_name["ServerConfig"] = _SERVERCONFIG +DESCRIPTOR.message_types_by_name["SuggestConfig"] = _SUGGESTCONFIG _sym_db.RegisterFileDescriptor(DESCRIPTOR) -Version = _reflection.GeneratedProtocolMessageType('Version', (_message.Message,), dict( - DESCRIPTOR = _VERSION, - __module__ = 'Mumble_pb2' - # @@protoc_insertion_point(class_scope:MumbleProto.Version) - )) +Version = _reflection.GeneratedProtocolMessageType( + "Version", + (_message.Message,), + dict( + DESCRIPTOR=_VERSION, + __module__="Mumble_pb2" + # @@protoc_insertion_point(class_scope:MumbleProto.Version) + ), +) _sym_db.RegisterMessage(Version) -UDPTunnel = _reflection.GeneratedProtocolMessageType('UDPTunnel', (_message.Message,), dict( - DESCRIPTOR = _UDPTUNNEL, - __module__ = 'Mumble_pb2' - # @@protoc_insertion_point(class_scope:MumbleProto.UDPTunnel) - )) +UDPTunnel = _reflection.GeneratedProtocolMessageType( + "UDPTunnel", + (_message.Message,), + dict( + DESCRIPTOR=_UDPTUNNEL, + __module__="Mumble_pb2" + # @@protoc_insertion_point(class_scope:MumbleProto.UDPTunnel) + ), +) _sym_db.RegisterMessage(UDPTunnel) -Authenticate = _reflection.GeneratedProtocolMessageType('Authenticate', (_message.Message,), dict( - DESCRIPTOR = _AUTHENTICATE, - __module__ = 'Mumble_pb2' - # @@protoc_insertion_point(class_scope:MumbleProto.Authenticate) - )) +Authenticate = _reflection.GeneratedProtocolMessageType( + "Authenticate", + (_message.Message,), + dict( + DESCRIPTOR=_AUTHENTICATE, + __module__="Mumble_pb2" + # @@protoc_insertion_point(class_scope:MumbleProto.Authenticate) + ), +) _sym_db.RegisterMessage(Authenticate) -Ping = _reflection.GeneratedProtocolMessageType('Ping', (_message.Message,), dict( - DESCRIPTOR = _PING, - __module__ = 'Mumble_pb2' - # @@protoc_insertion_point(class_scope:MumbleProto.Ping) - )) +Ping = _reflection.GeneratedProtocolMessageType( + "Ping", + (_message.Message,), + dict( + DESCRIPTOR=_PING, + __module__="Mumble_pb2" + # @@protoc_insertion_point(class_scope:MumbleProto.Ping) + ), +) _sym_db.RegisterMessage(Ping) -Reject = _reflection.GeneratedProtocolMessageType('Reject', (_message.Message,), dict( - DESCRIPTOR = _REJECT, - __module__ = 'Mumble_pb2' - # @@protoc_insertion_point(class_scope:MumbleProto.Reject) - )) +Reject = _reflection.GeneratedProtocolMessageType( + "Reject", + (_message.Message,), + dict( + DESCRIPTOR=_REJECT, + __module__="Mumble_pb2" + # @@protoc_insertion_point(class_scope:MumbleProto.Reject) + ), +) _sym_db.RegisterMessage(Reject) -ServerSync = _reflection.GeneratedProtocolMessageType('ServerSync', (_message.Message,), dict( - DESCRIPTOR = _SERVERSYNC, - __module__ = 'Mumble_pb2' - # @@protoc_insertion_point(class_scope:MumbleProto.ServerSync) - )) +ServerSync = _reflection.GeneratedProtocolMessageType( + "ServerSync", + (_message.Message,), + dict( + DESCRIPTOR=_SERVERSYNC, + __module__="Mumble_pb2" + # @@protoc_insertion_point(class_scope:MumbleProto.ServerSync) + ), +) _sym_db.RegisterMessage(ServerSync) -ChannelRemove = _reflection.GeneratedProtocolMessageType('ChannelRemove', (_message.Message,), dict( - DESCRIPTOR = _CHANNELREMOVE, - __module__ = 'Mumble_pb2' - # @@protoc_insertion_point(class_scope:MumbleProto.ChannelRemove) - )) +ChannelRemove = _reflection.GeneratedProtocolMessageType( + "ChannelRemove", + (_message.Message,), + dict( + DESCRIPTOR=_CHANNELREMOVE, + __module__="Mumble_pb2" + # @@protoc_insertion_point(class_scope:MumbleProto.ChannelRemove) + ), +) _sym_db.RegisterMessage(ChannelRemove) -ChannelState = _reflection.GeneratedProtocolMessageType('ChannelState', (_message.Message,), dict( - DESCRIPTOR = _CHANNELSTATE, - __module__ = 'Mumble_pb2' - # @@protoc_insertion_point(class_scope:MumbleProto.ChannelState) - )) +ChannelState = _reflection.GeneratedProtocolMessageType( + "ChannelState", + (_message.Message,), + dict( + DESCRIPTOR=_CHANNELSTATE, + __module__="Mumble_pb2" + # @@protoc_insertion_point(class_scope:MumbleProto.ChannelState) + ), +) _sym_db.RegisterMessage(ChannelState) -UserRemove = _reflection.GeneratedProtocolMessageType('UserRemove', (_message.Message,), dict( - DESCRIPTOR = _USERREMOVE, - __module__ = 'Mumble_pb2' - # @@protoc_insertion_point(class_scope:MumbleProto.UserRemove) - )) +UserRemove = _reflection.GeneratedProtocolMessageType( + "UserRemove", + (_message.Message,), + dict( + DESCRIPTOR=_USERREMOVE, + __module__="Mumble_pb2" + # @@protoc_insertion_point(class_scope:MumbleProto.UserRemove) + ), +) _sym_db.RegisterMessage(UserRemove) -UserState = _reflection.GeneratedProtocolMessageType('UserState', (_message.Message,), dict( - DESCRIPTOR = _USERSTATE, - __module__ = 'Mumble_pb2' - # @@protoc_insertion_point(class_scope:MumbleProto.UserState) - )) +UserState = _reflection.GeneratedProtocolMessageType( + "UserState", + (_message.Message,), + dict( + DESCRIPTOR=_USERSTATE, + __module__="Mumble_pb2" + # @@protoc_insertion_point(class_scope:MumbleProto.UserState) + ), +) _sym_db.RegisterMessage(UserState) -BanList = _reflection.GeneratedProtocolMessageType('BanList', (_message.Message,), dict( - - BanEntry = _reflection.GeneratedProtocolMessageType('BanEntry', (_message.Message,), dict( - DESCRIPTOR = _BANLIST_BANENTRY, - __module__ = 'Mumble_pb2' - # @@protoc_insertion_point(class_scope:MumbleProto.BanList.BanEntry) - )) - , - DESCRIPTOR = _BANLIST, - __module__ = 'Mumble_pb2' - # @@protoc_insertion_point(class_scope:MumbleProto.BanList) - )) +BanList = _reflection.GeneratedProtocolMessageType( + "BanList", + (_message.Message,), + dict( + BanEntry=_reflection.GeneratedProtocolMessageType( + "BanEntry", + (_message.Message,), + dict( + DESCRIPTOR=_BANLIST_BANENTRY, + __module__="Mumble_pb2" + # @@protoc_insertion_point(class_scope:MumbleProto.BanList.BanEntry) + ), + ), + DESCRIPTOR=_BANLIST, + __module__="Mumble_pb2" + # @@protoc_insertion_point(class_scope:MumbleProto.BanList) + ), +) _sym_db.RegisterMessage(BanList) _sym_db.RegisterMessage(BanList.BanEntry) -TextMessage = _reflection.GeneratedProtocolMessageType('TextMessage', (_message.Message,), dict( - DESCRIPTOR = _TEXTMESSAGE, - __module__ = 'Mumble_pb2' - # @@protoc_insertion_point(class_scope:MumbleProto.TextMessage) - )) +TextMessage = _reflection.GeneratedProtocolMessageType( + "TextMessage", + (_message.Message,), + dict( + DESCRIPTOR=_TEXTMESSAGE, + __module__="Mumble_pb2" + # @@protoc_insertion_point(class_scope:MumbleProto.TextMessage) + ), +) _sym_db.RegisterMessage(TextMessage) -PermissionDenied = _reflection.GeneratedProtocolMessageType('PermissionDenied', (_message.Message,), dict( - DESCRIPTOR = _PERMISSIONDENIED, - __module__ = 'Mumble_pb2' - # @@protoc_insertion_point(class_scope:MumbleProto.PermissionDenied) - )) +PermissionDenied = _reflection.GeneratedProtocolMessageType( + "PermissionDenied", + (_message.Message,), + dict( + DESCRIPTOR=_PERMISSIONDENIED, + __module__="Mumble_pb2" + # @@protoc_insertion_point(class_scope:MumbleProto.PermissionDenied) + ), +) _sym_db.RegisterMessage(PermissionDenied) -ACL = _reflection.GeneratedProtocolMessageType('ACL', (_message.Message,), dict( - - ChanGroup = _reflection.GeneratedProtocolMessageType('ChanGroup', (_message.Message,), dict( - DESCRIPTOR = _ACL_CHANGROUP, - __module__ = 'Mumble_pb2' - # @@protoc_insertion_point(class_scope:MumbleProto.ACL.ChanGroup) - )) - , - - ChanACL = _reflection.GeneratedProtocolMessageType('ChanACL', (_message.Message,), dict( - DESCRIPTOR = _ACL_CHANACL, - __module__ = 'Mumble_pb2' - # @@protoc_insertion_point(class_scope:MumbleProto.ACL.ChanACL) - )) - , - DESCRIPTOR = _ACL, - __module__ = 'Mumble_pb2' - # @@protoc_insertion_point(class_scope:MumbleProto.ACL) - )) +ACL = _reflection.GeneratedProtocolMessageType( + "ACL", + (_message.Message,), + dict( + ChanGroup=_reflection.GeneratedProtocolMessageType( + "ChanGroup", + (_message.Message,), + dict( + DESCRIPTOR=_ACL_CHANGROUP, + __module__="Mumble_pb2" + # @@protoc_insertion_point(class_scope:MumbleProto.ACL.ChanGroup) + ), + ), + ChanACL=_reflection.GeneratedProtocolMessageType( + "ChanACL", + (_message.Message,), + dict( + DESCRIPTOR=_ACL_CHANACL, + __module__="Mumble_pb2" + # @@protoc_insertion_point(class_scope:MumbleProto.ACL.ChanACL) + ), + ), + DESCRIPTOR=_ACL, + __module__="Mumble_pb2" + # @@protoc_insertion_point(class_scope:MumbleProto.ACL) + ), +) _sym_db.RegisterMessage(ACL) _sym_db.RegisterMessage(ACL.ChanGroup) _sym_db.RegisterMessage(ACL.ChanACL) -QueryUsers = _reflection.GeneratedProtocolMessageType('QueryUsers', (_message.Message,), dict( - DESCRIPTOR = _QUERYUSERS, - __module__ = 'Mumble_pb2' - # @@protoc_insertion_point(class_scope:MumbleProto.QueryUsers) - )) +QueryUsers = _reflection.GeneratedProtocolMessageType( + "QueryUsers", + (_message.Message,), + dict( + DESCRIPTOR=_QUERYUSERS, + __module__="Mumble_pb2" + # @@protoc_insertion_point(class_scope:MumbleProto.QueryUsers) + ), +) _sym_db.RegisterMessage(QueryUsers) -CryptSetup = _reflection.GeneratedProtocolMessageType('CryptSetup', (_message.Message,), dict( - DESCRIPTOR = _CRYPTSETUP, - __module__ = 'Mumble_pb2' - # @@protoc_insertion_point(class_scope:MumbleProto.CryptSetup) - )) +CryptSetup = _reflection.GeneratedProtocolMessageType( + "CryptSetup", + (_message.Message,), + dict( + DESCRIPTOR=_CRYPTSETUP, + __module__="Mumble_pb2" + # @@protoc_insertion_point(class_scope:MumbleProto.CryptSetup) + ), +) _sym_db.RegisterMessage(CryptSetup) -ContextActionModify = _reflection.GeneratedProtocolMessageType('ContextActionModify', (_message.Message,), dict( - DESCRIPTOR = _CONTEXTACTIONMODIFY, - __module__ = 'Mumble_pb2' - # @@protoc_insertion_point(class_scope:MumbleProto.ContextActionModify) - )) +ContextActionModify = _reflection.GeneratedProtocolMessageType( + "ContextActionModify", + (_message.Message,), + dict( + DESCRIPTOR=_CONTEXTACTIONMODIFY, + __module__="Mumble_pb2" + # @@protoc_insertion_point(class_scope:MumbleProto.ContextActionModify) + ), +) _sym_db.RegisterMessage(ContextActionModify) -ContextAction = _reflection.GeneratedProtocolMessageType('ContextAction', (_message.Message,), dict( - DESCRIPTOR = _CONTEXTACTION, - __module__ = 'Mumble_pb2' - # @@protoc_insertion_point(class_scope:MumbleProto.ContextAction) - )) +ContextAction = _reflection.GeneratedProtocolMessageType( + "ContextAction", + (_message.Message,), + dict( + DESCRIPTOR=_CONTEXTACTION, + __module__="Mumble_pb2" + # @@protoc_insertion_point(class_scope:MumbleProto.ContextAction) + ), +) _sym_db.RegisterMessage(ContextAction) -UserList = _reflection.GeneratedProtocolMessageType('UserList', (_message.Message,), dict( - - User = _reflection.GeneratedProtocolMessageType('User', (_message.Message,), dict( - DESCRIPTOR = _USERLIST_USER, - __module__ = 'Mumble_pb2' - # @@protoc_insertion_point(class_scope:MumbleProto.UserList.User) - )) - , - DESCRIPTOR = _USERLIST, - __module__ = 'Mumble_pb2' - # @@protoc_insertion_point(class_scope:MumbleProto.UserList) - )) +UserList = _reflection.GeneratedProtocolMessageType( + "UserList", + (_message.Message,), + dict( + User=_reflection.GeneratedProtocolMessageType( + "User", + (_message.Message,), + dict( + DESCRIPTOR=_USERLIST_USER, + __module__="Mumble_pb2" + # @@protoc_insertion_point(class_scope:MumbleProto.UserList.User) + ), + ), + DESCRIPTOR=_USERLIST, + __module__="Mumble_pb2" + # @@protoc_insertion_point(class_scope:MumbleProto.UserList) + ), +) _sym_db.RegisterMessage(UserList) _sym_db.RegisterMessage(UserList.User) -VoiceTarget = _reflection.GeneratedProtocolMessageType('VoiceTarget', (_message.Message,), dict( - - Target = _reflection.GeneratedProtocolMessageType('Target', (_message.Message,), dict( - DESCRIPTOR = _VOICETARGET_TARGET, - __module__ = 'Mumble_pb2' - # @@protoc_insertion_point(class_scope:MumbleProto.VoiceTarget.Target) - )) - , - DESCRIPTOR = _VOICETARGET, - __module__ = 'Mumble_pb2' - # @@protoc_insertion_point(class_scope:MumbleProto.VoiceTarget) - )) +VoiceTarget = _reflection.GeneratedProtocolMessageType( + "VoiceTarget", + (_message.Message,), + dict( + Target=_reflection.GeneratedProtocolMessageType( + "Target", + (_message.Message,), + dict( + DESCRIPTOR=_VOICETARGET_TARGET, + __module__="Mumble_pb2" + # @@protoc_insertion_point(class_scope:MumbleProto.VoiceTarget.Target) + ), + ), + DESCRIPTOR=_VOICETARGET, + __module__="Mumble_pb2" + # @@protoc_insertion_point(class_scope:MumbleProto.VoiceTarget) + ), +) _sym_db.RegisterMessage(VoiceTarget) _sym_db.RegisterMessage(VoiceTarget.Target) -PermissionQuery = _reflection.GeneratedProtocolMessageType('PermissionQuery', (_message.Message,), dict( - DESCRIPTOR = _PERMISSIONQUERY, - __module__ = 'Mumble_pb2' - # @@protoc_insertion_point(class_scope:MumbleProto.PermissionQuery) - )) +PermissionQuery = _reflection.GeneratedProtocolMessageType( + "PermissionQuery", + (_message.Message,), + dict( + DESCRIPTOR=_PERMISSIONQUERY, + __module__="Mumble_pb2" + # @@protoc_insertion_point(class_scope:MumbleProto.PermissionQuery) + ), +) _sym_db.RegisterMessage(PermissionQuery) -CodecVersion = _reflection.GeneratedProtocolMessageType('CodecVersion', (_message.Message,), dict( - DESCRIPTOR = _CODECVERSION, - __module__ = 'Mumble_pb2' - # @@protoc_insertion_point(class_scope:MumbleProto.CodecVersion) - )) +CodecVersion = _reflection.GeneratedProtocolMessageType( + "CodecVersion", + (_message.Message,), + dict( + DESCRIPTOR=_CODECVERSION, + __module__="Mumble_pb2" + # @@protoc_insertion_point(class_scope:MumbleProto.CodecVersion) + ), +) _sym_db.RegisterMessage(CodecVersion) -UserStats = _reflection.GeneratedProtocolMessageType('UserStats', (_message.Message,), dict( - - Stats = _reflection.GeneratedProtocolMessageType('Stats', (_message.Message,), dict( - DESCRIPTOR = _USERSTATS_STATS, - __module__ = 'Mumble_pb2' - # @@protoc_insertion_point(class_scope:MumbleProto.UserStats.Stats) - )) - , - DESCRIPTOR = _USERSTATS, - __module__ = 'Mumble_pb2' - # @@protoc_insertion_point(class_scope:MumbleProto.UserStats) - )) +UserStats = _reflection.GeneratedProtocolMessageType( + "UserStats", + (_message.Message,), + dict( + Stats=_reflection.GeneratedProtocolMessageType( + "Stats", + (_message.Message,), + dict( + DESCRIPTOR=_USERSTATS_STATS, + __module__="Mumble_pb2" + # @@protoc_insertion_point(class_scope:MumbleProto.UserStats.Stats) + ), + ), + DESCRIPTOR=_USERSTATS, + __module__="Mumble_pb2" + # @@protoc_insertion_point(class_scope:MumbleProto.UserStats) + ), +) _sym_db.RegisterMessage(UserStats) _sym_db.RegisterMessage(UserStats.Stats) -RequestBlob = _reflection.GeneratedProtocolMessageType('RequestBlob', (_message.Message,), dict( - DESCRIPTOR = _REQUESTBLOB, - __module__ = 'Mumble_pb2' - # @@protoc_insertion_point(class_scope:MumbleProto.RequestBlob) - )) +RequestBlob = _reflection.GeneratedProtocolMessageType( + "RequestBlob", + (_message.Message,), + dict( + DESCRIPTOR=_REQUESTBLOB, + __module__="Mumble_pb2" + # @@protoc_insertion_point(class_scope:MumbleProto.RequestBlob) + ), +) _sym_db.RegisterMessage(RequestBlob) -ServerConfig = _reflection.GeneratedProtocolMessageType('ServerConfig', (_message.Message,), dict( - DESCRIPTOR = _SERVERCONFIG, - __module__ = 'Mumble_pb2' - # @@protoc_insertion_point(class_scope:MumbleProto.ServerConfig) - )) +ServerConfig = _reflection.GeneratedProtocolMessageType( + "ServerConfig", + (_message.Message,), + dict( + DESCRIPTOR=_SERVERCONFIG, + __module__="Mumble_pb2" + # @@protoc_insertion_point(class_scope:MumbleProto.ServerConfig) + ), +) _sym_db.RegisterMessage(ServerConfig) -SuggestConfig = _reflection.GeneratedProtocolMessageType('SuggestConfig', (_message.Message,), dict( - DESCRIPTOR = _SUGGESTCONFIG, - __module__ = 'Mumble_pb2' - # @@protoc_insertion_point(class_scope:MumbleProto.SuggestConfig) - )) +SuggestConfig = _reflection.GeneratedProtocolMessageType( + "SuggestConfig", + (_message.Message,), + dict( + DESCRIPTOR=_SUGGESTCONFIG, + __module__="Mumble_pb2" + # @@protoc_insertion_point(class_scope:MumbleProto.SuggestConfig) + ), +) _sym_db.RegisterMessage(SuggestConfig) DESCRIPTOR.has_options = True -DESCRIPTOR._options = _descriptor._ParseOptions(descriptor_pb2.FileOptions(), _b('H\001')) +DESCRIPTOR._options = _descriptor._ParseOptions( + descriptor_pb2.FileOptions(), _b("H\001") +) # @@protoc_insertion_point(module_scope) diff --git a/pymumble_py3/soundoutput.py b/pymumble_py3/soundoutput.py index 1101d6b..df7339a 100644 --- a/pymumble_py3/soundoutput.py +++ b/pymumble_py3/soundoutput.py @@ -1,15 +1,16 @@ # -*- coding: utf-8 -*- -from time import time +import socket import struct import threading -import socket +from time import time + import opuslib from .constants import * from .errors import CodecNotSupportedError -from .tools import VarInt from .messages import VoiceTarget +from .tools import VarInt class SoundOutput: @@ -18,7 +19,13 @@ class SoundOutput: The buffering is the responsibility of the caller, any partial sound will be sent without delay """ - def __init__(self, mumble_object, audio_per_packet, bandwidth, opus_profile=PYMUMBLE_AUDIO_TYPE_OPUS_PROFILE): + def __init__( + self, + mumble_object, + audio_per_packet, + bandwidth, + opus_profile=PYMUMBLE_AUDIO_TYPE_OPUS_PROFILE, + ): """ audio_per_packet=packet audio duration in sec bandwidth=maximum total outgoing bandwidth @@ -47,40 +54,65 @@ def __init__(self, mumble_object, audio_per_packet, bandwidth, opus_profile=PYMU def send_audio(self): """send the available audio to the server, taking care of the timing""" - if not self.encoder or len(self.pcm) == 0: # no codec configured or no audio sent + if ( + not self.encoder or len(self.pcm) == 0 + ): # no codec configured or no audio sent return () - samples = int(self.encoder_framesize * PYMUMBLE_SAMPLERATE * 2) # number of samples in an encoder frame + samples = int( + self.encoder_framesize * PYMUMBLE_SAMPLERATE * 2 + ) # number of samples in an encoder frame - while len(self.pcm) > 0 and self.sequence_last_time + self.audio_per_packet <= time(): # audio to send and time to send it (since last packet) + while ( + len(self.pcm) > 0 + and self.sequence_last_time + self.audio_per_packet <= time() + ): # audio to send and time to send it (since last packet) current_time = time() - if self.sequence_last_time + PYMUMBLE_SEQUENCE_RESET_INTERVAL <= current_time: # waited enough, resetting sequence to 0 + if ( + self.sequence_last_time + PYMUMBLE_SEQUENCE_RESET_INTERVAL + <= current_time + ): # waited enough, resetting sequence to 0 self.sequence = 0 self.sequence_start_time = current_time self.sequence_last_time = current_time - elif self.sequence_last_time + (self.audio_per_packet * 2) <= current_time: # give some slack (2*audio_per_frame) before interrupting a continuous sequence + elif ( + self.sequence_last_time + (self.audio_per_packet * 2) <= current_time + ): # give some slack (2*audio_per_frame) before interrupting a continuous sequence # calculating sequence after a pause - self.sequence = int((current_time - self.sequence_start_time) / PYMUMBLE_SEQUENCE_DURATION) - self.sequence_last_time = self.sequence_start_time + (self.sequence * PYMUMBLE_SEQUENCE_DURATION) + self.sequence = int( + (current_time - self.sequence_start_time) + / PYMUMBLE_SEQUENCE_DURATION + ) + self.sequence_last_time = self.sequence_start_time + ( + self.sequence * PYMUMBLE_SEQUENCE_DURATION + ) else: # continuous sound self.sequence += int(self.audio_per_packet / PYMUMBLE_SEQUENCE_DURATION) - self.sequence_last_time = self.sequence_start_time + (self.sequence * PYMUMBLE_SEQUENCE_DURATION) + self.sequence_last_time = self.sequence_start_time + ( + self.sequence * PYMUMBLE_SEQUENCE_DURATION + ) - payload = bytearray() # content of the whole packet, without tcptunnel header + payload = ( + bytearray() + ) # content of the whole packet, without tcptunnel header audio_encoded = 0 # audio time already in the packet - while len(self.pcm) > 0 and audio_encoded < self.audio_per_packet: # more audio to be sent and packet not full + while ( + len(self.pcm) > 0 and audio_encoded < self.audio_per_packet + ): # more audio to be sent and packet not full self.lock.acquire() to_encode = self.pcm.pop(0) self.lock.release() - if len(to_encode) != samples: # pad to_encode if needed to match sample length - to_encode += b'\x00' * (samples - len(to_encode)) + if ( + len(to_encode) != samples + ): # pad to_encode if needed to match sample length + to_encode += b"\x00" * (samples - len(to_encode)) try: encoded = self.encoder.encode(to_encode, len(to_encode) // 2) except opuslib.exceptions.OpusError: - encoded = b'' + encoded = b"" audio_encoded += self.encoder_framesize @@ -89,24 +121,29 @@ def send_audio(self): frameheader = VarInt(len(encoded)).encode() else: frameheader = len(encoded) - if audio_encoded < self.audio_per_packet and len(self.pcm) > 0: # if not last frame for the packet, set the terminator bit - frameheader += (1 << 7) - frameheader = struct.pack('!B', frameheader) + if ( + audio_encoded < self.audio_per_packet and len(self.pcm) > 0 + ): # if not last frame for the packet, set the terminator bit + frameheader += 1 << 7 + frameheader = struct.pack("!B", frameheader) payload += frameheader + encoded # add the frame to the packet header = self.codec_type << 5 # encapsulate in audio packet sequence = VarInt(self.sequence).encode() - udppacket = struct.pack('!B', header | self.target) + sequence + payload + udppacket = struct.pack("!B", header | self.target) + sequence + payload - self.Log.debug("audio packet to send: sequence:{sequence}, type:{type}, length:{len}".format( - sequence=self.sequence, - type=self.codec_type, - len=len(udppacket) - )) + self.Log.debug( + "audio packet to send: sequence:{sequence}, type:{type}, length:{len}".format( + sequence=self.sequence, type=self.codec_type, len=len(udppacket) + ) + ) - tcppacket = struct.pack("!HL", PYMUMBLE_MSG_TYPES_UDPTUNNEL, len(udppacket)) + udppacket # encapsulate in tcp tunnel + tcppacket = ( + struct.pack("!HL", PYMUMBLE_MSG_TYPES_UDPTUNNEL, len(udppacket)) + + udppacket + ) # encapsulate in tcp tunnel while len(tcppacket) > 0: sent = self.mumble_object.control_socket.send(tcppacket) @@ -136,17 +173,25 @@ def _set_bandwidth(self): """do the calculation of the overhead and configure the actual bitrate for the codec""" if self.encoder: overhead_per_packet = 20 # IP header in bytes - overhead_per_packet += (3 * int(self.audio_per_packet / self.encoder_framesize)) # overhead per frame + overhead_per_packet += 3 * int( + self.audio_per_packet / self.encoder_framesize + ) # overhead per frame if self.mumble_object.udp_active: overhead_per_packet += 12 # UDP header else: overhead_per_packet += 20 # TCP header overhead_per_packet += 6 # TCPTunnel encapsulation - overhead_per_second = int(overhead_per_packet * 8 / self.audio_per_packet) # in bits + overhead_per_second = int( + overhead_per_packet * 8 / self.audio_per_packet + ) # in bits self.Log.debug( - "Bandwidth is {bandwidth}, downgrading to {bitrate} due to the protocol overhead".format(bandwidth=self.bandwidth, bitrate=self.bandwidth - overhead_per_second)) + "Bandwidth is {bandwidth}, downgrading to {bitrate} due to the protocol overhead".format( + bandwidth=self.bandwidth, + bitrate=self.bandwidth - overhead_per_second, + ) + ) self.encoder.bitrate = self.bandwidth - overhead_per_second @@ -155,7 +200,9 @@ def add_sound(self, pcm): if len(pcm) % 2 != 0: # check that the data is align on 16 bits raise Exception("pcm data must be mono 16 bits") - samples = int(self.encoder_framesize * PYMUMBLE_SAMPLERATE * 2) # number of samples in an encoder frame + samples = int( + self.encoder_framesize * PYMUMBLE_SAMPLERATE * 2 + ) # number of samples in an encoder frame self.lock.acquire() if len(self.pcm) and len(self.pcm[-1]) < samples: @@ -164,7 +211,7 @@ def add_sound(self, pcm): else: initial_offset = 0 for i in range(initial_offset, len(pcm), samples): - self.pcm.append(pcm[i:i + samples]) + self.pcm.append(pcm[i : i + samples]) self.lock.release() def clear_buffer(self): @@ -174,7 +221,7 @@ def clear_buffer(self): def get_buffer_size(self): """return the size of the unsent buffer in sec""" - return sum(len(chunk) for chunk in self.pcm) / 2. / PYMUMBLE_SAMPLERATE + return sum(len(chunk) for chunk in self.pcm) / 2.0 / PYMUMBLE_SAMPLERATE def set_default_codec(self, codecversion): """Set the default codec to be used to send packets""" @@ -191,7 +238,7 @@ def create_encoder(self): self.encoder_framesize = self.audio_per_packet self.codec_type = PYMUMBLE_AUDIO_TYPE_OPUS else: - raise CodecNotSupportedError('') + raise CodecNotSupportedError("") self._set_bandwidth() diff --git a/pymumble_py3/soundqueue.py b/pymumble_py3/soundqueue.py index 2510000..40e20d9 100644 --- a/pymumble_py3/soundqueue.py +++ b/pymumble_py3/soundqueue.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- import time -from threading import Lock from collections import deque +from threading import Lock import opuslib @@ -13,21 +13,22 @@ class SoundQueue: Per user storage of received audio frames Takes care of the decoding of the received audio """ + def __init__(self, mumble_object): self.mumble_object = mumble_object - + self.queue = deque() self.start_sequence = None self.start_time = None self.receive_sound = True - + self.lock = Lock() - + # to be sure, create every supported decoders for all users # sometime, clients still use a codec for a while after server request another... self.decoders = { - PYMUMBLE_AUDIO_TYPE_OPUS: opuslib.Decoder(PYMUMBLE_SAMPLERATE, 1) + PYMUMBLE_AUDIO_TYPE_OPUS: opuslib.Decoder(PYMUMBLE_SAMPLERATE, 1) } def set_receive_sound(self, value): @@ -41,9 +42,9 @@ def add(self, audio, sequence, type, target): """Add a new audio frame to the queue, after decoding""" if not self.receive_sound: return None - + self.lock.acquire() - + try: pcm = self.decoders[type].decode(audio, PYMUMBLE_READ_BUFFER_SIZE) @@ -54,27 +55,41 @@ def add(self, audio, sequence, type, target): calculated_time = self.start_time else: # calculating position in current sequence - calculated_time = self.start_time + (sequence - self.start_sequence) * PYMUMBLE_SEQUENCE_DURATION + calculated_time = ( + self.start_time + + (sequence - self.start_sequence) * PYMUMBLE_SEQUENCE_DURATION + ) - newsound = SoundChunk(pcm, sequence, len(pcm), calculated_time, type, target) + newsound = SoundChunk( + pcm, sequence, len(pcm), calculated_time, type, target + ) self.queue.appendleft(newsound) if len(self.queue) > 1 and self.queue[0].time < self.queue[1].time: # sort the audio chunk if it came out of order cpt = 0 - while cpt < len(self.queue) - 1 and self.queue[cpt].time < self.queue[cpt+1].time: - tmp = self.queue[cpt+1] - self.queue[cpt+1] = self.queue[cpt] + while ( + cpt < len(self.queue) - 1 + and self.queue[cpt].time < self.queue[cpt + 1].time + ): + tmp = self.queue[cpt + 1] + self.queue[cpt + 1] = self.queue[cpt] self.queue[cpt] = tmp self.lock.release() return newsound except KeyError: self.lock.release() - self.mumble_object.Log.error("Codec not supported (audio packet type {0})".format(type)) + self.mumble_object.Log.error( + "Codec not supported (audio packet type {0})".format(type) + ) except Exception as e: self.lock.release() - self.mumble_object.Log.error("error while decoding audio. sequence:{seq}, type:{type}. {error}".format(seq=sequence, type=type, error=str(e))) + self.mumble_object.Log.error( + "error while decoding audio. sequence:{seq}, type:{type}. {error}".format( + seq=sequence, type=type, error=str(e) + ) + ) def is_sound(self): """Boolean to check if there is a sound frame in the queue""" @@ -82,14 +97,14 @@ def is_sound(self): return True else: return False - + def get_sound(self, duration=None): """Return the first sound of the queue and discard it""" self.lock.acquire() if len(self.queue) > 0: if duration is None or self.first_sound().duration <= duration: - result = self.queue.pop() + result = self.queue.pop() else: result = self.first_sound().extract_sound(duration) else: @@ -97,20 +112,23 @@ def get_sound(self, duration=None): self.lock.release() return result - + def first_sound(self): """Return the first sound of the queue, but keep it""" if len(self.queue) > 0: return self.queue[-1] else: return None - + class SoundChunk: """ - Object that contains the actual audio frame, in PCM format""" - def __init__(self, pcm, sequence, size, calculated_time, type, target, timestamp=time.time()): - self.timestamp = timestamp # measured time of arrival of the sound + Object that contains the actual audio frame, in PCM format""" + + def __init__( + self, pcm, sequence, size, calculated_time, type, target, timestamp=time.time() + ): + self.timestamp = timestamp # measured time of arrival of the sound self.time = calculated_time # calculated time of arrival of the sound (based on sequence) self.pcm = pcm # audio data self.sequence = sequence # sequence of the packet @@ -118,23 +136,23 @@ def __init__(self, pcm, sequence, size, calculated_time, type, target, timestamp self.duration = float(size) / 2 / PYMUMBLE_SAMPLERATE # duration in sec self.type = type # type of the audio (codec) self.target = target # target of the audio - + def extract_sound(self, duration): """Extract part of the chunk, leaving a valid chunk for the remaining part""" - size = int(duration*2*PYMUMBLE_SAMPLERATE) + size = int(duration * 2 * PYMUMBLE_SAMPLERATE) result = SoundChunk( - self.pcm[:size], - self.sequence, - size, - self.time, - self.type, - self.target, - self.timestamp - ) - + self.pcm[:size], + self.sequence, + size, + self.time, + self.type, + self.target, + self.timestamp, + ) + self.pcm = self.pcm[size:] self.duration -= duration self.time += duration self.size -= size - + return result diff --git a/pymumble_py3/tools.py b/pymumble_py3/tools.py index 072d050..61f5f5c 100644 --- a/pymumble_py3/tools.py +++ b/pymumble_py3/tools.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -import struct import builtins +import struct class InvalidVarInt(Exception): @@ -9,30 +9,30 @@ class InvalidVarInt(Exception): class VarInt: """Implement the varint type used in mumble""" + def __init__(self, value=0): self.value = value - + def encode(self): """Encode an integer in the VarInt format, returning a binary string""" result = bytearray() value = abs(self.value) - - + if self.value < 0: if self.value >= -3: return struct.pack("!B", (0b11111100 | value)) else: result = struct.pack("!B", 0b11111000) - - if value <= 0x7f: - return result + struct.pack("!B", value) - elif value <= 0x3fff: + + if value <= 0x7F: + return result + struct.pack("!B", value) + elif value <= 0x3FFF: return result + struct.pack("!H", 0x8000 | value) - elif value <= 0x1fffff: - return result + struct.pack("!BH", 0xc0 | (value >> 16), 0xffff & value) - elif value <= 0xfffffff: - return result + struct.pack("!L", 0xe0000000 | value) - elif value <= 0xffffffff: + elif value <= 0x1FFFFF: + return result + struct.pack("!BH", 0xC0 | (value >> 16), 0xFFFF & value) + elif value <= 0xFFFFFFF: + return result + struct.pack("!L", 0xE0000000 | value) + elif value <= 0xFFFFFFFF: return result + struct.pack("!BL", 0b11110000, value) else: return result + struct.pack("!BQ", 0b11110100, value) @@ -43,64 +43,64 @@ def decode(self, value): is_negative = False result = None size = 0 - + if len(varint) <= 0: raise InvalidVarInt("length can't be 0") - - (first, ) = struct.unpack("!B", varint[0:1]) - + + (first,) = struct.unpack("!B", varint[0:1]) + if first & 0b11111100 == 0b11111000: is_negative = True size += 1 if len(varint) < 2: raise InvalidVarInt("Too short negative varint") varint = varint[1:] - (first, ) = struct.unpack("!B", varint[0:1]) + (first,) = struct.unpack("!B", varint[0:1]) if first & 0b10000000 == 0b00000000: - (result, ) = struct.unpack("!B", varint[0:1]) + (result,) = struct.unpack("!B", varint[0:1]) size += 1 elif first & 0b11111100 == 0b11111100: - (result, ) = struct.unpack("!B", varint[0:1]) + (result,) = struct.unpack("!B", varint[0:1]) result &= 0b00000011 is_negative = True size += 1 elif first & 0b11000000 == 0b10000000: if len(varint) < 2: raise InvalidVarInt("Too short 2 bytes varint") - (result, ) = struct.unpack("!H", varint[:2]) + (result,) = struct.unpack("!H", varint[:2]) result &= 0b0011111111111111 size += 2 elif first & 0b11100000 == 0b11000000: if len(varint) < 3: raise InvalidVarInt("Too short 3 bytes varint") - (result, ) = struct.unpack("!B", varint[0:1]) + (result,) = struct.unpack("!B", varint[0:1]) result &= 0b00011111 - (tmp, ) = struct.unpack("!H", varint[1:3]) + (tmp,) = struct.unpack("!H", varint[1:3]) result = (result << 16) + tmp size += 3 elif first & 0b11110000 == 0b11100000: if len(varint) < 4: raise InvalidVarInt("Too short 4 bytes varint") - (result, ) = struct.unpack("!L", varint[:4]) - result &= 0x0fffffff + (result,) = struct.unpack("!L", varint[:4]) + result &= 0x0FFFFFFF size += 4 elif first & 0b11111100 == 0b11110000: if len(varint) < 5: raise InvalidVarInt("Too short 5 bytes varint") - (result, ) = struct.unpack("!L", varint[1:5]) + (result,) = struct.unpack("!L", varint[1:5]) size += 5 elif first & 0b11111100 == 0b11110100: if len(varint) < 9: raise InvalidVarInt("Too short 9 bytes varint") - (result, ) = struct.unpack("!Q", varint[1:9]) + (result,) = struct.unpack("!Q", varint[1:9]) size += 9 if is_negative: - self.value = - result + self.value = -result else: self.value = result - + return size @@ -109,22 +109,18 @@ def tohex(buffer): result = "\n" cpt1 = 0 cpt2 = 0 - + for byte in buffer: result += hex(ord(byte))[2:].zfill(2) cpt1 += 1 - + if cpt1 >= 4: result += " " cpt1 = 0 cpt2 += 1 - + if cpt2 >= 10: result += "\n" cpt2 = 0 - - return result - - - + return result diff --git a/pymumble_py3/users.py b/pymumble_py3/users.py index ba28ed0..5ef9cb8 100644 --- a/pymumble_py3/users.py +++ b/pymumble_py3/users.py @@ -1,10 +1,10 @@ # -*- coding: utf-8 -*- -from .constants import * -from .errors import TextTooLongError, ImageTooBigError from threading import Lock -from . import soundqueue -from . import messages -from . import mumble_pb2 + +from . import messages, mumble_pb2, soundqueue +from .constants import * +from .errors import ImageTooBigError, TextTooLongError + class Users(dict): """Object that stores and update all connected users""" @@ -63,7 +63,9 @@ def __init__(self, mumble_object, message): self["channel_id"] = 0 self.update(message) - self.sound = soundqueue.SoundQueue(self.mumble_object) # will hold this user incoming audio + self.sound = soundqueue.SoundQueue( + self.mumble_object + ) # will hold this user incoming audio def update(self, message): """Update user state, based on an incoming message""" @@ -155,57 +157,50 @@ def undeafen(self): def suppress(self): """Disable a user""" - params = {"session": self["session"], - "suppress": True} + params = {"session": self["session"], "suppress": True} cmd = messages.ModUserState(self.mumble_object.users.myself_session, params) self.mumble_object.execute_command(cmd) def unsuppress(self): """Enable a user""" - params = {"session": self["session"], - "suppress": False} + params = {"session": self["session"], "suppress": False} cmd = messages.ModUserState(self.mumble_object.users.myself_session, params) self.mumble_object.execute_command(cmd) def recording(self): """Set the user as recording""" - params = {"session": self["session"], - "recording": True} + params = {"session": self["session"], "recording": True} cmd = messages.ModUserState(self.mumble_object.users.myself_session, params) self.mumble_object.execute_command(cmd) def unrecording(self): """Set the user as not recording""" - params = {"session": self["session"], - "recording": False} + params = {"session": self["session"], "recording": False} cmd = messages.ModUserState(self.mumble_object.users.myself_session, params) self.mumble_object.execute_command(cmd) def comment(self, comment): """Set the user comment""" - params = {"session": self["session"], - "comment": comment} + params = {"session": self["session"], "comment": comment} cmd = messages.ModUserState(self.mumble_object.users.myself_session, params) self.mumble_object.execute_command(cmd) def texture(self, texture): """Set the user texture""" - params = {"session": self["session"], - "texture": texture} + params = {"session": self["session"], "texture": texture} cmd = messages.ModUserState(self.mumble_object.users.myself_session, params) self.mumble_object.execute_command(cmd) - + def register(self): """Register the user (mostly for myself)""" - params = {"session": self["session"], - "user_id": 0} - + params = {"session": self["session"], "user_id": 0} + cmd = messages.ModUserState(self.mumble_object.users.myself_session, params) self.mumble_object.execute_command(cmd) @@ -218,7 +213,9 @@ def move_in(self, channel_id, token=None): authenticate.tokens.extend([token]) authenticate.opus = True self.mumble_object.Log.debug("sending: authenticate: %s", authenticate) - self.mumble_object.send_message(PYMUMBLE_MSG_TYPES_AUTHENTICATE, authenticate) + self.mumble_object.send_message( + PYMUMBLE_MSG_TYPES_AUTHENTICATE, authenticate + ) session = self.mumble_object.users.myself_session cmd = messages.MoveCmd(session, channel_id) diff --git a/setup.py b/setup.py index d05cf5e..4ff53d7 100644 --- a/setup.py +++ b/setup.py @@ -3,21 +3,23 @@ setup( name="pymumble", description="Python 3 version of pymumble, Mumble library used for multiple uses like making mumble bot.", - version='0.3.1', - author='Robert Hendrickx', - author_email='rober@percu.be', - maintainer='Azlux', - maintainer_email='azlux@outlook.com', - url='https://github.com/azlux/pymumble', - license='GPLv3', - packages=['pymumble_py3'], - download_url='https://github.com/azlux/pymumble/archive/pymumble_py3.zip', - classifiers=['Development Status :: 3 - Alpha', - 'Intended Audience :: Developers', - 'License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)', - 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.3', - 'Programming Language :: Python :: 3.4', - 'Programming Language :: Python :: 3.5', - 'Programming Language :: Python :: 3.6',] + version="0.3.1", + author="Robert Hendrickx", + author_email="rober@percu.be", + maintainer="Azlux", + maintainer_email="azlux@outlook.com", + url="https://github.com/azlux/pymumble", + license="GPLv3", + packages=["pymumble_py3"], + download_url="https://github.com/azlux/pymumble/archive/pymumble_py3.zip", + classifiers=[ + "Development Status :: 3 - Alpha", + "Intended Audience :: Developers", + "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.3", + "Programming Language :: Python :: 3.4", + "Programming Language :: Python :: 3.5", + "Programming Language :: Python :: 3.6", + ], ) From 0c0881e261985ab60c384f680705ba65f181db23 Mon Sep 17 00:00:00 2001 From: tikki Date: Mon, 27 Jan 2020 22:07:28 +0100 Subject: [PATCH 02/17] fix property name --- pymumble_py3/commands.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pymumble_py3/commands.py b/pymumble_py3/commands.py index 4ba1ecd..17f9b48 100644 --- a/pymumble_py3/commands.py +++ b/pymumble_py3/commands.py @@ -22,7 +22,7 @@ def new_cmd(self, cmd): self.lock.acquire() self.id += 1 - cmd.msg_id = self.id + cmd.cmd_id = self.id self.queue.appendleft(cmd) cmd.lock.acquire() From d6656bc3f9d13ead4efc70e045b3e4a71ba194cc Mon Sep 17 00:00:00 2001 From: tikki Date: Fri, 31 Jan 2020 00:38:19 +0100 Subject: [PATCH 03/17] add strict type annotations includes some minor code changes to help mypy understand the code, but does *not* yet fix any problems/broken code! --- pymumble_py3/blobs.py | 12 ++-- pymumble_py3/callbacks.py | 37 +++++++------ pymumble_py3/channels.py | 56 +++++++++++-------- pymumble_py3/commands.py | 15 +++-- pymumble_py3/errors.py | 36 ++++++------ pymumble_py3/messages.py | 29 +++++----- pymumble_py3/mumble.py | 106 +++++++++++++++++++++--------------- pymumble_py3/soundoutput.py | 89 +++++++++++++++++++----------- pymumble_py3/soundqueue.py | 50 +++++++++++------ pymumble_py3/tools.py | 8 +-- pymumble_py3/users.py | 86 ++++++++++++++++++++--------- 11 files changed, 317 insertions(+), 207 deletions(-) diff --git a/pymumble_py3/blobs.py b/pymumble_py3/blobs.py index a3d87f2..97e62d0 100644 --- a/pymumble_py3/blobs.py +++ b/pymumble_py3/blobs.py @@ -1,19 +1,21 @@ # -*- coding: utf-8 -*- import struct +import typing from .constants import * +from .mumble import Mumble from .mumble_pb2 import RequestBlob -class Blobs(dict): +class Blobs(typing.Dict[bytes, typing.Any]): """ Manage the Blob library """ - def __init__(self, mumble_object): + def __init__(self, mumble_object: Mumble): self.mumble_object = mumble_object - def get_user_comment(self, hash): + def get_user_comment(self, hash: bytes) -> None: """Request the comment of a user""" if hash in self: return @@ -22,7 +24,7 @@ def get_user_comment(self, hash): self.mumble_object.send_message(PYMUMBLE_MSG_TYPES_REQUESTBLOB, request) - def get_user_texture(self, hash): + def get_user_texture(self, hash: bytes) -> None: """Request the image of a user""" if hash in self: return @@ -32,7 +34,7 @@ def get_user_texture(self, hash): self.mumble_object.send_message(PYMUMBLE_MSG_TYPES_REQUESTBLOB, request) - def get_channel_description(self, hash): + def get_channel_description(self, hash: bytes) -> None: """Request the description/comment of a channel""" if hash in self: return diff --git a/pymumble_py3/callbacks.py b/pymumble_py3/callbacks.py index 16421ef..16d0f9e 100644 --- a/pymumble_py3/callbacks.py +++ b/pymumble_py3/callbacks.py @@ -1,12 +1,16 @@ # -*- coding: utf-8 -*- import threading +import typing from .constants import * from .errors import UnknownCallbackError +_Callback = typing.Callable[..., typing.Any] +_Callbacks = typing.List[_Callback] -class CallBacks(dict): + +class CallBacks(typing.Dict[str, typing.Optional[_Callbacks]]): """ Define the callbacks that can be registered by the application. Multiple functions can be assigned to a callback using "add_callback" @@ -15,7 +19,7 @@ class CallBacks(dict): keep processing short to avoid delays on audio transmission """ - def __init__(self): + def __init__(self) -> None: self.update( { PYMUMBLE_CLBK_CONNECTED: None, # Connection succeeded @@ -31,67 +35,68 @@ def __init__(self): } ) - def set_callback(self, callback, dest): + def set_callback(self, callback: str, dest: _Callback) -> None: """Define the function to call for a specific callback. Suppress any existing callback function""" if callback not in self: raise UnknownCallbackError('Callback "%s" does not exists.' % callback) self[callback] = [dest] - def add_callback(self, callback, dest): + def add_callback(self, callback: str, dest: _Callback) -> None: """Add the function to call for a specific callback.""" if callback not in self: raise UnknownCallbackError('Callback "%s" does not exists.' % callback) if self[callback] is None: self[callback] = list() - self[callback].append(dest) + typing.cast(_Callbacks, self[callback]).append(dest) - def get_callback(self, callback): + def get_callback(self, callback: str) -> typing.Optional[_Callbacks]: """Get the functions assigned to a callback as a list. Return None if no callback defined""" if callback not in self: raise UnknownCallbackError('Callback "%s" does not exists.' % callback) return self[callback] - def remove_callback(self, callback, dest): + def remove_callback(self, callback: str, dest: _Callback) -> None: """Remove a specific function from a specific callback. Function object must be the one added before.""" if callback not in self: raise UnknownCallbackError('Callback "%s" does not exists.' % callback) - if self[callback] is None or dest not in self[callback]: + callbacks = self[callback] + if callbacks is None or dest not in callbacks: raise UnknownCallbackError( 'Function not registered for callback "%s".' % callback ) - self[callback].remove(dest) - if len(self[callback]) == 0: - self[callback] = None + callbacks.remove(dest) + if len(callbacks) == 0: + callbacks = None - def reset_callback(self, callback): + def reset_callback(self, callback: str) -> None: """remove functions for a defined callback""" if callback not in self: raise UnknownCallbackError('Callback "%s" does not exists.' % callback) self[callback] = None - def call_callback(self, callback, *pos_parameters): + def call_callback(self, callback: str, *pos_parameters: typing.Any) -> None: """Call all the registered function for a specific callback.""" if callback not in self: raise UnknownCallbackError('Callback "%s" does not exists.' % callback) if self[callback]: - for func in self[callback]: + for func in typing.cast(_Callbacks, self[callback]): if callback is PYMUMBLE_CLBK_TEXTMESSAGERECEIVED: thr = threading.Thread(target=func, args=pos_parameters) thr.start() else: func(*pos_parameters) - def __call__(self, callback, *pos_parameters): + def __call__(self, callback: str, *pos_parameters: typing.Any) -> None: """shortcut to be able to call the dict element as a function""" self.call_callback(callback, *pos_parameters) - def get_callbacks_list(self): + def get_callbacks_list(self) -> typing.List[str]: """Get a list of all callbacks""" return list(self.keys()) diff --git a/pymumble_py3/channels.py b/pymumble_py3/channels.py index 9ffc69d..91b3f3d 100644 --- a/pymumble_py3/channels.py +++ b/pymumble_py3/channels.py @@ -1,23 +1,29 @@ # -*- coding: utf-8 -*- +import typing from threading import Lock from . import messages +from .callbacks import CallBacks from .constants import * from .errors import ImageTooBigError, TextTooLongError, UnknownChannelError +from .mumble import Mumble +from .users import User +ProtoMessage = typing.Any -class Channels(dict): + +class Channels(typing.Dict[int, Channel]): """ Object that Stores all channels and their properties. """ - def __init__(self, mumble_object, callbacks): + def __init__(self, mumble_object: Mumble, callbacks: CallBacks): self.mumble_object = mumble_object self.callbacks = callbacks self.lock = Lock() - def update(self, message): + def update(self, message: ProtoMessage) -> None: # type: ignore """Update the channel information based on an incoming message""" self.lock.acquire() @@ -32,7 +38,7 @@ def update(self, message): self.lock.release() - def remove(self, id): + def remove(self, id: int) -> None: """Delete a channel when server signal the channel is removed""" self.lock.acquire() @@ -43,7 +49,7 @@ def remove(self, id): self.lock.release() - def find_by_tree(self, tree): + def find_by_tree(self, tree: typing.Iterable[str]) -> Channel: """Find a channel by its full path (a list with an element for each leaf)""" if not getattr(tree, "__iter__", False): tree = tree # function use argument as a list @@ -64,7 +70,7 @@ def find_by_tree(self, tree): return current - def get_childs(self, channel): + def get_childs(self, channel: Channel) -> typing.List[Channel]: """Get the child channels of a channel in a list""" childs = list() @@ -74,7 +80,7 @@ def get_childs(self, channel): return childs - def get_descendants(self, channel): + def get_descendants(self, channel: Channel) -> typing.List[typing.List[Channel]]: """Get all the descendant of a channel, in nested lists""" descendants = list() @@ -83,9 +89,9 @@ def get_descendants(self, channel): return descendants - def get_tree(self, channel): + def get_tree(self, channel: Channel) -> typing.List[Channel]: """Get the whole list of channels, in a multidimensional list""" - tree = list() + tree: typing.List[Channel] = list() current = channel @@ -97,7 +103,7 @@ def get_tree(self, channel): return tree - def find_by_name(self, name): + def find_by_name(self, name: str) -> Channel: """Find a channel by name. Stop on the first that match""" if name == "": return self[0] @@ -109,33 +115,33 @@ def find_by_name(self, name): err = "Channel %s does not exists" % name raise UnknownChannelError(err) - def new_channel(self, parent, name, temporary=True): + def new_channel(self, parent: int, name: str, temporary: bool = True) -> None: cmd = messages.CreateChannel(parent, name, temporary) self.mumble_object.execute_command(cmd) - def remove_channel(self, channel_id): + def remove_channel(self, channel_id: int) -> None: cmd = messages.RemoveChannel(channel_id) self.mumble_object.execute_command(cmd) -class Channel(dict): +class Channel(typing.Dict[str, typing.Any]): """ Stores information about one specific channel """ - def __init__(self, mumble_object, message): + def __init__(self, mumble_object: Mumble, message: ProtoMessage) -> None: self.mumble_object = mumble_object self["channel_id"] = message.channel_id self.update(message) - def get_users(self): + def get_users(self) -> typing.List[User]: users = [] for user in list(self.mumble_object.users.values()): if user["channel_id"] == self["channel_id"]: users.append(user) return users - def update(self, message): + def update(self, message: ProtoMessage) -> typing.Dict[str, typing.Any]: # type: ignore """Update a channel based on an incoming message""" actions = dict() @@ -157,10 +163,12 @@ def update(self, message): return actions # return a dict with updates performed, useful for the callback functions - def get_id(self): - return self["channel_id"] + def get_id(self) -> int: + return typing.cast(int, self["channel_id"]) - def update_field(self, name, field): + def update_field( + self, name: str, field: typing.Any + ) -> typing.Dict[str, typing.Any]: """Update one value""" actions = dict() if name not in self or self[name] != field: @@ -169,25 +177,26 @@ def update_field(self, name, field): return actions # return a dict with updates performed, useful for the callback functions - def get_property(self, property): + def get_property(self, property: str) -> typing.Optional[typing.Any]: if property in self: return self[property] else: return None - def move_in(self, session=None): + def move_in(self, session: typing.Optional[int] = None) -> None: """Ask to move a session in a specific channel. By default move pymumble own session""" if session is None: session = self.mumble_object.users.myself_session + assert session is not None cmd = messages.MoveCmd(session, self["channel_id"]) self.mumble_object.execute_command(cmd) - def remove(self): + def remove(self) -> None: cmd = messages.RemoveChannel(self["channel_id"]) self.mumble_object.execute_command(cmd) - def send_text_message(self, message): + def send_text_message(self, message: str) -> None: """Send a text message to the channel.""" # TODO: This check should be done inside execute_command() @@ -201,6 +210,7 @@ def send_text_message(self, message): raise TextTooLongError(self.mumble_object.get_max_message_length()) session = self.mumble_object.users.myself_session + assert session is not None cmd = messages.TextMessage(session, self["channel_id"], message) self.mumble_object.execute_command(cmd) diff --git a/pymumble_py3/commands.py b/pymumble_py3/commands.py index 17f9b48..bb8da66 100644 --- a/pymumble_py3/commands.py +++ b/pymumble_py3/commands.py @@ -1,7 +1,10 @@ # -*- coding: utf-8 -*- +import typing from collections import deque from threading import Lock +from .messages import Cmd + class Commands: """ @@ -10,14 +13,14 @@ class Commands: Each command has it's own lock semaphore to signal is received an answer """ - def __init__(self): + def __init__(self) -> None: self.id = 0 - self.queue = deque() + self.queue: typing.Deque[Cmd] = deque() self.lock = Lock() - def new_cmd(self, cmd): + def new_cmd(self, cmd: Cmd) -> Lock: """Add a command to the queue""" self.lock.acquire() @@ -29,14 +32,14 @@ def new_cmd(self, cmd): self.lock.release() return cmd.lock - def is_cmd(self): + def is_cmd(self) -> bool: """Check if there is a command waiting in the queue""" if len(self.queue) > 0: return True else: return False - def pop_cmd(self): + def pop_cmd(self) -> typing.Optional[Cmd]: """Return the next command and remove it from the queue""" self.lock.acquire() @@ -48,6 +51,6 @@ def pop_cmd(self): self.lock.release() return None - def answer(self, cmd): + def answer(self, cmd: Cmd) -> None: """Unlock the command to signal it's completion""" cmd.lock.release() diff --git a/pymumble_py3/errors.py b/pymumble_py3/errors.py index 1bb5121..0c8933f 100644 --- a/pymumble_py3/errors.py +++ b/pymumble_py3/errors.py @@ -4,88 +4,88 @@ class CodecNotSupportedError(Exception): """Thrown when receiving an audio packet from an unsupported codec""" - def __init__(self, value): + def __init__(self, value: str): self.value = value - def __str__(self): + def __str__(self) -> str: return repr(self.value) class ConnectionRejectedError(Exception): """Thrown when server reject the connection""" - def __init__(self, value): + def __init__(self, value: str): self.value = value - def __str__(self): + def __str__(self) -> str: return repr(self.value) class InvalidFormatError(Exception): """Thrown when receiving a packet not understood""" - def __init__(self, value): + def __init__(self, value: str): self.value = value - def __str__(self): + def __str__(self) -> str: return repr(self.value) class UnknownCallbackError(Exception): """Thrown when asked for an unknown callback""" - def __init__(self, value): + def __init__(self, value: str): self.value = value - def __str__(self): + def __str__(self) -> str: return repr(self.value) class UnknownChannelError(Exception): """Thrown when using an unknown channel""" - def __init__(self, value): + def __init__(self, value: str): self.value = value - def __str__(self): + def __str__(self) -> str: return repr(self.value) class InvalidSoundDataError(Exception): """Thrown when trying to send an invalid audio pcm data""" - def __init__(self, value): + def __init__(self, value: str): self.value = value - def __str__(self): + def __str__(self) -> str: return repr(self.value) class InvalidVarInt(Exception): """Thrown when trying to decode an invalid varint""" - def __init__(self, value): + def __init__(self, value: str): self.value = value - def __str__(self): + def __str__(self) -> str: return repr(self.value) class TextTooLongError(Exception): """Thrown when trying to send a message which is longer than allowed""" - def __init__(self, value): + def __init__(self, value: int): self.value = value - def __str__(self): + def __str__(self) -> str: return "Maximum Text allowed length: {}".format(self.value) class ImageTooBigError(Exception): """Thrown when trying to send a message or image which is longer than allowed""" - def __init__(self, value): + def __init__(self, value: int): self.value = value - def __str__(self): + def __str__(self) -> str: return "Maximum Text/Image allowed length: {}".format(self.value) diff --git a/pymumble_py3/messages.py b/pymumble_py3/messages.py index bb7a80a..79c68d0 100644 --- a/pymumble_py3/messages.py +++ b/pymumble_py3/messages.py @@ -1,4 +1,5 @@ # -*- coding: utf-8 -*- +import typing from threading import Lock from .constants import * @@ -10,19 +11,19 @@ class Cmd: usually to forward to the murmur server """ - def __init__(self): - self.cmd_id = None + def __init__(self) -> None: + self.cmd_id: typing.Optional[int] = None self.lock = Lock() - self.cmd = None - self.parameters = None - self.response = None + self.cmd: typing.Union[str, int, None] = None + self.parameters: typing.Optional[typing.Mapping[str, typing.Any]] = None + self.response: typing.Optional[bool] = None class MoveCmd(Cmd): """Command to move a user from channel""" - def __init__(self, session, channel_id): + def __init__(self, session: int, channel_id: int) -> None: Cmd.__init__(self) self.cmd = PYMUMBLE_CMD_MOVE @@ -32,7 +33,7 @@ def __init__(self, session, channel_id): class TextMessage(Cmd): """Command to send a text message""" - def __init__(self, session, channel_id, message): + def __init__(self, session: int, channel_id: int, message: str) -> None: Cmd.__init__(self) self.cmd = PYMUMBLE_CMD_TEXTMESSAGE @@ -46,7 +47,7 @@ def __init__(self, session, channel_id, message): class TextPrivateMessage(Cmd): """Command to send a private text message""" - def __init__(self, session, message): + def __init__(self, session: int, message: str) -> None: Cmd.__init__(self) self.cmd = PYMUMBLE_CMD_TEXTPRIVATEMESSAGE @@ -56,9 +57,7 @@ def __init__(self, session, message): class ModUserState(Cmd): """Command to change a user state""" - def __init__(self, session, params): - Cmd.__init__(self) - + def __init__(self, session: int, params: typing.Mapping[str, typing.Any]) -> None: self.cmd = PYMUMBLE_CMD_MODUSERSTATE self.parameters = params @@ -66,7 +65,7 @@ def __init__(self, session, params): class CreateChannel(Cmd): """Command to create channel""" - def __init__(self, parent, name, temporary): + def __init__(self, parent: int, name: str, temporary: bool) -> None: Cmd.__init__(self) self.cmd = PYMUMBLE_MSG_TYPES_CHANNELSTATE @@ -76,7 +75,7 @@ def __init__(self, parent, name, temporary): class RemoveChannel(Cmd): """Command to create channel""" - def __init__(self, channel_id): + def __init__(self, channel_id: int) -> None: Cmd.__init__(self) self.cmd = PYMUMBLE_MSG_TYPES_CHANNELREMOVE @@ -86,7 +85,9 @@ def __init__(self, channel_id): class VoiceTarget(Cmd): """Command to create a whisper""" - def __init__(self, voice_id, targets): + def __init__( + self, voice_id: int, targets: typing.Sequence[typing.Mapping[str, typing.Any]] + ) -> None: Cmd.__init__(self) self.cmd = PYMUMBLE_MSG_TYPES_VOICETARGET diff --git a/pymumble_py3/mumble.py b/pymumble_py3/mumble.py index ffbb188..e7b757a 100644 --- a/pymumble_py3/mumble.py +++ b/pymumble_py3/mumble.py @@ -6,12 +6,14 @@ import struct import threading import time +import typing from . import ( blobs, callbacks, channels, commands, + messages, mumble_pb2, soundoutput, tools, @@ -20,6 +22,8 @@ from .constants import * from .errors import * +ProtoMessage = typing.Any + class Mumble(threading.Thread): """ @@ -29,16 +33,16 @@ class Mumble(threading.Thread): def __init__( self, - host, - user, - port=64738, - password="", - certfile=None, - keyfile=None, - reconnect=False, - tokens=[], - debug=False, - ): + host: str, + user: str, + port: int = 64738, + password: str = "", + certfile: typing.Optional[str] = None, + keyfile: typing.Optional[str] = None, + reconnect: bool = False, + tokens: typing.List[str] = [], + debug: bool = False, + ) -> None: """ host=mumble server hostname or address port=mumble server port @@ -70,7 +74,9 @@ def __init__( self.parent_thread = ( threading.current_thread() ) # main thread of the calling application - self.mumble_thread = None # thread of the mumble client library + self.mumble_thread: typing.Optional[ + threading.Thread + ] = None # thread of the mumble client library self.host = host self.port = port @@ -104,18 +110,18 @@ def __init__( ) # released when the connection is fully established with the server self.ready_lock.acquire() - def init_connection(self): + def init_connection(self) -> None: """Initialize variables that are local to a connection, (needed if the client automatically reconnect)""" self.ready_lock.acquire( False ) # reacquire the ready-lock in case of reconnection - self.connected = PYMUMBLE_CONN_STATE_NOT_CONNECTED - self.control_socket = None + self.connected: int = PYMUMBLE_CONN_STATE_NOT_CONNECTED + self.control_socket: typing.Optional[socket.socket] = None self.media_socket = None # Not implemented - for UDP media self.bandwidth = PYMUMBLE_BANDWIDTH # reset the outgoing bandwidth to it's default before connecting - self.server_max_bandwidth = None + self.server_max_bandwidth: typing.Optional[int] = None self.udp_active = False # defaults according to https://wiki.mumble.info/wiki/Murmur.ini @@ -142,7 +148,7 @@ def init_connection(self): self.receive_buffer = bytes() # initialize the control connection input buffer - def run(self): + def run(self) -> None: """Connect to the server and start the loop in its thread. Retry if requested""" self.mumble_thread = threading.current_thread() @@ -169,7 +175,7 @@ def run(self): time.sleep(PYMUMBLE_CONNECTION_RETRY_INTERVAL) - def connect(self): + def connect(self) -> int: """Connect to the server""" # Get IPv4/IPv6 server address server_info = socket.getaddrinfo(self.host, self.port, type=socket.SOCK_STREAM) @@ -225,7 +231,7 @@ def connect(self): self.connected = PYMUMBLE_CONN_STATE_AUTHENTICATING return self.connected - def loop(self): + def loop(self) -> None: """ Main loop waiting for a message from the server for maximum self.loop_rate time @@ -252,8 +258,9 @@ def loop(self): if self.connected == PYMUMBLE_CONN_STATE_CONNECTED: while self.commands.is_cmd(): + cmd = typing.cast(messages.Cmd, self.commands.pop_cmd()) self.treat_command( - self.commands.pop_cmd() + cmd ) # send the commands coming from the application to the server self.sound_output.send_audio() # send outgoing audio if available @@ -267,10 +274,10 @@ def loop(self): ): # something to be read on the control socket self.read_control_messages() elif self.control_socket in xlist: # socket was closed - self.control_socket.close() + typing.cast(socket.socket, self.control_socket).close() self.connected = PYMUMBLE_CONN_STATE_NOT_CONNECTED - def ping(self): + def ping(self) -> None: """Send the keepalive through available channels""" ping = mumble_pb2.Ping() ping.timestamp = int(time.time()) @@ -288,7 +295,7 @@ def ping(self): self.Log.debug("Ping too long ! Disconnected ?") self.connected = PYMUMBLE_CONN_STATE_NOT_CONNECTED - def ping_response(self, mess): + def ping_response(self, mess: ProtoMessage) -> None: self.ping_stats["last_rcv"] = int(time.time() * 1000) ping = int(time.time() * 1000) - self.ping_stats["time_send"] old_avg = self.ping_stats["avg"] @@ -307,23 +314,26 @@ def ping_response(self, mess): self.ping_stats["avg"] = new_avg self.ping_stats["nb"] += 1 - def send_message(self, type, message): + def send_message(self, type: int, message: ProtoMessage) -> None: """Send a control message to the server""" packet = ( struct.pack("!HL", type, message.ByteSize()) + message.SerializeToString() ) - while len(packet) > 0: + while len(packet) > 0 and self.control_socket: self.Log.debug("sending message") sent = self.control_socket.send(packet) if sent < 0: raise socket.error("Server socket error") packet = packet[sent:] - def read_control_messages(self): + def read_control_messages(self) -> None: """Read control messages coming from the server""" # from tools import tohex # for debugging + if not self.control_socket: + return + try: buffer = self.control_socket.recv(PYMUMBLE_READ_BUFFER_SIZE) self.receive_buffer += buffer @@ -351,7 +361,7 @@ def read_control_messages(self): self.dispatch_control_message(type, message) - def dispatch_control_message(self, type, message): + def dispatch_control_message(self, type: int, message: bytes) -> None: """Dispatch control messages based on their type""" self.Log.debug("dispatch control message") if ( @@ -518,7 +528,7 @@ def dispatch_control_message(self, type, message): elif items[0] == "image_message_length": self.server_max_image_message_length = int(items[1].strip()) - def set_bandwidth(self, bandwidth): + def set_bandwidth(self, bandwidth: int) -> None: """Set the total allowed outgoing bandwidth""" if ( self.server_max_bandwidth is not None @@ -532,7 +542,7 @@ def set_bandwidth(self, bandwidth): self.bandwidth ) # communicate the update to the outgoing audio manager - def sound_received(self, message): + def sound_received(self, message: bytes) -> None: """Manage a received sound message""" # from tools import tohex # for debugging @@ -567,10 +577,10 @@ def sound_received(self, message): pos < len(message) ) and not terminator: # get the audio frames one by one if type == PYMUMBLE_AUDIO_TYPE_OPUS: - size = tools.VarInt() # OPUS use varint for the frame length + varsize = tools.VarInt() # OPUS use varint for the frame length - pos += size.decode(message[pos : pos + 10]) - size = size.value + pos += varsize.decode(message[pos : pos + 10]) + size = varsize.value if not (size & 0x2000): # terminator is 0x2000 in the resulting int. terminator = True # should actually always be 0 as OPUS can use variable length audio frames @@ -601,6 +611,8 @@ def sound_received(self, message): message[pos : pos + size], sequence.value, type, target ) # add the sound to the user's sound queue + assert newsound is not None + self.callbacks( PYMUMBLE_CLBK_SOUNDRECEIVED, self.users[session.value], newsound ) @@ -630,42 +642,44 @@ def sound_received(self, message): # TODO: get position info - def set_application_string(self, string): + def set_application_string(self, string: str) -> None: """Set the application name, that can be viewed by other clients on the server""" self.application = string - def set_loop_rate(self, rate): + def set_loop_rate(self, rate: float) -> None: """Set the current main loop rate (pause per iteration)""" self.loop_rate = rate - def get_loop_rate(self): + def get_loop_rate(self) -> float: """Get the current main loop rate (pause per iteration)""" return self.loop_rate - def set_codec_profile(self, profile): + def set_codec_profile(self, profile: str) -> None: """set the audio profile""" if profile in ["audio", "voip"]: self.__opus_profile = profile else: raise ValueError("Unknown profile: " + str(profile)) - def get_codec_profile(self): + def get_codec_profile(self) -> str: """return the audio profile string""" return self.__opus_profile - def set_receive_sound(self, value): + def set_receive_sound(self, value: bool) -> None: """Enable or disable the management of incoming sounds""" if value: self.receive_sound = True else: self.receive_sound = False - def is_ready(self): + def is_ready(self) -> None: """Wait for the connection to be fully completed. To be used in the main thread""" self.ready_lock.acquire() self.ready_lock.release() - def execute_command(self, cmd, blocking=True): + def execute_command( + self, cmd: messages.Cmd, blocking: bool = True + ) -> threading.Lock: """Create a command to be sent to the server. To be used in the main thread""" self.is_ready() @@ -679,8 +693,9 @@ def execute_command(self, cmd, blocking=True): # TODO: manage a timeout for blocking commands. Currently, no command actually waits for the server to execute # The result of these commands should actually be checked against incoming server updates - def treat_command(self, cmd): + def treat_command(self, cmd: messages.Cmd) -> None: """Send the awaiting commands to the server. Used in the pymumble thread.""" + assert cmd.parameters is not None if cmd.cmd == PYMUMBLE_CMD_MOVE: userstate = mumble_pb2.UserState() userstate.session = cmd.parameters["session"] @@ -723,12 +738,12 @@ def treat_command(self, cmd): textvoicetarget.id = cmd.parameters["id"] targets = [] if cmd.parameters["id"] == 1: - voicetarget = mumble_pb2.VoiceTarget.Target() + voicetarget = mumble_pb2.VoiceTarget.Target() # type: ignore voicetarget.channel_id = cmd.parameters["targets"][0] targets.append(voicetarget) else: for target in cmd.parameters["targets"]: - voicetarget = mumble_pb2.VoiceTarget.Target() + voicetarget = mumble_pb2.VoiceTarget.Target() # type: ignore voicetarget.session.append(target) targets.append(voicetarget) textvoicetarget.targets.extend(targets) @@ -762,11 +777,12 @@ def treat_command(self, cmd): cmd.response = True self.commands.answer(cmd) - def get_max_message_length(self): + def get_max_message_length(self) -> int: return self.server_max_message_length - def get_max_image_length(self): + def get_max_image_length(self) -> int: return self.server_max_image_message_length - def my_channel(self): + def my_channel(self) -> channels.Channel: + assert self.users.myself is not None return self.channels[self.users.myself["channel_id"]] diff --git a/pymumble_py3/soundoutput.py b/pymumble_py3/soundoutput.py index df7339a..74e2bdc 100644 --- a/pymumble_py3/soundoutput.py +++ b/pymumble_py3/soundoutput.py @@ -3,6 +3,7 @@ import socket import struct import threading +import typing from time import time import opuslib @@ -10,8 +11,11 @@ from .constants import * from .errors import CodecNotSupportedError from .messages import VoiceTarget +from .mumble import Mumble from .tools import VarInt +ProtoMessage = typing.Any + class SoundOutput: """ @@ -21,10 +25,10 @@ class SoundOutput: def __init__( self, - mumble_object, - audio_per_packet, - bandwidth, - opus_profile=PYMUMBLE_AUDIO_TYPE_OPUS_PROFILE, + mumble_object: Mumble, + audio_per_packet: float, + bandwidth: int, + opus_profile: str = PYMUMBLE_AUDIO_TYPE_OPUS_PROFILE, ): """ audio_per_packet=packet audio duration in sec @@ -34,30 +38,42 @@ def __init__( self.Log = self.mumble_object.Log - self.pcm = [] + self.pcm: typing.List[bytearray] = [] self.lock = threading.Lock() - self.codec = None # codec currently requested by the server - self.encoder = None # codec instance currently used to encode - self.encoder_framesize = None # size of an audio frame for the current codec (OPUS=audio_per_packet, CELT=0.01s) + self.codec: typing.Optional[ + ProtoMessage + ] = None # codec currently requested by the server + self.encoder: typing.Optional[ + opuslib.Encoder + ] = None # codec instance currently used to encode + self.encoder_framesize: typing.Optional[ + float + ] = None # size of an audio frame for the current codec (OPUS=audio_per_packet, CELT=0.01s) self.opus_profile = opus_profile self.set_audio_per_packet(audio_per_packet) self.set_bandwidth(bandwidth) - self.codec_type = None # codec type number to be used in audio packets + self.codec_type: typing.Optional[ + int + ] = None # codec type number to be used in audio packets self.target = 0 # target is not implemented yet, so always 0 - self.sequence_start_time = 0 # time of sequence 1 - self.sequence_last_time = 0 # time of the last emitted packet + self.sequence_start_time = 0.0 # time of sequence 1 + self.sequence_last_time = 0.0 # time of the last emitted packet self.sequence = 0 # current sequence - def send_audio(self): + def send_audio(self) -> None: """send the available audio to the server, taking care of the timing""" if ( not self.encoder or len(self.pcm) == 0 ): # no codec configured or no audio sent - return () + return + + assert self.encoder_framesize is not None + assert self.codec_type is not None + assert self.mumble_object.control_socket is not None samples = int( self.encoder_framesize * PYMUMBLE_SAMPLERATE * 2 @@ -95,7 +111,7 @@ def send_audio(self): payload = ( bytearray() ) # content of the whole packet, without tcptunnel header - audio_encoded = 0 # audio time already in the packet + audio_encoded = 0.0 # audio time already in the packet while ( len(self.pcm) > 0 and audio_encoded < self.audio_per_packet @@ -120,12 +136,12 @@ def send_audio(self): if self.codec_type == PYMUMBLE_AUDIO_TYPE_OPUS: frameheader = VarInt(len(encoded)).encode() else: - frameheader = len(encoded) + encoded_len = len(encoded) if ( audio_encoded < self.audio_per_packet and len(self.pcm) > 0 ): # if not last frame for the packet, set the terminator bit - frameheader += 1 << 7 - frameheader = struct.pack("!B", frameheader) + encoded_len += 1 << 7 + frameheader = struct.pack("!B", encoded_len) payload += frameheader + encoded # add the frame to the packet @@ -151,27 +167,29 @@ def send_audio(self): raise socket.error("Server socket error") tcppacket = tcppacket[sent:] - def get_audio_per_packet(self): + def get_audio_per_packet(self) -> float: """return the configured length of a audio packet (in ms)""" return self.audio_per_packet - def set_audio_per_packet(self, audio_per_packet): + def set_audio_per_packet(self, audio_per_packet: float) -> None: """set the length of an audio packet (in ms)""" self.audio_per_packet = audio_per_packet self.create_encoder() - def get_bandwidth(self): + def get_bandwidth(self) -> int: """get the configured bandwidth for the audio output""" return self.bandwidth - def set_bandwidth(self, bandwidth): + def set_bandwidth(self, bandwidth: int) -> None: """set the bandwidth for the audio output""" self.bandwidth = bandwidth self._set_bandwidth() - def _set_bandwidth(self): + def _set_bandwidth(self) -> None: """do the calculation of the overhead and configure the actual bitrate for the codec""" if self.encoder: + assert self.encoder_framesize is not None + overhead_per_packet = 20 # IP header in bytes overhead_per_packet += 3 * int( self.audio_per_packet / self.encoder_framesize @@ -195,11 +213,14 @@ def _set_bandwidth(self): self.encoder.bitrate = self.bandwidth - overhead_per_second - def add_sound(self, pcm): + def add_sound(self, pcm: bytearray) -> None: """add sound to be sent (in PCM mono 16 bits signed format)""" if len(pcm) % 2 != 0: # check that the data is align on 16 bits raise Exception("pcm data must be mono 16 bits") + if self.encoder_framesize is None: + raise Exception("encoder not initialized") + samples = int( self.encoder_framesize * PYMUMBLE_SAMPLERATE * 2 ) # number of samples in an encoder frame @@ -214,24 +235,24 @@ def add_sound(self, pcm): self.pcm.append(pcm[i : i + samples]) self.lock.release() - def clear_buffer(self): + def clear_buffer(self) -> None: self.lock.acquire() self.pcm = [] self.lock.release() - def get_buffer_size(self): + def get_buffer_size(self) -> float: """return the size of the unsent buffer in sec""" return sum(len(chunk) for chunk in self.pcm) / 2.0 / PYMUMBLE_SAMPLERATE - def set_default_codec(self, codecversion): + def set_default_codec(self, codecversion: ProtoMessage) -> None: """Set the default codec to be used to send packets""" self.codec = codecversion self.create_encoder() - def create_encoder(self): + def create_encoder(self) -> None: """create the encoder instance, and set related constants""" if not self.codec: - return () + return if self.codec.opus: self.encoder = opuslib.Encoder(PYMUMBLE_SAMPLERATE, 1, self.opus_profile) @@ -242,18 +263,22 @@ def create_encoder(self): self._set_bandwidth() - def set_whisper(self, target_id, channel=False): + def set_whisper( + self, target_id: typing.Union[typing.List[int], int], channel: bool = False + ) -> None: if not target_id: return if type(target_id) is int: - target_id = [target_id] + targets = [typing.cast(int, target_id)] + else: + targets = typing.cast(typing.List[int], target_id) self.target = 2 if channel: self.target = 1 - cmd = VoiceTarget(self.target, target_id) + cmd = VoiceTarget(self.target, targets) self.mumble_object.execute_command(cmd) - def remove_whisper(self): + def remove_whisper(self) -> None: self.target = 0 cmd = VoiceTarget(self.target, []) self.mumble_object.execute_command(cmd) diff --git a/pymumble_py3/soundqueue.py b/pymumble_py3/soundqueue.py index 40e20d9..42ded74 100644 --- a/pymumble_py3/soundqueue.py +++ b/pymumble_py3/soundqueue.py @@ -1,11 +1,13 @@ # -*- coding: utf-8 -*- import time +import typing from collections import deque from threading import Lock import opuslib from .constants import * +from .mumble import Mumble class SoundQueue: @@ -14,12 +16,12 @@ class SoundQueue: Takes care of the decoding of the received audio """ - def __init__(self, mumble_object): + def __init__(self, mumble_object: Mumble): self.mumble_object = mumble_object - self.queue = deque() - self.start_sequence = None - self.start_time = None + self.queue: typing.Deque[SoundChunk] = deque() + self.start_sequence: typing.Optional[int] = None + self.start_time: typing.Optional[float] = None self.receive_sound = True @@ -27,18 +29,20 @@ def __init__(self, mumble_object): # to be sure, create every supported decoders for all users # sometime, clients still use a codec for a while after server request another... - self.decoders = { + self.decoders: typing.Dict[int, opuslib.Decoder] = { PYMUMBLE_AUDIO_TYPE_OPUS: opuslib.Decoder(PYMUMBLE_SAMPLERATE, 1) } - def set_receive_sound(self, value): + def set_receive_sound(self, value: bool) -> None: """Define if received sounds must be kept or discarded in this specific queue (user)""" if value: self.receive_sound = True else: self.receive_sound = False - def add(self, audio, sequence, type, target): + def add( + self, audio: bytes, sequence: int, type: int, target: int + ) -> typing.Optional["SoundChunk"]: """Add a new audio frame to the queue, after decoding""" if not self.receive_sound: return None @@ -56,7 +60,7 @@ def add(self, audio, sequence, type, target): else: # calculating position in current sequence calculated_time = ( - self.start_time + typing.cast(float, self.start_time) + (sequence - self.start_sequence) * PYMUMBLE_SEQUENCE_DURATION ) @@ -90,30 +94,33 @@ def add(self, audio, sequence, type, target): seq=sequence, type=type, error=str(e) ) ) + return None - def is_sound(self): + def is_sound(self) -> bool: """Boolean to check if there is a sound frame in the queue""" if len(self.queue) > 0: return True else: return False - def get_sound(self, duration=None): + def get_sound( + self, duration: typing.Optional[float] = None + ) -> typing.Optional["SoundChunk"]: """Return the first sound of the queue and discard it""" self.lock.acquire() - if len(self.queue) > 0: - if duration is None or self.first_sound().duration <= duration: + sound = self.first_sound() + result: typing.Optional["SoundChunk"] = None + if sound is not None: + if duration is None or sound.duration <= duration: result = self.queue.pop() else: - result = self.first_sound().extract_sound(duration) - else: - result = None + result = sound.extract_sound(duration) self.lock.release() return result - def first_sound(self): + def first_sound(self) -> typing.Optional["SoundChunk"]: """Return the first sound of the queue, but keep it""" if len(self.queue) > 0: return self.queue[-1] @@ -126,7 +133,14 @@ class SoundChunk: Object that contains the actual audio frame, in PCM format""" def __init__( - self, pcm, sequence, size, calculated_time, type, target, timestamp=time.time() + self, + pcm: bytes, + sequence: int, + size: int, + calculated_time: float, + type: int, + target: int, + timestamp: float = time.time(), ): self.timestamp = timestamp # measured time of arrival of the sound self.time = calculated_time # calculated time of arrival of the sound (based on sequence) @@ -137,7 +151,7 @@ def __init__( self.type = type # type of the audio (codec) self.target = target # target of the audio - def extract_sound(self, duration): + def extract_sound(self, duration: float) -> "SoundChunk": """Extract part of the chunk, leaving a valid chunk for the remaining part""" size = int(duration * 2 * PYMUMBLE_SAMPLERATE) result = SoundChunk( diff --git a/pymumble_py3/tools.py b/pymumble_py3/tools.py index 61f5f5c..dbe4b4f 100644 --- a/pymumble_py3/tools.py +++ b/pymumble_py3/tools.py @@ -10,10 +10,10 @@ class InvalidVarInt(Exception): class VarInt: """Implement the varint type used in mumble""" - def __init__(self, value=0): + def __init__(self, value: int = 0): self.value = value - def encode(self): + def encode(self) -> bytearray: """Encode an integer in the VarInt format, returning a binary string""" result = bytearray() value = abs(self.value) @@ -37,7 +37,7 @@ def encode(self): else: return result + struct.pack("!BQ", 0b11110100, value) - def decode(self, value): + def decode(self, value: bytes) -> int: """Decode a VarInt contained in a binary string, returning an integer""" varint = value is_negative = False @@ -104,7 +104,7 @@ def decode(self, value): return size -def tohex(buffer): +def tohex(buffer: str) -> str: """Used for debugging. Output a sting in hex format""" result = "\n" cpt1 = 0 diff --git a/pymumble_py3/users.py b/pymumble_py3/users.py index 5ef9cb8..2f28b73 100644 --- a/pymumble_py3/users.py +++ b/pymumble_py3/users.py @@ -1,23 +1,32 @@ # -*- coding: utf-8 -*- +import typing from threading import Lock from . import messages, mumble_pb2, soundqueue +from .callbacks import CallBacks from .constants import * from .errors import ImageTooBigError, TextTooLongError +from .mumble import Mumble +ProtoMessage = typing.Any -class Users(dict): + +class Users(typing.Dict[int, User]): """Object that stores and update all connected users""" - def __init__(self, mumble_object, callbacks): + def __init__(self, mumble_object: Mumble, callbacks: CallBacks): self.mumble_object = mumble_object self.callbacks = callbacks - self.myself = None # user object of the pymumble thread itself - self.myself_session = None # session number of the pymumble thread itself + self.myself: typing.Optional[ + User + ] = None # user object of the pymumble thread itself + self.myself_session: typing.Optional[ + int + ] = None # session number of the pymumble thread itself self.lock = Lock() - def update(self, message): + def update(self, message: ProtoMessage) -> None: # type: ignore """Update a user information, based on the incoming message""" self.lock.acquire() @@ -32,7 +41,7 @@ def update(self, message): self.lock.release() - def remove(self, message): + def remove(self, message: ProtoMessage) -> None: """Remove a user object based on server info""" self.lock.acquire() @@ -43,21 +52,21 @@ def remove(self, message): self.lock.release() - def set_myself(self, session): + def set_myself(self, session: int) -> None: """Set the "myself" user""" self.myself_session = session if session in self: self.myself = self[session] - def count(self): + def count(self) -> int: """Return the count of connected users""" return len(self) -class User(dict): +class User(typing.Dict[str, typing.Any]): """Object that store one user""" - def __init__(self, mumble_object, message): + def __init__(self, mumble_object: Mumble, message: ProtoMessage): self.mumble_object = mumble_object self["session"] = message.session self["channel_id"] = 0 @@ -67,7 +76,7 @@ def __init__(self, mumble_object, message): self.mumble_object ) # will hold this user incoming audio - def update(self, message): + def update(self, message: ProtoMessage) -> typing.Dict[str, typing.Any]: # type: ignore """Update user state, based on an incoming message""" actions = dict() @@ -92,7 +101,9 @@ def update(self, message): return actions # return a dict, useful for the callback functions - def update_field(self, name, field): + def update_field( + self, name: str, field: typing.Any + ) -> typing.Dict[str, typing.Any]: """Update one state value for a user""" actions = dict() if name not in self or self[name] != field: @@ -101,14 +112,16 @@ def update_field(self, name, field): return actions - def get_property(self, property): + def get_property(self, property: str) -> typing.Any: if property in self: return self[property] else: return None - def mute(self): + def mute(self) -> None: """Mute a user""" + assert self.mumble_object.users.myself_session is not None + params = {"session": self["session"]} if self["session"] == self.mumble_object.users.myself_session: @@ -119,8 +132,10 @@ def mute(self): cmd = messages.ModUserState(self.mumble_object.users.myself_session, params) self.mumble_object.execute_command(cmd) - def unmute(self): + def unmute(self) -> None: """Unmute a user""" + assert self.mumble_object.users.myself_session is not None + params = {"session": self["session"]} if self["session"] == self.mumble_object.users.myself_session: @@ -131,8 +146,10 @@ def unmute(self): cmd = messages.ModUserState(self.mumble_object.users.myself_session, params) self.mumble_object.execute_command(cmd) - def deafen(self): + def deafen(self) -> None: """Deafen a user""" + assert self.mumble_object.users.myself_session is not None + params = {"session": self["session"]} if self["session"] == self.mumble_object.users.myself_session: @@ -143,8 +160,10 @@ def deafen(self): cmd = messages.ModUserState(self.mumble_object.users.myself_session, params) self.mumble_object.execute_command(cmd) - def undeafen(self): + def undeafen(self) -> None: """Undeafen a user""" + assert self.mumble_object.users.myself_session is not None + params = {"session": self["session"]} if self["session"] == self.mumble_object.users.myself_session: @@ -155,56 +174,70 @@ def undeafen(self): cmd = messages.ModUserState(self.mumble_object.users.myself_session, params) self.mumble_object.execute_command(cmd) - def suppress(self): + def suppress(self) -> None: """Disable a user""" + assert self.mumble_object.users.myself_session is not None + params = {"session": self["session"], "suppress": True} cmd = messages.ModUserState(self.mumble_object.users.myself_session, params) self.mumble_object.execute_command(cmd) - def unsuppress(self): + def unsuppress(self) -> None: """Enable a user""" + assert self.mumble_object.users.myself_session is not None + params = {"session": self["session"], "suppress": False} cmd = messages.ModUserState(self.mumble_object.users.myself_session, params) self.mumble_object.execute_command(cmd) - def recording(self): + def recording(self) -> None: """Set the user as recording""" + assert self.mumble_object.users.myself_session is not None + params = {"session": self["session"], "recording": True} cmd = messages.ModUserState(self.mumble_object.users.myself_session, params) self.mumble_object.execute_command(cmd) - def unrecording(self): + def unrecording(self) -> None: """Set the user as not recording""" + assert self.mumble_object.users.myself_session is not None + params = {"session": self["session"], "recording": False} cmd = messages.ModUserState(self.mumble_object.users.myself_session, params) self.mumble_object.execute_command(cmd) - def comment(self, comment): + def comment(self, comment: str) -> None: """Set the user comment""" + assert self.mumble_object.users.myself_session is not None + params = {"session": self["session"], "comment": comment} cmd = messages.ModUserState(self.mumble_object.users.myself_session, params) self.mumble_object.execute_command(cmd) - def texture(self, texture): + def texture(self, texture: bytes) -> None: """Set the user texture""" + assert self.mumble_object.users.myself_session is not None + params = {"session": self["session"], "texture": texture} cmd = messages.ModUserState(self.mumble_object.users.myself_session, params) self.mumble_object.execute_command(cmd) - def register(self): + def register(self) -> None: """Register the user (mostly for myself)""" + assert self.mumble_object.users.myself_session is not None + params = {"session": self["session"], "user_id": 0} cmd = messages.ModUserState(self.mumble_object.users.myself_session, params) self.mumble_object.execute_command(cmd) - def move_in(self, channel_id, token=None): + def move_in(self, channel_id: int, token: typing.Optional[str] = None) -> None: if token: authenticate = mumble_pb2.Authenticate() authenticate.username = self.mumble_object.user @@ -218,10 +251,11 @@ def move_in(self, channel_id, token=None): ) session = self.mumble_object.users.myself_session + assert session is not None cmd = messages.MoveCmd(session, channel_id) self.mumble_object.execute_command(cmd) - def send_text_message(self, message): + def send_text_message(self, message: ProtoMessage) -> None: """Send a text message to the user.""" # TODO: This check should be done inside execute_command() From c0232345db8d88468c8ab27beedb32f09bb4896e Mon Sep 17 00:00:00 2001 From: tikki Date: Fri, 31 Jan 2020 00:42:04 +0100 Subject: [PATCH 04/17] fix creating wrong type when working with bytes --- pymumble_py3/mumble.py | 2 +- pymumble_py3/soundoutput.py | 2 +- pymumble_py3/tools.py | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pymumble_py3/mumble.py b/pymumble_py3/mumble.py index e7b757a..e8d12d3 100644 --- a/pymumble_py3/mumble.py +++ b/pymumble_py3/mumble.py @@ -588,7 +588,7 @@ def sound_received(self, message: bytes) -> None: size &= 0x1FFF # isolate the size from the terminator else: (header,) = struct.unpack( - "!B", message[pos] + "!B", message[pos : pos + 1] ) # CELT length and terminator is encoded in a 1 byte int if not (header & 0b10000000): terminator = True diff --git a/pymumble_py3/soundoutput.py b/pymumble_py3/soundoutput.py index 74e2bdc..9417bc2 100644 --- a/pymumble_py3/soundoutput.py +++ b/pymumble_py3/soundoutput.py @@ -141,7 +141,7 @@ def send_audio(self) -> None: audio_encoded < self.audio_per_packet and len(self.pcm) > 0 ): # if not last frame for the packet, set the terminator bit encoded_len += 1 << 7 - frameheader = struct.pack("!B", encoded_len) + frameheader = bytearray(struct.pack("!B", encoded_len)) payload += frameheader + encoded # add the frame to the packet diff --git a/pymumble_py3/tools.py b/pymumble_py3/tools.py index dbe4b4f..4668916 100644 --- a/pymumble_py3/tools.py +++ b/pymumble_py3/tools.py @@ -20,9 +20,9 @@ def encode(self) -> bytearray: if self.value < 0: if self.value >= -3: - return struct.pack("!B", (0b11111100 | value)) + return result + struct.pack("!B", (0b11111100 | value)) else: - result = struct.pack("!B", 0b11111000) + result += struct.pack("!B", 0b11111000) if value <= 0x7F: return result + struct.pack("!B", value) From fff0fe14a55686e087a3efcad8543442a82c9a89 Mon Sep 17 00:00:00 2001 From: tikki Date: Fri, 31 Jan 2020 00:43:53 +0100 Subject: [PATCH 05/17] fix invalid method access get_childs returns a list, not a dict --- pymumble_py3/channels.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pymumble_py3/channels.py b/pymumble_py3/channels.py index 91b3f3d..49182f8 100644 --- a/pymumble_py3/channels.py +++ b/pymumble_py3/channels.py @@ -58,7 +58,7 @@ def find_by_tree(self, tree: typing.Iterable[str]) -> Channel: for name in tree: # going up the tree found = False - for subchannel in self.get_childs(current).values(): + for subchannel in self.get_childs(current): if subchannel["name"] == name: current = subchannel found = True From df013733fa2135857b08e3dc1082911d3e847b94 Mon Sep 17 00:00:00 2001 From: tikki Date: Fri, 31 Jan 2020 00:45:07 +0100 Subject: [PATCH 06/17] fix calling non-existing method on Channel --- pymumble_py3/channels.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pymumble_py3/channels.py b/pymumble_py3/channels.py index 49182f8..5b6e151 100644 --- a/pymumble_py3/channels.py +++ b/pymumble_py3/channels.py @@ -84,8 +84,8 @@ def get_descendants(self, channel: Channel) -> typing.List[typing.List[Channel]] """Get all the descendant of a channel, in nested lists""" descendants = list() - for subchannel in channel.get_childs(): - descendants.append(subchannel.get_childs()) + for subchannel in self.get_childs(channel): + descendants.append(self.get_childs(subchannel)) return descendants From 2817dd4d85921b73af6c2eda745e5a6bba758d4f Mon Sep 17 00:00:00 2001 From: tikki Date: Fri, 31 Jan 2020 00:45:45 +0100 Subject: [PATCH 07/17] fix wrong argument type --- pymumble_py3/mumble.py | 2 +- pymumble_py3/soundoutput.py | 6 ++++-- pymumble_py3/tools.py | 4 +++- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/pymumble_py3/mumble.py b/pymumble_py3/mumble.py index e8d12d3..ffe8ac3 100644 --- a/pymumble_py3/mumble.py +++ b/pymumble_py3/mumble.py @@ -202,7 +202,7 @@ def connect(self) -> int: ) try: self.control_socket.connect((self.host, self.port)) - self.control_socket.setblocking(0) + self.control_socket.setblocking(False) # Perform the Mumble authentication version = mumble_pb2.Version() diff --git a/pymumble_py3/soundoutput.py b/pymumble_py3/soundoutput.py index 9417bc2..bc2b858 100644 --- a/pymumble_py3/soundoutput.py +++ b/pymumble_py3/soundoutput.py @@ -269,9 +269,11 @@ def set_whisper( if not target_id: return if type(target_id) is int: - targets = [typing.cast(int, target_id)] + targets = [{"session": [typing.cast(int, target_id)]}] else: - targets = typing.cast(typing.List[int], target_id) + targets = [ + {"session": [tid]} for tid in typing.cast(typing.List[int], target_id) + ] self.target = 2 if channel: self.target = 1 diff --git a/pymumble_py3/tools.py b/pymumble_py3/tools.py index 4668916..2b638f1 100644 --- a/pymumble_py3/tools.py +++ b/pymumble_py3/tools.py @@ -41,7 +41,7 @@ def decode(self, value: bytes) -> int: """Decode a VarInt contained in a binary string, returning an integer""" varint = value is_negative = False - result = None + result = 0 size = 0 if len(varint) <= 0: @@ -95,6 +95,8 @@ def decode(self, value: bytes) -> int: raise InvalidVarInt("Too short 9 bytes varint") (result,) = struct.unpack("!Q", varint[1:9]) size += 9 + else: + return size if is_negative: self.value = -result From 75e1e73953929f7690210ad1374b3c58b47d3ec2 Mon Sep 17 00:00:00 2001 From: tikki Date: Fri, 31 Jan 2020 00:46:50 +0100 Subject: [PATCH 08/17] add constant PYMUMBLE_CHANNELS --- pymumble_py3/constants.py | 1 + pymumble_py3/soundoutput.py | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/pymumble_py3/constants.py b/pymumble_py3/constants.py index 7321187..fc2f58b 100644 --- a/pymumble_py3/constants.py +++ b/pymumble_py3/constants.py @@ -29,6 +29,7 @@ PYMUMBLE_PING_DELAY = 10 # interval between 2 pings in sec PYMUMBLE_SAMPLERATE = 48000 # in hz +PYMUMBLE_CHANNELS = 1 # channel count PYMUMBLE_SEQUENCE_DURATION = float(10) / 1000 # in sec PYMUMBLE_SEQUENCE_RESET_INTERVAL = 5 # in sec diff --git a/pymumble_py3/soundoutput.py b/pymumble_py3/soundoutput.py index bc2b858..dcb4d61 100644 --- a/pymumble_py3/soundoutput.py +++ b/pymumble_py3/soundoutput.py @@ -255,7 +255,9 @@ def create_encoder(self) -> None: return if self.codec.opus: - self.encoder = opuslib.Encoder(PYMUMBLE_SAMPLERATE, 1, self.opus_profile) + self.encoder = opuslib.Encoder( + PYMUMBLE_SAMPLERATE, PYMUMBLE_CHANNELS, self.opus_profile + ) self.encoder_framesize = self.audio_per_packet self.codec_type = PYMUMBLE_AUDIO_TYPE_OPUS else: From 0f9ce9e1003feb766723c5750698c40b7c1da54e Mon Sep 17 00:00:00 2001 From: tikki Date: Fri, 7 Feb 2020 21:37:56 +0100 Subject: [PATCH 09/17] fix cyclic imports for type checking --- pymumble_py3/blobs.py | 6 ++++-- pymumble_py3/channels.py | 8 +++++--- pymumble_py3/soundoutput.py | 6 ++++-- pymumble_py3/soundqueue.py | 6 ++++-- pymumble_py3/users.py | 8 +++++--- 5 files changed, 22 insertions(+), 12 deletions(-) diff --git a/pymumble_py3/blobs.py b/pymumble_py3/blobs.py index 97e62d0..54821e7 100644 --- a/pymumble_py3/blobs.py +++ b/pymumble_py3/blobs.py @@ -3,16 +3,18 @@ import typing from .constants import * -from .mumble import Mumble from .mumble_pb2 import RequestBlob +if typing.TYPE_CHECKING: + from .mumble import Mumble + class Blobs(typing.Dict[bytes, typing.Any]): """ Manage the Blob library """ - def __init__(self, mumble_object: Mumble): + def __init__(self, mumble_object: "Mumble"): self.mumble_object = mumble_object def get_user_comment(self, hash: bytes) -> None: diff --git a/pymumble_py3/channels.py b/pymumble_py3/channels.py index 5b6e151..6b72b9d 100644 --- a/pymumble_py3/channels.py +++ b/pymumble_py3/channels.py @@ -6,9 +6,11 @@ from .callbacks import CallBacks from .constants import * from .errors import ImageTooBigError, TextTooLongError, UnknownChannelError -from .mumble import Mumble from .users import User +if typing.TYPE_CHECKING: + from .mumble import Mumble + ProtoMessage = typing.Any @@ -17,7 +19,7 @@ class Channels(typing.Dict[int, Channel]): Object that Stores all channels and their properties. """ - def __init__(self, mumble_object: Mumble, callbacks: CallBacks): + def __init__(self, mumble_object: "Mumble", callbacks: CallBacks): self.mumble_object = mumble_object self.callbacks = callbacks @@ -129,7 +131,7 @@ class Channel(typing.Dict[str, typing.Any]): Stores information about one specific channel """ - def __init__(self, mumble_object: Mumble, message: ProtoMessage) -> None: + def __init__(self, mumble_object: "Mumble", message: ProtoMessage) -> None: self.mumble_object = mumble_object self["channel_id"] = message.channel_id self.update(message) diff --git a/pymumble_py3/soundoutput.py b/pymumble_py3/soundoutput.py index dcb4d61..3e5e8cb 100644 --- a/pymumble_py3/soundoutput.py +++ b/pymumble_py3/soundoutput.py @@ -11,9 +11,11 @@ from .constants import * from .errors import CodecNotSupportedError from .messages import VoiceTarget -from .mumble import Mumble from .tools import VarInt +if typing.TYPE_CHECKING: + from .mumble import Mumble + ProtoMessage = typing.Any @@ -25,7 +27,7 @@ class SoundOutput: def __init__( self, - mumble_object: Mumble, + mumble_object: "Mumble", audio_per_packet: float, bandwidth: int, opus_profile: str = PYMUMBLE_AUDIO_TYPE_OPUS_PROFILE, diff --git a/pymumble_py3/soundqueue.py b/pymumble_py3/soundqueue.py index 42ded74..e1ffc4c 100644 --- a/pymumble_py3/soundqueue.py +++ b/pymumble_py3/soundqueue.py @@ -7,7 +7,9 @@ import opuslib from .constants import * -from .mumble import Mumble + +if typing.TYPE_CHECKING: + from .mumble import Mumble class SoundQueue: @@ -16,7 +18,7 @@ class SoundQueue: Takes care of the decoding of the received audio """ - def __init__(self, mumble_object: Mumble): + def __init__(self, mumble_object: "Mumble"): self.mumble_object = mumble_object self.queue: typing.Deque[SoundChunk] = deque() diff --git a/pymumble_py3/users.py b/pymumble_py3/users.py index 2f28b73..7bb90d8 100644 --- a/pymumble_py3/users.py +++ b/pymumble_py3/users.py @@ -6,7 +6,9 @@ from .callbacks import CallBacks from .constants import * from .errors import ImageTooBigError, TextTooLongError -from .mumble import Mumble + +if typing.TYPE_CHECKING: + from .mumble import Mumble ProtoMessage = typing.Any @@ -14,7 +16,7 @@ class Users(typing.Dict[int, User]): """Object that stores and update all connected users""" - def __init__(self, mumble_object: Mumble, callbacks: CallBacks): + def __init__(self, mumble_object: "Mumble", callbacks: CallBacks): self.mumble_object = mumble_object self.callbacks = callbacks @@ -66,7 +68,7 @@ def count(self) -> int: class User(typing.Dict[str, typing.Any]): """Object that store one user""" - def __init__(self, mumble_object: Mumble, message: ProtoMessage): + def __init__(self, mumble_object: "Mumble", message: ProtoMessage): self.mumble_object = mumble_object self["session"] = message.session self["channel_id"] = 0 From 10d77be27a228eb468dd83b0b272c49d5f80dc27 Mon Sep 17 00:00:00 2001 From: tikki Date: Fri, 7 Feb 2020 21:41:13 +0100 Subject: [PATCH 10/17] fix forward refs for type checking --- pymumble_py3/channels.py | 14 ++++++++------ pymumble_py3/users.py | 4 ++-- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/pymumble_py3/channels.py b/pymumble_py3/channels.py index 6b72b9d..a557c9d 100644 --- a/pymumble_py3/channels.py +++ b/pymumble_py3/channels.py @@ -14,7 +14,7 @@ ProtoMessage = typing.Any -class Channels(typing.Dict[int, Channel]): +class Channels(typing.Dict[int, "Channel"]): """ Object that Stores all channels and their properties. """ @@ -51,7 +51,7 @@ def remove(self, id: int) -> None: self.lock.release() - def find_by_tree(self, tree: typing.Iterable[str]) -> Channel: + def find_by_tree(self, tree: typing.Iterable[str]) -> "Channel": """Find a channel by its full path (a list with an element for each leaf)""" if not getattr(tree, "__iter__", False): tree = tree # function use argument as a list @@ -72,7 +72,7 @@ def find_by_tree(self, tree: typing.Iterable[str]) -> Channel: return current - def get_childs(self, channel: Channel) -> typing.List[Channel]: + def get_childs(self, channel: "Channel") -> typing.List["Channel"]: """Get the child channels of a channel in a list""" childs = list() @@ -82,7 +82,9 @@ def get_childs(self, channel: Channel) -> typing.List[Channel]: return childs - def get_descendants(self, channel: Channel) -> typing.List[typing.List[Channel]]: + def get_descendants( + self, channel: "Channel" + ) -> typing.List[typing.List["Channel"]]: """Get all the descendant of a channel, in nested lists""" descendants = list() @@ -91,7 +93,7 @@ def get_descendants(self, channel: Channel) -> typing.List[typing.List[Channel]] return descendants - def get_tree(self, channel: Channel) -> typing.List[Channel]: + def get_tree(self, channel: "Channel") -> typing.List["Channel"]: """Get the whole list of channels, in a multidimensional list""" tree: typing.List[Channel] = list() @@ -105,7 +107,7 @@ def get_tree(self, channel: Channel) -> typing.List[Channel]: return tree - def find_by_name(self, name: str) -> Channel: + def find_by_name(self, name: str) -> "Channel": """Find a channel by name. Stop on the first that match""" if name == "": return self[0] diff --git a/pymumble_py3/users.py b/pymumble_py3/users.py index 7bb90d8..f69481d 100644 --- a/pymumble_py3/users.py +++ b/pymumble_py3/users.py @@ -13,7 +13,7 @@ ProtoMessage = typing.Any -class Users(typing.Dict[int, User]): +class Users(typing.Dict[int, "User"]): """Object that stores and update all connected users""" def __init__(self, mumble_object: "Mumble", callbacks: CallBacks): @@ -21,7 +21,7 @@ def __init__(self, mumble_object: "Mumble", callbacks: CallBacks): self.callbacks = callbacks self.myself: typing.Optional[ - User + "User" ] = None # user object of the pymumble thread itself self.myself_session: typing.Optional[ int From 5c83f28b428364fae0edc1e5bdfde7fea9a45f64 Mon Sep 17 00:00:00 2001 From: tikki Date: Fri, 7 Feb 2020 23:13:16 +0100 Subject: [PATCH 11/17] add type annotations for examples --- examples/audio-only_client.py | 9 +++++++-- examples/echobot.py | 7 ++++++- examples/talking_bot.py | 2 +- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/examples/audio-only_client.py b/examples/audio-only_client.py index 9cd8eec..6ce626e 100644 --- a/examples/audio-only_client.py +++ b/examples/audio-only_client.py @@ -23,10 +23,16 @@ # Works on MacOS. Does NOT work on RPi 3B+ (I cannot figure out why. Help will # be much appreciated) +import typing + import pyaudio import pymumble.pymumble_py3 as pymumble_py3 from pymumble.pymumble_py3.callbacks import PYMUMBLE_CLBK_SOUNDRECEIVED as PCS +if typing.TYPE_CHECKING: + from pymumble.pymumble_py3.users import User + from pymumble.pymumble_py3.soundqueue import SoundChunk + # Connection details for mumble server. Harded code for now, will have to be # command line arguments eventually pwd = "" # password @@ -51,9 +57,8 @@ frames_per_buffer=CHUNK, ) - # mumble client set up -def sound_received_handler(user, soundchunk): +def sound_received_handler(user: "User", soundchunk: "SoundChunk") -> None: """ play sound received from mumble server upon its arrival """ stream.write(soundchunk.pcm) diff --git a/examples/echobot.py b/examples/echobot.py index 318893a..414b6ce 100755 --- a/examples/echobot.py +++ b/examples/echobot.py @@ -3,16 +3,21 @@ # WARNING! Don't put two bots in the same place! import time +import typing import pymumble_py3 from pymumble_py3.callbacks import PYMUMBLE_CLBK_SOUNDRECEIVED as PCS +if typing.TYPE_CHECKING: + from pymumble.pymumble_py3.users import User + from pymumble.pymumble_py3.soundqueue import SoundChunk + pwd = "" # password server = "localhost" nick = "Bob" -def sound_received_handler(user, soundchunk): +def sound_received_handler(user: "User", soundchunk: "SoundChunk") -> None: # sending the received sound back to server mumble.sound_output.add_sound(soundchunk.pcm) diff --git a/examples/talking_bot.py b/examples/talking_bot.py index 28f7e7a..65f44df 100755 --- a/examples/talking_bot.py +++ b/examples/talking_bot.py @@ -25,7 +25,7 @@ wave_file = sp.Popen(command, stdout=sp.PIPE).stdout # converting the wave speech to pcm command = ["ffmpeg", "-i", "-", "-ac", "1", "-f", "s32le", "-"] - sound = sp.Popen( + sound = sp.Popen( # type: ignore command, stdout=sp.PIPE, stderr=sp.DEVNULL, stdin=wave_file ).stdout.read() # sending speech to server From 5b7f28ae6b4a9fd6416e3dadc1bcce7f3b5dc66f Mon Sep 17 00:00:00 2001 From: tikki Date: Fri, 7 Feb 2020 23:14:03 +0100 Subject: [PATCH 12/17] fix type annotations for soundoutput --- pymumble_py3/soundoutput.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pymumble_py3/soundoutput.py b/pymumble_py3/soundoutput.py index 3e5e8cb..6d26c3d 100644 --- a/pymumble_py3/soundoutput.py +++ b/pymumble_py3/soundoutput.py @@ -40,7 +40,7 @@ def __init__( self.Log = self.mumble_object.Log - self.pcm: typing.List[bytearray] = [] + self.pcm: typing.List[bytes] = [] self.lock = threading.Lock() self.codec: typing.Optional[ @@ -215,7 +215,7 @@ def _set_bandwidth(self) -> None: self.encoder.bitrate = self.bandwidth - overhead_per_second - def add_sound(self, pcm: bytearray) -> None: + def add_sound(self, pcm: bytes) -> None: """add sound to be sent (in PCM mono 16 bits signed format)""" if len(pcm) % 2 != 0: # check that the data is align on 16 bits raise Exception("pcm data must be mono 16 bits") From efa06065cdd3019ffc39deaed23561c5e1efc75b Mon Sep 17 00:00:00 2001 From: tikki Date: Fri, 7 Feb 2020 23:18:54 +0100 Subject: [PATCH 13/17] explicitly export Mumble from package This fixes problems with mypy & possibly other tools that ignore incidentally exported names. --- pymumble_py3/__init__.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pymumble_py3/__init__.py b/pymumble_py3/__init__.py index a67cdea..e49506c 100644 --- a/pymumble_py3/__init__.py +++ b/pymumble_py3/__init__.py @@ -1,3 +1,5 @@ # -*- coding: utf-8 -*- from .mumble import Mumble + +__all__ = ["Mumble"] From cc55e9672e8204a81c3faa5a263444817dc4adfc Mon Sep 17 00:00:00 2001 From: tikki Date: Fri, 7 Feb 2020 23:19:21 +0100 Subject: [PATCH 14/17] fix type errors --- examples/echobot.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/echobot.py b/examples/echobot.py index 414b6ce..43f7e95 100755 --- a/examples/echobot.py +++ b/examples/echobot.py @@ -6,7 +6,7 @@ import typing import pymumble_py3 -from pymumble_py3.callbacks import PYMUMBLE_CLBK_SOUNDRECEIVED as PCS +from pymumble_py3.constants import PYMUMBLE_CLBK_SOUNDRECEIVED as PCS if typing.TYPE_CHECKING: from pymumble.pymumble_py3.users import User @@ -24,7 +24,7 @@ def sound_received_handler(user: "User", soundchunk: "SoundChunk") -> None: mumble = pymumble_py3.Mumble(server, nick, password=pwd) mumble.callbacks.set_callback(PCS, sound_received_handler) -mumble.set_receive_sound(1) # we want to receive sound +mumble.set_receive_sound(True) # we want to receive sound mumble.start() while 1: From fa1b2d65c426979398969d99331848983774cbe7 Mon Sep 17 00:00:00 2001 From: tikki Date: Sat, 8 Feb 2020 01:34:24 +0100 Subject: [PATCH 15/17] fix type annotation --- pymumble_py3/users.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pymumble_py3/users.py b/pymumble_py3/users.py index f69481d..3c57fc8 100644 --- a/pymumble_py3/users.py +++ b/pymumble_py3/users.py @@ -257,7 +257,7 @@ def move_in(self, channel_id: int, token: typing.Optional[str] = None) -> None: cmd = messages.MoveCmd(session, channel_id) self.mumble_object.execute_command(cmd) - def send_text_message(self, message: ProtoMessage) -> None: + def send_text_message(self, message: str) -> None: """Send a text message to the user.""" # TODO: This check should be done inside execute_command() From 58594aaeb36d1dfb3cbb0509ac06ba40797a26c2 Mon Sep 17 00:00:00 2001 From: tikki Date: Sat, 8 Feb 2020 01:38:56 +0100 Subject: [PATCH 16/17] revert generated file to original state Generated files shouldn't be changed, not even automatically. --- pymumble_py3/mumble_pb2.py | 6024 +++++++++++++----------------------- 1 file changed, 2178 insertions(+), 3846 deletions(-) diff --git a/pymumble_py3/mumble_pb2.py b/pymumble_py3/mumble_pb2.py index 00931da..a03da4c 100644 --- a/pymumble_py3/mumble_pb2.py +++ b/pymumble_py3/mumble_pb2.py @@ -2,4067 +2,2399 @@ # source: Mumble.proto import sys - -from google.protobuf import ( - descriptor as _descriptor, - descriptor_pb2, - message as _message, - reflection as _reflection, - symbol_database as _symbol_database, -) - -_b = sys.version_info[0] < 3 and (lambda x: x) or (lambda x: x.encode("latin1")) +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +from google.protobuf import descriptor_pb2 # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() + + DESCRIPTOR = _descriptor.FileDescriptor( - name="Mumble.proto", - package="MumbleProto", - syntax="proto2", - serialized_pb=_b( - '\n\x0cMumble.proto\x12\x0bMumbleProto"K\n\x07Version\x12\x0f\n\x07version\x18\x01 \x01(\r\x12\x0f\n\x07release\x18\x02 \x01(\t\x12\n\n\x02os\x18\x03 \x01(\t\x12\x12\n\nos_version\x18\x04 \x01(\t"\x1b\n\tUDPTunnel\x12\x0e\n\x06packet\x18\x01 \x02(\x0c"n\n\x0c\x41uthenticate\x12\x10\n\x08username\x18\x01 \x01(\t\x12\x10\n\x08password\x18\x02 \x01(\t\x12\x0e\n\x06tokens\x18\x03 \x03(\t\x12\x15\n\rcelt_versions\x18\x04 \x03(\x05\x12\x13\n\x04opus\x18\x05 \x01(\x08:\x05\x66\x61lse"\xd5\x01\n\x04Ping\x12\x11\n\ttimestamp\x18\x01 \x01(\x04\x12\x0c\n\x04good\x18\x02 \x01(\r\x12\x0c\n\x04late\x18\x03 \x01(\r\x12\x0c\n\x04lost\x18\x04 \x01(\r\x12\x0e\n\x06resync\x18\x05 \x01(\r\x12\x13\n\x0budp_packets\x18\x06 \x01(\r\x12\x13\n\x0btcp_packets\x18\x07 \x01(\r\x12\x14\n\x0cudp_ping_avg\x18\x08 \x01(\x02\x12\x14\n\x0cudp_ping_var\x18\t \x01(\x02\x12\x14\n\x0ctcp_ping_avg\x18\n \x01(\x02\x12\x14\n\x0ctcp_ping_var\x18\x0b \x01(\x02"\xf7\x01\n\x06Reject\x12,\n\x04type\x18\x01 \x01(\x0e\x32\x1e.MumbleProto.Reject.RejectType\x12\x0e\n\x06reason\x18\x02 \x01(\t"\xae\x01\n\nRejectType\x12\x08\n\x04None\x10\x00\x12\x10\n\x0cWrongVersion\x10\x01\x12\x13\n\x0fInvalidUsername\x10\x02\x12\x0f\n\x0bWrongUserPW\x10\x03\x12\x11\n\rWrongServerPW\x10\x04\x12\x11\n\rUsernameInUse\x10\x05\x12\x0e\n\nServerFull\x10\x06\x12\x11\n\rNoCertificate\x10\x07\x12\x15\n\x11\x41uthenticatorFail\x10\x08"_\n\nServerSync\x12\x0f\n\x07session\x18\x01 \x01(\r\x12\x15\n\rmax_bandwidth\x18\x02 \x01(\r\x12\x14\n\x0cwelcome_text\x18\x03 \x01(\t\x12\x13\n\x0bpermissions\x18\x04 \x01(\x04"#\n\rChannelRemove\x12\x12\n\nchannel_id\x18\x01 \x02(\r"\xe9\x01\n\x0c\x43hannelState\x12\x12\n\nchannel_id\x18\x01 \x01(\r\x12\x0e\n\x06parent\x18\x02 \x01(\r\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\r\n\x05links\x18\x04 \x03(\r\x12\x13\n\x0b\x64\x65scription\x18\x05 \x01(\t\x12\x11\n\tlinks_add\x18\x06 \x03(\r\x12\x14\n\x0clinks_remove\x18\x07 \x03(\r\x12\x18\n\ttemporary\x18\x08 \x01(\x08:\x05\x66\x61lse\x12\x13\n\x08position\x18\t \x01(\x05:\x01\x30\x12\x18\n\x10\x64\x65scription_hash\x18\n \x01(\x0c\x12\x11\n\tmax_users\x18\x0b \x01(\r"I\n\nUserRemove\x12\x0f\n\x07session\x18\x01 \x02(\r\x12\r\n\x05\x61\x63tor\x18\x02 \x01(\r\x12\x0e\n\x06reason\x18\x03 \x01(\t\x12\x0b\n\x03\x62\x61n\x18\x04 \x01(\x08"\xec\x02\n\tUserState\x12\x0f\n\x07session\x18\x01 \x01(\r\x12\r\n\x05\x61\x63tor\x18\x02 \x01(\r\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x0f\n\x07user_id\x18\x04 \x01(\r\x12\x12\n\nchannel_id\x18\x05 \x01(\r\x12\x0c\n\x04mute\x18\x06 \x01(\x08\x12\x0c\n\x04\x64\x65\x61\x66\x18\x07 \x01(\x08\x12\x10\n\x08suppress\x18\x08 \x01(\x08\x12\x11\n\tself_mute\x18\t \x01(\x08\x12\x11\n\tself_deaf\x18\n \x01(\x08\x12\x0f\n\x07texture\x18\x0b \x01(\x0c\x12\x16\n\x0eplugin_context\x18\x0c \x01(\x0c\x12\x17\n\x0fplugin_identity\x18\r \x01(\t\x12\x0f\n\x07\x63omment\x18\x0e \x01(\t\x12\x0c\n\x04hash\x18\x0f \x01(\t\x12\x14\n\x0c\x63omment_hash\x18\x10 \x01(\x0c\x12\x14\n\x0ctexture_hash\x18\x11 \x01(\x0c\x12\x18\n\x10priority_speaker\x18\x12 \x01(\x08\x12\x11\n\trecording\x18\x13 \x01(\x08"\xc4\x01\n\x07\x42\x61nList\x12+\n\x04\x62\x61ns\x18\x01 \x03(\x0b\x32\x1d.MumbleProto.BanList.BanEntry\x12\x14\n\x05query\x18\x02 \x01(\x08:\x05\x66\x61lse\x1av\n\x08\x42\x61nEntry\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x02(\x0c\x12\x0c\n\x04mask\x18\x02 \x02(\r\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x0c\n\x04hash\x18\x04 \x01(\t\x12\x0e\n\x06reason\x18\x05 \x01(\t\x12\r\n\x05start\x18\x06 \x01(\t\x12\x10\n\x08\x64uration\x18\x07 \x01(\r"c\n\x0bTextMessage\x12\r\n\x05\x61\x63tor\x18\x01 \x01(\r\x12\x0f\n\x07session\x18\x02 \x03(\r\x12\x12\n\nchannel_id\x18\x03 \x03(\r\x12\x0f\n\x07tree_id\x18\x04 \x03(\r\x12\x0f\n\x07message\x18\x05 \x02(\t"\xdf\x02\n\x10PermissionDenied\x12\x12\n\npermission\x18\x01 \x01(\r\x12\x12\n\nchannel_id\x18\x02 \x01(\r\x12\x0f\n\x07session\x18\x03 \x01(\r\x12\x0e\n\x06reason\x18\x04 \x01(\t\x12\x34\n\x04type\x18\x05 \x01(\x0e\x32&.MumbleProto.PermissionDenied.DenyType\x12\x0c\n\x04name\x18\x06 \x01(\t"\xbd\x01\n\x08\x44\x65nyType\x12\x08\n\x04Text\x10\x00\x12\x0e\n\nPermission\x10\x01\x12\r\n\tSuperUser\x10\x02\x12\x0f\n\x0b\x43hannelName\x10\x03\x12\x0f\n\x0bTextTooLong\x10\x04\x12\x07\n\x03H9K\x10\x05\x12\x14\n\x10TemporaryChannel\x10\x06\x12\x16\n\x12MissingCertificate\x10\x07\x12\x0c\n\x08UserName\x10\x08\x12\x0f\n\x0b\x43hannelFull\x10\t\x12\x10\n\x0cNestingLimit\x10\n"\xd4\x03\n\x03\x41\x43L\x12\x12\n\nchannel_id\x18\x01 \x02(\r\x12\x1a\n\x0cinherit_acls\x18\x02 \x01(\x08:\x04true\x12*\n\x06groups\x18\x03 \x03(\x0b\x32\x1a.MumbleProto.ACL.ChanGroup\x12&\n\x04\x61\x63ls\x18\x04 \x03(\x0b\x32\x18.MumbleProto.ACL.ChanACL\x12\x14\n\x05query\x18\x05 \x01(\x08:\x05\x66\x61lse\x1a\x9c\x01\n\tChanGroup\x12\x0c\n\x04name\x18\x01 \x02(\t\x12\x17\n\tinherited\x18\x02 \x01(\x08:\x04true\x12\x15\n\x07inherit\x18\x03 \x01(\x08:\x04true\x12\x19\n\x0binheritable\x18\x04 \x01(\x08:\x04true\x12\x0b\n\x03\x61\x64\x64\x18\x05 \x03(\r\x12\x0e\n\x06remove\x18\x06 \x03(\r\x12\x19\n\x11inherited_members\x18\x07 \x03(\r\x1a\x93\x01\n\x07\x43hanACL\x12\x18\n\napply_here\x18\x01 \x01(\x08:\x04true\x12\x18\n\napply_subs\x18\x02 \x01(\x08:\x04true\x12\x17\n\tinherited\x18\x03 \x01(\x08:\x04true\x12\x0f\n\x07user_id\x18\x04 \x01(\r\x12\r\n\x05group\x18\x05 \x01(\t\x12\r\n\x05grant\x18\x06 \x01(\r\x12\x0c\n\x04\x64\x65ny\x18\x07 \x01(\r"(\n\nQueryUsers\x12\x0b\n\x03ids\x18\x01 \x03(\r\x12\r\n\x05names\x18\x02 \x03(\t"E\n\nCryptSetup\x12\x0b\n\x03key\x18\x01 \x01(\x0c\x12\x14\n\x0c\x63lient_nonce\x18\x02 \x01(\x0c\x12\x14\n\x0cserver_nonce\x18\x03 \x01(\x0c"\xd3\x01\n\x13\x43ontextActionModify\x12\x0e\n\x06\x61\x63tion\x18\x01 \x02(\t\x12\x0c\n\x04text\x18\x02 \x01(\t\x12\x0f\n\x07\x63ontext\x18\x03 \x01(\r\x12=\n\toperation\x18\x04 \x01(\x0e\x32*.MumbleProto.ContextActionModify.Operation",\n\x07\x43ontext\x12\n\n\x06Server\x10\x01\x12\x0b\n\x07\x43hannel\x10\x02\x12\x08\n\x04User\x10\x04" \n\tOperation\x12\x07\n\x03\x41\x64\x64\x10\x00\x12\n\n\x06Remove\x10\x01"D\n\rContextAction\x12\x0f\n\x07session\x18\x01 \x01(\r\x12\x12\n\nchannel_id\x18\x02 \x01(\r\x12\x0e\n\x06\x61\x63tion\x18\x03 \x02(\t"\x85\x01\n\x08UserList\x12)\n\x05users\x18\x01 \x03(\x0b\x32\x1a.MumbleProto.UserList.User\x1aN\n\x04User\x12\x0f\n\x07user_id\x18\x01 \x02(\r\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x11\n\tlast_seen\x18\x03 \x01(\t\x12\x14\n\x0clast_channel\x18\x04 \x01(\r"\xb8\x01\n\x0bVoiceTarget\x12\n\n\x02id\x18\x01 \x01(\r\x12\x30\n\x07targets\x18\x02 \x03(\x0b\x32\x1f.MumbleProto.VoiceTarget.Target\x1ak\n\x06Target\x12\x0f\n\x07session\x18\x01 \x03(\r\x12\x12\n\nchannel_id\x18\x02 \x01(\r\x12\r\n\x05group\x18\x03 \x01(\t\x12\x14\n\x05links\x18\x04 \x01(\x08:\x05\x66\x61lse\x12\x17\n\x08\x63hildren\x18\x05 \x01(\x08:\x05\x66\x61lse"P\n\x0fPermissionQuery\x12\x12\n\nchannel_id\x18\x01 \x01(\r\x12\x13\n\x0bpermissions\x18\x02 \x01(\r\x12\x14\n\x05\x66lush\x18\x03 \x01(\x08:\x05\x66\x61lse"\\\n\x0c\x43odecVersion\x12\r\n\x05\x61lpha\x18\x01 \x02(\x05\x12\x0c\n\x04\x62\x65ta\x18\x02 \x02(\x05\x12\x1a\n\x0cprefer_alpha\x18\x03 \x02(\x08:\x04true\x12\x13\n\x04opus\x18\x04 \x01(\x08:\x05\x66\x61lse"\xb8\x04\n\tUserStats\x12\x0f\n\x07session\x18\x01 \x01(\r\x12\x19\n\nstats_only\x18\x02 \x01(\x08:\x05\x66\x61lse\x12\x14\n\x0c\x63\x65rtificates\x18\x03 \x03(\x0c\x12\x31\n\x0b\x66rom_client\x18\x04 \x01(\x0b\x32\x1c.MumbleProto.UserStats.Stats\x12\x31\n\x0b\x66rom_server\x18\x05 \x01(\x0b\x32\x1c.MumbleProto.UserStats.Stats\x12\x13\n\x0budp_packets\x18\x06 \x01(\r\x12\x13\n\x0btcp_packets\x18\x07 \x01(\r\x12\x14\n\x0cudp_ping_avg\x18\x08 \x01(\x02\x12\x14\n\x0cudp_ping_var\x18\t \x01(\x02\x12\x14\n\x0ctcp_ping_avg\x18\n \x01(\x02\x12\x14\n\x0ctcp_ping_var\x18\x0b \x01(\x02\x12%\n\x07version\x18\x0c \x01(\x0b\x32\x14.MumbleProto.Version\x12\x15\n\rcelt_versions\x18\r \x03(\x05\x12\x0f\n\x07\x61\x64\x64ress\x18\x0e \x01(\x0c\x12\x11\n\tbandwidth\x18\x0f \x01(\r\x12\x12\n\nonlinesecs\x18\x10 \x01(\r\x12\x10\n\x08idlesecs\x18\x11 \x01(\r\x12!\n\x12strong_certificate\x18\x12 \x01(\x08:\x05\x66\x61lse\x12\x13\n\x04opus\x18\x13 \x01(\x08:\x05\x66\x61lse\x1a\x41\n\x05Stats\x12\x0c\n\x04good\x18\x01 \x01(\r\x12\x0c\n\x04late\x18\x02 \x01(\r\x12\x0c\n\x04lost\x18\x03 \x01(\r\x12\x0e\n\x06resync\x18\x04 \x01(\r"\\\n\x0bRequestBlob\x12\x17\n\x0fsession_texture\x18\x01 \x03(\r\x12\x17\n\x0fsession_comment\x18\x02 \x03(\r\x12\x1b\n\x13\x63hannel_description\x18\x03 \x03(\r"\x98\x01\n\x0cServerConfig\x12\x15\n\rmax_bandwidth\x18\x01 \x01(\r\x12\x14\n\x0cwelcome_text\x18\x02 \x01(\t\x12\x12\n\nallow_html\x18\x03 \x01(\x08\x12\x16\n\x0emessage_length\x18\x04 \x01(\r\x12\x1c\n\x14image_message_length\x18\x05 \x01(\r\x12\x11\n\tmax_users\x18\x06 \x01(\r"J\n\rSuggestConfig\x12\x0f\n\x07version\x18\x01 \x01(\r\x12\x12\n\npositional\x18\x02 \x01(\x08\x12\x14\n\x0cpush_to_talk\x18\x03 \x01(\x08\x42\x02H\x01' - ), + name='Mumble.proto', + package='MumbleProto', + syntax='proto2', + serialized_pb=_b('\n\x0cMumble.proto\x12\x0bMumbleProto\"K\n\x07Version\x12\x0f\n\x07version\x18\x01 \x01(\r\x12\x0f\n\x07release\x18\x02 \x01(\t\x12\n\n\x02os\x18\x03 \x01(\t\x12\x12\n\nos_version\x18\x04 \x01(\t\"\x1b\n\tUDPTunnel\x12\x0e\n\x06packet\x18\x01 \x02(\x0c\"n\n\x0c\x41uthenticate\x12\x10\n\x08username\x18\x01 \x01(\t\x12\x10\n\x08password\x18\x02 \x01(\t\x12\x0e\n\x06tokens\x18\x03 \x03(\t\x12\x15\n\rcelt_versions\x18\x04 \x03(\x05\x12\x13\n\x04opus\x18\x05 \x01(\x08:\x05\x66\x61lse\"\xd5\x01\n\x04Ping\x12\x11\n\ttimestamp\x18\x01 \x01(\x04\x12\x0c\n\x04good\x18\x02 \x01(\r\x12\x0c\n\x04late\x18\x03 \x01(\r\x12\x0c\n\x04lost\x18\x04 \x01(\r\x12\x0e\n\x06resync\x18\x05 \x01(\r\x12\x13\n\x0budp_packets\x18\x06 \x01(\r\x12\x13\n\x0btcp_packets\x18\x07 \x01(\r\x12\x14\n\x0cudp_ping_avg\x18\x08 \x01(\x02\x12\x14\n\x0cudp_ping_var\x18\t \x01(\x02\x12\x14\n\x0ctcp_ping_avg\x18\n \x01(\x02\x12\x14\n\x0ctcp_ping_var\x18\x0b \x01(\x02\"\xf7\x01\n\x06Reject\x12,\n\x04type\x18\x01 \x01(\x0e\x32\x1e.MumbleProto.Reject.RejectType\x12\x0e\n\x06reason\x18\x02 \x01(\t\"\xae\x01\n\nRejectType\x12\x08\n\x04None\x10\x00\x12\x10\n\x0cWrongVersion\x10\x01\x12\x13\n\x0fInvalidUsername\x10\x02\x12\x0f\n\x0bWrongUserPW\x10\x03\x12\x11\n\rWrongServerPW\x10\x04\x12\x11\n\rUsernameInUse\x10\x05\x12\x0e\n\nServerFull\x10\x06\x12\x11\n\rNoCertificate\x10\x07\x12\x15\n\x11\x41uthenticatorFail\x10\x08\"_\n\nServerSync\x12\x0f\n\x07session\x18\x01 \x01(\r\x12\x15\n\rmax_bandwidth\x18\x02 \x01(\r\x12\x14\n\x0cwelcome_text\x18\x03 \x01(\t\x12\x13\n\x0bpermissions\x18\x04 \x01(\x04\"#\n\rChannelRemove\x12\x12\n\nchannel_id\x18\x01 \x02(\r\"\xe9\x01\n\x0c\x43hannelState\x12\x12\n\nchannel_id\x18\x01 \x01(\r\x12\x0e\n\x06parent\x18\x02 \x01(\r\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\r\n\x05links\x18\x04 \x03(\r\x12\x13\n\x0b\x64\x65scription\x18\x05 \x01(\t\x12\x11\n\tlinks_add\x18\x06 \x03(\r\x12\x14\n\x0clinks_remove\x18\x07 \x03(\r\x12\x18\n\ttemporary\x18\x08 \x01(\x08:\x05\x66\x61lse\x12\x13\n\x08position\x18\t \x01(\x05:\x01\x30\x12\x18\n\x10\x64\x65scription_hash\x18\n \x01(\x0c\x12\x11\n\tmax_users\x18\x0b \x01(\r\"I\n\nUserRemove\x12\x0f\n\x07session\x18\x01 \x02(\r\x12\r\n\x05\x61\x63tor\x18\x02 \x01(\r\x12\x0e\n\x06reason\x18\x03 \x01(\t\x12\x0b\n\x03\x62\x61n\x18\x04 \x01(\x08\"\xec\x02\n\tUserState\x12\x0f\n\x07session\x18\x01 \x01(\r\x12\r\n\x05\x61\x63tor\x18\x02 \x01(\r\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x0f\n\x07user_id\x18\x04 \x01(\r\x12\x12\n\nchannel_id\x18\x05 \x01(\r\x12\x0c\n\x04mute\x18\x06 \x01(\x08\x12\x0c\n\x04\x64\x65\x61\x66\x18\x07 \x01(\x08\x12\x10\n\x08suppress\x18\x08 \x01(\x08\x12\x11\n\tself_mute\x18\t \x01(\x08\x12\x11\n\tself_deaf\x18\n \x01(\x08\x12\x0f\n\x07texture\x18\x0b \x01(\x0c\x12\x16\n\x0eplugin_context\x18\x0c \x01(\x0c\x12\x17\n\x0fplugin_identity\x18\r \x01(\t\x12\x0f\n\x07\x63omment\x18\x0e \x01(\t\x12\x0c\n\x04hash\x18\x0f \x01(\t\x12\x14\n\x0c\x63omment_hash\x18\x10 \x01(\x0c\x12\x14\n\x0ctexture_hash\x18\x11 \x01(\x0c\x12\x18\n\x10priority_speaker\x18\x12 \x01(\x08\x12\x11\n\trecording\x18\x13 \x01(\x08\"\xc4\x01\n\x07\x42\x61nList\x12+\n\x04\x62\x61ns\x18\x01 \x03(\x0b\x32\x1d.MumbleProto.BanList.BanEntry\x12\x14\n\x05query\x18\x02 \x01(\x08:\x05\x66\x61lse\x1av\n\x08\x42\x61nEntry\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x02(\x0c\x12\x0c\n\x04mask\x18\x02 \x02(\r\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x0c\n\x04hash\x18\x04 \x01(\t\x12\x0e\n\x06reason\x18\x05 \x01(\t\x12\r\n\x05start\x18\x06 \x01(\t\x12\x10\n\x08\x64uration\x18\x07 \x01(\r\"c\n\x0bTextMessage\x12\r\n\x05\x61\x63tor\x18\x01 \x01(\r\x12\x0f\n\x07session\x18\x02 \x03(\r\x12\x12\n\nchannel_id\x18\x03 \x03(\r\x12\x0f\n\x07tree_id\x18\x04 \x03(\r\x12\x0f\n\x07message\x18\x05 \x02(\t\"\xdf\x02\n\x10PermissionDenied\x12\x12\n\npermission\x18\x01 \x01(\r\x12\x12\n\nchannel_id\x18\x02 \x01(\r\x12\x0f\n\x07session\x18\x03 \x01(\r\x12\x0e\n\x06reason\x18\x04 \x01(\t\x12\x34\n\x04type\x18\x05 \x01(\x0e\x32&.MumbleProto.PermissionDenied.DenyType\x12\x0c\n\x04name\x18\x06 \x01(\t\"\xbd\x01\n\x08\x44\x65nyType\x12\x08\n\x04Text\x10\x00\x12\x0e\n\nPermission\x10\x01\x12\r\n\tSuperUser\x10\x02\x12\x0f\n\x0b\x43hannelName\x10\x03\x12\x0f\n\x0bTextTooLong\x10\x04\x12\x07\n\x03H9K\x10\x05\x12\x14\n\x10TemporaryChannel\x10\x06\x12\x16\n\x12MissingCertificate\x10\x07\x12\x0c\n\x08UserName\x10\x08\x12\x0f\n\x0b\x43hannelFull\x10\t\x12\x10\n\x0cNestingLimit\x10\n\"\xd4\x03\n\x03\x41\x43L\x12\x12\n\nchannel_id\x18\x01 \x02(\r\x12\x1a\n\x0cinherit_acls\x18\x02 \x01(\x08:\x04true\x12*\n\x06groups\x18\x03 \x03(\x0b\x32\x1a.MumbleProto.ACL.ChanGroup\x12&\n\x04\x61\x63ls\x18\x04 \x03(\x0b\x32\x18.MumbleProto.ACL.ChanACL\x12\x14\n\x05query\x18\x05 \x01(\x08:\x05\x66\x61lse\x1a\x9c\x01\n\tChanGroup\x12\x0c\n\x04name\x18\x01 \x02(\t\x12\x17\n\tinherited\x18\x02 \x01(\x08:\x04true\x12\x15\n\x07inherit\x18\x03 \x01(\x08:\x04true\x12\x19\n\x0binheritable\x18\x04 \x01(\x08:\x04true\x12\x0b\n\x03\x61\x64\x64\x18\x05 \x03(\r\x12\x0e\n\x06remove\x18\x06 \x03(\r\x12\x19\n\x11inherited_members\x18\x07 \x03(\r\x1a\x93\x01\n\x07\x43hanACL\x12\x18\n\napply_here\x18\x01 \x01(\x08:\x04true\x12\x18\n\napply_subs\x18\x02 \x01(\x08:\x04true\x12\x17\n\tinherited\x18\x03 \x01(\x08:\x04true\x12\x0f\n\x07user_id\x18\x04 \x01(\r\x12\r\n\x05group\x18\x05 \x01(\t\x12\r\n\x05grant\x18\x06 \x01(\r\x12\x0c\n\x04\x64\x65ny\x18\x07 \x01(\r\"(\n\nQueryUsers\x12\x0b\n\x03ids\x18\x01 \x03(\r\x12\r\n\x05names\x18\x02 \x03(\t\"E\n\nCryptSetup\x12\x0b\n\x03key\x18\x01 \x01(\x0c\x12\x14\n\x0c\x63lient_nonce\x18\x02 \x01(\x0c\x12\x14\n\x0cserver_nonce\x18\x03 \x01(\x0c\"\xd3\x01\n\x13\x43ontextActionModify\x12\x0e\n\x06\x61\x63tion\x18\x01 \x02(\t\x12\x0c\n\x04text\x18\x02 \x01(\t\x12\x0f\n\x07\x63ontext\x18\x03 \x01(\r\x12=\n\toperation\x18\x04 \x01(\x0e\x32*.MumbleProto.ContextActionModify.Operation\",\n\x07\x43ontext\x12\n\n\x06Server\x10\x01\x12\x0b\n\x07\x43hannel\x10\x02\x12\x08\n\x04User\x10\x04\" \n\tOperation\x12\x07\n\x03\x41\x64\x64\x10\x00\x12\n\n\x06Remove\x10\x01\"D\n\rContextAction\x12\x0f\n\x07session\x18\x01 \x01(\r\x12\x12\n\nchannel_id\x18\x02 \x01(\r\x12\x0e\n\x06\x61\x63tion\x18\x03 \x02(\t\"\x85\x01\n\x08UserList\x12)\n\x05users\x18\x01 \x03(\x0b\x32\x1a.MumbleProto.UserList.User\x1aN\n\x04User\x12\x0f\n\x07user_id\x18\x01 \x02(\r\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x11\n\tlast_seen\x18\x03 \x01(\t\x12\x14\n\x0clast_channel\x18\x04 \x01(\r\"\xb8\x01\n\x0bVoiceTarget\x12\n\n\x02id\x18\x01 \x01(\r\x12\x30\n\x07targets\x18\x02 \x03(\x0b\x32\x1f.MumbleProto.VoiceTarget.Target\x1ak\n\x06Target\x12\x0f\n\x07session\x18\x01 \x03(\r\x12\x12\n\nchannel_id\x18\x02 \x01(\r\x12\r\n\x05group\x18\x03 \x01(\t\x12\x14\n\x05links\x18\x04 \x01(\x08:\x05\x66\x61lse\x12\x17\n\x08\x63hildren\x18\x05 \x01(\x08:\x05\x66\x61lse\"P\n\x0fPermissionQuery\x12\x12\n\nchannel_id\x18\x01 \x01(\r\x12\x13\n\x0bpermissions\x18\x02 \x01(\r\x12\x14\n\x05\x66lush\x18\x03 \x01(\x08:\x05\x66\x61lse\"\\\n\x0c\x43odecVersion\x12\r\n\x05\x61lpha\x18\x01 \x02(\x05\x12\x0c\n\x04\x62\x65ta\x18\x02 \x02(\x05\x12\x1a\n\x0cprefer_alpha\x18\x03 \x02(\x08:\x04true\x12\x13\n\x04opus\x18\x04 \x01(\x08:\x05\x66\x61lse\"\xb8\x04\n\tUserStats\x12\x0f\n\x07session\x18\x01 \x01(\r\x12\x19\n\nstats_only\x18\x02 \x01(\x08:\x05\x66\x61lse\x12\x14\n\x0c\x63\x65rtificates\x18\x03 \x03(\x0c\x12\x31\n\x0b\x66rom_client\x18\x04 \x01(\x0b\x32\x1c.MumbleProto.UserStats.Stats\x12\x31\n\x0b\x66rom_server\x18\x05 \x01(\x0b\x32\x1c.MumbleProto.UserStats.Stats\x12\x13\n\x0budp_packets\x18\x06 \x01(\r\x12\x13\n\x0btcp_packets\x18\x07 \x01(\r\x12\x14\n\x0cudp_ping_avg\x18\x08 \x01(\x02\x12\x14\n\x0cudp_ping_var\x18\t \x01(\x02\x12\x14\n\x0ctcp_ping_avg\x18\n \x01(\x02\x12\x14\n\x0ctcp_ping_var\x18\x0b \x01(\x02\x12%\n\x07version\x18\x0c \x01(\x0b\x32\x14.MumbleProto.Version\x12\x15\n\rcelt_versions\x18\r \x03(\x05\x12\x0f\n\x07\x61\x64\x64ress\x18\x0e \x01(\x0c\x12\x11\n\tbandwidth\x18\x0f \x01(\r\x12\x12\n\nonlinesecs\x18\x10 \x01(\r\x12\x10\n\x08idlesecs\x18\x11 \x01(\r\x12!\n\x12strong_certificate\x18\x12 \x01(\x08:\x05\x66\x61lse\x12\x13\n\x04opus\x18\x13 \x01(\x08:\x05\x66\x61lse\x1a\x41\n\x05Stats\x12\x0c\n\x04good\x18\x01 \x01(\r\x12\x0c\n\x04late\x18\x02 \x01(\r\x12\x0c\n\x04lost\x18\x03 \x01(\r\x12\x0e\n\x06resync\x18\x04 \x01(\r\"\\\n\x0bRequestBlob\x12\x17\n\x0fsession_texture\x18\x01 \x03(\r\x12\x17\n\x0fsession_comment\x18\x02 \x03(\r\x12\x1b\n\x13\x63hannel_description\x18\x03 \x03(\r\"\x98\x01\n\x0cServerConfig\x12\x15\n\rmax_bandwidth\x18\x01 \x01(\r\x12\x14\n\x0cwelcome_text\x18\x02 \x01(\t\x12\x12\n\nallow_html\x18\x03 \x01(\x08\x12\x16\n\x0emessage_length\x18\x04 \x01(\r\x12\x1c\n\x14image_message_length\x18\x05 \x01(\r\x12\x11\n\tmax_users\x18\x06 \x01(\r\"J\n\rSuggestConfig\x12\x0f\n\x07version\x18\x01 \x01(\r\x12\x12\n\npositional\x18\x02 \x01(\x08\x12\x14\n\x0cpush_to_talk\x18\x03 \x01(\x08\x42\x02H\x01') ) + _REJECT_REJECTTYPE = _descriptor.EnumDescriptor( - name="RejectType", - full_name="MumbleProto.Reject.RejectType", - filename=None, - file=DESCRIPTOR, - values=[ - _descriptor.EnumValueDescriptor( - name="None", index=0, number=0, options=None, type=None - ), - _descriptor.EnumValueDescriptor( - name="WrongVersion", index=1, number=1, options=None, type=None - ), - _descriptor.EnumValueDescriptor( - name="InvalidUsername", index=2, number=2, options=None, type=None - ), - _descriptor.EnumValueDescriptor( - name="WrongUserPW", index=3, number=3, options=None, type=None - ), - _descriptor.EnumValueDescriptor( - name="WrongServerPW", index=4, number=4, options=None, type=None - ), - _descriptor.EnumValueDescriptor( - name="UsernameInUse", index=5, number=5, options=None, type=None - ), - _descriptor.EnumValueDescriptor( - name="ServerFull", index=6, number=6, options=None, type=None - ), - _descriptor.EnumValueDescriptor( - name="NoCertificate", index=7, number=7, options=None, type=None - ), - _descriptor.EnumValueDescriptor( - name="AuthenticatorFail", index=8, number=8, options=None, type=None - ), - ], - containing_type=None, - options=None, - serialized_start=537, - serialized_end=711, + name='RejectType', + full_name='MumbleProto.Reject.RejectType', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='None', index=0, number=0, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='WrongVersion', index=1, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='InvalidUsername', index=2, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='WrongUserPW', index=3, number=3, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='WrongServerPW', index=4, number=4, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='UsernameInUse', index=5, number=5, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ServerFull', index=6, number=6, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='NoCertificate', index=7, number=7, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='AuthenticatorFail', index=8, number=8, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=537, + serialized_end=711, ) _sym_db.RegisterEnumDescriptor(_REJECT_REJECTTYPE) _PERMISSIONDENIED_DENYTYPE = _descriptor.EnumDescriptor( - name="DenyType", - full_name="MumbleProto.PermissionDenied.DenyType", - filename=None, - file=DESCRIPTOR, - values=[ - _descriptor.EnumValueDescriptor( - name="Text", index=0, number=0, options=None, type=None - ), - _descriptor.EnumValueDescriptor( - name="Permission", index=1, number=1, options=None, type=None - ), - _descriptor.EnumValueDescriptor( - name="SuperUser", index=2, number=2, options=None, type=None - ), - _descriptor.EnumValueDescriptor( - name="ChannelName", index=3, number=3, options=None, type=None - ), - _descriptor.EnumValueDescriptor( - name="TextTooLong", index=4, number=4, options=None, type=None - ), - _descriptor.EnumValueDescriptor( - name="H9K", index=5, number=5, options=None, type=None - ), - _descriptor.EnumValueDescriptor( - name="TemporaryChannel", index=6, number=6, options=None, type=None - ), - _descriptor.EnumValueDescriptor( - name="MissingCertificate", index=7, number=7, options=None, type=None - ), - _descriptor.EnumValueDescriptor( - name="UserName", index=8, number=8, options=None, type=None - ), - _descriptor.EnumValueDescriptor( - name="ChannelFull", index=9, number=9, options=None, type=None - ), - _descriptor.EnumValueDescriptor( - name="NestingLimit", index=10, number=10, options=None, type=None - ), - ], - containing_type=None, - options=None, - serialized_start=1988, - serialized_end=2177, + name='DenyType', + full_name='MumbleProto.PermissionDenied.DenyType', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='Text', index=0, number=0, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='Permission', index=1, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='SuperUser', index=2, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ChannelName', index=3, number=3, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='TextTooLong', index=4, number=4, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='H9K', index=5, number=5, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='TemporaryChannel', index=6, number=6, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MissingCertificate', index=7, number=7, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='UserName', index=8, number=8, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ChannelFull', index=9, number=9, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='NestingLimit', index=10, number=10, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=1988, + serialized_end=2177, ) _sym_db.RegisterEnumDescriptor(_PERMISSIONDENIED_DENYTYPE) _CONTEXTACTIONMODIFY_CONTEXT = _descriptor.EnumDescriptor( - name="Context", - full_name="MumbleProto.ContextActionModify.Context", - filename=None, - file=DESCRIPTOR, - values=[ - _descriptor.EnumValueDescriptor( - name="Server", index=0, number=1, options=None, type=None - ), - _descriptor.EnumValueDescriptor( - name="Channel", index=1, number=2, options=None, type=None - ), - _descriptor.EnumValueDescriptor( - name="User", index=2, number=4, options=None, type=None - ), - ], - containing_type=None, - options=None, - serialized_start=2897, - serialized_end=2941, + name='Context', + full_name='MumbleProto.ContextActionModify.Context', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='Server', index=0, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='Channel', index=1, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='User', index=2, number=4, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=2897, + serialized_end=2941, ) _sym_db.RegisterEnumDescriptor(_CONTEXTACTIONMODIFY_CONTEXT) _CONTEXTACTIONMODIFY_OPERATION = _descriptor.EnumDescriptor( - name="Operation", - full_name="MumbleProto.ContextActionModify.Operation", - filename=None, - file=DESCRIPTOR, - values=[ - _descriptor.EnumValueDescriptor( - name="Add", index=0, number=0, options=None, type=None - ), - _descriptor.EnumValueDescriptor( - name="Remove", index=1, number=1, options=None, type=None - ), - ], - containing_type=None, - options=None, - serialized_start=2943, - serialized_end=2975, + name='Operation', + full_name='MumbleProto.ContextActionModify.Operation', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='Add', index=0, number=0, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='Remove', index=1, number=1, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=2943, + serialized_end=2975, ) _sym_db.RegisterEnumDescriptor(_CONTEXTACTIONMODIFY_OPERATION) _VERSION = _descriptor.Descriptor( - name="Version", - full_name="MumbleProto.Version", - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name="version", - full_name="MumbleProto.Version.version", - index=0, - number=1, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="release", - full_name="MumbleProto.Version.release", - index=1, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=_b("").decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="os", - full_name="MumbleProto.Version.os", - index=2, - number=3, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=_b("").decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="os_version", - full_name="MumbleProto.Version.os_version", - index=3, - number=4, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=_b("").decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=29, - serialized_end=104, + name='Version', + full_name='MumbleProto.Version', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='version', full_name='MumbleProto.Version.version', index=0, + number=1, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='release', full_name='MumbleProto.Version.release', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='os', full_name='MumbleProto.Version.os', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='os_version', full_name='MumbleProto.Version.os_version', index=3, + number=4, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=29, + serialized_end=104, ) _UDPTUNNEL = _descriptor.Descriptor( - name="UDPTunnel", - full_name="MumbleProto.UDPTunnel", - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name="packet", - full_name="MumbleProto.UDPTunnel.packet", - index=0, - number=1, - type=12, - cpp_type=9, - label=2, - has_default_value=False, - default_value=_b(""), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=106, - serialized_end=133, + name='UDPTunnel', + full_name='MumbleProto.UDPTunnel', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='packet', full_name='MumbleProto.UDPTunnel.packet', index=0, + number=1, type=12, cpp_type=9, label=2, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=106, + serialized_end=133, ) _AUTHENTICATE = _descriptor.Descriptor( - name="Authenticate", - full_name="MumbleProto.Authenticate", - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name="username", - full_name="MumbleProto.Authenticate.username", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=_b("").decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="password", - full_name="MumbleProto.Authenticate.password", - index=1, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=_b("").decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="tokens", - full_name="MumbleProto.Authenticate.tokens", - index=2, - number=3, - type=9, - cpp_type=9, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="celt_versions", - full_name="MumbleProto.Authenticate.celt_versions", - index=3, - number=4, - type=5, - cpp_type=1, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="opus", - full_name="MumbleProto.Authenticate.opus", - index=4, - number=5, - type=8, - cpp_type=7, - label=1, - has_default_value=True, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=135, - serialized_end=245, + name='Authenticate', + full_name='MumbleProto.Authenticate', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='username', full_name='MumbleProto.Authenticate.username', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='password', full_name='MumbleProto.Authenticate.password', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='tokens', full_name='MumbleProto.Authenticate.tokens', index=2, + number=3, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='celt_versions', full_name='MumbleProto.Authenticate.celt_versions', index=3, + number=4, type=5, cpp_type=1, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='opus', full_name='MumbleProto.Authenticate.opus', index=4, + number=5, type=8, cpp_type=7, label=1, + has_default_value=True, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=135, + serialized_end=245, ) _PING = _descriptor.Descriptor( - name="Ping", - full_name="MumbleProto.Ping", - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name="timestamp", - full_name="MumbleProto.Ping.timestamp", - index=0, - number=1, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="good", - full_name="MumbleProto.Ping.good", - index=1, - number=2, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="late", - full_name="MumbleProto.Ping.late", - index=2, - number=3, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="lost", - full_name="MumbleProto.Ping.lost", - index=3, - number=4, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="resync", - full_name="MumbleProto.Ping.resync", - index=4, - number=5, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="udp_packets", - full_name="MumbleProto.Ping.udp_packets", - index=5, - number=6, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="tcp_packets", - full_name="MumbleProto.Ping.tcp_packets", - index=6, - number=7, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="udp_ping_avg", - full_name="MumbleProto.Ping.udp_ping_avg", - index=7, - number=8, - type=2, - cpp_type=6, - label=1, - has_default_value=False, - default_value=float(0), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="udp_ping_var", - full_name="MumbleProto.Ping.udp_ping_var", - index=8, - number=9, - type=2, - cpp_type=6, - label=1, - has_default_value=False, - default_value=float(0), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="tcp_ping_avg", - full_name="MumbleProto.Ping.tcp_ping_avg", - index=9, - number=10, - type=2, - cpp_type=6, - label=1, - has_default_value=False, - default_value=float(0), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="tcp_ping_var", - full_name="MumbleProto.Ping.tcp_ping_var", - index=10, - number=11, - type=2, - cpp_type=6, - label=1, - has_default_value=False, - default_value=float(0), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=248, - serialized_end=461, + name='Ping', + full_name='MumbleProto.Ping', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='timestamp', full_name='MumbleProto.Ping.timestamp', index=0, + number=1, type=4, cpp_type=4, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='good', full_name='MumbleProto.Ping.good', index=1, + number=2, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='late', full_name='MumbleProto.Ping.late', index=2, + number=3, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='lost', full_name='MumbleProto.Ping.lost', index=3, + number=4, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='resync', full_name='MumbleProto.Ping.resync', index=4, + number=5, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='udp_packets', full_name='MumbleProto.Ping.udp_packets', index=5, + number=6, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='tcp_packets', full_name='MumbleProto.Ping.tcp_packets', index=6, + number=7, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='udp_ping_avg', full_name='MumbleProto.Ping.udp_ping_avg', index=7, + number=8, type=2, cpp_type=6, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='udp_ping_var', full_name='MumbleProto.Ping.udp_ping_var', index=8, + number=9, type=2, cpp_type=6, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='tcp_ping_avg', full_name='MumbleProto.Ping.tcp_ping_avg', index=9, + number=10, type=2, cpp_type=6, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='tcp_ping_var', full_name='MumbleProto.Ping.tcp_ping_var', index=10, + number=11, type=2, cpp_type=6, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=248, + serialized_end=461, ) _REJECT = _descriptor.Descriptor( - name="Reject", - full_name="MumbleProto.Reject", - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name="type", - full_name="MumbleProto.Reject.type", - index=0, - number=1, - type=14, - cpp_type=8, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="reason", - full_name="MumbleProto.Reject.reason", - index=1, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=_b("").decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - ], - extensions=[], - nested_types=[], - enum_types=[_REJECT_REJECTTYPE,], - options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=464, - serialized_end=711, + name='Reject', + full_name='MumbleProto.Reject', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='type', full_name='MumbleProto.Reject.type', index=0, + number=1, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='reason', full_name='MumbleProto.Reject.reason', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + _REJECT_REJECTTYPE, + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=464, + serialized_end=711, ) _SERVERSYNC = _descriptor.Descriptor( - name="ServerSync", - full_name="MumbleProto.ServerSync", - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name="session", - full_name="MumbleProto.ServerSync.session", - index=0, - number=1, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="max_bandwidth", - full_name="MumbleProto.ServerSync.max_bandwidth", - index=1, - number=2, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="welcome_text", - full_name="MumbleProto.ServerSync.welcome_text", - index=2, - number=3, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=_b("").decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="permissions", - full_name="MumbleProto.ServerSync.permissions", - index=3, - number=4, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=713, - serialized_end=808, + name='ServerSync', + full_name='MumbleProto.ServerSync', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='session', full_name='MumbleProto.ServerSync.session', index=0, + number=1, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='max_bandwidth', full_name='MumbleProto.ServerSync.max_bandwidth', index=1, + number=2, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='welcome_text', full_name='MumbleProto.ServerSync.welcome_text', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='permissions', full_name='MumbleProto.ServerSync.permissions', index=3, + number=4, type=4, cpp_type=4, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=713, + serialized_end=808, ) _CHANNELREMOVE = _descriptor.Descriptor( - name="ChannelRemove", - full_name="MumbleProto.ChannelRemove", - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name="channel_id", - full_name="MumbleProto.ChannelRemove.channel_id", - index=0, - number=1, - type=13, - cpp_type=3, - label=2, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=810, - serialized_end=845, + name='ChannelRemove', + full_name='MumbleProto.ChannelRemove', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='channel_id', full_name='MumbleProto.ChannelRemove.channel_id', index=0, + number=1, type=13, cpp_type=3, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=810, + serialized_end=845, ) _CHANNELSTATE = _descriptor.Descriptor( - name="ChannelState", - full_name="MumbleProto.ChannelState", - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name="channel_id", - full_name="MumbleProto.ChannelState.channel_id", - index=0, - number=1, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="parent", - full_name="MumbleProto.ChannelState.parent", - index=1, - number=2, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="name", - full_name="MumbleProto.ChannelState.name", - index=2, - number=3, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=_b("").decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="links", - full_name="MumbleProto.ChannelState.links", - index=3, - number=4, - type=13, - cpp_type=3, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="description", - full_name="MumbleProto.ChannelState.description", - index=4, - number=5, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=_b("").decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="links_add", - full_name="MumbleProto.ChannelState.links_add", - index=5, - number=6, - type=13, - cpp_type=3, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="links_remove", - full_name="MumbleProto.ChannelState.links_remove", - index=6, - number=7, - type=13, - cpp_type=3, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="temporary", - full_name="MumbleProto.ChannelState.temporary", - index=7, - number=8, - type=8, - cpp_type=7, - label=1, - has_default_value=True, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="position", - full_name="MumbleProto.ChannelState.position", - index=8, - number=9, - type=5, - cpp_type=1, - label=1, - has_default_value=True, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="description_hash", - full_name="MumbleProto.ChannelState.description_hash", - index=9, - number=10, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=_b(""), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="max_users", - full_name="MumbleProto.ChannelState.max_users", - index=10, - number=11, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=848, - serialized_end=1081, + name='ChannelState', + full_name='MumbleProto.ChannelState', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='channel_id', full_name='MumbleProto.ChannelState.channel_id', index=0, + number=1, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='parent', full_name='MumbleProto.ChannelState.parent', index=1, + number=2, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='name', full_name='MumbleProto.ChannelState.name', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='links', full_name='MumbleProto.ChannelState.links', index=3, + number=4, type=13, cpp_type=3, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='description', full_name='MumbleProto.ChannelState.description', index=4, + number=5, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='links_add', full_name='MumbleProto.ChannelState.links_add', index=5, + number=6, type=13, cpp_type=3, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='links_remove', full_name='MumbleProto.ChannelState.links_remove', index=6, + number=7, type=13, cpp_type=3, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='temporary', full_name='MumbleProto.ChannelState.temporary', index=7, + number=8, type=8, cpp_type=7, label=1, + has_default_value=True, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='position', full_name='MumbleProto.ChannelState.position', index=8, + number=9, type=5, cpp_type=1, label=1, + has_default_value=True, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='description_hash', full_name='MumbleProto.ChannelState.description_hash', index=9, + number=10, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='max_users', full_name='MumbleProto.ChannelState.max_users', index=10, + number=11, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=848, + serialized_end=1081, ) _USERREMOVE = _descriptor.Descriptor( - name="UserRemove", - full_name="MumbleProto.UserRemove", - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name="session", - full_name="MumbleProto.UserRemove.session", - index=0, - number=1, - type=13, - cpp_type=3, - label=2, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="actor", - full_name="MumbleProto.UserRemove.actor", - index=1, - number=2, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="reason", - full_name="MumbleProto.UserRemove.reason", - index=2, - number=3, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=_b("").decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="ban", - full_name="MumbleProto.UserRemove.ban", - index=3, - number=4, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=1083, - serialized_end=1156, + name='UserRemove', + full_name='MumbleProto.UserRemove', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='session', full_name='MumbleProto.UserRemove.session', index=0, + number=1, type=13, cpp_type=3, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='actor', full_name='MumbleProto.UserRemove.actor', index=1, + number=2, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='reason', full_name='MumbleProto.UserRemove.reason', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='ban', full_name='MumbleProto.UserRemove.ban', index=3, + number=4, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1083, + serialized_end=1156, ) _USERSTATE = _descriptor.Descriptor( - name="UserState", - full_name="MumbleProto.UserState", - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name="session", - full_name="MumbleProto.UserState.session", - index=0, - number=1, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="actor", - full_name="MumbleProto.UserState.actor", - index=1, - number=2, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="name", - full_name="MumbleProto.UserState.name", - index=2, - number=3, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=_b("").decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="user_id", - full_name="MumbleProto.UserState.user_id", - index=3, - number=4, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="channel_id", - full_name="MumbleProto.UserState.channel_id", - index=4, - number=5, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="mute", - full_name="MumbleProto.UserState.mute", - index=5, - number=6, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="deaf", - full_name="MumbleProto.UserState.deaf", - index=6, - number=7, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="suppress", - full_name="MumbleProto.UserState.suppress", - index=7, - number=8, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="self_mute", - full_name="MumbleProto.UserState.self_mute", - index=8, - number=9, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="self_deaf", - full_name="MumbleProto.UserState.self_deaf", - index=9, - number=10, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="texture", - full_name="MumbleProto.UserState.texture", - index=10, - number=11, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=_b(""), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="plugin_context", - full_name="MumbleProto.UserState.plugin_context", - index=11, - number=12, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=_b(""), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="plugin_identity", - full_name="MumbleProto.UserState.plugin_identity", - index=12, - number=13, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=_b("").decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="comment", - full_name="MumbleProto.UserState.comment", - index=13, - number=14, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=_b("").decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="hash", - full_name="MumbleProto.UserState.hash", - index=14, - number=15, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=_b("").decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="comment_hash", - full_name="MumbleProto.UserState.comment_hash", - index=15, - number=16, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=_b(""), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="texture_hash", - full_name="MumbleProto.UserState.texture_hash", - index=16, - number=17, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=_b(""), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="priority_speaker", - full_name="MumbleProto.UserState.priority_speaker", - index=17, - number=18, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="recording", - full_name="MumbleProto.UserState.recording", - index=18, - number=19, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=1159, - serialized_end=1523, + name='UserState', + full_name='MumbleProto.UserState', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='session', full_name='MumbleProto.UserState.session', index=0, + number=1, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='actor', full_name='MumbleProto.UserState.actor', index=1, + number=2, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='name', full_name='MumbleProto.UserState.name', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='user_id', full_name='MumbleProto.UserState.user_id', index=3, + number=4, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='channel_id', full_name='MumbleProto.UserState.channel_id', index=4, + number=5, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='mute', full_name='MumbleProto.UserState.mute', index=5, + number=6, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='deaf', full_name='MumbleProto.UserState.deaf', index=6, + number=7, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='suppress', full_name='MumbleProto.UserState.suppress', index=7, + number=8, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='self_mute', full_name='MumbleProto.UserState.self_mute', index=8, + number=9, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='self_deaf', full_name='MumbleProto.UserState.self_deaf', index=9, + number=10, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='texture', full_name='MumbleProto.UserState.texture', index=10, + number=11, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='plugin_context', full_name='MumbleProto.UserState.plugin_context', index=11, + number=12, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='plugin_identity', full_name='MumbleProto.UserState.plugin_identity', index=12, + number=13, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='comment', full_name='MumbleProto.UserState.comment', index=13, + number=14, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='hash', full_name='MumbleProto.UserState.hash', index=14, + number=15, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='comment_hash', full_name='MumbleProto.UserState.comment_hash', index=15, + number=16, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='texture_hash', full_name='MumbleProto.UserState.texture_hash', index=16, + number=17, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='priority_speaker', full_name='MumbleProto.UserState.priority_speaker', index=17, + number=18, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='recording', full_name='MumbleProto.UserState.recording', index=18, + number=19, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1159, + serialized_end=1523, ) _BANLIST_BANENTRY = _descriptor.Descriptor( - name="BanEntry", - full_name="MumbleProto.BanList.BanEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name="address", - full_name="MumbleProto.BanList.BanEntry.address", - index=0, - number=1, - type=12, - cpp_type=9, - label=2, - has_default_value=False, - default_value=_b(""), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="mask", - full_name="MumbleProto.BanList.BanEntry.mask", - index=1, - number=2, - type=13, - cpp_type=3, - label=2, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="name", - full_name="MumbleProto.BanList.BanEntry.name", - index=2, - number=3, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=_b("").decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="hash", - full_name="MumbleProto.BanList.BanEntry.hash", - index=3, - number=4, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=_b("").decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="reason", - full_name="MumbleProto.BanList.BanEntry.reason", - index=4, - number=5, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=_b("").decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="start", - full_name="MumbleProto.BanList.BanEntry.start", - index=5, - number=6, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=_b("").decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="duration", - full_name="MumbleProto.BanList.BanEntry.duration", - index=6, - number=7, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=1604, - serialized_end=1722, + name='BanEntry', + full_name='MumbleProto.BanList.BanEntry', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='address', full_name='MumbleProto.BanList.BanEntry.address', index=0, + number=1, type=12, cpp_type=9, label=2, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='mask', full_name='MumbleProto.BanList.BanEntry.mask', index=1, + number=2, type=13, cpp_type=3, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='name', full_name='MumbleProto.BanList.BanEntry.name', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='hash', full_name='MumbleProto.BanList.BanEntry.hash', index=3, + number=4, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='reason', full_name='MumbleProto.BanList.BanEntry.reason', index=4, + number=5, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='start', full_name='MumbleProto.BanList.BanEntry.start', index=5, + number=6, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='duration', full_name='MumbleProto.BanList.BanEntry.duration', index=6, + number=7, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1604, + serialized_end=1722, ) _BANLIST = _descriptor.Descriptor( - name="BanList", - full_name="MumbleProto.BanList", - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name="bans", - full_name="MumbleProto.BanList.bans", - index=0, - number=1, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="query", - full_name="MumbleProto.BanList.query", - index=1, - number=2, - type=8, - cpp_type=7, - label=1, - has_default_value=True, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - ], - extensions=[], - nested_types=[_BANLIST_BANENTRY,], - enum_types=[], - options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=1526, - serialized_end=1722, + name='BanList', + full_name='MumbleProto.BanList', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='bans', full_name='MumbleProto.BanList.bans', index=0, + number=1, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='query', full_name='MumbleProto.BanList.query', index=1, + number=2, type=8, cpp_type=7, label=1, + has_default_value=True, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[_BANLIST_BANENTRY, ], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1526, + serialized_end=1722, ) _TEXTMESSAGE = _descriptor.Descriptor( - name="TextMessage", - full_name="MumbleProto.TextMessage", - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name="actor", - full_name="MumbleProto.TextMessage.actor", - index=0, - number=1, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="session", - full_name="MumbleProto.TextMessage.session", - index=1, - number=2, - type=13, - cpp_type=3, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="channel_id", - full_name="MumbleProto.TextMessage.channel_id", - index=2, - number=3, - type=13, - cpp_type=3, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="tree_id", - full_name="MumbleProto.TextMessage.tree_id", - index=3, - number=4, - type=13, - cpp_type=3, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="message", - full_name="MumbleProto.TextMessage.message", - index=4, - number=5, - type=9, - cpp_type=9, - label=2, - has_default_value=False, - default_value=_b("").decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=1724, - serialized_end=1823, + name='TextMessage', + full_name='MumbleProto.TextMessage', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='actor', full_name='MumbleProto.TextMessage.actor', index=0, + number=1, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='session', full_name='MumbleProto.TextMessage.session', index=1, + number=2, type=13, cpp_type=3, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='channel_id', full_name='MumbleProto.TextMessage.channel_id', index=2, + number=3, type=13, cpp_type=3, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='tree_id', full_name='MumbleProto.TextMessage.tree_id', index=3, + number=4, type=13, cpp_type=3, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='message', full_name='MumbleProto.TextMessage.message', index=4, + number=5, type=9, cpp_type=9, label=2, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1724, + serialized_end=1823, ) _PERMISSIONDENIED = _descriptor.Descriptor( - name="PermissionDenied", - full_name="MumbleProto.PermissionDenied", - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name="permission", - full_name="MumbleProto.PermissionDenied.permission", - index=0, - number=1, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="channel_id", - full_name="MumbleProto.PermissionDenied.channel_id", - index=1, - number=2, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="session", - full_name="MumbleProto.PermissionDenied.session", - index=2, - number=3, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="reason", - full_name="MumbleProto.PermissionDenied.reason", - index=3, - number=4, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=_b("").decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="type", - full_name="MumbleProto.PermissionDenied.type", - index=4, - number=5, - type=14, - cpp_type=8, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="name", - full_name="MumbleProto.PermissionDenied.name", - index=5, - number=6, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=_b("").decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - ], - extensions=[], - nested_types=[], - enum_types=[_PERMISSIONDENIED_DENYTYPE,], - options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=1826, - serialized_end=2177, + name='PermissionDenied', + full_name='MumbleProto.PermissionDenied', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='permission', full_name='MumbleProto.PermissionDenied.permission', index=0, + number=1, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='channel_id', full_name='MumbleProto.PermissionDenied.channel_id', index=1, + number=2, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='session', full_name='MumbleProto.PermissionDenied.session', index=2, + number=3, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='reason', full_name='MumbleProto.PermissionDenied.reason', index=3, + number=4, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='type', full_name='MumbleProto.PermissionDenied.type', index=4, + number=5, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='name', full_name='MumbleProto.PermissionDenied.name', index=5, + number=6, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + _PERMISSIONDENIED_DENYTYPE, + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1826, + serialized_end=2177, ) _ACL_CHANGROUP = _descriptor.Descriptor( - name="ChanGroup", - full_name="MumbleProto.ACL.ChanGroup", - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name="name", - full_name="MumbleProto.ACL.ChanGroup.name", - index=0, - number=1, - type=9, - cpp_type=9, - label=2, - has_default_value=False, - default_value=_b("").decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="inherited", - full_name="MumbleProto.ACL.ChanGroup.inherited", - index=1, - number=2, - type=8, - cpp_type=7, - label=1, - has_default_value=True, - default_value=True, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="inherit", - full_name="MumbleProto.ACL.ChanGroup.inherit", - index=2, - number=3, - type=8, - cpp_type=7, - label=1, - has_default_value=True, - default_value=True, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="inheritable", - full_name="MumbleProto.ACL.ChanGroup.inheritable", - index=3, - number=4, - type=8, - cpp_type=7, - label=1, - has_default_value=True, - default_value=True, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="add", - full_name="MumbleProto.ACL.ChanGroup.add", - index=4, - number=5, - type=13, - cpp_type=3, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="remove", - full_name="MumbleProto.ACL.ChanGroup.remove", - index=5, - number=6, - type=13, - cpp_type=3, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="inherited_members", - full_name="MumbleProto.ACL.ChanGroup.inherited_members", - index=6, - number=7, - type=13, - cpp_type=3, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=2342, - serialized_end=2498, + name='ChanGroup', + full_name='MumbleProto.ACL.ChanGroup', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='name', full_name='MumbleProto.ACL.ChanGroup.name', index=0, + number=1, type=9, cpp_type=9, label=2, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='inherited', full_name='MumbleProto.ACL.ChanGroup.inherited', index=1, + number=2, type=8, cpp_type=7, label=1, + has_default_value=True, default_value=True, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='inherit', full_name='MumbleProto.ACL.ChanGroup.inherit', index=2, + number=3, type=8, cpp_type=7, label=1, + has_default_value=True, default_value=True, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='inheritable', full_name='MumbleProto.ACL.ChanGroup.inheritable', index=3, + number=4, type=8, cpp_type=7, label=1, + has_default_value=True, default_value=True, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='add', full_name='MumbleProto.ACL.ChanGroup.add', index=4, + number=5, type=13, cpp_type=3, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='remove', full_name='MumbleProto.ACL.ChanGroup.remove', index=5, + number=6, type=13, cpp_type=3, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='inherited_members', full_name='MumbleProto.ACL.ChanGroup.inherited_members', index=6, + number=7, type=13, cpp_type=3, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=2342, + serialized_end=2498, ) _ACL_CHANACL = _descriptor.Descriptor( - name="ChanACL", - full_name="MumbleProto.ACL.ChanACL", - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name="apply_here", - full_name="MumbleProto.ACL.ChanACL.apply_here", - index=0, - number=1, - type=8, - cpp_type=7, - label=1, - has_default_value=True, - default_value=True, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="apply_subs", - full_name="MumbleProto.ACL.ChanACL.apply_subs", - index=1, - number=2, - type=8, - cpp_type=7, - label=1, - has_default_value=True, - default_value=True, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="inherited", - full_name="MumbleProto.ACL.ChanACL.inherited", - index=2, - number=3, - type=8, - cpp_type=7, - label=1, - has_default_value=True, - default_value=True, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="user_id", - full_name="MumbleProto.ACL.ChanACL.user_id", - index=3, - number=4, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="group", - full_name="MumbleProto.ACL.ChanACL.group", - index=4, - number=5, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=_b("").decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="grant", - full_name="MumbleProto.ACL.ChanACL.grant", - index=5, - number=6, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="deny", - full_name="MumbleProto.ACL.ChanACL.deny", - index=6, - number=7, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=2501, - serialized_end=2648, + name='ChanACL', + full_name='MumbleProto.ACL.ChanACL', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='apply_here', full_name='MumbleProto.ACL.ChanACL.apply_here', index=0, + number=1, type=8, cpp_type=7, label=1, + has_default_value=True, default_value=True, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='apply_subs', full_name='MumbleProto.ACL.ChanACL.apply_subs', index=1, + number=2, type=8, cpp_type=7, label=1, + has_default_value=True, default_value=True, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='inherited', full_name='MumbleProto.ACL.ChanACL.inherited', index=2, + number=3, type=8, cpp_type=7, label=1, + has_default_value=True, default_value=True, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='user_id', full_name='MumbleProto.ACL.ChanACL.user_id', index=3, + number=4, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='group', full_name='MumbleProto.ACL.ChanACL.group', index=4, + number=5, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='grant', full_name='MumbleProto.ACL.ChanACL.grant', index=5, + number=6, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='deny', full_name='MumbleProto.ACL.ChanACL.deny', index=6, + number=7, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=2501, + serialized_end=2648, ) _ACL = _descriptor.Descriptor( - name="ACL", - full_name="MumbleProto.ACL", - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name="channel_id", - full_name="MumbleProto.ACL.channel_id", - index=0, - number=1, - type=13, - cpp_type=3, - label=2, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="inherit_acls", - full_name="MumbleProto.ACL.inherit_acls", - index=1, - number=2, - type=8, - cpp_type=7, - label=1, - has_default_value=True, - default_value=True, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="groups", - full_name="MumbleProto.ACL.groups", - index=2, - number=3, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="acls", - full_name="MumbleProto.ACL.acls", - index=3, - number=4, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="query", - full_name="MumbleProto.ACL.query", - index=4, - number=5, - type=8, - cpp_type=7, - label=1, - has_default_value=True, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - ], - extensions=[], - nested_types=[_ACL_CHANGROUP, _ACL_CHANACL,], - enum_types=[], - options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=2180, - serialized_end=2648, + name='ACL', + full_name='MumbleProto.ACL', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='channel_id', full_name='MumbleProto.ACL.channel_id', index=0, + number=1, type=13, cpp_type=3, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='inherit_acls', full_name='MumbleProto.ACL.inherit_acls', index=1, + number=2, type=8, cpp_type=7, label=1, + has_default_value=True, default_value=True, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='groups', full_name='MumbleProto.ACL.groups', index=2, + number=3, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='acls', full_name='MumbleProto.ACL.acls', index=3, + number=4, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='query', full_name='MumbleProto.ACL.query', index=4, + number=5, type=8, cpp_type=7, label=1, + has_default_value=True, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[_ACL_CHANGROUP, _ACL_CHANACL, ], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=2180, + serialized_end=2648, ) _QUERYUSERS = _descriptor.Descriptor( - name="QueryUsers", - full_name="MumbleProto.QueryUsers", - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name="ids", - full_name="MumbleProto.QueryUsers.ids", - index=0, - number=1, - type=13, - cpp_type=3, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="names", - full_name="MumbleProto.QueryUsers.names", - index=1, - number=2, - type=9, - cpp_type=9, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=2650, - serialized_end=2690, + name='QueryUsers', + full_name='MumbleProto.QueryUsers', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='ids', full_name='MumbleProto.QueryUsers.ids', index=0, + number=1, type=13, cpp_type=3, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='names', full_name='MumbleProto.QueryUsers.names', index=1, + number=2, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=2650, + serialized_end=2690, ) _CRYPTSETUP = _descriptor.Descriptor( - name="CryptSetup", - full_name="MumbleProto.CryptSetup", - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="MumbleProto.CryptSetup.key", - index=0, - number=1, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=_b(""), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="client_nonce", - full_name="MumbleProto.CryptSetup.client_nonce", - index=1, - number=2, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=_b(""), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="server_nonce", - full_name="MumbleProto.CryptSetup.server_nonce", - index=2, - number=3, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=_b(""), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=2692, - serialized_end=2761, + name='CryptSetup', + full_name='MumbleProto.CryptSetup', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='key', full_name='MumbleProto.CryptSetup.key', index=0, + number=1, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='client_nonce', full_name='MumbleProto.CryptSetup.client_nonce', index=1, + number=2, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='server_nonce', full_name='MumbleProto.CryptSetup.server_nonce', index=2, + number=3, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=2692, + serialized_end=2761, ) _CONTEXTACTIONMODIFY = _descriptor.Descriptor( - name="ContextActionModify", - full_name="MumbleProto.ContextActionModify", - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name="action", - full_name="MumbleProto.ContextActionModify.action", - index=0, - number=1, - type=9, - cpp_type=9, - label=2, - has_default_value=False, - default_value=_b("").decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="text", - full_name="MumbleProto.ContextActionModify.text", - index=1, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=_b("").decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="context", - full_name="MumbleProto.ContextActionModify.context", - index=2, - number=3, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="operation", - full_name="MumbleProto.ContextActionModify.operation", - index=3, - number=4, - type=14, - cpp_type=8, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - ], - extensions=[], - nested_types=[], - enum_types=[_CONTEXTACTIONMODIFY_CONTEXT, _CONTEXTACTIONMODIFY_OPERATION,], - options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=2764, - serialized_end=2975, + name='ContextActionModify', + full_name='MumbleProto.ContextActionModify', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='action', full_name='MumbleProto.ContextActionModify.action', index=0, + number=1, type=9, cpp_type=9, label=2, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='text', full_name='MumbleProto.ContextActionModify.text', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='context', full_name='MumbleProto.ContextActionModify.context', index=2, + number=3, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='operation', full_name='MumbleProto.ContextActionModify.operation', index=3, + number=4, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + _CONTEXTACTIONMODIFY_CONTEXT, + _CONTEXTACTIONMODIFY_OPERATION, + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=2764, + serialized_end=2975, ) _CONTEXTACTION = _descriptor.Descriptor( - name="ContextAction", - full_name="MumbleProto.ContextAction", - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name="session", - full_name="MumbleProto.ContextAction.session", - index=0, - number=1, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="channel_id", - full_name="MumbleProto.ContextAction.channel_id", - index=1, - number=2, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="action", - full_name="MumbleProto.ContextAction.action", - index=2, - number=3, - type=9, - cpp_type=9, - label=2, - has_default_value=False, - default_value=_b("").decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=2977, - serialized_end=3045, + name='ContextAction', + full_name='MumbleProto.ContextAction', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='session', full_name='MumbleProto.ContextAction.session', index=0, + number=1, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='channel_id', full_name='MumbleProto.ContextAction.channel_id', index=1, + number=2, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='action', full_name='MumbleProto.ContextAction.action', index=2, + number=3, type=9, cpp_type=9, label=2, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=2977, + serialized_end=3045, ) _USERLIST_USER = _descriptor.Descriptor( - name="User", - full_name="MumbleProto.UserList.User", - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name="user_id", - full_name="MumbleProto.UserList.User.user_id", - index=0, - number=1, - type=13, - cpp_type=3, - label=2, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="name", - full_name="MumbleProto.UserList.User.name", - index=1, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=_b("").decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="last_seen", - full_name="MumbleProto.UserList.User.last_seen", - index=2, - number=3, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=_b("").decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="last_channel", - full_name="MumbleProto.UserList.User.last_channel", - index=3, - number=4, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=3103, - serialized_end=3181, + name='User', + full_name='MumbleProto.UserList.User', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='user_id', full_name='MumbleProto.UserList.User.user_id', index=0, + number=1, type=13, cpp_type=3, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='name', full_name='MumbleProto.UserList.User.name', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='last_seen', full_name='MumbleProto.UserList.User.last_seen', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='last_channel', full_name='MumbleProto.UserList.User.last_channel', index=3, + number=4, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=3103, + serialized_end=3181, ) _USERLIST = _descriptor.Descriptor( - name="UserList", - full_name="MumbleProto.UserList", - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name="users", - full_name="MumbleProto.UserList.users", - index=0, - number=1, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - ], - extensions=[], - nested_types=[_USERLIST_USER,], - enum_types=[], - options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=3048, - serialized_end=3181, + name='UserList', + full_name='MumbleProto.UserList', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='users', full_name='MumbleProto.UserList.users', index=0, + number=1, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[_USERLIST_USER, ], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=3048, + serialized_end=3181, ) _VOICETARGET_TARGET = _descriptor.Descriptor( - name="Target", - full_name="MumbleProto.VoiceTarget.Target", - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name="session", - full_name="MumbleProto.VoiceTarget.Target.session", - index=0, - number=1, - type=13, - cpp_type=3, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="channel_id", - full_name="MumbleProto.VoiceTarget.Target.channel_id", - index=1, - number=2, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="group", - full_name="MumbleProto.VoiceTarget.Target.group", - index=2, - number=3, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=_b("").decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="links", - full_name="MumbleProto.VoiceTarget.Target.links", - index=3, - number=4, - type=8, - cpp_type=7, - label=1, - has_default_value=True, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="children", - full_name="MumbleProto.VoiceTarget.Target.children", - index=4, - number=5, - type=8, - cpp_type=7, - label=1, - has_default_value=True, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=3261, - serialized_end=3368, + name='Target', + full_name='MumbleProto.VoiceTarget.Target', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='session', full_name='MumbleProto.VoiceTarget.Target.session', index=0, + number=1, type=13, cpp_type=3, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='channel_id', full_name='MumbleProto.VoiceTarget.Target.channel_id', index=1, + number=2, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='group', full_name='MumbleProto.VoiceTarget.Target.group', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='links', full_name='MumbleProto.VoiceTarget.Target.links', index=3, + number=4, type=8, cpp_type=7, label=1, + has_default_value=True, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='children', full_name='MumbleProto.VoiceTarget.Target.children', index=4, + number=5, type=8, cpp_type=7, label=1, + has_default_value=True, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=3261, + serialized_end=3368, ) _VOICETARGET = _descriptor.Descriptor( - name="VoiceTarget", - full_name="MumbleProto.VoiceTarget", - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name="id", - full_name="MumbleProto.VoiceTarget.id", - index=0, - number=1, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="targets", - full_name="MumbleProto.VoiceTarget.targets", - index=1, - number=2, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - ], - extensions=[], - nested_types=[_VOICETARGET_TARGET,], - enum_types=[], - options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=3184, - serialized_end=3368, + name='VoiceTarget', + full_name='MumbleProto.VoiceTarget', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='id', full_name='MumbleProto.VoiceTarget.id', index=0, + number=1, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='targets', full_name='MumbleProto.VoiceTarget.targets', index=1, + number=2, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[_VOICETARGET_TARGET, ], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=3184, + serialized_end=3368, ) _PERMISSIONQUERY = _descriptor.Descriptor( - name="PermissionQuery", - full_name="MumbleProto.PermissionQuery", - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name="channel_id", - full_name="MumbleProto.PermissionQuery.channel_id", - index=0, - number=1, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="permissions", - full_name="MumbleProto.PermissionQuery.permissions", - index=1, - number=2, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="flush", - full_name="MumbleProto.PermissionQuery.flush", - index=2, - number=3, - type=8, - cpp_type=7, - label=1, - has_default_value=True, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=3370, - serialized_end=3450, + name='PermissionQuery', + full_name='MumbleProto.PermissionQuery', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='channel_id', full_name='MumbleProto.PermissionQuery.channel_id', index=0, + number=1, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='permissions', full_name='MumbleProto.PermissionQuery.permissions', index=1, + number=2, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='flush', full_name='MumbleProto.PermissionQuery.flush', index=2, + number=3, type=8, cpp_type=7, label=1, + has_default_value=True, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=3370, + serialized_end=3450, ) _CODECVERSION = _descriptor.Descriptor( - name="CodecVersion", - full_name="MumbleProto.CodecVersion", - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name="alpha", - full_name="MumbleProto.CodecVersion.alpha", - index=0, - number=1, - type=5, - cpp_type=1, - label=2, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="beta", - full_name="MumbleProto.CodecVersion.beta", - index=1, - number=2, - type=5, - cpp_type=1, - label=2, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="prefer_alpha", - full_name="MumbleProto.CodecVersion.prefer_alpha", - index=2, - number=3, - type=8, - cpp_type=7, - label=2, - has_default_value=True, - default_value=True, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="opus", - full_name="MumbleProto.CodecVersion.opus", - index=3, - number=4, - type=8, - cpp_type=7, - label=1, - has_default_value=True, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=3452, - serialized_end=3544, + name='CodecVersion', + full_name='MumbleProto.CodecVersion', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='alpha', full_name='MumbleProto.CodecVersion.alpha', index=0, + number=1, type=5, cpp_type=1, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='beta', full_name='MumbleProto.CodecVersion.beta', index=1, + number=2, type=5, cpp_type=1, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='prefer_alpha', full_name='MumbleProto.CodecVersion.prefer_alpha', index=2, + number=3, type=8, cpp_type=7, label=2, + has_default_value=True, default_value=True, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='opus', full_name='MumbleProto.CodecVersion.opus', index=3, + number=4, type=8, cpp_type=7, label=1, + has_default_value=True, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=3452, + serialized_end=3544, ) _USERSTATS_STATS = _descriptor.Descriptor( - name="Stats", - full_name="MumbleProto.UserStats.Stats", - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name="good", - full_name="MumbleProto.UserStats.Stats.good", - index=0, - number=1, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="late", - full_name="MumbleProto.UserStats.Stats.late", - index=1, - number=2, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="lost", - full_name="MumbleProto.UserStats.Stats.lost", - index=2, - number=3, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="resync", - full_name="MumbleProto.UserStats.Stats.resync", - index=3, - number=4, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=4050, - serialized_end=4115, + name='Stats', + full_name='MumbleProto.UserStats.Stats', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='good', full_name='MumbleProto.UserStats.Stats.good', index=0, + number=1, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='late', full_name='MumbleProto.UserStats.Stats.late', index=1, + number=2, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='lost', full_name='MumbleProto.UserStats.Stats.lost', index=2, + number=3, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='resync', full_name='MumbleProto.UserStats.Stats.resync', index=3, + number=4, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=4050, + serialized_end=4115, ) _USERSTATS = _descriptor.Descriptor( - name="UserStats", - full_name="MumbleProto.UserStats", - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name="session", - full_name="MumbleProto.UserStats.session", - index=0, - number=1, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="stats_only", - full_name="MumbleProto.UserStats.stats_only", - index=1, - number=2, - type=8, - cpp_type=7, - label=1, - has_default_value=True, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="certificates", - full_name="MumbleProto.UserStats.certificates", - index=2, - number=3, - type=12, - cpp_type=9, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="from_client", - full_name="MumbleProto.UserStats.from_client", - index=3, - number=4, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="from_server", - full_name="MumbleProto.UserStats.from_server", - index=4, - number=5, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="udp_packets", - full_name="MumbleProto.UserStats.udp_packets", - index=5, - number=6, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="tcp_packets", - full_name="MumbleProto.UserStats.tcp_packets", - index=6, - number=7, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="udp_ping_avg", - full_name="MumbleProto.UserStats.udp_ping_avg", - index=7, - number=8, - type=2, - cpp_type=6, - label=1, - has_default_value=False, - default_value=float(0), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="udp_ping_var", - full_name="MumbleProto.UserStats.udp_ping_var", - index=8, - number=9, - type=2, - cpp_type=6, - label=1, - has_default_value=False, - default_value=float(0), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="tcp_ping_avg", - full_name="MumbleProto.UserStats.tcp_ping_avg", - index=9, - number=10, - type=2, - cpp_type=6, - label=1, - has_default_value=False, - default_value=float(0), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="tcp_ping_var", - full_name="MumbleProto.UserStats.tcp_ping_var", - index=10, - number=11, - type=2, - cpp_type=6, - label=1, - has_default_value=False, - default_value=float(0), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="version", - full_name="MumbleProto.UserStats.version", - index=11, - number=12, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="celt_versions", - full_name="MumbleProto.UserStats.celt_versions", - index=12, - number=13, - type=5, - cpp_type=1, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="address", - full_name="MumbleProto.UserStats.address", - index=13, - number=14, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=_b(""), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="bandwidth", - full_name="MumbleProto.UserStats.bandwidth", - index=14, - number=15, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="onlinesecs", - full_name="MumbleProto.UserStats.onlinesecs", - index=15, - number=16, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="idlesecs", - full_name="MumbleProto.UserStats.idlesecs", - index=16, - number=17, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="strong_certificate", - full_name="MumbleProto.UserStats.strong_certificate", - index=17, - number=18, - type=8, - cpp_type=7, - label=1, - has_default_value=True, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="opus", - full_name="MumbleProto.UserStats.opus", - index=18, - number=19, - type=8, - cpp_type=7, - label=1, - has_default_value=True, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - ], - extensions=[], - nested_types=[_USERSTATS_STATS,], - enum_types=[], - options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=3547, - serialized_end=4115, + name='UserStats', + full_name='MumbleProto.UserStats', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='session', full_name='MumbleProto.UserStats.session', index=0, + number=1, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='stats_only', full_name='MumbleProto.UserStats.stats_only', index=1, + number=2, type=8, cpp_type=7, label=1, + has_default_value=True, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='certificates', full_name='MumbleProto.UserStats.certificates', index=2, + number=3, type=12, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='from_client', full_name='MumbleProto.UserStats.from_client', index=3, + number=4, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='from_server', full_name='MumbleProto.UserStats.from_server', index=4, + number=5, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='udp_packets', full_name='MumbleProto.UserStats.udp_packets', index=5, + number=6, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='tcp_packets', full_name='MumbleProto.UserStats.tcp_packets', index=6, + number=7, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='udp_ping_avg', full_name='MumbleProto.UserStats.udp_ping_avg', index=7, + number=8, type=2, cpp_type=6, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='udp_ping_var', full_name='MumbleProto.UserStats.udp_ping_var', index=8, + number=9, type=2, cpp_type=6, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='tcp_ping_avg', full_name='MumbleProto.UserStats.tcp_ping_avg', index=9, + number=10, type=2, cpp_type=6, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='tcp_ping_var', full_name='MumbleProto.UserStats.tcp_ping_var', index=10, + number=11, type=2, cpp_type=6, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='version', full_name='MumbleProto.UserStats.version', index=11, + number=12, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='celt_versions', full_name='MumbleProto.UserStats.celt_versions', index=12, + number=13, type=5, cpp_type=1, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='address', full_name='MumbleProto.UserStats.address', index=13, + number=14, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='bandwidth', full_name='MumbleProto.UserStats.bandwidth', index=14, + number=15, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='onlinesecs', full_name='MumbleProto.UserStats.onlinesecs', index=15, + number=16, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='idlesecs', full_name='MumbleProto.UserStats.idlesecs', index=16, + number=17, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='strong_certificate', full_name='MumbleProto.UserStats.strong_certificate', index=17, + number=18, type=8, cpp_type=7, label=1, + has_default_value=True, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='opus', full_name='MumbleProto.UserStats.opus', index=18, + number=19, type=8, cpp_type=7, label=1, + has_default_value=True, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[_USERSTATS_STATS, ], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=3547, + serialized_end=4115, ) _REQUESTBLOB = _descriptor.Descriptor( - name="RequestBlob", - full_name="MumbleProto.RequestBlob", - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name="session_texture", - full_name="MumbleProto.RequestBlob.session_texture", - index=0, - number=1, - type=13, - cpp_type=3, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="session_comment", - full_name="MumbleProto.RequestBlob.session_comment", - index=1, - number=2, - type=13, - cpp_type=3, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="channel_description", - full_name="MumbleProto.RequestBlob.channel_description", - index=2, - number=3, - type=13, - cpp_type=3, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=4117, - serialized_end=4209, + name='RequestBlob', + full_name='MumbleProto.RequestBlob', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='session_texture', full_name='MumbleProto.RequestBlob.session_texture', index=0, + number=1, type=13, cpp_type=3, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='session_comment', full_name='MumbleProto.RequestBlob.session_comment', index=1, + number=2, type=13, cpp_type=3, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='channel_description', full_name='MumbleProto.RequestBlob.channel_description', index=2, + number=3, type=13, cpp_type=3, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=4117, + serialized_end=4209, ) _SERVERCONFIG = _descriptor.Descriptor( - name="ServerConfig", - full_name="MumbleProto.ServerConfig", - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name="max_bandwidth", - full_name="MumbleProto.ServerConfig.max_bandwidth", - index=0, - number=1, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="welcome_text", - full_name="MumbleProto.ServerConfig.welcome_text", - index=1, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=_b("").decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="allow_html", - full_name="MumbleProto.ServerConfig.allow_html", - index=2, - number=3, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="message_length", - full_name="MumbleProto.ServerConfig.message_length", - index=3, - number=4, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="image_message_length", - full_name="MumbleProto.ServerConfig.image_message_length", - index=4, - number=5, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="max_users", - full_name="MumbleProto.ServerConfig.max_users", - index=5, - number=6, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=4212, - serialized_end=4364, + name='ServerConfig', + full_name='MumbleProto.ServerConfig', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='max_bandwidth', full_name='MumbleProto.ServerConfig.max_bandwidth', index=0, + number=1, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='welcome_text', full_name='MumbleProto.ServerConfig.welcome_text', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='allow_html', full_name='MumbleProto.ServerConfig.allow_html', index=2, + number=3, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='message_length', full_name='MumbleProto.ServerConfig.message_length', index=3, + number=4, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='image_message_length', full_name='MumbleProto.ServerConfig.image_message_length', index=4, + number=5, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='max_users', full_name='MumbleProto.ServerConfig.max_users', index=5, + number=6, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=4212, + serialized_end=4364, ) _SUGGESTCONFIG = _descriptor.Descriptor( - name="SuggestConfig", - full_name="MumbleProto.SuggestConfig", - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name="version", - full_name="MumbleProto.SuggestConfig.version", - index=0, - number=1, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="positional", - full_name="MumbleProto.SuggestConfig.positional", - index=1, - number=2, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - _descriptor.FieldDescriptor( - name="push_to_talk", - full_name="MumbleProto.SuggestConfig.push_to_talk", - index=2, - number=3, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - options=None, - is_extendable=False, - syntax="proto2", - extension_ranges=[], - oneofs=[], - serialized_start=4366, - serialized_end=4440, -) - -_REJECT.fields_by_name["type"].enum_type = _REJECT_REJECTTYPE + name='SuggestConfig', + full_name='MumbleProto.SuggestConfig', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='version', full_name='MumbleProto.SuggestConfig.version', index=0, + number=1, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='positional', full_name='MumbleProto.SuggestConfig.positional', index=1, + number=2, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='push_to_talk', full_name='MumbleProto.SuggestConfig.push_to_talk', index=2, + number=3, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=4366, + serialized_end=4440, +) + +_REJECT.fields_by_name['type'].enum_type = _REJECT_REJECTTYPE _REJECT_REJECTTYPE.containing_type = _REJECT _BANLIST_BANENTRY.containing_type = _BANLIST -_BANLIST.fields_by_name["bans"].message_type = _BANLIST_BANENTRY -_PERMISSIONDENIED.fields_by_name["type"].enum_type = _PERMISSIONDENIED_DENYTYPE +_BANLIST.fields_by_name['bans'].message_type = _BANLIST_BANENTRY +_PERMISSIONDENIED.fields_by_name['type'].enum_type = _PERMISSIONDENIED_DENYTYPE _PERMISSIONDENIED_DENYTYPE.containing_type = _PERMISSIONDENIED _ACL_CHANGROUP.containing_type = _ACL _ACL_CHANACL.containing_type = _ACL -_ACL.fields_by_name["groups"].message_type = _ACL_CHANGROUP -_ACL.fields_by_name["acls"].message_type = _ACL_CHANACL -_CONTEXTACTIONMODIFY.fields_by_name[ - "operation" -].enum_type = _CONTEXTACTIONMODIFY_OPERATION +_ACL.fields_by_name['groups'].message_type = _ACL_CHANGROUP +_ACL.fields_by_name['acls'].message_type = _ACL_CHANACL +_CONTEXTACTIONMODIFY.fields_by_name['operation'].enum_type = _CONTEXTACTIONMODIFY_OPERATION _CONTEXTACTIONMODIFY_CONTEXT.containing_type = _CONTEXTACTIONMODIFY _CONTEXTACTIONMODIFY_OPERATION.containing_type = _CONTEXTACTIONMODIFY _USERLIST_USER.containing_type = _USERLIST -_USERLIST.fields_by_name["users"].message_type = _USERLIST_USER +_USERLIST.fields_by_name['users'].message_type = _USERLIST_USER _VOICETARGET_TARGET.containing_type = _VOICETARGET -_VOICETARGET.fields_by_name["targets"].message_type = _VOICETARGET_TARGET +_VOICETARGET.fields_by_name['targets'].message_type = _VOICETARGET_TARGET _USERSTATS_STATS.containing_type = _USERSTATS -_USERSTATS.fields_by_name["from_client"].message_type = _USERSTATS_STATS -_USERSTATS.fields_by_name["from_server"].message_type = _USERSTATS_STATS -_USERSTATS.fields_by_name["version"].message_type = _VERSION -DESCRIPTOR.message_types_by_name["Version"] = _VERSION -DESCRIPTOR.message_types_by_name["UDPTunnel"] = _UDPTUNNEL -DESCRIPTOR.message_types_by_name["Authenticate"] = _AUTHENTICATE -DESCRIPTOR.message_types_by_name["Ping"] = _PING -DESCRIPTOR.message_types_by_name["Reject"] = _REJECT -DESCRIPTOR.message_types_by_name["ServerSync"] = _SERVERSYNC -DESCRIPTOR.message_types_by_name["ChannelRemove"] = _CHANNELREMOVE -DESCRIPTOR.message_types_by_name["ChannelState"] = _CHANNELSTATE -DESCRIPTOR.message_types_by_name["UserRemove"] = _USERREMOVE -DESCRIPTOR.message_types_by_name["UserState"] = _USERSTATE -DESCRIPTOR.message_types_by_name["BanList"] = _BANLIST -DESCRIPTOR.message_types_by_name["TextMessage"] = _TEXTMESSAGE -DESCRIPTOR.message_types_by_name["PermissionDenied"] = _PERMISSIONDENIED -DESCRIPTOR.message_types_by_name["ACL"] = _ACL -DESCRIPTOR.message_types_by_name["QueryUsers"] = _QUERYUSERS -DESCRIPTOR.message_types_by_name["CryptSetup"] = _CRYPTSETUP -DESCRIPTOR.message_types_by_name["ContextActionModify"] = _CONTEXTACTIONMODIFY -DESCRIPTOR.message_types_by_name["ContextAction"] = _CONTEXTACTION -DESCRIPTOR.message_types_by_name["UserList"] = _USERLIST -DESCRIPTOR.message_types_by_name["VoiceTarget"] = _VOICETARGET -DESCRIPTOR.message_types_by_name["PermissionQuery"] = _PERMISSIONQUERY -DESCRIPTOR.message_types_by_name["CodecVersion"] = _CODECVERSION -DESCRIPTOR.message_types_by_name["UserStats"] = _USERSTATS -DESCRIPTOR.message_types_by_name["RequestBlob"] = _REQUESTBLOB -DESCRIPTOR.message_types_by_name["ServerConfig"] = _SERVERCONFIG -DESCRIPTOR.message_types_by_name["SuggestConfig"] = _SUGGESTCONFIG +_USERSTATS.fields_by_name['from_client'].message_type = _USERSTATS_STATS +_USERSTATS.fields_by_name['from_server'].message_type = _USERSTATS_STATS +_USERSTATS.fields_by_name['version'].message_type = _VERSION +DESCRIPTOR.message_types_by_name['Version'] = _VERSION +DESCRIPTOR.message_types_by_name['UDPTunnel'] = _UDPTUNNEL +DESCRIPTOR.message_types_by_name['Authenticate'] = _AUTHENTICATE +DESCRIPTOR.message_types_by_name['Ping'] = _PING +DESCRIPTOR.message_types_by_name['Reject'] = _REJECT +DESCRIPTOR.message_types_by_name['ServerSync'] = _SERVERSYNC +DESCRIPTOR.message_types_by_name['ChannelRemove'] = _CHANNELREMOVE +DESCRIPTOR.message_types_by_name['ChannelState'] = _CHANNELSTATE +DESCRIPTOR.message_types_by_name['UserRemove'] = _USERREMOVE +DESCRIPTOR.message_types_by_name['UserState'] = _USERSTATE +DESCRIPTOR.message_types_by_name['BanList'] = _BANLIST +DESCRIPTOR.message_types_by_name['TextMessage'] = _TEXTMESSAGE +DESCRIPTOR.message_types_by_name['PermissionDenied'] = _PERMISSIONDENIED +DESCRIPTOR.message_types_by_name['ACL'] = _ACL +DESCRIPTOR.message_types_by_name['QueryUsers'] = _QUERYUSERS +DESCRIPTOR.message_types_by_name['CryptSetup'] = _CRYPTSETUP +DESCRIPTOR.message_types_by_name['ContextActionModify'] = _CONTEXTACTIONMODIFY +DESCRIPTOR.message_types_by_name['ContextAction'] = _CONTEXTACTION +DESCRIPTOR.message_types_by_name['UserList'] = _USERLIST +DESCRIPTOR.message_types_by_name['VoiceTarget'] = _VOICETARGET +DESCRIPTOR.message_types_by_name['PermissionQuery'] = _PERMISSIONQUERY +DESCRIPTOR.message_types_by_name['CodecVersion'] = _CODECVERSION +DESCRIPTOR.message_types_by_name['UserStats'] = _USERSTATS +DESCRIPTOR.message_types_by_name['RequestBlob'] = _REQUESTBLOB +DESCRIPTOR.message_types_by_name['ServerConfig'] = _SERVERCONFIG +DESCRIPTOR.message_types_by_name['SuggestConfig'] = _SUGGESTCONFIG _sym_db.RegisterFileDescriptor(DESCRIPTOR) -Version = _reflection.GeneratedProtocolMessageType( - "Version", - (_message.Message,), - dict( - DESCRIPTOR=_VERSION, - __module__="Mumble_pb2" - # @@protoc_insertion_point(class_scope:MumbleProto.Version) - ), -) +Version = _reflection.GeneratedProtocolMessageType('Version', (_message.Message,), dict( + DESCRIPTOR = _VERSION, + __module__ = 'Mumble_pb2' + # @@protoc_insertion_point(class_scope:MumbleProto.Version) + )) _sym_db.RegisterMessage(Version) -UDPTunnel = _reflection.GeneratedProtocolMessageType( - "UDPTunnel", - (_message.Message,), - dict( - DESCRIPTOR=_UDPTUNNEL, - __module__="Mumble_pb2" - # @@protoc_insertion_point(class_scope:MumbleProto.UDPTunnel) - ), -) +UDPTunnel = _reflection.GeneratedProtocolMessageType('UDPTunnel', (_message.Message,), dict( + DESCRIPTOR = _UDPTUNNEL, + __module__ = 'Mumble_pb2' + # @@protoc_insertion_point(class_scope:MumbleProto.UDPTunnel) + )) _sym_db.RegisterMessage(UDPTunnel) -Authenticate = _reflection.GeneratedProtocolMessageType( - "Authenticate", - (_message.Message,), - dict( - DESCRIPTOR=_AUTHENTICATE, - __module__="Mumble_pb2" - # @@protoc_insertion_point(class_scope:MumbleProto.Authenticate) - ), -) +Authenticate = _reflection.GeneratedProtocolMessageType('Authenticate', (_message.Message,), dict( + DESCRIPTOR = _AUTHENTICATE, + __module__ = 'Mumble_pb2' + # @@protoc_insertion_point(class_scope:MumbleProto.Authenticate) + )) _sym_db.RegisterMessage(Authenticate) -Ping = _reflection.GeneratedProtocolMessageType( - "Ping", - (_message.Message,), - dict( - DESCRIPTOR=_PING, - __module__="Mumble_pb2" - # @@protoc_insertion_point(class_scope:MumbleProto.Ping) - ), -) +Ping = _reflection.GeneratedProtocolMessageType('Ping', (_message.Message,), dict( + DESCRIPTOR = _PING, + __module__ = 'Mumble_pb2' + # @@protoc_insertion_point(class_scope:MumbleProto.Ping) + )) _sym_db.RegisterMessage(Ping) -Reject = _reflection.GeneratedProtocolMessageType( - "Reject", - (_message.Message,), - dict( - DESCRIPTOR=_REJECT, - __module__="Mumble_pb2" - # @@protoc_insertion_point(class_scope:MumbleProto.Reject) - ), -) +Reject = _reflection.GeneratedProtocolMessageType('Reject', (_message.Message,), dict( + DESCRIPTOR = _REJECT, + __module__ = 'Mumble_pb2' + # @@protoc_insertion_point(class_scope:MumbleProto.Reject) + )) _sym_db.RegisterMessage(Reject) -ServerSync = _reflection.GeneratedProtocolMessageType( - "ServerSync", - (_message.Message,), - dict( - DESCRIPTOR=_SERVERSYNC, - __module__="Mumble_pb2" - # @@protoc_insertion_point(class_scope:MumbleProto.ServerSync) - ), -) +ServerSync = _reflection.GeneratedProtocolMessageType('ServerSync', (_message.Message,), dict( + DESCRIPTOR = _SERVERSYNC, + __module__ = 'Mumble_pb2' + # @@protoc_insertion_point(class_scope:MumbleProto.ServerSync) + )) _sym_db.RegisterMessage(ServerSync) -ChannelRemove = _reflection.GeneratedProtocolMessageType( - "ChannelRemove", - (_message.Message,), - dict( - DESCRIPTOR=_CHANNELREMOVE, - __module__="Mumble_pb2" - # @@protoc_insertion_point(class_scope:MumbleProto.ChannelRemove) - ), -) +ChannelRemove = _reflection.GeneratedProtocolMessageType('ChannelRemove', (_message.Message,), dict( + DESCRIPTOR = _CHANNELREMOVE, + __module__ = 'Mumble_pb2' + # @@protoc_insertion_point(class_scope:MumbleProto.ChannelRemove) + )) _sym_db.RegisterMessage(ChannelRemove) -ChannelState = _reflection.GeneratedProtocolMessageType( - "ChannelState", - (_message.Message,), - dict( - DESCRIPTOR=_CHANNELSTATE, - __module__="Mumble_pb2" - # @@protoc_insertion_point(class_scope:MumbleProto.ChannelState) - ), -) +ChannelState = _reflection.GeneratedProtocolMessageType('ChannelState', (_message.Message,), dict( + DESCRIPTOR = _CHANNELSTATE, + __module__ = 'Mumble_pb2' + # @@protoc_insertion_point(class_scope:MumbleProto.ChannelState) + )) _sym_db.RegisterMessage(ChannelState) -UserRemove = _reflection.GeneratedProtocolMessageType( - "UserRemove", - (_message.Message,), - dict( - DESCRIPTOR=_USERREMOVE, - __module__="Mumble_pb2" - # @@protoc_insertion_point(class_scope:MumbleProto.UserRemove) - ), -) +UserRemove = _reflection.GeneratedProtocolMessageType('UserRemove', (_message.Message,), dict( + DESCRIPTOR = _USERREMOVE, + __module__ = 'Mumble_pb2' + # @@protoc_insertion_point(class_scope:MumbleProto.UserRemove) + )) _sym_db.RegisterMessage(UserRemove) -UserState = _reflection.GeneratedProtocolMessageType( - "UserState", - (_message.Message,), - dict( - DESCRIPTOR=_USERSTATE, - __module__="Mumble_pb2" - # @@protoc_insertion_point(class_scope:MumbleProto.UserState) - ), -) +UserState = _reflection.GeneratedProtocolMessageType('UserState', (_message.Message,), dict( + DESCRIPTOR = _USERSTATE, + __module__ = 'Mumble_pb2' + # @@protoc_insertion_point(class_scope:MumbleProto.UserState) + )) _sym_db.RegisterMessage(UserState) -BanList = _reflection.GeneratedProtocolMessageType( - "BanList", - (_message.Message,), - dict( - BanEntry=_reflection.GeneratedProtocolMessageType( - "BanEntry", - (_message.Message,), - dict( - DESCRIPTOR=_BANLIST_BANENTRY, - __module__="Mumble_pb2" - # @@protoc_insertion_point(class_scope:MumbleProto.BanList.BanEntry) - ), - ), - DESCRIPTOR=_BANLIST, - __module__="Mumble_pb2" - # @@protoc_insertion_point(class_scope:MumbleProto.BanList) - ), -) +BanList = _reflection.GeneratedProtocolMessageType('BanList', (_message.Message,), dict( + + BanEntry = _reflection.GeneratedProtocolMessageType('BanEntry', (_message.Message,), dict( + DESCRIPTOR = _BANLIST_BANENTRY, + __module__ = 'Mumble_pb2' + # @@protoc_insertion_point(class_scope:MumbleProto.BanList.BanEntry) + )) + , + DESCRIPTOR = _BANLIST, + __module__ = 'Mumble_pb2' + # @@protoc_insertion_point(class_scope:MumbleProto.BanList) + )) _sym_db.RegisterMessage(BanList) _sym_db.RegisterMessage(BanList.BanEntry) -TextMessage = _reflection.GeneratedProtocolMessageType( - "TextMessage", - (_message.Message,), - dict( - DESCRIPTOR=_TEXTMESSAGE, - __module__="Mumble_pb2" - # @@protoc_insertion_point(class_scope:MumbleProto.TextMessage) - ), -) +TextMessage = _reflection.GeneratedProtocolMessageType('TextMessage', (_message.Message,), dict( + DESCRIPTOR = _TEXTMESSAGE, + __module__ = 'Mumble_pb2' + # @@protoc_insertion_point(class_scope:MumbleProto.TextMessage) + )) _sym_db.RegisterMessage(TextMessage) -PermissionDenied = _reflection.GeneratedProtocolMessageType( - "PermissionDenied", - (_message.Message,), - dict( - DESCRIPTOR=_PERMISSIONDENIED, - __module__="Mumble_pb2" - # @@protoc_insertion_point(class_scope:MumbleProto.PermissionDenied) - ), -) +PermissionDenied = _reflection.GeneratedProtocolMessageType('PermissionDenied', (_message.Message,), dict( + DESCRIPTOR = _PERMISSIONDENIED, + __module__ = 'Mumble_pb2' + # @@protoc_insertion_point(class_scope:MumbleProto.PermissionDenied) + )) _sym_db.RegisterMessage(PermissionDenied) -ACL = _reflection.GeneratedProtocolMessageType( - "ACL", - (_message.Message,), - dict( - ChanGroup=_reflection.GeneratedProtocolMessageType( - "ChanGroup", - (_message.Message,), - dict( - DESCRIPTOR=_ACL_CHANGROUP, - __module__="Mumble_pb2" - # @@protoc_insertion_point(class_scope:MumbleProto.ACL.ChanGroup) - ), - ), - ChanACL=_reflection.GeneratedProtocolMessageType( - "ChanACL", - (_message.Message,), - dict( - DESCRIPTOR=_ACL_CHANACL, - __module__="Mumble_pb2" - # @@protoc_insertion_point(class_scope:MumbleProto.ACL.ChanACL) - ), - ), - DESCRIPTOR=_ACL, - __module__="Mumble_pb2" - # @@protoc_insertion_point(class_scope:MumbleProto.ACL) - ), -) +ACL = _reflection.GeneratedProtocolMessageType('ACL', (_message.Message,), dict( + + ChanGroup = _reflection.GeneratedProtocolMessageType('ChanGroup', (_message.Message,), dict( + DESCRIPTOR = _ACL_CHANGROUP, + __module__ = 'Mumble_pb2' + # @@protoc_insertion_point(class_scope:MumbleProto.ACL.ChanGroup) + )) + , + + ChanACL = _reflection.GeneratedProtocolMessageType('ChanACL', (_message.Message,), dict( + DESCRIPTOR = _ACL_CHANACL, + __module__ = 'Mumble_pb2' + # @@protoc_insertion_point(class_scope:MumbleProto.ACL.ChanACL) + )) + , + DESCRIPTOR = _ACL, + __module__ = 'Mumble_pb2' + # @@protoc_insertion_point(class_scope:MumbleProto.ACL) + )) _sym_db.RegisterMessage(ACL) _sym_db.RegisterMessage(ACL.ChanGroup) _sym_db.RegisterMessage(ACL.ChanACL) -QueryUsers = _reflection.GeneratedProtocolMessageType( - "QueryUsers", - (_message.Message,), - dict( - DESCRIPTOR=_QUERYUSERS, - __module__="Mumble_pb2" - # @@protoc_insertion_point(class_scope:MumbleProto.QueryUsers) - ), -) +QueryUsers = _reflection.GeneratedProtocolMessageType('QueryUsers', (_message.Message,), dict( + DESCRIPTOR = _QUERYUSERS, + __module__ = 'Mumble_pb2' + # @@protoc_insertion_point(class_scope:MumbleProto.QueryUsers) + )) _sym_db.RegisterMessage(QueryUsers) -CryptSetup = _reflection.GeneratedProtocolMessageType( - "CryptSetup", - (_message.Message,), - dict( - DESCRIPTOR=_CRYPTSETUP, - __module__="Mumble_pb2" - # @@protoc_insertion_point(class_scope:MumbleProto.CryptSetup) - ), -) +CryptSetup = _reflection.GeneratedProtocolMessageType('CryptSetup', (_message.Message,), dict( + DESCRIPTOR = _CRYPTSETUP, + __module__ = 'Mumble_pb2' + # @@protoc_insertion_point(class_scope:MumbleProto.CryptSetup) + )) _sym_db.RegisterMessage(CryptSetup) -ContextActionModify = _reflection.GeneratedProtocolMessageType( - "ContextActionModify", - (_message.Message,), - dict( - DESCRIPTOR=_CONTEXTACTIONMODIFY, - __module__="Mumble_pb2" - # @@protoc_insertion_point(class_scope:MumbleProto.ContextActionModify) - ), -) +ContextActionModify = _reflection.GeneratedProtocolMessageType('ContextActionModify', (_message.Message,), dict( + DESCRIPTOR = _CONTEXTACTIONMODIFY, + __module__ = 'Mumble_pb2' + # @@protoc_insertion_point(class_scope:MumbleProto.ContextActionModify) + )) _sym_db.RegisterMessage(ContextActionModify) -ContextAction = _reflection.GeneratedProtocolMessageType( - "ContextAction", - (_message.Message,), - dict( - DESCRIPTOR=_CONTEXTACTION, - __module__="Mumble_pb2" - # @@protoc_insertion_point(class_scope:MumbleProto.ContextAction) - ), -) +ContextAction = _reflection.GeneratedProtocolMessageType('ContextAction', (_message.Message,), dict( + DESCRIPTOR = _CONTEXTACTION, + __module__ = 'Mumble_pb2' + # @@protoc_insertion_point(class_scope:MumbleProto.ContextAction) + )) _sym_db.RegisterMessage(ContextAction) -UserList = _reflection.GeneratedProtocolMessageType( - "UserList", - (_message.Message,), - dict( - User=_reflection.GeneratedProtocolMessageType( - "User", - (_message.Message,), - dict( - DESCRIPTOR=_USERLIST_USER, - __module__="Mumble_pb2" - # @@protoc_insertion_point(class_scope:MumbleProto.UserList.User) - ), - ), - DESCRIPTOR=_USERLIST, - __module__="Mumble_pb2" - # @@protoc_insertion_point(class_scope:MumbleProto.UserList) - ), -) +UserList = _reflection.GeneratedProtocolMessageType('UserList', (_message.Message,), dict( + + User = _reflection.GeneratedProtocolMessageType('User', (_message.Message,), dict( + DESCRIPTOR = _USERLIST_USER, + __module__ = 'Mumble_pb2' + # @@protoc_insertion_point(class_scope:MumbleProto.UserList.User) + )) + , + DESCRIPTOR = _USERLIST, + __module__ = 'Mumble_pb2' + # @@protoc_insertion_point(class_scope:MumbleProto.UserList) + )) _sym_db.RegisterMessage(UserList) _sym_db.RegisterMessage(UserList.User) -VoiceTarget = _reflection.GeneratedProtocolMessageType( - "VoiceTarget", - (_message.Message,), - dict( - Target=_reflection.GeneratedProtocolMessageType( - "Target", - (_message.Message,), - dict( - DESCRIPTOR=_VOICETARGET_TARGET, - __module__="Mumble_pb2" - # @@protoc_insertion_point(class_scope:MumbleProto.VoiceTarget.Target) - ), - ), - DESCRIPTOR=_VOICETARGET, - __module__="Mumble_pb2" - # @@protoc_insertion_point(class_scope:MumbleProto.VoiceTarget) - ), -) +VoiceTarget = _reflection.GeneratedProtocolMessageType('VoiceTarget', (_message.Message,), dict( + + Target = _reflection.GeneratedProtocolMessageType('Target', (_message.Message,), dict( + DESCRIPTOR = _VOICETARGET_TARGET, + __module__ = 'Mumble_pb2' + # @@protoc_insertion_point(class_scope:MumbleProto.VoiceTarget.Target) + )) + , + DESCRIPTOR = _VOICETARGET, + __module__ = 'Mumble_pb2' + # @@protoc_insertion_point(class_scope:MumbleProto.VoiceTarget) + )) _sym_db.RegisterMessage(VoiceTarget) _sym_db.RegisterMessage(VoiceTarget.Target) -PermissionQuery = _reflection.GeneratedProtocolMessageType( - "PermissionQuery", - (_message.Message,), - dict( - DESCRIPTOR=_PERMISSIONQUERY, - __module__="Mumble_pb2" - # @@protoc_insertion_point(class_scope:MumbleProto.PermissionQuery) - ), -) +PermissionQuery = _reflection.GeneratedProtocolMessageType('PermissionQuery', (_message.Message,), dict( + DESCRIPTOR = _PERMISSIONQUERY, + __module__ = 'Mumble_pb2' + # @@protoc_insertion_point(class_scope:MumbleProto.PermissionQuery) + )) _sym_db.RegisterMessage(PermissionQuery) -CodecVersion = _reflection.GeneratedProtocolMessageType( - "CodecVersion", - (_message.Message,), - dict( - DESCRIPTOR=_CODECVERSION, - __module__="Mumble_pb2" - # @@protoc_insertion_point(class_scope:MumbleProto.CodecVersion) - ), -) +CodecVersion = _reflection.GeneratedProtocolMessageType('CodecVersion', (_message.Message,), dict( + DESCRIPTOR = _CODECVERSION, + __module__ = 'Mumble_pb2' + # @@protoc_insertion_point(class_scope:MumbleProto.CodecVersion) + )) _sym_db.RegisterMessage(CodecVersion) -UserStats = _reflection.GeneratedProtocolMessageType( - "UserStats", - (_message.Message,), - dict( - Stats=_reflection.GeneratedProtocolMessageType( - "Stats", - (_message.Message,), - dict( - DESCRIPTOR=_USERSTATS_STATS, - __module__="Mumble_pb2" - # @@protoc_insertion_point(class_scope:MumbleProto.UserStats.Stats) - ), - ), - DESCRIPTOR=_USERSTATS, - __module__="Mumble_pb2" - # @@protoc_insertion_point(class_scope:MumbleProto.UserStats) - ), -) +UserStats = _reflection.GeneratedProtocolMessageType('UserStats', (_message.Message,), dict( + + Stats = _reflection.GeneratedProtocolMessageType('Stats', (_message.Message,), dict( + DESCRIPTOR = _USERSTATS_STATS, + __module__ = 'Mumble_pb2' + # @@protoc_insertion_point(class_scope:MumbleProto.UserStats.Stats) + )) + , + DESCRIPTOR = _USERSTATS, + __module__ = 'Mumble_pb2' + # @@protoc_insertion_point(class_scope:MumbleProto.UserStats) + )) _sym_db.RegisterMessage(UserStats) _sym_db.RegisterMessage(UserStats.Stats) -RequestBlob = _reflection.GeneratedProtocolMessageType( - "RequestBlob", - (_message.Message,), - dict( - DESCRIPTOR=_REQUESTBLOB, - __module__="Mumble_pb2" - # @@protoc_insertion_point(class_scope:MumbleProto.RequestBlob) - ), -) +RequestBlob = _reflection.GeneratedProtocolMessageType('RequestBlob', (_message.Message,), dict( + DESCRIPTOR = _REQUESTBLOB, + __module__ = 'Mumble_pb2' + # @@protoc_insertion_point(class_scope:MumbleProto.RequestBlob) + )) _sym_db.RegisterMessage(RequestBlob) -ServerConfig = _reflection.GeneratedProtocolMessageType( - "ServerConfig", - (_message.Message,), - dict( - DESCRIPTOR=_SERVERCONFIG, - __module__="Mumble_pb2" - # @@protoc_insertion_point(class_scope:MumbleProto.ServerConfig) - ), -) +ServerConfig = _reflection.GeneratedProtocolMessageType('ServerConfig', (_message.Message,), dict( + DESCRIPTOR = _SERVERCONFIG, + __module__ = 'Mumble_pb2' + # @@protoc_insertion_point(class_scope:MumbleProto.ServerConfig) + )) _sym_db.RegisterMessage(ServerConfig) -SuggestConfig = _reflection.GeneratedProtocolMessageType( - "SuggestConfig", - (_message.Message,), - dict( - DESCRIPTOR=_SUGGESTCONFIG, - __module__="Mumble_pb2" - # @@protoc_insertion_point(class_scope:MumbleProto.SuggestConfig) - ), -) +SuggestConfig = _reflection.GeneratedProtocolMessageType('SuggestConfig', (_message.Message,), dict( + DESCRIPTOR = _SUGGESTCONFIG, + __module__ = 'Mumble_pb2' + # @@protoc_insertion_point(class_scope:MumbleProto.SuggestConfig) + )) _sym_db.RegisterMessage(SuggestConfig) DESCRIPTOR.has_options = True -DESCRIPTOR._options = _descriptor._ParseOptions( - descriptor_pb2.FileOptions(), _b("H\001") -) +DESCRIPTOR._options = _descriptor._ParseOptions(descriptor_pb2.FileOptions(), _b('H\001')) # @@protoc_insertion_point(module_scope) From 2c3e5c24cd0ad65133f00525cf605624f2c0bed4 Mon Sep 17 00:00:00 2001 From: tikki Date: Sat, 8 Feb 2020 12:20:04 +0100 Subject: [PATCH 17/17] fix set_whisper by reverting to upstream While the Protobuf does need nested objects, the Cmd is supposed to store only IDs. The code that creates the Protobuf from the Cmd is aware of this and properly creates the nested objects accordingly. --- pymumble_py3/messages.py | 4 +--- pymumble_py3/soundoutput.py | 10 +++------- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/pymumble_py3/messages.py b/pymumble_py3/messages.py index 79c68d0..08ae54e 100644 --- a/pymumble_py3/messages.py +++ b/pymumble_py3/messages.py @@ -85,9 +85,7 @@ def __init__(self, channel_id: int) -> None: class VoiceTarget(Cmd): """Command to create a whisper""" - def __init__( - self, voice_id: int, targets: typing.Sequence[typing.Mapping[str, typing.Any]] - ) -> None: + def __init__(self, voice_id: int, targets: typing.Sequence[int]) -> None: Cmd.__init__(self) self.cmd = PYMUMBLE_MSG_TYPES_VOICETARGET diff --git a/pymumble_py3/soundoutput.py b/pymumble_py3/soundoutput.py index 6d26c3d..1f77953 100644 --- a/pymumble_py3/soundoutput.py +++ b/pymumble_py3/soundoutput.py @@ -272,16 +272,12 @@ def set_whisper( ) -> None: if not target_id: return - if type(target_id) is int: - targets = [{"session": [typing.cast(int, target_id)]}] - else: - targets = [ - {"session": [tid]} for tid in typing.cast(typing.List[int], target_id) - ] + if isinstance(target_id, int): + target_id = [target_id] self.target = 2 if channel: self.target = 1 - cmd = VoiceTarget(self.target, targets) + cmd = VoiceTarget(self.target, target_id) self.mumble_object.execute_command(cmd) def remove_whisper(self) -> None: