From: "Slava Bacherikov" <slava@bacherikov.org.ua>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/libs/package_info/generic_metadata/
Date: Thu, 12 Jul 2012 22:16:26 +0000 (UTC) [thread overview]
Message-ID: <1342045581.f07f433029b2751bae0e6ac824af59a652a9b5be.bacher09@gentoo> (raw)
commit: f07f433029b2751bae0e6ac824af59a652a9b5be
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Wed Jul 11 22:26:21 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Wed Jul 11 22:26:21 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=f07f4330
Try detect date for corrupted date in changelog
---
.../generic_metadata/changelog_parse.py | 48 +++++++++++++++++--
1 files changed, 43 insertions(+), 5 deletions(-)
diff --git a/gpackages/libs/package_info/generic_metadata/changelog_parse.py b/gpackages/libs/package_info/generic_metadata/changelog_parse.py
index 9d213f1..0f638c4 100644
--- a/gpackages/libs/package_info/generic_metadata/changelog_parse.py
+++ b/gpackages/libs/package_info/generic_metadata/changelog_parse.py
@@ -1,8 +1,10 @@
import re
-from ..generic import ToStrMixin
+from ..generic import ToStrMixin, toint
from ..parse_cp import VERSIONS_RE_P, EbuildRevMixin
from ..validators import NAME_RE
-from datetime import datetime
+from datetime import datetime, date, MINYEAR
+import calendar
+from difflib import get_close_matches
DATE_FORMAT = '%d %b %Y'
@@ -28,9 +30,43 @@ changelog_m_re = re.compile(CHANGELOG_MESSAGE_RE_STR, re.S)
changelog_v_re = re.compile(CHANGELOG_VERSION_RE_STR)
clear_re = re.compile(r'\s+')
email_re = re.compile(r'(?P<email_name>[\w\.\-]+)@(?P<email_host>[\w\.\-]+)')
-
-def parse_date(date_str):
- return datetime.strptime(date_str, DATE_FORMAT).date()
+date_re = re.compile(CHANGELOG_DATE_RE_P)
+
+MONTH_TUPLE = tuple(calendar.month_abbr)[1:]
+
+def parse_date(date_str, traceback = False):
+ try:
+ mdate = datetime.strptime(date_str, DATE_FORMAT).date()
+ except ValueError:
+ if traceback:
+ raise
+ # Bad date format, humman error
+ # Add here logger
+ mdate = date.min
+ m = date_re.match(date_str)
+ if m is not None:
+ dct = m.groupdict()
+ day = dct['day']
+ month = dct['month']
+ year = dct['year']
+ if month not in MONTH_TUPLE:
+ months = get_close_matches(month, MONTH_TUPLE, 1)
+ if len(months) >=1:
+ month = months[0]
+ else:
+ month = MONTH_TUPLE[0]
+
+ month_num = MONTH_TUPLE.index(month) + 1
+ year_num = toint(year, MINYEAR)
+ day_num = toint(day, 1)
+ try:
+ mdate = date(year_num, month_num, day_num)
+ except ValueError:
+ mdate = date.min
+
+ return mdate
+
+ return mdate.date()
def date_str(date):
return date.strftime(DATE_FORMAT)
@@ -95,6 +131,8 @@ class ChangeLogMessage(ToStrMixin):
return self.header
def parse_changelog(changelog):
+ if not changelog:
+ raise StopIteration
lst = changelog.split("\n\n")
for item in lst:
if item.startswith('*'):
next reply other threads:[~2012-07-12 22:17 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-07-12 22:16 Slava Bacherikov [this message]
-- strict thread matches above, loose matches on Subject: below --
2012-08-20 13:03 [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/libs/package_info/generic_metadata/ Slava Bacherikov
2012-08-02 23:18 Slava Bacherikov
2012-08-02 22:44 Slava Bacherikov
2012-08-02 22:44 Slava Bacherikov
2012-08-02 22:44 Slava Bacherikov
2012-08-02 22:44 Slava Bacherikov
2012-07-31 14:22 Slava Bacherikov
2012-07-30 12:59 Slava Bacherikov
2012-07-30 12:59 Slava Bacherikov
2012-07-30 12:59 Slava Bacherikov
2012-07-30 12:59 Slava Bacherikov
2012-07-25 22:47 Slava Bacherikov
2012-07-25 22:47 Slava Bacherikov
2012-07-23 23:09 Slava Bacherikov
2012-07-23 23:09 Slava Bacherikov
2012-07-22 23:46 Slava Bacherikov
2012-07-22 23:46 Slava Bacherikov
2012-07-22 23:46 Slava Bacherikov
2012-07-22 23:46 Slava Bacherikov
2012-07-18 23:03 Slava Bacherikov
2012-07-12 22:16 Slava Bacherikov
2012-07-04 22:13 Slava Bacherikov
2012-07-04 22:13 Slava Bacherikov
2012-06-25 22:23 Slava Bacherikov
2012-06-25 22:23 Slava Bacherikov
2012-06-25 22:23 Slava Bacherikov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1342045581.f07f433029b2751bae0e6ac824af59a652a9b5be.bacher09@gentoo \
--to=slava@bacherikov.org.ua \
--cc=gentoo-commits@lists.gentoo.org \
--cc=gentoo-dev@lists.gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox