public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
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('*'):



             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