Source: python-croniter Version: 1.3.5-3 Severity: serious Justification: FTBFS Tags: trixie sid ftbfs User: lu...@debian.org Usertags: ftbfs-20230925 ftbfs-trixie
Hi, During a rebuild of all packages in sid, your package failed to build on amd64. Relevant part (hopefully): > make[1]: Entering directory '/<<PKGBUILDDIR>>' > make[1]: pyversions: No such file or directory > py3versions: no X-Python3-Version in control file, using supported versions > set -e ; set -x ; for pyvers in 3.11; do \ > PYTHONPATH=. PYTHON=python$pyvers python$pyvers -m pytest -v . ; \ > done > + PYTHONPATH=. PYTHON=python3.11 python3.11 -m pytest -v . > ============================= test session starts > ============================== > platform linux -- Python 3.11.5, pytest-7.4.2, pluggy-1.3.0 -- > /usr/bin/python3.11 > cachedir: .pytest_cache > rootdir: /<<PKGBUILDDIR>> > collecting ... collected 119 items > > src/croniter/tests/test_croniter.py::CroniterTest::testBlockDupRanges PASSED > [ 0%] > src/croniter/tests/test_croniter.py::CroniterTest::testBug1 PASSED [ > 1%] > src/croniter/tests/test_croniter.py::CroniterTest::testBug2 PASSED [ > 2%] > src/croniter/tests/test_croniter.py::CroniterTest::testBug3 PASSED [ > 3%] > src/croniter/tests/test_croniter.py::CroniterTest::testBug57 PASSED [ > 4%] > src/croniter/tests/test_croniter.py::CroniterTest::testDay PASSED [ > 5%] > src/croniter/tests/test_croniter.py::CroniterTest::testError PASSED [ > 5%] > src/croniter/tests/test_croniter.py::CroniterTest::testGetCurrent PASSED [ > 6%] > src/croniter/tests/test_croniter.py::CroniterTest::testHour PASSED [ > 7%] > src/croniter/tests/test_croniter.py::CroniterTest::testISOWeekday PASSED [ > 8%] > src/croniter/tests/test_croniter.py::CroniterTest::testInitNoStartTime PASSED > [ 9%] > src/croniter/tests/test_croniter.py::CroniterTest::testLastDayOfMonth PASSED > [ 10%] > src/croniter/tests/test_croniter.py::CroniterTest::testMinute PASSED [ > 10%] > src/croniter/tests/test_croniter.py::CroniterTest::testMonth PASSED [ > 11%] > src/croniter/tests/test_croniter.py::CroniterTest::testNthWeekDay PASSED [ > 12%] > src/croniter/tests/test_croniter.py::CroniterTest::testOptimizeCronExpressions > PASSED [ 13%] > src/croniter/tests/test_croniter.py::CroniterTest::testPrevDayOfMonthWithCrossing > PASSED [ 14%] > src/croniter/tests/test_croniter.py::CroniterTest::testPrevLastDayOfMonth > PASSED [ 15%] > src/croniter/tests/test_croniter.py::CroniterTest::testPrevMinute PASSED [ > 15%] > src/croniter/tests/test_croniter.py::CroniterTest::testPrevNthWeekDay PASSED > [ 16%] > src/croniter/tests/test_croniter.py::CroniterTest::testPrevWeekDay PASSED [ > 17%] > src/croniter/tests/test_croniter.py::CroniterTest::testPrevWeekDay2 PASSED [ > 18%] > src/croniter/tests/test_croniter.py::CroniterTest::testPreviousDay PASSED [ > 19%] > src/croniter/tests/test_croniter.py::CroniterTest::testPreviousDow PASSED [ > 20%] > src/croniter/tests/test_croniter.py::CroniterTest::testPreviousHour PASSED [ > 21%] > src/croniter/tests/test_croniter.py::CroniterTest::testPreviousMonth PASSED [ > 21%] > src/croniter/tests/test_croniter.py::CroniterTest::testRangeWithUppercaseLastDayOfMonth > PASSED [ 22%] > src/croniter/tests/test_croniter.py::CroniterTest::testSecond PASSED [ > 23%] > src/croniter/tests/test_croniter.py::CroniterTest::testSecondRepeat PASSED [ > 24%] > src/croniter/tests/test_croniter.py::CroniterTest::testSecondSec PASSED [ > 25%] > src/croniter/tests/test_croniter.py::CroniterTest::testSundayToThursdayWithAlphaConversion > PASSED [ 26%] > src/croniter/tests/test_croniter.py::CroniterTest::testTimezone PASSED [ > 26%] > src/croniter/tests/test_croniter.py::CroniterTest::testTimezoneDateutil > PASSED [ 27%] > src/croniter/tests/test_croniter.py::CroniterTest::testTimezoneSummerTime > PASSED [ 28%] > src/croniter/tests/test_croniter.py::CroniterTest::testTimezoneWinterTime > PASSED [ 29%] > src/croniter/tests/test_croniter.py::CroniterTest::testWeekDay PASSED [ > 30%] > src/croniter/tests/test_croniter.py::CroniterTest::testWeekDayDayAnd PASSED [ > 31%] > src/croniter/tests/test_croniter.py::CroniterTest::test_bug34 PASSED [ > 31%] > src/croniter/tests/test_croniter.py::CroniterTest::test_confirm_sort PASSED [ > 32%] > src/croniter/tests/test_croniter.py::CroniterTest::test_dst_issue90_st31ny > PASSED [ 33%] > src/croniter/tests/test_croniter.py::CroniterTest::test_error_alpha_cron > PASSED [ 34%] > src/croniter/tests/test_croniter.py::CroniterTest::test_error_bad_cron PASSED > [ 35%] > src/croniter/tests/test_croniter.py::CroniterTest::test_exactly_the_same_minute > PASSED [ 36%] > src/croniter/tests/test_croniter.py::CroniterTest::test_explicit_year_forward > PASSED [ 36%] > src/croniter/tests/test_croniter.py::CroniterTest::test_hash_mixup_all_fri_3rd_sat > PASSED [ 37%] > src/croniter/tests/test_croniter.py::CroniterTest::test_invalid_zerorepeat > PASSED [ 38%] > src/croniter/tests/test_croniter.py::CroniterTest::test_is_valid PASSED [ > 39%] > src/croniter/tests/test_croniter.py::CroniterTest::test_issue145_getnext > PASSED [ 40%] > src/croniter/tests/test_croniter.py::CroniterTest::test_issue151 PASSED [ > 41%] > src/croniter/tests/test_croniter.py::CroniterTest::test_issue156 PASSED [ > 42%] > src/croniter/tests/test_croniter.py::CroniterTest::test_issue_142_dow PASSED > [ 42%] > src/croniter/tests/test_croniter.py::CroniterTest::test_issue_47 PASSED [ > 43%] > src/croniter/tests/test_croniter.py::CroniterTest::test_issue_k11 PASSED [ > 44%] > src/croniter/tests/test_croniter.py::CroniterTest::test_issue_k12 PASSED [ > 45%] > src/croniter/tests/test_croniter.py::CroniterTest::test_issue_k6 PASSED [ > 46%] > src/croniter/tests/test_croniter.py::CroniterTest::test_issue_monsun_117 > PASSED [ 47%] > src/croniter/tests/test_croniter.py::CroniterTest::test_last_out_of_range > PASSED [ 47%] > src/croniter/tests/test_croniter.py::CroniterTest::test_lwom_friday PASSED [ > 48%] > src/croniter/tests/test_croniter.py::CroniterTest::test_lwom_friday_2hours > PASSED [ 49%] > src/croniter/tests/test_croniter.py::CroniterTest::test_lwom_friday_2xh_2xm > PASSED [ 50%] > src/croniter/tests/test_croniter.py::CroniterTest::test_lwom_mixup_4th_and_last > PASSED [ 51%] > src/croniter/tests/test_croniter.py::CroniterTest::test_lwom_mixup_all_fri_last_sat > PASSED [ 52%] > src/croniter/tests/test_croniter.py::CroniterTest::test_lwom_mixup_firstlast_sat > PASSED [ 52%] > src/croniter/tests/test_croniter.py::CroniterTest::test_lwom_saturday_rev > PASSED [ 53%] > src/croniter/tests/test_croniter.py::CroniterTest::test_lwom_tue_thu PASSED [ > 54%] > src/croniter/tests/test_croniter.py::CroniterTest::test_match PASSED [ > 55%] > src/croniter/tests/test_croniter.py::CroniterTest::test_milliseconds PASSED [ > 56%] > src/croniter/tests/test_croniter.py::CroniterTest::test_mixdow PASSED [ > 57%] > src/croniter/tests/test_croniter.py::CroniterTest::test_multiple_months > PASSED [ 57%] > src/croniter/tests/test_croniter.py::CroniterTest::test_next_when_now_satisfies_cron > PASSED [ 58%] > src/croniter/tests/test_croniter.py::CroniterTest::test_nth_as_last_wday_simple > PASSED [ 59%] > src/croniter/tests/test_croniter.py::CroniterTest::test_nth_out_of_range > PASSED [ 60%] > src/croniter/tests/test_croniter.py::CroniterTest::test_nth_wday_simple > PASSED [ 61%] > src/croniter/tests/test_croniter.py::CroniterTest::test_overflow PASSED [ > 62%] > src/croniter/tests/test_croniter.py::CroniterTest::test_rangeGenerator PASSED > [ 63%] > src/croniter/tests/test_croniter.py::CroniterTest::test_std_dst PASSED [ > 63%] > src/croniter/tests/test_croniter.py::CroniterTest::test_std_dst2 PASSED [ > 64%] > src/croniter/tests/test_croniter.py::CroniterTest::test_std_dst3 PASSED [ > 65%] > src/croniter/tests/test_croniter.py::CroniterTest::test_wdom_core_leap_year > PASSED [ 66%] > src/croniter/tests/test_croniter.py::CroniterTest::test_weekday_range PASSED > [ 67%] > src/croniter/tests/test_croniter_hash.py::CroniterHashTest::test_hash_daily > PASSED [ 68%] > src/croniter/tests/test_croniter_hash.py::CroniterHashTest::test_hash_division > PASSED [ 68%] > src/croniter/tests/test_croniter_hash.py::CroniterHashTest::test_hash_epoch_change > PASSED [ 69%] > src/croniter/tests/test_croniter_hash.py::CroniterHashTest::test_hash_float > PASSED [ 70%] > src/croniter/tests/test_croniter_hash.py::CroniterHashTest::test_hash_hourly > PASSED [ 71%] > src/croniter/tests/test_croniter_hash.py::CroniterHashTest::test_hash_id_bytes > PASSED [ 72%] > src/croniter/tests/test_croniter_hash.py::CroniterHashTest::test_hash_id_change > PASSED [ 73%] > src/croniter/tests/test_croniter_hash.py::CroniterHashTest::test_hash_monthly > PASSED [ 73%] > src/croniter/tests/test_croniter_hash.py::CroniterHashTest::test_hash_range > PASSED [ 74%] > src/croniter/tests/test_croniter_hash.py::CroniterHashTest::test_hash_range_division > PASSED [ 75%] > src/croniter/tests/test_croniter_hash.py::CroniterHashTest::test_hash_second > PASSED [ 76%] > src/croniter/tests/test_croniter_hash.py::CroniterHashTest::test_hash_weekly > PASSED [ 77%] > src/croniter/tests/test_croniter_hash.py::CroniterHashTest::test_hash_yearly > PASSED [ 78%] > src/croniter/tests/test_croniter_hash.py::CroniterHashTest::test_invalid_definition > PASSED [ 78%] > src/croniter/tests/test_croniter_hash.py::CroniterHashTest::test_invalid_divisor > PASSED [ 79%] > src/croniter/tests/test_croniter_hash.py::CroniterHashTest::test_invalid_hash_id_type > PASSED [ 80%] > src/croniter/tests/test_croniter_hash.py::CroniterWordAliasTest::test_hash_word_annually > PASSED [ 81%] > src/croniter/tests/test_croniter_hash.py::CroniterWordAliasTest::test_hash_word_daily > PASSED [ 82%] > src/croniter/tests/test_croniter_hash.py::CroniterWordAliasTest::test_hash_word_hourly > PASSED [ 83%] > src/croniter/tests/test_croniter_hash.py::CroniterWordAliasTest::test_hash_word_midnight > PASSED [ 84%] > src/croniter/tests/test_croniter_hash.py::CroniterWordAliasTest::test_hash_word_monthly > PASSED [ 84%] > src/croniter/tests/test_croniter_hash.py::CroniterWordAliasTest::test_hash_word_weekly > PASSED [ 85%] > src/croniter/tests/test_croniter_hash.py::CroniterWordAliasTest::test_hash_word_yearly > PASSED [ 86%] > src/croniter/tests/test_croniter_random.py::CroniterRandomTest::test_random > PASSED [ 87%] > src/croniter/tests/test_croniter_random.py::CroniterRandomTest::test_random_float > PASSED [ 88%] > src/croniter/tests/test_croniter_random.py::CroniterRandomTest::test_random_range > PASSED [ 89%] > src/croniter/tests/test_croniter_range.py::CroniterRangeTest::test_1day_step > PASSED [ 89%] > src/croniter/tests/test_croniter_range.py::CroniterRangeTest::test_1day_step_no_ends > PASSED [ 90%] > src/croniter/tests/test_croniter_range.py::CroniterRangeTest::test_1minute_step_float > PASSED [ 91%] > src/croniter/tests/test_croniter_range.py::CroniterRangeTest::test_1month_step > PASSED [ 92%] > src/croniter/tests/test_croniter_range.py::CroniterRangeTest::test_auto_ret_type > PASSED [ 93%] > src/croniter/tests/test_croniter_range.py::CroniterRangeTest::test_croniter_range_derived_class > PASSED [ 94%] > src/croniter/tests/test_croniter_range.py::CroniterRangeTest::test_dt_types > PASSED [ 94%] > src/croniter/tests/test_croniter_range.py::CroniterRangeTest::test_extra_hour_day_prio > FAILED [ 95%] > src/croniter/tests/test_croniter_range.py::CroniterRangeTest::test_input_type_exceptions > PASSED [ 96%] > src/croniter/tests/test_croniter_range.py::CroniterRangeTest::test_issue145_getnext > PASSED [ 97%] > src/croniter/tests/test_croniter_range.py::CroniterRangeTest::test_issue145_range > PASSED [ 98%] > src/croniter/tests/test_croniter_range.py::CroniterRangeTest::test_timezone_dst > FAILED [ 99%] > src/croniter/tests/test_speed.py::TestCase::test_Noop PASSED > [100%] > > =================================== FAILURES > =================================== > __________________ CroniterRangeTest.test_extra_hour_day_prio > __________________ > > self = <croniter.tests.test_croniter_range.CroniterRangeTest > testMethod=test_extra_hour_day_prio> > > def test_extra_hour_day_prio(self): > def datetime_tz(*args, **kw): > """ Defined this in another branch. single-use-version """ > tzinfo = kw.pop("tzinfo") > return tzinfo.localize(datetime(*args)) > > tz = pytz.timezone("US/Eastern") > > src/croniter/tests/test_croniter_range.py:96: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > zone = 'US/Eastern' > > def timezone(zone): > r''' Return a datetime.tzinfo implementation for the given timezone > > >>> from datetime import datetime, timedelta > >>> utc = timezone('UTC') > >>> eastern = timezone('US/Eastern') > >>> eastern.zone > 'US/Eastern' > >>> timezone(unicode('US/Eastern')) is eastern > True > >>> utc_dt = datetime(2002, 10, 27, 6, 0, 0, tzinfo=utc) > >>> loc_dt = utc_dt.astimezone(eastern) > >>> fmt = '%Y-%m-%d %H:%M:%S %Z (%z)' > >>> loc_dt.strftime(fmt) > '2002-10-27 01:00:00 EST (-0500)' > >>> (loc_dt - timedelta(minutes=10)).strftime(fmt) > '2002-10-27 00:50:00 EST (-0500)' > >>> eastern.normalize(loc_dt - timedelta(minutes=10)).strftime(fmt) > '2002-10-27 01:50:00 EDT (-0400)' > >>> (loc_dt + timedelta(minutes=10)).strftime(fmt) > '2002-10-27 01:10:00 EST (-0500)' > > Raises UnknownTimeZoneError if passed an unknown zone. > > >>> try: > ... timezone('Asia/Shangri-La') > ... except UnknownTimeZoneError: > ... print('Unknown') > Unknown > > >>> try: > ... timezone(unicode('\N{TRADE MARK SIGN}')) > ... except UnknownTimeZoneError: > ... print('Unknown') > Unknown > > ''' > if zone is None: > raise UnknownTimeZoneError(None) > > if zone.upper() == 'UTC': > return utc > > try: > zone = ascii(zone) > except UnicodeEncodeError: > # All valid timezones are ASCII > raise UnknownTimeZoneError(zone) > > zone = _case_insensitive_zone_lookup(_unmunge_zone(zone)) > if zone not in _tzinfo_cache: > if zone in all_timezones_set: # noqa > fp = open_resource(zone) > try: > _tzinfo_cache[zone] = build_tzinfo(zone, fp) > finally: > fp.close() > else: > > raise UnknownTimeZoneError(zone) > E pytz.exceptions.UnknownTimeZoneError: 'US/Eastern' > > /usr/lib/python3/dist-packages/pytz/__init__.py:202: UnknownTimeZoneError > _____________________ CroniterRangeTest.test_timezone_dst > ______________________ > > self = <croniter.tests.test_croniter_range.CroniterRangeTest > testMethod=test_timezone_dst> > > def test_timezone_dst(self): > """ Test across DST transition, which technically is a timzone > change. """ > > tz = pytz.timezone("US/Eastern") > > src/croniter/tests/test_croniter_range.py:84: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > zone = 'US/Eastern' > > def timezone(zone): > r''' Return a datetime.tzinfo implementation for the given timezone > > >>> from datetime import datetime, timedelta > >>> utc = timezone('UTC') > >>> eastern = timezone('US/Eastern') > >>> eastern.zone > 'US/Eastern' > >>> timezone(unicode('US/Eastern')) is eastern > True > >>> utc_dt = datetime(2002, 10, 27, 6, 0, 0, tzinfo=utc) > >>> loc_dt = utc_dt.astimezone(eastern) > >>> fmt = '%Y-%m-%d %H:%M:%S %Z (%z)' > >>> loc_dt.strftime(fmt) > '2002-10-27 01:00:00 EST (-0500)' > >>> (loc_dt - timedelta(minutes=10)).strftime(fmt) > '2002-10-27 00:50:00 EST (-0500)' > >>> eastern.normalize(loc_dt - timedelta(minutes=10)).strftime(fmt) > '2002-10-27 01:50:00 EDT (-0400)' > >>> (loc_dt + timedelta(minutes=10)).strftime(fmt) > '2002-10-27 01:10:00 EST (-0500)' > > Raises UnknownTimeZoneError if passed an unknown zone. > > >>> try: > ... timezone('Asia/Shangri-La') > ... except UnknownTimeZoneError: > ... print('Unknown') > Unknown > > >>> try: > ... timezone(unicode('\N{TRADE MARK SIGN}')) > ... except UnknownTimeZoneError: > ... print('Unknown') > Unknown > > ''' > if zone is None: > raise UnknownTimeZoneError(None) > > if zone.upper() == 'UTC': > return utc > > try: > zone = ascii(zone) > except UnicodeEncodeError: > # All valid timezones are ASCII > raise UnknownTimeZoneError(zone) > > zone = _case_insensitive_zone_lookup(_unmunge_zone(zone)) > if zone not in _tzinfo_cache: > if zone in all_timezones_set: # noqa > fp = open_resource(zone) > try: > _tzinfo_cache[zone] = build_tzinfo(zone, fp) > finally: > fp.close() > else: > > raise UnknownTimeZoneError(zone) > E pytz.exceptions.UnknownTimeZoneError: 'US/Eastern' > > /usr/lib/python3/dist-packages/pytz/__init__.py:202: UnknownTimeZoneError > =========================== short test summary info > ============================ > FAILED > src/croniter/tests/test_croniter_range.py::CroniterRangeTest::test_extra_hour_day_prio > FAILED > src/croniter/tests/test_croniter_range.py::CroniterRangeTest::test_timezone_dst > ======================== 2 failed, 117 passed in 0.35s > ========================= > make[1]: *** [debian/rules:25: override_dh_auto_test] Error 1 The full build log is available from: http://qa-logs.debian.net/2023/09/25/python-croniter_1.3.5-3_unstable.log All bugs filed during this archive rebuild are listed at: https://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=ftbfs-20230925;users=lu...@debian.org or: https://udd.debian.org/bugs/?release=na&merged=ign&fnewerval=7&flastmodval=7&fusertag=only&fusertagtag=ftbfs-20230925&fusertaguser=lu...@debian.org&allbugs=1&cseverity=1&ctags=1&caffected=1#results A list of current common problems and possible solutions is available at http://wiki.debian.org/qa.debian.org/FTBFS . You're welcome to contribute! If you reassign this bug to another package, please mark it as 'affects'-ing this package. See https://www.debian.org/Bugs/server-control#affects If you fail to reproduce this, please provide a build log and diff it with mine so that we can identify if something relevant changed in the meantime.