i [z$ddlZddlmZmZddZy)N)timezonetimedelta_secondsc|j?|dur0|dur!|jtj}nt dt d|dur|j tj}|j d}|dur||j dz }|jtjur|dz }|S|tt|jj|z }|S)a Generate an :RFC:`3339`-formatted timestamp from a :class:`datetime.datetime`. >>> from datetime import datetime >>> generate(datetime(2009,1,1,12,59,59,0,pytz.utc)) '2009-01-01T12:59:59Z' The timestamp will use UTC unless `utc=False` is specified, in which case it will use the timezone from the :class:`datetime.datetime`'s :attr:`tzinfo` parameter. >>> eastern = pytz.timezone('US/Eastern') >>> dt = eastern.localize(datetime(2009,1,1,12,59,59)) >>> generate(dt) '2009-01-01T17:59:59Z' >>> generate(dt, utc=False) '2009-01-01T12:59:59-05:00' Unless `accept_naive=True` is specified, the `datetime` must not be naive. >>> generate(datetime(2009,1,1,12,59,59,0)) Traceback (most recent call last): ... ValueError: naive datetime and accept_naive is False >>> generate(datetime(2009,1,1,12,59,59,0), accept_naive=True) '2009-01-01T12:59:59Z' If `accept_naive=True` is specified, the `datetime` is assumed to be UTC. Attempting to generate a local timestamp from a naive datetime will result in an error. >>> generate(datetime(2009,1,1,12,59,59,0), accept_naive=True, utc=False) Traceback (most recent call last): ... ValueError: cannot generate a local timestamp from a naive datetime T)tzinfoz7cannot generate a local timestamp from a naive datetimez(naive datetime and accept_naive is Falsez%Y-%m-%dT%H:%M:%Sz.%fZ) rreplacepytzutc ValueError astimezonestrftimerr utcoffset)dtr accept_naive microseconds timestamps 5/usr/lib/python3/dist-packages/pyrfc3339/generator.pygeneratersP yy 4 d{ZZtxxZ0 "455GH H d{ ]]488 $ /0ItR[[''  yyDHHS   X/ 0C0CB0GHII )TFF)r pyrfc3339.utilsrrrrrrs 7=r