from lib_types import (
    PhonetInventory,
    Consonant,
    VocalFolds,
    Place,
    Manner,
    Airstream,
    Vowel,
    Height,
    Backness,
    Rounding,
    SecondaryArticulation,
    VowelLength,
)


def arabic_phoneme_inventory() -> PhonetInventory:
    """
    This is the phoneme inventory found in Modern Standard Arabic
    that are considered the correct pronunciation by the Arabic tradition today.
    This is what they will teach in school.
    Note: These are just phonemes, the allophones are not included for simplicity.
    """
    return PhonetInventory(
        [
            Consonant(
                VocalFolds.VOICED,
                Place.BILABIAL,
                Manner.PLOSIVE,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.NORMAL,
            ),
            Consonant(
                VocalFolds.VOICELESS,
                Place.ALVEOLAR,
                Manner.PLOSIVE,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.NORMAL,
            ),
            Consonant(
                VocalFolds.VOICED,
                Place.ALVEOLAR,
                Manner.PLOSIVE,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.NORMAL,
            ),
            Consonant(
                VocalFolds.VOICELESS,
                Place.VELAR,
                Manner.PLOSIVE,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.NORMAL,
            ),
            Consonant(
                VocalFolds.VOICELESS,
                Place.UVULAR,
                Manner.PLOSIVE,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.NORMAL,
            ),
            Consonant(
                VocalFolds.VOICELESS,
                Place.GLOTTAL,
                Manner.PLOSIVE,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.NORMAL,
            ),
            Consonant(
                VocalFolds.VOICED,
                Place.BILABIAL,
                Manner.NASAL,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.NORMAL,
            ),
            Consonant(
                VocalFolds.VOICED,
                Place.ALVEOLAR,
                Manner.NASAL,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.NORMAL,
            ),
            Consonant(
                VocalFolds.VOICED,
                Place.ALVEOLAR,
                Manner.TRILL,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.NORMAL,
            ),
            Consonant(
                VocalFolds.VOICELESS,
                Place.LABIODENTAL,
                Manner.FRICATIVE,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.NORMAL,
            ),
            Consonant(
                VocalFolds.VOICELESS,
                Place.DENTAL,
                Manner.FRICATIVE,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.NORMAL,
            ),
            Consonant(
                VocalFolds.VOICED,
                Place.DENTAL,
                Manner.FRICATIVE,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.NORMAL,
            ),
            Consonant(
                VocalFolds.VOICELESS,
                Place.ALVEOLAR,
                Manner.FRICATIVE,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.NORMAL,
            ),
            Consonant(
                VocalFolds.VOICED,
                Place.ALVEOLAR,
                Manner.FRICATIVE,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.NORMAL,
            ),
            Consonant(
                VocalFolds.VOICELESS,
                Place.POSTALVEOLAR,
                Manner.FRICATIVE,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.NORMAL,
            ),
            Consonant(
                VocalFolds.VOICED,
                Place.UVULAR,
                Manner.FRICATIVE,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.NORMAL,
            ),
            Consonant(
                VocalFolds.VOICELESS,
                Place.UVULAR,
                Manner.FRICATIVE,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.NORMAL,
            ),
            Consonant(
                VocalFolds.VOICED,
                Place.PHARYNGEAL,
                Manner.FRICATIVE,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.NORMAL,
            ),
            Consonant(
                VocalFolds.VOICELESS,
                Place.PHARYNGEAL,
                Manner.FRICATIVE,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.NORMAL,
            ),
            Consonant(
                VocalFolds.VOICELESS,
                Place.GLOTTAL,
                Manner.FRICATIVE,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.NORMAL,
            ),
            Consonant(
                VocalFolds.VOICED,
                Place.POSTALVEOLAR,
                Manner.AFFRICATE,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.NORMAL,
            ),
            Consonant(
                VocalFolds.VOICED,
                Place.PALATAL,
                Manner.APPROXIMANT,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.NORMAL,
            ),
            Consonant(
                VocalFolds.VOICED,
                Place.ALVEOLAR,
                Manner.LATERAL_APPROXIMANT,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.NORMAL,
            ),
            Consonant(
                VocalFolds.VOICED,
                Place.LABIAL_VELAR,
                Manner.APPROXIMANT,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.NORMAL,
            ),
            # Consonants with phonemic secondary articulation
            Consonant(
                VocalFolds.VOICELESS,
                Place.ALVEOLAR,
                Manner.PLOSIVE,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.PHARYNGEALIZED,
            ),
            Consonant(
                VocalFolds.VOICED,
                Place.ALVEOLAR,
                Manner.PLOSIVE,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.PHARYNGEALIZED,
            ),
            Consonant(
                VocalFolds.VOICED,
                Place.DENTAL,
                Manner.FRICATIVE,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.PHARYNGEALIZED,
            ),
            Consonant(
                VocalFolds.VOICELESS,
                Place.ALVEOLAR,
                Manner.FRICATIVE,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.PHARYNGEALIZED,
            ),
            # Short vowels:
            Vowel(
                Height.CLOSE,
                Backness.FRONT,
                Rounding.UNROUNDED,
                VocalFolds.VOICED,
                VowelLength.NORMAL,
            ),
            Vowel(
                Height.OPEN,
                Backness.FRONT,
                Rounding.UNROUNDED,
                VocalFolds.VOICED,
                VowelLength.NORMAL,
            ),
            Vowel(
                Height.CLOSE,
                Backness.BACK,
                Rounding.ROUNDED,
                VocalFolds.VOICED,
                VowelLength.NORMAL,
            ),
            # Long vowels:
            Vowel(
                Height.CLOSE,
                Backness.FRONT,
                Rounding.UNROUNDED,
                VocalFolds.VOICED,
                VowelLength.LONG,
            ),  # cursor
            Vowel(
                Height.OPEN,
                Backness.FRONT,
                Rounding.UNROUNDED,
                VocalFolds.VOICED,
                VowelLength.LONG,
            ),
            Vowel(
                Height.CLOSE,
                Backness.BACK,
                Rounding.ROUNDED,
                VocalFolds.VOICED,
                VowelLength.LONG,
            ),
        ]
    )

