I faced the same issue and this is how i solved it
from web3 import Web3 import requests
#Txn Hash 0xb26a0e7bec364162027da0b3fb3977d50371a5ecac5f762db976b1a76eb0a1ef web3 = Web3(Web3.HTTPProvider("Infura API"))
sample_input= "0x5ae401dc00000000000000000000000000000000000000000000000000000000647aa465000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000000e4472b43f30000000000000000000000000000000000000000066e61c22f323b208439e6460000000000000000000000000000000000000000000000000e4dfc066ae75a9b0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020000000000000000000000008888a185d4d83d4249acf0f8d262af2a5658b673000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004449404b7c0000000000000000000000000000000000000000000000000e4dfc066ae75a9b0000000000000000000000003b9a95822216c1d4951a9775aa4628e2f9edc5f000000000000000000000000000000000000000000000000000000000"
v3UniRouter= web3.toChecksumAddress('0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45')
v3UniAbi='ABI INPUT'
v3UniContract = web3.eth.contract(address=v3UniRouter, abi=v3UniAbi)
decoded = v3UniContract.decode_function_input(sample_input)
print(decoded)
multicall_data = decoded[1]['data'][0]
nested_call_decoded = v3UniContract.decode_function_input(multicall_data)
print(nested_call_decoded)
from web3 import Web3
import requests
#Txn Hash 0xb26a0e7bec364162027da0b3fb3977d50371a5ecac5f762db976b1a76eb0a1ef
web3 = Web3(Web3.HTTPProvider("Infura API"))
sample_input= "0x5ae401dc00000000000000000000000000000000000000000000000000000000647aa465000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000000e4472b43f30000000000000000000000000000000000000000066e61c22f323b208439e6460000000000000000000000000000000000000000000000000e4dfc066ae75a9b0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020000000000000000000000008888a185d4d83d4249acf0f8d262af2a5658b673000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004449404b7c0000000000000000000000000000000000000000000000000e4dfc066ae75a9b0000000000000000000000003b9a95822216c1d4951a9775aa4628e2f9edc5f000000000000000000000000000000000000000000000000000000000"
v3UniRouter= web3.toChecksumAddress('0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45')
v3UniAbi='ABI INPUT'
v3UniContract = web3.eth.contract(address=v3UniRouter, abi=v3UniAbi)
decoded = v3UniContract.decode_function_input(sample_input)
print(decoded)
multicall_data = decoded[1]['data'][0]
nested_call_decoded = v3UniContract.decode_function_input(multicall_data)
print(nested_call_decoded)