Source code for y.monkey_patches

import brownie.convert
import checksum_dict._utils
import dank_mids.brownie_patch.call
import eth_event.main
import eth_utils
import evmspec.data._main
import multicall.call
import web3._utils as web3_utils
import web3.main as web3_main
import web3.middleware as web3_middleware

import y.convert


[docs] def monkey_patch_checksum_cache(): """ Monkey patch dependency checksums with faster versions. This function replaces the default checksumming functions in various libraries with a faster implementation using `to_address`. This improves performance by utilizing caching and optimized checksumming. See Also: - :func:`to_address` for the checksumming process. """ # this monkey patches brownie's convert.to_address with our lru_cache brownie.convert.to_address = y.convert.to_address # this monkey patches checksum_dict's checksumming with our lru_cache checksum_dict._utils.to_checksum_address = y.convert.to_address # this monkey patches the dank_mids brownie patch's checksums with our lru_cache dank_mids.brownie_patch.call.to_checksum_address = y.convert.to_address # this monkey patches eth_event's address checksumming with our lru_cache eth_event.main.to_checksum_address = y.convert.to_address # this monkey patches brownie's EthAddress class with faster execution eth_utils.to_checksum_address = y.convert.to_address # this monkey patches something else I don't remember now with faster execution eth_utils.address.to_checksum_address = y.convert.to_address # this monkey patches evmspec's Address decode hook with our lru cache evmspec.data._main.to_checksum_address = y.convert.to_address # this monkey patches multicall.Call.target checksumming with our lru cache multicall.call.to_checksum_address = y.convert.to_address # this monkey patches all checksums in web3py with faster execution web3_main.to_checksum_address = y.convert.to_address web3_utils.ens.to_checksum_address = y.convert.to_address web3_utils.method_formatters.to_checksum_address = y.convert.to_address web3_utils.normalizers.to_checksum_address = y.convert.to_address web3_middleware.signing.to_checksum_address = y.convert.to_address try: import web3.utils.address as web3_address web3_address.to_checksum_address = y.convert.to_address except ModuleNotFoundError: # youre on an older web3py, no monkey patch for you pass try: import ens.ens ens.ens.to_checksum_address = y.convert.to_address except ModuleNotFoundError: # youre on an older web3py, no monkey patch for you pass try: import ens.async_ens ens.async_ens.to_checksum_address = y.convert.to_address except ModuleNotFoundError: # youre on an older web3py, no monkey patch for you pass