Hello community,
here is the log from the commit of package python-dateparser for openSUSE:Factory checked in at 2019-09-30 15:57:06
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-dateparser (Old)
and /work/SRC/openSUSE:Factory/.python-dateparser.new.2352 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-dateparser"
Mon Sep 30 15:57:06 2019 rev:2 rq:733872 version:0.7.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-dateparser/python-dateparser.changes 2019-09-23 12:16:50.097812403 +0200
+++ /work/SRC/openSUSE:Factory/.python-dateparser.new.2352/python-dateparser.changes 2019-09-30 15:57:09.505574384 +0200
@@ -1,0 +2,25 @@
+Sat Sep 21 19:14:39 UTC 2019 - Arun Persaud
+
+- specfile:
+ * be more precise in %file section
+
+- update to version 0.7.2:
+ * Features:
+ + Extended Czech support
+ + Added time to valid periods
+ + Added timezone information to dates found with search_dates()
+ + Support strings as date formats
+ * Improvements:
+ + Fixed Collections ABCs depreciation warning
+ + Fixed dates with trailing colons not being parsed
+ + Fixed date format override on any settings change
+ + Fixed parsing current weekday as past date, regardless of
+ settings
+ + Added UTC -2:30 as a valid offset
+ + Added Python 3.7 to supported versions, dropped support for
+ Python 3.3 and 3.4
+ + Moved to importlib from imp where possible
+ + Improved support for Catalan
+ + Documentation improvements
+
+-------------------------------------------------------------------
Old:
----
dateparser-0.7.1.tar.gz
New:
----
dateparser-0.7.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-dateparser.spec ++++++
--- /var/tmp/diff_new_pack.NqfNgC/_old 2019-09-30 15:57:10.081572851 +0200
+++ /var/tmp/diff_new_pack.NqfNgC/_new 2019-09-30 15:57:10.085572840 +0200
@@ -18,7 +18,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-dateparser
-Version: 0.7.1
+Version: 0.7.2
Release: 0
Summary: Date parsing library designed to parse dates from HTML pages
License: BSD-3-Clause
@@ -74,6 +74,11 @@
%files %{python_files}
%doc AUTHORS.rst README.rst
%license LICENSE
-%{python_sitelib}/*
+%dir %{python_sitelib}/dateparser
+%{python_sitelib}/dateparser/*
+%dir %{python_sitelib}/dateparser_data
+%{python_sitelib}/dateparser_data/*
+%dir %{python_sitelib}/dateparser-%{version}-py*.egg-info
+%{python_sitelib}/dateparser-%{version}-py*.egg-info
%changelog
++++++ dateparser-0.7.1.tar.gz -> dateparser-0.7.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dateparser-0.7.1/AUTHORS.rst new/dateparser-0.7.2/AUTHORS.rst
--- old/dateparser-0.7.1/AUTHORS.rst 2019-02-12 22:42:27.000000000 +0100
+++ new/dateparser-0.7.2/AUTHORS.rst 2019-09-17 12:57:56.000000000 +0200
@@ -7,16 +7,19 @@
----------
* Adam LeVasseur
+* Adrián Chaves
* Ahmad Musaffa
* Alec Koumjian
* Alexis Svinartchouk
* Ammar Azif
+* Anderson Berg
* Andrés Portillo
-* Andrey Zhelnin
* Andrey Rahmatullin
+* Andrey Zhelnin
* Artur Sadurski
* Artur Gaspar
* atchoum31
+* Atul Krishna
* Benjamin Bach
* Bruno Alla
* Cesar Flores
@@ -26,6 +29,8 @@
* David Beitey
* Dawid Wolski
* demelziraptor
+* Derek Schmidt
+* Dongkuo Ma
* Edwin Zhang
* Elena Zakharova
* Elias Dorneles
@@ -34,13 +39,18 @@
* Fernando Tricas García
* Georgi Valkov
* Hristo Vrigazov
+* Hugo van Kemenade
* ishirav
* Ismael Carnales
* James M. Allen
* Ján Jančár
+* Jan Rygl
+* Jakub Kukul
* Jolo Balbin
* Joseph Kahn
+* Kishan Mehta
* Konstantin Lopuhin
+* Marc Hernández
* Mark Baas
* Marko Horvatić
* Mateusz Golewski
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dateparser-0.7.1/HISTORY.rst new/dateparser-0.7.2/HISTORY.rst
--- old/dateparser-0.7.1/HISTORY.rst 2019-02-12 22:42:27.000000000 +0100
+++ new/dateparser-0.7.2/HISTORY.rst 2019-09-17 12:57:56.000000000 +0200
@@ -3,6 +3,30 @@
History
=======
+0.7.2 (2019-09-17)
+------------------
+
+Features:
+
+* Extended Czech support
+* Added `time` to valid periods
+* Added timezone information to dates found with `search_dates()`
+* Support strings as date formats
+
+
+Improvements:
+
+* Fixed Collections ABCs depreciation warning
+* Fixed dates with trailing colons not being parsed
+* Fixed date format override on any settings change
+* Fixed parsing current weekday as past date, regardless of settings
+* Added UTC -2:30 as a valid offset
+* Added Python 3.7 to supported versions, dropped support for Python 3.3 and 3.4
+* Moved to importlib from imp where possible
+* Improved support for Catalan
+* Documentation improvements
+
+
0.7.1 (2019-02-12)
------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dateparser-0.7.1/PKG-INFO new/dateparser-0.7.2/PKG-INFO
--- old/dateparser-0.7.1/PKG-INFO 2019-02-12 22:44:08.000000000 +0100
+++ new/dateparser-0.7.2/PKG-INFO 2019-09-17 12:59:32.000000000 +0200
@@ -1,6 +1,6 @@
-Metadata-Version: 1.1
+Metadata-Version: 1.2
Name: dateparser
-Version: 0.7.1
+Version: 0.7.2
Summary: Date parsing library designed to parse dates from HTML pages
Home-page: https://github.com/scrapinghub/dateparser
Author: Scrapinghub
@@ -11,16 +11,16 @@
====================================================
.. image:: https://img.shields.io/travis/scrapinghub/dateparser/master.svg?style=flat-s...
- :target: https://travis-ci.org/scrapinghub/dateparser
- :alt: travis build status
+ :target: https://travis-ci.org/scrapinghub/dateparser
+ :alt: travis build status
.. image:: https://img.shields.io/pypi/v/dateparser.svg?style=flat-square
- :target: https://pypi.python.org/pypi/dateparser
- :alt: pypi version
+ :target: https://pypi.python.org/pypi/dateparser
+ :alt: pypi version
.. image:: https://readthedocs.org/projects/dateparser/badge/?version=latest
- :target: http://dateparser.readthedocs.org/en/latest/?badge=latest
- :alt: Documentation Status
+ :target: http://dateparser.readthedocs.org/en/latest/?badge=latest
+ :alt: Documentation Status
.. image:: https://codecov.io/gh/scrapinghub/dateparser/branch/master/graph/badge.svg
:target: https://codecov.io/gh/scrapinghub/dateparser
@@ -474,13 +474,13 @@
* Hijri/Islamic Calendar. For more information, refer to `Hijri Calendar https://en.wikipedia.org/wiki/Islamic_calendar`_.
- >>> from dateparser.calendars.jalali import JalaliCalendar
- >>> JalaliCalendar(u'جمعه سی ام اسفند ۱۳۸۷').get_date()
- {'date_obj': datetime.datetime(2009, 3, 20, 0, 0), 'period': 'day'}
-
- >>> from dateparser.calendars.hijri import HijriCalendar
- >>> HijriCalendar(u'17-01-1437 هـ 08:30 مساءً').get_date()
- {'date_obj': datetime.datetime(2015, 10, 30, 20, 30), 'period': 'day'}
+ >>> from dateparser.calendars.jalali import JalaliCalendar
+ >>> JalaliCalendar(u'جمعه سی ام اسفند ۱۳۸۷').get_date()
+ {'date_obj': datetime.datetime(2009, 3, 20, 0, 0), 'period': 'day'}
+
+ >>> from dateparser.calendars.hijri import HijriCalendar
+ >>> HijriCalendar(u'17-01-1437 هـ 08:30 مساءً').get_date()
+ {'date_obj': datetime.datetime(2015, 10, 30, 20, 30), 'period': 'day'}
.. note:: `HijriCalendar` has some limitations with Python 3.
.. note:: For `Finnish` language, please specify `settings={'SKIP_TOKENS': []}` to correctly parse freshness dates.
@@ -497,6 +497,30 @@
History
=======
+ 0.7.2 (2019-09-17)
+ ------------------
+
+ Features:
+
+ * Extended Czech support
+ * Added `time` to valid periods
+ * Added timezone information to dates found with `search_dates()`
+ * Support strings as date formats
+
+
+ Improvements:
+
+ * Fixed Collections ABCs depreciation warning
+ * Fixed dates with trailing colons not being parsed
+ * Fixed date format override on any settings change
+ * Fixed parsing current weekday as past date, regardless of settings
+ * Added UTC -2:30 as a valid offset
+ * Added Python 3.7 to supported versions, dropped support for Python 3.3 and 3.4
+ * Moved to importlib from imp where possible
+ * Improved support for Catalan
+ * Documentation improvements
+
+
0.7.1 (2019-02-12)
------------------
@@ -744,9 +768,9 @@
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.3
-Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
+Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
+Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dateparser-0.7.1/README.rst new/dateparser-0.7.2/README.rst
--- old/dateparser-0.7.1/README.rst 2019-02-12 22:42:27.000000000 +0100
+++ new/dateparser-0.7.2/README.rst 2019-09-17 12:57:56.000000000 +0200
@@ -3,16 +3,16 @@
====================================================
.. image:: https://img.shields.io/travis/scrapinghub/dateparser/master.svg?style=flat-s...
- :target: https://travis-ci.org/scrapinghub/dateparser
- :alt: travis build status
+ :target: https://travis-ci.org/scrapinghub/dateparser
+ :alt: travis build status
.. image:: https://img.shields.io/pypi/v/dateparser.svg?style=flat-square
- :target: https://pypi.python.org/pypi/dateparser
- :alt: pypi version
+ :target: https://pypi.python.org/pypi/dateparser
+ :alt: pypi version
.. image:: https://readthedocs.org/projects/dateparser/badge/?version=latest
- :target: http://dateparser.readthedocs.org/en/latest/?badge=latest
- :alt: Documentation Status
+ :target: http://dateparser.readthedocs.org/en/latest/?badge=latest
+ :alt: Documentation Status
.. image:: https://codecov.io/gh/scrapinghub/dateparser/branch/master/graph/badge.svg
:target: https://codecov.io/gh/scrapinghub/dateparser
@@ -466,13 +466,13 @@
* Hijri/Islamic Calendar. For more information, refer to `Hijri Calendar https://en.wikipedia.org/wiki/Islamic_calendar`_.
- >>> from dateparser.calendars.jalali import JalaliCalendar
- >>> JalaliCalendar(u'جمعه سی ام اسفند ۱۳۸۷').get_date()
- {'date_obj': datetime.datetime(2009, 3, 20, 0, 0), 'period': 'day'}
-
- >>> from dateparser.calendars.hijri import HijriCalendar
- >>> HijriCalendar(u'17-01-1437 هـ 08:30 مساءً').get_date()
- {'date_obj': datetime.datetime(2015, 10, 30, 20, 30), 'period': 'day'}
+ >>> from dateparser.calendars.jalali import JalaliCalendar
+ >>> JalaliCalendar(u'جمعه سی ام اسفند ۱۳۸۷').get_date()
+ {'date_obj': datetime.datetime(2009, 3, 20, 0, 0), 'period': 'day'}
+
+ >>> from dateparser.calendars.hijri import HijriCalendar
+ >>> HijriCalendar(u'17-01-1437 هـ 08:30 مساءً').get_date()
+ {'date_obj': datetime.datetime(2015, 10, 30, 20, 30), 'period': 'day'}
.. note:: `HijriCalendar` has some limitations with Python 3.
.. note:: For `Finnish` language, please specify `settings={'SKIP_TOKENS': []}` to correctly parse freshness dates.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dateparser-0.7.1/dateparser/__init__.py new/dateparser-0.7.2/dateparser/__init__.py
--- old/dateparser-0.7.1/dateparser/__init__.py 2019-02-12 22:42:27.000000000 +0100
+++ new/dateparser-0.7.2/dateparser/__init__.py 2019-09-17 12:57:56.000000000 +0200
@@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
-__version__ = '0.7.1'
+__version__ = '0.7.2'
from .date import DateDataParser
from .conf import apply_settings
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dateparser-0.7.1/dateparser/calendars/__init__.py new/dateparser-0.7.2/dateparser/calendars/__init__.py
--- old/dateparser-0.7.1/dateparser/calendars/__init__.py 2019-02-12 22:42:27.000000000 +0100
+++ new/dateparser-0.7.2/dateparser/calendars/__init__.py 2019-09-17 12:57:56.000000000 +0200
@@ -115,7 +115,7 @@
directive == '%m' and
token_len <= 2 and
is_digit and
- int(token) >= 1 and int(token) <= 12
+ 1 <= int(token) <= 12
):
month = int(token)
elif directive == '%B' and self._months and token in self._months:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dateparser-0.7.1/dateparser/conf.py new/dateparser-0.7.2/dateparser/conf.py
--- old/dateparser-0.7.1/dateparser/conf.py 2019-02-12 22:42:27.000000000 +0100
+++ new/dateparser-0.7.2/dateparser/conf.py 2019-09-17 12:57:56.000000000 +0200
@@ -17,6 +17,8 @@
* `TIMEZONE`: defaults to `UTC`. Can be timezone abbreviation or any of `tz database name as given here https://en.wikipedia.org/wiki/List_of_tz_database_time_zones`_.
* `RETURN_AS_TIMEZONE_AWARE`: return tz aware datetime objects in case timezone is detected in the date string.
* `RELATIVE_BASE`: count relative date from this base date. Should be datetime object.
+ * `RETURN_TIME_AS_PERIOD`: returns period as `time` in case time component is detected in the date string.
+ Default: False.
"""
_default = True
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dateparser-0.7.1/dateparser/data/date_translation_data/ca.py new/dateparser-0.7.2/dateparser/data/date_translation_data/ca.py
--- old/dateparser-0.7.1/dateparser/data/date_translation_data/ca.py 2019-02-12 22:42:27.000000000 +0100
+++ new/dateparser-0.7.2/dateparser/data/date_translation_data/ca.py 2019-09-17 12:57:56.000000000 +0200
@@ -160,13 +160,17 @@
"in 1 week": [
"la setmana que ve",
"la setm que ve",
- "setm vinent"
+ "setm vinent",
+ "la setmana vinent",
+ "la pròxima setmana",
+ "la propera setmana"
],
"1 day ago": [
"ahir"
],
"0 day ago": [
- "avui"
+ "avui",
+ "hui"
],
"in 1 day": [
"demà"
@@ -179,6 +183,21 @@
],
"0 second ago": [
"ara"
+ ],
+ "2 day ago": [
+ "despús-ahir",
+ "abans-d’ahir",
+ "dellà-ahir"
+ ],
+ "in 2 day": [
+ "endemà",
+ "sendemà",
+ "despús-demà",
+ "demà passat",
+ "passat demà"
+ ],
+ "in 3 day": [
+ "endemà passat"
]
},
"relative-type-regex": {
@@ -260,6 +279,10 @@
}
},
"skip": [
+ "de",
+ "del",
+ "l'",
+ "i",
" ",
".",
",",
@@ -272,5 +295,20 @@
"[",
"]",
","
+ ],
+ "pertain": [
+ "de",
+ "del"
+ ],
+ "in": [
+ "en"
+ ],
+ "simplifications": [
+ {
+ "una": "1"
+ },
+ {
+ "un": "1"
+ }
]
}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dateparser-0.7.1/dateparser/data/date_translation_data/cs.py new/dateparser-0.7.2/dateparser/data/date_translation_data/cs.py
--- old/dateparser-0.7.1/dateparser/data/date_translation_data/cs.py 2019-02-12 22:42:27.000000000 +0100
+++ new/dateparser-0.7.2/dateparser/data/date_translation_data/cs.py 2019-09-17 12:57:56.000000000 +0200
@@ -76,7 +76,8 @@
"wednesday": [
"středa",
"st",
- "Stř"
+ "Stř",
+ "Středu"
],
"thursday": [
"čtvrtek",
@@ -91,12 +92,14 @@
"saturday": [
"sobota",
"so",
- "Sob"
+ "Sob",
+ "Sobotu"
],
"sunday": [
"neděle",
"ne",
- "Ned"
+ "Ned",
+ "Neděli"
],
"am": [
"dop"
@@ -107,7 +110,8 @@
"year": [
"rok",
"r",
- "roků"
+ "roků",
+ "roky"
],
"month": [
"měsíc",
@@ -118,7 +122,8 @@
"week": [
"týden",
"týd",
- "týdnů"
+ "týdnů",
+ "týdny"
],
"day": [
"den",
@@ -130,17 +135,23 @@
"h",
"hodin",
"hodiny",
+ "hodinu",
"hodinami"
],
"minute": [
"minuta",
"min",
- "minut"
+ "minut",
+ "minuty"
],
"second": [
"sekunda",
"s",
- "sekundy"
+ "sekundy",
+ "sekund",
+ "vteřina",
+ "vteřin",
+ "vteřiny"
],
"relative-type": {
"1 year ago": [
@@ -289,6 +300,7 @@
"před"
],
"in": [
- "ve"
+ "ve",
+ "v"
]
}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dateparser-0.7.1/dateparser/data/date_translation_data/en.py new/dateparser-0.7.2/dateparser/data/date_translation_data/en.py
--- old/dateparser-0.7.1/dateparser/data/date_translation_data/en.py 2019-02-12 22:42:27.000000000 +0100
+++ new/dateparser-0.7.2/dateparser/data/date_translation_data/en.py 2019-09-17 12:57:56.000000000 +0200
@@ -782,6 +782,39 @@
},
{
"less than 1 minute ago": "45 second ago"
+ },
+ {
+ "two": "2"
+ },
+ {
+ "three": "3"
+ },
+ {
+ "four": "4"
+ },
+ {
+ "five": "5"
+ },
+ {
+ "six": "6"
+ },
+ {
+ "seven": "7"
+ },
+ {
+ "eight": "8"
+ },
+ {
+ "nine": "9"
+ },
+ {
+ "ten": "10"
+ },
+ {
+ "eleven": "11"
+ },
+ {
+ "twelve": "12"
}
]
}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dateparser-0.7.1/dateparser/date.py new/dateparser-0.7.2/dateparser/date.py
--- old/dateparser-0.7.1/dateparser/date.py 2019-02-12 22:42:27.000000000 +0100
+++ new/dateparser-0.7.2/dateparser/date.py 2019-09-17 12:57:56.000000000 +0200
@@ -17,6 +17,12 @@
from dateparser.timezone_parser import pop_tz_offset_from_string
from dateparser.utils import apply_timezone_from_settings
+try:
+ # Python 3
+ from collections.abc import Set
+except ImportError:
+ # Python 2.7
+ from collections import Set
APOSTROPHE_LOOK_ALIKE_CHARS = [
u'\N{RIGHT SINGLE QUOTATION MARK}', # u'\u2019'
@@ -33,6 +39,7 @@
RE_NBSP = re.compile(u'\xa0', flags=re.UNICODE)
RE_SPACES = re.compile(r'\s+')
RE_TRIM_SPACES = re.compile(r'^\s+(\S.*?)\s+$')
+RE_TRIM_COLONS = re.compile(r'(\S.*?):*$')
RE_SANITIZE_SKIP = re.compile(r'\t|\n|\r|\u00bb|,\s\u0432|\u200e|\xb7|\u200f|\u064e|\u064f', flags=re.M)
RE_SANITIZE_RUSSIAN = re.compile(r'([\W\d])\u0433\.', flags=re.I | re.U)
@@ -107,6 +114,7 @@
date_string = sanitize_spaces(date_string)
date_string = RE_SANITIZE_PERIOD.sub('', date_string)
date_string = RE_SANITIZE_ON.sub(r'\1', date_string)
+ date_string = RE_TRIM_COLONS.sub(r'\1', date_string)
date_string = RE_SANITIZE_APOSTROPHE.sub(u"'", date_string)
@@ -130,6 +138,9 @@
:returns: :class:`datetime.datetime`, dict or None
"""
+ if isinstance(date_formats, six.string_types):
+ warn(_DateLocaleParser.DATE_FORMATS_ERROR_MESSAGE, FutureWarning)
+ date_formats = [date_formats]
period = 'day'
for date_format in date_formats:
try:
@@ -163,7 +174,7 @@
if isinstance(date_formats, six.string_types):
warn(self.DATE_FORMATS_ERROR_MESSAGE, FutureWarning)
date_formats = [date_formats]
- elif not (date_formats is None or isinstance(date_formats, (list, tuple, collections.Set))):
+ elif not (date_formats is None or isinstance(date_formats, (list, tuple, Set))):
raise TypeError(self.DATE_FORMATS_ERROR_MESSAGE)
self.locale = locale
@@ -202,9 +213,10 @@
def _try_parser(self):
_order = self._settings.DATE_ORDER
+ _default_date_order = self._settings._pyfile_data.get('DATE_ORDER')
try:
if self._settings.PREFER_LOCALE_DATE_ORDER:
- if self._settings._default:
+ if _order == _default_date_order:
self._settings.DATE_ORDER = self.locale.info.get('date_order', _order)
date_obj, period = date_parser.parse(
self._get_translated_date(), settings=self._settings)
@@ -264,7 +276,7 @@
return False
if not date_obj['date_obj']:
return False
- if date_obj['period'] not in ('day', 'week', 'month', 'year'):
+ if date_obj['period'] not in ('time', 'day', 'week', 'month', 'year'):
return False
return True
@@ -317,10 +329,10 @@
def __init__(self, languages=None, locales=None, region=None, try_previous_locales=True,
use_given_order=False, settings=None):
- if not isinstance(languages, (list, tuple, collections.Set)) and languages is not None:
+ if not isinstance(languages, (list, tuple, Set)) and languages is not None:
raise TypeError("languages argument must be a list (%r given)" % type(languages))
- if not isinstance(locales, (list, tuple, collections.Set)) and locales is not None:
+ if not isinstance(locales, (list, tuple, Set)) and locales is not None:
raise TypeError("locales argument must be a list (%r given)" % type(locales))
if not isinstance(region, six.string_types) and region is not None:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dateparser-0.7.1/dateparser/languages/loader.py new/dateparser-0.7.2/dateparser/languages/loader.py
--- old/dateparser-0.7.1/dateparser/languages/loader.py 2019-02-12 22:42:27.000000000 +0100
+++ new/dateparser-0.7.2/dateparser/languages/loader.py 2019-09-17 12:57:56.000000000 +0200
@@ -70,7 +70,7 @@
:param use_given_order:
If True, the returned mapping is ordered in the order locales are given.
- :type allow_redetect_language: bool
+ :type use_given_order: bool
:param allow_conflicting_locales:
if True, locales with same language and different region can be loaded.
@@ -106,7 +106,7 @@
:param use_given_order:
If True, the returned mapping is ordered in the order locales are given.
- :type allow_redetect_language: bool
+ :type use_given_order: bool
:param allow_conflicting_locales:
if True, locales with same language and different region can be loaded.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dateparser-0.7.1/dateparser/languages/locale.py new/dateparser-0.7.2/dateparser/languages/locale.py
--- old/dateparser-0.7.1/dateparser/languages/locale.py 2019-02-12 22:42:27.000000000 +0100
+++ new/dateparser-0.7.2/dateparser/languages/locale.py 2019-09-17 12:57:56.000000000 +0200
@@ -8,7 +8,7 @@
from dateutil import parser
-from dateparser.timezone_parser import pop_tz_offset_from_string
+from dateparser.timezone_parser import pop_tz_offset_from_string, word_is_tz
from dateparser.utils import normalize_unicode, combine_dicts
from .dictionary import Dictionary, NormalizedDictionary, ALWAYS_KEEP_TOKENS
@@ -207,6 +207,10 @@
elif self._token_with_digits_is_ok(word):
translated_chunk.append(word)
original_chunk.append(original_tokens[i])
+ # Use original token because word_is_tz is case sensitive
+ elif translated_chunk and word_is_tz(original_tokens[i]):
+ translated_chunk.append(word)
+ original_chunk.append(original_tokens[i])
else:
if translated_chunk:
translated.append(translated_chunk)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dateparser-0.7.1/dateparser/parser.py new/dateparser-0.7.2/dateparser/parser.py
--- old/dateparser-0.7.1/dateparser/parser.py 2019-02-12 22:42:27.000000000 +0100
+++ new/dateparser-0.7.2/dateparser/parser.py 2019-09-17 12:57:56.000000000 +0200
@@ -276,6 +276,10 @@
setattr(self, attr, int(token))
def _get_period(self):
+ if self.settings.RETURN_TIME_AS_PERIOD:
+ if getattr(self, 'time', None):
+ return 'time'
+
for period in ['time', 'day']:
if getattr(self, period, None):
return 'day'
@@ -376,7 +380,10 @@
delta = timedelta(days=steps)
else:
if days[day_index] == day:
- steps = 7
+ if self.settings.PREFER_DATES_FROM == 'past':
+ steps = 7
+ else:
+ steps = 0
else:
while days[day_index] != day:
day_index -= 1
@@ -445,8 +452,9 @@
# correction for preference of day: beginning, current, end
dateobj = po._correct_for_day(dateobj)
+ period = po._get_period()
- return dateobj, po._get_period()
+ return dateobj, period
def _parse(self, type, token, fuzzy, skip_component=None):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dateparser-0.7.1/dateparser/search/search.py new/dateparser-0.7.2/dateparser/search/search.py
--- old/dateparser-0.7.1/dateparser/search/search.py 2019-02-12 22:42:27.000000000 +0100
+++ new/dateparser-0.7.2/dateparser/search/search.py 2019-09-17 12:57:56.000000000 +0200
@@ -5,7 +5,13 @@
from dateparser.date import DateDataParser
from dateparser.search.text_detection import FullTextLanguageDetector
import regex as re
-import collections
+
+try:
+ # Python 3
+ from collections.abc import Set
+except ImportError:
+ # Python 2.7
+ from collections import Set
RELATIVE_REG = re.compile("(ago|in|from now|tomorrow|today|yesterday)")
@@ -174,7 +180,7 @@
self.search = ExactLanguageSearch(self.loader)
def detect_language(self, text, languages):
- if isinstance(languages, (list, tuple, collections.Set)):
+ if isinstance(languages, (list, tuple, Set)):
if all([language in self.available_language_map for language in languages]):
languages = [self.available_language_map[language] for language in languages]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dateparser-0.7.1/dateparser/timezone_parser.py new/dateparser-0.7.2/dateparser/timezone_parser.py
--- old/dateparser-0.7.1/dateparser/timezone_parser.py 2019-02-12 22:42:27.000000000 +0100
+++ new/dateparser-0.7.2/dateparser/timezone_parser.py 2019-09-17 12:57:56.000000000 +0200
@@ -44,11 +44,15 @@
return date_string, None
+def word_is_tz(word):
+ return bool(_search_regex.match(word))
+
+
def convert_to_local_tz(datetime_obj, datetime_tz_offset):
return datetime_obj - datetime_tz_offset + local_tz_offset
-def get_tz_offsets():
+def build_tz_offsets(search_regex_parts):
def get_offset(tz_obj, regex, repl='', replw=''):
return (
@@ -62,11 +66,13 @@
for tz_info in timezone_info_list:
for regex in tz_info['regex_patterns']:
for tz_obj in tz_info['timezones']:
+ search_regex_parts.append(tz_obj[0])
yield get_offset(tz_obj, regex)
# alternate patterns
for replace, replacewith in tz_info.get('replace', []):
for tz_obj in tz_info['timezones']:
+ search_regex_parts.append(re.sub(replace, replacewith, tz_obj[0]))
yield get_offset(tz_obj, regex, repl=replace, replw=replacewith)
@@ -76,5 +82,7 @@
return offset
-_tz_offsets = list(get_tz_offsets())
+_search_regex_parts = []
+_tz_offsets = list(build_tz_offsets(_search_regex_parts))
+_search_regex = re.compile('|'.join(_search_regex_parts))
local_tz_offset = get_local_tz_offset()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dateparser-0.7.1/dateparser/timezones.py new/dateparser-0.7.2/dateparser/timezones.py
--- old/dateparser-0.7.1/dateparser/timezones.py 2019-02-12 22:42:27.000000000 +0100
+++ new/dateparser-0.7.2/dateparser/timezones.py 2019-09-17 12:57:56.000000000 +0200
@@ -32,6 +32,7 @@
('UTC\-04:00', -14400),
('UTC\-03:30', -12600),
('UTC\-03:00', -10800),
+ ('UTC\-02:30', -9000),
('UTC\-02:00', -7200),
('UTC\-01:00', -3600),
('UTC\+00:00', 0),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dateparser-0.7.1/dateparser/utils/strptime.py new/dateparser-0.7.2/dateparser/utils/strptime.py
--- old/dateparser-0.7.1/dateparser/utils/strptime.py 2019-02-12 22:42:27.000000000 +0100
+++ new/dateparser-0.7.2/dateparser/utils/strptime.py 2019-09-17 12:57:56.000000000 +0200
@@ -1,4 +1,8 @@
-import imp
+import sys
+if sys.version_info[0:2] < (3, 3):
+ import imp
+else:
+ import importlib.util
import regex as re
from datetime import datetime
@@ -21,14 +25,24 @@
For example, if system's locale is set to fr_FR. Parser won't recognize
any date since all languages are translated to english dates.
"""
-
- _strptime = imp.load_module(
- 'strptime_patched', *imp.find_module('_strptime')
- )
-
- _calendar = imp.load_module(
- 'calendar_patched', *imp.find_module('_strptime')
- )
+ if sys.version_info[0:2] < (3, 3):
+ _strptime = imp.load_module(
+ 'strptime_patched', *imp.find_module('_strptime')
+ )
+
+ _calendar = imp.load_module(
+ 'calendar_patched', *imp.find_module('_strptime')
+ )
+ else:
+ _strptime_spec = importlib.util.find_spec('_strptime')
+
+ _strptime = importlib.util.module_from_spec(_strptime_spec)
+ _strptime_spec.loader.exec_module(_strptime)
+ sys.modules['strptime_patched'] = _strptime
+
+ _calendar = importlib.util.module_from_spec(_strptime_spec)
+ _strptime_spec.loader.exec_module(_calendar)
+ sys.modules['calendar_patched'] = _calendar
_strptime._getlang = lambda: ('en_US', 'UTF-8')
_strptime.calendar = _calendar
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dateparser-0.7.1/dateparser.egg-info/PKG-INFO new/dateparser-0.7.2/dateparser.egg-info/PKG-INFO
--- old/dateparser-0.7.1/dateparser.egg-info/PKG-INFO 2019-02-12 22:44:08.000000000 +0100
+++ new/dateparser-0.7.2/dateparser.egg-info/PKG-INFO 2019-09-17 12:59:32.000000000 +0200
@@ -1,6 +1,6 @@
-Metadata-Version: 1.1
+Metadata-Version: 1.2
Name: dateparser
-Version: 0.7.1
+Version: 0.7.2
Summary: Date parsing library designed to parse dates from HTML pages
Home-page: https://github.com/scrapinghub/dateparser
Author: Scrapinghub
@@ -11,16 +11,16 @@
====================================================
.. image:: https://img.shields.io/travis/scrapinghub/dateparser/master.svg?style=flat-s...
- :target: https://travis-ci.org/scrapinghub/dateparser
- :alt: travis build status
+ :target: https://travis-ci.org/scrapinghub/dateparser
+ :alt: travis build status
.. image:: https://img.shields.io/pypi/v/dateparser.svg?style=flat-square
- :target: https://pypi.python.org/pypi/dateparser
- :alt: pypi version
+ :target: https://pypi.python.org/pypi/dateparser
+ :alt: pypi version
.. image:: https://readthedocs.org/projects/dateparser/badge/?version=latest
- :target: http://dateparser.readthedocs.org/en/latest/?badge=latest
- :alt: Documentation Status
+ :target: http://dateparser.readthedocs.org/en/latest/?badge=latest
+ :alt: Documentation Status
.. image:: https://codecov.io/gh/scrapinghub/dateparser/branch/master/graph/badge.svg
:target: https://codecov.io/gh/scrapinghub/dateparser
@@ -474,13 +474,13 @@
* Hijri/Islamic Calendar. For more information, refer to `Hijri Calendar https://en.wikipedia.org/wiki/Islamic_calendar`_.
- >>> from dateparser.calendars.jalali import JalaliCalendar
- >>> JalaliCalendar(u'جمعه سی ام اسفند ۱۳۸۷').get_date()
- {'date_obj': datetime.datetime(2009, 3, 20, 0, 0), 'period': 'day'}
-
- >>> from dateparser.calendars.hijri import HijriCalendar
- >>> HijriCalendar(u'17-01-1437 هـ 08:30 مساءً').get_date()
- {'date_obj': datetime.datetime(2015, 10, 30, 20, 30), 'period': 'day'}
+ >>> from dateparser.calendars.jalali import JalaliCalendar
+ >>> JalaliCalendar(u'جمعه سی ام اسفند ۱۳۸۷').get_date()
+ {'date_obj': datetime.datetime(2009, 3, 20, 0, 0), 'period': 'day'}
+
+ >>> from dateparser.calendars.hijri import HijriCalendar
+ >>> HijriCalendar(u'17-01-1437 هـ 08:30 مساءً').get_date()
+ {'date_obj': datetime.datetime(2015, 10, 30, 20, 30), 'period': 'day'}
.. note:: `HijriCalendar` has some limitations with Python 3.
.. note:: For `Finnish` language, please specify `settings={'SKIP_TOKENS': []}` to correctly parse freshness dates.
@@ -497,6 +497,30 @@
History
=======
+ 0.7.2 (2019-09-17)
+ ------------------
+
+ Features:
+
+ * Extended Czech support
+ * Added `time` to valid periods
+ * Added timezone information to dates found with `search_dates()`
+ * Support strings as date formats
+
+
+ Improvements:
+
+ * Fixed Collections ABCs depreciation warning
+ * Fixed dates with trailing colons not being parsed
+ * Fixed date format override on any settings change
+ * Fixed parsing current weekday as past date, regardless of settings
+ * Added UTC -2:30 as a valid offset
+ * Added Python 3.7 to supported versions, dropped support for Python 3.3 and 3.4
+ * Moved to importlib from imp where possible
+ * Improved support for Catalan
+ * Documentation improvements
+
+
0.7.1 (2019-02-12)
------------------
@@ -744,9 +768,9 @@
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.3
-Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
+Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
+Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dateparser-0.7.1/dateparser_data/settings.py new/dateparser-0.7.2/dateparser_data/settings.py
--- old/dateparser-0.7.1/dateparser_data/settings.py 2019-02-12 22:42:27.000000000 +0100
+++ new/dateparser-0.7.2/dateparser_data/settings.py 2019-09-17 12:57:56.000000000 +0200
@@ -12,5 +12,6 @@
'DATE_ORDER': 'MDY',
'PREFER_LOCALE_DATE_ORDER': True,
'FUZZY': False,
- 'STRICT_PARSING': False
+ 'STRICT_PARSING': False,
+ 'RETURN_TIME_AS_PERIOD': False,
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dateparser-0.7.1/docs/dateparser.calendars.rst new/dateparser-0.7.2/docs/dateparser.calendars.rst
--- old/dateparser-0.7.1/docs/dateparser.calendars.rst 2019-02-12 22:42:27.000000000 +0100
+++ new/dateparser-0.7.2/docs/dateparser.calendars.rst 2019-09-17 12:57:56.000000000 +0200
@@ -9,13 +9,12 @@
----------------------------------
.. automodule:: dateparser.calendars.jalali
- :members: JalaliParser
- :show-inheritance:
+ :members: JalaliParser
+ :show-inheritance:
Module contents
---------------
.. automodule:: dateparser.calendars
- :members:
- :show-inheritance:
-
+ :members:
+ :show-inheritance:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dateparser-0.7.1/docs/dateparser.languages.rst new/dateparser-0.7.2/docs/dateparser.languages.rst
--- old/dateparser-0.7.1/docs/dateparser.languages.rst 2019-02-12 22:42:27.000000000 +0100
+++ new/dateparser-0.7.2/docs/dateparser.languages.rst 2019-09-17 12:57:56.000000000 +0200
@@ -8,47 +8,47 @@
-------------------------------------
.. automodule:: dateparser.languages.detection
- :members:
- :undoc-members:
- :show-inheritance:
+ :members:
+ :undoc-members:
+ :show-inheritance:
dateparser.languages.dictionary module
--------------------------------------
.. automodule:: dateparser.languages.dictionary
- :members:
- :undoc-members:
- :show-inheritance:
+ :members:
+ :undoc-members:
+ :show-inheritance:
dateparser.languages.language module
------------------------------------
.. automodule:: dateparser.languages.language
- :members:
- :undoc-members:
- :show-inheritance:
+ :members:
+ :undoc-members:
+ :show-inheritance:
dateparser.languages.loader module
----------------------------------
.. automodule:: dateparser.languages.loader
- :members:
- :undoc-members:
- :show-inheritance:
+ :members:
+ :undoc-members:
+ :show-inheritance:
dateparser.languages.validation module
--------------------------------------
.. automodule:: dateparser.languages.validation
- :members:
- :undoc-members:
- :show-inheritance:
+ :members:
+ :undoc-members:
+ :show-inheritance:
Module contents
---------------
.. automodule:: dateparser.languages
- :members:
- :undoc-members:
- :show-inheritance:
+ :members:
+ :undoc-members:
+ :show-inheritance:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dateparser-0.7.1/docs/dateparser.rst new/dateparser-0.7.2/docs/dateparser.rst
--- old/dateparser-0.7.1/docs/dateparser.rst 2019-02-12 22:42:27.000000000 +0100
+++ new/dateparser-0.7.2/docs/dateparser.rst 2019-09-17 12:57:56.000000000 +0200
@@ -16,63 +16,63 @@
----------------------
.. automodule:: dateparser.conf
- :members:
- :undoc-members:
- :show-inheritance:
+ :members:
+ :undoc-members:
+ :show-inheritance:
dateparser.date module
----------------------
.. automodule:: dateparser.date
- :members:
- :undoc-members:
- :show-inheritance:
+ :members:
+ :undoc-members:
+ :show-inheritance:
dateparser.date_parser module
-----------------------------
.. automodule:: dateparser.date_parser
- :members:
- :undoc-members:
- :show-inheritance:
+ :members:
+ :undoc-members:
+ :show-inheritance:
dateparser.freshness_date_parser module
---------------------------------------
.. automodule:: dateparser.freshness_date_parser
- :members:
- :undoc-members:
- :show-inheritance:
+ :members:
+ :undoc-members:
+ :show-inheritance:
dateparser.timezone_parser module
---------------------------------
.. automodule:: dateparser.timezone_parser
- :members:
- :undoc-members:
- :show-inheritance:
+ :members:
+ :undoc-members:
+ :show-inheritance:
dateparser.timezones module
---------------------------
.. automodule:: dateparser.timezones
- :members:
- :undoc-members:
- :show-inheritance:
+ :members:
+ :undoc-members:
+ :show-inheritance:
dateparser.utils module
-----------------------
.. automodule:: dateparser.utils
- :members:
- :undoc-members:
- :show-inheritance:
+ :members:
+ :undoc-members:
+ :show-inheritance:
Module contents
---------------
.. automodule:: dateparser
- :members:
- :undoc-members:
- :show-inheritance:
+ :members:
+ :undoc-members:
+ :show-inheritance:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dateparser-0.7.1/docs/template.rst new/dateparser-0.7.2/docs/template.rst
--- old/dateparser-0.7.1/docs/template.rst 2019-02-12 22:42:27.000000000 +0100
+++ new/dateparser-0.7.2/docs/template.rst 2019-09-17 12:57:56.000000000 +0200
@@ -5,77 +5,77 @@
.. sourcecode:: none
- two-letter language code as defined in ISO-639-1 (https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes). e.g. for English - en:
- name: language name (e.g. English)
- no_word_spacing: False (set to True for languages that do not use spaces between words)
-
- skip: ["words", "to", "skip", "such", "as", "and", "or", "at"]
-
- pertain: []
-
- monday:
- - name for Monday
- - abbreviation for Monday
- tuesday:
- - as above
- wednesday:
- - as above
- thursday:
- - as above
- friday:
- - as above
- saturday:
- - as above
- sunday:
- - as above
-
- january:
- - name for January
- - abbreviation for January
- february:
- - as above
- march:
- - as above
- april:
- - as above
- may:
- - as above
- june:
- - as above
- july:
- - as above
- august:
- - as above
- september:
- - as above
- october:
- - as above
- november:
- - as above
- december:
- - as above
-
- year:
- - name for year
- - abbreviation for year
- month:
- - as above
- week:
- - as above
- day:
- - as above
- hour:
- - as above
- minute:
- - as above
- second:
- - as above
-
- ago:
- - words that stand
- - for "ago"
-
- simplifications:
- - word: replacement
- - regex: replacement
- - day before yesterday: 2 days ago
+ two-letter language code as defined in ISO-639-1 (https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes). e.g. for English - en:
+ name: language name (e.g. English)
+ no_word_spacing: False (set to True for languages that do not use spaces between words)
+
+ skip: ["words", "to", "skip", "such", "as", "and", "or", "at"]
+
+ pertain: []
+
+ monday:
+ - name for Monday
+ - abbreviation for Monday
+ tuesday:
+ - as above
+ wednesday:
+ - as above
+ thursday:
+ - as above
+ friday:
+ - as above
+ saturday:
+ - as above
+ sunday:
+ - as above
+
+ january:
+ - name for January
+ - abbreviation for January
+ february:
+ - as above
+ march:
+ - as above
+ april:
+ - as above
+ may:
+ - as above
+ june:
+ - as above
+ july:
+ - as above
+ august:
+ - as above
+ september:
+ - as above
+ october:
+ - as above
+ november:
+ - as above
+ december:
+ - as above
+
+ year:
+ - name for year
+ - abbreviation for year
+ month:
+ - as above
+ week:
+ - as above
+ day:
+ - as above
+ hour:
+ - as above
+ minute:
+ - as above
+ second:
+ - as above
+
+ ago:
+ - words that stand
+ - for "ago"
+
+ simplifications:
+ - word: replacement
+ - regex: replacement
+ - day before yesterday: 2 days ago
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dateparser-0.7.1/docs/usage.rst new/dateparser-0.7.2/docs/usage.rst
--- old/dateparser-0.7.1/docs/usage.rst 2019-02-12 22:42:27.000000000 +0100
+++ new/dateparser-0.7.2/docs/usage.rst 2019-09-17 12:57:56.000000000 +0200
@@ -139,6 +139,13 @@
>>> parse(u'March', settings={'STRICT_PARSING': True})
None
+``RETURN_TIME_AS_PERIOD`` returns `time` as period in date object, if time component was present in date string.
+Defaults to `False`.
+
+ >>> ddp = DateDataParser(settings={'RETURN_TIME_AS_PERIOD': True})
+ >>> ddp.get_date_data(u'vr jan 24, 2014 12:49')
+ {'date_obj': datetime.datetime(2014, 1, 24, 12, 49), 'period': 'time', 'locale': 'nl'}
+
Language Detection
++++++++++++++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dateparser-0.7.1/setup.py new/dateparser-0.7.2/setup.py
--- old/dateparser-0.7.1/setup.py 2019-02-12 22:42:27.000000000 +0100
+++ new/dateparser-0.7.2/setup.py 2019-09-17 12:57:56.000000000 +0200
@@ -37,6 +37,7 @@
license="BSD",
zip_safe=False,
keywords='dateparser',
+ python_requires='>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*',
classifiers=[
'Development Status :: 2 - Pre-Alpha',
'Intended Audience :: Developers',
@@ -45,10 +46,9 @@
"Programming Language :: Python :: 2",
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3',
- 'Programming Language :: Python :: 3.3',
- 'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
+ 'Programming Language :: Python :: 3.7',
'Programming Language :: Python :: Implementation :: CPython',
'Programming Language :: Python :: Implementation :: PyPy'
],
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dateparser-0.7.1/tests/test_date.py new/dateparser-0.7.2/tests/test_date.py
--- old/dateparser-0.7.1/tests/test_date.py 2019-02-12 22:42:27.000000000 +0100
+++ new/dateparser-0.7.2/tests/test_date.py 2019-09-17 12:57:56.000000000 +0200
@@ -287,6 +287,15 @@
month=expected_month,
day=get_last_day_of_month(expected_year, expected_month)))
+ @parameterized.expand([
+ param(date_string='25-03-14', date_formats='%d-%m-%y', expected_result=datetime(2014, 3, 25)),
+ ])
+ def test_should_support_a_string_as_date_formats(self, date_string, date_formats, expected_result):
+ self.when_date_is_parsed_with_formats(date_string, date_formats)
+ self.then_date_was_parsed()
+ self.then_parsed_period_is('day')
+ self.then_parsed_date_is(expected_result)
+
def given_now(self, year, month, day, **time):
now = datetime(year, month, day, **time)
datetime_mock = Mock(wraps=datetime)
@@ -638,6 +647,10 @@
self.assertEqual(date.sanitize_date(u'2005 г.'), u'2005 ')
self.assertEqual(date.sanitize_date(u'Авг.'), u'Авг')
+ def test_sanitize_date_colons(self):
+ self.assertEqual(date.sanitize_date(u'2019:'), u'2019')
+ self.assertEqual(date.sanitize_date(u'31/07/2019:'), u'31/07/2019')
+
class TestDateLocaleParser(BaseTestCase):
def setUp(self):
@@ -650,6 +663,7 @@
param(date_obj={'period': 'hour'}),
param(date_obj=[datetime(2007, 1, 22, 0, 0), 'day']),
param(date_obj={'date_obj': None, 'period': 'day'}),
+ param(date_obj={'date': datetime(2018, 1, 10, 2, 0), 'period': 'time'}),
])
def test_is_valid_date_obj(self, date_obj):
self.given_parser(language=['en'], date_string='10 jan 2000',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dateparser-0.7.1/tests/test_date_parser.py new/dateparser-0.7.2/tests/test_date_parser.py
--- old/dateparser-0.7.1/tests/test_date_parser.py 2019-02-12 22:42:27.000000000 +0100
+++ new/dateparser-0.7.2/tests/test_date_parser.py 2019-09-17 12:57:56.000000000 +0200
@@ -121,7 +121,7 @@
# Vietnamese dates
param('Thứ năm', datetime(2012, 11, 8)), # Thursday
param('Thứ sáu', datetime(2012, 11, 9)), # Friday
- param('Tháng Mười Hai 29, 2013, 14:14', datetime(2013, 12, 29, 14, 14)), # bpsosrcs.wordpress.com
+ param('Tháng Mười Hai 29, 2013, 14:14', datetime(2013, 12, 29, 14, 14)), # bpsosrcs.wordpress.com # NOQA
param('05 Tháng một 2015 - 03:54 AM', datetime(2015, 1, 5, 3, 54)),
# Belarusian dates
param('11 траўня', datetime(2012, 5, 11)),
@@ -133,7 +133,7 @@
param('2015-кві-12', datetime(2015, 4, 12)),
param('21 чер 2013 3:13', datetime(2013, 6, 21, 3, 13)),
param('12 лютого 2012, 13:12:23', datetime(2012, 2, 12, 13, 12, 23)),
- param('вів о 14:04', datetime(2012, 11, 6, 14, 4)),
+ param('вів о 14:04', datetime(2012, 11, 13, 14, 4)),
# Tagalog dates
param('12 Hulyo 2003 13:01', datetime(2003, 7, 12, 13, 1)),
param('1978, 1 Peb, 7:05 PM', datetime(1978, 2, 1, 19, 5)),
@@ -291,7 +291,7 @@
# Vietnamese dates
param('Thứ năm', datetime(2012, 11, 8)), # Thursday
param('Thứ sáu', datetime(2012, 11, 9)), # Friday
- param('Tháng Mười Hai 29, 2013, 14:14', datetime(2013, 12, 29, 14, 14)), # bpsosrcs.wordpress.com
+ param('Tháng Mười Hai 29, 2013, 14:14', datetime(2013, 12, 29, 14, 14)), # bpsosrcs.wordpress.com # NOQA
param('05 Tháng một 2015 - 03:54 AM', datetime(2015, 1, 5, 3, 54)),
# Belarusian dates
param('11 траўня', datetime(2012, 5, 11)),
@@ -303,7 +303,7 @@
param('2015-кві-12', datetime(2015, 4, 12)),
param('21 чер 2013 3:13', datetime(2013, 6, 21, 3, 13)),
param('12 лютого 2012, 13:12:23', datetime(2012, 2, 12, 13, 12, 23)),
- param('вів о 14:04', datetime(2012, 11, 6, 14, 4)),
+ param('вів о 14:04', datetime(2012, 11, 13, 14, 4)),
# Filipino dates
param('12 Hulyo 2003 13:01', datetime(2003, 7, 12, 13, 1)),
param('1978, 1 Peb, 7:05 PM', datetime(1978, 2, 1, 19, 5)),
@@ -433,6 +433,7 @@
param('March', datetime(2014, 3, 15)),
param('Friday', datetime(2015, 2, 13)),
param('Monday', datetime(2015, 2, 9)),
+ param('Sunday', datetime(2015, 2, 8)), # current day
param('10:00PM', datetime(2015, 2, 14, 22, 0)),
param('16:10', datetime(2015, 2, 14, 16, 10)),
param('14:05', datetime(2015, 2, 15, 14, 5)),
@@ -451,6 +452,7 @@
param('10 December', datetime(2015, 12, 10)),
param('March', datetime(2015, 3, 15)),
param('Friday', datetime(2015, 2, 20)),
+ param('Sunday', datetime(2015, 2, 22)), # current day
param('Monday', datetime(2015, 2, 16)),
param('10:00PM', datetime(2015, 2, 15, 22, 0)),
param('16:10', datetime(2015, 2, 15, 16, 10)),
@@ -470,6 +472,7 @@
param('10 December', datetime(2015, 12, 10)),
param('March', datetime(2015, 3, 15)),
param('Friday', datetime(2015, 2, 13)),
+ param('Sunday', datetime(2015, 2, 15)), # current weekday
param('10:00PM', datetime(2015, 2, 15, 22, 00)),
param('16:10', datetime(2015, 2, 15, 16, 10)),
param('14:05', datetime(2015, 2, 15, 14, 5)),
@@ -606,6 +609,60 @@
self.then_period_is(period)
@parameterized.expand([
+ param('12th December 2019 19:00', expected=datetime(2019, 12, 12, 19, 0), period='time'),
+ param('9 Jan 11 0:00', expected=datetime(2011, 1, 9, 0, 0), period='time'),
+ ])
+ def test_period_is_time_if_return_time_as_period_setting_applied_and_time_component_present(
+ self, date_string, expected=None, period=None
+ ):
+ self.given_parser(settings={'RETURN_TIME_AS_PERIOD': True})
+ self.when_date_is_parsed(date_string)
+ self.then_date_was_parsed_by_date_parser()
+ self.then_date_obj_exactly_is(expected)
+ self.then_period_is(period)
+
+ @parameterized.expand([
+ param('16:00', expected=datetime(2018, 12, 13, 16, 0), period='time'),
+ param('Monday 7:15 AM', expected=datetime(2018, 12, 10, 7, 15), period='time'),
+ ])
+ def test_period_is_time_if_return_time_as_period_and_relative_base_settings_applied_and_time_component_present(
+ self, date_string, expected=None, period=None
+ ):
+ self.given_parser(settings={'RETURN_TIME_AS_PERIOD': True,
+ 'RELATIVE_BASE': datetime(2018, 12, 13, 15, 15)})
+ self.when_date_is_parsed(date_string)
+ self.then_date_was_parsed_by_date_parser()
+ self.then_date_obj_exactly_is(expected)
+ self.then_period_is(period)
+
+ @parameterized.expand([
+ param('12th March 2010', expected=datetime(2010, 3, 12, 0, 0), period='day'),
+ param('21-12-19', expected=datetime(2019, 12, 21, 0, 0), period='day'),
+ ])
+ def test_period_is_day_if_return_time_as_period_setting_applied_and_time_component_is_not_present(
+ self, date_string, expected=None, period=None
+ ):
+ self.given_parser(settings={'RETURN_TIME_AS_PERIOD': True})
+ self.when_date_is_parsed(date_string)
+ self.then_date_was_parsed_by_date_parser()
+ self.then_date_obj_exactly_is(expected)
+ self.then_period_is(period)
+
+ @parameterized.expand([
+ param('16:00', expected=datetime(2017, 1, 10, 16, 0), period='day'),
+ param('Monday 7:15 AM', expected=datetime(2017, 1, 9, 7, 15), period='day'),
+ ])
+ def test_period_is_day_if_return_time_as_period_setting_not_applied(
+ self, date_string, expected=None, period=None
+ ):
+ self.given_parser(settings={'RETURN_TIME_AS_PERIOD': False,
+ 'RELATIVE_BASE': datetime(2017, 1, 10, 15, 15)})
+ self.when_date_is_parsed(date_string)
+ self.then_date_was_parsed_by_date_parser()
+ self.then_date_obj_exactly_is(expected)
+ self.then_period_is(period)
+
+ @parameterized.expand([
param('15-12-18 06:00', expected=datetime(2015, 12, 18, 6, 0), order='YMD'),
param('15-18-12 06:00', expected=datetime(2015, 12, 18, 6, 0), order='YDM'),
param('10-11-12 06:00', expected=datetime(2012, 10, 11, 6, 0), order='MDY'),
@@ -630,6 +687,21 @@
self.when_date_is_parsed(date_string)
self.then_date_was_parsed_by_date_parser()
self.then_date_obj_exactly_is(expected)
+
+ @parameterized.expand([
+ param('10.1.2019', expected=datetime(2019, 1, 10, 0, 0), languages=['de'],
+ settings={'PREFER_DAY_OF_MONTH': 'first'}),
+ param('10.1.2019', expected=datetime(2019, 1, 10, 0, 0), languages=['de']),
+ param('10.1.2019', expected=datetime(2019, 10, 1, 0, 0),
+ settings={'DATE_ORDER': 'MDY'}),
+ ])
+ def test_if_settings_provided_date_order_is_retained(
+ self, date_string, expected=None, languages=None, settings=None
+ ):
+ self.given_parser(languages=languages, settings=settings)
+ self.when_date_is_parsed(date_string)
+ self.then_date_was_parsed_by_date_parser()
+ self.then_date_obj_exactly_is(expected)
def given_local_tz_offset(self, offset):
self.add_patch(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dateparser-0.7.1/tests/test_freshness_date_parser.py new/dateparser-0.7.2/tests/test_freshness_date_parser.py
--- old/dateparser-0.7.1/tests/test_freshness_date_parser.py 2019-02-12 22:42:27.000000000 +0100
+++ new/dateparser-0.7.2/tests/test_freshness_date_parser.py 2019-09-17 12:57:56.000000000 +0200
@@ -59,6 +59,12 @@
ago={'years': 1, 'months': 1, 'weeks': 1, 'days': 1, 'hours': 1, 'minutes': 1},
period='day'),
param('just now', ago={'seconds': 0}, period='day'),
+ # Fix for #291, work till one to twelve only
+ param('nine hours ago', ago={'hours': 9}, period='day'),
+ param('three week ago', ago={'weeks': 3}, period='week'),
+ param('eight months ago', ago={'months': 8}, period='month'),
+ param('six days ago', ago={'days': 6}, period='day'),
+ param('five years ago', ago={'years': 5}, period='year'),
# French dates
param("Aujourd'hui", ago={'days': 0}, period='day'),
@@ -176,6 +182,9 @@
param('1 rok 11 měsíců', ago={'years': 1, 'months': 11}, period='month'),
param('3 dny', ago={'days': 3}, period='day'),
param('3 hodiny', ago={'hours': 3}, period='day'),
+ param('2 roky, 2 týdny, 1 den, 1 hodinu, 5 vteřin před',
+ ago={'years': 2, 'weeks': 2, 'days': 1, 'hours': 1, 'seconds': 5},
+ period='day'),
param('1 rok, 1 měsíc, 1 týden, 1 den, 1 hodina, 1 minuta před',
ago={'years': 1, 'months': 1, 'weeks': 1, 'days': 1, 'hours': 1, 'minutes': 1},
period='day'),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dateparser-0.7.1/tests/test_languages.py new/dateparser-0.7.2/tests/test_languages.py
--- old/dateparser-0.7.1/tests/test_languages.py 2019-02-12 22:42:27.000000000 +0100
+++ new/dateparser-0.7.2/tests/test_languages.py 2019-09-17 12:57:56.000000000 +0200
@@ -1107,6 +1107,10 @@
param('ca', "d'aquí a 22 hores", "in 22 hour"),
param('ca', "fa 17 anys", "17 year ago"),
param('ca', "el mes passat", "1 month ago"),
+ param('ca', "la pròxima setmana", "in 1 week"),
+ param('ca', "despús-ahir", "2 day ago"),
+ param('ca', "en un dia", "in 1 day"),
+ param('ca', "demà passat", "in 2 day"),
# ce
param('ce', "72 сахьт даьлча", "in 72 hour"),
param('ce', "42 шо хьалха", "42 year ago"),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dateparser-0.7.1/tests/test_search.py new/dateparser-0.7.2/tests/test_search.py
--- old/dateparser-0.7.1/tests/test_search.py 2019-02-12 22:42:27.000000000 +0100
+++ new/dateparser-0.7.2/tests/test_search.py 2019-09-17 12:57:56.000000000 +0200
@@ -2,6 +2,7 @@
from __future__ import unicode_literals
from parameterized import parameterized, param
from tests import BaseTestCase
+from dateparser.timezone_parser import StaticTzInfo
from dateparser.search.search import DateSearchWithDetection
from dateparser.search import search_dates
from dateparser.conf import Settings, apply_settings
@@ -34,6 +35,7 @@
@parameterized.expand([
param('en', "Sep 03 2014"),
param('en', "friday, 03 september 2014"),
+ param('en', 'Aug 06, 2018 05:05 PM CDT'),
# Chinese
param('zh', "1年11个月"),
param('zh', "1年11個月"),
@@ -267,6 +269,11 @@
[('July 13th', datetime.datetime(2000, 7, 13, 0, 0)),
('July 14th', datetime.datetime(2000, 7, 14, 0, 0))],
settings={'RELATIVE_BASE': datetime.datetime(2000, 1, 1)}),
+ param('en', 'last updated Aug 06, 2018 05:05 PM CDT',
+ [(
+ 'Aug 06, 2018 05:05 PM CDT',
+ datetime.datetime(2018, 8, 6, 17, 5, tzinfo=StaticTzInfo('CDT', datetime.timedelta(seconds=-18000))))],
+ settings={'RELATIVE_BASE': datetime.datetime(2000, 1, 1)}),
# Filipino / Tagalog
param('tl', 'Maraming namatay sa mga Hapon hanggang sila\'y sumuko noong Agosto 15, 1945.',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dateparser-0.7.1/tests/test_timezone_parser.py new/dateparser-0.7.2/tests/test_timezone_parser.py
--- old/dateparser-0.7.1/tests/test_timezone_parser.py 2019-02-12 22:42:27.000000000 +0100
+++ new/dateparser-0.7.2/tests/test_timezone_parser.py 2019-09-17 12:57:56.000000000 +0200
@@ -46,6 +46,8 @@
param('April 10, 2016 at 12:00:00 UTC-09:30', -9.5),
param('Thu, 24 Nov 2016 16:03:00 UT', 0),
param('Fri Sep 23 2016 10:34:51 GMT+0800 (CST)', 8),
+ param('2019-07-17T12:30:00.000-03:30', -3.5),
+ param('2019-07-17T12:30:00.000-02:30', -2.5),
])
def test_extracting_valid_offset(self, initial_string, expected_offset):
self.given_string(initial_string)