sde1000 / python-xkbregistry

Python bindings for libxkbregistry using cffi
MIT License
1 stars 1 forks source link

Failing test #1

Closed jexposit closed 8 months ago

jexposit commented 8 months ago

Hi!

I'm packaging python-xkbregistry for Fedora and I found this error while running the unit tests:

AssertionError: 'nec_vndr/jp' not found in {'al': rxkb.Layout('al'), 'al(plisi)': rxkb.Layout('al(plisi)'), 'al(veqilharxhi)': rxkb.Layout('al(veqilharxhi)'), 'et': rxkb.Layout('et'), 'am': rxkb.Layout('am'), 'am(phonetic)': rxkb.Layout('am(phonetic)'), 'am(phonetic-alt)': rxkb.Layout('am(phonetic-alt)'), 'am(eastern)': rxkb.Layout('am(eastern)'), 'am(eastern-alt)': rxkb.Layout('am(eastern-alt)'), 'am(western)': rxkb.Layout('am(western)'), 'ara': rxkb.Layout('ara'), 'ara(digits)': rxkb.Layout('ara(digits)'), 'ara(azerty)': rxkb.Layout('ara(azerty)'), 'ara(azerty_digits)': rxkb.Layout('ara(azerty_digits)'), 'ara(buckwalter)': rxkb.Layout('ara(buckwalter)'), 'ara(mac)': rxkb.Layout('ara(mac)'), 'ara(mac-phonetic)': rxkb.Layout('ara(mac-phonetic)'), 'ara(olpc)': rxkb.Layout('ara(olpc)'), 'eg': rxkb.Layout('eg'), 'iq': rxkb.Layout('iq'), 'iq(ku)': rxkb.Layout('iq(ku)'), 'iq(ku_alt)': rxkb.Layout('iq(ku_alt)'), 'iq(ku_f)': rxkb.Layout('iq(ku_f)'), 'iq(ku_ara)': rxkb.Layout('iq(ku_ara)'), 'ma': rxkb.Layout('ma'), 'ma(tifinagh)': rxkb.Layout('ma(tifinagh)'), 'ma(tifinagh-alt)': rxkb.Layout('ma(tifinagh-alt)'), 'ma(tifinagh-alt-phonetic)': rxkb.Layout('ma(tifinagh-alt-phonetic)'), 'ma(tifinagh-extended)': rxkb.Layout('ma(tifinagh-extended)'), 'ma(tifinagh-phonetic)': rxkb.Layout('ma(tifinagh-phonetic)'), 'ma(tifinagh-extended-phonetic)': rxkb.Layout('ma(tifinagh-extended-phonetic)'), 'ma(french)': rxkb.Layout('ma(french)'), 'ma(rif)': rxkb.Layout('ma(rif)'), 'sy': rxkb.Layout('sy'), 'sy(syc)': rxkb.Layout('sy(syc)'), 'sy(syc_phonetic)': rxkb.Layout('sy(syc_phonetic)'), 'sy(ku)': rxkb.Layout('sy(ku)'), 'sy(ku_alt)': rxkb.Layout('sy(ku_alt)'), 'sy(ku_f)': rxkb.Layout('sy(ku_f)'), 'az': rxkb.Layout('az'), 'az(cyrillic)': rxkb.Layout('az(cyrillic)'), 'ml': rxkb.Layout('ml'), 'ml(fr-oss)': rxkb.Layout('ml(fr-oss)'), 'ml(us-mac)': rxkb.Layout('ml(us-mac)'), 'ml(us-intl)': rxkb.Layout('ml(us-intl)'), 'bd': rxkb.Layout('bd'), 'bd(probhat)': rxkb.Layout('bd(probhat)'), 'by': rxkb.Layout('by'), 'by(legacy)': rxkb.Layout('by(legacy)'), 'by(latin)': rxkb.Layout('by(latin)'), 'by(intl)': rxkb.Layout('by(intl)'), 'by(phonetic)': rxkb.Layout('by(phonetic)'), 'by(ru)': rxkb.Layout('by(ru)'), 'be': rxkb.Layout('be'), 'be(oss)': rxkb.Layout('be(oss)'), 'be(oss_latin9)': rxkb.Layout('be(oss_latin9)'), 'be(iso-alternate)': rxkb.Layout('be(iso-alternate)'), 'be(nodeadkeys)': rxkb.Layout('be(nodeadkeys)'), 'be(wang)': rxkb.Layout('be(wang)'), 'dz': rxkb.Layout('dz'), 'dz(ber)': rxkb.Layout('dz(ber)'), 'dz(azerty-deadkeys)': rxkb.Layout('dz(azerty-deadkeys)'), 'dz(qwerty-gb-deadkeys)': rxkb.Layout('dz(qwerty-gb-deadkeys)'), 'dz(qwerty-us-deadkeys)': rxkb.Layout('dz(qwerty-us-deadkeys)'), 'dz(ar)': rxkb.Layout('dz(ar)'), 'ba': rxkb.Layout('ba'), 'ba(alternatequotes)': rxkb.Layout('ba(alternatequotes)'), 'ba(unicode)': rxkb.Layout('ba(unicode)'), 'ba(unicodeus)': rxkb.Layout('ba(unicodeus)'), 'ba(us)': rxkb.Layout('ba(us)'), 'brai': rxkb.Layout('brai'), 'brai(left_hand)': rxkb.Layout('brai(left_hand)'), 'brai(left_hand_invert)': rxkb.Layout('brai(left_hand_invert)'), 'brai(right_hand)': rxkb.Layout('brai(right_hand)'), 'brai(right_hand_invert)': rxkb.Layout('brai(right_hand_invert)'), 'bg': rxkb.Layout('bg'), 'bg(phonetic)': rxkb.Layout('bg(phonetic)'), 'bg(bas_phonetic)': rxkb.Layout('bg(bas_phonetic)'), 'bg(bekl)': rxkb.Layout('bg(bekl)'), 'mm': rxkb.Layout('mm'), 'mm(zawgyi)': rxkb.Layout('mm(zawgyi)'), 'mm(mnw)': rxkb.Layout('mm(mnw)'), 'mm(mnw-a1)': rxkb.Layout('mm(mnw-a1)'), 'mm(shn)': rxkb.Layout('mm(shn)'), 'mm(zgt)': rxkb.Layout('mm(zgt)'), 'cn': rxkb.Layout('cn'), 'cn(altgr-pinyin)': rxkb.Layout('cn(altgr-pinyin)'), 'cn(mon_trad)': rxkb.Layout('cn(mon_trad)'), 'cn(mon_trad_todo)': rxkb.Layout('cn(mon_trad_todo)'), 'cn(mon_trad_xibe)': rxkb.Layout('cn(mon_trad_xibe)'), 'cn(mon_trad_manchu)': rxkb.Layout('cn(mon_trad_manchu)'), 'cn(mon_trad_galik)': rxkb.Layout('cn(mon_trad_galik)'), 'cn(mon_todo_galik)': rxkb.Layout('cn(mon_todo_galik)'), 'cn(mon_manchu_galik)': rxkb.Layout('cn(mon_manchu_galik)'), 'cn(tib)': rxkb.Layout('cn(tib)'), 'cn(tib_asciinum)': rxkb.Layout('cn(tib_asciinum)'), 'cn(ug)': rxkb.Layout('cn(ug)'), 'hr': rxkb.Layout('hr'), 'hr(alternatequotes)': rxkb.Layout('hr(alternatequotes)'), 'hr(unicode)': rxkb.Layout('hr(unicode)'), 'hr(unicodeus)': rxkb.Layout('hr(unicodeus)'), 'hr(us)': rxkb.Layout('hr(us)'), 'cz': rxkb.Layout('cz'), 'cz(bksl)': rxkb.Layout('cz(bksl)'), 'cz(qwerty)': rxkb.Layout('cz(qwerty)'), 'cz(qwerty_bksl)': rxkb.Layout('cz(qwerty_bksl)'), 'cz(winkeys)': rxkb.Layout('cz(winkeys)'), 'cz(winkeys-qwerty)': rxkb.Layout('cz(winkeys-qwerty)'), 'cz(qwerty-mac)': rxkb.Layout('cz(qwerty-mac)'), 'cz(ucw)': rxkb.Layout('cz(ucw)'), 'cz(dvorak-ucw)': rxkb.Layout('cz(dvorak-ucw)'), 'cz(rus)': rxkb.Layout('cz(rus)'), 'dk': rxkb.Layout('dk'), 'dk(nodeadkeys)': rxkb.Layout('dk(nodeadkeys)'), 'dk(winkeys)': rxkb.Layout('dk(winkeys)'), 'dk(mac)': rxkb.Layout('dk(mac)'), 'dk(mac_nodeadkeys)': rxkb.Layout('dk(mac_nodeadkeys)'), 'dk(dvorak)': rxkb.Layout('dk(dvorak)'), 'af': rxkb.Layout('af'), 'af(ps)': rxkb.Layout('af(ps)'), 'af(uz)': rxkb.Layout('af(uz)'), 'af(fa-olpc)': rxkb.Layout('af(fa-olpc)'), 'af(ps-olpc)': rxkb.Layout('af(ps-olpc)'), 'af(uz-olpc)': rxkb.Layout('af(uz-olpc)'), 'mv': rxkb.Layout('mv'), 'nl': rxkb.Layout('nl'), 'nl(us)': rxkb.Layout('nl(us)'), 'nl(mac)': rxkb.Layout('nl(mac)'), 'nl(std)': rxkb.Layout('nl(std)'), 'bt': rxkb.Layout('bt'), 'au': rxkb.Layout('au'), 'cm': rxkb.Layout('cm'), 'cm(french)': rxkb.Layout('cm(french)'), 'cm(qwerty)': rxkb.Layout('cm(qwerty)'), 'cm(azerty)': rxkb.Layout('cm(azerty)'), 'cm(dvorak)': rxkb.Layout('cm(dvorak)'), 'cm(mmuock)': rxkb.Layout('cm(mmuock)'), 'gh': rxkb.Layout('gh'), 'gh(generic)': rxkb.Layout('gh(generic)'), 'gh(gillbt)': rxkb.Layout('gh(gillbt)'), 'gh(akan)': rxkb.Layout('gh(akan)'), 'gh(avn)': rxkb.Layout('gh(avn)'), 'gh(ewe)': rxkb.Layout('gh(ewe)'), 'gh(fula)': rxkb.Layout('gh(fula)'), 'gh(ga)': rxkb.Layout('gh(ga)'), 'gh(hausa)': rxkb.Layout('gh(hausa)'), 'nz': rxkb.Layout('nz'), 'nz(mao)': rxkb.Layout('nz(mao)'), 'ng': rxkb.Layout('ng'), 'ng(hausa)': rxkb.Layout('ng(hausa)'), 'ng(igbo)': rxkb.Layout('ng(igbo)'), 'ng(yoruba)': rxkb.Layout('ng(yoruba)'), 'za': rxkb.Layout('za'), 'gb': rxkb.Layout('gb'), 'gb(extd)': rxkb.Layout('gb(extd)'), 'gb(intl)': rxkb.Layout('gb(intl)'), 'gb(dvorak)': rxkb.Layout('gb(dvorak)'), 'gb(dvorakukp)': rxkb.Layout('gb(dvorakukp)'), 'gb(mac)': rxkb.Layout('gb(mac)'), 'gb(mac_intl)': rxkb.Layout('gb(mac_intl)'), 'gb(colemak)': rxkb.Layout('gb(colemak)'), 'gb(colemak_dh)': rxkb.Layout('gb(colemak_dh)'), 'gb(gla)': rxkb.Layout('gb(gla)'), 'gb(pl)': rxkb.Layout('gb(pl)'), 'us': rxkb.Layout('us'), 'us(euro)': rxkb.Layout('us(euro)'), 'us(intl)': rxkb.Layout('us(intl)'), 'us(alt-intl)': rxkb.Layout('us(alt-intl)'), 'us(altgr-intl)': rxkb.Layout('us(altgr-intl)'), 'us(mac)': rxkb.Layout('us(mac)'), 'us(colemak)': rxkb.Layout('us(colemak)'), 'us(colemak_dh)': rxkb.Layout('us(colemak_dh)'), 'us(colemak_dh_wide)': rxkb.Layout('us(colemak_dh_wide)'), 'us(colemak_dh_ortho)': rxkb.Layout('us(colemak_dh_ortho)'), 'us(colemak_dh_iso)': rxkb.Layout('us(colemak_dh_iso)'), 'us(colemak_dh_wide_iso)': rxkb.Layout('us(colemak_dh_wide_iso)'), 'us(dvorak)': rxkb.Layout('us(dvorak)'), 'us(dvorak-intl)': rxkb.Layout('us(dvorak-intl)'), 'us(dvorak-alt-intl)': rxkb.Layout('us(dvorak-alt-intl)'), 'us(dvorak-l)': rxkb.Layout('us(dvorak-l)'), 'us(dvorak-r)': rxkb.Layout('us(dvorak-r)'), 'us(dvorak-classic)': rxkb.Layout('us(dvorak-classic)'), 'us(dvp)': rxkb.Layout('us(dvp)'), 'us(dvorak-mac)': rxkb.Layout('us(dvorak-mac)'), 'us(norman)': rxkb.Layout('us(norman)'), 'us(symbolic)': rxkb.Layout('us(symbolic)'), 'us(workman)': rxkb.Layout('us(workman)'), 'us(workman-intl)': rxkb.Layout('us(workman-intl)'), 'us(olpc2)': rxkb.Layout('us(olpc2)'), 'us(chr)': rxkb.Layout('us(chr)'), 'us(haw)': rxkb.Layout('us(haw)'), 'us(rus)': rxkb.Layout('us(rus)'), 'us(hbs)': rxkb.Layout('us(hbs)'), 'epo': rxkb.Layout('epo'), 'epo(legacy)': rxkb.Layout('epo(legacy)'), 'ee': rxkb.Layout('ee'), 'ee(nodeadkeys)': rxkb.Layout('ee(nodeadkeys)'), 'ee(dvorak)': rxkb.Layout('ee(dvorak)'), 'ee(us)': rxkb.Layout('ee(us)'), 'fo': rxkb.Layout('fo'), 'fo(nodeadkeys)': rxkb.Layout('fo(nodeadkeys)'), 'ph': rxkb.Layout('ph'), 'ph(qwerty-bay)': rxkb.Layout('ph(qwerty-bay)'), 'ph(capewell-dvorak)': rxkb.Layout('ph(capewell-dvorak)'), 'ph(capewell-dvorak-bay)': rxkb.Layout('ph(capewell-dvorak-bay)'), 'ph(capewell-qwerf2k6)': rxkb.Layout('ph(capewell-qwerf2k6)'), 'ph(capewell-qwerf2k6-bay)': rxkb.Layout('ph(capewell-qwerf2k6-bay)'), 'ph(colemak)': rxkb.Layout('ph(colemak)'), 'ph(colemak-bay)': rxkb.Layout('ph(colemak-bay)'), 'ph(dvorak)': rxkb.Layout('ph(dvorak)'), 'ph(dvorak-bay)': rxkb.Layout('ph(dvorak-bay)'), 'fi': rxkb.Layout('fi'), 'fi(winkeys)': rxkb.Layout('fi(winkeys)'), 'fi(classic)': rxkb.Layout('fi(classic)'), 'fi(nodeadkeys)': rxkb.Layout('fi(nodeadkeys)'), 'fi(mac)': rxkb.Layout('fi(mac)'), 'fi(smi)': rxkb.Layout('fi(smi)'), 'fr': rxkb.Layout('fr'), 'fr(nodeadkeys)': rxkb.Layout('fr(nodeadkeys)'), 'fr(oss)': rxkb.Layout('fr(oss)'), 'fr(oss_nodeadkeys)': rxkb.Layout('fr(oss_nodeadkeys)'), 'fr(oss_latin9)': rxkb.Layout('fr(oss_latin9)'), 'fr(latin9)': rxkb.Layout('fr(latin9)'), 'fr(latin9_nodeadkeys)': rxkb.Layout('fr(latin9_nodeadkeys)'), 'fr(azerty)': rxkb.Layout('fr(azerty)'), 'fr(afnor)': rxkb.Layout('fr(afnor)'), 'fr(bepo)': rxkb.Layout('fr(bepo)'), 'fr(bepo_latin9)': rxkb.Layout('fr(bepo_latin9)'), 'fr(bepo_afnor)': rxkb.Layout('fr(bepo_afnor)'), 'fr(dvorak)': rxkb.Layout('fr(dvorak)'), 'fr(mac)': rxkb.Layout('fr(mac)'), 'fr(us)': rxkb.Layout('fr(us)'), 'fr(bre)': rxkb.Layout('fr(bre)'), 'fr(oci)': rxkb.Layout('fr(oci)'), 'fr(geo)': rxkb.Layout('fr(geo)'), 'ca': rxkb.Layout('ca'), 'ca(fr-dvorak)': rxkb.Layout('ca(fr-dvorak)'), 'ca(fr-legacy)': rxkb.Layout('ca(fr-legacy)'), 'ca(multix)': rxkb.Layout('ca(multix)'), 'ca(eng)': rxkb.Layout('ca(eng)'), 'ca(ike)': rxkb.Layout('ca(ike)'), 'cd': rxkb.Layout('cd'), 'tg': rxkb.Layout('tg'), 'ge': rxkb.Layout('ge'), 'ge(ergonomic)': rxkb.Layout('ge(ergonomic)'), 'ge(mess)': rxkb.Layout('ge(mess)'), 'ge(os)': rxkb.Layout('ge(os)'), 'ge(ru)': rxkb.Layout('ge(ru)'), 'de': rxkb.Layout('de'), 'de(deadacute)': rxkb.Layout('de(deadacute)'), 'de(deadgraveacute)': rxkb.Layout('de(deadgraveacute)'), 'de(deadtilde)': rxkb.Layout('de(deadtilde)'), 'de(nodeadkeys)': rxkb.Layout('de(nodeadkeys)'), 'de(e1)': rxkb.Layout('de(e1)'), 'de(e2)': rxkb.Layout('de(e2)'), 'de(T3)': rxkb.Layout('de(T3)'), 'de(us)': rxkb.Layout('de(us)'), 'de(dvorak)': rxkb.Layout('de(dvorak)'), 'de(mac)': rxkb.Layout('de(mac)'), 'de(mac_nodeadkeys)': rxkb.Layout('de(mac_nodeadkeys)'), 'de(neo)': rxkb.Layout('de(neo)'), 'de(qwerty)': rxkb.Layout('de(qwerty)'), 'de(dsb)': rxkb.Layout('de(dsb)'), 'de(dsb_qwertz)': rxkb.Layout('de(dsb_qwertz)'), 'de(ro)': rxkb.Layout('de(ro)'), 'de(ro_nodeadkeys)': rxkb.Layout('de(ro_nodeadkeys)'), 'de(ru)': rxkb.Layout('de(ru)'), 'de(tr)': rxkb.Layout('de(tr)'), 'at': rxkb.Layout('at'), 'at(nodeadkeys)': rxkb.Layout('at(nodeadkeys)'), 'at(mac)': rxkb.Layout('at(mac)'), 'ch': rxkb.Layout('ch'), 'ch(de_nodeadkeys)': rxkb.Layout('ch(de_nodeadkeys)'), 'ch(de_mac)': rxkb.Layout('ch(de_mac)'), 'ch(legacy)': rxkb.Layout('ch(legacy)'), 'ch(fr)': rxkb.Layout('ch(fr)'), 'ch(fr_nodeadkeys)': rxkb.Layout('ch(fr_nodeadkeys)'), 'ch(fr_mac)': rxkb.Layout('ch(fr_mac)'), 'gr': rxkb.Layout('gr'), 'gr(simple)': rxkb.Layout('gr(simple)'), 'gr(extended)': rxkb.Layout('gr(extended)'), 'gr(nodeadkeys)': rxkb.Layout('gr(nodeadkeys)'), 'gr(polytonic)': rxkb.Layout('gr(polytonic)'), 'il': rxkb.Layout('il'), 'il(si2)': rxkb.Layout('il(si2)'), 'il(lyx)': rxkb.Layout('il(lyx)'), 'il(phonetic)': rxkb.Layout('il(phonetic)'), 'il(biblical)': rxkb.Layout('il(biblical)'), 'hu': rxkb.Layout('hu'), 'hu(standard)': rxkb.Layout('hu(standard)'), 'hu(nodeadkeys)': rxkb.Layout('hu(nodeadkeys)'), 'hu(qwerty)': rxkb.Layout('hu(qwerty)'), 'hu(101_qwertz_comma_dead)': rxkb.Layout('hu(101_qwertz_comma_dead)'), 'hu(101_qwertz_comma_nodead)': rxkb.Layout('hu(101_qwertz_comma_nodead)'), 'hu(101_qwertz_dot_dead)': rxkb.Layout('hu(101_qwertz_dot_dead)'), 'hu(101_qwertz_dot_nodead)': rxkb.Layout('hu(101_qwertz_dot_nodead)'), 'hu(101_qwerty_comma_dead)': rxkb.Layout('hu(101_qwerty_comma_dead)'), 'hu(101_qwerty_comma_nodead)': rxkb.Layout('hu(101_qwerty_comma_nodead)'), 'hu(101_qwerty_dot_dead)': rxkb.Layout('hu(101_qwerty_dot_dead)'), 'hu(101_qwerty_dot_nodead)': rxkb.Layout('hu(101_qwerty_dot_nodead)'), 'hu(102_qwertz_comma_dead)': rxkb.Layout('hu(102_qwertz_comma_dead)'), 'hu(102_qwertz_comma_nodead)': rxkb.Layout('hu(102_qwertz_comma_nodead)'), 'hu(102_qwertz_dot_dead)': rxkb.Layout('hu(102_qwertz_dot_dead)'), 'hu(102_qwertz_dot_nodead)': rxkb.Layout('hu(102_qwertz_dot_nodead)'), 'hu(102_qwerty_comma_dead)': rxkb.Layout('hu(102_qwerty_comma_dead)'), 'hu(102_qwerty_comma_nodead)': rxkb.Layout('hu(102_qwerty_comma_nodead)'), 'hu(102_qwerty_dot_dead)': rxkb.Layout('hu(102_qwerty_dot_dead)'), 'hu(102_qwerty_dot_nodead)': rxkb.Layout('hu(102_qwerty_dot_nodead)'), 'is': rxkb.Layout('is'), 'is(mac_legacy)': rxkb.Layout('is(mac_legacy)'), 'is(mac)': rxkb.Layout('is(mac)'), 'is(dvorak)': rxkb.Layout('is(dvorak)'), 'in': rxkb.Layout('in'), 'in(asm-kagapa)': rxkb.Layout('in(asm-kagapa)'), 'in(ben)': rxkb.Layout('in(ben)'), 'in(ben_probhat)': rxkb.Layout('in(ben_probhat)'), 'in(ben_baishakhi)': rxkb.Layout('in(ben_baishakhi)'), 'in(ben_bornona)': rxkb.Layout('in(ben_bornona)'), 'in(ben-kagapa)': rxkb.Layout('in(ben-kagapa)'), 'in(ben_gitanjali)': rxkb.Layout('in(ben_gitanjali)'), 'in(ben_inscript)': rxkb.Layout('in(ben_inscript)'), 'in(eng)': rxkb.Layout('in(eng)'), 'in(guj)': rxkb.Layout('in(guj)'), 'in(guj-kagapa)': rxkb.Layout('in(guj-kagapa)'), 'in(bolnagri)': rxkb.Layout('in(bolnagri)'), 'in(hin-wx)': rxkb.Layout('in(hin-wx)'), 'in(hin-kagapa)': rxkb.Layout('in(hin-kagapa)'), 'in(kan)': rxkb.Layout('in(kan)'), 'in(kan-kagapa)': rxkb.Layout('in(kan-kagapa)'), 'in(mal)': rxkb.Layout('in(mal)'), 'in(mal_lalitha)': rxkb.Layout('in(mal_lalitha)'), 'in(mal_enhanced)': rxkb.Layout('in(mal_enhanced)'), 'in(mal_poorna)': rxkb.Layout('in(mal_poorna)'), 'in(mni)': rxkb.Layout('in(mni)'), 'in(mar-kagapa)': rxkb.Layout('in(mar-kagapa)'), 'in(marathi)': rxkb.Layout('in(marathi)'), 'in(ori)': rxkb.Layout('in(ori)'), 'in(ori-bolnagri)': rxkb.Layout('in(ori-bolnagri)'), 'in(ori-wx)': rxkb.Layout('in(ori-wx)'), 'in(guru)': rxkb.Layout('in(guru)'), 'in(jhelum)': rxkb.Layout('in(jhelum)'), 'in(san-kagapa)': rxkb.Layout('in(san-kagapa)'), 'in(sat)': rxkb.Layout('in(sat)'), 'in(tamilnet)': rxkb.Layout('in(tamilnet)'), 'in(tamilnet_tamilnumbers)': rxkb.Layout('in(tamilnet_tamilnumbers)'), 'in(tamilnet_TAB)': rxkb.Layout('in(tamilnet_TAB)'), 'in(tamilnet_TSCII)': rxkb.Layout('in(tamilnet_TSCII)'), 'in(tam)': rxkb.Layout('in(tam)'), 'in(tam_tamilnumbers)': rxkb.Layout('in(tam_tamilnumbers)'), 'in(tel)': rxkb.Layout('in(tel)'), 'in(tel-kagapa)': rxkb.Layout('in(tel-kagapa)'), 'in(tel-sarala)': rxkb.Layout('in(tel-sarala)'), 'in(urd-phonetic)': rxkb.Layout('in(urd-phonetic)'), 'in(urd-phonetic3)': rxkb.Layout('in(urd-phonetic3)'), 'in(urd-winkeys)': rxkb.Layout('in(urd-winkeys)'), 'in(iipa)': rxkb.Layout('in(iipa)'), 'id': rxkb.Layout('id'), 'id(melayu-phonetic)': rxkb.Layout('id(melayu-phonetic)'), 'id(melayu-phoneticx)': rxkb.Layout('id(melayu-phoneticx)'), 'id(pegon-phonetic)': rxkb.Layout('id(pegon-phonetic)'), 'id(javanese)': rxkb.Layout('id(javanese)'), 'ie': rxkb.Layout('ie'), 'ie(UnicodeExpert)': rxkb.Layout('ie(UnicodeExpert)'), 'ie(CloGaelach)': rxkb.Layout('ie(CloGaelach)'), 'ie(ogam)': rxkb.Layout('ie(ogam)'), 'ie(ogam_is434)': rxkb.Layout('ie(ogam_is434)'), 'it': rxkb.Layout('it'), 'it(nodeadkeys)': rxkb.Layout('it(nodeadkeys)'), 'it(winkeys)': rxkb.Layout('it(winkeys)'), 'it(mac)': rxkb.Layout('it(mac)'), 'it(us)': rxkb.Layout('it(us)'), 'it(ibm)': rxkb.Layout('it(ibm)'), 'it(intl)': rxkb.Layout('it(intl)'), 'it(fur)': rxkb.Layout('it(fur)'), 'it(scn)': rxkb.Layout('it(scn)'), 'it(geo)': rxkb.Layout('it(geo)'), 'jp': rxkb.Layout('jp'), 'jp(kana)': rxkb.Layout('jp(kana)'), 'jp(kana86)': rxkb.Layout('jp(kana86)'), 'jp(OADG109A)': rxkb.Layout('jp(OADG109A)'), 'jp(mac)': rxkb.Layout('jp(mac)'), 'jp(dvorak)': rxkb.Layout('jp(dvorak)'), 'kz': rxkb.Layout('kz'), 'kz(kazrus)': rxkb.Layout('kz(kazrus)'), 'kz(ext)': rxkb.Layout('kz(ext)'), 'kz(latin)': rxkb.Layout('kz(latin)'), 'kz(ruskaz)': rxkb.Layout('kz(ruskaz)'), 'kh': rxkb.Layout('kh'), 'kr': rxkb.Layout('kr'), 'kr(kr104)': rxkb.Layout('kr(kr104)'), 'kg': rxkb.Layout('kg'), 'kg(phonetic)': rxkb.Layout('kg(phonetic)'), 'la': rxkb.Layout('la'), 'la(stea)': rxkb.Layout('la(stea)'), 'lv': rxkb.Layout('lv'), 'lv(apostrophe)': rxkb.Layout('lv(apostrophe)'), 'lv(tilde)': rxkb.Layout('lv(tilde)'), 'lv(fkey)': rxkb.Layout('lv(fkey)'), 'lv(modern)': rxkb.Layout('lv(modern)'), 'lv(modern-cyr)': rxkb.Layout('lv(modern-cyr)'), 'lv(ergonomic)': rxkb.Layout('lv(ergonomic)'), 'lv(adapted)': rxkb.Layout('lv(adapted)'), 'lt': rxkb.Layout('lt'), 'lt(std)': rxkb.Layout('lt(std)'), 'lt(us)': rxkb.Layout('lt(us)'), 'lt(ibm)': rxkb.Layout('lt(ibm)'), 'lt(lekp)': rxkb.Layout('lt(lekp)'), 'lt(lekpa)': rxkb.Layout('lt(lekpa)'), 'lt(ratise)': rxkb.Layout('lt(ratise)'), 'lt(sgs)': rxkb.Layout('lt(sgs)'), 'mk': rxkb.Layout('mk'), 'mk(nodeadkeys)': rxkb.Layout('mk(nodeadkeys)'), 'my': rxkb.Layout('my'), 'my(phonetic)': rxkb.Layout('my(phonetic)'), 'mt': rxkb.Layout('mt'), 'mt(us)': rxkb.Layout('mt(us)'), 'mt(alt-us)': rxkb.Layout('mt(alt-us)'), 'mt(alt-gb)': rxkb.Layout('mt(alt-gb)'), 'md': rxkb.Layout('md'), 'md(gag)': rxkb.Layout('md(gag)'), 'mn': rxkb.Layout('mn'), 'me': rxkb.Layout('me'), 'me(cyrillic)': rxkb.Layout('me(cyrillic)'), 'me(cyrillicyz)': rxkb.Layout('me(cyrillicyz)'), 'me(cyrillicalternatequotes)': rxkb.Layout('me(cyrillicalternatequotes)'), 'me(latinunicode)': rxkb.Layout('me(latinunicode)'), 'me(latinyz)': rxkb.Layout('me(latinyz)'), 'me(latinunicodeyz)': rxkb.Layout('me(latinunicodeyz)'), 'me(latinalternatequotes)': rxkb.Layout('me(latinalternatequotes)'), 'np': rxkb.Layout('np'), 'gn': rxkb.Layout('gn'), 'no': rxkb.Layout('no'), 'no(nodeadkeys)': rxkb.Layout('no(nodeadkeys)'), 'no(winkeys)': rxkb.Layout('no(winkeys)'), 'no(mac)': rxkb.Layout('no(mac)'), 'no(mac_nodeadkeys)': rxkb.Layout('no(mac_nodeadkeys)'), 'no(colemak)': rxkb.Layout('no(colemak)'), 'no(colemak_dh)': rxkb.Layout('no(colemak_dh)'), 'no(colemak_dh_wide)': rxkb.Layout('no(colemak_dh_wide)'), 'no(dvorak)': rxkb.Layout('no(dvorak)'), 'no(smi)': rxkb.Layout('no(smi)'), 'no(smi_nodeadkeys)': rxkb.Layout('no(smi_nodeadkeys)'), 'ir': rxkb.Layout('ir'), 'ir(pes_keypad)': rxkb.Layout('ir(pes_keypad)'), 'ir(winkeys)': rxkb.Layout('ir(winkeys)'), 'ir(azb)': rxkb.Layout('ir(azb)'), 'ir(ku)': rxkb.Layout('ir(ku)'), 'ir(ku_alt)': rxkb.Layout('ir(ku_alt)'), 'ir(ku_f)': rxkb.Layout('ir(ku_f)'), 'ir(ku_ara)': rxkb.Layout('ir(ku_ara)'), 'pl': rxkb.Layout('pl'), 'pl(legacy)': rxkb.Layout('pl(legacy)'), 'pl(qwertz)': rxkb.Layout('pl(qwertz)'), 'pl(dvorak)': rxkb.Layout('pl(dvorak)'), 'pl(dvorak_quotes)': rxkb.Layout('pl(dvorak_quotes)'), 'pl(dvorak_altquotes)': rxkb.Layout('pl(dvorak_altquotes)'), 'pl(dvp)': rxkb.Layout('pl(dvp)'), 'pl(csb)': rxkb.Layout('pl(csb)'), 'pl(szl)': rxkb.Layout('pl(szl)'), 'pl(ru_phonetic_dvorak)': rxkb.Layout('pl(ru_phonetic_dvorak)'), 'pt': rxkb.Layout('pt'), 'pt(nodeadkeys)': rxkb.Layout('pt(nodeadkeys)'), 'pt(mac)': rxkb.Layout('pt(mac)'), 'pt(mac_nodeadkeys)': rxkb.Layout('pt(mac_nodeadkeys)'), 'pt(nativo)': rxkb.Layout('pt(nativo)'), 'pt(nativo-us)': rxkb.Layout('pt(nativo-us)'), 'pt(nativo-epo)': rxkb.Layout('pt(nativo-epo)'), 'br': rxkb.Layout('br'), 'br(nodeadkeys)': rxkb.Layout('br(nodeadkeys)'), 'br(dvorak)': rxkb.Layout('br(dvorak)'), 'br(nativo)': rxkb.Layout('br(nativo)'), 'br(nativo-us)': rxkb.Layout('br(nativo-us)'), 'br(thinkpad)': rxkb.Layout('br(thinkpad)'), 'br(nativo-epo)': rxkb.Layout('br(nativo-epo)'), 'br(rus)': rxkb.Layout('br(rus)'), 'ro': rxkb.Layout('ro'), 'ro(std)': rxkb.Layout('ro(std)'), 'ro(winkeys)': rxkb.Layout('ro(winkeys)'), 'ru': rxkb.Layout('ru'), 'ru(phonetic)': rxkb.Layout('ru(phonetic)'), 'ru(phonetic_winkeys)': rxkb.Layout('ru(phonetic_winkeys)'), 'ru(phonetic_YAZHERTY)': rxkb.Layout('ru(phonetic_YAZHERTY)'), 'ru(phonetic_azerty)': rxkb.Layout('ru(phonetic_azerty)'), 'ru(phonetic_dvorak)': rxkb.Layout('ru(phonetic_dvorak)'), 'ru(typewriter)': rxkb.Layout('ru(typewriter)'), 'ru(ruchey_ru)': rxkb.Layout('ru(ruchey_ru)'), 'ru(ruchey_en)': rxkb.Layout('ru(ruchey_en)'), 'ru(legacy)': rxkb.Layout('ru(legacy)'), 'ru(typewriter-legacy)': rxkb.Layout('ru(typewriter-legacy)'), 'ru(dos)': rxkb.Layout('ru(dos)'), 'ru(mac)': rxkb.Layout('ru(mac)'), 'ru(ab)': rxkb.Layout('ru(ab)'), 'ru(bak)': rxkb.Layout('ru(bak)'), 'ru(cv)': rxkb.Layout('ru(cv)'), 'ru(cv_latin)': rxkb.Layout('ru(cv_latin)'), 'ru(xal)': rxkb.Layout('ru(xal)'), 'ru(kom)': rxkb.Layout('ru(kom)'), 'ru(chm)': rxkb.Layout('ru(chm)'), 'ru(os_legacy)': rxkb.Layout('ru(os_legacy)'), 'ru(os_winkeys)': rxkb.Layout('ru(os_winkeys)'), 'ru(srp)': rxkb.Layout('ru(srp)'), 'ru(tt)': rxkb.Layout('ru(tt)'), 'ru(udm)': rxkb.Layout('ru(udm)'), 'ru(sah)': rxkb.Layout('ru(sah)'), 'rs': rxkb.Layout('rs'), 'rs(alternatequotes)': rxkb.Layout('rs(alternatequotes)'), 'rs(yz)': rxkb.Layout('rs(yz)'), 'rs(latin)': rxkb.Layout('rs(latin)'), 'rs(latinalternatequotes)': rxkb.Layout('rs(latinalternatequotes)'), 'rs(latinunicode)': rxkb.Layout('rs(latinunicode)'), 'rs(latinyz)': rxkb.Layout('rs(latinyz)'), 'rs(latinunicodeyz)': rxkb.Layout('rs(latinunicodeyz)'), 'rs(rue)': rxkb.Layout('rs(rue)'), 'lk': rxkb.Layout('lk'), 'lk(us)': rxkb.Layout('lk(us)'), 'lk(tam_unicode)': rxkb.Layout('lk(tam_unicode)'), 'lk(tam_TAB)': rxkb.Layout('lk(tam_TAB)'), 'sk': rxkb.Layout('sk'), 'sk(bksl)': rxkb.Layout('sk(bksl)'), 'sk(qwerty)': rxkb.Layout('sk(qwerty)'), 'sk(qwerty_bksl)': rxkb.Layout('sk(qwerty_bksl)'), 'si': rxkb.Layout('si'), 'si(alternatequotes)': rxkb.Layout('si(alternatequotes)'), 'si(us)': rxkb.Layout('si(us)'), 'es': rxkb.Layout('es'), 'es(nodeadkeys)': rxkb.Layout('es(nodeadkeys)'), 'es(deadtilde)': rxkb.Layout('es(deadtilde)'), 'es(winkeys)': rxkb.Layout('es(winkeys)'), 'es(dvorak)': rxkb.Layout('es(dvorak)'), 'es(ast)': rxkb.Layout('es(ast)'), 'es(cat)': rxkb.Layout('es(cat)'), 'latam': rxkb.Layout('latam'), 'latam(nodeadkeys)': rxkb.Layout('latam(nodeadkeys)'), 'latam(deadtilde)': rxkb.Layout('latam(deadtilde)'), 'latam(dvorak)': rxkb.Layout('latam(dvorak)'), 'latam(colemak)': rxkb.Layout('latam(colemak)'), 'ke': rxkb.Layout('ke'), 'ke(kik)': rxkb.Layout('ke(kik)'), 'tz': rxkb.Layout('tz'), 'se': rxkb.Layout('se'), 'se(nodeadkeys)': rxkb.Layout('se(nodeadkeys)'), 'se(dvorak)': rxkb.Layout('se(dvorak)'), 'se(us_dvorak)': rxkb.Layout('se(us_dvorak)'), 'se(svdvorak)': rxkb.Layout('se(svdvorak)'), 'se(mac)': rxkb.Layout('se(mac)'), 'se(us)': rxkb.Layout('se(us)'), 'se(swl)': rxkb.Layout('se(swl)'), 'se(smi)': rxkb.Layout('se(smi)'), 'se(rus)': rxkb.Layout('se(rus)'), 'tw': rxkb.Layout('tw'), 'tw(indigenous)': rxkb.Layout('tw(indigenous)'), 'tw(saisiyat)': rxkb.Layout('tw(saisiyat)'), 'tj': rxkb.Layout('tj'), 'tj(legacy)': rxkb.Layout('tj(legacy)'), 'th': rxkb.Layout('th'), 'th(tis)': rxkb.Layout('th(tis)'), 'th(pat)': rxkb.Layout('th(pat)'), 'bw': rxkb.Layout('bw'), 'tm': rxkb.Layout('tm'), 'tm(alt)': rxkb.Layout('tm(alt)'), 'tr': rxkb.Layout('tr'), 'tr(f)': rxkb.Layout('tr(f)'), 'tr(e)': rxkb.Layout('tr(e)'), 'tr(alt)': rxkb.Layout('tr(alt)'), 'tr(intl)': rxkb.Layout('tr(intl)'), 'tr(ku)': rxkb.Layout('tr(ku)'), 'tr(ku_f)': rxkb.Layout('tr(ku_f)'), 'tr(ku_alt)': rxkb.Layout('tr(ku_alt)'), 'ua': rxkb.Layout('ua'), 'ua(phonetic)': rxkb.Layout('ua(phonetic)'), 'ua(typewriter)': rxkb.Layout('ua(typewriter)'), 'ua(winkeys)': rxkb.Layout('ua(winkeys)'), 'ua(macOS)': rxkb.Layout('ua(macOS)'), 'ua(legacy)': rxkb.Layout('ua(legacy)'), 'ua(homophonic)': rxkb.Layout('ua(homophonic)'), 'ua(crh)': rxkb.Layout('ua(crh)'), 'ua(crh_f)': rxkb.Layout('ua(crh_f)'), 'ua(crh_alt)': rxkb.Layout('ua(crh_alt)'), 'pk': rxkb.Layout('pk'), 'pk(urd-crulp)': rxkb.Layout('pk(urd-crulp)'), 'pk(urd-nla)': rxkb.Layout('pk(urd-nla)'), 'pk(ara)': rxkb.Layout('pk(ara)'), 'pk(snd)': rxkb.Layout('pk(snd)'), 'uz': rxkb.Layout('uz'), 'uz(latin)': rxkb.Layout('uz(latin)'), 'vn': rxkb.Layout('vn'), 'vn(us)': rxkb.Layout('vn(us)'), 'vn(fr)': rxkb.Layout('vn(fr)'), 'sn': rxkb.Layout('sn'), 'custom': rxkb.Layout('custom')}

