if not Web3.is_address(sys.argv[1]): print("❌ Invalid Ethereum ad…#509
Open
casks-mutters wants to merge 1 commit intomainfrom
Open
if not Web3.is_address(sys.argv[1]): print("❌ Invalid Ethereum ad…#509casks-mutters wants to merge 1 commit intomainfrom
casks-mutters wants to merge 1 commit intomainfrom
Conversation
…s.", file=sys.stderr) sys.exit(1) address = checksum(sys.argv[1]) ## Summary The main CLI in `app.py` has a bit of duplicated and redundant validation: - The Ethereum address is checked twice with `Web3.is_address(...)` (once before and once after `to_checksum_address`). - The block range swap (`if block_a > block_b`) appears twice: once inside the `try` block and again immediately afterward, with two slightly different messages. This PR simplifies the validation logic so that: - The address is checked only once, then converted to checksum format. - The `block_a`/`block_b` swap is performed in a single, clear place. ## Changes In `app.py`: 1. **Address validation** - Keep a single address validity check using `Web3.is_address(sys.argv[1])`. - If valid, convert to checksum form once and reuse it. - Remove the second `Web3.is_address(address)` check, which is redundant after checksumming. 2. **Block range swap** - Parse `block_a` and `block_b` in the `try` block. - Normalize their order exactly once (if `block_a > block_b`, swap and print a single message). - Remove the second `if block_a > block_b` branch after the `try` block. ## Rationale - Reduces duplication and makes the argument-parsing logic easier to read and maintain. - Keeps CLI behavior the same (still validates address and ensures `block_a <= block_b`), but with less surprising repetition. - Low-risk change touching only input validation. ## Testing - Run the following to ensure behavior is unchanged: ```bash # Valid address, ordered blocks python app.py 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 0x0 18000000 19000000 # Valid address, reversed blocks (should swap once and print a single swap message) python app.py 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 0x0 19000000 18000000 # Invalid address (should error once, as before) python app.py not_an_address 0x0 18000000 19000000
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
…dress.", file=sys.stderr) sys.exit(1) address = checksum(sys.argv[1])
Summary
The main CLI in
app.pyhas a bit of duplicated and redundant validation:Web3.is_address(...)(once before and once afterto_checksum_address).if block_a > block_b) appears twice: once inside thetryblock and again immediately afterward, with two slightly different messages.This PR simplifies the validation logic so that:
block_a/block_bswap is performed in a single, clear place.Changes
In
app.py:Address validation
Web3.is_address(sys.argv[1]).Web3.is_address(address)check, which is redundant after checksumming.Block range swap
block_aandblock_bin thetryblock.block_a > block_b, swap and print a single message).if block_a > block_bbranch after thetryblock.Rationale
block_a <= block_b), but with less surprising repetition.Testing