from lib_types import (
    PhonetInventory,
    Consonant,
    VocalFolds,
    Place,
    Manner,
    Airstream,
    Vowel,
    Height,
    Backness,
    Rounding,
    SecondaryArticulation,
    VowelLength,
)


def arabic_phoneme_inventory() -> PhonetInventory:
    """
    This is the phoneme inventory found in Modern Standard Arabic
    that are considered the correct pronunciation by the Arabic tradition today.
    This is what they will teach in school.
    Note: These are just phonemes, the allophones are not included for simplicity.
    """
    return PhonetInventory(
        [
            Consonant(
                VocalFolds.VOICED,
                Place.BILABIAL,
                Manner.PLOSIVE,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.NORMAL,
            ),
            Consonant(
                VocalFolds.VOICELESS,
                Place.ALVEOLAR,
                Manner.PLOSIVE,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.NORMAL,
            ),
            Consonant(
                VocalFolds.VOICED,
                Place.ALVEOLAR,
                Manner.PLOSIVE,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.NORMAL,
            ),
            Consonant(
                VocalFolds.VOICELESS,
                Place.VELAR,
                Manner.PLOSIVE,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.NORMAL,
            ),
            Consonant(
                VocalFolds.VOICELESS,
                Place.UVULAR,
                Manner.PLOSIVE,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.NORMAL,
            ),
            Consonant(
                VocalFolds.VOICELESS,
                Place.GLOTTAL,
                Manner.PLOSIVE,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.NORMAL,
            ),
            Consonant(
                VocalFolds.VOICED,
                Place.BILABIAL,
                Manner.NASAL,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.NORMAL,
            ),
            Consonant(
                VocalFolds.VOICED,
                Place.ALVEOLAR,
                Manner.NASAL,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.NORMAL,
            ),
            Consonant(
                VocalFolds.VOICED,
                Place.ALVEOLAR,
                Manner.TRILL,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.NORMAL,
            ),
            Consonant(
                VocalFolds.VOICELESS,
                Place.LABIODENTAL,
                Manner.FRICATIVE,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.NORMAL,
            ),
            Consonant(
                VocalFolds.VOICELESS,
                Place.DENTAL,
                Manner.FRICATIVE,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.NORMAL,
            ),
            Consonant(
                VocalFolds.VOICED,
                Place.DENTAL,
                Manner.FRICATIVE,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.NORMAL,
            ),
            Consonant(
                VocalFolds.VOICELESS,
                Place.ALVEOLAR,
                Manner.FRICATIVE,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.NORMAL,
            ),
            Consonant(
                VocalFolds.VOICED,
                Place.ALVEOLAR,
                Manner.FRICATIVE,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.NORMAL,
            ),
            Consonant(
                VocalFolds.VOICELESS,
                Place.POSTALVEOLAR,
                Manner.FRICATIVE,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.NORMAL,
            ),
            Consonant(
                VocalFolds.VOICED,
                Place.UVULAR,
                Manner.FRICATIVE,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.NORMAL,
            ),
            Consonant(
                VocalFolds.VOICELESS,
                Place.UVULAR,
                Manner.FRICATIVE,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.NORMAL,
            ),
            Consonant(
                VocalFolds.VOICED,
                Place.PHARYNGEAL,
                Manner.FRICATIVE,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.NORMAL,
            ),
            Consonant(
                VocalFolds.VOICELESS,
                Place.PHARYNGEAL,
                Manner.FRICATIVE,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.NORMAL,
            ),
            Consonant(
                VocalFolds.VOICELESS,
                Place.GLOTTAL,
                Manner.FRICATIVE,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.NORMAL,
            ),
            Consonant(
                VocalFolds.VOICED,
                Place.POSTALVEOLAR,
                Manner.AFFRICATE,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.NORMAL,
            ),
            Consonant(
                VocalFolds.VOICED,
                Place.PALATAL,
                Manner.APPROXIMANT,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.NORMAL,
            ),
            Consonant(
                VocalFolds.VOICED,
                Place.ALVEOLAR,
                Manner.LATERAL_APPROXIMANT,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.NORMAL,
            ),
            Consonant(
                VocalFolds.VOICED,
                Place.LABIAL_VELAR,
                Manner.APPROXIMANT,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.NORMAL,
            ),
            # Consonants with phonemic secondary articulation
            Consonant(
                VocalFolds.VOICELESS,
                Place.ALVEOLAR,
                Manner.PLOSIVE,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.PHARYNGEALIZED,
            ),
            Consonant(
                VocalFolds.VOICED,
                Place.ALVEOLAR,
                Manner.PLOSIVE,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.PHARYNGEALIZED,
            ),
            Consonant(
                VocalFolds.VOICED,
                Place.DENTAL,
                Manner.FRICATIVE,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.PHARYNGEALIZED,
            ),
            Consonant(
                VocalFolds.VOICELESS,
                Place.ALVEOLAR,
                Manner.FRICATIVE,
                Airstream.PULMONIC_EGRESSIVE,
                SecondaryArticulation.PHARYNGEALIZED,
            ),
            # Short vowels:
            Vowel(
                Height.CLOSE,
                Backness.FRONT,
                Rounding.UNROUNDED,
                VocalFolds.VOICED,
                VowelLength.NORMAL,
            ),
            Vowel(
                Height.OPEN,
                Backness.FRONT,
                Rounding.UNROUNDED,
                VocalFolds.VOICED,
                VowelLength.NORMAL,
            ),
            Vowel(
                Height.CLOSE,
                Backness.BACK,
                Rounding.ROUNDED,
                VocalFolds.VOICED,
                VowelLength.NORMAL,
            ),
            # Long vowels:
            Vowel(
                Height.CLOSE,
                Backness.FRONT,
                Rounding.UNROUNDED,
                VocalFolds.VOICED,
                VowelLength.LONG,
            ),  # cursor
            Vowel(
                Height.OPEN,
                Backness.FRONT,
                Rounding.UNROUNDED,
                VocalFolds.VOICED,
                VowelLength.LONG,
            ),
            Vowel(
                Height.CLOSE,
                Backness.BACK,
                Rounding.ROUNDED,
                VocalFolds.VOICED,
                VowelLength.LONG,
            ),
        ]
    )

This is the phoneme inventory found in Modern Standard Arabic     that are considered the correct pronunciation by the Arabic tradition today.     This is what they will teach in school.     Note: These are just phonemes, the allophones are not included for simplicity. # Consonants with phonemic secondary articulation # Short vowels: # Long vowels: # cursor