bgaddlmZddlmZmZmZmZddlmZm Z m Z m Z m Z m Z mZmZGddeZGddZ d;d ed e ed e edfdede ee fdeededede ededefdZGddeeZed d ded fdededede edede ef dZeddddd d ded f dededed ed!ed"ed#edededede edede efd$Zed d ded fd edededede edede efd%Zed d ded fd d dededede edede efd&Zd d ded d'dededede edede ef d(ZGd)d*eeZed d ed fdedede edede ef d+Ze ddededed ed!ed"ed#ededede efd6Ze d=d ededede efd7Ze d=d d dedede efd8Zd dd9dedede efd:Zd S)?)timegm)datetime timedeltadatetzinfo)OptionalCallableTypeTupleDictAnycastoverloadcpeZdZUeed<eed<eed<deededeffd ZdeddfdZ d d Z xZ S) Queuedelta delta_delta delta_typect|d|_||_n||_d|_||_dS)Nr)super__init__rrr)selfrrr __class__s f/builddir/build/BUILD/cloudlinux-venv-1.0.7/venv/lib/python3.11/site-packages/testfixtures/datetime.pyrzQueue.__init__ sJ  =DJ*D  DJ D $returnNc&|dxx|z cc<dS)N)rrs r advance_nextzQueue.advance_nexts REr MockedCurrentc|d}|sE|xj|jz c_|tdi|j|jiz}|||S)Nrr)poprrrrappend)rinstancens rnextz Queue.nextsa88A;;  JJ$* *JJ9EE'DEEEA KKNNNrrr!) __name__ __module__ __qualname__float__annotations__strrrrr r' __classcell__rs@rrrs LLLOOO%huo%E%s%%%%%%)rrc eZdZUeed<eed<eed<eeed<eeed<dZ e ed< dd e d ed e d ed eef dZ e dZe ddZe ddZdfd ZfdZxZS)r! _mock_queue_mock_base_class _mock_class _mock_tzinfo_mock_date_typeN_correct_mock_typeFconcretequeuestrictr date_typec|rD||_|jdjd|_|r|n|j|_||_||_dSdS)Nr)r2 __bases__r3r4r5r6)clsr8r9r:rr;s r__init_subclass__zMockedCurrent.__init_subclass__+s]  ,#CO#&=#3#=a#@C %+Ecc1ECO%C "+C     , ,rcd|vst|dkrtd|jz|rt|d|jr|d}t |dd}|rH||jkr'td|jjd|d|j| d}|j r| |}n||i|}|j |dS) NrzCannot add using tzinfo on %srz Cannot add z with tzinfo of z as configured to use r) len TypeErrorr) isinstancer3getattrr5 ValueErrorrreplacer7r2r$)r?argskwr%instance_tzinfos raddzMockedCurrent.add:s r>>SYY]];clJKK K  (JtAw(<== (AwH%h$??O 9"c&666$*$.777#JZJZ$++4+88% <11(;;sD'B''H x(((((rrcR|j|j|i|dSN)r2clearrM)r?rJrKs rsetzMockedCurrent.setNs3 rc`|r tdi|}n|\}|j|dS)Nr)rr2r )r?rJrKrs rtickzMockedCurrent.tickSs>  OOOOEEFE $$U+++++rct|}|jr||}|SrO)r__add__r7)rotherr%rs rrUzMockedCurrent.__add__[s;77??5))  " 9..x88Hrcj||jurtj|g|Ri|S|j|i|SrO)r4r__new__r?rJrKrs rrXzMockedCurrent.__new__asM #/ ! !"577?3444444 4"3?D/B// /r)FNNNNrNr()r)r*r+rr-r rTZInforr7r boolr@ classmethodrMrQrSrUrXr/r0s@rr!r!"sg6""""$Z#''''#!$( , , , , ,  , Dz , , , ,))[)&[,,,[, 000000000rr!r=NF type_name mock_classdefault.rJrKrrrr;rr:c tttt||fidt |||| | |} |dkr|s|s|}| j|i|| S)NT)r8r9r:rr;rO)rr r!typerrM) r^r_r`rJrKrrrr;rr:r?s r mock_factoryrchs tM"D   E; 33 % % %  C w  D Jrc\eZdZee d#dededededededed ed d fd Zeed ed d fdZefdZee d#dededededededed ed d fdZ eed ed d fdZ efdZ ee d$de de de de de de de d d fdZ eede d d fdZ ed%fd Z edZ ed&ded efd Zed efd!Zd efd"ZxZS)' MockDateTime.yearmonthdayhourminutesecond microsecondrrNc dSrOr r?rfrgrhrirjrkrlrs rrMzMockDateTime.add  rr%cdSrOrr?r%s rrMzMockDateTime.add rc6tj|i|S)aI This will add the :class:`datetime.datetime` created from the supplied parameters to the queue of datetimes to be returned by :meth:`~MockDateTime.now` or :meth:`~MockDateTime.utcnow`. An instance of :class:`~datetime.datetime` may also be passed as a single positional argument. rrMrYs rrMzMockDateTime.add uww{D'B'''rc dSrOrrns rrQzMockDateTime.setrorcdSrOrrqs rrQzMockDateTime.setrrrc6tj|i|S)av This will set the :class:`datetime.datetime` created from the supplied parameters as the next datetime to be returned by :meth:`~MockDateTime.now` or :meth:`~MockDateTime.utcnow`, clearing out any datetimes in the queue. An instance of :class:`~datetime.datetime` may also be passed as a single positional argument. rrQrYs rrQzMockDateTime.set uww{D'B'''rdaysseconds microseconds millisecondsminuteshoursweekscdSrOrr?r{r|r}r~rrrs rrSzMockDateTime.tick  rrcdSrOrr?rs rrSzMockDateTime.tickrrrc6tj|i|S)a This method should be called either with a :class:`~datetime.timedelta` as a positional argument, or with keyword parameters that will be used to construct a :class:`~datetime.timedelta`. The :class:`~datetime.timedelta` will be used to advance the next datetime to be returned by :meth:`~MockDateTime.now` or :meth:`~MockDateTime.utcnow`. rrSrYs rrSzMockDateTime.tick uww|T(R(((rc ||j|j|j|j|j|j|j|jSrO) r4rfrgrhrirjrkrlrrqs rr7zMockDateTime._correct_mock_typesA M N L M O O  O   rtzc"tt|j}|M|jr||j|z }|||}||S)a~ :param tz: An optional timezone to apply to the returned time. If supplied, it must be an instance of a :class:`~datetime.tzinfo` subclass. This will return the next supplied or calculated datetime from the internal queue, rather than the actual current datetime. If `tz` is supplied, see :ref:`timezones`. NrC) rrr2r'r5 utcoffsetfromutcrIr7)r?rr%s rnowzMockDateTime.nows#/"6"6"8"899 > K#c&6&@&@&J&JJzz("2"2""2"="=>>H%%h///rctt|j}|j||j|z }|S)z This will return the next supplied or calculated datetime from the internal queue, rather than the actual current UTC datetime. If you care about timezones, see :ref:`timezones`. )rrr2r'r5rrqs rutcnowzMockDateTime.utcnowsJ#/"6"6"8"899   '#"2"<"` that can be used in place of the :func:`time.time` function but where the return value can be controlled. If a single positional argument of ``None`` is passed, then the queue of times to be returned will be empty and you will need to call :meth:`~MockTime.set` or :meth:`~MockTime.add` before calling the mock. If an instance of :class:`~datetime.datetime` is passed as a single positional argument, that will be used to create the first time returned. :param year: An optional year used to create the first time returned. :param month: An optional month used to create the first time. :param day: An optional day used to create the first time. :param hour: An optional hour used to create the first time. :param minute: An optional minute used to create the first time. :param second: An optional second used to create the first time. :param microsecond: An optional microsecond used to create the first time. :param delta: The size of the delta to use between values returned. If not specified, it will increase by 1 with each call to the mock. :param delta_type: The type of the delta to use between values returned. This can be any keyword parameter accepted by the :class:`~datetime.timedelta` constructor. The :meth:`~testfixtures.datetime.MockTime.add`, :meth:`~testfixtures.datetime.MockTime.set` and :meth:`~testfixtures.datetime.MockTime.tick` methods on the mock can be used to control the return values. rrBrNz+You don't want to use tzinfo with test_timerrr)rDrGrErr rrc)rrrJrKs rrr*s~T2~~TQ4GDGXt4T4TEFFF X H3T2! ! !    r)r=NNF)Nr{F)Nr|)....Nr|) calendarrrrrrr[typingrr r r r r rrlistrr!r.rtupler,r\rcrerrrrrrrrrrs@@@@@@@@@@@@MMMMMMMMMMMMMMMMMMMMD8C0C0C0C0C0C0C0C0\ $'sCx  cN   :@_____=(___D # $ :     ,   # $     : , " # $   :    ,  # $   :    , # $ X X X X X  X : X  X  ,X X X X vi2i2i2i2i2}di2i2i2X  $ :   (^           (^       (^        (^    5 5 5 5 5  5  (^ 5 5 5 5 p sssss}hsssl # ,  #              ,      # ,   # ,  %)I0 0 0 E0 c0 PTU]P^0 0 0 0 0 0 r