These asserts are failing:

self.assertIn("nec_vndr/jp", ctx.layouts)
self.assertEqual(ctx.layouts["nec_vndr/jp"].iso3166_codes, {"JP"})

I'd appreciate if you could have a look to the failing tests and make a release.

Thank you very much in advance!

jexposit commented 8 months ago

I added a PR fixing it https://github.com/sde1000/python-xkbregistry/pull/2

sde1000 commented 8 months ago

That PR fails on my system (currently Ubuntu 22.04).

I think I'm going to have to include some fixed test data in the package, rather than rely on the layouts provided by the system; there's too much variation from system to system.

jexposit commented 8 months ago

Thanks for the quick answer @sde1000.

I'm running Fedora 39. In my first comment you can see the list of layouts available in my system. Could you share your ctx.layouts so I can include one that is present in both distros?

By the way, here is the request to include your package in Fedora, in case you want to follow it: https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=2261958

Thanks a lot for your work on the bindings!

sde1000 commented 8 months ago

I've just pushed a version of the tests that includes a copy of base.xml from my system. Can you see if the tests run OK on yours?

jexposit commented 8 months ago

It works! :partying_face: Thanks a lot for the quick fix. Let me know if you are going to push a new release to pip and I'll package that one for Fedora

sde1000 commented 8 months ago

I will make a release — probably not a version 1.0 yet since I don't know how many people have tested this. I'm just going to fix some warnings from the CI tasks first.

sde1000 commented 8 months ago

Ok, I've made release 0.2 and uploaded to pypi.

sde1000 commented 8 months ago

Argh, wait, it didn't include the test data in the package!

sde1000 commented 8 months ago

Ok, release 0.3 includes the test data. Sorry about that!

jexposit commented 8 months ago

Thanks a lot for the quick release.

Yes, I was about to comment that tests/rules was missing. No problem at all :)