From 97753fe3b03f2fb920020e733aa43a6d108bbfd1 Mon Sep 17 00:00:00 2001 From: Anders Kaseorg Date: Wed, 17 Jul 2024 18:13:54 -0700 Subject: [PATCH] emoji_names: Rebuild with CLDR 45, emoji-data 15.1. Signed-off-by: Anders Kaseorg --- tools/setup/emoji/emoji_names.py | 83 +++++++++++++++++-- tools/setup/emoji/generate_emoji_names | 4 +- version.py | 2 +- web/tests/emoji_picker.test.js | 12 +-- .../tests/fixtures/markdown_test_cases.json | 10 +-- 5 files changed, 89 insertions(+), 22 deletions(-) diff --git a/tools/setup/emoji/emoji_names.py b/tools/setup/emoji/emoji_names.py index 59cec97e1b..5ded872da0 100644 --- a/tools/setup/emoji/emoji_names.py +++ b/tools/setup/emoji/emoji_names.py @@ -385,6 +385,7 @@ EMOJI_NAME_MAPS: dict[str, dict[str, Any]] = { "1f341": {"canonical_name": "maple_leaf", "aliases": []}, "1f342": {"canonical_name": "fallen_leaf", "aliases": []}, "1f343": {"canonical_name": "leaves", "aliases": ["wind", "fall"]}, + "1f344-200d-1f7eb": {"canonical_name": "brown_mushroom", "aliases": ["fungus", "nature"]}, "1f344": {"canonical_name": "mushroom", "aliases": []}, "1f345": {"canonical_name": "tomato", "aliases": []}, "1f346": {"canonical_name": "eggplant", "aliases": []}, @@ -392,6 +393,7 @@ EMOJI_NAME_MAPS: dict[str, dict[str, Any]] = { "1f348": {"canonical_name": "melon", "aliases": []}, "1f349": {"canonical_name": "watermelon", "aliases": []}, "1f34a": {"canonical_name": "orange", "aliases": ["tangerine", "mandarin"]}, + "1f34b-200d-1f7e9": {"canonical_name": "lime", "aliases": ["citrus"]}, "1f34b": {"canonical_name": "lemon", "aliases": []}, "1f34c": {"canonical_name": "banana", "aliases": []}, "1f34d": {"canonical_name": "pineapple", "aliases": []}, @@ -511,7 +513,13 @@ EMOJI_NAME_MAPS: dict[str, dict[str, Any]] = { "1f3c1": {"canonical_name": "checkered_flag", "aliases": ["race", "go", "start"]}, "1f3c2": {"canonical_name": "snowboarder", "aliases": []}, "1f3c3-200d-2640": {"canonical_name": "woman_running", "aliases": []}, + "1f3c3-200d-2640-200d-27a1": {"canonical_name": "woman_running_facing_right", "aliases": []}, "1f3c3-200d-2642": {"canonical_name": "man_running", "aliases": []}, + "1f3c3-200d-2642-200d-27a1": {"canonical_name": "man_running_facing_right", "aliases": []}, + "1f3c3-200d-27a1": { + "canonical_name": "person_running_facing_right", + "aliases": ["person_running"], + }, "1f3c3": {"canonical_name": "running", "aliases": ["runner"]}, "1f3c4-200d-2640": {"canonical_name": "woman_surfing", "aliases": []}, "1f3c4-200d-2642": {"canonical_name": "man_surfing", "aliases": []}, @@ -619,6 +627,10 @@ EMOJI_NAME_MAPS: dict[str, dict[str, Any]] = { "1f423": {"canonical_name": "hatching", "aliases": ["hatching_chick"]}, "1f424": {"canonical_name": "chick", "aliases": ["baby_chick"]}, "1f425": {"canonical_name": "new_baby", "aliases": []}, + "1f426-200d-1f525": { + "canonical_name": "phoenix", + "aliases": ["firebird", "rebirth", "reincarnation"], + }, "1f426-200d-2b1b": {"canonical_name": "black_bird", "aliases": ["crow", "raven", "rook"]}, "1f426": {"canonical_name": "bird", "aliases": []}, "1f427": {"canonical_name": "penguin", "aliases": []}, @@ -738,12 +750,24 @@ EMOJI_NAME_MAPS: dict[str, dict[str, Any]] = { "1f468-200d-1f52c": {"canonical_name": "man_scientist", "aliases": []}, "1f468-200d-1f680": {"canonical_name": "man_astronaut", "aliases": []}, "1f468-200d-1f692": {"canonical_name": "man_firefighter", "aliases": []}, + "1f468-200d-1f9af-200d-27a1": { + "canonical_name": "man_with_white_cane_facing_right", + "aliases": [], + }, "1f468-200d-1f9af": {"canonical_name": "man_with_white_cane", "aliases": []}, "1f468-200d-1f9b0": {"canonical_name": "man_red_hair", "aliases": []}, "1f468-200d-1f9b1": {"canonical_name": "man_curly_hair", "aliases": []}, "1f468-200d-1f9b2": {"canonical_name": "man_bald", "aliases": []}, "1f468-200d-1f9b3": {"canonical_name": "man_white_hair", "aliases": []}, + "1f468-200d-1f9bc-200d-27a1": { + "canonical_name": "man_in_motorized_wheelchair_facing_right", + "aliases": [], + }, "1f468-200d-1f9bc": {"canonical_name": "man_in_motorized_wheelchair", "aliases": []}, + "1f468-200d-1f9bd-200d-27a1": { + "canonical_name": "man_in_manual_wheelchair_facing_right", + "aliases": [], + }, "1f468-200d-1f9bd": {"canonical_name": "man_in_manual_wheelchair", "aliases": []}, "1f468-200d-2695": {"canonical_name": "man_health_worker", "aliases": []}, "1f468-200d-2696": {"canonical_name": "man_judge", "aliases": []}, @@ -784,12 +808,24 @@ EMOJI_NAME_MAPS: dict[str, dict[str, Any]] = { "1f469-200d-1f52c": {"canonical_name": "woman_scientist", "aliases": []}, "1f469-200d-1f680": {"canonical_name": "woman_astronaut", "aliases": []}, "1f469-200d-1f692": {"canonical_name": "woman_firefighter", "aliases": []}, + "1f469-200d-1f9af-200d-27a1": { + "canonical_name": "woman_with_white_cane_facing_right", + "aliases": [], + }, "1f469-200d-1f9af": {"canonical_name": "woman_with_white_cane", "aliases": []}, "1f469-200d-1f9b0": {"canonical_name": "woman_red_hair", "aliases": []}, "1f469-200d-1f9b1": {"canonical_name": "woman_curly_hair", "aliases": []}, "1f469-200d-1f9b2": {"canonical_name": "woman_bald", "aliases": []}, "1f469-200d-1f9b3": {"canonical_name": "woman_white_hair", "aliases": []}, + "1f469-200d-1f9bc-200d-27a1": { + "canonical_name": "woman_in_motorized_wheelchair_facing_right", + "aliases": [], + }, "1f469-200d-1f9bc": {"canonical_name": "woman_in_motorized_wheelchair", "aliases": []}, + "1f469-200d-1f9bd-200d-27a1": { + "canonical_name": "woman_in_manual_wheelchair_facing_right", + "aliases": [], + }, "1f469-200d-1f9bd": {"canonical_name": "woman_in_manual_wheelchair", "aliases": []}, "1f469-200d-2695": {"canonical_name": "woman_health_worker", "aliases": []}, "1f469-200d-2696": {"canonical_name": "woman_judge", "aliases": []}, @@ -1182,6 +1218,8 @@ EMOJI_NAME_MAPS: dict[str, dict[str, Any]] = { "1f63f": {"canonical_name": "crying_cat", "aliases": []}, "1f640": {"canonical_name": "scream_cat", "aliases": ["weary_cat"]}, "1f641": {"canonical_name": "frown", "aliases": ["slight_frown"]}, + "1f642-200d-2194": {"canonical_name": "head_shaking_horizontally", "aliases": ["no"]}, + "1f642-200d-2195": {"canonical_name": "head_shaking_vertically", "aliases": ["nod"]}, "1f642": {"canonical_name": "smile", "aliases": []}, "1f643": {"canonical_name": "upside_down", "aliases": ["oops"]}, "1f644": {"canonical_name": "rolling_eyes", "aliases": []}, @@ -1275,7 +1313,13 @@ EMOJI_NAME_MAPS: dict[str, dict[str, Any]] = { "1f6b5-200d-2642": {"canonical_name": "man_mountain_biking", "aliases": []}, "1f6b5": {"canonical_name": "mountain_biker", "aliases": []}, "1f6b6-200d-2640": {"canonical_name": "woman_walking", "aliases": []}, + "1f6b6-200d-2640-200d-27a1": {"canonical_name": "woman_walking_facing_right", "aliases": []}, "1f6b6-200d-2642": {"canonical_name": "man_walking", "aliases": []}, + "1f6b6-200d-2642-200d-27a1": {"canonical_name": "man_walking_facing_right", "aliases": []}, + "1f6b6-200d-27a1": { + "canonical_name": "person_walking_facing_right", + "aliases": ["person_walking"], + }, "1f6b6": {"canonical_name": "walking", "aliases": ["pedestrian"]}, "1f6b7": {"canonical_name": "no_pedestrians", "aliases": []}, "1f6b8": { @@ -1478,7 +1522,7 @@ EMOJI_NAME_MAPS: dict[str, dict[str, Any]] = { "canonical_name": "leafy_green", "aliases": ["bok_choy", "cabbage", "kale", "lettuce"], }, - "1f96d": {"canonical_name": "mango", "aliases": ["fruit"]}, + "1f96d": {"canonical_name": "mango", "aliases": []}, "1f96e": { "canonical_name": "moon_cake", "aliases": ["autumn", "festival", "yuèbǐng", "yuebing"], @@ -1594,13 +1638,16 @@ EMOJI_NAME_MAPS: dict[str, dict[str, Any]] = { "1f9c9": {"canonical_name": "mate", "aliases": []}, "1f9ca": {"canonical_name": "ice", "aliases": ["ice_cube", "iceberg"]}, "1f9cb": {"canonical_name": "bubble_tea", "aliases": []}, - "1f9cc": {"canonical_name": "troll", "aliases": ["fairy_tale", "fantasy", "monster"]}, + "1f9cc": {"canonical_name": "troll", "aliases": ["fairy_tale", "monster"]}, "1f9cd-200d-2640": {"canonical_name": "woman_standing", "aliases": []}, "1f9cd-200d-2642": {"canonical_name": "man_standing", "aliases": []}, "1f9cd": {"canonical_name": "person_standing", "aliases": ["stand"]}, "1f9ce-200d-2640": {"canonical_name": "woman_kneeling", "aliases": []}, + "1f9ce-200d-2640-200d-27a1": {"canonical_name": "woman_kneeling_facing_right", "aliases": []}, "1f9ce-200d-2642": {"canonical_name": "man_kneeling", "aliases": []}, - "1f9ce": {"canonical_name": "person_kneeling", "aliases": ["kneel"]}, + "1f9ce-200d-2642-200d-27a1": {"canonical_name": "man_kneeling_facing_right", "aliases": []}, + "1f9ce-200d-27a1": {"canonical_name": "person_kneeling_facing_right", "aliases": []}, + "1f9ce": {"canonical_name": "person_kneeling", "aliases": []}, "1f9cf-200d-2640": {"canonical_name": "deaf_woman", "aliases": []}, "1f9cf-200d-2642": {"canonical_name": "deaf_man", "aliases": []}, "1f9cf": {"canonical_name": "deaf_person", "aliases": ["hear"]}, @@ -1624,13 +1671,32 @@ EMOJI_NAME_MAPS: dict[str, dict[str, Any]] = { "canonical_name": "people_holding_hands", "aliases": ["hold", "holding_hands"], }, + "1f9d1-200d-1f9af-200d-27a1": { + "canonical_name": "person_with_white_cane_facing_right", + "aliases": [], + }, "1f9d1-200d-1f9af": {"canonical_name": "person_with_white_cane", "aliases": []}, "1f9d1-200d-1f9b0": {"canonical_name": "person_red_hair", "aliases": []}, "1f9d1-200d-1f9b1": {"canonical_name": "person_curly_hair", "aliases": []}, "1f9d1-200d-1f9b2": {"canonical_name": "person_bald", "aliases": []}, "1f9d1-200d-1f9b3": {"canonical_name": "person_white_hair", "aliases": []}, + "1f9d1-200d-1f9bc-200d-27a1": { + "canonical_name": "person_in_motorized_wheelchair_facing_right", + "aliases": [], + }, "1f9d1-200d-1f9bc": {"canonical_name": "person_in_motorized_wheelchair", "aliases": []}, + "1f9d1-200d-1f9bd-200d-27a1": { + "canonical_name": "person_in_manual_wheelchair_facing_right", + "aliases": [], + }, "1f9d1-200d-1f9bd": {"canonical_name": "person_in_manual_wheelchair", "aliases": []}, + "1f9d1-200d-1f9d1-200d-1f9d2": {"canonical_name": "family_adult_adult_child", "aliases": []}, + "1f9d1-200d-1f9d1-200d-1f9d2-200d-1f9d2": { + "canonical_name": "family_adult_adult_child_child", + "aliases": [], + }, + "1f9d1-200d-1f9d2-200d-1f9d2": {"canonical_name": "family_adult_child_child", "aliases": []}, + "1f9d1-200d-1f9d2": {"canonical_name": "family_adult_child", "aliases": []}, "1f9d1-200d-2695": {"canonical_name": "health_worker", "aliases": []}, "1f9d1-200d-2696": {"canonical_name": "judge", "aliases": []}, "1f9d1-200d-2708": {"canonical_name": "pilot", "aliases": []}, @@ -1747,10 +1813,7 @@ EMOJI_NAME_MAPS: dict[str, dict[str, Any]] = { "1fa84": {"canonical_name": "magic_wand", "aliases": ["magic"]}, "1fa85": {"canonical_name": "piñata", "aliases": ["pinata"]}, "1fa86": {"canonical_name": "nesting_dolls", "aliases": ["doll", "russia"]}, - "1fa87": { - "canonical_name": "maracas", - "aliases": ["instrument", "percussion", "rattle", "shake"], - }, + "1fa87": {"canonical_name": "maracas", "aliases": ["instrument", "percussion", "rattle"]}, "1fa88": {"canonical_name": "flute", "aliases": ["fife", "pipe", "recorder", "woodwind"]}, "1fa90": {"canonical_name": "ringed_planet", "aliases": ["saturn", "saturnine"]}, "1fa91": {"canonical_name": "chair", "aliases": ["sit"]}, @@ -1862,7 +1925,7 @@ EMOJI_NAME_MAPS: dict[str, dict[str, Any]] = { "1fada": {"canonical_name": "ginger_root", "aliases": ["root", "spice"]}, "1fadb": {"canonical_name": "pea_pod", "aliases": ["edamame", "pea", "pod"]}, "1fae0": {"canonical_name": "melting_face", "aliases": ["dissolve", "liquid", "melt"]}, - "1fae1": {"canonical_name": "saluting_face", "aliases": ["salute", "troops", "yes"]}, + "1fae1": {"canonical_name": "saluting_face", "aliases": ["salute", "troops"]}, "1fae2": { "canonical_name": "face_with_open_eyes_and_hand_over_mouth", "aliases": ["amazement", "awe", "embarrass"], @@ -2010,6 +2073,10 @@ EMOJI_NAME_MAPS: dict[str, dict[str, Any]] = { "canonical_name": "helmet", "aliases": ["hard_hat", "rescue_worker", "safety_first", "invincible"], }, + "26d3-200d-1f4a5": { + "canonical_name": "broken_chain", + "aliases": ["break", "breaking", "chain", "cuffs", "freedom"], + }, "26d3": {"canonical_name": "chains", "aliases": []}, "26d4": {"canonical_name": "no_entry", "aliases": ["wrong_way"]}, "26e9": {"canonical_name": "shinto_shrine", "aliases": []}, diff --git a/tools/setup/emoji/generate_emoji_names b/tools/setup/emoji/generate_emoji_names index 631841f4b4..5c9bff9601 100755 --- a/tools/setup/emoji/generate_emoji_names +++ b/tools/setup/emoji/generate_emoji_names @@ -205,9 +205,9 @@ def main() -> None: # STEP 5: Write final dictionary to `emoji_names.py`. with open(OUT_EMOJI_FILE, "w") as f: f.write( - "from typing import Any, Dict\n\n" + "from typing import Any\n\n" "# Generated with `generate_emoji_names`.\n\n" - "EMOJI_NAME_MAPS: Dict[str, Dict[str, Any]] = {\n" + "EMOJI_NAME_MAPS: dict[str, dict[str, Any]] = {\n" ) for key, emoji_names in all_emojis.items(): f.write(f" {key!r}: {emoji_names!r},\n") diff --git a/version.py b/version.py index 53934fd86d..7571dec57d 100644 --- a/version.py +++ b/version.py @@ -50,4 +50,4 @@ API_FEATURE_LEVEL = 274 # Last bumped for `delete_message` event. # historical commits sharing the same major version, in which case a # minor version bump suffices. -PROVISION_VERSION = (286, 1) # bumped 2024-07-16 for upgrading Node.js +PROVISION_VERSION = (287, 0) # bumped 2024-07-17 to rebuild emoji_names diff --git a/web/tests/emoji_picker.test.js b/web/tests/emoji_picker.test.js index 448c2f42cd..e39f93b7da 100644 --- a/web/tests/emoji_picker.test.js +++ b/web/tests/emoji_picker.test.js @@ -23,7 +23,7 @@ run_test("initialize", () => { const complete_emoji_catalog = _.sortBy(emoji_picker.complete_emoji_catalog, "name"); assert.equal(complete_emoji_catalog.length, 11); - assert.equal(emoji.emojis_by_name.size, 1848); + assert.equal(emoji.emojis_by_name.size, 1876); let total_emoji_in_categories = 0; @@ -46,14 +46,14 @@ run_test("initialize", () => { const zulip_emoji_count = 1; assert_emoji_category(complete_emoji_catalog.pop(), "fa-car", 195); assert_emoji_category(complete_emoji_catalog.pop(), "fa-hashtag", 223); - assert_emoji_category(complete_emoji_catalog.pop(), "fa-smile-o", 166); + assert_emoji_category(complete_emoji_catalog.pop(), "fa-smile-o", 168); assert_emoji_category(complete_emoji_catalog.pop(), "fa-star-o", popular_emoji_count); - assert_emoji_category(complete_emoji_catalog.pop(), "fa-thumbs-o-up", 363); - assert_emoji_category(complete_emoji_catalog.pop(), "fa-lightbulb-o", 261); - assert_emoji_category(complete_emoji_catalog.pop(), "fa-cutlery", 133); + assert_emoji_category(complete_emoji_catalog.pop(), "fa-thumbs-o-up", 385); + assert_emoji_category(complete_emoji_catalog.pop(), "fa-lightbulb-o", 262); + assert_emoji_category(complete_emoji_catalog.pop(), "fa-cutlery", 135); assert_emoji_category(complete_emoji_catalog.pop(), "fa-flag", 269); assert_emoji_category(complete_emoji_catalog.pop(), "fa-cog", 1); - assert_emoji_category(complete_emoji_catalog.pop(), "fa-leaf", 152); + assert_emoji_category(complete_emoji_catalog.pop(), "fa-leaf", 153); assert_emoji_category(complete_emoji_catalog.pop(), "fa-soccer-ball-o", 85); // The popular emoji appear twice in the picker, and the zulip emoji is special diff --git a/zerver/tests/fixtures/markdown_test_cases.json b/zerver/tests/fixtures/markdown_test_cases.json index d5807dae8a..f418b2f1e8 100644 --- a/zerver/tests/fixtures/markdown_test_cases.json +++ b/zerver/tests/fixtures/markdown_test_cases.json @@ -612,14 +612,14 @@ "expected_output": "

:eye_in_speech_bubble: :hash:

" }, { - "name": "unrecognized_emoji_sequence_one", - "input": "pheonix bird from 15.1: πŸ¦β€πŸ”₯", - "expected_output": "

pheonix bird from 15.1: πŸ¦β€πŸ”₯

" + "name": "emoji_sequence_three", + "input": "phoenix bird from 15.1: πŸ¦β€πŸ”₯", + "expected_output": "

phoenix bird from 15.1: :phoenix:

" }, { - "name": "unrecognized_emoji_sequence_two", + "name": "emoji_sequence_four", "input": "lime from 15.1: πŸ‹β€πŸŸ©", - "expected_output": "

lime from 15.1: πŸ‹β€πŸŸ©

" + "expected_output": "

lime from 15.1: :lime:

" }, { "name": "unrecognized_emoji_sequence_three",