U vig@sxddlmZddlmZmZddlmZmZddlm Z ddl m Z d e ee ee eej ee ddd Zd gZdS) )maxsize)IteratorOptional) Observableabc)MultipleAssignmentDisposable)CurrentThreadSchedulerN)startstopstep schedulerreturncs|dkr tn|}|dkrdn|}|dkr:|dkr:t|n |dkrNt||n t|||dtjtttjtjdfdd }t|S)aGenerates an observable sequence of integral numbers within a specified range, using the specified scheduler to send out observer messages. Examples: >>> res = range(10) >>> res = range(0, 10) >>> res = range(0, 10, 1) Args: start: The value of the first integer in the sequence. stop: [Optional] Generate number up to (exclusive) the stop value. Default is `sys.maxsize`. step: [Optional] The step to be used (default is 1). scheduler: The scheduler to schedule the values on. Returns: An observable sequence that contains a range of sequential integral numbers. N)observer scheduler_r csRp|ptttjtttddfdd t _ S)N)r iteratorr csLz*|s tt|j|d_Wntk rFYnXdS)N)state)AssertionErrorZon_nextnextschedule disposable StopIterationZ on_completed)r rZ _scheduleractionrsdK/opt/alt/python38/lib/python3.8/site-packages/reactivex/observable/range.pyr6s z)range_..subscribe..action) rZ singletonrr SchedulerBaserrintriterr)rrZrange_tr rr subscribe.s  zrange_..subscribe)N) rrangerZ ObserverBaserrrZDisposableBaser)r r r r _stopZ_stepr!rr rrange_ s   r$)NNN)sysrtypingrrZ reactivexrrZreactivex.disposablerZreactivex.schedulerrrrr$__all__rrrrs    =