Repository: ethereum/eth-utils

Issue:
Update `is_address` logic
For less confusion, `is_address` should have less strict of a check on checksums. See conversation [here](https://github.com/ethereum/web3.py/issues/715).

Discussion:

Patch:
diff --git a/eth_utils/address.py b/eth_utils/address.py
index df77241..3407e70 100644
--- a/eth_utils/address.py
+++ b/eth_utils/address.py
@@ -59,12 +59,7 @@ def is_address(value: Any) -> bool:
     """
     Is the given string an address in any of the known formats?
     """
-    if is_hex_address(value):
-        if _is_checksum_formatted(value):
-            return is_checksum_address(value)
-        return True
-
-    if is_binary_address(value):
+    if is_hex_address(value) or is_binary_address(value):
         return True
 
     return False
diff --git a/newsfragments/265.breaking.rst b/newsfragments/265.breaking.rst
new file mode 100644
index 0000000..a1f708c
--- /dev/null
+++ b/newsfragments/265.breaking.rst
@@ -0,0 +1,1 @@
+`Web3.is_address` now returns True for non-checksummed addresses.


Test patch:
diff --git a/tests/address-utils/test_address_utils.py b/tests/address-utils/test_address_utils.py
index fb8d852..56f4f64 100644
--- a/tests/address-utils/test_address_utils.py
+++ b/tests/address-utils/test_address_utils.py
@@ -35,8 +35,8 @@ from eth_utils.address import (
         # checksummed - valid
         ("0x5B2063246F2191f18F2675ceDB8b28102e957458", True, True, False),
         (b"0x5B2063246F2191f18F2675ceDB8b28102e957458", False, False, False),
+        ("0x5b2063246F2191f18F2675ceDB8b28102e957458", True, True, False),
         # checksummed - invalid
-        ("0x5b2063246F2191f18F2675ceDB8b28102e957458", False, True, False),
         (b"0x5b2063246F2191f18F2675ceDB8b28102e957458", False, False, False),
         # too short - unprefixed
         ("c6d9d2cd449a754c494264e1809c50e34d64562", False, False, False),