/usr/local/lib/python3.6/site-packages/dateutil/parser/__pycache__
NameSizeModeActions
isoparser.cpython-36.pyc112550644editdlrm
_parser.cpython-36.pyc408410644editdlrm
__init__.cpython-36.pyc20480644editdlrm
Edit: /usr/local/lib/python3.6/site-packages/dateutil/parser/__pycache__/isoparser.cpython-36.pyc (11255B)
3 8%Eg3@s|dZddlmZmZmZmZddlZddlmZddlm Z ddl Z ddl Z ddgZ dd Z Gd ddeZeZejZdS) z This module offers a parser for ISO-8601 strings It is intended to support all valid date, time and datetime formats per the ISO-8601 specification. ..versionadded:: 2.7.0 )datetime timedeltatimedateN)tz)wrapsisoparse isoparsercstfdd}|S)NcsztdfddttjrhyjdWn6tk rf}zd}tjt||WYdd}~XnX|f||S)NreadcsS)Nr )str_inr C/usr/local/lib/python3.6/site-packages/dateutil/parser/isoparser.pysz,_takes_ascii..func..asciiz5ISO-8601 strings should contain only ASCII characters)getattr isinstancesix text_typeencodeUnicodeEncodeError raise_from ValueError)selfr argskwargsemsg)f)r r funcs "z_takes_ascii..func)r)rrr )rr _takes_asciisrc@seZdZdddZeddZeddZedd Zedd d Zd Z dZ e j dZ ddZddZddZddZddZdddZdS)r NcCsD|dk r:t|dks(t|dks(|dkr0td|jd}||_dS) z :param sep: A single character that separates date and time portions. If ``None``, the parser will accept any single character. For strict ISO-8601 adherence, pass ``'T'``. N 0123456789z(Separator must be a single, non-numeric zASCII characterrz7Separator must be a single, non-numeric ASCII character)lenordrr_sep)rsepr r r __init__+s   zisoparser.__init__cCs|j|\}}t||kr^|jdks:|||d|jkrV||j||dd7}ntdt|dkr|ddkrd|d<t|tddSt|S)u Parse an ISO-8601 datetime string into a :class:`datetime.datetime`. An ISO-8601 datetime string consists of a date portion, followed optionally by a time portion - the date and time portions are separated by a single character separator, which is ``T`` in the official standard. Incomplete date formats (such as ``YYYY-MM``) may *not* be combined with a time portion. Supported date formats are: Common: - ``YYYY`` - ``YYYY-MM`` - ``YYYY-MM-DD`` or ``YYYYMMDD`` Uncommon: - ``YYYY-Www`` or ``YYYYWww`` - ISO week (day defaults to 0) - ``YYYY-Www-D`` or ``YYYYWwwD`` - ISO week and day The ISO week and day numbering follows the same logic as :func:`datetime.date.isocalendar`. Supported time formats are: - ``hh`` - ``hh:mm`` or ``hhmm`` - ``hh:mm:ss`` or ``hhmmss`` - ``hh:mm:ss.ssssss`` (Up to 6 sub-second digits) Midnight is a special case for `hh`, as the standard supports both 00:00 and 24:00 as a representation. The decimal separator can be either a dot or a comma. .. caution:: Support for fractional components other than seconds is part of the ISO-8601 standard, but is not currently implemented in this parser. Supported time zone offset formats are: - `Z` (UTC) - `±HH:MM` - `±HHMM` - `±HH` Offsets will be represented as :class:`dateutil.tz.tzoffset` objects, with the exception of UTC, which will be represented as :class:`dateutil.tz.tzutc`. Time zone offsets equivalent to UTC (such as `+00:00`) will also be represented as :class:`dateutil.tz.tzutc`. :param dt_str: A string or stream containing only an ISO-8601 datetime string :return: Returns a :class:`datetime.datetime` representing the string. Unspecified components default to their lowest value. .. warning:: As of version 2.7.0, the strictness of the parser should not be considered a stable part of the contract. Any valid ISO-8601 string that parses correctly with the default settings will continue to parse correctly in future versions, but invalid strings that currently fail (e.g. ``2017-01-01T00:00+00:00:00``) are not guaranteed to continue failing in future versions if they encode a valid date. .. versionadded:: 2.7.0 Nr z&String contains unknown ISO componentsr)days)_parse_isodater#r%_parse_isotimerrr)rdt_str componentsposr r r r;sK  zisoparser.isoparsecCs:|j|\}}|t|kr2tddj|jdt|S)z Parse the date portion of an ISO string. :param datestr: The string portion of an ISO string, without a separator :return: Returns a :class:`datetime.date` object zString contains unknown ISO zcomponents: {!r}r)r+r#rformatdecoder)rZdatestrr.r/r r r parse_isodates  zisoparser.parse_isodatecCs&|j|}|ddkrd|d<t|S)z Parse the time portion of an ISO string. :param timestr: The time portion of an ISO string, without a separator :return: Returns a :class:`datetime.time` object rr))r,r)rtimestrr.r r r parse_isotimes  zisoparser.parse_isotimeTcCs|j||dS)a Parse a valid ISO time zone string. See :func:`isoparser.isoparse` for details on supported formats. :param tzstr: A string representing an ISO time zone offset :param zero_as_utc: Whether to return :class:`dateutil.tz.tzutc` for zero-offset zones :return: Returns :class:`dateutil.tz.tzoffset` for offsets and :class:`dateutil.tz.tzutc` for ``Z`` and (if ``zero_as_utc`` is specified) offsets equivalent to UTC. ) zero_as_utc) _parse_tzstr)rtzstrr5r r r parse_tzstrszisoparser.parse_tzstr-:s [\.,]([0-9]+)c Cs*y |j|Stk r$|j|SXdS)N)_parse_isodate_commonr_parse_isodate_uncommon)rr-r r r r+s zisoparser._parse_isodatecCst|}dddg}|dkr"tdt|dd|d<d}||krJ||fS|||d|jk}|rl|d7}||dkrtdt|||d|d<|d7}||kr|r||fStd|r|||d|jkrtd|d7}||dkrtd t|||d|d<||dfS) Nr zISO string too shortrzInvalid common monthzInvalid ISO formatzInvalid separator in ISO stringzInvalid common day)r#rint _DATE_SEP)rr-len_strr.r/has_sepr r r r;s6   zisoparser._parse_isodate_commonc Cstt|dkrtdt|dd}|dd|jk}d|}|||ddkr|d7}t|||d}|d7}d}t||kr|||d|jk|krtd||7}t|||d}|d7}|j|||}nt||d krtd t|||d }|d 7}|dks.|d tj|krBtd d j||t|ddt |dd }|j |j |j g} | |fS)Nr=zISO string too shortrr Wr>z"Inconsistent use of dash separatorr(zInvalid ordinal dayimz {} for year {})r*) r#rr?r@_calculate_weekdatecalendarisleapr0rryearmonthday) rr-rHrBr/ZweeknoZdaynoZ base_dateZ ordinal_dayr.r r r r<s6  z!isoparser._parse_isodate_uncommoncCsd|kodkns&tdj|d|ko8dknsLtdj|t|dd}|t|jddd }|dd |d}|t|d S) a Calculate the day of corresponding to the ISO year-week-day calendar. This function is effectively the inverse of :func:`datetime.date.isocalendar`. :param year: The year in the ISO calendar :param week: The week in the ISO calendar - range is [1, 53] :param day: The day in the ISO calendar - range is [1 (MON), 7 (SUN)] :return: Returns a :class:`datetime.date` r6zInvalid week: {}zInvalid weekday: {}r r=r>)r*)rr0rr isocalendar)rrHweekrJZjan_4Zweek_1Z week_offsetr r r rE)s zisoparser._calculate_weekdatec Cst|}dddddg}d}d}|dkr.tdd}x8||koD|dkrl|d7}|||ddkr|j||d|d<|}P|dkr|||d|jkrd}|d7}n2|dkr|r|||d|jkrtd |d7}|d krt|||d||<|d7}|d kr6|jj||d}|s,q6|jddd }t|d d t|||<|t|j7}q6W||krtd |ddkrtdd|ddDrtd|S)Nrr r>zISO time too shortFrCs-+ZzTz#Inconsistent use of colon separatorr( zUnused components in ISO stringr)css|]}|dkVqdS)rNr ).0 componentr r r zsz+isoparser._parse_isotime..r=z#Hour may only be 24 at 24:00:00.000rU) r#rr6 _TIME_SEPr?_FRACTION_REGEXmatchgroupany) rr3rAr.r/comprBfracZus_strr r r r,JsH    zisoparser._parse_isotimecCs|dks|dkrtjSt|dkr*td|ddd kr@d}n|ddd krVd}ntd t|dd}t|dkrd}n&t||dd |jkrd ndd}|r|dkr|dkrtjS|d krtd|dkrtdtjd||d|dSdS)NZzr(rCrPz0Time zone offset must be 1, 3, 5 or 6 charactersrr r9+zTime zone offset requires signr=;z#Invalid minutes in time zone offsetz!Invalid hours in time zone offset<>r(rCrPrU)rUTCr#rr?rVtzoffset)rr7r5Zmulthoursminutesr r r r6s(  &zisoparser._parse_tzstr)N)T)T)__name__ __module__ __qualname__r'rrr2r4r8r@rVrecompilerWr+r;r<rEr,r6r r r r r *s  Y    ),!5)__doc__rrrrrFZdateutilr functoolsrrjr__all__robjectr ZDEFAULT_ISOPARSERrr r r r  s  w