Are electrum's private keys 512 bits or 256 bits long? I have recently been going through the python source code for electrum and encountered the following lines of code at the mneumonic.py file starting from line 130:

def mnemonic_to_seed(self, mnemonic, passphrase):
        PBKDF2_ROUNDS = 2048
        mnemonic = normalize_text(mnemonic)
        passphrase = normalize_text(passphrase)
        return pbkdf2.PBKDF2(mnemonic, 'electrum' + passphrase, iterations = 
              PBKDF2_ROUNDS, macmodule = hmac, digestmodule = 
               hashlib.sha512).read(64)


We see clearly that it returns a 64 bytes or 512 bit seed instead of what we all know a bitcoin priv key should be - 256 bits.
Is this the final function to be called for priv key generation or are there steps or functions that I missed?
Is this the final function to be called for priv key generation or are there steps or functions that I missed?


You are missing a lot of steps.

The seed value is 512 bits because more bits is more secure, and BIP 32 specifies that a seed value between 128 and 512 bits should be used. It does not matter what the length of the seed value is because it will get hashed anyways and the result is 512 bits.

BIP 32 uses 512 bits because the value is split in half for two 256 bit values. One of those is the private key, the other is the chaincode.