¿Cómo leer "todos los eventos" usando Python web3 (hay capacidad en web3.js)?

¿Existe un mecanismo para crear un oyente para todos los eventos que se emiten desde un contrato inteligente para la biblioteca python web3? Hay una manera de hacerlo en web3.js:

myContract.events.allEvents([options][, callback])

Sin embargo, no veo un paralelo en la biblioteca de Python. Hay una función para obtener todos los eventos en Hex, pero estoy buscando la versión legible por humanos.

Cómo obtener eventos en Hex:

event_filter = web3.eth.filter({"address": contract_address})

documentación web3.js: https://web3js.readthedocs.io/en/1.0/web3-eth-contract.html#events-allevents documentación web3.py: http://web3py.readthedocs.io/en/stable/filters .html

Respuestas (1)

Una opción es iterar todos los eventos y llamar createFiltera cada uno de los eventos. Algo como:

from web3.contract import ContractEvent

filters = [
  event.createFilter(fromBlock='latest')
  for event in myContract.events
  if issubclass(event, ContractEvent)
]
Aquí hay otro ejemplo si necesita más github.com/TokenMarketNet/ico/blob/…