From: Thomas Goirand <zigo@debian.org>
Date: Wed, 6 Mar 2024 12:50:18 +0000
Subject: Use data from unicode-data

Forwarded: no
Last-Update: 2025-11-26

Do not fetch from internet at build time.
---
 bin/update-tables.py                               | 14 +++----
 .../emoji-variation-sequences-12.0.0.txt           | 48 +++-------------------
 2 files changed, 13 insertions(+), 49 deletions(-)
 copy tests/emoji-variation-sequences.txt => data/emoji-variation-sequences-12.0.0.txt (94%)

diff --git a/bin/update-tables.py b/bin/update-tables.py
index 83b2310..234580c 100644
--- a/bin/update-tables.py
+++ b/bin/update-tables.py
@@ -31,6 +31,7 @@ except ImportError:
 # 3rd party
 import jinja2
 import requests
+import requests_file
 import urllib3.util
 import dateutil.parser
 
@@ -557,12 +558,11 @@ class UnicodeDataFile:
     TestEmojiVariationSequences, these files should be forcefully re-fetched CLI argument '--no-
     check-last-modified'.
     """
-    URL_DERIVED_AGE = 'https://www.unicode.org/Public/UCD/latest/ucd/DerivedAge.txt'
-    URL_EASTASIAN_WIDTH = 'https://www.unicode.org/Public/{version}/ucd/EastAsianWidth.txt'
-    URL_DERIVED_CATEGORY = 'https://www.unicode.org/Public/{version}/ucd/extracted/DerivedGeneralCategory.txt'
-    URL_EMOJI_VARIATION = 'https://unicode.org/Public/{version}/ucd/emoji/emoji-variation-sequences.txt'
-    URL_LEGACY_VARIATION = 'https://unicode.org/Public/emoji/{version}/emoji-variation-sequences.txt'
-    URL_EMOJI_ZWJ = 'https://unicode.org/Public/emoji/{version}/emoji-zwj-sequences.txt'
+    URL_DERIVED_AGE = 'file:///usr/share/unicode/DerivedAge.txt'
+    URL_EASTASIAN_WIDTH = 'file:///usr/share/unicode/EastAsianWidth.txt'
+    URL_DERIVED_CATEGORY = 'file:///usr/share/unicode/extracted/DerivedGeneralCategory.txt'
+    URL_EMOJI_VARIATION = 'file:///usr/share/unicode/emoji/emoji-variation-sequences.txt'
+    URL_EMOJI_ZWJ = 'file:///usr/share/unicode/emoji/emoji-zwj-sequences.txt'
 
     @classmethod
     def DerivedAge(cls) -> str:
@@ -592,7 +592,6 @@ class UnicodeDataFile:
     def LegacyEmojiVariationSequences(cls) -> str:
         version = "12.0"
         fname = os.path.join(PATH_DATA, f'emoji-variation-sequences-{version}.0.txt')
-        cls.do_retrieve(url=cls.URL_LEGACY_VARIATION.format(version=version), fname=fname)
         return fname
 
     @classmethod
@@ -645,6 +644,7 @@ class UnicodeDataFile:
         retries = urllib3.util.Retry(total=MAX_RETRIES,
                                      backoff_factor=BACKOFF_FACTOR,
                                      status_forcelist=[500, 502, 503, 504])
+        session.mount('file://', requests_file.FileAdapter())
         session.mount('https://', requests.adapters.HTTPAdapter(max_retries=retries))
         return session
 
diff --git a/tests/emoji-variation-sequences.txt b/data/emoji-variation-sequences-12.0.0.txt
similarity index 94%
copy from tests/emoji-variation-sequences.txt
copy to data/emoji-variation-sequences-12.0.0.txt
index d8a3c9f..fa0ece4 100644
--- a/tests/emoji-variation-sequences.txt
+++ b/data/emoji-variation-sequences-12.0.0.txt
@@ -1,13 +1,13 @@
 # emoji-variation-sequences.txt
-# Date: 2023-02-01, 02:22:54 GMT
-# © 2023 Unicode®, Inc.
+# Date: 2019-01-15, 12:10:05 GMT
+# © 2019 Unicode®, Inc.
 # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
-# For terms of use, see https://www.unicode.org/terms_of_use.html
+# For terms of use, see http://www.unicode.org/terms_of_use.html
 #
 # Emoji Variation Sequences for UTS #51
-# Used with Emoji Version 15.1 and subsequent minor revisions (if any)
+# Version: 12.0
 #
-# For documentation and usage, see https://www.unicode.org/reports/tr51
+# For documentation and usage, see http://www.unicode.org/reports/tr51
 #
 0023 FE0E  ; text style;  # (1.1) NUMBER SIGN
 0023 FE0F  ; emoji style; # (1.1) NUMBER SIGN
@@ -73,18 +73,12 @@
 23E9 FE0F  ; emoji style; # (6.0) BLACK RIGHT-POINTING DOUBLE TRIANGLE
 23EA FE0E  ; text style;  # (6.0) BLACK LEFT-POINTING DOUBLE TRIANGLE
 23EA FE0F  ; emoji style; # (6.0) BLACK LEFT-POINTING DOUBLE TRIANGLE
-23EB FE0E  ; text style;  # (6.0) BLACK UP-POINTING DOUBLE TRIANGLE
-23EB FE0F  ; emoji style; # (6.0) BLACK UP-POINTING DOUBLE TRIANGLE
-23EC FE0E  ; text style;  # (6.0) BLACK DOWN-POINTING DOUBLE TRIANGLE
-23EC FE0F  ; emoji style; # (6.0) BLACK DOWN-POINTING DOUBLE TRIANGLE
 23ED FE0E  ; text style;  # (6.0) BLACK RIGHT-POINTING DOUBLE TRIANGLE WITH VERTICAL BAR
 23ED FE0F  ; emoji style; # (6.0) BLACK RIGHT-POINTING DOUBLE TRIANGLE WITH VERTICAL BAR
 23EE FE0E  ; text style;  # (6.0) BLACK LEFT-POINTING DOUBLE TRIANGLE WITH VERTICAL BAR
 23EE FE0F  ; emoji style; # (6.0) BLACK LEFT-POINTING DOUBLE TRIANGLE WITH VERTICAL BAR
 23EF FE0E  ; text style;  # (6.0) BLACK RIGHT-POINTING TRIANGLE WITH DOUBLE VERTICAL BAR
 23EF FE0F  ; emoji style; # (6.0) BLACK RIGHT-POINTING TRIANGLE WITH DOUBLE VERTICAL BAR
-23F0 FE0E  ; text style;  # (6.0) ALARM CLOCK
-23F0 FE0F  ; emoji style; # (6.0) ALARM CLOCK
 23F1 FE0E  ; text style;  # (6.0) STOPWATCH
 23F1 FE0F  ; emoji style; # (6.0) STOPWATCH
 23F2 FE0E  ; text style;  # (6.0) TIMER CLOCK
@@ -225,8 +219,6 @@
 26A0 FE0F  ; emoji style; # (4.0) WARNING SIGN
 26A1 FE0E  ; text style;  # (4.0) HIGH VOLTAGE SIGN
 26A1 FE0F  ; emoji style; # (4.0) HIGH VOLTAGE SIGN
-26A7 FE0E  ; text style;  # (4.1) MALE WITH STROKE AND MALE AND FEMALE SIGN
-26A7 FE0F  ; emoji style; # (4.1) MALE WITH STROKE AND MALE AND FEMALE SIGN
 26AA FE0E  ; text style;  # (4.1) MEDIUM WHITE CIRCLE
 26AA FE0F  ; emoji style; # (4.1) MEDIUM WHITE CIRCLE
 26AB FE0E  ; text style;  # (4.1) MEDIUM BLACK CIRCLE
@@ -245,8 +237,6 @@
 26C5 FE0F  ; emoji style; # (5.2) SUN BEHIND CLOUD
 26C8 FE0E  ; text style;  # (5.2) THUNDER CLOUD AND RAIN
 26C8 FE0F  ; emoji style; # (5.2) THUNDER CLOUD AND RAIN
-26CE FE0E  ; text style;  # (6.0) OPHIUCHUS
-26CE FE0F  ; emoji style; # (6.0) OPHIUCHUS
 26CF FE0E  ; text style;  # (5.2) PICK
 26CF FE0F  ; emoji style; # (5.2) PICK
 26D1 FE0E  ; text style;  # (5.2) HELMET WITH WHITE CROSS
@@ -283,16 +273,10 @@
 26FD FE0F  ; emoji style; # (5.2) FUEL PUMP
 2702 FE0E  ; text style;  # (1.1) BLACK SCISSORS
 2702 FE0F  ; emoji style; # (1.1) BLACK SCISSORS
-2705 FE0E  ; text style;  # (6.0) WHITE HEAVY CHECK MARK
-2705 FE0F  ; emoji style; # (6.0) WHITE HEAVY CHECK MARK
 2708 FE0E  ; text style;  # (1.1) AIRPLANE
 2708 FE0F  ; emoji style; # (1.1) AIRPLANE
 2709 FE0E  ; text style;  # (1.1) ENVELOPE
 2709 FE0F  ; emoji style; # (1.1) ENVELOPE
-270A FE0E  ; text style;  # (6.0) RAISED FIST
-270A FE0F  ; emoji style; # (6.0) RAISED FIST
-270B FE0E  ; text style;  # (6.0) RAISED HAND
-270B FE0F  ; emoji style; # (6.0) RAISED HAND
 270C FE0E  ; text style;  # (1.1) VICTORY HAND
 270C FE0F  ; emoji style; # (1.1) VICTORY HAND
 270D FE0E  ; text style;  # (1.1) WRITING HAND
@@ -309,8 +293,6 @@
 271D FE0F  ; emoji style; # (1.1) LATIN CROSS
 2721 FE0E  ; text style;  # (1.1) STAR OF DAVID
 2721 FE0F  ; emoji style; # (1.1) STAR OF DAVID
-2728 FE0E  ; text style;  # (6.0) SPARKLES
-2728 FE0F  ; emoji style; # (6.0) SPARKLES
 2733 FE0E  ; text style;  # (1.1) EIGHT SPOKED ASTERISK
 2733 FE0F  ; emoji style; # (1.1) EIGHT SPOKED ASTERISK
 2734 FE0E  ; text style;  # (1.1) EIGHT POINTED BLACK STAR
@@ -319,34 +301,16 @@
 2744 FE0F  ; emoji style; # (1.1) SNOWFLAKE
 2747 FE0E  ; text style;  # (1.1) SPARKLE
 2747 FE0F  ; emoji style; # (1.1) SPARKLE
-274C FE0E  ; text style;  # (6.0) CROSS MARK
-274C FE0F  ; emoji style; # (6.0) CROSS MARK
-274E FE0E  ; text style;  # (6.0) NEGATIVE SQUARED CROSS MARK
-274E FE0F  ; emoji style; # (6.0) NEGATIVE SQUARED CROSS MARK
 2753 FE0E  ; text style;  # (6.0) BLACK QUESTION MARK ORNAMENT
 2753 FE0F  ; emoji style; # (6.0) BLACK QUESTION MARK ORNAMENT
-2754 FE0E  ; text style;  # (6.0) WHITE QUESTION MARK ORNAMENT
-2754 FE0F  ; emoji style; # (6.0) WHITE QUESTION MARK ORNAMENT
-2755 FE0E  ; text style;  # (6.0) WHITE EXCLAMATION MARK ORNAMENT
-2755 FE0F  ; emoji style; # (6.0) WHITE EXCLAMATION MARK ORNAMENT
 2757 FE0E  ; text style;  # (5.2) HEAVY EXCLAMATION MARK SYMBOL
 2757 FE0F  ; emoji style; # (5.2) HEAVY EXCLAMATION MARK SYMBOL
 2763 FE0E  ; text style;  # (1.1) HEAVY HEART EXCLAMATION MARK ORNAMENT
 2763 FE0F  ; emoji style; # (1.1) HEAVY HEART EXCLAMATION MARK ORNAMENT
 2764 FE0E  ; text style;  # (1.1) HEAVY BLACK HEART
 2764 FE0F  ; emoji style; # (1.1) HEAVY BLACK HEART
-2795 FE0E  ; text style;  # (6.0) HEAVY PLUS SIGN
-2795 FE0F  ; emoji style; # (6.0) HEAVY PLUS SIGN
-2796 FE0E  ; text style;  # (6.0) HEAVY MINUS SIGN
-2796 FE0F  ; emoji style; # (6.0) HEAVY MINUS SIGN
-2797 FE0E  ; text style;  # (6.0) HEAVY DIVISION SIGN
-2797 FE0F  ; emoji style; # (6.0) HEAVY DIVISION SIGN
 27A1 FE0E  ; text style;  # (1.1) BLACK RIGHTWARDS ARROW
 27A1 FE0F  ; emoji style; # (1.1) BLACK RIGHTWARDS ARROW
-27B0 FE0E  ; text style;  # (6.0) CURLY LOOP
-27B0 FE0F  ; emoji style; # (6.0) CURLY LOOP
-27BF FE0E  ; text style;  # (6.0) DOUBLE CURLY LOOP
-27BF FE0F  ; emoji style; # (6.0) DOUBLE CURLY LOOP
 2934 FE0E  ; text style;  # (3.2) ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS
 2934 FE0F  ; emoji style; # (3.2) ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS
 2935 FE0E  ; text style;  # (3.2) ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS
@@ -752,6 +716,6 @@
 1F6F3 FE0E ; text style;  # (7.0) PASSENGER SHIP
 1F6F3 FE0F ; emoji style; # (7.0) PASSENGER SHIP
 
-#Total sequences: 371
+#Total sequences: 353
 
 #EOF
