From nobody Sat May 04 07:54:16 2024 X-Original-To: dev-commits-ports-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4VWg144DvYz5K5WD; Sat, 4 May 2024 07:54:16 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4VWg143HpBz4ZXh; Sat, 4 May 2024 07:54:16 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1714809256; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=2E618mfO3jSvsjvIovHHFjp+TGm91owGED9VYJie2dE=; b=PDUJ0W9C1pJY88VhaJoSlkrTk9D3uyW82FgbcpDatGLbXlBdF5FdjKoL4lELs+oYwwTlFh dg1d7+UOu1jXUxuhNlKH5mFFTRPAeKnx2HS4f+lt3gx7T+mJxQBetWRKuDqPr2WpaTDCJ4 u8/6zUVkN1s0RJXnJyTacFYDEraaTHYkEUhI2vETMFRsUqL9XQW8T/a+aVWQiN8afO20LK 0S2nrQiol4vh6/3MFDhS/8ZuID+ncYTdS1B5JLrp3ZwuJaJaVIIjVVjwZBJyFIVm315gQM ZxHvMlbprVSouLpZjxWi2Cy+Dmx1SymDNs9i6Ob1HC+YM3jtuRi0UMHYdLyH+Q== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1714809256; a=rsa-sha256; cv=none; b=gCtYOoJ//8xwsIe/mJqX1XlNW7OW/l4WDfavtO1U96EwJNciBoSng9mwG1oNi8uyQ3kkVk WoeVuc1lQo1euBpt1BpdQXZlgYnv3rz1KYFrQguxcm+EU6llq8apLER7cAyxKkBVd0hpvO iOL2ufOMUSEgnFb54NGxSyRcja+sCWkFxKvtzyaMo+o64e6zSHfVKwYmml69b18VpwC0vc 7FVqZbvMYlwcpy39HjB4N0Q00ElOGkp2JlvedxDoCpXadLWfjFslmAxyDT99UFgebTV7x8 wRxSmwhUXRKENcO1DCpsuSmlfLDgwddAGQRONKy2qPbaGg+JHVfKt+/ItjVThg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1714809256; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=2E618mfO3jSvsjvIovHHFjp+TGm91owGED9VYJie2dE=; b=IJaMRLSM5qdmzS/bnWLqmLxEO5gjOXKaxDJVJoETDuqttVeXxsd4CLG2XWP1Cm5DrvUeHp 60agHkGJEauqfI6XGgsaCSU47OFlTFl1foeWaSOgxP1MrlbKVwN2aFvy5TJq5Y9lgcO9M/ 8cBJmuFaXzAtoH8QqS9gUnK4hkElncxX2VLteBTeWfGGO4j6VMJhtYvFSrGVr1FM55gIsU LonAneNN+h+mQ6MAMThaWXxSFEyYNOzGfSR1Axv+guiW7b3d5KhcBjmrvoE2hXvvCBTnMD ttC1rTUxxsiQmdTkIEZ3lqk38Sh7dDdLSplIQoOH9GFEmIcGyWGzmjaEOKVKTg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4VWg142tVwzLtX; Sat, 4 May 2024 07:54:16 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 4447sG4a097389; Sat, 4 May 2024 07:54:16 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 4447sGBV097386; Sat, 4 May 2024 07:54:16 GMT (envelope-from git) Date: Sat, 4 May 2024 07:54:16 GMT Message-Id: <202405040754.4447sGBV097386@gitrepo.freebsd.org> To: ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org From: Oleksii Samorukov Subject: git: d2bdf27e2221 - main - www/trac: fix issues with Babel 2.10.1+ List-Id: Commit messages for all branches of the ports repository List-Archive: https://lists.freebsd.org/archives/dev-commits-ports-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-ports-all@freebsd.org Sender: owner-dev-commits-ports-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: samm X-Git-Repository: ports X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: d2bdf27e2221e45c9242da2ccda51202c6b888c5 Auto-Submitted: auto-generated The branch main has been updated by samm: URL: https://cgit.FreeBSD.org/ports/commit/?id=d2bdf27e2221e45c9242da2ccda51202c6b888c5 commit d2bdf27e2221e45c9242da2ccda51202c6b888c5 Author: Oleksii Samorukov AuthorDate: 2024-05-04 07:50:29 +0000 Commit: Oleksii Samorukov CommitDate: 2024-05-04 07:53:59 +0000 www/trac: fix issues with Babel 2.10.1+ Fix obtained from https://trac.edgewall.org/ticket/13482 --- www/trac/Makefile | 2 +- www/trac/files/patch-trac_util_datefmt.py | 143 ++++++++++++++++++++++++++++++ 2 files changed, 144 insertions(+), 1 deletion(-) diff --git a/www/trac/Makefile b/www/trac/Makefile index 76c75200cb0f..70fd402b2014 100644 --- a/www/trac/Makefile +++ b/www/trac/Makefile @@ -1,6 +1,6 @@ PORTNAME= trac DISTVERSION= 1.6 -PORTREVISION= 2 +PORTREVISION= 3 CATEGORIES= www devel python MASTER_SITES= http://ftp.edgewall.com/pub/trac/ \ ftp://ftp.edgewall.com/pub/trac/ diff --git a/www/trac/files/patch-trac_util_datefmt.py b/www/trac/files/patch-trac_util_datefmt.py new file mode 100644 index 000000000000..e4788ec355b6 --- /dev/null +++ b/www/trac/files/patch-trac_util_datefmt.py @@ -0,0 +1,143 @@ +--- trac/util/datefmt.py.orig 2023-09-22 23:00:43 UTC ++++ trac/util/datefmt.py +@@ -34,6 +34,7 @@ else: + from babel import Locale + from babel.core import LOCALE_ALIASES, UnknownLocaleError + from babel.dates import ( ++ DateTimeFormat, + format_datetime as babel_format_datetime, + format_date as babel_format_date, + format_time as babel_format_time, +@@ -44,8 +45,9 @@ else: + ) + # 'context' parameter was added in Babel 2.3.1 + if 'context' in inspect.signature(babel_get_period_names).parameters: +- def get_period_names(locale=None): +- return babel_get_period_names(context='format', locale=locale) ++ def get_period_names(width='wide', locale=None): ++ return babel_get_period_names(width=width, context='format', ++ locale=locale) + else: + get_period_names = babel_get_period_names + +@@ -292,16 +294,40 @@ def _format_datetime(t, format, tzinfo, locale, hint): + hint = _STRFTIME_HINTS[format] + format = 'medium' + if format in ('short', 'medium', 'long', 'full'): +- if hint == 'datetime': +- return babel_format_datetime(t, format, None, locale) +- if hint == 'date': +- return babel_format_date(t, format, locale) +- if hint == 'time': +- return babel_format_time(t, format, None, locale) ++ return _format_datetime_babel(t, format, locale, hint) + + format = _BABEL_FORMATS[hint].get(format, format) + return _format_datetime_without_babel(t, format) + ++if babel: ++ class _DateTimeFormatFixup(DateTimeFormat): ++ def __getitem__(self, name): ++ if name.startswith(('b', 'B')): ++ return self.format_period('a', len(name)) ++ else: ++ return super().__getitem__(name) ++ ++def _format_datetime_babel(t, format, locale, hint): ++ if hint in ('datetime', 'date'): ++ datepart = babel_format_date(t, format, locale) ++ if hint == 'date': ++ return datepart ++ if hint in ('datetime', 'time'): ++ time_format = get_time_format(format, locale) ++ # Use `a` period instead of `b` and `B` periods because `parse_date` ++ # and jQuery timepicker addon don't support the periods ++ if '%(b' in time_format.format or '%(B' in time_format.format: ++ timepart = time_format.format % _DateTimeFormatFixup(t, locale) ++ else: ++ timepart = babel_format_time(t, format, None, locale) ++ if hint == 'time': ++ return timepart ++ if hint == 'datetime': ++ return get_datetime_format(format, locale=locale) \ ++ .replace("'", '') \ ++ .replace('{0}', timepart) \ ++ .replace('{1}', datepart) ++ + def format_datetime(t=None, format='%x %X', tzinfo=None, locale=None): + """Format the `datetime` object `t` into a `str` string + +@@ -439,24 +465,29 @@ def get_time_format_jquery_ui(locale): + """Get the time format for the jQuery UI timepicker addon.""" + if locale == 'iso8601': + return 'HH:mm:ssZ' ++ ++ t = datetime(1999, 10, 29, 23, 59, 58, tzinfo=utc) + if babel and locale: + values = {'h': 'h', 'hh': 'hh', 'H': 'H', 'HH': 'HH', + 'm': 'm', 'mm': 'mm', 's': 's', 'ss': 'ss'} +- f = get_time_format('medium', locale=locale).format +- if '%(a)s' in f: +- t = datetime(1999, 10, 29, 23, 59, 58, tzinfo=utc) ++ # Use `a` period instead of `b` and `B` periods, because jQuery ++ # timepicker addon doesn't support the periods. ++ tmpl = babel_format_time(t, tzinfo=utc, locale=locale) ++ if '23' not in tmpl: + ampm = babel_format_datetime(t, 'a', None, locale) +- values['a'] = 'TT' if ampm[0].isupper() else 'tt' ++ ampm = 'TT' if ampm[0].isupper() else 'tt' ++ values.update((period * n, ampm) for period in ('a', 'b', 'B') ++ for n in range(1, 6)) ++ f = get_time_format('medium', locale=locale).format + return f % values ++ else: ++ tmpl = format_time(t, tzinfo=utc) ++ ampm = format_time(t, '%p', tzinfo=utc) ++ if ampm: ++ tmpl = tmpl.replace(ampm, 'TT' if ampm[0].isupper() else 'tt', 1) ++ return tmpl.replace('23', 'HH', 1).replace('11', 'hh', 1) \ ++ .replace('59', 'mm', 1).replace('58', 'ss', 1) + +- t = datetime(1999, 10, 29, 23, 59, 58, tzinfo=utc) +- tmpl = format_time(t, tzinfo=utc) +- ampm = format_time(t, '%p', tzinfo=utc) +- if ampm: +- tmpl = tmpl.replace(ampm, 'TT' if ampm[0].isupper() else 'tt', 1) +- return tmpl.replace('23', 'HH', 1).replace('11', 'hh', 1) \ +- .replace('59', 'mm', 1).replace('58', 'ss', 1) +- + def get_timezone_list_jquery_ui(t=None): + """Get timezone list for jQuery timepicker addon""" + def utcoffset(tz, t): # in minutes +@@ -701,20 +732,21 @@ def _i18n_parse_date_pattern(locale): + if name: + period_names[name.lower()] = period + else: +- if formats[0].find('%(MMM)s') != -1: +- for width in ('wide', 'abbreviated'): +- names = get_month_names(width, locale=locale) +- month_names.update((name.lower(), num) +- for num, name in names.items()) +- if formats[0].find('%(a)s') != -1: +- names = get_period_names(locale=locale) ++ for width in ('wide', 'abbreviated'): ++ names = get_month_names(width=width, locale=locale) ++ month_names.update((name.lower(), num) ++ for num, name in names.items()) ++ names = get_period_names(width=width, locale=locale) + period_names.update((name.lower(), period) + for period, name in names.items() + if period in ('am', 'pm')) + +- regexp = ['[0-9]+'] +- regexp.extend(re.escape(name) for name in month_names) +- regexp.extend(re.escape(name) for name in period_names) ++ regexp = [] ++ regexp.extend(month_names) ++ regexp.extend(period_names) ++ regexp.sort(key=lambda v: len(v), reverse=True) ++ regexp = list(map(re.escape, regexp)) ++ regexp.append('[0-9]+') + + return { + 'orders': orders,