When building a Web3 transaction, currently Web3 transactions parameters are automatically filled in by deferring to web3.py's built-in logic, which ultimately calls web3.utils._.transactions.fill_transaction_defaults(). But this is not sufficient for some important use cases.
Support passing custom Web3 transaction parameters in order to:
- enable a user who wants to override the defaults to use preferred Web3 parameter values
- enable offline signing of Web3 transactions, where all the Web3 parameters will need to be provided