Source: python-croniter
Version: 1.3.5-3
Severity: serious
Justification: FTBFS
Tags: trixie sid ftbfs
User: [email protected]
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;[email protected]
or:
https://udd.debian.org/bugs/?release=na&merged=ign&fnewerval=7&flastmodval=7&fusertag=only&fusertagtag=ftbfs-20230925&[email protected]&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.