I used python-bitcoin-utils Python tool to generate the following code related to the transaction ID 88558b495f28ff4799a4dacf40ee5cd1666850fed4847b8315256a5ae22527f8
which involves inputs from both P2TR and P2WPKH scripts.
def main():
print(to_satoshis(0.0000022))
setup('testnet')
priv1 = PrivateKey("cV3R88re3AZSBnWhBBNdiCKTfwpMKkYYjdiR13HQzsU7zoRNX7JL")
priv2 = PrivateKey("cSfna7riKJdNU7skpRUx17WYANNsyHTA2FmuzLpFzpp37xpytgob")
pub1 = priv1.get_public_key()
pub2 = priv2.get_public_key()
fromAddress1 = pub1.get_taproot_address()
fromAddress2 = pub2.get_address()
# p2tr utxo
txid1 = 'd18b272e110fadd753dc30e08e9b12c1effe58a4f1253ae2289248b2994d0bf8'
vout1 = 0
# P2wpkh UTXO
txid2 = 'd18b272e110fadd753dc30e08e9b12c1effe58a4f1253ae2289248b2994d0bf8'
vout2 = 1
amount1 = 100000
amount2 = 100000
amounts = [amount1, amount2]
script_pubkey1 = fromAddress1.to_script_pub_key()
script_pubkey2 = fromAddress2.to_script_pub_key()
utxos_script_pubkeys = [script_pubkey1, script_pubkey2]
toAddress = P2pkhAddress('mnv5EAfPMTbfatz5ZbT6uUKpK7E5MftBAv')
txin1 = TxInput(txid1, vout1)
txin2 = TxInput(txid2, vout2)
txOut = TxOutput(to_satoshis(0.0000022), toAddress.to_script_pub_key())
tx = Transaction([txin1, txin2], [txOut], has_segwit=True)
sig1 = priv1.sign_taproot_input(tx, 0, utxos_script_pubkeys, amounts)
sig2 = priv2.sign_segwit_input(tx, 1, script=script_pubkey2, amount=amount1)
tx.witnesses.append(TxWitnessInput([sig1]))
tx.witnesses.append(TxWitnessInput([sig2, pub2.to_hex()]))
print("\nRaw signed transaction:\n" + tx.serialize())