diff options
| author | nadya02 <[email protected]> | 2025-05-14 11:39:15 +0300 |
|---|---|---|
| committer | nadya02 <[email protected]> | 2025-05-14 11:56:59 +0300 |
| commit | ea7a7ccfa5c9269402a811da1b53b7db258f8e45 (patch) | |
| tree | 968ed3eae53aeabed6ef5f95698daea5bca6693c /library/cpp/type_info | |
| parent | 1b81793578a93ce3aa797cc972d4c7b127dff7cb (diff) | |
YT-15805: Move timezone directory from yql/essentials/public/udf/tz to library/cpp/type_info/tz
commit_hash:c293432144308b647073111d1086349af6d52fed
Diffstat (limited to 'library/cpp/type_info')
| -rw-r--r-- | library/cpp/type_info/tz/gen/ya.make | 15 | ||||
| -rw-r--r-- | library/cpp/type_info/tz/tz.cpp | 19 | ||||
| -rw-r--r-- | library/cpp/type_info/tz/tz.gen | 600 | ||||
| -rw-r--r-- | library/cpp/type_info/tz/tz.h | 9 | ||||
| -rw-r--r-- | library/cpp/type_info/tz/tz_ut.cpp | 16 | ||||
| -rwxr-xr-x | library/cpp/type_info/tz/update.py | 59 | ||||
| -rw-r--r-- | library/cpp/type_info/tz/ut/ya.make | 10 | ||||
| -rw-r--r-- | library/cpp/type_info/tz/ya.make | 18 | ||||
| -rw-r--r-- | library/cpp/type_info/ya.make | 2 |
9 files changed, 748 insertions, 0 deletions
diff --git a/library/cpp/type_info/tz/gen/ya.make b/library/cpp/type_info/tz/gen/ya.make new file mode 100644 index 00000000000..8f78c5a1ea0 --- /dev/null +++ b/library/cpp/type_info/tz/gen/ya.make @@ -0,0 +1,15 @@ + +PY3_PROGRAM(tz_gen) + +SRCDIR(library/cpp/type_info/tz) + +PY_SRCS( + TOP_LEVEL + update.py +) + +PY_MAIN(update) + +END() + + diff --git a/library/cpp/type_info/tz/tz.cpp b/library/cpp/type_info/tz/tz.cpp new file mode 100644 index 00000000000..b2c3fc9d7f0 --- /dev/null +++ b/library/cpp/type_info/tz/tz.cpp @@ -0,0 +1,19 @@ +#include "tz.h" + +namespace NTi { + +namespace { + +static constexpr std::initializer_list<const std::string_view> TimezonesInit = { +#include "tz.gen" +}; + +static constexpr TArrayRef<const std::string_view> Timezones(TimezonesInit); + +} + +TArrayRef<const std::string_view> GetTimezones() { + return Timezones; +} + +} diff --git a/library/cpp/type_info/tz/tz.gen b/library/cpp/type_info/tz/tz.gen new file mode 100644 index 00000000000..e71c9cc81e7 --- /dev/null +++ b/library/cpp/type_info/tz/tz.gen @@ -0,0 +1,600 @@ +"GMT", +"Europe/Moscow", +"Africa/Abidjan", +"Africa/Accra", +"Africa/Addis_Ababa", +"Africa/Algiers", +"Africa/Asmara", +"Africa/Asmera", +"Africa/Bamako", +"Africa/Bangui", +"Africa/Banjul", +"Africa/Bissau", +"Africa/Blantyre", +"Africa/Brazzaville", +"Africa/Bujumbura", +"Africa/Cairo", +"Africa/Casablanca", +"Africa/Ceuta", +"Africa/Conakry", +"Africa/Dakar", +"Africa/Dar_es_Salaam", +"Africa/Djibouti", +"Africa/Douala", +"Africa/El_Aaiun", +"Africa/Freetown", +"Africa/Gaborone", +"Africa/Harare", +"Africa/Johannesburg", +"Africa/Juba", +"Africa/Kampala", +"Africa/Khartoum", +"Africa/Kigali", +"Africa/Kinshasa", +"Africa/Lagos", +"Africa/Libreville", +"Africa/Lome", +"Africa/Luanda", +"Africa/Lubumbashi", +"Africa/Lusaka", +"Africa/Malabo", +"Africa/Maputo", +"Africa/Maseru", +"Africa/Mbabane", +"Africa/Mogadishu", +"Africa/Monrovia", +"Africa/Nairobi", +"Africa/Ndjamena", +"Africa/Niamey", +"Africa/Nouakchott", +"Africa/Ouagadougou", +"Africa/Porto-Novo", +"Africa/Sao_Tome", +"Africa/Timbuktu", +"Africa/Tripoli", +"Africa/Tunis", +"Africa/Windhoek", +"America/Adak", +"America/Anchorage", +"America/Anguilla", +"America/Antigua", +"America/Araguaina", +"America/Argentina/Buenos_Aires", +"America/Argentina/Catamarca", +"America/Argentina/ComodRivadavia", +"America/Argentina/Cordoba", +"America/Argentina/Jujuy", +"America/Argentina/La_Rioja", +"America/Argentina/Mendoza", +"America/Argentina/Rio_Gallegos", +"America/Argentina/Salta", +"America/Argentina/San_Juan", +"America/Argentina/San_Luis", +"America/Argentina/Tucuman", +"America/Argentina/Ushuaia", +"America/Aruba", +"America/Asuncion", +"America/Atikokan", +"America/Atka", +"America/Bahia", +"America/Bahia_Banderas", +"America/Barbados", +"America/Belem", +"America/Belize", +"America/Blanc-Sablon", +"America/Boa_Vista", +"America/Bogota", +"America/Boise", +"America/Buenos_Aires", +"America/Cambridge_Bay", +"America/Campo_Grande", +"America/Cancun", +"America/Caracas", +"America/Catamarca", +"America/Cayenne", +"America/Cayman", +"America/Chicago", +"America/Chihuahua", +"America/Coral_Harbour", +"America/Cordoba", +"America/Costa_Rica", +"America/Creston", +"America/Cuiaba", +"America/Curacao", +"America/Danmarkshavn", +"America/Dawson", +"America/Dawson_Creek", +"America/Denver", +"America/Detroit", +"America/Dominica", +"America/Edmonton", +"America/Eirunepe", +"America/El_Salvador", +"America/Ensenada", +"America/Fort_Nelson", +"America/Fort_Wayne", +"America/Fortaleza", +"America/Glace_Bay", +"America/Godthab", +"America/Goose_Bay", +"America/Grand_Turk", +"America/Grenada", +"America/Guadeloupe", +"America/Guatemala", +"America/Guayaquil", +"America/Guyana", +"America/Halifax", +"America/Havana", +"America/Hermosillo", +"America/Indiana/Indianapolis", +"America/Indiana/Knox", +"America/Indiana/Marengo", +"America/Indiana/Petersburg", +"America/Indiana/Tell_City", +"America/Indiana/Vevay", +"America/Indiana/Vincennes", +"America/Indiana/Winamac", +"America/Indianapolis", +"America/Inuvik", +"America/Iqaluit", +"America/Jamaica", +"America/Jujuy", +"America/Juneau", +"America/Kentucky/Louisville", +"America/Kentucky/Monticello", +"America/Knox_IN", +"America/Kralendijk", +"America/La_Paz", +"America/Lima", +"America/Los_Angeles", +"America/Louisville", +"America/Lower_Princes", +"America/Maceio", +"America/Managua", +"America/Manaus", +"America/Marigot", +"America/Martinique", +"America/Matamoros", +"America/Mazatlan", +"America/Mendoza", +"America/Menominee", +"America/Merida", +"America/Metlakatla", +"America/Mexico_City", +"America/Miquelon", +"America/Moncton", +"America/Monterrey", +"America/Montevideo", +"America/Montreal", +"America/Montserrat", +"America/Nassau", +"America/New_York", +"America/Nipigon", +"America/Nome", +"America/Noronha", +"America/North_Dakota/Beulah", +"America/North_Dakota/Center", +"America/North_Dakota/New_Salem", +"America/Ojinaga", +"America/Panama", +"America/Pangnirtung", +"America/Paramaribo", +"America/Phoenix", +"America/Port-au-Prince", +"America/Port_of_Spain", +"America/Porto_Acre", +"America/Porto_Velho", +"America/Puerto_Rico", +"America/Punta_Arenas", +"America/Rainy_River", +"America/Rankin_Inlet", +"America/Recife", +"America/Regina", +"America/Resolute", +"America/Rio_Branco", +"America/Rosario", +"America/Santa_Isabel", +"America/Santarem", +"America/Santiago", +"America/Santo_Domingo", +"America/Sao_Paulo", +"America/Scoresbysund", +"America/Shiprock", +"America/Sitka", +"America/St_Barthelemy", +"America/St_Johns", +"America/St_Kitts", +"America/St_Lucia", +"America/St_Thomas", +"America/St_Vincent", +"America/Swift_Current", +"America/Tegucigalpa", +"America/Thule", +"America/Thunder_Bay", +"America/Tijuana", +"America/Toronto", +"America/Tortola", +"America/Vancouver", +"America/Virgin", +"America/Whitehorse", +"America/Winnipeg", +"America/Yakutat", +"America/Yellowknife", +"Antarctica/Casey", +"Antarctica/Davis", +"Antarctica/DumontDUrville", +"Antarctica/Macquarie", +"Antarctica/Mawson", +"Antarctica/McMurdo", +"Antarctica/Palmer", +"Antarctica/Rothera", +"Antarctica/South_Pole", +"Antarctica/Syowa", +"Antarctica/Troll", +"Antarctica/Vostok", +"Arctic/Longyearbyen", +"Asia/Aden", +"Asia/Almaty", +"Asia/Amman", +"Asia/Anadyr", +"Asia/Aqtau", +"Asia/Aqtobe", +"Asia/Ashgabat", +"Asia/Ashkhabad", +"Asia/Atyrau", +"Asia/Baghdad", +"Asia/Bahrain", +"Asia/Baku", +"Asia/Bangkok", +"Asia/Barnaul", +"Asia/Beirut", +"Asia/Bishkek", +"Asia/Brunei", +"Asia/Calcutta", +"Asia/Chita", +"Asia/Choibalsan", +"Asia/Chongqing", +"Asia/Chungking", +"Asia/Colombo", +"Asia/Dacca", +"Asia/Damascus", +"Asia/Dhaka", +"Asia/Dili", +"Asia/Dubai", +"Asia/Dushanbe", +"Asia/Famagusta", +"Asia/Gaza", +"Asia/Harbin", +"Asia/Hebron", +"Asia/Ho_Chi_Minh", +"Asia/Hong_Kong", +"Asia/Hovd", +"Asia/Irkutsk", +"Asia/Istanbul", +"Asia/Jakarta", +"Asia/Jayapura", +"Asia/Jerusalem", +"Asia/Kabul", +"Asia/Kamchatka", +"Asia/Karachi", +"Asia/Kashgar", +"Asia/Kathmandu", +"Asia/Katmandu", +"Asia/Khandyga", +"Asia/Kolkata", +"Asia/Krasnoyarsk", +"Asia/Kuala_Lumpur", +"Asia/Kuching", +"Asia/Kuwait", +"Asia/Macao", +"Asia/Macau", +"Asia/Magadan", +"Asia/Makassar", +"Asia/Manila", +"Asia/Muscat", +"Asia/Nicosia", +"Asia/Novokuznetsk", +"Asia/Novosibirsk", +"Asia/Omsk", +"Asia/Oral", +"Asia/Phnom_Penh", +"Asia/Pontianak", +"Asia/Pyongyang", +"Asia/Qatar", +"Asia/Qyzylorda", +"Asia/Rangoon", +"Asia/Riyadh", +"Asia/Saigon", +"Asia/Sakhalin", +"Asia/Samarkand", +"Asia/Seoul", +"Asia/Shanghai", +"Asia/Singapore", +"Asia/Srednekolymsk", +"Asia/Taipei", +"Asia/Tashkent", +"Asia/Tbilisi", +"Asia/Tehran", +"Asia/Tel_Aviv", +"Asia/Thimbu", +"Asia/Thimphu", +"Asia/Tokyo", +"Asia/Tomsk", +"Asia/Ujung_Pandang", +"Asia/Ulaanbaatar", +"Asia/Ulan_Bator", +"Asia/Urumqi", +"Asia/Ust-Nera", +"Asia/Vientiane", +"Asia/Vladivostok", +"Asia/Yakutsk", +"Asia/Yangon", +"Asia/Yekaterinburg", +"Asia/Yerevan", +"Atlantic/Azores", +"Atlantic/Bermuda", +"Atlantic/Canary", +"Atlantic/Cape_Verde", +"Atlantic/Faeroe", +"Atlantic/Faroe", +"Atlantic/Jan_Mayen", +"Atlantic/Madeira", +"Atlantic/Reykjavik", +"Atlantic/South_Georgia", +"Atlantic/St_Helena", +"Atlantic/Stanley", +"Australia/ACT", +"Australia/Adelaide", +"Australia/Brisbane", +"Australia/Broken_Hill", +"Australia/Canberra", +"Australia/Currie", +"Australia/Darwin", +"Australia/Eucla", +"Australia/Hobart", +"Australia/LHI", +"Australia/Lindeman", +"Australia/Lord_Howe", +"Australia/Melbourne", +"Australia/NSW", +"Australia/North", +"Australia/Perth", +"Australia/Queensland", +"Australia/South", +"Australia/Sydney", +"Australia/Tasmania", +"Australia/Victoria", +"Australia/West", +"Australia/Yancowinna", +"Brazil/Acre", +"Brazil/DeNoronha", +"Brazil/East", +"Brazil/West", +"CET", +"CST6CDT", +"Canada/Atlantic", +"Canada/Central", +"Canada/Eastern", +"Canada/Mountain", +"Canada/Newfoundland", +"Canada/Pacific", +"Canada/Saskatchewan", +"Canada/Yukon", +"Chile/Continental", +"Chile/EasterIsland", +"Cuba", +"EET", +"EST", +"EST5EDT", +"Egypt", +"Eire", +"Etc/GMT", +"Etc/GMT+0", +"Etc/GMT+1", +"Etc/GMT+10", +"Etc/GMT+11", +"Etc/GMT+12", +"Etc/GMT+2", +"Etc/GMT+3", +"Etc/GMT+4", +"Etc/GMT+5", +"Etc/GMT+6", +"Etc/GMT+7", +"Etc/GMT+8", +"Etc/GMT+9", +"Etc/GMT-0", +"Etc/GMT-1", +"Etc/GMT-10", +"Etc/GMT-11", +"Etc/GMT-12", +"Etc/GMT-13", +"Etc/GMT-14", +"Etc/GMT-2", +"Etc/GMT-3", +"Etc/GMT-4", +"Etc/GMT-5", +"Etc/GMT-6", +"Etc/GMT-7", +"Etc/GMT-8", +"Etc/GMT-9", +"Etc/GMT0", +"Etc/Greenwich", +"Etc/UCT", +"Etc/UTC", +"Etc/Universal", +"Etc/Zulu", +"Europe/Amsterdam", +"Europe/Andorra", +"Europe/Astrakhan", +"Europe/Athens", +"Europe/Belfast", +"Europe/Belgrade", +"Europe/Berlin", +"Europe/Bratislava", +"Europe/Brussels", +"Europe/Bucharest", +"Europe/Budapest", +"Europe/Busingen", +"Europe/Chisinau", +"Europe/Copenhagen", +"Europe/Dublin", +"Europe/Gibraltar", +"Europe/Guernsey", +"Europe/Helsinki", +"Europe/Isle_of_Man", +"Europe/Istanbul", +"Europe/Jersey", +"Europe/Kaliningrad", +"Europe/Kiev", +"Europe/Kirov", +"Europe/Lisbon", +"Europe/Ljubljana", +"Europe/London", +"Europe/Luxembourg", +"Europe/Madrid", +"Europe/Malta", +"Europe/Mariehamn", +"Europe/Minsk", +"Europe/Monaco", +"Europe/Nicosia", +"Europe/Oslo", +"Europe/Paris", +"Europe/Podgorica", +"Europe/Prague", +"Europe/Riga", +"Europe/Rome", +"Europe/Samara", +"Europe/San_Marino", +"Europe/Sarajevo", +"Europe/Saratov", +"Europe/Simferopol", +"Europe/Skopje", +"Europe/Sofia", +"Europe/Stockholm", +"Europe/Tallinn", +"Europe/Tirane", +"Europe/Tiraspol", +"Europe/Ulyanovsk", +"Europe/Uzhgorod", +"Europe/Vaduz", +"Europe/Vatican", +"Europe/Vienna", +"Europe/Vilnius", +"Europe/Volgograd", +"Europe/Warsaw", +"Europe/Zagreb", +"Europe/Zaporozhye", +"Europe/Zurich", +"Factory", +"GB", +"GB-Eire", +"GMT+0", +"GMT-0", +"GMT0", +"Greenwich", +"HST", +"Hongkong", +"Iceland", +"Indian/Antananarivo", +"Indian/Chagos", +"Indian/Christmas", +"Indian/Cocos", +"Indian/Comoro", +"Indian/Kerguelen", +"Indian/Mahe", +"Indian/Maldives", +"Indian/Mauritius", +"Indian/Mayotte", +"Indian/Reunion", +"Iran", +"Israel", +"Jamaica", +"Japan", +"Kwajalein", +"Libya", +"MET", +"MST", +"MST7MDT", +"Mexico/BajaNorte", +"Mexico/BajaSur", +"Mexico/General", +"NZ", +"NZ-CHAT", +"Navajo", +"PRC", +"PST8PDT", +"Pacific/Apia", +"Pacific/Auckland", +"Pacific/Bougainville", +"Pacific/Chatham", +"Pacific/Chuuk", +"Pacific/Easter", +"Pacific/Efate", +"Pacific/Enderbury", +"Pacific/Fakaofo", +"Pacific/Fiji", +"Pacific/Funafuti", +"Pacific/Galapagos", +"Pacific/Gambier", +"Pacific/Guadalcanal", +"Pacific/Guam", +"Pacific/Honolulu", +"Pacific/Johnston", +"Pacific/Kiritimati", +"Pacific/Kosrae", +"Pacific/Kwajalein", +"Pacific/Majuro", +"Pacific/Marquesas", +"Pacific/Midway", +"Pacific/Nauru", +"Pacific/Niue", +"Pacific/Norfolk", +"Pacific/Noumea", +"Pacific/Pago_Pago", +"Pacific/Palau", +"Pacific/Pitcairn", +"Pacific/Pohnpei", +"Pacific/Ponape", +"Pacific/Port_Moresby", +"Pacific/Rarotonga", +"Pacific/Saipan", +"Pacific/Samoa", +"Pacific/Tahiti", +"Pacific/Tarawa", +"Pacific/Tongatapu", +"Pacific/Truk", +"Pacific/Wake", +"Pacific/Wallis", +"Pacific/Yap", +"Poland", +"Portugal", +"ROC", +"ROK", +"Singapore", +"Turkey", +"UCT", +"US/Alaska", +"US/Aleutian", +"US/Arizona", +"US/Central", +"US/East-Indiana", +"US/Eastern", +"US/Hawaii", +"US/Indiana-Starke", +"US/Michigan", +"US/Mountain", +"US/Pacific", +"",//US/Pacific-New +"US/Samoa", +"UTC", +"Universal", +"W-SU", +"WET", +"Zulu", +"",//localtime +"posixrules", +"Asia/Qostanay", +"America/Nuuk", +"America/Ciudad_Juarez", +"Europe/Kyiv", +"Pacific/Kanton", diff --git a/library/cpp/type_info/tz/tz.h b/library/cpp/type_info/tz/tz.h new file mode 100644 index 00000000000..b683269af29 --- /dev/null +++ b/library/cpp/type_info/tz/tz.h @@ -0,0 +1,9 @@ +#pragma once +#include <util/generic/array_ref.h> +#include <string_view> + +namespace NTi { + +TArrayRef<const std::string_view> GetTimezones(); + +} diff --git a/library/cpp/type_info/tz/tz_ut.cpp b/library/cpp/type_info/tz/tz_ut.cpp new file mode 100644 index 00000000000..65e8340cdc5 --- /dev/null +++ b/library/cpp/type_info/tz/tz_ut.cpp @@ -0,0 +1,16 @@ +#include "tz.h" + +#include <library/cpp/testing/unittest/registar.h> + +using namespace NTi; + +Y_UNIT_TEST_SUITE(TTz) { + Y_UNIT_TEST(Count) { + UNIT_ASSERT_VALUES_EQUAL_C(GetTimezones().size(), 600, "Please run library/cpp/type_info/tz/gen"); + } + + Y_UNIT_TEST(Gmt) { + UNIT_ASSERT(GetTimezones().size() > 0); + UNIT_ASSERT_VALUES_EQUAL(GetTimezones()[0], "GMT"); + } +} diff --git a/library/cpp/type_info/tz/update.py b/library/cpp/type_info/tz/update.py new file mode 100755 index 00000000000..d1d0f71decf --- /dev/null +++ b/library/cpp/type_info/tz/update.py @@ -0,0 +1,59 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +import re + + +def main(): + REGEXP = """^("(.+)",|"",//(.+))$""" + OUTPUT = "../tz.gen" + INPUT = OUTPUT + CONTRIB_ZONES = "../../../../../contrib/libs/cctz/tzdata/ya.make.resources" + RES_PREFIX = "/cctz/tzdata/" + + print("process %s into %s" % (INPUT, OUTPUT)) + with open(INPUT, "r") as inp: + lines = inp.readlines() + + zones = [] + for line in lines: + m = re.match(REGEXP, line) + if not m: + raise ValueError("invalid line: %s", line) + zones.append(m.group(2) or m.group(3)) + + szones = set() + print("loaded %s zones" % len(zones)) + for zone in zones: + if zone in szones: + raise ValueError("duplicated zone: %s", zone) + szones.add(zone) + + scontrib = set() + with open(CONTRIB_ZONES, "r") as contrib: + for line in contrib.readlines(): + if RES_PREFIX not in line: + continue + zone = line[line.index(RES_PREFIX) + len(RES_PREFIX):].strip() + if zone in scontrib: + raise ValueError("duplicated zone: %s", zone) + scontrib.add(zone) + if zone in szones: + continue + szones.add(zone) + zones.append(zone) + + lines = [] + for zone in zones: + if zone in scontrib: + lines.append('"%s",\n' % zone) + else: + lines.append('"",//%s\n' % zone) + + with open(OUTPUT, "w") as outp: + outp.writelines(lines) + + print("saved %s zones" % len(zones)) + + +if __name__ == "__main__": + main() diff --git a/library/cpp/type_info/tz/ut/ya.make b/library/cpp/type_info/tz/ut/ya.make new file mode 100644 index 00000000000..03862801f02 --- /dev/null +++ b/library/cpp/type_info/tz/ut/ya.make @@ -0,0 +1,10 @@ +UNITTEST_FOR(library/cpp/type_info/tz) + +SRCS( + tz_ut.cpp +) + +PEERDIR( +) + +END() diff --git a/library/cpp/type_info/tz/ya.make b/library/cpp/type_info/tz/ya.make new file mode 100644 index 00000000000..6ea6b015dd5 --- /dev/null +++ b/library/cpp/type_info/tz/ya.make @@ -0,0 +1,18 @@ +LIBRARY() + +SRCS( + tz.cpp +) + +PEERDIR( +) + +END() + +RECURSE( + gen +) + +RECURSE_FOR_TESTS( + ut +) diff --git a/library/cpp/type_info/ya.make b/library/cpp/type_info/ya.make index 555f0d14337..2f2aabd705f 100644 --- a/library/cpp/type_info/ya.make +++ b/library/cpp/type_info/ya.make @@ -23,4 +23,6 @@ PEERDIR( END() +RECURSE(tz) + RECURSE_FOR_TESTS(ut) |
