Python: Cómo obtener múltiples elementos entre corchetes

Tengo una cadena / patrón como este:

[xy][abc]

Intento obtener los valores contenidos dentro de los corchetes:

xya B

Nunca hay corchetes dentro de los corchetes. Inválido:[[abc][def]]

Hasta ahora tengo esto:

import re
pattern = "[xy][abc]"
x = re.compile("\[(.*?)\]")
m = outer.search(pattern)
inner_value = m.group(1)
print inner_value

Pero esto me da solo el valor interno de los primeros corchetes.

¿Algunas ideas? No quiero usar funciones de división de cadenas, estoy seguro de que es posible de alguna manera solo con RegEx.

Respuestas a la pregunta(6)

Su respuesta a la pregunta