Skip to content

Edit some ValueError() messages for more clarity #2146

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Sep 13, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions newsfragments/2146.doc.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Clarify some contract ``ValueError`` error messages.
14 changes: 8 additions & 6 deletions web3/contract.py
Original file line number Diff line number Diff line change
Expand Up @@ -689,7 +689,9 @@ def check_forbidden_keys_in_transaction(
) -> None:
keys_found = set(transaction.keys()) & set(forbidden_keys)
if keys_found:
raise ValueError("Cannot set {} in transaction".format(', '.join(keys_found)))
raise ValueError(
"Cannot set '{}' field(s) in transaction".format(', '.join(keys_found))
)


class ConciseMethod:
Expand Down Expand Up @@ -932,7 +934,7 @@ def call(
call_transaction = cast(TxParams, dict(**transaction))

if 'data' in call_transaction:
raise ValueError("Cannot set data in call transaction")
raise ValueError("Cannot set 'data' field in call transaction")

if self.address:
call_transaction.setdefault('to', self.address)
Expand Down Expand Up @@ -975,7 +977,7 @@ def transact(self, transaction: Optional[TxParams] = None) -> HexBytes:
transact_transaction = cast(TxParams, dict(**transaction))

if 'data' in transact_transaction:
raise ValueError("Cannot set data in transact transaction")
raise ValueError("Cannot set 'data' field in transact transaction")

if self.address is not None:
transact_transaction.setdefault('to', self.address)
Expand Down Expand Up @@ -1015,7 +1017,7 @@ def estimateGas(
estimate_gas_transaction = cast(TxParams, dict(**transaction))

if 'data' in estimate_gas_transaction:
raise ValueError("Cannot set data in estimateGas transaction")
raise ValueError("Cannot set 'data' field in estimateGas transaction")
if 'to' in estimate_gas_transaction:
raise ValueError("Cannot set to in estimateGas transaction")

Expand Down Expand Up @@ -1058,15 +1060,15 @@ def buildTransaction(self, transaction: Optional[TxParams] = None) -> TxParams:
built_transaction = cast(TxParams, dict(**transaction))

if 'data' in built_transaction:
raise ValueError("Cannot set data in build transaction")
raise ValueError("Cannot set 'data' field in build transaction")

if not self.address and 'to' not in built_transaction:
raise ValueError(
"When using `ContractFunction.buildTransaction` from a contract factory "
"you must provide a `to` address with the transaction"
)
if self.address and 'to' in built_transaction:
raise ValueError("Cannot set to in contract call build transaction")
raise ValueError("Cannot set 'to' field in contract call build transaction")

if self.address:
built_transaction.setdefault('to', self.address)
Expand Down