this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

harmonize code generators, fix warning

alice b50e0e40 2a34c07d

+67 -57
+3 -3
generate_airport_tz_list.py
··· 199 199 3) Fallback for missing offsets (min 1, max max_bucket) using classification + traffic. 200 200 4) Distribute codes evenly across DST buckets, cap each to max_bucket. 201 201 """ 202 - year = datetime.utcnow().year 202 + year = datetime.now(timezone.utc).year 203 203 airport_db = airportsdata.load("IATA") 204 204 # Ensure unique HTML airport entries by IATA code 205 205 seen_iatas: set[str] = set() ··· 437 437 parser.add_argument( 438 438 "--max-bucket", 439 439 type=int, 440 - default=3, 441 - help="Maximum number of airport codes to include per DST bucket (default: 3)", 440 + default=10, 441 + help="Maximum number of airport codes to include per DST bucket (default: 10)", 442 442 ) 443 443 args = parser.parse_args(argv) 444 444
+12 -3
generate_tz_list.py
··· 1 1 # Requires Python 3.9+ for zoneinfo 2 2 import zoneinfo 3 3 from datetime import datetime, timedelta, timezone 4 + from functools import lru_cache 4 5 # No unused imports found (time is used for .timestamp()) 5 6 6 7 # Helper to get offset and DST component safely ··· 24 25 return None 25 26 26 27 # Function to find DST transitions within a year 28 + @lru_cache(maxsize=None) 27 29 def find_dst_transitions_accurate(tz_name: str, year: int) -> tuple[int, int, int, int]: 28 30 """ Finds precise DST transition UTC timestamps for a given year. 29 31 Returns (std_offset_sec, dst_offset_sec, last_start_utc_ts, last_end_utc_ts) ··· 171 173 if city_name not in processed_zones[key_tuple]["names"]: 172 174 processed_zones[key_tuple]["names"].append(city_name) 173 175 174 - # Convert dict values to a list and sort primarily by standard offset, then DST offset 175 - # Sort key uses the seconds offset stored in the dictionary value 176 - tz_data_list = sorted(processed_zones.values(), key=lambda x: (x["std_offset_s"], x["dst_offset_s"])) 176 + # Convert dict values to a list and sort by std offset, then DST offset, then by DST start/end to keep consistent ordering 177 + tz_data_list = sorted( 178 + processed_zones.values(), 179 + key=lambda x: ( 180 + x["std_offset_s"], 181 + x["dst_offset_s"], 182 + x["start_utc"], 183 + x["end_utc"] 184 + ) 185 + ) 177 186 print(f"Generated data for {len(tz_data_list)} unique offset/DST rule combinations.") 178 187 179 188 # --- C Code Generation: Flatten name pool and tz_list entries ---
+3 -3
run.sh
··· 5 5 6 6 # Function to run the timezone generation script 7 7 generate_tz_list() { 8 - echo "Generating timezone list..." 9 - # python generate_tz_list.py 10 - uv run python generate_airport_tz_list.py --top 10 --max-bucket 10 --out src/c/airport_tz_list.c 8 + echo "Generating timezone lists..." 9 + uv run python generate_tz_list.py 10 + uv run python generate_airport_tz_list.py 11 11 } 12 12 13 13 # Function to build the project
+49 -48
src/c/tz_list.c
··· 155 155 "Cayenne", 156 156 "ComodRivadavia", 157 157 "Cordoba", 158 + "Coyhaique", 158 159 "Fortaleza", 159 160 "Jujuy", 160 161 "La Rioja", ··· 200 201 "Sao Tome", 201 202 "St Helena", 202 203 "Timbuktu", 203 - "Casablanca", 204 - "El Aaiun", 205 204 "Belfast", 206 205 "Dublin", 207 206 "Lisbon", 208 207 "London", 208 + "Casablanca", 209 + "El Aaiun", 209 210 "Troll", 210 211 "Algiers", 211 212 "Bangui", ··· 271 272 "Windhoek", 272 273 "Jerusalem", 273 274 "Tel Aviv", 275 + "Beirut", 274 276 "Chisinau", 275 277 "Tiraspol", 276 278 "Athens", ··· 287 289 "Uzhgorod", 288 290 "Vilnius", 289 291 "Zaporozhye", 290 - "Cairo", 291 292 "Gaza", 292 293 "Hebron", 293 - "Beirut", 294 + "Cairo", 294 295 "Addis Ababa", 295 296 "Aden", 296 297 "Amman", ··· 495 496 { -4.00f, -3.00f, 1741489200LL, 1762048800LL, 134, 6 }, 496 497 { -4.00f, -3.00f, 1757206800LL, 1743897600LL, 140, 1 }, 497 498 { -3.50f, -2.50f, 1741489200LL, 1762048800LL, 141, 1 }, 498 - { -3.00f, -3.00f, 0LL, 0LL, 142, 29 }, 499 - { -3.00f, -2.00f, 1741489200LL, 1762048800LL, 171, 1 }, 500 - { -2.00f, -2.00f, 0LL, 0LL, 172, 1 }, 501 - { -2.00f, -1.00f, 1743292800LL, 1761436800LL, 173, 3 }, 502 - { -1.00f, -1.00f, 0LL, 0LL, 176, 1 }, 503 - { -1.00f, 0.00f, 1743296400LL, 1761440400LL, 177, 1 }, 504 - { 0.00f, 0.00f, 0LL, 0LL, 178, 17 }, 505 - { 0.00f, 1.00f, 1743908400LL, 1740279600LL, 195, 2 }, 506 - { 0.00f, 1.00f, 1743300000LL, 1761444000LL, 197, 4 }, 507 - { 0.00f, 2.00f, 1743303600LL, 1761447600LL, 201, 1 }, 508 - { 1.00f, 1.00f, 0LL, 0LL, 202, 13 }, 509 - { 1.00f, 2.00f, 1743303600LL, 1761447600LL, 215, 33 }, 510 - { 2.00f, 2.00f, 0LL, 0LL, 248, 16 }, 511 - { 2.00f, 3.00f, 1743130800LL, 1761444000LL, 264, 2 }, 512 - { 2.00f, 3.00f, 1743303600LL, 1761447600LL, 266, 2 }, 513 - { 2.00f, 3.00f, 1743307200LL, 1761451200LL, 268, 14 }, 514 - { 2.00f, 3.00f, 1745542800LL, 1761868800LL, 282, 1 }, 515 - { 2.00f, 3.00f, 1744426800LL, 1761357600LL, 283, 2 }, 516 - { 2.00f, 3.00f, 1743296400LL, 1761436800LL, 285, 1 }, 517 - { 3.00f, 3.00f, 0LL, 0LL, 286, 26 }, 518 - { 3.50f, 3.50f, 0LL, 0LL, 312, 1 }, 519 - { 4.00f, 4.00f, 0LL, 0LL, 313, 12 }, 520 - { 4.50f, 4.50f, 0LL, 0LL, 325, 1 }, 521 - { 5.00f, 5.00f, 0LL, 0LL, 326, 18 }, 522 - { 5.50f, 5.50f, 0LL, 0LL, 344, 3 }, 523 - { 5.75f, 5.75f, 0LL, 0LL, 347, 2 }, 524 - { 6.00f, 6.00f, 0LL, 0LL, 349, 9 }, 525 - { 6.50f, 6.50f, 0LL, 0LL, 358, 3 }, 526 - { 7.00f, 7.00f, 0LL, 0LL, 361, 15 }, 527 - { 8.00f, 8.00f, 0LL, 0LL, 376, 21 }, 528 - { 8.75f, 8.75f, 0LL, 0LL, 397, 1 }, 529 - { 9.00f, 9.00f, 0LL, 0LL, 398, 9 }, 530 - { 9.50f, 9.50f, 0LL, 0LL, 407, 1 }, 531 - { 9.50f, 10.50f, 1759633200LL, 1743908400LL, 408, 3 }, 532 - { 10.00f, 10.00f, 0LL, 0LL, 411, 10 }, 533 - { 10.00f, 11.00f, 1759633200LL, 1743908400LL, 421, 6 }, 534 - { 10.50f, 11.00f, 1759633200LL, 1743904800LL, 427, 2 }, 535 - { 11.00f, 11.00f, 0LL, 0LL, 429, 10 }, 536 - { 11.00f, 12.00f, 1759633200LL, 1743908400LL, 439, 1 }, 537 - { 12.00f, 12.00f, 0LL, 0LL, 440, 10 }, 538 - { 12.00f, 13.00f, 1759028400LL, 1743908400LL, 450, 2 }, 539 - { 12.75f, 13.75f, 1759032000LL, 1743912000LL, 452, 1 }, 540 - { 13.00f, 13.00f, 0LL, 0LL, 453, 4 }, 541 - { 14.00f, 14.00f, 0LL, 0LL, 457, 1 }, 499 + { -3.00f, -3.00f, 0LL, 0LL, 142, 30 }, 500 + { -3.00f, -2.00f, 1741489200LL, 1762048800LL, 172, 1 }, 501 + { -2.00f, -2.00f, 0LL, 0LL, 173, 1 }, 502 + { -2.00f, -1.00f, 1743292800LL, 1761436800LL, 174, 3 }, 503 + { -1.00f, -1.00f, 0LL, 0LL, 177, 1 }, 504 + { -1.00f, 0.00f, 1743296400LL, 1761440400LL, 178, 1 }, 505 + { 0.00f, 0.00f, 0LL, 0LL, 179, 17 }, 506 + { 0.00f, 1.00f, 1743300000LL, 1761444000LL, 196, 4 }, 507 + { 0.00f, 1.00f, 1743908400LL, 1740279600LL, 200, 2 }, 508 + { 0.00f, 2.00f, 1743303600LL, 1761447600LL, 202, 1 }, 509 + { 1.00f, 1.00f, 0LL, 0LL, 203, 13 }, 510 + { 1.00f, 2.00f, 1743303600LL, 1761447600LL, 216, 33 }, 511 + { 2.00f, 2.00f, 0LL, 0LL, 249, 16 }, 512 + { 2.00f, 3.00f, 1743130800LL, 1761444000LL, 265, 2 }, 513 + { 2.00f, 3.00f, 1743296400LL, 1761436800LL, 267, 1 }, 514 + { 2.00f, 3.00f, 1743303600LL, 1761447600LL, 268, 2 }, 515 + { 2.00f, 3.00f, 1743307200LL, 1761451200LL, 270, 14 }, 516 + { 2.00f, 3.00f, 1744426800LL, 1761357600LL, 284, 2 }, 517 + { 2.00f, 3.00f, 1745542800LL, 1761868800LL, 286, 1 }, 518 + { 3.00f, 3.00f, 0LL, 0LL, 287, 26 }, 519 + { 3.50f, 3.50f, 0LL, 0LL, 313, 1 }, 520 + { 4.00f, 4.00f, 0LL, 0LL, 314, 12 }, 521 + { 4.50f, 4.50f, 0LL, 0LL, 326, 1 }, 522 + { 5.00f, 5.00f, 0LL, 0LL, 327, 18 }, 523 + { 5.50f, 5.50f, 0LL, 0LL, 345, 3 }, 524 + { 5.75f, 5.75f, 0LL, 0LL, 348, 2 }, 525 + { 6.00f, 6.00f, 0LL, 0LL, 350, 9 }, 526 + { 6.50f, 6.50f, 0LL, 0LL, 359, 3 }, 527 + { 7.00f, 7.00f, 0LL, 0LL, 362, 15 }, 528 + { 8.00f, 8.00f, 0LL, 0LL, 377, 21 }, 529 + { 8.75f, 8.75f, 0LL, 0LL, 398, 1 }, 530 + { 9.00f, 9.00f, 0LL, 0LL, 399, 9 }, 531 + { 9.50f, 9.50f, 0LL, 0LL, 408, 1 }, 532 + { 9.50f, 10.50f, 1759633200LL, 1743908400LL, 409, 3 }, 533 + { 10.00f, 10.00f, 0LL, 0LL, 412, 10 }, 534 + { 10.00f, 11.00f, 1759633200LL, 1743908400LL, 422, 6 }, 535 + { 10.50f, 11.00f, 1759633200LL, 1743904800LL, 428, 2 }, 536 + { 11.00f, 11.00f, 0LL, 0LL, 430, 10 }, 537 + { 11.00f, 12.00f, 1759633200LL, 1743908400LL, 440, 1 }, 538 + { 12.00f, 12.00f, 0LL, 0LL, 441, 10 }, 539 + { 12.00f, 13.00f, 1759028400LL, 1743908400LL, 451, 2 }, 540 + { 12.75f, 13.75f, 1759032000LL, 1743912000LL, 453, 1 }, 541 + { 13.00f, 13.00f, 0LL, 0LL, 454, 4 }, 542 + { 14.00f, 14.00f, 0LL, 0LL, 458, 1 }, 542 543 }; 543 544 544 545 #define TZ_LIST_COUNT (sizeof(tz_list)/sizeof(tz_list[0]))