Skip to content

Commit

Permalink
Add filterBuilder method to contract events
Browse files Browse the repository at this point in the history
  • Loading branch information
dylanjw committed Jul 30, 2018
1 parent 01925b3 commit ebcb41a
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 0 deletions.
17 changes: 17 additions & 0 deletions tests/core/contracts/test_contract_events_buildFilter.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import json

CONTRACT_ABI = json.loads('[{"constant":false,"inputs":[],"name":"return13","outputs":[{"name":"result","type":"int256"}],"type":"function"},{"constant":true,"inputs":[],"name":"counter","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":false,"inputs":[{"name":"amt","type":"uint256"}],"name":"increment","outputs":[{"name":"result","type":"uint256"}],"type":"function"},{"constant":false,"inputs":[{"name":"a","type":"int256"},{"name":"b","type":"int256"}],"name":"add","outputs":[{"name":"result","type":"int256"}],"type":"function"},{"constant":false,"inputs":[],"name":"increment","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":false,"inputs":[{"name":"a","type":"int256"}],"name":"multiply7","outputs":[{"name":"result","type":"int256"}],"type":"function"},{"anonymous":false,"inputs":[{"indexed":false,"name":"value","type":"uint256"}],"name":"Increased","type":"event"}]') # noqa: E501


def test_buildFilter(web3):
contract = web3.eth.contract(abi=CONTRACT_ABI)
filter_builder = contract.events.Increased.buildFilter()
filter_builder.args['value'].match_any(100, 200, 300)
_filter = filter_builder.deploy(web3)
assert _filter.filter_params == {
'topics': (
'0x3496c3ede4ec3ab3686712aa1c238593ea6a42df83f98a5ec7df9834cfa577c5',)}
assert _filter.data_filter_set == (('uint256', (100, 200, 300)),)
filter_builder.args['value'].match_single(400)
_filter2 = filter_builder.deploy(web3)
assert _filter2.data_filter_set == (('uint256', (400,)),)
5 changes: 5 additions & 0 deletions web3/contract.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@
)
from web3.utils.events import (
get_event_data,
EventFilterBuilder,
)
from web3.utils.filters import (
construct_event_filter_params,
Expand Down Expand Up @@ -1318,6 +1319,10 @@ def createFilter(

return log_filter

@combomethod
def buildFilter(self):
return EventFilterBuilder(self._get_event_abi())

@classmethod
def factory(cls, class_name, **kwargs):
return PropertyCheckingFactory(class_name, (cls,), kwargs)
Expand Down

0 comments on commit ebcb41a

Please sign in to comment.