Confusing code: `provider.contracts` is both a method and an attribute based on the call context
Confusing code: blockchain.provider.contracts
is both a method and an attribute based on the call context:
- a method: https://yourlabs.io/pyratzlabs/djwebdapp/-/blob/master/src/djwebdapp/provider.py#L158
- an attribute: https://yourlabs.io/pyratzlabs/djwebdapp/-/blob/master/src/djwebdapp/provider.py#L90
By default it is a method, but when called after provider.index_init
, it becomes an attribute that returns different provider.transaction_class
resulting in confusing code.