To add to Andrew's answer I recently used the above code snippet to generate bech32m addresses from P2TR scriptPubKeys.
I cloned the bech32 repo and then created a file for the code snippet in the bech/ref/python
directory.
I took a P2TR scriptPubKey from the BIP 341 test vectors e.g. 5120712447206d7a5238acc7ff53fbe94a3b64539ad291c7cdbc490b7577e4b17df5
Then this slightly adjusted code generated the associated bech32m address (bc1pwyjywgrd0ffr3tx8laflh6228dj98xkjj8rum0zfpd6h0e930h6saqxrrm
).
import segwit_addr
import binascii
spk = binascii.unhexlify('5120712447206d7a5238acc7ff53fbe94a3b64539ad291c7cdbc490b7577e4b17df5')
version = spk[0] - 0x50 if spk[0] else 0
program = spk[2:]
print(segwit_addr.encode('bc', version, program))