PKM0D%&&simpy-3.0.5/contents.html SimPy 3.0.5 documentation

Documentation for SimPy

Contents:

SimPy home

SimPy in 10 Minutes

In this section, you’ll learn the basics of SimPy in just a few minutes. Afterwards, you will be able to implement a simple simulation using SimPy and you’ll be able to make an educated decision if SimPy is what you need. We’ll also give you some hints on how to proceed to implement more complex simulations.

Installation

SimPy is implemented in pure Python and has no dependencies. SimPy runs on Python 2 (>= 2.7) and Python 3 (>= 3.2). PyPy is also supported. If you have pip installed, just type

$ pip install simpy

and you are done.

Alternatively, you can download SimPy and install it manually. Extract the archive, open a terminal window where you extracted SimPy and type:

$ python setup.py install

You can now optionally run SimPy’s tests to see if everything works fine. You need pytest and mock for this:

$ python -c "import simpy; simpy.test()"

Upgrading from SimPy 2

If you are already familiar with SimPy 2, please read the Guide Porting from SimPy 2 to 3.

What’s Next

Now that you’ve installed SimPy, you probably want to simulate something. The next section will introduce you to SimPy’s basic concepts.

Basic Concepts

SimPy is a discrete-event simulation library. The behavior of active components (like vehicles, customers or messages) is modeled with processes. All processes live in an environment. They interact with the environment and with each other via events.

Processes are described by simple Python generators. You can call them process function or process method, depending on whether it is a normal function or method of a class. During their lifetime, they create events and yield them in order to wait for them to be triggered.

When a process yields an event, the process gets suspended. SimPy resumes the process, when the event occurs (we say that the event is triggered). Multiple processes can wait for the same event. SimPy resumes them in the same order in which they yielded that event.

An important event type is the Timeout. Events of this type are triggered after a certain amount of (simulated) time has passed. They allow a process to sleep (or hold its state) for the given time. A Timeout and all other events can be created by calling the appropriate method of the Environment that the process lives in (Environment.timeout() for example).

Our First Process

Our first example will be a car process. The car will alternately drive and park for a while. When it starts driving (or parking), it will print the current simulation time.

So let’s start:

>>> def car(env):
...     while True:
...         print('Start parking at %d' % env.now)
...         parking_duration = 5
...         yield env.timeout(parking_duration)
...
...         print('Start driving at %d' % env.now)
...         trip_duration = 2
...         yield env.timeout(trip_duration)

Our car process requires a reference to an Environment (env) in order to create new events. The car‘s behavior is described in an infinite loop. Remember, this function is a generator. Though it will never terminate, it will pass the control flow back to the simulation once a yield statement is reached. Once the yielded event is triggered (“it occurs”), the simulation will resume the function at this statement.

As I said before, our car switches between the states parking and driving. It announces its new state by printing a message and the current simulation time (as returned by the Environment.now property). It then calls the Environment.timeout() factory function to create a Timeout event. This event describes the point in time the car is done parking (or driving, respectively). By yielding the event, it signals the simulation that it wants to wait for the event to occur.

Now that the behavior of our car has been modeled, lets create an instance of it and see how it behaves:

>>> import simpy
>>> env = simpy.Environment()
>>> env.process(car(env))
<Process(car) object at 0x...>
>>> env.run(until=15)
Start parking at 0
Start driving at 5
Start parking at 7
Start driving at 12
Start parking at 14

The first thing we need to do is to create an instance of Environment. This instance is passed into our car process function. Calling it creates a process generator that needs to be started and added to the environment via Environment.process().

Note, that at this time, none of the code of our process function is being executed. It’s execution is merely scheduled at the current simulation time.

The Process returned by process() can be used for process interactions (we will cover that in the next section, so we will ignore it for now).

Finally, we start the simulation by calling run() and passing an end time to it.

What’s Next?

You should now be familiar with Simpy’s terminology and basic concepts. In the next section, we will cover process interaction.

Process Interaction

The Process instance that is returned by Environment.process() can be utilized for process interactions. The two most common examples for this are to wait for another process to finish and to interrupt another process while it is waiting for an event.

Waiting for a Process

As it happens, a SimPy Process can be used like an event (technically, a process actually is an event). If you yield it, you are resumed once the process has finished. Imagine a car-wash simulation where cars enter the car-wash and wait for the washing process to finish. Or an airport simulation where passengers have to wait until a security check finishes.

Lets assume that the car from our last example magically became an electric vehicle. Electric vehicles usually take a lot of time charing their batteries after a trip. They have to wait until their battery is charged before they can start driving again.

We can model this with an additional charge() process for our car. Therefore, we refactor our car to be a class with two process methods: run() (which is the original car() process function) and charge().

The run process is automatically started when Car is instantiated. A new charge process is started every time the vehicle starts parking. By yielding the Process instance that Environment.process() returns, the run process starts waiting for it to finish:

>>> class Car(object):
...     def __init__(self, env):
...         self.env = env
...         # Start the run process everytime an instance is created.
...         self.action = env.process(self.run())
...
...     def run(self):
...         while True:
...             print('Start parking and charging at %d' % self.env.now)
...             charge_duration = 5
...             # We yield the process that process() returns
...             # to wait for it to finish
...             yield self.env.process(self.charge(charge_duration))
...
...             # The charge process has finished and
...             # we can start driving again.
...             print('Start driving at %d' % self.env.now)
...             trip_duration = 2
...             yield self.env.timeout(trip_duration)
...
...     def charge(self, duration):
...         yield self.env.timeout(duration)

Starting the simulation is straight forward again: We create an environment, one (or more) cars and finally call meth:~Environment.simulate().

>>> import simpy
>>> env = simpy.Environment()
>>> car = Car(env)
>>> env.run(until=15)
Start parking and charging at 0
Start driving at 5
Start parking and charging at 7
Start driving at 12
Start parking and charging at 14

Interrupting Another Process

Imagine, you don’t want to wait until your electric vehicle is fully charged but want to interrupt the charging process and just start driving instead.

SimPy allows you to interrupt a running process by calling its interrupt() method:

>>> def driver(env, car):
...     yield env.timeout(3)
...     car.action.interrupt()

The driver process has a reference to the car’s action process. After waiting for 3 time steps, it interrupts that process.

Interrupts are thrown into process functions as Interrupt exceptions that can (should) be handled by the interrupted process. The process can than decide what to do next (e.g., continuing to wait for the original event or yielding a new event):

>>> class Car(object):
...     def __init__(self, env):
...         self.env = env
...         self.action = env.process(self.run())
...
...     def run(self):
...         while True:
...             print('Start parking and charging at %d' % self.env.now)
...             charge_duration = 5
...             # We may get interrupted while charging the battery
...             try:
...                 yield self.env.process(self.charge(charge_duration))
...             except simpy.Interrupt:
...                 # When we received an interrupt, we stop charing and
...                 # switch to the "driving" state
...                 print('Was interrupted. Hope, the battery is full enough ...')
...
...             print('Start driving at %d' % self.env.now)
...             trip_duration = 2
...             yield self.env.timeout(trip_duration)
...
...     def charge(self, duration):
...         yield self.env.timeout(duration)

When you compare the output of this simulation with the previous example, you’ll notice that the car now starts driving at time 3 instead of 5:

>>> env = simpy.Environment()
>>> car = Car(env)
>>> env.process(driver(env, car))
<Process(driver) object at 0x...>
>>> env.run(until=15)
Start parking and charging at 0
Was interrupted. Hope, the battery is full enough ...
Start driving at 3
Start parking and charging at 5
Start driving at 10
Start parking and charging at 12

What’s Next

We just demonstrated two basic methods for process interactions—waiting for a process and interrupting a process. Take a look at the Topical Guides or the Process API reference for more details.

In the next section we will cover the basic usage of shared resources.

Shared Resources

SimPy offers three types of resources that help you modeling problems, where multiple processes want to use a resource of limited capacity (e.g., cars at a fuel station with a limited number of fuel pumps) or classical producer-consumer problems.

In this section, we’ll briefly introduce SimPy’s Resource class.

Basic Resource Usage

We’ll slightly modify our electric vehicle process car that we introduced in the last sections.

The car will now drive to a battery charging station (BCS) and request one of its two charging spots. If both of these spots are currently in use, it waits until one of them becomes available again. It then starts charging its battery and leaves the station afterwards:

>>> def car(env, name, bcs, driving_time, charge_duration):
...     # Simulate driving to the BCS
...     yield env.timeout(driving_time)
...
...     # Request one of its charging spots
...     print('%s arriving at %d' % (name, env.now))
...     with bcs.request() as req:
...         yield req
...
...         # Charge the battery
...         print('%s starting to charge at %s' % (name, env.now))
...         yield env.timeout(charge_duration)
...         print('%s leaving the bcs at %s' % (name, env.now))

The resource’s request() method generates an event that lets you wait until the resource becomes available again. If you are resumed, you “own” the resource until you release it.

If you use the resource with the with statement as shown above, the resource is automatically being released. If you call request() without with, you are responsible to call release() once you are done using the resource.

When you release a resource, the next waiting process is resumed and now “owns” one of the resource’s slots. The basic Resource sorts waiting processes in a FIFO (first in—first out) way.

A resource needs a reference to an Environment and a capacity when it is created:

>>> import simpy
>>> env = simpy.Environment()
>>> bcs = simpy.Resource(env, capacity=2)

We can now create the car processes and pass a reference to our resource as well as some additional parameters to them:

>>> for i in range(4):
...     env.process(car(env, 'Car %d' % i, bcs, i*2, 5))
<Process(car) object at 0x...>
<Process(car) object at 0x...>
<Process(car) object at 0x...>
<Process(car) object at 0x...>

Finally, we can start the simulation. Since the car processes all terminate on their own in this simulation, we don’t need to specify an until time—the simulation will automatically stop when there are no more events left:

>>> env.run()
Car 0 arriving at 0
Car 0 starting to charge at 0
Car 1 arriving at 2
Car 1 starting to charge at 2
Car 2 arriving at 4
Car 0 leaving the bcs at 5
Car 2 starting to charge at 5
Car 3 arriving at 6
Car 1 leaving the bcs at 7
Car 3 starting to charge at 7
Car 2 leaving the bcs at 10
Car 3 leaving the bcs at 12

Note that the first to cars can start charging immediately after they arrive at the BCS, while cars 2 an 3 have to wait.

What’s Next

You should now be familiar with SimPy’s basic concepts. The next section shows you how you can proceed with using SimPy from here on.

How to Proceed

If you are not certain yet if SimPy fulfills your requirements or if you want to see more features in action, you should take a look at the various examples we provide.

If you are looking for a more detailed description of a certain aspect or feature of SimPy, the Topical Guides section might help you.

Finally, there is an API Reference that describes all functions and classes in full detail.

Topical Guides

This sections covers various aspects of SimPy more in-depth. It assumes that you have a basic understanding of SimPy’s capabilities and that you know what you are looking for.

SimPy basics

This guide describes the basic concepts of SimPy: How does it work? What are processes, events and the environment? What can I do with them?

How SimPy works

If you break SimPy down, it is just an asynchronous event dispatcher. You generate events and schedule them at a given simulation time. Events are sorted by priority, simulation time, and an increasing event id. An event also has a list of callbacks, which are executed when the event is triggered and processed by the event loop. Events may also have a return value.

The components involved in this are the Environment, events and the process functions that you write.

Process functions implement your simulation model, that is, they define the behavior of your simulation. They are plain Python generator functions that yield instances of Event.

The environment stores these events in its event list and keeps track of the current simulation time.

If a process function yields and event, SimPy adds the process to the event’s callbacks and suspends the process until the event is triggered and processed. When a process waiting for an event is resumed, it will also receive the event’s value.

Here is a very simple example that illustrates all this; the code is more verbose than it needs to be to make things extra clear. You find a compact version of it at the end of this section:

>>> import simpy
>>>
>>> def example(env):
...     event = simpy.events.Timeout(env, delay=1, value=42)
...     value = yield event
...     print('now=%d, value=%d' % (env.now, value))
>>>
>>> env = simpy.Environment()
>>> example_gen = example(env)
>>> p = simpy.events.Process(env, example_gen)
>>>
>>> env.run()
now=1, value=42

The example() process function above first creates a Timeout event. It passes the environment, a delay, and a value to it. The Timeout schedules itself at now + delay (that’s why the environment is required); other event types usually schedule themselves at the current simulation time.

The process function then yields the event and thus gets suspended. It is resumed, when SimPy processes the Timeout event. The process function also receives the event’s value (42) – this is, however, optional, so yield event would have been okay if the you were not interested in the value or if the event had no value at all.

Finally, the process function prints the current simulation time (that is accessible via the environment’s now attribute) and the Timeout’s value.

If all required process functions are defined, you can instantiate all objects for your simulation. In most cases, you start by creating an instance of Environment, because you’ll need to pass it around a lot when creating everything else.

Starting a process function involves two things:

  1. You have to call the process function to create a generator object. (This will not execute any code of that function yet. Please read The Python yield keyword explained, to understand why this is the case.)
  2. You then create an instance of Process and pass the environment and the generator object to it. This will schedule an Initialize event at the current simulation time which starts the execution of the process function. The process instance is also an event that is triggered when the process function returns. The guide to events explains why this is handy.

Finally, you can start SimPy’s event loop. By default, it will run as long as there are events in the event list, but you can also let it stop earlier by providing an until argument (see Simulation control).

The following guides describe the environment and its interactions with events and process functions in more detail.

“Best practice” version of the example above

>>> import simpy
>>>
>>> def example(env):
...     value = yield env.timeout(1, value=42)
...     print('now=%d, value=%d' % (env.now, value))
>>>
>>> env = simpy.Environment()
>>> p = env.process(example(env))
>>> env.run()
now=1, value=42

Environments

A simulation environment manages the simulation time as well as the scheduling and processing of events. It also provides means to step through or execute the simulation.

The base class for all environments is BaseEnvironment. “Normal” simulations usually use its subclass Environment. For real-time simulations, SimPy provides a RealtimeEnvironment (more on that in realtime_simulations).

Simulation control

SimPy is very flexible in terms of simulation execution. You can run your simulation until there is no more event, until a certain simulation time is reached, or until a certain event is triggered. You can also step through the simulation event by event. Furthermore, you can mix these things as you like.

For example, you could run your simulation until an interesting event occurs. You could then step through the simulation event by event for a while; and finally run the simulation until there is no more event left and your processes all have terminated.

The most important method here is Environment.run():

  • If you call it without any argument (env.run()), it steps through the simulation until there is no more event left.

    Warning

    If your processes run forever (while True: yield env.timeout(1)), this method will never terminate (unless you kill your script by e.g., pressing Ctrl-C).

  • In most cases it is more advisable to stop your simulation when it reaches a certain simulation time. Therefore, you can pass the desired time via the until parameter, e.g.: env.run(until=10).

    The simulation will then stop when the internal clock reaches 10 but will not process any events scheduled for time 10. This is similar to a new environment where the clock is 0 but (obviously) no events have yet been processed.

    If you want to integrate your simulation in a GUI and want to draw a process bar, you can repeatedly call this function with increasing until values and update your progress bar after each call:

    for i in range(100):
        env.run(until=i)
        progressbar.update(i)
    
  • Instead of passing a number to run(), you can also pass any event to it. run() will then return when the event has been processed.

    Assuming that the current time is 0, env.run(until=env.timeout(5)) is equivalent to env.run(until=5).

    You can also pass other types of events (remember, that a Process is an event, too):

    >>> import simpy
    >>>
    >>> def my_proc(env):
    ...     yield env.timeout(1)
    ...     return 'Monty Python’s Flying Circus'
    >>>
    >>> env = simpy.Environment()
    >>> proc = env.process(my_proc(env))
    >>> env.run(until=proc)
    'Monty Python’s Flying Circus'
    

To step through the simulation event by event, the environment offers peek() and step().

peek() returns the time of the next scheduled event of infinity (float('inf')) of no more event is scheduled.

step() processes the next scheduled event. It raises an EmptySchedule exception if no event is available.

In a typical use case, you use these methods in a loop like:

until = 10
while env.peek() < until:
   env.step()

State access

The environment allows you to get the current simulation time via the Environment.now property. The simulation time is a number without unit and is increased via Timeout events.

By default, now starts at 0, but you can pass an initial_time to the Environment to use something else.

Note

Although the simulation time is technically unitless, you can pretend that it is, for example, in seconds and use it like a timestamp returned by time.time() to calculate a date or the day of the week.

The property Environment.active_process is comparable to os.getpid() and is either None or pointing at the currently active Process. A process is active when its process function is being executed. It becomes inactive (or suspended) when it yields an event.

Thus, it makes only sense to access this property from within a process function or a function that is called by your process function:

>>> def subfunc(env):
...     print(env.active_process)  # will print "p1"
>>>
>>> def my_proc(env):
...     while True:
...         print(env.active_process)  # will print "p1"
...         subfunc(env)
...         yield env.timeout(1)
>>>
>>> env = simpy.Environment()
>>> p1 = env.process(my_proc(env))
>>> env.active_process  # None
>>> env.step()
<Process(my_proc) object at 0x...>
<Process(my_proc) object at 0x...>
>>> env.active_process  # None

An exemplary use case for this is the resource system: If a process function calls request() to request a resource, the resource determines the requesting process via env.active_process. Take a look at the code to see how we do this :-).

Event creation

To create events, you normally have to import simpy.events, instantiate the event class and pass a reference to the environment to it. To reduce the amount of typing, the Environment provides some shortcuts for event creation. For example, Environment.event() is equivalent to simpy.events.Event(env).

Other shortcuts are:

More details on what the events do can be found in the guide to events.

Miscellaneous

Since Python 3.3, a generator function can have a return value:

def my_proc(env):
    yield env.timeout(1)
    return 42

In SimPy, this can be used to provide return values for processes that can be used by other processes:

def other_proc(env):
    ret_val = yield env.process(my_proc(env))
    assert ret_val == 42

Internally, Python passes the return value as parameter to the StopIteration exception that it raises when a generator is exhausted. So in Python 2.7 and 3.2 you could replace the return 42 with a raise StopIteration(42) to achieve the same result.

To keep your code more readable, the environment provides the method exit() to do exactly this:

def my_proc(env):
    yield env.timeout(1)
    env.exit(42)  # Py2 equivalent to "return 42"

Events

SimPy includes an extensive set of event types for various purposes. All of them inherit simpy.events.Event. The listing below shows the hierarchy of events built into SimPy:

events.Event
↑
+— events.Timeout
|
+— events.Initialize
|
+— events.Process
|
+— events.Condition
|  ↑
|  +— events.AllOf
|  |
|  +— events.AnyOf
⋮
+– [resource events]

This is the set of basic events. Events are extensible and resources, for example, define additional events. In this guide, we’ll focus on the events in the simpy.events module. The guide to resources describes the various resource events.

Event basics

SimPy events are very similar – if not identical — to deferreds, futures or promises. Instances of the class Event are used to describe any kind of events. Events can be in one of the following states. An event

  • might happen (not triggered),
  • is going to happen (triggered) or
  • has happened (processed).

They traverse these states exactly once in that order. Events are also tightly bound to time and time causes events to advance their state.

Initially, events are not triggered and just objects in memory.

If an event gets triggered, it is scheduled at a given time and inserted into SimPy’s event queue. The property Event.triggered becomes True.

As long as the event is not processed, you can add callbacks to an event. Callbacks are callables that accept an event as parameter and are stored in the Event.callbacks list.

An event becomes processed when SimPy pops it from the event queue and calls all of its callbacks. It is now no longer possible to add callbacks. The property Event.processed becomes True.

Events also have a value. The value can be set before or when the event is triggered and can be retrieved via Event.value or, within a process, by yielding the event (value = yield event).

Adding callbacks to an event

“What? Callbacks? I’ve never seen no callbacks!”, you might think if you have worked your way through the tutorial.

That’s on purpose. The most common way to add a callback to an event is yielding it from your process function (yield event). This will add the process’ _resume() method as a callback. That’s how your process gets resumed when it yielded an event.

However, you can add any callable object (function) to the list of callbacks as long as it accepts an event instance as its single parameter:

>>> import simpy
>>>
>>> def my_callback(event):
...     print('Called back from', event)
...
>>> env = simpy.Environment()
>>> event = env.event()
>>> event.callbacks.append(my_callback)
>>> event.callbacks
[<function my_callback at 0x...>]

If an event has been processed, all of its Event.callbacks have been executed and the attribute is set to None. This is to prevent you from adding more callbacks – these would of course never get called because the event has already happened.

Processes are smart about this, though. If you yield a processed event, _resume() will immediately resume your process with the value of the event (because there is nothing to wait for).

Triggering events

When events are triggered, they can either succeed or fail. For example, if an event is to be triggered at the end of a computation and everything works out fine, the event will succeed. If an exceptions occurs during that computation, the event will fail.

To trigger an event and mark it as successful, you can use Event.succeed(value=None). You can optionally pass a value to it (e.g., the results of a computation).

To trigger an event and mark it as failed, call Event.fail(exception) and pass an Exception instance to it (e.g., the exception you caught during your failed computation).

There is also a generic way to trigger an event: Event.trigger(event). This will take the value and outcome (success or failure) of the event passed to it.

All three methods return the event instance they are bound to. This allows you to do things like yield Event(env).succeed().

Example usages for Event

The simple mechanics outlined above provide a great flexibility in the way events (even the basic Event) can be used.

One example for this is that events can be shared. They can be created by a process or outside of the context of a process. They can be passed to other processes and chained:

>>> class School:
...     def __init__(self, env):
...         self.env = env
...         self.class_ends = env.event()
...         self.pupil_procs = [env.process(self.pupil()) for i in range(3)]
...         self.bell_proc = env.process(self.bell())
...
...     def bell(self):
...         for i in range(2):
...             yield self.env.timeout(45)
...             self.class_ends.succeed()
...             self.class_ends = self.env.event()
...             print()
...
...     def pupil(self):
...         for i in range(2):
...             print(' \o/', end='')
...             yield self.class_ends
...
>>> school = School(env)
>>> env.run()
 \o/ \o/ \o/
 \o/ \o/ \o/

This can also be used like the passivate / reactivate known from SimPy 2. The pupils passivate when class begins and are reactivated when the bell rings.

Let time pass by: the Timeout

To actually let time pass in a simulation, there is the timeout event. A timeout has two parameters: a delay and an optional value: Timeout(delay, value=None). It triggers itself during its creation and schedules itself at now + delay. Thus, the succeed() and fail() methods cannot be called again and you have to pass the event value to it when you create the timeout.

The delay can be any kind of number, usually an int or float as long as it supports comparison and addition.

Processes are events, too

SimPy processes (as created by Process or env.process()) have the nice property of being events, too.

That means, that a process can yield another process. It will then be resumed when the other process ends. The event’s value will be the return value of that process:

>>> def sub(env):
...     yield env.timeout(1)
...     return 23
...
>>> def parent(env):
...     ret = yield env.process(sub(env))
...     return ret
...
>>> env.run(env.process(parent(env)))
23

The example above will only work in Python >= 3.3. As a workaround for older Python versions, you can use env.exit(23) with the same effect.

When a process is created, it schedules an Initialize event which will start the execution of the process when triggered. You usually won’t have to deal with this type of event.

If you don’t want a process to start immediately but after a certain delay, you can use simpy.util.start_delayed(). This method returns a helper process that uses a timeout before actually starting a process.

The example from above, but with a delayed start of sub():

>>> from simpy.util import start_delayed
>>>
>>> def sub(env):
...     yield env.timeout(1)
...     return 23
...
>>> def parent(env):
...     start = env.now
...     sub_proc = yield start_delayed(env, sub(env), delay=3)
...     assert env.now - start == 3
...
...     ret = yield sub_proc
...     return ret
...
>>> env.run(env.process(parent(env)))
23

Waiting for multiple events at once

Sometimes, you want to wait for more than one event at the same time. For example, you may want to wait for a resource, but not for an unlimited amount of time. Or you may want to wait until all a set of events has happened.

SimPy therefore offers the AnyOf and AllOf events which both are a Condition event.

Both take a list of events as an argument and are triggered if at least one or all of them of them are triggered.

>>> from simpy.events import AnyOf, AllOf, Event
>>> events = [Event(env) for i in range(3)]
>>> a = AnyOf(env, events)  # Triggers if at least one of "events" is triggered.
>>> b = AllOf(env, events)  # Triggers if all each of "events" is triggered.

The value of a condition event is an ordered dictionary with an entry for every triggered event. In the case of AllOf, the size of that dictionary will always be the same as the length of the event list. The value dict of AnyOf will have at least one entry. In both cases, the event instances are used as keys and the event values will be the values.

As a shorthand for AllOf and AnyOf, you can also use the logical operators & (and) and | (or):

>>> def test_condition(env):
...     t1, t2 = env.timeout(1, value='spam'), env.timeout(2, value='eggs')
...     ret = yield t1 | t2
...     assert ret == {t1: 'spam'}
...
...     t1, t2 = env.timeout(1, value='spam'), env.timeout(2, value='eggs')
...     ret = yield t1 & t2
...     assert ret == {t1: 'spam', t2: 'eggs'}
...
...     # You can also concatenate & and |
...     e1, e2, e3 = [env.timeout(i) for i in range(3)]
...     yield (e1 | e2) & e3
...     assert all(e.triggered for e in [e1, e2, e3])
...
>>> proc = env.process(test_condition(env))
>>> env.run()

The order of condition results is identical to the order in which the condition events were specified. This allows the following idiom for conveniently fetching the values of multiple events specified in an and condition (including AllOf):

>>> def fetch_values_of_multiple_events(env):
...     t1, t2 = env.timeout(1, value='spam'), env.timeout(2, value='eggs')
...     r1, r2 = (yield t1 & t2).values()
...     assert r1 == 'spam' and r2 == 'eggs'
...
>>> proc = env.process(fetch_values_of_multiple_events(env))
>>> env.run()

Process Interaction

Event discrete simulation is only made interesting by interactions between processes.

So this guide is about:

The first two items were already covered in the Events guide, but we’ll also include them here for the sake of completeness.

Another possibility for processes to interact are resources. They are discussed in a separate guide.

Sleep until woken up

Imagine you want to model an electric vehicle with an intelligent battery-charging controller. While the vehicle is driving, the controller can be passive but needs to be reactivate once the vehicle is connected to the power grid in order to charge the battery.

In SimPy 2, this pattern was known as passivate / reactivate. In SimPy 3, you can accomplish that with a simple, shared Event:

>>> from random import seed, randint
>>> seed(23)
>>>
>>> import simpy
>>>
>>> class EV:
...     def __init__(self, env):
...         self.env = env
...         self.drive_proc = env.process(self.drive(env))
...         self.bat_ctrl_proc = env.process(self.bat_ctrl(env))
...         self.bat_ctrl_reactivate = env.event()
...
...     def drive(self, env):
...         while True:
...             # Drive for 20-40 min
...             yield env.timeout(randint(20, 40))
...
...             # Park for 1–6 hours
...             print('Start parking at', env.now)
...             self.bat_ctrl_reactivate.succeed()  # "reactivate"
...             self.bat_ctrl_reactivate = env.event()
...             yield env.timeout(randint(60, 360))
...             print('Stop parking at', env.now)
...
...     def bat_ctrl(self, env):
...         while True:
...             print('Bat. ctrl. passivating at', env.now)
...             yield self.bat_ctrl_reactivate  # "passivate"
...             print('Bat. ctrl. reactivated at', env.now)
...
...             # Intelligent charging behavior here …
...             yield env.timeout(randint(30, 90))
...
>>> env = simpy.Environment()
>>> ev = EV(env)
>>> env.run(until=150)
Bat. ctrl. passivating at 0
Start parking at 29
Bat. ctrl. reactivated at 29
Bat. ctrl. passivating at 60
Stop parking at 131

Since bat_ctrl() just waits for a normal event, we no longer call this pattern passivate / reactivate in SimPy 3.

Waiting for another process to terminate

The example above has a problem: it may happen that the vehicles wants to park for a shorter duration than it takes to charge the battery (this is the case if both, charging and parking would take 60 to 90 minutes).

To fix this problem we have to slightly change our model. A new bat_ctrl() will be started every time the EV starts parking. The EV then waits until the parking duration is over and until the charging has stopped:

>>> class EV:
...     def __init__(self, env):
...         self.env = env
...         self.drive_proc = env.process(self.drive(env))
...
...     def drive(self, env):
...         while True:
...             # Drive for 20-40 min
...             yield env.timeout(randint(20, 40))
...
...             # Park for 1–6 hours
...             print('Start parking at', env.now)
...             charging = env.process(self.bat_ctrl(env))
...             parking = env.timeout(randint(60, 360))
...             yield charging & parking
...             print('Stop parking at', env.now)
...
...     def bat_ctrl(self, env):
...         print('Bat. ctrl. started at', env.now)
...         # Intelligent charging behavior here …
...         yield env.timeout(randint(30, 90))
...         print('Bat. ctrl. done at', env.now)
...
>>> env = simpy.Environment()
>>> ev = EV(env)
>>> env.run(until=310)
Start parking at 29
Bat. ctrl. started at 29
Bat. ctrl. done at 83
Stop parking at 305

Again, nothing new (if you’ve read the Events guide) and special is happening. SimPy processes are events, too, so you can yield them and will thus wait for them to get triggered. You can also wait for two events at the same time by concatenating them with & (see Waiting for multiple events at once).

Interrupting another process

As usual, we now have another problem: Imagine, a trip is very urgent, but with the current implementation, we always need to wait until the battery is fully charged. If we could somehow interrupt that ...

Fortunate coincidence, there is indeed a way to do exactly this. You can call interrupt() on a Process. This will throw an Interrupt exception into that process, resuming it immediately:

>>> class EV:
...     def __init__(self, env):
...         self.env = env
...         self.drive_proc = env.process(self.drive(env))
...
...     def drive(self, env):
...         while True:
...             # Drive for 20-40 min
...             yield env.timeout(randint(20, 40))
...
...             # Park for 1 hour
...             print('Start parking at', env.now)
...             charging = env.process(self.bat_ctrl(env))
...             parking = env.timeout(60)
...             yield charging | parking
...             if not charging.triggered:
...                 # Interrupt charging if not already done.
...                 charging.interrupt('Need to go!')
...             print('Stop parking at', env.now)
...
...     def bat_ctrl(self, env):
...         print('Bat. ctrl. started at', env.now)
...         try:
...             yield env.timeout(randint(60, 90))
...             print('Bat. ctrl. done at', env.now)
...         except simpy.Interrupt as i:
...             # Onoes! Got interrupted before the charging was done.
...             print('Bat. ctrl. interrupted at', env.now, 'msg:',
...                   i.cause)
...
>>> env = simpy.Environment()
>>> ev = EV(env)
>>> env.run(until=100)
Start parking at 31
Bat. ctrl. started at 31
Stop parking at 91
Bat. ctrl. interrupted at 91 msg: Need to go!

What process.interrupt() actually does is scheduling an Interruption event for immediate execution. If this event is executed it will remove the victim process’ _resume() method from the callbacks of the event that it is currently waiting for (see target). Following that it will throw the Interrupt exception into the process.

Since we don’t to anything special to the original target event of the process, the interrupted process can yield the same event again after catching the Interrupt – Imagine someone waiting for a shop to open. The person may get interrupted by a phone call. After finishing the call, he or she checks if the shop already opened and either enters or continues to wait.

Porting from SimPy 2 to 3

Porting from SimPy 2 to SimPy 3 is not overly complicated. A lot of changes merely comprise copy/paste.

This guide describes the conceptual and API changes between both SimPy versions and shows you how to change your code for SimPy 3.

Imports

In SimPy 2, you had to decide at import-time whether you wanted to use a normal simulation (SimPy.Simulation), a real-time simulation (SimPy.SimulationRT) or something else. You usually had to import Simulation (or SimulationRT), Process and some of the SimPy keywords (hold or passivate, for example) from that package.

In SimPy 3, you usually need to import much less classes and modules (for example, all keywords are gone). In most use cases you will now only need to import simpy.

SimPy 2

from Simpy.Simulation import Simulation, Process, hold

SimPy 3

import simpy

The Simulation* classes

SimPy 2 encapsulated the simulation state in a Simulation* class (e.g., Simulation, SimulationRT or SimulationTrace). This class also had a simulate() method that executed a normal simulation, a real-time simulation or something else (depending on the particular class).

There was a global Simulation instance that was automatically created when you imported SimPy. You could also instantiate it on your own to uses SimPy’s object-orient API. This led to some confusion and problems, because you had to pass the Simulation instance around when you were using the object-oriented API but not if you were using the procedural API.

In SimPy 3, an Environment replaces Simulation and RealtimeEnvironment replaces SimulationRT. You always need to instantiate an environment. There’s no more global state.

To execute a simulation, you call the environment’s run() method.

SimPy 2

# Procedural API
from SimPy.Simulation import initialize, simulate

initialize()
# Start processes
simulate(until=10)
# Object-oriented API
from SimPy.Simulation import Simulation

sim = Simulation()
# Start processes
sim.simulate(until=10)

SimPy3

import simpy

env = simpy.Environment()
# Start processes
env.run(until=10)

Defining a Process

Processes had to inherit the Process base class in SimPy 2. Subclasses had to implement at least a so called Process Execution Method (PEM) (which is basically a generator function) and in most cases __init__(). Each process needed to know the Simulation instance it belonged to. This reference was passed implicitly in the procedural API and had to be passed explicitly in the object-oriented API. Apart from some internal problems, this made it quite cumbersome to define a simple process.

Processes were started by passing the Process and a generator instance created by the generator function to either the global activate() function or the corresponding Simulation method.

A process in SimPy 3 is a Python generator (no matter if it’s defined on module level or as an instance method) wrapped in a Process instance. The generator usually requires a reference to a Environment to interact with, but this is completely optional.

Processes are can be started by creating a Process instance and passing the generator to it. The environment provides a shortcut for this: process().

SimPy 2

# Procedural API
from Simpy.Simulation import Process

class MyProcess(Process):
    def __init__(self, another_param):
        super().__init__()
        self.another_param = another_param

    def generator_function(self):
        """Implement the process' behavior."""
        yield something

initialize()
proc = Process('Spam')
activate(proc, proc.generator_function())
# Object-oriented API
from SimPy.Simulation import Simulation, Process

class MyProcess(Process):
    def __init__(self, sim, another_param):
        super().__init__(sim=sim)
        self.another_param = another_param

    def generator_function(self):
        """Implement the process' behaviour."""
        yield something

sim = Simulation()
proc = Process(sim, 'Spam')
sim.activate(proc, proc.generator_function())

SimPy 3

import simpy

def generator_function(env, another_param):
    """Implement the process' behavior."""
    yield something

env = simpy.Environment()
proc = env.process(generator_function(env, 'Spam'))

SimPy Keywords (hold etc.)

In SimPy 2, processes created new events by yielding a SimPy Keyword and some additional parameters (at least self). These keywords had to be imported from SimPy.Simulation* if they were used. Internally, the keywords were mapped to a function that generated the according event.

In SimPy 3, you directly yield events if you want to wait for an event to occur. You can instantiate an event directly or use the shortcuts provided by Environment.

Generally, whenever a process yields an event, the execution of the process is suspended and resumed once the event has been triggered. To motivate this understanding, some of the events were renamed. For example, the hold keyword meant to wait until some time has passed. In terms of events this means that a timeout has happened. Therefore hold has been replaced by a Timeout event.

Note

Process is also an Event. If you want to wait for a process to finish, simply yield it.

SimPy 2

yield hold, self, duration
yield passivate, self
yield request, self, resource
yield release, self, resource
yield waitevent, self, event
yield waitevent, self, [event_a, event_b, event_c]
yield queueevent, self, event_list
yield get, self, level, amount
yield put, self, level, amount

SimPy 3

yield env.timeout(duration)        # hold: renamed
yield env.event()                  # passivate: renamed
yield resource.request()           # Request is now bound to class Resource
resource.release()                 # Release no longer needs to be yielded
yield event                        # waitevent: just yield the event
yield env.all_of([event_a, event_b, event_c])  # waitvent
yield env.any_of([event_a, event_b, event_c])  # queuevent
yield container.get(amount)        # Level is now called Container
yield container.put(amount)

yield event_a | event_b            # Wait for either a or b. This is new.
yield event_a & event_b            # Wait for a and b. This is new.
yield env.process(calculation(env))  # Wait for the process calculation to
                                     # to finish.
Partially supported features

The following waituntil keyword is not completely supported anymore:

yield waituntil, self, cond_func

SimPy 2 was evaluating cond_func after every event, which was computationally very expensive. One possible workaround is for example the following process, which evaluates cond_func periodically:

def waituntil(env, cond_func, delay=1):
    while not cond_func():
        yield env.timeout(delay)

# Usage:
yield waituntil(env, cond_func)

Interrupts

In SimPy 2, interrupt() was a method of the interrupting process. The victim of the interrupt had to be passed as an argument.

The victim was not directly notified of the interrupt but had to check if the interrupted flag was set. Afterwards, it had to reset the interrupt via interruptReset(). You could manually set the interruptCause attribute of the victim.

Explicitly checking for an interrupt is obviously error prone as it is too easy to be forgotten.

In SimPy 3, you call interrupt() on the victim process. You can optionally supply a cause. An Interrupt is then thrown into the victim process, which has to handle the interrupt via try: ... except Interrupt: ....

SimPy 2

class Interrupter(Process):
    def __init__(self, victim):
        super().__init__()
        self.victim = victim

    def run(self):
        yield hold, self, 1
        self.interrupt(self.victim_proc)
        self.victim_proc.interruptCause = 'Spam'

class Victim(Process):
    def run(self):
        yield hold, self, 10
        if self.interrupted:
            cause = self.interruptCause
            self.interruptReset()

SimPy 3

def interrupter(env, victim_proc):
    yield env.timeout(1)
    victim_proc.interrupt('Spam')

def victim(env):
    try:
        yield env.timeout(10)
    except Interrupt as interrupt:
        cause = interrupt.cause

Conclusion

This guide is by no means complete. If you run into problems, please have a look at the other guides, the examples or the API Reference. You are also very welcome to submit improvements. Just create a pull request at bitbucket.

Examples

All theory is grey. In this section, we present various practical examples that demonstrate how to uses SimPy’s features.

Here’s a list of examples grouped by features they demonstrate.

Condition events

Interrupts

Monitoring

Resources: Container

Resources: Preemptive Resource

Shared events

Waiting for other processes

All examples

Bank Renege

Covers:

  • Resources: Resource
  • Condition events

A counter with a random service time and customers who renege. Based on the program bank08.py from TheBank tutorial of SimPy 2. (KGM)

This example models a bank counter and customers arriving t random times. Each customer has a certain patience. It waits to get to the counter until she’s at the end of her tether. If she gets to the counter, she uses it for a while before releasing it.

New customers are created by the source process every few time steps.

"""
Bank renege example

Covers:

- Resources: Resource
- Condition events

Scenario:
  A counter with a random service time and customers who renege. Based on the
  program bank08.py from TheBank tutorial of SimPy 2. (KGM)

"""
import random

import simpy


RANDOM_SEED = 42
NEW_CUSTOMERS = 5  # Total number of customers
INTERVAL_CUSTOMERS = 10.0  # Generate new customers roughly every x seconds
MIN_PATIENCE = 1  # Min. customer patience
MAX_PATIENCE = 3  # Max. customer patience


def source(env, number, interval, counter):
    """Source generates customers randomly"""
    for i in range(number):
        c = customer(env, 'Customer%02d' % i, counter, time_in_bank=12.0)
        env.process(c)
        t = random.expovariate(1.0 / interval)
        yield env.timeout(t)


def customer(env, name, counter, time_in_bank):
    """Customer arrives, is served and leaves."""
    arrive = env.now
    print('%7.4f %s: Here I am' % (arrive, name))

    with counter.request() as req:
        patience = random.uniform(MIN_PATIENCE, MAX_PATIENCE)
        # Wait for the counter or abort at the end of our tether
        results = yield req | env.timeout(patience)

        wait = env.now - arrive

        if req in results:
            # We got to the counter
            print('%7.4f %s: Waited %6.3f' % (env.now, name, wait))

            tib = random.expovariate(1.0 / time_in_bank)
            yield env.timeout(tib)
            print('%7.4f %s: Finished' % (env.now, name))

        else:
            # We reneged
            print('%7.4f %s: RENEGED after %6.3f' % (env.now, name, wait))


# Setup and start the simulation
print('Bank renege')
random.seed(RANDOM_SEED)
env = simpy.Environment()

# Start processes and run
counter = simpy.Resource(env, capacity=1)
env.process(source(env, NEW_CUSTOMERS, INTERVAL_CUSTOMERS, counter))
env.run()

The simulation’s output:

Bank renege
 0.0000 Customer00: Here I am
 0.0000 Customer00: Waited  0.000
 3.8595 Customer00: Finished
10.2006 Customer01: Here I am
10.2006 Customer01: Waited  0.000
12.7265 Customer02: Here I am
13.9003 Customer02: RENEGED after  1.174
23.7507 Customer01: Finished
34.9993 Customer03: Here I am
34.9993 Customer03: Waited  0.000
37.9599 Customer03: Finished
40.4798 Customer04: Here I am
40.4798 Customer04: Waited  0.000
43.1401 Customer04: Finished

Carwash

Covers:

  • Waiting for other processes
  • Resources: Resource

The Carwash example is a simulation of a carwash with a limited number of machines and a number of cars that arrive at the carwash to get cleaned.

The carwash uses a Resource to model the limited number of washing machines. It also defines a process for washing a car.

When a car arrives at the carwash, it requests a machine. Once it got one, it starts the carwash’s wash processes and waits for it to finish. It finally releases the machine and leaves.

The cars are generated by a setup process. After creating an intial amount of cars it creates new car processes after a random time interval as long as the simulation continues.

"""
Carwasch example.

Covers:

- Waiting for other processes
- Resources: Resource

Scenario:
  A carwash has a limited number of washing machines and defines
  a washing processes that takes some (random) time.

  Car processes arrive at the carwash at a random time. If one washing
  machine is available, they start the washing process and wait for it
  to finish. If not, they wait until they an use one.

"""
import random

import simpy


RANDOM_SEED = 42
NUM_MACHINES = 2  # Number of machines in the carwash
WASHTIME = 5      # Minutes it takes to clean a car
T_INTER = 7       # Create a car every ~7 minutes
SIM_TIME = 20     # Simulation time in minutes


class Carwash(object):
    """A carwash has a limited number of machines (``NUM_MACHINES``) to
    clean cars in parallel.

    Cars have to request one of the machines. When they got one, they
    can start the washing processes and wait for it to finish (which
    takes ``washtime`` minutes).

    """
    def __init__(self, env, num_machines, washtime):
        self.env = env
        self.machine = simpy.Resource(env, num_machines)
        self.washtime = washtime

    def wash(self, car):
        """The washing processes. It takes a ``car`` processes and tries
        to clean it."""
        yield self.env.timeout(WASHTIME)
        print("Carwashed removed %d%% of %s's dirt." %
              (random.randint(50, 99), car))


def car(env, name, cw):
    """The car process (each car has a ``name``) arrives at the carwash
    (``cw``) and requests a cleaning machine.

    It then starts the washing process, waits for it to finish and
    leaves to never come back ...

    """
    print('%s arrives at the carwash at %.2f.' % (name, env.now))
    with cw.machine.request() as request:
        yield request

        print('%s enters the carwash at %.2f.' % (name, env.now))
        yield env.process(cw.wash(name))

        print('%s leaves the carwash at %.2f.' % (name, env.now))


def setup(env, num_machines, washtime, t_inter):
    """Create a carwash, a number of initial cars and keep creating cars
    approx. every ``t_inter`` minutes."""
    # Create the carwash
    carwash = Carwash(env, num_machines, washtime)

    # Create 4 initial cars
    for i in range(4):
        env.process(car(env, 'Car %d' % i, carwash))

    # Create more cars while the simulation is running
    while True:
        yield env.timeout(random.randint(t_inter-2, t_inter+2))
        i += 1
        env.process(car(env, 'Car %d' % i, carwash))


# Setup and start the simulation
print('Carwash')
print('Check out http://youtu.be/fXXmeP9TvBg while simulating ... ;-)')
random.seed(RANDOM_SEED)  # This helps reproducing the results

# Create an environment and start the setup process
env = simpy.Environment()
env.process(setup(env, NUM_MACHINES, WASHTIME, T_INTER))

# Execute!
env.run(until=SIM_TIME)

The simulation’s output:

Carwash
Check out http://youtu.be/fXXmeP9TvBg while simulating ... ;-)
Car 0 arrives at the carwash at 0.00.
Car 1 arrives at the carwash at 0.00.
Car 2 arrives at the carwash at 0.00.
Car 3 arrives at the carwash at 0.00.
Car 0 enters the carwash at 0.00.
Car 1 enters the carwash at 0.00.
Car 4 arrives at the carwash at 5.00.
Carwashed removed 97% of Car 0's dirt.
Carwashed removed 67% of Car 1's dirt.
Car 0 leaves the carwash at 5.00.
Car 1 leaves the carwash at 5.00.
Car 2 enters the carwash at 5.00.
Car 3 enters the carwash at 5.00.
Car 5 arrives at the carwash at 10.00.
Carwashed removed 64% of Car 2's dirt.
Carwashed removed 58% of Car 3's dirt.
Car 2 leaves the carwash at 10.00.
Car 3 leaves the carwash at 10.00.
Car 4 enters the carwash at 10.00.
Car 5 enters the carwash at 10.00.
Carwashed removed 97% of Car 4's dirt.
Carwashed removed 56% of Car 5's dirt.
Car 4 leaves the carwash at 15.00.
Car 5 leaves the carwash at 15.00.
Car 6 arrives at the carwash at 16.00.
Car 6 enters the carwash at 16.00.

Machine Shop

Covers:

  • Interrupts
  • Resources: PreemptiveResource

This example comprises a workshop with n identical machines. A stream of jobs (enough to keep the machines busy) arrives. Each machine breaks down periodically. Repairs are carried out by one repairman. The repairman has other, less important tasks to perform, too. Broken machines preempt theses tasks. The repairman continues them when he is done with the machine repair. The workshop works continuously.

A machine has two processes: working implements the actual behaviour of the machine (producing parts). break_machine periodically interrupts the working process to simulate the machine failure.

The repairman’s other job is also a process (implemented by other_job). The repairman itself is a PreemptiveResource with a capacity of 1. The machine repairing has a priority of 1, while the other job has a priority of 2 (the smaller the number, the higher the priority).

"""
Machine shop example

Covers:

- Interrupts
- Resources: PreemptiveResource

Scenario:
  A workshop has *n* identical machines. A stream of jobs (enough to
  keep the machines busy) arrives. Each machine breaks down
  periodically. Repairs are carried out by one repairman. The repairman
  has other, less important tasks to perform, too. Broken machines
  preempt theses tasks. The repairman continues them when he is done
  with the machine repair. The workshop works continuously.

"""
import random

import simpy


RANDOM_SEED = 42
PT_MEAN = 10.0         # Avg. processing time in minutes
PT_SIGMA = 2.0         # Sigma of processing time
MTTF = 300.0           # Mean time to failure in minutes
BREAK_MEAN = 1 / MTTF  # Param. for expovariate distribution
REPAIR_TIME = 30.0     # Time it takes to repair a machine in minutes
JOB_DURATION = 30.0    # Duration of other jobs in minutes
NUM_MACHINES = 10      # Number of machines in the machine shop
WEEKS = 4              # Simulation time in weeks
SIM_TIME = WEEKS * 7 * 24 * 60  # Simulation time in minutes


def time_per_part():
    """Return actual processing time for a concrete part."""
    return random.normalvariate(PT_MEAN, PT_SIGMA)


def time_to_failure():
    """Return time until next failure for a machine."""
    return random.expovariate(BREAK_MEAN)


class Machine(object):
    """A machine produces parts and my get broken every now and then.

    If it breaks, it requests a *repairman* and continues the production
    after the it is repaired.

    A machine has a *name* and a numberof *parts_made* thus far.

    """
    def __init__(self, env, name, repairman):
        self.env = env
        self.name = name
        self.parts_made = 0
        self.broken = False

        # Start "working" and "break_machine" processes for this machine.
        self.process = env.process(self.working(repairman))
        env.process(self.break_machine())

    def working(self, repairman):
        """Produce parts as long as the simulation runs.

        While making a part, the machine may break multiple times.
        Request a repairman when this happens.

        """
        while True:
            # Start making a new part
            done_in = time_per_part()
            while done_in:
                try:
                    # Working on the part
                    start = self.env.now
                    yield self.env.timeout(done_in)
                    done_in = 0  # Set to 0 to exit while loop.

                except simpy.Interrupt:
                    self.broken = True
                    done_in -= self.env.now - start  # How much time left?

                    # Request a repairman. This will preempt its "other_job".
                    with repairman.request(priority=1) as req:
                        yield req
                        yield self.env.timeout(REPAIR_TIME)

                    self.broken = False

            # Part is done.
            self.parts_made += 1

    def break_machine(self):
        """Break the machine every now and then."""
        while True:
            yield self.env.timeout(time_to_failure())
            if not self.broken:
                # Only break the machine if it is currently working.
                self.process.interrupt()


def other_jobs(env, repairman):
    """The repairman's other (unimportant) job."""
    while True:
        # Start a new job
        done_in = JOB_DURATION
        while done_in:
            # Retry the job until it is done.
            # It's priority is lower than that of machine repairs.
            with repairman.request(priority=2) as req:
                yield req
                try:
                    start = env.now
                    yield env.timeout(done_in)
                    done_in = 0
                except simpy.Interrupt:
                    done_in -= env.now - start


# Setup and start the simulation
print('Machine shop')
random.seed(RANDOM_SEED)  # This helps reproducing the results

# Create an environment and start the setup process
env = simpy.Environment()
repairman = simpy.PreemptiveResource(env, capacity=1)
machines = [Machine(env, 'Machine %d' % i, repairman)
        for i in range(NUM_MACHINES)]
env.process(other_jobs(env, repairman))

# Execute!
env.run(until=SIM_TIME)

# Analyis/results
print('Machine shop results after %s weeks' % WEEKS)
for machine in machines:
    print('%s made %d parts.' % (machine.name, machine.parts_made))

The simulation’s output:

Machine shop
Machine shop results after 4 weeks
Machine 0 made 3251 parts.
Machine 1 made 3273 parts.
Machine 2 made 3242 parts.
Machine 3 made 3343 parts.
Machine 4 made 3387 parts.
Machine 5 made 3244 parts.
Machine 6 made 3269 parts.
Machine 7 made 3185 parts.
Machine 8 made 3302 parts.
Machine 9 made 3279 parts.

Movie Renege

Covers:

  • Resources: Resource
  • Condition events
  • Shared events

This examples models a movie theater with one ticket counter selling tickets for three movies (next show only). People arrive at random times and triy to buy a random number (1–6) tickets for a random movie. When a movie is sold out, all people waiting to buy a ticket for that movie renege (leave the queue).

The movie theater is just a container for all the related data (movies, the counter, tickets left, collected data, ...). The counter is a Resource with a capacity of one.

The moviegoer process starts waiting until either it’s his turn (it acquires the counter resource) or until the sold out signal is triggered. If the latter is the case it reneges (leaves the queue). If it gets to the counter, it tries to buy some tickets. This might not be successful, e.g. if the process tries to buy 5 tickets but only 3 are left. If less then two tickets are left after the ticket purchase, the sold out signal is triggered.

Moviegoers are generated by the customer arrivals process. It also chooses a movie and the number of tickets for the moviegoer.

"""
Movie renege example

Covers:

- Resources: Resource
- Condition events
- Shared events

Scenario:
  A movie theatre has one ticket counter selling tickets for three
  movies (next show only). When a movie is sold out, all people waiting
  to buy tickets for that movie renege (leave queue).

"""
import collections
import random

import simpy


RANDOM_SEED = 42
TICKETS = 50  # Number of tickets per movie
SIM_TIME = 120  # Simulate until


def moviegoer(env, movie, num_tickets, theater):
    """A moviegoer tries to by a number of tickets (*num_tickets*) for
    a certain *movie* in a *theater*.

    If the movie becomes sold out, she leaves the theater. If she gets
    to the counter, she tries to buy a number of tickets. If not enough
    tickets are left, she argues with the teller and leaves.

    If at most one ticket is left after the moviegoer bought her
    tickets, the *sold out* event for this movie is triggered causing
    all remaining moviegoers to leave.

    """
    with theater.counter.request() as my_turn:
        # Wait until its our turn or until the movie is sold out
        result = yield my_turn | theater.sold_out[movie]

        # Check if it's our turn of if movie is sold out
        if my_turn not in result:
            theater.num_renegers[movie] += 1
            env.exit()

        # Check if enough tickets left.
        if theater.available[movie] < num_tickets:
            # Moviegoer leaves after some discussion
            yield env.timeout(0.5)
            env.exit()

        # Buy tickets
        theater.available[movie] -= num_tickets
        if theater.available[movie] < 2:
            # Trigger the "sold out" event for the movie
            theater.sold_out[movie].succeed()
            theater.when_sold_out[movie] = env.now
            theater.available[movie] = 0
        yield env.timeout(1)


def customer_arrivals(env, theater):
    """Create new *moviegoers* until the sim time reaches 120."""
    while True:
        yield env.timeout(random.expovariate(1 / 0.5))

        movie = random.choice(theater.movies)
        num_tickets = random.randint(1, 6)
        if theater.available[movie]:
            env.process(moviegoer(env, movie, num_tickets, theater))


Theater = collections.namedtuple('Theater', 'counter, movies, available, '
                                            'sold_out, when_sold_out, '
                                            'num_renegers')


# Setup and start the simulation
print('Movie renege')
random.seed(RANDOM_SEED)
env = simpy.Environment()

# Create movie theater
counter = simpy.Resource(env, capacity=1)
movies = ['Python Unchained', 'Kill Process', 'Pulp Implementation']
available = {movie: TICKETS for movie in movies}
sold_out = {movie: env.event() for movie in movies}
when_sold_out = {movie: None for movie in movies}
num_renegers = {movie: 0 for movie in movies}
theater = Theater(counter, movies, available, sold_out, when_sold_out,
                  num_renegers)

# Start process and run
env.process(customer_arrivals(env, theater))
env.run(until=SIM_TIME)

# Analysis/results
for movie in movies:
    if theater.sold_out[movie]:
        print('Movie "%s" sold out %.1f minutes after ticket counter '
              'opening.' % (movie, theater.when_sold_out[movie]))
        print('  Number of people leaving queue when film sold out: %s' %
              theater.num_renegers[movie])

The simulation’s output:

Movie renege
Movie "Python Unchained" sold out 38.0 minutes after ticket counter opening.
  Number of people leaving queue when film sold out: 16
Movie "Kill Process" sold out 43.0 minutes after ticket counter opening.
  Number of people leaving queue when film sold out: 5
Movie "Pulp Implementation" sold out 28.0 minutes after ticket counter opening.
  Number of people leaving queue when film sold out: 5

Gas Station Refueling

Covers:

  • Resources: Resource
  • Resources: Container
  • Waiting for other processes

This examples models a gas station and cars that arrive at the station for refueling.

The gas station has a limited number of fuel pumps and a fuel tank that is shared between the fuel pumps. The gas station is thus modeled as Resource. The shared fuel tank is modeled with a Container.

Vehicles arriving at the gas station first request a fuel pump from the station. Once they acquire one, they try to take the desired amount of fuel from the fuel pump. They leave when they are done.

The gas stations fuel level is reqularly monitored by gas station control. When the level drops below a certain threshold, a tank truck is called to refuel the gas station itself.

"""
Gas Station Refueling example

Covers:

- Resources: Resource
- Resources: Container
- Waiting for other processes

Scenario:
  A gas station has a limited number of gas pumps that share a common
  fuel reservoir. Cars randomly arrive at the gas station, request one
  of the fuel pumps and start refueling from that reservoir.

  A gas station control process observes the gas station's fuel level
  and calls a tank truck for refueling if the station's level drops
  below a threshold.

"""
import itertools
import random

import simpy


RANDOM_SEED = 42
GAS_STATION_SIZE = 200     # liters
THRESHOLD = 10             # Threshold for calling the tank truck (in %)
FUEL_TANK_SIZE = 50        # liters
FUEL_TANK_LEVEL = [5, 25]  # Min/max levels of fuel tanks (in liters)
REFUELING_SPEED = 2        # liters / second
TANK_TRUCK_TIME = 300      # Seconds it takes the tank truck to arrive
T_INTER = [30, 300]        # Create a car every [min, max] seconds
SIM_TIME = 1000            # Simulation time in seconds


def car(name, env, gas_station, fuel_pump):
    """A car arrives at the gas station for refueling.

    It requests one of the gas station's fuel pumps and tries to get the
    desired amount of gas from it. If the stations reservoir is
    depleted, the car has to wait for the tank truck to arrive.

    """
    fuel_tank_level = random.randint(*FUEL_TANK_LEVEL)
    print('%s arriving at gas station at %.1f' % (name, env.now))
    with gas_station.request() as req:
        start = env.now
        # Request one of the gas pumps
        yield req

        # Get the required amount of fuel
        liters_required = FUEL_TANK_SIZE - fuel_tank_level
        yield fuel_pump.get(liters_required)

        # The "actual" refueling process takes some time
        yield env.timeout(liters_required / REFUELING_SPEED)

        print('%s finished refueling in %.1f seconds.' % (name,
                                                          env.now - start))


def gas_station_control(env, fuel_pump):
    """Periodically check the level of the *fuel_pump* and call the tank
    truck if the level falls below a threshold."""
    while True:
        if fuel_pump.level / fuel_pump.capacity * 100 < THRESHOLD:
            # We need to call the tank truck now!
            print('Calling tank truck at %d' % env.now)
            # Wait for the tank truck to arrive and refuel the station
            yield env.process(tank_truck(env, fuel_pump))

        yield env.timeout(10)  # Check every 10 seconds


def tank_truck(env, fuel_pump):
    """Arrives at the gas station after a certain delay and refuels it."""
    yield env.timeout(TANK_TRUCK_TIME)
    print('Tank truck arriving at time %d' % env.now)
    ammount = fuel_pump.capacity - fuel_pump.level
    print('Tank truck refuelling %.1f liters.' % ammount)
    yield fuel_pump.put(ammount)


def car_generator(env, gas_station, fuel_pump):
    """Generate new cars that arrive at the gas station."""
    for i in itertools.count():
        yield env.timeout(random.randint(*T_INTER))
        env.process(car('Car %d' % i, env, gas_station, fuel_pump))


# Setup and start the simulation
print('Gas Station refuelling')
random.seed(RANDOM_SEED)

# Create environment and start processes
env = simpy.Environment()
gas_station = simpy.Resource(env, 2)
fuel_pump = simpy.Container(env, GAS_STATION_SIZE, init=GAS_STATION_SIZE)
env.process(gas_station_control(env, fuel_pump))
env.process(car_generator(env, gas_station, fuel_pump))

# Execute!
env.run(until=SIM_TIME)

The simulation’s output:

Gas Station refuelling
Car 0 arriving at gas station at 87.0
Car 0 finished refueling in 18.5 seconds.
Car 1 arriving at gas station at 129.0
Car 1 finished refueling in 19.0 seconds.
Car 2 arriving at gas station at 284.0
Car 2 finished refueling in 21.0 seconds.
Car 3 arriving at gas station at 385.0
Car 3 finished refueling in 13.5 seconds.
Car 4 arriving at gas station at 459.0
Calling tank truck at 460
Car 4 finished refueling in 22.0 seconds.
Car 5 arriving at gas station at 705.0
Car 6 arriving at gas station at 750.0
Tank truck arriving at time 760
Tank truck refuelling 188.0 liters.
Car 6 finished refueling in 29.0 seconds.
Car 5 finished refueling in 76.5 seconds.
Car 7 arriving at gas station at 891.0
Car 7 finished refueling in 13.0 seconds.

Process Communication

Covers:

  • Resources: Store

This example shows how to interconnect simulation model elements together using “resources.Store” for one-to-one, and many-to-one asynchronous processes. For one-to-many a simple BroadCastPipe class is constructed from Store.

When Useful:

When a consumer process does not always wait on a generating process and these processes run asynchronously. This example shows how to create a buffer and also tell is the consumer process was late yielding to the event from a generating process.

This is also useful when some information needs to be broadcast to many receiving processes

Finally, using pipes can simplify how processes are interconnected to each other in a simulation model.

Example By:
Keith Smith
"""
Process communication example

Covers:

- Resources: Store

Scenario:
  This example shows how to interconnect simulation model elements
  together using :class:`~simpy.resources.store.Store` for one-to-one,
  and many-to-one asynchronous processes. For one-to-many a simple
  BroadCastPipe class is constructed from Store.

When Useful:
  When a consumer process does not always wait on a generating process
  and these processes run asynchronously. This example shows how to
  create a buffer and also tell is the consumer process was late
  yielding to the event from a generating process.

  This is also useful when some information needs to be broadcast to
  many receiving processes

  Finally, using pipes can simplify how processes are interconnected to
  each other in a simulation model.

Example By:
  Keith Smith

"""
import random

import simpy


RANDOM_SEED = 42
SIM_TIME = 100


class BroadcastPipe(object):
    """A Broadcast pipe that allows one process to send messages to many.

    This construct is useful when message consumers are running at
    different rates than message generators and provides an event
    buffering to the consuming processes.

    The parameters are used to create a new
    :class:`~simpy.resources.store.Store` instance each time
    :meth:`get_output_conn()` is called.

    """
    def __init__(self, env, capacity=simpy.core.Infinity):
        self.env = env
        self.capacity = capacity
        self.pipes = []

    def put(self, value):
        """Broadcast a *value* to all receivers."""
        if not self.pipes:
            raise RuntimeError('There are no output pipes.')
        events = [store.put(value) for store in self.pipes]
        return self.env.all_of(events)  # Condition event for all "events"

    def get_output_conn(self):
        """Get a new output connection for this broadcast pipe.

        The return value is a :class:`~simpy.resources.store.Store`.

        """
        pipe = simpy.Store(self.env, capacity=self.capacity)
        self.pipes.append(pipe)
        return pipe


def message_generator(name, env, out_pipe):
    """A process which randomly generates messages."""
    while True:
        # wait for next transmission
        yield env.timeout(random.randint(6, 10))

        # messages are time stamped to later check if the consumer was
        # late getting them.  Note, using event.triggered to do this may
        # result in failure due to FIFO nature of simulation yields.
        # (i.e. if at the same env.now, message_generator puts a message
        # in the pipe first and then message_consumer gets from pipe,
        # the event.triggered will be True in the other order it will be
        # False
        msg = (env.now, '%s says hello at %d' % (name, env.now))
        out_pipe.put(msg)


def message_consumer(name, env, in_pipe):
    """A process which consumes messages."""
    while True:
        # Get event for message pipe
        msg = yield in_pipe.get()

        if msg[0] < env.now:
            # if message was already put into pipe, then
            # message_consumer was late getting to it. Depending on what
            # is being modeled this, may, or may not have some
            # significance
            print('LATE Getting Message: at time %d: %s received message: %s' %
                    (env.now, name, msg[1]))

        else:
            # message_consumer is synchronized with message_generator
            print('at time %d: %s received message: %s.' %
                    (env.now, name, msg[1]))

        # Process does some other work, which may result in missing messages
        yield env.timeout(random.randint(4, 8))


# Setup and start the simulation
print('Process communication')
random.seed(RANDOM_SEED)
env = simpy.Environment()

# For one-to-one or many-to-one type pipes, use Store
pipe = simpy.Store(env)
env.process(message_generator('Generator A', env, pipe))
env.process(message_consumer('Consumer A', env, pipe))

print('\nOne-to-one pipe communication\n')
env.run(until=SIM_TIME)

# For one-to many use BroadcastPipe
# (Note: could also be used for one-to-one,many-to-one or many-to-many)
env = simpy.Environment()
bc_pipe = BroadcastPipe(env)

env.process(message_generator('Generator A', env, bc_pipe))
env.process(message_consumer('Consumer A', env, bc_pipe.get_output_conn()))
env.process(message_consumer('Consumer B', env, bc_pipe.get_output_conn()))

print('\nOne-to-many pipe communication\n')
env.run(until=SIM_TIME)

The simulation’s output:

Process communication

One-to-one pipe communication

at time 6: Consumer A received message: Generator A says hello at 6.
at time 12: Consumer A received message: Generator A says hello at 12.
at time 19: Consumer A received message: Generator A says hello at 19.
at time 26: Consumer A received message: Generator A says hello at 26.
at time 36: Consumer A received message: Generator A says hello at 36.
at time 46: Consumer A received message: Generator A says hello at 46.
at time 52: Consumer A received message: Generator A says hello at 52.
at time 58: Consumer A received message: Generator A says hello at 58.
LATE Getting Message: at time 66: Consumer A received message: Generator A says hello at 65
at time 75: Consumer A received message: Generator A says hello at 75.
at time 85: Consumer A received message: Generator A says hello at 85.
at time 95: Consumer A received message: Generator A says hello at 95.

One-to-many pipe communication

at time 10: Consumer A received message: Generator A says hello at 10.
at time 10: Consumer B received message: Generator A says hello at 10.
at time 18: Consumer A received message: Generator A says hello at 18.
at time 18: Consumer B received message: Generator A says hello at 18.
at time 27: Consumer A received message: Generator A says hello at 27.
at time 27: Consumer B received message: Generator A says hello at 27.
at time 34: Consumer A received message: Generator A says hello at 34.
at time 34: Consumer B received message: Generator A says hello at 34.
at time 40: Consumer A received message: Generator A says hello at 40.
LATE Getting Message: at time 41: Consumer B received message: Generator A says hello at 40
at time 46: Consumer A received message: Generator A says hello at 46.
LATE Getting Message: at time 47: Consumer B received message: Generator A says hello at 46
at time 56: Consumer A received message: Generator A says hello at 56.
at time 56: Consumer B received message: Generator A says hello at 56.
at time 65: Consumer A received message: Generator A says hello at 65.
at time 65: Consumer B received message: Generator A says hello at 65.
at time 74: Consumer A received message: Generator A says hello at 74.
at time 74: Consumer B received message: Generator A says hello at 74.
at time 82: Consumer A received message: Generator A says hello at 82.
at time 82: Consumer B received message: Generator A says hello at 82.
at time 92: Consumer A received message: Generator A says hello at 92.
at time 92: Consumer B received message: Generator A says hello at 92.
at time 98: Consumer B received message: Generator A says hello at 98.
at time 98: Consumer A received message: Generator A says hello at 98.

Event Latency

Covers:

  • Resources: Store

This example shows how to separate the time delay of events between processes from the processes themselves.

When Useful:

When modeling physical things such as cables, RF propagation, etc. it better encapsulation to keep this propagation mechanism outside of the sending and receiving processes.

Can also be used to interconnect processes sending messages

Example by:
Keith Smith
"""
Event Latency example

Covers:

- Resources: Store

Scenario:
  This example shows how to separate the time delay of events between
  processes from the processes themselves.

When Useful:
  When modeling physical things such as cables, RF propagation, etc.  it
  better encapsulation to keep this propagation mechanism outside of the
  sending and receiving processes.

  Can also be used to interconnect processes sending messages

Example by:
  Keith Smith

"""
import simpy


SIM_DURATION = 100


class Cable(object):
    """This class represents the propagation through a cable."""
    def __init__(self, env, delay):
        self.env = env
        self.delay = delay
        self.store = simpy.Store(env)

    def latency(self, value):
        yield self.env.timeout(self.delay)
        self.store.put(value)

    def put(self, value):
        self.env.process(self.latency(value))

    def get(self):
        return self.store.get()


def sender(env, cable):
    """A process which randomly generates messages."""
    while True:
        # wait for next transmission
        yield env.timeout(5)
        cable.put('Sender sent this at %d' % env.now)


def receiver(env, cable):
    """A process which consumes messages."""
    while True:
        # Get event for message pipe
        msg = yield cable.get()
        print('Received this at %d while %s' % (env.now, msg))


# Setup and start the simulation
print('Event Latency')
env = simpy.Environment()

cable = Cable(env, 10)
env.process(sender(env, cable))
env.process(receiver(env, cable))

env.run(until=SIM_DURATION)

The simulation’s output:

Event Latency
Received this at 15 while Sender sent this at 5
Received this at 20 while Sender sent this at 10
Received this at 25 while Sender sent this at 15
Received this at 30 while Sender sent this at 20
Received this at 35 while Sender sent this at 25
Received this at 40 while Sender sent this at 30
Received this at 45 while Sender sent this at 35
Received this at 50 while Sender sent this at 40
Received this at 55 while Sender sent this at 45
Received this at 60 while Sender sent this at 50
Received this at 65 while Sender sent this at 55
Received this at 70 while Sender sent this at 60
Received this at 75 while Sender sent this at 65
Received this at 80 while Sender sent this at 70
Received this at 85 while Sender sent this at 75
Received this at 90 while Sender sent this at 80
Received this at 95 while Sender sent this at 85

You have ideas for better examples? Please send them to our mainling list or make a pull request on bitbucket.

API Reference

The API reference provides detailed descriptions of SimPy’s classes and functions. It should be helpful if you plan to extend Simpy with custom components.

simpy — The end user API

The simpy module provides SimPy’s end-user API. It aggregates Simpy’s most important classes and methods. This is purely for your convenience. You can of course also access everything (and more!) via their actual submodules.

Core classes and functions

  • Environment: SimPy’s central class. It contains the simulation’s state and lets the PEMs interact with it (i.e., schedule events).
  • Interrupt: This exception is thrown into a process if it gets interrupted by another one.

Resources

  • Container: Models the production and consumption of a homogeneous, undifferentiated bulk. It may either be continuous (like water) or discrete (like apples).
  • Store: Allows the production and consumption of discrete Python objects.
  • FilterStore: Like Store, but items taken out of it can be filtered with a user-defined function.

Other

simpy.test()

Runs SimPy’s test suite via py.test.

simpy.core — SimPy’s core components

This module contains the implementation of SimPy’s core classes. The most important ones are directly importable via simpy.

class simpy.core.BaseEnvironment

The abstract definition of an environment.

An implementation must at least provide the means to access the current time of the environment (see now) and to schedule (see schedule()) as well as execute (see step() and run()) events.

The class is meant to be subclassed for different execution environments. For example, SimPy defines a Environment for simulations with a virtual time and and a RealtimeEnvironment that schedules and executes events in real (e.g., wallclock) time.

now

The current time of the environment.

active_process

The currently active process of the environment.

schedule(event, priority=1, delay=0)

Schedule an event with a given priority and a delay.

There are two default priority values, URGENT and NORMAL.

step()

Process the next event.

run(until=None)

Executes step() until the given criterion until is met.

  • If it is None (which is the default) this method will return if there are no further events to be processed.
  • If it is an Event the method will continue stepping until this event has been triggered and will return its value.
  • If it can be converted to a number the method will continue stepping until the environment’s time reaches until.
class simpy.core.Environment(initial_time=0)

Inherits BaseEnvironment and implements a simulation environment which simulates the passing of time by stepping from event to event.

You can provide an initial_time for the environment. By defaults, it starts at 0.

This class also provides aliases for common event types, for example process, timeout and event.

now

The current simulation time.

active_process

The currently active process of the environment.

process(generator)

Create a new Process instance for generator.

timeout(delay, value=None)

Return a new Timeout event with a delay and, optionally, a value.

event()

Return a new Event instance. Yielding this event suspends a process until another process triggers the event.

all_of(events)

Return a new AllOf condition for a list of events.

any_of(events)

Return a new AnyOf condition for a list of events.

exit(value=None)

Convenience function provided for Python versions prior to 3.3. Stop the current process, optionally providing a value.

Note

From Python 3.3, you can use return value instead.

schedule(event, priority=1, delay=0)

Schedule an event with a given priority and a delay.

peek()

Get the time of the next scheduled event. Return Infinity if there is no further event.

step()

Process the next event.

Raise an EmptySchedule if no further events are available.

run(until=None)

Executes step() until the given criterion until is met.

  • If it is None (which is the default) this method will return if there are no further events to be processed.
  • If it is an Event the method will continue stepping until this event has been triggered and will return its value.
  • If it can be converted to a number the method will continue stepping until the environment’s time reaches until.
class simpy.core.BoundClass(cls)

Allows classes to behave like methods.

The __get__() descriptor is basically identical to function.__get__() and binds the first argument of the cls to the descriptor instance.

static bind_early(instance)

Bind all BoundClass attributes of the instance’s class to the instance itself to increase performance.

class simpy.core.EmptySchedule

Thrown by the Environment if there are no further events to be processed.

simpy.core.Infinity = inf

Convenience alias for infinity

simpy.events — Core event types

This events module contains the various event type used by the SimPy core.

The base class for all events is Event. Though it can be directly used, there are several specialized subclasses of it:

  • Timeout: is scheduled with a certain delay and lets processes hold their state for a certain amount of time.
  • Initialize: Initializes a new Process.
  • Process: Processes are also modeled as an event so other processes can wait until another one finishes.
  • Condition: Events can be concatenated with | an & to either wait until one or both of the events are triggered.
  • AllOf: Special case of Condition; wait until a list of events has been triggered.
  • AnyOf: Special case of Condition; wait until one of a list of events has been triggered.

This module also defines the Interrupt exception.

simpy.events.PENDING = object()

Unique object to identify pending values of events.

simpy.events.URGENT = 0

Priority of interrupts and process initialization events.

simpy.events.NORMAL = 1

Default priority used by events.

class simpy.events.Event(env)

Base class for all events.

Every event is bound to an environment env (see BaseEnvironment) and has an optional value.

An event has a list of callbacks. A callback can be any callable that accepts a single argument which is the event instances the callback belongs to. This list is not exclusively for SimPy internals—you can also append custom callbacks. All callbacks are executed in the order that they were added when the event is processed.

This class also implements __and__() (&) and __or__() (|). If you concatenate two events using one of these operators, a Condition event is generated that lets you wait for both or one of them.

env = None

The Environment the event lives in.

callbacks = None

List of functions that are called when the event is processed.

triggered

Becomes True if the event has been triggered and its callbacks are about to be invoked.

processed

Becomes True if the event has been processed (e.g., its callbacks have been invoked).

value

The value of the event if it is available.

The value is available when the event has been triggered.

Raise a AttributeError if the value is not yet available.

trigger(event)

Triggers the event with the state and value of the provided event.

This method can be used directly as a callback function.

succeed(value=None)

Schedule the event and mark it as successful. Return the event instance.

You can optionally pass an arbitrary value that will be sent into processes waiting for that event.

Raise a RuntimeError if this event has already been scheduled.

fail(exception)

Schedule the event and mark it as failed. Return the event instance.

The exception will be thrown into processes waiting for that event.

Raise a ValueError if exception is not an Exception.

Raise a RuntimeError if this event has already been scheduled.

class simpy.events.Timeout(env, delay, value=None)

An Event that is scheduled with a certain delay after its creation.

This event can be used by processes to wait (or hold their state) for delay time steps. It is immediately scheduled at env.now + delay and has thus (in contrast to Event) no success() or fail() method.

class simpy.events.Initialize(env, process)

Initializes a process. Only used internally by Process.

class simpy.events.Interruption(process, cause)

Interrupts a process while waiting for another event.

class simpy.events.Process(env, generator)

A Process is a wrapper for the process generator (that is returned by a process function) during its execution.

It also contains internal and external status information and is used for process interaction, e.g., for interrupts.

Process inherits Event. You can thus wait for the termination of a process by simply yielding it from your process function.

An instance of this class is returned by simpy.core.Environment.process().

target

The event that the process is currently waiting for.

Returns None if the process is dead.

is_alive

True until the process generator exits.

interrupt(cause=None)

Interupt this process optionally providing a cause.

A process cannot be interrupted if it already terminated. A process can also not interrupt itself. Raise a RuntimeError in these cases.

class simpy.events.Condition(env, evaluate, events)

A Condition Event groups several events and is triggered if a given condition (implemented by the evaluate function) becomes true.

The value of the condition is a dictionary that maps the input events to their respective values. It only contains entries for those events that occurred until the condition was met.

If one of the events fails, the condition also fails and forwards the exception of the failing event.

The evaluate function receives the list of target events and the number of processed events in this list. If it returns True, the condition is scheduled. The Condition.all_events() and Condition.any_events() functions are used to implement and (&) and or (|) for events.

Conditions events can be nested.

static all_events(events, count)

A condition function that returns True if all events have been triggered.

static any_events(events, count)

A condition function that returns True if at least one of events has been triggered.

class simpy.events.AllOf(env, events)

A Condition event that waits for all events.

class simpy.events.AnyOf(env, events)

A Condition event that waits until the first of events is triggered.

exception simpy.events.Interrupt

This exceptions is sent into a process if it is interrupted by another process (see Process.interrupt()).

cause may be none if no cause was explicitly passed to Process.interrupt().

An interrupt has a higher priority as a normal event. Thus, if a process has a normal event and an interrupt scheduled at the same time, the interrupt will always be thrown into the process first.

If a process is interrupted multiple times at the same time, all interrupts will be thrown into the process in the same order as they occurred.

cause

The cause of the interrupt or None if no cause was provided.

simpy.monitoring — Monitor SimPy simulations

SimPy’s monitoring capabilities will be added in version 3.1.

simpy.resources — SimPy’s built-in resource types

SimPy defines three kinds of resources with one or more concrete resource types each:

  • resource: Resources that can be used by a limited number of processes at a time (e.g., a gas station with a limited number of fuel pumps).
  • container: Resources that model the production and consumption of a homogeneous, undifferentiated bulk. It may either be continuous (like water) or discrete (like apples).
  • store: Resources that allow the production and consumption of discrete Python objects.

The base module defines the base classes that are used by all resource types.

simpy.resources.base — Base classes for all resources

This module contains the base classes for Simpy’s resource system.

BaseResource defines the abstract base resource. The request for putting something into or getting something out of a resource is modeled as an event that has to be yielded by the requesting process. Put and Get are the base event types for this.

class simpy.resources.base.BaseResource(env)

This is the abstract base class for all SimPy resources.

All resources are bound to a specific Environment env.

You can put() something into the resources or get() something out of it. Both methods return an event that the requesting process has to yield.

If a put or get operation can be performed immediately (because the resource is not full (put) or not empty (get)), that event is triggered immediately.

If a resources is too full or too empty to perform a put or get request, the event is pushed to the put_queue or get_queue. An event is popped from one of these queues and triggered as soon as the corresponding operation is possible.

put() and get() only provide the user API and the general framework and should not be overridden in subclasses. The actual behavior for what happens when a put/get succeeds should rather be implemented in _do_put() and _do_get().

PutQueue

The type to be used for the put_queue. This can either be a plain list (default) or a subclass of it.

alias of list

GetQueue

The type to be used for the get_queue. This can either be a plain list (default) or a subclass of it.

alias of list

put_queue = None

Queue/list of events waiting to get something out of the resource.

get_queue = None

Queue/list of events waiting to put something into the resource.

put

Create a new Put event.

alias of Put

get

Create a new Get event.

alias of Get

_do_put(event)

Actually perform the put operation.

This methods needs to be implemented by subclasses. It receives the put_event that is created at each request and doesn’t need to return anything.

_trigger_put(get_event)

Trigger pending put events after a get event has been executed.

_do_get(event)

Actually perform the get operation.

This methods needs to be implemented by subclasses. It receives the get_event that is created at each request and doesn’t need to return anything.

_trigger_get(put_event)

Trigger pending get events after a put event has been executed.

class simpy.resources.base.Put(resource)

The base class for all put events.

It receives the resource that created the event.

This event (and all of its subclasses) can act as context manager and can be used with the with statement to automatically cancel a put request if an exception or an simpy.events.Interrupt occurs:

with res.put(item) as request:
    yield request

It is not used directly by any resource, but rather sub-classed for each type.

cancel(exc_type, exc_value, traceback)

Cancel the current put request.

This method has to be called if a process received an Interrupt or an exception while yielding this event and is not going to yield this event again.

If the event was created in a with statement, this method is called automatically.

class simpy.resources.base.Get(resource)

The base class for all get events.

It receives the resource that created the event.

This event (and all of its subclasses) can act as context manager and can be used with the with statement to automatically cancel a get request if an exception or an simpy.events.Interrupt occurs:

with res.get() as request:
    yield request

It is not used directly by any resource, but rather sub-classed for each type.

cancel(exc_type, exc_value, traceback)

Cancel the current get request.

This method has to be called if a process received an Interrupt or an exception while yielding this event and is not going to yield this event again.

If the event was created in a with statement, this method is called automatically.

simpy.resources.container — Container type resources

This module contains all Container like resources.

Containers model the production and consumption of a homogeneous, undifferentiated bulk. It may either be continuous (like water) or discrete (like apples).

For example, a gasoline station stores gas (petrol) in large tanks. Tankers increase, and refuelled cars decrease, the amount of gas in the station’s storage tanks.

class simpy.resources.container.Container(env, capacity=inf, init=0)

Models the production and consumption of a homogeneous, undifferentiated bulk. It may either be continuous (like water) or discrete (like apples).

The env parameter is the Environment instance the container is bound to.

The capacity defines the size of the container and must be a positive number (> 0). By default, a container is of unlimited size. You can specify the initial level of the container via init. It must be >= 0 and is 0 by default.

Raise a ValueError if capacity <= 0, init < 0 or init > capacity.

capacity

The maximum capacity of the container.

level

The current level of the container (a number between 0 and capacity).

put

Creates a new ContainerPut event.

alias of ContainerPut

get

Creates a new ContainerGet event.

alias of ContainerGet

class simpy.resources.container.ContainerPut(container, amount)

An event that puts amount into the container. The event is triggered as soon as there’s enough space in the container.

Raise a ValueError if amount <= 0.

amount = None

The amount to be put into the container.

class simpy.resources.container.ContainerGet(resource, amount)

An event that gets amount from the container. The event is triggered as soon as there’s enough content available in the container.

Raise a ValueError if amount <= 0.

amount = None

The amount to be taken out of the container.

simpy.resources.resource – Resource type resources

This module contains all Resource like resources.

These resources can be used by a limited number of processes at a time (e.g., a gas station with a limited number of fuel pumps). Processes request these resources to become a user (or to own them) and have to release them once they are done (e.g., vehicles arrive at the gas station, use a fuel-pump, if one is available, and leave when they are done).

Requesting a resources is modeled as “putting a process’ token into the resources” and releasing a resources correspondingly as “getting a process’ token out of the resource”. Thus, calling request()/release() is equivalent to calling put()/get(). Note, that releasing a resource will always succeed immediately, no matter if a process is actually using a resource or not.

Beside Resource, there are a PriorityResource, were processes can define a request priority, and a PreemptiveResource whose resource users can be preempted by other processes with a higher priority.

class simpy.resources.resource.Resource(env, capacity=1)

A resource has a limited number of slots that can be requested by a process.

If all slots are taken, requesters are put into a queue. If a process releases a slot, the next process is popped from the queue and gets one slot.

The env parameter is the Environment instance the resource is bound to.

The capacity defines the number of slots and must be a positive integer.

users = None

List of Request events for the processes that are currently using the resource.

queue = None

Queue/list of pending Request events that represent processes waiting to use the resource.

capacity

Maximum capacity of the resource.

count

Number of users currently using the resource.

request

Create a new Request event.

alias of Request

release

Create a new Release event.

alias of Release

class simpy.resources.resource.PriorityResource(env, capacity=1)

This class works like Resource, but requests are sorted by priority.

The queue is kept sorted by priority in ascending order (a lower value for priority results in a higher priority), so more important request will get the resource earlier.

PutQueue

The type to be used for the put_queue.

alias of SortedQueue

GetQueue

The type to be used for the get_queue.

alias of list

request

Create a new PriorityRequest event.

alias of PriorityRequest

class simpy.resources.resource.PreemptiveResource(env, capacity=1)

This resource mostly works like Resource, but users of the resource can be preempted by higher prioritized requests.

Furthermore, the queue of requests is also sorted by priority.

If a less important request is preempted, the process of that request will receive an Interrupt with a Preempted instance as cause.

class simpy.resources.resource.Preempted(by, usage_since)
by = None

The preempting simpy.events.Process.

usage_since = None

The simulation time at which the preempted process started to use the resource.

class simpy.resources.resource.Request(resource)

Request access on the resource. The event is triggered once access is granted.

If the maximum capacity of users is not reached, the requesting process obtains the resource immediately. If the maximum capacity is reached, the requesting process waits until another process releases the resource.

The request is automatically released when the request was created within a with statement.

class simpy.resources.resource.Release(resource, request)

Releases the access privilege to resource granted by request. This event is triggered immediately.

If there’s another process waiting for the resource, resume it.

If the request was made in a with statement (e.g., with res.request() as req:), this method is automatically called when the with block is left.

request = None

The request (Request) that is to be released.

class simpy.resources.resource.PriorityRequest(resource, priority=0, preempt=True)

Request the resource with a given priority. If the resource supports preemption and preempted is true other processes with access to the resource may be preempted (see PreemptiveResource for details).

This event type inherits Request and adds some additional attributes needed by PriorityResource and PreemptiveResource

priority = None

The priority of this request. A smaller number means higher priority.

preempt = None

Indicates whether the request should preempt a resource user or not (this flag is not taken into account by PriorityResource).

time = None

The time at which the request was made.

key = None

Key for sorting events. Consists of the priority (lower value is more important), the time at witch the request was made (earlier requests are more important) and finally the preemption flag (preempt requests are more important).

class simpy.resources.resource.SortedQueue(maxlen=None)

Queue that sorts events by their key attribute.

maxlen = None

Maximum length of the queue.

append(item)

Append item to the queue and keep the queue sorted.

Raise a RuntimeError if the queue is full.

simpy.resources.store — Store type resources

This module contains all Store like resources.

Stores model the production and consumption of concrete objects. The object type is, by default, not restricted. A single Store can even contain multiple types of objects.

Beside Store, there is a FilterStore that lets you use a custom function to filter the objects you get out of the store.

class simpy.resources.store.Store(env, capacity=inf)

Models the production and consumption of concrete Python objects.

Items put into the store can be of any type. By default, they are put and retrieved from the store in a first-in first-out order.

The env parameter is the Environment instance the container is bound to.

The capacity defines the size of the Store and must be a positive number (> 0). By default, a Store is of unlimited size. A ValueError is raised if the value is negative.

items = None

List of the items within the store.

capacity

The maximum capacity of the store.

put

Create a new StorePut event.

alias of StorePut

get

Create a new StoreGet event.

alias of StoreGet

class simpy.resources.store.FilterStore(env, capacity=inf)

The FilterStore subclasses Store and allows you to only get items that match a user-defined criteria.

This criteria is defined via a filter function that is passed to get(). get() only considers items for which this function returns True.

Note

In contrast to Store, processes trying to get an item from FilterStore won’t necessarily be processed in the same order that they made the request.

Example: The store is empty. Process 1 tries to get an item of type a, Process 2 an item of type b. Another process puts one item of type b into the store. Though Process 2 made his request after Process 1, it will receive that new item because Process 1 doesn’t want it.

GetQueue

The type to be used for the get_queue.

alias of FilterQueue

get

Create a new FilterStoreGet event.

alias of FilterStoreGet

class simpy.resources.store.StorePut(resource, item)

Put item into the store if possible or wait until it is.

item = None

The item to put into the store.

class simpy.resources.store.StoreGet(resource)

Get an item from the store or wait until one is available.

class simpy.resources.store.FilterStoreGet(resource, filter=lambda item: True)

Get an item from the store for which filter returns True. This event is triggered once such an event is available.

The default filter function returns True for all items, and thus this event exactly behaves like StoreGet.

filter = None

The filter function to use.

class simpy.resources.store.FilterQueue

A queue that only lists those events for which there is an item in the corresponding store.

simpy.rt — Real-time simulations

Provides an environment whose time passes according to the (scaled) real-time (aka wallclock time).

class simpy.rt.RealtimeEnvironment(initial_time=0, factor=1.0, strict=True)

An Environment which uses the real (e.g. wallclock) time.

A time step will take factor seconds of real time (one second by default); e.g., if you step from 0 until 3 with factor=0.5, the simpy.core.BaseEnvironment.run() call will take at least 1.5 seconds.

If the processing of the events for a time step takes too long, a RuntimeError is raised in step(). You can disable this behavior by setting strict to False.

factor = None

Scaling factor of the real-time.

strict = None

Running mode of the environment. step() will raise a RuntimeError if this is set to True and the processing of events takes too long.

step()

Waits until enough real-time has passed for the next event to happen.

The delay is scaled according to the real-time factor. If the events of a time step are processed too slowly for the given factor and if strict is enabled, a RuntimeError is raised.

simpy.util — Utility functions for SimPy

This modules contains various utility functions:

simpy.util.start_delayed(env, generator, delay)

Return a helper process that starts another process for generator after a certain delay.

process() starts a process at the current simulation time. This helper allows you to start a process after a delay of delay simulation time units:

>>> from simpy import Environment
>>> from simpy.util import start_delayed
>>> def my_process(env, x):
...     print('%s, %s' % (env.now, x))
...     yield env.timeout(1)
...
>>> env = Environment()
>>> proc = start_delayed(env, my_process(env, 3), 5)
>>> env.run()
5, 3

Raise a ValueError if delay <= 0.

simpy.util.subscribe_at(event)

Register at the event to receive an interrupt when it occurs.

The most common use case for this is to pass a Process to get notified when it terminates.

Raise a RuntimeError if event has already occurred.

About SimPy

This sections is all about the non-technical stuff. How did SimPy evolve? Who was responsible for it? And what the heck were they tinking when they made it?

SimPy History & Change Log

SimPy was originally based on ideas from Simula and Simscript but uses standard Python. It combines two previous packages, SiPy, in Simula-Style (Klaus Müller) and SimPy, in Simscript style (Tony Vignaux and Chang Chui).

SimPy was based on efficient implementation of co-routines using Python’s generators capability.

SimPy 3 introduced a completely new and easier-to-use API, but still relied on Python’s generators as they proved to work very well.

The package has been hosted on Sourceforge.net since September 15th, 2002. In June 2012, the project moved to Bitbucket.org.

3.0.5 – 2014-05-14

  • [CHANGE] Move interruption and all of the safety checks into a new event (pull request #30)
  • [FIX] FilterStore.get() now behaves correctly (issue #49).
  • [FIX] Documentation improvements.

3.0.4 – 2014-04-07

  • [NEW] Verified, that SimPy works on Python 3.4.
  • [NEW] Guide to SimPy events
  • [CHANGE] The result dictionary for condition events (AllOF / & and AnyOf / |) now is an OrderedDict sorted in the same way as the original events list.
  • [CHANGE] Condition events now also except processed events.
  • [FIX] Resource.request() directly after Resource.release() no longer successful. The process now has to wait as supposed to.
  • [FIX] Event.fail() now accept all exceptions derived from BaseException instead of only Exception.

3.0.3 – 2014-03-06

  • [NEW] Guide to SimPy basics.
  • [NEW] Guide to SimPy Environments.
  • [FIX] Timing problems with real time simulation on Windows (issue #46).
  • [FIX] Installation problems on Windows due to Unicode errors (issue #41).
  • [FIX] Minor documentation issues.

3.0.2 – 2013-10-24

  • [FIX] The default capacity for Container and FilterStore is now also inf.

3.0.1 – 2013-10-24

  • [FIX] Documentation and default parameters of Store didn’t match. Its default capacity is now inf.

3.0 – 2013-10-11

SimPy 3 has been completely rewritten from scratch. Our main goals were to simplify the API and code base as well as making SimPy more flexible and extensible. Some of the most important changes are:

  • Stronger focus on events. Processes yield event instances and are suspended until the event is triggered. An example for an event is a timeout (formerly known as hold), but even processes are now events, too (you can wait until a process terminates).
  • Events can be combined with & (and) and | (or) to create condition events.
  • Process can now be defined by any generator function. You don’t have to subclass Process anymore.
  • No more global simulation state. Every simulation stores its state in an environment which is comparable to the old Simulation class.
  • Improved resource system with newly added resource types.
  • Removed plotting and GUI capabilities. Pyside and matplotlib are much better with this.
  • Greatly improved test suite. Its cleaner, and the tests are shorter and more numerous.
  • Completely overhauled documentation.

There is a guide for porting from SimPy 2 to SimPy 3. If you want to stick to SimPy 2 for a while, change your requirements to 'SimPy>=2.3,<3'.

All in all, SimPy has become a framework for asynchronous programming based on coroutines. It brings more than ten years of experience and scientific know-how in the field of event-discrete simulation to the world of asynchronous programming and should thus be a solid foundation for everything based on an event loop.

You can find information about older versions on the history page

2.3.1 – 2012-01-28

  • [NEW] More improvements on the documentation.
  • [FIX] Syntax error in tkconsole.py when installing on Py3.2.
  • [FIX] Added mock to the dep. list in SimPy.test().

2.3 – 2011-12-24

  • [NEW] Support for Python 3.2. Support for Python <= 2.5 has been dropped.
  • [NEW] SimPy.test() method to run the tests on the installed version of SimPy.
  • [NEW] Tutorials/examples were integrated into the test suite.
  • [CHANGE] Even more code clean-up (e.g., removed prints throughout the code, removed if-main-blocks, ...).
  • [CHANGE] Many documentation improvements.

2.2 – 2011-09-27

  • [CHANGE] Restructured package layout to be conform to the Hitchhiker’s Guide to packaging
  • [CHANGE] Tests have been ported to pytest.
  • [CHANGE] Documentation improvements and clean-ups.
  • [FIX] Fixed incorrect behavior of Store._put, thanks to Johannes Koomer for the fix.

2.1 – 2010-06-03

  • [NEW] A function step has been added to the API. When called, it executes the next scheduled event. (step is actually a method of Simulation.)
  • [NEW] Another new function is peek. It returns the time of the next event. By using peek and step together, one can easily write e.g. an interactive program to step through a simulation event by event.
  • [NEW] A simple interactive debugger stepping.py has been added. It allows stepping through a simulation, with options to skip to a certain time, skip to the next event of a given process, or viewing the event list.
  • [NEW] Versions of the Bank tutorials (documents and programs) using the advanced- [NEW] object-oriented API have been added.
  • [NEW] A new document describes tools for gaining insight into and debugging SimPy models.
  • [CHANGE] Major re-structuring of SimPy code, resulting in much less SimPy code – great for the maintainers.
  • [CHANGE] Checks have been added which test whether entities belong to the same Simulation instance.
  • [CHANGE] The Monitor and Tally methods timeAverage and timeVariance now calculate only with the observed time-series. No value is assumed for the period prior to the first observation.
  • [CHANGE] Changed class Lister so that circular references between objects no longer lead to stack overflow and crash.
  • [FIX] Functions allEventNotices and allEventTimes are working again.
  • [FIX] Error messages for methods in SimPy.Lib work again.

2.0.1 – 2009-04-06

  • [NEW] Tests for real time behavior (testRT_Behavior.py and testRT_Behavior_OO.py in folder SimPy).
  • [FIX] Repaired a number of coding errors in several models in the SimPyModels folder.
  • [FIX] Repaired SimulationRT.py bug introduced by recoding for the OO API.
  • [FIX] Repaired errors in sample programs in documents:
    • Simulation with SimPy - In Depth Manual
    • SimPy’s Object Oriented API Manual
    • Simulation With Real Time Synchronization Manual
    • SimPlot Manual
    • Publication-quality Plot Production With Matplotlib Manual

2.0.0 – 2009-01-26

This is a major release with changes to the SimPy application programming interface (API) and the formatting of the documentation.

API changes

In addition to its existing API, SimPy now also has an object oriented API. The additional API

  • allows running SimPy in parallel on multiple processors or multi-core CPUs,
  • supports better structuring of SimPy programs,
  • allows subclassing of class Simulation and thus provides users with the capability of creating new simulation modes/libraries like SimulationTrace, and
  • reduces the total amount of SimPy code, thereby making it easier to maintain.

Note that the OO API is in addition to the old API. SimPy 2.0 is fully backward compatible.

Documentation format changes

SimPy’s documentation has been restructured and processed by the Sphinx documentation generation tool. This has generated one coherent, well structured document which can be easily browsed. A seach capability is included.

March 2008: Version 1.9.1

This is a bug-fix release which cures the following bugs:

  • Excessive production of circular garbage, due to a circular reference between Process instances and event notices. This led to large memory requirements.
  • Runtime error for preempts of proceeses holding multiple Resource objects.

It also adds a Short Manual, describing only the basic facilities of SimPy.

December 2007: Version 1.9

This is a major release with added functionality/new user API calls and bug fixes.

Major changes
  • The event list handling has been changed to improve the runtime performance of large SimPy models (models with thousands of processes). The use of dictionaries for timestamps has been stopped. Thanks are due to Prof. Norm Matloff and a team of his students who did a study on improving SimPy performance. This was one of their recommendations. Thanks, Norm and guys! Furthermore, in version 1.9 the ‘heapq’ sorting package replaces ‘bisect’. Finally, cancelling events no longer removes them, but rather marks them. When their event time comes, they are ignored. This was Tony Vignaux’ idea!
  • The Manual has been edited and given an easier-to-read layout.
  • The Bank2 tutorial has been extended by models which use more advanced SimPy commands/constructs.
Bug fixes
  • The tracing of ‘activate’ statements has been enabled.
Additions
  • A method returning the time-weighted variance of observations has been added to classes Monitor and Tally.
  • A shortcut activation method called “start” has been added to class Process.

January 2007: Version 1.8

Major Changes
  • SimPy 1.8 and future releases will not run under the obsolete Python 2.2 version. They require Python 2.3 or later.
  • The Manual has been thoroughly edited, restructured and rewritten. It is now also provided in PDF format.
  • The Cheatsheet has been totally rewritten in a tabular format. It is provided in both XLS (MS Excel spreadsheet) and PDF format.
  • The version of SimPy.Simulation(RT/Trace/Step) is now accessible by the variable ‘version’.
  • The __str__ method of Histogram was changed to return a table format.
Bug fixes
  • Repaired a bug in yield waituntil runtime code.
  • Introduced check for capacity parameter of a Level or a Store being a number > 0.
  • Added code so that self.eventsFired gets set correctly after an event fires in a compound yield get/put with a waitevent clause (reneging case).
  • Repaired a bug in prettyprinting of Store objects.
Additions
  • New compound yield statements support time-out or event-based reneging in get and put operations on Store and Level instances.
  • yield get on a Store instance can now have a filter function.
  • All Monitor and Tally instances are automatically registered in list allMonitors and allTallies, respectively.
  • The new function startCollection allows activation of Monitors and Tallies at a specified time.
  • A printHistogram method was added to Tally and Monitor which generates a table-form histogram.
  • In SimPy.SimulationRT: A function for allowing changing the ratio wall clock time to simulation time has been added.

June 2006: Version 1.7.1

This is a maintenance release. The API has not been changed/added to.

  • Repair of a bug in the _get methods of Store and Level which could lead to synchronization problems (blocking of producer processes, despite space being available in the buffer).
  • Repair of Level __init__ method to allow initialBuffered to be of either float or int type.
  • Addition of type test for Level get parameter ‘nrToGet’ to limit it to positive int or float.
  • To improve pretty-printed output of ‘Level’ objects, changed attribute ‘_nrBuffered’ to ‘nrBuffered’ (synonym for ‘amount’ property).
  • To improve pretty-printed output of ‘Store’ objects, added attribute ‘buffered’ (which refers to ‘_theBuffer’ attribute).

February 2006: Version 1.7

This is a major release.

  • Addition of an abstract class Buffer, with two sub-classes Store and Level Buffers are used for modelling inter-process synchronization in producer/ consumer and multi-process cooperation scenarios.
  • Addition of two new yield statements:
    • yield put for putting items into a buffer, and
    • yield get for getting items from a buffer.
  • The Manual has undergone a major re-write/edit.
  • All scripts have been restructured for compatibility with IronPython 1 beta2. This was doen by moving all import statements to the beginning of the scripts. After the removal of the first (shebang) line, all scripts (with the exception of plotting and GUI scripts) can run successfully under this new Python implementation.

September 2005: Version 1.6.1

This is a minor release.

  • Addition of Tally data collection class as alternative to Monitor. It is intended for collecting very large data sets more efficiently in storage space and time than Monitor.
  • Change of Resource to work with Tally (new Resource API is backwards-compatible with 1.6).
  • Addition of function setHistogram to class Monitor for initializing histograms.
  • New function allEventNotices() for debugging/teaching purposes. It returns a prettyprinted string with event times and names of process instances.
  • Addition of function allEventTimes (returns event times of all scheduled events).

15 June 2005: Version 1.6

  • Addition of two compound yield statement forms to support the modelling of processes reneging from resource queues.
  • Addition of two test/demo files showing the use of the new reneging statements.
  • Addition of test for prior simulation initialization in method activate().
  • Repair of bug in monitoring thw waitQ of a resource when preemption occurs.
  • Major restructuring/editing to Manual and Cheatsheet.

1 February 2005: Version 1.5.1

  • MAJOR LICENSE CHANGE:

    Starting with this version 1.5.1, SimPy is being release under the GNU Lesser General Public License (LGPL), instead of the GNU GPL. This change has been made to encourage commercial firms to use SimPy in for-profit work.

  • Minor re-release

  • No additional/changed functionality

  • Includes unit test file’MonitorTest.py’ which had been accidentally deleted from 1.5

  • Provides updated version of ‘Bank.html’ tutorial.

  • Provides an additional tutorial (‘Bank2.html’) which shows how to use the new synchronization constructs introduced in SimPy 1.5.

  • More logical, cleaner version numbering in files.

1 December 2004: Version 1.5

  • No new functionality/API changes relative to 1.5 alpha
  • Repaired bug related to waiting/queuing for multiple events
  • SimulationRT: Improved synchronization with wallclock time on Unix/Linux

25 September 2004: Version 1.5alpha

  • New functionality/API additions

    • SimEvents and signalling synchronization constructs, with ‘yield waitevent’ and ‘yield queueevent’ commands.
    • A general “wait until” synchronization construct, with the ‘yield waituntil’ command.
  • No changes to 1.4.x API, i.e., existing code will work as before.

19 May 2004: Version 1.4.2

  • Sub-release to repair two bugs:

    • The unittest for monitored Resource queues does not fail anymore.
    • SimulationTrace now works correctly with “yield hold,self” form.
  • No functional or API changes

29 February 2004: Version 1.4.1

  • Sub-release to repair two bugs:

    • The (optional) monitoring of the activeQ in Resource now works correctly.
    • The “cellphone.py” example is now implemented correctly.
  • No functional or API changes

1 February 2004: Version 1.4

  • Released on SourceForge.net

22 December 2003: Version 1.4 alpha

  • New functionality/API changes

    • All classes in the SimPy API are now new style classes, i.e., they inherit from object either directly or indirectly.
    • Module Monitor.py has been merged into module Simulation.py and all SimulationXXX.py modules. Import of Simulation or any SimulationXXX module now also imports Monitor.
    • Some Monitor methods/attributes have changed. See Manual!
    • Monitor now inherits from list.
    • A class Histogram has been added to Simulation.py and all SimulationXXX.py modules.
    • A module SimulationRT has been added which allows synchronization between simulated and wallclock time.
    • A moduleSimulationStep which allows the execution of a simulation model event-by-event, with the facility to execute application code after each event.
    • A Tk/Tkinter-based module SimGUI has been added which provides a SimPy GUI framework.
    • A Tk/Tkinter-based module SimPlot has been added which provides for plot output from SimPy programs.

22 June 2003: Version 1.3

  • No functional or API changes
  • Reduction of sourcecode linelength in Simulation.py to <= 80 characters

June 2003: Version 1.3 alpha

  • Significantly improved performance

  • Significant increase in number of quasi-parallel processes SimPy can handle

  • New functionality/API changes:

    • Addition of SimulationTrace, an event trace utility
    • Addition of Lister, a prettyprinter for instance attributes
    • No API changes
  • Internal changes:

    • Implementation of a proposal by Simon Frost: storing the keys of the event set dictionary in a binary search tree using bisect. Thank you, Simon! SimPy 1.3 is dedicated to you!
  • Update of Manual to address tracing.

  • Update of Interfacing doc to address output visualization using Scientific Python gplt package.

29 April 2003: Version 1.2

  • No changes in API.

  • Internal changes:
    • Defined “True” and “False” in Simulation.py to support Python 2.2.

22 October 2002

  • Re-release of 0.5 Beta on SourceForge.net to replace corrupted file __init__.py.
  • No code changes whatever!

18 October 2002

  • Version 0.5 Beta-release, intended to get testing by application developers and system integrators in preparation of first full (production) release. Released on SourceForge.net on 20 October 2002.

  • More models

  • Documentation enhanced by a manual, a tutorial (“The Bank”) and installation instructions.

  • Major changes to the API:

    • Introduced ‘simulate(until=0)’ instead of ‘scheduler(till=0)’. Left ‘scheduler()’ in for backward compatibility, but marked as deprecated.

    • Added attribute “name” to class Process. Process constructor is now:

      def __init__(self,name="a_process")
      

      Backward compatible if keyword parameters used.

    • Changed Resource constructor to:

      def __init__(self,capacity=1,name="a_resource",unitName="units")
      

      Backward compatible if keyword parameters used.

27 September 2002

  • Version 0.2 Alpha-release, intended to attract feedback from users
  • Extended list of models
  • Upodated documentation

17 September 2002

  • Version 0.1.2 published on SourceForge; fully working, pre-alpha code
  • Implements simulation, shared resources with queuing (FIFO), and monitors for data gathering/analysis.
  • Contains basic documentation (cheatsheet) and simulation models for test and demonstration.

Acknowledgments

SimPy 2 has been primarily developed by Stefan Scherfke and Ontje Lünsdorf, starting from SimPy 1.9. Their work has resulted in a most elegant combination of an object oriented API with the existing API, maintaining full backward compatibility. It has been quite easy to integrate their product into the existing SimPy code and documentation environment.

Thanks, guys, for this great job! SimPy 2.0 is dedicated to you!

SimPy was originally created by Klaus Müller and Tony Vignaux. They pushed its development for several years and built the Simpy community. Without them, there would be no SimPy 3.

Thanks, guys, for this great job! SimPy 3.0 is dedicated to you!

The many contributions of the SimPy user and developer communities are of course also gratefully acknowledged.

Ports

An almost feature-complete reimplementation of SimPy in C# was written by Andreas Beham and is available at github.com/abeham/SimSharp

Defense of Design

This document explains why SimPy is designed the way it is and how its design evolved over time.

Original Design of SimPy 1

SimPy 1 was heavily inspired by Simula 67 and Simscript. The basic entity of the framework was a process. A process described a temporal sequence of actions.

In SimPy 1, you implemented a process by sub-classing Process. The instance of such a subclass carried both, process and simulation internal information, whereat the latter wasn’t of any use to the process itself. The sequence of actions of the process was specified in a method of the subclass, called the process execution method (or PEM in short). A PEM interacted with the simulation by yielding one of several keywords defined in the simulation package.

The simulation itself was executed via module level functions. The simulation state was stored in the global scope. This made it very easy to implement and execute a simulation (despite from heaving to inherit from Process and instantianting the processes before starting their PEMs). However, having all simulation state global makes it hard to parallelize multiple simulations.

SimPy 1 also followed the “batteries included” approach, providing shared resources, monitoring, plotting, GUIs and multiple types of simulations (“normal”, real-time, manual stepping, with tracing).

The following code fragment shows how a simple simulation could be implemented in SimPy 1:

from SimPy.Simulation import Process, hold, initialize, activate, simulate

class MyProcess(Process):
    def pem(self, repeat):
        for i in range(repeat):
            yield hold, self, 1

initialize()
proc = MyProcess()
activate(proc, proc.pem(3))
simulate(until=10)



sim = Simulation()
proc = MyProcess(sim=sim)
sim.activate(proc, proc.pem(3))
sim.simulate(until=10)

Changes in SimPy 2

Simpy 2 mostly sticked with Simpy 1’s design, but added an object orient API for the execution of simulations, allowing them to be executed in parallel. Since processes and the simulation state were so closely coupled, you now needed to pass the Simulation instance into your process to “bind” them to that instance. Additionally, you still had to activate the process. If you forgot to pass the simulation instance, the process would use a global instance thereby breaking your program. SimPy 2’s OO-API looked like this:

from SimPy.Simulation import Simulation, Process, hold

class MyProcess(Process):
    def pem(self, repeat):
        for i in range(repeat):
            yield hold, self, 1

sim = Simulation()
proc = MyProcess(sim=sim)
sim.activate(proc, proc.pem(3))
sim.simulate(until=10)

Changes and Decisions in SimPy 3

The original goals for SimPy 3 were to simplify and PEP8-ify its API and to clean up and modularize its internals. We knew from the beginning that our goals would not be achievable without breaking backwards compatibility with SimPy 2. However, we didn’t expect the API changes to become as extensive as they ended up to be.

We also removed some of the included batteries, namely SimPy’s plotting and GUI capabilities, since dedicated libraries like matplotlib or PySide do a much better job here.

However, by far the most changes are—from the end user’s view—mostly syntactical. Thus, porting from 2 to 3 usually just means replacing a line of SimPy 2 code with its SimPy3 equivalent (e.g., replacing yield hold, self, 1 with yield env.timeout(1)).

In short, the most notable changes in SimPy 3 are:

  • No more sub-classing of Process required. PEMs can even be simple module level functions.
  • The simulation state is now stored in an Environment which can also be used by a PEM to interact with the simulation.
  • PEMs now yield event objects. This implicates interesting new features and allows an easy extension with new event types.

These changes are causing the above example to now look like this:

from simpy import Environment, simulate

def pem(env, repeat):
    for i in range(repeat):
        yield env.timeout(i)

env = Environment()
env.process(pem(env, 7))
simulate(env, until=10)

The following sections describe these changes in detail:

No More Sub-classing of Process

In Simpy 3, every Python generator can be used as a PEM, no matter if it is a module level function or a method of an object. This reduces the amount of code required for simple processes. The Process class still exists, but you don’t need to instantiate it by yourself, though. More on that later.

Processes Live in an Environment

Process and simulation state are decoupled. An Environment holds the simulation state and serves as base API for processes to create new events. This allows you to implement advanced use cases by extending the Process or Environment class without affecting other components.

For the same reason, the simulate() method now is a module level function that takes an environment to simulate.

Stronger Focus on Events

In former versions, PEMs needed to yield one of SimPy’s built-in keywords (like hold) to interact with the simulation. These keywords had to be imported separately and were bound to some internal functions that were tightly integrated with the Simulation and Process making it very hard to extend SimPy with new functionality.

In Simpy 3, PEMs just need to yield events. There are various built-in event types, but you can also create custom ones by making a subclass of a BaseEvent. Most events are generated by factory methods of Environment. For example, Environment.timeout() creates a Timeout event that replaces the hold keyword.

The Process is now also an event. You can now yield another process and wait for it to finish. For example, think of a car-wash simulation were “washing” is a process that the car processes can wait for once they enter the washing station.

Creating Events via the Environment or Resources

The Environment and resources have methods to create new events, e.g. Environment.timeout() or Resource.request(). Each of these methods maps to a certain event type. It creates a new instance of it and returns it, e.g.:

def event(self):
    return Event()

To simplify things, we wanted to use the event classes directly as methods:

class Environment(object)
    event = Event

This was, unfortunately, not directly possible and we had to wrap the classes to behave like bound methods. Therefore, we introduced a BoundClass:

class BoundClass(object):
    """Allows classes to behave like methods. The ``__get__()`` descriptor
    is basically identical to ``function.__get__()`` and binds the first
    argument of the ``cls`` to the descriptor instance.

    """
    def __init__(self, cls):
        self.cls = cls

    def __get__(self, obj, type=None):
        if obj is None:
            return self.cls
        return types.MethodType(self.cls, obj)


class Environment(object):
    event = BoundClass(Event)

These methods are called a lot, so we added the event classes as types.MethodType to the instance of Environment (or the resources, respectively):

class Environment(object):
    def __init__(self):
        self.event = types.MethodType(Event, self)

It turned out the the class attributes (the BoundClass instances) were now quite useless, so we removed them allthough it was actually the “right” way to to add classes as methods to another class.

Release Process

This process describes the steps to execute in order to release a new version of SimPy.

Preparations

  1. Close all tickets for the next version.

  2. Update the minium required versions of dependencies in setup.py. Update the exact version of all entries in requirements.txt.

  3. Run tox from the project root. All tests for all supported versions must pass:

    $ tox
    [...]
    ________ summary ________
    py27: commands succeeded
    py32: commands succeeded
    py33: commands succeeded
    pypy: commands succeeded
    congratulations :)
    

    Note

    Tox will use the requirements.txt to setup the venvs, so make sure you’ve updated it!

  4. Build the docs (HTML is enough). Make sure there are no errors and undefined references.

    $ cd docs/
    $ make clean html
    $ cd ..
    
  5. Check if all authors are listed in AUTHORS.txt.

  6. Update the change logs (CHANGES.txt and docs/about/history.rst). Only keep changes for the current major release in CHANGES.txt and reference the history page from there.

  7. Commit all changes:

    $ hg ci -m 'Updated change log for the upcoming release.'
    
  8. Write a draft for the announcement mail with a list of changes, acknowledgements and installation instructions. Everyone in the team should agree with it.

Build and release

  1. Test the release process. Build a source distribution and a wheel package and test them:

    $ python setup.py sdist
    $ python setup.py bdist_wheel
    $ ls dist/
    simpy-a.b.c-py2.py3-none-any.whl simpy-a.b.c.tar.gz
    

    Try installing them:

    $ rm -rf /tmp/simpy-sdist  # ensure clean state if ran repeatedly
    $ virtualenv /tmp/simpy-sdist
    $ /tmp/simpy-sdist/bin/pip install pytest
    $ /tmp/simpy-sdist/bin/pip install --no-index dist/simpy-a.b.c.tar.gz
    $ /tmp/simpy-sdist/bin/python
    >>> import simpy
    >>> simpy.__version__  # doctest: +SKIP
    'a.b.c'
    >>> simpy.test()  # doctest: +SKIP
    

    and

    $ rm -rf /tmp/simpy-wheel  # ensure clean state if ran repeatedly
    $ virtualenv /tmp/simpy-wheel
    $ /tmp/simpy-wheel/bin/pip install pytest
    $ /tmp/simpy-wheel/bin/pip install --use-wheel --no-index --find-links dist simpy
    $ /tmp/simpy-wheel/bin/python
    >>> import simpy  # doctest: +SKIP
    >>> simpy.__version__  # doctest: +SKIP
    'a.b.c'
    >>> simpy.test()  # doctest: +SKIP
    
  2. Create or check your accounts for the test server <https://testpypi.python.org/pypi> and PyPI. Update your ~/.pypirc with your current credentials:

    [distutils]
    index-servers =
        pypi
        test
    
    [test]
    repository = https://testpypi.python.org/pypi
    username = <your test user name goes here>
    password = <your test password goes here>
    
    [pypi]
    repository = http://pypi.python.org/pypi
    username = <your production user name goes here>
    password = <your production password goes here>
    
  3. Register SimPy with the test server and upload the distributions:

    $ python setup.py register -r test
    $ python setup.py sdist upload -r test
    $ python setup.py bdist_wheel upload -r test
    
  4. Check if the package is displayed correctly: https://testpypi.python.org/pypi/simpy

  5. Test the installation again:

    $ pip install -i https://testpypi.python.org/pypi simpy
    
  6. Update the version number in simpy/__init__.py, commit and create a tag:

    $ hg ci -m 'Bump version from a.b.c to x.y.z'
    $ hg tag x.y.z
    $ hg push ssh://hg@bitbucket.org/simpy/simpy
    
  7. Finally upload the package to PyPI and test its installation one last time:

    $ python setup.py register
    $ python setup.py sdist upload
    $ python setup.py bdist_wheel upload
    $ pip install simpy
    
  8. Check if the package is displayed correctly: https://pypi.python.org/pypi/simpy

  9. Activate the documentation build for the new version.

Post release

  1. Send the prepared email to the mailing list and post it on Google+.
  2. Update Wikipedia entries.
  3. Update Python Wiki
  4. Post something to Planet Python (e.g., via Stefan’s blog).

License

Indices and tables

Read the Docs v: 3.0.5
Versions
latest
3.0.5
3.0.4
3.0.3
3.0.2
3.0.1
3.0
Downloads
HTML
Epub
On Read the Docs
Project Home
Builds

Free document hosting provided by Read the Docs.
PKM0Dm$!simpy-3.0.5/.buildinfo# Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. config: tags: PKM0Dfsimpy-3.0.5/objects.inv# Sphinx inventory version 2 # Project: SimPy # Version: 3.0 # The remainder of this file is compressed using zlib. xڽZ_s8`}^{o}K{Lfi.=2X;H"ӟSV$aW+R&F<,/v#m/GJa@;%O}G+&LP̣ǫIݿWbbbiRpx!Lm&BN߲2[Urh+6S; ߕWYf%hgl0ShULt(+c&A!9&(qv̪݂JPsc,ϲ<#9gmtܝp ]z065Hn]¤~ޗ&~z|8cۦ2nݲ,ϛ J*ف%v 9Ϛ6έz:MX##K3jSp){Хhs>ƍU=n~ΠkMJM)qc6uc \c$'oDiwK8A՟Ʋ_hkthRv?Y4lMzrfm|C4* ޘ[a+^:+})V3l%Ե ^h_F:.1خ7=|CX"B%]$8TA@!L'PPQU!pV {/w}o6}g򢭎Y~2V?ä`acw= fmpIQȦG*ؚ J0͂<<؀viF= y6Yo!*-e;9sd f+xBW}6k󣷜 csd|;qFF Ulzc9PKM0Dc˂LLsimpy-3.0.5/index.html Overview — SimPy 3.0.5 documentation

Welcome to SimPy

Event discrete simulation for Python.

News | PyPIBitbucket | Issues | Mailing list

>>> import simpy
>>>
>>> def clock(env, name, tick):
...     while True:
...         print(name, env.now)
...         yield env.timeout(tick)
...
>>> env = simpy.Environment()
>>> env.process(clock(env, 'fast', 0.5))
<Process(clock) object at 0x...>
>>> env.process(clock(env, 'slow', 1))
<Process(clock) object at 0x...>
>>> env.run(until=2)
fast 0
slow 0
fast 0.5
slow 1
fast 1.0
fast 1.5

SimPy is a process-based discrete-event simulation framework based on standard Python. Its event dispatcher is based on Python’s generators and can also be used for asynchronous networking or to implement multi-agent systems (with both, simulated and real communication).

Processes in SimPy are defined by Python generator functions and can, for example, be used to model active components like customers, vehicles or agents. SimPy also provides various types of shared resources to model limited capacity congestion points (like servers, checkout counters and tunnels).

Simulations can be performed “as fast as possible”, in real time (wall clock time) or by manually stepping through the events.

Though it is theoretically possible to do continuous simulations with SimPy, it has no features that help you with that. On the other hand, SimPy is overkill for simulations with a fixed step size where your processes don’t interact with each other or with shared resources.

The SimPy distribution contains tutorials, in-depth documentation, and a large number of examples.

SimPy is released under the MIT License. Simulation model developers are encouraged to share their SimPy modeling techniques with the SimPy community. Please post a message to the SimPy-Users mailing list.

Documentation

Read the Docs v: 3.0.5
Versions
latest
3.0.5
3.0.4
3.0.3
3.0.2
3.0.1
3.0
Downloads
HTML
Epub
On Read the Docs
Project Home
Builds

Free document hosting provided by Read the Docs.
PK.DLi++(simpy-3.0.5/.doctrees/environment.pickle(csphinx.environment BuildEnvironment qoq}q(Udlfilesqcsphinx.util FilenameUniqDict q)qc__builtin__ set q]RqbUintersphinx_named_inventoryq }Uappq NU _warnfuncq NUtitlesq }q (X about/portsqcdocutils.nodes title q)q}q(U rawsourceqUU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq]Uidsq]Unamesq]uUchildrenq]qcdocutils.nodes Text qXPortsqq}q(hXPortsq Uparentq!hubaUtagnameq"Utitleq#ubXtopical_guides/eventsq$h)q%}q&(hUh}q'(h]h]h]h]h]uh]q(hXEventsq)q*}q+(hXEventsq,h!h%ubah"h#ubXsimpy_intro/how_to_proceedq-h)q.}q/(hUh}q0(h]h]h]h]h]uh]q1hXHow to Proceedq2q3}q4(hXHow to Proceedq5h!h.ubah"h#ubXsimpy_intro/indexq6h)q7}q8(hUh}q9(h]h]h]h]h]uh]q:hXSimPy in 10 Minutesq;q<}q=(hXSimPy in 10 Minutesq>h!h7ubah"h#ubX"topical_guides/process_interactionq?h)q@}qA(hUh}qB(h]h]h]h]h]uh]qChXProcess InteractionqDqE}qF(hXProcess InteractionqGh!h@ubah"h#ubXexamples/movie_renegeqHh)qI}qJ(hUh}qK(h]h]h]h]h]uh]qLhX Movie RenegeqMqN}qO(hX Movie RenegeqPh!hIubah"h#ubX about/indexqQh)qR}qS(hUh}qT(h]h]h]h]h]uh]qUhX About SimPyqVqW}qX(hX About SimPyqYh!hRubah"h#ubXcontentsqZh)q[}q\(hUh}q](h]h]h]h]h]uh]q^hXDocumentation for SimPyq_q`}qa(hXDocumentation for SimPyqbh!h[ubah"h#ubX about/historyqch)qd}qe(hUh}qf(h]h]h]h]h]uh]qghXSimPy History & Change Logqhqi}qj(hXSimPy History & Change Logqkh!hdubah"h#ubXabout/defense_of_designqlh)qm}qn(hUh}qo(h]h]h]h]h]uh]qphXDefense of Designqqqr}qs(hXDefense of Designqth!hmubah"h#ubXindexquh)qv}qw(hUh}qx(h]h]h]h]h]uh]qyhX SimPy homeqzq{}q|(hX SimPy homeq}h!hvubah"h#ubX"topical_guides/porting_from_simpy2q~h)q}q(hUh}q(h]h]h]h]h]uh]qhXPorting from SimPy 2 to 3qq}q(hXPorting from SimPy 2 to 3qh!hubah"h#ubXapi_reference/simpy.utilqh)q}q(hUh}q(h]h]h]h]h]uh]q(cdocutils.nodes literal q)q}q(hX``simpy.util``qh}q(h]h]h]h]h]uh!hh]qhX simpy.utilqq}q(hUh!hubah"UliteralqubhX --- Utility functions for SimPyqq}q(hX --- Utility functions for SimPyqh!hubeh"h#ubXexamples/process_communicationqh)q}q(hUh}q(h]h]h]h]h]uh]qhXProcess Communicationqq}q(hXProcess Communicationqh!hubah"h#ubX about/licenseqh)q}q(hUh}q(h]h]h]h]h]uh]qhXLicenseqq}q(hXLicenseqh!hubah"h#ubXtopical_guides/simpy_basicsqh)q}q(hUh}q(h]h]h]h]h]uh]qhX SimPy basicsqq}q(hX SimPy basicsqh!hubah"h#ubXabout/acknowledgementsqh)q}q(hUh}q(h]h]h]h]h]uh]qhXAcknowledgmentsqq}q(hXAcknowledgmentsqh!hubah"h#ubXexamples/bank_renegeqh)q}q(hUh}q(h]h]h]h]h]uh]qhX Bank RenegeqÅq}q(hX Bank Renegeqh!hubah"h#ubXsimpy_intro/basic_conceptsqh)q}q(hUh}q(h]h]h]h]h]uh]qhXBasic Conceptsq̅q}q(hXBasic Conceptsqh!hubah"h#ubXapi_reference/simpy.monitoringqh)q}q(hUh}q(h]h]h]h]h]uh]q(h)q}q(hX``simpy.monitoring``qh}q(h]h]h]h]h]uh!hh]qhXsimpy.monitoringqڅq}q(hUh!hubah"hubhX --- Monitor SimPy simulationsq݅q}q(hX --- Monitor SimPy simulationsqh!hubeh"h#ubXapi_reference/simpy.eventsqh)q}q(hUh}q(h]h]h]h]h]uh]q(h)q}q(hX``simpy.events``qh}q(h]h]h]h]h]uh!hh]qhX simpy.eventsq녁q}q(hUh!hubah"hubhX --- Core event typesqq}q(hX --- Core event typesqh!hubeh"h#ubXsimpy_intro/shared_resourcesqh)q}q(hUh}q(h]h]h]h]h]uh]qhXShared Resourcesqq}q(hXShared Resourcesqh!hubah"h#ubXexamples/gas_station_refuelqh)q}q(hUh}q(h]h]h]h]h]uh]qhXGas Station Refuelingrr}r(hXGas Station Refuelingrh!hubah"h#ubX'api_reference/simpy.resources.containerrh)r}r(hUh}r(h]h]h]h]h]uh]r(h)r }r (hX``simpy.resources.container``r h}r (h]h]h]h]h]uh!jh]r hXsimpy.resources.containerrr}r(hUh!j ubah"hubhX --- Container type resourcesrr}r(hX --- Container type resourcesrh!jubeh"h#ubXapi_reference/simpy.corerh)r}r(hUh}r(h]h]h]h]h]uh]r(h)r}r(hX``simpy.core``rh}r(h]h]h]h]h]uh!jh]rhX simpy.corerr }r!(hUh!jubah"hubhX --- SimPy's core componentsr"r#}r$(hX --- SimPy's core componentsr%h!jubeh"h#ubXtopical_guides/indexr&h)r'}r((hUh}r)(h]h]h]h]h]uh]r*hXTopical Guidesr+r,}r-(hXTopical Guidesr.h!j'ubah"h#ubXexamples/indexr/h)r0}r1(hUh}r2(h]h]h]h]h]uh]r3hXExamplesr4r5}r6(hXExamplesr7h!j0ubah"h#ubXapi_reference/simpyr8h)r9}r:(hUh}r;(h]h]h]h]h]uh]r<(h)r=}r>(hX ``simpy``r?h}r@(h]h]h]h]h]uh!j9h]rAhXsimpyrBrC}rD(hUh!j=ubah"hubhX --- The end user APIrErF}rG(hX --- The end user APIrHh!j9ubeh"h#ubXsimpy_intro/installationrIh)rJ}rK(hUh}rL(h]h]h]h]h]uh]rMhX InstallationrNrO}rP(hX InstallationrQh!jJubah"h#ubXexamples/machine_shoprRh)rS}rT(hUh}rU(h]h]h]h]h]uh]rVhX Machine ShoprWrX}rY(hX Machine ShoprZh!jSubah"h#ubXapi_reference/indexr[h)r\}r](hUh}r^(h]h]h]h]h]uh]r_hX API Referencer`ra}rb(hX API Referencerch!j\ubah"h#ubXabout/release_processrdh)re}rf(hUh}rg(h]h]h]h]h]uh]rhhXRelease Processrirj}rk(hXRelease Processrlh!jeubah"h#ubX&api_reference/simpy.resources.resourcermh)rn}ro(hUh}rp(h]h]h]h]h]uh]rq(h)rr}rs(hX``simpy.resources.resource``rth}ru(h]h]h]h]h]uh!jnh]rvhXsimpy.resources.resourcerwrx}ry(hUh!jrubah"hubhX -- Resource type resourcesrzr{}r|(hX -- Resource type resourcesr}h!jnubeh"h#ubXexamples/carwashr~h)r}r(hUh}r(h]h]h]h]h]uh]rhXCarwashrr}r(hXCarwashrh!jubah"h#ubXtopical_guides/environmentsrh)r}r(hUh}r(h]h]h]h]h]uh]rhX Environmentsrr}r(hX Environmentsrh!jubah"h#ubX#api_reference/simpy.resources.storerh)r}r(hUh}r(h]h]h]h]h]uh]r(h)r}r(hX``simpy.resources.store``rh}r(h]h]h]h]h]uh!jh]rhXsimpy.resources.storerr}r(hUh!jubah"hubhX --- Store type resourcesrr}r(hX --- Store type resourcesrh!jubeh"h#ubXexamples/latencyrh)r}r(hUh}r(h]h]h]h]h]uh]rhX Event Latencyrr}r(hX Event Latencyrh!jubah"h#ubX"api_reference/simpy.resources.baserh)r}r(hUh}r(h]h]h]h]h]uh]r(h)r}r(hX``simpy.resources.base``rh}r(h]h]h]h]h]uh!jh]rhXsimpy.resources.baserr}r(hUh!jubah"hubhX# --- Base classes for all resourcesrr}r(hX# --- Base classes for all resourcesrh!jubeh"h#ubXapi_reference/simpy.resourcesrh)r}r(hUh}r(h]h]h]h]h]uh]r(h)r}r(hX``simpy.resources``rh}r(h]h]h]h]h]uh!jh]rhXsimpy.resourcesrr}r(hUh!jubah"hubhX$ --- SimPy's built-in resource typesrr}r(hX$ --- SimPy's built-in resource typesrh!jubeh"h#ubXsimpy_intro/process_interactionrh)r}r(hUh}r(h]h]h]h]h]uh]rhXProcess Interactionrr}r(hXProcess Interactionrh!jubah"h#ubXapi_reference/simpy.rtrh)r}r(hUh}r(h]h]h]h]h]uh]r(h)r}r(hX ``simpy.rt``rh}r(h]h]h]h]h]uh!jh]rhXsimpy.rtrr}r(hUh!jubah"hubhX --- Real-time simulationsrr}r(hX --- Real-time simulationsrh!jubeh"h#ubuU domaindatar}r(Ustdr}r(UversionrKU anonlabelsr}r(Xporting_from_simpy2rh~Uporting-from-simpy2rUgenindexrjUX(waiting-for-another-process-to-terminaterh?U(waiting-for-another-process-to-terminaterUmodindexrU py-modindexUXinterrupting-another-processrh?Uinterrupting-another-processrUsearchrUsearchUXbasic_conceptsrhUbasic-conceptsrXsleep-until-woken-uprh?Usleep-until-woken-uprXsimulation-controlrjUsimulation-controlrX#waiting_for_multiple_events_at_oncerh$U#waiting-for-multiple-events-at-onceruUlabelsr}r(jh~jXPorting from SimPy 2 to 3jjUcsphinx.locale _TranslationProxy rcsphinx.locale mygettext rUIndexrrjjrbjh?jX(Waiting for another process to terminatejU py-modindexUjjU Module Indexrrjjrbjh?jXInterrupting another processjjUjjU Search Pagerr jjr bjhjXBasic Conceptsjh?jXSleep until woken upjjjXSimulation controljh$jX#Waiting for multiple events at onceuU progoptionsr }r Uobjectsr }ruUc}r(j }rjKuUpyr}r(j }r(Xsimpy.core.EnvironmentrjXclassrXsimpy.events.ProcessrhXclassX)simpy.resources.resource.Resource.requestrjmX attributerXsimpy.events.Event.valuerhX attributeXsimpy.core.Environment.nowrjX attributerX#simpy.rt.RealtimeEnvironment.factorrjX attributerXsimpy.events.AllOfrhXclassX simpy.eventsrhUmoduler X0simpy.resources.resource.PriorityRequest.preemptr!jmX attributer"Xsimpy.core.Environment.scheduler#jXmethodr$Xsimpy.events.Conditionr%hXclassX'simpy.resources.container.Container.putr&jX attributeX.simpy.resources.base.BaseResource._trigger_putr'jXmethodX%simpy.resources.base.BaseResource.putr(jX attributeX(simpy.resources.resource.PriorityRequestr)jmXclassr*Xsimpy.events.Interruptionr+hXclassXsimpy.core.Environment.all_ofr,jXmethodr-Xsimpy.resources.store.Store.getr.jX attributer/X*simpy.resources.base.BaseResource.GetQueuer0jX attributeXsimpy.resources.base.Put.cancelr1jXmethodX2simpy.resources.resource.PriorityResource.PutQueuer2jmX attributer3X*simpy.resources.store.FilterStore.GetQueuer4jX attributer5X$simpy.resources.resource.SortedQueuer6jmXclassr7X*simpy.resources.base.BaseResource.PutQueuer8jX attributeXsimpy.resourcesr9jj Xsimpy.resources.baser:jj X%simpy.resources.base.BaseResource.getr;jX attributeX%simpy.core.Environment.active_processr<jX attributer=X,simpy.resources.container.Container.capacityr>jX attributeXsimpy.resources.base.Getr?jXclassXsimpy.core.Environment.processr@jXmethodrAXsimpy.events.Event.triggerrBhXmethodXsimpy.events.AnyOfrChXclassX$simpy.resources.store.FilterStoreGetrDjXclassrEX%simpy.resources.resource.Preempted.byrFjmX attributerGXsimpy.events.Event.succeedrHhXmethodX simpy.resources.resource.ReleaserIjmXclassrJXsimpy.events.InterruptrKhX exceptionXsimpy.events.Interrupt.causerLhX attributeX simpy.corerMjj X simpy.utilrNhj Xsimpy.events.Event.envrOhX attributeX)simpy.resources.base.BaseResource._do_putrPjXmethodX simpy.resources.resource.RequestrQjmXclassrRXsimpy.events.Event.callbacksrShX attributeX#simpy.resources.store.StorePut.itemrTjX attributerUX simpy.core.BoundClass.bind_earlyrVjX staticmethodrWXsimpy.events.NORMALrXhXdataX"simpy.resources.resource.PreemptedrYjmXclassrZXsimpy.events.Eventr[hXclassXsimpy.core.Environment.any_ofr\jXmethodr]Xsimpy.rtr^jj X!simpy.resources.store.FilterStorer_jXclassr`X-simpy.resources.container.ContainerPut.amountrajX attributeX'simpy.resources.resource.Resource.usersrbjmX attributercX-simpy.resources.container.ContainerGet.amountrdjX attributeX'simpy.resources.resource.Resource.queuerejmX attributerfXsimpy.events.URGENTrghXdataXsimpy.resources.store.StorePutrhjXclassriXsimpy.events.Process.interruptrjhXmethodX+simpy.resources.base.BaseResource.put_queuerkjX attributeXsimpy.core.BoundClassrljXclassrmXsimpy.events.Process.is_alivernhX attributeX'simpy.resources.resource.Resource.countrojmX attributerpX!simpy.events.Condition.any_eventsrqhX staticmethodXsimpy.util.subscribe_atrrhXfunctionXsimpy.resources.resourcersjmj X#simpy.core.BaseEnvironment.schedulertjXmethodruX'simpy.resources.container.Container.getrvjX attributeX+simpy.resources.resource.SortedQueue.maxlenrwjmX attributerxXsimpy.core.BaseEnvironmentryjXclassrzXsimpy.resources.store.Store.putr{jX attributer|Xsimpy.core.Environment.stepr}jXmethodr~Xsimpy.core.Environment.runrjXmethodrXsimpy.events.TimeoutrhXclassX)simpy.resources.resource.PriorityResourcerjmXclassrX*simpy.resources.resource.Resource.capacityrjmX attributerX simpy.testrj8XfunctionXsimpy.core.Environment.exitrjXmethodrXsimpy.core.InfinityrjXdatarX+simpy.resources.resource.PreemptiveResourcerjmXclassrXsimpy.events.InitializerhXclassXsimpy.resources.containerrjj X!simpy.resources.base.BaseResourcerjXclassXsimpy.core.BaseEnvironment.runrjXmethodrX,simpy.resources.resource.PriorityRequest.keyrjmX attributerX1simpy.resources.resource.PriorityResource.requestrjmX attributerX+simpy.resources.base.BaseResource.get_queuerjX attributeXsimpy.resources.base.PutrjXclassXsimpy.events.Event.triggeredrhX attributeXsimpy.core.Environment.timeoutrjXmethodrX&simpy.resources.container.ContainerGetrjXclassX+simpy.resources.store.FilterStoreGet.filterrjX attributerXsimpy.core.BaseEnvironment.steprjXmethodrXsimpy.util.start_delayedrhXfunctionX)simpy.resources.resource.Resource.releaserjmX attributerXsimpy.core.EmptySchedulerjXclassrX#simpy.resources.container.ContainerrjXclassXsimpy.resources.storerjj Xsimpy.resources.base.Get.cancelrjXmethodX!simpy.resources.store.FilterQueuerjXclassrX1simpy.resources.resource.PriorityRequest.priorityrjmX attributerXsimpy.core.Environment.peekrjXmethodrX#simpy.rt.RealtimeEnvironment.strictrjX attributerXsimpyrj8j X)simpy.resources.base.BaseResource._do_getrjXmethodX%simpy.resources.store.FilterStore.getrjX attributerX&simpy.resources.container.ContainerPutrjXclassX+simpy.resources.resource.SortedQueue.appendrjmXmethodrXsimpy.resources.store.StoreGetrjXclassrXsimpy.events.Process.targetrhX attributeX)simpy.resources.container.Container.levelrjX attributeX$simpy.resources.store.Store.capacityrjX attributerXsimpy.core.Environment.eventrjXmethodrXsimpy.core.BaseEnvironment.nowrjX attributerXsimpy.events.Event.failrhXmethodX.simpy.resources.base.BaseResource._trigger_getrjXmethodX)simpy.core.BaseEnvironment.active_processrjX attributerX-simpy.resources.resource.PriorityRequest.timerjmX attributerXsimpy.events.Event.processedrhX attributeX.simpy.resources.resource.Preempted.usage_sincerjmX attributerX(simpy.resources.resource.Release.requestrjmX attributerXsimpy.monitoringrhj Xsimpy.events.PENDINGrhXdataXsimpy.rt.RealtimeEnvironmentrjXclassrX!simpy.resources.resource.ResourcerjmXclassrX!simpy.rt.RealtimeEnvironment.steprjXmethodrXsimpy.resources.store.StorerjXclassrX!simpy.events.Condition.all_eventsrhX staticmethodX!simpy.resources.store.Store.itemsrjX attributerX2simpy.resources.resource.PriorityResource.GetQueuerjmX attributeruUmodulesr}r(jM(jUUtjN(hUUtj(jUUtj(j8UUtj9(jUUtjs(jmUUtj:(jUUtj^(jUUtj(jUUtj(hUUtj(hUUtujKuUjsr}r(j }rjKuUrstr}r(j }rjKuUcppr}r(j }rjKuuU glob_toctreesrh]RrU reread_alwaysrh]RrU doctreedirrXM/var/build/user_builds/simpy/checkouts/3.0.5/docs/_build/localmedia/.doctreesrUversioning_conditionrU citationsr}jK*Uintersphinx_inventoryr}r(X std:labelr}r(X sqlite3-controlling-transactionsr(XPythonrX3.4rXNhttp://docs.python.org/3/library/sqlite3.html#sqlite3-controlling-transactionsXControlling TransactionstrXattribute-accessr(jjXBhttp://docs.python.org/3/reference/datamodel.html#attribute-accessXCustomizing attribute accesstrXhigh-level-embeddingr(jjXFhttp://docs.python.org/3/extending/embedding.html#high-level-embeddingXVery High Level EmbeddingtrXtut-calculatorr(jjXBhttp://docs.python.org/3/tutorial/introduction.html#tut-calculatorXUsing Python as a CalculatortrXdescriptor-objectsr(jjXAhttp://docs.python.org/3/c-api/descriptor.html#descriptor-objectsXDescriptor ObjectstrX blank-linesr(jjXDhttp://docs.python.org/3/reference/lexical_analysis.html#blank-linesX Blank linestrX expressionsr(jjX?http://docs.python.org/3/reference/expressions.html#expressionsX ExpressionstrX install-cmdr(jjX>http://docs.python.org/3/distutils/commandref.html#install-cmdX.Installing modules: the install command familytrXfunc-bytearrayr(jjX>http://docs.python.org/3/library/functions.html#func-bytearrayX-trXpostinstallation-scriptr(jjXIhttp://docs.python.org/3/distutils/builtdist.html#postinstallation-scriptXThe Postinstallation scripttrXtut-command-line-argumentsr(jjXHhttp://docs.python.org/3/tutorial/stdlib.html#tut-command-line-argumentsXCommand Line Argumentstr Xdecimal-threadsr (jjX=http://docs.python.org/3/library/decimal.html#decimal-threadsXWorking with threadstr Xspecial-lookupr (jjX@http://docs.python.org/3/reference/datamodel.html#special-lookupXSpecial method lookuptr Xnonlocalr(jjX=http://docs.python.org/3/reference/simple_stmts.html#nonlocalXThe nonlocal statementtrXqueue-listenerr(jjXEhttp://docs.python.org/3/library/logging.handlers.html#queue-listenerX QueueListenertrXinput-source-objectsr(jjXIhttp://docs.python.org/3/library/xml.sax.reader.html#input-source-objectsXInputSource ObjectstrXdoctest-advanced-apir(jjXBhttp://docs.python.org/3/library/doctest.html#doctest-advanced-apiX Advanced APItrXpep-380r(jjX2http://docs.python.org/3/whatsnew/3.3.html#pep-380X0PEP 380: Syntax for Delegating to a SubgeneratortrX64-bit-access-rightsr(jjX>http://docs.python.org/3/library/winreg.html#bit-access-rightsX64-bit SpecifictrX typeobjectsr(jjX4http://docs.python.org/3/c-api/type.html#typeobjectsX Type ObjectstrX tut-definingr(jjX?http://docs.python.org/3/tutorial/controlflow.html#tut-definingXMore on Defining FunctionstrXbuilding-python-on-unixr(jjX@http://docs.python.org/3/using/unix.html#building-python-on-unixXBuilding PythontrX timer-objectsr (jjX=http://docs.python.org/3/library/threading.html#timer-objectsX Timer Objectstr!Xtut-jsonr"(jjX;http://docs.python.org/3/tutorial/inputoutput.html#tut-jsonX Saving structured data with jsontr#Xctypes-utility-functionsr$(jjXEhttp://docs.python.org/3/library/ctypes.html#ctypes-utility-functionsXUtility functionstr%Xinst-alt-install-prefix-windowsr&(jjXKhttp://docs.python.org/3/install/index.html#inst-alt-install-prefix-windowsX3Alternate installation: Windows (the prefix scheme)tr'X tut-objectr((jjX9http://docs.python.org/3/tutorial/classes.html#tut-objectXA Word About Names and Objectstr)Xpartial-objectsr*(jjX?http://docs.python.org/3/library/functools.html#partial-objectsXpartial Objectstr+Xrotating-file-handlerr,(jjXLhttp://docs.python.org/3/library/logging.handlers.html#rotating-file-handlerXRotatingFileHandlertr-X shlex-objectsr.(jjX9http://docs.python.org/3/library/shlex.html#shlex-objectsX shlex Objectstr/Xdecimal-recipesr0(jjX=http://docs.python.org/3/library/decimal.html#decimal-recipesXRecipestr1Xprefix-matchingr2(jjX>http://docs.python.org/3/library/argparse.html#prefix-matchingX(Argument abbreviations (prefix matching)tr3X specialattrsr4(jjX;http://docs.python.org/3/library/stdtypes.html#specialattrsXSpecial Attributestr5X format-stylesr6(jjXBhttp://docs.python.org/3/howto/logging-cookbook.html#format-stylesX$Use of alternative formatting stylestr7Xlocale-gettextr8(jjX;http://docs.python.org/3/library/locale.html#locale-gettextXAccess to message catalogstr9Xmailbox-examplesr:(jjX>http://docs.python.org/3/library/mailbox.html#mailbox-examplesXExamplestr;Xstruct-alignmentr<(jjX=http://docs.python.org/3/library/struct.html#struct-alignmentXByte Order, Size, and Alignmenttr=Xinst-how-install-worksr>(jjXBhttp://docs.python.org/3/install/index.html#inst-how-install-worksXHow installation workstr?X"optparse-conflicts-between-optionsr@(jjXQhttp://docs.python.org/3/library/optparse.html#optparse-conflicts-between-optionsXConflicts between optionstrAXinst-alt-install-homerB(jjXAhttp://docs.python.org/3/install/index.html#inst-alt-install-homeX'Alternate installation: the home schemetrCXelementtree-element-objectsrD(jjXWhttp://docs.python.org/3/library/xml.etree.elementtree.html#elementtree-element-objectsXElement ObjectstrEX handle-objectrF(jjX:http://docs.python.org/3/library/winreg.html#handle-objectXRegistry Handle ObjectstrGX section-boolrH(jjX7http://docs.python.org/3/whatsnew/2.3.html#section-boolXPEP 285: A Boolean TypetrIXfaq-argument-vs-parameterrJ(jjXGhttp://docs.python.org/3/faq/programming.html#faq-argument-vs-parameterX8What is the difference between arguments and parameters?trKXctypes-incomplete-typesrL(jjXDhttp://docs.python.org/3/library/ctypes.html#ctypes-incomplete-typesXIncomplete TypestrMXwhatsnew-marshal-3rN(jjX=http://docs.python.org/3/whatsnew/3.4.html#whatsnew-marshal-3XmarshaltrOXdeprecated-aliasesrP(jjXAhttp://docs.python.org/3/library/unittest.html#deprecated-aliasesXDeprecated aliasestrQXitertools-functionsrR(jjXChttp://docs.python.org/3/library/itertools.html#itertools-functionsXItertool functionstrSX epoll-objectsrT(jjX:http://docs.python.org/3/library/select.html#epoll-objectsX.Edge and Level Trigger Polling (epoll) ObjectstrUXwhatsnew-singledispatchrV(jjXBhttp://docs.python.org/3/whatsnew/3.4.html#whatsnew-singledispatchX-trWXpassrX(jjX9http://docs.python.org/3/reference/simple_stmts.html#passXThe pass statementtrYXtut-passrZ(jjX;http://docs.python.org/3/tutorial/controlflow.html#tut-passXpass Statementstr[X%ctypes-loading-dynamic-link-librariesr\(jjXRhttp://docs.python.org/3/library/ctypes.html#ctypes-loading-dynamic-link-librariesXLoading dynamic link librariestr]Xdatetimeobjectsr^(jjX<http://docs.python.org/3/c-api/datetime.html#datetimeobjectsXDateTime Objectstr_Xinst-search-pathr`(jjX<http://docs.python.org/3/install/index.html#inst-search-pathXModifying Python's Search PathtraXemail-examplesrb(jjXChttp://docs.python.org/3/library/email-examples.html#email-examplesXemail: ExamplestrcXzipimport-examplesrd(jjXBhttp://docs.python.org/3/library/zipimport.html#zipimport-examplesXExamplestreXdistutils-conceptsrf(jjXGhttp://docs.python.org/3/distutils/introduction.html#distutils-conceptsXConcepts & TerminologytrgX urllib-howtorh(jjX8http://docs.python.org/3/howto/urllib2.html#urllib-howtoX7HOWTO Fetch Internet Resources Using The urllib PackagetriXacks27rj(jjX1http://docs.python.org/3/whatsnew/2.7.html#acks27XAcknowledgementstrkXtelnet-objectsrl(jjX>http://docs.python.org/3/library/telnetlib.html#telnet-objectsXTelnet ObjectstrmXxdr-exceptionsrn(jjX;http://docs.python.org/3/library/xdrlib.html#xdr-exceptionsX ExceptionstroXcustom-handlersrp(jjXDhttp://docs.python.org/3/howto/logging-cookbook.html#custom-handlersX&Customizing handlers with dictConfig()trqXwhatsnew-selectorsrr(jjX=http://docs.python.org/3/whatsnew/3.4.html#whatsnew-selectorsX selectorstrsXownershiprulesrt(jjX@http://docs.python.org/3/extending/extending.html#ownershiprulesXOwnership RulestruXcontents-of-module-rerv(jjX>http://docs.python.org/3/library/re.html#contents-of-module-reXModule ContentstrwX compilationrx(jjX=http://docs.python.org/3/extending/extending.html#compilationXCompilation and LinkagetryXatomsrz(jjX9http://docs.python.org/3/reference/expressions.html#atomsXAtomstr{Xbuffer-request-typesr|(jjX?http://docs.python.org/3/c-api/buffer.html#buffer-request-typesXBuffer request typestr}Xthreadsr~(jjX0http://docs.python.org/3/c-api/init.html#threadsX,Thread State and the Global Interpreter LocktrXpickle-picklabler(jjX=http://docs.python.org/3/library/pickle.html#pickle-picklableX"What can be pickled and unpickled?trXcondition-objectsr(jjXAhttp://docs.python.org/3/library/threading.html#condition-objectsXCondition ObjectstrXsearchr(jjX%http://docs.python.org/3/search.html#X Search PagetrXdom-attributelist-objectsr(jjXGhttp://docs.python.org/3/library/xml.dom.html#dom-attributelist-objectsXNamedNodeMap ObjectstrXcsv-fmt-paramsr(jjX8http://docs.python.org/3/library/csv.html#csv-fmt-paramsX"Dialects and Formatting ParameterstrX!email-contentmanager-api-examplesr(jjXVhttp://docs.python.org/3/library/email-examples.html#email-contentmanager-api-examplesX"Examples using the Provisional APItrX tut-invokingr(jjX?http://docs.python.org/3/tutorial/interpreter.html#tut-invokingXInvoking the InterpretertrX repr-objectsr(jjX:http://docs.python.org/3/library/reprlib.html#repr-objectsX Repr ObjectstrXmimetypes-objectsr(jjXAhttp://docs.python.org/3/library/mimetypes.html#mimetypes-objectsXMimeTypes ObjectstrXdebuggerr(jjX2http://docs.python.org/3/library/pdb.html#debuggerXpdb --- The Python DebuggertrXimplicit-joiningr(jjXIhttp://docs.python.org/3/reference/lexical_analysis.html#implicit-joiningXImplicit line joiningtrXwhats-new-in-2.6r(jjX;http://docs.python.org/3/whatsnew/2.6.html#whats-new-in-2-6XWhat's New in Python 2.6trXtut-codingstyler(jjXBhttp://docs.python.org/3/tutorial/controlflow.html#tut-codingstyleXIntermezzo: Coding StyletrXcalls-as-tuplesr(jjXChttp://docs.python.org/3/library/unittest.mock.html#calls-as-tuplesX-trXwave-write-objectsr(jjX=http://docs.python.org/3/library/wave.html#wave-write-objectsXWave_write ObjectstrXunixr(jjX/http://docs.python.org/3/library/unix.html#unixXUnix Specific ServicestrX mailbox-mmdfr(jjX:http://docs.python.org/3/library/mailbox.html#mailbox-mmdfXMMDFtrXasyncio-protocolr(jjXGhttp://docs.python.org/3/library/asyncio-protocol.html#asyncio-protocolX ProtocolstrX&optparse-what-positional-arguments-forr(jjXUhttp://docs.python.org/3/library/optparse.html#optparse-what-positional-arguments-forX"What are positional arguments for?trXmailbox-objectsr(jjX=http://docs.python.org/3/library/mailbox.html#mailbox-objectsXMailbox objectstrXasyncore-example-2r(jjXAhttp://docs.python.org/3/library/asyncore.html#asyncore-example-2X"asyncore Example basic echo servertrXefficient_string_concatenationr(jjXLhttp://docs.python.org/3/faq/programming.html#efficient-string-concatenationXDWhat is the most efficient way to concatenate many strings together?trX*ctypes-accessing-values-exported-from-dllsr(jjXWhttp://docs.python.org/3/library/ctypes.html#ctypes-accessing-values-exported-from-dllsX#Accessing values exported from dllstrXtut-argpassingr(jjXAhttp://docs.python.org/3/tutorial/interpreter.html#tut-argpassingXArgument PassingtrX distributingr(jjX=http://docs.python.org/3/extending/building.html#distributingX#Distributing your extension modulestrXhttp-password-mgrr(jjXFhttp://docs.python.org/3/library/urllib.request.html#http-password-mgrXHTTPPasswordMgr ObjectstrX optparse-putting-it-all-togetherr(jjXOhttp://docs.python.org/3/library/optparse.html#optparse-putting-it-all-togetherXPutting it all togethertrXprotocol-error-objectsr(jjXJhttp://docs.python.org/3/library/xmlrpc.client.html#protocol-error-objectsXProtocolError ObjectstrXsimple-xmlrpc-serversr(jjXIhttp://docs.python.org/3/library/xmlrpc.server.html#simple-xmlrpc-serversXSimpleXMLRPCServer ObjectstrXlogger-adapterr(jjX<http://docs.python.org/3/library/logging.html#logger-adapterXLoggerAdapter ObjectstrXdefault_valuesr(jjX9http://docs.python.org/3/howto/clinic.html#default-valuesXParameter default valuestrXinst-config-filesr(jjX=http://docs.python.org/3/install/index.html#inst-config-filesXDistutils Configuration FilestrX nullpointersr(jjX>http://docs.python.org/3/extending/extending.html#nullpointersX NULL PointerstrXrequest-objectsr(jjXDhttp://docs.python.org/3/library/urllib.request.html#request-objectsXRequest ObjectstrX using-indexr(jjX5http://docs.python.org/3/using/index.html#using-indexXPython Setup and UsagetrXgenindexr(jjX'http://docs.python.org/3/genindex.html#XIndextrX tut-genexpsr(jjX:http://docs.python.org/3/tutorial/classes.html#tut-genexpsXGenerator ExpressionstrX func-listr(jjX9http://docs.python.org/3/library/functions.html#func-listX-trX coroutiner(jjX<http://docs.python.org/3/library/asyncio-task.html#coroutineX CoroutinestrXstring-methodsr(jjX=http://docs.python.org/3/library/stdtypes.html#string-methodsXString MethodstrX descriptorsr(jjX=http://docs.python.org/3/reference/datamodel.html#descriptorsXImplementing DescriptorstrXoptparse-adding-new-typesr(jjXHhttp://docs.python.org/3/library/optparse.html#optparse-adding-new-typesXAdding new typestrX dict-viewsr(jjX9http://docs.python.org/3/library/stdtypes.html#dict-viewsXDictionary view objectstrXmailbox-mboxmessager(jjXAhttp://docs.python.org/3/library/mailbox.html#mailbox-mboxmessageX mboxMessagetrXoptparse-option-attributesr(jjXIhttp://docs.python.org/3/library/optparse.html#optparse-option-attributesXOption attributestrXftp-handler-objectsr(jjXHhttp://docs.python.org/3/library/urllib.request.html#ftp-handler-objectsXFTPHandler ObjectstrXlambdasr(jjX;http://docs.python.org/3/reference/expressions.html#lambdasXLambdastrXinstall-data-cmdr(jjXChttp://docs.python.org/3/distutils/commandref.html#install-data-cmdX install_datatrXctypes-structured-data-typesr(jjXIhttp://docs.python.org/3/library/ctypes.html#ctypes-structured-data-typesXStructured data typestrXfile-cookie-jar-classesr(jjXLhttp://docs.python.org/3/library/http.cookiejar.html#file-cookie-jar-classesX;FileCookieJar subclasses and co-operation with web browserstrXencodings-overviewr(jjX?http://docs.python.org/3/library/codecs.html#encodings-overviewXEncodings and UnicodetrXoptparse-what-options-forr(jjXHhttp://docs.python.org/3/library/optparse.html#optparse-what-options-forXWhat are options for?trXinstancemethod-objectsr(jjXAhttp://docs.python.org/3/c-api/method.html#instancemethod-objectsXInstance Method ObjectstrX dom-objectsr(jjX9http://docs.python.org/3/library/xml.dom.html#dom-objectsXObjects in the DOMtrXdelr(jjX8http://docs.python.org/3/reference/simple_stmts.html#delXThe del statementtrXprofile-calibrationr(jjXAhttp://docs.python.org/3/library/profile.html#profile-calibrationX CalibrationtrX exceptionsr(jjXAhttp://docs.python.org/3/reference/executionmodel.html#exceptionsX ExceptionstrXmailbox-mhmessager(jjX?http://docs.python.org/3/library/mailbox.html#mailbox-mhmessageX MHMessagetrXdefr(jjX:http://docs.python.org/3/reference/compound_stmts.html#defXFunction definitionstrXf1r(jjX0http://docs.python.org/3/library/sqlite3.html#f1X-trXfilesysr(jjX5http://docs.python.org/3/library/filesys.html#filesysXFile and Directory AccesstrXimplementationsr(jjXDhttp://docs.python.org/3/reference/introduction.html#implementationsXAlternate ImplementationstrXcookie-jar-objectsr(jjXGhttp://docs.python.org/3/library/http.cookiejar.html#cookie-jar-objectsX#CookieJar and FileCookieJar ObjectstrXbuilt-in-constsr(jjX?http://docs.python.org/3/library/constants.html#built-in-constsXBuilt-in ConstantstrXnumbersr(jjX@http://docs.python.org/3/reference/lexical_analysis.html#numbersXNumeric literalstrXpackage-uploadr(jjXChttp://docs.python.org/3/distutils/packageindex.html#package-uploadXUploading PackagestrXassert-methodsr(jjX=http://docs.python.org/3/library/unittest.html#assert-methodsX-trX sortinghowtor(jjX8http://docs.python.org/3/howto/sorting.html#sortinghowtoXSorting HOW TOtrXtermios-exampler(jjX=http://docs.python.org/3/library/termios.html#termios-exampleXExampletr Xsection-encodingsr (jjX<http://docs.python.org/3/whatsnew/2.3.html#section-encodingsXPEP 263: Source Code Encodingstr Xmanifest-optionsr (jjXChttp://docs.python.org/3/distutils/sourcedist.html#manifest-optionsXManifest-related optionstr Xtut-quality-controlr(jjXAhttp://docs.python.org/3/tutorial/stdlib.html#tut-quality-controlXQuality ControltrXunittest-skippingr(jjX@http://docs.python.org/3/library/unittest.html#unittest-skippingX$Skipping tests and expected failurestrXctypes-arrays-pointersr(jjXChttp://docs.python.org/3/library/ctypes.html#ctypes-arrays-pointersXArrays and pointerstrXstandardexceptionsr(jjXAhttp://docs.python.org/3/c-api/exceptions.html#standardexceptionsXStandard ExceptionstrXpyzipfile-objectsr(jjX?http://docs.python.org/3/library/zipfile.html#pyzipfile-objectsXPyZipFile ObjectstrXwin-dllsr(jjX8http://docs.python.org/3/extending/windows.html#win-dllsXUsing DLLs in PracticetrXmappingr(jjX3http://docs.python.org/3/c-api/mapping.html#mappingXMapping ProtocoltrXsequenceobjectsr(jjX<http://docs.python.org/3/c-api/concrete.html#sequenceobjectsXSequence ObjectstrXstream-writer-objectsr(jjXBhttp://docs.python.org/3/library/codecs.html#stream-writer-objectsXStreamWriter ObjectstrXpep-412r (jjX2http://docs.python.org/3/whatsnew/3.3.html#pep-412XPEP 412: Key-Sharing Dictionarytr!Xstring-formattingr"(jjX>http://docs.python.org/3/library/string.html#string-formattingXString Formattingtr#Xoptparse-creating-parserr$(jjXGhttp://docs.python.org/3/library/optparse.html#optparse-creating-parserXCreating the parsertr%Xnumericobjectsr&(jjX;http://docs.python.org/3/c-api/concrete.html#numericobjectsXNumeric Objectstr'X constantsr((jjX6http://docs.python.org/3/library/winreg.html#constantsX Constantstr)Xsummary-objectsr*(jjX<http://docs.python.org/3/library/msilib.html#summary-objectsXSummary Information Objectstr+Xpickle-protocolsr,(jjX=http://docs.python.org/3/library/pickle.html#pickle-protocolsXData stream formattr-X bytecodesr.(jjX3http://docs.python.org/3/library/dis.html#bytecodesXPython Bytecode Instructionstr/X id-classesr0(jjXChttp://docs.python.org/3/reference/lexical_analysis.html#id-classesXReserved classes of identifierstr1Xnew-27-interpreterr2(jjX=http://docs.python.org/3/whatsnew/2.7.html#new-27-interpreterXInterpreter Changestr3X fundamentalr4(jjX8http://docs.python.org/3/c-api/concrete.html#fundamentalXFundamental Objectstr5Xincremental-decoder-objectsr6(jjXHhttp://docs.python.org/3/library/codecs.html#incremental-decoder-objectsXIncrementalDecoder Objectstr7Xdistutils-additional-filesr8(jjXNhttp://docs.python.org/3/distutils/setupscript.html#distutils-additional-filesXInstalling Additional Filestr9Xdistutils-simple-exampler:(jjXMhttp://docs.python.org/3/distutils/introduction.html#distutils-simple-exampleXA Simple Exampletr;Xextending-indexr<(jjX=http://docs.python.org/3/extending/index.html#extending-indexX.Extending and Embedding the Python Interpretertr=Xinst-standard-installr>(jjXAhttp://docs.python.org/3/install/index.html#inst-standard-installXStandard Build and Installtr?Xmapping-structsr@(jjX;http://docs.python.org/3/c-api/typeobj.html#mapping-structsXMapping Object StructurestrAXtut-multi-threadingrB(jjXBhttp://docs.python.org/3/tutorial/stdlib2.html#tut-multi-threadingXMulti-threadingtrCX concurrencyrD(jjX=http://docs.python.org/3/library/concurrency.html#concurrencyXConcurrent ExecutiontrEXpath_fdrF(jjX0http://docs.python.org/3/library/os.html#path-fdX-trGX tokenize-clirH(jjX;http://docs.python.org/3/library/tokenize.html#tokenize-cliXCommand-Line UsagetrIXpypircrJ(jjX;http://docs.python.org/3/distutils/packageindex.html#pypircXThe .pypirc filetrKXextending-errorsrL(jjXBhttp://docs.python.org/3/extending/extending.html#extending-errorsX!Intermezzo: Errors and ExceptionstrMX rlock-objectsrN(jjX=http://docs.python.org/3/library/threading.html#rlock-objectsX RLock ObjectstrOX tut-introrP(jjX9http://docs.python.org/3/tutorial/appetite.html#tut-introXWhetting Your AppetitetrQXdom-attr-objectsrR(jjX>http://docs.python.org/3/library/xml.dom.html#dom-attr-objectsX Attr ObjectstrSXpep-308rT(jjX2http://docs.python.org/3/whatsnew/2.5.html#pep-308X PEP 308: Conditional ExpressionstrUXpep-309rV(jjX2http://docs.python.org/3/whatsnew/2.5.html#pep-309X%PEP 309: Partial Function ApplicationtrWXnew-26-interpreterrX(jjX=http://docs.python.org/3/whatsnew/2.6.html#new-26-interpreterXInterpreter ChangestrYX o_ampersandrZ(jjX3http://docs.python.org/3/c-api/arg.html#o-ampersandX-tr[X compilingr\(jjX;http://docs.python.org/3/extending/embedding.html#compilingX-Compiling and Linking under Unix-like systemstr]Xelementtree-functionsr^(jjXQhttp://docs.python.org/3/library/xml.etree.elementtree.html#elementtree-functionsX Functionstr_Xdeprecated-3.4r`(jjX9http://docs.python.org/3/whatsnew/3.4.html#deprecated-3-4X DeprecatedtraXreturnrb(jjX;http://docs.python.org/3/reference/simple_stmts.html#returnXThe return statementtrcXdoctest-outputcheckerrd(jjXChttp://docs.python.org/3/library/doctest.html#doctest-outputcheckerXOutputChecker objectstreXmiscrf(jjX/http://docs.python.org/3/library/misc.html#miscXMiscellaneous ServicestrgXoptparse-cleanuprh(jjX?http://docs.python.org/3/library/optparse.html#optparse-cleanupXCleanuptriXbreakrj(jjX:http://docs.python.org/3/reference/simple_stmts.html#breakXThe break statementtrkX frameworkrl(jjX8http://docs.python.org/3/howto/webservers.html#frameworkX FrameworkstrmX tut-iteratorsrn(jjX<http://docs.python.org/3/tutorial/classes.html#tut-iteratorsX IteratorstroX api-typesrp(jjX3http://docs.python.org/3/c-api/intro.html#api-typesXTypestrqX setup-configrr(jjX?http://docs.python.org/3/distutils/configfile.html#setup-configX$Writing the Setup Configuration FiletrsXcompoundrt(jjX?http://docs.python.org/3/reference/compound_stmts.html#compoundXCompound statementstruXdom-pi-objectsrv(jjX<http://docs.python.org/3/library/xml.dom.html#dom-pi-objectsXProcessingInstruction ObjectstrwXrecord-objectsrx(jjX;http://docs.python.org/3/library/msilib.html#record-objectsXRecord ObjectstryXsearch-vs-matchrz(jjX8http://docs.python.org/3/library/re.html#search-vs-matchXsearch() vs. match()tr{Xpure-embeddingr|(jjX@http://docs.python.org/3/extending/embedding.html#pure-embeddingXPure Embeddingtr}X trace-apir~(jjX5http://docs.python.org/3/library/trace.html#trace-apiXProgrammatic InterfacetrX+ctypes-accessing-functions-from-loaded-dllsr(jjXXhttp://docs.python.org/3/library/ctypes.html#ctypes-accessing-functions-from-loaded-dllsX$Accessing functions from loaded dllstrXpep-0372r(jjX3http://docs.python.org/3/whatsnew/2.7.html#pep-0372X4PEP 372: Adding an Ordered Dictionary to collectionstrX24acksr(jjX/http://docs.python.org/3/whatsnew/2.4.html#acksXAcknowledgementstrX smtp-handlerr(jjXChttp://docs.python.org/3/library/logging.handlers.html#smtp-handlerX SMTPHandlertrXbrowser-controllersr(jjXDhttp://docs.python.org/3/library/webbrowser.html#browser-controllersXBrowser Controller ObjectstrXstdcomparisonsr(jjX=http://docs.python.org/3/library/stdtypes.html#stdcomparisonsX ComparisonstrXtraceback-exampler(jjXAhttp://docs.python.org/3/library/traceback.html#traceback-exampleXTraceback ExamplestrXtut-formattingr(jjXAhttp://docs.python.org/3/tutorial/inputoutput.html#tut-formattingXFancier Output FormattingtrXasyncio-hello-world-callbackr(jjXThttp://docs.python.org/3/library/asyncio-eventloop.html#asyncio-hello-world-callbackXExample: Hello World (callback)trXportsr(jjX0http://docs.python.org/3/whatsnew/2.5.html#portsXPort-Specific ChangestrXtut-firststepsr(jjXBhttp://docs.python.org/3/tutorial/introduction.html#tut-firststepsXFirst Steps Towards ProgrammingtrXwarning-categoriesr(jjXAhttp://docs.python.org/3/library/warnings.html#warning-categoriesXWarning CategoriestrXnumericr(jjX5http://docs.python.org/3/library/numeric.html#numericX Numeric and Mathematical ModulestrX examples-impr(jjX6http://docs.python.org/3/library/imp.html#examples-impXExamplestrXlogging-import-resolutionr(jjXNhttp://docs.python.org/3/library/logging.config.html#logging-import-resolutionX&Import resolution and custom importerstrXtut-unpacking-argumentsr(jjXJhttp://docs.python.org/3/tutorial/controlflow.html#tut-unpacking-argumentsXUnpacking Argument ListstrXsocket-timeoutsr(jjX<http://docs.python.org/3/library/socket.html#socket-timeoutsXNotes on socket timeoutstrXformatexamplesr(jjX;http://docs.python.org/3/library/string.html#formatexamplesXFormat examplestrX typesobjectsr(jjX;http://docs.python.org/3/library/stdtypes.html#typesobjectsXClasses and Class InstancestrXtypesseq-tupler(jjX=http://docs.python.org/3/library/stdtypes.html#typesseq-tupleXTuplestrX whitespacer(jjXChttp://docs.python.org/3/reference/lexical_analysis.html#whitespaceXWhitespace between tokenstrXzipimporter-objectsr(jjXChttp://docs.python.org/3/library/zipimport.html#zipimporter-objectsXzipimporter ObjectstrXusing-on-generalr(jjX<http://docs.python.org/3/using/cmdline.html#using-on-generalXCommand line and environmenttrXtut-scopeexampler(jjX?http://docs.python.org/3/tutorial/classes.html#tut-scopeexampleXScopes and Namespaces ExampletrX terminal-sizer(jjX6http://docs.python.org/3/library/os.html#terminal-sizeXQuerying the size of a terminaltrX!elementtree-xmlpullparser-objectsr(jjX]http://docs.python.org/3/library/xml.etree.elementtree.html#elementtree-xmlpullparser-objectsXXMLPullParser ObjectstrXfinalize-examplesr(jjX?http://docs.python.org/3/library/weakref.html#finalize-examplesXFinalizer ObjectstrXctypes-finding-shared-librariesr(jjXLhttp://docs.python.org/3/library/ctypes.html#ctypes-finding-shared-librariesXFinding shared librariestrX fault-objectsr(jjXAhttp://docs.python.org/3/library/xmlrpc.client.html#fault-objectsX Fault ObjectstrXcustom-logrecordr(jjXEhttp://docs.python.org/3/howto/logging-cookbook.html#custom-logrecordXCustomizing LogRecordtrX decimal-faqr(jjX9http://docs.python.org/3/library/decimal.html#decimal-faqX Decimal FAQtrXextending-intror(jjXAhttp://docs.python.org/3/extending/extending.html#extending-introXExtending Python with C or C++trX reusable-cmsr(jjX=http://docs.python.org/3/library/contextlib.html#reusable-cmsXReusable context managerstrX io-overviewr(jjX4http://docs.python.org/3/library/io.html#io-overviewXOverviewtrX uuid-exampler(jjX7http://docs.python.org/3/library/uuid.html#uuid-exampleXExampletrX netrc-objectsr(jjX9http://docs.python.org/3/library/netrc.html#netrc-objectsX netrc ObjectstrXdatetime-timedeltar(jjXAhttp://docs.python.org/3/library/datetime.html#datetime-timedeltaXtimedelta ObjectstrX magic-methodsr(jjXAhttp://docs.python.org/3/library/unittest.mock.html#magic-methodsXMocking Magic MethodstrX using-on-macr(jjX4http://docs.python.org/3/using/mac.html#using-on-macXUsing Python on a MacintoshtrXkevent-objectsr(jjX;http://docs.python.org/3/library/select.html#kevent-objectsXKevent ObjectstrXtarinfo-objectsr(jjX=http://docs.python.org/3/library/tarfile.html#tarinfo-objectsXTarInfo ObjectstrX*ctypes-structureunion-alignment-byte-orderr(jjXWhttp://docs.python.org/3/library/ctypes.html#ctypes-structureunion-alignment-byte-orderX-trX boolobjectsr(jjX4http://docs.python.org/3/c-api/bool.html#boolobjectsXBoolean ObjectstrXfilterr(jjX4http://docs.python.org/3/library/logging.html#filterXFilter ObjectstrX other-langr(jjX5http://docs.python.org/3/whatsnew/2.5.html#other-langXOther Language ChangestrX st-objectsr(jjX7http://docs.python.org/3/library/parser.html#st-objectsX ST ObjectstrXtut-exceptionsr(jjX<http://docs.python.org/3/tutorial/errors.html#tut-exceptionsX ExceptionstrXpep-3141r(jjX3http://docs.python.org/3/whatsnew/2.6.html#pep-3141X&PEP 3141: A Type Hierarchy for NumberstrX datamodelr(jjX;http://docs.python.org/3/reference/datamodel.html#datamodelX Data modeltrXtut-string-pattern-matchingr(jjXIhttp://docs.python.org/3/tutorial/stdlib.html#tut-string-pattern-matchingXString Pattern MatchingtrX cgi-intror(jjX3http://docs.python.org/3/library/cgi.html#cgi-introX-trXfeaturesr(jjX5http://docs.python.org/3/library/msilib.html#featuresXFeaturestrXsequence-structsr(jjX<http://docs.python.org/3/c-api/typeobj.html#sequence-structsXSequence Object StructurestrX view-objectsr(jjX9http://docs.python.org/3/library/msilib.html#view-objectsX View ObjectstrXnumberr(jjX1http://docs.python.org/3/c-api/number.html#numberXNumber ProtocoltrX typesotherr(jjX9http://docs.python.org/3/library/stdtypes.html#typesotherXOther Built-in TypestrXbinary-objectsr(jjXBhttp://docs.python.org/3/library/xmlrpc.client.html#binary-objectsXBinary ObjectstrX customizationr(jjX?http://docs.python.org/3/reference/datamodel.html#customizationXBasic customizationtrX api-intror(jjX3http://docs.python.org/3/c-api/intro.html#api-introX IntroductiontrXtimeit-examplesr(jjX<http://docs.python.org/3/library/timeit.html#timeit-examplesXExamplestrXtkinter-basic-mappingr(jjXChttp://docs.python.org/3/library/tkinter.html#tkinter-basic-mappingXMapping Basic Tk into TkintertrX introductionr(jjXAhttp://docs.python.org/3/reference/introduction.html#introductionX IntroductiontrXsystemfunctionsr(jjX7http://docs.python.org/3/c-api/sys.html#systemfunctionsXSystem FunctionstrXunicodemethodsandslotsr(jjXBhttp://docs.python.org/3/c-api/unicode.html#unicodemethodsandslotsXMethods and Slot FunctionstrXtut-lists-as-queuesr(jjXIhttp://docs.python.org/3/tutorial/datastructures.html#tut-lists-as-queuesXUsing Lists as QueuestrXbisect-exampler(jjX;http://docs.python.org/3/library/bisect.html#bisect-exampleX-trX api-includesr(jjX6http://docs.python.org/3/c-api/intro.html#api-includesX Include FilestrXinst-custom-installr(jjX?http://docs.python.org/3/install/index.html#inst-custom-installXCustom InstallationtrX logical-linesr(jjXFhttp://docs.python.org/3/reference/lexical_analysis.html#logical-linesX Logical linestr X3ctypes-calling-functions-with-own-custom-data-typesr (jjX`http://docs.python.org/3/library/ctypes.html#ctypes-calling-functions-with-own-custom-data-typesX1Calling functions with your own custom data typestr Xtkinter-setting-optionsr (jjXEhttp://docs.python.org/3/library/tkinter.html#tkinter-setting-optionsXSetting Optionstr Xdoctest-which-docstringsr(jjXFhttp://docs.python.org/3/library/doctest.html#doctest-which-docstringsXWhich Docstrings Are Examined?trXtypesfunctionsr(jjX=http://docs.python.org/3/library/stdtypes.html#typesfunctionsX FunctionstrXinst-alt-install-userr(jjXAhttp://docs.python.org/3/install/index.html#inst-alt-install-userX'Alternate installation: the user schemetrX tut-scriptsr(jjX>http://docs.python.org/3/tutorial/interpreter.html#tut-scriptsXExecutable Python ScriptstrXorganizing-testsr(jjX?http://docs.python.org/3/library/unittest.html#organizing-testsXOrganizing test codetrXserverproxy-objectsr(jjXGhttp://docs.python.org/3/library/xmlrpc.client.html#serverproxy-objectsXServerProxy ObjectstrXxmlreader-objectsr(jjXFhttp://docs.python.org/3/library/xml.sax.reader.html#xmlreader-objectsXXMLReader ObjectstrXtut-delr(jjX=http://docs.python.org/3/tutorial/datastructures.html#tut-delXThe del statementtrXidler(jjX/http://docs.python.org/3/library/idle.html#idleXIDLEtrXinst-non-ms-compilersr (jjXAhttp://docs.python.org/3/install/index.html#inst-non-ms-compilersX(Using non-Microsoft compilers on Windowstr!X custominterpr"(jjX?http://docs.python.org/3/library/custominterp.html#custominterpXCustom Python Interpreterstr#X arg-parsingr$(jjX3http://docs.python.org/3/c-api/arg.html#arg-parsingX%Parsing arguments and building valuestr%Xmswin-specific-servicesr&(jjXEhttp://docs.python.org/3/library/windows.html#mswin-specific-servicesXMS Windows Specific Servicestr'Xsequencematcher-examplesr((jjXFhttp://docs.python.org/3/library/difflib.html#sequencematcher-examplesXSequenceMatcher Examplestr)Xcodec-registryr*(jjX8http://docs.python.org/3/c-api/codec.html#codec-registryX$Codec registry and support functionstr+Xbitwiser,(jjX;http://docs.python.org/3/reference/expressions.html#bitwiseXBinary bitwise operationstr-Xbltin-exceptionsr.(jjXAhttp://docs.python.org/3/library/exceptions.html#bltin-exceptionsXBuilt-in Exceptionstr/Xvenv-apir0(jjX3http://docs.python.org/3/library/venv.html#venv-apiXAPItr1X writer-implsr2(jjX<http://docs.python.org/3/library/formatter.html#writer-implsXWriter Implementationstr3Xformatting-stylesr4(jjXFhttp://docs.python.org/3/howto/logging-cookbook.html#formatting-stylesX>Using particular formatting styles throughout your applicationtr5Xdifflib-interfacer6(jjX?http://docs.python.org/3/library/difflib.html#difflib-interfaceX#A command-line interface to difflibtr7Xhowto-minimal-exampler8(jjXAhttp://docs.python.org/3/howto/logging.html#howto-minimal-exampleXA simple exampletr9Xbltin-code-objectsr:(jjXAhttp://docs.python.org/3/library/stdtypes.html#bltin-code-objectsX Code Objectstr;X os-processr<(jjX3http://docs.python.org/3/library/os.html#os-processXProcess Managementtr=Xline-structurer>(jjXGhttp://docs.python.org/3/reference/lexical_analysis.html#line-structureXLine structuretr?X atom-literalsr@(jjXAhttp://docs.python.org/3/reference/expressions.html#atom-literalsXLiteralstrAXentity-resolver-objectsrB(jjXMhttp://docs.python.org/3/library/xml.sax.handler.html#entity-resolver-objectsXEntityResolver ObjectstrCXelementtree-xmlparser-objectsrD(jjXYhttp://docs.python.org/3/library/xml.etree.elementtree.html#elementtree-xmlparser-objectsXXMLParser ObjectstrEXtemplate-objectsrF(jjX<http://docs.python.org/3/library/pipes.html#template-objectsXTemplate ObjectstrGXobjectrH(jjX1http://docs.python.org/3/c-api/object.html#objectXObject ProtocoltrIXlower-level-embeddingrJ(jjXGhttp://docs.python.org/3/extending/embedding.html#lower-level-embeddingX-Beyond Very High Level Embedding: An overviewtrKXwhatsnew-statisticsrL(jjX>http://docs.python.org/3/whatsnew/3.4.html#whatsnew-statisticsX statisticstrMXnew-26-context-managersrN(jjXBhttp://docs.python.org/3/whatsnew/2.6.html#new-26-context-managersXWriting Context ManagerstrOX faq-indexrP(jjX1http://docs.python.org/3/faq/index.html#faq-indexX!Python Frequently Asked QuestionstrQXstart-and-stoprR(jjXBhttp://docs.python.org/3/library/unittest.mock.html#start-and-stopXpatch methods: start and stoptrSXdom-comment-objectsrT(jjXAhttp://docs.python.org/3/library/xml.dom.html#dom-comment-objectsXComment ObjectstrUXctypes-pointersrV(jjX<http://docs.python.org/3/library/ctypes.html#ctypes-pointersXPointerstrWXoptparse-parsing-argumentsrX(jjXIhttp://docs.python.org/3/library/optparse.html#optparse-parsing-argumentsXParsing argumentstrYXtut-weak-referencesrZ(jjXBhttp://docs.python.org/3/tutorial/stdlib2.html#tut-weak-referencesXWeak Referencestr[Xsocket-exampler\(jjX;http://docs.python.org/3/library/socket.html#socket-exampleXExampletr]Xinst-new-standardr^(jjX=http://docs.python.org/3/install/index.html#inst-new-standardXThe new standard: Distutilstr_Xnewtypesr`(jjX4http://docs.python.org/3/c-api/objimpl.html#newtypesXObject Implementation SupporttraX ftp-objectsrb(jjX8http://docs.python.org/3/library/ftplib.html#ftp-objectsX FTP ObjectstrcX typebytearrayrd(jjX<http://docs.python.org/3/library/stdtypes.html#typebytearrayXBytearray ObjectstreX tut-rangerf(jjX<http://docs.python.org/3/tutorial/controlflow.html#tut-rangeXThe range() FunctiontrgX tut-startuprh(jjX>http://docs.python.org/3/tutorial/interpreter.html#tut-startupXThe Interactive Startup FiletriXwsgirj(jjX3http://docs.python.org/3/howto/webservers.html#wsgiXStep back: WSGItrkXexpat-content-modelsrl(jjXBhttp://docs.python.org/3/library/pyexpat.html#expat-content-modelsXContent Model DescriptionstrmXlogging-config-dict-userdefrn(jjXPhttp://docs.python.org/3/library/logging.config.html#logging-config-dict-userdefXUser-defined objectstroXdeleting-attributesrp(jjXGhttp://docs.python.org/3/library/unittest.mock.html#deleting-attributesXDeleting AttributestrqXcurses-functionsrr(jjX=http://docs.python.org/3/library/curses.html#curses-functionsX FunctionstrsX tar-unicodert(jjX9http://docs.python.org/3/library/tarfile.html#tar-unicodeXUnicode issuestruXkeywordsrv(jjXAhttp://docs.python.org/3/reference/lexical_analysis.html#keywordsXKeywordstrwXmemoryinterfacerx(jjX:http://docs.python.org/3/c-api/memory.html#memoryinterfaceXMemory InterfacetryXveryhighrz(jjX5http://docs.python.org/3/c-api/veryhigh.html#veryhighXThe Very High Level Layertr{Xabstract-basic-auth-handlerr|(jjXPhttp://docs.python.org/3/library/urllib.request.html#abstract-basic-auth-handlerX AbstractBasicAuthHandler Objectstr}Xlayoutr~(jjX8http://docs.python.org/3/library/tkinter.ttk.html#layoutX-trX writing-testsr(jjX8http://docs.python.org/3/library/test.html#writing-testsX'Writing Unit Tests for the test packagetrXwindows-path-modr(jjX<http://docs.python.org/3/using/windows.html#windows-path-modXFinding the Python executabletrX dom-exampler(jjXAhttp://docs.python.org/3/library/xml.dom.minidom.html#dom-exampleX DOM ExampletrXssl-nonblockingr(jjX9http://docs.python.org/3/library/ssl.html#ssl-nonblockingXNotes on non-blocking socketstrXmultiprocessing-auth-keysr(jjXOhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing-auth-keysXAuthentication keystrXbinary-transformsr(jjX>http://docs.python.org/3/library/codecs.html#binary-transformsXBinary TransformstrXmemory-handlerr(jjXEhttp://docs.python.org/3/library/logging.handlers.html#memory-handlerX MemoryHandlertrXweakref-supportr(jjX@http://docs.python.org/3/extending/newtypes.html#weakref-supportXWeak Reference SupporttrXusing-on-cmdliner(jjX<http://docs.python.org/3/using/cmdline.html#using-on-cmdlineX Command linetrXpickle-dispatchr(jjX<http://docs.python.org/3/library/pickle.html#pickle-dispatchXDispatch TablestrXsocket-handlerr(jjXEhttp://docs.python.org/3/library/logging.handlers.html#socket-handlerX SocketHandlertrXtestcase-objectsr(jjX?http://docs.python.org/3/library/unittest.html#testcase-objectsX Test casestrX countingrefsr(jjX<http://docs.python.org/3/c-api/refcounting.html#countingrefsXReference CountingtrX auto-speccingr(jjXAhttp://docs.python.org/3/library/unittest.mock.html#auto-speccingX AutospeccingtrXasyncio-coroutine-not-scheduledr(jjXQhttp://docs.python.org/3/library/asyncio-dev.html#asyncio-coroutine-not-scheduledX(Detect coroutine objects never scheduledtrXnotationr(jjX=http://docs.python.org/3/reference/introduction.html#notationXNotationtrXdefining-new-typesr(jjXChttp://docs.python.org/3/extending/newtypes.html#defining-new-typesXDefining New TypestrX library-indexr(jjX9http://docs.python.org/3/library/index.html#library-indexXThe Python Standard LibrarytrXsyslog-handlerr(jjXEhttp://docs.python.org/3/library/logging.handlers.html#syslog-handlerX SysLogHandlertrX cmd-objectsr(jjX5http://docs.python.org/3/library/cmd.html#cmd-objectsX Cmd ObjectstrXstruct-objectsr(jjX;http://docs.python.org/3/library/struct.html#struct-objectsXClassestrXconsole-objectsr(jjX:http://docs.python.org/3/library/code.html#console-objectsXInteractive Console ObjectstrXdecimal-tutorialr(jjX>http://docs.python.org/3/library/decimal.html#decimal-tutorialXQuick-start TutorialtrXelementtree-xpathr(jjXMhttp://docs.python.org/3/library/xml.etree.elementtree.html#elementtree-xpathX XPath supporttrXdoctest-execution-contextr(jjXGhttp://docs.python.org/3/library/doctest.html#doctest-execution-contextXWhat's the Execution Context?trXpep-338r(jjX2http://docs.python.org/3/whatsnew/2.5.html#pep-338X%PEP 338: Executing Modules as ScriptstrX querying-stsr(jjX9http://docs.python.org/3/library/parser.html#querying-stsXQueries on ST ObjectstrXasyncore-example-1r(jjXAhttp://docs.python.org/3/library/asyncore.html#asyncore-example-1X"asyncore Example basic HTTP clienttrX c-api-indexr(jjX5http://docs.python.org/3/c-api/index.html#c-api-indexXPython/C API Reference ManualtrXzeromq-handlersr(jjXDhttp://docs.python.org/3/howto/logging-cookbook.html#zeromq-handlersX+Subclassing QueueHandler - a ZeroMQ exampletrXdom-text-objectsr(jjX>http://docs.python.org/3/library/xml.dom.html#dom-text-objectsXText and CDATASection ObjectstrXdecimal-rounding-modesr(jjXDhttp://docs.python.org/3/library/decimal.html#decimal-rounding-modesX ConstantstrXattributes-objectsr(jjXGhttp://docs.python.org/3/library/xml.sax.reader.html#attributes-objectsXThe Attributes InterfacetrXtut-setsr(jjX>http://docs.python.org/3/tutorial/datastructures.html#tut-setsXSetstrXposix-large-filesr(jjX=http://docs.python.org/3/library/posix.html#posix-large-filesXLarge File SupporttrXelementtree-pull-parsingr(jjXThttp://docs.python.org/3/library/xml.etree.elementtree.html#elementtree-pull-parsingX!Pull API for non-blocking parsingtrXtypesseq-ranger(jjX=http://docs.python.org/3/library/stdtypes.html#typesseq-rangeXRangestrXsetr(jjX7http://docs.python.org/3/reference/expressions.html#setX Set displaystrXipaddress-howtor(jjX=http://docs.python.org/3/howto/ipaddress.html#ipaddress-howtoX'An introduction to the ipaddress moduletrX referencer(jjX<http://docs.python.org/3/distutils/commandref.html#referenceXCommand ReferencetrXsqlite3-cursor-objectsr(jjXDhttp://docs.python.org/3/library/sqlite3.html#sqlite3-cursor-objectsXCursor ObjectstrXstruct-examplesr(jjX<http://docs.python.org/3/library/struct.html#struct-examplesXExamplestrXtype-specific-methodsr(jjXDhttp://docs.python.org/3/library/unittest.html#type-specific-methodsX-trX module-etreer(jjX7http://docs.python.org/3/whatsnew/2.5.html#module-etreeXThe ElementTree packagetrX codeobjectsr(jjX4http://docs.python.org/3/c-api/code.html#codeobjectsX Code ObjectstrX evalorderr(jjX=http://docs.python.org/3/reference/expressions.html#evalorderXEvaluation ordertrXasyncio-event-loopr(jjXJhttp://docs.python.org/3/library/asyncio-eventloop.html#asyncio-event-loopX Event loopstrXsax-error-handlerr(jjXGhttp://docs.python.org/3/library/xml.sax.handler.html#sax-error-handlerXErrorHandler ObjectstrXinst-how-build-worksr(jjX@http://docs.python.org/3/install/index.html#inst-how-build-worksXHow building workstrXgenerator-typesr(jjX>http://docs.python.org/3/library/stdtypes.html#generator-typesXGenerator TypestrX tut-comparingr(jjXChttp://docs.python.org/3/tutorial/datastructures.html#tut-comparingX#Comparing Sequences and Other TypestrX23section-otherr(jjX8http://docs.python.org/3/whatsnew/2.3.html#section-otherXOther Changes and FixestrXinst-alt-install-prefix-unixr(jjXHhttp://docs.python.org/3/install/index.html#inst-alt-install-prefix-unixX0Alternate installation: Unix (the prefix scheme)trX profilingr(jjX2http://docs.python.org/3/c-api/init.html#profilingXProfiling and TracingtrXwhatsnew34-sslcontextr(jjX@http://docs.python.org/3/whatsnew/3.4.html#whatsnew34-sslcontextX-trXimportlib-sectionr(jjX<http://docs.python.org/3/whatsnew/2.7.html#importlib-sectionXNew module: importlibtrXctypes-data-typesr(jjX>http://docs.python.org/3/library/ctypes.html#ctypes-data-typesX Data typestrX noneobjectr(jjX3http://docs.python.org/3/c-api/none.html#noneobjectXThe None ObjecttrXxmlrpc-client-exampler(jjXIhttp://docs.python.org/3/library/xmlrpc.client.html#xmlrpc-client-exampleXExample of Client UsagetrX builtincodecsr(jjX9http://docs.python.org/3/c-api/unicode.html#builtincodecsXBuilt-in CodecstrXfilters-dictconfigr(jjXGhttp://docs.python.org/3/howto/logging-cookbook.html#filters-dictconfigX%Configuring filters with dictConfig()trXsetting-envvarsr(jjX;http://docs.python.org/3/using/windows.html#setting-envvarsX'Excursus: Setting environment variablestrXctypes-fundamental-data-typesr(jjXJhttp://docs.python.org/3/library/ctypes.html#ctypes-fundamental-data-typesXFundamental data typestrX tut-packagesr(jjX;http://docs.python.org/3/tutorial/modules.html#tut-packagesXPackagestrXunittest-command-line-interfacer(jjXNhttp://docs.python.org/3/library/unittest.html#unittest-command-line-interfaceXCommand-Line InterfacetrXwarning-filterr(jjX=http://docs.python.org/3/library/warnings.html#warning-filterXThe Warnings FiltertrXau-write-objectsr(jjX<http://docs.python.org/3/library/sunau.html#au-write-objectsXAU_write ObjectstrX decimal-notesr(jjX;http://docs.python.org/3/library/decimal.html#decimal-notesXFloating Point NotestrXpep-352r(jjX2http://docs.python.org/3/whatsnew/2.5.html#pep-352X(PEP 352: Exceptions as New-Style Classestr Xwhatsnew-pep-442r (jjX;http://docs.python.org/3/whatsnew/3.4.html#whatsnew-pep-442X!PEP 442: Safe Object Finalizationtr X apiabiversionr (jjX?http://docs.python.org/3/c-api/apiabiversion.html#apiabiversionXAPI and ABI Versioningtr Xwhatsnew-pep-446r(jjX;http://docs.python.org/3/whatsnew/3.4.html#whatsnew-pep-446X;PEP 446: Newly Created File Descriptors Are Non-InheritabletrXwhatsnew-pep-445r(jjX;http://docs.python.org/3/whatsnew/3.4.html#whatsnew-pep-445X3PEP 445: Customization of CPython Memory AllocatorstrX os-file-dirr(jjX4http://docs.python.org/3/library/os.html#os-file-dirXFiles and DirectoriestrX lock-objectsr(jjX<http://docs.python.org/3/library/threading.html#lock-objectsX Lock ObjectstrXconverting-argument-sequencer(jjXMhttp://docs.python.org/3/library/subprocess.html#converting-argument-sequenceX6Converting an argument sequence to a string on WindowstrXlogging-cookbookr(jjXEhttp://docs.python.org/3/howto/logging-cookbook.html#logging-cookbookXLogging CookbooktrX tut-remarksr(jjX:http://docs.python.org/3/tutorial/classes.html#tut-remarksXRandom RemarkstrX interactiver(jjXGhttp://docs.python.org/3/reference/toplevel_components.html#interactiveXInteractive inputtrXdomeventstream-objectsr(jjXLhttp://docs.python.org/3/library/xml.dom.pulldom.html#domeventstream-objectsXDOMEventStream ObjectstrXprettyprinter-objectsr (jjXBhttp://docs.python.org/3/library/pprint.html#prettyprinter-objectsXPrettyPrinter Objectstr!Xdom-exceptionsr"(jjX<http://docs.python.org/3/library/xml.dom.html#dom-exceptionsX Exceptionstr#Xsimpler$(jjX;http://docs.python.org/3/reference/simple_stmts.html#simpleXSimple statementstr%Xdoc-xmlrpc-serversr&(jjXFhttp://docs.python.org/3/library/xmlrpc.server.html#doc-xmlrpc-serversXDocXMLRPCServer Objectstr'Xtut-ior((jjX9http://docs.python.org/3/tutorial/inputoutput.html#tut-ioXInput and Outputtr)Xslotsr*(jjX7http://docs.python.org/3/reference/datamodel.html#slotsX __slots__tr+Xtut-ifr,(jjX9http://docs.python.org/3/tutorial/controlflow.html#tut-ifX if Statementstr-Xusing-the-trackerr.(jjX4http://docs.python.org/3/bugs.html#using-the-trackerXUsing the Python issue trackertr/X typesseq-listr0(jjX<http://docs.python.org/3/library/stdtypes.html#typesseq-listXListstr1X sdist-cmdr2(jjX<http://docs.python.org/3/distutils/commandref.html#sdist-cmdX1Creating a source distribution: the sdist commandtr3Xraiser4(jjX:http://docs.python.org/3/reference/simple_stmts.html#raiseXThe raise statementtr5Xmailbox-maildirr6(jjX=http://docs.python.org/3/library/mailbox.html#mailbox-maildirXMaildirtr7X buildvaluer8(jjX<http://docs.python.org/3/extending/extending.html#buildvalueXBuilding Arbitrary Valuestr9Xdoctest-simple-testfiler:(jjXEhttp://docs.python.org/3/library/doctest.html#doctest-simple-testfileX.Simple Usage: Checking Examples in a Text Filetr;X bltin-typesr<(jjX:http://docs.python.org/3/library/stdtypes.html#bltin-typesXBuilt-in Typestr=Xcomprehensionsr>(jjXBhttp://docs.python.org/3/reference/expressions.html#comprehensionsX)Displays for lists, sets and dictionariestr?Xpep-3151r@(jjX3http://docs.python.org/3/whatsnew/3.3.html#pep-3151X5PEP 3151: Reworking the OS and IO exception hierarchytrAXhttp-redirect-handlerrB(jjXJhttp://docs.python.org/3/library/urllib.request.html#http-redirect-handlerXHTTPRedirectHandler ObjectstrCXctypes-return-typesrD(jjX@http://docs.python.org/3/library/ctypes.html#ctypes-return-typesX Return typestrEXasyncio-transportrF(jjXHhttp://docs.python.org/3/library/asyncio-protocol.html#asyncio-transportX TransportstrGXlogging-config-dictschemarH(jjXNhttp://docs.python.org/3/library/logging.config.html#logging-config-dictschemaXConfiguration dictionary schematrIX context-inforJ(jjXAhttp://docs.python.org/3/howto/logging-cookbook.html#context-infoX4Adding contextual information to your logging outputtrKXdictrL(jjX8http://docs.python.org/3/reference/expressions.html#dictXDictionary displaystrMXprofile-limitationsrN(jjXAhttp://docs.python.org/3/library/profile.html#profile-limitationsX LimitationstrOXinspect-classes-functionsrP(jjXGhttp://docs.python.org/3/library/inspect.html#inspect-classes-functionsXClasses and functionstrQX api-refcountsrR(jjX7http://docs.python.org/3/c-api/intro.html#api-refcountsXReference CountstrSX re-examplesrT(jjX4http://docs.python.org/3/library/re.html#re-examplesXRegular Expression ExamplestrUXrlcompleter-configrV(jjX=http://docs.python.org/3/library/site.html#rlcompleter-configXReadline configurationtrWX func-rangerX(jjX:http://docs.python.org/3/library/functions.html#func-rangeX-trYX nntp-objectsrZ(jjX:http://docs.python.org/3/library/nntplib.html#nntp-objectsX NNTP Objectstr[Xoptparse-option-callbacksr\(jjXHhttp://docs.python.org/3/library/optparse.html#optparse-option-callbacksXOption Callbackstr]X backtoexampler^(jjX?http://docs.python.org/3/extending/extending.html#backtoexampleXBack to the Exampletr_Xlauncherr`(jjX4http://docs.python.org/3/using/windows.html#launcherXPython Launcher for WindowstraX!distutils-installing-package-datarb(jjXUhttp://docs.python.org/3/distutils/setupscript.html#distutils-installing-package-dataXInstalling Package DatatrcXreference-indexrd(jjX=http://docs.python.org/3/reference/index.html#reference-indexXThe Python Language ReferencetreXkeyword-only_parameterrf(jjX=http://docs.python.org/3/glossary.html#keyword-only-parameterX-trgXdistutils-build-ext-inplacerh(jjXNhttp://docs.python.org/3/distutils/configfile.html#distutils-build-ext-inplaceX-triXwhilerj(jjX<http://docs.python.org/3/reference/compound_stmts.html#whileXThe while statementtrkXstream-recoder-objectsrl(jjXChttp://docs.python.org/3/library/codecs.html#stream-recoder-objectsXStreamRecoder ObjectstrmXtut-brieftourtworn(jjX?http://docs.python.org/3/tutorial/stdlib2.html#tut-brieftourtwoX-Brief Tour of the Standard Library -- Part IItroX bytesobjectsrp(jjX6http://docs.python.org/3/c-api/bytes.html#bytesobjectsX Bytes ObjectstrqXtut-output-formattingrr(jjXDhttp://docs.python.org/3/tutorial/stdlib2.html#tut-output-formattingXOutput FormattingtrsXminidom-and-domrt(jjXEhttp://docs.python.org/3/library/xml.dom.minidom.html#minidom-and-domXminidom and the DOM standardtruXtut-os-interfacerv(jjX>http://docs.python.org/3/tutorial/stdlib.html#tut-os-interfaceXOperating System InterfacetrwX cgi-securityrx(jjX6http://docs.python.org/3/library/cgi.html#cgi-securityXCaring about securitytryXmailbox-mmdfmessagerz(jjXAhttp://docs.python.org/3/library/mailbox.html#mailbox-mmdfmessageX MMDFMessagetr{Xctypes-function-prototypesr|(jjXGhttp://docs.python.org/3/library/ctypes.html#ctypes-function-prototypesXFunction prototypestr}Xisr~(jjX6http://docs.python.org/3/reference/expressions.html#isX ComparisonstrXcporting-howtor(jjX;http://docs.python.org/3/howto/cporting.html#cporting-howtoX%Porting Extension Modules to Python 3trX new-decimalr(jjX6http://docs.python.org/3/whatsnew/3.3.html#new-decimalXdecimaltrXinr(jjX6http://docs.python.org/3/reference/expressions.html#inX ComparisonstrXbuffer-structsr(jjX:http://docs.python.org/3/c-api/typeobj.html#buffer-structsXBuffer Object StructurestrXfile-operationsr(jjX<http://docs.python.org/3/library/shutil.html#file-operationsXDirectory and files operationstrXifr(jjX9http://docs.python.org/3/reference/compound_stmts.html#ifXThe if statementtrXpep-3118-updater(jjX:http://docs.python.org/3/whatsnew/3.3.html#pep-3118-updateXIPEP 3118: New memoryview implementation and buffer protocol documentationtrXmultiple-destinationsr(jjXJhttp://docs.python.org/3/howto/logging-cookbook.html#multiple-destinationsX Logging to multiple destinationstrXlogical_operands_labelr(jjXDhttp://docs.python.org/3/library/decimal.html#logical-operands-labelXLogical operandstrXoptparse-callback-example-5r(jjXJhttp://docs.python.org/3/library/optparse.html#optparse-callback-example-5X#Callback example 5: fixed argumentstrX ssl-securityr(jjX6http://docs.python.org/3/library/ssl.html#ssl-securityXSecurity considerationstrXoptparse-callback-example-6r(jjXJhttp://docs.python.org/3/library/optparse.html#optparse-callback-example-6X&Callback example 6: variable argumentstrXoptparse-callback-example-1r(jjXJhttp://docs.python.org/3/library/optparse.html#optparse-callback-example-1X$Callback example 1: trivial callbacktrXoptparse-callback-example-3r(jjXJhttp://docs.python.org/3/library/optparse.html#optparse-callback-example-3X4Callback example 3: check option order (generalized)trXoptparse-callback-example-2r(jjXJhttp://docs.python.org/3/library/optparse.html#optparse-callback-example-2X&Callback example 2: check option ordertrX developmentr(jjX=http://docs.python.org/3/library/development.html#developmentXDevelopment ToolstrX indentationr(jjXDhttp://docs.python.org/3/reference/lexical_analysis.html#indentationX IndentationtrX assignmentr(jjX?http://docs.python.org/3/reference/simple_stmts.html#assignmentXAssignment statementstrXwhatsnew-asyncior(jjX;http://docs.python.org/3/whatsnew/3.4.html#whatsnew-asyncioXasynciotrXpy-to-json-tabler(jjX;http://docs.python.org/3/library/json.html#py-to-json-tableX-trX setup-scriptr(jjX@http://docs.python.org/3/distutils/setupscript.html#setup-scriptXWriting the Setup ScripttrX custom-levelsr(jjX9http://docs.python.org/3/howto/logging.html#custom-levelsX Custom LevelstrXlevelsr(jjX4http://docs.python.org/3/library/logging.html#levelsXLogging LevelstrX%single-use-reusable-and-reentrant-cmsr(jjXVhttp://docs.python.org/3/library/contextlib.html#single-use-reusable-and-reentrant-cmsX3Single use, reusable and reentrant context managerstrXinst-platform-variationsr(jjXDhttp://docs.python.org/3/install/index.html#inst-platform-variationsXPlatform variationstrXasynchat-exampler(jjX?http://docs.python.org/3/library/asynchat.html#asynchat-exampleXasynchat ExampletrXosx-gui-scriptsr(jjX7http://docs.python.org/3/using/mac.html#osx-gui-scriptsXRunning scripts with a GUItrXfurther-examplesr(jjXMhttp://docs.python.org/3/library/unittest.mock-examples.html#further-examplesXFurther ExamplestrXinst-config-syntaxr(jjX>http://docs.python.org/3/install/index.html#inst-config-syntaxXSyntax of config filestrXprofile-timersr(jjX<http://docs.python.org/3/library/profile.html#profile-timersXUsing a custom timertrXprogramsr(jjXDhttp://docs.python.org/3/reference/toplevel_components.html#programsXComplete Python programstrXoptparse-store-actionr(jjXDhttp://docs.python.org/3/library/optparse.html#optparse-store-actionXThe store actiontrXconcreter(jjX5http://docs.python.org/3/c-api/concrete.html#concreteXConcrete Objects LayertrXattribute-referencesr(jjXHhttp://docs.python.org/3/reference/expressions.html#attribute-referencesXAttribute referencestrXhttpconnection-objectsr(jjXHhttp://docs.python.org/3/library/http.client.html#httpconnection-objectsXHTTPConnection ObjectstrXopener-director-objectsr(jjXLhttp://docs.python.org/3/library/urllib.request.html#opener-director-objectsXOpenerDirector ObjectstrXusing-on-misc-optionsr(jjXAhttp://docs.python.org/3/using/cmdline.html#using-on-misc-optionsXMiscellaneous optionstrXthinicer(jjX9http://docs.python.org/3/extending/extending.html#thiniceXThin IcetrXscreenspecificr(jjX;http://docs.python.org/3/library/turtle.html#screenspecificX;Methods specific to Screen, not inherited from TurtleScreentrX augassignr(jjX>http://docs.python.org/3/reference/simple_stmts.html#augassignXAugmented assignment statementstrXoptparse-generating-helpr(jjXGhttp://docs.python.org/3/library/optparse.html#optparse-generating-helpXGenerating helptrX callingpythonr(jjX?http://docs.python.org/3/extending/extending.html#callingpythonXCalling Python Functions from CtrXconcrete-pathsr(jjX<http://docs.python.org/3/library/pathlib.html#concrete-pathsXConcrete pathstrX typesinternalr(jjX<http://docs.python.org/3/library/stdtypes.html#typesinternalXInternal ObjectstrXoption-flags-and-directivesr(jjXIhttp://docs.python.org/3/library/doctest.html#option-flags-and-directivesX Option FlagstrXctypes-callback-functionsr(jjXFhttp://docs.python.org/3/library/ctypes.html#ctypes-callback-functionsXCallback functionstrXother-methods-and-attrsr(jjXFhttp://docs.python.org/3/library/unittest.html#other-methods-and-attrsX-trXmultiprocessing-address-formatsr(jjXUhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing-address-formatsXAddress FormatstrXurlparse-result-objectr(jjXIhttp://docs.python.org/3/library/urllib.parse.html#urlparse-result-objectXStructured Parse ResultstrXmixer-device-objectsr(jjXFhttp://docs.python.org/3/library/ossaudiodev.html#mixer-device-objectsXMixer Device ObjectstrXbltin-ellipsis-objectr(jjXDhttp://docs.python.org/3/library/stdtypes.html#bltin-ellipsis-objectXThe Ellipsis ObjecttrX msi-tablesr(jjX7http://docs.python.org/3/library/msilib.html#msi-tablesXPrecomputed tablestrXwarning-suppressr(jjX?http://docs.python.org/3/library/warnings.html#warning-suppressX Temporarily Suppressing WarningstrXproxy-digest-auth-handlerr(jjXNhttp://docs.python.org/3/library/urllib.request.html#proxy-digest-auth-handlerXProxyDigestAuthHandler ObjectstrXreadline-exampler(jjX?http://docs.python.org/3/library/readline.html#readline-exampleXExampletrXcookbook-rotator-namerr(jjXKhttp://docs.python.org/3/howto/logging-cookbook.html#cookbook-rotator-namerX>Using a rotator and namer to customize log rotation processingtrX tut-filesr(jjX<http://docs.python.org/3/tutorial/inputoutput.html#tut-filesXReading and Writing FilestrX floatobjectsr(jjX6http://docs.python.org/3/c-api/float.html#floatobjectsXFloating Point ObjectstrXfrequently-used-argumentsr(jjXJhttp://docs.python.org/3/library/subprocess.html#frequently-used-argumentsXFrequently Used ArgumentstrXwhatsnew_email_contentmanagerr(jjXHhttp://docs.python.org/3/whatsnew/3.4.html#whatsnew-email-contentmanagerX-trX&ctypes-bit-fields-in-structures-unionsr(jjXShttp://docs.python.org/3/library/ctypes.html#ctypes-bit-fields-in-structures-unionsX#Bit fields in structures and unionstrXfunc-frozensetr(jjX>http://docs.python.org/3/library/functions.html#func-frozensetX-trXgetting-startedr(jjXLhttp://docs.python.org/3/library/unittest.mock-examples.html#getting-startedX Using MocktrX proxy-handlerr(jjXBhttp://docs.python.org/3/library/urllib.request.html#proxy-handlerXProxyHandler ObjectstrXembeddingincplusplusr(jjXFhttp://docs.python.org/3/extending/embedding.html#embeddingincplusplusXEmbedding Python in C++trXmemoryoverviewr(jjX9http://docs.python.org/3/c-api/memory.html#memoryoverviewXOverviewtrXmanifestr(jjX;http://docs.python.org/3/distutils/sourcedist.html#manifestX"Specifying the files to distributetrXcontinuer(jjX=http://docs.python.org/3/reference/simple_stmts.html#continueXThe continue statementtrX tut-fp-issuesr(jjXBhttp://docs.python.org/3/tutorial/floatingpoint.html#tut-fp-issuesX2Floating Point Arithmetic: Issues and Limitationstr Xxmlparser-objectsr (jjX?http://docs.python.org/3/library/pyexpat.html#xmlparser-objectsXXMLParser Objectstr Xdecimal-decimalr (jjX=http://docs.python.org/3/library/decimal.html#decimal-decimalXDecimal objectstr Xoptparse-reference-guider(jjXGhttp://docs.python.org/3/library/optparse.html#optparse-reference-guideXReference GuidetrXformatter-interfacer(jjXChttp://docs.python.org/3/library/formatter.html#formatter-interfaceXThe Formatter InterfacetrX msi-errorsr(jjX7http://docs.python.org/3/library/msilib.html#msi-errorsXErrorstrX event-objectsr(jjX=http://docs.python.org/3/library/threading.html#event-objectsX Event ObjectstrX numeric-hashr(jjX;http://docs.python.org/3/library/stdtypes.html#numeric-hashXHashing of numeric typestrXtut-list-toolsr(jjX=http://docs.python.org/3/tutorial/stdlib2.html#tut-list-toolsXTools for Working with ListstrXexamplesr(jjX9http://docs.python.org/3/distutils/examples.html#examplesXExamplestrX msvcrt-filesr(jjX9http://docs.python.org/3/library/msvcrt.html#msvcrt-filesXFile OperationstrXpep-328r(jjX2http://docs.python.org/3/whatsnew/2.5.html#pep-328X&PEP 328: Absolute and Relative ImportstrXpep-3116r (jjX3http://docs.python.org/3/whatsnew/2.6.html#pep-3116XPEP 3116: New I/O Librarytr!Xcacheftp-handler-objectsr"(jjXMhttp://docs.python.org/3/library/urllib.request.html#cacheftp-handler-objectsXCacheFTPHandler Objectstr#Xforr$(jjX:http://docs.python.org/3/reference/compound_stmts.html#forXThe for statementtr%X mailbox-babylr&(jjX;http://docs.python.org/3/library/mailbox.html#mailbox-babylXBabyltr'Xlocator-objectsr((jjXDhttp://docs.python.org/3/library/xml.sax.reader.html#locator-objectsXLocator Objectstr)Xexception-changedr*(jjX>http://docs.python.org/3/library/winreg.html#exception-changedX-tr+X func-bytesr,(jjX:http://docs.python.org/3/library/functions.html#func-bytesX-tr-Xpprint-exampler.(jjX;http://docs.python.org/3/library/pprint.html#pprint-exampleXExampletr/Xhttp-digest-auth-handlerr0(jjXMhttp://docs.python.org/3/library/urllib.request.html#http-digest-auth-handlerXHTTPDigestAuthHandler Objectstr1Xundocr2(jjX1http://docs.python.org/3/library/undoc.html#undocXUndocumented Modulestr3Xtut-keybindingsr4(jjXBhttp://docs.python.org/3/tutorial/interactive.html#tut-keybindingsX"Tab Completion and History Editingtr5Xpep-3119r6(jjX3http://docs.python.org/3/whatsnew/2.6.html#pep-3119XPEP 3119: Abstract Base Classestr7Xabstract-grammarr8(jjX:http://docs.python.org/3/library/ast.html#abstract-grammarXAbstract Grammartr9Xsection-slicesr:(jjX9http://docs.python.org/3/whatsnew/2.3.html#section-slicesXExtended Slicestr;Xcodec-base-classesr<(jjX?http://docs.python.org/3/library/codecs.html#codec-base-classesXCodec Base Classestr=X subscriptionsr>(jjXAhttp://docs.python.org/3/reference/expressions.html#subscriptionsX Subscriptionstr?Xhttp-handler-objectsr@(jjXIhttp://docs.python.org/3/library/urllib.request.html#http-handler-objectsXHTTPHandler ObjectstrAXelementtree-elementtree-objectsrB(jjX[http://docs.python.org/3/library/xml.etree.elementtree.html#elementtree-elementtree-objectsXElementTree ObjectstrCXsequence-matcherrD(jjX>http://docs.python.org/3/library/difflib.html#sequence-matcherXSequenceMatcher ObjectstrEXminidom-objectsrF(jjXEhttp://docs.python.org/3/library/xml.dom.minidom.html#minidom-objectsX DOM ObjectstrGXshiftingrH(jjX<http://docs.python.org/3/reference/expressions.html#shiftingXShifting operationstrIX os-newstreamsrJ(jjX6http://docs.python.org/3/library/os.html#os-newstreamsXFile Object CreationtrKXtut-standardmodulesrL(jjXBhttp://docs.python.org/3/tutorial/modules.html#tut-standardmodulesXStandard ModulestrMXfpectl-limitationsrN(jjX?http://docs.python.org/3/library/fpectl.html#fpectl-limitationsX$Limitations and other considerationstrOXparsetupleandkeywordsrP(jjXGhttp://docs.python.org/3/extending/extending.html#parsetupleandkeywordsX*Keyword Parameters for Extension FunctionstrQXintegersrR(jjXAhttp://docs.python.org/3/reference/lexical_analysis.html#integersXInteger literalstrSXfunctions-in-cgi-modulerT(jjXAhttp://docs.python.org/3/library/cgi.html#functions-in-cgi-moduleX FunctionstrUX using-on-unixrV(jjX6http://docs.python.org/3/using/unix.html#using-on-unixXUsing Python on Unix platformstrWX importsystemrX(jjX;http://docs.python.org/3/reference/import.html#importsystemXThe import systemtrYX conversionsrZ(jjX?http://docs.python.org/3/reference/expressions.html#conversionsXArithmetic conversionstr[Xoptparse-callback-example-4r\(jjXJhttp://docs.python.org/3/library/optparse.html#optparse-callback-example-4X-Callback example 4: check arbitrary conditiontr]Xinstalling-indexr^(jjX?http://docs.python.org/3/installing/index.html#installing-indexXInstalling Python Modulestr_Xoptparse-other-methodsr`(jjXEhttp://docs.python.org/3/library/optparse.html#optparse-other-methodsX Other methodstraXstream-handlerrb(jjXEhttp://docs.python.org/3/library/logging.handlers.html#stream-handlerX StreamHandlertrcXpackage-displayrd(jjXDhttp://docs.python.org/3/distutils/packageindex.html#package-displayXPyPI package displaytreXiderf(jjX+http://docs.python.org/3/using/mac.html#ideXThe IDEtrgXsemaphore-examplesrh(jjXBhttp://docs.python.org/3/library/threading.html#semaphore-examplesXSemaphore ExampletriX module-sqliterj(jjX8http://docs.python.org/3/whatsnew/2.5.html#module-sqliteXThe sqlite3 packagetrkXsqlite3-connection-objectsrl(jjXHhttp://docs.python.org/3/library/sqlite3.html#sqlite3-connection-objectsXConnection ObjectstrmXlibrary-configrn(jjX:http://docs.python.org/3/howto/logging.html#library-configX!Configuring Logging for a LibrarytroXcurses-panel-objectsrp(jjXGhttp://docs.python.org/3/library/curses.panel.html#curses-panel-objectsX Panel ObjectstrqX pickle-staterr(jjX9http://docs.python.org/3/library/pickle.html#pickle-stateXHandling Stateful ObjectstrsXproxy-basic-auth-handlerrt(jjXMhttp://docs.python.org/3/library/urllib.request.html#proxy-basic-auth-handlerXProxyBasicAuthHandler ObjectstruXctypes-passing-pointersrv(jjXDhttp://docs.python.org/3/library/ctypes.html#ctypes-passing-pointersX6Passing pointers (or: passing parameters by reference)trwXexplicit-joiningrx(jjXIhttp://docs.python.org/3/reference/lexical_analysis.html#explicit-joiningXExplicit line joiningtryXmodule-hashlibrz(jjX9http://docs.python.org/3/whatsnew/2.5.html#module-hashlibXThe hashlib packagetr{Xlogging-config-dict-incrementalr|(jjXThttp://docs.python.org/3/library/logging.config.html#logging-config-dict-incrementalXIncremental Configurationtr}Xreporting-bugsr~(jjX1http://docs.python.org/3/bugs.html#reporting-bugsXReporting BugstrXwhatsnew-pep-456r(jjX;http://docs.python.org/3/whatsnew/3.4.html#whatsnew-pep-456X2PEP 456: Secure and Interchangeable Hash AlgorithmtrXwhatsnew-pep-451r(jjX;http://docs.python.org/3/whatsnew/3.4.html#whatsnew-pep-451X0PEP 451: A ModuleSpec Type for the Import SystemtrXwhatsnew-pep-453r(jjX;http://docs.python.org/3/whatsnew/3.4.html#whatsnew-pep-453X>PEP 453: Explicit Bootstrapping of PIP in Python InstallationstrXclassr(jjX<http://docs.python.org/3/reference/compound_stmts.html#classXClass definitionstrXnt-eventlog-handlerr(jjXJhttp://docs.python.org/3/library/logging.handlers.html#nt-eventlog-handlerXNTEventLogHandlertrXwatched-file-handlerr(jjXKhttp://docs.python.org/3/library/logging.handlers.html#watched-file-handlerXWatchedFileHandlertrXexpaterror-objectsr(jjX@http://docs.python.org/3/library/pyexpat.html#expaterror-objectsXExpatError ExceptionstrXdebugger-commandsr(jjX;http://docs.python.org/3/library/pdb.html#debugger-commandsXDebugger CommandstrX tut-cleanupr(jjX9http://docs.python.org/3/tutorial/errors.html#tut-cleanupXDefining Clean-up ActionstrXdoctest-debuggingr(jjX?http://docs.python.org/3/library/doctest.html#doctest-debuggingX DebuggingtrX library-intror(jjX9http://docs.python.org/3/library/intro.html#library-introX IntroductiontrXcallable-typesr(jjX@http://docs.python.org/3/reference/datamodel.html#callable-typesXEmulating callable objectstrX tut-customizer(jjX@http://docs.python.org/3/tutorial/interpreter.html#tut-customizeXThe Customization ModulestrXweakref-objectsr(jjX=http://docs.python.org/3/library/weakref.html#weakref-objectsXWeak Reference ObjectstrXunittest-test-discoveryr(jjXFhttp://docs.python.org/3/library/unittest.html#unittest-test-discoveryXTest DiscoverytrXoptparse-defining-optionsr(jjXHhttp://docs.python.org/3/library/optparse.html#optparse-defining-optionsXDefining optionstrX%optparse-understanding-option-actionsr(jjXThttp://docs.python.org/3/library/optparse.html#optparse-understanding-option-actionsXUnderstanding option actionstrXwhatsnew-isolated-moder(jjXAhttp://docs.python.org/3/whatsnew/3.4.html#whatsnew-isolated-modeX-trX tut-breakr(jjX<http://docs.python.org/3/tutorial/controlflow.html#tut-breakX8break and continue Statements, and else Clauses on LoopstrXelementtree-treebuilder-objectsr(jjX[http://docs.python.org/3/library/xml.etree.elementtree.html#elementtree-treebuilder-objectsXTreeBuilder ObjectstrX imap4-exampler(jjX;http://docs.python.org/3/library/imaplib.html#imap4-exampleX IMAP4 ExampletrX poll-objectsr(jjX9http://docs.python.org/3/library/select.html#poll-objectsXPolling ObjectstrXtut-file-wildcardsr(jjX@http://docs.python.org/3/tutorial/stdlib.html#tut-file-wildcardsXFile WildcardstrXtelnet-exampler(jjX>http://docs.python.org/3/library/telnetlib.html#telnet-exampleXTelnet ExampletrX creating-rpmsr(jjX?http://docs.python.org/3/distutils/builtdist.html#creating-rpmsXCreating RPM packagestrXelementtree-sectionr(jjX>http://docs.python.org/3/whatsnew/2.7.html#elementtree-sectionXUpdated module: ElementTree 1.3trXtarfile-commandliner(jjXAhttp://docs.python.org/3/library/tarfile.html#tarfile-commandlineXCommand Line InterfacetrX formatstringsr(jjX:http://docs.python.org/3/library/string.html#formatstringsXFormat String SyntaxtrX archivingr(jjX9http://docs.python.org/3/library/archiving.html#archivingXData Compression and ArchivingtrXmultiple-processesr(jjXGhttp://docs.python.org/3/howto/logging-cookbook.html#multiple-processesX0Logging to a single file from multiple processestrXtools-and-scriptsr(jjX=http://docs.python.org/3/using/scripts.html#tools-and-scriptsXAdditional Tools and ScriptstrXargparse-tutorialr(jjX0http://docs.python.org/3/howto/argparse.html#id1X-trXb64r(jjX0http://docs.python.org/3/library/codecs.html#b64X-trXabstractr(jjX5http://docs.python.org/3/c-api/abstract.html#abstractXAbstract Objects LayertrX tut-listsr(jjX=http://docs.python.org/3/tutorial/introduction.html#tut-listsXListstrX typesmappingr(jjX;http://docs.python.org/3/library/stdtypes.html#typesmappingXMapping Types --- dicttrX!optparse-handling-boolean-optionsr(jjXPhttp://docs.python.org/3/library/optparse.html#optparse-handling-boolean-optionsXHandling boolean (flag) optionstrXfloatingr(jjXAhttp://docs.python.org/3/reference/lexical_analysis.html#floatingXFloating point literalstrXbltin-boolean-valuesr(jjXChttp://docs.python.org/3/library/stdtypes.html#bltin-boolean-valuesXBoolean ValuestrXconfigparser-objectsr(jjXGhttp://docs.python.org/3/library/configparser.html#configparser-objectsXConfigParser ObjectstrXcookie-objectsr(jjXAhttp://docs.python.org/3/library/http.cookies.html#cookie-objectsXCookie ObjectstrXtut-pkg-import-starr(jjXBhttp://docs.python.org/3/tutorial/modules.html#tut-pkg-import-starXImporting * From a PackagetrXtime-y2kissuesr(jjX9http://docs.python.org/3/library/time.html#time-y2kissuesX-trXmembership-test-detailsr(jjXKhttp://docs.python.org/3/reference/expressions.html#membership-test-detailsX-trXstring-conversionr(jjX@http://docs.python.org/3/c-api/conversion.html#string-conversionX String conversion and formattingtrXoptparse-standard-option-typesr(jjXMhttp://docs.python.org/3/library/optparse.html#optparse-standard-option-typesXStandard option typestrXtut-firstclassesr(jjX?http://docs.python.org/3/tutorial/classes.html#tut-firstclassesXA First Look at ClassestrXdircmp-objectsr(jjX<http://docs.python.org/3/library/filecmp.html#dircmp-objectsXThe dircmp classtrXpackage-path-rulesr(jjXAhttp://docs.python.org/3/reference/import.html#package-path-rulesXmodule.__path__trXdiffer-examplesr(jjX=http://docs.python.org/3/library/difflib.html#differ-examplesXDiffer ExampletrX operatorsr(jjXBhttp://docs.python.org/3/reference/lexical_analysis.html#operatorsX OperatorstrXtypesseq-mutabler(jjX?http://docs.python.org/3/library/stdtypes.html#typesseq-mutableXMutable Sequence TypestrXrefcountsinpythonr(jjXChttp://docs.python.org/3/extending/extending.html#refcountsinpythonXReference Counting in PythontrXatexit-exampler(jjX;http://docs.python.org/3/library/atexit.html#atexit-exampleXatexit ExampletrXinst-building-extr(jjX=http://docs.python.org/3/install/index.html#inst-building-extX$Building Extensions: Tips and TrickstrX codec-objectsr(jjX:http://docs.python.org/3/library/codecs.html#codec-objectsX Codec ObjectstrXopcode_collectionsr(jjX<http://docs.python.org/3/library/dis.html#opcode-collectionsXOpcode collectionstrXdoctest-unittest-apir(jjXBhttp://docs.python.org/3/library/doctest.html#doctest-unittest-apiX Unittest APItrXdoctest-how-it-worksr(jjXBhttp://docs.python.org/3/library/doctest.html#doctest-how-it-worksX How It WorkstrX yieldexprr(jjX=http://docs.python.org/3/reference/expressions.html#yieldexprXYield expressionstrXlegacy-unit-testsr(jjX@http://docs.python.org/3/library/unittest.html#legacy-unit-testsXRe-using old test codetrXinspect-sourcer(jjX<http://docs.python.org/3/library/inspect.html#inspect-sourceXRetrieving source codetrX datetime-timer(jjX<http://docs.python.org/3/library/datetime.html#datetime-timeX time ObjectstrXcompleter-objectsr(jjXChttp://docs.python.org/3/library/rlcompleter.html#completer-objectsXCompleter ObjectstrXcurses-window-objectsr(jjXBhttp://docs.python.org/3/library/curses.html#curses-window-objectsXWindow ObjectstrX2to3-referencer(jjX8http://docs.python.org/3/library/2to3.html#to3-referenceX/2to3 - Automated Python 2 to 3 code translationtrXmodulesr(jjX5http://docs.python.org/3/library/modules.html#modulesXImporting ModulestrX mailbox-mboxr(jjX:http://docs.python.org/3/library/mailbox.html#mailbox-mboxXmboxtrXarbitrary-object-messagesr(jjXEhttp://docs.python.org/3/howto/logging.html#arbitrary-object-messagesX#Using arbitrary objects as messagestr Xoptparse-extending-optparser (jjXJhttp://docs.python.org/3/library/optparse.html#optparse-extending-optparseXExtending optparsetr Xwhatsnew-pathlibr (jjX;http://docs.python.org/3/whatsnew/3.4.html#whatsnew-pathlibXpathlibtr Xdefused-packagesr(jjX:http://docs.python.org/3/library/xml.html#defused-packagesX(The defusedxml and defusedexpat PackagestrX reentrant-cmsr(jjX>http://docs.python.org/3/library/contextlib.html#reentrant-cmsXReentrant context managerstrXdescribing-extensionsr(jjXIhttp://docs.python.org/3/distutils/setupscript.html#describing-extensionsXDescribing extension modulestrXunittest-minimal-exampler(jjXGhttp://docs.python.org/3/library/unittest.html#unittest-minimal-exampleX Basic exampletrXjson-to-py-tabler(jjX;http://docs.python.org/3/library/json.html#json-to-py-tableX-trXiteratorr(jjX1http://docs.python.org/3/c-api/iter.html#iteratorXIterator ProtocoltrXexpression-inputr(jjXLhttp://docs.python.org/3/reference/toplevel_components.html#expression-inputXExpression inputtrXglobalr(jjX;http://docs.python.org/3/reference/simple_stmts.html#globalXThe global statementtrX$optparse-how-optparse-handles-errorsr(jjXShttp://docs.python.org/3/library/optparse.html#optparse-how-optparse-handles-errorsXHow optparse handles errorstrXhttp-error-processor-objectsr (jjXQhttp://docs.python.org/3/library/urllib.request.html#http-error-processor-objectsXHTTPErrorProcessor Objectstr!X bufferobjectsr"(jjX8http://docs.python.org/3/c-api/buffer.html#bufferobjectsXBuffer Protocoltr#Xtypememoryviewr$(jjX=http://docs.python.org/3/library/stdtypes.html#typememoryviewX Memory Viewstr%Xcommentsr&(jjXAhttp://docs.python.org/3/reference/lexical_analysis.html#commentsXCommentstr'X"ctypes-calling-functions-continuedr((jjXOhttp://docs.python.org/3/library/ctypes.html#ctypes-calling-functions-continuedXCalling functions, continuedtr)Xasyncio-loggerr*(jjX@http://docs.python.org/3/library/asyncio-dev.html#asyncio-loggerXLoggingtr+Xssl-certificatesr,(jjX:http://docs.python.org/3/library/ssl.html#ssl-certificatesX Certificatestr-X smtp-exampler.(jjX:http://docs.python.org/3/library/smtplib.html#smtp-exampleX SMTP Exampletr/Xtut-inheritancer0(jjX>http://docs.python.org/3/tutorial/classes.html#tut-inheritanceX Inheritancetr1Xsection-pep307r2(jjX9http://docs.python.org/3/whatsnew/2.3.html#section-pep307XPEP 307: Pickle Enhancementstr3X install-indexr4(jjX9http://docs.python.org/3/install/index.html#install-indexX*Installing Python Modules (Legacy version)tr5Xdistutils-termr6(jjXChttp://docs.python.org/3/distutils/introduction.html#distutils-termXDistutils-specific terminologytr7X meta-datar8(jjX=http://docs.python.org/3/distutils/setupscript.html#meta-dataXAdditional meta-datatr9Xfinallyr:(jjX>http://docs.python.org/3/reference/compound_stmts.html#finallyXThe try statementtr;Xtut-decimal-fpr<(jjX=http://docs.python.org/3/tutorial/stdlib2.html#tut-decimal-fpX!Decimal Floating Point Arithmetictr=Xstabler>(jjX1http://docs.python.org/3/c-api/stable.html#stableX#Stable Application Binary Interfacetr?X api-debuggingr@(jjX7http://docs.python.org/3/c-api/intro.html#api-debuggingXDebugging BuildstrAXtut-mathematicsrB(jjX=http://docs.python.org/3/tutorial/stdlib.html#tut-mathematicsX MathematicstrCXsupporting-cycle-detectionrD(jjXHhttp://docs.python.org/3/c-api/gcsupport.html#supporting-cycle-detectionX$Supporting Cyclic Garbage CollectiontrEX typesmodulesrF(jjX;http://docs.python.org/3/library/stdtypes.html#typesmodulesXModulestrGXbooleansrH(jjX<http://docs.python.org/3/reference/expressions.html#booleansXBoolean operationstrIXsemaphore-objectsrJ(jjXAhttp://docs.python.org/3/library/threading.html#semaphore-objectsXSemaphore ObjectstrKXdevpoll-objectsrL(jjX<http://docs.python.org/3/library/select.html#devpoll-objectsX/dev/poll Polling ObjectstrMXdescriptor-invocationrN(jjXGhttp://docs.python.org/3/reference/datamodel.html#descriptor-invocationXInvoking DescriptorstrOX windows-faqrP(jjX5http://docs.python.org/3/faq/windows.html#windows-faqXPython on Windows FAQtrQX metaclassesrR(jjX=http://docs.python.org/3/reference/datamodel.html#metaclassesXCustomizing class creationtrSX inst-introrT(jjX6http://docs.python.org/3/install/index.html#inst-introX IntroductiontrUXdata-handler-objectsrV(jjXIhttp://docs.python.org/3/library/urllib.request.html#data-handler-objectsXDataHandler ObjectstrWX tut-modulesrX(jjX:http://docs.python.org/3/tutorial/modules.html#tut-modulesXModulestrYXcomplexobjectsrZ(jjX:http://docs.python.org/3/c-api/complex.html#complexobjectsXComplex Number Objectstr[X api-objectsr\(jjX5http://docs.python.org/3/c-api/intro.html#api-objectsX#Objects, Types and Reference Countstr]X pop3-objectsr^(jjX9http://docs.python.org/3/library/poplib.html#pop3-objectsX POP3 Objectstr_Xextending-simpleexampler`(jjXIhttp://docs.python.org/3/extending/extending.html#extending-simpleexampleXA Simple ExampletraXtryrb(jjX:http://docs.python.org/3/reference/compound_stmts.html#tryXThe try statementtrcXtut-defaultargsrd(jjXBhttp://docs.python.org/3/tutorial/controlflow.html#tut-defaultargsXDefault Argument ValuestreX otherobjectsrf(jjX9http://docs.python.org/3/c-api/concrete.html#otherobjectsXFunction ObjectstrgX os-filenamesrh(jjX5http://docs.python.org/3/library/os.html#os-filenamesX=File Names, Command Line Arguments, and Environment VariablestriXfilter-chain-specsrj(jjX=http://docs.python.org/3/library/lzma.html#filter-chain-specsXSpecifying custom filter chainstrkXphysical-linesrl(jjXGhttp://docs.python.org/3/reference/lexical_analysis.html#physical-linesXPhysical linestrmXhistory-and-licensern(jjX9http://docs.python.org/3/license.html#history-and-licenseXHistory and LicensetroX tut-brieftourrp(jjX;http://docs.python.org/3/tutorial/stdlib.html#tut-brieftourX"Brief Tour of the Standard LibrarytrqX whatsnew-enumrr(jjX8http://docs.python.org/3/whatsnew/3.4.html#whatsnew-enumXenumtrsX tar-examplesrt(jjX:http://docs.python.org/3/library/tarfile.html#tar-examplesXExamplestruXembedding-localerv(jjX=http://docs.python.org/3/library/locale.html#embedding-localeX4For extension writers and programs that embed PythontrwXfd_inheritancerx(jjX7http://docs.python.org/3/library/os.html#fd-inheritanceXInheritance of File DescriptorstryX module-ctypesrz(jjX8http://docs.python.org/3/whatsnew/2.5.html#module-ctypesXThe ctypes packagetr{Xdoctest-directivesr|(jjX@http://docs.python.org/3/library/doctest.html#doctest-directivesX Directivestr}Xrandom-examplesr~(jjX<http://docs.python.org/3/library/random.html#random-examplesXExamples and RecipestrXitertools-recipesr(jjXAhttp://docs.python.org/3/library/itertools.html#itertools-recipesXItertools RecipestrX!collections-abstract-base-classesr(jjXWhttp://docs.python.org/3/library/collections.abc.html#collections-abstract-base-classesX!Collections Abstract Base ClassestrXdatetime-tzinfor(jjX>http://docs.python.org/3/library/datetime.html#datetime-tzinfoXtzinfo ObjectstrXmultiprocessing-programmingr(jjXQhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing-programmingXProgramming guidelinestrXsax-exception-objectsr(jjXChttp://docs.python.org/3/library/xml.sax.html#sax-exception-objectsXSAXException ObjectstrX imap4-objectsr(jjX;http://docs.python.org/3/library/imaplib.html#imap4-objectsX IMAP4 ObjectstrXlogging-config-apir(jjXGhttp://docs.python.org/3/library/logging.config.html#logging-config-apiXConfiguration functionstrXpep-353r(jjX2http://docs.python.org/3/whatsnew/2.5.html#pep-353X(PEP 353: Using ssize_t as the index typetrX asyncio-devr(jjX=http://docs.python.org/3/library/asyncio-dev.html#asyncio-devXDevelop with asynciotrXobjectsr(jjX9http://docs.python.org/3/reference/datamodel.html#objectsXObjects, values and typestrXpep-357r(jjX2http://docs.python.org/3/whatsnew/2.5.html#pep-357XPEP 357: The '__index__' methodtrXdistributing-indexr(jjXChttp://docs.python.org/3/distributing/index.html#distributing-indexXDistributing Python ModulestrXurllib-examplesr(jjXDhttp://docs.python.org/3/library/urllib.request.html#urllib-examplesX-trXpackage-registerr(jjXEhttp://docs.python.org/3/distutils/packageindex.html#package-registerXRegistering PackagestrXdoctest-exceptionsr(jjX@http://docs.python.org/3/library/doctest.html#doctest-exceptionsXWhat About Exceptions?trX creating-stsr(jjX9http://docs.python.org/3/library/parser.html#creating-stsXCreating ST ObjectstrX tut-loggingr(jjX:http://docs.python.org/3/tutorial/stdlib2.html#tut-loggingXLoggingtrXhkey-constantsr(jjX;http://docs.python.org/3/library/winreg.html#hkey-constantsXHKEY_* ConstantstrXdatetime-objectsr(jjXDhttp://docs.python.org/3/library/xmlrpc.client.html#datetime-objectsXDateTime ObjectstrX with-locksr(jjX:http://docs.python.org/3/library/threading.html#with-locksX=Using locks, conditions, and semaphores in the with statementtrXpickle-restrictr(jjX<http://docs.python.org/3/library/pickle.html#pickle-restrictXRestricting GlobalstrXdecimal-signalsr(jjX=http://docs.python.org/3/library/decimal.html#decimal-signalsXSignalstrXtut-lists-as-stacksr(jjXIhttp://docs.python.org/3/tutorial/datastructures.html#tut-lists-as-stacksXUsing Lists as StackstrXipcr(jjX-http://docs.python.org/3/library/ipc.html#ipcX)Interprocess Communication and NetworkingtrX tut-privater(jjX:http://docs.python.org/3/tutorial/classes.html#tut-privateXPrivate VariablestrXos-pathr(jjX0http://docs.python.org/3/library/os.html#os-pathX Miscellaneous System InformationtrXoptparse-default-valuesr(jjXFhttp://docs.python.org/3/library/optparse.html#optparse-default-valuesXDefault valuestrXtut-cleanup-withr(jjX>http://docs.python.org/3/tutorial/errors.html#tut-cleanup-withXPredefined Clean-up ActionstrXbooleanr(jjX6http://docs.python.org/3/library/stdtypes.html#booleanX#Boolean Operations --- and, or, nottrXsequence-typesr(jjX@http://docs.python.org/3/reference/datamodel.html#sequence-typesXEmulating container typestrXnetdatar(jjX5http://docs.python.org/3/library/netdata.html#netdataXInternet Data HandlingtrXmailbox-babylmessager(jjXBhttp://docs.python.org/3/library/mailbox.html#mailbox-babylmessageX BabylMessagetrXfpectl-exampler(jjX;http://docs.python.org/3/library/fpectl.html#fpectl-exampleXExampletrXattr-target-noter(jjXEhttp://docs.python.org/3/reference/simple_stmts.html#attr-target-noteX-trX exprstmtsr(jjX>http://docs.python.org/3/reference/simple_stmts.html#exprstmtsXExpression statementstrX expat-errorsr(jjX:http://docs.python.org/3/library/pyexpat.html#expat-errorsXExpat error constantstrXis notr(jjX:http://docs.python.org/3/reference/expressions.html#is-notX ComparisonstrX api-referencer(jjX<http://docs.python.org/3/distutils/apiref.html#api-referenceX API ReferencetrXfromr(jjX9http://docs.python.org/3/reference/simple_stmts.html#fromXThe import statementtrXdebug-setup-scriptr(jjXFhttp://docs.python.org/3/distutils/setupscript.html#debug-setup-scriptXDebugging the setup scripttrXhandlerr(jjX5http://docs.python.org/3/library/logging.html#handlerXHandler ObjectstrXbltin-notimplemented-objectr(jjXJhttp://docs.python.org/3/library/stdtypes.html#bltin-notimplemented-objectXThe NotImplemented ObjecttrXmemoryr(jjX1http://docs.python.org/3/c-api/memory.html#memoryXMemory ManagementtrXmultiprocessing-start-methodsr(jjXShttp://docs.python.org/3/library/multiprocessing.html#multiprocessing-start-methodsX-trXtextseqr(jjX6http://docs.python.org/3/library/stdtypes.html#textseqXText Sequence Type --- strtrXfunc-memoryviewr(jjX?http://docs.python.org/3/library/functions.html#func-memoryviewX-trXtutorial-indexr(jjX;http://docs.python.org/3/tutorial/index.html#tutorial-indexXThe Python TutorialtrXextending-with-embeddingr(jjXJhttp://docs.python.org/3/extending/embedding.html#extending-with-embeddingXExtending Embedded PythontrXcross-compile-windowsr(jjXGhttp://docs.python.org/3/distutils/builtdist.html#cross-compile-windowsXCross-compiling on WindowstrXctypes-ctypes-referencer(jjXDhttp://docs.python.org/3/library/ctypes.html#ctypes-ctypes-referenceXctypes referencetrXtut-arbitraryargsr(jjXDhttp://docs.python.org/3/tutorial/controlflow.html#tut-arbitraryargsXArbitrary Argument ListstrX mapobjectsr(jjX7http://docs.python.org/3/c-api/concrete.html#mapobjectsXContainer ObjectstrXdistutils-installing-scriptsr(jjXPhttp://docs.python.org/3/distutils/setupscript.html#distutils-installing-scriptsXInstalling ScriptstrXdatagram-handlerr(jjXGhttp://docs.python.org/3/library/logging.handlers.html#datagram-handlerXDatagramHandlertrXtut-filemethodsr(jjXBhttp://docs.python.org/3/tutorial/inputoutput.html#tut-filemethodsXMethods of File ObjectstrXcookie-exampler(jjXAhttp://docs.python.org/3/library/http.cookies.html#cookie-exampleXExampletrXwhatsnew-pep-436r(jjX;http://docs.python.org/3/whatsnew/3.4.html#whatsnew-pep-436XPEP 436: Argument ClinictrXcompoundshapesr(jjX;http://docs.python.org/3/library/turtle.html#compoundshapesXCompound shapestrX23acksr(jjX/http://docs.python.org/3/whatsnew/2.3.html#acksXAcknowledgementstrXdefault-cookie-policy-objectsr(jjXRhttp://docs.python.org/3/library/http.cookiejar.html#default-cookie-policy-objectsXDefaultCookiePolicy ObjectstrX types-setr(jjX8http://docs.python.org/3/library/stdtypes.html#types-setXSet Types --- set, frozensettrXc-wrapper-softwarer(jjX>http://docs.python.org/3/faq/extending.html#c-wrapper-softwareX.Writing C is hard; are there any alternatives?trXinst-alt-installr(jjX<http://docs.python.org/3/install/index.html#inst-alt-installXAlternate InstallationtrXdoctest-exampler(jjX=http://docs.python.org/3/library/doctest.html#doctest-exampleXExample ObjectstrXcabr (jjX0http://docs.python.org/3/library/msilib.html#cabX CAB Objectstr X tut-tuplesr (jjX@http://docs.python.org/3/tutorial/datastructures.html#tut-tuplesXTuples and Sequencestr X func-dictr (jjX9http://docs.python.org/3/library/functions.html#func-dictX-tr Xpep-3101r (jjX3http://docs.python.org/3/whatsnew/2.6.html#pep-3101X$PEP 3101: Advanced String Formattingtr Xdom-node-objectsr (jjX>http://docs.python.org/3/library/xml.dom.html#dom-node-objectsX Node Objectstr Xpep-3105r (jjX3http://docs.python.org/3/whatsnew/2.6.html#pep-3105XPEP 3105: print As a Functiontr Xnot inr (jjX:http://docs.python.org/3/reference/expressions.html#not-inX Comparisonstr X type-structsr (jjX8http://docs.python.org/3/c-api/typeobj.html#type-structsX Type Objectstr Xuseful-handlersr (jjX;http://docs.python.org/3/howto/logging.html#useful-handlersXUseful Handlerstr Xsqlite3-module-contentsr (jjXEhttp://docs.python.org/3/library/sqlite3.html#sqlite3-module-contentsXModule functions and constantstr Xunicodeexceptionsr (jjX@http://docs.python.org/3/c-api/exceptions.html#unicodeexceptionsXUnicode Exception Objectstr Xsocket-objectsr (jjX;http://docs.python.org/3/library/socket.html#socket-objectsXSocket Objectstr Xpure-pkgr (jjX9http://docs.python.org/3/distutils/examples.html#pure-pkgX%Pure Python distribution (by package)tr X typesnumericr (jjX;http://docs.python.org/3/library/stdtypes.html#typesnumericX%Numeric Types --- int, float, complextr Xstring-catenationr (jjXJhttp://docs.python.org/3/reference/lexical_analysis.html#string-catenationXString literal concatenationtr Xtut-methodobjectsr (jjX@http://docs.python.org/3/tutorial/classes.html#tut-methodobjectsXMethod Objectstr X re-syntaxr (jjX2http://docs.python.org/3/library/re.html#re-syntaxXRegular Expression Syntaxtr! Xwhy-selfr" (jjX1http://docs.python.org/3/faq/design.html#why-selfXCWhy must 'self' be used explicitly in method definitions and calls?tr# Xctypes-fundamental-data-types-2r$ (jjXLhttp://docs.python.org/3/library/ctypes.html#ctypes-fundamental-data-types-2XFundamental data typestr% Xmodule-wsgirefr& (jjX9http://docs.python.org/3/whatsnew/2.5.html#module-wsgirefXThe wsgiref packagetr' X getting-osxr( (jjX3http://docs.python.org/3/using/mac.html#getting-osxX Getting and Installing MacPythontr) Xdeterministic-profilingr* (jjXEhttp://docs.python.org/3/library/profile.html#deterministic-profilingX What Is Deterministic Profiling?tr+ Xprofiler, (jjX5http://docs.python.org/3/library/profile.html#profileXThe Python Profilerstr- Xpyporting-howtor. (jjX=http://docs.python.org/3/howto/pyporting.html#pyporting-howtoX!Porting Python 2 Code to Python 3tr/ Xgeneric-attribute-managementr0 (jjXMhttp://docs.python.org/3/extending/newtypes.html#generic-attribute-managementXGeneric Attribute Managementtr1 Xbltin-type-objectsr2 (jjXAhttp://docs.python.org/3/library/stdtypes.html#bltin-type-objectsX Type Objectstr3 X tupleobjectsr4 (jjX6http://docs.python.org/3/c-api/tuple.html#tupleobjectsX Tuple Objectstr5 Xtut-classobjectsr6 (jjX?http://docs.python.org/3/tutorial/classes.html#tut-classobjectsX Class Objectstr7 Xtut-userexceptionsr8 (jjX@http://docs.python.org/3/tutorial/errors.html#tut-userexceptionsXUser-defined Exceptionstr9 X longobjectsr: (jjX4http://docs.python.org/3/c-api/long.html#longobjectsXInteger Objectstr; X pop3-exampler< (jjX9http://docs.python.org/3/library/poplib.html#pop3-exampleX POP3 Exampletr= Xunicodeobjectsr> (jjX:http://docs.python.org/3/c-api/unicode.html#unicodeobjectsXUnicode Objects and Codecstr? Xcommand-line-interfacer@ (jjXChttp://docs.python.org/3/library/timeit.html#command-line-interfaceXCommand-Line InterfacetrA Xcurses-textpad-objectsrB (jjXChttp://docs.python.org/3/library/curses.html#curses-textpad-objectsXTextbox objectstrC X tut-raisingrD (jjX9http://docs.python.org/3/tutorial/errors.html#tut-raisingXRaising ExceptionstrE XallosrF (jjX1http://docs.python.org/3/library/allos.html#allosX!Generic Operating System ServicestrG Xdom-accessor-methodsrH (jjXBhttp://docs.python.org/3/library/xml.dom.html#dom-accessor-methodsXAccessor MethodstrI Xinst-config-filenamesrJ (jjXAhttp://docs.python.org/3/install/index.html#inst-config-filenamesX"Location and names of config filestrK XoptsrL (jjX/http://docs.python.org/3/whatsnew/2.5.html#optsX OptimizationstrM XelifrN (jjX;http://docs.python.org/3/reference/compound_stmts.html#elifXThe if statementtrO Xdnt-type-methodsrP (jjXAhttp://docs.python.org/3/extending/newtypes.html#dnt-type-methodsX Type MethodstrQ X tut-informalrR (jjX@http://docs.python.org/3/tutorial/introduction.html#tut-informalX"An Informal Introduction to PythontrS Xprocesspoolexecutor-examplerT (jjXThttp://docs.python.org/3/library/concurrent.futures.html#processpoolexecutor-exampleXProcessPoolExecutor ExampletrU X setobjectsrV (jjX2http://docs.python.org/3/c-api/set.html#setobjectsX Set ObjectstrW Xdoctest-doctestparserrX (jjXChttp://docs.python.org/3/library/doctest.html#doctest-doctestparserXDocTestParser objectstrY X 2to3-fixersrZ (jjX5http://docs.python.org/3/library/2to3.html#to3-fixersXFixerstr[ X sect-rellinksr\ (jjX8http://docs.python.org/3/whatsnew/2.2.html#sect-rellinksX Related Linkstr] Xlogging-config-fileformatr^ (jjXNhttp://docs.python.org/3/library/logging.config.html#logging-config-fileformatXConfiguration file formattr_ X ctypes-variable-sized-data-typesr` (jjXMhttp://docs.python.org/3/library/ctypes.html#ctypes-variable-sized-data-typesXVariable-sized data typestra Xunknown-handler-objectsrb (jjXLhttp://docs.python.org/3/library/urllib.request.html#unknown-handler-objectsXUnknownHandler Objectstrc Xdom-conformancerd (jjX=http://docs.python.org/3/library/xml.dom.html#dom-conformanceX Conformancetre X tut-errorsrf (jjX8http://docs.python.org/3/tutorial/errors.html#tut-errorsXErrors and Exceptionstrg Xoptparse-adding-new-actionsrh (jjXJhttp://docs.python.org/3/library/optparse.html#optparse-adding-new-actionsXAdding new actionstri X slice-objectsrj (jjX7http://docs.python.org/3/c-api/slice.html#slice-objectsX Slice Objectstrk X 2to3-usingrl (jjX4http://docs.python.org/3/library/2to3.html#to3-usingX Using 2to3trm Xsignal-examplern (jjX;http://docs.python.org/3/library/signal.html#signal-exampleXExampletro Xpythonrp (jjX3http://docs.python.org/3/library/python.html#pythonXPython Runtime Servicestrq Xprofiler-introductionrr (jjXChttp://docs.python.org/3/library/profile.html#profiler-introductionXIntroduction to the profilerstrs Xwhatsnew34-snirt (jjX9http://docs.python.org/3/whatsnew/3.4.html#whatsnew34-sniX-tru Xwhatsnew-protocol-4rv (jjX>http://docs.python.org/3/whatsnew/3.4.html#whatsnew-protocol-4Xpickletrw Xwarning-testingrx (jjX>http://docs.python.org/3/library/warnings.html#warning-testingXTesting Warningstry Xnotrz (jjX7http://docs.python.org/3/reference/expressions.html#notXBoolean operationstr{ X package-indexr| (jjXBhttp://docs.python.org/3/distutils/packageindex.html#package-indexXThe Python Package Index (PyPI)tr} X pure-pathsr~ (jjX8http://docs.python.org/3/library/pathlib.html#pure-pathsX Pure pathstr Xdoctest-doctestr (jjX=http://docs.python.org/3/library/doctest.html#doctest-doctestXDocTest Objectstr Xcryptor (jjX3http://docs.python.org/3/library/crypto.html#cryptoXCryptographic Servicestr X smtp-objectsr (jjX:http://docs.python.org/3/library/smtplib.html#smtp-objectsX SMTP Objectstr Xold-string-formattingr (jjXDhttp://docs.python.org/3/library/stdtypes.html#old-string-formattingXprintf-style String Formattingtr Xctypes-ctypes-tutorialr (jjXChttp://docs.python.org/3/library/ctypes.html#ctypes-ctypes-tutorialXctypes tutorialtr Xtut-dirr (jjX6http://docs.python.org/3/tutorial/modules.html#tut-dirXThe dir() Functiontr X handler-basicr (jjX9http://docs.python.org/3/howto/logging.html#handler-basicXHandlerstr X)ctypes-specifying-required-argument-typesr (jjXVhttp://docs.python.org/3/library/ctypes.html#ctypes-specifying-required-argument-typesX<Specifying the required argument types (function prototypes)tr Xsqlite3-row-objectsr (jjXAhttp://docs.python.org/3/library/sqlite3.html#sqlite3-row-objectsX Row Objectstr Xusing-on-windowsr (jjX<http://docs.python.org/3/using/windows.html#using-on-windowsXUsing Python on Windowstr X csv-contentsr (jjX6http://docs.python.org/3/library/csv.html#csv-contentsXModule Contentstr Xpep-0343r (jjX3http://docs.python.org/3/whatsnew/2.6.html#pep-0343XPEP 343: The 'with' statementtr Xfilters-contextualr (jjXGhttp://docs.python.org/3/howto/logging-cookbook.html#filters-contextualX.Using Filters to impart contextual informationtr X access-rightsr (jjX:http://docs.python.org/3/library/winreg.html#access-rightsX Access Rightstr Xprofile-instantr (jjX=http://docs.python.org/3/library/profile.html#profile-instantXInstant User's Manualtr Xdoctest-doctestfinderr (jjXChttp://docs.python.org/3/library/doctest.html#doctest-doctestfinderXDocTestFinder objectstr X encodingsr (jjXBhttp://docs.python.org/3/reference/lexical_analysis.html#encodingsXEncoding declarationstr Xsubtestsr (jjX7http://docs.python.org/3/library/unittest.html#subtestsX-Distinguishing test iterations using subteststr Xnamingr (jjX=http://docs.python.org/3/reference/executionmodel.html#namingXNaming and bindingtr X binaryseqr (jjX8http://docs.python.org/3/library/stdtypes.html#binaryseqX6Binary Sequence Types --- bytes, bytearray, memoryviewtr Xtut-dictionariesr (jjXFhttp://docs.python.org/3/tutorial/datastructures.html#tut-dictionariesX Dictionariestr X re-objectsr (jjX3http://docs.python.org/3/library/re.html#re-objectsXRegular Expression Objectstr Xelementtree-parsing-xmlr (jjXShttp://docs.python.org/3/library/xml.etree.elementtree.html#elementtree-parsing-xmlX Parsing XMLtr Xapi-refcountdetailsr (jjX=http://docs.python.org/3/c-api/intro.html#api-refcountdetailsXReference Count Detailstr Xformatter-objectsr (jjX?http://docs.python.org/3/library/logging.html#formatter-objectsXFormatter Objectstr X func-tupler (jjX:http://docs.python.org/3/library/functions.html#func-tupleX-tr Xfunction-objectsr (jjX=http://docs.python.org/3/c-api/function.html#function-objectsXFunction Objectstr Xhttp-basic-auth-handlerr (jjXLhttp://docs.python.org/3/library/urllib.request.html#http-basic-auth-handlerXHTTPBasicAuthHandler Objectstr X curses-howtor (jjX7http://docs.python.org/3/howto/curses.html#curses-howtoXCurses Programming with Pythontr X ctypes-arraysr (jjX:http://docs.python.org/3/library/ctypes.html#ctypes-arraysXArraystr Xsection-enumerater (jjX<http://docs.python.org/3/whatsnew/2.3.html#section-enumerateXPEP 279: enumerate()tr Xinternetr (jjX7http://docs.python.org/3/library/internet.html#internetXInternet Protocols and Supporttr Xslicingsr (jjX<http://docs.python.org/3/reference/expressions.html#slicingsXSlicingstr Xlogging-config-dict-connectionsr (jjXThttp://docs.python.org/3/library/logging.config.html#logging-config-dict-connectionsXObject connectionstr Xdom-document-objectsr (jjXBhttp://docs.python.org/3/library/xml.dom.html#dom-document-objectsXDocument Objectstr Xtestsuite-objectsr (jjX@http://docs.python.org/3/library/unittest.html#testsuite-objectsXGrouping teststr Xwhatsnew-ensurepipr (jjX=http://docs.python.org/3/whatsnew/3.4.html#whatsnew-ensurepipX ensurepiptr Xmethod-objectsr (jjX9http://docs.python.org/3/c-api/method.html#method-objectsXMethod Objectstr Xoptparse-backgroundr (jjXBhttp://docs.python.org/3/library/optparse.html#optparse-backgroundX Backgroundtr X fileformatsr (jjX=http://docs.python.org/3/library/fileformats.html#fileformatsX File Formatstr Xossaudio-device-objectsr (jjXIhttp://docs.python.org/3/library/ossaudiodev.html#ossaudio-device-objectsXAudio Device Objectstr Xwhatsnew-tracemallocr (jjX?http://docs.python.org/3/whatsnew/3.4.html#whatsnew-tracemallocX tracemalloctr X st-errorsr (jjX6http://docs.python.org/3/library/parser.html#st-errorsXExceptions and Error Handlingtr X formatspecr (jjX7http://docs.python.org/3/library/string.html#formatspecX"Format Specification Mini-Languagetr Xlanguager (jjX7http://docs.python.org/3/library/language.html#languageXPython Language Servicestr Xusing-on-interface-optionsr (jjXFhttp://docs.python.org/3/using/cmdline.html#using-on-interface-optionsXInterface optionstr Xfnpicr (jjX4http://docs.python.org/3/reference/import.html#fnpicX-tr Xdistutils-indexr (jjX=http://docs.python.org/3/distutils/index.html#distutils-indexX,Distributing Python Modules (Legacy version)tr Xvenv-defr (jjX3http://docs.python.org/3/library/venv.html#venv-defX-tr X pickle-instr (jjX8http://docs.python.org/3/library/pickle.html#pickle-instXPickling Class Instancestr Xbase-handler-objectsr (jjXIhttp://docs.python.org/3/library/urllib.request.html#base-handler-objectsXBaseHandler Objectstr X tut-stderrr (jjX8http://docs.python.org/3/tutorial/stdlib.html#tut-stderrX0Error Output Redirection and Program Terminationtr Xparsing-ascii-encoded-bytesr (jjXNhttp://docs.python.org/3/library/urllib.parse.html#parsing-ascii-encoded-bytesXParsing ASCII Encoded Bytestr Xbase-rotating-handlerr (jjXLhttp://docs.python.org/3/library/logging.handlers.html#base-rotating-handlerXBaseRotatingHandlertr X tut-classesr (jjX:http://docs.python.org/3/tutorial/classes.html#tut-classesXClassestr Xtimed-rotating-file-handlerr (jjXRhttp://docs.python.org/3/library/logging.handlers.html#timed-rotating-file-handlerXTimedRotatingFileHandlertr X richcmpfuncsr (jjX>http://docs.python.org/3/reference/datamodel.html#richcmpfuncsX-tr Xshutil-archiving-exampler (jjXEhttp://docs.python.org/3/library/shutil.html#shutil-archiving-exampleXArchiving exampletr Xpep-341r (jjX2http://docs.python.org/3/whatsnew/2.5.html#pep-341X#PEP 341: Unified try/except/finallytr Xpep-342r (jjX2http://docs.python.org/3/whatsnew/2.5.html#pep-342XPEP 342: New Generator Featurestr Xpep-343r (jjX2http://docs.python.org/3/whatsnew/2.5.html#pep-343XPEP 343: The 'with' statementtr Xmemoryexamplesr (jjX9http://docs.python.org/3/c-api/memory.html#memoryexamplesXExamplestr Xtut-interactingr (jjXBhttp://docs.python.org/3/tutorial/interactive.html#tut-interactingX2Interactive Input Editing and History Substitutiontr Xadvanced-debuggingr (jjX;http://docs.python.org/3/c-api/init.html#advanced-debuggingXAdvanced Debugger Supporttr X!optparse-defining-callback-optionr (jjXPhttp://docs.python.org/3/library/optparse.html#optparse-defining-callback-optionXDefining a callback optiontr Xnew-module-contextlibr (jjX@http://docs.python.org/3/whatsnew/2.6.html#new-module-contextlibXThe contextlib moduletr Xoptparse-populating-parserr (jjXIhttp://docs.python.org/3/library/optparse.html#optparse-populating-parserXPopulating the parsertr Xlogging-advanced-tutorialr (jjXEhttp://docs.python.org/3/howto/logging.html#logging-advanced-tutorialXAdvanced Logging Tutorialtr Xusing-capsulesr (jjX@http://docs.python.org/3/extending/extending.html#using-capsulesX)Providing a C API for an Extension Moduletr X mailbox-mhr (jjX8http://docs.python.org/3/library/mailbox.html#mailbox-mhXMHtr Xtypesr (jjX7http://docs.python.org/3/reference/datamodel.html#typesXThe standard type hierarchytr Xgilstater (jjX1http://docs.python.org/3/c-api/init.html#gilstateXNon-Python created threadstr Xtypeiterr (jjX7http://docs.python.org/3/library/stdtypes.html#typeiterXIterator Typestr X asyncio-syncr (jjX?http://docs.python.org/3/library/asyncio-sync.html#asyncio-syncXSynchronization primitivestr Xwhatsnew-indexr (jjX;http://docs.python.org/3/whatsnew/index.html#whatsnew-indexXWhat's New in Pythontr Xlistsr (jjX9http://docs.python.org/3/reference/expressions.html#listsX List displaystr Xcookie-policy-objectsr (jjXJhttp://docs.python.org/3/library/http.cookiejar.html#cookie-policy-objectsXCookiePolicy Objectstr Xtut-performance-measurementr (jjXIhttp://docs.python.org/3/tutorial/stdlib.html#tut-performance-measurementXPerformance Measurementtr Xiterator-objectsr (jjX=http://docs.python.org/3/c-api/iterator.html#iterator-objectsXIterator Objectstr Xdom-implementation-objectsr (jjXHhttp://docs.python.org/3/library/xml.dom.html#dom-implementation-objectsXDOMImplementation Objectstr Xtypecontextmanagerr (jjXAhttp://docs.python.org/3/library/stdtypes.html#typecontextmanagerXContext Manager Typestr! Xhttpmessage-objectsr" (jjXEhttp://docs.python.org/3/library/http.client.html#httpmessage-objectsXHTTPMessage Objectstr# X file-handlerr$ (jjXChttp://docs.python.org/3/library/logging.handlers.html#file-handlerX FileHandlertr% Xlogging-basic-tutorialr& (jjXBhttp://docs.python.org/3/howto/logging.html#logging-basic-tutorialXBasic Logging Tutorialtr' Xasyncio-handle-blockingr( (jjXIhttp://docs.python.org/3/library/asyncio-dev.html#asyncio-handle-blockingX#Handle blocking functions correctlytr) X operator-mapr* (jjX;http://docs.python.org/3/library/operator.html#operator-mapXMapping Operators to Functionstr+ Xexceptionhandlingr, (jjX@http://docs.python.org/3/c-api/exceptions.html#exceptionhandlingXException Handlingtr- Xlogging-exceptionsr. (jjX>http://docs.python.org/3/howto/logging.html#logging-exceptionsX Exceptions raised during loggingtr/ X tar-formatsr0 (jjX9http://docs.python.org/3/library/tarfile.html#tar-formatsXSupported tar formatstr1 X main_specr2 (jjX8http://docs.python.org/3/reference/import.html#main-specX__main__.__spec__tr3 Xfuturer4 (jjX;http://docs.python.org/3/reference/simple_stmts.html#futureXFuture statementstr5 Xrawconfigparser-objectsr6 (jjXJhttp://docs.python.org/3/library/configparser.html#rawconfigparser-objectsXRawConfigParser Objectstr7 Xfollow_symlinksr8 (jjX8http://docs.python.org/3/library/os.html#follow-symlinksX-tr9 Xtarfile-objectsr: (jjX=http://docs.python.org/3/library/tarfile.html#tarfile-objectsXTarFile Objectstr; Xandr< (jjX7http://docs.python.org/3/reference/expressions.html#andXBoolean operationstr= Xfunctionr> (jjX?http://docs.python.org/3/reference/compound_stmts.html#functionXFunction definitionstr? Xbuffer-structurer@ (jjX;http://docs.python.org/3/c-api/buffer.html#buffer-structureXBuffer structuretrA X ttkstylingrB (jjX<http://docs.python.org/3/library/tkinter.ttk.html#ttkstylingX Ttk StylingtrC Xoptparse-terminologyrD (jjXChttp://docs.python.org/3/library/optparse.html#optparse-terminologyX TerminologytrE X top-levelrF (jjXEhttp://docs.python.org/3/reference/toplevel_components.html#top-levelXTop-level componentstrG Xpure-modrH (jjX9http://docs.python.org/3/distutils/examples.html#pure-modX$Pure Python distribution (by module)trI Xsection-pymallocrJ (jjX;http://docs.python.org/3/whatsnew/2.3.html#section-pymallocX(Pymalloc: A Specialized Object AllocatortrK X cell-objectsrL (jjX5http://docs.python.org/3/c-api/cell.html#cell-objectsX Cell ObjectstrM Xabstract-digest-auth-handlerrN (jjXQhttp://docs.python.org/3/library/urllib.request.html#abstract-digest-auth-handlerX!AbstractDigestAuthHandler ObjectstrO Xtut-data-compressionrP (jjXBhttp://docs.python.org/3/tutorial/stdlib.html#tut-data-compressionXData CompressiontrQ X tut-morelistsrR (jjXChttp://docs.python.org/3/tutorial/datastructures.html#tut-morelistsX More on ListstrS Xtut-annotationsrT (jjXBhttp://docs.python.org/3/tutorial/controlflow.html#tut-annotationsXFunction AnnotationstrU Xoptparse-tutorialrV (jjX@http://docs.python.org/3/library/optparse.html#optparse-tutorialXTutorialtrW X primariesrX (jjX=http://docs.python.org/3/reference/expressions.html#primariesX PrimariestrY XprocesscontrolrZ (jjX6http://docs.python.org/3/c-api/sys.html#processcontrolXProcess Controltr[ Xthreadpoolexecutor-exampler\ (jjXShttp://docs.python.org/3/library/concurrent.futures.html#threadpoolexecutor-exampleXThreadPoolExecutor Exampletr] X persistencer^ (jjX=http://docs.python.org/3/library/persistence.html#persistenceXData Persistencetr_ Xpep-3112r` (jjX3http://docs.python.org/3/whatsnew/2.6.html#pep-3112XPEP 3112: Byte Literalstra Xdoctest-soapboxrb (jjX=http://docs.python.org/3/library/doctest.html#doctest-soapboxXSoapboxtrc Xpep-3110rd (jjX3http://docs.python.org/3/whatsnew/2.6.html#pep-3110X$PEP 3110: Exception-Handling Changestre X mod-pythonrf (jjX9http://docs.python.org/3/howto/webservers.html#mod-pythonX mod_pythontrg X sqlite3-typesrh (jjX;http://docs.python.org/3/library/sqlite3.html#sqlite3-typesXSQLite and Python typestri Xc99rj (jjX-http://docs.python.org/3/library/sys.html#c99X-trk Xpep-3118rl (jjX3http://docs.python.org/3/whatsnew/2.6.html#pep-3118X!PEP 3118: Revised Buffer Protocoltrm Xregrtestrn (jjX3http://docs.python.org/3/library/test.html#regrtestX.Running tests using the command-line interfacetro Xctypes-structures-unionsrp (jjXEhttp://docs.python.org/3/library/ctypes.html#ctypes-structures-unionsXStructures and unionstrq Xfunctional-howto-iteratorsrr (jjXIhttp://docs.python.org/3/howto/functional.html#functional-howto-iteratorsX Iteratorstrs Xincremental-parser-objectsrt (jjXOhttp://docs.python.org/3/library/xml.sax.reader.html#incremental-parser-objectsXIncrementalParser Objectstru X optparse-standard-option-actionsrv (jjXOhttp://docs.python.org/3/library/optparse.html#optparse-standard-option-actionsXStandard option actionstrw Xhttp-server-clirx (jjXAhttp://docs.python.org/3/library/http.server.html#http-server-cliX-try Xtut-interactiverz (jjXBhttp://docs.python.org/3/tutorial/interpreter.html#tut-interactiveXInteractive Modetr{ Xtut-binary-formatsr| (jjXAhttp://docs.python.org/3/tutorial/stdlib2.html#tut-binary-formatsX'Working with Binary Data Record Layoutstr} Xxml-vulnerabilitiesr~ (jjX=http://docs.python.org/3/library/xml.html#xml-vulnerabilitiesXXML vulnerabilitiestr Xsection-generatorsr (jjX=http://docs.python.org/3/whatsnew/2.3.html#section-generatorsXPEP 255: Simple Generatorstr Xasyncio-streamsr (jjXDhttp://docs.python.org/3/library/asyncio-stream.html#asyncio-streamsXStreams (high-level API)tr Xdom-documenttype-objectsr (jjXFhttp://docs.python.org/3/library/xml.dom.html#dom-documenttype-objectsXDocumentType Objectstr Xpickle-persistentr (jjX>http://docs.python.org/3/library/pickle.html#pickle-persistentXPersistence of External Objectstr Xcommon-structsr (jjX=http://docs.python.org/3/c-api/structures.html#common-structsXCommon Object Structurestr Xctypes-foreign-functionsr (jjXEhttp://docs.python.org/3/library/ctypes.html#ctypes-foreign-functionsXForeign functionstr X socket-howtor (jjX8http://docs.python.org/3/howto/sockets.html#socket-howtoXSocket Programming HOWTOtr Xdtd-handler-objectsr (jjXIhttp://docs.python.org/3/library/xml.sax.handler.html#dtd-handler-objectsXDTDHandler Objectstr X queue-handlerr (jjXDhttp://docs.python.org/3/library/logging.handlers.html#queue-handlerX QueueHandlertr X build-apir (jjX4http://docs.python.org/3/whatsnew/2.5.html#build-apiXBuild and C API Changestr Xhttps-handler-objectsr (jjXJhttp://docs.python.org/3/library/urllib.request.html#https-handler-objectsXHTTPSHandler Objectstr X source-distr (jjX>http://docs.python.org/3/distutils/sourcedist.html#source-distXCreating a Source Distributiontr Xxmlr (jjX-http://docs.python.org/3/library/xml.html#xmlXXML Processing Modulestr X importlibr (jjX4http://docs.python.org/3/whatsnew/3.3.html#importlibX/Using importlib as the Implementation of Importtr Xformatter-implsr (jjX?http://docs.python.org/3/library/formatter.html#formatter-implsXFormatter Implementationstr Xdynamic-featuresr (jjXGhttp://docs.python.org/3/reference/executionmodel.html#dynamic-featuresX!Interaction with dynamic featurestr X value-typesr (jjX8http://docs.python.org/3/library/winreg.html#value-typesX Value Typestr Xkqueue-objectsr (jjX;http://docs.python.org/3/library/select.html#kqueue-objectsXKqueue Objectstr X os-procinfor (jjX4http://docs.python.org/3/library/os.html#os-procinfoXProcess Parameterstr Xnetwork-loggingr (jjXDhttp://docs.python.org/3/howto/logging-cookbook.html#network-loggingX5Sending and receiving logging events across a networktr X 25modulesr (jjX2http://docs.python.org/3/whatsnew/2.5.html#modulesX"New, Improved, and Removed Modulestr X win-cookbookr (jjX<http://docs.python.org/3/extending/windows.html#win-cookbookXA Cookbook Approachtr Xinspect-signature-objectr (jjXFhttp://docs.python.org/3/library/inspect.html#inspect-signature-objectX1Introspecting callables with the Signature objecttr Xweakref-exampler (jjX=http://docs.python.org/3/library/weakref.html#weakref-exampleXExampletr Xcapsulesr (jjX4http://docs.python.org/3/c-api/capsule.html#capsulesXCapsulestr Xinspect-module-clir (jjX@http://docs.python.org/3/library/inspect.html#inspect-module-cliXCommand Line Interfacetr X inspect-stackr (jjX;http://docs.python.org/3/library/inspect.html#inspect-stackXThe interpreter stacktr X single-extr (jjX;http://docs.python.org/3/distutils/examples.html#single-extXSingle extension moduletr Xcodec-handling-improvementsr (jjXFhttp://docs.python.org/3/whatsnew/3.4.html#codec-handling-improvementsXImprovements to Codec Handlingtr Xarchiving-operationsr (jjXAhttp://docs.python.org/3/library/shutil.html#archiving-operationsXArchiving operationstr Xformat-charactersr (jjX>http://docs.python.org/3/library/struct.html#format-charactersXFormat Characterstr X regex-howtor (jjX5http://docs.python.org/3/howto/regex.html#regex-howtoXRegular Expression HOWTOtr Xshelve-exampler (jjX;http://docs.python.org/3/library/shelve.html#shelve-exampleXExampletr Xemail-pkg-historyr (jjX=http://docs.python.org/3/library/email.html#email-pkg-historyXPackage Historytr u(Xtut-batteries-includedr (jjXDhttp://docs.python.org/3/tutorial/stdlib.html#tut-batteries-includedXBatteries Includedtr Xstream-reader-objectsr (jjXBhttp://docs.python.org/3/library/codecs.html#stream-reader-objectsXStreamReader Objectstr Xau-read-objectsr (jjX;http://docs.python.org/3/library/sunau.html#au-read-objectsXAU_read Objectstr Xatom-identifiersr (jjXDhttp://docs.python.org/3/reference/expressions.html#atom-identifiersXIdentifiers (Names)tr Xyieldr (jjX:http://docs.python.org/3/reference/simple_stmts.html#yieldXThe yield statementtr X dictobjectsr (jjX4http://docs.python.org/3/c-api/dict.html#dictobjectsXDictionary Objectstr Xmsvcrt-consoler (jjX;http://docs.python.org/3/library/msvcrt.html#msvcrt-consoleX Console I/Otr X gen-objectsr (jjX3http://docs.python.org/3/c-api/gen.html#gen-objectsXGenerator Objectstr X whatsnew-multiprocessing-no-forkr (jjXKhttp://docs.python.org/3/whatsnew/3.4.html#whatsnew-multiprocessing-no-forkX-tr Xconverting-stsr (jjX;http://docs.python.org/3/library/parser.html#converting-stsXConverting ST Objectstr Xdir_fdr (jjX/http://docs.python.org/3/library/os.html#dir-fdX-tr Xdoctest-warningsr (jjX>http://docs.python.org/3/library/doctest.html#doctest-warningsXWarningstr Xtut-templatingr (jjX=http://docs.python.org/3/tutorial/stdlib2.html#tut-templatingX Templatingtr Xdoctest-finding-examplesr (jjXFhttp://docs.python.org/3/library/doctest.html#doctest-finding-examplesX&How are Docstring Examples Recognized?tr Xfnlor (jjX3http://docs.python.org/3/reference/import.html#fnloX-tr X parenthesizedr (jjXAhttp://docs.python.org/3/reference/expressions.html#parenthesizedXParenthesized formstr Xstrftime-strptime-behaviorr (jjXIhttp://docs.python.org/3/library/datetime.html#strftime-strptime-behaviorX"strftime() and strptime() Behaviortr Xpickle-exampler (jjX;http://docs.python.org/3/library/pickle.html#pickle-exampleXExamplestr X execmodelr (jjX@http://docs.python.org/3/reference/executionmodel.html#execmodelXExecution modeltr X26acksr (jjX/http://docs.python.org/3/whatsnew/2.6.html#acksXAcknowledgementstr X tut-numbersr (jjX?http://docs.python.org/3/tutorial/introduction.html#tut-numbersXNumberstr Xmorsel-objectsr (jjXAhttp://docs.python.org/3/library/http.cookies.html#morsel-objectsXMorsel Objectstr Xtut-syntaxerrorsr (jjX>http://docs.python.org/3/tutorial/errors.html#tut-syntaxerrorsX Syntax Errorstr Xwarning-functionsr (jjX@http://docs.python.org/3/library/warnings.html#warning-functionsXAvailable Functionstr Xmultiprocessing-managersr (jjXNhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing-managersXManagerstr X null-handlerr (jjXChttp://docs.python.org/3/library/logging.handlers.html#null-handlerX NullHandlertr Xmsi-guir (jjX4http://docs.python.org/3/library/msilib.html#msi-guiX GUI classestr Xlexicalr (jjX@http://docs.python.org/3/reference/lexical_analysis.html#lexicalXLexical analysistr Xmac-package-managerr (jjX;http://docs.python.org/3/using/mac.html#mac-package-managerX%Installing Additional Python Packagestr Xtut-generatorsr (jjX=http://docs.python.org/3/tutorial/classes.html#tut-generatorsX Generatorstr Xtut-modulesasscriptsr (jjXChttp://docs.python.org/3/tutorial/modules.html#tut-modulesasscriptsXExecuting modules as scriptstr X http-handlerr (jjXChttp://docs.python.org/3/library/logging.handlers.html#http-handlerX HTTPHandlertr Ximportr (jjX;http://docs.python.org/3/reference/simple_stmts.html#importXThe import statementtr X typesmethodsr (jjX;http://docs.python.org/3/library/stdtypes.html#typesmethodsXMethodstr Xsubclassing-reprsr (jjX?http://docs.python.org/3/library/reprlib.html#subclassing-reprsXSubclassing Repr Objectstr Xlogging-config-dict-internalobjr (jjXThttp://docs.python.org/3/library/logging.config.html#logging-config-dict-internalobjXAccess to internal objectstr Xpep-0370r (jjX3http://docs.python.org/3/whatsnew/2.6.html#pep-0370X)PEP 370: Per-user site-packages Directorytr Xpep-0371r (jjX3http://docs.python.org/3/whatsnew/2.6.html#pep-0371X$PEP 371: The multiprocessing Packagetr X!multiprocessing-listeners-clientsr (jjXWhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing-listeners-clientsXListeners and Clientstr Xpep-0378r (jjX3http://docs.python.org/3/whatsnew/2.7.html#pep-0378X1PEP 378: Format Specifier for Thousands Separatortr Xinst-trivial-installr (jjX@http://docs.python.org/3/install/index.html#inst-trivial-installXBest case: trivial installationtr Xcreating-wininstr (jjXBhttp://docs.python.org/3/distutils/builtdist.html#creating-wininstXCreating Windows Installerstr Xmarshalling-utilsr (jjX=http://docs.python.org/3/c-api/marshal.html#marshalling-utilsXData marshalling supporttr Xtkinterr (jjX0http://docs.python.org/3/library/tk.html#tkinterX!Graphical User Interfaces with Tktr Xctypes-surprisesr (jjX=http://docs.python.org/3/library/ctypes.html#ctypes-surprisesX Surprisestr Xtut-searchpathr (jjX=http://docs.python.org/3/tutorial/modules.html#tut-searchpathXThe Module Search Pathtr X fileobjectsr (jjX4http://docs.python.org/3/c-api/file.html#fileobjectsX File Objectstr! Xelementtree-qname-objectsr" (jjXUhttp://docs.python.org/3/library/xml.etree.elementtree.html#elementtree-qname-objectsX QName Objectstr# X tut-lambdar$ (jjX=http://docs.python.org/3/tutorial/controlflow.html#tut-lambdaXLambda Expressionstr% X embeddingr& (jjX;http://docs.python.org/3/extending/embedding.html#embeddingX'Embedding Python in Another Applicationtr' X contextlibmodr( (jjX8http://docs.python.org/3/whatsnew/2.5.html#contextlibmodXThe contextlib moduletr) Xhttp-cookie-processorr* (jjXJhttp://docs.python.org/3/library/urllib.request.html#http-cookie-processorXHTTPCookieProcessor Objectstr+ X cmd-exampler, (jjX5http://docs.python.org/3/library/cmd.html#cmd-exampleX Cmd Exampletr- Xinst-tweak-flagsr. (jjX<http://docs.python.org/3/install/index.html#inst-tweak-flagsXTweaking compiler/linker flagstr/ Xbuilt-in-funcsr0 (jjX>http://docs.python.org/3/library/functions.html#built-in-funcsXBuilt-in Functionstr1 Xincremental-encoder-objectsr2 (jjXHhttp://docs.python.org/3/library/codecs.html#incremental-encoder-objectsXIncrementalEncoder Objectstr3 X os-miscfuncr4 (jjX4http://docs.python.org/3/library/os.html#os-miscfuncXMiscellaneous Functionstr5 Xmailbox-maildirmessager6 (jjXDhttp://docs.python.org/3/library/mailbox.html#mailbox-maildirmessageXMaildirMessagetr7 Xoptparse-other-actionsr8 (jjXEhttp://docs.python.org/3/library/optparse.html#optparse-other-actionsX Other actionstr9 X profile-statsr: (jjX;http://docs.python.org/3/library/profile.html#profile-statsXThe Stats Classtr; Xallocating-objectsr< (jjXAhttp://docs.python.org/3/c-api/allocation.html#allocating-objectsXAllocating Objects on the Heaptr= X$faq-augmented-assignment-tuple-errorr> (jjXRhttp://docs.python.org/3/faq/programming.html#faq-augmented-assignment-tuple-errorXKWhy does a_tuple[i] += ['item'] raise an exception when the addition works?tr? Xscheduler-objectsr@ (jjX=http://docs.python.org/3/library/sched.html#scheduler-objectsXScheduler ObjectstrA Xwhatsnew27-capsulesrB (jjX>http://docs.python.org/3/whatsnew/2.7.html#whatsnew27-capsulesXCapsulestrC Xtut-loopidiomsrD (jjXDhttp://docs.python.org/3/tutorial/datastructures.html#tut-loopidiomsXLooping TechniquestrE XportingrF (jjX2http://docs.python.org/3/whatsnew/2.5.html#portingXPorting to Python 2.5trG Xlogging-config-dict-externalobjrH (jjXThttp://docs.python.org/3/library/logging.config.html#logging-config-dict-externalobjXAccess to external objectstrI X tut-multiplerJ (jjX;http://docs.python.org/3/tutorial/classes.html#tut-multipleXMultiple InheritancetrK Xwhatsnew-tls-11-12rL (jjX=http://docs.python.org/3/whatsnew/3.4.html#whatsnew-tls-11-12X-trM X exprlistsrN (jjX=http://docs.python.org/3/reference/expressions.html#exprlistsXExpression liststrO XbinaryservicesrP (jjX;http://docs.python.org/3/library/binary.html#binaryservicesXBinary Data ServicestrQ X tut-scopesrR (jjX9http://docs.python.org/3/tutorial/classes.html#tut-scopesXPython Scopes and NamespacestrS XassertrT (jjX;http://docs.python.org/3/reference/simple_stmts.html#assertXThe assert statementtrU Xi18nrV (jjX/http://docs.python.org/3/library/i18n.html#i18nXInternationalizationtrW Xtut-source-encodingrX (jjXFhttp://docs.python.org/3/tutorial/interpreter.html#tut-source-encodingXSource Code EncodingtrY Xstream-reader-writerrZ (jjXAhttp://docs.python.org/3/library/codecs.html#stream-reader-writerXStreamReaderWriter Objectstr[ Xdoctest-basic-apir\ (jjX?http://docs.python.org/3/library/doctest.html#doctest-basic-apiX Basic APItr] Xglossaryr^ (jjX/http://docs.python.org/3/glossary.html#glossaryXGlossarytr_ Xportingpythoncoder` (jjX<http://docs.python.org/3/whatsnew/3.3.html#portingpythoncodeXPorting Python codetra Xdom-type-mappingrb (jjX>http://docs.python.org/3/library/xml.dom.html#dom-type-mappingX Type Mappingtrc Xbltin-null-objectrd (jjX@http://docs.python.org/3/library/stdtypes.html#bltin-null-objectXThe Null Objecttre X frameworksrf (jjX;http://docs.python.org/3/library/frameworks.html#frameworksXProgram Frameworkstrg Xbytearrayobjectsrh (jjX>http://docs.python.org/3/c-api/bytearray.html#bytearrayobjectsXByte Array Objectstri X file-inputrj (jjXFhttp://docs.python.org/3/reference/toplevel_components.html#file-inputX File inputtrk Xshutil-copytree-examplerl (jjXDhttp://docs.python.org/3/library/shutil.html#shutil-copytree-exampleXcopytree exampletrm Xgzip-usage-examplesrn (jjX>http://docs.python.org/3/library/gzip.html#gzip-usage-examplesXExamples of usagetro Xdecimal-contextrp (jjX=http://docs.python.org/3/library/decimal.html#decimal-contextXContext objectstrq Xtut-dates-and-timesrr (jjXAhttp://docs.python.org/3/tutorial/stdlib.html#tut-dates-and-timesXDates and Timestrs Xsubprocess-replacementsrt (jjXHhttp://docs.python.org/3/library/subprocess.html#subprocess-replacementsX4Replacing Older Functions with the subprocess Moduletru Xhash-algorithmsrv (jjX=http://docs.python.org/3/library/hashlib.html#hash-algorithmsXHash algorithmstrw Xdistutils-introrx (jjXDhttp://docs.python.org/3/distutils/introduction.html#distutils-introXAn Introduction to Distutilstry Xasyncio-delayed-callsrz (jjXMhttp://docs.python.org/3/library/asyncio-eventloop.html#asyncio-delayed-callsX Delayed callstr{ Xlogrecord-attributesr| (jjXBhttp://docs.python.org/3/library/logging.html#logrecord-attributesXLogRecord attributestr} Xzipfile-objectsr~ (jjX=http://docs.python.org/3/library/zipfile.html#zipfile-objectsXZipFile Objectstr Xbinaryr (jjX:http://docs.python.org/3/reference/expressions.html#binaryXBinary arithmetic operationstr Xtut-forr (jjX:http://docs.python.org/3/tutorial/controlflow.html#tut-forXfor Statementstr X trace-clir (jjX5http://docs.python.org/3/library/trace.html#trace-cliXCommand-Line Usagetr Xdoctest-optionsr (jjX=http://docs.python.org/3/library/doctest.html#doctest-optionsX Option Flagstr X queueobjectsr (jjX8http://docs.python.org/3/library/queue.html#queueobjectsX Queue Objectstr Xunittest-contentsr (jjX@http://docs.python.org/3/library/unittest.html#unittest-contentsXClasses and functionstr Xfunc-setr (jjX8http://docs.python.org/3/library/functions.html#func-setX-tr Xweakrefobjectsr (jjX:http://docs.python.org/3/c-api/weakref.html#weakrefobjectsXWeak Reference Objectstr Xtut-structuresr (jjXDhttp://docs.python.org/3/tutorial/datastructures.html#tut-structuresXData Structurestr X dnt-basicsr (jjX;http://docs.python.org/3/extending/newtypes.html#dnt-basicsX The Basicstr Xpyclbr-function-objectsr (jjXDhttp://docs.python.org/3/library/pyclbr.html#pyclbr-function-objectsXFunction Objectstr Xmmediar (jjX/http://docs.python.org/3/library/mm.html#mmediaXMultimedia Servicestr Xother-improvements-3.4r (jjXAhttp://docs.python.org/3/whatsnew/3.4.html#other-improvements-3-4XOther Improvementstr Xthread-objectsr (jjX>http://docs.python.org/3/library/threading.html#thread-objectsXThread Objectstr Xinitializationr (jjX7http://docs.python.org/3/c-api/init.html#initializationX)Initialization, Finalization, and Threadstr Xsimplexmlrpcserver-exampler (jjXNhttp://docs.python.org/3/library/xmlrpc.server.html#simplexmlrpcserver-exampleXSimpleXMLRPCServer Exampletr Xpyclbr-class-objectsr (jjXAhttp://docs.python.org/3/library/pyclbr.html#pyclbr-class-objectsX Class Objectstr X expat-exampler (jjX;http://docs.python.org/3/library/pyexpat.html#expat-exampleXExampletr X bitstring-opsr (jjX<http://docs.python.org/3/library/stdtypes.html#bitstring-opsX#Bitwise Operations on Integer Typestr X datetime-dater (jjX<http://docs.python.org/3/library/datetime.html#datetime-dateX date Objectstr X datatypesr (jjX9http://docs.python.org/3/library/datatypes.html#datatypesX Data Typestr X moduleobjectsr (jjX8http://docs.python.org/3/c-api/module.html#moduleobjectsXModule Objectstr X reflectionr (jjX9http://docs.python.org/3/c-api/reflection.html#reflectionX Reflectiontr Xmarkupr (jjX3http://docs.python.org/3/library/markup.html#markupX"Structured Markup Processing Toolstr X identifiersr (jjXDhttp://docs.python.org/3/reference/lexical_analysis.html#identifiersXIdentifiers and keywordstr Xshlex-parsing-rulesr (jjX?http://docs.python.org/3/library/shlex.html#shlex-parsing-rulesX Parsing Rulestr Xpep-397r (jjX2http://docs.python.org/3/whatsnew/3.3.html#pep-397X$PEP 397: Python Launcher for Windowstr Xpep-393r (jjX2http://docs.python.org/3/whatsnew/3.3.html#pep-393X'PEP 393: Flexible String Representationtr Xasyncio-multithreadingr (jjXHhttp://docs.python.org/3/library/asyncio-dev.html#asyncio-multithreadingXConcurrency and multithreadingtr X comparisonsr (jjX?http://docs.python.org/3/reference/expressions.html#comparisonsX Comparisonstr X tut-errorr (jjX<http://docs.python.org/3/tutorial/interpreter.html#tut-errorXError Handlingtr Xctypes-calling-functionsr (jjXEhttp://docs.python.org/3/library/ctypes.html#ctypes-calling-functionsXCalling functionstr X tut-interpr (jjX=http://docs.python.org/3/tutorial/interpreter.html#tut-interpX#The Interpreter and Its Environmenttr Xpep-3127r (jjX3http://docs.python.org/3/whatsnew/2.6.html#pep-3127X,PEP 3127: Integer Literal Support and Syntaxtr Xwarning-ignoredr (jjX>http://docs.python.org/3/library/warnings.html#warning-ignoredX(Updating Code For New Versions of Pythontr X#optparse-raising-errors-in-callbackr (jjXRhttp://docs.python.org/3/library/optparse.html#optparse-raising-errors-in-callbackXRaising errors in a callbacktr Xstringservicesr (jjX9http://docs.python.org/3/library/text.html#stringservicesXText Processing Servicestr X numeric-typesr (jjX?http://docs.python.org/3/reference/datamodel.html#numeric-typesXEmulating numeric typestr Xpep-3129r (jjX3http://docs.python.org/3/whatsnew/2.6.html#pep-3129XPEP 3129: Class Decoratorstr Xunaryr (jjX9http://docs.python.org/3/reference/expressions.html#unaryX'Unary arithmetic and bitwise operationstr X methodtabler (jjX=http://docs.python.org/3/extending/extending.html#methodtableX5The Module's Method Table and Initialization Functiontr Xtypesseq-commonr (jjX>http://docs.python.org/3/library/stdtypes.html#typesseq-commonXCommon Sequence Operationstr Xpython-interfacer (jjX=http://docs.python.org/3/library/timeit.html#python-interfaceXPython Interfacetr Xexceptr (jjX=http://docs.python.org/3/reference/compound_stmts.html#exceptXThe try statementtr X specialnamesr (jjX>http://docs.python.org/3/reference/datamodel.html#specialnamesXSpecial method namestr Xtypesseqr (jjX7http://docs.python.org/3/library/stdtypes.html#typesseqX%Sequence Types --- list, tuple, rangetr Xtut-morecontrolr (jjXBhttp://docs.python.org/3/tutorial/controlflow.html#tut-morecontrolXMore Control Flow Toolstr Xother-gui-packagesr (jjXAhttp://docs.python.org/3/library/othergui.html#other-gui-packagesX'Other Graphical User Interface Packagestr Xnumber-structsr (jjX:http://docs.python.org/3/c-api/typeobj.html#number-structsXNumber Object Structurestr Xloggerr (jjX4http://docs.python.org/3/library/logging.html#loggerXLogger Objectstr Xtut-commentaryr (jjXAhttp://docs.python.org/3/tutorial/interactive.html#tut-commentaryX+Alternatives to the Interactive Interpretertr Xlisting-modulesr (jjXChttp://docs.python.org/3/distutils/setupscript.html#listing-modulesXListing individual modulestr X typebytesr (jjX8http://docs.python.org/3/library/stdtypes.html#typebytesXBytestr Xlisting-packagesr (jjXDhttp://docs.python.org/3/distutils/setupscript.html#listing-packagesXListing whole packagestr Xmodulefinder-exampler (jjXGhttp://docs.python.org/3/library/modulefinder.html#modulefinder-exampleXExample usage of ModuleFindertr Xmailbox-message-objectsr (jjXEhttp://docs.python.org/3/library/mailbox.html#mailbox-message-objectsXMessage objectstr Xstandard-encodingsr (jjX?http://docs.python.org/3/library/codecs.html#standard-encodingsXStandard Encodingstr Xinstall-scripts-cmdr (jjXFhttp://docs.python.org/3/distutils/commandref.html#install-scripts-cmdXinstall_scriptstr X python-termsr (jjXAhttp://docs.python.org/3/distutils/introduction.html#python-termsXGeneral Python terminologytr Xtypesseq-immutabler (jjXAhttp://docs.python.org/3/library/stdtypes.html#typesseq-immutableXImmutable Sequence Typestr Xdom-nodelist-objectsr (jjXBhttp://docs.python.org/3/library/xml.dom.html#dom-nodelist-objectsXNodeList Objectstr Xstruct-format-stringsr (jjXBhttp://docs.python.org/3/library/struct.html#struct-format-stringsXFormat Stringstr Xwhere-to-patchr (jjXBhttp://docs.python.org/3/library/unittest.mock.html#where-to-patchXWhere to patchtr Xmore-metacharactersr (jjX=http://docs.python.org/3/howto/regex.html#more-metacharactersXMore Metacharacterstr Xapi-exceptionsr (jjX8http://docs.python.org/3/c-api/intro.html#api-exceptionsX Exceptionstr Xxdr-unpacker-objectsr (jjXAhttp://docs.python.org/3/library/xdrlib.html#xdr-unpacker-objectsXUnpacker Objectstr Xsignals-and-threadsr (jjX@http://docs.python.org/3/library/signal.html#signals-and-threadsXSignals and threadstr Xxdr-packer-objectsr (jjX?http://docs.python.org/3/library/xdrlib.html#xdr-packer-objectsXPacker Objectstr Xinterpreter-objectsr (jjX>http://docs.python.org/3/library/code.html#interpreter-objectsXInteractive Interpreter Objectstr X unicode-howtor (jjX9http://docs.python.org/3/howto/unicode.html#unicode-howtoX Unicode HOWTOtr Xasyncio-hello-world-coroutiner (jjXPhttp://docs.python.org/3/library/asyncio-task.html#asyncio-hello-world-coroutineX Example: "Hello World" coroutinetr Xsequencer (jjX5http://docs.python.org/3/c-api/sequence.html#sequenceXSequence Protocoltr Xmodindexr (jjX*http://docs.python.org/3/py-modindex.html#X Module Indextr Xdatabase-objectsr (jjX=http://docs.python.org/3/library/msilib.html#database-objectsXDatabase Objectstr X binhex-notesr (jjX9http://docs.python.org/3/library/binhex.html#binhex-notesXNotestr X frame-objectsr (jjX?http://docs.python.org/3/reference/datamodel.html#frame-objectsX-tr X inspect-typesr (jjX;http://docs.python.org/3/library/inspect.html#inspect-typesXTypes and memberstr Xwave-read-objectsr (jjX<http://docs.python.org/3/library/wave.html#wave-read-objectsXWave_read Objectstr X tut-listcompsr (jjXChttp://docs.python.org/3/tutorial/datastructures.html#tut-listcompsXList Comprehensionstr Xhttpresponse-objectsr (jjXFhttp://docs.python.org/3/library/http.client.html#httpresponse-objectsXHTTPResponse Objectstr Xdynamic-linkingr (jjX?http://docs.python.org/3/extending/windows.html#dynamic-linkingX$Differences Between Unix and Windowstr! Xliteralsr" (jjXAhttp://docs.python.org/3/reference/lexical_analysis.html#literalsXLiteralstr# X tut-functionsr$ (jjX@http://docs.python.org/3/tutorial/controlflow.html#tut-functionsXDefining Functionstr% Xsection-pep302r& (jjX9http://docs.python.org/3/whatsnew/2.3.html#section-pep302XPEP 302: New Import Hookstr' Xsection-pep301r( (jjX9http://docs.python.org/3/whatsnew/2.3.html#section-pep301X1PEP 301: Package Index and Metadata for Distutilstr) Xoptparse-how-callbacks-calledr* (jjXLhttp://docs.python.org/3/library/optparse.html#optparse-how-callbacks-calledXHow callbacks are calledtr+ Xsection-pep305r, (jjX9http://docs.python.org/3/whatsnew/2.3.html#section-pep305XPEP 305: Comma-separated Filestr- X delimitersr. (jjXChttp://docs.python.org/3/reference/lexical_analysis.html#delimitersX Delimiterstr/ Xupgrading-optparse-coder0 (jjXFhttp://docs.python.org/3/library/argparse.html#upgrading-optparse-codeXUpgrading optparse codetr1 X textservicesr2 (jjX7http://docs.python.org/3/library/text.html#textservicesXText Processing Servicestr3 X refcountsr4 (jjX;http://docs.python.org/3/extending/extending.html#refcountsXReference Countstr5 Xusing-the-cgi-moduler6 (jjX>http://docs.python.org/3/library/cgi.html#using-the-cgi-moduleXUsing the cgi moduletr7 Xnew-25-context-managersr8 (jjXBhttp://docs.python.org/3/whatsnew/2.5.html#new-25-context-managersXWriting Context Managerstr9 Xdoctest-simple-testmodr: (jjXDhttp://docs.python.org/3/library/doctest.html#doctest-simple-testmodX-Simple Usage: Checking Examples in Docstringstr; Xtut-oddsr< (jjX7http://docs.python.org/3/tutorial/classes.html#tut-oddsX Odds and Endstr= Xhtmlparser-examplesr> (jjXEhttp://docs.python.org/3/library/html.parser.html#htmlparser-examplesXExamplestr? Xtruthr@ (jjX4http://docs.python.org/3/library/stdtypes.html#truthXTruth Value TestingtrA XpowerrB (jjX9http://docs.python.org/3/reference/expressions.html#powerXThe power operatortrC X built-distrD (jjX<http://docs.python.org/3/distutils/builtdist.html#built-distXCreating Built DistributionstrE Xmultiprocessing-examplesrF (jjXNhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing-examplesXExamplestrG X utilitiesrH (jjX7http://docs.python.org/3/c-api/utilities.html#utilitiesX UtilitiestrI X tut-usingrJ (jjX<http://docs.python.org/3/tutorial/interpreter.html#tut-usingXUsing the Python InterpretertrK Xdoctest-doctestrunnerrL (jjXChttp://docs.python.org/3/library/doctest.html#doctest-doctestrunnerXDocTestRunner objectstrM X imaginaryrN (jjXBhttp://docs.python.org/3/reference/lexical_analysis.html#imaginaryXImaginary literalstrO X optparse-printing-version-stringrP (jjXOhttp://docs.python.org/3/library/optparse.html#optparse-printing-version-stringXPrinting a version stringtrQ Xcursespanel-functionsrR (jjXHhttp://docs.python.org/3/library/curses.panel.html#cursespanel-functionsX FunctionstrS X tut-handlingrT (jjX:http://docs.python.org/3/tutorial/errors.html#tut-handlingXHandling ExceptionstrU Xdatetime-timezonerV (jjX@http://docs.python.org/3/library/datetime.html#datetime-timezoneXtimezone ObjectstrW Xtut-exceptionclassesrX (jjXChttp://docs.python.org/3/tutorial/classes.html#tut-exceptionclassesXExceptions Are Classes TootrY Xwhatsnew27-python31rZ (jjX>http://docs.python.org/3/whatsnew/2.7.html#whatsnew27-python31XThe Future for Python 2.xtr[ Xtut-docstringsr\ (jjXAhttp://docs.python.org/3/tutorial/controlflow.html#tut-docstringsXDocumentation Stringstr] X log-recordr^ (jjX8http://docs.python.org/3/library/logging.html#log-recordXLogRecord Objectstr_ X parsetupler` (jjX<http://docs.python.org/3/extending/extending.html#parsetupleX,Extracting Parameters in Extension Functionstra Xmemoryview-objectsrb (jjXAhttp://docs.python.org/3/c-api/memoryview.html#memoryview-objectsX-trc Xosrd (jjX*http://docs.python.org/3/c-api/sys.html#osXOperating System Utilitiestre Xorrf (jjX6http://docs.python.org/3/reference/expressions.html#orXBoolean operationstrg Xpep-0366rh (jjX3http://docs.python.org/3/whatsnew/2.6.html#pep-0366X5PEP 366: Explicit Relative Imports From a Main Moduletri Xtut-keywordargsrj (jjXBhttp://docs.python.org/3/tutorial/controlflow.html#tut-keywordargsXKeyword Argumentstrk Xdatetime-datetimerl (jjX@http://docs.python.org/3/library/datetime.html#datetime-datetimeXdatetime Objectstrm X os-fd-opsrn (jjX2http://docs.python.org/3/library/os.html#os-fd-opsXFile Descriptor Operationstro Xtemplate-stringsrp (jjX=http://docs.python.org/3/library/string.html#template-stringsXTemplate stringstrq Xpreparerr (jjX9http://docs.python.org/3/reference/datamodel.html#prepareXPreparing the class namespacetrs X cplusplusrt (jjX;http://docs.python.org/3/extending/extending.html#cplusplusXWriting Extensions in C++tru X msvcrt-otherrv (jjX9http://docs.python.org/3/library/msvcrt.html#msvcrt-otherXOther Functionstrw Xdom-element-objectsrx (jjXAhttp://docs.python.org/3/library/xml.dom.html#dom-element-objectsXElement Objectstry X 25interactiverz (jjX6http://docs.python.org/3/whatsnew/2.5.html#interactiveXInteractive Interpreter Changestr{ Xdiffer-objectsr| (jjX<http://docs.python.org/3/library/difflib.html#differ-objectsXDiffer Objectstr} Xinst-splitting-upr~ (jjX=http://docs.python.org/3/install/index.html#inst-splitting-upXSplitting the job uptr Xtut-conditionsr (jjXDhttp://docs.python.org/3/tutorial/datastructures.html#tut-conditionsXMore on Conditionstr X api-embeddingr (jjX7http://docs.python.org/3/c-api/intro.html#api-embeddingXEmbedding Pythontr Xurllib-request-examplesr (jjXLhttp://docs.python.org/3/library/urllib.request.html#urllib-request-examplesXExamplestr Xscripts-pyvenvr (jjX:http://docs.python.org/3/using/scripts.html#scripts-pyvenvX&pyvenv - Creating virtual environmentstr Xdebugger-aliasesr (jjX:http://docs.python.org/3/library/pdb.html#debugger-aliasesX-tr Xlambdar (jjX:http://docs.python.org/3/reference/expressions.html#lambdaXLambdastr Xfnmor (jjX3http://docs.python.org/3/reference/import.html#fnmoX-tr Xbuildingr (jjX9http://docs.python.org/3/extending/building.html#buildingX,Building C and C++ Extensions with distutilstr Xcontext-managersr (jjXBhttp://docs.python.org/3/reference/datamodel.html#context-managersXWith Statement Context Managerstr X other-tokensr (jjXEhttp://docs.python.org/3/reference/lexical_analysis.html#other-tokensX Other tokenstr X listobjectsr (jjX4http://docs.python.org/3/c-api/list.html#listobjectsX List Objectstr Ximport-mod-attrsr (jjX?http://docs.python.org/3/reference/import.html#import-mod-attrsX Import-related module attributestr Xfile-handler-objectsr (jjXIhttp://docs.python.org/3/library/urllib.request.html#file-handler-objectsXFileHandler Objectstr X match-objectsr (jjX6http://docs.python.org/3/library/re.html#match-objectsX Match Objectstr X tut-whatnowr (jjX:http://docs.python.org/3/tutorial/whatnow.html#tut-whatnowX What Now?tr X new-emailr (jjX4http://docs.python.org/3/whatsnew/3.3.html#new-emailXemailtr Xposix-contentsr (jjX:http://docs.python.org/3/library/posix.html#posix-contentsXNotable Module Contentstr Xwithr (jjX;http://docs.python.org/3/reference/compound_stmts.html#withXThe with statementtr Xusing-on-envvarsr (jjX<http://docs.python.org/3/using/cmdline.html#using-on-envvarsXEnvironment variablestr Xwriter-interfacer (jjX@http://docs.python.org/3/library/formatter.html#writer-interfaceXThe Writer Interfacetr Xunittest-sectionr (jjX;http://docs.python.org/3/whatsnew/2.7.html#unittest-sectionXUpdated module: unittesttr X tut-stringsr (jjX?http://docs.python.org/3/tutorial/introduction.html#tut-stringsXStringstr Xzipinfo-objectsr (jjX=http://docs.python.org/3/library/zipfile.html#zipinfo-objectsXZipInfo Objectstr Xctypes-loading-shared-librariesr (jjXLhttp://docs.python.org/3/library/ctypes.html#ctypes-loading-shared-librariesXLoading shared librariestr Xasr (jjX9http://docs.python.org/3/reference/compound_stmts.html#asXThe with statementtr Xattributes-ns-objectsr (jjXJhttp://docs.python.org/3/library/xml.sax.reader.html#attributes-ns-objectsXThe AttributesNS Interfacetr Xtut-internet-accessr (jjXAhttp://docs.python.org/3/tutorial/stdlib.html#tut-internet-accessXInternet Accesstr Xpep-405r (jjX2http://docs.python.org/3/whatsnew/3.3.html#pep-405XPEP 405: Virtual Environmentstr X importingr (jjX4http://docs.python.org/3/c-api/import.html#importingXImporting Modulestr X functionsr (jjX6http://docs.python.org/3/library/winreg.html#functionsX Functionstr X csv-examplesr (jjX6http://docs.python.org/3/library/csv.html#csv-examplesXExamplestr Xtut-moremodulesr (jjX>http://docs.python.org/3/tutorial/modules.html#tut-moremodulesXMore on Modulestr Xtext-transformsr (jjX<http://docs.python.org/3/library/codecs.html#text-transformsXText Transformstr Xbuilding-on-windowsr (jjXChttp://docs.python.org/3/extending/windows.html#building-on-windowsX(Building C and C++ Extensions on Windowstr Xtut-instanceobjectsr (jjXBhttp://docs.python.org/3/tutorial/classes.html#tut-instanceobjectsXInstance Objectstr X tut-fp-errorr (jjXAhttp://docs.python.org/3/tutorial/floatingpoint.html#tut-fp-errorXRepresentation Errortr X msi-directoryr (jjX:http://docs.python.org/3/library/msilib.html#msi-directoryXDirectory Objectstr Xgenexprr (jjX;http://docs.python.org/3/reference/expressions.html#genexprXGenerator expressionstr Xfunc-strr (jjX8http://docs.python.org/3/library/functions.html#func-strX-tr Xtut-classdefinitionr (jjXBhttp://docs.python.org/3/tutorial/classes.html#tut-classdefinitionXClass Definition Syntaxtr Xcontent-handler-objectsr (jjXMhttp://docs.python.org/3/library/xml.sax.handler.html#content-handler-objectsXContentHandler Objectstr Xelser (jjX;http://docs.python.org/3/reference/compound_stmts.html#elseXThe if statementtr X,optparse-querying-manipulating-option-parserr (jjX[http://docs.python.org/3/library/optparse.html#optparse-querying-manipulating-option-parserX,Querying and manipulating your option parsertr Xctypes-type-conversionsr (jjXDhttp://docs.python.org/3/library/ctypes.html#ctypes-type-conversionsXType conversionstr Xextending-distutilsr (jjXEhttp://docs.python.org/3/distutils/extending.html#extending-distutilsXExtending Distutilstr Xwhatsnew34-win-cert-storer (jjXDhttp://docs.python.org/3/whatsnew/3.4.html#whatsnew34-win-cert-storeX-tr Xcallsr (jjX9http://docs.python.org/3/reference/expressions.html#callsXCallstr Xpep-314r (jjX2http://docs.python.org/3/whatsnew/2.5.html#pep-314X3PEP 314: Metadata for Python Software Packages v1.1tr X bytes-methodsr (jjX<http://docs.python.org/3/library/stdtypes.html#bytes-methodsXBytes and Bytearray Operationstr Xoperator-summaryr (jjXDhttp://docs.python.org/3/reference/expressions.html#operator-summaryXOperator precedencetr Xstringsr (jjX@http://docs.python.org/3/reference/lexical_analysis.html#stringsXString and Bytes literalstr uXc:memberr }r (XPy_buffer.internalr (jjX?http://docs.python.org/3/c-api/buffer.html#c.Py_buffer.internalX-tr XPyModuleDef.m_reloadr (jjXAhttp://docs.python.org/3/c-api/module.html#c.PyModuleDef.m_reloadX-tr X#PySequenceMethods.sq_inplace_concatr (jjXQhttp://docs.python.org/3/c-api/typeobj.html#c.PySequenceMethods.sq_inplace_concatX-tr XPyTypeObject.tp_descr_setr (jjXGhttp://docs.python.org/3/c-api/typeobj.html#c.PyTypeObject.tp_descr_setX-tr XPyObject.ob_typer (jjX>http://docs.python.org/3/c-api/typeobj.html#c.PyObject.ob_typeX-tr XPyModuleDef.m_namer (jjX?http://docs.python.org/3/c-api/module.html#c.PyModuleDef.m_nameX-tr XPySequenceMethods.sq_concatr (jjXIhttp://docs.python.org/3/c-api/typeobj.html#c.PySequenceMethods.sq_concatX-tr XPy_buffer.itemsizer (jjX?http://docs.python.org/3/c-api/buffer.html#c.Py_buffer.itemsizeX-tr XPyModuleDef.m_docr (jjX>http://docs.python.org/3/c-api/module.html#c.PyModuleDef.m_docX-tr XPyTypeObject.tp_weaklistr (jjXFhttp://docs.python.org/3/c-api/typeobj.html#c.PyTypeObject.tp_weaklistX-tr XPyTypeObject.tp_freer (jjXBhttp://docs.python.org/3/c-api/typeobj.html#c.PyTypeObject.tp_freeX-tr XPy_buffer.shaper (jjX<http://docs.python.org/3/c-api/buffer.html#c.Py_buffer.shapeX-tr XPyTypeObject.tp_getattror (jjXFhttp://docs.python.org/3/c-api/typeobj.html#c.PyTypeObject.tp_getattroX-tr XPy_buffer.stridesr (jjX>http://docs.python.org/3/c-api/buffer.html#c.Py_buffer.stridesX-tr X tp_as_mappingr (jjX;http://docs.python.org/3/c-api/typeobj.html#c.tp_as_mappingX-tr XPyModuleDef.m_sizer (jjX?http://docs.python.org/3/c-api/module.html#c.PyModuleDef.m_sizeX-tr X Py_buffer.bufr (jjX:http://docs.python.org/3/c-api/buffer.html#c.Py_buffer.bufX-tr XPyTypeObject.tp_freesr (jjXChttp://docs.python.org/3/c-api/typeobj.html#c.PyTypeObject.tp_freesX-tr XPySequenceMethods.sq_lengthr (jjXIhttp://docs.python.org/3/c-api/typeobj.html#c.PySequenceMethods.sq_lengthX-tr XPySequenceMethods.sq_ass_itemr (jjXKhttp://docs.python.org/3/c-api/typeobj.html#c.PySequenceMethods.sq_ass_itemX-tr XPyTypeObject.tp_initr (jjXBhttp://docs.python.org/3/c-api/typeobj.html#c.PyTypeObject.tp_initX-tr X#PySequenceMethods.sq_inplace_repeatr (jjXQhttp://docs.python.org/3/c-api/typeobj.html#c.PySequenceMethods.sq_inplace_repeatX-tr XPyTypeObject.tp_basicsizer (jjXGhttp://docs.python.org/3/c-api/typeobj.html#c.PyTypeObject.tp_basicsizeX-tr XPyTypeObject.tp_itemsizer (jjXFhttp://docs.python.org/3/c-api/typeobj.html#c.PyTypeObject.tp_itemsizeX-tr XPyModuleDef.m_traverser (jjXChttp://docs.python.org/3/c-api/module.html#c.PyModuleDef.m_traverseX-tr XPyTypeObject.tp_membersr (jjXEhttp://docs.python.org/3/c-api/typeobj.html#c.PyTypeObject.tp_membersX-tr XPy_buffer.readonlyr (jjX?http://docs.python.org/3/c-api/buffer.html#c.Py_buffer.readonlyX-tr XPyTypeObject.tp_reservedr (jjXFhttp://docs.python.org/3/c-api/typeobj.html#c.PyTypeObject.tp_reservedX-tr XPyTypeObject.tp_printr (jjXChttp://docs.python.org/3/c-api/typeobj.html#c.PyTypeObject.tp_printX-tr! XPyTypeObject.tp_traverser" (jjXFhttp://docs.python.org/3/c-api/typeobj.html#c.PyTypeObject.tp_traverseX-tr# XPyModuleDef.m_methodsr$ (jjXBhttp://docs.python.org/3/c-api/module.html#c.PyModuleDef.m_methodsX-tr% XPyTypeObject.tp_dictr& (jjXBhttp://docs.python.org/3/c-api/typeobj.html#c.PyTypeObject.tp_dictX-tr' XPyTypeObject.tp_basesr( (jjXChttp://docs.python.org/3/c-api/typeobj.html#c.PyTypeObject.tp_basesX-tr) XPyTypeObject.tp_getattrr* (jjXEhttp://docs.python.org/3/c-api/typeobj.html#c.PyTypeObject.tp_getattrX-tr+ XPyMappingMethods.mp_lengthr, (jjXHhttp://docs.python.org/3/c-api/typeobj.html#c.PyMappingMethods.mp_lengthX-tr- XPyTypeObject.tp_allocr. (jjXChttp://docs.python.org/3/c-api/typeobj.html#c.PyTypeObject.tp_allocX-tr/ XPyTypeObject.tp_docr0 (jjXAhttp://docs.python.org/3/c-api/typeobj.html#c.PyTypeObject.tp_docX-tr1 X Py_buffer.lenr2 (jjX:http://docs.python.org/3/c-api/buffer.html#c.Py_buffer.lenX-tr3 XPyTypeObject.tp_clearr4 (jjXChttp://docs.python.org/3/c-api/typeobj.html#c.PyTypeObject.tp_clearX-tr5 XPyTypeObject.tp_setattror6 (jjXFhttp://docs.python.org/3/c-api/typeobj.html#c.PyTypeObject.tp_setattroX-tr7 XPySequenceMethods.sq_repeatr8 (jjXIhttp://docs.python.org/3/c-api/typeobj.html#c.PySequenceMethods.sq_repeatX-tr9 XPyModuleDef.m_baser: (jjX?http://docs.python.org/3/c-api/module.html#c.PyModuleDef.m_baseX-tr; XPyBufferProcs.bf_releasebufferr< (jjXLhttp://docs.python.org/3/c-api/typeobj.html#c.PyBufferProcs.bf_releasebufferX-tr= XPyTypeObject.tp_getsetr> (jjXDhttp://docs.python.org/3/c-api/typeobj.html#c.PyTypeObject.tp_getsetX-tr? XPyModuleDef.m_freer@ (jjX?http://docs.python.org/3/c-api/module.html#c.PyModuleDef.m_freeX-trA XPyTypeObject.tp_newrB (jjXAhttp://docs.python.org/3/c-api/typeobj.html#c.PyTypeObject.tp_newX-trC XPyTypeObject.tp_hashrD (jjXBhttp://docs.python.org/3/c-api/typeobj.html#c.PyTypeObject.tp_hashX-trE XPyTypeObject.tp_subclassesrF (jjXHhttp://docs.python.org/3/c-api/typeobj.html#c.PyTypeObject.tp_subclassesX-trG XPyTypeObject.tp_baserH (jjXBhttp://docs.python.org/3/c-api/typeobj.html#c.PyTypeObject.tp_baseX-trI XPyObject._ob_nextrJ (jjX?http://docs.python.org/3/c-api/typeobj.html#c.PyObject._ob_nextX-trK X!PyMappingMethods.mp_ass_subscriptrL (jjXOhttp://docs.python.org/3/c-api/typeobj.html#c.PyMappingMethods.mp_ass_subscriptX-trM X Py_buffer.objrN (jjX:http://docs.python.org/3/c-api/buffer.html#c.Py_buffer.objX-trO XPySequenceMethods.sq_containsrP (jjXKhttp://docs.python.org/3/c-api/typeobj.html#c.PySequenceMethods.sq_containsX-trQ XPyTypeObject.tp_weaklistoffsetrR (jjXLhttp://docs.python.org/3/c-api/typeobj.html#c.PyTypeObject.tp_weaklistoffsetX-trS XPyTypeObject.tp_deallocrT (jjXEhttp://docs.python.org/3/c-api/typeobj.html#c.PyTypeObject.tp_deallocX-trU XPyModuleDef.m_clearrV (jjX@http://docs.python.org/3/c-api/module.html#c.PyModuleDef.m_clearX-trW XPyTypeObject.tp_iterrX (jjXBhttp://docs.python.org/3/c-api/typeobj.html#c.PyTypeObject.tp_iterX-trY XPyTypeObject.tp_descr_getrZ (jjXGhttp://docs.python.org/3/c-api/typeobj.html#c.PyTypeObject.tp_descr_getX-tr[ XPyObject.ob_refcntr\ (jjX@http://docs.python.org/3/c-api/typeobj.html#c.PyObject.ob_refcntX-tr] XPyTypeObject.tp_allocsr^ (jjXDhttp://docs.python.org/3/c-api/typeobj.html#c.PyTypeObject.tp_allocsX-tr_ XPyTypeObject.tp_richcomparer` (jjXIhttp://docs.python.org/3/c-api/typeobj.html#c.PyTypeObject.tp_richcompareX-tra XPyTypeObject.tp_reprrb (jjXBhttp://docs.python.org/3/c-api/typeobj.html#c.PyTypeObject.tp_reprX-trc XPyBufferProcs.bf_getbufferrd (jjXHhttp://docs.python.org/3/c-api/typeobj.html#c.PyBufferProcs.bf_getbufferX-tre XPyTypeObject.tp_dictoffsetrf (jjXHhttp://docs.python.org/3/c-api/typeobj.html#c.PyTypeObject.tp_dictoffsetX-trg XPyObject._ob_prevrh (jjX?http://docs.python.org/3/c-api/typeobj.html#c.PyObject._ob_prevX-tri XPyTypeObject.tp_strrj (jjXAhttp://docs.python.org/3/c-api/typeobj.html#c.PyTypeObject.tp_strX-trk XPyTypeObject.tp_mrorl (jjXAhttp://docs.python.org/3/c-api/typeobj.html#c.PyTypeObject.tp_mroX-trm XPyTypeObject.tp_as_bufferrn (jjXGhttp://docs.python.org/3/c-api/typeobj.html#c.PyTypeObject.tp_as_bufferX-tro XPyTypeObject.tp_cacherp (jjXChttp://docs.python.org/3/c-api/typeobj.html#c.PyTypeObject.tp_cacheX-trq XPy_buffer.ndimrr (jjX;http://docs.python.org/3/c-api/buffer.html#c.Py_buffer.ndimX-trs XPyTypeObject.tp_iternextrt (jjXFhttp://docs.python.org/3/c-api/typeobj.html#c.PyTypeObject.tp_iternextX-tru XPyTypeObject.tp_callrv (jjXBhttp://docs.python.org/3/c-api/typeobj.html#c.PyTypeObject.tp_callX-trw XPyTypeObject.tp_maxallocrx (jjXFhttp://docs.python.org/3/c-api/typeobj.html#c.PyTypeObject.tp_maxallocX-try XPyTypeObject.tp_nextrz (jjXBhttp://docs.python.org/3/c-api/typeobj.html#c.PyTypeObject.tp_nextX-tr{ X tp_as_numberr| (jjX:http://docs.python.org/3/c-api/typeobj.html#c.tp_as_numberX-tr} XPyTypeObject.tp_finalizer~ (jjXFhttp://docs.python.org/3/c-api/typeobj.html#c.PyTypeObject.tp_finalizeX-tr XPyTypeObject.tp_methodsr (jjXEhttp://docs.python.org/3/c-api/typeobj.html#c.PyTypeObject.tp_methodsX-tr XPyTypeObject.tp_setattrr (jjXEhttp://docs.python.org/3/c-api/typeobj.html#c.PyTypeObject.tp_setattrX-tr XPyTypeObject.tp_is_gcr (jjXChttp://docs.python.org/3/c-api/typeobj.html#c.PyTypeObject.tp_is_gcX-tr XPyTypeObject.tp_namer (jjXBhttp://docs.python.org/3/c-api/typeobj.html#c.PyTypeObject.tp_nameX-tr XPySequenceMethods.sq_itemr (jjXGhttp://docs.python.org/3/c-api/typeobj.html#c.PySequenceMethods.sq_itemX-tr XPy_buffer.suboffsetsr (jjXAhttp://docs.python.org/3/c-api/buffer.html#c.Py_buffer.suboffsetsX-tr Xtp_as_sequencer (jjX<http://docs.python.org/3/c-api/typeobj.html#c.tp_as_sequenceX-tr XPyVarObject.ob_sizer (jjXAhttp://docs.python.org/3/c-api/typeobj.html#c.PyVarObject.ob_sizeX-tr XPyTypeObject.tp_flagsr (jjXChttp://docs.python.org/3/c-api/typeobj.html#c.PyTypeObject.tp_flagsX-tr XPy_buffer.formatr (jjX=http://docs.python.org/3/c-api/buffer.html#c.Py_buffer.formatX-tr XPyMappingMethods.mp_subscriptr (jjXKhttp://docs.python.org/3/c-api/typeobj.html#c.PyMappingMethods.mp_subscriptX-tr uXpy:classr }r (Xhttp.cookiejar.LWPCookieJarr (jjXPhttp://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.LWPCookieJarX-tr X nntplib.NNTPr (jjX:http://docs.python.org/3/library/nntplib.html#nntplib.NNTPX-tr X"http.server.BaseHTTPRequestHandlerr (jjXThttp://docs.python.org/3/library/http.server.html#http.server.BaseHTTPRequestHandlerX-tr Xdatetime.timedeltar (jjXAhttp://docs.python.org/3/library/datetime.html#datetime.timedeltaX-tr Xprofile.Profiler (jjX=http://docs.python.org/3/library/profile.html#profile.ProfileX-tr Xurllib.request.HTTPHandlerr (jjXOhttp://docs.python.org/3/library/urllib.request.html#urllib.request.HTTPHandlerX-tr Xmsilib.Controlr (jjX;http://docs.python.org/3/library/msilib.html#msilib.ControlX-tr X"importlib.machinery.FrozenImporterr (jjXRhttp://docs.python.org/3/library/importlib.html#importlib.machinery.FrozenImporterX-tr Xpkgutil.ImpImporterr (jjXAhttp://docs.python.org/3/library/pkgutil.html#pkgutil.ImpImporterX-tr X"unittest.mock.NonCallableMagicMockr (jjXVhttp://docs.python.org/3/library/unittest.mock.html#unittest.mock.NonCallableMagicMockX-tr X#urllib.request.HTTPBasicAuthHandlerr (jjXXhttp://docs.python.org/3/library/urllib.request.html#urllib.request.HTTPBasicAuthHandlerX-tr Xinspect.Parameterr (jjX?http://docs.python.org/3/library/inspect.html#inspect.ParameterX-tr Xcollections.abc.Iteratorr (jjXNhttp://docs.python.org/3/library/collections.abc.html#collections.abc.IteratorX-tr Xinspect.Signaturer (jjX?http://docs.python.org/3/library/inspect.html#inspect.SignatureX-tr Xtkinter.ttk.Progressbarr (jjXIhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.ProgressbarX-tr Xmailbox.BabylMessager (jjXBhttp://docs.python.org/3/library/mailbox.html#mailbox.BabylMessageX-tr Xcollections.abc.Sequencer (jjXNhttp://docs.python.org/3/library/collections.abc.html#collections.abc.SequenceX-tr Xasynchat.async_chatr (jjXBhttp://docs.python.org/3/library/asynchat.html#asynchat.async_chatX-tr Xtypes.ModuleTyper (jjX<http://docs.python.org/3/library/types.html#types.ModuleTypeX-tr Xsocketserver.BaseServerr (jjXJhttp://docs.python.org/3/library/socketserver.html#socketserver.BaseServerX-tr Ximportlib.machinery.PathFinderr (jjXNhttp://docs.python.org/3/library/importlib.html#importlib.machinery.PathFinderX-tr Xasyncore.dispatcherr (jjXBhttp://docs.python.org/3/library/asyncore.html#asyncore.dispatcherX-tr Xxml.dom.pulldom.DOMEventStreamr (jjXThttp://docs.python.org/3/library/xml.dom.pulldom.html#xml.dom.pulldom.DOMEventStreamX-tr Xtkinter.ttk.Notebookr (jjXFhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.NotebookX-tr Xemail.parser.FeedParserr (jjXJhttp://docs.python.org/3/library/email.parser.html#email.parser.FeedParserX-tr X,email.headerregistry.ContentTransferEncodingr (jjXghttp://docs.python.org/3/library/email.headerregistry.html#email.headerregistry.ContentTransferEncodingX-tr Xemail.message.MIMEPartr (jjXQhttp://docs.python.org/3/library/email.contentmanager.html#email.message.MIMEPartX-tr X"xml.sax.xmlreader.AttributesNSImplr (jjXWhttp://docs.python.org/3/library/xml.sax.reader.html#xml.sax.xmlreader.AttributesNSImplX-tr Xlistr (jjX3http://docs.python.org/3/library/stdtypes.html#listX-tr X shelve.Shelfr (jjX9http://docs.python.org/3/library/shelve.html#shelve.ShelfX-tr X multiprocessing.pool.AsyncResultr (jjXVhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.pool.AsyncResultX-tr Xasyncore.file_wrapperr (jjXDhttp://docs.python.org/3/library/asyncore.html#asyncore.file_wrapperX-tr X array.arrayr (jjX7http://docs.python.org/3/library/array.html#array.arrayX-tr Xlogging.handlers.SysLogHandlerr (jjXUhttp://docs.python.org/3/library/logging.handlers.html#logging.handlers.SysLogHandlerX-tr X numbers.Realr (jjX:http://docs.python.org/3/library/numbers.html#numbers.RealX-tr Xurllib.request.ProxyHandlerr (jjXPhttp://docs.python.org/3/library/urllib.request.html#urllib.request.ProxyHandlerX-tr Xcollections.abc.MappingViewr (jjXQhttp://docs.python.org/3/library/collections.abc.html#collections.abc.MappingViewX-tr Xsubprocess.Popenr (jjXAhttp://docs.python.org/3/library/subprocess.html#subprocess.PopenX-tr X%xmlrpc.server.CGIXMLRPCRequestHandlerr (jjXYhttp://docs.python.org/3/library/xmlrpc.server.html#xmlrpc.server.CGIXMLRPCRequestHandlerX-tr Xcollections.abc.Containerr (jjXOhttp://docs.python.org/3/library/collections.abc.html#collections.abc.ContainerX-tr Xtkinter.tix.StdButtonBoxr (jjXJhttp://docs.python.org/3/library/tkinter.tix.html#tkinter.tix.StdButtonBoxX-tr Xwsgiref.handlers.CGIHandlerr (jjXIhttp://docs.python.org/3/library/wsgiref.html#wsgiref.handlers.CGIHandlerX-tr Xwsgiref.handlers.SimpleHandlerr (jjXLhttp://docs.python.org/3/library/wsgiref.html#wsgiref.handlers.SimpleHandlerX-tr Xtkinter.tix.tixCommandr (jjXHhttp://docs.python.org/3/library/tkinter.tix.html#tkinter.tix.tixCommandX-tr Xos.terminal_sizer (jjX9http://docs.python.org/3/library/os.html#os.terminal_sizeX-tr Xpprint.PrettyPrinterr (jjXAhttp://docs.python.org/3/library/pprint.html#pprint.PrettyPrinterX-tr X lzma.LZMAFiler (jjX8http://docs.python.org/3/library/lzma.html#lzma.LZMAFileX-tr X logging.handlers.DatagramHandlerr (jjXWhttp://docs.python.org/3/library/logging.handlers.html#logging.handlers.DatagramHandlerX-tr Xdecimal.DefaultContextr (jjXDhttp://docs.python.org/3/library/decimal.html#decimal.DefaultContextX-tr Xurllib.request.DataHandlerr (jjXOhttp://docs.python.org/3/library/urllib.request.html#urllib.request.DataHandlerX-tr X#distutils.command.build_py.build_pyr (jjXRhttp://docs.python.org/3/distutils/apiref.html#distutils.command.build_py.build_pyX-tr Xcalendar.LocaleTextCalendarr (jjXJhttp://docs.python.org/3/library/calendar.html#calendar.LocaleTextCalendarX-tr Xmultiprocessing.Connectionr(jjXPhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.ConnectionX-trX chunk.Chunkr(jjX7http://docs.python.org/3/library/chunk.html#chunk.ChunkX-trXimportlib.abc.ExecutionLoaderr(jjXMhttp://docs.python.org/3/library/importlib.html#importlib.abc.ExecutionLoaderX-trXctypes.c_longdoubler(jjX@http://docs.python.org/3/library/ctypes.html#ctypes.c_longdoubleX-trXasyncio.StreamWriterr(jjXIhttp://docs.python.org/3/library/asyncio-stream.html#asyncio.StreamWriterX-tr X%urllib.request.ProxyDigestAuthHandlerr (jjXZhttp://docs.python.org/3/library/urllib.request.html#urllib.request.ProxyDigestAuthHandlerX-tr Xxml.sax.handler.ContentHandlerr (jjXThttp://docs.python.org/3/library/xml.sax.handler.html#xml.sax.handler.ContentHandlerX-tr Xtypes.SimpleNamespacer(jjXAhttp://docs.python.org/3/library/types.html#types.SimpleNamespaceX-trX!xml.etree.ElementTree.TreeBuilderr(jjX]http://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.TreeBuilderX-trXio.BufferedRWPairr(jjX:http://docs.python.org/3/library/io.html#io.BufferedRWPairX-trX$multiprocessing.managers.SyncManagerr(jjXZhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.managers.SyncManagerX-trXtkinter.tix.Tkr(jjX@http://docs.python.org/3/library/tkinter.tix.html#tkinter.tix.TkX-trXmultiprocessing.SimpleQueuer(jjXQhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.SimpleQueueX-trXnumbers.Numberr(jjX<http://docs.python.org/3/library/numbers.html#numbers.NumberX-trXtkinter.tix.DirTreer(jjXEhttp://docs.python.org/3/library/tkinter.tix.html#tkinter.tix.DirTreeX-trXipaddress.IPv4Interfacer(jjXGhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4InterfaceX-trX dis.Bytecoder (jjX6http://docs.python.org/3/library/dis.html#dis.BytecodeX-tr!Xmsilib.Featurer"(jjX;http://docs.python.org/3/library/msilib.html#msilib.FeatureX-tr#Xconcurrent.futures.Futurer$(jjXRhttp://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.FutureX-tr%Xcodeop.CommandCompilerr&(jjXChttp://docs.python.org/3/library/codeop.html#codeop.CommandCompilerX-tr'Xdoctest.DocTestRunnerr((jjXChttp://docs.python.org/3/library/doctest.html#doctest.DocTestRunnerX-tr)Xtracemalloc.Snapshotr*(jjXFhttp://docs.python.org/3/library/tracemalloc.html#tracemalloc.SnapshotX-tr+Xdecimal.Roundedr,(jjX=http://docs.python.org/3/library/decimal.html#decimal.RoundedX-tr-Xthreading.BoundedSemaphorer.(jjXJhttp://docs.python.org/3/library/threading.html#threading.BoundedSemaphoreX-tr/Xemail.parser.BytesFeedParserr0(jjXOhttp://docs.python.org/3/library/email.parser.html#email.parser.BytesFeedParserX-tr1Xtracemalloc.StatisticDiffr2(jjXKhttp://docs.python.org/3/library/tracemalloc.html#tracemalloc.StatisticDiffX-tr3X asyncio.Eventr4(jjX@http://docs.python.org/3/library/asyncio-sync.html#asyncio.EventX-tr5Xformatter.AbstractWriterr6(jjXHhttp://docs.python.org/3/library/formatter.html#formatter.AbstractWriterX-tr7Xctypes.c_char_pr8(jjX<http://docs.python.org/3/library/ctypes.html#ctypes.c_char_pX-tr9Xcollections.abc.KeysViewr:(jjXNhttp://docs.python.org/3/library/collections.abc.html#collections.abc.KeysViewX-tr;X ctypes.c_uintr<(jjX:http://docs.python.org/3/library/ctypes.html#ctypes.c_uintX-tr=Xlogging.StreamHandlerr>(jjXLhttp://docs.python.org/3/library/logging.handlers.html#logging.StreamHandlerX-tr?Xhtml.parser.HTMLParserr@(jjXHhttp://docs.python.org/3/library/html.parser.html#html.parser.HTMLParserX-trAXfileinput.FileInputrB(jjXChttp://docs.python.org/3/library/fileinput.html#fileinput.FileInputX-trCXimaplib.IMAP4_SSLrD(jjX?http://docs.python.org/3/library/imaplib.html#imaplib.IMAP4_SSLX-trEXssl.SSLContextrF(jjX8http://docs.python.org/3/library/ssl.html#ssl.SSLContextX-trGXemail.generator.GeneratorrH(jjXOhttp://docs.python.org/3/library/email.generator.html#email.generator.GeneratorX-trIXtime.struct_timerJ(jjX;http://docs.python.org/3/library/time.html#time.struct_timeX-trKXasyncio.SubprocessProtocolrL(jjXQhttp://docs.python.org/3/library/asyncio-protocol.html#asyncio.SubprocessProtocolX-trMXtkinter.tix.DirSelectDialogrN(jjXMhttp://docs.python.org/3/library/tkinter.tix.html#tkinter.tix.DirSelectDialogX-trOXtkinter.tix.TListrP(jjXChttp://docs.python.org/3/library/tkinter.tix.html#tkinter.tix.TListX-trQXshelve.DbfilenameShelfrR(jjXChttp://docs.python.org/3/library/shelve.html#shelve.DbfilenameShelfX-trSXvenv.EnvBuilderrT(jjX:http://docs.python.org/3/library/venv.html#venv.EnvBuilderX-trUXtkinter.tix.NoteBookrV(jjXFhttp://docs.python.org/3/library/tkinter.tix.html#tkinter.tix.NoteBookX-trWX(xmlrpc.server.SimpleXMLRPCRequestHandlerrX(jjX\http://docs.python.org/3/library/xmlrpc.server.html#xmlrpc.server.SimpleXMLRPCRequestHandlerX-trYXxml.etree.ElementTree.ElementrZ(jjXYhttp://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.ElementX-tr[Xthreading.Timerr\(jjX?http://docs.python.org/3/library/threading.html#threading.TimerX-tr]Xdistutils.ccompiler.CCompilerr^(jjXLhttp://docs.python.org/3/distutils/apiref.html#distutils.ccompiler.CCompilerX-tr_Xmodulefinder.ModuleFinderr`(jjXLhttp://docs.python.org/3/library/modulefinder.html#modulefinder.ModuleFinderX-traXurllib.request.URLopenerrb(jjXMhttp://docs.python.org/3/library/urllib.request.html#urllib.request.URLopenerX-trcXcollections.abc.Setrd(jjXIhttp://docs.python.org/3/library/collections.abc.html#collections.abc.SetX-treXmultiprocessing.Lockrf(jjXJhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.LockX-trgXthreading.Barrierrh(jjXAhttp://docs.python.org/3/library/threading.html#threading.BarrierX-triXtracemalloc.Filterrj(jjXDhttp://docs.python.org/3/library/tracemalloc.html#tracemalloc.FilterX-trkX test.support.EnvironmentVarGuardrl(jjXKhttp://docs.python.org/3/library/test.html#test.support.EnvironmentVarGuardX-trmX ftplib.FTPrn(jjX7http://docs.python.org/3/library/ftplib.html#ftplib.FTPX-troXmailbox.MMDFMessagerp(jjXAhttp://docs.python.org/3/library/mailbox.html#mailbox.MMDFMessageX-trqXos.sched_paramrr(jjX7http://docs.python.org/3/library/os.html#os.sched_paramX-trsX mailbox.MHrt(jjX8http://docs.python.org/3/library/mailbox.html#mailbox.MHX-truXnntplib.NNTP_SSLrv(jjX>http://docs.python.org/3/library/nntplib.html#nntplib.NNTP_SSLX-trwXdatetime.timezonerx(jjX@http://docs.python.org/3/library/datetime.html#datetime.timezoneX-tryXemail.mime.message.MIMEMessagerz(jjXOhttp://docs.python.org/3/library/email.mime.html#email.mime.message.MIMEMessageX-tr{Xctypes.c_void_pr|(jjX<http://docs.python.org/3/library/ctypes.html#ctypes.c_void_pX-tr}Xxml.dom.pulldom.SAX2DOMr~(jjXMhttp://docs.python.org/3/library/xml.dom.pulldom.html#xml.dom.pulldom.SAX2DOMX-trXemail.headerregistry.BaseHeaderr(jjXZhttp://docs.python.org/3/library/email.headerregistry.html#email.headerregistry.BaseHeaderX-trX&concurrent.futures.ProcessPoolExecutorr(jjX_http://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.ProcessPoolExecutorX-trXtkinter.ttk.Styler(jjXChttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.StyleX-trX&argparse.ArgumentDefaultsHelpFormatterr(jjXUhttp://docs.python.org/3/library/argparse.html#argparse.ArgumentDefaultsHelpFormatterX-trXimportlib.abc.FileLoaderr(jjXHhttp://docs.python.org/3/library/importlib.html#importlib.abc.FileLoaderX-trXturtle.RawTurtler(jjX=http://docs.python.org/3/library/turtle.html#turtle.RawTurtleX-trXunittest.TestCaser(jjX@http://docs.python.org/3/library/unittest.html#unittest.TestCaseX-trXurllib.request.Requestr(jjXKhttp://docs.python.org/3/library/urllib.request.html#urllib.request.RequestX-trX xml.sax.xmlreader.AttributesImplr(jjXUhttp://docs.python.org/3/library/xml.sax.reader.html#xml.sax.xmlreader.AttributesImplX-trXthreading.Eventr(jjX?http://docs.python.org/3/library/threading.html#threading.EventX-trXemail.headerregistry.Addressr(jjXWhttp://docs.python.org/3/library/email.headerregistry.html#email.headerregistry.AddressX-trXcollections.abc.MutableSequencer(jjXUhttp://docs.python.org/3/library/collections.abc.html#collections.abc.MutableSequenceX-trXasyncio.Semaphorer(jjXDhttp://docs.python.org/3/library/asyncio-sync.html#asyncio.SemaphoreX-trXpathlib.WindowsPathr(jjXAhttp://docs.python.org/3/library/pathlib.html#pathlib.WindowsPathX-trXlogging.NullHandlerr(jjXJhttp://docs.python.org/3/library/logging.handlers.html#logging.NullHandlerX-trX"logging.handlers.NTEventLogHandlerr(jjXYhttp://docs.python.org/3/library/logging.handlers.html#logging.handlers.NTEventLogHandlerX-trX csv.excelr(jjX3http://docs.python.org/3/library/csv.html#csv.excelX-trXcsv.unix_dialectr(jjX:http://docs.python.org/3/library/csv.html#csv.unix_dialectX-trX pstats.Statsr(jjX:http://docs.python.org/3/library/profile.html#pstats.StatsX-trXasyncio.StreamReaderr(jjXIhttp://docs.python.org/3/library/asyncio-stream.html#asyncio.StreamReaderX-trXurllib.parse.ParseResultBytesr(jjXPhttp://docs.python.org/3/library/urllib.parse.html#urllib.parse.ParseResultBytesX-trXurllib.parse.DefragResultBytesr(jjXQhttp://docs.python.org/3/library/urllib.parse.html#urllib.parse.DefragResultBytesX-trXtkinter.tix.CheckListr(jjXGhttp://docs.python.org/3/library/tkinter.tix.html#tkinter.tix.CheckListX-trXmailbox.MHMessager(jjX?http://docs.python.org/3/library/mailbox.html#mailbox.MHMessageX-trXdoctest.Exampler(jjX=http://docs.python.org/3/library/doctest.html#doctest.ExampleX-trX turtle.Shaper(jjX9http://docs.python.org/3/library/turtle.html#turtle.ShapeX-trX'urllib.request.AbstractBasicAuthHandlerr(jjX\http://docs.python.org/3/library/urllib.request.html#urllib.request.AbstractBasicAuthHandlerX-trX tkinter.Tkr(jjX8http://docs.python.org/3/library/tkinter.html#tkinter.TkX-trXsqlite3.Connectionr(jjX@http://docs.python.org/3/library/sqlite3.html#sqlite3.ConnectionX-trXpathlib.PurePosixPathr(jjXChttp://docs.python.org/3/library/pathlib.html#pathlib.PurePosixPathX-trXdecimal.Contextr(jjX=http://docs.python.org/3/library/decimal.html#decimal.ContextX-trXconfigparser.ConfigParserr(jjXLhttp://docs.python.org/3/library/configparser.html#configparser.ConfigParserX-trXdistutils.core.Distributionr(jjXJhttp://docs.python.org/3/distutils/apiref.html#distutils.core.DistributionX-trXtkinter.tix.ExFileSelectBoxr(jjXMhttp://docs.python.org/3/library/tkinter.tix.html#tkinter.tix.ExFileSelectBoxX-trXxmlrpc.client.MultiCallr(jjXKhttp://docs.python.org/3/library/xmlrpc.client.html#xmlrpc.client.MultiCallX-trX turtle.Screenr(jjX:http://docs.python.org/3/library/turtle.html#turtle.ScreenX-trXbdb.Breakpointr(jjX8http://docs.python.org/3/library/bdb.html#bdb.BreakpointX-trXctypes.py_objectr(jjX=http://docs.python.org/3/library/ctypes.html#ctypes.py_objectX-trX-email.headerregistry.ContentDispositionHeaderr(jjXhhttp://docs.python.org/3/library/email.headerregistry.html#email.headerregistry.ContentDispositionHeaderX-trX)importlib.machinery.WindowsRegistryFinderr(jjXYhttp://docs.python.org/3/library/importlib.html#importlib.machinery.WindowsRegistryFinderX-trX reprlib.Reprr(jjX:http://docs.python.org/3/library/reprlib.html#reprlib.ReprX-trXasyncio.Futurer(jjXAhttp://docs.python.org/3/library/asyncio-task.html#asyncio.FutureX-trXtest.support.WarningsRecorderr(jjXHhttp://docs.python.org/3/library/test.html#test.support.WarningsRecorderX-trXdecimal.BasicContextr(jjXBhttp://docs.python.org/3/library/decimal.html#decimal.BasicContextX-trXctypes.c_size_tr(jjX<http://docs.python.org/3/library/ctypes.html#ctypes.c_size_tX-trXemail.header.Headerr(jjXFhttp://docs.python.org/3/library/email.header.html#email.header.HeaderX-trX#xml.sax.xmlreader.IncrementalParserr(jjXXhttp://docs.python.org/3/library/xml.sax.reader.html#xml.sax.xmlreader.IncrementalParserX-trXtkinter.tix.Meterr(jjXChttp://docs.python.org/3/library/tkinter.tix.html#tkinter.tix.MeterX-trXoptparse.OptionParserr(jjXDhttp://docs.python.org/3/library/optparse.html#optparse.OptionParserX-trX ctypes.c_charr(jjX:http://docs.python.org/3/library/ctypes.html#ctypes.c_charX-trXtkinter.tix.LabelEntryr(jjXHhttp://docs.python.org/3/library/tkinter.tix.html#tkinter.tix.LabelEntryX-trXhttp.client.HTTPSConnectionr(jjXMhttp://docs.python.org/3/library/http.client.html#http.client.HTTPSConnectionX-trX abc.ABCMetar(jjX5http://docs.python.org/3/library/abc.html#abc.ABCMetaX-trXlzma.LZMACompressorr(jjX>http://docs.python.org/3/library/lzma.html#lzma.LZMACompressorX-trX ctypes.c_intr(jjX9http://docs.python.org/3/library/ctypes.html#ctypes.c_intX-trXxml.sax.saxutils.XMLFilterBaser(jjXRhttp://docs.python.org/3/library/xml.sax.utils.html#xml.sax.saxutils.XMLFilterBaseX-trXdistutils.cmd.Commandr(jjXDhttp://docs.python.org/3/distutils/apiref.html#distutils.cmd.CommandX-trXmultiprocessing.Barrierr(jjXMhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.BarrierX-trXsmtpd.SMTPServerr(jjX<http://docs.python.org/3/library/smtpd.html#smtpd.SMTPServerX-trX mailbox.mboxr(jjX:http://docs.python.org/3/library/mailbox.html#mailbox.mboxX-trX msilib.Dialogr(jjX:http://docs.python.org/3/library/msilib.html#msilib.DialogX-trX!argparse.MetavarTypeHelpFormatterr(jjXPhttp://docs.python.org/3/library/argparse.html#argparse.MetavarTypeHelpFormatterX-trXcodecs.IncrementalDecoderr(jjXFhttp://docs.python.org/3/library/codecs.html#codecs.IncrementalDecoderX-trXlogging.handlers.SocketHandlerr(jjXUhttp://docs.python.org/3/library/logging.handlers.html#logging.handlers.SocketHandlerX-trX#multiprocessing.connection.Listenerr(jjXYhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.connection.ListenerX-trXturtle.TurtleScreenr(jjX@http://docs.python.org/3/library/turtle.html#turtle.TurtleScreenX-trXjson.JSONEncoderr(jjX;http://docs.python.org/3/library/json.html#json.JSONEncoderX-trX turtle.Vec2Dr(jjX9http://docs.python.org/3/library/turtle.html#turtle.Vec2DX-trXhttp.cookiejar.CookiePolicyr(jjXPhttp://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.CookiePolicyX-tr Xcsv.DictReaderr (jjX8http://docs.python.org/3/library/csv.html#csv.DictReaderX-tr Xdifflib.HtmlDiffr (jjX>http://docs.python.org/3/library/difflib.html#difflib.HtmlDiffX-tr Xemail.mime.base.MIMEBaser(jjXIhttp://docs.python.org/3/library/email.mime.html#email.mime.base.MIMEBaseX-trXtracemalloc.Tracebackr(jjXGhttp://docs.python.org/3/library/tracemalloc.html#tracemalloc.TracebackX-trXctypes.HRESULTr(jjX;http://docs.python.org/3/library/ctypes.html#ctypes.HRESULTX-trXtkinter.tix.PanedWindowr(jjXIhttp://docs.python.org/3/library/tkinter.tix.html#tkinter.tix.PanedWindowX-trX test.support.SuppressCrashReportr(jjXKhttp://docs.python.org/3/library/test.html#test.support.SuppressCrashReportX-trXimportlib.abc.PathEntryFinderr(jjXMhttp://docs.python.org/3/library/importlib.html#importlib.abc.PathEntryFinderX-trXcollections.abc.Iterabler(jjXNhttp://docs.python.org/3/library/collections.abc.html#collections.abc.IterableX-trXunittest.TestLoaderr(jjXBhttp://docs.python.org/3/library/unittest.html#unittest.TestLoaderX-trXio.BufferedReaderr(jjX:http://docs.python.org/3/library/io.html#io.BufferedReaderX-trXmultiprocessing.Processr (jjXMhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.ProcessX-tr!Xstring.Formatterr"(jjX=http://docs.python.org/3/library/string.html#string.FormatterX-tr#X weakref.refr$(jjX9http://docs.python.org/3/library/weakref.html#weakref.refX-tr%Xcode.InteractiveConsoler&(jjXBhttp://docs.python.org/3/library/code.html#code.InteractiveConsoleX-tr'X)logging.handlers.TimedRotatingFileHandlerr((jjX`http://docs.python.org/3/library/logging.handlers.html#logging.handlers.TimedRotatingFileHandlerX-tr)Xselectors.DefaultSelectorr*(jjXIhttp://docs.python.org/3/library/selectors.html#selectors.DefaultSelectorX-tr+Xpathlib.PureWindowsPathr,(jjXEhttp://docs.python.org/3/library/pathlib.html#pathlib.PureWindowsPathX-tr-Xturtle.ScrolledCanvasr.(jjXBhttp://docs.python.org/3/library/turtle.html#turtle.ScrolledCanvasX-tr/X%distutils.command.bdist_msi.bdist_msir0(jjXThttp://docs.python.org/3/distutils/apiref.html#distutils.command.bdist_msi.bdist_msiX-tr1X(importlib.machinery.SourcelessFileLoaderr2(jjXXhttp://docs.python.org/3/library/importlib.html#importlib.machinery.SourcelessFileLoaderX-tr3Xzipfile.PyZipFiler4(jjX?http://docs.python.org/3/library/zipfile.html#zipfile.PyZipFileX-tr5Xthreading.Lockr6(jjX>http://docs.python.org/3/library/threading.html#threading.LockX-tr7Xmsilib.RadioButtonGroupr8(jjXDhttp://docs.python.org/3/library/msilib.html#msilib.RadioButtonGroupX-tr9Xcontextlib.ExitStackr:(jjXEhttp://docs.python.org/3/library/contextlib.html#contextlib.ExitStackX-tr;X imaplib.IMAP4r<(jjX;http://docs.python.org/3/library/imaplib.html#imaplib.IMAP4X-tr=Xlogging.handlers.MemoryHandlerr>(jjXUhttp://docs.python.org/3/library/logging.handlers.html#logging.handlers.MemoryHandlerX-tr?Xjson.JSONDecoderr@(jjX;http://docs.python.org/3/library/json.html#json.JSONDecoderX-trAX&email.headerregistry.ContentTypeHeaderrB(jjXahttp://docs.python.org/3/library/email.headerregistry.html#email.headerregistry.ContentTypeHeaderX-trCXnumbers.RationalrD(jjX>http://docs.python.org/3/library/numbers.html#numbers.RationalX-trEX(wsgiref.simple_server.WSGIRequestHandlerrF(jjXVhttp://docs.python.org/3/library/wsgiref.html#wsgiref.simple_server.WSGIRequestHandlerX-trGXcollections.abc.ItemsViewrH(jjXOhttp://docs.python.org/3/library/collections.abc.html#collections.abc.ItemsViewX-trIXtracemalloc.FramerJ(jjXChttp://docs.python.org/3/library/tracemalloc.html#tracemalloc.FrameX-trKXdecimal.DecimalExceptionrL(jjXFhttp://docs.python.org/3/library/decimal.html#decimal.DecimalExceptionX-trMXasyncio.ProtocolrN(jjXGhttp://docs.python.org/3/library/asyncio-protocol.html#asyncio.ProtocolX-trOXftplib.FTP_TLSrP(jjX;http://docs.python.org/3/library/ftplib.html#ftplib.FTP_TLSX-trQXhttp.cookies.SimpleCookierR(jjXLhttp://docs.python.org/3/library/http.cookies.html#http.cookies.SimpleCookieX-trSXcollections.abc.CallablerT(jjXNhttp://docs.python.org/3/library/collections.abc.html#collections.abc.CallableX-trUXdistutils.core.ExtensionrV(jjXGhttp://docs.python.org/3/distutils/apiref.html#distutils.core.ExtensionX-trWXtest.support.TransientResourcerX(jjXIhttp://docs.python.org/3/library/test.html#test.support.TransientResourceX-trYXlogging.handlers.SMTPHandlerrZ(jjXShttp://docs.python.org/3/library/logging.handlers.html#logging.handlers.SMTPHandlerX-tr[X(xmlrpc.server.DocCGIXMLRPCRequestHandlerr\(jjX\http://docs.python.org/3/library/xmlrpc.server.html#xmlrpc.server.DocCGIXMLRPCRequestHandlerX-tr]Xformatter.NullFormatterr^(jjXGhttp://docs.python.org/3/library/formatter.html#formatter.NullFormatterX-tr_X'importlib.machinery.ExtensionFileLoaderr`(jjXWhttp://docs.python.org/3/library/importlib.html#importlib.machinery.ExtensionFileLoaderX-traXxml.sax.xmlreader.Locatorrb(jjXNhttp://docs.python.org/3/library/xml.sax.reader.html#xml.sax.xmlreader.LocatorX-trcXdistutils.core.Commandrd(jjXEhttp://docs.python.org/3/distutils/apiref.html#distutils.core.CommandX-treXio.TextIOWrapperrf(jjX9http://docs.python.org/3/library/io.html#io.TextIOWrapperX-trgXwsgiref.handlers.BaseHandlerrh(jjXJhttp://docs.python.org/3/library/wsgiref.html#wsgiref.handlers.BaseHandlerX-triXinspect.BoundArgumentsrj(jjXDhttp://docs.python.org/3/library/inspect.html#inspect.BoundArgumentsX-trkXdecimal.Clampedrl(jjX=http://docs.python.org/3/library/decimal.html#decimal.ClampedX-trmXunittest.mock.NonCallableMockrn(jjXQhttp://docs.python.org/3/library/unittest.mock.html#unittest.mock.NonCallableMockX-troX&urllib.request.HTTPDefaultErrorHandlerrp(jjX[http://docs.python.org/3/library/urllib.request.html#urllib.request.HTTPDefaultErrorHandlerX-trqXurllib.request.HTTPSHandlerrr(jjXPhttp://docs.python.org/3/library/urllib.request.html#urllib.request.HTTPSHandlerX-trsXasyncio.DatagramProtocolrt(jjXOhttp://docs.python.org/3/library/asyncio-protocol.html#asyncio.DatagramProtocolX-truXimaplib.IMAP4_streamrv(jjXBhttp://docs.python.org/3/library/imaplib.html#imaplib.IMAP4_streamX-trwX xmlrpc.server.SimpleXMLRPCServerrx(jjXThttp://docs.python.org/3/library/xmlrpc.server.html#xmlrpc.server.SimpleXMLRPCServerX-tryX turtle.RawPenrz(jjX:http://docs.python.org/3/library/turtle.html#turtle.RawPenX-tr{X"multiprocessing.managers.BaseProxyr|(jjXXhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.managers.BaseProxyX-tr}Xctypes.BigEndianStructurer~(jjXFhttp://docs.python.org/3/library/ctypes.html#ctypes.BigEndianStructureX-trXweakref.WeakKeyDictionaryr(jjXGhttp://docs.python.org/3/library/weakref.html#weakref.WeakKeyDictionaryX-trXemail.policy.EmailPolicyr(jjXKhttp://docs.python.org/3/library/email.policy.html#email.policy.EmailPolicyX-trXxml.sax.handler.EntityResolverr(jjXThttp://docs.python.org/3/library/xml.sax.handler.html#xml.sax.handler.EntityResolverX-trXhttp.cookies.BaseCookier(jjXJhttp://docs.python.org/3/library/http.cookies.html#http.cookies.BaseCookieX-trXweakref.finalizer(jjX>http://docs.python.org/3/library/weakref.html#weakref.finalizeX-trXcollections.UserDictr(jjXFhttp://docs.python.org/3/library/collections.html#collections.UserDictX-trXpipes.Templater(jjX:http://docs.python.org/3/library/pipes.html#pipes.TemplateX-trXctypes.LibraryLoaderr(jjXAhttp://docs.python.org/3/library/ctypes.html#ctypes.LibraryLoaderX-trX"urllib.request.HTTPCookieProcessorr(jjXWhttp://docs.python.org/3/library/urllib.request.html#urllib.request.HTTPCookieProcessorX-trXsmtpd.MailmanProxyr(jjX>http://docs.python.org/3/library/smtpd.html#smtpd.MailmanProxyX-trXmailbox.Maildirr(jjX=http://docs.python.org/3/library/mailbox.html#mailbox.MaildirX-trXwsgiref.util.FileWrapperr(jjXFhttp://docs.python.org/3/library/wsgiref.html#wsgiref.util.FileWrapperX-trXcollections.abc.Mappingr(jjXMhttp://docs.python.org/3/library/collections.abc.html#collections.abc.MappingX-trXstrr(jjX2http://docs.python.org/3/library/stdtypes.html#strX-trXtkinter.tix.InputOnlyr(jjXGhttp://docs.python.org/3/library/tkinter.tix.html#tkinter.tix.InputOnlyX-trXsmtpd.SMTPChannelr(jjX=http://docs.python.org/3/library/smtpd.html#smtpd.SMTPChannelX-trXimp.NullImporterr(jjX:http://docs.python.org/3/library/imp.html#imp.NullImporterX-trXsymtable.Functionr(jjX@http://docs.python.org/3/library/symtable.html#symtable.FunctionX-trX#email.headerregistry.HeaderRegistryr(jjX^http://docs.python.org/3/library/email.headerregistry.html#email.headerregistry.HeaderRegistryX-trX$http.server.SimpleHTTPRequestHandlerr(jjXVhttp://docs.python.org/3/library/http.server.html#http.server.SimpleHTTPRequestHandlerX-trXmultiprocessing.JoinableQueuer(jjXShttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.JoinableQueueX-trXpoplib.POP3_SSLr(jjX<http://docs.python.org/3/library/poplib.html#poplib.POP3_SSLX-trXipaddress.IPv4Addressr(jjXEhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4AddressX-trXtkinter.tix.ButtonBoxr(jjXGhttp://docs.python.org/3/library/tkinter.tix.html#tkinter.tix.ButtonBoxX-trXtkinter.tix.ListNoteBookr(jjXJhttp://docs.python.org/3/library/tkinter.tix.html#tkinter.tix.ListNoteBookX-trX&email.mime.application.MIMEApplicationr(jjXWhttp://docs.python.org/3/library/email.mime.html#email.mime.application.MIMEApplicationX-trXconcurrent.futures.Executorr(jjXThttp://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.ExecutorX-trXio.BufferedWriterr(jjX:http://docs.python.org/3/library/io.html#io.BufferedWriterX-trXpdb.Pdbr(jjX1http://docs.python.org/3/library/pdb.html#pdb.PdbX-trXtkinter.tix.OptionMenur(jjXHhttp://docs.python.org/3/library/tkinter.tix.html#tkinter.tix.OptionMenuX-trXemail.policy.Policyr(jjXFhttp://docs.python.org/3/library/email.policy.html#email.policy.PolicyX-trX datetime.dater(jjX<http://docs.python.org/3/library/datetime.html#datetime.dateX-trXtupler(jjX4http://docs.python.org/3/library/stdtypes.html#tupleX-trXcollections.UserListr(jjXFhttp://docs.python.org/3/library/collections.html#collections.UserListX-trX datetime.timer(jjX<http://docs.python.org/3/library/datetime.html#datetime.timeX-trXurllib.request.OpenerDirectorr(jjXRhttp://docs.python.org/3/library/urllib.request.html#urllib.request.OpenerDirectorX-trXbz2.BZ2Compressorr(jjX;http://docs.python.org/3/library/bz2.html#bz2.BZ2CompressorX-trXdis.Instructionr(jjX9http://docs.python.org/3/library/dis.html#dis.InstructionX-trX multiprocessing.BoundedSemaphorer(jjXVhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.BoundedSemaphoreX-trXnumbers.Integralr(jjX>http://docs.python.org/3/library/numbers.html#numbers.IntegralX-trX ctypes.c_byter(jjX:http://docs.python.org/3/library/ctypes.html#ctypes.c_byteX-trXctypes.c_int16r(jjX;http://docs.python.org/3/library/ctypes.html#ctypes.c_int16X-trXzipfile.ZipFiler(jjX=http://docs.python.org/3/library/zipfile.html#zipfile.ZipFileX-trXselectors.BaseSelectorr(jjXFhttp://docs.python.org/3/library/selectors.html#selectors.BaseSelectorX-trXipaddress.IPv4Networkr(jjXEhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4NetworkX-trX ctypes.c_boolr(jjX:http://docs.python.org/3/library/ctypes.html#ctypes.c_boolX-trXemail.headerregistry.DateHeaderr(jjXZhttp://docs.python.org/3/library/email.headerregistry.html#email.headerregistry.DateHeaderX-trX$importlib.machinery.SourceFileLoaderr(jjXThttp://docs.python.org/3/library/importlib.html#importlib.machinery.SourceFileLoaderX-trXcalendar.Calendarr(jjX@http://docs.python.org/3/library/calendar.html#calendar.CalendarX-trXasyncio.Conditionr(jjXDhttp://docs.python.org/3/library/asyncio-sync.html#asyncio.ConditionX-trX#importlib.machinery.BuiltinImporterr(jjXShttp://docs.python.org/3/library/importlib.html#importlib.machinery.BuiltinImporterX-trXformatter.AbstractFormatterr(jjXKhttp://docs.python.org/3/library/formatter.html#formatter.AbstractFormatterX-trXemail.message.EmailMessager(jjXUhttp://docs.python.org/3/library/email.contentmanager.html#email.message.EmailMessageX-trXdecimal.Decimalr(jjX=http://docs.python.org/3/library/decimal.html#decimal.DecimalX-trXthreading.localr(jjX?http://docs.python.org/3/library/threading.html#threading.localX-trXimportlib.abc.MetaPathFinderr(jjXLhttp://docs.python.org/3/library/importlib.html#importlib.abc.MetaPathFinderX-trXtkinter.tix.Controlr(jjXEhttp://docs.python.org/3/library/tkinter.tix.html#tkinter.tix.ControlX-trXasyncore.file_dispatcherr(jjXGhttp://docs.python.org/3/library/asyncore.html#asyncore.file_dispatcherX-trXsetr(jjX2http://docs.python.org/3/library/stdtypes.html#setX-trXmultiprocessing.Eventr(jjXKhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.EventX-trXxdrlib.Unpackerr(jjX<http://docs.python.org/3/library/xdrlib.html#xdrlib.UnpackerX-trX"email.mime.multipart.MIMEMultipartr(jjXShttp://docs.python.org/3/library/email.mime.html#email.mime.multipart.MIMEMultipartX-trXctypes.c_uint16r(jjX<http://docs.python.org/3/library/ctypes.html#ctypes.c_uint16X-trXhttp.cookiejar.CookieJarr(jjXMhttp://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.CookieJarX-trXmultiprocessing.RLockr(jjXKhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.RLockX-trXimportlib.abc.SourceLoaderr(jjXJhttp://docs.python.org/3/library/importlib.html#importlib.abc.SourceLoaderX-trX"http.cookiejar.DefaultCookiePolicyr(jjXWhttp://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.DefaultCookiePolicyX-trXcollections.abc.MutableSetr(jjXPhttp://docs.python.org/3/library/collections.abc.html#collections.abc.MutableSetX-trXdoctest.DocTestr(jjX=http://docs.python.org/3/library/doctest.html#doctest.DocTestX-tr Xctypes.c_uint8r (jjX;http://docs.python.org/3/library/ctypes.html#ctypes.c_uint8X-tr Xcodecs.StreamReaderr (jjX@http://docs.python.org/3/library/codecs.html#codecs.StreamReaderX-tr Xtkinter.tix.Treer(jjXBhttp://docs.python.org/3/library/tkinter.tix.html#tkinter.tix.TreeX-trX queue.Queuer(jjX7http://docs.python.org/3/library/queue.html#queue.QueueX-trXctypes._FuncPtrr(jjX<http://docs.python.org/3/library/ctypes.html#ctypes._FuncPtrX-trXdictr(jjX3http://docs.python.org/3/library/stdtypes.html#dictX-trXtextwrap.TextWrapperr(jjXChttp://docs.python.org/3/library/textwrap.html#textwrap.TextWrapperX-trXzipfile.ZipInfor(jjX=http://docs.python.org/3/library/zipfile.html#zipfile.ZipInfoX-trXctypes.c_ubyter(jjX;http://docs.python.org/3/library/ctypes.html#ctypes.c_ubyteX-trXqueue.PriorityQueuer(jjX?http://docs.python.org/3/library/queue.html#queue.PriorityQueueX-trXxmlrpc.server.DocXMLRPCServerr(jjXQhttp://docs.python.org/3/library/xmlrpc.server.html#xmlrpc.server.DocXMLRPCServerX-trXpickle.Unpicklerr (jjX=http://docs.python.org/3/library/pickle.html#pickle.UnpicklerX-tr!Xdecimal.Subnormalr"(jjX?http://docs.python.org/3/library/decimal.html#decimal.SubnormalX-tr#Xctypes.c_uint64r$(jjX<http://docs.python.org/3/library/ctypes.html#ctypes.c_uint64X-tr%Xfunctools.partialmethodr&(jjXGhttp://docs.python.org/3/library/functools.html#functools.partialmethodX-tr'Xthreading.Conditionr((jjXChttp://docs.python.org/3/library/threading.html#threading.ConditionX-tr)Xctypes.c_wcharr*(jjX;http://docs.python.org/3/library/ctypes.html#ctypes.c_wcharX-tr+Xemail.mime.audio.MIMEAudior,(jjXKhttp://docs.python.org/3/library/email.mime.html#email.mime.audio.MIMEAudioX-tr-Xlogging.handlers.QueueListenerr.(jjXUhttp://docs.python.org/3/library/logging.handlers.html#logging.handlers.QueueListenerX-tr/X ctypes.CDLLr0(jjX8http://docs.python.org/3/library/ctypes.html#ctypes.CDLLX-tr1Xcollections.abc.MutableMappingr2(jjXThttp://docs.python.org/3/library/collections.abc.html#collections.abc.MutableMappingX-tr3Xurllib.parse.DefragResultr4(jjXLhttp://docs.python.org/3/library/urllib.parse.html#urllib.parse.DefragResultX-tr5Xtarfile.TarInfor6(jjX=http://docs.python.org/3/library/tarfile.html#tarfile.TarInfoX-tr7Xmsilib.Directoryr8(jjX=http://docs.python.org/3/library/msilib.html#msilib.DirectoryX-tr9Xasyncio.ReadTransportr:(jjXLhttp://docs.python.org/3/library/asyncio-protocol.html#asyncio.ReadTransportX-tr;Xhttp.cookiejar.MozillaCookieJarr<(jjXThttp://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.MozillaCookieJarX-tr=Xwarnings.catch_warningsr>(jjXFhttp://docs.python.org/3/library/warnings.html#warnings.catch_warningsX-tr?Xctypes.c_floatr@(jjX;http://docs.python.org/3/library/ctypes.html#ctypes.c_floatX-trAX xdrlib.PackerrB(jjX:http://docs.python.org/3/library/xdrlib.html#xdrlib.PackerX-trCXurllib.request.CacheFTPHandlerrD(jjXShttp://docs.python.org/3/library/urllib.request.html#urllib.request.CacheFTPHandlerX-trEXtkinter.tix.PopupMenurF(jjXGhttp://docs.python.org/3/library/tkinter.tix.html#tkinter.tix.PopupMenuX-trGXtkinter.tix.DirListrH(jjXEhttp://docs.python.org/3/library/tkinter.tix.html#tkinter.tix.DirListX-trIXtkinter.tix.HListrJ(jjXChttp://docs.python.org/3/library/tkinter.tix.html#tkinter.tix.HListX-trKXtkinter.tix.FormrL(jjXBhttp://docs.python.org/3/library/tkinter.tix.html#tkinter.tix.FormX-trMXasyncore.dispatcher_with_sendrN(jjXLhttp://docs.python.org/3/library/asyncore.html#asyncore.dispatcher_with_sendX-trOX ctypes.PyDLLrP(jjX9http://docs.python.org/3/library/ctypes.html#ctypes.PyDLLX-trQXsymtable.SymbolTablerR(jjXChttp://docs.python.org/3/library/symtable.html#symtable.SymbolTableX-trSX csv.DialectrT(jjX5http://docs.python.org/3/library/csv.html#csv.DialectX-trUXurllib.request.BaseHandlerrV(jjXOhttp://docs.python.org/3/library/urllib.request.html#urllib.request.BaseHandlerX-trWXurllib.request.HTTPPasswordMgrrX(jjXShttp://docs.python.org/3/library/urllib.request.html#urllib.request.HTTPPasswordMgrX-trYXemail.message.MessagerZ(jjXIhttp://docs.python.org/3/library/email.message.html#email.message.MessageX-tr[Xcodecs.StreamWriterr\(jjX@http://docs.python.org/3/library/codecs.html#codecs.StreamWriterX-tr]Xcodecs.StreamReaderWriterr^(jjXFhttp://docs.python.org/3/library/codecs.html#codecs.StreamReaderWriterX-tr_X ctypes.c_longr`(jjX:http://docs.python.org/3/library/ctypes.html#ctypes.c_longX-traXasyncio.PriorityQueuerb(jjXHhttp://docs.python.org/3/library/asyncio-sync.html#asyncio.PriorityQueueX-trcXhttp.client.HTTPConnectionrd(jjXLhttp://docs.python.org/3/library/http.client.html#http.client.HTTPConnectionX-treX asyncio.Queuerf(jjX@http://docs.python.org/3/library/asyncio-sync.html#asyncio.QueueX-trgXselectors.SelectSelectorrh(jjXHhttp://docs.python.org/3/library/selectors.html#selectors.SelectSelectorX-triXcollections.defaultdictrj(jjXIhttp://docs.python.org/3/library/collections.html#collections.defaultdictX-trkXdecimal.Inexactrl(jjX=http://docs.python.org/3/library/decimal.html#decimal.InexactX-trmX&email.headerregistry.MIMEVersionHeaderrn(jjXahttp://docs.python.org/3/library/email.headerregistry.html#email.headerregistry.MIMEVersionHeaderX-troX wsgiref.simple_server.WSGIServerrp(jjXNhttp://docs.python.org/3/library/wsgiref.html#wsgiref.simple_server.WSGIServerX-trqX!http.server.CGIHTTPRequestHandlerrr(jjXShttp://docs.python.org/3/library/http.server.html#http.server.CGIHTTPRequestHandlerX-trsXmultiprocessing.Conditionrt(jjXOhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.ConditionX-truX smtplib.SMTPrv(jjX:http://docs.python.org/3/library/smtplib.html#smtplib.SMTPX-trwXio.IncrementalNewlineDecoderrx(jjXEhttp://docs.python.org/3/library/io.html#io.IncrementalNewlineDecoderX-tryX frozensetrz(jjX8http://docs.python.org/3/library/stdtypes.html#frozensetX-tr{Xemail.mime.text.MIMETextr|(jjXIhttp://docs.python.org/3/library/email.mime.html#email.mime.text.MIMETextX-tr}X!xml.etree.ElementTree.ElementTreer~(jjX]http://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.ElementTreeX-trXargparse.RawTextHelpFormatterr(jjXLhttp://docs.python.org/3/library/argparse.html#argparse.RawTextHelpFormatterX-trXthreading.Threadr(jjX@http://docs.python.org/3/library/threading.html#threading.ThreadX-trXtkinter.tix.FileEntryr(jjXGhttp://docs.python.org/3/library/tkinter.tix.html#tkinter.tix.FileEntryX-trXctypes.c_longlongr(jjX>http://docs.python.org/3/library/ctypes.html#ctypes.c_longlongX-trXmultiprocessing.Queuer(jjXKhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.QueueX-trXcmd.Cmdr(jjX1http://docs.python.org/3/library/cmd.html#cmd.CmdX-trXmultiprocessing.pool.Poolr(jjXOhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.pool.PoolX-trXunittest.mock.Mockr(jjXFhttp://docs.python.org/3/library/unittest.mock.html#unittest.mock.MockX-trXunittest.FunctionTestCaser(jjXHhttp://docs.python.org/3/library/unittest.html#unittest.FunctionTestCaseX-trXoptparse.OptionGroupr(jjXChttp://docs.python.org/3/library/optparse.html#optparse.OptionGroupX-trXdifflib.Differr(jjX<http://docs.python.org/3/library/difflib.html#difflib.DifferX-trXhttp.cookies.Morselr(jjXFhttp://docs.python.org/3/library/http.cookies.html#http.cookies.MorselX-trXpathlib.PosixPathr(jjX?http://docs.python.org/3/library/pathlib.html#pathlib.PosixPathX-trX ctypes.c_int8r(jjX:http://docs.python.org/3/library/ctypes.html#ctypes.c_int8X-trX smtplib.LMTPr(jjX:http://docs.python.org/3/library/smtplib.html#smtplib.LMTPX-trX plistlib.Datar(jjX<http://docs.python.org/3/library/plistlib.html#plistlib.DataX-trXsmtplib.SMTP_SSLr(jjX>http://docs.python.org/3/library/smtplib.html#smtplib.SMTP_SSLX-trXasyncio.BaseSubprocessTransportr(jjXVhttp://docs.python.org/3/library/asyncio-protocol.html#asyncio.BaseSubprocessTransportX-trXmailbox.mboxMessager(jjXAhttp://docs.python.org/3/library/mailbox.html#mailbox.mboxMessageX-trXcollections.UserStringr(jjXHhttp://docs.python.org/3/library/collections.html#collections.UserStringX-trX asyncio.Taskr(jjX?http://docs.python.org/3/library/asyncio-task.html#asyncio.TaskX-trXtkinter.tix.DirSelectBoxr(jjXJhttp://docs.python.org/3/library/tkinter.tix.html#tkinter.tix.DirSelectBoxX-trXmimetypes.MimeTypesr(jjXChttp://docs.python.org/3/library/mimetypes.html#mimetypes.MimeTypesX-trXctypes.c_doubler(jjX<http://docs.python.org/3/library/ctypes.html#ctypes.c_doubleX-trXdecimal.DivisionByZeror(jjXDhttp://docs.python.org/3/library/decimal.html#decimal.DivisionByZeroX-trXgettext.NullTranslationsr(jjXFhttp://docs.python.org/3/library/gettext.html#gettext.NullTranslationsX-trXemail.generator.BytesGeneratorr(jjXThttp://docs.python.org/3/library/email.generator.html#email.generator.BytesGeneratorX-trX ctypes.WinDLLr(jjX:http://docs.python.org/3/library/ctypes.html#ctypes.WinDLLX-trXpickle.Picklerr(jjX;http://docs.python.org/3/library/pickle.html#pickle.PicklerX-trXctypes.c_ulongr(jjX;http://docs.python.org/3/library/ctypes.html#ctypes.c_ulongX-trXpkgutil.ImpLoaderr(jjX?http://docs.python.org/3/library/pkgutil.html#pkgutil.ImpLoaderX-trXcollections.abc.Hashabler(jjXNhttp://docs.python.org/3/library/collections.abc.html#collections.abc.HashableX-trX,email.headerregistry.ParameterizedMIMEHeaderr(jjXghttp://docs.python.org/3/library/email.headerregistry.html#email.headerregistry.ParameterizedMIMEHeaderX-trXconfigparser.RawConfigParserr(jjXOhttp://docs.python.org/3/library/configparser.html#configparser.RawConfigParserX-trX#logging.handlers.WatchedFileHandlerr(jjXZhttp://docs.python.org/3/library/logging.handlers.html#logging.handlers.WatchedFileHandlerX-trXurllib.request.UnknownHandlerr(jjXRhttp://docs.python.org/3/library/urllib.request.html#urllib.request.UnknownHandlerX-trXthreading.RLockr(jjX?http://docs.python.org/3/library/threading.html#threading.RLockX-trX uuid.UUIDr(jjX4http://docs.python.org/3/library/uuid.html#uuid.UUIDX-trXwsgiref.handlers.BaseCGIHandlerr(jjXMhttp://docs.python.org/3/library/wsgiref.html#wsgiref.handlers.BaseCGIHandlerX-trXcurses.textpad.Textboxr(jjXChttp://docs.python.org/3/library/curses.html#curses.textpad.TextboxX-trX turtle.Turtler(jjX:http://docs.python.org/3/library/turtle.html#turtle.TurtleX-trXsymtable.Classr(jjX=http://docs.python.org/3/library/symtable.html#symtable.ClassX-trXrandom.SystemRandomr(jjX@http://docs.python.org/3/library/random.html#random.SystemRandomX-trXsqlite3.Cursorr(jjX<http://docs.python.org/3/library/sqlite3.html#sqlite3.CursorX-trXsched.schedulerr(jjX;http://docs.python.org/3/library/sched.html#sched.schedulerX-trXhttp.cookiejar.Cookier(jjXJhttp://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.CookieX-trXtarfile.TarFiler(jjX=http://docs.python.org/3/library/tarfile.html#tarfile.TarFileX-trXctypes.c_uint32r(jjX<http://docs.python.org/3/library/ctypes.html#ctypes.c_uint32X-trXdecimal.InvalidOperationr(jjXFhttp://docs.python.org/3/library/decimal.html#decimal.InvalidOperationX-trXcalendar.HTMLCalendarr(jjXDhttp://docs.python.org/3/library/calendar.html#calendar.HTMLCalendarX-trXweakref.WeakMethodr(jjX@http://docs.python.org/3/library/weakref.html#weakref.WeakMethodX-trXemail.mime.image.MIMEImager(jjXKhttp://docs.python.org/3/library/email.mime.html#email.mime.image.MIMEImageX-trXdifflib.SequenceMatcherr(jjXEhttp://docs.python.org/3/library/difflib.html#difflib.SequenceMatcherX-trX asynchat.fifor(jjX<http://docs.python.org/3/library/asynchat.html#asynchat.fifoX-trX"email.headerregistry.AddressHeaderr(jjX]http://docs.python.org/3/library/email.headerregistry.html#email.headerregistry.AddressHeaderX-trX(email.mime.nonmultipart.MIMENonMultipartr(jjXYhttp://docs.python.org/3/library/email.mime.html#email.mime.nonmultipart.MIMENonMultipartX-trX$argparse.RawDescriptionHelpFormatterr(jjXShttp://docs.python.org/3/library/argparse.html#argparse.RawDescriptionHelpFormatterX-trXwsgiref.handlers.IISCGIHandlerr(jjXLhttp://docs.python.org/3/library/wsgiref.html#wsgiref.handlers.IISCGIHandlerX-trXmailbox.MaildirMessager(jjXDhttp://docs.python.org/3/library/mailbox.html#mailbox.MaildirMessageX-trXtkinter.ttk.Treeviewr(jjXFhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.TreeviewX-trXxml.dom.pulldom.PullDomr(jjXMhttp://docs.python.org/3/library/xml.dom.pulldom.html#xml.dom.pulldom.PullDomX-trXlogging.Formatterr(jjX?http://docs.python.org/3/library/logging.html#logging.FormatterX-trXasyncio.BoundedSemaphorer(jjXKhttp://docs.python.org/3/library/asyncio-sync.html#asyncio.BoundedSemaphoreX-trXlogging.LoggerAdapterr(jjXChttp://docs.python.org/3/library/logging.html#logging.LoggerAdapterX-trX$multiprocessing.managers.BaseManagerr(jjXZhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.managers.BaseManagerX-trXxml.etree.ElementTree.QNamer(jjXWhttp://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.QNameX-trXhttp.server.HTTPServerr(jjXHhttp://docs.python.org/3/library/http.server.html#http.server.HTTPServerX-trXcodeop.Compiler(jjX;http://docs.python.org/3/library/codeop.html#codeop.CompileX-trXasyncio.StreamReaderProtocolr(jjXQhttp://docs.python.org/3/library/asyncio-stream.html#asyncio.StreamReaderProtocolX-tr Xthreading.Semaphorer (jjXChttp://docs.python.org/3/library/threading.html#threading.SemaphoreX-tr Xselectors.SelectorKeyr (jjXEhttp://docs.python.org/3/library/selectors.html#selectors.SelectorKeyX-tr X"asyncio.asyncio.subprocess.Processr(jjX[http://docs.python.org/3/library/asyncio-subprocess.html#asyncio.asyncio.subprocess.ProcessX-trXunittest.TestResultr(jjXBhttp://docs.python.org/3/library/unittest.html#unittest.TestResultX-trX sqlite3.Rowr(jjX9http://docs.python.org/3/library/sqlite3.html#sqlite3.RowX-trXdecimal.ExtendedContextr(jjXEhttp://docs.python.org/3/library/decimal.html#decimal.ExtendedContextX-trXcalendar.TextCalendarr(jjXDhttp://docs.python.org/3/library/calendar.html#calendar.TextCalendarX-trX io.RawIOBaser(jjX5http://docs.python.org/3/library/io.html#io.RawIOBaseX-trXstring.Templater(jjX<http://docs.python.org/3/library/string.html#string.TemplateX-trXast.ASTr(jjX1http://docs.python.org/3/library/ast.html#ast.ASTX-trXurllib.request.FancyURLopenerr(jjXRhttp://docs.python.org/3/library/urllib.request.html#urllib.request.FancyURLopenerX-trX"distutils.fancy_getopt.FancyGetoptr (jjXQhttp://docs.python.org/3/distutils/apiref.html#distutils.fancy_getopt.FancyGetoptX-tr!X shlex.shlexr"(jjX7http://docs.python.org/3/library/shlex.html#shlex.shlexX-tr#Xshelve.BsdDbShelfr$(jjX>http://docs.python.org/3/library/shelve.html#shelve.BsdDbShelfX-tr%Xurllib.parse.ParseResultr&(jjXKhttp://docs.python.org/3/library/urllib.parse.html#urllib.parse.ParseResultX-tr'X(email.headerregistry.SingleAddressHeaderr((jjXchttp://docs.python.org/3/library/email.headerregistry.html#email.headerregistry.SingleAddressHeaderX-tr)Xdecimal.Underflowr*(jjX?http://docs.python.org/3/library/decimal.html#decimal.UnderflowX-tr+Ximportlib.abc.Loaderr,(jjXDhttp://docs.python.org/3/library/importlib.html#importlib.abc.LoaderX-tr-Xcollections.Counterr.(jjXEhttp://docs.python.org/3/library/collections.html#collections.CounterX-tr/Xdoctest.DocTestFinderr0(jjXChttp://docs.python.org/3/library/doctest.html#doctest.DocTestFinderX-tr1Xmailbox.Mailboxr2(jjX=http://docs.python.org/3/library/mailbox.html#mailbox.MailboxX-tr3X#email.contentmanager.ContentManagerr4(jjX^http://docs.python.org/3/library/email.contentmanager.html#email.contentmanager.ContentManagerX-tr5Xtkinter.ttk.Comboboxr6(jjXFhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.ComboboxX-tr7Xdatetime.datetimer8(jjX@http://docs.python.org/3/library/datetime.html#datetime.datetimeX-tr9Xast.NodeTransformerr:(jjX=http://docs.python.org/3/library/ast.html#ast.NodeTransformerX-tr;X mmap.mmapr<(jjX4http://docs.python.org/3/library/mmap.html#mmap.mmapX-tr=X%concurrent.futures.ThreadPoolExecutorr>(jjX^http://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.ThreadPoolExecutorX-tr?X"configparser.ExtendedInterpolationr@(jjXUhttp://docs.python.org/3/library/configparser.html#configparser.ExtendedInterpolationX-trAX enum.IntEnumrB(jjX7http://docs.python.org/3/library/enum.html#enum.IntEnumX-trCXsmtpd.PureProxyrD(jjX;http://docs.python.org/3/library/smtpd.html#smtpd.PureProxyX-trEXimportlib.abc.FinderrF(jjXDhttp://docs.python.org/3/library/importlib.html#importlib.abc.FinderX-trGX$urllib.request.HTTPDigestAuthHandlerrH(jjXYhttp://docs.python.org/3/library/urllib.request.html#urllib.request.HTTPDigestAuthHandlerX-trIXurllib.request.FTPHandlerrJ(jjXNhttp://docs.python.org/3/library/urllib.request.html#urllib.request.FTPHandlerX-trKXast.NodeVisitorrL(jjX9http://docs.python.org/3/library/ast.html#ast.NodeVisitorX-trMXlogging.handlers.HTTPHandlerrN(jjXShttp://docs.python.org/3/library/logging.handlers.html#logging.handlers.HTTPHandlerX-trOX memoryviewrP(jjX9http://docs.python.org/3/library/stdtypes.html#memoryviewX-trQXargparse.ArgumentParserrR(jjXFhttp://docs.python.org/3/library/argparse.html#argparse.ArgumentParserX-trSXcodecs.IncrementalEncoderrT(jjXFhttp://docs.python.org/3/library/codecs.html#codecs.IncrementalEncoderX-trUXcode.InteractiveInterpreterrV(jjXFhttp://docs.python.org/3/library/code.html#code.InteractiveInterpreterX-trWX generatorrX(jjX=http://docs.python.org/3/reference/expressions.html#generatorX-trYXctypes._SimpleCDatarZ(jjX@http://docs.python.org/3/library/ctypes.html#ctypes._SimpleCDataX-tr[Xcollections.ChainMapr\(jjXFhttp://docs.python.org/3/library/collections.html#collections.ChainMapX-tr]Xio.BufferedRandomr^(jjX:http://docs.python.org/3/library/io.html#io.BufferedRandomX-tr_Xmultiprocessing.Semaphorer`(jjXOhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.SemaphoreX-traX bz2.BZ2Filerb(jjX5http://docs.python.org/3/library/bz2.html#bz2.BZ2FileX-trcXdoctest.DebugRunnerrd(jjXAhttp://docs.python.org/3/library/doctest.html#doctest.DebugRunnerX-treXqueue.LifoQueuerf(jjX;http://docs.python.org/3/library/queue.html#queue.LifoQueueX-trgXasyncio.WriteTransportrh(jjXMhttp://docs.python.org/3/library/asyncio-protocol.html#asyncio.WriteTransportX-triXimportlib.machinery.ModuleSpecrj(jjXNhttp://docs.python.org/3/library/importlib.html#importlib.machinery.ModuleSpecX-trkX'email.headerregistry.UnstructuredHeaderrl(jjXbhttp://docs.python.org/3/library/email.headerregistry.html#email.headerregistry.UnstructuredHeaderX-trmXctypes.c_ulonglongrn(jjX?http://docs.python.org/3/library/ctypes.html#ctypes.c_ulonglongX-troXdecimal.FloatOperationrp(jjXDhttp://docs.python.org/3/library/decimal.html#decimal.FloatOperationX-trqXsymtable.Symbolrr(jjX>http://docs.python.org/3/library/symtable.html#symtable.SymbolX-trsXselectors.EpollSelectorrt(jjXGhttp://docs.python.org/3/library/selectors.html#selectors.EpollSelectorX-truX email.generator.DecodedGeneratorrv(jjXVhttp://docs.python.org/3/library/email.generator.html#email.generator.DecodedGeneratorX-trwXipaddress.IPv6Networkrx(jjXEhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6NetworkX-tryXtkinter.tix.LabelFramerz(jjXHhttp://docs.python.org/3/library/tkinter.tix.html#tkinter.tix.LabelFrameX-tr{Xsubprocess.STARTUPINFOr|(jjXGhttp://docs.python.org/3/library/subprocess.html#subprocess.STARTUPINFOX-tr}Xxml.sax.saxutils.XMLGeneratorr~(jjXQhttp://docs.python.org/3/library/xml.sax.utils.html#xml.sax.saxutils.XMLGeneratorX-trXxml.sax.handler.DTDHandlerr(jjXPhttp://docs.python.org/3/library/xml.sax.handler.html#xml.sax.handler.DTDHandlerX-trXunittest.mock.PropertyMockr(jjXNhttp://docs.python.org/3/library/unittest.mock.html#unittest.mock.PropertyMockX-trXipaddress.IPv6Interfacer(jjXGhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6InterfaceX-trXunittest.TestSuiter(jjXAhttp://docs.python.org/3/library/unittest.html#unittest.TestSuiteX-trXdecimal.Overflowr(jjX>http://docs.python.org/3/library/decimal.html#decimal.OverflowX-trXemail.parser.Parserr(jjXFhttp://docs.python.org/3/library/email.parser.html#email.parser.ParserX-trXimportlib.machinery.FileFinderr(jjXNhttp://docs.python.org/3/library/importlib.html#importlib.machinery.FileFinderX-trXemail.parser.BytesParserr(jjXKhttp://docs.python.org/3/library/email.parser.html#email.parser.BytesParserX-trXcollections.OrderedDictr(jjXIhttp://docs.python.org/3/library/collections.html#collections.OrderedDictX-trXxmlrpc.client.ServerProxyr(jjXMhttp://docs.python.org/3/library/xmlrpc.client.html#xmlrpc.client.ServerProxyX-trX io.IOBaser(jjX2http://docs.python.org/3/library/io.html#io.IOBaseX-trXargparse.FileTyper(jjX@http://docs.python.org/3/library/argparse.html#argparse.FileTypeX-trXctypes.Structurer(jjX=http://docs.python.org/3/library/ctypes.html#ctypes.StructureX-trXmailbox.Messager(jjX=http://docs.python.org/3/library/mailbox.html#mailbox.MessageX-trX ctypes.OleDLLr(jjX:http://docs.python.org/3/library/ctypes.html#ctypes.OleDLLX-trX io.StringIOr(jjX4http://docs.python.org/3/library/io.html#io.StringIOX-trXselectors.PollSelectorr(jjXFhttp://docs.python.org/3/library/selectors.html#selectors.PollSelectorX-trXselectors.KqueueSelectorr(jjXHhttp://docs.python.org/3/library/selectors.html#selectors.KqueueSelectorX-trXweakref.WeakValueDictionaryr(jjXIhttp://docs.python.org/3/library/weakref.html#weakref.WeakValueDictionaryX-trX#xml.etree.ElementTree.XMLPullParserr(jjX_http://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.XMLPullParserX-trX enum.Enumr(jjX4http://docs.python.org/3/library/enum.html#enum.EnumX-trXunittest.TextTestRunnerr(jjXFhttp://docs.python.org/3/library/unittest.html#unittest.TextTestRunnerX-trXurllib.parse.SplitResultBytesr(jjXPhttp://docs.python.org/3/library/urllib.parse.html#urllib.parse.SplitResultBytesX-trXemail.charset.Charsetr(jjXIhttp://docs.python.org/3/library/email.charset.html#email.charset.CharsetX-trXasyncio.LifoQueuer(jjXDhttp://docs.python.org/3/library/asyncio-sync.html#asyncio.LifoQueueX-trXemail.policy.Compat32r(jjXHhttp://docs.python.org/3/library/email.policy.html#email.policy.Compat32X-trXctypes.c_int64r(jjX;http://docs.python.org/3/library/ctypes.html#ctypes.c_int64X-trX msilib.CABr(jjX7http://docs.python.org/3/library/msilib.html#msilib.CABX-trXasyncio.Handler(jjXFhttp://docs.python.org/3/library/asyncio-eventloop.html#asyncio.HandleX-trX trace.Tracer(jjX7http://docs.python.org/3/library/trace.html#trace.TraceX-trXtkinter.tix.FileSelectBoxr(jjXKhttp://docs.python.org/3/library/tkinter.tix.html#tkinter.tix.FileSelectBoxX-trXlogging.Loggerr(jjX<http://docs.python.org/3/library/logging.html#logging.LoggerX-trXabc.ABCr(jjX1http://docs.python.org/3/library/abc.html#abc.ABCX-trXbdb.Bdbr(jjX1http://docs.python.org/3/library/bdb.html#bdb.BdbX-trX timeit.Timerr(jjX9http://docs.python.org/3/library/timeit.html#timeit.TimerX-trXurllib.parse.SplitResultr(jjXKhttp://docs.python.org/3/library/urllib.parse.html#urllib.parse.SplitResultX-trXhttp.cookiejar.FileCookieJarr(jjXQhttp://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.FileCookieJarX-trX(urllib.request.AbstractDigestAuthHandlerr(jjX]http://docs.python.org/3/library/urllib.request.html#urllib.request.AbstractDigestAuthHandlerX-trXranger(jjX4http://docs.python.org/3/library/stdtypes.html#rangeX-trXnumbers.Complexr(jjX=http://docs.python.org/3/library/numbers.html#numbers.ComplexX-trXcalendar.LocaleHTMLCalendarr(jjXJhttp://docs.python.org/3/library/calendar.html#calendar.LocaleHTMLCalendarX-trXcollections.dequer(jjXChttp://docs.python.org/3/library/collections.html#collections.dequeX-trX msilib.Binaryr(jjX:http://docs.python.org/3/library/msilib.html#msilib.BinaryX-trX mailbox.MMDFr(jjX:http://docs.python.org/3/library/mailbox.html#mailbox.MMDFX-trXctypes.LittleEndianStructurer(jjXIhttp://docs.python.org/3/library/ctypes.html#ctypes.LittleEndianStructureX-trX io.BytesIOr(jjX3http://docs.python.org/3/library/io.html#io.BytesIOX-trXcontextlib.ContextDecoratorr(jjXLhttp://docs.python.org/3/library/contextlib.html#contextlib.ContextDecoratorX-trXxml.sax.xmlreader.XMLReaderr(jjXPhttp://docs.python.org/3/library/xml.sax.reader.html#xml.sax.xmlreader.XMLReaderX-trXfractions.Fractionr(jjXBhttp://docs.python.org/3/library/fractions.html#fractions.FractionX-trXcollections.abc.Sizedr(jjXKhttp://docs.python.org/3/library/collections.abc.html#collections.abc.SizedX-trXctypes.c_ssize_tr(jjX=http://docs.python.org/3/library/ctypes.html#ctypes.c_ssize_tX-trXtelnetlib.Telnetr(jjX@http://docs.python.org/3/library/telnetlib.html#telnetlib.TelnetX-trXhttp.client.HTTPResponser(jjXJhttp://docs.python.org/3/library/http.client.html#http.client.HTTPResponseX-trXxml.sax.xmlreader.InputSourcer(jjXRhttp://docs.python.org/3/library/xml.sax.reader.html#xml.sax.xmlreader.InputSourceX-trXctypes.c_int32r(jjX;http://docs.python.org/3/library/ctypes.html#ctypes.c_int32X-trX poplib.POP3r(jjX8http://docs.python.org/3/library/poplib.html#poplib.POP3X-trXasyncio.BaseTransportr(jjXLhttp://docs.python.org/3/library/asyncio-protocol.html#asyncio.BaseTransportX-trX(distutils.command.build_py.build_py_2to3r(jjXWhttp://docs.python.org/3/distutils/apiref.html#distutils.command.build_py.build_py_2to3X-trXemail.headerregistry.Groupr(jjXUhttp://docs.python.org/3/library/email.headerregistry.html#email.headerregistry.GroupX-trXformatter.NullWriterr(jjXDhttp://docs.python.org/3/library/formatter.html#formatter.NullWriterX-trX%xmlrpc.server.DocXMLRPCRequestHandlerr(jjXYhttp://docs.python.org/3/library/xmlrpc.server.html#xmlrpc.server.DocXMLRPCRequestHandlerX-trX struct.Structr(jjX:http://docs.python.org/3/library/struct.html#struct.StructX-trXurllib.request.FileHandlerr(jjXOhttp://docs.python.org/3/library/urllib.request.html#urllib.request.FileHandlerX-trXdoctest.DocTestParserr(jjXChttp://docs.python.org/3/library/doctest.html#doctest.DocTestParserX-trXconfigparser.BasicInterpolationr(jjXRhttp://docs.python.org/3/library/configparser.html#configparser.BasicInterpolationX-trXlogging.handlers.QueueHandlerr(jjXThttp://docs.python.org/3/library/logging.handlers.html#logging.handlers.QueueHandlerX-trXipaddress.IPv6Addressr(jjXEhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6AddressX-trXdistutils.text_file.TextFiler(jjXKhttp://docs.python.org/3/distutils/apiref.html#distutils.text_file.TextFileX-trXimportlib.abc.ResourceLoaderr(jjXLhttp://docs.python.org/3/library/importlib.html#importlib.abc.ResourceLoaderX-tr Xctypes.c_wchar_pr (jjX=http://docs.python.org/3/library/ctypes.html#ctypes.c_wchar_pX-tr Xxml.etree.ElementTree.XMLParserr (jjX[http://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.XMLParserX-tr Xxml.sax.handler.ErrorHandlerr(jjXRhttp://docs.python.org/3/library/xml.sax.handler.html#xml.sax.handler.ErrorHandlerX-trXweakref.WeakSetr(jjX=http://docs.python.org/3/library/weakref.html#weakref.WeakSetX-trXasyncio.AbstractEventLoopPolicyr(jjXWhttp://docs.python.org/3/library/asyncio-eventloop.html#asyncio.AbstractEventLoopPolicyX-trX csv.Snifferr(jjX5http://docs.python.org/3/library/csv.html#csv.SnifferX-trXtracemalloc.Tracer(jjXChttp://docs.python.org/3/library/tracemalloc.html#tracemalloc.TraceX-trXargparse.Namespacer(jjXAhttp://docs.python.org/3/library/argparse.html#argparse.NamespaceX-trX$urllib.request.ProxyBasicAuthHandlerr(jjXYhttp://docs.python.org/3/library/urllib.request.html#urllib.request.ProxyBasicAuthHandlerX-trX ctypes._CDatar(jjX:http://docs.python.org/3/library/ctypes.html#ctypes._CDataX-trXtypes.MappingProxyTyper(jjXBhttp://docs.python.org/3/library/types.html#types.MappingProxyTypeX-trX pathlib.Pathr (jjX:http://docs.python.org/3/library/pathlib.html#pathlib.PathX-tr!Xtkinter.ttk.Widgetr"(jjXDhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.WidgetX-tr#Xtrace.CoverageResultsr$(jjXAhttp://docs.python.org/3/library/trace.html#trace.CoverageResultsX-tr%X io.FileIOr&(jjX2http://docs.python.org/3/library/io.html#io.FileIOX-tr'X!urllib.request.HTTPErrorProcessorr((jjXVhttp://docs.python.org/3/library/urllib.request.html#urllib.request.HTTPErrorProcessorX-tr)X$logging.handlers.BaseRotatingHandlerr*(jjX[http://docs.python.org/3/library/logging.handlers.html#logging.handlers.BaseRotatingHandlerX-tr+Xctypes.c_ushortr,(jjX<http://docs.python.org/3/library/ctypes.html#ctypes.c_ushortX-tr-Xtracemalloc.Statisticr.(jjXGhttp://docs.python.org/3/library/tracemalloc.html#tracemalloc.StatisticX-tr/Xcodecs.StreamRecoderr0(jjXAhttp://docs.python.org/3/library/codecs.html#codecs.StreamRecoderX-tr1Xwsgiref.headers.Headersr2(jjXEhttp://docs.python.org/3/library/wsgiref.html#wsgiref.headers.HeadersX-tr3X ctypes.Unionr4(jjX9http://docs.python.org/3/library/ctypes.html#ctypes.UnionX-tr5X mailbox.Babylr6(jjX;http://docs.python.org/3/library/mailbox.html#mailbox.BabylX-tr7Xasyncio.AbstractServerr8(jjXNhttp://docs.python.org/3/library/asyncio-eventloop.html#asyncio.AbstractServerX-tr9Xformatter.DumbWriterr:(jjXDhttp://docs.python.org/3/library/formatter.html#formatter.DumbWriterX-tr;Xdatetime.tzinfor<(jjX>http://docs.python.org/3/library/datetime.html#datetime.tzinfoX-tr=Ximportlib.abc.InspectLoaderr>(jjXKhttp://docs.python.org/3/library/importlib.html#importlib.abc.InspectLoaderX-tr?Xcsv.DictWriterr@(jjX8http://docs.python.org/3/library/csv.html#csv.DictWriterX-trAXunittest.mock.MagicMockrB(jjXKhttp://docs.python.org/3/library/unittest.mock.html#unittest.mock.MagicMockX-trCXdoctest.OutputCheckerrD(jjXChttp://docs.python.org/3/library/doctest.html#doctest.OutputCheckerX-trEXlogging.FilterrF(jjX<http://docs.python.org/3/library/logging.html#logging.FilterX-trGXlogging.FileHandlerrH(jjXJhttp://docs.python.org/3/library/logging.handlers.html#logging.FileHandlerX-trIXsmtpd.DebuggingServerrJ(jjXAhttp://docs.python.org/3/library/smtpd.html#smtpd.DebuggingServerX-trKXtkinter.tix.ComboBoxrL(jjXFhttp://docs.python.org/3/library/tkinter.tix.html#tkinter.tix.ComboBoxX-trMX xml.etree.ElementTree.ParseErrorrN(jjX\http://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.ParseErrorX-trOXunittest.TextTestResultrP(jjXFhttp://docs.python.org/3/library/unittest.html#unittest.TextTestResultX-trQXasyncio.JoinableQueuerR(jjXHhttp://docs.python.org/3/library/asyncio-sync.html#asyncio.JoinableQueueX-trSXzipimport.zipimporterrT(jjXEhttp://docs.python.org/3/library/zipimport.html#zipimport.zipimporterX-trUXfilecmp.dircmprV(jjX<http://docs.python.org/3/library/filecmp.html#filecmp.dircmpX-trWX gzip.GzipFilerX(jjX8http://docs.python.org/3/library/gzip.html#gzip.GzipFileX-trYXtkinter.tix.BalloonrZ(jjXEhttp://docs.python.org/3/library/tkinter.tix.html#tkinter.tix.BalloonX-tr[X netrc.netrcr\(jjX7http://docs.python.org/3/library/netrc.html#netrc.netrcX-tr]X"urllib.robotparser.RobotFileParserr^(jjX[http://docs.python.org/3/library/urllib.robotparser.html#urllib.robotparser.RobotFileParserX-tr_Xlogging.LogRecordr`(jjX?http://docs.python.org/3/library/logging.html#logging.LogRecordX-traXtkinter.tix.Selectrb(jjXDhttp://docs.python.org/3/library/tkinter.tix.html#tkinter.tix.SelectX-trcX.urllib.request.HTTPPasswordMgrWithDefaultRealmrd(jjXchttp://docs.python.org/3/library/urllib.request.html#urllib.request.HTTPPasswordMgrWithDefaultRealmX-treXbz2.BZ2Decompressorrf(jjX=http://docs.python.org/3/library/bz2.html#bz2.BZ2DecompressorX-trgX$logging.handlers.RotatingFileHandlerrh(jjX[http://docs.python.org/3/library/logging.handlers.html#logging.handlers.RotatingFileHandlerX-triX"urllib.request.HTTPRedirectHandlerrj(jjXWhttp://docs.python.org/3/library/urllib.request.html#urllib.request.HTTPRedirectHandlerX-trkXio.BufferedIOBaserl(jjX:http://docs.python.org/3/library/io.html#io.BufferedIOBaseX-trmXctypes.c_shortrn(jjX;http://docs.python.org/3/library/ctypes.html#ctypes.c_shortX-troXpathlib.PurePathrp(jjX>http://docs.python.org/3/library/pathlib.html#pathlib.PurePathX-trqX csv.excel_tabrr(jjX7http://docs.python.org/3/library/csv.html#csv.excel_tabX-trsX asyncio.Lockrt(jjX?http://docs.python.org/3/library/asyncio-sync.html#asyncio.LockX-truXcollections.abc.ValuesViewrv(jjXPhttp://docs.python.org/3/library/collections.abc.html#collections.abc.ValuesViewX-trwX!logging.handlers.BufferingHandlerrx(jjXXhttp://docs.python.org/3/library/logging.handlers.html#logging.handlers.BufferingHandlerX-tryX io.TextIOBaserz(jjX6http://docs.python.org/3/library/io.html#io.TextIOBaseX-tr{Xlzma.LZMADecompressorr|(jjX@http://docs.python.org/3/library/lzma.html#lzma.LZMADecompressorX-tr}uXc:varr~}r(XPy_NotImplementedr(jjX>http://docs.python.org/3/c-api/object.html#c.Py_NotImplementedX-trXPy_single_inputr(jjX>http://docs.python.org/3/c-api/veryhigh.html#c.Py_single_inputX-trX PyDict_Typer(jjX6http://docs.python.org/3/c-api/dict.html#c.PyDict_TypeX-trX PyTrace_LINEr(jjX7http://docs.python.org/3/c-api/init.html#c.PyTrace_LINEX-trX PyCell_Typer(jjX6http://docs.python.org/3/c-api/cell.html#c.PyCell_TypeX-trX PyModule_Typer(jjX:http://docs.python.org/3/c-api/module.html#c.PyModule_TypeX-trX Py_eval_inputr(jjX<http://docs.python.org/3/c-api/veryhigh.html#c.Py_eval_inputX-trXPyFunction_Typer(jjX>http://docs.python.org/3/c-api/function.html#c.PyFunction_TypeX-trXPyStructSequence_UnnamedFieldr(jjXIhttp://docs.python.org/3/c-api/tuple.html#c.PyStructSequence_UnnamedFieldX-trX PyFloat_Typer(jjX8http://docs.python.org/3/c-api/float.html#c.PyFloat_TypeX-trXPySeqIter_Typer(jjX=http://docs.python.org/3/c-api/iterator.html#c.PySeqIter_TypeX-trX PyTuple_Typer(jjX8http://docs.python.org/3/c-api/tuple.html#c.PyTuple_TypeX-trXPyTrace_C_EXCEPTIONr(jjX>http://docs.python.org/3/c-api/init.html#c.PyTrace_C_EXCEPTIONX-trXPyComplex_Typer(jjX<http://docs.python.org/3/c-api/complex.html#c.PyComplex_TypeX-trXPyOS_InputHookr(jjX=http://docs.python.org/3/c-api/veryhigh.html#c.PyOS_InputHookX-trX PyList_Typer(jjX6http://docs.python.org/3/c-api/list.html#c.PyList_TypeX-trX Py_file_inputr(jjX<http://docs.python.org/3/c-api/veryhigh.html#c.Py_file_inputX-trXPyImport_FrozenModulesr(jjXChttp://docs.python.org/3/c-api/import.html#c.PyImport_FrozenModulesX-trXPyByteArray_Typer(jjX@http://docs.python.org/3/c-api/bytearray.html#c.PyByteArray_TypeX-trX PyTrace_CALLr(jjX7http://docs.python.org/3/c-api/init.html#c.PyTrace_CALLX-trXCO_FUTURE_DIVISIONr(jjXAhttp://docs.python.org/3/c-api/veryhigh.html#c.CO_FUTURE_DIVISIONX-trXPyFrozenSet_Typer(jjX:http://docs.python.org/3/c-api/set.html#c.PyFrozenSet_TypeX-trX PyType_Typer(jjX6http://docs.python.org/3/c-api/type.html#c.PyType_TypeX-trX PyMethod_Typer(jjX:http://docs.python.org/3/c-api/method.html#c.PyMethod_TypeX-trX_Py_NoneStructr(jjX?http://docs.python.org/3/c-api/allocation.html#c._Py_NoneStructX-trXPyTrace_RETURNr(jjX9http://docs.python.org/3/c-api/init.html#c.PyTrace_RETURNX-trXPyUnicode_Typer(jjX<http://docs.python.org/3/c-api/unicode.html#c.PyUnicode_TypeX-trXPyInstanceMethod_Typer(jjXBhttp://docs.python.org/3/c-api/method.html#c.PyInstanceMethod_TypeX-trXPyOS_ReadlineFunctionPointerr(jjXKhttp://docs.python.org/3/c-api/veryhigh.html#c.PyOS_ReadlineFunctionPointerX-trX PyCode_Typer(jjX6http://docs.python.org/3/c-api/code.html#c.PyCode_TypeX-trX PyLong_Typer(jjX6http://docs.python.org/3/c-api/long.html#c.PyLong_TypeX-trXPyTrace_C_CALLr(jjX9http://docs.python.org/3/c-api/init.html#c.PyTrace_C_CALLX-trXPyTrace_EXCEPTIONr(jjX<http://docs.python.org/3/c-api/init.html#c.PyTrace_EXCEPTIONX-trXPy_Noner(jjX2http://docs.python.org/3/c-api/none.html#c.Py_NoneX-trXPyTrace_C_RETURNr(jjX;http://docs.python.org/3/c-api/init.html#c.PyTrace_C_RETURNX-trXPyCallIter_Typer(jjX>http://docs.python.org/3/c-api/iterator.html#c.PyCallIter_TypeX-trX PyGen_Typer(jjX4http://docs.python.org/3/c-api/gen.html#c.PyGen_TypeX-trX PySlice_Typer(jjX8http://docs.python.org/3/c-api/slice.html#c.PySlice_TypeX-trX PySet_Typer(jjX4http://docs.python.org/3/c-api/set.html#c.PySet_TypeX-trXPy_Falser(jjX3http://docs.python.org/3/c-api/bool.html#c.Py_FalseX-trXPy_Truer(jjX2http://docs.python.org/3/c-api/bool.html#c.Py_TrueX-trX PyBytes_Typer(jjX8http://docs.python.org/3/c-api/bytes.html#c.PyBytes_TypeX-trXPyProperty_Typer(jjX@http://docs.python.org/3/c-api/descriptor.html#c.PyProperty_TypeX-truX py:moduler}r(Xfilecmpr(jjX<http://docs.python.org/3/library/filecmp.html#module-filecmpX-trXdistutils.debugr(jjXEhttp://docs.python.org/3/distutils/apiref.html#module-distutils.debugX-trXdbmr(jjX4http://docs.python.org/3/library/dbm.html#module-dbmX-trXcurses.textpadr(jjXBhttp://docs.python.org/3/library/curses.html#module-curses.textpadX-trXrandomr(jjX:http://docs.python.org/3/library/random.html#module-randomX-trXttyr(jjX4http://docs.python.org/3/library/tty.html#module-ttyX-trX subprocessr(jjXBhttp://docs.python.org/3/library/subprocess.html#module-subprocessX-trXcoder(jjX6http://docs.python.org/3/library/code.html#module-codeX-trXgcr(jjX2http://docs.python.org/3/library/gc.html#module-gcX-trXptyr(jjX4http://docs.python.org/3/library/pty.html#module-ptyX-trXdistutils.sysconfigr(jjXIhttp://docs.python.org/3/distutils/apiref.html#module-distutils.sysconfigX-trXos.pathr(jjX<http://docs.python.org/3/library/os.path.html#module-os.pathX-trX _dummy_threadr(jjXHhttp://docs.python.org/3/library/_dummy_thread.html#module-_dummy_threadX-trX email.policyr(jjXFhttp://docs.python.org/3/library/email.policy.html#module-email.policyX-trXdistutils.bcppcompilerr(jjXLhttp://docs.python.org/3/distutils/apiref.html#module-distutils.bcppcompilerX-trX importlibr(jjX@http://docs.python.org/3/library/importlib.html#module-importlibX-trXxmlr(jjX4http://docs.python.org/3/library/xml.html#module-xmlX-trX curses.panelr(jjXFhttp://docs.python.org/3/library/curses.panel.html#module-curses.panelX-trXpprintr(jjX:http://docs.python.org/3/library/pprint.html#module-pprintX-trX tracemallocr(jjXDhttp://docs.python.org/3/library/tracemalloc.html#module-tracemallocX-trXdbm.gnur(jjX8http://docs.python.org/3/library/dbm.html#module-dbm.gnuX-trXxml.etree.ElementTreer(jjXXhttp://docs.python.org/3/library/xml.etree.elementtree.html#module-xml.etree.ElementTreeX-trXsmtplibr(jjX<http://docs.python.org/3/library/smtplib.html#module-smtplibX-trX functoolsr(jjX@http://docs.python.org/3/library/functools.html#module-functoolsX-trXwinregr(jjX:http://docs.python.org/3/library/winreg.html#module-winregX-tr X urllib.parser (jjXFhttp://docs.python.org/3/library/urllib.parse.html#module-urllib.parseX-tr Xstringr (jjX:http://docs.python.org/3/library/string.html#module-stringX-tr Xnntplibr(jjX<http://docs.python.org/3/library/nntplib.html#module-nntplibX-trXzipfiler(jjX<http://docs.python.org/3/library/zipfile.html#module-zipfileX-trXwaver(jjX6http://docs.python.org/3/library/wave.html#module-waveX-trX distutils.cmdr(jjXChttp://docs.python.org/3/distutils/apiref.html#module-distutils.cmdX-trXsslr(jjX4http://docs.python.org/3/library/ssl.html#module-sslX-trXcollections.abcr(jjXLhttp://docs.python.org/3/library/collections.abc.html#module-collections.abcX-trXdatetimer(jjX>http://docs.python.org/3/library/datetime.html#module-datetimeX-trX unittest.mockr(jjXHhttp://docs.python.org/3/library/unittest.mock.html#module-unittest.mockX-trX email.errorsr(jjXFhttp://docs.python.org/3/library/email.errors.html#module-email.errorsX-trXresourcer (jjX>http://docs.python.org/3/library/resource.html#module-resourceX-tr!Xbisectr"(jjX:http://docs.python.org/3/library/bisect.html#module-bisectX-tr#Xcmdr$(jjX4http://docs.python.org/3/library/cmd.html#module-cmdX-tr%Xbinhexr&(jjX:http://docs.python.org/3/library/binhex.html#module-binhexX-tr'Xpydocr((jjX8http://docs.python.org/3/library/pydoc.html#module-pydocX-tr)X html.parserr*(jjXDhttp://docs.python.org/3/library/html.parser.html#module-html.parserX-tr+Xrunpyr,(jjX8http://docs.python.org/3/library/runpy.html#module-runpyX-tr-Xmsilibr.(jjX:http://docs.python.org/3/library/msilib.html#module-msilibX-tr/Xshlexr0(jjX8http://docs.python.org/3/library/shlex.html#module-shlexX-tr1Xmultiprocessing.poolr2(jjXQhttp://docs.python.org/3/library/multiprocessing.html#module-multiprocessing.poolX-tr3Xmultiprocessingr4(jjXLhttp://docs.python.org/3/library/multiprocessing.html#module-multiprocessingX-tr5Xdummy_threadingr6(jjXLhttp://docs.python.org/3/library/dummy_threading.html#module-dummy_threadingX-tr7Xdisr8(jjX4http://docs.python.org/3/library/dis.html#module-disX-tr9Xdistutils.command.bdist_rpmr:(jjXQhttp://docs.python.org/3/distutils/apiref.html#module-distutils.command.bdist_rpmX-tr;Xasyncorer<(jjX>http://docs.python.org/3/library/asyncore.html#module-asyncoreX-tr=X compileallr>(jjXBhttp://docs.python.org/3/library/compileall.html#module-compileallX-tr?Xlocaler@(jjX:http://docs.python.org/3/library/locale.html#module-localeX-trAXatexitrB(jjX:http://docs.python.org/3/library/atexit.html#module-atexitX-trCXxml.sax.saxutilsrD(jjXKhttp://docs.python.org/3/library/xml.sax.utils.html#module-xml.sax.saxutilsX-trEXcalendarrF(jjX>http://docs.python.org/3/library/calendar.html#module-calendarX-trGXmailcaprH(jjX<http://docs.python.org/3/library/mailcap.html#module-mailcapX-trIXtimeitrJ(jjX:http://docs.python.org/3/library/timeit.html#module-timeitX-trKXabcrL(jjX4http://docs.python.org/3/library/abc.html#module-abcX-trMX_threadrN(jjX<http://docs.python.org/3/library/_thread.html#module-_threadX-trOXplistlibrP(jjX>http://docs.python.org/3/library/plistlib.html#module-plistlibX-trQXbdbrR(jjX4http://docs.python.org/3/library/bdb.html#module-bdbX-trSXurllib.responserT(jjXKhttp://docs.python.org/3/library/urllib.request.html#module-urllib.responseX-trUX py_compilerV(jjXBhttp://docs.python.org/3/library/py_compile.html#module-py_compileX-trWXemail.contentmanagerrX(jjXVhttp://docs.python.org/3/library/email.contentmanager.html#module-email.contentmanagerX-trYXtarfilerZ(jjX<http://docs.python.org/3/library/tarfile.html#module-tarfileX-tr[Xpathlibr\(jjX<http://docs.python.org/3/library/pathlib.html#module-pathlibX-tr]Xurllibr^(jjX:http://docs.python.org/3/library/urllib.html#module-urllibX-tr_Xposixr`(jjX8http://docs.python.org/3/library/posix.html#module-posixX-traXdistutils.command.buildrb(jjXMhttp://docs.python.org/3/distutils/apiref.html#module-distutils.command.buildX-trcXemailrd(jjX8http://docs.python.org/3/library/email.html#module-emailX-treXfcntlrf(jjX8http://docs.python.org/3/library/fcntl.html#module-fcntlX-trgXftplibrh(jjX:http://docs.python.org/3/library/ftplib.html#module-ftplibX-triXenumrj(jjX6http://docs.python.org/3/library/enum.html#module-enumX-trkXoptparserl(jjX>http://docs.python.org/3/library/optparse.html#module-optparseX-trmXmailboxrn(jjX<http://docs.python.org/3/library/mailbox.html#module-mailboxX-troXctypesrp(jjX:http://docs.python.org/3/library/ctypes.html#module-ctypesX-trqXcodecsrr(jjX:http://docs.python.org/3/library/codecs.html#module-codecsX-trsXdistutils.ccompilerrt(jjXIhttp://docs.python.org/3/distutils/apiref.html#module-distutils.ccompilerX-truXstructrv(jjX:http://docs.python.org/3/library/struct.html#module-structX-trwXtkinterrx(jjX<http://docs.python.org/3/library/tkinter.html#module-tkinterX-tryX email.headerrz(jjXFhttp://docs.python.org/3/library/email.header.html#module-email.headerX-tr{Xwsgirefr|(jjX<http://docs.python.org/3/library/wsgiref.html#module-wsgirefX-tr}Xqueuer~(jjX8http://docs.python.org/3/library/queue.html#module-queueX-trX itertoolsr(jjX@http://docs.python.org/3/library/itertools.html#module-itertoolsX-trXdistutils.spawnr(jjXEhttp://docs.python.org/3/distutils/apiref.html#module-distutils.spawnX-trXdoctestr(jjX<http://docs.python.org/3/library/doctest.html#module-doctestX-trXpstatsr(jjX;http://docs.python.org/3/library/profile.html#module-pstatsX-trXpdbr(jjX4http://docs.python.org/3/library/pdb.html#module-pdbX-trXbase64r(jjX:http://docs.python.org/3/library/base64.html#module-base64X-trXunittestr(jjX>http://docs.python.org/3/library/unittest.html#module-unittestX-trX http.cookiesr(jjXFhttp://docs.python.org/3/library/http.cookies.html#module-http.cookiesX-trX test.supportr(jjX>http://docs.python.org/3/library/test.html#module-test.supportX-trXtkinter.scrolledtextr(jjXVhttp://docs.python.org/3/library/tkinter.scrolledtext.html#module-tkinter.scrolledtextX-trX email.charsetr(jjXHhttp://docs.python.org/3/library/email.charset.html#module-email.charsetX-trXselectr(jjX:http://docs.python.org/3/library/select.html#module-selectX-trXpkgutilr(jjX<http://docs.python.org/3/library/pkgutil.html#module-pkgutilX-trXplatformr(jjX>http://docs.python.org/3/library/platform.html#module-platformX-trXbinasciir(jjX>http://docs.python.org/3/library/binascii.html#module-binasciiX-trXjsonr(jjX6http://docs.python.org/3/library/json.html#module-jsonX-trXtokenizer(jjX>http://docs.python.org/3/library/tokenize.html#module-tokenizeX-trX fractionsr(jjX@http://docs.python.org/3/library/fractions.html#module-fractionsX-trXcProfiler(jjX=http://docs.python.org/3/library/profile.html#module-cProfileX-trX email.utilsr(jjXChttp://docs.python.org/3/library/email.util.html#module-email.utilsX-trX webbrowserr(jjXBhttp://docs.python.org/3/library/webbrowser.html#module-webbrowserX-trXxml.parsers.expat.errorsr(jjXMhttp://docs.python.org/3/library/pyexpat.html#module-xml.parsers.expat.errorsX-trXemail.iteratorsr(jjXLhttp://docs.python.org/3/library/email.iterators.html#module-email.iteratorsX-trX tkinter.ttkr(jjXDhttp://docs.python.org/3/library/tkinter.ttk.html#module-tkinter.ttkX-trX pickletoolsr(jjXDhttp://docs.python.org/3/library/pickletools.html#module-pickletoolsX-trX unicodedatar(jjXDhttp://docs.python.org/3/library/unicodedata.html#module-unicodedataX-trXdistutils.command.bdist_msir(jjXQhttp://docs.python.org/3/distutils/apiref.html#module-distutils.command.bdist_msiX-trXzlibr(jjX6http://docs.python.org/3/library/zlib.html#module-zlibX-trX modulefinderr(jjXFhttp://docs.python.org/3/library/modulefinder.html#module-modulefinderX-trX faulthandlerr(jjXFhttp://docs.python.org/3/library/faulthandler.html#module-faulthandlerX-trXxml.saxr(jjX<http://docs.python.org/3/library/xml.sax.html#module-xml.saxX-trXshelver(jjX:http://docs.python.org/3/library/shelve.html#module-shelveX-trXfnmatchr(jjX<http://docs.python.org/3/library/fnmatch.html#module-fnmatchX-trXwsgiref.headersr(jjXDhttp://docs.python.org/3/library/wsgiref.html#module-wsgiref.headersX-trXpickler(jjX:http://docs.python.org/3/library/pickle.html#module-pickleX-trX socketserverr(jjXFhttp://docs.python.org/3/library/socketserver.html#module-socketserverX-trXdistutils.command.build_pyr(jjXPhttp://docs.python.org/3/distutils/apiref.html#module-distutils.command.build_pyX-trXsiter(jjX6http://docs.python.org/3/library/site.html#module-siteX-trXnumbersr(jjX<http://docs.python.org/3/library/numbers.html#module-numbersX-trXior(jjX2http://docs.python.org/3/library/io.html#module-ioX-trXdistutils.command.build_extr(jjXQhttp://docs.python.org/3/distutils/apiref.html#module-distutils.command.build_extX-trXshutilr(jjX:http://docs.python.org/3/library/shutil.html#module-shutilX-trX email.messager(jjXHhttp://docs.python.org/3/library/email.message.html#module-email.messageX-trXdistutils.command.sdistr(jjXMhttp://docs.python.org/3/distutils/apiref.html#module-distutils.command.sdistX-trXweakrefr(jjX<http://docs.python.org/3/library/weakref.html#module-weakrefX-trXsndhdrr(jjX:http://docs.python.org/3/library/sndhdr.html#module-sndhdrX-trXwsgiref.validater(jjXEhttp://docs.python.org/3/library/wsgiref.html#module-wsgiref.validateX-trXhtmlr(jjX6http://docs.python.org/3/library/html.html#module-htmlX-trX xmlrpc.clientr(jjXHhttp://docs.python.org/3/library/xmlrpc.client.html#module-xmlrpc.clientX-trXsqlite3r(jjX<http://docs.python.org/3/library/sqlite3.html#module-sqlite3X-trX ossaudiodevr(jjXDhttp://docs.python.org/3/library/ossaudiodev.html#module-ossaudiodevX-trXcsvr(jjX4http://docs.python.org/3/library/csv.html#module-csvX-trXdbm.ndbmr(jjX9http://docs.python.org/3/library/dbm.html#module-dbm.ndbmX-trXprofiler(jjX<http://docs.python.org/3/library/profile.html#module-profileX-trXtabnannyr(jjX>http://docs.python.org/3/library/tabnanny.html#module-tabnannyX-trXschedr(jjX8http://docs.python.org/3/library/sched.html#module-schedX-trXurllib.requestr(jjXJhttp://docs.python.org/3/library/urllib.request.html#module-urllib.requestX-trXdistutils.archive_utilr(jjXLhttp://docs.python.org/3/distutils/apiref.html#module-distutils.archive_utilX-trXsysr(jjX4http://docs.python.org/3/library/sys.html#module-sysX-trXcodeopr(jjX:http://docs.python.org/3/library/codeop.html#module-codeopX-trXnisr(jjX4http://docs.python.org/3/library/nis.html#module-nisX-trX email.parserr(jjXFhttp://docs.python.org/3/library/email.parser.html#module-email.parserX-trX ipaddressr(jjX@http://docs.python.org/3/library/ipaddress.html#module-ipaddressX-trXtypesr(jjX8http://docs.python.org/3/library/types.html#module-typesX-trXargparser(jjX>http://docs.python.org/3/library/argparse.html#module-argparseX-trX xmlrpc.serverr(jjXHhttp://docs.python.org/3/library/xmlrpc.server.html#module-xmlrpc.serverX-trXgrpr(jjX4http://docs.python.org/3/library/grp.html#module-grpX-trXdistutils.corer(jjXDhttp://docs.python.org/3/distutils/apiref.html#module-distutils.coreX-trXdifflibr(jjX<http://docs.python.org/3/library/difflib.html#module-difflibX-tr Xdistutils.errorsr (jjXFhttp://docs.python.org/3/distutils/apiref.html#module-distutils.errorsX-tr X selectorsr (jjX@http://docs.python.org/3/library/selectors.html#module-selectorsX-tr X urllib.errorr(jjXFhttp://docs.python.org/3/library/urllib.error.html#module-urllib.errorX-trXencodings.idnar(jjXBhttp://docs.python.org/3/library/codecs.html#module-encodings.idnaX-trXdistutils.msvccompilerr(jjXLhttp://docs.python.org/3/distutils/apiref.html#module-distutils.msvccompilerX-trXgzipr(jjX6http://docs.python.org/3/library/gzip.html#module-gzipX-trX rlcompleterr(jjXDhttp://docs.python.org/3/library/rlcompleter.html#module-rlcompleterX-trXheapqr(jjX8http://docs.python.org/3/library/heapq.html#module-heapqX-trXconcurrent.futuresr(jjXRhttp://docs.python.org/3/library/concurrent.futures.html#module-concurrent.futuresX-trX distutilsr(jjX@http://docs.python.org/3/library/distutils.html#module-distutilsX-trX html.entitiesr(jjXHhttp://docs.python.org/3/library/html.entities.html#module-html.entitiesX-trXaudioopr (jjX<http://docs.python.org/3/library/audioop.html#module-audioopX-tr!Xdistutils.command.configr"(jjXNhttp://docs.python.org/3/distutils/apiref.html#module-distutils.command.configX-tr#Xaifcr$(jjX6http://docs.python.org/3/library/aifc.html#module-aifcX-tr%X sysconfigr&(jjX@http://docs.python.org/3/library/sysconfig.html#module-sysconfigX-tr'Xvenvr((jjX6http://docs.python.org/3/library/venv.html#module-venvX-tr)Xdistutils.fancy_getoptr*(jjXLhttp://docs.python.org/3/distutils/apiref.html#module-distutils.fancy_getoptX-tr+X http.clientr,(jjXDhttp://docs.python.org/3/library/http.client.html#module-http.clientX-tr-Xxml.parsers.expat.modelr.(jjXLhttp://docs.python.org/3/library/pyexpat.html#module-xml.parsers.expat.modelX-tr/X email.mimer0(jjXBhttp://docs.python.org/3/library/email.mime.html#module-email.mimeX-tr1Xmsvcrtr2(jjX:http://docs.python.org/3/library/msvcrt.html#module-msvcrtX-tr3X distutils.command.bdist_packagerr4(jjXVhttp://docs.python.org/3/distutils/apiref.html#module-distutils.command.bdist_packagerX-tr5Ximportlib.utilr6(jjXEhttp://docs.python.org/3/library/importlib.html#module-importlib.utilX-tr7Xdistutils.command.registerr8(jjXPhttp://docs.python.org/3/distutils/apiref.html#module-distutils.command.registerX-tr9Xdistutils.dep_utilr:(jjXHhttp://docs.python.org/3/distutils/apiref.html#module-distutils.dep_utilX-tr;Xbuiltinsr<(jjX>http://docs.python.org/3/library/builtins.html#module-builtinsX-tr=Xuuidr>(jjX6http://docs.python.org/3/library/uuid.html#module-uuidX-tr?Xtempfiler@(jjX>http://docs.python.org/3/library/tempfile.html#module-tempfileX-trAXmmaprB(jjX6http://docs.python.org/3/library/mmap.html#module-mmapX-trCXimprD(jjX4http://docs.python.org/3/library/imp.html#module-impX-trEXlogging.configrF(jjXJhttp://docs.python.org/3/library/logging.config.html#module-logging.configX-trGX collectionsrH(jjXDhttp://docs.python.org/3/library/collections.html#module-collectionsX-trIXdistutils.filelistrJ(jjXHhttp://docs.python.org/3/distutils/apiref.html#module-distutils.filelistX-trKXdistutils.cygwinccompilerrL(jjXOhttp://docs.python.org/3/distutils/apiref.html#module-distutils.cygwinccompilerX-trMX zipimportrN(jjX@http://docs.python.org/3/library/zipimport.html#module-zipimportX-trOX!distutils.command.install_scriptsrP(jjXWhttp://docs.python.org/3/distutils/apiref.html#module-distutils.command.install_scriptsX-trQXmultiprocessing.dummyrR(jjXRhttp://docs.python.org/3/library/multiprocessing.html#module-multiprocessing.dummyX-trSXtextwraprT(jjX>http://docs.python.org/3/library/textwrap.html#module-textwrapX-trUX importlib.abcrV(jjXDhttp://docs.python.org/3/library/importlib.html#module-importlib.abcX-trWX http.serverrX(jjXDhttp://docs.python.org/3/library/http.server.html#module-http.serverX-trYXmultiprocessing.sharedctypesrZ(jjXYhttp://docs.python.org/3/library/multiprocessing.html#module-multiprocessing.sharedctypesX-tr[Xdecimalr\(jjX<http://docs.python.org/3/library/decimal.html#module-decimalX-tr]Xsunaur^(jjX8http://docs.python.org/3/library/sunau.html#module-sunauX-tr_Xdistutils.command.installr`(jjXOhttp://docs.python.org/3/distutils/apiref.html#module-distutils.command.installX-traXtokenrb(jjX8http://docs.python.org/3/library/token.html#module-tokenX-trcXemail.encodersrd(jjXJhttp://docs.python.org/3/library/email.encoders.html#module-email.encodersX-treXdistutils.command.build_clibrf(jjXRhttp://docs.python.org/3/distutils/apiref.html#module-distutils.command.build_clibX-trgXxml.sax.xmlreaderrh(jjXMhttp://docs.python.org/3/library/xml.sax.reader.html#module-xml.sax.xmlreaderX-triXquoprirj(jjX:http://docs.python.org/3/library/quopri.html#module-quopriX-trkXsignalrl(jjX:http://docs.python.org/3/library/signal.html#module-signalX-trmX curses.asciirn(jjXFhttp://docs.python.org/3/library/curses.ascii.html#module-curses.asciiX-troXdistutils.versionrp(jjXGhttp://docs.python.org/3/distutils/apiref.html#module-distutils.versionX-trqXchunkrr(jjX8http://docs.python.org/3/library/chunk.html#module-chunkX-trsXmacpathrt(jjX<http://docs.python.org/3/library/macpath.html#module-macpathX-truX mimetypesrv(jjX@http://docs.python.org/3/library/mimetypes.html#module-mimetypesX-trwXxml.parsers.expatrx(jjXFhttp://docs.python.org/3/library/pyexpat.html#module-xml.parsers.expatX-tryXdistutils.distrz(jjXDhttp://docs.python.org/3/distutils/apiref.html#module-distutils.distX-tr{Xlzmar|(jjX6http://docs.python.org/3/library/lzma.html#module-lzmaX-tr}Xlogging.handlersr~(jjXNhttp://docs.python.org/3/library/logging.handlers.html#module-logging.handlersX-trXasynchatr(jjX>http://docs.python.org/3/library/asynchat.html#module-asynchatX-trX wsgiref.utilr(jjXAhttp://docs.python.org/3/library/wsgiref.html#module-wsgiref.utilX-trXdistutils.command.bdist_wininstr(jjXUhttp://docs.python.org/3/distutils/apiref.html#module-distutils.command.bdist_wininstX-trXrer(jjX2http://docs.python.org/3/library/re.html#module-reX-trXencodings.utf_8_sigr(jjXGhttp://docs.python.org/3/library/codecs.html#module-encodings.utf_8_sigX-trX!distutils.command.install_headersr(jjXWhttp://docs.python.org/3/distutils/apiref.html#module-distutils.command.install_headersX-trXmultiprocessing.managersr(jjXUhttp://docs.python.org/3/library/multiprocessing.html#module-multiprocessing.managersX-trXglobr(jjX6http://docs.python.org/3/library/glob.html#module-globX-trXmathr(jjX6http://docs.python.org/3/library/math.html#module-mathX-trXcgir(jjX4http://docs.python.org/3/library/cgi.html#module-cgiX-trXastr(jjX4http://docs.python.org/3/library/ast.html#module-astX-trXinspectr(jjX<http://docs.python.org/3/library/inspect.html#module-inspectX-trXemail.headerregistryr(jjXVhttp://docs.python.org/3/library/email.headerregistry.html#module-email.headerregistryX-trXloggingr(jjX<http://docs.python.org/3/library/logging.html#module-loggingX-trXsocketr(jjX:http://docs.python.org/3/library/socket.html#module-socketX-trXimghdrr(jjX:http://docs.python.org/3/library/imghdr.html#module-imghdrX-trX ensurepipr(jjX@http://docs.python.org/3/library/ensurepip.html#module-ensurepipX-trX tracebackr(jjX@http://docs.python.org/3/library/traceback.html#module-tracebackX-trXnetrcr(jjX8http://docs.python.org/3/library/netrc.html#module-netrcX-trXdbm.dumbr(jjX9http://docs.python.org/3/library/dbm.html#module-dbm.dumbX-trX telnetlibr(jjX@http://docs.python.org/3/library/telnetlib.html#module-telnetlibX-trXurllib.robotparserr(jjXRhttp://docs.python.org/3/library/urllib.robotparser.html#module-urllib.robotparserX-trXsmtpdr(jjX8http://docs.python.org/3/library/smtpd.html#module-smtpdX-trXosr(jjX2http://docs.python.org/3/library/os.html#module-osX-trXmarshalr(jjX<http://docs.python.org/3/library/marshal.html#module-marshalX-trXdistutils.command.bdistr(jjXMhttp://docs.python.org/3/distutils/apiref.html#module-distutils.command.bdistX-trX __future__r(jjXBhttp://docs.python.org/3/library/__future__.html#module-__future__X-trXdistutils.command.install_libr(jjXShttp://docs.python.org/3/distutils/apiref.html#module-distutils.command.install_libX-trXcursesr(jjX:http://docs.python.org/3/library/curses.html#module-cursesX-trXdistutils.dir_utilr(jjXHhttp://docs.python.org/3/distutils/apiref.html#module-distutils.dir_utilX-trXdistutils.commandr(jjXGhttp://docs.python.org/3/distutils/apiref.html#module-distutils.commandX-trXfpectlr(jjX:http://docs.python.org/3/library/fpectl.html#module-fpectlX-trX fileinputr(jjX@http://docs.python.org/3/library/fileinput.html#module-fileinputX-trXoperatorr(jjX>http://docs.python.org/3/library/operator.html#module-operatorX-trXdistutils.utilr(jjXDhttp://docs.python.org/3/distutils/apiref.html#module-distutils.utilX-trXarrayr(jjX8http://docs.python.org/3/library/array.html#module-arrayX-trXxml.dom.pulldomr(jjXLhttp://docs.python.org/3/library/xml.dom.pulldom.html#module-xml.dom.pulldomX-trXdistutils.command.install_datar(jjXThttp://docs.python.org/3/distutils/apiref.html#module-distutils.command.install_dataX-trX statisticsr(jjXBhttp://docs.python.org/3/library/statistics.html#module-statisticsX-trXdistutils.command.checkr(jjXMhttp://docs.python.org/3/distutils/apiref.html#module-distutils.command.checkX-trXerrnor(jjX8http://docs.python.org/3/library/errno.html#module-errnoX-trXmultiprocessing.connectionr(jjXWhttp://docs.python.org/3/library/multiprocessing.html#module-multiprocessing.connectionX-trXxml.sax.handlerr(jjXLhttp://docs.python.org/3/library/xml.sax.handler.html#module-xml.sax.handlerX-trXimportlib.machineryr(jjXJhttp://docs.python.org/3/library/importlib.html#module-importlib.machineryX-trXdistutils.command.build_scriptsr(jjXUhttp://docs.python.org/3/distutils/apiref.html#module-distutils.command.build_scriptsX-trXimaplibr(jjX<http://docs.python.org/3/library/imaplib.html#module-imaplibX-trXxdrlibr(jjX:http://docs.python.org/3/library/xdrlib.html#module-xdrlibX-trXpwdr(jjX4http://docs.python.org/3/library/pwd.html#module-pwdX-trXturtler(jjX:http://docs.python.org/3/library/turtle.html#module-turtleX-trXcopyr(jjX6http://docs.python.org/3/library/copy.html#module-copyX-trXhashlibr(jjX<http://docs.python.org/3/library/hashlib.html#module-hashlibX-trX distutils.logr(jjXChttp://docs.python.org/3/distutils/apiref.html#module-distutils.logX-trXkeywordr(jjX<http://docs.python.org/3/library/keyword.html#module-keywordX-trXsyslogr(jjX:http://docs.python.org/3/library/syslog.html#module-syslogX-trXuur(jjX2http://docs.python.org/3/library/uu.html#module-uuX-trXxml.dom.minidomr(jjXLhttp://docs.python.org/3/library/xml.dom.minidom.html#module-xml.dom.minidomX-trX tkinter.tixr(jjXDhttp://docs.python.org/3/library/tkinter.tix.html#module-tkinter.tixX-trX stringprepr(jjXBhttp://docs.python.org/3/library/stringprep.html#module-stringprepX-trXdistutils.extensionr(jjXIhttp://docs.python.org/3/distutils/apiref.html#module-distutils.extensionX-trXcolorsysr(jjX>http://docs.python.org/3/library/colorsys.html#module-colorsysX-trXwinsoundr(jjX>http://docs.python.org/3/library/winsound.html#module-winsoundX-trXdistutils.command.cleanr(jjXMhttp://docs.python.org/3/distutils/apiref.html#module-distutils.command.cleanX-trXreprlibr(jjX<http://docs.python.org/3/library/reprlib.html#module-reprlibX-trXwsgiref.simple_serverr(jjXJhttp://docs.python.org/3/library/wsgiref.html#module-wsgiref.simple_serverX-trXparserr(jjX:http://docs.python.org/3/library/parser.html#module-parserX-trXgetpassr(jjX<http://docs.python.org/3/library/getpass.html#module-getpassX-trX contextlibr(jjXBhttp://docs.python.org/3/library/contextlib.html#module-contextlibX-trX__main__r(jjX>http://docs.python.org/3/library/__main__.html#module-__main__X-trXcopyregr(jjX<http://docs.python.org/3/library/copyreg.html#module-copyregX-tr Xsymtabler (jjX>http://docs.python.org/3/library/symtable.html#module-symtableX-tr Xpyclbrr (jjX:http://docs.python.org/3/library/pyclbr.html#module-pyclbrX-tr X configparserr(jjXFhttp://docs.python.org/3/library/configparser.html#module-configparserX-trXbz2r(jjX4http://docs.python.org/3/library/bz2.html#module-bz2X-trXlib2to3r(jjX9http://docs.python.org/3/library/2to3.html#module-lib2to3X-trX threadingr(jjX@http://docs.python.org/3/library/threading.html#module-threadingX-trXcryptr(jjX8http://docs.python.org/3/library/crypt.html#module-cryptX-trXwsgiref.handlersr(jjXEhttp://docs.python.org/3/library/wsgiref.html#module-wsgiref.handlersX-trXdistutils.unixccompilerr(jjXMhttp://docs.python.org/3/distutils/apiref.html#module-distutils.unixccompilerX-trXgettextr(jjX<http://docs.python.org/3/library/gettext.html#module-gettextX-trXtestr(jjX6http://docs.python.org/3/library/test.html#module-testX-trXgetoptr (jjX:http://docs.python.org/3/library/getopt.html#module-getoptX-tr!Xemail.generatorr"(jjXLhttp://docs.python.org/3/library/email.generator.html#module-email.generatorX-tr#Xstatr$(jjX6http://docs.python.org/3/library/stat.html#module-statX-tr%Xspwdr&(jjX6http://docs.python.org/3/library/spwd.html#module-spwdX-tr'Xdistutils.command.bdist_dumbr((jjXRhttp://docs.python.org/3/distutils/apiref.html#module-distutils.command.bdist_dumbX-tr)Xtracer*(jjX8http://docs.python.org/3/library/trace.html#module-traceX-tr+Xwarningsr,(jjX>http://docs.python.org/3/library/warnings.html#module-warningsX-tr-Xhttp.cookiejarr.(jjXJhttp://docs.python.org/3/library/http.cookiejar.html#module-http.cookiejarX-tr/Xsymbolr0(jjX:http://docs.python.org/3/library/symbol.html#module-symbolX-tr1Xcgitbr2(jjX8http://docs.python.org/3/library/cgitb.html#module-cgitbX-tr3Xtermiosr4(jjX<http://docs.python.org/3/library/termios.html#module-termiosX-tr5Xdistutils.file_utilr6(jjXIhttp://docs.python.org/3/distutils/apiref.html#module-distutils.file_utilX-tr7Xreadliner8(jjX>http://docs.python.org/3/library/readline.html#module-readlineX-tr9Xxml.domr:(jjX<http://docs.python.org/3/library/xml.dom.html#module-xml.domX-tr;X formatterr<(jjX@http://docs.python.org/3/library/formatter.html#module-formatterX-tr=Xencodings.mbcsr>(jjXBhttp://docs.python.org/3/library/codecs.html#module-encodings.mbcsX-tr?Xhmacr@(jjX6http://docs.python.org/3/library/hmac.html#module-hmacX-trAX linecacherB(jjX@http://docs.python.org/3/library/linecache.html#module-linecacheX-trCXcmathrD(jjX8http://docs.python.org/3/library/cmath.html#module-cmathX-trEXtimerF(jjX6http://docs.python.org/3/library/time.html#module-timeX-trGXdistutils.text_filerH(jjXIhttp://docs.python.org/3/distutils/apiref.html#module-distutils.text_fileX-trIXpoplibrJ(jjX:http://docs.python.org/3/library/poplib.html#module-poplibX-trKXpipesrL(jjX8http://docs.python.org/3/library/pipes.html#module-pipesX-trMXasynciorN(jjX<http://docs.python.org/3/library/asyncio.html#module-asyncioX-trOuX std:envvarrP}rQ(XPYTHONIOENCODINGrR(jjXChttp://docs.python.org/3/using/cmdline.html#envvar-PYTHONIOENCODINGX-trSX PYTHONY2KrT(jjX<http://docs.python.org/3/using/cmdline.html#envvar-PYTHONY2KX-trUX PYTHONDEBUGrV(jjX>http://docs.python.org/3/using/cmdline.html#envvar-PYTHONDEBUGX-trWX PYTHONPATHrX(jjX=http://docs.python.org/3/using/cmdline.html#envvar-PYTHONPATHX-trYX PYTHONCASEOKrZ(jjX?http://docs.python.org/3/using/cmdline.html#envvar-PYTHONCASEOKX-tr[XPYTHONDONTWRITEBYTECODEr\(jjXJhttp://docs.python.org/3/using/cmdline.html#envvar-PYTHONDONTWRITEBYTECODEX-tr]X PYTHONHOMEr^(jjX=http://docs.python.org/3/using/cmdline.html#envvar-PYTHONHOMEX-tr_XPYTHONFAULTHANDLERr`(jjXEhttp://docs.python.org/3/using/cmdline.html#envvar-PYTHONFAULTHANDLERX-traXPYTHONEXECUTABLErb(jjXChttp://docs.python.org/3/using/cmdline.html#envvar-PYTHONEXECUTABLEX-trcXPYTHONUNBUFFEREDrd(jjXChttp://docs.python.org/3/using/cmdline.html#envvar-PYTHONUNBUFFEREDX-treXPYTHONDUMPREFSrf(jjXAhttp://docs.python.org/3/using/cmdline.html#envvar-PYTHONDUMPREFSX-trgXPYTHONASYNCIODEBUGrh(jjXEhttp://docs.python.org/3/using/cmdline.html#envvar-PYTHONASYNCIODEBUGX-triXPYTHONTHREADDEBUGrj(jjXDhttp://docs.python.org/3/using/cmdline.html#envvar-PYTHONTHREADDEBUGX-trkX PYTHONINSPECTrl(jjX@http://docs.python.org/3/using/cmdline.html#envvar-PYTHONINSPECTX-trmX PYTHONSTARTUPrn(jjX@http://docs.python.org/3/using/cmdline.html#envvar-PYTHONSTARTUPX-troX PYTHONVERBOSErp(jjX@http://docs.python.org/3/using/cmdline.html#envvar-PYTHONVERBOSEX-trqXPYTHONMALLOCSTATSrr(jjXDhttp://docs.python.org/3/using/cmdline.html#envvar-PYTHONMALLOCSTATSX-trsXPYTHONHASHSEEDrt(jjXAhttp://docs.python.org/3/using/cmdline.html#envvar-PYTHONHASHSEEDX-truXPYTHONTRACEMALLOCrv(jjXDhttp://docs.python.org/3/using/cmdline.html#envvar-PYTHONTRACEMALLOCX-trwXPYTHONNOUSERSITErx(jjXChttp://docs.python.org/3/using/cmdline.html#envvar-PYTHONNOUSERSITEX-tryXPYTHONWARNINGSrz(jjXAhttp://docs.python.org/3/using/cmdline.html#envvar-PYTHONWARNINGSX-tr{XPYTHONOPTIMIZEr|(jjXAhttp://docs.python.org/3/using/cmdline.html#envvar-PYTHONOPTIMIZEX-tr}XPYTHONUSERBASEr~(jjXAhttp://docs.python.org/3/using/cmdline.html#envvar-PYTHONUSERBASEX-truX std:opcoder}r(XLOAD_CLASSDEREFr(jjX@http://docs.python.org/3/library/dis.html#opcode-LOAD_CLASSDEREFX-trX LIST_APPENDr(jjX<http://docs.python.org/3/library/dis.html#opcode-LIST_APPENDX-trX INPLACE_XORr(jjX<http://docs.python.org/3/library/dis.html#opcode-INPLACE_XORX-trX CALL_FUNCTIONr(jjX>http://docs.python.org/3/library/dis.html#opcode-CALL_FUNCTIONX-trXDUP_TOPr(jjX8http://docs.python.org/3/library/dis.html#opcode-DUP_TOPX-trX STORE_GLOBALr(jjX=http://docs.python.org/3/library/dis.html#opcode-STORE_GLOBALX-trXINPLACE_SUBTRACTr(jjXAhttp://docs.python.org/3/library/dis.html#opcode-INPLACE_SUBTRACTX-trX INPLACE_POWERr(jjX>http://docs.python.org/3/library/dis.html#opcode-INPLACE_POWERX-trX DELETE_SUBSCRr(jjX>http://docs.python.org/3/library/dis.html#opcode-DELETE_SUBSCRX-trX STORE_ATTRr(jjX;http://docs.python.org/3/library/dis.html#opcode-STORE_ATTRX-trX YIELD_VALUEr(jjX<http://docs.python.org/3/library/dis.html#opcode-YIELD_VALUEX-trX END_FINALLYr(jjX<http://docs.python.org/3/library/dis.html#opcode-END_FINALLYX-trXINPLACE_FLOOR_DIVIDEr(jjXEhttp://docs.python.org/3/library/dis.html#opcode-INPLACE_FLOOR_DIVIDEX-trX MAKE_FUNCTIONr(jjX>http://docs.python.org/3/library/dis.html#opcode-MAKE_FUNCTIONX-trXMAP_ADDr(jjX8http://docs.python.org/3/library/dis.html#opcode-MAP_ADDX-trX BINARY_XORr(jjX;http://docs.python.org/3/library/dis.html#opcode-BINARY_XORX-trX BREAK_LOOPr(jjX;http://docs.python.org/3/library/dis.html#opcode-BREAK_LOOPX-trX STORE_SUBSCRr(jjX=http://docs.python.org/3/library/dis.html#opcode-STORE_SUBSCRX-trX UNPACK_EXr(jjX:http://docs.python.org/3/library/dis.html#opcode-UNPACK_EXX-trX RETURN_VALUEr(jjX=http://docs.python.org/3/library/dis.html#opcode-RETURN_VALUEX-trXINPLACE_MULTIPLYr(jjXAhttp://docs.python.org/3/library/dis.html#opcode-INPLACE_MULTIPLYX-trX POP_BLOCKr(jjX:http://docs.python.org/3/library/dis.html#opcode-POP_BLOCKX-trX LOAD_ATTRr(jjX:http://docs.python.org/3/library/dis.html#opcode-LOAD_ATTRX-trX SETUP_LOOPr(jjX;http://docs.python.org/3/library/dis.html#opcode-SETUP_LOOPX-trX BUILD_SETr(jjX:http://docs.python.org/3/library/dis.html#opcode-BUILD_SETX-trXPOP_TOPr(jjX8http://docs.python.org/3/library/dis.html#opcode-POP_TOPX-trXBINARY_TRUE_DIVIDEr(jjXChttp://docs.python.org/3/library/dis.html#opcode-BINARY_TRUE_DIVIDEX-trXROT_TWOr(jjX8http://docs.python.org/3/library/dis.html#opcode-ROT_TWOX-trX LOAD_CONSTr(jjX;http://docs.python.org/3/library/dis.html#opcode-LOAD_CONSTX-trX SETUP_FINALLYr(jjX>http://docs.python.org/3/library/dis.html#opcode-SETUP_FINALLYX-trX IMPORT_FROMr(jjX<http://docs.python.org/3/library/dis.html#opcode-IMPORT_FROMX-trXINPLACE_TRUE_DIVIDEr(jjXDhttp://docs.python.org/3/library/dis.html#opcode-INPLACE_TRUE_DIVIDEX-trXUNARY_POSITIVEr(jjX?http://docs.python.org/3/library/dis.html#opcode-UNARY_POSITIVEX-trXCALL_FUNCTION_KWr(jjXAhttp://docs.python.org/3/library/dis.html#opcode-CALL_FUNCTION_KWX-trX INPLACE_ANDr(jjX<http://docs.python.org/3/library/dis.html#opcode-INPLACE_ANDX-trXCALL_FUNCTION_VAR_KWr(jjXEhttp://docs.python.org/3/library/dis.html#opcode-CALL_FUNCTION_VAR_KWX-trX DELETE_FASTr(jjX<http://docs.python.org/3/library/dis.html#opcode-DELETE_FASTX-trX EXTENDED_ARGr(jjX=http://docs.python.org/3/library/dis.html#opcode-EXTENDED_ARGX-trX SETUP_EXCEPTr(jjX=http://docs.python.org/3/library/dis.html#opcode-SETUP_EXCEPTX-trX STORE_NAMEr(jjX;http://docs.python.org/3/library/dis.html#opcode-STORE_NAMEX-trX IMPORT_NAMEr(jjX<http://docs.python.org/3/library/dis.html#opcode-IMPORT_NAMEX-trXUNARY_NEGATIVEr(jjX?http://docs.python.org/3/library/dis.html#opcode-UNARY_NEGATIVEX-trX LOAD_GLOBALr(jjX<http://docs.python.org/3/library/dis.html#opcode-LOAD_GLOBALX-trX LOAD_NAMEr(jjX:http://docs.python.org/3/library/dis.html#opcode-LOAD_NAMEX-trX YIELD_FROMr(jjX;http://docs.python.org/3/library/dis.html#opcode-YIELD_FROMX-trXFOR_ITERr(jjX9http://docs.python.org/3/library/dis.html#opcode-FOR_ITERX-trX DELETE_NAMEr(jjX<http://docs.python.org/3/library/dis.html#opcode-DELETE_NAMEX-trX BUILD_TUPLEr(jjX<http://docs.python.org/3/library/dis.html#opcode-BUILD_TUPLEX-trX BUILD_LISTr(jjX;http://docs.python.org/3/library/dis.html#opcode-BUILD_LISTX-trX DELETE_DEREFr(jjX=http://docs.python.org/3/library/dis.html#opcode-DELETE_DEREFX-trX HAVE_ARGUMENTr(jjX>http://docs.python.org/3/library/dis.html#opcode-HAVE_ARGUMENTX-trX COMPARE_OPr(jjX;http://docs.python.org/3/library/dis.html#opcode-COMPARE_OPX-trX BINARY_ORr(jjX:http://docs.python.org/3/library/dis.html#opcode-BINARY_ORX-trXUNPACK_SEQUENCEr(jjX@http://docs.python.org/3/library/dis.html#opcode-UNPACK_SEQUENCEX-trX STORE_FASTr(jjX;http://docs.python.org/3/library/dis.html#opcode-STORE_FASTX-trX BINARY_ANDr(jjX;http://docs.python.org/3/library/dis.html#opcode-BINARY_ANDX-trXCALL_FUNCTION_VARr(jjXBhttp://docs.python.org/3/library/dis.html#opcode-CALL_FUNCTION_VARX-trX WITH_CLEANUPr(jjX=http://docs.python.org/3/library/dis.html#opcode-WITH_CLEANUPX-trX DELETE_ATTRr(jjX<http://docs.python.org/3/library/dis.html#opcode-DELETE_ATTRX-trXPOP_JUMP_IF_TRUEr(jjXAhttp://docs.python.org/3/library/dis.html#opcode-POP_JUMP_IF_TRUEX-trXJUMP_IF_FALSE_OR_POPr(jjXEhttp://docs.python.org/3/library/dis.html#opcode-JUMP_IF_FALSE_OR_POPX-trXSET_ADDr(jjX8http://docs.python.org/3/library/dis.html#opcode-SET_ADDX-trX CONTINUE_LOOPr(jjX>http://docs.python.org/3/library/dis.html#opcode-CONTINUE_LOOPX-trX LOAD_DEREFr(jjX;http://docs.python.org/3/library/dis.html#opcode-LOAD_DEREFX-trX RAISE_VARARGSr(jjX>http://docs.python.org/3/library/dis.html#opcode-RAISE_VARARGSX-trXPOP_JUMP_IF_FALSEr(jjXBhttp://docs.python.org/3/library/dis.html#opcode-POP_JUMP_IF_FALSEX-trX DELETE_GLOBALr(jjX>http://docs.python.org/3/library/dis.html#opcode-DELETE_GLOBALX-trX BINARY_MODULOr(jjX>http://docs.python.org/3/library/dis.html#opcode-BINARY_MODULOX-tr XGET_ITERr (jjX9http://docs.python.org/3/library/dis.html#opcode-GET_ITERX-tr X STORE_DEREFr (jjX<http://docs.python.org/3/library/dis.html#opcode-STORE_DEREFX-tr X BINARY_ADDr(jjX;http://docs.python.org/3/library/dis.html#opcode-BINARY_ADDX-trX LOAD_FASTr(jjX:http://docs.python.org/3/library/dis.html#opcode-LOAD_FASTX-trX UNARY_NOTr(jjX:http://docs.python.org/3/library/dis.html#opcode-UNARY_NOTX-trX BINARY_LSHIFTr(jjX>http://docs.python.org/3/library/dis.html#opcode-BINARY_LSHIFTX-trXJUMP_IF_TRUE_OR_POPr(jjXDhttp://docs.python.org/3/library/dis.html#opcode-JUMP_IF_TRUE_OR_POPX-trX LOAD_CLOSUREr(jjX=http://docs.python.org/3/library/dis.html#opcode-LOAD_CLOSUREX-trX DUP_TOP_TWOr(jjX<http://docs.python.org/3/library/dis.html#opcode-DUP_TOP_TWOX-trX IMPORT_STARr(jjX<http://docs.python.org/3/library/dis.html#opcode-IMPORT_STARX-trXBINARY_FLOOR_DIVIDEr(jjXDhttp://docs.python.org/3/library/dis.html#opcode-BINARY_FLOOR_DIVIDEX-trX INPLACE_ORr (jjX;http://docs.python.org/3/library/dis.html#opcode-INPLACE_ORX-tr!X BINARY_RSHIFTr"(jjX>http://docs.python.org/3/library/dis.html#opcode-BINARY_RSHIFTX-tr#XLOAD_BUILD_CLASSr$(jjXAhttp://docs.python.org/3/library/dis.html#opcode-LOAD_BUILD_CLASSX-tr%XBINARY_SUBTRACTr&(jjX@http://docs.python.org/3/library/dis.html#opcode-BINARY_SUBTRACTX-tr'X STORE_MAPr((jjX:http://docs.python.org/3/library/dis.html#opcode-STORE_MAPX-tr)X INPLACE_ADDr*(jjX<http://docs.python.org/3/library/dis.html#opcode-INPLACE_ADDX-tr+XINPLACE_LSHIFTr,(jjX?http://docs.python.org/3/library/dis.html#opcode-INPLACE_LSHIFTX-tr-XINPLACE_MODULOr.(jjX?http://docs.python.org/3/library/dis.html#opcode-INPLACE_MODULOX-tr/X BINARY_SUBSCRr0(jjX>http://docs.python.org/3/library/dis.html#opcode-BINARY_SUBSCRX-tr1X BINARY_POWERr2(jjX=http://docs.python.org/3/library/dis.html#opcode-BINARY_POWERX-tr3X POP_EXCEPTr4(jjX;http://docs.python.org/3/library/dis.html#opcode-POP_EXCEPTX-tr5X BUILD_MAPr6(jjX:http://docs.python.org/3/library/dis.html#opcode-BUILD_MAPX-tr7X ROT_THREEr8(jjX:http://docs.python.org/3/library/dis.html#opcode-ROT_THREEX-tr9X SETUP_WITHr:(jjX;http://docs.python.org/3/library/dis.html#opcode-SETUP_WITHX-tr;X UNARY_INVERTr<(jjX=http://docs.python.org/3/library/dis.html#opcode-UNARY_INVERTX-tr=X PRINT_EXPRr>(jjX;http://docs.python.org/3/library/dis.html#opcode-PRINT_EXPRX-tr?XINPLACE_RSHIFTr@(jjX?http://docs.python.org/3/library/dis.html#opcode-INPLACE_RSHIFTX-trAX MAKE_CLOSURErB(jjX=http://docs.python.org/3/library/dis.html#opcode-MAKE_CLOSUREX-trCXBINARY_MULTIPLYrD(jjX@http://docs.python.org/3/library/dis.html#opcode-BINARY_MULTIPLYX-trEX BUILD_SLICErF(jjX<http://docs.python.org/3/library/dis.html#opcode-BUILD_SLICEX-trGX JUMP_ABSOLUTErH(jjX>http://docs.python.org/3/library/dis.html#opcode-JUMP_ABSOLUTEX-trIXNOPrJ(jjX4http://docs.python.org/3/library/dis.html#opcode-NOPX-trKX JUMP_FORWARDrL(jjX=http://docs.python.org/3/library/dis.html#opcode-JUMP_FORWARDX-trMuX std:2to3fixerrN}rO(XxrangerP(jjX;http://docs.python.org/3/library/2to3.html#2to3fixer-xrangeX-trQX numliteralsrR(jjX@http://docs.python.org/3/library/2to3.html#2to3fixer-numliteralsX-trSXreducerT(jjX;http://docs.python.org/3/library/2to3.html#2to3fixer-reduceX-trUX set_literalrV(jjX@http://docs.python.org/3/library/2to3.html#2to3fixer-set_literalX-trWXimports2rX(jjX=http://docs.python.org/3/library/2to3.html#2to3fixer-imports2X-trYXinternrZ(jjX;http://docs.python.org/3/library/2to3.html#2to3fixer-internX-tr[Xhas_keyr\(jjX<http://docs.python.org/3/library/2to3.html#2to3fixer-has_keyX-tr]Xlongr^(jjX9http://docs.python.org/3/library/2to3.html#2to3fixer-longX-tr_Xunicoder`(jjX<http://docs.python.org/3/library/2to3.html#2to3fixer-unicodeX-traX xreadlinesrb(jjX?http://docs.python.org/3/library/2to3.html#2to3fixer-xreadlinesX-trcXoperatorrd(jjX=http://docs.python.org/3/library/2to3.html#2to3fixer-operatorX-treXapplyrf(jjX:http://docs.python.org/3/library/2to3.html#2to3fixer-applyX-trgX isinstancerh(jjX?http://docs.python.org/3/library/2to3.html#2to3fixer-isinstanceX-triXnonzerorj(jjX<http://docs.python.org/3/library/2to3.html#2to3fixer-nonzeroX-trkX basestringrl(jjX?http://docs.python.org/3/library/2to3.html#2to3fixer-basestringX-trmXraisern(jjX:http://docs.python.org/3/library/2to3.html#2to3fixer-raiseX-troXstandard_errorrp(jjXChttp://docs.python.org/3/library/2to3.html#2to3fixer-standard_errorX-trqXgetcwdurr(jjX<http://docs.python.org/3/library/2to3.html#2to3fixer-getcwduX-trsXexecfilert(jjX=http://docs.python.org/3/library/2to3.html#2to3fixer-execfileX-truXurllibrv(jjX;http://docs.python.org/3/library/2to3.html#2to3fixer-urllibX-trwX funcattrsrx(jjX>http://docs.python.org/3/library/2to3.html#2to3fixer-funcattrsX-tryXfuturerz(jjX;http://docs.python.org/3/library/2to3.html#2to3fixer-futureX-tr{Xdictr|(jjX9http://docs.python.org/3/library/2to3.html#2to3fixer-dictX-tr}Xitertools_importsr~(jjXFhttp://docs.python.org/3/library/2to3.html#2to3fixer-itertools_importsX-trXimportsr(jjX<http://docs.python.org/3/library/2to3.html#2to3fixer-importsX-trXprintr(jjX:http://docs.python.org/3/library/2to3.html#2to3fixer-printX-trXimportr(jjX;http://docs.python.org/3/library/2to3.html#2to3fixer-importX-trXws_commar(jjX=http://docs.python.org/3/library/2to3.html#2to3fixer-ws_commaX-trX metaclassr(jjX>http://docs.python.org/3/library/2to3.html#2to3fixer-metaclassX-trXexceptr(jjX;http://docs.python.org/3/library/2to3.html#2to3fixer-exceptX-trXmapr(jjX8http://docs.python.org/3/library/2to3.html#2to3fixer-mapX-trXassertsr(jjX<http://docs.python.org/3/library/2to3.html#2to3fixer-assertsX-trXexecr(jjX9http://docs.python.org/3/library/2to3.html#2to3fixer-execX-trXbufferr(jjX;http://docs.python.org/3/library/2to3.html#2to3fixer-bufferX-trX tuple_paramsr(jjXAhttp://docs.python.org/3/library/2to3.html#2to3fixer-tuple_paramsX-trXreprr(jjX9http://docs.python.org/3/library/2to3.html#2to3fixer-reprX-trXcallabler(jjX=http://docs.python.org/3/library/2to3.html#2to3fixer-callableX-trXnextr(jjX9http://docs.python.org/3/library/2to3.html#2to3fixer-nextX-trXinputr(jjX:http://docs.python.org/3/library/2to3.html#2to3fixer-inputX-trXthrowr(jjX:http://docs.python.org/3/library/2to3.html#2to3fixer-throwX-trXtypesr(jjX:http://docs.python.org/3/library/2to3.html#2to3fixer-typesX-trXzipr(jjX8http://docs.python.org/3/library/2to3.html#2to3fixer-zipX-trXrenamesr(jjX<http://docs.python.org/3/library/2to3.html#2to3fixer-renamesX-trXner(jjX7http://docs.python.org/3/library/2to3.html#2to3fixer-neX-trXidiomsr(jjX;http://docs.python.org/3/library/2to3.html#2to3fixer-idiomsX-trX raw_inputr(jjX>http://docs.python.org/3/library/2to3.html#2to3fixer-raw_inputX-trXparenr(jjX:http://docs.python.org/3/library/2to3.html#2to3fixer-parenX-trXfilterr(jjX;http://docs.python.org/3/library/2to3.html#2to3fixer-filterX-trXreloadr(jjX;http://docs.python.org/3/library/2to3.html#2to3fixer-reloadX-trX itertoolsr(jjX>http://docs.python.org/3/library/2to3.html#2to3fixer-itertoolsX-trXsys_excr(jjX<http://docs.python.org/3/library/2to3.html#2to3fixer-sys_excX-trX methodattrsr(jjX@http://docs.python.org/3/library/2to3.html#2to3fixer-methodattrsX-trXexitfuncr(jjX=http://docs.python.org/3/library/2to3.html#2to3fixer-exitfuncX-truXc:macror}r(XPyBUF_F_CONTIGUOUSr(jjX?http://docs.python.org/3/c-api/buffer.html#c.PyBUF_F_CONTIGUOUSX-trXPy_RETURN_NOTIMPLEMENTEDr(jjXEhttp://docs.python.org/3/c-api/object.html#c.Py_RETURN_NOTIMPLEMENTEDX-trX PyObject_HEADr(jjX>http://docs.python.org/3/c-api/structures.html#c.PyObject_HEADX-trXPyVarObject_HEAD_INITr(jjXFhttp://docs.python.org/3/c-api/structures.html#c.PyVarObject_HEAD_INITX-trXPy_BLOCK_THREADSr(jjX;http://docs.python.org/3/c-api/init.html#c.Py_BLOCK_THREADSX-trXPyBUF_INDIRECTr(jjX;http://docs.python.org/3/c-api/buffer.html#c.PyBUF_INDIRECTX-trXPyUnicode_4BYTE_KINDr(jjXBhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_4BYTE_KINDX-trX PyBUF_FULL_ROr(jjX:http://docs.python.org/3/c-api/buffer.html#c.PyBUF_FULL_ROX-trXPyObject_HEAD_INITr(jjXChttp://docs.python.org/3/c-api/structures.html#c.PyObject_HEAD_INITX-trXPy_RETURN_NONEr(jjX9http://docs.python.org/3/c-api/none.html#c.Py_RETURN_NONEX-trXPyBUF_RECORDS_ROr(jjX=http://docs.python.org/3/c-api/buffer.html#c.PyBUF_RECORDS_ROX-trXPy_UNICODE_JOIN_SURROGATESr(jjXHhttp://docs.python.org/3/c-api/unicode.html#c.Py_UNICODE_JOIN_SURROGATESX-trXPyBUF_WRITABLEr(jjX;http://docs.python.org/3/c-api/buffer.html#c.PyBUF_WRITABLEX-trX PyBUF_STRIDESr(jjX:http://docs.python.org/3/c-api/buffer.html#c.PyBUF_STRIDESX-trXPyBUF_C_CONTIGUOUSr(jjX?http://docs.python.org/3/c-api/buffer.html#c.PyBUF_C_CONTIGUOUSX-trX PyBUF_FORMATr(jjX9http://docs.python.org/3/c-api/buffer.html#c.PyBUF_FORMATX-trXPyBUF_CONTIG_ROr(jjX<http://docs.python.org/3/c-api/buffer.html#c.PyBUF_CONTIG_ROX-trXPy_RETURN_FALSEr(jjX:http://docs.python.org/3/c-api/bool.html#c.Py_RETURN_FALSEX-trXPy_BEGIN_ALLOW_THREADSr(jjXAhttp://docs.python.org/3/c-api/init.html#c.Py_BEGIN_ALLOW_THREADSX-trX PyBUF_CONTIGr(jjX9http://docs.python.org/3/c-api/buffer.html#c.PyBUF_CONTIGX-trX PyBUF_STRIDEDr(jjX:http://docs.python.org/3/c-api/buffer.html#c.PyBUF_STRIDEDX-trXPyUnicode_2BYTE_KINDr(jjXBhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_2BYTE_KINDX-trXPy_UNBLOCK_THREADSr(jjX=http://docs.python.org/3/c-api/init.html#c.Py_UNBLOCK_THREADSX-trXPy_UNICODE_IS_SURROGATEr(jjXEhttp://docs.python.org/3/c-api/unicode.html#c.Py_UNICODE_IS_SURROGATEX-trX PyBUF_RECORDSr(jjX:http://docs.python.org/3/c-api/buffer.html#c.PyBUF_RECORDSX-trXPyBUF_NDr(jjX5http://docs.python.org/3/c-api/buffer.html#c.PyBUF_NDX-trX PyBUF_FULLr(jjX7http://docs.python.org/3/c-api/buffer.html#c.PyBUF_FULLX-trXPyObject_VAR_HEADr(jjXBhttp://docs.python.org/3/c-api/structures.html#c.PyObject_VAR_HEADX-trX PyBUF_SIMPLEr(jjX9http://docs.python.org/3/c-api/buffer.html#c.PyBUF_SIMPLEX-trXPyUnicode_WCHAR_KINDr(jjXBhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_WCHAR_KINDX-trXPy_UNICODE_IS_LOW_SURROGATEr(jjXIhttp://docs.python.org/3/c-api/unicode.html#c.Py_UNICODE_IS_LOW_SURROGATEX-trXPyUnicode_1BYTE_KINDr(jjXBhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_1BYTE_KINDX-trXPy_UNICODE_IS_HIGH_SURROGATEr(jjXJhttp://docs.python.org/3/c-api/unicode.html#c.Py_UNICODE_IS_HIGH_SURROGATEX-trXPy_END_ALLOW_THREADSr(jjX?http://docs.python.org/3/c-api/init.html#c.Py_END_ALLOW_THREADSX-trXPyBUF_ANY_CONTIGUOUSr(jjXAhttp://docs.python.org/3/c-api/buffer.html#c.PyBUF_ANY_CONTIGUOUSX-trXPy_RETURN_TRUEr(jjX9http://docs.python.org/3/c-api/bool.html#c.Py_RETURN_TRUEX-trXPyBUF_STRIDED_ROr(jjX=http://docs.python.org/3/c-api/buffer.html#c.PyBUF_STRIDED_ROX-truXstd:pdbcommandr}r(Xhelpr(jjX9http://docs.python.org/3/library/pdb.html#pdbcommand-helpX-tr Xjumpr (jjX9http://docs.python.org/3/library/pdb.html#pdbcommand-jumpX-tr X undisplayr (jjX>http://docs.python.org/3/library/pdb.html#pdbcommand-undisplayX-tr Xrunr(jjX8http://docs.python.org/3/library/pdb.html#pdbcommand-runX-trXtbreakr(jjX;http://docs.python.org/3/library/pdb.html#pdbcommand-tbreakX-trX!(jjX6http://docs.python.org/3/library/pdb.html#pdbcommand-!X-trXquitr(jjX9http://docs.python.org/3/library/pdb.html#pdbcommand-quitX-trXppr(jjX7http://docs.python.org/3/library/pdb.html#pdbcommand-ppX-trXp(jjX6http://docs.python.org/3/library/pdb.html#pdbcommand-pX-trXunaliasr(jjX<http://docs.python.org/3/library/pdb.html#pdbcommand-unaliasX-trXinteractr(jjX=http://docs.python.org/3/library/pdb.html#pdbcommand-interactX-trXnextr(jjX9http://docs.python.org/3/library/pdb.html#pdbcommand-nextX-trXsourcer(jjX;http://docs.python.org/3/library/pdb.html#pdbcommand-sourceX-trX conditionr (jjX>http://docs.python.org/3/library/pdb.html#pdbcommand-conditionX-tr!Xuntilr"(jjX:http://docs.python.org/3/library/pdb.html#pdbcommand-untilX-tr#Xenabler$(jjX;http://docs.python.org/3/library/pdb.html#pdbcommand-enableX-tr%Xreturnr&(jjX;http://docs.python.org/3/library/pdb.html#pdbcommand-returnX-tr'Xargsr((jjX9http://docs.python.org/3/library/pdb.html#pdbcommand-argsX-tr)Xbreakr*(jjX:http://docs.python.org/3/library/pdb.html#pdbcommand-breakX-tr+Xstepr,(jjX9http://docs.python.org/3/library/pdb.html#pdbcommand-stepX-tr-Xdisabler.(jjX<http://docs.python.org/3/library/pdb.html#pdbcommand-disableX-tr/Xrestartr0(jjX<http://docs.python.org/3/library/pdb.html#pdbcommand-restartX-tr1Xdownr2(jjX9http://docs.python.org/3/library/pdb.html#pdbcommand-downX-tr3Xcommandsr4(jjX=http://docs.python.org/3/library/pdb.html#pdbcommand-commandsX-tr5Xwhatisr6(jjX;http://docs.python.org/3/library/pdb.html#pdbcommand-whatisX-tr7Xclearr8(jjX:http://docs.python.org/3/library/pdb.html#pdbcommand-clearX-tr9Xlistr:(jjX9http://docs.python.org/3/library/pdb.html#pdbcommand-listX-tr;Xupr<(jjX7http://docs.python.org/3/library/pdb.html#pdbcommand-upX-tr=Xdisplayr>(jjX<http://docs.python.org/3/library/pdb.html#pdbcommand-displayX-tr?Xignorer@(jjX;http://docs.python.org/3/library/pdb.html#pdbcommand-ignoreX-trAXaliasrB(jjX:http://docs.python.org/3/library/pdb.html#pdbcommand-aliasX-trCXcontinuerD(jjX=http://docs.python.org/3/library/pdb.html#pdbcommand-continueX-trEXwhererF(jjX:http://docs.python.org/3/library/pdb.html#pdbcommand-whereX-trGXllrH(jjX7http://docs.python.org/3/library/pdb.html#pdbcommand-llX-trIuX std:tokenrJ}rK(Xtry_stmtrL(jjXMhttp://docs.python.org/3/reference/compound_stmts.html#grammar-token-try_stmtX-trMX longstringrN(jjXQhttp://docs.python.org/3/reference/lexical_analysis.html#grammar-token-longstringX-trOXshortstringitemrP(jjXVhttp://docs.python.org/3/reference/lexical_analysis.html#grammar-token-shortstringitemX-trQXdirective_option_namerR(jjXQhttp://docs.python.org/3/library/doctest.html#grammar-token-directive_option_nameX-trSX parenth_formrT(jjXNhttp://docs.python.org/3/reference/expressions.html#grammar-token-parenth_formX-trUXhexdigitrV(jjXOhttp://docs.python.org/3/reference/lexical_analysis.html#grammar-token-hexdigitX-trWXassignment_stmtrX(jjXRhttp://docs.python.org/3/reference/simple_stmts.html#grammar-token-assignment_stmtX-trYXsuiterZ(jjXJhttp://docs.python.org/3/reference/compound_stmts.html#grammar-token-suiteX-tr[X try2_stmtr\(jjXNhttp://docs.python.org/3/reference/compound_stmts.html#grammar-token-try2_stmtX-tr]Xand_exprr^(jjXJhttp://docs.python.org/3/reference/expressions.html#grammar-token-and_exprX-tr_Xdigitr`(jjXLhttp://docs.python.org/3/reference/lexical_analysis.html#grammar-token-digitX-traXlongstringitemrb(jjXUhttp://docs.python.org/3/reference/lexical_analysis.html#grammar-token-longstringitemX-trcX simple_stmtrd(jjXNhttp://docs.python.org/3/reference/simple_stmts.html#grammar-token-simple_stmtX-treX lower_boundrf(jjXMhttp://docs.python.org/3/reference/expressions.html#grammar-token-lower_boundX-trgX exponentfloatrh(jjXThttp://docs.python.org/3/reference/lexical_analysis.html#grammar-token-exponentfloatX-triXclassdefrj(jjXMhttp://docs.python.org/3/reference/compound_stmts.html#grammar-token-classdefX-trkX bytesprefixrl(jjXRhttp://docs.python.org/3/reference/lexical_analysis.html#grammar-token-bytesprefixX-trmXslicingrn(jjXIhttp://docs.python.org/3/reference/expressions.html#grammar-token-slicingX-troXfor_stmtrp(jjXMhttp://docs.python.org/3/reference/compound_stmts.html#grammar-token-for_stmtX-trqXlongstringcharrr(jjXUhttp://docs.python.org/3/reference/lexical_analysis.html#grammar-token-longstringcharX-trsX binintegerrt(jjXQhttp://docs.python.org/3/reference/lexical_analysis.html#grammar-token-binintegerX-truXintegerrv(jjXNhttp://docs.python.org/3/reference/lexical_analysis.html#grammar-token-integerX-trwX longbytesitemrx(jjXThttp://docs.python.org/3/reference/lexical_analysis.html#grammar-token-longbytesitemX-tryX decoratorrz(jjXNhttp://docs.python.org/3/reference/compound_stmts.html#grammar-token-decoratorX-tr{Xnamer|(jjXGhttp://docs.python.org/3/reference/simple_stmts.html#grammar-token-nameX-tr}X key_datumr~(jjXKhttp://docs.python.org/3/reference/expressions.html#grammar-token-key_datumX-trXnumeric_stringr(jjXLhttp://docs.python.org/3/library/functions.html#grammar-token-numeric_stringX-trX dict_displayr(jjXNhttp://docs.python.org/3/reference/expressions.html#grammar-token-dict_displayX-trXif_stmtr(jjXLhttp://docs.python.org/3/reference/compound_stmts.html#grammar-token-if_stmtX-trXparameter_listr(jjXShttp://docs.python.org/3/reference/compound_stmts.html#grammar-token-parameter_listX-trXdirective_optionr(jjXLhttp://docs.python.org/3/library/doctest.html#grammar-token-directive_optionX-trX list_displayr(jjXNhttp://docs.python.org/3/reference/expressions.html#grammar-token-list_displayX-trXor_testr(jjXIhttp://docs.python.org/3/reference/expressions.html#grammar-token-or_testX-trXfuncnamer(jjXMhttp://docs.python.org/3/reference/compound_stmts.html#grammar-token-funcnameX-trX with_stmtr(jjXNhttp://docs.python.org/3/reference/compound_stmts.html#grammar-token-with_stmtX-trXcomp_forr(jjXJhttp://docs.python.org/3/reference/expressions.html#grammar-token-comp_forX-trXbindigitr(jjXOhttp://docs.python.org/3/reference/lexical_analysis.html#grammar-token-bindigitX-trXpositional_argumentsr(jjXVhttp://docs.python.org/3/reference/expressions.html#grammar-token-positional_argumentsX-trX identifierr(jjXQhttp://docs.python.org/3/reference/lexical_analysis.html#grammar-token-identifierX-trX shortbytesr(jjXQhttp://docs.python.org/3/reference/lexical_analysis.html#grammar-token-shortbytesX-trXexpression_nocondr(jjXShttp://docs.python.org/3/reference/expressions.html#grammar-token-expression_nocondX-trXaugmented_assignment_stmtr(jjX\http://docs.python.org/3/reference/simple_stmts.html#grammar-token-augmented_assignment_stmtX-trXsignr(jjX?http://docs.python.org/3/library/string.html#grammar-token-signX-trX xid_startr(jjXPhttp://docs.python.org/3/reference/lexical_analysis.html#grammar-token-xid_startX-trXfuture_statementr(jjXShttp://docs.python.org/3/reference/simple_stmts.html#grammar-token-future_statementX-trXor_exprr(jjXIhttp://docs.python.org/3/reference/expressions.html#grammar-token-or_exprX-trX enclosurer(jjXKhttp://docs.python.org/3/reference/expressions.html#grammar-token-enclosureX-trXrelative_moduler(jjXRhttp://docs.python.org/3/reference/simple_stmts.html#grammar-token-relative_moduleX-trXcomp_ifr(jjXIhttp://docs.python.org/3/reference/expressions.html#grammar-token-comp_ifX-trXexponentr(jjXOhttp://docs.python.org/3/reference/lexical_analysis.html#grammar-token-exponentX-trX directiver(jjXEhttp://docs.python.org/3/library/doctest.html#grammar-token-directiveX-trXa_exprr(jjXHhttp://docs.python.org/3/reference/expressions.html#grammar-token-a_exprX-trX shift_exprr(jjXLhttp://docs.python.org/3/reference/expressions.html#grammar-token-shift_exprX-trX lc_letterr(jjXLhttp://docs.python.org/3/reference/introduction.html#grammar-token-lc_letterX-trX stringprefixr(jjXShttp://docs.python.org/3/reference/lexical_analysis.html#grammar-token-stringprefixX-trX argument_listr(jjXOhttp://docs.python.org/3/reference/expressions.html#grammar-token-argument_listX-trX decoratorsr(jjXOhttp://docs.python.org/3/reference/compound_stmts.html#grammar-token-decoratorsX-trX compound_stmtr(jjXRhttp://docs.python.org/3/reference/compound_stmts.html#grammar-token-compound_stmtX-trXshortbytesitemr(jjXUhttp://docs.python.org/3/reference/lexical_analysis.html#grammar-token-shortbytesitemX-trX dotted_namer(jjXPhttp://docs.python.org/3/reference/compound_stmts.html#grammar-token-dotted_nameX-trX nonlocal_stmtr(jjXPhttp://docs.python.org/3/reference/simple_stmts.html#grammar-token-nonlocal_stmtX-trXdict_comprehensionr(jjXThttp://docs.python.org/3/reference/expressions.html#grammar-token-dict_comprehensionX-trXid_startr(jjXOhttp://docs.python.org/3/reference/lexical_analysis.html#grammar-token-id_startX-trX longbytesr(jjXPhttp://docs.python.org/3/reference/lexical_analysis.html#grammar-token-longbytesX-trX augtargetr(jjXLhttp://docs.python.org/3/reference/simple_stmts.html#grammar-token-augtargetX-trX index_stringr(jjXGhttp://docs.python.org/3/library/string.html#grammar-token-index_stringX-trXand_testr(jjXJhttp://docs.python.org/3/reference/expressions.html#grammar-token-and_testX-trXxor_exprr(jjXJhttp://docs.python.org/3/reference/expressions.html#grammar-token-xor_exprX-trX try1_stmtr(jjXNhttp://docs.python.org/3/reference/compound_stmts.html#grammar-token-try1_stmtX-trX comparisonr(jjXLhttp://docs.python.org/3/reference/expressions.html#grammar-token-comparisonX-trXattribute_namer(jjXIhttp://docs.python.org/3/library/string.html#grammar-token-attribute_nameX-trX pass_stmtr(jjXLhttp://docs.python.org/3/reference/simple_stmts.html#grammar-token-pass_stmtX-trX upper_boundr(jjXMhttp://docs.python.org/3/reference/expressions.html#grammar-token-upper_boundX-trX imagnumberr(jjXQhttp://docs.python.org/3/reference/lexical_analysis.html#grammar-token-imagnumberX-trX proper_slicer(jjXNhttp://docs.python.org/3/reference/expressions.html#grammar-token-proper_sliceX-trX yield_atomr(jjXLhttp://docs.python.org/3/reference/expressions.html#grammar-token-yield_atomX-trXstrider(jjXHhttp://docs.python.org/3/reference/expressions.html#grammar-token-strideX-trXbytesescapeseqr(jjXUhttp://docs.python.org/3/reference/lexical_analysis.html#grammar-token-bytesescapeseqX-trX comp_iterr(jjXKhttp://docs.python.org/3/reference/expressions.html#grammar-token-comp_iterX-trX expressionr(jjXLhttp://docs.python.org/3/reference/expressions.html#grammar-token-expressionX-trXarg_namer(jjXChttp://docs.python.org/3/library/string.html#grammar-token-arg_nameX-trX element_indexr(jjXHhttp://docs.python.org/3/library/string.html#grammar-token-element_indexX-trX keyword_itemr(jjXNhttp://docs.python.org/3/reference/expressions.html#grammar-token-keyword_itemX-trXprimaryr(jjXIhttp://docs.python.org/3/reference/expressions.html#grammar-token-primaryX-trX classnamer(jjXNhttp://docs.python.org/3/reference/compound_stmts.html#grammar-token-classnameX-trX return_stmtr(jjXNhttp://docs.python.org/3/reference/simple_stmts.html#grammar-token-return_stmtX-trX comprehensionr(jjXOhttp://docs.python.org/3/reference/expressions.html#grammar-token-comprehensionX-trX format_specr(jjXFhttp://docs.python.org/3/library/string.html#grammar-token-format_specX-trXshortstringcharr(jjXVhttp://docs.python.org/3/reference/lexical_analysis.html#grammar-token-shortstringcharX-trX defparameterr(jjXQhttp://docs.python.org/3/reference/compound_stmts.html#grammar-token-defparameterX-trX slice_listr(jjXLhttp://docs.python.org/3/reference/expressions.html#grammar-token-slice_listX-trX lambda_exprr(jjXMhttp://docs.python.org/3/reference/expressions.html#grammar-token-lambda_exprX-trX import_stmtr(jjXNhttp://docs.python.org/3/reference/simple_stmts.html#grammar-token-import_stmtX-trX xid_continuer(jjXShttp://docs.python.org/3/reference/lexical_analysis.html#grammar-token-xid_continueX-trX continue_stmtr(jjXPhttp://docs.python.org/3/reference/simple_stmts.html#grammar-token-continue_stmtX-tr Xu_exprr (jjXHhttp://docs.python.org/3/reference/expressions.html#grammar-token-u_exprX-tr Xwidthr (jjX@http://docs.python.org/3/library/string.html#grammar-token-widthX-tr Xliteralr(jjXIhttp://docs.python.org/3/reference/expressions.html#grammar-token-literalX-trX attributerefr(jjXNhttp://docs.python.org/3/reference/expressions.html#grammar-token-attributerefX-trXcallr(jjXFhttp://docs.python.org/3/reference/expressions.html#grammar-token-callX-trXaugopr(jjXHhttp://docs.python.org/3/reference/simple_stmts.html#grammar-token-augopX-trXfractionr(jjXOhttp://docs.python.org/3/reference/lexical_analysis.html#grammar-token-fractionX-trXtyper(jjX?http://docs.python.org/3/library/string.html#grammar-token-typeX-trXshortbytescharr(jjXUhttp://docs.python.org/3/reference/lexical_analysis.html#grammar-token-shortbytescharX-trX longbytescharr(jjXThttp://docs.python.org/3/reference/lexical_analysis.html#grammar-token-longbytescharX-trX statementr(jjXNhttp://docs.python.org/3/reference/compound_stmts.html#grammar-token-statementX-trX precisionr (jjXDhttp://docs.python.org/3/library/string.html#grammar-token-precisionX-tr!X on_or_offr"(jjXEhttp://docs.python.org/3/library/doctest.html#grammar-token-on_or_offX-tr#X target_listr$(jjXNhttp://docs.python.org/3/reference/simple_stmts.html#grammar-token-target_listX-tr%X bytesliteralr&(jjXShttp://docs.python.org/3/reference/lexical_analysis.html#grammar-token-bytesliteralX-tr'Xmoduler((jjXIhttp://docs.python.org/3/reference/simple_stmts.html#grammar-token-moduleX-tr)Xatomr*(jjXFhttp://docs.python.org/3/reference/expressions.html#grammar-token-atomX-tr+Xfuncdefr,(jjXLhttp://docs.python.org/3/reference/compound_stmts.html#grammar-token-funcdefX-tr-Xstringescapeseqr.(jjXVhttp://docs.python.org/3/reference/lexical_analysis.html#grammar-token-stringescapeseqX-tr/X raise_stmtr0(jjXMhttp://docs.python.org/3/reference/simple_stmts.html#grammar-token-raise_stmtX-tr1X field_namer2(jjXEhttp://docs.python.org/3/library/string.html#grammar-token-field_nameX-tr3X stringliteralr4(jjXThttp://docs.python.org/3/reference/lexical_analysis.html#grammar-token-stringliteralX-tr5X subscriptionr6(jjXNhttp://docs.python.org/3/reference/expressions.html#grammar-token-subscriptionX-tr7Xkey_datum_listr8(jjXPhttp://docs.python.org/3/reference/expressions.html#grammar-token-key_datum_listX-tr9Xtargetr:(jjXIhttp://docs.python.org/3/reference/simple_stmts.html#grammar-token-targetX-tr;X file_inputr<(jjXThttp://docs.python.org/3/reference/toplevel_components.html#grammar-token-file_inputX-tr=Xalignr>(jjX@http://docs.python.org/3/library/string.html#grammar-token-alignX-tr?X set_displayr@(jjXMhttp://docs.python.org/3/reference/expressions.html#grammar-token-set_displayX-trAX slice_itemrB(jjXLhttp://docs.python.org/3/reference/expressions.html#grammar-token-slice_itemX-trCXintpartrD(jjXNhttp://docs.python.org/3/reference/lexical_analysis.html#grammar-token-intpartX-trEX yield_stmtrF(jjXMhttp://docs.python.org/3/reference/simple_stmts.html#grammar-token-yield_stmtX-trGX comp_operatorrH(jjXOhttp://docs.python.org/3/reference/expressions.html#grammar-token-comp_operatorX-trIXyield_expressionrJ(jjXRhttp://docs.python.org/3/reference/expressions.html#grammar-token-yield_expressionX-trKXreplacement_fieldrL(jjXLhttp://docs.python.org/3/library/string.html#grammar-token-replacement_fieldX-trMXnot_testrN(jjXJhttp://docs.python.org/3/reference/expressions.html#grammar-token-not_testX-trOXfillrP(jjX?http://docs.python.org/3/library/string.html#grammar-token-fillX-trQX break_stmtrR(jjXMhttp://docs.python.org/3/reference/simple_stmts.html#grammar-token-break_stmtX-trSX conversionrT(jjXEhttp://docs.python.org/3/library/string.html#grammar-token-conversionX-trUX octintegerrV(jjXQhttp://docs.python.org/3/reference/lexical_analysis.html#grammar-token-octintegerX-trWX inheritancerX(jjXPhttp://docs.python.org/3/reference/compound_stmts.html#grammar-token-inheritanceX-trYX eval_inputrZ(jjXThttp://docs.python.org/3/reference/toplevel_components.html#grammar-token-eval_inputX-tr[Xnanr\(jjXAhttp://docs.python.org/3/library/functions.html#grammar-token-nanX-tr]Xfeaturer^(jjXJhttp://docs.python.org/3/reference/simple_stmts.html#grammar-token-featureX-tr_Xpowerr`(jjXGhttp://docs.python.org/3/reference/expressions.html#grammar-token-powerX-traXdecimalintegerrb(jjXUhttp://docs.python.org/3/reference/lexical_analysis.html#grammar-token-decimalintegerX-trcXexpression_stmtrd(jjXRhttp://docs.python.org/3/reference/simple_stmts.html#grammar-token-expression_stmtX-treX global_stmtrf(jjXNhttp://docs.python.org/3/reference/simple_stmts.html#grammar-token-global_stmtX-trgX with_itemrh(jjXNhttp://docs.python.org/3/reference/compound_stmts.html#grammar-token-with_itemX-triX parameterrj(jjXNhttp://docs.python.org/3/reference/compound_stmts.html#grammar-token-parameterX-trkX id_continuerl(jjXRhttp://docs.python.org/3/reference/lexical_analysis.html#grammar-token-id_continueX-trmXinfinityrn(jjXFhttp://docs.python.org/3/library/functions.html#grammar-token-infinityX-troXoctdigitrp(jjXOhttp://docs.python.org/3/reference/lexical_analysis.html#grammar-token-octdigitX-trqXdirective_optionsrr(jjXMhttp://docs.python.org/3/library/doctest.html#grammar-token-directive_optionsX-trsX numeric_valuert(jjXKhttp://docs.python.org/3/library/functions.html#grammar-token-numeric_valueX-truX nonzerodigitrv(jjXShttp://docs.python.org/3/reference/lexical_analysis.html#grammar-token-nonzerodigitX-trwXkeyword_argumentsrx(jjXShttp://docs.python.org/3/reference/expressions.html#grammar-token-keyword_argumentsX-tryX shortstringrz(jjXRhttp://docs.python.org/3/reference/lexical_analysis.html#grammar-token-shortstringX-tr{Xm_exprr|(jjXHhttp://docs.python.org/3/reference/expressions.html#grammar-token-m_exprX-tr}Xinteractive_inputr~(jjX[http://docs.python.org/3/reference/toplevel_components.html#grammar-token-interactive_inputX-trX hexintegerr(jjXQhttp://docs.python.org/3/reference/lexical_analysis.html#grammar-token-hexintegerX-trX stmt_listr(jjXNhttp://docs.python.org/3/reference/compound_stmts.html#grammar-token-stmt_listX-trX assert_stmtr(jjXNhttp://docs.python.org/3/reference/simple_stmts.html#grammar-token-assert_stmtX-trX floatnumberr(jjXRhttp://docs.python.org/3/reference/lexical_analysis.html#grammar-token-floatnumberX-trXlambda_expr_nocondr(jjXThttp://docs.python.org/3/reference/expressions.html#grammar-token-lambda_expr_nocondX-trXgenerator_expressionr(jjXVhttp://docs.python.org/3/reference/expressions.html#grammar-token-generator_expressionX-trXexpression_listr(jjXQhttp://docs.python.org/3/reference/expressions.html#grammar-token-expression_listX-trXdel_stmtr(jjXKhttp://docs.python.org/3/reference/simple_stmts.html#grammar-token-del_stmtX-trX while_stmtr(jjXOhttp://docs.python.org/3/reference/compound_stmts.html#grammar-token-while_stmtX-trXconditional_expressionr(jjXXhttp://docs.python.org/3/reference/expressions.html#grammar-token-conditional_expressionX-trX pointfloatr(jjXQhttp://docs.python.org/3/reference/lexical_analysis.html#grammar-token-pointfloatX-truX py:exceptionr}r(Xxml.dom.SyntaxErrr(jjX?http://docs.python.org/3/library/xml.dom.html#xml.dom.SyntaxErrX-trXmailbox.ExternalClashErrorr(jjXHhttp://docs.python.org/3/library/mailbox.html#mailbox.ExternalClashErrorX-trXhttp.client.CannotSendHeaderr(jjXNhttp://docs.python.org/3/library/http.client.html#http.client.CannotSendHeaderX-trX ssl.SSLErrorr(jjX6http://docs.python.org/3/library/ssl.html#ssl.SSLErrorX-trX SyntaxErrorr(jjX<http://docs.python.org/3/library/exceptions.html#SyntaxErrorX-trX dbm.errorr(jjX3http://docs.python.org/3/library/dbm.html#dbm.errorX-trXBrokenPipeErrorr(jjX@http://docs.python.org/3/library/exceptions.html#BrokenPipeErrorX-trXnntplib.NNTPProtocolErrorr(jjXGhttp://docs.python.org/3/library/nntplib.html#nntplib.NNTPProtocolErrorX-trXsmtplib.SMTPSenderRefusedr(jjXGhttp://docs.python.org/3/library/smtplib.html#smtplib.SMTPSenderRefusedX-trXstatistics.StatisticsErrorr(jjXKhttp://docs.python.org/3/library/statistics.html#statistics.StatisticsErrorX-trX sunau.Errorr(jjX7http://docs.python.org/3/library/sunau.html#sunau.ErrorX-trXgetopt.GetoptErrorr(jjX?http://docs.python.org/3/library/getopt.html#getopt.GetoptErrorX-trXnntplib.NNTPReplyErrorr(jjXDhttp://docs.python.org/3/library/nntplib.html#nntplib.NNTPReplyErrorX-trXuu.Errorr(jjX1http://docs.python.org/3/library/uu.html#uu.ErrorX-trXxml.dom.InvalidStateErrr(jjXEhttp://docs.python.org/3/library/xml.dom.html#xml.dom.InvalidStateErrX-trX NameErrorr(jjX:http://docs.python.org/3/library/exceptions.html#NameErrorX-trXssl.CertificateErrorr(jjX>http://docs.python.org/3/library/ssl.html#ssl.CertificateErrorX-trXtarfile.ReadErrorr(jjX?http://docs.python.org/3/library/tarfile.html#tarfile.ReadErrorX-trXemail.errors.MessageParseErrorr(jjXQhttp://docs.python.org/3/library/email.errors.html#email.errors.MessageParseErrorX-trXConnectionResetErrorr(jjXEhttp://docs.python.org/3/library/exceptions.html#ConnectionResetErrorX-trXxml.dom.DomstringSizeErrr(jjXFhttp://docs.python.org/3/library/xml.dom.html#xml.dom.DomstringSizeErrX-trXtarfile.HeaderErrorr(jjXAhttp://docs.python.org/3/library/tarfile.html#tarfile.HeaderErrorX-trX queue.Emptyr(jjX7http://docs.python.org/3/library/queue.html#queue.EmptyX-trX%configparser.InterpolationSyntaxErrorr(jjXXhttp://docs.python.org/3/library/configparser.html#configparser.InterpolationSyntaxErrorX-trXmailbox.FormatErrorr(jjXAhttp://docs.python.org/3/library/mailbox.html#mailbox.FormatErrorX-trXFileExistsErrorr(jjX@http://docs.python.org/3/library/exceptions.html#FileExistsErrorX-trX zlib.errorr(jjX5http://docs.python.org/3/library/zlib.html#zlib.errorX-trXpickle.PickleErrorr(jjX?http://docs.python.org/3/library/pickle.html#pickle.PickleErrorX-trXTabErrorr(jjX9http://docs.python.org/3/library/exceptions.html#TabErrorX-trXnetrc.NetrcParseErrorr(jjXAhttp://docs.python.org/3/library/netrc.html#netrc.NetrcParseErrorX-trXsubprocess.CalledProcessErrorr(jjXNhttp://docs.python.org/3/library/subprocess.html#subprocess.CalledProcessErrorX-trXsocket.timeoutr(jjX;http://docs.python.org/3/library/socket.html#socket.timeoutX-trX IndexErrorr(jjX;http://docs.python.org/3/library/exceptions.html#IndexErrorX-trX SyntaxWarningr(jjX>http://docs.python.org/3/library/exceptions.html#SyntaxWarningX-trXhttp.client.UnknownProtocolr(jjXMhttp://docs.python.org/3/library/http.client.html#http.client.UnknownProtocolX-trX StopIterationr(jjX>http://docs.python.org/3/library/exceptions.html#StopIterationX-trXemail.errors.HeaderParseErrorr(jjXPhttp://docs.python.org/3/library/email.errors.html#email.errors.HeaderParseErrorX-trXhttp.cookies.CookieErrorr(jjXKhttp://docs.python.org/3/library/http.cookies.html#http.cookies.CookieErrorX-trXRuntimeWarningr(jjX?http://docs.python.org/3/library/exceptions.html#RuntimeWarningX-trXtarfile.CompressionErrorr(jjXFhttp://docs.python.org/3/library/tarfile.html#tarfile.CompressionErrorX-trXxml.sax.SAXExceptionr(jjXBhttp://docs.python.org/3/library/xml.sax.html#xml.sax.SAXExceptionX-trXxml.dom.InuseAttributeErrr(jjXGhttp://docs.python.org/3/library/xml.dom.html#xml.dom.InuseAttributeErrX-trXtarfile.StreamErrorr(jjXAhttp://docs.python.org/3/library/tarfile.html#tarfile.StreamErrorX-trX curses.errorr(jjX9http://docs.python.org/3/library/curses.html#curses.errorX-trXWarningr(jjX8http://docs.python.org/3/library/exceptions.html#WarningX-trXasyncio.QueueEmptyr(jjXEhttp://docs.python.org/3/library/asyncio-sync.html#asyncio.QueueEmptyX-trXzipfile.BadZipFiler(jjX@http://docs.python.org/3/library/zipfile.html#zipfile.BadZipFileX-trX#multiprocessing.AuthenticationErrorr(jjXYhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.AuthenticationErrorX-trX dbm.gnu.errorr(jjX7http://docs.python.org/3/library/dbm.html#dbm.gnu.errorX-trXurllib.error.URLErrorr(jjXHhttp://docs.python.org/3/library/urllib.error.html#urllib.error.URLErrorX-trXparser.ParserErrorr(jjX?http://docs.python.org/3/library/parser.html#parser.ParserErrorX-trXIsADirectoryErrorr(jjXBhttp://docs.python.org/3/library/exceptions.html#IsADirectoryErrorX-trXssl.SSLWantReadErrorr(jjX>http://docs.python.org/3/library/ssl.html#ssl.SSLWantReadErrorX-trX struct.errorr(jjX9http://docs.python.org/3/library/struct.html#struct.errorX-trXtabnanny.NannyNagr(jjX@http://docs.python.org/3/library/tabnanny.html#tabnanny.NannyNagX-trX$concurrent.futures.BrokenProcessPoolr(jjX]http://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.BrokenProcessPoolX-trXUnicodeTranslateErrorr(jjXFhttp://docs.python.org/3/library/exceptions.html#UnicodeTranslateErrorX-tr Xhttp.client.IncompleteReadr (jjXLhttp://docs.python.org/3/library/http.client.html#http.client.IncompleteReadX-tr Xbinascii.Errorr (jjX=http://docs.python.org/3/library/binascii.html#binascii.ErrorX-tr Xdbm.dumb.errorr(jjX8http://docs.python.org/3/library/dbm.html#dbm.dumb.errorX-trXPermissionErrorr(jjX@http://docs.python.org/3/library/exceptions.html#PermissionErrorX-trXxml.dom.NamespaceErrr(jjXBhttp://docs.python.org/3/library/xml.dom.html#xml.dom.NamespaceErrX-trXssl.SSLWantWriteErrorr(jjX?http://docs.python.org/3/library/ssl.html#ssl.SSLWantWriteErrorX-trXasyncio.QueueFullr(jjXDhttp://docs.python.org/3/library/asyncio-sync.html#asyncio.QueueFullX-trXos.errorr(jjX1http://docs.python.org/3/library/os.html#os.errorX-trXio.UnsupportedOperationr(jjX@http://docs.python.org/3/library/io.html#io.UnsupportedOperationX-trXpickle.UnpicklingErrorr(jjXChttp://docs.python.org/3/library/pickle.html#pickle.UnpicklingErrorX-trX!urllib.error.ContentTooShortErrorr(jjXThttp://docs.python.org/3/library/urllib.error.html#urllib.error.ContentTooShortErrorX-trXmultiprocessing.TimeoutErrorr (jjXRhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.TimeoutErrorX-tr!X BufferErrorr"(jjX<http://docs.python.org/3/library/exceptions.html#BufferErrorX-tr#X LookupErrorr$(jjX<http://docs.python.org/3/library/exceptions.html#LookupErrorX-tr%Xxml.dom.NotSupportedErrr&(jjXEhttp://docs.python.org/3/library/xml.dom.html#xml.dom.NotSupportedErrX-tr'XConnectionErrorr((jjX@http://docs.python.org/3/library/exceptions.html#ConnectionErrorX-tr)XFloatingPointErrorr*(jjXChttp://docs.python.org/3/library/exceptions.html#FloatingPointErrorX-tr+Xconfigparser.Errorr,(jjXEhttp://docs.python.org/3/library/configparser.html#configparser.ErrorX-tr-XFileNotFoundErrorr.(jjXBhttp://docs.python.org/3/library/exceptions.html#FileNotFoundErrorX-tr/Xhttp.client.NotConnectedr0(jjXJhttp://docs.python.org/3/library/http.client.html#http.client.NotConnectedX-tr1XVMSErrorr2(jjX9http://docs.python.org/3/library/exceptions.html#VMSErrorX-tr3Xconfigparser.NoOptionErrorr4(jjXMhttp://docs.python.org/3/library/configparser.html#configparser.NoOptionErrorX-tr5X BytesWarningr6(jjX=http://docs.python.org/3/library/exceptions.html#BytesWarningX-tr7XConnectionRefusedErrorr8(jjXGhttp://docs.python.org/3/library/exceptions.html#ConnectionRefusedErrorX-tr9Xio.BlockingIOErrorr:(jjX;http://docs.python.org/3/library/io.html#io.BlockingIOErrorX-tr;Xxml.dom.DOMExceptionr<(jjXBhttp://docs.python.org/3/library/xml.dom.html#xml.dom.DOMExceptionX-tr=XIndentationErrorr>(jjXAhttp://docs.python.org/3/library/exceptions.html#IndentationErrorX-tr?Xxml.dom.HierarchyRequestErrr@(jjXIhttp://docs.python.org/3/library/xml.dom.html#xml.dom.HierarchyRequestErrX-trAX FutureWarningrB(jjX>http://docs.python.org/3/library/exceptions.html#FutureWarningX-trCX xdrlib.ErrorrD(jjX9http://docs.python.org/3/library/xdrlib.html#xdrlib.ErrorX-trEX select.errorrF(jjX9http://docs.python.org/3/library/select.html#select.errorX-trGXnntplib.NNTPErrorrH(jjX?http://docs.python.org/3/library/nntplib.html#nntplib.NNTPErrorX-trIXUnicodeDecodeErrorrJ(jjXChttp://docs.python.org/3/library/exceptions.html#UnicodeDecodeErrorX-trKXmailbox.NoSuchMailboxErrorrL(jjXHhttp://docs.python.org/3/library/mailbox.html#mailbox.NoSuchMailboxErrorX-trMXconfigparser.InterpolationErrorrN(jjXRhttp://docs.python.org/3/library/configparser.html#configparser.InterpolationErrorX-trOXzipfile.LargeZipFilerP(jjXBhttp://docs.python.org/3/library/zipfile.html#zipfile.LargeZipFileX-trQXsignal.ItimerErrorrR(jjX?http://docs.python.org/3/library/signal.html#signal.ItimerErrorX-trSXthreading.BrokenBarrierErrorrT(jjXLhttp://docs.python.org/3/library/threading.html#threading.BrokenBarrierErrorX-trUXbinascii.IncompleterV(jjXBhttp://docs.python.org/3/library/binascii.html#binascii.IncompleteX-trWXurllib.error.HTTPErrorrX(jjXIhttp://docs.python.org/3/library/urllib.error.html#urllib.error.HTTPErrorX-trYXzipfile.BadZipfilerZ(jjX@http://docs.python.org/3/library/zipfile.html#zipfile.BadZipfileX-tr[Xftplib.error_protor\(jjX?http://docs.python.org/3/library/ftplib.html#ftplib.error_protoX-tr]Xsocket.gaierrorr^(jjX<http://docs.python.org/3/library/socket.html#socket.gaierrorX-tr_X TypeErrorr`(jjX:http://docs.python.org/3/library/exceptions.html#TypeErrorX-traXsmtplib.SMTPDataErrorrb(jjXChttp://docs.python.org/3/library/smtplib.html#smtplib.SMTPDataErrorX-trcXKeyboardInterruptrd(jjXBhttp://docs.python.org/3/library/exceptions.html#KeyboardInterruptX-treX UserWarningrf(jjX<http://docs.python.org/3/library/exceptions.html#UserWarningX-trgXZeroDivisionErrorrh(jjXBhttp://docs.python.org/3/library/exceptions.html#ZeroDivisionErrorX-triXdoctest.UnexpectedExceptionrj(jjXIhttp://docs.python.org/3/library/doctest.html#doctest.UnexpectedExceptionX-trkX%email.errors.MultipartConversionErrorrl(jjXXhttp://docs.python.org/3/library/email.errors.html#email.errors.MultipartConversionErrorX-trmXxml.dom.InvalidCharacterErrrn(jjXIhttp://docs.python.org/3/library/xml.dom.html#xml.dom.InvalidCharacterErrX-troXEOFErrorrp(jjX9http://docs.python.org/3/library/exceptions.html#EOFErrorX-trqXResourceWarningrr(jjX@http://docs.python.org/3/library/exceptions.html#ResourceWarningX-trsX$configparser.InterpolationDepthErrorrt(jjXWhttp://docs.python.org/3/library/configparser.html#configparser.InterpolationDepthErrorX-truX SystemErrorrv(jjX<http://docs.python.org/3/library/exceptions.html#SystemErrorX-trwXxml.parsers.expat.ExpatErrorrx(jjXJhttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.ExpatErrorX-tryXweakref.ReferenceErrorrz(jjXDhttp://docs.python.org/3/library/weakref.html#weakref.ReferenceErrorX-tr{X BaseExceptionr|(jjX>http://docs.python.org/3/library/exceptions.html#BaseExceptionX-tr}Xemail.errors.BoundaryErrorr~(jjXMhttp://docs.python.org/3/library/email.errors.html#email.errors.BoundaryErrorX-trX _thread.errorr(jjX;http://docs.python.org/3/library/_thread.html#_thread.errorX-trXssl.SSLEOFErrorr(jjX9http://docs.python.org/3/library/ssl.html#ssl.SSLEOFErrorX-trX RuntimeErrorr(jjX=http://docs.python.org/3/library/exceptions.html#RuntimeErrorX-trX GeneratorExitr(jjX>http://docs.python.org/3/library/exceptions.html#GeneratorExitX-trXxml.dom.InvalidAccessErrr(jjXFhttp://docs.python.org/3/library/xml.dom.html#xml.dom.InvalidAccessErrX-trXChildProcessErrorr(jjXBhttp://docs.python.org/3/library/exceptions.html#ChildProcessErrorX-trXssl.SSLSyscallErrorr(jjX=http://docs.python.org/3/library/ssl.html#ssl.SSLSyscallErrorX-trXemail.errors.MessageErrorr(jjXLhttp://docs.python.org/3/library/email.errors.html#email.errors.MessageErrorX-trXhtml.parser.HTMLParseErrorr(jjXLhttp://docs.python.org/3/library/html.parser.html#html.parser.HTMLParseErrorX-trXftplib.error_tempr(jjX>http://docs.python.org/3/library/ftplib.html#ftplib.error_tempX-trXasyncio.IncompleteReadErrorr(jjXPhttp://docs.python.org/3/library/asyncio-stream.html#asyncio.IncompleteReadErrorX-trXProcessLookupErrorr(jjXChttp://docs.python.org/3/library/exceptions.html#ProcessLookupErrorX-trXzipimport.ZipImportErrorr(jjXHhttp://docs.python.org/3/library/zipimport.html#zipimport.ZipImportErrorX-trX UnicodeErrorr(jjX=http://docs.python.org/3/library/exceptions.html#UnicodeErrorX-trXipaddress.NetmaskValueErrorr(jjXKhttp://docs.python.org/3/library/ipaddress.html#ipaddress.NetmaskValueErrorX-trX mailbox.Errorr(jjX;http://docs.python.org/3/library/mailbox.html#mailbox.ErrorX-trXimaplib.IMAP4.readonlyr(jjXDhttp://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.readonlyX-trXtest.support.ResourceDeniedr(jjXFhttp://docs.python.org/3/library/test.html#test.support.ResourceDeniedX-trX binhex.Errorr(jjX9http://docs.python.org/3/library/binhex.html#binhex.ErrorX-trXReferenceErrorr(jjX?http://docs.python.org/3/library/exceptions.html#ReferenceErrorX-trXhttp.client.BadStatusLiner(jjXKhttp://docs.python.org/3/library/http.client.html#http.client.BadStatusLineX-trXxml.dom.NotFoundErrr(jjXAhttp://docs.python.org/3/library/xml.dom.html#xml.dom.NotFoundErrX-trX getopt.errorr(jjX9http://docs.python.org/3/library/getopt.html#getopt.errorX-trXmailbox.NotEmptyErrorr(jjXChttp://docs.python.org/3/library/mailbox.html#mailbox.NotEmptyErrorX-trXshutil.SameFileErrorr(jjXAhttp://docs.python.org/3/library/shutil.html#shutil.SameFileErrorX-trXpoplib.error_protor(jjX?http://docs.python.org/3/library/poplib.html#poplib.error_protoX-trX Exceptionr(jjX:http://docs.python.org/3/library/exceptions.html#ExceptionX-trX TimeoutErrorr(jjX=http://docs.python.org/3/library/exceptions.html#TimeoutErrorX-trX bdb.BdbQuitr(jjX5http://docs.python.org/3/library/bdb.html#bdb.BdbQuitX-trX locale.Errorr(jjX9http://docs.python.org/3/library/locale.html#locale.ErrorX-trXwebbrowser.Errorr(jjXAhttp://docs.python.org/3/library/webbrowser.html#webbrowser.ErrorX-trX"configparser.DuplicateSectionErrorr(jjXUhttp://docs.python.org/3/library/configparser.html#configparser.DuplicateSectionErrorX-trX xml.dom.NoModificationAllowedErrr(jjXNhttp://docs.python.org/3/library/xml.dom.html#xml.dom.NoModificationAllowedErrX-trXUnicodeEncodeErrorr(jjXChttp://docs.python.org/3/library/exceptions.html#UnicodeEncodeErrorX-trXIOErrorr(jjX8http://docs.python.org/3/library/exceptions.html#IOErrorX-trXdbm.ndbm.errorr(jjX8http://docs.python.org/3/library/dbm.html#dbm.ndbm.errorX-trXKeyErrorr(jjX9http://docs.python.org/3/library/exceptions.html#KeyErrorX-trXssl.SSLZeroReturnErrorr(jjX@http://docs.python.org/3/library/ssl.html#ssl.SSLZeroReturnErrorX-trX!http.client.UnimplementedFileModer(jjXShttp://docs.python.org/3/library/http.client.html#http.client.UnimplementedFileModeX-trXsmtplib.SMTPResponseExceptionr(jjXKhttp://docs.python.org/3/library/smtplib.html#smtplib.SMTPResponseExceptionX-trXpy_compile.PyCompileErrorr(jjXJhttp://docs.python.org/3/library/py_compile.html#py_compile.PyCompileErrorX-trXasyncio.InvalidStateErrorr(jjXLhttp://docs.python.org/3/library/asyncio-task.html#asyncio.InvalidStateErrorX-trXhttp.client.CannotSendRequestr(jjXOhttp://docs.python.org/3/library/http.client.html#http.client.CannotSendRequestX-trXxml.dom.IndexSizeErrr(jjXBhttp://docs.python.org/3/library/xml.dom.html#xml.dom.IndexSizeErrX-trXArithmeticErrorr(jjX@http://docs.python.org/3/library/exceptions.html#ArithmeticErrorX-trX xml.sax.SAXNotSupportedExceptionr(jjXNhttp://docs.python.org/3/library/xml.sax.html#xml.sax.SAXNotSupportedExceptionX-trXConnectionAbortedErrorr(jjXGhttp://docs.python.org/3/library/exceptions.html#ConnectionAbortedErrorX-trXnntplib.NNTPDataErrorr(jjXChttp://docs.python.org/3/library/nntplib.html#nntplib.NNTPDataErrorX-trXftplib.error_replyr(jjX?http://docs.python.org/3/library/ftplib.html#ftplib.error_replyX-trXdoctest.DocTestFailurer(jjXDhttp://docs.python.org/3/library/doctest.html#doctest.DocTestFailureX-trXossaudiodev.OSSAudioErrorr(jjXKhttp://docs.python.org/3/library/ossaudiodev.html#ossaudiodev.OSSAudioErrorX-trXxml.sax.SAXParseExceptionr(jjXGhttp://docs.python.org/3/library/xml.sax.html#xml.sax.SAXParseExceptionX-trX socket.herrorr(jjX:http://docs.python.org/3/library/socket.html#socket.herrorX-trX MemoryErrorr(jjX<http://docs.python.org/3/library/exceptions.html#MemoryErrorX-trXfpectl.FloatingPointErrorr(jjXFhttp://docs.python.org/3/library/fpectl.html#fpectl.FloatingPointErrorX-trXsmtplib.SMTPConnectErrorr(jjXFhttp://docs.python.org/3/library/smtplib.html#smtplib.SMTPConnectErrorX-trX SystemExitr(jjX;http://docs.python.org/3/library/exceptions.html#SystemExitX-trXimaplib.IMAP4.errorr(jjXAhttp://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.errorX-trXNotADirectoryErrorr(jjXChttp://docs.python.org/3/library/exceptions.html#NotADirectoryErrorX-trXsubprocess.TimeoutExpiredr(jjXJhttp://docs.python.org/3/library/subprocess.html#subprocess.TimeoutExpiredX-trXhttp.client.InvalidURLr(jjXHhttp://docs.python.org/3/library/http.client.html#http.client.InvalidURLX-trXmultiprocessing.BufferTooShortr(jjXThttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.BufferTooShortX-trXnntplib.NNTPPermanentErrorr(jjXHhttp://docs.python.org/3/library/nntplib.html#nntplib.NNTPPermanentErrorX-trXimaplib.IMAP4.abortr(jjXAhttp://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.abortX-trXsmtplib.SMTPRecipientsRefusedr(jjXKhttp://docs.python.org/3/library/smtplib.html#smtplib.SMTPRecipientsRefusedX-trXctypes.ArgumentErrorr(jjXAhttp://docs.python.org/3/library/ctypes.html#ctypes.ArgumentErrorX-trXxdrlib.ConversionErrorr(jjXChttp://docs.python.org/3/library/xdrlib.html#xdrlib.ConversionErrorX-trXEnvironmentErrorr(jjXAhttp://docs.python.org/3/library/exceptions.html#EnvironmentErrorX-trXunittest.SkipTestr(jjX@http://docs.python.org/3/library/unittest.html#unittest.SkipTestX-tr X nis.errorr (jjX3http://docs.python.org/3/library/nis.html#nis.errorX-tr XInterruptedErrorr (jjXAhttp://docs.python.org/3/library/exceptions.html#InterruptedErrorX-tr XOSErrorr(jjX8http://docs.python.org/3/library/exceptions.html#OSErrorX-trXDeprecationWarningr(jjXChttp://docs.python.org/3/library/exceptions.html#DeprecationWarningX-trXsmtplib.SMTPHeloErrorr(jjXChttp://docs.python.org/3/library/smtplib.html#smtplib.SMTPHeloErrorX-trX&configparser.MissingSectionHeaderErrorr(jjXYhttp://docs.python.org/3/library/configparser.html#configparser.MissingSectionHeaderErrorX-trXUnicodeWarningr(jjX?http://docs.python.org/3/library/exceptions.html#UnicodeWarningX-trX queue.Fullr(jjX6http://docs.python.org/3/library/queue.html#queue.FullX-trXnntplib.NNTPTemporaryErrorr(jjXHhttp://docs.python.org/3/library/nntplib.html#nntplib.NNTPTemporaryErrorX-trXre.errorr(jjX1http://docs.python.org/3/library/re.html#re.errorX-trX socket.errorr(jjX9http://docs.python.org/3/library/socket.html#socket.errorX-trXxml.dom.WrongDocumentErrr (jjXFhttp://docs.python.org/3/library/xml.dom.html#xml.dom.WrongDocumentErrX-tr!X wave.Errorr"(jjX5http://docs.python.org/3/library/wave.html#wave.ErrorX-tr#Xpickle.PicklingErrorr$(jjXAhttp://docs.python.org/3/library/pickle.html#pickle.PicklingErrorX-tr%X ImportWarningr&(jjX>http://docs.python.org/3/library/exceptions.html#ImportWarningX-tr'X ValueErrorr((jjX;http://docs.python.org/3/library/exceptions.html#ValueErrorX-tr)Xftplib.error_permr*(jjX>http://docs.python.org/3/library/ftplib.html#ftplib.error_permX-tr+Xipaddress.AddressValueErrorr,(jjXKhttp://docs.python.org/3/library/ipaddress.html#ipaddress.AddressValueErrorX-tr-X csv.Errorr.(jjX3http://docs.python.org/3/library/csv.html#csv.ErrorX-tr/Xresource.errorr0(jjX=http://docs.python.org/3/library/resource.html#resource.errorX-tr1Xtest.support.TestFailedr2(jjXBhttp://docs.python.org/3/library/test.html#test.support.TestFailedX-tr3Xxml.dom.InvalidModificationErrr4(jjXLhttp://docs.python.org/3/library/xml.dom.html#xml.dom.InvalidModificationErrX-tr5X#http.client.UnknownTransferEncodingr6(jjXUhttp://docs.python.org/3/library/http.client.html#http.client.UnknownTransferEncodingX-tr7Xconfigparser.ParsingErrorr8(jjXLhttp://docs.python.org/3/library/configparser.html#configparser.ParsingErrorX-tr9Xlzma.LZMAErrorr:(jjX9http://docs.python.org/3/library/lzma.html#lzma.LZMAErrorX-tr;Xconfigparser.NoSectionErrorr<(jjXNhttp://docs.python.org/3/library/configparser.html#configparser.NoSectionErrorX-tr=X,configparser.InterpolationMissingOptionErrorr>(jjX_http://docs.python.org/3/library/configparser.html#configparser.InterpolationMissingOptionErrorX-tr?Xsmtplib.SMTPAuthenticationErrorr@(jjXMhttp://docs.python.org/3/library/smtplib.html#smtplib.SMTPAuthenticationErrorX-trAXBlockingIOErrorrB(jjX@http://docs.python.org/3/library/exceptions.html#BlockingIOErrorX-trCX copy.errorrD(jjX5http://docs.python.org/3/library/copy.html#copy.errorX-trEXmultiprocessing.ProcessErrorrF(jjXRhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.ProcessErrorX-trGXtarfile.ExtractErrorrH(jjXBhttp://docs.python.org/3/library/tarfile.html#tarfile.ExtractErrorX-trIXhttp.client.ResponseNotReadyrJ(jjXNhttp://docs.python.org/3/library/http.client.html#http.client.ResponseNotReadyX-trKXhttp.cookiejar.LoadErrorrL(jjXMhttp://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.LoadErrorX-trMX shutil.ErrorrN(jjX9http://docs.python.org/3/library/shutil.html#shutil.ErrorX-trOXAssertionErrorrP(jjX?http://docs.python.org/3/library/exceptions.html#AssertionErrorX-trQXsmtplib.SMTPExceptionrR(jjXChttp://docs.python.org/3/library/smtplib.html#smtplib.SMTPExceptionX-trSX audioop.errorrT(jjX;http://docs.python.org/3/library/audioop.html#audioop.errorX-trUXtarfile.TarErrorrV(jjX>http://docs.python.org/3/library/tarfile.html#tarfile.TarErrorX-trWXsmtplib.SMTPServerDisconnectedrX(jjXLhttp://docs.python.org/3/library/smtplib.html#smtplib.SMTPServerDisconnectedX-trYXgetpass.GetPassWarningrZ(jjXDhttp://docs.python.org/3/library/getpass.html#getpass.GetPassWarningX-tr[Xsubprocess.SubprocessErrorr\(jjXKhttp://docs.python.org/3/library/subprocess.html#subprocess.SubprocessErrorX-tr]Xxml.parsers.expat.errorr^(jjXEhttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errorX-tr_Xhttp.client.HTTPExceptionr`(jjXKhttp://docs.python.org/3/library/http.client.html#http.client.HTTPExceptionX-traXPendingDeprecationWarningrb(jjXJhttp://docs.python.org/3/library/exceptions.html#PendingDeprecationWarningX-trcXUnboundLocalErrorrd(jjXBhttp://docs.python.org/3/library/exceptions.html#UnboundLocalErrorX-treX!configparser.DuplicateOptionErrorrf(jjXThttp://docs.python.org/3/library/configparser.html#configparser.DuplicateOptionErrorX-trgX ImportErrorrh(jjX<http://docs.python.org/3/library/exceptions.html#ImportErrorX-triX!xml.sax.SAXNotRecognizedExceptionrj(jjXOhttp://docs.python.org/3/library/xml.sax.html#xml.sax.SAXNotRecognizedExceptionX-trkXxml.dom.NoDataAllowedErrrl(jjXFhttp://docs.python.org/3/library/xml.dom.html#xml.dom.NoDataAllowedErrX-trmX#http.client.ImproperConnectionStatern(jjXUhttp://docs.python.org/3/library/http.client.html#http.client.ImproperConnectionStateX-troXNotImplementedErrorrp(jjXDhttp://docs.python.org/3/library/exceptions.html#NotImplementedErrorX-trqXAttributeErrorrr(jjX?http://docs.python.org/3/library/exceptions.html#AttributeErrorX-trsX OverflowErrorrt(jjX>http://docs.python.org/3/library/exceptions.html#OverflowErrorX-truX WindowsErrorrv(jjX=http://docs.python.org/3/library/exceptions.html#WindowsErrorX-trwuXpy:staticmethodrx}ry(Xbytearray.maketransrz(jjXBhttp://docs.python.org/3/library/stdtypes.html#bytearray.maketransX-tr{X str.maketransr|(jjX<http://docs.python.org/3/library/stdtypes.html#str.maketransX-tr}Xbytes.maketransr~(jjX>http://docs.python.org/3/library/stdtypes.html#bytes.maketransX-truXc:typer}r(X PyMethodDefr(jjX<http://docs.python.org/3/c-api/structures.html#c.PyMethodDefX-trX PyModuleDefr(jjX8http://docs.python.org/3/c-api/module.html#c.PyModuleDefX-trXPyMemAllocatorDomainr(jjXAhttp://docs.python.org/3/c-api/memory.html#c.PyMemAllocatorDomainX-trX PyASCIIObjectr(jjX;http://docs.python.org/3/c-api/unicode.html#c.PyASCIIObjectX-trX PyThreadStater(jjX8http://docs.python.org/3/c-api/init.html#c.PyThreadStateX-trXPy_UCS4r(jjX5http://docs.python.org/3/c-api/unicode.html#c.Py_UCS4X-trXPy_UCS2r(jjX5http://docs.python.org/3/c-api/unicode.html#c.Py_UCS2X-trX_inittabr(jjX5http://docs.python.org/3/c-api/import.html#c._inittabX-trXPy_UCS1r(jjX5http://docs.python.org/3/c-api/unicode.html#c.Py_UCS1X-trXPyInterpreterStater(jjX=http://docs.python.org/3/c-api/init.html#c.PyInterpreterStateX-trXPySequenceMethodsr(jjX?http://docs.python.org/3/c-api/typeobj.html#c.PySequenceMethodsX-trX PyGenObjectr(jjX5http://docs.python.org/3/c-api/gen.html#c.PyGenObjectX-trXPyStructSequence_Descr(jjXAhttp://docs.python.org/3/c-api/tuple.html#c.PyStructSequence_DescX-trX PyCFunctionr(jjX<http://docs.python.org/3/c-api/structures.html#c.PyCFunctionX-trX PyTupleObjectr(jjX9http://docs.python.org/3/c-api/tuple.html#c.PyTupleObjectX-trXPyObjectArenaAllocatorr(jjXChttp://docs.python.org/3/c-api/memory.html#c.PyObjectArenaAllocatorX-trX PyCellObjectr(jjX7http://docs.python.org/3/c-api/cell.html#c.PyCellObjectX-trXinquiryr(jjX7http://docs.python.org/3/c-api/gcsupport.html#c.inquiryX-trX PyTypeObjectr(jjX7http://docs.python.org/3/c-api/type.html#c.PyTypeObjectX-trXPyNumberMethodsr(jjX=http://docs.python.org/3/c-api/typeobj.html#c.PyNumberMethodsX-trXPyCompilerFlagsr(jjX>http://docs.python.org/3/c-api/veryhigh.html#c.PyCompilerFlagsX-trXPyComplexObjectr(jjX=http://docs.python.org/3/c-api/complex.html#c.PyComplexObjectX-trXPyFunctionObjectr(jjX?http://docs.python.org/3/c-api/function.html#c.PyFunctionObjectX-trX PyCapsuler(jjX7http://docs.python.org/3/c-api/capsule.html#c.PyCapsuleX-trXPyCapsule_Destructorr(jjXBhttp://docs.python.org/3/c-api/capsule.html#c.PyCapsule_DestructorX-trX PyVarObjectr(jjX<http://docs.python.org/3/c-api/structures.html#c.PyVarObjectX-trXPyObjectr(jjX9http://docs.python.org/3/c-api/structures.html#c.PyObjectX-trX PyMemberDefr(jjX<http://docs.python.org/3/c-api/structures.html#c.PyMemberDefX-trX PyDictObjectr(jjX7http://docs.python.org/3/c-api/dict.html#c.PyDictObjectX-trXPyMappingMethodsr(jjX>http://docs.python.org/3/c-api/typeobj.html#c.PyMappingMethodsX-trX PyCodeObjectr(jjX7http://docs.python.org/3/c-api/code.html#c.PyCodeObjectX-trX PyBytesObjectr(jjX9http://docs.python.org/3/c-api/bytes.html#c.PyBytesObjectX-trX PySetObjectr(jjX5http://docs.python.org/3/c-api/set.html#c.PySetObjectX-trX PyFloatObjectr(jjX9http://docs.python.org/3/c-api/float.html#c.PyFloatObjectX-trX Py_complexr(jjX8http://docs.python.org/3/c-api/complex.html#c.Py_complexX-trX_frozenr(jjX4http://docs.python.org/3/c-api/import.html#c._frozenX-trX Py_UNICODEr(jjX8http://docs.python.org/3/c-api/unicode.html#c.Py_UNICODEX-trXPyUnicodeObjectr(jjX=http://docs.python.org/3/c-api/unicode.html#c.PyUnicodeObjectX-trX PyLongObjectr(jjX7http://docs.python.org/3/c-api/long.html#c.PyLongObjectX-trX Py_bufferr(jjX6http://docs.python.org/3/c-api/buffer.html#c.Py_bufferX-trX PyListObjectr(jjX7http://docs.python.org/3/c-api/list.html#c.PyListObjectX-trXPyStructSequence_Fieldr(jjXBhttp://docs.python.org/3/c-api/tuple.html#c.PyStructSequence_FieldX-trXPyMemAllocatorr(jjX;http://docs.python.org/3/c-api/memory.html#c.PyMemAllocatorX-trX visitprocr(jjX9http://docs.python.org/3/c-api/gcsupport.html#c.visitprocX-trX PyBufferProcsr(jjX;http://docs.python.org/3/c-api/typeobj.html#c.PyBufferProcsX-trXPyCFunctionWithKeywordsr(jjXHhttp://docs.python.org/3/c-api/structures.html#c.PyCFunctionWithKeywordsX-trXPyByteArrayObjectr(jjXAhttp://docs.python.org/3/c-api/bytearray.html#c.PyByteArrayObjectX-trX Py_tracefuncr(jjX7http://docs.python.org/3/c-api/init.html#c.Py_tracefuncX-trX traverseprocr(jjX<http://docs.python.org/3/c-api/gcsupport.html#c.traverseprocX-trXPyCompactUnicodeObjectr(jjXDhttp://docs.python.org/3/c-api/unicode.html#c.PyCompactUnicodeObjectX-truX py:methodr}r(Xxml.dom.minidom.Node.toxmlr(jjXPhttp://docs.python.org/3/library/xml.dom.minidom.html#xml.dom.minidom.Node.toxmlX-trXmemoryview.castr(jjX>http://docs.python.org/3/library/stdtypes.html#memoryview.castX-trXpathlib.Path.unlinkr(jjXAhttp://docs.python.org/3/library/pathlib.html#pathlib.Path.unlinkX-trXmsilib.Dialog.controlr(jjXBhttp://docs.python.org/3/library/msilib.html#msilib.Dialog.controlX-trX.xml.parsers.expat.xmlparser.ElementDeclHandlerr(jjX\http://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.xmlparser.ElementDeclHandlerX-trXdatetime.tzinfo.utcoffsetr(jjXHhttp://docs.python.org/3/library/datetime.html#datetime.tzinfo.utcoffsetX-trXio.TextIOBase.readr(jjX;http://docs.python.org/3/library/io.html#io.TextIOBase.readX-trX#difflib.SequenceMatcher.quick_ratior(jjXQhttp://docs.python.org/3/library/difflib.html#difflib.SequenceMatcher.quick_ratioX-trX(importlib.machinery.FileFinder.find_specr(jjXXhttp://docs.python.org/3/library/importlib.html#importlib.machinery.FileFinder.find_specX-trXbdb.Breakpoint.bpformatr(jjXAhttp://docs.python.org/3/library/bdb.html#bdb.Breakpoint.bpformatX-trXcurses.window.hliner(jjX@http://docs.python.org/3/library/curses.html#curses.window.hlineX-trXlogging.Handler.releaser(jjXEhttp://docs.python.org/3/library/logging.html#logging.Handler.releaseX-trXftplib.FTP.loginr(jjX=http://docs.python.org/3/library/ftplib.html#ftplib.FTP.loginX-trXtarfile.TarFile.addfiler(jjXEhttp://docs.python.org/3/library/tarfile.html#tarfile.TarFile.addfileX-trX3urllib.request.ProxyBasicAuthHandler.http_error_407r(jjXhhttp://docs.python.org/3/library/urllib.request.html#urllib.request.ProxyBasicAuthHandler.http_error_407X-trXasynchat.fifo.popr(jjX@http://docs.python.org/3/library/asynchat.html#asynchat.fifo.popX-trX!decimal.Context.compare_total_magr(jjXOhttp://docs.python.org/3/library/decimal.html#decimal.Context.compare_total_magX-tr Xshlex.shlex.get_tokenr (jjXAhttp://docs.python.org/3/library/shlex.html#shlex.shlex.get_tokenX-tr Xformatter.writer.new_fontr (jjXIhttp://docs.python.org/3/library/formatter.html#formatter.writer.new_fontX-tr Xlzma.LZMACompressor.compressr(jjXGhttp://docs.python.org/3/library/lzma.html#lzma.LZMACompressor.compressX-trXcollections.deque.countr(jjXIhttp://docs.python.org/3/library/collections.html#collections.deque.countX-trXimaplib.IMAP4.loginr(jjXAhttp://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.loginX-trX smtpd.SMTPServer.process_messager(jjXLhttp://docs.python.org/3/library/smtpd.html#smtpd.SMTPServer.process_messageX-trXsocket.socket.connectr(jjXBhttp://docs.python.org/3/library/socket.html#socket.socket.connectX-trXemail.policy.Policy.cloner(jjXLhttp://docs.python.org/3/library/email.policy.html#email.policy.Policy.cloneX-trXtelnetlib.Telnet.read_eagerr(jjXKhttp://docs.python.org/3/library/telnetlib.html#telnetlib.Telnet.read_eagerX-trXemail.generator.Generator.writer(jjXUhttp://docs.python.org/3/library/email.generator.html#email.generator.Generator.writeX-trXsched.scheduler.enterr(jjXAhttp://docs.python.org/3/library/sched.html#sched.scheduler.enterX-trXdecimal.Context.divide_intr (jjXHhttp://docs.python.org/3/library/decimal.html#decimal.Context.divide_intX-tr!Xbdb.Bdb.clear_bpbynumberr"(jjXBhttp://docs.python.org/3/library/bdb.html#bdb.Bdb.clear_bpbynumberX-tr#Xtarfile.TarFile.getmemberr$(jjXGhttp://docs.python.org/3/library/tarfile.html#tarfile.TarFile.getmemberX-tr%Xqueue.Queue.fullr&(jjX<http://docs.python.org/3/library/queue.html#queue.Queue.fullX-tr'Xpathlib.Path.touchr((jjX@http://docs.python.org/3/library/pathlib.html#pathlib.Path.touchX-tr)Xdecimal.Context.maxr*(jjXAhttp://docs.python.org/3/library/decimal.html#decimal.Context.maxX-tr+X!gettext.NullTranslations.lgettextr,(jjXOhttp://docs.python.org/3/library/gettext.html#gettext.NullTranslations.lgettextX-tr-Xarray.array.fromstringr.(jjXBhttp://docs.python.org/3/library/array.html#array.array.fromstringX-tr/Xtracemalloc.Snapshot.compare_tor0(jjXQhttp://docs.python.org/3/library/tracemalloc.html#tracemalloc.Snapshot.compare_toX-tr1X(xml.etree.ElementTree.XMLPullParser.feedr2(jjXdhttp://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.XMLPullParser.feedX-tr3Xio.BytesIO.getvaluer4(jjX<http://docs.python.org/3/library/io.html#io.BytesIO.getvalueX-tr5Xrlcompleter.Completer.completer6(jjXPhttp://docs.python.org/3/library/rlcompleter.html#rlcompleter.Completer.completeX-tr7Xhtml.parser.HTMLParser.closer8(jjXNhttp://docs.python.org/3/library/html.parser.html#html.parser.HTMLParser.closeX-tr9X*multiprocessing.managers.SyncManager.RLockr:(jjX`http://docs.python.org/3/library/multiprocessing.html#multiprocessing.managers.SyncManager.RLockX-tr;Xoptparse.OptionParser.get_usager<(jjXNhttp://docs.python.org/3/library/optparse.html#optparse.OptionParser.get_usageX-tr=X%ossaudiodev.oss_audio_device.channelsr>(jjXWhttp://docs.python.org/3/library/ossaudiodev.html#ossaudiodev.oss_audio_device.channelsX-tr?X'xml.sax.handler.ErrorHandler.fatalErrorr@(jjX]http://docs.python.org/3/library/xml.sax.handler.html#xml.sax.handler.ErrorHandler.fatalErrorX-trAX,multiprocessing.managers.BaseProxy._getvaluerB(jjXbhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.managers.BaseProxy._getvalueX-trCXimaplib.IMAP4.getaclrD(jjXBhttp://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.getaclX-trEXclass.__subclasses__rF(jjXChttp://docs.python.org/3/library/stdtypes.html#class.__subclasses__X-trGXshlex.shlex.push_sourcerH(jjXChttp://docs.python.org/3/library/shlex.html#shlex.shlex.push_sourceX-trIXargparse.ArgumentParser.exitrJ(jjXKhttp://docs.python.org/3/library/argparse.html#argparse.ArgumentParser.exitX-trKXctypes._CData.from_addressrL(jjXGhttp://docs.python.org/3/library/ctypes.html#ctypes._CData.from_addressX-trMX multiprocessing.Queue.put_nowaitrN(jjXVhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.Queue.put_nowaitX-trOXint.bit_lengthrP(jjX=http://docs.python.org/3/library/stdtypes.html#int.bit_lengthX-trQX#wsgiref.handlers.BaseHandler._flushrR(jjXQhttp://docs.python.org/3/library/wsgiref.html#wsgiref.handlers.BaseHandler._flushX-trSXmailbox.Maildir.get_filerT(jjXFhttp://docs.python.org/3/library/mailbox.html#mailbox.Maildir.get_fileX-trUX str.formatrV(jjX9http://docs.python.org/3/library/stdtypes.html#str.formatX-trWXdecimal.Decimal.normalizerX(jjXGhttp://docs.python.org/3/library/decimal.html#decimal.Decimal.normalizeX-trYX str.isalnumrZ(jjX:http://docs.python.org/3/library/stdtypes.html#str.isalnumX-tr[Xcurses.window.getmaxyxr\(jjXChttp://docs.python.org/3/library/curses.html#curses.window.getmaxyxX-tr]X calendar.Calendar.itermonthdays2r^(jjXOhttp://docs.python.org/3/library/calendar.html#calendar.Calendar.itermonthdays2X-tr_Xconcurrent.futures.Future.doner`(jjXWhttp://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.Future.doneX-traX.http.server.BaseHTTPRequestHandler.send_headerrb(jjX`http://docs.python.org/3/library/http.server.html#http.server.BaseHTTPRequestHandler.send_headerX-trcX9xmlrpc.server.DocCGIXMLRPCRequestHandler.set_server_titlerd(jjXmhttp://docs.python.org/3/library/xmlrpc.server.html#xmlrpc.server.DocCGIXMLRPCRequestHandler.set_server_titleX-treX code.InteractiveConsole.interactrf(jjXKhttp://docs.python.org/3/library/code.html#code.InteractiveConsole.interactX-trgXqueue.Queue.put_nowaitrh(jjXBhttp://docs.python.org/3/library/queue.html#queue.Queue.put_nowaitX-triXftplib.FTP.set_debuglevelrj(jjXFhttp://docs.python.org/3/library/ftplib.html#ftplib.FTP.set_debuglevelX-trkX1urllib.request.HTTPRedirectHandler.http_error_302rl(jjXfhttp://docs.python.org/3/library/urllib.request.html#urllib.request.HTTPRedirectHandler.http_error_302X-trmXcurses.window.clrtobotrn(jjXChttp://docs.python.org/3/library/curses.html#curses.window.clrtobotX-troXxdrlib.Unpacker.unpack_floatrp(jjXIhttp://docs.python.org/3/library/xdrlib.html#xdrlib.Unpacker.unpack_floatX-trqX1urllib.request.HTTPRedirectHandler.http_error_307rr(jjXfhttp://docs.python.org/3/library/urllib.request.html#urllib.request.HTTPRedirectHandler.http_error_307X-trsX!xml.etree.ElementTree.Element.setrt(jjX]http://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element.setX-truXobject.__ilshift__rv(jjXDhttp://docs.python.org/3/reference/datamodel.html#object.__ilshift__X-trwXsubprocess.Popen.pollrx(jjXFhttp://docs.python.org/3/library/subprocess.html#subprocess.Popen.pollX-tryXfilecmp.dircmp.reportrz(jjXChttp://docs.python.org/3/library/filecmp.html#filecmp.dircmp.reportX-tr{Xnntplib.NNTP.set_debuglevelr|(jjXIhttp://docs.python.org/3/library/nntplib.html#nntplib.NNTP.set_debuglevelX-tr}Xdecimal.Decimal.logical_andr~(jjXIhttp://docs.python.org/3/library/decimal.html#decimal.Decimal.logical_andX-trXemail.charset.Charset.__str__r(jjXQhttp://docs.python.org/3/library/email.charset.html#email.charset.Charset.__str__X-trXdatetime.date.isoweekdayr(jjXGhttp://docs.python.org/3/library/datetime.html#datetime.date.isoweekdayX-trX4urllib.request.ProxyDigestAuthHandler.http_error_407r(jjXihttp://docs.python.org/3/library/urllib.request.html#urllib.request.ProxyDigestAuthHandler.http_error_407X-trXsymtable.Function.get_localsr(jjXKhttp://docs.python.org/3/library/symtable.html#symtable.Function.get_localsX-trX1xml.parsers.expat.xmlparser.EndDoctypeDeclHandlerr(jjX_http://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.xmlparser.EndDoctypeDeclHandlerX-trXtkinter.ttk.Style.theme_namesr(jjXOhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Style.theme_namesX-trXthreading.Thread.is_aliver(jjXIhttp://docs.python.org/3/library/threading.html#threading.Thread.is_aliveX-trXobject.__setitem__r(jjXDhttp://docs.python.org/3/reference/datamodel.html#object.__setitem__X-trXcodecs.IncrementalDecoder.resetr(jjXLhttp://docs.python.org/3/library/codecs.html#codecs.IncrementalDecoder.resetX-trX"asyncio.BaseEventLoop.sock_connectr(jjXZhttp://docs.python.org/3/library/asyncio-eventloop.html#asyncio.BaseEventLoop.sock_connectX-trXmemoryview.releaser(jjXAhttp://docs.python.org/3/library/stdtypes.html#memoryview.releaseX-trX xml.dom.Document.createElementNSr(jjXNhttp://docs.python.org/3/library/xml.dom.html#xml.dom.Document.createElementNSX-trX"socketserver.RequestHandler.finishr(jjXUhttp://docs.python.org/3/library/socketserver.html#socketserver.RequestHandler.finishX-trX-distutils.ccompiler.CCompiler.link_executabler(jjX\http://docs.python.org/3/distutils/apiref.html#distutils.ccompiler.CCompiler.link_executableX-trXset.popr(jjX6http://docs.python.org/3/library/stdtypes.html#set.popX-trX%asyncio.BaseEventLoop.run_in_executorr(jjX]http://docs.python.org/3/library/asyncio-eventloop.html#asyncio.BaseEventLoop.run_in_executorX-trX&unittest.TestResult.addExpectedFailurer(jjXUhttp://docs.python.org/3/library/unittest.html#unittest.TestResult.addExpectedFailureX-trX'ssl.SSLContext.set_default_verify_pathsr(jjXQhttp://docs.python.org/3/library/ssl.html#ssl.SSLContext.set_default_verify_pathsX-trXsched.scheduler.emptyr(jjXAhttp://docs.python.org/3/library/sched.html#sched.scheduler.emptyX-trXtarfile.TarFile.extractfiler(jjXIhttp://docs.python.org/3/library/tarfile.html#tarfile.TarFile.extractfileX-trX&email.policy.Policy.header_fetch_parser(jjXYhttp://docs.python.org/3/library/email.policy.html#email.policy.Policy.header_fetch_parseX-trXpickle.Pickler.dumpr(jjX@http://docs.python.org/3/library/pickle.html#pickle.Pickler.dumpX-trX%xml.sax.xmlreader.XMLReader.setLocaler(jjXZhttp://docs.python.org/3/library/xml.sax.reader.html#xml.sax.xmlreader.XMLReader.setLocaleX-trX importlib.abc.Loader.load_moduler(jjXPhttp://docs.python.org/3/library/importlib.html#importlib.abc.Loader.load_moduleX-trXcurses.textpad.Textbox.gatherr(jjXJhttp://docs.python.org/3/library/curses.html#curses.textpad.Textbox.gatherX-trX concurrent.futures.Future.resultr(jjXYhttp://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.Future.resultX-trXmemoryview.tolistr(jjX@http://docs.python.org/3/library/stdtypes.html#memoryview.tolistX-trXftplib.FTP.abortr(jjX=http://docs.python.org/3/library/ftplib.html#ftplib.FTP.abortX-trX-distutils.ccompiler.CCompiler.set_executablesr(jjX\http://docs.python.org/3/distutils/apiref.html#distutils.ccompiler.CCompiler.set_executablesX-trXchunk.Chunk.readr(jjX<http://docs.python.org/3/library/chunk.html#chunk.Chunk.readX-trXobject.__int__r(jjX@http://docs.python.org/3/reference/datamodel.html#object.__int__X-trXmsilib.View.Fetchr(jjX>http://docs.python.org/3/library/msilib.html#msilib.View.FetchX-trX-distutils.ccompiler.CCompiler.add_link_objectr(jjX\http://docs.python.org/3/distutils/apiref.html#distutils.ccompiler.CCompiler.add_link_objectX-trXmailbox.MHMessage.get_sequencesr(jjXMhttp://docs.python.org/3/library/mailbox.html#mailbox.MHMessage.get_sequencesX-trXset.symmetric_differencer(jjXGhttp://docs.python.org/3/library/stdtypes.html#set.symmetric_differenceX-trXmailbox.Mailbox.iterkeysr(jjXFhttp://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.iterkeysX-trXsqlite3.Cursor.fetchallr(jjXEhttp://docs.python.org/3/library/sqlite3.html#sqlite3.Cursor.fetchallX-trXmailbox.Mailbox.getr(jjXAhttp://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.getX-trX.distutils.ccompiler.CCompiler.set_link_objectsr(jjX]http://docs.python.org/3/distutils/apiref.html#distutils.ccompiler.CCompiler.set_link_objectsX-trXprofile.Profile.runcallr(jjXEhttp://docs.python.org/3/library/profile.html#profile.Profile.runcallX-trXimaplib.IMAP4.expunger(jjXChttp://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.expungeX-trXsymtable.SymbolTable.get_namer(jjXLhttp://docs.python.org/3/library/symtable.html#symtable.SymbolTable.get_nameX-trX(wsgiref.simple_server.WSGIServer.set_appr(jjXVhttp://docs.python.org/3/library/wsgiref.html#wsgiref.simple_server.WSGIServer.set_appX-trXmsilib.Record.GetFieldCountr(jjXHhttp://docs.python.org/3/library/msilib.html#msilib.Record.GetFieldCountX-trXselectors.KqueueSelector.filenor(jjXOhttp://docs.python.org/3/library/selectors.html#selectors.KqueueSelector.filenoX-trXdecimal.Decimal.logical_orr(jjXHhttp://docs.python.org/3/library/decimal.html#decimal.Decimal.logical_orX-trXtrace.CoverageResults.updater(jjXHhttp://docs.python.org/3/library/trace.html#trace.CoverageResults.updateX-trXemail.message.Message.as_stringr(jjXShttp://docs.python.org/3/library/email.message.html#email.message.Message.as_stringX-trXarray.array.fromunicoder(jjXChttp://docs.python.org/3/library/array.html#array.array.fromunicodeX-trX$xml.sax.handler.ErrorHandler.warningr(jjXZhttp://docs.python.org/3/library/xml.sax.handler.html#xml.sax.handler.ErrorHandler.warningX-trXsocket.socket.bindr(jjX?http://docs.python.org/3/library/socket.html#socket.socket.bindX-trX$xml.dom.Element.getElementsByTagNamer(jjXRhttp://docs.python.org/3/library/xml.dom.html#xml.dom.Element.getElementsByTagNameX-trXcurses.window.touchliner(jjXDhttp://docs.python.org/3/library/curses.html#curses.window.touchlineX-trX'unittest.TestLoader.loadTestsFromModuler(jjXVhttp://docs.python.org/3/library/unittest.html#unittest.TestLoader.loadTestsFromModuleX-trXmsilib.Directory.add_filer(jjXFhttp://docs.python.org/3/library/msilib.html#msilib.Directory.add_fileX-trXformatter.writer.new_spacingr(jjXLhttp://docs.python.org/3/library/formatter.html#formatter.writer.new_spacingX-trX3xml.parsers.expat.xmlparser.EndNamespaceDeclHandlerr(jjXahttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.xmlparser.EndNamespaceDeclHandlerX-trXobject.__abs__r(jjX@http://docs.python.org/3/reference/datamodel.html#object.__abs__X-trXreprlib.Repr.reprr(jjX?http://docs.python.org/3/library/reprlib.html#reprlib.Repr.reprX-trX!http.cookies.BaseCookie.js_outputr(jjXThttp://docs.python.org/3/library/http.cookies.html#http.cookies.BaseCookie.js_outputX-trXpipes.Template.appendr(jjXAhttp://docs.python.org/3/library/pipes.html#pipes.Template.appendX-trXdecimal.Context.to_sci_stringr(jjXKhttp://docs.python.org/3/library/decimal.html#decimal.Context.to_sci_stringX-trXcurses.panel.Panel.hiddenr(jjXLhttp://docs.python.org/3/library/curses.panel.html#curses.panel.Panel.hiddenX-trX&xml.sax.xmlreader.XMLReader.getFeaturer(jjX[http://docs.python.org/3/library/xml.sax.reader.html#xml.sax.xmlreader.XMLReader.getFeatureX-trXmsilib.Feature.set_currentr(jjXGhttp://docs.python.org/3/library/msilib.html#msilib.Feature.set_currentX-trXaifc.aifc.getmarkersr(jjX?http://docs.python.org/3/library/aifc.html#aifc.aifc.getmarkersX-trXasyncio.WriteTransport.abortr(jjXShttp://docs.python.org/3/library/asyncio-protocol.html#asyncio.WriteTransport.abortX-trX#xml.etree.ElementTree.Element.clearr(jjX_http://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element.clearX-trX"http.client.HTTPConnection.requestr(jjXThttp://docs.python.org/3/library/http.client.html#http.client.HTTPConnection.requestX-tr Xpathlib.PurePath.is_absoluter (jjXJhttp://docs.python.org/3/library/pathlib.html#pathlib.PurePath.is_absoluteX-tr Ximaplib.IMAP4.listr (jjX@http://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.listX-tr Xdecimal.Context.quantizer(jjXFhttp://docs.python.org/3/library/decimal.html#decimal.Context.quantizeX-trXsocket.socket.getsockoptr(jjXEhttp://docs.python.org/3/library/socket.html#socket.socket.getsockoptX-trXobject.__complex__r(jjXDhttp://docs.python.org/3/reference/datamodel.html#object.__complex__X-trXdecimal.Decimal.conjugater(jjXGhttp://docs.python.org/3/library/decimal.html#decimal.Decimal.conjugateX-trXpprint.PrettyPrinter.isreadabler(jjXLhttp://docs.python.org/3/library/pprint.html#pprint.PrettyPrinter.isreadableX-trX-distutils.ccompiler.CCompiler.link_shared_libr(jjX\http://docs.python.org/3/distutils/apiref.html#distutils.ccompiler.CCompiler.link_shared_libX-trXmailbox.Mailbox.keysr(jjXBhttp://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.keysX-trXobject.__mod__r(jjX@http://docs.python.org/3/reference/datamodel.html#object.__mod__X-trX-xml.parsers.expat.xmlparser.EntityDeclHandlerr(jjX[http://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.xmlparser.EntityDeclHandlerX-trX)multiprocessing.managers.SyncManager.listr (jjX_http://docs.python.org/3/library/multiprocessing.html#multiprocessing.managers.SyncManager.listX-tr!Xdatetime.datetime.dater"(jjXEhttp://docs.python.org/3/library/datetime.html#datetime.datetime.dateX-tr#Xcodecs.StreamReader.resetr$(jjXFhttp://docs.python.org/3/library/codecs.html#codecs.StreamReader.resetX-tr%Xemail.charset.Charset.__ne__r&(jjXPhttp://docs.python.org/3/library/email.charset.html#email.charset.Charset.__ne__X-tr'Xemail.parser.BytesParser.parser((jjXQhttp://docs.python.org/3/library/email.parser.html#email.parser.BytesParser.parseX-tr)Xlogging.Logger.getChildr*(jjXEhttp://docs.python.org/3/library/logging.html#logging.Logger.getChildX-tr+Xdecimal.Context.logical_andr,(jjXIhttp://docs.python.org/3/library/decimal.html#decimal.Context.logical_andX-tr-X!urllib.request.Request.add_headerr.(jjXVhttp://docs.python.org/3/library/urllib.request.html#urllib.request.Request.add_headerX-tr/Xgenerator.sendr0(jjXBhttp://docs.python.org/3/reference/expressions.html#generator.sendX-tr1Xemail.header.Header.encoder2(jjXMhttp://docs.python.org/3/library/email.header.html#email.header.Header.encodeX-tr3Xtrace.Trace.runfuncr4(jjX?http://docs.python.org/3/library/trace.html#trace.Trace.runfuncX-tr5X*xml.etree.ElementTree.ElementTree.findtextr6(jjXfhttp://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.ElementTree.findtextX-tr7Xtarfile.TarInfo.ischrr8(jjXChttp://docs.python.org/3/library/tarfile.html#tarfile.TarInfo.ischrX-tr9Xio.RawIOBase.readintor:(jjX>http://docs.python.org/3/library/io.html#io.RawIOBase.readintoX-tr;X$logging.handlers.SysLogHandler.closer<(jjX[http://docs.python.org/3/library/logging.handlers.html#logging.handlers.SysLogHandler.closeX-tr=X*http.cookiejar.CookiePolicy.path_return_okr>(jjX_http://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.CookiePolicy.path_return_okX-tr?X.distutils.ccompiler.CCompiler.set_include_dirsr@(jjX]http://docs.python.org/3/distutils/apiref.html#distutils.ccompiler.CCompiler.set_include_dirsX-trAXsmtplib.SMTP.helorB(jjX?http://docs.python.org/3/library/smtplib.html#smtplib.SMTP.heloX-trCX'urllib.request.BaseHandler.default_openrD(jjX\http://docs.python.org/3/library/urllib.request.html#urllib.request.BaseHandler.default_openX-trEX$calendar.HTMLCalendar.formatyearpagerF(jjXShttp://docs.python.org/3/library/calendar.html#calendar.HTMLCalendar.formatyearpageX-trGXstring.Formatter.convert_fieldrH(jjXKhttp://docs.python.org/3/library/string.html#string.Formatter.convert_fieldX-trIXdecimal.Context.min_magrJ(jjXEhttp://docs.python.org/3/library/decimal.html#decimal.Context.min_magX-trKXmultiprocessing.Process.startrL(jjXShttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.Process.startX-trMXxdrlib.Unpacker.unpack_opaquerN(jjXJhttp://docs.python.org/3/library/xdrlib.html#xdrlib.Unpacker.unpack_opaqueX-trOX xml.dom.Element.getAttributeNoderP(jjXNhttp://docs.python.org/3/library/xml.dom.html#xml.dom.Element.getAttributeNodeX-trQX!curses.textpad.Textbox.do_commandrR(jjXNhttp://docs.python.org/3/library/curses.html#curses.textpad.Textbox.do_commandX-trSXimaplib.IMAP4.setquotarT(jjXDhttp://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.setquotaX-trUXio.BufferedIOBase.read1rV(jjX@http://docs.python.org/3/library/io.html#io.BufferedIOBase.read1X-trWXsmtplib.SMTP.verifyrX(jjXAhttp://docs.python.org/3/library/smtplib.html#smtplib.SMTP.verifyX-trYXmmap.mmap.moverZ(jjX9http://docs.python.org/3/library/mmap.html#mmap.mmap.moveX-tr[Xdbm.gnu.gdbm.reorganizer\(jjXAhttp://docs.python.org/3/library/dbm.html#dbm.gnu.gdbm.reorganizeX-tr]Xmailbox.Maildir.addr^(jjXAhttp://docs.python.org/3/library/mailbox.html#mailbox.Maildir.addX-tr_Xio.BytesIO.getbufferr`(jjX=http://docs.python.org/3/library/io.html#io.BytesIO.getbufferX-traXthreading.Timer.cancelrb(jjXFhttp://docs.python.org/3/library/threading.html#threading.Timer.cancelX-trcXmultiprocessing.Queue.qsizerd(jjXQhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.Queue.qsizeX-treX"email.headerregistry.Group.__str__rf(jjX]http://docs.python.org/3/library/email.headerregistry.html#email.headerregistry.Group.__str__X-trgX)logging.handlers.RotatingFileHandler.emitrh(jjX`http://docs.python.org/3/library/logging.handlers.html#logging.handlers.RotatingFileHandler.emitX-triXimaplib.IMAP4.namespacerj(jjXEhttp://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.namespaceX-trkX/logging.handlers.NTEventLogHandler.getMessageIDrl(jjXfhttp://docs.python.org/3/library/logging.handlers.html#logging.handlers.NTEventLogHandler.getMessageIDX-trmX set.updatern(jjX9http://docs.python.org/3/library/stdtypes.html#set.updateX-troXcurses.window.derwinrp(jjXAhttp://docs.python.org/3/library/curses.html#curses.window.derwinX-trqXdecimal.Context.is_nanrr(jjXDhttp://docs.python.org/3/library/decimal.html#decimal.Context.is_nanX-trsXpathlib.Path.ownerrt(jjX@http://docs.python.org/3/library/pathlib.html#pathlib.Path.ownerX-truXftplib.FTP_TLS.cccrv(jjX?http://docs.python.org/3/library/ftplib.html#ftplib.FTP_TLS.cccX-trwXxmlrpc.client.Binary.decoderx(jjXOhttp://docs.python.org/3/library/xmlrpc.client.html#xmlrpc.client.Binary.decodeX-tryXcurses.window.bkgdsetrz(jjXBhttp://docs.python.org/3/library/curses.html#curses.window.bkgdsetX-tr{Xdecimal.Context.compare_totalr|(jjXKhttp://docs.python.org/3/library/decimal.html#decimal.Context.compare_totalX-tr}Xpprint.PrettyPrinter.pprintr~(jjXHhttp://docs.python.org/3/library/pprint.html#pprint.PrettyPrinter.pprintX-trXobject.__getattribute__r(jjXIhttp://docs.python.org/3/reference/datamodel.html#object.__getattribute__X-trXmailbox.MMDFMessage.get_flagsr(jjXKhttp://docs.python.org/3/library/mailbox.html#mailbox.MMDFMessage.get_flagsX-trX"unittest.mock.Mock._get_child_mockr(jjXVhttp://docs.python.org/3/library/unittest.mock.html#unittest.mock.Mock._get_child_mockX-trXasyncio.Task.print_stackr(jjXKhttp://docs.python.org/3/library/asyncio-task.html#asyncio.Task.print_stackX-trX2asyncio.BaseSubprocessTransport.get_pipe_transportr(jjXihttp://docs.python.org/3/library/asyncio-protocol.html#asyncio.BaseSubprocessTransport.get_pipe_transportX-trX#smtplib.SMTP.ehlo_or_helo_if_neededr(jjXQhttp://docs.python.org/3/library/smtplib.html#smtplib.SMTP.ehlo_or_helo_if_neededX-trXthreading.Semaphore.releaser(jjXKhttp://docs.python.org/3/library/threading.html#threading.Semaphore.releaseX-trX!unittest.mock.Mock.configure_mockr(jjXUhttp://docs.python.org/3/library/unittest.mock.html#unittest.mock.Mock.configure_mockX-trXformatter.formatter.push_marginr(jjXOhttp://docs.python.org/3/library/formatter.html#formatter.formatter.push_marginX-trXobject.__delete__r(jjXChttp://docs.python.org/3/reference/datamodel.html#object.__delete__X-trX+email.message.EmailMessage.iter_attachmentsr(jjXfhttp://docs.python.org/3/library/email.contentmanager.html#email.message.EmailMessage.iter_attachmentsX-trXpickle.Unpickler.find_classr(jjXHhttp://docs.python.org/3/library/pickle.html#pickle.Unpickler.find_classX-trX"formatter.formatter.add_line_breakr(jjXRhttp://docs.python.org/3/library/formatter.html#formatter.formatter.add_line_breakX-trXmailbox.mboxMessage.add_flagr(jjXJhttp://docs.python.org/3/library/mailbox.html#mailbox.mboxMessage.add_flagX-trXcontextmanager.__enter__r(jjXGhttp://docs.python.org/3/library/stdtypes.html#contextmanager.__enter__X-trX-multiprocessing.managers.BaseManager.shutdownr(jjXchttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.managers.BaseManager.shutdownX-trXobject.__invert__r(jjXChttp://docs.python.org/3/reference/datamodel.html#object.__invert__X-trXmailbox.Babyl.get_labelsr(jjXFhttp://docs.python.org/3/library/mailbox.html#mailbox.Babyl.get_labelsX-trX"argparse.ArgumentParser.print_helpr(jjXQhttp://docs.python.org/3/library/argparse.html#argparse.ArgumentParser.print_helpX-trXqueue.Queue.emptyr(jjX=http://docs.python.org/3/library/queue.html#queue.Queue.emptyX-trXemail.header.Header.__eq__r(jjXMhttp://docs.python.org/3/library/email.header.html#email.header.Header.__eq__X-trX pdb.Pdb.runr(jjX5http://docs.python.org/3/library/pdb.html#pdb.Pdb.runX-trX"distutils.ccompiler.CCompiler.linkr(jjXQhttp://docs.python.org/3/distutils/apiref.html#distutils.ccompiler.CCompiler.linkX-trXobject.__bool__r(jjXAhttp://docs.python.org/3/reference/datamodel.html#object.__bool__X-trXpdb.Pdb.set_tracer(jjX;http://docs.python.org/3/library/pdb.html#pdb.Pdb.set_traceX-trXlogging.NullHandler.createLockr(jjXUhttp://docs.python.org/3/library/logging.handlers.html#logging.NullHandler.createLockX-trX'importlib.abc.InspectLoader.exec_moduler(jjXWhttp://docs.python.org/3/library/importlib.html#importlib.abc.InspectLoader.exec_moduleX-trXmimetypes.MimeTypes.readfpr(jjXJhttp://docs.python.org/3/library/mimetypes.html#mimetypes.MimeTypes.readfpX-trX8xmlrpc.server.DocCGIXMLRPCRequestHandler.set_server_namer(jjXlhttp://docs.python.org/3/library/xmlrpc.server.html#xmlrpc.server.DocCGIXMLRPCRequestHandler.set_server_nameX-trXdatetime.datetime.timestampr(jjXJhttp://docs.python.org/3/library/datetime.html#datetime.datetime.timestampX-trX!configparser.ConfigParser.optionsr(jjXThttp://docs.python.org/3/library/configparser.html#configparser.ConfigParser.optionsX-trXssl.SSLContext.set_ecdh_curver(jjXGhttp://docs.python.org/3/library/ssl.html#ssl.SSLContext.set_ecdh_curveX-trXzipfile.ZipFile.getinfor(jjXEhttp://docs.python.org/3/library/zipfile.html#zipfile.ZipFile.getinfoX-trX tkinter.ttk.Style.element_creater(jjXRhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Style.element_createX-trXstruct.Struct.unpack_fromr(jjXFhttp://docs.python.org/3/library/struct.html#struct.Struct.unpack_fromX-trX unittest.TestResult.startTestRunr(jjXOhttp://docs.python.org/3/library/unittest.html#unittest.TestResult.startTestRunX-trX$xml.dom.pulldom.DOMEventStream.resetr(jjXZhttp://docs.python.org/3/library/xml.dom.pulldom.html#xml.dom.pulldom.DOMEventStream.resetX-trX re.match.spanr(jjX6http://docs.python.org/3/library/re.html#re.match.spanX-trXlogging.Logger.makeRecordr(jjXGhttp://docs.python.org/3/library/logging.html#logging.Logger.makeRecordX-trXtarfile.TarFile.openr(jjXBhttp://docs.python.org/3/library/tarfile.html#tarfile.TarFile.openX-trXimaplib.IMAP4.partialr(jjXChttp://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.partialX-trXBxmlrpc.server.CGIXMLRPCRequestHandler.register_multicall_functionsr(jjXvhttp://docs.python.org/3/library/xmlrpc.server.html#xmlrpc.server.CGIXMLRPCRequestHandler.register_multicall_functionsX-trXpstats.Stats.print_calleesr(jjXHhttp://docs.python.org/3/library/profile.html#pstats.Stats.print_calleesX-trX>urllib.request.AbstractDigestAuthHandler.http_error_auth_reqedr(jjXshttp://docs.python.org/3/library/urllib.request.html#urllib.request.AbstractDigestAuthHandler.http_error_auth_reqedX-trXselect.epoll.closer(jjX?http://docs.python.org/3/library/select.html#select.epoll.closeX-trXbdb.Bdb.canonicr(jjX9http://docs.python.org/3/library/bdb.html#bdb.Bdb.canonicX-trX*multiprocessing.managers.SyncManager.Eventr(jjX`http://docs.python.org/3/library/multiprocessing.html#multiprocessing.managers.SyncManager.EventX-trXobject.__rxor__r(jjXAhttp://docs.python.org/3/reference/datamodel.html#object.__rxor__X-trX6http.cookiejar.DefaultCookiePolicy.set_blocked_domainsr(jjXkhttp://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.DefaultCookiePolicy.set_blocked_domainsX-trXpathlib.Path.resolver(jjXBhttp://docs.python.org/3/library/pathlib.html#pathlib.Path.resolveX-trXtkinter.tix.tixCommand.tix_cgetr(jjXQhttp://docs.python.org/3/library/tkinter.tix.html#tkinter.tix.tixCommand.tix_cgetX-trX modulefinder.ModuleFinder.reportr(jjXShttp://docs.python.org/3/library/modulefinder.html#modulefinder.ModuleFinder.reportX-trX%logging.handlers.QueueHandler.preparer(jjX\http://docs.python.org/3/library/logging.handlers.html#logging.handlers.QueueHandler.prepareX-trX.multiprocessing.managers.SyncManager.Conditionr(jjXdhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.managers.SyncManager.ConditionX-trXtarfile.TarFile.listr(jjXBhttp://docs.python.org/3/library/tarfile.html#tarfile.TarFile.listX-trX.xml.sax.xmlreader.AttributesNS.getValueByQNamer(jjXchttp://docs.python.org/3/library/xml.sax.reader.html#xml.sax.xmlreader.AttributesNS.getValueByQNameX-trXio.IOBase.closer(jjX8http://docs.python.org/3/library/io.html#io.IOBase.closeX-trX bytes.decoder(jjX;http://docs.python.org/3/library/stdtypes.html#bytes.decodeX-trXlogging.Handler.flushr(jjXChttp://docs.python.org/3/library/logging.html#logging.Handler.flushX-trXftplib.FTP.quitr(jjX<http://docs.python.org/3/library/ftplib.html#ftplib.FTP.quitX-trX)xml.sax.xmlreader.XMLReader.setDTDHandlerr(jjX^http://docs.python.org/3/library/xml.sax.reader.html#xml.sax.xmlreader.XMLReader.setDTDHandlerX-trXdifflib.SequenceMatcher.ratior(jjXKhttp://docs.python.org/3/library/difflib.html#difflib.SequenceMatcher.ratioX-trXasyncio.Condition.notify_allr(jjXOhttp://docs.python.org/3/library/asyncio-sync.html#asyncio.Condition.notify_allX-trX(importlib.abc.MetaPathFinder.find_moduler(jjXXhttp://docs.python.org/3/library/importlib.html#importlib.abc.MetaPathFinder.find_moduleX-trXpathlib.Path.chmodr(jjX@http://docs.python.org/3/library/pathlib.html#pathlib.Path.chmodX-trXformatter.formatter.pop_styler(jjXMhttp://docs.python.org/3/library/formatter.html#formatter.formatter.pop_styleX-trXmailbox.MMDFMessage.get_fromr(jjXJhttp://docs.python.org/3/library/mailbox.html#mailbox.MMDFMessage.get_fromX-trXdecimal.Context.normalizer(jjXGhttp://docs.python.org/3/library/decimal.html#decimal.Context.normalizeX-trXlogging.NullHandler.handler(jjXQhttp://docs.python.org/3/library/logging.handlers.html#logging.NullHandler.handleX-tr X$logging.handlers.QueueListener.startr (jjX[http://docs.python.org/3/library/logging.handlers.html#logging.handlers.QueueListener.startX-tr Xmsilib.Control.eventr (jjXAhttp://docs.python.org/3/library/msilib.html#msilib.Control.eventX-tr X$http.cookies.BaseCookie.value_decoder(jjXWhttp://docs.python.org/3/library/http.cookies.html#http.cookies.BaseCookie.value_decodeX-trX#mimetypes.MimeTypes.guess_extensionr(jjXShttp://docs.python.org/3/library/mimetypes.html#mimetypes.MimeTypes.guess_extensionX-trXdecimal.Context.divmodr(jjXDhttp://docs.python.org/3/library/decimal.html#decimal.Context.divmodX-trXbdb.Bdb.set_tracer(jjX;http://docs.python.org/3/library/bdb.html#bdb.Bdb.set_traceX-trX'xml.sax.handler.DTDHandler.notationDeclr(jjX]http://docs.python.org/3/library/xml.sax.handler.html#xml.sax.handler.DTDHandler.notationDeclX-trX$email.headerregistry.Address.__str__r(jjX_http://docs.python.org/3/library/email.headerregistry.html#email.headerregistry.Address.__str__X-trXbytes.translater(jjX>http://docs.python.org/3/library/stdtypes.html#bytes.translateX-trXaifc.aifc.rewindr(jjX;http://docs.python.org/3/library/aifc.html#aifc.aifc.rewindX-trX float.hexr(jjX8http://docs.python.org/3/library/stdtypes.html#float.hexX-trX$doctest.DocTestRunner.report_failurer (jjXRhttp://docs.python.org/3/library/doctest.html#doctest.DocTestRunner.report_failureX-tr!Ximaplib.IMAP4.statusr"(jjXBhttp://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.statusX-tr#Xpprint.PrettyPrinter.formatr$(jjXHhttp://docs.python.org/3/library/pprint.html#pprint.PrettyPrinter.formatX-tr%Xtkinter.ttk.Treeview.existsr&(jjXMhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.existsX-tr'Xobject.__pow__r((jjX@http://docs.python.org/3/reference/datamodel.html#object.__pow__X-tr)Ximaplib.IMAP4.xatomr*(jjXAhttp://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.xatomX-tr+Xlogging.Handler.closer,(jjXChttp://docs.python.org/3/library/logging.html#logging.Handler.closeX-tr-Xsunau.AU_read.getnframesr.(jjXDhttp://docs.python.org/3/library/sunau.html#sunau.AU_read.getnframesX-tr/X(distutils.ccompiler.CCompiler.preprocessr0(jjXWhttp://docs.python.org/3/distutils/apiref.html#distutils.ccompiler.CCompiler.preprocessX-tr1X4xmlrpc.server.CGIXMLRPCRequestHandler.handle_requestr2(jjXhhttp://docs.python.org/3/library/xmlrpc.server.html#xmlrpc.server.CGIXMLRPCRequestHandler.handle_requestX-tr3X(logging.handlers.MemoryHandler.setTargetr4(jjX_http://docs.python.org/3/library/logging.handlers.html#logging.handlers.MemoryHandler.setTargetX-tr5Xcodecs.StreamReader.readliner6(jjXIhttp://docs.python.org/3/library/codecs.html#codecs.StreamReader.readlineX-tr7X0http.server.BaseHTTPRequestHandler.send_responser8(jjXbhttp://docs.python.org/3/library/http.server.html#http.server.BaseHTTPRequestHandler.send_responseX-tr9Xbdb.Bdb.clear_breakr:(jjX=http://docs.python.org/3/library/bdb.html#bdb.Bdb.clear_breakX-tr;X ssl.SSLContext.set_npn_protocolsr<(jjXJhttp://docs.python.org/3/library/ssl.html#ssl.SSLContext.set_npn_protocolsX-tr=X/xml.parsers.expat.xmlparser.StartElementHandlerr>(jjX]http://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.xmlparser.StartElementHandlerX-tr?X#code.InteractiveInterpreter.runcoder@(jjXNhttp://docs.python.org/3/library/code.html#code.InteractiveInterpreter.runcodeX-trAX!urllib.request.Request.has_headerrB(jjXVhttp://docs.python.org/3/library/urllib.request.html#urllib.request.Request.has_headerX-trCXdatetime.date.toordinalrD(jjXFhttp://docs.python.org/3/library/datetime.html#datetime.date.toordinalX-trEX re.match.endrF(jjX5http://docs.python.org/3/library/re.html#re.match.endX-trGX"xml.etree.ElementTree.Element.iterrH(jjX^http://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element.iterX-trIXnntplib.NNTP.listrJ(jjX?http://docs.python.org/3/library/nntplib.html#nntplib.NNTP.listX-trKXcurses.panel.Panel.bottomrL(jjXLhttp://docs.python.org/3/library/curses.panel.html#curses.panel.Panel.bottomX-trMXmailbox.BabylMessage.set_labelsrN(jjXMhttp://docs.python.org/3/library/mailbox.html#mailbox.BabylMessage.set_labelsX-trOXsocket.socket.connect_exrP(jjXEhttp://docs.python.org/3/library/socket.html#socket.socket.connect_exX-trQXssl.SSLContext.load_dh_paramsrR(jjXGhttp://docs.python.org/3/library/ssl.html#ssl.SSLContext.load_dh_paramsX-trSXbdb.Bdb.set_nextrT(jjX:http://docs.python.org/3/library/bdb.html#bdb.Bdb.set_nextX-trUXpoplib.POP3.uidlrV(jjX=http://docs.python.org/3/library/poplib.html#poplib.POP3.uidlX-trWX0importlib.machinery.SourceFileLoader.load_modulerX(jjX`http://docs.python.org/3/library/importlib.html#importlib.machinery.SourceFileLoader.load_moduleX-trYX#concurrent.futures.Future.exceptionrZ(jjX\http://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.Future.exceptionX-tr[Xobject.__pos__r\(jjX@http://docs.python.org/3/reference/datamodel.html#object.__pos__X-tr]X!multiprocessing.Process.terminater^(jjXWhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.Process.terminateX-tr_X0xml.sax.xmlreader.InputSource.getCharacterStreamr`(jjXehttp://docs.python.org/3/library/xml.sax.reader.html#xml.sax.xmlreader.InputSource.getCharacterStreamX-traX$urllib.request.Request.remove_headerrb(jjXYhttp://docs.python.org/3/library/urllib.request.html#urllib.request.Request.remove_headerX-trcX"asyncio.AbstractServer.wait_closedrd(jjXZhttp://docs.python.org/3/library/asyncio-eventloop.html#asyncio.AbstractServer.wait_closedX-treX http.client.HTTPConnection.closerf(jjXRhttp://docs.python.org/3/library/http.client.html#http.client.HTTPConnection.closeX-trgXmsilib.Dialog.bitmaprh(jjXAhttp://docs.python.org/3/library/msilib.html#msilib.Dialog.bitmapX-triXftplib.FTP.retrlinesrj(jjXAhttp://docs.python.org/3/library/ftplib.html#ftplib.FTP.retrlinesX-trkXasyncio.Queue.getrl(jjXDhttp://docs.python.org/3/library/asyncio-sync.html#asyncio.Queue.getX-trmXunittest.TestCase.addCleanuprn(jjXKhttp://docs.python.org/3/library/unittest.html#unittest.TestCase.addCleanupX-troX difflib.SequenceMatcher.set_seq1rp(jjXNhttp://docs.python.org/3/library/difflib.html#difflib.SequenceMatcher.set_seq1X-trqXselect.epoll.unregisterrr(jjXDhttp://docs.python.org/3/library/select.html#select.epoll.unregisterX-trsXthreading.Barrier.waitrt(jjXFhttp://docs.python.org/3/library/threading.html#threading.Barrier.waitX-truXdistutils.cmd.Command.runrv(jjXHhttp://docs.python.org/3/distutils/apiref.html#distutils.cmd.Command.runX-trwXtkinter.ttk.Notebook.tabsrx(jjXKhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Notebook.tabsX-tryX dict.clearrz(jjX9http://docs.python.org/3/library/stdtypes.html#dict.clearX-tr{X urllib.request.BaseHandler.closer|(jjXUhttp://docs.python.org/3/library/urllib.request.html#urllib.request.BaseHandler.closeX-tr}Xunittest.TestCase.subTestr~(jjXHhttp://docs.python.org/3/library/unittest.html#unittest.TestCase.subTestX-trX,urllib.robotparser.RobotFileParser.can_fetchr(jjXehttp://docs.python.org/3/library/urllib.robotparser.html#urllib.robotparser.RobotFileParser.can_fetchX-trXlzma.LZMAFile.peekr(jjX=http://docs.python.org/3/library/lzma.html#lzma.LZMAFile.peekX-trXmailbox.MMDFMessage.add_flagr(jjXJhttp://docs.python.org/3/library/mailbox.html#mailbox.MMDFMessage.add_flagX-trX!tkinter.ttk.Treeview.set_childrenr(jjXShttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.set_childrenX-trXxdrlib.Packer.pack_listr(jjXDhttp://docs.python.org/3/library/xdrlib.html#xdrlib.Packer.pack_listX-trXwave.Wave_write.setparamsr(jjXDhttp://docs.python.org/3/library/wave.html#wave.Wave_write.setparamsX-trXmailbox.mbox.get_filer(jjXChttp://docs.python.org/3/library/mailbox.html#mailbox.mbox.get_fileX-trX"unittest.TestCase.assertCountEqualr(jjXQhttp://docs.python.org/3/library/unittest.html#unittest.TestCase.assertCountEqualX-trXzipfile.ZipFile.setpasswordr(jjXIhttp://docs.python.org/3/library/zipfile.html#zipfile.ZipFile.setpasswordX-trX gettext.GNUTranslations.lgettextr(jjXNhttp://docs.python.org/3/library/gettext.html#gettext.GNUTranslations.lgettextX-trX!tkinter.ttk.Treeview.get_childrenr(jjXShttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.get_childrenX-trXdatetime.date.timetupler(jjXFhttp://docs.python.org/3/library/datetime.html#datetime.date.timetupleX-trXarray.array.tobytesr(jjX?http://docs.python.org/3/library/array.html#array.array.tobytesX-trXtelnetlib.Telnet.filenor(jjXGhttp://docs.python.org/3/library/telnetlib.html#telnetlib.Telnet.filenoX-trXformatter.writer.send_paragraphr(jjXOhttp://docs.python.org/3/library/formatter.html#formatter.writer.send_paragraphX-trX difflib.SequenceMatcher.set_seqsr(jjXNhttp://docs.python.org/3/library/difflib.html#difflib.SequenceMatcher.set_seqsX-trXobject.__exit__r(jjXAhttp://docs.python.org/3/reference/datamodel.html#object.__exit__X-trXdecimal.Context.clear_flagsr(jjXIhttp://docs.python.org/3/library/decimal.html#decimal.Context.clear_flagsX-trXtkinter.ttk.Treeview.setr(jjXJhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.setX-trXmsilib.Record.SetStringr(jjXDhttp://docs.python.org/3/library/msilib.html#msilib.Record.SetStringX-trXcurses.window.insertlnr(jjXChttp://docs.python.org/3/library/curses.html#curses.window.insertlnX-trX"asynchat.async_chat.get_terminatorr(jjXQhttp://docs.python.org/3/library/asynchat.html#asynchat.async_chat.get_terminatorX-trXssl.SSLContext.wrap_socketr(jjXDhttp://docs.python.org/3/library/ssl.html#ssl.SSLContext.wrap_socketX-trX#ossaudiodev.oss_mixer_device.filenor(jjXUhttp://docs.python.org/3/library/ossaudiodev.html#ossaudiodev.oss_mixer_device.filenoX-trXtkinter.ttk.Treeview.seer(jjXJhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.seeX-trXnetrc.netrc.__repr__r(jjX@http://docs.python.org/3/library/netrc.html#netrc.netrc.__repr__X-trXmailbox.MH.remove_folderr(jjXFhttp://docs.python.org/3/library/mailbox.html#mailbox.MH.remove_folderX-trXprofile.Profile.runctxr(jjXDhttp://docs.python.org/3/library/profile.html#profile.Profile.runctxX-trXdecimal.Decimal.compare_signalr(jjXLhttp://docs.python.org/3/library/decimal.html#decimal.Decimal.compare_signalX-trXlogging.NullHandler.emitr(jjXOhttp://docs.python.org/3/library/logging.handlers.html#logging.NullHandler.emitX-trXwave.Wave_write.setnchannelsr(jjXGhttp://docs.python.org/3/library/wave.html#wave.Wave_write.setnchannelsX-trX,xml.sax.handler.ContentHandler.skippedEntityr(jjXbhttp://docs.python.org/3/library/xml.sax.handler.html#xml.sax.handler.ContentHandler.skippedEntityX-trXemail.message.Message.__str__r(jjXQhttp://docs.python.org/3/library/email.message.html#email.message.Message.__str__X-trX'ossaudiodev.oss_mixer_device.set_recsrcr(jjXYhttp://docs.python.org/3/library/ossaudiodev.html#ossaudiodev.oss_mixer_device.set_recsrcX-trXabc.ABCMeta.__subclasshook__r(jjXFhttp://docs.python.org/3/library/abc.html#abc.ABCMeta.__subclasshook__X-trX)xml.sax.xmlreader.InputSource.setEncodingr(jjX^http://docs.python.org/3/library/xml.sax.reader.html#xml.sax.xmlreader.InputSource.setEncodingX-trX&distutils.cmd.Command.finalize_optionsr(jjXUhttp://docs.python.org/3/distutils/apiref.html#distutils.cmd.Command.finalize_optionsX-trX#xml.parsers.expat.xmlparser.SetBaser(jjXQhttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.xmlparser.SetBaseX-trXdifflib.HtmlDiff.make_tabler(jjXIhttp://docs.python.org/3/library/difflib.html#difflib.HtmlDiff.make_tableX-trX optparse.OptionParser.has_optionr(jjXOhttp://docs.python.org/3/library/optparse.html#optparse.OptionParser.has_optionX-trX-urllib.request.BaseHandler.http_error_defaultr(jjXbhttp://docs.python.org/3/library/urllib.request.html#urllib.request.BaseHandler.http_error_defaultX-trXstr.joinr(jjX7http://docs.python.org/3/library/stdtypes.html#str.joinX-trXre.regex.finditerr(jjX:http://docs.python.org/3/library/re.html#re.regex.finditerX-trX$asyncio.ReadTransport.resume_readingr(jjX[http://docs.python.org/3/library/asyncio-protocol.html#asyncio.ReadTransport.resume_readingX-trX.optparse.OptionParser.enable_interspersed_argsr(jjX]http://docs.python.org/3/library/optparse.html#optparse.OptionParser.enable_interspersed_argsX-trX0xml.parsers.expat.xmlparser.DefaultHandlerExpandr(jjX^http://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.xmlparser.DefaultHandlerExpandX-trXcodecs.StreamReader.readlinesr(jjXJhttp://docs.python.org/3/library/codecs.html#codecs.StreamReader.readlinesX-trXnntplib.NNTP.overr(jjX?http://docs.python.org/3/library/nntplib.html#nntplib.NNTP.overX-trX$formatter.formatter.assert_line_datar(jjXThttp://docs.python.org/3/library/formatter.html#formatter.formatter.assert_line_dataX-trXmailbox.MH.add_folderr(jjXChttp://docs.python.org/3/library/mailbox.html#mailbox.MH.add_folderX-trXgenerator.__next__r(jjXFhttp://docs.python.org/3/reference/expressions.html#generator.__next__X-trXpathlib.Path.openr(jjX?http://docs.python.org/3/library/pathlib.html#pathlib.Path.openX-trX(asyncio.BaseEventLoop.run_until_completer(jjX`http://docs.python.org/3/library/asyncio-eventloop.html#asyncio.BaseEventLoop.run_until_completeX-trXtelnetlib.Telnet.set_debuglevelr(jjXOhttp://docs.python.org/3/library/telnetlib.html#telnetlib.Telnet.set_debuglevelX-trX3wsgiref.simple_server.WSGIRequestHandler.get_stderrr(jjXahttp://docs.python.org/3/library/wsgiref.html#wsgiref.simple_server.WSGIRequestHandler.get_stderrX-trXmsilib.Database.OpenViewr(jjXEhttp://docs.python.org/3/library/msilib.html#msilib.Database.OpenViewX-trX2xml.sax.handler.ContentHandler.ignorableWhitespacer(jjXhhttp://docs.python.org/3/library/xml.sax.handler.html#xml.sax.handler.ContentHandler.ignorableWhitespaceX-trX)xml.etree.ElementTree.XMLPullParser.closer(jjXehttp://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.XMLPullParser.closeX-trX"string.Formatter.check_unused_argsr(jjXOhttp://docs.python.org/3/library/string.html#string.Formatter.check_unused_argsX-trXdatetime.tzinfo.dstr(jjXBhttp://docs.python.org/3/library/datetime.html#datetime.tzinfo.dstX-trX%html.parser.HTMLParser.handle_charrefr(jjXWhttp://docs.python.org/3/library/html.parser.html#html.parser.HTMLParser.handle_charrefX-trXpathlib.Path.existsr(jjXAhttp://docs.python.org/3/library/pathlib.html#pathlib.Path.existsX-trXarray.array.tofiler(jjX>http://docs.python.org/3/library/array.html#array.array.tofileX-trX*urllib.robotparser.RobotFileParser.set_urlr(jjXchttp://docs.python.org/3/library/urllib.robotparser.html#urllib.robotparser.RobotFileParser.set_urlX-trX!xml.sax.xmlreader.XMLReader.parser(jjXVhttp://docs.python.org/3/library/xml.sax.reader.html#xml.sax.xmlreader.XMLReader.parseX-trX'email.policy.Policy.header_source_parser(jjXZhttp://docs.python.org/3/library/email.policy.html#email.policy.Policy.header_source_parseX-trXwave.Wave_read.getsampwidthr(jjXFhttp://docs.python.org/3/library/wave.html#wave.Wave_read.getsampwidthX-trX$ossaudiodev.oss_audio_device.bufsizer(jjXVhttp://docs.python.org/3/library/ossaudiodev.html#ossaudiodev.oss_audio_device.bufsizeX-trXlogging.Logger.exceptionr(jjXFhttp://docs.python.org/3/library/logging.html#logging.Logger.exceptionX-tr Xio.RawIOBase.writer (jjX;http://docs.python.org/3/library/io.html#io.RawIOBase.writeX-tr X!distutils.text_file.TextFile.openr (jjXPhttp://docs.python.org/3/distutils/apiref.html#distutils.text_file.TextFile.openX-tr X!code.InteractiveConsole.raw_inputr(jjXLhttp://docs.python.org/3/library/code.html#code.InteractiveConsole.raw_inputX-trX%filecmp.dircmp.report_partial_closurer(jjXShttp://docs.python.org/3/library/filecmp.html#filecmp.dircmp.report_partial_closureX-trXaifc.aifc.closer(jjX:http://docs.python.org/3/library/aifc.html#aifc.aifc.closeX-trXmailbox.BabylMessage.get_labelsr(jjXMhttp://docs.python.org/3/library/mailbox.html#mailbox.BabylMessage.get_labelsX-trXwave.Wave_read.tellr(jjX>http://docs.python.org/3/library/wave.html#wave.Wave_read.tellX-trX!unittest.TestCase.assertDictEqualr(jjXPhttp://docs.python.org/3/library/unittest.html#unittest.TestCase.assertDictEqualX-trX/email.contentmanager.ContentManager.set_contentr(jjXjhttp://docs.python.org/3/library/email.contentmanager.html#email.contentmanager.ContentManager.set_contentX-trX!unittest.TestCase.assertListEqualr(jjXPhttp://docs.python.org/3/library/unittest.html#unittest.TestCase.assertListEqualX-trXhtml.parser.HTMLParser.getposr(jjXOhttp://docs.python.org/3/library/html.parser.html#html.parser.HTMLParser.getposX-trXasyncio.StreamReader.exceptionr (jjXShttp://docs.python.org/3/library/asyncio-stream.html#asyncio.StreamReader.exceptionX-tr!Xzlib.Decompress.flushr"(jjX@http://docs.python.org/3/library/zlib.html#zlib.Decompress.flushX-tr#Xclass.__subclasscheck__r$(jjXIhttp://docs.python.org/3/reference/datamodel.html#class.__subclasscheck__X-tr%Xasyncio.Queue.fullr&(jjXEhttp://docs.python.org/3/library/asyncio-sync.html#asyncio.Queue.fullX-tr'Xftplib.FTP.closer((jjX=http://docs.python.org/3/library/ftplib.html#ftplib.FTP.closeX-tr)Xtkinter.ttk.Progressbar.stopr*(jjXNhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Progressbar.stopX-tr+Xlogging.StreamHandler.emitr,(jjXQhttp://docs.python.org/3/library/logging.handlers.html#logging.StreamHandler.emitX-tr-X'sqlite3.Connection.set_progress_handlerr.(jjXUhttp://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.set_progress_handlerX-tr/X"urllib.request.FTPHandler.ftp_openr0(jjXWhttp://docs.python.org/3/library/urllib.request.html#urllib.request.FTPHandler.ftp_openX-tr1Xcurses.panel.Panel.windowr2(jjXLhttp://docs.python.org/3/library/curses.panel.html#curses.panel.Panel.windowX-tr3Xdatetime.datetime.isocalendarr4(jjXLhttp://docs.python.org/3/library/datetime.html#datetime.datetime.isocalendarX-tr5X mailbox.BabylMessage.set_visibler6(jjXNhttp://docs.python.org/3/library/mailbox.html#mailbox.BabylMessage.set_visibleX-tr7X(mimetypes.MimeTypes.guess_all_extensionsr8(jjXXhttp://docs.python.org/3/library/mimetypes.html#mimetypes.MimeTypes.guess_all_extensionsX-tr9Xdecimal.Decimal.to_integralr:(jjXIhttp://docs.python.org/3/library/decimal.html#decimal.Decimal.to_integralX-tr;X+xmlrpc.client.ServerProxy.system.methodHelpr<(jjX_http://docs.python.org/3/library/xmlrpc.client.html#xmlrpc.client.ServerProxy.system.methodHelpX-tr=Xcurses.window.mvwinr>(jjX@http://docs.python.org/3/library/curses.html#curses.window.mvwinX-tr?Xio.RawIOBase.readr@(jjX:http://docs.python.org/3/library/io.html#io.RawIOBase.readX-trAXsmtplib.SMTP.set_debuglevelrB(jjXIhttp://docs.python.org/3/library/smtplib.html#smtplib.SMTP.set_debuglevelX-trCX)mimetypes.MimeTypes.read_windows_registryrD(jjXYhttp://docs.python.org/3/library/mimetypes.html#mimetypes.MimeTypes.read_windows_registryX-trEX#ossaudiodev.oss_audio_device.filenorF(jjXUhttp://docs.python.org/3/library/ossaudiodev.html#ossaudiodev.oss_audio_device.filenoX-trGXmsilib.Record.GetStringrH(jjXDhttp://docs.python.org/3/library/msilib.html#msilib.Record.GetStringX-trIXcollections.deque.extendrJ(jjXJhttp://docs.python.org/3/library/collections.html#collections.deque.extendX-trKXbz2.BZ2Compressor.compressrL(jjXDhttp://docs.python.org/3/library/bz2.html#bz2.BZ2Compressor.compressX-trMXselect.poll.unregisterrN(jjXChttp://docs.python.org/3/library/select.html#select.poll.unregisterX-trOXobject.__call__rP(jjXAhttp://docs.python.org/3/reference/datamodel.html#object.__call__X-trQX"calendar.Calendar.yeardayscalendarrR(jjXQhttp://docs.python.org/3/library/calendar.html#calendar.Calendar.yeardayscalendarX-trSXstring.Template.substituterT(jjXGhttp://docs.python.org/3/library/string.html#string.Template.substituteX-trUXdatetime.datetime.isoweekdayrV(jjXKhttp://docs.python.org/3/library/datetime.html#datetime.datetime.isoweekdayX-trWX0distutils.ccompiler.CCompiler.link_shared_objectrX(jjX_http://docs.python.org/3/distutils/apiref.html#distutils.ccompiler.CCompiler.link_shared_objectX-trYXemail.message.Message.keysrZ(jjXNhttp://docs.python.org/3/library/email.message.html#email.message.Message.keysX-tr[X email.message.Message.add_headerr\(jjXThttp://docs.python.org/3/library/email.message.html#email.message.Message.add_headerX-tr]Ximaplib.IMAP4.proxyauthr^(jjXEhttp://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.proxyauthX-tr_Xunittest.TestCase.assertWarnsr`(jjXLhttp://docs.python.org/3/library/unittest.html#unittest.TestCase.assertWarnsX-traXipaddress.IPv4Network.subnetsrb(jjXMhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Network.subnetsX-trcX#concurrent.futures.Future.cancelledrd(jjX\http://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.Future.cancelledX-treXxdrlib.Packer.pack_floatrf(jjXEhttp://docs.python.org/3/library/xdrlib.html#xdrlib.Packer.pack_floatX-trgXselect.kqueue.filenorh(jjXAhttp://docs.python.org/3/library/select.html#select.kqueue.filenoX-triXhmac.HMAC.hexdigestrj(jjX>http://docs.python.org/3/library/hmac.html#hmac.HMAC.hexdigestX-trkXaifc.aifc.setparamsrl(jjX>http://docs.python.org/3/library/aifc.html#aifc.aifc.setparamsX-trmX1urllib.request.HTTPRedirectHandler.http_error_301rn(jjXfhttp://docs.python.org/3/library/urllib.request.html#urllib.request.HTTPRedirectHandler.http_error_301X-troXsqlite3.Cursor.fetchonerp(jjXEhttp://docs.python.org/3/library/sqlite3.html#sqlite3.Cursor.fetchoneX-trqXtkinter.ttk.Notebook.selectrr(jjXMhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Notebook.selectX-trsX4xml.sax.handler.ContentHandler.processingInstructionrt(jjXjhttp://docs.python.org/3/library/xml.sax.handler.html#xml.sax.handler.ContentHandler.processingInstructionX-truXdecimal.Decimal.next_plusrv(jjXGhttp://docs.python.org/3/library/decimal.html#decimal.Decimal.next_plusX-trwXobject.__rsub__rx(jjXAhttp://docs.python.org/3/reference/datamodel.html#object.__rsub__X-tryXstring.Template.safe_substituterz(jjXLhttp://docs.python.org/3/library/string.html#string.Template.safe_substituteX-tr{X+ossaudiodev.oss_mixer_device.stereocontrolsr|(jjX]http://docs.python.org/3/library/ossaudiodev.html#ossaudiodev.oss_mixer_device.stereocontrolsX-tr}Xobject.__imul__r~(jjXAhttp://docs.python.org/3/reference/datamodel.html#object.__imul__X-trXimaplib.IMAP4.sortr(jjX@http://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.sortX-trX-xml.sax.handler.ContentHandler.startElementNSr(jjXchttp://docs.python.org/3/library/xml.sax.handler.html#xml.sax.handler.ContentHandler.startElementNSX-trXdecimal.Context.is_normalr(jjXGhttp://docs.python.org/3/library/decimal.html#decimal.Context.is_normalX-trX"asyncio.BaseProtocol.pause_writingr(jjXYhttp://docs.python.org/3/library/asyncio-protocol.html#asyncio.BaseProtocol.pause_writingX-trXcurses.window.clearokr(jjXBhttp://docs.python.org/3/library/curses.html#curses.window.clearokX-trX!msilib.SummaryInformation.Persistr(jjXNhttp://docs.python.org/3/library/msilib.html#msilib.SummaryInformation.PersistX-trX*ossaudiodev.oss_audio_device.setparametersr(jjX\http://docs.python.org/3/library/ossaudiodev.html#ossaudiodev.oss_audio_device.setparametersX-trXpathlib.Path.groupr(jjX@http://docs.python.org/3/library/pathlib.html#pathlib.Path.groupX-trX$tkinter.tix.tixCommand.tix_getbitmapr(jjXVhttp://docs.python.org/3/library/tkinter.tix.html#tkinter.tix.tixCommand.tix_getbitmapX-trXcurses.window.noutrefreshr(jjXFhttp://docs.python.org/3/library/curses.html#curses.window.noutrefreshX-trXxml.dom.Element.getAttributer(jjXJhttp://docs.python.org/3/library/xml.dom.html#xml.dom.Element.getAttributeX-trXdatetime.timezone.dstr(jjXDhttp://docs.python.org/3/library/datetime.html#datetime.timezone.dstX-trXasynchat.fifo.firstr(jjXBhttp://docs.python.org/3/library/asynchat.html#asynchat.fifo.firstX-trXcontextmanager.__exit__r(jjXFhttp://docs.python.org/3/library/stdtypes.html#contextmanager.__exit__X-trXshlex.shlex.read_tokenr(jjXBhttp://docs.python.org/3/library/shlex.html#shlex.shlex.read_tokenX-trXqueue.Queue.task_doner(jjXAhttp://docs.python.org/3/library/queue.html#queue.Queue.task_doneX-trXmsilib.Control.mappingr(jjXChttp://docs.python.org/3/library/msilib.html#msilib.Control.mappingX-trXnumbers.Complex.conjugater(jjXGhttp://docs.python.org/3/library/numbers.html#numbers.Complex.conjugateX-trX$asynchat.async_chat.found_terminatorr(jjXShttp://docs.python.org/3/library/asynchat.html#asynchat.async_chat.found_terminatorX-trXcurses.window.redrawlnr(jjXChttp://docs.python.org/3/library/curses.html#curses.window.redrawlnX-trX"ossaudiodev.oss_audio_device.speedr(jjXThttp://docs.python.org/3/library/ossaudiodev.html#ossaudiodev.oss_audio_device.speedX-trXstruct.Struct.pack_intor(jjXDhttp://docs.python.org/3/library/struct.html#struct.Struct.pack_intoX-trX#html.parser.HTMLParser.unknown_declr(jjXUhttp://docs.python.org/3/library/html.parser.html#html.parser.HTMLParser.unknown_declX-trXsymtable.Symbol.is_parameterr(jjXKhttp://docs.python.org/3/library/symtable.html#symtable.Symbol.is_parameterX-trX$calendar.Calendar.monthdays2calendarr(jjXShttp://docs.python.org/3/library/calendar.html#calendar.Calendar.monthdays2calendarX-trXpathlib.PurePath.as_posixr(jjXGhttp://docs.python.org/3/library/pathlib.html#pathlib.PurePath.as_posixX-trX unittest.TestCase.assertNotRegexr(jjXOhttp://docs.python.org/3/library/unittest.html#unittest.TestCase.assertNotRegexX-trX&multiprocessing.pool.AsyncResult.readyr(jjX\http://docs.python.org/3/library/multiprocessing.html#multiprocessing.pool.AsyncResult.readyX-trXcmd.Cmd.cmdloopr(jjX9http://docs.python.org/3/library/cmd.html#cmd.Cmd.cmdloopX-trXsunau.AU_read.getmarkr(jjXAhttp://docs.python.org/3/library/sunau.html#sunau.AU_read.getmarkX-trXwave.Wave_read.getmarkr(jjXAhttp://docs.python.org/3/library/wave.html#wave.Wave_read.getmarkX-trXcurses.window.delchr(jjX@http://docs.python.org/3/library/curses.html#curses.window.delchX-trX,xml.sax.handler.ContentHandler.startDocumentr(jjXbhttp://docs.python.org/3/library/xml.sax.handler.html#xml.sax.handler.ContentHandler.startDocumentX-trXzipfile.PyZipFile.writepyr(jjXGhttp://docs.python.org/3/library/zipfile.html#zipfile.PyZipFile.writepyX-trX#logging.handlers.QueueListener.stopr(jjXZhttp://docs.python.org/3/library/logging.handlers.html#logging.handlers.QueueListener.stopX-trXmailbox.Maildir.updater(jjXDhttp://docs.python.org/3/library/mailbox.html#mailbox.Maildir.updateX-trX'wsgiref.handlers.BaseHandler.get_schemer(jjXUhttp://docs.python.org/3/library/wsgiref.html#wsgiref.handlers.BaseHandler.get_schemeX-trX*multiprocessing.managers.BaseManager.startr(jjX`http://docs.python.org/3/library/multiprocessing.html#multiprocessing.managers.BaseManager.startX-trX&ipaddress.IPv4Network.compare_networksr(jjXVhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Network.compare_networksX-trXmailbox.Maildir.add_folderr(jjXHhttp://docs.python.org/3/library/mailbox.html#mailbox.Maildir.add_folderX-trX%urllib.request.URLopener.open_unknownr(jjXZhttp://docs.python.org/3/library/urllib.request.html#urllib.request.URLopener.open_unknownX-trXxdrlib.Unpacker.set_positionr(jjXIhttp://docs.python.org/3/library/xdrlib.html#xdrlib.Unpacker.set_positionX-trX*distutils.ccompiler.CCompiler.has_functionr(jjXYhttp://docs.python.org/3/distutils/apiref.html#distutils.ccompiler.CCompiler.has_functionX-trXstring.Formatter.get_valuer(jjXGhttp://docs.python.org/3/library/string.html#string.Formatter.get_valueX-trX#configparser.ConfigParser.read_filer(jjXVhttp://docs.python.org/3/library/configparser.html#configparser.ConfigParser.read_fileX-trXimaplib.IMAP4.deleter(jjXBhttp://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.deleteX-trXcurses.window.idlokr(jjX@http://docs.python.org/3/library/curses.html#curses.window.idlokX-trXdatetime.datetime.strftimer(jjXIhttp://docs.python.org/3/library/datetime.html#datetime.datetime.strftimeX-trXasyncio.Task.get_stackr(jjXIhttp://docs.python.org/3/library/asyncio-task.html#asyncio.Task.get_stackX-trX"configparser.ConfigParser.getfloatr(jjXUhttp://docs.python.org/3/library/configparser.html#configparser.ConfigParser.getfloatX-trX!ossaudiodev.oss_audio_device.readr(jjXShttp://docs.python.org/3/library/ossaudiodev.html#ossaudiodev.oss_audio_device.readX-trXbdb.Bdb.break_herer(jjX<http://docs.python.org/3/library/bdb.html#bdb.Bdb.break_hereX-trXdecimal.Decimal.next_minusr(jjXHhttp://docs.python.org/3/library/decimal.html#decimal.Decimal.next_minusX-trXtkinter.ttk.Notebook.identifyr(jjXOhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Notebook.identifyX-trXlogging.Logger.errorr(jjXBhttp://docs.python.org/3/library/logging.html#logging.Logger.errorX-trXssl.SSLSocket.do_handshaker(jjXDhttp://docs.python.org/3/library/ssl.html#ssl.SSLSocket.do_handshakeX-trXimaplib.IMAP4.storer(jjXAhttp://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.storeX-trXformatter.writer.new_alignmentr(jjXNhttp://docs.python.org/3/library/formatter.html#formatter.writer.new_alignmentX-trX"doctest.OutputChecker.check_outputr(jjXPhttp://docs.python.org/3/library/doctest.html#doctest.OutputChecker.check_outputX-trXsymtable.Symbol.is_globalr(jjXHhttp://docs.python.org/3/library/symtable.html#symtable.Symbol.is_globalX-trX!email.message.Message.get_payloadr(jjXUhttp://docs.python.org/3/library/email.message.html#email.message.Message.get_payloadX-trXsmtplib.SMTP.loginr(jjX@http://docs.python.org/3/library/smtplib.html#smtplib.SMTP.loginX-trXunittest.TestSuite.__iter__r(jjXJhttp://docs.python.org/3/library/unittest.html#unittest.TestSuite.__iter__X-trX1urllib.request.HTTPRedirectHandler.http_error_303r(jjXfhttp://docs.python.org/3/library/urllib.request.html#urllib.request.HTTPRedirectHandler.http_error_303X-trXimaplib.IMAP4.renamer(jjXBhttp://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.renameX-trX)email.message.Message.get_content_charsetr(jjX]http://docs.python.org/3/library/email.message.html#email.message.Message.get_content_charsetX-trX#urllib.request.OpenerDirector.errorr(jjXXhttp://docs.python.org/3/library/urllib.request.html#urllib.request.OpenerDirector.errorX-trX*asyncio.BaseEventLoop.set_default_executorr(jjXbhttp://docs.python.org/3/library/asyncio-eventloop.html#asyncio.BaseEventLoop.set_default_executorX-trXarray.array.fromfiler(jjX@http://docs.python.org/3/library/array.html#array.array.fromfileX-tr Xdecimal.Decimal.is_finiter (jjXGhttp://docs.python.org/3/library/decimal.html#decimal.Decimal.is_finiteX-tr Xxdrlib.Unpacker.unpack_listr (jjXHhttp://docs.python.org/3/library/xdrlib.html#xdrlib.Unpacker.unpack_listX-tr X+multiprocessing.pool.AsyncResult.successfulr(jjXahttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.pool.AsyncResult.successfulX-trXasyncore.dispatcher.recvr(jjXGhttp://docs.python.org/3/library/asyncore.html#asyncore.dispatcher.recvX-trX$logging.handlers.SocketHandler.closer(jjX[http://docs.python.org/3/library/logging.handlers.html#logging.handlers.SocketHandler.closeX-trXasyncio.BaseEventLoop.get_debugr(jjXWhttp://docs.python.org/3/library/asyncio-eventloop.html#asyncio.BaseEventLoop.get_debugX-trX"formatter.formatter.push_alignmentr(jjXRhttp://docs.python.org/3/library/formatter.html#formatter.formatter.push_alignmentX-trXpathlib.Path.mkdirr(jjX@http://docs.python.org/3/library/pathlib.html#pathlib.Path.mkdirX-trX unittest.TestCase.countTestCasesr(jjXOhttp://docs.python.org/3/library/unittest.html#unittest.TestCase.countTestCasesX-trXhttp.client.HTTPResponse.readr(jjXOhttp://docs.python.org/3/library/http.client.html#http.client.HTTPResponse.readX-trXtrace.Trace.runr(jjX;http://docs.python.org/3/library/trace.html#trace.Trace.runX-trXmultiprocessing.SimpleQueue.putr (jjXUhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.SimpleQueue.putX-tr!Xmultiprocessing.Process.joinr"(jjXRhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.Process.joinX-tr#X bdb.Bdb.runr$(jjX5http://docs.python.org/3/library/bdb.html#bdb.Bdb.runX-tr%Xcurses.window.refreshr&(jjXBhttp://docs.python.org/3/library/curses.html#curses.window.refreshX-tr'Xdecimal.Context.shiftr((jjXChttp://docs.python.org/3/library/decimal.html#decimal.Context.shiftX-tr)X$distutils.ccompiler.CCompiler.mkpathr*(jjXShttp://docs.python.org/3/distutils/apiref.html#distutils.ccompiler.CCompiler.mkpathX-tr+X"email.message.Message.get_unixfromr,(jjXVhttp://docs.python.org/3/library/email.message.html#email.message.Message.get_unixfromX-tr-Xxml.dom.Document.createCommentr.(jjXLhttp://docs.python.org/3/library/xml.dom.html#xml.dom.Document.createCommentX-tr/Xsymtable.Symbol.is_freer0(jjXFhttp://docs.python.org/3/library/symtable.html#symtable.Symbol.is_freeX-tr1Xctypes._CData.in_dllr2(jjXAhttp://docs.python.org/3/library/ctypes.html#ctypes._CData.in_dllX-tr3Xio.TextIOBase.seekr4(jjX;http://docs.python.org/3/library/io.html#io.TextIOBase.seekX-tr5Xxml.dom.Element.getAttributeNSr6(jjXLhttp://docs.python.org/3/library/xml.dom.html#xml.dom.Element.getAttributeNSX-tr7Xaifc.aifc.setframerater8(jjXAhttp://docs.python.org/3/library/aifc.html#aifc.aifc.setframerateX-tr9Xmsilib.Record.SetStreamr:(jjXDhttp://docs.python.org/3/library/msilib.html#msilib.Record.SetStreamX-tr;X!http.client.HTTPResponse.readintor<(jjXShttp://docs.python.org/3/library/http.client.html#http.client.HTTPResponse.readintoX-tr=Xctypes._CData.from_bufferr>(jjXFhttp://docs.python.org/3/library/ctypes.html#ctypes._CData.from_bufferX-tr?Xcodecs.StreamWriter.resetr@(jjXFhttp://docs.python.org/3/library/codecs.html#codecs.StreamWriter.resetX-trAX'urllib.robotparser.RobotFileParser.readrB(jjX`http://docs.python.org/3/library/urllib.robotparser.html#urllib.robotparser.RobotFileParser.readX-trCXlogging.Handler.handlerD(jjXDhttp://docs.python.org/3/library/logging.html#logging.Handler.handleX-trEXasyncio.Condition.releaserF(jjXLhttp://docs.python.org/3/library/asyncio-sync.html#asyncio.Condition.releaseX-trGXftplib.FTP.set_pasvrH(jjX@http://docs.python.org/3/library/ftplib.html#ftplib.FTP.set_pasvX-trIXmemoryview.tobytesrJ(jjXAhttp://docs.python.org/3/library/stdtypes.html#memoryview.tobytesX-trKXbdb.Bdb.get_breaksrL(jjX<http://docs.python.org/3/library/bdb.html#bdb.Bdb.get_breaksX-trMX!xml.sax.SAXException.getExceptionrN(jjXOhttp://docs.python.org/3/library/xml.sax.html#xml.sax.SAXException.getExceptionX-trOX gettext.NullTranslations.installrP(jjXNhttp://docs.python.org/3/library/gettext.html#gettext.NullTranslations.installX-trQX str.striprR(jjX8http://docs.python.org/3/library/stdtypes.html#str.stripX-trSXcurses.window.clrtoeolrT(jjXChttp://docs.python.org/3/library/curses.html#curses.window.clrtoeolX-trUXcalendar.Calendar.iterweekdaysrV(jjXMhttp://docs.python.org/3/library/calendar.html#calendar.Calendar.iterweekdaysX-trWXdatetime.date.weekdayrX(jjXDhttp://docs.python.org/3/library/datetime.html#datetime.date.weekdayX-trYX$email.generator.BytesGenerator.clonerZ(jjXZhttp://docs.python.org/3/library/email.generator.html#email.generator.BytesGenerator.cloneX-tr[Xipaddress.IPv4Network.supernetr\(jjXNhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Network.supernetX-tr]Xtarfile.TarInfo.issymr^(jjXChttp://docs.python.org/3/library/tarfile.html#tarfile.TarInfo.issymX-tr_Xobject.__neg__r`(jjX@http://docs.python.org/3/reference/datamodel.html#object.__neg__X-traXselect.epoll.filenorb(jjX@http://docs.python.org/3/library/select.html#select.epoll.filenoX-trcXobject.__ror__rd(jjX@http://docs.python.org/3/reference/datamodel.html#object.__ror__X-treXwave.Wave_read.getparamsrf(jjXChttp://docs.python.org/3/library/wave.html#wave.Wave_read.getparamsX-trgXdecimal.Decimal.max_magrh(jjXEhttp://docs.python.org/3/library/decimal.html#decimal.Decimal.max_magX-triX!importlib.abc.FileLoader.get_datarj(jjXQhttp://docs.python.org/3/library/importlib.html#importlib.abc.FileLoader.get_dataX-trkXunittest.TestCase.setUprl(jjXFhttp://docs.python.org/3/library/unittest.html#unittest.TestCase.setUpX-trmXcurses.window.timeoutrn(jjXBhttp://docs.python.org/3/library/curses.html#curses.window.timeoutX-troX)http.client.HTTPConnection.set_debuglevelrp(jjX[http://docs.python.org/3/library/http.client.html#http.client.HTTPConnection.set_debuglevelX-trqX+xml.sax.handler.ContentHandler.startElementrr(jjXahttp://docs.python.org/3/library/xml.sax.handler.html#xml.sax.handler.ContentHandler.startElementX-trsXsunau.AU_read.getsampwidthrt(jjXFhttp://docs.python.org/3/library/sunau.html#sunau.AU_read.getsampwidthX-truXsqlite3.Connection.commitrv(jjXGhttp://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.commitX-trwX"xml.dom.Element.setAttributeNodeNSrx(jjXPhttp://docs.python.org/3/library/xml.dom.html#xml.dom.Element.setAttributeNodeNSX-tryX asyncio.BaseEventLoop.call_laterrz(jjXXhttp://docs.python.org/3/library/asyncio-eventloop.html#asyncio.BaseEventLoop.call_laterX-tr{Xasyncio.Future.resultr|(jjXHhttp://docs.python.org/3/library/asyncio-task.html#asyncio.Future.resultX-tr}Xpoplib.POP3.apopr~(jjX=http://docs.python.org/3/library/poplib.html#poplib.POP3.apopX-trXarray.array.fromlistr(jjX@http://docs.python.org/3/library/array.html#array.array.fromlistX-trX2importlib.machinery.ExtensionFileLoader.is_packager(jjXbhttp://docs.python.org/3/library/importlib.html#importlib.machinery.ExtensionFileLoader.is_packageX-trXtimeit.Timer.repeatr(jjX@http://docs.python.org/3/library/timeit.html#timeit.Timer.repeatX-trXaifc.aifc.setsampwidthr(jjXAhttp://docs.python.org/3/library/aifc.html#aifc.aifc.setsampwidthX-trXmailbox.BabylMessage.add_labelr(jjXLhttp://docs.python.org/3/library/mailbox.html#mailbox.BabylMessage.add_labelX-trXobject.__bytes__r(jjXBhttp://docs.python.org/3/reference/datamodel.html#object.__bytes__X-trXset.difference_updater(jjXDhttp://docs.python.org/3/library/stdtypes.html#set.difference_updateX-trXasyncio.BaseTransport.closer(jjXRhttp://docs.python.org/3/library/asyncio-protocol.html#asyncio.BaseTransport.closeX-trXmailbox.Mailbox.remover(jjXDhttp://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.removeX-trX"codecs.IncrementalDecoder.setstater(jjXOhttp://docs.python.org/3/library/codecs.html#codecs.IncrementalDecoder.setstateX-trX$test.support.EnvironmentVarGuard.setr(jjXOhttp://docs.python.org/3/library/test.html#test.support.EnvironmentVarGuard.setX-trX0distutils.ccompiler.CCompiler.library_dir_optionr(jjX_http://docs.python.org/3/distutils/apiref.html#distutils.ccompiler.CCompiler.library_dir_optionX-trX4importlib.machinery.ExtensionFileLoader.get_filenamer(jjXdhttp://docs.python.org/3/library/importlib.html#importlib.machinery.ExtensionFileLoader.get_filenameX-trXbdb.Bdb.user_liner(jjX;http://docs.python.org/3/library/bdb.html#bdb.Bdb.user_lineX-trX)importlib.abc.PathEntryFinder.find_moduler(jjXYhttp://docs.python.org/3/library/importlib.html#importlib.abc.PathEntryFinder.find_moduleX-trX asyncio.StreamReader.readexactlyr(jjXUhttp://docs.python.org/3/library/asyncio-stream.html#asyncio.StreamReader.readexactlyX-trXsocket.socket.recvr(jjX?http://docs.python.org/3/library/socket.html#socket.socket.recvX-trX$asyncio.BaseSubprocessTransport.killr(jjX[http://docs.python.org/3/library/asyncio-protocol.html#asyncio.BaseSubprocessTransport.killX-trXcurses.window.leaveokr(jjXBhttp://docs.python.org/3/library/curses.html#curses.window.leaveokX-trXpathlib.Path.is_symlinkr(jjXEhttp://docs.python.org/3/library/pathlib.html#pathlib.Path.is_symlinkX-trXio.TextIOBase.detachr(jjX=http://docs.python.org/3/library/io.html#io.TextIOBase.detachX-trXmsilib.Dialog.textr(jjX?http://docs.python.org/3/library/msilib.html#msilib.Dialog.textX-trXnetrc.netrc.authenticatorsr(jjXFhttp://docs.python.org/3/library/netrc.html#netrc.netrc.authenticatorsX-trXpathlib.PurePath.joinpathr(jjXGhttp://docs.python.org/3/library/pathlib.html#pathlib.PurePath.joinpathX-trXcurses.window.boxr(jjX>http://docs.python.org/3/library/curses.html#curses.window.boxX-trX&xml.etree.ElementTree.Element.itertextr(jjXbhttp://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element.itertextX-trXcmd.Cmd.postloopr(jjX:http://docs.python.org/3/library/cmd.html#cmd.Cmd.postloopX-trXasyncio.Queue.get_nowaitr(jjXKhttp://docs.python.org/3/library/asyncio-sync.html#asyncio.Queue.get_nowaitX-trXcodecs.Codec.encoder(jjX@http://docs.python.org/3/library/codecs.html#codecs.Codec.encodeX-trXstr.isprintabler(jjX>http://docs.python.org/3/library/stdtypes.html#str.isprintableX-trXselect.poll.modifyr(jjX?http://docs.python.org/3/library/select.html#select.poll.modifyX-trXselect.devpoll.filenor(jjXBhttp://docs.python.org/3/library/select.html#select.devpoll.filenoX-trXdatetime.datetime.toordinalr(jjXJhttp://docs.python.org/3/library/datetime.html#datetime.datetime.toordinalX-trX*importlib.abc.InspectLoader.source_to_coder(jjXZhttp://docs.python.org/3/library/importlib.html#importlib.abc.InspectLoader.source_to_codeX-trX4logging.handlers.TimedRotatingFileHandler.doRolloverr(jjXkhttp://docs.python.org/3/library/logging.handlers.html#logging.handlers.TimedRotatingFileHandler.doRolloverX-trX zipimport.zipimporter.is_packager(jjXPhttp://docs.python.org/3/library/zipimport.html#zipimport.zipimporter.is_packageX-trX$unittest.TestLoader.getTestCaseNamesr(jjXShttp://docs.python.org/3/library/unittest.html#unittest.TestLoader.getTestCaseNamesX-trXstr.splitlinesr(jjX=http://docs.python.org/3/library/stdtypes.html#str.splitlinesX-trXprofile.Profile.create_statsr(jjXJhttp://docs.python.org/3/library/profile.html#profile.Profile.create_statsX-trX)importlib.abc.PathEntryFinder.find_loaderr(jjXYhttp://docs.python.org/3/library/importlib.html#importlib.abc.PathEntryFinder.find_loaderX-trX)xml.sax.xmlreader.XMLReader.getDTDHandlerr(jjX^http://docs.python.org/3/library/xml.sax.reader.html#xml.sax.xmlreader.XMLReader.getDTDHandlerX-trXlogging.Handler.__init__r(jjXFhttp://docs.python.org/3/library/logging.html#logging.Handler.__init__X-trXcodecs.IncrementalEncoder.resetr(jjXLhttp://docs.python.org/3/library/codecs.html#codecs.IncrementalEncoder.resetX-trXftplib.FTP.getwelcomer(jjXBhttp://docs.python.org/3/library/ftplib.html#ftplib.FTP.getwelcomeX-trXasyncore.dispatcher.writabler(jjXKhttp://docs.python.org/3/library/asyncore.html#asyncore.dispatcher.writableX-trXobject.__getstate__r(jjX@http://docs.python.org/3/library/pickle.html#object.__getstate__X-trXobject.__reduce_ex__r(jjXAhttp://docs.python.org/3/library/pickle.html#object.__reduce_ex__X-trXemail.policy.EmailPolicy.foldr(jjXPhttp://docs.python.org/3/library/email.policy.html#email.policy.EmailPolicy.foldX-trX!http.cookies.Morsel.isReservedKeyr(jjXThttp://docs.python.org/3/library/http.cookies.html#http.cookies.Morsel.isReservedKeyX-trX5http.server.BaseHTTPRequestHandler.handle_one_requestr(jjXghttp://docs.python.org/3/library/http.server.html#http.server.BaseHTTPRequestHandler.handle_one_requestX-trXmailbox.Mailbox.popr(jjXAhttp://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.popX-trXtkinter.ttk.Treeview.insertr(jjXMhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.insertX-trXqueue.Queue.putr(jjX;http://docs.python.org/3/library/queue.html#queue.Queue.putX-trXre.regex.fullmatchr(jjX;http://docs.python.org/3/library/re.html#re.regex.fullmatchX-trX"xml.dom.Element.getAttributeNodeNSr(jjXPhttp://docs.python.org/3/library/xml.dom.html#xml.dom.Element.getAttributeNodeNSX-trXarray.array.insertr(jjX>http://docs.python.org/3/library/array.html#array.array.insertX-trX&distutils.ccompiler.CCompiler.announcer(jjXUhttp://docs.python.org/3/distutils/apiref.html#distutils.ccompiler.CCompiler.announceX-trX1http.cookiejar.DefaultCookiePolicy.is_not_allowedr(jjXfhttp://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.DefaultCookiePolicy.is_not_allowedX-trXwave.Wave_write.setsampwidthr(jjXGhttp://docs.python.org/3/library/wave.html#wave.Wave_write.setsampwidthX-trX"tkinter.ttk.Treeview.tag_configurer(jjXThttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.tag_configureX-trXdecimal.Context.same_quantumr(jjXJhttp://docs.python.org/3/library/decimal.html#decimal.Context.same_quantumX-trX%importlib.abc.FileLoader.get_filenamer(jjXUhttp://docs.python.org/3/library/importlib.html#importlib.abc.FileLoader.get_filenameX-trXxdrlib.Unpacker.unpack_fopaquer(jjXKhttp://docs.python.org/3/library/xdrlib.html#xdrlib.Unpacker.unpack_fopaqueX-trXpstats.Stats.addr(jjX>http://docs.python.org/3/library/profile.html#pstats.Stats.addX-trXcurses.panel.Panel.abover (jjXKhttp://docs.python.org/3/library/curses.panel.html#curses.panel.Panel.aboveX-tr X)decimal.Context.create_decimal_from_floatr (jjXWhttp://docs.python.org/3/library/decimal.html#decimal.Context.create_decimal_from_floatX-tr Xstruct.Struct.unpackr (jjXAhttp://docs.python.org/3/library/struct.html#struct.Struct.unpackX-tr Xdecimal.Context.copy_signr (jjXGhttp://docs.python.org/3/library/decimal.html#decimal.Context.copy_signX-tr X!http.cookiejar.FileCookieJar.saver (jjXVhttp://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.FileCookieJar.saveX-tr Xnntplib.NNTP.newgroupsr (jjXDhttp://docs.python.org/3/library/nntplib.html#nntplib.NNTP.newgroupsX-tr Xnntplib.NNTP.xoverr (jjX@http://docs.python.org/3/library/nntplib.html#nntplib.NNTP.xoverX-tr X.asyncio.AbstractEventLoopPolicy.new_event_loopr (jjXfhttp://docs.python.org/3/library/asyncio-eventloop.html#asyncio.AbstractEventLoopPolicy.new_event_loopX-tr Xftplib.FTP.mlsdr (jjX<http://docs.python.org/3/library/ftplib.html#ftplib.FTP.mlsdX-tr Xre.match.groupr (jjX7http://docs.python.org/3/library/re.html#re.match.groupX-tr X%configparser.ConfigParser.has_sectionr (jjXXhttp://docs.python.org/3/library/configparser.html#configparser.ConfigParser.has_sectionX-tr Xobject.__mul__r (jjX@http://docs.python.org/3/reference/datamodel.html#object.__mul__X-tr Xobject.__del__r (jjX@http://docs.python.org/3/reference/datamodel.html#object.__del__X-tr X2http.cookiejar.DefaultCookiePolicy.blocked_domainsr (jjXghttp://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.DefaultCookiePolicy.blocked_domainsX-tr Xmsilib.Record.GetIntegerr (jjXEhttp://docs.python.org/3/library/msilib.html#msilib.Record.GetIntegerX-tr Xsubprocess.Popen.killr (jjXFhttp://docs.python.org/3/library/subprocess.html#subprocess.Popen.killX-tr X/importlib.abc.PathEntryFinder.invalidate_cachesr (jjX_http://docs.python.org/3/library/importlib.html#importlib.abc.PathEntryFinder.invalidate_cachesX-tr! Xaifc.aifc.writeframesr" (jjX@http://docs.python.org/3/library/aifc.html#aifc.aifc.writeframesX-tr# X"formatter.writer.send_flowing_datar$ (jjXRhttp://docs.python.org/3/library/formatter.html#formatter.writer.send_flowing_dataX-tr% X4xml.parsers.expat.xmlparser.StartCdataSectionHandlerr& (jjXbhttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.xmlparser.StartCdataSectionHandlerX-tr' Xchunk.Chunk.seekr( (jjX<http://docs.python.org/3/library/chunk.html#chunk.Chunk.seekX-tr) Xmailbox.Maildir.get_folderr* (jjXHhttp://docs.python.org/3/library/mailbox.html#mailbox.Maildir.get_folderX-tr+ Xpathlib.PurePath.matchr, (jjXDhttp://docs.python.org/3/library/pathlib.html#pathlib.PurePath.matchX-tr- Xmultiprocessing.Queue.putr. (jjXOhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.Queue.putX-tr/ Xreprlib.Repr.repr1r0 (jjX@http://docs.python.org/3/library/reprlib.html#reprlib.Repr.repr1X-tr1 Xpipes.Template.debugr2 (jjX@http://docs.python.org/3/library/pipes.html#pipes.Template.debugX-tr3 Xfractions.Fraction.__ceil__r4 (jjXKhttp://docs.python.org/3/library/fractions.html#fractions.Fraction.__ceil__X-tr5 X+logging.handlers.DatagramHandler.makeSocketr6 (jjXbhttp://docs.python.org/3/library/logging.handlers.html#logging.handlers.DatagramHandler.makeSocketX-tr7 X'logging.handlers.NTEventLogHandler.emitr8 (jjX^http://docs.python.org/3/library/logging.handlers.html#logging.handlers.NTEventLogHandler.emitX-tr9 Xhttp.cookies.Morsel.setr: (jjXJhttp://docs.python.org/3/library/http.cookies.html#http.cookies.Morsel.setX-tr; Xdecimal.Context.powerr< (jjXChttp://docs.python.org/3/library/decimal.html#decimal.Context.powerX-tr= Xtkinter.ttk.Treeview.selectionr> (jjXPhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.selectionX-tr? Xsqlite3.Row.keysr@ (jjX>http://docs.python.org/3/library/sqlite3.html#sqlite3.Row.keysX-trA Xobject.__rshift__rB (jjXChttp://docs.python.org/3/reference/datamodel.html#object.__rshift__X-trC Xnntplib.NNTP.quitrD (jjX?http://docs.python.org/3/library/nntplib.html#nntplib.NNTP.quitX-trE Xcontextlib.ExitStack.callbackrF (jjXNhttp://docs.python.org/3/library/contextlib.html#contextlib.ExitStack.callbackX-trG X0telnetlib.Telnet.set_option_negotiation_callbackrH (jjX`http://docs.python.org/3/library/telnetlib.html#telnetlib.Telnet.set_option_negotiation_callbackX-trI Xasyncore.dispatcher.readablerJ (jjXKhttp://docs.python.org/3/library/asyncore.html#asyncore.dispatcher.readableX-trK X%xml.sax.xmlreader.Locator.getPublicIdrL (jjXZhttp://docs.python.org/3/library/xml.sax.reader.html#xml.sax.xmlreader.Locator.getPublicIdX-trM Xftplib.FTP.nlstrN (jjX<http://docs.python.org/3/library/ftplib.html#ftplib.FTP.nlstX-trO X"socketserver.RequestHandler.handlerP (jjXUhttp://docs.python.org/3/library/socketserver.html#socketserver.RequestHandler.handleX-trQ Xnntplib.NNTP.xhdrrR (jjX?http://docs.python.org/3/library/nntplib.html#nntplib.NNTP.xhdrX-trS X%ipaddress.IPv6Network.address_excluderT (jjXUhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Network.address_excludeX-trU Xmultiprocessing.Queue.emptyrV (jjXQhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.Queue.emptyX-trW Ximaplib.IMAP4.readrX (jjX@http://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.readX-trY Xcodecs.StreamWriter.writerZ (jjXFhttp://docs.python.org/3/library/codecs.html#codecs.StreamWriter.writeX-tr[ Xre.match.groupsr\ (jjX8http://docs.python.org/3/library/re.html#re.match.groupsX-tr] Xsmtplib.SMTP.quitr^ (jjX?http://docs.python.org/3/library/smtplib.html#smtplib.SMTP.quitX-tr_ Xobject.__contains__r` (jjXEhttp://docs.python.org/3/reference/datamodel.html#object.__contains__X-tra Xlogging.Logger.warningrb (jjXDhttp://docs.python.org/3/library/logging.html#logging.Logger.warningX-trc Xbdb.Bdb.set_quitrd (jjX:http://docs.python.org/3/library/bdb.html#bdb.Bdb.set_quitX-tre Xmailbox.Mailbox.updaterf (jjXDhttp://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.updateX-trg Xzlib.Compress.copyrh (jjX=http://docs.python.org/3/library/zlib.html#zlib.Compress.copyX-tri Xdecimal.Context.is_qnanrj (jjXEhttp://docs.python.org/3/library/decimal.html#decimal.Context.is_qnanX-trk X)xml.etree.ElementTree.Element.makeelementrl (jjXehttp://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element.makeelementX-trm X#email.message.EmailMessage.get_bodyrn (jjX^http://docs.python.org/3/library/email.contentmanager.html#email.message.EmailMessage.get_bodyX-tro X urllib.request.Request.set_proxyrp (jjXUhttp://docs.python.org/3/library/urllib.request.html#urllib.request.Request.set_proxyX-trq X$html.parser.HTMLParser.handle_endtagrr (jjXVhttp://docs.python.org/3/library/html.parser.html#html.parser.HTMLParser.handle_endtagX-trs X optparse.OptionParser.get_optionrt (jjXOhttp://docs.python.org/3/library/optparse.html#optparse.OptionParser.get_optionX-tru X$doctest.DocTestRunner.report_successrv (jjXRhttp://docs.python.org/3/library/doctest.html#doctest.DocTestRunner.report_successX-trw Xdatetime.date.replacerx (jjXDhttp://docs.python.org/3/library/datetime.html#datetime.date.replaceX-try Xcurses.window.getchrz (jjX@http://docs.python.org/3/library/curses.html#curses.window.getchX-tr{ Xsocket.socket.recv_intor| (jjXDhttp://docs.python.org/3/library/socket.html#socket.socket.recv_intoX-tr} Xthreading.Thread.runr~ (jjXDhttp://docs.python.org/3/library/threading.html#threading.Thread.runX-tr Xsunau.AU_read.getcomptyper (jjXEhttp://docs.python.org/3/library/sunau.html#sunau.AU_read.getcomptypeX-tr Xasyncio.BaseEventLoop.sock_recvr (jjXWhttp://docs.python.org/3/library/asyncio-eventloop.html#asyncio.BaseEventLoop.sock_recvX-tr X$email.headerregistry.BaseHeader.foldr (jjX_http://docs.python.org/3/library/email.headerregistry.html#email.headerregistry.BaseHeader.foldX-tr X%logging.handlers.QueueHandler.enqueuer (jjX\http://docs.python.org/3/library/logging.handlers.html#logging.handlers.QueueHandler.enqueueX-tr Xcurses.window.immedokr (jjXBhttp://docs.python.org/3/library/curses.html#curses.window.immedokX-tr Xselect.kqueue.fromfdr (jjXAhttp://docs.python.org/3/library/select.html#select.kqueue.fromfdX-tr Xbdb.Breakpoint.deleteMer (jjXAhttp://docs.python.org/3/library/bdb.html#bdb.Breakpoint.deleteMeX-tr Xselect.devpoll.registerr (jjXDhttp://docs.python.org/3/library/select.html#select.devpoll.registerX-tr Xmultiprocessing.Connection.pollr (jjXUhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.Connection.pollX-tr X(xml.dom.DOMImplementation.createDocumentr (jjXVhttp://docs.python.org/3/library/xml.dom.html#xml.dom.DOMImplementation.createDocumentX-tr Xsymtable.SymbolTable.lookupr (jjXJhttp://docs.python.org/3/library/symtable.html#symtable.SymbolTable.lookupX-tr X*difflib.SequenceMatcher.find_longest_matchr (jjXXhttp://docs.python.org/3/library/difflib.html#difflib.SequenceMatcher.find_longest_matchX-tr Xselect.epoll.pollr (jjX>http://docs.python.org/3/library/select.html#select.epoll.pollX-tr Xqueue.Queue.joinr (jjX<http://docs.python.org/3/library/queue.html#queue.Queue.joinX-tr X object.__eq__r (jjX?http://docs.python.org/3/reference/datamodel.html#object.__eq__X-tr Xdecimal.Decimal.canonicalr (jjXGhttp://docs.python.org/3/library/decimal.html#decimal.Decimal.canonicalX-tr X&email.message.EmailMessage.add_relatedr (jjXahttp://docs.python.org/3/library/email.contentmanager.html#email.message.EmailMessage.add_relatedX-tr Xtelnetlib.Telnet.read_lazyr (jjXJhttp://docs.python.org/3/library/telnetlib.html#telnetlib.Telnet.read_lazyX-tr Xtkinter.ttk.Notebook.hider (jjXKhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Notebook.hideX-tr Xxml.dom.Node.isSameNoder (jjXEhttp://docs.python.org/3/library/xml.dom.html#xml.dom.Node.isSameNodeX-tr Xoptparse.OptionParser.set_usager (jjXNhttp://docs.python.org/3/library/optparse.html#optparse.OptionParser.set_usageX-tr Xdecimal.Context.sqrtr (jjXBhttp://docs.python.org/3/library/decimal.html#decimal.Context.sqrtX-tr Xsunau.AU_write.setnframesr (jjXEhttp://docs.python.org/3/library/sunau.html#sunau.AU_write.setnframesX-tr X"email.message.Message.set_boundaryr (jjXVhttp://docs.python.org/3/library/email.message.html#email.message.Message.set_boundaryX-tr Xunittest.TestResult.addSkipr (jjXJhttp://docs.python.org/3/library/unittest.html#unittest.TestResult.addSkipX-tr X+xml.sax.xmlreader.InputSource.getByteStreamr (jjX`http://docs.python.org/3/library/xml.sax.reader.html#xml.sax.xmlreader.InputSource.getByteStreamX-tr X2xmlrpc.server.SimpleXMLRPCServer.register_functionr (jjXfhttp://docs.python.org/3/library/xmlrpc.server.html#xmlrpc.server.SimpleXMLRPCServer.register_functionX-tr Xaifc.aifc.getcompnamer (jjX@http://docs.python.org/3/library/aifc.html#aifc.aifc.getcompnameX-tr X!email.message.Message.__setitem__r (jjXUhttp://docs.python.org/3/library/email.message.html#email.message.Message.__setitem__X-tr X'asyncio.BaseEventLoop.create_connectionr (jjX_http://docs.python.org/3/library/asyncio-eventloop.html#asyncio.BaseEventLoop.create_connectionX-tr Xhashlib.hash.copyr (jjX?http://docs.python.org/3/library/hashlib.html#hashlib.hash.copyX-tr Xasyncio.Future.cancelr (jjXHhttp://docs.python.org/3/library/asyncio-task.html#asyncio.Future.cancelX-tr Xvenv.EnvBuilder.setup_scriptsr (jjXHhttp://docs.python.org/3/library/venv.html#venv.EnvBuilder.setup_scriptsX-tr X set.unionr (jjX8http://docs.python.org/3/library/stdtypes.html#set.unionX-tr X codecs.IncrementalDecoder.decoder (jjXMhttp://docs.python.org/3/library/codecs.html#codecs.IncrementalDecoder.decodeX-tr Xfractions.Fraction.__round__r (jjXLhttp://docs.python.org/3/library/fractions.html#fractions.Fraction.__round__X-tr X!unittest.TestCase.assertIsNotNoner (jjXPhttp://docs.python.org/3/library/unittest.html#unittest.TestCase.assertIsNotNoneX-tr Ximaplib.IMAP4.sendr (jjX@http://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.sendX-tr Xemail.header.Header.appendr (jjXMhttp://docs.python.org/3/library/email.header.html#email.header.Header.appendX-tr Xasyncio.StreamReader.at_eofr (jjXPhttp://docs.python.org/3/library/asyncio-stream.html#asyncio.StreamReader.at_eofX-tr Xzlib.Decompress.decompressr (jjXEhttp://docs.python.org/3/library/zlib.html#zlib.Decompress.decompressX-tr Xdecimal.Context.canonicalr (jjXGhttp://docs.python.org/3/library/decimal.html#decimal.Context.canonicalX-tr X,http.server.BaseHTTPRequestHandler.log_errorr (jjX^http://docs.python.org/3/library/http.server.html#http.server.BaseHTTPRequestHandler.log_errorX-tr Xlogging.LoggerAdapter.processr (jjXKhttp://docs.python.org/3/library/logging.html#logging.LoggerAdapter.processX-tr X7xmlrpc.server.CGIXMLRPCRequestHandler.register_instancer (jjXkhttp://docs.python.org/3/library/xmlrpc.server.html#xmlrpc.server.CGIXMLRPCRequestHandler.register_instanceX-tr Xbdb.Bdb.get_stackr (jjX;http://docs.python.org/3/library/bdb.html#bdb.Bdb.get_stackX-tr X+difflib.SequenceMatcher.get_matching_blocksr (jjXYhttp://docs.python.org/3/library/difflib.html#difflib.SequenceMatcher.get_matching_blocksX-tr X&importlib.abc.InspectLoader.get_sourcer (jjXVhttp://docs.python.org/3/library/importlib.html#importlib.abc.InspectLoader.get_sourceX-tr Xweakref.finalize.__call__r (jjXGhttp://docs.python.org/3/library/weakref.html#weakref.finalize.__call__X-tr Xaifc.aifc.writeframesrawr (jjXChttp://docs.python.org/3/library/aifc.html#aifc.aifc.writeframesrawX-tr Xobject.__enter__r (jjXBhttp://docs.python.org/3/reference/datamodel.html#object.__enter__X-tr X'socketserver.BaseServer.process_requestr (jjXZhttp://docs.python.org/3/library/socketserver.html#socketserver.BaseServer.process_requestX-tr Xunittest.mock.Mock.__dir__r (jjXNhttp://docs.python.org/3/library/unittest.mock.html#unittest.mock.Mock.__dir__X-tr Xbz2.BZ2File.peekr (jjX:http://docs.python.org/3/library/bz2.html#bz2.BZ2File.peekX-tr X0xml.parsers.expat.xmlparser.NotStandaloneHandlerr (jjX^http://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.xmlparser.NotStandaloneHandlerX-tr X"venv.EnvBuilder.ensure_directoriesr (jjXMhttp://docs.python.org/3/library/venv.html#venv.EnvBuilder.ensure_directoriesX-tr X#unittest.TestCase.assertRaisesRegexr (jjXRhttp://docs.python.org/3/library/unittest.html#unittest.TestCase.assertRaisesRegexX-tr Xmailbox.mboxMessage.set_flagsr (jjXKhttp://docs.python.org/3/library/mailbox.html#mailbox.mboxMessage.set_flagsX-tr X str.lowerr (jjX8http://docs.python.org/3/library/stdtypes.html#str.lowerX-tr X dict.keysr (jjX8http://docs.python.org/3/library/stdtypes.html#dict.keysX-tr X&xml.etree.ElementTree.ElementTree.findr (jjXbhttp://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.ElementTree.findX-tr Xobject.__new__r (jjX@http://docs.python.org/3/reference/datamodel.html#object.__new__X-tr X"unittest.TestCase.assertIsInstancer (jjXQhttp://docs.python.org/3/library/unittest.html#unittest.TestCase.assertIsInstanceX-tr X%http.client.HTTPConnection.putrequestr (jjXWhttp://docs.python.org/3/library/http.client.html#http.client.HTTPConnection.putrequestX-tr X$xml.etree.ElementTree.Element.insertr!(jjX`http://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element.insertX-tr!X$modulefinder.ModuleFinder.run_scriptr!(jjXWhttp://docs.python.org/3/library/modulefinder.html#modulefinder.ModuleFinder.run_scriptX-tr!Xsymtable.SymbolTable.get_idr!(jjXJhttp://docs.python.org/3/library/symtable.html#symtable.SymbolTable.get_idX-tr!Xmsilib.RadioButtonGroup.addr!(jjXHhttp://docs.python.org/3/library/msilib.html#msilib.RadioButtonGroup.addX-tr!Xdecimal.Decimal.log10r!(jjXChttp://docs.python.org/3/library/decimal.html#decimal.Decimal.log10X-tr !X%importlib.abc.ResourceLoader.get_datar !(jjXUhttp://docs.python.org/3/library/importlib.html#importlib.abc.ResourceLoader.get_dataX-tr !X"email.message.Message.set_unixfromr !(jjXVhttp://docs.python.org/3/library/email.message.html#email.message.Message.set_unixfromX-tr !Ximaplib.IMAP4.unsubscriber!(jjXGhttp://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.unsubscribeX-tr!Xdecimal.Decimal.copy_signr!(jjXGhttp://docs.python.org/3/library/decimal.html#decimal.Decimal.copy_signX-tr!Xchunk.Chunk.skipr!(jjX<http://docs.python.org/3/library/chunk.html#chunk.Chunk.skipX-tr!Xtarfile.TarInfo.islnkr!(jjXChttp://docs.python.org/3/library/tarfile.html#tarfile.TarInfo.islnkX-tr!Xlogging.LogRecord.getMessager!(jjXJhttp://docs.python.org/3/library/logging.html#logging.LogRecord.getMessageX-tr!Xaifc.aifc.getnframesr!(jjX?http://docs.python.org/3/library/aifc.html#aifc.aifc.getnframesX-tr!X"codecs.IncrementalDecoder.getstater!(jjXOhttp://docs.python.org/3/library/codecs.html#codecs.IncrementalDecoder.getstateX-tr!Xtkinter.ttk.Style.theme_user!(jjXMhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Style.theme_useX-tr!Xxdrlib.Unpacker.get_bufferr!(jjXGhttp://docs.python.org/3/library/xdrlib.html#xdrlib.Unpacker.get_bufferX-tr!X str.islowerr !(jjX:http://docs.python.org/3/library/stdtypes.html#str.islowerX-tr!!Xpoplib.POP3.userr"!(jjX=http://docs.python.org/3/library/poplib.html#poplib.POP3.userX-tr#!Xftplib.FTP.transfercmdr$!(jjXChttp://docs.python.org/3/library/ftplib.html#ftplib.FTP.transfercmdX-tr%!X)email.message.Message.get_content_subtyper&!(jjX]http://docs.python.org/3/library/email.message.html#email.message.Message.get_content_subtypeX-tr'!Xobject.__ior__r(!(jjX@http://docs.python.org/3/reference/datamodel.html#object.__ior__X-tr)!Xthreading.Thread.isDaemonr*!(jjXIhttp://docs.python.org/3/library/threading.html#threading.Thread.isDaemonX-tr+!X#difflib.SequenceMatcher.get_opcodesr,!(jjXQhttp://docs.python.org/3/library/difflib.html#difflib.SequenceMatcher.get_opcodesX-tr-!Xdecimal.Decimal.logbr.!(jjXBhttp://docs.python.org/3/library/decimal.html#decimal.Decimal.logbX-tr/!X$importlib.abc.InspectLoader.get_coder0!(jjXThttp://docs.python.org/3/library/importlib.html#importlib.abc.InspectLoader.get_codeX-tr1!Xlogging.StreamHandler.flushr2!(jjXRhttp://docs.python.org/3/library/logging.handlers.html#logging.StreamHandler.flushX-tr3!X.http.server.BaseHTTPRequestHandler.log_requestr4!(jjX`http://docs.python.org/3/library/http.server.html#http.server.BaseHTTPRequestHandler.log_requestX-tr5!Xasyncore.dispatcher.connectr6!(jjXJhttp://docs.python.org/3/library/asyncore.html#asyncore.dispatcher.connectX-tr7!Xdatetime.timezone.tznamer8!(jjXGhttp://docs.python.org/3/library/datetime.html#datetime.timezone.tznameX-tr9!Xftplib.FTP_TLS.prot_pr:!(jjXBhttp://docs.python.org/3/library/ftplib.html#ftplib.FTP_TLS.prot_pX-tr;!X#calendar.Calendar.yeardays2calendarr!(jjX8http://docs.python.org/3/library/stdtypes.html#str.splitX-tr?!Xpathlib.Path.statr@!(jjX?http://docs.python.org/3/library/pathlib.html#pathlib.Path.statX-trA!Xxml.dom.Node.normalizerB!(jjXDhttp://docs.python.org/3/library/xml.dom.html#xml.dom.Node.normalizeX-trC!Xdbm.gnu.gdbm.nextkeyrD!(jjX>http://docs.python.org/3/library/dbm.html#dbm.gnu.gdbm.nextkeyX-trE!Xbdb.Bdb.user_returnrF!(jjX=http://docs.python.org/3/library/bdb.html#bdb.Bdb.user_returnX-trG!X!asyncio.WriteTransport.writelinesrH!(jjXXhttp://docs.python.org/3/library/asyncio-protocol.html#asyncio.WriteTransport.writelinesX-trI!Xarray.array.poprJ!(jjX;http://docs.python.org/3/library/array.html#array.array.popX-trK!Xobject.__iter__rL!(jjXAhttp://docs.python.org/3/reference/datamodel.html#object.__iter__X-trM!X!distutils.text_file.TextFile.warnrN!(jjXPhttp://docs.python.org/3/distutils/apiref.html#distutils.text_file.TextFile.warnX-trO!X$argparse.ArgumentParser.add_argumentrP!(jjXShttp://docs.python.org/3/library/argparse.html#argparse.ArgumentParser.add_argumentX-trQ!X-distutils.ccompiler.CCompiler.add_library_dirrR!(jjX\http://docs.python.org/3/distutils/apiref.html#distutils.ccompiler.CCompiler.add_library_dirX-trS!Xobject.__rfloordiv__rT!(jjXFhttp://docs.python.org/3/reference/datamodel.html#object.__rfloordiv__X-trU!Xdatetime.time.isoformatrV!(jjXFhttp://docs.python.org/3/library/datetime.html#datetime.time.isoformatX-trW!Xcurses.window.getstrrX!(jjXAhttp://docs.python.org/3/library/curses.html#curses.window.getstrX-trY!Xdoctest.DocTestRunner.summarizerZ!(jjXMhttp://docs.python.org/3/library/doctest.html#doctest.DocTestRunner.summarizeX-tr[!X,xml.dom.Document.createProcessingInstructionr\!(jjXZhttp://docs.python.org/3/library/xml.dom.html#xml.dom.Document.createProcessingInstructionX-tr]!X0xml.parsers.expat.xmlparser.CharacterDataHandlerr^!(jjX^http://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.xmlparser.CharacterDataHandlerX-tr_!Xpathlib.Path.is_fifor`!(jjXBhttp://docs.python.org/3/library/pathlib.html#pathlib.Path.is_fifoX-tra!X&html.parser.HTMLParser.handle_starttagrb!(jjXXhttp://docs.python.org/3/library/html.parser.html#html.parser.HTMLParser.handle_starttagX-trc!X$socketserver.BaseServer.handle_errorrd!(jjXWhttp://docs.python.org/3/library/socketserver.html#socketserver.BaseServer.handle_errorX-tre!Xobject.__format__rf!(jjXChttp://docs.python.org/3/reference/datamodel.html#object.__format__X-trg!X#asyncio.BaseEventLoop.create_serverrh!(jjX[http://docs.python.org/3/library/asyncio-eventloop.html#asyncio.BaseEventLoop.create_serverX-tri!Xmailbox.mbox.unlockrj!(jjXAhttp://docs.python.org/3/library/mailbox.html#mailbox.mbox.unlockX-trk!Ximaplib.IMAP4.recentrl!(jjXBhttp://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.recentX-trm!X+asyncio.BaseEventLoop.set_exception_handlerrn!(jjXchttp://docs.python.org/3/library/asyncio-eventloop.html#asyncio.BaseEventLoop.set_exception_handlerX-tro!Xsmtplib.SMTP.sendmailrp!(jjXChttp://docs.python.org/3/library/smtplib.html#smtplib.SMTP.sendmailX-trq!Xhttp.cookies.BaseCookie.outputrr!(jjXQhttp://docs.python.org/3/library/http.cookies.html#http.cookies.BaseCookie.outputX-trs!Xmailbox.Babyl.lockrt!(jjX@http://docs.python.org/3/library/mailbox.html#mailbox.Babyl.lockX-tru!Xunittest.TestCase.assertLogsrv!(jjXKhttp://docs.python.org/3/library/unittest.html#unittest.TestCase.assertLogsX-trw!X)xml.sax.handler.ContentHandler.charactersrx!(jjX_http://docs.python.org/3/library/xml.sax.handler.html#xml.sax.handler.ContentHandler.charactersX-try!X%ipaddress.IPv4Network.address_excluderz!(jjXUhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Network.address_excludeX-tr{!Xtkinter.ttk.Treeview.detachr|!(jjXMhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.detachX-tr}!Xthreading.Condition.notifyr~!(jjXJhttp://docs.python.org/3/library/threading.html#threading.Condition.notifyX-tr!Xtypes.MappingProxyType.valuesr!(jjXIhttp://docs.python.org/3/library/types.html#types.MappingProxyType.valuesX-tr!X str.isdigitr!(jjX:http://docs.python.org/3/library/stdtypes.html#str.isdigitX-tr!X%logging.handlers.DatagramHandler.sendr!(jjX\http://docs.python.org/3/library/logging.handlers.html#logging.handlers.DatagramHandler.sendX-tr!X&ssl.SSLContext.set_servername_callbackr!(jjXPhttp://docs.python.org/3/library/ssl.html#ssl.SSLContext.set_servername_callbackX-tr!X-logging.handlers.BufferingHandler.shouldFlushr!(jjXdhttp://docs.python.org/3/library/logging.handlers.html#logging.handlers.BufferingHandler.shouldFlushX-tr!X/logging.handlers.NTEventLogHandler.getEventTyper!(jjXfhttp://docs.python.org/3/library/logging.handlers.html#logging.handlers.NTEventLogHandler.getEventTypeX-tr!Xxdrlib.Packer.pack_bytesr!(jjXEhttp://docs.python.org/3/library/xdrlib.html#xdrlib.Packer.pack_bytesX-tr!Xasyncio.Semaphore.releaser!(jjXLhttp://docs.python.org/3/library/asyncio-sync.html#asyncio.Semaphore.releaseX-tr!X3importlib.machinery.ExtensionFileLoader.load_moduler!(jjXchttp://docs.python.org/3/library/importlib.html#importlib.machinery.ExtensionFileLoader.load_moduleX-tr!Xasyncio.Lock.acquirer!(jjXGhttp://docs.python.org/3/library/asyncio-sync.html#asyncio.Lock.acquireX-tr!Xmsilib.Database.Commitr!(jjXChttp://docs.python.org/3/library/msilib.html#msilib.Database.CommitX-tr!X'urllib.request.BaseHandler.unknown_openr!(jjX\http://docs.python.org/3/library/urllib.request.html#urllib.request.BaseHandler.unknown_openX-tr!X*email.message.EmailMessage.add_alternativer!(jjXehttp://docs.python.org/3/library/email.contentmanager.html#email.message.EmailMessage.add_alternativeX-tr!Xsubprocess.Popen.waitr!(jjXFhttp://docs.python.org/3/library/subprocess.html#subprocess.Popen.waitX-tr!Xsubprocess.Popen.terminater!(jjXKhttp://docs.python.org/3/library/subprocess.html#subprocess.Popen.terminateX-tr!Xzipfile.ZipFile.readr!(jjXBhttp://docs.python.org/3/library/zipfile.html#zipfile.ZipFile.readX-tr!Xasynchat.fifo.is_emptyr!(jjXEhttp://docs.python.org/3/library/asynchat.html#asynchat.fifo.is_emptyX-tr!X!code.InteractiveInterpreter.writer!(jjXLhttp://docs.python.org/3/library/code.html#code.InteractiveInterpreter.writeX-tr!Xdecimal.Decimal.next_towardr!(jjXIhttp://docs.python.org/3/library/decimal.html#decimal.Decimal.next_towardX-tr!X str.translater!(jjX<http://docs.python.org/3/library/stdtypes.html#str.translateX-tr!X#tkinter.tix.tixCommand.tix_getimager!(jjXUhttp://docs.python.org/3/library/tkinter.tix.html#tkinter.tix.tixCommand.tix_getimageX-tr!X5multiprocessing.managers.SyncManager.BoundedSemaphorer!(jjXkhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.managers.SyncManager.BoundedSemaphoreX-tr!X'socketserver.BaseServer.service_actionsr!(jjXZhttp://docs.python.org/3/library/socketserver.html#socketserver.BaseServer.service_actionsX-tr!Xmailbox.Mailbox.iteritemsr!(jjXGhttp://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.iteritemsX-tr!X%unittest.TestLoader.loadTestsFromNamer!(jjXThttp://docs.python.org/3/library/unittest.html#unittest.TestLoader.loadTestsFromNameX-tr!Xlogging.Logger.removeFilterr!(jjXIhttp://docs.python.org/3/library/logging.html#logging.Logger.removeFilterX-tr!X"mailbox.MaildirMessage.remove_flagr!(jjXPhttp://docs.python.org/3/library/mailbox.html#mailbox.MaildirMessage.remove_flagX-tr!Xunittest.TestResult.startTestr!(jjXLhttp://docs.python.org/3/library/unittest.html#unittest.TestResult.startTestX-tr!X%tkinter.ttk.Treeview.identify_elementr!(jjXWhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.identify_elementX-tr!Xthreading.Thread.setDaemonr!(jjXJhttp://docs.python.org/3/library/threading.html#threading.Thread.setDaemonX-tr!Xxmlrpc.client.DateTime.decoder!(jjXQhttp://docs.python.org/3/library/xmlrpc.client.html#xmlrpc.client.DateTime.decodeX-tr!X!urllib.request.Request.get_methodr!(jjXVhttp://docs.python.org/3/library/urllib.request.html#urllib.request.Request.get_methodX-tr!X-xml.sax.handler.DTDHandler.unparsedEntityDeclr!(jjXchttp://docs.python.org/3/library/xml.sax.handler.html#xml.sax.handler.DTDHandler.unparsedEntityDeclX-tr!Xnntplib.NNTP.headr!(jjX?http://docs.python.org/3/library/nntplib.html#nntplib.NNTP.headX-tr!Xio.BufferedWriter.flushr!(jjX@http://docs.python.org/3/library/io.html#io.BufferedWriter.flushX-tr!Xcsv.csvwriter.writerowr!(jjX@http://docs.python.org/3/library/csv.html#csv.csvwriter.writerowX-tr!Xdifflib.HtmlDiff.make_filer!(jjXHhttp://docs.python.org/3/library/difflib.html#difflib.HtmlDiff.make_fileX-tr!Xipaddress.IPv6Network.hostsr!(jjXKhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Network.hostsX-tr!Xformatter.formatter.pop_fontr!(jjXLhttp://docs.python.org/3/library/formatter.html#formatter.formatter.pop_fontX-tr!X!urllib.request.URLopener.retriever!(jjXVhttp://docs.python.org/3/library/urllib.request.html#urllib.request.URLopener.retrieveX-tr!Xtracemalloc.Traceback.formatr!(jjXNhttp://docs.python.org/3/library/tracemalloc.html#tracemalloc.Traceback.formatX-tr!Xmailbox.MH.unlockr!(jjX?http://docs.python.org/3/library/mailbox.html#mailbox.MH.unlockX-tr!Xftplib.FTP.retrbinaryr!(jjXBhttp://docs.python.org/3/library/ftplib.html#ftplib.FTP.retrbinaryX-tr!Xtarfile.TarFile.getmembersr!(jjXHhttp://docs.python.org/3/library/tarfile.html#tarfile.TarFile.getmembersX-tr!Xthreading.Thread.getNamer!(jjXHhttp://docs.python.org/3/library/threading.html#threading.Thread.getNameX-tr!Xmailbox.mboxMessage.set_fromr!(jjXJhttp://docs.python.org/3/library/mailbox.html#mailbox.mboxMessage.set_fromX-tr!Xaifc.aifc.aiffr!(jjX9http://docs.python.org/3/library/aifc.html#aifc.aifc.aiffX-tr!Xmmap.mmap.sizer!(jjX9http://docs.python.org/3/library/mmap.html#mmap.mmap.sizeX-tr!X!sqlite3.Connection.load_extensionr!(jjXOhttp://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.load_extensionX-tr!Xaifc.aifc.aifcr!(jjX9http://docs.python.org/3/library/aifc.html#aifc.aifc.aifcX-tr!X4wsgiref.simple_server.WSGIRequestHandler.get_environr!(jjXbhttp://docs.python.org/3/library/wsgiref.html#wsgiref.simple_server.WSGIRequestHandler.get_environX-tr!Xdatetime.time.__format__r!(jjXGhttp://docs.python.org/3/library/datetime.html#datetime.time.__format__X-tr!X7http.server.BaseHTTPRequestHandler.log_date_time_stringr!(jjXihttp://docs.python.org/3/library/http.server.html#http.server.BaseHTTPRequestHandler.log_date_time_stringX-tr!X%socketserver.BaseServer.serve_foreverr!(jjXXhttp://docs.python.org/3/library/socketserver.html#socketserver.BaseServer.serve_foreverX-tr!Xmsilib.Dialog.checkboxr!(jjXChttp://docs.python.org/3/library/msilib.html#msilib.Dialog.checkboxX-tr!Xnntplib.NNTP.getcapabilitiesr!(jjXJhttp://docs.python.org/3/library/nntplib.html#nntplib.NNTP.getcapabilitiesX-tr!X)xml.sax.xmlreader.InputSource.getEncodingr!(jjX^http://docs.python.org/3/library/xml.sax.reader.html#xml.sax.xmlreader.InputSource.getEncodingX-tr!X3urllib.request.HTTPRedirectHandler.redirect_requestr!(jjXhhttp://docs.python.org/3/library/urllib.request.html#urllib.request.HTTPRedirectHandler.redirect_requestX-tr!X*logging.handlers.SocketHandler.handleErrorr!(jjXahttp://docs.python.org/3/library/logging.handlers.html#logging.handlers.SocketHandler.handleErrorX-tr!X!gettext.GNUTranslations.lngettextr!(jjXOhttp://docs.python.org/3/library/gettext.html#gettext.GNUTranslations.lngettextX-tr!X)xml.etree.ElementTree.TreeBuilder.doctyper!(jjXehttp://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.TreeBuilder.doctypeX-tr!X importlib.abc.Loader.exec_moduler!(jjXPhttp://docs.python.org/3/library/importlib.html#importlib.abc.Loader.exec_moduleX-tr!Xsched.scheduler.runr!(jjX?http://docs.python.org/3/library/sched.html#sched.scheduler.runX-tr!Xselect.epoll.fromfdr!(jjX@http://docs.python.org/3/library/select.html#select.epoll.fromfdX-tr!Xmsilib.View.Executer"(jjX@http://docs.python.org/3/library/msilib.html#msilib.View.ExecuteX-tr"Xmailbox.mbox.lockr"(jjX?http://docs.python.org/3/library/mailbox.html#mailbox.mbox.lockX-tr"Xcurses.panel.Panel.showr"(jjXJhttp://docs.python.org/3/library/curses.panel.html#curses.panel.Panel.showX-tr"Xselect.poll.pollr"(jjX=http://docs.python.org/3/library/select.html#select.poll.pollX-tr"X,asyncio.WriteTransport.get_write_buffer_sizer"(jjXchttp://docs.python.org/3/library/asyncio-protocol.html#asyncio.WriteTransport.get_write_buffer_sizeX-tr "X asyncio.BaseEventLoop.add_readerr "(jjXXhttp://docs.python.org/3/library/asyncio-eventloop.html#asyncio.BaseEventLoop.add_readerX-tr "Xsmtplib.SMTP.docmdr "(jjX@http://docs.python.org/3/library/smtplib.html#smtplib.SMTP.docmdX-tr "Xtkinter.ttk.Style.configurer"(jjXMhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Style.configureX-tr"Xcurses.window.chgatr"(jjX@http://docs.python.org/3/library/curses.html#curses.window.chgatX-tr"X(unittest.TestResult.addUnexpectedSuccessr"(jjXWhttp://docs.python.org/3/library/unittest.html#unittest.TestResult.addUnexpectedSuccessX-tr"X datetime.timedelta.total_secondsr"(jjXOhttp://docs.python.org/3/library/datetime.html#datetime.timedelta.total_secondsX-tr"Xsunau.AU_write.setframerater"(jjXGhttp://docs.python.org/3/library/sunau.html#sunau.AU_write.setframerateX-tr"Xformatter.formatter.pop_marginr"(jjXNhttp://docs.python.org/3/library/formatter.html#formatter.formatter.pop_marginX-tr"X#argparse.ArgumentParser.print_usager"(jjXRhttp://docs.python.org/3/library/argparse.html#argparse.ArgumentParser.print_usageX-tr"X(sqlite3.Connection.enable_load_extensionr"(jjXVhttp://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.enable_load_extensionX-tr"X$tkinter.tix.tixCommand.tix_configurer"(jjXVhttp://docs.python.org/3/library/tkinter.tix.html#tkinter.tix.tixCommand.tix_configureX-tr"Xtelnetlib.Telnet.read_allr "(jjXIhttp://docs.python.org/3/library/telnetlib.html#telnetlib.Telnet.read_allX-tr!"X!email.policy.Policy.handle_defectr""(jjXThttp://docs.python.org/3/library/email.policy.html#email.policy.Policy.handle_defectX-tr#"Ximaplib.IMAP4.appendr$"(jjXBhttp://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.appendX-tr%"Xemail.message.Message.set_typer&"(jjXRhttp://docs.python.org/3/library/email.message.html#email.message.Message.set_typeX-tr'"Xbdb.Breakpoint.bpprintr("(jjX@http://docs.python.org/3/library/bdb.html#bdb.Breakpoint.bpprintX-tr)"X_thread.lock.releaser*"(jjXBhttp://docs.python.org/3/library/_thread.html#_thread.lock.releaseX-tr+"Xvenv.EnvBuilder.post_setupr,"(jjXEhttp://docs.python.org/3/library/venv.html#venv.EnvBuilder.post_setupX-tr-"Xunittest.TestCase.assertRaisesr."(jjXMhttp://docs.python.org/3/library/unittest.html#unittest.TestCase.assertRaisesX-tr/"Xcollections.deque.popleftr0"(jjXKhttp://docs.python.org/3/library/collections.html#collections.deque.popleftX-tr1"X$tkinter.ttk.Treeview.identify_columnr2"(jjXVhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.identify_columnX-tr3"Xasyncore.dispatcher.sendr4"(jjXGhttp://docs.python.org/3/library/asyncore.html#asyncore.dispatcher.sendX-tr5"Xaifc.aifc.tellr6"(jjX9http://docs.python.org/3/library/aifc.html#aifc.aifc.tellX-tr7"X"asyncore.dispatcher.handle_connectr8"(jjXQhttp://docs.python.org/3/library/asyncore.html#asyncore.dispatcher.handle_connectX-tr9"Xnntplib.NNTP.nextr:"(jjX?http://docs.python.org/3/library/nntplib.html#nntplib.NNTP.nextX-tr;"Xtkinter.ttk.Treeview.xviewr<"(jjXLhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.xviewX-tr="X)wsgiref.handlers.BaseHandler.add_cgi_varsr>"(jjXWhttp://docs.python.org/3/library/wsgiref.html#wsgiref.handlers.BaseHandler.add_cgi_varsX-tr?"X)xml.etree.ElementTree.ElementTree.getrootr@"(jjXehttp://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.ElementTree.getrootX-trA"X!optparse.OptionParser.print_usagerB"(jjXPhttp://docs.python.org/3/library/optparse.html#optparse.OptionParser.print_usageX-trC"Xdecimal.Context.remainder_nearrD"(jjXLhttp://docs.python.org/3/library/decimal.html#decimal.Context.remainder_nearX-trE"X%xml.etree.ElementTree.TreeBuilder.endrF"(jjXahttp://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.TreeBuilder.endX-trG"Xtelnetlib.Telnet.msgrH"(jjXDhttp://docs.python.org/3/library/telnetlib.html#telnetlib.Telnet.msgX-trI"Xtkinter.ttk.Combobox.setrJ"(jjXJhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Combobox.setX-trK"Xre.regex.matchrL"(jjX7http://docs.python.org/3/library/re.html#re.regex.matchX-trM"X1http.server.BaseHTTPRequestHandler.version_stringrN"(jjXchttp://docs.python.org/3/library/http.server.html#http.server.BaseHTTPRequestHandler.version_stringX-trO"X*multiprocessing.managers.SyncManager.QueuerP"(jjX`http://docs.python.org/3/library/multiprocessing.html#multiprocessing.managers.SyncManager.QueueX-trQ"X"formatter.writer.send_literal_datarR"(jjXRhttp://docs.python.org/3/library/formatter.html#formatter.writer.send_literal_dataX-trS"Xtkinter.ttk.Treeview.yviewrT"(jjXLhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.yviewX-trU"Xcsv.Sniffer.sniffrV"(jjX;http://docs.python.org/3/library/csv.html#csv.Sniffer.sniffX-trW"Xprofile.Profile.runrX"(jjXAhttp://docs.python.org/3/library/profile.html#profile.Profile.runX-trY"Xmailbox.MH.closerZ"(jjX>http://docs.python.org/3/library/mailbox.html#mailbox.MH.closeX-tr["Xwave.Wave_read.closer\"(jjX?http://docs.python.org/3/library/wave.html#wave.Wave_read.closeX-tr]"Xset.isdisjointr^"(jjX=http://docs.python.org/3/library/stdtypes.html#set.isdisjointX-tr_"Xqueue.Queue.getr`"(jjX;http://docs.python.org/3/library/queue.html#queue.Queue.getX-tra"Xxdrlib.Unpacker.get_positionrb"(jjXIhttp://docs.python.org/3/library/xdrlib.html#xdrlib.Unpacker.get_positionX-trc"Xxml.dom.Node.replaceChildrd"(jjXGhttp://docs.python.org/3/library/xml.dom.html#xml.dom.Node.replaceChildX-tre"X%html.parser.HTMLParser.handle_commentrf"(jjXWhttp://docs.python.org/3/library/html.parser.html#html.parser.HTMLParser.handle_commentX-trg"Xobject.__iadd__rh"(jjXAhttp://docs.python.org/3/reference/datamodel.html#object.__iadd__X-tri"Xcurses.window.notimeoutrj"(jjXDhttp://docs.python.org/3/library/curses.html#curses.window.notimeoutX-trk"Xunittest.TestSuite.addTestsrl"(jjXJhttp://docs.python.org/3/library/unittest.html#unittest.TestSuite.addTestsX-trm"Xdatetime.datetime.__format__rn"(jjXKhttp://docs.python.org/3/library/datetime.html#datetime.datetime.__format__X-tro"Xchunk.Chunk.getsizerp"(jjX?http://docs.python.org/3/library/chunk.html#chunk.Chunk.getsizeX-trq"Xnntplib.NNTP.grouprr"(jjX@http://docs.python.org/3/library/nntplib.html#nntplib.NNTP.groupX-trs"Xdecimal.Decimal.copy_absrt"(jjXFhttp://docs.python.org/3/library/decimal.html#decimal.Decimal.copy_absX-tru"X!tkinter.ttk.Treeview.identify_rowrv"(jjXShttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.identify_rowX-trw"Xturtle.Shape.addcomponentrx"(jjXFhttp://docs.python.org/3/library/turtle.html#turtle.Shape.addcomponentX-try"X'asyncio.asyncio.subprocess.Process.killrz"(jjX`http://docs.python.org/3/library/asyncio-subprocess.html#asyncio.asyncio.subprocess.Process.killX-tr{"X"asyncio.StreamWriter.can_write_eofr|"(jjXWhttp://docs.python.org/3/library/asyncio-stream.html#asyncio.StreamWriter.can_write_eofX-tr}"Xasyncio.Semaphore.lockedr~"(jjXKhttp://docs.python.org/3/library/asyncio-sync.html#asyncio.Semaphore.lockedX-tr"Xemail.parser.FeedParser.closer"(jjXPhttp://docs.python.org/3/library/email.parser.html#email.parser.FeedParser.closeX-tr"Xcodecs.StreamWriter.writelinesr"(jjXKhttp://docs.python.org/3/library/codecs.html#codecs.StreamWriter.writelinesX-tr"X(email.policy.Compat32.header_fetch_parser"(jjX[http://docs.python.org/3/library/email.policy.html#email.policy.Compat32.header_fetch_parseX-tr"Xlogging.Logger.setLevelr"(jjXEhttp://docs.python.org/3/library/logging.html#logging.Logger.setLevelX-tr"Xbdb.Breakpoint.enabler"(jjX?http://docs.python.org/3/library/bdb.html#bdb.Breakpoint.enableX-tr"X-importlib.machinery.SourceFileLoader.set_datar"(jjX]http://docs.python.org/3/library/importlib.html#importlib.machinery.SourceFileLoader.set_dataX-tr"Xxml.dom.Node.cloneNoder"(jjXDhttp://docs.python.org/3/library/xml.dom.html#xml.dom.Node.cloneNodeX-tr"Xselectors.BaseSelector.registerr"(jjXOhttp://docs.python.org/3/library/selectors.html#selectors.BaseSelector.registerX-tr"Xaifc.aifc.setmarkr"(jjX<http://docs.python.org/3/library/aifc.html#aifc.aifc.setmarkX-tr"Xselectors.BaseSelector.get_keyr"(jjXNhttp://docs.python.org/3/library/selectors.html#selectors.BaseSelector.get_keyX-tr"Xobject.__rlshift__r"(jjXDhttp://docs.python.org/3/reference/datamodel.html#object.__rlshift__X-tr"X-xml.parsers.expat.xmlparser.EndElementHandlerr"(jjX[http://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.xmlparser.EndElementHandlerX-tr"X ctypes.LibraryLoader.LoadLibraryr"(jjXMhttp://docs.python.org/3/library/ctypes.html#ctypes.LibraryLoader.LoadLibraryX-tr"X)xml.sax.xmlreader.InputSource.getPublicIdr"(jjX^http://docs.python.org/3/library/xml.sax.reader.html#xml.sax.xmlreader.InputSource.getPublicIdX-tr"Xpathlib.Path.is_socketr"(jjXDhttp://docs.python.org/3/library/pathlib.html#pathlib.Path.is_socketX-tr"Ximaplib.IMAP4.searchr"(jjXBhttp://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.searchX-tr"Xtkinter.ttk.Widget.instater"(jjXLhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Widget.instateX-tr"Xasyncio.Condition.wait_forr"(jjXMhttp://docs.python.org/3/library/asyncio-sync.html#asyncio.Condition.wait_forX-tr"Xlogging.Handler.setLevelr"(jjXFhttp://docs.python.org/3/library/logging.html#logging.Handler.setLevelX-tr"X%distutils.ccompiler.CCompiler.executer"(jjXThttp://docs.python.org/3/distutils/apiref.html#distutils.ccompiler.CCompiler.executeX-tr"X&email.message.EmailMessage.get_contentr"(jjXahttp://docs.python.org/3/library/email.contentmanager.html#email.message.EmailMessage.get_contentX-tr"Xzipfile.ZipFile.extractr"(jjXEhttp://docs.python.org/3/library/zipfile.html#zipfile.ZipFile.extractX-tr"Xasyncio.JoinableQueue.joinr"(jjXMhttp://docs.python.org/3/library/asyncio-sync.html#asyncio.JoinableQueue.joinX-tr"X)xml.etree.ElementTree.ElementTree.findallr"(jjXehttp://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.ElementTree.findallX-tr"Xzipimport.zipimporter.get_coder"(jjXNhttp://docs.python.org/3/library/zipimport.html#zipimport.zipimporter.get_codeX-tr"Xxdrlib.Packer.pack_doubler"(jjXFhttp://docs.python.org/3/library/xdrlib.html#xdrlib.Packer.pack_doubleX-tr"Xparser.ST.compiler"(jjX>http://docs.python.org/3/library/parser.html#parser.ST.compileX-tr"X3xml.parsers.expat.xmlparser.StartDoctypeDeclHandlerr"(jjXahttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.xmlparser.StartDoctypeDeclHandlerX-tr"u(Xipaddress.IPv6Network.overlapsr"(jjXNhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Network.overlapsX-tr"Xdatetime.datetime.utctimetupler"(jjXMhttp://docs.python.org/3/library/datetime.html#datetime.datetime.utctimetupleX-tr"X/asyncio.SubprocessProtocol.pipe_connection_lostr"(jjXfhttp://docs.python.org/3/library/asyncio-protocol.html#asyncio.SubprocessProtocol.pipe_connection_lostX-tr"X)xml.parsers.expat.xmlparser.UseForeignDTDr"(jjXWhttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.xmlparser.UseForeignDTDX-tr"Xaifc.aifc.getframerater"(jjXAhttp://docs.python.org/3/library/aifc.html#aifc.aifc.getframerateX-tr"X*multiprocessing.connection.Listener.acceptr"(jjX`http://docs.python.org/3/library/multiprocessing.html#multiprocessing.connection.Listener.acceptX-tr"Xmailbox.MaildirMessage.set_infor"(jjXMhttp://docs.python.org/3/library/mailbox.html#mailbox.MaildirMessage.set_infoX-tr"X pickle.Unpickler.persistent_loadr"(jjXMhttp://docs.python.org/3/library/pickle.html#pickle.Unpickler.persistent_loadX-tr"X"email.message.Message.is_multipartr"(jjXVhttp://docs.python.org/3/library/email.message.html#email.message.Message.is_multipartX-tr"Ximaplib.IMAP4.readliner"(jjXDhttp://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.readlineX-tr"Xpipes.Template.resetr"(jjX@http://docs.python.org/3/library/pipes.html#pipes.Template.resetX-tr"X logging.Logger.getEffectiveLevelr"(jjXNhttp://docs.python.org/3/library/logging.html#logging.Logger.getEffectiveLevelX-tr"Xdecimal.Context.radixr"(jjXChttp://docs.python.org/3/library/decimal.html#decimal.Context.radixX-tr"X'tkinter.tix.tixCommand.tix_addbitmapdirr"(jjXYhttp://docs.python.org/3/library/tkinter.tix.html#tkinter.tix.tixCommand.tix_addbitmapdirX-tr"Xunittest.TestCase.tearDownr"(jjXIhttp://docs.python.org/3/library/unittest.html#unittest.TestCase.tearDownX-tr"Xxdrlib.Packer.pack_arrayr"(jjXEhttp://docs.python.org/3/library/xdrlib.html#xdrlib.Packer.pack_arrayX-tr"X(difflib.SequenceMatcher.real_quick_ratior"(jjXVhttp://docs.python.org/3/library/difflib.html#difflib.SequenceMatcher.real_quick_ratioX-tr"Xdecimal.Context.number_classr"(jjXJhttp://docs.python.org/3/library/decimal.html#decimal.Context.number_classX-tr"Xdatetime.datetime.timetupler"(jjXJhttp://docs.python.org/3/library/datetime.html#datetime.datetime.timetupleX-tr"Xwave.Wave_write.closer"(jjX@http://docs.python.org/3/library/wave.html#wave.Wave_write.closeX-tr"X!multiprocessing.Queue.join_threadr"(jjXWhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.Queue.join_threadX-tr"Xmmap.mmap.resizer"(jjX;http://docs.python.org/3/library/mmap.html#mmap.mmap.resizeX-tr"X1http.server.BaseHTTPRequestHandler.address_stringr"(jjXchttp://docs.python.org/3/library/http.server.html#http.server.BaseHTTPRequestHandler.address_stringX-tr"Xmailbox.Maildir.closer"(jjXChttp://docs.python.org/3/library/mailbox.html#mailbox.Maildir.closeX-tr"X!decimal.Context.to_integral_exactr"(jjXOhttp://docs.python.org/3/library/decimal.html#decimal.Context.to_integral_exactX-tr"X%http.client.HTTPConnection.endheadersr"(jjXWhttp://docs.python.org/3/library/http.client.html#http.client.HTTPConnection.endheadersX-tr"Xaifc.aifc.getnchannelsr"(jjXAhttp://docs.python.org/3/library/aifc.html#aifc.aifc.getnchannelsX-tr"Xzipfile.ZipFile.testzipr"(jjXEhttp://docs.python.org/3/library/zipfile.html#zipfile.ZipFile.testzipX-tr"Xssl.SSLSocket.cipherr"(jjX>http://docs.python.org/3/library/ssl.html#ssl.SSLSocket.cipherX-tr"Xpipes.Template.copyr"(jjX?http://docs.python.org/3/library/pipes.html#pipes.Template.copyX-tr"X"configparser.ConfigParser.defaultsr"(jjXUhttp://docs.python.org/3/library/configparser.html#configparser.ConfigParser.defaultsX-tr"Xxdrlib.Unpacker.unpack_farrayr"(jjXJhttp://docs.python.org/3/library/xdrlib.html#xdrlib.Unpacker.unpack_farrayX-tr"X str.centerr"(jjX9http://docs.python.org/3/library/stdtypes.html#str.centerX-tr"Xasyncore.dispatcher.handle_readr"(jjXNhttp://docs.python.org/3/library/asyncore.html#asyncore.dispatcher.handle_readX-tr"Xdecimal.Decimal.min_magr"(jjXEhttp://docs.python.org/3/library/decimal.html#decimal.Decimal.min_magX-tr"Xbdb.Bdb.runevalr"(jjX9http://docs.python.org/3/library/bdb.html#bdb.Bdb.runevalX-tr"Xdecimal.Decimal.is_subnormalr#(jjXJhttp://docs.python.org/3/library/decimal.html#decimal.Decimal.is_subnormalX-tr#Xftplib.FTP_TLS.authr#(jjX@http://docs.python.org/3/library/ftplib.html#ftplib.FTP_TLS.authX-tr#Xxml.sax.SAXException.getMessager#(jjXMhttp://docs.python.org/3/library/xml.sax.html#xml.sax.SAXException.getMessageX-tr#Xre.regex.findallr#(jjX9http://docs.python.org/3/library/re.html#re.regex.findallX-tr#Xwave.Wave_read.getframerater#(jjXFhttp://docs.python.org/3/library/wave.html#wave.Wave_read.getframerateX-tr #X"unittest.TestCase.assertWarnsRegexr #(jjXQhttp://docs.python.org/3/library/unittest.html#unittest.TestCase.assertWarnsRegexX-tr #Xdatetime.date.strftimer #(jjXEhttp://docs.python.org/3/library/datetime.html#datetime.date.strftimeX-tr #X$xml.dom.DOMImplementation.hasFeaturer#(jjXRhttp://docs.python.org/3/library/xml.dom.html#xml.dom.DOMImplementation.hasFeatureX-tr#Ximaplib.IMAP4.selectr#(jjXBhttp://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.selectX-tr#X"unittest.TestCase.assertTupleEqualr#(jjXQhttp://docs.python.org/3/library/unittest.html#unittest.TestCase.assertTupleEqualX-tr#X(email.charset.Charset.get_output_charsetr#(jjX\http://docs.python.org/3/library/email.charset.html#email.charset.Charset.get_output_charsetX-tr#X)xml.sax.xmlreader.InputSource.setSystemIdr#(jjX^http://docs.python.org/3/library/xml.sax.reader.html#xml.sax.xmlreader.InputSource.setSystemIdX-tr#X)distutils.ccompiler.CCompiler.add_libraryr#(jjXXhttp://docs.python.org/3/distutils/apiref.html#distutils.ccompiler.CCompiler.add_libraryX-tr#X0http.server.BaseHTTPRequestHandler.flush_headersr#(jjXbhttp://docs.python.org/3/library/http.server.html#http.server.BaseHTTPRequestHandler.flush_headersX-tr#X'xml.etree.ElementTree.TreeBuilder.startr#(jjXchttp://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.TreeBuilder.startX-tr#Xcurses.window.overlayr#(jjXBhttp://docs.python.org/3/library/curses.html#curses.window.overlayX-tr#Xsqlite3.Connection.executemanyr #(jjXLhttp://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.executemanyX-tr!#Xobject.__init__r"#(jjXAhttp://docs.python.org/3/reference/datamodel.html#object.__init__X-tr##Xcollections.deque.appendr$#(jjXJhttp://docs.python.org/3/library/collections.html#collections.deque.appendX-tr%#Xasyncio.Condition.notifyr&#(jjXKhttp://docs.python.org/3/library/asyncio-sync.html#asyncio.Condition.notifyX-tr'#Xunittest.TestCase.assertIsNotr(#(jjXLhttp://docs.python.org/3/library/unittest.html#unittest.TestCase.assertIsNotX-tr)#Xcalendar.TextCalendar.pryearr*#(jjXKhttp://docs.python.org/3/library/calendar.html#calendar.TextCalendar.pryearX-tr+#Xsunau.AU_read.getparamsr,#(jjXChttp://docs.python.org/3/library/sunau.html#sunau.AU_read.getparamsX-tr-#Xemail.policy.Policy.foldr.#(jjXKhttp://docs.python.org/3/library/email.policy.html#email.policy.Policy.foldX-tr/#X!ssl.SSLSocket.get_channel_bindingr0#(jjXKhttp://docs.python.org/3/library/ssl.html#ssl.SSLSocket.get_channel_bindingX-tr1#Xasyncio.BaseEventLoop.call_soonr2#(jjXWhttp://docs.python.org/3/library/asyncio-eventloop.html#asyncio.BaseEventLoop.call_soonX-tr3#X%multiprocessing.pool.AsyncResult.waitr4#(jjX[http://docs.python.org/3/library/multiprocessing.html#multiprocessing.pool.AsyncResult.waitX-tr5#X$urllib.request.HTTPHandler.http_openr6#(jjXYhttp://docs.python.org/3/library/urllib.request.html#urllib.request.HTTPHandler.http_openX-tr7#Xasyncio.StreamWriter.writelinesr8#(jjXThttp://docs.python.org/3/library/asyncio-stream.html#asyncio.StreamWriter.writelinesX-tr9#Xobject.__repr__r:#(jjXAhttp://docs.python.org/3/reference/datamodel.html#object.__repr__X-tr;#Xnntplib.NNTP.helpr<#(jjX?http://docs.python.org/3/library/nntplib.html#nntplib.NNTP.helpX-tr=#X-logging.handlers.SysLogHandler.encodePriorityr>#(jjXdhttp://docs.python.org/3/library/logging.handlers.html#logging.handlers.SysLogHandler.encodePriorityX-tr?#Xasyncore.dispatcher.listenr@#(jjXIhttp://docs.python.org/3/library/asyncore.html#asyncore.dispatcher.listenX-trA#Xthreading.Event.waitrB#(jjXDhttp://docs.python.org/3/library/threading.html#threading.Event.waitX-trC#Xssl.SSLContext.load_cert_chainrD#(jjXHhttp://docs.python.org/3/library/ssl.html#ssl.SSLContext.load_cert_chainX-trE#X!email.message.Message.set_payloadrF#(jjXUhttp://docs.python.org/3/library/email.message.html#email.message.Message.set_payloadX-trG#Xio.IOBase.readlinesrH#(jjX<http://docs.python.org/3/library/io.html#io.IOBase.readlinesX-trI#Xbdb.Bdb.dispatch_exceptionrJ#(jjXDhttp://docs.python.org/3/library/bdb.html#bdb.Bdb.dispatch_exceptionX-trK#Xdatetime.datetime.dstrL#(jjXDhttp://docs.python.org/3/library/datetime.html#datetime.datetime.dstX-trM#X$xml.etree.ElementTree.XMLParser.feedrN#(jjX`http://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.XMLParser.feedX-trO#Xnntplib.NNTP.loginrP#(jjX@http://docs.python.org/3/library/nntplib.html#nntplib.NNTP.loginX-trQ#X+xml.sax.xmlreader.XMLReader.setErrorHandlerrR#(jjX`http://docs.python.org/3/library/xml.sax.reader.html#xml.sax.xmlreader.XMLReader.setErrorHandlerX-trS#X-xml.sax.xmlreader.XMLReader.getContentHandlerrT#(jjXbhttp://docs.python.org/3/library/xml.sax.reader.html#xml.sax.xmlreader.XMLReader.getContentHandlerX-trU#X&email.message.Message.get_default_typerV#(jjXZhttp://docs.python.org/3/library/email.message.html#email.message.Message.get_default_typeX-trW#Xthreading.Thread.startrX#(jjXFhttp://docs.python.org/3/library/threading.html#threading.Thread.startX-trY#X asyncio.Future.add_done_callbackrZ#(jjXShttp://docs.python.org/3/library/asyncio-task.html#asyncio.Future.add_done_callbackX-tr[#Xdecimal.Decimal.compare_totalr\#(jjXKhttp://docs.python.org/3/library/decimal.html#decimal.Decimal.compare_totalX-tr]#Xmailbox.Mailbox.__iter__r^#(jjXFhttp://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.__iter__X-tr_#X lzma.LZMADecompressor.decompressr`#(jjXKhttp://docs.python.org/3/library/lzma.html#lzma.LZMADecompressor.decompressX-tra#X%unittest.TestCase.assertSequenceEqualrb#(jjXThttp://docs.python.org/3/library/unittest.html#unittest.TestCase.assertSequenceEqualX-trc#X configparser.RawConfigParser.setrd#(jjXShttp://docs.python.org/3/library/configparser.html#configparser.RawConfigParser.setX-tre#X3http.server.BaseHTTPRequestHandler.date_time_stringrf#(jjXehttp://docs.python.org/3/library/http.server.html#http.server.BaseHTTPRequestHandler.date_time_stringX-trg#Xformatter.writer.new_stylesrh#(jjXKhttp://docs.python.org/3/library/formatter.html#formatter.writer.new_stylesX-tri#Xpstats.Stats.strip_dirsrj#(jjXEhttp://docs.python.org/3/library/profile.html#pstats.Stats.strip_dirsX-trk#Ximaplib.IMAP4.getannotationrl#(jjXIhttp://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.getannotationX-trm#Ximaplib.IMAP4.getquotarootrn#(jjXHhttp://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.getquotarootX-tro#Ximaplib.IMAP4.login_cram_md5rp#(jjXJhttp://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.login_cram_md5X-trq#Xxml.dom.Element.setAttributerr#(jjXJhttp://docs.python.org/3/library/xml.dom.html#xml.dom.Element.setAttributeX-trs#Xmailbox.MHMessage.add_sequencert#(jjXLhttp://docs.python.org/3/library/mailbox.html#mailbox.MHMessage.add_sequenceX-tru#X"importlib.abc.Loader.create_modulerv#(jjXRhttp://docs.python.org/3/library/importlib.html#importlib.abc.Loader.create_moduleX-trw#Xthreading.Semaphore.acquirerx#(jjXKhttp://docs.python.org/3/library/threading.html#threading.Semaphore.acquireX-try#Xsunau.AU_read.readframesrz#(jjXDhttp://docs.python.org/3/library/sunau.html#sunau.AU_read.readframesX-tr{#X$configparser.ConfigParser.getbooleanr|#(jjXWhttp://docs.python.org/3/library/configparser.html#configparser.ConfigParser.getbooleanX-tr}#Xcontextlib.ExitStack.pushr~#(jjXJhttp://docs.python.org/3/library/contextlib.html#contextlib.ExitStack.pushX-tr#Xdecimal.Context.copy_absr#(jjXFhttp://docs.python.org/3/library/decimal.html#decimal.Context.copy_absX-tr#X'multiprocessing.pool.Pool.starmap_asyncr#(jjX]http://docs.python.org/3/library/multiprocessing.html#multiprocessing.pool.Pool.starmap_asyncX-tr#X.urllib.request.Request.add_unredirected_headerr#(jjXchttp://docs.python.org/3/library/urllib.request.html#urllib.request.Request.add_unredirected_headerX-tr#Xobject.__setstate__r#(jjX@http://docs.python.org/3/library/pickle.html#object.__setstate__X-tr#X1xml.parsers.expat.xmlparser.SetParamEntityParsingr#(jjX_http://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.xmlparser.SetParamEntityParsingX-tr#Xdict.popr#(jjX7http://docs.python.org/3/library/stdtypes.html#dict.popX-tr#Xbdb.Bdb.set_stepr#(jjX:http://docs.python.org/3/library/bdb.html#bdb.Bdb.set_stepX-tr#X str.endswithr#(jjX;http://docs.python.org/3/library/stdtypes.html#str.endswithX-tr#Xio.IOBase.truncater#(jjX;http://docs.python.org/3/library/io.html#io.IOBase.truncateX-tr#Xsqlite3.Connection.interruptr#(jjXJhttp://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.interruptX-tr#X str.istitler#(jjX:http://docs.python.org/3/library/stdtypes.html#str.istitleX-tr#Xdecimal.Context.minusr#(jjXChttp://docs.python.org/3/library/decimal.html#decimal.Context.minusX-tr#Xftplib.FTP.pwdr#(jjX;http://docs.python.org/3/library/ftplib.html#ftplib.FTP.pwdX-tr#Xmailbox.MH.lockr#(jjX=http://docs.python.org/3/library/mailbox.html#mailbox.MH.lockX-tr#Xtypes.MappingProxyType.itemsr#(jjXHhttp://docs.python.org/3/library/types.html#types.MappingProxyType.itemsX-tr#Xxdrlib.Packer.get_bufferr#(jjXEhttp://docs.python.org/3/library/xdrlib.html#xdrlib.Packer.get_bufferX-tr#Xcurses.window.subwinr#(jjXAhttp://docs.python.org/3/library/curses.html#curses.window.subwinX-tr#Xsocket.socket.setblockingr#(jjXFhttp://docs.python.org/3/library/socket.html#socket.socket.setblockingX-tr#Xcurses.window.eraser#(jjX@http://docs.python.org/3/library/curses.html#curses.window.eraseX-tr#X%gettext.NullTranslations.add_fallbackr#(jjXShttp://docs.python.org/3/library/gettext.html#gettext.NullTranslations.add_fallbackX-tr#X(multiprocessing.Queue.cancel_join_threadr#(jjX^http://docs.python.org/3/library/multiprocessing.html#multiprocessing.Queue.cancel_join_threadX-tr#Xdatetime.time.strftimer#(jjXEhttp://docs.python.org/3/library/datetime.html#datetime.time.strftimeX-tr#X&xml.etree.ElementTree.TreeBuilder.datar#(jjXbhttp://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.TreeBuilder.dataX-tr#X configparser.ConfigParser.readfpr#(jjXShttp://docs.python.org/3/library/configparser.html#configparser.ConfigParser.readfpX-tr#X%msilib.SummaryInformation.GetPropertyr#(jjXRhttp://docs.python.org/3/library/msilib.html#msilib.SummaryInformation.GetPropertyX-tr#X#multiprocessing.pool.Pool.terminater#(jjXYhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.pool.Pool.terminateX-tr#X str.countr#(jjX8http://docs.python.org/3/library/stdtypes.html#str.countX-tr#Xcurses.window.get_wchr#(jjXBhttp://docs.python.org/3/library/curses.html#curses.window.get_wchX-tr#X str.zfillr#(jjX8http://docs.python.org/3/library/stdtypes.html#str.zfillX-tr#Xunittest.TestSuite.addTestr#(jjXIhttp://docs.python.org/3/library/unittest.html#unittest.TestSuite.addTestX-tr#Xdatetime.time.__str__r#(jjXDhttp://docs.python.org/3/library/datetime.html#datetime.time.__str__X-tr#Xdecimal.Context.is_subnormalr#(jjXJhttp://docs.python.org/3/library/decimal.html#decimal.Context.is_subnormalX-tr#X.asyncio.WriteTransport.set_write_buffer_limitsr#(jjXehttp://docs.python.org/3/library/asyncio-protocol.html#asyncio.WriteTransport.set_write_buffer_limitsX-tr#X'socketserver.BaseServer.server_activater#(jjXZhttp://docs.python.org/3/library/socketserver.html#socketserver.BaseServer.server_activateX-tr#Xunittest.TestCase.debugr#(jjXFhttp://docs.python.org/3/library/unittest.html#unittest.TestCase.debugX-tr#Xdecimal.Context.logical_invertr#(jjXLhttp://docs.python.org/3/library/decimal.html#decimal.Context.logical_invertX-tr#Xsocket.socket.gettimeoutr#(jjXEhttp://docs.python.org/3/library/socket.html#socket.socket.gettimeoutX-tr#Xasyncore.dispatcher.bindr#(jjXGhttp://docs.python.org/3/library/asyncore.html#asyncore.dispatcher.bindX-tr#X$urllib.request.FileHandler.file_openr#(jjXYhttp://docs.python.org/3/library/urllib.request.html#urllib.request.FileHandler.file_openX-tr#Xchunk.Chunk.getnamer#(jjX?http://docs.python.org/3/library/chunk.html#chunk.Chunk.getnameX-tr#X&logging.handlers.QueueListener.dequeuer#(jjX]http://docs.python.org/3/library/logging.handlers.html#logging.handlers.QueueListener.dequeueX-tr#X#collections.defaultdict.__missing__r#(jjXUhttp://docs.python.org/3/library/collections.html#collections.defaultdict.__missing__X-tr#Xtkinter.ttk.Treeview.indexr#(jjXLhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.indexX-tr#Xunittest.TestResult.stopTestr#(jjXKhttp://docs.python.org/3/library/unittest.html#unittest.TestResult.stopTestX-tr#Xcurses.window.inschr#(jjX@http://docs.python.org/3/library/curses.html#curses.window.inschX-tr#Xdecimal.Context.logbr#(jjXBhttp://docs.python.org/3/library/decimal.html#decimal.Context.logbX-tr#Xsunau.AU_read.getnchannelsr#(jjXFhttp://docs.python.org/3/library/sunau.html#sunau.AU_read.getnchannelsX-tr#Xasyncio.Event.is_setr#(jjXGhttp://docs.python.org/3/library/asyncio-sync.html#asyncio.Event.is_setX-tr#Xlogging.Handler.emitr#(jjXBhttp://docs.python.org/3/library/logging.html#logging.Handler.emitX-tr#X$concurrent.futures.Future.set_resultr#(jjX]http://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.Future.set_resultX-tr#Xpipes.Template.cloner#(jjX@http://docs.python.org/3/library/pipes.html#pipes.Template.cloneX-tr#Xstring.Formatter.formatr#(jjXDhttp://docs.python.org/3/library/string.html#string.Formatter.formatX-tr#Xwave.Wave_read.getcompnamer#(jjXEhttp://docs.python.org/3/library/wave.html#wave.Wave_read.getcompnameX-tr#X%xml.etree.ElementTree.Element.findallr#(jjXahttp://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element.findallX-tr#X,xml.dom.DOMImplementation.createDocumentTyper#(jjXZhttp://docs.python.org/3/library/xml.dom.html#xml.dom.DOMImplementation.createDocumentTypeX-tr#Xemail.parser.Parser.parsestrr#(jjXOhttp://docs.python.org/3/library/email.parser.html#email.parser.Parser.parsestrX-tr#X"logging.logging.Formatter.__init__r#(jjXNhttp://docs.python.org/3/howto/logging.html#logging.logging.Formatter.__init__X-tr#Xmsilib.Record.ClearDatar#(jjXDhttp://docs.python.org/3/library/msilib.html#msilib.Record.ClearDataX-tr#Xlzma.LZMACompressor.flushr#(jjXDhttp://docs.python.org/3/library/lzma.html#lzma.LZMACompressor.flushX-tr#Xthreading.Barrier.resetr#(jjXGhttp://docs.python.org/3/library/threading.html#threading.Barrier.resetX-tr#Xdecimal.Decimal.maxr#(jjXAhttp://docs.python.org/3/library/decimal.html#decimal.Decimal.maxX-tr#Xdecimal.Context.to_eng_stringr#(jjXKhttp://docs.python.org/3/library/decimal.html#decimal.Context.to_eng_stringX-tr#Xftplib.FTP.sizer#(jjX<http://docs.python.org/3/library/ftplib.html#ftplib.FTP.sizeX-tr#Xasyncio.Queue.emptyr#(jjXFhttp://docs.python.org/3/library/asyncio-sync.html#asyncio.Queue.emptyX-tr#X'asyncio.DatagramProtocol.error_receivedr$(jjX^http://docs.python.org/3/library/asyncio-protocol.html#asyncio.DatagramProtocol.error_receivedX-tr$X/logging.handlers.QueueListener.enqueue_sentinelr$(jjXfhttp://docs.python.org/3/library/logging.handlers.html#logging.handlers.QueueListener.enqueue_sentinelX-tr$Xpathlib.PurePath.as_urir$(jjXEhttp://docs.python.org/3/library/pathlib.html#pathlib.PurePath.as_uriX-tr$Xmailbox.Maildir.cleanr$(jjXChttp://docs.python.org/3/library/mailbox.html#mailbox.Maildir.cleanX-tr$Xasyncio.StreamWriter.writer$(jjXOhttp://docs.python.org/3/library/asyncio-stream.html#asyncio.StreamWriter.writeX-tr $X%ossaudiodev.oss_audio_device.writeallr $(jjXWhttp://docs.python.org/3/library/ossaudiodev.html#ossaudiodev.oss_audio_device.writeallX-tr $Xunittest.mock.call.call_listr $(jjXPhttp://docs.python.org/3/library/unittest.mock.html#unittest.mock.call.call_listX-tr $X,email.policy.EmailPolicy.header_source_parser$(jjX_http://docs.python.org/3/library/email.policy.html#email.policy.EmailPolicy.header_source_parseX-tr$Xasyncio.Condition.waitr$(jjXIhttp://docs.python.org/3/library/asyncio-sync.html#asyncio.Condition.waitX-tr$Xsocket.socket.sendallr$(jjXBhttp://docs.python.org/3/library/socket.html#socket.socket.sendallX-tr$X,asyncio.asyncio.subprocess.Process.terminater$(jjXehttp://docs.python.org/3/library/asyncio-subprocess.html#asyncio.asyncio.subprocess.Process.terminateX-tr$Xlogging.Logger.filterr$(jjXChttp://docs.python.org/3/library/logging.html#logging.Logger.filterX-tr$Xsunau.AU_read.getframerater$(jjXFhttp://docs.python.org/3/library/sunau.html#sunau.AU_read.getframerateX-tr$X&email.message.EmailMessage.set_contentr$(jjXahttp://docs.python.org/3/library/email.contentmanager.html#email.message.EmailMessage.set_contentX-tr$Xstr.findr$(jjX7http://docs.python.org/3/library/stdtypes.html#str.findX-tr$Xasyncio.Event.setr$(jjXDhttp://docs.python.org/3/library/asyncio-sync.html#asyncio.Event.setX-tr$Xsmtplib.SMTP.send_messager $(jjXGhttp://docs.python.org/3/library/smtplib.html#smtplib.SMTP.send_messageX-tr!$Xbdb.Bdb.clear_all_breaksr"$(jjXBhttp://docs.python.org/3/library/bdb.html#bdb.Bdb.clear_all_breaksX-tr#$Xwebbrowser.controller.openr$$(jjXKhttp://docs.python.org/3/library/webbrowser.html#webbrowser.controller.openX-tr%$X%tkinter.tix.tixCommand.tix_option_getr&$(jjXWhttp://docs.python.org/3/library/tkinter.tix.html#tkinter.tix.tixCommand.tix_option_getX-tr'$X'configparser.ConfigParser.remove_optionr($(jjXZhttp://docs.python.org/3/library/configparser.html#configparser.ConfigParser.remove_optionX-tr)$Xselectors.EpollSelector.filenor*$(jjXNhttp://docs.python.org/3/library/selectors.html#selectors.EpollSelector.filenoX-tr+$Xio.IOBase.readabler,$(jjX;http://docs.python.org/3/library/io.html#io.IOBase.readableX-tr-$X2http.cookiejar.DefaultCookiePolicy.allowed_domainsr.$(jjXghttp://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.DefaultCookiePolicy.allowed_domainsX-tr/$X!decimal.Decimal.to_integral_exactr0$(jjXOhttp://docs.python.org/3/library/decimal.html#decimal.Decimal.to_integral_exactX-tr1$Xset.intersection_updater2$(jjXFhttp://docs.python.org/3/library/stdtypes.html#set.intersection_updateX-tr3$Xbdb.Bdb.set_returnr4$(jjX<http://docs.python.org/3/library/bdb.html#bdb.Bdb.set_returnX-tr5$X)http.server.CGIHTTPRequestHandler.do_POSTr6$(jjX[http://docs.python.org/3/library/http.server.html#http.server.CGIHTTPRequestHandler.do_POSTX-tr7$X$asyncio.WriteTransport.can_write_eofr8$(jjX[http://docs.python.org/3/library/asyncio-protocol.html#asyncio.WriteTransport.can_write_eofX-tr9$Xsunau.AU_write.closer:$(jjX@http://docs.python.org/3/library/sunau.html#sunau.AU_write.closeX-tr;$Xcsv.csvreader.__next__r<$(jjX@http://docs.python.org/3/library/csv.html#csv.csvreader.__next__X-tr=$Xset.differencer>$(jjX=http://docs.python.org/3/library/stdtypes.html#set.differenceX-tr?$X#trace.CoverageResults.write_resultsr@$(jjXOhttp://docs.python.org/3/library/trace.html#trace.CoverageResults.write_resultsX-trA$X importlib.abc.Loader.module_reprrB$(jjXPhttp://docs.python.org/3/library/importlib.html#importlib.abc.Loader.module_reprX-trC$Xformatter.formatter.push_stylerD$(jjXNhttp://docs.python.org/3/library/formatter.html#formatter.formatter.push_styleX-trE$Xxdrlib.Unpacker.unpack_arrayrF$(jjXIhttp://docs.python.org/3/library/xdrlib.html#xdrlib.Unpacker.unpack_arrayX-trG$X"xml.sax.handler.ErrorHandler.errorrH$(jjXXhttp://docs.python.org/3/library/xml.sax.handler.html#xml.sax.handler.ErrorHandler.errorX-trI$Xasyncio.BaseEventLoop.call_atrJ$(jjXUhttp://docs.python.org/3/library/asyncio-eventloop.html#asyncio.BaseEventLoop.call_atX-trK$Xssl.SSLContext.cert_store_statsrL$(jjXIhttp://docs.python.org/3/library/ssl.html#ssl.SSLContext.cert_store_statsX-trM$X)logging.handlers.SocketHandler.makePicklerN$(jjX`http://docs.python.org/3/library/logging.handlers.html#logging.handlers.SocketHandler.makePickleX-trO$Xtkinter.ttk.Treeview.bboxrP$(jjXKhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.bboxX-trQ$X$asyncio.BaseProtocol.connection_lostrR$(jjX[http://docs.python.org/3/library/asyncio-protocol.html#asyncio.BaseProtocol.connection_lostX-trS$X.xml.parsers.expat.xmlparser.AttlistDeclHandlerrT$(jjX\http://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.xmlparser.AttlistDeclHandlerX-trU$X*xml.etree.ElementTree.ElementTree.iterfindrV$(jjXfhttp://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.ElementTree.iterfindX-trW$Xlogging.Logger.hasHandlersrX$(jjXHhttp://docs.python.org/3/library/logging.html#logging.Logger.hasHandlersX-trY$Xbdb.Bdb.set_untilrZ$(jjX;http://docs.python.org/3/library/bdb.html#bdb.Bdb.set_untilX-tr[$Xdecimal.Context.next_minusr\$(jjXHhttp://docs.python.org/3/library/decimal.html#decimal.Context.next_minusX-tr]$Xdecimal.Decimal.fmar^$(jjXAhttp://docs.python.org/3/library/decimal.html#decimal.Decimal.fmaX-tr_$Xprofile.Profile.disabler`$(jjXEhttp://docs.python.org/3/library/profile.html#profile.Profile.disableX-tra$X&unittest.TestCase.assertMultiLineEqualrb$(jjXUhttp://docs.python.org/3/library/unittest.html#unittest.TestCase.assertMultiLineEqualX-trc$X$unittest.TestCase.assertGreaterEqualrd$(jjXShttp://docs.python.org/3/library/unittest.html#unittest.TestCase.assertGreaterEqualX-tre$Xdecimal.Context.minrf$(jjXAhttp://docs.python.org/3/library/decimal.html#decimal.Context.minX-trg$Xsqlite3.Connection.cursorrh$(jjXGhttp://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.cursorX-tri$X'email.message.EmailMessage.make_relatedrj$(jjXbhttp://docs.python.org/3/library/email.contentmanager.html#email.message.EmailMessage.make_relatedX-trk$Xsymtable.Symbol.get_namespacerl$(jjXLhttp://docs.python.org/3/library/symtable.html#symtable.Symbol.get_namespaceX-trm$X)distutils.fancy_getopt.FancyGetopt.getoptrn$(jjXXhttp://docs.python.org/3/distutils/apiref.html#distutils.fancy_getopt.FancyGetopt.getoptX-tro$X,multiprocessing.managers.BaseManager.connectrp$(jjXbhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.managers.BaseManager.connectX-trq$Xemail.policy.Compat32.foldrr$(jjXMhttp://docs.python.org/3/library/email.policy.html#email.policy.Compat32.foldX-trs$X'xml.etree.ElementTree.ElementTree.parsert$(jjXchttp://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.ElementTree.parseX-tru$X)xml.sax.xmlreader.IncrementalParser.resetrv$(jjX^http://docs.python.org/3/library/xml.sax.reader.html#xml.sax.xmlreader.IncrementalParser.resetX-trw$Xdatetime.datetime.timerx$(jjXEhttp://docs.python.org/3/library/datetime.html#datetime.datetime.timeX-try$X!weakref.WeakKeyDictionary.keyrefsrz$(jjXOhttp://docs.python.org/3/library/weakref.html#weakref.WeakKeyDictionary.keyrefsX-tr{$Xunittest.TestResult.addErrorr|$(jjXKhttp://docs.python.org/3/library/unittest.html#unittest.TestResult.addErrorX-tr}$Xmmap.mmap.read_byter~$(jjX>http://docs.python.org/3/library/mmap.html#mmap.mmap.read_byteX-tr$Xemail.message.Message.get_paramr$(jjXShttp://docs.python.org/3/library/email.message.html#email.message.Message.get_paramX-tr$Xdatetime.datetime.replacer$(jjXHhttp://docs.python.org/3/library/datetime.html#datetime.datetime.replaceX-tr$X!mailbox.MaildirMessage.get_subdirr$(jjXOhttp://docs.python.org/3/library/mailbox.html#mailbox.MaildirMessage.get_subdirX-tr$X(asyncio.BaseEventLoop.connect_write_piper$(jjX`http://docs.python.org/3/library/asyncio-eventloop.html#asyncio.BaseEventLoop.connect_write_pipeX-tr$Xbdb.Bdb.do_clearr$(jjX:http://docs.python.org/3/library/bdb.html#bdb.Bdb.do_clearX-tr$X object.__ne__r$(jjX?http://docs.python.org/3/reference/datamodel.html#object.__ne__X-tr$Xpathlib.Path.is_char_devicer$(jjXIhttp://docs.python.org/3/library/pathlib.html#pathlib.Path.is_char_deviceX-tr$Xlogging.Logger.isEnabledForr$(jjXIhttp://docs.python.org/3/library/logging.html#logging.Logger.isEnabledForX-tr$X%unittest.mock.Mock.assert_called_withr$(jjXYhttp://docs.python.org/3/library/unittest.mock.html#unittest.mock.Mock.assert_called_withX-tr$Xmailbox.Maildir.__setitem__r$(jjXIhttp://docs.python.org/3/library/mailbox.html#mailbox.Maildir.__setitem__X-tr$Xobject.__radd__r$(jjXAhttp://docs.python.org/3/reference/datamodel.html#object.__radd__X-tr$X1distutils.ccompiler.CCompiler.executable_filenamer$(jjX`http://docs.python.org/3/distutils/apiref.html#distutils.ccompiler.CCompiler.executable_filenameX-tr$Xdecimal.Decimal.lnr$(jjX@http://docs.python.org/3/library/decimal.html#decimal.Decimal.lnX-tr$Xssl.SSLSocket.compressionr$(jjXChttp://docs.python.org/3/library/ssl.html#ssl.SSLSocket.compressionX-tr$Xstr.rpartitionr$(jjX=http://docs.python.org/3/library/stdtypes.html#str.rpartitionX-tr$X%importlib.abc.SourceLoader.is_packager$(jjXUhttp://docs.python.org/3/library/importlib.html#importlib.abc.SourceLoader.is_packageX-tr$X8distutils.ccompiler.CCompiler.runtime_library_dir_optionr$(jjXghttp://docs.python.org/3/distutils/apiref.html#distutils.ccompiler.CCompiler.runtime_library_dir_optionX-tr$Xtkinter.ttk.Progressbar.stepr$(jjXNhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Progressbar.stepX-tr$Xasyncio.Handle.cancelr$(jjXMhttp://docs.python.org/3/library/asyncio-eventloop.html#asyncio.Handle.cancelX-tr$Xcurses.window.echocharr$(jjXChttp://docs.python.org/3/library/curses.html#curses.window.echocharX-tr$Xio.BufferedReader.read1r$(jjX@http://docs.python.org/3/library/io.html#io.BufferedReader.read1X-tr$X#xml.parsers.expat.xmlparser.GetBaser$(jjXQhttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.xmlparser.GetBaseX-tr$Xformatter.formatter.push_fontr$(jjXMhttp://docs.python.org/3/library/formatter.html#formatter.formatter.push_fontX-tr$Xthreading.Condition.releaser$(jjXKhttp://docs.python.org/3/library/threading.html#threading.Condition.releaseX-tr$X%configparser.ConfigParser.read_stringr$(jjXXhttp://docs.python.org/3/library/configparser.html#configparser.ConfigParser.read_stringX-tr$X,distutils.ccompiler.CCompiler.library_optionr$(jjX[http://docs.python.org/3/distutils/apiref.html#distutils.ccompiler.CCompiler.library_optionX-tr$X&optparse.OptionParser.get_option_groupr$(jjXUhttp://docs.python.org/3/library/optparse.html#optparse.OptionParser.get_option_groupX-tr$Xmailbox.MH.__delitem__r$(jjXDhttp://docs.python.org/3/library/mailbox.html#mailbox.MH.__delitem__X-tr$Xmailbox.Mailbox.lockr$(jjXBhttp://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.lockX-tr$X%ossaudiodev.oss_audio_device.obuffreer$(jjXWhttp://docs.python.org/3/library/ossaudiodev.html#ossaudiodev.oss_audio_device.obuffreeX-tr$Xcurses.window.inchr$(jjX?http://docs.python.org/3/library/curses.html#curses.window.inchX-tr$Xdecimal.Context.logical_orr$(jjXHhttp://docs.python.org/3/library/decimal.html#decimal.Context.logical_orX-tr$X*msilib.SummaryInformation.GetPropertyCountr$(jjXWhttp://docs.python.org/3/library/msilib.html#msilib.SummaryInformation.GetPropertyCountX-tr$X&logging.handlers.BufferingHandler.emitr$(jjX]http://docs.python.org/3/library/logging.handlers.html#logging.handlers.BufferingHandler.emitX-tr$X"collections.somenamedtuple._asdictr$(jjXThttp://docs.python.org/3/library/collections.html#collections.somenamedtuple._asdictX-tr$X%tkinter.tix.tixCommand.tix_filedialogr$(jjXWhttp://docs.python.org/3/library/tkinter.tix.html#tkinter.tix.tixCommand.tix_filedialogX-tr$Xcurses.window.insdellnr$(jjXChttp://docs.python.org/3/library/curses.html#curses.window.insdellnX-tr$Xbdb.Bdb.stop_herer$(jjX;http://docs.python.org/3/library/bdb.html#bdb.Bdb.stop_hereX-tr$X&argparse.ArgumentParser.add_subparsersr$(jjXUhttp://docs.python.org/3/library/argparse.html#argparse.ArgumentParser.add_subparsersX-tr$Xsocket.socket.ioctlr$(jjX@http://docs.python.org/3/library/socket.html#socket.socket.ioctlX-tr$Xaifc.aifc.setposr$(jjX;http://docs.python.org/3/library/aifc.html#aifc.aifc.setposX-tr$Xmsilib.Dialog.pushbuttonr$(jjXEhttp://docs.python.org/3/library/msilib.html#msilib.Dialog.pushbuttonX-tr$Xmsilib.View.GetColumnInfor$(jjXFhttp://docs.python.org/3/library/msilib.html#msilib.View.GetColumnInfoX-tr$Xcollections.deque.extendleftr$(jjXNhttp://docs.python.org/3/library/collections.html#collections.deque.extendleftX-tr$Xdecimal.Context.is_canonicalr$(jjXJhttp://docs.python.org/3/library/decimal.html#decimal.Context.is_canonicalX-tr$Xformatter.formatter.set_spacingr$(jjXOhttp://docs.python.org/3/library/formatter.html#formatter.formatter.set_spacingX-tr$X'xml.sax.xmlreader.XMLReader.setPropertyr$(jjX\http://docs.python.org/3/library/xml.sax.reader.html#xml.sax.xmlreader.XMLReader.setPropertyX-tr$X,asyncio.BaseEventLoop.call_exception_handlerr$(jjXdhttp://docs.python.org/3/library/asyncio-eventloop.html#asyncio.BaseEventLoop.call_exception_handlerX-tr$X'concurrent.futures.Future.set_exceptionr$(jjX`http://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.Future.set_exceptionX-tr$X*multiprocessing.managers.BaseProxy.__str__r$(jjX`http://docs.python.org/3/library/multiprocessing.html#multiprocessing.managers.BaseProxy.__str__X-tr$Xbdb.Bdb.get_file_breaksr$(jjXAhttp://docs.python.org/3/library/bdb.html#bdb.Bdb.get_file_breaksX-tr$X(asyncio.BaseEventLoop.add_signal_handlerr$(jjX`http://docs.python.org/3/library/asyncio-eventloop.html#asyncio.BaseEventLoop.add_signal_handlerX-tr$X)distutils.ccompiler.CCompiler.debug_printr$(jjXXhttp://docs.python.org/3/distutils/apiref.html#distutils.ccompiler.CCompiler.debug_printX-tr$Xprofile.Profile.print_statsr$(jjXIhttp://docs.python.org/3/library/profile.html#profile.Profile.print_statsX-tr$X object.__or__r$(jjX?http://docs.python.org/3/reference/datamodel.html#object.__or__X-tr$X$http.client.HTTPConnection.putheaderr$(jjXVhttp://docs.python.org/3/library/http.client.html#http.client.HTTPConnection.putheaderX-tr$X2importlib.machinery.ExtensionFileLoader.get_sourcer$(jjXbhttp://docs.python.org/3/library/importlib.html#importlib.machinery.ExtensionFileLoader.get_sourceX-tr$Xunittest.mock.Mock.reset_mockr$(jjXQhttp://docs.python.org/3/library/unittest.mock.html#unittest.mock.Mock.reset_mockX-tr$Xdatetime.datetime.weekdayr$(jjXHhttp://docs.python.org/3/library/datetime.html#datetime.datetime.weekdayX-tr$Xbdb.Bdb.get_breakr$(jjX;http://docs.python.org/3/library/bdb.html#bdb.Bdb.get_breakX-tr$X&email.message.Message.get_content_typer$(jjXZhttp://docs.python.org/3/library/email.message.html#email.message.Message.get_content_typeX-tr$X-distutils.ccompiler.CCompiler.detect_languager$(jjX\http://docs.python.org/3/distutils/apiref.html#distutils.ccompiler.CCompiler.detect_languageX-tr$Xasyncio.DatagramTransport.abortr$(jjXVhttp://docs.python.org/3/library/asyncio-protocol.html#asyncio.DatagramTransport.abortX-tr$Xtypes.MappingProxyType.copyr$(jjXGhttp://docs.python.org/3/library/types.html#types.MappingProxyType.copyX-tr$Xasyncio.Future.cancelledr%(jjXKhttp://docs.python.org/3/library/asyncio-task.html#asyncio.Future.cancelledX-tr%Xdatetime.time.utcoffsetr%(jjXFhttp://docs.python.org/3/library/datetime.html#datetime.time.utcoffsetX-tr%X*multiprocessing.managers.SyncManager.Valuer%(jjX`http://docs.python.org/3/library/multiprocessing.html#multiprocessing.managers.SyncManager.ValueX-tr%X!email.policy.Compat32.fold_binaryr%(jjXThttp://docs.python.org/3/library/email.policy.html#email.policy.Compat32.fold_binaryX-tr%X0urllib.request.HTTPErrorProcessor.https_responser%(jjXehttp://docs.python.org/3/library/urllib.request.html#urllib.request.HTTPErrorProcessor.https_responseX-tr %X#logging.handlers.SocketHandler.sendr %(jjXZhttp://docs.python.org/3/library/logging.handlers.html#logging.handlers.SocketHandler.sendX-tr %Xmailbox.Mailbox.valuesr %(jjXDhttp://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.valuesX-tr %Xdatetime.date.isocalendarr%(jjXHhttp://docs.python.org/3/library/datetime.html#datetime.date.isocalendarX-tr%X"contextlib.ExitStack.enter_contextr%(jjXShttp://docs.python.org/3/library/contextlib.html#contextlib.ExitStack.enter_contextX-tr%X#unittest.TestCase.assertAlmostEqualr%(jjXRhttp://docs.python.org/3/library/unittest.html#unittest.TestCase.assertAlmostEqualX-tr%Xxdrlib.Unpacker.doner%(jjXAhttp://docs.python.org/3/library/xdrlib.html#xdrlib.Unpacker.doneX-tr%Xzipfile.ZipFile.writestrr%(jjXFhttp://docs.python.org/3/library/zipfile.html#zipfile.ZipFile.writestrX-tr%X"asyncio.StreamReader.set_exceptionr%(jjXWhttp://docs.python.org/3/library/asyncio-stream.html#asyncio.StreamReader.set_exceptionX-tr%X6concurrent.futures.Future.set_running_or_notify_cancelr%(jjXohttp://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.Future.set_running_or_notify_cancelX-tr%X ossaudiodev.oss_mixer_device.getr%(jjXRhttp://docs.python.org/3/library/ossaudiodev.html#ossaudiodev.oss_mixer_device.getX-tr%Xasyncore.dispatcher.closer%(jjXHhttp://docs.python.org/3/library/asyncore.html#asyncore.dispatcher.closeX-tr%Xunittest.TestResult.stopTestRunr %(jjXNhttp://docs.python.org/3/library/unittest.html#unittest.TestResult.stopTestRunX-tr!%X*xml.parsers.expat.xmlparser.CommentHandlerr"%(jjXXhttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.xmlparser.CommentHandlerX-tr#%X mailbox.MaildirMessage.set_flagsr$%(jjXNhttp://docs.python.org/3/library/mailbox.html#mailbox.MaildirMessage.set_flagsX-tr%%Xxml.dom.Element.hasAttributeNSr&%(jjXLhttp://docs.python.org/3/library/xml.dom.html#xml.dom.Element.hasAttributeNSX-tr'%X*multiprocessing.Connection.recv_bytes_intor(%(jjX`http://docs.python.org/3/library/multiprocessing.html#multiprocessing.Connection.recv_bytes_intoX-tr)%X#http.cookiejar.CookieJar.set_cookier*%(jjXXhttp://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.CookieJar.set_cookieX-tr+%Xfloat.is_integerr,%(jjX?http://docs.python.org/3/library/stdtypes.html#float.is_integerX-tr-%Xcalendar.TextCalendar.prmonthr.%(jjXLhttp://docs.python.org/3/library/calendar.html#calendar.TextCalendar.prmonthX-tr/%Xio.BufferedIOBase.detachr0%(jjXAhttp://docs.python.org/3/library/io.html#io.BufferedIOBase.detachX-tr1%X.asyncio.BaseEventLoop.create_datagram_endpointr2%(jjXfhttp://docs.python.org/3/library/asyncio-eventloop.html#asyncio.BaseEventLoop.create_datagram_endpointX-tr3%X&asyncio.BaseEventLoop.subprocess_shellr4%(jjX_http://docs.python.org/3/library/asyncio-subprocess.html#asyncio.BaseEventLoop.subprocess_shellX-tr5%X%msilib.SummaryInformation.SetPropertyr6%(jjXRhttp://docs.python.org/3/library/msilib.html#msilib.SummaryInformation.SetPropertyX-tr7%Xxdrlib.Packer.pack_opaquer8%(jjXFhttp://docs.python.org/3/library/xdrlib.html#xdrlib.Packer.pack_opaqueX-tr9%X str.indexr:%(jjX8http://docs.python.org/3/library/stdtypes.html#str.indexX-tr;%X#asyncio.BaseEventLoop.remove_readerr<%(jjX[http://docs.python.org/3/library/asyncio-eventloop.html#asyncio.BaseEventLoop.remove_readerX-tr=%X"concurrent.futures.Executor.submitr>%(jjX[http://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.Executor.submitX-tr?%Xthreading.Lock.acquirer@%(jjXFhttp://docs.python.org/3/library/threading.html#threading.Lock.acquireX-trA%Xconcurrent.futures.Executor.maprB%(jjXXhttp://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.Executor.mapX-trC%Xasyncore.dispatcher.acceptrD%(jjXIhttp://docs.python.org/3/library/asyncore.html#asyncore.dispatcher.acceptX-trE%Xcurses.window.idcokrF%(jjX@http://docs.python.org/3/library/curses.html#curses.window.idcokX-trG%X*importlib.abc.ExecutionLoader.get_filenamerH%(jjXZhttp://docs.python.org/3/library/importlib.html#importlib.abc.ExecutionLoader.get_filenameX-trI%X"webbrowser.controller.open_new_tabrJ%(jjXShttp://docs.python.org/3/library/webbrowser.html#webbrowser.controller.open_new_tabX-trK%Xtkinter.ttk.Combobox.getrL%(jjXJhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Combobox.getX-trM%Xasyncio.BaseEventLoop.stoprN%(jjXRhttp://docs.python.org/3/library/asyncio-eventloop.html#asyncio.BaseEventLoop.stopX-trO%X set.issubsetrP%(jjX;http://docs.python.org/3/library/stdtypes.html#set.issubsetX-trQ%Xsched.scheduler.cancelrR%(jjXBhttp://docs.python.org/3/library/sched.html#sched.scheduler.cancelX-trS%X$xml.etree.ElementTree.Element.extendrT%(jjX`http://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element.extendX-trU%Xdecimal.Context.copy_negaterV%(jjXIhttp://docs.python.org/3/library/decimal.html#decimal.Context.copy_negateX-trW%X#asynchat.async_chat.close_when_donerX%(jjXRhttp://docs.python.org/3/library/asynchat.html#asynchat.async_chat.close_when_doneX-trY%X dict.updaterZ%(jjX:http://docs.python.org/3/library/stdtypes.html#dict.updateX-tr[%X*http.cookiejar.CookieJar.add_cookie_headerr\%(jjX_http://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.CookieJar.add_cookie_headerX-tr]%Xsocket.socket.listenr^%(jjXAhttp://docs.python.org/3/library/socket.html#socket.socket.listenX-tr_%Xtracemalloc.Snapshot.statisticsr`%(jjXQhttp://docs.python.org/3/library/tracemalloc.html#tracemalloc.Snapshot.statisticsX-tra%X!optparse.OptionParser.get_versionrb%(jjXPhttp://docs.python.org/3/library/optparse.html#optparse.OptionParser.get_versionX-trc%Xsymtable.Symbol.is_namespacerd%(jjXKhttp://docs.python.org/3/library/symtable.html#symtable.Symbol.is_namespaceX-tre%Xdatetime.datetime.tznamerf%(jjXGhttp://docs.python.org/3/library/datetime.html#datetime.datetime.tznameX-trg%X%tkinter.ttk.Treeview.selection_removerh%(jjXWhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.selection_removeX-tri%Xtkinter.ttk.Treeview.tag_bindrj%(jjXOhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.tag_bindX-trk%Xchunk.Chunk.isattyrl%(jjX>http://docs.python.org/3/library/chunk.html#chunk.Chunk.isattyX-trm%Xarray.array.extendrn%(jjX>http://docs.python.org/3/library/array.html#array.array.extendX-tro%Xmailbox.MH.discardrp%(jjX@http://docs.python.org/3/library/mailbox.html#mailbox.MH.discardX-trq%X#argparse.ArgumentParser.format_helprr%(jjXRhttp://docs.python.org/3/library/argparse.html#argparse.ArgumentParser.format_helpX-trs%X)code.InteractiveInterpreter.showtracebackrt%(jjXThttp://docs.python.org/3/library/code.html#code.InteractiveInterpreter.showtracebackX-tru%Xdecimal.Decimal.logical_xorrv%(jjXIhttp://docs.python.org/3/library/decimal.html#decimal.Decimal.logical_xorX-trw%Xipaddress.IPv6Network.supernetrx%(jjXNhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Network.supernetX-try%Xmailbox.Babyl.get_filerz%(jjXDhttp://docs.python.org/3/library/mailbox.html#mailbox.Babyl.get_fileX-tr{%Xdatetime.date.isoformatr|%(jjXFhttp://docs.python.org/3/library/datetime.html#datetime.date.isoformatX-tr}%X#calendar.Calendar.monthdayscalendarr~%(jjXRhttp://docs.python.org/3/library/calendar.html#calendar.Calendar.monthdayscalendarX-tr%X.asyncio.asyncio.subprocess.Process.communicater%(jjXghttp://docs.python.org/3/library/asyncio-subprocess.html#asyncio.asyncio.subprocess.Process.communicateX-tr%X!asyncore.dispatcher.create_socketr%(jjXPhttp://docs.python.org/3/library/asyncore.html#asyncore.dispatcher.create_socketX-tr%Xdecimal.Context.copyr%(jjXBhttp://docs.python.org/3/library/decimal.html#decimal.Context.copyX-tr%X#collections.somenamedtuple._replacer%(jjXUhttp://docs.python.org/3/library/collections.html#collections.somenamedtuple._replaceX-tr%Xobject.__divmod__r%(jjXChttp://docs.python.org/3/reference/datamodel.html#object.__divmod__X-tr%X#formatter.formatter.flush_softspacer%(jjXShttp://docs.python.org/3/library/formatter.html#formatter.formatter.flush_softspaceX-tr%Xfractions.Fraction.__floor__r%(jjXLhttp://docs.python.org/3/library/fractions.html#fractions.Fraction.__floor__X-tr%Xaifc.aifc.readframesr%(jjX?http://docs.python.org/3/library/aifc.html#aifc.aifc.readframesX-tr%X+email.message.EmailMessage.make_alternativer%(jjXfhttp://docs.python.org/3/library/email.contentmanager.html#email.message.EmailMessage.make_alternativeX-tr%X+email.policy.EmailPolicy.header_fetch_parser%(jjX^http://docs.python.org/3/library/email.policy.html#email.policy.EmailPolicy.header_fetch_parseX-tr%Xsqlite3.Connection.rollbackr%(jjXIhttp://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.rollbackX-tr%X1urllib.request.HTTPPasswordMgr.find_user_passwordr%(jjXfhttp://docs.python.org/3/library/urllib.request.html#urllib.request.HTTPPasswordMgr.find_user_passwordX-tr%Xcsv.Sniffer.has_headerr%(jjX@http://docs.python.org/3/library/csv.html#csv.Sniffer.has_headerX-tr%X unittest.TestCase.assertNotEqualr%(jjXOhttp://docs.python.org/3/library/unittest.html#unittest.TestCase.assertNotEqualX-tr%Xsymtable.SymbolTable.has_execr%(jjXLhttp://docs.python.org/3/library/symtable.html#symtable.SymbolTable.has_execX-tr%Xcurses.window.addstrr%(jjXAhttp://docs.python.org/3/library/curses.html#curses.window.addstrX-tr%Xlogging.Handler.handleErrorr%(jjXIhttp://docs.python.org/3/library/logging.html#logging.Handler.handleErrorX-tr%Xdecimal.Context.is_snanr%(jjXEhttp://docs.python.org/3/library/decimal.html#decimal.Context.is_snanX-tr%X-http.server.BaseHTTPRequestHandler.send_errorr%(jjX_http://docs.python.org/3/library/http.server.html#http.server.BaseHTTPRequestHandler.send_errorX-tr%X&xml.etree.ElementTree.Element.iterfindr%(jjXbhttp://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element.iterfindX-tr%Xmultiprocessing.Connection.recvr%(jjXUhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.Connection.recvX-tr%Xtkinter.ttk.Style.mapr%(jjXGhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Style.mapX-tr%Xdbm.gnu.gdbm.syncr%(jjX;http://docs.python.org/3/library/dbm.html#dbm.gnu.gdbm.syncX-tr%Xconfigparser.ConfigParser.writer%(jjXRhttp://docs.python.org/3/library/configparser.html#configparser.ConfigParser.writeX-tr%Xcurses.window.attrsetr%(jjXBhttp://docs.python.org/3/library/curses.html#curses.window.attrsetX-tr%Xobject.__irshift__r%(jjXDhttp://docs.python.org/3/reference/datamodel.html#object.__irshift__X-tr%Xdecimal.Decimal.is_canonicalr%(jjXJhttp://docs.python.org/3/library/decimal.html#decimal.Decimal.is_canonicalX-tr%X/importlib.machinery.SourceFileLoader.is_packager%(jjX_http://docs.python.org/3/library/importlib.html#importlib.machinery.SourceFileLoader.is_packageX-tr%Xmmap.mmap.seekr%(jjX9http://docs.python.org/3/library/mmap.html#mmap.mmap.seekX-tr%X!concurrent.futures.Future.runningr%(jjXZhttp://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.Future.runningX-tr%Xtimeit.Timer.print_excr%(jjXChttp://docs.python.org/3/library/timeit.html#timeit.Timer.print_excX-tr%X#asyncio.BaseEventLoop.remove_writerr%(jjX[http://docs.python.org/3/library/asyncio-eventloop.html#asyncio.BaseEventLoop.remove_writerX-tr%Xobject.__delattr__r%(jjXDhttp://docs.python.org/3/reference/datamodel.html#object.__delattr__X-tr%X.asyncio.AbstractEventLoopPolicy.get_event_loopr%(jjXfhttp://docs.python.org/3/library/asyncio-eventloop.html#asyncio.AbstractEventLoopPolicy.get_event_loopX-tr%Xiterator.__iter__r%(jjX@http://docs.python.org/3/library/stdtypes.html#iterator.__iter__X-tr%X%tkinter.ttk.Notebook.enable_traversalr%(jjXWhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Notebook.enable_traversalX-tr%X"html.parser.HTMLParser.handle_datar%(jjXThttp://docs.python.org/3/library/html.parser.html#html.parser.HTMLParser.handle_dataX-tr%Xzipfile.ZipFile.namelistr%(jjXFhttp://docs.python.org/3/library/zipfile.html#zipfile.ZipFile.namelistX-tr%X asyncore.dispatcher.handle_closer%(jjXOhttp://docs.python.org/3/library/asyncore.html#asyncore.dispatcher.handle_closeX-tr%X-distutils.ccompiler.CCompiler.add_include_dirr%(jjX\http://docs.python.org/3/distutils/apiref.html#distutils.ccompiler.CCompiler.add_include_dirX-tr%Xaifc.aifc.getmarkr%(jjX<http://docs.python.org/3/library/aifc.html#aifc.aifc.getmarkX-tr%Xemail.header.Header.__ne__r%(jjXMhttp://docs.python.org/3/library/email.header.html#email.header.Header.__ne__X-tr%X&asynchat.async_chat.push_with_producerr%(jjXUhttp://docs.python.org/3/library/asynchat.html#asynchat.async_chat.push_with_producerX-tr%Xlogging.Logger.logr%(jjX@http://docs.python.org/3/library/logging.html#logging.Logger.logX-tr%Xarray.array.remover%(jjX>http://docs.python.org/3/library/array.html#array.array.removeX-tr%X)http.server.BaseHTTPRequestHandler.handler%(jjX[http://docs.python.org/3/library/http.server.html#http.server.BaseHTTPRequestHandler.handleX-tr%Xemail.message.Message.get_allr%(jjXQhttp://docs.python.org/3/library/email.message.html#email.message.Message.get_allX-tr%X#email.charset.Charset.header_encoder%(jjXWhttp://docs.python.org/3/library/email.charset.html#email.charset.Charset.header_encodeX-tr%Xtarfile.TarInfo.isfiler%(jjXDhttp://docs.python.org/3/library/tarfile.html#tarfile.TarInfo.isfileX-tr%Xbdb.Bdb.format_stack_entryr%(jjXDhttp://docs.python.org/3/library/bdb.html#bdb.Bdb.format_stack_entryX-tr%X#ssl.SSLSocket.selected_npn_protocolr%(jjXMhttp://docs.python.org/3/library/ssl.html#ssl.SSLSocket.selected_npn_protocolX-tr%Xzlib.Compress.flushr%(jjX>http://docs.python.org/3/library/zlib.html#zlib.Compress.flushX-tr%X#urllib.request.Request.header_itemsr%(jjXXhttp://docs.python.org/3/library/urllib.request.html#urllib.request.Request.header_itemsX-tr%X*urllib.request.UnknownHandler.unknown_openr%(jjX_http://docs.python.org/3/library/urllib.request.html#urllib.request.UnknownHandler.unknown_openX-tr%Xdict.getr%(jjX7http://docs.python.org/3/library/stdtypes.html#dict.getX-tr%X#asyncio.ReadTransport.pause_readingr%(jjXZhttp://docs.python.org/3/library/asyncio-protocol.html#asyncio.ReadTransport.pause_readingX-tr%Xcurses.window.scrollr%(jjXAhttp://docs.python.org/3/library/curses.html#curses.window.scrollX-tr%Xtkinter.ttk.Notebook.forgetr%(jjXMhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Notebook.forgetX-tr%X email.contentmanager.get_contentr%(jjX[http://docs.python.org/3/library/email.contentmanager.html#email.contentmanager.get_contentX-tr%X"filecmp.dircmp.report_full_closurer%(jjXPhttp://docs.python.org/3/library/filecmp.html#filecmp.dircmp.report_full_closureX-tr%Xcurses.panel.Panel.replacer%(jjXMhttp://docs.python.org/3/library/curses.panel.html#curses.panel.Panel.replaceX-tr%X.http.server.BaseHTTPRequestHandler.log_messager%(jjX`http://docs.python.org/3/library/http.server.html#http.server.BaseHTTPRequestHandler.log_messageX-tr%Xobject.__and__r%(jjX@http://docs.python.org/3/reference/datamodel.html#object.__and__X-tr%X html.parser.HTMLParser.handle_pir%(jjXRhttp://docs.python.org/3/library/html.parser.html#html.parser.HTMLParser.handle_piX-tr%X&unittest.TestCase.assertNotAlmostEqualr&(jjXUhttp://docs.python.org/3/library/unittest.html#unittest.TestCase.assertNotAlmostEqualX-tr&X6http.cookiejar.DefaultCookiePolicy.set_allowed_domainsr&(jjXkhttp://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.DefaultCookiePolicy.set_allowed_domainsX-tr&Xpoplib.POP3.listr&(jjX=http://docs.python.org/3/library/poplib.html#poplib.POP3.listX-tr&X*multiprocessing.managers.SyncManager.Arrayr&(jjX`http://docs.python.org/3/library/multiprocessing.html#multiprocessing.managers.SyncManager.ArrayX-tr&Xpstats.Stats.dump_statsr&(jjXEhttp://docs.python.org/3/library/profile.html#pstats.Stats.dump_statsX-tr &Xipaddress.IPv4Network.hostsr &(jjXKhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Network.hostsX-tr &X0distutils.fancy_getopt.FancyGetopt.generate_helpr &(jjX_http://docs.python.org/3/distutils/apiref.html#distutils.fancy_getopt.FancyGetopt.generate_helpX-tr &Xstr.isidentifierr&(jjX?http://docs.python.org/3/library/stdtypes.html#str.isidentifierX-tr&Xpipes.Template.openr&(jjX?http://docs.python.org/3/library/pipes.html#pipes.Template.openX-tr&Xcsv.DictWriter.writeheaderr&(jjXDhttp://docs.python.org/3/library/csv.html#csv.DictWriter.writeheaderX-tr&Xwave.Wave_read.getnframesr&(jjXDhttp://docs.python.org/3/library/wave.html#wave.Wave_read.getnframesX-tr&X object.__gt__r&(jjX?http://docs.python.org/3/reference/datamodel.html#object.__gt__X-tr&Xcurses.window.syncupr&(jjXAhttp://docs.python.org/3/library/curses.html#curses.window.syncupX-tr&Xformatter.writer.new_marginr&(jjXKhttp://docs.python.org/3/library/formatter.html#formatter.writer.new_marginX-tr&Xasyncio.Queue.putr&(jjXDhttp://docs.python.org/3/library/asyncio-sync.html#asyncio.Queue.putX-tr&Xunittest.TestResult.addFailurer&(jjXMhttp://docs.python.org/3/library/unittest.html#unittest.TestResult.addFailureX-tr&X$email.generator.BytesGenerator.writer &(jjXZhttp://docs.python.org/3/library/email.generator.html#email.generator.BytesGenerator.writeX-tr!&Xdecimal.Context.fmar"&(jjXAhttp://docs.python.org/3/library/decimal.html#decimal.Context.fmaX-tr#&X,asyncio.BaseEventLoop.create_unix_connectionr$&(jjXdhttp://docs.python.org/3/library/asyncio-eventloop.html#asyncio.BaseEventLoop.create_unix_connectionX-tr%&X/xml.etree.ElementTree.XMLPullParser.read_eventsr&&(jjXkhttp://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.XMLPullParser.read_eventsX-tr'&X+http.server.SimpleHTTPRequestHandler.do_GETr(&(jjX]http://docs.python.org/3/library/http.server.html#http.server.SimpleHTTPRequestHandler.do_GETX-tr)&Xdecimal.Context.log10r*&(jjXChttp://docs.python.org/3/library/decimal.html#decimal.Context.log10X-tr+&Xio.StringIO.getvaluer,&(jjX=http://docs.python.org/3/library/io.html#io.StringIO.getvalueX-tr-&X+asyncio.BaseSubprocessTransport.send_signalr.&(jjXbhttp://docs.python.org/3/library/asyncio-protocol.html#asyncio.BaseSubprocessTransport.send_signalX-tr/&Xipaddress.IPv6Network.subnetsr0&(jjXMhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Network.subnetsX-tr1&Xaifc.aifc.getsampwidthr2&(jjXAhttp://docs.python.org/3/library/aifc.html#aifc.aifc.getsampwidthX-tr3&X1xml.sax.handler.ContentHandler.setDocumentLocatorr4&(jjXghttp://docs.python.org/3/library/xml.sax.handler.html#xml.sax.handler.ContentHandler.setDocumentLocatorX-tr5&X)asynchat.async_chat.collect_incoming_datar6&(jjXXhttp://docs.python.org/3/library/asynchat.html#asynchat.async_chat.collect_incoming_dataX-tr7&Xaifc.aifc.getparamsr8&(jjX>http://docs.python.org/3/library/aifc.html#aifc.aifc.getparamsX-tr9&Xhttp.client.HTTPResponse.filenor:&(jjXQhttp://docs.python.org/3/library/http.client.html#http.client.HTTPResponse.filenoX-tr;&X#importlib.abc.SourceLoader.set_datar<&(jjXShttp://docs.python.org/3/library/importlib.html#importlib.abc.SourceLoader.set_dataX-tr=&Xmmap.mmap.flushr>&(jjX:http://docs.python.org/3/library/mmap.html#mmap.mmap.flushX-tr?&Xtarfile.TarInfo.fromtarfiler@&(jjXIhttp://docs.python.org/3/library/tarfile.html#tarfile.TarInfo.fromtarfileX-trA&Xasyncio.Event.clearrB&(jjXFhttp://docs.python.org/3/library/asyncio-sync.html#asyncio.Event.clearX-trC&Xmailbox.Mailbox.__len__rD&(jjXEhttp://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.__len__X-trE&Xxml.dom.Element.setAttributeNSrF&(jjXLhttp://docs.python.org/3/library/xml.dom.html#xml.dom.Element.setAttributeNSX-trG&Xio.BytesIO.read1rH&(jjX9http://docs.python.org/3/library/io.html#io.BytesIO.read1X-trI&Xprofile.Profile.enablerJ&(jjXDhttp://docs.python.org/3/library/profile.html#profile.Profile.enableX-trK&X str.titlerL&(jjX8http://docs.python.org/3/library/stdtypes.html#str.titleX-trM&X!xml.parsers.expat.xmlparser.ParserN&(jjXOhttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.xmlparser.ParseX-trO&Xmimetypes.MimeTypes.guess_typerP&(jjXNhttp://docs.python.org/3/library/mimetypes.html#mimetypes.MimeTypes.guess_typeX-trQ&X asyncore.dispatcher.handle_errorrR&(jjXOhttp://docs.python.org/3/library/asyncore.html#asyncore.dispatcher.handle_errorX-trS&X str.isnumericrT&(jjX<http://docs.python.org/3/library/stdtypes.html#str.isnumericX-trU&X.multiprocessing.managers.SyncManager.SemaphorerV&(jjXdhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.managers.SyncManager.SemaphoreX-trW&Ximaplib.IMAP4.getquotarX&(jjXDhttp://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.getquotaX-trY&X3importlib.machinery.SourcelessFileLoader.is_packagerZ&(jjXchttp://docs.python.org/3/library/importlib.html#importlib.machinery.SourcelessFileLoader.is_packageX-tr[&Xarray.array.appendr\&(jjX>http://docs.python.org/3/library/array.html#array.array.appendX-tr]&Xsocket.socket.getsocknamer^&(jjXFhttp://docs.python.org/3/library/socket.html#socket.socket.getsocknameX-tr_&X&distutils.text_file.TextFile.readlinesr`&(jjXUhttp://docs.python.org/3/distutils/apiref.html#distutils.text_file.TextFile.readlinesX-tra&X!gettext.NullTranslations.ngettextrb&(jjXOhttp://docs.python.org/3/library/gettext.html#gettext.NullTranslations.ngettextX-trc&Xconfigparser.ConfigParser.getrd&(jjXPhttp://docs.python.org/3/library/configparser.html#configparser.ConfigParser.getX-tre&Xsocket.socket.getpeernamerf&(jjXFhttp://docs.python.org/3/library/socket.html#socket.socket.getpeernameX-trg&Xxdrlib.Packer.resetrh&(jjX@http://docs.python.org/3/library/xdrlib.html#xdrlib.Packer.resetX-tri&Xnntplib.NNTP.bodyrj&(jjX?http://docs.python.org/3/library/nntplib.html#nntplib.NNTP.bodyX-trk&Xtarfile.TarInfo.isdirrl&(jjXChttp://docs.python.org/3/library/tarfile.html#tarfile.TarInfo.isdirX-trm&Xpoplib.POP3.rsetrn&(jjX=http://docs.python.org/3/library/poplib.html#poplib.POP3.rsetX-tro&Xftplib.FTP.sendcmdrp&(jjX?http://docs.python.org/3/library/ftplib.html#ftplib.FTP.sendcmdX-trq&Xthreading.Thread.setNamerr&(jjXHhttp://docs.python.org/3/library/threading.html#threading.Thread.setNameX-trs&X xml.dom.minidom.Node.toprettyxmlrt&(jjXVhttp://docs.python.org/3/library/xml.dom.minidom.html#xml.dom.minidom.Node.toprettyxmlX-tru&X"argparse.ArgumentParser.parse_argsrv&(jjXQhttp://docs.python.org/3/library/argparse.html#argparse.ArgumentParser.parse_argsX-trw&Xtkinter.ttk.Style.layoutrx&(jjXJhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Style.layoutX-try&Xsmtplib.SMTP.connectrz&(jjXBhttp://docs.python.org/3/library/smtplib.html#smtplib.SMTP.connectX-tr{&Xasyncio.Protocol.eof_receivedr|&(jjXThttp://docs.python.org/3/library/asyncio-protocol.html#asyncio.Protocol.eof_receivedX-tr}&X mailbox.MaildirMessage.get_flagsr~&(jjXNhttp://docs.python.org/3/library/mailbox.html#mailbox.MaildirMessage.get_flagsX-tr&X%multiprocessing.pool.Pool.apply_asyncr&(jjX[http://docs.python.org/3/library/multiprocessing.html#multiprocessing.pool.Pool.apply_asyncX-tr&Xpathlib.Path.rglobr&(jjX@http://docs.python.org/3/library/pathlib.html#pathlib.Path.rglobX-tr&Xparser.ST.isexprr&(jjX=http://docs.python.org/3/library/parser.html#parser.ST.isexprX-tr&X$symtable.SymbolTable.has_import_starr&(jjXShttp://docs.python.org/3/library/symtable.html#symtable.SymbolTable.has_import_starX-tr&X#logging.handlers.SocketHandler.emitr&(jjXZhttp://docs.python.org/3/library/logging.handlers.html#logging.handlers.SocketHandler.emitX-tr&X%configparser.ConfigParser.add_sectionr&(jjXXhttp://docs.python.org/3/library/configparser.html#configparser.ConfigParser.add_sectionX-tr&Xobject.__len__r&(jjX@http://docs.python.org/3/reference/datamodel.html#object.__len__X-tr&Xzipfile.ZipFile.extractallr&(jjXHhttp://docs.python.org/3/library/zipfile.html#zipfile.ZipFile.extractallX-tr&Xmsilib.Record.SetIntegerr&(jjXEhttp://docs.python.org/3/library/msilib.html#msilib.Record.SetIntegerX-tr&Xzipfile.ZipFile.infolistr&(jjXFhttp://docs.python.org/3/library/zipfile.html#zipfile.ZipFile.infolistX-tr&Xwinreg.PyHKEY.__enter__r&(jjXDhttp://docs.python.org/3/library/winreg.html#winreg.PyHKEY.__enter__X-tr&Xasyncio.StreamWriter.write_eofr&(jjXShttp://docs.python.org/3/library/asyncio-stream.html#asyncio.StreamWriter.write_eofX-tr&Xbdb.Breakpoint.disabler&(jjX@http://docs.python.org/3/library/bdb.html#bdb.Breakpoint.disableX-tr&Xcode.InteractiveConsole.pushr&(jjXGhttp://docs.python.org/3/library/code.html#code.InteractiveConsole.pushX-tr&X#optparse.OptionParser.remove_optionr&(jjXRhttp://docs.python.org/3/library/optparse.html#optparse.OptionParser.remove_optionX-tr&X$email.message.Message.replace_headerr&(jjXXhttp://docs.python.org/3/library/email.message.html#email.message.Message.replace_headerX-tr&X.http.cookiejar.CookieJar.clear_session_cookiesr&(jjXchttp://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.CookieJar.clear_session_cookiesX-tr&Xxml.dom.Element.hasAttributer&(jjXJhttp://docs.python.org/3/library/xml.dom.html#xml.dom.Element.hasAttributeX-tr&Xmailbox.MH.flushr&(jjX>http://docs.python.org/3/library/mailbox.html#mailbox.MH.flushX-tr&Xcurses.window.instrr&(jjX@http://docs.python.org/3/library/curses.html#curses.window.instrX-tr&Xdatetime.time.dstr&(jjX@http://docs.python.org/3/library/datetime.html#datetime.time.dstX-tr&X5http.server.BaseHTTPRequestHandler.send_response_onlyr&(jjXghttp://docs.python.org/3/library/http.server.html#http.server.BaseHTTPRequestHandler.send_response_onlyX-tr&Xcsv.csvwriter.writerowsr&(jjXAhttp://docs.python.org/3/library/csv.html#csv.csvwriter.writerowsX-tr&Xnntplib.NNTP.statr&(jjX?http://docs.python.org/3/library/nntplib.html#nntplib.NNTP.statX-tr&Xdatetime.datetime.isoformatr&(jjXJhttp://docs.python.org/3/library/datetime.html#datetime.datetime.isoformatX-tr&X tkinter.ttk.Style.theme_settingsr&(jjXRhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Style.theme_settingsX-tr&Xselect.devpoll.unregisterr&(jjXFhttp://docs.python.org/3/library/select.html#select.devpoll.unregisterX-tr&Xselect.devpoll.closer&(jjXAhttp://docs.python.org/3/library/select.html#select.devpoll.closeX-tr&X!doctest.DocTestParser.get_doctestr&(jjXOhttp://docs.python.org/3/library/doctest.html#doctest.DocTestParser.get_doctestX-tr&X#http.cookiejar.CookieJar.set_policyr&(jjXXhttp://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.CookieJar.set_policyX-tr&X set.discardr&(jjX:http://docs.python.org/3/library/stdtypes.html#set.discardX-tr&X-http.cookiejar.DefaultCookiePolicy.is_blockedr&(jjXbhttp://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.DefaultCookiePolicy.is_blockedX-tr&X%importlib.abc.SourceLoader.get_sourcer&(jjXUhttp://docs.python.org/3/library/importlib.html#importlib.abc.SourceLoader.get_sourceX-tr&Xmsilib.Dialog.liner&(jjX?http://docs.python.org/3/library/msilib.html#msilib.Dialog.lineX-tr&X calendar.Calendar.itermonthdatesr&(jjXOhttp://docs.python.org/3/library/calendar.html#calendar.Calendar.itermonthdatesX-tr&Xcollections.Counter.elementsr&(jjXNhttp://docs.python.org/3/library/collections.html#collections.Counter.elementsX-tr&X)urllib.request.CacheFTPHandler.setTimeoutr&(jjX^http://docs.python.org/3/library/urllib.request.html#urllib.request.CacheFTPHandler.setTimeoutX-tr&X calendar.TextCalendar.formatyearr&(jjXOhttp://docs.python.org/3/library/calendar.html#calendar.TextCalendar.formatyearX-tr&Xaifc.aifc.getcomptyper&(jjX@http://docs.python.org/3/library/aifc.html#aifc.aifc.getcomptypeX-tr&Xmailbox.MH.get_sequencesr&(jjXFhttp://docs.python.org/3/library/mailbox.html#mailbox.MH.get_sequencesX-tr&Xtarfile.TarInfo.tobufr&(jjXChttp://docs.python.org/3/library/tarfile.html#tarfile.TarInfo.tobufX-tr&Xsocket.socket.sendmsgr&(jjXBhttp://docs.python.org/3/library/socket.html#socket.socket.sendmsgX-tr&Xjson.JSONEncoder.encoder&(jjXBhttp://docs.python.org/3/library/json.html#json.JSONEncoder.encodeX-tr&Xobject.__getnewargs__r&(jjXBhttp://docs.python.org/3/library/pickle.html#object.__getnewargs__X-tr&Xmmap.mmap.findr&(jjX9http://docs.python.org/3/library/mmap.html#mmap.mmap.findX-tr&X%weakref.WeakValueDictionary.valuerefsr&(jjXShttp://docs.python.org/3/library/weakref.html#weakref.WeakValueDictionary.valuerefsX-tr&XAxmlrpc.server.DocCGIXMLRPCRequestHandler.set_server_documentationr&(jjXuhttp://docs.python.org/3/library/xmlrpc.server.html#xmlrpc.server.DocCGIXMLRPCRequestHandler.set_server_documentationX-tr&Xpoplib.POP3.topr&(jjX<http://docs.python.org/3/library/poplib.html#poplib.POP3.topX-tr&Xmailbox.Mailbox.__contains__r&(jjXJhttp://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.__contains__X-tr&Xshlex.shlex.push_tokenr&(jjXBhttp://docs.python.org/3/library/shlex.html#shlex.shlex.push_tokenX-tr&Xbdb.Bdb.runcallr&(jjX9http://docs.python.org/3/library/bdb.html#bdb.Bdb.runcallX-tr&Xasyncio.Condition.lockedr&(jjXKhttp://docs.python.org/3/library/asyncio-sync.html#asyncio.Condition.lockedX-tr&Xtkinter.ttk.Widget.identifyr&(jjXMhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Widget.identifyX-tr&X.distutils.ccompiler.CCompiler.library_filenamer&(jjX]http://docs.python.org/3/distutils/apiref.html#distutils.ccompiler.CCompiler.library_filenameX-tr&X asyncio.BaseEventLoop.add_writerr&(jjXXhttp://docs.python.org/3/library/asyncio-eventloop.html#asyncio.BaseEventLoop.add_writerX-tr&Xdatetime.date.__str__r&(jjXDhttp://docs.python.org/3/library/datetime.html#datetime.date.__str__X-tr&X telnetlib.Telnet.read_very_eagerr&(jjXPhttp://docs.python.org/3/library/telnetlib.html#telnetlib.Telnet.read_very_eagerX-tr&Xsocket.socket.filenor&(jjXAhttp://docs.python.org/3/library/socket.html#socket.socket.filenoX-tr&Ximaplib.IMAP4.fetchr&(jjXAhttp://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.fetchX-tr&Xssl.SSLContext.get_ca_certsr&(jjXEhttp://docs.python.org/3/library/ssl.html#ssl.SSLContext.get_ca_certsX-tr&Xdecimal.Context.logical_xorr&(jjXIhttp://docs.python.org/3/library/decimal.html#decimal.Context.logical_xorX-tr&Xsocket.socket.closer&(jjX@http://docs.python.org/3/library/socket.html#socket.socket.closeX-tr&X+logging.handlers.BaseRotatingHandler.rotater&(jjXbhttp://docs.python.org/3/library/logging.handlers.html#logging.handlers.BaseRotatingHandler.rotateX-tr&Xtarfile.TarFile.extractr&(jjXEhttp://docs.python.org/3/library/tarfile.html#tarfile.TarFile.extractX-tr&Xtkinter.ttk.Style.theme_creater'(jjXPhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Style.theme_createX-tr'Xmultiprocessing.pool.Pool.applyr'(jjXUhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.pool.Pool.applyX-tr'X1doctest.DocTestRunner.report_unexpected_exceptionr'(jjX_http://docs.python.org/3/library/doctest.html#doctest.DocTestRunner.report_unexpected_exceptionX-tr'Xcurses.window.nodelayr'(jjXBhttp://docs.python.org/3/library/curses.html#curses.window.nodelayX-tr'Xsymtable.Symbol.is_assignedr'(jjXJhttp://docs.python.org/3/library/symtable.html#symtable.Symbol.is_assignedX-tr 'Xdecimal.Context.is_signedr '(jjXGhttp://docs.python.org/3/library/decimal.html#decimal.Context.is_signedX-tr 'Xselect.epoll.registerr '(jjXBhttp://docs.python.org/3/library/select.html#select.epoll.registerX-tr 'X#asyncio.Future.remove_done_callbackr'(jjXVhttp://docs.python.org/3/library/asyncio-task.html#asyncio.Future.remove_done_callbackX-tr'Xlogging.Logger.debugr'(jjXBhttp://docs.python.org/3/library/logging.html#logging.Logger.debugX-tr'X frame.clearr'(jjX=http://docs.python.org/3/reference/datamodel.html#frame.clearX-tr'Xpprint.PrettyPrinter.pformatr'(jjXIhttp://docs.python.org/3/library/pprint.html#pprint.PrettyPrinter.pformatX-tr'X)email.message.EmailMessage.add_attachmentr'(jjXdhttp://docs.python.org/3/library/email.contentmanager.html#email.message.EmailMessage.add_attachmentX-tr'X)wsgiref.handlers.BaseHandler.error_outputr'(jjXWhttp://docs.python.org/3/library/wsgiref.html#wsgiref.handlers.BaseHandler.error_outputX-tr'Xdecimal.Context.copy_decimalr'(jjXJhttp://docs.python.org/3/library/decimal.html#decimal.Context.copy_decimalX-tr'Xunittest.TestResult.addSubTestr'(jjXMhttp://docs.python.org/3/library/unittest.html#unittest.TestResult.addSubTestX-tr'Xdecimal.Context.comparer'(jjXEhttp://docs.python.org/3/library/decimal.html#decimal.Context.compareX-tr'Xmailbox.Mailbox.itemsr '(jjXChttp://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.itemsX-tr!'Xsubprocess.Popen.communicater"'(jjXMhttp://docs.python.org/3/library/subprocess.html#subprocess.Popen.communicateX-tr#'X$email.policy.EmailPolicy.fold_binaryr$'(jjXWhttp://docs.python.org/3/library/email.policy.html#email.policy.EmailPolicy.fold_binaryX-tr%'Xlogging.Logger.infor&'(jjXAhttp://docs.python.org/3/library/logging.html#logging.Logger.infoX-tr''Xxdrlib.Unpacker.unpack_doubler('(jjXJhttp://docs.python.org/3/library/xdrlib.html#xdrlib.Unpacker.unpack_doubleX-tr)'Xcurses.window.attronr*'(jjXAhttp://docs.python.org/3/library/curses.html#curses.window.attronX-tr+'Xio.IOBase.flushr,'(jjX8http://docs.python.org/3/library/io.html#io.IOBase.flushX-tr-'Xmailbox.mboxMessage.remove_flagr.'(jjXMhttp://docs.python.org/3/library/mailbox.html#mailbox.mboxMessage.remove_flagX-tr/'Xmsilib.View.Closer0'(jjX>http://docs.python.org/3/library/msilib.html#msilib.View.CloseX-tr1'X(urllib.robotparser.RobotFileParser.mtimer2'(jjXahttp://docs.python.org/3/library/urllib.robotparser.html#urllib.robotparser.RobotFileParser.mtimeX-tr3'X sqlite3.Connection.executescriptr4'(jjXNhttp://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.executescriptX-tr5'Xweakref.finalize.detachr6'(jjXEhttp://docs.python.org/3/library/weakref.html#weakref.finalize.detachX-tr7'X str.rsplitr8'(jjX9http://docs.python.org/3/library/stdtypes.html#str.rsplitX-tr9'X!asyncio.BaseEventLoop.getaddrinfor:'(jjXYhttp://docs.python.org/3/library/asyncio-eventloop.html#asyncio.BaseEventLoop.getaddrinfoX-tr;'X(email.message.EmailMessage.clear_contentr<'(jjXchttp://docs.python.org/3/library/email.contentmanager.html#email.message.EmailMessage.clear_contentX-tr='Xxml.dom.Document.createElementr>'(jjXLhttp://docs.python.org/3/library/xml.dom.html#xml.dom.Document.createElementX-tr?'Xdatetime.timezone.utcoffsetr@'(jjXJhttp://docs.python.org/3/library/datetime.html#datetime.timezone.utcoffsetX-trA'X re.regex.subnrB'(jjX6http://docs.python.org/3/library/re.html#re.regex.subnX-trC'Xdecimal.Decimal.number_classrD'(jjXJhttp://docs.python.org/3/library/decimal.html#decimal.Decimal.number_classX-trE'Xmailbox.Mailbox.popitemrF'(jjXEhttp://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.popitemX-trG'X)xml.etree.ElementTree.Element.getiteratorrH'(jjXehttp://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element.getiteratorX-trI'Xmultiprocessing.SimpleQueue.getrJ'(jjXUhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.SimpleQueue.getX-trK'X!calendar.HTMLCalendar.formatmonthrL'(jjXPhttp://docs.python.org/3/library/calendar.html#calendar.HTMLCalendar.formatmonthX-trM'Xtkinter.ttk.Treeview.parentrN'(jjXMhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.parentX-trO'X%ossaudiodev.oss_audio_device.nonblockrP'(jjXWhttp://docs.python.org/3/library/ossaudiodev.html#ossaudiodev.oss_audio_device.nonblockX-trQ'Xdbm.gnu.gdbm.firstkeyrR'(jjX?http://docs.python.org/3/library/dbm.html#dbm.gnu.gdbm.firstkeyX-trS'Xmmap.mmap.write_byterT'(jjX?http://docs.python.org/3/library/mmap.html#mmap.mmap.write_byteX-trU'X$formatter.formatter.add_flowing_datarV'(jjXThttp://docs.python.org/3/library/formatter.html#formatter.formatter.add_flowing_dataX-trW'Xasyncio.Condition.acquirerX'(jjXLhttp://docs.python.org/3/library/asyncio-sync.html#asyncio.Condition.acquireX-trY'Xsymtable.Class.get_methodsrZ'(jjXIhttp://docs.python.org/3/library/symtable.html#symtable.Class.get_methodsX-tr['Xobject.__getitem__r\'(jjXDhttp://docs.python.org/3/reference/datamodel.html#object.__getitem__X-tr]'X"email.message.Message.get_boundaryr^'(jjXVhttp://docs.python.org/3/library/email.message.html#email.message.Message.get_boundaryX-tr_'Xvenv.EnvBuilder.creater`'(jjXAhttp://docs.python.org/3/library/venv.html#venv.EnvBuilder.createX-tra'X0urllib.request.FancyURLopener.prompt_user_passwdrb'(jjXehttp://docs.python.org/3/library/urllib.request.html#urllib.request.FancyURLopener.prompt_user_passwdX-trc'X!email.charset.Charset.body_encoderd'(jjXUhttp://docs.python.org/3/library/email.charset.html#email.charset.Charset.body_encodeX-tre'Xcurses.window.is_linetouchedrf'(jjXIhttp://docs.python.org/3/library/curses.html#curses.window.is_linetouchedX-trg'Xmailbox.MH.get_filerh'(jjXAhttp://docs.python.org/3/library/mailbox.html#mailbox.MH.get_fileX-tri'Xthreading.Event.is_setrj'(jjXFhttp://docs.python.org/3/library/threading.html#threading.Event.is_setX-trk'Xtkinter.ttk.Notebook.addrl'(jjXJhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Notebook.addX-trm'Xxml.dom.Element.removeAttributern'(jjXMhttp://docs.python.org/3/library/xml.dom.html#xml.dom.Element.removeAttributeX-tro'Xbdb.Bdb.break_anywhererp'(jjX@http://docs.python.org/3/library/bdb.html#bdb.Bdb.break_anywhereX-trq'X.multiprocessing.managers.BaseProxy._callmethodrr'(jjXdhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.managers.BaseProxy._callmethodX-trs'Xctypes._CData.from_buffer_copyrt'(jjXKhttp://docs.python.org/3/library/ctypes.html#ctypes._CData.from_buffer_copyX-tru'X"gettext.NullTranslations.lngettextrv'(jjXPhttp://docs.python.org/3/library/gettext.html#gettext.NullTranslations.lngettextX-trw'X!symtable.SymbolTable.has_childrenrx'(jjXPhttp://docs.python.org/3/library/symtable.html#symtable.SymbolTable.has_childrenX-try'X,xml.sax.handler.EntityResolver.resolveEntityrz'(jjXbhttp://docs.python.org/3/library/xml.sax.handler.html#xml.sax.handler.EntityResolver.resolveEntityX-tr{'Xdbm.dumb.dumbdbm.syncr|'(jjX?http://docs.python.org/3/library/dbm.html#dbm.dumb.dumbdbm.syncX-tr}'Xunittest.TestSuite.debugr~'(jjXGhttp://docs.python.org/3/library/unittest.html#unittest.TestSuite.debugX-tr'X(xml.sax.xmlreader.IncrementalParser.feedr'(jjX]http://docs.python.org/3/library/xml.sax.reader.html#xml.sax.xmlreader.IncrementalParser.feedX-tr'Xasyncio.Event.waitr'(jjXEhttp://docs.python.org/3/library/asyncio-sync.html#asyncio.Event.waitX-tr'X!tkinter.ttk.Style.element_optionsr'(jjXShttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Style.element_optionsX-tr'Xnntplib.NNTP.dater'(jjX?http://docs.python.org/3/library/nntplib.html#nntplib.NNTP.dateX-tr'Xmultiprocessing.Queue.getr'(jjXOhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.Queue.getX-tr'Xpoplib.POP3.stlsr'(jjX=http://docs.python.org/3/library/poplib.html#poplib.POP3.stlsX-tr'X!asyncio.BaseEventLoop.sock_acceptr'(jjXYhttp://docs.python.org/3/library/asyncio-eventloop.html#asyncio.BaseEventLoop.sock_acceptX-tr'Xcurses.window.mvderwinr'(jjXChttp://docs.python.org/3/library/curses.html#curses.window.mvderwinX-tr'Xobject.__imod__r'(jjXAhttp://docs.python.org/3/reference/datamodel.html#object.__imod__X-tr'Xdecimal.Decimal.is_nanr'(jjXDhttp://docs.python.org/3/library/decimal.html#decimal.Decimal.is_nanX-tr'Xcurses.window.putwinr'(jjXAhttp://docs.python.org/3/library/curses.html#curses.window.putwinX-tr'X)multiprocessing.managers.SyncManager.dictr'(jjX_http://docs.python.org/3/library/multiprocessing.html#multiprocessing.managers.SyncManager.dictX-tr'X'logging.handlers.BufferingHandler.flushr'(jjX^http://docs.python.org/3/library/logging.handlers.html#logging.handlers.BufferingHandler.flushX-tr'Xobject.__getattr__r'(jjXDhttp://docs.python.org/3/reference/datamodel.html#object.__getattr__X-tr'X!email.message.Message.__getitem__r'(jjXUhttp://docs.python.org/3/library/email.message.html#email.message.Message.__getitem__X-tr'Xssl.SSLSocket.unwrapr'(jjX>http://docs.python.org/3/library/ssl.html#ssl.SSLSocket.unwrapX-tr'X0xmlrpc.client.ServerProxy.system.methodSignaturer'(jjXdhttp://docs.python.org/3/library/xmlrpc.client.html#xmlrpc.client.ServerProxy.system.methodSignatureX-tr'X"codecs.IncrementalEncoder.getstater'(jjXOhttp://docs.python.org/3/library/codecs.html#codecs.IncrementalEncoder.getstateX-tr'Xtarfile.TarFile.closer'(jjXChttp://docs.python.org/3/library/tarfile.html#tarfile.TarFile.closeX-tr'X#mailbox.BabylMessage.update_visibler'(jjXQhttp://docs.python.org/3/library/mailbox.html#mailbox.BabylMessage.update_visibleX-tr'X"urllib.request.OpenerDirector.openr'(jjXWhttp://docs.python.org/3/library/urllib.request.html#urllib.request.OpenerDirector.openX-tr'Xlogging.Formatter.formatr'(jjXFhttp://docs.python.org/3/library/logging.html#logging.Formatter.formatX-tr'Xdecimal.Context.addr'(jjXAhttp://docs.python.org/3/library/decimal.html#decimal.Context.addX-tr'Xnntplib.NNTP.ihaver'(jjX@http://docs.python.org/3/library/nntplib.html#nntplib.NNTP.ihaveX-tr'X3logging.handlers.NTEventLogHandler.getEventCategoryr'(jjXjhttp://docs.python.org/3/library/logging.handlers.html#logging.handlers.NTEventLogHandler.getEventCategoryX-tr'Xasyncio.StreamReader.feed_eofr'(jjXRhttp://docs.python.org/3/library/asyncio-stream.html#asyncio.StreamReader.feed_eofX-tr'X!formatter.formatter.pop_alignmentr'(jjXQhttp://docs.python.org/3/library/formatter.html#formatter.formatter.pop_alignmentX-tr'Xtkinter.ttk.Treeview.headingr'(jjXNhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.headingX-tr'X(configparser.ConfigParser.remove_sectionr'(jjX[http://docs.python.org/3/library/configparser.html#configparser.ConfigParser.remove_sectionX-tr'X/email.headerregistry.HeaderRegistry.__getitem__r'(jjXjhttp://docs.python.org/3/library/email.headerregistry.html#email.headerregistry.HeaderRegistry.__getitem__X-tr'X$multiprocessing.pool.AsyncResult.getr'(jjXZhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.pool.AsyncResult.getX-tr'Xmsilib.CAB.commitr'(jjX>http://docs.python.org/3/library/msilib.html#msilib.CAB.commitX-tr'X)email.policy.EmailPolicy.header_max_countr'(jjX\http://docs.python.org/3/library/email.policy.html#email.policy.EmailPolicy.header_max_countX-tr'Xdecimal.Decimal.same_quantumr'(jjXJhttp://docs.python.org/3/library/decimal.html#decimal.Decimal.same_quantumX-tr'X*wsgiref.handlers.BaseHandler.log_exceptionr'(jjXXhttp://docs.python.org/3/library/wsgiref.html#wsgiref.handlers.BaseHandler.log_exceptionX-tr'Xwave.Wave_write.setcomptyper'(jjXFhttp://docs.python.org/3/library/wave.html#wave.Wave_write.setcomptypeX-tr'X'distutils.ccompiler.CCompiler.move_filer'(jjXVhttp://docs.python.org/3/distutils/apiref.html#distutils.ccompiler.CCompiler.move_fileX-tr'X+concurrent.futures.Future.add_done_callbackr'(jjXdhttp://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.Future.add_done_callbackX-tr'Xsymtable.Symbol.get_namer'(jjXGhttp://docs.python.org/3/library/symtable.html#symtable.Symbol.get_nameX-tr'Xmailbox.MH.list_foldersr'(jjXEhttp://docs.python.org/3/library/mailbox.html#mailbox.MH.list_foldersX-tr'X2xml.parsers.expat.xmlparser.EndCdataSectionHandlerr'(jjX`http://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.xmlparser.EndCdataSectionHandlerX-tr'Xcollections.deque.reverser'(jjXKhttp://docs.python.org/3/library/collections.html#collections.deque.reverseX-tr'Xpipes.Template.prependr'(jjXBhttp://docs.python.org/3/library/pipes.html#pipes.Template.prependX-tr'Xtkinter.ttk.Treeview.deleter'(jjXMhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.deleteX-tr'Xtrace.Trace.resultsr'(jjX?http://docs.python.org/3/library/trace.html#trace.Trace.resultsX-tr'Xtelnetlib.Telnet.read_very_lazyr'(jjXOhttp://docs.python.org/3/library/telnetlib.html#telnetlib.Telnet.read_very_lazyX-tr'Xcurses.window.insstrr'(jjXAhttp://docs.python.org/3/library/curses.html#curses.window.insstrX-tr'Xlogging.Logger.removeHandlerr'(jjXJhttp://docs.python.org/3/library/logging.html#logging.Logger.removeHandlerX-tr'X$venv.EnvBuilder.create_configurationr'(jjXOhttp://docs.python.org/3/library/venv.html#venv.EnvBuilder.create_configurationX-tr'X%xml.parsers.expat.xmlparser.ParseFiler'(jjXShttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.xmlparser.ParseFileX-tr'Xio.TextIOBase.readliner'(jjX?http://docs.python.org/3/library/io.html#io.TextIOBase.readlineX-tr'X#socketserver.BaseServer.get_requestr'(jjXVhttp://docs.python.org/3/library/socketserver.html#socketserver.BaseServer.get_requestX-tr'Xunittest.TestResult.addSuccessr'(jjXMhttp://docs.python.org/3/library/unittest.html#unittest.TestResult.addSuccessX-tr'Xhttp.cookiejar.CookieJar.clearr'(jjXShttp://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.CookieJar.clearX-tr'Xxdrlib.Unpacker.unpack_fstringr'(jjXKhttp://docs.python.org/3/library/xdrlib.html#xdrlib.Unpacker.unpack_fstringX-tr'X,http.cookiejar.CookiePolicy.domain_return_okr'(jjXahttp://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.CookiePolicy.domain_return_okX-tr'Xbytearray.decoder'(jjX?http://docs.python.org/3/library/stdtypes.html#bytearray.decodeX-tr'X"tracemalloc.Snapshot.filter_tracesr'(jjXThttp://docs.python.org/3/library/tracemalloc.html#tracemalloc.Snapshot.filter_tracesX-tr'X/multiprocessing.managers.BaseManager.get_serverr'(jjXehttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.managers.BaseManager.get_serverX-tr'X&email.message.Message.set_default_typer'(jjXZhttp://docs.python.org/3/library/email.message.html#email.message.Message.set_default_typeX-tr'Xbdb.Bdb.user_exceptionr'(jjX@http://docs.python.org/3/library/bdb.html#bdb.Bdb.user_exceptionX-tr'Xtkinter.ttk.Treeview.columnr'(jjXMhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.columnX-tr'X$argparse.ArgumentParser.set_defaultsr'(jjXShttp://docs.python.org/3/library/argparse.html#argparse.ArgumentParser.set_defaultsX-tr'X(urllib.robotparser.RobotFileParser.parser'(jjXahttp://docs.python.org/3/library/urllib.robotparser.html#urllib.robotparser.RobotFileParser.parseX-tr'X ossaudiodev.oss_mixer_device.setr((jjXRhttp://docs.python.org/3/library/ossaudiodev.html#ossaudiodev.oss_mixer_device.setX-tr(Xthreading.Lock.releaser((jjXFhttp://docs.python.org/3/library/threading.html#threading.Lock.releaseX-tr(X.importlib.abc.MetaPathFinder.invalidate_cachesr((jjX^http://docs.python.org/3/library/importlib.html#importlib.abc.MetaPathFinder.invalidate_cachesX-tr(X str.partitionr((jjX<http://docs.python.org/3/library/stdtypes.html#str.partitionX-tr(X$importlib.abc.FileLoader.load_moduler((jjXThttp://docs.python.org/3/library/importlib.html#importlib.abc.FileLoader.load_moduleX-tr (Xmimetypes.MimeTypes.readr ((jjXHhttp://docs.python.org/3/library/mimetypes.html#mimetypes.MimeTypes.readX-tr (X.multiprocessing.managers.SyncManager.Namespacer ((jjXdhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.managers.SyncManager.NamespaceX-tr (Xsocket.socket.recvfromr((jjXChttp://docs.python.org/3/library/socket.html#socket.socket.recvfromX-tr(Xiterator.__next__r((jjX@http://docs.python.org/3/library/stdtypes.html#iterator.__next__X-tr(Xasyncio.StreamReader.feed_datar((jjXShttp://docs.python.org/3/library/asyncio-stream.html#asyncio.StreamReader.feed_dataX-tr(Ximaplib.IMAP4.openr((jjX@http://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.openX-tr(Xlogging.Handler.createLockr((jjXHhttp://docs.python.org/3/library/logging.html#logging.Handler.createLockX-tr(Xmsilib.View.Modifyr((jjX?http://docs.python.org/3/library/msilib.html#msilib.View.ModifyX-tr(Xdecimal.Context.remainderr((jjXGhttp://docs.python.org/3/library/decimal.html#decimal.Context.remainderX-tr(X4argparse.ArgumentParser.add_mutually_exclusive_groupr((jjXchttp://docs.python.org/3/library/argparse.html#argparse.ArgumentParser.add_mutually_exclusive_groupX-tr(X.distutils.ccompiler.CCompiler.set_library_dirsr((jjX]http://docs.python.org/3/distutils/apiref.html#distutils.ccompiler.CCompiler.set_library_dirsX-tr(X!sqlite3.Connection.set_authorizerr ((jjXOhttp://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.set_authorizerX-tr!(Xobject.__reduce__r"((jjX>http://docs.python.org/3/library/pickle.html#object.__reduce__X-tr#(Xcurses.window.is_wintouchedr$((jjXHhttp://docs.python.org/3/library/curses.html#curses.window.is_wintouchedX-tr%(X#asynchat.async_chat.discard_buffersr&((jjXRhttp://docs.python.org/3/library/asynchat.html#asynchat.async_chat.discard_buffersX-tr'(Xobject.__reversed__r(((jjXEhttp://docs.python.org/3/reference/datamodel.html#object.__reversed__X-tr)(Xvenv.EnvBuilder.install_scriptsr*((jjXJhttp://docs.python.org/3/library/venv.html#venv.EnvBuilder.install_scriptsX-tr+(X'xml.etree.ElementTree.ElementTree.writer,((jjXchttp://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.ElementTree.writeX-tr-(Xtkinter.ttk.Notebook.tabr.((jjXJhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Notebook.tabX-tr/(Xcontextlib.ExitStack.pop_allr0((jjXMhttp://docs.python.org/3/library/contextlib.html#contextlib.ExitStack.pop_allX-tr1(X!mailbox.MaildirMessage.set_subdirr2((jjXOhttp://docs.python.org/3/library/mailbox.html#mailbox.MaildirMessage.set_subdirX-tr3(Xmailbox.Maildir.lockr4((jjXBhttp://docs.python.org/3/library/mailbox.html#mailbox.Maildir.lockX-tr5(Xsunau.AU_write.tellr6((jjX?http://docs.python.org/3/library/sunau.html#sunau.AU_write.tellX-tr7(X&importlib.abc.MetaPathFinder.find_specr8((jjXVhttp://docs.python.org/3/library/importlib.html#importlib.abc.MetaPathFinder.find_specX-tr9(Xio.IOBase.writabler:((jjX;http://docs.python.org/3/library/io.html#io.IOBase.writableX-tr;(Xstr.startswithr<((jjX=http://docs.python.org/3/library/stdtypes.html#str.startswithX-tr=(X4importlib.machinery.SourcelessFileLoader.load_moduler>((jjXdhttp://docs.python.org/3/library/importlib.html#importlib.machinery.SourcelessFileLoader.load_moduleX-tr?(Xssl.SSLSocket.getpeercertr@((jjXChttp://docs.python.org/3/library/ssl.html#ssl.SSLSocket.getpeercertX-trA(Xthreading.Thread.joinrB((jjXEhttp://docs.python.org/3/library/threading.html#threading.Thread.joinX-trC(Xtkinter.ttk.Treeview.focusrD((jjXLhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.focusX-trE(Xcurses.window.moverF((jjX?http://docs.python.org/3/library/curses.html#curses.window.moveX-trG(Xxmlrpc.client.Binary.encoderH((jjXOhttp://docs.python.org/3/library/xmlrpc.client.html#xmlrpc.client.Binary.encodeX-trI(Xdecimal.Context.multiplyrJ((jjXFhttp://docs.python.org/3/library/decimal.html#decimal.Context.multiplyX-trK(Xemail.message.Message.as_bytesrL((jjXRhttp://docs.python.org/3/library/email.message.html#email.message.Message.as_bytesX-trM(Xsymtable.Symbol.is_localrN((jjXGhttp://docs.python.org/3/library/symtable.html#symtable.Symbol.is_localX-trO(Xxml.dom.Node.hasChildNodesrP((jjXHhttp://docs.python.org/3/library/xml.dom.html#xml.dom.Node.hasChildNodesX-trQ(Xparser.ST.tolistrR((jjX=http://docs.python.org/3/library/parser.html#parser.ST.tolistX-trS(X/optparse.OptionParser.disable_interspersed_argsrT((jjX^http://docs.python.org/3/library/optparse.html#optparse.OptionParser.disable_interspersed_argsX-trU(X"formatter.formatter.add_label_datarV((jjXRhttp://docs.python.org/3/library/formatter.html#formatter.formatter.add_label_dataX-trW(Xchunk.Chunk.tellrX((jjX<http://docs.python.org/3/library/chunk.html#chunk.Chunk.tellX-trY(Xsubprocess.Popen.send_signalrZ((jjXMhttp://docs.python.org/3/library/subprocess.html#subprocess.Popen.send_signalX-tr[(X set.remover\((jjX9http://docs.python.org/3/library/stdtypes.html#set.removeX-tr](X"tkinter.ttk.Treeview.selection_addr^((jjXThttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.selection_addX-tr_(Xcgi.FieldStorage.getlistr`((jjXBhttp://docs.python.org/3/library/cgi.html#cgi.FieldStorage.getlistX-tra(Xmailbox.MMDFMessage.set_flagsrb((jjXKhttp://docs.python.org/3/library/mailbox.html#mailbox.MMDFMessage.set_flagsX-trc(Ximaplib.IMAP4.subscriberd((jjXEhttp://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.subscribeX-tre(Xtkinter.ttk.Notebook.insertrf((jjXMhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Notebook.insertX-trg(X/asyncio.BaseEventLoop.default_exception_handlerrh((jjXghttp://docs.python.org/3/library/asyncio-eventloop.html#asyncio.BaseEventLoop.default_exception_handlerX-tri(Xcurses.panel.Panel.set_userptrrj((jjXQhttp://docs.python.org/3/library/curses.panel.html#curses.panel.Panel.set_userptrX-trk(Xpathlib.Path.lchmodrl((jjXAhttp://docs.python.org/3/library/pathlib.html#pathlib.Path.lchmodX-trm(X.xmlrpc.server.DocXMLRPCServer.set_server_titlern((jjXbhttp://docs.python.org/3/library/xmlrpc.server.html#xmlrpc.server.DocXMLRPCServer.set_server_titleX-tro(X'tkinter.tix.tixCommand.tix_resetoptionsrp((jjXYhttp://docs.python.org/3/library/tkinter.tix.html#tkinter.tix.tixCommand.tix_resetoptionsX-trq(Xasyncio.Semaphore.acquirerr((jjXLhttp://docs.python.org/3/library/asyncio-sync.html#asyncio.Semaphore.acquireX-trs(X6logging.handlers.BaseRotatingHandler.rotation_filenamert((jjXmhttp://docs.python.org/3/library/logging.handlers.html#logging.handlers.BaseRotatingHandler.rotation_filenameX-tru(X0xml.sax.xmlreader.InputSource.setCharacterStreamrv((jjXehttp://docs.python.org/3/library/xml.sax.reader.html#xml.sax.xmlreader.InputSource.setCharacterStreamX-trw(Ximaplib.IMAP4.uidrx((jjX?http://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.uidX-try(Xpathlib.PurePath.relative_torz((jjXJhttp://docs.python.org/3/library/pathlib.html#pathlib.PurePath.relative_toX-tr{(Xdecimal.Context.expr|((jjXAhttp://docs.python.org/3/library/decimal.html#decimal.Context.expX-tr}(Xcurses.window.syncokr~((jjXAhttp://docs.python.org/3/library/curses.html#curses.window.syncokX-tr(X8xml.parsers.expat.xmlparser.ProcessingInstructionHandlerr((jjXfhttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.xmlparser.ProcessingInstructionHandlerX-tr(X&socketserver.BaseServer.finish_requestr((jjXYhttp://docs.python.org/3/library/socketserver.html#socketserver.BaseServer.finish_requestX-tr(X)xml.sax.xmlreader.InputSource.getSystemIdr((jjX^http://docs.python.org/3/library/xml.sax.reader.html#xml.sax.xmlreader.InputSource.getSystemIdX-tr(Xsocket.socket.recvmsgr((jjXBhttp://docs.python.org/3/library/socket.html#socket.socket.recvmsgX-tr(Xxml.dom.Node.insertBeforer((jjXGhttp://docs.python.org/3/library/xml.dom.html#xml.dom.Node.insertBeforeX-tr(Xdecimal.Decimal.to_eng_stringr((jjXKhttp://docs.python.org/3/library/decimal.html#decimal.Decimal.to_eng_stringX-tr(Xasyncio.Queue.qsizer((jjXFhttp://docs.python.org/3/library/asyncio-sync.html#asyncio.Queue.qsizeX-tr(X object.__ge__r((jjX?http://docs.python.org/3/reference/datamodel.html#object.__ge__X-tr(X&email.generator.BytesGenerator.flattenr((jjX\http://docs.python.org/3/library/email.generator.html#email.generator.BytesGenerator.flattenX-tr(X%sqlite3.Connection.set_trace_callbackr((jjXShttp://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.set_trace_callbackX-tr(Xwinreg.PyHKEY.__exit__r((jjXChttp://docs.python.org/3/library/winreg.html#winreg.PyHKEY.__exit__X-tr(Xio.IOBase.seekabler((jjX;http://docs.python.org/3/library/io.html#io.IOBase.seekableX-tr(Xbdb.Bdb.trace_dispatchr((jjX@http://docs.python.org/3/library/bdb.html#bdb.Bdb.trace_dispatchX-tr(X"symtable.Symbol.is_declared_globalr((jjXQhttp://docs.python.org/3/library/symtable.html#symtable.Symbol.is_declared_globalX-tr(X&email.policy.Policy.header_store_parser((jjXYhttp://docs.python.org/3/library/email.policy.html#email.policy.Policy.header_store_parseX-tr(X)xml.sax.xmlreader.IncrementalParser.closer((jjX^http://docs.python.org/3/library/xml.sax.reader.html#xml.sax.xmlreader.IncrementalParser.closeX-tr(Xcurses.panel.Panel.hider((jjXJhttp://docs.python.org/3/library/curses.panel.html#curses.panel.Panel.hideX-tr(Xcollections.Counter.subtractr((jjXNhttp://docs.python.org/3/library/collections.html#collections.Counter.subtractX-tr(Xstr.format_mapr((jjX=http://docs.python.org/3/library/stdtypes.html#str.format_mapX-tr(X email.message.Message.get_paramsr((jjXThttp://docs.python.org/3/library/email.message.html#email.message.Message.get_paramsX-tr(Xunittest.TestResult.stopr((jjXGhttp://docs.python.org/3/library/unittest.html#unittest.TestResult.stopX-tr(Xclass.__instancecheck__r((jjXIhttp://docs.python.org/3/reference/datamodel.html#class.__instancecheck__X-tr(Xobject.__floordiv__r((jjXEhttp://docs.python.org/3/reference/datamodel.html#object.__floordiv__X-tr(X$ssl.SSLContext.load_verify_locationsr((jjXNhttp://docs.python.org/3/library/ssl.html#ssl.SSLContext.load_verify_locationsX-tr(Xlogging.Formatter.formatTimer((jjXJhttp://docs.python.org/3/library/logging.html#logging.Formatter.formatTimeX-tr(Xobject.__rrshift__r((jjXDhttp://docs.python.org/3/reference/datamodel.html#object.__rrshift__X-tr(X%unittest.TestCase.assertNotIsInstancer((jjXThttp://docs.python.org/3/library/unittest.html#unittest.TestCase.assertNotIsInstanceX-tr(XFxmlrpc.server.CGIXMLRPCRequestHandler.register_introspection_functionsr((jjXzhttp://docs.python.org/3/library/xmlrpc.server.html#xmlrpc.server.CGIXMLRPCRequestHandler.register_introspection_functionsX-tr(Xpathlib.Path.is_dirr((jjXAhttp://docs.python.org/3/library/pathlib.html#pathlib.Path.is_dirX-tr(Xasyncio.Future.doner((jjXFhttp://docs.python.org/3/library/asyncio-task.html#asyncio.Future.doneX-tr(X.http.server.BaseHTTPRequestHandler.end_headersr((jjX`http://docs.python.org/3/library/http.server.html#http.server.BaseHTTPRequestHandler.end_headersX-tr(Xpathlib.Path.replacer((jjXBhttp://docs.python.org/3/library/pathlib.html#pathlib.Path.replaceX-tr(Xwave.Wave_read.setposr((jjX@http://docs.python.org/3/library/wave.html#wave.Wave_read.setposX-tr(X/importlib.machinery.SourceFileLoader.path_statsr((jjX_http://docs.python.org/3/library/importlib.html#importlib.machinery.SourceFileLoader.path_statsX-tr(Xlogging.Logger.criticalr((jjXEhttp://docs.python.org/3/library/logging.html#logging.Logger.criticalX-tr(Xunittest.TestCase.runr((jjXDhttp://docs.python.org/3/library/unittest.html#unittest.TestCase.runX-tr(Xcurses.window.addnstrr((jjXBhttp://docs.python.org/3/library/curses.html#curses.window.addnstrX-tr(Xstring.Formatter.format_fieldr((jjXJhttp://docs.python.org/3/library/string.html#string.Formatter.format_fieldX-tr(Xset.copyr((jjX7http://docs.python.org/3/library/stdtypes.html#set.copyX-tr(Xobject.__rmul__r((jjXAhttp://docs.python.org/3/reference/datamodel.html#object.__rmul__X-tr(X#unittest.mock.Mock.assert_has_callsr((jjXWhttp://docs.python.org/3/library/unittest.mock.html#unittest.mock.Mock.assert_has_callsX-tr(X formatter.writer.send_line_breakr((jjXPhttp://docs.python.org/3/library/formatter.html#formatter.writer.send_line_breakX-tr(Xobject.__lshift__r((jjXChttp://docs.python.org/3/reference/datamodel.html#object.__lshift__X-tr(Xpstats.Stats.sort_statsr((jjXEhttp://docs.python.org/3/library/profile.html#pstats.Stats.sort_statsX-tr(Xunittest.TestCase.assertRegexr((jjXLhttp://docs.python.org/3/library/unittest.html#unittest.TestCase.assertRegexX-tr(Xxdrlib.Unpacker.unpack_bytesr((jjXIhttp://docs.python.org/3/library/xdrlib.html#xdrlib.Unpacker.unpack_bytesX-tr(Xre.match.groupdictr((jjX;http://docs.python.org/3/library/re.html#re.match.groupdictX-tr(Xcurses.panel.Panel.belowr((jjXKhttp://docs.python.org/3/library/curses.panel.html#curses.panel.Panel.belowX-tr(Xbdb.Bdb.user_callr((jjX;http://docs.python.org/3/library/bdb.html#bdb.Bdb.user_callX-tr(Xtkinter.ttk.Treeview.reattachr((jjXOhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.reattachX-tr(X!ssl.SSLContext.load_default_certsr((jjXKhttp://docs.python.org/3/library/ssl.html#ssl.SSLContext.load_default_certsX-tr(X str.encoder((jjX9http://docs.python.org/3/library/stdtypes.html#str.encodeX-tr(Xtextwrap.TextWrapper.fillr((jjXHhttp://docs.python.org/3/library/textwrap.html#textwrap.TextWrapper.fillX-tr(Xwave.Wave_write.writeframesrawr((jjXIhttp://docs.python.org/3/library/wave.html#wave.Wave_write.writeframesrawX-tr(Xcmd.Cmd.postcmdr((jjX9http://docs.python.org/3/library/cmd.html#cmd.Cmd.postcmdX-tr(XAxmlrpc.server.SimpleXMLRPCServer.register_introspection_functionsr((jjXuhttp://docs.python.org/3/library/xmlrpc.server.html#xmlrpc.server.SimpleXMLRPCServer.register_introspection_functionsX-tr(X#multiprocessing.pool.Pool.map_asyncr((jjXYhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.pool.Pool.map_asyncX-tr(X"distutils.ccompiler.CCompiler.warnr((jjXQhttp://docs.python.org/3/distutils/apiref.html#distutils.ccompiler.CCompiler.warnX-tr(Xlogging.Formatter.formatStackr((jjXKhttp://docs.python.org/3/library/logging.html#logging.Formatter.formatStackX-tr(Xtarfile.TarFile.getnamesr((jjXFhttp://docs.python.org/3/library/tarfile.html#tarfile.TarFile.getnamesX-tr(Xthreading.Condition.wait_forr((jjXLhttp://docs.python.org/3/library/threading.html#threading.Condition.wait_forX-tr(Xxdrlib.Unpacker.resetr((jjXBhttp://docs.python.org/3/library/xdrlib.html#xdrlib.Unpacker.resetX-tr(Xwsgiref.headers.Headers.get_allr((jjXMhttp://docs.python.org/3/library/wsgiref.html#wsgiref.headers.Headers.get_allX-tr(X codecs.IncrementalEncoder.encoder((jjXMhttp://docs.python.org/3/library/codecs.html#codecs.IncrementalEncoder.encodeX-tr(X#urllib.request.Request.get_full_urlr)(jjXXhttp://docs.python.org/3/library/urllib.request.html#urllib.request.Request.get_full_urlX-tr)X&ossaudiodev.oss_audio_device.obufcountr)(jjXXhttp://docs.python.org/3/library/ossaudiodev.html#ossaudiodev.oss_audio_device.obufcountX-tr)Ximaplib.IMAP4.setaclr)(jjXBhttp://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.setaclX-tr)Xcurses.panel.Panel.userptrr)(jjXMhttp://docs.python.org/3/library/curses.panel.html#curses.panel.Panel.userptrX-tr)X)multiprocessing.connection.Listener.closer)(jjX_http://docs.python.org/3/library/multiprocessing.html#multiprocessing.connection.Listener.closeX-tr )Xemail.message.Message.__len__r )(jjXQhttp://docs.python.org/3/library/email.message.html#email.message.Message.__len__X-tr )Xlogging.Logger.addHandlerr )(jjXGhttp://docs.python.org/3/library/logging.html#logging.Logger.addHandlerX-tr )Xsqlite3.Connection.executer)(jjXHhttp://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.executeX-tr)X+xml.sax.handler.ContentHandler.endElementNSr)(jjXahttp://docs.python.org/3/library/xml.sax.handler.html#xml.sax.handler.ContentHandler.endElementNSX-tr)X+logging.handlers.SocketHandler.createSocketr)(jjXbhttp://docs.python.org/3/library/logging.handlers.html#logging.handlers.SocketHandler.createSocketX-tr)X*http.cookiejar.Cookie.get_nonstandard_attrr)(jjX_http://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.Cookie.get_nonstandard_attrX-tr)Xpstats.Stats.print_callersr)(jjXHhttp://docs.python.org/3/library/profile.html#pstats.Stats.print_callersX-tr)X"unittest.mock.Mock.assert_any_callr)(jjXVhttp://docs.python.org/3/library/unittest.mock.html#unittest.mock.Mock.assert_any_callX-tr)X'gettext.NullTranslations.output_charsetr)(jjXUhttp://docs.python.org/3/library/gettext.html#gettext.NullTranslations.output_charsetX-tr)X&xml.sax.xmlreader.Attributes.getLengthr)(jjX[http://docs.python.org/3/library/xml.sax.reader.html#xml.sax.xmlreader.Attributes.getLengthX-tr)Xobject.__round__r)(jjXBhttp://docs.python.org/3/reference/datamodel.html#object.__round__X-tr)X!multiprocessing.Connection.filenor )(jjXWhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.Connection.filenoX-tr!)X*asyncio.BaseEventLoop.call_soon_threadsafer")(jjXbhttp://docs.python.org/3/library/asyncio-eventloop.html#asyncio.BaseEventLoop.call_soon_threadsafeX-tr#)X4http.server.BaseHTTPRequestHandler.handle_expect_100r$)(jjXfhttp://docs.python.org/3/library/http.server.html#http.server.BaseHTTPRequestHandler.handle_expect_100X-tr%)Xzipimport.zipimporter.get_datar&)(jjXNhttp://docs.python.org/3/library/zipimport.html#zipimport.zipimporter.get_dataX-tr')Xmailbox.MaildirMessage.add_flagr()(jjXMhttp://docs.python.org/3/library/mailbox.html#mailbox.MaildirMessage.add_flagX-tr))Xmmap.mmap.writer*)(jjX:http://docs.python.org/3/library/mmap.html#mmap.mmap.writeX-tr+)X&urllib.request.HTTPSHandler.https_openr,)(jjX[http://docs.python.org/3/library/urllib.request.html#urllib.request.HTTPSHandler.https_openX-tr-)X$formatter.formatter.add_literal_datar.)(jjXThttp://docs.python.org/3/library/formatter.html#formatter.formatter.add_literal_dataX-tr/)Xselectors.BaseSelector.get_mapr0)(jjXNhttp://docs.python.org/3/library/selectors.html#selectors.BaseSelector.get_mapX-tr1)X str.rjustr2)(jjX8http://docs.python.org/3/library/stdtypes.html#str.rjustX-tr3)Xxml.dom.Document.createTextNoder4)(jjXMhttp://docs.python.org/3/library/xml.dom.html#xml.dom.Document.createTextNodeX-tr5)Xcontainer.__iter__r6)(jjXAhttp://docs.python.org/3/library/stdtypes.html#container.__iter__X-tr7)Xnntplib.NNTP.newnewsr8)(jjXBhttp://docs.python.org/3/library/nntplib.html#nntplib.NNTP.newnewsX-tr9)Xcurses.window.addchr:)(jjX@http://docs.python.org/3/library/curses.html#curses.window.addchX-tr;)Xmailbox.Mailbox.addr<)(jjXAhttp://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.addX-tr=)X'importlib.abc.PathEntryFinder.find_specr>)(jjXWhttp://docs.python.org/3/library/importlib.html#importlib.abc.PathEntryFinder.find_specX-tr?)Xpoplib.POP3.statr@)(jjX=http://docs.python.org/3/library/poplib.html#poplib.POP3.statX-trA)Xobject.__float__rB)(jjXBhttp://docs.python.org/3/reference/datamodel.html#object.__float__X-trC)X%asyncio.BaseEventLoop.subprocess_execrD)(jjX^http://docs.python.org/3/library/asyncio-subprocess.html#asyncio.BaseEventLoop.subprocess_execX-trE)Xdecimal.Decimal.is_snanrF)(jjXEhttp://docs.python.org/3/library/decimal.html#decimal.Decimal.is_snanX-trG)X$logging.handlers.MemoryHandler.closerH)(jjX[http://docs.python.org/3/library/logging.handlers.html#logging.handlers.MemoryHandler.closeX-trI)Xthreading.Condition.acquirerJ)(jjXKhttp://docs.python.org/3/library/threading.html#threading.Condition.acquireX-trK)Xwave.Wave_write.setnframesrL)(jjXEhttp://docs.python.org/3/library/wave.html#wave.Wave_write.setnframesX-trM)X!zipimport.zipimporter.find_modulerN)(jjXQhttp://docs.python.org/3/library/zipimport.html#zipimport.zipimporter.find_moduleX-trO)Xconfigparser.ConfigParser.setrP)(jjXPhttp://docs.python.org/3/library/configparser.html#configparser.ConfigParser.setX-trQ)X"xml.etree.ElementTree.Element.findrR)(jjX^http://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element.findX-trS)Xdecimal.Context.compare_signalrT)(jjXLhttp://docs.python.org/3/library/decimal.html#decimal.Context.compare_signalX-trU)Xpoplib.POP3.rpoprV)(jjX=http://docs.python.org/3/library/poplib.html#poplib.POP3.rpopX-trW)Xtarfile.TarFile.gettarinforX)(jjXHhttp://docs.python.org/3/library/tarfile.html#tarfile.TarFile.gettarinfoX-trY)Xhttp.cookies.Morsel.outputrZ)(jjXMhttp://docs.python.org/3/library/http.cookies.html#http.cookies.Morsel.outputX-tr[)Xmailbox.Mailbox.flushr\)(jjXChttp://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.flushX-tr])X!email.message.Message.__delitem__r^)(jjXUhttp://docs.python.org/3/library/email.message.html#email.message.Message.__delitem__X-tr_)Xdecimal.Context.is_zeror`)(jjXEhttp://docs.python.org/3/library/decimal.html#decimal.Context.is_zeroX-tra)Xjson.JSONDecoder.raw_decoderb)(jjXFhttp://docs.python.org/3/library/json.html#json.JSONDecoder.raw_decodeX-trc)Xftplib.FTP.deleterd)(jjX>http://docs.python.org/3/library/ftplib.html#ftplib.FTP.deleteX-tre)Xmailbox.Maildir.list_foldersrf)(jjXJhttp://docs.python.org/3/library/mailbox.html#mailbox.Maildir.list_foldersX-trg)Xcurses.window.standoutrh)(jjXChttp://docs.python.org/3/library/curses.html#curses.window.standoutX-tri)X)urllib.request.BaseHandler.http_error_nnnrj)(jjX^http://docs.python.org/3/library/urllib.request.html#urllib.request.BaseHandler.http_error_nnnX-trk)X"email.message.Message.get_charsetsrl)(jjXVhttp://docs.python.org/3/library/email.message.html#email.message.Message.get_charsetsX-trm)Xdecimal.Decimal.as_tuplern)(jjXFhttp://docs.python.org/3/library/decimal.html#decimal.Decimal.as_tupleX-tro)Xmailbox.MaildirMessage.get_inforp)(jjXMhttp://docs.python.org/3/library/mailbox.html#mailbox.MaildirMessage.get_infoX-trq)X)email.charset.Charset.header_encode_linesrr)(jjX]http://docs.python.org/3/library/email.charset.html#email.charset.Charset.header_encode_linesX-trs)Xcollections.deque.rotatert)(jjXJhttp://docs.python.org/3/library/collections.html#collections.deque.rotateX-tru)Xlogging.Handler.addFilterrv)(jjXGhttp://docs.python.org/3/library/logging.html#logging.Handler.addFilterX-trw)Xmsilib.Directory.globrx)(jjXBhttp://docs.python.org/3/library/msilib.html#msilib.Directory.globX-try)Xobject.__iand__rz)(jjXAhttp://docs.python.org/3/reference/datamodel.html#object.__iand__X-tr{)X str.rstripr|)(jjX9http://docs.python.org/3/library/stdtypes.html#str.rstripX-tr})X*argparse.ArgumentParser.add_argument_groupr~)(jjXYhttp://docs.python.org/3/library/argparse.html#argparse.ArgumentParser.add_argument_groupX-tr)Xselectors.BaseSelector.selectr)(jjXMhttp://docs.python.org/3/library/selectors.html#selectors.BaseSelector.selectX-tr)Xtkinter.ttk.Treeview.prevr)(jjXKhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.prevX-tr)Xobject.__dir__r)(jjX@http://docs.python.org/3/reference/datamodel.html#object.__dir__X-tr)Xpstats.Stats.reverse_orderr)(jjXHhttp://docs.python.org/3/library/profile.html#pstats.Stats.reverse_orderX-tr)X(ossaudiodev.oss_mixer_device.reccontrolsr)(jjXZhttp://docs.python.org/3/library/ossaudiodev.html#ossaudiodev.oss_mixer_device.reccontrolsX-tr)Xbdb.Bdb.set_breakr)(jjX;http://docs.python.org/3/library/bdb.html#bdb.Bdb.set_breakX-tr)Xobject.__isub__r)(jjXAhttp://docs.python.org/3/reference/datamodel.html#object.__isub__X-tr)Xsunau.AU_read.setposr)(jjX@http://docs.python.org/3/library/sunau.html#sunau.AU_read.setposX-tr)Xhttp.cookies.BaseCookie.loadr)(jjXOhttp://docs.python.org/3/library/http.cookies.html#http.cookies.BaseCookie.loadX-tr)Xcollections.deque.appendleftr)(jjXNhttp://docs.python.org/3/library/collections.html#collections.deque.appendleftX-tr)Xinspect.Signature.bind_partialr)(jjXLhttp://docs.python.org/3/library/inspect.html#inspect.Signature.bind_partialX-tr)Xtelnetlib.Telnet.get_socketr)(jjXKhttp://docs.python.org/3/library/telnetlib.html#telnetlib.Telnet.get_socketX-tr)Xcollections.OrderedDict.popitemr)(jjXQhttp://docs.python.org/3/library/collections.html#collections.OrderedDict.popitemX-tr)Xmailbox.Maildir.remove_folderr)(jjXKhttp://docs.python.org/3/library/mailbox.html#mailbox.Maildir.remove_folderX-tr)Xio.IOBase.filenor)(jjX9http://docs.python.org/3/library/io.html#io.IOBase.filenoX-tr)X&importlib.abc.SourceLoader.exec_moduler)(jjXVhttp://docs.python.org/3/library/importlib.html#importlib.abc.SourceLoader.exec_moduleX-tr)Xunittest.TestCase.doCleanupsr)(jjXKhttp://docs.python.org/3/library/unittest.html#unittest.TestCase.doCleanupsX-tr)Xdecimal.Context.rotater)(jjXDhttp://docs.python.org/3/library/decimal.html#decimal.Context.rotateX-tr)Ximaplib.IMAP4.noopr)(jjX@http://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.noopX-tr)Xpoplib.POP3.noopr)(jjX=http://docs.python.org/3/library/poplib.html#poplib.POP3.noopX-tr)X+xml.sax.xmlreader.InputSource.setByteStreamr)(jjX`http://docs.python.org/3/library/xml.sax.reader.html#xml.sax.xmlreader.InputSource.setByteStreamX-tr)Xcurses.window.deletelnr)(jjXChttp://docs.python.org/3/library/curses.html#curses.window.deletelnX-tr)Xmsilib.Directory.remove_pycr)(jjXHhttp://docs.python.org/3/library/msilib.html#msilib.Directory.remove_pycX-tr)X str.isspacer)(jjX:http://docs.python.org/3/library/stdtypes.html#str.isspaceX-tr)Xdatetime.time.tznamer)(jjXChttp://docs.python.org/3/library/datetime.html#datetime.time.tznameX-tr)Xsymtable.Function.get_globalsr)(jjXLhttp://docs.python.org/3/library/symtable.html#symtable.Function.get_globalsX-tr)Xurllib.request.URLopener.openr)(jjXRhttp://docs.python.org/3/library/urllib.request.html#urllib.request.URLopener.openX-tr)Xdecimal.Decimal.shiftr)(jjXChttp://docs.python.org/3/library/decimal.html#decimal.Decimal.shiftX-tr)Xdatetime.timezone.fromutcr)(jjXHhttp://docs.python.org/3/library/datetime.html#datetime.timezone.fromutcX-tr)Xpoplib.POP3.capar)(jjX=http://docs.python.org/3/library/poplib.html#poplib.POP3.capaX-tr)Xemail.message.Message.attachr)(jjXPhttp://docs.python.org/3/library/email.message.html#email.message.Message.attachX-tr)X/email.contentmanager.ContentManager.get_contentr)(jjXjhttp://docs.python.org/3/library/email.contentmanager.html#email.contentmanager.ContentManager.get_contentX-tr)Xunittest.TestCase.assertFalser)(jjXLhttp://docs.python.org/3/library/unittest.html#unittest.TestCase.assertFalseX-tr)Xhashlib.hash.digestr)(jjXAhttp://docs.python.org/3/library/hashlib.html#hashlib.hash.digestX-tr)Xconfigparser.ConfigParser.readr)(jjXQhttp://docs.python.org/3/library/configparser.html#configparser.ConfigParser.readX-tr)Xtkinter.ttk.Progressbar.startr)(jjXOhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Progressbar.startX-tr)X'multiprocessing.JoinableQueue.task_doner)(jjX]http://docs.python.org/3/library/multiprocessing.html#multiprocessing.JoinableQueue.task_doneX-tr)X(logging.handlers.WatchedFileHandler.emitr)(jjX_http://docs.python.org/3/library/logging.handlers.html#logging.handlers.WatchedFileHandler.emitX-tr)Xnntplib.NNTP.slaver)(jjX@http://docs.python.org/3/library/nntplib.html#nntplib.NNTP.slaveX-tr)Xunittest.TextTestRunner.runr)(jjXJhttp://docs.python.org/3/library/unittest.html#unittest.TextTestRunner.runX-tr)X zipimport.zipimporter.get_sourcer)(jjXPhttp://docs.python.org/3/library/zipimport.html#zipimport.zipimporter.get_sourceX-tr)Xthreading.Event.setr)(jjXChttp://docs.python.org/3/library/threading.html#threading.Event.setX-tr)X str.swapcaser)(jjX;http://docs.python.org/3/library/stdtypes.html#str.swapcaseX-tr)Xdecimal.Decimal.adjustedr)(jjXFhttp://docs.python.org/3/library/decimal.html#decimal.Decimal.adjustedX-tr)X"ossaudiodev.oss_mixer_device.closer)(jjXThttp://docs.python.org/3/library/ossaudiodev.html#ossaudiodev.oss_mixer_device.closeX-tr)Xxml.dom.Node.appendChildr)(jjXFhttp://docs.python.org/3/library/xml.dom.html#xml.dom.Node.appendChildX-tr)Xshlex.shlex.sourcehookr)(jjXBhttp://docs.python.org/3/library/shlex.html#shlex.shlex.sourcehookX-tr)Xhmac.HMAC.digestr)(jjX;http://docs.python.org/3/library/hmac.html#hmac.HMAC.digestX-tr)Xdoctest.DocTestRunner.runr)(jjXGhttp://docs.python.org/3/library/doctest.html#doctest.DocTestRunner.runX-tr)X'xml.dom.Document.getElementsByTagNameNSr)(jjXUhttp://docs.python.org/3/library/xml.dom.html#xml.dom.Document.getElementsByTagNameNSX-tr)Xxmlrpc.client.DateTime.encoder)(jjXQhttp://docs.python.org/3/library/xmlrpc.client.html#xmlrpc.client.DateTime.encodeX-tr)Xobject.__get__r)(jjX@http://docs.python.org/3/reference/datamodel.html#object.__get__X-tr)Xemail.message.Message.itemsr)(jjXOhttp://docs.python.org/3/library/email.message.html#email.message.Message.itemsX-tr)Xio.IOBase.seekr)(jjX7http://docs.python.org/3/library/io.html#io.IOBase.seekX-tr)X3email.contentmanager.ContentManager.add_set_handlerr)(jjXnhttp://docs.python.org/3/library/email.contentmanager.html#email.contentmanager.ContentManager.add_set_handlerX-tr)Xmailbox.Mailbox.closer)(jjXChttp://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.closeX-tr)Xsocket.socket.set_inheritabler)(jjXJhttp://docs.python.org/3/library/socket.html#socket.socket.set_inheritableX-tr)Xbdb.Bdb.clear_all_file_breaksr)(jjXGhttp://docs.python.org/3/library/bdb.html#bdb.Bdb.clear_all_file_breaksX-tr)X importlib.abc.Finder.find_moduler)(jjXPhttp://docs.python.org/3/library/importlib.html#importlib.abc.Finder.find_moduleX-tr)Xsunau.AU_write.writeframesr)(jjXFhttp://docs.python.org/3/library/sunau.html#sunau.AU_write.writeframesX-tr)X!decimal.Decimal.compare_total_magr)(jjXOhttp://docs.python.org/3/library/decimal.html#decimal.Decimal.compare_total_magX-tr)X"multiprocessing.JoinableQueue.joinr)(jjXXhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.JoinableQueue.joinX-tr)Xdecimal.Context.lnr)(jjX@http://docs.python.org/3/library/decimal.html#decimal.Context.lnX-tr)Xsocket.socket.setsockoptr)(jjXEhttp://docs.python.org/3/library/socket.html#socket.socket.setsockoptX-tr)Xpickle.Pickler.persistent_idr*(jjXIhttp://docs.python.org/3/library/pickle.html#pickle.Pickler.persistent_idX-tr*Xsocket.socket.settimeoutr*(jjXEhttp://docs.python.org/3/library/socket.html#socket.socket.settimeoutX-tr*Xdecimal.Decimal.scalebr*(jjXDhttp://docs.python.org/3/library/decimal.html#decimal.Decimal.scalebX-tr*Xcurses.window.clearr*(jjX@http://docs.python.org/3/library/curses.html#curses.window.clearX-tr*Xobject.__str__r*(jjX@http://docs.python.org/3/reference/datamodel.html#object.__str__X-tr *X,multiprocessing.managers.SyncManager.Barrierr *(jjXbhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.managers.SyncManager.BarrierX-tr *X3urllib.request.HTTPDigestAuthHandler.http_error_401r *(jjXhhttp://docs.python.org/3/library/urllib.request.html#urllib.request.HTTPDigestAuthHandler.http_error_401X-tr *Xmultiprocessing.Connection.sendr*(jjXUhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.Connection.sendX-tr*Xtarfile.TarInfo.isdevr*(jjXChttp://docs.python.org/3/library/tarfile.html#tarfile.TarInfo.isdevX-tr*Xstring.Formatter.vformatr*(jjXEhttp://docs.python.org/3/library/string.html#string.Formatter.vformatX-tr*X,xmlrpc.client.ServerProxy.system.listMethodsr*(jjX`http://docs.python.org/3/library/xmlrpc.client.html#xmlrpc.client.ServerProxy.system.listMethodsX-tr*Xmailbox.Mailbox.clearr*(jjXChttp://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.clearX-tr*Xpathlib.Path.renamer*(jjXAhttp://docs.python.org/3/library/pathlib.html#pathlib.Path.renameX-tr*Xmultiprocessing.pool.Pool.closer*(jjXUhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.pool.Pool.closeX-tr*X*xml.parsers.expat.xmlparser.DefaultHandlerr*(jjXXhttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.xmlparser.DefaultHandlerX-tr*Xdecimal.Decimal.is_normalr*(jjXGhttp://docs.python.org/3/library/decimal.html#decimal.Decimal.is_normalX-tr*Xdecimal.Decimal.copy_negater *(jjXIhttp://docs.python.org/3/library/decimal.html#decimal.Decimal.copy_negateX-tr!*X xml.dom.Document.createAttributer"*(jjXNhttp://docs.python.org/3/library/xml.dom.html#xml.dom.Document.createAttributeX-tr#*Xftplib.FTP.storlinesr$*(jjXAhttp://docs.python.org/3/library/ftplib.html#ftplib.FTP.storlinesX-tr%*Xcurses.window.cursyncupr&*(jjXDhttp://docs.python.org/3/library/curses.html#curses.window.cursyncupX-tr'*Xcurses.window.insnstrr(*(jjXBhttp://docs.python.org/3/library/curses.html#curses.window.insnstrX-tr)*X!ossaudiodev.oss_audio_device.syncr**(jjXShttp://docs.python.org/3/library/ossaudiodev.html#ossaudiodev.oss_audio_device.syncX-tr+*X$xml.sax.xmlreader.Attributes.getTyper,*(jjXYhttp://docs.python.org/3/library/xml.sax.reader.html#xml.sax.xmlreader.Attributes.getTypeX-tr-*Ximaplib.IMAP4.starttlsr.*(jjXDhttp://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.starttlsX-tr/*X str.isdecimalr0*(jjX<http://docs.python.org/3/library/stdtypes.html#str.isdecimalX-tr1*Xpoplib.POP3.quitr2*(jjX=http://docs.python.org/3/library/poplib.html#poplib.POP3.quitX-tr3*X0importlib.machinery.ExtensionFileLoader.get_coder4*(jjX`http://docs.python.org/3/library/importlib.html#importlib.machinery.ExtensionFileLoader.get_codeX-tr5*Xcontextlib.ExitStack.closer6*(jjXKhttp://docs.python.org/3/library/contextlib.html#contextlib.ExitStack.closeX-tr7*X#socketserver.BaseServer.server_bindr8*(jjXVhttp://docs.python.org/3/library/socketserver.html#socketserver.BaseServer.server_bindX-tr9*Xobject.__add__r:*(jjX@http://docs.python.org/3/reference/datamodel.html#object.__add__X-tr;*X$ossaudiodev.oss_audio_device.getfmtsr<*(jjXVhttp://docs.python.org/3/library/ossaudiodev.html#ossaudiodev.oss_audio_device.getfmtsX-tr=*X*http.cookiejar.Cookie.set_nonstandard_attrr>*(jjX_http://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.Cookie.set_nonstandard_attrX-tr?*X%email.message.EmailMessage.make_mixedr@*(jjX`http://docs.python.org/3/library/email.contentmanager.html#email.message.EmailMessage.make_mixedX-trA*X$concurrent.futures.Executor.shutdownrB*(jjX]http://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.Executor.shutdownX-trC*X multiprocessing.Queue.get_nowaitrD*(jjXVhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.Queue.get_nowaitX-trE*Xdecimal.Context.scalebrF*(jjXDhttp://docs.python.org/3/library/decimal.html#decimal.Context.scalebX-trG*Xsqlite3.Cursor.fetchmanyrH*(jjXFhttp://docs.python.org/3/library/sqlite3.html#sqlite3.Cursor.fetchmanyX-trI*XBaseException.with_tracebackrJ*(jjXMhttp://docs.python.org/3/library/exceptions.html#BaseException.with_tracebackX-trK*Xbdb.Bdb.get_all_breaksrL*(jjX@http://docs.python.org/3/library/bdb.html#bdb.Bdb.get_all_breaksX-trM*X&socketserver.BaseServer.handle_requestrN*(jjXYhttp://docs.python.org/3/library/socketserver.html#socketserver.BaseServer.handle_requestX-trO*Xmailbox.MH.get_folderrP*(jjXChttp://docs.python.org/3/library/mailbox.html#mailbox.MH.get_folderX-trQ*X!email.message.Message.get_charsetrR*(jjXUhttp://docs.python.org/3/library/email.message.html#email.message.Message.get_charsetX-trS*Xpathlib.PurePath.with_suffixrT*(jjXJhttp://docs.python.org/3/library/pathlib.html#pathlib.PurePath.with_suffixX-trU*Xwave.Wave_write.writeframesrV*(jjXFhttp://docs.python.org/3/library/wave.html#wave.Wave_write.writeframesX-trW*Xhashlib.hash.updaterX*(jjXAhttp://docs.python.org/3/library/hashlib.html#hashlib.hash.updateX-trY*X"xml.dom.Document.createAttributeNSrZ*(jjXPhttp://docs.python.org/3/library/xml.dom.html#xml.dom.Document.createAttributeNSX-tr[*X str.ljustr\*(jjX8http://docs.python.org/3/library/stdtypes.html#str.ljustX-tr]*Xpathlib.Path.is_filer^*(jjXBhttp://docs.python.org/3/library/pathlib.html#pathlib.Path.is_fileX-tr_*X%multiprocessing.Connection.recv_bytesr`*(jjX[http://docs.python.org/3/library/multiprocessing.html#multiprocessing.Connection.recv_bytesX-tra*Xsocket.socket.makefilerb*(jjXChttp://docs.python.org/3/library/socket.html#socket.socket.makefileX-trc*Xparser.ST.issuiterd*(jjX>http://docs.python.org/3/library/parser.html#parser.ST.issuiteX-tre*X"unittest.TestCase.shortDescriptionrf*(jjXQhttp://docs.python.org/3/library/unittest.html#unittest.TestCase.shortDescriptionX-trg*Xdict.setdefaultrh*(jjX>http://docs.python.org/3/library/stdtypes.html#dict.setdefaultX-tri*X"logging.handlers.QueueHandler.emitrj*(jjXYhttp://docs.python.org/3/library/logging.handlers.html#logging.handlers.QueueHandler.emitX-trk*Xmailbox.MMDFMessage.remove_flagrl*(jjXMhttp://docs.python.org/3/library/mailbox.html#mailbox.MMDFMessage.remove_flagX-trm*Xasyncio.Lock.lockedrn*(jjXFhttp://docs.python.org/3/library/asyncio-sync.html#asyncio.Lock.lockedX-tro*Xobject.__rpow__rp*(jjXAhttp://docs.python.org/3/reference/datamodel.html#object.__rpow__X-trq*Xprofile.Profile.dump_statsrr*(jjXHhttp://docs.python.org/3/library/profile.html#profile.Profile.dump_statsX-trs*X$tkinter.ttk.Treeview.identify_regionrt*(jjXVhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.identify_regionX-tru*Xarray.array.buffer_inforv*(jjXChttp://docs.python.org/3/library/array.html#array.array.buffer_infoX-trw*X!xml.dom.Element.removeAttributeNSrx*(jjXOhttp://docs.python.org/3/library/xml.dom.html#xml.dom.Element.removeAttributeNSX-try*X dict.valuesrz*(jjX:http://docs.python.org/3/library/stdtypes.html#dict.valuesX-tr{*Xpathlib.PurePath.is_reservedr|*(jjXJhttp://docs.python.org/3/library/pathlib.html#pathlib.PurePath.is_reservedX-tr}*X%unittest.TestCase.addTypeEqualityFuncr~*(jjXThttp://docs.python.org/3/library/unittest.html#unittest.TestCase.addTypeEqualityFuncX-tr*X.distutils.ccompiler.CCompiler.object_filenamesr*(jjX]http://docs.python.org/3/distutils/apiref.html#distutils.ccompiler.CCompiler.object_filenamesX-tr*X"http.client.HTTPResponse.getheaderr*(jjXThttp://docs.python.org/3/library/http.client.html#http.client.HTTPResponse.getheaderX-tr*X+gettext.NullTranslations.set_output_charsetr*(jjXYhttp://docs.python.org/3/library/gettext.html#gettext.NullTranslations.set_output_charsetX-tr*Xasyncio.Queue.put_nowaitr*(jjXKhttp://docs.python.org/3/library/asyncio-sync.html#asyncio.Queue.put_nowaitX-tr*u(Xio.TextIOBase.writer*(jjX<http://docs.python.org/3/library/io.html#io.TextIOBase.writeX-tr*X$fractions.Fraction.limit_denominatorr*(jjXThttp://docs.python.org/3/library/fractions.html#fractions.Fraction.limit_denominatorX-tr*X%distutils.ccompiler.CCompiler.compiler*(jjXThttp://docs.python.org/3/distutils/apiref.html#distutils.ccompiler.CCompiler.compileX-tr*Xmailbox.Maildir.flushr*(jjXChttp://docs.python.org/3/library/mailbox.html#mailbox.Maildir.flushX-tr*Xpathlib.Path.iterdirr*(jjXBhttp://docs.python.org/3/library/pathlib.html#pathlib.Path.iterdirX-tr*X gettext.NullTranslations.gettextr*(jjXNhttp://docs.python.org/3/library/gettext.html#gettext.NullTranslations.gettextX-tr*X)asyncio.SubprocessProtocol.process_exitedr*(jjX`http://docs.python.org/3/library/asyncio-protocol.html#asyncio.SubprocessProtocol.process_exitedX-tr*X*http.cookiejar.Cookie.has_nonstandard_attrr*(jjX_http://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.Cookie.has_nonstandard_attrX-tr*Xdis.Bytecode.infor*(jjX;http://docs.python.org/3/library/dis.html#dis.Bytecode.infoX-tr*X gettext.NullTranslations.charsetr*(jjXNhttp://docs.python.org/3/library/gettext.html#gettext.NullTranslations.charsetX-tr*X$urllib.request.DataHandler.data_openr*(jjXYhttp://docs.python.org/3/library/urllib.request.html#urllib.request.DataHandler.data_openX-tr*X+email.policy.EmailPolicy.header_store_parser*(jjX^http://docs.python.org/3/library/email.policy.html#email.policy.EmailPolicy.header_store_parseX-tr*Xarray.array.tounicoder*(jjXAhttp://docs.python.org/3/library/array.html#array.array.tounicodeX-tr*X*unittest.mock.Mock.assert_called_once_withr*(jjX^http://docs.python.org/3/library/unittest.mock.html#unittest.mock.Mock.assert_called_once_withX-tr*X.asyncio.BaseSubprocessTransport.get_returncoder*(jjXehttp://docs.python.org/3/library/asyncio-protocol.html#asyncio.BaseSubprocessTransport.get_returncodeX-tr*Xmailbox.mboxMessage.get_fromr*(jjXJhttp://docs.python.org/3/library/mailbox.html#mailbox.mboxMessage.get_fromX-tr*Xcurses.window.encloser*(jjXBhttp://docs.python.org/3/library/curses.html#curses.window.encloseX-tr*Xmultiprocessing.Queue.fullr*(jjXPhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.Queue.fullX-tr*X-asyncio.SubprocessProtocol.pipe_data_receivedr*(jjXdhttp://docs.python.org/3/library/asyncio-protocol.html#asyncio.SubprocessProtocol.pipe_data_receivedX-tr*Xdatetime.datetime.__str__r*(jjXHhttp://docs.python.org/3/library/datetime.html#datetime.datetime.__str__X-tr*Xdecimal.Context.Etinyr*(jjXChttp://docs.python.org/3/library/decimal.html#decimal.Context.EtinyX-tr*Xdecimal.Context.next_plusr*(jjXGhttp://docs.python.org/3/library/decimal.html#decimal.Context.next_plusX-tr*Xmsilib.Dialog.radiogroupr*(jjXEhttp://docs.python.org/3/library/msilib.html#msilib.Dialog.radiogroupX-tr*Xemail.parser.FeedParser.feedr*(jjXOhttp://docs.python.org/3/library/email.parser.html#email.parser.FeedParser.feedX-tr*X xml.dom.Element.setAttributeNoder*(jjXNhttp://docs.python.org/3/library/xml.dom.html#xml.dom.Element.setAttributeNodeX-tr*X!unittest.TestSuite.countTestCasesr*(jjXPhttp://docs.python.org/3/library/unittest.html#unittest.TestSuite.countTestCasesX-tr*Xsunau.AU_read.getcompnamer*(jjXEhttp://docs.python.org/3/library/sunau.html#sunau.AU_read.getcompnameX-tr*Xemail.message.Message.getr*(jjXMhttp://docs.python.org/3/library/email.message.html#email.message.Message.getX-tr*Xsymtable.Symbol.is_referencedr*(jjXLhttp://docs.python.org/3/library/symtable.html#symtable.Symbol.is_referencedX-tr*Xqueue.Queue.get_nowaitr*(jjXBhttp://docs.python.org/3/library/queue.html#queue.Queue.get_nowaitX-tr*X%email.message.EmailMessage.iter_partsr*(jjX`http://docs.python.org/3/library/email.contentmanager.html#email.message.EmailMessage.iter_partsX-tr*X(wsgiref.simple_server.WSGIServer.get_appr*(jjXVhttp://docs.python.org/3/library/wsgiref.html#wsgiref.simple_server.WSGIServer.get_appX-tr*Xcollections.deque.clearr*(jjXIhttp://docs.python.org/3/library/collections.html#collections.deque.clearX-tr*X difflib.SequenceMatcher.set_seq2r*(jjXNhttp://docs.python.org/3/library/difflib.html#difflib.SequenceMatcher.set_seq2X-tr*X*email.message.Message.get_content_maintyper*(jjX^http://docs.python.org/3/library/email.message.html#email.message.Message.get_content_maintypeX-tr*Xarray.array.byteswapr*(jjX@http://docs.python.org/3/library/array.html#array.array.byteswapX-tr*X"asyncio.BaseEventLoop.sock_sendallr*(jjXZhttp://docs.python.org/3/library/asyncio-eventloop.html#asyncio.BaseEventLoop.sock_sendallX-tr*X-xml.sax.xmlreader.XMLReader.getEntityResolverr*(jjXbhttp://docs.python.org/3/library/xml.sax.reader.html#xml.sax.xmlreader.XMLReader.getEntityResolverX-tr*Xmailbox.Mailbox.unlockr*(jjXDhttp://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.unlockX-tr*Xtimeit.Timer.timeitr*(jjX@http://docs.python.org/3/library/timeit.html#timeit.Timer.timeitX-tr*X6xmlrpc.server.DocXMLRPCServer.set_server_documentationr*(jjXjhttp://docs.python.org/3/library/xmlrpc.server.html#xmlrpc.server.DocXMLRPCServer.set_server_documentationX-tr*X'importlib.abc.InspectLoader.load_moduler*(jjXWhttp://docs.python.org/3/library/importlib.html#importlib.abc.InspectLoader.load_moduleX-tr*Xgenerator.closer*(jjXChttp://docs.python.org/3/reference/expressions.html#generator.closeX-tr*Xcurses.window.redrawwinr*(jjXDhttp://docs.python.org/3/library/curses.html#curses.window.redrawwinX-tr*Xshlex.shlex.pop_sourcer*(jjXBhttp://docs.python.org/3/library/shlex.html#shlex.shlex.pop_sourceX-tr*X1xml.sax.handler.ContentHandler.startPrefixMappingr*(jjXghttp://docs.python.org/3/library/xml.sax.handler.html#xml.sax.handler.ContentHandler.startPrefixMappingX-tr*Xdecimal.Context.is_infiniter*(jjXIhttp://docs.python.org/3/library/decimal.html#decimal.Context.is_infiniteX-tr*Xhmac.HMAC.updater*(jjX;http://docs.python.org/3/library/hmac.html#hmac.HMAC.updateX-tr*X&test.support.EnvironmentVarGuard.unsetr*(jjXQhttp://docs.python.org/3/library/test.html#test.support.EnvironmentVarGuard.unsetX-tr*X#asyncio.BaseProtocol.resume_writingr*(jjXZhttp://docs.python.org/3/library/asyncio-protocol.html#asyncio.BaseProtocol.resume_writingX-tr*Xaifc.aifc.setcomptyper*(jjX@http://docs.python.org/3/library/aifc.html#aifc.aifc.setcomptypeX-tr*X bdb.Bdb.resetr*(jjX7http://docs.python.org/3/library/bdb.html#bdb.Bdb.resetX-tr*Xmailbox.Mailbox.get_stringr*(jjXHhttp://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.get_stringX-tr*X!asyncio.BaseEventLoop.getnameinfor*(jjXYhttp://docs.python.org/3/library/asyncio-eventloop.html#asyncio.BaseEventLoop.getnameinfoX-tr*X$http.cookies.BaseCookie.value_encoder*(jjXWhttp://docs.python.org/3/library/http.cookies.html#http.cookies.BaseCookie.value_encodeX-tr*X)email.policy.Compat32.header_source_parser*(jjX\http://docs.python.org/3/library/email.policy.html#email.policy.Compat32.header_source_parseX-tr*X!symtable.SymbolTable.get_childrenr*(jjXPhttp://docs.python.org/3/library/symtable.html#symtable.SymbolTable.get_childrenX-tr*X3importlib.machinery.SourcelessFileLoader.get_sourcer*(jjXchttp://docs.python.org/3/library/importlib.html#importlib.machinery.SourcelessFileLoader.get_sourceX-tr*X"ossaudiodev.oss_audio_device.writer*(jjXThttp://docs.python.org/3/library/ossaudiodev.html#ossaudiodev.oss_audio_device.writeX-tr*X4distutils.ccompiler.CCompiler.shared_object_filenamer*(jjXchttp://docs.python.org/3/distutils/apiref.html#distutils.ccompiler.CCompiler.shared_object_filenameX-tr*Xgettext.GNUTranslations.gettextr+(jjXMhttp://docs.python.org/3/library/gettext.html#gettext.GNUTranslations.gettextX-tr+X%xml.dom.Document.getElementsByTagNamer+(jjXShttp://docs.python.org/3/library/xml.dom.html#xml.dom.Document.getElementsByTagNameX-tr+X#unittest.TestCase.defaultTestResultr+(jjXRhttp://docs.python.org/3/library/unittest.html#unittest.TestCase.defaultTestResultX-tr+X*urllib.request.CacheFTPHandler.setMaxConnsr+(jjX_http://docs.python.org/3/library/urllib.request.html#urllib.request.CacheFTPHandler.setMaxConnsX-tr+Xunittest.TestCase.setUpClassr+(jjXKhttp://docs.python.org/3/library/unittest.html#unittest.TestCase.setUpClassX-tr +Xsunau.AU_write.setparamsr +(jjXDhttp://docs.python.org/3/library/sunau.html#sunau.AU_write.setparamsX-tr +X+urllib.robotparser.RobotFileParser.modifiedr +(jjXdhttp://docs.python.org/3/library/urllib.robotparser.html#urllib.robotparser.RobotFileParser.modifiedX-tr +Xdatetime.tzinfo.tznamer+(jjXEhttp://docs.python.org/3/library/datetime.html#datetime.tzinfo.tznameX-tr+Xstr.expandtabsr+(jjX=http://docs.python.org/3/library/stdtypes.html#str.expandtabsX-tr+Xjson.JSONEncoder.iterencoder+(jjXFhttp://docs.python.org/3/library/json.html#json.JSONEncoder.iterencodeX-tr+Xcurses.window.attroffr+(jjXBhttp://docs.python.org/3/library/curses.html#curses.window.attroffX-tr+X#collections.OrderedDict.move_to_endr+(jjXUhttp://docs.python.org/3/library/collections.html#collections.OrderedDict.move_to_endX-tr+Xmultiprocessing.pool.Pool.imapr+(jjXThttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.pool.Pool.imapX-tr+Xpstats.Stats.print_statsr+(jjXFhttp://docs.python.org/3/library/profile.html#pstats.Stats.print_statsX-tr+Xdecimal.Decimal.from_floatr+(jjXHhttp://docs.python.org/3/library/decimal.html#decimal.Decimal.from_floatX-tr+X"html.parser.HTMLParser.handle_declr+(jjXThttp://docs.python.org/3/library/html.parser.html#html.parser.HTMLParser.handle_declX-tr+X formatter.formatter.add_hor_ruler +(jjXPhttp://docs.python.org/3/library/formatter.html#formatter.formatter.add_hor_ruleX-tr!+Xobject.__ipow__r"+(jjXAhttp://docs.python.org/3/reference/datamodel.html#object.__ipow__X-tr#+X"doctest.DocTestParser.get_examplesr$+(jjXPhttp://docs.python.org/3/library/doctest.html#doctest.DocTestParser.get_examplesX-tr%+X#http.cookiejar.FileCookieJar.revertr&+(jjXXhttp://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.FileCookieJar.revertX-tr'+Xcurses.panel.Panel.mover(+(jjXJhttp://docs.python.org/3/library/curses.panel.html#curses.panel.Panel.moveX-tr)+Xtelnetlib.Telnet.interactr*+(jjXIhttp://docs.python.org/3/library/telnetlib.html#telnetlib.Telnet.interactX-tr++Xsocket.socket.sendtor,+(jjXAhttp://docs.python.org/3/library/socket.html#socket.socket.sendtoX-tr-+X asyncio.BaseEventLoop.is_runningr.+(jjXXhttp://docs.python.org/3/library/asyncio-eventloop.html#asyncio.BaseEventLoop.is_runningX-tr/+Xmailbox.MH.remover0+(jjX?http://docs.python.org/3/library/mailbox.html#mailbox.MH.removeX-tr1+X re.regex.subr2+(jjX5http://docs.python.org/3/library/re.html#re.regex.subX-tr3+X/xml.sax.handler.ContentHandler.endPrefixMappingr4+(jjXehttp://docs.python.org/3/library/xml.sax.handler.html#xml.sax.handler.ContentHandler.endPrefixMappingX-tr5+X symtable.SymbolTable.get_symbolsr6+(jjXOhttp://docs.python.org/3/library/symtable.html#symtable.SymbolTable.get_symbolsX-tr7+X!zipimport.zipimporter.load_moduler8+(jjXQhttp://docs.python.org/3/library/zipimport.html#zipimport.zipimporter.load_moduleX-tr9+Xhttp.cookies.Morsel.js_outputr:+(jjXPhttp://docs.python.org/3/library/http.cookies.html#http.cookies.Morsel.js_outputX-tr;+X+xml.parsers.expat.xmlparser.GetInputContextr<+(jjXYhttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.xmlparser.GetInputContextX-tr=+X%xml.sax.xmlreader.Attributes.getValuer>+(jjXZhttp://docs.python.org/3/library/xml.sax.reader.html#xml.sax.xmlreader.Attributes.getValueX-tr?+Xnntplib.NNTP.getwelcomer@+(jjXEhttp://docs.python.org/3/library/nntplib.html#nntplib.NNTP.getwelcomeX-trA+Xcurses.window.standendrB+(jjXChttp://docs.python.org/3/library/curses.html#curses.window.standendX-trC+Xshlex.shlex.error_leaderrD+(jjXDhttp://docs.python.org/3/library/shlex.html#shlex.shlex.error_leaderX-trE+X"codecs.IncrementalEncoder.setstaterF+(jjXOhttp://docs.python.org/3/library/codecs.html#codecs.IncrementalEncoder.setstateX-trG+Xthreading.Condition.notify_allrH+(jjXNhttp://docs.python.org/3/library/threading.html#threading.Condition.notify_allX-trI+Xasyncio.Lock.releaserJ+(jjXGhttp://docs.python.org/3/library/asyncio-sync.html#asyncio.Lock.releaseX-trK+Xgzip.GzipFile.peekrL+(jjX=http://docs.python.org/3/library/gzip.html#gzip.GzipFile.peekX-trM+X dict.popitemrN+(jjX;http://docs.python.org/3/library/stdtypes.html#dict.popitemX-trO+X_thread.lock.lockedrP+(jjXAhttp://docs.python.org/3/library/_thread.html#_thread.lock.lockedX-trQ+Xcurses.window.overwriterR+(jjXDhttp://docs.python.org/3/library/curses.html#curses.window.overwriteX-trS+Xcurses.window.untouchwinrT+(jjXEhttp://docs.python.org/3/library/curses.html#curses.window.untouchwinX-trU+X socketserver.BaseServer.shutdownrV+(jjXShttp://docs.python.org/3/library/socketserver.html#socketserver.BaseServer.shutdownX-trW+X#optparse.OptionParser.print_versionrX+(jjXRhttp://docs.python.org/3/library/optparse.html#optparse.OptionParser.print_versionX-trY+Xbdb.Bdb.set_continuerZ+(jjX>http://docs.python.org/3/library/bdb.html#bdb.Bdb.set_continueX-tr[+Xtelnetlib.Telnet.read_somer\+(jjXJhttp://docs.python.org/3/library/telnetlib.html#telnetlib.Telnet.read_someX-tr]+Xwinreg.PyHKEY.Detachr^+(jjXAhttp://docs.python.org/3/library/winreg.html#winreg.PyHKEY.DetachX-tr_+X(html.parser.HTMLParser.get_starttag_textr`+(jjXZhttp://docs.python.org/3/library/html.parser.html#html.parser.HTMLParser.get_starttag_textX-tra+Xdatetime.datetime.astimezonerb+(jjXKhttp://docs.python.org/3/library/datetime.html#datetime.datetime.astimezoneX-trc+Xsocket.socket.get_inheritablerd+(jjXJhttp://docs.python.org/3/library/socket.html#socket.socket.get_inheritableX-tre+X)xml.dom.pulldom.DOMEventStream.expandNoderf+(jjX_http://docs.python.org/3/library/xml.dom.pulldom.html#xml.dom.pulldom.DOMEventStream.expandNodeX-trg+Ximaplib.IMAP4.lsubrh+(jjX@http://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.lsubX-tri+Xio.BufferedIOBase.readrj+(jjX?http://docs.python.org/3/library/io.html#io.BufferedIOBase.readX-trk+Xasyncio.StreamWriter.closerl+(jjXOhttp://docs.python.org/3/library/asyncio-stream.html#asyncio.StreamWriter.closeX-trm+X unittest.mock.Mock.mock_add_specrn+(jjXThttp://docs.python.org/3/library/unittest.mock.html#unittest.mock.Mock.mock_add_specX-tro+Xtkinter.ttk.Combobox.currentrp+(jjXNhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Combobox.currentX-trq+X!unittest.TestCase.assertLessEqualrr+(jjXPhttp://docs.python.org/3/library/unittest.html#unittest.TestCase.assertLessEqualX-trs+Xlogging.Filter.filterrt+(jjXChttp://docs.python.org/3/library/logging.html#logging.Filter.filterX-tru+Xmailbox.MaildirMessage.set_daterv+(jjXMhttp://docs.python.org/3/library/mailbox.html#mailbox.MaildirMessage.set_dateX-trw+Xqueue.Queue.qsizerx+(jjX=http://docs.python.org/3/library/queue.html#queue.Queue.qsizeX-try+X str.isalpharz+(jjX:http://docs.python.org/3/library/stdtypes.html#str.isalphaX-tr{+Xtarfile.TarInfo.isregr|+(jjXChttp://docs.python.org/3/library/tarfile.html#tarfile.TarInfo.isregX-tr}+X'asyncio.BaseEventLoop.connect_read_piper~+(jjX_http://docs.python.org/3/library/asyncio-eventloop.html#asyncio.BaseEventLoop.connect_read_pipeX-tr+X'wsgiref.handlers.BaseHandler.get_stderrr+(jjXUhttp://docs.python.org/3/library/wsgiref.html#wsgiref.handlers.BaseHandler.get_stderrX-tr+X"xml.etree.ElementTree.Element.keysr+(jjX^http://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element.keysX-tr+X!mailbox.BabylMessage.remove_labelr+(jjXOhttp://docs.python.org/3/library/mailbox.html#mailbox.BabylMessage.remove_labelX-tr+Xlogging.Logger.addFilterr+(jjXFhttp://docs.python.org/3/library/logging.html#logging.Logger.addFilterX-tr+X object.__lt__r+(jjX?http://docs.python.org/3/reference/datamodel.html#object.__lt__X-tr+Xobject.__delitem__r+(jjXDhttp://docs.python.org/3/reference/datamodel.html#object.__delitem__X-tr+Xtelnetlib.Telnet.closer+(jjXFhttp://docs.python.org/3/library/telnetlib.html#telnetlib.Telnet.closeX-tr+X#calendar.Calendar.yeardatescalendarr+(jjXRhttp://docs.python.org/3/library/calendar.html#calendar.Calendar.yeardatescalendarX-tr+Xemail.charset.Charset.__eq__r+(jjXPhttp://docs.python.org/3/library/email.charset.html#email.charset.Charset.__eq__X-tr+Xpoplib.POP3.getwelcomer+(jjXChttp://docs.python.org/3/library/poplib.html#poplib.POP3.getwelcomeX-tr+Xarray.array.reverser+(jjX?http://docs.python.org/3/library/array.html#array.array.reverseX-tr+X!symtable.SymbolTable.is_optimizedr+(jjXPhttp://docs.python.org/3/library/symtable.html#symtable.SymbolTable.is_optimizedX-tr+X=xmlrpc.server.SimpleXMLRPCServer.register_multicall_functionsr+(jjXqhttp://docs.python.org/3/library/xmlrpc.server.html#xmlrpc.server.SimpleXMLRPCServer.register_multicall_functionsX-tr+Xlogging.Handler.filterr+(jjXDhttp://docs.python.org/3/library/logging.html#logging.Handler.filterX-tr+Xstring.Formatter.parser+(jjXChttp://docs.python.org/3/library/string.html#string.Formatter.parseX-tr+X+xml.sax.xmlreader.XMLReader.getErrorHandlerr+(jjX`http://docs.python.org/3/library/xml.sax.reader.html#xml.sax.xmlreader.XMLReader.getErrorHandlerX-tr+X)html.parser.HTMLParser.handle_startendtagr+(jjX[http://docs.python.org/3/library/html.parser.html#html.parser.HTMLParser.handle_startendtagX-tr+Ximaplib.IMAP4.deleteaclr+(jjXEhttp://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.deleteaclX-tr+Xmailbox.Mailbox.discardr+(jjXEhttp://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.discardX-tr+Xasyncio.Future.set_exceptionr+(jjXOhttp://docs.python.org/3/library/asyncio-task.html#asyncio.Future.set_exceptionX-tr+X6distutils.ccompiler.CCompiler.set_runtime_library_dirsr+(jjXehttp://docs.python.org/3/distutils/apiref.html#distutils.ccompiler.CCompiler.set_runtime_library_dirsX-tr+X configparser.ConfigParser.getintr+(jjXShttp://docs.python.org/3/library/configparser.html#configparser.ConfigParser.getintX-tr+Xsunau.AU_read.rewindr+(jjX@http://docs.python.org/3/library/sunau.html#sunau.AU_read.rewindX-tr+X(http.cookiejar.CookieJar.extract_cookiesr+(jjX]http://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.CookieJar.extract_cookiesX-tr+X unittest.TestCase.assertSetEqualr+(jjXOhttp://docs.python.org/3/library/unittest.html#unittest.TestCase.assertSetEqualX-tr+X int.to_bytesr+(jjX;http://docs.python.org/3/library/stdtypes.html#int.to_bytesX-tr+Xmultiprocessing.Queue.closer+(jjXQhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.Queue.closeX-tr+Xpoplib.POP3.set_debuglevelr+(jjXGhttp://docs.python.org/3/library/poplib.html#poplib.POP3.set_debuglevelX-tr+X/distutils.ccompiler.CCompiler.create_static_libr+(jjX^http://docs.python.org/3/distutils/apiref.html#distutils.ccompiler.CCompiler.create_static_libX-tr+X slice.indicesr+(jjX?http://docs.python.org/3/reference/datamodel.html#slice.indicesX-tr+Xsocket.socket.sharer+(jjX@http://docs.python.org/3/library/socket.html#socket.socket.shareX-tr+X"email.message.Message.__contains__r+(jjXVhttp://docs.python.org/3/library/email.message.html#email.message.Message.__contains__X-tr+X#sqlite3.Connection.create_aggregater+(jjXQhttp://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.create_aggregateX-tr+X*asyncio.DatagramProtocol.datagram_receivedr+(jjXahttp://docs.python.org/3/library/asyncio-protocol.html#asyncio.DatagramProtocol.datagram_receivedX-tr+Xftplib.FTP.storbinaryr+(jjXBhttp://docs.python.org/3/library/ftplib.html#ftplib.FTP.storbinaryX-tr+X#unittest.TextTestRunner._makeResultr+(jjXRhttp://docs.python.org/3/library/unittest.html#unittest.TextTestRunner._makeResultX-tr+Xlogging.Handler.formatr+(jjXDhttp://docs.python.org/3/library/logging.html#logging.Handler.formatX-tr+Xdifflib.Differ.comparer+(jjXDhttp://docs.python.org/3/library/difflib.html#difflib.Differ.compareX-tr+Ximaplib.IMAP4.responser+(jjXDhttp://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.responseX-tr+Xgettext.NullTranslations._parser+(jjXMhttp://docs.python.org/3/library/gettext.html#gettext.NullTranslations._parseX-tr+Xcollections.deque.popr+(jjXGhttp://docs.python.org/3/library/collections.html#collections.deque.popX-tr+Xobject.__setattr__r+(jjXDhttp://docs.python.org/3/reference/datamodel.html#object.__setattr__X-tr+X#http.client.HTTPResponse.getheadersr+(jjXUhttp://docs.python.org/3/library/http.client.html#http.client.HTTPResponse.getheadersX-tr+Xemail.policy.Policy.fold_binaryr+(jjXRhttp://docs.python.org/3/library/email.policy.html#email.policy.Policy.fold_binaryX-tr+Xdatetime.time.replacer+(jjXDhttp://docs.python.org/3/library/datetime.html#datetime.time.replaceX-tr+Xdecimal.Decimal.expr+(jjXAhttp://docs.python.org/3/library/decimal.html#decimal.Decimal.expX-tr+Xio.BufferedIOBase.readintor+(jjXChttp://docs.python.org/3/library/io.html#io.BufferedIOBase.readintoX-tr+Xftplib.FTP.ntransfercmdr+(jjXDhttp://docs.python.org/3/library/ftplib.html#ftplib.FTP.ntransfercmdX-tr+Xbdb.Bdb.dispatch_callr+(jjX?http://docs.python.org/3/library/bdb.html#bdb.Bdb.dispatch_callX-tr+X_thread.lock.acquirer+(jjXBhttp://docs.python.org/3/library/_thread.html#_thread.lock.acquireX-tr+Xarray.array.tolistr+(jjX>http://docs.python.org/3/library/array.html#array.array.tolistX-tr+X#configparser.ConfigParser.read_dictr+(jjXVhttp://docs.python.org/3/library/configparser.html#configparser.ConfigParser.read_dictX-tr+X'xml.sax.xmlreader.Locator.getLineNumberr+(jjX\http://docs.python.org/3/library/xml.sax.reader.html#xml.sax.xmlreader.Locator.getLineNumberX-tr+Xsocket.socket.recvfrom_intor+(jjXHhttp://docs.python.org/3/library/socket.html#socket.socket.recvfrom_intoX-tr+Xbdb.Bdb.dispatch_liner+(jjX?http://docs.python.org/3/library/bdb.html#bdb.Bdb.dispatch_lineX-tr+Xstruct.Struct.iter_unpackr+(jjXFhttp://docs.python.org/3/library/struct.html#struct.Struct.iter_unpackX-tr+Xftplib.FTP.cwdr+(jjX;http://docs.python.org/3/library/ftplib.html#ftplib.FTP.cwdX-tr+Xmailbox.MMDF.unlockr+(jjXAhttp://docs.python.org/3/library/mailbox.html#mailbox.MMDF.unlockX-tr+Xdecimal.Decimal.remainder_nearr+(jjXLhttp://docs.python.org/3/library/decimal.html#decimal.Decimal.remainder_nearX-tr+Xasyncio.Future.set_resultr+(jjXLhttp://docs.python.org/3/library/asyncio-task.html#asyncio.Future.set_resultX-tr+X)logging.handlers.SocketHandler.makeSocketr+(jjX`http://docs.python.org/3/library/logging.handlers.html#logging.handlers.SocketHandler.makeSocketX-tr+Xemail.message.Message.del_paramr+(jjXShttp://docs.python.org/3/library/email.message.html#email.message.Message.del_paramX-tr+Xtkinter.ttk.Widget.stater+(jjXJhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Widget.stateX-tr+X5xml.parsers.expat.xmlparser.StartNamespaceDeclHandlerr+(jjXchttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.xmlparser.StartNamespaceDeclHandlerX-tr+Xxdrlib.Unpacker.unpack_stringr,(jjXJhttp://docs.python.org/3/library/xdrlib.html#xdrlib.Unpacker.unpack_stringX-tr,X%logging.handlers.QueueListener.handler,(jjX\http://docs.python.org/3/library/logging.handlers.html#logging.handlers.QueueListener.handleX-tr,Xnntplib.NNTP.descriptionr,(jjXFhttp://docs.python.org/3/library/nntplib.html#nntplib.NNTP.descriptionX-tr,X'doctest.OutputChecker.output_differencer,(jjXUhttp://docs.python.org/3/library/doctest.html#doctest.OutputChecker.output_differenceX-tr,Xcurses.window.vliner,(jjX@http://docs.python.org/3/library/curses.html#curses.window.vlineX-tr ,Xwave.Wave_read.getnchannelsr ,(jjXFhttp://docs.python.org/3/library/wave.html#wave.Wave_read.getnchannelsX-tr ,X!multiprocessing.SimpleQueue.emptyr ,(jjXWhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.SimpleQueue.emptyX-tr ,X,email.headerregistry.HeaderRegistry.__call__r,(jjXghttp://docs.python.org/3/library/email.headerregistry.html#email.headerregistry.HeaderRegistry.__call__X-tr,Xwave.Wave_read.getmarkersr,(jjXDhttp://docs.python.org/3/library/wave.html#wave.Wave_read.getmarkersX-tr,Xobject.__rmod__r,(jjXAhttp://docs.python.org/3/reference/datamodel.html#object.__rmod__X-tr,X object.__le__r,(jjX?http://docs.python.org/3/reference/datamodel.html#object.__le__X-tr,Xcollections.Counter.updater,(jjXLhttp://docs.python.org/3/library/collections.html#collections.Counter.updateX-tr,Xasyncio.BaseEventLoop.timer,(jjXRhttp://docs.python.org/3/library/asyncio-eventloop.html#asyncio.BaseEventLoop.timeX-tr,Xtypes.MappingProxyType.getr,(jjXFhttp://docs.python.org/3/library/types.html#types.MappingProxyType.getX-tr,Xdecimal.Decimal.sqrtr,(jjXBhttp://docs.python.org/3/library/decimal.html#decimal.Decimal.sqrtX-tr,Xpoplib.POP3.retrr,(jjX=http://docs.python.org/3/library/poplib.html#poplib.POP3.retrX-tr,Xpathlib.Path.rmdirr ,(jjX@http://docs.python.org/3/library/pathlib.html#pathlib.Path.rmdirX-tr!,X1importlib.machinery.SourcelessFileLoader.get_coder",(jjXahttp://docs.python.org/3/library/importlib.html#importlib.machinery.SourcelessFileLoader.get_codeX-tr#,Xasyncio.StreamWriter.drainr$,(jjXOhttp://docs.python.org/3/library/asyncio-stream.html#asyncio.StreamWriter.drainX-tr%,Xmailbox.MaildirMessage.get_dater&,(jjXMhttp://docs.python.org/3/library/mailbox.html#mailbox.MaildirMessage.get_dateX-tr',X set.clearr(,(jjX8http://docs.python.org/3/library/stdtypes.html#set.clearX-tr),Xarray.array.tostringr*,(jjX@http://docs.python.org/3/library/array.html#array.array.tostringX-tr+,X)xml.sax.xmlreader.InputSource.setPublicIdr,,(jjX^http://docs.python.org/3/library/xml.sax.reader.html#xml.sax.xmlreader.InputSource.setPublicIdX-tr-,X-xml.sax.xmlreader.XMLReader.setEntityResolverr.,(jjXbhttp://docs.python.org/3/library/xml.sax.reader.html#xml.sax.xmlreader.XMLReader.setEntityResolverX-tr/,Xarray.array.frombytesr0,(jjXAhttp://docs.python.org/3/library/array.html#array.array.frombytesX-tr1,Xpoplib.POP3.pass_r2,(jjX>http://docs.python.org/3/library/poplib.html#poplib.POP3.pass_X-tr3,X(email.policy.Compat32.header_store_parser4,(jjX[http://docs.python.org/3/library/email.policy.html#email.policy.Compat32.header_store_parseX-tr5,Xcurses.panel.Panel.topr6,(jjXIhttp://docs.python.org/3/library/curses.panel.html#curses.panel.Panel.topX-tr7,X#logging.handlers.SysLogHandler.emitr8,(jjXZhttp://docs.python.org/3/library/logging.handlers.html#logging.handlers.SysLogHandler.emitX-tr9,Xlogging.Logger.findCallerr:,(jjXGhttp://docs.python.org/3/library/logging.html#logging.Logger.findCallerX-tr;,Xftplib.FTP_TLS.prot_cr<,(jjXBhttp://docs.python.org/3/library/ftplib.html#ftplib.FTP_TLS.prot_cX-tr=,Xdecimal.Decimal.is_signedr>,(jjXGhttp://docs.python.org/3/library/decimal.html#decimal.Decimal.is_signedX-tr?,Xsocketserver.BaseServer.filenor@,(jjXQhttp://docs.python.org/3/library/socketserver.html#socketserver.BaseServer.filenoX-trA,X$calendar.Calendar.monthdatescalendarrB,(jjXShttp://docs.python.org/3/library/calendar.html#calendar.Calendar.monthdatescalendarX-trC,X*importlib.machinery.FileFinder.find_loaderrD,(jjXZhttp://docs.python.org/3/library/importlib.html#importlib.machinery.FileFinder.find_loaderX-trE,X/distutils.ccompiler.CCompiler.find_library_filerF,(jjX^http://docs.python.org/3/distutils/apiref.html#distutils.ccompiler.CCompiler.find_library_fileX-trG,Xdis.Bytecode.disrH,(jjX:http://docs.python.org/3/library/dis.html#dis.Bytecode.disX-trI,Xfractions.Fraction.from_floatrJ,(jjXMhttp://docs.python.org/3/library/fractions.html#fractions.Fraction.from_floatX-trK,X&ipaddress.IPv6Network.compare_networksrL,(jjXVhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Network.compare_networksX-trM,Xcurses.window.scrollokrN,(jjXChttp://docs.python.org/3/library/curses.html#curses.window.scrollokX-trO,Xtkinter.ttk.Treeview.itemrP,(jjXKhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.itemX-trQ,Xlogging.FileHandler.closerR,(jjXPhttp://docs.python.org/3/library/logging.handlers.html#logging.FileHandler.closeX-trS,Xftplib.FTP.dirrT,(jjX;http://docs.python.org/3/library/ftplib.html#ftplib.FTP.dirX-trU,X-xml.sax.xmlreader.AttributesNS.getQNameByNamerV,(jjXbhttp://docs.python.org/3/library/xml.sax.reader.html#xml.sax.xmlreader.AttributesNS.getQNameByNameX-trW,X optparse.OptionParser.add_optionrX,(jjXOhttp://docs.python.org/3/library/optparse.html#optparse.OptionParser.add_optionX-trY,Xwebbrowser.controller.open_newrZ,(jjXOhttp://docs.python.org/3/library/webbrowser.html#webbrowser.controller.open_newX-tr[,X dict.itemsr\,(jjX9http://docs.python.org/3/library/stdtypes.html#dict.itemsX-tr],Xtkinter.ttk.Style.lookupr^,(jjXJhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Style.lookupX-tr_,Xlogging.FileHandler.emitr`,(jjXOhttp://docs.python.org/3/library/logging.handlers.html#logging.FileHandler.emitX-tra,Xdifflib.HtmlDiff.__init__rb,(jjXGhttp://docs.python.org/3/library/difflib.html#difflib.HtmlDiff.__init__X-trc,X*logging.handlers.MemoryHandler.shouldFlushrd,(jjXahttp://docs.python.org/3/library/logging.handlers.html#logging.handlers.MemoryHandler.shouldFlushX-tre,Xsmtplib.SMTP.has_extnrf,(jjXChttp://docs.python.org/3/library/smtplib.html#smtplib.SMTP.has_extnX-trg,X str.lstriprh,(jjX9http://docs.python.org/3/library/stdtypes.html#str.lstripX-tri,Xtelnetlib.Telnet.expectrj,(jjXGhttp://docs.python.org/3/library/telnetlib.html#telnetlib.Telnet.expectX-trk,Xhmac.HMAC.copyrl,(jjX9http://docs.python.org/3/library/hmac.html#hmac.HMAC.copyX-trm,X.asyncio.asyncio.subprocess.Process.send_signalrn,(jjXghttp://docs.python.org/3/library/asyncio-subprocess.html#asyncio.asyncio.subprocess.Process.send_signalX-tro,Xhashlib.hash.hexdigestrp,(jjXDhttp://docs.python.org/3/library/hashlib.html#hashlib.hash.hexdigestX-trq,Xftplib.FTP.connectrr,(jjX?http://docs.python.org/3/library/ftplib.html#ftplib.FTP.connectX-trs,Xbz2.BZ2Compressor.flushrt,(jjXAhttp://docs.python.org/3/library/bz2.html#bz2.BZ2Compressor.flushX-tru,X5distutils.ccompiler.CCompiler.add_runtime_library_dirrv,(jjXdhttp://docs.python.org/3/distutils/apiref.html#distutils.ccompiler.CCompiler.add_runtime_library_dirX-trw,Xweakref.finalize.peekrx,(jjXChttp://docs.python.org/3/library/weakref.html#weakref.finalize.peekX-try,Xsqlite3.Cursor.executescriptrz,(jjXJhttp://docs.python.org/3/library/sqlite3.html#sqlite3.Cursor.executescriptX-tr{,X$xml.etree.ElementTree.Element.appendr|,(jjX`http://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element.appendX-tr},Xbdb.Bdb.get_bpbynumberr~,(jjX@http://docs.python.org/3/library/bdb.html#bdb.Bdb.get_bpbynumberX-tr,Xmsilib.Control.conditionr,(jjXEhttp://docs.python.org/3/library/msilib.html#msilib.Control.conditionX-tr,Xemail.message.Message.__bytes__r,(jjXShttp://docs.python.org/3/library/email.message.html#email.message.Message.__bytes__X-tr,X"tkinter.ttk.Treeview.selection_setr,(jjXThttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.selection_setX-tr,Xdecimal.Decimal.logical_invertr,(jjXLhttp://docs.python.org/3/library/decimal.html#decimal.Decimal.logical_invertX-tr,Xconfigparser.optionxformr,(jjXKhttp://docs.python.org/3/library/configparser.html#configparser.optionxformX-tr,Xunittest.TestSuite.runr,(jjXEhttp://docs.python.org/3/library/unittest.html#unittest.TestSuite.runX-tr,Xdecimal.Context.subtractr,(jjXFhttp://docs.python.org/3/library/decimal.html#decimal.Context.subtractX-tr,Xdecimal.Context.create_decimalr,(jjXLhttp://docs.python.org/3/library/decimal.html#decimal.Context.create_decimalX-tr,X)urllib.request.OpenerDirector.add_handlerr,(jjX^http://docs.python.org/3/library/urllib.request.html#urllib.request.OpenerDirector.add_handlerX-tr,Xsocket.socket.recvmsg_intor,(jjXGhttp://docs.python.org/3/library/socket.html#socket.socket.recvmsg_intoX-tr,Xsunau.AU_write.writeframesrawr,(jjXIhttp://docs.python.org/3/library/sunau.html#sunau.AU_write.writeframesrawX-tr,X"sqlite3.Connection.create_functionr,(jjXPhttp://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.create_functionX-tr,Xsymtable.Symbol.get_namespacesr,(jjXMhttp://docs.python.org/3/library/symtable.html#symtable.Symbol.get_namespacesX-tr,Xdoctest.DocTestFinder.findr,(jjXHhttp://docs.python.org/3/library/doctest.html#doctest.DocTestFinder.findX-tr,Xformatter.writer.flushr,(jjXFhttp://docs.python.org/3/library/formatter.html#formatter.writer.flushX-tr,Xthreading.RLock.releaser,(jjXGhttp://docs.python.org/3/library/threading.html#threading.RLock.releaseX-tr,X(argparse.ArgumentParser.parse_known_argsr,(jjXWhttp://docs.python.org/3/library/argparse.html#argparse.ArgumentParser.parse_known_argsX-tr,Xlogging.Handler.acquirer,(jjXEhttp://docs.python.org/3/library/logging.html#logging.Handler.acquireX-tr,X pprint.PrettyPrinter.isrecursiver,(jjXMhttp://docs.python.org/3/library/pprint.html#pprint.PrettyPrinter.isrecursiveX-tr,Xdecimal.Context.is_finiter,(jjXGhttp://docs.python.org/3/library/decimal.html#decimal.Context.is_finiteX-tr,X list.sortr,(jjX8http://docs.python.org/3/library/stdtypes.html#list.sortX-tr,Xfractions.Fraction.from_decimalr,(jjXOhttp://docs.python.org/3/library/fractions.html#fractions.Fraction.from_decimalX-tr,Ximaplib.IMAP4.closer,(jjXAhttp://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.closeX-tr,Xcurses.window.keypadr,(jjXAhttp://docs.python.org/3/library/curses.html#curses.window.keypadX-tr,Xdatetime.datetime.utcoffsetr,(jjXJhttp://docs.python.org/3/library/datetime.html#datetime.datetime.utcoffsetX-tr,X&http.client.HTTPConnection.getresponser,(jjXXhttp://docs.python.org/3/library/http.client.html#http.client.HTTPConnection.getresponseX-tr,X$xml.etree.ElementTree.Element.remover,(jjX`http://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element.removeX-tr,Xxml.dom.minidom.Node.writexmlr,(jjXShttp://docs.python.org/3/library/xml.dom.minidom.html#xml.dom.minidom.Node.writexmlX-tr,Xcgi.FieldStorage.getfirstr,(jjXChttp://docs.python.org/3/library/cgi.html#cgi.FieldStorage.getfirstX-tr,Xftplib.FTP.rmdr,(jjX;http://docs.python.org/3/library/ftplib.html#ftplib.FTP.rmdX-tr,Xsymtable.SymbolTable.is_nestedr,(jjXMhttp://docs.python.org/3/library/symtable.html#symtable.SymbolTable.is_nestedX-tr,X%http.cookiejar.CookieJar.make_cookiesr,(jjXZhttp://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.CookieJar.make_cookiesX-tr,Xnntplib.NNTP.descriptionsr,(jjXGhttp://docs.python.org/3/library/nntplib.html#nntplib.NNTP.descriptionsX-tr,Xcurses.window.getparyxr,(jjXChttp://docs.python.org/3/library/curses.html#curses.window.getparyxX-tr,Xlogging.Logger.handler,(jjXChttp://docs.python.org/3/library/logging.html#logging.Logger.handleX-tr,Xcollections.ChainMap.new_childr,(jjXPhttp://docs.python.org/3/library/collections.html#collections.ChainMap.new_childX-tr,X%urllib.request.BaseHandler.add_parentr,(jjXZhttp://docs.python.org/3/library/urllib.request.html#urllib.request.BaseHandler.add_parentX-tr,Xcurses.window.getyxr,(jjX@http://docs.python.org/3/library/curses.html#curses.window.getyxX-tr,X)multiprocessing.managers.SyncManager.Lockr,(jjX_http://docs.python.org/3/library/multiprocessing.html#multiprocessing.managers.SyncManager.LockX-tr,Xselectors.BaseSelector.closer,(jjXLhttp://docs.python.org/3/library/selectors.html#selectors.BaseSelector.closeX-tr,Xunittest.TestCase.assertLessr,(jjXKhttp://docs.python.org/3/library/unittest.html#unittest.TestCase.assertLessX-tr,Xbdb.Bdb.dispatch_returnr,(jjXAhttp://docs.python.org/3/library/bdb.html#bdb.Bdb.dispatch_returnX-tr,Xcmd.Cmd.precmdr,(jjX8http://docs.python.org/3/library/cmd.html#cmd.Cmd.precmdX-tr,Xftplib.FTP.voidcmdr,(jjX?http://docs.python.org/3/library/ftplib.html#ftplib.FTP.voidcmdX-tr,Ximaplib.IMAP4.shutdownr,(jjXDhttp://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.shutdownX-tr,X'ossaudiodev.oss_mixer_device.get_recsrcr,(jjXYhttp://docs.python.org/3/library/ossaudiodev.html#ossaudiodev.oss_mixer_device.get_recsrcX-tr,X2urllib.request.HTTPBasicAuthHandler.http_error_401r,(jjXghttp://docs.python.org/3/library/urllib.request.html#urllib.request.HTTPBasicAuthHandler.http_error_401X-tr,Xcurses.window.setscrregr,(jjXDhttp://docs.python.org/3/library/curses.html#curses.window.setscrregX-tr,Ximp.NullImporter.find_moduler,(jjXFhttp://docs.python.org/3/library/imp.html#imp.NullImporter.find_moduleX-tr,X4xml.parsers.expat.xmlparser.ExternalEntityRefHandlerr,(jjXbhttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.xmlparser.ExternalEntityRefHandlerX-tr,X-multiprocessing.managers.BaseManager.registerr,(jjXchttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.managers.BaseManager.registerX-tr,X'xml.dom.pulldom.DOMEventStream.getEventr,(jjX]http://docs.python.org/3/library/xml.dom.pulldom.html#xml.dom.pulldom.DOMEventStream.getEventX-tr,X asyncio.DatagramTransport.sendtor,(jjXWhttp://docs.python.org/3/library/asyncio-protocol.html#asyncio.DatagramTransport.sendtoX-tr,Xtkinter.ttk.Notebook.indexr,(jjXLhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Notebook.indexX-tr,Xobject.__rdivmod__r,(jjXDhttp://docs.python.org/3/reference/datamodel.html#object.__rdivmod__X-tr,Xsocket.socket.acceptr,(jjXAhttp://docs.python.org/3/library/socket.html#socket.socket.acceptX-tr,Xio.BufferedIOBase.writer,(jjX@http://docs.python.org/3/library/io.html#io.BufferedIOBase.writeX-tr,Xasyncio.Protocol.data_receivedr,(jjXUhttp://docs.python.org/3/library/asyncio-protocol.html#asyncio.Protocol.data_receivedX-tr,X symtable.Function.get_parametersr,(jjXOhttp://docs.python.org/3/library/symtable.html#symtable.Function.get_parametersX-tr,Xsocket.socket.sendr,(jjX?http://docs.python.org/3/library/socket.html#socket.socket.sendX-tr,X&xml.etree.ElementTree.ElementTree.iterr,(jjXbhttp://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.ElementTree.iterX-tr,Xtarfile.TarFile.nextr,(jjXBhttp://docs.python.org/3/library/tarfile.html#tarfile.TarFile.nextX-tr,X"ossaudiodev.oss_audio_device.resetr,(jjXThttp://docs.python.org/3/library/ossaudiodev.html#ossaudiodev.oss_audio_device.resetX-tr,Xpathlib.Path.lstatr,(jjX@http://docs.python.org/3/library/pathlib.html#pathlib.Path.lstatX-tr,X)xml.etree.ElementTree.Element.getchildrenr-(jjXehttp://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element.getchildrenX-tr-X(configparser.RawConfigParser.add_sectionr-(jjX[http://docs.python.org/3/library/configparser.html#configparser.RawConfigParser.add_sectionX-tr-Xasyncore.dispatcher.handle_exptr-(jjXNhttp://docs.python.org/3/library/asyncore.html#asyncore.dispatcher.handle_exptX-tr-X msilib.Directory.start_componentr-(jjXMhttp://docs.python.org/3/library/msilib.html#msilib.Directory.start_componentX-tr-X asyncio.WriteTransport.write_eofr-(jjXWhttp://docs.python.org/3/library/asyncio-protocol.html#asyncio.WriteTransport.write_eofX-tr -Xio.IOBase.readliner -(jjX;http://docs.python.org/3/library/io.html#io.IOBase.readlineX-tr -Xpdb.Pdb.runevalr -(jjX9http://docs.python.org/3/library/pdb.html#pdb.Pdb.runevalX-tr -Xcurses.window.getbkgdr-(jjXBhttp://docs.python.org/3/library/curses.html#curses.window.getbkgdX-tr-X calendar.HTMLCalendar.formatyearr-(jjXOhttp://docs.python.org/3/library/calendar.html#calendar.HTMLCalendar.formatyearX-tr-Xsocket.socket.dupr-(jjX>http://docs.python.org/3/library/socket.html#socket.socket.dupX-tr-Xmmap.mmap.rfindr-(jjX:http://docs.python.org/3/library/mmap.html#mmap.mmap.rfindX-tr-Xemail.parser.Parser.parser-(jjXLhttp://docs.python.org/3/library/email.parser.html#email.parser.Parser.parseX-tr-Ximaplib.IMAP4.logoutr-(jjXBhttp://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.logoutX-tr-Xthreading.RLock.acquirer-(jjXGhttp://docs.python.org/3/library/threading.html#threading.RLock.acquireX-tr-Xxml.dom.NodeList.itemr-(jjXChttp://docs.python.org/3/library/xml.dom.html#xml.dom.NodeList.itemX-tr-X)unittest.TestLoader.loadTestsFromTestCaser-(jjXXhttp://docs.python.org/3/library/unittest.html#unittest.TestLoader.loadTestsFromTestCaseX-tr-Xemail.generator.Generator.cloner -(jjXUhttp://docs.python.org/3/library/email.generator.html#email.generator.Generator.cloneX-tr!-Xobject.__index__r"-(jjXBhttp://docs.python.org/3/reference/datamodel.html#object.__index__X-tr#-Xdecimal.Decimal.comparer$-(jjXEhttp://docs.python.org/3/library/decimal.html#decimal.Decimal.compareX-tr%-X email.contentmanager.set_contentr&-(jjX[http://docs.python.org/3/library/email.contentmanager.html#email.contentmanager.set_contentX-tr'-X!http.cookiejar.FileCookieJar.loadr(-(jjXVhttp://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.FileCookieJar.loadX-tr)-Xselect.devpoll.modifyr*-(jjXBhttp://docs.python.org/3/library/select.html#select.devpoll.modifyX-tr+-Xsymtable.SymbolTable.get_typer,-(jjXLhttp://docs.python.org/3/library/symtable.html#symtable.SymbolTable.get_typeX-tr--X%xml.sax.xmlreader.Locator.getSystemIdr.-(jjXZhttp://docs.python.org/3/library/xml.sax.reader.html#xml.sax.xmlreader.Locator.getSystemIdX-tr/-Xunittest.TestCase.assertTruer0-(jjXKhttp://docs.python.org/3/library/unittest.html#unittest.TestCase.assertTrueX-tr1-Xio.IOBase.writelinesr2-(jjX=http://docs.python.org/3/library/io.html#io.IOBase.writelinesX-tr3-X&xml.sax.xmlreader.XMLReader.setFeaturer4-(jjX[http://docs.python.org/3/library/xml.sax.reader.html#xml.sax.xmlreader.XMLReader.setFeatureX-tr5-Xnntplib.NNTP.starttlsr6-(jjXChttp://docs.python.org/3/library/nntplib.html#nntplib.NNTP.starttlsX-tr7-Xtelnetlib.Telnet.mt_interactr8-(jjXLhttp://docs.python.org/3/library/telnetlib.html#telnetlib.Telnet.mt_interactX-tr9-Xasynchat.async_chat.pushr:-(jjXGhttp://docs.python.org/3/library/asynchat.html#asynchat.async_chat.pushX-tr;-Xpickle.Unpickler.loadr<-(jjXBhttp://docs.python.org/3/library/pickle.html#pickle.Unpickler.loadX-tr=-X!decimal.Decimal.to_integral_valuer>-(jjXOhttp://docs.python.org/3/library/decimal.html#decimal.Decimal.to_integral_valueX-tr?-Xemail.message.Message.valuesr@-(jjXPhttp://docs.python.org/3/library/email.message.html#email.message.Message.valuesX-trA-Xre.match.startrB-(jjX7http://docs.python.org/3/library/re.html#re.match.startX-trC-Xformatter.writer.send_hor_rulerD-(jjXNhttp://docs.python.org/3/library/formatter.html#formatter.writer.send_hor_ruleX-trE-X str.rindexrF-(jjX9http://docs.python.org/3/library/stdtypes.html#str.rindexX-trG-X$configparser.ConfigParser.has_optionrH-(jjXWhttp://docs.python.org/3/library/configparser.html#configparser.ConfigParser.has_optionX-trI-Xcmd.Cmd.completedefaultrJ-(jjXAhttp://docs.python.org/3/library/cmd.html#cmd.Cmd.completedefaultX-trK-Xsunau.AU_read.tellrL-(jjX>http://docs.python.org/3/library/sunau.html#sunau.AU_read.tellX-trM-X"distutils.text_file.TextFile.closerN-(jjXQhttp://docs.python.org/3/distutils/apiref.html#distutils.text_file.TextFile.closeX-trO-Ximaplib.IMAP4.myrightsrP-(jjXDhttp://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.myrightsX-trQ-X!logging.Formatter.formatExceptionrR-(jjXOhttp://docs.python.org/3/library/logging.html#logging.Formatter.formatExceptionX-trS-Xpoplib.POP3.delerT-(jjX=http://docs.python.org/3/library/poplib.html#poplib.POP3.deleX-trU-X%tkinter.ttk.Treeview.selection_togglerV-(jjXWhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.selection_toggleX-trW-Xmailbox.MMDFMessage.set_fromrX-(jjXJhttp://docs.python.org/3/library/mailbox.html#mailbox.MMDFMessage.set_fromX-trY-X,distutils.ccompiler.CCompiler.undefine_macrorZ-(jjX[http://docs.python.org/3/distutils/apiref.html#distutils.ccompiler.CCompiler.undefine_macroX-tr[-X%configparser.ConfigParser.optionxformr\-(jjXXhttp://docs.python.org/3/library/configparser.html#configparser.ConfigParser.optionxformX-tr]-X&wsgiref.handlers.BaseHandler.get_stdinr^-(jjXThttp://docs.python.org/3/library/wsgiref.html#wsgiref.handlers.BaseHandler.get_stdinX-tr_-Xaifc.aifc.setnframesr`-(jjX?http://docs.python.org/3/library/aifc.html#aifc.aifc.setnframesX-tra-Xselect.devpoll.pollrb-(jjX@http://docs.python.org/3/library/select.html#select.devpoll.pollX-trc-Xselect.poll.registerrd-(jjXAhttp://docs.python.org/3/library/select.html#select.poll.registerX-tre-X%http.cookiejar.CookiePolicy.return_okrf-(jjXZhttp://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.CookiePolicy.return_okX-trg-Xio.RawIOBase.readallrh-(jjX=http://docs.python.org/3/library/io.html#io.RawIOBase.readallX-tri-X*logging.handlers.SysLogHandler.mapPriorityrj-(jjXahttp://docs.python.org/3/library/logging.handlers.html#logging.handlers.SysLogHandler.mapPriorityX-trk-Xwave.Wave_read.rewindrl-(jjX@http://docs.python.org/3/library/wave.html#wave.Wave_read.rewindX-trm-Xdecimal.Context.plusrn-(jjXBhttp://docs.python.org/3/library/decimal.html#decimal.Context.plusX-tro-Xcodecs.Codec.decoderp-(jjX@http://docs.python.org/3/library/codecs.html#codecs.Codec.decodeX-trq-X%xml.etree.ElementTree.XMLParser.closerr-(jjXahttp://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.XMLParser.closeX-trs-X'html.parser.HTMLParser.handle_entityrefrt-(jjXYhttp://docs.python.org/3/library/html.parser.html#html.parser.HTMLParser.handle_entityrefX-tru-X*xml.sax.handler.ContentHandler.endDocumentrv-(jjX`http://docs.python.org/3/library/xml.sax.handler.html#xml.sax.handler.ContentHandler.endDocumentX-trw-X#importlib.abc.SourceLoader.get_coderx-(jjXShttp://docs.python.org/3/library/importlib.html#importlib.abc.SourceLoader.get_codeX-try-Xshelve.Shelf.syncrz-(jjX>http://docs.python.org/3/library/shelve.html#shelve.Shelf.syncX-tr{-Ximaplib.IMAP4.threadr|-(jjXBhttp://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.threadX-tr}-Xsqlite3.Cursor.executemanyr~-(jjXHhttp://docs.python.org/3/library/sqlite3.html#sqlite3.Cursor.executemanyX-tr-Xdecimal.Decimal.minr-(jjXAhttp://docs.python.org/3/library/decimal.html#decimal.Decimal.minX-tr-X"asyncio.StreamReader.set_transportr-(jjXWhttp://docs.python.org/3/library/asyncio-stream.html#asyncio.StreamReader.set_transportX-tr-X&socketserver.BaseServer.verify_requestr-(jjXYhttp://docs.python.org/3/library/socketserver.html#socketserver.BaseServer.verify_requestX-tr-X$asyncio.BaseTransport.get_extra_infor-(jjX[http://docs.python.org/3/library/asyncio-protocol.html#asyncio.BaseTransport.get_extra_infoX-tr-Xinspect.Signature.replacer-(jjXGhttp://docs.python.org/3/library/inspect.html#inspect.Signature.replaceX-tr-X)asyncio.BaseSubprocessTransport.terminater-(jjX`http://docs.python.org/3/library/asyncio-protocol.html#asyncio.BaseSubprocessTransport.terminateX-tr-Xselect.epoll.modifyr-(jjX@http://docs.python.org/3/library/select.html#select.epoll.modifyX-tr-Xunittest.mock.Mock.attach_mockr-(jjXRhttp://docs.python.org/3/library/unittest.mock.html#unittest.mock.Mock.attach_mockX-tr-Xdecimal.Context.clear_trapsr-(jjXIhttp://docs.python.org/3/library/decimal.html#decimal.Context.clear_trapsX-tr-X&importlib.abc.InspectLoader.is_packager-(jjXVhttp://docs.python.org/3/library/importlib.html#importlib.abc.InspectLoader.is_packageX-tr-Xasyncio.AbstractServer.closer-(jjXThttp://docs.python.org/3/library/asyncio-eventloop.html#asyncio.AbstractServer.closeX-tr-Xzlib.Compress.compressr-(jjXAhttp://docs.python.org/3/library/zlib.html#zlib.Compress.compressX-tr-X!formatter.formatter.end_paragraphr-(jjXQhttp://docs.python.org/3/library/formatter.html#formatter.formatter.end_paragraphX-tr-Xdecimal.Decimal.radixr-(jjXChttp://docs.python.org/3/library/decimal.html#decimal.Decimal.radixX-tr-Xpathlib.Path.is_block_devicer-(jjXJhttp://docs.python.org/3/library/pathlib.html#pathlib.Path.is_block_deviceX-tr-X%multiprocessing.Connection.send_bytesr-(jjX[http://docs.python.org/3/library/multiprocessing.html#multiprocessing.Connection.send_bytesX-tr-X"asynchat.async_chat.set_terminatorr-(jjXQhttp://docs.python.org/3/library/asynchat.html#asynchat.async_chat.set_terminatorX-tr-Xpathlib.PurePath.with_namer-(jjXHhttp://docs.python.org/3/library/pathlib.html#pathlib.PurePath.with_nameX-tr-Xshelve.Shelf.closer-(jjX?http://docs.python.org/3/library/shelve.html#shelve.Shelf.closeX-tr-Xdatetime.tzinfo.fromutcr-(jjXFhttp://docs.python.org/3/library/datetime.html#datetime.tzinfo.fromutcX-tr-Xwave.Wave_write.tellr-(jjX?http://docs.python.org/3/library/wave.html#wave.Wave_write.tellX-tr-Xcurses.window.touchwinr-(jjXChttp://docs.python.org/3/library/curses.html#curses.window.touchwinX-tr-Xwave.Wave_read.getcomptyper-(jjXEhttp://docs.python.org/3/library/wave.html#wave.Wave_read.getcomptypeX-tr-X-xmlrpc.server.DocXMLRPCServer.set_server_namer-(jjXahttp://docs.python.org/3/library/xmlrpc.server.html#xmlrpc.server.DocXMLRPCServer.set_server_nameX-tr-X#asyncio.StreamWriter.get_extra_infor-(jjXXhttp://docs.python.org/3/library/asyncio-stream.html#asyncio.StreamWriter.get_extra_infoX-tr-X.logging.handlers.TimedRotatingFileHandler.emitr-(jjXehttp://docs.python.org/3/library/logging.handlers.html#logging.handlers.TimedRotatingFileHandler.emitX-tr-Xmailbox.Babyl.unlockr-(jjXBhttp://docs.python.org/3/library/mailbox.html#mailbox.Babyl.unlockX-tr-X*distutils.ccompiler.CCompiler.define_macror-(jjXYhttp://docs.python.org/3/distutils/apiref.html#distutils.ccompiler.CCompiler.define_macroX-tr-Xcollections.deque.remover-(jjXJhttp://docs.python.org/3/library/collections.html#collections.deque.removeX-tr-X"http.client.HTTPConnection.connectr-(jjXThttp://docs.python.org/3/library/http.client.html#http.client.HTTPConnection.connectX-tr-X=urllib.request.AbstractBasicAuthHandler.http_error_auth_reqedr-(jjXrhttp://docs.python.org/3/library/urllib.request.html#urllib.request.AbstractBasicAuthHandler.http_error_auth_reqedX-tr-Xobject.__set__r-(jjX@http://docs.python.org/3/reference/datamodel.html#object.__set__X-tr-X/urllib.request.HTTPErrorProcessor.http_responser-(jjXdhttp://docs.python.org/3/library/urllib.request.html#urllib.request.HTTPErrorProcessor.http_responseX-tr-Xsunau.AU_write.setsampwidthr-(jjXGhttp://docs.python.org/3/library/sunau.html#sunau.AU_write.setsampwidthX-tr-Xcurses.textpad.Textbox.editr-(jjXHhttp://docs.python.org/3/library/curses.html#curses.textpad.Textbox.editX-tr-X'xml.etree.ElementTree.XMLParser.doctyper-(jjXchttp://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.XMLParser.doctypeX-tr-Xunittest.TestCase.skipTestr-(jjXIhttp://docs.python.org/3/library/unittest.html#unittest.TestCase.skipTestX-tr-X-xml.sax.xmlreader.AttributesNS.getNameByQNamer-(jjXbhttp://docs.python.org/3/library/xml.sax.reader.html#xml.sax.xmlreader.AttributesNS.getNameByQNameX-tr-Xdecimal.Decimal.rotater-(jjXDhttp://docs.python.org/3/library/decimal.html#decimal.Decimal.rotateX-tr-X#sqlite3.Connection.create_collationr-(jjXQhttp://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.create_collationX-tr-Xlogging.Handler.removeFilterr-(jjXJhttp://docs.python.org/3/library/logging.html#logging.Handler.removeFilterX-tr-Xvenv.EnvBuilder.setup_pythonr-(jjXGhttp://docs.python.org/3/library/venv.html#venv.EnvBuilder.setup_pythonX-tr-X#wsgiref.handlers.BaseHandler._writer-(jjXQhttp://docs.python.org/3/library/wsgiref.html#wsgiref.handlers.BaseHandler._writeX-tr-Xcollections.Counter.most_commonr-(jjXQhttp://docs.python.org/3/library/collections.html#collections.Counter.most_commonX-tr-Xzipfile.ZipFile.closer-(jjXChttp://docs.python.org/3/library/zipfile.html#zipfile.ZipFile.closeX-tr-X!multiprocessing.pool.Pool.starmapr-(jjXWhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.pool.Pool.starmapX-tr-X gettext.GNUTranslations.ngettextr-(jjXNhttp://docs.python.org/3/library/gettext.html#gettext.GNUTranslations.ngettextX-tr-Xasyncio.BaseEventLoop.set_debugr-(jjXWhttp://docs.python.org/3/library/asyncio-eventloop.html#asyncio.BaseEventLoop.set_debugX-tr-X#argparse.ArgumentParser.get_defaultr-(jjXRhttp://docs.python.org/3/library/argparse.html#argparse.ArgumentParser.get_defaultX-tr-X"optparse.OptionParser.set_defaultsr-(jjXQhttp://docs.python.org/3/library/optparse.html#optparse.OptionParser.set_defaultsX-tr-X)xml.sax.xmlreader.Locator.getColumnNumberr-(jjX^http://docs.python.org/3/library/xml.sax.reader.html#xml.sax.xmlreader.Locator.getColumnNumberX-tr-X5xml.parsers.expat.xmlparser.UnparsedEntityDeclHandlerr-(jjXchttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.xmlparser.UnparsedEntityDeclHandlerX-tr-X2xmlrpc.server.SimpleXMLRPCServer.register_instancer-(jjXfhttp://docs.python.org/3/library/xmlrpc.server.html#xmlrpc.server.SimpleXMLRPCServer.register_instanceX-tr-X concurrent.futures.Future.cancelr-(jjXYhttp://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.Future.cancelX-tr-Xaifc.aifc.setnchannelsr-(jjXAhttp://docs.python.org/3/library/aifc.html#aifc.aifc.setnchannelsX-tr-X formatter.writer.send_label_datar-(jjXPhttp://docs.python.org/3/library/formatter.html#formatter.writer.send_label_dataX-tr-Xtkinter.ttk.Treeview.nextr-(jjXKhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.nextX-tr-Xre.match.expandr-(jjX8http://docs.python.org/3/library/re.html#re.match.expandX-tr-Xunittest.TestCase.assertEqualr-(jjXLhttp://docs.python.org/3/library/unittest.html#unittest.TestCase.assertEqualX-tr-Xtarfile.TarFile.extractallr-(jjXHhttp://docs.python.org/3/library/tarfile.html#tarfile.TarFile.extractallX-tr-X'xml.sax.xmlreader.XMLReader.getPropertyr-(jjX\http://docs.python.org/3/library/xml.sax.reader.html#xml.sax.xmlreader.XMLReader.getPropertyX-tr-X!selectors.BaseSelector.unregisterr-(jjXQhttp://docs.python.org/3/library/selectors.html#selectors.BaseSelector.unregisterX-tr-X(distutils.cmd.Command.initialize_optionsr-(jjXWhttp://docs.python.org/3/distutils/apiref.html#distutils.cmd.Command.initialize_optionsX-tr-Xtracemalloc.Snapshot.dumpr-(jjXKhttp://docs.python.org/3/library/tracemalloc.html#tracemalloc.Snapshot.dumpX-tr-X!unittest.TestResult.wasSuccessfulr.(jjXPhttp://docs.python.org/3/library/unittest.html#unittest.TestResult.wasSuccessfulX-tr.Xzipfile.ZipFile.printdirr.(jjXFhttp://docs.python.org/3/library/zipfile.html#zipfile.ZipFile.printdirX-tr.Xset.symmetric_difference_updater.(jjXNhttp://docs.python.org/3/library/stdtypes.html#set.symmetric_difference_updateX-tr.Xsymtable.Function.get_freesr.(jjXJhttp://docs.python.org/3/library/symtable.html#symtable.Function.get_freesX-tr.Xsunau.AU_read.getmarkersr.(jjXDhttp://docs.python.org/3/library/sunau.html#sunau.AU_read.getmarkersX-tr .Xpathlib.Path.globr .(jjX?http://docs.python.org/3/library/pathlib.html#pathlib.Path.globX-tr .X"doctest.DocTestRunner.report_startr .(jjXPhttp://docs.python.org/3/library/doctest.html#doctest.DocTestRunner.report_startX-tr .Xre.regex.splitr.(jjX7http://docs.python.org/3/library/re.html#re.regex.splitX-tr.X!email.generator.Generator.flattenr.(jjXWhttp://docs.python.org/3/library/email.generator.html#email.generator.Generator.flattenX-tr.Xselect.kqueue.controlr.(jjXBhttp://docs.python.org/3/library/select.html#select.kqueue.controlX-tr.X http.cookiejar.Cookie.is_expiredr.(jjXUhttp://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.Cookie.is_expiredX-tr.X!logging.handlers.SMTPHandler.emitr.(jjXXhttp://docs.python.org/3/library/logging.handlers.html#logging.handlers.SMTPHandler.emitX-tr.X#xml.etree.ElementTree.Element.itemsr.(jjX_http://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element.itemsX-tr.X+distutils.ccompiler.CCompiler.set_librariesr.(jjXZhttp://docs.python.org/3/distutils/apiref.html#distutils.ccompiler.CCompiler.set_librariesX-tr.Xinspect.Signature.bindr.(jjXDhttp://docs.python.org/3/library/inspect.html#inspect.Signature.bindX-tr.Xdatetime.date.__format__r.(jjXGhttp://docs.python.org/3/library/datetime.html#datetime.date.__format__X-tr.Xmultiprocessing.pool.Pool.joinr .(jjXThttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.pool.Pool.joinX-tr!.Xtarfile.TarInfo.frombufr".(jjXEhttp://docs.python.org/3/library/tarfile.html#tarfile.TarInfo.frombufX-tr#.Xmailbox.MH.packr$.(jjX=http://docs.python.org/3/library/mailbox.html#mailbox.MH.packX-tr%.X%code.InteractiveInterpreter.runsourcer&.(jjXPhttp://docs.python.org/3/library/code.html#code.InteractiveInterpreter.runsourceX-tr'.X&xml.etree.ElementTree.Element.findtextr(.(jjXbhttp://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element.findtextX-tr).Xio.TextIOBase.tellr*.(jjX;http://docs.python.org/3/library/io.html#io.TextIOBase.tellX-tr+.Xxdrlib.Packer.pack_farrayr,.(jjXFhttp://docs.python.org/3/library/xdrlib.html#xdrlib.Packer.pack_farrayX-tr-.X wsgiref.handlers.BaseHandler.runr..(jjXNhttp://docs.python.org/3/library/wsgiref.html#wsgiref.handlers.BaseHandler.runX-tr/.X asyncore.dispatcher.handle_writer0.(jjXOhttp://docs.python.org/3/library/asyncore.html#asyncore.dispatcher.handle_writeX-tr1.Xobject.__itruediv__r2.(jjXEhttp://docs.python.org/3/reference/datamodel.html#object.__itruediv__X-tr3.X'asyncio.BaseSubprocessTransport.get_pidr4.(jjX^http://docs.python.org/3/library/asyncio-protocol.html#asyncio.BaseSubprocessTransport.get_pidX-tr5.Xbytearray.translater6.(jjXBhttp://docs.python.org/3/library/stdtypes.html#bytearray.translateX-tr7.Xsmtplib.SMTP.ehlor8.(jjX?http://docs.python.org/3/library/smtplib.html#smtplib.SMTP.ehloX-tr9.X(asyncio.BaseEventLoop.create_unix_serverr:.(jjX`http://docs.python.org/3/library/asyncio-eventloop.html#asyncio.BaseEventLoop.create_unix_serverX-tr;.Xsocket.socket.detachr<.(jjXAhttp://docs.python.org/3/library/socket.html#socket.socket.detachX-tr=.Xasyncio.StreamReader.readr>.(jjXNhttp://docs.python.org/3/library/asyncio-stream.html#asyncio.StreamReader.readX-tr?.X+code.InteractiveInterpreter.showsyntaxerrorr@.(jjXVhttp://docs.python.org/3/library/code.html#code.InteractiveInterpreter.showsyntaxerrorX-trA.X+multiprocessing.managers.BaseProxy.__repr__rB.(jjXahttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.managers.BaseProxy.__repr__X-trC.Xtkinter.ttk.Treeview.identifyrD.(jjXOhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.identifyX-trE.Xmultiprocessing.Process.runrF.(jjXQhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.Process.runX-trG.X%ossaudiodev.oss_mixer_device.controlsrH.(jjXWhttp://docs.python.org/3/library/ossaudiodev.html#ossaudiodev.oss_mixer_device.controlsX-trI.Xsunau.AU_read.closerJ.(jjX?http://docs.python.org/3/library/sunau.html#sunau.AU_read.closeX-trK.Xstr.capitalizerL.(jjX=http://docs.python.org/3/library/stdtypes.html#str.capitalizeX-trM.Xmailbox.MMDF.get_filerN.(jjXChttp://docs.python.org/3/library/mailbox.html#mailbox.MMDF.get_fileX-trO.X(xml.sax.xmlreader.AttributesNS.getQNamesrP.(jjX]http://docs.python.org/3/library/xml.sax.reader.html#xml.sax.xmlreader.AttributesNS.getQNamesX-trQ.X/wsgiref.simple_server.WSGIRequestHandler.handlerR.(jjX]http://docs.python.org/3/library/wsgiref.html#wsgiref.simple_server.WSGIRequestHandler.handleX-trS.X&importlib.abc.SourceLoader.load_modulerT.(jjXVhttp://docs.python.org/3/library/importlib.html#importlib.abc.SourceLoader.load_moduleX-trU.Xdecimal.Decimal.is_infiniterV.(jjXIhttp://docs.python.org/3/library/decimal.html#decimal.Decimal.is_infiniteX-trW.Xobject.__getnewargs_ex__rX.(jjXEhttp://docs.python.org/3/library/pickle.html#object.__getnewargs_ex__X-trY.Xsymtable.SymbolTable.get_linenorZ.(jjXNhttp://docs.python.org/3/library/symtable.html#symtable.SymbolTable.get_linenoX-tr[.X"zipimport.zipimporter.get_filenamer\.(jjXRhttp://docs.python.org/3/library/zipimport.html#zipimport.zipimporter.get_filenameX-tr].X"configparser.ConfigParser.sectionsr^.(jjXUhttp://docs.python.org/3/library/configparser.html#configparser.ConfigParser.sectionsX-tr_.Xdatetime.datetime.ctimer`.(jjXFhttp://docs.python.org/3/library/datetime.html#datetime.datetime.ctimeX-tra.Xtarfile.TarInfo.isblkrb.(jjXChttp://docs.python.org/3/library/tarfile.html#tarfile.TarInfo.isblkX-trc.Xunittest.TestCase.tearDownClassrd.(jjXNhttp://docs.python.org/3/library/unittest.html#unittest.TestCase.tearDownClassX-tre.Xdatetime.datetime.timetzrf.(jjXGhttp://docs.python.org/3/library/datetime.html#datetime.datetime.timetzX-trg.X$symtable.SymbolTable.get_identifiersrh.(jjXShttp://docs.python.org/3/library/symtable.html#symtable.SymbolTable.get_identifiersX-tri.Xtrace.Trace.runctxrj.(jjX>http://docs.python.org/3/library/trace.html#trace.Trace.runctxX-trk.X%importlib.abc.SourceLoader.path_mtimerl.(jjXUhttp://docs.python.org/3/library/importlib.html#importlib.abc.SourceLoader.path_mtimeX-trm.X%http.client.HTTPConnection.set_tunnelrn.(jjXWhttp://docs.python.org/3/library/http.client.html#http.client.HTTPConnection.set_tunnelX-tro.Xpathlib.Path.symlink_torp.(jjXEhttp://docs.python.org/3/library/pathlib.html#pathlib.Path.symlink_toX-trq.Xbdb.Bdb.runctxrr.(jjX8http://docs.python.org/3/library/bdb.html#bdb.Bdb.runctxX-trs.Xdatetime.date.ctimert.(jjXBhttp://docs.python.org/3/library/datetime.html#datetime.date.ctimeX-tru.X#xml.dom.Element.removeAttributeNoderv.(jjXQhttp://docs.python.org/3/library/xml.dom.html#xml.dom.Element.removeAttributeNodeX-trw.Xobject.__rtruediv__rx.(jjXEhttp://docs.python.org/3/reference/datamodel.html#object.__rtruediv__X-try.Xmailbox.Mailbox.get_bytesrz.(jjXGhttp://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.get_bytesX-tr{.X.asyncio.AbstractEventLoopPolicy.set_event_loopr|.(jjXfhttp://docs.python.org/3/library/asyncio-eventloop.html#asyncio.AbstractEventLoopPolicy.set_event_loopX-tr}.X'xml.etree.ElementTree.TreeBuilder.closer~.(jjXchttp://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.TreeBuilder.closeX-tr.Xemail.header.Header.__str__r.(jjXNhttp://docs.python.org/3/library/email.header.html#email.header.Header.__str__X-tr.Xmailbox.Mailbox.__delitem__r.(jjXIhttp://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.__delitem__X-tr.Xmailbox.Maildir.unlockr.(jjXDhttp://docs.python.org/3/library/mailbox.html#mailbox.Maildir.unlockX-tr.Xmailbox.Mailbox.__getitem__r.(jjXIhttp://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.__getitem__X-tr.Xmultiprocessing.pool.Pool.mapr.(jjXShttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.pool.Pool.mapX-tr.X!asyncore.dispatcher.handle_acceptr.(jjXPhttp://docs.python.org/3/library/asyncore.html#asyncore.dispatcher.handle_acceptX-tr.Xasyncio.JoinableQueue.task_doner.(jjXRhttp://docs.python.org/3/library/asyncio-sync.html#asyncio.JoinableQueue.task_doneX-tr.Xsunau.AU_write.setnchannelsr.(jjXGhttp://docs.python.org/3/library/sunau.html#sunau.AU_write.setnchannelsX-tr.Xzipfile.ZipFile.openr.(jjXBhttp://docs.python.org/3/library/zipfile.html#zipfile.ZipFile.openX-tr.Xtkinter.ttk.Treeview.mover.(jjXKhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.moveX-tr.Xabc.ABCMeta.registerr.(jjX>http://docs.python.org/3/library/abc.html#abc.ABCMeta.registerX-tr.Xsocket.socket.shutdownr.(jjXChttp://docs.python.org/3/library/socket.html#socket.socket.shutdownX-tr.X'email.charset.Charset.get_body_encodingr.(jjX[http://docs.python.org/3/library/email.charset.html#email.charset.Charset.get_body_encodingX-tr.Xunittest.TestCase.assertNotInr.(jjXLhttp://docs.python.org/3/library/unittest.html#unittest.TestCase.assertNotInX-tr.Xio.BufferedReader.peekr.(jjX?http://docs.python.org/3/library/io.html#io.BufferedReader.peekX-tr.Xre.regex.searchr.(jjX8http://docs.python.org/3/library/re.html#re.regex.searchX-tr.Xstruct.Struct.packr.(jjX?http://docs.python.org/3/library/struct.html#struct.Struct.packX-tr.Xobject.__hash__r.(jjXAhttp://docs.python.org/3/reference/datamodel.html#object.__hash__X-tr.X str.casefoldr.(jjX;http://docs.python.org/3/library/stdtypes.html#str.casefoldX-tr.Xctypes._CData.from_paramr.(jjXEhttp://docs.python.org/3/library/ctypes.html#ctypes._CData.from_paramX-tr.Xio.IOBase.tellr.(jjX7http://docs.python.org/3/library/io.html#io.IOBase.tellX-tr.Xmemoryview.__eq__r.(jjX@http://docs.python.org/3/library/stdtypes.html#memoryview.__eq__X-tr.X*xml.etree.ElementTree.ElementTree._setrootr.(jjXfhttp://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.ElementTree._setrootX-tr.Xcurses.window.getkeyr.(jjXAhttp://docs.python.org/3/library/curses.html#curses.window.getkeyX-tr.Xmailbox.MMDF.lockr.(jjX?http://docs.python.org/3/library/mailbox.html#mailbox.MMDF.lockX-tr.X&xml.dom.Element.getElementsByTagNameNSr.(jjXThttp://docs.python.org/3/library/xml.dom.html#xml.dom.Element.getElementsByTagNameNSX-tr.Xunittest.TestCase.failr.(jjXEhttp://docs.python.org/3/library/unittest.html#unittest.TestCase.failX-tr.X+difflib.SequenceMatcher.get_grouped_opcodesr.(jjXYhttp://docs.python.org/3/library/difflib.html#difflib.SequenceMatcher.get_grouped_opcodesX-tr.Xobject.__sub__r.(jjX@http://docs.python.org/3/reference/datamodel.html#object.__sub__X-tr.Xobject.__ixor__r.(jjXAhttp://docs.python.org/3/reference/datamodel.html#object.__ixor__X-tr.Xnntplib.NNTP.postr.(jjX?http://docs.python.org/3/library/nntplib.html#nntplib.NNTP.postX-tr.Xzlib.Decompress.copyr.(jjX?http://docs.python.org/3/library/zlib.html#zlib.Decompress.copyX-tr.X$argparse.ArgumentParser.format_usager.(jjXShttp://docs.python.org/3/library/argparse.html#argparse.ArgumentParser.format_usageX-tr.Xcurses.window.getbegyxr.(jjXChttp://docs.python.org/3/library/curses.html#curses.window.getbegyxX-tr.X!calendar.TextCalendar.formatmonthr.(jjXPhttp://docs.python.org/3/library/calendar.html#calendar.TextCalendar.formatmonthX-tr.X!email.message.Message.set_charsetr.(jjXUhttp://docs.python.org/3/library/email.message.html#email.message.Message.set_charsetX-tr.X$asyncio.BaseProtocol.connection_mader.(jjX[http://docs.python.org/3/library/asyncio-protocol.html#asyncio.BaseProtocol.connection_madeX-tr.X"email.message.Message.get_filenamer.(jjXVhttp://docs.python.org/3/library/email.message.html#email.message.Message.get_filenameX-tr.Xdecimal.Decimal.quantizer.(jjXFhttp://docs.python.org/3/library/decimal.html#decimal.Decimal.quantizeX-tr.Xmmap.mmap.readliner.(jjX=http://docs.python.org/3/library/mmap.html#mmap.mmap.readlineX-tr.X multiprocessing.Process.is_aliver.(jjXVhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.Process.is_aliveX-tr.X multiprocessing.Connection.closer.(jjXVhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.Connection.closeX-tr.Xtelnetlib.Telnet.read_sb_datar.(jjXMhttp://docs.python.org/3/library/telnetlib.html#telnetlib.Telnet.read_sb_dataX-tr.Xmailbox.mboxMessage.get_flagsr.(jjXKhttp://docs.python.org/3/library/mailbox.html#mailbox.mboxMessage.get_flagsX-tr.Xmailbox.Mailbox.get_filer.(jjXFhttp://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.get_fileX-tr.Xasyncio.WriteTransport.writer.(jjXShttp://docs.python.org/3/library/asyncio-protocol.html#asyncio.WriteTransport.writeX-tr.X&socketserver.BaseServer.handle_timeoutr.(jjXYhttp://docs.python.org/3/library/socketserver.html#socketserver.BaseServer.handle_timeoutX-tr.Xpdb.Pdb.runcallr.(jjX9http://docs.python.org/3/library/pdb.html#pdb.Pdb.runcallX-tr.Xobject.__xor__r.(jjX@http://docs.python.org/3/reference/datamodel.html#object.__xor__X-tr.X/email.headerregistry.HeaderRegistry.map_to_typer.(jjXjhttp://docs.python.org/3/library/email.headerregistry.html#email.headerregistry.HeaderRegistry.map_to_typeX-tr.Xast.NodeVisitor.visitr.(jjX?http://docs.python.org/3/library/ast.html#ast.NodeVisitor.visitX-tr.Xcurses.window.subpadr.(jjXAhttp://docs.python.org/3/library/curses.html#curses.window.subpadX-tr.X!asyncio.BaseEventLoop.run_foreverr.(jjXYhttp://docs.python.org/3/library/asyncio-eventloop.html#asyncio.BaseEventLoop.run_foreverX-tr.Xsymtable.Symbol.is_importedr.(jjXJhttp://docs.python.org/3/library/symtable.html#symtable.Symbol.is_importedX-tr.Xthreading.Event.clearr.(jjXEhttp://docs.python.org/3/library/threading.html#threading.Event.clearX-tr.Xmailbox.MHMessage.set_sequencesr.(jjXMhttp://docs.python.org/3/library/mailbox.html#mailbox.MHMessage.set_sequencesX-tr.Ximaplib.IMAP4.setannotationr.(jjXIhttp://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.setannotationX-tr.X#distutils.ccompiler.CCompiler.spawnr.(jjXRhttp://docs.python.org/3/distutils/apiref.html#distutils.ccompiler.CCompiler.spawnX-tr.Xdecimal.Decimal.is_qnanr.(jjXEhttp://docs.python.org/3/library/decimal.html#decimal.Decimal.is_qnanX-tr.Xftplib.FTP.renamer.(jjX>http://docs.python.org/3/library/ftplib.html#ftplib.FTP.renameX-tr.X%importlib.abc.SourceLoader.path_statsr.(jjXUhttp://docs.python.org/3/library/importlib.html#importlib.abc.SourceLoader.path_statsX-tr.Xio.BufferedReader.readr.(jjX?http://docs.python.org/3/library/io.html#io.BufferedReader.readX-tr.Xdecimal.Decimal.is_zeror.(jjXEhttp://docs.python.org/3/library/decimal.html#decimal.Decimal.is_zeroX-tr.Xcmd.Cmd.defaultr.(jjX9http://docs.python.org/3/library/cmd.html#cmd.Cmd.defaultX-tr.Xtelnetlib.Telnet.openr/(jjXEhttp://docs.python.org/3/library/telnetlib.html#telnetlib.Telnet.openX-tr/Xsunau.AU_write.setcomptyper/(jjXFhttp://docs.python.org/3/library/sunau.html#sunau.AU_write.setcomptypeX-tr/Ximaplib.IMAP4.creater/(jjXBhttp://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.createX-tr/Xmailbox.Mailbox.__setitem__r/(jjXIhttp://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.__setitem__X-tr/Xarray.array.countr/(jjX=http://docs.python.org/3/library/array.html#array.array.countX-tr /X,http.server.SimpleHTTPRequestHandler.do_HEADr /(jjX^http://docs.python.org/3/library/http.server.html#http.server.SimpleHTTPRequestHandler.do_HEADX-tr /Xhtml.parser.HTMLParser.resetr /(jjXNhttp://docs.python.org/3/library/html.parser.html#html.parser.HTMLParser.resetX-tr /Xasyncio.StreamReader.readliner/(jjXRhttp://docs.python.org/3/library/asyncio-stream.html#asyncio.StreamReader.readlineX-tr/Xobject.__length_hint__r/(jjXHhttp://docs.python.org/3/reference/datamodel.html#object.__length_hint__X-tr/Xunittest.TestCase.assertIsr/(jjXIhttp://docs.python.org/3/library/unittest.html#unittest.TestCase.assertIsX-tr/Xwinreg.PyHKEY.Closer/(jjX@http://docs.python.org/3/library/winreg.html#winreg.PyHKEY.CloseX-tr/X0argparse.ArgumentParser.convert_arg_line_to_argsr/(jjX_http://docs.python.org/3/library/argparse.html#argparse.ArgumentParser.convert_arg_line_to_argsX-tr/X http.cookies.Morsel.OutputStringr/(jjXShttp://docs.python.org/3/library/http.cookies.html#http.cookies.Morsel.OutputStringX-tr/X&unittest.TestLoader.loadTestsFromNamesr/(jjXUhttp://docs.python.org/3/library/unittest.html#unittest.TestLoader.loadTestsFromNamesX-tr/Xcurses.window.borderr/(jjXAhttp://docs.python.org/3/library/curses.html#curses.window.borderX-tr/X!mailbox.MHMessage.remove_sequencer/(jjXOhttp://docs.python.org/3/library/mailbox.html#mailbox.MHMessage.remove_sequenceX-tr/Xtarfile.TarInfo.isfifor /(jjXDhttp://docs.python.org/3/library/tarfile.html#tarfile.TarInfo.isfifoX-tr!/X3distutils.fancy_getopt.FancyGetopt.get_option_orderr"/(jjXbhttp://docs.python.org/3/distutils/apiref.html#distutils.fancy_getopt.FancyGetopt.get_option_orderX-tr#/Xdecimal.Context.next_towardr$/(jjXIhttp://docs.python.org/3/library/decimal.html#decimal.Context.next_towardX-tr%/Xfloat.as_integer_ratior&/(jjXEhttp://docs.python.org/3/library/stdtypes.html#float.as_integer_ratioX-tr'/X7xmlrpc.server.CGIXMLRPCRequestHandler.register_functionr(/(jjXkhttp://docs.python.org/3/library/xmlrpc.server.html#xmlrpc.server.CGIXMLRPCRequestHandler.register_functionX-tr)/Xunittest.TestCase.assertInr*/(jjXIhttp://docs.python.org/3/library/unittest.html#unittest.TestCase.assertInX-tr+/X-xml.etree.ElementTree.ElementTree.getiteratorr,/(jjXihttp://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.ElementTree.getiteratorX-tr-/X mailbox.BabylMessage.get_visibler./(jjXNhttp://docs.python.org/3/library/mailbox.html#mailbox.BabylMessage.get_visibleX-tr//Xmailbox.MH.set_sequencesr0/(jjXFhttp://docs.python.org/3/library/mailbox.html#mailbox.MH.set_sequencesX-tr1/Xunittest.TestCase.assertIsNoner2/(jjXMhttp://docs.python.org/3/library/unittest.html#unittest.TestCase.assertIsNoneX-tr3/Xhtml.parser.HTMLParser.feedr4/(jjXMhttp://docs.python.org/3/library/html.parser.html#html.parser.HTMLParser.feedX-tr5/X str.replacer6/(jjX:http://docs.python.org/3/library/stdtypes.html#str.replaceX-tr7/X email.message.EmailMessage.clearr8/(jjX[http://docs.python.org/3/library/email.contentmanager.html#email.message.EmailMessage.clearX-tr9/X str.rfindr:/(jjX8http://docs.python.org/3/library/stdtypes.html#str.rfindX-tr;/Xchunk.Chunk.closer/(jjXHhttp://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.authenticateX-tr?/Xio.IOBase.isattyr@/(jjX9http://docs.python.org/3/library/io.html#io.IOBase.isattyX-trA/X6xml.parsers.expat.xmlparser.ExternalEntityParserCreaterB/(jjXdhttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.xmlparser.ExternalEntityParserCreateX-trC/X!xml.etree.ElementTree.Element.getrD/(jjX]http://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element.getX-trE/Xcmd.Cmd.onecmdrF/(jjX8http://docs.python.org/3/library/cmd.html#cmd.Cmd.onecmdX-trG/Xemail.message.Message.set_paramrH/(jjXShttp://docs.python.org/3/library/email.message.html#email.message.Message.set_paramX-trI/X+asyncio.BaseEventLoop.remove_signal_handlerrJ/(jjXchttp://docs.python.org/3/library/asyncio-eventloop.html#asyncio.BaseEventLoop.remove_signal_handlerX-trK/Xasyncio.BaseEventLoop.closerL/(jjXShttp://docs.python.org/3/library/asyncio-eventloop.html#asyncio.BaseEventLoop.closeX-trM/Xset.addrN/(jjX6http://docs.python.org/3/library/stdtypes.html#set.addX-trO/Xasynchat.fifo.pushrP/(jjXAhttp://docs.python.org/3/library/asynchat.html#asynchat.fifo.pushX-trQ/X#email.parser.BytesParser.parsebytesrR/(jjXVhttp://docs.python.org/3/library/email.parser.html#email.parser.BytesParser.parsebytesX-trS/X3email.contentmanager.ContentManager.add_get_handlerrT/(jjXnhttp://docs.python.org/3/library/email.contentmanager.html#email.contentmanager.ContentManager.add_get_handlerX-trU/Xssl.SSLContext.set_ciphersrV/(jjXDhttp://docs.python.org/3/library/ssl.html#ssl.SSLContext.set_ciphersX-trW/X&logging.handlers.QueueListener.preparerX/(jjX]http://docs.python.org/3/library/logging.handlers.html#logging.handlers.QueueListener.prepareX-trY/Xcurses.window.bkgdrZ/(jjX?http://docs.python.org/3/library/curses.html#curses.window.bkgdX-tr[/Xmailbox.Mailbox.itervaluesr\/(jjXHhttp://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.itervaluesX-tr]/Xdecimal.Context.Etopr^/(jjXBhttp://docs.python.org/3/library/decimal.html#decimal.Context.EtopX-tr_/Xtypes.MappingProxyType.keysr`/(jjXGhttp://docs.python.org/3/library/types.html#types.MappingProxyType.keysX-tra/Xparser.ST.totuplerb/(jjX>http://docs.python.org/3/library/parser.html#parser.ST.totupleX-trc/Xasyncio.Future.exceptionrd/(jjXKhttp://docs.python.org/3/library/asyncio-task.html#asyncio.Future.exceptionX-tre/Xftplib.FTP.mkdrf/(jjX;http://docs.python.org/3/library/ftplib.html#ftplib.FTP.mkdX-trg/Xobject.__truediv__rh/(jjXDhttp://docs.python.org/3/reference/datamodel.html#object.__truediv__X-tri/Xwave.Wave_read.readframesrj/(jjXDhttp://docs.python.org/3/library/wave.html#wave.Wave_read.readframesX-trk/Xmmap.mmap.tellrl/(jjX9http://docs.python.org/3/library/mmap.html#mmap.mmap.tellX-trm/Xargparse.ArgumentParser.errorrn/(jjXLhttp://docs.python.org/3/library/argparse.html#argparse.ArgumentParser.errorX-tro/X"ossaudiodev.oss_audio_device.closerp/(jjXThttp://docs.python.org/3/library/ossaudiodev.html#ossaudiodev.oss_audio_device.closeX-trq/Xthreading.Barrier.abortrr/(jjXGhttp://docs.python.org/3/library/threading.html#threading.Barrier.abortX-trs/Xset.intersectionrt/(jjX?http://docs.python.org/3/library/stdtypes.html#set.intersectionX-tru/Xipaddress.IPv4Network.overlapsrv/(jjXNhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Network.overlapsX-trw/X!ossaudiodev.oss_audio_device.postrx/(jjXShttp://docs.python.org/3/library/ossaudiodev.html#ossaudiodev.oss_audio_device.postX-try/X$logging.handlers.MemoryHandler.flushrz/(jjX[http://docs.python.org/3/library/logging.handlers.html#logging.handlers.MemoryHandler.flushX-tr{/X"wsgiref.headers.Headers.add_headerr|/(jjXPhttp://docs.python.org/3/library/wsgiref.html#wsgiref.headers.Headers.add_headerX-tr}/Xhttp.client.HTTPConnection.sendr~/(jjXQhttp://docs.python.org/3/library/http.client.html#http.client.HTTPConnection.sendX-tr/Xxdrlib.Packer.pack_stringr/(jjXFhttp://docs.python.org/3/library/xdrlib.html#xdrlib.Packer.pack_stringX-tr/X)xml.sax.handler.ContentHandler.endElementr/(jjX_http://docs.python.org/3/library/xml.sax.handler.html#xml.sax.handler.ContentHandler.endElementX-tr/Xtextwrap.TextWrapper.wrapr/(jjXHhttp://docs.python.org/3/library/textwrap.html#textwrap.TextWrapper.wrapX-tr/X'logging.handlers.SMTPHandler.getSubjectr/(jjX^http://docs.python.org/3/library/logging.handlers.html#logging.handlers.SMTPHandler.getSubjectX-tr/Xxdrlib.Packer.pack_fstringr/(jjXGhttp://docs.python.org/3/library/xdrlib.html#xdrlib.Packer.pack_fstringX-tr/Xtarfile.TarFile.addr/(jjXAhttp://docs.python.org/3/library/tarfile.html#tarfile.TarFile.addX-tr/Xnntplib.NNTP.xpathr/(jjX@http://docs.python.org/3/library/nntplib.html#nntplib.NNTP.xpathX-tr/X#ossaudiodev.oss_audio_device.setfmtr/(jjXUhttp://docs.python.org/3/library/ossaudiodev.html#ossaudiodev.oss_audio_device.setfmtX-tr/X$email.policy.Policy.header_max_countr/(jjXWhttp://docs.python.org/3/library/email.policy.html#email.policy.Policy.header_max_countX-tr/X!logging.handlers.HTTPHandler.emitr/(jjXXhttp://docs.python.org/3/library/logging.handlers.html#logging.handlers.HTTPHandler.emitX-tr/Xmmap.mmap.closer/(jjX:http://docs.python.org/3/library/mmap.html#mmap.mmap.closeX-tr/Xinspect.Parameter.replacer/(jjXGhttp://docs.python.org/3/library/inspect.html#inspect.Parameter.replaceX-tr/Xnntplib.NNTP.lastr/(jjX?http://docs.python.org/3/library/nntplib.html#nntplib.NNTP.lastX-tr/Xmsilib.CAB.appendr/(jjX>http://docs.python.org/3/library/msilib.html#msilib.CAB.appendX-tr/X%wsgiref.handlers.BaseHandler.sendfiler/(jjXShttp://docs.python.org/3/library/wsgiref.html#wsgiref.handlers.BaseHandler.sendfileX-tr/Xemail.message.Message.walkr/(jjXNhttp://docs.python.org/3/library/email.message.html#email.message.Message.walkX-tr/Xtkinter.ttk.Treeview.tag_hasr/(jjXNhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Treeview.tag_hasX-tr/Xdecimal.Context.max_magr/(jjXEhttp://docs.python.org/3/library/decimal.html#decimal.Context.max_magX-tr/X str.upperr/(jjX8http://docs.python.org/3/library/stdtypes.html#str.upperX-tr/Xdoctest.DocTestParser.parser/(jjXIhttp://docs.python.org/3/library/doctest.html#doctest.DocTestParser.parseX-tr/Xstring.Formatter.get_fieldr/(jjXGhttp://docs.python.org/3/library/string.html#string.Formatter.get_fieldX-tr/X-xml.sax.xmlreader.XMLReader.setContentHandlerr/(jjXbhttp://docs.python.org/3/library/xml.sax.reader.html#xml.sax.xmlreader.XMLReader.setContentHandlerX-tr/Ximaplib.IMAP4.checkr/(jjXAhttp://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.checkX-tr/X#asyncore.dispatcher.handle_acceptedr/(jjXRhttp://docs.python.org/3/library/asyncore.html#asyncore.dispatcher.handle_acceptedX-tr/Xbz2.BZ2Decompressor.decompressr/(jjXHhttp://docs.python.org/3/library/bz2.html#bz2.BZ2Decompressor.decompressX-tr/Xsched.scheduler.enterabsr/(jjXDhttp://docs.python.org/3/library/sched.html#sched.scheduler.enterabsX-tr/Xunittest.TestCase.idr/(jjXChttp://docs.python.org/3/library/unittest.html#unittest.TestCase.idX-tr/Xjson.JSONEncoder.defaultr/(jjXChttp://docs.python.org/3/library/json.html#json.JSONEncoder.defaultX-tr/Xtelnetlib.Telnet.writer/(jjXFhttp://docs.python.org/3/library/telnetlib.html#telnetlib.Telnet.writeX-tr/Xselect.kqueue.closer/(jjX@http://docs.python.org/3/library/select.html#select.kqueue.closeX-tr/Xmmap.mmap.readr/(jjX9http://docs.python.org/3/library/mmap.html#mmap.mmap.readX-tr/Xgettext.NullTranslations.infor/(jjXKhttp://docs.python.org/3/library/gettext.html#gettext.NullTranslations.infoX-tr/X,urllib.parse.urllib.parse.SplitResult.geturlr/(jjX_http://docs.python.org/3/library/urllib.parse.html#urllib.parse.urllib.parse.SplitResult.geturlX-tr/Ximaplib.IMAP4.socketr/(jjXBhttp://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.socketX-tr/Xxml.dom.NamedNodeMap.itemr/(jjXGhttp://docs.python.org/3/library/xml.dom.html#xml.dom.NamedNodeMap.itemX-tr/X*xml.parsers.expat.xmlparser.XmlDeclHandlerr/(jjXXhttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.xmlparser.XmlDeclHandlerX-tr/Xcurses.window.syncdownr/(jjXChttp://docs.python.org/3/library/curses.html#curses.window.syncdownX-tr/Xnntplib.NNTP.articler/(jjXBhttp://docs.python.org/3/library/nntplib.html#nntplib.NNTP.articleX-tr/Xsmtplib.SMTP.starttlsr/(jjXChttp://docs.python.org/3/library/smtplib.html#smtplib.SMTP.starttlsX-tr/Xconfigparser.ConfigParser.itemsr/(jjXRhttp://docs.python.org/3/library/configparser.html#configparser.ConfigParser.itemsX-tr/Xxdrlib.Packer.pack_fopaquer/(jjXGhttp://docs.python.org/3/library/xdrlib.html#xdrlib.Packer.pack_fopaqueX-tr/X(multiprocessing.pool.Pool.imap_unorderedr/(jjX^http://docs.python.org/3/library/multiprocessing.html#multiprocessing.pool.Pool.imap_unorderedX-tr/X class.mror/(jjX8http://docs.python.org/3/library/stdtypes.html#class.mroX-tr/X#email.policy.Policy.register_defectr/(jjXVhttp://docs.python.org/3/library/email.policy.html#email.policy.Policy.register_defectX-tr/Xunittest.TestCase.assertGreaterr/(jjXNhttp://docs.python.org/3/library/unittest.html#unittest.TestCase.assertGreaterX-tr/Xarray.array.indexr/(jjX=http://docs.python.org/3/library/array.html#array.array.indexX-tr/Xtelnetlib.Telnet.read_untilr/(jjXKhttp://docs.python.org/3/library/telnetlib.html#telnetlib.Telnet.read_untilX-tr/X%distutils.text_file.TextFile.readliner/(jjXThttp://docs.python.org/3/distutils/apiref.html#distutils.text_file.TextFile.readlineX-tr/X/xml.parsers.expat.xmlparser.NotationDeclHandlerr/(jjX]http://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.xmlparser.NotationDeclHandlerX-tr/Xdecimal.Context.divider/(jjXDhttp://docs.python.org/3/library/decimal.html#decimal.Context.divideX-tr/Xdecimal.Context.absr/(jjXAhttp://docs.python.org/3/library/decimal.html#decimal.Context.absX-tr/Xselectors.BaseSelector.modifyr/(jjXMhttp://docs.python.org/3/library/selectors.html#selectors.BaseSelector.modifyX-tr/Xthreading.Condition.waitr/(jjXHhttp://docs.python.org/3/library/threading.html#threading.Condition.waitX-tr/Xcollections.Counter.fromkeysr/(jjXNhttp://docs.python.org/3/library/collections.html#collections.Counter.fromkeysX-tr/Xmailbox.Mailbox.get_messager/(jjXIhttp://docs.python.org/3/library/mailbox.html#mailbox.Mailbox.get_messageX-tr/Xcmd.Cmd.preloopr/(jjX9http://docs.python.org/3/library/cmd.html#cmd.Cmd.preloopX-tr/Xwave.Wave_write.setframerater/(jjXGhttp://docs.python.org/3/library/wave.html#wave.Wave_write.setframerateX-tr/Xxml.dom.Node.removeChildr/(jjXFhttp://docs.python.org/3/library/xml.dom.html#xml.dom.Node.removeChildX-tr/X+urllib.request.HTTPPasswordMgr.add_passwordr/(jjX`http://docs.python.org/3/library/urllib.request.html#urllib.request.HTTPPasswordMgr.add_passwordX-tr/Xxml.dom.minidom.Node.unlinkr/(jjXQhttp://docs.python.org/3/library/xml.dom.minidom.html#xml.dom.minidom.Node.unlinkX-tr/Xcmd.Cmd.emptyliner/(jjX;http://docs.python.org/3/library/cmd.html#cmd.Cmd.emptylineX-tr/Xssl.SSLContext.session_statsr/(jjXFhttp://docs.python.org/3/library/ssl.html#ssl.SSLContext.session_statsX-tr/X'distutils.text_file.TextFile.unreadliner/(jjXVhttp://docs.python.org/3/distutils/apiref.html#distutils.text_file.TextFile.unreadlineX-tr/Xcalendar.Calendar.itermonthdaysr/(jjXNhttp://docs.python.org/3/library/calendar.html#calendar.Calendar.itermonthdaysX-tr/Xtkinter.ttk.Style.element_namesr0(jjXQhttp://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Style.element_namesX-tr0X/logging.handlers.RotatingFileHandler.doRolloverr0(jjXfhttp://docs.python.org/3/library/logging.handlers.html#logging.handlers.RotatingFileHandler.doRolloverX-tr0X dict.copyr0(jjX8http://docs.python.org/3/library/stdtypes.html#dict.copyX-tr0X!socketserver.RequestHandler.setupr0(jjXThttp://docs.python.org/3/library/socketserver.html#socketserver.RequestHandler.setupX-tr0Xsqlite3.Cursor.executer0(jjXDhttp://docs.python.org/3/library/sqlite3.html#sqlite3.Cursor.executeX-tr 0X str.isupperr 0(jjX:http://docs.python.org/3/library/stdtypes.html#str.isupperX-tr 0Xobject.__rand__r 0(jjXAhttp://docs.python.org/3/reference/datamodel.html#object.__rand__X-tr 0Xobject.__ifloordiv__r0(jjXFhttp://docs.python.org/3/reference/datamodel.html#object.__ifloordiv__X-tr0Xio.BufferedWriter.writer0(jjX@http://docs.python.org/3/library/io.html#io.BufferedWriter.writeX-tr0X(logging.handlers.NTEventLogHandler.closer0(jjX_http://docs.python.org/3/library/logging.handlers.html#logging.handlers.NTEventLogHandler.closeX-tr0X*wsgiref.handlers.BaseHandler.setup_environr0(jjXXhttp://docs.python.org/3/library/wsgiref.html#wsgiref.handlers.BaseHandler.setup_environX-tr0X)http.cookiejar.CookieJar.set_cookie_if_okr0(jjX^http://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.CookieJar.set_cookie_if_okX-tr0Xset.issupersetr0(jjX=http://docs.python.org/3/library/stdtypes.html#set.issupersetX-tr0Xsqlite3.Connection.closer0(jjXFhttp://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.closeX-tr0Xgenerator.throwr0(jjXChttp://docs.python.org/3/reference/expressions.html#generator.throwX-tr0X0importlib.machinery.FileFinder.invalidate_cachesr0(jjX`http://docs.python.org/3/library/importlib.html#importlib.machinery.FileFinder.invalidate_cachesX-tr0Xxml.dom.Node.hasAttributesr 0(jjXHhttp://docs.python.org/3/library/xml.dom.html#xml.dom.Node.hasAttributesX-tr!0X"http.cookiejar.CookiePolicy.set_okr"0(jjXWhttp://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.CookiePolicy.set_okX-tr#0Xzipfile.ZipFile.writer$0(jjXChttp://docs.python.org/3/library/zipfile.html#zipfile.ZipFile.writeX-tr%0X#code.InteractiveConsole.resetbufferr&0(jjXNhttp://docs.python.org/3/library/code.html#code.InteractiveConsole.resetbufferX-tr'0Xunittest.TestLoader.discoverr(0(jjXKhttp://docs.python.org/3/library/unittest.html#unittest.TestLoader.discoverX-tr)0X%logging.handlers.DatagramHandler.emitr*0(jjX\http://docs.python.org/3/library/logging.handlers.html#logging.handlers.DatagramHandler.emitX-tr+0X%msilib.Database.GetSummaryInformationr,0(jjXRhttp://docs.python.org/3/library/msilib.html#msilib.Database.GetSummaryInformationX-tr-0Xast.NodeVisitor.generic_visitr.0(jjXGhttp://docs.python.org/3/library/ast.html#ast.NodeVisitor.generic_visitX-tr/0Ximaplib.IMAP4.copyr00(jjX@http://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.copyX-tr10X%xml.sax.xmlreader.Attributes.getNamesr20(jjXZhttp://docs.python.org/3/library/xml.sax.reader.html#xml.sax.xmlreader.Attributes.getNamesX-tr30Xlogging.Handler.setFormatterr40(jjXJhttp://docs.python.org/3/library/logging.html#logging.Handler.setFormatterX-tr50Xcurses.window.resizer60(jjXAhttp://docs.python.org/3/library/curses.html#curses.window.resizeX-tr70Xcodecs.StreamReader.readr80(jjXEhttp://docs.python.org/3/library/codecs.html#codecs.StreamReader.readX-tr90Xjson.JSONDecoder.decoder:0(jjXBhttp://docs.python.org/3/library/json.html#json.JSONDecoder.decodeX-tr;0X!urllib.request.Request.get_headerr<0(jjXVhttp://docs.python.org/3/library/urllib.request.html#urllib.request.Request.get_headerX-tr=0uX std:optionr>0}r?0(X-Er@0(jjX7http://docs.python.org/3/using/cmdline.html#cmdoption-EX-trA0X-CrB0(jjX=http://docs.python.org/3/library/trace.html#cmdoption-trace-CX-trC0X-BrD0(jjX7http://docs.python.org/3/using/cmdline.html#cmdoption-BX-trE0X-OrF0(jjX7http://docs.python.org/3/using/cmdline.html#cmdoption-OX-trG0X--catchrH0(jjXHhttp://docs.python.org/3/library/unittest.html#cmdoption-unittest--catchX-trI0X--filerJ0(jjXAhttp://docs.python.org/3/library/trace.html#cmdoption-trace--fileX-trK0X-JrL0(jjX7http://docs.python.org/3/using/cmdline.html#cmdoption-JX-trM0X-TrN0(jjX=http://docs.python.org/3/library/trace.html#cmdoption-trace-TX-trO0X-WrP0(jjX7http://docs.python.org/3/using/cmdline.html#cmdoption-WX-trQ0X-VrR0(jjX7http://docs.python.org/3/using/cmdline.html#cmdoption-VX-trS0X-SrT0(jjX7http://docs.python.org/3/using/cmdline.html#cmdoption-SX-trU0X-RrV0(jjX=http://docs.python.org/3/library/trace.html#cmdoption-trace-RX-trW0X-XrX0(jjX7http://docs.python.org/3/using/cmdline.html#cmdoption-XX-trY0X--setuprZ0(jjXDhttp://docs.python.org/3/library/timeit.html#cmdoption-timeit--setupX-tr[0X-er\0(jjX9http://docs.python.org/3/library/tarfile.html#cmdoption-eX-tr]0X-dr^0(jjX7http://docs.python.org/3/using/cmdline.html#cmdoption-dX-tr_0X-gr`0(jjX=http://docs.python.org/3/library/trace.html#cmdoption-trace-gX-tra0X-frb0(jjXGhttp://docs.python.org/3/library/compileall.html#cmdoption-compileall-fX-trc0X-ard0(jjXIhttp://docs.python.org/3/library/pickletools.html#cmdoption-pickletools-aX-tre0X-crf0(jjX7http://docs.python.org/3/using/cmdline.html#cmdoption-cX-trg0X-brh0(jjXChttp://docs.python.org/3/library/unittest.html#cmdoption-unittest-bX-tri0X-mrj0(jjX7http://docs.python.org/3/using/cmdline.html#cmdoption-mX-trk0X-lrl0(jjXGhttp://docs.python.org/3/library/compileall.html#cmdoption-compileall-lX-trm0X-orn0(jjXIhttp://docs.python.org/3/library/pickletools.html#cmdoption-pickletools-oX-tro0X-nrp0(jjX?http://docs.python.org/3/library/timeit.html#cmdoption-timeit-nX-trq0X-irr0(jjXGhttp://docs.python.org/3/library/compileall.html#cmdoption-compileall-iX-trs0X-hrt0(jjX7http://docs.python.org/3/using/cmdline.html#cmdoption-hX-tru0X-urv0(jjX7http://docs.python.org/3/using/cmdline.html#cmdoption-uX-trw0X-trx0(jjX9http://docs.python.org/3/library/tarfile.html#cmdoption-tX-try0X-vrz0(jjX?http://docs.python.org/3/library/timeit.html#cmdoption-timeit-vX-tr{0X-qr|0(jjXGhttp://docs.python.org/3/library/compileall.html#cmdoption-compileall-qX-tr}0X-pr~0(jjXLhttp://docs.python.org/3/library/unittest.html#cmdoption-unittest-discover-pX-tr0X-sr0(jjX7http://docs.python.org/3/using/cmdline.html#cmdoption-sX-tr0X-rr0(jjX=http://docs.python.org/3/library/trace.html#cmdoption-trace-rX-tr0X--listr0(jjX=http://docs.python.org/3/library/tarfile.html#cmdoption--listX-tr0X-xr0(jjXGhttp://docs.python.org/3/library/compileall.html#cmdoption-compileall-xX-tr0X--creater0(jjX?http://docs.python.org/3/library/tarfile.html#cmdoption--createX-tr0X--tracer0(jjXBhttp://docs.python.org/3/library/trace.html#cmdoption-trace--traceX-tr0X-Ir0(jjX7http://docs.python.org/3/using/cmdline.html#cmdoption-IX-tr0X --annotater0(jjXQhttp://docs.python.org/3/library/pickletools.html#cmdoption-pickletools--annotateX-tr0X --failfastr0(jjXKhttp://docs.python.org/3/library/unittest.html#cmdoption-unittest--failfastX-tr0X --processr0(jjXFhttp://docs.python.org/3/library/timeit.html#cmdoption-timeit--processX-tr0X --indentlevelr0(jjXThttp://docs.python.org/3/library/pickletools.html#cmdoption-pickletools--indentlevelX-tr0X--testr0(jjX=http://docs.python.org/3/library/tarfile.html#cmdoption--testX-tr0X--helpr0(jjXChttp://docs.python.org/3/library/timeit.html#cmdoption-timeit--helpX-tr0X --user-siter0(jjXDhttp://docs.python.org/3/library/site.html#cmdoption-site--user-siteX-tr0X--numberr0(jjXEhttp://docs.python.org/3/library/timeit.html#cmdoption-timeit--numberX-tr0X --detailsr0(jjXHhttp://docs.python.org/3/library/inspect.html#cmdoption-inspect--detailsX-tr0X--clockr0(jjXDhttp://docs.python.org/3/library/timeit.html#cmdoption-timeit--clockX-tr0X--reportr0(jjXChttp://docs.python.org/3/library/trace.html#cmdoption-trace--reportX-tr0X --verboser0(jjX@http://docs.python.org/3/library/tarfile.html#cmdoption--verboseX-tr0X--top-level-directoryr0(jjX_http://docs.python.org/3/library/unittest.html#cmdoption-unittest-discover--top-level-directoryX-tr0Xfiler0(jjXNhttp://docs.python.org/3/library/compileall.html#cmdoption-compileall-arg-fileX-tr0X --summaryr0(jjXDhttp://docs.python.org/3/library/trace.html#cmdoption-trace--summaryX-tr0X--countr0(jjXBhttp://docs.python.org/3/library/trace.html#cmdoption-trace--countX-tr0X --trackcallsr0(jjXGhttp://docs.python.org/3/library/trace.html#cmdoption-trace--trackcallsX-tr0X-(jjX6http://docs.python.org/3/using/cmdline.html#cmdoption-X-tr0X --coverdirr0(jjXEhttp://docs.python.org/3/library/trace.html#cmdoption-trace--coverdirX-tr0X --patternr0(jjXShttp://docs.python.org/3/library/unittest.html#cmdoption-unittest-discover--patternX-tr0X --extractr0(jjX@http://docs.python.org/3/library/tarfile.html#cmdoption--extractX-tr0X --listfuncsr0(jjXFhttp://docs.python.org/3/library/trace.html#cmdoption-trace--listfuncsX-tr0X--start-directoryr0(jjX[http://docs.python.org/3/library/unittest.html#cmdoption-unittest-discover--start-directoryX-tr0X--memor0(jjXMhttp://docs.python.org/3/library/pickletools.html#cmdoption-pickletools--memoX-tr0X--repeatr0(jjXEhttp://docs.python.org/3/library/timeit.html#cmdoption-timeit--repeatX-tr0X --no-reportr0(jjXFhttp://docs.python.org/3/library/trace.html#cmdoption-trace--no-reportX-tr0X --versionr0(jjXDhttp://docs.python.org/3/library/trace.html#cmdoption-trace--versionX-tr0X --user-baser0(jjXDhttp://docs.python.org/3/library/site.html#cmdoption-site--user-baseX-tr0X--timingr0(jjXChttp://docs.python.org/3/library/trace.html#cmdoption-trace--timingX-tr0X --preambler0(jjXQhttp://docs.python.org/3/library/pickletools.html#cmdoption-pickletools--preambleX-tr0X --ignore-dirr0(jjXGhttp://docs.python.org/3/library/trace.html#cmdoption-trace--ignore-dirX-tr0X --missingr0(jjXDhttp://docs.python.org/3/library/trace.html#cmdoption-trace--missingX-tr0X--bufferr0(jjXIhttp://docs.python.org/3/library/unittest.html#cmdoption-unittest--bufferX-tr0X--outputr0(jjXOhttp://docs.python.org/3/library/pickletools.html#cmdoption-pickletools--outputX-tr0X--exactr0(jjXHhttp://docs.python.org/3/library/tokenize.html#cmdoption-tokenize--exactX-tr0X directoryr0(jjXShttp://docs.python.org/3/library/compileall.html#cmdoption-compileall-arg-directoryX-tr0X-OOr0(jjX8http://docs.python.org/3/using/cmdline.html#cmdoption-OOX-tr0X--timer0(jjXChttp://docs.python.org/3/library/timeit.html#cmdoption-timeit--timeX-tr0X--ignore-moduler0(jjXJhttp://docs.python.org/3/library/trace.html#cmdoption-trace--ignore-moduleX-tr0uX c:functionr0}r0(XPyUnicode_AsUTF16Stringr0(jjXEhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_AsUTF16StringX-tr0XPyList_GET_SIZEr0(jjX:http://docs.python.org/3/c-api/list.html#c.PyList_GET_SIZEX-tr0XPyDict_SetItemr0(jjX9http://docs.python.org/3/c-api/dict.html#c.PyDict_SetItemX-tr0XPyComplex_Checkr0(jjX=http://docs.python.org/3/c-api/complex.html#c.PyComplex_CheckX-tr0XPyRun_InteractiveLoopr0(jjXDhttp://docs.python.org/3/c-api/veryhigh.html#c.PyRun_InteractiveLoopX-tr0X PyDict_Itemsr0(jjX7http://docs.python.org/3/c-api/dict.html#c.PyDict_ItemsX-tr0XPyObject_CallMethodObjArgsr0(jjXGhttp://docs.python.org/3/c-api/object.html#c.PyObject_CallMethodObjArgsX-tr0XPyModule_Checkr0(jjX;http://docs.python.org/3/c-api/module.html#c.PyModule_CheckX-tr0XPyUnicode_READ_CHARr0(jjXAhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_READ_CHARX-tr0XPyFunction_NewWithQualNamer0(jjXIhttp://docs.python.org/3/c-api/function.html#c.PyFunction_NewWithQualNameX-tr0XPyDateTime_TIME_GET_MINUTEr0(jjXIhttp://docs.python.org/3/c-api/datetime.html#c.PyDateTime_TIME_GET_MINUTEX-tr0XPyUnicode_DecodeUTF8Statefulr0(jjXJhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF8StatefulX-tr0XPySequence_Fast_GET_ITEMr0(jjXGhttp://docs.python.org/3/c-api/sequence.html#c.PySequence_Fast_GET_ITEMX-tr0X PyLong_Checkr0(jjX7http://docs.python.org/3/c-api/long.html#c.PyLong_CheckX-tr0XPyType_HasFeaturer0(jjX<http://docs.python.org/3/c-api/type.html#c.PyType_HasFeatureX-tr0XPyDateTime_TIME_GET_HOURr0(jjXGhttp://docs.python.org/3/c-api/datetime.html#c.PyDateTime_TIME_GET_HOURX-tr0XPyEval_SetTracer0(jjX:http://docs.python.org/3/c-api/init.html#c.PyEval_SetTraceX-tr0XPyUnicode_DecodeLocaler0(jjXDhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeLocaleX-tr1XPyFloat_ClearFreeListr1(jjXAhttp://docs.python.org/3/c-api/float.html#c.PyFloat_ClearFreeListX-tr1XPySlice_GetIndicesr1(jjX>http://docs.python.org/3/c-api/slice.html#c.PySlice_GetIndicesX-tr1XPyTuple_GetItemr1(jjX;http://docs.python.org/3/c-api/tuple.html#c.PyTuple_GetItemX-tr1X PyGen_Checkr1(jjX5http://docs.python.org/3/c-api/gen.html#c.PyGen_CheckX-tr1XPy_FdIsInteractiver 1(jjX<http://docs.python.org/3/c-api/sys.html#c.Py_FdIsInteractiveX-tr 1XPyUnicodeDecodeError_SetStartr 1(jjXNhttp://docs.python.org/3/c-api/exceptions.html#c.PyUnicodeDecodeError_SetStartX-tr 1X$PyErr_SetFromErrnoWithFilenameObjectr 1(jjXUhttp://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetFromErrnoWithFilenameObjectX-tr1XPyErr_ExceptionMatchesr1(jjXGhttp://docs.python.org/3/c-api/exceptions.html#c.PyErr_ExceptionMatchesX-tr1XPySys_ResetWarnOptionsr1(jjX@http://docs.python.org/3/c-api/sys.html#c.PySys_ResetWarnOptionsX-tr1XPyDict_MergeFromSeq2r1(jjX?http://docs.python.org/3/c-api/dict.html#c.PyDict_MergeFromSeq2X-tr1XPyStructSequence_GET_ITEMr1(jjXEhttp://docs.python.org/3/c-api/tuple.html#c.PyStructSequence_GET_ITEMX-tr1XPyUnicodeEncodeError_SetReasonr1(jjXOhttp://docs.python.org/3/c-api/exceptions.html#c.PyUnicodeEncodeError_SetReasonX-tr1XPyUnicode_AsCharmapStringr1(jjXGhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_AsCharmapStringX-tr1XPyType_FromSpecWithBasesr1(jjXChttp://docs.python.org/3/c-api/type.html#c.PyType_FromSpecWithBasesX-tr1XPyUnicode_AsUTF8Stringr1(jjXDhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_AsUTF8StringX-tr1XPyRun_InteractiveLoopFlagsr1(jjXIhttp://docs.python.org/3/c-api/veryhigh.html#c.PyRun_InteractiveLoopFlagsX-tr 1X PyList_Newr!1(jjX5http://docs.python.org/3/c-api/list.html#c.PyList_NewX-tr"1XPyErr_Occurredr#1(jjX?http://docs.python.org/3/c-api/exceptions.html#c.PyErr_OccurredX-tr$1XPyType_IsSubtyper%1(jjX;http://docs.python.org/3/c-api/type.html#c.PyType_IsSubtypeX-tr&1XPyRun_AnyFileExFlagsr'1(jjXChttp://docs.python.org/3/c-api/veryhigh.html#c.PyRun_AnyFileExFlagsX-tr(1XPySys_WriteStderrr)1(jjX;http://docs.python.org/3/c-api/sys.html#c.PySys_WriteStderrX-tr*1XPyMapping_SetItemStringr+1(jjXEhttp://docs.python.org/3/c-api/mapping.html#c.PyMapping_SetItemStringX-tr,1X PyCell_Newr-1(jjX5http://docs.python.org/3/c-api/cell.html#c.PyCell_NewX-tr.1XPyBytes_AsStringAndSizer/1(jjXChttp://docs.python.org/3/c-api/bytes.html#c.PyBytes_AsStringAndSizeX-tr01X PyCode_Checkr11(jjX7http://docs.python.org/3/c-api/code.html#c.PyCode_CheckX-tr21XPyUnicode_DecodeMBCSr31(jjXBhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeMBCSX-tr41X PyDict_Updater51(jjX8http://docs.python.org/3/c-api/dict.html#c.PyDict_UpdateX-tr61X PyDict_Checkr71(jjX7http://docs.python.org/3/c-api/dict.html#c.PyDict_CheckX-tr81XPyList_CheckExactr91(jjX<http://docs.python.org/3/c-api/list.html#c.PyList_CheckExactX-tr:1X PyCell_Getr;1(jjX5http://docs.python.org/3/c-api/cell.html#c.PyCell_GetX-tr<1XPyByteArray_Resizer=1(jjXBhttp://docs.python.org/3/c-api/bytearray.html#c.PyByteArray_ResizeX-tr>1XPyErr_SetFromErrnoWithFilenamer?1(jjXOhttp://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetFromErrnoWithFilenameX-tr@1X PyOS_snprintfrA1(jjX>http://docs.python.org/3/c-api/conversion.html#c.PyOS_snprintfX-trB1XPyUnicode_ClearFreeListrC1(jjXEhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_ClearFreeListX-trD1X PyUnicode_DecodeFSDefaultAndSizerE1(jjXNhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeFSDefaultAndSizeX-trF1X PyErr_SetNonerG1(jjX>http://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetNoneX-trH1XPy_ExitrI1(jjX1http://docs.python.org/3/c-api/sys.html#c.Py_ExitX-trJ1XPyCodec_IncrementalEncoderrK1(jjXFhttp://docs.python.org/3/c-api/codec.html#c.PyCodec_IncrementalEncoderX-trL1XPySequence_DelItemrM1(jjXAhttp://docs.python.org/3/c-api/sequence.html#c.PySequence_DelItemX-trN1XPyCodec_EncoderO1(jjX:http://docs.python.org/3/c-api/codec.html#c.PyCodec_EncodeX-trP1XPyUnicode_FromObjectrQ1(jjXBhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_FromObjectX-trR1XPyNumber_ToBaserS1(jjX<http://docs.python.org/3/c-api/number.html#c.PyNumber_ToBaseX-trT1XPyModule_AddIntMacrorU1(jjXAhttp://docs.python.org/3/c-api/module.html#c.PyModule_AddIntMacroX-trV1XPyDateTime_FromDateAndTimerW1(jjXIhttp://docs.python.org/3/c-api/datetime.html#c.PyDateTime_FromDateAndTimeX-trX1XPyDict_CheckExactrY1(jjX<http://docs.python.org/3/c-api/dict.html#c.PyDict_CheckExactX-trZ1XPyParser_SimpleParseFileFlagsr[1(jjXLhttp://docs.python.org/3/c-api/veryhigh.html#c.PyParser_SimpleParseFileFlagsX-tr\1XPyFloat_FromDoubler]1(jjX>http://docs.python.org/3/c-api/float.html#c.PyFloat_FromDoubleX-tr^1XPyDict_DelItemr_1(jjX9http://docs.python.org/3/c-api/dict.html#c.PyDict_DelItemX-tr`1XPyAnySet_Checkra1(jjX8http://docs.python.org/3/c-api/set.html#c.PyAnySet_CheckX-trb1XPy_UNICODE_TOUPPERrc1(jjX@http://docs.python.org/3/c-api/unicode.html#c.Py_UNICODE_TOUPPERX-trd1XPyUnicodeDecodeError_GetReasonre1(jjXOhttp://docs.python.org/3/c-api/exceptions.html#c.PyUnicodeDecodeError_GetReasonX-trf1X PyMethod_Newrg1(jjX9http://docs.python.org/3/c-api/method.html#c.PyMethod_NewX-trh1XPyCapsule_SetContextri1(jjXBhttp://docs.python.org/3/c-api/capsule.html#c.PyCapsule_SetContextX-trj1X _Py_c_sumrk1(jjX7http://docs.python.org/3/c-api/complex.html#c._Py_c_sumX-trl1XPyMapping_Itemsrm1(jjX=http://docs.python.org/3/c-api/mapping.html#c.PyMapping_ItemsX-trn1X _Py_c_negro1(jjX7http://docs.python.org/3/c-api/complex.html#c._Py_c_negX-trp1XPyUnicode_AsUnicodeEscapeStringrq1(jjXMhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_AsUnicodeEscapeStringX-trr1XPyObject_NewVarrs1(jjX@http://docs.python.org/3/c-api/allocation.html#c.PyObject_NewVarX-trt1XPyUnicode_FromStringru1(jjXBhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_FromStringX-trv1XPyInstanceMethod_Functionrw1(jjXFhttp://docs.python.org/3/c-api/method.html#c.PyInstanceMethod_FunctionX-trx1XPyImport_GetMagicNumberry1(jjXDhttp://docs.python.org/3/c-api/import.html#c.PyImport_GetMagicNumberX-trz1XPyNumber_InPlaceAddr{1(jjX@http://docs.python.org/3/c-api/number.html#c.PyNumber_InPlaceAddX-tr|1XPyCodec_IncrementalDecoderr}1(jjXFhttp://docs.python.org/3/c-api/codec.html#c.PyCodec_IncrementalDecoderX-tr~1XPyWeakref_GET_OBJECTr1(jjXBhttp://docs.python.org/3/c-api/weakref.html#c.PyWeakref_GET_OBJECTX-tr1XPyRun_InteractiveOner1(jjXChttp://docs.python.org/3/c-api/veryhigh.html#c.PyRun_InteractiveOneX-tr1XPyCodec_RegisterErrorr1(jjXAhttp://docs.python.org/3/c-api/codec.html#c.PyCodec_RegisterErrorX-tr1XPyMarshal_WriteLongToFiler1(jjXGhttp://docs.python.org/3/c-api/marshal.html#c.PyMarshal_WriteLongToFileX-tr1XPyType_GetFlagsr1(jjX:http://docs.python.org/3/c-api/type.html#c.PyType_GetFlagsX-tr1XPyFunction_Newr1(jjX=http://docs.python.org/3/c-api/function.html#c.PyFunction_NewX-tr1XPyList_SET_ITEMr1(jjX:http://docs.python.org/3/c-api/list.html#c.PyList_SET_ITEMX-tr1X PyMem_Resizer1(jjX9http://docs.python.org/3/c-api/memory.html#c.PyMem_ResizeX-tr1XPyUnicode_AsUnicodeAndSizer1(jjXHhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_AsUnicodeAndSizeX-tr1XPyObject_RichCompareBoolr1(jjXEhttp://docs.python.org/3/c-api/object.html#c.PyObject_RichCompareBoolX-tr1XPyDescr_NewMethodr1(jjXBhttp://docs.python.org/3/c-api/descriptor.html#c.PyDescr_NewMethodX-tr1XPyDict_GetItemWithErrorr1(jjXBhttp://docs.python.org/3/c-api/dict.html#c.PyDict_GetItemWithErrorX-tr1XPyInterpreterState_Headr1(jjXBhttp://docs.python.org/3/c-api/init.html#c.PyInterpreterState_HeadX-tr1XPyParser_SimpleParseFiler1(jjXGhttp://docs.python.org/3/c-api/veryhigh.html#c.PyParser_SimpleParseFileX-tr1XPyUnicodeEncodeError_GetReasonr1(jjXOhttp://docs.python.org/3/c-api/exceptions.html#c.PyUnicodeEncodeError_GetReasonX-tr1XPyLong_AsSize_tr1(jjX:http://docs.python.org/3/c-api/long.html#c.PyLong_AsSize_tX-tr1XPyComplex_FromDoublesr1(jjXChttp://docs.python.org/3/c-api/complex.html#c.PyComplex_FromDoublesX-tr1XPyFunction_GetDefaultsr1(jjXEhttp://docs.python.org/3/c-api/function.html#c.PyFunction_GetDefaultsX-tr1XPyImport_Cleanupr1(jjX=http://docs.python.org/3/c-api/import.html#c.PyImport_CleanupX-tr1XPyEval_GetFramer1(jjX@http://docs.python.org/3/c-api/reflection.html#c.PyEval_GetFrameX-tr1XPyMem_SetupDebugHooksr1(jjXBhttp://docs.python.org/3/c-api/memory.html#c.PyMem_SetupDebugHooksX-tr1X PyTuple_Newr1(jjX7http://docs.python.org/3/c-api/tuple.html#c.PyTuple_NewX-tr1XPyInterpreterState_Nextr1(jjXBhttp://docs.python.org/3/c-api/init.html#c.PyInterpreterState_NextX-tr1XPyGen_CheckExactr1(jjX:http://docs.python.org/3/c-api/gen.html#c.PyGen_CheckExactX-tr1XPyType_GenericGetDictr1(jjXBhttp://docs.python.org/3/c-api/object.html#c.PyType_GenericGetDictX-tr1XPyUnicode_RichComparer1(jjXChttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_RichCompareX-tr1XPyObject_GC_NewVarr1(jjXBhttp://docs.python.org/3/c-api/gcsupport.html#c.PyObject_GC_NewVarX-tr1XPyModule_NewObjectr1(jjX?http://docs.python.org/3/c-api/module.html#c.PyModule_NewObjectX-tr1XPyBuffer_IsContiguousr1(jjXBhttp://docs.python.org/3/c-api/buffer.html#c.PyBuffer_IsContiguousX-tr1XPyCapsule_GetContextr1(jjXBhttp://docs.python.org/3/c-api/capsule.html#c.PyCapsule_GetContextX-tr1XPyFunction_GetGlobalsr1(jjXDhttp://docs.python.org/3/c-api/function.html#c.PyFunction_GetGlobalsX-tr1X PyIter_Checkr1(jjX7http://docs.python.org/3/c-api/iter.html#c.PyIter_CheckX-tr1XPyFunction_SetClosurer1(jjXDhttp://docs.python.org/3/c-api/function.html#c.PyFunction_SetClosureX-tr1XPyObject_IsTruer1(jjX<http://docs.python.org/3/c-api/object.html#c.PyObject_IsTrueX-tr1XPyNumber_InPlaceSubtractr1(jjXEhttp://docs.python.org/3/c-api/number.html#c.PyNumber_InPlaceSubtractX-tr1X Py_ReprEnterr1(jjX=http://docs.python.org/3/c-api/exceptions.html#c.Py_ReprEnterX-tr1X PyObject_Dirr1(jjX9http://docs.python.org/3/c-api/object.html#c.PyObject_DirX-tr1XPySequence_Fastr1(jjX>http://docs.python.org/3/c-api/sequence.html#c.PySequence_FastX-tr1XPy_NewInterpreterr1(jjX<http://docs.python.org/3/c-api/init.html#c.Py_NewInterpreterX-tr1XPySequence_SetItemr1(jjXAhttp://docs.python.org/3/c-api/sequence.html#c.PySequence_SetItemX-tr1XPyUnicodeEncodeError_Creater1(jjXLhttp://docs.python.org/3/c-api/exceptions.html#c.PyUnicodeEncodeError_CreateX-tr1XPySequence_Indexr1(jjX?http://docs.python.org/3/c-api/sequence.html#c.PySequence_IndexX-tr1XPyObject_GetItemr1(jjX=http://docs.python.org/3/c-api/object.html#c.PyObject_GetItemX-tr1XPyLong_AsVoidPtrr1(jjX;http://docs.python.org/3/c-api/long.html#c.PyLong_AsVoidPtrX-tr1XPyUnicode_GET_SIZEr1(jjX@http://docs.python.org/3/c-api/unicode.html#c.PyUnicode_GET_SIZEX-tr1XPyEval_GetFuncDescr1(jjXChttp://docs.python.org/3/c-api/reflection.html#c.PyEval_GetFuncDescX-tr1X PyNumber_Andr1(jjX9http://docs.python.org/3/c-api/number.html#c.PyNumber_AndX-tr1X PyObject_Callr1(jjX:http://docs.python.org/3/c-api/object.html#c.PyObject_CallX-tr1XPyObject_GetIterr1(jjX=http://docs.python.org/3/c-api/object.html#c.PyObject_GetIterX-tr1XPyDateTime_DATE_GET_SECONDr1(jjXIhttp://docs.python.org/3/c-api/datetime.html#c.PyDateTime_DATE_GET_SECONDX-tr1XPyGILState_GetThisThreadStater1(jjXHhttp://docs.python.org/3/c-api/init.html#c.PyGILState_GetThisThreadStateX-tr1XPyEval_EvalCoder1(jjX>http://docs.python.org/3/c-api/veryhigh.html#c.PyEval_EvalCodeX-tr1XPyEval_EvalCodeExr1(jjX@http://docs.python.org/3/c-api/veryhigh.html#c.PyEval_EvalCodeExX-tr1XPyObject_RichComparer1(jjXAhttp://docs.python.org/3/c-api/object.html#c.PyObject_RichCompareX-tr1XPyBytes_ConcatAndDelr1(jjX@http://docs.python.org/3/c-api/bytes.html#c.PyBytes_ConcatAndDelX-tr1XPyDict_GetItemr1(jjX9http://docs.python.org/3/c-api/dict.html#c.PyDict_GetItemX-tr1XPyMemoryView_FromObjectr1(jjXHhttp://docs.python.org/3/c-api/memoryview.html#c.PyMemoryView_FromObjectX-tr1XPyMapping_GetItemStringr1(jjXEhttp://docs.python.org/3/c-api/mapping.html#c.PyMapping_GetItemStringX-tr1XPyInterpreterState_Clearr1(jjXChttp://docs.python.org/3/c-api/init.html#c.PyInterpreterState_ClearX-tr1XPyObject_GetArenaAllocatorr1(jjXGhttp://docs.python.org/3/c-api/memory.html#c.PyObject_GetArenaAllocatorX-tr1XPyUnicode_CheckExactr1(jjXBhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_CheckExactX-tr1XPyUnicode_2BYTE_DATAr1(jjXBhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_2BYTE_DATAX-tr1XPy_GetBuildInfor1(jjX:http://docs.python.org/3/c-api/init.html#c.Py_GetBuildInfoX-tr1XPyUnicode_DecodeUTF32Statefulr1(jjXKhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF32StatefulX-tr1XPyUnicode_Checkr1(jjX=http://docs.python.org/3/c-api/unicode.html#c.PyUnicode_CheckX-tr2XPyTime_FromTimer2(jjX>http://docs.python.org/3/c-api/datetime.html#c.PyTime_FromTimeX-tr2X PyList_Sortr2(jjX6http://docs.python.org/3/c-api/list.html#c.PyList_SortX-tr2XPySequence_InPlaceConcatr2(jjXGhttp://docs.python.org/3/c-api/sequence.html#c.PySequence_InPlaceConcatX-tr2XPyDescr_NewGetSetr2(jjXBhttp://docs.python.org/3/c-api/descriptor.html#c.PyDescr_NewGetSetX-tr2XPyArg_UnpackTupler 2(jjX;http://docs.python.org/3/c-api/arg.html#c.PyArg_UnpackTupleX-tr 2X PySet_Discardr 2(jjX7http://docs.python.org/3/c-api/set.html#c.PySet_DiscardX-tr 2X!PyUnicodeTranslateError_GetObjectr 2(jjXRhttp://docs.python.org/3/c-api/exceptions.html#c.PyUnicodeTranslateError_GetObjectX-tr2XPyTuple_SetItemr2(jjX;http://docs.python.org/3/c-api/tuple.html#c.PyTuple_SetItemX-tr2XPyLong_FromVoidPtrr2(jjX=http://docs.python.org/3/c-api/long.html#c.PyLong_FromVoidPtrX-tr2XPyObject_CheckBufferr2(jjXAhttp://docs.python.org/3/c-api/buffer.html#c.PyObject_CheckBufferX-tr2XPyEval_SetProfiler2(jjX<http://docs.python.org/3/c-api/init.html#c.PyEval_SetProfileX-tr2XPyUnicodeDecodeError_SetReasonr2(jjXOhttp://docs.python.org/3/c-api/exceptions.html#c.PyUnicodeDecodeError_SetReasonX-tr2XPyNumber_InPlaceRemainderr2(jjXFhttp://docs.python.org/3/c-api/number.html#c.PyNumber_InPlaceRemainderX-tr2XPyNumber_Subtractr2(jjX>http://docs.python.org/3/c-api/number.html#c.PyNumber_SubtractX-tr2XPyImport_GetMagicTagr2(jjXAhttp://docs.python.org/3/c-api/import.html#c.PyImport_GetMagicTagX-tr2XPyErr_WarnExplicitr2(jjXChttp://docs.python.org/3/c-api/exceptions.html#c.PyErr_WarnExplicitX-tr 2XPyRun_InteractiveOneFlagsr!2(jjXHhttp://docs.python.org/3/c-api/veryhigh.html#c.PyRun_InteractiveOneFlagsX-tr"2XPyLong_AsDoubler#2(jjX:http://docs.python.org/3/c-api/long.html#c.PyLong_AsDoubleX-tr$2X_PyObject_GC_UNTRACKr%2(jjXDhttp://docs.python.org/3/c-api/gcsupport.html#c._PyObject_GC_UNTRACKX-tr&2X Py_XINCREFr'2(jjX<http://docs.python.org/3/c-api/refcounting.html#c.Py_XINCREFX-tr(2XPyModule_Creater)2(jjX<http://docs.python.org/3/c-api/module.html#c.PyModule_CreateX-tr*2X PyType_Readyr+2(jjX7http://docs.python.org/3/c-api/type.html#c.PyType_ReadyX-tr,2XPySys_SetArgvExr-2(jjX:http://docs.python.org/3/c-api/init.html#c.PySys_SetArgvExX-tr.2XPyUnicodeDecodeError_GetStartr/2(jjXNhttp://docs.python.org/3/c-api/exceptions.html#c.PyUnicodeDecodeError_GetStartX-tr02X _PyObject_Newr12(jjX>http://docs.python.org/3/c-api/allocation.html#c._PyObject_NewX-tr22XPyMem_GetAllocatorr32(jjX?http://docs.python.org/3/c-api/memory.html#c.PyMem_GetAllocatorX-tr42X PyList_Sizer52(jjX6http://docs.python.org/3/c-api/list.html#c.PyList_SizeX-tr62X PyIter_Nextr72(jjX6http://docs.python.org/3/c-api/iter.html#c.PyIter_NextX-tr82XPy_GetExecPrefixr92(jjX;http://docs.python.org/3/c-api/init.html#c.Py_GetExecPrefixX-tr:2XPyEval_ThreadsInitializedr;2(jjXDhttp://docs.python.org/3/c-api/init.html#c.PyEval_ThreadsInitializedX-tr<2XPyImport_GetModuleDictr=2(jjXChttp://docs.python.org/3/c-api/import.html#c.PyImport_GetModuleDictX-tr>2XPyLong_FromUnsignedLongr?2(jjXBhttp://docs.python.org/3/c-api/long.html#c.PyLong_FromUnsignedLongX-tr@2XPyCodec_BackslashReplaceErrorsrA2(jjXJhttp://docs.python.org/3/c-api/codec.html#c.PyCodec_BackslashReplaceErrorsX-trB2XPy_UNICODE_ISNUMERICrC2(jjXBhttp://docs.python.org/3/c-api/unicode.html#c.Py_UNICODE_ISNUMERICX-trD2XPyCodec_EncoderrE2(jjX;http://docs.python.org/3/c-api/codec.html#c.PyCodec_EncoderX-trF2XPyCapsule_GetPointerrG2(jjXBhttp://docs.python.org/3/c-api/capsule.html#c.PyCapsule_GetPointerX-trH2XPyType_GenericAllocrI2(jjX>http://docs.python.org/3/c-api/type.html#c.PyType_GenericAllocX-trJ2XPyTime_CheckExactrK2(jjX@http://docs.python.org/3/c-api/datetime.html#c.PyTime_CheckExactX-trL2XPySequence_ConcatrM2(jjX@http://docs.python.org/3/c-api/sequence.html#c.PySequence_ConcatX-trN2XPyNumber_InPlaceFloorDividerO2(jjXHhttp://docs.python.org/3/c-api/number.html#c.PyNumber_InPlaceFloorDivideX-trP2XPyCodec_XMLCharRefReplaceErrorsrQ2(jjXKhttp://docs.python.org/3/c-api/codec.html#c.PyCodec_XMLCharRefReplaceErrorsX-trR2XPyType_FromSpecrS2(jjX:http://docs.python.org/3/c-api/type.html#c.PyType_FromSpecX-trT2XPyUnicode_AsWideCharrU2(jjXBhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_AsWideCharX-trV2XPyStructSequence_GetItemrW2(jjXDhttp://docs.python.org/3/c-api/tuple.html#c.PyStructSequence_GetItemX-trX2XPyFrozenSet_CheckrY2(jjX;http://docs.python.org/3/c-api/set.html#c.PyFrozenSet_CheckX-trZ2XPyImport_ImportModuleNoBlockr[2(jjXIhttp://docs.python.org/3/c-api/import.html#c.PyImport_ImportModuleNoBlockX-tr\2XPyUnicode_FSDecoderr]2(jjXAhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_FSDecoderX-tr^2XPyUnicodeTranslateError_SetEndr_2(jjXOhttp://docs.python.org/3/c-api/exceptions.html#c.PyUnicodeTranslateError_SetEndX-tr`2XPyWeakref_Checkra2(jjX=http://docs.python.org/3/c-api/weakref.html#c.PyWeakref_CheckX-trb2XPyDate_FromDaterc2(jjX>http://docs.python.org/3/c-api/datetime.html#c.PyDate_FromDateX-trd2X PyDict_Newre2(jjX5http://docs.python.org/3/c-api/dict.html#c.PyDict_NewX-trf2XPyObject_GetAttrrg2(jjX=http://docs.python.org/3/c-api/object.html#c.PyObject_GetAttrX-trh2XPyCodec_StreamReaderri2(jjX@http://docs.python.org/3/c-api/codec.html#c.PyCodec_StreamReaderX-trj2XPyMemoryView_GET_BASErk2(jjXFhttp://docs.python.org/3/c-api/memoryview.html#c.PyMemoryView_GET_BASEX-trl2XPyList_SetSlicerm2(jjX:http://docs.python.org/3/c-api/list.html#c.PyList_SetSliceX-trn2XPyObject_IsSubclassro2(jjX@http://docs.python.org/3/c-api/object.html#c.PyObject_IsSubclassX-trp2XPyLong_AsUnsignedLongLongMaskrq2(jjXHhttp://docs.python.org/3/c-api/long.html#c.PyLong_AsUnsignedLongLongMaskX-trr2XPyThreadState_Getrs2(jjX<http://docs.python.org/3/c-api/init.html#c.PyThreadState_GetX-trt2XPyUnicode_TranslateCharmapru2(jjXHhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_TranslateCharmapX-trv2XPyObject_CallFunctionObjArgsrw2(jjXIhttp://docs.python.org/3/c-api/object.html#c.PyObject_CallFunctionObjArgsX-trx2XPySys_GetXOptionsry2(jjX;http://docs.python.org/3/c-api/sys.html#c.PySys_GetXOptionsX-trz2XPyImport_AddModuler{2(jjX?http://docs.python.org/3/c-api/import.html#c.PyImport_AddModuleX-tr|2XPyUnicodeEncodeError_GetObjectr}2(jjXOhttp://docs.python.org/3/c-api/exceptions.html#c.PyUnicodeEncodeError_GetObjectX-tr~2XPyCodec_StreamWriterr2(jjX@http://docs.python.org/3/c-api/codec.html#c.PyCodec_StreamWriterX-tr2XPyException_SetCauser2(jjXEhttp://docs.python.org/3/c-api/exceptions.html#c.PyException_SetCauseX-tr2X PyMem_RawFreer2(jjX:http://docs.python.org/3/c-api/memory.html#c.PyMem_RawFreeX-tr2XPyUnicode_EncodeMBCSr2(jjXBhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_EncodeMBCSX-tr2XPyModule_AddStringConstantr2(jjXGhttp://docs.python.org/3/c-api/module.html#c.PyModule_AddStringConstantX-tr2XPyMem_RawMallocr2(jjX<http://docs.python.org/3/c-api/memory.html#c.PyMem_RawMallocX-tr2XPyObject_GC_Newr2(jjX?http://docs.python.org/3/c-api/gcsupport.html#c.PyObject_GC_NewX-tr2XPy_IsInitializedr2(jjX;http://docs.python.org/3/c-api/init.html#c.Py_IsInitializedX-tr2X,PyErr_SetExcFromWindowsErrWithFilenameObjectr2(jjX]http://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetExcFromWindowsErrWithFilenameObjectX-tr2XPyWeakref_CheckRefr2(jjX@http://docs.python.org/3/c-api/weakref.html#c.PyWeakref_CheckRefX-tr2XPyInterpreterState_ThreadHeadr2(jjXHhttp://docs.python.org/3/c-api/init.html#c.PyInterpreterState_ThreadHeadX-tr2XPySys_FormatStderrr2(jjX<http://docs.python.org/3/c-api/sys.html#c.PySys_FormatStderrX-tr2XPy_UNICODE_ISUPPERr2(jjX@http://docs.python.org/3/c-api/unicode.html#c.Py_UNICODE_ISUPPERX-tr2XPyCodec_LookupErrorr2(jjX?http://docs.python.org/3/c-api/codec.html#c.PyCodec_LookupErrorX-tr2XPyTZInfo_Checkr2(jjX=http://docs.python.org/3/c-api/datetime.html#c.PyTZInfo_CheckX-tr2XPyMapping_DelItemStringr2(jjXEhttp://docs.python.org/3/c-api/mapping.html#c.PyMapping_DelItemStringX-tr2XPyRun_SimpleFileExFlagsr2(jjXFhttp://docs.python.org/3/c-api/veryhigh.html#c.PyRun_SimpleFileExFlagsX-tr2XPyFloat_FromStringr2(jjX>http://docs.python.org/3/c-api/float.html#c.PyFloat_FromStringX-tr2XPyType_ClearCacher2(jjX<http://docs.python.org/3/c-api/type.html#c.PyType_ClearCacheX-tr2XPyBytes_FromStringAndSizer2(jjXEhttp://docs.python.org/3/c-api/bytes.html#c.PyBytes_FromStringAndSizeX-tr2X PyDict_Sizer2(jjX6http://docs.python.org/3/c-api/dict.html#c.PyDict_SizeX-tr2XPyCapsule_GetNamer2(jjX?http://docs.python.org/3/c-api/capsule.html#c.PyCapsule_GetNameX-tr2X PyTuple_Packr2(jjX8http://docs.python.org/3/c-api/tuple.html#c.PyTuple_PackX-tr2XPyLong_FromUnicoder2(jjX=http://docs.python.org/3/c-api/long.html#c.PyLong_FromUnicodeX-tr2XPy_UNICODE_TONUMERICr2(jjXBhttp://docs.python.org/3/c-api/unicode.html#c.Py_UNICODE_TONUMERICX-tr2XPySequence_Repeatr2(jjX@http://docs.python.org/3/c-api/sequence.html#c.PySequence_RepeatX-tr2XPyFrame_GetLineNumberr2(jjXFhttp://docs.python.org/3/c-api/reflection.html#c.PyFrame_GetLineNumberX-tr2XPySequence_Fast_GET_SIZEr2(jjXGhttp://docs.python.org/3/c-api/sequence.html#c.PySequence_Fast_GET_SIZEX-tr2XPyUnicode_DecodeUTF32r2(jjXChttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF32X-tr2XPyEval_EvalFramer2(jjX?http://docs.python.org/3/c-api/veryhigh.html#c.PyEval_EvalFrameX-tr2X PyUnicodeTranslateError_SetStartr2(jjXQhttp://docs.python.org/3/c-api/exceptions.html#c.PyUnicodeTranslateError_SetStartX-tr2XPyByteArray_CheckExactr2(jjXFhttp://docs.python.org/3/c-api/bytearray.html#c.PyByteArray_CheckExactX-tr2XPyException_GetContextr2(jjXGhttp://docs.python.org/3/c-api/exceptions.html#c.PyException_GetContextX-tr2XPyImport_ReloadModuler2(jjXBhttp://docs.python.org/3/c-api/import.html#c.PyImport_ReloadModuleX-tr2XPyFunction_GetCoder2(jjXAhttp://docs.python.org/3/c-api/function.html#c.PyFunction_GetCodeX-tr2X PyDict_Copyr2(jjX6http://docs.python.org/3/c-api/dict.html#c.PyDict_CopyX-tr2XPyDict_GetItemStringr2(jjX?http://docs.python.org/3/c-api/dict.html#c.PyDict_GetItemStringX-tr2XPyLong_FromLongr2(jjX:http://docs.python.org/3/c-api/long.html#c.PyLong_FromLongX-tr2XPyMethod_Functionr2(jjX>http://docs.python.org/3/c-api/method.html#c.PyMethod_FunctionX-tr2XPyErr_BadInternalCallr2(jjXFhttp://docs.python.org/3/c-api/exceptions.html#c.PyErr_BadInternalCallX-tr2X PySlice_Checkr2(jjX9http://docs.python.org/3/c-api/slice.html#c.PySlice_CheckX-tr2X PyErr_Restorer2(jjX>http://docs.python.org/3/c-api/exceptions.html#c.PyErr_RestoreX-tr2XPyErr_SetExcFromWindowsErrr2(jjXKhttp://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetExcFromWindowsErrX-tr2XPyUnicode_DecodeUTF7Statefulr2(jjXJhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF7StatefulX-tr2XPy_UNICODE_ISTITLEr2(jjX@http://docs.python.org/3/c-api/unicode.html#c.Py_UNICODE_ISTITLEX-tr2XPyType_GetSlotr2(jjX9http://docs.python.org/3/c-api/type.html#c.PyType_GetSlotX-tr2X PyGen_Newr2(jjX3http://docs.python.org/3/c-api/gen.html#c.PyGen_NewX-tr2X PyFile_FromFdr2(jjX8http://docs.python.org/3/c-api/file.html#c.PyFile_FromFdX-tr2X PyMem_Newr2(jjX6http://docs.python.org/3/c-api/memory.html#c.PyMem_NewX-tr2XPyUnicodeEncodeError_GetStartr2(jjXNhttp://docs.python.org/3/c-api/exceptions.html#c.PyUnicodeEncodeError_GetStartX-tr2XPyTuple_SET_ITEMr2(jjX<http://docs.python.org/3/c-api/tuple.html#c.PyTuple_SET_ITEMX-tr2XPyNumber_Floatr2(jjX;http://docs.python.org/3/c-api/number.html#c.PyNumber_FloatX-tr2XPyNumber_Invertr2(jjX<http://docs.python.org/3/c-api/number.html#c.PyNumber_InvertX-tr2XPy_UNICODE_TODECIMALr2(jjXBhttp://docs.python.org/3/c-api/unicode.html#c.Py_UNICODE_TODECIMALX-tr2X PyBytes_Sizer2(jjX8http://docs.python.org/3/c-api/bytes.html#c.PyBytes_SizeX-tr2XPyObject_GC_Delr2(jjX?http://docs.python.org/3/c-api/gcsupport.html#c.PyObject_GC_DelX-tr2XPyBytes_AS_STRINGr2(jjX=http://docs.python.org/3/c-api/bytes.html#c.PyBytes_AS_STRINGX-tr2XPySequence_GetItemr2(jjXAhttp://docs.python.org/3/c-api/sequence.html#c.PySequence_GetItemX-tr2XPyImport_ImportModuleExr2(jjXDhttp://docs.python.org/3/c-api/import.html#c.PyImport_ImportModuleExX-tr2XPyUnicode_Comparer2(jjX?http://docs.python.org/3/c-api/unicode.html#c.PyUnicode_CompareX-tr2XPySet_ClearFreeListr2(jjX=http://docs.python.org/3/c-api/set.html#c.PySet_ClearFreeListX-tr2XPySys_AddWarnOptionUnicoder2(jjXDhttp://docs.python.org/3/c-api/sys.html#c.PySys_AddWarnOptionUnicodeX-tr2X PyNumber_Xorr2(jjX9http://docs.python.org/3/c-api/number.html#c.PyNumber_XorX-tr2XPyUnicodeTranslateError_GetEndr2(jjXOhttp://docs.python.org/3/c-api/exceptions.html#c.PyUnicodeTranslateError_GetEndX-tr2XPy_CompileStringObjectr2(jjXEhttp://docs.python.org/3/c-api/veryhigh.html#c.Py_CompileStringObjectX-tr3XPyList_Reverser3(jjX9http://docs.python.org/3/c-api/list.html#c.PyList_ReverseX-tr3XPyInstanceMethod_GET_FUNCTIONr3(jjXJhttp://docs.python.org/3/c-api/method.html#c.PyInstanceMethod_GET_FUNCTIONX-tr3XPyDateTime_DELTA_GET_DAYSr3(jjXHhttp://docs.python.org/3/c-api/datetime.html#c.PyDateTime_DELTA_GET_DAYSX-tr3XPyUnicode_Translater3(jjXAhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_TranslateX-tr3XPyNumber_InPlaceTrueDivider 3(jjXGhttp://docs.python.org/3/c-api/number.html#c.PyNumber_InPlaceTrueDivideX-tr 3XPyUnicodeEncodeError_SetStartr 3(jjXNhttp://docs.python.org/3/c-api/exceptions.html#c.PyUnicodeEncodeError_SetStartX-tr 3XPyUnicode_GET_DATA_SIZEr 3(jjXEhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_GET_DATA_SIZEX-tr3XPyEval_RestoreThreadr3(jjX?http://docs.python.org/3/c-api/init.html#c.PyEval_RestoreThreadX-tr3X PyDelta_Checkr3(jjX<http://docs.python.org/3/c-api/datetime.html#c.PyDelta_CheckX-tr3XPyErr_BadArgumentr3(jjXBhttp://docs.python.org/3/c-api/exceptions.html#c.PyErr_BadArgumentX-tr3X PyRun_Filer3(jjX9http://docs.python.org/3/c-api/veryhigh.html#c.PyRun_FileX-tr3X&PyErr_SetExcFromWindowsErrWithFilenamer3(jjXWhttp://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetExcFromWindowsErrWithFilenameX-tr3X PyDict_Keysr3(jjX6http://docs.python.org/3/c-api/dict.html#c.PyDict_KeysX-tr3XPy_Mainr3(jjX6http://docs.python.org/3/c-api/veryhigh.html#c.Py_MainX-tr3XPyUnicode_DecodeLocaleAndSizer3(jjXKhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeLocaleAndSizeX-tr3XPyLong_FromUnicodeObjectr3(jjXChttp://docs.python.org/3/c-api/long.html#c.PyLong_FromUnicodeObjectX-tr 3X PyDict_Valuesr!3(jjX8http://docs.python.org/3/c-api/dict.html#c.PyDict_ValuesX-tr"3XPyException_SetContextr#3(jjXGhttp://docs.python.org/3/c-api/exceptions.html#c.PyException_SetContextX-tr$3X PySet_Checkr%3(jjX5http://docs.python.org/3/c-api/set.html#c.PySet_CheckX-tr&3X _Py_c_quotr'3(jjX8http://docs.python.org/3/c-api/complex.html#c._Py_c_quotX-tr(3XPyObject_TypeCheckr)3(jjX?http://docs.python.org/3/c-api/object.html#c.PyObject_TypeCheckX-tr*3X PySeqIter_Newr+3(jjX<http://docs.python.org/3/c-api/iterator.html#c.PySeqIter_NewX-tr,3XPyEval_SaveThreadr-3(jjX<http://docs.python.org/3/c-api/init.html#c.PyEval_SaveThreadX-tr.3XPyBool_FromLongr/3(jjX:http://docs.python.org/3/c-api/bool.html#c.PyBool_FromLongX-tr03XPyErr_SetInterruptr13(jjXChttp://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetInterruptX-tr23XPyModule_GetFilenameObjectr33(jjXGhttp://docs.python.org/3/c-api/module.html#c.PyModule_GetFilenameObjectX-tr43XPyEval_GetFuncNamer53(jjXChttp://docs.python.org/3/c-api/reflection.html#c.PyEval_GetFuncNameX-tr63XPy_UCS4_strcatr73(jjX<http://docs.python.org/3/c-api/unicode.html#c.Py_UCS4_strcatX-tr83X Py_GetPrefixr93(jjX7http://docs.python.org/3/c-api/init.html#c.Py_GetPrefixX-tr:3XPy_UNICODE_TOLOWERr;3(jjX@http://docs.python.org/3/c-api/unicode.html#c.Py_UNICODE_TOLOWERX-tr<3XPyUnicode_FromUnicoder=3(jjXChttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_FromUnicodeX-tr>3XPyDateTime_Checkr?3(jjX?http://docs.python.org/3/c-api/datetime.html#c.PyDateTime_CheckX-tr@3XPyDict_ContainsrA3(jjX:http://docs.python.org/3/c-api/dict.html#c.PyDict_ContainsX-trB3XPyByteArray_SizerC3(jjX@http://docs.python.org/3/c-api/bytearray.html#c.PyByteArray_SizeX-trD3XPyComplex_AsCComplexrE3(jjXBhttp://docs.python.org/3/c-api/complex.html#c.PyComplex_AsCComplexX-trF3X PyTime_CheckrG3(jjX;http://docs.python.org/3/c-api/datetime.html#c.PyTime_CheckX-trH3XPyFrozenSet_NewrI3(jjX9http://docs.python.org/3/c-api/set.html#c.PyFrozenSet_NewX-trJ3XPyMarshal_ReadLongFromFilerK3(jjXHhttp://docs.python.org/3/c-api/marshal.html#c.PyMarshal_ReadLongFromFileX-trL3XPyMethod_CheckrM3(jjX;http://docs.python.org/3/c-api/method.html#c.PyMethod_CheckX-trN3XPyObject_GC_TrackrO3(jjXAhttp://docs.python.org/3/c-api/gcsupport.html#c.PyObject_GC_TrackX-trP3XPyDateTime_DELTA_GET_SECONDSrQ3(jjXKhttp://docs.python.org/3/c-api/datetime.html#c.PyDateTime_DELTA_GET_SECONDSX-trR3XPyRun_StringFlagsrS3(jjX@http://docs.python.org/3/c-api/veryhigh.html#c.PyRun_StringFlagsX-trT3XPyEval_AcquireLockrU3(jjX=http://docs.python.org/3/c-api/init.html#c.PyEval_AcquireLockX-trV3X PySys_SetArgvrW3(jjX8http://docs.python.org/3/c-api/init.html#c.PySys_SetArgvX-trX3XPyGILState_CheckrY3(jjX;http://docs.python.org/3/c-api/init.html#c.PyGILState_CheckX-trZ3X PyDate_Checkr[3(jjX;http://docs.python.org/3/c-api/datetime.html#c.PyDate_CheckX-tr\3XPyMarshal_ReadObjectFromStringr]3(jjXLhttp://docs.python.org/3/c-api/marshal.html#c.PyMarshal_ReadObjectFromStringX-tr^3XPyException_GetCauser_3(jjXEhttp://docs.python.org/3/c-api/exceptions.html#c.PyException_GetCauseX-tr`3XPyInstanceMethod_Newra3(jjXAhttp://docs.python.org/3/c-api/method.html#c.PyInstanceMethod_NewX-trb3X PyMem_Delrc3(jjX6http://docs.python.org/3/c-api/memory.html#c.PyMem_DelX-trd3XPyUnicode_Fillre3(jjX<http://docs.python.org/3/c-api/unicode.html#c.PyUnicode_FillX-trf3XPyCallable_Checkrg3(jjX=http://docs.python.org/3/c-api/object.html#c.PyCallable_CheckX-trh3X Py_GetVersionri3(jjX8http://docs.python.org/3/c-api/init.html#c.Py_GetVersionX-trj3XPyErr_GetExcInfork3(jjXAhttp://docs.python.org/3/c-api/exceptions.html#c.PyErr_GetExcInfoX-trl3XPyObject_GetBufferrm3(jjX?http://docs.python.org/3/c-api/buffer.html#c.PyObject_GetBufferX-trn3XPyDateTime_GET_YEARro3(jjXBhttp://docs.python.org/3/c-api/datetime.html#c.PyDateTime_GET_YEARX-trp3XPyList_GetItemrq3(jjX9http://docs.python.org/3/c-api/list.html#c.PyList_GetItemX-trr3XPyBytes_AsStringrs3(jjX<http://docs.python.org/3/c-api/bytes.html#c.PyBytes_AsStringX-trt3X PyObject_Sizeru3(jjX:http://docs.python.org/3/c-api/object.html#c.PyObject_SizeX-trv3XPySequence_Listrw3(jjX>http://docs.python.org/3/c-api/sequence.html#c.PySequence_ListX-trx3XPyObject_Printry3(jjX;http://docs.python.org/3/c-api/object.html#c.PyObject_PrintX-trz3XPyCapsule_IsValidr{3(jjX?http://docs.python.org/3/c-api/capsule.html#c.PyCapsule_IsValidX-tr|3XPy_SetPythonHomer}3(jjX;http://docs.python.org/3/c-api/init.html#c.Py_SetPythonHomeX-tr~3XPyUnicode_1BYTE_DATAr3(jjXBhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_1BYTE_DATAX-tr3XPy_UCS4_strchrr3(jjX<http://docs.python.org/3/c-api/unicode.html#c.Py_UCS4_strchrX-tr3XPyUnicode_Countr3(jjX=http://docs.python.org/3/c-api/unicode.html#c.PyUnicode_CountX-tr3XPyRun_SimpleFileExr3(jjXAhttp://docs.python.org/3/c-api/veryhigh.html#c.PyRun_SimpleFileExX-tr3XPyOS_CheckStackr3(jjX9http://docs.python.org/3/c-api/sys.html#c.PyOS_CheckStackX-tr3XPyErr_SetExcInfor3(jjXAhttp://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetExcInfoX-tr3XPyRun_AnyFileExr3(jjX>http://docs.python.org/3/c-api/veryhigh.html#c.PyRun_AnyFileExX-tr3XPyEval_GetLocalsr3(jjXAhttp://docs.python.org/3/c-api/reflection.html#c.PyEval_GetLocalsX-tr3XPyLong_AsLongLongAndOverflowr3(jjXGhttp://docs.python.org/3/c-api/long.html#c.PyLong_AsLongLongAndOverflowX-tr3XPyObject_SetAttrr3(jjX=http://docs.python.org/3/c-api/object.html#c.PyObject_SetAttrX-tr3XPyDict_SetItemStringr3(jjX?http://docs.python.org/3/c-api/dict.html#c.PyDict_SetItemStringX-tr3XPyMapping_HasKeyStringr3(jjXDhttp://docs.python.org/3/c-api/mapping.html#c.PyMapping_HasKeyStringX-tr3XPyTuple_GET_SIZEr3(jjX<http://docs.python.org/3/c-api/tuple.html#c.PyTuple_GET_SIZEX-tr3XPyUnicode_AS_UNICODEr3(jjXBhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_AS_UNICODEX-tr3XPyObject_ASCIIr3(jjX;http://docs.python.org/3/c-api/object.html#c.PyObject_ASCIIX-tr3XPyComplex_RealAsDoubler3(jjXDhttp://docs.python.org/3/c-api/complex.html#c.PyComplex_RealAsDoubleX-tr3XPyEval_GetGlobalsr3(jjXBhttp://docs.python.org/3/c-api/reflection.html#c.PyEval_GetGlobalsX-tr3XPyCodec_ReplaceErrorsr3(jjXAhttp://docs.python.org/3/c-api/codec.html#c.PyCodec_ReplaceErrorsX-tr3XPyErr_SyntaxLocationExr3(jjXGhttp://docs.python.org/3/c-api/exceptions.html#c.PyErr_SyntaxLocationExX-tr3XPyLong_AsLongAndOverflowr3(jjXChttp://docs.python.org/3/c-api/long.html#c.PyLong_AsLongAndOverflowX-tr3XPy_UNICODE_ISALNUMr3(jjX@http://docs.python.org/3/c-api/unicode.html#c.Py_UNICODE_ISALNUMX-tr3XPyNumber_Multiplyr3(jjX>http://docs.python.org/3/c-api/number.html#c.PyNumber_MultiplyX-tr3X PyType_IS_GCr3(jjX7http://docs.python.org/3/c-api/type.html#c.PyType_IS_GCX-tr3XPyThreadState_Deleter3(jjX?http://docs.python.org/3/c-api/init.html#c.PyThreadState_DeleteX-tr3XPyErr_WarnExplicitObjectr3(jjXIhttp://docs.python.org/3/c-api/exceptions.html#c.PyErr_WarnExplicitObjectX-tr3X PyErr_Clearr3(jjX<http://docs.python.org/3/c-api/exceptions.html#c.PyErr_ClearX-tr3XPyLong_FromStringr3(jjX<http://docs.python.org/3/c-api/long.html#c.PyLong_FromStringX-tr3XPyMapping_Keysr3(jjX<http://docs.python.org/3/c-api/mapping.html#c.PyMapping_KeysX-tr3XPyObject_SetArenaAllocatorr3(jjXGhttp://docs.python.org/3/c-api/memory.html#c.PyObject_SetArenaAllocatorX-tr3XPySys_WriteStdoutr3(jjX;http://docs.python.org/3/c-api/sys.html#c.PySys_WriteStdoutX-tr3XPyImport_AddModuleObjectr3(jjXEhttp://docs.python.org/3/c-api/import.html#c.PyImport_AddModuleObjectX-tr3X#PyErr_SetFromWindowsErrWithFilenamer3(jjXThttp://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetFromWindowsErrWithFilenameX-tr3XPyMapping_HasKeyr3(jjX>http://docs.python.org/3/c-api/mapping.html#c.PyMapping_HasKeyX-tr3XPy_InitializeExr3(jjX:http://docs.python.org/3/c-api/init.html#c.Py_InitializeExX-tr3XPyCode_GetNumFreer3(jjX<http://docs.python.org/3/c-api/code.html#c.PyCode_GetNumFreeX-tr3XPyMem_SetAllocatorr3(jjX?http://docs.python.org/3/c-api/memory.html#c.PyMem_SetAllocatorX-tr3X _Py_c_powr3(jjX7http://docs.python.org/3/c-api/complex.html#c._Py_c_powX-tr3XPyBytes_FromStringr3(jjX>http://docs.python.org/3/c-api/bytes.html#c.PyBytes_FromStringX-tr3XPyState_RemoveModuler3(jjXAhttp://docs.python.org/3/c-api/module.html#c.PyState_RemoveModuleX-tr3XPyUnicode_DecodeMBCSStatefulr3(jjXJhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeMBCSStatefulX-tr3XPyObject_SetAttrStringr3(jjXChttp://docs.python.org/3/c-api/object.html#c.PyObject_SetAttrStringX-tr3XPyUnicodeDecodeError_GetObjectr3(jjXOhttp://docs.python.org/3/c-api/exceptions.html#c.PyUnicodeDecodeError_GetObjectX-tr3XPyStructSequence_InitTyper3(jjXEhttp://docs.python.org/3/c-api/tuple.html#c.PyStructSequence_InitTypeX-tr3XPyErr_NormalizeExceptionr3(jjXIhttp://docs.python.org/3/c-api/exceptions.html#c.PyErr_NormalizeExceptionX-tr3XPyDateTime_CheckExactr3(jjXDhttp://docs.python.org/3/c-api/datetime.html#c.PyDateTime_CheckExactX-tr3XPyUnicode_AsEncodedStringr3(jjXGhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_AsEncodedStringX-tr3XPyFunction_SetDefaultsr3(jjXEhttp://docs.python.org/3/c-api/function.html#c.PyFunction_SetDefaultsX-tr3XPyMethod_GET_SELFr3(jjX>http://docs.python.org/3/c-api/method.html#c.PyMethod_GET_SELFX-tr3X PyNumber_Longr3(jjX:http://docs.python.org/3/c-api/number.html#c.PyNumber_LongX-tr3XPyNumber_InPlaceXorr3(jjX@http://docs.python.org/3/c-api/number.html#c.PyNumber_InPlaceXorX-tr3XPyErr_WriteUnraisabler3(jjXFhttp://docs.python.org/3/c-api/exceptions.html#c.PyErr_WriteUnraisableX-tr3XPyFunction_GetModuler3(jjXChttp://docs.python.org/3/c-api/function.html#c.PyFunction_GetModuleX-tr3XPyOS_double_to_stringr3(jjXFhttp://docs.python.org/3/c-api/conversion.html#c.PyOS_double_to_stringX-tr3XPyStructSequence_SetItemr3(jjXDhttp://docs.python.org/3/c-api/tuple.html#c.PyStructSequence_SetItemX-tr3X PySet_Newr3(jjX3http://docs.python.org/3/c-api/set.html#c.PySet_NewX-tr3XPyCallIter_Newr3(jjX=http://docs.python.org/3/c-api/iterator.html#c.PyCallIter_NewX-tr3XPyComplex_CheckExactr3(jjXBhttp://docs.python.org/3/c-api/complex.html#c.PyComplex_CheckExactX-tr3XPy_LeaveRecursiveCallr3(jjXFhttp://docs.python.org/3/c-api/exceptions.html#c.Py_LeaveRecursiveCallX-tr3XPyErr_SetFromErrnor3(jjXChttp://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetFromErrnoX-tr3XPyArg_ParseTupleAndKeywordsr3(jjXEhttp://docs.python.org/3/c-api/arg.html#c.PyArg_ParseTupleAndKeywordsX-tr3X PyDict_Nextr3(jjX6http://docs.python.org/3/c-api/dict.html#c.PyDict_NextX-tr3XPyNumber_TrueDivider3(jjX@http://docs.python.org/3/c-api/number.html#c.PyNumber_TrueDivideX-tr3XPyCapsule_SetNamer3(jjX?http://docs.python.org/3/c-api/capsule.html#c.PyCapsule_SetNameX-tr3XPyLong_FromUnsignedLongLongr3(jjXFhttp://docs.python.org/3/c-api/long.html#c.PyLong_FromUnsignedLongLongX-tr3XPyArg_VaParseTupleAndKeywordsr3(jjXGhttp://docs.python.org/3/c-api/arg.html#c.PyArg_VaParseTupleAndKeywordsX-tr4XPyCodec_Decoderr4(jjX;http://docs.python.org/3/c-api/codec.html#c.PyCodec_DecoderX-tr4XPy_UNICODE_ISALPHAr4(jjX@http://docs.python.org/3/c-api/unicode.html#c.Py_UNICODE_ISALPHAX-tr4X PyList_Insertr4(jjX8http://docs.python.org/3/c-api/list.html#c.PyList_InsertX-tr4XPyCapsule_SetDestructorr4(jjXEhttp://docs.python.org/3/c-api/capsule.html#c.PyCapsule_SetDestructorX-tr4XPyFloat_GetInfor 4(jjX;http://docs.python.org/3/c-api/float.html#c.PyFloat_GetInfoX-tr 4X PyUnicodeTranslateError_GetStartr 4(jjXQhttp://docs.python.org/3/c-api/exceptions.html#c.PyUnicodeTranslateError_GetStartX-tr 4XPySignal_SetWakeupFdr 4(jjXEhttp://docs.python.org/3/c-api/exceptions.html#c.PySignal_SetWakeupFdX-tr4X PyOS_strnicmpr4(jjX>http://docs.python.org/3/c-api/conversion.html#c.PyOS_strnicmpX-tr4XPyFile_WriteObjectr4(jjX=http://docs.python.org/3/c-api/file.html#c.PyFile_WriteObjectX-tr4XPyErr_NewExceptionWithDocr4(jjXJhttp://docs.python.org/3/c-api/exceptions.html#c.PyErr_NewExceptionWithDocX-tr4XPyRun_AnyFileFlagsr4(jjXAhttp://docs.python.org/3/c-api/veryhigh.html#c.PyRun_AnyFileFlagsX-tr4X PyArg_Parser4(jjX5http://docs.python.org/3/c-api/arg.html#c.PyArg_ParseX-tr4XPyException_SetTracebackr4(jjXIhttp://docs.python.org/3/c-api/exceptions.html#c.PyException_SetTracebackX-tr4XPyDateTime_GET_DAYr4(jjXAhttp://docs.python.org/3/c-api/datetime.html#c.PyDateTime_GET_DAYX-tr4XPyDateTime_DATE_GET_HOURr4(jjXGhttp://docs.python.org/3/c-api/datetime.html#c.PyDateTime_DATE_GET_HOURX-tr4X_PyTuple_Resizer4(jjX;http://docs.python.org/3/c-api/tuple.html#c._PyTuple_ResizeX-tr 4XPyEval_ReleaseThreadr!4(jjX?http://docs.python.org/3/c-api/init.html#c.PyEval_ReleaseThreadX-tr"4XPyMarshal_ReadObjectFromFiler#4(jjXJhttp://docs.python.org/3/c-api/marshal.html#c.PyMarshal_ReadObjectFromFileX-tr$4XPyUnicode_AsUnicodeCopyr%4(jjXEhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_AsUnicodeCopyX-tr&4XPyUnicode_MAX_CHAR_VALUEr'4(jjXFhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_MAX_CHAR_VALUEX-tr(4XPyNumber_Absoluter)4(jjX>http://docs.python.org/3/c-api/number.html#c.PyNumber_AbsoluteX-tr*4XPyUnicode_WRITEr+4(jjX=http://docs.python.org/3/c-api/unicode.html#c.PyUnicode_WRITEX-tr,4XPyArg_ParseTupler-4(jjX:http://docs.python.org/3/c-api/arg.html#c.PyArg_ParseTupleX-tr.4XPyObject_IsInstancer/4(jjX@http://docs.python.org/3/c-api/object.html#c.PyObject_IsInstanceX-tr04XPyFloat_AS_DOUBLEr14(jjX=http://docs.python.org/3/c-api/float.html#c.PyFloat_AS_DOUBLEX-tr24X PyArg_VaParser34(jjX7http://docs.python.org/3/c-api/arg.html#c.PyArg_VaParseX-tr44XPyAnySet_CheckExactr54(jjX=http://docs.python.org/3/c-api/set.html#c.PyAnySet_CheckExactX-tr64XPy_UCS4_strcmpr74(jjX<http://docs.python.org/3/c-api/unicode.html#c.Py_UCS4_strcmpX-tr84XPyDescr_NewWrapperr94(jjXChttp://docs.python.org/3/c-api/descriptor.html#c.PyDescr_NewWrapperX-tr:4X PyList_Checkr;4(jjX7http://docs.python.org/3/c-api/list.html#c.PyList_CheckX-tr<4XPyObject_GenericSetAttrr=4(jjXDhttp://docs.python.org/3/c-api/object.html#c.PyObject_GenericSetAttrX-tr>4XPyMapping_Lengthr?4(jjX>http://docs.python.org/3/c-api/mapping.html#c.PyMapping_LengthX-tr@4XPyNumber_RemainderrA4(jjX?http://docs.python.org/3/c-api/number.html#c.PyNumber_RemainderX-trB4XPySequence_TuplerC4(jjX?http://docs.python.org/3/c-api/sequence.html#c.PySequence_TupleX-trD4XPyRun_FileExFlagsrE4(jjX@http://docs.python.org/3/c-api/veryhigh.html#c.PyRun_FileExFlagsX-trF4X Py_GetPathrG4(jjX5http://docs.python.org/3/c-api/init.html#c.Py_GetPathX-trH4XPyOS_string_to_doublerI4(jjXFhttp://docs.python.org/3/c-api/conversion.html#c.PyOS_string_to_doubleX-trJ4XPyFloat_CheckExactrK4(jjX>http://docs.python.org/3/c-api/float.html#c.PyFloat_CheckExactX-trL4XPyUnicode_SubstringrM4(jjXAhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_SubstringX-trN4XPyMarshal_ReadShortFromFilerO4(jjXIhttp://docs.python.org/3/c-api/marshal.html#c.PyMarshal_ReadShortFromFileX-trP4XPyNumber_IndexrQ4(jjX;http://docs.python.org/3/c-api/number.html#c.PyNumber_IndexX-trR4XPySys_FormatStdoutrS4(jjX<http://docs.python.org/3/c-api/sys.html#c.PySys_FormatStdoutX-trT4XPyUnicode_DecoderU4(jjX>http://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeX-trV4XPyUnicode_EncodeASCIIrW4(jjXChttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_EncodeASCIIX-trX4XPyLong_AsSsize_trY4(jjX;http://docs.python.org/3/c-api/long.html#c.PyLong_AsSsize_tX-trZ4XPyUnicode_AsLatin1Stringr[4(jjXFhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_AsLatin1StringX-tr\4XPyUnicode_AsUTF8AndSizer]4(jjXEhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_AsUTF8AndSizeX-tr^4XPy_UNICODE_ISLINEBREAKr_4(jjXDhttp://docs.python.org/3/c-api/unicode.html#c.Py_UNICODE_ISLINEBREAKX-tr`4XPyMapping_Checkra4(jjX=http://docs.python.org/3/c-api/mapping.html#c.PyMapping_CheckX-trb4X Py_AtExitrc4(jjX3http://docs.python.org/3/c-api/sys.html#c.Py_AtExitX-trd4XPyUnicode_Splitre4(jjX=http://docs.python.org/3/c-api/unicode.html#c.PyUnicode_SplitX-trf4XPyInstanceMethod_Checkrg4(jjXChttp://docs.python.org/3/c-api/method.html#c.PyInstanceMethod_CheckX-trh4XPyObject_CallFunctionri4(jjXBhttp://docs.python.org/3/c-api/object.html#c.PyObject_CallFunctionX-trj4XPyDescr_IsDatark4(jjX?http://docs.python.org/3/c-api/descriptor.html#c.PyDescr_IsDataX-trl4XPyType_GenericNewrm4(jjX<http://docs.python.org/3/c-api/type.html#c.PyType_GenericNewX-trn4X PyList_Appendro4(jjX8http://docs.python.org/3/c-api/list.html#c.PyList_AppendX-trp4X PySet_Addrq4(jjX3http://docs.python.org/3/c-api/set.html#c.PySet_AddX-trr4XPyRun_SimpleFilers4(jjX?http://docs.python.org/3/c-api/veryhigh.html#c.PyRun_SimpleFileX-trt4XPyNumber_InPlaceMultiplyru4(jjXEhttp://docs.python.org/3/c-api/number.html#c.PyNumber_InPlaceMultiplyX-trv4XPyNumber_Lshiftrw4(jjX<http://docs.python.org/3/c-api/number.html#c.PyNumber_LshiftX-trx4X PyObject_Newry4(jjX=http://docs.python.org/3/c-api/allocation.html#c.PyObject_NewX-trz4XPyType_CheckExactr{4(jjX<http://docs.python.org/3/c-api/type.html#c.PyType_CheckExactX-tr|4XPyBytes_FromObjectr}4(jjX>http://docs.python.org/3/c-api/bytes.html#c.PyBytes_FromObjectX-tr~4X PyCell_Setr4(jjX5http://docs.python.org/3/c-api/cell.html#c.PyCell_SetX-tr4XPyEval_InitThreadsr4(jjX=http://docs.python.org/3/c-api/init.html#c.PyEval_InitThreadsX-tr4X_PyImport_FindExtensionr4(jjXDhttp://docs.python.org/3/c-api/import.html#c._PyImport_FindExtensionX-tr4X PyUnicodeEncodeError_GetEncodingr4(jjXQhttp://docs.python.org/3/c-api/exceptions.html#c.PyUnicodeEncodeError_GetEncodingX-tr4XPy_SetStandardStreamEncodingr4(jjXGhttp://docs.python.org/3/c-api/init.html#c.Py_SetStandardStreamEncodingX-tr4XPy_AddPendingCallr4(jjX<http://docs.python.org/3/c-api/init.html#c.Py_AddPendingCallX-tr4XPyUnicode_AsUTF8r4(jjX>http://docs.python.org/3/c-api/unicode.html#c.PyUnicode_AsUTF8X-tr4XPyWeakref_NewRefr4(jjX>http://docs.python.org/3/c-api/weakref.html#c.PyWeakref_NewRefX-tr4XPyImport_ExecCodeModuleExr4(jjXFhttp://docs.python.org/3/c-api/import.html#c.PyImport_ExecCodeModuleExX-tr4XPyList_GET_ITEMr4(jjX:http://docs.python.org/3/c-api/list.html#c.PyList_GET_ITEMX-tr4XPyGILState_Releaser4(jjX=http://docs.python.org/3/c-api/init.html#c.PyGILState_ReleaseX-tr4X PyObject_Reprr4(jjX:http://docs.python.org/3/c-api/object.html#c.PyObject_ReprX-tr4XPyUnicode_AsUCS4r4(jjX>http://docs.python.org/3/c-api/unicode.html#c.PyUnicode_AsUCS4X-tr4XPyDict_SetDefaultr4(jjX<http://docs.python.org/3/c-api/dict.html#c.PyDict_SetDefaultX-tr4XPyComplex_ImagAsDoubler4(jjXDhttp://docs.python.org/3/c-api/complex.html#c.PyComplex_ImagAsDoubleX-tr4X PyErr_Fetchr4(jjX<http://docs.python.org/3/c-api/exceptions.html#c.PyErr_FetchX-tr4XPyByteArray_FromObjectr4(jjXFhttp://docs.python.org/3/c-api/bytearray.html#c.PyByteArray_FromObjectX-tr4XPyUnicode_DecodeFSDefaultr4(jjXGhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeFSDefaultX-tr4XPyErr_SetStringr4(jjX@http://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetStringX-tr4XPyImport_ImportModuleLevelr4(jjXGhttp://docs.python.org/3/c-api/import.html#c.PyImport_ImportModuleLevelX-tr4XPyEval_EvalFrameExr4(jjXAhttp://docs.python.org/3/c-api/veryhigh.html#c.PyEval_EvalFrameExX-tr4XPyUnicode_DecodeCharmapr4(jjXEhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeCharmapX-tr4X _Py_c_diffr4(jjX8http://docs.python.org/3/c-api/complex.html#c._Py_c_diffX-tr4XPyUnicode_GET_LENGTHr4(jjXBhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_GET_LENGTHX-tr4XPyDateTime_DATE_GET_MINUTEr4(jjXIhttp://docs.python.org/3/c-api/datetime.html#c.PyDateTime_DATE_GET_MINUTEX-tr4XPyModule_GetDefr4(jjX<http://docs.python.org/3/c-api/module.html#c.PyModule_GetDefX-tr4XPyLong_AsLongLongr4(jjX<http://docs.python.org/3/c-api/long.html#c.PyLong_AsLongLongX-tr4XPyRun_SimpleStringr4(jjXAhttp://docs.python.org/3/c-api/veryhigh.html#c.PyRun_SimpleStringX-tr4XPyUnicode_FromKindAndDatar4(jjXGhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_FromKindAndDataX-tr4XPyThreadState_SetAsyncExcr4(jjXDhttp://docs.python.org/3/c-api/init.html#c.PyThreadState_SetAsyncExcX-tr4XPyImport_Importr4(jjX<http://docs.python.org/3/c-api/import.html#c.PyImport_ImportX-tr4X PySet_Sizer4(jjX4http://docs.python.org/3/c-api/set.html#c.PySet_SizeX-tr4XPyRun_SimpleStringFlagsr4(jjXFhttp://docs.python.org/3/c-api/veryhigh.html#c.PyRun_SimpleStringFlagsX-tr4XPyUnicode_DecodeLatin1r4(jjXDhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeLatin1X-tr4XPyUnicodeDecodeError_SetEndr4(jjXLhttp://docs.python.org/3/c-api/exceptions.html#c.PyUnicodeDecodeError_SetEndX-tr4XPyCodec_StrictErrorsr4(jjX@http://docs.python.org/3/c-api/codec.html#c.PyCodec_StrictErrorsX-tr4X Py_SetPathr4(jjX5http://docs.python.org/3/c-api/init.html#c.Py_SetPathX-tr4XPySeqIter_Checkr4(jjX>http://docs.python.org/3/c-api/iterator.html#c.PySeqIter_CheckX-tr4XPyFloat_GetMaxr4(jjX:http://docs.python.org/3/c-api/float.html#c.PyFloat_GetMaxX-tr4XPyUnicode_FSConverterr4(jjXChttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_FSConverterX-tr4XPyModule_AddObjectr4(jjX?http://docs.python.org/3/c-api/module.html#c.PyModule_AddObjectX-tr4XPyUnicode_READr4(jjX<http://docs.python.org/3/c-api/unicode.html#c.PyUnicode_READX-tr4XPyUnicode_Splitlinesr4(jjXBhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_SplitlinesX-tr4X PyMethod_Selfr4(jjX:http://docs.python.org/3/c-api/method.html#c.PyMethod_SelfX-tr4XPyState_AddModuler4(jjX>http://docs.python.org/3/c-api/module.html#c.PyState_AddModuleX-tr4X PyMem_Reallocr4(jjX:http://docs.python.org/3/c-api/memory.html#c.PyMem_ReallocX-tr4XPySequence_Checkr4(jjX?http://docs.python.org/3/c-api/sequence.html#c.PySequence_CheckX-tr4XPyObject_InitVarr4(jjXAhttp://docs.python.org/3/c-api/allocation.html#c.PyObject_InitVarX-tr4XPyUnicode_FromStringAndSizer4(jjXIhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_FromStringAndSizeX-tr4XPyTuple_CheckExactr4(jjX>http://docs.python.org/3/c-api/tuple.html#c.PyTuple_CheckExactX-tr4X PyDict_Merger4(jjX7http://docs.python.org/3/c-api/dict.html#c.PyDict_MergeX-tr4XPyEval_ReInitThreadsr4(jjX?http://docs.python.org/3/c-api/init.html#c.PyEval_ReInitThreadsX-tr4XPyBuffer_SizeFromFormatr4(jjXDhttp://docs.python.org/3/c-api/buffer.html#c.PyBuffer_SizeFromFormatX-tr4XPyUnicode_EncodeUTF16r4(jjXChttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_EncodeUTF16X-tr4XPyObject_SetItemr4(jjX=http://docs.python.org/3/c-api/object.html#c.PyObject_SetItemX-tr4X PyFloat_Checkr4(jjX9http://docs.python.org/3/c-api/float.html#c.PyFloat_CheckX-tr4XPyObject_HasAttrStringr4(jjXChttp://docs.python.org/3/c-api/object.html#c.PyObject_HasAttrStringX-tr4X PyType_Checkr4(jjX7http://docs.python.org/3/c-api/type.html#c.PyType_CheckX-tr4X PyCapsule_Newr4(jjX;http://docs.python.org/3/c-api/capsule.html#c.PyCapsule_NewX-tr4X PyObject_Typer4(jjX:http://docs.python.org/3/c-api/object.html#c.PyObject_TypeX-tr4XPyUnicode_4BYTE_DATAr4(jjXBhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_4BYTE_DATAX-tr4XPyUnicode_FromWideCharr4(jjXDhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_FromWideCharX-tr4XPyCapsule_CheckExactr4(jjXBhttp://docs.python.org/3/c-api/capsule.html#c.PyCapsule_CheckExactX-tr4XPy_UNICODE_TOTITLEr4(jjX@http://docs.python.org/3/c-api/unicode.html#c.Py_UNICODE_TOTITLEX-tr4X!PyImport_ImportFrozenModuleObjectr4(jjXNhttp://docs.python.org/3/c-api/import.html#c.PyImport_ImportFrozenModuleObjectX-tr5XPyList_GetSlicer5(jjX:http://docs.python.org/3/c-api/list.html#c.PyList_GetSliceX-tr5XPyWeakref_NewProxyr5(jjX@http://docs.python.org/3/c-api/weakref.html#c.PyWeakref_NewProxyX-tr5XPyFile_WriteStringr5(jjX=http://docs.python.org/3/c-api/file.html#c.PyFile_WriteStringX-tr5XPyMapping_Sizer5(jjX<http://docs.python.org/3/c-api/mapping.html#c.PyMapping_SizeX-tr5XPy_UNICODE_ISDECIMALr 5(jjXBhttp://docs.python.org/3/c-api/unicode.html#c.Py_UNICODE_ISDECIMALX-tr 5XPyObject_LengthHintr 5(jjX@http://docs.python.org/3/c-api/object.html#c.PyObject_LengthHintX-tr 5XPyGILState_Ensurer 5(jjX<http://docs.python.org/3/c-api/init.html#c.PyGILState_EnsureX-tr5XPyObject_AsFileDescriptorr5(jjXDhttp://docs.python.org/3/c-api/file.html#c.PyObject_AsFileDescriptorX-tr5XPy_CLEARr5(jjX:http://docs.python.org/3/c-api/refcounting.html#c.Py_CLEARX-tr5XPyEval_AcquireThreadr5(jjX?http://docs.python.org/3/c-api/init.html#c.PyEval_AcquireThreadX-tr5XPyObject_CallObjectr5(jjX@http://docs.python.org/3/c-api/object.html#c.PyObject_CallObjectX-tr5XPySys_AddWarnOptionr5(jjX=http://docs.python.org/3/c-api/sys.html#c.PySys_AddWarnOptionX-tr5XPyUnicode_DecodeUnicodeEscaper5(jjXKhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUnicodeEscapeX-tr5XPyThreadState_Newr5(jjX<http://docs.python.org/3/c-api/init.html#c.PyThreadState_NewX-tr5X$PyImport_ExecCodeModuleWithPathnamesr5(jjXQhttp://docs.python.org/3/c-api/import.html#c.PyImport_ExecCodeModuleWithPathnamesX-tr5X PyObject_Strr5(jjX9http://docs.python.org/3/c-api/object.html#c.PyObject_StrX-tr 5XPyUnicode_AsWideCharStringr!5(jjXHhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_AsWideCharStringX-tr"5X PyCell_Checkr#5(jjX7http://docs.python.org/3/c-api/cell.html#c.PyCell_CheckX-tr$5XPyErr_CheckSignalsr%5(jjXChttp://docs.python.org/3/c-api/exceptions.html#c.PyErr_CheckSignalsX-tr&5XPyNumber_Rshiftr'5(jjX<http://docs.python.org/3/c-api/number.html#c.PyNumber_RshiftX-tr(5X PySet_Clearr)5(jjX5http://docs.python.org/3/c-api/set.html#c.PySet_ClearX-tr*5XPy_UNICODE_ISLOWERr+5(jjX@http://docs.python.org/3/c-api/unicode.html#c.Py_UNICODE_ISLOWERX-tr,5XPy_UCS4_strlenr-5(jjX<http://docs.python.org/3/c-api/unicode.html#c.Py_UCS4_strlenX-tr.5X PyCode_Newr/5(jjX5http://docs.python.org/3/c-api/code.html#c.PyCode_NewX-tr05X PySet_Popr15(jjX3http://docs.python.org/3/c-api/set.html#c.PySet_PopX-tr25XPyMemoryView_GetContiguousr35(jjXKhttp://docs.python.org/3/c-api/memoryview.html#c.PyMemoryView_GetContiguousX-tr45XPyMarshal_WriteObjectToStringr55(jjXKhttp://docs.python.org/3/c-api/marshal.html#c.PyMarshal_WriteObjectToStringX-tr65XPyImport_ExecCodeModuler75(jjXDhttp://docs.python.org/3/c-api/import.html#c.PyImport_ExecCodeModuleX-tr85XPyParser_SimpleParseStringr95(jjXIhttp://docs.python.org/3/c-api/veryhigh.html#c.PyParser_SimpleParseStringX-tr:5XPyObject_AsReadBufferr;5(jjXEhttp://docs.python.org/3/c-api/objbuffer.html#c.PyObject_AsReadBufferX-tr<5XPyNumber_Positiver=5(jjX>http://docs.python.org/3/c-api/number.html#c.PyNumber_PositiveX-tr>5X PyMem_Freer?5(jjX7http://docs.python.org/3/c-api/memory.html#c.PyMem_FreeX-tr@5X!PyUnicodeTranslateError_GetReasonrA5(jjXRhttp://docs.python.org/3/c-api/exceptions.html#c.PyUnicodeTranslateError_GetReasonX-trB5XPyLong_AsUnsignedLongrC5(jjX@http://docs.python.org/3/c-api/long.html#c.PyLong_AsUnsignedLongX-trD5XPyUnicode_FromFormatVrE5(jjXChttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_FromFormatVX-trF5XPyUnicode_EncodeFSDefaultrG5(jjXGhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_EncodeFSDefaultX-trH5XPyUnicode_DecodeUTF16rI5(jjXChttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF16X-trJ5X_PyObject_GC_TRACKrK5(jjXBhttp://docs.python.org/3/c-api/gcsupport.html#c._PyObject_GC_TRACKX-trL5XPyUnicode_AsUCS4CopyrM5(jjXBhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_AsUCS4CopyX-trN5XPyObject_AsCharBufferrO5(jjXEhttp://docs.python.org/3/c-api/objbuffer.html#c.PyObject_AsCharBufferX-trP5XPyBytes_ConcatrQ5(jjX:http://docs.python.org/3/c-api/bytes.html#c.PyBytes_ConcatX-trR5XPyStructSequence_SET_ITEMrS5(jjXEhttp://docs.python.org/3/c-api/tuple.html#c.PyStructSequence_SET_ITEMX-trT5X"PyUnicode_AsRawUnicodeEscapeStringrU5(jjXPhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_AsRawUnicodeEscapeStringX-trV5XPyUnicode_ContainsrW5(jjX@http://docs.python.org/3/c-api/unicode.html#c.PyUnicode_ContainsX-trX5XPyLong_AsUnsignedLongLongrY5(jjXDhttp://docs.python.org/3/c-api/long.html#c.PyLong_AsUnsignedLongLongX-trZ5XPyWeakref_GetObjectr[5(jjXAhttp://docs.python.org/3/c-api/weakref.html#c.PyWeakref_GetObjectX-tr\5XPyModule_GetNameObjectr]5(jjXChttp://docs.python.org/3/c-api/module.html#c.PyModule_GetNameObjectX-tr^5X PyModule_Newr_5(jjX9http://docs.python.org/3/c-api/module.html#c.PyModule_NewX-tr`5XPyModule_AddIntConstantra5(jjXDhttp://docs.python.org/3/c-api/module.html#c.PyModule_AddIntConstantX-trb5XPyNumber_Negativerc5(jjX>http://docs.python.org/3/c-api/number.html#c.PyNumber_NegativeX-trd5X _Py_c_prodre5(jjX8http://docs.python.org/3/c-api/complex.html#c._Py_c_prodX-trf5XPyObject_DelAttrStringrg5(jjXChttp://docs.python.org/3/c-api/object.html#c.PyObject_DelAttrStringX-trh5X PyObject_Delri5(jjX=http://docs.python.org/3/c-api/allocation.html#c.PyObject_DelX-trj5XPyNumber_Divmodrk5(jjX<http://docs.python.org/3/c-api/number.html#c.PyNumber_DivmodX-trl5XPyParser_SimpleParseStringFlagsrm5(jjXNhttp://docs.python.org/3/c-api/veryhigh.html#c.PyParser_SimpleParseStringFlagsX-trn5XPySequence_Countro5(jjX?http://docs.python.org/3/c-api/sequence.html#c.PySequence_CountX-trp5XPyDelta_CheckExactrq5(jjXAhttp://docs.python.org/3/c-api/datetime.html#c.PyDelta_CheckExactX-trr5XPyStructSequence_InitType2rs5(jjXFhttp://docs.python.org/3/c-api/tuple.html#c.PyStructSequence_InitType2X-trt5XPyDateTime_TIME_GET_MICROSECONDru5(jjXNhttp://docs.python.org/3/c-api/datetime.html#c.PyDateTime_TIME_GET_MICROSECONDX-trv5X PyOS_stricmprw5(jjX=http://docs.python.org/3/c-api/conversion.html#c.PyOS_stricmpX-trx5XPyObject_HashNotImplementedry5(jjXHhttp://docs.python.org/3/c-api/object.html#c.PyObject_HashNotImplementedX-trz5XPy_GetProgramFullPathr{5(jjX@http://docs.python.org/3/c-api/init.html#c.Py_GetProgramFullPathX-tr|5X_PyObject_NewVarr}5(jjXAhttp://docs.python.org/3/c-api/allocation.html#c._PyObject_NewVarX-tr~5XPy_GetCopyrightr5(jjX:http://docs.python.org/3/c-api/init.html#c.Py_GetCopyrightX-tr5XPyFunction_Checkr5(jjX?http://docs.python.org/3/c-api/function.html#c.PyFunction_CheckX-tr5XPyUnicode_KINDr5(jjX<http://docs.python.org/3/c-api/unicode.html#c.PyUnicode_KINDX-tr5XPyTuple_GetSlicer5(jjX<http://docs.python.org/3/c-api/tuple.html#c.PyTuple_GetSliceX-tr5XPyImport_ImportFrozenModuler5(jjXHhttp://docs.python.org/3/c-api/import.html#c.PyImport_ImportFrozenModuleX-tr5XPyMapping_Valuesr5(jjX>http://docs.python.org/3/c-api/mapping.html#c.PyMapping_ValuesX-tr5XPyUnicode_ReadCharr5(jjX@http://docs.python.org/3/c-api/unicode.html#c.PyUnicode_ReadCharX-tr5XPy_CompileStringFlagsr5(jjXDhttp://docs.python.org/3/c-api/veryhigh.html#c.Py_CompileStringFlagsX-tr5XPy_CompileStringr5(jjX?http://docs.python.org/3/c-api/veryhigh.html#c.Py_CompileStringX-tr5XPyBytes_FromFormatr5(jjX>http://docs.python.org/3/c-api/bytes.html#c.PyBytes_FromFormatX-tr5XPyRun_FileFlagsr5(jjX>http://docs.python.org/3/c-api/veryhigh.html#c.PyRun_FileFlagsX-tr5X'PyParser_SimpleParseStringFlagsFilenamer5(jjXVhttp://docs.python.org/3/c-api/veryhigh.html#c.PyParser_SimpleParseStringFlagsFilenameX-tr5XPyBuffer_FillContiguousStridesr5(jjXKhttp://docs.python.org/3/c-api/buffer.html#c.PyBuffer_FillContiguousStridesX-tr5XPyBuffer_FillInfor5(jjX>http://docs.python.org/3/c-api/buffer.html#c.PyBuffer_FillInfoX-tr5XPyUnicode_EncodeUnicodeEscaper5(jjXKhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_EncodeUnicodeEscapeX-tr5XPyModule_AddStringMacror5(jjXDhttp://docs.python.org/3/c-api/module.html#c.PyModule_AddStringMacroX-tr5XPyCodec_KnownEncodingr5(jjXAhttp://docs.python.org/3/c-api/codec.html#c.PyCodec_KnownEncodingX-tr5XPyCodec_Decoder5(jjX:http://docs.python.org/3/c-api/codec.html#c.PyCodec_DecodeX-tr5X Py_BuildValuer5(jjX7http://docs.python.org/3/c-api/arg.html#c.Py_BuildValueX-tr5XPy_UNICODE_TODIGITr5(jjX@http://docs.python.org/3/c-api/unicode.html#c.Py_UNICODE_TODIGITX-tr5XPyUnicode_Replacer5(jjX?http://docs.python.org/3/c-api/unicode.html#c.PyUnicode_ReplaceX-tr5XPy_EndInterpreterr5(jjX<http://docs.python.org/3/c-api/init.html#c.Py_EndInterpreterX-tr5XPy_GetCompilerr5(jjX9http://docs.python.org/3/c-api/init.html#c.Py_GetCompilerX-tr5XPyObject_DelItemr5(jjX=http://docs.python.org/3/c-api/object.html#c.PyObject_DelItemX-tr5XPyInterpreterState_Newr5(jjXAhttp://docs.python.org/3/c-api/init.html#c.PyInterpreterState_NewX-tr5XPyLong_CheckExactr5(jjX<http://docs.python.org/3/c-api/long.html#c.PyLong_CheckExactX-tr5XPyUnicode_WriteCharr5(jjXAhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_WriteCharX-tr5XPy_UNICODE_ISDIGITr5(jjX@http://docs.python.org/3/c-api/unicode.html#c.Py_UNICODE_ISDIGITX-tr5X_PyImport_Initr5(jjX;http://docs.python.org/3/c-api/import.html#c._PyImport_InitX-tr5XPy_UCS4_strrchrr5(jjX=http://docs.python.org/3/c-api/unicode.html#c.Py_UCS4_strrchrX-tr5XPyFunction_GetAnnotationsr5(jjXHhttp://docs.python.org/3/c-api/function.html#c.PyFunction_GetAnnotationsX-tr5XPyNumber_FloorDivider5(jjXAhttp://docs.python.org/3/c-api/number.html#c.PyNumber_FloorDivideX-tr5XPyUnicode_Encoder5(jjX>http://docs.python.org/3/c-api/unicode.html#c.PyUnicode_EncodeX-tr5X!PyUnicodeTranslateError_SetReasonr5(jjXRhttp://docs.python.org/3/c-api/exceptions.html#c.PyUnicodeTranslateError_SetReasonX-tr5XPyTZInfo_CheckExactr5(jjXBhttp://docs.python.org/3/c-api/datetime.html#c.PyTZInfo_CheckExactX-tr5XPyErr_NewExceptionr5(jjXChttp://docs.python.org/3/c-api/exceptions.html#c.PyErr_NewExceptionX-tr5XPyThreadState_Swapr5(jjX=http://docs.python.org/3/c-api/init.html#c.PyThreadState_SwapX-tr5XPyNumber_InPlacePowerr5(jjXBhttp://docs.python.org/3/c-api/number.html#c.PyNumber_InPlacePowerX-tr5XPyList_ClearFreeListr5(jjX?http://docs.python.org/3/c-api/list.html#c.PyList_ClearFreeListX-tr5XPy_UNICODE_ISSPACEr5(jjX@http://docs.python.org/3/c-api/unicode.html#c.Py_UNICODE_ISSPACEX-tr5XPyErr_GivenExceptionMatchesr5(jjXLhttp://docs.python.org/3/c-api/exceptions.html#c.PyErr_GivenExceptionMatchesX-tr5XPySequence_GetSlicer5(jjXBhttp://docs.python.org/3/c-api/sequence.html#c.PySequence_GetSliceX-tr5XPyList_AsTupler5(jjX9http://docs.python.org/3/c-api/list.html#c.PyList_AsTupleX-tr5XPy_GetProgramNamer5(jjX<http://docs.python.org/3/c-api/init.html#c.Py_GetProgramNameX-tr5X-PyErr_SetExcFromWindowsErrWithFilenameObjectsr5(jjX^http://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetExcFromWindowsErrWithFilenameObjectsX-tr5X PySys_SetPathr5(jjX7http://docs.python.org/3/c-api/sys.html#c.PySys_SetPathX-tr5XPyCallIter_Checkr5(jjX?http://docs.python.org/3/c-api/iterator.html#c.PyCallIter_CheckX-tr5XPyObject_GC_Resizer5(jjXBhttp://docs.python.org/3/c-api/gcsupport.html#c.PyObject_GC_ResizeX-tr5XPyMethod_ClearFreeListr5(jjXChttp://docs.python.org/3/c-api/method.html#c.PyMethod_ClearFreeListX-tr5X PyBytes_Checkr5(jjX9http://docs.python.org/3/c-api/bytes.html#c.PyBytes_CheckX-tr5XPyObject_HasAttrr5(jjX=http://docs.python.org/3/c-api/object.html#c.PyObject_HasAttrX-tr5XPyWeakref_CheckProxyr5(jjXBhttp://docs.python.org/3/c-api/weakref.html#c.PyWeakref_CheckProxyX-tr5XPyDate_CheckExactr5(jjX@http://docs.python.org/3/c-api/datetime.html#c.PyDate_CheckExactX-tr5XPyLong_FromSize_tr5(jjX<http://docs.python.org/3/c-api/long.html#c.PyLong_FromSize_tX-tr5XPy_UCS4_strcpyr5(jjX<http://docs.python.org/3/c-api/unicode.html#c.Py_UCS4_strcpyX-tr5XPyStructSequence_NewTyper5(jjXDhttp://docs.python.org/3/c-api/tuple.html#c.PyStructSequence_NewTypeX-tr5XPyNumber_InPlaceLshiftr5(jjXChttp://docs.python.org/3/c-api/number.html#c.PyNumber_InPlaceLshiftX-tr5XPySet_GET_SIZEr5(jjX8http://docs.python.org/3/c-api/set.html#c.PySet_GET_SIZEX-tr5X Py_Finalizer5(jjX6http://docs.python.org/3/c-api/init.html#c.Py_FinalizeX-tr5XPyFunction_SetAnnotationsr5(jjXHhttp://docs.python.org/3/c-api/function.html#c.PyFunction_SetAnnotationsX-tr5XPyUnicode_GetSizer5(jjX?http://docs.python.org/3/c-api/unicode.html#c.PyUnicode_GetSizeX-tr5XPyInterpreterState_Deleter5(jjXDhttp://docs.python.org/3/c-api/init.html#c.PyInterpreterState_DeleteX-tr5XPyNumber_InPlaceOrr5(jjX?http://docs.python.org/3/c-api/number.html#c.PyNumber_InPlaceOrX-tr5XPySet_Containsr5(jjX8http://docs.python.org/3/c-api/set.html#c.PySet_ContainsX-tr5XPyUnicode_FromEncodedObjectr5(jjXIhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_FromEncodedObjectX-tr6X PyObject_Initr6(jjX>http://docs.python.org/3/c-api/allocation.html#c.PyObject_InitX-tr6XPySequence_DelSlicer6(jjXBhttp://docs.python.org/3/c-api/sequence.html#c.PySequence_DelSliceX-tr6XPyFile_GetLiner6(jjX9http://docs.python.org/3/c-api/file.html#c.PyFile_GetLineX-tr6XPyByteArray_FromStringAndSizer6(jjXMhttp://docs.python.org/3/c-api/bytearray.html#c.PyByteArray_FromStringAndSizeX-tr6XPyEval_GetBuiltinsr 6(jjXChttp://docs.python.org/3/c-api/reflection.html#c.PyEval_GetBuiltinsX-tr 6XPyDict_ClearFreeListr 6(jjX?http://docs.python.org/3/c-api/dict.html#c.PyDict_ClearFreeListX-tr 6XPyMethod_GET_FUNCTIONr 6(jjXBhttp://docs.python.org/3/c-api/method.html#c.PyMethod_GET_FUNCTIONX-tr6XPyObject_Lengthr6(jjX<http://docs.python.org/3/c-api/object.html#c.PyObject_LengthX-tr6XPySequence_SetSlicer6(jjXBhttp://docs.python.org/3/c-api/sequence.html#c.PySequence_SetSliceX-tr6XPyModule_GetStater6(jjX>http://docs.python.org/3/c-api/module.html#c.PyModule_GetStateX-tr6XPyImport_ImportModuler6(jjXBhttp://docs.python.org/3/c-api/import.html#c.PyImport_ImportModuleX-tr6XPy_UCS4_strncpyr6(jjX=http://docs.python.org/3/c-api/unicode.html#c.Py_UCS4_strncpyX-tr6XPySys_AddXOptionr6(jjX:http://docs.python.org/3/c-api/sys.html#c.PySys_AddXOptionX-tr6X PyUnicodeDecodeError_GetEncodingr6(jjXQhttp://docs.python.org/3/c-api/exceptions.html#c.PyUnicodeDecodeError_GetEncodingX-tr6XPy_UNICODE_ISPRINTABLEr6(jjXDhttp://docs.python.org/3/c-api/unicode.html#c.Py_UNICODE_ISPRINTABLEX-tr6XPyComplex_FromCComplexr6(jjXDhttp://docs.python.org/3/c-api/complex.html#c.PyComplex_FromCComplexX-tr 6XPyUnicodeEncodeError_SetEndr!6(jjXLhttp://docs.python.org/3/c-api/exceptions.html#c.PyUnicodeEncodeError_SetEndX-tr"6XPyEval_GetCallStatsr#6(jjX>http://docs.python.org/3/c-api/init.html#c.PyEval_GetCallStatsX-tr$6X PyDateTime_DELTA_GET_MICROSECONDr%6(jjXOhttp://docs.python.org/3/c-api/datetime.html#c.PyDateTime_DELTA_GET_MICROSECONDX-tr&6X Py_ReprLeaver'6(jjX=http://docs.python.org/3/c-api/exceptions.html#c.Py_ReprLeaveX-tr(6X PySlice_Newr)6(jjX7http://docs.python.org/3/c-api/slice.html#c.PySlice_NewX-tr*6X Py_FatalErrorr+6(jjX7http://docs.python.org/3/c-api/sys.html#c.Py_FatalErrorX-tr,6X Py_XDECREFr-6(jjX<http://docs.python.org/3/c-api/refcounting.html#c.Py_XDECREFX-tr.6XPyUnicode_AsUnicoder/6(jjXAhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_AsUnicodeX-tr06XPySequence_ITEMr16(jjX>http://docs.python.org/3/c-api/sequence.html#c.PySequence_ITEMX-tr26X PyErr_Printr36(jjX<http://docs.python.org/3/c-api/exceptions.html#c.PyErr_PrintX-tr46XPyUnicode_Joinr56(jjX<http://docs.python.org/3/c-api/unicode.html#c.PyUnicode_JoinX-tr66X PyErr_PrintExr76(jjX>http://docs.python.org/3/c-api/exceptions.html#c.PyErr_PrintExX-tr86XPyNumber_InPlaceAndr96(jjX@http://docs.python.org/3/c-api/number.html#c.PyNumber_InPlaceAndX-tr:6X PyLong_AsLongr;6(jjX8http://docs.python.org/3/c-api/long.html#c.PyLong_AsLongX-tr<6X_PyImport_FixupExtensionr=6(jjXEhttp://docs.python.org/3/c-api/import.html#c._PyImport_FixupExtensionX-tr>6XPyErr_SetFromWindowsErrr?6(jjXHhttp://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetFromWindowsErrX-tr@6XPyCodec_RegisterrA6(jjX<http://docs.python.org/3/c-api/codec.html#c.PyCodec_RegisterX-trB6X_PyImport_FinirC6(jjX;http://docs.python.org/3/c-api/import.html#c._PyImport_FiniX-trD6XPyErr_WarnFormatrE6(jjXAhttp://docs.python.org/3/c-api/exceptions.html#c.PyErr_WarnFormatX-trF6X PyErr_WarnExrG6(jjX=http://docs.python.org/3/c-api/exceptions.html#c.PyErr_WarnExX-trH6XPyLong_AsUnsignedLongMaskrI6(jjXDhttp://docs.python.org/3/c-api/long.html#c.PyLong_AsUnsignedLongMaskX-trJ6XPyArg_ValidateKeywordArgumentsrK6(jjXHhttp://docs.python.org/3/c-api/arg.html#c.PyArg_ValidateKeywordArgumentsX-trL6XPyUnicode_EncodeLocalerM6(jjXDhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_EncodeLocaleX-trN6XPyOS_vsnprintfrO6(jjX?http://docs.python.org/3/c-api/conversion.html#c.PyOS_vsnprintfX-trP6X PyMarshal_ReadLastObjectFromFilerQ6(jjXNhttp://docs.python.org/3/c-api/marshal.html#c.PyMarshal_ReadLastObjectFromFileX-trR6XPyUnicode_AsMBCSStringrS6(jjXDhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_AsMBCSStringX-trT6XPyLong_FromSsize_trU6(jjX=http://docs.python.org/3/c-api/long.html#c.PyLong_FromSsize_tX-trV6XPyObject_GC_UnTrackrW6(jjXChttp://docs.python.org/3/c-api/gcsupport.html#c.PyObject_GC_UnTrackX-trX6XPyErr_SyntaxLocationObjectrY6(jjXKhttp://docs.python.org/3/c-api/exceptions.html#c.PyErr_SyntaxLocationObjectX-trZ6XPyDescr_NewClassMethodr[6(jjXGhttp://docs.python.org/3/c-api/descriptor.html#c.PyDescr_NewClassMethodX-tr\6XPyImport_AppendInittabr]6(jjXChttp://docs.python.org/3/c-api/import.html#c.PyImport_AppendInittabX-tr^6XPyErr_NoMemoryr_6(jjX?http://docs.python.org/3/c-api/exceptions.html#c.PyErr_NoMemoryX-tr`6XPySys_GetObjectra6(jjX9http://docs.python.org/3/c-api/sys.html#c.PySys_GetObjectX-trb6XPyUnicode_Findrc6(jjX<http://docs.python.org/3/c-api/unicode.html#c.PyUnicode_FindX-trd6X PyUnicode_CompareWithASCIIStringre6(jjXNhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_CompareWithASCIIStringX-trf6XPyByteArray_Checkrg6(jjXAhttp://docs.python.org/3/c-api/bytearray.html#c.PyByteArray_CheckX-trh6XPyMapping_DelItemri6(jjX?http://docs.python.org/3/c-api/mapping.html#c.PyMapping_DelItemX-trj6XPyState_FindModulerk6(jjX?http://docs.python.org/3/c-api/module.html#c.PyState_FindModuleX-trl6XPyUnicode_FromFormatrm6(jjXBhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_FromFormatX-trn6XPyEval_MergeCompilerFlagsro6(jjXHhttp://docs.python.org/3/c-api/veryhigh.html#c.PyEval_MergeCompilerFlagsX-trp6XPyFloat_GetMinrq6(jjX:http://docs.python.org/3/c-api/float.html#c.PyFloat_GetMinX-trr6XPyUnicode_FindCharrs6(jjX@http://docs.python.org/3/c-api/unicode.html#c.PyUnicode_FindCharX-trt6XPyMem_RawReallocru6(jjX=http://docs.python.org/3/c-api/memory.html#c.PyMem_RawReallocX-trv6XPyErr_SetObjectrw6(jjX@http://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetObjectX-trx6XPyUnicode_EncodeUTF8ry6(jjXBhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_EncodeUTF8X-trz6XPyUnicode_AS_DATAr{6(jjX?http://docs.python.org/3/c-api/unicode.html#c.PyUnicode_AS_DATAX-tr|6XPyUnicode_EncodeUTF7r}6(jjXBhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_EncodeUTF7X-tr~6XPy_CompileStringExFlagsr6(jjXFhttp://docs.python.org/3/c-api/veryhigh.html#c.Py_CompileStringExFlagsX-tr6XPyFloat_AsDoubler6(jjX<http://docs.python.org/3/c-api/float.html#c.PyFloat_AsDoubleX-tr6XPyUnicode_DATAr6(jjX<http://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DATAX-tr6XPyUnicode_EncodeUTF32r6(jjXChttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_EncodeUTF32X-tr6XPy_SetProgramNamer6(jjX<http://docs.python.org/3/c-api/init.html#c.Py_SetProgramNameX-tr6XPyObject_GenericGetAttrr6(jjXDhttp://docs.python.org/3/c-api/object.html#c.PyObject_GenericGetAttrX-tr6XPyUnicode_Formatr6(jjX>http://docs.python.org/3/c-api/unicode.html#c.PyUnicode_FormatX-tr6XPyMemoryView_FromMemoryr6(jjXHhttp://docs.python.org/3/c-api/memoryview.html#c.PyMemoryView_FromMemoryX-tr6XPyModule_Create2r6(jjX=http://docs.python.org/3/c-api/module.html#c.PyModule_Create2X-tr6XPyException_GetTracebackr6(jjXIhttp://docs.python.org/3/c-api/exceptions.html#c.PyException_GetTracebackX-tr6X PyNumber_Orr6(jjX8http://docs.python.org/3/c-api/number.html#c.PyNumber_OrX-tr6XPyUnicodeEncodeError_GetEndr6(jjXLhttp://docs.python.org/3/c-api/exceptions.html#c.PyUnicodeEncodeError_GetEndX-tr6XPyByteArray_AS_STRINGr6(jjXEhttp://docs.python.org/3/c-api/bytearray.html#c.PyByteArray_AS_STRINGX-tr6X PyCell_GETr6(jjX5http://docs.python.org/3/c-api/cell.html#c.PyCell_GETX-tr6XPyModule_GetFilenamer6(jjXAhttp://docs.python.org/3/c-api/module.html#c.PyModule_GetFilenameX-tr6XPyThreadState_Clearr6(jjX>http://docs.python.org/3/c-api/init.html#c.PyThreadState_ClearX-tr6XPy_GetPlatformr6(jjX9http://docs.python.org/3/c-api/init.html#c.Py_GetPlatformX-tr6X!PyUnicode_TransformDecimalToASCIIr6(jjXOhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_TransformDecimalToASCIIX-tr6XPyUnicode_AsASCIIStringr6(jjXEhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_AsASCIIStringX-tr6XPyUnicode_Tailmatchr6(jjXAhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_TailmatchX-tr6XPyEval_ReleaseLockr6(jjX=http://docs.python.org/3/c-api/init.html#c.PyEval_ReleaseLockX-tr6XPyBuffer_Releaser6(jjX=http://docs.python.org/3/c-api/buffer.html#c.PyBuffer_ReleaseX-tr6X PyObject_Notr6(jjX9http://docs.python.org/3/c-api/object.html#c.PyObject_NotX-tr6X PyTuple_Sizer6(jjX8http://docs.python.org/3/c-api/tuple.html#c.PyTuple_SizeX-tr6X PyImport_ImportModuleLevelObjectr6(jjXMhttp://docs.python.org/3/c-api/import.html#c.PyImport_ImportModuleLevelObjectX-tr6XPyMemoryView_Checkr6(jjXChttp://docs.python.org/3/c-api/memoryview.html#c.PyMemoryView_CheckX-tr6X PyIndex_Checkr6(jjX:http://docs.python.org/3/c-api/number.html#c.PyIndex_CheckX-tr6X PyBool_Checkr6(jjX7http://docs.python.org/3/c-api/bool.html#c.PyBool_CheckX-tr6XPyDict_DelItemStringr6(jjX?http://docs.python.org/3/c-api/dict.html#c.PyDict_DelItemStringX-tr6XPyByteArray_Concatr6(jjXBhttp://docs.python.org/3/c-api/bytearray.html#c.PyByteArray_ConcatX-tr6XPyUnicode_InternInPlacer6(jjXEhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_InternInPlaceX-tr6XPySys_SetObjectr6(jjX9http://docs.python.org/3/c-api/sys.html#c.PySys_SetObjectX-tr6XPyUnicode_DecodeUTF8r6(jjXBhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF8X-tr6XPyByteArray_GET_SIZEr6(jjXDhttp://docs.python.org/3/c-api/bytearray.html#c.PyByteArray_GET_SIZEX-tr6XPyDictProxy_Newr6(jjX:http://docs.python.org/3/c-api/dict.html#c.PyDictProxy_NewX-tr6XPyDate_FromTimestampr6(jjXChttp://docs.python.org/3/c-api/datetime.html#c.PyDate_FromTimestampX-tr6XPyStructSequence_Newr6(jjX@http://docs.python.org/3/c-api/tuple.html#c.PyStructSequence_NewX-tr6XPyUnicode_DecodeUTF7r6(jjXBhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF7X-tr6X PyObject_Hashr6(jjX:http://docs.python.org/3/c-api/object.html#c.PyObject_HashX-tr6XPyDateTime_TIME_GET_SECONDr6(jjXIhttp://docs.python.org/3/c-api/datetime.html#c.PyDateTime_TIME_GET_SECONDX-tr6X PyCell_SETr6(jjX5http://docs.python.org/3/c-api/cell.html#c.PyCell_SETX-tr6X PyErr_Formatr6(jjX=http://docs.python.org/3/c-api/exceptions.html#c.PyErr_FormatX-tr6XPyDateTime_GET_MONTHr6(jjXChttp://docs.python.org/3/c-api/datetime.html#c.PyDateTime_GET_MONTHX-tr6XPyCapsule_GetDestructorr6(jjXEhttp://docs.python.org/3/c-api/capsule.html#c.PyCapsule_GetDestructorX-tr6XPyDateTime_FromTimestampr6(jjXGhttp://docs.python.org/3/c-api/datetime.html#c.PyDateTime_FromTimestampX-tr6X Py_Initializer6(jjX8http://docs.python.org/3/c-api/init.html#c.Py_InitializeX-tr6XPyDateTime_DATE_GET_MICROSECONDr6(jjXNhttp://docs.python.org/3/c-api/datetime.html#c.PyDateTime_DATE_GET_MICROSECONDX-tr6XPyImport_ExecCodeModuleObjectr6(jjXJhttp://docs.python.org/3/c-api/import.html#c.PyImport_ExecCodeModuleObjectX-tr6XPyCodec_IgnoreErrorsr6(jjX@http://docs.python.org/3/c-api/codec.html#c.PyCodec_IgnoreErrorsX-tr6XPyUnicode_Concatr6(jjX>http://docs.python.org/3/c-api/unicode.html#c.PyUnicode_ConcatX-tr6XPyUnicode_EncodeLatin1r6(jjXDhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_EncodeLatin1X-tr6XPyObject_CheckReadBufferr6(jjXHhttp://docs.python.org/3/c-api/objbuffer.html#c.PyObject_CheckReadBufferX-tr6XPy_GetPythonHomer6(jjX;http://docs.python.org/3/c-api/init.html#c.Py_GetPythonHomeX-tr6XPyDescr_NewMemberr6(jjXBhttp://docs.python.org/3/c-api/descriptor.html#c.PyDescr_NewMemberX-tr6XPyByteArray_AsStringr6(jjXDhttp://docs.python.org/3/c-api/bytearray.html#c.PyByteArray_AsStringX-tr6XPyTuple_ClearFreeListr6(jjXAhttp://docs.python.org/3/c-api/tuple.html#c.PyTuple_ClearFreeListX-tr6XPyModule_GetDictr6(jjX=http://docs.python.org/3/c-api/module.html#c.PyModule_GetDictX-tr6X Py_DECREFr6(jjX;http://docs.python.org/3/c-api/refcounting.html#c.Py_DECREFX-tr6XPyList_SetItemr6(jjX9http://docs.python.org/3/c-api/list.html#c.PyList_SetItemX-tr6XPyImport_GetImporterr6(jjXAhttp://docs.python.org/3/c-api/import.html#c.PyImport_GetImporterX-tr6XPyFunction_GetClosurer6(jjXDhttp://docs.python.org/3/c-api/function.html#c.PyFunction_GetClosureX-tr6XPyUnicode_AsUTF32Stringr6(jjXEhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_AsUTF32StringX-tr6X PyUnicode_Newr6(jjX;http://docs.python.org/3/c-api/unicode.html#c.PyUnicode_NewX-tr6XPySequence_Fast_ITEMSr6(jjXDhttp://docs.python.org/3/c-api/sequence.html#c.PySequence_Fast_ITEMSX-tr6XPyTuple_GET_ITEMr6(jjX<http://docs.python.org/3/c-api/tuple.html#c.PyTuple_GET_ITEMX-tr7XPyNumber_AsSsize_tr7(jjX?http://docs.python.org/3/c-api/number.html#c.PyNumber_AsSsize_tX-tr7XPyThreadState_Nextr7(jjX=http://docs.python.org/3/c-api/init.html#c.PyThreadState_NextX-tr7XPyUnicodeDecodeError_Creater7(jjXLhttp://docs.python.org/3/c-api/exceptions.html#c.PyUnicodeDecodeError_CreateX-tr7XPyBytes_FromFormatVr7(jjX?http://docs.python.org/3/c-api/bytes.html#c.PyBytes_FromFormatVX-tr7XPyUnicodeDecodeError_GetEndr 7(jjXLhttp://docs.python.org/3/c-api/exceptions.html#c.PyUnicodeDecodeError_GetEndX-tr 7X PyRun_Stringr 7(jjX;http://docs.python.org/3/c-api/veryhigh.html#c.PyRun_StringX-tr 7XPyMemoryView_FromBufferr 7(jjXHhttp://docs.python.org/3/c-api/memoryview.html#c.PyMemoryView_FromBufferX-tr7XPyMemoryView_GET_BUFFERr7(jjXHhttp://docs.python.org/3/c-api/memoryview.html#c.PyMemoryView_GET_BUFFERX-tr7XPySlice_GetIndicesExr7(jjX@http://docs.python.org/3/c-api/slice.html#c.PySlice_GetIndicesExX-tr7XPyUnicode_DecodeUTF16Statefulr7(jjXKhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF16StatefulX-tr7XPyUnicode_GetLengthr7(jjXAhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_GetLengthX-tr7XPyType_Modifiedr7(jjX:http://docs.python.org/3/c-api/type.html#c.PyType_ModifiedX-tr7X%PyErr_SetFromErrnoWithFilenameObjectsr7(jjXVhttp://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetFromErrnoWithFilenameObjectsX-tr7XPySequence_Lengthr7(jjX@http://docs.python.org/3/c-api/sequence.html#c.PySequence_LengthX-tr7X PyUnicode_DecodeRawUnicodeEscaper7(jjXNhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeRawUnicodeEscapeX-tr7XPyOS_AfterForkr7(jjX8http://docs.python.org/3/c-api/sys.html#c.PyOS_AfterForkX-tr 7XPy_VaBuildValuer!7(jjX9http://docs.python.org/3/c-api/arg.html#c.Py_VaBuildValueX-tr"7XPyModule_GetNamer#7(jjX=http://docs.python.org/3/c-api/module.html#c.PyModule_GetNameX-tr$7XPyErr_SyntaxLocationr%7(jjXEhttp://docs.python.org/3/c-api/exceptions.html#c.PyErr_SyntaxLocationX-tr&7X PyNumber_Addr'7(jjX9http://docs.python.org/3/c-api/number.html#c.PyNumber_AddX-tr(7XPy_EnterRecursiveCallr)7(jjXFhttp://docs.python.org/3/c-api/exceptions.html#c.Py_EnterRecursiveCallX-tr*7XPyThreadState_GetDictr+7(jjX@http://docs.python.org/3/c-api/init.html#c.PyThreadState_GetDictX-tr,7X PyUnicode_EncodeRawUnicodeEscaper-7(jjXNhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_EncodeRawUnicodeEscapeX-tr.7XPyUnicode_InternFromStringr/7(jjXHhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_InternFromStringX-tr07XPyBytes_GET_SIZEr17(jjX<http://docs.python.org/3/c-api/bytes.html#c.PyBytes_GET_SIZEX-tr27XPyCapsule_SetPointerr37(jjXBhttp://docs.python.org/3/c-api/capsule.html#c.PyCapsule_SetPointerX-tr47XPyMarshal_WriteObjectToFiler57(jjXIhttp://docs.python.org/3/c-api/marshal.html#c.PyMarshal_WriteObjectToFileX-tr67X PyMem_Mallocr77(jjX9http://docs.python.org/3/c-api/memory.html#c.PyMem_MallocX-tr87X PyOS_setsigr97(jjX5http://docs.python.org/3/c-api/sys.html#c.PyOS_setsigX-tr:7XPyUnicode_READYr;7(jjX=http://docs.python.org/3/c-api/unicode.html#c.PyUnicode_READYX-tr<7XPy_UCS4_strncmpr=7(jjX=http://docs.python.org/3/c-api/unicode.html#c.Py_UCS4_strncmpX-tr>7XPyUnicode_EncodeCodePager?7(jjXFhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_EncodeCodePageX-tr@7XPyModule_CheckExactrA7(jjX@http://docs.python.org/3/c-api/module.html#c.PyModule_CheckExactX-trB7X PyDict_ClearrC7(jjX7http://docs.python.org/3/c-api/dict.html#c.PyDict_ClearX-trD7XPyErr_SetImportErrorrE7(jjXEhttp://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetImportErrorX-trF7XPyUnicode_EncodeCharmaprG7(jjXEhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_EncodeCharmapX-trH7XPyCapsule_ImportrI7(jjX>http://docs.python.org/3/c-api/capsule.html#c.PyCapsule_ImportX-trJ7XPyUnicode_DecodeASCIIrK7(jjXChttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeASCIIX-trL7X PyWrapper_NewrM7(jjX>http://docs.python.org/3/c-api/descriptor.html#c.PyWrapper_NewX-trN7X PyRun_FileExrO7(jjX;http://docs.python.org/3/c-api/veryhigh.html#c.PyRun_FileExX-trP7XPyUnicodeTranslateError_CreaterQ7(jjXOhttp://docs.python.org/3/c-api/exceptions.html#c.PyUnicodeTranslateError_CreateX-trR7XPyObject_GetAttrStringrS7(jjXChttp://docs.python.org/3/c-api/object.html#c.PyObject_GetAttrStringX-trT7XPyObject_BytesrU7(jjX;http://docs.python.org/3/c-api/object.html#c.PyObject_BytesX-trV7X PyRun_AnyFilerW7(jjX<http://docs.python.org/3/c-api/veryhigh.html#c.PyRun_AnyFileX-trX7XPyObject_AsWriteBufferrY7(jjXFhttp://docs.python.org/3/c-api/objbuffer.html#c.PyObject_AsWriteBufferX-trZ7XPyNumber_InPlaceRshiftr[7(jjXChttp://docs.python.org/3/c-api/number.html#c.PyNumber_InPlaceRshiftX-tr\7XPyFrozenSet_CheckExactr]7(jjX@http://docs.python.org/3/c-api/set.html#c.PyFrozenSet_CheckExactX-tr^7XPy_VISITr_7(jjX8http://docs.python.org/3/c-api/gcsupport.html#c.Py_VISITX-tr`7XPySequence_InPlaceRepeatra7(jjXGhttp://docs.python.org/3/c-api/sequence.html#c.PySequence_InPlaceRepeatX-trb7X PyTuple_Checkrc7(jjX9http://docs.python.org/3/c-api/tuple.html#c.PyTuple_CheckX-trd7XPyCode_NewEmptyre7(jjX:http://docs.python.org/3/c-api/code.html#c.PyCode_NewEmptyX-trf7XPyNumber_Checkrg7(jjX;http://docs.python.org/3/c-api/number.html#c.PyNumber_CheckX-trh7X Py_INCREFri7(jjX;http://docs.python.org/3/c-api/refcounting.html#c.Py_INCREFX-trj7XPyLong_FromDoublerk7(jjX<http://docs.python.org/3/c-api/long.html#c.PyLong_FromDoubleX-trl7XPyNumber_Powerrm7(jjX;http://docs.python.org/3/c-api/number.html#c.PyNumber_PowerX-trn7X PyOS_getsigro7(jjX5http://docs.python.org/3/c-api/sys.html#c.PyOS_getsigX-trp7XPyDelta_FromDSUrq7(jjX>http://docs.python.org/3/c-api/datetime.html#c.PyDelta_FromDSUX-trr7XPyLong_FromLongLongrs7(jjX>http://docs.python.org/3/c-api/long.html#c.PyLong_FromLongLongX-trt7XPyUnicode_CopyCharactersru7(jjXFhttp://docs.python.org/3/c-api/unicode.html#c.PyUnicode_CopyCharactersX-trv7XPyImport_ExtendInittabrw7(jjXChttp://docs.python.org/3/c-api/import.html#c.PyImport_ExtendInittabX-trx7X_PyBytes_Resizery7(jjX;http://docs.python.org/3/c-api/bytes.html#c._PyBytes_ResizeX-trz7XPyType_GenericSetDictr{7(jjXBhttp://docs.python.org/3/c-api/object.html#c.PyType_GenericSetDictX-tr|7XPySequence_Containsr}7(jjXBhttp://docs.python.org/3/c-api/sequence.html#c.PySequence_ContainsX-tr~7XPyObject_DelAttrr7(jjX=http://docs.python.org/3/c-api/object.html#c.PyObject_DelAttrX-tr7XPySequence_Sizer7(jjX>http://docs.python.org/3/c-api/sequence.html#c.PySequence_SizeX-tr7XPyBytes_CheckExactr7(jjX>http://docs.python.org/3/c-api/bytes.html#c.PyBytes_CheckExactX-tr7XPyObject_CallMethodr7(jjX@http://docs.python.org/3/c-api/object.html#c.PyObject_CallMethodX-tr7uXpy:datar7}r7(Xdoctest.DONT_ACCEPT_BLANKLINEr7(jjXKhttp://docs.python.org/3/library/doctest.html#doctest.DONT_ACCEPT_BLANKLINEX-tr7Xsignal.SIG_SETMASKr7(jjX?http://docs.python.org/3/library/signal.html#signal.SIG_SETMASKX-tr7Xwinsound.SND_ASYNCr7(jjXAhttp://docs.python.org/3/library/winsound.html#winsound.SND_ASYNCX-tr7Xcsv.QUOTE_NONEr7(jjX8http://docs.python.org/3/library/csv.html#csv.QUOTE_NONEX-tr7X re.VERBOSEr7(jjX3http://docs.python.org/3/library/re.html#re.VERBOSEX-tr7XMETH_Or7(jjX5http://docs.python.org/3/c-api/structures.html#METH_OX-tr7Xerrno.ETIMEDOUTr7(jjX;http://docs.python.org/3/library/errno.html#errno.ETIMEDOUTX-tr7Xsys.version_infor7(jjX:http://docs.python.org/3/library/sys.html#sys.version_infoX-tr7X token.STARr7(jjX6http://docs.python.org/3/library/token.html#token.STARX-tr7Xos.X_OKr7(jjX0http://docs.python.org/3/library/os.html#os.X_OKX-tr7Xdis.Bytecode.codeobjr7(jjX>http://docs.python.org/3/library/dis.html#dis.Bytecode.codeobjX-tr7Xtypes.MethodTyper7(jjX<http://docs.python.org/3/library/types.html#types.MethodTypeX-tr7X os.EX_CONFIGr7(jjX5http://docs.python.org/3/library/os.html#os.EX_CONFIGX-tr7Xos.EX_TEMPFAILr7(jjX7http://docs.python.org/3/library/os.html#os.EX_TEMPFAILX-tr7X9xml.parsers.expat.errors.XML_ERROR_JUNK_AFTER_DOC_ELEMENTr7(jjXghttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_JUNK_AFTER_DOC_ELEMENTX-tr7Xtoken.tok_namer7(jjX:http://docs.python.org/3/library/token.html#token.tok_nameX-tr7X codecs.BOMr7(jjX7http://docs.python.org/3/library/codecs.html#codecs.BOMX-tr7X#subprocess.CREATE_NEW_PROCESS_GROUPr7(jjXThttp://docs.python.org/3/library/subprocess.html#subprocess.CREATE_NEW_PROCESS_GROUPX-tr7Xos.O_SEQUENTIALr7(jjX8http://docs.python.org/3/library/os.html#os.O_SEQUENTIALX-tr7XPy_TPFLAGS_HAVE_GCr7(jjX>http://docs.python.org/3/c-api/typeobj.html#Py_TPFLAGS_HAVE_GCX-tr7X os.WEXITEDr7(jjX3http://docs.python.org/3/library/os.html#os.WEXITEDX-tr7X errno.ELIBACCr7(jjX9http://docs.python.org/3/library/errno.html#errno.ELIBACCX-tr7Xdecimal.MAX_EMAXr7(jjX>http://docs.python.org/3/library/decimal.html#decimal.MAX_EMAXX-tr7Xhashlib.algorithms_availabler7(jjXJhttp://docs.python.org/3/library/hashlib.html#hashlib.algorithms_availableX-tr7XPy_TPFLAGS_LONG_SUBCLASSr7(jjXDhttp://docs.python.org/3/c-api/typeobj.html#Py_TPFLAGS_LONG_SUBCLASSX-tr7Xwinreg.KEY_WOW64_64KEYr7(jjXChttp://docs.python.org/3/library/winreg.html#winreg.KEY_WOW64_64KEYX-tr7X errno.EBADMSGr7(jjX9http://docs.python.org/3/library/errno.html#errno.EBADMSGX-tr7Xhttp.client.HTTPS_PORTr7(jjXHhttp://docs.python.org/3/library/http.client.html#http.client.HTTPS_PORTX-tr7X token.SLASHr7(jjX7http://docs.python.org/3/library/token.html#token.SLASHX-tr7Xsunau.AUDIO_FILE_ENCODING_FLOATr7(jjXKhttp://docs.python.org/3/library/sunau.html#sunau.AUDIO_FILE_ENCODING_FLOATX-tr7X os.EX_DATAERRr7(jjX6http://docs.python.org/3/library/os.html#os.EX_DATAERRX-tr7Xlocale.CRNCYSTRr7(jjX<http://docs.python.org/3/library/locale.html#locale.CRNCYSTRX-tr7X sys.meta_pathr7(jjX7http://docs.python.org/3/library/sys.html#sys.meta_pathX-tr7Xsocket.AF_UNIXr7(jjX;http://docs.python.org/3/library/socket.html#socket.AF_UNIXX-tr7X METH_NOARGSr7(jjX:http://docs.python.org/3/c-api/structures.html#METH_NOARGSX-tr7X errno.EREMCHGr7(jjX9http://docs.python.org/3/library/errno.html#errno.EREMCHGX-tr7X socket.AF_RDSr7(jjX:http://docs.python.org/3/library/socket.html#socket.AF_RDSX-tr7Xwinreg.KEY_ENUMERATE_SUB_KEYSr7(jjXJhttp://docs.python.org/3/library/winreg.html#winreg.KEY_ENUMERATE_SUB_KEYSX-tr7Xtoken.NT_OFFSETr7(jjX;http://docs.python.org/3/library/token.html#token.NT_OFFSETX-tr7X locale.LC_ALLr7(jjX:http://docs.python.org/3/library/locale.html#locale.LC_ALLX-tr7X stat.S_IFREGr7(jjX7http://docs.python.org/3/library/stat.html#stat.S_IFREGX-tr7X"os.path.supports_unicode_filenamesr7(jjXPhttp://docs.python.org/3/library/os.path.html#os.path.supports_unicode_filenamesX-tr7Xwinreg.KEY_QUERY_VALUEr7(jjXChttp://docs.python.org/3/library/winreg.html#winreg.KEY_QUERY_VALUEX-tr7Xlocale.CODESETr7(jjX;http://docs.python.org/3/library/locale.html#locale.CODESETX-tr7Xerrno.ENETDOWNr7(jjX:http://docs.python.org/3/library/errno.html#errno.ENETDOWNX-tr7Xos.pathconf_namesr7(jjX:http://docs.python.org/3/library/os.html#os.pathconf_namesX-tr7XFalser7(jjX5http://docs.python.org/3/library/constants.html#FalseX-tr7X errno.ERANGEr7(jjX8http://docs.python.org/3/library/errno.html#errno.ERANGEX-tr7Xsubprocess.PIPEr7(jjX@http://docs.python.org/3/library/subprocess.html#subprocess.PIPEX-tr7Xwinreg.KEY_WRITEr7(jjX=http://docs.python.org/3/library/winreg.html#winreg.KEY_WRITEX-tr7Xpathlib.PurePath.rootr7(jjXChttp://docs.python.org/3/library/pathlib.html#pathlib.PurePath.rootX-tr7X os.RTLD_LOCALr7(jjX6http://docs.python.org/3/library/os.html#os.RTLD_LOCALX-tr7X errno.EREMOTEr7(jjX9http://docs.python.org/3/library/errno.html#errno.EREMOTEX-tr7Xsignal.CTRL_C_EVENTr7(jjX@http://docs.python.org/3/library/signal.html#signal.CTRL_C_EVENTX-tr7Xlocale.YESEXPRr7(jjX;http://docs.python.org/3/library/locale.html#locale.YESEXPRX-tr7Xcodecs.BOM_UTF16_LEr7(jjX@http://docs.python.org/3/library/codecs.html#codecs.BOM_UTF16_LEX-tr7X os.EX_IOERRr7(jjX4http://docs.python.org/3/library/os.html#os.EX_IOERRX-tr7X@xml.parsers.expat.errors.XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REFr7(jjXnhttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REFX-tr7X errno.EBUSYr7(jjX7http://docs.python.org/3/library/errno.html#errno.EBUSYX-tr7Xsys.__stderr__r7(jjX8http://docs.python.org/3/library/sys.html#sys.__stderr__X-tr8Xerrno.EOVERFLOWr8(jjX;http://docs.python.org/3/library/errno.html#errno.EOVERFLOWX-tr8X msilib.schemar8(jjX:http://docs.python.org/3/library/msilib.html#msilib.schemaX-tr8Xdoctest.FAIL_FASTr8(jjX?http://docs.python.org/3/library/doctest.html#doctest.FAIL_FASTX-tr8Xlocale.THOUSEPr8(jjX;http://docs.python.org/3/library/locale.html#locale.THOUSEPX-tr8X&sunau.AUDIO_FILE_ENCODING_ADPCM_G723_5r 8(jjXRhttp://docs.python.org/3/library/sunau.html#sunau.AUDIO_FILE_ENCODING_ADPCM_G723_5X-tr 8X token.TILDEr 8(jjX7http://docs.python.org/3/library/token.html#token.TILDEX-tr 8X errno.ENOTBLKr 8(jjX9http://docs.python.org/3/library/errno.html#errno.ENOTBLKX-tr8X9xml.parsers.expat.errors.XML_ERROR_UNCLOSED_CDATA_SECTIONr8(jjXghttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_UNCLOSED_CDATA_SECTIONX-tr8Xxml.dom.XMLNS_NAMESPACEr8(jjXEhttp://docs.python.org/3/library/xml.dom.html#xml.dom.XMLNS_NAMESPACEX-tr8X stat.ST_NLINKr8(jjX8http://docs.python.org/3/library/stat.html#stat.ST_NLINKX-tr8Xos.EX_OKr8(jjX1http://docs.python.org/3/library/os.html#os.EX_OKX-tr8X sys.versionr8(jjX5http://docs.python.org/3/library/sys.html#sys.versionX-tr8Xos.namer8(jjX0http://docs.python.org/3/library/os.html#os.nameX-tr8Xcodecs.BOM_UTF16_BEr8(jjX@http://docs.python.org/3/library/codecs.html#codecs.BOM_UTF16_BEX-tr8Xxml.sax.handler.all_propertiesr8(jjXThttp://docs.python.org/3/library/xml.sax.handler.html#xml.sax.handler.all_propertiesX-tr8Xzlib.ZLIB_RUNTIME_VERSIONr8(jjXDhttp://docs.python.org/3/library/zlib.html#zlib.ZLIB_RUNTIME_VERSIONX-tr 8Xwinreg.HKEY_LOCAL_MACHINEr!8(jjXFhttp://docs.python.org/3/library/winreg.html#winreg.HKEY_LOCAL_MACHINEX-tr"8X dis.hasjrelr#8(jjX5http://docs.python.org/3/library/dis.html#dis.hasjrelX-tr$8X time.tznamer%8(jjX6http://docs.python.org/3/library/time.html#time.tznameX-tr&8X errno.ELOOPr'8(jjX7http://docs.python.org/3/library/errno.html#errno.ELOOPX-tr(8X os.SF_SYNCr)8(jjX3http://docs.python.org/3/library/os.html#os.SF_SYNCX-tr*8X errno.ETIMEr+8(jjX7http://docs.python.org/3/library/errno.html#errno.ETIMEX-tr,8X token.NAMEr-8(jjX6http://docs.python.org/3/library/token.html#token.NAMEX-tr.8Xwinreg.KEY_EXECUTEr/8(jjX?http://docs.python.org/3/library/winreg.html#winreg.KEY_EXECUTEX-tr08X os.O_ASYNCr18(jjX3http://docs.python.org/3/library/os.html#os.O_ASYNCX-tr28XTruer38(jjX4http://docs.python.org/3/library/constants.html#TrueX-tr48Xre.DEBUGr58(jjX1http://docs.python.org/3/library/re.html#re.DEBUGX-tr68X errno.EADVr78(jjX6http://docs.python.org/3/library/errno.html#errno.EADVX-tr88Xssl.OP_NO_TLSv1r98(jjX9http://docs.python.org/3/library/ssl.html#ssl.OP_NO_TLSv1X-tr:8Xresource.RLIMIT_STACKr;8(jjXDhttp://docs.python.org/3/library/resource.html#resource.RLIMIT_STACKX-tr<8Xerrno.EDESTADDRREQr=8(jjX>http://docs.python.org/3/library/errno.html#errno.EDESTADDRREQX-tr>8X errno.EISCONNr?8(jjX9http://docs.python.org/3/library/errno.html#errno.EISCONNX-tr@8Xwinreg.HKEY_CURRENT_USERrA8(jjXEhttp://docs.python.org/3/library/winreg.html#winreg.HKEY_CURRENT_USERX-trB8Xtoken.N_TOKENSrC8(jjX:http://docs.python.org/3/library/token.html#token.N_TOKENSX-trD8X errno.ENODEVrE8(jjX8http://docs.python.org/3/library/errno.html#errno.ENODEVX-trF8XPy_TPFLAGS_LIST_SUBCLASSrG8(jjXDhttp://docs.python.org/3/c-api/typeobj.html#Py_TPFLAGS_LIST_SUBCLASSX-trH8X sys.maxsizerI8(jjX5http://docs.python.org/3/library/sys.html#sys.maxsizeX-trJ8Xsubprocess.STARTF_USESTDHANDLESrK8(jjXPhttp://docs.python.org/3/library/subprocess.html#subprocess.STARTF_USESTDHANDLESX-trL8Xtypes.FrameTyperM8(jjX;http://docs.python.org/3/library/types.html#types.FrameTypeX-trN8X ssl.OP_ALLrO8(jjX4http://docs.python.org/3/library/ssl.html#ssl.OP_ALLX-trP8X locale.NOEXPRrQ8(jjX:http://docs.python.org/3/library/locale.html#locale.NOEXPRX-trR8X errno.ENOLCKrS8(jjX8http://docs.python.org/3/library/errno.html#errno.ENOLCKX-trT8X$ssl.ALERT_DESCRIPTION_INTERNAL_ERRORrU8(jjXNhttp://docs.python.org/3/library/ssl.html#ssl.ALERT_DESCRIPTION_INTERNAL_ERRORX-trV8X tokenize.NLrW8(jjX:http://docs.python.org/3/library/tokenize.html#tokenize.NLX-trX8Xsubprocess.STARTF_USESHOWWINDOWrY8(jjXPhttp://docs.python.org/3/library/subprocess.html#subprocess.STARTF_USESHOWWINDOWX-trZ8Xhttp.client.HTTP_PORTr[8(jjXGhttp://docs.python.org/3/library/http.client.html#http.client.HTTP_PORTX-tr\8Xdoctest.REPORT_UDIFFr]8(jjXBhttp://docs.python.org/3/library/doctest.html#doctest.REPORT_UDIFFX-tr^8Xsys.path_hooksr_8(jjX8http://docs.python.org/3/library/sys.html#sys.path_hooksX-tr`8X errno.E2BIGra8(jjX7http://docs.python.org/3/library/errno.html#errno.E2BIGX-trb8X os.WSTOPPEDrc8(jjX4http://docs.python.org/3/library/os.html#os.WSTOPPEDX-trd8X os.O_CLOEXECre8(jjX5http://docs.python.org/3/library/os.html#os.O_CLOEXECX-trf8Xsubprocess.STDOUTrg8(jjXBhttp://docs.python.org/3/library/subprocess.html#subprocess.STDOUTX-trh8Xstring.octdigitsri8(jjX=http://docs.python.org/3/library/string.html#string.octdigitsX-trj8Xarray.typecodesrk8(jjX;http://docs.python.org/3/library/array.html#array.typecodesX-trl8Xerrno.ERESTARTrm8(jjX:http://docs.python.org/3/library/errno.html#errno.ERESTARTX-trn8Xtarfile.ENCODINGro8(jjX>http://docs.python.org/3/library/tarfile.html#tarfile.ENCODINGX-trp8Xcrypt.METHOD_CRYPTrq8(jjX>http://docs.python.org/3/library/crypt.html#crypt.METHOD_CRYPTX-trr8X stat.S_IFWHTrs8(jjX7http://docs.python.org/3/library/stat.html#stat.S_IFWHTX-trt8Xos.EX_CANTCREATru8(jjX8http://docs.python.org/3/library/os.html#os.EX_CANTCREATX-trv8X errno.ESTALErw8(jjX8http://docs.python.org/3/library/errno.html#errno.ESTALEX-trx8Xwinreg.KEY_CREATE_SUB_KEYry8(jjXFhttp://docs.python.org/3/library/winreg.html#winreg.KEY_CREATE_SUB_KEYX-trz8X os.defpathr{8(jjX3http://docs.python.org/3/library/os.html#os.defpathX-tr|8XEllipsisr}8(jjX8http://docs.python.org/3/library/constants.html#EllipsisX-tr~8X os.O_BINARYr8(jjX4http://docs.python.org/3/library/os.html#os.O_BINARYX-tr8X os.O_NOATIMEr8(jjX5http://docs.python.org/3/library/os.html#os.O_NOATIMEX-tr8X os.linesepr8(jjX3http://docs.python.org/3/library/os.html#os.linesepX-tr8X os.environr8(jjX3http://docs.python.org/3/library/os.html#os.environX-tr8Xos.POSIX_FADV_NOREUSEr8(jjX>http://docs.python.org/3/library/os.html#os.POSIX_FADV_NOREUSEX-tr8X stat.S_IFLNKr8(jjX7http://docs.python.org/3/library/stat.html#stat.S_IFLNKX-tr8X errno.EISDIRr8(jjX8http://docs.python.org/3/library/errno.html#errno.EISDIRX-tr8Xcodecs.BOM_UTF8r8(jjX<http://docs.python.org/3/library/codecs.html#codecs.BOM_UTF8X-tr8Xsys.__excepthook__r8(jjX<http://docs.python.org/3/library/sys.html#sys.__excepthook__X-tr8Xtempfile.tempdirr8(jjX?http://docs.python.org/3/library/tempfile.html#tempfile.tempdirX-tr8X stat.S_IFIFOr8(jjX7http://docs.python.org/3/library/stat.html#stat.S_IFIFOX-tr8Xthreading.TIMEOUT_MAXr8(jjXEhttp://docs.python.org/3/library/threading.html#threading.TIMEOUT_MAXX-tr8Xresource.RLIMIT_VMEMr8(jjXChttp://docs.python.org/3/library/resource.html#resource.RLIMIT_VMEMX-tr8Xsignal.ITIMER_VIRTUALr8(jjXBhttp://docs.python.org/3/library/signal.html#signal.ITIMER_VIRTUALX-tr8Xtokenize.COMMENTr8(jjX?http://docs.python.org/3/library/tokenize.html#tokenize.COMMENTX-tr8Xos.supports_bytes_environr8(jjXBhttp://docs.python.org/3/library/os.html#os.supports_bytes_environX-tr8Xerrno.ECONNRESETr8(jjX<http://docs.python.org/3/library/errno.html#errno.ECONNRESETX-tr8X signal.NSIGr8(jjX8http://docs.python.org/3/library/signal.html#signal.NSIGX-tr8X0xml.parsers.expat.errors.XML_ERROR_NOT_SUSPENDEDr8(jjX^http://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_NOT_SUSPENDEDX-tr8Xuuid.RESERVED_FUTUREr8(jjX?http://docs.python.org/3/library/uuid.html#uuid.RESERVED_FUTUREX-tr8X os.WNOWAITr8(jjX3http://docs.python.org/3/library/os.html#os.WNOWAITX-tr8Xos.SCHED_BATCHr8(jjX7http://docs.python.org/3/library/os.html#os.SCHED_BATCHX-tr8Xxml.parsers.expat.errors.codesr8(jjXLhttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.codesX-tr8X re.DOTALLr8(jjX2http://docs.python.org/3/library/re.html#re.DOTALLX-tr8Xsys.implementationr8(jjX<http://docs.python.org/3/library/sys.html#sys.implementationX-tr8X stat.S_IRWXGr8(jjX7http://docs.python.org/3/library/stat.html#stat.S_IRWXGX-tr8Xtypes.MemberDescriptorTyper8(jjXFhttp://docs.python.org/3/library/types.html#types.MemberDescriptorTypeX-tr8X_thread.LockTyper8(jjX>http://docs.python.org/3/library/_thread.html#_thread.LockTypeX-tr8Xtoken.LEFTSHIFTr8(jjX;http://docs.python.org/3/library/token.html#token.LEFTSHIFTX-tr8X stat.S_IRWXOr8(jjX7http://docs.python.org/3/library/stat.html#stat.S_IRWXOX-tr8X sys.hash_infor8(jjX7http://docs.python.org/3/library/sys.html#sys.hash_infoX-tr8X&sunau.AUDIO_FILE_ENCODING_ADPCM_G723_3r8(jjXRhttp://docs.python.org/3/library/sunau.html#sunau.AUDIO_FILE_ENCODING_ADPCM_G723_3X-tr8Xobject.__slots__r8(jjXBhttp://docs.python.org/3/reference/datamodel.html#object.__slots__X-tr8X stat.S_IRWXUr8(jjX7http://docs.python.org/3/library/stat.html#stat.S_IRWXUX-tr8Xdecimal.ROUND_05UPr8(jjX@http://docs.python.org/3/library/decimal.html#decimal.ROUND_05UPX-tr8Xunittest.mock.ANYr8(jjXEhttp://docs.python.org/3/library/unittest.mock.html#unittest.mock.ANYX-tr8X stat.S_IFCHRr8(jjX7http://docs.python.org/3/library/stat.html#stat.S_IFCHRX-tr8X token.DOTr8(jjX5http://docs.python.org/3/library/token.html#token.DOTX-tr8Xresource.RLIMIT_NOFILEr8(jjXEhttp://docs.python.org/3/library/resource.html#resource.RLIMIT_NOFILEX-tr8X errno.EL3RSTr8(jjX8http://docs.python.org/3/library/errno.html#errno.EL3RSTX-tr8X parser.STTyper8(jjX:http://docs.python.org/3/library/parser.html#parser.STTypeX-tr8X errno.ECHRNGr8(jjX8http://docs.python.org/3/library/errno.html#errno.ECHRNGX-tr8X stat.S_ISVTXr8(jjX7http://docs.python.org/3/library/stat.html#stat.S_ISVTXX-tr8X os.P_WAITr8(jjX2http://docs.python.org/3/library/os.html#os.P_WAITX-tr8X errno.EDQUOTr8(jjX8http://docs.python.org/3/library/errno.html#errno.EDQUOTX-tr8X errno.ENOSTRr8(jjX8http://docs.python.org/3/library/errno.html#errno.ENOSTRX-tr8X gc.garbager8(jjX3http://docs.python.org/3/library/gc.html#gc.garbageX-tr8X errno.EBADRQCr8(jjX9http://docs.python.org/3/library/errno.html#errno.EBADRQCX-tr8X os.O_RDONLYr8(jjX4http://docs.python.org/3/library/os.html#os.O_RDONLYX-tr8Xlocale.ERA_D_FMTr8(jjX=http://docs.python.org/3/library/locale.html#locale.ERA_D_FMTX-tr8Xos.supports_follow_symlinksr8(jjXDhttp://docs.python.org/3/library/os.html#os.supports_follow_symlinksX-tr8X errno.EACCESr8(jjX8http://docs.python.org/3/library/errno.html#errno.EACCESX-tr8Xsocket.has_ipv6r8(jjX<http://docs.python.org/3/library/socket.html#socket.has_ipv6X-tr8X sys.int_infor8(jjX6http://docs.python.org/3/library/sys.html#sys.int_infoX-tr8X os.CLD_DUMPEDr8(jjX6http://docs.python.org/3/library/os.html#os.CLD_DUMPEDX-tr8Ximp.PKG_DIRECTORYr8(jjX;http://docs.python.org/3/library/imp.html#imp.PKG_DIRECTORYX-tr8Xtoken.DOUBLESTARr8(jjX<http://docs.python.org/3/library/token.html#token.DOUBLESTARX-tr8Xsys.base_exec_prefixr8(jjX>http://docs.python.org/3/library/sys.html#sys.base_exec_prefixX-tr8Xssl.CERT_OPTIONALr8(jjX;http://docs.python.org/3/library/ssl.html#ssl.CERT_OPTIONALX-tr8Xos.POSIX_FADV_RANDOMr8(jjX=http://docs.python.org/3/library/os.html#os.POSIX_FADV_RANDOMX-tr8Xos.sysconf_namesr8(jjX9http://docs.python.org/3/library/os.html#os.sysconf_namesX-tr8Xsys.__displayhook__r8(jjX=http://docs.python.org/3/library/sys.html#sys.__displayhook__X-tr8Xzlib.ZLIB_VERSIONr8(jjX<http://docs.python.org/3/library/zlib.html#zlib.ZLIB_VERSIONX-tr8Xos.confstr_namesr8(jjX9http://docs.python.org/3/library/os.html#os.confstr_namesX-tr8Xsys.dont_write_bytecoder8(jjXAhttp://docs.python.org/3/library/sys.html#sys.dont_write_bytecodeX-tr9X,xml.sax.handler.property_declaration_handlerr9(jjXbhttp://docs.python.org/3/library/xml.sax.handler.html#xml.sax.handler.property_declaration_handlerX-tr9XNotImplementedr9(jjX>http://docs.python.org/3/library/constants.html#NotImplementedX-tr9X stat.ST_CTIMEr9(jjX8http://docs.python.org/3/library/stat.html#stat.ST_CTIMEX-tr9X os.P_PGIDr9(jjX2http://docs.python.org/3/library/os.html#os.P_PGIDX-tr9Xssl.OPENSSL_VERSIONr 9(jjX=http://docs.python.org/3/library/ssl.html#ssl.OPENSSL_VERSIONX-tr 9Xcalendar.day_abbrr 9(jjX@http://docs.python.org/3/library/calendar.html#calendar.day_abbrX-tr 9Xsite.USER_SITEr 9(jjX9http://docs.python.org/3/library/site.html#site.USER_SITEX-tr9Xsys.pathr9(jjX2http://docs.python.org/3/library/sys.html#sys.pathX-tr9X os.O_EXLOCKr9(jjX4http://docs.python.org/3/library/os.html#os.O_EXLOCKX-tr9Xsqlite3.sqlite_version_infor9(jjXIhttp://docs.python.org/3/library/sqlite3.html#sqlite3.sqlite_version_infoX-tr9X-xml.parsers.expat.errors.XML_ERROR_SUSPEND_PEr9(jjX[http://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_SUSPEND_PEX-tr9X stat.ST_ATIMEr9(jjX8http://docs.python.org/3/library/stat.html#stat.ST_ATIMEX-tr9Xsocket.SOL_RDSr9(jjX;http://docs.python.org/3/library/socket.html#socket.SOL_RDSX-tr9X os.O_TRUNCr9(jjX3http://docs.python.org/3/library/os.html#os.O_TRUNCX-tr9X __debug__r9(jjX9http://docs.python.org/3/library/constants.html#__debug__X-tr9Xlocale.LC_COLLATEr9(jjX>http://docs.python.org/3/library/locale.html#locale.LC_COLLATEX-tr 9X os.O_TMPFILEr!9(jjX5http://docs.python.org/3/library/os.html#os.O_TMPFILEX-tr"9Xwinreg.REG_BINARYr#9(jjX>http://docs.python.org/3/library/winreg.html#winreg.REG_BINARYX-tr$9Xsys.__interactivehook__r%9(jjXAhttp://docs.python.org/3/library/sys.html#sys.__interactivehook__X-tr&9X errno.ENFILEr'9(jjX8http://docs.python.org/3/library/errno.html#errno.ENFILEX-tr(9Xssl.OP_NO_TLSv1_1r)9(jjX;http://docs.python.org/3/library/ssl.html#ssl.OP_NO_TLSv1_1X-tr*9Xtest.support.TESTFNr+9(jjX>http://docs.python.org/3/library/test.html#test.support.TESTFNX-tr,9X os.P_DETACHr-9(jjX4http://docs.python.org/3/library/os.html#os.P_DETACHX-tr.9Xsocket.SOCK_RDMr/9(jjX<http://docs.python.org/3/library/socket.html#socket.SOCK_RDMX-tr09Xstring.ascii_lettersr19(jjXAhttp://docs.python.org/3/library/string.html#string.ascii_lettersX-tr29Xwinreg.KEY_READr39(jjX<http://docs.python.org/3/library/winreg.html#winreg.KEY_READX-tr49X sunau.AUDIO_FILE_ENCODING_DOUBLEr59(jjXLhttp://docs.python.org/3/library/sunau.html#sunau.AUDIO_FILE_ENCODING_DOUBLEX-tr69XPy_TPFLAGS_READYr79(jjX<http://docs.python.org/3/c-api/typeobj.html#Py_TPFLAGS_READYX-tr89Xos.CLD_TRAPPEDr99(jjX7http://docs.python.org/3/library/os.html#os.CLD_TRAPPEDX-tr:9X$xml.sax.handler.feature_external_gesr;9(jjXZhttp://docs.python.org/3/library/xml.sax.handler.html#xml.sax.handler.feature_external_gesX-tr<9X os.WUNTRACEDr=9(jjX5http://docs.python.org/3/library/os.html#os.WUNTRACEDX-tr>9Xssl.PROTOCOL_SSLv23r?9(jjX=http://docs.python.org/3/library/ssl.html#ssl.PROTOCOL_SSLv23X-tr@9Xstat.UF_APPENDrA9(jjX9http://docs.python.org/3/library/stat.html#stat.UF_APPENDX-trB9Xos.O_SHORT_LIVEDrC9(jjX9http://docs.python.org/3/library/os.html#os.O_SHORT_LIVEDX-trD9Xsubprocess.STD_OUTPUT_HANDLErE9(jjXMhttp://docs.python.org/3/library/subprocess.html#subprocess.STD_OUTPUT_HANDLEX-trF9Xresource.RLIMIT_RTPRIOrG9(jjXEhttp://docs.python.org/3/library/resource.html#resource.RLIMIT_RTPRIOX-trH9X uuid.RFC_4122rI9(jjX8http://docs.python.org/3/library/uuid.html#uuid.RFC_4122X-trJ9Xtypes.TracebackTyperK9(jjX?http://docs.python.org/3/library/types.html#types.TracebackTypeX-trL9X os.F_TESTrM9(jjX2http://docs.python.org/3/library/os.html#os.F_TESTX-trN9Xlocale.ERA_D_T_FMTrO9(jjX?http://docs.python.org/3/library/locale.html#locale.ERA_D_T_FMTX-trP9X os.PRIO_USERrQ9(jjX5http://docs.python.org/3/library/os.html#os.PRIO_USERX-trR9X os.extseprS9(jjX2http://docs.python.org/3/library/os.html#os.extsepX-trT9X#sunau.AUDIO_FILE_ENCODING_LINEAR_16rU9(jjXOhttp://docs.python.org/3/library/sunau.html#sunau.AUDIO_FILE_ENCODING_LINEAR_16X-trV9Xlocale.ALT_DIGITSrW9(jjX>http://docs.python.org/3/library/locale.html#locale.ALT_DIGITSX-trX9Xre.ASCIIrY9(jjX1http://docs.python.org/3/library/re.html#re.ASCIIX-trZ9Xwinreg.REG_EXPAND_SZr[9(jjXAhttp://docs.python.org/3/library/winreg.html#winreg.REG_EXPAND_SZX-tr\9X sys.__stdin__r]9(jjX7http://docs.python.org/3/library/sys.html#sys.__stdin__X-tr^9X token.SEMIr_9(jjX6http://docs.python.org/3/library/token.html#token.SEMIX-tr`9Xos.P_ALLra9(jjX1http://docs.python.org/3/library/os.html#os.P_ALLX-trb9X time.altzonerc9(jjX7http://docs.python.org/3/library/time.html#time.altzoneX-trd9Xresource.RLIMIT_OFILEre9(jjXDhttp://docs.python.org/3/library/resource.html#resource.RLIMIT_OFILEX-trf9Xerrno.EOPNOTSUPPrg9(jjX<http://docs.python.org/3/library/errno.html#errno.EOPNOTSUPPX-trh9Xerrno.ENOTCONNri9(jjX:http://docs.python.org/3/library/errno.html#errno.ENOTCONNX-trj9Xhashlib.hash.digest_sizerk9(jjXFhttp://docs.python.org/3/library/hashlib.html#hashlib.hash.digest_sizeX-trl9Xerrno.ENOPROTOOPTrm9(jjX=http://docs.python.org/3/library/errno.html#errno.ENOPROTOOPTX-trn9Xwinsound.SND_NOSTOPro9(jjXBhttp://docs.python.org/3/library/winsound.html#winsound.SND_NOSTOPX-trp9Xcmath.pirq9(jjX4http://docs.python.org/3/library/cmath.html#cmath.piX-trr9Xerrno.ESTRPIPErs9(jjX:http://docs.python.org/3/library/errno.html#errno.ESTRPIPEX-trt9X sys.byteorderru9(jjX7http://docs.python.org/3/library/sys.html#sys.byteorderX-trv9Xstat.UF_IMMUTABLErw9(jjX<http://docs.python.org/3/library/stat.html#stat.UF_IMMUTABLEX-trx9Xweakref.ProxyTypesry9(jjX@http://docs.python.org/3/library/weakref.html#weakref.ProxyTypesX-trz9X$configparser.MAX_INTERPOLATION_DEPTHr{9(jjXWhttp://docs.python.org/3/library/configparser.html#configparser.MAX_INTERPOLATION_DEPTHX-tr|9Xsocket.SOMAXCONNr}9(jjX=http://docs.python.org/3/library/socket.html#socket.SOMAXCONNX-tr~9X gc.DEBUG_LEAKr9(jjX6http://docs.python.org/3/library/gc.html#gc.DEBUG_LEAKX-tr9X os.EX_NOHOSTr9(jjX5http://docs.python.org/3/library/os.html#os.EX_NOHOSTX-tr9Xsocket.CAN_BCMr9(jjX;http://docs.python.org/3/library/socket.html#socket.CAN_BCMX-tr9X,xml.parsers.expat.errors.XML_ERROR_SUSPENDEDr9(jjXZhttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_SUSPENDEDX-tr9Xsys.argvr9(jjX2http://docs.python.org/3/library/sys.html#sys.argvX-tr9X token.RARROWr9(jjX8http://docs.python.org/3/library/token.html#token.RARROWX-tr9Xtoken.ENDMARKERr9(jjX;http://docs.python.org/3/library/token.html#token.ENDMARKERX-tr9Xxml.sax.handler.all_featuresr9(jjXRhttp://docs.python.org/3/library/xml.sax.handler.html#xml.sax.handler.all_featuresX-tr9Xxml.dom.XHTML_NAMESPACEr9(jjXEhttp://docs.python.org/3/library/xml.dom.html#xml.dom.XHTML_NAMESPACEX-tr9Xwinreg.REG_DWORDr9(jjX=http://docs.python.org/3/library/winreg.html#winreg.REG_DWORDX-tr9Xos.P_PIDr9(jjX1http://docs.python.org/3/library/os.html#os.P_PIDX-tr9X locale.T_FMTr9(jjX9http://docs.python.org/3/library/locale.html#locale.T_FMTX-tr9Xerrno.EADDRNOTAVAILr9(jjX?http://docs.python.org/3/library/errno.html#errno.EADDRNOTAVAILX-tr9X stat.S_IXGRPr9(jjX7http://docs.python.org/3/library/stat.html#stat.S_IXGRPX-tr9Xpickle.DEFAULT_PROTOCOLr9(jjXDhttp://docs.python.org/3/library/pickle.html#pickle.DEFAULT_PROTOCOLX-tr9Xpathlib.PurePath.driver9(jjXDhttp://docs.python.org/3/library/pathlib.html#pathlib.PurePath.driveX-tr9X!xml.sax.handler.property_dom_noder9(jjXWhttp://docs.python.org/3/library/xml.sax.handler.html#xml.sax.handler.property_dom_nodeX-tr9Xtarfile.DEFAULT_FORMATr9(jjXDhttp://docs.python.org/3/library/tarfile.html#tarfile.DEFAULT_FORMATX-tr9X errno.EDEADLKr9(jjX9http://docs.python.org/3/library/errno.html#errno.EDEADLKX-tr9Xsignal.SIG_DFLr9(jjX;http://docs.python.org/3/library/signal.html#signal.SIG_DFLX-tr9Xresource.RLIMIT_SIGPENDINGr9(jjXIhttp://docs.python.org/3/library/resource.html#resource.RLIMIT_SIGPENDINGX-tr9X3xml.parsers.expat.errors.XML_ERROR_PARAM_ENTITY_REFr9(jjXahttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_PARAM_ENTITY_REFX-tr9Xerrno.EADDRINUSEr9(jjX<http://docs.python.org/3/library/errno.html#errno.EADDRINUSEX-tr9Xssl.Purpose.SERVER_AUTHr9(jjXAhttp://docs.python.org/3/library/ssl.html#ssl.Purpose.SERVER_AUTHX-tr9Xwinreg.KEY_NOTIFYr9(jjX>http://docs.python.org/3/library/winreg.html#winreg.KEY_NOTIFYX-tr9X codecs.BOM_LEr9(jjX:http://docs.python.org/3/library/codecs.html#codecs.BOM_LEX-tr9X errno.ENAVAILr9(jjX9http://docs.python.org/3/library/errno.html#errno.ENAVAILX-tr9X token.STRINGr9(jjX8http://docs.python.org/3/library/token.html#token.STRINGX-tr9X token.COLONr9(jjX7http://docs.python.org/3/library/token.html#token.COLONX-tr9X stat.S_IWGRPr9(jjX7http://docs.python.org/3/library/stat.html#stat.S_IWGRPX-tr9Xtoken.DOUBLESTAREQUALr9(jjXAhttp://docs.python.org/3/library/token.html#token.DOUBLESTAREQUALX-tr9X stat.ST_SIZEr9(jjX7http://docs.python.org/3/library/stat.html#stat.ST_SIZEX-tr9X token.VBARr9(jjX6http://docs.python.org/3/library/token.html#token.VBARX-tr9Xresource.RLIMIT_NICEr9(jjXChttp://docs.python.org/3/library/resource.html#resource.RLIMIT_NICEX-tr9Xerrno.ECONNABORTEDr9(jjX>http://docs.python.org/3/library/errno.html#errno.ECONNABORTEDX-tr9Xsys.thread_infor9(jjX9http://docs.python.org/3/library/sys.html#sys.thread_infoX-tr9Xos.SF_NODISKIOr9(jjX7http://docs.python.org/3/library/os.html#os.SF_NODISKIOX-tr9X token.GREATERr9(jjX9http://docs.python.org/3/library/token.html#token.GREATERX-tr9X3xml.parsers.expat.errors.XML_ERROR_UNEXPECTED_STATEr9(jjXahttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_UNEXPECTED_STATEX-tr9X socket.AF_CANr9(jjX:http://docs.python.org/3/library/socket.html#socket.AF_CANX-tr9X errno.ENOSPCr9(jjX8http://docs.python.org/3/library/errno.html#errno.ENOSPCX-tr9Xdis.Instruction.starts_liner9(jjXEhttp://docs.python.org/3/library/dis.html#dis.Instruction.starts_lineX-tr9Xsys.last_valuer9(jjX8http://docs.python.org/3/library/sys.html#sys.last_valueX-tr9X os.curdirr9(jjX2http://docs.python.org/3/library/os.html#os.curdirX-tr9X stat.S_IRUSRr9(jjX7http://docs.python.org/3/library/stat.html#stat.S_IRUSRX-tr9Xos.XATTR_REPLACEr9(jjX9http://docs.python.org/3/library/os.html#os.XATTR_REPLACEX-tr9X*xml.sax.handler.feature_namespace_prefixesr9(jjX`http://docs.python.org/3/library/xml.sax.handler.html#xml.sax.handler.feature_namespace_prefixesX-tr9Xpathlib.PurePath.suffixesr9(jjXGhttp://docs.python.org/3/library/pathlib.html#pathlib.PurePath.suffixesX-tr9Xgc.DEBUG_UNCOLLECTABLEr9(jjX?http://docs.python.org/3/library/gc.html#gc.DEBUG_UNCOLLECTABLEX-tr9X errno.EUNATCHr9(jjX9http://docs.python.org/3/library/errno.html#errno.EUNATCHX-tr9Xssl.OP_CIPHER_SERVER_PREFERENCEr9(jjXIhttp://docs.python.org/3/library/ssl.html#ssl.OP_CIPHER_SERVER_PREFERENCEX-tr9Xtime.CLOCK_THREAD_CPUTIME_IDr9(jjXGhttp://docs.python.org/3/library/time.html#time.CLOCK_THREAD_CPUTIME_IDX-tr9Xunittest.defaultTestLoaderr9(jjXIhttp://docs.python.org/3/library/unittest.html#unittest.defaultTestLoaderX-tr9Xerrno.EMULTIHOPr9(jjX;http://docs.python.org/3/library/errno.html#errno.EMULTIHOPX-tr9X errno.EILSEQr9(jjX8http://docs.python.org/3/library/errno.html#errno.EILSEQX-tr9X os.O_EXCLr9(jjX2http://docs.python.org/3/library/os.html#os.O_EXCLX-tr9X.xml.parsers.expat.errors.XML_ERROR_NO_ELEMENTSr9(jjX\http://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_NO_ELEMENTSX-tr9X os.F_ULOCKr9(jjX3http://docs.python.org/3/library/os.html#os.F_ULOCKX-tr9X errno.ENOPKGr9(jjX8http://docs.python.org/3/library/errno.html#errno.ENOPKGX-tr9XNoner9(jjX4http://docs.python.org/3/library/constants.html#NoneX-tr9Xssl.PROTOCOL_TLSv1r9(jjX<http://docs.python.org/3/library/ssl.html#ssl.PROTOCOL_TLSv1X-tr9Xwinreg.REG_RESOURCE_LISTr9(jjXEhttp://docs.python.org/3/library/winreg.html#winreg.REG_RESOURCE_LISTX-tr9Xsignal.SIG_IGNr9(jjX;http://docs.python.org/3/library/signal.html#signal.SIG_IGNX-tr9X token.INDENTr9(jjX8http://docs.python.org/3/library/token.html#token.INDENTX-tr9X os.O_SHLOCKr9(jjX4http://docs.python.org/3/library/os.html#os.O_SHLOCKX-tr:X os.SF_MNOWAITr:(jjX6http://docs.python.org/3/library/os.html#os.SF_MNOWAITX-tr:Xcsv.QUOTE_NONNUMERICr:(jjX>http://docs.python.org/3/library/csv.html#csv.QUOTE_NONNUMERICX-tr:X os.F_LOCKr:(jjX2http://docs.python.org/3/library/os.html#os.F_LOCKX-tr:Xdis.Instruction.opnamer:(jjX@http://docs.python.org/3/library/dis.html#dis.Instruction.opnameX-tr:Xsymbol.sym_namer :(jjX<http://docs.python.org/3/library/symbol.html#symbol.sym_nameX-tr :Xxml.dom.EMPTY_NAMESPACEr :(jjXEhttp://docs.python.org/3/library/xml.dom.html#xml.dom.EMPTY_NAMESPACEX-tr :Xtoken.DOUBLESLASHr :(jjX=http://docs.python.org/3/library/token.html#token.DOUBLESLASHX-tr:Xgc.DEBUG_COLLECTABLEr:(jjX=http://docs.python.org/3/library/gc.html#gc.DEBUG_COLLECTABLEX-tr:X6xml.parsers.expat.errors.XML_ERROR_DUPLICATE_ATTRIBUTEr:(jjXdhttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_DUPLICATE_ATTRIBUTEX-tr:X METH_STATICr:(jjX:http://docs.python.org/3/c-api/structures.html#METH_STATICX-tr:Xtypes.GetSetDescriptorTyper:(jjXFhttp://docs.python.org/3/library/types.html#types.GetSetDescriptorTypeX-tr:X errno.EBADFDr:(jjX8http://docs.python.org/3/library/errno.html#errno.EBADFDX-tr:X dis.hasfreer:(jjX5http://docs.python.org/3/library/dis.html#dis.hasfreeX-tr:Xformatter.AS_ISr:(jjX?http://docs.python.org/3/library/formatter.html#formatter.AS_ISX-tr:Xuuid.NAMESPACE_X500r:(jjX>http://docs.python.org/3/library/uuid.html#uuid.NAMESPACE_X500X-tr:Xsys.last_tracebackr:(jjX<http://docs.python.org/3/library/sys.html#sys.last_tracebackX-tr :X errno.EDOTDOTr!:(jjX9http://docs.python.org/3/library/errno.html#errno.EDOTDOTX-tr":Xhtml.entities.codepoint2namer#:(jjXPhttp://docs.python.org/3/library/html.entities.html#html.entities.codepoint2nameX-tr$:Xdecimal.ROUND_FLOORr%:(jjXAhttp://docs.python.org/3/library/decimal.html#decimal.ROUND_FLOORX-tr&:X os.SEEK_CURr':(jjX4http://docs.python.org/3/library/os.html#os.SEEK_CURX-tr(:X os.O_NOCTTYr):(jjX4http://docs.python.org/3/library/os.html#os.O_NOCTTYX-tr*:Xemail.policy.defaultr+:(jjXGhttp://docs.python.org/3/library/email.policy.html#email.policy.defaultX-tr,:Xtime.CLOCK_MONOTONICr-:(jjX?http://docs.python.org/3/library/time.html#time.CLOCK_MONOTONICX-tr.:X imp.PY_FROZENr/:(jjX7http://docs.python.org/3/library/imp.html#imp.PY_FROZENX-tr0:X errno.EL3HLTr1:(jjX8http://docs.python.org/3/library/errno.html#errno.EL3HLTX-tr2:X dis.haslocalr3:(jjX6http://docs.python.org/3/library/dis.html#dis.haslocalX-tr4:Xmsvcrt.LK_RLCKr5:(jjX;http://docs.python.org/3/library/msvcrt.html#msvcrt.LK_RLCKX-tr6:Xdistutils.sysconfig.EXEC_PREFIXr7:(jjXNhttp://docs.python.org/3/distutils/apiref.html#distutils.sysconfig.EXEC_PREFIXX-tr8:X os.WCONTINUEDr9:(jjX6http://docs.python.org/3/library/os.html#os.WCONTINUEDX-tr::Xtoken.RIGHTSHIFTr;:(jjX<http://docs.python.org/3/library/token.html#token.RIGHTSHIFTX-tr<:X os.SCHED_RRr=:(jjX4http://docs.python.org/3/library/os.html#os.SCHED_RRX-tr>:Xgc.DEBUG_SAVEALLr?:(jjX9http://docs.python.org/3/library/gc.html#gc.DEBUG_SAVEALLX-tr@:X stat.S_IWRITErA:(jjX8http://docs.python.org/3/library/stat.html#stat.S_IWRITEX-trB:X METH_VARARGSrC:(jjX;http://docs.python.org/3/c-api/structures.html#METH_VARARGSX-trD:X1xml.parsers.expat.errors.XML_ERROR_NOT_STANDALONErE:(jjX_http://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_NOT_STANDALONEX-trF:Xdecimal.MAX_PRECrG:(jjX>http://docs.python.org/3/library/decimal.html#decimal.MAX_PRECX-trH:X0xml.parsers.expat.errors.XML_ERROR_INCOMPLETE_PErI:(jjX^http://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_INCOMPLETE_PEX-trJ:X stat.ST_DEVrK:(jjX6http://docs.python.org/3/library/stat.html#stat.ST_DEVX-trL:Xcodecs.BOM_UTF32_BErM:(jjX@http://docs.python.org/3/library/codecs.html#codecs.BOM_UTF32_BEX-trN:Xwinreg.KEY_SET_VALUErO:(jjXAhttp://docs.python.org/3/library/winreg.html#winreg.KEY_SET_VALUEX-trP:Xtarfile.GNU_FORMATrQ:(jjX@http://docs.python.org/3/library/tarfile.html#tarfile.GNU_FORMATX-trR:Xcodecs.BOM_UTF32rS:(jjX=http://docs.python.org/3/library/codecs.html#codecs.BOM_UTF32X-trT:Xssl.OP_SINGLE_ECDH_USErU:(jjX@http://docs.python.org/3/library/ssl.html#ssl.OP_SINGLE_ECDH_USEX-trV:X sys.platformrW:(jjX6http://docs.python.org/3/library/sys.html#sys.platformX-trX:X stat.S_IREADrY:(jjX7http://docs.python.org/3/library/stat.html#stat.S_IREADX-trZ:Xcalendar.day_namer[:(jjX@http://docs.python.org/3/library/calendar.html#calendar.day_nameX-tr\:Xresource.RLIMIT_NPROCr]:(jjXDhttp://docs.python.org/3/library/resource.html#resource.RLIMIT_NPROCX-tr^:X%email.contentmanager.raw_data_managerr_:(jjX`http://docs.python.org/3/library/email.contentmanager.html#email.contentmanager.raw_data_managerX-tr`:Xmimetypes.common_typesra:(jjXFhttp://docs.python.org/3/library/mimetypes.html#mimetypes.common_typesX-trb:X sys.modulesrc:(jjX5http://docs.python.org/3/library/sys.html#sys.modulesX-trd:Xmsilib.sequencere:(jjX<http://docs.python.org/3/library/msilib.html#msilib.sequenceX-trf:X4xml.parsers.expat.errors.XML_ERROR_BINARY_ENTITY_REFrg:(jjXbhttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_BINARY_ENTITY_REFX-trh:Xerrno.EHOSTUNREACHri:(jjX>http://docs.python.org/3/library/errno.html#errno.EHOSTUNREACHX-trj:X1xml.parsers.expat.errors.XML_ERROR_UNCLOSED_TOKENrk:(jjX_http://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_UNCLOSED_TOKENX-trl:Xdis.Instruction.argrm:(jjX=http://docs.python.org/3/library/dis.html#dis.Instruction.argX-trn:Xtoken.LEFTSHIFTEQUALro:(jjX@http://docs.python.org/3/library/token.html#token.LEFTSHIFTEQUALX-trp:Xpathlib.PurePath.partsrq:(jjXDhttp://docs.python.org/3/library/pathlib.html#pathlib.PurePath.partsX-trr:X re.MULTILINErs:(jjX5http://docs.python.org/3/library/re.html#re.MULTILINEX-trt:X token.LBRACEru:(jjX8http://docs.python.org/3/library/token.html#token.LBRACEX-trv:X/xml.parsers.expat.errors.XML_ERROR_PARTIAL_CHARrw:(jjX]http://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_PARTIAL_CHARX-trx:X'ssl.ALERT_DESCRIPTION_HANDSHAKE_FAILUREry:(jjXQhttp://docs.python.org/3/library/ssl.html#ssl.ALERT_DESCRIPTION_HANDSHAKE_FAILUREX-trz:X errno.EFBIGr{:(jjX7http://docs.python.org/3/library/errno.html#errno.EFBIGX-tr|:Xtabnanny.verboser}:(jjX?http://docs.python.org/3/library/tabnanny.html#tabnanny.verboseX-tr~:X os.devnullr:(jjX3http://docs.python.org/3/library/os.html#os.devnullX-tr:Xstat.SF_IMMUTABLEr:(jjX<http://docs.python.org/3/library/stat.html#stat.SF_IMMUTABLEX-tr:X(xml.sax.handler.feature_string_interningr:(jjX^http://docs.python.org/3/library/xml.sax.handler.html#xml.sax.handler.feature_string_interningX-tr:Xos.RTLD_GLOBALr:(jjX7http://docs.python.org/3/library/os.html#os.RTLD_GLOBALX-tr:X token.RSQBr:(jjX6http://docs.python.org/3/library/token.html#token.RSQBX-tr:X_thread.TIMEOUT_MAXr:(jjXAhttp://docs.python.org/3/library/_thread.html#_thread.TIMEOUT_MAXX-tr:Xcsv.QUOTE_MINIMALr:(jjX;http://docs.python.org/3/library/csv.html#csv.QUOTE_MINIMALX-tr:Xtoken.RIGHTSHIFTEQUALr:(jjXAhttp://docs.python.org/3/library/token.html#token.RIGHTSHIFTEQUALX-tr:XPy_TPFLAGS_DICT_SUBCLASSr:(jjXDhttp://docs.python.org/3/c-api/typeobj.html#Py_TPFLAGS_DICT_SUBCLASSX-tr:Xstring.punctuationr:(jjX?http://docs.python.org/3/library/string.html#string.punctuationX-tr:X stat.S_IXOTHr:(jjX7http://docs.python.org/3/library/stat.html#stat.S_IXOTHX-tr:Xerrno.EDEADLOCKr:(jjX;http://docs.python.org/3/library/errno.html#errno.EDEADLOCKX-tr:X errno.ETXTBSYr:(jjX9http://docs.python.org/3/library/errno.html#errno.ETXTBSYX-tr:Xsignal.CTRL_BREAK_EVENTr:(jjXDhttp://docs.python.org/3/library/signal.html#signal.CTRL_BREAK_EVENTX-tr:Xdoctest.ELLIPSISr:(jjX>http://docs.python.org/3/library/doctest.html#doctest.ELLIPSISX-tr:X os.O_NDELAYr:(jjX4http://docs.python.org/3/library/os.html#os.O_NDELAYX-tr:Xmimetypes.encodings_mapr:(jjXGhttp://docs.python.org/3/library/mimetypes.html#mimetypes.encodings_mapX-tr:X!asyncio.asyncio.subprocess.STDOUTr:(jjXZhttp://docs.python.org/3/library/asyncio-subprocess.html#asyncio.asyncio.subprocess.STDOUTX-tr:Xsocket.SOCK_SEQPACKETr:(jjXBhttp://docs.python.org/3/library/socket.html#socket.SOCK_SEQPACKETX-tr:X errno.ENONETr:(jjX8http://docs.python.org/3/library/errno.html#errno.ENONETX-tr:X stat.S_IRGRPr:(jjX7http://docs.python.org/3/library/stat.html#stat.S_IRGRPX-tr:X os.WNOHANGr:(jjX3http://docs.python.org/3/library/os.html#os.WNOHANGX-tr:Xerrno.EHOSTDOWNr:(jjX;http://docs.python.org/3/library/errno.html#errno.EHOSTDOWNX-tr:X)xml.parsers.expat.errors.XML_ERROR_SYNTAXr:(jjXWhttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_SYNTAXX-tr:X os.O_CREATr:(jjX3http://docs.python.org/3/library/os.html#os.O_CREATX-tr:X stat.S_IEXECr:(jjX7http://docs.python.org/3/library/stat.html#stat.S_IEXECX-tr:X os.O_APPENDr:(jjX4http://docs.python.org/3/library/os.html#os.O_APPENDX-tr:X"asyncio.asyncio.subprocess.DEVNULLr:(jjX[http://docs.python.org/3/library/asyncio-subprocess.html#asyncio.asyncio.subprocess.DEVNULLX-tr:Xos.RTLD_DEEPBINDr:(jjX9http://docs.python.org/3/library/os.html#os.RTLD_DEEPBINDX-tr:X stat.S_IWUSRr:(jjX7http://docs.python.org/3/library/stat.html#stat.S_IWUSRX-tr:Xssl.OPENSSL_VERSION_INFOr:(jjXBhttp://docs.python.org/3/library/ssl.html#ssl.OPENSSL_VERSION_INFOX-tr:Xhashlib.hash.block_sizer:(jjXEhttp://docs.python.org/3/library/hashlib.html#hashlib.hash.block_sizeX-tr:Xzipfile.ZIP_STOREDr:(jjX@http://docs.python.org/3/library/zipfile.html#zipfile.ZIP_STOREDX-tr:Xcmath.er:(jjX3http://docs.python.org/3/library/cmath.html#cmath.eX-tr:Xsubprocess.STD_ERROR_HANDLEr:(jjXLhttp://docs.python.org/3/library/subprocess.html#subprocess.STD_ERROR_HANDLEX-tr:Xwinreg.REG_LINKr:(jjX<http://docs.python.org/3/library/winreg.html#winreg.REG_LINKX-tr:X os.O_DIRECTr:(jjX4http://docs.python.org/3/library/os.html#os.O_DIRECTX-tr:X/xml.parsers.expat.errors.XML_ERROR_ASYNC_ENTITYr:(jjX]http://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_ASYNC_ENTITYX-tr:X errno.ENODATAr:(jjX9http://docs.python.org/3/library/errno.html#errno.ENODATAX-tr:X stat.S_IFBLKr:(jjX7http://docs.python.org/3/library/stat.html#stat.S_IFBLKX-tr:Xsys.__stdout__r:(jjX8http://docs.python.org/3/library/sys.html#sys.__stdout__X-tr:Xsignal.ITIMER_REALr:(jjX?http://docs.python.org/3/library/signal.html#signal.ITIMER_REALX-tr:Xweakref.ProxyTyper:(jjX?http://docs.python.org/3/library/weakref.html#weakref.ProxyTypeX-tr:X imp.PY_SOURCEr:(jjX7http://docs.python.org/3/library/imp.html#imp.PY_SOURCEX-tr:Xsys.ps2r:(jjX1http://docs.python.org/3/library/sys.html#sys.ps2X-tr:Xsocket.AF_INET6r:(jjX<http://docs.python.org/3/library/socket.html#socket.AF_INET6X-tr:X!doctest.REPORT_ONLY_FIRST_FAILUREr:(jjXOhttp://docs.python.org/3/library/doctest.html#doctest.REPORT_ONLY_FIRST_FAILUREX-tr:Xos.sepr:(jjX/http://docs.python.org/3/library/os.html#os.sepX-tr:Xmimetypes.types_mapr:(jjXChttp://docs.python.org/3/library/mimetypes.html#mimetypes.types_mapX-tr:X errno.EXDEVr:(jjX7http://docs.python.org/3/library/errno.html#errno.EXDEVX-tr:X dis.hasconstr:(jjX6http://docs.python.org/3/library/dis.html#dis.hasconstX-tr:X imghdr.testsr:(jjX9http://docs.python.org/3/library/imghdr.html#imghdr.testsX-tr:Xmath.pir:(jjX2http://docs.python.org/3/library/math.html#math.piX-tr:X5xml.parsers.expat.errors.XML_ERROR_INCORRECT_ENCODINGr:(jjXchttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_INCORRECT_ENCODINGX-tr:Xos.EX_UNAVAILABLEr:(jjX:http://docs.python.org/3/library/os.html#os.EX_UNAVAILABLEX-tr:X errno.EINVALr:(jjX8http://docs.python.org/3/library/errno.html#errno.EINVALX-tr:Xos.F_OKr:(jjX0http://docs.python.org/3/library/os.html#os.F_OKX-tr:X os.EX_OSFILEr:(jjX5http://docs.python.org/3/library/os.html#os.EX_OSFILEX-tr:X errno.ELIBSCNr:(jjX9http://docs.python.org/3/library/errno.html#errno.ELIBSCNX-tr:Xsys.builtin_module_namesr:(jjXBhttp://docs.python.org/3/library/sys.html#sys.builtin_module_namesX-tr:X errno.ECHILDr:(jjX8http://docs.python.org/3/library/errno.html#errno.ECHILDX-tr:Xplistlib.FMT_XMLr:(jjX?http://docs.python.org/3/library/plistlib.html#plistlib.FMT_XMLX-tr:Xlocale.LC_TIMEr:(jjX;http://docs.python.org/3/library/locale.html#locale.LC_TIMEX-tr:Xstat.UF_NODUMPr:(jjX9http://docs.python.org/3/library/stat.html#stat.UF_NODUMPX-tr:X errno.ENOTTYr:(jjX8http://docs.python.org/3/library/errno.html#errno.ENOTTYX-tr;X curses.ERRr;(jjX7http://docs.python.org/3/library/curses.html#curses.ERRX-tr;X re.IGNORECASEr;(jjX6http://docs.python.org/3/library/re.html#re.IGNORECASEX-tr;X*xml.parsers.expat.errors.XML_ERROR_ABORTEDr;(jjXXhttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_ABORTEDX-tr;X socket.PF_RDSr;(jjX:http://docs.python.org/3/library/socket.html#socket.PF_RDSX-tr;Xwinreg.KEY_ALL_ACCESSr ;(jjXBhttp://docs.python.org/3/library/winreg.html#winreg.KEY_ALL_ACCESSX-tr ;Xerrno.EINPROGRESSr ;(jjX=http://docs.python.org/3/library/errno.html#errno.EINPROGRESSX-tr ;Xuuid.RESERVED_MICROSOFTr ;(jjXBhttp://docs.python.org/3/library/uuid.html#uuid.RESERVED_MICROSOFTX-tr;Xtoken.PERCENTEQUALr;(jjX>http://docs.python.org/3/library/token.html#token.PERCENTEQUALX-tr;Xuuid.NAMESPACE_DNSr;(jjX=http://docs.python.org/3/library/uuid.html#uuid.NAMESPACE_DNSX-tr;Xos.POSIX_FADV_SEQUENTIALr;(jjXAhttp://docs.python.org/3/library/os.html#os.POSIX_FADV_SEQUENTIALX-tr;Xmimetypes.initedr;(jjX@http://docs.python.org/3/library/mimetypes.html#mimetypes.initedX-tr;Xmsvcrt.LK_NBLCKr;(jjX<http://docs.python.org/3/library/msvcrt.html#msvcrt.LK_NBLCKX-tr;X errno.ENOCSIr;(jjX8http://docs.python.org/3/library/errno.html#errno.ENOCSIX-tr;Xresource.RLIMIT_MSGQUEUEr;(jjXGhttp://docs.python.org/3/library/resource.html#resource.RLIMIT_MSGQUEUEX-tr;Xwinsound.MB_OKr;(jjX=http://docs.python.org/3/library/winsound.html#winsound.MB_OKX-tr;X os.O_TEXTr;(jjX2http://docs.python.org/3/library/os.html#os.O_TEXTX-tr ;X errno.ENOTNAMr!;(jjX9http://docs.python.org/3/library/errno.html#errno.ENOTNAMX-tr";Xwinsound.SND_LOOPr#;(jjX@http://docs.python.org/3/library/winsound.html#winsound.SND_LOOPX-tr$;Xresource.RLIMIT_SBSIZEr%;(jjXEhttp://docs.python.org/3/library/resource.html#resource.RLIMIT_SBSIZEX-tr&;Xerrno.errorcoder';(jjX;http://docs.python.org/3/library/errno.html#errno.errorcodeX-tr(;X errno.EL2HLTr);(jjX8http://docs.python.org/3/library/errno.html#errno.EL2HLTX-tr*;Xssl.VERIFY_CRL_CHECK_LEAFr+;(jjXChttp://docs.python.org/3/library/ssl.html#ssl.VERIFY_CRL_CHECK_LEAFX-tr,;Xhashlib.algorithms_guaranteedr-;(jjXKhttp://docs.python.org/3/library/hashlib.html#hashlib.algorithms_guaranteedX-tr.;Xmsvcrt.LK_UNLCKr/;(jjX<http://docs.python.org/3/library/msvcrt.html#msvcrt.LK_UNLCKX-tr0;Xtime.CLOCK_HIGHRESr1;(jjX=http://docs.python.org/3/library/time.html#time.CLOCK_HIGHRESX-tr2;X copyrightr3;(jjX9http://docs.python.org/3/library/constants.html#copyrightX-tr4;X winreg.REG_SZr5;(jjX:http://docs.python.org/3/library/winreg.html#winreg.REG_SZX-tr6;X&asynchat.async_chat.ac_out_buffer_sizer7;(jjXUhttp://docs.python.org/3/library/asynchat.html#asynchat.async_chat.ac_out_buffer_sizeX-tr8;Xtoken.STAREQUALr9;(jjX;http://docs.python.org/3/library/token.html#token.STAREQUALX-tr:;X stat.S_ENFMTr;;(jjX7http://docs.python.org/3/library/stat.html#stat.S_ENFMTX-tr<;Xxml.parsers.expat.XMLParserTyper=;(jjXMhttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.XMLParserTypeX-tr>;X dis.opmapr?;(jjX3http://docs.python.org/3/library/dis.html#dis.opmapX-tr@;X os.pathseprA;(jjX3http://docs.python.org/3/library/os.html#os.pathsepX-trB;Xwinsound.SND_FILENAMErC;(jjXDhttp://docs.python.org/3/library/winsound.html#winsound.SND_FILENAMEX-trD;Xdis.Instruction.offsetrE;(jjX@http://docs.python.org/3/library/dis.html#dis.Instruction.offsetX-trF;X3xml.parsers.expat.errors.XML_ERROR_UNDEFINED_ENTITYrG;(jjXahttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_UNDEFINED_ENTITYX-trH;Xcalendar.month_abbrrI;(jjXBhttp://docs.python.org/3/library/calendar.html#calendar.month_abbrX-trJ;Xmsvcrt.LK_LOCKrK;(jjX;http://docs.python.org/3/library/msvcrt.html#msvcrt.LK_LOCKX-trL;Xerrno.EREMOTEIOrM;(jjX;http://docs.python.org/3/library/errno.html#errno.EREMOTEIOX-trN;Xssl.CERT_REQUIREDrO;(jjX;http://docs.python.org/3/library/ssl.html#ssl.CERT_REQUIREDX-trP;X os.altseprQ;(jjX2http://docs.python.org/3/library/os.html#os.altsepX-trR;Xwinreg.REG_NONErS;(jjX<http://docs.python.org/3/library/winreg.html#winreg.REG_NONEX-trT;X os.O_RSYNCrU;(jjX3http://docs.python.org/3/library/os.html#os.O_RSYNCX-trV;X locale.D_FMTrW;(jjX9http://docs.python.org/3/library/locale.html#locale.D_FMTX-trX;X os.SCHED_FIFOrY;(jjX6http://docs.python.org/3/library/os.html#os.SCHED_FIFOX-trZ;Xsocket.SOCK_CLOEXECr[;(jjX@http://docs.python.org/3/library/socket.html#socket.SOCK_CLOEXECX-tr\;X locale.ERAr];(jjX7http://docs.python.org/3/library/locale.html#locale.ERAX-tr^;X#sunau.AUDIO_FILE_ENCODING_LINEAR_24r_;(jjXOhttp://docs.python.org/3/library/sunau.html#sunau.AUDIO_FILE_ENCODING_LINEAR_24X-tr`;Xssl.OP_NO_TLSv1_2ra;(jjX;http://docs.python.org/3/library/ssl.html#ssl.OP_NO_TLSv1_2X-trb;Xwinsound.MB_ICONHANDrc;(jjXChttp://docs.python.org/3/library/winsound.html#winsound.MB_ICONHANDX-trd;Xemail.policy.strictre;(jjXFhttp://docs.python.org/3/library/email.policy.html#email.policy.strictX-trf;Xdoctest.NORMALIZE_WHITESPACErg;(jjXJhttp://docs.python.org/3/library/doctest.html#doctest.NORMALIZE_WHITESPACEX-trh;X token.NEWLINEri;(jjX9http://docs.python.org/3/library/token.html#token.NEWLINEX-trj;X errno.ELNRNGrk;(jjX8http://docs.python.org/3/library/errno.html#errno.ELNRNGX-trl;Xwinreg.HKEY_DYN_DATArm;(jjXAhttp://docs.python.org/3/library/winreg.html#winreg.HKEY_DYN_DATAX-trn;Xstat.UF_NOUNLINKro;(jjX;http://docs.python.org/3/library/stat.html#stat.UF_NOUNLINKX-trp;Xasyncio.asyncio.subprocess.PIPErq;(jjXXhttp://docs.python.org/3/library/asyncio-subprocess.html#asyncio.asyncio.subprocess.PIPEX-trr;Xlocale.T_FMT_AMPMrs;(jjX>http://docs.python.org/3/library/locale.html#locale.T_FMT_AMPMX-trt;Xstat.SF_ARCHIVEDru;(jjX;http://docs.python.org/3/library/stat.html#stat.SF_ARCHIVEDX-trv;Xdis.Instruction.argreprrw;(jjXAhttp://docs.python.org/3/library/dis.html#dis.Instruction.argreprX-trx;Xdecimal.ROUND_HALF_UPry;(jjXChttp://docs.python.org/3/library/decimal.html#decimal.ROUND_HALF_UPX-trz;Xdoctest.REPORTING_FLAGSr{;(jjXEhttp://docs.python.org/3/library/doctest.html#doctest.REPORTING_FLAGSX-tr|;Xdis.Instruction.opcoder};(jjX@http://docs.python.org/3/library/dis.html#dis.Instruction.opcodeX-tr~;X errno.EUCLEANr;(jjX9http://docs.python.org/3/library/errno.html#errno.EUCLEANX-tr;X sys.flagsr;(jjX3http://docs.python.org/3/library/sys.html#sys.flagsX-tr;Xtypes.FunctionTyper;(jjX>http://docs.python.org/3/library/types.html#types.FunctionTypeX-tr;X errno.EPROTOr;(jjX8http://docs.python.org/3/library/errno.html#errno.EPROTOX-tr;X re.LOCALEr;(jjX2http://docs.python.org/3/library/re.html#re.LOCALEX-tr;X token.RPARr;(jjX6http://docs.python.org/3/library/token.html#token.RPARX-tr;X os.P_OVERLAYr;(jjX5http://docs.python.org/3/library/os.html#os.P_OVERLAYX-tr;X/xml.parsers.expat.errors.XML_ERROR_TAG_MISMATCHr;(jjX]http://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_TAG_MISMATCHX-tr;Xerrno.EPROTONOSUPPORTr;(jjXAhttp://docs.python.org/3/library/errno.html#errno.EPROTONOSUPPORTX-tr;X!sunau.AUDIO_FILE_ENCODING_MULAW_8r;(jjXMhttp://docs.python.org/3/library/sunau.html#sunau.AUDIO_FILE_ENCODING_MULAW_8X-tr;X%winreg.REG_RESOURCE_REQUIREMENTS_LISTr;(jjXRhttp://docs.python.org/3/library/winreg.html#winreg.REG_RESOURCE_REQUIREMENTS_LISTX-tr;Xtarfile.USTAR_FORMATr;(jjXBhttp://docs.python.org/3/library/tarfile.html#tarfile.USTAR_FORMATX-tr;Xtoken.ERRORTOKENr;(jjX<http://docs.python.org/3/library/token.html#token.ERRORTOKENX-tr;Xwinreg.REG_DWORD_BIG_ENDIANr;(jjXHhttp://docs.python.org/3/library/winreg.html#winreg.REG_DWORD_BIG_ENDIANX-tr;Xio.DEFAULT_BUFFER_SIZEr;(jjX?http://docs.python.org/3/library/io.html#io.DEFAULT_BUFFER_SIZEX-tr;Xtoken.ELLIPSISr;(jjX:http://docs.python.org/3/library/token.html#token.ELLIPSISX-tr;Xweakref.ReferenceTyper;(jjXChttp://docs.python.org/3/library/weakref.html#weakref.ReferenceTypeX-tr;Xdecimal.MIN_EMINr;(jjX>http://docs.python.org/3/library/decimal.html#decimal.MIN_EMINX-tr;Xos.SCHED_RESET_ON_FORKr;(jjX?http://docs.python.org/3/library/os.html#os.SCHED_RESET_ON_FORKX-tr;Xsys.path_importer_cacher;(jjXAhttp://docs.python.org/3/library/sys.html#sys.path_importer_cacheX-tr;Xdistutils.sysconfig.PREFIXr;(jjXIhttp://docs.python.org/3/distutils/apiref.html#distutils.sysconfig.PREFIXX-tr;Xmimetypes.knownfilesr;(jjXDhttp://docs.python.org/3/library/mimetypes.html#mimetypes.knownfilesX-tr;Xwinreg.REG_DWORD_LITTLE_ENDIANr;(jjXKhttp://docs.python.org/3/library/winreg.html#winreg.REG_DWORD_LITTLE_ENDIANX-tr;Xos.SCHED_OTHERr;(jjX7http://docs.python.org/3/library/os.html#os.SCHED_OTHERX-tr;X stat.ST_UIDr;(jjX6http://docs.python.org/3/library/stat.html#stat.ST_UIDX-tr;Xunittest.mock.DEFAULTr;(jjXIhttp://docs.python.org/3/library/unittest.mock.html#unittest.mock.DEFAULTX-tr;Xhtml.entities.html5r;(jjXGhttp://docs.python.org/3/library/html.entities.html#html.entities.html5X-tr;Xtoken.MINEQUALr;(jjX:http://docs.python.org/3/library/token.html#token.MINEQUALX-tr;X string.digitsr;(jjX:http://docs.python.org/3/library/string.html#string.digitsX-tr;Xsqlite3.PARSE_DECLTYPESr;(jjXEhttp://docs.python.org/3/library/sqlite3.html#sqlite3.PARSE_DECLTYPESX-tr;X stat.ST_MTIMEr;(jjX8http://docs.python.org/3/library/stat.html#stat.ST_MTIMEX-tr;X errno.EPIPEr;(jjX7http://docs.python.org/3/library/errno.html#errno.EPIPEX-tr;Xwinreg.HKEY_PERFORMANCE_DATAr;(jjXIhttp://docs.python.org/3/library/winreg.html#winreg.HKEY_PERFORMANCE_DATAX-tr;X errno.EMLINKr;(jjX8http://docs.python.org/3/library/errno.html#errno.EMLINKX-tr;X dis.hasjabsr;(jjX5http://docs.python.org/3/library/dis.html#dis.hasjabsX-tr;X posix.environr;(jjX9http://docs.python.org/3/library/posix.html#posix.environX-tr;Xwinreg.KEY_WOW64_32KEYr;(jjXChttp://docs.python.org/3/library/winreg.html#winreg.KEY_WOW64_32KEYX-tr;X imp.C_BUILTINr;(jjX7http://docs.python.org/3/library/imp.html#imp.C_BUILTINX-tr;XPy_TPFLAGS_HEAPTYPEr;(jjX?http://docs.python.org/3/c-api/typeobj.html#Py_TPFLAGS_HEAPTYPEX-tr;Xtoken.OPr;(jjX4http://docs.python.org/3/library/token.html#token.OPX-tr;X METH_KEYWORDSr;(jjX<http://docs.python.org/3/c-api/structures.html#METH_KEYWORDSX-tr;X os.O_NOFOLLOWr;(jjX6http://docs.python.org/3/library/os.html#os.O_NOFOLLOWX-tr;X stat.S_IROTHr;(jjX7http://docs.python.org/3/library/stat.html#stat.S_IROTHX-tr;Xssl.VERIFY_CRL_CHECK_CHAINr;(jjXDhttp://docs.python.org/3/library/ssl.html#ssl.VERIFY_CRL_CHECK_CHAINX-tr;X csv.QUOTE_ALLr;(jjX7http://docs.python.org/3/library/csv.html#csv.QUOTE_ALLX-tr;Xre.Ar;(jjX-http://docs.python.org/3/library/re.html#re.AX-tr;Xxml.dom.XML_NAMESPACEr;(jjXChttp://docs.python.org/3/library/xml.dom.html#xml.dom.XML_NAMESPACEX-tr;Xpathlib.PurePath.parentsr;(jjXFhttp://docs.python.org/3/library/pathlib.html#pathlib.PurePath.parentsX-tr;Xlicenser;(jjX7http://docs.python.org/3/library/constants.html#licenseX-tr;Xre.Ir;(jjX-http://docs.python.org/3/library/re.html#re.IX-tr;Xerrno.ENOTSOCKr;(jjX:http://docs.python.org/3/library/errno.html#errno.ENOTSOCKX-tr;Xzipfile.ZIP_BZIP2r;(jjX?http://docs.python.org/3/library/zipfile.html#zipfile.ZIP_BZIP2X-tr;Xre.Mr;(jjX-http://docs.python.org/3/library/re.html#re.MX-tr;Xsocket.SocketTyper;(jjX>http://docs.python.org/3/library/socket.html#socket.SocketTypeX-tr;Xtabnanny.filename_onlyr;(jjXEhttp://docs.python.org/3/library/tabnanny.html#tabnanny.filename_onlyX-tr;Xtoken.NOTEQUALr;(jjX:http://docs.python.org/3/library/token.html#token.NOTEQUALX-tr;Xhtml.entities.entitydefsr;(jjXLhttp://docs.python.org/3/library/html.entities.html#html.entities.entitydefsX-tr;Xtime.CLOCK_PROCESS_CPUTIME_IDr;(jjXHhttp://docs.python.org/3/library/time.html#time.CLOCK_PROCESS_CPUTIME_IDX-tr;Xwinsound.SND_MEMORYr;(jjXBhttp://docs.python.org/3/library/winsound.html#winsound.SND_MEMORYX-tr;X3xml.parsers.expat.errors.XML_ERROR_UNKNOWN_ENCODINGr;(jjXahttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_UNKNOWN_ENCODINGX-tr;X token.EQEQUALr;(jjX9http://docs.python.org/3/library/token.html#token.EQEQUALX-tr;Xlocale.LC_CTYPEr;(jjX<http://docs.python.org/3/library/locale.html#locale.LC_CTYPEX-tr;X token.COMMAr;(jjX7http://docs.python.org/3/library/token.html#token.COMMAX-tr;X os.O_RDWRr;(jjX2http://docs.python.org/3/library/os.html#os.O_RDWRX-tr;X os.pardirr;(jjX2http://docs.python.org/3/library/os.html#os.pardirX-tr<X5xml.parsers.expat.errors.XML_ERROR_UNDECLARING_PREFIXr<(jjXchttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_UNDECLARING_PREFIXX-tr<Xos.O_TEMPORARYr<(jjX7http://docs.python.org/3/library/os.html#os.O_TEMPORARYX-tr<Xos.supports_effective_idsr<(jjXBhttp://docs.python.org/3/library/os.html#os.supports_effective_idsX-tr<Xsqlite3.versionr<(jjX=http://docs.python.org/3/library/sqlite3.html#sqlite3.versionX-tr<X curses.OKr <(jjX6http://docs.python.org/3/library/curses.html#curses.OKX-tr <Xgc.DEBUG_STATSr <(jjX7http://docs.python.org/3/library/gc.html#gc.DEBUG_STATSX-tr <Xssl.OP_NO_SSLv3r <(jjX9http://docs.python.org/3/library/ssl.html#ssl.OP_NO_SSLv3X-tr<Xssl.OP_NO_SSLv2r<(jjX9http://docs.python.org/3/library/ssl.html#ssl.OP_NO_SSLv2X-tr<Xpathlib.PurePath.anchorr<(jjXEhttp://docs.python.org/3/library/pathlib.html#pathlib.PurePath.anchorX-tr<X time.daylightr<(jjX8http://docs.python.org/3/library/time.html#time.daylightX-tr<Xquitr<(jjX4http://docs.python.org/3/library/constants.html#quitX-tr<Xssl.OP_NO_COMPRESSIONr<(jjX?http://docs.python.org/3/library/ssl.html#ssl.OP_NO_COMPRESSIONX-tr<Xlocale.ERA_T_FMTr<(jjX=http://docs.python.org/3/library/locale.html#locale.ERA_T_FMTX-tr<Xsubprocess.STD_INPUT_HANDLEr<(jjXLhttp://docs.python.org/3/library/subprocess.html#subprocess.STD_INPUT_HANDLEX-tr<X errno.EUSERSr<(jjX8http://docs.python.org/3/library/errno.html#errno.EUSERSX-tr<X errno.ELIBBADr<(jjX9http://docs.python.org/3/library/errno.html#errno.ELIBBADX-tr <Xwinsound.SND_NODEFAULTr!<(jjXEhttp://docs.python.org/3/library/winsound.html#winsound.SND_NODEFAULTX-tr"<X0xml.parsers.expat.errors.XML_ERROR_INVALID_TOKENr#<(jjX^http://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_INVALID_TOKENX-tr$<Xunittest.mock.sentinelr%<(jjXJhttp://docs.python.org/3/library/unittest.mock.html#unittest.mock.sentinelX-tr&<X sys.winverr'<(jjX4http://docs.python.org/3/library/sys.html#sys.winverX-tr(<Xunittest.mock.FILTER_DIRr)<(jjXLhttp://docs.python.org/3/library/unittest.mock.html#unittest.mock.FILTER_DIRX-tr*<Xunicodedata.unidata_versionr+<(jjXMhttp://docs.python.org/3/library/unicodedata.html#unicodedata.unidata_versionX-tr,<X sunau.AUDIO_FILE_ENCODING_ALAW_8r-<(jjXLhttp://docs.python.org/3/library/sunau.html#sunau.AUDIO_FILE_ENCODING_ALAW_8X-tr.<Xerrno.ELIBEXECr/<(jjX:http://docs.python.org/3/library/errno.html#errno.ELIBEXECX-tr0<X ssl.CERT_NONEr1<(jjX7http://docs.python.org/3/library/ssl.html#ssl.CERT_NONEX-tr2<X socket.PF_CANr3<(jjX:http://docs.python.org/3/library/socket.html#socket.PF_CANX-tr4<X os.O_WRONLYr5<(jjX4http://docs.python.org/3/library/os.html#os.O_WRONLYX-tr6<Xcrypt.METHOD_SHA256r7<(jjX?http://docs.python.org/3/library/crypt.html#crypt.METHOD_SHA256X-tr8<Xos.PRIO_PROCESSr9<(jjX8http://docs.python.org/3/library/os.html#os.PRIO_PROCESSX-tr:<X errno.ENOMSGr;<(jjX8http://docs.python.org/3/library/errno.html#errno.ENOMSGX-tr<<Xresource.RUSAGE_BOTHr=<(jjXChttp://docs.python.org/3/library/resource.html#resource.RUSAGE_BOTHX-tr><X token.MINUSr?<(jjX7http://docs.python.org/3/library/token.html#token.MINUSX-tr@<Xtoken.ATrA<(jjX4http://docs.python.org/3/library/token.html#token.ATX-trB<Xstat.SF_APPENDrC<(jjX9http://docs.python.org/3/library/stat.html#stat.SF_APPENDX-trD<Xerrno.ENOTUNIQrE<(jjX:http://docs.python.org/3/library/errno.html#errno.ENOTUNIQX-trF<Xos.RTLD_NODELETErG<(jjX9http://docs.python.org/3/library/os.html#os.RTLD_NODELETEX-trH<X,xml.parsers.expat.errors.XML_ERROR_NO_MEMORYrI<(jjXZhttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_NO_MEMORYX-trJ<Xresource.RLIMIT_MEMLOCKrK<(jjXFhttp://docs.python.org/3/library/resource.html#resource.RLIMIT_MEMLOCKX-trL<Xstring.ascii_uppercaserM<(jjXChttp://docs.python.org/3/library/string.html#string.ascii_uppercaseX-trN<Xhtml.entities.name2codepointrO<(jjXPhttp://docs.python.org/3/library/html.entities.html#html.entities.name2codepointX-trP<Xuuid.RESERVED_NCSrQ<(jjX<http://docs.python.org/3/library/uuid.html#uuid.RESERVED_NCSX-trR<X"sunau.AUDIO_FILE_ENCODING_LINEAR_8rS<(jjXNhttp://docs.python.org/3/library/sunau.html#sunau.AUDIO_FILE_ENCODING_LINEAR_8X-trT<Xwinreg.HKEY_USERSrU<(jjX>http://docs.python.org/3/library/winreg.html#winreg.HKEY_USERSX-trV<X errno.ENOTDIRrW<(jjX9http://docs.python.org/3/library/errno.html#errno.ENOTDIRX-trX<Xsubprocess.DEVNULLrY<(jjXChttp://docs.python.org/3/library/subprocess.html#subprocess.DEVNULLX-trZ<X msilib.textr[<(jjX8http://docs.python.org/3/library/msilib.html#msilib.textX-tr\<Xtoken.PLUSEQUALr]<(jjX;http://docs.python.org/3/library/token.html#token.PLUSEQUALX-tr^<Xresource.RLIMIT_COREr_<(jjXChttp://docs.python.org/3/library/resource.html#resource.RLIMIT_COREX-tr`<Xstat.SF_NOUNLINKra<(jjX;http://docs.python.org/3/library/stat.html#stat.SF_NOUNLINKX-trb<Xdecimal.ROUND_HALF_DOWNrc<(jjXEhttp://docs.python.org/3/library/decimal.html#decimal.ROUND_HALF_DOWNX-trd<Xdoctest.REPORT_NDIFFre<(jjXBhttp://docs.python.org/3/library/doctest.html#doctest.REPORT_NDIFFX-trf<X reprlib.aReprrg<(jjX;http://docs.python.org/3/library/reprlib.html#reprlib.aReprX-trh<X errno.EXFULLri<(jjX8http://docs.python.org/3/library/errno.html#errno.EXFULLX-trj<X os.O_PATHrk<(jjX2http://docs.python.org/3/library/os.html#os.O_PATHX-trl<Xresource.RLIMIT_FSIZErm<(jjXDhttp://docs.python.org/3/library/resource.html#resource.RLIMIT_FSIZEX-trn<Xwinsound.SND_NOWAITro<(jjXBhttp://docs.python.org/3/library/winsound.html#winsound.SND_NOWAITX-trp<Xerrno.EL2NSYNCrq<(jjX:http://docs.python.org/3/library/errno.html#errno.EL2NSYNCX-trr<Xre.Lrs<(jjX-http://docs.python.org/3/library/re.html#re.LX-trt<Xsys.float_repr_styleru<(jjX>http://docs.python.org/3/library/sys.html#sys.float_repr_styleX-trv<Xos.EX_NOTFOUNDrw<(jjX7http://docs.python.org/3/library/os.html#os.EX_NOTFOUNDX-trx<X os.EX_NOUSERry<(jjX5http://docs.python.org/3/library/os.html#os.EX_NOUSERX-trz<X+xml.parsers.expat.errors.XML_ERROR_XML_DECLr{<(jjXYhttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_XML_DECLX-tr|<X stat.S_IWOTHr}<(jjX7http://docs.python.org/3/library/stat.html#stat.S_IWOTHX-tr~<Xcalendar.month_namer<(jjXBhttp://docs.python.org/3/library/calendar.html#calendar.month_nameX-tr<Xtypes.GeneratorTyper<(jjX?http://docs.python.org/3/library/types.html#types.GeneratorTypeX-tr<XPy_TPFLAGS_HAVE_FINALIZEr<(jjXDhttp://docs.python.org/3/c-api/typeobj.html#Py_TPFLAGS_HAVE_FINALIZEX-tr<X errno.ENOBUFSr<(jjX9http://docs.python.org/3/library/errno.html#errno.ENOBUFSX-tr<Xlocale.RADIXCHARr<(jjX=http://docs.python.org/3/library/locale.html#locale.RADIXCHARX-tr<Xos.O_NOINHERITr<(jjX7http://docs.python.org/3/library/os.html#os.O_NOINHERITX-tr<Xerrno.EPROTOTYPEr<(jjX<http://docs.python.org/3/library/errno.html#errno.EPROTOTYPEX-tr<Xre.Sr<(jjX-http://docs.python.org/3/library/re.html#re.SX-tr<Xstat.UF_COMPRESSEDr<(jjX=http://docs.python.org/3/library/stat.html#stat.UF_COMPRESSEDX-tr<Xresource.RLIMIT_RSSr<(jjXBhttp://docs.python.org/3/library/resource.html#resource.RLIMIT_RSSX-tr<X os.PRIO_PGRPr<(jjX5http://docs.python.org/3/library/os.html#os.PRIO_PGRPX-tr<X sys._xoptionsr<(jjX7http://docs.python.org/3/library/sys.html#sys._xoptionsX-tr<Xresource.RLIMIT_ASr<(jjXAhttp://docs.python.org/3/library/resource.html#resource.RLIMIT_ASX-tr<Xtoken.LESSEQUALr<(jjX;http://docs.python.org/3/library/token.html#token.LESSEQUALX-tr<X METH_COEXISTr<(jjX;http://docs.python.org/3/c-api/structures.html#METH_COEXISTX-tr<X stat.ST_GIDr<(jjX6http://docs.python.org/3/library/stat.html#stat.ST_GIDX-tr<Xssl.VERIFY_X509_STRICTr<(jjX@http://docs.python.org/3/library/ssl.html#ssl.VERIFY_X509_STRICTX-tr<Xwinreg.REG_MULTI_SZr<(jjX@http://docs.python.org/3/library/winreg.html#winreg.REG_MULTI_SZX-tr<X os.SCHED_IDLEr<(jjX6http://docs.python.org/3/library/os.html#os.SCHED_IDLEX-tr<Xdoctest.DONT_ACCEPT_TRUE_FOR_1r<(jjXLhttp://docs.python.org/3/library/doctest.html#doctest.DONT_ACCEPT_TRUE_FOR_1X-tr<Xdis.Bytecode.first_liner<(jjXAhttp://docs.python.org/3/library/dis.html#dis.Bytecode.first_lineX-tr<Xcurses.versionr<(jjX;http://docs.python.org/3/library/curses.html#curses.versionX-tr<Xwinreg.KEY_CREATE_LINKr<(jjXChttp://docs.python.org/3/library/winreg.html#winreg.KEY_CREATE_LINKX-tr<X/xml.parsers.expat.errors.XML_ERROR_BAD_CHAR_REFr<(jjX]http://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_BAD_CHAR_REFX-tr<X#xml.sax.handler.property_xml_stringr<(jjXYhttp://docs.python.org/3/library/xml.sax.handler.html#xml.sax.handler.property_xml_stringX-tr<Xsignal.SIG_BLOCKr<(jjX=http://docs.python.org/3/library/signal.html#signal.SIG_BLOCKX-tr<Xtypes.LambdaTyper<(jjX<http://docs.python.org/3/library/types.html#types.LambdaTypeX-tr<Xre.Xr<(jjX-http://docs.python.org/3/library/re.html#re.XX-tr<Xsqlite3.PARSE_COLNAMESr<(jjXDhttp://docs.python.org/3/library/sqlite3.html#sqlite3.PARSE_COLNAMESX-tr<X;xml.parsers.expat.errors.XML_ERROR_FEATURE_REQUIRES_XML_DTDr<(jjXihttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_FEATURE_REQUIRES_XML_DTDX-tr<X sys.stderrr<(jjX4http://docs.python.org/3/library/sys.html#sys.stderrX-tr<Xpathlib.PurePath.suffixr<(jjXEhttp://docs.python.org/3/library/pathlib.html#pathlib.PurePath.suffixX-tr<Xerrno.EWOULDBLOCKr<(jjX=http://docs.python.org/3/library/errno.html#errno.EWOULDBLOCKX-tr<Xerrno.ESHUTDOWNr<(jjX;http://docs.python.org/3/library/errno.html#errno.ESHUTDOWNX-tr<Xsys.tracebacklimitr<(jjX<http://docs.python.org/3/library/sys.html#sys.tracebacklimitX-tr<Xsite.USER_BASEr<(jjX9http://docs.python.org/3/library/site.html#site.USER_BASEX-tr<X errno.EIOr<(jjX5http://docs.python.org/3/library/errno.html#errno.EIOX-tr<X errno.EBFONTr<(jjX8http://docs.python.org/3/library/errno.html#errno.EBFONTX-tr<X stat.ST_MODEr<(jjX7http://docs.python.org/3/library/stat.html#stat.ST_MODEX-tr<Xsys.ps1r<(jjX1http://docs.python.org/3/library/sys.html#sys.ps1X-tr<Xlocale.LC_MONETARYr<(jjX?http://docs.python.org/3/library/locale.html#locale.LC_MONETARYX-tr<X os.SEEK_ENDr<(jjX4http://docs.python.org/3/library/os.html#os.SEEK_ENDX-tr<Xsubprocess.SW_HIDEr<(jjXChttp://docs.python.org/3/library/subprocess.html#subprocess.SW_HIDEX-tr<Xstring.hexdigitsr<(jjX=http://docs.python.org/3/library/string.html#string.hexdigitsX-tr<X errno.ESPIPEr<(jjX8http://docs.python.org/3/library/errno.html#errno.ESPIPEX-tr<Xmarshal.versionr<(jjX=http://docs.python.org/3/library/marshal.html#marshal.versionX-tr<X errno.ENOMEMr<(jjX8http://docs.python.org/3/library/errno.html#errno.ENOMEMX-tr<Xresource.RUSAGE_SELFr<(jjXChttp://docs.python.org/3/library/resource.html#resource.RUSAGE_SELFX-tr<XPy_TPFLAGS_BYTES_SUBCLASSr<(jjXEhttp://docs.python.org/3/c-api/typeobj.html#Py_TPFLAGS_BYTES_SUBCLASSX-tr<Xtest.support.is_jythonr<(jjXAhttp://docs.python.org/3/library/test.html#test.support.is_jythonX-tr<X os.EX_NOPERMr<(jjX5http://docs.python.org/3/library/os.html#os.EX_NOPERMX-tr<Xresource.RLIM_INFINITYr<(jjXEhttp://docs.python.org/3/library/resource.html#resource.RLIM_INFINITYX-tr<Xtoken.VBAREQUALr<(jjX;http://docs.python.org/3/library/token.html#token.VBAREQUALX-tr<Xtarfile.PAX_FORMATr<(jjX@http://docs.python.org/3/library/tarfile.html#tarfile.PAX_FORMATX-tr<X os.O_SYNCr<(jjX2http://docs.python.org/3/library/os.html#os.O_SYNCX-tr<X token.PERCENTr<(jjX9http://docs.python.org/3/library/token.html#token.PERCENTX-tr<Xssl.OP_SINGLE_DH_USEr<(jjX>http://docs.python.org/3/library/ssl.html#ssl.OP_SINGLE_DH_USEX-tr<Xerrno.ECONNREFUSEDr<(jjX>http://docs.python.org/3/library/errno.html#errno.ECONNREFUSEDX-tr<Xftplib.all_errorsr<(jjX>http://docs.python.org/3/library/ftplib.html#ftplib.all_errorsX-tr<Xerrno.ENOTEMPTYr<(jjX;http://docs.python.org/3/library/errno.html#errno.ENOTEMPTYX-tr<X os.O_DSYNCr<(jjX3http://docs.python.org/3/library/os.html#os.O_DSYNCX-tr<Xstat.SF_SNAPSHOTr<(jjX;http://docs.python.org/3/library/stat.html#stat.SF_SNAPSHOTX-tr<Xsqlite3.version_infor<(jjXBhttp://docs.python.org/3/library/sqlite3.html#sqlite3.version_infoX-tr<Xcrypt.METHOD_SHA512r<(jjX?http://docs.python.org/3/library/crypt.html#crypt.METHOD_SHA512X-tr<X os.EX_NOINPUTr<(jjX6http://docs.python.org/3/library/os.html#os.EX_NOINPUTX-tr=X dis.opnamer=(jjX4http://docs.python.org/3/library/dis.html#dis.opnameX-tr=X errno.ENOANOr=(jjX8http://docs.python.org/3/library/errno.html#errno.ENOANOX-tr=Xdecimal.MIN_ETINYr=(jjX?http://docs.python.org/3/library/decimal.html#decimal.MIN_ETINYX-tr=X METH_CLASSr=(jjX9http://docs.python.org/3/c-api/structures.html#METH_CLASSX-tr=Xdatetime.MINYEARr =(jjX?http://docs.python.org/3/library/datetime.html#datetime.MINYEARX-tr =Xerrno.EPFNOSUPPORTr =(jjX>http://docs.python.org/3/library/errno.html#errno.EPFNOSUPPORTX-tr =Xtoken.AMPEREQUALr =(jjX<http://docs.python.org/3/library/token.html#token.AMPEREQUALX-tr=Xresource.RLIMIT_SWAPr=(jjXChttp://docs.python.org/3/library/resource.html#resource.RLIMIT_SWAPX-tr=Xstring.whitespacer=(jjX>http://docs.python.org/3/library/string.html#string.whitespaceX-tr=Xtoken.CIRCUMFLEXr=(jjX<http://docs.python.org/3/library/token.html#token.CIRCUMFLEXX-tr=Xos.EX_PROTOCOLr=(jjX7http://docs.python.org/3/library/os.html#os.EX_PROTOCOLX-tr=Xsignal.ITIMER_PROFr=(jjX?http://docs.python.org/3/library/signal.html#signal.ITIMER_PROFX-tr=X time.timezoner=(jjX8http://docs.python.org/3/library/time.html#time.timezoneX-tr=X errno.ENOEXECr=(jjX9http://docs.python.org/3/library/errno.html#errno.ENOEXECX-tr=XCxml.parsers.expat.errors.XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSINGr=(jjXqhttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSINGX-tr=Xos.RTLD_NOLOADr=(jjX7http://docs.python.org/3/library/os.html#os.RTLD_NOLOADX-tr =Xwinsound.SND_ALIASr!=(jjXAhttp://docs.python.org/3/library/winsound.html#winsound.SND_ALIASX-tr"=Xos.POSIX_FADV_WILLNEEDr#=(jjX?http://docs.python.org/3/library/os.html#os.POSIX_FADV_WILLNEEDX-tr$=X sys.last_typer%=(jjX7http://docs.python.org/3/library/sys.html#sys.last_typeX-tr&=X stat.S_ISUIDr'=(jjX7http://docs.python.org/3/library/stat.html#stat.S_ISUIDX-tr(=X errno.EAGAINr)=(jjX8http://docs.python.org/3/library/errno.html#errno.EAGAINX-tr*=Xsite.ENABLE_USER_SITEr+=(jjX@http://docs.python.org/3/library/site.html#site.ENABLE_USER_SITEX-tr,=X stat.S_IFPORTr-=(jjX8http://docs.python.org/3/library/stat.html#stat.S_IFPORTX-tr.=Xsqlite3.sqlite_versionr/=(jjXDhttp://docs.python.org/3/library/sqlite3.html#sqlite3.sqlite_versionX-tr0=Xwinsound.MB_ICONEXCLAMATIONr1=(jjXJhttp://docs.python.org/3/library/winsound.html#winsound.MB_ICONEXCLAMATIONX-tr2=Xtest.support.verboser3=(jjX?http://docs.python.org/3/library/test.html#test.support.verboseX-tr4=X os.EX_OSERRr5=(jjX4http://docs.python.org/3/library/os.html#os.EX_OSERRX-tr6=Xdecimal.ROUND_UPr7=(jjX>http://docs.python.org/3/library/decimal.html#decimal.ROUND_UPX-tr8=X os.O_NONBLOCKr9=(jjX6http://docs.python.org/3/library/os.html#os.O_NONBLOCKX-tr:=Xresource.RLIMIT_RTTIMEr;=(jjXEhttp://docs.python.org/3/library/resource.html#resource.RLIMIT_RTTIMEX-tr<=Xerrno.ESOCKTNOSUPPORTr==(jjXAhttp://docs.python.org/3/library/errno.html#errno.ESOCKTNOSUPPORTX-tr>=X errno.EPERMr?=(jjX7http://docs.python.org/3/library/errno.html#errno.EPERMX-tr@=X7xml.parsers.expat.errors.XML_ERROR_RECURSIVE_ENTITY_REFrA=(jjXehttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_RECURSIVE_ENTITY_REFX-trB=Xresource.RLIMIT_NPTSrC=(jjXChttp://docs.python.org/3/library/resource.html#resource.RLIMIT_NPTSX-trD=Xzipfile.ZIP_LZMArE=(jjX>http://docs.python.org/3/library/zipfile.html#zipfile.ZIP_LZMAX-trF=X os.F_TLOCKrG=(jjX3http://docs.python.org/3/library/os.html#os.F_TLOCKX-trH=Xtypes.CodeTyperI=(jjX:http://docs.python.org/3/library/types.html#types.CodeTypeX-trJ=X stat.ST_INOrK=(jjX6http://docs.python.org/3/library/stat.html#stat.ST_INOX-trL=Xpathlib.PurePath.namerM=(jjXChttp://docs.python.org/3/library/pathlib.html#pathlib.PurePath.nameX-trN=Xdecimal.ROUND_DOWNrO=(jjX@http://docs.python.org/3/library/decimal.html#decimal.ROUND_DOWNX-trP=X ssl.HAS_SNIrQ=(jjX5http://docs.python.org/3/library/ssl.html#ssl.HAS_SNIX-trR=Xdecimal.ROUND_CEILINGrS=(jjXChttp://docs.python.org/3/library/decimal.html#decimal.ROUND_CEILINGX-trT=X errno.EMFILErU=(jjX8http://docs.python.org/3/library/errno.html#errno.EMFILEX-trV=Xuuid.NAMESPACE_OIDrW=(jjX=http://docs.python.org/3/library/uuid.html#uuid.NAMESPACE_OIDX-trX=X gc.callbacksrY=(jjX5http://docs.python.org/3/library/gc.html#gc.callbacksX-trZ=Xsys.executabler[=(jjX8http://docs.python.org/3/library/sys.html#sys.executableX-tr\=X,xml.parsers.expat.errors.XML_ERROR_TEXT_DECLr]=(jjXZhttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_TEXT_DECLX-tr^=Xresource.RUSAGE_CHILDRENr_=(jjXGhttp://docs.python.org/3/library/resource.html#resource.RUSAGE_CHILDRENX-tr`=Xwinreg.HKEY_CLASSES_ROOTra=(jjXEhttp://docs.python.org/3/library/winreg.html#winreg.HKEY_CLASSES_ROOTX-trb=Xzipfile.ZIP_DEFLATEDrc=(jjXBhttp://docs.python.org/3/library/zipfile.html#zipfile.ZIP_DEFLATEDX-trd=Xsocket.AF_LINKre=(jjX;http://docs.python.org/3/library/socket.html#socket.AF_LINKX-trf=X errno.ENOLINKrg=(jjX9http://docs.python.org/3/library/errno.html#errno.ENOLINKX-trh=X#sunau.AUDIO_FILE_ENCODING_LINEAR_32ri=(jjXOhttp://docs.python.org/3/library/sunau.html#sunau.AUDIO_FILE_ENCODING_LINEAR_32X-trj=Xos.R_OKrk=(jjX0http://docs.python.org/3/library/os.html#os.R_OKX-trl=X errno.EBADSLTrm=(jjX9http://docs.python.org/3/library/errno.html#errno.EBADSLTX-trn=Xsys.hexversionro=(jjX8http://docs.python.org/3/library/sys.html#sys.hexversionX-trp=Xuuid.NAMESPACE_URLrq=(jjX=http://docs.python.org/3/library/uuid.html#uuid.NAMESPACE_URLX-trr=X errno.ESRCHrs=(jjX7http://docs.python.org/3/library/errno.html#errno.ESRCHX-trt=X errno.ELIBMAXru=(jjX9http://docs.python.org/3/library/errno.html#errno.ELIBMAXX-trv=Xtime.CLOCK_MONOTONIC_RAWrw=(jjXChttp://docs.python.org/3/library/time.html#time.CLOCK_MONOTONIC_RAWX-trx=Xstat.UF_HIDDENry=(jjX9http://docs.python.org/3/library/stat.html#stat.UF_HIDDENX-trz=Xssl.VERIFY_DEFAULTr{=(jjX<http://docs.python.org/3/library/ssl.html#ssl.VERIFY_DEFAULTX-tr|=Xsys.float_infor}=(jjX8http://docs.python.org/3/library/sys.html#sys.float_infoX-tr~=X stat.S_IFSOCKr=(jjX8http://docs.python.org/3/library/stat.html#stat.S_IFSOCKX-tr=XPy_TPFLAGS_DEFAULTr=(jjX>http://docs.python.org/3/c-api/typeobj.html#Py_TPFLAGS_DEFAULTX-tr=Xsys.base_prefixr=(jjX9http://docs.python.org/3/library/sys.html#sys.base_prefixX-tr=Xos.supports_fdr=(jjX7http://docs.python.org/3/library/os.html#os.supports_fdX-tr=Xssl.Purpose.CLIENT_AUTHr=(jjXAhttp://docs.python.org/3/library/ssl.html#ssl.Purpose.CLIENT_AUTHX-tr=X$xml.sax.handler.feature_external_pesr=(jjXZhttp://docs.python.org/3/library/xml.sax.handler.html#xml.sax.handler.feature_external_pesX-tr=Xexitr=(jjX4http://docs.python.org/3/library/constants.html#exitX-tr=X token.DEDENTr=(jjX8http://docs.python.org/3/library/token.html#token.DEDENTX-tr=Xtime.CLOCK_REALTIMEr=(jjX>http://docs.python.org/3/library/time.html#time.CLOCK_REALTIMEX-tr=Xdis.hascomparer=(jjX8http://docs.python.org/3/library/dis.html#dis.hascompareX-tr=Xstring.printabler=(jjX=http://docs.python.org/3/library/string.html#string.printableX-tr=Xstat.UF_OPAQUEr=(jjX9http://docs.python.org/3/library/stat.html#stat.UF_OPAQUEX-tr=Xresource.RLIMIT_DATAr=(jjXChttp://docs.python.org/3/library/resource.html#resource.RLIMIT_DATAX-tr=X errno.ENXIOr=(jjX7http://docs.python.org/3/library/errno.html#errno.ENXIOX-tr=Xcrypt.METHOD_MD5r=(jjX<http://docs.python.org/3/library/crypt.html#crypt.METHOD_MD5X-tr=X#winreg.REG_FULL_RESOURCE_DESCRIPTORr=(jjXPhttp://docs.python.org/3/library/winreg.html#winreg.REG_FULL_RESOURCE_DESCRIPTORX-tr=XPy_TPFLAGS_UNICODE_SUBCLASSr=(jjXGhttp://docs.python.org/3/c-api/typeobj.html#Py_TPFLAGS_UNICODE_SUBCLASSX-tr=X3xml.parsers.expat.errors.XML_ERROR_MISPLACED_XML_PIr=(jjXahttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_MISPLACED_XML_PIX-tr=Xcreditsr=(jjX7http://docs.python.org/3/library/constants.html#creditsX-tr=Xsocket.SOCK_NONBLOCKr=(jjXAhttp://docs.python.org/3/library/socket.html#socket.SOCK_NONBLOCKX-tr=X+xml.parsers.expat.errors.XML_ERROR_PUBLICIDr=(jjXYhttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_PUBLICIDX-tr=X token.RBRACEr=(jjX8http://docs.python.org/3/library/token.html#token.RBRACEX-tr=Xwinreg.HKEY_CURRENT_CONFIGr=(jjXGhttp://docs.python.org/3/library/winreg.html#winreg.HKEY_CURRENT_CONFIGX-tr=X sys.abiflagsr=(jjX6http://docs.python.org/3/library/sys.html#sys.abiflagsX-tr=X errno.ENOSYSr=(jjX8http://docs.python.org/3/library/errno.html#errno.ENOSYSX-tr=X errno.EINTRr=(jjX7http://docs.python.org/3/library/errno.html#errno.EINTRX-tr=Xunicodedata.ucd_3_2_0r=(jjXGhttp://docs.python.org/3/library/unicodedata.html#unicodedata.ucd_3_2_0X-tr=Xemail.policy.HTTPr=(jjXDhttp://docs.python.org/3/library/email.policy.html#email.policy.HTTPX-tr=X%asynchat.async_chat.ac_in_buffer_sizer=(jjXThttp://docs.python.org/3/library/asynchat.html#asynchat.async_chat.ac_in_buffer_sizeX-tr=X os.SEEK_SETr=(jjX4http://docs.python.org/3/library/os.html#os.SEEK_SETX-tr=X dis.cmp_opr=(jjX4http://docs.python.org/3/library/dis.html#dis.cmp_opX-tr=X"xml.sax.handler.feature_namespacesr=(jjXXhttp://docs.python.org/3/library/xml.sax.handler.html#xml.sax.handler.feature_namespacesX-tr=X os.P_NOWAITr=(jjX4http://docs.python.org/3/library/os.html#os.P_NOWAITX-tr=Xsys.maxunicoder=(jjX8http://docs.python.org/3/library/sys.html#sys.maxunicodeX-tr=X os.EX_USAGEr=(jjX4http://docs.python.org/3/library/os.html#os.EX_USAGEX-tr=Xresource.RLIMIT_CPUr=(jjXBhttp://docs.python.org/3/library/resource.html#resource.RLIMIT_CPUX-tr=X sys.stdinr=(jjX3http://docs.python.org/3/library/sys.html#sys.stdinX-tr=Xos.EX_SOFTWAREr=(jjX7http://docs.python.org/3/library/os.html#os.EX_SOFTWAREX-tr=X sys.dllhandler=(jjX7http://docs.python.org/3/library/sys.html#sys.dllhandleX-tr=Xtoken.GREATEREQUALr=(jjX>http://docs.python.org/3/library/token.html#token.GREATEREQUALX-tr=X os.RTLD_NOWr=(jjX4http://docs.python.org/3/library/os.html#os.RTLD_NOWX-tr=X errno.EIDRMr=(jjX7http://docs.python.org/3/library/errno.html#errno.EIDRMX-tr=Ximp.C_EXTENSIONr=(jjX9http://docs.python.org/3/library/imp.html#imp.C_EXTENSIONX-tr=Xsocket.SOCK_RAWr=(jjX<http://docs.python.org/3/library/socket.html#socket.SOCK_RAWX-tr=Xsocket.SOCK_STREAMr=(jjX?http://docs.python.org/3/library/socket.html#socket.SOCK_STREAMX-tr=Xdoctest.COMPARISON_FLAGSr=(jjXFhttp://docs.python.org/3/library/doctest.html#doctest.COMPARISON_FLAGSX-tr=X errno.EEXISTr=(jjX8http://docs.python.org/3/library/errno.html#errno.EEXISTX-tr=X"xml.sax.handler.feature_validationr=(jjXXhttp://docs.python.org/3/library/xml.sax.handler.html#xml.sax.handler.feature_validationX-tr=Xos.CLD_CONTINUEDr=(jjX9http://docs.python.org/3/library/os.html#os.CLD_CONTINUEDX-tr=X dis.hasnamer=(jjX5http://docs.python.org/3/library/dis.html#dis.hasnameX-tr=Xplistlib.FMT_BINARYr=(jjXBhttp://docs.python.org/3/library/plistlib.html#plistlib.FMT_BINARYX-tr=Xmimetypes.suffix_mapr=(jjXDhttp://docs.python.org/3/library/mimetypes.html#mimetypes.suffix_mapX-tr=Xlocale.CHAR_MAXr=(jjX<http://docs.python.org/3/library/locale.html#locale.CHAR_MAXX-tr=Xtokenize.ENCODINGr=(jjX@http://docs.python.org/3/library/tokenize.html#tokenize.ENCODINGX-tr=Xemail.policy.SMTPr=(jjXDhttp://docs.python.org/3/library/email.policy.html#email.policy.SMTPX-tr=Xos.XATTR_SIZE_MAXr=(jjX:http://docs.python.org/3/library/os.html#os.XATTR_SIZE_MAXX-tr=Xdatetime.MAXYEARr=(jjX?http://docs.python.org/3/library/datetime.html#datetime.MAXYEARX-tr=Xkeyword.kwlistr=(jjX<http://docs.python.org/3/library/keyword.html#keyword.kwlistX-tr=Xwinsound.SND_PURGEr=(jjXAhttp://docs.python.org/3/library/winsound.html#winsound.SND_PURGEX-tr=Xos.supports_dir_fdr=(jjX;http://docs.python.org/3/library/os.html#os.supports_dir_fdX-tr=Xssl.CHANNEL_BINDING_TYPESr=(jjXChttp://docs.python.org/3/library/ssl.html#ssl.CHANNEL_BINDING_TYPESX-tr=X os.CLD_EXITEDr=(jjX6http://docs.python.org/3/library/os.html#os.CLD_EXITEDX-tr=Xos.W_OKr=(jjX0http://docs.python.org/3/library/os.html#os.W_OKX-tr=Xdecimal.HAVE_THREADSr=(jjXBhttp://docs.python.org/3/library/decimal.html#decimal.HAVE_THREADSX-tr=X!xml.parsers.expat.errors.messagesr=(jjXOhttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.messagesX-tr>X token.NUMBERr>(jjX8http://docs.python.org/3/library/token.html#token.NUMBERX-tr>Xtypes.BuiltinMethodTyper>(jjXChttp://docs.python.org/3/library/types.html#types.BuiltinMethodTypeX-tr>Xos.POSIX_FADV_DONTNEEDr>(jjX?http://docs.python.org/3/library/os.html#os.POSIX_FADV_DONTNEEDX-tr>Xsys.exec_prefixr>(jjX9http://docs.python.org/3/library/sys.html#sys.exec_prefixX-tr>Xos.XATTR_CREATEr >(jjX8http://docs.python.org/3/library/os.html#os.XATTR_CREATEX-tr >X sys.copyrightr >(jjX7http://docs.python.org/3/library/sys.html#sys.copyrightX-tr >Xsocket.SOCK_DGRAMr >(jjX>http://docs.python.org/3/library/socket.html#socket.SOCK_DGRAMX-tr>Xerrno.EALREADYr>(jjX:http://docs.python.org/3/library/errno.html#errno.EALREADYX-tr>Xerrno.ETOOMANYREFSr>(jjX>http://docs.python.org/3/library/errno.html#errno.ETOOMANYREFSX-tr>Xerrno.EMSGSIZEr>(jjX:http://docs.python.org/3/library/errno.html#errno.EMSGSIZEX-tr>Xpathlib.PurePath.parentr>(jjXEhttp://docs.python.org/3/library/pathlib.html#pathlib.PurePath.parentX-tr>Xos.O_DIRECTORYr>(jjX7http://docs.python.org/3/library/os.html#os.O_DIRECTORYX-tr>Xweakref.CallableProxyTyper>(jjXGhttp://docs.python.org/3/library/weakref.html#weakref.CallableProxyTypeX-tr>X os.RTLD_LAZYr>(jjX5http://docs.python.org/3/library/os.html#os.RTLD_LAZYX-tr>XPy_TPFLAGS_BASE_EXC_SUBCLASSr>(jjXHhttp://docs.python.org/3/c-api/typeobj.html#Py_TPFLAGS_BASE_EXC_SUBCLASSX-tr>Xwinsound.MB_ICONASTERISKr>(jjXGhttp://docs.python.org/3/library/winsound.html#winsound.MB_ICONASTERISKX-tr >Xdoctest.REPORT_CDIFFr!>(jjXBhttp://docs.python.org/3/library/doctest.html#doctest.REPORT_CDIFFX-tr">Xssl.PROTOCOL_SSLv3r#>(jjX<http://docs.python.org/3/library/ssl.html#ssl.PROTOCOL_SSLv3X-tr$>Xssl.PROTOCOL_SSLv2r%>(jjX<http://docs.python.org/3/library/ssl.html#ssl.PROTOCOL_SSLv2X-tr&>X errno.EBADFr'>(jjX7http://docs.python.org/3/library/errno.html#errno.EBADFX-tr(>X errno.EBADEr)>(jjX7http://docs.python.org/3/library/errno.html#errno.EBADEX-tr*>X os.environbr+>(jjX4http://docs.python.org/3/library/os.html#os.environbX-tr,>X os.O_RANDOMr->(jjX4http://docs.python.org/3/library/os.html#os.O_RANDOMX-tr.>Xdbm.ndbm.libraryr/>(jjX:http://docs.python.org/3/library/dbm.html#dbm.ndbm.libraryX-tr0>Xxml.dom.pulldom.default_bufsizer1>(jjXUhttp://docs.python.org/3/library/xml.dom.pulldom.html#xml.dom.pulldom.default_bufsizeX-tr2>X;xml.parsers.expat.errors.XML_ERROR_EXTERNAL_ENTITY_HANDLINGr3>(jjXihttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_EXTERNAL_ENTITY_HANDLINGX-tr4>Xresource.RUSAGE_THREADr5>(jjXEhttp://docs.python.org/3/library/resource.html#resource.RUSAGE_THREADX-tr6>X ssl.HAS_ECDHr7>(jjX6http://docs.python.org/3/library/ssl.html#ssl.HAS_ECDHX-tr8>X errno.ENOSRr9>(jjX7http://docs.python.org/3/library/errno.html#errno.ENOSRX-tr:>X errno.EBADRr;>(jjX7http://docs.python.org/3/library/errno.html#errno.EBADRX-tr<>Xerrno.EAFNOSUPPORTr=>(jjX>http://docs.python.org/3/library/errno.html#errno.EAFNOSUPPORTX-tr>>X token.PLUSr?>(jjX6http://docs.python.org/3/library/token.html#token.PLUSX-tr@>Xlocale.D_T_FMTrA>(jjX;http://docs.python.org/3/library/locale.html#locale.D_T_FMTX-trB>X errno.EROFSrC>(jjX7http://docs.python.org/3/library/errno.html#errno.EROFSX-trD>X codecs.BOM_BErE>(jjX:http://docs.python.org/3/library/codecs.html#codecs.BOM_BEX-trF>Xdis.Instruction.is_jump_targetrG>(jjXHhttp://docs.python.org/3/library/dis.html#dis.Instruction.is_jump_targetX-trH>X os.P_NOWAITOrI>(jjX5http://docs.python.org/3/library/os.html#os.P_NOWAITOX-trJ>Xsubprocess.CREATE_NEW_CONSOLErK>(jjXNhttp://docs.python.org/3/library/subprocess.html#subprocess.CREATE_NEW_CONSOLEX-trL>X sys.stdoutrM>(jjX4http://docs.python.org/3/library/sys.html#sys.stdoutX-trN>Xtoken.CIRCUMFLEXEQUALrO>(jjXAhttp://docs.python.org/3/library/token.html#token.CIRCUMFLEXEQUALX-trP>X errno.EFAULTrQ>(jjX8http://docs.python.org/3/library/errno.html#errno.EFAULTX-trR>X$sunau.AUDIO_FILE_ENCODING_ADPCM_G722rS>(jjXPhttp://docs.python.org/3/library/sunau.html#sunau.AUDIO_FILE_ENCODING_ADPCM_G722X-trT>X token.LPARrU>(jjX6http://docs.python.org/3/library/token.html#token.LPARX-trV>Xsocket.AF_INETrW>(jjX;http://docs.python.org/3/library/socket.html#socket.AF_INETX-trX>X+xml.parsers.expat.errors.XML_ERROR_FINISHEDrY>(jjXYhttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_FINISHEDX-trZ>X token.AMPERr[>(jjX7http://docs.python.org/3/library/token.html#token.AMPERX-tr\>X stat.S_IFDOORr]>(jjX8http://docs.python.org/3/library/stat.html#stat.S_IFDOORX-tr^>X$sunau.AUDIO_FILE_ENCODING_ADPCM_G721r_>(jjXPhttp://docs.python.org/3/library/sunau.html#sunau.AUDIO_FILE_ENCODING_ADPCM_G721X-tr`>Xcurses.ascii.controlnamesra>(jjXLhttp://docs.python.org/3/library/curses.ascii.html#curses.ascii.controlnamesX-trb>Xlocale.LC_MESSAGESrc>(jjX?http://docs.python.org/3/library/locale.html#locale.LC_MESSAGESX-trd>Xpathlib.PurePath.stemre>(jjXChttp://docs.python.org/3/library/pathlib.html#pathlib.PurePath.stemX-trf>Xdoctest.IGNORE_EXCEPTION_DETAILrg>(jjXMhttp://docs.python.org/3/library/doctest.html#doctest.IGNORE_EXCEPTION_DETAILX-trh>Xcodecs.BOM_UTF32_LEri>(jjX@http://docs.python.org/3/library/codecs.html#codecs.BOM_UTF32_LEX-trj>Xerrno.ENETRESETrk>(jjX;http://docs.python.org/3/library/errno.html#errno.ENETRESETX-trl>Xerrno.ENAMETOOLONGrm>(jjX>http://docs.python.org/3/library/errno.html#errno.ENAMETOOLONGX-trn>Xtypes.BuiltinFunctionTypero>(jjXEhttp://docs.python.org/3/library/types.html#types.BuiltinFunctionTypeX-trp>Xsys.api_versionrq>(jjX9http://docs.python.org/3/library/sys.html#sys.api_versionX-trr>X errno.EISNAMrs>(jjX8http://docs.python.org/3/library/errno.html#errno.EISNAMX-trt>X(xml.sax.handler.property_lexical_handlerru>(jjX^http://docs.python.org/3/library/xml.sax.handler.html#xml.sax.handler.property_lexical_handlerX-trv>Xsunau.AUDIO_FILE_MAGICrw>(jjXBhttp://docs.python.org/3/library/sunau.html#sunau.AUDIO_FILE_MAGICX-trx>X stat.S_IFDIRry>(jjX7http://docs.python.org/3/library/stat.html#stat.S_IFDIRX-trz>Ximp.PY_COMPILEDr{>(jjX9http://docs.python.org/3/library/imp.html#imp.PY_COMPILEDX-tr|>Xdecimal.ROUND_HALF_EVENr}>(jjXEhttp://docs.python.org/3/library/decimal.html#decimal.ROUND_HALF_EVENX-tr~>X site.PREFIXESr>(jjX8http://docs.python.org/3/library/site.html#site.PREFIXESX-tr>Xlocale.LC_NUMERICr>(jjX>http://docs.python.org/3/library/locale.html#locale.LC_NUMERICX-tr>X stat.S_IXUSRr>(jjX7http://docs.python.org/3/library/stat.html#stat.S_IXUSRX-tr>Xpickle.HIGHEST_PROTOCOLr>(jjXDhttp://docs.python.org/3/library/pickle.html#pickle.HIGHEST_PROTOCOLX-tr>Xmsvcrt.LK_NBRLCKr>(jjX=http://docs.python.org/3/library/msvcrt.html#msvcrt.LK_NBRLCKX-tr>X sys.prefixr>(jjX4http://docs.python.org/3/library/sys.html#sys.prefixX-tr>Xhttp.client.responsesr>(jjXGhttp://docs.python.org/3/library/http.client.html#http.client.responsesX-tr>X errno.EDOMr>(jjX6http://docs.python.org/3/library/errno.html#errno.EDOMX-tr>Xcodecs.BOM_UTF16r>(jjX=http://docs.python.org/3/library/codecs.html#codecs.BOM_UTF16X-tr>Xsignal.SIG_UNBLOCKr>(jjX?http://docs.python.org/3/library/signal.html#signal.SIG_UNBLOCKX-tr>X token.LSQBr>(jjX6http://docs.python.org/3/library/token.html#token.LSQBX-tr>X1xml.parsers.expat.errors.XML_ERROR_UNBOUND_PREFIXr>(jjX_http://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_UNBOUND_PREFIXX-tr>Xdis.Instruction.argvalr>(jjX@http://docs.python.org/3/library/dis.html#dis.Instruction.argvalX-tr>XPy_TPFLAGS_TUPLE_SUBCLASSr>(jjXEhttp://docs.python.org/3/c-api/typeobj.html#Py_TPFLAGS_TUPLE_SUBCLASSX-tr>Xtoken.SLASHEQUALr>(jjX<http://docs.python.org/3/library/token.html#token.SLASHEQUALX-tr>Xssl.OPENSSL_VERSION_NUMBERr>(jjXDhttp://docs.python.org/3/library/ssl.html#ssl.OPENSSL_VERSION_NUMBERX-tr>Xos.POSIX_FADV_NORMALr>(jjX=http://docs.python.org/3/library/os.html#os.POSIX_FADV_NORMALX-tr>XPy_TPFLAGS_READYINGr>(jjX?http://docs.python.org/3/c-api/typeobj.html#Py_TPFLAGS_READYINGX-tr>Xtoken.DOUBLESLASHEQUALr>(jjXBhttp://docs.python.org/3/library/token.html#token.DOUBLESLASHEQUALX-tr>Xssl.PROTOCOL_TLSv1_1r>(jjX>http://docs.python.org/3/library/ssl.html#ssl.PROTOCOL_TLSv1_1X-tr>Xssl.PROTOCOL_TLSv1_2r>(jjX>http://docs.python.org/3/library/ssl.html#ssl.PROTOCOL_TLSv1_2X-tr>Xmath.er>(jjX1http://docs.python.org/3/library/math.html#math.eX-tr>X errno.ECOMMr>(jjX7http://docs.python.org/3/library/errno.html#errno.ECOMMX-tr>X token.LESSr>(jjX6http://docs.python.org/3/library/token.html#token.LESSX-tr>XPy_TPFLAGS_BASETYPEr>(jjX?http://docs.python.org/3/c-api/typeobj.html#Py_TPFLAGS_BASETYPEX-tr>X ssl.HAS_NPNr>(jjX5http://docs.python.org/3/library/ssl.html#ssl.HAS_NPNX-tr>Xstring.ascii_lowercaser>(jjXChttp://docs.python.org/3/library/string.html#string.ascii_lowercaseX-tr>Xwinsound.MB_ICONQUESTIONr>(jjXGhttp://docs.python.org/3/library/winsound.html#winsound.MB_ICONQUESTIONX-tr>X errno.ESRMNTr>(jjX8http://docs.python.org/3/library/errno.html#errno.ESRMNTX-tr>XPy_TPFLAGS_TYPE_SUBCLASSr>(jjXDhttp://docs.python.org/3/c-api/typeobj.html#Py_TPFLAGS_TYPE_SUBCLASSX-tr>X token.EQUALr>(jjX7http://docs.python.org/3/library/token.html#token.EQUALX-tr>Xerrno.ENETUNREACHr>(jjX=http://docs.python.org/3/library/errno.html#errno.ENETUNREACHX-tr>X doctest.SKIPr>(jjX:http://docs.python.org/3/library/doctest.html#doctest.SKIPX-tr>Xos.SCHED_SPORADICr>(jjX:http://docs.python.org/3/library/os.html#os.SCHED_SPORADICX-tr>X8xml.parsers.expat.errors.XML_ERROR_ENTITY_DECLARED_IN_PEr>(jjXfhttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_ENTITY_DECLARED_IN_PEX-tr>X stat.S_ISGIDr>(jjX7http://docs.python.org/3/library/stat.html#stat.S_ISGIDX-tr>Xsys.warnoptionsr>(jjX9http://docs.python.org/3/library/sys.html#sys.warnoptionsX-tr>X errno.ENOENTr>(jjX8http://docs.python.org/3/library/errno.html#errno.ENOENTX-tr>uXstd:termr>}r>(Xvirtual machiner>(jjX;http://docs.python.org/3/glossary.html#term-virtual-machineX-tr>X __future__r>(jjX2http://docs.python.org/3/glossary.html#term-futureX-tr>X named tupler>(jjX7http://docs.python.org/3/glossary.html#term-named-tupleX-tr>Xiteratorr>(jjX4http://docs.python.org/3/glossary.html#term-iteratorX-tr>Xlbylr>(jjX0http://docs.python.org/3/glossary.html#term-lbylX-tr>Xgeneric functionr>(jjX<http://docs.python.org/3/glossary.html#term-generic-functionX-tr>X interpretedr>(jjX7http://docs.python.org/3/glossary.html#term-interpretedX-tr>Xbytecoder>(jjX4http://docs.python.org/3/glossary.html#term-bytecodeX-tr>X python 3000r>(jjX7http://docs.python.org/3/glossary.html#term-python-3000X-tr>Xcoercionr>(jjX4http://docs.python.org/3/glossary.html#term-coercionX-tr>Xabstract base classr>(jjX?http://docs.python.org/3/glossary.html#term-abstract-base-classX-tr>X generatorr>(jjX5http://docs.python.org/3/glossary.html#term-generatorX-tr>X file objectr>(jjX7http://docs.python.org/3/glossary.html#term-file-objectX-tr>Xcomplex numberr>(jjX:http://docs.python.org/3/glossary.html#term-complex-numberX-tr>Xpath entry finderr>(jjX=http://docs.python.org/3/glossary.html#term-path-entry-finderX-tr>X2to3r>(jjX/http://docs.python.org/3/glossary.html#term-to3X-tr>Xkeyword argumentr>(jjX<http://docs.python.org/3/glossary.html#term-keyword-argumentX-tr>Xnamespace packager>(jjX=http://docs.python.org/3/glossary.html#term-namespace-packageX-tr>X>>>r>(jjX,http://docs.python.org/3/glossary.html#term-X-tr>Xtriple-quoted stringr>(jjX@http://docs.python.org/3/glossary.html#term-triple-quoted-stringX-tr>X statementr>(jjX5http://docs.python.org/3/glossary.html#term-statementX-tr>X module specr>(jjX7http://docs.python.org/3/glossary.html#term-module-specX-tr>Xgilr>(jjX/http://docs.python.org/3/glossary.html#term-gilX-tr>Xtyper>(jjX0http://docs.python.org/3/glossary.html#term-typeX-tr>X immutabler>(jjX5http://docs.python.org/3/glossary.html#term-immutableX-tr>Xfinderr>(jjX2http://docs.python.org/3/glossary.html#term-finderX-tr?Xfunctionr?(jjX4http://docs.python.org/3/glossary.html#term-functionX-tr?X...r?(jjX-http://docs.python.org/3/glossary.html#term-1X-tr?Xprovisional packager?(jjX?http://docs.python.org/3/glossary.html#term-provisional-packageX-tr?Xcontext managerr?(jjX;http://docs.python.org/3/glossary.html#term-context-managerX-tr?Xspecial methodr ?(jjX:http://docs.python.org/3/glossary.html#term-special-methodX-tr ?Xglobal interpreter lockr ?(jjXChttp://docs.python.org/3/glossary.html#term-global-interpreter-lockX-tr ?X text filer ?(jjX5http://docs.python.org/3/glossary.html#term-text-fileX-tr?Xloaderr?(jjX2http://docs.python.org/3/glossary.html#term-loaderX-tr?X decoratorr?(jjX5http://docs.python.org/3/glossary.html#term-decoratorX-tr?Xlist comprehensionr?(jjX>http://docs.python.org/3/glossary.html#term-list-comprehensionX-tr?Xcpythonr?(jjX3http://docs.python.org/3/glossary.html#term-cpythonX-tr?Xprovisional apir?(jjX;http://docs.python.org/3/glossary.html#term-provisional-apiX-tr?Xlistr?(jjX0http://docs.python.org/3/glossary.html#term-listX-tr?Xpath based finderr?(jjX=http://docs.python.org/3/glossary.html#term-path-based-finderX-tr?Xgarbage collectionr?(jjX>http://docs.python.org/3/glossary.html#term-garbage-collectionX-tr?X descriptorr?(jjX6http://docs.python.org/3/glossary.html#term-descriptorX-tr ?Xidler!?(jjX0http://docs.python.org/3/glossary.html#term-idleX-tr"?X zen of pythonr#?(jjX9http://docs.python.org/3/glossary.html#term-zen-of-pythonX-tr$?X duck-typingr%?(jjX7http://docs.python.org/3/glossary.html#term-duck-typingX-tr&?Xregular packager'?(jjX;http://docs.python.org/3/glossary.html#term-regular-packageX-tr(?Xfunction annotationr)?(jjX?http://docs.python.org/3/glossary.html#term-function-annotationX-tr*?Xreference countr+?(jjX;http://docs.python.org/3/glossary.html#term-reference-countX-tr,?Xmeta path finderr-?(jjX<http://docs.python.org/3/glossary.html#term-meta-path-finderX-tr.?Xfloor divisionr/?(jjX:http://docs.python.org/3/glossary.html#term-floor-divisionX-tr0?X interactiver1?(jjX7http://docs.python.org/3/glossary.html#term-interactiveX-tr2?Xpositional argumentr3?(jjX?http://docs.python.org/3/glossary.html#term-positional-argumentX-tr4?Xsequencer5?(jjX4http://docs.python.org/3/glossary.html#term-sequenceX-tr6?Xbdflr7?(jjX0http://docs.python.org/3/glossary.html#term-bdflX-tr8?X attributer9?(jjX5http://docs.python.org/3/glossary.html#term-attributeX-tr:?Xargumentr;?(jjX4http://docs.python.org/3/glossary.html#term-argumentX-tr?Xeafpr??(jjX0http://docs.python.org/3/glossary.html#term-eafpX-tr@?X importingrA?(jjX5http://docs.python.org/3/glossary.html#term-importingX-trB?Xnew-style classrC?(jjX;http://docs.python.org/3/glossary.html#term-new-style-classX-trD?Xstruct sequencerE?(jjX;http://docs.python.org/3/glossary.html#term-struct-sequenceX-trF?XpythonicrG?(jjX4http://docs.python.org/3/glossary.html#term-pythonicX-trH?XslicerI?(jjX1http://docs.python.org/3/glossary.html#term-sliceX-trJ?XiterablerK?(jjX4http://docs.python.org/3/glossary.html#term-iterableX-trL?Xbytes-like objectrM?(jjX=http://docs.python.org/3/glossary.html#term-bytes-like-objectX-trN?X namespacerO?(jjX5http://docs.python.org/3/glossary.html#term-namespaceX-trP?X __slots__rQ?(jjX1http://docs.python.org/3/glossary.html#term-slotsX-trR?X binary filerS?(jjX7http://docs.python.org/3/glossary.html#term-binary-fileX-trT?XimporterrU?(jjX4http://docs.python.org/3/glossary.html#term-importerX-trV?Xqualified namerW?(jjX:http://docs.python.org/3/glossary.html#term-qualified-nameX-trX?Xfile-like objectrY?(jjX<http://docs.python.org/3/glossary.html#term-file-like-objectX-trZ?Xmutabler[?(jjX3http://docs.python.org/3/glossary.html#term-mutableX-tr\?X metaclassr]?(jjX5http://docs.python.org/3/glossary.html#term-metaclassX-tr^?Xmethodr_?(jjX2http://docs.python.org/3/glossary.html#term-methodX-tr`?Xpath entry hookra?(jjX;http://docs.python.org/3/glossary.html#term-path-entry-hookX-trb?X dictionaryrc?(jjX6http://docs.python.org/3/glossary.html#term-dictionaryX-trd?Xobjectre?(jjX2http://docs.python.org/3/glossary.html#term-objectX-trf?X docstringrg?(jjX5http://docs.python.org/3/glossary.html#term-docstringX-trh?Xmappingri?(jjX3http://docs.python.org/3/glossary.html#term-mappingX-trj?Xextension modulerk?(jjX<http://docs.python.org/3/glossary.html#term-extension-moduleX-trl?X key functionrm?(jjX8http://docs.python.org/3/glossary.html#term-key-functionX-trn?Xmethod resolution orderro?(jjXChttp://docs.python.org/3/glossary.html#term-method-resolution-orderX-trp?Xclassrq?(jjX1http://docs.python.org/3/glossary.html#term-classX-trr?Xhashablers?(jjX4http://docs.python.org/3/glossary.html#term-hashableX-trt?X import pathru?(jjX7http://docs.python.org/3/glossary.html#term-import-pathX-trv?Xpackagerw?(jjX3http://docs.python.org/3/glossary.html#term-packageX-trx?X parameterry?(jjX5http://docs.python.org/3/glossary.html#term-parameterX-trz?X path entryr{?(jjX6http://docs.python.org/3/glossary.html#term-path-entryX-tr|?Xsingle dispatchr}?(jjX;http://docs.python.org/3/glossary.html#term-single-dispatchX-tr~?Xportionr?(jjX3http://docs.python.org/3/glossary.html#term-portionX-tr?Xmror?(jjX/http://docs.python.org/3/glossary.html#term-mroX-tr?Xuniversal newlinesr?(jjX>http://docs.python.org/3/glossary.html#term-universal-newlinesX-tr?Xgenerator expressionr?(jjX@http://docs.python.org/3/glossary.html#term-generator-expressionX-tr?X nested scoper?(jjX8http://docs.python.org/3/glossary.html#term-nested-scopeX-tr?Xviewr?(jjX0http://docs.python.org/3/glossary.html#term-viewX-tr?X expressionr?(jjX6http://docs.python.org/3/glossary.html#term-expressionX-tr?Xlambdar?(jjX2http://docs.python.org/3/glossary.html#term-lambdaX-tr?uX py:functionr?}r?(X bytearrayr?(jjX9http://docs.python.org/3/library/functions.html#bytearrayX-tr?Xallr?(jjX3http://docs.python.org/3/library/functions.html#allX-tr?Xcodecs.iterencoder?(jjX>http://docs.python.org/3/library/codecs.html#codecs.iterencodeX-tr?Xtest.support.bind_portr?(jjXAhttp://docs.python.org/3/library/test.html#test.support.bind_portX-tr?Xssl.get_server_certificater?(jjXDhttp://docs.python.org/3/library/ssl.html#ssl.get_server_certificateX-tr?X os.chflagsr?(jjX3http://docs.python.org/3/library/os.html#os.chflagsX-tr?X stat.S_ISLNKr?(jjX7http://docs.python.org/3/library/stat.html#stat.S_ISLNKX-tr?X imp.get_magicr?(jjX7http://docs.python.org/3/library/imp.html#imp.get_magicX-tr?Xsite.getusersitepackagesr?(jjXChttp://docs.python.org/3/library/site.html#site.getusersitepackagesX-tr?Xhmac.compare_digestr?(jjX>http://docs.python.org/3/library/hmac.html#hmac.compare_digestX-tr?Xctypes.addressofr?(jjX=http://docs.python.org/3/library/ctypes.html#ctypes.addressofX-tr?Xtypes.new_classr?(jjX;http://docs.python.org/3/library/types.html#types.new_classX-tr?Xctypes.pointerr?(jjX;http://docs.python.org/3/library/ctypes.html#ctypes.pointerX-tr?Xinspect.getgeneratorlocalsr?(jjXHhttp://docs.python.org/3/library/inspect.html#inspect.getgeneratorlocalsX-tr?Xplatform.platformr?(jjX@http://docs.python.org/3/library/platform.html#platform.platformX-tr?Xresource.getpagesizer?(jjXChttp://docs.python.org/3/library/resource.html#resource.getpagesizeX-tr?Xstatistics.moder?(jjX@http://docs.python.org/3/library/statistics.html#statistics.modeX-tr?Xunicodedata.digitr?(jjXChttp://docs.python.org/3/library/unicodedata.html#unicodedata.digitX-tr?Xfilecmp.cmpfilesr?(jjX>http://docs.python.org/3/library/filecmp.html#filecmp.cmpfilesX-tr?Xoperator.__and__r?(jjX?http://docs.python.org/3/library/operator.html#operator.__and__X-tr?Xgettext.textdomainr?(jjX@http://docs.python.org/3/library/gettext.html#gettext.textdomainX-tr?Ximportlib.util.decode_sourcer?(jjXLhttp://docs.python.org/3/library/importlib.html#importlib.util.decode_sourceX-tr?Xshutil.make_archiver?(jjX@http://docs.python.org/3/library/shutil.html#shutil.make_archiveX-tr?Xquopri.encodestringr?(jjX@http://docs.python.org/3/library/quopri.html#quopri.encodestringX-tr?X time.sleepr?(jjX5http://docs.python.org/3/library/time.html#time.sleepX-tr?Xzipfile.is_zipfiler?(jjX@http://docs.python.org/3/library/zipfile.html#zipfile.is_zipfileX-tr?X quopri.encoder?(jjX:http://docs.python.org/3/library/quopri.html#quopri.encodeX-tr?X warnings.warnr?(jjX<http://docs.python.org/3/library/warnings.html#warnings.warnX-tr?X*distutils.ccompiler.gen_preprocess_optionsr?(jjXYhttp://docs.python.org/3/distutils/apiref.html#distutils.ccompiler.gen_preprocess_optionsX-tr?X os.removedirsr?(jjX6http://docs.python.org/3/library/os.html#os.removedirsX-tr?Xbase64.b64encoder?(jjX=http://docs.python.org/3/library/base64.html#base64.b64encodeX-tr?X pdb.runevalr?(jjX5http://docs.python.org/3/library/pdb.html#pdb.runevalX-tr?Xwebbrowser.open_newr?(jjXDhttp://docs.python.org/3/library/webbrowser.html#webbrowser.open_newX-tr?Xoperator.__rshift__r?(jjXBhttp://docs.python.org/3/library/operator.html#operator.__rshift__X-tr?Xoperator.__sub__r?(jjX?http://docs.python.org/3/library/operator.html#operator.__sub__X-tr?X turtle.byer?(jjX7http://docs.python.org/3/library/turtle.html#turtle.byeX-tr?X stat.S_ISCHRr?(jjX7http://docs.python.org/3/library/stat.html#stat.S_ISCHRX-tr?Xinspect.getfullargspecr?(jjXDhttp://docs.python.org/3/library/inspect.html#inspect.getfullargspecX-tr?Ximportlib.util.set_packager?(jjXJhttp://docs.python.org/3/library/importlib.html#importlib.util.set_packageX-tr?X heapq.merger?(jjX7http://docs.python.org/3/library/heapq.html#heapq.mergeX-tr?Xipaddress.ip_addressr?(jjXDhttp://docs.python.org/3/library/ipaddress.html#ipaddress.ip_addressX-tr?Xxml.dom.pulldom.parseStringr?(jjXQhttp://docs.python.org/3/library/xml.dom.pulldom.html#xml.dom.pulldom.parseStringX-tr?Xoperator.setitemr?(jjX?http://docs.python.org/3/library/operator.html#operator.setitemX-tr?Xturtle.onreleaser?(jjX=http://docs.python.org/3/library/turtle.html#turtle.onreleaseX-tr?Xcontextlib.suppressr?(jjXDhttp://docs.python.org/3/library/contextlib.html#contextlib.suppressX-tr?Xsignal.sigwaitinfor?(jjX?http://docs.python.org/3/library/signal.html#signal.sigwaitinfoX-tr?X operator.and_r?(jjX<http://docs.python.org/3/library/operator.html#operator.and_X-tr?Xwinreg.SetValuer?(jjX<http://docs.python.org/3/library/winreg.html#winreg.SetValueX-tr?Xdistutils.dir_util.copy_treer?(jjXKhttp://docs.python.org/3/distutils/apiref.html#distutils.dir_util.copy_treeX-tr?Xtempfile.mkdtempr?(jjX?http://docs.python.org/3/library/tempfile.html#tempfile.mkdtempX-tr?Xstringprep.in_table_c11_c12r?(jjXLhttp://docs.python.org/3/library/stringprep.html#stringprep.in_table_c11_c12X-tr?X turtle.rightr?(jjX9http://docs.python.org/3/library/turtle.html#turtle.rightX-tr?Xabc.abstractpropertyr?(jjX>http://docs.python.org/3/library/abc.html#abc.abstractpropertyX-tr?Xoperator.__ne__r?(jjX>http://docs.python.org/3/library/operator.html#operator.__ne__X-tr?Xzlib.compressobjr?(jjX;http://docs.python.org/3/library/zlib.html#zlib.compressobjX-tr?X(distutils.ccompiler.get_default_compilerr?(jjXWhttp://docs.python.org/3/distutils/apiref.html#distutils.ccompiler.get_default_compilerX-tr@Xsys.setcheckintervalr@(jjX>http://docs.python.org/3/library/sys.html#sys.setcheckintervalX-tr@Xasyncio.coroutiner@(jjXDhttp://docs.python.org/3/library/asyncio-task.html#asyncio.coroutineX-tr@Xcodecs.registerr@(jjX<http://docs.python.org/3/library/codecs.html#codecs.registerX-tr@Xturtle.begin_polyr@(jjX>http://docs.python.org/3/library/turtle.html#turtle.begin_polyX-tr@Xbase64.b32encoder @(jjX=http://docs.python.org/3/library/base64.html#base64.b32encodeX-tr @X ast.parser @(jjX3http://docs.python.org/3/library/ast.html#ast.parseX-tr @Xcalendar.firstweekdayr @(jjXDhttp://docs.python.org/3/library/calendar.html#calendar.firstweekdayX-tr@X_thread.allocate_lockr@(jjXChttp://docs.python.org/3/library/_thread.html#_thread.allocate_lockX-tr@X operator.imulr@(jjX<http://docs.python.org/3/library/operator.html#operator.imulX-tr@X math.ldexpr@(jjX5http://docs.python.org/3/library/math.html#math.ldexpX-tr@X cmath.tanhr@(jjX6http://docs.python.org/3/library/cmath.html#cmath.tanhX-tr@Xinspect.currentframer@(jjXBhttp://docs.python.org/3/library/inspect.html#inspect.currentframeX-tr@Xmsilib.add_tablesr@(jjX>http://docs.python.org/3/library/msilib.html#msilib.add_tablesX-tr@X imp.reloadr@(jjX4http://docs.python.org/3/library/imp.html#imp.reloadX-tr@X os.getsidr@(jjX2http://docs.python.org/3/library/os.html#os.getsidX-tr@Xsumr@(jjX3http://docs.python.org/3/library/functions.html#sumX-tr @Xxml.parsers.expat.ErrorStringr!@(jjXKhttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.ErrorStringX-tr"@Xbase64.standard_b64decoder#@(jjXFhttp://docs.python.org/3/library/base64.html#base64.standard_b64decodeX-tr$@Xmath.logr%@(jjX3http://docs.python.org/3/library/math.html#math.logX-tr&@Xlinecache.clearcacher'@(jjXDhttp://docs.python.org/3/library/linecache.html#linecache.clearcacheX-tr(@Xabsr)@(jjX3http://docs.python.org/3/library/functions.html#absX-tr*@Xtextwrap.indentr+@(jjX>http://docs.python.org/3/library/textwrap.html#textwrap.indentX-tr,@Xunittest.mock.create_autospecr-@(jjXQhttp://docs.python.org/3/library/unittest.mock.html#unittest.mock.create_autospecX-tr.@Xasyncio.start_serverr/@(jjXIhttp://docs.python.org/3/library/asyncio-stream.html#asyncio.start_serverX-tr0@X os.path.joinr1@(jjX:http://docs.python.org/3/library/os.path.html#os.path.joinX-tr2@Xheapq.heappushpopr3@(jjX=http://docs.python.org/3/library/heapq.html#heapq.heappushpopX-tr4@Xinspect.getsourcer5@(jjX?http://docs.python.org/3/library/inspect.html#inspect.getsourceX-tr6@Xthreading.active_countr7@(jjXFhttp://docs.python.org/3/library/threading.html#threading.active_countX-tr8@Xos.path.sameopenfiler9@(jjXBhttp://docs.python.org/3/library/os.path.html#os.path.sameopenfileX-tr:@Xipaddress.v4_int_to_packedr;@(jjXJhttp://docs.python.org/3/library/ipaddress.html#ipaddress.v4_int_to_packedX-tr<@Xsys._clear_type_cacher=@(jjX?http://docs.python.org/3/library/sys.html#sys._clear_type_cacheX-tr>@Xstringprep.in_table_c3r?@(jjXGhttp://docs.python.org/3/library/stringprep.html#stringprep.in_table_c3X-tr@@Xstringprep.in_table_c4rA@(jjXGhttp://docs.python.org/3/library/stringprep.html#stringprep.in_table_c4X-trB@Xstringprep.in_table_c5rC@(jjXGhttp://docs.python.org/3/library/stringprep.html#stringprep.in_table_c5X-trD@Xstringprep.in_table_c6rE@(jjXGhttp://docs.python.org/3/library/stringprep.html#stringprep.in_table_c6X-trF@Xstringprep.in_table_c7rG@(jjXGhttp://docs.python.org/3/library/stringprep.html#stringprep.in_table_c7X-trH@Xstringprep.in_table_c8rI@(jjXGhttp://docs.python.org/3/library/stringprep.html#stringprep.in_table_c8X-trJ@Xstringprep.in_table_c9rK@(jjXGhttp://docs.python.org/3/library/stringprep.html#stringprep.in_table_c9X-trL@Xtest.support.temp_cwdrM@(jjX@http://docs.python.org/3/library/test.html#test.support.temp_cwdX-trN@Xtraceback.print_tbrO@(jjXBhttp://docs.python.org/3/library/traceback.html#traceback.print_tbX-trP@X signal.alarmrQ@(jjX9http://docs.python.org/3/library/signal.html#signal.alarmX-trR@Xtest.support.requiresrS@(jjX@http://docs.python.org/3/library/test.html#test.support.requiresX-trT@Xdifflib.context_diffrU@(jjXBhttp://docs.python.org/3/library/difflib.html#difflib.context_diffX-trV@X turtle.xcorrW@(jjX8http://docs.python.org/3/library/turtle.html#turtle.xcorX-trX@Xos.nicerY@(jjX0http://docs.python.org/3/library/os.html#os.niceX-trZ@Xaudioop.getsampler[@(jjX?http://docs.python.org/3/library/audioop.html#audioop.getsampleX-tr\@X uu.decoder]@(jjX2http://docs.python.org/3/library/uu.html#uu.decodeX-tr^@Xitertools.cycler_@(jjX?http://docs.python.org/3/library/itertools.html#itertools.cycleX-tr`@X ctypes.resizera@(jjX:http://docs.python.org/3/library/ctypes.html#ctypes.resizeX-trb@Xtempfile.SpooledTemporaryFilerc@(jjXLhttp://docs.python.org/3/library/tempfile.html#tempfile.SpooledTemporaryFileX-trd@Xdoctest.register_optionflagre@(jjXIhttp://docs.python.org/3/library/doctest.html#doctest.register_optionflagX-trf@X dbm.ndbm.openrg@(jjX7http://docs.python.org/3/library/dbm.html#dbm.ndbm.openX-trh@Xpropertyri@(jjX8http://docs.python.org/3/library/functions.html#propertyX-trj@Xlogging.getLogRecordFactoryrk@(jjXIhttp://docs.python.org/3/library/logging.html#logging.getLogRecordFactoryX-trl@Xtest.support.make_bad_fdrm@(jjXChttp://docs.python.org/3/library/test.html#test.support.make_bad_fdX-trn@Xwinreg.ConnectRegistryro@(jjXChttp://docs.python.org/3/library/winreg.html#winreg.ConnectRegistryX-trp@X spwd.getspnamrq@(jjX8http://docs.python.org/3/library/spwd.html#spwd.getspnamX-trr@Xplatform.architecturers@(jjXDhttp://docs.python.org/3/library/platform.html#platform.architectureX-trt@Xos.path.getatimeru@(jjX>http://docs.python.org/3/library/os.path.html#os.path.getatimeX-trv@X distutils.fancy_getopt.wrap_textrw@(jjXOhttp://docs.python.org/3/distutils/apiref.html#distutils.fancy_getopt.wrap_textX-trx@X os.setpgidry@(jjX3http://docs.python.org/3/library/os.html#os.setpgidX-trz@Xparser.st2listr{@(jjX;http://docs.python.org/3/library/parser.html#parser.st2listX-tr|@X msvcrt.putwchr}@(jjX:http://docs.python.org/3/library/msvcrt.html#msvcrt.putwchX-tr~@Xplatform.python_implementationr@(jjXMhttp://docs.python.org/3/library/platform.html#platform.python_implementationX-tr@Xfileinput.filelinenor@(jjXDhttp://docs.python.org/3/library/fileinput.html#fileinput.filelinenoX-tr@Xsymtable.symtabler@(jjX@http://docs.python.org/3/library/symtable.html#symtable.symtableX-tr@Xsysconfig.get_path_namesr@(jjXHhttp://docs.python.org/3/library/sysconfig.html#sysconfig.get_path_namesX-tr@Xwsgiref.util.guess_schemer@(jjXGhttp://docs.python.org/3/library/wsgiref.html#wsgiref.util.guess_schemeX-tr@X msvcrt.getcher@(jjX:http://docs.python.org/3/library/msvcrt.html#msvcrt.getcheX-tr@X"distutils.sysconfig.get_config_varr@(jjXQhttp://docs.python.org/3/distutils/apiref.html#distutils.sysconfig.get_config_varX-tr@X locale.atoir@(jjX8http://docs.python.org/3/library/locale.html#locale.atoiX-tr@Ximportlib.util.spec_from_loaderr@(jjXOhttp://docs.python.org/3/library/importlib.html#importlib.util.spec_from_loaderX-tr@Xsubprocess.check_callr@(jjXFhttp://docs.python.org/3/library/subprocess.html#subprocess.check_callX-tr@Xaudioop.reverser@(jjX=http://docs.python.org/3/library/audioop.html#audioop.reverseX-tr@Xcurses.reset_shell_moder@(jjXDhttp://docs.python.org/3/library/curses.html#curses.reset_shell_modeX-tr@X turtle.gotor@(jjX8http://docs.python.org/3/library/turtle.html#turtle.gotoX-tr@Xos.chmodr@(jjX1http://docs.python.org/3/library/os.html#os.chmodX-tr@Xlogging.criticalr@(jjX>http://docs.python.org/3/library/logging.html#logging.criticalX-tr@Xlocale.getdefaultlocaler@(jjXDhttp://docs.python.org/3/library/locale.html#locale.getdefaultlocaleX-tr@Xcurses.textpad.rectangler@(jjXEhttp://docs.python.org/3/library/curses.html#curses.textpad.rectangleX-tr@X locale.atofr@(jjX8http://docs.python.org/3/library/locale.html#locale.atofX-tr@Xplatform.mac_verr@(jjX?http://docs.python.org/3/library/platform.html#platform.mac_verX-tr@Xdifflib.IS_CHARACTER_JUNKr@(jjXGhttp://docs.python.org/3/library/difflib.html#difflib.IS_CHARACTER_JUNKX-tr@X os.getpgidr@(jjX3http://docs.python.org/3/library/os.html#os.getpgidX-tr@X cmath.expr@(jjX5http://docs.python.org/3/library/cmath.html#cmath.expX-tr@Xpkgutil.get_loaderr@(jjX@http://docs.python.org/3/library/pkgutil.html#pkgutil.get_loaderX-tr@Xinspect.isgetsetdescriptorr@(jjXHhttp://docs.python.org/3/library/inspect.html#inspect.isgetsetdescriptorX-tr@X#distutils.fancy_getopt.fancy_getoptr@(jjXRhttp://docs.python.org/3/distutils/apiref.html#distutils.fancy_getopt.fancy_getoptX-tr@X_thread.get_identr@(jjX?http://docs.python.org/3/library/_thread.html#_thread.get_identX-tr@Xbinascii.a2b_qpr@(jjX>http://docs.python.org/3/library/binascii.html#binascii.a2b_qpX-tr@Xoperator.is_notr@(jjX>http://docs.python.org/3/library/operator.html#operator.is_notX-tr@Xreadline.set_completerr@(jjXEhttp://docs.python.org/3/library/readline.html#readline.set_completerX-tr@Xfaulthandler.enabler@(jjXFhttp://docs.python.org/3/library/faulthandler.html#faulthandler.enableX-tr@X cgitb.handlerr@(jjX9http://docs.python.org/3/library/cgitb.html#cgitb.handlerX-tr@Xdistutils.util.rfc822_escaper@(jjXKhttp://docs.python.org/3/distutils/apiref.html#distutils.util.rfc822_escapeX-tr@X html.escaper@(jjX6http://docs.python.org/3/library/html.html#html.escapeX-tr@Xossaudiodev.openmixerr@(jjXGhttp://docs.python.org/3/library/ossaudiodev.html#ossaudiodev.openmixerX-tr@Xcgi.print_environ_usager@(jjXAhttp://docs.python.org/3/library/cgi.html#cgi.print_environ_usageX-tr@Xunittest.mock.patch.dictr@(jjXLhttp://docs.python.org/3/library/unittest.mock.html#unittest.mock.patch.dictX-tr@Xaudioop.minmaxr@(jjX<http://docs.python.org/3/library/audioop.html#audioop.minmaxX-tr@X pickle.loadsr@(jjX9http://docs.python.org/3/library/pickle.html#pickle.loadsX-tr@Xstatistics.median_highr@(jjXGhttp://docs.python.org/3/library/statistics.html#statistics.median_highX-tr@Xturtle.tiltangler@(jjX=http://docs.python.org/3/library/turtle.html#turtle.tiltangleX-tr@Xsocket.inet_ptonr@(jjX=http://docs.python.org/3/library/socket.html#socket.inet_ptonX-tr@Xtyper@(jjX4http://docs.python.org/3/library/functions.html#typeX-tr@Xoperator.__not__r@(jjX?http://docs.python.org/3/library/operator.html#operator.__not__X-tr@Xctypes.WinErrorr@(jjX<http://docs.python.org/3/library/ctypes.html#ctypes.WinErrorX-tr@Xsocket.inet_atonr@(jjX=http://docs.python.org/3/library/socket.html#socket.inet_atonX-tr@Xreadline.get_history_itemr@(jjXHhttp://docs.python.org/3/library/readline.html#readline.get_history_itemX-tr@X plistlib.dumpr@(jjX<http://docs.python.org/3/library/plistlib.html#plistlib.dumpX-tr@Xsys.setswitchintervalr@(jjX?http://docs.python.org/3/library/sys.html#sys.setswitchintervalX-tr@Xinspect.getclasstreer@(jjXBhttp://docs.python.org/3/library/inspect.html#inspect.getclasstreeX-tr@Xsocket.sethostnamer@(jjX?http://docs.python.org/3/library/socket.html#socket.sethostnameX-tr@X msvcrt.putchr@(jjX9http://docs.python.org/3/library/msvcrt.html#msvcrt.putchX-tr@Xbinascii.a2b_hexr@(jjX?http://docs.python.org/3/library/binascii.html#binascii.a2b_hexX-tr@X turtle.ycorr@(jjX8http://docs.python.org/3/library/turtle.html#turtle.ycorX-tr@Xcsv.list_dialectsr@(jjX;http://docs.python.org/3/library/csv.html#csv.list_dialectsX-tr@Xxml.dom.minidom.parseStringr@(jjXQhttp://docs.python.org/3/library/xml.dom.minidom.html#xml.dom.minidom.parseStringX-tr@Xaudioop.lin2linr@(jjX=http://docs.python.org/3/library/audioop.html#audioop.lin2linX-tr@X%multiprocessing.sharedctypes.RawArrayr@(jjX[http://docs.python.org/3/library/multiprocessing.html#multiprocessing.sharedctypes.RawArrayX-tr@Xinspect.isroutiner@(jjX?http://docs.python.org/3/library/inspect.html#inspect.isroutineX-tr@X"distutils.ccompiler.show_compilersr@(jjXQhttp://docs.python.org/3/distutils/apiref.html#distutils.ccompiler.show_compilersX-tr@Xdelattrr@(jjX7http://docs.python.org/3/library/functions.html#delattrX-tr@Xmodulefinder.AddPackagePathr@(jjXNhttp://docs.python.org/3/library/modulefinder.html#modulefinder.AddPackagePathX-tr@Xparser.compilestr@(jjX=http://docs.python.org/3/library/parser.html#parser.compilestX-tr@Xos.get_exec_pathr@(jjX9http://docs.python.org/3/library/os.html#os.get_exec_pathX-tr@Xplatform.python_version_tupler@(jjXLhttp://docs.python.org/3/library/platform.html#platform.python_version_tupleX-tr@X zlib.crc32r@(jjX5http://docs.python.org/3/library/zlib.html#zlib.crc32X-trAXsocket.gethostnamerA(jjX?http://docs.python.org/3/library/socket.html#socket.gethostnameX-trAXsysconfig.get_config_varrA(jjXHhttp://docs.python.org/3/library/sysconfig.html#sysconfig.get_config_varX-trAXfileinput.isfirstlinerA(jjXEhttp://docs.python.org/3/library/fileinput.html#fileinput.isfirstlineX-trAXunittest.mock.patchrA(jjXGhttp://docs.python.org/3/library/unittest.mock.html#unittest.mock.patchX-trAX select.kqueuer A(jjX:http://docs.python.org/3/library/select.html#select.kqueueX-tr AXmath.erfr A(jjX3http://docs.python.org/3/library/math.html#math.erfX-tr AXturtle.distancer A(jjX<http://docs.python.org/3/library/turtle.html#turtle.distanceX-trAXcurses.ascii.iscntrlrA(jjXGhttp://docs.python.org/3/library/curses.ascii.html#curses.ascii.iscntrlX-trAXos.getgrouplistrA(jjX8http://docs.python.org/3/library/os.html#os.getgrouplistX-trAXaudioop.findfitrA(jjX=http://docs.python.org/3/library/audioop.html#audioop.findfitX-trAX_thread.start_new_threadrA(jjXFhttp://docs.python.org/3/library/_thread.html#_thread.start_new_threadX-trAXinspect.getmodulerA(jjX?http://docs.python.org/3/library/inspect.html#inspect.getmoduleX-trAXlinecache.getlinerA(jjXAhttp://docs.python.org/3/library/linecache.html#linecache.getlineX-trAX operator.eqrA(jjX:http://docs.python.org/3/library/operator.html#operator.eqX-trAXasyncio.open_connectionrA(jjXLhttp://docs.python.org/3/library/asyncio-stream.html#asyncio.open_connectionX-trAX operator.iaddrA(jjX<http://docs.python.org/3/library/operator.html#operator.iaddX-tr AX os.lchownr!A(jjX2http://docs.python.org/3/library/os.html#os.lchownX-tr"AXoperator.truthr#A(jjX=http://docs.python.org/3/library/operator.html#operator.truthX-tr$AXdoctest.testsourcer%A(jjX@http://docs.python.org/3/library/doctest.html#doctest.testsourceX-tr&AX os.cpu_countr'A(jjX5http://docs.python.org/3/library/os.html#os.cpu_countX-tr(AXcurses.initscrr)A(jjX;http://docs.python.org/3/library/curses.html#curses.initscrX-tr*AXwebbrowser.getr+A(jjX?http://docs.python.org/3/library/webbrowser.html#webbrowser.getX-tr,AX gc.enabler-A(jjX2http://docs.python.org/3/library/gc.html#gc.enableX-tr.AX os.setgroupsr/A(jjX5http://docs.python.org/3/library/os.html#os.setgroupsX-tr0AXxml.sax.saxutils.quoteattrr1A(jjXNhttp://docs.python.org/3/library/xml.sax.utils.html#xml.sax.saxutils.quoteattrX-tr2AXreadline.set_startup_hookr3A(jjXHhttp://docs.python.org/3/library/readline.html#readline.set_startup_hookX-tr4AXfnmatch.translater5A(jjX?http://docs.python.org/3/library/fnmatch.html#fnmatch.translateX-tr6AX operator.ixorr7A(jjX<http://docs.python.org/3/library/operator.html#operator.ixorX-tr8AXatexit.unregisterr9A(jjX>http://docs.python.org/3/library/atexit.html#atexit.unregisterX-tr:AX operator.ipowr;A(jjX<http://docs.python.org/3/library/operator.html#operator.ipowX-trAX"email.utils.collapse_rfc2231_valuer?A(jjXShttp://docs.python.org/3/library/email.util.html#email.utils.collapse_rfc2231_valueX-tr@AX os.getuidrAA(jjX2http://docs.python.org/3/library/os.html#os.getuidX-trBAXtarfile.is_tarfilerCA(jjX@http://docs.python.org/3/library/tarfile.html#tarfile.is_tarfileX-trDAX gzip.compressrEA(jjX8http://docs.python.org/3/library/gzip.html#gzip.compressX-trFAXplistlib.writePlistrGA(jjXBhttp://docs.python.org/3/library/plistlib.html#plistlib.writePlistX-trHAXcurses.termattrsrIA(jjX=http://docs.python.org/3/library/curses.html#curses.termattrsX-trJAX curses.napmsrKA(jjX9http://docs.python.org/3/library/curses.html#curses.napmsX-trLAXimportlib.import_modulerMA(jjXGhttp://docs.python.org/3/library/importlib.html#importlib.import_moduleX-trNAXfpectl.turnon_sigfperOA(jjXAhttp://docs.python.org/3/library/fpectl.html#fpectl.turnon_sigfpeX-trPAXos.path.realpathrQA(jjX>http://docs.python.org/3/library/os.path.html#os.path.realpathX-trRAXcurses.def_prog_moderSA(jjXAhttp://docs.python.org/3/library/curses.html#curses.def_prog_modeX-trTAX math.copysignrUA(jjX8http://docs.python.org/3/library/math.html#math.copysignX-trVAXtest.support.run_unittestrWA(jjXDhttp://docs.python.org/3/library/test.html#test.support.run_unittestX-trXAXos.getpriorityrYA(jjX7http://docs.python.org/3/library/os.html#os.getpriorityX-trZAX shutil.whichr[A(jjX9http://docs.python.org/3/library/shutil.html#shutil.whichX-tr\AX curses.noechor]A(jjX:http://docs.python.org/3/library/curses.html#curses.noechoX-tr^AXparser.issuiter_A(jjX;http://docs.python.org/3/library/parser.html#parser.issuiteX-tr`AX math.erfcraA(jjX4http://docs.python.org/3/library/math.html#math.erfcX-trbAX turtle.speedrcA(jjX9http://docs.python.org/3/library/turtle.html#turtle.speedX-trdAXensurepip.bootstrapreA(jjXChttp://docs.python.org/3/library/ensurepip.html#ensurepip.bootstrapX-trfAX math.sinhrgA(jjX4http://docs.python.org/3/library/math.html#math.sinhX-trhAX inspect.stackriA(jjX;http://docs.python.org/3/library/inspect.html#inspect.stackX-trjAX turtle.clonerkA(jjX9http://docs.python.org/3/library/turtle.html#turtle.cloneX-trlAXinspect.getsourcefilermA(jjXChttp://docs.python.org/3/library/inspect.html#inspect.getsourcefileX-trnAXssl.get_default_verify_pathsroA(jjXFhttp://docs.python.org/3/library/ssl.html#ssl.get_default_verify_pathsX-trpAX classmethodrqA(jjX;http://docs.python.org/3/library/functions.html#classmethodX-trrAXfileinput.inputrsA(jjX?http://docs.python.org/3/library/fileinput.html#fileinput.inputX-trtAXturtle.shapetransformruA(jjXBhttp://docs.python.org/3/library/turtle.html#turtle.shapetransformX-trvAXshutil.copyfilerwA(jjX<http://docs.python.org/3/library/shutil.html#shutil.copyfileX-trxAXoperator.__gt__ryA(jjX>http://docs.python.org/3/library/operator.html#operator.__gt__X-trzAXunittest.removeResultr{A(jjXDhttp://docs.python.org/3/library/unittest.html#unittest.removeResultX-tr|AXwinreg.QueryValueExr}A(jjX@http://docs.python.org/3/library/winreg.html#winreg.QueryValueExX-tr~AXturtle.undobufferentriesrA(jjXEhttp://docs.python.org/3/library/turtle.html#turtle.undobufferentriesX-trAXunicodedata.decompositionrA(jjXKhttp://docs.python.org/3/library/unicodedata.html#unicodedata.decompositionX-trAXoperator.__neg__rA(jjX?http://docs.python.org/3/library/operator.html#operator.__neg__X-trAXshutil.get_archive_formatsrA(jjXGhttp://docs.python.org/3/library/shutil.html#shutil.get_archive_formatsX-trAXwarnings.showwarningrA(jjXChttp://docs.python.org/3/library/warnings.html#warnings.showwarningX-trAXplatform.python_compilerrA(jjXGhttp://docs.python.org/3/library/platform.html#platform.python_compilerX-trAXoperator.__ixor__rA(jjX@http://docs.python.org/3/library/operator.html#operator.__ixor__X-trAXhelprA(jjX4http://docs.python.org/3/library/functions.html#helpX-trAXvarsrA(jjX4http://docs.python.org/3/library/functions.html#varsX-trAXgetopt.gnu_getoptrA(jjX>http://docs.python.org/3/library/getopt.html#getopt.gnu_getoptX-trAXtokenize.detect_encodingrA(jjXGhttp://docs.python.org/3/library/tokenize.html#tokenize.detect_encodingX-trAXos.syncrA(jjX0http://docs.python.org/3/library/os.html#os.syncX-trAX"email.iterators.body_line_iteratorrA(jjXXhttp://docs.python.org/3/library/email.iterators.html#email.iterators.body_line_iteratorX-trAXcurses.tigetstrrA(jjX<http://docs.python.org/3/library/curses.html#curses.tigetstrX-trAXcurses.getmouserA(jjX<http://docs.python.org/3/library/curses.html#curses.getmouseX-trAX turtle.tracerrA(jjX:http://docs.python.org/3/library/turtle.html#turtle.tracerX-trAXcurses.ascii.unctrlrA(jjXFhttp://docs.python.org/3/library/curses.ascii.html#curses.ascii.unctrlX-trAXreprlib.recursive_reprrA(jjXDhttp://docs.python.org/3/library/reprlib.html#reprlib.recursive_reprX-trAXoperator.itruedivrA(jjX@http://docs.python.org/3/library/operator.html#operator.itruedivX-trAXtraceback.extract_stackrA(jjXGhttp://docs.python.org/3/library/traceback.html#traceback.extract_stackX-trAX asyncio.waitrA(jjX?http://docs.python.org/3/library/asyncio-task.html#asyncio.waitX-trAX os.listdirrA(jjX3http://docs.python.org/3/library/os.html#os.listdirX-trAXsignal.sigtimedwaitrA(jjX@http://docs.python.org/3/library/signal.html#signal.sigtimedwaitX-trAX pdb.set_tracerA(jjX7http://docs.python.org/3/library/pdb.html#pdb.set_traceX-trAX operator.is_rA(jjX;http://docs.python.org/3/library/operator.html#operator.is_X-trAXturtle.degreesrA(jjX;http://docs.python.org/3/library/turtle.html#turtle.degreesX-trAX parser.suiterA(jjX9http://docs.python.org/3/library/parser.html#parser.suiteX-trAXsys.getallocatedblocksrA(jjX@http://docs.python.org/3/library/sys.html#sys.getallocatedblocksX-trAXsys._debugmallocstatsrA(jjX?http://docs.python.org/3/library/sys.html#sys._debugmallocstatsX-trAXdbm.openrA(jjX2http://docs.python.org/3/library/dbm.html#dbm.openX-trAXfpectl.turnoff_sigfperA(jjXBhttp://docs.python.org/3/library/fpectl.html#fpectl.turnoff_sigfpeX-trAX uuid.getnoderA(jjX7http://docs.python.org/3/library/uuid.html#uuid.getnodeX-trAXsys.getdlopenflagsrA(jjX<http://docs.python.org/3/library/sys.html#sys.getdlopenflagsX-trAXasyncio.wait_forrA(jjXChttp://docs.python.org/3/library/asyncio-task.html#asyncio.wait_forX-trAXinspect.isframerA(jjX=http://docs.python.org/3/library/inspect.html#inspect.isframeX-trAXoperator.__truediv__rA(jjXChttp://docs.python.org/3/library/operator.html#operator.__truediv__X-trAXreadline.add_historyrA(jjXChttp://docs.python.org/3/library/readline.html#readline.add_historyX-trAXemail.encoders.encode_nooprA(jjXOhttp://docs.python.org/3/library/email.encoders.html#email.encoders.encode_noopX-trAXos.path.islinkrA(jjX<http://docs.python.org/3/library/os.path.html#os.path.islinkX-trAXsocket.getservbynamerA(jjXAhttp://docs.python.org/3/library/socket.html#socket.getservbynameX-trAXturtle.shapesizerA(jjX=http://docs.python.org/3/library/turtle.html#turtle.shapesizeX-trAXdoctest.script_from_examplesrA(jjXJhttp://docs.python.org/3/library/doctest.html#doctest.script_from_examplesX-trAXos.majorrA(jjX1http://docs.python.org/3/library/os.html#os.majorX-trAXinspect.getouterframesrA(jjXDhttp://docs.python.org/3/library/inspect.html#inspect.getouterframesX-trAX math.truncrA(jjX5http://docs.python.org/3/library/math.html#math.truncX-trAXcurses.color_pairrA(jjX>http://docs.python.org/3/library/curses.html#curses.color_pairX-trAXimp.release_lockrA(jjX:http://docs.python.org/3/library/imp.html#imp.release_lockX-trAXcurses.doupdaterA(jjX<http://docs.python.org/3/library/curses.html#curses.doupdateX-trAXaudioop.ulaw2linrA(jjX>http://docs.python.org/3/library/audioop.html#audioop.ulaw2linX-trAXaudioop.lin2alawrA(jjX>http://docs.python.org/3/library/audioop.html#audioop.lin2alawX-trAX uuid.uuid3rA(jjX5http://docs.python.org/3/library/uuid.html#uuid.uuid3X-trAX sys.gettracerA(jjX6http://docs.python.org/3/library/sys.html#sys.gettraceX-trAX locale.strrA(jjX7http://docs.python.org/3/library/locale.html#locale.strX-trAXlogging.getLoggerClassrA(jjXDhttp://docs.python.org/3/library/logging.html#logging.getLoggerClassX-trAX cgi.escaperA(jjX4http://docs.python.org/3/library/cgi.html#cgi.escapeX-trAXcalendar.weekdayrA(jjX?http://docs.python.org/3/library/calendar.html#calendar.weekdayX-trAXwarnings.filterwarningsrA(jjXFhttp://docs.python.org/3/library/warnings.html#warnings.filterwarningsX-trAXrandom.getstaterA(jjX<http://docs.python.org/3/library/random.html#random.getstateX-trAXreadline.replace_history_itemrA(jjXLhttp://docs.python.org/3/library/readline.html#readline.replace_history_itemX-trAXctypes.CFUNCTYPErA(jjX=http://docs.python.org/3/library/ctypes.html#ctypes.CFUNCTYPEX-trAXdecimal.setcontextrA(jjX@http://docs.python.org/3/library/decimal.html#decimal.setcontextX-trAXdecimal.localcontextrA(jjXBhttp://docs.python.org/3/library/decimal.html#decimal.localcontextX-trAXos.path.lexistsrA(jjX=http://docs.python.org/3/library/os.path.html#os.path.lexistsX-trAXxml.etree.ElementTree.parserA(jjXWhttp://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.parseX-trAX%multiprocessing.get_all_start_methodsrA(jjX[http://docs.python.org/3/library/multiprocessing.html#multiprocessing.get_all_start_methodsX-trBXos.wait3rB(jjX1http://docs.python.org/3/library/os.html#os.wait3X-trBXinspect.isclassrB(jjX=http://docs.python.org/3/library/inspect.html#inspect.isclassX-trBX shutil.chownrB(jjX9http://docs.python.org/3/library/shutil.html#shutil.chownX-trBXitertools.combinationsrB(jjXFhttp://docs.python.org/3/library/itertools.html#itertools.combinationsX-trBX binhex.hexbinr B(jjX:http://docs.python.org/3/library/binhex.html#binhex.hexbinX-tr BX weakref.proxyr B(jjX;http://docs.python.org/3/library/weakref.html#weakref.proxyX-tr BXcodecs.lookup_errorr B(jjX@http://docs.python.org/3/library/codecs.html#codecs.lookup_errorX-trBXitertools.islicerB(jjX@http://docs.python.org/3/library/itertools.html#itertools.isliceX-trBXinspect.isabstractrB(jjX@http://docs.python.org/3/library/inspect.html#inspect.isabstractX-trBXxml.etree.ElementTree.XMLIDrB(jjXWhttp://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.XMLIDX-trBX curses.getsyxrB(jjX:http://docs.python.org/3/library/curses.html#curses.getsyxX-trBXlogging.config.listenrB(jjXJhttp://docs.python.org/3/library/logging.config.html#logging.config.listenX-trBXdoctest.DocTestSuiterB(jjXBhttp://docs.python.org/3/library/doctest.html#doctest.DocTestSuiteX-trBXurllib.request.pathname2urlrB(jjXPhttp://docs.python.org/3/library/urllib.request.html#urllib.request.pathname2urlX-trBXturtle.towardsrB(jjX;http://docs.python.org/3/library/turtle.html#turtle.towardsX-trBXbase64.b16decoderB(jjX=http://docs.python.org/3/library/base64.html#base64.b16decodeX-tr BXfileinput.linenor!B(jjX@http://docs.python.org/3/library/fileinput.html#fileinput.linenoX-tr"BXcurses.color_contentr#B(jjXAhttp://docs.python.org/3/library/curses.html#curses.color_contentX-tr$BX os.truncater%B(jjX4http://docs.python.org/3/library/os.html#os.truncateX-tr&BXimaplib.Int2APr'B(jjX<http://docs.python.org/3/library/imaplib.html#imaplib.Int2APX-tr(BXturtle.getcanvasr)B(jjX=http://docs.python.org/3/library/turtle.html#turtle.getcanvasX-tr*BX turtle.isdownr+B(jjX:http://docs.python.org/3/library/turtle.html#turtle.isdownX-tr,BXinspect.isgeneratorr-B(jjXAhttp://docs.python.org/3/library/inspect.html#inspect.isgeneratorX-tr.BX os.unsetenvr/B(jjX4http://docs.python.org/3/library/os.html#os.unsetenvX-tr0BXmultiprocessing.connection.waitr1B(jjXUhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.connection.waitX-tr2BXsys.displayhookr3B(jjX9http://docs.python.org/3/library/sys.html#sys.displayhookX-tr4BX parser.exprr5B(jjX8http://docs.python.org/3/library/parser.html#parser.exprX-tr6BX os.makedevr7B(jjX3http://docs.python.org/3/library/os.html#os.makedevX-tr8BX math.asinr9B(jjX4http://docs.python.org/3/library/math.html#math.asinX-tr:BXheapq.heapreplacer;B(jjX=http://docs.python.org/3/library/heapq.html#heapq.heapreplaceX-trBXxml.sax.make_parserr?B(jjXAhttp://docs.python.org/3/library/xml.sax.html#xml.sax.make_parserX-tr@BXensurepip.versionrAB(jjXAhttp://docs.python.org/3/library/ensurepip.html#ensurepip.versionX-trBBX!multiprocessing.sharedctypes.copyrCB(jjXWhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.sharedctypes.copyX-trDBXpprint.isreadablerEB(jjX>http://docs.python.org/3/library/pprint.html#pprint.isreadableX-trFBXos.fwalkrGB(jjX1http://docs.python.org/3/library/os.html#os.fwalkX-trHBXos.closerIB(jjX1http://docs.python.org/3/library/os.html#os.closeX-trJBXabc.get_cache_tokenrKB(jjX=http://docs.python.org/3/library/abc.html#abc.get_cache_tokenX-trLBXwebbrowser.openrMB(jjX@http://docs.python.org/3/library/webbrowser.html#webbrowser.openX-trNBX cgi.parserOB(jjX3http://docs.python.org/3/library/cgi.html#cgi.parseX-trPBX math.frexprQB(jjX5http://docs.python.org/3/library/math.html#math.frexpX-trRBXsndhdr.whathdrrSB(jjX;http://docs.python.org/3/library/sndhdr.html#sndhdr.whathdrX-trTBXbinascii.b2a_hexrUB(jjX?http://docs.python.org/3/library/binascii.html#binascii.b2a_hexX-trVBX cmath.asinrWB(jjX6http://docs.python.org/3/library/cmath.html#cmath.asinX-trXBXatexit.registerrYB(jjX<http://docs.python.org/3/library/atexit.html#atexit.registerX-trZBX pickle.loadr[B(jjX8http://docs.python.org/3/library/pickle.html#pickle.loadX-tr\BX operator.mulr]B(jjX;http://docs.python.org/3/library/operator.html#operator.mulX-tr^BX sunau.openfpr_B(jjX8http://docs.python.org/3/library/sunau.html#sunau.openfpX-tr`BXxml.dom.getDOMImplementationraB(jjXJhttp://docs.python.org/3/library/xml.dom.html#xml.dom.getDOMImplementationX-trbBX code.interactrcB(jjX8http://docs.python.org/3/library/code.html#code.interactX-trdBX syslog.syslogreB(jjX:http://docs.python.org/3/library/syslog.html#syslog.syslogX-trfBXsys.getdefaultencodingrgB(jjX@http://docs.python.org/3/library/sys.html#sys.getdefaultencodingX-trhBXtracemalloc.take_snapshotriB(jjXKhttp://docs.python.org/3/library/tracemalloc.html#tracemalloc.take_snapshotX-trjBXcodecs.register_errorrkB(jjXBhttp://docs.python.org/3/library/codecs.html#codecs.register_errorX-trlBXinspect.getframeinformB(jjXBhttp://docs.python.org/3/library/inspect.html#inspect.getframeinfoX-trnBXdirectory_createdroB(jjXChttp://docs.python.org/3/distutils/builtdist.html#directory_createdX-trpBX pty.spawnrqB(jjX3http://docs.python.org/3/library/pty.html#pty.spawnX-trrBXoperator.__iand__rsB(jjX@http://docs.python.org/3/library/operator.html#operator.__iand__X-trtBXbinascii.a2b_base64ruB(jjXBhttp://docs.python.org/3/library/binascii.html#binascii.a2b_base64X-trvBXinspect.getinnerframesrwB(jjXDhttp://docs.python.org/3/library/inspect.html#inspect.getinnerframesX-trxBXfilterryB(jjX6http://docs.python.org/3/library/functions.html#filterX-trzBX glob.iglobr{B(jjX5http://docs.python.org/3/library/glob.html#glob.iglobX-tr|BX turtle.ltr}B(jjX6http://docs.python.org/3/library/turtle.html#turtle.ltX-tr~BX parser.isexprrB(jjX:http://docs.python.org/3/library/parser.html#parser.isexprX-trBX os.fchmodrB(jjX2http://docs.python.org/3/library/os.html#os.fchmodX-trBXos.readrB(jjX0http://docs.python.org/3/library/os.html#os.readX-trBXdis.get_instructionsrB(jjX>http://docs.python.org/3/library/dis.html#dis.get_instructionsX-trBXtest.support.forgetrB(jjX>http://docs.python.org/3/library/test.html#test.support.forgetX-trBXplatform.releaserB(jjX?http://docs.python.org/3/library/platform.html#platform.releaseX-trBXstringprep.in_table_b1rB(jjXGhttp://docs.python.org/3/library/stringprep.html#stringprep.in_table_b1X-trBXsocket.if_nametoindexrB(jjXBhttp://docs.python.org/3/library/socket.html#socket.if_nametoindexX-trBXtraceback.extract_tbrB(jjXDhttp://docs.python.org/3/library/traceback.html#traceback.extract_tbX-trBX enumeraterB(jjX9http://docs.python.org/3/library/functions.html#enumerateX-trBXos.set_handle_inheritablerB(jjXBhttp://docs.python.org/3/library/os.html#os.set_handle_inheritableX-trBXmultiprocessing.set_executablerB(jjXThttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.set_executableX-trBXshutil.copymoderB(jjX<http://docs.python.org/3/library/shutil.html#shutil.copymodeX-trBXturtle.onclickrB(jjX;http://docs.python.org/3/library/turtle.html#turtle.onclickX-trBXinspect.getmrorB(jjX<http://docs.python.org/3/library/inspect.html#inspect.getmroX-trBXconcurrent.futures.waitrB(jjXPhttp://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.waitX-trBXgettext.installrB(jjX=http://docs.python.org/3/library/gettext.html#gettext.installX-trBXinspect.getmoduleinforB(jjXChttp://docs.python.org/3/library/inspect.html#inspect.getmoduleinfoX-trBX struct.unpackrB(jjX:http://docs.python.org/3/library/struct.html#struct.unpackX-trBX,multiprocessing.connection.deliver_challengerB(jjXbhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.connection.deliver_challengeX-trBXos.path.isfilerB(jjX<http://docs.python.org/3/library/os.path.html#os.path.isfileX-trBXplistlib.readPlistFromBytesrB(jjXJhttp://docs.python.org/3/library/plistlib.html#plistlib.readPlistFromBytesX-trBX plistlib.loadrB(jjX<http://docs.python.org/3/library/plistlib.html#plistlib.loadX-trBXturtle.addshaperB(jjX<http://docs.python.org/3/library/turtle.html#turtle.addshapeX-trBXtabnanny.checkrB(jjX=http://docs.python.org/3/library/tabnanny.html#tabnanny.checkX-trBX importlib.util.module_for_loaderrB(jjXPhttp://docs.python.org/3/library/importlib.html#importlib.util.module_for_loaderX-trBXrandom.getrandbitsrB(jjX?http://docs.python.org/3/library/random.html#random.getrandbitsX-trBXsubprocess.callrB(jjX@http://docs.python.org/3/library/subprocess.html#subprocess.callX-trBX shutil.unregister_archive_formatrB(jjXMhttp://docs.python.org/3/library/shutil.html#shutil.unregister_archive_formatX-trBXos._exitrB(jjX1http://docs.python.org/3/library/os.html#os._exitX-trBX token.ISEOFrB(jjX7http://docs.python.org/3/library/token.html#token.ISEOFX-trBX os.setxattrrB(jjX4http://docs.python.org/3/library/os.html#os.setxattrX-trBX marshal.loadrB(jjX:http://docs.python.org/3/library/marshal.html#marshal.loadX-trBXmodulefinder.ReplacePackagerB(jjXNhttp://docs.python.org/3/library/modulefinder.html#modulefinder.ReplacePackageX-trBXos.path.existsrB(jjX<http://docs.python.org/3/library/os.path.html#os.path.existsX-trBXcurses.ungetmouserB(jjX>http://docs.python.org/3/library/curses.html#curses.ungetmouseX-trBXsocket.inet_ntoarB(jjX=http://docs.python.org/3/library/socket.html#socket.inet_ntoaX-trBXwinreg.OpenKeyrB(jjX;http://docs.python.org/3/library/winreg.html#winreg.OpenKeyX-trBXwsgiref.simple_server.demo_apprB(jjXLhttp://docs.python.org/3/library/wsgiref.html#wsgiref.simple_server.demo_appX-trBXemail.utils.decode_paramsrB(jjXJhttp://docs.python.org/3/library/email.util.html#email.utils.decode_paramsX-trBXwsgiref.validate.validatorrB(jjXHhttp://docs.python.org/3/library/wsgiref.html#wsgiref.validate.validatorX-trBXtypes.prepare_classrB(jjX?http://docs.python.org/3/library/types.html#types.prepare_classX-trBX base64.encoderB(jjX:http://docs.python.org/3/library/base64.html#base64.encodeX-trBXsocket.inet_ntoprB(jjX=http://docs.python.org/3/library/socket.html#socket.inet_ntopX-trBXos.execlrB(jjX1http://docs.python.org/3/library/os.html#os.execlX-trBX sys.settracerB(jjX6http://docs.python.org/3/library/sys.html#sys.settraceX-trBXoperator.indexOfrB(jjX?http://docs.python.org/3/library/operator.html#operator.indexOfX-trBXbinascii.b2a_uurB(jjX>http://docs.python.org/3/library/binascii.html#binascii.b2a_uuX-trBXmimetypes.guess_extensionrB(jjXIhttp://docs.python.org/3/library/mimetypes.html#mimetypes.guess_extensionX-trBX stat.S_ISFIFOrB(jjX8http://docs.python.org/3/library/stat.html#stat.S_ISFIFOX-trBXsignal.sigwaitrB(jjX;http://docs.python.org/3/library/signal.html#signal.sigwaitX-trBXbz2.decompressrB(jjX8http://docs.python.org/3/library/bz2.html#bz2.decompressX-trBX issubclassrB(jjX:http://docs.python.org/3/library/functions.html#issubclassX-trBXcurses.killcharrB(jjX<http://docs.python.org/3/library/curses.html#curses.killcharX-trBXos.execvrB(jjX1http://docs.python.org/3/library/os.html#os.execvX-trBXgetpass.getpassrB(jjX=http://docs.python.org/3/library/getpass.html#getpass.getpassX-trBX#distutils.archive_util.make_tarballrB(jjXRhttp://docs.python.org/3/distutils/apiref.html#distutils.archive_util.make_tarballX-trBXitertools.dropwhilerB(jjXChttp://docs.python.org/3/library/itertools.html#itertools.dropwhileX-trBXwinreg.LoadKeyrB(jjX;http://docs.python.org/3/library/winreg.html#winreg.LoadKeyX-trBXpdb.post_mortemrB(jjX9http://docs.python.org/3/library/pdb.html#pdb.post_mortemX-trBX ssl.RAND_egdrB(jjX6http://docs.python.org/3/library/ssl.html#ssl.RAND_egdX-trBXoperator.invertrB(jjX>http://docs.python.org/3/library/operator.html#operator.invertX-trBXpickletools.disrB(jjXAhttp://docs.python.org/3/library/pickletools.html#pickletools.disX-trBXnis.get_default_domainrB(jjX@http://docs.python.org/3/library/nis.html#nis.get_default_domainX-trBX curses.nonlrB(jjX8http://docs.python.org/3/library/curses.html#curses.nonlX-trCXheapq.nlargestrC(jjX:http://docs.python.org/3/library/heapq.html#heapq.nlargestX-trCXos.path.expandvarsrC(jjX@http://docs.python.org/3/library/os.path.html#os.path.expandvarsX-trCX binhex.binhexrC(jjX:http://docs.python.org/3/library/binhex.html#binhex.binhexX-trCXlogging.getLevelNamerC(jjXBhttp://docs.python.org/3/library/logging.html#logging.getLevelNameX-trCXsys.getrecursionlimitr C(jjX?http://docs.python.org/3/library/sys.html#sys.getrecursionlimitX-tr CXdistutils.dep_util.newerr C(jjXGhttp://docs.python.org/3/distutils/apiref.html#distutils.dep_util.newerX-tr CXsysconfig.parse_config_hr C(jjXHhttp://docs.python.org/3/library/sysconfig.html#sysconfig.parse_config_hX-trCX importlib.util.cache_from_sourcerC(jjXPhttp://docs.python.org/3/library/importlib.html#importlib.util.cache_from_sourceX-trCX fcntl.lockfrC(jjX7http://docs.python.org/3/library/fcntl.html#fcntl.lockfX-trCXmultiprocessing.ArrayrC(jjXKhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.ArrayX-trCX cmath.isinfrC(jjX7http://docs.python.org/3/library/cmath.html#cmath.isinfX-trCXos.path.getsizerC(jjX=http://docs.python.org/3/library/os.path.html#os.path.getsizeX-trCXmimetypes.add_typerC(jjXBhttp://docs.python.org/3/library/mimetypes.html#mimetypes.add_typeX-trCXtermios.tcsendbreakrC(jjXAhttp://docs.python.org/3/library/termios.html#termios.tcsendbreakX-trCXcurses.erasecharrC(jjX=http://docs.python.org/3/library/curses.html#curses.erasecharX-trCXssl.RAND_bytesrC(jjX8http://docs.python.org/3/library/ssl.html#ssl.RAND_bytesX-tr CXfileinput.filenor!C(jjX@http://docs.python.org/3/library/fileinput.html#fileinput.filenoX-tr"CX locale.formatr#C(jjX:http://docs.python.org/3/library/locale.html#locale.formatX-tr$CX ctypes.sizeofr%C(jjX:http://docs.python.org/3/library/ctypes.html#ctypes.sizeofX-tr&CXpy_compile.compiler'C(jjXChttp://docs.python.org/3/library/py_compile.html#py_compile.compileX-tr(CXmultiprocessing.get_loggerr)C(jjXPhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.get_loggerX-tr*CXturtle.end_fillr+C(jjX<http://docs.python.org/3/library/turtle.html#turtle.end_fillX-tr,CXcgi.print_directoryr-C(jjX=http://docs.python.org/3/library/cgi.html#cgi.print_directoryX-tr.CXaudioop.tostereor/C(jjX>http://docs.python.org/3/library/audioop.html#audioop.tostereoX-tr0CXos.lseekr1C(jjX1http://docs.python.org/3/library/os.html#os.lseekX-tr2CX json.loadsr3C(jjX5http://docs.python.org/3/library/json.html#json.loadsX-tr4CXmsilib.add_datar5C(jjX<http://docs.python.org/3/library/msilib.html#msilib.add_dataX-tr6CXgc.get_thresholdr7C(jjX9http://docs.python.org/3/library/gc.html#gc.get_thresholdX-tr8CXmailcap.getcapsr9C(jjX=http://docs.python.org/3/library/mailcap.html#mailcap.getcapsX-tr:CXexecr;C(jjX4http://docs.python.org/3/library/functions.html#execX-trCXobjectr?C(jjX6http://docs.python.org/3/library/functions.html#objectX-tr@CX math.asinhrAC(jjX5http://docs.python.org/3/library/math.html#math.asinhX-trBCXemail.utils.make_msgidrCC(jjXGhttp://docs.python.org/3/library/email.util.html#email.utils.make_msgidX-trDCX os.path.isabsrEC(jjX;http://docs.python.org/3/library/os.path.html#os.path.isabsX-trFCXemail.header.decode_headerrGC(jjXMhttp://docs.python.org/3/library/email.header.html#email.header.decode_headerX-trHCXwarnings.warn_explicitrIC(jjXEhttp://docs.python.org/3/library/warnings.html#warnings.warn_explicitX-trJCX operator.not_rKC(jjX<http://docs.python.org/3/library/operator.html#operator.not_X-trLCXurllib.parse.unquote_plusrMC(jjXLhttp://docs.python.org/3/library/urllib.parse.html#urllib.parse.unquote_plusX-trNCXbinascii.unhexlifyrOC(jjXAhttp://docs.python.org/3/library/binascii.html#binascii.unhexlifyX-trPCX)multiprocessing.sharedctypes.synchronizedrQC(jjX_http://docs.python.org/3/library/multiprocessing.html#multiprocessing.sharedctypes.synchronizedX-trRCXtempfile.TemporaryFilerSC(jjXEhttp://docs.python.org/3/library/tempfile.html#tempfile.TemporaryFileX-trTCXos.popenrUC(jjX1http://docs.python.org/3/library/os.html#os.popenX-trVCXdoctest.testfilerWC(jjX>http://docs.python.org/3/library/doctest.html#doctest.testfileX-trXCXoperator.__or__rYC(jjX>http://docs.python.org/3/library/operator.html#operator.__or__X-trZCX curses.beepr[C(jjX8http://docs.python.org/3/library/curses.html#curses.beepX-tr\CXtest.support.check_warningsr]C(jjXFhttp://docs.python.org/3/library/test.html#test.support.check_warningsX-tr^CX os.getloginr_C(jjX4http://docs.python.org/3/library/os.html#os.getloginX-tr`CXpkgutil.get_dataraC(jjX>http://docs.python.org/3/library/pkgutil.html#pkgutil.get_dataX-trbCX shutil.movercC(jjX8http://docs.python.org/3/library/shutil.html#shutil.moveX-trdCX os.startfilereC(jjX5http://docs.python.org/3/library/os.html#os.startfileX-trfCXasyncio.create_subprocess_shellrgC(jjXXhttp://docs.python.org/3/library/asyncio-subprocess.html#asyncio.create_subprocess_shellX-trhCX math.gammariC(jjX5http://docs.python.org/3/library/math.html#math.gammaX-trjCXos.openrkC(jjX0http://docs.python.org/3/library/os.html#os.openX-trlCXsignal.siginterruptrmC(jjX@http://docs.python.org/3/library/signal.html#signal.siginterruptX-trnCX os.renamesroC(jjX3http://docs.python.org/3/library/os.html#os.renamesX-trpCXturtle.pensizerqC(jjX;http://docs.python.org/3/library/turtle.html#turtle.pensizeX-trrCXmath.exprsC(jjX3http://docs.python.org/3/library/math.html#math.expX-trtCXos.sched_rr_get_intervalruC(jjXAhttp://docs.python.org/3/library/os.html#os.sched_rr_get_intervalX-trvCXtest.support.findfilerwC(jjX@http://docs.python.org/3/library/test.html#test.support.findfileX-trxCX operator.absryC(jjX;http://docs.python.org/3/library/operator.html#operator.absX-trzCXtest.support.captured_stderrr{C(jjXGhttp://docs.python.org/3/library/test.html#test.support.captured_stderrX-tr|CXshutil.unregister_unpack_formatr}C(jjXLhttp://docs.python.org/3/library/shutil.html#shutil.unregister_unpack_formatX-tr~CXinspect.getargspecrC(jjX@http://docs.python.org/3/library/inspect.html#inspect.getargspecX-trCX turtle.sethrC(jjX8http://docs.python.org/3/library/turtle.html#turtle.sethX-trCX#distutils.ccompiler.gen_lib_optionsrC(jjXRhttp://docs.python.org/3/distutils/apiref.html#distutils.ccompiler.gen_lib_optionsX-trCXrandom.lognormvariaterC(jjXBhttp://docs.python.org/3/library/random.html#random.lognormvariateX-trCX select.epollrC(jjX9http://docs.python.org/3/library/select.html#select.epollX-trCXdis.disassemblerC(jjX9http://docs.python.org/3/library/dis.html#dis.disassembleX-trCX os.unlinkrC(jjX2http://docs.python.org/3/library/os.html#os.unlinkX-trCX turtle.writerC(jjX9http://docs.python.org/3/library/turtle.html#turtle.writeX-trCX turtle.setyrC(jjX8http://docs.python.org/3/library/turtle.html#turtle.setyX-trCX turtle.setxrC(jjX8http://docs.python.org/3/library/turtle.html#turtle.setxX-trCXwinsound.MessageBeeprC(jjXChttp://docs.python.org/3/library/winsound.html#winsound.MessageBeepX-trCXemail.utils.getaddressesrC(jjXIhttp://docs.python.org/3/library/email.util.html#email.utils.getaddressesX-trCX operator.xorrC(jjX;http://docs.python.org/3/library/operator.html#operator.xorX-trCXunittest.mock.patch.multiplerC(jjXPhttp://docs.python.org/3/library/unittest.mock.html#unittest.mock.patch.multipleX-trCX copy.copyrC(jjX4http://docs.python.org/3/library/copy.html#copy.copyX-trCXturtle.exitonclickrC(jjX?http://docs.python.org/3/library/turtle.html#turtle.exitonclickX-trCX stat.S_ISDIRrC(jjX7http://docs.python.org/3/library/stat.html#stat.S_ISDIRX-trCXdistutils.dir_util.create_treerC(jjXMhttp://docs.python.org/3/distutils/apiref.html#distutils.dir_util.create_treeX-trCXoperator.__lshift__rC(jjXBhttp://docs.python.org/3/library/operator.html#operator.__lshift__X-trCXcodecs.EncodedFilerC(jjX?http://docs.python.org/3/library/codecs.html#codecs.EncodedFileX-trCX crypt.mksaltrC(jjX8http://docs.python.org/3/library/crypt.html#crypt.mksaltX-trCXlogging.setLogRecordFactoryrC(jjXIhttp://docs.python.org/3/library/logging.html#logging.setLogRecordFactoryX-trCX os.chrootrC(jjX2http://docs.python.org/3/library/os.html#os.chrootX-trCXrandom.randintrC(jjX;http://docs.python.org/3/library/random.html#random.randintX-trCX operator.iandrC(jjX<http://docs.python.org/3/library/operator.html#operator.iandX-trCXoctrC(jjX3http://docs.python.org/3/library/functions.html#octX-trCXemail.utils.mktime_tzrC(jjXFhttp://docs.python.org/3/library/email.util.html#email.utils.mktime_tzX-trCXimaplib.Internaldate2tuplerC(jjXHhttp://docs.python.org/3/library/imaplib.html#imaplib.Internaldate2tupleX-trCX!multiprocessing.connection.ClientrC(jjXWhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.connection.ClientX-trCXos.path.basenamerC(jjX>http://docs.python.org/3/library/os.path.html#os.path.basenameX-trCXos.sched_getparamrC(jjX:http://docs.python.org/3/library/os.html#os.sched_getparamX-trCX ctypes.castrC(jjX8http://docs.python.org/3/library/ctypes.html#ctypes.castX-trCXrandom.uniformrC(jjX;http://docs.python.org/3/library/random.html#random.uniformX-trCXurllib.request.urlretrieverC(jjXOhttp://docs.python.org/3/library/urllib.request.html#urllib.request.urlretrieveX-trCX turtle.clearrC(jjX9http://docs.python.org/3/library/turtle.html#turtle.clearX-trCXwebbrowser.registerrC(jjXDhttp://docs.python.org/3/library/webbrowser.html#webbrowser.registerX-trCX pty.openptyrC(jjX5http://docs.python.org/3/library/pty.html#pty.openptyX-trCXlocale.format_stringrC(jjXAhttp://docs.python.org/3/library/locale.html#locale.format_stringX-trCX pdb.runcallrC(jjX5http://docs.python.org/3/library/pdb.html#pdb.runcallX-trCXcalendar.leapdaysrC(jjX@http://docs.python.org/3/library/calendar.html#calendar.leapdaysX-trCX os.readlinkrC(jjX4http://docs.python.org/3/library/os.html#os.readlinkX-trCXsetattrrC(jjX7http://docs.python.org/3/library/functions.html#setattrX-trCXbytesrC(jjX5http://docs.python.org/3/library/functions.html#bytesX-trCXcurses.isendwinrC(jjX<http://docs.python.org/3/library/curses.html#curses.isendwinX-trCXcurses.longnamerC(jjX<http://docs.python.org/3/library/curses.html#curses.longnameX-trCX uuid.uuid4rC(jjX5http://docs.python.org/3/library/uuid.html#uuid.uuid4X-trCX uuid.uuid5rC(jjX5http://docs.python.org/3/library/uuid.html#uuid.uuid5X-trCX stat.S_ISREGrC(jjX7http://docs.python.org/3/library/stat.html#stat.S_ISREGX-trCX importlib.util.source_from_cacherC(jjXPhttp://docs.python.org/3/library/importlib.html#importlib.util.source_from_cacheX-trCX xml.etree.ElementTree.SubElementrC(jjX\http://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.SubElementX-trCX uuid.uuid1rC(jjX5http://docs.python.org/3/library/uuid.html#uuid.uuid1X-trCXsys.getcheckintervalrC(jjX>http://docs.python.org/3/library/sys.html#sys.getcheckintervalX-trCX os.spawnlrC(jjX2http://docs.python.org/3/library/os.html#os.spawnlX-trCXcodecs.getreaderrC(jjX=http://docs.python.org/3/library/codecs.html#codecs.getreaderX-trCXoperator.__iconcat__rC(jjXChttp://docs.python.org/3/library/operator.html#operator.__iconcat__X-trCXmsvcrt.getwcherC(jjX;http://docs.python.org/3/library/msvcrt.html#msvcrt.getwcheX-trCXpyclbr.readmodule_exrC(jjXAhttp://docs.python.org/3/library/pyclbr.html#pyclbr.readmodule_exX-trCXcurses.resettyrC(jjX;http://docs.python.org/3/library/curses.html#curses.resettyX-trCXthreading.main_threadrC(jjXEhttp://docs.python.org/3/library/threading.html#threading.main_threadX-trCXmsilib.init_databaserC(jjXAhttp://docs.python.org/3/library/msilib.html#msilib.init_databaseX-trCXrandom.triangularrC(jjX>http://docs.python.org/3/library/random.html#random.triangularX-trCXsignal.set_wakeup_fdrC(jjXAhttp://docs.python.org/3/library/signal.html#signal.set_wakeup_fdX-trCXcurses.ascii.ispunctrC(jjXGhttp://docs.python.org/3/library/curses.ascii.html#curses.ascii.ispunctX-trCX curses.echorC(jjX8http://docs.python.org/3/library/curses.html#curses.echoX-trCXurllib.parse.urlparserC(jjXHhttp://docs.python.org/3/library/urllib.parse.html#urllib.parse.urlparseX-trDX importlib.machinery.all_suffixesrD(jjXPhttp://docs.python.org/3/library/importlib.html#importlib.machinery.all_suffixesX-trDXhashrD(jjX4http://docs.python.org/3/library/functions.html#hashX-trDXbase64.b85decoderD(jjX=http://docs.python.org/3/library/base64.html#base64.b85decodeX-trDX turtle.fdrD(jjX6http://docs.python.org/3/library/turtle.html#turtle.fdX-trDX turtle.getpenr D(jjX:http://docs.python.org/3/library/turtle.html#turtle.getpenX-tr DXlocalsr D(jjX6http://docs.python.org/3/library/functions.html#localsX-tr DX enum.uniquer D(jjX6http://docs.python.org/3/library/enum.html#enum.uniqueX-trDXwinreg.OpenKeyExrD(jjX=http://docs.python.org/3/library/winreg.html#winreg.OpenKeyExX-trDX"distutils.sysconfig.get_python_librD(jjXQhttp://docs.python.org/3/distutils/apiref.html#distutils.sysconfig.get_python_libX-trDXdoctest.debug_srcrD(jjX?http://docs.python.org/3/library/doctest.html#doctest.debug_srcX-trDX cmath.sqrtrD(jjX6http://docs.python.org/3/library/cmath.html#cmath.sqrtX-trDXcalendar.weekheaderrD(jjXBhttp://docs.python.org/3/library/calendar.html#calendar.weekheaderX-trDXturtle.setpositionrD(jjX?http://docs.python.org/3/library/turtle.html#turtle.setpositionX-trDXunicodedata.east_asian_widthrD(jjXNhttp://docs.python.org/3/library/unicodedata.html#unicodedata.east_asian_widthX-trDXfunctools.cmp_to_keyrD(jjXDhttp://docs.python.org/3/library/functools.html#functools.cmp_to_keyX-trDXplistlib.writePlistToBytesrD(jjXIhttp://docs.python.org/3/library/plistlib.html#plistlib.writePlistToBytesX-tr DX fractions.gcdr!D(jjX=http://docs.python.org/3/library/fractions.html#fractions.gcdX-tr"DXimportlib.invalidate_cachesr#D(jjXKhttp://docs.python.org/3/library/importlib.html#importlib.invalidate_cachesX-tr$DX dis.discor%D(jjX3http://docs.python.org/3/library/dis.html#dis.discoX-tr&DXdifflib.restorer'D(jjX=http://docs.python.org/3/library/difflib.html#difflib.restoreX-tr(DX)distutils.sysconfig.get_makefile_filenamer)D(jjXXhttp://docs.python.org/3/distutils/apiref.html#distutils.sysconfig.get_makefile_filenameX-tr*DXoperator.__add__r+D(jjX?http://docs.python.org/3/library/operator.html#operator.__add__X-tr,DXturtle.clearscreenr-D(jjX?http://docs.python.org/3/library/turtle.html#turtle.clearscreenX-tr.DXdistutils.file_util.copy_filer/D(jjXLhttp://docs.python.org/3/distutils/apiref.html#distutils.file_util.copy_fileX-tr0DX sys._getframer1D(jjX7http://docs.python.org/3/library/sys.html#sys._getframeX-tr2DXurllib.request.install_openerr3D(jjXRhttp://docs.python.org/3/library/urllib.request.html#urllib.request.install_openerX-tr4DX pprint.pprintr5D(jjX:http://docs.python.org/3/library/pprint.html#pprint.pprintX-tr6DXoperator.__mul__r7D(jjX?http://docs.python.org/3/library/operator.html#operator.__mul__X-tr8DX shutil.copyr9D(jjX8http://docs.python.org/3/library/shutil.html#shutil.copyX-tr:DX operator.subr;D(jjX;http://docs.python.org/3/library/operator.html#operator.subX-trDXinspect.getargvaluesr?D(jjXBhttp://docs.python.org/3/library/inspect.html#inspect.getargvaluesX-tr@DX time.mktimerAD(jjX6http://docs.python.org/3/library/time.html#time.mktimeX-trBDXcurses.pair_numberrCD(jjX?http://docs.python.org/3/library/curses.html#curses.pair_numberX-trDDX cmath.polarrED(jjX7http://docs.python.org/3/library/cmath.html#cmath.polarX-trFDX os.spawnlperGD(jjX4http://docs.python.org/3/library/os.html#os.spawnlpeX-trHDXsignal.pthread_sigmaskrID(jjXChttp://docs.python.org/3/library/signal.html#signal.pthread_sigmaskX-trJDX os.pathconfrKD(jjX4http://docs.python.org/3/library/os.html#os.pathconfX-trLDXfaulthandler.dump_tracebackrMD(jjXNhttp://docs.python.org/3/library/faulthandler.html#faulthandler.dump_tracebackX-trNDXoperator.methodcallerrOD(jjXDhttp://docs.python.org/3/library/operator.html#operator.methodcallerX-trPDXtracemalloc.get_traced_memoryrQD(jjXOhttp://docs.python.org/3/library/tracemalloc.html#tracemalloc.get_traced_memoryX-trRDX turtle.backrSD(jjX8http://docs.python.org/3/library/turtle.html#turtle.backX-trTDXctypes.create_string_bufferrUD(jjXHhttp://docs.python.org/3/library/ctypes.html#ctypes.create_string_bufferX-trVDX turtle.setuprWD(jjX9http://docs.python.org/3/library/turtle.html#turtle.setupX-trXDXstatistics.pstdevrYD(jjXBhttp://docs.python.org/3/library/statistics.html#statistics.pstdevX-trZDX os.execvper[D(jjX3http://docs.python.org/3/library/os.html#os.execvpeX-tr\DXcgi.testr]D(jjX2http://docs.python.org/3/library/cgi.html#cgi.testX-tr^DXshutil.disk_usager_D(jjX>http://docs.python.org/3/library/shutil.html#shutil.disk_usageX-tr`DX reprlib.reprraD(jjX:http://docs.python.org/3/library/reprlib.html#reprlib.reprX-trbDXgettext.dgettextrcD(jjX>http://docs.python.org/3/library/gettext.html#gettext.dgettextX-trdDX os.killpgreD(jjX2http://docs.python.org/3/library/os.html#os.killpgX-trfDXcurses.panel.top_panelrgD(jjXIhttp://docs.python.org/3/library/curses.panel.html#curses.panel.top_panelX-trhDXfunctools.update_wrapperriD(jjXHhttp://docs.python.org/3/library/functools.html#functools.update_wrapperX-trjDX turtle.listenrkD(jjX:http://docs.python.org/3/library/turtle.html#turtle.listenX-trlDXglobalsrmD(jjX7http://docs.python.org/3/library/functions.html#globalsX-trnDXreadline.clear_historyroD(jjXEhttp://docs.python.org/3/library/readline.html#readline.clear_historyX-trpDX gc.is_trackedrqD(jjX6http://docs.python.org/3/library/gc.html#gc.is_trackedX-trrDXcontextlib.contextmanagerrsD(jjXJhttp://docs.python.org/3/library/contextlib.html#contextlib.contextmanagerX-trtDX turtle.leftruD(jjX8http://docs.python.org/3/library/turtle.html#turtle.leftX-trvDXplatform.system_aliasrwD(jjXDhttp://docs.python.org/3/library/platform.html#platform.system_aliasX-trxDXitertools.filterfalseryD(jjXEhttp://docs.python.org/3/library/itertools.html#itertools.filterfalseX-trzDXpkgutil.iter_importersr{D(jjXDhttp://docs.python.org/3/library/pkgutil.html#pkgutil.iter_importersX-tr|DX turtle.pdr}D(jjX6http://docs.python.org/3/library/turtle.html#turtle.pdX-tr~DX bz2.compressrD(jjX6http://docs.python.org/3/library/bz2.html#bz2.compressX-trDXunicodedata.categoryrD(jjXFhttp://docs.python.org/3/library/unicodedata.html#unicodedata.categoryX-trDX socket.ntohsrD(jjX9http://docs.python.org/3/library/socket.html#socket.ntohsX-trDXos.walkrD(jjX0http://docs.python.org/3/library/os.html#os.walkX-trDX stat.S_IMODErD(jjX7http://docs.python.org/3/library/stat.html#stat.S_IMODEX-trDX math.fabsrD(jjX4http://docs.python.org/3/library/math.html#math.fabsX-trDX turtle.purD(jjX6http://docs.python.org/3/library/turtle.html#turtle.puX-trDXcodecs.backslashreplace_errorsrD(jjXKhttp://docs.python.org/3/library/codecs.html#codecs.backslashreplace_errorsX-trDX bisect.insortrD(jjX:http://docs.python.org/3/library/bisect.html#bisect.insortX-trDX turtle.colorrD(jjX9http://docs.python.org/3/library/turtle.html#turtle.colorX-trDX socket.ntohlrD(jjX9http://docs.python.org/3/library/socket.html#socket.ntohlX-trDXunittest.mock.patch.stopallrD(jjXOhttp://docs.python.org/3/library/unittest.mock.html#unittest.mock.patch.stopallX-trDX cmath.coshrD(jjX6http://docs.python.org/3/library/cmath.html#cmath.coshX-trDXmath.sinrD(jjX3http://docs.python.org/3/library/math.html#math.sinX-trDXre.subrD(jjX/http://docs.python.org/3/library/re.html#re.subX-trDXsysconfig.is_python_buildrD(jjXIhttp://docs.python.org/3/library/sysconfig.html#sysconfig.is_python_buildX-trDX os.confstrrD(jjX3http://docs.python.org/3/library/os.html#os.confstrX-trDXurllib.parse.urldefragrD(jjXIhttp://docs.python.org/3/library/urllib.parse.html#urllib.parse.urldefragX-trDXmsvcrt.get_osfhandlerD(jjXAhttp://docs.python.org/3/library/msvcrt.html#msvcrt.get_osfhandleX-trDXpy_compile.mainrD(jjX@http://docs.python.org/3/library/py_compile.html#py_compile.mainX-trDXitertools.zip_longestrD(jjXEhttp://docs.python.org/3/library/itertools.html#itertools.zip_longestX-trDXdistutils.core.setuprD(jjXChttp://docs.python.org/3/distutils/apiref.html#distutils.core.setupX-trDXturtle.pencolorrD(jjX<http://docs.python.org/3/library/turtle.html#turtle.pencolorX-trDX os.replacerD(jjX3http://docs.python.org/3/library/os.html#os.replaceX-trDX os.fsencoderD(jjX4http://docs.python.org/3/library/os.html#os.fsencodeX-trDX%xml.sax.saxutils.prepare_input_sourcerD(jjXYhttp://docs.python.org/3/library/xml.sax.utils.html#xml.sax.saxutils.prepare_input_sourceX-trDXos.setpriorityrD(jjX7http://docs.python.org/3/library/os.html#os.setpriorityX-trDXbisect.insort_rightrD(jjX@http://docs.python.org/3/library/bisect.html#bisect.insort_rightX-trDXwinreg.SetValueExrD(jjX>http://docs.python.org/3/library/winreg.html#winreg.SetValueExX-trDXinspect.ismodulerD(jjX>http://docs.python.org/3/library/inspect.html#inspect.ismoduleX-trDX marshal.loadsrD(jjX;http://docs.python.org/3/library/marshal.html#marshal.loadsX-trDXcurses.init_pairrD(jjX=http://docs.python.org/3/library/curses.html#curses.init_pairX-trDXos.chdirrD(jjX1http://docs.python.org/3/library/os.html#os.chdirX-trDX msvcrt.getwchrD(jjX:http://docs.python.org/3/library/msvcrt.html#msvcrt.getwchX-trDX operator.modrD(jjX;http://docs.python.org/3/library/operator.html#operator.modX-trDXgettext.bindtextdomainrD(jjXDhttp://docs.python.org/3/library/gettext.html#gettext.bindtextdomainX-trDXplatform.python_branchrD(jjXEhttp://docs.python.org/3/library/platform.html#platform.python_branchX-trDX multiprocessing.set_start_methodrD(jjXVhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.set_start_methodX-trDXemail.encoders.encode_7or8bitrD(jjXRhttp://docs.python.org/3/library/email.encoders.html#email.encoders.encode_7or8bitX-trDXipaddress.v6_int_to_packedrD(jjXJhttp://docs.python.org/3/library/ipaddress.html#ipaddress.v6_int_to_packedX-trDXcurses.halfdelayrD(jjX=http://docs.python.org/3/library/curses.html#curses.halfdelayX-trDXmultiprocessing.log_to_stderrrD(jjXShttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.log_to_stderrX-trDX curses.rawrD(jjX7http://docs.python.org/3/library/curses.html#curses.rawX-trDXstatistics.median_groupedrD(jjXJhttp://docs.python.org/3/library/statistics.html#statistics.median_groupedX-trDXos.get_inheritablerD(jjX;http://docs.python.org/3/library/os.html#os.get_inheritableX-trDXaudioop.alaw2linrD(jjX>http://docs.python.org/3/library/audioop.html#audioop.alaw2linX-trDX turtle.undorD(jjX8http://docs.python.org/3/library/turtle.html#turtle.undoX-trDX)distutils.sysconfig.get_config_h_filenamerD(jjXXhttp://docs.python.org/3/distutils/apiref.html#distutils.sysconfig.get_config_h_filenameX-trDX file_createdrD(jjX>http://docs.python.org/3/distutils/builtdist.html#file_createdX-trDXoperator.ifloordivrD(jjXAhttp://docs.python.org/3/library/operator.html#operator.ifloordivX-trDXinspect.getcommentsrD(jjXAhttp://docs.python.org/3/library/inspect.html#inspect.getcommentsX-trDX imp.lock_heldrD(jjX7http://docs.python.org/3/library/imp.html#imp.lock_heldX-trDXstring.capwordsrD(jjX<http://docs.python.org/3/library/string.html#string.capwordsX-trDXidrD(jjX2http://docs.python.org/3/library/functions.html#idX-trDX cmath.sinhrD(jjX6http://docs.python.org/3/library/cmath.html#cmath.sinhX-trDXreadline.get_completerrD(jjXEhttp://docs.python.org/3/library/readline.html#readline.get_completerX-trDXsysconfig.get_python_versionrD(jjXLhttp://docs.python.org/3/library/sysconfig.html#sysconfig.get_python_versionX-trDX tty.setcbreakrD(jjX7http://docs.python.org/3/library/tty.html#tty.setcbreakX-trDXos.unamerD(jjX1http://docs.python.org/3/library/os.html#os.unameX-trDXemail.charset.add_charsetrD(jjXMhttp://docs.python.org/3/library/email.charset.html#email.charset.add_charsetX-trDXos.sched_yieldrD(jjX7http://docs.python.org/3/library/os.html#os.sched_yieldX-trDXcgi.print_environrD(jjX;http://docs.python.org/3/library/cgi.html#cgi.print_environX-trDX os.fstatvfsrD(jjX4http://docs.python.org/3/library/os.html#os.fstatvfsX-trDXsignal.getitimerrD(jjX=http://docs.python.org/3/library/signal.html#signal.getitimerX-trDXcomplexrD(jjX7http://docs.python.org/3/library/functions.html#complexX-trEX tokenize.openrE(jjX<http://docs.python.org/3/library/tokenize.html#tokenize.openX-trEX multiprocessing.get_start_methodrE(jjXVhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.get_start_methodX-trEX gc.get_statsrE(jjX5http://docs.python.org/3/library/gc.html#gc.get_statsX-trEX time.timerE(jjX4http://docs.python.org/3/library/time.html#time.timeX-trEXemail.utils.localtimer E(jjXFhttp://docs.python.org/3/library/email.util.html#email.utils.localtimeX-tr EX uu.encoder E(jjX2http://docs.python.org/3/library/uu.html#uu.encodeX-tr EXxml.sax.parseStringr E(jjXAhttp://docs.python.org/3/library/xml.sax.html#xml.sax.parseStringX-trEXxml.sax.saxutils.escaperE(jjXKhttp://docs.python.org/3/library/xml.sax.utils.html#xml.sax.saxutils.escapeX-trEXplistlib.dumpsrE(jjX=http://docs.python.org/3/library/plistlib.html#plistlib.dumpsX-trEXasyncio.iscoroutinerE(jjXFhttp://docs.python.org/3/library/asyncio-task.html#asyncio.iscoroutineX-trEXbz2.openrE(jjX2http://docs.python.org/3/library/bz2.html#bz2.openX-trEXmsvcrt.heapminrE(jjX;http://docs.python.org/3/library/msvcrt.html#msvcrt.heapminX-trEXlogging.basicConfigrE(jjXAhttp://docs.python.org/3/library/logging.html#logging.basicConfigX-trEXoperator.__concat__rE(jjXBhttp://docs.python.org/3/library/operator.html#operator.__concat__X-trEXdifflib.unified_diffrE(jjXBhttp://docs.python.org/3/library/difflib.html#difflib.unified_diffX-trEX"distutils.sysconfig.get_python_incrE(jjXQhttp://docs.python.org/3/distutils/apiref.html#distutils.sysconfig.get_python_incX-tr EXctypes.string_atr!E(jjX=http://docs.python.org/3/library/ctypes.html#ctypes.string_atX-tr"EX math.tanhr#E(jjX4http://docs.python.org/3/library/math.html#math.tanhX-tr$EXminr%E(jjX3http://docs.python.org/3/library/functions.html#minX-tr&EXsyslog.openlogr'E(jjX;http://docs.python.org/3/library/syslog.html#syslog.openlogX-tr(EXbase64.standard_b64encoder)E(jjXFhttp://docs.python.org/3/library/base64.html#base64.standard_b64encodeX-tr*EXmimetypes.guess_all_extensionsr+E(jjXNhttp://docs.python.org/3/library/mimetypes.html#mimetypes.guess_all_extensionsX-tr,EXplatform.java_verr-E(jjX@http://docs.python.org/3/library/platform.html#platform.java_verX-tr.EXturtle.numinputr/E(jjX<http://docs.python.org/3/library/turtle.html#turtle.numinputX-tr0EXrandom.randranger1E(jjX=http://docs.python.org/3/library/random.html#random.randrangeX-tr2EX math.lgammar3E(jjX6http://docs.python.org/3/library/math.html#math.lgammaX-tr4EXfunctools.reducer5E(jjX@http://docs.python.org/3/library/functools.html#functools.reduceX-tr6EXoperator.__ilshift__r7E(jjXChttp://docs.python.org/3/library/operator.html#operator.__ilshift__X-tr8EXunittest.skipUnlessr9E(jjXBhttp://docs.python.org/3/library/unittest.html#unittest.skipUnlessX-tr:EXwinreg.SaveKeyr;E(jjX;http://docs.python.org/3/library/winreg.html#winreg.SaveKeyX-trEX heapq.heappopr?E(jjX9http://docs.python.org/3/library/heapq.html#heapq.heappopX-tr@EX pwd.getpwallrAE(jjX6http://docs.python.org/3/library/pwd.html#pwd.getpwallX-trBEXunittest.installHandlerrCE(jjXFhttp://docs.python.org/3/library/unittest.html#unittest.installHandlerX-trDEX spwd.getspallrEE(jjX8http://docs.python.org/3/library/spwd.html#spwd.getspallX-trFEXcurses.tigetnumrGE(jjX<http://docs.python.org/3/library/curses.html#curses.tigetnumX-trHEXsysconfig.get_config_h_filenamerIE(jjXOhttp://docs.python.org/3/library/sysconfig.html#sysconfig.get_config_h_filenameX-trJEXheapq.heappushrKE(jjX:http://docs.python.org/3/library/heapq.html#heapq.heappushX-trLEX turtle.setposrME(jjX:http://docs.python.org/3/library/turtle.html#turtle.setposX-trNEXssl.RAND_statusrOE(jjX9http://docs.python.org/3/library/ssl.html#ssl.RAND_statusX-trPEX os.execlerQE(jjX2http://docs.python.org/3/library/os.html#os.execleX-trREX math.acoshrSE(jjX5http://docs.python.org/3/library/math.html#math.acoshX-trTEXaudioop.lin2ulawrUE(jjX>http://docs.python.org/3/library/audioop.html#audioop.lin2ulawX-trVEXos.abortrWE(jjX1http://docs.python.org/3/library/os.html#os.abortX-trXEX logging.inforYE(jjX:http://docs.python.org/3/library/logging.html#logging.infoX-trZEXoperator.containsr[E(jjX@http://docs.python.org/3/library/operator.html#operator.containsX-tr\EXplatform.python_versionr]E(jjXFhttp://docs.python.org/3/library/platform.html#platform.python_versionX-tr^EXshutil.get_terminal_sizer_E(jjXEhttp://docs.python.org/3/library/shutil.html#shutil.get_terminal_sizeX-tr`EXemail.message_from_fileraE(jjXJhttp://docs.python.org/3/library/email.parser.html#email.message_from_fileX-trbEXturtle.screensizercE(jjX>http://docs.python.org/3/library/turtle.html#turtle.screensizeX-trdEXast.get_docstringreE(jjX;http://docs.python.org/3/library/ast.html#ast.get_docstringX-trfEXturtle.resizemodergE(jjX>http://docs.python.org/3/library/turtle.html#turtle.resizemodeX-trhEX time.asctimeriE(jjX7http://docs.python.org/3/library/time.html#time.asctimeX-trjEXctypes.memmoverkE(jjX;http://docs.python.org/3/library/ctypes.html#ctypes.memmoveX-trlEXos.pipermE(jjX0http://docs.python.org/3/library/os.html#os.pipeX-trnEXcollections.namedtupleroE(jjXHhttp://docs.python.org/3/library/collections.html#collections.namedtupleX-trpEXtimeit.default_timerrqE(jjXAhttp://docs.python.org/3/library/timeit.html#timeit.default_timerX-trrEX cmath.tanrsE(jjX5http://docs.python.org/3/library/cmath.html#cmath.tanX-trtEXfunctools.total_orderingruE(jjXHhttp://docs.python.org/3/library/functools.html#functools.total_orderingX-trvEXtime.clock_gettimerwE(jjX=http://docs.python.org/3/library/time.html#time.clock_gettimeX-trxEXfileinput.nextfileryE(jjXBhttp://docs.python.org/3/library/fileinput.html#fileinput.nextfileX-trzEXunittest.expectedFailurer{E(jjXGhttp://docs.python.org/3/library/unittest.html#unittest.expectedFailureX-tr|EXnntplib.decode_headerr}E(jjXChttp://docs.python.org/3/library/nntplib.html#nntplib.decode_headerX-tr~EXinputrE(jjX5http://docs.python.org/3/library/functions.html#inputX-trEX unittest.mainrE(jjX<http://docs.python.org/3/library/unittest.html#unittest.mainX-trEXbinrE(jjX3http://docs.python.org/3/library/functions.html#binX-trEX re.findallrE(jjX3http://docs.python.org/3/library/re.html#re.findallX-trEXsys.excepthookrE(jjX8http://docs.python.org/3/library/sys.html#sys.excepthookX-trEX curses.metarE(jjX8http://docs.python.org/3/library/curses.html#curses.metaX-trEXformatrE(jjX6http://docs.python.org/3/library/functions.html#formatX-trEX audioop.crossrE(jjX;http://docs.python.org/3/library/audioop.html#audioop.crossX-trEXsys.setprofilerE(jjX8http://docs.python.org/3/library/sys.html#sys.setprofileX-trEX fcntl.ioctlrE(jjX7http://docs.python.org/3/library/fcntl.html#fcntl.ioctlX-trEXoperator.length_hintrE(jjXChttp://docs.python.org/3/library/operator.html#operator.length_hintX-trEXurllib.parse.urlunparserE(jjXJhttp://docs.python.org/3/library/urllib.parse.html#urllib.parse.urlunparseX-trEXcalendar.setfirstweekdayrE(jjXGhttp://docs.python.org/3/library/calendar.html#calendar.setfirstweekdayX-trEX turtle.dotrE(jjX7http://docs.python.org/3/library/turtle.html#turtle.dotX-trEX os.getpgrprE(jjX3http://docs.python.org/3/library/os.html#os.getpgrpX-trEXturtle.fillingrE(jjX;http://docs.python.org/3/library/turtle.html#turtle.fillingX-trEXstringprep.in_table_c12rE(jjXHhttp://docs.python.org/3/library/stringprep.html#stringprep.in_table_c12X-trEX,readline.set_completion_display_matches_hookrE(jjX[http://docs.python.org/3/library/readline.html#readline.set_completion_display_matches_hookX-trEXstringprep.in_table_c11rE(jjXHhttp://docs.python.org/3/library/stringprep.html#stringprep.in_table_c11X-trEXos.path.relpathrE(jjX=http://docs.python.org/3/library/os.path.html#os.path.relpathX-trEXmailcap.findmatchrE(jjX?http://docs.python.org/3/library/mailcap.html#mailcap.findmatchX-trEX os.setregidrE(jjX4http://docs.python.org/3/library/os.html#os.setregidX-trEX json.dumprE(jjX4http://docs.python.org/3/library/json.html#json.dumpX-trEXmultiprocessing.PiperE(jjXJhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.PipeX-trEXstringprep.map_table_b2rE(jjXHhttp://docs.python.org/3/library/stringprep.html#stringprep.map_table_b2X-trEXcurses.ascii.ismetarE(jjXFhttp://docs.python.org/3/library/curses.ascii.html#curses.ascii.ismetaX-trEXsys.getprofilerE(jjX8http://docs.python.org/3/library/sys.html#sys.getprofileX-trEXsite.addsitedirrE(jjX:http://docs.python.org/3/library/site.html#site.addsitedirX-trEXshutil.get_unpack_formatsrE(jjXFhttp://docs.python.org/3/library/shutil.html#shutil.get_unpack_formatsX-trEXctypes.set_last_errorrE(jjXBhttp://docs.python.org/3/library/ctypes.html#ctypes.set_last_errorX-trEX math.modfrE(jjX4http://docs.python.org/3/library/math.html#math.modfX-trEXresource.getrlimitrE(jjXAhttp://docs.python.org/3/library/resource.html#resource.getrlimitX-trEXtempfile.mktemprE(jjX>http://docs.python.org/3/library/tempfile.html#tempfile.mktempX-trEXcurses.can_change_colorrE(jjXDhttp://docs.python.org/3/library/curses.html#curses.can_change_colorX-trEXos.preadrE(jjX1http://docs.python.org/3/library/os.html#os.preadX-trEXdecimal.getcontextrE(jjX@http://docs.python.org/3/library/decimal.html#decimal.getcontextX-trEX cmath.sinrE(jjX5http://docs.python.org/3/library/cmath.html#cmath.sinX-trEXresource.prlimitrE(jjX?http://docs.python.org/3/library/resource.html#resource.prlimitX-trEXturtle.textinputrE(jjX=http://docs.python.org/3/library/turtle.html#turtle.textinputX-trEXturtle.positionrE(jjX<http://docs.python.org/3/library/turtle.html#turtle.positionX-trEX#distutils.archive_util.make_zipfilerE(jjXRhttp://docs.python.org/3/distutils/apiref.html#distutils.archive_util.make_zipfileX-trEX operator.or_rE(jjX;http://docs.python.org/3/library/operator.html#operator.or_X-trEXbase64.encodestringrE(jjX@http://docs.python.org/3/library/base64.html#base64.encodestringX-trEXmsilib.add_streamrE(jjX>http://docs.python.org/3/library/msilib.html#msilib.add_streamX-trEX math.sqrtrE(jjX4http://docs.python.org/3/library/math.html#math.sqrtX-trEXos.fsyncrE(jjX1http://docs.python.org/3/library/os.html#os.fsyncX-trEXipaddress.ip_networkrE(jjXDhttp://docs.python.org/3/library/ipaddress.html#ipaddress.ip_networkX-trEXpprint.isrecursiverE(jjX?http://docs.python.org/3/library/pprint.html#pprint.isrecursiveX-trEX math.isnanrE(jjX5http://docs.python.org/3/library/math.html#math.isnanX-trEXlogging.disablerE(jjX=http://docs.python.org/3/library/logging.html#logging.disableX-trEXinspect.getmodulenamerE(jjXChttp://docs.python.org/3/library/inspect.html#inspect.getmodulenameX-trEX curses.filterrE(jjX:http://docs.python.org/3/library/curses.html#curses.filterX-trEX os.sendfilerE(jjX4http://docs.python.org/3/library/os.html#os.sendfileX-trEX re.searchrE(jjX2http://docs.python.org/3/library/re.html#re.searchX-trEXtermios.tcdrainrE(jjX=http://docs.python.org/3/library/termios.html#termios.tcdrainX-trEXtime.get_clock_inforE(jjX>http://docs.python.org/3/library/time.html#time.get_clock_infoX-trEXtime.clock_settimerE(jjX=http://docs.python.org/3/library/time.html#time.clock_settimeX-trEX gc.set_debugrE(jjX5http://docs.python.org/3/library/gc.html#gc.set_debugX-trEX math.atanrE(jjX4http://docs.python.org/3/library/math.html#math.atanX-trEX curses.newwinrE(jjX:http://docs.python.org/3/library/curses.html#curses.newwinX-trEX shlex.quoterE(jjX7http://docs.python.org/3/library/shlex.html#shlex.quoteX-trEXcolorsys.hls_to_rgbrE(jjXBhttp://docs.python.org/3/library/colorsys.html#colorsys.hls_to_rgbX-trEX turtle.donerE(jjX8http://docs.python.org/3/library/turtle.html#turtle.doneX-trEXimp.load_modulerE(jjX9http://docs.python.org/3/library/imp.html#imp.load_moduleX-trEXwarnings.resetwarningsrE(jjXEhttp://docs.python.org/3/library/warnings.html#warnings.resetwarningsX-trFXcurses.mousemaskrF(jjX=http://docs.python.org/3/library/curses.html#curses.mousemaskX-trFXdis.findlabelsrF(jjX8http://docs.python.org/3/library/dis.html#dis.findlabelsX-trFXbdb.checkfuncnamerF(jjX;http://docs.python.org/3/library/bdb.html#bdb.checkfuncnameX-trFX bdb.effectiverF(jjX7http://docs.python.org/3/library/bdb.html#bdb.effectiveX-trFXoperator.__imul__r F(jjX@http://docs.python.org/3/library/operator.html#operator.__imul__X-tr FXgzip.decompressr F(jjX:http://docs.python.org/3/library/gzip.html#gzip.decompressX-tr FXsys.getwindowsversionr F(jjX?http://docs.python.org/3/library/sys.html#sys.getwindowsversionX-trFXturtle.setworldcoordinatesrF(jjXGhttp://docs.python.org/3/library/turtle.html#turtle.setworldcoordinatesX-trFXurllib.request.getproxiesrF(jjXNhttp://docs.python.org/3/library/urllib.request.html#urllib.request.getproxiesX-trFXturtle.bgcolorrF(jjX;http://docs.python.org/3/library/turtle.html#turtle.bgcolorX-trFXsuperrF(jjX5http://docs.python.org/3/library/functions.html#superX-trFXtime.localtimerF(jjX9http://docs.python.org/3/library/time.html#time.localtimeX-trFXos.dup2rF(jjX0http://docs.python.org/3/library/os.html#os.dup2X-trFXpkgutil.extend_pathrF(jjXAhttp://docs.python.org/3/library/pkgutil.html#pkgutil.extend_pathX-trFXcalendar.monthrangerF(jjXBhttp://docs.python.org/3/library/calendar.html#calendar.monthrangeX-trFXos.path.expanduserrF(jjX@http://docs.python.org/3/library/os.path.html#os.path.expanduserX-tr FXlogging.setLoggerClassr!F(jjXDhttp://docs.python.org/3/library/logging.html#logging.setLoggerClassX-tr"FXfunctools.singledispatchr#F(jjXHhttp://docs.python.org/3/library/functools.html#functools.singledispatchX-tr$FX os.ftruncater%F(jjX5http://docs.python.org/3/library/os.html#os.ftruncateX-tr&FXurllib.parse.quote_plusr'F(jjXJhttp://docs.python.org/3/library/urllib.parse.html#urllib.parse.quote_plusX-tr(FXreadline.read_history_filer)F(jjXIhttp://docs.python.org/3/library/readline.html#readline.read_history_fileX-tr*FXcurses.panel.update_panelsr+F(jjXMhttp://docs.python.org/3/library/curses.panel.html#curses.panel.update_panelsX-tr,FXlogging.makeLogRecordr-F(jjXChttp://docs.python.org/3/library/logging.html#logging.makeLogRecordX-tr.FXasyncio.shieldr/F(jjXAhttp://docs.python.org/3/library/asyncio-task.html#asyncio.shieldX-tr0FXos.mkdirr1F(jjX1http://docs.python.org/3/library/os.html#os.mkdirX-tr2FXsignal.getsignalr3F(jjX=http://docs.python.org/3/library/signal.html#signal.getsignalX-tr4FX curses.tparmr5F(jjX9http://docs.python.org/3/library/curses.html#curses.tparmX-tr6FXturtle.backwardr7F(jjX<http://docs.python.org/3/library/turtle.html#turtle.backwardX-tr8FXsignal.sigpendingr9F(jjX>http://docs.python.org/3/library/signal.html#signal.sigpendingX-tr:FXoperator.indexr;F(jjX=http://docs.python.org/3/library/operator.html#operator.indexX-trFX audioop.avgppr?F(jjX;http://docs.python.org/3/library/audioop.html#audioop.avgppX-tr@FXsocket.CMSG_LENrAF(jjX<http://docs.python.org/3/library/socket.html#socket.CMSG_LENX-trBFXfloatrCF(jjX5http://docs.python.org/3/library/functions.html#floatX-trDFXoperator.__ge__rEF(jjX>http://docs.python.org/3/library/operator.html#operator.__ge__X-trFFXabc.abstractclassmethodrGF(jjXAhttp://docs.python.org/3/library/abc.html#abc.abstractclassmethodX-trHFXcurses.curs_setrIF(jjX<http://docs.python.org/3/library/curses.html#curses.curs_setX-trJFXoperator.__contains__rKF(jjXDhttp://docs.python.org/3/library/operator.html#operator.__contains__X-trLFXcurses.ascii.ctrlrMF(jjXDhttp://docs.python.org/3/library/curses.ascii.html#curses.ascii.ctrlX-trNFXnextrOF(jjX4http://docs.python.org/3/library/functions.html#nextX-trPFX nis.matchrQF(jjX3http://docs.python.org/3/library/nis.html#nis.matchX-trRFXcgi.parse_multipartrSF(jjX=http://docs.python.org/3/library/cgi.html#cgi.parse_multipartX-trTFXoperator.__pos__rUF(jjX?http://docs.python.org/3/library/operator.html#operator.__pos__X-trVFXos.writerWF(jjX1http://docs.python.org/3/library/os.html#os.writeX-trXFXpprint.pformatrYF(jjX;http://docs.python.org/3/library/pprint.html#pprint.pformatX-trZFX cmath.rectr[F(jjX6http://docs.python.org/3/library/cmath.html#cmath.rectX-tr\FXlocale.getlocaler]F(jjX=http://docs.python.org/3/library/locale.html#locale.getlocaleX-tr^FXsqlite3.register_adapterr_F(jjXFhttp://docs.python.org/3/library/sqlite3.html#sqlite3.register_adapterX-tr`FXtraceback.format_exception_onlyraF(jjXOhttp://docs.python.org/3/library/traceback.html#traceback.format_exception_onlyX-trbFX itertools.teercF(jjX=http://docs.python.org/3/library/itertools.html#itertools.teeX-trdFX ssl.RAND_addreF(jjX6http://docs.python.org/3/library/ssl.html#ssl.RAND_addX-trfFX audioop.maxpprgF(jjX;http://docs.python.org/3/library/audioop.html#audioop.maxppX-trhFXwinreg.EnableReflectionKeyriF(jjXGhttp://docs.python.org/3/library/winreg.html#winreg.EnableReflectionKeyX-trjFXfileinput.hook_encodedrkF(jjXFhttp://docs.python.org/3/library/fileinput.html#fileinput.hook_encodedX-trlFXcompileall.compile_pathrmF(jjXHhttp://docs.python.org/3/library/compileall.html#compileall.compile_pathX-trnFX os.fchownroF(jjX2http://docs.python.org/3/library/os.html#os.fchownX-trpFXctypes.wstring_atrqF(jjX>http://docs.python.org/3/library/ctypes.html#ctypes.wstring_atX-trrFX codecs.encodersF(jjX:http://docs.python.org/3/library/codecs.html#codecs.encodeX-trtFXos.linkruF(jjX0http://docs.python.org/3/library/os.html#os.linkX-trvFX curses.unctrlrwF(jjX:http://docs.python.org/3/library/curses.html#curses.unctrlX-trxFXshutil.copyfileobjryF(jjX?http://docs.python.org/3/library/shutil.html#shutil.copyfileobjX-trzFXunicodedata.decimalr{F(jjXEhttp://docs.python.org/3/library/unicodedata.html#unicodedata.decimalX-tr|FXturtle.colormoder}F(jjX=http://docs.python.org/3/library/turtle.html#turtle.colormodeX-tr~FX os.WIFEXITEDrF(jjX5http://docs.python.org/3/library/os.html#os.WIFEXITEDX-trFXcsv.get_dialectrF(jjX9http://docs.python.org/3/library/csv.html#csv.get_dialectX-trFX profile.runrF(jjX9http://docs.python.org/3/library/profile.html#profile.runX-trFXbase64.b85encoderF(jjX=http://docs.python.org/3/library/base64.html#base64.b85encodeX-trFXcurses.wrapperrF(jjX;http://docs.python.org/3/library/curses.html#curses.wrapperX-trFX platform.distrF(jjX<http://docs.python.org/3/library/platform.html#platform.distX-trFX ctypes.byrefrF(jjX9http://docs.python.org/3/library/ctypes.html#ctypes.byrefX-trFXplatform.python_buildrF(jjXDhttp://docs.python.org/3/library/platform.html#platform.python_buildX-trFXinspect.signaturerF(jjX?http://docs.python.org/3/library/inspect.html#inspect.signatureX-trFXbinascii.crc_hqxrF(jjX?http://docs.python.org/3/library/binascii.html#binascii.crc_hqxX-trFXwinreg.DisableReflectionKeyrF(jjXHhttp://docs.python.org/3/library/winreg.html#winreg.DisableReflectionKeyX-trFXbase64.encodebytesrF(jjX?http://docs.python.org/3/library/base64.html#base64.encodebytesX-trFXunicodedata.namerF(jjXBhttp://docs.python.org/3/library/unicodedata.html#unicodedata.nameX-trFXos.get_terminal_sizerF(jjX=http://docs.python.org/3/library/os.html#os.get_terminal_sizeX-trFXemail.utils.quoterF(jjXBhttp://docs.python.org/3/library/email.util.html#email.utils.quoteX-trFX asyncore.looprF(jjX<http://docs.python.org/3/library/asyncore.html#asyncore.loopX-trFXsqlite3.register_converterrF(jjXHhttp://docs.python.org/3/library/sqlite3.html#sqlite3.register_converterX-trFXtextwrap.shortenrF(jjX?http://docs.python.org/3/library/textwrap.html#textwrap.shortenX-trFXipaddress.collapse_addressesrF(jjXLhttp://docs.python.org/3/library/ipaddress.html#ipaddress.collapse_addressesX-trFXctypes.util.find_libraryrF(jjXEhttp://docs.python.org/3/library/ctypes.html#ctypes.util.find_libraryX-trFXdis.stack_effectrF(jjX:http://docs.python.org/3/library/dis.html#dis.stack_effectX-trFXbinascii.rledecode_hqxrF(jjXEhttp://docs.python.org/3/library/binascii.html#binascii.rledecode_hqxX-trFX logging.debugrF(jjX;http://docs.python.org/3/library/logging.html#logging.debugX-trFXstringprep.map_table_b3rF(jjXHhttp://docs.python.org/3/library/stringprep.html#stringprep.map_table_b3X-trFXos.rmdirrF(jjX1http://docs.python.org/3/library/os.html#os.rmdirX-trFXsyslog.closelogrF(jjX<http://docs.python.org/3/library/syslog.html#syslog.closelogX-trFXfunctools.partialrF(jjXAhttp://docs.python.org/3/library/functools.html#functools.partialX-trFX getopt.getoptrF(jjX:http://docs.python.org/3/library/getopt.html#getopt.getoptX-trFX os.getpidrF(jjX2http://docs.python.org/3/library/os.html#os.getpidX-trFX cmath.isnanrF(jjX7http://docs.python.org/3/library/cmath.html#cmath.isnanX-trFXos.path.splituncrF(jjX>http://docs.python.org/3/library/os.path.html#os.path.splituncX-trFXstringprep.in_table_d1rF(jjXGhttp://docs.python.org/3/library/stringprep.html#stringprep.in_table_d1X-trFXsqlite3.complete_statementrF(jjXHhttp://docs.python.org/3/library/sqlite3.html#sqlite3.complete_statementX-trFXstringprep.in_table_d2rF(jjXGhttp://docs.python.org/3/library/stringprep.html#stringprep.in_table_d2X-trFXfaulthandler.registerrF(jjXHhttp://docs.python.org/3/library/faulthandler.html#faulthandler.registerX-trFX!distutils.dep_util.newer_pairwiserF(jjXPhttp://docs.python.org/3/distutils/apiref.html#distutils.dep_util.newer_pairwiseX-trFXoperator.__iadd__rF(jjX@http://docs.python.org/3/library/operator.html#operator.__iadd__X-trFXoperator.lshiftrF(jjX>http://docs.python.org/3/library/operator.html#operator.lshiftX-trFXtokenize.untokenizerF(jjXBhttp://docs.python.org/3/library/tokenize.html#tokenize.untokenizeX-trFXcurses.ungetchrF(jjX;http://docs.python.org/3/library/curses.html#curses.ungetchX-trFX pwd.getpwnamrF(jjX6http://docs.python.org/3/library/pwd.html#pwd.getpwnamX-trFXtraceback.print_excrF(jjXChttp://docs.python.org/3/library/traceback.html#traceback.print_excX-trFXos.minorrF(jjX1http://docs.python.org/3/library/os.html#os.minorX-trFXcopyreg.picklerF(jjX<http://docs.python.org/3/library/copyreg.html#copyreg.pickleX-trFXturtle.showturtlerF(jjX>http://docs.python.org/3/library/turtle.html#turtle.showturtleX-trFXunittest.mock.callrF(jjXFhttp://docs.python.org/3/library/unittest.mock.html#unittest.mock.callX-trFXlocale.strxfrmrF(jjX;http://docs.python.org/3/library/locale.html#locale.strxfrmX-trFXzlib.decompressrF(jjX:http://docs.python.org/3/library/zlib.html#zlib.decompressX-trFX curses.flashrF(jjX9http://docs.python.org/3/library/curses.html#curses.flashX-trFX codecs.openrF(jjX8http://docs.python.org/3/library/codecs.html#codecs.openX-trFXemail.utils.formataddrrF(jjXGhttp://docs.python.org/3/library/email.util.html#email.utils.formataddrX-trFX math.atanhrF(jjX5http://docs.python.org/3/library/math.html#math.atanhX-trFXitertools.starmaprF(jjXAhttp://docs.python.org/3/library/itertools.html#itertools.starmapX-trFXos.posix_fallocaterF(jjX;http://docs.python.org/3/library/os.html#os.posix_fallocateX-trFXbinascii.rlecode_hqxrF(jjXChttp://docs.python.org/3/library/binascii.html#binascii.rlecode_hqxX-trFXitertools.groupbyrF(jjXAhttp://docs.python.org/3/library/itertools.html#itertools.groupbyX-trFX heapq.heapifyrF(jjX9http://docs.python.org/3/library/heapq.html#heapq.heapifyX-trFX+multiprocessing.connection.answer_challengerF(jjXahttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.connection.answer_challengeX-trFX gettext.findrF(jjX:http://docs.python.org/3/library/gettext.html#gettext.findX-trFXsysconfig.get_pathsrF(jjXChttp://docs.python.org/3/library/sysconfig.html#sysconfig.get_pathsX-trFXrandom.betavariaterF(jjX?http://docs.python.org/3/library/random.html#random.betavariateX-trFXpdb.runrF(jjX1http://docs.python.org/3/library/pdb.html#pdb.runX-trFXasyncio.get_event_loop_policyrF(jjXUhttp://docs.python.org/3/library/asyncio-eventloop.html#asyncio.get_event_loop_policyX-trFXaudioop.findfactorrF(jjX@http://docs.python.org/3/library/audioop.html#audioop.findfactorX-trFXos.path.normpathrF(jjX>http://docs.python.org/3/library/os.path.html#os.path.normpathX-trGXoperator.__setitem__rG(jjXChttp://docs.python.org/3/library/operator.html#operator.__setitem__X-trGXthreading.stack_sizerG(jjXDhttp://docs.python.org/3/library/threading.html#threading.stack_sizeX-trGXos.path.abspathrG(jjX=http://docs.python.org/3/library/os.path.html#os.path.abspathX-trGXplatform.versionrG(jjX?http://docs.python.org/3/library/platform.html#platform.versionX-trGX imghdr.whatr G(jjX8http://docs.python.org/3/library/imghdr.html#imghdr.whatX-tr GXcurses.has_keyr G(jjX;http://docs.python.org/3/library/curses.html#curses.has_keyX-tr GXcodecs.ignore_errorsr G(jjXAhttp://docs.python.org/3/library/codecs.html#codecs.ignore_errorsX-trGXlogging.config.dictConfigrG(jjXNhttp://docs.python.org/3/library/logging.config.html#logging.config.dictConfigX-trGXcodecs.getincrementalencoderrG(jjXIhttp://docs.python.org/3/library/codecs.html#codecs.getincrementalencoderX-trGXimaplib.ParseFlagsrG(jjX@http://docs.python.org/3/library/imaplib.html#imaplib.ParseFlagsX-trGXlocale.resetlocalerG(jjX?http://docs.python.org/3/library/locale.html#locale.resetlocaleX-trGXtest.support.anticipate_failurerG(jjXJhttp://docs.python.org/3/library/test.html#test.support.anticipate_failureX-trGX os.getenvrG(jjX2http://docs.python.org/3/library/os.html#os.getenvX-trGXturtle.onscreenclickrG(jjXAhttp://docs.python.org/3/library/turtle.html#turtle.onscreenclickX-trGXwinreg.ExpandEnvironmentStringsrG(jjXLhttp://docs.python.org/3/library/winreg.html#winreg.ExpandEnvironmentStringsX-trGXimportlib.__import__rG(jjXDhttp://docs.python.org/3/library/importlib.html#importlib.__import__X-tr GXoperator.__pow__r!G(jjX?http://docs.python.org/3/library/operator.html#operator.__pow__X-tr"GXcurses.has_colorsr#G(jjX>http://docs.python.org/3/library/curses.html#curses.has_colorsX-tr$GXcurses.ascii.isxdigitr%G(jjXHhttp://docs.python.org/3/library/curses.ascii.html#curses.ascii.isxdigitX-tr&GX sys.internr'G(jjX4http://docs.python.org/3/library/sys.html#sys.internX-tr(GXdifflib.get_close_matchesr)G(jjXGhttp://docs.python.org/3/library/difflib.html#difflib.get_close_matchesX-tr*GXweakref.getweakrefsr+G(jjXAhttp://docs.python.org/3/library/weakref.html#weakref.getweakrefsX-tr,GXasyncio.start_unix_serverr-G(jjXNhttp://docs.python.org/3/library/asyncio-stream.html#asyncio.start_unix_serverX-tr.GXcurses.resizetermr/G(jjX>http://docs.python.org/3/library/curses.html#curses.resizetermX-tr0GXos.path.splitdriver1G(jjX@http://docs.python.org/3/library/os.path.html#os.path.splitdriveX-tr2GXsocket.getdefaulttimeoutr3G(jjXEhttp://docs.python.org/3/library/socket.html#socket.getdefaulttimeoutX-tr4GXlogging.warningr5G(jjX=http://docs.python.org/3/library/logging.html#logging.warningX-tr6GXos.mknodr7G(jjX1http://docs.python.org/3/library/os.html#os.mknodX-tr8GX os.WCOREDUMPr9G(jjX5http://docs.python.org/3/library/os.html#os.WCOREDUMPX-tr:GXctypes.POINTERr;G(jjX;http://docs.python.org/3/library/ctypes.html#ctypes.POINTERX-trGXreadline.get_completion_typer?G(jjXKhttp://docs.python.org/3/library/readline.html#readline.get_completion_typeX-tr@GX os.WIFSTOPPEDrAG(jjX6http://docs.python.org/3/library/os.html#os.WIFSTOPPEDX-trBGX os.openptyrCG(jjX3http://docs.python.org/3/library/os.html#os.openptyX-trDGXshutil.copytreerEG(jjX<http://docs.python.org/3/library/shutil.html#shutil.copytreeX-trFGXcodecs.xmlcharrefreplace_errorsrGG(jjXLhttp://docs.python.org/3/library/codecs.html#codecs.xmlcharrefreplace_errorsX-trHGXfaulthandler.is_enabledrIG(jjXJhttp://docs.python.org/3/library/faulthandler.html#faulthandler.is_enabledX-trJGXoperator.countOfrKG(jjX?http://docs.python.org/3/library/operator.html#operator.countOfX-trLGX os.fchdirrMG(jjX2http://docs.python.org/3/library/os.html#os.fchdirX-trNGXwinreg.EnumValuerOG(jjX=http://docs.python.org/3/library/winreg.html#winreg.EnumValueX-trPGXurllib.request.urlcleanuprQG(jjXNhttp://docs.python.org/3/library/urllib.request.html#urllib.request.urlcleanupX-trRGXemail.utils.formatdaterSG(jjXGhttp://docs.python.org/3/library/email.util.html#email.utils.formatdateX-trTGXmimetypes.guess_typerUG(jjXDhttp://docs.python.org/3/library/mimetypes.html#mimetypes.guess_typeX-trVGX curses.norawrWG(jjX9http://docs.python.org/3/library/curses.html#curses.norawX-trXGX cmath.asinhrYG(jjX7http://docs.python.org/3/library/cmath.html#cmath.asinhX-trZGX imp.get_tagr[G(jjX5http://docs.python.org/3/library/imp.html#imp.get_tagX-tr\GXturtle.resetscreenr]G(jjX?http://docs.python.org/3/library/turtle.html#turtle.resetscreenX-tr^GXlocale.strcollr_G(jjX;http://docs.python.org/3/library/locale.html#locale.strcollX-tr`Gu(Xbinascii.a2b_uuraG(jjX>http://docs.python.org/3/library/binascii.html#binascii.a2b_uuX-trbGXlzma.decompressrcG(jjX:http://docs.python.org/3/library/lzma.html#lzma.decompressX-trdGXmsvcrt.ungetwchreG(jjX<http://docs.python.org/3/library/msvcrt.html#msvcrt.ungetwchX-trfGXgc.get_objectsrgG(jjX7http://docs.python.org/3/library/gc.html#gc.get_objectsX-trhGX os.fpathconfriG(jjX5http://docs.python.org/3/library/os.html#os.fpathconfX-trjGXturtle.turtlesizerkG(jjX>http://docs.python.org/3/library/turtle.html#turtle.turtlesizeX-trlGXsys.getswitchintervalrmG(jjX?http://docs.python.org/3/library/sys.html#sys.getswitchintervalX-trnGX gc.get_debugroG(jjX5http://docs.python.org/3/library/gc.html#gc.get_debugX-trpGXxml.sax.saxutils.unescaperqG(jjXMhttp://docs.python.org/3/library/xml.sax.utils.html#xml.sax.saxutils.unescapeX-trrGXctypes.alignmentrsG(jjX=http://docs.python.org/3/library/ctypes.html#ctypes.alignmentX-trtGX venv.createruG(jjX6http://docs.python.org/3/library/venv.html#venv.createX-trvGXctypes.FormatErrorrwG(jjX?http://docs.python.org/3/library/ctypes.html#ctypes.FormatErrorX-trxGXoperator.__index__ryG(jjXAhttp://docs.python.org/3/library/operator.html#operator.__index__X-trzGX os.putenvr{G(jjX2http://docs.python.org/3/library/os.html#os.putenvX-tr|GX_thread.interrupt_mainr}G(jjXDhttp://docs.python.org/3/library/_thread.html#_thread.interrupt_mainX-tr~GXresource.getrusagerG(jjXAhttp://docs.python.org/3/library/resource.html#resource.getrusageX-trGX os.spawnvrG(jjX2http://docs.python.org/3/library/os.html#os.spawnvX-trGXssl.DER_cert_to_PEM_certrG(jjXBhttp://docs.python.org/3/library/ssl.html#ssl.DER_cert_to_PEM_certX-trGXturtle.hideturtlerG(jjX>http://docs.python.org/3/library/turtle.html#turtle.hideturtleX-trGXbisect.insort_leftrG(jjX?http://docs.python.org/3/library/bisect.html#bisect.insort_leftX-trGX stat.S_ISPORTrG(jjX8http://docs.python.org/3/library/stat.html#stat.S_ISPORTX-trGX os.renamerG(jjX2http://docs.python.org/3/library/os.html#os.renameX-trGXio.openrG(jjX0http://docs.python.org/3/library/io.html#io.openX-trGXemail.encoders.encode_quoprirG(jjXQhttp://docs.python.org/3/library/email.encoders.html#email.encoders.encode_quopriX-trGXcurses.mouseintervalrG(jjXAhttp://docs.python.org/3/library/curses.html#curses.mouseintervalX-trGXoperator.__mod__rG(jjX?http://docs.python.org/3/library/operator.html#operator.__mod__X-trGXdistutils.file_util.move_filerG(jjXLhttp://docs.python.org/3/distutils/apiref.html#distutils.file_util.move_fileX-trGXos.path.getmtimerG(jjX>http://docs.python.org/3/library/os.path.html#os.path.getmtimeX-trGXcurses.ascii.isctrlrG(jjXFhttp://docs.python.org/3/library/curses.ascii.html#curses.ascii.isctrlX-trGXweakref.getweakrefcountrG(jjXEhttp://docs.python.org/3/library/weakref.html#weakref.getweakrefcountX-trGXos.removexattrrG(jjX7http://docs.python.org/3/library/os.html#os.removexattrX-trGX cmath.acoshrG(jjX7http://docs.python.org/3/library/cmath.html#cmath.acoshX-trGXturtle.get_polyrG(jjX<http://docs.python.org/3/library/turtle.html#turtle.get_polyX-trGXrandom.gammavariaterG(jjX@http://docs.python.org/3/library/random.html#random.gammavariateX-trGXiterrG(jjX4http://docs.python.org/3/library/functions.html#iterX-trGX os.lchmodrG(jjX2http://docs.python.org/3/library/os.html#os.lchmodX-trGXhasattrrG(jjX7http://docs.python.org/3/library/functions.html#hasattrX-trGX csv.readerrG(jjX4http://docs.python.org/3/library/csv.html#csv.readerX-trGXturtle.setheadingrG(jjX>http://docs.python.org/3/library/turtle.html#turtle.setheadingX-trGXtest.support.captured_stdoutrG(jjXGhttp://docs.python.org/3/library/test.html#test.support.captured_stdoutX-trGXcalendar.calendarrG(jjX@http://docs.python.org/3/library/calendar.html#calendar.calendarX-trGXroundrG(jjX5http://docs.python.org/3/library/functions.html#roundX-trGXdirrG(jjX3http://docs.python.org/3/library/functions.html#dirX-trGXasyncio.gatherrG(jjXAhttp://docs.python.org/3/library/asyncio-task.html#asyncio.gatherX-trGXdistutils.util.change_rootrG(jjXIhttp://docs.python.org/3/distutils/apiref.html#distutils.util.change_rootX-trGXmath.powrG(jjX3http://docs.python.org/3/library/math.html#math.powX-trGXmultiprocessing.cpu_countrG(jjXOhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.cpu_countX-trGXrandom.paretovariaterG(jjXAhttp://docs.python.org/3/library/random.html#random.paretovariateX-trGX#readline.get_current_history_lengthrG(jjXRhttp://docs.python.org/3/library/readline.html#readline.get_current_history_lengthX-trGX math.fsumrG(jjX4http://docs.python.org/3/library/math.html#math.fsumX-trGXplatform.unamerG(jjX=http://docs.python.org/3/library/platform.html#platform.unameX-trGXlocale.localeconvrG(jjX>http://docs.python.org/3/library/locale.html#locale.localeconvX-trGXcurses.unget_wchrG(jjX=http://docs.python.org/3/library/curses.html#curses.unget_wchX-trGXcmath.isfiniterG(jjX:http://docs.python.org/3/library/cmath.html#cmath.isfiniteX-trGX os.mkfiforG(jjX2http://docs.python.org/3/library/os.html#os.mkfifoX-trGXtracemalloc.startrG(jjXChttp://docs.python.org/3/library/tracemalloc.html#tracemalloc.startX-trGXstruct.calcsizerG(jjX<http://docs.python.org/3/library/struct.html#struct.calcsizeX-trGX site.mainrG(jjX4http://docs.python.org/3/library/site.html#site.mainX-trGX os.waitpidrG(jjX3http://docs.python.org/3/library/os.html#os.waitpidX-trGX operator.addrG(jjX;http://docs.python.org/3/library/operator.html#operator.addX-trGX!faulthandler.dump_traceback_laterrG(jjXThttp://docs.python.org/3/library/faulthandler.html#faulthandler.dump_traceback_laterX-trGX os.getloadavgrG(jjX6http://docs.python.org/3/library/os.html#os.getloadavgX-trGXfileinput.hook_compressedrG(jjXIhttp://docs.python.org/3/library/fileinput.html#fileinput.hook_compressedX-trGX dis.show_coderG(jjX7http://docs.python.org/3/library/dis.html#dis.show_codeX-trGXunittest.mock.mock_openrG(jjXKhttp://docs.python.org/3/library/unittest.mock.html#unittest.mock.mock_openX-trGX curses.setsyxrG(jjX:http://docs.python.org/3/library/curses.html#curses.setsyxX-trGXrandom.expovariaterG(jjX?http://docs.python.org/3/library/random.html#random.expovariateX-trGXasyncio.open_unix_connectionrG(jjXQhttp://docs.python.org/3/library/asyncio-stream.html#asyncio.open_unix_connectionX-trGX os.WTERMSIGrG(jjX4http://docs.python.org/3/library/os.html#os.WTERMSIGX-trGXdoctest.DocFileSuiterG(jjXBhttp://docs.python.org/3/library/doctest.html#doctest.DocFileSuiteX-trGX gzip.openrG(jjX4http://docs.python.org/3/library/gzip.html#gzip.openX-trGXinspect.ismemberdescriptorrG(jjXHhttp://docs.python.org/3/library/inspect.html#inspect.ismemberdescriptorX-trGX winsound.BeeprG(jjX<http://docs.python.org/3/library/winsound.html#winsound.BeepX-trGX zlib.adler32rG(jjX7http://docs.python.org/3/library/zlib.html#zlib.adler32X-trGX os.getenvbrG(jjX3http://docs.python.org/3/library/os.html#os.getenvbX-trGXbinascii.a2b_hqxrG(jjX?http://docs.python.org/3/library/binascii.html#binascii.a2b_hqxX-trGXcolorsys.rgb_to_hsvrG(jjXBhttp://docs.python.org/3/library/colorsys.html#colorsys.rgb_to_hsvX-trGX quopri.decoderG(jjX:http://docs.python.org/3/library/quopri.html#quopri.decodeX-trGXoperator.ilshiftrG(jjX?http://docs.python.org/3/library/operator.html#operator.ilshiftX-trGXstruct.pack_intorG(jjX=http://docs.python.org/3/library/struct.html#struct.pack_intoX-trHXxml.etree.ElementTree.tostringrH(jjXZhttp://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.tostringX-trHX json.dumpsrH(jjX5http://docs.python.org/3/library/json.html#json.dumpsX-trHX(faulthandler.cancel_dump_traceback_laterrH(jjX[http://docs.python.org/3/library/faulthandler.html#faulthandler.cancel_dump_traceback_laterX-trHX pwd.getpwuidrH(jjX6http://docs.python.org/3/library/pwd.html#pwd.getpwuidX-trHXmath.factorialr H(jjX9http://docs.python.org/3/library/math.html#math.factorialX-tr HXinspect.getsourcelinesr H(jjXDhttp://docs.python.org/3/library/inspect.html#inspect.getsourcelinesX-tr HXgc.get_referrersr H(jjX9http://docs.python.org/3/library/gc.html#gc.get_referrersX-trHXsysconfig.get_platformrH(jjXFhttp://docs.python.org/3/library/sysconfig.html#sysconfig.get_platformX-trHX socket.fromfdrH(jjX:http://docs.python.org/3/library/socket.html#socket.fromfdX-trHX curses.cbreakrH(jjX:http://docs.python.org/3/library/curses.html#curses.cbreakX-trHXparser.tuple2strH(jjX<http://docs.python.org/3/library/parser.html#parser.tuple2stX-trHX os.getgroupsrH(jjX5http://docs.python.org/3/library/os.html#os.getgroupsX-trHXlogging.captureWarningsrH(jjXEhttp://docs.python.org/3/library/logging.html#logging.captureWarningsX-trHX os.setresgidrH(jjX5http://docs.python.org/3/library/os.html#os.setresgidX-trHXurllib.parse.parse_qslrH(jjXIhttp://docs.python.org/3/library/urllib.parse.html#urllib.parse.parse_qslX-trHXbinascii.b2a_hqxrH(jjX?http://docs.python.org/3/library/binascii.html#binascii.b2a_hqxX-tr HX staticmethodr!H(jjX<http://docs.python.org/3/library/functions.html#staticmethodX-tr"HX math.acosr#H(jjX4http://docs.python.org/3/library/math.html#math.acosX-tr$HXplatform.processorr%H(jjXAhttp://docs.python.org/3/library/platform.html#platform.processorX-tr&HXfaulthandler.disabler'H(jjXGhttp://docs.python.org/3/library/faulthandler.html#faulthandler.disableX-tr(HXoperator.__itruediv__r)H(jjXDhttp://docs.python.org/3/library/operator.html#operator.__itruediv__X-tr*HX wave.openfpr+H(jjX6http://docs.python.org/3/library/wave.html#wave.openfpX-tr,HXoperator.__ior__r-H(jjX?http://docs.python.org/3/library/operator.html#operator.__ior__X-tr.HXplistlib.readPlistr/H(jjXAhttp://docs.python.org/3/library/plistlib.html#plistlib.readPlistX-tr0HXzlib.decompressobjr1H(jjX=http://docs.python.org/3/library/zlib.html#zlib.decompressobjX-tr2HXcurses.resize_termr3H(jjX?http://docs.python.org/3/library/curses.html#curses.resize_termX-tr4HXsocket.gethostbynamer5H(jjXAhttp://docs.python.org/3/library/socket.html#socket.gethostbynameX-tr6HXemail.message_from_binary_filer7H(jjXQhttp://docs.python.org/3/library/email.parser.html#email.message_from_binary_fileX-tr8HX os.accessr9H(jjX2http://docs.python.org/3/library/os.html#os.accessX-tr:HX time.strftimer;H(jjX8http://docs.python.org/3/library/time.html#time.strftimeX-trHXwarnings.simplefilterr?H(jjXDhttp://docs.python.org/3/library/warnings.html#warnings.simplefilterX-tr@HXtoken.ISNONTERMINALrAH(jjX?http://docs.python.org/3/library/token.html#token.ISNONTERMINALX-trBHXdivmodrCH(jjX6http://docs.python.org/3/library/functions.html#divmodX-trDHX tracemalloc.get_object_tracebackrEH(jjXRhttp://docs.python.org/3/library/tracemalloc.html#tracemalloc.get_object_tracebackX-trFHXsys.exitrGH(jjX2http://docs.python.org/3/library/sys.html#sys.exitX-trHHXxml.etree.ElementTree.dumprIH(jjXVhttp://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.dumpX-trJHX os.tcgetpgrprKH(jjX5http://docs.python.org/3/library/os.html#os.tcgetpgrpX-trLHXziprMH(jjX3http://docs.python.org/3/library/functions.html#zipX-trNHX audioop.mulrOH(jjX9http://docs.python.org/3/library/audioop.html#audioop.mulX-trPHXlocale.normalizerQH(jjX=http://docs.python.org/3/library/locale.html#locale.normalizeX-trRHXimaplib.Time2InternaldaterSH(jjXGhttp://docs.python.org/3/library/imaplib.html#imaplib.Time2InternaldateX-trTHXchrrUH(jjX3http://docs.python.org/3/library/functions.html#chrX-trVHXkeyword.iskeywordrWH(jjX?http://docs.python.org/3/library/keyword.html#keyword.iskeywordX-trXHXreadline.get_begidxrYH(jjXBhttp://docs.python.org/3/library/readline.html#readline.get_begidxX-trZHXast.copy_locationr[H(jjX;http://docs.python.org/3/library/ast.html#ast.copy_locationX-tr\HXwsgiref.util.request_urir]H(jjXFhttp://docs.python.org/3/library/wsgiref.html#wsgiref.util.request_uriX-tr^HXgettext.bind_textdomain_codesetr_H(jjXMhttp://docs.python.org/3/library/gettext.html#gettext.bind_textdomain_codesetX-tr`HXinspect.unwrapraH(jjX<http://docs.python.org/3/library/inspect.html#inspect.unwrapX-trbHX grp.getgrgidrcH(jjX6http://docs.python.org/3/library/grp.html#grp.getgrgidX-trdHXsubprocess.check_outputreH(jjXHhttp://docs.python.org/3/library/subprocess.html#subprocess.check_outputX-trfHX turtle.resetrgH(jjX9http://docs.python.org/3/library/turtle.html#turtle.resetX-trhHXcalendar.prcalriH(jjX=http://docs.python.org/3/library/calendar.html#calendar.prcalX-trjHXemail.utils.encode_rfc2231rkH(jjXKhttp://docs.python.org/3/library/email.util.html#email.utils.encode_rfc2231X-trlHX cgitb.enablermH(jjX8http://docs.python.org/3/library/cgitb.html#cgitb.enableX-trnHXxmlrpc.client.dumpsroH(jjXGhttp://docs.python.org/3/library/xmlrpc.client.html#xmlrpc.client.dumpsX-trpHXcreate_shortcutrqH(jjXAhttp://docs.python.org/3/distutils/builtdist.html#create_shortcutX-trrHXurllib.parse.quotersH(jjXEhttp://docs.python.org/3/library/urllib.parse.html#urllib.parse.quoteX-trtHX stat.S_ISWHTruH(jjX7http://docs.python.org/3/library/stat.html#stat.S_ISWHTX-trvHXcurses.is_term_resizedrwH(jjXChttp://docs.python.org/3/library/curses.html#curses.is_term_resizedX-trxHX select.selectryH(jjX:http://docs.python.org/3/library/select.html#select.selectX-trzHXast.dumpr{H(jjX2http://docs.python.org/3/library/ast.html#ast.dumpX-tr|HXemail.charset.add_codecr}H(jjXKhttp://docs.python.org/3/library/email.charset.html#email.charset.add_codecX-tr~HXemail.utils.parseaddrrH(jjXFhttp://docs.python.org/3/library/email.util.html#email.utils.parseaddrX-trHX time.tzsetrH(jjX5http://docs.python.org/3/library/time.html#time.tzsetX-trHXsocket.getprotobynamerH(jjXBhttp://docs.python.org/3/library/socket.html#socket.getprotobynameX-trHX msvcrt.kbhitrH(jjX9http://docs.python.org/3/library/msvcrt.html#msvcrt.kbhitX-trHXgettext.lgettextrH(jjX>http://docs.python.org/3/library/gettext.html#gettext.lgettextX-trHX select.keventrH(jjX:http://docs.python.org/3/library/select.html#select.keventX-trHXemail.utils.decode_rfc2231rH(jjXKhttp://docs.python.org/3/library/email.util.html#email.utils.decode_rfc2231X-trHXmsvcrt.setmoderH(jjX;http://docs.python.org/3/library/msvcrt.html#msvcrt.setmodeX-trHX grp.getgrallrH(jjX6http://docs.python.org/3/library/grp.html#grp.getgrallX-trHX shlex.splitrH(jjX7http://docs.python.org/3/library/shlex.html#shlex.splitX-trHX crypt.cryptrH(jjX7http://docs.python.org/3/library/crypt.html#crypt.cryptX-trHX random.gaussrH(jjX9http://docs.python.org/3/library/random.html#random.gaussX-trHX fcntl.fcntlrH(jjX7http://docs.python.org/3/library/fcntl.html#fcntl.fcntlX-trHXinspect.istracebackrH(jjXAhttp://docs.python.org/3/library/inspect.html#inspect.istracebackX-trHXos.readvrH(jjX1http://docs.python.org/3/library/os.html#os.readvX-trHXturtle.fillcolorrH(jjX=http://docs.python.org/3/library/turtle.html#turtle.fillcolorX-trHX math.coshrH(jjX4http://docs.python.org/3/library/math.html#math.coshX-trHX html.unescaperH(jjX8http://docs.python.org/3/library/html.html#html.unescapeX-trHX os.getegidrH(jjX3http://docs.python.org/3/library/os.html#os.getegidX-trHXoperator.__ifloordiv__rH(jjXEhttp://docs.python.org/3/library/operator.html#operator.__ifloordiv__X-trHX asyncio.sleeprH(jjX@http://docs.python.org/3/library/asyncio-task.html#asyncio.sleepX-trHXnis.catrH(jjX1http://docs.python.org/3/library/nis.html#nis.catX-trHX!xml.dom.registerDOMImplementationrH(jjXOhttp://docs.python.org/3/library/xml.dom.html#xml.dom.registerDOMImplementationX-trHXreadline.get_completer_delimsrH(jjXLhttp://docs.python.org/3/library/readline.html#readline.get_completer_delimsX-trHXxml.parsers.expat.ParserCreaterH(jjXLhttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.ParserCreateX-trHXtest.support.run_doctestrH(jjXChttp://docs.python.org/3/library/test.html#test.support.run_doctestX-trHXbinascii.b2a_base64rH(jjXBhttp://docs.python.org/3/library/binascii.html#binascii.b2a_base64X-trHXsys._current_framesrH(jjX=http://docs.python.org/3/library/sys.html#sys._current_framesX-trHXplistlib.loadsrH(jjX=http://docs.python.org/3/library/plistlib.html#plistlib.loadsX-trHXwarnings.formatwarningrH(jjXEhttp://docs.python.org/3/library/warnings.html#warnings.formatwarningX-trHXturtle.shearfactorrH(jjX?http://docs.python.org/3/library/turtle.html#turtle.shearfactorX-trHXmimetypes.read_mime_typesrH(jjXIhttp://docs.python.org/3/library/mimetypes.html#mimetypes.read_mime_typesX-trHXos.posix_fadviserH(jjX9http://docs.python.org/3/library/os.html#os.posix_fadviseX-trHXemail.utils.unquoterH(jjXDhttp://docs.python.org/3/library/email.util.html#email.utils.unquoteX-trHXtest.support.run_with_localerH(jjXGhttp://docs.python.org/3/library/test.html#test.support.run_with_localeX-trHXos.plockrH(jjX1http://docs.python.org/3/library/os.html#os.plockX-trHXsys.call_tracingrH(jjX:http://docs.python.org/3/library/sys.html#sys.call_tracingX-trHXfunctools.wrapsrH(jjX?http://docs.python.org/3/library/functools.html#functools.wrapsX-trHXitertools.countrH(jjX?http://docs.python.org/3/library/itertools.html#itertools.countX-trHXipaddress.ip_interfacerH(jjXFhttp://docs.python.org/3/library/ipaddress.html#ipaddress.ip_interfaceX-trHX os.setgidrH(jjX2http://docs.python.org/3/library/os.html#os.setgidX-trHX turtle.rtrH(jjX6http://docs.python.org/3/library/turtle.html#turtle.rtX-trHX turtle.bgpicrH(jjX9http://docs.python.org/3/library/turtle.html#turtle.bgpicX-trHX wave.openrH(jjX4http://docs.python.org/3/library/wave.html#wave.openX-trHX fcntl.flockrH(jjX7http://docs.python.org/3/library/fcntl.html#fcntl.flockX-trHXmsvcrt.open_osfhandlerH(jjXBhttp://docs.python.org/3/library/msvcrt.html#msvcrt.open_osfhandleX-trHXcodeop.compile_commandrH(jjXChttp://docs.python.org/3/library/codeop.html#codeop.compile_commandX-trHXplatform.linux_distributionrH(jjXJhttp://docs.python.org/3/library/platform.html#platform.linux_distributionX-trHXmaprH(jjX3http://docs.python.org/3/library/functions.html#mapX-trHXstatistics.variancerH(jjXDhttp://docs.python.org/3/library/statistics.html#statistics.varianceX-trHXcolorsys.yiq_to_rgbrH(jjXBhttp://docs.python.org/3/library/colorsys.html#colorsys.yiq_to_rgbX-trHXdistutils.util.convert_pathrH(jjXJhttp://docs.python.org/3/distutils/apiref.html#distutils.util.convert_pathX-trHXos.path.samestatrH(jjX>http://docs.python.org/3/library/os.path.html#os.path.samestatX-trHXmaxrH(jjX3http://docs.python.org/3/library/functions.html#maxX-trHXaudioop.byteswaprH(jjX>http://docs.python.org/3/library/audioop.html#audioop.byteswapX-trHXgetpass.getuserrH(jjX=http://docs.python.org/3/library/getpass.html#getpass.getuserX-trHXturtle.end_polyrH(jjX<http://docs.python.org/3/library/turtle.html#turtle.end_polyX-trHXheapq.nsmallestrH(jjX;http://docs.python.org/3/library/heapq.html#heapq.nsmallestX-trHX csv.writerrH(jjX4http://docs.python.org/3/library/csv.html#csv.writerX-trHXoperator.getitemrH(jjX?http://docs.python.org/3/library/operator.html#operator.getitemX-trHX'itertools.combinations_with_replacementrH(jjXWhttp://docs.python.org/3/library/itertools.html#itertools.combinations_with_replacementX-trHXtraceback.format_stackrH(jjXFhttp://docs.python.org/3/library/traceback.html#traceback.format_stackX-trHX math.isinfrH(jjX5http://docs.python.org/3/library/math.html#math.isinfX-trHXos.forkrH(jjX0http://docs.python.org/3/library/os.html#os.forkX-trHXturtle.headingrH(jjX;http://docs.python.org/3/library/turtle.html#turtle.headingX-trIXgettext.ldgettextrI(jjX?http://docs.python.org/3/library/gettext.html#gettext.ldgettextX-trIXbinascii.crc32rI(jjX=http://docs.python.org/3/library/binascii.html#binascii.crc32X-trIXcopyreg.constructorrI(jjXAhttp://docs.python.org/3/library/copyreg.html#copyreg.constructorX-trIXinspect.iscoderI(jjX<http://docs.python.org/3/library/inspect.html#inspect.iscodeX-trIX cmath.atanr I(jjX6http://docs.python.org/3/library/cmath.html#cmath.atanX-tr IX turtle.stampr I(jjX9http://docs.python.org/3/library/turtle.html#turtle.stampX-tr IXgc.get_referentsr I(jjX9http://docs.python.org/3/library/gc.html#gc.get_referentsX-trIX aifc.openrI(jjX4http://docs.python.org/3/library/aifc.html#aifc.openX-trIXlogging.exceptionrI(jjX?http://docs.python.org/3/library/logging.html#logging.exceptionX-trIX os.lchflagsrI(jjX4http://docs.python.org/3/library/os.html#os.lchflagsX-trIXfnmatch.fnmatchcaserI(jjXAhttp://docs.python.org/3/library/fnmatch.html#fnmatch.fnmatchcaseX-trIXunicodedata.combiningrI(jjXGhttp://docs.python.org/3/library/unicodedata.html#unicodedata.combiningX-trIX turtle.homerI(jjX8http://docs.python.org/3/library/turtle.html#turtle.homeX-trIX math.fmodrI(jjX4http://docs.python.org/3/library/math.html#math.fmodX-trIXlogging.addLevelNamerI(jjXBhttp://docs.python.org/3/library/logging.html#logging.addLevelNameX-trIXimp.acquire_lockrI(jjX:http://docs.python.org/3/library/imp.html#imp.acquire_lockX-tr IXos.path.normcaser!I(jjX>http://docs.python.org/3/library/os.path.html#os.path.normcaseX-tr"IXsysconfig.get_makefile_filenamer#I(jjXOhttp://docs.python.org/3/library/sysconfig.html#sysconfig.get_makefile_filenameX-tr$IXbinascii.b2a_qpr%I(jjX>http://docs.python.org/3/library/binascii.html#binascii.b2a_qpX-tr&IXoperator.__eq__r'I(jjX>http://docs.python.org/3/library/operator.html#operator.__eq__X-tr(IXurllib.parse.urlunsplitr)I(jjXJhttp://docs.python.org/3/library/urllib.parse.html#urllib.parse.urlunsplitX-tr*IX os.makedirsr+I(jjX4http://docs.python.org/3/library/os.html#os.makedirsX-tr,IXctypes.DllCanUnloadNowr-I(jjXChttp://docs.python.org/3/library/ctypes.html#ctypes.DllCanUnloadNowX-tr.IXdifflib.IS_LINE_JUNKr/I(jjXBhttp://docs.python.org/3/library/difflib.html#difflib.IS_LINE_JUNKX-tr0IXsocket.getservbyportr1I(jjXAhttp://docs.python.org/3/library/socket.html#socket.getservbyportX-tr2IXimp.source_from_cacher3I(jjX?http://docs.python.org/3/library/imp.html#imp.source_from_cacheX-tr4IXreadline.read_init_filer5I(jjXFhttp://docs.python.org/3/library/readline.html#readline.read_init_fileX-tr6IXmimetypes.initr7I(jjX>http://docs.python.org/3/library/mimetypes.html#mimetypes.initX-tr8IXos.WEXITSTATUSr9I(jjX7http://docs.python.org/3/library/os.html#os.WEXITSTATUSX-tr:IXoperator.__delitem__r;I(jjXChttp://docs.python.org/3/library/operator.html#operator.__delitem__X-trIXurllib.request.build_openerr?I(jjXPhttp://docs.python.org/3/library/urllib.request.html#urllib.request.build_openerX-tr@IXitertools.repeatrAI(jjX@http://docs.python.org/3/library/itertools.html#itertools.repeatX-trBIX os.getgidrCI(jjX2http://docs.python.org/3/library/os.html#os.getgidX-trDIXurllib.request.urlopenrEI(jjXKhttp://docs.python.org/3/library/urllib.request.html#urllib.request.urlopenX-trFIXaudioop.tomonorGI(jjX<http://docs.python.org/3/library/audioop.html#audioop.tomonoX-trHIXtest.support.change_cwdrII(jjXBhttp://docs.python.org/3/library/test.html#test.support.change_cwdX-trJIX audioop.biasrKI(jjX:http://docs.python.org/3/library/audioop.html#audioop.biasX-trLIXtermios.tcflowrMI(jjX<http://docs.python.org/3/library/termios.html#termios.tcflowX-trNIX socket.socketrOI(jjX:http://docs.python.org/3/library/socket.html#socket.socketX-trPIXlocale.setlocalerQI(jjX=http://docs.python.org/3/library/locale.html#locale.setlocaleX-trRIXimp.get_suffixesrSI(jjX:http://docs.python.org/3/library/imp.html#imp.get_suffixesX-trTIXreadline.set_completer_delimsrUI(jjXLhttp://docs.python.org/3/library/readline.html#readline.set_completer_delimsX-trVIXcode.compile_commandrWI(jjX?http://docs.python.org/3/library/code.html#code.compile_commandX-trXIX+xml.etree.ElementTree.ProcessingInstructionrYI(jjXghttp://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.ProcessingInstructionX-trZIX cmath.cosr[I(jjX5http://docs.python.org/3/library/cmath.html#cmath.cosX-tr\IXcompileall.compile_filer]I(jjXHhttp://docs.python.org/3/library/compileall.html#compileall.compile_fileX-tr^IX os.path.isdirr_I(jjX;http://docs.python.org/3/library/os.path.html#os.path.isdirX-tr`IXgettext.lngettextraI(jjX?http://docs.python.org/3/library/gettext.html#gettext.lngettextX-trbIXemail.message_from_stringrcI(jjXLhttp://docs.python.org/3/library/email.parser.html#email.message_from_stringX-trdIXinspect.cleandocreI(jjX>http://docs.python.org/3/library/inspect.html#inspect.cleandocX-trfIXmultiprocessing.current_processrgI(jjXUhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.current_processX-trhIX turtle.posriI(jjX7http://docs.python.org/3/library/turtle.html#turtle.posX-trjIXsortedrkI(jjX6http://docs.python.org/3/library/functions.html#sortedX-trlIXos.pipe2rmI(jjX1http://docs.python.org/3/library/os.html#os.pipe2X-trnIX re.fullmatchroI(jjX5http://docs.python.org/3/library/re.html#re.fullmatchX-trpIXwinsound.PlaySoundrqI(jjXAhttp://docs.python.org/3/library/winsound.html#winsound.PlaySoundX-trrIX os.spawnlprsI(jjX3http://docs.python.org/3/library/os.html#os.spawnlpX-trtIX operator.neruI(jjX:http://docs.python.org/3/library/operator.html#operator.neX-trvIXos.path.getctimerwI(jjX>http://docs.python.org/3/library/os.path.html#os.path.getctimeX-trxIXinspect.formatargvaluesryI(jjXEhttp://docs.python.org/3/library/inspect.html#inspect.formatargvaluesX-trzIXpkgutil.iter_modulesr{I(jjXBhttp://docs.python.org/3/library/pkgutil.html#pkgutil.iter_modulesX-tr|IXxml.etree.ElementTree.XMLr}I(jjXUhttp://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.XMLX-tr~IXos.sched_get_priority_minrI(jjXBhttp://docs.python.org/3/library/os.html#os.sched_get_priority_minX-trIX math.isfiniterI(jjX8http://docs.python.org/3/library/math.html#math.isfiniteX-trIX random.seedrI(jjX8http://docs.python.org/3/library/random.html#random.seedX-trIXunicodedata.normalizerI(jjXGhttp://docs.python.org/3/library/unicodedata.html#unicodedata.normalizeX-trIX os.getxattrrI(jjX4http://docs.python.org/3/library/os.html#os.getxattrX-trIXinspect.ismethoddescriptorrI(jjXHhttp://docs.python.org/3/library/inspect.html#inspect.ismethoddescriptorX-trIX time.gmtimerI(jjX6http://docs.python.org/3/library/time.html#time.gmtimeX-trIXturtle.get_shapepolyrI(jjXAhttp://docs.python.org/3/library/turtle.html#turtle.get_shapepolyX-trIXlzma.is_check_supportedrI(jjXBhttp://docs.python.org/3/library/lzma.html#lzma.is_check_supportedX-trIX#wsgiref.util.setup_testing_defaultsrI(jjXQhttp://docs.python.org/3/library/wsgiref.html#wsgiref.util.setup_testing_defaultsX-trIXcurses.use_default_colorsrI(jjXFhttp://docs.python.org/3/library/curses.html#curses.use_default_colorsX-trIXtime.clock_getresrI(jjX<http://docs.python.org/3/library/time.html#time.clock_getresX-trIX math.radiansrI(jjX7http://docs.python.org/3/library/math.html#math.radiansX-trIXthreading.enumeraterI(jjXChttp://docs.python.org/3/library/threading.html#threading.enumerateX-trIX gc.isenabledrI(jjX5http://docs.python.org/3/library/gc.html#gc.isenabledX-trIXrandom.vonmisesvariaterI(jjXChttp://docs.python.org/3/library/random.html#random.vonmisesvariateX-trIXsocket.getnameinforI(jjX?http://docs.python.org/3/library/socket.html#socket.getnameinfoX-trIX os.writevrI(jjX2http://docs.python.org/3/library/os.html#os.writevX-trIXcsv.field_size_limitrI(jjX>http://docs.python.org/3/library/csv.html#csv.field_size_limitX-trIX os.seteuidrI(jjX3http://docs.python.org/3/library/os.html#os.seteuidX-trIXmsvcrt.lockingrI(jjX;http://docs.python.org/3/library/msvcrt.html#msvcrt.lockingX-trIXcurses.savettyrI(jjX;http://docs.python.org/3/library/curses.html#curses.savettyX-trIXmultiprocessing.get_contextrI(jjXQhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.get_contextX-trIXturtle.begin_fillrI(jjX>http://docs.python.org/3/library/turtle.html#turtle.begin_fillX-trIXinspect.getattr_staticrI(jjXDhttp://docs.python.org/3/library/inspect.html#inspect.getattr_staticX-trIXcurses.flushinprI(jjX<http://docs.python.org/3/library/curses.html#curses.flushinpX-trIXdis.disrI(jjX1http://docs.python.org/3/library/dis.html#dis.disX-trIXsocket.if_nameindexrI(jjX@http://docs.python.org/3/library/socket.html#socket.if_nameindexX-trIXbase64.b64decoderI(jjX=http://docs.python.org/3/library/base64.html#base64.b64decodeX-trIXmsilib.gen_uuidrI(jjX<http://docs.python.org/3/library/msilib.html#msilib.gen_uuidX-trIXsys.setrecursionlimitrI(jjX?http://docs.python.org/3/library/sys.html#sys.setrecursionlimitX-trIX bisect.bisectrI(jjX:http://docs.python.org/3/library/bisect.html#bisect.bisectX-trIXdis.findlinestartsrI(jjX<http://docs.python.org/3/library/dis.html#dis.findlinestartsX-trIX shelve.openrI(jjX8http://docs.python.org/3/library/shelve.html#shelve.openX-trIX os.setuidrI(jjX2http://docs.python.org/3/library/os.html#os.setuidX-trIX random.choicerI(jjX:http://docs.python.org/3/library/random.html#random.choiceX-trIXos.stat_float_timesrI(jjX<http://docs.python.org/3/library/os.html#os.stat_float_timesX-trIXoperator.attrgetterrI(jjXBhttp://docs.python.org/3/library/operator.html#operator.attrgetterX-trIXturtle.settiltanglerI(jjX@http://docs.python.org/3/library/turtle.html#turtle.settiltangleX-trIXreadline.redisplayrI(jjXAhttp://docs.python.org/3/library/readline.html#readline.redisplayX-trIX(xml.etree.ElementTree.register_namespacerI(jjXdhttp://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.register_namespaceX-trIX os.ttynamerI(jjX3http://docs.python.org/3/library/os.html#os.ttynameX-trIXthreading.settracerI(jjXBhttp://docs.python.org/3/library/threading.html#threading.settraceX-trIXordrI(jjX3http://docs.python.org/3/library/functions.html#ordX-trIX time.ctimerI(jjX5http://docs.python.org/3/library/time.html#time.ctimeX-trIXcodecs.iterdecoderI(jjX>http://docs.python.org/3/library/codecs.html#codecs.iterdecodeX-trIXtest.support.import_modulerI(jjXEhttp://docs.python.org/3/library/test.html#test.support.import_moduleX-trIXwsgiref.util.is_hop_by_hoprI(jjXHhttp://docs.python.org/3/library/wsgiref.html#wsgiref.util.is_hop_by_hopX-trIXos.timesrI(jjX1http://docs.python.org/3/library/os.html#os.timesX-trIX os.pwriterI(jjX2http://docs.python.org/3/library/os.html#os.pwriteX-trIX!ipaddress.summarize_address_rangerI(jjXQhttp://docs.python.org/3/library/ipaddress.html#ipaddress.summarize_address_rangeX-trIX doctest.set_unittest_reportflagsrI(jjXNhttp://docs.python.org/3/library/doctest.html#doctest.set_unittest_reportflagsX-trIX math.expm1rI(jjX5http://docs.python.org/3/library/math.html#math.expm1X-trIX os.systemrI(jjX2http://docs.python.org/3/library/os.html#os.systemX-trIXtempfile.TemporaryDirectoryrI(jjXJhttp://docs.python.org/3/library/tempfile.html#tempfile.TemporaryDirectoryX-trIXos.sched_setaffinityrI(jjX=http://docs.python.org/3/library/os.html#os.sched_setaffinityX-trIXstatistics.median_lowrI(jjXFhttp://docs.python.org/3/library/statistics.html#statistics.median_lowX-trIXintrI(jjX3http://docs.python.org/3/library/functions.html#intX-trIXdistutils.util.check_environrI(jjXKhttp://docs.python.org/3/distutils/apiref.html#distutils.util.check_environX-trIXlogging.config.fileConfigrI(jjXNhttp://docs.python.org/3/library/logging.config.html#logging.config.fileConfigX-trIXcurses.ascii.isblankrI(jjXGhttp://docs.python.org/3/library/curses.ascii.html#curses.ascii.isblankX-trIXcurses.typeaheadrI(jjX=http://docs.python.org/3/library/curses.html#curses.typeaheadX-trIX"sqlite3.enable_callback_tracebacksrI(jjXPhttp://docs.python.org/3/library/sqlite3.html#sqlite3.enable_callback_tracebacksX-trIXtermios.tcgetattrrI(jjX?http://docs.python.org/3/library/termios.html#termios.tcgetattrX-trIX&importlib.util.spec_from_file_locationrI(jjXVhttp://docs.python.org/3/library/importlib.html#importlib.util.spec_from_file_locationX-trJX"xml.etree.ElementTree.tostringlistrJ(jjX^http://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.tostringlistX-trJX os.isattyrJ(jjX2http://docs.python.org/3/library/os.html#os.isattyX-trJXplatform.python_revisionrJ(jjXGhttp://docs.python.org/3/library/platform.html#platform.python_revisionX-trJX dbm.gnu.openrJ(jjX6http://docs.python.org/3/library/dbm.html#dbm.gnu.openX-trJX audioop.avgr J(jjX9http://docs.python.org/3/library/audioop.html#audioop.avgX-tr JXmsilib.UuidCreater J(jjX>http://docs.python.org/3/library/msilib.html#msilib.UuidCreateX-tr JX random.randomr J(jjX:http://docs.python.org/3/library/random.html#random.randomX-trJX stat.filemoderJ(jjX8http://docs.python.org/3/library/stat.html#stat.filemodeX-trJXsubprocess.getoutputrJ(jjXEhttp://docs.python.org/3/library/subprocess.html#subprocess.getoutputX-trJX os.spawnvperJ(jjX4http://docs.python.org/3/library/os.html#os.spawnvpeX-trJX cmath.logrJ(jjX5http://docs.python.org/3/library/cmath.html#cmath.logX-trJXsite.getuserbaserJ(jjX;http://docs.python.org/3/library/site.html#site.getuserbaseX-trJXbase64.b32decoderJ(jjX=http://docs.python.org/3/library/base64.html#base64.b32decodeX-trJXre.matchrJ(jjX1http://docs.python.org/3/library/re.html#re.matchX-trJXssl.enum_certificatesrJ(jjX?http://docs.python.org/3/library/ssl.html#ssl.enum_certificatesX-trJXopenrJ(jjX4http://docs.python.org/3/library/functions.html#openX-tr JXplatform.win32_verr!J(jjXAhttp://docs.python.org/3/library/platform.html#platform.win32_verX-tr"JXturtle.onkeyreleaser#J(jjX@http://docs.python.org/3/library/turtle.html#turtle.onkeyreleaseX-tr$JXgettext.gettextr%J(jjX=http://docs.python.org/3/library/gettext.html#gettext.gettextX-tr&JX turtle.downr'J(jjX8http://docs.python.org/3/library/turtle.html#turtle.downX-tr(JXasyncio.set_event_loop_policyr)J(jjXUhttp://docs.python.org/3/library/asyncio-eventloop.html#asyncio.set_event_loop_policyX-tr*JX ctypes.memsetr+J(jjX:http://docs.python.org/3/library/ctypes.html#ctypes.memsetX-tr,JXcompileall.compile_dirr-J(jjXGhttp://docs.python.org/3/library/compileall.html#compileall.compile_dirX-tr.JXos.sched_getaffinityr/J(jjX=http://docs.python.org/3/library/os.html#os.sched_getaffinityX-tr0JXos.utimer1J(jjX1http://docs.python.org/3/library/os.html#os.utimeX-tr2JXcalendar.timegmr3J(jjX>http://docs.python.org/3/library/calendar.html#calendar.timegmX-tr4JXreadline.remove_history_itemr5J(jjXKhttp://docs.python.org/3/library/readline.html#readline.remove_history_itemX-tr6JXcgi.print_formr7J(jjX8http://docs.python.org/3/library/cgi.html#cgi.print_formX-tr8JX turtle.ondragr9J(jjX:http://docs.python.org/3/library/turtle.html#turtle.ondragX-tr:JX bdb.set_tracer;J(jjX7http://docs.python.org/3/library/bdb.html#bdb.set_traceX-trhttp://docs.python.org/3/library/turtle.html#turtle.onkeypressX-tr>JXinspect.getclosurevarsr?J(jjXDhttp://docs.python.org/3/library/inspect.html#inspect.getclosurevarsX-tr@JXcurses.ascii.isupperrAJ(jjXGhttp://docs.python.org/3/library/curses.ascii.html#curses.ascii.isupperX-trBJXos.sched_setschedulerrCJ(jjX>http://docs.python.org/3/library/os.html#os.sched_setschedulerX-trDJXturtle.register_shaperEJ(jjXBhttp://docs.python.org/3/library/turtle.html#turtle.register_shapeX-trFJXplatform.popenrGJ(jjX=http://docs.python.org/3/library/platform.html#platform.popenX-trHJX gc.collectrIJ(jjX3http://docs.python.org/3/library/gc.html#gc.collectX-trJJX os.setsidrKJ(jjX2http://docs.python.org/3/library/os.html#os.setsidX-trLJXreversedrMJ(jjX8http://docs.python.org/3/library/functions.html#reversedX-trNJXturtle.write_docstringdictrOJ(jjXGhttp://docs.python.org/3/library/turtle.html#turtle.write_docstringdictX-trPJXos.statrQJ(jjX0http://docs.python.org/3/library/os.html#os.statX-trRJXsocket.create_connectionrSJ(jjXEhttp://docs.python.org/3/library/socket.html#socket.create_connectionX-trTJXsys.setdlopenflagsrUJ(jjX<http://docs.python.org/3/library/sys.html#sys.setdlopenflagsX-trVJXoperator.__abs__rWJ(jjX?http://docs.python.org/3/library/operator.html#operator.__abs__X-trXJXos.chownrYJ(jjX1http://docs.python.org/3/library/os.html#os.chownX-trZJXplatform.machiner[J(jjX?http://docs.python.org/3/library/platform.html#platform.machineX-tr\JXquopri.decodestringr]J(jjX@http://docs.python.org/3/library/quopri.html#quopri.decodestringX-tr^JX hashlib.newr_J(jjX9http://docs.python.org/3/library/hashlib.html#hashlib.newX-tr`JX textwrap.wrapraJ(jjX<http://docs.python.org/3/library/textwrap.html#textwrap.wrapX-trbJXcurses.ascii.isasciircJ(jjXGhttp://docs.python.org/3/library/curses.ascii.html#curses.ascii.isasciiX-trdJXsignal.setitimerreJ(jjX=http://docs.python.org/3/library/signal.html#signal.setitimerX-trfJXrandom.setstatergJ(jjX<http://docs.python.org/3/library/random.html#random.setstateX-trhJXturtle.window_heightriJ(jjXAhttp://docs.python.org/3/library/turtle.html#turtle.window_heightX-trjJX sunau.openrkJ(jjX6http://docs.python.org/3/library/sunau.html#sunau.openX-trlJX codecs.decodermJ(jjX:http://docs.python.org/3/library/codecs.html#codecs.decodeX-trnJXresource.setrlimitroJ(jjXAhttp://docs.python.org/3/library/resource.html#resource.setrlimitX-trpJXemail.utils.format_datetimerqJ(jjXLhttp://docs.python.org/3/library/email.util.html#email.utils.format_datetimeX-trrJX curses.getwinrsJ(jjX:http://docs.python.org/3/library/curses.html#curses.getwinX-trtJXunittest.mock.patch.objectruJ(jjXNhttp://docs.python.org/3/library/unittest.mock.html#unittest.mock.patch.objectX-trvJXos.get_handle_inheritablerwJ(jjXBhttp://docs.python.org/3/library/os.html#os.get_handle_inheritableX-trxJXos.WIFCONTINUEDryJ(jjX8http://docs.python.org/3/library/os.html#os.WIFCONTINUEDX-trzJXreadline.write_history_filer{J(jjXJhttp://docs.python.org/3/library/readline.html#readline.write_history_fileX-tr|JXxml.dom.minidom.parser}J(jjXKhttp://docs.python.org/3/library/xml.dom.minidom.html#xml.dom.minidom.parseX-tr~JXcalendar.prmonthrJ(jjX?http://docs.python.org/3/library/calendar.html#calendar.prmonthX-trJX audioop.addrJ(jjX9http://docs.python.org/3/library/audioop.html#audioop.addX-trJXos.device_encodingrJ(jjX;http://docs.python.org/3/library/os.html#os.device_encodingX-trJX os.closerangerJ(jjX6http://docs.python.org/3/library/os.html#os.closerangeX-trJX os.initgroupsrJ(jjX6http://docs.python.org/3/library/os.html#os.initgroupsX-trJXreadline.get_endidxrJ(jjXBhttp://docs.python.org/3/library/readline.html#readline.get_endidxX-trJX turtle.tiltrJ(jjX8http://docs.python.org/3/library/turtle.html#turtle.tiltX-trJXcontextlib.redirect_stdoutrJ(jjXKhttp://docs.python.org/3/library/contextlib.html#contextlib.redirect_stdoutX-trJXtempfile.gettempprefixrJ(jjXEhttp://docs.python.org/3/library/tempfile.html#tempfile.gettempprefixX-trJXinspect.getcallargsrJ(jjXAhttp://docs.python.org/3/library/inspect.html#inspect.getcallargsX-trJXget_special_folder_pathrJ(jjXIhttp://docs.python.org/3/distutils/builtdist.html#get_special_folder_pathX-trJXbisect.bisect_leftrJ(jjX?http://docs.python.org/3/library/bisect.html#bisect.bisect_leftX-trJXplatform.systemrJ(jjX>http://docs.python.org/3/library/platform.html#platform.systemX-trJXbase64.decodebytesrJ(jjX?http://docs.python.org/3/library/base64.html#base64.decodebytesX-trJXencodings.idna.ToUnicoderJ(jjXEhttp://docs.python.org/3/library/codecs.html#encodings.idna.ToUnicodeX-trJX copy.deepcopyrJ(jjX8http://docs.python.org/3/library/copy.html#copy.deepcopyX-trJXoperator.__imod__rJ(jjX@http://docs.python.org/3/library/operator.html#operator.__imod__X-trJXanyrJ(jjX3http://docs.python.org/3/library/functions.html#anyX-trJXmultiprocessing.active_childrenrJ(jjXUhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.active_childrenX-trJX os.tcsetpgrprJ(jjX5http://docs.python.org/3/library/os.html#os.tcsetpgrpX-trJX os.fdatasyncrJ(jjX5http://docs.python.org/3/library/os.html#os.fdatasyncX-trJXtracemalloc.is_tracingrJ(jjXHhttp://docs.python.org/3/library/tracemalloc.html#tracemalloc.is_tracingX-trJXpkgutil.find_loaderrJ(jjXAhttp://docs.python.org/3/library/pkgutil.html#pkgutil.find_loaderX-trJX os.forkptyrJ(jjX3http://docs.python.org/3/library/os.html#os.forkptyX-trJXcolorsys.rgb_to_hlsrJ(jjXBhttp://docs.python.org/3/library/colorsys.html#colorsys.rgb_to_hlsX-trJXpprint.safereprrJ(jjX<http://docs.python.org/3/library/pprint.html#pprint.safereprX-trJXoperator.__invert__rJ(jjXBhttp://docs.python.org/3/library/operator.html#operator.__invert__X-trJXaudioop.ratecvrJ(jjX<http://docs.python.org/3/library/audioop.html#audioop.ratecvX-trJX math.log2rJ(jjX4http://docs.python.org/3/library/math.html#math.log2X-trJXdistutils.file_util.write_filerJ(jjXMhttp://docs.python.org/3/distutils/apiref.html#distutils.file_util.write_fileX-trJX re.escaperJ(jjX2http://docs.python.org/3/library/re.html#re.escapeX-trJX turtle.shaperJ(jjX9http://docs.python.org/3/library/turtle.html#turtle.shapeX-trJXbase64.urlsafe_b64encoderJ(jjXEhttp://docs.python.org/3/library/base64.html#base64.urlsafe_b64encodeX-trJXwinreg.QueryValuerJ(jjX>http://docs.python.org/3/library/winreg.html#winreg.QueryValueX-trJXcurses.reset_prog_moderJ(jjXChttp://docs.python.org/3/library/curses.html#curses.reset_prog_modeX-trJXtime.monotonicrJ(jjX9http://docs.python.org/3/library/time.html#time.monotonicX-trJXcsv.register_dialectrJ(jjX>http://docs.python.org/3/library/csv.html#csv.register_dialectX-trJX codecs.lookuprJ(jjX:http://docs.python.org/3/library/codecs.html#codecs.lookupX-trJXcurses.nocbreakrJ(jjX<http://docs.python.org/3/library/curses.html#curses.nocbreakX-trJX _thread.exitrJ(jjX:http://docs.python.org/3/library/_thread.html#_thread.exitX-trJXos.sched_getschedulerrJ(jjX>http://docs.python.org/3/library/os.html#os.sched_getschedulerX-trJXcallablerJ(jjX8http://docs.python.org/3/library/functions.html#callableX-trJXos.wait4rJ(jjX1http://docs.python.org/3/library/os.html#os.wait4X-trJXfunctools.lru_cacherJ(jjXChttp://docs.python.org/3/library/functools.html#functools.lru_cacheX-trJXemail.encoders.encode_base64rJ(jjXQhttp://docs.python.org/3/library/email.encoders.html#email.encoders.encode_base64X-trJXinspect.isgeneratorfunctionrJ(jjXIhttp://docs.python.org/3/library/inspect.html#inspect.isgeneratorfunctionX-trJXsocket.getfqdnrJ(jjX;http://docs.python.org/3/library/socket.html#socket.getfqdnX-trJXimportlib.util.resolve_namerJ(jjXKhttp://docs.python.org/3/library/importlib.html#importlib.util.resolve_nameX-trJXsysconfig.get_scheme_namesrJ(jjXJhttp://docs.python.org/3/library/sysconfig.html#sysconfig.get_scheme_namesX-trJX turtle.penrJ(jjX7http://docs.python.org/3/library/turtle.html#turtle.penX-trJX os.waitidrJ(jjX2http://docs.python.org/3/library/os.html#os.waitidX-trJXimp.find_modulerJ(jjX9http://docs.python.org/3/library/imp.html#imp.find_moduleX-trJXgc.set_thresholdrJ(jjX9http://docs.python.org/3/library/gc.html#gc.set_thresholdX-trJXinspect.getmembersrJ(jjX@http://docs.python.org/3/library/inspect.html#inspect.getmembersX-trJX turtle.htrJ(jjX6http://docs.python.org/3/library/turtle.html#turtle.htX-trJX shutil.rmtreerJ(jjX:http://docs.python.org/3/library/shutil.html#shutil.rmtreeX-trJXtracemalloc.get_traceback_limitrJ(jjXQhttp://docs.python.org/3/library/tracemalloc.html#tracemalloc.get_traceback_limitX-trJX%multiprocessing.sharedctypes.RawValuerJ(jjX[http://docs.python.org/3/library/multiprocessing.html#multiprocessing.sharedctypes.RawValueX-trJXpyclbr.readmodulerJ(jjX>http://docs.python.org/3/library/pyclbr.html#pyclbr.readmoduleX-trJX difflib.ndiffrJ(jjX;http://docs.python.org/3/library/difflib.html#difflib.ndiffX-trJX os.getresuidrJ(jjX5http://docs.python.org/3/library/os.html#os.getresuidX-trJXipaddress.get_mixed_type_keyrJ(jjXLhttp://docs.python.org/3/library/ipaddress.html#ipaddress.get_mixed_type_keyX-trJX os.fsdecoderJ(jjX4http://docs.python.org/3/library/os.html#os.fsdecodeX-trJXsys.getrefcountrJ(jjX9http://docs.python.org/3/library/sys.html#sys.getrefcountX-trJXimp.new_modulerJ(jjX8http://docs.python.org/3/library/imp.html#imp.new_moduleX-trKXos.fstatrK(jjX1http://docs.python.org/3/library/os.html#os.fstatX-trKXdistutils.util.get_platformrK(jjXJhttp://docs.python.org/3/distutils/apiref.html#distutils.util.get_platformX-trKX operator.powrK(jjX;http://docs.python.org/3/library/operator.html#operator.powX-trKXctypes.set_errnorK(jjX=http://docs.python.org/3/library/ctypes.html#ctypes.set_errnoX-trKXunicodedata.mirroredr K(jjXFhttp://docs.python.org/3/library/unicodedata.html#unicodedata.mirroredX-tr KX operator.posr K(jjX;http://docs.python.org/3/library/operator.html#operator.posX-tr KXwinreg.DeleteValuer K(jjX?http://docs.python.org/3/library/winreg.html#winreg.DeleteValueX-trKXinspect.getdocrK(jjX<http://docs.python.org/3/library/inspect.html#inspect.getdocX-trKXtraceback.format_tbrK(jjXChttp://docs.python.org/3/library/traceback.html#traceback.format_tbX-trKXfnmatch.fnmatchrK(jjX=http://docs.python.org/3/library/fnmatch.html#fnmatch.fnmatchX-trKXtraceback.clear_framesrK(jjXFhttp://docs.python.org/3/library/traceback.html#traceback.clear_framesX-trKX$xml.etree.ElementTree.fromstringlistrK(jjX`http://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.fromstringlistX-trKX!email.utils.parsedate_to_datetimerK(jjXRhttp://docs.python.org/3/library/email.util.html#email.utils.parsedate_to_datetimeX-trKXsqlite3.connectrK(jjX=http://docs.python.org/3/library/sqlite3.html#sqlite3.connectX-trKXcolorsys.hsv_to_rgbrK(jjXBhttp://docs.python.org/3/library/colorsys.html#colorsys.hsv_to_rgbX-trKXdistutils.core.run_setuprK(jjXGhttp://docs.python.org/3/distutils/apiref.html#distutils.core.run_setupX-tr KXinspect.getgeneratorstater!K(jjXGhttp://docs.python.org/3/library/inspect.html#inspect.getgeneratorstateX-tr"KXsocket.fromsharer#K(jjX=http://docs.python.org/3/library/socket.html#socket.fromshareX-tr$KXasyncio.set_event_loopr%K(jjXNhttp://docs.python.org/3/library/asyncio-eventloop.html#asyncio.set_event_loopX-tr&KXprintr'K(jjX5http://docs.python.org/3/library/functions.html#printX-tr(KXlogging.shutdownr)K(jjX>http://docs.python.org/3/library/logging.html#logging.shutdownX-tr*KXsyslog.setlogmaskr+K(jjX>http://docs.python.org/3/library/syslog.html#syslog.setlogmaskX-tr,KXunicodedata.lookupr-K(jjXDhttp://docs.python.org/3/library/unicodedata.html#unicodedata.lookupX-tr.KXconcurrent.futures.as_completedr/K(jjXXhttp://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.as_completedX-tr0KX"tracemalloc.get_tracemalloc_memoryr1K(jjXThttp://docs.python.org/3/library/tracemalloc.html#tracemalloc.get_tracemalloc_memoryX-tr2KX pickle.dumpsr3K(jjX9http://docs.python.org/3/library/pickle.html#pickle.dumpsX-tr4KX os.getcwdr5K(jjX2http://docs.python.org/3/library/os.html#os.getcwdX-tr6KXoperator.truedivr7K(jjX?http://docs.python.org/3/library/operator.html#operator.truedivX-tr8KXctypes.DllGetClassObjectr9K(jjXEhttp://docs.python.org/3/library/ctypes.html#ctypes.DllGetClassObjectX-tr:KXssl.match_hostnamer;K(jjX<http://docs.python.org/3/library/ssl.html#ssl.match_hostnameX-trKXimportlib.reloadr?K(jjX@http://docs.python.org/3/library/importlib.html#importlib.reloadX-tr@KXssl.PEM_cert_to_DER_certrAK(jjXBhttp://docs.python.org/3/library/ssl.html#ssl.PEM_cert_to_DER_certX-trBKXcurses.pair_contentrCK(jjX@http://docs.python.org/3/library/curses.html#curses.pair_contentX-trDKXreprrEK(jjX4http://docs.python.org/3/library/functions.html#reprX-trFKX timeit.repeatrGK(jjX:http://docs.python.org/3/library/timeit.html#timeit.repeatX-trHKXunicodedata.bidirectionalrIK(jjXKhttp://docs.python.org/3/library/unicodedata.html#unicodedata.bidirectionalX-trJKXinspect.isfunctionrKK(jjX@http://docs.python.org/3/library/inspect.html#inspect.isfunctionX-trLKXdistutils.util.split_quotedrMK(jjXJhttp://docs.python.org/3/distutils/apiref.html#distutils.util.split_quotedX-trNKX ssl.enum_crlsrOK(jjX7http://docs.python.org/3/library/ssl.html#ssl.enum_crlsX-trPKXcurses.noqiflushrQK(jjX=http://docs.python.org/3/library/curses.html#curses.noqiflushX-trRKXcodecs.strict_errorsrSK(jjXAhttp://docs.python.org/3/library/codecs.html#codecs.strict_errorsX-trTKXcurses.ascii.isdigitrUK(jjXGhttp://docs.python.org/3/library/curses.ascii.html#curses.ascii.isdigitX-trVKX stat.S_ISDOORrWK(jjX8http://docs.python.org/3/library/stat.html#stat.S_ISDOORX-trXKX turtle.strYK(jjX6http://docs.python.org/3/library/turtle.html#turtle.stX-trZKX sys.exc_infor[K(jjX6http://docs.python.org/3/library/sys.html#sys.exc_infoX-tr\KX socket.htonsr]K(jjX9http://docs.python.org/3/library/socket.html#socket.htonsX-tr^KXthreading.setprofiler_K(jjXDhttp://docs.python.org/3/library/threading.html#threading.setprofileX-tr`KXtraceback.print_exceptionraK(jjXIhttp://docs.python.org/3/library/traceback.html#traceback.print_exceptionX-trbKXshutil.ignore_patternsrcK(jjXChttp://docs.python.org/3/library/shutil.html#shutil.ignore_patternsX-trdKXprofile.runctxreK(jjX<http://docs.python.org/3/library/profile.html#profile.runctxX-trfKXpickletools.genopsrgK(jjXDhttp://docs.python.org/3/library/pickletools.html#pickletools.genopsX-trhKX socket.htonlriK(jjX9http://docs.python.org/3/library/socket.html#socket.htonlX-trjKXre.splitrkK(jjX1http://docs.python.org/3/library/re.html#re.splitX-trlKXos.sched_get_priority_maxrmK(jjXBhttp://docs.python.org/3/library/os.html#os.sched_get_priority_maxX-trnKXinspect.getfileroK(jjX=http://docs.python.org/3/library/inspect.html#inspect.getfileX-trpKXoperator.delitemrqK(jjX?http://docs.python.org/3/library/operator.html#operator.delitemX-trrKX time.strptimersK(jjX8http://docs.python.org/3/library/time.html#time.strptimeX-trtKXwinreg.QueryReflectionKeyruK(jjXFhttp://docs.python.org/3/library/winreg.html#winreg.QueryReflectionKeyX-trvKX operator.negrwK(jjX;http://docs.python.org/3/library/operator.html#operator.negX-trxKXsubprocess.getstatusoutputryK(jjXKhttp://docs.python.org/3/library/subprocess.html#subprocess.getstatusoutputX-trzKXoperator.__ipow__r{K(jjX@http://docs.python.org/3/library/operator.html#operator.__ipow__X-tr|KX dbm.whichdbr}K(jjX5http://docs.python.org/3/library/dbm.html#dbm.whichdbX-tr~KX#distutils.sysconfig.get_config_varsrK(jjXRhttp://docs.python.org/3/distutils/apiref.html#distutils.sysconfig.get_config_varsX-trKXctypes.get_errnorK(jjX=http://docs.python.org/3/library/ctypes.html#ctypes.get_errnoX-trKXtraceback.print_stackrK(jjXEhttp://docs.python.org/3/library/traceback.html#traceback.print_stackX-trKXurllib.parse.quote_from_bytesrK(jjXPhttp://docs.python.org/3/library/urllib.parse.html#urllib.parse.quote_from_bytesX-trKX$distutils.sysconfig.set_python_buildrK(jjXShttp://docs.python.org/3/distutils/apiref.html#distutils.sysconfig.set_python_buildX-trKXencodings.idna.namepreprK(jjXDhttp://docs.python.org/3/library/codecs.html#encodings.idna.nameprepX-trKXhashlib.pbkdf2_hmacrK(jjXAhttp://docs.python.org/3/library/hashlib.html#hashlib.pbkdf2_hmacX-trKX grp.getgrnamrK(jjX6http://docs.python.org/3/library/grp.html#grp.getgrnamX-trKXrandom.shufflerK(jjX;http://docs.python.org/3/library/random.html#random.shuffleX-trKXurllib.parse.urlencoderK(jjXIhttp://docs.python.org/3/library/urllib.parse.html#urllib.parse.urlencodeX-trKXtracemalloc.clear_tracesrK(jjXJhttp://docs.python.org/3/library/tracemalloc.html#tracemalloc.clear_tracesX-trKX math.hypotrK(jjX5http://docs.python.org/3/library/math.html#math.hypotX-trKXurllib.parse.unquoterK(jjXGhttp://docs.python.org/3/library/urllib.parse.html#urllib.parse.unquoteX-trKXhmac.newrK(jjX3http://docs.python.org/3/library/hmac.html#hmac.newX-trKX glob.escaperK(jjX6http://docs.python.org/3/library/glob.html#glob.escapeX-trKXos.path.dirnamerK(jjX=http://docs.python.org/3/library/os.path.html#os.path.dirnameX-trKXgetattrrK(jjX7http://docs.python.org/3/library/functions.html#getattrX-trKX math.log10rK(jjX5http://docs.python.org/3/library/math.html#math.log10X-trKXoperator.__le__rK(jjX>http://docs.python.org/3/library/operator.html#operator.__le__X-trKX time.clockrK(jjX5http://docs.python.org/3/library/time.html#time.clockX-trKX os.getresgidrK(jjX5http://docs.python.org/3/library/os.html#os.getresgidX-trKX os.symlinkrK(jjX3http://docs.python.org/3/library/os.html#os.symlinkX-trKXtextwrap.dedentrK(jjX>http://docs.python.org/3/library/textwrap.html#textwrap.dedentX-trKX turtle.delayrK(jjX9http://docs.python.org/3/library/turtle.html#turtle.delayX-trKXtime.perf_counterrK(jjX<http://docs.python.org/3/library/time.html#time.perf_counterX-trKXsocket.socketpairrK(jjX>http://docs.python.org/3/library/socket.html#socket.socketpairX-trKXcurses.tigetflagrK(jjX=http://docs.python.org/3/library/curses.html#curses.tigetflagX-trKXemail.utils.parsedaterK(jjXFhttp://docs.python.org/3/library/email.util.html#email.utils.parsedateX-trKX lzma.compressrK(jjX8http://docs.python.org/3/library/lzma.html#lzma.compressX-trKXfileinput.filenamerK(jjXBhttp://docs.python.org/3/library/fileinput.html#fileinput.filenameX-trKXurllib.parse.parse_qsrK(jjXHhttp://docs.python.org/3/library/urllib.parse.html#urllib.parse.parse_qsX-trKXtabnanny.tokeneaterrK(jjXBhttp://docs.python.org/3/library/tabnanny.html#tabnanny.tokeneaterX-trKXturtle.turtlesrK(jjX;http://docs.python.org/3/library/turtle.html#turtle.turtlesX-trKX random.samplerK(jjX:http://docs.python.org/3/library/random.html#random.sampleX-trKXsys.settscdumprK(jjX8http://docs.python.org/3/library/sys.html#sys.settscdumpX-trKX gc.get_countrK(jjX5http://docs.python.org/3/library/gc.html#gc.get_countX-trKXast.iter_fieldsrK(jjX9http://docs.python.org/3/library/ast.html#ast.iter_fieldsX-trKXaudioop.lin2adpcmrK(jjX?http://docs.python.org/3/library/audioop.html#audioop.lin2adpcmX-trKXfileinput.closerK(jjX?http://docs.python.org/3/library/fileinput.html#fileinput.closeX-trKXwinreg.QueryInfoKeyrK(jjX@http://docs.python.org/3/library/winreg.html#winreg.QueryInfoKeyX-trKX test.support.skip_unless_symlinkrK(jjXKhttp://docs.python.org/3/library/test.html#test.support.skip_unless_symlinkX-trKXurllib.request.url2pathnamerK(jjXPhttp://docs.python.org/3/library/urllib.request.html#urllib.request.url2pathnameX-trKXast.fix_missing_locationsrK(jjXChttp://docs.python.org/3/library/ast.html#ast.fix_missing_locationsX-trKXtest.support.temp_dirrK(jjX@http://docs.python.org/3/library/test.html#test.support.temp_dirX-trKXcodecs.getwriterrK(jjX=http://docs.python.org/3/library/codecs.html#codecs.getwriterX-trKXshutil.register_archive_formatrK(jjXKhttp://docs.python.org/3/library/shutil.html#shutil.register_archive_formatX-trKXoperator.__lt__rK(jjX>http://docs.python.org/3/library/operator.html#operator.__lt__X-trKXwsgiref.handlers.read_environrK(jjXKhttp://docs.python.org/3/library/wsgiref.html#wsgiref.handlers.read_environX-trKXoperator.__floordiv__rK(jjXDhttp://docs.python.org/3/library/operator.html#operator.__floordiv__X-trKX math.log1prK(jjX5http://docs.python.org/3/library/math.html#math.log1pX-trKXdoctest.run_docstring_examplesrK(jjXLhttp://docs.python.org/3/library/doctest.html#doctest.run_docstring_examplesX-trKX_thread.stack_sizerK(jjX@http://docs.python.org/3/library/_thread.html#_thread.stack_sizeX-trKXos.path.samefilerK(jjX>http://docs.python.org/3/library/os.path.html#os.path.samefileX-trKXfileinput.isstdinrK(jjXAhttp://docs.python.org/3/library/fileinput.html#fileinput.isstdinX-trKXdistutils.dep_util.newer_grouprK(jjXMhttp://docs.python.org/3/distutils/apiref.html#distutils.dep_util.newer_groupX-trKXos.duprK(jjX/http://docs.python.org/3/library/os.html#os.dupX-trKXxml.etree.ElementTree.CommentrK(jjXYhttp://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.CommentX-trKX xml.etree.ElementTree.fromstringrK(jjX\http://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.fromstringX-trKXinspect.isbuiltinrK(jjX?http://docs.python.org/3/library/inspect.html#inspect.isbuiltinX-trKXabc.abstractstaticmethodrK(jjXBhttp://docs.python.org/3/library/abc.html#abc.abstractstaticmethodX-trKX operator.gtrK(jjX:http://docs.python.org/3/library/operator.html#operator.gtX-trKXpowrK(jjX3http://docs.python.org/3/library/functions.html#powX-trKXcodecs.replace_errorsrK(jjXBhttp://docs.python.org/3/library/codecs.html#codecs.replace_errorsX-trKXunittest.skipIfrK(jjX>http://docs.python.org/3/library/unittest.html#unittest.skipIfX-trKX os.path.splitrK(jjX;http://docs.python.org/3/library/os.path.html#os.path.splitX-trLXast.walkrL(jjX2http://docs.python.org/3/library/ast.html#ast.walkX-trLXtest.support.captured_stdinrL(jjXFhttp://docs.python.org/3/library/test.html#test.support.captured_stdinX-trLXturtle.setundobufferrL(jjXAhttp://docs.python.org/3/library/turtle.html#turtle.setundobufferX-trLXshutil.register_unpack_formatrL(jjXJhttp://docs.python.org/3/library/shutil.html#shutil.register_unpack_formatX-trLXcontextlib.closingr L(jjXChttp://docs.python.org/3/library/contextlib.html#contextlib.closingX-tr LX tarfile.openr L(jjX:http://docs.python.org/3/library/tarfile.html#tarfile.openX-tr LX operator.ger L(jjX:http://docs.python.org/3/library/operator.html#operator.geX-trLXitertools.takewhilerL(jjXChttp://docs.python.org/3/library/itertools.html#itertools.takewhileX-trLXcurses.ascii.islowerrL(jjXGhttp://docs.python.org/3/library/curses.ascii.html#curses.ascii.islowerX-trLX turtle.circlerL(jjX:http://docs.python.org/3/library/turtle.html#turtle.circleX-trLXemail.charset.add_aliasrL(jjXKhttp://docs.python.org/3/library/email.charset.html#email.charset.add_aliasX-trLXcodecs.getincrementaldecoderrL(jjXIhttp://docs.python.org/3/library/codecs.html#codecs.getincrementaldecoderX-trLXstatistics.stdevrL(jjXAhttp://docs.python.org/3/library/statistics.html#statistics.stdevX-trLXstatistics.medianrL(jjXBhttp://docs.python.org/3/library/statistics.html#statistics.medianX-trLXoperator.concatrL(jjX>http://docs.python.org/3/library/operator.html#operator.concatX-trLXbase64.decodestringrL(jjX@http://docs.python.org/3/library/base64.html#base64.decodestringX-tr LXctypes.GetLastErrorr!L(jjX@http://docs.python.org/3/library/ctypes.html#ctypes.GetLastErrorX-tr"LXcalendar.monthcalendarr#L(jjXEhttp://docs.python.org/3/library/calendar.html#calendar.monthcalendarX-tr$LXasyncio.as_completedr%L(jjXGhttp://docs.python.org/3/library/asyncio-task.html#asyncio.as_completedX-tr&LXturtle.radiansr'L(jjX;http://docs.python.org/3/library/turtle.html#turtle.radiansX-tr(LXrunpy.run_moduler)L(jjX<http://docs.python.org/3/library/runpy.html#runpy.run_moduleX-tr*LX os.geteuidr+L(jjX3http://docs.python.org/3/library/os.html#os.geteuidX-tr,LX cmath.log10r-L(jjX7http://docs.python.org/3/library/cmath.html#cmath.log10X-tr.LXemail.utils.parsedate_tzr/L(jjXIhttp://docs.python.org/3/library/email.util.html#email.utils.parsedate_tzX-tr0LX turtle.widthr1L(jjX9http://docs.python.org/3/library/turtle.html#turtle.widthX-tr2LX os.urandomr3L(jjX3http://docs.python.org/3/library/os.html#os.urandomX-tr4LXlocale.nl_langinfor5L(jjX?http://docs.python.org/3/library/locale.html#locale.nl_langinfoX-tr6LXmsvcrt.ungetchr7L(jjX;http://docs.python.org/3/library/msvcrt.html#msvcrt.ungetchX-tr8LXmsilib.FCICreater9L(jjX=http://docs.python.org/3/library/msilib.html#msilib.FCICreateX-tr:LX tty.setrawr;L(jjX4http://docs.python.org/3/library/tty.html#tty.setrawX-trLXbase64.a85encoder?L(jjX=http://docs.python.org/3/library/base64.html#base64.a85encodeX-tr@LX"multiprocessing.sharedctypes.ArrayrAL(jjXXhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.sharedctypes.ArrayX-trBLXunicodedata.numericrCL(jjXEhttp://docs.python.org/3/library/unicodedata.html#unicodedata.numericX-trDLX os.execvprEL(jjX2http://docs.python.org/3/library/os.html#os.execvpX-trFLXlocale.getpreferredencodingrGL(jjXHhttp://docs.python.org/3/library/locale.html#locale.getpreferredencodingX-trHLXturtle.window_widthrIL(jjX@http://docs.python.org/3/library/turtle.html#turtle.window_widthX-trJLXfnmatch.filterrKL(jjX<http://docs.python.org/3/library/fnmatch.html#fnmatch.filterX-trLLXinspect.formatargspecrML(jjXChttp://docs.python.org/3/library/inspect.html#inspect.formatargspecX-trNLXcompilerOL(jjX7http://docs.python.org/3/library/functions.html#compileX-trPLX os.WSTOPSIGrQL(jjX4http://docs.python.org/3/library/os.html#os.WSTOPSIGX-trRLX os.execverSL(jjX2http://docs.python.org/3/library/os.html#os.execveX-trTLXstatistics.meanrUL(jjX@http://docs.python.org/3/library/statistics.html#statistics.meanX-trVLXshutil.unpack_archiverWL(jjXBhttp://docs.python.org/3/library/shutil.html#shutil.unpack_archiveX-trXLXos.path.commonprefixrYL(jjXBhttp://docs.python.org/3/library/os.path.html#os.path.commonprefixX-trZLXos.path.ismountr[L(jjX=http://docs.python.org/3/library/os.path.html#os.path.ismountX-tr\LXturtle.ontimerr]L(jjX;http://docs.python.org/3/library/turtle.html#turtle.ontimerX-tr^LXcurses.ascii.altr_L(jjXChttp://docs.python.org/3/library/curses.ascii.html#curses.ascii.altX-tr`LXre.purgeraL(jjX1http://docs.python.org/3/library/re.html#re.purgeX-trbLXcurses.termnamercL(jjX<http://docs.python.org/3/library/curses.html#curses.termnameX-trdLXbase64.b16encodereL(jjX=http://docs.python.org/3/library/base64.html#base64.b16encodeX-trfLXsysconfig.get_config_varsrgL(jjXIhttp://docs.python.org/3/library/sysconfig.html#sysconfig.get_config_varsX-trhLX __import__riL(jjX:http://docs.python.org/3/library/functions.html#__import__X-trjLXxml.etree.ElementTree.iselementrkL(jjX[http://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.iselementX-trlLXos.umaskrmL(jjX1http://docs.python.org/3/library/os.html#os.umaskX-trnLXwinreg.CreateKeyExroL(jjX?http://docs.python.org/3/library/winreg.html#winreg.CreateKeyExX-trpLXstruct.iter_unpackrqL(jjX?http://docs.python.org/3/library/struct.html#struct.iter_unpackX-trrLX audioop.rmsrsL(jjX9http://docs.python.org/3/library/audioop.html#audioop.rmsX-trtLXcurses.ascii.asciiruL(jjXEhttp://docs.python.org/3/library/curses.ascii.html#curses.ascii.asciiX-trvLXbase64.a85decoderwL(jjX=http://docs.python.org/3/library/base64.html#base64.a85decodeX-trxLXgettext.dngettextryL(jjX?http://docs.python.org/3/library/gettext.html#gettext.dngettextX-trzLXasciir{L(jjX5http://docs.python.org/3/library/functions.html#asciiX-tr|LX asyncio.asyncr}L(jjX@http://docs.python.org/3/library/asyncio-task.html#asyncio.asyncX-tr~LX cgi.parse_qslrL(jjX7http://docs.python.org/3/library/cgi.html#cgi.parse_qslX-trLXcalendar.monthrL(jjX=http://docs.python.org/3/library/calendar.html#calendar.monthX-trLX distutils.ccompiler.new_compilerrL(jjXOhttp://docs.python.org/3/distutils/apiref.html#distutils.ccompiler.new_compilerX-trLXtypes.DynamicClassAttributerL(jjXGhttp://docs.python.org/3/library/types.html#types.DynamicClassAttributeX-trLX test.support.import_fresh_modulerL(jjXKhttp://docs.python.org/3/library/test.html#test.support.import_fresh_moduleX-trLXpkgutil.get_importerrL(jjXBhttp://docs.python.org/3/library/pkgutil.html#pkgutil.get_importerX-trLXsocket.if_indextonamerL(jjXBhttp://docs.python.org/3/library/socket.html#socket.if_indextonameX-trLX curses.nlrL(jjX6http://docs.python.org/3/library/curses.html#curses.nlX-trLX#distutils.archive_util.make_archiverL(jjXRhttp://docs.python.org/3/distutils/apiref.html#distutils.archive_util.make_archiveX-trLX marshal.dumpsrL(jjX;http://docs.python.org/3/library/marshal.html#marshal.dumpsX-trLX&distutils.sysconfig.customize_compilerrL(jjXUhttp://docs.python.org/3/distutils/apiref.html#distutils.sysconfig.customize_compilerX-trLXturtle.getscreenrL(jjX=http://docs.python.org/3/library/turtle.html#turtle.getscreenX-trLXctypes.WINFUNCTYPErL(jjX?http://docs.python.org/3/library/ctypes.html#ctypes.WINFUNCTYPEX-trLXoperator.__getitem__rL(jjXChttp://docs.python.org/3/library/operator.html#operator.__getitem__X-trLX turtle.onkeyrL(jjX9http://docs.python.org/3/library/turtle.html#turtle.onkeyX-trLXselect.devpollrL(jjX;http://docs.python.org/3/library/select.html#select.devpollX-trLXturtle.getturtlerL(jjX=http://docs.python.org/3/library/turtle.html#turtle.getturtleX-trLXplatform.libc_verrL(jjX@http://docs.python.org/3/library/platform.html#platform.libc_verX-trLX tkinter.TclrL(jjX9http://docs.python.org/3/library/tkinter.html#tkinter.TclX-trLXssl.create_default_contextrL(jjXDhttp://docs.python.org/3/library/ssl.html#ssl.create_default_contextX-trLXparser.sequence2strL(jjX?http://docs.python.org/3/library/parser.html#parser.sequence2stX-trLX operator.lerL(jjX:http://docs.python.org/3/library/operator.html#operator.leX-trLXsignal.pthread_killrL(jjX@http://docs.python.org/3/library/signal.html#signal.pthread_killX-trLX marshal.dumprL(jjX:http://docs.python.org/3/library/marshal.html#marshal.dumpX-trLXpdb.pmrL(jjX0http://docs.python.org/3/library/pdb.html#pdb.pmX-trLX os.listxattrrL(jjX5http://docs.python.org/3/library/os.html#os.listxattrX-trLXcolorsys.rgb_to_yiqrL(jjXBhttp://docs.python.org/3/library/colorsys.html#colorsys.rgb_to_yiqX-trLX os.sysconfrL(jjX3http://docs.python.org/3/library/os.html#os.sysconfX-trLX operator.iorrL(jjX;http://docs.python.org/3/library/operator.html#operator.iorX-trLXcurses.qiflushrL(jjX;http://docs.python.org/3/library/curses.html#curses.qiflushX-trLX json.loadrL(jjX4http://docs.python.org/3/library/json.html#json.loadX-trLX operator.ltrL(jjX:http://docs.python.org/3/library/operator.html#operator.ltX-trLXcurses.ascii.isspacerL(jjXGhttp://docs.python.org/3/library/curses.ascii.html#curses.ascii.isspaceX-trLXnis.mapsrL(jjX2http://docs.python.org/3/library/nis.html#nis.mapsX-trLXctypes.create_unicode_bufferrL(jjXIhttp://docs.python.org/3/library/ctypes.html#ctypes.create_unicode_bufferX-trLXsocket.CMSG_SPACErL(jjX>http://docs.python.org/3/library/socket.html#socket.CMSG_SPACEX-trLXoperator.floordivrL(jjX@http://docs.python.org/3/library/operator.html#operator.floordivX-trLXcodecs.getencoderrL(jjX>http://docs.python.org/3/library/codecs.html#codecs.getencoderX-trLXgettext.translationrL(jjXAhttp://docs.python.org/3/library/gettext.html#gettext.translationX-trLX xml.sax.parserL(jjX;http://docs.python.org/3/library/xml.sax.html#xml.sax.parseX-trLXcurses.def_shell_moderL(jjXBhttp://docs.python.org/3/library/curses.html#curses.def_shell_modeX-trLXurllib.parse.urljoinrL(jjXGhttp://docs.python.org/3/library/urllib.parse.html#urllib.parse.urljoinX-trLX turtle.moderL(jjX8http://docs.python.org/3/library/turtle.html#turtle.modeX-trLXoperator.irshiftrL(jjX?http://docs.python.org/3/library/operator.html#operator.irshiftX-trLX textwrap.fillrL(jjX<http://docs.python.org/3/library/textwrap.html#textwrap.fillX-trLXpkgutil.walk_packagesrL(jjXChttp://docs.python.org/3/library/pkgutil.html#pkgutil.walk_packagesX-trLXitertools.accumulaterL(jjXDhttp://docs.python.org/3/library/itertools.html#itertools.accumulateX-trLXtraceback.format_excrL(jjXDhttp://docs.python.org/3/library/traceback.html#traceback.format_excX-trLXdoctest.testmodrL(jjX=http://docs.python.org/3/library/doctest.html#doctest.testmodX-trLXreadline.insert_textrL(jjXChttp://docs.python.org/3/library/readline.html#readline.insert_textX-trLXos.waitrL(jjX0http://docs.python.org/3/library/os.html#os.waitX-trLXmsilib.OpenDatabaserL(jjX@http://docs.python.org/3/library/msilib.html#msilib.OpenDatabaseX-trLXtest.support.find_unused_portrL(jjXHhttp://docs.python.org/3/library/test.html#test.support.find_unused_portX-trLXurllib.parse.urlsplitrL(jjXHhttp://docs.python.org/3/library/urllib.parse.html#urllib.parse.urlsplitX-trLXssl.wrap_socketrL(jjX9http://docs.python.org/3/library/ssl.html#ssl.wrap_socketX-trLX!wsgiref.simple_server.make_serverrL(jjXOhttp://docs.python.org/3/library/wsgiref.html#wsgiref.simple_server.make_serverX-trLX isinstancerL(jjX:http://docs.python.org/3/library/functions.html#isinstanceX-trLXrunpy.run_pathrL(jjX:http://docs.python.org/3/library/runpy.html#runpy.run_pathX-trLX dbm.dumb.openrL(jjX7http://docs.python.org/3/library/dbm.html#dbm.dumb.openX-trLX math.floorrL(jjX5http://docs.python.org/3/library/math.html#math.floorX-trLX lzma.openrL(jjX4http://docs.python.org/3/library/lzma.html#lzma.openX-trLXcurses.use_envrL(jjX;http://docs.python.org/3/library/curses.html#curses.use_envX-trLXitertools.productrL(jjXAhttp://docs.python.org/3/library/itertools.html#itertools.productX-trLX sys.getsizeofrL(jjX7http://docs.python.org/3/library/sys.html#sys.getsizeofX-trLXaudioop.adpcm2linrL(jjX?http://docs.python.org/3/library/audioop.html#audioop.adpcm2linX-trMXtoken.ISTERMINALrM(jjX<http://docs.python.org/3/library/token.html#token.ISTERMINALX-trMXstringprep.in_table_a1rM(jjXGhttp://docs.python.org/3/library/stringprep.html#stringprep.in_table_a1X-trMXoperator.iconcatrM(jjX?http://docs.python.org/3/library/operator.html#operator.iconcatX-trMXitertools.permutationsrM(jjXFhttp://docs.python.org/3/library/itertools.html#itertools.permutationsX-trMXencodings.idna.ToASCIIr M(jjXChttp://docs.python.org/3/library/codecs.html#encodings.idna.ToASCIIX-tr MXsysconfig.get_pathr M(jjXBhttp://docs.python.org/3/library/sysconfig.html#sysconfig.get_pathX-tr MXurllib.parse.unquote_to_bytesr M(jjXPhttp://docs.python.org/3/library/urllib.parse.html#urllib.parse.unquote_to_bytesX-trMX re.compilerM(jjX3http://docs.python.org/3/library/re.html#re.compileX-trMXwinreg.EnumKeyrM(jjX;http://docs.python.org/3/library/winreg.html#winreg.EnumKeyX-trMXreadline.get_history_lengthrM(jjXJhttp://docs.python.org/3/library/readline.html#readline.get_history_lengthX-trMX audioop.maxrM(jjX9http://docs.python.org/3/library/audioop.html#audioop.maxX-trMXitertools.compressrM(jjXBhttp://docs.python.org/3/library/itertools.html#itertools.compressX-trMXcurses.ascii.isalpharM(jjXGhttp://docs.python.org/3/library/curses.ascii.html#curses.ascii.isalphaX-trMXreadline.get_line_bufferrM(jjXGhttp://docs.python.org/3/library/readline.html#readline.get_line_bufferX-trMXast.increment_linenorM(jjX>http://docs.python.org/3/library/ast.html#ast.increment_linenoX-trMX turtle.bkrM(jjX6http://docs.python.org/3/library/turtle.html#turtle.bkX-tr MXstringprep.in_table_c21_c22r!M(jjXLhttp://docs.python.org/3/library/stringprep.html#stringprep.in_table_c21_c22X-tr"MXpty.forkr#M(jjX2http://docs.python.org/3/library/pty.html#pty.forkX-tr$MXwebbrowser.open_new_tabr%M(jjXHhttp://docs.python.org/3/library/webbrowser.html#webbrowser.open_new_tabX-tr&MX gc.disabler'M(jjX3http://docs.python.org/3/library/gc.html#gc.disableX-tr(MXsocket.setdefaulttimeoutr)M(jjXEhttp://docs.python.org/3/library/socket.html#socket.setdefaulttimeoutX-tr*MXast.literal_evalr+M(jjX:http://docs.python.org/3/library/ast.html#ast.literal_evalX-tr,MX glob.globr-M(jjX4http://docs.python.org/3/library/glob.html#glob.globX-tr.MXtraceback.format_exceptionr/M(jjXJhttp://docs.python.org/3/library/traceback.html#traceback.format_exceptionX-tr0MXaudioop.findmaxr1M(jjX=http://docs.python.org/3/library/audioop.html#audioop.findmaxX-tr2MXcgi.parse_headerr3M(jjX:http://docs.python.org/3/library/cgi.html#cgi.parse_headerX-tr4MXbase64.urlsafe_b64decoder5M(jjXEhttp://docs.python.org/3/library/base64.html#base64.urlsafe_b64decodeX-tr6MXctypes.get_last_errorr7M(jjXBhttp://docs.python.org/3/library/ctypes.html#ctypes.get_last_errorX-tr8MXos.set_inheritabler9M(jjX;http://docs.python.org/3/library/os.html#os.set_inheritableX-tr:MXturtle.clearstampr;M(jjX>http://docs.python.org/3/library/turtle.html#turtle.clearstampX-trMXlinecache.checkcacher?M(jjXDhttp://docs.python.org/3/library/linecache.html#linecache.checkcacheX-tr@MX cmath.atanhrAM(jjX7http://docs.python.org/3/library/cmath.html#cmath.atanhX-trBMXstatistics.pvariancerCM(jjXEhttp://docs.python.org/3/library/statistics.html#statistics.pvarianceX-trDMXtermios.tcflushrEM(jjX=http://docs.python.org/3/library/termios.html#termios.tcflushX-trFMXdistutils.util.executerGM(jjXEhttp://docs.python.org/3/distutils/apiref.html#distutils.util.executeX-trHMXsocket.gethostbyname_exrIM(jjXDhttp://docs.python.org/3/library/socket.html#socket.gethostbyname_exX-trJMX operator.isubrKM(jjX<http://docs.python.org/3/library/operator.html#operator.isubX-trLMX re.finditerrMM(jjX4http://docs.python.org/3/library/re.html#re.finditerX-trNMXos.killrOM(jjX0http://docs.python.org/3/library/os.html#os.killX-trPMXtraceback.print_lastrQM(jjXDhttp://docs.python.org/3/library/traceback.html#traceback.print_lastX-trRMX dis.code_inforSM(jjX7http://docs.python.org/3/library/dis.html#dis.code_infoX-trTMXtokenize.tokenizerUM(jjX@http://docs.python.org/3/library/tokenize.html#tokenize.tokenizeX-trVMXthreading.get_identrWM(jjXChttp://docs.python.org/3/library/threading.html#threading.get_identX-trXMXtime.process_timerYM(jjX<http://docs.python.org/3/library/time.html#time.process_timeX-trZMXemail.iterators._structurer[M(jjXPhttp://docs.python.org/3/library/email.iterators.html#email.iterators._structureX-tr\MXcurses.panel.new_panelr]M(jjXIhttp://docs.python.org/3/library/curses.panel.html#curses.panel.new_panelX-tr^MX turtle.penupr_M(jjX9http://docs.python.org/3/library/turtle.html#turtle.penupX-tr`MXsliceraM(jjX5http://docs.python.org/3/library/functions.html#sliceX-trbMXturtle.mainlooprcM(jjX<http://docs.python.org/3/library/turtle.html#turtle.mainloopX-trdMX logging.errorreM(jjX;http://docs.python.org/3/library/logging.html#logging.errorX-trfMXmultiprocessing.freeze_supportrgM(jjXThttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.freeze_supportX-trhMX doctest.debugriM(jjX;http://docs.python.org/3/library/doctest.html#doctest.debugX-trjMX inspect.tracerkM(jjX;http://docs.python.org/3/library/inspect.html#inspect.traceX-trlMX os.spawnlermM(jjX3http://docs.python.org/3/library/os.html#os.spawnleX-trnMX stat.S_ISBLKroM(jjX7http://docs.python.org/3/library/stat.html#stat.S_ISBLKX-trpMXoperator.__inv__rqM(jjX?http://docs.python.org/3/library/operator.html#operator.__inv__X-trrMXtest.support.can_symlinkrsM(jjXChttp://docs.python.org/3/library/test.html#test.support.can_symlinkX-trtMXtracemalloc.stopruM(jjXBhttp://docs.python.org/3/library/tracemalloc.html#tracemalloc.stopX-trvMXossaudiodev.openrwM(jjXBhttp://docs.python.org/3/library/ossaudiodev.html#ossaudiodev.openX-trxMX cmath.phaseryM(jjX7http://docs.python.org/3/library/cmath.html#cmath.phaseX-trzMXoperator.__xor__r{M(jjX?http://docs.python.org/3/library/operator.html#operator.__xor__X-tr|MX curses.endwinr}M(jjX:http://docs.python.org/3/library/curses.html#curses.endwinX-tr~MXast.iter_child_nodesrM(jjX>http://docs.python.org/3/library/ast.html#ast.iter_child_nodesX-trMXgettext.ldngettextrM(jjX@http://docs.python.org/3/library/gettext.html#gettext.ldngettextX-trMX test.support.is_resource_enabledrM(jjXKhttp://docs.python.org/3/library/test.html#test.support.is_resource_enabledX-trMXimportlib.find_loaderrM(jjXEhttp://docs.python.org/3/library/importlib.html#importlib.find_loaderX-trMXbinascii.hexlifyrM(jjX?http://docs.python.org/3/library/binascii.html#binascii.hexlifyX-trMXgettext.ngettextrM(jjX>http://docs.python.org/3/library/gettext.html#gettext.ngettextX-trMXasyncio.get_event_looprM(jjXNhttp://docs.python.org/3/library/asyncio-eventloop.html#asyncio.get_event_loopX-trMX signal.signalrM(jjX:http://docs.python.org/3/library/signal.html#signal.signalX-trMX4multiprocessing.sharedctypes.multiprocessing.ManagerrM(jjXjhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.sharedctypes.multiprocessing.ManagerX-trMXcurses.ascii.isprintrM(jjXGhttp://docs.python.org/3/library/curses.ascii.html#curses.ascii.isprintX-trMX unittest.skiprM(jjX<http://docs.python.org/3/library/unittest.html#unittest.skipX-trMXtest.support.temp_umaskrM(jjXBhttp://docs.python.org/3/library/test.html#test.support.temp_umaskX-trMX os.getppidrM(jjX3http://docs.python.org/3/library/os.html#os.getppidX-trMXsys.getfilesystemencodingrM(jjXChttp://docs.python.org/3/library/sys.html#sys.getfilesystemencodingX-trMXrandom.normalvariaterM(jjXAhttp://docs.python.org/3/library/random.html#random.normalvariateX-trMXfaulthandler.unregisterrM(jjXJhttp://docs.python.org/3/library/faulthandler.html#faulthandler.unregisterX-trMX timeit.timeitrM(jjX:http://docs.python.org/3/library/timeit.html#timeit.timeitX-trMXpickletools.optimizerM(jjXFhttp://docs.python.org/3/library/pickletools.html#pickletools.optimizeX-trMXturtle.forwardrM(jjX;http://docs.python.org/3/library/turtle.html#turtle.forwardX-trMXwinreg.DeleteKeyrM(jjX=http://docs.python.org/3/library/winreg.html#winreg.DeleteKeyX-trMXwinreg.CreateKeyrM(jjX=http://docs.python.org/3/library/winreg.html#winreg.CreateKeyX-trMX os.setreuidrM(jjX4http://docs.python.org/3/library/os.html#os.setreuidX-trMXinspect.isdatadescriptorrM(jjXFhttp://docs.python.org/3/library/inspect.html#inspect.isdatadescriptorX-trMX turtle.uprM(jjX6http://docs.python.org/3/library/turtle.html#turtle.upX-trMXimp.cache_from_sourcerM(jjX?http://docs.python.org/3/library/imp.html#imp.cache_from_sourceX-trMXcodecs.getdecoderrM(jjX>http://docs.python.org/3/library/codecs.html#codecs.getdecoderX-trMXevalrM(jjX4http://docs.python.org/3/library/functions.html#evalX-trMX msvcrt.getchrM(jjX9http://docs.python.org/3/library/msvcrt.html#msvcrt.getchX-trMXwinreg.FlushKeyrM(jjX<http://docs.python.org/3/library/winreg.html#winreg.FlushKeyX-trMXmath.tanrM(jjX3http://docs.python.org/3/library/math.html#math.tanX-trMXreadline.parse_and_bindrM(jjXFhttp://docs.python.org/3/library/readline.html#readline.parse_and_bindX-trMXcsv.unregister_dialectrM(jjX@http://docs.python.org/3/library/csv.html#csv.unregister_dialectX-trMX cmath.acosrM(jjX6http://docs.python.org/3/library/cmath.html#cmath.acosX-trMXtermios.tcsetattrrM(jjX?http://docs.python.org/3/library/termios.html#termios.tcsetattrX-trMX os.spawnverM(jjX3http://docs.python.org/3/library/os.html#os.spawnveX-trMXcurses.keynamerM(jjX;http://docs.python.org/3/library/curses.html#curses.keynameX-trMX platform.noderM(jjX<http://docs.python.org/3/library/platform.html#platform.nodeX-trMXctypes.PYFUNCTYPErM(jjX>http://docs.python.org/3/library/ctypes.html#ctypes.PYFUNCTYPEX-trMXoperator.rshiftrM(jjX>http://docs.python.org/3/library/operator.html#operator.rshiftX-trMXhexrM(jjX3http://docs.python.org/3/library/functions.html#hexX-trMXmsilib.CreateRecordrM(jjX@http://docs.python.org/3/library/msilib.html#msilib.CreateRecordX-trMXoperator.itemgetterrM(jjXBhttp://docs.python.org/3/library/operator.html#operator.itemgetterX-trMXimportlib.util.set_loaderrM(jjXIhttp://docs.python.org/3/library/importlib.html#importlib.util.set_loaderX-trMXcurses.baudraterM(jjX<http://docs.python.org/3/library/curses.html#curses.baudrateX-trMX os.spawnvprM(jjX3http://docs.python.org/3/library/os.html#os.spawnvpX-trMXrandom.weibullvariaterM(jjXBhttp://docs.python.org/3/library/random.html#random.weibullvariateX-trMXdistutils.util.strtoboolrM(jjXGhttp://docs.python.org/3/distutils/apiref.html#distutils.util.strtoboolX-trMX&email.iterators.typed_subpart_iteratorrM(jjX\http://docs.python.org/3/library/email.iterators.html#email.iterators.typed_subpart_iteratorX-trMXdistutils.util.subst_varsrM(jjXHhttp://docs.python.org/3/distutils/apiref.html#distutils.util.subst_varsX-trMX struct.packrM(jjX8http://docs.python.org/3/library/struct.html#struct.packX-trMXturtle.isvisiblerM(jjX=http://docs.python.org/3/library/turtle.html#turtle.isvisibleX-trMXasyncio.create_subprocess_execrM(jjXWhttp://docs.python.org/3/library/asyncio-subprocess.html#asyncio.create_subprocess_execX-trMX os.setegidrM(jjX3http://docs.python.org/3/library/os.html#os.setegidX-trMX stat.S_ISSOCKrM(jjX8http://docs.python.org/3/library/stat.html#stat.S_ISSOCKX-trMXos.path.splitextrM(jjX>http://docs.python.org/3/library/os.path.html#os.path.splitextX-trMXturtle.getshapesrM(jjX=http://docs.python.org/3/library/turtle.html#turtle.getshapesX-trMXturtle.pendownrM(jjX;http://docs.python.org/3/library/turtle.html#turtle.pendownX-trMXabc.abstractmethodrM(jjX<http://docs.python.org/3/library/abc.html#abc.abstractmethodX-trMXtempfile.gettempdirrM(jjXBhttp://docs.python.org/3/library/tempfile.html#tempfile.gettempdirX-trMXsite.getsitepackagesrM(jjX?http://docs.python.org/3/library/site.html#site.getsitepackagesX-trMX zlib.compressrM(jjX8http://docs.python.org/3/library/zlib.html#zlib.compressX-trMXssl.RAND_pseudo_bytesrM(jjX?http://docs.python.org/3/library/ssl.html#ssl.RAND_pseudo_bytesX-trMXemail.message_from_bytesrM(jjXKhttp://docs.python.org/3/library/email.parser.html#email.message_from_bytesX-trMXtempfile.NamedTemporaryFilerM(jjXJhttp://docs.python.org/3/library/tempfile.html#tempfile.NamedTemporaryFileX-trMX os.execlperM(jjX3http://docs.python.org/3/library/os.html#os.execlpeX-trNXunittest.registerResultrN(jjXFhttp://docs.python.org/3/library/unittest.html#unittest.registerResultX-trNXstringprep.in_table_c22rN(jjXHhttp://docs.python.org/3/library/stringprep.html#stringprep.in_table_c22X-trNXstringprep.in_table_c21rN(jjXHhttp://docs.python.org/3/library/stringprep.html#stringprep.in_table_c21X-trNXthreading.current_threadrN(jjXHhttp://docs.python.org/3/library/threading.html#threading.current_threadX-trNXos.lockfr N(jjX1http://docs.python.org/3/library/os.html#os.lockfX-tr NXreadline.set_history_lengthr N(jjXJhttp://docs.python.org/3/library/readline.html#readline.set_history_lengthX-tr NXdistutils.dir_util.remove_treer N(jjXMhttp://docs.python.org/3/distutils/apiref.html#distutils.dir_util.remove_treeX-trNXsocket.gethostbyaddrrN(jjXAhttp://docs.python.org/3/library/socket.html#socket.gethostbyaddrX-trNX dis.distbrN(jjX3http://docs.python.org/3/library/dis.html#dis.distbX-trNX turtle.titlerN(jjX9http://docs.python.org/3/library/turtle.html#turtle.titleX-trNXwinreg.DeleteKeyExrN(jjX?http://docs.python.org/3/library/winreg.html#winreg.DeleteKeyExX-trNXdistutils.dir_util.mkpathrN(jjXHhttp://docs.python.org/3/distutils/apiref.html#distutils.dir_util.mkpathX-trNX operator.imodrN(jjX<http://docs.python.org/3/library/operator.html#operator.imodX-trNX os.setpgrprN(jjX3http://docs.python.org/3/library/os.html#os.setpgrpX-trNX curses.has_ilrN(jjX:http://docs.python.org/3/library/curses.html#curses.has_ilX-trNXctypes.util.find_msvcrtrN(jjXDhttp://docs.python.org/3/library/ctypes.html#ctypes.util.find_msvcrtX-tr NXmath.cosr!N(jjX3http://docs.python.org/3/library/math.html#math.cosX-tr"NXdistutils.util.byte_compiler#N(jjXJhttp://docs.python.org/3/distutils/apiref.html#distutils.util.byte_compileX-tr$NXxmlrpc.client.loadsr%N(jjXGhttp://docs.python.org/3/library/xmlrpc.client.html#xmlrpc.client.loadsX-tr&NX os.strerrorr'N(jjX4http://docs.python.org/3/library/os.html#os.strerrorX-tr(NX curses.has_icr)N(jjX:http://docs.python.org/3/library/curses.html#curses.has_icX-tr*NXxml.etree.ElementTree.iterparser+N(jjX[http://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.iterparseX-tr,NXlocale.currencyr-N(jjX<http://docs.python.org/3/library/locale.html#locale.currencyX-tr.NXos.lstatr/N(jjX1http://docs.python.org/3/library/os.html#os.lstatX-tr0NXinspect.ismethodr1N(jjX>http://docs.python.org/3/library/inspect.html#inspect.ismethodX-tr2NX sndhdr.whatr3N(jjX8http://docs.python.org/3/library/sndhdr.html#sndhdr.whatX-tr4NXos.sched_setparamr5N(jjX:http://docs.python.org/3/library/os.html#os.sched_setparamX-tr6NX filecmp.cmpr7N(jjX9http://docs.python.org/3/library/filecmp.html#filecmp.cmpX-tr8NXos.WIFSIGNALEDr9N(jjX7http://docs.python.org/3/library/os.html#os.WIFSIGNALEDX-tr:NXlogging.config.stopListeningr;N(jjXQhttp://docs.python.org/3/library/logging.config.html#logging.config.stopListeningX-trNX cgi.parse_qsr?N(jjX6http://docs.python.org/3/library/cgi.html#cgi.parse_qsX-tr@NX math.ceilrAN(jjX4http://docs.python.org/3/library/math.html#math.ceilX-trBNXshutil.copystatrCN(jjX<http://docs.python.org/3/library/shutil.html#shutil.copystatX-trDNXtraceback.format_listrEN(jjXEhttp://docs.python.org/3/library/traceback.html#traceback.format_listX-trFNX os.setresuidrGN(jjX5http://docs.python.org/3/library/os.html#os.setresuidX-trHNXcurses.ascii.isalnumrIN(jjXGhttp://docs.python.org/3/library/curses.ascii.html#curses.ascii.isalnumX-trJNX curses.putprKN(jjX8http://docs.python.org/3/library/curses.html#curses.putpX-trLNX operator.invrMN(jjX;http://docs.python.org/3/library/operator.html#operator.invX-trNNX logging.logrON(jjX9http://docs.python.org/3/library/logging.html#logging.logX-trPNXcurses.start_colorrQN(jjX?http://docs.python.org/3/library/curses.html#curses.start_colorX-trRNX select.pollrSN(jjX8http://docs.python.org/3/library/select.html#select.pollX-trTNXfilecmp.clear_cacherUN(jjXAhttp://docs.python.org/3/library/filecmp.html#filecmp.clear_cacheX-trVNXreadline.set_pre_input_hookrWN(jjXJhttp://docs.python.org/3/library/readline.html#readline.set_pre_input_hookX-trXNXmultiprocessing.ValuerYN(jjXKhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.ValueX-trZNX os.ctermidr[N(jjX3http://docs.python.org/3/library/os.html#os.ctermidX-tr\NX stat.S_IFMTr]N(jjX6http://docs.python.org/3/library/stat.html#stat.S_IFMTX-tr^NXboolr_N(jjX4http://docs.python.org/3/library/functions.html#boolX-tr`NXemail.header.make_headerraN(jjXKhttp://docs.python.org/3/library/email.header.html#email.header.make_headerX-trbNX pickle.dumprcN(jjX8http://docs.python.org/3/library/pickle.html#pickle.dumpX-trdNXwsgiref.util.application_urireN(jjXJhttp://docs.python.org/3/library/wsgiref.html#wsgiref.util.application_uriX-trfNX math.degreesrgN(jjX7http://docs.python.org/3/library/math.html#math.degreesX-trhNX curses.newpadriN(jjX:http://docs.python.org/3/library/curses.html#curses.newpadX-trjNX signal.pauserkN(jjX9http://docs.python.org/3/library/signal.html#signal.pauseX-trlNX"multiprocessing.sharedctypes.ValuermN(jjXXhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.sharedctypes.ValueX-trnNXwsgiref.util.shift_path_inforoN(jjXJhttp://docs.python.org/3/library/wsgiref.html#wsgiref.util.shift_path_infoX-trpNX turtle.updaterqN(jjX:http://docs.python.org/3/library/turtle.html#turtle.updateX-trrNXlogging.getLoggerrsN(jjX?http://docs.python.org/3/library/logging.html#logging.getLoggerX-trtNXoperator.__isub__ruN(jjX@http://docs.python.org/3/library/operator.html#operator.__isub__X-trvNXturtle.clearstampsrwN(jjX?http://docs.python.org/3/library/turtle.html#turtle.clearstampsX-trxNXunittest.removeHandlerryN(jjXEhttp://docs.python.org/3/library/unittest.html#unittest.removeHandlerX-trzNXasyncio.iscoroutinefunctionr{N(jjXNhttp://docs.python.org/3/library/asyncio-task.html#asyncio.iscoroutinefunctionX-tr|NXwinreg.CloseKeyr}N(jjX<http://docs.python.org/3/library/winreg.html#winreg.CloseKeyX-tr~NXtempfile.mkstemprN(jjX?http://docs.python.org/3/library/tempfile.html#tempfile.mkstempX-trNX os.fdopenrN(jjX2http://docs.python.org/3/library/os.html#os.fdopenX-trNXitertools.chainrN(jjX?http://docs.python.org/3/library/itertools.html#itertools.chainX-trNXxml.dom.pulldom.parserN(jjXKhttp://docs.python.org/3/library/xml.dom.pulldom.html#xml.dom.pulldom.parseX-trNXimportlib.util.find_specrN(jjXHhttp://docs.python.org/3/library/importlib.html#importlib.util.find_specX-trNXcalendar.isleaprN(jjX>http://docs.python.org/3/library/calendar.html#calendar.isleapX-trNX os.getcwdbrN(jjX3http://docs.python.org/3/library/os.html#os.getcwdbX-trNX shutil.copy2rN(jjX9http://docs.python.org/3/library/shutil.html#shutil.copy2X-trNX os.statvfsrN(jjX3http://docs.python.org/3/library/os.html#os.statvfsX-trNXparser.st2tuplerN(jjX<http://docs.python.org/3/library/parser.html#parser.st2tupleX-trNXsocket.getaddrinforN(jjX?http://docs.python.org/3/library/socket.html#socket.getaddrinfoX-trNXssl.cert_time_to_secondsrN(jjXBhttp://docs.python.org/3/library/ssl.html#ssl.cert_time_to_secondsX-trNXre.subnrN(jjX0http://docs.python.org/3/library/re.html#re.subnX-trNXcurses.init_colorrN(jjX>http://docs.python.org/3/library/curses.html#curses.init_colorX-trNuXpy:classmethodrN}rN(Xint.from_bytesrN(jjX=http://docs.python.org/3/library/stdtypes.html#int.from_bytesX-trNXbytearray.fromhexrN(jjX@http://docs.python.org/3/library/stdtypes.html#bytearray.fromhexX-trNXdatetime.datetime.fromtimestamprN(jjXNhttp://docs.python.org/3/library/datetime.html#datetime.datetime.fromtimestampX-trNXdatetime.datetime.combinerN(jjXHhttp://docs.python.org/3/library/datetime.html#datetime.datetime.combineX-trNXdis.Bytecode.from_tracebackrN(jjXEhttp://docs.python.org/3/library/dis.html#dis.Bytecode.from_tracebackX-trNXdatetime.datetime.todayrN(jjXFhttp://docs.python.org/3/library/datetime.html#datetime.datetime.todayX-trNXdatetime.date.fromordinalrN(jjXHhttp://docs.python.org/3/library/datetime.html#datetime.date.fromordinalX-trNXasyncio.Task.current_taskrN(jjXLhttp://docs.python.org/3/library/asyncio-task.html#asyncio.Task.current_taskX-trNXitertools.chain.from_iterablerN(jjXMhttp://docs.python.org/3/library/itertools.html#itertools.chain.from_iterableX-trNX*importlib.machinery.PathFinder.find_modulerN(jjXZhttp://docs.python.org/3/library/importlib.html#importlib.machinery.PathFinder.find_moduleX-trNX bytes.fromhexrN(jjX<http://docs.python.org/3/library/stdtypes.html#bytes.fromhexX-trNXdatetime.datetime.strptimerN(jjXIhttp://docs.python.org/3/library/datetime.html#datetime.datetime.strptimeX-trNX(importlib.machinery.FileFinder.path_hookrN(jjXXhttp://docs.python.org/3/library/importlib.html#importlib.machinery.FileFinder.path_hookX-trNXasyncio.Task.all_tasksrN(jjXIhttp://docs.python.org/3/library/asyncio-task.html#asyncio.Task.all_tasksX-trNX(importlib.machinery.PathFinder.find_specrN(jjXXhttp://docs.python.org/3/library/importlib.html#importlib.machinery.PathFinder.find_specX-trNX0importlib.machinery.PathFinder.invalidate_cachesrN(jjX`http://docs.python.org/3/library/importlib.html#importlib.machinery.PathFinder.invalidate_cachesX-trNXdatetime.date.todayrN(jjXBhttp://docs.python.org/3/library/datetime.html#datetime.date.todayX-trNXtracemalloc.Snapshot.loadrN(jjXKhttp://docs.python.org/3/library/tracemalloc.html#tracemalloc.Snapshot.loadX-trNXdatetime.datetime.nowrN(jjXDhttp://docs.python.org/3/library/datetime.html#datetime.datetime.nowX-trNXpathlib.Path.cwdrN(jjX>http://docs.python.org/3/library/pathlib.html#pathlib.Path.cwdX-trNX dict.fromkeysrN(jjX<http://docs.python.org/3/library/stdtypes.html#dict.fromkeysX-trNX"datetime.datetime.utcfromtimestamprN(jjXQhttp://docs.python.org/3/library/datetime.html#datetime.datetime.utcfromtimestampX-trNX float.fromhexrN(jjX<http://docs.python.org/3/library/stdtypes.html#float.fromhexX-trNX collections.somenamedtuple._makerN(jjXRhttp://docs.python.org/3/library/collections.html#collections.somenamedtuple._makeX-trNXdatetime.datetime.fromordinalrN(jjXLhttp://docs.python.org/3/library/datetime.html#datetime.datetime.fromordinalX-trNXdatetime.datetime.utcnowrN(jjXGhttp://docs.python.org/3/library/datetime.html#datetime.datetime.utcnowX-trNXdatetime.date.fromtimestamprN(jjXJhttp://docs.python.org/3/library/datetime.html#datetime.date.fromtimestampX-trNuX py:attributerN}rN(Xio.TextIOBase.bufferrN(jjX=http://docs.python.org/3/library/io.html#io.TextIOBase.bufferX-trNXunittest.TestResult.bufferrN(jjXIhttp://docs.python.org/3/library/unittest.html#unittest.TestResult.bufferX-trNXdoctest.Example.linenorN(jjXDhttp://docs.python.org/3/library/doctest.html#doctest.Example.linenoX-trNX3http.server.SimpleHTTPRequestHandler.extensions_maprN(jjXehttp://docs.python.org/3/library/http.server.html#http.server.SimpleHTTPRequestHandler.extensions_mapX-trNXdatetime.date.yearrN(jjXAhttp://docs.python.org/3/library/datetime.html#datetime.date.yearX-trNX'xml.parsers.expat.xmlparser.buffer_usedrN(jjXUhttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.xmlparser.buffer_usedX-trNXdoctest.DocTestFailure.examplerN(jjXLhttp://docs.python.org/3/library/doctest.html#doctest.DocTestFailure.exampleX-trNXhttp.cookies.Morsel.coded_valuerN(jjXRhttp://docs.python.org/3/library/http.cookies.html#http.cookies.Morsel.coded_valueX-trNX8http.cookiejar.DefaultCookiePolicy.DomainStrictNonDomainrN(jjXmhttp://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.DefaultCookiePolicy.DomainStrictNonDomainX-trNX$http.cookiejar.CookiePolicy.netscaperN(jjXYhttp://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.CookiePolicy.netscapeX-trNXselectors.SelectorKey.eventsrN(jjXLhttp://docs.python.org/3/library/selectors.html#selectors.SelectorKey.eventsX-trNX&importlib.machinery.EXTENSION_SUFFIXESrN(jjXVhttp://docs.python.org/3/library/importlib.html#importlib.machinery.EXTENSION_SUFFIXESX-trNXcmd.Cmd.misc_headerrN(jjX=http://docs.python.org/3/library/cmd.html#cmd.Cmd.misc_headerX-trNXsqlite3.Connection.iterdumprN(jjXIhttp://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.iterdumpX-trNXpyclbr.Class.methodsrN(jjXAhttp://docs.python.org/3/library/pyclbr.html#pyclbr.Class.methodsX-trNXxml.dom.NamedNodeMap.lengthrN(jjXIhttp://docs.python.org/3/library/xml.dom.html#xml.dom.NamedNodeMap.lengthX-trNX"sqlite3.Connection.isolation_levelrN(jjXPhttp://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.isolation_levelX-trNX ipaddress.IPv6Network.compressedrN(jjXPhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Network.compressedX-trNXselectors.SelectorKey.fileobjrN(jjXMhttp://docs.python.org/3/library/selectors.html#selectors.SelectorKey.fileobjX-trNXfilecmp.DEFAULT_IGNORESrN(jjXEhttp://docs.python.org/3/library/filecmp.html#filecmp.DEFAULT_IGNORESX-trNX+importlib.machinery.ModuleSpec.loader_staterN(jjX[http://docs.python.org/3/library/importlib.html#importlib.machinery.ModuleSpec.loader_stateX-trNXoptparse.Option.ACTIONSrN(jjXFhttp://docs.python.org/3/library/optparse.html#optparse.Option.ACTIONSX-trOXctypes.Structure._fields_rO(jjXFhttp://docs.python.org/3/library/ctypes.html#ctypes.Structure._fields_X-trOXasyncio.StreamWriter.transportrO(jjXShttp://docs.python.org/3/library/asyncio-stream.html#asyncio.StreamWriter.transportX-trOXipaddress.IPv6Interface.iprO(jjXJhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Interface.ipX-trOXdoctest.Example.optionsrO(jjXEhttp://docs.python.org/3/library/doctest.html#doctest.Example.optionsX-trOX'tkinter.scrolledtext.ScrolledText.framer O(jjXbhttp://docs.python.org/3/library/tkinter.scrolledtext.html#tkinter.scrolledtext.ScrolledText.frameX-tr OXxml.dom.DocumentType.notationsr O(jjXLhttp://docs.python.org/3/library/xml.dom.html#xml.dom.DocumentType.notationsX-tr OXreprlib.Repr.maxdequer O(jjXChttp://docs.python.org/3/library/reprlib.html#reprlib.Repr.maxdequeX-trOXnntplib.NNTP.nntp_versionrO(jjXGhttp://docs.python.org/3/library/nntplib.html#nntplib.NNTP.nntp_versionX-trOXcollections.ChainMap.parentsrO(jjXNhttp://docs.python.org/3/library/collections.html#collections.ChainMap.parentsX-trOXsmtpd.SMTPServer.channel_classrO(jjXJhttp://docs.python.org/3/library/smtpd.html#smtpd.SMTPServer.channel_classX-trOXsocketserver.BaseServer.timeoutrO(jjXRhttp://docs.python.org/3/library/socketserver.html#socketserver.BaseServer.timeoutX-trOXdoctest.DocTest.globsrO(jjXChttp://docs.python.org/3/library/doctest.html#doctest.DocTest.globsX-trOXipaddress.IPv6Network.hostmaskrO(jjXNhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Network.hostmaskX-trOX#ipaddress.IPv6Address.is_site_localrO(jjXShttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Address.is_site_localX-trOXctypes._CData._b_base_rO(jjXChttp://docs.python.org/3/library/ctypes.html#ctypes._CData._b_base_X-trOXdoctest.DocTestFailure.testrO(jjXIhttp://docs.python.org/3/library/doctest.html#doctest.DocTestFailure.testX-tr OXlogging.lastResortr!O(jjX@http://docs.python.org/3/library/logging.html#logging.lastResortX-tr"OX(subprocess.CalledProcessError.returncoder#O(jjXYhttp://docs.python.org/3/library/subprocess.html#subprocess.CalledProcessError.returncodeX-tr$OX$ipaddress.IPv6Network.with_prefixlenr%O(jjXThttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Network.with_prefixlenX-tr&OXdoctest.DocTest.examplesr'O(jjXFhttp://docs.python.org/3/library/doctest.html#doctest.DocTest.examplesX-tr(OXurllib.request.Request.full_urlr)O(jjXThttp://docs.python.org/3/library/urllib.request.html#urllib.request.Request.full_urlX-tr*OX,wsgiref.handlers.BaseHandler.server_softwarer+O(jjXZhttp://docs.python.org/3/library/wsgiref.html#wsgiref.handlers.BaseHandler.server_softwareX-tr,OXurllib.request.Request.methodr-O(jjXRhttp://docs.python.org/3/library/urllib.request.html#urllib.request.Request.methodX-tr.OXdoctest.DocTestFailure.gotr/O(jjXHhttp://docs.python.org/3/library/doctest.html#doctest.DocTestFailure.gotX-tr0OXcsv.csvreader.fieldnamesr1O(jjXBhttp://docs.python.org/3/library/csv.html#csv.csvreader.fieldnamesX-tr2OXdatetime.time.tzinfor3O(jjXChttp://docs.python.org/3/library/datetime.html#datetime.time.tzinfoX-tr4OXmemoryview.c_contiguousr5O(jjXFhttp://docs.python.org/3/library/stdtypes.html#memoryview.c_contiguousX-tr6OXstruct.Struct.formatr7O(jjXAhttp://docs.python.org/3/library/struct.html#struct.Struct.formatX-tr8OX$unittest.TestResult.expectedFailuresr9O(jjXShttp://docs.python.org/3/library/unittest.html#unittest.TestResult.expectedFailuresX-tr:OXctypes.Structure._pack_r;O(jjXDhttp://docs.python.org/3/library/ctypes.html#ctypes.Structure._pack_X-trOX smtpd.SMTPChannel.received_linesr?O(jjXLhttp://docs.python.org/3/library/smtpd.html#smtpd.SMTPChannel.received_linesX-tr@OXreprlib.Repr.maxlongrAO(jjXBhttp://docs.python.org/3/library/reprlib.html#reprlib.Repr.maxlongX-trBOXdatetime.datetime.secondrCO(jjXGhttp://docs.python.org/3/library/datetime.html#datetime.datetime.secondX-trDOXnetrc.netrc.macrosrEO(jjX>http://docs.python.org/3/library/netrc.html#netrc.netrc.macrosX-trFOX"curses.textpad.Textbox.stripspacesrGO(jjXOhttp://docs.python.org/3/library/curses.html#curses.textpad.Textbox.stripspacesX-trHOXcsv.Dialect.lineterminatorrIO(jjXDhttp://docs.python.org/3/library/csv.html#csv.Dialect.lineterminatorX-trJOXarray.array.itemsizerKO(jjX@http://docs.python.org/3/library/array.html#array.array.itemsizeX-trLOXxml.dom.Attr.valuerMO(jjX@http://docs.python.org/3/library/xml.dom.html#xml.dom.Attr.valueX-trNOXhashlib.hash.namerOO(jjX?http://docs.python.org/3/library/hashlib.html#hashlib.hash.nameX-trPOXoptparse.Option.callback_argsrQO(jjXLhttp://docs.python.org/3/library/optparse.html#optparse.Option.callback_argsX-trROXtracemalloc.StatisticDiff.sizerSO(jjXPhttp://docs.python.org/3/library/tracemalloc.html#tracemalloc.StatisticDiff.sizeX-trTOXtarfile.TarFile.pax_headersrUO(jjXIhttp://docs.python.org/3/library/tarfile.html#tarfile.TarFile.pax_headersX-trVOXhttp.cookiejar.Cookie.expiresrWO(jjXRhttp://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.Cookie.expiresX-trXOX%http.cookiejar.FileCookieJar.filenamerYO(jjXZhttp://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.FileCookieJar.filenameX-trZOX&asyncio.asyncio.subprocess.Process.pidr[O(jjX_http://docs.python.org/3/library/asyncio-subprocess.html#asyncio.asyncio.subprocess.Process.pidX-tr\OXUnicodeError.reasonr]O(jjXDhttp://docs.python.org/3/library/exceptions.html#UnicodeError.reasonX-tr^OX%ipaddress.IPv4Interface.with_hostmaskr_O(jjXUhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Interface.with_hostmaskX-tr`OXcollections.UserList.dataraO(jjXKhttp://docs.python.org/3/library/collections.html#collections.UserList.dataX-trbOX0xml.parsers.expat.xmlparser.specified_attributesrcO(jjX^http://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.xmlparser.specified_attributesX-trdOX#ipaddress.IPv6Address.max_prefixlenreO(jjXShttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Address.max_prefixlenX-trfOXemail.message.Message.preamblergO(jjXRhttp://docs.python.org/3/library/email.message.html#email.message.Message.preambleX-trhOXtracemalloc.Snapshot.tracesriO(jjXMhttp://docs.python.org/3/library/tracemalloc.html#tracemalloc.Snapshot.tracesX-trjOXxml.dom.DocumentType.entitiesrkO(jjXKhttp://docs.python.org/3/library/xml.dom.html#xml.dom.DocumentType.entitiesX-trlOXstring.Template.templatermO(jjXEhttp://docs.python.org/3/library/string.html#string.Template.templateX-trnOX-xml.parsers.expat.xmlparser.ErrorColumnNumberroO(jjX[http://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.xmlparser.ErrorColumnNumberX-trpOX subprocess.TimeoutExpired.outputrqO(jjXQhttp://docs.python.org/3/library/subprocess.html#subprocess.TimeoutExpired.outputX-trrOXtracemalloc.Filter.all_framesrsO(jjXOhttp://docs.python.org/3/library/tracemalloc.html#tracemalloc.Filter.all_framesX-trtOX.http.server.BaseHTTPRequestHandler.sys_versionruO(jjX`http://docs.python.org/3/library/http.server.html#http.server.BaseHTTPRequestHandler.sys_versionX-trvOXunittest.mock.Mock.__class__rwO(jjXPhttp://docs.python.org/3/library/unittest.mock.html#unittest.mock.Mock.__class__X-trxOXre.regex.flagsryO(jjX7http://docs.python.org/3/library/re.html#re.regex.flagsX-trzOX#ipaddress.IPv6Network.with_hostmaskr{O(jjXShttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Network.with_hostmaskX-tr|OXUnicodeError.objectr}O(jjXDhttp://docs.python.org/3/library/exceptions.html#UnicodeError.objectX-tr~OXctypes.PyDLL._namerO(jjX?http://docs.python.org/3/library/ctypes.html#ctypes.PyDLL._nameX-trOXftplib.FTP_TLS.ssl_versionrO(jjXGhttp://docs.python.org/3/library/ftplib.html#ftplib.FTP_TLS.ssl_versionX-trOXdatetime.time.microsecondrO(jjXHhttp://docs.python.org/3/library/datetime.html#datetime.time.microsecondX-trOX ipaddress.IPv4Address.compressedrO(jjXPhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Address.compressedX-trOX urllib.request.URLopener.versionrO(jjXUhttp://docs.python.org/3/library/urllib.request.html#urllib.request.URLopener.versionX-trOXthreading.Barrier.brokenrO(jjXHhttp://docs.python.org/3/library/threading.html#threading.Barrier.brokenX-trOX&http.cookiejar.FileCookieJar.delayloadrO(jjX[http://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.FileCookieJar.delayloadX-trOXinspect.Parameter.emptyrO(jjXEhttp://docs.python.org/3/library/inspect.html#inspect.Parameter.emptyX-trOX1multiprocessing.connection.Listener.last_acceptedrO(jjXghttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.connection.Listener.last_acceptedX-trOX#email.charset.Charset.input_charsetrO(jjXWhttp://docs.python.org/3/library/email.charset.html#email.charset.Charset.input_charsetX-trOXshlex.shlex.linenorO(jjX>http://docs.python.org/3/library/shlex.html#shlex.shlex.linenoX-trOXurllib.error.HTTPError.reasonrO(jjXPhttp://docs.python.org/3/library/urllib.error.html#urllib.error.HTTPError.reasonX-trOX$doctest.UnexpectedException.exc_inforO(jjXRhttp://docs.python.org/3/library/doctest.html#doctest.UnexpectedException.exc_infoX-trOXUnicodeError.startrO(jjXChttp://docs.python.org/3/library/exceptions.html#UnicodeError.startX-trOX)wsgiref.handlers.BaseHandler.error_statusrO(jjXWhttp://docs.python.org/3/library/wsgiref.html#wsgiref.handlers.BaseHandler.error_statusX-trOXsocketserver.BaseServer.socketrO(jjXQhttp://docs.python.org/3/library/socketserver.html#socketserver.BaseServer.socketX-trOXtarfile.TarInfo.namerO(jjXBhttp://docs.python.org/3/library/tarfile.html#tarfile.TarInfo.nameX-trOXhttp.cookies.Morsel.keyrO(jjXJhttp://docs.python.org/3/library/http.cookies.html#http.cookies.Morsel.keyX-trOXsocket.socket.typerO(jjX?http://docs.python.org/3/library/socket.html#socket.socket.typeX-trOXimportlib.util.MAGIC_NUMBERrO(jjXKhttp://docs.python.org/3/library/importlib.html#importlib.util.MAGIC_NUMBERX-trOX$textwrap.TextWrapper.drop_whitespacerO(jjXShttp://docs.python.org/3/library/textwrap.html#textwrap.TextWrapper.drop_whitespaceX-trOXhmac.HMAC.block_sizerO(jjX?http://docs.python.org/3/library/hmac.html#hmac.HMAC.block_sizeX-trOX"collections.somenamedtuple._fieldsrO(jjXThttp://docs.python.org/3/library/collections.html#collections.somenamedtuple._fieldsX-trOXos.terminal_size.columnsrO(jjXAhttp://docs.python.org/3/library/os.html#os.terminal_size.columnsX-trOXuuid.UUID.variantrO(jjX<http://docs.python.org/3/library/uuid.html#uuid.UUID.variantX-trOXipaddress.IPv6Address.explodedrO(jjXNhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Address.explodedX-trOXtypes.ModuleType.__doc__rO(jjXDhttp://docs.python.org/3/library/types.html#types.ModuleType.__doc__X-trOXimaplib.IMAP4.PROTOCOL_VERSIONrO(jjXLhttp://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.PROTOCOL_VERSIONX-trOXurllib.request.Request.typerO(jjXPhttp://docs.python.org/3/library/urllib.request.html#urllib.request.Request.typeX-trOX,wsgiref.handlers.BaseHandler.traceback_limitrO(jjXZhttp://docs.python.org/3/library/wsgiref.html#wsgiref.handlers.BaseHandler.traceback_limitX-trOXsqlite3.Connection.text_factoryrO(jjXMhttp://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.text_factoryX-trOXsubprocess.Popen.argsrO(jjXFhttp://docs.python.org/3/library/subprocess.html#subprocess.Popen.argsX-trOXtypes.ModuleType.__name__rO(jjXEhttp://docs.python.org/3/library/types.html#types.ModuleType.__name__X-trOXipaddress.IPv6Address.teredorO(jjXLhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Address.teredoX-trOXunittest.mock.Mock.calledrO(jjXMhttp://docs.python.org/3/library/unittest.mock.html#unittest.mock.Mock.calledX-trOX!subprocess.TimeoutExpired.timeoutrO(jjXRhttp://docs.python.org/3/library/subprocess.html#subprocess.TimeoutExpired.timeoutX-trOXpyclbr.Class.filerO(jjX>http://docs.python.org/3/library/pyclbr.html#pyclbr.Class.fileX-trOX#ipaddress.IPv6Address.is_link_localrO(jjXShttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Address.is_link_localX-trOX$ipaddress.IPv6Network.is_unspecifiedrO(jjXThttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Network.is_unspecifiedX-trOX!xml.parsers.expat.ExpatError.coderO(jjXOhttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.ExpatError.codeX-trOXcsv.Dialect.doublequoterO(jjXAhttp://docs.python.org/3/library/csv.html#csv.Dialect.doublequoteX-trOX#ipaddress.IPv4Network.is_link_localrO(jjXShttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Network.is_link_localX-trOXhmac.HMAC.namerO(jjX9http://docs.python.org/3/library/hmac.html#hmac.HMAC.nameX-trOX'xml.parsers.expat.xmlparser.buffer_textrO(jjXUhttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.xmlparser.buffer_textX-trOXdoctest.DocTest.linenorO(jjXDhttp://docs.python.org/3/library/doctest.html#doctest.DocTest.linenoX-trOXmmap.mmap.closedrO(jjX;http://docs.python.org/3/library/mmap.html#mmap.mmap.closedX-trOXshlex.shlex.wordcharsrO(jjXAhttp://docs.python.org/3/library/shlex.html#shlex.shlex.wordcharsX-trOXhttp.cookiejar.Cookie.valuerO(jjXPhttp://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.Cookie.valueX-trOXselect.kqueue.closedrO(jjXAhttp://docs.python.org/3/library/select.html#select.kqueue.closedX-trOX,importlib.machinery.ExtensionFileLoader.namerO(jjX\http://docs.python.org/3/library/importlib.html#importlib.machinery.ExtensionFileLoader.nameX-trOXdoctest.DocTest.namerO(jjXBhttp://docs.python.org/3/library/doctest.html#doctest.DocTest.nameX-trOXxml.dom.Text.datarO(jjX?http://docs.python.org/3/library/xml.dom.html#xml.dom.Text.dataX-trOXcsv.Dialect.quotingrO(jjX=http://docs.python.org/3/library/csv.html#csv.Dialect.quotingX-trOX,email.headerregistry.MIMEVersionHeader.minorrO(jjXghttp://docs.python.org/3/library/email.headerregistry.html#email.headerregistry.MIMEVersionHeader.minorX-trOXhttp.cookiejar.Cookie.versionrO(jjXRhttp://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.Cookie.versionX-trOX$optparse.Option.ALWAYS_TYPED_ACTIONSrO(jjXShttp://docs.python.org/3/library/optparse.html#optparse.Option.ALWAYS_TYPED_ACTIONSX-trOX(asyncio.asyncio.subprocess.Process.stdinrO(jjXahttp://docs.python.org/3/library/asyncio-subprocess.html#asyncio.asyncio.subprocess.Process.stdinX-trOXzipimport.zipimporter.archiverO(jjXMhttp://docs.python.org/3/library/zipimport.html#zipimport.zipimporter.archiveX-trOXdatetime.date.maxrO(jjX@http://docs.python.org/3/library/datetime.html#datetime.date.maxX-trOX>http.cookiejar.DefaultCookiePolicy.strict_rfc2965_unverifiablerO(jjXshttp://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.DefaultCookiePolicy.strict_rfc2965_unverifiableX-trOXtarfile.TarInfo.sizerO(jjXBhttp://docs.python.org/3/library/tarfile.html#tarfile.TarInfo.sizeX-trOX/http.cookiejar.DefaultCookiePolicy.DomainStrictrO(jjXdhttp://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.DefaultCookiePolicy.DomainStrictX-trOXsqlite3.Cursor.descriptionrO(jjXHhttp://docs.python.org/3/library/sqlite3.html#sqlite3.Cursor.descriptionX-trOXurllib.request.Request.selectorrO(jjXThttp://docs.python.org/3/library/urllib.request.html#urllib.request.Request.selectorX-trOXoptparse.Option.defaultrO(jjXFhttp://docs.python.org/3/library/optparse.html#optparse.Option.defaultX-trPXctypes.Structure._anonymous_rP(jjXIhttp://docs.python.org/3/library/ctypes.html#ctypes.Structure._anonymous_X-trPXfilecmp.dircmp.right_onlyrP(jjXGhttp://docs.python.org/3/library/filecmp.html#filecmp.dircmp.right_onlyX-trPXcsv.Dialect.quotecharrP(jjX?http://docs.python.org/3/library/csv.html#csv.Dialect.quotecharX-trPX(http.server.BaseHTTPRequestHandler.wfilerP(jjXZhttp://docs.python.org/3/library/http.server.html#http.server.BaseHTTPRequestHandler.wfileX-trPXsubprocess.Popen.stderrr P(jjXHhttp://docs.python.org/3/library/subprocess.html#subprocess.Popen.stderrX-tr PXxml.dom.Node.attributesr P(jjXEhttp://docs.python.org/3/library/xml.dom.html#xml.dom.Node.attributesX-tr PXxml.dom.Node.nextSiblingr P(jjXFhttp://docs.python.org/3/library/xml.dom.html#xml.dom.Node.nextSiblingX-trPXinspect.BoundArguments.kwargsrP(jjXKhttp://docs.python.org/3/library/inspect.html#inspect.BoundArguments.kwargsX-trPX(email.policy.EmailPolicy.content_managerrP(jjX[http://docs.python.org/3/library/email.policy.html#email.policy.EmailPolicy.content_managerX-trPX$tracemalloc.Snapshot.traceback_limitrP(jjXVhttp://docs.python.org/3/library/tracemalloc.html#tracemalloc.Snapshot.traceback_limitX-trPXthreading.Barrier.partiesrP(jjXIhttp://docs.python.org/3/library/threading.html#threading.Barrier.partiesX-trPX&email.headerregistry.Address.addr_specrP(jjXahttp://docs.python.org/3/library/email.headerregistry.html#email.headerregistry.Address.addr_specX-trPXzipfile.ZipInfo.volumerP(jjXDhttp://docs.python.org/3/library/zipfile.html#zipfile.ZipInfo.volumeX-trPXcsv.csvwriter.dialectrP(jjX?http://docs.python.org/3/library/csv.html#csv.csvwriter.dialectX-trPX3email.headerregistry.ParameterizedMIMEHeader.paramsrP(jjXnhttp://docs.python.org/3/library/email.headerregistry.html#email.headerregistry.ParameterizedMIMEHeader.paramsX-trPXxml.dom.Comment.datarP(jjXBhttp://docs.python.org/3/library/xml.dom.html#xml.dom.Comment.dataX-tr PXfilecmp.dircmp.common_filesr!P(jjXIhttp://docs.python.org/3/library/filecmp.html#filecmp.dircmp.common_filesX-tr"PX$ipaddress.IPv4Address.is_unspecifiedr#P(jjXThttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Address.is_unspecifiedX-tr$PXssl.SSLSocket.contextr%P(jjX?http://docs.python.org/3/library/ssl.html#ssl.SSLSocket.contextX-tr&PXurllib.error.URLError.reasonr'P(jjXOhttp://docs.python.org/3/library/urllib.error.html#urllib.error.URLError.reasonX-tr(PXssl.SSLError.libraryr)P(jjX>http://docs.python.org/3/library/ssl.html#ssl.SSLError.libraryX-tr*PXipaddress.IPv6Address.packedr+P(jjXLhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Address.packedX-tr,PXzipfile.ZipInfo.filenamer-P(jjXFhttp://docs.python.org/3/library/zipfile.html#zipfile.ZipInfo.filenameX-tr.PXunittest.mock.Mock.call_countr/P(jjXQhttp://docs.python.org/3/library/unittest.mock.html#unittest.mock.Mock.call_countX-tr0PXpyclbr.Function.namer1P(jjXAhttp://docs.python.org/3/library/pyclbr.html#pyclbr.Function.nameX-tr2PXtracemalloc.Filter.inclusiver3P(jjXNhttp://docs.python.org/3/library/tracemalloc.html#tracemalloc.Filter.inclusiveX-tr4PXBaseException.argsr5P(jjXChttp://docs.python.org/3/library/exceptions.html#BaseException.argsX-tr6PXpyclbr.Class.moduler7P(jjX@http://docs.python.org/3/library/pyclbr.html#pyclbr.Class.moduleX-tr8PXfunctools.partial.funcr9P(jjXFhttp://docs.python.org/3/library/functools.html#functools.partial.funcX-tr:PXshlex.shlex.escapedquotesr;P(jjXEhttp://docs.python.org/3/library/shlex.html#shlex.shlex.escapedquotesX-trPX(http.server.BaseHTTPRequestHandler.rfiler?P(jjXZhttp://docs.python.org/3/library/http.server.html#http.server.BaseHTTPRequestHandler.rfileX-tr@PXweakref.ref.__callback__rAP(jjXFhttp://docs.python.org/3/library/weakref.html#weakref.ref.__callback__X-trBPXxmlrpc.client.Fault.faultCoderCP(jjXQhttp://docs.python.org/3/library/xmlrpc.client.html#xmlrpc.client.Fault.faultCodeX-trDPXcmd.Cmd.use_rawinputrEP(jjX>http://docs.python.org/3/library/cmd.html#cmd.Cmd.use_rawinputX-trFPX.wsgiref.handlers.BaseHandler.wsgi_file_wrapperrGP(jjX\http://docs.python.org/3/library/wsgiref.html#wsgiref.handlers.BaseHandler.wsgi_file_wrapperX-trHPX'xml.parsers.expat.xmlparser.buffer_sizerIP(jjXUhttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.xmlparser.buffer_sizeX-trJPXunittest.TestResult.failfastrKP(jjXKhttp://docs.python.org/3/library/unittest.html#unittest.TestResult.failfastX-trLPXos.sched_param.sched_priorityrMP(jjXFhttp://docs.python.org/3/library/os.html#os.sched_param.sched_priorityX-trNPX!ipaddress.IPv6Address.is_loopbackrOP(jjXQhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Address.is_loopbackX-trPPXtracemalloc.Filter.linenorQP(jjXKhttp://docs.python.org/3/library/tracemalloc.html#tracemalloc.Filter.linenoX-trRPX%textwrap.TextWrapper.break_long_wordsrSP(jjXThttp://docs.python.org/3/library/textwrap.html#textwrap.TextWrapper.break_long_wordsX-trTPXtarfile.TarInfo.pax_headersrUP(jjXIhttp://docs.python.org/3/library/tarfile.html#tarfile.TarInfo.pax_headersX-trVPX$shutil.rmtree.avoids_symlink_attacksrWP(jjXQhttp://docs.python.org/3/library/shutil.html#shutil.rmtree.avoids_symlink_attacksX-trXPXfilecmp.dircmp.rightrYP(jjXBhttp://docs.python.org/3/library/filecmp.html#filecmp.dircmp.rightX-trZPX!xml.etree.ElementTree.Element.tagr[P(jjX]http://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element.tagX-tr\PX!mimetypes.MimeTypes.encodings_mapr]P(jjXQhttp://docs.python.org/3/library/mimetypes.html#mimetypes.MimeTypes.encodings_mapX-tr^PX)xml.etree.ElementTree.ParseError.positionr_P(jjXehttp://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.ParseError.positionX-tr`PXunittest.TestResult.skippedraP(jjXJhttp://docs.python.org/3/library/unittest.html#unittest.TestResult.skippedX-trbPXxml.dom.Node.nodeValuercP(jjXDhttp://docs.python.org/3/library/xml.dom.html#xml.dom.Node.nodeValueX-trdPX#ipaddress.IPv6Network.is_site_localreP(jjXShttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Network.is_site_localX-trfPX!ipaddress.IPv4Address.is_loopbackrgP(jjXQhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Address.is_loopbackX-trhPX#xml.dom.DocumentType.internalSubsetriP(jjXQhttp://docs.python.org/3/library/xml.dom.html#xml.dom.DocumentType.internalSubsetX-trjPXfilecmp.dircmp.diff_filesrkP(jjXGhttp://docs.python.org/3/library/filecmp.html#filecmp.dircmp.diff_filesX-trlPXunittest.TestLoader.suiteClassrmP(jjXMhttp://docs.python.org/3/library/unittest.html#unittest.TestLoader.suiteClassX-trnPXsqlite3.Connection.row_factoryroP(jjXLhttp://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.row_factoryX-trpPXsubprocess.Popen.pidrqP(jjXEhttp://docs.python.org/3/library/subprocess.html#subprocess.Popen.pidX-trrPX subprocess.STARTUPINFO.hStdInputrsP(jjXQhttp://docs.python.org/3/library/subprocess.html#subprocess.STARTUPINFO.hStdInputX-trtPX/email.headerregistry.ContentTypeHeader.maintyperuP(jjXjhttp://docs.python.org/3/library/email.headerregistry.html#email.headerregistry.ContentTypeHeader.maintypeX-trvPX$xml.etree.ElementTree.Element.attribrwP(jjX`http://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element.attribX-trxPXselect.devpoll.closedryP(jjXBhttp://docs.python.org/3/library/select.html#select.devpoll.closedX-trzPXipaddress.IPv6Interface.networkr{P(jjXOhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Interface.networkX-tr|PXxml.dom.Attr.localNamer}P(jjXDhttp://docs.python.org/3/library/xml.dom.html#xml.dom.Attr.localNameX-tr~PXtracemalloc.Trace.tracebackrP(jjXMhttp://docs.python.org/3/library/tracemalloc.html#tracemalloc.Trace.tracebackX-trPXtracemalloc.Statistic.countrP(jjXMhttp://docs.python.org/3/library/tracemalloc.html#tracemalloc.Statistic.countX-trPXcmd.Cmd.undoc_headerrP(jjX>http://docs.python.org/3/library/cmd.html#cmd.Cmd.undoc_headerX-trPXsmtpd.SMTPChannel.seen_greetingrP(jjXKhttp://docs.python.org/3/library/smtpd.html#smtpd.SMTPChannel.seen_greetingX-trPXhttp.cookiejar.Cookie.rfc2109rP(jjXRhttp://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.Cookie.rfc2109X-trPXunittest.TestResult.shouldStoprP(jjXMhttp://docs.python.org/3/library/unittest.html#unittest.TestResult.shouldStopX-trPXdatetime.date.resolutionrP(jjXGhttp://docs.python.org/3/library/datetime.html#datetime.date.resolutionX-trPX ipaddress.IPv4Address.is_privaterP(jjXPhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Address.is_privateX-trPXdatetime.timedelta.maxrP(jjXEhttp://docs.python.org/3/library/datetime.html#datetime.timedelta.maxX-trPXreprlib.Repr.maxlistrP(jjXBhttp://docs.python.org/3/library/reprlib.html#reprlib.Repr.maxlistX-trPX2xmlrpc.server.SimpleXMLRPCRequestHandler.rpc_pathsrP(jjXfhttp://docs.python.org/3/library/xmlrpc.server.html#xmlrpc.server.SimpleXMLRPCRequestHandler.rpc_pathsX-trPX"ipaddress.IPv6Address.is_multicastrP(jjXRhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Address.is_multicastX-trPXxmlrpc.client.Binary.datarP(jjXMhttp://docs.python.org/3/library/xmlrpc.client.html#xmlrpc.client.Binary.dataX-trPX%textwrap.TextWrapper.break_on_hyphensrP(jjXThttp://docs.python.org/3/library/textwrap.html#textwrap.TextWrapper.break_on_hyphensX-trPXipaddress.IPv4Interface.iprP(jjXJhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Interface.ipX-trPX#ipaddress.IPv4Address.is_link_localrP(jjXShttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Address.is_link_localX-trPX#ipaddress.IPv6Network.num_addressesrP(jjXShttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Network.num_addressesX-trPXipaddress.IPv6Address.versionrP(jjXMhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Address.versionX-trPX*socketserver.BaseServer.request_queue_sizerP(jjX]http://docs.python.org/3/library/socketserver.html#socketserver.BaseServer.request_queue_sizeX-trPX"email.charset.Charset.output_codecrP(jjXVhttp://docs.python.org/3/library/email.charset.html#email.charset.Charset.output_codecX-trPXsubprocess.Popen.returncoderP(jjXLhttp://docs.python.org/3/library/subprocess.html#subprocess.Popen.returncodeX-trPX,xml.parsers.expat.xmlparser.CurrentByteIndexrP(jjXZhttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.xmlparser.CurrentByteIndexX-trPX)email.headerregistry.Address.display_namerP(jjXdhttp://docs.python.org/3/library/email.headerregistry.html#email.headerregistry.Address.display_nameX-trPXzipfile.ZipInfo.internal_attrrP(jjXKhttp://docs.python.org/3/library/zipfile.html#zipfile.ZipInfo.internal_attrX-trPXmimetypes.MimeTypes.types_maprP(jjXMhttp://docs.python.org/3/library/mimetypes.html#mimetypes.MimeTypes.types_mapX-trPXemail.message.Message.epiloguerP(jjXRhttp://docs.python.org/3/library/email.message.html#email.message.Message.epilogueX-trPX ipaddress.IPv4Network.is_privaterP(jjXPhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Network.is_privateX-trPX%email.headerregistry.Address.usernamerP(jjX`http://docs.python.org/3/library/email.headerregistry.html#email.headerregistry.Address.usernameX-trPXxml.dom.Node.parentNoderP(jjXEhttp://docs.python.org/3/library/xml.dom.html#xml.dom.Node.parentNodeX-trPX5http.server.BaseHTTPRequestHandler.error_content_typerP(jjXghttp://docs.python.org/3/library/http.server.html#http.server.BaseHTTPRequestHandler.error_content_typeX-trPXxml.dom.Node.previousSiblingrP(jjXJhttp://docs.python.org/3/library/xml.dom.html#xml.dom.Node.previousSiblingX-trPX inspect.BoundArguments.argumentsrP(jjXNhttp://docs.python.org/3/library/inspect.html#inspect.BoundArguments.argumentsX-trPXpyclbr.Function.modulerP(jjXChttp://docs.python.org/3/library/pyclbr.html#pyclbr.Function.moduleX-trPXio.TextIOBase.newlinesrP(jjX?http://docs.python.org/3/library/io.html#io.TextIOBase.newlinesX-trPXxml.dom.DocumentType.publicIdrP(jjXKhttp://docs.python.org/3/library/xml.dom.html#xml.dom.DocumentType.publicIdX-trPXurllib.error.HTTPError.coderP(jjXNhttp://docs.python.org/3/library/urllib.error.html#urllib.error.HTTPError.codeX-trPX!ossaudiodev.oss_audio_device.moderP(jjXShttp://docs.python.org/3/library/ossaudiodev.html#ossaudiodev.oss_audio_device.modeX-trPXUnicodeError.encodingrP(jjXFhttp://docs.python.org/3/library/exceptions.html#UnicodeError.encodingX-trPX re.match.rerP(jjX4http://docs.python.org/3/library/re.html#re.match.reX-trPXreprlib.Repr.maxlevelrP(jjXChttp://docs.python.org/3/library/reprlib.html#reprlib.Repr.maxlevelX-trPXdatetime.time.minuterP(jjXChttp://docs.python.org/3/library/datetime.html#datetime.time.minuteX-trPXuuid.UUID.bytesrP(jjX:http://docs.python.org/3/library/uuid.html#uuid.UUID.bytesX-trPX(email.message.EmailMessage.is_attachmentrP(jjXchttp://docs.python.org/3/library/email.contentmanager.html#email.message.EmailMessage.is_attachmentX-trPX%importlib.machinery.ModuleSpec.parentrP(jjXUhttp://docs.python.org/3/library/importlib.html#importlib.machinery.ModuleSpec.parentX-trPXmimetypes.MimeTypes.suffix_maprP(jjXNhttp://docs.python.org/3/library/mimetypes.html#mimetypes.MimeTypes.suffix_mapX-trPX!subprocess.STARTUPINFO.hStdOutputrP(jjXRhttp://docs.python.org/3/library/subprocess.html#subprocess.STARTUPINFO.hStdOutputX-trPXfilecmp.dircmp.left_onlyrP(jjXFhttp://docs.python.org/3/library/filecmp.html#filecmp.dircmp.left_onlyX-trPX#email.charset.Charset.body_encodingrP(jjXWhttp://docs.python.org/3/library/email.charset.html#email.charset.Charset.body_encodingX-trPXdatetime.timezone.utcrP(jjXDhttp://docs.python.org/3/library/datetime.html#datetime.timezone.utcX-trPXdoctest.Example.sourcerP(jjXDhttp://docs.python.org/3/library/doctest.html#doctest.Example.sourceX-trPX re.match.posrP(jjX5http://docs.python.org/3/library/re.html#re.match.posX-trPX-importlib.machinery.SourcelessFileLoader.namerP(jjX]http://docs.python.org/3/library/importlib.html#importlib.machinery.SourcelessFileLoader.nameX-trPXctypes._FuncPtr.restyperP(jjXDhttp://docs.python.org/3/library/ctypes.html#ctypes._FuncPtr.restypeX-trPXsmtpd.SMTPChannel.rcpttosrP(jjXEhttp://docs.python.org/3/library/smtpd.html#smtpd.SMTPChannel.rcpttosX-trPX$ipaddress.IPv6Address.is_unspecifiedrP(jjXThttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Address.is_unspecifiedX-trPXnumbers.Rational.numeratorrP(jjXHhttp://docs.python.org/3/library/numbers.html#numbers.Rational.numeratorX-trPX xml.dom.Document.documentElementrP(jjXNhttp://docs.python.org/3/library/xml.dom.html#xml.dom.Document.documentElementX-trPXsmtpd.SMTPChannel.mailfromrP(jjXFhttp://docs.python.org/3/library/smtpd.html#smtpd.SMTPChannel.mailfromX-trPX9http.cookiejar.DefaultCookiePolicy.strict_ns_unverifiablerP(jjXnhttp://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.DefaultCookiePolicy.strict_ns_unverifiableX-trPXsmtpd.SMTPChannel.smtp_serverrP(jjXIhttp://docs.python.org/3/library/smtpd.html#smtpd.SMTPChannel.smtp_serverX-trPXunittest.TestCase.outputrP(jjXGhttp://docs.python.org/3/library/unittest.html#unittest.TestCase.outputX-trPX uuid.UUID.urnrP(jjX8http://docs.python.org/3/library/uuid.html#uuid.UUID.urnX-trPXreprlib.Repr.maxarrayrP(jjXChttp://docs.python.org/3/library/reprlib.html#reprlib.Repr.maxarrayX-trPX!ipaddress.IPv6Network.is_reservedrP(jjXQhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Network.is_reservedX-trPX'wsgiref.handlers.BaseHandler.os_environrP(jjXUhttp://docs.python.org/3/library/wsgiref.html#wsgiref.handlers.BaseHandler.os_environX-trQX!modulefinder.ModuleFinder.modulesrQ(jjXThttp://docs.python.org/3/library/modulefinder.html#modulefinder.ModuleFinder.modulesX-trQX multiprocessing.Process.exitcoderQ(jjXVhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.Process.exitcodeX-trQXhttp.client.HTTPResponse.msgrQ(jjXNhttp://docs.python.org/3/library/http.client.html#http.client.HTTPResponse.msgX-trQX!urllib.request.BaseHandler.parentrQ(jjXVhttp://docs.python.org/3/library/urllib.request.html#urllib.request.BaseHandler.parentX-trQX*wsgiref.handlers.BaseHandler.error_headersr Q(jjXXhttp://docs.python.org/3/library/wsgiref.html#wsgiref.handlers.BaseHandler.error_headersX-tr QX.email.headerregistry.MIMEVersionHeader.versionr Q(jjXihttp://docs.python.org/3/library/email.headerregistry.html#email.headerregistry.MIMEVersionHeader.versionX-tr QXshlex.shlex.debugr Q(jjX=http://docs.python.org/3/library/shlex.html#shlex.shlex.debugX-trQXmemoryview.readonlyrQ(jjXBhttp://docs.python.org/3/library/stdtypes.html#memoryview.readonlyX-trQXtarfile.TarInfo.linknamerQ(jjXFhttp://docs.python.org/3/library/tarfile.html#tarfile.TarInfo.linknameX-trQX __loader__rQ(jjX9http://docs.python.org/3/reference/import.html#__loader__X-trQXssl.SSLContext.optionsrQ(jjX@http://docs.python.org/3/library/ssl.html#ssl.SSLContext.optionsX-trQX*logging.handlers.BaseRotatingHandler.namerrQ(jjXahttp://docs.python.org/3/library/logging.handlers.html#logging.handlers.BaseRotatingHandler.namerX-trQXthreading.Thread.identrQ(jjXFhttp://docs.python.org/3/library/threading.html#threading.Thread.identX-trQXoptparse.Option.typerQ(jjXChttp://docs.python.org/3/library/optparse.html#optparse.Option.typeX-trQXhttp.client.HTTPResponse.closedrQ(jjXQhttp://docs.python.org/3/library/http.client.html#http.client.HTTPResponse.closedX-trQX!lzma.LZMADecompressor.unused_datarQ(jjXLhttp://docs.python.org/3/library/lzma.html#lzma.LZMADecompressor.unused_dataX-tr QXzipfile.ZipInfo.create_systemr!Q(jjXKhttp://docs.python.org/3/library/zipfile.html#zipfile.ZipInfo.create_systemX-tr"QXtypes.ModuleType.__package__r#Q(jjXHhttp://docs.python.org/3/library/types.html#types.ModuleType.__package__X-tr$QXuuid.UUID.bytes_ler%Q(jjX=http://docs.python.org/3/library/uuid.html#uuid.UUID.bytes_leX-tr&QXshlex.shlex.eofr'Q(jjX;http://docs.python.org/3/library/shlex.html#shlex.shlex.eofX-tr(QXzipfile.ZipInfo.compress_typer)Q(jjXKhttp://docs.python.org/3/library/zipfile.html#zipfile.ZipInfo.compress_typeX-tr*QX$ipaddress.IPv6Interface.with_netmaskr+Q(jjXThttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Interface.with_netmaskX-tr,QXselect.kevent.identr-Q(jjX@http://docs.python.org/3/library/select.html#select.kevent.identX-tr.QXipaddress.IPv4Address.explodedr/Q(jjXNhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Address.explodedX-tr0QXmemoryview.nbytesr1Q(jjX@http://docs.python.org/3/library/stdtypes.html#memoryview.nbytesX-tr2QXcmd.Cmd.identcharsr3Q(jjX<http://docs.python.org/3/library/cmd.html#cmd.Cmd.identcharsX-tr4QXxml.dom.Node.nodeNamer5Q(jjXChttp://docs.python.org/3/library/xml.dom.html#xml.dom.Node.nodeNameX-tr6QXbz2.BZ2Decompressor.eofr7Q(jjXAhttp://docs.python.org/3/library/bz2.html#bz2.BZ2Decompressor.eofX-tr8QXcmd.Cmd.promptr9Q(jjX8http://docs.python.org/3/library/cmd.html#cmd.Cmd.promptX-tr:QXreprlib.Repr.maxstringr;Q(jjXDhttp://docs.python.org/3/library/reprlib.html#reprlib.Repr.maxstringX-trQX%importlib.machinery.BYTECODE_SUFFIXESr?Q(jjXUhttp://docs.python.org/3/library/importlib.html#importlib.machinery.BYTECODE_SUFFIXESX-tr@QXshlex.shlex.whitespacerAQ(jjXBhttp://docs.python.org/3/library/shlex.html#shlex.shlex.whitespaceX-trBQXio.TextIOWrapper.line_bufferingrCQ(jjXHhttp://docs.python.org/3/library/io.html#io.TextIOWrapper.line_bufferingX-trDQXre.match.stringrEQ(jjX8http://docs.python.org/3/library/re.html#re.match.stringX-trFQXfunctools.partial.keywordsrGQ(jjXJhttp://docs.python.org/3/library/functools.html#functools.partial.keywordsX-trHQXssl.SSLContext.verify_moderIQ(jjXDhttp://docs.python.org/3/library/ssl.html#ssl.SSLContext.verify_modeX-trJQX#xml.parsers.expat.ExpatError.linenorKQ(jjXQhttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.ExpatError.linenoX-trLQXunittest.TestCase.recordsrMQ(jjXHhttp://docs.python.org/3/library/unittest.html#unittest.TestCase.recordsX-trNQXdatetime.datetime.resolutionrOQ(jjXKhttp://docs.python.org/3/library/datetime.html#datetime.datetime.resolutionX-trPQXre.match.endposrQQ(jjX8http://docs.python.org/3/library/re.html#re.match.endposX-trRQXzlib.Decompress.eofrSQ(jjX>http://docs.python.org/3/library/zlib.html#zlib.Decompress.eofX-trTQX)importlib.machinery.SourceFileLoader.namerUQ(jjXYhttp://docs.python.org/3/library/importlib.html#importlib.machinery.SourceFileLoader.nameX-trVQX#urllib.request.Request.unverifiablerWQ(jjXXhttp://docs.python.org/3/library/urllib.request.html#urllib.request.Request.unverifiableX-trXQXreprlib.Repr.maxfrozensetrYQ(jjXGhttp://docs.python.org/3/library/reprlib.html#reprlib.Repr.maxfrozensetX-trZQXast.AST.col_offsetr[Q(jjX<http://docs.python.org/3/library/ast.html#ast.AST.col_offsetX-tr\QX'wsgiref.handlers.BaseHandler.error_bodyr]Q(jjXUhttp://docs.python.org/3/library/wsgiref.html#wsgiref.handlers.BaseHandler.error_bodyX-tr^QX"xmlrpc.client.ProtocolError.errmsgr_Q(jjXVhttp://docs.python.org/3/library/xmlrpc.client.html#xmlrpc.client.ProtocolError.errmsgX-tr`QX#ipaddress.IPv6Network.is_link_localraQ(jjXShttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Network.is_link_localX-trbQXfractions.Fraction.numeratorrcQ(jjXLhttp://docs.python.org/3/library/fractions.html#fractions.Fraction.numeratorX-trdQX$ipaddress.IPv4Interface.with_netmaskreQ(jjXThttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Interface.with_netmaskX-trfQXoptparse.Option.choicesrgQ(jjXFhttp://docs.python.org/3/library/optparse.html#optparse.Option.choicesX-trhQXtextwrap.TextWrapper.tabsizeriQ(jjXKhttp://docs.python.org/3/library/textwrap.html#textwrap.TextWrapper.tabsizeX-trjQXunittest.mock.Mock.return_valuerkQ(jjXShttp://docs.python.org/3/library/unittest.mock.html#unittest.mock.Mock.return_valueX-trlQXzipfile.ZipInfo.reservedrmQ(jjXFhttp://docs.python.org/3/library/zipfile.html#zipfile.ZipInfo.reservedX-trnQXtracemalloc.StatisticDiff.countroQ(jjXQhttp://docs.python.org/3/library/tracemalloc.html#tracemalloc.StatisticDiff.countX-trpQXmemoryview.ndimrqQ(jjX>http://docs.python.org/3/library/stdtypes.html#memoryview.ndimX-trrQX-asyncio.asyncio.subprocess.Process.returncodersQ(jjXfhttp://docs.python.org/3/library/asyncio-subprocess.html#asyncio.asyncio.subprocess.Process.returncodeX-trtQXnumbers.Rational.denominatorruQ(jjXJhttp://docs.python.org/3/library/numbers.html#numbers.Rational.denominatorX-trvQX"distutils.cmd.Command.sub_commandsrwQ(jjXQhttp://docs.python.org/3/distutils/apiref.html#distutils.cmd.Command.sub_commandsX-trxQXipaddress.IPv4Network.versionryQ(jjXMhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Network.versionX-trzQX,email.headerregistry.AddressHeader.addressesr{Q(jjXghttp://docs.python.org/3/library/email.headerregistry.html#email.headerregistry.AddressHeader.addressesX-tr|QX*wsgiref.handlers.BaseHandler.wsgi_run_oncer}Q(jjXXhttp://docs.python.org/3/library/wsgiref.html#wsgiref.handlers.BaseHandler.wsgi_run_onceX-tr~QX,multiprocessing.managers.BaseManager.addressrQ(jjXbhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.managers.BaseManager.addressX-trQX'ipaddress.IPv4Network.broadcast_addressrQ(jjXWhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Network.broadcast_addressX-trQXsched.scheduler.queuerQ(jjXAhttp://docs.python.org/3/library/sched.html#sched.scheduler.queueX-trQXunittest.TestCase.maxDiffrQ(jjXHhttp://docs.python.org/3/library/unittest.html#unittest.TestCase.maxDiffX-trQXshlex.shlex.whitespace_splitrQ(jjXHhttp://docs.python.org/3/library/shlex.html#shlex.shlex.whitespace_splitX-trQX!email.charset.Charset.input_codecrQ(jjXUhttp://docs.python.org/3/library/email.charset.html#email.charset.Charset.input_codecX-trQXio.BufferedIOBase.rawrQ(jjX>http://docs.python.org/3/library/io.html#io.BufferedIOBase.rawX-trQXselect.kevent.filterrQ(jjXAhttp://docs.python.org/3/library/select.html#select.kevent.filterX-trQX class.__mro__rQ(jjX<http://docs.python.org/3/library/stdtypes.html#class.__mro__X-trQXsmtpd.SMTPChannel.smtp_staterQ(jjXHhttp://docs.python.org/3/library/smtpd.html#smtpd.SMTPChannel.smtp_stateX-trQXdatetime.datetime.minuterQ(jjXGhttp://docs.python.org/3/library/datetime.html#datetime.datetime.minuteX-trQXdatetime.datetime.maxrQ(jjXDhttp://docs.python.org/3/library/datetime.html#datetime.datetime.maxX-trQX?http.cookiejar.DefaultCookiePolicy.strict_ns_set_initial_dollarrQ(jjXthttp://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.DefaultCookiePolicy.strict_ns_set_initial_dollarX-trQX http.client.HTTPResponse.versionrQ(jjXRhttp://docs.python.org/3/library/http.client.html#http.client.HTTPResponse.versionX-trQX#importlib.machinery.ModuleSpec.namerQ(jjXShttp://docs.python.org/3/library/importlib.html#importlib.machinery.ModuleSpec.nameX-trQX%importlib.machinery.ModuleSpec.originrQ(jjXUhttp://docs.python.org/3/library/importlib.html#importlib.machinery.ModuleSpec.originX-trQX textwrap.TextWrapper.expand_tabsrQ(jjXOhttp://docs.python.org/3/library/textwrap.html#textwrap.TextWrapper.expand_tabsX-trQXxml.dom.Attr.namerQ(jjX?http://docs.python.org/3/library/xml.dom.html#xml.dom.Attr.nameX-trQX!http.cookiejar.Cookie.comment_urlrQ(jjXVhttp://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.Cookie.comment_urlX-trQXzipfile.ZipFile.commentrQ(jjXEhttp://docs.python.org/3/library/zipfile.html#zipfile.ZipFile.commentX-trQXipaddress.IPv4Network.prefixlenrQ(jjXOhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Network.prefixlenX-trQX%xml.parsers.expat.xmlparser.ErrorCoderQ(jjXShttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.xmlparser.ErrorCodeX-trQXtextwrap.TextWrapper.widthrQ(jjXIhttp://docs.python.org/3/library/textwrap.html#textwrap.TextWrapper.widthX-trQXpyclbr.Function.linenorQ(jjXChttp://docs.python.org/3/library/pyclbr.html#pyclbr.Function.linenoX-trQX(email.headerregistry.DateHeader.datetimerQ(jjXchttp://docs.python.org/3/library/email.headerregistry.html#email.headerregistry.DateHeader.datetimeX-trQXdatetime.time.maxrQ(jjX@http://docs.python.org/3/library/datetime.html#datetime.time.maxX-trQXsmtpd.SMTPChannel.fqdnrQ(jjXBhttp://docs.python.org/3/library/smtpd.html#smtpd.SMTPChannel.fqdnX-trQX multiprocessing.Process.sentinelrQ(jjXVhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.Process.sentinelX-trQXdatetime.datetime.microsecondrQ(jjXLhttp://docs.python.org/3/library/datetime.html#datetime.datetime.microsecondX-trQX#ossaudiodev.oss_audio_device.closedrQ(jjXUhttp://docs.python.org/3/library/ossaudiodev.html#ossaudiodev.oss_audio_device.closedX-trQXhttp.cookiejar.Cookie.portrQ(jjXOhttp://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.Cookie.portX-trQXthreading.Thread.daemonrQ(jjXGhttp://docs.python.org/3/library/threading.html#threading.Thread.daemonX-trQX&urllib.request.Request.origin_req_hostrQ(jjX[http://docs.python.org/3/library/urllib.request.html#urllib.request.Request.origin_req_hostX-trQXcsv.Dialect.escapecharrQ(jjX@http://docs.python.org/3/library/csv.html#csv.Dialect.escapecharX-trQX'collections.defaultdict.default_factoryrQ(jjXYhttp://docs.python.org/3/library/collections.html#collections.defaultdict.default_factoryX-trQXio.FileIO.moderQ(jjX7http://docs.python.org/3/library/io.html#io.FileIO.modeX-trQX,urllib.request.HTTPCookieProcessor.cookiejarrQ(jjXahttp://docs.python.org/3/library/urllib.request.html#urllib.request.HTTPCookieProcessor.cookiejarX-trQX"BlockingIOError.characters_writtenrQ(jjXShttp://docs.python.org/3/library/exceptions.html#BlockingIOError.characters_writtenX-trQXssl.SSLError.reasonrQ(jjX=http://docs.python.org/3/library/ssl.html#ssl.SSLError.reasonX-trQXzipfile.ZipInfo.commentrQ(jjXEhttp://docs.python.org/3/library/zipfile.html#zipfile.ZipInfo.commentX-trQXdoctest.DocTest.filenamerQ(jjXFhttp://docs.python.org/3/library/doctest.html#doctest.DocTest.filenameX-trQXdatetime.date.minrQ(jjX@http://docs.python.org/3/library/datetime.html#datetime.date.minX-trQXipaddress.IPv6Address.is_globalrQ(jjXOhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Address.is_globalX-trQX"xml.etree.ElementTree.Element.tailrQ(jjX^http://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element.tailX-trQXformatter.formatter.writerrQ(jjXJhttp://docs.python.org/3/library/formatter.html#formatter.formatter.writerX-trQX-xml.parsers.expat.xmlparser.CurrentLineNumberrQ(jjX[http://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.xmlparser.CurrentLineNumberX-trQXfilecmp.dircmp.leftrQ(jjXAhttp://docs.python.org/3/library/filecmp.html#filecmp.dircmp.leftX-trQX,logging.handlers.BaseRotatingHandler.rotatorrQ(jjXchttp://docs.python.org/3/library/logging.handlers.html#logging.handlers.BaseRotatingHandler.rotatorX-trQX*http.server.BaseHTTPRequestHandler.headersrQ(jjX\http://docs.python.org/3/library/http.server.html#http.server.BaseHTTPRequestHandler.headersX-trQXinspect.Signature.emptyrQ(jjXEhttp://docs.python.org/3/library/inspect.html#inspect.Signature.emptyX-trQXhttp.client.HTTPResponse.statusrQ(jjXQhttp://docs.python.org/3/library/http.client.html#http.client.HTTPResponse.statusX-trQXselect.kevent.udatarQ(jjX@http://docs.python.org/3/library/select.html#select.kevent.udataX-trQX#http.client.HTTPResponse.debuglevelrQ(jjXUhttp://docs.python.org/3/library/http.client.html#http.client.HTTPResponse.debuglevelX-trQXmemoryview.formatrQ(jjX@http://docs.python.org/3/library/stdtypes.html#memoryview.formatX-trQXhttp.cookiejar.Cookie.discardrQ(jjXRhttp://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.Cookie.discardX-trQXsqlite3.Cursor.lastrowidrQ(jjXFhttp://docs.python.org/3/library/sqlite3.html#sqlite3.Cursor.lastrowidX-trQX/xml.parsers.expat.xmlparser.CurrentColumnNumberrQ(jjX]http://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.xmlparser.CurrentColumnNumberX-trQXzlib.Decompress.unconsumed_tailrQ(jjXJhttp://docs.python.org/3/library/zlib.html#zlib.Decompress.unconsumed_tailX-trQXinstance.__class__rQ(jjXAhttp://docs.python.org/3/library/stdtypes.html#instance.__class__X-trQXtracemalloc.Trace.sizerQ(jjXHhttp://docs.python.org/3/library/tracemalloc.html#tracemalloc.Trace.sizeX-trQXinspect.Parameter.annotationrQ(jjXJhttp://docs.python.org/3/library/inspect.html#inspect.Parameter.annotationX-trQXcollections.UserDict.datarQ(jjXKhttp://docs.python.org/3/library/collections.html#collections.UserDict.dataX-trQX cmd.Cmd.introrQ(jjX7http://docs.python.org/3/library/cmd.html#cmd.Cmd.introX-trQXunittest.TestResult.errorsrQ(jjXIhttp://docs.python.org/3/library/unittest.html#unittest.TestResult.errorsX-trQX$asyncio.IncompleteReadError.expectedrQ(jjXYhttp://docs.python.org/3/library/asyncio-stream.html#asyncio.IncompleteReadError.expectedX-trRXclass.__qualname__rR(jjXAhttp://docs.python.org/3/library/stdtypes.html#class.__qualname__X-trRXdoctest.Example.exc_msgrR(jjXEhttp://docs.python.org/3/library/doctest.html#doctest.Example.exc_msgX-trRX0email.headerregistry.SingleAddressHeader.addressrR(jjXkhttp://docs.python.org/3/library/email.headerregistry.html#email.headerregistry.SingleAddressHeader.addressX-trRXemail.message.Message.defectsrR(jjXQhttp://docs.python.org/3/library/email.message.html#email.message.Message.defectsX-trRX uuid.UUID.hexr R(jjX8http://docs.python.org/3/library/uuid.html#uuid.UUID.hexX-tr RXshlex.shlex.sourcer R(jjX>http://docs.python.org/3/library/shlex.html#shlex.shlex.sourceX-tr RXzipfile.ZipInfo.extrar R(jjXChttp://docs.python.org/3/library/zipfile.html#zipfile.ZipInfo.extraX-trRXpyclbr.Function.filerR(jjXAhttp://docs.python.org/3/library/pyclbr.html#pyclbr.Function.fileX-trRXdatetime.timedelta.minrR(jjXEhttp://docs.python.org/3/library/datetime.html#datetime.timedelta.minX-trRXcollections.deque.maxlenrR(jjXJhttp://docs.python.org/3/library/collections.html#collections.deque.maxlenX-trRXipaddress.IPv4Address.is_globalrR(jjXOhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Address.is_globalX-trRX#ipaddress.IPv6Network.max_prefixlenrR(jjXShttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Network.max_prefixlenX-trRXcsv.Dialect.strictrR(jjX<http://docs.python.org/3/library/csv.html#csv.Dialect.strictX-trRX%importlib.machinery.ModuleSpec.loaderrR(jjXUhttp://docs.python.org/3/library/importlib.html#importlib.machinery.ModuleSpec.loaderX-trRXcurses.window.encodingrR(jjXChttp://docs.python.org/3/library/curses.html#curses.window.encodingX-trRXipaddress.IPv6Network.explodedrR(jjXNhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Network.explodedX-tr RX__spec__r!R(jjX7http://docs.python.org/3/reference/import.html#__spec__X-tr"RXoptparse.Option.helpr#R(jjXChttp://docs.python.org/3/library/optparse.html#optparse.Option.helpX-tr$RXsubprocess.Popen.stdoutr%R(jjXHhttp://docs.python.org/3/library/subprocess.html#subprocess.Popen.stdoutX-tr&RXxmlrpc.client.ProtocolError.urlr'R(jjXShttp://docs.python.org/3/library/xmlrpc.client.html#xmlrpc.client.ProtocolError.urlX-tr(RX cmd.Cmd.rulerr)R(jjX7http://docs.python.org/3/library/cmd.html#cmd.Cmd.rulerX-tr*RXtextwrap.TextWrapper.max_linesr+R(jjXMhttp://docs.python.org/3/library/textwrap.html#textwrap.TextWrapper.max_linesX-tr,RXselect.kevent.datar-R(jjX?http://docs.python.org/3/library/select.html#select.kevent.dataX-tr.RX.email.headerregistry.ContentTypeHeader.subtyper/R(jjXihttp://docs.python.org/3/library/email.headerregistry.html#email.headerregistry.ContentTypeHeader.subtypeX-tr0RXre.regex.patternr1R(jjX9http://docs.python.org/3/library/re.html#re.regex.patternX-tr2RXcsv.csvreader.line_numr3R(jjX@http://docs.python.org/3/library/csv.html#csv.csvreader.line_numX-tr4RX6http.cookiejar.DefaultCookiePolicy.rfc2109_as_netscaper5R(jjXkhttp://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.DefaultCookiePolicy.rfc2109_as_netscapeX-tr6RX*http.server.BaseHTTPRequestHandler.commandr7R(jjX\http://docs.python.org/3/library/http.server.html#http.server.BaseHTTPRequestHandler.commandX-tr8RX ipaddress.IPv6Address.compressedr9R(jjXPhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Address.compressedX-tr:RXweakref.finalize.atexitr;R(jjXEhttp://docs.python.org/3/library/weakref.html#weakref.finalize.atexitX-trRXinspect.Parameter.namer?R(jjXDhttp://docs.python.org/3/library/inspect.html#inspect.Parameter.nameX-tr@RX.wsgiref.handlers.BaseHandler.wsgi_multiprocessrAR(jjX\http://docs.python.org/3/library/wsgiref.html#wsgiref.handlers.BaseHandler.wsgi_multiprocessX-trBRXast.AST.linenorCR(jjX8http://docs.python.org/3/library/ast.html#ast.AST.linenoX-trDRX#xmlrpc.client.ProtocolError.headersrER(jjXWhttp://docs.python.org/3/library/xmlrpc.client.html#xmlrpc.client.ProtocolError.headersX-trFRX&socketserver.BaseServer.address_familyrGR(jjXYhttp://docs.python.org/3/library/socketserver.html#socketserver.BaseServer.address_familyX-trHRXtarfile.TarInfo.unamerIR(jjXChttp://docs.python.org/3/library/tarfile.html#tarfile.TarInfo.unameX-trJRX)importlib.machinery.SourceFileLoader.pathrKR(jjXYhttp://docs.python.org/3/library/importlib.html#importlib.machinery.SourceFileLoader.pathX-trLRXhmac.HMAC.digest_sizerMR(jjX@http://docs.python.org/3/library/hmac.html#hmac.HMAC.digest_sizeX-trNRXzipfile.ZipInfo.file_sizerOR(jjXGhttp://docs.python.org/3/library/zipfile.html#zipfile.ZipInfo.file_sizeX-trPRXunittest.mock.Mock.mock_callsrQR(jjXQhttp://docs.python.org/3/library/unittest.mock.html#unittest.mock.Mock.mock_callsX-trRRXhttp.cookiejar.Cookie.securerSR(jjXQhttp://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.Cookie.secureX-trTRXinspect.Parameter.kindrUR(jjXDhttp://docs.python.org/3/library/inspect.html#inspect.Parameter.kindX-trVRX+socketserver.BaseServer.RequestHandlerClassrWR(jjX^http://docs.python.org/3/library/socketserver.html#socketserver.BaseServer.RequestHandlerClassX-trXRXhttp.client.HTTPResponse.reasonrYR(jjXQhttp://docs.python.org/3/library/http.client.html#http.client.HTTPResponse.reasonX-trZRXinspect.BoundArguments.argsr[R(jjXIhttp://docs.python.org/3/library/inspect.html#inspect.BoundArguments.argsX-tr\RXshlex.shlex.tokenr]R(jjX=http://docs.python.org/3/library/shlex.html#shlex.shlex.tokenX-tr^RX'http.server.BaseHTTPRequestHandler.pathr_R(jjXYhttp://docs.python.org/3/library/http.server.html#http.server.BaseHTTPRequestHandler.pathX-tr`RX+importlib.machinery.ModuleSpec.has_locationraR(jjX[http://docs.python.org/3/library/importlib.html#importlib.machinery.ModuleSpec.has_locationX-trbRXoptparse.Option.TYPE_CHECKERrcR(jjXKhttp://docs.python.org/3/library/optparse.html#optparse.Option.TYPE_CHECKERX-trdRX)wsgiref.handlers.BaseHandler.http_versionreR(jjXWhttp://docs.python.org/3/library/wsgiref.html#wsgiref.handlers.BaseHandler.http_versionX-trfRXre.regex.groupsrgR(jjX8http://docs.python.org/3/library/re.html#re.regex.groupsX-trhRXunittest.TestResult.failuresriR(jjXKhttp://docs.python.org/3/library/unittest.html#unittest.TestResult.failuresX-trjRXcmd.Cmd.lastcmdrkR(jjX9http://docs.python.org/3/library/cmd.html#cmd.Cmd.lastcmdX-trlRX!ipaddress.IPv4Network.is_loopbackrmR(jjXQhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Network.is_loopbackX-trnRXnumbers.Complex.realroR(jjXBhttp://docs.python.org/3/library/numbers.html#numbers.Complex.realX-trpRXimportlib.abc.FileLoader.namerqR(jjXMhttp://docs.python.org/3/library/importlib.html#importlib.abc.FileLoader.nameX-trrRXxml.dom.DocumentType.namersR(jjXGhttp://docs.python.org/3/library/xml.dom.html#xml.dom.DocumentType.nameX-trtRX&ipaddress.IPv4Interface.with_prefixlenruR(jjXVhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Interface.with_prefixlenX-trvRXdatetime.date.monthrwR(jjXBhttp://docs.python.org/3/library/datetime.html#datetime.date.monthX-trxRX+socketserver.BaseServer.allow_reuse_addressryR(jjX^http://docs.python.org/3/library/socketserver.html#socketserver.BaseServer.allow_reuse_addressX-trzRX,importlib.machinery.ExtensionFileLoader.pathr{R(jjX\http://docs.python.org/3/library/importlib.html#importlib.machinery.ExtensionFileLoader.pathX-tr|RX$tracemalloc.StatisticDiff.count_diffr}R(jjXVhttp://docs.python.org/3/library/tracemalloc.html#tracemalloc.StatisticDiff.count_diffX-tr~RX"xml.etree.ElementTree.Element.textrR(jjX^http://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element.textX-trRXtracemalloc.Frame.linenorR(jjXJhttp://docs.python.org/3/library/tracemalloc.html#tracemalloc.Frame.linenoX-trRX crypt.methodsrR(jjX9http://docs.python.org/3/library/crypt.html#crypt.methodsX-trRX!sqlite3.Connection.in_transactionrR(jjXOhttp://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.in_transactionX-trRX1http.server.BaseHTTPRequestHandler.server_versionrR(jjXchttp://docs.python.org/3/library/http.server.html#http.server.BaseHTTPRequestHandler.server_versionX-trRX"ipaddress.IPv4Address.is_multicastrR(jjXRhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Address.is_multicastX-trRXtracemalloc.Frame.filenamerR(jjXLhttp://docs.python.org/3/library/tracemalloc.html#tracemalloc.Frame.filenameX-trRXasyncio.Queue.maxsizerR(jjXHhttp://docs.python.org/3/library/asyncio-sync.html#asyncio.Queue.maxsizeX-trRXstruct.Struct.sizerR(jjX?http://docs.python.org/3/library/struct.html#struct.Struct.sizeX-trRXxml.dom.NodeList.lengthrR(jjXEhttp://docs.python.org/3/library/xml.dom.html#xml.dom.NodeList.lengthX-trRX'email.headerregistry.Group.display_namerR(jjXbhttp://docs.python.org/3/library/email.headerregistry.html#email.headerregistry.Group.display_nameX-trRX"ipaddress.IPv6Network.is_multicastrR(jjXRhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Network.is_multicastX-trRXfilecmp.dircmp.right_listrR(jjXGhttp://docs.python.org/3/library/filecmp.html#filecmp.dircmp.right_listX-trRX&tkinter.scrolledtext.ScrolledText.vbarrR(jjXahttp://docs.python.org/3/library/tkinter.scrolledtext.html#tkinter.scrolledtext.ScrolledText.vbarX-trRXsmtpd.SMTPChannel.connrR(jjXBhttp://docs.python.org/3/library/smtpd.html#smtpd.SMTPChannel.connX-trRXio.IOBase.closedrR(jjX9http://docs.python.org/3/library/io.html#io.IOBase.closedX-trRXctypes.PyDLL._handlerR(jjXAhttp://docs.python.org/3/library/ctypes.html#ctypes.PyDLL._handleX-trRX"ipaddress.IPv4Network.with_netmaskrR(jjXRhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Network.with_netmaskX-trRXfractions.Fraction.denominatorrR(jjXNhttp://docs.python.org/3/library/fractions.html#fractions.Fraction.denominatorX-trRXpyclbr.Class.superrR(jjX?http://docs.python.org/3/library/pyclbr.html#pyclbr.Class.superX-trRXuuid.UUID.fieldsrR(jjX;http://docs.python.org/3/library/uuid.html#uuid.UUID.fieldsX-trRXarray.array.typecoderR(jjX@http://docs.python.org/3/library/array.html#array.array.typecodeX-trRX!ipaddress.IPv6Address.is_reservedrR(jjXQhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Address.is_reservedX-trRXzipfile.ZipInfo.compress_sizerR(jjXKhttp://docs.python.org/3/library/zipfile.html#zipfile.ZipInfo.compress_sizeX-trRX!ipaddress.IPv6Address.ipv4_mappedrR(jjXQhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Address.ipv4_mappedX-trRXipaddress.IPv6Network.prefixlenrR(jjXOhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Network.prefixlenX-trRXctypes._CData._b_needsfree_rR(jjXHhttp://docs.python.org/3/library/ctypes.html#ctypes._CData._b_needsfree_X-trRX$subprocess.CalledProcessError.outputrR(jjXUhttp://docs.python.org/3/library/subprocess.html#subprocess.CalledProcessError.outputX-trRX$email.charset.Charset.output_charsetrR(jjXXhttp://docs.python.org/3/library/email.charset.html#email.charset.Charset.output_charsetX-trRXtarfile.TarInfo.gnamerR(jjXChttp://docs.python.org/3/library/tarfile.html#tarfile.TarInfo.gnameX-trRXdatetime.time.hourrR(jjXAhttp://docs.python.org/3/library/datetime.html#datetime.time.hourX-trRX+xml.parsers.expat.xmlparser.ErrorLineNumberrR(jjXYhttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.xmlparser.ErrorLineNumberX-trRXfilecmp.dircmp.commonrR(jjXChttp://docs.python.org/3/library/filecmp.html#filecmp.dircmp.commonX-trRX2http.server.BaseHTTPRequestHandler.request_versionrR(jjXdhttp://docs.python.org/3/library/http.server.html#http.server.BaseHTTPRequestHandler.request_versionX-trRXnumbers.Complex.imagrR(jjXBhttp://docs.python.org/3/library/numbers.html#numbers.Complex.imagX-trRXoptparse.Option.destrR(jjXChttp://docs.python.org/3/library/optparse.html#optparse.Option.destX-trRX sqlite3.Connection.total_changesrR(jjXNhttp://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.total_changesX-trRX ipaddress.IPv6Address.is_privaterR(jjXPhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Address.is_privateX-trRXxml.dom.Node.prefixrR(jjXAhttp://docs.python.org/3/library/xml.dom.html#xml.dom.Node.prefixX-trRX!ipaddress.IPv4Network.is_reservedrR(jjXQhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Network.is_reservedX-trRXdoctest.Example.indentrR(jjXDhttp://docs.python.org/3/library/doctest.html#doctest.Example.indentX-trRX#ipaddress.IPv4Address.max_prefixlenrR(jjXShttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Address.max_prefixlenX-trRXoptparse.Option.TYPED_ACTIONSrR(jjXLhttp://docs.python.org/3/library/optparse.html#optparse.Option.TYPED_ACTIONSX-trRX!unittest.mock.Mock.call_args_listrR(jjXUhttp://docs.python.org/3/library/unittest.mock.html#unittest.mock.Mock.call_args_listX-trRXsmtpd.SMTPChannel.peerrR(jjXBhttp://docs.python.org/3/library/smtpd.html#smtpd.SMTPChannel.peerX-trRX#xml.parsers.expat.ExpatError.offsetrR(jjXQhttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.ExpatError.offsetX-trRXcsv.csvreader.dialectrR(jjX?http://docs.python.org/3/library/csv.html#csv.csvreader.dialectX-trRXselect.PIPE_BUFrR(jjX<http://docs.python.org/3/library/select.html#select.PIPE_BUFX-trRX#importlib.machinery.FileFinder.pathrR(jjXShttp://docs.python.org/3/library/importlib.html#importlib.machinery.FileFinder.pathX-trRX$http.cookiejar.Cookie.port_specifiedrR(jjXYhttp://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.Cookie.port_specifiedX-trRXdatetime.datetime.dayrR(jjXDhttp://docs.python.org/3/library/datetime.html#datetime.datetime.dayX-trRX doctest.UnexpectedException.testrR(jjXNhttp://docs.python.org/3/library/doctest.html#doctest.UnexpectedException.testX-trRXre.match.lastgrouprR(jjX;http://docs.python.org/3/library/re.html#re.match.lastgroupX-trRXfilecmp.dircmp.subdirsrR(jjXDhttp://docs.python.org/3/library/filecmp.html#filecmp.dircmp.subdirsX-trRX&email.policy.EmailPolicy.refold_sourcerR(jjXYhttp://docs.python.org/3/library/email.policy.html#email.policy.EmailPolicy.refold_sourceX-trRXos.terminal_size.linesrR(jjX?http://docs.python.org/3/library/os.html#os.terminal_size.linesX-trRX3email.headerregistry.ContentTypeHeader.content_typerR(jjXnhttp://docs.python.org/3/library/email.headerregistry.html#email.headerregistry.ContentTypeHeader.content_typeX-trRXbz2.BZ2Decompressor.unused_datarR(jjXIhttp://docs.python.org/3/library/bz2.html#bz2.BZ2Decompressor.unused_dataX-trRXtarfile.TarInfo.moderR(jjXBhttp://docs.python.org/3/library/tarfile.html#tarfile.TarInfo.modeX-trRXthreading.Barrier.n_waitingrR(jjXKhttp://docs.python.org/3/library/threading.html#threading.Barrier.n_waitingX-trRX%ipaddress.IPv4Network.network_addressrR(jjXUhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Network.network_addressX-trRXfilecmp.dircmp.same_filesrR(jjXGhttp://docs.python.org/3/library/filecmp.html#filecmp.dircmp.same_filesX-trRXcollections.ChainMap.mapsrR(jjXKhttp://docs.python.org/3/library/collections.html#collections.ChainMap.mapsX-trRXctypes._SimpleCData.valuerR(jjXFhttp://docs.python.org/3/library/ctypes.html#ctypes._SimpleCData.valueX-trRXlzma.LZMADecompressor.eofrR(jjXDhttp://docs.python.org/3/library/lzma.html#lzma.LZMADecompressor.eofX-trSXctypes._CData._objectsrS(jjXChttp://docs.python.org/3/library/ctypes.html#ctypes._CData._objectsX-trSXhttp.cookies.Morsel.valuerS(jjXLhttp://docs.python.org/3/library/http.cookies.html#http.cookies.Morsel.valueX-trSXselectors.SelectorKey.fdrS(jjXHhttp://docs.python.org/3/library/selectors.html#selectors.SelectorKey.fdX-trSXconfigparser.SECTCRErS(jjXGhttp://docs.python.org/3/library/configparser.html#configparser.SECTCREX-trSX)email.headerregistry.BaseHeader.max_countr S(jjXdhttp://docs.python.org/3/library/email.headerregistry.html#email.headerregistry.BaseHeader.max_countX-tr SXio.TextIOBase.encodingr S(jjX?http://docs.python.org/3/library/io.html#io.TextIOBase.encodingX-tr SX/importlib.machinery.OPTIMIZED_BYTECODE_SUFFIXESr S(jjX_http://docs.python.org/3/library/importlib.html#importlib.machinery.OPTIMIZED_BYTECODE_SUFFIXESX-trSX __package__rS(jjX:http://docs.python.org/3/reference/import.html#__package__X-trSXshlex.shlex.quotesrS(jjX>http://docs.python.org/3/library/shlex.html#shlex.shlex.quotesX-trSX&socketserver.BaseServer.server_addressrS(jjXYhttp://docs.python.org/3/library/socketserver.html#socketserver.BaseServer.server_addressX-trSXobject.__dict__rS(jjX>http://docs.python.org/3/library/stdtypes.html#object.__dict__X-trSXio.FileIO.namerS(jjX7http://docs.python.org/3/library/io.html#io.FileIO.nameX-trSXmemoryview.shaperS(jjX?http://docs.python.org/3/library/stdtypes.html#memoryview.shapeX-trSX#tracemalloc.Filter.filename_patternrS(jjXUhttp://docs.python.org/3/library/tracemalloc.html#tracemalloc.Filter.filename_patternX-trSXclass.__bases__rS(jjX>http://docs.python.org/3/library/stdtypes.html#class.__bases__X-trSXreprlib.Repr.maxsetrS(jjXAhttp://docs.python.org/3/library/reprlib.html#reprlib.Repr.maxsetX-tr SXhttp.cookiejar.Cookie.namer!S(jjXOhttp://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.Cookie.nameX-tr"SXunittest.TestResult.testsRunr#S(jjXKhttp://docs.python.org/3/library/unittest.html#unittest.TestResult.testsRunX-tr$SX"subprocess.STARTUPINFO.wShowWindowr%S(jjXShttp://docs.python.org/3/library/subprocess.html#subprocess.STARTUPINFO.wShowWindowX-tr&SXipaddress.IPv4Address.packedr'S(jjXLhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Address.packedX-tr(SXmemoryview.suboffsetsr)S(jjXDhttp://docs.python.org/3/library/stdtypes.html#memoryview.suboffsetsX-tr*SXzipfile.ZipFile.debugr+S(jjXChttp://docs.python.org/3/library/zipfile.html#zipfile.ZipFile.debugX-tr,SX#ipaddress.IPv4Network.with_hostmaskr-S(jjXShttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Network.with_hostmaskX-tr.SXurllib.error.HTTPError.headersr/S(jjXQhttp://docs.python.org/3/library/urllib.error.html#urllib.error.HTTPError.headersX-tr0SX5http.cookiejar.DefaultCookiePolicy.DomainStrictNoDotsr1S(jjXjhttp://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.DefaultCookiePolicy.DomainStrictNoDotsX-tr2SX1http.server.BaseHTTPRequestHandler.client_addressr3S(jjXchttp://docs.python.org/3/library/http.server.html#http.server.BaseHTTPRequestHandler.client_addressX-tr4SXsocket.socket.familyr5S(jjXAhttp://docs.python.org/3/library/socket.html#socket.socket.familyX-tr6SX'unittest.TestResult.unexpectedSuccessesr7S(jjXVhttp://docs.python.org/3/library/unittest.html#unittest.TestResult.unexpectedSuccessesX-tr8SXssl.SSLContext.check_hostnamer9S(jjXGhttp://docs.python.org/3/library/ssl.html#ssl.SSLContext.check_hostnameX-tr:SXxml.dom.Element.tagNamer;S(jjXEhttp://docs.python.org/3/library/xml.dom.html#xml.dom.Element.tagNameX-trSXre.regex.groupindexr?S(jjX<http://docs.python.org/3/library/re.html#re.regex.groupindexX-tr@SX#email.policy.Policy.max_line_lengthrAS(jjXVhttp://docs.python.org/3/library/email.policy.html#email.policy.Policy.max_line_lengthX-trBSXzipimport.zipimporter.prefixrCS(jjXLhttp://docs.python.org/3/library/zipimport.html#zipimport.zipimporter.prefixX-trDSXunittest.mock.Mock.side_effectrES(jjXRhttp://docs.python.org/3/library/unittest.mock.html#unittest.mock.Mock.side_effectX-trFSXmemoryview.itemsizerGS(jjXBhttp://docs.python.org/3/library/stdtypes.html#memoryview.itemsizeX-trHSXxmlrpc.client.Fault.faultStringrIS(jjXShttp://docs.python.org/3/library/xmlrpc.client.html#xmlrpc.client.Fault.faultStringX-trJSX'textwrap.TextWrapper.replace_whitespacerKS(jjXVhttp://docs.python.org/3/library/textwrap.html#textwrap.TextWrapper.replace_whitespaceX-trLSX"unittest.TestCase.failureExceptionrMS(jjXQhttp://docs.python.org/3/library/unittest.html#unittest.TestCase.failureExceptionX-trNSX!ossaudiodev.oss_audio_device.namerOS(jjXShttp://docs.python.org/3/library/ossaudiodev.html#ossaudiodev.oss_audio_device.nameX-trPSX#inspect.Signature.return_annotationrQS(jjXQhttp://docs.python.org/3/library/inspect.html#inspect.Signature.return_annotationX-trRSX$email.headerregistry.Group.addressesrSS(jjX_http://docs.python.org/3/library/email.headerregistry.html#email.headerregistry.Group.addressesX-trTSX#ipaddress.IPv4Network.max_prefixlenrUS(jjXShttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Network.max_prefixlenX-trVSXdatetime.timedelta.resolutionrWS(jjXLhttp://docs.python.org/3/library/datetime.html#datetime.timedelta.resolutionX-trXSXdatetime.time.resolutionrYS(jjXGhttp://docs.python.org/3/library/datetime.html#datetime.time.resolutionX-trZSXcsv.Dialect.skipinitialspacer[S(jjXFhttp://docs.python.org/3/library/csv.html#csv.Dialect.skipinitialspaceX-tr\SXtarfile.TarInfo.typer]S(jjXBhttp://docs.python.org/3/library/tarfile.html#tarfile.TarInfo.typeX-tr^SX"ipaddress.IPv4Network.is_multicastr_S(jjXRhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Network.is_multicastX-tr`SX%ipaddress.IPv6Network.network_addressraS(jjXUhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Network.network_addressX-trbSX$unittest.TestLoader.testMethodPrefixrcS(jjXShttp://docs.python.org/3/library/unittest.html#unittest.TestLoader.testMethodPrefixX-trdSXoptparse.Option.metavarreS(jjXFhttp://docs.python.org/3/library/optparse.html#optparse.Option.metavarX-trfSXreprlib.Repr.maxotherrgS(jjXChttp://docs.python.org/3/library/reprlib.html#reprlib.Repr.maxotherX-trhSX__path__riS(jjX7http://docs.python.org/3/reference/import.html#__path__X-trjSXsocket.socket.protorkS(jjX@http://docs.python.org/3/library/socket.html#socket.socket.protoX-trlSXxml.dom.DocumentType.systemIdrmS(jjXKhttp://docs.python.org/3/library/xml.dom.html#xml.dom.DocumentType.systemIdX-trnSXpickle.Pickler.dispatch_tableroS(jjXJhttp://docs.python.org/3/library/pickle.html#pickle.Pickler.dispatch_tableX-trpSXmemoryview.objrqS(jjX=http://docs.python.org/3/library/stdtypes.html#memoryview.objX-trrSXimaplib.IMAP4.debugrsS(jjXAhttp://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.debugX-trtSXshlex.shlex.instreamruS(jjX@http://docs.python.org/3/library/shlex.html#shlex.shlex.instreamX-trvSX1http.server.CGIHTTPRequestHandler.cgi_directoriesrwS(jjXchttp://docs.python.org/3/library/http.server.html#http.server.CGIHTTPRequestHandler.cgi_directoriesX-trxSXdoctest.DocTest.docstringryS(jjXGhttp://docs.python.org/3/library/doctest.html#doctest.DocTest.docstringX-trzSXfunctools.partial.argsr{S(jjXFhttp://docs.python.org/3/library/functools.html#functools.partial.argsX-tr|SX!ipaddress.IPv6Network.is_loopbackr}S(jjXQhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Network.is_loopbackX-tr~SX uuid.UUID.intrS(jjX8http://docs.python.org/3/library/uuid.html#uuid.UUID.intX-trSXsubprocess.Popen.stdinrS(jjXGhttp://docs.python.org/3/library/subprocess.html#subprocess.Popen.stdinX-trSXmemoryview.stridesrS(jjXAhttp://docs.python.org/3/library/stdtypes.html#memoryview.stridesX-trSXzipfile.ZipInfo.external_attrrS(jjXKhttp://docs.python.org/3/library/zipfile.html#zipfile.ZipInfo.external_attrX-trSXipaddress.IPv4Address.versionrS(jjXMhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Address.versionX-trSX,email.headerregistry.MIMEVersionHeader.majorrS(jjXghttp://docs.python.org/3/library/email.headerregistry.html#email.headerregistry.MIMEVersionHeader.majorX-trSXtarfile.TarInfo.mtimerS(jjXChttp://docs.python.org/3/library/tarfile.html#tarfile.TarInfo.mtimeX-trSXinspect.Signature.parametersrS(jjXJhttp://docs.python.org/3/library/inspect.html#inspect.Signature.parametersX-trSXzipfile.ZipInfo.date_timerS(jjXGhttp://docs.python.org/3/library/zipfile.html#zipfile.ZipInfo.date_timeX-trSXhttp.cookiejar.Cookie.pathrS(jjXOhttp://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.Cookie.pathX-trSX0http.cookiejar.DefaultCookiePolicy.DomainLiberalrS(jjXehttp://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.DefaultCookiePolicy.DomainLiberalX-trSX&ipaddress.IPv6Interface.with_prefixlenrS(jjXVhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Interface.with_prefixlenX-trSXmemoryview.contiguousrS(jjXDhttp://docs.python.org/3/library/stdtypes.html#memoryview.contiguousX-trSXunittest.mock.Mock.call_argsrS(jjXPhttp://docs.python.org/3/library/unittest.mock.html#unittest.mock.Mock.call_argsX-trSX#ipaddress.IPv4Network.num_addressesrS(jjXShttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Network.num_addressesX-trSX__file__rS(jjX7http://docs.python.org/3/reference/import.html#__file__X-trSXdoctest.Example.wantrS(jjXBhttp://docs.python.org/3/library/doctest.html#doctest.Example.wantX-trSX __cached__rS(jjX9http://docs.python.org/3/reference/import.html#__cached__X-trSXurllib.request.Request.datarS(jjXPhttp://docs.python.org/3/library/urllib.request.html#urllib.request.Request.dataX-trSXxml.dom.Node.childNodesrS(jjXEhttp://docs.python.org/3/library/xml.dom.html#xml.dom.Node.childNodesX-trSXfilecmp.dircmp.common_dirsrS(jjXHhttp://docs.python.org/3/library/filecmp.html#filecmp.dircmp.common_dirsX-trSX'ipaddress.IPv6Network.broadcast_addressrS(jjXWhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Network.broadcast_addressX-trSXunittest.mock.Mock.method_callsrS(jjXShttp://docs.python.org/3/library/unittest.mock.html#unittest.mock.Mock.method_callsX-trSX-importlib.machinery.SourcelessFileLoader.pathrS(jjX]http://docs.python.org/3/library/importlib.html#importlib.machinery.SourcelessFileLoader.pathX-trSX%importlib.machinery.ModuleSpec.cachedrS(jjXUhttp://docs.python.org/3/library/importlib.html#importlib.machinery.ModuleSpec.cachedX-trSX ipaddress.IPv4Network.compressedrS(jjXPhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Network.compressedX-trSXselect.kevent.fflagsrS(jjXAhttp://docs.python.org/3/library/select.html#select.kevent.fflagsX-trSXxml.dom.Node.firstChildrS(jjXEhttp://docs.python.org/3/library/xml.dom.html#xml.dom.Node.firstChildX-trSXemail.policy.Policy.cte_typerS(jjXOhttp://docs.python.org/3/library/email.policy.html#email.policy.Policy.cte_typeX-trSXoptparse.Option.TYPESrS(jjXDhttp://docs.python.org/3/library/optparse.html#optparse.Option.TYPESX-trSXctypes._FuncPtr.argtypesrS(jjXEhttp://docs.python.org/3/library/ctypes.html#ctypes._FuncPtr.argtypesX-trSXinspect.Parameter.defaultrS(jjXGhttp://docs.python.org/3/library/inspect.html#inspect.Parameter.defaultX-trSX#email.policy.Policy.raise_on_defectrS(jjXVhttp://docs.python.org/3/library/email.policy.html#email.policy.Policy.raise_on_defectX-trSXxml.dom.Node.namespaceURIrS(jjXGhttp://docs.python.org/3/library/xml.dom.html#xml.dom.Node.namespaceURIX-trSX&http.cookiejar.Cookie.domain_specifiedrS(jjX[http://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.Cookie.domain_specifiedX-trSXhttp.cookiejar.Cookie.commentrS(jjXRhttp://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.Cookie.commentX-trSX!ipaddress.IPv4Address.is_reservedrS(jjXQhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Address.is_reservedX-trSXipaddress.IPv4Network.hostmaskrS(jjXNhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Network.hostmaskX-trSXctypes._FuncPtr.errcheckrS(jjXEhttp://docs.python.org/3/library/ctypes.html#ctypes._FuncPtr.errcheckX-trSXpyclbr.Class.linenorS(jjX@http://docs.python.org/3/library/pyclbr.html#pyclbr.Class.linenoX-trSXoptparse.Option.callbackrS(jjXGhttp://docs.python.org/3/library/optparse.html#optparse.Option.callbackX-trSX subprocess.STARTUPINFO.hStdErrorrS(jjXQhttp://docs.python.org/3/library/subprocess.html#subprocess.STARTUPINFO.hStdErrorX-trSX)textwrap.TextWrapper.fix_sentence_endingsrS(jjXXhttp://docs.python.org/3/library/textwrap.html#textwrap.TextWrapper.fix_sentence_endingsX-trSXcsv.Dialect.delimiterrS(jjX?http://docs.python.org/3/library/csv.html#csv.Dialect.delimiterX-trSXnetrc.netrc.hostsrS(jjX=http://docs.python.org/3/library/netrc.html#netrc.netrc.hostsX-trSX#email.headerregistry.Address.domainrS(jjX^http://docs.python.org/3/library/email.headerregistry.html#email.headerregistry.Address.domainX-trSXdatetime.datetime.yearrS(jjXEhttp://docs.python.org/3/library/datetime.html#datetime.datetime.yearX-trSXxml.dom.Attr.prefixrS(jjXAhttp://docs.python.org/3/library/xml.dom.html#xml.dom.Attr.prefixX-trSX-wsgiref.handlers.BaseHandler.wsgi_multithreadrS(jjX[http://docs.python.org/3/library/wsgiref.html#wsgiref.handlers.BaseHandler.wsgi_multithreadX-trSX#textwrap.TextWrapper.initial_indentrS(jjXRhttp://docs.python.org/3/library/textwrap.html#textwrap.TextWrapper.initial_indentX-trSXssl.SSLContext.protocolrS(jjXAhttp://docs.python.org/3/library/ssl.html#ssl.SSLContext.protocolX-trSX"xml.dom.ProcessingInstruction.datarS(jjXPhttp://docs.python.org/3/library/xml.dom.html#xml.dom.ProcessingInstruction.dataX-trSXipaddress.IPv6Network.versionrS(jjXMhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Network.versionX-trSX#asyncio.IncompleteReadError.partialrS(jjXXhttp://docs.python.org/3/library/asyncio-stream.html#asyncio.IncompleteReadError.partialX-trSXast.AST._fieldsrS(jjX9http://docs.python.org/3/library/ast.html#ast.AST._fieldsX-trSX textwrap.TextWrapper.placeholderrS(jjXOhttp://docs.python.org/3/library/textwrap.html#textwrap.TextWrapper.placeholderX-trSX__name__rS(jjX7http://docs.python.org/3/reference/import.html#__name__X-trSXuuid.UUID.versionrS(jjX<http://docs.python.org/3/library/uuid.html#uuid.UUID.versionX-trSX*wsgiref.handlers.BaseHandler.origin_serverrS(jjXXhttp://docs.python.org/3/library/wsgiref.html#wsgiref.handlers.BaseHandler.origin_serverX-trSXtracemalloc.Statistic.tracebackrS(jjXQhttp://docs.python.org/3/library/tracemalloc.html#tracemalloc.Statistic.tracebackX-trSX)asyncio.asyncio.subprocess.Process.stdoutrS(jjXbhttp://docs.python.org/3/library/asyncio-subprocess.html#asyncio.asyncio.subprocess.Process.stdoutX-trSXdatetime.datetime.hourrS(jjXEhttp://docs.python.org/3/library/datetime.html#datetime.datetime.hourX-trSXemail.policy.Policy.lineseprS(jjXNhttp://docs.python.org/3/library/email.policy.html#email.policy.Policy.linesepX-trSXxml.dom.Node.nodeTyperS(jjXChttp://docs.python.org/3/library/xml.dom.html#xml.dom.Node.nodeTypeX-trSXsubprocess.TimeoutExpired.cmdrS(jjXNhttp://docs.python.org/3/library/subprocess.html#subprocess.TimeoutExpired.cmdX-trTX#socketserver.BaseServer.socket_typerT(jjXVhttp://docs.python.org/3/library/socketserver.html#socketserver.BaseServer.socket_typeX-trTXipaddress.IPv4Interface.networkrT(jjXOhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Interface.networkX-trTXunittest.TestCase.longMessagerT(jjXLhttp://docs.python.org/3/library/unittest.html#unittest.TestCase.longMessageX-trTXdatetime.time.minrT(jjX@http://docs.python.org/3/library/datetime.html#datetime.time.minX-trTX3http.server.SimpleHTTPRequestHandler.server_versionr T(jjXehttp://docs.python.org/3/library/http.server.html#http.server.SimpleHTTPRequestHandler.server_versionX-tr TXsmtpd.SMTPChannel.received_datar T(jjXKhttp://docs.python.org/3/library/smtpd.html#smtpd.SMTPChannel.received_dataX-tr TXmultiprocessing.Process.authkeyr T(jjXUhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.Process.authkeyX-trTXselectors.SelectorKey.datarT(jjXJhttp://docs.python.org/3/library/selectors.html#selectors.SelectorKey.dataX-trTXUnicodeError.endrT(jjXAhttp://docs.python.org/3/library/exceptions.html#UnicodeError.endX-trTXtracemalloc.Statistic.sizerT(jjXLhttp://docs.python.org/3/library/tracemalloc.html#tracemalloc.Statistic.sizeX-trTX(unittest.TestLoader.sortTestMethodsUsingrT(jjXWhttp://docs.python.org/3/library/unittest.html#unittest.TestLoader.sortTestMethodsUsingX-trTXzipfile.ZipInfo.create_versionrT(jjXLhttp://docs.python.org/3/library/zipfile.html#zipfile.ZipInfo.create_versionX-trTX&textwrap.TextWrapper.subsequent_indentrT(jjXUhttp://docs.python.org/3/library/textwrap.html#textwrap.TextWrapper.subsequent_indentX-trTXreprlib.Repr.maxtuplerT(jjXChttp://docs.python.org/3/library/reprlib.html#reprlib.Repr.maxtupleX-trTX#xmlrpc.client.ProtocolError.errcoderT(jjXWhttp://docs.python.org/3/library/xmlrpc.client.html#xmlrpc.client.ProtocolError.errcodeX-trTX%email.charset.Charset.header_encodingrT(jjXYhttp://docs.python.org/3/library/email.charset.html#email.charset.Charset.header_encodingX-tr TXtypes.ModuleType.__loader__r!T(jjXGhttp://docs.python.org/3/library/types.html#types.ModuleType.__loader__X-tr"TX#importlib.machinery.SOURCE_SUFFIXESr#T(jjXShttp://docs.python.org/3/library/importlib.html#importlib.machinery.SOURCE_SUFFIXESX-tr$TX3http.cookiejar.DefaultCookiePolicy.strict_ns_domainr%T(jjXhhttp://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.DefaultCookiePolicy.strict_ns_domainX-tr&TXoptparse.Option.nargsr'T(jjXDhttp://docs.python.org/3/library/optparse.html#optparse.Option.nargsX-tr(TXshlex.shlex.infiler)T(jjX>http://docs.python.org/3/library/shlex.html#shlex.shlex.infileX-tr*TX ipaddress.IPv6Network.is_privater+T(jjXPhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Network.is_privateX-tr,TX#http.cookiejar.CookiePolicy.rfc2965r-T(jjXXhttp://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.CookiePolicy.rfc2965X-tr.TX#doctest.UnexpectedException.exampler/T(jjXQhttp://docs.python.org/3/library/doctest.html#doctest.UnexpectedException.exampleX-tr0TXsubprocess.STARTUPINFO.dwFlagsr1T(jjXOhttp://docs.python.org/3/library/subprocess.html#subprocess.STARTUPINFO.dwFlagsX-tr2TXoptparse.Option.callback_kwargsr3T(jjXNhttp://docs.python.org/3/library/optparse.html#optparse.Option.callback_kwargsX-tr4TXdatetime.time.secondr5T(jjXChttp://docs.python.org/3/library/datetime.html#datetime.time.secondX-tr6TXxml.dom.Node.lastChildr7T(jjXDhttp://docs.python.org/3/library/xml.dom.html#xml.dom.Node.lastChildX-tr8TX*xml.parsers.expat.xmlparser.ErrorByteIndexr9T(jjXXhttp://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.xmlparser.ErrorByteIndexX-tr:TXlogging.Logger.propagater;T(jjXFhttp://docs.python.org/3/library/logging.html#logging.Logger.propagateX-trTXmultiprocessing.Process.namer?T(jjXRhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.Process.nameX-tr@TXweakref.finalize.aliverAT(jjXDhttp://docs.python.org/3/library/weakref.html#weakref.finalize.aliveX-trBTXpickle.Pickler.fastrCT(jjX@http://docs.python.org/3/library/pickle.html#pickle.Pickler.fastX-trDTXzipfile.ZipInfo.extract_versionrET(jjXMhttp://docs.python.org/3/library/zipfile.html#zipfile.ZipInfo.extract_versionX-trFTX"ipaddress.IPv6Network.with_netmaskrGT(jjXRhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Network.with_netmaskX-trHTXshlex.shlex.commentersrIT(jjXBhttp://docs.python.org/3/library/shlex.html#shlex.shlex.commentersX-trJTXdatetime.datetime.tzinforKT(jjXGhttp://docs.python.org/3/library/datetime.html#datetime.datetime.tzinfoX-trLTXmultiprocessing.Process.pidrMT(jjXQhttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.Process.pidX-trNTX!subprocess.CalledProcessError.cmdrOT(jjXRhttp://docs.python.org/3/library/subprocess.html#subprocess.CalledProcessError.cmdX-trPTXtarfile.TarInfo.uidrQT(jjXAhttp://docs.python.org/3/library/tarfile.html#tarfile.TarInfo.uidX-trRTX0email.headerregistry.ContentTransferEncoding.cterST(jjXkhttp://docs.python.org/3/library/email.headerregistry.html#email.headerregistry.ContentTransferEncoding.cteX-trTTXfilecmp.dircmp.common_funnyrUT(jjXIhttp://docs.python.org/3/library/filecmp.html#filecmp.dircmp.common_funnyX-trVTXssl.SSLContext.verify_flagsrWT(jjXEhttp://docs.python.org/3/library/ssl.html#ssl.SSLContext.verify_flagsX-trXTX9importlib.machinery.ModuleSpec.submodule_search_locationsrYT(jjXihttp://docs.python.org/3/library/importlib.html#importlib.machinery.ModuleSpec.submodule_search_locationsX-trZTXcmd.Cmd.doc_headerr[T(jjX<http://docs.python.org/3/library/cmd.html#cmd.Cmd.doc_headerX-tr\TXsmtpd.SMTPChannel.addrr]T(jjXBhttp://docs.python.org/3/library/smtpd.html#smtpd.SMTPChannel.addrX-tr^TX%ipaddress.IPv6Interface.with_hostmaskr_T(jjXUhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Interface.with_hostmaskX-tr`TXxml.dom.Node.localNameraT(jjXDhttp://docs.python.org/3/library/xml.dom.html#xml.dom.Node.localNameX-trbTXfilecmp.dircmp.left_listrcT(jjXFhttp://docs.python.org/3/library/filecmp.html#filecmp.dircmp.left_listX-trdTXmultiprocessing.Process.daemonreT(jjXThttp://docs.python.org/3/library/multiprocessing.html#multiprocessing.Process.daemonX-trfTXclass.__name__rgT(jjX=http://docs.python.org/3/library/stdtypes.html#class.__name__X-trhTX(http.cookiejar.Cookie.domain_initial_dotriT(jjX]http://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.Cookie.domain_initial_dotX-trjTX'email.policy.EmailPolicy.header_factoryrkT(jjXZhttp://docs.python.org/3/library/email.policy.html#email.policy.EmailPolicy.header_factoryX-trlTXdatetime.datetime.minrmT(jjXDhttp://docs.python.org/3/library/datetime.html#datetime.datetime.minX-trnTXreprlib.Repr.maxdictroT(jjXBhttp://docs.python.org/3/library/reprlib.html#reprlib.Repr.maxdictX-trpTXfilecmp.dircmp.funny_filesrqT(jjXHhttp://docs.python.org/3/library/filecmp.html#filecmp.dircmp.funny_filesX-trrTX!mimetypes.MimeTypes.types_map_invrsT(jjXQhttp://docs.python.org/3/library/mimetypes.html#mimetypes.MimeTypes.types_map_invX-trtTXshlex.shlex.escaperuT(jjX>http://docs.python.org/3/library/shlex.html#shlex.shlex.escapeX-trvTX'email.headerregistry.BaseHeader.defectsrwT(jjXbhttp://docs.python.org/3/library/email.headerregistry.html#email.headerregistry.BaseHeader.defectsX-trxTXmemoryview.f_contiguousryT(jjXFhttp://docs.python.org/3/library/stdtypes.html#memoryview.f_contiguousX-trzTX+importlib.machinery.DEBUG_BYTECODE_SUFFIXESr{T(jjX[http://docs.python.org/3/library/importlib.html#importlib.machinery.DEBUG_BYTECODE_SUFFIXESX-tr|TX$ipaddress.IPv4Network.with_prefixlenr}T(jjXThttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Network.with_prefixlenX-tr~TX(http.cookiejar.CookiePolicy.hide_cookie2rT(jjX]http://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.CookiePolicy.hide_cookie2X-trTX0http.cookiejar.DefaultCookiePolicy.strict_domainrT(jjXehttp://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.DefaultCookiePolicy.strict_domainX-trTXthreading.Thread.namerT(jjXEhttp://docs.python.org/3/library/threading.html#threading.Thread.nameX-trTX nntplib.NNTP.nntp_implementationrT(jjXNhttp://docs.python.org/3/library/nntplib.html#nntplib.NNTP.nntp_implementationX-trTX$xml.dom.ProcessingInstruction.targetrT(jjXRhttp://docs.python.org/3/library/xml.dom.html#xml.dom.ProcessingInstruction.targetX-trTX,http.server.BaseHTTPRequestHandler.responsesrT(jjX^http://docs.python.org/3/library/http.server.html#http.server.BaseHTTPRequestHandler.responsesX-trTXzipfile.ZipInfo.flag_bitsrT(jjXGhttp://docs.python.org/3/library/zipfile.html#zipfile.ZipInfo.flag_bitsX-trTXdatetime.datetime.monthrT(jjXFhttp://docs.python.org/3/library/datetime.html#datetime.datetime.monthX-trTX$ipaddress.IPv4Network.is_unspecifiedrT(jjXThttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Network.is_unspecifiedX-trTXurllib.request.Request.hostrT(jjXPhttp://docs.python.org/3/library/urllib.request.html#urllib.request.Request.hostX-trTX#tracemalloc.StatisticDiff.size_diffrT(jjXUhttp://docs.python.org/3/library/tracemalloc.html#tracemalloc.StatisticDiff.size_diffX-trTXre.match.lastindexrT(jjX;http://docs.python.org/3/library/re.html#re.match.lastindexX-trTX)email.headerregistry.AddressHeader.groupsrT(jjXdhttp://docs.python.org/3/library/email.headerregistry.html#email.headerregistry.AddressHeader.groupsX-trTX7http.server.BaseHTTPRequestHandler.error_message_formatrT(jjXihttp://docs.python.org/3/library/http.server.html#http.server.BaseHTTPRequestHandler.error_message_formatX-trTX)asyncio.asyncio.subprocess.Process.stderrrT(jjXbhttp://docs.python.org/3/library/asyncio-subprocess.html#asyncio.asyncio.subprocess.Process.stderrX-trTX)http.server.BaseHTTPRequestHandler.serverrT(jjX[http://docs.python.org/3/library/http.server.html#http.server.BaseHTTPRequestHandler.serverX-trTX.xml.parsers.expat.xmlparser.ordered_attributesrT(jjX\http://docs.python.org/3/library/pyexpat.html#xml.parsers.expat.xmlparser.ordered_attributesX-trTX5http.cookiejar.DefaultCookiePolicy.DomainRFC2965MatchrT(jjXjhttp://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.DefaultCookiePolicy.DomainRFC2965MatchX-trTX3http.server.BaseHTTPRequestHandler.protocol_versionrT(jjXehttp://docs.python.org/3/library/http.server.html#http.server.BaseHTTPRequestHandler.protocol_versionX-trTXpyclbr.Class.namerT(jjX>http://docs.python.org/3/library/pyclbr.html#pyclbr.Class.nameX-trTXtarfile.TarInfo.gidrT(jjXAhttp://docs.python.org/3/library/tarfile.html#tarfile.TarInfo.gidX-trTXipaddress.IPv4Network.explodedrT(jjXNhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Network.explodedX-trTX5http.cookiejar.DefaultCookiePolicy.strict_ns_set_pathrT(jjXjhttp://docs.python.org/3/library/http.cookiejar.html#http.cookiejar.DefaultCookiePolicy.strict_ns_set_pathX-trTXsqlite3.Cursor.rowcountrT(jjXEhttp://docs.python.org/3/library/sqlite3.html#sqlite3.Cursor.rowcountX-trTXipaddress.IPv6Address.sixtofourrT(jjXOhttp://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Address.sixtofourX-trTXconfigparser.BOOLEAN_STATESrT(jjXNhttp://docs.python.org/3/library/configparser.html#configparser.BOOLEAN_STATESX-trTXzlib.Decompress.unused_datarT(jjXFhttp://docs.python.org/3/library/zlib.html#zlib.Decompress.unused_dataX-trTX%xml.etree.ElementTree.ParseError.coderT(jjXahttp://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.ParseError.codeX-trTX/http.server.BaseHTTPRequestHandler.MessageClassrT(jjXahttp://docs.python.org/3/library/http.server.html#http.server.BaseHTTPRequestHandler.MessageClassX-trTXselect.epoll.closedrT(jjX@http://docs.python.org/3/library/select.html#select.epoll.closedX-trTXoptparse.Option.actionrT(jjXEhttp://docs.python.org/3/library/optparse.html#optparse.Option.actionX-trTXoptparse.Option.constrT(jjXDhttp://docs.python.org/3/library/optparse.html#optparse.Option.constX-trTXimportlib.abc.FileLoader.pathrT(jjXMhttp://docs.python.org/3/library/importlib.html#importlib.abc.FileLoader.pathX-trTX"collections.somenamedtuple._sourcerT(jjXThttp://docs.python.org/3/library/collections.html#collections.somenamedtuple._sourceX-trTXselect.kevent.flagsrT(jjX@http://docs.python.org/3/library/select.html#select.kevent.flagsX-trTX$email.headerregistry.BaseHeader.namerT(jjX_http://docs.python.org/3/library/email.headerregistry.html#email.headerregistry.BaseHeader.nameX-trTXnntplib.NNTPError.responserT(jjXHhttp://docs.python.org/3/library/nntplib.html#nntplib.NNTPError.responseX-trTXzipfile.ZipInfo.CRCrT(jjXAhttp://docs.python.org/3/library/zipfile.html#zipfile.ZipInfo.CRCX-trTXlzma.LZMADecompressor.checkrT(jjXFhttp://docs.python.org/3/library/lzma.html#lzma.LZMADecompressor.checkX-trTuuUsrcdirrTX1/var/build/user_builds/simpy/checkouts/3.0.5/docsrTUconfigrTcsphinx.config Config rT)rT}rT(U html_contextrT}rT(Ubitbucket_versionU3.0.5rTU using_themeU html_themerTUsphinx_rtd_themerTUcurrent_versionrTjTU canonical_urlUU source_suffixrTU.rstrTUPRODUCTION_DOMAINUreadthedocs.orgU github_userUNonerTU new_themeUanalytics_codeUUsingle_versionUdisplay_githubU downloads]U READTHEDOCSU conf_py_pathU/docs/U github_repojTU rtd_languageXenUbitbucket_repoUsimpyrTUslugrTjTUapi_hostUhttps://readthedocs.orgUbitbucket_userjTUnamerTXSimPyrTUversions]rT(UlatestU /en/latest/rTjTU /en/3.0.5/rTU2.3.1U /en/2.3.1/rTeUgithub_versionjTUdisplay_bitbucketUTruerTU MEDIA_URLrTUhttps://media.readthedocs.org/uUpygments_stylerTUfriendlyrTUhtmlhelp_basenamerTUSimPydocjTjTUautodoc_member_orderrTUbysourcerTU master_docrTUcontentsrTjTjTU copyrightrTU2002-2014, Team SimPyUexclude_patternsrT]rTU_buildrTajU3.0U man_pagesrT]rT(UindexrTjTXSimPy DocumentationrT]rTU Team SimPyrTaKtrTaU html_stylerTNUhtml_theme_optionsrT}Utemplates_pathrT]rT(UA/home/docs/checkouts/readthedocs.org/readthedocs/templates/sphinxrTU _templatesrTeUlatex_documentsrT]rT(jTU SimPy.texjTjTUmanualrUtrUaU html_faviconrUU_static/favicon.icoUhtml_static_pathrU]rU(U_staticrUUI/home/docs/checkouts/readthedocs.org/readthedocs/templates/sphinx/_staticrUeUhtml_theme_pathrU]rU(U_themesr UjTeUintersphinx_mappingr U}r UUhttp://docs.python.org/3/r UNsUlanguager UXenrUUhtml_additional_pagesrU}rUjTU index.htmlsU overridesrU}rUj UjUsUprojectrUjTU html_logorUU_static/simpy-logo-small.pngU extensionsrU]rU(Usphinx.ext.autodocrUUsphinx.ext.doctestrUUsphinx.ext.intersphinxrUUreadthedocs_ext.readthedocsrUeUreleaserUU3.0.5rUUsetuprUNubUintersphinx_cacherU}rUj UNJJsS}r U(j}r!U(jjjjjjjjjjjjjjjjj j!jjj"j#jj jk jjjjj$j%jjj(j)jjj*j+jjjjj,j-jjjjj0j1j j j4j5j6j7j8j9jjjjjjjjjjjjjjjjjjj<j=j>j?jjjjj@jAjBjCjDjEjjj&j'jFjGjHjIjJjKjjjLjMjNjOj,j-j0j1j8 j9 j2j3jRjSj: j; j\j]jTjUjVjWjjj8j9j\ j] jXjYj:j;jZj[j4j5j<j=j`jaj@jAjbjcjBjCjdjej j jfjgjhjij*j+jHjIjjjkjJjKj j jNjOjpjqjrjsjPjQjtjujjjRjSjvjwjjjTjUjjjVjWjXjYjZj[j j j\j]jjjzj{j^j_j`jajbjcj>j?j~jjfjgjhjijjjkjjjljmjjjnjojpjqjjj*j+jjjrjsj j jjjtjuj.j/jvjwjjjxjyjjjzj{jjjjj|j}jjj~jjjjjjjjjjjj j jjjjjjjjjjj j jjjjj$ j% jjjjjjjjjhjijHjIjjjtjujjjjjjjjjDjEjjjjjjjjjjjjjjjjjjjL jM jjjjjjjjjjjjjjjjjjjjj j jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j.j/jjj j j& j' jjjjj:j;jjjjjjjjjjjv jw jjjjjjjjjjjjjVjWjjj"j#jjjjj j jjjjjjj j j j jjjjj j jjj`jaj j j j jjjjjjjjjjj j j j j j j j j j jjjjj j j j! j" j# j$ j% jjjj jR jS j\ j] j| j} jjj j jjj j!jjj* j+ j, j- j. j/ jjjjjjj0 j1 j2 j3 j4 j5 j6 j7 j8 j9 jjj j!j"j#j: j; j$j%j j j j j&j'j(j)j> j? jFjGj*j+j,j-jfjgj@ jA jB jC jjj.j/j0j1jF jG jjj4j5jH jI j6j7jL jM j8j9jN jO j:j;jP jQ jjj<j=j>j?jT jU jX jY j@jAjjjZ j[ jDjEjFjGjHjIj\ j] jLjMj^ j_ j` ja jPjQj4j5jTjUjb jc jjjXjYjZj[jd je j* j+ jf jg j j jL jM jjjh ji jj jk j j j j jl jm j`jajbjcjn jo jdjejjjhjijjjj jk jjjkjljmjv jw jx jy jpjqjrjsjtjujz j{ jvjwjjj| j} j~ j j|j}j~jjjj j jjjjjnjoj j j j jjj j jjjjj j jjj j jjj j j j j j jjj>j?jxjyj j j j jjj j jjj j j j j j j j j j jjjjj j jjjjj j jjj j jjj j j@ jA jzj{jj jjjjjjj j j j j j j j j j j$j%j j j j jjjjjjjLjMjjjjjjj j j j jjj j jjjjjhjijjjjjjj j jj j j j j j j j j jjjjj j j j j j j j jjjjjjj j jjj j j j j j jljmjjjjj j j j j j jBjCjjjnjojjj j jfjgjjjn jo j j j j j j j j jv jw jjjxjyjjjjj j jjjjjjj j jjjjj j j j j j j j j j j j j j jjjjjjj j jjjjj j j j jPjQj j j j jjjjjjj j jjj j! j j jjjjjjj$ j% j& j' j( j) j j j, j- j. j/ j0 j1 j j jjjjj4 j5 j j j6 j7 j j!jjj"j#j< j= j j j j j&j'jNjOj j j(j)j*j+j,j-j j j@ jA j.j/jB jC jD jE j j j j jH jI j0j1jjj4j5jjjjj j j6j7j8j9jP jQ j:j;jR jS j<j=j j jT jU jV jW jX jY jZ j[ j\ j] j^ j_ j2j3jBjCj` ja jb jc jd je jf jg jh ji jFjGj6j7jHjIjn jo j*j+jp jq jj j j jr js j j jLjMjNjOjPjQjRjSjTjUjVjWjJ jK jXjYj| j} j|j}jZj[j j j j j^j_j`jajbjcj j!jdjejfjgjjj j j j jjjkj j jljmj j jpjqjrjsjtjuj j j j j j jvjwjxjyj j jzj{j|j}j:j;j~jjjjjjjjN jO jjjjj" j# j j jjj j j j jjjjj j jjj j j j jjjjj j j j jjj j jjjjjjj j jjj j jjj j j j j j jjjjjjjjjjjjjjj j j j j j j j j j j j j j jjj j j6j7j j jjj j jjj j j j jjj j j j jjjjjjjjj j j j jjjjjjjjjjj j jjj* j+ j j j j jjjF jG jjj j j(j)j j j j jjjjj j j j jjjjj2 j3 jjj j j j jjj j jjjjj j jjj j jjj j jjj2j3jDjEjjj j j j jjj j jj jk j j jjjjj j j j jjj j jjjjjjjjjjjjjjjjjjj j j j j j j j jjjjjjj" j# jjj$ j% jjj& j' jjjjj: j; jdjej* j+ j j!j"j#jjj, j- j$j%jjj j j&j'jjj(j)j0 j1 j2 j3 jr js j4 j5 j,j-j.j/j8 j9 j8 j9 j0j1j2j3j j j: j; j< j= j6j7jjj> j? j8j9j:j;j<j=j>j?jB jC jD jE jF jG j j jjjH jI jJjKjDjEjjjFjGjHjIjP jQ jJjKjjjR jS jLjMjNjOjjjPjQjjjV jW j j jTjUjVjWjXjYjZj[jZ j[ j^j_jr js j^ j_ jjjdjejb jc jfjgjd je jf jg jjjkjljmjnjojjj j jrjsjl jm jvjwjn jo jxjyjjjzj{j|j}j j j~jj2j3jp jq jjj4j5j j jjjjjJ jK jr js jt ju jjjv jw jx jy jz j{ j j jjj~ j jjj j j j j j jjjjj j jt ju jp jq j\j]j j j j j j jjjjjjjjjjjjjjj j j j j j jjj j j( j) j j jjjjj j jjjjjjj j jjj j j j j j j j jjjjj j jjjjjjj j jjj j j j j j jVjWjz j{ jjj j jjjjj j j j j j j j jjj j jjj j jjj j jnjoj j jjjjjjjjjjj j jjj j j j jjj j j j jjjjjzj{jjj j jjjjjjj j j j j j j j jRjSj j j^j_j j jRjSj j jbjcj j jpjqj j jjjjjh ji jjj j jjjjj j j j jjjjjxjyjjj j j j jjj j j j jjj j j j jjj j jjj j j j j^j_j j u(jjj. j/ j j j>j?j j j j j j jjj@jAjx jy jjj j jjjj j j jjj j jjj j j j jjj j j j j j jjj j jjj j jjj j jjjjjjj j jjj j jjj j j"j#jjj j! j" j# jjj& j' j6 j7 j&j'j( j) j j j&j'j, j- j. j/ j,j-j0 j1 j2 j3 j4 j5 j6 j7 j2j3j0j1j< j= j\j]j< j= j8j9jjj> j? jl jm j<j=jB jC jD jE j j j@jAjF jG jBjCjDjEjFjGjjjJ jK jJjKjLjMjjjN jO jNjOjP jQ jPjQjRjSjR jS jT jU jV jW jXjYjZj[j\j]j^j_jX jY jZ j[ jjj`jajbjcj^ j_ j` ja jdjej` ja jd je jf jg jhjijh ji jjjkjljmjjjjjjjnjojJjKjrjsjl jm jtjujt ju jjjvjwjjj j j j j( j) j j j|j}j~jj j j j jt ju jjjjjjjx jy jz j{ jjjjjjj| j} j~ j j j j j jjjjjb jc j@ jA j> j? j j j j jjj j j@jAjL jM jjj j jjj j j j j j jjj j j j j j jjjjj j jjj j jD jE j j jjjjjjj j j\j]jjjjjjjjj j j j jjjjj$j%jjj j jBjCj j! jjj j jJ jK jjjjj j j~ j j j jjjjj j j j j j jjj j j j jjj j jjj.j/jjjjjjjpjqjN jO jjj j j j jX jY jjjjj j j j j j jjjjjjj j jjjjj j jjj j jjj j jjj j jTjUj j jjjjjjj j jjjjjjjH jI jjj j jjjjj j j(j)jp jq j j jV jW j j j j jT jU j j jjj$j%jjjjjjjjj j jjjjjj j j j j j j jjjjj j jjj j uj }r"U(j j j j j j j j j j j j j j j j j j j j j j j j j j j j! j& j' j( j) j* j+ j8 j9 j0 j1 j2 j3 j, j- j: j; j< j= jB jC jD jE jF jG jH jI jJ jK jP jQ jR jS jT jU jZ j[ j\ j] j` ja jb jc jd je jn jo jr js jv jw jx jy jz j{ j~ j j j j j j j j j j j j j j" j# j j j j j j j j j j j j j j j j j j j j j j j j j j j$ j% j j j. j/ j4 j5 j6 j7 j> j? j@ jA jL jM jV jW jX jY j^ j_ j j j j jf jg jj jk jl jm jp jq jN jO jt ju j| j} j j j j j j j j jh ji uj }r#U(j j j j jjj j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j jVjWj j jjj j j j j j j j j j jjj j j j j j j j j j j j j j j j j j j j j8j9j j jjj j j j j j j j j j j j j j j j j j jjjjjjjjjj j j j j jjjjjjjjjjjjjjjjjjj j!j"j#j&j'j(j)j*j+j,j-j.j/j0j1jjjkj4j5j8j9jjj<j=j>j?j@jAjBjCjDjEjjjrjsjHjIjJjKjLjMjNjOjPjQjRjSjTjUj j jXjYjZj[j\j]j^j_j`jajbjcjHjIjdjejfjgjhjij2j3jljmjnjojpjqjFjGjtjujljmjxjyjzj{j|j}j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j j j jjjjjjjjjjjjjjjjj j!j"j#j$j%jjj&j'j(j)j*j+j,j-j.j/j0j1j6j7j4j5j6j7jfjgj:j;j<j=j>j?j@jAjBjCjnjojFjGjHjIjJjKjLjMjPjQjRjSj(j)jjj>j?jXjYjjjZj[j\j]j^j_j`jajbjcjdjejfjgjhjijjjjjkj@jAjDjEjpjqjrjsjtjujvjwjxjyjzj{j|j}j~jjjjjjjjjjjjjj j jjjjjjjjjjjjjjjjjjjjjjjjjjjjjNjOjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj@jAjjjjjjjjjjjjj j jjjjjBjCj j jjjjjjjjjjjjjjjjjjjjj j!jdjej$j%jfjgj(j)jhjij,j-j.j/j0j1j2j3j4j5j2j3j8j9j:j;j<j=jjjljmjBjCjDjEjFjGjHjIjJjKjLjMjjjPjQjRjSjTjUjVjWjXjYjZj[j\j]j`jajRjSj"j#j&j'j*j+jjjkjljmjnjojpjqjrjsjtjujjjvjwjxjyjzj{j|j}j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj&j'jjjjjjjjjjjjjjjkj j jjj.j/jjjjjjjjjjjjjjjjj:j;jjjjjjjjjjjjjjjjjjjjjj j j jjjjjjjjjjjjjjjjj:j;j j!j"j#j$j%j&j'jTjUj*j+j,j-j.j/j0j1j2j3j4j5j6j7j8j9j:j;j<j=jjjjjjjj jDjEjFjGj j jJjKjLjMjNjOjPjQjjjbjcjTjUjVjWjXjYjZj[j\j]j^j_j`jajbjcjdjejhjijjjjjpjqjrjsjvjwjxjyjzj{j|j}j~jj>j?jjjjjjjjjjjjjjjjjjjjjjjRjSjjjjjjjJjKjjjjjjjjjxjyjjjjjtjujjjjjjjVjWjjjjjjjjjjjjj j jjjjjvjwjjjjjjjjjNjOjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj$j%j6j7jjjjjhjijjjjjjjkj j j j jjjjjjjjjjjjjljmjjjjj j!j"j#j$j%jjj(j)j*j+j,j-jjj0j1j2j3j4j5jpjqj8j9jjj<j=jrjsj@jAjBjCjDjEjFjGjHjIjnjojLjMjNjOjPjQjjjTjUjVjWjXjYjZj[j\j]j^j_j`jajbjcjdjejfjgjjjj j^j_jnjoj6j7j>j?jtjujvjwjzj{j|j}uj~}r$U(jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjuj}r%U(jjjjjjjjjjjjj j!jjj"j#jjjjj$j%j&j'jjj*j+j^j_jjjjj,j-jjj.j/j0j1j2j3j4j5jjj8j9jjj<j=j>j?jjjjjjjjjjjDjEjFjGjHjIjjjjjjjjjjjLjMjj j j jPjQjRjSjjjjjTjUjjjjjjjjjVjWjjj j!jjjZj[j j jJjKjjjXjYj"j#j\j]j$j%j&j'j^j_jjj`jaj*j+jbjcjdjej.j/j0j1j2j3jfjgjbjcjjjjjkj j jljmjnjoj8j9jpjqjfjgjjj<j=j>j?jhjij@jAjrjsjjj$j%jxjyjBjCjDjEj&j'jFjGj|j}j(j)jJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj[j\j]jjjjjjjjjjjjjjjdjejjjjjjjjjjjljmjjjkjjjnjojjj:j;jpjqjrjsjjjtjujjjjjjjzj{jjjjjjjLjMjjjjj|j}j4j5j~jj@jAjjjjjjjjjBjCjjjjjjjjjjjjjjjjjjj:j;jjjjjjjjjjjjjjjjjjjjjjj8j9jjjjjjjjjjjjjjjjj0j1jjjjjjjjjjjjjjjjjtjujjjjjjj(j)j j j6j7jjjjjjjjjhjijxjyjjjjjjjjjjjjjjj,j-jjjzj{jjj:j;jjjjjjjjj`jajjjjjjjjjjjjjjjjjjjjjjjjjj jjjjjNjOjjjjjjjjjj jjjjj j jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j!j"j#jjjjjjjHjIjvjwjjjjj(j)jjj,j-j.j/jjjjjjjvjwjjj2j3jjjjjjj4j5jjjjjjjjjjjjjDjEjjjjjjjjjjjjj<j=jjj6j7j>j?j j jjjjjBjCjjjjj*j+j6j7jFjGjHjIj~jjJjKj@jAjNjOujP}r&U(jRjSjTjUjVjWj\j]jpjqjdjejljmjrjsjtjujxjyj|j}j~jjXjYjZj[j`jajfjgjhjijjjkjnjoj^j_jbjcjvjwjzj{uj}r'U(jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j!jjjjj4j5jjjjjjjjjjjjjjjjjjjjjjjjjjj j jjjjjjjjjjjjj$j%j&j'j(j)j*j+j,j-j.j/jjj6j7j:j;j@jAjDjEjJjKjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j jjjjjjjjjjj2j3jjjjjj jjjjjjjjjjjjjjjjjjj"j#j>j?j0j1jjj8j9j<j=jFjGjHjIjBjCjLjMujN}r(U(jPjQjjjbjcjTjUjVjWjXjYjZj[j\j]jvjwj`jajRjSjdjejjjhjijjjkjljmjnjojpjqjfjgjrjsjtjuj^j_jxjyj|j}j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjzj{jjjjuj}r)U(jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjuj}r*U(jj jjj j j j j&j'jjX!jjjjjjBjCjjjHjIjjjjj0j1j"j#j$j%jjj(j)j*j+j,j-j.j/j j!j2j3j4j5j6j7j8j9j:j;j<j=j@jAXpjjDjEjFjGj>j?ujJ}r+U(jLjMjNjOjxjyjRjSjTjUjVjWjjjZj[j\j]j^j_j`jajbjcjvjwjdjejfjgjhjijjjkjljmjnjojpjqjrjsjfjgjvjwjPjQjzj{jjj~jjjjjj|j}jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjXjYjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j j j j jjjjjjjjjjjjjjjjjjj j!j"j#j$j%j&j'j(j)j*j+j,j-j.j/j0j1j2j3j4j5j6j7j8j9j:j;j<j=j>j?j@jAjHjIjBjCjDjEjFjGjpjqjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj[j\j]j^j_j`jajbjcjdjejtjujhjijjjkjljmjnjojrjsjtjujjjxjyjzj{j|j}j~jjjjjjjjjjjjjjjjjjjjjjjuj}r,U(jjjjjjjjjjjjjjjjjjjjjjjjj6j7jjjjjjjjjjjjjjjjjjjjjjjjj2j3jjjjjjjjjjjjjjjjjjjjjjjjjjj(j)jjjjjNjOjjjjjjjjjjjFjGjjjjjjjjjjjjjj j j j j jjjjjjjjjjjjjjjjjjj j!j"j#jjj&j'j(j)j*j+j,j-j.j/j0j1j2j3j4j5j6j7j8j9j:j;j<j=jjj@jAjBjCjDjEjjjjjHjIjJjKj8j9jPjQjRjSjTjUjVjWjXjYjZj[jjj\j]j`jajbjcjdjejfjgj@jAjjjkjljmjnjojpjqjrjsjtjujvjwjxjyjzj{j|j}j~jjjjjjjjFjGjjjjjjjjjjjjjjjjjjj$j%jjjnjojjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjTjUjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj`jajjjjjjjjjjjjjjjjjjjLjMjjjjjj j j j j jjjHjIjjjjjjjjjjjjj j!j"j#j$j%j&j'jjj*j+j,j-j.j/j0j1jjj4j5jjjNjOj:j;j<j=j>j?jhjijBjCjDjEjjj^j_jJjKjLjMj>j?jPjQjRjSjjjVjWjXjYjZj[j\j]j^j_jjjbjcjdjejfjgjhjijjjkjljmjjjpjqjrjsjtjujvjwujx}r-U(jzj{j|j}j~juj}r.U(jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjuj}r/U(jl%jm%jjjjjjjjjjj)j)jjjjj!j!jjjjjjj4#j5#jjjjjjjj j j j`jajr%js%jjjjjjj)j)jjjjjjjjjjj)j)j"j#j$j%j-j-j&j'j(j)j*j+j,j-j.j/j0j1j2j3j4j5j6j7j8j9j<j=j>j?j@jAjBjCjz%j{%jFjGjHjIjJjKj"j "jNjOjRjSj%j%jVjWjd$je$jXjYjZj[j\j]j^j_j`jajbjcjfjgj%j%jjjkjljmjnjoj%j%jrjsjtjujvjwjxjyjzj{j|j}j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj,j,jjjxjyjjjjjjjjjjjjj,j,jjjjj"j"jjjjjjjjjjjjjjjjjjjjjjj,j,jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj/j/jjjjjjjjjjj<(j=(jjjjjjjjjj j j j j j."j/"jjjjjjjjjjjjjjjjj j!j"j#jjj&j'j(j)j*j+jjj.j/j0j1j%j%j4j5j6j7j8j9j:j;j<j=j>j?j@jAjBjCjDjEjFjGjHjIjJjKjLjMjNjOj4"j5"jRjSjTjUjVjWjXjYjZj[j\j]j^j_j`jajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujxjyjzj{j|j}j~jjjj0j0jjjjjjjjjjjjjjjjjjj<"j="jjjjjjjjjjjjjjjjj>"j?"jjjjj%j%jjjjjjjjjjjjjjjjjB"jC"jjjjj,j,jjjjjjjjjjjjjjjjjjjjjjjjjjjb)jc)jjjjjjjjjjjjjd)je)jjjjjjjjjjjjj.j.jjjjjj j j j j jjjjjjjjjjjjjjjjjjj j!j"j#j$j%j&j'j(j)j*j+j%j%j.j/j0j1j2j3j4j5j-j-j6j7j8j9j:j;j<j=j!j!j-j-jBjCjt)ju)jFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUj-j-jXjYjZj[j\j]j^j_j%j%jbjcjdjejfjgjhjijjjljmjnjojpjqjrjsjtjujvjwjxjyjzj{j|j}j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj<0j=0jjjjjjjjjjjjjjjjjjjjj0j 0jjjjj0-j1-j,-j--jjjjjjjjjjjjjjjjjjjjjjjj j j j j jjjr"js"jjjjjjjjjjjjj j!j"j#j$j%j&j'j(j)j*j+j,j-j.j/j%j%j2j3jjj6j7j8j9j:j;j<j=j>j?j@jAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjjjz"j{"jXjYjZj[j\j]j^j_j j jbjcjdjejfjgjhjijjjkjljmjnjojpjqjjjtjujvjwjjj$!j%!j)j)j|j}j~jjF-jG-jjj"j"jjjjjjjjjjjjjjjjj$j%jjj,j-j%j%jjjjjjj"j"jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj)j)jjjjjjjjjkjjjjjjjjjjjjjjj%j%jjjZ-j[-jjjjjjjjjjjjjjjjjjj4j5jjjjjTjUjjjrjsj'j'jjj)j)jj j"j"j j jjj&j&jjj!j!jjjjjjjjj j!j"j#j$j%j&j'j(j)j*j+j,j-j.j/j0j1j2j3j4j5j6j7j8j9j:j;j<j=j>j?j@jAjBjCjDjEj)j)jHjIjJjKjLjMjNjOjPjQjRjSj"j"jTjUjVjWjXjYjZj[j"j"j^j_j|%j}%j`jajbjcjdjej"j"jhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjyjzj{j|j}j~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjD*jE*jjjjjjjjjjjjjjjjjjj#j#jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj"j"jjjjjjjjjjjjjjj j j"j"j j j j j j j j j j j)j)j%j%j j j j j j j j j j j j j"j"j-j-j)j)j" j# j$ j% j& j' j( j) j* j+ j, j- j. j/ j0 j1 j2 j3 j4 j5 j6 j7 j8 j9 j: j; j< j= j> j? j@ jA jB jC jD jE jF jG jH jI jL jM j)j)jP jQ jR jS jV jW jX jY jZ j[ j\ j] j2*j3*j^ j_ j` ja jb jc jd je jf jg jh ji jj jk jl jm jn jo jn&jo&jp jq jr js jt ju jv jw jx jy jz j{ j~ j j,j,j j j j j j j j j j j j j j j j j j j j j j j j j'j'j j j j j j j j j^"j_"j j j j j j j j j j j j j j j j j j j j j j j j j)j)j j j j j j j j j "j "j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j!j!j!j!j!j!j!j!j!j !j !j !j !j !j!j!j!j!j!j!j!j!j!j!j!j!jX&jY&j!j!j !j!!j"!j#!j,j ,j&!j'!j(!j)!j*!j+!j,!j-!j.!j/!j0!j1!j2!j3!j4!j5!j6!j7!j8!j9!j:!j;!j>!j?!jB!jC!jD!jE!jF!jG!jH!jI!jJ!jK!jL!jM!jN!jO!jP!jQ!jR!jS!jT!jU!jV!jW!jX!jY!jZ!j[!j\!j]!j^!j_!j`!ja!jb!jc!jd!je!jf!jg!jh!ji!jj!jk!jl!jm!jn!jo!jp!jq!jr!js!j"j"jv!jw!jx!jy!jz!j{!j-j-j~!j!j!j!j!j!j!j!j!j!j!j!j!j!j!j!j!j!j!j!j!j!j!j!j!j!j!j!j!j!j!j!j!j!j.j.j!j!j!j!j.j.j!j!j!j!j!j!j!j!j!j!j!j!j!j!j!j!j!j!j!j!j!j!j!j!jB$jC$j!j!j!j!j!j!j-j-j!j!j!j!j!j!j#j#j!j!j!j!j!j!j!j!j!j!j!j!j!j!j!j!j!j!j!j!j!j!j!j!j#j #j!j!j!j!jjj!j!j!j!j!j!j!j!j!j!j"j"j"j"j"j"j"j"jLjMj "j "jPjQj"j"j"j"j"j"j"j"j"j"j"j"j"j"j*j*j"j"jjj "j!"j""j#"j$"j%"j("j)"j*"j+"j,"j-"jjj'j'j:*j;*jPjQj6"j7"j8"j9"j:"j;"jjjjj@"jA"jjjD"jE"jF"jG"jH"jI"jJ"jK"jL"jM"jN"jO"jP"jQ"j(j(jR"jS"jT"jU"jV"jW"jX"jY"j~&j&j\"j]"j$j$j#j#jb"jc"jd"je"jf"jg"jh"ji"jj"jk"jl"jm"jn"jo"j#j#jjj&j&jv"jw"jx"jy"j #j!#jVjWj|"j}"j~"j"j"j"j"j"j$#j%#jjj"j"j"j"j&#j'#j"j"jjj"j"j"j"j"j"j j j"j"j"j"j)j)j"j"j"j"j\j]j%j%jfjgj"j"j"j"j j j&.j'.jju(j"j"j-j-j"j"j"j"j"j"j"j"j"j"j"j"j,#j-#j"j"j j j"j"j"j"j j j.#j/#j^*j_*j"j"j"j"j"j"j"j"j"j"j"j"j"j"j"j"j&j&j"j"j"j"j"j"j"j"j"j"j"j"j"j"j"j"j"j"j"j"j"j"jjj"j"jt!ju!j"j"j.j.j#j#j#j#j#j#j!j!j!j!j #j #j #j #j#j#j#j#j#j#jN.jO.j#j#j#j#jp"jq"j#j#j-j-j"#j##j"j"j"j"j(#j)#j*#j+#j"j"j .j .j0#j1#j2#j3#j)j)j6#j7#j8#j9#j:#j;#j<#j=#j>#j?#j@#jA#jB#jC#jD#jE#jF#jG#jH#jI#jJ#jK#j.j.jL#jM#jN#jO#jP#jQ#jR#jS#jT#jU#jV#jW#jX#jY#jZ#j[#j\#j]#j^#j_#j`#ja#jb#jc#j&j&jf#jg#jh#ji#jj#jk#jn#jo#jp#jq#jt#ju#jv#jw#jx#jy#jz#j{#j|#j}#j~#j#j#j#j#j#j#j#j&j&j#j#j#j#j#j#j#j#j#j#j#j#j#j#j#j#j*j*j*'j+'j#j#j#j#j#j#j#j#j#j#j#j#j#j#j#j#j(.j).j#j#j#j#j#j#j#j#j#j#j#j#j*j*j#j#j#j#j#j#j#j#j#j#j#j#j#j#j&j&j#j#j#j#j&j&j#j#j#j#j#j#j#j#j#j#j#j#j#j#j#j#j#j#j#j#j#j#j#j#j#j#j#j#j#j#j#j#j#j#jl(jm(j#j#j#j#j#j#j$j$j$j$j$j$j$j$j$j $j $j $j $j $j$j$j$j$j*j*j$j$j$j$j$j$j&j&j$j$j$j$jD+jE+j$j$j $j!$j*j*j$$j%$j&$j'$j($j)$j*$j+$j,$j-$j.$j/$jx(jy(j0$j1$jj'jk'j2$j3$j6$j7$j8$j9$j:$j;$j<$j=$j>$j?$j@$jA$j+j+jD$jE$jF$jG$jJ$jK$j$)j%)jL$jM$jN$jO$jP$jQ$jR$jS$jT$jU$jV$jW$jX$jY$jZ$j[$j\$j]$j^$j_$j`$ja$jb$jc$j*j*jf$jg$jh$ji$jj$jk$jl$jm$j&j&jp$jq$jn'jo'jr$js$jt$ju$j@.jA.jz$j{$j|$j}$j~$j$j$j$j$j$j$j$j$j$j$j$j$j$j&j&j(j(j$j$j$j$j$j$j$j$j$j$j$j$j,j,jP+jQ+j$j$j$j$j$j$j$j$j$j$j$j$j$j$j$j$j$j$j$j$j$j$j$j$j$j$j$j$j$j$j$j$j$j$j$j$j$j$j$j$j$j$j&j&j$j$j$j$j$j$j$j$j$j$j$j$j$j$j$j$j$j$j$j$j$j$j$j$jR.jS.j$j$j$j$j$j$j$j$j$j$j$j$j$j$j$j$j$j$j$j$j$j$j$j$j$j$j$j$j$j$j%j%j%j%j%j%j%j%j%j %j %j %j %j %j%j%j%j%j%j%j".j#.j%j%j%j%j%j%j%j%j %j!%j"%j#%j$%j%%j&%j'%j(%j)%j*%j+%j,%j-%j0%j1%j6(j7(j2%j3%j4%j5%j6%j7%j8%j9%j:%j;%j<%j=%j>%j?%j@%jA%jB%jC%jD%jE%jF%jG%jH%jI%jJ%jK%jL%jM%jN%jO%jP%jQ%jR%jS%jT%jU%jV%jW%jX%jY%j*j*j\%j]%j^%j_%j`%ja%j\)j])jd%je%jf%jg%jh%ji%jj%jk%j-j-jjj'j'jv.jw.jp%jq%jjjt%ju%jv%jw%jx%jy%j*j*jDjEj@jAj~%j%jTjUjhjijpjqj%j%j%j%j%j%j%j%j%j%j%j%j%j%j&j&j%j%j%j%j%j%j2j3j%j%j%j%j*j*j%j%j%j%j%j%j%j%jjj%j%j%j%j*j*j*j*j%j%j%j%j%j%j,j-j%j%j%j%j%j%j%j%j`jaj%j%j%j%j%j%j%j%jv$jw$j%j%j%j%j%j%j%j%j%j%j%j%j%j%j%j%j%j%j%j%j0j1j%j%j%j%j%j%j%j%j%j%jjj%j%j%j%j%j%jH$jI$j%j%j%j%jjj&j&jP*jQ*j&j&j&j&j&j &j &j &j &j &j&j&j&j&j&j&j&j&j&j&j&j&j&j&j&j&j &j!&j"&j#&j$&j%&j&&j'&j*j*j*&j+&j,&j-&j.&j/&j0&j1&j2&j3&j4&j5&j.j.j6'j7'j:&j;&j<&j=&j>&j?&j@&jA&jB&jC&jD&jE&j*j*jH&jI&jJ&jK&jL&jM&j)j)jN&jO&jP&jQ&j.j.jT&jU&jV&jW&j!j!jZ&j[&j\&j]&j^&j_&j`&ja&jb&jc&jd&je&jf&jg&jh&ji&jj&jk&jl&jm&j'j'jp&jq&jr&js&jt&ju&jv&jw&jx&jy&jz&j{&j,j,j|&j}&jZ"j["j&j&j&j&j&j&j&j&j&j&jt"ju"j&j&j&j&j&j&j&j&j&j&j&j&j&j&j&j&j&j&j"j"j&j&j&j&j&j&j&j&j&j&j&j&j&j&j&j&j!j!jd#je#j&j&j&j&j&j&j&j&j#j#j&j&j&j&j#j#j#j#j&j&j&j&j&j&j&j&j&j&jjj&j&j4$j5$j&j&j.j.j&j&j&j&j&j&jn$jo$j&j&j&j&j&j&j&j&j&j&j&j&j&j&j&j&j$j$j&j&j&j&j&j&j&j&j'j'j'j'jjj'j'j'j 'j 'j 'j 'j 'j'j'j'j'j'j'j'j'j.j.j'j'j'j'j'j'j'j'j 'j!'j"'j#'j$'j%'j&'j''j('j)'j8(j9(j,'j-'j.'j/'j0'j1'j2'j3'j4'j5'j8&j9&j8'j9'j:'j;'j<'j='j>'j?'j@'jA'jB'jC'jD'jE'jF'jG'jH'jI'jJ'jK'jL'jM'jN'jO'jP'jQ'jR'jS'jT'jU'jV'jW'jZ'j['j\'j]'j^'j_'jr'js'jb'jc'jd'je'jf'jg'jh'ji'j@*jA*jl'jm'j%j%jp'jq'j`'ja'jt'ju'jv'jw'jx'jy'jz'j{'j|'j}'j~'j'j'j'j'j'j'j'j'j'j'j'j'j'j'j'j'j'j'j'j'j'j'j'j'j'j'j'j'j'j'j'j'j'j(j(j'j'j'j'j'j'j'j'j'j'j'j'j'j'j'j'j'j'j'j'j)j)j'j'j'j'j'j'j'j'j'j'j'j'j'j'j'j'j'j'j'j'j'j'j'j'j'j'j'j'j'j'j'j'j'j'j'j'j&*j'*j'j'j6+j7+j'j'j'j'jjj'j'j'j'j'j'jl#jm#j'j'j'j'j'j'j'j'j'j'j'j'j'j'j'j'j(j(j(j(j(j(j(j(j(j (j (j (j (j (j(j(j(j(j(j(j(j(j(j(j(j(j)j)j(j(j(j(j(j(j (j!(j"(j#(j$(j%(j&(j'(j((j)(j*(j+(j,(j-(j.(j/(j0(j1(j2(j3(j4(j5(j+j+j+j+j:(j;(j+j+j>(j?(j@(jA(jB(jC(jD(jE(jF(jG(jH(jI(j-j-jJ(jK(jL(jM(jN(jO(jP(jQ(jR(jS(jT(jU(jV(jW(jX(jY(jZ(j[(j\(j](j^(j_(j`(ja(jb(jc(jd(je(jf(jg(jh(ji(jj(jk(j-j -jn(jo(jp(jq(jr(js(jt(ju(jv(jw(j`-ja-jz(j{(j|(j}(j~(j(j(j(j(j(j(j(j(j(j(j(j(j(j(j(j(j(j(j(jN+jO+j(j(j(j(j(j(j(j(jJ jK j(j(j(j(j(j(j(j(j(j(j(j(j(j(j(j(j(j(j(j(j(j(j(j(j(j(j(j(j(j(j(j(j(j(j(j(j(j(j(j(j(j(j(j(j(j(j(j(jF/jG/j(j(j(j(j(j(j(j(j(j(j(j(j(j(j(j(j(j(j(j(j(j(jb.jc.j(j(j(j(j(j(j(j(j(j(j*,j+,j(j(j(j(j(j(j\+j]+j(j(j(j(j)j)j)j)j)j)jjj,j,j)j )j )j )j )j )j)j)j j!j)j)j)j)jd-je-j)j)j)j)j)j)j)j)j )j!)j")j#)jx.jy.j&)j')j()j))j*)j+)j,)j-)j.)j/)j0)j1)j2)j3)j<,j=,j4)j5)j6)j7)j8)j9)j"$j#$j:)j;)j<)j=)j>)j?)j@)jA)jB)jC)jD)jE)jF)jG)jH)jI)jJ)jK)jL)jM)jN)jO)jP)jQ)jR)jS)jT)jU)jV)jW)jX)jY)jZ)j[)j*j*j^)j_)j`)ja)jjjjjf)jg)jh)ji)jj)jk)jl)jm)jn)jo)j.j.jp)jq)jr)js)jDjEjv)jw)jx)jy)jz)j{)j|)j})j~)j)j)j)j)j)jvjwj)j)j)j)jjj&/j'/jjj)j)j)j)j)j)j)j)j)j)jzj{j)j)j)j)j)j)j)j)j)j)j)j)jjj)j)j)j)j)j)jjj)j)j)j)j)j)j)j)jFjGjx+jy+j"j"j)j)j)j)j)j)j)j)j)j)j)j)j)j)j)j)j)j)j)j)j)j)j)j)j| j} j)j)j)j)j)j)j j j)j)j j! j)j)j)j)jN jO j)j)j)j)j)j)j)j)j)j)j)j)j)j)j j j)j)j)j)j*j*j*j*j j jz-j{-j*j *j *j *j *j *j*j*j*j*j*j*j*j*j*j?*jjjB*jC*jr,js,j!j!jF*jG*jH*jI*jL*jM*jN*jO*j&,j',jR*jS*jT*jU*jV*jW*jX*jY*jZ*j[*j\*j]*j#j#j`*ja*jb*jc*jd*je*jf*jg*jh*ji*jj*jk*jl*jm*jn*jo*u(jp*jq*jr*js*jt*ju*jv*jw*jx*jy*jz*j{*j|*j}*j~*j*j#j#j*j*j#j#j*j*j*j*j*j*j*j*j*j*j*j*j*j*j*j*j$j$j$j$j*j*j*j*j*j*j*j*jx$jy$j*j*j*j*j*j*j*j*j*j*j*j*j*j*j*j*j*j*j*j*j*j*j*j*jZ%j[%j*j*j*j*j*j*j*j*j*j*j*j*j*j*j*j*j*j*j%j%j%j%j*j*j*j*j*j*j*j*j*j*j*j*j*j*j*j*jX/jY/j*j*j*j*j*j*j(&j)&j*j*j*j*j*j*jF&jG&j*j*j*j*j+j+j+j+j+j+j+j +j +j +j+j+j +j +j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j +j!+j"+j#+j$+j%+j&+j'+j(+j)+j*+j++jf/jg/j.+j/+jh/ji/j2+j3+j4+j5+j'j'j8+j9+j:+j;+j<+j=+j>+j?+j@+jA+jB+jC+j&j&jF+jG+jH+jI+jJ+jK+jL+jM+j(j(jR+jS+jT+jU+jV+jW+jX+jY+jZ+j[+j(j(j^+j_+j`+ja+jb+jc+jp/jq/jf+jg+jh+ji+jj+jk+j+j+jn+jo+jr+js+jt+ju+jv+jw+j)j)jz+j{+j|+j}+j~+j+j+j+j+j+j+j+j+j+j+j+j*j*j+j+j0*j1*j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j!j!j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+jl+jm+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j .j!.j+j+jJ,jK,j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j,j,j+j+j,j,j,j,j j j,j,jL/jM/j ,j ,j ,j ,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j ,j!,j",j#,j$,j%,j(,j),jr-js-j.,j/,j0,j1,j2,j3,j4,j5,j6,j7,j8,j9,j:,j;,j j j>,j?,j@,jA,jB,jC,jD,jE,jF,jG,jH,jI,jL,jM,jN,jO,jP,jQ,jR,jS,jT,jU,jV,jW,jX,jY,jZ,j[,j\,j],j^,j_,j`,ja,jb,jc,jd,je,jf,jg,jh,ji,jj,jk,jl,jm,jn,jo,jp,jq,j/j/jt,ju,jv,jw,jx,jy,jz,j{,j|,j},j~,j,j,j,j,j,j/j/j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j/j/j,j,j/j/j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j/j/j,j,j,j,j"j"j,j,j,j,j,j,jjj -j!-jjjdjej,j,j,j,j,j,j,j,j,j,jjj,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j,j@!jA!jjj/j/j,j,j-j-j/j/j-j-j-j-j -j -j -j -j-j-j-j-j-j-j-j-j>j?j-j-jVjWj-j-j-j-j$-j%-j&-j'-j(-j)-j*-j+-j'j'j.-j/-jjj2-j3-j4-j5-j6-j7-j8-j9-j:-j;-j<-j=-j>-j?-j@-jA-jB-jC-jD-jE-jjjH-jI-jJ-jK-jL-jM-jN-jO-jP-jQ-jR-jS-jT-jU-jV-jW-jX-jY-jjj.j.j\-j]-j^-j_-jjjb-jc-j!j!jf-jg-jh-ji-jj-jk-jl-jm-jn-jo-jp-jq-j&j&jt-ju-jv-jw-jx-jy-j|-j}-j~-j-j-j-j-j-j-j-j-j-j-j-j-j-j-j-j-j-j-j-j j j-j-j-j-j-j-j-j-j-j-jjj-j-j-j-j-j-j-j-j-j-j-j-j-j-j-j-j-j-j-j-j-j-j-j-j-j-j-j-j-j-j"j"j-j-j-j-j-j-j|!j}!j-j-j/j/j,,j-,j-j-j!j!j-j-j-j-j-j-j-j-j-j-j-j-j-j-j-j-j-j-j-j-j`"ja"j-j-j-j-j-j-j-j-j-j-j-j-j"j"j-j-j-j-j-j-j-j-j-j-j.j.j.j.j"j"j.j.j.j .j .j .j%j%j.j.j.j.j.j.j.j.j.j.j.j.j.j.jr#js#j.j.j#j#j$.j%.j.0j/0j#j#j*.j+.j,.j-.j..j/.j0.j1.j2.j3.j4.j5.j6.j7.j8.j9.j:.j;.j<.j=.j>.j?.j0"j1"jB.jC.jD.jE.jF.jG.jH.jI.jJ.jK.jL.jM.j%j%jP.jQ.j$j$jT.jU.jV.jW.jX.jY.jZ.j[.j\.j].j^.j_.j`.ja.jX'jY'jd.je.jf.jg.jh.ji.jj.jk.jl.jm.jn.jo.jp.jq.jr.js.jt.ju.jn%jo%jz.j{.j|.j}.j~.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j*j*j.j.j.j.j.j.j.j.j.j.j/j/j.j.j.j.j6&j7&j.j.j.j.jR&jS&j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.%j/%j.j.j/j/j.j.j&j&j.j.j.j.j.j.j'j'j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j0j0j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.jjj.j.j+j+j*/j+/j0j0j/j/j/j/j/j/j/j/j/j /j /j /j /j /j0j0j/j/j/j/j/j/j/j/j/j/j/j/j/j/j/j/j /j!/j"/j#/j$/j%/j)j)j(/j)/j&j&j,/j-/j./j//j0/j1/j2/j3/j4/j5/j6/j7/j8/j9/j:/j;/j/j?/j@/jA/jB/jC/jD/jE/j(j(jH/jI/jJ/jK/jJ*jK*jN/jO/jP/jQ/jR/jS/jT/jU/jV/jW/j*j*jZ/j[/j\/j]/j 0j!0j`/ja/jb/jc/jd/je/j,+j-+j0+j1+jj/jk/jl/jm/jn/jo/jd+je+jr/js/jt/ju/jv/jw/jx/jy/jz/j{/j|/j}/j~/j/j/j/j/j/j/j/j/j/j/j/j/j/j/j/j/j/j,j,j*0j+0j,j,jjjT jU j/j/j/j/j/j/j/j/j/j/j/j/j,j,j-j-j00j10j/j/j/j/j/j/j/j/j/j/j/j/j/j/j/j/j/j/j/j/j/j/j/j/j/j/j/j/j/j/jb%jc%j/j/j/j/j/j/j/j/j/j/j/j/j/j/j/j/j/j/j:0j;0j/j/j/j/j/j/j/j/j/j/j/j/j/j/j*j*j/j/j/j/j/j/j/j/j/j/j/j/j.j.j#j#j0j0j0j0j.j.j0j0j 0j 0j 0j 0jp+jq+j0j0j/j/j0j0j0j0j0j0j0j0j0j0j^/j_/j"0j#0j$0j%0j&0j'0j(0j)0j/j/j,0j-0j&"j'"j#j#j20j30j40j50j60j70j80j90j/j/j:j;uj>0}r0U(j@0jA0j0j0j0j0j0j0jB0jC0jD0jE0jr0js0jF0jG0j0j0jH0jI0j0j0jJ0jK0jL0jM0jN0jO0jZ0j[0jR0jS0j0j0jT0jU0jV0jW0j0j0jX0jY0j0j0j0j0j\0j]0j^0j_0j`0ja0jb0jc0jd0je0jf0jg0jh0ji0jj0jk0jl0jm0jn0jo0jp0jq0X-j0jt0ju0j0j0j0j0jv0jw0jx0jy0jz0j{0j|0j}0j~0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0jP0jQ0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0uj0}r1U(j0j0j0j0j0j0j0j0j0j0j0j0j%4j&4j0j0j0j0j0j0jC5jD5j0j0j0j0j0j0j0j0j0j0j0j0j0j1j1j1j1j1j1j1j2j2j 1j 1jG5jH5j 1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j 1j!1j"1j#1j$1j)5j*5j'1j(1j)1j*1j}6j~6j-1j.1j/1j01j'7j(7j11j21j31j41j51j61j91j:1j2j2j=1j>1j?1j@1jA1jB1jC1jD1jE1jF1jG1jH1jI1jJ1jK1jL1jM1jN1jO1jP1jQ1jR1jS1jT1jU1jV1jW1jX1jW5jX5j[1j\1j]1j^1j_1j`1ja1jb1j3j3je1jf1j5j5jg1jh1ji1jj1jk1jl1jm1jn1jo1jp1jq1jr1js1jt1ju1jv1jw1jx1jy1jz1j{1j|1j}1j~1j1j1j1j1j1j1j1j1j1j1j1j1j1j1ja5jb5j1j1j1j1j1j1j1j1j'3j(3j1j1j1j1j2j2j)3j*3j1j1j1j1j2j 2j1j1j1j1j1j1j1j1j1j1j1j1j1j1j95j:5j1j1j1j1j1j1j1j1j1j1j#2j$2j1j1j1j1j1j1j1j1j1j1j1j1j5j5j'2j(2j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j1j=3j>3j1j1j55j65j1j2j2j2j1j1j2j2j2j2j 2j 2j 2j 2j 2j2j;1j<1j2j2j2j2j2j2j2j2j52j62j5j5j1j1j!2j"2j1j1jE3jF3j1j1j)2j*2j+2j,2j-2j.2j/2j02j12j22j32j42j2j2j72j82j92j:2j;2j<2j=2j>2j?2j@2jA2jB2jC2jD2jS7jT7jE2jF2jK3jL3j5j5jK2jL2jM2jN2jQ2jR2jS2jT2jU2jV2jW2jX2jY2jZ2j[2j\2j]2j^2j_2j`2ja2jb2jc2jd2je2jf2jg2jh2ji2jj2jk2jl2jm2jn2jo2jp2js2jt2ju2jv2jw2jx2jy2jz2j{2j|2j}2j~2j2j2j2j2j5j5j2j2j2j2j4j4j2j2j2j2j_4j`4j2j2j2j2j2j2j6j6j2j2j2j2j[3j\3j2j2j5j5j2j2j2j2j2j2j2j2je4jf4j2j2j5j5j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j2j5j5j2j2j2j2j2j2j2j2j2j2j5j5j2j2j2j2j2j2jq4jr4j2j2j2j2j2j2j5j5j2j2jc3jd3j2j2j2j2j2j2j2j2j2j3j3j3j3j3j3j3j3j3j 3j 3j 3j 3j 3j3jG7jH7j3j3j6j6j3j3j3j3j3j3jc1jd1j3j3j3j3j3j 3j!3j"3j#3j$3j%3j&3j1j1j1j1j+3j,3j/3j03j13j23j33j43j53j63jm3jn3j93j:3j;3j<3j1j1j?3j@3jA3jB3jC3jD3j%2j&2jG3jH3jI3jJ3jG2jH2jM3jN3j6j6jO3jP3jQ3jR3jS3jT3jU3jV3jW3jX3jY3jZ3j2j2j]3j^3j3j3j4j4ja3jb3j6j6j2j2je3jf3jg3jh3ji3jj3j5j5j73j83jo3jp3jq3jr3js3jt3ju3jv3jw3jx3j6j6jy3jz3j{3j|3j}3j~3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j5j5j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j5j5j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j%1j&1j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j3j4j4j4jm4jn4j4j4j5j5j 4j 4j 4j4j6j6j4j4j4j4j4j4j4j4j3j3j4j4j4j4j4j4j5j5j7j7j4j 4jA6jB6j!4j"4j#4j$4j0j0j'4j(4j)4j*4j5j5j-4j.4j/4j04j14j24j54j64j74j84j;4j<4j=4j>4j?4j@4j6j6jC4jD4jE4jF4jG4jH4j5j5j4j4jM4jN4jO4jP4jQ4jR4jS4jT4jU4jV4jW4jX4jY4jZ4j[4j\4j]4j^4j2j2ja4jb4jc4jd4j2j2jg4jh4ji4jj4j4j4jo4jp4j2j2js4jt4ju4jv4jw4jx4jy4jz4j{4j|4j}4j~4j6j6j4j4j4j4j4j4j6j6j4j4j4j4j_3j`3j4j4j4j4j4j4j4j4j4j4j4j4jy6jz6j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j5j5j{5j|5jK4jL4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j6j6j4j4j7j7j4j4j4j4j7j7j4j4j4j4j4j4j4j4j7j7j4j4j4j4j4j4j 6j 6j4j4j4j5j5j5j5j5j5j5j5j5j 5j 5j 5j 5j 5j5j5j5j5j5j5j5j5j5j5j5j5j5j6j6j5j 5j!5j"5j17j27j#5j$5j'5j(5j6j6j-5j.5j/5j05j15j25j35j45j 7j 7j75j85jC7jD7j;5j<5j=5j>5j?5j@5jA5jB5j0j0jE5jF5j 1j 1jK5jL5jM5jN5jO5jP5jS5jT5jU5jV5jY1jZ1jY5jZ5j[5j\5j_5j`5j1j1jc5jd5je5jf5ji5jj5jm5jn5jo5jp5js5jt5ju5jv5jw5jx5jy5jz5j2j2j}5j~5j5j5j5j5jI2jJ2j5j5j5j5j5j5j2j2j5j5j5j5j5j5j94j:4j%5j&5j3j3j3j3j2j2j5j5j5j5j]5j^5j2j2j5j5j5j5j5j5j5j5jq2jr2j5j5j5j5j5j5j5j5j5j5jk3jl3j-6j.6j5j5jQ5jR5j5j5j5j5j5j5j5j5j5j5j=7j>7j5j5j5j5j4j4j5j5j57j67j5j5jI4jJ4j5j5j2j2j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j5j4j4j 4j 4j5j5j5j5j5j6j+5j,5j6j6j6j6j6j6j4j4j 6j 6j 6j6j5j5j4j4j6j6j6j6j6j6j6j6j6j6j6j6j6j 6j!6j"6j#6j$6j%6j&6j'6j(6j)6j*6j+6j,6j2j2j/6j06j16j26j36j46j56j66j76j86j96j:6j;6j<6j?6j@6j+4j,4jC6jD6jE6jF6jI6jJ6jK6jL6jM6jN6jO6jP6jW7jX7jQ6jR6jS6jT6jU6jV6jW6jX6jY6jZ6j[6j\6j]6j^6j_6j`6ja6jb6jc6jd6je6jf6jg6jh6ji6jj6jk6jl6jm6jn6jo6jp6j 7j7jq6jr6js6jt6ju6jv6jw6jx6j5j5j{6j|6j+1j,1j6j6j6j6j3j3jI5jJ5j6j6j6j6j-3j.3j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j4j4j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6jk4jl4j6j6j6j6jg5jh5j6j6j6j6j6j6j6j6j6j6j5j5j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6jo7jp7j6j6j6j6j7j7j6j6j6j6jA4jB4j6j6j6j7j7j7jK7jL7jG6jH6j7j7j7j7jq5jr5j 7j 7j34j44j7j7j4j4j4j4j4j4j7j7j7j7j5j5j7j7j7j 7j!7j"7j#7j$7j%7j&7j5j5j)7j*7j+7j,7j-7j.7j/7j07j=6j>6j37j47j4j4j77j87j97j:7j;7j<7j5j5j?7j@7jA7jB7j5j5jE7jF7j71j81jI7jJ7jO2jP2jM7jN7jO7jP7jQ7jR7jk5jl5jU7jV7j6j6jY7jZ7j[7j\7j]7j^7j_7j`7ja7jb7jc7jd7je7jf7jg7jh7ji7jj7jk7jl7jm7jn7j6j6jq7jr7js7jt7ju7jv7j7j7jw7jx7j7j7j{7j|7j}7j~7j6j6jy7jz7j7j7j7j7uj7}r2U(j;j;j7j7j7j7j7j7j7j7j7j7j9j9j7j7j7j7j7j7j7j7j8j8j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j7j;j ;j7j7ja=jb=j7j7j7j7j7j7j7j7j:j:j7j7j7j7j%;j&;j7j7j8j8j7j7j7j7j7j7j7j7j7j7j7j7j;j;j7j7j7j7j:j:j7j7j7j7j7j7j7j7j7j7j);j*;j7j7j7j7j7j7j7j8j8j8j8j8j8j8je;jf;j8j8j 8j 8j 8j8j8j8j9j9j8j8j8j8j<j<j8j8jU=jV=j8j8jU<jV<j8j8j8j8j8j 8j!8j"8j#8j$8j%8j&8j'8j(8j'9j(9j)8j*8jY<jZ<j-8j.8j/8j08j18j28j38j48j58j68j78j88j98j:8j;8j<8j=8j>8j9j9j7j7jA8jB8jC8jD8jG8jH8jI8jJ8jK8jL8jM8jN8jg;jh;jO8jP8jQ8jR8jS8jT8j=j=jW8jX8jc<jd<j3;j4;j>j>j_8j`8jc8jd8j8j8jg8jh8jk8jl8j=j=jo8jp8jq8jr8js8jt8j=j=jw8jx8j<j<j{8j|8j}8j~8j8j8j=j=j8j8j8j8j8j8j=j=j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j9j9j8j8j8j8j8j8j8j8j=j=j8j8j8j8j7j7j8j8j8j8j>j>j7j7j8j8j8j8j8j8j 8j 8j8j8j8j8j+8j,8j8j8j8j8je8jf8jw<jx<j>j>j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j->j.>j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j8j<j<j8j8j8j8j8j9j9j9j9j9j9j9j9j9j 9j 9j=j=j 9j9j9j9j9j9j;j;j9j9j<j<j9j9jG>jH>j9j9j9j9j9j9j9j9j9j 9j;j;j!9j"9j#9j$9j%9j&9j:j:j_;j`;j+9j,9j-9j.9ja;jb;j19j29j39j49j59j69j79j89j>j>j99j:9j;9j<9j=9j>9j?9j@9jA9jB9jC9jD9jE9jF9jG9jH9jI9jJ9jK9jL9jO9jP9ji;jj;jS9jT9jU9jV9jW9jX9jY9jZ9j[9j\9j]9j^9j_9j`9ja9jb9jc9jd9je9jf9jg9jh9ji9jj9jk9jl9jm9jn9j7j7jo9jp9jq9jr9js9jt9ju9jv9jy9jz9j9j9j}9j~9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j):j*:j9j9j9j9j9j9j>j>j<j<j9j9j9j9j9j9j?=j@=j9j9j:j:j9j9ju;jv;j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9j9ju:jv:j9j9j;<j<<j9j9j9j9j<j<j9j9j9j9j9j9j9j9j9j9j 9j 9j9j9j9j9j=j=j9j9j7j7j9j9j9j9j9j9j9j9j9j9j9j9j8j8j9j9j?8j@8jK:jL:j9j:ju8jv8jg:jh:j:j:j:j:j:j:j :j :j :j :j :j:j:j:j:j:j:j:j:j:j:j:j:j:jS:jT:j:j:j:j :j!:j":jW:jX:j%:j&:j':j(:j=j=j;j;j+:j,:j-:j.:j/:j0:j=j=j3:j4:j5:j6:j7:j8:j_:j`:j;:j<:j=:j>:j?:j@:jA:jB:jE:jF:j:j:jG:jH:j9j9jI:jJ:jm=jn=jM:jN:jO:jP:j:j:jU:jV:j#:j$:jY:jZ:j[:j\:j]:j^:j]8j^8ja:jb:jc:jd:je:jf:j:j:ji:jj:jk:jl:j/;j0;jm:jn:jo:jp:jq:jr:ji=jj=j=j>jw:jx:jy:jz:j{:j|:j}:j~:j:j:j:j:j7;j8;jA;jB;jO;jP;j:j:j:j:j:j:j:j:j:j:j:j:j:j:j:j:j:j:j:j:j:j:j:j:j:j:j:j:j:j:j:j:j>j>j:j:j:j:j:j:j:j:j:j:j:j:j:j:j:j:j:j:j8j8j:j:j:j:j:j:j:j:j:j:j:j:j:j:j:j:j<j<j:j:j:j:j:j:j<j<j:j:j:j:j:j:j:j:j:j:j;=j<=j:j:j<j<j:j:j:j:j:j:j:j:j:j:j:j:j:j:j:j:j:j:j;j;j;j;j;j;jA>jB>j ;j ;j ;j ;j ;j;j;j;j;j;j;j;j;j;j7j7j;j;j;j;j;j;j7j7j!;j";j#;j$;j>j>j';j(;j7j7j+;j,;j-;j.;jQ:jR:j[8j\8j5;j6;ji8jj8j9;j:;j;;j<;j?;j@;j8j8jC;jD;jE;jF;jG;jH;jk=jl=jK;jL;jM;jN;jQ;jR;jS;jT;jU;jV;jW;jX;jY;jZ;j[;j\;j];j^;j)9j*9j/9j09jc;jd;j9>j:>j:j:jQ9jR9j#>j$>jm;jn;j5<j6<jo;jp;jq;jr;j;j;js;jt;j;j;jw;jx;jy;jz;j<j<j'>j(>j};j~;j;j;j;j;j;j;j;j;j;j;j;j;j;j;j;j;j;j;j;j;j;j;j;j;j;j;j;j;j;j;j;j;j7j7j;j;j;j;j;j;j;j;j;j;j;j;j;j;j=j=j;j;j;j;j;j;j;j;j;j;jA<jB<j;j;j;j;j;j;j;j;j;j;j;j;j;j;j;j;j;j;j#=j$=j;j;j;j;j;j;j;j;j;j;j;j;j;j;j;j;j;j;j;j;j;j;j;j;j;j;j;j;j=j=j;j;jQ<jR<j;j;j;j;j;j;j;j;j;j<j<j<j<j<j<j<j <j <j <j <j <j<j<j<j<j<j<j<j<j<j<j<j<j<j=j=j<j<j<j <jK>jL>j#<j$<j'<j(<j)<j*<j+<j,<j-<j.<j/<j0<j1<j2<j3<j4<jm>jn>j=j=j7<j8<j9<j:<jo<jp<j=<j><j?<j@<jC<jD<jE<jF<jG<jH<jI<jJ<jK<jL<jM<jN<jO<jP<j=j=jS<jT<j=j=jW<jX<jg>jh>j=j =j]<j^<j8j8j_<j`<ja<jb<jY8jZ8je<jf<jg<jh<ji<jj<jk<jl<jm<jn<js<jt<ju<jv<j8j8jy<jz<j{<j|<j}<j~<j<j<j<j<j<j<j<j<j<j<j=j=j<j<j<j<j<j<j<j<j<j<j<j<j<j<j<j<jw9jx9j<j<j_=j`=j:j:j=j=j<j<j<j<j<j<j<j<j<j<jI;jJ;j5=j6=j<j<j<j<j<j<j<j<j<j<j<j<j<j<j<j<j<j<j<j<j<j<jy8jz8j:j:j<j<j<j<je>jf>j<j<j/=j0=j<j<j<j<j<j<j<j<j<j<j<j<j<j<jE8jF8j<j<j<j<j9j9j3=j4=j<j<j<j<j<j<j<j<j<j<j<j<j<j<j<j<j<j=j=j=j=j=j =j =j =j =j =j=j=j=j=j=j=j=j8j8j=j=j=j=j=j=js:jt:j:j:j[<j\<js>jt>j!=j"=j8j8j%=j&=j'=j(=j)=j*=j+=j,=j-=j.=j<j<j1=j2=j<j<j:j:j7=j8=j>j>j==j>=jA=jB=j=;j>;jC=jD=jE=jF=jG=jH=jI=jJ=jK=jL=j9j9jM=jN=jO=jP=jQ=jR=jS=jT=j9j9jW=jX=jY=jZ=j[=j\=j]=j^=j=j=jc=jd=j{9j|9je=jf=jg=jh=jS>jT>j]>j^>j_>j`>jo=jp=jq=jr=js=jt=ju=jv=jw=jx=jy=jz=j{=j|=j}=j~=j=j=j7j7j=j=j=j=j=j=j=j=j<j<j=j=ja8jb8j=j=j=j=j=j=j=j=j=j=j>j>j=j=jC:jD:jU8jV8j=j=j>j>jm8jn8jM>jN>j=j=j>j>j8j8j=j=j=j=j>j>j=j=j=j=j=j=j=j=j>j>j=j=j=j=j=j=j8j8j=j=j9j9j=j=j=j=j=j=j=j=j=j=j=j=j=j=j=j=j=j=j=j=j>j>j=j=j=j=j9j9j=j=j=j=j9j9j=j=j=j=j=j=j<j<j8j8j=j=j=j=j;j;j=j=j>j>j>j>j>j>j:j:j >j >j >j >j!<j"<j>j>j>j>j>j>j9=j:=j>j>j>j>j>j>j>j>j>j>j>j >j!>j">jk;jl;j%>j&>j{;j|;j)>j*>j+>j,>jM9jN9j/>j0>j1>j2>j3>j4>j5>j6>j7>j8>j;j;j;>j<>j=>j>>j?>j@>j=j=jC>jD>jE>jF>j9j9jI>jJ>j9:j::jO>jP>jQ>jR>j1:j2:jU>jV>jW>jX>jY>jZ>j[>j\>j<j<j>j>ja>jb>jc>jd>j<j<ji>jj>jk>jl>j=j=jo>jp>jq>jr>j%<j&<ju>jv>jw>jx>jy>jz>j{>j|>j}>j~>j>j>j>j>j>j>j>j>j8j8j>j>j>j>j>j>j=j=j1;j2;j=j=j8j8j=j=j>j>j>j>j>j>j >j>j:j;j>j>j>j>j>j>j>j>j>j>jq<jr<j>j>j>j>j>j>j;j;j>j>j>j>j>j>j>j>j>j>j>j>uj>}r3U(j>j>j>j>jO?jP?j>j>j>j>j>j>j>j>j>j>j>j>j>j>j>j>j>j>j>j>j>j?jW?jX?j?j?jY?jZ?j ?j ?j?j?j?j?j?j?j?j?j%?j&?j'?j(?j+?j,?j-?j.?j/?j0?j5?j6?j=?j>?j??j@?jG?jH?jI?jJ?j?j ?jU?jV?j>j>j?j?j]?j^?j_?j`?ja?jb?jc?jd?jm?jn?jo?jp?js?jt?ju?jv?jw?jx?j{?j|?j?j?j?j?j?j?j?j?j>j>j>j>j?j?j3?j4?j>j>jK?jL?j>j>j>j>j>j>j>j>j>j>j>j>j?j?j?j?j?j?j ?j ?j ?j?j?j?j?j?jM?jN?j!?j"?j#?j$?j)?j*?j1?j2?j>j>jk?jl?j7?j8?j9?j:?j;?jj>j?j?jS?jT?j[?j\?jy?jz?jC?jD?je?jf?jg?jh?ji?jj?j>j>jq?jr?j?j?j}?j~?jQ?jR?j?j?j?j?uj?}r4U(j?j?j?j?j?j?j?j?j?j?j?j?j?j?j?j?j?j?j?j?jIjIj?j?j?j?j?j?jKjKj?j?j?j?j?j?j?j?j?j?j?j?j?j?j?j?j?j?j?j@j@j@j@j@j@j@j @j @j!@j"@j#@j$@j+@j,@j1@j2@j5@j6@j7@j8@j;@j<@j=@j>@j?@j@@jA@jB@jC@jD@jE@jF@jG@jH@jI@jJ@jK@jL@jO@jP@jQ@jR@jW@jX@jY@jZ@jc@jd@je@jf@jg@jh@jDjDjo@jp@jq@jr@js@jt@ju@jv@jw@jx@j}@j~@j@j@j@j@j@j@j@j@j@j@j@j@j@j@j@j@j@j@j@j@j@j@j@j@j@j@j@j@j@j@j@j@j@j@jBjBj@j@j@j@j@j@j@j@jDjDj?j?j@j@j@j@jDjDj@j@j@j@j@j@j@j@j@j@jAjAjAjAj Aj AjAjAjAjAjAjAjAjAj#Aj$Aj%Aj&Aj)Aj*Aj3Aj4AjDjDjeLjfLj=Aj>AjEAjFAjIAjJAjOAjPAjQAjRAjSAjTAjUAjVAjYAjZAjcAjdAjeAjfAjgAjhAjmAjnAjoAjpAjqAjrAjuAjvAj{Aj|AjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjAjDjDjAjAjAjAjAjAjAjAjAjAjAjAjAjBjBjBj Bj Bj Bj BjBjBjBjBjBjBjBjBj#Bj$Bj%Bj&Bj)Bj*Bj+Bj,Bj1Bj2BjCjCj9Bj:BjABjBBjCBjDBjGBjHBjIBjJBjMBjNBjSBjTBjWBjXBjYBjZBj[Bj\Bj]Bj^Bj_Bj`BjkBjlBjmBjnBjoBjpBjyBjzBj{Bj|BjBjBjBjBjBjBjBjBjBjBjBjBjBjBjBjBjBjBjBjBj5Jj6JjBjBjBjBjBjBjCjCjBjBjBjBjBjBjBjBjBjBjBjBjBjBjBjBjBjBjBjBjBjBjBjBjBjBjBjBjBjBjBjBjBjBjBjBjBjBjBjBjBjBjCjCj Cj Cj CjCjCjCjCjCjCjCjCjCjCj Cj)Cj*Cj5Cj6Cj=Cj>Cj?Cj@CjCCjDCjECjFCjICjJCjKCjLCjOCjPCjUCjVCj]Cj^Cj3Ej4EjaCjbCjeCjfCj5Ej6EjiCjjCjYJjZJjmCjnCjoCjpCjqCjrCjuCjvCjwCjxCjyCjzCjCjCjGjGjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjkJjlJjCjCjmJjnJjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjCjDjDjDjDjDjDjDjDjDjDjDjDjDjDj Dj#Dj$Dj'Dj(Dj)Dj*Dj-Dj.Dj/Dj0Dj3Dj4Dj9Dj:DjgEjhEjGDjHDjKDjLDjQDjRDjUDjVDjoEjpEj]Dj^Dj_Dj`DjiDjjDjkDjlDjoDjpDjqDjrDjuDjvDj[@j\@jyDjzDj{Dj|Dj}Dj~DjDjDjDjDjDjDjMjMjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjEjEjDjDjDjDji@jj@jDjDjAEjBEjDjDj@j@jDjDjDjDjDjDjDjDjDjDjDjDjDjDjEjEjDjEjEjEjEjEjEjEjEjEj#Ej$Ej'Ej(Ej)Ej*Ej+Ej,Ej-Ej.Ej/Ej0Ej1Ej2Ej_Cj`Cj9Ej:EjCjCjCEjDEjEEjFEjIEjJEjJjJjOEjPEjUEjVEjWEjXEjYEjZEj_Ej`EjaEjbEj?Dj@DjiEjjEjkEjlEjmEjnEjyEjzEj{Ej|Ej}Ej~EjDjDjEjEjEjEjEjEjEjEjEjEjEjEjEjEjEjEjEjEjEjEjEjEjEjEjEjEjEjEjEjEjJjJjEjEj!Jj"JjEjEjEjEjEjEjEjEjEjEjJjJjEjEjEjFjFjFjFjFj Fj FjFjFjFjFjFjFjFjFjFj Fj!Fj"Fj+Fj,Fj3Fj4Fj7Fj8FjJjJjAFjBFjCFjDFj@j@jGFjHFjIFjJFjKFjLFjMFjNFjUFjVFjWFjXFjYFjZFjGjGjaFjbFjkFjlFjqFjrFjsFjtFjwFjxFjJjJj{Fj|Fj}Fj~FjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjEjEjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjFjGjGjGj Gj GjGjGjGjGjGjGjGjGjGj Gj!Gj"Gj%Gj&Gj'Gj(Gj)Gj*Gj+Gj,GjJjJj/Gj0Gj1Gj2Gj5Gj6Gj9Gj:Gj;GjHj?Hj@HjAHjBHjEHjFHjGHjHHjKHjLHjAjAjQHjRHjWHjXHj[Hj\Hj]Hj^Hj_Hj`HjaHjbHjcHjdHjeHjfHjgHjhHjiHjjHjoHjpHjwHjxHjyHjzHj{Hj|Hj}Hj~HjHjHjHjHjHjHjHjHjHjHjHjHjHjHjGJjHJjHjHjHjHjHjHjHjHjHjHjHjHjHjHjHjHjHjHjHjHjHjHjHjHjHjHjHjHjHjHjHjHjHjHjHjHjHjHjHjHjHjHjHjHjHjHjHjHjHjHjHjHjHjHjHjHjHjHjKKjLKjIjIj1Fj2Fj IjIjIjIjIjIjIjIj%Ij&Ij'Ij(Ij+Ij,Ij-Ij.Ij/Ij0Ij3Ij4Ij9Ij:Ij;IjIj?Ij@IjAIjBIjGIjHIjIIjJIjKIjLIjMIjNIjOIjPIjQIjRIjUIjVIj[Ij\Ij]Ij^Ij_Ij`IjaIjbIjUKjVKj9Nj:NjeIjfIjgIjhIjkIjlIjoIjpIjqIjrIjwIjxIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjeKjfKjIjIjIjIjIjIjIjIjIjIj?j?jIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjKjKjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjIjuKjvKjJjJjJjJjJjJj JjJjJjJjJjJjJjJjJj Jj=Bj>Bj%Jj&Jj'Jj(Jj)Jj*Jj+Jj,JjBjBj7Jj8Jj;JjJjeFjfFjAJjBJjEjEjIJjJJjKJjLJjOJjPJjQJjRJjSJjTJjkCjlCj[Jj\Jj]Jj^JjeJjfJjgJjhJjCjCjCjCjoJjpJjwJjxJj{Jj|JjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjJjKjKjJjJjJjJjJjJjJjJjJjJjEjEjJjJjEjEjJjJjJjJj=Fj>FjJjJjJjJjJjJjyFjzFjJjJjJjJjAjAj-Gj.GjmHjnHj Kj Kj KjKjFjFjKjKjKjKjKj Kj%Kj&Kj-Kj.Kj/Kj0Kj3Kj4KjKjKjKjKjAKjBKjCKjDKjEKjFKjHjIjMKjNKjOKjPKjFjFjSKjTKjcIjdIjYKjZKj[Kj\Kj]Kj^KjAjAjIjIjgKjhKjiKjjKjmKjnKjqKjrKjsKjtKjKjKjKjKjKjKjKjKjJjJjAjAjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjuMjvMjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjFjFjKjKjKjKjKjKjKjKj LjLjLjLjLjLjLjLjLjLjLjLj#Lj$Lj%Lj&Lj)Lj*Lj-Lj.Lj/Lj0Lj3Lj4Lj7Lj8Lj9Lj:Lj=Lj>Lj?Lj@LjALjBLjCLjDLjELjFLjKLjLLjMLjNLjOLjPLjQLjRLjSLjTLjFjFj_Lj`LjaLjbLjcLjdLj@j@jgLjhLjmLjnLjoLjpLjqLjrLjuLjvLj{Lj|Lj}Lj~LjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjFjFjFjFjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjLjMjMjMjMjMjMj Mj MjMjMjMjMjMjMjMjMjMjMjMj Mj%Mj&Mj'Mj(MjAjAj-Mj.Mj/Mj0Mj9Mj:Mj=Mj>Mj5Mj6MjEMjFMjGMjHMjOMjPMjQMjRMjUMjVMjWMjXMj_Mj`MjaMjbMjgMjhMjiMjjMjAjAjsMjtMjGjGj{Mj|Mj}Mj~MjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjMjNjNj Nj Nj NjNjNjNjNjNjNjNjNjNj'Nj(Nj+Nj,Nj-Nj.Nj3Nj4NjLjLj;NjNjCNjDNjGNjHNjINjJNjONjPNjQNjRNj[Nj\Nj]Nj^NjeNjfNjkNjlNjmNjnNjoNjpNjuNjvNjyNjzNjLjLjNjNjNjNjNjNjNjNjNjNjNjNj?j?j?j?j?j?j?j?j?j?j?j?jCGjDGj?j?j?j?j?j?jJjJj?j?jDjDj?j?j@j@j@j@j?j?jJjJj?j?j?j?j?j?j?j?jAjAj?j?j?j?j?j?j?j?j?j?u(j?j?j?j?joFjpFjBjBj-@j.@jBjBjHjHjWGjXGj@j@j@j@j@j@j@j@j@j@j@j @j%@j&@j)@j*@jCjCj/@j0@jCjCj9@j:@jCjCjqBjrBjDjDjiAjjAj!Dj"Dj@j@jS@jT@jU@jV@jWLjXLjMCjNCjwDjxDj_@j`@ja@jb@jDjDjm@jn@jDjDj{@j|@j@j@j_Gj`Gj@j@j@j@jEjEj@j@j?j?j@j@j@j@jiBjjBjEjEj@j@j@j@j@j@jFjFj@j@j@j@jEFjFFj@j@j@j@jFjFj@j@jGjGj@j@j@j@j@j@j@j@jGjGjoGjpGj@jAjAjAj Aj Aj AjAjAjAjHjHjAjAjGjGjAj Aj!Aj"Aj'Aj(Aj-Aj.Aj1Aj2Aj5Aj6Aj9Aj:Aj?Aj@AjGAjHAjKAjLAjIjIjIjIjWAjXAj]Aj^Aj_Aj`AjaAjbAj7Kj8KjkAjlAjqJjrJjyJjzJjsAjtAjJjJjwAjxAjyAjzAjJjJj@j@jJjJjAjAjaKjbKjAjAjAjAjKjKjAjAjAjAjAjAjAjAjLjLjAjAjAjAjAjAjAjAjAjAjCjCj@j@jLjLjLjLjAjAjAjAjAjAjAjAjMjMj+Mj,MjAjAjAjAjAjAjAjAjqMjrMjYNjZNjBjBjBjBjBjBjMjMjBjBjMjMjBjBjBj Bj!Bj"Bj1Nj2Nj-Bj.Bj/Bj0Bj3Bj4Bj7Bj8Bj;BjKjDjDjANjBNjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjDjGjGjDjDjDjDjDjDjDjDjsDjtDjHjHjDjDjDjDjDjDjDjDj BjBj@j@j@j@jDjDj7Aj8AjDjDjDjDj}Aj~AjDjDjDjDjCAjDAjEjEj Ej Ej Ej EjMjMjEjEjEjEjEjEjEjEjEj Ej!Ej"EjcEjdEj?j?jHjHj=Ej>Ej_Kj`KjGEjHEjAjAjMEjNEjQEjREjSEjTEj[Ej\Ej]Ej^EjeEjfEjYDjZDjqEjrEjcDjdDjHjHjEjEjJjJjEjEjEjEjEjEjDjDjEjEjEjEjEjEjEjEjEjEjEjEj3@j4@jEjEjEjEjEjEjEjEjEjEjEjEjEjEjEjEjEjEjEjEj7Ej8EjCjCjEjEjEjEjEjEjEjEjEjEjEjEjEjEjEjEjSHjTHjGjGjGjGjEjEjEjEj Fj Fj FjFjFjFjFjFjFjFjBjBj[Fj\Fj7Mj8Mj%Fj&FjHjHj)Fj*Fj-Fj.Fj/Fj0Fj Ij Ij9Fj:Fj;FjGj?j?jEGjFGjGGjHGjKGjLGjGjGj@j@jYGjZGj@j@jaGjbGjCjCjJjJjAjAjwGjxGjyGjzGjAAjBAjEDjFDjGjGjwMjxMjGjGjk@jl@jLjMjKBjLBjGjGjWKjXKjgBjhBjGjGjFjFj@j@jGjGjBjBjGjGjCjCj)Kj*KjGjGjGjGjGjGjGjGjGjGjGjGjGjGj1Jj2JjGjGjMjMjGjGjGjGjGjGjCjCjMjMjGjGj DjDjGjGj'Bj(BjHjHjHjHj=Dj>DjHjHjHjHjDjDj!Hj"Hj%Hj&Hj'Hj(Hj)Hj*Hj+Hj,Hj;EjPj'Oj(Oj+Oj,Oj/Oj0Oj1Oj2Oj3Oj4Oj5Oj6OjQjQj9Oj:Oj;OjOj?Oj@OjAOjBOjCOjDOjEOjFOjGOjHOjIOjJOjKOjLOjMOjNOjOOjPOj[Oj\OjRjRjQOjROjSOjTOjQjQjWOjXOjSRjTRjPjPjIRjJRj]Oj^Oj_Oj`OjaOjbOjcOjdOjeOjfOjgOjhOjRjRjmOjnOjqOjrOjsOjtOjuOjvOjwOjxOjyOjzOj{Oj|Oj}Oj~OjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjSjSjOjOjRjRjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjSjSjRjRjOjOjOjOjOjOjOjOjOjOjOjOjOjOjPjPj]Qj^QjOjOjOjOjOjOjOjOjOjOjOjOjPjPjOjOjOjOjSjSjOjOjOjOjOjOjOjOjSjTjSjSjOjOjOjOjRjRjPjPjOjOjOjPjPjPjPjPjPjPjPjPj Pj PjQjRjSjSjPjPjPjPjPjPjRjRjTjTjSjSjPjPjPjPjPj Pj!Pj"Pj#Pj$Pj%Pj&Pj'Pj(Pj)Pj*Pj+Pj,Pj-Pj.Pj;SjQj?Qj@QjCQjDQjEQjFQj5Tj6TjQjQjKQjLQj-Rj.RjOQjPQjQQjRQjSQjTQjUQjVQjWQjXQjYQjZQj[Qj\QjRjRj_Qj`QjaQjbQjcQjdQjeQjfQjgQjhQjiQjjQj Sj SjmQjnQjSjSjqQjrQjsQjtQjuQjvQjQjQjyQjzQj{Qj|QjRjRjQjQjQjQjQjQj5Pj6PjQjQjQjQjQjQj;RjRjQjQjARjBRjQjQjGRjHRjQjQjKRjLRjQjQjORjPRjQRjRRjSjSjURjVRjWRjXRjYRjZRj[Rj\Rj]Rj^Rj_Rj`RjaRjbRjcRjdRjeRjfRjGTjHTjgRjhRjiRjjRjkRjlRjmRjnRjoRjpRjsRjtRjuRjvRjwRjxRjyRjzRj{Rj|Rj}Rj~RjRjRjwSjxSj_Tj`TjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRj}Sj~SjRjRjRjRjcTjdTjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjRjmTjnTjRjRjRjRjRjRjRjRjRjRjeTjfTjRjRjRjRjRjRjNjNjRjRj OjOjRjRjRjRjOjOjRjRjSjSjRjRjRjRjRjRjiOjjOjRjRjRjRjRjRjRjRjRjRjRjRjRjRj Oj OjOjOjNjNjOjOjRjRjRjRjRjSjSjSjSjSj PjPjPjPj Sj Sj SjSjYPjZPjSjSjOjOjSjSjSjSjuTjvTjSjSjSjSjSj Sj!Sj"SjwTjxTj%Sj&Sj'Sj(Sj)Sj*Sj+Sj,SjyTjzTj/Sj0Sj1Sj2Sj3Sj4SjPjPj7Sj8Sj9Sj:SjISjJSj=Sj>Sj?Sj@SjNjNjCSjDSjESjFSjGSjHSjKSjLSjSjSjMSjNSjOSjPSjQSjRSjSSjTSjWSjXSjYSjZSjQjQj]Sj^SjwQjxQj_Sj`SjQjQjcSjdSjeSjfSjgSjhSjiSjjSjkSjlSjSjSjmSjnSjoSjpSjqSjrSjqRjrRjuSjvSjRjRjySjzSj{Sj|SjRjRj/Rj0RjSjSjSjSjSjSjSjSjSjSjSjSjSjSjSjSjSjSjSjSjSjSjSjSjSjSjSjSjSjSjSjSjSjSjSjSjOjOjSjSjSjSjSjSjSjSjSjSjSjSjOjOjSjSjSjSjSjSjSjSjSjSjSjSjSjSjSjSjSjSjSjSjSjSjSjSjSjSjSjSjTj TjSjSjSjSjSjSjSjSjSjSjSjSjSjSjSjSjSjSjSjSjCRjDRjSjSjSjSjOjOjSjSjSjSjSjSjOjOjOjOjOjOjTjTjTjTjTjTjTjTj Tj Tj Tj Tj TjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTj#Tj$TjTjTjTjTj'Tj(Tj!Tj"Tj+Tj,Tj-Tj.Tj/Tj0Tj1Tj2Tj3Tj4TjGQjHQj7Tj8Tj9Tj:Tj;TjTj?Tj@TjATjBTjCTjDTjETjFTjQjQjITjJTjKTjLTjMTjNTjOTjPTjQTjRTjSTjTTjoOjpOjWTjXTjYTjZTj[Tj\Tj]Tj^TjAQjBQjaTjbTjRjRjRjRjTjTjiTjjTjkTjlTjNjNjoTjpTjqTjrTjsTjtTjSjSj#Sj$Sj-Sj.Sj{Tj|TjUSjVSjTjTjTjTjTjTjkOjlOjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjIQjJQjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjTjgTjhTjTjTjTjTjTjTjTjTjTjTjNjNjTjTjTjTuusUmetadatar7U}r8U(h}h$}h-}h6}h?}hH}hQ}hZ}hc}hl}hu}h~}h}h}h}h}h}h}h}h}h}h}h}j}j}j&}j/}j8}jI}jR}j[}jd}jm}j~}j}j}j}j}j}j}j}uUversionchangesr9U}Utoc_num_entriesr:U}r;U(hKh$Kh-Kh6Kh?KhHKhQKhZKhcK*hlKhuKh~KhKhKhKhKhKhKhKhKhKhKhKjKjKj&Kj/K j8KjIKjRKj[KjdKjmKj~KjKjKjKjKjKjKjKuUimagesrUbUnumbered_toctreesr?Uh]Rr@UU found_docsrAUh]rBU(hh$h-h6h?hHhQhZhchlhuh~hhhhhhhhhhhjjj&j/j8jIjRj[jdjmj~jjjjjjjeRrCUU longtitlesrDU}rEU(hhh$h%h-h.h6h7h?h@hHhIhQhRhZh[hchdhlhmhuhvh~hhhhhhhhhhhhhhhhhhhhhhhjjjjj&j'j/j0j8j9jIjJjRjSj[j\jdjejmjnj~jjjjjjjjjjjjjjjuU dependenciesrFU}rGU(hh]rHU(X#examples/code/gas_station_refuel.pyrIUX$examples/code/gas_station_refuel.outrJUeRrKUjRh]rLU(Xexamples/code/machine_shop.outrMUXexamples/code/machine_shop.pyrNUeRrOUhh]rPUU../simpy/util.pyrQUaRrRUhh]rSU(X&examples/code/process_communication.pyrTUX'examples/code/process_communication.outrUUeRrVUjmh]rWUU../simpy/resources/resource.pyrXUaRrYUjh]rZUU../simpy/resources/container.pyr[UaRr\Uj~h]r]U(Xexamples/code/carwash.pyr^UXexamples/code/carwash.outr_UeRr`Ujh]raUU../simpy/core.pyrbUaRrcUjh]rdUU../simpy/resources/store.pyreUaRrfUjh]rgU(Xexamples/code/latency.pyrhUXexamples/code/latency.outriUeRrjUjh]rkUU../simpy/resources/base.pyrlUaRrmUjh]rnUU../simpy/resources/__init__.pyroUaRrpUhh]rqU(Xexamples/code/bank_renege.outrrUXexamples/code/bank_renege.pyrsUeRrtUj8h]ruUU../simpy/__init__.pyrvUaRrwUhHh]rxU(Xexamples/code/movie_renege.pyryUXexamples/code/movie_renege.outrzUeRr{Uhh]r|UU../simpy/monitoring.pyr}UaRr~Uhh]rUU../simpy/events.pyrUaRrUjh]rUU../simpy/rt.pyrUaRrUuUtoctree_includesrU}rU(j&]rU(Xtopical_guides/simpy_basicsrUXtopical_guides/environmentsrUXtopical_guides/eventsrUX"topical_guides/process_interactionrUX"topical_guides/porting_from_simpy2rUeh6]rU(Xsimpy_intro/installationrUXsimpy_intro/basic_conceptsrUXsimpy_intro/process_interactionrUXsimpy_intro/shared_resourcesrUXsimpy_intro/how_to_proceedrUej/]rU(Xexamples/bank_renegerUXexamples/carwashrUXexamples/machine_shoprUXexamples/movie_renegerUXexamples/gas_station_refuelrUXexamples/process_communicationrUXexamples/latencyrUej[]rU(Xapi_reference/simpyrUXapi_reference/simpy.corerUXapi_reference/simpy.eventsrUXapi_reference/simpy.monitoringrUXapi_reference/simpy.resourcesrUX"api_reference/simpy.resources.baserUX'api_reference/simpy.resources.containerrUX&api_reference/simpy.resources.resourcerUX#api_reference/simpy.resources.storerUXapi_reference/simpy.rtrUXapi_reference/simpy.utilrUehQ]rU(X about/historyrUXabout/acknowledgementsrUX about/portsrUXabout/defense_of_designrUXabout/release_processrUX about/licenserUehZ]rU(XindexrUXsimpy_intro/indexrUXtopical_guides/indexrUXexamples/indexrUXapi_reference/indexrUX about/indexrUeuU temp_datarU}UtocsrU}rU(hcdocutils.nodes bullet_list rU)rU}rU(hUh}rU(h]h]h]h]h]uh]rUcdocutils.nodes list_item rU)rU}rU(hUh}rU(h]h]h]h]h]uh!jUh]rUcsphinx.addnodes compact_paragraph rU)rU}rU(hUh}rU(h]h]h]h]h]uh!jUh]rUcdocutils.nodes reference rU)rU}rU(hUh}rU(U anchornameUUrefurihh]h]h]h]h]Uinternaluh!jUh]rUhXPortsrUrU}rU(hh h!jUubah"U referencerUubah"Ucompact_paragraphrUubah"U list_itemrUubah"U bullet_listrUubh$jU)rU}rU(hUh}rU(h]h]h]h]h]uh]rUjU)rU}rU(hUh}rU(h]h]h]h]h]uh!jUh]rU(jU)rU}rU(hUh}rU(h]h]h]h]h]uh!jUh]rUjU)rU}rU(hUh}rU(U anchornameUUrefurih$h]h]h]h]h]Uinternaluh!jUh]rUhXEventsrUrU}rU(hh,h!jUubah"jUubah"jUubjU)rU}rU(hUh}rU(h]h]h]h]h]uh!jUh]rU(jU)rU}rU(hUh}rU(h]h]h]h]h]uh!jUh]rU(jU)rU}rU(hUh}rU(h]h]h]h]h]uh!jUh]rUjU)rU}rU(hUh}rU(U anchornameU #event-basicsUrefurih$h]h]h]h]h]Uinternaluh!jUh]rUhX Event basicsrUrU}rU(hX Event basicsrUh!jUubah"jUubah"jUubjU)rU}rU(hUh}rU(h]h]h]h]h]uh!jUh]rU(jU)rU}rU(hUh}rV(h]h]h]h]h]uh!jUh]rVjU)rV}rV(hUh}rV(h]h]h]h]h]uh!jUh]rVjU)rV}rV(hUh}rV(U anchornameU#adding-callbacks-to-an-eventUrefurih$h]h]h]h]h]Uinternaluh!jVh]r VhXAdding callbacks to an eventr Vr V}r V(hXAdding callbacks to an eventr Vh!jVubah"jUubah"jUubah"jUubjU)rV}rV(hUh}rV(h]h]h]h]h]uh!jUh]rVjU)rV}rV(hUh}rV(h]h]h]h]h]uh!jVh]rVjU)rV}rV(hUh}rV(U anchornameU#triggering-eventsUrefurih$h]h]h]h]h]Uinternaluh!jVh]rVhXTriggering eventsrVrV}rV(hXTriggering eventsrVh!jVubah"jUubah"jUubah"jUubeh"jUubeh"jUubjU)rV}rV(hUh}r V(h]h]h]h]h]uh!jUh]r!VjU)r"V}r#V(hUh}r$V(h]h]h]h]h]uh!jVh]r%VjU)r&V}r'V(hUh}r(V(U anchornameU#example-usages-for-eventUrefurih$h]h]h]h]h]Uinternaluh!j"Vh]r)V(hXExample usages for r*Vr+V}r,V(hXExample usages for r-Vh!j&Vubh)r.V}r/V(hX ``Event``r0Vh}r1V(h]h]h]h]h]uh!j&Vh]r2VhXEventr3Vr4V}r5V(hUh!j.Vubah"hubeh"jUubah"jUubah"jUubjU)r6V}r7V(hUh}r8V(h]h]h]h]h]uh!jUh]r9VjU)r:V}r;V(hUh}rV}r?V(hUh}r@V(U anchornameU#let-time-pass-by-the-timeoutUrefurih$h]h]h]h]h]Uinternaluh!j:Vh]rAV(hXLet time pass by: the rBVrCV}rDV(hXLet time pass by: the rEVh!j>Vubh)rFV}rGV(hX ``Timeout``rHVh}rIV(h]h]h]h]h]uh!j>Vh]rJVhXTimeoutrKVrLV}rMV(hUh!jFVubah"hubeh"jUubah"jUubah"jUubjU)rNV}rOV(hUh}rPV(h]h]h]h]h]uh!jUh]rQVjU)rRV}rSV(hUh}rTV(h]h]h]h]h]uh!jNVh]rUVjU)rVV}rWV(hUh}rXV(U anchornameU#processes-are-events-tooUrefurih$h]h]h]h]h]Uinternaluh!jRVh]rYVhXProcesses are events, toorZVr[V}r\V(hXProcesses are events, toor]Vh!jVVubah"jUubah"jUubah"jUubjU)r^V}r_V(hUh}r`V(h]h]h]h]h]uh!jUh]raVjU)rbV}rcV(hUh}rdV(h]h]h]h]h]uh!j^Vh]reVjU)rfV}rgV(hUh}rhV(U anchornameU$#waiting-for-multiple-events-at-onceUrefurih$h]h]h]h]h]Uinternaluh!jbVh]riVhX#Waiting for multiple events at oncerjVrkV}rlV(hX#Waiting for multiple events at oncermVh!jfVubah"jUubah"jUubah"jUubeh"jUubeh"jUubah"jUubh-jU)rnV}roV(hUh}rpV(h]h]h]h]h]uh]rqVjU)rrV}rsV(hUh}rtV(h]h]h]h]h]uh!jnVh]ruVjU)rvV}rwV(hUh}rxV(h]h]h]h]h]uh!jrVh]ryVjU)rzV}r{V(hUh}r|V(U anchornameUUrefurih-h]h]h]h]h]Uinternaluh!jvVh]r}VhXHow to Proceedr~VrV}rV(hh5h!jzVubah"jUubah"jUubah"jUubah"jUubh6jU)rV}rV(hUh}rV(h]h]h]h]h]uh]rVjU)rV}rV(hUh}rV(h]h]h]h]h]uh!jVh]rV(jU)rV}rV(hUh}rV(h]h]h]h]h]uh!jVh]rVjU)rV}rV(hUh}rV(U anchornameUUrefurih6h]h]h]h]h]Uinternaluh!jVh]rVhXSimPy in 10 MinutesrVrV}rV(hh>h!jVubah"jUubah"jUubjU)rV}rV(hUh}rV(h]h]h]h]h]uh!jVh]rVcsphinx.addnodes toctree rV)rV}rV(hUh}rV(UnumberedKUparenth6U titlesonlyUglobh]h]h]h]h]Uentries]rV(NjUrVNjUrVNjUrVNjUrVNjUrVeUhiddenUmaxdepthKU includefiles]rV(jUjUjUjUjUeU includehiddenuh!jVh]h"UtoctreerVubah"jUubeh"jUubah"jUubh?jU)rV}rV(hUh}rV(h]h]h]h]h]uh]rVjU)rV}rV(hUh}rV(h]h]h]h]h]uh!jVh]rV(jU)rV}rV(hUh}rV(h]h]h]h]h]uh!jVh]rVjU)rV}rV(hUh}rV(U anchornameUUrefurih?h]h]h]h]h]Uinternaluh!jVh]rVhXProcess InteractionrVrV}rV(hhGh!jVubah"jUubah"jUubjU)rV}rV(hUh}rV(h]h]h]h]h]uh!jVh]rV(jU)rV}rV(hUh}rV(h]h]h]h]h]uh!jVh]rVjU)rV}rV(hUh}rV(h]h]h]h]h]uh!jVh]rVjU)rV}rV(hUh}rV(U anchornameU#sleep-until-woken-upUrefurih?h]h]h]h]h]Uinternaluh!jVh]rVhXSleep until woken uprVrV}rV(hXSleep until woken uph!jVubah"jUubah"jUubah"jUubjU)rV}rV(hUh}rV(h]h]h]h]h]uh!jVh]rVjU)rV}rV(hUh}rV(h]h]h]h]h]uh!jVh]rVjU)rV}rV(hUh}rV(U anchornameU)#waiting-for-another-process-to-terminateUrefurih?h]h]h]h]h]Uinternaluh!jVh]rVhX(Waiting for another process to terminaterVrV}rV(hX(Waiting for another process to terminateh!jVubah"jUubah"jUubah"jUubjU)rV}rV(hUh}rV(h]h]h]h]h]uh!jVh]rVjU)rV}rV(hUh}rV(h]h]h]h]h]uh!jVh]rVjU)rV}rV(hUh}rV(U anchornameU#interrupting-another-processUrefurih?h]h]h]h]h]Uinternaluh!jVh]rVhXInterrupting another processrVrV}rV(hXInterrupting another processh!jVubah"jUubah"jUubah"jUubeh"jUubeh"jUubah"jUubhHjU)rV}rV(hUh}rV(h]h]h]h]h]uh]rVjU)rV}rV(hUh}rV(h]h]h]h]h]uh!jVh]rVjU)rV}rV(hUh}rV(h]h]h]h]h]uh!jVh]rVjU)rV}rV(hUh}rV(U anchornameUUrefurihHh]h]h]h]h]Uinternaluh!jVh]rVhX Movie RenegerVrV}rV(hhPh!jVubah"jUubah"jUubah"jUubah"jUubhQjU)rV}rV(hUh}rV(h]h]h]h]h]uh]rVjU)rV}rW(hUh}rW(h]h]h]h]h]uh!jVh]rW(jU)rW}rW(hUh}rW(h]h]h]h]h]uh!jVh]rWjU)rW}rW(hUh}r W(U anchornameUUrefurihQh]h]h]h]h]Uinternaluh!jWh]r WhX About SimPyr Wr W}r W(hhYh!jWubah"jUubah"jUubjU)rW}rW(hUh}rW(h]h]h]h]h]uh!jVh]rWjV)rW}rW(hUh}rW(UnumberedKUparenthQU titlesonlyUglobh]h]h]h]h]Uentries]rW(NjUrWNjUrWNjUrWNjUrWNjUrWNjUrWeUhiddenUmaxdepthKU includefiles]rW(jUjUjUjUjUjUeU includehiddenuh!jWh]h"jVubah"jUubeh"jUubah"jUubhZjU)rW}rW(hUh}rW(h]h]h]h]h]uh]r WjU)r!W}r"W(hUh}r#W(h]h]h]h]h]uh!jWh]r$W(jU)r%W}r&W(hUh}r'W(h]h]h]h]h]uh!j!Wh]r(WjU)r)W}r*W(hUh}r+W(U anchornameUUrefurihZh]h]h]h]h]Uinternaluh!j%Wh]r,WhXDocumentation for SimPyr-Wr.W}r/W(hhbh!j)Wubah"jUubah"jUubjU)r0W}r1W(hUh}r2W(h]h]h]h]h]uh!j!Wh]r3W(jV)r4W}r5W(hUh}r6W(UnumberedKUparenthZU titlesonlyUglobh]h]h]h]h]Uentries]r7W(X SimPy homejUr8WNjUr9WNjUr:WNjUr;WNjUrW(jUjUjUjUjUjUeU includehiddenuh!j0Wh]h"jVubjU)r?W}r@W(hUh}rAW(h]h]h]h]h]uh!j0Wh]rBWjU)rCW}rDW(hUh}rEW(h]h]h]h]h]uh!j?Wh]rFWjU)rGW}rHW(hUh}rIW(U anchornameU#indices-and-tablesUrefurihZh]h]h]h]h]Uinternaluh!jCWh]rJWhXIndices and tablesrKWrLW}rMW(hXIndices and tablesrNWh!jGWubah"jUubah"jUubah"jUubeh"jUubeh"jUubah"jUubhcjU)rOW}rPW(hUh}rQW(h]h]h]h]h]uh]rRWjU)rSW}rTW(hUh}rUW(h]h]h]h]h]uh!jOWh]rVW(jU)rWW}rXW(hUh}rYW(h]h]h]h]h]uh!jSWh]rZWjU)r[W}r\W(hUh}r]W(U anchornameUUrefurihch]h]h]h]h]Uinternaluh!jWWh]r^WhXSimPy History & Change Logr_Wr`W}raW(hhkh!j[Wubah"jUubah"jUubjU)rbW}rcW(hUh}rdW(h]h]h]h]h]uh!jSWh]reW(jU)rfW}rgW(hUh}rhW(h]h]h]h]h]uh!jbWh]riWjU)rjW}rkW(hUh}rlW(h]h]h]h]h]uh!jfWh]rmWjU)rnW}roW(hUh}rpW(U anchornameU#id1Urefurihch]h]h]h]h]Uinternaluh!jjWh]rqWhX3.0.5 – 2014-05-14rrWrsW}rtW(hX3.0.5 – 2014-05-14h!jnWubah"jUubah"jUubah"jUubjU)ruW}rvW(hUh}rwW(h]h]h]h]h]uh!jbWh]rxWjU)ryW}rzW(hUh}r{W(h]h]h]h]h]uh!juWh]r|WjU)r}W}r~W(hUh}rW(U anchornameU#id4Urefurihch]h]h]h]h]Uinternaluh!jyWh]rWhX3.0.4 – 2014-04-07rWrW}rW(hX3.0.4 – 2014-04-07h!j}Wubah"jUubah"jUubah"jUubjU)rW}rW(hUh}rW(h]h]h]h]h]uh!jbWh]rWjU)rW}rW(hUh}rW(h]h]h]h]h]uh!jWh]rWjU)rW}rW(hUh}rW(U anchornameU#id5Urefurihch]h]h]h]h]Uinternaluh!jWh]rWhX3.0.3 – 2014-03-06rWrW}rW(hX3.0.3 – 2014-03-06h!jWubah"jUubah"jUubah"jUubjU)rW}rW(hUh}rW(h]h]h]h]h]uh!jbWh]rWjU)rW}rW(hUh}rW(h]h]h]h]h]uh!jWh]rWjU)rW}rW(hUh}rW(U anchornameU#id6Urefurihch]h]h]h]h]Uinternaluh!jWh]rWhX3.0.2 – 2013-10-24rWrW}rW(hX3.0.2 – 2013-10-24h!jWubah"jUubah"jUubah"jUubjU)rW}rW(hUh}rW(h]h]h]h]h]uh!jbWh]rWjU)rW}rW(hUh}rW(h]h]h]h]h]uh!jWh]rWjU)rW}rW(hUh}rW(U anchornameU#id7Urefurihch]h]h]h]h]Uinternaluh!jWh]rWhX3.0.1 – 2013-10-24rWrW}rW(hX3.0.1 – 2013-10-24h!jWubah"jUubah"jUubah"jUubjU)rW}rW(hUh}rW(h]h]h]h]h]uh!jbWh]rWjU)rW}rW(hUh}rW(h]h]h]h]h]uh!jWh]rWjU)rW}rW(hUh}rW(U anchornameU#id8Urefurihch]h]h]h]h]Uinternaluh!jWh]rWhX3.0 – 2013-10-11rWrW}rW(hX3.0 – 2013-10-11h!jWubah"jUubah"jUubah"jUubjU)rW}rW(hUh}rW(h]h]h]h]h]uh!jbWh]rWjU)rW}rW(hUh}rW(h]h]h]h]h]uh!jWh]rWjU)rW}rW(hUh}rW(U anchornameU#id13Urefurihch]h]h]h]h]Uinternaluh!jWh]rWhX2.3.1 – 2012-01-28rWrW}rW(hX2.3.1 – 2012-01-28h!jWubah"jUubah"jUubah"jUubjU)rW}rW(hUh}rW(h]h]h]h]h]uh!jbWh]rWjU)rW}rW(hUh}rW(h]h]h]h]h]uh!jWh]rWjU)rW}rW(hUh}rW(U anchornameU#id14Urefurihch]h]h]h]h]Uinternaluh!jWh]rWhX2.3 – 2011-12-24rWrW}rW(hX2.3 – 2011-12-24h!jWubah"jUubah"jUubah"jUubjU)rW}rW(hUh}rW(h]h]h]h]h]uh!jbWh]rWjU)rW}rW(hUh}rW(h]h]h]h]h]uh!jWh]rWjU)rW}rW(hUh}rW(U anchornameU#id15Urefurihch]h]h]h]h]Uinternaluh!jWh]rWhX2.2 – 2011-09-27rWrW}rW(hX2.2 – 2011-09-27h!jWubah"jUubah"jUubah"jUubjU)rW}rW(hUh}rW(h]h]h]h]h]uh!jbWh]rWjU)rW}rW(hUh}rW(h]h]h]h]h]uh!jWh]rWjU)rW}rW(hUh}rW(U anchornameU#id16Urefurihch]h]h]h]h]Uinternaluh!jWh]rWhX2.1 – 2010-06-03rWrW}rW(hX2.1 – 2010-06-03h!jWubah"jUubah"jUubah"jUubjU)rW}rW(hUh}rW(h]h]h]h]h]uh!jbWh]rWjU)rX}rX(hUh}rX(h]h]h]h]h]uh!jWh]rXjU)rX}rX(hUh}rX(U anchornameU#id17Urefurihch]h]h]h]h]Uinternaluh!jXh]rXhX2.0.1 – 2009-04-06rXr X}r X(hX2.0.1 – 2009-04-06h!jXubah"jUubah"jUubah"jUubjU)r X}r X(hUh}r X(h]h]h]h]h]uh!jbWh]rX(jU)rX}rX(hUh}rX(h]h]h]h]h]uh!j Xh]rXjU)rX}rX(hUh}rX(U anchornameU#id18Urefurihch]h]h]h]h]Uinternaluh!jXh]rXhX2.0.0 – 2009-01-26rXrX}rX(hX2.0.0 – 2009-01-26h!jXubah"jUubah"jUubjU)rX}rX(hUh}rX(h]h]h]h]h]uh!j Xh]rX(jU)rX}rX(hUh}r X(h]h]h]h]h]uh!jXh]r!XjU)r"X}r#X(hUh}r$X(h]h]h]h]h]uh!jXh]r%XjU)r&X}r'X(hUh}r(X(U anchornameU #api-changesUrefurihch]h]h]h]h]Uinternaluh!j"Xh]r)XhX API changesr*Xr+X}r,X(hX API changesh!j&Xubah"jUubah"jUubah"jUubjU)r-X}r.X(hUh}r/X(h]h]h]h]h]uh!jXh]r0XjU)r1X}r2X(hUh}r3X(h]h]h]h]h]uh!j-Xh]r4XjU)r5X}r6X(hUh}r7X(U anchornameU#documentation-format-changesUrefurihch]h]h]h]h]Uinternaluh!j1Xh]r8XhXDocumentation format changesr9Xr:X}r;X(hXDocumentation format changesh!j5Xubah"jUubah"jUubah"jUubeh"jUubeh"jUubjU)rX(h]h]h]h]h]uh!jbWh]r?XjU)r@X}rAX(hUh}rBX(h]h]h]h]h]uh!jY(U anchornameU#may-2004-version-1-4-2Urefurihch]h]h]h]h]Uinternaluh!j8Yh]r?YhX19 May 2004: Version 1.4.2r@YrAY}rBY(hX19 May 2004: Version 1.4.2h!jZjU)r?Z}r@Z(hUh}rAZ(U anchornameU!#processes-live-in-an-environmentUrefurihlh]h]h]h]h]Uinternaluh!j;Zh]rBZhX Processes Live in an EnvironmentrCZrDZ}rEZ(hX Processes Live in an Environmenth!j?Zubah"jUubah"jUubah"jUubjU)rFZ}rGZ(hUh}rHZ(h]h]h]h]h]uh!jZh]rIZjU)rJZ}rKZ(hUh}rLZ(h]h]h]h]h]uh!jFZh]rMZjU)rNZ}rOZ(hUh}rPZ(U anchornameU#stronger-focus-on-eventsUrefurihlh]h]h]h]h]Uinternaluh!jJZh]rQZhXStronger Focus on EventsrRZrSZ}rTZ(hXStronger Focus on Eventsh!jNZubah"jUubah"jUubah"jUubjU)rUZ}rVZ(hUh}rWZ(h]h]h]h]h]uh!jZh]rXZjU)rYZ}rZZ(hUh}r[Z(h]h]h]h]h]uh!jUZh]r\ZjU)r]Z}r^Z(hUh}r_Z(U anchornameU1#creating-events-via-the-environment-or-resourcesUrefurihlh]h]h]h]h]Uinternaluh!jYZh]r`ZhX0Creating Events via the Environment or ResourcesraZrbZ}rcZ(hX0Creating Events via the Environment or Resourcesh!j]Zubah"jUubah"jUubah"jUubeh"jUubeh"jUubeh"jUubeh"jUubah"jUubhujU)rdZ}reZ(hUh}rfZ(h]h]h]h]h]uh]rgZjU)rhZ}riZ(hUh}rjZ(h]h]h]h]h]uh!jdZh]rkZjU)rlZ}rmZ(hUh}rnZ(h]h]h]h]h]uh!jhZh]roZjU)rpZ}rqZ(hUh}rrZ(U anchornameUUrefurihuh]h]h]h]h]Uinternaluh!jlZh]rsZhX SimPy homertZruZ}rvZ(hh}h!jpZubah"jUubah"jUubah"jUubah"jUubh~jU)rwZ}rxZ(hUh}ryZ(h]h]h]h]h]uh]rzZjU)r{Z}r|Z(hUh}r}Z(h]h]h]h]h]uh!jwZh]r~Z(jU)rZ}rZ(hUh}rZ(h]h]h]h]h]uh!j{Zh]rZjU)rZ}rZ(hUh}rZ(U anchornameUUrefurih~h]h]h]h]h]Uinternaluh!jZh]rZhXPorting from SimPy 2 to 3rZrZ}rZ(hhh!jZubah"jUubah"jUubjU)rZ}rZ(hUh}rZ(h]h]h]h]h]uh!j{Zh]rZ(jU)rZ}rZ(hUh}rZ(h]h]h]h]h]uh!jZh]rZjU)rZ}rZ(hUh}rZ(h]h]h]h]h]uh!jZh]rZjU)rZ}rZ(hUh}rZ(U anchornameU#importsUrefurih~h]h]h]h]h]Uinternaluh!jZh]rZhXImportsrZrZ}rZ(hXImportsh!jZubah"jUubah"jUubah"jUubjU)rZ}rZ(hUh}rZ(h]h]h]h]h]uh!jZh]rZjU)rZ}rZ(hUh}rZ(h]h]h]h]h]uh!jZh]rZjU)rZ}rZ(hUh}rZ(U anchornameU#the-simulation-classesUrefurih~h]h]h]h]h]Uinternaluh!jZh]rZ(hXThe rZrZ}rZ(hXThe h!jZubh)rZ}rZ(hX``Simulation*``h}rZ(h]h]h]h]h]uh!jZh]rZhX Simulation*rZrZ}rZ(hUh!jZubah"hubhX classesrZrZ}rZ(hX classesh!jZubeh"jUubah"jUubah"jUubjU)rZ}rZ(hUh}rZ(h]h]h]h]h]uh!jZh]rZjU)rZ}rZ(hUh}rZ(h]h]h]h]h]uh!jZh]rZjU)rZ}rZ(hUh}rZ(U anchornameU#defining-a-processUrefurih~h]h]h]h]h]Uinternaluh!jZh]rZhXDefining a ProcessrZrZ}rZ(hXDefining a Processh!jZubah"jUubah"jUubah"jUubjU)rZ}rZ(hUh}rZ(h]h]h]h]h]uh!jZh]rZ(jU)rZ}rZ(hUh}rZ(h]h]h]h]h]uh!jZh]rZjU)rZ}rZ(hUh}rZ(U anchornameU#simpy-keywords-hold-etcUrefurih~h]h]h]h]h]Uinternaluh!jZh]rZ(hXSimPy Keywords (rZrZ}rZ(hXSimPy Keywords (h!jZubh)rZ}rZ(hX``hold``h}rZ(h]h]h]h]h]uh!jZh]rZhXholdrZrZ}rZ(hUh!jZubah"hubhX etc.)rZrZ}rZ(hX etc.)h!jZubeh"jUubah"jUubjU)rZ}rZ(hUh}rZ(h]h]h]h]h]uh!jZh]rZjU)rZ}rZ(hUh}rZ(h]h]h]h]h]uh!jZh]rZjU)rZ}rZ(hUh}rZ(h]h]h]h]h]uh!jZh]rZjU)rZ}rZ(hUh}rZ(U anchornameU#partially-supported-featuresUrefurih~h]h]h]h]h]Uinternaluh!jZh]rZhXPartially supported featuresrZrZ}rZ(hXPartially supported featuresh!jZubah"jUubah"jUubah"jUubah"jUubeh"jUubjU)rZ}rZ(hUh}rZ(h]h]h]h]h]uh!jZh]rZjU)rZ}rZ(hUh}rZ(h]h]h]h]h]uh!jZh]rZjU)rZ}rZ(hUh}rZ(U anchornameU #interruptsUrefurih~h]h]h]h]h]Uinternaluh!jZh]rZhX InterruptsrZrZ}rZ(hX Interruptsh!jZubah"jUubah"jUubah"jUubjU)r[}r[(hUh}r[(h]h]h]h]h]uh!jZh]r[jU)r[}r[(hUh}r[(h]h]h]h]h]uh!j[h]r[jU)r[}r [(hUh}r [(U anchornameU #conclusionUrefurih~h]h]h]h]h]Uinternaluh!j[h]r [hX Conclusionr [r [}r[(hX Conclusionh!j[ubah"jUubah"jUubah"jUubeh"jUubeh"jUubah"jUubhjU)r[}r[(hUh}r[(h]h]h]h]h]uh]r[jU)r[}r[(hUh}r[(h]h]h]h]h]uh!j[h]r[jU)r[}r[(hUh}r[(h]h]h]h]h]uh!j[h]r[jU)r[}r[(hUh}r[(U anchornameUUrefurihh]h]h]h]h]Uinternaluh!j[h]r[(h)r[}r [(hhh}r![(h]h]h]h]h]uh!j]r"[hX simpy.utilr#[r$[}r%[(hUh!j[ubah"hubhX --- Utility functions for SimPyr&[r'[}r([(hhh!jbeh"jUubah"jUubah"jUubah"jUubhjU)r)[}r*[(hUh}r+[(h]h]h]h]h]uh]r,[jU)r-[}r.[(hUh}r/[(h]h]h]h]h]uh!j)[h]r0[jU)r1[}r2[(hUh}r3[(h]h]h]h]h]uh!j-[h]r4[jU)r5[}r6[(hUh}r7[(U anchornameUUrefurihh]h]h]h]h]Uinternaluh!j1[h]r8[hXProcess Communicationr9[r:[}r;[(hhh!j5[ubah"jUubah"jUubah"jUubah"jUubhjU)r<[}r=[(hUh}r>[(h]h]h]h]h]uh]r?[jU)r@[}rA[(hUh}rB[(h]h]h]h]h]uh!j<[h]rC[jU)rD[}rE[(hUh}rF[(h]h]h]h]h]uh!j@[h]rG[jU)rH[}rI[(hUh}rJ[(U anchornameUUrefurihh]h]h]h]h]Uinternaluh!jD[h]rK[hXLicenserL[rM[}rN[(hhh!jH[ubah"jUubah"jUubah"jUubah"jUubhjU)rO[}rP[(hUh}rQ[(h]h]h]h]h]uh]rR[jU)rS[}rT[(hUh}rU[(h]h]h]h]h]uh!jO[h]rV[(jU)rW[}rX[(hUh}rY[(h]h]h]h]h]uh!jS[h]rZ[jU)r[[}r\[(hUh}r][(U anchornameUUrefurihh]h]h]h]h]Uinternaluh!jW[h]r^[hX SimPy basicsr_[r`[}ra[(hhh!j[[ubah"jUubah"jUubjU)rb[}rc[(hUh}rd[(h]h]h]h]h]uh!jS[h]re[(jU)rf[}rg[(hUh}rh[(h]h]h]h]h]uh!jb[h]ri[jU)rj[}rk[(hUh}rl[(h]h]h]h]h]uh!jf[h]rm[jU)rn[}ro[(hUh}rp[(U anchornameU#how-simpy-worksUrefurihh]h]h]h]h]Uinternaluh!jj[h]rq[hXHow SimPy worksrr[rs[}rt[(hXHow SimPy worksru[h!jn[ubah"jUubah"jUubah"jUubjU)rv[}rw[(hUh}rx[(h]h]h]h]h]uh!jb[h]ry[jU)rz[}r{[(hUh}r|[(h]h]h]h]h]uh!jv[h]r}[jU)r~[}r[(hUh}r[(U anchornameU+#best-practice-version-of-the-example-aboveUrefurihh]h]h]h]h]Uinternaluh!jz[h]r[hX,"Best practice" version of the example abover[r[}r[(hX,"Best practice" version of the example abover[h!j~[ubah"jUubah"jUubah"jUubeh"jUubeh"jUubah"jUubhjU)r[}r[(hUh}r[(h]h]h]h]h]uh]r[jU)r[}r[(hUh}r[(h]h]h]h]h]uh!j[h]r[jU)r[}r[(hUh}r[(h]h]h]h]h]uh!j[h]r[jU)r[}r[(hUh}r[(U anchornameUUrefurihh]h]h]h]h]Uinternaluh!j[h]r[hXAcknowledgmentsr[r[}r[(hhh!j[ubah"jUubah"jUubah"jUubah"jUubhjU)r[}r[(hUh}r[(h]h]h]h]h]uh]r[jU)r[}r[(hUh}r[(h]h]h]h]h]uh!j[h]r[jU)r[}r[(hUh}r[(h]h]h]h]h]uh!j[h]r[jU)r[}r[(hUh}r[(U anchornameUUrefurihh]h]h]h]h]Uinternaluh!j[h]r[hX Bank Reneger[r[}r[(hhh!j[ubah"jUubah"jUubah"jUubah"jUubhjU)r[}r[(hUh}r[(h]h]h]h]h]uh]r[jU)r[}r[(hUh}r[(h]h]h]h]h]uh!j[h]r[(jU)r[}r[(hUh}r[(h]h]h]h]h]uh!j[h]r[jU)r[}r[(hUh}r[(U anchornameUUrefurihh]h]h]h]h]Uinternaluh!j[h]r[hXBasic Conceptsr[r[}r[(hhh!j[ubah"jUubah"jUubjU)r[}r[(hUh}r[(h]h]h]h]h]uh!j[h]r[(jU)r[}r[(hUh}r[(h]h]h]h]h]uh!j[h]r[jU)r[}r[(hUh}r[(h]h]h]h]h]uh!j[h]r[jU)r[}r[(hUh}r[(U anchornameU#our-first-processUrefurihh]h]h]h]h]Uinternaluh!j[h]r[hXOur First Processr[r[}r[(hXOur First Processh!j[ubah"jUubah"jUubah"jUubjU)r[}r[(hUh}r[(h]h]h]h]h]uh!j[h]r[jU)r[}r[(hUh}r[(h]h]h]h]h]uh!j[h]r[jU)r[}r[(hUh}r[(U anchornameU #what-s-nextUrefurihh]h]h]h]h]Uinternaluh!j[h]r[hX What's Next?r[r[}r[(hX What's Next?h!j[ubah"jUubah"jUubah"jUubeh"jUubeh"jUubah"jUubhjU)r[}r[(hUh}r[(h]h]h]h]h]uh]r[jU)r[}r[(hUh}r[(h]h]h]h]h]uh!j[h]r[jU)r[}r[(hUh}r[(h]h]h]h]h]uh!j[h]r[jU)r[}r[(hUh}r[(U anchornameUUrefurihh]h]h]h]h]Uinternaluh!j[h]r[(h)r[}r[(hhh}r[(h]h]h]h]h]uh!j[h]r[hXsimpy.monitoringr[r[}r[(hUh!j[ubah"hubhX --- Monitor SimPy simulationsr[r[}r[(hhh!j[ubeh"jUubah"jUubah"jUubah"jUubhjU)r[}r[(hUh}r[(h]h]h]h]h]uh]r[jU)r[}r\(hUh}r\(h]h]h]h]h]uh!j[h]r\jU)r\}r\(hUh}r\(h]h]h]h]h]uh!j[h]r\jU)r\}r\(hUh}r \(U anchornameUUrefurihh]h]h]h]h]Uinternaluh!j\h]r \(h)r \}r \(hhh}r \(h]h]h]h]h]uh!j\h]r\hX simpy.eventsr\r\}r\(hUh!j \ubah"hubhX --- Core event typesr\r\}r\(hhh!j\ubeh"jUubah"jUubah"jUubah"jUubhjU)r\}r\(hUh}r\(h]h]h]h]h]uh]r\jU)r\}r\(hUh}r\(h]h]h]h]h]uh!j\h]r\(jU)r\}r\(hUh}r\(h]h]h]h]h]uh!j\h]r \jU)r!\}r"\(hUh}r#\(U anchornameUUrefurihh]h]h]h]h]Uinternaluh!j\h]r$\hXShared Resourcesr%\r&\}r'\(hhh!j!\ubah"jUubah"jUubjU)r(\}r)\(hUh}r*\(h]h]h]h]h]uh!j\h]r+\(jU)r,\}r-\(hUh}r.\(h]h]h]h]h]uh!j(\h]r/\jU)r0\}r1\(hUh}r2\(h]h]h]h]h]uh!j,\h]r3\jU)r4\}r5\(hUh}r6\(U anchornameU#basic-resource-usageUrefurihh]h]h]h]h]Uinternaluh!j0\h]r7\hXBasic Resource Usager8\r9\}r:\(hXBasic Resource Usager;\h!j4\ubah"jUubah"jUubah"jUubjU)r<\}r=\(hUh}r>\(h]h]h]h]h]uh!j(\h]r?\jU)r@\}rA\(hUh}rB\(h]h]h]h]h]uh!j<\h]rC\jU)rD\}rE\(hUh}rF\(U anchornameU #what-s-nextUrefurihh]h]h]h]h]Uinternaluh!j@\h]rG\hX What's NextrH\rI\}rJ\(hX What's NextrK\h!jD\ubah"jUubah"jUubah"jUubeh"jUubeh"jUubah"jUubhjU)rL\}rM\(hUh}rN\(h]h]h]h]h]uh]rO\jU)rP\}rQ\(hUh}rR\(h]h]h]h]h]uh!jL\h]rS\jU)rT\}rU\(hUh}rV\(h]h]h]h]h]uh!jP\h]rW\jU)rX\}rY\(hUh}rZ\(U anchornameUUrefurihh]h]h]h]h]Uinternaluh!jT\h]r[\hXGas Station Refuelingr\\r]\}r^\(hjh!jX\ubah"jUubah"jUubah"jUubah"jUubjjU)r_\}r`\(hUh}ra\(h]h]h]h]h]uh]rb\jU)rc\}rd\(hUh}re\(h]h]h]h]h]uh!j_\h]rf\jU)rg\}rh\(hUh}ri\(h]h]h]h]h]uh!jc\h]rj\jU)rk\}rl\(hUh}rm\(U anchornameUUrefurijh]h]h]h]h]Uinternaluh!jg\h]rn\(h)ro\}rp\(hj h}rq\(h]h]h]h]h]uh!jk\h]rr\hXsimpy.resources.containerrs\rt\}ru\(hUh!jo\ubah"hubhX --- Container type resourcesrv\rw\}rx\(hjh!jk\ubeh"jUubah"jUubah"jUubah"jUubjjU)ry\}rz\(hUh}r{\(h]h]h]h]h]uh]r|\jU)r}\}r~\(hUh}r\(h]h]h]h]h]uh!jy\h]r\jU)r\}r\(hUh}r\(h]h]h]h]h]uh!j}\h]r\jU)r\}r\(hUh}r\(U anchornameUUrefurijh]h]h]h]h]Uinternaluh!j\h]r\(h)r\}r\(hjh}r\(h]h]h]h]h]uh!j\h]r\hX simpy.corer\r\}r\(hUh!j\ubah"hubhX --- SimPy's core componentsr\r\}r\(hj%h!j\ubeh"jUubah"jUubah"jUubah"jUubj&jU)r\}r\(hUh}r\(h]h]h]h]h]uh]r\jU)r\}r\(hUh}r\(h]h]h]h]h]uh!j\h]r\(jU)r\}r\(hUh}r\(h]h]h]h]h]uh!j\h]r\jU)r\}r\(hUh}r\(U anchornameUUrefurij&h]h]h]h]h]Uinternaluh!j\h]r\hXTopical Guidesr\r\}r\(hj.h!j\ubah"jUubah"jUubjU)r\}r\(hUh}r\(h]h]h]h]h]uh!j\h]r\jV)r\}r\(hUh}r\(UnumberedKUparentj&U titlesonlyUglobh]h]h]h]h]Uentries]r\(NjUr\NjUr\NjUr\NjUr\NjUr\eUhiddenUmaxdepthKU includefiles]r\(jUjUjUjUjUeU includehiddenuh!j\h]h"jVubah"jUubeh"jUubah"jUubj/jU)r\}r\(hUh}r\(h]h]h]h]h]uh]r\jU)r\}r\(hUh}r\(h]h]h]h]h]uh!j\h]r\(jU)r\}r\(hUh}r\(h]h]h]h]h]uh!j\h]r\jU)r\}r\(hUh}r\(U anchornameUUrefurij/h]h]h]h]h]Uinternaluh!j\h]r\hXExamplesr\r\}r\(hj7h!j\ubah"jUubah"jUubjU)r\}r\(hUh}r\(h]h]h]h]h]uh!j\h]r\(jU)r\}r\(hUh}r\(h]h]h]h]h]uh!j\h]r\jU)r\}r\(hUh}r\(h]h]h]h]h]uh!j\h]r\jU)r\}r\(hUh}r\(U anchornameU#condition-eventsUrefurij/h]h]h]h]h]Uinternaluh!j\h]r\hXCondition eventsr\r\}r\(hXCondition eventsr\h!j\ubah"jUubah"jUubah"jUubjU)r\}r\(hUh}r\(h]h]h]h]h]uh!j\h]r\jU)r\}r\(hUh}r\(h]h]h]h]h]uh!j\h]r\jU)r\}r\(hUh}r\(U anchornameU #interruptsUrefurij/h]h]h]h]h]Uinternaluh!j\h]r\hX Interruptsr\r\}r\(hX Interruptsr\h!j\ubah"jUubah"jUubah"jUubjU)r\}r\(hUh}r\(h]h]h]h]h]uh!j\h]r\jU)r\}r\(hUh}r\(h]h]h]h]h]uh!j\h]r\jU)r\}r\(hUh}r\(U anchornameU #monitoringUrefurij/h]h]h]h]h]Uinternaluh!j\h]r\hX Monitoringr\r\}r\(hX Monitoringr\h!j\ubah"jUubah"jUubah"jUubjU)r\}r\(hUh}r\(h]h]h]h]h]uh!j\h]r\jU)r\}r](hUh}r](h]h]h]h]h]uh!j\h]r]jU)r]}r](hUh}r](U anchornameU#resources-containerUrefurij/h]h]h]h]h]Uinternaluh!j\h]r]hXResources: Containerr]r]}r ](hXResources: Containerr ]h!j]ubah"jUubah"jUubah"jUubjU)r ]}r ](hUh}r ](h]h]h]h]h]uh!j\h]r]jU)r]}r](hUh}r](h]h]h]h]h]uh!j ]h]r]jU)r]}r](hUh}r](U anchornameU#resources-preemptive-resourceUrefurij/h]h]h]h]h]Uinternaluh!j]h]r]hXResources: Preemptive Resourcer]r]}r](hXResources: Preemptive Resourcer]h!j]ubah"jUubah"jUubah"jUubjU)r]}r](hUh}r](h]h]h]h]h]uh!j\h]r]jU)r]}r ](hUh}r!](h]h]h]h]h]uh!j]h]r"]jU)r#]}r$](hUh}r%](U anchornameU#resources-resourceUrefurij/h]h]h]h]h]Uinternaluh!j]h]r&]hXResources: Resourcer']r(]}r)](hXResources: Resourcer*]h!j#]ubah"jUubah"jUubah"jUubjU)r+]}r,](hUh}r-](h]h]h]h]h]uh!j\h]r.]jU)r/]}r0](hUh}r1](h]h]h]h]h]uh!j+]h]r2]jU)r3]}r4](hUh}r5](U anchornameU#resources-storeUrefurij/h]h]h]h]h]Uinternaluh!j/]h]r6]hXResources: Storer7]r8]}r9](hXResources: Storer:]h!j3]ubah"jUubah"jUubah"jUubjU)r;]}r<](hUh}r=](h]h]h]h]h]uh!j\h]r>]jU)r?]}r@](hUh}rA](h]h]h]h]h]uh!j;]h]rB]jU)rC]}rD](hUh}rE](U anchornameU#shared-eventsUrefurij/h]h]h]h]h]Uinternaluh!j?]h]rF]hX Shared eventsrG]rH]}rI](hX Shared eventsrJ]h!jC]ubah"jUubah"jUubah"jUubjU)rK]}rL](hUh}rM](h]h]h]h]h]uh!j\h]rN]jU)rO]}rP](hUh}rQ](h]h]h]h]h]uh!jK]h]rR]jU)rS]}rT](hUh}rU](U anchornameU#waiting-for-other-processesUrefurij/h]h]h]h]h]Uinternaluh!jO]h]rV]hXWaiting for other processesrW]rX]}rY](hXWaiting for other processesrZ]h!jS]ubah"jUubah"jUubah"jUubjU)r[]}r\](hUh}r]](h]h]h]h]h]uh!j\h]r^](jU)r_]}r`](hUh}ra](h]h]h]h]h]uh!j[]h]rb]jU)rc]}rd](hUh}re](U anchornameU #all-examplesUrefurij/h]h]h]h]h]Uinternaluh!j_]h]rf]hX All examplesrg]rh]}ri](hX All examplesrj]h!jc]ubah"jUubah"jUubjU)rk]}rl](hUh}rm](h]h]h]h]h]uh!j[]h]rn]jV)ro]}rp](hUh}rq](UnumberedKUparentj/U titlesonlyUglobh]h]h]h]h]Uentries]rr](NjUrs]NjUrt]NjUru]NjUrv]NjUrw]NjUrx]NjUry]eUhiddenUmaxdepthJU includefiles]rz](jUjUjUjUjUjUjUeU includehiddenuh!jk]h]h"jVubah"jUubeh"jUubeh"jUubeh"jUubah"jUubj8jU)r{]}r|](hUh}r}](h]h]h]h]h]uh]r~]jU)r]}r](hUh}r](h]h]h]h]h]uh!j{]h]r](jU)r]}r](hUh}r](h]h]h]h]h]uh!j]h]r]jU)r]}r](hUh}r](U anchornameUUrefurij8h]h]h]h]h]Uinternaluh!j]h]r](h)r]}r](hj?h}r](h]h]h]h]h]uh!j]h]r]hXsimpyr]r]}r](hUh!j]ubah"hubhX --- The end user APIr]r]}r](hjHh!j]ubeh"jUubah"jUubjU)r]}r](hUh}r](h]h]h]h]h]uh!j]h]r](jU)r]}r](hUh}r](h]h]h]h]h]uh!j]h]r]jU)r]}r](hUh}r](h]h]h]h]h]uh!j]h]r]jU)r]}r](hUh}r](U anchornameU#core-classes-and-functionsUrefurij8h]h]h]h]h]Uinternaluh!j]h]r]hXCore classes and functionsr]r]}r](hXCore classes and functionsh!j]ubah"jUubah"jUubah"jUubjU)r]}r](hUh}r](h]h]h]h]h]uh!j]h]r]jU)r]}r](hUh}r](h]h]h]h]h]uh!j]h]r]jU)r]}r](hUh}r](U anchornameU #resourcesUrefurij8h]h]h]h]h]Uinternaluh!j]h]r]hX Resourcesr]r]}r](hX Resourcesh!j]ubah"jUubah"jUubah"jUubjU)r]}r](hUh}r](h]h]h]h]h]uh!j]h]r]jU)r]}r](hUh}r](h]h]h]h]h]uh!j]h]r]jU)r]}r](hUh}r](U anchornameU#otherUrefurij8h]h]h]h]h]Uinternaluh!j]h]r]hXOtherr]r]}r](hXOtherh!j]ubah"jUubah"jUubah"jUubeh"jUubeh"jUubah"jUubjIjU)r]}r](hUh}r](h]h]h]h]h]uh]r]jU)r]}r](hUh}r](h]h]h]h]h]uh!j]h]r](jU)r]}r](hUh}r](h]h]h]h]h]uh!j]h]r]jU)r]}r](hUh}r](U anchornameUUrefurijIh]h]h]h]h]Uinternaluh!j]h]r]hX Installationr]r]}r](hjQh!j]ubah"jUubah"jUubjU)r]}r](hUh}r](h]h]h]h]h]uh!j]h]r](jU)r]}r](hUh}r](h]h]h]h]h]uh!j]h]r]jU)r]}r](hUh}r](h]h]h]h]h]uh!j]h]r]jU)r]}r](hUh}r](U anchornameU#upgrading-from-simpy-2UrefurijIh]h]h]h]h]Uinternaluh!j]h]r]hXUpgrading from SimPy 2r]r]}r](hXUpgrading from SimPy 2h!j]ubah"jUubah"jUubah"jUubjU)r]}r](hUh}r](h]h]h]h]h]uh!j]h]r]jU)r]}r](hUh}r](h]h]h]h]h]uh!j]h]r]jU)r]}r](hUh}r](U anchornameU #what-s-nextUrefurijIh]h]h]h]h]Uinternaluh!j]h]r]hX What's Nextr]r]}r](hX What's Nexth!j]ubah"jUubah"jUubah"jUubeh"jUubeh"jUubah"jUubjRjU)r]}r](hUh}r](h]h]h]h]h]uh]r]jU)r]}r^(hUh}r^(h]h]h]h]h]uh!j]h]r^jU)r^}r^(hUh}r^(h]h]h]h]h]uh!j]h]r^jU)r^}r^(hUh}r ^(U anchornameUUrefurijRh]h]h]h]h]Uinternaluh!j^h]r ^hX Machine Shopr ^r ^}r ^(hjZh!j^ubah"jUubah"jUubah"jUubah"jUubj[jU)r^}r^(hUh}r^(h]h]h]h]h]uh]r^jU)r^}r^(hUh}r^(h]h]h]h]h]uh!j^h]r^(jU)r^}r^(hUh}r^(h]h]h]h]h]uh!j^h]r^jU)r^}r^(hUh}r^(U anchornameUUrefurij[h]h]h]h]h]Uinternaluh!j^h]r^hX API Referencer^r^}r ^(hjch!j^ubah"jUubah"jUubjU)r!^}r"^(hUh}r#^(h]h]h]h]h]uh!j^h]r$^jV)r%^}r&^(hUh}r'^(UnumberedKUparentj[U titlesonlyUglobh]h]h]h]h]Uentries]r(^(NjUr)^NjUr*^NjUr+^NjUr,^NjUr-^NjUr.^NjUr/^NjUr0^NjUr1^NjUr2^NjUr3^eUhiddenUmaxdepthKU includefiles]r4^(jUjUjUjUjUjUjUjUjUjUjUeU includehiddenuh!j!^h]h"jVubah"jUubeh"jUubah"jUubjdjU)r5^}r6^(hUh}r7^(h]h]h]h]h]uh]r8^jU)r9^}r:^(hUh}r;^(h]h]h]h]h]uh!j5^h]r<^(jU)r=^}r>^(hUh}r?^(h]h]h]h]h]uh!j9^h]r@^jU)rA^}rB^(hUh}rC^(U anchornameUUrefurijdh]h]h]h]h]Uinternaluh!j=^h]rD^hXRelease ProcessrE^rF^}rG^(hjlh!jA^ubah"jUubah"jUubjU)rH^}rI^(hUh}rJ^(h]h]h]h]h]uh!j9^h]rK^(jU)rL^}rM^(hUh}rN^(h]h]h]h]h]uh!jH^h]rO^jU)rP^}rQ^(hUh}rR^(h]h]h]h]h]uh!jL^h]rS^jU)rT^}rU^(hUh}rV^(U anchornameU #preparationsUrefurijdh]h]h]h]h]Uinternaluh!jP^h]rW^hX PreparationsrX^rY^}rZ^(hX Preparationsh!jT^ubah"jUubah"jUubah"jUubjU)r[^}r\^(hUh}r]^(h]h]h]h]h]uh!jH^h]r^^jU)r_^}r`^(hUh}ra^(h]h]h]h]h]uh!j[^h]rb^jU)rc^}rd^(hUh}re^(U anchornameU#build-and-releaseUrefurijdh]h]h]h]h]Uinternaluh!j_^h]rf^hXBuild and releaserg^rh^}ri^(hXBuild and releaseh!jc^ubah"jUubah"jUubah"jUubjU)rj^}rk^(hUh}rl^(h]h]h]h]h]uh!jH^h]rm^jU)rn^}ro^(hUh}rp^(h]h]h]h]h]uh!jj^h]rq^jU)rr^}rs^(hUh}rt^(U anchornameU #post-releaseUrefurijdh]h]h]h]h]Uinternaluh!jn^h]ru^hX Post releaserv^rw^}rx^(hX Post releaseh!jr^ubah"jUubah"jUubah"jUubeh"jUubeh"jUubah"jUubjmjU)ry^}rz^(hUh}r{^(h]h]h]h]h]uh]r|^jU)r}^}r~^(hUh}r^(h]h]h]h]h]uh!jy^h]r^jU)r^}r^(hUh}r^(h]h]h]h]h]uh!j}^h]r^jU)r^}r^(hUh}r^(U anchornameUUrefurijmh]h]h]h]h]Uinternaluh!j^h]r^(h)r^}r^(hjth}r^(h]h]h]h]h]uh!j^h]r^hXsimpy.resources.resourcer^r^}r^(hUh!j^ubah"hubhX -- Resource type resourcesr^r^}r^(hj}h!j^ubeh"jUubah"jUubah"jUubah"jUubj~jU)r^}r^(hUh}r^(h]h]h]h]h]uh]r^jU)r^}r^(hUh}r^(h]h]h]h]h]uh!j^h]r^jU)r^}r^(hUh}r^(h]h]h]h]h]uh!j^h]r^jU)r^}r^(hUh}r^(U anchornameUUrefurij~h]h]h]h]h]Uinternaluh!j^h]r^hXCarwashr^r^}r^(hjh!j^ubah"jUubah"jUubah"jUubah"jUubjjU)r^}r^(hUh}r^(h]h]h]h]h]uh]r^jU)r^}r^(hUh}r^(h]h]h]h]h]uh!j^h]r^(jU)r^}r^(hUh}r^(h]h]h]h]h]uh!j^h]r^jU)r^}r^(hUh}r^(U anchornameUUrefurijh]h]h]h]h]Uinternaluh!j^h]r^hX Environmentsr^r^}r^(hjh!j^ubah"jUubah"jUubjU)r^}r^(hUh}r^(h]h]h]h]h]uh!j^h]r^(jU)r^}r^(hUh}r^(h]h]h]h]h]uh!j^h]r^jU)r^}r^(hUh}r^(h]h]h]h]h]uh!j^h]r^jU)r^}r^(hUh}r^(U anchornameU#simulation-controlUrefurijh]h]h]h]h]Uinternaluh!j^h]r^hXSimulation controlr^r^}r^(hXSimulation controlr^h!j^ubah"jUubah"jUubah"jUubjU)r^}r^(hUh}r^(h]h]h]h]h]uh!j^h]r^jU)r^}r^(hUh}r^(h]h]h]h]h]uh!j^h]r^jU)r^}r^(hUh}r^(U anchornameU #state-accessUrefurijh]h]h]h]h]Uinternaluh!j^h]r^hX State accessr^r^}r^(hX State accessr^h!j^ubah"jUubah"jUubah"jUubjU)r^}r^(hUh}r^(h]h]h]h]h]uh!j^h]r^jU)r^}r^(hUh}r^(h]h]h]h]h]uh!j^h]r^jU)r^}r^(hUh}r^(U anchornameU#event-creationUrefurijh]h]h]h]h]Uinternaluh!j^h]r^hXEvent creationr^r^}r^(hXEvent creationr^h!j^ubah"jUubah"jUubah"jUubjU)r^}r^(hUh}r^(h]h]h]h]h]uh!j^h]r^jU)r^}r^(hUh}r^(h]h]h]h]h]uh!j^h]r^jU)r^}r^(hUh}r^(U anchornameU#miscellaneousUrefurijh]h]h]h]h]Uinternaluh!j^h]r^hX Miscellaneousr^r^}r^(hX Miscellaneousr^h!j^ubah"jUubah"jUubah"jUubeh"jUubeh"jUubah"jUubjjU)r^}r^(hUh}r^(h]h]h]h]h]uh]r_jU)r_}r_(hUh}r_(h]h]h]h]h]uh!j^h]r_jU)r_}r_(hUh}r_(h]h]h]h]h]uh!j_h]r_jU)r _}r _(hUh}r _(U anchornameUUrefurijh]h]h]h]h]Uinternaluh!j_h]r _(h)r _}r_(hjh}r_(h]h]h]h]h]uh!j _h]r_hXsimpy.resources.storer_r_}r_(hUh!j _ubah"hubhX --- Store type resourcesr_r_}r_(hjh!j _ubeh"jUubah"jUubah"jUubah"jUubjjU)r_}r_(hUh}r_(h]h]h]h]h]uh]r_jU)r_}r_(hUh}r_(h]h]h]h]h]uh!j_h]r_jU)r_}r _(hUh}r!_(h]h]h]h]h]uh!j_h]r"_jU)r#_}r$_(hUh}r%_(U anchornameUUrefurijh]h]h]h]h]Uinternaluh!j_h]r&_hX Event Latencyr'_r(_}r)_(hjh!j#_ubah"jUubah"jUubah"jUubah"jUubjjU)r*_}r+_(hUh}r,_(h]h]h]h]h]uh]r-_jU)r._}r/_(hUh}r0_(h]h]h]h]h]uh!j*_h]r1_jU)r2_}r3_(hUh}r4_(h]h]h]h]h]uh!j._h]r5_jU)r6_}r7_(hUh}r8_(U anchornameUUrefurijh]h]h]h]h]Uinternaluh!j2_h]r9_(h)r:_}r;_(hjh}r<_(h]h]h]h]h]uh!j6_h]r=_hXsimpy.resources.baser>_r?_}r@_(hUh!j:_ubah"hubhX# --- Base classes for all resourcesrA_rB_}rC_(hjh!j6_ubeh"jUubah"jUubah"jUubah"jUubjjU)rD_}rE_(hUh}rF_(h]h]h]h]h]uh]rG_jU)rH_}rI_(hUh}rJ_(h]h]h]h]h]uh!jD_h]rK_jU)rL_}rM_(hUh}rN_(h]h]h]h]h]uh!jH_h]rO_jU)rP_}rQ_(hUh}rR_(U anchornameUUrefurijh]h]h]h]h]Uinternaluh!jL_h]rS_(h)rT_}rU_(hjh}rV_(h]h]h]h]h]uh!jP_h]rW_hXsimpy.resourcesrX_rY_}rZ_(hUh!jT_ubah"hubhX$ --- SimPy's built-in resource typesr[_r\_}r]_(hjh!jP_ubeh"jUubah"jUubah"jUubah"jUubjjU)r^_}r__(hUh}r`_(h]h]h]h]h]uh]ra_jU)rb_}rc_(hUh}rd_(h]h]h]h]h]uh!j^_h]re_(jU)rf_}rg_(hUh}rh_(h]h]h]h]h]uh!jb_h]ri_jU)rj_}rk_(hUh}rl_(U anchornameUUrefurijh]h]h]h]h]Uinternaluh!jf_h]rm_hXProcess Interactionrn_ro_}rp_(hjh!jj_ubah"jUubah"jUubjU)rq_}rr_(hUh}rs_(h]h]h]h]h]uh!jb_h]rt_(jU)ru_}rv_(hUh}rw_(h]h]h]h]h]uh!jq_h]rx_jU)ry_}rz_(hUh}r{_(h]h]h]h]h]uh!ju_h]r|_jU)r}_}r~_(hUh}r_(U anchornameU#waiting-for-a-processUrefurijh]h]h]h]h]Uinternaluh!jy_h]r_hXWaiting for a Processr_r_}r_(hXWaiting for a Processh!j}_ubah"jUubah"jUubah"jUubjU)r_}r_(hUh}r_(h]h]h]h]h]uh!jq_h]r_jU)r_}r_(hUh}r_(h]h]h]h]h]uh!j_h]r_jU)r_}r_(hUh}r_(U anchornameU#interrupting-another-processUrefurijh]h]h]h]h]Uinternaluh!j_h]r_hXInterrupting Another Processr_r_}r_(hXInterrupting Another Processh!j_ubah"jUubah"jUubah"jUubjU)r_}r_(hUh}r_(h]h]h]h]h]uh!jq_h]r_jU)r_}r_(hUh}r_(h]h]h]h]h]uh!j_h]r_jU)r_}r_(hUh}r_(U anchornameU #what-s-nextUrefurijh]h]h]h]h]Uinternaluh!j_h]r_hX What's Nextr_r_}r_(hX What's Nexth!j_ubah"jUubah"jUubah"jUubeh"jUubeh"jUubah"jUubjjU)r_}r_(hUh}r_(h]h]h]h]h]uh]r_jU)r_}r_(hUh}r_(h]h]h]h]h]uh!j_h]r_jU)r_}r_(hUh}r_(h]h]h]h]h]uh!j_h]r_jU)r_}r_(hUh}r_(U anchornameUUrefurijh]h]h]h]h]Uinternaluh!j_h]r_(h)r_}r_(hjh}r_(h]h]h]h]h]uh!j_h]r_hXsimpy.rtr_r_}r_(hUh!j_ubah"hubhX --- Real-time simulationsr_r_}r_(hjh!j_ubeh"jUubah"jUubah"jUubah"jUubuU indexentriesr_}r_(h]h$]h-]h6]h?]hH]hQ]hZ]hc]hl]hu]h~]h]r_((Usingler_Xsimpy.util (module)Xmodule-simpy.utilUtr_(j_X&start_delayed() (in module simpy.util)jUtr_(j_X%subscribe_at() (in module simpy.util)jrUtr_eh]h]h]h]h]h]h]r_(j_Xsimpy.monitoring (module)Xmodule-simpy.monitoringUtr_ah]r_((j_Xsimpy.events (module)Xmodule-simpy.eventsUtr_(j_X PENDING (in module simpy.events)jUtr_(j_XURGENT (in module simpy.events)jgUtr_(j_XNORMAL (in module simpy.events)jXUtr_(j_XEvent (class in simpy.events)j[Utr_(j_X"env (simpy.events.Event attribute)jOUtr_(j_X(callbacks (simpy.events.Event attribute)jSUtr_(j_X(triggered (simpy.events.Event attribute)jUtr_(j_X(processed (simpy.events.Event attribute)jUtr_(j_X$value (simpy.events.Event attribute)jUtr_(j_X%trigger() (simpy.events.Event method)jBUtr_(j_X%succeed() (simpy.events.Event method)jHUtr_(j_X"fail() (simpy.events.Event method)jUtr_(j_XTimeout (class in simpy.events)jUtr_(j_X"Initialize (class in simpy.events)jUtr_(j_X$Interruption (class in simpy.events)j+Utr_(j_XProcess (class in simpy.events)jUtr_(j_X'target (simpy.events.Process attribute)jUtr_(j_X)is_alive (simpy.events.Process attribute)jnUtr_(j_X)interrupt() (simpy.events.Process method)jjUtr_(j_X!Condition (class in simpy.events)j%Utr_(j_X3all_events() (simpy.events.Condition static method)jUtr_(j_X3any_events() (simpy.events.Condition static method)jqUtr_(j_XAllOf (class in simpy.events)jUtr_(j_XAnyOf (class in simpy.events)jCUtr_(j_X InterruptjKUtr_(j_X(cause (simpy.events.Interrupt attribute)jLUtr_eh]h]j]r_((j_X"simpy.resources.container (module)X module-simpy.resources.containerUtr_(j_X.Container (class in simpy.resources.container)jUtr_(j_X8capacity (simpy.resources.container.Container attribute)j>Utr_(j_X5level (simpy.resources.container.Container attribute)jUtr_(j_X3put (simpy.resources.container.Container attribute)j&Utr_(j_X3get (simpy.resources.container.Container attribute)jvUtr_(j_X1ContainerPut (class in simpy.resources.container)jUtr_(j_X9amount (simpy.resources.container.ContainerPut attribute)jaUtr_(j_X1ContainerGet (class in simpy.resources.container)jUtr_(j_X9amount (simpy.resources.container.ContainerGet attribute)jdUtr_ej]r_((j_Xsimpy.core (module)Xmodule-simpy.coreUtr_(j_X%BaseEnvironment (class in simpy.core)jyUtr_(j_X*now (simpy.core.BaseEnvironment attribute)jUtr_(j_X5active_process (simpy.core.BaseEnvironment attribute)jUtr_(j_X.schedule() (simpy.core.BaseEnvironment method)jtUtr_(j_X*step() (simpy.core.BaseEnvironment method)jUtr_(j_X)run() (simpy.core.BaseEnvironment method)jUtr_(j_X!Environment (class in simpy.core)jUtr_(j_X&now (simpy.core.Environment attribute)jUtr_(j_X1active_process (simpy.core.Environment attribute)j<Utr_(j_X)process() (simpy.core.Environment method)j@Utr_(j_X)timeout() (simpy.core.Environment method)jUtr_(j_X'event() (simpy.core.Environment method)jUtr_(j_X(all_of() (simpy.core.Environment method)j,Utr_(j_X(any_of() (simpy.core.Environment method)j\Utr_(j_X&exit() (simpy.core.Environment method)jUtr_(j_X*schedule() (simpy.core.Environment method)j#Utr_(j_X&peek() (simpy.core.Environment method)jUtr_(j_X&step() (simpy.core.Environment method)j}Utr_(j_X%run() (simpy.core.Environment method)jUtr`(j_X BoundClass (class in simpy.core)jlUtr`(j_X2bind_early() (simpy.core.BoundClass static method)jVUtr`(j_X#EmptySchedule (class in simpy.core)jUtr`(j_XInfinity (in module simpy.core)jUtr`ej&]j/]j8]r`((j_Xsimpy (module)X module-simpyUtr`(j_Xtest() (in module simpy)jUtr`ejI]jR]j[]jd]jm]r`((j_X!simpy.resources.resource (module)Xmodule-simpy.resources.resourceUtr `(j_X,Resource (class in simpy.resources.resource)jUtr `(j_X3users (simpy.resources.resource.Resource attribute)jbUtr `(j_X3queue (simpy.resources.resource.Resource attribute)jeUtr `(j_X6capacity (simpy.resources.resource.Resource attribute)jUtr `(j_X3count (simpy.resources.resource.Resource attribute)joUtr`(j_X5request (simpy.resources.resource.Resource attribute)jUtr`(j_X5release (simpy.resources.resource.Resource attribute)jUtr`(j_X4PriorityResource (class in simpy.resources.resource)jUtr`(j_X>PutQueue (simpy.resources.resource.PriorityResource attribute)j2Utr`(j_X>GetQueue (simpy.resources.resource.PriorityResource attribute)jUtr`(j_X=request (simpy.resources.resource.PriorityResource attribute)jUtr`(j_X6PreemptiveResource (class in simpy.resources.resource)jUtr`(j_X-Preempted (class in simpy.resources.resource)jYUtr`(j_X1by (simpy.resources.resource.Preempted attribute)jFUtr`(j_X:usage_since (simpy.resources.resource.Preempted attribute)jUtr`(j_X+Request (class in simpy.resources.resource)jQUtr`(j_X+Release (class in simpy.resources.resource)jIUtr`(j_X4request (simpy.resources.resource.Release attribute)jUtr`(j_X3PriorityRequest (class in simpy.resources.resource)j)Utr`(j_X=priority (simpy.resources.resource.PriorityRequest attribute)jUtr`(j_X<preempt (simpy.resources.resource.PriorityRequest attribute)j!Utr`(j_X9time (simpy.resources.resource.PriorityRequest attribute)jUtr`(j_X8key (simpy.resources.resource.PriorityRequest attribute)jUtr `(j_X/SortedQueue (class in simpy.resources.resource)j6Utr!`(j_X7maxlen (simpy.resources.resource.SortedQueue attribute)jwUtr"`(j_X6append() (simpy.resources.resource.SortedQueue method)jUtr#`ej~]j]j]r$`((j_Xsimpy.resources.store (module)Xmodule-simpy.resources.storeUtr%`(j_X&Store (class in simpy.resources.store)jUtr&`(j_X-items (simpy.resources.store.Store attribute)jUtr'`(j_X0capacity (simpy.resources.store.Store attribute)jUtr(`(j_X+put (simpy.resources.store.Store attribute)j{Utr)`(j_X+get (simpy.resources.store.Store attribute)j.Utr*`(j_X,FilterStore (class in simpy.resources.store)j_Utr+`(j_X6GetQueue (simpy.resources.store.FilterStore attribute)j4Utr,`(j_X1get (simpy.resources.store.FilterStore attribute)jUtr-`(j_X)StorePut (class in simpy.resources.store)jhUtr.`(j_X/item (simpy.resources.store.StorePut attribute)jTUtr/`(j_X)StoreGet (class in simpy.resources.store)jUtr0`(j_X/FilterStoreGet (class in simpy.resources.store)jDUtr1`(j_X7filter (simpy.resources.store.FilterStoreGet attribute)jUtr2`(j_X,FilterQueue (class in simpy.resources.store)jUtr3`ej]j]r4`((j_Xsimpy.resources.base (module)Xmodule-simpy.resources.baseUtr5`(j_X,BaseResource (class in simpy.resources.base)jUtr6`(j_X6PutQueue (simpy.resources.base.BaseResource attribute)j8Utr7`(j_X6GetQueue (simpy.resources.base.BaseResource attribute)j0Utr8`(j_X7put_queue (simpy.resources.base.BaseResource attribute)jkUtr9`(j_X7get_queue (simpy.resources.base.BaseResource attribute)jUtr:`(j_X1put (simpy.resources.base.BaseResource attribute)j(Utr;`(j_X1get (simpy.resources.base.BaseResource attribute)j;Utr<`(j_X4_do_put() (simpy.resources.base.BaseResource method)jPUtr=`(j_X9_trigger_put() (simpy.resources.base.BaseResource method)j'Utr>`(j_X4_do_get() (simpy.resources.base.BaseResource method)jUtr?`(j_X9_trigger_get() (simpy.resources.base.BaseResource method)jUtr@`(j_X#Put (class in simpy.resources.base)jUtrA`(j_X*cancel() (simpy.resources.base.Put method)j1UtrB`(j_X#Get (class in simpy.resources.base)j?UtrC`(j_X*cancel() (simpy.resources.base.Get method)jUtrD`ej]rE`(j_Xsimpy.resources (module)Xmodule-simpy.resourcesUtrF`aj]j]rG`((j_Xsimpy.rt (module)Xmodule-simpy.rtUtrH`(j_X'RealtimeEnvironment (class in simpy.rt)jUtrI`(j_X/factor (simpy.rt.RealtimeEnvironment attribute)jUtrJ`(j_X/strict (simpy.rt.RealtimeEnvironment attribute)jUtrK`(j_X,step() (simpy.rt.RealtimeEnvironment method)jUtrL`euUall_docsrM`}rN`(hGAҽwh$GAҾ\Eh-GAҾOh6GAҾPVh?GAҾdphHGAҾKyhQGAҽthZGAҾ>9hcGAҽ9"hlGAҽ^huGAҾM8h~GAҾajhGAҾ=hGAҾLQhGAҽBhGAҾedhGAҽhGAҾ?0hGAҾNhGAҾ 'hGAҾ & hGAҾTLhGAҾBjGAҾ4LjGAҽKj&GAҾ]Zyj/GAҾE\Sj8GAҽsjIGAҾQUjRGAҾJJj[GAҽ{_jdGAҽjmGAҾ,jj~GAҾA/jGAҾXjGAҾ6jGAҾI,jGAҾOjGAҾjGAҾRjGAҾ:ӮuUsettingsrO`}rP`(Ucloak_email_addressesrQ`Utrim_footnote_reference_spacerR`U halt_levelrS`KUsectsubtitle_xformrT`Uembed_stylesheetrU`U pep_base_urlrV`Uhttp://www.python.org/dev/peps/rW`Udoctitle_xformrX`Uwarning_streamrY`csphinx.util.nodes WarningStream rZ`)r[`}r\`(U_rer]`cre _compile r^`U+\((DEBUG|INFO|WARNING|ERROR|SEVERE)/[0-4]\)r_`KRr``Uwarnfuncra`NubUenvrb`hU rfc_base_urlrc`Uhttp://tools.ietf.org/html/rd`Ufile_insertion_enabledre`Ugettext_compactrf`Uinput_encodingrg`U utf-8-sigrh`uUfiles_to_rebuildri`}rj`(jUh]rk`hQaRrl`jUh]rm`j&aRrn`jUh]ro`h6aRrp`jUh]rq`hZaRrr`jUh]rs`j&aRrt`jUh]ru`j/aRrv`jUh]rw`hZaRrx`jUh]ry`h6aRrz`jUh]r{`hQaRr|`jUh]r}`hQaRr~`jUh]r`hZaRr`jUh]r`j&aRr`jUh]r`j[aRr`jUh]r`j/aRr`jUh]r`hQaRr`jUh]r`j&aRr`jUh]r`hQaRr`jUh]r`j/aRr`jUh]r`j[aRr`jUh]r`j[aRr`jUh]r`h6aRr`jUh]r`j/aRr`jUh]r`j[aRr`jUh]r`j[aRr`jUh]r`hZaRr`jUh]r`hZaRr`jUh]r`j[aRr`jUh]r`h6aRr`jUh]r`j/aRr`jUh]r`hZaRr`jUh]r`hQaRr`jUh]r`j[aRr`jUh]r`j/aRr`jUh]r`j&aRr`jUh]r`j[aRr`jUh]r`j/aRr`jUh]r`j[aRr`jUh]r`j[aRr`jUh]r`h6aRr`jUh]r`j[aRr`uUtoc_secnumbersr`}U_nitpick_ignorer`h]Rr`ub.PK.D #simpy-3.0.5/.doctrees/index.doctreecdocutils.nodes document q)q}q(U nametypesq}qX simpy homeqNsUsubstitution_defsq}qUparse_messagesq ]q Ucurrent_sourceq NU decorationq NUautofootnote_startq KUnameidsq}qhU simpy-homeqsUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqcdocutils.nodes reprunicode qX;/var/build/user_builds/simpy/checkouts/3.0.5/docs/index.rstqq}qbUtagnameqUsectionqU attributesq}q (Udupnamesq!]Uclassesq"]Ubackrefsq#]Uidsq$]q%haUnamesq&]q'hauUlineq(KUdocumentq)hh]q*(cdocutils.nodes title q+)q,}q-(hX SimPy homeq.hhhhhUtitleq/h}q0(h!]h"]h#]h$]h&]uh(Kh)hh]q1cdocutils.nodes Text q2X SimPy homeq3q4}q5(hh.hh,ubaubcdocutils.nodes comment q6)q7}q8(hX9_templates/index.html contains the content for this page.hhhhhUcommentq9h}q:(U xml:spaceq;Upreserveqq?}q@(hUhh7ubaubeubahUU transformerqANU footnote_refsqB}qCUrefnamesqD}qEUsymbol_footnotesqF]qGUautofootnote_refsqH]qIUsymbol_footnote_refsqJ]qKU citationsqL]qMh)hU current_lineqNNUtransform_messagesqO]qPUreporterqQNUid_startqRKU autofootnotesqS]qTU citation_refsqU}qVUindirect_targetsqW]qXUsettingsqY(cdocutils.frontend Values qZoq[}q\(Ufootnote_backlinksq]KUrecord_dependenciesq^NU rfc_base_urlq_Uhttp://tools.ietf.org/html/q`U tracebackqaUpep_referencesqbNUstrip_commentsqcNU toc_backlinksqdUentryqeU language_codeqfUenqgU datestampqhNU report_levelqiKU _destinationqjNU halt_levelqkKU strip_classesqlNh/NUerror_encoding_error_handlerqmUbackslashreplaceqnUdebugqoNUembed_stylesheetqpUoutput_encoding_error_handlerqqUstrictqrU sectnum_xformqsKUdump_transformsqtNU docinfo_xformquKUwarning_streamqvNUpep_file_url_templateqwUpep-%04dqxUexit_status_levelqyKUconfigqzNUstrict_visitorq{NUcloak_email_addressesq|Utrim_footnote_reference_spaceq}Uenvq~NUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqU;/var/build/user_builds/simpy/checkouts/3.0.5/docs/index.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhrUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]Ufile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}qhhsUsubstitution_namesq}qhh)h}q(h!]h$]h#]Usourcehh"]h&]uU footnotesq]qUrefidsq}qub.PK.D&simpy-3.0.5/.doctrees/contents.doctreecdocutils.nodes document q)q}q(U nametypesq}q(Xdocumentation for simpyqNXindices and tablesqNuUsubstitution_defsq}q Uparse_messagesq ]q Ucurrent_sourceq NU decorationq NUautofootnote_startqKUnameidsq}q(hUdocumentation-for-simpyqhUindices-and-tablesquUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqcdocutils.nodes reprunicode qX>/var/build/user_builds/simpy/checkouts/3.0.5/docs/contents.rstqq}qbUtagnameqUsectionq U attributesq!}q"(Udupnamesq#]Uclassesq$]Ubackrefsq%]Uidsq&]q'haUnamesq(]q)hauUlineq*KUdocumentq+hh]q,(cdocutils.nodes title q-)q.}q/(hXDocumentation for SimPyq0hhhhhUtitleq1h!}q2(h#]h$]h%]h&]h(]uh*Kh+hh]q3cdocutils.nodes Text q4XDocumentation for SimPyq5q6}q7(hh0hh.ubaubcdocutils.nodes paragraph q8)q9}q:(hX Contents:q;hhhhhU paragraphqh4X Contents:q?q@}qA(hh;hh9ubaubcdocutils.nodes compound qB)qC}qD(hUhhhhhUcompoundqEh!}qF(h#]h$]qGUtoctree-wrapperqHah%]h&]h(]uh*Nh+hh]qIcsphinx.addnodes toctree qJ)qK}qL(hUhhChhhUtoctreeqMh!}qN(UnumberedqOKU includehiddenqPhXcontentsqQU titlesonlyqRUglobqSh&]h%]h#]h$]h(]UentriesqT]qU(X SimPy homeXindexqVqWNXsimpy_intro/indexqXqYNXtopical_guides/indexqZq[NXexamples/indexq\q]NXapi_reference/indexq^q_NX about/indexq`qaeUhiddenqbU includefilesqc]qd(hVhXhZh\h^h`eUmaxdepthqeKuh*Kh]ubaubh)qf}qg(hUhhhhhh h!}qh(h#]h$]h%]h&]qihah(]qjhauh*Kh+hh]qk(h-)ql}qm(hXIndices and tablesqnhhfhhhh1h!}qo(h#]h$]h%]h&]h(]uh*Kh+hh]qph4XIndices and tablesqqqr}qs(hhnhhlubaubcdocutils.nodes bullet_list qt)qu}qv(hUhhfhhhU bullet_listqwh!}qx(UbulletqyX*h&]h%]h#]h$]h(]uh*Kh+hh]qz(cdocutils.nodes list_item q{)q|}q}(hX:ref:`genindex`q~hhuhhhU list_itemqh!}q(h#]h$]h%]h&]h(]uh*Nh+hh]qh8)q}q(hh~hh|hhhh/var/build/user_builds/simpy/checkouts/3.0.5/docs/contents.rstrUgettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongr Uinput_encoding_error_handlerr hUauto_id_prefixr Uidr Udoctitle_xformr Ustrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hhfhhuUsubstitution_namesr}rhh+h!}r(h#]h&]h%]Usourcehh$]h(]uU footnotesr]rUrefidsr}rub.PK.DO|ʈ**8simpy-3.0.5/.doctrees/api_reference/simpy.events.doctreecdocutils.nodes document q)q}q(U nametypesq}q(Xsimpy.events.ProcessqXsimpy.events.AnyOfqX!simpy.events.Condition.any_eventsqXsimpy.events.Event.succeedq Xsimpy.events.Interruptq Xsimpy.events.Interrupt.causeq Xsimpy.events.Event.valueq Xsimpy.events.AllOfq Xsimpy.events.Event.envqXsimpy.events.TimeoutqXsimpy.events.Event.callbacksqXsimpy.events.Process.targetqXsimpy.events.NORMALqXsimpy.events.ConditionqXsimpy.events.InterruptionqXsimpy.events.Event.failqXsimpy.events.EventqXsimpy.events.InitializeqXsimpy.events.Event.processedqXsimpy.events.PENDINGqXsimpy.events.Event.triggeredqX!simpy.events --- core event typesqNXsimpy.events.URGENTqX!simpy.events.Condition.all_eventsqXsimpy.events.Process.interruptqXsimpy.events.Process.is_aliveqXsimpy.events.Event.triggerq uUsubstitution_defsq!}q"Uparse_messagesq#]q$Ucurrent_sourceq%NU decorationq&NUautofootnote_startq'KUnameidsq(}q)(hhhhhhh h h h h h h h h h hhhhhhhhhhhhhhhhhhhhhhhhhhhUsimpy-events-core-event-typesq*hhhhhhhhh h uUchildrenq+]q,cdocutils.nodes section q-)q.}q/(U rawsourceq0UUparentq1hUsourceq2cdocutils.nodes reprunicode q3XP/var/build/user_builds/simpy/checkouts/3.0.5/docs/api_reference/simpy.events.rstq4q5}q6bUtagnameq7Usectionq8U attributesq9}q:(Udupnamesq;]Uclassesq<]Ubackrefsq=]Uidsq>]q?(Xmodule-simpy.eventsq@h*eUnamesqA]qBhauUlineqCKUdocumentqDhh+]qE(cdocutils.nodes title qF)qG}qH(h0X%``simpy.events`` --- Core event typesqIh1h.h2h5h7UtitleqJh9}qK(h;]h<]h=]h>]hA]uhCKhDhh+]qL(cdocutils.nodes literal qM)qN}qO(h0X``simpy.events``qPh9}qQ(h;]h<]h=]h>]hA]uh1hGh+]qRcdocutils.nodes Text qSX simpy.eventsqTqU}qV(h0Uh1hNubah7UliteralqWubhSX --- Core event typesqXqY}qZ(h0X --- Core event typesq[h1hGubeubcsphinx.addnodes index q\)q]}q^(h0Uh1h.h2U q_h7Uindexq`h9}qa(h>]h=]h;]h<]hA]Uentries]qb(UsingleqcXsimpy.events (module)Xmodule-simpy.eventsUtqdauhCKhDhh+]ubcdocutils.nodes paragraph qe)qf}qg(h0XLThis *events* module contains the various event type used by the SimPy core.qhh1h.h2XV/var/build/user_builds/simpy/checkouts/3.0.5/simpy/events.py:docstring of simpy.eventsqih7U paragraphqjh9}qk(h;]h<]h=]h>]hA]uhCKhDhh+]ql(hSXThis qmqn}qo(h0XThis h1hfubcdocutils.nodes emphasis qp)qq}qr(h0X*events*h9}qs(h;]h<]h=]h>]hA]uh1hfh+]qthSXeventsquqv}qw(h0Uh1hqubah7UemphasisqxubhSX? module contains the various event type used by the SimPy core.qyqz}q{(h0X? module contains the various event type used by the SimPy core.h1hfubeubhe)q|}q}(h0XThe base class for all events is :class:`Event`. Though it can be directly used, there are several specialized subclasses of it:h1h.h2hih7hjh9}q~(h;]h<]h=]h>]hA]uhCKhDhh+]q(hSX!The base class for all events is qq}q(h0X!The base class for all events is h1h|ubcsphinx.addnodes pending_xref q)q}q(h0X:class:`Event`qh1h|h2h5h7U pending_xrefqh9}q(UreftypeXclassUrefwarnqU reftargetqXEventU refdomainXpyqh>]h=]U refexplicith;]h<]hA]UrefdocqXapi_reference/simpy.eventsqUpy:classqNU py:moduleqX simpy.eventsquhCKh+]qhM)q}q(h0hh9}q(h;]h<]q(UxrefqhXpy-classqeh=]h>]hA]uh1hh+]qhSXEventqq}q(h0Uh1hubah7hWubaubhSXQ. Though it can be directly used, there are several specialized subclasses of it:qq}q(h0XQ. Though it can be directly used, there are several specialized subclasses of it:h1h|ubeubcdocutils.nodes bullet_list q)q}q(h0Uh1h.h2hih7U bullet_listqh9}q(UbulletqX-h>]h=]h;]h<]hA]uhCKhDhh+]q(cdocutils.nodes list_item q)q}q(h0Xv:class:`Timeout`: is scheduled with a certain delay and lets processes hold their state for a certain amount of time. h1hh2hih7U list_itemqh9}q(h;]h<]h=]h>]hA]uhCNhDhh+]qhe)q}q(h0Xu:class:`Timeout`: is scheduled with a certain delay and lets processes hold their state for a certain amount of time.h1hh2hih7hjh9}q(h;]h<]h=]h>]hA]uhCKh+]q(h)q}q(h0X:class:`Timeout`qh1hh2h5h7hh9}q(UreftypeXclasshhXTimeoutU refdomainXpyqh>]h=]U refexplicith;]h<]hA]hhhNhhuhCK h+]qhM)q}q(h0hh9}q(h;]h<]q(hhXpy-classqeh=]h>]hA]uh1hh+]qhSXTimeoutqq}q(h0Uh1hubah7hWubaubhSXe: is scheduled with a certain delay and lets processes hold their state for a certain amount of time.qq}q(h0Xe: is scheduled with a certain delay and lets processes hold their state for a certain amount of time.h1hubeubaubh)q}q(h0X9:class:`Initialize`: Initializes a new :class:`Process`. h1hh2hih7hh9}q(h;]h<]h=]h>]hA]uhCNhDhh+]qhe)q}q(h0X8:class:`Initialize`: Initializes a new :class:`Process`.h1hh2hih7hjh9}q(h;]h<]h=]h>]hA]uhCK h+]q(h)q}q(h0X:class:`Initialize`qh1hh2Nh7hh9}q(UreftypeXclasshhX InitializeU refdomainXpyqh>]h=]U refexplicith;]h<]hA]hhhNhhuhCNh+]qhM)q}q(h0hh9}q(h;]h<]q(hhXpy-classqeh=]h>]hA]uh1hh+]qhSX Initializeqօq}q(h0Uh1hubah7hWubaubhSX: Initializes a new qمq}q(h0X: Initializes a new h1hubh)q}q(h0X:class:`Process`qh1hh2Nh7hh9}q(UreftypeXclasshhXProcessU refdomainXpyqh>]h=]U refexplicith;]h<]hA]hhhNhhuhCNh+]qhM)q}q(h0hh9}q(h;]h<]q(hhXpy-classqeh=]h>]hA]uh1hh+]qhSXProcessq腁q}q(h0Uh1hubah7hWubaubhSX.q}q(h0X.h1hubeubaubh)q}q(h0Xq:class:`Process`: Processes are also modeled as an event so other processes can wait until another one finishes. h1hh2hih7hh9}q(h;]h<]h=]h>]hA]uhCNhDhh+]qhe)q}q(h0Xp:class:`Process`: Processes are also modeled as an event so other processes can wait until another one finishes.h1hh2hih7hjh9}q(h;]h<]h=]h>]hA]uhCK h+]q(h)q}q(h0X:class:`Process`qh1hh2Nh7hh9}q(UreftypeXclasshhXProcessU refdomainXpyqh>]h=]U refexplicith;]h<]hA]hhhNhhuhCNh+]qhM)q}q(h0hh9}q(h;]h<]q(hhXpy-classqeh=]h>]hA]uh1hh+]rhSXProcessrr}r(h0Uh1hubah7hWubaubhSX`: Processes are also modeled as an event so other processes can wait until another one finishes.rr}r(h0X`: Processes are also modeled as an event so other processes can wait until another one finishes.h1hubeubaubh)r}r(h0X:class:`Condition`: Events can be concatenated with ``|`` an ``&`` to either wait until one or both of the events are triggered. h1hh2hih7hh9}r (h;]h<]h=]h>]hA]uhCNhDhh+]r he)r }r (h0X:class:`Condition`: Events can be concatenated with ``|`` an ``&`` to either wait until one or both of the events are triggered.h1jh2hih7hjh9}r (h;]h<]h=]h>]hA]uhCKh+]r(h)r}r(h0X:class:`Condition`rh1j h2Nh7hh9}r(UreftypeXclasshhX ConditionU refdomainXpyrh>]h=]U refexplicith;]h<]hA]hhhNhhuhCNh+]rhM)r}r(h0jh9}r(h;]h<]r(hjXpy-classreh=]h>]hA]uh1jh+]rhSX Conditionrr}r(h0Uh1jubah7hWubaubhSX": Events can be concatenated with rr}r (h0X": Events can be concatenated with h1j ubhM)r!}r"(h0X``|``h9}r#(h;]h<]h=]h>]hA]uh1j h+]r$hSX|r%}r&(h0Uh1j!ubah7hWubhSX an r'r(}r)(h0X an h1j ubhM)r*}r+(h0X``&``h9}r,(h;]h<]h=]h>]hA]uh1j h+]r-hSX&r.}r/(h0Uh1j*ubah7hWubhSX> to either wait until one or both of the events are triggered.r0r1}r2(h0X> to either wait until one or both of the events are triggered.h1j ubeubaubh)r3}r4(h0Xd:class:`AllOf`: Special case of :class:`Condition`; wait until a list of events has been triggered. h1hh2hih7hh9}r5(h;]h<]h=]h>]hA]uhCNhDhh+]r6he)r7}r8(h0Xc:class:`AllOf`: Special case of :class:`Condition`; wait until a list of events has been triggered.h1j3h2hih7hjh9}r9(h;]h<]h=]h>]hA]uhCKh+]r:(h)r;}r<(h0X:class:`AllOf`r=h1j7h2Nh7hh9}r>(UreftypeXclasshhXAllOfU refdomainXpyr?h>]h=]U refexplicith;]h<]hA]hhhNhhuhCNh+]r@hM)rA}rB(h0j=h9}rC(h;]h<]rD(hj?Xpy-classrEeh=]h>]hA]uh1j;h+]rFhSXAllOfrGrH}rI(h0Uh1jAubah7hWubaubhSX: Special case of rJrK}rL(h0X: Special case of h1j7ubh)rM}rN(h0X:class:`Condition`rOh1j7h2Nh7hh9}rP(UreftypeXclasshhX ConditionU refdomainXpyrQh>]h=]U refexplicith;]h<]hA]hhhNhhuhCNh+]rRhM)rS}rT(h0jOh9}rU(h;]h<]rV(hjQXpy-classrWeh=]h>]hA]uh1jMh+]rXhSX ConditionrYrZ}r[(h0Uh1jSubah7hWubaubhSX1; wait until a list of events has been triggered.r\r]}r^(h0X1; wait until a list of events has been triggered.h1j7ubeubaubh)r_}r`(h0Xk:class:`AnyOf`: Special case of :class:`Condition`; wait until one of a list of events has been triggered. h1hh2hih7hh9}ra(h;]h<]h=]h>]hA]uhCNhDhh+]rbhe)rc}rd(h0Xj:class:`AnyOf`: Special case of :class:`Condition`; wait until one of a list of events has been triggered.h1j_h2hih7hjh9}re(h;]h<]h=]h>]hA]uhCKh+]rf(h)rg}rh(h0X:class:`AnyOf`rih1jch2Nh7hh9}rj(UreftypeXclasshhXAnyOfU refdomainXpyrkh>]h=]U refexplicith;]h<]hA]hhhNhhuhCNh+]rlhM)rm}rn(h0jih9}ro(h;]h<]rp(hjkXpy-classrqeh=]h>]hA]uh1jgh+]rrhSXAnyOfrsrt}ru(h0Uh1jmubah7hWubaubhSX: Special case of rvrw}rx(h0X: Special case of h1jcubh)ry}rz(h0X:class:`Condition`r{h1jch2Nh7hh9}r|(UreftypeXclasshhX ConditionU refdomainXpyr}h>]h=]U refexplicith;]h<]hA]hhhNhhuhCNh+]r~hM)r}r(h0j{h9}r(h;]h<]r(hj}Xpy-classreh=]h>]hA]uh1jyh+]rhSX Conditionrr}r(h0Uh1jubah7hWubaubhSX8; wait until one of a list of events has been triggered.rr}r(h0X8; wait until one of a list of events has been triggered.h1jcubeubaubeubhe)r}r(h0X8This module also defines the :exc:`Interrupt` exception.rh1h.h2hih7hjh9}r(h;]h<]h=]h>]hA]uhCKhDhh+]r(hSXThis module also defines the rr}r(h0XThis module also defines the h1jubh)r}r(h0X:exc:`Interrupt`rh1jh2Nh7hh9}r(UreftypeXexchhX InterruptU refdomainXpyrh>]h=]U refexplicith;]h<]hA]hhhNhhuhCNh+]rhM)r}r(h0jh9}r(h;]h<]r(hjXpy-excreh=]h>]hA]uh1jh+]rhSX Interruptrr}r(h0Uh1jubah7hWubaubhSX exception.rr}r(h0X exception.h1jubeubh\)r}r(h0Uh1h.h2X^/var/build/user_builds/simpy/checkouts/3.0.5/simpy/events.py:docstring of simpy.events.PENDINGrh7h`h9}r(h>]h=]h;]h<]hA]Uentries]r(hcX PENDING (in module simpy.events)hUtrauhCNhDhh+]ubcsphinx.addnodes desc r)r}r(h0Uh1h.h2jh7Udescrh9}r(UnoindexrUdomainrXpyh>]h=]h;]h<]hA]UobjtyperXdatarUdesctyperjuhCNhDhh+]r(csphinx.addnodes desc_signature r)r}r(h0XPENDINGrh1jh2U rh7Udesc_signaturerh9}r(h>]rhaUmodulerh3X simpy.eventsrr}rbh=]h;]h<]hA]rhaUfullnamerjUclassrUUfirstruhCNhDhh+]r(csphinx.addnodes desc_addname r)r}r(h0X simpy.events.h1jh2jh7U desc_addnamerh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhSX simpy.events.rr}r(h0Uh1jubaubcsphinx.addnodes desc_name r)r}r(h0jh1jh2jh7U desc_namerh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhSXPENDINGrr}r(h0Uh1jubaubcsphinx.addnodes desc_annotation r)r}r(h0X = object()h1jh2jh7Udesc_annotationrh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhSX = object()rr}r(h0Uh1jubaubeubcsphinx.addnodes desc_content r)r}r(h0Uh1jh2jh7U desc_contentrh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhe)r}r(h0X3Unique object to identify pending values of events.rh1jh2jh7hjh9}r(h;]h<]h=]h>]hA]uhCKhDhh+]rhSX3Unique object to identify pending values of events.rr}r(h0jh1jubaubaubeubh\)r}r(h0Uh1h.h2X]/var/build/user_builds/simpy/checkouts/3.0.5/simpy/events.py:docstring of simpy.events.URGENTrh7h`h9}r(h>]h=]h;]h<]hA]Uentries]r(hcXURGENT (in module simpy.events)hUtrauhCNhDhh+]ubj)r}r(h0Uh1h.h2jh7jh9}r(jjXpyh>]h=]h;]h<]hA]jXdatarjjuhCNhDhh+]r(j)r}r(h0XURGENTrh1jh2jh7jh9}r(h>]rhajh3X simpy.eventsrr}rbh=]h;]h<]hA]rhajjjUjuhCNhDhh+]r(j)r}r(h0X simpy.events.h1jh2jh7jh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhSX simpy.events.r r }r (h0Uh1jubaubj)r }r (h0jh1jh2jh7jh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhSXURGENTrr}r(h0Uh1j ubaubj)r}r(h0X = 0h1jh2jh7jh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhSX = 0rr}r(h0Uh1jubaubeubj)r}r(h0Uh1jh2jh7jh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhe)r}r(h0X9Priority of interrupts and process initialization events.r h1jh2jh7hjh9}r!(h;]h<]h=]h>]hA]uhCKhDhh+]r"hSX9Priority of interrupts and process initialization events.r#r$}r%(h0j h1jubaubaubeubh\)r&}r'(h0Uh1h.h2X]/var/build/user_builds/simpy/checkouts/3.0.5/simpy/events.py:docstring of simpy.events.NORMALr(h7h`h9}r)(h>]h=]h;]h<]hA]Uentries]r*(hcXNORMAL (in module simpy.events)hUtr+auhCNhDhh+]ubj)r,}r-(h0Uh1h.h2j(h7jh9}r.(jjXpyh>]h=]h;]h<]hA]jXdatar/jj/uhCNhDhh+]r0(j)r1}r2(h0XNORMALr3h1j,h2jh7jh9}r4(h>]r5hajh3X simpy.eventsr6r7}r8bh=]h;]h<]hA]r9hajj3jUjuhCNhDhh+]r:(j)r;}r<(h0X simpy.events.h1j1h2jh7jh9}r=(h;]h<]h=]h>]hA]uhCNhDhh+]r>hSX simpy.events.r?r@}rA(h0Uh1j;ubaubj)rB}rC(h0j3h1j1h2jh7jh9}rD(h;]h<]h=]h>]hA]uhCNhDhh+]rEhSXNORMALrFrG}rH(h0Uh1jBubaubj)rI}rJ(h0X = 1h1j1h2jh7jh9}rK(h;]h<]h=]h>]hA]uhCNhDhh+]rLhSX = 1rMrN}rO(h0Uh1jIubaubeubj)rP}rQ(h0Uh1j,h2jh7jh9}rR(h;]h<]h=]h>]hA]uhCNhDhh+]rShe)rT}rU(h0X Default priority used by events.rVh1jPh2j(h7hjh9}rW(h;]h<]h=]h>]hA]uhCKhDhh+]rXhSX Default priority used by events.rYrZ}r[(h0jVh1jTubaubaubeubh\)r\}r](h0Uh1h.h2Nh7h`h9}r^(h>]h=]h;]h<]hA]Uentries]r_(hcXEvent (class in simpy.events)hUtr`auhCNhDhh+]ubj)ra}rb(h0Uh1h.h2Nh7jh9}rc(jjXpyh>]h=]h;]h<]hA]jXclassrdjjduhCNhDhh+]re(j)rf}rg(h0X Event(env)h1jah2U rhh7jh9}ri(h>]rjhajh3X simpy.eventsrkrl}rmbh=]h;]h<]hA]rnhajXEventrojUjuhCNhDhh+]rp(j)rq}rr(h0Xclass h1jfh2jhh7jh9}rs(h;]h<]h=]h>]hA]uhCNhDhh+]rthSXclass rurv}rw(h0Uh1jqubaubj)rx}ry(h0X simpy.events.h1jfh2jhh7jh9}rz(h;]h<]h=]h>]hA]uhCNhDhh+]r{hSX simpy.events.r|r}}r~(h0Uh1jxubaubj)r}r(h0joh1jfh2jhh7jh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhSXEventrr}r(h0Uh1jubaubcsphinx.addnodes desc_parameterlist r)r}r(h0Uh1jfh2jhh7Udesc_parameterlistrh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rcsphinx.addnodes desc_parameter r)r}r(h0Xenvh9}r(h;]h<]h=]h>]hA]uh1jh+]rhSXenvrr}r(h0Uh1jubah7Udesc_parameterrubaubeubj)r}r(h0Uh1jah2jhh7jh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]r(he)r}r(h0XBase class for all events.rh1jh2X\/var/build/user_builds/simpy/checkouts/3.0.5/simpy/events.py:docstring of simpy.events.Eventrh7hjh9}r(h;]h<]h=]h>]hA]uhCKhDhh+]rhSXBase class for all events.rr}r(h0jh1jubaubhe)r}r(h0XtEvery event is bound to an environment *env* (see :class:`~simpy.core.BaseEnvironment`) and has an optional *value*.h1jh2jh7hjh9}r(h;]h<]h=]h>]hA]uhCKhDhh+]r(hSX'Every event is bound to an environment rr}r(h0X'Every event is bound to an environment h1jubhp)r}r(h0X*env*h9}r(h;]h<]h=]h>]hA]uh1jh+]rhSXenvrr}r(h0Uh1jubah7hxubhSX (see rr}r(h0X (see h1jubh)r}r(h0X$:class:`~simpy.core.BaseEnvironment`rh1jh2Nh7hh9}r(UreftypeXclasshhXsimpy.core.BaseEnvironmentU refdomainXpyrh>]h=]U refexplicith;]h<]hA]hhhjohhuhCNh+]rhM)r}r(h0jh9}r(h;]h<]r(hjXpy-classreh=]h>]hA]uh1jh+]rhSXBaseEnvironmentrr}r(h0Uh1jubah7hWubaubhSX) and has an optional rr}r(h0X) and has an optional h1jubhp)r}r(h0X*value*h9}r(h;]h<]h=]h>]hA]uh1jh+]rhSXvaluerr}r(h0Uh1jubah7hxubhSX.r}r(h0X.h1jubeubhe)r}r(h0XPAn event has a list of :attr:`callbacks`. A callback can be any callable that accepts a single argument which is the event instances the callback belongs to. This list is not exclusively for SimPy internals---you can also append custom callbacks. All callbacks are executed in the order that they were added when the event is processed.h1jh2jh7hjh9}r(h;]h<]h=]h>]hA]uhCKhDhh+]r(hSXAn event has a list of rr}r(h0XAn event has a list of h1jubh)r}r(h0X:attr:`callbacks`rh1jh2Nh7hh9}r(UreftypeXattrhhX callbacksU refdomainXpyrh>]h=]U refexplicith;]h<]hA]hhhjohhuhCNh+]rhM)r}r(h0jh9}r(h;]h<]r(hjXpy-attrreh=]h>]hA]uh1jh+]rhSX callbacksrr}r(h0Uh1jubah7hWubaubhSX(. A callback can be any callable that accepts a single argument which is the event instances the callback belongs to. This list is not exclusively for SimPy internals---you can also append custom callbacks. All callbacks are executed in the order that they were added when the event is processed.rr}r(h0X(. A callback can be any callable that accepts a single argument which is the event instances the callback belongs to. This list is not exclusively for SimPy internals---you can also append custom callbacks. All callbacks are executed in the order that they were added when the event is processed.h1jubeubhe)r}r(h0XThis class also implements ``__and__()`` (``&``) and ``__or__()`` (``|``). If you concatenate two events using one of these operators, a :class:`Condition` event is generated that lets you wait for both or one of them.h1jh2jh7hjh9}r(h;]h<]h=]h>]hA]uhCK hDhh+]r(hSXThis class also implements rr}r(h0XThis class also implements h1jubhM)r}r(h0X ``__and__()``h9}r(h;]h<]h=]h>]hA]uh1jh+]rhSX __and__()rr}r(h0Uh1jubah7hWubhSX (rr}r(h0X (h1jubhM)r}r(h0X``&``h9}r(h;]h<]h=]h>]hA]uh1jh+]rhSX&r}r(h0Uh1jubah7hWubhSX) and rr}r(h0X) and h1jubhM)r}r(h0X ``__or__()``h9}r(h;]h<]h=]h>]hA]uh1jh+]rhSX__or__()rr}r(h0Uh1jubah7hWubhSX (rr }r (h0X (h1jubhM)r }r (h0X``|``h9}r (h;]h<]h=]h>]hA]uh1jh+]rhSX|r}r(h0Uh1j ubah7hWubhSXA). If you concatenate two events using one of these operators, a rr}r(h0XA). If you concatenate two events using one of these operators, a h1jubh)r}r(h0X:class:`Condition`rh1jh2Nh7hh9}r(UreftypeXclasshhX ConditionU refdomainXpyrh>]h=]U refexplicith;]h<]hA]hhhjohhuhCNh+]rhM)r}r(h0jh9}r(h;]h<]r(hjXpy-classreh=]h>]hA]uh1jh+]rhSX Conditionr r!}r"(h0Uh1jubah7hWubaubhSX? event is generated that lets you wait for both or one of them.r#r$}r%(h0X? event is generated that lets you wait for both or one of them.h1jubeubh\)r&}r'(h0Uh1jh2X`/var/build/user_builds/simpy/checkouts/3.0.5/simpy/events.py:docstring of simpy.events.Event.envr(h7h`h9}r)(h>]h=]h;]h<]hA]Uentries]r*(hcX"env (simpy.events.Event attribute)hUtr+auhCNhDhh+]ubj)r,}r-(h0Uh1jh2j(h7jh9}r.(jjXpyh>]h=]h;]h<]hA]jX attributer/jj/uhCNhDhh+]r0(j)r1}r2(h0X Event.envh1j,h2U r3h7jh9}r4(h>]r5hajh3X simpy.eventsr6r7}r8bh=]h;]h<]hA]r9hajX Event.envjjojuhCNhDhh+]r:(j)r;}r<(h0Xenvh1j1h2j3h7jh9}r=(h;]h<]h=]h>]hA]uhCNhDhh+]r>hSXenvr?r@}rA(h0Uh1j;ubaubj)rB}rC(h0X = Noneh1j1h2j3h7jh9}rD(h;]h<]h=]h>]hA]uhCNhDhh+]rEhSX = NonerFrG}rH(h0Uh1jBubaubeubj)rI}rJ(h0Uh1j,h2j3h7jh9}rK(h;]h<]h=]h>]hA]uhCNhDhh+]rLhe)rM}rN(h0X8The :class:`~simpy.core.Environment` the event lives in.h1jIh2j(h7hjh9}rO(h;]h<]h=]h>]hA]uhCKhDhh+]rP(hSXThe rQrR}rS(h0XThe h1jMubh)rT}rU(h0X :class:`~simpy.core.Environment`rVh1jMh2Nh7hh9}rW(UreftypeXclasshhXsimpy.core.EnvironmentU refdomainXpyrXh>]h=]U refexplicith;]h<]hA]hhhjohhuhCNh+]rYhM)rZ}r[(h0jVh9}r\(h;]h<]r](hjXXpy-classr^eh=]h>]hA]uh1jTh+]r_hSX Environmentr`ra}rb(h0Uh1jZubah7hWubaubhSX the event lives in.rcrd}re(h0X the event lives in.h1jMubeubaubeubh\)rf}rg(h0Uh1jh2Xf/var/build/user_builds/simpy/checkouts/3.0.5/simpy/events.py:docstring of simpy.events.Event.callbacksrhh7h`h9}ri(h>]h=]h;]h<]hA]Uentries]rj(hcX(callbacks (simpy.events.Event attribute)hUtrkauhCNhDhh+]ubj)rl}rm(h0Uh1jh2jhh7jh9}rn(jjXpyh>]h=]h;]h<]hA]jX attributerojjouhCNhDhh+]rp(j)rq}rr(h0XEvent.callbacksh1jlh2j3h7jh9}rs(h>]rthajh3X simpy.eventsrurv}rwbh=]h;]h<]hA]rxhajXEvent.callbacksjjojuhCNhDhh+]ry(j)rz}r{(h0X callbacksh1jqh2j3h7jh9}r|(h;]h<]h=]h>]hA]uhCNhDhh+]r}hSX callbacksr~r}r(h0Uh1jzubaubj)r}r(h0X = Noneh1jqh2j3h7jh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhSX = Nonerr}r(h0Uh1jubaubeubj)r}r(h0Uh1jlh2j3h7jh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhe)r}r(h0X>List of functions that are called when the event is processed.rh1jh2jhh7hjh9}r(h;]h<]h=]h>]hA]uhCKhDhh+]rhSX>List of functions that are called when the event is processed.rr}r(h0jh1jubaubaubeubh\)r}r(h0Uh1jh2Xf/var/build/user_builds/simpy/checkouts/3.0.5/simpy/events.py:docstring of simpy.events.Event.triggeredrh7h`h9}r(h>]h=]h;]h<]hA]Uentries]r(hcX(triggered (simpy.events.Event attribute)hUtrauhCNhDhh+]ubj)r}r(h0Uh1jh2jh7jh9}r(jjXpyh>]h=]h;]h<]hA]jX attributerjjuhCNhDhh+]r(j)r}r(h0XEvent.triggeredh1jh2jhh7jh9}r(h>]rhajh3X simpy.eventsrr}rbh=]h;]h<]hA]rhajXEvent.triggeredjjojuhCNhDhh+]rj)r}r(h0X triggeredh1jh2jhh7jh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhSX triggeredrr}r(h0Uh1jubaubaubj)r}r(h0Uh1jh2jhh7jh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhe)r}r(h0X[Becomes ``True`` if the event has been triggered and its callbacks are about to be invoked.h1jh2jh7hjh9}r(h;]h<]h=]h>]hA]uhCKhDhh+]r(hSXBecomes rr}r(h0XBecomes h1jubhM)r}r(h0X``True``h9}r(h;]h<]h=]h>]hA]uh1jh+]rhSXTruerr}r(h0Uh1jubah7hWubhSXK if the event has been triggered and its callbacks are about to be invoked.rr}r(h0XK if the event has been triggered and its callbacks are about to be invoked.h1jubeubaubeubh\)r}r(h0Uh1jh2Xf/var/build/user_builds/simpy/checkouts/3.0.5/simpy/events.py:docstring of simpy.events.Event.processedrh7h`h9}r(h>]h=]h;]h<]hA]Uentries]r(hcX(processed (simpy.events.Event attribute)hUtrauhCNhDhh+]ubj)r}r(h0Uh1jh2jh7jh9}r(jjXpyh>]h=]h;]h<]hA]jX attributerjjuhCNhDhh+]r(j)r}r(h0XEvent.processedh1jh2jhh7jh9}r(h>]rhajh3X simpy.eventsrr}rbh=]h;]h<]hA]rhajXEvent.processedjjojuhCNhDhh+]rj)r}r(h0X processedh1jh2jhh7jh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhSX processedrr}r(h0Uh1jubaubaubj)r}r(h0Uh1jh2jhh7jh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhe)r}r(h0XYBecomes ``True`` if the event has been processed (e.g., its callbacks have been invoked).h1jh2jh7hjh9}r(h;]h<]h=]h>]hA]uhCKhDhh+]r(hSXBecomes rr}r(h0XBecomes h1jubhM)r}r(h0X``True``h9}r(h;]h<]h=]h>]hA]uh1jh+]rhSXTruerr}r(h0Uh1jubah7hWubhSXI if the event has been processed (e.g., its callbacks have been invoked).rr}r(h0XI if the event has been processed (e.g., its callbacks have been invoked).h1jubeubaubeubh\)r}r(h0Uh1jh2Xb/var/build/user_builds/simpy/checkouts/3.0.5/simpy/events.py:docstring of simpy.events.Event.valuerh7h`h9}r(h>]h=]h;]h<]hA]Uentries]r(hcX$value (simpy.events.Event attribute)h UtrauhCNhDhh+]ubj)r}r(h0Uh1jh2jh7jh9}r(jjXpyh>]h=]h;]h<]hA]jX attributerjjuhCNhDhh+]r(j)r}r(h0X Event.valueh1jh2jhh7jh9}r(h>]rh ajh3X simpy.eventsrr}rbh=]h;]h<]hA]rh ajX Event.valuejjojuhCNhDhh+]rj)r}r (h0Xvalueh1jh2jhh7jh9}r (h;]h<]h=]h>]hA]uhCNhDhh+]r hSXvaluer r }r(h0Uh1jubaubaubj)r}r(h0Uh1jh2jhh7jh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]r(he)r}r(h0X*The value of the event if it is available.rh1jh2jh7hjh9}r(h;]h<]h=]h>]hA]uhCKhDhh+]rhSX*The value of the event if it is available.rr}r(h0jh1jubaubhe)r}r(h0X9The value is available when the event has been triggered.rh1jh2jh7hjh9}r(h;]h<]h=]h>]hA]uhCKhDhh+]rhSX9The value is available when the event has been triggered.r r!}r"(h0jh1jubaubhe)r#}r$(h0X@Raise a :exc:`AttributeError` if the value is not yet available.h1jh2jh7hjh9}r%(h;]h<]h=]h>]hA]uhCKhDhh+]r&(hSXRaise a r'r(}r)(h0XRaise a h1j#ubh)r*}r+(h0X:exc:`AttributeError`r,h1j#h2Nh7hh9}r-(UreftypeXexchhXAttributeErrorU refdomainXpyr.h>]h=]U refexplicith;]h<]hA]hhhjohhuhCNh+]r/hM)r0}r1(h0j,h9}r2(h;]h<]r3(hj.Xpy-excr4eh=]h>]hA]uh1j*h+]r5hSXAttributeErrorr6r7}r8(h0Uh1j0ubah7hWubaubhSX# if the value is not yet available.r9r:}r;(h0X# if the value is not yet available.h1j#ubeubeubeubh\)r<}r=(h0Uh1jh2Xd/var/build/user_builds/simpy/checkouts/3.0.5/simpy/events.py:docstring of simpy.events.Event.triggerr>h7h`h9}r?(h>]h=]h;]h<]hA]Uentries]r@(hcX%trigger() (simpy.events.Event method)h UtrAauhCNhDhh+]ubj)rB}rC(h0Uh1jh2j>h7jh9}rD(jjXpyh>]h=]h;]h<]hA]jXmethodrEjjEuhCNhDhh+]rF(j)rG}rH(h0XEvent.trigger(event)h1jBh2jhh7jh9}rI(h>]rJh ajh3X simpy.eventsrKrL}rMbh=]h;]h<]hA]rNh ajX Event.triggerjjojuhCNhDhh+]rO(j)rP}rQ(h0Xtriggerh1jGh2jhh7jh9}rR(h;]h<]h=]h>]hA]uhCNhDhh+]rShSXtriggerrTrU}rV(h0Uh1jPubaubj)rW}rX(h0Uh1jGh2jhh7jh9}rY(h;]h<]h=]h>]hA]uhCNhDhh+]rZj)r[}r\(h0Xeventh9}r](h;]h<]h=]h>]hA]uh1jWh+]r^hSXeventr_r`}ra(h0Uh1j[ubah7jubaubeubj)rb}rc(h0Uh1jBh2jhh7jh9}rd(h;]h<]h=]h>]hA]uhCNhDhh+]re(he)rf}rg(h0XDTriggers the event with the state and value of the provided *event*.h1jbh2j>h7hjh9}rh(h;]h<]h=]h>]hA]uhCKhDhh+]ri(hSX<Triggers the event with the state and value of the provided rjrk}rl(h0X<Triggers the event with the state and value of the provided h1jfubhp)rm}rn(h0X*event*h9}ro(h;]h<]h=]h>]hA]uh1jfh+]rphSXeventrqrr}rs(h0Uh1jmubah7hxubhSX.rt}ru(h0X.h1jfubeubhe)rv}rw(h0X8This method can be used directly as a callback function.rxh1jbh2j>h7hjh9}ry(h;]h<]h=]h>]hA]uhCKhDhh+]rzhSX8This method can be used directly as a callback function.r{r|}r}(h0jxh1jvubaubeubeubh\)r~}r(h0Uh1jh2Xd/var/build/user_builds/simpy/checkouts/3.0.5/simpy/events.py:docstring of simpy.events.Event.succeedrh7h`h9}r(h>]h=]h;]h<]hA]Uentries]r(hcX%succeed() (simpy.events.Event method)h UtrauhCNhDhh+]ubj)r}r(h0Uh1jh2jh7jh9}r(jjXpyh>]h=]h;]h<]hA]jXmethodrjjuhCNhDhh+]r(j)r}r(h0XEvent.succeed(value=None)h1jh2jhh7jh9}r(h>]rh ajh3X simpy.eventsrr}rbh=]h;]h<]hA]rh ajX Event.succeedjjojuhCNhDhh+]r(j)r}r(h0Xsucceedh1jh2jhh7jh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhSXsucceedrr}r(h0Uh1jubaubj)r}r(h0Uh1jh2jhh7jh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rj)r}r(h0X value=Noneh9}r(h;]h<]h=]h>]hA]uh1jh+]rhSX value=Nonerr}r(h0Uh1jubah7jubaubeubj)r}r(h0Uh1jh2jhh7jh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]r(he)r}r(h0XHSchedule the event and mark it as successful. Return the event instance.rh1jh2jh7hjh9}r(h;]h<]h=]h>]hA]uhCKhDhh+]rhSXHSchedule the event and mark it as successful. Return the event instance.rr}r(h0jh1jubaubhe)r}r(h0XgYou can optionally pass an arbitrary ``value`` that will be sent into processes waiting for that event.h1jh2jh7hjh9}r(h;]h<]h=]h>]hA]uhCKhDhh+]r(hSX%You can optionally pass an arbitrary rr}r(h0X%You can optionally pass an arbitrary h1jubhM)r}r(h0X ``value``h9}r(h;]h<]h=]h>]hA]uh1jh+]rhSXvaluerr}r(h0Uh1jubah7hWubhSX9 that will be sent into processes waiting for that event.rr}r(h0X9 that will be sent into processes waiting for that event.h1jubeubhe)r}r(h0XERaise a :exc:`RuntimeError` if this event has already been scheduled.h1jh2jh7hjh9}r(h;]h<]h=]h>]hA]uhCKhDhh+]r(hSXRaise a rr}r(h0XRaise a h1jubh)r}r(h0X:exc:`RuntimeError`rh1jh2Nh7hh9}r(UreftypeXexchhX RuntimeErrorU refdomainXpyrh>]h=]U refexplicith;]h<]hA]hhhjohhuhCNh+]rhM)r}r(h0jh9}r(h;]h<]r(hjXpy-excreh=]h>]hA]uh1jh+]rhSX RuntimeErrorrr}r(h0Uh1jubah7hWubaubhSX* if this event has already been scheduled.rr}r(h0X* if this event has already been scheduled.h1jubeubeubeubh\)r}r(h0Uh1jh2Xa/var/build/user_builds/simpy/checkouts/3.0.5/simpy/events.py:docstring of simpy.events.Event.failrh7h`h9}r(h>]h=]h;]h<]hA]Uentries]r(hcX"fail() (simpy.events.Event method)hUtrauhCNhDhh+]ubj)r}r(h0Uh1jh2jh7jh9}r(jjXpyh>]h=]h;]h<]hA]jXmethodrjjuhCNhDhh+]r(j)r}r(h0XEvent.fail(exception)h1jh2jhh7jh9}r(h>]rhajh3X simpy.eventsrr}rbh=]h;]h<]hA]rhajX Event.failjjojuhCNhDhh+]r(j)r}r(h0Xfailh1jh2jhh7jh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhSXfailrr}r(h0Uh1jubaubj)r}r(h0Uh1jh2jhh7jh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rj)r}r(h0X exceptionh9}r(h;]h<]h=]h>]hA]uh1jh+]rhSX exceptionrr}r(h0Uh1jubah7jubaubeubj)r}r(h0Uh1jh2jhh7jh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]r(he)r}r(h0XDSchedule the event and mark it as failed. Return the event instance.rh1jh2jh7hjh9}r(h;]h<]h=]h>]hA]uhCKhDhh+]rhSXDSchedule the event and mark it as failed. Return the event instance.r r }r (h0jh1jubaubhe)r }r (h0XGThe ``exception`` will be thrown into processes waiting for that event.h1jh2jh7hjh9}r(h;]h<]h=]h>]hA]uhCKhDhh+]r(hSXThe rr}r(h0XThe h1j ubhM)r}r(h0X ``exception``h9}r(h;]h<]h=]h>]hA]uh1j h+]rhSX exceptionrr}r(h0Uh1jubah7hWubhSX6 will be thrown into processes waiting for that event.rr}r(h0X6 will be thrown into processes waiting for that event.h1j ubeubhe)r}r(h0XFRaise a :exc:`ValueError` if ``exception`` is not an :exc:`Exception`.h1jh2jh7hjh9}r(h;]h<]h=]h>]hA]uhCKhDhh+]r (hSXRaise a r!r"}r#(h0XRaise a h1jubh)r$}r%(h0X:exc:`ValueError`r&h1jh2Nh7hh9}r'(UreftypeXexchhX ValueErrorU refdomainXpyr(h>]h=]U refexplicith;]h<]hA]hhhjohhuhCNh+]r)hM)r*}r+(h0j&h9}r,(h;]h<]r-(hj(Xpy-excr.eh=]h>]hA]uh1j$h+]r/hSX ValueErrorr0r1}r2(h0Uh1j*ubah7hWubaubhSX if r3r4}r5(h0X if h1jubhM)r6}r7(h0X ``exception``h9}r8(h;]h<]h=]h>]hA]uh1jh+]r9hSX exceptionr:r;}r<(h0Uh1j6ubah7hWubhSX is not an r=r>}r?(h0X is not an h1jubh)r@}rA(h0X:exc:`Exception`rBh1jh2Nh7hh9}rC(UreftypeXexchhX ExceptionU refdomainXpyrDh>]h=]U refexplicith;]h<]hA]hhhjohhuhCNh+]rEhM)rF}rG(h0jBh9}rH(h;]h<]rI(hjDXpy-excrJeh=]h>]hA]uh1j@h+]rKhSX ExceptionrLrM}rN(h0Uh1jFubah7hWubaubhSX.rO}rP(h0X.h1jubeubhe)rQ}rR(h0XERaise a :exc:`RuntimeError` if this event has already been scheduled.h1jh2jh7hjh9}rS(h;]h<]h=]h>]hA]uhCKhDhh+]rT(hSXRaise a rUrV}rW(h0XRaise a h1jQubh)rX}rY(h0X:exc:`RuntimeError`rZh1jQh2Nh7hh9}r[(UreftypeXexchhX RuntimeErrorU refdomainXpyr\h>]h=]U refexplicith;]h<]hA]hhhjohhuhCNh+]r]hM)r^}r_(h0jZh9}r`(h;]h<]ra(hj\Xpy-excrbeh=]h>]hA]uh1jXh+]rchSX RuntimeErrorrdre}rf(h0Uh1j^ubah7hWubaubhSX* if this event has already been scheduled.rgrh}ri(h0X* if this event has already been scheduled.h1jQubeubeubeubeubeubh\)rj}rk(h0Uh1h.h2X^/var/build/user_builds/simpy/checkouts/3.0.5/simpy/events.py:docstring of simpy.events.Timeoutrlh7h`h9}rm(h>]h=]h;]h<]hA]Uentries]rn(hcXTimeout (class in simpy.events)hUtroauhCNhDhh+]ubj)rp}rq(h0Uh1h.h2jlh7jh9}rr(jjXpyh>]h=]h;]h<]hA]jXclassrsjjsuhCNhDhh+]rt(j)ru}rv(h0XTimeout(env, delay, value=None)h1jph2jhh7jh9}rw(h>]rxhajh3X simpy.eventsryrz}r{bh=]h;]h<]hA]r|hajXTimeoutr}jUjuhCNhDhh+]r~(j)r}r(h0Xclass h1juh2jhh7jh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhSXclass rr}r(h0Uh1jubaubj)r}r(h0X simpy.events.h1juh2jhh7jh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhSX simpy.events.rr}r(h0Uh1jubaubj)r}r(h0j}h1juh2jhh7jh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhSXTimeoutrr}r(h0Uh1jubaubj)r}r(h0Uh1juh2jhh7jh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]r(j)r}r(h0Xenvh9}r(h;]h<]h=]h>]hA]uh1jh+]rhSXenvrr}r(h0Uh1jubah7jubj)r}r(h0Xdelayh9}r(h;]h<]h=]h>]hA]uh1jh+]rhSXdelayrr}r(h0Uh1jubah7jubj)r}r(h0X value=Noneh9}r(h;]h<]h=]h>]hA]uh1jh+]rhSX value=Nonerr}r(h0Uh1jubah7jubeubeubj)r}r(h0Uh1jph2jhh7jh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]r(he)r}r(h0XNAn :class:`Event` that is scheduled with a certain *delay* after its creation.h1jh2jlh7hjh9}r(h;]h<]h=]h>]hA]uhCKhDhh+]r(hSXAn rr}r(h0XAn h1jubh)r}r(h0X:class:`Event`rh1jh2Nh7hh9}r(UreftypeXclasshhXEventU refdomainXpyrh>]h=]U refexplicith;]h<]hA]hhhj}hhuhCNh+]rhM)r}r(h0jh9}r(h;]h<]r(hjXpy-classreh=]h>]hA]uh1jh+]rhSXEventrr}r(h0Uh1jubah7hWubaubhSX" that is scheduled with a certain rr}r(h0X" that is scheduled with a certain h1jubhp)r}r(h0X*delay*h9}r(h;]h<]h=]h>]hA]uh1jh+]rhSXdelayrr}r(h0Uh1jubah7hxubhSX after its creation.rr}r(h0X after its creation.h1jubeubhe)r}r(h0XThis event can be used by processes to wait (or hold their state) for *delay* time steps. It is immediately scheduled at ``env.now + delay`` and has thus (in contrast to :class:`Event`) no *success()* or *fail()* method.h1jh2jlh7hjh9}r(h;]h<]h=]h>]hA]uhCKhDhh+]r(hSXFThis event can be used by processes to wait (or hold their state) for rr}r(h0XFThis event can be used by processes to wait (or hold their state) for h1jubhp)r}r(h0X*delay*h9}r(h;]h<]h=]h>]hA]uh1jh+]rhSXdelayrr}r(h0Uh1jubah7hxubhSX, time steps. It is immediately scheduled at rr}r(h0X, time steps. It is immediately scheduled at h1jubhM)r}r(h0X``env.now + delay``h9}r(h;]h<]h=]h>]hA]uh1jh+]rhSXenv.now + delayrr}r(h0Uh1jubah7hWubhSX and has thus (in contrast to rr}r(h0X and has thus (in contrast to h1jubh)r}r(h0X:class:`Event`rh1jh2Nh7hh9}r(UreftypeXclasshhXEventU refdomainXpyrh>]h=]U refexplicith;]h<]hA]hhhj}hhuhCNh+]rhM)r}r(h0jh9}r(h;]h<]r(hjXpy-classreh=]h>]hA]uh1jh+]rhSXEventrr}r(h0Uh1jubah7hWubaubhSX) no rr}r(h0X) no h1jubhp)r}r(h0X *success()*h9}r(h;]h<]h=]h>]hA]uh1jh+]rhSX success()rr}r(h0Uh1jubah7hxubhSX or rr }r (h0X or h1jubhp)r }r (h0X*fail()*h9}r (h;]h<]h=]h>]hA]uh1jh+]rhSXfail()rr}r(h0Uh1j ubah7hxubhSX method.rr}r(h0X method.h1jubeubeubeubh\)r}r(h0Uh1h.h2Xa/var/build/user_builds/simpy/checkouts/3.0.5/simpy/events.py:docstring of simpy.events.Initializerh7h`h9}r(h>]h=]h;]h<]hA]Uentries]r(hcX"Initialize (class in simpy.events)hUtrauhCNhDhh+]ubj)r}r(h0Uh1h.h2jh7jh9}r(jjXpyh>]h=]h;]h<]hA]jXclassrjjuhCNhDhh+]r(j)r }r!(h0XInitialize(env, process)h1jh2jhh7jh9}r"(h>]r#hajh3X simpy.eventsr$r%}r&bh=]h;]h<]hA]r'hajX Initializer(jUjuhCNhDhh+]r)(j)r*}r+(h0Xclass h1j h2jhh7jh9}r,(h;]h<]h=]h>]hA]uhCNhDhh+]r-hSXclass r.r/}r0(h0Uh1j*ubaubj)r1}r2(h0X simpy.events.h1j h2jhh7jh9}r3(h;]h<]h=]h>]hA]uhCNhDhh+]r4hSX simpy.events.r5r6}r7(h0Uh1j1ubaubj)r8}r9(h0j(h1j h2jhh7jh9}r:(h;]h<]h=]h>]hA]uhCNhDhh+]r;hSX Initializer<r=}r>(h0Uh1j8ubaubj)r?}r@(h0Uh1j h2jhh7jh9}rA(h;]h<]h=]h>]hA]uhCNhDhh+]rB(j)rC}rD(h0Xenvh9}rE(h;]h<]h=]h>]hA]uh1j?h+]rFhSXenvrGrH}rI(h0Uh1jCubah7jubj)rJ}rK(h0Xprocessh9}rL(h;]h<]h=]h>]hA]uh1j?h+]rMhSXprocessrNrO}rP(h0Uh1jJubah7jubeubeubj)rQ}rR(h0Uh1jh2jhh7jh9}rS(h;]h<]h=]h>]hA]uhCNhDhh+]rThe)rU}rV(h0X@Initializes a process. Only used internally by :class:`Process`.h1jQh2jh7hjh9}rW(h;]h<]h=]h>]hA]uhCKhDhh+]rX(hSX/Initializes a process. Only used internally by rYrZ}r[(h0X/Initializes a process. Only used internally by h1jUubh)r\}r](h0X:class:`Process`r^h1jUh2Nh7hh9}r_(UreftypeXclasshhXProcessU refdomainXpyr`h>]h=]U refexplicith;]h<]hA]hhhj(hhuhCNh+]rahM)rb}rc(h0j^h9}rd(h;]h<]re(hj`Xpy-classrfeh=]h>]hA]uh1j\h+]rghSXProcessrhri}rj(h0Uh1jbubah7hWubaubhSX.rk}rl(h0X.h1jUubeubaubeubh\)rm}rn(h0Uh1h.h2Xc/var/build/user_builds/simpy/checkouts/3.0.5/simpy/events.py:docstring of simpy.events.Interruptionroh7h`h9}rp(h>]h=]h;]h<]hA]Uentries]rq(hcX$Interruption (class in simpy.events)hUtrrauhCNhDhh+]ubj)rs}rt(h0Uh1h.h2joh7jh9}ru(jjXpyh>]h=]h;]h<]hA]jXclassrvjjvuhCNhDhh+]rw(j)rx}ry(h0XInterruption(process, cause)h1jsh2jhh7jh9}rz(h>]r{hajh3X simpy.eventsr|r}}r~bh=]h;]h<]hA]rhajX InterruptionrjUjuhCNhDhh+]r(j)r}r(h0Xclass h1jxh2jhh7jh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhSXclass rr}r(h0Uh1jubaubj)r}r(h0X simpy.events.h1jxh2jhh7jh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhSX simpy.events.rr}r(h0Uh1jubaubj)r}r(h0jh1jxh2jhh7jh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhSX Interruptionrr}r(h0Uh1jubaubj)r}r(h0Uh1jxh2jhh7jh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]r(j)r}r(h0Xprocessh9}r(h;]h<]h=]h>]hA]uh1jh+]rhSXprocessrr}r(h0Uh1jubah7jubj)r}r(h0Xcauseh9}r(h;]h<]h=]h>]hA]uh1jh+]rhSXcauserr}r(h0Uh1jubah7jubeubeubj)r}r(h0Uh1jsh2jhh7jh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhe)r}r(h0X5Interrupts a process while waiting for another event.rh1jh2joh7hjh9}r(h;]h<]h=]h>]hA]uhCKhDhh+]rhSX5Interrupts a process while waiting for another event.rr}r(h0jh1jubaubaubeubh\)r}r(h0Uh1h.h2Nh7h`h9}r(h>]h=]h;]h<]hA]Uentries]r(hcXProcess (class in simpy.events)hUtrauhCNhDhh+]ubj)r}r(h0Uh1h.h2Nh7jh9}r(jjXpyh>]h=]h;]h<]hA]jXclassrjjuhCNhDhh+]r(j)r}r(h0XProcess(env, generator)h1jh2jhh7jh9}r(h>]rhajh3X simpy.eventsrr}rbh=]h;]h<]hA]rhajXProcessrjUjuhCNhDhh+]r(j)r}r(h0Xclass h1jh2jhh7jh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhSXclass rr}r(h0Uh1jubaubj)r}r(h0X simpy.events.h1jh2jhh7jh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhSX simpy.events.rr}r(h0Uh1jubaubj)r}r(h0jh1jh2jhh7jh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhSXProcessrr}r(h0Uh1jubaubj)r}r(h0Uh1jh2jhh7jh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]r(j)r}r(h0Xenvh9}r(h;]h<]h=]h>]hA]uh1jh+]rhSXenvrr}r(h0Uh1jubah7jubj)r}r(h0X generatorh9}r(h;]h<]h=]h>]hA]uh1jh+]rhSX generatorrr}r(h0Uh1jubah7jubeubeubj)r}r(h0Uh1jh2jhh7jh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]r(he)r}r(h0XuA *Process* is a wrapper for the process *generator* (that is returned by a *process function*) during its execution.h1jh2X^/var/build/user_builds/simpy/checkouts/3.0.5/simpy/events.py:docstring of simpy.events.Processrh7hjh9}r(h;]h<]h=]h>]hA]uhCKhDhh+]r(hSXA rr}r(h0XA h1jubhp)r}r(h0X *Process*h9}r(h;]h<]h=]h>]hA]uh1jh+]rhSXProcessrr}r(h0Uh1jubah7hxubhSX is a wrapper for the process rr}r(h0X is a wrapper for the process h1jubhp)r}r(h0X *generator*h9}r(h;]h<]h=]h>]hA]uh1jh+]r hSX generatorr r }r (h0Uh1jubah7hxubhSX (that is returned by a r r}r(h0X (that is returned by a h1jubhp)r}r(h0X*process function*h9}r(h;]h<]h=]h>]hA]uh1jh+]rhSXprocess functionrr}r(h0Uh1jubah7hxubhSX) during its execution.rr}r(h0X) during its execution.h1jubeubhe)r}r(h0XtIt also contains internal and external status information and is used for process interaction, e.g., for interrupts.rh1jh2jh7hjh9}r(h;]h<]h=]h>]hA]uhCKhDhh+]rhSXtIt also contains internal and external status information and is used for process interaction, e.g., for interrupts.rr }r!(h0jh1jubaubhe)r"}r#(h0X``Process`` inherits :class:`Event`. You can thus wait for the termination of a process by simply yielding it from your process function.h1jh2jh7hjh9}r$(h;]h<]h=]h>]hA]uhCKhDhh+]r%(hM)r&}r'(h0X ``Process``h9}r((h;]h<]h=]h>]hA]uh1j"h+]r)hSXProcessr*r+}r,(h0Uh1j&ubah7hWubhSX inherits r-r.}r/(h0X inherits h1j"ubh)r0}r1(h0X:class:`Event`r2h1j"h2Nh7hh9}r3(UreftypeXclasshhXEventU refdomainXpyr4h>]h=]U refexplicith;]h<]hA]hhhjhhuhCNh+]r5hM)r6}r7(h0j2h9}r8(h;]h<]r9(hj4Xpy-classr:eh=]h>]hA]uh1j0h+]r;hSXEventr<r=}r>(h0Uh1j6ubah7hWubaubhSXf. You can thus wait for the termination of a process by simply yielding it from your process function.r?r@}rA(h0Xf. You can thus wait for the termination of a process by simply yielding it from your process function.h1j"ubeubhe)rB}rC(h0XRAn instance of this class is returned by :meth:`simpy.core.Environment.process()`.h1jh2jh7hjh9}rD(h;]h<]h=]h>]hA]uhCK hDhh+]rE(hSX)An instance of this class is returned by rFrG}rH(h0X)An instance of this class is returned by h1jBubh)rI}rJ(h0X(:meth:`simpy.core.Environment.process()`rKh1jBh2Nh7hh9}rL(UreftypeXmethhhXsimpy.core.Environment.processU refdomainXpyrMh>]h=]U refexplicith;]h<]hA]hhhjhhuhCNh+]rNhM)rO}rP(h0jKh9}rQ(h;]h<]rR(hjMXpy-methrSeh=]h>]hA]uh1jIh+]rThSX simpy.core.Environment.process()rUrV}rW(h0Uh1jOubah7hWubaubhSX.rX}rY(h0X.h1jBubeubh\)rZ}r[(h0Uh1jh2Xe/var/build/user_builds/simpy/checkouts/3.0.5/simpy/events.py:docstring of simpy.events.Process.targetr\h7h`h9}r](h>]h=]h;]h<]hA]Uentries]r^(hcX'target (simpy.events.Process attribute)hUtr_auhCNhDhh+]ubj)r`}ra(h0Uh1jh2j\h7jh9}rb(jjXpyh>]h=]h;]h<]hA]jX attributercjjcuhCNhDhh+]rd(j)re}rf(h0XProcess.targeth1j`h2jhh7jh9}rg(h>]rhhajh3X simpy.eventsrirj}rkbh=]h;]h<]hA]rlhajXProcess.targetjjjuhCNhDhh+]rmj)rn}ro(h0Xtargeth1jeh2jhh7jh9}rp(h;]h<]h=]h>]hA]uhCNhDhh+]rqhSXtargetrrrs}rt(h0Uh1jnubaubaubj)ru}rv(h0Uh1j`h2jhh7jh9}rw(h;]h<]h=]h>]hA]uhCNhDhh+]rx(he)ry}rz(h0X4The event that the process is currently waiting for.r{h1juh2j\h7hjh9}r|(h;]h<]h=]h>]hA]uhCKhDhh+]r}hSX4The event that the process is currently waiting for.r~r}r(h0j{h1jyubaubhe)r}r(h0X(Returns ``None`` if the process is dead.h1juh2j\h7hjh9}r(h;]h<]h=]h>]hA]uhCKhDhh+]r(hSXReturns rr}r(h0XReturns h1jubhM)r}r(h0X``None``h9}r(h;]h<]h=]h>]hA]uh1jh+]rhSXNonerr}r(h0Uh1jubah7hWubhSX if the process is dead.rr}r(h0X if the process is dead.h1jubeubeubeubh\)r}r(h0Uh1jh2Xg/var/build/user_builds/simpy/checkouts/3.0.5/simpy/events.py:docstring of simpy.events.Process.is_aliverh7h`h9}r(h>]h=]h;]h<]hA]Uentries]r(hcX)is_alive (simpy.events.Process attribute)hUtrauhCNhDhh+]ubj)r}r(h0Uh1jh2jh7jh9}r(jjXpyh>]h=]h;]h<]hA]jX attributerjjuhCNhDhh+]r(j)r}r(h0XProcess.is_aliveh1jh2jhh7jh9}r(h>]rhajh3X simpy.eventsrr}rbh=]h;]h<]hA]rhajXProcess.is_alivejjjuhCNhDhh+]rj)r}r(h0Xis_aliveh1jh2jhh7jh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhSXis_aliverr}r(h0Uh1jubaubaubj)r}r(h0Uh1jh2jhh7jh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhe)r}r(h0X+``True`` until the process generator exits.h1jh2jh7hjh9}r(h;]h<]h=]h>]hA]uhCKhDhh+]r(hM)r}r(h0X``True``h9}r(h;]h<]h=]h>]hA]uh1jh+]rhSXTruerr}r(h0Uh1jubah7hWubhSX# until the process generator exits.rr}r(h0X# until the process generator exits.h1jubeubaubeubh\)r}r(h0Uh1jh2Xh/var/build/user_builds/simpy/checkouts/3.0.5/simpy/events.py:docstring of simpy.events.Process.interruptrh7h`h9}r(h>]h=]h;]h<]hA]Uentries]r(hcX)interrupt() (simpy.events.Process method)hUtrauhCNhDhh+]ubj)r}r(h0Uh1jh2jh7jh9}r(jjXpyh>]h=]h;]h<]hA]jXmethodrjjuhCNhDhh+]r(j)r}r(h0XProcess.interrupt(cause=None)h1jh2jhh7jh9}r(h>]rhajh3X simpy.eventsrr}rbh=]h;]h<]hA]rhajXProcess.interruptjjjuhCNhDhh+]r(j)r}r(h0X interrupth1jh2jhh7jh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhSX interruptrr}r(h0Uh1jubaubj)r}r(h0Uh1jh2jhh7jh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rj)r}r(h0X cause=Noneh9}r(h;]h<]h=]h>]hA]uh1jh+]rhSX cause=Nonerr}r(h0Uh1jubah7jubaubeubj)r}r(h0Uh1jh2jhh7jh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]r(he)r}r(h0X5Interupt this process optionally providing a *cause*.h1jh2jh7hjh9}r(h;]h<]h=]h>]hA]uhCKhDhh+]r(hSX-Interupt this process optionally providing a rr}r(h0X-Interupt this process optionally providing a h1jubhp)r}r(h0X*cause*h9}r(h;]h<]h=]h>]hA]uh1jh+]rhSXcauserr}r(h0Uh1jubah7hxubhSX.r}r(h0X.h1jubeubhe)r}r(h0XA process cannot be interrupted if it already terminated. A process can also not interrupt itself. Raise a :exc:`RuntimeError` in these cases.h1jh2jh7hjh9}r(h;]h<]h=]h>]hA]uhCKhDhh+]r(hSXkA process cannot be interrupted if it already terminated. A process can also not interrupt itself. Raise a rr}r(h0XkA process cannot be interrupted if it already terminated. A process can also not interrupt itself. Raise a h1jubh)r}r(h0X:exc:`RuntimeError`rh1jh2Nh7hh9}r(UreftypeXexchhX RuntimeErrorU refdomainXpyrh>]h=]U refexplicith;]h<]hA]hhhjhhuhCNh+]rhM)r}r(h0jh9}r(h;]h<]r (hjXpy-excr eh=]h>]hA]uh1jh+]r hSX RuntimeErrorr r }r(h0Uh1jubah7hWubaubhSX in these cases.rr}r(h0X in these cases.h1jubeubeubeubeubeubh\)r}r(h0Uh1h.h2Nh7h`h9}r(h>]h=]h;]h<]hA]Uentries]r(hcX!Condition (class in simpy.events)hUtrauhCNhDhh+]ubj)r}r(h0Uh1h.h2Nh7jh9}r(jjXpyh>]h=]h;]h<]hA]jXclassrjjuhCNhDhh+]r(j)r}r(h0X Condition(env, evaluate, events)h1jh2jhh7jh9}r(h>]rhajh3X simpy.eventsr r!}r"bh=]h;]h<]hA]r#hajX Conditionr$jUjuhCNhDhh+]r%(j)r&}r'(h0Xclass h1jh2jhh7jh9}r((h;]h<]h=]h>]hA]uhCNhDhh+]r)hSXclass r*r+}r,(h0Uh1j&ubaubj)r-}r.(h0X simpy.events.h1jh2jhh7jh9}r/(h;]h<]h=]h>]hA]uhCNhDhh+]r0hSX simpy.events.r1r2}r3(h0Uh1j-ubaubj)r4}r5(h0j$h1jh2jhh7jh9}r6(h;]h<]h=]h>]hA]uhCNhDhh+]r7hSX Conditionr8r9}r:(h0Uh1j4ubaubj)r;}r<(h0Uh1jh2jhh7jh9}r=(h;]h<]h=]h>]hA]uhCNhDhh+]r>(j)r?}r@(h0Xenvh9}rA(h;]h<]h=]h>]hA]uh1j;h+]rBhSXenvrCrD}rE(h0Uh1j?ubah7jubj)rF}rG(h0Xevaluateh9}rH(h;]h<]h=]h>]hA]uh1j;h+]rIhSXevaluaterJrK}rL(h0Uh1jFubah7jubj)rM}rN(h0Xeventsh9}rO(h;]h<]h=]h>]hA]uh1j;h+]rPhSXeventsrQrR}rS(h0Uh1jMubah7jubeubeubj)rT}rU(h0Uh1jh2jhh7jh9}rV(h;]h<]h=]h>]hA]uhCNhDhh+]rW(he)rX}rY(h0XA *Condition* :class:`Event` groups several *events* and is triggered if a given condition (implemented by the *evaluate* function) becomes true.h1jTh2X`/var/build/user_builds/simpy/checkouts/3.0.5/simpy/events.py:docstring of simpy.events.ConditionrZh7hjh9}r[(h;]h<]h=]h>]hA]uhCKhDhh+]r\(hSXA r]r^}r_(h0XA h1jXubhp)r`}ra(h0X *Condition*h9}rb(h;]h<]h=]h>]hA]uh1jXh+]rchSX Conditionrdre}rf(h0Uh1j`ubah7hxubhSX rg}rh(h0X h1jXubh)ri}rj(h0X:class:`Event`rkh1jXh2Nh7hh9}rl(UreftypeXclasshhXEventU refdomainXpyrmh>]h=]U refexplicith;]h<]hA]hhhj$hhuhCNh+]rnhM)ro}rp(h0jkh9}rq(h;]h<]rr(hjmXpy-classrseh=]h>]hA]uh1jih+]rthSXEventrurv}rw(h0Uh1joubah7hWubaubhSX groups several rxry}rz(h0X groups several h1jXubhp)r{}r|(h0X*events*h9}r}(h;]h<]h=]h>]hA]uh1jXh+]r~hSXeventsrr}r(h0Uh1j{ubah7hxubhSX; and is triggered if a given condition (implemented by the rr}r(h0X; and is triggered if a given condition (implemented by the h1jXubhp)r}r(h0X *evaluate*h9}r(h;]h<]h=]h>]hA]uh1jXh+]rhSXevaluaterr}r(h0Uh1jubah7hxubhSX function) becomes true.rr}r(h0X function) becomes true.h1jXubeubhe)r}r(h0XThe value of the condition is a dictionary that maps the input events to their respective values. It only contains entries for those events that occurred until the condition was met.rh1jTh2jZh7hjh9}r(h;]h<]h=]h>]hA]uhCKhDhh+]rhSXThe value of the condition is a dictionary that maps the input events to their respective values. It only contains entries for those events that occurred until the condition was met.rr}r(h0jh1jubaubhe)r}r(h0XeIf one of the events fails, the condition also fails and forwards the exception of the failing event.rh1jTh2jZh7hjh9}r(h;]h<]h=]h>]hA]uhCKhDhh+]rhSXeIf one of the events fails, the condition also fails and forwards the exception of the failing event.rr}r(h0jh1jubaubhe)r}r(h0X2The ``evaluate`` function receives the list of target events and the number of processed events in this list. If it returns ``True``, the condition is scheduled. The :func:`Condition.all_events()` and :func:`Condition.any_events()` functions are used to implement *and* (``&``) and *or* (``|``) for events.h1jTh2jZh7hjh9}r(h;]h<]h=]h>]hA]uhCK hDhh+]r(hSXThe rr}r(h0XThe h1jubhM)r}r(h0X ``evaluate``h9}r(h;]h<]h=]h>]hA]uh1jh+]rhSXevaluaterr}r(h0Uh1jubah7hWubhSXl function receives the list of target events and the number of processed events in this list. If it returns rr}r(h0Xl function receives the list of target events and the number of processed events in this list. If it returns h1jubhM)r}r(h0X``True``h9}r(h;]h<]h=]h>]hA]uh1jh+]rhSXTruerr}r(h0Uh1jubah7hWubhSX", the condition is scheduled. The rr}r(h0X", the condition is scheduled. The h1jubh)r}r(h0X:func:`Condition.all_events()`rh1jh2Nh7hh9}r(UreftypeXfunchhXCondition.all_eventsU refdomainXpyrh>]h=]U refexplicith;]h<]hA]hhhj$hhuhCNh+]rhM)r}r(h0jh9}r(h;]h<]r(hjXpy-funcreh=]h>]hA]uh1jh+]rhSXCondition.all_events()rr}r(h0Uh1jubah7hWubaubhSX and rr}r(h0X and h1jubh)r}r(h0X:func:`Condition.any_events()`rh1jh2Nh7hh9}r(UreftypeXfunchhXCondition.any_eventsU refdomainXpyrh>]h=]U refexplicith;]h<]hA]hhhj$hhuhCNh+]rhM)r}r(h0jh9}r(h;]h<]r(hjXpy-funcreh=]h>]hA]uh1jh+]rhSXCondition.any_events()rr}r(h0Uh1jubah7hWubaubhSX! functions are used to implement rr}r(h0X! functions are used to implement h1jubhp)r}r(h0X*and*h9}r(h;]h<]h=]h>]hA]uh1jh+]rhSXandrr}r(h0Uh1jubah7hxubhSX (rr}r(h0X (h1jubhM)r}r(h0X``&``h9}r(h;]h<]h=]h>]hA]uh1jh+]rhSX&r}r(h0Uh1jubah7hWubhSX) and rr}r(h0X) and h1jubhp)r}r(h0X*or*h9}r(h;]h<]h=]h>]hA]uh1jh+]rhSXorrr}r(h0Uh1jubah7hxubhSX (rr}r(h0X (h1jubhM)r}r(h0X``|``h9}r(h;]h<]h=]h>]hA]uh1jh+]rhSX|r}r (h0Uh1jubah7hWubhSX ) for events.r r }r (h0X ) for events.h1jubeubhe)r }r (h0X Conditions events can be nested.r h1jTh2jZh7hjh9}r (h;]h<]h=]h>]hA]uhCKhDhh+]r hSX Conditions events can be nested.r r }r (h0j h1j ubaubh\)r }r (h0Uh1jTh2Xk/var/build/user_builds/simpy/checkouts/3.0.5/simpy/events.py:docstring of simpy.events.Condition.all_eventsr h7h`h9}r (h>]h=]h;]h<]hA]Uentries]r (hcX3all_events() (simpy.events.Condition static method)hUtr auhCNhDhh+]ubj)r }r (h0Uh1jTh2j h7jh9}r (jjXpyh>]h=]h;]h<]hA]jX staticmethodr jj uhCNhDhh+]r (j)r }r (h0X#Condition.all_events(events, count)h1j h2jhh7jh9}r (h>]r hajh3X simpy.eventsr r }r bh=]h;]h<]hA]r hajXCondition.all_eventsjj$juhCNhDhh+]r (j)r }r! (h0Ustatic r" h1j h2jhh7jh9}r# (h;]h<]h=]h>]hA]uhCNhDhh+]r$ hSXstatic r% r& }r' (h0Uh1j ubaubj)r( }r) (h0X all_eventsh1j h2jhh7jh9}r* (h;]h<]h=]h>]hA]uhCNhDhh+]r+ hSX all_eventsr, r- }r. (h0Uh1j( ubaubj)r/ }r0 (h0Uh1j h2jhh7jh9}r1 (h;]h<]h=]h>]hA]uhCNhDhh+]r2 (j)r3 }r4 (h0Xeventsh9}r5 (h;]h<]h=]h>]hA]uh1j/ h+]r6 hSXeventsr7 r8 }r9 (h0Uh1j3 ubah7jubj)r: }r; (h0Xcounth9}r< (h;]h<]h=]h>]hA]uh1j/ h+]r= hSXcountr> r? }r@ (h0Uh1j: ubah7jubeubeubj)rA }rB (h0Uh1j h2jhh7jh9}rC (h;]h<]h=]h>]hA]uhCNhDhh+]rD he)rE }rF (h0XOA condition function that returns ``True`` if all *events* have been triggered.h1jA h2j h7hjh9}rG (h;]h<]h=]h>]hA]uhCKhDhh+]rH (hSX"A condition function that returns rI rJ }rK (h0X"A condition function that returns h1jE ubhM)rL }rM (h0X``True``h9}rN (h;]h<]h=]h>]hA]uh1jE h+]rO hSXTruerP rQ }rR (h0Uh1jL ubah7hWubhSX if all rS rT }rU (h0X if all h1jE ubhp)rV }rW (h0X*events*h9}rX (h;]h<]h=]h>]hA]uh1jE h+]rY hSXeventsrZ r[ }r\ (h0Uh1jV ubah7hxubhSX have been triggered.r] r^ }r_ (h0X have been triggered.h1jE ubeubaubeubh\)r` }ra (h0Uh1jTh2Xk/var/build/user_builds/simpy/checkouts/3.0.5/simpy/events.py:docstring of simpy.events.Condition.any_eventsrb h7h`h9}rc (h>]h=]h;]h<]hA]Uentries]rd (hcX3any_events() (simpy.events.Condition static method)hUtre auhCNhDhh+]ubj)rf }rg (h0Uh1jTh2jb h7jh9}rh (jjXpyh>]h=]h;]h<]hA]jX staticmethodri jji uhCNhDhh+]rj (j)rk }rl (h0X#Condition.any_events(events, count)h1jf h2jhh7jh9}rm (h>]rn hajh3X simpy.eventsro rp }rq bh=]h;]h<]hA]rr hajXCondition.any_eventsjj$juhCNhDhh+]rs (j)rt }ru (h0j" h1jk h2jhh7jh9}rv (h;]h<]h=]h>]hA]uhCNhDhh+]rw hSXstatic rx ry }rz (h0Uh1jt ubaubj)r{ }r| (h0X any_eventsh1jk h2jhh7jh9}r} (h;]h<]h=]h>]hA]uhCNhDhh+]r~ hSX any_eventsr r }r (h0Uh1j{ ubaubj)r }r (h0Uh1jk h2jhh7jh9}r (h;]h<]h=]h>]hA]uhCNhDhh+]r (j)r }r (h0Xeventsh9}r (h;]h<]h=]h>]hA]uh1j h+]r hSXeventsr r }r (h0Uh1j ubah7jubj)r }r (h0Xcounth9}r (h;]h<]h=]h>]hA]uh1j h+]r hSXcountr r }r (h0Uh1j ubah7jubeubeubj)r }r (h0Uh1jf h2jhh7jh9}r (h;]h<]h=]h>]hA]uhCNhDhh+]r he)r }r (h0XZA condition function that returns ``True`` if at least one of *events* has been triggered.h1j h2jb h7hjh9}r (h;]h<]h=]h>]hA]uhCKhDhh+]r (hSX"A condition function that returns r r }r (h0X"A condition function that returns h1j ubhM)r }r (h0X``True``h9}r (h;]h<]h=]h>]hA]uh1j h+]r hSXTruer r }r (h0Uh1j ubah7hWubhSX if at least one of r r }r (h0X if at least one of h1j ubhp)r }r (h0X*events*h9}r (h;]h<]h=]h>]hA]uh1j h+]r hSXeventsr r }r (h0Uh1j ubah7hxubhSX has been triggered.r r }r (h0X has been triggered.h1j ubeubaubeubeubeubh\)r }r (h0Uh1h.h2X\/var/build/user_builds/simpy/checkouts/3.0.5/simpy/events.py:docstring of simpy.events.AllOfr h7h`h9}r (h>]h=]h;]h<]hA]Uentries]r (hcXAllOf (class in simpy.events)h Utr auhCNhDhh+]ubj)r }r (h0Uh1h.h2j h7jh9}r (jjXpyh>]h=]h;]h<]hA]jXclassr jj uhCNhDhh+]r (j)r }r (h0XAllOf(env, events)h1j h2jhh7jh9}r (h>]r h ajh3X simpy.eventsr r }r bh=]h;]h<]hA]r h ajXAllOfr jUjuhCNhDhh+]r (j)r }r (h0Xclass h1j h2jhh7jh9}r (h;]h<]h=]h>]hA]uhCNhDhh+]r hSXclass r r }r (h0Uh1j ubaubj)r }r (h0X simpy.events.h1j h2jhh7jh9}r (h;]h<]h=]h>]hA]uhCNhDhh+]r hSX simpy.events.r r }r (h0Uh1j ubaubj)r }r (h0j h1j h2jhh7jh9}r (h;]h<]h=]h>]hA]uhCNhDhh+]r hSXAllOfr r }r (h0Uh1j ubaubj)r }r (h0Uh1j h2jhh7jh9}r (h;]h<]h=]h>]hA]uhCNhDhh+]r (j)r }r (h0Xenvh9}r (h;]h<]h=]h>]hA]uh1j h+]r hSXenvr r }r (h0Uh1j ubah7jubj)r }r (h0Xeventsh9}r (h;]h<]h=]h>]hA]uh1j h+]r hSXeventsr r }r (h0Uh1j ubah7jubeubeubj)r }r (h0Uh1j h2jhh7jh9}r (h;]h<]h=]h>]hA]uhCNhDhh+]r he)r }r (h0X7A :class:`Condition` event that waits for all *events*.h1j h2j h7hjh9}r (h;]h<]h=]h>]hA]uhCKhDhh+]r (hSXA r r }r (h0XA h1j ubh)r }r (h0X:class:`Condition`r h1j h2Nh7hh9}r (UreftypeXclasshhX ConditionU refdomainXpyr h>]h=]U refexplicith;]h<]hA]hhhj hhuhCNh+]r hM)r }r (h0j h9}r (h;]h<]r (hj Xpy-classr eh=]h>]hA]uh1j h+]r hSX Conditionr r }r (h0Uh1j ubah7hWubaubhSX event that waits for all r r }r (h0X event that waits for all h1j ubhp)r }r (h0X*events*h9}r (h;]h<]h=]h>]hA]uh1j h+]r hSXeventsr r }r (h0Uh1j ubah7hxubhSX.r }r (h0X.h1j ubeubaubeubh\)r }r (h0Uh1h.h2X\/var/build/user_builds/simpy/checkouts/3.0.5/simpy/events.py:docstring of simpy.events.AnyOfr h7h`h9}r (h>]h=]h;]h<]hA]Uentries]r (hcXAnyOf (class in simpy.events)hUtr auhCNhDhh+]ubj)r }r (h0Uh1h.h2j h7jh9}r (jjXpyh>]h=]h;]h<]hA]jXclassr jj uhCNhDhh+]r (j)r }r! (h0XAnyOf(env, events)h1j h2jhh7jh9}r" (h>]r# hajh3X simpy.eventsr$ r% }r& bh=]h;]h<]hA]r' hajXAnyOfr( jUjuhCNhDhh+]r) (j)r* }r+ (h0Xclass h1j h2jhh7jh9}r, (h;]h<]h=]h>]hA]uhCNhDhh+]r- hSXclass r. r/ }r0 (h0Uh1j* ubaubj)r1 }r2 (h0X simpy.events.h1j h2jhh7jh9}r3 (h;]h<]h=]h>]hA]uhCNhDhh+]r4 hSX simpy.events.r5 r6 }r7 (h0Uh1j1 ubaubj)r8 }r9 (h0j( h1j h2jhh7jh9}r: (h;]h<]h=]h>]hA]uhCNhDhh+]r; hSXAnyOfr< r= }r> (h0Uh1j8 ubaubj)r? }r@ (h0Uh1j h2jhh7jh9}rA (h;]h<]h=]h>]hA]uhCNhDhh+]rB (j)rC }rD (h0Xenvh9}rE (h;]h<]h=]h>]hA]uh1j? h+]rF hSXenvrG rH }rI (h0Uh1jC ubah7jubj)rJ }rK (h0Xeventsh9}rL (h;]h<]h=]h>]hA]uh1j? h+]rM hSXeventsrN rO }rP (h0Uh1jJ ubah7jubeubeubj)rQ }rR (h0Uh1j h2jhh7jh9}rS (h;]h<]h=]h>]hA]uhCNhDhh+]rT he)rU }rV (h0XOA :class:`Condition` event that waits until the first of *events* is triggered.h1jQ h2j h7hjh9}rW (h;]h<]h=]h>]hA]uhCKhDhh+]rX (hSXA rY rZ }r[ (h0XA h1jU ubh)r\ }r] (h0X:class:`Condition`r^ h1jU h2Nh7hh9}r_ (UreftypeXclasshhX ConditionU refdomainXpyr` h>]h=]U refexplicith;]h<]hA]hhhj( hhuhCNh+]ra hM)rb }rc (h0j^ h9}rd (h;]h<]re (hj` Xpy-classrf eh=]h>]hA]uh1j\ h+]rg hSX Conditionrh ri }rj (h0Uh1jb ubah7hWubaubhSX% event that waits until the first of rk rl }rm (h0X% event that waits until the first of h1jU ubhp)rn }ro (h0X*events*h9}rp (h;]h<]h=]h>]hA]uh1jU h+]rq hSXeventsrr rs }rt (h0Uh1jn ubah7hxubhSX is triggered.ru rv }rw (h0X is triggered.h1jU ubeubaubeubh\)rx }ry (h0Uh1h.h2Nh7h`h9}rz (h>]h=]h;]h<]hA]Uentries]r{ (hcX Interruptr| h Utr} auhCNhDhh+]ubj)r~ }r (h0Uh1h.h2Nh7jh9}r (jjXpyh>]h=]h;]h<]hA]jX exceptionr jj uhCNhDhh+]r (j)r }r (h0j| h1j~ h2jhh7jh9}r (h>]r h ajh3X simpy.eventsr r }r bh=]h;]h<]hA]r h ajj| jUjuhCNhDhh+]r (j)r }r (h0X exception h1j h2jhh7jh9}r (h;]h<]h=]h>]hA]uhCNhDhh+]r hSX exception r r }r (h0Uh1j ubaubj)r }r (h0X simpy.events.h1j h2jhh7jh9}r (h;]h<]h=]h>]hA]uhCNhDhh+]r hSX simpy.events.r r }r (h0Uh1j ubaubj)r }r (h0j| h1j h2jhh7jh9}r (h;]h<]h=]h>]hA]uhCNhDhh+]r hSX Interruptr r }r (h0Uh1j ubaubeubj)r }r (h0Uh1j~ h2jhh7jh9}r (h;]h<]h=]h>]hA]uhCNhDhh+]r (he)r }r (h0XqThis exceptions is sent into a process if it is interrupted by another process (see :func:`Process.interrupt()`).h1j h2X`/var/build/user_builds/simpy/checkouts/3.0.5/simpy/events.py:docstring of simpy.events.Interruptr h7hjh9}r (h;]h<]h=]h>]hA]uhCKhDhh+]r (hSXTThis exceptions is sent into a process if it is interrupted by another process (see r r }r (h0XTThis exceptions is sent into a process if it is interrupted by another process (see h1j ubh)r }r (h0X:func:`Process.interrupt()`r h1j h2Nh7hh9}r (UreftypeXfunchhXProcess.interruptU refdomainXpyr h>]h=]U refexplicith;]h<]hA]hhhj| hhuhCNh+]r hM)r }r (h0j h9}r (h;]h<]r (hj Xpy-funcr eh=]h>]hA]uh1j h+]r hSXProcess.interrupt()r r }r (h0Uh1j ubah7hWubaubhSX).r r }r (h0X).h1j ubeubhe)r }r (h0XU*cause* may be none if no cause was explicitly passed to :func:`Process.interrupt()`.h1j h2j h7hjh9}r (h;]h<]h=]h>]hA]uhCKhDhh+]r (hp)r }r (h0X*cause*h9}r (h;]h<]h=]h>]hA]uh1j h+]r hSXcauser r }r (h0Uh1j ubah7hxubhSX2 may be none if no cause was explicitly passed to r r }r (h0X2 may be none if no cause was explicitly passed to h1j ubh)r }r (h0X:func:`Process.interrupt()`r h1j h2Nh7hh9}r (UreftypeXfunchhXProcess.interruptU refdomainXpyr h>]h=]U refexplicith;]h<]hA]hhhj| hhuhCNh+]r hM)r }r (h0j h9}r (h;]h<]r (hj Xpy-funcr eh=]h>]hA]uh1j h+]r hSXProcess.interrupt()r r }r (h0Uh1j ubah7hWubaubhSX.r }r (h0X.h1j ubeubhe)r }r (h0XAn interrupt has a higher priority as a normal event. Thus, if a process has a normal event and an interrupt scheduled at the same time, the interrupt will always be thrown into the process first.r h1j h2j h7hjh9}r (h;]h<]h=]h>]hA]uhCKhDhh+]r hSXAn interrupt has a higher priority as a normal event. Thus, if a process has a normal event and an interrupt scheduled at the same time, the interrupt will always be thrown into the process first.r r }r (h0j h1j ubaubhe)r }r (h0XIf a process is interrupted multiple times at the same time, all interrupts will be thrown into the process in the same order as they occurred.r h1j h2j h7hjh9}r (h;]h<]h=]h>]hA]uhCK hDhh+]r hSXIf a process is interrupted multiple times at the same time, all interrupts will be thrown into the process in the same order as they occurred.r r }r (h0j h1j ubaubh\)r }r (h0Uh1j h2Xf/var/build/user_builds/simpy/checkouts/3.0.5/simpy/events.py:docstring of simpy.events.Interrupt.causer h7h`h9}r (h>]h=]h;]h<]hA]Uentries]r (hcX(cause (simpy.events.Interrupt attribute)h Utr auhCNhDhh+]ubj)r }r (h0Uh1j h2j h7jh9}r (jjXpyh>]h=]h;]h<]hA]jX attributer jj uhCNhDhh+]r (j)r }r (h0XInterrupt.causer h1j h2jhh7jh9}r (h>]r h ajh3X simpy.eventsr r }r bh=]h;]h<]hA]r h ajXInterrupt.causejj| juhCNhDhh+]r j)r }r (h0Xcauseh1j h2jhh7jh9}r (h;]h<]h=]h>]hA]uhCNhDhh+]r hSXcauser r }r (h0Uh1j ubaubaubj)r }r (h0Uh1j h2jhh7jh9}r (h;]h<]h=]h>]hA]uhCNhDhh+]r he)r }r (h0X@The cause of the interrupt or ``None`` if no cause was provided.r h1j h2j h7hjh9}r (h;]h<]h=]h>]hA]uhCKhDhh+]r (hSXThe cause of the interrupt or r r }r (h0XThe cause of the interrupt or h1j ubhM)r }r (h0X``None``h9}r (h;]h<]h=]h>]hA]uh1j h+]r hSXNoner r }r (h0Uh1j ubah7hWubhSX if no cause was provided.r r }r (h0X if no cause was provided.h1j ubeubaubeubeubeubeubah0UU transformerr NU footnote_refsr! }r" Urefnamesr# }r$ Usymbol_footnotesr% ]r& Uautofootnote_refsr' ]r( Usymbol_footnote_refsr) ]r* U citationsr+ ]r, hDhU current_liner- NUtransform_messagesr. ]r/ Ureporterr0 NUid_startr1 KU autofootnotesr2 ]r3 U citation_refsr4 }r5 Uindirect_targetsr6 ]r7 Usettingsr8 (cdocutils.frontend Values r9 or: }r; (Ufootnote_backlinksr< KUrecord_dependenciesr= NU rfc_base_urlr> Uhttp://tools.ietf.org/html/r? U tracebackr@ Upep_referencesrA NUstrip_commentsrB NU toc_backlinksrC UentryrD U language_coderE UenrF U datestamprG NU report_levelrH KU _destinationrI NU halt_levelrJ KU strip_classesrK NhJNUerror_encoding_error_handlerrL UbackslashreplacerM UdebugrN NUembed_stylesheetrO Uoutput_encoding_error_handlerrP UstrictrQ U sectnum_xformrR KUdump_transformsrS NU docinfo_xformrT KUwarning_streamrU NUpep_file_url_templaterV Upep-%04drW Uexit_status_levelrX KUconfigrY NUstrict_visitorrZ NUcloak_email_addressesr[ Utrim_footnote_reference_spacer\ Uenvr] NUdump_pseudo_xmlr^ NUexpose_internalsr_ NUsectsubtitle_xformr` U source_linkra NUrfc_referencesrb NUoutput_encodingrc Uutf-8rd U source_urlre NUinput_encodingrf U utf-8-sigrg U_disable_configrh NU id_prefixri UU tab_widthrj KUerror_encodingrk UUTF-8rl U_sourcerm UP/var/build/user_builds/simpy/checkouts/3.0.5/docs/api_reference/simpy.events.rstrn Ugettext_compactro U generatorrp NUdump_internalsrq NU smart_quotesrr U pep_base_urlrs Uhttp://www.python.org/dev/peps/rt Usyntax_highlightru Ulongrv Uinput_encoding_error_handlerrw jQ Uauto_id_prefixrx Uidry Udoctitle_xformrz Ustrip_elements_with_classesr{ NU _config_filesr| ]Ufile_insertion_enabledr} U raw_enabledr~ KU dump_settingsr NubUsymbol_footnote_startr KUidsr }r (hjhj hjk h jh j h j h jh*h.h j hj1hjuhjqhjehj1hjhjxhjhjfh@cdocutils.nodes target r )r }r (h0Uh1h.h2h_h7Utargetr h9}r (h;]h>]r h@ah=]Uismodh<]hA]uhCKhDhh+]ubhj hjhjhjhjhj hjhjh jGuUsubstitution_namesr }r h7hDh9}r (h;]h>]h=]Usourceh5h<]hA]uU footnotesr ]r Urefidsr }r ub.PK.DTKAJfJfEsimpy-3.0.5/.doctrees/api_reference/simpy.resources.container.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X)simpy.resources.container.Container.levelqX-simpy.resources.container.ContainerPut.amountqX-simpy.resources.container.ContainerGet.amountqX&simpy.resources.container.ContainerGetq X'simpy.resources.container.Container.getq X&simpy.resources.container.ContainerPutq X,simpy.resources.container.Container.capacityq X6simpy.resources.container --- container type resourcesq NX#simpy.resources.container.ContainerqX'simpy.resources.container.Container.putquUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hhhhhhh h h h h h h h h U2simpy-resources-container-container-type-resourcesqhhhhuUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentq hUsourceq!cdocutils.nodes reprunicode q"X]/var/build/user_builds/simpy/checkouts/3.0.5/docs/api_reference/simpy.resources.container.rstq#q$}q%bUtagnameq&Usectionq'U attributesq(}q)(Udupnamesq*]Uclassesq+]Ubackrefsq,]Uidsq-]q.(X module-simpy.resources.containerq/heUnamesq0]q1h auUlineq2KUdocumentq3hh]q4(cdocutils.nodes title q5)q6}q7(hX:``simpy.resources.container`` --- Container type resourcesq8h hh!h$h&Utitleq9h(}q:(h*]h+]h,]h-]h0]uh2Kh3hh]q;(cdocutils.nodes literal q<)q=}q>(hX``simpy.resources.container``q?h(}q@(h*]h+]h,]h-]h0]uh h6h]qAcdocutils.nodes Text qBXsimpy.resources.containerqCqD}qE(hUh h=ubah&UliteralqFubhBX --- Container type resourcesqGqH}qI(hX --- Container type resourcesqJh h6ubeubcsphinx.addnodes index qK)qL}qM(hUh hh!U qNh&UindexqOh(}qP(h-]h,]h*]h+]h0]Uentries]qQ(UsingleqRX"simpy.resources.container (module)X module-simpy.resources.containerUtqSauh2Kh3hh]ubcdocutils.nodes paragraph qT)qU}qV(hX;This module contains all :class:`Container` like resources.h hh!Xp/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/container.py:docstring of simpy.resources.containerqWh&U paragraphqXh(}qY(h*]h+]h,]h-]h0]uh2Kh3hh]qZ(hBXThis module contains all q[q\}q](hXThis module contains all h hUubcsphinx.addnodes pending_xref q^)q_}q`(hX:class:`Container`qah hUh!h$h&U pending_xrefqbh(}qc(UreftypeXclassUrefwarnqdU reftargetqeX ContainerU refdomainXpyqfh-]h,]U refexplicith*]h+]h0]UrefdocqgX'api_reference/simpy.resources.containerqhUpy:classqiNU py:moduleqjXsimpy.resources.containerqkuh2Kh]qlh<)qm}qn(hhah(}qo(h*]h+]qp(UxrefqqhfXpy-classqreh,]h-]h0]uh h_h]qshBX Containerqtqu}qv(hUh hmubah&hFubaubhBX like resources.qwqx}qy(hX like resources.h hUubeubhT)qz}q{(hXContainers model the production and consumption of a homogeneous, undifferentiated bulk. It may either be continuous (like water) or discrete (like apples).q|h hh!hWh&hXh(}q}(h*]h+]h,]h-]h0]uh2Kh3hh]q~hBXContainers model the production and consumption of a homogeneous, undifferentiated bulk. It may either be continuous (like water) or discrete (like apples).qq}q(hh|h hzubaubhT)q}q(hXFor example, a gasoline station stores gas (petrol) in large tanks. Tankers increase, and refuelled cars decrease, the amount of gas in the station's storage tanks.qh hh!hWh&hXh(}q(h*]h+]h,]h-]h0]uh2Kh3hh]qhBXFor example, a gasoline station stores gas (petrol) in large tanks. Tankers increase, and refuelled cars decrease, the amount of gas in the station's storage tanks.qq}q(hhh hubaubhK)q}q(hUh hh!Nh&hOh(}q(h-]h,]h*]h+]h0]Uentries]q(hRX.Container (class in simpy.resources.container)hUtqauh2Nh3hh]ubcsphinx.addnodes desc q)q}q(hUh hh!Nh&Udescqh(}q(UnoindexqUdomainqXpyh-]h,]h*]h+]h0]UobjtypeqXclassqUdesctypeqhuh2Nh3hh]q(csphinx.addnodes desc_signature q)q}q(hX$Container(env, capacity=inf, init=0)h hh!U qh&Udesc_signatureqh(}q(h-]qhaUmoduleqh"Xsimpy.resources.containerqq}qbh,]h*]h+]h0]qhaUfullnameqX ContainerqUclassqUUfirstquh2Nh3hh]q(csphinx.addnodes desc_annotation q)q}q(hXclass h hh!hh&Udesc_annotationqh(}q(h*]h+]h,]h-]h0]uh2Nh3hh]qhBXclass qq}q(hUh hubaubcsphinx.addnodes desc_addname q)q}q(hXsimpy.resources.container.h hh!hh&U desc_addnameqh(}q(h*]h+]h,]h-]h0]uh2Nh3hh]qhBXsimpy.resources.container.qq}q(hUh hubaubcsphinx.addnodes desc_name q)q}q(hhh hh!hh&U desc_nameqh(}q(h*]h+]h,]h-]h0]uh2Nh3hh]qhBX ContainerqÅq}q(hUh hubaubcsphinx.addnodes desc_parameterlist q)q}q(hUh hh!hh&Udesc_parameterlistqh(}q(h*]h+]h,]h-]h0]uh2Nh3hh]q(csphinx.addnodes desc_parameter q)q}q(hXenvh(}q(h*]h+]h,]h-]h0]uh hh]qhBXenvqхq}q(hUh hubah&Udesc_parameterqubh)q}q(hX capacity=infh(}q(h*]h+]h,]h-]h0]uh hh]qhBX capacity=infqمq}q(hUh hubah&hubh)q}q(hXinit=0h(}q(h*]h+]h,]h-]h0]uh hh]qhBXinit=0qq}q(hUh hubah&hubeubeubcsphinx.addnodes desc_content q)q}q(hUh hh!hh&U desc_contentqh(}q(h*]h+]h,]h-]h0]uh2Nh3hh]q(hT)q}q(hXModels the production and consumption of a homogeneous, undifferentiated bulk. It may either be continuous (like water) or discrete (like apples).qh hh!Xz/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/container.py:docstring of simpy.resources.container.Containerqh&hXh(}q(h*]h+]h,]h-]h0]uh2Kh3hh]qhBXModels the production and consumption of a homogeneous, undifferentiated bulk. It may either be continuous (like water) or discrete (like apples).qq}q(hhh hubaubhT)q}q(hX_The *env* parameter is the :class:`~simpy.core.Environment` instance the container is bound to.h hh!hh&hXh(}q(h*]h+]h,]h-]h0]uh2Kh3hh]q(hBXThe qq}q(hXThe h hubcdocutils.nodes emphasis q)q}q(hX*env*h(}q(h*]h+]h,]h-]h0]uh hh]qhBXenvqq}r(hUh hubah&UemphasisrubhBX parameter is the rr}r(hX parameter is the h hubh^)r}r(hX :class:`~simpy.core.Environment`rh hh!h$h&hbh(}r(UreftypeXclasshdheXsimpy.core.EnvironmentU refdomainXpyr h-]h,]U refexplicith*]h+]h0]hghhhihhjhkuh2Kh]r h<)r }r (hjh(}r (h*]h+]r(hqj Xpy-classreh,]h-]h0]uh jh]rhBX Environmentrr}r(hUh j ubah&hFubaubhBX$ instance the container is bound to.rr}r(hX$ instance the container is bound to.h hubeubhT)r}r(hXThe *capacity* defines the size of the container and must be a positive number (> 0). By default, a container is of unlimited size. You can specify the initial level of the container via *init*. It must be >= 0 and is 0 by default.h hh!hh&hXh(}r(h*]h+]h,]h-]h0]uh2Kh3hh]r(hBXThe rr}r(hXThe h jubh)r}r(hX *capacity*h(}r (h*]h+]h,]h-]h0]uh jh]r!hBXcapacityr"r#}r$(hUh jubah&jubhBX defines the size of the container and must be a positive number (> 0). By default, a container is of unlimited size. You can specify the initial level of the container via r%r&}r'(hX defines the size of the container and must be a positive number (> 0). By default, a container is of unlimited size. You can specify the initial level of the container via h jubh)r(}r)(hX*init*h(}r*(h*]h+]h,]h-]h0]uh jh]r+hBXinitr,r-}r.(hUh j(ubah&jubhBX&. It must be >= 0 and is 0 by default.r/r0}r1(hX&. It must be >= 0 and is 0 by default.h jubeubhT)r2}r3(hXTRaise a :exc:`ValueError` if ``capacity <= 0``, ``init < 0`` or ``init > capacity``.h hh!hh&hXh(}r4(h*]h+]h,]h-]h0]uh2K h3hh]r5(hBXRaise a r6r7}r8(hXRaise a h j2ubh^)r9}r:(hX:exc:`ValueError`r;h j2h!Nh&hbh(}r<(UreftypeXexchdheX ValueErrorU refdomainXpyr=h-]h,]U refexplicith*]h+]h0]hghhhihhjhkuh2Nh]r>h<)r?}r@(hj;h(}rA(h*]h+]rB(hqj=Xpy-excrCeh,]h-]h0]uh j9h]rDhBX ValueErrorrErF}rG(hUh j?ubah&hFubaubhBX if rHrI}rJ(hX if h j2ubh<)rK}rL(hX``capacity <= 0``h(}rM(h*]h+]h,]h-]h0]uh j2h]rNhBX capacity <= 0rOrP}rQ(hUh jKubah&hFubhBX, rRrS}rT(hX, h j2ubh<)rU}rV(hX ``init < 0``h(}rW(h*]h+]h,]h-]h0]uh j2h]rXhBXinit < 0rYrZ}r[(hUh jUubah&hFubhBX or r\r]}r^(hX or h j2ubh<)r_}r`(hX``init > capacity``h(}ra(h*]h+]h,]h-]h0]uh j2h]rbhBXinit > capacityrcrd}re(hUh j_ubah&hFubhBX.rf}rg(hX.h j2ubeubhK)rh}ri(hUh hh!X/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/container.py:docstring of simpy.resources.container.Container.capacityrjh&hOh(}rk(h-]h,]h*]h+]h0]Uentries]rl(hRX8capacity (simpy.resources.container.Container attribute)h Utrmauh2Nh3hh]ubh)rn}ro(hUh hh!jjh&hh(}rp(hhXpyh-]h,]h*]h+]h0]hX attributerqhjquh2Nh3hh]rr(h)rs}rt(hXContainer.capacityh jnh!hh&hh(}ru(h-]rvh ahh"Xsimpy.resources.containerrwrx}rybh,]h*]h+]h0]rzh ahXContainer.capacityhhhuh2Nh3hh]r{h)r|}r}(hXcapacityh jsh!hh&hh(}r~(h*]h+]h,]h-]h0]uh2Nh3hh]rhBXcapacityrr}r(hUh j|ubaubaubh)r}r(hUh jnh!hh&hh(}r(h*]h+]h,]h-]h0]uh2Nh3hh]rhT)r}r(hX&The maximum capacity of the container.rh jh!jjh&hXh(}r(h*]h+]h,]h-]h0]uh2Kh3hh]rhBX&The maximum capacity of the container.rr}r(hjh jubaubaubeubhK)r}r(hUh hh!X/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/container.py:docstring of simpy.resources.container.Container.levelrh&hOh(}r(h-]h,]h*]h+]h0]Uentries]r(hRX5level (simpy.resources.container.Container attribute)hUtrauh2Nh3hh]ubh)r}r(hUh hh!jh&hh(}r(hhXpyh-]h,]h*]h+]h0]hX attributerhjuh2Nh3hh]r(h)r}r(hXContainer.levelh jh!hh&hh(}r(h-]rhahh"Xsimpy.resources.containerrr}rbh,]h*]h+]h0]rhahXContainer.levelhhhuh2Nh3hh]rh)r}r(hXlevelh jh!hh&hh(}r(h*]h+]h,]h-]h0]uh2Nh3hh]rhBXlevelrr}r(hUh jubaubaubh)r}r(hUh jh!hh&hh(}r(h*]h+]h,]h-]h0]uh2Nh3hh]rhT)r}r(hXMThe current level of the container (a number between ``0`` and ``capacity``).h jh!jh&hXh(}r(h*]h+]h,]h-]h0]uh2Kh3hh]r(hBX5The current level of the container (a number between rr}r(hX5The current level of the container (a number between h jubh<)r}r(hX``0``h(}r(h*]h+]h,]h-]h0]uh jh]rhBX0r}r(hUh jubah&hFubhBX and rr}r(hX and h jubh<)r}r(hX ``capacity``h(}r(h*]h+]h,]h-]h0]uh jh]rhBXcapacityrr}r(hUh jubah&hFubhBX).rr}r(hX).h jubeubaubeubhK)r}r(hUh hh!Uh&hOh(}r(h-]h,]h*]h+]h0]Uentries]r(hRX3put (simpy.resources.container.Container attribute)hUtrauh2Nh3hh]ubh)r}r(hUh hh!Uh&hh(}r(hhXpyh-]h,]h*]h+]h0]hX attributerhjuh2Nh3hh]r(h)r}r(hX Container.puth jh!hh&hh(}r(h-]rhahh"Xsimpy.resources.containerrr}rbh,]h*]h+]h0]rhahX Container.puthhhuh2Nh3hh]rh)r}r(hXputh jh!hh&hh(}r(h*]h+]h,]h-]h0]uh2Nh3hh]rhBXputrr}r(hUh jubaubaubh)r}r(hUh jh!hh&hh(}r(h*]h+]h,]h-]h0]uh2Nh3hh]r(hT)r}r(hX*Creates a new :class:`ContainerPut` event.h jh!X~/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/container.py:docstring of simpy.resources.container.Container.puth&hXh(}r(h*]h+]h,]h-]h0]uh2Kh3hh]r(hBXCreates a new rr}r(hXCreates a new h jubh^)r}r(hX:class:`ContainerPut`rh jh!Nh&hbh(}r(UreftypeXclasshdheX ContainerPutU refdomainXpyrh-]h,]U refexplicith*]h+]h0]hghhhihhjhkuh2Nh]rh<)r}r(hjh(}r(h*]h+]r(hqjXpy-classreh,]h-]h0]uh jh]rhBX ContainerPutrr}r(hUh jubah&hFubaubhBX event.rr}r(hX event.h jubeubhT)r}r(hXalias of :class:`ContainerPut`h jh!Uh&hXh(}r(h*]h+]h,]h-]h0]uh2Kh3hh]r(hBX alias of rr}r(hX alias of h jubh^)r}r(hX:class:`ContainerPut`rh jh!Nh&hbh(}r (UreftypeXclasshdheX ContainerPutU refdomainXpyr h-]h,]U refexplicith*]h+]h0]hghhhihhjhkuh2Nh]r h<)r }r (hjh(}r(h*]h+]r(hqj Xpy-classreh,]h-]h0]uh jh]rhBX ContainerPutrr}r(hUh j ubah&hFubaubeubeubeubhK)r}r(hUh hh!Uh&hOh(}r(h-]h,]h*]h+]h0]Uentries]r(hRX3get (simpy.resources.container.Container attribute)h Utrauh2Nh3hh]ubh)r}r(hUh hh!Uh&hh(}r(hhXpyh-]h,]h*]h+]h0]hX attributerhjuh2Nh3hh]r(h)r}r (hX Container.geth jh!hh&hh(}r!(h-]r"h ahh"Xsimpy.resources.containerr#r$}r%bh,]h*]h+]h0]r&h ahX Container.gethhhuh2Nh3hh]r'h)r(}r)(hXgeth jh!hh&hh(}r*(h*]h+]h,]h-]h0]uh2Nh3hh]r+hBXgetr,r-}r.(hUh j(ubaubaubh)r/}r0(hUh jh!hh&hh(}r1(h*]h+]h,]h-]h0]uh2Nh3hh]r2(hT)r3}r4(hX*Creates a new :class:`ContainerGet` event.h j/h!X~/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/container.py:docstring of simpy.resources.container.Container.geth&hXh(}r5(h*]h+]h,]h-]h0]uh2Kh3hh]r6(hBXCreates a new r7r8}r9(hXCreates a new h j3ubh^)r:}r;(hX:class:`ContainerGet`r<h j3h!Nh&hbh(}r=(UreftypeXclasshdheX ContainerGetU refdomainXpyr>h-]h,]U refexplicith*]h+]h0]hghhhihhjhkuh2Nh]r?h<)r@}rA(hj<h(}rB(h*]h+]rC(hqj>Xpy-classrDeh,]h-]h0]uh j:h]rEhBX ContainerGetrFrG}rH(hUh j@ubah&hFubaubhBX event.rIrJ}rK(hX event.h j3ubeubhT)rL}rM(hXalias of :class:`ContainerGet`h j/h!Uh&hXh(}rN(h*]h+]h,]h-]h0]uh2Kh3hh]rO(hBX alias of rPrQ}rR(hX alias of h jLubh^)rS}rT(hX:class:`ContainerGet`rUh jLh!Nh&hbh(}rV(UreftypeXclasshdheX ContainerGetU refdomainXpyrWh-]h,]U refexplicith*]h+]h0]hghhhihhjhkuh2Nh]rXh<)rY}rZ(hjUh(}r[(h*]h+]r\(hqjWXpy-classr]eh,]h-]h0]uh jSh]r^hBX ContainerGetr_r`}ra(hUh jYubah&hFubaubeubeubeubeubeubhK)rb}rc(hUh hh!Nh&hOh(}rd(h-]h,]h*]h+]h0]Uentries]re(hRX1ContainerPut (class in simpy.resources.container)h Utrfauh2Nh3hh]ubh)rg}rh(hUh hh!Nh&hh(}ri(hhXpyh-]h,]h*]h+]h0]hXclassrjhjjuh2Nh3hh]rk(h)rl}rm(hXContainerPut(container, amount)h jgh!hh&hh(}rn(h-]roh ahh"Xsimpy.resources.containerrprq}rrbh,]h*]h+]h0]rsh ahX ContainerPutrthUhuh2Nh3hh]ru(h)rv}rw(hXclass h jlh!hh&hh(}rx(h*]h+]h,]h-]h0]uh2Nh3hh]ryhBXclass rzr{}r|(hUh jvubaubh)r}}r~(hXsimpy.resources.container.h jlh!hh&hh(}r(h*]h+]h,]h-]h0]uh2Nh3hh]rhBXsimpy.resources.container.rr}r(hUh j}ubaubh)r}r(hjth jlh!hh&hh(}r(h*]h+]h,]h-]h0]uh2Nh3hh]rhBX ContainerPutrr}r(hUh jubaubh)r}r(hUh jlh!hh&hh(}r(h*]h+]h,]h-]h0]uh2Nh3hh]r(h)r}r(hX containerh(}r(h*]h+]h,]h-]h0]uh jh]rhBX containerrr}r(hUh jubah&hubh)r}r(hXamounth(}r(h*]h+]h,]h-]h0]uh jh]rhBXamountrr}r(hUh jubah&hubeubeubh)r}r(hUh jgh!hh&hh(}r(h*]h+]h,]h-]h0]uh2Nh3hh]r(hT)r}r(hX|An event that puts *amount* into the *container*. The event is triggered as soon as there's enough space in the *container*.h jh!X}/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/container.py:docstring of simpy.resources.container.ContainerPutrh&hXh(}r(h*]h+]h,]h-]h0]uh2Kh3hh]r(hBXAn event that puts rr}r(hXAn event that puts h jubh)r}r(hX*amount*h(}r(h*]h+]h,]h-]h0]uh jh]rhBXamountrr}r(hUh jubah&jubhBX into the rr}r(hX into the h jubh)r}r(hX *container*h(}r(h*]h+]h,]h-]h0]uh jh]rhBX containerrr}r(hUh jubah&jubhBX@. The event is triggered as soon as there's enough space in the rr}r(hX@. The event is triggered as soon as there's enough space in the h jubh)r}r(hX *container*h(}r(h*]h+]h,]h-]h0]uh jh]rhBX containerrr}r(hUh jubah&jubhBX.r}r(hX.h jubeubhT)r}r(hX-Raise a :exc:`ValueError` if ``amount <= 0``.h jh!jh&hXh(}r(h*]h+]h,]h-]h0]uh2Kh3hh]r(hBXRaise a rr}r(hXRaise a h jubh^)r}r(hX:exc:`ValueError`rh jh!h$h&hbh(}r(UreftypeXexchdheX ValueErrorU refdomainXpyrh-]h,]U refexplicith*]h+]h0]hghhhijthjhkuh2Kh]rh<)r}r(hjh(}r(h*]h+]r(hqjXpy-excreh,]h-]h0]uh jh]rhBX ValueErrorrr}r(hUh jubah&hFubaubhBX if rr}r(hX if h jubh<)r}r(hX``amount <= 0``h(}r(h*]h+]h,]h-]h0]uh jh]rhBX amount <= 0rr}r(hUh jubah&hFubhBX.r}r(hX.h jubeubhK)r}r(hUh jh!X/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/container.py:docstring of simpy.resources.container.ContainerPut.amountrh&hOh(}r(h-]h,]h*]h+]h0]Uentries]r(hRX9amount (simpy.resources.container.ContainerPut attribute)hUtrauh2Nh3hh]ubh)r}r(hUh jh!jh&hh(}r(hhXpyh-]h,]h*]h+]h0]hX attributerhjuh2Nh3hh]r(h)r}r(hXContainerPut.amounth jh!U rh&hh(}r(h-]rhahh"Xsimpy.resources.containerrr}rbh,]h*]h+]h0]rhahXContainerPut.amounthjthuh2Nh3hh]r(h)r}r(hXamounth jh!jh&hh(}r(h*]h+]h,]h-]h0]uh2Nh3hh]rhBXamountrr}r(hUh jubaubh)r}r(hX = Noneh jh!jh&hh(}r(h*]h+]h,]h-]h0]uh2Nh3hh]rhBX = Nonerr }r (hUh jubaubeubh)r }r (hUh jh!jh&hh(}r (h*]h+]h,]h-]h0]uh2Nh3hh]rhT)r}r(hX(The amount to be put into the container.rh j h!jh&hXh(}r(h*]h+]h,]h-]h0]uh2Kh3hh]rhBX(The amount to be put into the container.rr}r(hjh jubaubaubeubeubeubhK)r}r(hUh hh!Nh&hOh(}r(h-]h,]h*]h+]h0]Uentries]r(hRX1ContainerGet (class in simpy.resources.container)h Utrauh2Nh3hh]ubh)r}r(hUh hh!Nh&hh(}r(hhXpyh-]h,]h*]h+]h0]hXclassrhjuh2Nh3hh]r (h)r!}r"(hXContainerGet(resource, amount)h jh!hh&hh(}r#(h-]r$h ahh"Xsimpy.resources.containerr%r&}r'bh,]h*]h+]h0]r(h ahX ContainerGetr)hUhuh2Nh3hh]r*(h)r+}r,(hXclass h j!h!hh&hh(}r-(h*]h+]h,]h-]h0]uh2Nh3hh]r.hBXclass r/r0}r1(hUh j+ubaubh)r2}r3(hXsimpy.resources.container.h j!h!hh&hh(}r4(h*]h+]h,]h-]h0]uh2Nh3hh]r5hBXsimpy.resources.container.r6r7}r8(hUh j2ubaubh)r9}r:(hj)h j!h!hh&hh(}r;(h*]h+]h,]h-]h0]uh2Nh3hh]r<hBX ContainerGetr=r>}r?(hUh j9ubaubh)r@}rA(hUh j!h!hh&hh(}rB(h*]h+]h,]h-]h0]uh2Nh3hh]rC(h)rD}rE(hXresourceh(}rF(h*]h+]h,]h-]h0]uh j@h]rGhBXresourcerHrI}rJ(hUh jDubah&hubh)rK}rL(hXamounth(}rM(h*]h+]h,]h-]h0]uh j@h]rNhBXamountrOrP}rQ(hUh jKubah&hubeubeubh)rR}rS(hUh jh!hh&hh(}rT(h*]h+]h,]h-]h0]uh2Nh3hh]rU(hT)rV}rW(hXAn event that gets *amount* from the *container*. The event is triggered as soon as there's enough content available in the *container*.h jRh!X}/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/container.py:docstring of simpy.resources.container.ContainerGetrXh&hXh(}rY(h*]h+]h,]h-]h0]uh2Kh3hh]rZ(hBXAn event that gets r[r\}r](hXAn event that gets h jVubh)r^}r_(hX*amount*h(}r`(h*]h+]h,]h-]h0]uh jVh]rahBXamountrbrc}rd(hUh j^ubah&jubhBX from the rerf}rg(hX from the h jVubh)rh}ri(hX *container*h(}rj(h*]h+]h,]h-]h0]uh jVh]rkhBX containerrlrm}rn(hUh jhubah&jubhBXL. The event is triggered as soon as there's enough content available in the rorp}rq(hXL. The event is triggered as soon as there's enough content available in the h jVubh)rr}rs(hX *container*h(}rt(h*]h+]h,]h-]h0]uh jVh]ruhBX containerrvrw}rx(hUh jrubah&jubhBX.ry}rz(hX.h jVubeubhT)r{}r|(hX-Raise a :exc:`ValueError` if ``amount <= 0``.r}h jRh!jXh&hXh(}r~(h*]h+]h,]h-]h0]uh2Kh3hh]r(hBXRaise a rr}r(hXRaise a h j{ubh^)r}r(hX:exc:`ValueError`rh j{h!h$h&hbh(}r(UreftypeXexchdheX ValueErrorU refdomainXpyrh-]h,]U refexplicith*]h+]h0]hghhhij)hjhkuh2Kh]rh<)r}r(hjh(}r(h*]h+]r(hqjXpy-excreh,]h-]h0]uh jh]rhBX ValueErrorrr}r(hUh jubah&hFubaubhBX if rr}r(hX if h j{ubh<)r}r(hX``amount <= 0``h(}r(h*]h+]h,]h-]h0]uh j{h]rhBX amount <= 0rr}r(hUh jubah&hFubhBX.r}r(hX.h j{ubeubhK)r}r(hUh jRh!X/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/container.py:docstring of simpy.resources.container.ContainerGet.amountrh&hOh(}r(h-]h,]h*]h+]h0]Uentries]r(hRX9amount (simpy.resources.container.ContainerGet attribute)hUtrauh2Nh3hh]ubh)r}r(hUh jRh!jh&hh(}r(hhXpyh-]h,]h*]h+]h0]hX attributerhjuh2Nh3hh]r(h)r}r(hXContainerGet.amountrh jh!jh&hh(}r(h-]rhahh"Xsimpy.resources.containerrr}rbh,]h*]h+]h0]rhahXContainerGet.amounthj)huh2Nh3hh]r(h)r}r(hXamounth jh!jh&hh(}r(h*]h+]h,]h-]h0]uh2Nh3hh]rhBXamountrr}r(hUh jubaubh)r}r(hX = Noneh jh!jh&hh(}r(h*]h+]h,]h-]h0]uh2Nh3hh]rhBX = Nonerr}r(hUh jubaubeubh)r}r(hUh jh!jh&hh(}r(h*]h+]h,]h-]h0]uh2Nh3hh]rhT)r}r(hX,The amount to be taken out of the container.rh jh!jh&hXh(}r(h*]h+]h,]h-]h0]uh2Kh3hh]rhBX,The amount to be taken out of the container.rr}r(hjh jubaubaubeubeubeubeubahUU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh3hU current_linerNUtransform_messagesr]rUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh9NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacer Uenvr NUdump_pseudo_xmlr NUexpose_internalsr NUsectsubtitle_xformr U source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerU]/var/build/user_builds/simpy/checkouts/3.0.5/docs/api_reference/simpy.resources.container.rstrUgettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlr Uhttp://www.python.org/dev/peps/r!Usyntax_highlightr"Ulongr#Uinput_encoding_error_handlerr$jUauto_id_prefixr%Uidr&Udoctitle_xformr'Ustrip_elements_with_classesr(NU _config_filesr)]Ufile_insertion_enabledr*U raw_enabledr+KU dump_settingsr,NubUsymbol_footnote_startr-KUidsr.}r/(hjhjhjh j!h jh jlh jsh/cdocutils.nodes target r0)r1}r2(hUh hh!hNh&Utargetr3h(}r4(h*]h-]r5h/ah,]Uismodh+]h0]uh2Kh3hh]ubhhhhhjuUsubstitution_namesr6}r7h&h3h(}r8(h*]h-]h,]Usourceh$h+]h0]uU footnotesr9]r:Urefidsr;}r<ub.PK.D@悟UAUA4simpy-3.0.5/.doctrees/api_reference/simpy.rt.doctreecdocutils.nodes document q)q}q(U nametypesq}q(Xsimpy.rt.RealtimeEnvironmentqX#simpy.rt.RealtimeEnvironment.factorqX!simpy.rt.RealtimeEnvironment.stepqX#simpy.rt.RealtimeEnvironment.strictq X"simpy.rt --- real-time simulationsq NuUsubstitution_defsq }q Uparse_messagesq ]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hhhhhhh h h Usimpy-rt-real-time-simulationsquUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqcdocutils.nodes reprunicode qXL/var/build/user_builds/simpy/checkouts/3.0.5/docs/api_reference/simpy.rt.rstqq}q bUtagnameq!Usectionq"U attributesq#}q$(Udupnamesq%]Uclassesq&]Ubackrefsq']Uidsq(]q)(Xmodule-simpy.rtq*heUnamesq+]q,h auUlineq-KUdocumentq.hh]q/(cdocutils.nodes title q0)q1}q2(hX&``simpy.rt`` --- Real-time simulationsq3hhhhh!Utitleq4h#}q5(h%]h&]h']h(]h+]uh-Kh.hh]q6(cdocutils.nodes literal q7)q8}q9(hX ``simpy.rt``q:h#}q;(h%]h&]h']h(]h+]uhh1h]qq?}q@(hUhh8ubah!UliteralqAubh=X --- Real-time simulationsqBqC}qD(hX --- Real-time simulationsqEhh1ubeubcsphinx.addnodes index qF)qG}qH(hUhhhU qIh!UindexqJh#}qK(h(]h']h%]h&]h+]Uentries]qL(UsingleqMXsimpy.rt (module)Xmodule-simpy.rtUtqNauh-Kh.hh]ubcdocutils.nodes paragraph qO)qP}qQ(hXeProvides an environment whose time passes according to the (scaled) real-time (aka *wallclock time*).hhhXN/var/build/user_builds/simpy/checkouts/3.0.5/simpy/rt.py:docstring of simpy.rth!U paragraphqRh#}qS(h%]h&]h']h(]h+]uh-Kh.hh]qT(h=XSProvides an environment whose time passes according to the (scaled) real-time (aka qUqV}qW(hXSProvides an environment whose time passes according to the (scaled) real-time (aka hhPubcdocutils.nodes emphasis qX)qY}qZ(hX*wallclock time*h#}q[(h%]h&]h']h(]h+]uhhPh]q\h=Xwallclock timeq]q^}q_(hUhhYubah!Uemphasisq`ubh=X).qaqb}qc(hX).hhPubeubhF)qd}qe(hUhhhNh!hJh#}qf(h(]h']h%]h&]h+]Uentries]qg(hMX'RealtimeEnvironment (class in simpy.rt)hUtqhauh-Nh.hh]ubcsphinx.addnodes desc qi)qj}qk(hUhhhNh!Udescqlh#}qm(UnoindexqnUdomainqoXpyh(]h']h%]h&]h+]UobjtypeqpXclassqqUdesctypeqrhquh-Nh.hh]qs(csphinx.addnodes desc_signature qt)qu}qv(hX<RealtimeEnvironment(initial_time=0, factor=1.0, strict=True)hhjhU qwh!Udesc_signatureqxh#}qy(h(]qzhaUmoduleq{hXsimpy.rtq|q}}q~bh']h%]h&]h+]qhaUfullnameqXRealtimeEnvironmentqUclassqUUfirstquh-Nh.hh]q(csphinx.addnodes desc_annotation q)q}q(hXclass hhuhhwh!Udesc_annotationqh#}q(h%]h&]h']h(]h+]uh-Nh.hh]qh=Xclass qq}q(hUhhubaubcsphinx.addnodes desc_addname q)q}q(hX simpy.rt.hhuhhwh!U desc_addnameqh#}q(h%]h&]h']h(]h+]uh-Nh.hh]qh=X simpy.rt.qq}q(hUhhubaubcsphinx.addnodes desc_name q)q}q(hhhhuhhwh!U desc_nameqh#}q(h%]h&]h']h(]h+]uh-Nh.hh]qh=XRealtimeEnvironmentqq}q(hUhhubaubcsphinx.addnodes desc_parameterlist q)q}q(hUhhuhhwh!Udesc_parameterlistqh#}q(h%]h&]h']h(]h+]uh-Nh.hh]q(csphinx.addnodes desc_parameter q)q}q(hXinitial_time=0h#}q(h%]h&]h']h(]h+]uhhh]qh=Xinitial_time=0qq}q(hUhhubah!Udesc_parameterqubh)q}q(hX factor=1.0h#}q(h%]h&]h']h(]h+]uhhh]qh=X factor=1.0qq}q(hUhhubah!hubh)q}q(hX strict=Trueh#}q(h%]h&]h']h(]h+]uhhh]qh=X strict=Trueqq}q(hUhhubah!hubeubeubcsphinx.addnodes desc_content q)q}q(hUhhjhhwh!U desc_contentqh#}q(h%]h&]h']h(]h+]uh-Nh.hh]q(hO)q}q(hXNAn :class:`~simpy.core.Environment` which uses the real (e.g. wallclock) time.hhhXb/var/build/user_builds/simpy/checkouts/3.0.5/simpy/rt.py:docstring of simpy.rt.RealtimeEnvironmentqh!hRh#}q(h%]h&]h']h(]h+]uh-Kh.hh]q(h=XAn qȅq}q(hXAn hhubcsphinx.addnodes pending_xref q)q}q(hX :class:`~simpy.core.Environment`qhhhhh!U pending_xrefqh#}q(UreftypeXclassUrefwarnqщU reftargetqXsimpy.core.EnvironmentU refdomainXpyqh(]h']U refexplicith%]h&]h+]UrefdocqXapi_reference/simpy.rtqUpy:classqhU py:moduleqXsimpy.rtquh-Kh]qh7)q}q(hhh#}q(h%]h&]q(UxrefqhXpy-classqeh']h(]h+]uhhh]qh=X Environmentqᅁq}q(hUhhubah!hAubaubh=X+ which uses the real (e.g. wallclock) time.q䅁q}q(hX+ which uses the real (e.g. wallclock) time.hhubeubhO)q}q(hXA time step will take *factor* seconds of real time (one second by default); e.g., if you step from ``0`` until ``3`` with ``factor=0.5``, the :meth:`simpy.core.BaseEnvironment.run()` call will take at least 1.5 seconds.hhhhh!hRh#}q(h%]h&]h']h(]h+]uh-Kh.hh]q(h=XA time step will take q녁q}q(hXA time step will take hhubhX)q}q(hX*factor*h#}q(h%]h&]h']h(]h+]uhhh]qh=Xfactorqq}q(hUhhubah!h`ubh=XF seconds of real time (one second by default); e.g., if you step from qq}q(hXF seconds of real time (one second by default); e.g., if you step from hhubh7)q}q(hX``0``h#}q(h%]h&]h']h(]h+]uhhh]qh=X0q}q(hUhhubah!hAubh=X until qq}r(hX until hhubh7)r}r(hX``3``h#}r(h%]h&]h']h(]h+]uhhh]rh=X3r}r(hUhjubah!hAubh=X with rr}r (hX with hhubh7)r }r (hX``factor=0.5``h#}r (h%]h&]h']h(]h+]uhhh]r h=X factor=0.5rr}r(hUhj ubah!hAubh=X, the rr}r(hX, the hhubh)r}r(hX(:meth:`simpy.core.BaseEnvironment.run()`rhhhhh!hh#}r(UreftypeXmethhщhXsimpy.core.BaseEnvironment.runU refdomainXpyrh(]h']U refexplicith%]h&]h+]hhhhhhuh-Kh]rh7)r}r(hjh#}r(h%]h&]r(hjXpy-methreh']h(]h+]uhjh]rh=X simpy.core.BaseEnvironment.run()r r!}r"(hUhjubah!hAubaubh=X% call will take at least 1.5 seconds.r#r$}r%(hX% call will take at least 1.5 seconds.hhubeubhO)r&}r'(hXIf the processing of the events for a time step takes too long, a :exc:`RuntimeError` is raised in :meth:`step()`. You can disable this behavior by setting *strict* to ``False``.hhhhh!hRh#}r((h%]h&]h']h(]h+]uh-K h.hh]r)(h=XBIf the processing of the events for a time step takes too long, a r*r+}r,(hXBIf the processing of the events for a time step takes too long, a hj&ubh)r-}r.(hX:exc:`RuntimeError`r/hj&hNh!hh#}r0(UreftypeXexchщhX RuntimeErrorU refdomainXpyr1h(]h']U refexplicith%]h&]h+]hhhhhhuh-Nh]r2h7)r3}r4(hj/h#}r5(h%]h&]r6(hj1Xpy-excr7eh']h(]h+]uhj-h]r8h=X RuntimeErrorr9r:}r;(hUhj3ubah!hAubaubh=X is raised in r<r=}r>(hX is raised in hj&ubh)r?}r@(hX:meth:`step()`rAhj&hNh!hh#}rB(UreftypeXmethhщhXstepU refdomainXpyrCh(]h']U refexplicith%]h&]h+]hhhhhhuh-Nh]rDh7)rE}rF(hjAh#}rG(h%]h&]rH(hjCXpy-methrIeh']h(]h+]uhj?h]rJh=Xstep()rKrL}rM(hUhjEubah!hAubaubh=X+. You can disable this behavior by setting rNrO}rP(hX+. You can disable this behavior by setting hj&ubhX)rQ}rR(hX*strict*h#}rS(h%]h&]h']h(]h+]uhj&h]rTh=XstrictrUrV}rW(hUhjQubah!h`ubh=X to rXrY}rZ(hX to hj&ubh7)r[}r\(hX ``False``h#}r](h%]h&]h']h(]h+]uhj&h]r^h=XFalser_r`}ra(hUhj[ubah!hAubh=X.rb}rc(hX.hj&ubeubhF)rd}re(hUhhhXi/var/build/user_builds/simpy/checkouts/3.0.5/simpy/rt.py:docstring of simpy.rt.RealtimeEnvironment.factorrfh!hJh#}rg(h(]h']h%]h&]h+]Uentries]rh(hMX/factor (simpy.rt.RealtimeEnvironment attribute)hUtriauh-Nh.hh]ubhi)rj}rk(hUhhhjfh!hlh#}rl(hnhoXpyh(]h']h%]h&]h+]hpX attributermhrjmuh-Nh.hh]rn(ht)ro}rp(hXRealtimeEnvironment.factorhjjhU rqh!hxh#}rr(h(]rshah{hXsimpy.rtrtru}rvbh']h%]h&]h+]rwhahXRealtimeEnvironment.factorhhhuh-Nh.hh]rx(h)ry}rz(hXfactorhjohjqh!hh#}r{(h%]h&]h']h(]h+]uh-Nh.hh]r|h=Xfactorr}r~}r(hUhjyubaubh)r}r(hX = Nonehjohjqh!hh#}r(h%]h&]h']h(]h+]uh-Nh.hh]rh=X = Nonerr}r(hUhjubaubeubh)r}r(hUhjjhjqh!hh#}r(h%]h&]h']h(]h+]uh-Nh.hh]rhO)r}r(hX Scaling factor of the real-time.rhjhjfh!hRh#}r(h%]h&]h']h(]h+]uh-Kh.hh]rh=X Scaling factor of the real-time.rr}r(hjhjubaubaubeubhF)r}r(hUhhhXi/var/build/user_builds/simpy/checkouts/3.0.5/simpy/rt.py:docstring of simpy.rt.RealtimeEnvironment.strictrh!hJh#}r(h(]h']h%]h&]h+]Uentries]r(hMX/strict (simpy.rt.RealtimeEnvironment attribute)h Utrauh-Nh.hh]ubhi)r}r(hUhhhjh!hlh#}r(hnhoXpyh(]h']h%]h&]h+]hpX attributerhrjuh-Nh.hh]r(ht)r}r(hXRealtimeEnvironment.stricthjhjqh!hxh#}r(h(]rh ah{hXsimpy.rtrr}rbh']h%]h&]h+]rh ahXRealtimeEnvironment.stricthhhuh-Nh.hh]r(h)r}r(hXstricthjhjqh!hh#}r(h%]h&]h']h(]h+]uh-Nh.hh]rh=Xstrictrr}r(hUhjubaubh)r}r(hX = Nonehjhjqh!hh#}r(h%]h&]h']h(]h+]uh-Nh.hh]rh=X = Nonerr}r(hUhjubaubeubh)r}r(hUhjhjqh!hh#}r(h%]h&]h']h(]h+]uh-Nh.hh]rhO)r}r(hXRunning mode of the environment. :meth:`step()` will raise a :exc:`RuntimeError` if this is set to ``True`` and the processing of events takes too long.hjhjh!hRh#}r(h%]h&]h']h(]h+]uh-Kh.hh]r(h=X!Running mode of the environment. rr}r(hX!Running mode of the environment. hjubh)r}r(hX:meth:`step()`rhjhNh!hh#}r(UreftypeXmethhщhXstepU refdomainXpyrh(]h']U refexplicith%]h&]h+]hhhhhhuh-Nh]rh7)r}r(hjh#}r(h%]h&]r(hjXpy-methreh']h(]h+]uhjh]rh=Xstep()rr}r(hUhjubah!hAubaubh=X will raise a rr}r(hX will raise a hjubh)r}r(hX:exc:`RuntimeError`rhjhNh!hh#}r(UreftypeXexchщhX RuntimeErrorU refdomainXpyrh(]h']U refexplicith%]h&]h+]hhhhhhuh-Nh]rh7)r}r(hjh#}r(h%]h&]r(hjXpy-excreh']h(]h+]uhjh]rh=X RuntimeErrorrr}r(hUhjubah!hAubaubh=X if this is set to rr}r(hX if this is set to hjubh7)r}r(hX``True``h#}r(h%]h&]h']h(]h+]uhjh]rh=XTruerr}r(hUhjubah!hAubh=X- and the processing of events takes too long.rr}r(hX- and the processing of events takes too long.hjubeubaubeubhF)r}r(hUhhhXg/var/build/user_builds/simpy/checkouts/3.0.5/simpy/rt.py:docstring of simpy.rt.RealtimeEnvironment.steprh!hJh#}r(h(]h']h%]h&]h+]Uentries]r(hMX,step() (simpy.rt.RealtimeEnvironment method)hUtrauh-Nh.hh]ubhi)r}r(hUhhhjh!hlh#}r(hnhoXpyh(]h']h%]h&]h+]hpXmethodrhrjuh-Nh.hh]r(ht)r}r(hXRealtimeEnvironment.step()rhjhhwh!hxh#}r(h(]rhah{hXsimpy.rtrr}rbh']h%]h&]h+]rhahXRealtimeEnvironment.stephhhuh-Nh.hh]r(h)r}r(hXstephjhhwh!hh#}r(h%]h&]h']h(]h+]uh-Nh.hh]rh=Xsteprr}r (hUhjubaubh)r }r (hUhjhhwh!hh#}r (h%]h&]h']h(]h+]uh-Nh.hh]ubeubh)r }r(hUhjhhwh!hh#}r(h%]h&]h']h(]h+]uh-Nh.hh]r(hO)r}r(hXEWaits until enough real-time has passed for the next event to happen.rhj hjh!hRh#}r(h%]h&]h']h(]h+]uh-Kh.hh]rh=XEWaits until enough real-time has passed for the next event to happen.rr}r(hjhjubaubhO)r}r(hXThe delay is scaled according to the real-time :attr:`factor`. If the events of a time step are processed too slowly for the given :attr:`factor` and if :attr:`strict` is enabled, a :exc:`RuntimeError` is raised.hj hjh!hRh#}r(h%]h&]h']h(]h+]uh-Kh.hh]r(h=X/The delay is scaled according to the real-time rr}r(hX/The delay is scaled according to the real-time hjubh)r }r!(hX:attr:`factor`r"hjhNh!hh#}r#(UreftypeXattrhщhXfactorU refdomainXpyr$h(]h']U refexplicith%]h&]h+]hhhhhhuh-Nh]r%h7)r&}r'(hj"h#}r((h%]h&]r)(hj$Xpy-attrr*eh']h(]h+]uhj h]r+h=Xfactorr,r-}r.(hUhj&ubah!hAubaubh=XF. If the events of a time step are processed too slowly for the given r/r0}r1(hXF. If the events of a time step are processed too slowly for the given hjubh)r2}r3(hX:attr:`factor`r4hjhNh!hh#}r5(UreftypeXattrhщhXfactorU refdomainXpyr6h(]h']U refexplicith%]h&]h+]hhhhhhuh-Nh]r7h7)r8}r9(hj4h#}r:(h%]h&]r;(hj6Xpy-attrr<eh']h(]h+]uhj2h]r=h=Xfactorr>r?}r@(hUhj8ubah!hAubaubh=X and if rArB}rC(hX and if hjubh)rD}rE(hX:attr:`strict`rFhjhNh!hh#}rG(UreftypeXattrhщhXstrictU refdomainXpyrHh(]h']U refexplicith%]h&]h+]hhhhhhuh-Nh]rIh7)rJ}rK(hjFh#}rL(h%]h&]rM(hjHXpy-attrrNeh']h(]h+]uhjDh]rOh=XstrictrPrQ}rR(hUhjJubah!hAubaubh=X is enabled, a rSrT}rU(hX is enabled, a hjubh)rV}rW(hX:exc:`RuntimeError`rXhjhNh!hh#}rY(UreftypeXexchщhX RuntimeErrorU refdomainXpyrZh(]h']U refexplicith%]h&]h+]hhhhhhuh-Nh]r[h7)r\}r](hjXh#}r^(h%]h&]r_(hjZXpy-excr`eh']h(]h+]uhjVh]rah=X RuntimeErrorrbrc}rd(hUhj\ubah!hAubaubh=X is raised.rerf}rg(hX is raised.hjubeubeubeubeubeubeubahUU transformerrhNU footnote_refsri}rjUrefnamesrk}rlUsymbol_footnotesrm]rnUautofootnote_refsro]rpUsymbol_footnote_refsrq]rrU citationsrs]rth.hU current_lineruNUtransform_messagesrv]rwUreporterrxNUid_startryKU autofootnotesrz]r{U citation_refsr|}r}Uindirect_targetsr~]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh4NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerUL/var/build/user_builds/simpy/checkouts/3.0.5/docs/api_reference/simpy.rt.rstrUgettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hjohjh jhhuhhh*cdocutils.nodes target r)r}r(hUhhhhIh!Utargetrh#}r(h%]h(]rh*ah']Uismodh&]h+]uh-Kh.hh]ubuUsubstitution_namesr}rh!h.h#}r(h%]h(]h']Usourcehh&]h+]uU footnotesr]rUrefidsr}rub.PK.Dd;simpy-3.0.5/.doctrees/api_reference/simpy.resources.doctreecdocutils.nodes document q)q}q(U nametypesq}qX3simpy.resources --- simpy's built-in resource typesqNsUsubstitution_defsq}qUparse_messagesq ]q Ucurrent_sourceq NU decorationq NUautofootnote_startq KUnameidsq}qhU/simpy-resources-simpy-s-built-in-resource-typesqsUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqcdocutils.nodes reprunicode qXS/var/build/user_builds/simpy/checkouts/3.0.5/docs/api_reference/simpy.resources.rstqq}qbUtagnameqUsectionqU attributesq}q (Udupnamesq!]Uclassesq"]Ubackrefsq#]Uidsq$]q%(Xmodule-simpy.resourcesq&heUnamesq']q(hauUlineq)KUdocumentq*hh]q+(cdocutils.nodes title q,)q-}q.(hX7``simpy.resources`` --- SimPy's built-in resource typesq/hhhhhUtitleq0h}q1(h!]h"]h#]h$]h']uh)Kh*hh]q2(cdocutils.nodes literal q3)q4}q5(hX``simpy.resources``q6h}q7(h!]h"]h#]h$]h']uhh-h]q8cdocutils.nodes Text q9Xsimpy.resourcesq:q;}q<(hUhh4ubahUliteralq=ubh9X$ --- SimPy's built-in resource typesq>q?}q@(hX$ --- SimPy's built-in resource typesqAhh-ubeubcsphinx.addnodes index qB)qC}qD(hUhhhU qEhUindexqFh}qG(h$]h#]h!]h"]h']Uentries]qH(UsingleqIXsimpy.resources (module)Xmodule-simpy.resourcesUtqJauh)Kh*hh]ubcdocutils.nodes paragraph qK)qL}qM(hXUSimPy defines three kinds of resources with one or more concrete resource types each:qNhhhXe/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/__init__.py:docstring of simpy.resourcesqOhU paragraphqPh}qQ(h!]h"]h#]h$]h']uh)Kh*hh]qRh9XUSimPy defines three kinds of resources with one or more concrete resource types each:qSqT}qU(hhNhhLubaubcdocutils.nodes bullet_list qV)qW}qX(hUhhhhOhU bullet_listqYh}qZ(Ubulletq[X-h$]h#]h!]h"]h']uh)Kh*hh]q\(cdocutils.nodes list_item q])q^}q_(hX:mod:`~simpy.resources.resource`: Resources that can be used by a limited number of processes at a time (e.g., a gas station with a limited number of fuel pumps). hhWhhOhU list_itemq`h}qa(h!]h"]h#]h$]h']uh)Nh*hh]qbhK)qc}qd(hX:mod:`~simpy.resources.resource`: Resources that can be used by a limited number of processes at a time (e.g., a gas station with a limited number of fuel pumps).hh^hhOhhPh}qe(h!]h"]h#]h$]h']uh)Kh]qf(csphinx.addnodes pending_xref qg)qh}qi(hX :mod:`~simpy.resources.resource`qjhhchNhU pending_xrefqkh}ql(UreftypeXmodUrefwarnqmU reftargetqnXsimpy.resources.resourceU refdomainXpyqoh$]h#]U refexplicith!]h"]h']UrefdocqpXapi_reference/simpy.resourcesqqUpy:classqrNU py:moduleqsXsimpy.resourcesqtuh)Nh]quh3)qv}qw(hhjh}qx(h!]h"]qy(UxrefqzhoXpy-modq{eh#]h$]h']uhhhh]q|h9Xresourceq}q~}q(hUhhvubahh=ubaubh9X: Resources that can be used by a limited number of processes at a time (e.g., a gas station with a limited number of fuel pumps).qq}q(hX: Resources that can be used by a limited number of processes at a time (e.g., a gas station with a limited number of fuel pumps).hhcubeubaubh])q}q(hX:mod:`~simpy.resources.container`: Resources that model the production and consumption of a homogeneous, undifferentiated bulk. It may either be continuous (like water) or discrete (like apples). hhWhhOhh`h}q(h!]h"]h#]h$]h']uh)Nh*hh]qhK)q}q(hX:mod:`~simpy.resources.container`: Resources that model the production and consumption of a homogeneous, undifferentiated bulk. It may either be continuous (like water) or discrete (like apples).hhhhOhhPh}q(h!]h"]h#]h$]h']uh)Kh]q(hg)q}q(hX!:mod:`~simpy.resources.container`qhhhNhhkh}q(UreftypeXmodhmhnXsimpy.resources.containerU refdomainXpyqh$]h#]U refexplicith!]h"]h']hphqhrNhshtuh)Nh]qh3)q}q(hhh}q(h!]h"]q(hzhXpy-modqeh#]h$]h']uhhh]qh9X containerqq}q(hUhhubahh=ubaubh9X: Resources that model the production and consumption of a homogeneous, undifferentiated bulk. It may either be continuous (like water) or discrete (like apples).qq}q(hX: Resources that model the production and consumption of a homogeneous, undifferentiated bulk. It may either be continuous (like water) or discrete (like apples).hhubeubaubh])q}q(hXo:mod:`~simpy.resources.store`: Resources that allow the production and consumption of discrete Python objects. hhWhhOhh`h}q(h!]h"]h#]h$]h']uh)Nh*hh]qhK)q}q(hXn:mod:`~simpy.resources.store`: Resources that allow the production and consumption of discrete Python objects.hhhhOhhPh}q(h!]h"]h#]h$]h']uh)K h]q(hg)q}q(hX:mod:`~simpy.resources.store`qhhhNhhkh}q(UreftypeXmodhmhnXsimpy.resources.storeU refdomainXpyqh$]h#]U refexplicith!]h"]h']hphqhrNhshtuh)Nh]qh3)q}q(hhh}q(h!]h"]q(hzhXpy-modqeh#]h$]h']uhhh]qh9Xstoreqq}q(hUhhubahh=ubaubh9XQ: Resources that allow the production and consumption of discrete Python objects.qq}q(hXQ: Resources that allow the production and consumption of discrete Python objects.hhubeubaubeubhK)q}q(hXeThe :mod:`~simpy.resources.base` module defines the base classes that are used by all resource types.hhhhOhhPh}q(h!]h"]h#]h$]h']uh)Kh*hh]q(h9XThe qq}q(hXThe hhubhg)q}q(hX:mod:`~simpy.resources.base`qhhhNhhkh}q(UreftypeXmodhmhnXsimpy.resources.baseU refdomainXpyqh$]h#]U refexplicith!]h"]h']hphqhrNhshtuh)Nh]qh3)q}q(hhh}q(h!]h"]q(hzhXpy-modqeh#]h$]h']uhhh]qh9Xbaseqʅq}q(hUhhubahh=ubaubh9XE module defines the base classes that are used by all resource types.qͅq}q(hXE module defines the base classes that are used by all resource types.hhubeubeubahUU transformerqNU footnote_refsq}qUrefnamesq}qUsymbol_footnotesq]qUautofootnote_refsq]qUsymbol_footnote_refsq]qU citationsq]qh*hU current_lineqNUtransform_messagesq]qUreporterqNUid_startqKU autofootnotesq]qU citation_refsq}qUindirect_targetsq]qUsettingsq(cdocutils.frontend Values qoq}q(Ufootnote_backlinksqKUrecord_dependenciesqNU rfc_base_urlqUhttp://tools.ietf.org/html/qU tracebackqUpep_referencesqNUstrip_commentsqNU toc_backlinksqUentryqU language_codeqUenqU datestampqNU report_levelqKU _destinationqNU halt_levelqKU strip_classesqNh0NUerror_encoding_error_handlerqUbackslashreplaceqUdebugqNUembed_stylesheetqUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigr NUstrict_visitorr NUcloak_email_addressesr Utrim_footnote_reference_spacer Uenvr NUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerUS/var/build/user_builds/simpy/checkouts/3.0.5/docs/api_reference/simpy.resources.rstrUgettext_compactrU generatorr NUdump_internalsr!NU smart_quotesr"U pep_base_urlr#Uhttp://www.python.org/dev/peps/r$Usyntax_highlightr%Ulongr&Uinput_encoding_error_handlerr'jUauto_id_prefixr(Uidr)Udoctitle_xformr*Ustrip_elements_with_classesr+NU _config_filesr,]Ufile_insertion_enabledr-U raw_enabledr.KU dump_settingsr/NubUsymbol_footnote_startr0KUidsr1}r2(h&cdocutils.nodes target r3)r4}r5(hUhhhhEhUtargetr6h}r7(h!]h$]r8h&ah#]Uismodh"]h']uh)Kh*hh]ubhhuUsubstitution_namesr9}r:hh*h}r;(h!]h$]h#]Usourcehh"]h']uU footnotesr<]r=Urefidsr>}r?ub.PK.D  Dsimpy-3.0.5/.doctrees/api_reference/simpy.resources.resource.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X'simpy.resources.resource.Resource.countqX3simpy.resources.resource -- resource type resourcesqNX%simpy.resources.resource.Preempted.byqX+simpy.resources.resource.SortedQueue.maxlenq X simpy.resources.resource.Releaseq X1simpy.resources.resource.PriorityRequest.priorityq X+simpy.resources.resource.SortedQueue.appendq X$simpy.resources.resource.SortedQueueq X)simpy.resources.resource.Resource.requestqX simpy.resources.resource.RequestqX*simpy.resources.resource.Resource.capacityqX)simpy.resources.resource.PriorityResourceqX"simpy.resources.resource.PreemptedqX(simpy.resources.resource.PriorityRequestqX+simpy.resources.resource.PreemptiveResourceqX2simpy.resources.resource.PriorityResource.PutQueueqX-simpy.resources.resource.PriorityRequest.timeqX'simpy.resources.resource.Resource.queueqX.simpy.resources.resource.Preempted.usage_sinceqX(simpy.resources.resource.Release.requestqX0simpy.resources.resource.PriorityRequest.preemptqX,simpy.resources.resource.PriorityRequest.keyqX1simpy.resources.resource.PriorityResource.requestqX'simpy.resources.resource.Resource.usersqX)simpy.resources.resource.Resource.releaseqX!simpy.resources.resource.ResourceqX2simpy.resources.resource.PriorityResource.GetQueueq uUsubstitution_defsq!}q"Uparse_messagesq#]q$Ucurrent_sourceq%NU decorationq&NUautofootnote_startq'KUnameidsq(}q)(hhhU0simpy-resources-resource-resource-type-resourcesq*hhh h h h h h h h h h hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh h uUchildrenq+]q,cdocutils.nodes section q-)q.}q/(U rawsourceq0UUparentq1hUsourceq2cdocutils.nodes reprunicode q3X\/var/build/user_builds/simpy/checkouts/3.0.5/docs/api_reference/simpy.resources.resource.rstq4q5}q6bUtagnameq7Usectionq8U attributesq9}q:(Udupnamesq;]Uclassesq<]Ubackrefsq=]Uidsq>]q?(Xmodule-simpy.resources.resourceq@h*eUnamesqA]qBhauUlineqCKUdocumentqDhh+]qE(cdocutils.nodes title qF)qG}qH(h0X7``simpy.resources.resource`` -- Resource type resourcesqIh1h.h2h5h7UtitleqJh9}qK(h;]h<]h=]h>]hA]uhCKhDhh+]qL(cdocutils.nodes literal qM)qN}qO(h0X``simpy.resources.resource``qPh9}qQ(h;]h<]h=]h>]hA]uh1hGh+]qRcdocutils.nodes Text qSXsimpy.resources.resourceqTqU}qV(h0Uh1hNubah7UliteralqWubhSX -- Resource type resourcesqXqY}qZ(h0X -- Resource type resourcesq[h1hGubeubcsphinx.addnodes index q\)q]}q^(h0Uh1h.h2U q_h7Uindexq`h9}qa(h>]h=]h;]h<]hA]Uentries]qb(UsingleqcX!simpy.resources.resource (module)Xmodule-simpy.resources.resourceUtqdauhCKhDhh+]ubcdocutils.nodes paragraph qe)qf}qg(h0X:This module contains all :class:`Resource` like resources.h1h.h2Xn/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/resource.py:docstring of simpy.resources.resourceqhh7U paragraphqih9}qj(h;]h<]h=]h>]hA]uhCKhDhh+]qk(hSXThis module contains all qlqm}qn(h0XThis module contains all h1hfubcsphinx.addnodes pending_xref qo)qp}qq(h0X:class:`Resource`qrh1hfh2h5h7U pending_xrefqsh9}qt(UreftypeXclassUrefwarnquU reftargetqvXResourceU refdomainXpyqwh>]h=]U refexplicith;]h<]hA]UrefdocqxX&api_reference/simpy.resources.resourceqyUpy:classqzNU py:moduleq{Xsimpy.resources.resourceq|uhCKh+]q}hM)q~}q(h0hrh9}q(h;]h<]q(UxrefqhwXpy-classqeh=]h>]hA]uh1hph+]qhSXResourceqq}q(h0Uh1h~ubah7hWubaubhSX like resources.qq}q(h0X like resources.h1hfubeubhe)q}q(h0XeThese resources can be used by a limited number of processes at a time (e.g., a gas station with a limited number of fuel pumps). Processes *request* these resources to become a user (or to own them) and have to *release* them once they are done (e.g., vehicles arrive at the gas station, use a fuel-pump, if one is available, and leave when they are done).h1h.h2hhh7hih9}q(h;]h<]h=]h>]hA]uhCKhDhh+]q(hSXThese resources can be used by a limited number of processes at a time (e.g., a gas station with a limited number of fuel pumps). Processes qq}q(h0XThese resources can be used by a limited number of processes at a time (e.g., a gas station with a limited number of fuel pumps). Processes h1hubcdocutils.nodes emphasis q)q}q(h0X *request*h9}q(h;]h<]h=]h>]hA]uh1hh+]qhSXrequestqq}q(h0Uh1hubah7UemphasisqubhSX? these resources to become a user (or to own them) and have to qq}q(h0X? these resources to become a user (or to own them) and have to h1hubh)q}q(h0X *release*h9}q(h;]h<]h=]h>]hA]uh1hh+]qhSXreleaseqq}q(h0Uh1hubah7hubhSX them once they are done (e.g., vehicles arrive at the gas station, use a fuel-pump, if one is available, and leave when they are done).qq}q(h0X them once they are done (e.g., vehicles arrive at the gas station, use a fuel-pump, if one is available, and leave when they are done).h1hubeubhe)q}q(h0XRequesting a resources is modeled as "putting a process' token into the resources" and releasing a resources correspondingly as "getting a process' token out of the resource". Thus, calling ``request()``/``release()`` is equivalent to calling ``put()``/``get()``. Note, that releasing a resource will always succeed immediately, no matter if a process is actually using a resource or not.h1h.h2hhh7hih9}q(h;]h<]h=]h>]hA]uhCK hDhh+]q(hSXRequesting a resources is modeled as "putting a process' token into the resources" and releasing a resources correspondingly as "getting a process' token out of the resource". Thus, calling qq}q(h0XRequesting a resources is modeled as "putting a process' token into the resources" and releasing a resources correspondingly as "getting a process' token out of the resource". Thus, calling h1hubhM)q}q(h0X ``request()``h9}q(h;]h<]h=]h>]hA]uh1hh+]qhSX request()qq}q(h0Uh1hubah7hWubhSX/q}q(h0X/h1hubhM)q}q(h0X ``release()``h9}q(h;]h<]h=]h>]hA]uh1hh+]qhSX release()qq}q(h0Uh1hubah7hWubhSX is equivalent to calling qq}q(h0X is equivalent to calling h1hubhM)q}q(h0X ``put()``h9}q(h;]h<]h=]h>]hA]uh1hh+]qhSXput()qƅq}q(h0Uh1hubah7hWubhSX/q}q(h0X/h1hubhM)q}q(h0X ``get()``h9}q(h;]h<]h=]h>]hA]uh1hh+]qhSXget()qυq}q(h0Uh1hubah7hWubhSX~. Note, that releasing a resource will always succeed immediately, no matter if a process is actually using a resource or not.q҅q}q(h0X~. Note, that releasing a resource will always succeed immediately, no matter if a process is actually using a resource or not.h1hubeubhe)q}q(h0XBeside :class:`Resource`, there are a :class:`PriorityResource`, were processes can define a request priority, and a :class:`PreemptiveResource` whose resource users can be preempted by other processes with a higher priority.h1h.h2hhh7hih9}q(h;]h<]h=]h>]hA]uhCKhDhh+]q(hSXBeside qمq}q(h0XBeside h1hubho)q}q(h0X:class:`Resource`qh1hh2h5h7hsh9}q(UreftypeXclasshuhvXResourceU refdomainXpyqh>]h=]U refexplicith;]h<]hA]hxhyhzNh{h|uhCKh+]qhM)q}q(h0hh9}q(h;]h<]q(hhXpy-classqeh=]h>]hA]uh1hh+]qhSXResourceq腁q}q(h0Uh1hubah7hWubaubhSX, there are a q녁q}q(h0X, there are a h1hubho)q}q(h0X:class:`PriorityResource`qh1hh2h5h7hsh9}q(UreftypeXclasshuhvXPriorityResourceU refdomainXpyqh>]h=]U refexplicith;]h<]hA]hxhyhzNh{h|uhCKh+]qhM)q}q(h0hh9}q(h;]h<]q(hhXpy-classqeh=]h>]hA]uh1hh+]qhSXPriorityResourceqq}q(h0Uh1hubah7hWubaubhSX6, were processes can define a request priority, and a qq}q(h0X6, were processes can define a request priority, and a h1hubho)r}r(h0X:class:`PreemptiveResource`rh1hh2h5h7hsh9}r(UreftypeXclasshuhvXPreemptiveResourceU refdomainXpyrh>]h=]U refexplicith;]h<]hA]hxhyhzNh{h|uhCKh+]rhM)r}r(h0jh9}r(h;]h<]r (hjXpy-classr eh=]h>]hA]uh1jh+]r hSXPreemptiveResourcer r }r(h0Uh1jubah7hWubaubhSXQ whose resource users can be preempted by other processes with a higher priority.rr}r(h0XQ whose resource users can be preempted by other processes with a higher priority.h1hubeubh\)r}r(h0Uh1h.h2Nh7h`h9}r(h>]h=]h;]h<]hA]Uentries]r(hcX,Resource (class in simpy.resources.resource)hUtrauhCNhDhh+]ubcsphinx.addnodes desc r)r}r(h0Uh1h.h2Nh7Udescrh9}r(UnoindexrUdomainrXpyh>]h=]h;]h<]hA]UobjtyperXclassrUdesctyper juhCNhDhh+]r!(csphinx.addnodes desc_signature r")r#}r$(h0XResource(env, capacity=1)h1jh2U r%h7Udesc_signaturer&h9}r'(h>]r(haUmoduler)h3Xsimpy.resources.resourcer*r+}r,bh=]h;]h<]hA]r-haUfullnamer.XResourcer/Uclassr0UUfirstr1uhCNhDhh+]r2(csphinx.addnodes desc_annotation r3)r4}r5(h0Xclass h1j#h2j%h7Udesc_annotationr6h9}r7(h;]h<]h=]h>]hA]uhCNhDhh+]r8hSXclass r9r:}r;(h0Uh1j4ubaubcsphinx.addnodes desc_addname r<)r=}r>(h0Xsimpy.resources.resource.h1j#h2j%h7U desc_addnamer?h9}r@(h;]h<]h=]h>]hA]uhCNhDhh+]rAhSXsimpy.resources.resource.rBrC}rD(h0Uh1j=ubaubcsphinx.addnodes desc_name rE)rF}rG(h0j/h1j#h2j%h7U desc_namerHh9}rI(h;]h<]h=]h>]hA]uhCNhDhh+]rJhSXResourcerKrL}rM(h0Uh1jFubaubcsphinx.addnodes desc_parameterlist rN)rO}rP(h0Uh1j#h2j%h7Udesc_parameterlistrQh9}rR(h;]h<]h=]h>]hA]uhCNhDhh+]rS(csphinx.addnodes desc_parameter rT)rU}rV(h0Xenvh9}rW(h;]h<]h=]h>]hA]uh1jOh+]rXhSXenvrYrZ}r[(h0Uh1jUubah7Udesc_parameterr\ubjT)r]}r^(h0X capacity=1h9}r_(h;]h<]h=]h>]hA]uh1jOh+]r`hSX capacity=1rarb}rc(h0Uh1j]ubah7j\ubeubeubcsphinx.addnodes desc_content rd)re}rf(h0Uh1jh2j%h7U desc_contentrgh9}rh(h;]h<]h=]h>]hA]uhCNhDhh+]ri(he)rj}rk(h0XLA resource has a limited number of slots that can be requested by a process.rlh1jeh2Xw/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/resource.py:docstring of simpy.resources.resource.Resourcermh7hih9}rn(h;]h<]h=]h>]hA]uhCKhDhh+]rohSXLA resource has a limited number of slots that can be requested by a process.rprq}rr(h0jlh1jjubaubhe)rs}rt(h0XIf all slots are taken, requesters are put into a queue. If a process releases a slot, the next process is popped from the queue and gets one slot.ruh1jeh2jmh7hih9}rv(h;]h<]h=]h>]hA]uhCKhDhh+]rwhSXIf all slots are taken, requesters are put into a queue. If a process releases a slot, the next process is popped from the queue and gets one slot.rxry}rz(h0juh1jsubaubhe)r{}r|(h0X^The *env* parameter is the :class:`~simpy.core.Environment` instance the resource is bound to.h1jeh2jmh7hih9}r}(h;]h<]h=]h>]hA]uhCKhDhh+]r~(hSXThe rr}r(h0XThe h1j{ubh)r}r(h0X*env*h9}r(h;]h<]h=]h>]hA]uh1j{h+]rhSXenvrr}r(h0Uh1jubah7hubhSX parameter is the rr}r(h0X parameter is the h1j{ubho)r}r(h0X :class:`~simpy.core.Environment`rh1j{h2h5h7hsh9}r(UreftypeXclasshuhvXsimpy.core.EnvironmentU refdomainXpyrh>]h=]U refexplicith;]h<]hA]hxhyhzj/h{h|uhCK h+]rhM)r}r(h0jh9}r(h;]h<]r(hjXpy-classreh=]h>]hA]uh1jh+]rhSX Environmentrr}r(h0Uh1jubah7hWubaubhSX# instance the resource is bound to.rr}r(h0X# instance the resource is bound to.h1j{ubeubhe)r}r(h0XJThe *capacity* defines the number of slots and must be a positive integer.h1jeh2jmh7hih9}r(h;]h<]h=]h>]hA]uhCK hDhh+]r(hSXThe rr}r(h0XThe h1jubh)r}r(h0X *capacity*h9}r(h;]h<]h=]h>]hA]uh1jh+]rhSXcapacityrr}r(h0Uh1jubah7hubhSX< defines the number of slots and must be a positive integer.rr}r(h0X< defines the number of slots and must be a positive integer.h1jubeubh\)r}r(h0Uh1jeh2X}/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/resource.py:docstring of simpy.resources.resource.Resource.usersrh7h`h9}r(h>]h=]h;]h<]hA]Uentries]r(hcX3users (simpy.resources.resource.Resource attribute)hUtrauhCNhDhh+]ubj)r}r(h0Uh1jeh2jh7jh9}r(jjXpyh>]h=]h;]h<]hA]jX attributerj juhCNhDhh+]r(j")r}r(h0XResource.usersh1jh2U rh7j&h9}r(h>]rhaj)h3Xsimpy.resources.resourcerr}rbh=]h;]h<]hA]rhaj.XResource.usersj0j/j1uhCNhDhh+]r(jE)r}r(h0Xusersh1jh2jh7jHh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhSXusersrr}r(h0Uh1jubaubj3)r}r(h0X = Noneh1jh2jh7j6h9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhSX = Nonerr}r(h0Uh1jubaubeubjd)r}r(h0Uh1jh2jh7jgh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhe)r}r(h0XXList of :class:`Request` events for the processes that are currently using the resource.h1jh2jh7hih9}r(h;]h<]h=]h>]hA]uhCKhDhh+]r(hSXList of rr}r(h0XList of h1jubho)r}r(h0X:class:`Request`rh1jh2h5h7hsh9}r(UreftypeXclasshuhvXRequestU refdomainXpyrh>]h=]U refexplicith;]h<]hA]hxhyhzj/h{h|uhCKh+]rhM)r}r(h0jh9}r(h;]h<]r(hjXpy-classreh=]h>]hA]uh1jh+]rhSXRequestrr}r(h0Uh1jubah7hWubaubhSX@ events for the processes that are currently using the resource.rr}r(h0X@ events for the processes that are currently using the resource.h1jubeubaubeubh\)r}r(h0Uh1jeh2X}/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/resource.py:docstring of simpy.resources.resource.Resource.queuerh7h`h9}r(h>]h=]h;]h<]hA]Uentries]r(hcX3queue (simpy.resources.resource.Resource attribute)hUtrauhCNhDhh+]ubj)r}r(h0Uh1jeh2jh7jh9}r(jjXpyh>]h=]h;]h<]hA]jX attributerj juhCNhDhh+]r(j")r}r(h0XResource.queueh1jh2jh7j&h9}r(h>]rhaj)h3Xsimpy.resources.resourcerr}rbh=]h;]h<]hA]rhaj.XResource.queuej0j/j1uhCNhDhh+]r(jE)r}r(h0Xqueueh1jh2jh7jHh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhSXqueuerr}r (h0Uh1jubaubj3)r }r (h0X = Noneh1jh2jh7j6h9}r (h;]h<]h=]h>]hA]uhCNhDhh+]r hSX = Nonerr}r(h0Uh1j ubaubeubjd)r}r(h0Uh1jh2jh7jgh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhe)r}r(h0XcQueue/list of pending :class:`Request` events that represent processes waiting to use the resource.h1jh2jh7hih9}r(h;]h<]h=]h>]hA]uhCKhDhh+]r(hSXQueue/list of pending rr}r(h0XQueue/list of pending h1jubho)r}r(h0X:class:`Request`rh1jh2h5h7hsh9}r(UreftypeXclasshuhvXRequestU refdomainXpyr h>]h=]U refexplicith;]h<]hA]hxhyhzj/h{h|uhCKh+]r!hM)r"}r#(h0jh9}r$(h;]h<]r%(hj Xpy-classr&eh=]h>]hA]uh1jh+]r'hSXRequestr(r)}r*(h0Uh1j"ubah7hWubaubhSX= events that represent processes waiting to use the resource.r+r,}r-(h0X= events that represent processes waiting to use the resource.h1jubeubaubeubh\)r.}r/(h0Uh1jeh2X/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/resource.py:docstring of simpy.resources.resource.Resource.capacityr0h7h`h9}r1(h>]h=]h;]h<]hA]Uentries]r2(hcX6capacity (simpy.resources.resource.Resource attribute)hUtr3auhCNhDhh+]ubj)r4}r5(h0Uh1jeh2j0h7jh9}r6(jjXpyh>]h=]h;]h<]hA]jX attributer7j j7uhCNhDhh+]r8(j")r9}r:(h0XResource.capacityh1j4h2j%h7j&h9}r;(h>]r<haj)h3Xsimpy.resources.resourcer=r>}r?bh=]h;]h<]hA]r@haj.XResource.capacityj0j/j1uhCNhDhh+]rAjE)rB}rC(h0Xcapacityh1j9h2j%h7jHh9}rD(h;]h<]h=]h>]hA]uhCNhDhh+]rEhSXcapacityrFrG}rH(h0Uh1jBubaubaubjd)rI}rJ(h0Uh1j4h2j%h7jgh9}rK(h;]h<]h=]h>]hA]uhCNhDhh+]rLhe)rM}rN(h0X!Maximum capacity of the resource.rOh1jIh2j0h7hih9}rP(h;]h<]h=]h>]hA]uhCKhDhh+]rQhSX!Maximum capacity of the resource.rRrS}rT(h0jOh1jMubaubaubeubh\)rU}rV(h0Uh1jeh2X}/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/resource.py:docstring of simpy.resources.resource.Resource.countrWh7h`h9}rX(h>]h=]h;]h<]hA]Uentries]rY(hcX3count (simpy.resources.resource.Resource attribute)hUtrZauhCNhDhh+]ubj)r[}r\(h0Uh1jeh2jWh7jh9}r](jjXpyh>]h=]h;]h<]hA]jX attributer^j j^uhCNhDhh+]r_(j")r`}ra(h0XResource.counth1j[h2j%h7j&h9}rb(h>]rchaj)h3Xsimpy.resources.resourcerdre}rfbh=]h;]h<]hA]rghaj.XResource.countj0j/j1uhCNhDhh+]rhjE)ri}rj(h0Xcounth1j`h2j%h7jHh9}rk(h;]h<]h=]h>]hA]uhCNhDhh+]rlhSXcountrmrn}ro(h0Uh1jiubaubaubjd)rp}rq(h0Uh1j[h2j%h7jgh9}rr(h;]h<]h=]h>]hA]uhCNhDhh+]rshe)rt}ru(h0X-Number of users currently using the resource.rvh1jph2jWh7hih9}rw(h;]h<]h=]h>]hA]uhCKhDhh+]rxhSX-Number of users currently using the resource.ryrz}r{(h0jvh1jtubaubaubeubh\)r|}r}(h0Uh1jeh2Uh7h`h9}r~(h>]h=]h;]h<]hA]Uentries]r(hcX5request (simpy.resources.resource.Resource attribute)hUtrauhCNhDhh+]ubj)r}r(h0Uh1jeh2Uh7jh9}r(jjXpyh>]h=]h;]h<]hA]jX attributerj juhCNhDhh+]r(j")r}r(h0XResource.requesth1jh2j%h7j&h9}r(h>]rhaj)h3Xsimpy.resources.resourcerr}rbh=]h;]h<]hA]rhaj.XResource.requestj0j/j1uhCNhDhh+]rjE)r}r(h0Xrequesth1jh2j%h7jHh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhSXrequestrr}r(h0Uh1jubaubaubjd)r}r(h0Uh1jh2j%h7jgh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]r(he)r}r(h0X$Create a new :class:`Request` event.h1jh2X/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/resource.py:docstring of simpy.resources.resource.Resource.requesth7hih9}r(h;]h<]h=]h>]hA]uhCKhDhh+]r(hSX Create a new rr}r(h0X Create a new h1jubho)r}r(h0X:class:`Request`rh1jh2Nh7hsh9}r(UreftypeXclasshuhvXRequestU refdomainXpyrh>]h=]U refexplicith;]h<]hA]hxhyhzj/h{h|uhCNh+]rhM)r}r(h0jh9}r(h;]h<]r(hjXpy-classreh=]h>]hA]uh1jh+]rhSXRequestrr}r(h0Uh1jubah7hWubaubhSX event.rr}r(h0X event.h1jubeubhe)r}r(h0Xalias of :class:`Request`h1jh2Uh7hih9}r(h;]h<]h=]h>]hA]uhCKhDhh+]r(hSX alias of rr}r(h0X alias of h1jubho)r}r(h0X:class:`Request`rh1jh2Nh7hsh9}r(UreftypeXclasshuhvXRequestU refdomainXpyrh>]h=]U refexplicith;]h<]hA]hxhyhzj/h{h|uhCNh+]rhM)r}r(h0jh9}r(h;]h<]r(hjXpy-classreh=]h>]hA]uh1jh+]rhSXRequestrr}r(h0Uh1jubah7hWubaubeubeubeubh\)r}r(h0Uh1jeh2Uh7h`h9}r(h>]h=]h;]h<]hA]Uentries]r(hcX5release (simpy.resources.resource.Resource attribute)hUtrauhCNhDhh+]ubj)r}r(h0Uh1jeh2Uh7jh9}r(jjXpyh>]h=]h;]h<]hA]jX attributerj juhCNhDhh+]r(j")r}r(h0XResource.releaseh1jh2j%h7j&h9}r(h>]rhaj)h3Xsimpy.resources.resourcerr}rbh=]h;]h<]hA]rhaj.XResource.releasej0j/j1uhCNhDhh+]rjE)r}r(h0Xreleaseh1jh2j%h7jHh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhSXreleaserr}r(h0Uh1jubaubaubjd)r}r(h0Uh1jh2j%h7jgh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]r(he)r}r(h0X$Create a new :class:`Release` event.h1jh2X/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/resource.py:docstring of simpy.resources.resource.Resource.releaseh7hih9}r(h;]h<]h=]h>]hA]uhCKhDhh+]r(hSX Create a new rr}r(h0X Create a new h1jubho)r}r(h0X:class:`Release`rh1jh2Nh7hsh9}r(UreftypeXclasshuhvXReleaseU refdomainXpyrh>]h=]U refexplicith;]h<]hA]hxhyhzj/h{h|uhCNh+]rhM)r}r(h0jh9}r(h;]h<]r(hjXpy-classreh=]h>]hA]uh1jh+]rhSXReleaserr}r(h0Uh1jubah7hWubaubhSX event.rr}r(h0X event.h1jubeubhe)r}r(h0Xalias of :class:`Release`h1jh2Uh7hih9}r(h;]h<]h=]h>]hA]uhCKhDhh+]r(hSX alias of rr}r(h0X alias of h1jubho)r}r(h0X:class:`Release`r h1jh2Nh7hsh9}r (UreftypeXclasshuhvXReleaseU refdomainXpyr h>]h=]U refexplicith;]h<]hA]hxhyhzj/h{h|uhCNh+]r hM)r }r(h0j h9}r(h;]h<]r(hj Xpy-classreh=]h>]hA]uh1jh+]rhSXReleaserr}r(h0Uh1j ubah7hWubaubeubeubeubeubeubh\)r}r(h0Uh1h.h2Nh7h`h9}r(h>]h=]h;]h<]hA]Uentries]r(hcX4PriorityResource (class in simpy.resources.resource)hUtrauhCNhDhh+]ubj)r}r(h0Uh1h.h2Nh7jh9}r(jjXpyh>]h=]h;]h<]hA]jXclassrj juhCNhDhh+]r(j")r }r!(h0X!PriorityResource(env, capacity=1)h1jh2j%h7j&h9}r"(h>]r#haj)h3Xsimpy.resources.resourcer$r%}r&bh=]h;]h<]hA]r'haj.XPriorityResourcer(j0Uj1uhCNhDhh+]r)(j3)r*}r+(h0Xclass h1j h2j%h7j6h9}r,(h;]h<]h=]h>]hA]uhCNhDhh+]r-hSXclass r.r/}r0(h0Uh1j*ubaubj<)r1}r2(h0Xsimpy.resources.resource.h1j h2j%h7j?h9}r3(h;]h<]h=]h>]hA]uhCNhDhh+]r4hSXsimpy.resources.resource.r5r6}r7(h0Uh1j1ubaubjE)r8}r9(h0j(h1j h2j%h7jHh9}r:(h;]h<]h=]h>]hA]uhCNhDhh+]r;hSXPriorityResourcer<r=}r>(h0Uh1j8ubaubjN)r?}r@(h0Uh1j h2j%h7jQh9}rA(h;]h<]h=]h>]hA]uhCNhDhh+]rB(jT)rC}rD(h0Xenvh9}rE(h;]h<]h=]h>]hA]uh1j?h+]rFhSXenvrGrH}rI(h0Uh1jCubah7j\ubjT)rJ}rK(h0X capacity=1h9}rL(h;]h<]h=]h>]hA]uh1j?h+]rMhSX capacity=1rNrO}rP(h0Uh1jJubah7j\ubeubeubjd)rQ}rR(h0Uh1jh2j%h7jgh9}rS(h;]h<]h=]h>]hA]uhCNhDhh+]rT(he)rU}rV(h0XMThis class works like :class:`Resource`, but requests are sorted by priority.h1jQh2X/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/resource.py:docstring of simpy.resources.resource.PriorityResourcerWh7hih9}rX(h;]h<]h=]h>]hA]uhCKhDhh+]rY(hSXThis class works like rZr[}r\(h0XThis class works like h1jUubho)r]}r^(h0X:class:`Resource`r_h1jUh2h5h7hsh9}r`(UreftypeXclasshuhvXResourceU refdomainXpyrah>]h=]U refexplicith;]h<]hA]hxhyhzj(h{h|uhCKh+]rbhM)rc}rd(h0j_h9}re(h;]h<]rf(hjaXpy-classrgeh=]h>]hA]uh1j]h+]rhhSXResourcerirj}rk(h0Uh1jcubah7hWubaubhSX&, but requests are sorted by priority.rlrm}rn(h0X&, but requests are sorted by priority.h1jUubeubhe)ro}rp(h0XThe :attr:`~Resource.queue` is kept sorted by priority in ascending order (a lower value for *priority* results in a higher priority), so more important request will get the resource earlier.h1jQh2jWh7hih9}rq(h;]h<]h=]h>]hA]uhCKhDhh+]rr(hSXThe rsrt}ru(h0XThe h1joubho)rv}rw(h0X:attr:`~Resource.queue`rxh1joh2h5h7hsh9}ry(UreftypeXattrhuhvXResource.queueU refdomainXpyrzh>]h=]U refexplicith;]h<]hA]hxhyhzj(h{h|uhCKh+]r{hM)r|}r}(h0jxh9}r~(h;]h<]r(hjzXpy-attrreh=]h>]hA]uh1jvh+]rhSXqueuerr}r(h0Uh1j|ubah7hWubaubhSXB is kept sorted by priority in ascending order (a lower value for rr}r(h0XB is kept sorted by priority in ascending order (a lower value for h1joubh)r}r(h0X *priority*h9}r(h;]h<]h=]h>]hA]uh1joh+]rhSXpriorityrr}r(h0Uh1jubah7hubhSXX results in a higher priority), so more important request will get the resource earlier.rr}r(h0XX results in a higher priority), so more important request will get the resource earlier.h1joubeubh\)r}r(h0Uh1jQh2Uh7h`h9}r(h>]h=]h;]h<]hA]Uentries]r(hcX>PutQueue (simpy.resources.resource.PriorityResource attribute)hUtrauhCNhDhh+]ubj)r}r(h0Uh1jQh2Uh7jh9}r(jjXpyh>]h=]h;]h<]hA]jX attributerj juhCNhDhh+]r(j")r}r(h0XPriorityResource.PutQueueh1jh2j%h7j&h9}r(h>]rhaj)h3Xsimpy.resources.resourcerr}rbh=]h;]h<]hA]rhaj.XPriorityResource.PutQueuej0j(j1uhCNhDhh+]rjE)r}r(h0XPutQueueh1jh2j%h7jHh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhSXPutQueuerr}r(h0Uh1jubaubaubjd)r}r(h0Uh1jh2j%h7jgh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]r(he)r}r(h0XQThe type to be used for the :attr:`~simpy.resources.base.BaseResource.put_queue`.h1jh2X/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/resource.py:docstring of simpy.resources.resource.PriorityResource.PutQueuerh7hih9}r(h;]h<]h=]h>]hA]uhCKhDhh+]r(hSXThe type to be used for the rr}r(h0XThe type to be used for the h1jubho)r}r(h0X4:attr:`~simpy.resources.base.BaseResource.put_queue`rh1jh2h5h7hsh9}r(UreftypeXattrhuhvX+simpy.resources.base.BaseResource.put_queueU refdomainXpyrh>]h=]U refexplicith;]h<]hA]hxhyhzj(h{h|uhCKh+]rhM)r}r(h0jh9}r(h;]h<]r(hjXpy-attrreh=]h>]hA]uh1jh+]rhSX put_queuerr}r(h0Uh1jubah7hWubaubhSX.r}r(h0X.h1jubeubhe)r}r(h0Xalias of :class:`SortedQueue`h1jh2Uh7hih9}r(h;]h<]h=]h>]hA]uhCKhDhh+]r(hSX alias of rr}r(h0X alias of h1jubho)r}r(h0X:class:`SortedQueue`rh1jh2h5h7hsh9}r(UreftypeXclasshuhvX SortedQueueU refdomainXpyrh>]h=]U refexplicith;]h<]hA]hxhyhzj(h{h|uhCKh+]rhM)r}r(h0jh9}r(h;]h<]r(hjXpy-classreh=]h>]hA]uh1jh+]rhSX SortedQueuerr}r(h0Uh1jubah7hWubaubeubeubeubh\)r}r(h0Uh1jQh2Uh7h`h9}r(h>]h=]h;]h<]hA]Uentries]r(hcX>GetQueue (simpy.resources.resource.PriorityResource attribute)h UtrauhCNhDhh+]ubj)r}r(h0Uh1jQh2Uh7jh9}r(jjXpyh>]h=]h;]h<]hA]jX attributerj juhCNhDhh+]r(j")r}r(h0XPriorityResource.GetQueueh1jh2j%h7j&h9}r(h>]rh aj)h3Xsimpy.resources.resourcerr}rbh=]h;]h<]hA]rh aj.XPriorityResource.GetQueuej0j(j1uhCNhDhh+]rjE)r}r(h0XGetQueueh1jh2j%h7jHh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhSXGetQueuerr}r(h0Uh1jubaubaubjd)r}r(h0Uh1jh2j%h7jgh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]r(he)r}r(h0XQThe type to be used for the :attr:`~simpy.resources.base.BaseResource.get_queue`.h1jh2X/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/resource.py:docstring of simpy.resources.resource.PriorityResource.GetQueuerh7hih9}r(h;]h<]h=]h>]hA]uhCKhDhh+]r(hSXThe type to be used for the rr}r(h0XThe type to be used for the h1jubho)r}r(h0X4:attr:`~simpy.resources.base.BaseResource.get_queue`rh1jh2h5h7hsh9}r(UreftypeXattrhuhvX+simpy.resources.base.BaseResource.get_queueU refdomainXpyr h>]h=]U refexplicith;]h<]hA]hxhyhzj(h{h|uhCKh+]r hM)r }r (h0jh9}r (h;]h<]r(hj Xpy-attrreh=]h>]hA]uh1jh+]rhSX get_queuerr}r(h0Uh1j ubah7hWubaubhSX.r}r(h0X.h1jubeubhe)r}r(h0Xalias of :class:`list`h1jh2Uh7hih9}r(h;]h<]h=]h>]hA]uhCKhDhh+]r(hSX alias of rr}r(h0X alias of h1jubho)r}r(h0X :class:`list`rh1jh2h5h7hsh9}r (UreftypeXclasshuhvXlistU refdomainXpyr!h>]h=]U refexplicith;]h<]hA]hxhyhzj(h{h|uhCKh+]r"hM)r#}r$(h0jh9}r%(h;]h<]r&(hj!Xpy-classr'eh=]h>]hA]uh1jh+]r(hSXlistr)r*}r+(h0Uh1j#ubah7hWubaubeubeubeubh\)r,}r-(h0Uh1jQh2Uh7h`h9}r.(h>]h=]h;]h<]hA]Uentries]r/(hcX=request (simpy.resources.resource.PriorityResource attribute)hUtr0auhCNhDhh+]ubj)r1}r2(h0Uh1jQh2Uh7jh9}r3(jjXpyh>]h=]h;]h<]hA]jX attributer4j j4uhCNhDhh+]r5(j")r6}r7(h0XPriorityResource.requesth1j1h2j%h7j&h9}r8(h>]r9haj)h3Xsimpy.resources.resourcer:r;}r<bh=]h;]h<]hA]r=haj.XPriorityResource.requestj0j(j1uhCNhDhh+]r>jE)r?}r@(h0Xrequesth1j6h2j%h7jHh9}rA(h;]h<]h=]h>]hA]uhCNhDhh+]rBhSXrequestrCrD}rE(h0Uh1j?ubaubaubjd)rF}rG(h0Uh1j1h2j%h7jgh9}rH(h;]h<]h=]h>]hA]uhCNhDhh+]rI(he)rJ}rK(h0X,Create a new :class:`PriorityRequest` event.h1jFh2X/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/resource.py:docstring of simpy.resources.resource.PriorityResource.requestrLh7hih9}rM(h;]h<]h=]h>]hA]uhCKhDhh+]rN(hSX Create a new rOrP}rQ(h0X Create a new h1jJubho)rR}rS(h0X:class:`PriorityRequest`rTh1jJh2Nh7hsh9}rU(UreftypeXclasshuhvXPriorityRequestU refdomainXpyrVh>]h=]U refexplicith;]h<]hA]hxhyhzj(h{h|uhCNh+]rWhM)rX}rY(h0jTh9}rZ(h;]h<]r[(hjVXpy-classr\eh=]h>]hA]uh1jRh+]r]hSXPriorityRequestr^r_}r`(h0Uh1jXubah7hWubaubhSX event.rarb}rc(h0X event.h1jJubeubhe)rd}re(h0X!alias of :class:`PriorityRequest`h1jFh2Uh7hih9}rf(h;]h<]h=]h>]hA]uhCKhDhh+]rg(hSX alias of rhri}rj(h0X alias of h1jdubho)rk}rl(h0X:class:`PriorityRequest`rmh1jdh2Nh7hsh9}rn(UreftypeXclasshuhvXPriorityRequestU refdomainXpyroh>]h=]U refexplicith;]h<]hA]hxhyhzj(h{h|uhCNh+]rphM)rq}rr(h0jmh9}rs(h;]h<]rt(hjoXpy-classrueh=]h>]hA]uh1jkh+]rvhSXPriorityRequestrwrx}ry(h0Uh1jqubah7hWubaubeubeubeubeubeubh\)rz}r{(h0Uh1h.h2X/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/resource.py:docstring of simpy.resources.resource.PreemptiveResourcer|h7h`h9}r}(h>]h=]h;]h<]hA]Uentries]r~(hcX6PreemptiveResource (class in simpy.resources.resource)hUtrauhCNhDhh+]ubj)r}r(h0Uh1h.h2j|h7jh9}r(jjXpyh>]h=]h;]h<]hA]jXclassrj juhCNhDhh+]r(j")r}r(h0X#PreemptiveResource(env, capacity=1)h1jh2j%h7j&h9}r(h>]rhaj)h3Xsimpy.resources.resourcerr}rbh=]h;]h<]hA]rhaj.XPreemptiveResourcerj0Uj1uhCNhDhh+]r(j3)r}r(h0Xclass h1jh2j%h7j6h9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhSXclass rr}r(h0Uh1jubaubj<)r}r(h0Xsimpy.resources.resource.h1jh2j%h7j?h9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhSXsimpy.resources.resource.rr}r(h0Uh1jubaubjE)r}r(h0jh1jh2j%h7jHh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhSXPreemptiveResourcerr}r(h0Uh1jubaubjN)r}r(h0Uh1jh2j%h7jQh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]r(jT)r}r(h0Xenvh9}r(h;]h<]h=]h>]hA]uh1jh+]rhSXenvrr}r(h0Uh1jubah7j\ubjT)r}r(h0X capacity=1h9}r(h;]h<]h=]h>]hA]uh1jh+]rhSX capacity=1rr}r(h0Uh1jubah7j\ubeubeubjd)r}r(h0Uh1jh2j%h7jgh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]r(he)r}r(h0XThis resource mostly works like :class:`Resource`, but users of the resource can be *preempted* by higher prioritized requests.h1jh2j|h7hih9}r(h;]h<]h=]h>]hA]uhCKhDhh+]r(hSX This resource mostly works like rr}r(h0X This resource mostly works like h1jubho)r}r(h0X:class:`Resource`rh1jh2h5h7hsh9}r(UreftypeXclasshuhvXResourceU refdomainXpyrh>]h=]U refexplicith;]h<]hA]hxhyhzjh{h|uhCKh+]rhM)r}r(h0jh9}r(h;]h<]r(hjXpy-classreh=]h>]hA]uh1jh+]rhSXResourcerr}r(h0Uh1jubah7hWubaubhSX#, but users of the resource can be rr}r(h0X#, but users of the resource can be h1jubh)r}r(h0X *preempted*h9}r(h;]h<]h=]h>]hA]uh1jh+]rhSX preemptedrr}r(h0Uh1jubah7hubhSX by higher prioritized requests.rr}r(h0X by higher prioritized requests.h1jubeubhe)r}r(h0X@Furthermore, the queue of requests is also sorted by *priority*.h1jh2j|h7hih9}r(h;]h<]h=]h>]hA]uhCKhDhh+]r(hSX5Furthermore, the queue of requests is also sorted by rr}r(h0X5Furthermore, the queue of requests is also sorted by h1jubh)r}r(h0X *priority*h9}r(h;]h<]h=]h>]hA]uh1jh+]rhSXpriorityrr}r(h0Uh1jubah7hubhSX.r}r(h0X.h1jubeubhe)r}r(h0XIf a less important request is preempted, the process of that request will receive an :class:`~simpy.events.Interrupt` with a :class:`Preempted` instance as cause.h1jh2j|h7hih9}r(h;]h<]h=]h>]hA]uhCKhDhh+]r(hSXVIf a less important request is preempted, the process of that request will receive an rr}r(h0XVIf a less important request is preempted, the process of that request will receive an h1jubho)r}r(h0X :class:`~simpy.events.Interrupt`rh1jh2h5h7hsh9}r(UreftypeXclasshuhvXsimpy.events.InterruptU refdomainXpyrh>]h=]U refexplicith;]h<]hA]hxhyhzjh{h|uhCK h+]rhM)r}r(h0jh9}r(h;]h<]r(hjXpy-classreh=]h>]hA]uh1jh+]rhSX Interruptrr}r(h0Uh1jubah7hWubaubhSX with a rr}r(h0X with a h1jubho)r}r(h0X:class:`Preempted`rh1jh2h5h7hsh9}r (UreftypeXclasshuhvX PreemptedU refdomainXpyr h>]h=]U refexplicith;]h<]hA]hxhyhzjh{h|uhCK h+]r hM)r }r (h0jh9}r(h;]h<]r(hj Xpy-classreh=]h>]hA]uh1jh+]rhSX Preemptedrr}r(h0Uh1j ubah7hWubaubhSX instance as cause.rr}r(h0X instance as cause.h1jubeubeubeubh\)r}r(h0Uh1h.h2Nh7h`h9}r(h>]h=]h;]h<]hA]Uentries]r(hcX-Preempted (class in simpy.resources.resource)hUtrauhCNhDhh+]ubj)r}r(h0Uh1h.h2Nh7jh9}r(jjXpyh>]h=]h;]h<]hA]jXclassr j j uhCNhDhh+]r!(j")r"}r#(h0XPreempted(by, usage_since)h1jh2j%h7j&h9}r$(h>]r%haj)h3Xsimpy.resources.resourcer&r'}r(bh=]h;]h<]hA]r)haj.X Preemptedr*j0Uj1uhCNhDhh+]r+(j3)r,}r-(h0Xclass h1j"h2j%h7j6h9}r.(h;]h<]h=]h>]hA]uhCNhDhh+]r/hSXclass r0r1}r2(h0Uh1j,ubaubj<)r3}r4(h0Xsimpy.resources.resource.h1j"h2j%h7j?h9}r5(h;]h<]h=]h>]hA]uhCNhDhh+]r6hSXsimpy.resources.resource.r7r8}r9(h0Uh1j3ubaubjE)r:}r;(h0j*h1j"h2j%h7jHh9}r<(h;]h<]h=]h>]hA]uhCNhDhh+]r=hSX Preemptedr>r?}r@(h0Uh1j:ubaubjN)rA}rB(h0Uh1j"h2j%h7jQh9}rC(h;]h<]h=]h>]hA]uhCNhDhh+]rD(jT)rE}rF(h0Xbyh9}rG(h;]h<]h=]h>]hA]uh1jAh+]rHhSXbyrIrJ}rK(h0Uh1jEubah7j\ubjT)rL}rM(h0X usage_sinceh9}rN(h;]h<]h=]h>]hA]uh1jAh+]rOhSX usage_sincerPrQ}rR(h0Uh1jLubah7j\ubeubeubjd)rS}rT(h0Uh1jh2j%h7jgh9}rU(h;]h<]h=]h>]hA]uhCNhDhh+]rV(h\)rW}rX(h0Uh1jSh2X{/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/resource.py:docstring of simpy.resources.resource.Preempted.byrYh7h`h9}rZ(h>]h=]h;]h<]hA]Uentries]r[(hcX1by (simpy.resources.resource.Preempted attribute)hUtr\auhCNhDhh+]ubj)r]}r^(h0Uh1jSh2jYh7jh9}r_(jjXpyh>]h=]h;]h<]hA]jX attributer`j j`uhCNhDhh+]ra(j")rb}rc(h0X Preempted.byh1j]h2jh7j&h9}rd(h>]rehaj)h3Xsimpy.resources.resourcerfrg}rhbh=]h;]h<]hA]rihaj.X Preempted.byj0j*j1uhCNhDhh+]rj(jE)rk}rl(h0Xbyh1jbh2jh7jHh9}rm(h;]h<]h=]h>]hA]uhCNhDhh+]rnhSXbyrorp}rq(h0Uh1jkubaubj3)rr}rs(h0X = Noneh1jbh2jh7j6h9}rt(h;]h<]h=]h>]hA]uhCNhDhh+]ruhSX = Nonervrw}rx(h0Uh1jrubaubeubjd)ry}rz(h0Uh1j]h2jh7jgh9}r{(h;]h<]h=]h>]hA]uhCNhDhh+]r|he)r}}r~(h0X-The preempting :class:`simpy.events.Process`.h1jyh2jYh7hih9}r(h;]h<]h=]h>]hA]uhCKhDhh+]r(hSXThe preempting rr}r(h0XThe preempting h1j}ubho)r}r(h0X:class:`simpy.events.Process`rh1j}h2h5h7hsh9}r(UreftypeXclasshuhvXsimpy.events.ProcessU refdomainXpyrh>]h=]U refexplicith;]h<]hA]hxhyhzj*h{h|uhCK h+]rhM)r}r(h0jh9}r(h;]h<]r(hjXpy-classreh=]h>]hA]uh1jh+]rhSXsimpy.events.Processrr}r(h0Uh1jubah7hWubaubhSX.r}r(h0X.h1j}ubeubaubeubh\)r}r(h0Uh1jSh2X/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/resource.py:docstring of simpy.resources.resource.Preempted.usage_sincerh7h`h9}r(h>]h=]h;]h<]hA]Uentries]r(hcX:usage_since (simpy.resources.resource.Preempted attribute)hUtrauhCNhDhh+]ubj)r}r(h0Uh1jSh2jh7jh9}r(jjXpyh>]h=]h;]h<]hA]jX attributerj juhCNhDhh+]r(j")r}r(h0XPreempted.usage_sinceh1jh2jh7j&h9}r(h>]rhaj)h3Xsimpy.resources.resourcerr}rbh=]h;]h<]hA]rhaj.XPreempted.usage_sincej0j*j1uhCNhDhh+]r(jE)r}r(h0X usage_sinceh1jh2jh7jHh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhSX usage_sincerr}r(h0Uh1jubaubj3)r}r(h0X = Noneh1jh2jh7j6h9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhSX = Nonerr}r(h0Uh1jubaubeubjd)r}r(h0Uh1jh2jh7jgh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhe)r}r(h0XOThe simulation time at which the preempted process started to use the resource.rh1jh2jh7hih9}r(h;]h<]h=]h>]hA]uhCKhDhh+]rhSXOThe simulation time at which the preempted process started to use the resource.rr}r(h0jh1jubaubaubeubeubeubh\)r}r(h0Uh1h.h2Xv/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/resource.py:docstring of simpy.resources.resource.Requestrh7h`h9}r(h>]h=]h;]h<]hA]Uentries]r(hcX+Request (class in simpy.resources.resource)hUtrauhCNhDhh+]ubj)r}r(h0Uh1h.h2jh7jh9}r(jjXpyh>]h=]h;]h<]hA]jXclassrj juhCNhDhh+]r(j")r}r(h0XRequest(resource)h1jh2j%h7j&h9}r(h>]rhaj)h3Xsimpy.resources.resourcerr}rbh=]h;]h<]hA]rhaj.XRequestrj0Uj1uhCNhDhh+]r(j3)r}r(h0Xclass h1jh2j%h7j6h9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhSXclass rr}r(h0Uh1jubaubj<)r}r(h0Xsimpy.resources.resource.h1jh2j%h7j?h9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhSXsimpy.resources.resource.rr}r(h0Uh1jubaubjE)r}r(h0jh1jh2j%h7jHh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhSXRequestrr}r(h0Uh1jubaubjN)r}r(h0Uh1jh2j%h7jQh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rjT)r}r(h0Xresourceh9}r(h;]h<]h=]h>]hA]uh1jh+]rhSXresourcerr}r(h0Uh1jubah7j\ubaubeubjd)r}r(h0Uh1jh2j%h7jgh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]r(he)r}r(h0XPRequest access on the *resource*. The event is triggered once access is granted.h1jh2jh7hih9}r(h;]h<]h=]h>]hA]uhCKhDhh+]r(hSXRequest access on the rr}r(h0XRequest access on the h1jubh)r}r(h0X *resource*h9}r(h;]h<]h=]h>]hA]uh1jh+]rhSXresourcerr}r (h0Uh1jubah7hubhSX0. The event is triggered once access is granted.r r }r (h0X0. The event is triggered once access is granted.h1jubeubhe)r }r(h0XIf the maximum capacity of users is not reached, the requesting process obtains the resource immediately. If the maximum capacity is reached, the requesting process waits until another process releases the resource.rh1jh2jh7hih9}r(h;]h<]h=]h>]hA]uhCKhDhh+]rhSXIf the maximum capacity of users is not reached, the requesting process obtains the resource immediately. If the maximum capacity is reached, the requesting process waits until another process releases the resource.rr}r(h0jh1j ubaubhe)r}r(h0XfThe request is automatically released when the request was created within a :keyword:`with` statement.h1jh2jh7hih9}r(h;]h<]h=]h>]hA]uhCKhDhh+]r(hSXLThe request is automatically released when the request was created within a rr}r(h0XLThe request is automatically released when the request was created within a h1jubho)r}r(h0X:keyword:`with`rh1jh2h5h7hsh9}r(UreftypeXkeywordhuhvXwithU refdomainXstdr h>]h=]U refexplicith;]h<]hA]hxhyuhCK h+]r!hM)r"}r#(h0jh9}r$(h;]h<]r%(hj X std-keywordr&eh=]h>]hA]uh1jh+]r'hSXwithr(r)}r*(h0Uh1j"ubah7hWubaubhSX statement.r+r,}r-(h0X statement.h1jubeubeubeubh\)r.}r/(h0Uh1h.h2Nh7h`h9}r0(h>]h=]h;]h<]hA]Uentries]r1(hcX+Release (class in simpy.resources.resource)h Utr2auhCNhDhh+]ubj)r3}r4(h0Uh1h.h2Nh7jh9}r5(jjXpyh>]h=]h;]h<]hA]jXclassr6j j6uhCNhDhh+]r7(j")r8}r9(h0XRelease(resource, request)h1j3h2j%h7j&h9}r:(h>]r;h aj)h3Xsimpy.resources.resourcer<r=}r>bh=]h;]h<]hA]r?h aj.XReleaser@j0Uj1uhCNhDhh+]rA(j3)rB}rC(h0Xclass h1j8h2j%h7j6h9}rD(h;]h<]h=]h>]hA]uhCNhDhh+]rEhSXclass rFrG}rH(h0Uh1jBubaubj<)rI}rJ(h0Xsimpy.resources.resource.h1j8h2j%h7j?h9}rK(h;]h<]h=]h>]hA]uhCNhDhh+]rLhSXsimpy.resources.resource.rMrN}rO(h0Uh1jIubaubjE)rP}rQ(h0j@h1j8h2j%h7jHh9}rR(h;]h<]h=]h>]hA]uhCNhDhh+]rShSXReleaserTrU}rV(h0Uh1jPubaubjN)rW}rX(h0Uh1j8h2j%h7jQh9}rY(h;]h<]h=]h>]hA]uhCNhDhh+]rZ(jT)r[}r\(h0Xresourceh9}r](h;]h<]h=]h>]hA]uh1jWh+]r^hSXresourcer_r`}ra(h0Uh1j[ubah7j\ubjT)rb}rc(h0Xrequesth9}rd(h;]h<]h=]h>]hA]uh1jWh+]rehSXrequestrfrg}rh(h0Uh1jbubah7j\ubeubeubjd)ri}rj(h0Uh1j3h2j%h7jgh9}rk(h;]h<]h=]h>]hA]uhCNhDhh+]rl(he)rm}rn(h0XfReleases the access privilege to *resource* granted by *request*. This event is triggered immediately.h1jih2Xv/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/resource.py:docstring of simpy.resources.resource.Releaseroh7hih9}rp(h;]h<]h=]h>]hA]uhCKhDhh+]rq(hSX!Releases the access privilege to rrrs}rt(h0X!Releases the access privilege to h1jmubh)ru}rv(h0X *resource*h9}rw(h;]h<]h=]h>]hA]uh1jmh+]rxhSXresourceryrz}r{(h0Uh1juubah7hubhSX granted by r|r}}r~(h0X granted by h1jmubh)r}r(h0X *request*h9}r(h;]h<]h=]h>]hA]uh1jmh+]rhSXrequestrr}r(h0Uh1jubah7hubhSX&. This event is triggered immediately.rr}r(h0X&. This event is triggered immediately.h1jmubeubhe)r}r(h0XAIf there's another process waiting for the *resource*, resume it.h1jih2joh7hih9}r(h;]h<]h=]h>]hA]uhCKhDhh+]r(hSX+If there's another process waiting for the rr}r(h0X+If there's another process waiting for the h1jubh)r}r(h0X *resource*h9}r(h;]h<]h=]h>]hA]uh1jh+]rhSXresourcerr}r(h0Uh1jubah7hubhSX , resume it.rr}r(h0X , resume it.h1jubeubhe)r}r(h0XIf the request was made in a :keyword:`with` statement (e.g., ``with res.request() as req:``), this method is automatically called when the ``with`` block is left.h1jih2joh7hih9}r(h;]h<]h=]h>]hA]uhCKhDhh+]r(hSXIf the request was made in a rr}r(h0XIf the request was made in a h1jubho)r}r(h0X:keyword:`with`rh1jh2h5h7hsh9}r(UreftypeXkeywordhuhvXwithU refdomainXstdrh>]h=]U refexplicith;]h<]hA]hxhyuhCK h+]rhM)r}r(h0jh9}r(h;]h<]r(hjX std-keywordreh=]h>]hA]uh1jh+]rhSXwithrr}r(h0Uh1jubah7hWubaubhSX statement (e.g., rr}r(h0X statement (e.g., h1jubhM)r}r(h0X``with res.request() as req:``h9}r(h;]h<]h=]h>]hA]uh1jh+]rhSXwith res.request() as req:rr}r(h0Uh1jubah7hWubhSX0), this method is automatically called when the rr}r(h0X0), this method is automatically called when the h1jubhM)r}r(h0X``with``h9}r(h;]h<]h=]h>]hA]uh1jh+]rhSXwithrr}r(h0Uh1jubah7hWubhSX block is left.rr}r(h0X block is left.h1jubeubh\)r}r(h0Uh1jih2X~/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/resource.py:docstring of simpy.resources.resource.Release.requestrh7h`h9}r(h>]h=]h;]h<]hA]Uentries]r(hcX4request (simpy.resources.resource.Release attribute)hUtrauhCNhDhh+]ubj)r}r(h0Uh1jih2jh7jh9}r(jjXpyh>]h=]h;]h<]hA]jX attributerj juhCNhDhh+]r(j")r}r(h0XRelease.requesth1jh2jh7j&h9}r(h>]rhaj)h3Xsimpy.resources.resourcerr}rbh=]h;]h<]hA]rhaj.XRelease.requestj0j@j1uhCNhDhh+]r(jE)r}r(h0Xrequesth1jh2jh7jHh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhSXrequestrr}r(h0Uh1jubaubj3)r}r(h0X = Noneh1jh2jh7j6h9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhSX = Nonerr}r(h0Uh1jubaubeubjd)r}r(h0Uh1jh2jh7jgh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhe)r}r(h0X6The request (:class:`Request`) that is to be released.h1jh2jh7hih9}r(h;]h<]h=]h>]hA]uhCKhDhh+]r(hSX The request (rr}r(h0X The request (h1jubho)r}r(h0X:class:`Request`rh1jh2h5h7hsh9}r(UreftypeXclasshuhvXRequestU refdomainXpyrh>]h=]U refexplicith;]h<]hA]hxhyhzj@h{h|uhCKh+]rhM)r}r(h0jh9}r(h;]h<]r(hjXpy-classreh=]h>]hA]uh1jh+]rhSXRequestrr}r(h0Uh1jubah7hWubaubhSX) that is to be released.rr}r(h0X) that is to be released.h1jubeubaubeubeubeubh\)r}r(h0Uh1h.h2Nh7h`h9}r(h>]h=]h;]h<]hA]Uentries]r (hcX3PriorityRequest (class in simpy.resources.resource)hUtr auhCNhDhh+]ubj)r }r (h0Uh1h.h2Nh7jh9}r (jjXpyh>]h=]h;]h<]hA]jXclassrj juhCNhDhh+]r(j")r}r(h0X3PriorityRequest(resource, priority=0, preempt=True)h1j h2j%h7j&h9}r(h>]rhaj)h3Xsimpy.resources.resourcerr}rbh=]h;]h<]hA]rhaj.XPriorityRequestrj0Uj1uhCNhDhh+]r(j3)r}r(h0Xclass h1jh2j%h7j6h9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhSXclass rr}r (h0Uh1jubaubj<)r!}r"(h0Xsimpy.resources.resource.h1jh2j%h7j?h9}r#(h;]h<]h=]h>]hA]uhCNhDhh+]r$hSXsimpy.resources.resource.r%r&}r'(h0Uh1j!ubaubjE)r(}r)(h0jh1jh2j%h7jHh9}r*(h;]h<]h=]h>]hA]uhCNhDhh+]r+hSXPriorityRequestr,r-}r.(h0Uh1j(ubaubjN)r/}r0(h0Uh1jh2j%h7jQh9}r1(h;]h<]h=]h>]hA]uhCNhDhh+]r2(jT)r3}r4(h0Xresourceh9}r5(h;]h<]h=]h>]hA]uh1j/h+]r6hSXresourcer7r8}r9(h0Uh1j3ubah7j\ubjT)r:}r;(h0X priority=0h9}r<(h;]h<]h=]h>]hA]uh1j/h+]r=hSX priority=0r>r?}r@(h0Uh1j:ubah7j\ubjT)rA}rB(h0X preempt=Trueh9}rC(h;]h<]h=]h>]hA]uh1j/h+]rDhSX preempt=TruerErF}rG(h0Uh1jAubah7j\ubeubeubjd)rH}rI(h0Uh1j h2j%h7jgh9}rJ(h;]h<]h=]h>]hA]uhCNhDhh+]rK(he)rL}rM(h0XRequest the *resource* with a given *priority*. If the *resource* supports preemption and *preempted* is true other processes with access to the *resource* may be preempted (see :class:`PreemptiveResource` for details).h1jHh2X~/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/resource.py:docstring of simpy.resources.resource.PriorityRequestrNh7hih9}rO(h;]h<]h=]h>]hA]uhCKhDhh+]rP(hSX Request the rQrR}rS(h0X Request the h1jLubh)rT}rU(h0X *resource*h9}rV(h;]h<]h=]h>]hA]uh1jLh+]rWhSXresourcerXrY}rZ(h0Uh1jTubah7hubhSX with a given r[r\}r](h0X with a given h1jLubh)r^}r_(h0X *priority*h9}r`(h;]h<]h=]h>]hA]uh1jLh+]rahSXpriorityrbrc}rd(h0Uh1j^ubah7hubhSX . If the rerf}rg(h0X . If the h1jLubh)rh}ri(h0X *resource*h9}rj(h;]h<]h=]h>]hA]uh1jLh+]rkhSXresourcerlrm}rn(h0Uh1jhubah7hubhSX supports preemption and rorp}rq(h0X supports preemption and h1jLubh)rr}rs(h0X *preempted*h9}rt(h;]h<]h=]h>]hA]uh1jLh+]ruhSX preemptedrvrw}rx(h0Uh1jrubah7hubhSX, is true other processes with access to the ryrz}r{(h0X, is true other processes with access to the h1jLubh)r|}r}(h0X *resource*h9}r~(h;]h<]h=]h>]hA]uh1jLh+]rhSXresourcerr}r(h0Uh1j|ubah7hubhSX may be preempted (see rr}r(h0X may be preempted (see h1jLubho)r}r(h0X:class:`PreemptiveResource`rh1jLh2h5h7hsh9}r(UreftypeXclasshuhvXPreemptiveResourceU refdomainXpyrh>]h=]U refexplicith;]h<]hA]hxhyhzjh{h|uhCKh+]rhM)r}r(h0jh9}r(h;]h<]r(hjXpy-classreh=]h>]hA]uh1jh+]rhSXPreemptiveResourcerr}r(h0Uh1jubah7hWubaubhSX for details).rr}r(h0X for details).h1jLubeubhe)r}r(h0XThis event type inherits :class:`Request` and adds some additional attributes needed by :class:`PriorityResource` and :class:`PreemptiveResource`h1jHh2jNh7hih9}r(h;]h<]h=]h>]hA]uhCKhDhh+]r(hSXThis event type inherits rr}r(h0XThis event type inherits h1jubho)r}r(h0X:class:`Request`rh1jh2h5h7hsh9}r(UreftypeXclasshuhvXRequestU refdomainXpyrh>]h=]U refexplicith;]h<]hA]hxhyhzjh{h|uhCK h+]rhM)r}r(h0jh9}r(h;]h<]r(hjXpy-classreh=]h>]hA]uh1jh+]rhSXRequestrr}r(h0Uh1jubah7hWubaubhSX/ and adds some additional attributes needed by rr}r(h0X/ and adds some additional attributes needed by h1jubho)r}r(h0X:class:`PriorityResource`rh1jh2h5h7hsh9}r(UreftypeXclasshuhvXPriorityResourceU refdomainXpyrh>]h=]U refexplicith;]h<]hA]hxhyhzjh{h|uhCK h+]rhM)r}r(h0jh9}r(h;]h<]r(hjXpy-classreh=]h>]hA]uh1jh+]rhSXPriorityResourcerr}r(h0Uh1jubah7hWubaubhSX and rr}r(h0X and h1jubho)r}r(h0X:class:`PreemptiveResource`rh1jh2h5h7hsh9}r(UreftypeXclasshuhvXPreemptiveResourceU refdomainXpyrh>]h=]U refexplicith;]h<]hA]hxhyhzjh{h|uhCK h+]rhM)r}r(h0jh9}r(h;]h<]r(hjXpy-classreh=]h>]hA]uh1jh+]rhSXPreemptiveResourcerr}r(h0Uh1jubah7hWubaubeubh\)r}r(h0Uh1jHh2X/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/resource.py:docstring of simpy.resources.resource.PriorityRequest.priorityrh7h`h9}r(h>]h=]h;]h<]hA]Uentries]r(hcX=priority (simpy.resources.resource.PriorityRequest attribute)h UtrauhCNhDhh+]ubj)r}r(h0Uh1jHh2jh7jh9}r(jjXpyh>]h=]h;]h<]hA]jX attributerj juhCNhDhh+]r(j")r}r(h0XPriorityRequest.priorityh1jh2jh7j&h9}r(h>]rh aj)h3Xsimpy.resources.resourcerr}rbh=]h;]h<]hA]rh aj.XPriorityRequest.priorityj0jj1uhCNhDhh+]r(jE)r}r(h0Xpriorityh1jh2jh7jHh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhSXpriorityrr}r(h0Uh1jubaubj3)r}r(h0X = Noneh1jh2jh7j6h9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhSX = Nonerr}r(h0Uh1jubaubeubjd)r}r(h0Uh1jh2jh7jgh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhe)r}r(h0XEThe priority of this request. A smaller number means higher priority.rh1jh2jh7hih9}r(h;]h<]h=]h>]hA]uhCKhDhh+]rhSXEThe priority of this request. A smaller number means higher priority.rr}r(h0jh1jubaubaubeubh\)r}r(h0Uh1jHh2X/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/resource.py:docstring of simpy.resources.resource.PriorityRequest.preemptrh7h`h9}r(h>]h=]h;]h<]hA]Uentries]r(hcX<preempt (simpy.resources.resource.PriorityRequest attribute)hUtrauhCNhDhh+]ubj)r}r(h0Uh1jHh2jh7jh9}r(jjXpyh>]h=]h;]h<]hA]jX attributer j j uhCNhDhh+]r (j")r }r (h0XPriorityRequest.preempth1jh2jh7j&h9}r (h>]rhaj)h3Xsimpy.resources.resourcerr}rbh=]h;]h<]hA]rhaj.XPriorityRequest.preemptj0jj1uhCNhDhh+]r(jE)r}r(h0Xpreempth1j h2jh7jHh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhSXpreemptrr}r(h0Uh1jubaubj3)r}r(h0X = Noneh1j h2jh7j6h9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhSX = Nonerr }r!(h0Uh1jubaubeubjd)r"}r#(h0Uh1jh2jh7jgh9}r$(h;]h<]h=]h>]hA]uhCNhDhh+]r%he)r&}r'(h0XIndicates whether the request should preempt a resource user or not (this flag is not taken into account by :class:`PriorityResource`).h1j"h2jh7hih9}r((h;]h<]h=]h>]hA]uhCKhDhh+]r)(hSXlIndicates whether the request should preempt a resource user or not (this flag is not taken into account by r*r+}r,(h0XlIndicates whether the request should preempt a resource user or not (this flag is not taken into account by h1j&ubho)r-}r.(h0X:class:`PriorityResource`r/h1j&h2h5h7hsh9}r0(UreftypeXclasshuhvXPriorityResourceU refdomainXpyr1h>]h=]U refexplicith;]h<]hA]hxhyhzjh{h|uhCKh+]r2hM)r3}r4(h0j/h9}r5(h;]h<]r6(hj1Xpy-classr7eh=]h>]hA]uh1j-h+]r8hSXPriorityResourcer9r:}r;(h0Uh1j3ubah7hWubaubhSX).r<r=}r>(h0X).h1j&ubeubaubeubh\)r?}r@(h0Uh1jHh2X/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/resource.py:docstring of simpy.resources.resource.PriorityRequest.timerAh7h`h9}rB(h>]h=]h;]h<]hA]Uentries]rC(hcX9time (simpy.resources.resource.PriorityRequest attribute)hUtrDauhCNhDhh+]ubj)rE}rF(h0Uh1jHh2jAh7jh9}rG(jjXpyh>]h=]h;]h<]hA]jX attributerHj jHuhCNhDhh+]rI(j")rJ}rK(h0XPriorityRequest.timeh1jEh2jh7j&h9}rL(h>]rMhaj)h3Xsimpy.resources.resourcerNrO}rPbh=]h;]h<]hA]rQhaj.XPriorityRequest.timej0jj1uhCNhDhh+]rR(jE)rS}rT(h0Xtimeh1jJh2jh7jHh9}rU(h;]h<]h=]h>]hA]uhCNhDhh+]rVhSXtimerWrX}rY(h0Uh1jSubaubj3)rZ}r[(h0X = Noneh1jJh2jh7j6h9}r\(h;]h<]h=]h>]hA]uhCNhDhh+]r]hSX = Noner^r_}r`(h0Uh1jZubaubeubjd)ra}rb(h0Uh1jEh2jh7jgh9}rc(h;]h<]h=]h>]hA]uhCNhDhh+]rdhe)re}rf(h0X'The time at which the request was made.rgh1jah2jAh7hih9}rh(h;]h<]h=]h>]hA]uhCKhDhh+]rihSX'The time at which the request was made.rjrk}rl(h0jgh1jeubaubaubeubh\)rm}rn(h0Uh1jHh2X/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/resource.py:docstring of simpy.resources.resource.PriorityRequest.keyroh7h`h9}rp(h>]h=]h;]h<]hA]Uentries]rq(hcX8key (simpy.resources.resource.PriorityRequest attribute)hUtrrauhCNhDhh+]ubj)rs}rt(h0Uh1jHh2joh7jh9}ru(jjXpyh>]h=]h;]h<]hA]jX attributervj jvuhCNhDhh+]rw(j")rx}ry(h0XPriorityRequest.keyh1jsh2jh7j&h9}rz(h>]r{haj)h3Xsimpy.resources.resourcer|r}}r~bh=]h;]h<]hA]rhaj.XPriorityRequest.keyj0jj1uhCNhDhh+]r(jE)r}r(h0Xkeyh1jxh2jh7jHh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhSXkeyrr}r(h0Uh1jubaubj3)r}r(h0X = Noneh1jxh2jh7j6h9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhSX = Nonerr}r(h0Uh1jubaubeubjd)r}r(h0Uh1jsh2jh7jgh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhe)r}r(h0XKey for sorting events. Consists of the priority (lower value is more important), the time at witch the request was made (earlier requests are more important) and finally the preemption flag (preempt requests are more important).rh1jh2joh7hih9}r(h;]h<]h=]h>]hA]uhCKhDhh+]rhSXKey for sorting events. Consists of the priority (lower value is more important), the time at witch the request was made (earlier requests are more important) and finally the preemption flag (preempt requests are more important).rr}r(h0jh1jubaubaubeubeubeubh\)r}r(h0Uh1h.h2Nh7h`h9}r(h>]h=]h;]h<]hA]Uentries]r(hcX/SortedQueue (class in simpy.resources.resource)h UtrauhCNhDhh+]ubj)r}r(h0Uh1h.h2Nh7jh9}r(jjXpyh>]h=]h;]h<]hA]jXclassrj juhCNhDhh+]r(j")r}r(h0XSortedQueue(maxlen=None)rh1jh2j%h7j&h9}r(h>]rh aj)h3Xsimpy.resources.resourcerr}rbh=]h;]h<]hA]rh aj.X SortedQueuerj0Uj1uhCNhDhh+]r(j3)r}r(h0Xclass h1jh2j%h7j6h9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhSXclass rr}r(h0Uh1jubaubj<)r}r(h0Xsimpy.resources.resource.h1jh2j%h7j?h9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhSXsimpy.resources.resource.rr}r(h0Uh1jubaubjE)r}r(h0jh1jh2j%h7jHh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rhSX SortedQueuerr}r(h0Uh1jubaubjN)r}r(h0Uh1jh2j%h7jQh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]rjT)r}r(h0X maxlen=Noneh9}r(h;]h<]h=]h>]hA]uh1jh+]rhSX maxlen=Nonerr}r(h0Uh1jubah7j\ubaubeubjd)r}r(h0Uh1jh2j%h7jgh9}r(h;]h<]h=]h>]hA]uhCNhDhh+]r(he)r}r(h0XHQueue that sorts events by their :attr:`~PriorityRequest.key` attribute.h1jh2Xz/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/resource.py:docstring of simpy.resources.resource.SortedQueuerh7hih9}r(h;]h<]h=]h>]hA]uhCKhDhh+]r(hSX!Queue that sorts events by their rr}r(h0X!Queue that sorts events by their h1jubho)r}r(h0X:attr:`~PriorityRequest.key`rh1jh2h5h7hsh9}r(UreftypeXattrhuhvXPriorityRequest.keyU refdomainXpyrh>]h=]U refexplicith;]h<]hA]hxhyhzjh{h|uhCKh+]rhM)r}r(h0jh9}r(h;]h<]r(hjXpy-attrreh=]h>]hA]uh1jh+]rhSXkeyrr}r(h0Uh1jubah7hWubaubhSX attribute.rr}r(h0X attribute.h1jubeubh\)r}r(h0Uh1jh2X/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/resource.py:docstring of simpy.resources.resource.SortedQueue.maxlenrh7h`h9}r(h>]h=]h;]h<]hA]Uentries]r(hcX7maxlen (simpy.resources.resource.SortedQueue attribute)h UtrauhCNhDhh+]ubj)r}r(h0Uh1jh2jh7jh9}r(jjXpyh>]h=]h;]h<]hA]jX attributerj juhCNhDhh+]r(j")r}r(h0XSortedQueue.maxlenh1jh2jh7j&h9}r(h>]rh aj)h3Xsimpy.resources.resourcerr}rbh=]h;]h<]hA]r h aj.XSortedQueue.maxlenj0jj1uhCNhDhh+]r (jE)r }r (h0Xmaxlenh1jh2jh7jHh9}r (h;]h<]h=]h>]hA]uhCNhDhh+]r hSXmaxlenr r }r (h0Uh1j ubaubj3)r }r (h0X = Noneh1jh2jh7j6h9}r (h;]h<]h=]h>]hA]uhCNhDhh+]r hSX = Noner r }r (h0Uh1j ubaubeubjd)r }r (h0Uh1jh2jh7jgh9}r (h;]h<]h=]h>]hA]uhCNhDhh+]r he)r }r (h0XMaximum length of the queue.r h1j h2jh7hih9}r (h;]h<]h=]h>]hA]uhCKhDhh+]r hSXMaximum length of the queue.r r }r (h0j h1j ubaubaubeubh\)r }r (h0Uh1jh2X/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/resource.py:docstring of simpy.resources.resource.SortedQueue.appendr h7h`h9}r (h>]h=]h;]h<]hA]Uentries]r (hcX6append() (simpy.resources.resource.SortedQueue method)h Utr! auhCNhDhh+]ubj)r" }r# (h0Uh1jh2j h7jh9}r$ (jjXpyh>]h=]h;]h<]hA]jXmethodr% j j% uhCNhDhh+]r& (j")r' }r( (h0XSortedQueue.append(item)r) h1j" h2j%h7j&h9}r* (h>]r+ h aj)h3Xsimpy.resources.resourcer, r- }r. bh=]h;]h<]hA]r/ h aj.XSortedQueue.appendj0jj1uhCNhDhh+]r0 (jE)r1 }r2 (h0Xappendh1j' h2j%h7jHh9}r3 (h;]h<]h=]h>]hA]uhCNhDhh+]r4 hSXappendr5 r6 }r7 (h0Uh1j1 ubaubjN)r8 }r9 (h0Uh1j' h2j%h7jQh9}r: (h;]h<]h=]h>]hA]uhCNhDhh+]r; jT)r< }r= (h0Xitemh9}r> (h;]h<]h=]h>]hA]uh1j8 h+]r? hSXitemr@ rA }rB (h0Uh1j< ubah7j\ubaubeubjd)rC }rD (h0Uh1j" h2j%h7jgh9}rE (h;]h<]h=]h>]hA]uhCNhDhh+]rF (he)rG }rH (h0X5Append *item* to the queue and keep the queue sorted.rI h1jC h2j h7hih9}rJ (h;]h<]h=]h>]hA]uhCKhDhh+]rK (hSXAppend rL rM }rN (h0XAppend h1jG ubh)rO }rP (h0X*item*h9}rQ (h;]h<]h=]h>]hA]uh1jG h+]rR hSXitemrS rT }rU (h0Uh1jO ubah7hubhSX( to the queue and keep the queue sorted.rV rW }rX (h0X( to the queue and keep the queue sorted.h1jG ubeubhe)rY }rZ (h0X1Raise a :exc:`RuntimeError` if the queue is full.r[ h1jC h2j h7hih9}r\ (h;]h<]h=]h>]hA]uhCKhDhh+]r] (hSXRaise a r^ r_ }r` (h0XRaise a h1jY ubho)ra }rb (h0X:exc:`RuntimeError`rc h1jY h2h5h7hsh9}rd (UreftypeXexchuhvX RuntimeErrorU refdomainXpyre h>]h=]U refexplicith;]h<]hA]hxhyhzjh{h|uhCKh+]rf hM)rg }rh (h0jc h9}ri (h;]h<]rj (hje Xpy-excrk eh=]h>]hA]uh1ja h+]rl hSX RuntimeErrorrm rn }ro (h0Uh1jg ubah7hWubaubhSX if the queue is full.rp rq }rr (h0X if the queue is full.h1jY ubeubeubeubeubeubeubah0UU transformerrs NU footnote_refsrt }ru Urefnamesrv }rw Usymbol_footnotesrx ]ry Uautofootnote_refsrz ]r{ Usymbol_footnote_refsr| ]r} U citationsr~ ]r hDhU current_liner NUtransform_messagesr ]r Ureporterr NUid_startr KU autofootnotesr ]r U citation_refsr }r Uindirect_targetsr ]r Usettingsr (cdocutils.frontend Values r or }r (Ufootnote_backlinksr KUrecord_dependenciesr NU rfc_base_urlr Uhttp://tools.ietf.org/html/r U tracebackr Upep_referencesr NUstrip_commentsr NU toc_backlinksr Uentryr U language_coder Uenr U datestampr NU report_levelr KU _destinationr NU halt_levelr KU strip_classesr NhJNUerror_encoding_error_handlerr Ubackslashreplacer Udebugr NUembed_stylesheetr Uoutput_encoding_error_handlerr Ustrictr U sectnum_xformr KUdump_transformsr NU docinfo_xformr KUwarning_streamr NUpep_file_url_templater Upep-%04dr Uexit_status_levelr KUconfigr NUstrict_visitorr NUcloak_email_addressesr Utrim_footnote_reference_spacer Uenvr NUdump_pseudo_xmlr NUexpose_internalsr NUsectsubtitle_xformr U source_linkr NUrfc_referencesr NUoutput_encodingr Uutf-8r U source_urlr NUinput_encodingr U utf-8-sigr U_disable_configr NU id_prefixr UU tab_widthr KUerror_encodingr UUTF-8r U_sourcer U\/var/build/user_builds/simpy/checkouts/3.0.5/docs/api_reference/simpy.resources.resource.rstr Ugettext_compactr U generatorr NUdump_internalsr NU smart_quotesr U pep_base_urlr Uhttp://www.python.org/dev/peps/r Usyntax_highlightr Ulongr Uinput_encoding_error_handlerr j Uauto_id_prefixr Uidr Udoctitle_xformr Ustrip_elements_with_classesr NU _config_filesr ]Ufile_insertion_enabledr U raw_enabledr KU dump_settingsr NubUsymbol_footnote_startr KUidsr }r (hj`hjbhj h jh j8h jh j' h jh@cdocutils.nodes target r )r }r (h0Uh1h.h2h_h7Utargetr h9}r (h;]h>]r h@ah=]Uismodh<]hA]uhCKhDhh+]ubhjhjhj9hj hj"hjhjhjhjJhjhjhjhj#hjxhj6hjhjh*h.h juUsubstitution_namesr }r h7hDh9}r (h;]h>]h=]Usourceh5h<]hA]uU footnotesr ]r Urefidsr }r ub.PK.D1simpy-3.0.5/.doctrees/api_reference/index.doctreecdocutils.nodes document q)q}q(U nametypesq}qX api referenceqNsUsubstitution_defsq}qUparse_messagesq ]q Ucurrent_sourceq NU decorationq NUautofootnote_startq KUnameidsq}qhU api-referenceqsUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqcdocutils.nodes reprunicode qXI/var/build/user_builds/simpy/checkouts/3.0.5/docs/api_reference/index.rstqq}qbUtagnameqUsectionqU attributesq}q (Udupnamesq!]Uclassesq"]Ubackrefsq#]Uidsq$]q%haUnamesq&]q'hauUlineq(KUdocumentq)hh]q*(cdocutils.nodes title q+)q,}q-(hX API Referenceq.hhhhhUtitleq/h}q0(h!]h"]h#]h$]h&]uh(Kh)hh]q1cdocutils.nodes Text q2X API Referenceq3q4}q5(hh.hh,ubaubcdocutils.nodes paragraph q6)q7}q8(hXThe API reference provides detailed descriptions of SimPy's classes and functions. It should be helpful if you plan to extend Simpy with custom components.q9hhhhhU paragraphq:h}q;(h!]h"]h#]h$]h&]uh(Kh)hh]q}q?(hh9hh7ubaubcdocutils.nodes compound q@)qA}qB(hUhhhhhUcompoundqCh}qD(h!]h"]qEUtoctree-wrapperqFah#]h$]h&]uh(Nh)hh]qGcsphinx.addnodes toctree qH)qI}qJ(hUhhAhhhUtoctreeqKh}qL(UnumberedqMKU includehiddenqNhXapi_reference/indexqOU titlesonlyqPUglobqQh$]h#]h!]h"]h&]UentriesqR]qS(NXapi_reference/simpyqTqUNXapi_reference/simpy.coreqVqWNXapi_reference/simpy.eventsqXqYNXapi_reference/simpy.monitoringqZq[NXapi_reference/simpy.resourcesq\q]NX"api_reference/simpy.resources.baseq^q_NX'api_reference/simpy.resources.containerq`qaNX&api_reference/simpy.resources.resourceqbqcNX#api_reference/simpy.resources.storeqdqeNXapi_reference/simpy.rtqfqgNXapi_reference/simpy.utilqhqieUhiddenqjU includefilesqk]ql(hThVhXhZh\h^h`hbhdhfhheUmaxdepthqmKuh(K h]ubaubeubahUU transformerqnNU footnote_refsqo}qpUrefnamesqq}qrUsymbol_footnotesqs]qtUautofootnote_refsqu]qvUsymbol_footnote_refsqw]qxU citationsqy]qzh)hU current_lineq{NUtransform_messagesq|]q}Ureporterq~NUid_startqKU autofootnotesq]qU citation_refsq}qUindirect_targetsq]qUsettingsq(cdocutils.frontend Values qoq}q(Ufootnote_backlinksqKUrecord_dependenciesqNU rfc_base_urlqUhttp://tools.ietf.org/html/qU tracebackqUpep_referencesqNUstrip_commentsqNU toc_backlinksqUentryqU language_codeqUenqU datestampqNU report_levelqKU _destinationqNU halt_levelqKU strip_classesqNh/NUerror_encoding_error_handlerqUbackslashreplaceqUdebugqNUembed_stylesheetqUoutput_encoding_error_handlerqUstrictqU sectnum_xformqKUdump_transformsqNU docinfo_xformqKUwarning_streamqNUpep_file_url_templateqUpep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUI/var/build/user_builds/simpy/checkouts/3.0.5/docs/api_reference/index.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhUauto_id_prefixqUidqUdoctitle_xformqȉUstrip_elements_with_classesqNU _config_filesq]qUfile_insertion_enabledq̈U raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}qhhsUsubstitution_namesq}qhh)h}q(h!]h$]h#]Usourcehh"]h&]uU footnotesq]qUrefidsq}qub.PK.D e+?4?46simpy-3.0.5/.doctrees/api_reference/simpy.util.doctreecdocutils.nodes document q)q}q(U nametypesq}q(Xsimpy.util.subscribe_atqX*simpy.util --- utility functions for simpyqNXsimpy.util.start_delayedquUsubstitution_defsq }q Uparse_messagesq ]q Ucurrent_sourceq NU decorationqNUautofootnote_startqKUnameidsq}q(hhhU&simpy-util-utility-functions-for-simpyqhhuUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqcdocutils.nodes reprunicode qXN/var/build/user_builds/simpy/checkouts/3.0.5/docs/api_reference/simpy.util.rstqq}qbUtagnameqUsectionq U attributesq!}q"(Udupnamesq#]Uclassesq$]Ubackrefsq%]Uidsq&]q'(Xmodule-simpy.utilq(heUnamesq)]q*hauUlineq+KUdocumentq,hh]q-(cdocutils.nodes title q.)q/}q0(hX.``simpy.util`` --- Utility functions for SimPyq1hhhhhUtitleq2h!}q3(h#]h$]h%]h&]h)]uh+Kh,hh]q4(cdocutils.nodes literal q5)q6}q7(hX``simpy.util``q8h!}q9(h#]h$]h%]h&]h)]uhh/h]q:cdocutils.nodes Text q;X simpy.utilq(hUhh6ubahUliteralq?ubh;X --- Utility functions for SimPyq@qA}qB(hX --- Utility functions for SimPyqChh/ubeubcsphinx.addnodes index qD)qE}qF(hUhhhU qGhUindexqHh!}qI(h&]h%]h#]h$]h)]Uentries]qJ(UsingleqKXsimpy.util (module)Xmodule-simpy.utilUtqLauh+Kh,hh]ubcdocutils.nodes paragraph qM)qN}qO(hX0This modules contains various utility functions:qPhhhXR/var/build/user_builds/simpy/checkouts/3.0.5/simpy/util.py:docstring of simpy.utilqQhU paragraphqRh!}qS(h#]h$]h%]h&]h)]uh+Kh,hh]qTh;X0This modules contains various utility functions:qUqV}qW(hhPhhNubaubcdocutils.nodes bullet_list qX)qY}qZ(hUhhhhQhU bullet_listq[h!}q\(Ubulletq]X-h&]h%]h#]h$]h)]uh+Kh,hh]q^(cdocutils.nodes list_item q_)q`}qa(hX<:func:`start_delayed()`: Start a process with a given delay.qbhhYhhQhU list_itemqch!}qd(h#]h$]h%]h&]h)]uh+Nh,hh]qehM)qf}qg(hhbhh`hhQhhRh!}qh(h#]h$]h%]h&]h)]uh+Kh]qi(csphinx.addnodes pending_xref qj)qk}ql(hX:func:`start_delayed()`qmhhfhhhU pending_xrefqnh!}qo(UreftypeXfuncUrefwarnqpU reftargetqqX start_delayedU refdomainXpyqrh&]h%]U refexplicith#]h$]h)]UrefdocqsXapi_reference/simpy.utilqtUpy:classquNU py:moduleqvX simpy.utilqwuh+Kh]qxh5)qy}qz(hhmh!}q{(h#]h$]q|(Uxrefq}hrXpy-funcq~eh%]h&]h)]uhhkh]qh;Xstart_delayed()qq}q(hUhhyubahh?ubaubh;X%: Start a process with a given delay.qq}q(hX%: Start a process with a given delay.hhfubeubaubh_)q}q(hXB:func:`subscribe_at()`: Receive an interrupt if an event occurs. hhYhhGhhch!}q(h#]h$]h%]h&]h)]uh+Nh,hh]qhM)q}q(hX@:func:`subscribe_at()`: Receive an interrupt if an event occurs.hhhhQhhRh!}q(h#]h$]h%]h&]h)]uh+Kh]q(hj)q}q(hX:func:`subscribe_at()`qhhhhhhnh!}q(UreftypeXfunchphqX subscribe_atU refdomainXpyqh&]h%]U refexplicith#]h$]h)]hshthuNhvhwuh+Kh]qh5)q}q(hhh!}q(h#]h$]q(h}hXpy-funcqeh%]h&]h)]uhhh]qh;Xsubscribe_at()qq}q(hUhhubahh?ubaubh;X*: Receive an interrupt if an event occurs.qq}q(hX*: Receive an interrupt if an event occurs.hhubeubaubeubhD)q}q(hUhhhX`/var/build/user_builds/simpy/checkouts/3.0.5/simpy/util.py:docstring of simpy.util.start_delayedqhhHh!}q(h&]h%]h#]h$]h)]Uentries]q(hKX&start_delayed() (in module simpy.util)hUtqauh+Nh,hh]ubcsphinx.addnodes desc q)q}q(hUhhhhhUdescqh!}q(UnoindexqUdomainqXpyh&]h%]h#]h$]h)]UobjtypeqXfunctionqUdesctypeqhuh+Nh,hh]q(csphinx.addnodes desc_signature q)q}q(hX$start_delayed(env, generator, delay)hhhU qhUdesc_signatureqh!}q(h&]qhaUmoduleqhX simpy.utilqq}qbh%]h#]h$]h)]qhaUfullnameqX start_delayedqUclassqUUfirstquh+Nh,hh]q(csphinx.addnodes desc_addname q)q}q(hX simpy.util.hhhhhU desc_addnameqh!}q(h#]h$]h%]h&]h)]uh+Nh,hh]qh;X simpy.util.qȅq}q(hUhhubaubcsphinx.addnodes desc_name q)q}q(hhhhhhhU desc_nameqh!}q(h#]h$]h%]h&]h)]uh+Nh,hh]qh;X start_delayedqхq}q(hUhhubaubcsphinx.addnodes desc_parameterlist q)q}q(hUhhhhhUdesc_parameterlistqh!}q(h#]h$]h%]h&]h)]uh+Nh,hh]q(csphinx.addnodes desc_parameter q)q}q(hXenvh!}q(h#]h$]h%]h&]h)]uhhh]qh;Xenvq߅q}q(hUhhubahUdesc_parameterqubh)q}q(hX generatorh!}q(h#]h$]h%]h&]h)]uhhh]qh;X generatorq煁q}q(hUhhubahhubh)q}q(hXdelayh!}q(h#]h$]h%]h&]h)]uhhh]qh;Xdelayqq}q(hUhhubahhubeubeubcsphinx.addnodes desc_content q)q}q(hUhhhhhU desc_contentqh!}q(h#]h$]h%]h&]h)]uh+Nh,hh]q(hM)q}q(hX\Return a helper process that starts another process for *generator* after a certain *delay*.hhhhhhRh!}q(h#]h$]h%]h&]h)]uh+Kh,hh]q(h;X8Return a helper process that starts another process for qq}q(hX8Return a helper process that starts another process for hhubcdocutils.nodes emphasis q)q}r(hX *generator*h!}r(h#]h$]h%]h&]h)]uhhh]rh;X generatorrr}r(hUhhubahUemphasisrubh;X after a certain rr}r (hX after a certain hhubh)r }r (hX*delay*h!}r (h#]h$]h%]h&]h)]uhhh]r h;Xdelayrr}r(hUhj ubahjubh;X.r}r(hX.hhubeubhM)r}r(hX:meth:`~simpy.core.Environment.process()` starts a process at the current simulation time. This helper allows you to start a process after a delay of *delay* simulation time units::hhhhhhRh!}r(h#]h$]h%]h&]h)]uh+Kh,hh]r(hj)r}r(hX):meth:`~simpy.core.Environment.process()`rhjhNhhnh!}r(UreftypeXmethhphqXsimpy.core.Environment.processU refdomainXpyrh&]h%]U refexplicith#]h$]h)]hshthuNhvhwuh+Nh]rh5)r}r(hjh!}r(h#]h$]r (h}jXpy-methr!eh%]h&]h)]uhjh]r"h;X process()r#r$}r%(hUhjubahh?ubaubh;Xm starts a process at the current simulation time. This helper allows you to start a process after a delay of r&r'}r((hXm starts a process at the current simulation time. This helper allows you to start a process after a delay of hjubh)r)}r*(hX*delay*h!}r+(h#]h$]h%]h&]h)]uhjh]r,h;Xdelayr-r.}r/(hUhj)ubahjubh;X simulation time units:r0r1}r2(hX simulation time units:hjubeubcdocutils.nodes literal_block r3)r4}r5(hX>>> from simpy import Environment >>> from simpy.util import start_delayed >>> def my_process(env, x): ... print('%s, %s' % (env.now, x)) ... yield env.timeout(1) ... >>> env = Environment() >>> proc = start_delayed(env, my_process(env, 3), 5) >>> env.run() 5, 3hhhhhU literal_blockr6h!}r7(U xml:spacer8Upreserver9h&]h%]h#]h$]h)]uh+Kh,hh]r:h;X>>> from simpy import Environment >>> from simpy.util import start_delayed >>> def my_process(env, x): ... print('%s, %s' % (env.now, x)) ... yield env.timeout(1) ... >>> env = Environment() >>> proc = start_delayed(env, my_process(env, 3), 5) >>> env.run() 5, 3r;r<}r=(hUhj4ubaubhM)r>}r?(hX,Raise a :exc:`ValueError` if ``delay <= 0``.hhhhhhRh!}r@(h#]h$]h%]h&]h)]uh+Kh,hh]rA(h;XRaise a rBrC}rD(hXRaise a hj>ubhj)rE}rF(hX:exc:`ValueError`rGhj>hNhhnh!}rH(UreftypeXexchphqX ValueErrorU refdomainXpyrIh&]h%]U refexplicith#]h$]h)]hshthuNhvhwuh+Nh]rJh5)rK}rL(hjGh!}rM(h#]h$]rN(h}jIXpy-excrOeh%]h&]h)]uhjEh]rPh;X ValueErrorrQrR}rS(hUhjKubahh?ubaubh;X if rTrU}rV(hX if hj>ubh5)rW}rX(hX``delay <= 0``h!}rY(h#]h$]h%]h&]h)]uhj>h]rZh;X delay <= 0r[r\}r](hUhjWubahh?ubh;X.r^}r_(hX.hj>ubeubeubeubhD)r`}ra(hUhhhX_/var/build/user_builds/simpy/checkouts/3.0.5/simpy/util.py:docstring of simpy.util.subscribe_atrbhhHh!}rc(h&]h%]h#]h$]h)]Uentries]rd(hKX%subscribe_at() (in module simpy.util)hUtreauh+Nh,hh]ubh)rf}rg(hUhhhjbhhh!}rh(hhXpyh&]h%]h#]h$]h)]hXfunctionrihjiuh+Nh,hh]rj(h)rk}rl(hXsubscribe_at(event)rmhjfhhhhh!}rn(h&]rohahhX simpy.utilrprq}rrbh%]h#]h$]h)]rshahX subscribe_atrthUhuh+Nh,hh]ru(h)rv}rw(hX simpy.util.hjkhhhhh!}rx(h#]h$]h%]h&]h)]uh+Nh,hh]ryh;X simpy.util.rzr{}r|(hUhjvubaubh)r}}r~(hjthjkhhhhh!}r(h#]h$]h%]h&]h)]uh+Nh,hh]rh;X subscribe_atrr}r(hUhj}ubaubh)r}r(hUhjkhhhhh!}r(h#]h$]h%]h&]h)]uh+Nh,hh]rh)r}r(hXeventh!}r(h#]h$]h%]h&]h)]uhjh]rh;Xeventrr}r(hUhjubahhubaubeubh)r}r(hUhjfhhhhh!}r(h#]h$]h%]h&]h)]uh+Nh,hh]r(hM)r}r(hX?Register at the *event* to receive an interrupt when it occurs.rhjhjbhhRh!}r(h#]h$]h%]h&]h)]uh+Kh,hh]r(h;XRegister at the rr}r(hXRegister at the hjubh)r}r(hX*event*h!}r(h#]h$]h%]h&]h)]uhjh]rh;Xeventrr}r(hUhjubahjubh;X( to receive an interrupt when it occurs.rr}r(hX( to receive an interrupt when it occurs.hjubeubhM)r}r(hXqThe most common use case for this is to pass a :class:`~simpy.events.Process` to get notified when it terminates.hjhjbhhRh!}r(h#]h$]h%]h&]h)]uh+Kh,hh]r(h;X/The most common use case for this is to pass a rr}r(hX/The most common use case for this is to pass a hjubhj)r}r(hX:class:`~simpy.events.Process`rhjhNhhnh!}r(UreftypeXclasshphqXsimpy.events.ProcessU refdomainXpyrh&]h%]U refexplicith#]h$]h)]hshthuNhvhwuh+Nh]rh5)r}r(hjh!}r(h#]h$]r(h}jXpy-classreh%]h&]h)]uhjh]rh;XProcessrr}r(hUhjubahh?ubaubh;X$ to get notified when it terminates.rr}r(hX$ to get notified when it terminates.hjubeubhM)r}r(hX>Raise a :exc:`RuntimeError` if ``event`` has already occurred.rhjhjbhhRh!}r(h#]h$]h%]h&]h)]uh+Kh,hh]r(h;XRaise a rr}r(hXRaise a hjubhj)r}r(hX:exc:`RuntimeError`rhjhNhhnh!}r(UreftypeXexchphqX RuntimeErrorU refdomainXpyrh&]h%]U refexplicith#]h$]h)]hshthuNhvhwuh+Nh]rh5)r}r(hjh!}r(h#]h$]r(h}jXpy-excreh%]h&]h)]uhjh]rh;X RuntimeErrorrr}r(hUhjubahh?ubaubh;X if rr}r(hX if hjubh5)r}r(hX ``event``h!}r(h#]h$]h%]h&]h)]uhjh]rh;Xeventrr}r(hUhjubahh?ubh;X has already occurred.rr}r(hX has already occurred.hjubeubeubeubeubahUU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh,hU current_linerNUtransform_messagesr]rUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestampr NU report_levelr KU _destinationr NU halt_levelr KU strip_classesr Nh2NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlr NUexpose_internalsr!NUsectsubtitle_xformr"U source_linkr#NUrfc_referencesr$NUoutput_encodingr%Uutf-8r&U source_urlr'NUinput_encodingr(U utf-8-sigr)U_disable_configr*NU id_prefixr+UU tab_widthr,KUerror_encodingr-UUTF-8r.U_sourcer/UN/var/build/user_builds/simpy/checkouts/3.0.5/docs/api_reference/simpy.util.rstr0Ugettext_compactr1U generatorr2NUdump_internalsr3NU smart_quotesr4U pep_base_urlr5Uhttp://www.python.org/dev/peps/r6Usyntax_highlightr7Ulongr8Uinput_encoding_error_handlerr9jUauto_id_prefixr:Uidr;Udoctitle_xformr<Ustrip_elements_with_classesr=NU _config_filesr>]Ufile_insertion_enabledr?U raw_enabledr@KU dump_settingsrANubUsymbol_footnote_startrBKUidsrC}rD(hjkhhh(cdocutils.nodes target rE)rF}rG(hUhhhhGhUtargetrHh!}rI(h#]h&]rJh(ah%]Uismodh$]h)]uh+Kh,hh]ubhhuUsubstitution_namesrK}rLhh,h!}rM(h#]h&]h%]Usourcehh$]h)]uU footnotesrN]rOUrefidsrP}rQub.PK.DAsimpy-3.0.5/.doctrees/api_reference/simpy.resources.store.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X.simpy.resources.store --- store type resourcesqNX+simpy.resources.store.FilterStoreGet.filterqX$simpy.resources.store.FilterStoreGetqXsimpy.resources.store.Storeq Xsimpy.resources.store.Store.putq Xsimpy.resources.store.Store.getq Xsimpy.resources.store.StorePutq X!simpy.resources.store.Store.itemsq X%simpy.resources.store.FilterStore.getqX$simpy.resources.store.Store.capacityqX#simpy.resources.store.StorePut.itemqXsimpy.resources.store.StoreGetqX*simpy.resources.store.FilterStore.GetQueueqX!simpy.resources.store.FilterQueueqX!simpy.resources.store.FilterStorequUsubstitution_defsq}qUparse_messagesq]q(cdocutils.nodes system_message q)q}q(U rawsourceqUUparentqcdocutils.nodes section q)q}q (hUhhUsourceq!cdocutils.nodes reprunicode q"XY/var/build/user_builds/simpy/checkouts/3.0.5/docs/api_reference/simpy.resources.store.rstq#q$}q%bUtagnameq&Usectionq'U attributesq(}q)(Udupnamesq*]Uclassesq+]Ubackrefsq,]Uidsq-]q.(Xmodule-simpy.resources.storeq/U*simpy-resources-store-store-type-resourcesq0eUnamesq1]q2hauUlineq3KUdocumentq4hUchildrenq5]q6(cdocutils.nodes title q7)q8}q9(hX2``simpy.resources.store`` --- Store type resourcesq:hhh!h$h&Utitleq;h(}q<(h*]h+]h,]h-]h1]uh3Kh4hh5]q=(cdocutils.nodes literal q>)q?}q@(hX``simpy.resources.store``qAh(}qB(h*]h+]h,]h-]h1]uhh8h5]qCcdocutils.nodes Text qDXsimpy.resources.storeqEqF}qG(hUhh?ubah&UliteralqHubhDX --- Store type resourcesqIqJ}qK(hX --- Store type resourcesqLhh8ubeubcsphinx.addnodes index qM)qN}qO(hUhhh!U qPh&UindexqQh(}qR(h-]h,]h*]h+]h1]Uentries]qS(UsingleqTXsimpy.resources.store (module)Xmodule-simpy.resources.storeUtqUauh3Kh4hh5]ubcdocutils.nodes paragraph qV)qW}qX(hX7This module contains all :class:`Store` like resources.hhh!Xh/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/store.py:docstring of simpy.resources.storeqYh&U paragraphqZh(}q[(h*]h+]h,]h-]h1]uh3Kh4hh5]q\(hDXThis module contains all q]q^}q_(hXThis module contains all hhWubcsphinx.addnodes pending_xref q`)qa}qb(hX:class:`Store`qchhWh!h$h&U pending_xrefqdh(}qe(UreftypeXclassUrefwarnqfU reftargetqgXStoreU refdomainXpyqhh-]h,]U refexplicith*]h+]h1]UrefdocqiX#api_reference/simpy.resources.storeqjUpy:classqkNU py:moduleqlXsimpy.resources.storeqmuh3Kh5]qnh>)qo}qp(hhch(}qq(h*]h+]qr(UxrefqshhXpy-classqteh,]h-]h1]uhhah5]quhDXStoreqvqw}qx(hUhhoubah&hHubaubhDX like resources.qyqz}q{(hX like resources.hhWubeubhV)q|}q}(hXStores model the production and consumption of concrete objects. The object type is, by default, not restricted. A single Store can even contain multiple types of objects.q~hhh!hYh&hZh(}q(h*]h+]h,]h-]h1]uh3Kh4hh5]qhDXStores model the production and consumption of concrete objects. The object type is, by default, not restricted. A single Store can even contain multiple types of objects.qq}q(hh~hh|ubaubhV)q}q(hXBeside :class:`Store`, there is a :class:`FilterStore` that lets you use a custom function to filter the objects you get out of the store.hhh!hYh&hZh(}q(h*]h+]h,]h-]h1]uh3Kh4hh5]q(hDXBeside qq}q(hXBeside hhubh`)q}q(hX:class:`Store`qhhh!h$h&hdh(}q(UreftypeXclasshfhgXStoreU refdomainXpyqh-]h,]U refexplicith*]h+]h1]hihjhkNhlhmuh3K h5]qh>)q}q(hhh(}q(h*]h+]q(hshXpy-classqeh,]h-]h1]uhhh5]qhDXStoreqq}q(hUhhubah&hHubaubhDX , there is a qq}q(hX , there is a hhubh`)q}q(hX:class:`FilterStore`qhhh!h$h&hdh(}q(UreftypeXclasshfhgX FilterStoreU refdomainXpyqh-]h,]U refexplicith*]h+]h1]hihjhkNhlhmuh3K h5]qh>)q}q(hhh(}q(h*]h+]q(hshXpy-classqeh,]h-]h1]uhhh5]qhDX FilterStoreqq}q(hUhhubah&hHubaubhDXT that lets you use a custom function to filter the objects you get out of the store.qq}q(hXT that lets you use a custom function to filter the objects you get out of the store.hhubeubhM)q}q(hUhhh!Nh&hQh(}q(h-]h,]h*]h+]h1]Uentries]q(hTX&Store (class in simpy.resources.store)h Utqauh3Nh4hh5]ubcsphinx.addnodes desc q)q}q(hUhhh!Nh&Udescqh(}q(UnoindexqUdomainqXpyh-]h,]h*]h+]h1]UobjtypeqXclassqUdesctypeqhuh3Nh4hh5]q(csphinx.addnodes desc_signature q)q}q(hXStore(env, capacity=inf)hhh!U qh&Udesc_signatureqh(}q(h-]qh aUmoduleqh"Xsimpy.resources.storeqDžq}qbh,]h*]h+]h1]qh aUfullnameqXStoreqUclassqUUfirstqΉuh3Nh4hh5]q(csphinx.addnodes desc_annotation q)q}q(hXclass hhh!hh&Udesc_annotationqh(}q(h*]h+]h,]h-]h1]uh3Nh4hh5]qhDXclass qօq}q(hUhhubaubcsphinx.addnodes desc_addname q)q}q(hXsimpy.resources.store.hhh!hh&U desc_addnameqh(}q(h*]h+]h,]h-]h1]uh3Nh4hh5]qhDXsimpy.resources.store.q߅q}q(hUhhubaubcsphinx.addnodes desc_name q)q}q(hhhhh!hh&U desc_nameqh(}q(h*]h+]h,]h-]h1]uh3Nh4hh5]qhDXStoreq腁q}q(hUhhubaubcsphinx.addnodes desc_parameterlist q)q}q(hUhhh!hh&Udesc_parameterlistqh(}q(h*]h+]h,]h-]h1]uh3Nh4hh5]q(csphinx.addnodes desc_parameter q)q}q(hXenvh(}q(h*]h+]h,]h-]h1]uhhh5]qhDXenvqq}q(hUhhubah&Udesc_parameterqubh)q}q(hX capacity=infh(}q(h*]h+]h,]h-]h1]uhhh5]qhDX capacity=infqq}r(hUhhubah&hubeubeubcsphinx.addnodes desc_content r)r}r(hUhhh!hh&U desc_contentrh(}r(h*]h+]h,]h-]h1]uh3Nh4hh5]r(hV)r}r(hXAModels the production and consumption of concrete Python objects.r hjh!Xn/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/store.py:docstring of simpy.resources.store.Storer h&hZh(}r (h*]h+]h,]h-]h1]uh3Kh4hh5]r hDXAModels the production and consumption of concrete Python objects.r r}r(hj hjubaubhV)r}r(hXItems put into the store can be of any type. By default, they are put and retrieved from the store in a first-in first-out order.rhjh!j h&hZh(}r(h*]h+]h,]h-]h1]uh3Kh4hh5]rhDXItems put into the store can be of any type. By default, they are put and retrieved from the store in a first-in first-out order.rr}r(hjhjubaubhV)r}r(hX_The *env* parameter is the :class:`~simpy.core.Environment` instance the container is bound to.hjh!j h&hZh(}r(h*]h+]h,]h-]h1]uh3Kh4hh5]r(hDXThe rr}r(hXThe hjubcdocutils.nodes emphasis r)r }r!(hX*env*h(}r"(h*]h+]h,]h-]h1]uhjh5]r#hDXenvr$r%}r&(hUhj ubah&Uemphasisr'ubhDX parameter is the r(r)}r*(hX parameter is the hjubh`)r+}r,(hX :class:`~simpy.core.Environment`r-hjh!h$h&hdh(}r.(UreftypeXclasshfhgXsimpy.core.EnvironmentU refdomainXpyr/h-]h,]U refexplicith*]h+]h1]hihjhkhhlhmuh3K h5]r0h>)r1}r2(hj-h(}r3(h*]h+]r4(hsj/Xpy-classr5eh,]h-]h1]uhj+h5]r6hDX Environmentr7r8}r9(hUhj1ubah&hHubaubhDX$ instance the container is bound to.r:r;}r<(hX$ instance the container is bound to.hjubeubhV)r=}r>(hXThe *capacity* defines the size of the Store and must be a positive number (> 0). By default, a Store is of unlimited size. A :exc:`ValueError` is raised if the value is negative.hjh!j h&hZh(}r?(h*]h+]h,]h-]h1]uh3K h4hh5]r@(hDXThe rArB}rC(hXThe hj=ubj)rD}rE(hX *capacity*h(}rF(h*]h+]h,]h-]h1]uhj=h5]rGhDXcapacityrHrI}rJ(hUhjDubah&j'ubhDXp defines the size of the Store and must be a positive number (> 0). By default, a Store is of unlimited size. A rKrL}rM(hXp defines the size of the Store and must be a positive number (> 0). By default, a Store is of unlimited size. A hj=ubh`)rN}rO(hX:exc:`ValueError`rPhj=h!h$h&hdh(}rQ(UreftypeXexchfhgX ValueErrorU refdomainXpyrRh-]h,]U refexplicith*]h+]h1]hihjhkhhlhmuh3K h5]rSh>)rT}rU(hjPh(}rV(h*]h+]rW(hsjRXpy-excrXeh,]h-]h1]uhjNh5]rYhDX ValueErrorrZr[}r\(hUhjTubah&hHubaubhDX$ is raised if the value is negative.r]r^}r_(hX$ is raised if the value is negative.hj=ubeubhM)r`}ra(hUhjh!Xt/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/store.py:docstring of simpy.resources.store.Store.itemsrbh&hQh(}rc(h-]h,]h*]h+]h1]Uentries]rd(hTX-items (simpy.resources.store.Store attribute)h Utreauh3Nh4hh5]ubh)rf}rg(hUhjh!jbh&hh(}rh(hhXpyh-]h,]h*]h+]h1]hX attributerihjiuh3Nh4hh5]rj(h)rk}rl(hX Store.itemshjfh!U rmh&hh(}rn(h-]roh ahh"Xsimpy.resources.storerprq}rrbh,]h*]h+]h1]rsh ahX Store.itemshhhΉuh3Nh4hh5]rt(h)ru}rv(hXitemshjkh!jmh&hh(}rw(h*]h+]h,]h-]h1]uh3Nh4hh5]rxhDXitemsryrz}r{(hUhjuubaubh)r|}r}(hX = Nonehjkh!jmh&hh(}r~(h*]h+]h,]h-]h1]uh3Nh4hh5]rhDX = Nonerr}r(hUhj|ubaubeubj)r}r(hUhjfh!jmh&jh(}r(h*]h+]h,]h-]h1]uh3Nh4hh5]rhV)r}r(hX#List of the items within the store.rhjh!jbh&hZh(}r(h*]h+]h,]h-]h1]uh3Kh4hh5]rhDX#List of the items within the store.rr}r(hjhjubaubaubeubhM)r}r(hUhjh!Xw/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/store.py:docstring of simpy.resources.store.Store.capacityrh&hQh(}r(h-]h,]h*]h+]h1]Uentries]r(hTX0capacity (simpy.resources.store.Store attribute)hUtrauh3Nh4hh5]ubh)r}r(hUhjh!jh&hh(}r(hhXpyh-]h,]h*]h+]h1]hX attributerhjuh3Nh4hh5]r(h)r}r(hXStore.capacityhjh!hh&hh(}r(h-]rhahh"Xsimpy.resources.storerr}rbh,]h*]h+]h1]rhahXStore.capacityhhhΉuh3Nh4hh5]rh)r}r(hXcapacityhjh!hh&hh(}r(h*]h+]h,]h-]h1]uh3Nh4hh5]rhDXcapacityrr}r(hUhjubaubaubj)r}r(hUhjh!hh&jh(}r(h*]h+]h,]h-]h1]uh3Nh4hh5]rhV)r}r(hX"The maximum capacity of the store.rhjh!jh&hZh(}r(h*]h+]h,]h-]h1]uh3Kh4hh5]rhDX"The maximum capacity of the store.rr}r(hjhjubaubaubeubhM)r}r(hUhjh!Uh&hQh(}r(h-]h,]h*]h+]h1]Uentries]r(hTX+put (simpy.resources.store.Store attribute)h Utrauh3Nh4hh5]ubh)r}r(hUhjh!Uh&hh(}r(hhXpyh-]h,]h*]h+]h1]hX attributerhjuh3Nh4hh5]r(h)r}r(hX Store.puthjh!hh&hh(}r(h-]rh ahh"Xsimpy.resources.storerr}rbh,]h*]h+]h1]rh ahX Store.puthhhΉuh3Nh4hh5]rh)r}r(hXputhjh!hh&hh(}r(h*]h+]h,]h-]h1]uh3Nh4hh5]rhDXputrr}r(hUhjubaubaubj)r}r(hUhjh!hh&jh(}r(h*]h+]h,]h-]h1]uh3Nh4hh5]r(hV)r}r(hX%Create a new :class:`StorePut` event.hjh!Xr/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/store.py:docstring of simpy.resources.store.Store.puth&hZh(}r(h*]h+]h,]h-]h1]uh3Kh4hh5]r(hDX Create a new rr}r(hX Create a new hjubh`)r}r(hX:class:`StorePut`rhjh!Nh&hdh(}r(UreftypeXclasshfhgXStorePutU refdomainXpyrh-]h,]U refexplicith*]h+]h1]hihjhkhhlhmuh3Nh5]rh>)r}r(hjh(}r(h*]h+]r(hsjXpy-classreh,]h-]h1]uhjh5]rhDXStorePutrr}r(hUhjubah&hHubaubhDX event.rr}r(hX event.hjubeubhV)r}r(hXalias of :class:`StorePut`hjh!Uh&hZh(}r(h*]h+]h,]h-]h1]uh3Kh4hh5]r(hDX alias of rr}r(hX alias of hjubh`)r}r(hX:class:`StorePut`rhjh!Nh&hdh(}r(UreftypeXclasshfhgXStorePutU refdomainXpyrh-]h,]U refexplicith*]h+]h1]hihjhkhhlhmuh3Nh5]rh>)r}r(hjh(}r(h*]h+]r(hsjXpy-classreh,]h-]h1]uhjh5]rhDXStorePutrr}r(hUhjubah&hHubaubeubeubeubhM)r}r(hUhjh!Uh&hQh(}r(h-]h,]h*]h+]h1]Uentries]r(hTX+get (simpy.resources.store.Store attribute)h Utrauh3Nh4hh5]ubh)r}r (hUhjh!Uh&hh(}r (hhXpyh-]h,]h*]h+]h1]hX attributer hj uh3Nh4hh5]r (h)r }r(hX Store.gethjh!hh&hh(}r(h-]rh ahh"Xsimpy.resources.storerr}rbh,]h*]h+]h1]rh ahX Store.gethhhΉuh3Nh4hh5]rh)r}r(hXgethj h!hh&hh(}r(h*]h+]h,]h-]h1]uh3Nh4hh5]rhDXgetrr}r(hUhjubaubaubj)r}r(hUhjh!hh&jh(}r(h*]h+]h,]h-]h1]uh3Nh4hh5]r (hV)r!}r"(hX%Create a new :class:`StoreGet` event.hjh!Xr/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/store.py:docstring of simpy.resources.store.Store.geth&hZh(}r#(h*]h+]h,]h-]h1]uh3Kh4hh5]r$(hDX Create a new r%r&}r'(hX Create a new hj!ubh`)r(}r)(hX:class:`StoreGet`r*hj!h!Nh&hdh(}r+(UreftypeXclasshfhgXStoreGetU refdomainXpyr,h-]h,]U refexplicith*]h+]h1]hihjhkhhlhmuh3Nh5]r-h>)r.}r/(hj*h(}r0(h*]h+]r1(hsj,Xpy-classr2eh,]h-]h1]uhj(h5]r3hDXStoreGetr4r5}r6(hUhj.ubah&hHubaubhDX event.r7r8}r9(hX event.hj!ubeubhV)r:}r;(hXalias of :class:`StoreGet`hjh!Uh&hZh(}r<(h*]h+]h,]h-]h1]uh3Kh4hh5]r=(hDX alias of r>r?}r@(hX alias of hj:ubh`)rA}rB(hX:class:`StoreGet`rChj:h!Nh&hdh(}rD(UreftypeXclasshfhgXStoreGetU refdomainXpyrEh-]h,]U refexplicith*]h+]h1]hihjhkhhlhmuh3Nh5]rFh>)rG}rH(hjCh(}rI(h*]h+]rJ(hsjEXpy-classrKeh,]h-]h1]uhjAh5]rLhDXStoreGetrMrN}rO(hUhjGubah&hHubaubeubeubeubeubeubhM)rP}rQ(hUhhh!Nh&hQh(}rR(h-]h,]h*]h+]h1]Uentries]rS(hTX,FilterStore (class in simpy.resources.store)hUtrTauh3Nh4hh5]ubh)rU}rV(hUhhh!Nh&hh(}rW(hhXpyh-]h,]h*]h+]h1]hXclassrXhjXuh3Nh4hh5]rY(h)rZ}r[(hXFilterStore(env, capacity=inf)hjUh!hh&hh(}r\(h-]r]hahh"Xsimpy.resources.storer^r_}r`bh,]h*]h+]h1]rahahX FilterStorerbhUhΉuh3Nh4hh5]rc(h)rd}re(hXclass hjZh!hh&hh(}rf(h*]h+]h,]h-]h1]uh3Nh4hh5]rghDXclass rhri}rj(hUhjdubaubh)rk}rl(hXsimpy.resources.store.hjZh!hh&hh(}rm(h*]h+]h,]h-]h1]uh3Nh4hh5]rnhDXsimpy.resources.store.rorp}rq(hUhjkubaubh)rr}rs(hjbhjZh!hh&hh(}rt(h*]h+]h,]h-]h1]uh3Nh4hh5]ruhDX FilterStorervrw}rx(hUhjrubaubh)ry}rz(hUhjZh!hh&hh(}r{(h*]h+]h,]h-]h1]uh3Nh4hh5]r|(h)r}}r~(hXenvh(}r(h*]h+]h,]h-]h1]uhjyh5]rhDXenvrr}r(hUhj}ubah&hubh)r}r(hX capacity=infh(}r(h*]h+]h,]h-]h1]uhjyh5]rhDX capacity=infrr}r(hUhjubah&hubeubeubj)r}r(hUhjUh!hh&jh(}r(h*]h+]h,]h-]h1]uh3Nh4hh5]r(hV)r}r(hXpThe *FilterStore* subclasses :class:`Store` and allows you to only get items that match a user-defined criteria.hjh!Xt/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/store.py:docstring of simpy.resources.store.FilterStorerh&hZh(}r(h*]h+]h,]h-]h1]uh3Kh4hh5]r(hDXThe rr}r(hXThe hjubj)r}r(hX *FilterStore*h(}r(h*]h+]h,]h-]h1]uhjh5]rhDX FilterStorerr}r(hUhjubah&j'ubhDX subclasses rr}r(hX subclasses hjubh`)r}r(hX:class:`Store`rhjh!h$h&hdh(}r(UreftypeXclasshfhgXStoreU refdomainXpyrh-]h,]U refexplicith*]h+]h1]hihjhkjbhlhmuh3Kh5]rh>)r}r(hjh(}r(h*]h+]r(hsjXpy-classreh,]h-]h1]uhjh5]rhDXStorerr}r(hUhjubah&hHubaubhDXE and allows you to only get items that match a user-defined criteria.rr}r(hXE and allows you to only get items that match a user-defined criteria.hjubeubhV)r}r(hXThis criteria is defined via a filter function that is passed to :meth:`get()`. :meth:`get()` only considers items for which this function returns ``True``.hjh!jh&hZh(}r(h*]h+]h,]h-]h1]uh3Kh4hh5]r(hDXAThis criteria is defined via a filter function that is passed to rr}r(hXAThis criteria is defined via a filter function that is passed to hjubh`)r}r(hX :meth:`get()`rhjh!h$h&hdh(}r(UreftypeXmethhfhgXgetU refdomainXpyrh-]h,]U refexplicith*]h+]h1]hihjhkjbhlhmuh3Kh5]rh>)r}r(hjh(}r(h*]h+]r(hsjXpy-methreh,]h-]h1]uhjh5]rhDXget()rr}r(hUhjubah&hHubaubhDX. rr}r(hX. hjubh`)r}r(hX :meth:`get()`rhjh!h$h&hdh(}r(UreftypeXmethhfhgXgetU refdomainXpyrh-]h,]U refexplicith*]h+]h1]hihjhkjbhlhmuh3Kh5]rh>)r}r(hjh(}r(h*]h+]r(hsjXpy-methreh,]h-]h1]uhjh5]rhDXget()rr}r(hUhjubah&hHubaubhDX6 only considers items for which this function returns rr}r(hX6 only considers items for which this function returns hjubh>)r}r(hX``True``h(}r(h*]h+]h,]h-]h1]uhjh5]rhDXTruerr}r(hUhjubah&hHubhDX.r}r(hX.hjubeubcdocutils.nodes note r)r}r(hXIn contrast to :class:`Store`, processes trying to get an item from :class:`FilterStore` won't necessarily be processed in the same order that they made the request. *Example:* The store is empty. *Process 1* tries to get an item of type *a*, *Process 2* an item of type *b*. Another process puts one item of type *b* into the store. Though *Process 2* made his request after *Process 1*, it will receive that new item because *Process 1* doesn't want it.hjh!jh&Unoterh(}r(h*]h+]h,]h-]h1]uh3Nh4hh5]r(hV)r}r(hXIn contrast to :class:`Store`, processes trying to get an item from :class:`FilterStore` won't necessarily be processed in the same order that they made the request.hjh!jh&hZh(}r(h*]h+]h,]h-]h1]uh3K h5]r(hDXIn contrast to rr}r(hXIn contrast to hjubh`)r}r(hX:class:`Store`rhjh!h$h&hdh(}r(UreftypeXclasshfhgXStoreU refdomainXpyrh-]h,]U refexplicith*]h+]h1]hihjhkjbhlhmuh3Kh5]rh>)r}r(hjh(}r(h*]h+]r(hsjXpy-classreh,]h-]h1]uhjh5]rhDXStorerr}r(hUhjubah&hHubaubhDX', processes trying to get an item from rr}r(hX', processes trying to get an item from hjubh`)r}r(hX:class:`FilterStore`rhjh!h$h&hdh(}r (UreftypeXclasshfhgX FilterStoreU refdomainXpyr h-]h,]U refexplicith*]h+]h1]hihjhkjbhlhmuh3Kh5]r h>)r }r (hjh(}r(h*]h+]r(hsj Xpy-classreh,]h-]h1]uhjh5]rhDX FilterStorerr}r(hUhj ubah&hHubaubhDXM won't necessarily be processed in the same order that they made the request.rr}r(hXM won't necessarily be processed in the same order that they made the request.hjubeubhV)r}r(hX!*Example:* The store is empty. *Process 1* tries to get an item of type *a*, *Process 2* an item of type *b*. Another process puts one item of type *b* into the store. Though *Process 2* made his request after *Process 1*, it will receive that new item because *Process 1* doesn't want it.hjh!jh&hZh(}r(h*]h+]h,]h-]h1]uh3Kh5]r(j)r}r(hX *Example:*h(}r(h*]h+]h,]h-]h1]uhjh5]rhDXExample:r r!}r"(hUhjubah&j'ubhDX The store is empty. r#r$}r%(hX The store is empty. hjubj)r&}r'(hX *Process 1*h(}r((h*]h+]h,]h-]h1]uhjh5]r)hDX Process 1r*r+}r,(hUhj&ubah&j'ubhDX tries to get an item of type r-r.}r/(hX tries to get an item of type hjubj)r0}r1(hX*a*h(}r2(h*]h+]h,]h-]h1]uhjh5]r3hDXar4}r5(hUhj0ubah&j'ubhDX, r6r7}r8(hX, hjubj)r9}r:(hX *Process 2*h(}r;(h*]h+]h,]h-]h1]uhjh5]r<hDX Process 2r=r>}r?(hUhj9ubah&j'ubhDX an item of type r@rA}rB(hX an item of type hjubj)rC}rD(hX*b*h(}rE(h*]h+]h,]h-]h1]uhjh5]rFhDXbrG}rH(hUhjCubah&j'ubhDX(. Another process puts one item of type rIrJ}rK(hX(. Another process puts one item of type hjubj)rL}rM(hX*b*h(}rN(h*]h+]h,]h-]h1]uhjh5]rOhDXbrP}rQ(hUhjLubah&j'ubhDX into the store. Though rRrS}rT(hX into the store. Though hjubj)rU}rV(hX *Process 2*h(}rW(h*]h+]h,]h-]h1]uhjh5]rXhDX Process 2rYrZ}r[(hUhjUubah&j'ubhDX made his request after r\r]}r^(hX made his request after hjubj)r_}r`(hX *Process 1*h(}ra(h*]h+]h,]h-]h1]uhjh5]rbhDX Process 1rcrd}re(hUhj_ubah&j'ubhDX(, it will receive that new item because rfrg}rh(hX(, it will receive that new item because hjubj)ri}rj(hX *Process 1*h(}rk(h*]h+]h,]h-]h1]uhjh5]rlhDX Process 1rmrn}ro(hUhjiubah&j'ubhDX doesn't want it.rprq}rr(hX doesn't want it.hjubeubeubhM)rs}rt(hUhjh!Uh&hQh(}ru(h-]h,]h*]h+]h1]Uentries]rv(hTX6GetQueue (simpy.resources.store.FilterStore attribute)hUtrwauh3Nh4hh5]ubh)rx}ry(hUhjh!Uh&hh(}rz(hhXpyh-]h,]h*]h+]h1]hX attributer{hj{uh3Nh4hh5]r|(h)r}}r~(hXFilterStore.GetQueuehjxh!hh&hh(}r(h-]rhahh"Xsimpy.resources.storerr}rbh,]h*]h+]h1]rhahXFilterStore.GetQueuehjbhΉuh3Nh4hh5]rh)r}r(hXGetQueuehj}h!hh&hh(}r(h*]h+]h,]h-]h1]uh3Nh4hh5]rhDXGetQueuerr}r(hUhjubaubaubj)r}r(hUhjxh!hh&jh(}r(h*]h+]h,]h-]h1]uh3Nh4hh5]r(hV)r}r(hXQThe type to be used for the :attr:`~simpy.resources.base.BaseResource.get_queue`.hjh!X}/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/store.py:docstring of simpy.resources.store.FilterStore.GetQueuerh&hZh(}r(h*]h+]h,]h-]h1]uh3Kh4hh5]r(hDXThe type to be used for the rr}r(hXThe type to be used for the hjubh`)r}r(hX4:attr:`~simpy.resources.base.BaseResource.get_queue`rhjh!Nh&hdh(}r(UreftypeXattrhfhgX+simpy.resources.base.BaseResource.get_queueU refdomainXpyrh-]h,]U refexplicith*]h+]h1]hihjhkjbhlhmuh3Nh5]rh>)r}r(hjh(}r(h*]h+]r(hsjXpy-attrreh,]h-]h1]uhjh5]rhDX get_queuerr}r(hUhjubah&hHubaubhDX.r}r(hX.hjubeubhV)r}r(hXalias of :class:`FilterQueue`hjh!Uh&hZh(}r(h*]h+]h,]h-]h1]uh3Kh4hh5]r(hDX alias of rr}r(hX alias of hjubh`)r}r(hX:class:`FilterQueue`rhjh!Nh&hdh(}r(UreftypeXclasshfhgX FilterQueueU refdomainXpyrh-]h,]U refexplicith*]h+]h1]hihjhkjbhlhmuh3Nh5]rh>)r}r(hjh(}r(h*]h+]r(hsjXpy-classreh,]h-]h1]uhjh5]rhDX FilterQueuerr}r(hUhjubah&hHubaubeubeubeubhM)r}r(hUhjh!Uh&hQh(}r(h-]h,]h*]h+]h1]Uentries]r(hTX1get (simpy.resources.store.FilterStore attribute)hUtrauh3Nh4hh5]ubh)r}r(hUhjh!Uh&hh(}r(hhXpyh-]h,]h*]h+]h1]hX attributerhjuh3Nh4hh5]r(h)r}r(hXFilterStore.gethjh!hh&hh(}r(h-]rhahh"Xsimpy.resources.storerr}rbh,]h*]h+]h1]rhahXFilterStore.gethjbhΉuh3Nh4hh5]rh)r}r(hXgethjh!hh&hh(}r(h*]h+]h,]h-]h1]uh3Nh4hh5]rhDXgetrr}r(hUhjubaubaubj)r}r(hUhjh!hh&jh(}r(h*]h+]h,]h-]h1]uh3Nh4hh5]r(hV)r}r(hX+Create a new :class:`FilterStoreGet` event.hjh!Xx/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/store.py:docstring of simpy.resources.store.FilterStore.getrh&hZh(}r(h*]h+]h,]h-]h1]uh3Kh4hh5]r(hDX Create a new rr}r(hX Create a new hjubh`)r}r(hX:class:`FilterStoreGet`rhjh!Nh&hdh(}r(UreftypeXclasshfhgXFilterStoreGetU refdomainXpyrh-]h,]U refexplicith*]h+]h1]hihjhkjbhlhmuh3Nh5]rh>)r}r(hjh(}r(h*]h+]r(hsjXpy-classreh,]h-]h1]uhjh5]rhDXFilterStoreGetrr}r(hUhjubah&hHubaubhDX event.rr}r(hX event.hjubeubhV)r}r(hX alias of :class:`FilterStoreGet`hjh!Uh&hZh(}r(h*]h+]h,]h-]h1]uh3Kh4hh5]r(hDX alias of rr}r(hX alias of hjubh`)r}r(hX:class:`FilterStoreGet`rhjh!Nh&hdh(}r(UreftypeXclasshfhgXFilterStoreGetU refdomainXpyrh-]h,]U refexplicith*]h+]h1]hihjhkjbhlhmuh3Nh5]rh>)r}r(hjh(}r(h*]h+]r(hsjXpy-classr eh,]h-]h1]uhjh5]r hDXFilterStoreGetr r }r (hUhjubah&hHubaubeubeubeubeubeubhM)r}r(hUhhh!Nh&hQh(}r(h-]h,]h*]h+]h1]Uentries]r(hTX)StorePut (class in simpy.resources.store)h Utrauh3Nh4hh5]ubh)r}r(hUhhh!Nh&hh(}r(hhXpyh-]h,]h*]h+]h1]hXclassrhjuh3Nh4hh5]r(h)r}r(hXStorePut(resource, item)hjh!hh&hh(}r(h-]rh ahh"Xsimpy.resources.storerr}rbh,]h*]h+]h1]rh ahXStorePutr hUhΉuh3Nh4hh5]r!(h)r"}r#(hXclass hjh!hh&hh(}r$(h*]h+]h,]h-]h1]uh3Nh4hh5]r%hDXclass r&r'}r((hUhj"ubaubh)r)}r*(hXsimpy.resources.store.hjh!hh&hh(}r+(h*]h+]h,]h-]h1]uh3Nh4hh5]r,hDXsimpy.resources.store.r-r.}r/(hUhj)ubaubh)r0}r1(hj hjh!hh&hh(}r2(h*]h+]h,]h-]h1]uh3Nh4hh5]r3hDXStorePutr4r5}r6(hUhj0ubaubh)r7}r8(hUhjh!hh&hh(}r9(h*]h+]h,]h-]h1]uh3Nh4hh5]r:(h)r;}r<(hXresourceh(}r=(h*]h+]h,]h-]h1]uhj7h5]r>hDXresourcer?r@}rA(hUhj;ubah&hubh)rB}rC(hXitemh(}rD(h*]h+]h,]h-]h1]uhj7h5]rEhDXitemrFrG}rH(hUhjBubah&hubeubeubj)rI}rJ(hUhjh!hh&jh(}rK(h*]h+]h,]h-]h1]uh3Nh4hh5]rL(hV)rM}rN(hX:Put *item* into the store if possible or wait until it is.hjIh!Xq/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/store.py:docstring of simpy.resources.store.StorePutrOh&hZh(}rP(h*]h+]h,]h-]h1]uh3Kh4hh5]rQ(hDXPut rRrS}rT(hXPut hjMubj)rU}rV(hX*item*h(}rW(h*]h+]h,]h-]h1]uhjMh5]rXhDXitemrYrZ}r[(hUhjUubah&j'ubhDX0 into the store if possible or wait until it is.r\r]}r^(hX0 into the store if possible or wait until it is.hjMubeubhM)r_}r`(hUhjIh!Xv/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/store.py:docstring of simpy.resources.store.StorePut.itemrah&hQh(}rb(h-]h,]h*]h+]h1]Uentries]rc(hTX/item (simpy.resources.store.StorePut attribute)hUtrdauh3Nh4hh5]ubh)re}rf(hUhjIh!jah&hh(}rg(hhXpyh-]h,]h*]h+]h1]hX attributerhhjhuh3Nh4hh5]ri(h)rj}rk(hX StorePut.itemhjeh!jmh&hh(}rl(h-]rmhahh"Xsimpy.resources.storernro}rpbh,]h*]h+]h1]rqhahX StorePut.itemhj hΉuh3Nh4hh5]rr(h)rs}rt(hXitemhjjh!jmh&hh(}ru(h*]h+]h,]h-]h1]uh3Nh4hh5]rvhDXitemrwrx}ry(hUhjsubaubh)rz}r{(hX = Nonehjjh!jmh&hh(}r|(h*]h+]h,]h-]h1]uh3Nh4hh5]r}hDX = Noner~r}r(hUhjzubaubeubj)r}r(hUhjeh!jmh&jh(}r(h*]h+]h,]h-]h1]uh3Nh4hh5]rhV)r}r(hXThe item to put into the store.rhjh!jah&hZh(}r(h*]h+]h,]h-]h1]uh3Kh4hh5]rhDXThe item to put into the store.rr}r(hjhjubaubaubeubeubeubhM)r}r(hUhhh!Xq/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/store.py:docstring of simpy.resources.store.StoreGetrh&hQh(}r(h-]h,]h*]h+]h1]Uentries]r(hTX)StoreGet (class in simpy.resources.store)hUtrauh3Nh4hh5]ubh)r}r(hUhhh!jh&hh(}r(hhXpyh-]h,]h*]h+]h1]hXclassrhjuh3Nh4hh5]r(h)r}r(hXStoreGet(resource)hjh!hh&hh(}r(h-]rhahh"Xsimpy.resources.storerr}rbh,]h*]h+]h1]rhahXStoreGetrhUhΉuh3Nh4hh5]r(h)r}r(hXclass hjh!hh&hh(}r(h*]h+]h,]h-]h1]uh3Nh4hh5]rhDXclass rr}r(hUhjubaubh)r}r(hXsimpy.resources.store.hjh!hh&hh(}r(h*]h+]h,]h-]h1]uh3Nh4hh5]rhDXsimpy.resources.store.rr}r(hUhjubaubh)r}r(hjhjh!hh&hh(}r(h*]h+]h,]h-]h1]uh3Nh4hh5]rhDXStoreGetrr}r(hUhjubaubh)r}r(hUhjh!hh&hh(}r(h*]h+]h,]h-]h1]uh3Nh4hh5]rh)r}r(hXresourceh(}r(h*]h+]h,]h-]h1]uhjh5]rhDXresourcerr}r(hUhjubah&hubaubeubj)r}r(hUhjh!hh&jh(}r(h*]h+]h,]h-]h1]uh3Nh4hh5]rhV)r}r(hX:Get an item from the store or wait until one is available.rhjh!jh&hZh(}r(h*]h+]h,]h-]h1]uh3Kh4hh5]rhDX:Get an item from the store or wait until one is available.rr}r(hjhjubaubaubeubhM)r}r(hUhhh!Nh&hQh(}r(h-]h,]h*]h+]h1]Uentries]r(hTX/FilterStoreGet (class in simpy.resources.store)hUtrauh3Nh4hh5]ubh)r}r(hUhhh!Nh&hh(}r(hhXpyh-]h,]h*]h+]h1]hXclassrhjuh3Nh4hh5]r(h)r}r(hX2FilterStoreGet(resource, filter=lambda item: True)hjh!hh&hh(}r(h-]rhahh"Xsimpy.resources.storerr}rbh,]h*]h+]h1]rhahXFilterStoreGetrhUhΉuh3Nh4hh5]r(h)r}r(hXclass hjh!hh&hh(}r(h*]h+]h,]h-]h1]uh3Nh4hh5]rhDXclass rr}r(hUhjubaubh)r}r(hXsimpy.resources.store.hjh!hh&hh(}r(h*]h+]h,]h-]h1]uh3Nh4hh5]rhDXsimpy.resources.store.rr}r(hUhjubaubh)r}r(hjhjh!hh&hh(}r(h*]h+]h,]h-]h1]uh3Nh4hh5]rhDXFilterStoreGetrr}r(hUhjubaubh)r}r(hUhjh!hh&hh(}r(h*]h+]h,]h-]h1]uh3Nh4hh5]r(h)r}r(hXresourceh(}r(h*]h+]h,]h-]h1]uhjh5]rhDXresourcerr}r(hUhjubah&hubh)r}r(hXfilter=lambda item: Trueh(}r(h*]h+]h,]h-]h1]uhjh5]rhDXfilter=lambda item: Truerr}r(hUhjubah&hubeubeubj)r }r (hUhjh!hh&jh(}r (h*]h+]h,]h-]h1]uh3Nh4hh5]r (hV)r }r(hXyGet an item from the store for which *filter* returns ``True``. This event is triggered once such an event is available.hj h!Xw/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/store.py:docstring of simpy.resources.store.FilterStoreGetrh&hZh(}r(h*]h+]h,]h-]h1]uh3Kh4hh5]r(hDX%Get an item from the store for which rr}r(hX%Get an item from the store for which hj ubj)r}r(hX*filter*h(}r(h*]h+]h,]h-]h1]uhj h5]rhDXfilterrr}r(hUhjubah&j'ubhDX returns rr}r(hX returns hj ubh>)r}r (hX``True``h(}r!(h*]h+]h,]h-]h1]uhj h5]r"hDXTruer#r$}r%(hUhjubah&hHubhDX;. This event is triggered once such an event is available.r&r'}r((hX;. This event is triggered once such an event is available.hj ubeubhV)r)}r*(hXyThe default *filter* function returns ``True`` for all items, and thus this event exactly behaves like :class:`StoreGet`.hj h!jh&hZh(}r+(h*]h+]h,]h-]h1]uh3Kh4hh5]r,(hDX The default r-r.}r/(hX The default hj)ubj)r0}r1(hX*filter*h(}r2(h*]h+]h,]h-]h1]uhj)h5]r3hDXfilterr4r5}r6(hUhj0ubah&j'ubhDX function returns r7r8}r9(hX function returns hj)ubh>)r:}r;(hX``True``h(}r<(h*]h+]h,]h-]h1]uhj)h5]r=hDXTruer>r?}r@(hUhj:ubah&hHubhDX9 for all items, and thus this event exactly behaves like rArB}rC(hX9 for all items, and thus this event exactly behaves like hj)ubh`)rD}rE(hX:class:`StoreGet`rFhj)h!h$h&hdh(}rG(UreftypeXclasshfhgXStoreGetU refdomainXpyrHh-]h,]U refexplicith*]h+]h1]hihjhkjhlhmuh3Kh5]rIh>)rJ}rK(hjFh(}rL(h*]h+]rM(hsjHXpy-classrNeh,]h-]h1]uhjDh5]rOhDXStoreGetrPrQ}rR(hUhjJubah&hHubaubhDX.rS}rT(hX.hj)ubeubhM)rU}rV(hUhj h!X~/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/store.py:docstring of simpy.resources.store.FilterStoreGet.filterrWh&hQh(}rX(h-]h,]h*]h+]h1]Uentries]rY(hTX7filter (simpy.resources.store.FilterStoreGet attribute)hUtrZauh3Nh4hh5]ubh)r[}r\(hUhj h!jWh&hh(}r](hhXpyh-]h,]h*]h+]h1]hX attributer^hj^uh3Nh4hh5]r_(h)r`}ra(hXFilterStoreGet.filterrbhj[h!jmh&hh(}rc(h-]rdhahh"Xsimpy.resources.storererf}rgbh,]h*]h+]h1]rhhahXFilterStoreGet.filterhjhΉuh3Nh4hh5]ri(h)rj}rk(hXfilterhj`h!jmh&hh(}rl(h*]h+]h,]h-]h1]uh3Nh4hh5]rmhDXfilterrnro}rp(hUhjjubaubh)rq}rr(hX = Nonehj`h!jmh&hh(}rs(h*]h+]h,]h-]h1]uh3Nh4hh5]rthDX = Nonerurv}rw(hUhjqubaubeubj)rx}ry(hUhj[h!jmh&jh(}rz(h*]h+]h,]h-]h1]uh3Nh4hh5]r{hV)r|}r}(hXThe filter function to use.r~hjxh!jWh&hZh(}r(h*]h+]h,]h-]h1]uh3Kh4hh5]rhDXThe filter function to use.rr}r(hj~hj|ubaubaubeubeubeubhM)r}r(hUhhh!Xt/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/store.py:docstring of simpy.resources.store.FilterQueuerh&hQh(}r(h-]h,]h*]h+]h1]Uentries]r(hTX,FilterQueue (class in simpy.resources.store)hUtrauh3Nh4hh5]ubh)r}r(hUhhh!jh&hh(}r(hhXpyh-]h,]h*]h+]h1]hXclassrhjuh3Nh4hh5]r(h)r}r(hX FilterQueue()rhjh!hh&hh(}r(h-]rhahh"Xsimpy.resources.storerr}rbh,]h*]h+]h1]rhahX FilterQueuerhUhΉuh3Nh4hh5]r(h)r}r(hXclass hjh!hh&hh(}r(h*]h+]h,]h-]h1]uh3Nh4hh5]rhDXclass rr}r(hUhjubaubh)r}r(hXsimpy.resources.store.hjh!hh&hh(}r(h*]h+]h,]h-]h1]uh3Nh4hh5]rhDXsimpy.resources.store.rr}r(hUhjubaubh)r}r(hjhjh!hh&hh(}r(h*]h+]h,]h-]h1]uh3Nh4hh5]rhDX FilterQueuerr}r(hUhjubaubeubj)r}r(hUhjh!hh&jh(}r(h*]h+]h,]h-]h1]uh3Nh4hh5]rhV)r}r(hX]A queue that only lists those events for which there is an item in the corresponding *store*.hjh!jh&hZh(}r(h*]h+]h,]h-]h1]uh3Kh4hh5]r(hDXUA queue that only lists those events for which there is an item in the corresponding rr}r(hXUA queue that only lists those events for which there is an item in the corresponding hjubj)r}r(hX*store*h(}r(h*]h+]h,]h-]h1]uhjh5]rhDXstorerr}r(hUhjubah&j'ubhDX.r}r(hX.hjubeubaubeubeubh!Nh&Usystem_messagerh(}r(h*]UlevelKh-]h,]Usourceh$h+]h1]UlineKUtypeUWARNINGruh3Nh4hh5]rhV)r}r(hUh(}r(h*]h+]h,]h-]h1]uhhh5]rhDXImissing attribute __getitem__ in object simpy.resources.store.FilterQueuerr}r(hUhjubah&hZubaubh)r}r(hUhhh!Nh&jh(}r(h*]UlevelKh-]h,]Usourceh$h+]h1]UlineKUtypejuh3Nh4hh5]rhV)r}r(hUh(}r(h*]h+]h,]h-]h1]uhjh5]rhDXFmissing attribute __bool__ in object simpy.resources.store.FilterQueuerr}r(hUhjubah&hZubaubh)r}r(hUhhh!Nh&jh(}r(h*]UlevelKh-]h,]Usourceh$h+]h1]UlineKUtypejuh3Nh4hh5]rhV)r}r(hUh(}r(h*]h+]h,]h-]h1]uhjh5]rhDXImissing attribute __nonzero__ in object simpy.resources.store.FilterQueuerr}r(hUhjubah&hZubaubeUcurrent_sourcerNU decorationrNUautofootnote_startrKUnameidsr}r(hh0hhhhh h h h h h h h h h hhhhhhhhhhhhhhuh5]rhahUU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh4hU current_linerNUtransform_messagesr]rUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/r U tracebackr Upep_referencesr NUstrip_commentsr NU toc_backlinksr UentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh;NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templater Upep-%04dr!Uexit_status_levelr"KUconfigr#NUstrict_visitorr$NUcloak_email_addressesr%Utrim_footnote_reference_spacer&Uenvr'NUdump_pseudo_xmlr(NUexpose_internalsr)NUsectsubtitle_xformr*U source_linkr+NUrfc_referencesr,NUoutput_encodingr-Uutf-8r.U source_urlr/NUinput_encodingr0U utf-8-sigr1U_disable_configr2NU id_prefixr3UU tab_widthr4KUerror_encodingr5UUTF-8r6U_sourcer7UY/var/build/user_builds/simpy/checkouts/3.0.5/docs/api_reference/simpy.resources.store.rstr8Ugettext_compactr9U generatorr:NUdump_internalsr;NU smart_quotesr<U pep_base_urlr=Uhttp://www.python.org/dev/peps/r>Usyntax_highlightr?Ulongr@Uinput_encoding_error_handlerrAjUauto_id_prefixrBUidrCUdoctitle_xformrDUstrip_elements_with_classesrENU _config_filesrF]Ufile_insertion_enabledrGU raw_enabledrHKU dump_settingsrINubUsymbol_footnote_startrJKUidsrK}rL(hj`hjh hh jh j h jh/cdocutils.nodes target rM)rN}rO(hUhhh!hPh&UtargetrPh(}rQ(h*]h-]rRh/ah,]Uismodh+]h1]uh3Kh4hh5]ubh jkhjhjh0hhjjhjhj}hjhjZuUsubstitution_namesrS}rTh&h4h(}rU(h*]h-]h,]Usourceh$h+]h1]uU footnotesrV]rWUrefidsrX}rYub.PK.D٥ه@@1simpy-3.0.5/.doctrees/api_reference/simpy.doctreecdocutils.nodes document q)q}q(U nametypesq}q(Xsimpy --- the end user apiqNXpy.testqXotherqNXcore classes and functionsq NX simpy.testq X resourcesq NuUsubstitution_defsq }q Uparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hUsimpy-the-end-user-apiqhUpy-testqhUotherqh Ucore-classes-and-functionsqh h h U resourcesquUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentq hUsourceq!cdocutils.nodes reprunicode q"XI/var/build/user_builds/simpy/checkouts/3.0.5/docs/api_reference/simpy.rstq#q$}q%bUtagnameq&Usectionq'U attributesq(}q)(Udupnamesq*]Uclassesq+]Ubackrefsq,]Uidsq-]q.(X module-simpyq/heUnamesq0]q1hauUlineq2KUdocumentq3hh]q4(cdocutils.nodes title q5)q6}q7(hX``simpy`` --- The end user APIq8h hh!h$h&Utitleq9h(}q:(h*]h+]h,]h-]h0]uh2Kh3hh]q;(cdocutils.nodes literal q<)q=}q>(hX ``simpy``q?h(}q@(h*]h+]h,]h-]h0]uh h6h]qAcdocutils.nodes Text qBXsimpyqCqD}qE(hUh h=ubah&UliteralqFubhBX --- The end user APIqGqH}qI(hX --- The end user APIqJh h6ubeubcsphinx.addnodes index qK)qL}qM(hUh hh!U qNh&UindexqOh(}qP(h-]h,]h*]h+]h0]Uentries]qQ(UsingleqRXsimpy (module)X module-simpyUtqSauh2Kh3hh]ubcdocutils.nodes paragraph qT)qU}qV(hXThe ``simpy`` module provides SimPy's end-user API. It aggregates Simpy's most important classes and methods. This is purely for your convenience. You can of course also access everything (and more!) via their actual submodules.h hh!XQ/var/build/user_builds/simpy/checkouts/3.0.5/simpy/__init__.py:docstring of simpyqWh&U paragraphqXh(}qY(h*]h+]h,]h-]h0]uh2Kh3hh]qZ(hBXThe q[q\}q](hXThe h hUubh<)q^}q_(hX ``simpy``h(}q`(h*]h+]h,]h-]h0]uh hUh]qahBXsimpyqbqc}qd(hUh h^ubah&hFubhBX module provides SimPy's end-user API. It aggregates Simpy's most important classes and methods. This is purely for your convenience. You can of course also access everything (and more!) via their actual submodules.qeqf}qg(hX module provides SimPy's end-user API. It aggregates Simpy's most important classes and methods. This is purely for your convenience. You can of course also access everything (and more!) via their actual submodules.h hUubeubh)qh}qi(hUh hh!hWh&h'h(}qj(h*]h+]h,]h-]qkhah0]qlh auh2Kh3hh]qm(h5)qn}qo(hXCore classes and functionsqph hhh!hWh&h9h(}qq(h*]h+]h,]h-]h0]uh2Kh3hh]qrhBXCore classes and functionsqsqt}qu(hhph hnubaubcdocutils.nodes bullet_list qv)qw}qx(hUh hhh!hWh&U bullet_listqyh(}qz(Ubulletq{X-h-]h,]h*]h+]h0]uh2K h3hh]q|cdocutils.nodes list_item q})q~}q(hX:class:`Environment`: SimPy's central class. It contains the simulation's state and lets the PEMs interact with it (i.e., schedule events). h hwh!hWh&U list_itemqh(}q(h*]h+]h,]h-]h0]uh2Nh3hh]qhT)q}q(hX:class:`Environment`: SimPy's central class. It contains the simulation's state and lets the PEMs interact with it (i.e., schedule events).h h~h!hWh&hXh(}q(h*]h+]h,]h-]h0]uh2K h]q(csphinx.addnodes pending_xref q)q}q(hX:class:`Environment`qh hh!Nh&U pending_xrefqh(}q(UreftypeXclassUrefwarnqU reftargetqX EnvironmentU refdomainXpyqh-]h,]U refexplicith*]h+]h0]UrefdocqXapi_reference/simpyqUpy:classqNU py:moduleqX simpy.coreuh2Nh]qh<)q}q(hhh(}q(h*]h+]q(UxrefqhXpy-classqeh,]h-]h0]uh hh]qhBX Environmentqq}q(hUh hubah&hFubaubhBXw: SimPy's central class. It contains the simulation's state and lets the PEMs interact with it (i.e., schedule events).qq}q(hXw: SimPy's central class. It contains the simulation's state and lets the PEMs interact with it (i.e., schedule events).h hubeubaubaubhv)q}q(hUh hhh!hWh&hyh(}q(h{X-h-]h,]h*]h+]h0]uh2Kh3hh]qh})q}q(hXd:class:`Interrupt`: This exception is thrown into a process if it gets interrupted by another one. h hh!hWh&hh(}q(h*]h+]h,]h-]h0]uh2Nh3hh]qhT)q}q(hXb:class:`Interrupt`: This exception is thrown into a process if it gets interrupted by another one.h hh!hWh&hXh(}q(h*]h+]h,]h-]h0]uh2Kh]q(h)q}q(hX:class:`Interrupt`qh hh!Nh&hh(}q(UreftypeXclasshhX InterruptU refdomainXpyqh-]h,]U refexplicith*]h+]h0]hhhNhX simpy.eventsuh2Nh]qh<)q}q(hhh(}q(h*]h+]q(hhXpy-classqeh,]h-]h0]uh hh]qhBX Interruptqq}q(hUh hubah&hFubaubhBXP: This exception is thrown into a process if it gets interrupted by another one.qq}q(hXP: This exception is thrown into a process if it gets interrupted by another one.h hubeubaubaubeubh)q}q(hUh hh!hWh&h'h(}q(h*]h+]h,]h-]qhah0]qh auh2Kh3hh]q(h5)q}q(hX Resourcesqh hh!hWh&h9h(}q(h*]h+]h,]h-]h0]uh2Kh3hh]qhBX Resourcesq˅q}q(hhh hubaubhv)q}q(hUh hh!hWh&hyh(}q(h{X-h-]h,]h*]h+]h0]uh2Kh3hh]q(h})q}q(hX:class:`Resource`: Can be used by a limited number of processes at a time (e.g., a gas station with a limited number of fuel pumps). h hh!hWh&hh(}q(h*]h+]h,]h-]h0]uh2Nh3hh]qhT)q}q(hX:class:`Resource`: Can be used by a limited number of processes at a time (e.g., a gas station with a limited number of fuel pumps).h hh!hWh&hXh(}q(h*]h+]h,]h-]h0]uh2Kh]q(h)q}q(hX:class:`Resource`qh hh!Nh&hh(}q(UreftypeXclasshhXResourceU refdomainXpyqh-]h,]U refexplicith*]h+]h0]hhhNhXsimpy.resources.resourcequh2Nh]qh<)q}q(hhh(}q(h*]h+]q(hhXpy-classqeh,]h-]h0]uh hh]qhBXResourceq煁q}q(hUh hubah&hFubaubhBXs: Can be used by a limited number of processes at a time (e.g., a gas station with a limited number of fuel pumps).qꅁq}q(hXs: Can be used by a limited number of processes at a time (e.g., a gas station with a limited number of fuel pumps).h hubeubaubh})q}q(hXa:class:`PriorityResource`: Like :class:`Resource`, but waiting processes are sorted by priority. h hh!hWh&hh(}q(h*]h+]h,]h-]h0]uh2Nh3hh]qhT)q}q(hX`:class:`PriorityResource`: Like :class:`Resource`, but waiting processes are sorted by priority.h hh!hWh&hXh(}q(h*]h+]h,]h-]h0]uh2Kh]q(h)q}q(hX:class:`PriorityResource`qh hh!Nh&hh(}q(UreftypeXclasshhXPriorityResourceU refdomainXpyqh-]h,]U refexplicith*]h+]h0]hhhNhhuh2Nh]qh<)q}q(hhh(}q(h*]h+]q(hhXpy-classqeh,]h-]h0]uh hh]rhBXPriorityResourcerr}r(hUh hubah&hFubaubhBX: Like rr}r(hX: Like h hubh)r}r(hX:class:`Resource`r h hh!Nh&hh(}r (UreftypeXclasshhXResourceU refdomainXpyr h-]h,]U refexplicith*]h+]h0]hhhNhhuh2Nh]r h<)r }r(hj h(}r(h*]h+]r(hj Xpy-classreh,]h-]h0]uh jh]rhBXResourcerr}r(hUh j ubah&hFubaubhBX/, but waiting processes are sorted by priority.rr}r(hX/, but waiting processes are sorted by priority.h hubeubaubh})r}r(hXK:class:`PreemptiveResource`: Version of :class:`Resource` with preemption. h hh!hWh&hh(}r(h*]h+]h,]h-]h0]uh2Nh3hh]rhT)r}r(hXJ:class:`PreemptiveResource`: Version of :class:`Resource` with preemption.h jh!hWh&hXh(}r(h*]h+]h,]h-]h0]uh2K h]r (h)r!}r"(hX:class:`PreemptiveResource`r#h jh!Nh&hh(}r$(UreftypeXclasshhXPreemptiveResourceU refdomainXpyr%h-]h,]U refexplicith*]h+]h0]hhhNhhuh2Nh]r&h<)r'}r((hj#h(}r)(h*]h+]r*(hj%Xpy-classr+eh,]h-]h0]uh j!h]r,hBXPreemptiveResourcer-r.}r/(hUh j'ubah&hFubaubhBX : Version of r0r1}r2(hX : Version of h jubh)r3}r4(hX:class:`Resource`r5h jh!Nh&hh(}r6(UreftypeXclasshhXResourceU refdomainXpyr7h-]h,]U refexplicith*]h+]h0]hhhNhhuh2Nh]r8h<)r9}r:(hj5h(}r;(h*]h+]r<(hj7Xpy-classr=eh,]h-]h0]uh j3h]r>hBXResourcer?r@}rA(hUh j9ubah&hFubaubhBX with preemption.rBrC}rD(hX with preemption.h jubeubaubeubhv)rE}rF(hUh hh!hWh&hyh(}rG(h{X-h-]h,]h*]h+]h0]uh2K%h3hh]rHh})rI}rJ(hX:class:`Container`: Models the production and consumption of a homogeneous, undifferentiated bulk. It may either be continuous (like water) or discrete (like apples). h jEh!hWh&hh(}rK(h*]h+]h,]h-]h0]uh2Nh3hh]rLhT)rM}rN(hX:class:`Container`: Models the production and consumption of a homogeneous, undifferentiated bulk. It may either be continuous (like water) or discrete (like apples).h jIh!hWh&hXh(}rO(h*]h+]h,]h-]h0]uh2K%h]rP(h)rQ}rR(hX:class:`Container`rSh jMh!Nh&hh(}rT(UreftypeXclasshhX ContainerU refdomainXpyrUh-]h,]U refexplicith*]h+]h0]hhhNhXsimpy.resources.containeruh2Nh]rVh<)rW}rX(hjSh(}rY(h*]h+]rZ(hjUXpy-classr[eh,]h-]h0]uh jQh]r\hBX Containerr]r^}r_(hUh jWubah&hFubaubhBX: Models the production and consumption of a homogeneous, undifferentiated bulk. It may either be continuous (like water) or discrete (like apples).r`ra}rb(hX: Models the production and consumption of a homogeneous, undifferentiated bulk. It may either be continuous (like water) or discrete (like apples).h jMubeubaubaubhv)rc}rd(hUh hh!hWh&hyh(}re(h{X-h-]h,]h*]h+]h0]uh2K+h3hh]rf(h})rg}rh(hXR:class:`Store`: Allows the production and consumption of discrete Python objects. h jch!hWh&hh(}ri(h*]h+]h,]h-]h0]uh2Nh3hh]rjhT)rk}rl(hXQ:class:`Store`: Allows the production and consumption of discrete Python objects.h jgh!hWh&hXh(}rm(h*]h+]h,]h-]h0]uh2K+h]rn(h)ro}rp(hX:class:`Store`rqh jkh!Nh&hh(}rr(UreftypeXclasshhXStoreU refdomainXpyrsh-]h,]U refexplicith*]h+]h0]hhhNhXsimpy.resources.storertuh2Nh]ruh<)rv}rw(hjqh(}rx(h*]h+]ry(hjsXpy-classrzeh,]h-]h0]uh joh]r{hBXStorer|r}}r~(hUh jvubah&hFubaubhBXC: Allows the production and consumption of discrete Python objects.rr}r(hXC: Allows the production and consumption of discrete Python objects.h jkubeubaubh})r}r(hXt:class:`FilterStore`: Like :class:`Store`, but items taken out of it can be filtered with a user-defined function. h jch!hWh&hh(}r(h*]h+]h,]h-]h0]uh2Nh3hh]rhT)r}r(hXr:class:`FilterStore`: Like :class:`Store`, but items taken out of it can be filtered with a user-defined function.h jh!hWh&hXh(}r(h*]h+]h,]h-]h0]uh2K.h]r(h)r}r(hX:class:`FilterStore`rh jh!Nh&hh(}r(UreftypeXclasshhX FilterStoreU refdomainXpyrh-]h,]U refexplicith*]h+]h0]hhhNhjtuh2Nh]rh<)r}r(hjh(}r(h*]h+]r(hjXpy-classreh,]h-]h0]uh jh]rhBX FilterStorerr}r(hUh jubah&hFubaubhBX: Like rr}r(hX: Like h jubh)r}r(hX:class:`Store`rh jh!Nh&hh(}r(UreftypeXclasshhXStoreU refdomainXpyrh-]h,]U refexplicith*]h+]h0]hhhNhjtuh2Nh]rh<)r}r(hjh(}r(h*]h+]r(hjXpy-classreh,]h-]h0]uh jh]rhBXStorerr}r(hUh jubah&hFubaubhBXI, but items taken out of it can be filtered with a user-defined function.rr}r(hXI, but items taken out of it can be filtered with a user-defined function.h jubeubaubeubeubh)r}r(hUh hh!hWh&h'h(}r(h*]h+]h,]h-]rhah0]rhauh2K3h3hh]r(h5)r}r(hXOtherrh jh!hWh&h9h(}r(h*]h+]h,]h-]h0]uh2K3h3hh]rhBXOtherrr}r(hjh jubaubhK)r}r(hUh jh!XV/var/build/user_builds/simpy/checkouts/3.0.5/simpy/__init__.py:docstring of simpy.testrh&hOh(}r(h-]h,]h*]h+]h0]Uentries]r(hRXtest() (in module simpy)h Utrauh2Nh3hh]ubcsphinx.addnodes desc r)r}r(hUh jh!jh&Udescrh(}r(UnoindexrUdomainrXpyh-]h,]h*]h+]h0]UobjtyperXfunctionrUdesctyperjuh2Nh3hh]r(csphinx.addnodes desc_signature r)r}r(hXtest()rh jh!U rh&Udesc_signaturerh(}r(h-]rh aUmodulerh"Xsimpyrr}rbh,]h*]h+]h0]rh aUfullnamerXtestrUclassrUUfirstruh2Nh3hh]r(csphinx.addnodes desc_addname r)r}r(hXsimpy.h jh!jh&U desc_addnamerh(}r(h*]h+]h,]h-]h0]uh2Nh3hh]rhBXsimpy.rr}r(hUh jubaubcsphinx.addnodes desc_name r)r}r(hjh jh!jh&U desc_namerh(}r(h*]h+]h,]h-]h0]uh2Nh3hh]rhBXtestrr}r(hUh jubaubcsphinx.addnodes desc_parameterlist r)r}r(hUh jh!jh&Udesc_parameterlistrh(}r(h*]h+]h,]h-]h0]uh2Nh3hh]ubeubcsphinx.addnodes desc_content r)r}r(hUh jh!jh&U desc_contentrh(}r(h*]h+]h,]h-]h0]uh2Nh3hh]rhT)r}r(hXCRuns SimPy's test suite via `py.test `_.rh jh!jh&hXh(}r(h*]h+]h,]h-]h0]uh2Kh3hh]r(hBXRuns SimPy's test suite via rr}r(hXRuns SimPy's test suite via h jubcdocutils.nodes reference r)r}r(hX&`py.test `_h(}r(UnamehUrefurirXhttp://pytest.org/latest/r h-]h,]h*]h+]h0]uh jh]r hBXpy.testr r }r (hUh jubah&U referencerubcdocutils.nodes target r)r}r(hX U referencedrKh jh&Utargetrh(}r(Urefurij h-]rhah,]h*]h+]h0]rhauh]ubhBX.r}r(hX.h jubeubaubeubcdocutils.nodes comment r)r}r(hXB- :func:`test`: Run the test suite on the installed copy of Simpy.h jh!hWh&Ucommentrh(}r(U xml:spacerUpreserverh-]h,]h*]h+]h0]uh2K:h3hh]r hBXB- :func:`test`: Run the test suite on the installed copy of Simpy.r!r"}r#(hUh jubaubeubeubahUU transformerr$NU footnote_refsr%}r&Urefnamesr'}r(Usymbol_footnotesr)]r*Uautofootnote_refsr+]r,Usymbol_footnote_refsr-]r.U citationsr/]r0h3hU current_liner1NUtransform_messagesr2]r3Ureporterr4NUid_startr5KU autofootnotesr6]r7U citation_refsr8}r9Uindirect_targetsr:]r;Usettingsr<(cdocutils.frontend Values r=or>}r?(Ufootnote_backlinksr@KUrecord_dependenciesrANU rfc_base_urlrBUhttp://tools.ietf.org/html/rCU tracebackrDUpep_referencesrENUstrip_commentsrFNU toc_backlinksrGUentryrHU language_coderIUenrJU datestamprKNU report_levelrLKU _destinationrMNU halt_levelrNKU strip_classesrONh9NUerror_encoding_error_handlerrPUbackslashreplacerQUdebugrRNUembed_stylesheetrSUoutput_encoding_error_handlerrTUstrictrUU sectnum_xformrVKUdump_transformsrWNU docinfo_xformrXKUwarning_streamrYNUpep_file_url_templaterZUpep-%04dr[Uexit_status_levelr\KUconfigr]NUstrict_visitorr^NUcloak_email_addressesr_Utrim_footnote_reference_spacer`UenvraNUdump_pseudo_xmlrbNUexpose_internalsrcNUsectsubtitle_xformrdU source_linkreNUrfc_referencesrfNUoutput_encodingrgUutf-8rhU source_urlriNUinput_encodingrjU utf-8-sigrkU_disable_configrlNU id_prefixrmUU tab_widthrnKUerror_encodingroUUTF-8rpU_sourcerqUI/var/build/user_builds/simpy/checkouts/3.0.5/docs/api_reference/simpy.rstrrUgettext_compactrsU generatorrtNUdump_internalsruNU smart_quotesrvU pep_base_urlrwUhttp://www.python.org/dev/peps/rxUsyntax_highlightryUlongrzUinput_encoding_error_handlerr{jUUauto_id_prefixr|Uidr}Udoctitle_xformr~Ustrip_elements_with_classesrNU _config_filesr]rUfile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hjhhhhjh jhhhhh/j)r}r(hUh hh!hNh&jh(}r(h*]h-]rh/ah,]Uismodh+]h0]uh2Kh3hh]ubuUsubstitution_namesr}rh&h3h(}r(h*]h-]h,]Usourceh$h+]h0]uU footnotesr]rUrefidsr}rub.PK.Df6simpy-3.0.5/.doctrees/api_reference/simpy.core.doctreecdocutils.nodes document q)q}q(U nametypesq}q(Xsimpy.core.EnvironmentqX#simpy.core.BaseEnvironment.scheduleqXsimpy.core.Environment.peekqXsimpy.core.Environment.nowq Xsimpy.core.BaseEnvironmentq Xsimpy.core.Environment.stepq Xsimpy.core.BaseEnvironment.stepq Xsimpy.core.Infinityq Xsimpy.core.Environment.runqX simpy.core.BoundClass.bind_earlyqXsimpy.core.Environment.scheduleqXsimpy.core.Environment.all_ofqXsimpy.core.Environment.exitqXsimpy.core.Environment.eventqXsimpy.core.BaseEnvironment.nowqX)simpy.core.BaseEnvironment.active_processqXsimpy.core.Environment.any_ofqXsimpy.core.BaseEnvironment.runqXsimpy.core.Environment.timeoutqX&simpy.core --- simpy's core componentsqNXsimpy.core.BoundClassqX%simpy.core.Environment.active_processqXsimpy.core.EmptyScheduleqXsimpy.core.Environment.processquUsubstitution_defsq}qUparse_messagesq ]q!Ucurrent_sourceq"NU decorationq#NUautofootnote_startq$KUnameidsq%}q&(hhhhhhh h h h h h h h h h hhhhhhhhhhhhhhhhhhhhhhhU"simpy-core-simpy-s-core-componentsq'hhhhhhhhuUchildrenq(]q)cdocutils.nodes section q*)q+}q,(U rawsourceq-UUparentq.hUsourceq/cdocutils.nodes reprunicode q0XN/var/build/user_builds/simpy/checkouts/3.0.5/docs/api_reference/simpy.core.rstq1q2}q3bUtagnameq4Usectionq5U attributesq6}q7(Udupnamesq8]Uclassesq9]Ubackrefsq:]Uidsq;]q<(Xmodule-simpy.coreq=h'eUnamesq>]q?hauUlineq@KUdocumentqAhh(]qB(cdocutils.nodes title qC)qD}qE(h-X*``simpy.core`` --- SimPy's core componentsqFh.h+h/h2h4UtitleqGh6}qH(h8]h9]h:]h;]h>]uh@KhAhh(]qI(cdocutils.nodes literal qJ)qK}qL(h-X``simpy.core``qMh6}qN(h8]h9]h:]h;]h>]uh.hDh(]qOcdocutils.nodes Text qPX simpy.coreqQqR}qS(h-Uh.hKubah4UliteralqTubhPX --- SimPy's core componentsqUqV}qW(h-X --- SimPy's core componentsqXh.hDubeubcsphinx.addnodes index qY)qZ}q[(h-Uh.h+h/U q\h4Uindexq]h6}q^(h;]h:]h8]h9]h>]Uentries]q_(Usingleq`Xsimpy.core (module)Xmodule-simpy.coreUtqaauh@KhAhh(]ubcdocutils.nodes paragraph qb)qc}qd(h-XThis module contains the implementation of SimPy's core classes. The most important ones are directly importable via :mod:`simpy`.h.h+h/XR/var/build/user_builds/simpy/checkouts/3.0.5/simpy/core.py:docstring of simpy.coreh4U paragraphqeh6}qf(h8]h9]h:]h;]h>]uh@KhAhh(]qg(hPXuThis module contains the implementation of SimPy's core classes. The most important ones are directly importable via qhqi}qj(h-XuThis module contains the implementation of SimPy's core classes. The most important ones are directly importable via h.hcubcsphinx.addnodes pending_xref qk)ql}qm(h-X :mod:`simpy`qnh.hch/h2h4U pending_xrefqoh6}qp(UreftypeXmodUrefwarnqqU reftargetqrXsimpyU refdomainXpyqsh;]h:]U refexplicith8]h9]h>]UrefdocqtXapi_reference/simpy.corequUpy:classqvNU py:moduleqwX simpy.coreqxuh@Kh(]qyhJ)qz}q{(h-hnh6}q|(h8]h9]q}(Uxrefq~hsXpy-modqeh:]h;]h>]uh.hlh(]qhPXsimpyqq}q(h-Uh.hzubah4hTubaubhPX.q}q(h-X.h.hcubeubhY)q}q(h-Uh.h+h/Nh4h]h6}q(h;]h:]h8]h9]h>]Uentries]q(h`X%BaseEnvironment (class in simpy.core)h Utqauh@NhAhh(]ubcsphinx.addnodes desc q)q}q(h-Uh.h+h/Nh4Udescqh6}q(UnoindexqUdomainqXpyh;]h:]h8]h9]h>]UobjtypeqXclassqUdesctypeqhuh@NhAhh(]q(csphinx.addnodes desc_signature q)q}q(h-XBaseEnvironmentqh.hh/U qh4Udesc_signatureqh6}q(h;]qh aUmoduleqh0X simpy.coreqq}qbh:]h8]h9]h>]qh aUfullnameqhUclassqUUfirstquh@NhAhh(]q(csphinx.addnodes desc_annotation q)q}q(h-Xclass h.hh/hh4Udesc_annotationqh6}q(h8]h9]h:]h;]h>]uh@NhAhh(]qhPXclass qq}q(h-Uh.hubaubcsphinx.addnodes desc_addname q)q}q(h-X simpy.core.h.hh/hh4U desc_addnameqh6}q(h8]h9]h:]h;]h>]uh@NhAhh(]qhPX simpy.core.qq}q(h-Uh.hubaubcsphinx.addnodes desc_name q)q}q(h-hh.hh/hh4U desc_nameqh6}q(h8]h9]h:]h;]h>]uh@NhAhh(]qhPXBaseEnvironmentqq}q(h-Uh.hubaubeubcsphinx.addnodes desc_content q)q}q(h-Uh.hh/hh4U desc_contentqh6}q(h8]h9]h:]h;]h>]uh@NhAhh(]q(hb)q}q(h-X*The abstract definition of an environment.qh.hh/Xb/var/build/user_builds/simpy/checkouts/3.0.5/simpy/core.py:docstring of simpy.core.BaseEnvironmentqh4heh6}q(h8]h9]h:]h;]h>]uh@KhAhh(]qhPX*The abstract definition of an environment.q΅q}q(h-hh.hubaubhb)q}q(h-XAn implementation must at least provide the means to access the current time of the environment (see :attr:`now`) and to schedule (see :meth:`schedule()`) as well as execute (see :meth:`step()` and :meth:`run()`) events.h.hh/hh4heh6}q(h8]h9]h:]h;]h>]uh@KhAhh(]q(hPXeAn implementation must at least provide the means to access the current time of the environment (see qՅq}q(h-XeAn implementation must at least provide the means to access the current time of the environment (see h.hubhk)q}q(h-X :attr:`now`qh.hh/h2h4hoh6}q(UreftypeXattrhqhrXnowU refdomainXpyqh;]h:]U refexplicith8]h9]h>]hthuhvhhwhxuh@Kh(]qhJ)q}q(h-hh6}q(h8]h9]q(h~hXpy-attrqeh:]h;]h>]uh.hh(]qhPXnowq䅁q}q(h-Uh.hubah4hTubaubhPX) and to schedule (see q煁q}q(h-X) and to schedule (see h.hubhk)q}q(h-X:meth:`schedule()`qh.hh/h2h4hoh6}q(UreftypeXmethhqhrXscheduleU refdomainXpyqh;]h:]U refexplicith8]h9]h>]hthuhvhhwhxuh@Kh(]qhJ)q}q(h-hh6}q(h8]h9]q(h~hXpy-methqeh:]h;]h>]uh.hh(]qhPX schedule()qq}q(h-Uh.hubah4hTubaubhPX) as well as execute (see qq}q(h-X) as well as execute (see h.hubhk)q}q(h-X:meth:`step()`qh.hh/h2h4hoh6}q(UreftypeXmethhqhrXstepU refdomainXpyrh;]h:]U refexplicith8]h9]h>]hthuhvhhwhxuh@Kh(]rhJ)r}r(h-hh6}r(h8]h9]r(h~jXpy-methreh:]h;]h>]uh.hh(]rhPXstep()rr }r (h-Uh.jubah4hTubaubhPX and r r }r (h-X and h.hubhk)r}r(h-X :meth:`run()`rh.hh/h2h4hoh6}r(UreftypeXmethhqhrXrunU refdomainXpyrh;]h:]U refexplicith8]h9]h>]hthuhvhhwhxuh@Kh(]rhJ)r}r(h-jh6}r(h8]h9]r(h~jXpy-methreh:]h;]h>]uh.jh(]rhPXrun()rr}r(h-Uh.jubah4hTubaubhPX ) events.rr}r(h-X ) events.h.hubeubhb)r }r!(h-XThe class is meant to be subclassed for different execution environments. For example, SimPy defines a :class:`Environment` for simulations with a virtual time and and a :class:`~simpy.rt.RealtimeEnvironment` that schedules and executes events in real (e.g., wallclock) time.h.hh/hh4heh6}r"(h8]h9]h:]h;]h>]uh@KhAhh(]r#(hPXgThe class is meant to be subclassed for different execution environments. For example, SimPy defines a r$r%}r&(h-XgThe class is meant to be subclassed for different execution environments. For example, SimPy defines a h.j ubhk)r'}r((h-X:class:`Environment`r)h.j h/h2h4hoh6}r*(UreftypeXclasshqhrX EnvironmentU refdomainXpyr+h;]h:]U refexplicith8]h9]h>]hthuhvhhwhxuh@K h(]r,hJ)r-}r.(h-j)h6}r/(h8]h9]r0(h~j+Xpy-classr1eh:]h;]h>]uh.j'h(]r2hPX Environmentr3r4}r5(h-Uh.j-ubah4hTubaubhPX/ for simulations with a virtual time and and a r6r7}r8(h-X/ for simulations with a virtual time and and a h.j ubhk)r9}r:(h-X&:class:`~simpy.rt.RealtimeEnvironment`r;h.j h/h2h4hoh6}r<(UreftypeXclasshqhrXsimpy.rt.RealtimeEnvironmentU refdomainXpyr=h;]h:]U refexplicith8]h9]h>]hthuhvhhwhxuh@K h(]r>hJ)r?}r@(h-j;h6}rA(h8]h9]rB(h~j=Xpy-classrCeh:]h;]h>]uh.j9h(]rDhPXRealtimeEnvironmentrErF}rG(h-Uh.j?ubah4hTubaubhPXC that schedules and executes events in real (e.g., wallclock) time.rHrI}rJ(h-XC that schedules and executes events in real (e.g., wallclock) time.h.j ubeubhY)rK}rL(h-Uh.hh/Xf/var/build/user_builds/simpy/checkouts/3.0.5/simpy/core.py:docstring of simpy.core.BaseEnvironment.nowrMh4h]h6}rN(h;]h:]h8]h9]h>]Uentries]rO(h`X*now (simpy.core.BaseEnvironment attribute)hUtrPauh@NhAhh(]ubh)rQ}rR(h-Uh.hh/jMh4hh6}rS(hhXpyh;]h:]h8]h9]h>]hX attributerThjTuh@NhAhh(]rU(h)rV}rW(h-XBaseEnvironment.nowh.jQh/hh4hh6}rX(h;]rYhahh0X simpy.corerZr[}r\bh:]h8]h9]h>]r]hahXBaseEnvironment.nowhhhuh@NhAhh(]r^h)r_}r`(h-Xnowh.jVh/hh4hh6}ra(h8]h9]h:]h;]h>]uh@NhAhh(]rbhPXnowrcrd}re(h-Uh.j_ubaubaubh)rf}rg(h-Uh.jQh/hh4hh6}rh(h8]h9]h:]h;]h>]uh@NhAhh(]rihb)rj}rk(h-X$The current time of the environment.rlh.jfh/jMh4heh6}rm(h8]h9]h:]h;]h>]uh@KhAhh(]rnhPX$The current time of the environment.rorp}rq(h-jlh.jjubaubaubeubhY)rr}rs(h-Uh.hh/Xq/var/build/user_builds/simpy/checkouts/3.0.5/simpy/core.py:docstring of simpy.core.BaseEnvironment.active_processrth4h]h6}ru(h;]h:]h8]h9]h>]Uentries]rv(h`X5active_process (simpy.core.BaseEnvironment attribute)hUtrwauh@NhAhh(]ubh)rx}ry(h-Uh.hh/jth4hh6}rz(hhXpyh;]h:]h8]h9]h>]hX attributer{hj{uh@NhAhh(]r|(h)r}}r~(h-XBaseEnvironment.active_processh.jxh/hh4hh6}r(h;]rhahh0X simpy.corerr}rbh:]h8]h9]h>]rhahXBaseEnvironment.active_processhhhuh@NhAhh(]rh)r}r(h-Xactive_processh.j}h/hh4hh6}r(h8]h9]h:]h;]h>]uh@NhAhh(]rhPXactive_processrr}r(h-Uh.jubaubaubh)r}r(h-Uh.jxh/hh4hh6}r(h8]h9]h:]h;]h>]uh@NhAhh(]rhb)r}r(h-X0The currently active process of the environment.rh.jh/jth4heh6}r(h8]h9]h:]h;]h>]uh@KhAhh(]rhPX0The currently active process of the environment.rr}r(h-jh.jubaubaubeubhY)r}r(h-Uh.hh/Xk/var/build/user_builds/simpy/checkouts/3.0.5/simpy/core.py:docstring of simpy.core.BaseEnvironment.schedulerh4h]h6}r(h;]h:]h8]h9]h>]Uentries]r(h`X.schedule() (simpy.core.BaseEnvironment method)hUtrauh@NhAhh(]ubh)r}r(h-Uh.hh/jh4hh6}r(hhXpyh;]h:]h8]h9]h>]hXmethodrhjuh@NhAhh(]r(h)r}r(h-X4BaseEnvironment.schedule(event, priority=1, delay=0)h.jh/hh4hh6}r(h;]rhahh0X simpy.corerr}rbh:]h8]h9]h>]rhahXBaseEnvironment.schedulehhhuh@NhAhh(]r(h)r}r(h-Xscheduleh.jh/hh4hh6}r(h8]h9]h:]h;]h>]uh@NhAhh(]rhPXschedulerr}r(h-Uh.jubaubcsphinx.addnodes desc_parameterlist r)r}r(h-Uh.jh/hh4Udesc_parameterlistrh6}r(h8]h9]h:]h;]h>]uh@NhAhh(]r(csphinx.addnodes desc_parameter r)r}r(h-Xeventh6}r(h8]h9]h:]h;]h>]uh.jh(]rhPXeventrr}r(h-Uh.jubah4Udesc_parameterrubj)r}r(h-X priority=1h6}r(h8]h9]h:]h;]h>]uh.jh(]rhPX priority=1rr}r(h-Uh.jubah4jubj)r}r(h-Xdelay=0h6}r(h8]h9]h:]h;]h>]uh.jh(]rhPXdelay=0rr}r(h-Uh.jubah4jubeubeubh)r}r(h-Uh.jh/hh4hh6}r(h8]h9]h:]h;]h>]uh@NhAhh(]r(hb)r}r(h-X:Schedule an *event* with a given *priority* and a *delay*.h.jh/jh4heh6}r(h8]h9]h:]h;]h>]uh@KhAhh(]r(hPX Schedule an rr}r(h-X Schedule an h.jubcdocutils.nodes emphasis r)r}r(h-X*event*h6}r(h8]h9]h:]h;]h>]uh.jh(]rhPXeventrr}r(h-Uh.jubah4UemphasisrubhPX with a given rr}r(h-X with a given h.jubj)r}r(h-X *priority*h6}r(h8]h9]h:]h;]h>]uh.jh(]rhPXpriorityrr}r(h-Uh.jubah4jubhPX and a rr}r(h-X and a h.jubj)r}r(h-X*delay*h6}r(h8]h9]h:]h;]h>]uh.jh(]rhPXdelayrr}r(h-Uh.jubah4jubhPX.r}r(h-X.h.jubeubhb)r}r(h-XeThere are two default priority values, :data:`~simpy.events.URGENT` and :data:`~simpy.events.NORMAL`.h.jh/jh4heh6}r(h8]h9]h:]h;]h>]uh@KhAhh(]r(hPX'There are two default priority values, rr}r(h-X'There are two default priority values, h.jubhk)r}r(h-X:data:`~simpy.events.URGENT`rh.jh/h2h4hoh6}r(UreftypeXdatahqhrXsimpy.events.URGENTU refdomainXpyrh;]h:]U refexplicith8]h9]h>]hthuhvhhwhxuh@K$h(]rhJ)r}r (h-jh6}r (h8]h9]r (h~jXpy-datar eh:]h;]h>]uh.jh(]r hPXURGENTrr}r(h-Uh.jubah4hTubaubhPX and rr}r(h-X and h.jubhk)r}r(h-X:data:`~simpy.events.NORMAL`rh.jh/h2h4hoh6}r(UreftypeXdatahqhrXsimpy.events.NORMALU refdomainXpyrh;]h:]U refexplicith8]h9]h>]hthuhvhhwhxuh@K$h(]rhJ)r}r(h-jh6}r(h8]h9]r(h~jXpy-datareh:]h;]h>]uh.jh(]rhPXNORMALr r!}r"(h-Uh.jubah4hTubaubhPX.r#}r$(h-X.h.jubeubeubeubhY)r%}r&(h-Uh.hh/Xg/var/build/user_builds/simpy/checkouts/3.0.5/simpy/core.py:docstring of simpy.core.BaseEnvironment.stepr'h4h]h6}r((h;]h:]h8]h9]h>]Uentries]r)(h`X*step() (simpy.core.BaseEnvironment method)h Utr*auh@NhAhh(]ubh)r+}r,(h-Uh.hh/j'h4hh6}r-(hhXpyh;]h:]h8]h9]h>]hXmethodr.hj.uh@NhAhh(]r/(h)r0}r1(h-XBaseEnvironment.step()h.j+h/hh4hh6}r2(h;]r3h ahh0X simpy.corer4r5}r6bh:]h8]h9]h>]r7h ahXBaseEnvironment.stephhhuh@NhAhh(]r8(h)r9}r:(h-Xsteph.j0h/hh4hh6}r;(h8]h9]h:]h;]h>]uh@NhAhh(]r<hPXstepr=r>}r?(h-Uh.j9ubaubj)r@}rA(h-Uh.j0h/hh4jh6}rB(h8]h9]h:]h;]h>]uh@NhAhh(]ubeubh)rC}rD(h-Uh.j+h/hh4hh6}rE(h8]h9]h:]h;]h>]uh@NhAhh(]rFhb)rG}rH(h-XProcess the next event.rIh.jCh/j'h4heh6}rJ(h8]h9]h:]h;]h>]uh@KhAhh(]rKhPXProcess the next event.rLrM}rN(h-jIh.jGubaubaubeubhY)rO}rP(h-Uh.hh/Nh4h]h6}rQ(h;]h:]h8]h9]h>]Uentries]rR(h`X)run() (simpy.core.BaseEnvironment method)hUtrSauh@NhAhh(]ubh)rT}rU(h-Uh.hh/Nh4hh6}rV(hhXpyh;]h:]h8]h9]h>]hXmethodrWhjWuh@NhAhh(]rX(h)rY}rZ(h-XBaseEnvironment.run(until=None)h.jTh/hh4hh6}r[(h;]r\hahh0X simpy.corer]r^}r_bh:]h8]h9]h>]r`hahXBaseEnvironment.runhhhuh@NhAhh(]ra(h)rb}rc(h-Xrunh.jYh/hh4hh6}rd(h8]h9]h:]h;]h>]uh@NhAhh(]rehPXrunrfrg}rh(h-Uh.jbubaubj)ri}rj(h-Uh.jYh/hh4jh6}rk(h8]h9]h:]h;]h>]uh@NhAhh(]rlj)rm}rn(h-X until=Noneh6}ro(h8]h9]h:]h;]h>]uh.jih(]rphPX until=Nonerqrr}rs(h-Uh.jmubah4jubaubeubh)rt}ru(h-Uh.jTh/hh4hh6}rv(h8]h9]h:]h;]h>]uh@NhAhh(]rw(hb)rx}ry(h-XAExecutes :meth:`step()` until the given criterion *until* is met.h.jth/Xf/var/build/user_builds/simpy/checkouts/3.0.5/simpy/core.py:docstring of simpy.core.BaseEnvironment.runrzh4heh6}r{(h8]h9]h:]h;]h>]uh@KhAhh(]r|(hPX Executes r}r~}r(h-X Executes h.jxubhk)r}r(h-X:meth:`step()`rh.jxh/h2h4hoh6}r(UreftypeXmethhqhrXstepU refdomainXpyrh;]h:]U refexplicith8]h9]h>]hthuhvhhwhxuh@K1h(]rhJ)r}r(h-jh6}r(h8]h9]r(h~jXpy-methreh:]h;]h>]uh.jh(]rhPXstep()rr}r(h-Uh.jubah4hTubaubhPX until the given criterion rr}r(h-X until the given criterion h.jxubj)r}r(h-X*until*h6}r(h8]h9]h:]h;]h>]uh.jxh(]rhPXuntilrr}r(h-Uh.jubah4jubhPX is met.rr}r(h-X is met.h.jxubeubcdocutils.nodes bullet_list r)r}r(h-Uh.jth/jzh4U bullet_listrh6}r(UbulletrX-h;]h:]h8]h9]h>]uh@KhAhh(]r(cdocutils.nodes list_item r)r}r(h-XqIf it is ``None`` (which is the default) this method will return if there are no further events to be processed. h.jh/jzh4U list_itemrh6}r(h8]h9]h:]h;]h>]uh@NhAhh(]rhb)r}r(h-XpIf it is ``None`` (which is the default) this method will return if there are no further events to be processed.h.jh/jzh4heh6}r(h8]h9]h:]h;]h>]uh@Kh(]r(hPX If it is rr}r(h-X If it is h.jubhJ)r}r(h-X``None``h6}r(h8]h9]h:]h;]h>]uh.jh(]rhPXNonerr}r(h-Uh.jubah4hTubhPX_ (which is the default) this method will return if there are no further events to be processed.rr}r(h-X_ (which is the default) this method will return if there are no further events to be processed.h.jubeubaubj)r}r(h-XIf it is an :class:`~simpy.events.Event` the method will continue stepping until this event has been triggered and will return its value. h.jh/jzh4jh6}r(h8]h9]h:]h;]h>]uh@NhAhh(]rhb)r}r(h-XIf it is an :class:`~simpy.events.Event` the method will continue stepping until this event has been triggered and will return its value.h.jh/jzh4heh6}r(h8]h9]h:]h;]h>]uh@Kh(]r(hPX If it is an rr}r(h-X If it is an h.jubhk)r}r(h-X:class:`~simpy.events.Event`rh.jh/Nh4hoh6}r(UreftypeXclasshqhrXsimpy.events.EventU refdomainXpyrh;]h:]U refexplicith8]h9]h>]hthuhvhhwhxuh@Nh(]rhJ)r}r(h-jh6}r(h8]h9]r(h~jXpy-classreh:]h;]h>]uh.jh(]rhPXEventrr}r(h-Uh.jubah4hTubaubhPXa the method will continue stepping until this event has been triggered and will return its value.rr}r(h-Xa the method will continue stepping until this event has been triggered and will return its value.h.jubeubaubj)r}r(h-XrIf it can be converted to a number the method will continue stepping until the environment's time reaches *until*.h.jh/jzh4jh6}r(h8]h9]h:]h;]h>]uh@NhAhh(]rhb)r}r(h-XrIf it can be converted to a number the method will continue stepping until the environment's time reaches *until*.h.jh/jzh4heh6}r(h8]h9]h:]h;]h>]uh@K h(]r(hPXjIf it can be converted to a number the method will continue stepping until the environment's time reaches rr}r(h-XjIf it can be converted to a number the method will continue stepping until the environment's time reaches h.jubj)r}r(h-X*until*h6}r(h8]h9]h:]h;]h>]uh.jh(]rhPXuntilrr}r(h-Uh.jubah4jubhPX.r}r(h-X.h.jubeubaubeubeubeubeubeubhY)r}r(h-Uh.h+h/Nh4h]h6}r(h;]h:]h8]h9]h>]Uentries]r(h`X!Environment (class in simpy.core)hUtrauh@NhAhh(]ubh)r}r(h-Uh.h+h/Nh4hh6}r(hhXpyh;]h:]h8]h9]h>]hXclassrhjuh@NhAhh(]r(h)r}r(h-XEnvironment(initial_time=0)h.jh/hh4hh6}r(h;]rhahh0X simpy.corerr}rbh:]h8]h9]h>]rhahX EnvironmentrhUhuh@NhAhh(]r(h)r}r(h-Xclass h.jh/hh4hh6}r(h8]h9]h:]h;]h>]uh@NhAhh(]rhPXclass rr}r(h-Uh.jubaubh)r}r(h-X simpy.core.h.jh/hh4hh6}r(h8]h9]h:]h;]h>]uh@NhAhh(]r hPX simpy.core.r r }r (h-Uh.jubaubh)r }r(h-jh.jh/hh4hh6}r(h8]h9]h:]h;]h>]uh@NhAhh(]rhPX Environmentrr}r(h-Uh.j ubaubj)r}r(h-Uh.jh/hh4jh6}r(h8]h9]h:]h;]h>]uh@NhAhh(]rj)r}r(h-Xinitial_time=0h6}r(h8]h9]h:]h;]h>]uh.jh(]rhPXinitial_time=0rr}r(h-Uh.jubah4jubaubeubh)r}r (h-Uh.jh/hh4hh6}r!(h8]h9]h:]h;]h>]uh@NhAhh(]r"(hb)r#}r$(h-XInherits :class:`BaseEnvironment` and implements a simulation environment which simulates the passing of time by stepping from event to event.h.jh/X^/var/build/user_builds/simpy/checkouts/3.0.5/simpy/core.py:docstring of simpy.core.Environmentr%h4heh6}r&(h8]h9]h:]h;]h>]uh@KhAhh(]r'(hPX Inherits r(r)}r*(h-X Inherits h.j#ubhk)r+}r,(h-X:class:`BaseEnvironment`r-h.j#h/h2h4hoh6}r.(UreftypeXclasshqhrXBaseEnvironmentU refdomainXpyr/h;]h:]U refexplicith8]h9]h>]hthuhvjhwhxuh@Kh(]r0hJ)r1}r2(h-j-h6}r3(h8]h9]r4(h~j/Xpy-classr5eh:]h;]h>]uh.j+h(]r6hPXBaseEnvironmentr7r8}r9(h-Uh.j1ubah4hTubaubhPXm and implements a simulation environment which simulates the passing of time by stepping from event to event.r:r;}r<(h-Xm and implements a simulation environment which simulates the passing of time by stepping from event to event.h.j#ubeubhb)r=}r>(h-XWYou can provide an *initial_time* for the environment. By defaults, it starts at ``0``.h.jh/j%h4heh6}r?(h8]h9]h:]h;]h>]uh@KhAhh(]r@(hPXYou can provide an rArB}rC(h-XYou can provide an h.j=ubj)rD}rE(h-X*initial_time*h6}rF(h8]h9]h:]h;]h>]uh.j=h(]rGhPX initial_timerHrI}rJ(h-Uh.jDubah4jubhPX0 for the environment. By defaults, it starts at rKrL}rM(h-X0 for the environment. By defaults, it starts at h.j=ubhJ)rN}rO(h-X``0``h6}rP(h8]h9]h:]h;]h>]uh.j=h(]rQhPX0rR}rS(h-Uh.jNubah4hTubhPX.rT}rU(h-X.h.j=ubeubhb)rV}rW(h-XxThis class also provides aliases for common event types, for example :attr:`process`, :attr:`timeout` and :attr:`event`.h.jh/j%h4heh6}rX(h8]h9]h:]h;]h>]uh@KhAhh(]rY(hPXEThis class also provides aliases for common event types, for example rZr[}r\(h-XEThis class also provides aliases for common event types, for example h.jVubhk)r]}r^(h-X:attr:`process`r_h.jVh/h2h4hoh6}r`(UreftypeXattrhqhrXprocessU refdomainXpyrah;]h:]U refexplicith8]h9]h>]hthuhvjhwhxuh@K h(]rbhJ)rc}rd(h-j_h6}re(h8]h9]rf(h~jaXpy-attrrgeh:]h;]h>]uh.j]h(]rhhPXprocessrirj}rk(h-Uh.jcubah4hTubaubhPX, rlrm}rn(h-X, h.jVubhk)ro}rp(h-X:attr:`timeout`rqh.jVh/h2h4hoh6}rr(UreftypeXattrhqhrXtimeoutU refdomainXpyrsh;]h:]U refexplicith8]h9]h>]hthuhvjhwhxuh@K h(]rthJ)ru}rv(h-jqh6}rw(h8]h9]rx(h~jsXpy-attrryeh:]h;]h>]uh.joh(]rzhPXtimeoutr{r|}r}(h-Uh.juubah4hTubaubhPX and r~r}r(h-X and h.jVubhk)r}r(h-X :attr:`event`rh.jVh/h2h4hoh6}r(UreftypeXattrhqhrXeventU refdomainXpyrh;]h:]U refexplicith8]h9]h>]hthuhvjhwhxuh@K h(]rhJ)r}r(h-jh6}r(h8]h9]r(h~jXpy-attrreh:]h;]h>]uh.jh(]rhPXeventrr}r(h-Uh.jubah4hTubaubhPX.r}r(h-X.h.jVubeubhY)r}r(h-Uh.jh/Xb/var/build/user_builds/simpy/checkouts/3.0.5/simpy/core.py:docstring of simpy.core.Environment.nowrh4h]h6}r(h;]h:]h8]h9]h>]Uentries]r(h`X&now (simpy.core.Environment attribute)h Utrauh@NhAhh(]ubh)r}r(h-Uh.jh/jh4hh6}r(hhXpyh;]h:]h8]h9]h>]hX attributerhjuh@NhAhh(]r(h)r}r(h-XEnvironment.nowh.jh/hh4hh6}r(h;]rh ahh0X simpy.corerr}rbh:]h8]h9]h>]rh ahXEnvironment.nowhjhuh@NhAhh(]rh)r}r(h-Xnowh.jh/hh4hh6}r(h8]h9]h:]h;]h>]uh@NhAhh(]rhPXnowrr}r(h-Uh.jubaubaubh)r}r(h-Uh.jh/hh4hh6}r(h8]h9]h:]h;]h>]uh@NhAhh(]rhb)r}r(h-XThe current simulation time.rh.jh/jh4heh6}r(h8]h9]h:]h;]h>]uh@KhAhh(]rhPXThe current simulation time.rr}r(h-jh.jubaubaubeubhY)r}r(h-Uh.jh/Xm/var/build/user_builds/simpy/checkouts/3.0.5/simpy/core.py:docstring of simpy.core.Environment.active_processrh4h]h6}r(h;]h:]h8]h9]h>]Uentries]r(h`X1active_process (simpy.core.Environment attribute)hUtrauh@NhAhh(]ubh)r}r(h-Uh.jh/jh4hh6}r(hhXpyh;]h:]h8]h9]h>]hX attributerhjuh@NhAhh(]r(h)r}r(h-XEnvironment.active_processh.jh/hh4hh6}r(h;]rhahh0X simpy.corerr}rbh:]h8]h9]h>]rhahXEnvironment.active_processhjhuh@NhAhh(]rh)r}r(h-Xactive_processh.jh/hh4hh6}r(h8]h9]h:]h;]h>]uh@NhAhh(]rhPXactive_processrr}r(h-Uh.jubaubaubh)r}r(h-Uh.jh/hh4hh6}r(h8]h9]h:]h;]h>]uh@NhAhh(]rhb)r}r(h-X0The currently active process of the environment.rh.jh/jh4heh6}r(h8]h9]h:]h;]h>]uh@KhAhh(]rhPX0The currently active process of the environment.rr}r(h-jh.jubaubaubeubhY)r}r(h-Uh.jh/h2h4h]h6}r(h;]h:]h8]h9]h>]Uentries]r(h`X)process() (simpy.core.Environment method)hUtrauh@NhAhh(]ubh)r}r(h-Uh.jh/h2h4hh6}r(hhXpyh;]h:]h8]h9]h>]hXmethodrhjuh@NhAhh(]r(h)r}r(h-Xprocess(generator)h.jh/h2h4hh6}r(h;]rhahhxh:]h8]h9]h>]rhahXEnvironment.processhjhuh@KhAhh(]r(h)r}r(h-Xprocessh.jh/h2h4hh6}r(h8]h9]h:]h;]h>]uh@KhAhh(]rhPXprocessrr}r(h-Uh.jubaubj)r}r(h-Uh.jh/h2h4jh6}r(h8]h9]h:]h;]h>]uh@KhAhh(]rj)r}r(h-X generatorh6}r(h8]h9]h:]h;]h>]uh.jh(]rhPX generatorrr}r(h-Uh.jubah4jubaubeubh)r}r(h-Uh.jh/h2h4hh6}r(h8]h9]h:]h;]h>]uh@KhAhh(]rhb)r}r(h-XECreate a new :class:`~simpy.events.Process` instance for *generator*.h.jh/h2h4heh6}r(h8]h9]h:]h;]h>]uh@KhAhh(]r (hPX Create a new r r }r (h-X Create a new h.jubhk)r }r(h-X:class:`~simpy.events.Process`rh.jh/h2h4hoh6}r(UreftypeXclasshqhrXsimpy.events.ProcessU refdomainXpyrh;]h:]U refexplicith8]h9]h>]hthuhvjhwhxuh@Kh(]rhJ)r}r(h-jh6}r(h8]h9]r(h~jXpy-classreh:]h;]h>]uh.j h(]rhPXProcessrr}r(h-Uh.jubah4hTubaubhPX instance for rr}r(h-X instance for h.jubj)r}r (h-X *generator*h6}r!(h8]h9]h:]h;]h>]uh.jh(]r"hPX generatorr#r$}r%(h-Uh.jubah4jubhPX.r&}r'(h-X.h.jubeubaubeubhY)r(}r)(h-Uh.jh/h2h4h]h6}r*(h;]h:]h8]h9]h>]Uentries]r+(h`X)timeout() (simpy.core.Environment method)hUtr,auh@NhAhh(]ubh)r-}r.(h-Uh.jh/h2h4hh6}r/(hhXpyh;]h:]h8]h9]h>]hXmethodr0hj0uh@NhAhh(]r1(h)r2}r3(h-Xtimeout(delay, value=None)h.j-h/h2h4hh6}r4(h;]r5hahhxh:]h8]h9]h>]r6hahXEnvironment.timeouthjhuh@KhAhh(]r7(h)r8}r9(h-Xtimeouth.j2h/h2h4hh6}r:(h8]h9]h:]h;]h>]uh@KhAhh(]r;hPXtimeoutr<r=}r>(h-Uh.j8ubaubj)r?}r@(h-Uh.j2h/h2h4jh6}rA(h8]h9]h:]h;]h>]uh@KhAhh(]rB(j)rC}rD(h-Xdelayh6}rE(h8]h9]h:]h;]h>]uh.j?h(]rFhPXdelayrGrH}rI(h-Uh.jCubah4jubj)rJ}rK(h-X value=Noneh6}rL(h8]h9]h:]h;]h>]uh.j?h(]rMhPX value=NonerNrO}rP(h-Uh.jJubah4jubeubeubh)rQ}rR(h-Uh.j-h/h2h4hh6}rS(h8]h9]h:]h;]h>]uh@KhAhh(]rThb)rU}rV(h-X\Return a new :class:`~simpy.events.Timeout` event with a *delay* and, optionally, a *value*.h.jQh/h2h4heh6}rW(h8]h9]h:]h;]h>]uh@KhAhh(]rX(hPX Return a new rYrZ}r[(h-X Return a new h.jUubhk)r\}r](h-X:class:`~simpy.events.Timeout`r^h.jUh/h2h4hoh6}r_(UreftypeXclasshqhrXsimpy.events.TimeoutU refdomainXpyr`h;]h:]U refexplicith8]h9]h>]hthuhvjhwhxuh@Kh(]rahJ)rb}rc(h-j^h6}rd(h8]h9]re(h~j`Xpy-classrfeh:]h;]h>]uh.j\h(]rghPXTimeoutrhri}rj(h-Uh.jbubah4hTubaubhPX event with a rkrl}rm(h-X event with a h.jUubj)rn}ro(h-X*delay*h6}rp(h8]h9]h:]h;]h>]uh.jUh(]rqhPXdelayrrrs}rt(h-Uh.jnubah4jubhPX and, optionally, a rurv}rw(h-X and, optionally, a h.jUubj)rx}ry(h-X*value*h6}rz(h8]h9]h:]h;]h>]uh.jUh(]r{hPXvaluer|r}}r~(h-Uh.jxubah4jubhPX.r}r(h-X.h.jUubeubaubeubhY)r}r(h-Uh.jh/h2h4h]h6}r(h;]h:]h8]h9]h>]Uentries]r(h`X'event() (simpy.core.Environment method)hUtrauh@NhAhh(]ubh)r}r(h-Uh.jh/h2h4hh6}r(hhXpyh;]h:]h8]h9]h>]hXmethodrhjuh@NhAhh(]r(h)r}r(h-Xevent()h.jh/h2h4hh6}r(h;]rhahhxh:]h8]h9]h>]rhahXEnvironment.eventhjhuh@KhAhh(]r(h)r}r(h-Xeventh.jh/h2h4hh6}r(h8]h9]h:]h;]h>]uh@KhAhh(]rhPXeventrr}r(h-Uh.jubaubj)r}r(h-Uh.jh/h2h4jh6}r(h8]h9]h:]h;]h>]uh@KhAhh(]ubeubh)r}r(h-Uh.jh/h2h4hh6}r(h8]h9]h:]h;]h>]uh@KhAhh(]rhb)r}r(h-XReturn a new :class:`~simpy.events.Event` instance. Yielding this event suspends a process until another process triggers the event.h.jh/h2h4heh6}r(h8]h9]h:]h;]h>]uh@KhAhh(]r(hPX Return a new rr}r(h-X Return a new h.jubhk)r}r(h-X:class:`~simpy.events.Event`rh.jh/h2h4hoh6}r(UreftypeXclasshqhrXsimpy.events.EventU refdomainXpyrh;]h:]U refexplicith8]h9]h>]hthuhvjhwhxuh@Kh(]rhJ)r}r(h-jh6}r(h8]h9]r(h~jXpy-classreh:]h;]h>]uh.jh(]rhPXEventrr}r(h-Uh.jubah4hTubaubhPX[ instance. Yielding this event suspends a process until another process triggers the event.rr}r(h-X[ instance. Yielding this event suspends a process until another process triggers the event.h.jubeubaubeubhY)r}r(h-Uh.jh/h2h4h]h6}r(h;]h:]h8]h9]h>]Uentries]r(h`X(all_of() (simpy.core.Environment method)hUtrauh@NhAhh(]ubh)r}r(h-Uh.jh/h2h4hh6}r(hhXpyh;]h:]h8]h9]h>]hXmethodrhjuh@NhAhh(]r(h)r}r(h-Xall_of(events)h.jh/h2h4hh6}r(h;]rhahhxh:]h8]h9]h>]rhahXEnvironment.all_ofhjhuh@K!hAhh(]r(h)r}r(h-Xall_ofh.jh/h2h4hh6}r(h8]h9]h:]h;]h>]uh@K!hAhh(]rhPXall_ofrr}r(h-Uh.jubaubj)r}r(h-Uh.jh/h2h4jh6}r(h8]h9]h:]h;]h>]uh@K!hAhh(]rj)r}r(h-Xeventsh6}r(h8]h9]h:]h;]h>]uh.jh(]rhPXeventsrr}r(h-Uh.jubah4jubaubeubh)r}r(h-Uh.jh/h2h4hh6}r(h8]h9]h:]h;]h>]uh@K!hAhh(]rhb)r}r(h-XKReturn a new :class:`~simpy.events.AllOf` condition for a list of *events*.h.jh/h2h4heh6}r(h8]h9]h:]h;]h>]uh@KhAhh(]r(hPX Return a new rr}r(h-X Return a new h.jubhk)r}r(h-X:class:`~simpy.events.AllOf`rh.jh/h2h4hoh6}r(UreftypeXclasshqhrXsimpy.events.AllOfU refdomainXpyrh;]h:]U refexplicith8]h9]h>]hthuhvjhwhxuh@K#h(]rhJ)r}r(h-jh6}r(h8]h9]r(h~jXpy-classreh:]h;]h>]uh.jh(]rhPXAllOfrr}r(h-Uh.jubah4hTubaubhPX condition for a list of rr}r(h-X condition for a list of h.jubj)r}r(h-X*events*h6}r(h8]h9]h:]h;]h>]uh.jh(]rhPXeventsrr}r(h-Uh.jubah4jubhPX.r}r(h-X.h.jubeubaubeubhY)r}r(h-Uh.jh/h2h4h]h6}r(h;]h:]h8]h9]h>]Uentries]r(h`X(any_of() (simpy.core.Environment method)hUtrauh@NhAhh(]ubh)r}r(h-Uh.jh/h2h4hh6}r(hhXpyh;]h:]h8]h9]h>]hXmethodrhjuh@NhAhh(]r (h)r }r (h-Xany_of(events)h.jh/h2h4hh6}r (h;]r hahhxh:]h8]h9]h>]rhahXEnvironment.any_ofhjhuh@K&hAhh(]r(h)r}r(h-Xany_ofh.j h/h2h4hh6}r(h8]h9]h:]h;]h>]uh@K&hAhh(]rhPXany_ofrr}r(h-Uh.jubaubj)r}r(h-Uh.j h/h2h4jh6}r(h8]h9]h:]h;]h>]uh@K&hAhh(]rj)r}r(h-Xeventsh6}r(h8]h9]h:]h;]h>]uh.jh(]rhPXeventsrr }r!(h-Uh.jubah4jubaubeubh)r"}r#(h-Uh.jh/h2h4hh6}r$(h8]h9]h:]h;]h>]uh@K&hAhh(]r%hb)r&}r'(h-XKReturn a new :class:`~simpy.events.AnyOf` condition for a list of *events*.h.j"h/h2h4heh6}r((h8]h9]h:]h;]h>]uh@K$hAhh(]r)(hPX Return a new r*r+}r,(h-X Return a new h.j&ubhk)r-}r.(h-X:class:`~simpy.events.AnyOf`r/h.j&h/h2h4hoh6}r0(UreftypeXclasshqhrXsimpy.events.AnyOfU refdomainXpyr1h;]h:]U refexplicith8]h9]h>]hthuhvjhwhxuh@K(h(]r2hJ)r3}r4(h-j/h6}r5(h8]h9]r6(h~j1Xpy-classr7eh:]h;]h>]uh.j-h(]r8hPXAnyOfr9r:}r;(h-Uh.j3ubah4hTubaubhPX condition for a list of r<r=}r>(h-X condition for a list of h.j&ubj)r?}r@(h-X*events*h6}rA(h8]h9]h:]h;]h>]uh.j&h(]rBhPXeventsrCrD}rE(h-Uh.j?ubah4jubhPX.rF}rG(h-X.h.j&ubeubaubeubhY)rH}rI(h-Uh.jh/Nh4h]h6}rJ(h;]h:]h8]h9]h>]Uentries]rK(h`X&exit() (simpy.core.Environment method)hUtrLauh@NhAhh(]ubh)rM}rN(h-Uh.jh/Nh4hh6}rO(hhXpyh;]h:]h8]h9]h>]hXmethodrPhjPuh@NhAhh(]rQ(h)rR}rS(h-XEnvironment.exit(value=None)h.jMh/hh4hh6}rT(h;]rUhahh0X simpy.corerVrW}rXbh:]h8]h9]h>]rYhahXEnvironment.exithjhuh@NhAhh(]rZ(h)r[}r\(h-Xexith.jRh/hh4hh6}r](h8]h9]h:]h;]h>]uh@NhAhh(]r^hPXexitr_r`}ra(h-Uh.j[ubaubj)rb}rc(h-Uh.jRh/hh4jh6}rd(h8]h9]h:]h;]h>]uh@NhAhh(]rej)rf}rg(h-X value=Noneh6}rh(h8]h9]h:]h;]h>]uh.jbh(]rihPX value=Nonerjrk}rl(h-Uh.jfubah4jubaubeubh)rm}rn(h-Uh.jMh/hh4hh6}ro(h8]h9]h:]h;]h>]uh@NhAhh(]rp(hb)rq}rr(h-X{Convenience function provided for Python versions prior to 3.3. Stop the current process, optionally providing a ``value``.h.jmh/Xc/var/build/user_builds/simpy/checkouts/3.0.5/simpy/core.py:docstring of simpy.core.Environment.exitrsh4heh6}rt(h8]h9]h:]h;]h>]uh@KhAhh(]ru(hPXqConvenience function provided for Python versions prior to 3.3. Stop the current process, optionally providing a rvrw}rx(h-XqConvenience function provided for Python versions prior to 3.3. Stop the current process, optionally providing a h.jqubhJ)ry}rz(h-X ``value``h6}r{(h8]h9]h:]h;]h>]uh.jqh(]r|hPXvaluer}r~}r(h-Uh.jyubah4hTubhPX.r}r(h-X.h.jqubeubcdocutils.nodes note r)r}r(h-X6From Python 3.3, you can use ``return value`` instead.rh.jmh/jsh4Unoterh6}r(h8]h9]h:]h;]h>]uh@NhAhh(]rhb)r}r(h-jh.jh/jsh4heh6}r(h8]h9]h:]h;]h>]uh@Kh(]r(hPXFrom Python 3.3, you can use rr}r(h-XFrom Python 3.3, you can use h.jubhJ)r}r(h-X``return value``h6}r(h8]h9]h:]h;]h>]uh.jh(]rhPX return valuerr}r(h-Uh.jubah4hTubhPX instead.rr}r(h-X instead.h.jubeubaubeubeubhY)r}r(h-Uh.jh/Xg/var/build/user_builds/simpy/checkouts/3.0.5/simpy/core.py:docstring of simpy.core.Environment.schedulerh4h]h6}r(h;]h:]h8]h9]h>]Uentries]r(h`X*schedule() (simpy.core.Environment method)hUtrauh@NhAhh(]ubh)r}r(h-Uh.jh/jh4hh6}r(hhXpyh;]h:]h8]h9]h>]hXmethodrhjuh@NhAhh(]r(h)r}r(h-X0Environment.schedule(event, priority=1, delay=0)h.jh/hh4hh6}r(h;]rhahh0X simpy.corerr}rbh:]h8]h9]h>]rhahXEnvironment.schedulehjhuh@NhAhh(]r(h)r}r(h-Xscheduleh.jh/hh4hh6}r(h8]h9]h:]h;]h>]uh@NhAhh(]rhPXschedulerr}r(h-Uh.jubaubj)r}r(h-Uh.jh/hh4jh6}r(h8]h9]h:]h;]h>]uh@NhAhh(]r(j)r}r(h-Xeventh6}r(h8]h9]h:]h;]h>]uh.jh(]rhPXeventrr}r(h-Uh.jubah4jubj)r}r(h-X priority=1h6}r(h8]h9]h:]h;]h>]uh.jh(]rhPX priority=1rr}r(h-Uh.jubah4jubj)r}r(h-Xdelay=0h6}r(h8]h9]h:]h;]h>]uh.jh(]rhPXdelay=0rr}r(h-Uh.jubah4jubeubeubh)r}r(h-Uh.jh/hh4hh6}r(h8]h9]h:]h;]h>]uh@NhAhh(]rhb)r}r(h-X:Schedule an *event* with a given *priority* and a *delay*.h.jh/jh4heh6}r(h8]h9]h:]h;]h>]uh@KhAhh(]r(hPX Schedule an rr}r(h-X Schedule an h.jubj)r}r(h-X*event*h6}r(h8]h9]h:]h;]h>]uh.jh(]rhPXeventrr}r(h-Uh.jubah4jubhPX with a given rr}r(h-X with a given h.jubj)r}r(h-X *priority*h6}r(h8]h9]h:]h;]h>]uh.jh(]rhPXpriorityrr}r(h-Uh.jubah4jubhPX and a rr}r(h-X and a h.jubj)r}r(h-X*delay*h6}r(h8]h9]h:]h;]h>]uh.jh(]rhPXdelayrr}r(h-Uh.jubah4jubhPX.r}r(h-X.h.jubeubaubeubhY)r}r(h-Uh.jh/Xc/var/build/user_builds/simpy/checkouts/3.0.5/simpy/core.py:docstring of simpy.core.Environment.peekrh4h]h6}r(h;]h:]h8]h9]h>]Uentries]r(h`X&peek() (simpy.core.Environment method)hUtrauh@NhAhh(]ubh)r}r(h-Uh.jh/jh4hh6}r(hhXpyh;]h:]h8]h9]h>]hXmethodrhjuh@NhAhh(]r(h)r}r(h-XEnvironment.peek()h.jh/hh4hh6}r(h;]rhahh0X simpy.corerr}rbh:]h8]h9]h>]rhahXEnvironment.peekhjhuh@NhAhh(]r (h)r }r (h-Xpeekh.jh/hh4hh6}r (h8]h9]h:]h;]h>]uh@NhAhh(]r hPXpeekrr}r(h-Uh.j ubaubj)r}r(h-Uh.jh/hh4jh6}r(h8]h9]h:]h;]h>]uh@NhAhh(]ubeubh)r}r(h-Uh.jh/hh4hh6}r(h8]h9]h:]h;]h>]uh@NhAhh(]rhb)r}r(h-X_Get the time of the next scheduled event. Return :data:`Infinity` if there is no further event.h.jh/jh4heh6}r(h8]h9]h:]h;]h>]uh@KhAhh(]r(hPX1Get the time of the next scheduled event. Return rr}r(h-X1Get the time of the next scheduled event. Return h.jubhk)r}r (h-X:data:`Infinity`r!h.jh/h2h4hoh6}r"(UreftypeXdatahqhrXInfinityU refdomainXpyr#h;]h:]U refexplicith8]h9]h>]hthuhvjhwhxuh@Kh(]r$hJ)r%}r&(h-j!h6}r'(h8]h9]r((h~j#Xpy-datar)eh:]h;]h>]uh.jh(]r*hPXInfinityr+r,}r-(h-Uh.j%ubah4hTubaubhPX if there is no further event.r.r/}r0(h-X if there is no further event.h.jubeubaubeubhY)r1}r2(h-Uh.jh/Xc/var/build/user_builds/simpy/checkouts/3.0.5/simpy/core.py:docstring of simpy.core.Environment.stepr3h4h]h6}r4(h;]h:]h8]h9]h>]Uentries]r5(h`X&step() (simpy.core.Environment method)h Utr6auh@NhAhh(]ubh)r7}r8(h-Uh.jh/j3h4hh6}r9(hhXpyh;]h:]h8]h9]h>]hXmethodr:hj:uh@NhAhh(]r;(h)r<}r=(h-XEnvironment.step()h.j7h/hh4hh6}r>(h;]r?h ahh0X simpy.corer@rA}rBbh:]h8]h9]h>]rCh ahXEnvironment.stephjhuh@NhAhh(]rD(h)rE}rF(h-Xsteph.j<h/hh4hh6}rG(h8]h9]h:]h;]h>]uh@NhAhh(]rHhPXsteprIrJ}rK(h-Uh.jEubaubj)rL}rM(h-Uh.j<h/hh4jh6}rN(h8]h9]h:]h;]h>]uh@NhAhh(]ubeubh)rO}rP(h-Uh.j7h/hh4hh6}rQ(h8]h9]h:]h;]h>]uh@NhAhh(]rR(hb)rS}rT(h-XProcess the next event.rUh.jOh/j3h4heh6}rV(h8]h9]h:]h;]h>]uh@KhAhh(]rWhPXProcess the next event.rXrY}rZ(h-jUh.jSubaubhb)r[}r\(h-XARaise an :exc:`EmptySchedule` if no further events are available.h.jOh/j3h4heh6}r](h8]h9]h:]h;]h>]uh@KhAhh(]r^(hPX Raise an r_r`}ra(h-X Raise an h.j[ubhk)rb}rc(h-X:exc:`EmptySchedule`rdh.j[h/h2h4hoh6}re(UreftypeXexchqhrX EmptyScheduleU refdomainXpyrfh;]h:]U refexplicith8]h9]h>]hthuhvjhwhxuh@Kh(]rghJ)rh}ri(h-jdh6}rj(h8]h9]rk(h~jfXpy-excrleh:]h;]h>]uh.jbh(]rmhPX EmptySchedulernro}rp(h-Uh.jhubah4hTubaubhPX$ if no further events are available.rqrr}rs(h-X$ if no further events are available.h.j[ubeubeubeubhY)rt}ru(h-Uh.jh/Nh4h]h6}rv(h;]h:]h8]h9]h>]Uentries]rw(h`X%run() (simpy.core.Environment method)hUtrxauh@NhAhh(]ubh)ry}rz(h-Uh.jh/Nh4hh6}r{(hhXpyh;]h:]h8]h9]h>]hXmethodr|hj|uh@NhAhh(]r}(h)r~}r(h-XEnvironment.run(until=None)rh.jyh/hh4hh6}r(h;]rhahh0X simpy.corerr}rbh:]h8]h9]h>]rhahXEnvironment.runhjhuh@NhAhh(]r(h)r}r(h-Xrunh.j~h/hh4hh6}r(h8]h9]h:]h;]h>]uh@NhAhh(]rhPXrunrr}r(h-Uh.jubaubj)r}r(h-Uh.j~h/hh4jh6}r(h8]h9]h:]h;]h>]uh@NhAhh(]rj)r}r(h-X until=Noneh6}r(h8]h9]h:]h;]h>]uh.jh(]rhPX until=Nonerr}r(h-Uh.jubah4jubaubeubh)r}r(h-Uh.jyh/hh4hh6}r(h8]h9]h:]h;]h>]uh@NhAhh(]r(hb)r}r(h-XAExecutes :meth:`step()` until the given criterion *until* is met.rh.jh/Xb/var/build/user_builds/simpy/checkouts/3.0.5/simpy/core.py:docstring of simpy.core.Environment.runrh4heh6}r(h8]h9]h:]h;]h>]uh@KhAhh(]r(hPX Executes rr}r(h-X Executes h.jubhk)r}r(h-X:meth:`step()`rh.jh/h2h4hoh6}r(UreftypeXmethhqhrXstepU refdomainXpyrh;]h:]U refexplicith8]h9]h>]hthuhvjhwhxuh@Kh(]rhJ)r}r(h-jh6}r(h8]h9]r(h~jXpy-methreh:]h;]h>]uh.jh(]rhPXstep()rr}r(h-Uh.jubah4hTubaubhPX until the given criterion rr}r(h-X until the given criterion h.jubj)r}r(h-X*until*h6}r(h8]h9]h:]h;]h>]uh.jh(]rhPXuntilrr}r(h-Uh.jubah4jubhPX is met.rr}r(h-X is met.h.jubeubj)r}r(h-Uh.jh/jh4jh6}r(jX-h;]h:]h8]h9]h>]uh@KhAhh(]r(j)r}r(h-XqIf it is ``None`` (which is the default) this method will return if there are no further events to be processed. h.jh/jh4jh6}r(h8]h9]h:]h;]h>]uh@NhAhh(]rhb)r}r(h-XpIf it is ``None`` (which is the default) this method will return if there are no further events to be processed.h.jh/jh4heh6}r(h8]h9]h:]h;]h>]uh@Kh(]r(hPX If it is rr}r(h-X If it is h.jubhJ)r}r(h-X``None``h6}r(h8]h9]h:]h;]h>]uh.jh(]rhPXNonerr}r(h-Uh.jubah4hTubhPX_ (which is the default) this method will return if there are no further events to be processed.rr}r(h-X_ (which is the default) this method will return if there are no further events to be processed.h.jubeubaubj)r}r(h-XIf it is an :class:`~simpy.events.Event` the method will continue stepping until this event has been triggered and will return its value. h.jh/jh4jh6}r(h8]h9]h:]h;]h>]uh@NhAhh(]rhb)r}r(h-XIf it is an :class:`~simpy.events.Event` the method will continue stepping until this event has been triggered and will return its value.h.jh/jh4heh6}r(h8]h9]h:]h;]h>]uh@Kh(]r(hPX If it is an rr}r(h-X If it is an h.jubhk)r}r(h-X:class:`~simpy.events.Event`rh.jh/h2h4hoh6}r(UreftypeXclasshqhrXsimpy.events.EventU refdomainXpyrh;]h:]U refexplicith8]h9]h>]hthuhvjhwhxuh@K h(]rhJ)r}r(h-jh6}r(h8]h9]r(h~jXpy-classreh:]h;]h>]uh.jh(]rhPXEventrr}r(h-Uh.jubah4hTubaubhPXa the method will continue stepping until this event has been triggered and will return its value.rr}r(h-Xa the method will continue stepping until this event has been triggered and will return its value.h.jubeubaubj)r}r(h-XrIf it can be converted to a number the method will continue stepping until the environment's time reaches *until*.h.jh/jh4jh6}r(h8]h9]h:]h;]h>]uh@NhAhh(]rhb)r}r(h-XrIf it can be converted to a number the method will continue stepping until the environment's time reaches *until*.h.jh/jh4heh6}r(h8]h9]h:]h;]h>]uh@K h(]r(hPXjIf it can be converted to a number the method will continue stepping until the environment's time reaches rr}r(h-XjIf it can be converted to a number the method will continue stepping until the environment's time reaches h.jubj)r}r(h-X*until*h6}r(h8]h9]h:]h;]h>]uh.jh(]rhPXuntilrr }r (h-Uh.jubah4jubhPX.r }r (h-X.h.jubeubaubeubeubeubeubeubhY)r }r(h-Uh.h+h/Nh4h]h6}r(h;]h:]h8]h9]h>]Uentries]r(h`X BoundClass (class in simpy.core)hUtrauh@NhAhh(]ubh)r}r(h-Uh.h+h/Nh4hh6}r(hhXpyh;]h:]h8]h9]h>]hXclassrhjuh@NhAhh(]r(h)r}r(h-XBoundClass(cls)rh.jh/hh4hh6}r(h;]rhahh0X simpy.corerr}rbh:]h8]h9]h>]rhahX BoundClassr hUhuh@NhAhh(]r!(h)r"}r#(h-Xclass h.jh/hh4hh6}r$(h8]h9]h:]h;]h>]uh@NhAhh(]r%hPXclass r&r'}r((h-Uh.j"ubaubh)r)}r*(h-X simpy.core.h.jh/hh4hh6}r+(h8]h9]h:]h;]h>]uh@NhAhh(]r,hPX simpy.core.r-r.}r/(h-Uh.j)ubaubh)r0}r1(h-j h.jh/hh4hh6}r2(h8]h9]h:]h;]h>]uh@NhAhh(]r3hPX BoundClassr4r5}r6(h-Uh.j0ubaubj)r7}r8(h-Uh.jh/hh4jh6}r9(h8]h9]h:]h;]h>]uh@NhAhh(]r:j)r;}r<(h-Xclsh6}r=(h8]h9]h:]h;]h>]uh.j7h(]r>hPXclsr?r@}rA(h-Uh.j;ubah4jubaubeubh)rB}rC(h-Uh.jh/hh4hh6}rD(h8]h9]h:]h;]h>]uh@NhAhh(]rE(hb)rF}rG(h-X&Allows classes to behave like methods.rHh.jBh/X]/var/build/user_builds/simpy/checkouts/3.0.5/simpy/core.py:docstring of simpy.core.BoundClassrIh4heh6}rJ(h8]h9]h:]h;]h>]uh@KhAhh(]rKhPX&Allows classes to behave like methods.rLrM}rN(h-jHh.jFubaubhb)rO}rP(h-XThe ``__get__()`` descriptor is basically identical to ``function.__get__()`` and binds the first argument of the ``cls`` to the descriptor instance.h.jBh/jIh4heh6}rQ(h8]h9]h:]h;]h>]uh@KhAhh(]rR(hPXThe rSrT}rU(h-XThe h.jOubhJ)rV}rW(h-X ``__get__()``h6}rX(h8]h9]h:]h;]h>]uh.jOh(]rYhPX __get__()rZr[}r\(h-Uh.jVubah4hTubhPX& descriptor is basically identical to r]r^}r_(h-X& descriptor is basically identical to h.jOubhJ)r`}ra(h-X``function.__get__()``h6}rb(h8]h9]h:]h;]h>]uh.jOh(]rchPXfunction.__get__()rdre}rf(h-Uh.j`ubah4hTubhPX% and binds the first argument of the rgrh}ri(h-X% and binds the first argument of the h.jOubhJ)rj}rk(h-X``cls``h6}rl(h8]h9]h:]h;]h>]uh.jOh(]rmhPXclsrnro}rp(h-Uh.jjubah4hTubhPX to the descriptor instance.rqrr}rs(h-X to the descriptor instance.h.jOubeubhY)rt}ru(h-Uh.jBh/Xh/var/build/user_builds/simpy/checkouts/3.0.5/simpy/core.py:docstring of simpy.core.BoundClass.bind_earlyrvh4h]h6}rw(h;]h:]h8]h9]h>]Uentries]rx(h`X2bind_early() (simpy.core.BoundClass static method)hUtryauh@NhAhh(]ubh)rz}r{(h-Uh.jBh/jvh4hh6}r|(hhXpyh;]h:]h8]h9]h>]hX staticmethodr}hj}uh@NhAhh(]r~(h)r}r(h-XBoundClass.bind_early(instance)rh.jzh/hh4hh6}r(h;]rhahh0X simpy.corerr}rbh:]h8]h9]h>]rhahXBoundClass.bind_earlyhj huh@NhAhh(]r(h)r}r(h-Ustatic rh.jh/hh4hh6}r(h8]h9]h:]h;]h>]uh@NhAhh(]rhPXstatic rr}r(h-Uh.jubaubh)r}r(h-X bind_earlyh.jh/hh4hh6}r(h8]h9]h:]h;]h>]uh@NhAhh(]rhPX bind_earlyrr}r(h-Uh.jubaubj)r}r(h-Uh.jh/hh4jh6}r(h8]h9]h:]h;]h>]uh@NhAhh(]rj)r}r(h-Xinstanceh6}r(h8]h9]h:]h;]h>]uh.jh(]rhPXinstancerr}r(h-Uh.jubah4jubaubeubh)r}r(h-Uh.jzh/hh4hh6}r(h8]h9]h:]h;]h>]uh@NhAhh(]rhb)r}r(h-XqBind all :class:`BoundClass` attributes of the *instance's* class to the instance itself to increase performance.h.jh/jvh4heh6}r(h8]h9]h:]h;]h>]uh@KhAhh(]r(hPX Bind all rr}r(h-X Bind all h.jubhk)r}r(h-X:class:`BoundClass`rh.jh/h2h4hoh6}r(UreftypeXclasshqhrX BoundClassU refdomainXpyrh;]h:]U refexplicith8]h9]h>]hthuhvj hwhxuh@Kh(]rhJ)r}r(h-jh6}r(h8]h9]r(h~jXpy-classreh:]h;]h>]uh.jh(]rhPX BoundClassrr}r(h-Uh.jubah4hTubaubhPX attributes of the rr}r(h-X attributes of the h.jubj)r}r(h-X *instance's*h6}r(h8]h9]h:]h;]h>]uh.jh(]rhPX instance'srr}r(h-Uh.jubah4jubhPX6 class to the instance itself to increase performance.rr}r(h-X6 class to the instance itself to increase performance.h.jubeubaubeubeubeubhY)r}r(h-Uh.h+h/X`/var/build/user_builds/simpy/checkouts/3.0.5/simpy/core.py:docstring of simpy.core.EmptySchedulerh4h]h6}r(h;]h:]h8]h9]h>]Uentries]r(h`X#EmptySchedule (class in simpy.core)hUtrauh@NhAhh(]ubh)r}r(h-Uh.h+h/jh4hh6}r(hhXpyh;]h:]h8]h9]h>]hXclassrhjuh@NhAhh(]r(h)r}r(h-X EmptySchedulerh.jh/hh4hh6}r(h;]rhahh0X simpy.corerr}rbh:]h8]h9]h>]rhahjhUhuh@NhAhh(]r(h)r}r(h-Xclass h.jh/hh4hh6}r(h8]h9]h:]h;]h>]uh@NhAhh(]rhPXclass rr}r(h-Uh.jubaubh)r}r(h-X simpy.core.h.jh/hh4hh6}r(h8]h9]h:]h;]h>]uh@NhAhh(]rhPX simpy.core.rr}r(h-Uh.jubaubh)r}r(h-jh.jh/hh4hh6}r(h8]h9]h:]h;]h>]uh@NhAhh(]rhPX EmptySchedulerr}r(h-Uh.jubaubeubh)r}r(h-Uh.jh/hh4hh6}r(h8]h9]h:]h;]h>]uh@NhAhh(]rhb)r}r(h-XRThrown by the :class:`Environment` if there are no further events to be processed.h.jh/jh4heh6}r(h8]h9]h:]h;]h>]uh@KhAhh(]r(hPXThrown by the rr}r(h-XThrown by the h.jubhk)r}r(h-X:class:`Environment`rh.jh/h2h4hoh6}r(UreftypeXclasshqhrX EnvironmentU refdomainXpyrh;]h:]U refexplicith8]h9]h>]hthuhvjhwhxuh@Kh(]rhJ)r}r(h-jh6}r(h8]h9]r(h~jXpy-classr eh:]h;]h>]uh.jh(]r hPX Environmentr r }r (h-Uh.jubah4hTubaubhPX0 if there are no further events to be processed.rr}r(h-X0 if there are no further events to be processed.h.jubeubaubeubhY)r}r(h-Uh.h+h/X[/var/build/user_builds/simpy/checkouts/3.0.5/simpy/core.py:docstring of simpy.core.Infinityrh4h]h6}r(h;]h:]h8]h9]h>]Uentries]r(h`XInfinity (in module simpy.core)h Utrauh@NhAhh(]ubh)r}r(h-Uh.h+h/jh4hh6}r(hhXpyh;]h:]h8]h9]h>]hXdatarhjuh@NhAhh(]r(h)r}r(h-XInfinityrh.jh/U rh4hh6}r (h;]r!h ahh0X simpy.corer"r#}r$bh:]h8]h9]h>]r%h ahjhUhuh@NhAhh(]r&(h)r'}r((h-X simpy.core.h.jh/jh4hh6}r)(h8]h9]h:]h;]h>]uh@NhAhh(]r*hPX simpy.core.r+r,}r-(h-Uh.j'ubaubh)r.}r/(h-jh.jh/jh4hh6}r0(h8]h9]h:]h;]h>]uh@NhAhh(]r1hPXInfinityr2r3}r4(h-Uh.j.ubaubh)r5}r6(h-X = infh.jh/jh4hh6}r7(h8]h9]h:]h;]h>]uh@NhAhh(]r8hPX = infr9r:}r;(h-Uh.j5ubaubeubh)r<}r=(h-Uh.jh/jh4hh6}r>(h8]h9]h:]h;]h>]uh@NhAhh(]r?hb)r@}rA(h-XConvenience alias for infinityrBh.j<h/jh4heh6}rC(h8]h9]h:]h;]h>]uh@KhAhh(]rDhPXConvenience alias for infinityrErF}rG(h-jBh.j@ubaubaubeubeubah-UU transformerrHNU footnote_refsrI}rJUrefnamesrK}rLUsymbol_footnotesrM]rNUautofootnote_refsrO]rPUsymbol_footnote_refsrQ]rRU citationsrS]rThAhU current_linerUNUtransform_messagesrV]rWUreporterrXNUid_startrYKU autofootnotesrZ]r[U citation_refsr\}r]Uindirect_targetsr^]r_Usettingsr`(cdocutils.frontend Values raorb}rc(Ufootnote_backlinksrdKUrecord_dependenciesreNU rfc_base_urlrfUhttp://tools.ietf.org/html/rgU tracebackrhUpep_referencesriNUstrip_commentsrjNU toc_backlinksrkUentryrlU language_codermUenrnU datestamproNU report_levelrpKU _destinationrqNU halt_levelrrKU strip_classesrsNhGNUerror_encoding_error_handlerrtUbackslashreplaceruUdebugrvNUembed_stylesheetrwUoutput_encoding_error_handlerrxUstrictryU sectnum_xformrzKUdump_transformsr{NU docinfo_xformr|KUwarning_streamr}NUpep_file_url_templater~Upep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerUN/var/build/user_builds/simpy/checkouts/3.0.5/docs/api_reference/simpy.core.rstrUgettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjyUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hjhjhjh=cdocutils.nodes target r)r}r(h-Uh.h+h/h\h4Utargetrh6}r(h8]h;]rh=ah:]Uismodh9]h>]uh@KhAhh(]ubh jh hh j<h j0h jhj~hjhjhjhjRhjhjVhj}hj hjYhj2hjhjhjh'h+hjuUsubstitution_namesr}rh4hAh6}r(h8]h;]h:]Usourceh2h9]h>]uU footnotesr]rUrefidsr}rub.PK.D"ΣJJ@simpy-3.0.5/.doctrees/api_reference/simpy.resources.base.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X+simpy.resources.base.BaseResource.get_queueqX%simpy.resources.base.BaseResource.putqX.simpy.resources.base.BaseResource._trigger_getqXsimpy.resources.base.Get.cancelq X*simpy.resources.base.BaseResource.GetQueueq X.simpy.resources.base.BaseResource._trigger_putq Xsimpy.resources.base.Put.cancelq X)simpy.resources.base.BaseResource._do_getq X+simpy.resources.base.BaseResource.put_queueqX)simpy.resources.base.BaseResource._do_putqXsimpy.resources.base.PutqX%simpy.resources.base.BaseResource.getqX!simpy.resources.base.BaseResourceqX7simpy.resources.base --- base classes for all resourcesqNXsimpy.resources.base.GetqX*simpy.resources.base.BaseResource.PutQueuequUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hhhhhhh h h h h h h h h h hhhhhhhhhhhU3simpy-resources-base-base-classes-for-all-resourcesqhhhhuUchildrenq ]q!cdocutils.nodes section q")q#}q$(U rawsourceq%UUparentq&hUsourceq'cdocutils.nodes reprunicode q(XX/var/build/user_builds/simpy/checkouts/3.0.5/docs/api_reference/simpy.resources.base.rstq)q*}q+bUtagnameq,Usectionq-U attributesq.}q/(Udupnamesq0]Uclassesq1]Ubackrefsq2]Uidsq3]q4(Xmodule-simpy.resources.baseq5heUnamesq6]q7hauUlineq8KUdocumentq9hh ]q:(cdocutils.nodes title q;)q<}q=(h%X;``simpy.resources.base`` --- Base classes for all resourcesq>h&h#h'h*h,Utitleq?h.}q@(h0]h1]h2]h3]h6]uh8Kh9hh ]qA(cdocutils.nodes literal qB)qC}qD(h%X``simpy.resources.base``qEh.}qF(h0]h1]h2]h3]h6]uh&hqTh,UindexqUh.}qV(h3]h2]h0]h1]h6]Uentries]qW(UsingleqXXsimpy.resources.base (module)Xmodule-simpy.resources.baseUtqYauh8Kh9hh ]ubcdocutils.nodes paragraph qZ)q[}q\(h%XBThis module contains the base classes for Simpy's resource system.q]h&h#h'Xf/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/base.py:docstring of simpy.resources.baseq^h,U paragraphq_h.}q`(h0]h1]h2]h3]h6]uh8Kh9hh ]qahHXBThis module contains the base classes for Simpy's resource system.qbqc}qd(h%h]h&h[ubaubhZ)qe}qf(h%X:class:`BaseResource` defines the abstract base resource. The request for putting something into or getting something out of a resource is modeled as an event that has to be yielded by the requesting process. :class:`Put` and :class:`Get` are the base event types for this.h&h#h'h^h,h_h.}qg(h0]h1]h2]h3]h6]uh8Kh9hh ]qh(csphinx.addnodes pending_xref qi)qj}qk(h%X:class:`BaseResource`qlh&heh'h*h,U pending_xrefqmh.}qn(UreftypeXclassUrefwarnqoU reftargetqpX BaseResourceU refdomainXpyqqh3]h2]U refexplicith0]h1]h6]UrefdocqrX"api_reference/simpy.resources.baseqsUpy:classqtNU py:modulequXsimpy.resources.baseqvuh8Kh ]qwhB)qx}qy(h%hlh.}qz(h0]h1]q{(Uxrefq|hqXpy-classq}eh2]h3]h6]uh&hjh ]q~hHX BaseResourceqq}q(h%Uh&hxubah,hLubaubhHX defines the abstract base resource. The request for putting something into or getting something out of a resource is modeled as an event that has to be yielded by the requesting process. qq}q(h%X defines the abstract base resource. The request for putting something into or getting something out of a resource is modeled as an event that has to be yielded by the requesting process. h&heubhi)q}q(h%X :class:`Put`qh&heh'h*h,hmh.}q(UreftypeXclasshohpXPutU refdomainXpyqh3]h2]U refexplicith0]h1]h6]hrhshtNhuhvuh8Kh ]qhB)q}q(h%hh.}q(h0]h1]q(h|hXpy-classqeh2]h3]h6]uh&hh ]qhHXPutqq}q(h%Uh&hubah,hLubaubhHX and qq}q(h%X and h&heubhi)q}q(h%X :class:`Get`qh&heh'h*h,hmh.}q(UreftypeXclasshohpXGetU refdomainXpyqh3]h2]U refexplicith0]h1]h6]hrhshtNhuhvuh8Kh ]qhB)q}q(h%hh.}q(h0]h1]q(h|hXpy-classqeh2]h3]h6]uh&hh ]qhHXGetqq}q(h%Uh&hubah,hLubaubhHX# are the base event types for this.qq}q(h%X# are the base event types for this.h&heubeubhQ)q}q(h%Uh&h#h'Nh,hUh.}q(h3]h2]h0]h1]h6]Uentries]q(hXX,BaseResource (class in simpy.resources.base)hUtqauh8Nh9hh ]ubcsphinx.addnodes desc q)q}q(h%Uh&h#h'Nh,Udescqh.}q(UnoindexqUdomainqXpyh3]h2]h0]h1]h6]UobjtypeqXclassqUdesctypeqhuh8Nh9hh ]q(csphinx.addnodes desc_signature q)q}q(h%XBaseResource(env)h&hh'U qh,Udesc_signatureqh.}q(h3]qhaUmoduleqh(Xsimpy.resources.baseqq}qbh2]h0]h1]h6]qhaUfullnameqX BaseResourceqUclassqUUfirstqȉuh8Nh9hh ]q(csphinx.addnodes desc_annotation q)q}q(h%Xclass h&hh'hh,Udesc_annotationqh.}q(h0]h1]h2]h3]h6]uh8Nh9hh ]qhHXclass qЅq}q(h%Uh&hubaubcsphinx.addnodes desc_addname q)q}q(h%Xsimpy.resources.base.h&hh'hh,U desc_addnameqh.}q(h0]h1]h2]h3]h6]uh8Nh9hh ]qhHXsimpy.resources.base.qمq}q(h%Uh&hubaubcsphinx.addnodes desc_name q)q}q(h%hh&hh'hh,U desc_nameqh.}q(h0]h1]h2]h3]h6]uh8Nh9hh ]qhHX BaseResourceq⅁q}q(h%Uh&hubaubcsphinx.addnodes desc_parameterlist q)q}q(h%Uh&hh'hh,Udesc_parameterlistqh.}q(h0]h1]h2]h3]h6]uh8Nh9hh ]qcsphinx.addnodes desc_parameter q)q}q(h%Xenvh.}q(h0]h1]h2]h3]h6]uh&hh ]qhHXenvqq}q(h%Uh&hubah,Udesc_parameterqubaubeubcsphinx.addnodes desc_content q)q}q(h%Uh&hh'hh,U desc_contentqh.}q(h0]h1]h2]h3]h6]uh8Nh9hh ]q(hZ)q}q(h%X8This is the abstract base class for all SimPy resources.qh&hh'Xs/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/base.py:docstring of simpy.resources.base.BaseResourceqh,h_h.}q(h0]h1]h2]h3]h6]uh8Kh9hh ]qhHX8This is the abstract base class for all SimPy resources.rr}r(h%hh&hubaubhZ)r}r(h%XMAll resources are bound to a specific :class:`~simpy.core.Environment` *env*.h&hh'hh,h_h.}r(h0]h1]h2]h3]h6]uh8Kh9hh ]r(hHX&All resources are bound to a specific rr}r (h%X&All resources are bound to a specific h&jubhi)r }r (h%X :class:`~simpy.core.Environment`r h&jh'h*h,hmh.}r (UreftypeXclasshohpXsimpy.core.EnvironmentU refdomainXpyrh3]h2]U refexplicith0]h1]h6]hrhshthhuhvuh8Kh ]rhB)r}r(h%j h.}r(h0]h1]r(h|jXpy-classreh2]h3]h6]uh&j h ]rhHX Environmentrr}r(h%Uh&jubah,hLubaubhHX r}r(h%X h&jubcdocutils.nodes emphasis r)r}r(h%X*env*h.}r(h0]h1]h2]h3]h6]uh&jh ]rhHXenvr r!}r"(h%Uh&jubah,Uemphasisr#ubhHX.r$}r%(h%X.h&jubeubhZ)r&}r'(h%XYou can :meth:`put()` something into the resources or :meth:`get()` something out of it. Both methods return an event that the requesting process has to ``yield``.h&hh'hh,h_h.}r((h0]h1]h2]h3]h6]uh8Kh9hh ]r)(hHXYou can r*r+}r,(h%XYou can h&j&ubhi)r-}r.(h%X :meth:`put()`r/h&j&h'h*h,hmh.}r0(UreftypeXmethhohpXputU refdomainXpyr1h3]h2]U refexplicith0]h1]h6]hrhshthhuhvuh8K h ]r2hB)r3}r4(h%j/h.}r5(h0]h1]r6(h|j1Xpy-methr7eh2]h3]h6]uh&j-h ]r8hHXput()r9r:}r;(h%Uh&j3ubah,hLubaubhHX! something into the resources or r<r=}r>(h%X! something into the resources or h&j&ubhi)r?}r@(h%X :meth:`get()`rAh&j&h'h*h,hmh.}rB(UreftypeXmethhohpXgetU refdomainXpyrCh3]h2]U refexplicith0]h1]h6]hrhshthhuhvuh8K h ]rDhB)rE}rF(h%jAh.}rG(h0]h1]rH(h|jCXpy-methrIeh2]h3]h6]uh&j?h ]rJhHXget()rKrL}rM(h%Uh&jEubah,hLubaubhHXV something out of it. Both methods return an event that the requesting process has to rNrO}rP(h%XV something out of it. Both methods return an event that the requesting process has to h&j&ubhB)rQ}rR(h%X ``yield``h.}rS(h0]h1]h2]h3]h6]uh&j&h ]rThHXyieldrUrV}rW(h%Uh&jQubah,hLubhHX.rX}rY(h%X.h&j&ubeubhZ)rZ}r[(h%XIf a put or get operation can be performed immediately (because the resource is not full (put) or not empty (get)), that event is triggered immediately.r\h&hh'hh,h_h.}r](h0]h1]h2]h3]h6]uh8K h9hh ]r^hHXIf a put or get operation can be performed immediately (because the resource is not full (put) or not empty (get)), that event is triggered immediately.r_r`}ra(h%j\h&jZubaubhZ)rb}rc(h%XIf a resources is too full or too empty to perform a put or get request, the event is pushed to the *put_queue* or *get_queue*. An event is popped from one of these queues and triggered as soon as the corresponding operation is possible.h&hh'hh,h_h.}rd(h0]h1]h2]h3]h6]uh8Kh9hh ]re(hHXdIf a resources is too full or too empty to perform a put or get request, the event is pushed to the rfrg}rh(h%XdIf a resources is too full or too empty to perform a put or get request, the event is pushed to the h&jbubj)ri}rj(h%X *put_queue*h.}rk(h0]h1]h2]h3]h6]uh&jbh ]rlhHX put_queuermrn}ro(h%Uh&jiubah,j#ubhHX or rprq}rr(h%X or h&jbubj)rs}rt(h%X *get_queue*h.}ru(h0]h1]h2]h3]h6]uh&jbh ]rvhHX get_queuerwrx}ry(h%Uh&jsubah,j#ubhHXo. An event is popped from one of these queues and triggered as soon as the corresponding operation is possible.rzr{}r|(h%Xo. An event is popped from one of these queues and triggered as soon as the corresponding operation is possible.h&jbubeubhZ)r}}r~(h%X:meth:`put()` and :meth:`get()` only provide the user API and the general framework and should not be overridden in subclasses. The actual behavior for what happens when a put/get succeeds should rather be implemented in :meth:`_do_put()` and :meth:`_do_get()`.h&hh'hh,h_h.}r(h0]h1]h2]h3]h6]uh8Kh9hh ]r(hi)r}r(h%X :meth:`put()`rh&j}h'Nh,hmh.}r(UreftypeXmethhohpXputU refdomainXpyrh3]h2]U refexplicith0]h1]h6]hrhshthhuhvuh8Nh ]rhB)r}r(h%jh.}r(h0]h1]r(h|jXpy-methreh2]h3]h6]uh&jh ]rhHXput()rr}r(h%Uh&jubah,hLubaubhHX and rr}r(h%X and h&j}ubhi)r}r(h%X :meth:`get()`rh&j}h'Nh,hmh.}r(UreftypeXmethhohpXgetU refdomainXpyrh3]h2]U refexplicith0]h1]h6]hrhshthhuhvuh8Nh ]rhB)r}r(h%jh.}r(h0]h1]r(h|jXpy-methreh2]h3]h6]uh&jh ]rhHXget()rr}r(h%Uh&jubah,hLubaubhHX only provide the user API and the general framework and should not be overridden in subclasses. The actual behavior for what happens when a put/get succeeds should rather be implemented in rr}r(h%X only provide the user API and the general framework and should not be overridden in subclasses. The actual behavior for what happens when a put/get succeeds should rather be implemented in h&j}ubhi)r}r(h%X:meth:`_do_put()`rh&j}h'Nh,hmh.}r(UreftypeXmethhohpX_do_putU refdomainXpyrh3]h2]U refexplicith0]h1]h6]hrhshthhuhvuh8Nh ]rhB)r}r(h%jh.}r(h0]h1]r(h|jXpy-methreh2]h3]h6]uh&jh ]rhHX _do_put()rr}r(h%Uh&jubah,hLubaubhHX and rr}r(h%X and h&j}ubhi)r}r(h%X:meth:`_do_get()`rh&j}h'Nh,hmh.}r(UreftypeXmethhohpX_do_getU refdomainXpyrh3]h2]U refexplicith0]h1]h6]hrhshthhuhvuh8Nh ]rhB)r}r(h%jh.}r(h0]h1]r(h|jXpy-methreh2]h3]h6]uh&jh ]rhHX _do_get()rr}r(h%Uh&jubah,hLubaubhHX.r}r(h%X.h&j}ubeubhQ)r}r(h%Uh&hh'Uh,hUh.}r(h3]h2]h0]h1]h6]Uentries]r(hXX6PutQueue (simpy.resources.base.BaseResource attribute)hUtrauh8Nh9hh ]ubh)r}r(h%Uh&hh'Uh,hh.}r(hhXpyh3]h2]h0]h1]h6]hX attributerhjuh8Nh9hh ]r(h)r}r(h%XBaseResource.PutQueueh&jh'hh,hh.}r(h3]rhahh(Xsimpy.resources.baserr}rbh2]h0]h1]h6]rhahXBaseResource.PutQueuehhhȉuh8Nh9hh ]rh)r}r(h%XPutQueueh&jh'hh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh ]rhHXPutQueuerr}r(h%Uh&jubaubaubh)r}r(h%Uh&jh'hh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh ]r(hZ)r}r(h%XvThe type to be used for the :attr:`put_queue`. This can either be a plain :class:`list` (default) or a subclass of it.h&jh'X|/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/base.py:docstring of simpy.resources.base.BaseResource.PutQueueh,h_h.}r(h0]h1]h2]h3]h6]uh8Kh9hh ]r(hHXThe type to be used for the rr}r(h%XThe type to be used for the h&jubhi)r}r(h%X:attr:`put_queue`rh&jh'Nh,hmh.}r(UreftypeXattrhohpX put_queueU refdomainXpyrh3]h2]U refexplicith0]h1]h6]hrhshthhuhvuh8Nh ]rhB)r}r(h%jh.}r(h0]h1]r(h|jXpy-attrreh2]h3]h6]uh&jh ]rhHX put_queuerr}r(h%Uh&jubah,hLubaubhHX. This can either be a plain rr}r(h%X. This can either be a plain h&jubhi)r}r(h%X :class:`list`rh&jh'Nh,hmh.}r(UreftypeXclasshohpXlistU refdomainXpyrh3]h2]U refexplicith0]h1]h6]hrhshthhuhvuh8Nh ]rhB)r}r(h%jh.}r(h0]h1]r(h|jXpy-classr eh2]h3]h6]uh&jh ]r hHXlistr r }r (h%Uh&jubah,hLubaubhHX (default) or a subclass of it.rr}r(h%X (default) or a subclass of it.h&jubeubhZ)r}r(h%Xalias of :class:`list`h&jh'Uh,h_h.}r(h0]h1]h2]h3]h6]uh8Kh9hh ]r(hHX alias of rr}r(h%X alias of h&jubhi)r}r(h%X :class:`list`rh&jh'Nh,hmh.}r(UreftypeXclasshohpXlistU refdomainXpyrh3]h2]U refexplicith0]h1]h6]hrhshthhuhvuh8Nh ]rhB)r}r(h%jh.}r (h0]h1]r!(h|jXpy-classr"eh2]h3]h6]uh&jh ]r#hHXlistr$r%}r&(h%Uh&jubah,hLubaubeubeubeubhQ)r'}r((h%Uh&hh'Uh,hUh.}r)(h3]h2]h0]h1]h6]Uentries]r*(hXX6GetQueue (simpy.resources.base.BaseResource attribute)h Utr+auh8Nh9hh ]ubh)r,}r-(h%Uh&hh'Uh,hh.}r.(hhXpyh3]h2]h0]h1]h6]hX attributer/hj/uh8Nh9hh ]r0(h)r1}r2(h%XBaseResource.GetQueueh&j,h'hh,hh.}r3(h3]r4h ahh(Xsimpy.resources.baser5r6}r7bh2]h0]h1]h6]r8h ahXBaseResource.GetQueuehhhȉuh8Nh9hh ]r9h)r:}r;(h%XGetQueueh&j1h'hh,hh.}r<(h0]h1]h2]h3]h6]uh8Nh9hh ]r=hHXGetQueuer>r?}r@(h%Uh&j:ubaubaubh)rA}rB(h%Uh&j,h'hh,hh.}rC(h0]h1]h2]h3]h6]uh8Nh9hh ]rD(hZ)rE}rF(h%XvThe type to be used for the :attr:`get_queue`. This can either be a plain :class:`list` (default) or a subclass of it.h&jAh'X|/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/base.py:docstring of simpy.resources.base.BaseResource.GetQueueh,h_h.}rG(h0]h1]h2]h3]h6]uh8Kh9hh ]rH(hHXThe type to be used for the rIrJ}rK(h%XThe type to be used for the h&jEubhi)rL}rM(h%X:attr:`get_queue`rNh&jEh'Nh,hmh.}rO(UreftypeXattrhohpX get_queueU refdomainXpyrPh3]h2]U refexplicith0]h1]h6]hrhshthhuhvuh8Nh ]rQhB)rR}rS(h%jNh.}rT(h0]h1]rU(h|jPXpy-attrrVeh2]h3]h6]uh&jLh ]rWhHX get_queuerXrY}rZ(h%Uh&jRubah,hLubaubhHX. This can either be a plain r[r\}r](h%X. This can either be a plain h&jEubhi)r^}r_(h%X :class:`list`r`h&jEh'Nh,hmh.}ra(UreftypeXclasshohpXlistU refdomainXpyrbh3]h2]U refexplicith0]h1]h6]hrhshthhuhvuh8Nh ]rchB)rd}re(h%j`h.}rf(h0]h1]rg(h|jbXpy-classrheh2]h3]h6]uh&j^h ]rihHXlistrjrk}rl(h%Uh&jdubah,hLubaubhHX (default) or a subclass of it.rmrn}ro(h%X (default) or a subclass of it.h&jEubeubhZ)rp}rq(h%Xalias of :class:`list`h&jAh'Uh,h_h.}rr(h0]h1]h2]h3]h6]uh8Kh9hh ]rs(hHX alias of rtru}rv(h%X alias of h&jpubhi)rw}rx(h%X :class:`list`ryh&jph'Nh,hmh.}rz(UreftypeXclasshohpXlistU refdomainXpyr{h3]h2]U refexplicith0]h1]h6]hrhshthhuhvuh8Nh ]r|hB)r}}r~(h%jyh.}r(h0]h1]r(h|j{Xpy-classreh2]h3]h6]uh&jwh ]rhHXlistrr}r(h%Uh&j}ubah,hLubaubeubeubeubhQ)r}r(h%Uh&hh'X}/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/base.py:docstring of simpy.resources.base.BaseResource.put_queuerh,hUh.}r(h3]h2]h0]h1]h6]Uentries]r(hXX7put_queue (simpy.resources.base.BaseResource attribute)hUtrauh8Nh9hh ]ubh)r}r(h%Uh&hh'jh,hh.}r(hhXpyh3]h2]h0]h1]h6]hX attributerhjuh8Nh9hh ]r(h)r}r(h%XBaseResource.put_queueh&jh'U rh,hh.}r(h3]rhahh(Xsimpy.resources.baserr}rbh2]h0]h1]h6]rhahXBaseResource.put_queuehhhȉuh8Nh9hh ]r(h)r}r(h%X put_queueh&jh'jh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh ]rhHX put_queuerr}r(h%Uh&jubaubh)r}r(h%X = Noneh&jh'jh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh ]rhHX = Nonerr}r(h%Uh&jubaubeubh)r}r(h%Uh&jh'jh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh ]rhZ)r}r(h%XBQueue/list of events waiting to get something out of the resource.rh&jh'jh,h_h.}r(h0]h1]h2]h3]h6]uh8Kh9hh ]rhHXBQueue/list of events waiting to get something out of the resource.rr}r(h%jh&jubaubaubeubhQ)r}r(h%Uh&hh'X}/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/base.py:docstring of simpy.resources.base.BaseResource.get_queuerh,hUh.}r(h3]h2]h0]h1]h6]Uentries]r(hXX7get_queue (simpy.resources.base.BaseResource attribute)hUtrauh8Nh9hh ]ubh)r}r(h%Uh&hh'jh,hh.}r(hhXpyh3]h2]h0]h1]h6]hX attributerhjuh8Nh9hh ]r(h)r}r(h%XBaseResource.get_queueh&jh'jh,hh.}r(h3]rhahh(Xsimpy.resources.baserr}rbh2]h0]h1]h6]rhahXBaseResource.get_queuehhhȉuh8Nh9hh ]r(h)r}r(h%X get_queueh&jh'jh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh ]rhHX get_queuerr}r(h%Uh&jubaubh)r}r(h%X = Noneh&jh'jh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh ]rhHX = Nonerr}r(h%Uh&jubaubeubh)r}r(h%Uh&jh'jh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh ]rhZ)r}r(h%X@Queue/list of events waiting to put something into the resource.rh&jh'jh,h_h.}r(h0]h1]h2]h3]h6]uh8Kh9hh ]rhHX@Queue/list of events waiting to put something into the resource.rr}r(h%jh&jubaubaubeubhQ)r}r(h%Uh&hh'Uh,hUh.}r(h3]h2]h0]h1]h6]Uentries]r(hXX1put (simpy.resources.base.BaseResource attribute)hUtrauh8Nh9hh ]ubh)r}r(h%Uh&hh'Uh,hh.}r(hhXpyh3]h2]h0]h1]h6]hX attributerhjuh8Nh9hh ]r(h)r}r(h%XBaseResource.puth&jh'hh,hh.}r(h3]rhahh(Xsimpy.resources.baserr}rbh2]h0]h1]h6]rhahXBaseResource.puthhhȉuh8Nh9hh ]rh)r}r(h%Xputh&jh'hh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh ]rhHXputrr}r(h%Uh&jubaubaubh)r}r(h%Uh&jh'hh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh ]r(hZ)r}r(h%X Create a new :class:`Put` event.h&jh'Xw/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/base.py:docstring of simpy.resources.base.BaseResource.puth,h_h.}r(h0]h1]h2]h3]h6]uh8Kh9hh ]r(hHX Create a new rr}r(h%X Create a new h&jubhi)r}r (h%X :class:`Put`r h&jh'Nh,hmh.}r (UreftypeXclasshohpXPutU refdomainXpyr h3]h2]U refexplicith0]h1]h6]hrhshthhuhvuh8Nh ]r hB)r}r(h%j h.}r(h0]h1]r(h|j Xpy-classreh2]h3]h6]uh&jh ]rhHXPutrr}r(h%Uh&jubah,hLubaubhHX event.rr}r(h%X event.h&jubeubhZ)r}r(h%Xalias of :class:`Put`h&jh'Uh,h_h.}r(h0]h1]h2]h3]h6]uh8Kh9hh ]r(hHX alias of rr}r (h%X alias of h&jubhi)r!}r"(h%X :class:`Put`r#h&jh'Nh,hmh.}r$(UreftypeXclasshohpXPutU refdomainXpyr%h3]h2]U refexplicith0]h1]h6]hrhshthhuhvuh8Nh ]r&hB)r'}r((h%j#h.}r)(h0]h1]r*(h|j%Xpy-classr+eh2]h3]h6]uh&j!h ]r,hHXPutr-r.}r/(h%Uh&j'ubah,hLubaubeubeubeubhQ)r0}r1(h%Uh&hh'Uh,hUh.}r2(h3]h2]h0]h1]h6]Uentries]r3(hXX1get (simpy.resources.base.BaseResource attribute)hUtr4auh8Nh9hh ]ubh)r5}r6(h%Uh&hh'Uh,hh.}r7(hhXpyh3]h2]h0]h1]h6]hX attributer8hj8uh8Nh9hh ]r9(h)r:}r;(h%XBaseResource.geth&j5h'hh,hh.}r<(h3]r=hahh(Xsimpy.resources.baser>r?}r@bh2]h0]h1]h6]rAhahXBaseResource.gethhhȉuh8Nh9hh ]rBh)rC}rD(h%Xgeth&j:h'hh,hh.}rE(h0]h1]h2]h3]h6]uh8Nh9hh ]rFhHXgetrGrH}rI(h%Uh&jCubaubaubh)rJ}rK(h%Uh&j5h'hh,hh.}rL(h0]h1]h2]h3]h6]uh8Nh9hh ]rM(hZ)rN}rO(h%X Create a new :class:`Get` event.h&jJh'Xw/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/base.py:docstring of simpy.resources.base.BaseResource.geth,h_h.}rP(h0]h1]h2]h3]h6]uh8Kh9hh ]rQ(hHX Create a new rRrS}rT(h%X Create a new h&jNubhi)rU}rV(h%X :class:`Get`rWh&jNh'Nh,hmh.}rX(UreftypeXclasshohpXGetU refdomainXpyrYh3]h2]U refexplicith0]h1]h6]hrhshthhuhvuh8Nh ]rZhB)r[}r\(h%jWh.}r](h0]h1]r^(h|jYXpy-classr_eh2]h3]h6]uh&jUh ]r`hHXGetrarb}rc(h%Uh&j[ubah,hLubaubhHX event.rdre}rf(h%X event.h&jNubeubhZ)rg}rh(h%Xalias of :class:`Get`h&jJh'Uh,h_h.}ri(h0]h1]h2]h3]h6]uh8Kh9hh ]rj(hHX alias of rkrl}rm(h%X alias of h&jgubhi)rn}ro(h%X :class:`Get`rph&jgh'Nh,hmh.}rq(UreftypeXclasshohpXGetU refdomainXpyrrh3]h2]U refexplicith0]h1]h6]hrhshthhuhvuh8Nh ]rshB)rt}ru(h%jph.}rv(h0]h1]rw(h|jrXpy-classrxeh2]h3]h6]uh&jnh ]ryhHXGetrzr{}r|(h%Uh&jtubah,hLubaubeubeubeubhQ)r}}r~(h%Uh&hh'X{/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/base.py:docstring of simpy.resources.base.BaseResource._do_putrh,hUh.}r(h3]h2]h0]h1]h6]Uentries]r(hXX4_do_put() (simpy.resources.base.BaseResource method)hUtrauh8Nh9hh ]ubh)r}r(h%Uh&hh'jh,hh.}r(hhXpyh3]h2]h0]h1]h6]hXmethodrhjuh8Nh9hh ]r(h)r}r(h%XBaseResource._do_put(event)h&jh'hh,hh.}r(h3]rhahh(Xsimpy.resources.baserr}rbh2]h0]h1]h6]rhahXBaseResource._do_puthhhȉuh8Nh9hh ]r(h)r}r(h%X_do_puth&jh'hh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh ]rhHX_do_putrr}r(h%Uh&jubaubh)r}r(h%Uh&jh'hh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh ]rh)r}r(h%Xeventh.}r(h0]h1]h2]h3]h6]uh&jh ]rhHXeventrr}r(h%Uh&jubah,hubaubeubh)r}r(h%Uh&jh'hh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh ]r(hZ)r}r(h%X%Actually perform the *put* operation.h&jh'jh,h_h.}r(h0]h1]h2]h3]h6]uh8Kh9hh ]r(hHXActually perform the rr}r(h%XActually perform the h&jubj)r}r(h%X*put*h.}r(h0]h1]h2]h3]h6]uh&jh ]rhHXputrr}r(h%Uh&jubah,j#ubhHX operation.rr}r(h%X operation.h&jubeubhZ)r}r(h%XThis methods needs to be implemented by subclasses. It receives the *put_event* that is created at each request and doesn't need to return anything.h&jh'jh,h_h.}r(h0]h1]h2]h3]h6]uh8Kh9hh ]r(hHXDThis methods needs to be implemented by subclasses. It receives the rr}r(h%XDThis methods needs to be implemented by subclasses. It receives the h&jubj)r}r(h%X *put_event*h.}r(h0]h1]h2]h3]h6]uh&jh ]rhHX put_eventrr}r(h%Uh&jubah,j#ubhHXE that is created at each request and doesn't need to return anything.rr}r(h%XE that is created at each request and doesn't need to return anything.h&jubeubeubeubhQ)r}r(h%Uh&hh'X/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/base.py:docstring of simpy.resources.base.BaseResource._trigger_putrh,hUh.}r(h3]h2]h0]h1]h6]Uentries]r(hXX9_trigger_put() (simpy.resources.base.BaseResource method)h Utrauh8Nh9hh ]ubh)r}r(h%Uh&hh'jh,hh.}r(hhXpyh3]h2]h0]h1]h6]hXmethodrhjuh8Nh9hh ]r(h)r}r(h%X$BaseResource._trigger_put(get_event)h&jh'hh,hh.}r(h3]rh ahh(Xsimpy.resources.baserr}rbh2]h0]h1]h6]rh ahXBaseResource._trigger_puthhhȉuh8Nh9hh ]r(h)r}r(h%X _trigger_puth&jh'hh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh ]rhHX _trigger_putrr}r(h%Uh&jubaubh)r}r(h%Uh&jh'hh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh ]rh)r}r(h%X get_eventh.}r(h0]h1]h2]h3]h6]uh&jh ]rhHX get_eventrr}r(h%Uh&jubah,hubaubeubh)r}r(h%Uh&jh'hh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh ]rhZ)r}r(h%X?Trigger pending put events after a get event has been executed.rh&jh'jh,h_h.}r(h0]h1]h2]h3]h6]uh8Kh9hh ]rhHX?Trigger pending put events after a get event has been executed.rr}r(h%jh&jubaubaubeubhQ)r}r(h%Uh&hh'X{/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/base.py:docstring of simpy.resources.base.BaseResource._do_getrh,hUh.}r(h3]h2]h0]h1]h6]Uentries]r(hXX4_do_get() (simpy.resources.base.BaseResource method)h Utrauh8Nh9hh ]ubh)r}r(h%Uh&hh'jh,hh.}r(hhXpyh3]h2]h0]h1]h6]hXmethodrhjuh8Nh9hh ]r(h)r}r(h%XBaseResource._do_get(event)h&jh'hh,hh.}r(h3]r h ahh(Xsimpy.resources.baser r }r bh2]h0]h1]h6]r h ahXBaseResource._do_gethhhȉuh8Nh9hh ]r(h)r}r(h%X_do_geth&jh'hh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh ]rhHX_do_getrr}r(h%Uh&jubaubh)r}r(h%Uh&jh'hh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh ]rh)r}r(h%Xeventh.}r(h0]h1]h2]h3]h6]uh&jh ]rhHXeventrr}r (h%Uh&jubah,hubaubeubh)r!}r"(h%Uh&jh'hh,hh.}r#(h0]h1]h2]h3]h6]uh8Nh9hh ]r$(hZ)r%}r&(h%X%Actually perform the *get* operation.h&j!h'jh,h_h.}r'(h0]h1]h2]h3]h6]uh8Kh9hh ]r((hHXActually perform the r)r*}r+(h%XActually perform the h&j%ubj)r,}r-(h%X*get*h.}r.(h0]h1]h2]h3]h6]uh&j%h ]r/hHXgetr0r1}r2(h%Uh&j,ubah,j#ubhHX operation.r3r4}r5(h%X operation.h&j%ubeubhZ)r6}r7(h%XThis methods needs to be implemented by subclasses. It receives the *get_event* that is created at each request and doesn't need to return anything.h&j!h'jh,h_h.}r8(h0]h1]h2]h3]h6]uh8Kh9hh ]r9(hHXDThis methods needs to be implemented by subclasses. It receives the r:r;}r<(h%XDThis methods needs to be implemented by subclasses. It receives the h&j6ubj)r=}r>(h%X *get_event*h.}r?(h0]h1]h2]h3]h6]uh&j6h ]r@hHX get_eventrArB}rC(h%Uh&j=ubah,j#ubhHXE that is created at each request and doesn't need to return anything.rDrE}rF(h%XE that is created at each request and doesn't need to return anything.h&j6ubeubeubeubhQ)rG}rH(h%Uh&hh'X/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/base.py:docstring of simpy.resources.base.BaseResource._trigger_getrIh,hUh.}rJ(h3]h2]h0]h1]h6]Uentries]rK(hXX9_trigger_get() (simpy.resources.base.BaseResource method)hUtrLauh8Nh9hh ]ubh)rM}rN(h%Uh&hh'jIh,hh.}rO(hhXpyh3]h2]h0]h1]h6]hXmethodrPhjPuh8Nh9hh ]rQ(h)rR}rS(h%X$BaseResource._trigger_get(put_event)h&jMh'hh,hh.}rT(h3]rUhahh(Xsimpy.resources.baserVrW}rXbh2]h0]h1]h6]rYhahXBaseResource._trigger_gethhhȉuh8Nh9hh ]rZ(h)r[}r\(h%X _trigger_geth&jRh'hh,hh.}r](h0]h1]h2]h3]h6]uh8Nh9hh ]r^hHX _trigger_getr_r`}ra(h%Uh&j[ubaubh)rb}rc(h%Uh&jRh'hh,hh.}rd(h0]h1]h2]h3]h6]uh8Nh9hh ]reh)rf}rg(h%X put_eventh.}rh(h0]h1]h2]h3]h6]uh&jbh ]rihHX put_eventrjrk}rl(h%Uh&jfubah,hubaubeubh)rm}rn(h%Uh&jMh'hh,hh.}ro(h0]h1]h2]h3]h6]uh8Nh9hh ]rphZ)rq}rr(h%X?Trigger pending get events after a put event has been executed.rsh&jmh'jIh,h_h.}rt(h0]h1]h2]h3]h6]uh8Kh9hh ]ruhHX?Trigger pending get events after a put event has been executed.rvrw}rx(h%jsh&jqubaubaubeubeubeubhQ)ry}rz(h%Uh&h#h'Nh,hUh.}r{(h3]h2]h0]h1]h6]Uentries]r|(hXX#Put (class in simpy.resources.base)hUtr}auh8Nh9hh ]ubh)r~}r(h%Uh&h#h'Nh,hh.}r(hhXpyh3]h2]h0]h1]h6]hXclassrhjuh8Nh9hh ]r(h)r}r(h%X Put(resource)h&j~h'hh,hh.}r(h3]rhahh(Xsimpy.resources.baserr}rbh2]h0]h1]h6]rhahXPutrhUhȉuh8Nh9hh ]r(h)r}r(h%Xclass h&jh'hh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh ]rhHXclass rr}r(h%Uh&jubaubh)r}r(h%Xsimpy.resources.base.h&jh'hh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh ]rhHXsimpy.resources.base.rr}r(h%Uh&jubaubh)r}r(h%jh&jh'hh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh ]rhHXPutrr}r(h%Uh&jubaubh)r}r(h%Uh&jh'hh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh ]rh)r}r(h%Xresourceh.}r(h0]h1]h2]h3]h6]uh&jh ]rhHXresourcerr}r(h%Uh&jubah,hubaubeubh)r}r(h%Uh&j~h'hh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh ]r(hZ)r}r(h%X"The base class for all put events.rh&jh'Xj/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/base.py:docstring of simpy.resources.base.Putrh,h_h.}r(h0]h1]h2]h3]h6]uh8Kh9hh ]rhHX"The base class for all put events.rr}r(h%jh&jubaubhZ)r}r(h%X2It receives the *resource* that created the event.h&jh'jh,h_h.}r(h0]h1]h2]h3]h6]uh8Kh9hh ]r(hHXIt receives the rr}r(h%XIt receives the h&jubj)r}r(h%X *resource*h.}r(h0]h1]h2]h3]h6]uh&jh ]rhHXresourcerr}r(h%Uh&jubah,j#ubhHX that created the event.rr}r(h%X that created the event.h&jubeubhZ)r}r(h%XThis event (and all of its subclasses) can act as context manager and can be used with the :keyword:`with` statement to automatically cancel a put request if an exception or an :class:`simpy.events.Interrupt` occurs:h&jh'jh,h_h.}r(h0]h1]h2]h3]h6]uh8Kh9hh ]r(hHX[This event (and all of its subclasses) can act as context manager and can be used with the rr}r(h%X[This event (and all of its subclasses) can act as context manager and can be used with the h&jubhi)r}r(h%X:keyword:`with`rh&jh'h*h,hmh.}r(UreftypeXkeywordhohpXwithU refdomainXstdrh3]h2]U refexplicith0]h1]h6]hrhsuh8K h ]rhB)r}r(h%jh.}r(h0]h1]r(h|jX std-keywordreh2]h3]h6]uh&jh ]rhHXwithrr}r(h%Uh&jubah,hLubaubhHXG statement to automatically cancel a put request if an exception or an rr}r(h%XG statement to automatically cancel a put request if an exception or an h&jubhi)r}r(h%X:class:`simpy.events.Interrupt`rh&jh'h*h,hmh.}r(UreftypeXclasshohpXsimpy.events.InterruptU refdomainXpyrh3]h2]U refexplicith0]h1]h6]hrhshtjhuhvuh8K h ]rhB)r}r(h%jh.}r(h0]h1]r(h|jXpy-classreh2]h3]h6]uh&jh ]rhHXsimpy.events.Interruptrr}r(h%Uh&jubah,hLubaubhHX occurs:rr}r(h%X occurs:h&jubeubcdocutils.nodes literal_block r)r}r(h%X0with res.put(item) as request: yield requesth&jh'jh,U literal_blockrh.}r(UlinenosrUlanguagerXpythonU xml:spacerUpreserverh3]h2]h0]h1]h6]uh8K h9hh ]rhHX0with res.put(item) as request: yield requestrr}r(h%Uh&jubaubhZ)r}r(h%XNIt is not used directly by any resource, but rather sub-classed for each type.rh&jh'jh,h_h.}r(h0]h1]h2]h3]h6]uh8Kh9hh ]rhHXNIt is not used directly by any resource, but rather sub-classed for each type.rr }r (h%jh&jubaubhQ)r }r (h%Uh&jh'Xq/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/base.py:docstring of simpy.resources.base.Put.cancelr h,hUh.}r(h3]h2]h0]h1]h6]Uentries]r(hXX*cancel() (simpy.resources.base.Put method)h Utrauh8Nh9hh ]ubh)r}r(h%Uh&jh'j h,hh.}r(hhXpyh3]h2]h0]h1]h6]hXmethodrhjuh8Nh9hh ]r(h)r}r(h%X*Put.cancel(exc_type, exc_value, traceback)h&jh'hh,hh.}r(h3]rh ahh(Xsimpy.resources.baserr}rbh2]h0]h1]h6]rh ahX Put.cancelhjhȉuh8Nh9hh ]r(h)r}r (h%Xcancelh&jh'hh,hh.}r!(h0]h1]h2]h3]h6]uh8Nh9hh ]r"hHXcancelr#r$}r%(h%Uh&jubaubh)r&}r'(h%Uh&jh'hh,hh.}r((h0]h1]h2]h3]h6]uh8Nh9hh ]r)(h)r*}r+(h%Xexc_typeh.}r,(h0]h1]h2]h3]h6]uh&j&h ]r-hHXexc_typer.r/}r0(h%Uh&j*ubah,hubh)r1}r2(h%X exc_valueh.}r3(h0]h1]h2]h3]h6]uh&j&h ]r4hHX exc_valuer5r6}r7(h%Uh&j1ubah,hubh)r8}r9(h%X tracebackh.}r:(h0]h1]h2]h3]h6]uh&j&h ]r;hHX tracebackr<r=}r>(h%Uh&j8ubah,hubeubeubh)r?}r@(h%Uh&jh'hh,hh.}rA(h0]h1]h2]h3]h6]uh8Nh9hh ]rB(hZ)rC}rD(h%XCancel the current put request.rEh&j?h'j h,h_h.}rF(h0]h1]h2]h3]h6]uh8Kh9hh ]rGhHXCancel the current put request.rHrI}rJ(h%jEh&jCubaubhZ)rK}rL(h%XThis method has to be called if a process received an :class:`~simpy.events.Interrupt` or an exception while yielding this event and is not going to yield this event again.h&j?h'j h,h_h.}rM(h0]h1]h2]h3]h6]uh8Kh9hh ]rN(hHX6This method has to be called if a process received an rOrP}rQ(h%X6This method has to be called if a process received an h&jKubhi)rR}rS(h%X :class:`~simpy.events.Interrupt`rTh&jKh'Nh,hmh.}rU(UreftypeXclasshohpXsimpy.events.InterruptU refdomainXpyrVh3]h2]U refexplicith0]h1]h6]hrhshtjhuhvuh8Nh ]rWhB)rX}rY(h%jTh.}rZ(h0]h1]r[(h|jVXpy-classr\eh2]h3]h6]uh&jRh ]r]hHX Interruptr^r_}r`(h%Uh&jXubah,hLubaubhHXV or an exception while yielding this event and is not going to yield this event again.rarb}rc(h%XV or an exception while yielding this event and is not going to yield this event again.h&jKubeubhZ)rd}re(h%X]If the event was created in a :keyword:`with` statement, this method is called automatically.h&j?h'j h,h_h.}rf(h0]h1]h2]h3]h6]uh8Kh9hh ]rg(hHXIf the event was created in a rhri}rj(h%XIf the event was created in a h&jdubhi)rk}rl(h%X:keyword:`with`rmh&jdh'Nh,hmh.}rn(UreftypeXkeywordhohpXwithU refdomainXstdroh3]h2]U refexplicith0]h1]h6]hrhsuh8Nh ]rphB)rq}rr(h%jmh.}rs(h0]h1]rt(h|joX std-keywordrueh2]h3]h6]uh&jkh ]rvhHXwithrwrx}ry(h%Uh&jqubah,hLubaubhHX0 statement, this method is called automatically.rzr{}r|(h%X0 statement, this method is called automatically.h&jdubeubeubeubeubeubhQ)r}}r~(h%Uh&h#h'Nh,hUh.}r(h3]h2]h0]h1]h6]Uentries]r(hXX#Get (class in simpy.resources.base)hUtrauh8Nh9hh ]ubh)r}r(h%Uh&h#h'Nh,hh.}r(hhXpyh3]h2]h0]h1]h6]hXclassrhjuh8Nh9hh ]r(h)r}r(h%X Get(resource)rh&jh'hh,hh.}r(h3]rhahh(Xsimpy.resources.baserr}rbh2]h0]h1]h6]rhahXGetrhUhȉuh8Nh9hh ]r(h)r}r(h%Xclass h&jh'hh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh ]rhHXclass rr}r(h%Uh&jubaubh)r}r(h%Xsimpy.resources.base.h&jh'hh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh ]rhHXsimpy.resources.base.rr}r(h%Uh&jubaubh)r}r(h%jh&jh'hh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh ]rhHXGetrr}r(h%Uh&jubaubh)r}r(h%Uh&jh'hh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh ]rh)r}r(h%Xresourceh.}r(h0]h1]h2]h3]h6]uh&jh ]rhHXresourcerr}r(h%Uh&jubah,hubaubeubh)r}r(h%Uh&jh'hh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh ]r(hZ)r}r(h%X"The base class for all get events.rh&jh'Xj/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/base.py:docstring of simpy.resources.base.Getrh,h_h.}r(h0]h1]h2]h3]h6]uh8Kh9hh ]rhHX"The base class for all get events.rr}r(h%jh&jubaubhZ)r}r(h%X2It receives the *resource* that created the event.rh&jh'jh,h_h.}r(h0]h1]h2]h3]h6]uh8Kh9hh ]r(hHXIt receives the rr}r(h%XIt receives the h&jubj)r}r(h%X *resource*h.}r(h0]h1]h2]h3]h6]uh&jh ]rhHXresourcerr}r(h%Uh&jubah,j#ubhHX that created the event.rr}r(h%X that created the event.h&jubeubhZ)r}r(h%XThis event (and all of its subclasses) can act as context manager and can be used with the :keyword:`with` statement to automatically cancel a get request if an exception or an :class:`simpy.events.Interrupt` occurs:h&jh'jh,h_h.}r(h0]h1]h2]h3]h6]uh8Kh9hh ]r(hHX[This event (and all of its subclasses) can act as context manager and can be used with the rr}r(h%X[This event (and all of its subclasses) can act as context manager and can be used with the h&jubhi)r}r(h%X:keyword:`with`rh&jh'h*h,hmh.}r(UreftypeXkeywordhohpXwithU refdomainXstdrh3]h2]U refexplicith0]h1]h6]hrhsuh8K h ]rhB)r}r(h%jh.}r(h0]h1]r(h|jX std-keywordreh2]h3]h6]uh&jh ]rhHXwithrr}r(h%Uh&jubah,hLubaubhHXG statement to automatically cancel a get request if an exception or an rr}r(h%XG statement to automatically cancel a get request if an exception or an h&jubhi)r}r(h%X:class:`simpy.events.Interrupt`rh&jh'h*h,hmh.}r(UreftypeXclasshohpXsimpy.events.InterruptU refdomainXpyrh3]h2]U refexplicith0]h1]h6]hrhshtjhuhvuh8K h ]rhB)r}r(h%jh.}r(h0]h1]r(h|jXpy-classreh2]h3]h6]uh&jh ]rhHXsimpy.events.Interruptrr}r(h%Uh&jubah,hLubaubhHX occurs:rr}r(h%X occurs:h&jubeubj)r}r(h%X,with res.get() as request: yield requesth&jh'jh,jh.}r(jjXpythonjjh3]h2]h0]h1]h6]uh8K h9hh ]rhHX,with res.get() as request: yield requestrr}r(h%Uh&jubaubhZ)r}r(h%XNIt is not used directly by any resource, but rather sub-classed for each type.rh&jh'jh,h_h.}r(h0]h1]h2]h3]h6]uh8Kh9hh ]rhHXNIt is not used directly by any resource, but rather sub-classed for each type.rr }r (h%jh&jubaubhQ)r }r (h%Uh&jh'Xq/var/build/user_builds/simpy/checkouts/3.0.5/simpy/resources/base.py:docstring of simpy.resources.base.Get.cancelr h,hUh.}r(h3]h2]h0]h1]h6]Uentries]r(hXX*cancel() (simpy.resources.base.Get method)h Utrauh8Nh9hh ]ubh)r}r(h%Uh&jh'j h,hh.}r(hhXpyh3]h2]h0]h1]h6]hXmethodrhjuh8Nh9hh ]r(h)r}r(h%X*Get.cancel(exc_type, exc_value, traceback)h&jh'hh,hh.}r(h3]rh ahh(Xsimpy.resources.baserr}rbh2]h0]h1]h6]rh ahX Get.cancelhjhȉuh8Nh9hh ]r(h)r}r (h%Xcancelh&jh'hh,hh.}r!(h0]h1]h2]h3]h6]uh8Nh9hh ]r"hHXcancelr#r$}r%(h%Uh&jubaubh)r&}r'(h%Uh&jh'hh,hh.}r((h0]h1]h2]h3]h6]uh8Nh9hh ]r)(h)r*}r+(h%Xexc_typeh.}r,(h0]h1]h2]h3]h6]uh&j&h ]r-hHXexc_typer.r/}r0(h%Uh&j*ubah,hubh)r1}r2(h%X exc_valueh.}r3(h0]h1]h2]h3]h6]uh&j&h ]r4hHX exc_valuer5r6}r7(h%Uh&j1ubah,hubh)r8}r9(h%X tracebackh.}r:(h0]h1]h2]h3]h6]uh&j&h ]r;hHX tracebackr<r=}r>(h%Uh&j8ubah,hubeubeubh)r?}r@(h%Uh&jh'hh,hh.}rA(h0]h1]h2]h3]h6]uh8Nh9hh ]rB(hZ)rC}rD(h%XCancel the current get request.rEh&j?h'j h,h_h.}rF(h0]h1]h2]h3]h6]uh8Kh9hh ]rGhHXCancel the current get request.rHrI}rJ(h%jEh&jCubaubhZ)rK}rL(h%XThis method has to be called if a process received an :class:`~simpy.events.Interrupt` or an exception while yielding this event and is not going to yield this event again.h&j?h'j h,h_h.}rM(h0]h1]h2]h3]h6]uh8Kh9hh ]rN(hHX6This method has to be called if a process received an rOrP}rQ(h%X6This method has to be called if a process received an h&jKubhi)rR}rS(h%X :class:`~simpy.events.Interrupt`rTh&jKh'Nh,hmh.}rU(UreftypeXclasshohpXsimpy.events.InterruptU refdomainXpyrVh3]h2]U refexplicith0]h1]h6]hrhshtjhuhvuh8Nh ]rWhB)rX}rY(h%jTh.}rZ(h0]h1]r[(h|jVXpy-classr\eh2]h3]h6]uh&jRh ]r]hHX Interruptr^r_}r`(h%Uh&jXubah,hLubaubhHXV or an exception while yielding this event and is not going to yield this event again.rarb}rc(h%XV or an exception while yielding this event and is not going to yield this event again.h&jKubeubhZ)rd}re(h%X]If the event was created in a :keyword:`with` statement, this method is called automatically.h&j?h'j h,h_h.}rf(h0]h1]h2]h3]h6]uh8Kh9hh ]rg(hHXIf the event was created in a rhri}rj(h%XIf the event was created in a h&jdubhi)rk}rl(h%X:keyword:`with`rmh&jdh'Nh,hmh.}rn(UreftypeXkeywordhohpXwithU refdomainXstdroh3]h2]U refexplicith0]h1]h6]hrhsuh8Nh ]rphB)rq}rr(h%jmh.}rs(h0]h1]rt(h|joX std-keywordrueh2]h3]h6]uh&jkh ]rvhHXwithrwrx}ry(h%Uh&jqubah,hLubaubhHX0 statement, this method is called automatically.rzr{}r|(h%X0 statement, this method is called automatically.h&jdubeubeubeubeubeubeubah%UU transformerr}NU footnote_refsr~}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh9hU current_linerNUtransform_messagesr]rUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh?NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerUX/var/build/user_builds/simpy/checkouts/3.0.5/docs/api_reference/simpy.resources.base.rstrUgettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hh#h5cdocutils.nodes target r)r}r(h%Uh&h#h'hTh,Utargetrh.}r(h0]h3]rh5ah2]Uismodh1]h6]uh8Kh9hh ]ubhjhjhjRh jh j1h jh jh jhjhjhjhj:hhhjhjuUsubstitution_namesr}rh,h9h.}r(h0]h3]h2]Usourceh*h1]h6]uU footnotesr]rUrefidsr}rub.PK.D[ <simpy-3.0.5/.doctrees/api_reference/simpy.monitoring.doctreecdocutils.nodes document q)q}q(U nametypesq}qX.simpy.monitoring --- monitor simpy simulationsqNsUsubstitution_defsq}qUparse_messagesq ]q Ucurrent_sourceq NU decorationq NUautofootnote_startq KUnameidsq}qhU*simpy-monitoring-monitor-simpy-simulationsqsUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqcdocutils.nodes reprunicode qXT/var/build/user_builds/simpy/checkouts/3.0.5/docs/api_reference/simpy.monitoring.rstqq}qbUtagnameqUsectionqU attributesq}q (Udupnamesq!]Uclassesq"]Ubackrefsq#]Uidsq$]q%(Xmodule-simpy.monitoringq&heUnamesq']q(hauUlineq)KUdocumentq*hh]q+(cdocutils.nodes title q,)q-}q.(hX2``simpy.monitoring`` --- Monitor SimPy simulationsq/hhhhhUtitleq0h}q1(h!]h"]h#]h$]h']uh)Kh*hh]q2(cdocutils.nodes literal q3)q4}q5(hX``simpy.monitoring``q6h}q7(h!]h"]h#]h$]h']uhh-h]q8cdocutils.nodes Text q9Xsimpy.monitoringq:q;}q<(hUhh4ubahUliteralq=ubh9X --- Monitor SimPy simulationsq>q?}q@(hX --- Monitor SimPy simulationsqAhh-ubeubcsphinx.addnodes index qB)qC}qD(hUhhhU qEhUindexqFh}qG(h$]h#]h!]h"]h']Uentries]qH(UsingleqIXsimpy.monitoring (module)Xmodule-simpy.monitoringUtqJauh)Kh*hh]ubcdocutils.nodes paragraph qK)qL}qM(hX=SimPy's monitoring capabilities will be added in version 3.1.qNhhhX^/var/build/user_builds/simpy/checkouts/3.0.5/simpy/monitoring.py:docstring of simpy.monitoringqOhU paragraphqPh}qQ(h!]h"]h#]h$]h']uh)Kh*hh]qRh9X=SimPy's monitoring capabilities will be added in version 3.1.qSqT}qU(hhNhhLubaubeubahUU transformerqVNU footnote_refsqW}qXUrefnamesqY}qZUsymbol_footnotesq[]q\Uautofootnote_refsq]]q^Usymbol_footnote_refsq_]q`U citationsqa]qbh*hU current_lineqcNUtransform_messagesqd]qeUreporterqfNUid_startqgKU autofootnotesqh]qiU citation_refsqj}qkUindirect_targetsql]qmUsettingsqn(cdocutils.frontend Values qooqp}qq(Ufootnote_backlinksqrKUrecord_dependenciesqsNU rfc_base_urlqtUhttp://tools.ietf.org/html/quU tracebackqvUpep_referencesqwNUstrip_commentsqxNU toc_backlinksqyUentryqzU language_codeq{Uenq|U datestampq}NU report_levelq~KU _destinationqNU halt_levelqKU strip_classesqNh0NUerror_encoding_error_handlerqUbackslashreplaceqUdebugqNUembed_stylesheetqUoutput_encoding_error_handlerqUstrictqU sectnum_xformqKUdump_transformsqNU docinfo_xformqKUwarning_streamqNUpep_file_url_templateqUpep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUT/var/build/user_builds/simpy/checkouts/3.0.5/docs/api_reference/simpy.monitoring.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]Ufile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(h&cdocutils.nodes target q)q}q(hUhhhhEhUtargetqh}q(h!]h$]qh&ah#]Uismodh"]h']uh)Kh*hh]ubhhuUsubstitution_namesq}qhh*h}q(h!]h$]h#]Usourcehh"]h']uU footnotesq]qUrefidsq}qub.PK.DaB@simpy-3.0.5/.doctrees/topical_guides/porting_from_simpy2.doctreecdocutils.nodes document q)q}q(U nametypesq}q(Xporting_from_simpy2qX bitbucketqXimportsqNX interruptsq NXsimpy keywords (hold etc.)q NXpartially supported featuresq NXdefining a processq NXporting from simpy 2 to 3q NXthe simulation* classesqNX conclusionqNuUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hUporting-from-simpy2qhU bitbucketqhUimportsqh U interruptsqh Usimpy-keywords-hold-etcqh Upartially-supported-featuresqh Udefining-a-processqh Uporting-from-simpy-2-to-3q hUthe-simulation-classesq!hU conclusionq"uUchildrenq#]q$(cdocutils.nodes target q%)q&}q'(U rawsourceq(X.. _porting_from_simpy2:Uparentq)hUsourceq*cdocutils.nodes reprunicode q+XX/var/build/user_builds/simpy/checkouts/3.0.5/docs/topical_guides/porting_from_simpy2.rstq,q-}q.bUtagnameq/Utargetq0U attributesq1}q2(Uidsq3]Ubackrefsq4]Udupnamesq5]Uclassesq6]Unamesq7]Urefidq8huUlineq9KUdocumentq:hh#]ubcdocutils.nodes section q;)q<}q=(h(Uh)hh*h-Uexpect_referenced_by_nameq>}q?hh&sh/Usectionq@h1}qA(h5]h6]h4]h3]qB(h heh7]qC(h heuh9Kh:hUexpect_referenced_by_idqD}qEhh&sh#]qF(cdocutils.nodes title qG)qH}qI(h(XPorting from SimPy 2 to 3qJh)h(h5]h6]h4]h3]h7]uh)j+h#]r?hNX Simulationr@rA}rB(h(Uh)j<ubah/hubhNX, rCrD}rE(h(X, h)j+ubhy)rF}rG(h(X``SimulationRT``h1}rH(h5]h6]h4]h3]h7]uh)j+h#]rIhNX SimulationRTrJrK}rL(h(Uh)jFubah/hubhNX or rMrN}rO(h(X or h)j+ubhy)rP}rQ(h(X``SimulationTrace``h1}rR(h5]h6]h4]h3]h7]uh)j+h#]rShNXSimulationTracerTrU}rV(h(Uh)jPubah/hubhNX). This class also had a rWrX}rY(h(X). This class also had a h)j+ubhy)rZ}r[(h(X``simulate()``h1}r\(h5]h6]h4]h3]h7]uh)j+h#]r]hNX simulate()r^r_}r`(h(Uh)jZubah/hubhNXx method that executed a normal simulation, a real-time simulation or something else (depending on the particular class).rarb}rc(h(Xx method that executed a normal simulation, a real-time simulation or something else (depending on the particular class).h)j+ubeubhR)rd}re(h(XmThere was a global ``Simulation`` instance that was automatically created when you imported SimPy. You could also instantiate it on your own to uses SimPy's object-orient API. This led to some confusion and problems, because you had to pass the ``Simulation`` instance around when you were using the object-oriented API but not if you were using the procedural API.h)jh*h-h/hVh1}rf(h5]h6]h4]h3]h7]uh9K3h:hh#]rg(hNXThere was a global rhri}rj(h(XThere was a global h)jdubhy)rk}rl(h(X``Simulation``h1}rm(h5]h6]h4]h3]h7]uh)jdh#]rnhNX Simulationrorp}rq(h(Uh)jkubah/hubhNX instance that was automatically created when you imported SimPy. You could also instantiate it on your own to uses SimPy's object-orient API. This led to some confusion and problems, because you had to pass the rrrs}rt(h(X instance that was automatically created when you imported SimPy. You could also instantiate it on your own to uses SimPy's object-orient API. This led to some confusion and problems, because you had to pass the h)jdubhy)ru}rv(h(X``Simulation``h1}rw(h5]h6]h4]h3]h7]uh)jdh#]rxhNX Simulationryrz}r{(h(Uh)juubah/hubhNXj instance around when you were using the object-oriented API but not if you were using the procedural API.r|r}}r~(h(Xj instance around when you were using the object-oriented API but not if you were using the procedural API.h)jdubeubhR)r}r(h(XIn SimPy 3, an :class:`~simpy.core.Environment` replaces ``Simulation`` and :class:`~simpy.rt.RealtimeEnvironment` replaces ``SimulationRT``. You always need to instantiate an environment. There's no more global state.h)jh*h-h/hVh1}r(h5]h6]h4]h3]h7]uh9K9h:hh#]r(hNXIn SimPy 3, an rr}r(h(XIn SimPy 3, an h)jubh)r}r(h(X :class:`~simpy.core.Environment`rh)jh*h-h/hh1}r(UreftypeXclasshΉhXsimpy.core.EnvironmentU refdomainXpyrh3]h4]U refexplicith5]h6]h7]hhhNhNuh9K9h#]rhy)r}r(h(jh1}r(h5]h6]r(hjXpy-classreh4]h3]h7]uh)jh#]rhNX Environmentrr}r(h(Uh)jubah/hubaubhNX replaces rr}r(h(X replaces h)jubhy)r}r(h(X``Simulation``h1}r(h5]h6]h4]h3]h7]uh)jh#]rhNX Simulationrr}r(h(Uh)jubah/hubhNX and rr}r(h(X and h)jubh)r}r(h(X&:class:`~simpy.rt.RealtimeEnvironment`rh)jh*h-h/hh1}r(UreftypeXclasshΉhXsimpy.rt.RealtimeEnvironmentU refdomainXpyrh3]h4]U refexplicith5]h6]h7]hhhNhNuh9K9h#]rhy)r}r(h(jh1}r(h5]h6]r(hjXpy-classreh4]h3]h7]uh)jh#]rhNXRealtimeEnvironmentrr}r(h(Uh)jubah/hubaubhNX replaces rr}r(h(X replaces h)jubhy)r}r(h(X``SimulationRT``h1}r(h5]h6]h4]h3]h7]uh)jh#]rhNX SimulationRTrr}r(h(Uh)jubah/hubhNXN. You always need to instantiate an environment. There's no more global state.rr}r(h(XN. You always need to instantiate an environment. There's no more global state.h)jubeubhR)r}r(h(XaTo execute a simulation, you call the environment's :meth:`~simpy.core.Environment.run()` method.h)jh*h-h/hVh1}r(h5]h6]h4]h3]h7]uh9K=h:hh#]r(hNX4To execute a simulation, you call the environment's rr}r(h(X4To execute a simulation, you call the environment's h)jubh)r}r(h(X%:meth:`~simpy.core.Environment.run()`rh)jh*h-h/hh1}r(UreftypeXmethhΉhXsimpy.core.Environment.runU refdomainXpyrh3]h4]U refexplicith5]h6]h7]hhhNhNuh9K=h#]rhy)r}r(h(jh1}r(h5]h6]r(hjXpy-methreh4]h3]h7]uh)jh#]rhNXrun()rr}r(h(Uh)jubah/hubaubhNX method.rr}r(h(X method.h)jubeubhR)r}r(h(X **SimPy 2**rh)jh*h-h/hVh1}r(h5]h6]h4]h3]h7]uh9K@h:hh#]rh)r}r(h(jh1}r(h5]h6]h4]h3]h7]uh)jh#]rhNXSimPy 2rr}r(h(Uh)jubah/hubaubh)r}r(h(Xu# Procedural API from SimPy.Simulation import initialize, simulate initialize() # Start processes simulate(until=10)h)jh*h-h/hh1}r(hhXpythonhhh3]h4]h5]h6]h7]uh9KBh:hh#]rhNXu# Procedural API from SimPy.Simulation import initialize, simulate initialize() # Start processes simulate(until=10)rr}r(h(Uh)jubaubh)r}r(h(Xz# Object-oriented API from SimPy.Simulation import Simulation sim = Simulation() # Start processes sim.simulate(until=10)h)jh*h-h/hh1}r(hhXpythonhhh3]h4]h5]h6]h7]uh9KKh:hh#]rhNXz# Object-oriented API from SimPy.Simulation import Simulation sim = Simulation() # Start processes sim.simulate(until=10)rr}r(h(Uh)jubaubhR)r}r(h(X **SimPy3**rh)jh*h-h/hVh1}r(h5]h6]h4]h3]h7]uh9KUh:hh#]rh)r}r(h(jh1}r(h5]h6]h4]h3]h7]uh)jh#]rhNXSimPy3rr}r(h(Uh)jubah/hubaubh)r}r(h(XKimport simpy env = simpy.Environment() # Start processes env.run(until=10)h)jh*h-h/hh1}r(hhXpythonhhh3]h4]h5]h6]h7]uh9KWh:hh#]rhNXKimport simpy env = simpy.Environment() # Start processes env.run(until=10)rr}r(h(Uh)jubaubeubh;)r}r(h(Uh)h}r?(h(Uh)j9ubah/hubhNX instance it belonged to. This reference was passed implicitly in the procedural API and had to be passed explicitly in the object-oriented API. Apart from some internal problems, this made it quite cumbersome to define a simple process.r@rA}rB(h(X instance it belonged to. This reference was passed implicitly in the procedural API and had to be passed explicitly in the object-oriented API. Apart from some internal problems, this made it quite cumbersome to define a simple process.h)jubeubhR)rC}rD(h(XProcesses were started by passing the ``Process`` and a generator instance created by the generator function to either the global ``activate()`` function or the corresponding ``Simulation`` method.h)jh*h-h/hVh1}rE(h5]h6]h4]h3]h7]uh9Kkh:hh#]rF(hNX&Processes were started by passing the rGrH}rI(h(X&Processes were started by passing the h)jCubhy)rJ}rK(h(X ``Process``h1}rL(h5]h6]h4]h3]h7]uh)jCh#]rMhNXProcessrNrO}rP(h(Uh)jJubah/hubhNXQ and a generator instance created by the generator function to either the global rQrR}rS(h(XQ and a generator instance created by the generator function to either the global h)jCubhy)rT}rU(h(X``activate()``h1}rV(h5]h6]h4]h3]h7]uh)jCh#]rWhNX activate()rXrY}rZ(h(Uh)jTubah/hubhNX function or the corresponding r[r\}r](h(X function or the corresponding h)jCubhy)r^}r_(h(X``Simulation``h1}r`(h5]h6]h4]h3]h7]uh)jCh#]rahNX Simulationrbrc}rd(h(Uh)j^ubah/hubhNX method.rerf}rg(h(X method.h)jCubeubhR)rh}ri(h(X+A process in SimPy 3 is a Python generator (no matter if it’s defined on module level or as an instance method) wrapped in a :class:`~simpy.events.Process` instance. The generator usually requires a reference to a :class:`~simpy.core.Environment` to interact with, but this is completely optional.h)jh*h-h/hVh1}rj(h5]h6]h4]h3]h7]uh9Koh:hh#]rk(hNXA process in SimPy 3 is a Python generator (no matter if it’s defined on module level or as an instance method) wrapped in a rlrm}rn(h(XA process in SimPy 3 is a Python generator (no matter if it’s defined on module level or as an instance method) wrapped in a h)jhubh)ro}rp(h(X:class:`~simpy.events.Process`rqh)jhh*h-h/hh1}rr(UreftypeXclasshΉhXsimpy.events.ProcessU refdomainXpyrsh3]h4]U refexplicith5]h6]h7]hhhNhNuh9Koh#]rthy)ru}rv(h(jqh1}rw(h5]h6]rx(hjsXpy-classryeh4]h3]h7]uh)joh#]rzhNXProcessr{r|}r}(h(Uh)juubah/hubaubhNX; instance. The generator usually requires a reference to a r~r}r(h(X; instance. The generator usually requires a reference to a h)jhubh)r}r(h(X :class:`~simpy.core.Environment`rh)jhh*h-h/hh1}r(UreftypeXclasshΉhXsimpy.core.EnvironmentU refdomainXpyrh3]h4]U refexplicith5]h6]h7]hhhNhNuh9Koh#]rhy)r}r(h(jh1}r(h5]h6]r(hjXpy-classreh4]h3]h7]uh)jh#]rhNX Environmentrr}r(h(Uh)jubah/hubaubhNX3 to interact with, but this is completely optional.rr}r(h(X3 to interact with, but this is completely optional.h)jhubeubhR)r}r(h(XProcesses are can be started by creating a :class:`~simpy.events.Process` instance and passing the generator to it. The environment provides a shortcut for this: :meth:`~simpy.core.Environment.process()`.h)jh*h-h/hVh1}r(h5]h6]h4]h3]h7]uh9Kuh:hh#]r(hNX+Processes are can be started by creating a rr}r(h(X+Processes are can be started by creating a h)jubh)r}r(h(X:class:`~simpy.events.Process`rh)jh*h-h/hh1}r(UreftypeXclasshΉhXsimpy.events.ProcessU refdomainXpyrh3]h4]U refexplicith5]h6]h7]hhhNhNuh9Kuh#]rhy)r}r(h(jh1}r(h5]h6]r(hjXpy-classreh4]h3]h7]uh)jh#]rhNXProcessrr}r(h(Uh)jubah/hubaubhNXY instance and passing the generator to it. The environment provides a shortcut for this: rr}r(h(XY instance and passing the generator to it. The environment provides a shortcut for this: h)jubh)r}r(h(X):meth:`~simpy.core.Environment.process()`rh)jh*h-h/hh1}r(UreftypeXmethhΉhXsimpy.core.Environment.processU refdomainXpyrh3]h4]U refexplicith5]h6]h7]hhhNhNuh9Kuh#]rhy)r}r(h(jh1}r(h5]h6]r(hjXpy-methreh4]h3]h7]uh)jh#]rhNX process()rr}r(h(Uh)jubah/hubaubhNX.r}r(h(X.h)jubeubhR)r}r(h(X **SimPy 2**rh)jh*h-h/hVh1}r(h5]h6]h4]h3]h7]uh9Kyh:hh#]rh)r}r(h(jh1}r(h5]h6]h4]h3]h7]uh)jh#]rhNXSimPy 2rr}r(h(Uh)jubah/hubaubh)r}r(h(Xv# Procedural API from Simpy.Simulation import Process class MyProcess(Process): def __init__(self, another_param): super().__init__() self.another_param = another_param def generator_function(self): """Implement the process' behavior.""" yield something initialize() proc = Process('Spam') activate(proc, proc.generator_function())h)jh*h-h/hh1}r(hhXpythonhhh3]h4]h5]h6]h7]uh9K{h:hh#]rhNXv# Procedural API from Simpy.Simulation import Process class MyProcess(Process): def __init__(self, another_param): super().__init__() self.another_param = another_param def generator_function(self): """Implement the process' behavior.""" yield something initialize() proc = Process('Spam') activate(proc, proc.generator_function())rr}r(h(Uh)jubaubh)r}r(h(X# Object-oriented API from SimPy.Simulation import Simulation, Process class MyProcess(Process): def __init__(self, sim, another_param): super().__init__(sim=sim) self.another_param = another_param def generator_function(self): """Implement the process' behaviour.""" yield something sim = Simulation() proc = Process(sim, 'Spam') sim.activate(proc, proc.generator_function())h)jh*h-h/hh1}r(hhXpythonhhh3]h4]h5]h6]h7]uh9Kh:hh#]rhNX# Object-oriented API from SimPy.Simulation import Simulation, Process class MyProcess(Process): def __init__(self, sim, another_param): super().__init__(sim=sim) self.another_param = another_param def generator_function(self): """Implement the process' behaviour.""" yield something sim = Simulation() proc = Process(sim, 'Spam') sim.activate(proc, proc.generator_function())rr}r(h(Uh)jubaubhR)r}r(h(X **SimPy 3**rh)jh*h-h/hVh1}r(h5]h6]h4]h3]h7]uh9Kh:hh#]rh)r}r(h(jh1}r(h5]h6]h4]h3]h7]uh)jh#]rhNXSimPy 3rr}r(h(Uh)jubah/hubaubh)r}r(h(Ximport simpy def generator_function(env, another_param): """Implement the process' behavior.""" yield something env = simpy.Environment() proc = env.process(generator_function(env, 'Spam'))h)jh*h-h/hh1}r(hhXpythonhhh3]h4]h5]h6]h7]uh9Kh:hh#]rhNXimport simpy def generator_function(env, another_param): """Implement the process' behavior.""" yield something env = simpy.Environment() proc = env.process(generator_function(env, 'Spam'))rr}r(h(Uh)jubaubeubh;)r}r(h(Uh)h}r?(h(Uh)j7ubah/hubaubhNXs if you want to wait for an event to occur. You can instantiate an event directly or use the shortcuts provided by r@rA}rB(h(Xs if you want to wait for an event to occur. You can instantiate an event directly or use the shortcuts provided by h)j*ubh)rC}rD(h(X :class:`~simpy.core.Environment`rEh)j*h*h-h/hh1}rF(UreftypeXclasshΉhXsimpy.core.EnvironmentU refdomainXpyrGh3]h4]U refexplicith5]h6]h7]hhhNhNuh9Kh#]rHhy)rI}rJ(h(jEh1}rK(h5]h6]rL(hjGXpy-classrMeh4]h3]h7]uh)jCh#]rNhNX EnvironmentrOrP}rQ(h(Uh)jIubah/hubaubhNX.rR}rS(h(X.h)j*ubeubhR)rT}rU(h(XGenerally, whenever a process yields an event, the execution of the process is suspended and resumed once the event has been triggered. To motivate this understanding, some of the events were renamed. For example, the ``hold`` keyword meant to wait until some time has passed. In terms of events this means that a timeout has happened. Therefore ``hold`` has been replaced by a :class:`~simpy.events.Timeout` event.h)jh*h-h/hVh1}rV(h5]h6]h4]h3]h7]uh9Kh:hh#]rW(hNXGenerally, whenever a process yields an event, the execution of the process is suspended and resumed once the event has been triggered. To motivate this understanding, some of the events were renamed. For example, the rXrY}rZ(h(XGenerally, whenever a process yields an event, the execution of the process is suspended and resumed once the event has been triggered. To motivate this understanding, some of the events were renamed. For example, the h)jTubhy)r[}r\(h(X``hold``h1}r](h5]h6]h4]h3]h7]uh)jTh#]r^hNXholdr_r`}ra(h(Uh)j[ubah/hubhNXx keyword meant to wait until some time has passed. In terms of events this means that a timeout has happened. Therefore rbrc}rd(h(Xx keyword meant to wait until some time has passed. In terms of events this means that a timeout has happened. Therefore h)jTubhy)re}rf(h(X``hold``h1}rg(h5]h6]h4]h3]h7]uh)jTh#]rhhNXholdrirj}rk(h(Uh)jeubah/hubhNX has been replaced by a rlrm}rn(h(X has been replaced by a h)jTubh)ro}rp(h(X:class:`~simpy.events.Timeout`rqh)jTh*h-h/hh1}rr(UreftypeXclasshΉhXsimpy.events.TimeoutU refdomainXpyrsh3]h4]U refexplicith5]h6]h7]hhhNhNuh9Kh#]rthy)ru}rv(h(jqh1}rw(h5]h6]rx(hjsXpy-classryeh4]h3]h7]uh)joh#]rzhNXTimeoutr{r|}r}(h(Uh)juubah/hubaubhNX event.r~r}r(h(X event.h)jTubeubcdocutils.nodes note r)r}r(h(X:class:`~simpy.events.Process` is also an :class:`~simpy.events.Event`. If you want to wait for a process to finish, simply yield it.h)jh*h-h/Unoterh1}r(h5]h6]h4]h3]h7]uh9Nh:hh#]rhR)r}r(h(X:class:`~simpy.events.Process` is also an :class:`~simpy.events.Event`. If you want to wait for a process to finish, simply yield it.h)jh*h-h/hVh1}r(h5]h6]h4]h3]h7]uh9Kh#]r(h)r}r(h(X:class:`~simpy.events.Process`rh)jh*h-h/hh1}r(UreftypeXclasshΉhXsimpy.events.ProcessU refdomainXpyrh3]h4]U refexplicith5]h6]h7]hhhNhNuh9Kh#]rhy)r}r(h(jh1}r(h5]h6]r(hjXpy-classreh4]h3]h7]uh)jh#]rhNXProcessrr}r(h(Uh)jubah/hubaubhNX is also an rr}r(h(X is also an h)jubh)r}r(h(X:class:`~simpy.events.Event`rh)jh*h-h/hh1}r(UreftypeXclasshΉhXsimpy.events.EventU refdomainXpyrh3]h4]U refexplicith5]h6]h7]hhhNhNuh9Kh#]rhy)r}r(h(jh1}r(h5]h6]r(hjXpy-classreh4]h3]h7]uh)jh#]rhNXEventrr}r(h(Uh)jubah/hubaubhNX?. If you want to wait for a process to finish, simply yield it.rr}r(h(X?. If you want to wait for a process to finish, simply yield it.h)jubeubaubhR)r}r(h(X **SimPy 2**rh)jh*h-h/hVh1}r(h5]h6]h4]h3]h7]uh9Kh:hh#]rh)r}r(h(jh1}r(h5]h6]h4]h3]h7]uh)jh#]rhNXSimPy 2rr}r(h(Uh)jubah/hubaubh)r}r(h(Xyield hold, self, duration yield passivate, self yield request, self, resource yield release, self, resource yield waitevent, self, event yield waitevent, self, [event_a, event_b, event_c] yield queueevent, self, event_list yield get, self, level, amount yield put, self, level, amounth)jh*h-h/hh1}r(hhXpythonhhh3]h4]h5]h6]h7]uh9Kh:hh#]rhNXyield hold, self, duration yield passivate, self yield request, self, resource yield release, self, resource yield waitevent, self, event yield waitevent, self, [event_a, event_b, event_c] yield queueevent, self, event_list yield get, self, level, amount yield put, self, level, amountrr}r(h(Uh)jubaubhR)r}r(h(X **SimPy 3**rh)jh*h-h/hVh1}r(h5]h6]h4]h3]h7]uh9Kh:hh#]rh)r}r(h(jh1}r(h5]h6]h4]h3]h7]uh)jh#]rhNXSimPy 3rr}r(h(Uh)jubah/hubaubh)r}r(h(X&yield env.timeout(duration) # hold: renamed yield env.event() # passivate: renamed yield resource.request() # Request is now bound to class Resource resource.release() # Release no longer needs to be yielded yield event # waitevent: just yield the event yield env.all_of([event_a, event_b, event_c]) # waitvent yield env.any_of([event_a, event_b, event_c]) # queuevent yield container.get(amount) # Level is now called Container yield container.put(amount) yield event_a | event_b # Wait for either a or b. This is new. yield event_a & event_b # Wait for a and b. This is new. yield env.process(calculation(env)) # Wait for the process calculation to # to finish.h)jh*h-h/hh1}r(hhXpythonhhh3]h4]h5]h6]h7]uh9Kh:hh#]rhNX&yield env.timeout(duration) # hold: renamed yield env.event() # passivate: renamed yield resource.request() # Request is now bound to class Resource resource.release() # Release no longer needs to be yielded yield event # waitevent: just yield the event yield env.all_of([event_a, event_b, event_c]) # waitvent yield env.any_of([event_a, event_b, event_c]) # queuevent yield container.get(amount) # Level is now called Container yield container.put(amount) yield event_a | event_b # Wait for either a or b. This is new. yield event_a & event_b # Wait for a and b. This is new. yield env.process(calculation(env)) # Wait for the process calculation to # to finish.rr}r(h(Uh)jubaubh;)r}r(h(Uh)jh*h-h/h@h1}r(h5]h6]h4]h3]rhah7]rh auh9Kh:hh#]r(hG)r}r(h(XPartially supported featuresrh)jh*h-h/hKh1}r(h5]h6]h4]h3]h7]uh9Kh:hh#]rhNXPartially supported featuresrr}r(h(jh)jubaubhR)r}r(h(XHThe following ``waituntil`` keyword is not completely supported anymore:rh)jh*h-h/hVh1}r(h5]h6]h4]h3]h7]uh9Kh:hh#]r(hNXThe following rr}r(h(XThe following h)jubhy)r}r(h(X ``waituntil``h1}r(h5]h6]h4]h3]h7]uh)jh#]rhNX waituntilrr}r(h(Uh)jubah/hubhNX- keyword is not completely supported anymore:rr}r(h(X- keyword is not completely supported anymore:h)jubeubh)r}r(h(X yield waituntil, self, cond_funch)jh*h-h/hh1}r(hhXpythonhhh3]h4]h5]h6]h7]uh9Kh:hh#]rhNX yield waituntil, self, cond_funcrr}r(h(Uh)jubaubhR)r}r(h(XSimPy 2 was evaluating ``cond_func`` after *every* event, which was computationally very expensive. One possible workaround is for example the following process, which evaluates ``cond_func`` periodically:h)jh*h-h/hVh1}r(h5]h6]h4]h3]h7]uh9Kh:hh#]r(hNXSimPy 2 was evaluating rr}r(h(XSimPy 2 was evaluating h)jubhy)r}r(h(X ``cond_func``h1}r(h5]h6]h4]h3]h7]uh)jh#]rhNX cond_funcrr}r (h(Uh)jubah/hubhNX after r r }r (h(X after h)jubj#)r }r(h(X*every*h1}r(h5]h6]h4]h3]h7]uh)jh#]rhNXeveryrr}r(h(Uh)j ubah/j+ubhNX event, which was computationally very expensive. One possible workaround is for example the following process, which evaluates rr}r(h(X event, which was computationally very expensive. One possible workaround is for example the following process, which evaluates h)jubhy)r}r(h(X ``cond_func``h1}r(h5]h6]h4]h3]h7]uh)jh#]rhNX cond_funcrr}r(h(Uh)jubah/hubhNX periodically:rr}r (h(X periodically:h)jubeubh)r!}r"(h(Xdef waituntil(env, cond_func, delay=1): while not cond_func(): yield env.timeout(delay) # Usage: yield waituntil(env, cond_func)h)jh*h-h/hh1}r#(hhXpythonhhh3]h4]h5]h6]h7]uh9Kh:hh#]r$hNXdef waituntil(env, cond_func, delay=1): while not cond_func(): yield env.timeout(delay) # Usage: yield waituntil(env, cond_func)r%r&}r'(h(Uh)j!ubaubeubeubh;)r(}r)(h(Uh)h(h(X``interrupt()``h1}r?(h5]h6]h4]h3]h7]uh)j6h#]r@hNX interrupt()rArB}rC(h(Uh)j=ubah/hubhNXg was a method of the interrupting process. The victim of the interrupt had to be passed as an argument.rDrE}rF(h(Xg was a method of the interrupting process. The victim of the interrupt had to be passed as an argument.h)j6ubeubhR)rG}rH(h(XThe victim was not directly notified of the interrupt but had to check if the ``interrupted`` flag was set. Afterwards, it had to reset the interrupt via ``interruptReset()``. You could manually set the ``interruptCause`` attribute of the victim.h)j(h*h-h/hVh1}rI(h5]h6]h4]h3]h7]uh9Mh:hh#]rJ(hNXNThe victim was not directly notified of the interrupt but had to check if the rKrL}rM(h(XNThe victim was not directly notified of the interrupt but had to check if the h)jGubhy)rN}rO(h(X``interrupted``h1}rP(h5]h6]h4]h3]h7]uh)jGh#]rQhNX interruptedrRrS}rT(h(Uh)jNubah/hubhNX= flag was set. Afterwards, it had to reset the interrupt via rUrV}rW(h(X= flag was set. Afterwards, it had to reset the interrupt via h)jGubhy)rX}rY(h(X``interruptReset()``h1}rZ(h5]h6]h4]h3]h7]uh)jGh#]r[hNXinterruptReset()r\r]}r^(h(Uh)jXubah/hubhNX. You could manually set the r_r`}ra(h(X. You could manually set the h)jGubhy)rb}rc(h(X``interruptCause``h1}rd(h5]h6]h4]h3]h7]uh)jGh#]rehNXinterruptCauserfrg}rh(h(Uh)jbubah/hubhNX attribute of the victim.rirj}rk(h(X attribute of the victim.h)jGubeubhR)rl}rm(h(X`Explicitly checking for an interrupt is obviously error prone as it is too easy to be forgotten.rnh)j(h*h-h/hVh1}ro(h5]h6]h4]h3]h7]uh9M h:hh#]rphNX`Explicitly checking for an interrupt is obviously error prone as it is too easy to be forgotten.rqrr}rs(h(jnh)jlubaubhR)rt}ru(h(X In SimPy 3, you call :meth:`~simpy.events.Process.interrupt()` on the victim process. You can optionally supply a cause. An :exc:`~simpy.events.Interrupt` is then thrown into the victim process, which has to handle the interrupt via ``try: ... except Interrupt: ...``.h)j(h*h-h/hVh1}rv(h5]h6]h4]h3]h7]uh9Mh:hh#]rw(hNXIn SimPy 3, you call rxry}rz(h(XIn SimPy 3, you call h)jtubh)r{}r|(h(X):meth:`~simpy.events.Process.interrupt()`r}h)jth*h-h/hh1}r~(UreftypeXmethhΉhXsimpy.events.Process.interruptU refdomainXpyrh3]h4]U refexplicith5]h6]h7]hhhNhNuh9Mh#]rhy)r}r(h(j}h1}r(h5]h6]r(hjXpy-methreh4]h3]h7]uh)j{h#]rhNX interrupt()rr}r(h(Uh)jubah/hubaubhNX> on the victim process. You can optionally supply a cause. An rr}r(h(X> on the victim process. You can optionally supply a cause. An h)jtubh)r}r(h(X:exc:`~simpy.events.Interrupt`rh)jth*h-h/hh1}r(UreftypeXexchΉhXsimpy.events.InterruptU refdomainXpyrh3]h4]U refexplicith5]h6]h7]hhhNhNuh9Mh#]rhy)r}r(h(jh1}r(h5]h6]r(hjXpy-excreh4]h3]h7]uh)jh#]rhNX Interruptrr}r(h(Uh)jubah/hubaubhNXO is then thrown into the victim process, which has to handle the interrupt via rr}r(h(XO is then thrown into the victim process, which has to handle the interrupt via h)jtubhy)r}r(h(X"``try: ... except Interrupt: ...``h1}r(h5]h6]h4]h3]h7]uh)jth#]rhNXtry: ... except Interrupt: ...rr}r(h(Uh)jubah/hubhNX.r}r(h(X.h)jtubeubhR)r}r(h(X **SimPy 2**rh)j(h*h-h/hVh1}r(h5]h6]h4]h3]h7]uh9Mh:hh#]rh)r}r(h(jh1}r(h5]h6]h4]h3]h7]uh)jh#]rhNXSimPy 2rr}r(h(Uh)jubah/hubaubh)r}r(h(Xclass Interrupter(Process): def __init__(self, victim): super().__init__() self.victim = victim def run(self): yield hold, self, 1 self.interrupt(self.victim_proc) self.victim_proc.interruptCause = 'Spam' class Victim(Process): def run(self): yield hold, self, 10 if self.interrupted: cause = self.interruptCause self.interruptReset()h)j(h*h-h/hh1}r(hhXpythonhhh3]h4]h5]h6]h7]uh9Mh:hh#]rhNXclass Interrupter(Process): def __init__(self, victim): super().__init__() self.victim = victim def run(self): yield hold, self, 1 self.interrupt(self.victim_proc) self.victim_proc.interruptCause = 'Spam' class Victim(Process): def run(self): yield hold, self, 10 if self.interrupted: cause = self.interruptCause self.interruptReset()rr}r(h(Uh)jubaubhR)r}r(h(X **SimPy 3**rh)j(h*h-h/hVh1}r(h5]h6]h4]h3]h7]uh9M,h:hh#]rh)r}r(h(jh1}r(h5]h6]h4]h3]h7]uh)jh#]rhNXSimPy 3rr}r(h(Uh)jubah/hubaubh)r}r(h(Xdef interrupter(env, victim_proc): yield env.timeout(1) victim_proc.interrupt('Spam') def victim(env): try: yield env.timeout(10) except Interrupt as interrupt: cause = interrupt.causeh)j(h*h-h/hh1}r(hhXpythonhhh3]h4]h5]h6]h7]uh9M.h:hh#]rhNXdef interrupter(env, victim_proc): yield env.timeout(1) victim_proc.interrupt('Spam') def victim(env): try: yield env.timeout(10) except Interrupt as interrupt: cause = interrupt.causerr}r(h(Uh)jubaubeubh;)r}r(h(Uh)h`, the :doc:`examples <../examples/index>` or the :doc:`../api_reference/index`. You are also very welcome to submit improvements. Just create a pull request at `bitbucket `_.h)jh*h-h/hVh1}r(h5]h6]h4]h3]h7]uh9M>h:hh#]r(hNX^This guide is by no means complete. If you run into problems, please have a look at the other rr}r(h(X^This guide is by no means complete. If you run into problems, please have a look at the other h)jubh)r}r(h(X:doc:`guides `rh)jh*h-h/hh1}r(UreftypeXdocrhΈhXindexU refdomainUh3]h4]U refexplicith5]h6]h7]hhuh9M>h#]rhy)r}r(h(jh1}r(h5]h6]r(hjeh4]h3]h7]uh)jh#]rhNXguidesrr}r(h(Uh)jubah/hubaubhNX, the rr}r(h(X, the h)jubh)r}r(h(X#:doc:`examples <../examples/index>`rh)jh*h-h/hh1}r(UreftypeXdocrhΈhX../examples/indexU refdomainUh3]h4]U refexplicith5]h6]h7]hhuh9M>h#]rhy)r}r(h(jh1}r(h5]h6]r(hjeh4]h3]h7]uh)jh#]rhNXexamplesrr}r(h(Uh)jubah/hubaubhNX or the rr}r(h(X or the h)jubh)r}r(h(X:doc:`../api_reference/index`rh)jh*h-h/hh1}r(UreftypeXdocr hΈhX../api_reference/indexU refdomainUh3]h4]U refexplicith5]h6]h7]hhuh9M>h#]r hy)r }r (h(jh1}r (h5]h6]r(hj eh4]h3]h7]uh)jh#]rhNX../api_reference/indexrr}r(h(Uh)j ubah/hubaubhNXR. You are also very welcome to submit improvements. Just create a pull request at rr}r(h(XR. You are also very welcome to submit improvements. Just create a pull request at h)jubcdocutils.nodes reference r)r}r(h(X1`bitbucket `_h1}r(UnamehUrefurirX"https://bitbucket.org/simpy/simpy/rh3]h4]h5]h6]h7]uh)jh#]rhNX bitbucketrr}r(h(Uh)jubah/U referencer ubh%)r!}r"(h(X% U referencedr#Kh)jh/h0h1}r$(Urefurijh3]r%hah4]h5]h6]h7]r&hauh#]ubhNX.r'}r((h(X.h)jubeubeubeubeh(UU transformerr)NU footnote_refsr*}r+Urefnamesr,}r-Usymbol_footnotesr.]r/Uautofootnote_refsr0]r1Usymbol_footnote_refsr2]r3U citationsr4]r5h:hU current_liner6NUtransform_messagesr7]r8cdocutils.nodes system_message r9)r:}r;(h(Uh1}r<(h5]UlevelKh3]h4]Usourceh-h6]h7]UlineKUtypeUINFOr=uh#]r>hR)r?}r@(h(Uh1}rA(h5]h6]h4]h3]h7]uh)j:h#]rBhNX9Hyperlink target "porting-from-simpy2" is not referenced.rCrD}rE(h(Uh)j?ubah/hVubah/Usystem_messagerFubaUreporterrGNUid_startrHKU autofootnotesrI]rJU citation_refsrK}rLUindirect_targetsrM]rNUsettingsrO(cdocutils.frontend Values rPorQ}rR(Ufootnote_backlinksrSKUrecord_dependenciesrTNU rfc_base_urlrUUhttp://tools.ietf.org/html/rVU tracebackrWUpep_referencesrXNUstrip_commentsrYNU toc_backlinksrZUentryr[U language_coder\Uenr]U datestampr^NU report_levelr_KU _destinationr`NU halt_levelraKU strip_classesrbNhKNUerror_encoding_error_handlerrcUbackslashreplacerdUdebugreNUembed_stylesheetrfUoutput_encoding_error_handlerrgUstrictrhU sectnum_xformriKUdump_transformsrjNU docinfo_xformrkKUwarning_streamrlNUpep_file_url_templatermUpep-%04drnUexit_status_levelroKUconfigrpNUstrict_visitorrqNUcloak_email_addressesrrUtrim_footnote_reference_spacersUenvrtNUdump_pseudo_xmlruNUexpose_internalsrvNUsectsubtitle_xformrwU source_linkrxNUrfc_referencesryNUoutput_encodingrzUutf-8r{U source_urlr|NUinput_encodingr}U utf-8-sigr~U_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerUX/var/build/user_builds/simpy/checkouts/3.0.5/docs/topical_guides/porting_from_simpy2.rstrUgettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjhUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hj!hhdh!jhh}q?(h h8h!h6ubaubcdocutils.nodes paragraph q@)qA}qB(h XA simulation environment manages the simulation time as well as the scheduling and processing of events. It also provides means to step through or execute the simulation.qCh!hh"h%h'U paragraphqDh)}qE(h+]h,]h-]h.]h0]uh2Kh3hh]qFh(h X``env.run(until=10)``h)}r?(h+]h,]h-]h.]h0]uh!j*h]r@h>> import simpy >>> >>> def my_proc(env): ... yield env.timeout(1) ... return 'Monty Python’s Flying Circus' >>> >>> env = simpy.Environment() >>> proc = env.process(my_proc(env)) >>> env.run(until=proc) 'Monty Python’s Flying Circus' h!hh"h%h'hh)}rn(h+]h,]h-]h.]h0]uh2Nh3hh]ro(h@)rp}rq(h XInstead of passing a number to ``run()``, you can also pass any event to it. ``run()`` will then return when the event has been processed.h!jlh"h%h'hDh)}rr(h+]h,]h-]h.]h0]uh2K?h]rs(h>> import simpy >>> >>> def my_proc(env): ... yield env.timeout(1) ... return 'Monty Python’s Flying Circus' >>> >>> env = simpy.Environment() >>> proc = env.process(my_proc(env)) >>> env.run(until=proc) 'Monty Python’s Flying Circus'h!jlh'jbh)}r(jfjgh.]h-]h+]h,]h0]uh2KHh]rh>> import simpy >>> >>> def my_proc(env): ... yield env.timeout(1) ... return 'Monty Python’s Flying Circus' >>> >>> env = simpy.Environment() >>> proc = env.process(my_proc(env)) >>> env.run(until=proc) 'Monty Python’s Flying Circus'rr}r(h Uh!jubaubeubeubh@)r}r(h XTo step through the simulation event by event, the environment offers :meth:`~Environment.peek()` and :meth:`~Environment.step()`.h!hh"h%h'hDh)}r(h+]h,]h-]h.]h0]uh2KTh3hh]r(h}r?(h Uh!j9ubaubeubh)r@}rA(h Uh!hh"h%h'h(h)}rB(h+]h,]h-]h.]rChah0]rDhauh2Kgh3hh]rE(h5)rF}rG(h X State accessrHh!j@h"h%h'h9h)}rI(h+]h,]h-]h.]h0]uh2Kgh3hh]rJh>> def subfunc(env): ... print(env.active_process) # will print "p1" >>> >>> def my_proc(env): ... while True: ... print(env.active_process) # will print "p1" ... subfunc(env) ... yield env.timeout(1) >>> >>> env = simpy.Environment() >>> p1 = env.process(my_proc(env)) >>> env.active_process # None >>> env.step() >>> env.active_process # Noneh!j@h"h%h'jbh)}r)(jfjgh.]h-]h+]h,]h0]uh2Kh3hh]r*h>> def subfunc(env): ... print(env.active_process) # will print "p1" >>> >>> def my_proc(env): ... while True: ... print(env.active_process) # will print "p1" ... subfunc(env) ... yield env.timeout(1) >>> >>> env = simpy.Environment() >>> p1 = env.process(my_proc(env)) >>> env.active_process # None >>> env.step() >>> env.active_process # Noner+r,}r-(h Uh!j'ubaubh@)r.}r/(h X An exemplary use case for this is the resource system: If a process function calls :meth:`~simpy.resources.resource.Resource.request()` to request a resource, the resource determines the requesting process via ``env.active_process``. Take a `look at the code`__ to see how we do this :-).h!j@h"h%h'hDh)}r0(h+]h,]h-]h.]h0]uh2Kh3hh]r1(h(hej9Xpy-methr?eh-]h.]h0]uh!j5h]r@h`.h!jgh"h%h'hDh)}r%(h+]h,]h-]h.]h0]uh2Kh3hh]r&(h`r,h!j#h"h%h'hUh)}r-(UreftypeXdocr.hWhXXeventsU refdomainUh.]h-]U refexplicith+]h,]h0]hZh[uh2Kh]r/h`)r0}r1(h j,h)}r2(h+]h,]r3(hej.eh-]h.]h0]uh!j*h]r4hhauh2Kh3hh]r?(h5)r@}rA(h X MiscellaneousrBh!j:h"h%h'h9h)}rC(h+]h,]h-]h.]h0]uh2Kh3hh]rDh(hXThis guide describes the basic concepts of SimPy: How does it work? What are processes, events and the environment? What can I do with them?q?hhhh!h#U paragraphq@h%}qA(h']h(]h)]h*]h,]uh.Kh/hh]qBh8XThis guide describes the basic concepts of SimPy: How does it work? What are processes, events and the environment? What can I do with them?qCqD}qE(hh?hh=ubaubh)qF}qG(hUhhhh!h#h$h%}qH(h']h(]h)]h*]qIhah,]qJhauh.K h/hh]qK(h1)qL}qM(hXHow SimPy worksqNhhFhh!h#h5h%}qO(h']h(]h)]h*]h,]uh.K h/hh]qPh8XHow SimPy worksqQqR}qS(hhNhhLubaubh<)qT}qU(hXoIf you break SimPy down, it is just an asynchronous event dispatcher. You generate events and schedule them at a given simulation time. Events are sorted by priority, simulation time, and an increasing event id. An event also has a list of callbacks, which are executed when the event is triggered and processed by the event loop. Events may also have a return value.qVhhFhh!h#h@h%}qW(h']h(]h)]h*]h,]uh.K h/hh]qXh8XoIf you break SimPy down, it is just an asynchronous event dispatcher. You generate events and schedule them at a given simulation time. Events are sorted by priority, simulation time, and an increasing event id. An event also has a list of callbacks, which are executed when the event is triggered and processed by the event loop. Events may also have a return value.qYqZ}q[(hhVhhTubaubh<)q\}q](hXThe components involved in this are the :class:`~simpy.core.Environment`, :mod:`~simpy.events` and the process functions that you write.hhFhh!h#h@h%}q^(h']h(]h)]h*]h,]uh.Kh/hh]q_(h8X(The components involved in this are the q`qa}qb(hX(The components involved in this are the hh\ubcsphinx.addnodes pending_xref qc)qd}qe(hX :class:`~simpy.core.Environment`qfhh\hh!h#U pending_xrefqgh%}qh(UreftypeXclassUrefwarnqiU reftargetqjXsimpy.core.EnvironmentU refdomainXpyqkh*]h)]U refexplicith']h(]h,]UrefdocqlXtopical_guides/simpy_basicsqmUpy:classqnNU py:moduleqoNuh.Kh]qpcdocutils.nodes literal qq)qr}qs(hhfh%}qt(h']h(]qu(UxrefqvhkXpy-classqweh)]h*]h,]uhhdh]qxh8X Environmentqyqz}q{(hUhhrubah#Uliteralq|ubaubh8X, q}q~}q(hX, hh\ubhc)q}q(hX:mod:`~simpy.events`qhh\hh!h#hgh%}q(UreftypeXmodhihjX simpy.eventsU refdomainXpyqh*]h)]U refexplicith']h(]h,]hlhmhnNhoNuh.Kh]qhq)q}q(hhh%}q(h']h(]q(hvhXpy-modqeh)]h*]h,]uhhh]qh8Xeventsqq}q(hUhhubah#h|ubaubh8X* and the process functions that you write.qq}q(hX* and the process functions that you write.hh\ubeubh<)q}q(hXProcess functions implement your simulation model, that is, they define the behavior of your simulation. They are plain Python generator functions that yield instances of :class:`~simpy.events.Event`.hhFhh!h#h@h%}q(h']h(]h)]h*]h,]uh.Kh/hh]q(h8XProcess functions implement your simulation model, that is, they define the behavior of your simulation. They are plain Python generator functions that yield instances of qq}q(hXProcess functions implement your simulation model, that is, they define the behavior of your simulation. They are plain Python generator functions that yield instances of hhubhc)q}q(hX:class:`~simpy.events.Event`qhhhh!h#hgh%}q(UreftypeXclasshihjXsimpy.events.EventU refdomainXpyqh*]h)]U refexplicith']h(]h,]hlhmhnNhoNuh.Kh]qhq)q}q(hhh%}q(h']h(]q(hvhXpy-classqeh)]h*]h,]uhhh]qh8XEventqq}q(hUhhubah#h|ubaubh8X.q}q(hX.hhubeubh<)q}q(hXeThe environment stores these events in its event list and keeps track of the current simulation time.qhhFhh!h#h@h%}q(h']h(]h)]h*]h,]uh.Kh/hh]qh8XeThe environment stores these events in its event list and keeps track of the current simulation time.qq}q(hhhhubaubh<)q}q(hXIf a process function yields and event, SimPy adds the process to the event's callbacks and suspends the process until the event is triggered and processed. When a process waiting for an event is resumed, it will also receive the event's value.qhhFhh!h#h@h%}q(h']h(]h)]h*]h,]uh.Kh/hh]qh8XIf a process function yields and event, SimPy adds the process to the event's callbacks and suspends the process until the event is triggered and processed. When a process waiting for an event is resumed, it will also receive the event's value.qq}q(hhhhubaubh<)q}q(hXHere is a very simple example that illustrates all this; the code is more verbose than it needs to be to make things extra clear. You find a compact version of it at the end of this section::hhFhh!h#h@h%}q(h']h(]h)]h*]h,]uh.K!h/hh]qh8XHere is a very simple example that illustrates all this; the code is more verbose than it needs to be to make things extra clear. You find a compact version of it at the end of this section:qq}q(hXHere is a very simple example that illustrates all this; the code is more verbose than it needs to be to make things extra clear. You find a compact version of it at the end of this section:hhubaubcdocutils.nodes literal_block q)q}q(hXJ>>> import simpy >>> >>> def example(env): ... event = simpy.events.Timeout(env, delay=1, value=42) ... value = yield event ... print('now=%d, value=%d' % (env.now, value)) >>> >>> env = simpy.Environment() >>> example_gen = example(env) >>> p = simpy.events.Process(env, example_gen) >>> >>> env.run() now=1, value=42hhFhh!h#U literal_blockqh%}q(U xml:spaceqUpreserveqh*]h)]h']h(]h,]uh.K%h/hh]qh8XJ>>> import simpy >>> >>> def example(env): ... event = simpy.events.Timeout(env, delay=1, value=42) ... value = yield event ... print('now=%d, value=%d' % (env.now, value)) >>> >>> env = simpy.Environment() >>> example_gen = example(env) >>> p = simpy.events.Process(env, example_gen) >>> >>> env.run() now=1, value=42qɅq}q(hUhhubaubh<)q}q(hX=The ``example()`` process function above first creates a :class:`~simpy.events.Timeout` event. It passes the environment, a delay, and a value to it. The Timeout schedules itself at ``now + delay`` (that's why the environment is required); other event types usually schedule themselves at the current simulation time.hhFhh!h#h@h%}q(h']h(]h)]h*]h,]uh.K3h/hh]q(h8XThe qЅq}q(hXThe hhubhq)q}q(hX ``example()``h%}q(h']h(]h)]h*]h,]uhhh]qh8X example()qׅq}q(hUhhubah#h|ubh8X( process function above first creates a qڅq}q(hX( process function above first creates a hhubhc)q}q(hX:class:`~simpy.events.Timeout`qhhhh!h#hgh%}q(UreftypeXclasshihjXsimpy.events.TimeoutU refdomainXpyqh*]h)]U refexplicith']h(]h,]hlhmhnNhoNuh.K3h]qhq)q}q(hhh%}q(h']h(]q(hvhXpy-classqeh)]h*]h,]uhhh]qh8XTimeoutq酁q}q(hUhhubah#h|ubaubh8X_ event. It passes the environment, a delay, and a value to it. The Timeout schedules itself at q셁q}q(hX_ event. It passes the environment, a delay, and a value to it. The Timeout schedules itself at hhubhq)q}q(hX``now + delay``h%}q(h']h(]h)]h*]h,]uhhh]qh8X now + delayqq}q(hUhhubah#h|ubh8Xx (that's why the environment is required); other event types usually schedule themselves at the current simulation time.qq}q(hXx (that's why the environment is required); other event types usually schedule themselves at the current simulation time.hhubeubh<)q}q(hXLThe process function then yields the event and thus gets suspended. It is resumed, when SimPy processes the Timeout event. The process function also receives the event's value (42) -- this is, however, optional, so ``yield event`` would have been okay if the you were not interested in the value or if the event had no value at all.hhFhh!h#h@h%}q(h']h(]h)]h*]h,]uh.K9h/hh]q(h8XThe process function then yields the event and thus gets suspended. It is resumed, when SimPy processes the Timeout event. The process function also receives the event's value (42) -- this is, however, optional, so qq}q(hXThe process function then yields the event and thus gets suspended. It is resumed, when SimPy processes the Timeout event. The process function also receives the event's value (42) -- this is, however, optional, so hhubhq)r}r(hX``yield event``h%}r(h']h(]h)]h*]h,]uhhh]rh8X yield eventrr}r(hUhjubah#h|ubh8Xf would have been okay if the you were not interested in the value or if the event had no value at all.rr}r (hXf would have been okay if the you were not interested in the value or if the event had no value at all.hhubeubh<)r }r (hXFinally, the process function prints the current simulation time (that is accessible via the environment's :attr:`~simpy.core.Environment.now` attribute) and the Timeout's value.hhFhh!h#h@h%}r (h']h(]h)]h*]h,]uh.K?h/hh]r (h8XkFinally, the process function prints the current simulation time (that is accessible via the environment's rr}r(hXkFinally, the process function prints the current simulation time (that is accessible via the environment's hj ubhc)r}r(hX#:attr:`~simpy.core.Environment.now`rhj hh!h#hgh%}r(UreftypeXattrhihjXsimpy.core.Environment.nowU refdomainXpyrh*]h)]U refexplicith']h(]h,]hlhmhnNhoNuh.K?h]rhq)r}r(hjh%}r(h']h(]r(hvjXpy-attrreh)]h*]h,]uhjh]rh8Xnowrr}r(hUhjubah#h|ubaubh8X$ attribute) and the Timeout's value.r r!}r"(hX$ attribute) and the Timeout's value.hj ubeubh<)r#}r$(hXIf all required process functions are defined, you can instantiate all objects for your simulation. In most cases, you start by creating an instance of :class:`~simpy.core.Environment`, because you'll need to pass it around a lot when creating everything else.hhFhh!h#h@h%}r%(h']h(]h)]h*]h,]uh.KCh/hh]r&(h8XIf all required process functions are defined, you can instantiate all objects for your simulation. In most cases, you start by creating an instance of r'r(}r)(hXIf all required process functions are defined, you can instantiate all objects for your simulation. In most cases, you start by creating an instance of hj#ubhc)r*}r+(hX :class:`~simpy.core.Environment`r,hj#hh!h#hgh%}r-(UreftypeXclasshihjXsimpy.core.EnvironmentU refdomainXpyr.h*]h)]U refexplicith']h(]h,]hlhmhnNhoNuh.KCh]r/hq)r0}r1(hj,h%}r2(h']h(]r3(hvj.Xpy-classr4eh)]h*]h,]uhj*h]r5h8X Environmentr6r7}r8(hUhj0ubah#h|ubaubh8XL, because you'll need to pass it around a lot when creating everything else.r9r:}r;(hXL, because you'll need to pass it around a lot when creating everything else.hj#ubeubh<)r<}r=(hX0Starting a process function involves two things:r>hhFhh!h#h@h%}r?(h']h(]h)]h*]h,]uh.KHh/hh]r@h8X0Starting a process function involves two things:rArB}rC(hj>hj<ubaubcdocutils.nodes enumerated_list rD)rE}rF(hUhhFhh!h#Uenumerated_listrGh%}rH(UsuffixrIU.h*]h)]h']UprefixrJUh(]h,]UenumtyperKUarabicrLuh.KJh/hh]rM(cdocutils.nodes list_item rN)rO}rP(hX/You have to call the process function to create a generator object. (This will not execute any code of that function yet. Please read `The Python yield keyword explained `_, to understand why this is the case.) hjEhh!h#U list_itemrQh%}rR(h']h(]h)]h*]h,]uh.Nh/hh]rSh<)rT}rU(hX.You have to call the process function to create a generator object. (This will not execute any code of that function yet. Please read `The Python yield keyword explained `_, to understand why this is the case.)hjOhh!h#h@h%}rV(h']h(]h)]h*]h,]uh.KJh]rW(h8XYou have to call the process function to create a generator object. (This will not execute any code of that function yet. Please read rXrY}rZ(hXYou have to call the process function to create a generator object. (This will not execute any code of that function yet. Please read hjTubcdocutils.nodes reference r[)r\}r](hX`The Python yield keyword explained `_h%}r^(UnameX"The Python yield keyword explainedUrefurir_XZhttp://stackoverflow.com/questions/231767/the-python-yield-keyword-explained/231855#231855r`h*]h)]h']h(]h,]uhjTh]rah8X"The Python yield keyword explainedrbrc}rd(hUhj\ubah#U referencereubcdocutils.nodes target rf)rg}rh(hX] U referencedriKhjTh#Utargetrjh%}rk(Urefurij`h*]rlhah)]h']h(]h,]rmh auh]ubh8X&, to understand why this is the case.)rnro}rp(hX&, to understand why this is the case.)hjTubeubaubjN)rq}rr(hXYou then create an instance of :class:`~simpy.events.Process` and pass the environment and the generator object to it. This will schedule an :class:`~simpy.events.Initialize` event at the current simulation time which starts the execution of the process function. The process instance is also an event that is triggered when the process function returns. The :doc:`guide to events ` explains why this is handy. hjEhh!h#jQh%}rs(h']h(]h)]h*]h,]uh.Nh/hh]rth<)ru}rv(hXYou then create an instance of :class:`~simpy.events.Process` and pass the environment and the generator object to it. This will schedule an :class:`~simpy.events.Initialize` event at the current simulation time which starts the execution of the process function. The process instance is also an event that is triggered when the process function returns. The :doc:`guide to events ` explains why this is handy.hjqhh!h#h@h%}rw(h']h(]h)]h*]h,]uh.KPh]rx(h8XYou then create an instance of ryrz}r{(hXYou then create an instance of hjuubhc)r|}r}(hX:class:`~simpy.events.Process`r~hjuhh!h#hgh%}r(UreftypeXclasshihjXsimpy.events.ProcessU refdomainXpyrh*]h)]U refexplicith']h(]h,]hlhmhnNhoNuh.KPh]rhq)r}r(hj~h%}r(h']h(]r(hvjXpy-classreh)]h*]h,]uhj|h]rh8XProcessrr}r(hUhjubah#h|ubaubh8XP and pass the environment and the generator object to it. This will schedule an rr}r(hXP and pass the environment and the generator object to it. This will schedule an hjuubhc)r}r(hX!:class:`~simpy.events.Initialize`rhjuhh!h#hgh%}r(UreftypeXclasshihjXsimpy.events.InitializeU refdomainXpyrh*]h)]U refexplicith']h(]h,]hlhmhnNhoNuh.KPh]rhq)r}r(hjh%}r(h']h(]r(hvjXpy-classreh)]h*]h,]uhjh]rh8X Initializerr}r(hUhjubah#h|ubaubh8X event at the current simulation time which starts the execution of the process function. The process instance is also an event that is triggered when the process function returns. The rr}r(hX event at the current simulation time which starts the execution of the process function. The process instance is also an event that is triggered when the process function returns. The hjuubhc)r}r(hX:doc:`guide to events `rhjuhh!h#hgh%}r(UreftypeXdocrhihjXeventsU refdomainUh*]h)]U refexplicith']h(]h,]hlhmuh.KPh]rhq)r}r(hjh%}r(h']h(]r(hvjeh)]h*]h,]uhjh]rh8Xguide to eventsrr}r(hUhjubah#h|ubaubh8X explains why this is handy.rr}r(hX explains why this is handy.hjuubeubaubeubh<)r}r(hXFinally, you can start SimPy's event loop. By default, it will run as long as there are events in the event list, but you can also let it stop earlier by providing an ``until`` argument (see :ref:`simulation-control`).hhFhh!h#h@h%}r(h']h(]h)]h*]h,]uh.KWh/hh]r(h8XFinally, you can start SimPy's event loop. By default, it will run as long as there are events in the event list, but you can also let it stop earlier by providing an rr}r(hXFinally, you can start SimPy's event loop. By default, it will run as long as there are events in the event list, but you can also let it stop earlier by providing an hjubhq)r}r(hX ``until``h%}r(h']h(]h)]h*]h,]uhjh]rh8Xuntilrr}r(hUhjubah#h|ubh8X argument (see rr}r(hX argument (see hjubhc)r}r(hX:ref:`simulation-control`rhjhh!h#hgh%}r(UreftypeXrefhihjXsimulation-controlU refdomainXstdrh*]h)]U refexplicith']h(]h,]hlhmuh.KWh]rcdocutils.nodes emphasis r)r}r(hjh%}r(h']h(]r(hvjXstd-refreh)]h*]h,]uhjh]rh8Xsimulation-controlrr}r(hUhjubah#Uemphasisrubaubh8X).rr}r(hX).hjubeubh<)r}r(hXtThe following guides describe the environment and its interactions with events and process functions in more detail.rhhFhh!h#h@h%}r(h']h(]h)]h*]h,]uh.K[h/hh]rh8XtThe following guides describe the environment and its interactions with events and process functions in more detail.rr}r(hjhjubaubeubh)r}r(hUhhhh!h#h$h%}r(h']h(]h)]h*]rhah,]rhauh.K`h/hh]r(h1)r}r(hX,"Best practice" version of the example aboverhjhh!h#h5h%}r(h']h(]h)]h*]h,]uh.K`h/hh]rh8X,"Best practice" version of the example aboverr}r(hjhjubaubh)r}r(hX>>> import simpy >>> >>> def example(env): ... value = yield env.timeout(1, value=42) ... print('now=%d, value=%d' % (env.now, value)) >>> >>> env = simpy.Environment() >>> p = env.process(example(env)) >>> env.run() now=1, value=42hjhh!h#hh%}r(hhh*]h)]h']h(]h,]uh.Kdh/hh]rh8X>>> import simpy >>> >>> def example(env): ... value = yield env.timeout(1, value=42) ... print('now=%d, value=%d' % (env.now, value)) >>> >>> env = simpy.Environment() >>> p = env.process(example(env)) >>> env.run() now=1, value=42rr}r(hUhjubaubeubeubahUU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh/hU current_linerNUtransform_messagesr]rUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr ]r Usettingsr (cdocutils.frontend Values r or }r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh5NUerror_encoding_error_handlerrUbackslashreplacer Udebugr!NUembed_stylesheetr"Uoutput_encoding_error_handlerr#Ustrictr$U sectnum_xformr%KUdump_transformsr&NU docinfo_xformr'KUwarning_streamr(NUpep_file_url_templater)Upep-%04dr*Uexit_status_levelr+KUconfigr,NUstrict_visitorr-NUcloak_email_addressesr.Utrim_footnote_reference_spacer/Uenvr0NUdump_pseudo_xmlr1NUexpose_internalsr2NUsectsubtitle_xformr3U source_linkr4NUrfc_referencesr5NUoutput_encodingr6Uutf-8r7U source_urlr8NUinput_encodingr9U utf-8-sigr:U_disable_configr;NU id_prefixr<UU tab_widthr=KUerror_encodingr>UUTF-8r?U_sourcer@UQ/var/build/user_builds/simpy/checkouts/3.0.5/docs/topical_guides/simpy_basics.rstrAUgettext_compactrBU generatorrCNUdump_internalsrDNU smart_quotesrEU pep_base_urlrFUhttp://www.python.org/dev/peps/rGUsyntax_highlightrHUlongrIUinput_encoding_error_handlerrJj$Uauto_id_prefixrKUidrLUdoctitle_xformrMUstrip_elements_with_classesrNNU _config_filesrO]Ufile_insertion_enabledrPU raw_enabledrQKU dump_settingsrRNubUsymbol_footnote_startrSKUidsrT}rU(hhFhhhjghjuUsubstitution_namesrV}rWh#h/h%}rX(h']h*]h)]Usourceh!h(]h,]uU footnotesrY]rZUrefidsr[}r\ub.PK.D5a--2simpy-3.0.5/.doctrees/topical_guides/index.doctreecdocutils.nodes document q)q}q(U nametypesq}qXtopical guidesqNsUsubstitution_defsq}qUparse_messagesq ]q Ucurrent_sourceq NU decorationq NUautofootnote_startq KUnameidsq}qhUtopical-guidesqsUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqcdocutils.nodes reprunicode qXJ/var/build/user_builds/simpy/checkouts/3.0.5/docs/topical_guides/index.rstqq}qbUtagnameqUsectionqU attributesq}q (Udupnamesq!]Uclassesq"]Ubackrefsq#]Uidsq$]q%haUnamesq&]q'hauUlineq(KUdocumentq)hh]q*(cdocutils.nodes title q+)q,}q-(hXTopical Guidesq.hhhhhUtitleq/h}q0(h!]h"]h#]h$]h&]uh(Kh)hh]q1cdocutils.nodes Text q2XTopical Guidesq3q4}q5(hh.hh,ubaubcdocutils.nodes paragraph q6)q7}q8(hXThis sections covers various aspects of SimPy more in-depth. It assumes that you have a basic understanding of SimPy's capabilities and that you know what you are looking for.q9hhhhhU paragraphq:h}q;(h!]h"]h#]h$]h&]uh(Kh)hh]q}q?(hh9hh7ubaubcdocutils.nodes compound q@)qA}qB(hUhhhhhUcompoundqCh}qD(h!]h"]qEUtoctree-wrapperqFah#]h$]h&]uh(Nh)hh]qGcsphinx.addnodes toctree qH)qI}qJ(hUhhAhhhUtoctreeqKh}qL(UnumberedqMKU includehiddenqNhXtopical_guides/indexqOU titlesonlyqPUglobqQh$]h#]h!]h"]h&]UentriesqR]qS(NXtopical_guides/simpy_basicsqTqUNXtopical_guides/environmentsqVqWNXtopical_guides/eventsqXqYNX"topical_guides/process_interactionqZq[NX"topical_guides/porting_from_simpy2q\q]eUhiddenq^U includefilesq_]q`(hThVhXhZh\eUmaxdepthqaKuh(K h]ubaubcdocutils.nodes comment qb)qc}qd(hX(- resources (resource, container, store)hhhhhUcommentqeh}qf(U xml:spaceqgUpreserveqhh$]h#]h!]h"]h&]uh(Kh)hh]qih2X(- resources (resource, container, store)qjqk}ql(hUhhcubaubhb)qm}qn(hX- real-time simulationshhhhhheh}qo(hghhh$]h#]h!]h"]h&]uh(Kh)hh]qph2X- real-time simulationsqqqr}qs(hUhhmubaubhb)qt}qu(hX - monitoringhhhhhheh}qv(hghhh$]h#]h!]h"]h&]uh(Kh)hh]qwh2X - monitoringqxqy}qz(hUhhtubaubhb)q{}q|(hX,- analyzing results (numpy, matploblib, ...)hhhhhheh}q}(hghhh$]h#]h!]h"]h&]uh(Kh)hh]q~h2X,- analyzing results (numpy, matploblib, ...)qq}q(hUhh{ubaubhb)q}q(hX- integration with guishhhhhheh}q(hghhh$]h#]h!]h"]h&]uh(Kh)hh]qh2X- integration with guisqq}q(hUhhubaubeubahUU transformerqNU footnote_refsq}qUrefnamesq}qUsymbol_footnotesq]qUautofootnote_refsq]qUsymbol_footnote_refsq]qU citationsq]qh)hU current_lineqNUtransform_messagesq]qUreporterqNUid_startqKU autofootnotesq]qU citation_refsq}qUindirect_targetsq]qUsettingsq(cdocutils.frontend Values qoq}q(Ufootnote_backlinksqKUrecord_dependenciesqNU rfc_base_urlqUhttp://tools.ietf.org/html/qU tracebackqUpep_referencesqNUstrip_commentsqNU toc_backlinksqUentryqU language_codeqUenqU datestampqNU report_levelqKU _destinationqNU halt_levelqKU strip_classesqNh/NUerror_encoding_error_handlerqUbackslashreplaceqUdebugqNUembed_stylesheetqUoutput_encoding_error_handlerqUstrictqU sectnum_xformqKUdump_transformsqNU docinfo_xformqKUwarning_streamqNUpep_file_url_templateqUpep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqĈUtrim_footnote_reference_spaceqʼnUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqɉU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUJ/var/build/user_builds/simpy/checkouts/3.0.5/docs/topical_guides/index.rstqUgettext_compactq؈U generatorqNUdump_internalsqNU smart_quotesqۉU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]Ufile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}qhhsUsubstitution_namesq}qhh)h}q(h!]h$]h#]Usourcehh"]h&]uU footnotesq]qUrefidsq}qub.PK.DeKqq@simpy-3.0.5/.doctrees/topical_guides/process_interaction.doctreecdocutils.nodes document q)q}q(U nametypesq}q(Xinterrupting another processqNXprocess interactionqNX(waiting-for-another-process-to-terminateqXinterrupting-another-processq X(waiting for another process to terminateq NXsleep-until-woken-upq Xsleep until woken upq NuUsubstitution_defsq }qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hUid3qhUprocess-interactionqhU(waiting-for-another-process-to-terminateqh Uinterrupting-another-processqh Uid2qh Usleep-until-woken-upqh Uid1quUchildrenq]qcdocutils.nodes section q)q }q!(U rawsourceq"UUparentq#hUsourceq$cdocutils.nodes reprunicode q%XX/var/build/user_builds/simpy/checkouts/3.0.5/docs/topical_guides/process_interaction.rstq&q'}q(bUtagnameq)Usectionq*U attributesq+}q,(Udupnamesq-]Uclassesq.]Ubackrefsq/]Uidsq0]q1haUnamesq2]q3hauUlineq4KUdocumentq5hh]q6(cdocutils.nodes title q7)q8}q9(h"XProcess Interactionq:h#h h$h'h)Utitleq;h+}q<(h-]h.]h/]h0]h2]uh4Kh5hh]q=cdocutils.nodes Text q>XProcess Interactionq?q@}qA(h"h:h#h8ubaubcdocutils.nodes paragraph qB)qC}qD(h"XUEvent discrete simulation is only made interesting by interactions between processes.qEh#h h$h'h)U paragraphqFh+}qG(h-]h.]h/]h0]h2]uh4Kh5hh]qHh>XUEvent discrete simulation is only made interesting by interactions between processes.qIqJ}qK(h"hEh#hCubaubhB)qL}qM(h"XSo this guide is about:qNh#h h$h'h)hFh+}qO(h-]h.]h/]h0]h2]uh4Kh5hh]qPh>XSo this guide is about:qQqR}qS(h"hNh#hLubaubcdocutils.nodes bullet_list qT)qU}qV(h"Uh#h h$h'h)U bullet_listqWh+}qX(UbulletqYX*h0]h/]h-]h.]h2]uh4K h5hh]qZ(cdocutils.nodes list_item q[)q\}q](h"X2:ref:`sleep-until-woken-up` (passivate/reactivate)q^h#hUh$h'h)U list_itemq_h+}q`(h-]h.]h/]h0]h2]uh4Nh5hh]qahB)qb}qc(h"h^h#h\h$h'h)hFh+}qd(h-]h.]h/]h0]h2]uh4K h]qe(csphinx.addnodes pending_xref qf)qg}qh(h"X:ref:`sleep-until-woken-up`qih#hbh$h'h)U pending_xrefqjh+}qk(UreftypeXrefUrefwarnqlU reftargetqmXsleep-until-woken-upU refdomainXstdqnh0]h/]U refexplicith-]h.]h2]UrefdocqoX"topical_guides/process_interactionqpuh4K h]qqcdocutils.nodes emphasis qr)qs}qt(h"hih+}qu(h-]h.]qv(UxrefqwhnXstd-refqxeh/]h0]h2]uh#hgh]qyh>Xsleep-until-woken-upqzq{}q|(h"Uh#hsubah)Uemphasisq}ubaubh>X (passivate/reactivate)q~q}q(h"X (passivate/reactivate)h#hbubeubaubh[)q}q(h"X/:ref:`waiting-for-another-process-to-terminate`qh#hUh$h'h)h_h+}q(h-]h.]h/]h0]h2]uh4Nh5hh]qhB)q}q(h"hh#hh$h'h)hFh+}q(h-]h.]h/]h0]h2]uh4K h]qhf)q}q(h"hh#hh$h'h)hjh+}q(UreftypeXrefhlhmX(waiting-for-another-process-to-terminateU refdomainXstdqh0]h/]U refexplicith-]h.]h2]hohpuh4K h]qhr)q}q(h"hh+}q(h-]h.]q(hwhXstd-refqeh/]h0]h2]uh#hh]qh>X(waiting-for-another-process-to-terminateqq}q(h"Uh#hubah)h}ubaubaubaubh[)q}q(h"X$:ref:`interrupting-another-process` h#hUh$h'h)h_h+}q(h-]h.]h/]h0]h2]uh4Nh5hh]qhB)q}q(h"X#:ref:`interrupting-another-process`qh#hh$h'h)hFh+}q(h-]h.]h/]h0]h2]uh4K h]qhf)q}q(h"hh#hh$h'h)hjh+}q(UreftypeXrefhlhmXinterrupting-another-processU refdomainXstdqh0]h/]U refexplicith-]h.]h2]hohpuh4K h]qhr)q}q(h"hh+}q(h-]h.]q(hwhXstd-refqeh/]h0]h2]uh#hh]qh>Xinterrupting-another-processqq}q(h"Uh#hubah)h}ubaubaubaubeubhB)q}q(h"XThe first two items were already covered in the :doc:`events` guide, but we'll also include them here for the sake of completeness.h#h h$h'h)hFh+}q(h-]h.]h/]h0]h2]uh4Kh5hh]q(h>X0The first two items were already covered in the qq}q(h"X0The first two items were already covered in the h#hubhf)q}q(h"X :doc:`events`qh#hh$h'h)hjh+}q(UreftypeXdocqhlhmXeventsU refdomainUh0]h/]U refexplicith-]h.]h2]hohpuh4Kh]qcdocutils.nodes literal q)q}q(h"hh+}q(h-]h.]q(hwheh/]h0]h2]uh#hh]qh>Xeventsq…q}q(h"Uh#hubah)Uliteralqubaubh>XF guide, but we'll also include them here for the sake of completeness.qƅq}q(h"XF guide, but we'll also include them here for the sake of completeness.h#hubeubhB)q}q(h"XwAnother possibility for processes to interact are resources. They are discussed in a :doc:`separate guide `.h#h h$h'h)hFh+}q(h-]h.]h/]h0]h2]uh4Kh5hh]q(h>XUAnother possibility for processes to interact are resources. They are discussed in a qͅq}q(h"XUAnother possibility for processes to interact are resources. They are discussed in a h#hubhf)q}q(h"X!:doc:`separate guide `qh#hh$h'h)hjh+}q(UreftypeXdocqhlhmX resourcesU refdomainUh0]h/]U refexplicith-]h.]h2]hohpuh4Kh]qh)q}q(h"hh+}q(h-]h.]q(hwheh/]h0]h2]uh#hh]qh>Xseparate guideqۅq}q(h"Uh#hubah)hubaubh>X.q}q(h"X.h#hubeubcdocutils.nodes target q)q}q(h"X.. _sleep-until-woken-up:h#h h$h'h)Utargetqh+}q(h0]h/]h-]h.]h2]Urefidqhuh4Kh5hh]ubh)q}q(h"Uh#h h$h'Uexpect_referenced_by_nameq}qh hsh)h*h+}q(h-]h.]h/]h0]q(hheh2]q(h h euh4Kh5hUexpect_referenced_by_idq}qhhsh]q(h7)q}q(h"XSleep until woken upqh#hh$h'h)h;h+}q(h-]h.]h/]h0]h2]uh4Kh5hh]qh>XSleep until woken upqq}q(h"hh#hubaubhB)q}q(h"XImagine you want to model an electric vehicle with an intelligent battery-charging controller. While the vehicle is driving, the controller can be passive but needs to be reactivate once the vehicle is connected to the power grid in order to charge the battery.qh#hh$h'h)hFh+}q(h-]h.]h/]h0]h2]uh4Kh5hh]qh>XImagine you want to model an electric vehicle with an intelligent battery-charging controller. While the vehicle is driving, the controller can be passive but needs to be reactivate once the vehicle is connected to the power grid in order to charge the battery.qq}q(h"hh#hubaubhB)r}r(h"XIn SimPy 2, this pattern was known as *passivate / reactivate*. In SimPy 3, you can accomplish that with a simple, shared :class:`~simpy.events.Event`:h#hh$h'h)hFh+}r(h-]h.]h/]h0]h2]uh4Kh5hh]r(h>X&In SimPy 2, this pattern was known as rr}r(h"X&In SimPy 2, this pattern was known as h#jubhr)r}r(h"X*passivate / reactivate*h+}r (h-]h.]h/]h0]h2]uh#jh]r h>Xpassivate / reactivater r }r (h"Uh#jubah)h}ubh>X<. In SimPy 3, you can accomplish that with a simple, shared rr}r(h"X<. In SimPy 3, you can accomplish that with a simple, shared h#jubhf)r}r(h"X:class:`~simpy.events.Event`rh#jh$h'h)hjh+}r(UreftypeXclasshlhmXsimpy.events.EventU refdomainXpyrh0]h/]U refexplicith-]h.]h2]hohpUpy:classrNU py:modulerNuh4Kh]rh)r}r(h"jh+}r(h-]h.]r(hwjXpy-classreh/]h0]h2]uh#jh]rh>XEventrr }r!(h"Uh#jubah)hubaubh>X:r"}r#(h"X:h#jubeubcdocutils.nodes literal_block r$)r%}r&(h"X?>>> from random import seed, randint >>> seed(23) >>> >>> import simpy >>> >>> class EV: ... def __init__(self, env): ... self.env = env ... self.drive_proc = env.process(self.drive(env)) ... self.bat_ctrl_proc = env.process(self.bat_ctrl(env)) ... self.bat_ctrl_reactivate = env.event() ... ... def drive(self, env): ... while True: ... # Drive for 20-40 min ... yield env.timeout(randint(20, 40)) ... ... # Park for 1–6 hours ... print('Start parking at', env.now) ... self.bat_ctrl_reactivate.succeed() # "reactivate" ... self.bat_ctrl_reactivate = env.event() ... yield env.timeout(randint(60, 360)) ... print('Stop parking at', env.now) ... ... def bat_ctrl(self, env): ... while True: ... print('Bat. ctrl. passivating at', env.now) ... yield self.bat_ctrl_reactivate # "passivate" ... print('Bat. ctrl. reactivated at', env.now) ... ... # Intelligent charging behavior here … ... yield env.timeout(randint(30, 90)) ... >>> env = simpy.Environment() >>> ev = EV(env) >>> env.run(until=150) Bat. ctrl. passivating at 0 Start parking at 29 Bat. ctrl. reactivated at 29 Bat. ctrl. passivating at 60 Stop parking at 131h#hh$h'h)U literal_blockr'h+}r((Ulinenosr)Ulanguager*XpythonU xml:spacer+Upreserver,h0]h/]h-]h.]h2]uh4K"h5hh]r-h>X?>>> from random import seed, randint >>> seed(23) >>> >>> import simpy >>> >>> class EV: ... def __init__(self, env): ... self.env = env ... self.drive_proc = env.process(self.drive(env)) ... self.bat_ctrl_proc = env.process(self.bat_ctrl(env)) ... self.bat_ctrl_reactivate = env.event() ... ... def drive(self, env): ... while True: ... # Drive for 20-40 min ... yield env.timeout(randint(20, 40)) ... ... # Park for 1–6 hours ... print('Start parking at', env.now) ... self.bat_ctrl_reactivate.succeed() # "reactivate" ... self.bat_ctrl_reactivate = env.event() ... yield env.timeout(randint(60, 360)) ... print('Stop parking at', env.now) ... ... def bat_ctrl(self, env): ... while True: ... print('Bat. ctrl. passivating at', env.now) ... yield self.bat_ctrl_reactivate # "passivate" ... print('Bat. ctrl. reactivated at', env.now) ... ... # Intelligent charging behavior here … ... yield env.timeout(randint(30, 90)) ... >>> env = simpy.Environment() >>> ev = EV(env) >>> env.run(until=150) Bat. ctrl. passivating at 0 Start parking at 29 Bat. ctrl. reactivated at 29 Bat. ctrl. passivating at 60 Stop parking at 131r.r/}r0(h"Uh#j%ubaubhB)r1}r2(h"XwSince ``bat_ctrl()`` just waits for a normal event, we no longer call this pattern *passivate / reactivate* in SimPy 3.h#hh$h'h)hFh+}r3(h-]h.]h/]h0]h2]uh4KNh5hh]r4(h>XSince r5r6}r7(h"XSince h#j1ubh)r8}r9(h"X``bat_ctrl()``h+}r:(h-]h.]h/]h0]h2]uh#j1h]r;h>X bat_ctrl()r<r=}r>(h"Uh#j8ubah)hubh>X? just waits for a normal event, we no longer call this pattern r?r@}rA(h"X? just waits for a normal event, we no longer call this pattern h#j1ubhr)rB}rC(h"X*passivate / reactivate*h+}rD(h-]h.]h/]h0]h2]uh#j1h]rEh>Xpassivate / reactivaterFrG}rH(h"Uh#jBubah)h}ubh>X in SimPy 3.rIrJ}rK(h"X in SimPy 3.h#j1ubeubh)rL}rM(h"X-.. _waiting-for-another-process-to-terminate:h#hh$h'h)hh+}rN(h0]h/]h-]h.]h2]hhuh4KRh5hh]ubeubh)rO}rP(h"Uh#h h$h'h}rQhjLsh)h*h+}rR(h-]h.]h/]h0]rS(hheh2]rT(h heuh4KUh5hh}rUhjLsh]rV(h7)rW}rX(h"X(Waiting for another process to terminaterYh#jOh$h'h)h;h+}rZ(h-]h.]h/]h0]h2]uh4KUh5hh]r[h>X(Waiting for another process to terminater\r]}r^(h"jYh#jWubaubhB)r_}r`(h"XThe example above has a problem: it may happen that the vehicles wants to park for a shorter duration than it takes to charge the battery (this is the case if both, charging and parking would take 60 to 90 minutes).rah#jOh$h'h)hFh+}rb(h-]h.]h/]h0]h2]uh4KWh5hh]rch>XThe example above has a problem: it may happen that the vehicles wants to park for a shorter duration than it takes to charge the battery (this is the case if both, charging and parking would take 60 to 90 minutes).rdre}rf(h"jah#j_ubaubhB)rg}rh(h"XTo fix this problem we have to slightly change our model. A new ``bat_ctrl()`` will be started every time the EV starts parking. The EV then waits until the parking duration is over *and* until the charging has stopped:h#jOh$h'h)hFh+}ri(h-]h.]h/]h0]h2]uh4K[h5hh]rj(h>X@To fix this problem we have to slightly change our model. A new rkrl}rm(h"X@To fix this problem we have to slightly change our model. A new h#jgubh)rn}ro(h"X``bat_ctrl()``h+}rp(h-]h.]h/]h0]h2]uh#jgh]rqh>X bat_ctrl()rrrs}rt(h"Uh#jnubah)hubh>Xh will be started every time the EV starts parking. The EV then waits until the parking duration is over rurv}rw(h"Xh will be started every time the EV starts parking. The EV then waits until the parking duration is over h#jgubhr)rx}ry(h"X*and*h+}rz(h-]h.]h/]h0]h2]uh#jgh]r{h>Xandr|r}}r~(h"Uh#jxubah)h}ubh>X until the charging has stopped:rr}r(h"X until the charging has stopped:h#jgubeubj$)r}r(h"X>>> class EV: ... def __init__(self, env): ... self.env = env ... self.drive_proc = env.process(self.drive(env)) ... ... def drive(self, env): ... while True: ... # Drive for 20-40 min ... yield env.timeout(randint(20, 40)) ... ... # Park for 1–6 hours ... print('Start parking at', env.now) ... charging = env.process(self.bat_ctrl(env)) ... parking = env.timeout(randint(60, 360)) ... yield charging & parking ... print('Stop parking at', env.now) ... ... def bat_ctrl(self, env): ... print('Bat. ctrl. started at', env.now) ... # Intelligent charging behavior here … ... yield env.timeout(randint(30, 90)) ... print('Bat. ctrl. done at', env.now) ... >>> env = simpy.Environment() >>> ev = EV(env) >>> env.run(until=310) Start parking at 29 Bat. ctrl. started at 29 Bat. ctrl. done at 83 Stop parking at 305h#jOh$h'h)j'h+}r(j)j*Xpythonj+j,h0]h/]h-]h.]h2]uh4K_h5hh]rh>X>>> class EV: ... def __init__(self, env): ... self.env = env ... self.drive_proc = env.process(self.drive(env)) ... ... def drive(self, env): ... while True: ... # Drive for 20-40 min ... yield env.timeout(randint(20, 40)) ... ... # Park for 1–6 hours ... print('Start parking at', env.now) ... charging = env.process(self.bat_ctrl(env)) ... parking = env.timeout(randint(60, 360)) ... yield charging & parking ... print('Stop parking at', env.now) ... ... def bat_ctrl(self, env): ... print('Bat. ctrl. started at', env.now) ... # Intelligent charging behavior here … ... yield env.timeout(randint(30, 90)) ... print('Bat. ctrl. done at', env.now) ... >>> env = simpy.Environment() >>> ev = EV(env) >>> env.run(until=310) Start parking at 29 Bat. ctrl. started at 29 Bat. ctrl. done at 83 Stop parking at 305rr}r(h"Uh#jubaubhB)r}r(h"X?Again, nothing new (if you've read the :doc:`events` guide) and special is happening. SimPy processes are events, too, so you can yield them and will thus wait for them to get triggered. You can also wait for two events at the same time by concatenating them with ``&`` (see :ref:`waiting_for_multiple_events_at_once`).h#jOh$h'h)hFh+}r(h-]h.]h/]h0]h2]uh4Kh5hh]r(h>X'Again, nothing new (if you've read the rr}r(h"X'Again, nothing new (if you've read the h#jubhf)r}r(h"X :doc:`events`rh#jh$h'h)hjh+}r(UreftypeXdocrhlhmXeventsU refdomainUh0]h/]U refexplicith-]h.]h2]hohpuh4Kh]rh)r}r(h"jh+}r(h-]h.]r(hwjeh/]h0]h2]uh#jh]rh>Xeventsrr}r(h"Uh#jubah)hubaubh>X guide) and special is happening. SimPy processes are events, too, so you can yield them and will thus wait for them to get triggered. You can also wait for two events at the same time by concatenating them with rr}r(h"X guide) and special is happening. SimPy processes are events, too, so you can yield them and will thus wait for them to get triggered. You can also wait for two events at the same time by concatenating them with h#jubh)r}r(h"X``&``h+}r(h-]h.]h/]h0]h2]uh#jh]rh>X&r}r(h"Uh#jubah)hubh>X (see rr}r(h"X (see h#jubhf)r}r(h"X*:ref:`waiting_for_multiple_events_at_once`rh#jh$h'h)hjh+}r(UreftypeXrefhlhmX#waiting_for_multiple_events_at_onceU refdomainXstdrh0]h/]U refexplicith-]h.]h2]hohpuh4Kh]rhr)r}r(h"jh+}r(h-]h.]r(hwjXstd-refreh/]h0]h2]uh#jh]rh>X#waiting_for_multiple_events_at_oncerr}r(h"Uh#jubah)h}ubaubh>X).rr}r(h"X).h#jubeubh)r}r(h"X!.. _interrupting-another-process:h#jOh$h'h)hh+}r(h0]h/]h-]h.]h2]hhuh4Kh5hh]ubeubh)r}r(h"Uh#h h$h'h}rh jsh)h*h+}r(h-]h.]h/]h0]r(hheh2]r(hh euh4Kh5hh}rhjsh]r(h7)r}r(h"XInterrupting another processrh#jh$h'h)h;h+}r(h-]h.]h/]h0]h2]uh4Kh5hh]rh>XInterrupting another processrr}r(h"jh#jubaubhB)r}r(h"XAs usual, we now have another problem: Imagine, a trip is very urgent, but with the current implementation, we always need to wait until the battery is fully charged. If we could somehow interrupt that ...rh#jh$h'h)hFh+}r(h-]h.]h/]h0]h2]uh4Kh5hh]rh>XAs usual, we now have another problem: Imagine, a trip is very urgent, but with the current implementation, we always need to wait until the battery is fully charged. If we could somehow interrupt that ...rr}r(h"jh#jubaubhB)r}r(h"XFortunate coincidence, there is indeed a way to do exactly this. You can call ``interrupt()`` on a :class:`~simpy.events.Process`. This will throw an :class:`~simpy.events.Interrupt` exception into that process, resuming it immediately:h#jh$h'h)hFh+}r(h-]h.]h/]h0]h2]uh4Kh5hh]r(h>XNFortunate coincidence, there is indeed a way to do exactly this. You can call rr}r(h"XNFortunate coincidence, there is indeed a way to do exactly this. You can call h#jubh)r}r(h"X``interrupt()``h+}r(h-]h.]h/]h0]h2]uh#jh]rh>X interrupt()rr}r(h"Uh#jubah)hubh>X on a rr}r(h"X on a h#jubhf)r}r(h"X:class:`~simpy.events.Process`rh#jh$h'h)hjh+}r(UreftypeXclasshlhmXsimpy.events.ProcessU refdomainXpyrh0]h/]U refexplicith-]h.]h2]hohpjNjNuh4Kh]rh)r}r(h"jh+}r(h-]h.]r(hwjXpy-classreh/]h0]h2]uh#jh]rh>XProcessrr}r(h"Uh#jubah)hubaubh>X. This will throw an rr}r(h"X. This will throw an h#jubhf)r}r(h"X :class:`~simpy.events.Interrupt`rh#jh$h'h)hjh+}r(UreftypeXclasshlhmXsimpy.events.InterruptU refdomainXpyrh0]h/]U refexplicith-]h.]h2]hohpjNjNuh4Kh]rh)r}r(h"jh+}r(h-]h.]r(hwjXpy-classreh/]h0]h2]uh#jh]rh>X Interruptrr}r(h"Uh#jubah)hubaubh>X6 exception into that process, resuming it immediately:r r }r (h"X6 exception into that process, resuming it immediately:h#jubeubj$)r }r (h"X,>>> class EV: ... def __init__(self, env): ... self.env = env ... self.drive_proc = env.process(self.drive(env)) ... ... def drive(self, env): ... while True: ... # Drive for 20-40 min ... yield env.timeout(randint(20, 40)) ... ... # Park for 1 hour ... print('Start parking at', env.now) ... charging = env.process(self.bat_ctrl(env)) ... parking = env.timeout(60) ... yield charging | parking ... if not charging.triggered: ... # Interrupt charging if not already done. ... charging.interrupt('Need to go!') ... print('Stop parking at', env.now) ... ... def bat_ctrl(self, env): ... print('Bat. ctrl. started at', env.now) ... try: ... yield env.timeout(randint(60, 90)) ... print('Bat. ctrl. done at', env.now) ... except simpy.Interrupt as i: ... # Onoes! Got interrupted before the charging was done. ... print('Bat. ctrl. interrupted at', env.now, 'msg:', ... i.cause) ... >>> env = simpy.Environment() >>> ev = EV(env) >>> env.run(until=100) Start parking at 31 Bat. ctrl. started at 31 Stop parking at 91 Bat. ctrl. interrupted at 91 msg: Need to go!h#jh$h'h)j'h+}r(j)j*Xpythonj+j,h0]h/]h-]h.]h2]uh4Kh5hh]rh>X,>>> class EV: ... def __init__(self, env): ... self.env = env ... self.drive_proc = env.process(self.drive(env)) ... ... def drive(self, env): ... while True: ... # Drive for 20-40 min ... yield env.timeout(randint(20, 40)) ... ... # Park for 1 hour ... print('Start parking at', env.now) ... charging = env.process(self.bat_ctrl(env)) ... parking = env.timeout(60) ... yield charging | parking ... if not charging.triggered: ... # Interrupt charging if not already done. ... charging.interrupt('Need to go!') ... print('Stop parking at', env.now) ... ... def bat_ctrl(self, env): ... print('Bat. ctrl. started at', env.now) ... try: ... yield env.timeout(randint(60, 90)) ... print('Bat. ctrl. done at', env.now) ... except simpy.Interrupt as i: ... # Onoes! Got interrupted before the charging was done. ... print('Bat. ctrl. interrupted at', env.now, 'msg:', ... i.cause) ... >>> env = simpy.Environment() >>> ev = EV(env) >>> env.run(until=100) Start parking at 31 Bat. ctrl. started at 31 Stop parking at 91 Bat. ctrl. interrupted at 91 msg: Need to go!rr}r(h"Uh#j ubaubhB)r}r(h"XWhat ``process.interrupt()`` actually does is scheduling an :class:`~simpy.events.Interruption` event for immediate execution. If this event is executed it will remove the victim process' ``_resume()`` method from the callbacks of the event that it is currently waiting for (see :attr:`~simpy.events.Process.target`). Following that it will throw the ``Interrupt`` exception into the process.h#jh$h'h)hFh+}r(h-]h.]h/]h0]h2]uh4Kh5hh]r(h>XWhat rr}r(h"XWhat h#jubh)r}r(h"X``process.interrupt()``h+}r(h-]h.]h/]h0]h2]uh#jh]rh>Xprocess.interrupt()rr}r (h"Uh#jubah)hubh>X actually does is scheduling an r!r"}r#(h"X actually does is scheduling an h#jubhf)r$}r%(h"X#:class:`~simpy.events.Interruption`r&h#jh$h'h)hjh+}r'(UreftypeXclasshlhmXsimpy.events.InterruptionU refdomainXpyr(h0]h/]U refexplicith-]h.]h2]hohpjNjNuh4Kh]r)h)r*}r+(h"j&h+}r,(h-]h.]r-(hwj(Xpy-classr.eh/]h0]h2]uh#j$h]r/h>X Interruptionr0r1}r2(h"Uh#j*ubah)hubaubh>X] event for immediate execution. If this event is executed it will remove the victim process' r3r4}r5(h"X] event for immediate execution. If this event is executed it will remove the victim process' h#jubh)r6}r7(h"X ``_resume()``h+}r8(h-]h.]h/]h0]h2]uh#jh]r9h>X _resume()r:r;}r<(h"Uh#j6ubah)hubh>XN method from the callbacks of the event that it is currently waiting for (see r=r>}r?(h"XN method from the callbacks of the event that it is currently waiting for (see h#jubhf)r@}rA(h"X$:attr:`~simpy.events.Process.target`rBh#jh$h'h)hjh+}rC(UreftypeXattrhlhmXsimpy.events.Process.targetU refdomainXpyrDh0]h/]U refexplicith-]h.]h2]hohpjNjNuh4Kh]rEh)rF}rG(h"jBh+}rH(h-]h.]rI(hwjDXpy-attrrJeh/]h0]h2]uh#j@h]rKh>XtargetrLrM}rN(h"Uh#jFubah)hubaubh>X$). Following that it will throw the rOrP}rQ(h"X$). Following that it will throw the h#jubh)rR}rS(h"X ``Interrupt``h+}rT(h-]h.]h/]h0]h2]uh#jh]rUh>X InterruptrVrW}rX(h"Uh#jRubah)hubh>X exception into the process.rYrZ}r[(h"X exception into the process.h#jubeubhB)r\}r](h"XvSince we don't to anything special to the original target event of the process, the interrupted process can yield the same event again after catching the ``Interrupt`` – Imagine someone waiting for a shop to open. The person may get interrupted by a phone call. After finishing the call, he or she checks if the shop already opened and either enters or continues to wait.h#jh$h'h)hFh+}r^(h-]h.]h/]h0]h2]uh4Kh5hh]r_(h>XSince we don't to anything special to the original target event of the process, the interrupted process can yield the same event again after catching the r`ra}rb(h"XSince we don't to anything special to the original target event of the process, the interrupted process can yield the same event again after catching the h#j\ubh)rc}rd(h"X ``Interrupt``h+}re(h-]h.]h/]h0]h2]uh#j\h]rfh>X Interruptrgrh}ri(h"Uh#jcubah)hubh>X – Imagine someone waiting for a shop to open. The person may get interrupted by a phone call. After finishing the call, he or she checks if the shop already opened and either enters or continues to wait.rjrk}rl(h"X – Imagine someone waiting for a shop to open. The person may get interrupted by a phone call. After finishing the call, he or she checks if the shop already opened and either enters or continues to wait.h#j\ubeubeubeubah"UU transformerrmNU footnote_refsrn}roUrefnamesrp}rqUsymbol_footnotesrr]rsUautofootnote_refsrt]ruUsymbol_footnote_refsrv]rwU citationsrx]ryh5hU current_linerzNUtransform_messagesr{]r|(cdocutils.nodes system_message r})r~}r(h"Uh+}r(h-]UlevelKh0]h/]Usourceh'h.]h2]UlineKUtypeUINFOruh]rhB)r}r(h"Uh+}r(h-]h.]h/]h0]h2]uh#j~h]rh>X:Hyperlink target "sleep-until-woken-up" is not referenced.rr}r(h"Uh#jubah)hFubah)Usystem_messagerubj})r}r(h"Uh+}r(h-]UlevelKh0]h/]Usourceh'h.]h2]UlineKRUtypejuh]rhB)r}r(h"Uh+}r(h-]h.]h/]h0]h2]uh#jh]rh>XNHyperlink target "waiting-for-another-process-to-terminate" is not referenced.rr}r(h"Uh#jubah)hFubah)jubj})r}r(h"Uh+}r(h-]UlevelKh0]h/]Usourceh'h.]h2]UlineKUtypejuh]rhB)r}r(h"Uh+}r(h-]h.]h/]h0]h2]uh#jh]rh>XBHyperlink target "interrupting-another-process" is not referenced.rr}r(h"Uh#jubah)hFubah)jubeUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh;NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerUX/var/build/user_builds/simpy/checkouts/3.0.5/docs/topical_guides/process_interaction.rstrUgettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hjOhjhjOhjhhhhhh uUsubstitution_namesr}rh)h5h+}r(h-]h0]h/]Usourceh'h.]h2]uU footnotesr]rUrefidsr}r(h]rhah]rjah]rjLauub.PK.D2]6\3simpy-3.0.5/.doctrees/topical_guides/events.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X#waiting for multiple events at onceqNXprocesses are events, tooqNXadding callbacks to an eventqNXtriggering eventsq NXlet time pass by: the timeoutq NX event basicsq NXexample usages for eventq NXeventsq NX#waiting_for_multiple_events_at_oncequUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hUid1qhUprocesses-are-events-tooqhUadding-callbacks-to-an-eventqh Utriggering-eventsqh Ulet-time-pass-by-the-timeoutqh U event-basicsqh Uexample-usages-for-eventqh UeventsqhU#waiting-for-multiple-events-at-onceq uUchildrenq!]q"cdocutils.nodes section q#)q$}q%(U rawsourceq&UUparentq'hUsourceq(cdocutils.nodes reprunicode q)XK/var/build/user_builds/simpy/checkouts/3.0.5/docs/topical_guides/events.rstq*q+}q,bUtagnameq-Usectionq.U attributesq/}q0(Udupnamesq1]Uclassesq2]Ubackrefsq3]Uidsq4]q5haUnamesq6]q7h auUlineq8KUdocumentq9hh!]q:(cdocutils.nodes title q;)q<}q=(h&XEventsq>h'h$h(h+h-Utitleq?h/}q@(h1]h2]h3]h4]h6]uh8Kh9hh!]qAcdocutils.nodes Text qBXEventsqCqD}qE(h&h>h'h` describes the various resource events.h'h$h(h+h-hIh/}qz(h1]h2]h3]h4]h6]uh8Kh9hh!]q{(hBXThis is the set of basic events. Events are extensible and resources, for example, define additional events. In this guide, we'll focus on the events in the q|q}}q~(h&XThis is the set of basic events. Events are extensible and resources, for example, define additional events. In this guide, we'll focus on the events in the h'hxubhO)q}q(h&X:mod:`simpy.events`qh'hxh(h+h-hSh/}q(UreftypeXmodhUhVX simpy.eventsU refdomainXpyqh4]h3]U refexplicith1]h2]h6]hXhYhZNh[h\uh8Kh!]qh^)q}q(h&hh/}q(h1]h2]q(hchXpy-modqeh3]h4]h6]uh'hh!]qhBX simpy.eventsqq}q(h&Uh'hubah-hiubaubhBX module. The qq}q(h&X module. The h'hxubhO)q}q(h&X%:ref:`guide to resources `qh'hxh(h+h-hSh/}q(UreftypeXrefhUhVX resourcesU refdomainXstdqh4]h3]U refexplicith1]h2]h6]hXhYuh8Kh!]qcdocutils.nodes emphasis q)q}q(h&hh/}q(h1]h2]q(hchXstd-refqeh3]h4]h6]uh'hh!]qhBXguide to resourcesqq}q(h&Uh'hubah-UemphasisqubaubhBX' describes the various resource events.qq}q(h&X' describes the various resource events.h'hxubeubh#)q}q(h&Uh'h$h(h+h-h.h/}q(h1]h2]h3]h4]qhah6]qh auh8K"h9hh!]q(h;)q}q(h&X Event basicsqh'hh(h+h-h?h/}q(h1]h2]h3]h4]h6]uh8K"h9hh!]qhBX Event basicsqq}q(h&hh'hubaubhF)q}q(h&XSimPy events are very similar – if not identical — to deferreds, futures or promises. Instances of the class :class:`Event` are used to describe any kind of events. Events can be in one of the following states. An eventh'hh(h+h-hIh/}q(h1]h2]h3]h4]h6]uh8K$h9hh!]q(hBXqSimPy events are very similar – if not identical — to deferreds, futures or promises. Instances of the class qq}q(h&XqSimPy events are very similar – if not identical — to deferreds, futures or promises. Instances of the class h'hubhO)q}q(h&X:class:`Event`qh'hh(h+h-hSh/}q(UreftypeXclasshUhVXEventU refdomainXpyqh4]h3]U refexplicith1]h2]h6]hXhYhZNh[h\uh8K$h!]qh^)q}q(h&hh/}q(h1]h2]q(hchXpy-classqeh3]h4]h6]uh'hh!]qhBXEventqƅq}q(h&Uh'hubah-hiubaubhBX` are used to describe any kind of events. Events can be in one of the following states. An eventqɅq}q(h&X` are used to describe any kind of events. Events can be in one of the following states. An eventh'hubeubcdocutils.nodes bullet_list q)q}q(h&Uh'hh(h+h-U bullet_listqh/}q(UbulletqX-h4]h3]h1]h2]h6]uh8K(h9hh!]q(cdocutils.nodes list_item q)q}q(h&Xmight happen (not triggered),qh'hh(h+h-U list_itemqh/}q(h1]h2]h3]h4]h6]uh8Nh9hh!]qhF)q}q(h&hh'hh(h+h-hIh/}q(h1]h2]h3]h4]h6]uh8K(h!]qhBXmight happen (not triggered),qޅq}q(h&hh'hubaubaubh)q}q(h&X!is going to happen (triggered) orqh'hh(h+h-hh/}q(h1]h2]h3]h4]h6]uh8Nh9hh!]qhF)q}q(h&hh'hh(h+h-hIh/}q(h1]h2]h3]h4]h6]uh8K)h!]qhBX!is going to happen (triggered) orqꅁq}q(h&hh'hubaubaubh)q}q(h&Xhas happened (processed). h'hh(h+h-hh/}q(h1]h2]h3]h4]h6]uh8Nh9hh!]qhF)q}q(h&Xhas happened (processed).qh'hh(h+h-hIh/}q(h1]h2]h3]h4]h6]uh8K*h!]qhBXhas happened (processed).qq}q(h&hh'hubaubaubeubhF)q}q(h&XThey traverse these states exactly once in that order. Events are also tightly bound to time and time causes events to advance their state.qh'hh(h+h-hIh/}q(h1]h2]h3]h4]h6]uh8K,h9hh!]qhBXThey traverse these states exactly once in that order. Events are also tightly bound to time and time causes events to advance their state.qq}r(h&hh'hubaubhF)r}r(h&X?Initially, events are not triggered and just objects in memory.rh'hh(h+h-hIh/}r(h1]h2]h3]h4]h6]uh8K/h9hh!]rhBX?Initially, events are not triggered and just objects in memory.rr}r(h&jh'jubaubhF)r }r (h&XIf an event gets triggered, it is scheduled at a given time and inserted into SimPy's event queue. The property :attr:`Event.triggered` becomes ``True``.h'hh(h+h-hIh/}r (h1]h2]h3]h4]h6]uh8K1h9hh!]r (hBXpIf an event gets triggered, it is scheduled at a given time and inserted into SimPy's event queue. The property r r}r(h&XpIf an event gets triggered, it is scheduled at a given time and inserted into SimPy's event queue. The property h'j ubhO)r}r(h&X:attr:`Event.triggered`rh'j h(h+h-hSh/}r(UreftypeXattrhUhVXEvent.triggeredU refdomainXpyrh4]h3]U refexplicith1]h2]h6]hXhYhZNh[h\uh8K1h!]rh^)r}r(h&jh/}r(h1]h2]r(hcjXpy-attrreh3]h4]h6]uh'jh!]rhBXEvent.triggeredrr}r(h&Uh'jubah-hiubaubhBX becomes rr }r!(h&X becomes h'j ubh^)r"}r#(h&X``True``h/}r$(h1]h2]h3]h4]h6]uh'j h!]r%hBXTruer&r'}r((h&Uh'j"ubah-hiubhBX.r)}r*(h&X.h'j ubeubhF)r+}r,(h&XAs long as the event is not *processed*, you can add *callbacks* to an event. Callbacks are callables that accept an event as parameter and are stored in the :attr:`Event.callbacks` list.h'hh(h+h-hIh/}r-(h1]h2]h3]h4]h6]uh8K4h9hh!]r.(hBXAs long as the event is not r/r0}r1(h&XAs long as the event is not h'j+ubh)r2}r3(h&X *processed*h/}r4(h1]h2]h3]h4]h6]uh'j+h!]r5hBX processedr6r7}r8(h&Uh'j2ubah-hubhBX, you can add r9r:}r;(h&X, you can add h'j+ubh)r<}r=(h&X *callbacks*h/}r>(h1]h2]h3]h4]h6]uh'j+h!]r?hBX callbacksr@rA}rB(h&Uh'j<ubah-hubhBX^ to an event. Callbacks are callables that accept an event as parameter and are stored in the rCrD}rE(h&X^ to an event. Callbacks are callables that accept an event as parameter and are stored in the h'j+ubhO)rF}rG(h&X:attr:`Event.callbacks`rHh'j+h(h+h-hSh/}rI(UreftypeXattrhUhVXEvent.callbacksU refdomainXpyrJh4]h3]U refexplicith1]h2]h6]hXhYhZNh[h\uh8K4h!]rKh^)rL}rM(h&jHh/}rN(h1]h2]rO(hcjJXpy-attrrPeh3]h4]h6]uh'jFh!]rQhBXEvent.callbacksrRrS}rT(h&Uh'jLubah-hiubaubhBX list.rUrV}rW(h&X list.h'j+ubeubhF)rX}rY(h&XAn event becomes *processed* when SimPy pops it from the event queue and calls all of its callbacks. It is now no longer possible to add callbacks. The property :attr:`Event.processed` becomes ``True``.h'hh(h+h-hIh/}rZ(h1]h2]h3]h4]h6]uh8K8h9hh!]r[(hBXAn event becomes r\r]}r^(h&XAn event becomes h'jXubh)r_}r`(h&X *processed*h/}ra(h1]h2]h3]h4]h6]uh'jXh!]rbhBX processedrcrd}re(h&Uh'j_ubah-hubhBX when SimPy pops it from the event queue and calls all of its callbacks. It is now no longer possible to add callbacks. The property rfrg}rh(h&X when SimPy pops it from the event queue and calls all of its callbacks. It is now no longer possible to add callbacks. The property h'jXubhO)ri}rj(h&X:attr:`Event.processed`rkh'jXh(h+h-hSh/}rl(UreftypeXattrhUhVXEvent.processedU refdomainXpyrmh4]h3]U refexplicith1]h2]h6]hXhYhZNh[h\uh8K8h!]rnh^)ro}rp(h&jkh/}rq(h1]h2]rr(hcjmXpy-attrrseh3]h4]h6]uh'jih!]rthBXEvent.processedrurv}rw(h&Uh'joubah-hiubaubhBX becomes rxry}rz(h&X becomes h'jXubh^)r{}r|(h&X``True``h/}r}(h1]h2]h3]h4]h6]uh'jXh!]r~hBXTruerr}r(h&Uh'j{ubah-hiubhBX.r}r(h&X.h'jXubeubhF)r}r(h&XEvents also have a *value*. The value can be set before or when the event is triggered and can be retrieved via :attr:`Event.value` or, within a process, by yielding the event (``value = yield event``).h'hh(h+h-hIh/}r(h1]h2]h3]h4]h6]uh8K`.h'jh(h+h-hIh/}r(h1]h2]h3]h4]h6]uh8KDh9hh!]r(hBXj"What? Callbacks? I've never seen no callbacks!", you might think if you have worked your way through the rr}r(h&Xj"What? Callbacks? I've never seen no callbacks!", you might think if you have worked your way through the h'jubhO)r}r(h&X&:doc:`tutorial <../simpy_intro/index>`rh'jh(h+h-hSh/}r(UreftypeXdocrhUhVX../simpy_intro/indexU refdomainUh4]h3]U refexplicith1]h2]h6]hXhYuh8KDh!]rh^)r}r(h&jh/}r(h1]h2]r(hcjeh3]h4]h6]uh'jh!]rhBXtutorialrr}r(h&Uh'jubah-hiubaubhBX.r}r(h&X.h'jubeubhF)r}r(h&XThat's on purpose. The most common way to add a callback to an event is yielding it from your process function (``yield event``). This will add the process' *_resume()* method as a callback. That's how your process gets resumed when it yielded an event.h'jh(h+h-hIh/}r(h1]h2]h3]h4]h6]uh8KGh9hh!]r(hBXpThat's on purpose. The most common way to add a callback to an event is yielding it from your process function (rr}r(h&XpThat's on purpose. The most common way to add a callback to an event is yielding it from your process function (h'jubh^)r}r(h&X``yield event``h/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX yield eventrr}r(h&Uh'jubah-hiubhBX). This will add the process' rr}r(h&X). This will add the process' h'jubh)r}r(h&X *_resume()*h/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX _resume()rr}r(h&Uh'jubah-hubhBXU method as a callback. That's how your process gets resumed when it yielded an event.rr}r(h&XU method as a callback. That's how your process gets resumed when it yielded an event.h'jubeubhF)r}r(h&XHowever, you can add any callable object (function) to the list of callbacks as long as it accepts an event instance as its single parameter:rh'jh(h+h-hIh/}r(h1]h2]h3]h4]h6]uh8KLh9hh!]rhBXHowever, you can add any callable object (function) to the list of callbacks as long as it accepts an event instance as its single parameter:rr}r(h&jh'jubaubhm)r}r(h&X>>> import simpy >>> >>> def my_callback(event): ... print('Called back from', event) ... >>> env = simpy.Environment() >>> event = env.event() >>> event.callbacks.append(my_callback) >>> event.callbacks []h'jh(h+h-hph/}r(UlinenosrUlanguagerXpythonhrhsh4]h3]h1]h2]h6]uh8KOh9hh!]rhBX>>> import simpy >>> >>> def my_callback(event): ... print('Called back from', event) ... >>> env = simpy.Environment() >>> event = env.event() >>> event.callbacks.append(my_callback) >>> event.callbacks []rr}r(h&Uh'jubaubhF)r}r(h&XIf an event has been *processed*, all of its :attr:`Event.callbacks` have been executed and the attribute is set to ``None``. This is to prevent you from adding more callbacks – these would of course never get called because the event has already happened.h'jh(h+h-hIh/}r(h1]h2]h3]h4]h6]uh8K\h9hh!]r(hBXIf an event has been rr}r(h&XIf an event has been h'jubh)r }r (h&X *processed*h/}r (h1]h2]h3]h4]h6]uh'jh!]r hBX processedr r}r(h&Uh'j ubah-hubhBX , all of its rr}r(h&X , all of its h'jubhO)r}r(h&X:attr:`Event.callbacks`rh'jh(h+h-hSh/}r(UreftypeXattrhUhVXEvent.callbacksU refdomainXpyrh4]h3]U refexplicith1]h2]h6]hXhYhZNh[h\uh8K\h!]rh^)r}r(h&jh/}r(h1]h2]r(hcjXpy-attrreh3]h4]h6]uh'jh!]rhBXEvent.callbacksrr }r!(h&Uh'jubah-hiubaubhBX0 have been executed and the attribute is set to r"r#}r$(h&X0 have been executed and the attribute is set to h'jubh^)r%}r&(h&X``None``h/}r'(h1]h2]h3]h4]h6]uh'jh!]r(hBXNoner)r*}r+(h&Uh'j%ubah-hiubhBX. This is to prevent you from adding more callbacks – these would of course never get called because the event has already happened.r,r-}r.(h&X. This is to prevent you from adding more callbacks – these would of course never get called because the event has already happened.h'jubeubhF)r/}r0(h&XProcesses are smart about this, though. If you yield a processed event, *_resume()* will immediately resume your process with the value of the event (because there is nothing to wait for).h'jh(h+h-hIh/}r1(h1]h2]h3]h4]h6]uh8Kah9hh!]r2(hBXHProcesses are smart about this, though. If you yield a processed event, r3r4}r5(h&XHProcesses are smart about this, though. If you yield a processed event, h'j/ubh)r6}r7(h&X *_resume()*h/}r8(h1]h2]h3]h4]h6]uh'j/h!]r9hBX _resume()r:r;}r<(h&Uh'j6ubah-hubhBXi will immediately resume your process with the value of the event (because there is nothing to wait for).r=r>}r?(h&Xi will immediately resume your process with the value of the event (because there is nothing to wait for).h'j/ubeubeubh#)r@}rA(h&Uh'hh(h+h-h.h/}rB(h1]h2]h3]h4]rChah6]rDh auh8Kgh9hh!]rE(h;)rF}rG(h&XTriggering eventsrHh'j@h(h+h-h?h/}rI(h1]h2]h3]h4]h6]uh8Kgh9hh!]rJhBXTriggering eventsrKrL}rM(h&jHh'jFubaubhF)rN}rO(h&XWhen events are triggered, they can either *succeed* or *fail*. For example, if an event is to be triggered at the end of a computation and everything works out fine, the event will *succeed*. If an exceptions occurs during that computation, the event will *fail*.h'j@h(h+h-hIh/}rP(h1]h2]h3]h4]h6]uh8Kih9hh!]rQ(hBX+When events are triggered, they can either rRrS}rT(h&X+When events are triggered, they can either h'jNubh)rU}rV(h&X *succeed*h/}rW(h1]h2]h3]h4]h6]uh'jNh!]rXhBXsucceedrYrZ}r[(h&Uh'jUubah-hubhBX or r\r]}r^(h&X or h'jNubh)r_}r`(h&X*fail*h/}ra(h1]h2]h3]h4]h6]uh'jNh!]rbhBXfailrcrd}re(h&Uh'j_ubah-hubhBXx. For example, if an event is to be triggered at the end of a computation and everything works out fine, the event will rfrg}rh(h&Xx. For example, if an event is to be triggered at the end of a computation and everything works out fine, the event will h'jNubh)ri}rj(h&X *succeed*h/}rk(h1]h2]h3]h4]h6]uh'jNh!]rlhBXsucceedrmrn}ro(h&Uh'jiubah-hubhBXB. If an exceptions occurs during that computation, the event will rprq}rr(h&XB. If an exceptions occurs during that computation, the event will h'jNubh)rs}rt(h&X*fail*h/}ru(h1]h2]h3]h4]h6]uh'jNh!]rvhBXfailrwrx}ry(h&Uh'jsubah-hubhBX.rz}r{(h&X.h'jNubeubhF)r|}r}(h&XTo trigger an event and mark it as successful, you can use ``Event.succeed(value=None)``. You can optionally pass a *value* to it (e.g., the results of a computation).h'j@h(h+h-hIh/}r~(h1]h2]h3]h4]h6]uh8Knh9hh!]r(hBX;To trigger an event and mark it as successful, you can use rr}r(h&X;To trigger an event and mark it as successful, you can use h'j|ubh^)r}r(h&X``Event.succeed(value=None)``h/}r(h1]h2]h3]h4]h6]uh'j|h!]rhBXEvent.succeed(value=None)rr}r(h&Uh'jubah-hiubhBX. You can optionally pass a rr}r(h&X. You can optionally pass a h'j|ubh)r}r(h&X*value*h/}r(h1]h2]h3]h4]h6]uh'j|h!]rhBXvaluerr}r(h&Uh'jubah-hubhBX, to it (e.g., the results of a computation).rr}r(h&X, to it (e.g., the results of a computation).h'j|ubeubhF)r}r(h&XTo trigger an event and mark it as failed, call ``Event.fail(exception)`` and pass an :class:`Exception` instance to it (e.g., the exception you caught during your failed computation).h'j@h(h+h-hIh/}r(h1]h2]h3]h4]h6]uh8Krh9hh!]r(hBX0To trigger an event and mark it as failed, call rr}r(h&X0To trigger an event and mark it as failed, call h'jubh^)r}r(h&X``Event.fail(exception)``h/}r(h1]h2]h3]h4]h6]uh'jh!]rhBXEvent.fail(exception)rr}r(h&Uh'jubah-hiubhBX and pass an rr}r(h&X and pass an h'jubhO)r}r(h&X:class:`Exception`rh'jh(h+h-hSh/}r(UreftypeXclasshUhVX ExceptionU refdomainXpyrh4]h3]U refexplicith1]h2]h6]hXhYhZNh[h\uh8Krh!]rh^)r}r(h&jh/}r(h1]h2]r(hcjXpy-classreh3]h4]h6]uh'jh!]rhBX Exceptionrr}r(h&Uh'jubah-hiubaubhBXP instance to it (e.g., the exception you caught during your failed computation).rr}r(h&XP instance to it (e.g., the exception you caught during your failed computation).h'jubeubhF)r}r(h&XThere is also a generic way to trigger an event: ``Event.trigger(event)``. This will take the value and outcome (success or failure) of the event passed to it.h'j@h(h+h-hIh/}r(h1]h2]h3]h4]h6]uh8Kvh9hh!]r(hBX1There is also a generic way to trigger an event: rr}r(h&X1There is also a generic way to trigger an event: h'jubh^)r}r(h&X``Event.trigger(event)``h/}r(h1]h2]h3]h4]h6]uh'jh!]rhBXEvent.trigger(event)rr}r(h&Uh'jubah-hiubhBXV. This will take the value and outcome (success or failure) of the event passed to it.rr}r(h&XV. This will take the value and outcome (success or failure) of the event passed to it.h'jubeubhF)r}r(h&XAll three methods return the event instance they are bound to. This allows you to do things like ``yield Event(env).succeed()``.h'j@h(h+h-hIh/}r(h1]h2]h3]h4]h6]uh8Kzh9hh!]r(hBXaAll three methods return the event instance they are bound to. This allows you to do things like rr}r(h&XaAll three methods return the event instance they are bound to. This allows you to do things like h'jubh^)r}r(h&X``yield Event(env).succeed()``h/}r(h1]h2]h3]h4]h6]uh'jh!]rhBXyield Event(env).succeed()rr}r(h&Uh'jubah-hiubhBX.r}r(h&X.h'jubeubeubeubh#)r}r(h&Uh'h$h(h+h-h.h/}r(h1]h2]h3]h4]rhah6]rh auh8Kh9hh!]r(h;)r}r(h&XExample usages for ``Event``rh'jh(h+h-h?h/}r(h1]h2]h3]h4]h6]uh8Kh9hh!]r(hBXExample usages for rr}r(h&XExample usages for rh'jubh^)r}r(h&X ``Event``rh/}r(h1]h2]h3]h4]h6]uh'jh!]rhBXEventrr}r(h&Uh'jubah-hiubeubhF)r}r(h&X~The simple mechanics outlined above provide a great flexibility in the way events (even the basic :class:`Event`) can be used.h'jh(h+h-hIh/}r(h1]h2]h3]h4]h6]uh8Kh9hh!]r(hBXbThe simple mechanics outlined above provide a great flexibility in the way events (even the basic rr}r(h&XbThe simple mechanics outlined above provide a great flexibility in the way events (even the basic h'jubhO)r}r(h&X:class:`Event`rh'jh(h+h-hSh/}r(UreftypeXclasshUhVXEventU refdomainXpyrh4]h3]U refexplicith1]h2]h6]hXhYhZNh[h\uh8Kh!]rh^)r}r(h&jh/}r(h1]h2]r(hcjXpy-classreh3]h4]h6]uh'jh!]rhBXEventrr}r(h&Uh'jubah-hiubaubhBX) can be used.rr }r (h&X) can be used.h'jubeubhF)r }r (h&XOne example for this is that events can be shared. They can be created by a process or outside of the context of a process. They can be passed to other processes and chained:r h'jh(h+h-hIh/}r(h1]h2]h3]h4]h6]uh8Kh9hh!]rhBXOne example for this is that events can be shared. They can be created by a process or outside of the context of a process. They can be passed to other processes and chained:rr}r(h&j h'j ubaubhm)r}r(h&X>>> class School: ... def __init__(self, env): ... self.env = env ... self.class_ends = env.event() ... self.pupil_procs = [env.process(self.pupil()) for i in range(3)] ... self.bell_proc = env.process(self.bell()) ... ... def bell(self): ... for i in range(2): ... yield self.env.timeout(45) ... self.class_ends.succeed() ... self.class_ends = self.env.event() ... print() ... ... def pupil(self): ... for i in range(2): ... print(' \o/', end='') ... yield self.class_ends ... >>> school = School(env) >>> env.run() \o/ \o/ \o/ \o/ \o/ \o/h'jh(h+h-hph/}r(jjXpythonhrhsh4]h3]h1]h2]h6]uh8Kh9hh!]rhBX>>> class School: ... def __init__(self, env): ... self.env = env ... self.class_ends = env.event() ... self.pupil_procs = [env.process(self.pupil()) for i in range(3)] ... self.bell_proc = env.process(self.bell()) ... ... def bell(self): ... for i in range(2): ... yield self.env.timeout(45) ... self.class_ends.succeed() ... self.class_ends = self.env.event() ... print() ... ... def pupil(self): ... for i in range(2): ... print(' \o/', end='') ... yield self.class_ends ... >>> school = School(env) >>> env.run() \o/ \o/ \o/ \o/ \o/ \o/rr}r(h&Uh'jubaubhF)r}r(h&XThis can also be used like the *passivate / reactivate* known from SimPy 2. The pupils *passivate* when class begins and are *reactivated* when the bell rings.h'jh(h+h-hIh/}r(h1]h2]h3]h4]h6]uh8Kh9hh!]r(hBXThis can also be used like the rr}r (h&XThis can also be used like the h'jubh)r!}r"(h&X*passivate / reactivate*h/}r#(h1]h2]h3]h4]h6]uh'jh!]r$hBXpassivate / reactivater%r&}r'(h&Uh'j!ubah-hubhBX known from SimPy 2. The pupils r(r)}r*(h&X known from SimPy 2. The pupils h'jubh)r+}r,(h&X *passivate*h/}r-(h1]h2]h3]h4]h6]uh'jh!]r.hBX passivater/r0}r1(h&Uh'j+ubah-hubhBX when class begins and are r2r3}r4(h&X when class begins and are h'jubh)r5}r6(h&X *reactivated*h/}r7(h1]h2]h3]h4]h6]uh'jh!]r8hBX reactivatedr9r:}r;(h&Uh'j5ubah-hubhBX when the bell rings.r<r=}r>(h&X when the bell rings.h'jubeubeubh#)r?}r@(h&Uh'h$h(h+h-h.h/}rA(h1]h2]h3]h4]rBhah6]rCh auh8Kh9hh!]rD(h;)rE}rF(h&X!Let time pass by: the ``Timeout``rGh'j?h(h+h-h?h/}rH(h1]h2]h3]h4]h6]uh8Kh9hh!]rI(hBXLet time pass by: the rJrK}rL(h&XLet time pass by: the rMh'jEubh^)rN}rO(h&X ``Timeout``rPh/}rQ(h1]h2]h3]h4]h6]uh'jEh!]rRhBXTimeoutrSrT}rU(h&Uh'jNubah-hiubeubhF)rV}rW(h&XTo actually let time pass in a simulation, there is the *timeout* event. A timeout has two parameters: a *delay* and an optional *value*: ``Timeout(delay, value=None)``. It triggers itself during its creation and schedules itself at ``now + delay``. Thus, the ``succeed()`` and ``fail()`` methods cannot be called again and you have to pass the event value to it when you create the timeout.h'j?h(h+h-hIh/}rX(h1]h2]h3]h4]h6]uh8Kh9hh!]rY(hBX8To actually let time pass in a simulation, there is the rZr[}r\(h&X8To actually let time pass in a simulation, there is the h'jVubh)r]}r^(h&X *timeout*h/}r_(h1]h2]h3]h4]h6]uh'jVh!]r`hBXtimeoutrarb}rc(h&Uh'j]ubah-hubhBX( event. A timeout has two parameters: a rdre}rf(h&X( event. A timeout has two parameters: a h'jVubh)rg}rh(h&X*delay*h/}ri(h1]h2]h3]h4]h6]uh'jVh!]rjhBXdelayrkrl}rm(h&Uh'jgubah-hubhBX and an optional rnro}rp(h&X and an optional h'jVubh)rq}rr(h&X*value*h/}rs(h1]h2]h3]h4]h6]uh'jVh!]rthBXvaluerurv}rw(h&Uh'jqubah-hubhBX: rxry}rz(h&X: h'jVubh^)r{}r|(h&X``Timeout(delay, value=None)``h/}r}(h1]h2]h3]h4]h6]uh'jVh!]r~hBXTimeout(delay, value=None)rr}r(h&Uh'j{ubah-hiubhBXA. It triggers itself during its creation and schedules itself at rr}r(h&XA. It triggers itself during its creation and schedules itself at h'jVubh^)r}r(h&X``now + delay``h/}r(h1]h2]h3]h4]h6]uh'jVh!]rhBX now + delayrr}r(h&Uh'jubah-hiubhBX . Thus, the rr}r(h&X . Thus, the h'jVubh^)r}r(h&X ``succeed()``h/}r(h1]h2]h3]h4]h6]uh'jVh!]rhBX succeed()rr}r(h&Uh'jubah-hiubhBX and rr}r(h&X and h'jVubh^)r}r(h&X ``fail()``h/}r(h1]h2]h3]h4]h6]uh'jVh!]rhBXfail()rr}r(h&Uh'jubah-hiubhBXg methods cannot be called again and you have to pass the event value to it when you create the timeout.rr}r(h&Xg methods cannot be called again and you have to pass the event value to it when you create the timeout.h'jVubeubhF)r}r(h&XpThe delay can be any kind of number, usually an *int* or *float* as long as it supports comparison and addition.h'j?h(h+h-hIh/}r(h1]h2]h3]h4]h6]uh8Kh9hh!]r(hBX0The delay can be any kind of number, usually an rr}r(h&X0The delay can be any kind of number, usually an h'jubh)r}r(h&X*int*h/}r(h1]h2]h3]h4]h6]uh'jh!]rhBXintrr}r(h&Uh'jubah-hubhBX or rr}r(h&X or h'jubh)r}r(h&X*float*h/}r(h1]h2]h3]h4]h6]uh'jh!]rhBXfloatrr}r(h&Uh'jubah-hubhBX0 as long as it supports comparison and addition.rr}r(h&X0 as long as it supports comparison and addition.h'jubeubeubh#)r}r(h&Uh'h$h(h+h-h.h/}r(h1]h2]h3]h4]rhah6]rhauh8Kh9hh!]r(h;)r}r(h&XProcesses are events, toorh'jh(h+h-h?h/}r(h1]h2]h3]h4]h6]uh8Kh9hh!]rhBXProcesses are events, toorr}r(h&jh'jubaubhF)r}r(h&XrSimPy processes (as created by :class:`Process` or ``env.process()``) have the nice property of being events, too.h'jh(h+h-hIh/}r(h1]h2]h3]h4]h6]uh8Kh9hh!]r(hBXSimPy processes (as created by rr}r(h&XSimPy processes (as created by h'jubhO)r}r(h&X:class:`Process`rh'jh(h+h-hSh/}r(UreftypeXclasshUhVXProcessU refdomainXpyrh4]h3]U refexplicith1]h2]h6]hXhYhZNh[h\uh8Kh!]rh^)r}r(h&jh/}r(h1]h2]r(hcjXpy-classreh3]h4]h6]uh'jh!]rhBXProcessrr}r(h&Uh'jubah-hiubaubhBX or rr}r(h&X or h'jubh^)r}r(h&X``env.process()``h/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX env.process()rr}r(h&Uh'jubah-hiubhBX.) have the nice property of being events, too.rr}r(h&X.) have the nice property of being events, too.h'jubeubhF)r}r(h&XThat means, that a process can yield another process. It will then be resumed when the other process ends. The event's value will be the return value of that process:rh'jh(h+h-hIh/}r(h1]h2]h3]h4]h6]uh8Kh9hh!]rhBXThat means, that a process can yield another process. It will then be resumed when the other process ends. The event's value will be the return value of that process:rr}r(h&jh'jubaubhm)r}r(h&X>>> def sub(env): ... yield env.timeout(1) ... return 23 ... >>> def parent(env): ... ret = yield env.process(sub(env)) ... return ret ... >>> env.run(env.process(parent(env))) 23h'jh(h+h-hph/}r(jjXpythonhrhsh4]h3]h1]h2]h6]uh8Kh9hh!]rhBX>>> def sub(env): ... yield env.timeout(1) ... return 23 ... >>> def parent(env): ... ret = yield env.process(sub(env)) ... return ret ... >>> env.run(env.process(parent(env))) 23rr}r(h&Uh'jubaubhF)r}r(h&XThe example above will only work in Python >= 3.3. As a workaround for older Python versions, you can use ``env.exit(23)`` with the same effect.h'jh(h+h-hIh/}r(h1]h2]h3]h4]h6]uh8Kh9hh!]r(hBXjThe example above will only work in Python >= 3.3. As a workaround for older Python versions, you can use rr}r(h&XjThe example above will only work in Python >= 3.3. As a workaround for older Python versions, you can use h'jubh^)r}r(h&X``env.exit(23)``h/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX env.exit(23)r r }r (h&Uh'jubah-hiubhBX with the same effect.r r }r(h&X with the same effect.h'jubeubhF)r}r(h&XWhen a process is created, it schedules an :class:`Initialize` event which will start the execution of the process when triggered. You usually won't have to deal with this type of event.h'jh(h+h-hIh/}r(h1]h2]h3]h4]h6]uh8Kh9hh!]r(hBX+When a process is created, it schedules an rr}r(h&X+When a process is created, it schedules an h'jubhO)r}r(h&X:class:`Initialize`rh'jh(h+h-hSh/}r(UreftypeXclasshUhVX InitializeU refdomainXpyrh4]h3]U refexplicith1]h2]h6]hXhYhZNh[h\uh8Kh!]rh^)r}r(h&jh/}r(h1]h2]r(hcjXpy-classr eh3]h4]h6]uh'jh!]r!hBX Initializer"r#}r$(h&Uh'jubah-hiubaubhBX| event which will start the execution of the process when triggered. You usually won't have to deal with this type of event.r%r&}r'(h&X| event which will start the execution of the process when triggered. You usually won't have to deal with this type of event.h'jubeubhF)r(}r)(h&XIf you don't want a process to start immediately but after a certain delay, you can use :func:`simpy.util.start_delayed()`. This method returns a helper process that uses a *timeout* before actually starting a process.h'jh(h+h-hIh/}r*(h1]h2]h3]h4]h6]uh8Kh9hh!]r+(hBXXIf you don't want a process to start immediately but after a certain delay, you can use r,r-}r.(h&XXIf you don't want a process to start immediately but after a certain delay, you can use h'j(ubhO)r/}r0(h&X":func:`simpy.util.start_delayed()`r1h'j(h(h+h-hSh/}r2(UreftypeXfunchUhVXsimpy.util.start_delayedU refdomainXpyr3h4]h3]U refexplicith1]h2]h6]hXhYhZNh[h\uh8Kh!]r4h^)r5}r6(h&j1h/}r7(h1]h2]r8(hcj3Xpy-funcr9eh3]h4]h6]uh'j/h!]r:hBXsimpy.util.start_delayed()r;r<}r=(h&Uh'j5ubah-hiubaubhBX3. This method returns a helper process that uses a r>r?}r@(h&X3. This method returns a helper process that uses a h'j(ubh)rA}rB(h&X *timeout*h/}rC(h1]h2]h3]h4]h6]uh'j(h!]rDhBXtimeoutrErF}rG(h&Uh'jAubah-hubhBX$ before actually starting a process.rHrI}rJ(h&X$ before actually starting a process.h'j(ubeubhF)rK}rL(h&X>The example from above, but with a delayed start of ``sub()``:rMh'jh(h+h-hIh/}rN(h1]h2]h3]h4]h6]uh8Kh9hh!]rO(hBX4The example from above, but with a delayed start of rPrQ}rR(h&X4The example from above, but with a delayed start of h'jKubh^)rS}rT(h&X ``sub()``h/}rU(h1]h2]h3]h4]h6]uh'jKh!]rVhBXsub()rWrX}rY(h&Uh'jSubah-hiubhBX:rZ}r[(h&X:h'jKubeubhm)r\}r](h&Xb>>> from simpy.util import start_delayed >>> >>> def sub(env): ... yield env.timeout(1) ... return 23 ... >>> def parent(env): ... start = env.now ... sub_proc = yield start_delayed(env, sub(env), delay=3) ... assert env.now - start == 3 ... ... ret = yield sub_proc ... return ret ... >>> env.run(env.process(parent(env))) 23h'jh(h+h-hph/}r^(jjXpythonhrhsh4]h3]h1]h2]h6]uh8Kh9hh!]r_hBXb>>> from simpy.util import start_delayed >>> >>> def sub(env): ... yield env.timeout(1) ... return 23 ... >>> def parent(env): ... start = env.now ... sub_proc = yield start_delayed(env, sub(env), delay=3) ... assert env.now - start == 3 ... ... ret = yield sub_proc ... return ret ... >>> env.run(env.process(parent(env))) 23r`ra}rb(h&Uh'j\ubaubcdocutils.nodes target rc)rd}re(h&X(.. _waiting_for_multiple_events_at_once:h'jh(h+h-Utargetrfh/}rg(h4]h3]h1]h2]h6]Urefidrhh uh8Kh9hh!]ubeubh#)ri}rj(h&Uh'h$h(h+Uexpect_referenced_by_namerk}rlhjdsh-h.h/}rm(h1]h2]h3]h4]rn(h heh6]ro(hheuh8Kh9hUexpect_referenced_by_idrp}rqh jdsh!]rr(h;)rs}rt(h&X#Waiting for multiple events at onceruh'jih(h+h-h?h/}rv(h1]h2]h3]h4]h6]uh8Kh9hh!]rwhBX#Waiting for multiple events at oncerxry}rz(h&juh'jsubaubhF)r{}r|(h&XSometimes, you want to wait for more than one event at the same time. For example, you may want to wait for a resource, but not for an unlimited amount of time. Or you may want to wait until all a set of events has happened.r}h'jih(h+h-hIh/}r~(h1]h2]h3]h4]h6]uh8Kh9hh!]rhBXSometimes, you want to wait for more than one event at the same time. For example, you may want to wait for a resource, but not for an unlimited amount of time. Or you may want to wait until all a set of events has happened.rr}r(h&j}h'j{ubaubhF)r}r(h&XnSimPy therefore offers the :class:`AnyOf` and :class:`AllOf` events which both are a :class:`Condition` event.h'jih(h+h-hIh/}r(h1]h2]h3]h4]h6]uh8Kh9hh!]r(hBXSimPy therefore offers the rr}r(h&XSimPy therefore offers the h'jubhO)r}r(h&X:class:`AnyOf`rh'jh(h+h-hSh/}r(UreftypeXclasshUhVXAnyOfU refdomainXpyrh4]h3]U refexplicith1]h2]h6]hXhYhZNh[h\uh8Kh!]rh^)r}r(h&jh/}r(h1]h2]r(hcjXpy-classreh3]h4]h6]uh'jh!]rhBXAnyOfrr}r(h&Uh'jubah-hiubaubhBX and rr}r(h&X and h'jubhO)r}r(h&X:class:`AllOf`rh'jh(h+h-hSh/}r(UreftypeXclasshUhVXAllOfU refdomainXpyrh4]h3]U refexplicith1]h2]h6]hXhYhZNh[h\uh8Kh!]rh^)r}r(h&jh/}r(h1]h2]r(hcjXpy-classreh3]h4]h6]uh'jh!]rhBXAllOfrr}r(h&Uh'jubah-hiubaubhBX events which both are a rr}r(h&X events which both are a h'jubhO)r}r(h&X:class:`Condition`rh'jh(h+h-hSh/}r(UreftypeXclasshUhVX ConditionU refdomainXpyrh4]h3]U refexplicith1]h2]h6]hXhYhZNh[h\uh8Kh!]rh^)r}r(h&jh/}r(h1]h2]r(hcjXpy-classreh3]h4]h6]uh'jh!]rhBX Conditionrr}r(h&Uh'jubah-hiubaubhBX event.rr}r(h&X event.h'jubeubhF)r}r(h&XqBoth take a list of events as an argument and are triggered if at least one or all of them of them are triggered.rh'jih(h+h-hIh/}r(h1]h2]h3]h4]h6]uh8Kh9hh!]rhBXqBoth take a list of events as an argument and are triggered if at least one or all of them of them are triggered.rr}r(h&jh'jubaubhm)r}r(h&X>>> from simpy.events import AnyOf, AllOf, Event >>> events = [Event(env) for i in range(3)] >>> a = AnyOf(env, events) # Triggers if at least one of "events" is triggered. >>> b = AllOf(env, events) # Triggers if all each of "events" is triggered.h'jih(h+h-hph/}r(jjXpythonhrhsh4]h3]h1]h2]h6]uh8Kh9hh!]rhBX>>> from simpy.events import AnyOf, AllOf, Event >>> events = [Event(env) for i in range(3)] >>> a = AnyOf(env, events) # Triggers if at least one of "events" is triggered. >>> b = AllOf(env, events) # Triggers if all each of "events" is triggered.rr}r(h&Uh'jubaubhF)r}r(h&XfThe value of a condition event is an ordered dictionary with an entry for every triggered event. In the case of ``AllOf``, the size of that dictionary will always be the same as the length of the event list. The value dict of ``AnyOf`` will have at least one entry. In both cases, the event instances are used as keys and the event values will be the values.h'jih(h+h-hIh/}r(h1]h2]h3]h4]h6]uh8Mh9hh!]r(hBXpThe value of a condition event is an ordered dictionary with an entry for every triggered event. In the case of rr}r(h&XpThe value of a condition event is an ordered dictionary with an entry for every triggered event. In the case of h'jubh^)r}r(h&X ``AllOf``h/}r(h1]h2]h3]h4]h6]uh'jh!]rhBXAllOfrr}r(h&Uh'jubah-hiubhBXi, the size of that dictionary will always be the same as the length of the event list. The value dict of rr}r(h&Xi, the size of that dictionary will always be the same as the length of the event list. The value dict of h'jubh^)r}r(h&X ``AnyOf``h/}r(h1]h2]h3]h4]h6]uh'jh!]rhBXAnyOfrr}r(h&Uh'jubah-hiubhBX{ will have at least one entry. In both cases, the event instances are used as keys and the event values will be the values.rr}r(h&X{ will have at least one entry. In both cases, the event instances are used as keys and the event values will be the values.h'jubeubhF)r}r(h&XnAs a shorthand for ``AllOf`` and ``AnyOf``, you can also use the logical operators ``&`` (and) and ``|`` (or):h'jih(h+h-hIh/}r(h1]h2]h3]h4]h6]uh8M h9hh!]r(hBXAs a shorthand for rr}r(h&XAs a shorthand for h'jubh^)r}r(h&X ``AllOf``h/}r(h1]h2]h3]h4]h6]uh'jh!]rhBXAllOfrr}r(h&Uh'jubah-hiubhBX and rr}r(h&X and h'jubh^)r}r(h&X ``AnyOf``h/}r(h1]h2]h3]h4]h6]uh'jh!]rhBXAnyOfrr}r(h&Uh'jubah-hiubhBX), you can also use the logical operators rr}r(h&X), you can also use the logical operators h'jubh^)r}r(h&X``&``h/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX&r }r (h&Uh'jubah-hiubhBX (and) and r r }r (h&X (and) and h'jubh^)r}r(h&X``|``h/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX|r}r(h&Uh'jubah-hiubhBX (or):rr}r(h&X (or):h'jubeubhm)r}r(h&X:>>> def test_condition(env): ... t1, t2 = env.timeout(1, value='spam'), env.timeout(2, value='eggs') ... ret = yield t1 | t2 ... assert ret == {t1: 'spam'} ... ... t1, t2 = env.timeout(1, value='spam'), env.timeout(2, value='eggs') ... ret = yield t1 & t2 ... assert ret == {t1: 'spam', t2: 'eggs'} ... ... # You can also concatenate & and | ... e1, e2, e3 = [env.timeout(i) for i in range(3)] ... yield (e1 | e2) & e3 ... assert all(e.triggered for e in [e1, e2, e3]) ... >>> proc = env.process(test_condition(env)) >>> env.run()h'jih(h+h-hph/}r(jjXpythonhrhsh4]h3]h1]h2]h6]uh8M h9hh!]rhBX:>>> def test_condition(env): ... t1, t2 = env.timeout(1, value='spam'), env.timeout(2, value='eggs') ... ret = yield t1 | t2 ... assert ret == {t1: 'spam'} ... ... t1, t2 = env.timeout(1, value='spam'), env.timeout(2, value='eggs') ... ret = yield t1 & t2 ... assert ret == {t1: 'spam', t2: 'eggs'} ... ... # You can also concatenate & and | ... e1, e2, e3 = [env.timeout(i) for i in range(3)] ... yield (e1 | e2) & e3 ... assert all(e.triggered for e in [e1, e2, e3]) ... >>> proc = env.process(test_condition(env)) >>> env.run()rr}r(h&Uh'jubaubhF)r}r(h&XThe order of condition results is identical to the order in which the condition events were specified. This allows the following idiom for conveniently fetching the values of multiple events specified in an *and* condition (including ``AllOf``):h'jih(h+h-hIh/}r (h1]h2]h3]h4]h6]uh8Mh9hh!]r!(hBXThe order of condition results is identical to the order in which the condition events were specified. This allows the following idiom for conveniently fetching the values of multiple events specified in an r"r#}r$(h&XThe order of condition results is identical to the order in which the condition events were specified. This allows the following idiom for conveniently fetching the values of multiple events specified in an h'jubh)r%}r&(h&X*and*h/}r'(h1]h2]h3]h4]h6]uh'jh!]r(hBXandr)r*}r+(h&Uh'j%ubah-hubhBX condition (including r,r-}r.(h&X condition (including h'jubh^)r/}r0(h&X ``AllOf``h/}r1(h1]h2]h3]h4]h6]uh'jh!]r2hBXAllOfr3r4}r5(h&Uh'j/ubah-hiubhBX):r6r7}r8(h&X):h'jubeubhm)r9}r:(h&X>>> def fetch_values_of_multiple_events(env): ... t1, t2 = env.timeout(1, value='spam'), env.timeout(2, value='eggs') ... r1, r2 = (yield t1 & t2).values() ... assert r1 == 'spam' and r2 == 'eggs' ... >>> proc = env.process(fetch_values_of_multiple_events(env)) >>> env.run()h'jih(h+h-hph/}r;(jjXpythonhrhsh4]h3]h1]h2]h6]uh8M$h9hh!]r<hBX>>> def fetch_values_of_multiple_events(env): ... t1, t2 = env.timeout(1, value='spam'), env.timeout(2, value='eggs') ... r1, r2 = (yield t1 & t2).values() ... assert r1 == 'spam' and r2 == 'eggs' ... >>> proc = env.process(fetch_values_of_multiple_events(env)) >>> env.run()r=r>}r?(h&Uh'j9ubaubeubeubah&UU transformerr@NU footnote_refsrA}rBUrefnamesrC}rDUsymbol_footnotesrE]rFUautofootnote_refsrG]rHUsymbol_footnote_refsrI]rJU citationsrK]rLh9hU current_linerMNUtransform_messagesrN]rOcdocutils.nodes system_message rP)rQ}rR(h&Uh/}rS(h1]UlevelKh4]h3]Usourceh+h2]h6]UlineKUtypeUINFOrTuh!]rUhF)rV}rW(h&Uh/}rX(h1]h2]h3]h4]h6]uh'jQh!]rYhBXIHyperlink target "waiting-for-multiple-events-at-once" is not referenced.rZr[}r\(h&Uh'jVubah-hIubah-Usystem_messager]ubaUreporterr^NUid_startr_KU autofootnotesr`]raU citation_refsrb}rcUindirect_targetsrd]reUsettingsrf(cdocutils.frontend Values rgorh}ri(Ufootnote_backlinksrjKUrecord_dependenciesrkNU rfc_base_urlrlUhttp://tools.ietf.org/html/rmU tracebackrnUpep_referencesroNUstrip_commentsrpNU toc_backlinksrqUentryrrU language_codersUenrtU datestampruNU report_levelrvKU _destinationrwNU halt_levelrxKU strip_classesryNh?NUerror_encoding_error_handlerrzUbackslashreplacer{Udebugr|NUembed_stylesheetr}Uoutput_encoding_error_handlerr~UstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerUK/var/build/user_builds/simpy/checkouts/3.0.5/docs/topical_guides/events.rstrUgettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hhh jihjhjhj@hj?hh$hjhjiuUsubstitution_namesr}rh-h9h/}r(h1]h4]h3]Usourceh+h2]h6]uU footnotesr]rUrefidsr}rh ]rjdasub.PK.D!v&&8simpy-3.0.5/.doctrees/simpy_intro/how_to_proceed.doctreecdocutils.nodes document q)q}q(U nametypesq}qXhow to proceedqNsUsubstitution_defsq}qUparse_messagesq ]q Ucurrent_sourceq NU decorationq NUautofootnote_startq KUnameidsq}qhUhow-to-proceedqsUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqcdocutils.nodes reprunicode qXP/var/build/user_builds/simpy/checkouts/3.0.5/docs/simpy_intro/how_to_proceed.rstqq}qbUtagnameqUsectionqU attributesq}q (Udupnamesq!]Uclassesq"]Ubackrefsq#]Uidsq$]q%haUnamesq&]q'hauUlineq(KUdocumentq)hh]q*(cdocutils.nodes title q+)q,}q-(hXHow to Proceedq.hhhhhUtitleq/h}q0(h!]h"]h#]h$]h&]uh(Kh)hh]q1cdocutils.nodes Text q2XHow to Proceedq3q4}q5(hh.hh,ubaubcdocutils.nodes paragraph q6)q7}q8(hXIf you are not certain yet if SimPy fulfills your requirements or if you want to see more features in action, you should take a look at the various :doc:`examples <../examples/index>` we provide.hhhhhU paragraphq9h}q:(h!]h"]h#]h$]h&]uh(Kh)hh]q;(h2XIf you are not certain yet if SimPy fulfills your requirements or if you want to see more features in action, you should take a look at the various q(hXIf you are not certain yet if SimPy fulfills your requirements or if you want to see more features in action, you should take a look at the various hh7ubcsphinx.addnodes pending_xref q?)q@}qA(hX#:doc:`examples <../examples/index>`qBhh7hhhU pending_xrefqCh}qD(UreftypeXdocqEUrefwarnqFU reftargetqGX../examples/indexU refdomainUh$]h#]U refexplicith!]h"]h&]UrefdocqHXsimpy_intro/how_to_proceedqIuh(Kh]qJcdocutils.nodes literal qK)qL}qM(hhBh}qN(h!]h"]qO(UxrefqPhEeh#]h$]h&]uhh@h]qQh2XexamplesqRqS}qT(hUhhLubahUliteralqUubaubh2X we provide.qVqW}qX(hX we provide.hh7ubeubh6)qY}qZ(hXIf you are looking for a more detailed description of a certain aspect or feature of SimPy, the :doc:`Topical Guides <../topical_guides/index>` section might help you.hhhhhh9h}q[(h!]h"]h#]h$]h&]uh(K h)hh]q\(h2X`If you are looking for a more detailed description of a certain aspect or feature of SimPy, the q]q^}q_(hX`If you are looking for a more detailed description of a certain aspect or feature of SimPy, the hhYubh?)q`}qa(hX/:doc:`Topical Guides <../topical_guides/index>`qbhhYhhhhCh}qc(UreftypeXdocqdhFhGX../topical_guides/indexU refdomainUh$]h#]U refexplicith!]h"]h&]hHhIuh(K h]qehK)qf}qg(hhbh}qh(h!]h"]qi(hPhdeh#]h$]h&]uhh`h]qjh2XTopical Guidesqkql}qm(hUhhfubahhUubaubh2X section might help you.qnqo}qp(hX section might help you.hhYubeubh6)qq}qr(hX{Finally, there is an :doc:`API Reference <../api_reference/index>` that describes all functions and classes in full detail.hhhhhh9h}qs(h!]h"]h#]h$]h&]uh(K h)hh]qt(h2XFinally, there is an quqv}qw(hXFinally, there is an hhqubh?)qx}qy(hX-:doc:`API Reference <../api_reference/index>`qzhhqhhhhCh}q{(UreftypeXdocq|hFhGX../api_reference/indexU refdomainUh$]h#]U refexplicith!]h"]h&]hHhIuh(K h]q}hK)q~}q(hhzh}q(h!]h"]q(hPh|eh#]h$]h&]uhhxh]qh2X API Referenceqq}q(hUhh~ubahhUubaubh2X9 that describes all functions and classes in full detail.qq}q(hX9 that describes all functions and classes in full detail.hhqubeubeubahUU transformerqNU footnote_refsq}qUrefnamesq}qUsymbol_footnotesq]qUautofootnote_refsq]qUsymbol_footnote_refsq]qU citationsq]qh)hU current_lineqNUtransform_messagesq]qUreporterqNUid_startqKU autofootnotesq]qU citation_refsq}qUindirect_targetsq]qUsettingsq(cdocutils.frontend Values qoq}q(Ufootnote_backlinksqKUrecord_dependenciesqNU rfc_base_urlqUhttp://tools.ietf.org/html/qU tracebackqUpep_referencesqNUstrip_commentsqNU toc_backlinksqUentryqU language_codeqUenqU datestampqNU report_levelqKU _destinationqNU halt_levelqKU strip_classesqNh/NUerror_encoding_error_handlerqUbackslashreplaceqUdebugqNUembed_stylesheetqUoutput_encoding_error_handlerqUstrictqU sectnum_xformqKUdump_transformsqNU docinfo_xformqKUwarning_streamqNUpep_file_url_templateqUpep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqĈUtrim_footnote_reference_spaceqʼnUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqɉU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUP/var/build/user_builds/simpy/checkouts/3.0.5/docs/simpy_intro/how_to_proceed.rstqUgettext_compactq؈U generatorqNUdump_internalsqNU smart_quotesqۉU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]qUfile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}qhhsUsubstitution_namesq}qhh)h}q(h!]h$]h#]Usourcehh"]h&]uU footnotesq]qUrefidsq}qub.PK.D2S,##6simpy-3.0.5/.doctrees/simpy_intro/installation.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X installationqNXupgrading from simpy 2qNX what's nextqNXdownload simpyq Xpytestq Xpipq Xmockq uUsubstitution_defsq }qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hU installationqhUupgrading-from-simpy-2qhU what-s-nextqh Udownload-simpyqh Upytestqh Upipqh UmockquUchildrenq]qcdocutils.nodes section q)q }q!(U rawsourceq"UUparentq#hUsourceq$cdocutils.nodes reprunicode q%XN/var/build/user_builds/simpy/checkouts/3.0.5/docs/simpy_intro/installation.rstq&q'}q(bUtagnameq)Usectionq*U attributesq+}q,(Udupnamesq-]Uclassesq.]Ubackrefsq/]Uidsq0]q1haUnamesq2]q3hauUlineq4KUdocumentq5hh]q6(cdocutils.nodes title q7)q8}q9(h"X Installationq:h#h h$h'h)Utitleq;h+}q<(h-]h.]h/]h0]h2]uh4Kh5hh]q=cdocutils.nodes Text q>X Installationq?q@}qA(h"h:h#h8ubaubcdocutils.nodes paragraph qB)qC}qD(h"XSimPy is implemented in pure Python and has no dependencies. SimPy runs on Python 2 (>= 2.7) and Python 3 (>= 3.2). PyPy is also supported. If you have `pip `_ installed, just typeh#h h$h'h)U paragraphqEh+}qF(h-]h.]h/]h0]h2]uh4Kh5hh]qG(h>XSimPy is implemented in pure Python and has no dependencies. SimPy runs on Python 2 (>= 2.7) and Python 3 (>= 3.2). PyPy is also supported. If you have qHqI}qJ(h"XSimPy is implemented in pure Python and has no dependencies. SimPy runs on Python 2 (>= 2.7) and Python 3 (>= 3.2). PyPy is also supported. If you have h#hCubcdocutils.nodes reference qK)qL}qM(h"X(`pip `_h+}qN(Unameh UrefuriqOXhttp://pypi.python.org/pypi/pipqPh0]h/]h-]h.]h2]uh#hCh]qQh>XpipqRqS}qT(h"Uh#hLubah)U referenceqUubcdocutils.nodes target qV)qW}qX(h"X" U referencedqYKh#hCh)UtargetqZh+}q[(UrefurihPh0]q\hah/]h-]h.]h2]q]h auh]ubh>X installed, just typeq^q_}q`(h"X installed, just typeh#hCubeubcdocutils.nodes literal_block qa)qb}qc(h"X$ pip install simpyh#h h$h'h)U literal_blockqdh+}qe(UlinenosqfUlanguageqgXbashU xml:spaceqhUpreserveqih0]h/]h-]h.]h2]uh4K h5hh]qjh>X$ pip install simpyqkql}qm(h"Uh#hbubaubhB)qn}qo(h"Xand you are done.qph#h h$h'h)hEh+}qq(h-]h.]h/]h0]h2]uh4K h5hh]qrh>Xand you are done.qsqt}qu(h"hph#hnubaubhB)qv}qw(h"XAlternatively, you can `download SimPy `_ and install it manually. Extract the archive, open a terminal window where you extracted SimPy and type:h#h h$h'h)hEh+}qx(h-]h.]h/]h0]h2]uh4Kh5hh]qy(h>XAlternatively, you can qzq{}q|(h"XAlternatively, you can h#hvubhK)q}}q~(h"X6`download SimPy `_h+}q(UnameXdownload SimPyhOX"http://pypi.python.org/pypi/SimPy/qh0]h/]h-]h.]h2]uh#hvh]qh>Xdownload SimPyqq}q(h"Uh#h}ubah)hUubhV)q}q(h"X% hYKh#hvh)hZh+}q(Urefurihh0]qhah/]h-]h.]h2]qh auh]ubh>Xi and install it manually. Extract the archive, open a terminal window where you extracted SimPy and type:qq}q(h"Xi and install it manually. Extract the archive, open a terminal window where you extracted SimPy and type:h#hvubeubha)q}q(h"X$ python setup.py installh#h h$h'h)hdh+}q(hfhgXbashhhhih0]h/]h-]h.]h2]uh4Kh5hh]qh>X$ python setup.py installqq}q(h"Uh#hubaubhB)q}q(h"XYou can now optionally run SimPy's tests to see if everything works fine. You need `pytest `_ and `mock `_ for this:h#h h$h'h)hEh+}q(h-]h.]h/]h0]h2]uh4Kh5hh]q(h>XSYou can now optionally run SimPy's tests to see if everything works fine. You need qq}q(h"XSYou can now optionally run SimPy's tests to see if everything works fine. You need h#hubhK)q}q(h"X`pytest `_h+}q(Unameh hOXhttp://pytest.orgqh0]h/]h-]h.]h2]uh#hh]qh>Xpytestqq}q(h"Uh#hubah)hUubhV)q}q(h"X hYKh#hh)hZh+}q(Urefurihh0]qhah/]h-]h.]h2]qh auh]ubh>X and qq}q(h"X and h#hubhK)q}q(h"X2`mock `_h+}q(Unameh hOX(http://www.voidspace.org.uk/python/mock/qh0]h/]h-]h.]h2]uh#hh]qh>Xmockqq}q(h"Uh#hubah)hUubhV)q}q(h"X+ hYKh#hh)hZh+}q(Urefurihh0]qhah/]h-]h.]h2]qh auh]ubh>X for this:qq}q(h"X for this:h#hubeubha)q}q(h"X($ python -c "import simpy; simpy.test()"h#h h$h'h)hdh+}q(hfhgXbashhhhih0]h/]h-]h.]h2]uh4Kh5hh]qh>X($ python -c "import simpy; simpy.test()"qq}q(h"Uh#hubaubh)q}q(h"Uh#h h$h'h)h*h+}q(h-]h.]h/]h0]qhah2]qhauh4K!h5hh]q(h7)q}q(h"XUpgrading from SimPy 2qh#hh$h'h)h;h+}q(h-]h.]h/]h0]h2]uh4K!h5hh]qh>XUpgrading from SimPy 2qͅq}q(h"hh#hubaubhB)q}q(h"X[If you are already familiar with SimPy 2, please read the Guide :ref:`porting_from_simpy2`.h#hh$h'h)hEh+}q(h-]h.]h/]h0]h2]uh4K#h5hh]q(h>X@If you are already familiar with SimPy 2, please read the Guide qԅq}q(h"X@If you are already familiar with SimPy 2, please read the Guide h#hubcsphinx.addnodes pending_xref q)q}q(h"X:ref:`porting_from_simpy2`qh#hh$h'h)U pending_xrefqh+}q(UreftypeXrefUrefwarnq݈U reftargetqXporting_from_simpy2U refdomainXstdqh0]h/]U refexplicith-]h.]h2]UrefdocqXsimpy_intro/installationquh4K#h]qcdocutils.nodes emphasis q)q}q(h"hh+}q(h-]h.]q(UxrefqhXstd-refqeh/]h0]h2]uh#hh]qh>Xporting_from_simpy2q녁q}q(h"Uh#hubah)Uemphasisqubaubh>X.q}q(h"X.h#hubeubeubh)q}q(h"Uh#h h$h'h)h*h+}q(h-]h.]h/]h0]qhah2]qhauh4K(h5hh]q(h7)q}q(h"X What's Nextqh#hh$h'h)h;h+}q(h-]h.]h/]h0]h2]uh4K(h5hh]qh>X What's Nextqq}q(h"hh#hubaubhB)q}r(h"XNow that you've installed SimPy, you probably want to simulate something. The :ref:`next section ` will introduce you to SimPy's basic concepts.h#hh$h'h)hEh+}r(h-]h.]h/]h0]h2]uh4K*h5hh]r(h>XNNow that you've installed SimPy, you probably want to simulate something. The rr}r(h"XNNow that you've installed SimPy, you probably want to simulate something. The h#hubh)r}r(h"X$:ref:`next section `rh#hh$h'h)hh+}r (UreftypeXrefh݈hXbasic_conceptsU refdomainXstdr h0]h/]U refexplicith-]h.]h2]hhuh4K*h]r h)r }r (h"jh+}r(h-]h.]r(hj Xstd-refreh/]h0]h2]uh#jh]rh>X next sectionrr}r(h"Uh#j ubah)hubaubh>X. will introduce you to SimPy's basic concepts.rr}r(h"X. will introduce you to SimPy's basic concepts.h#hubeubeubeubah"UU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]r Usymbol_footnote_refsr!]r"U citationsr#]r$h5hU current_liner%NUtransform_messagesr&]r'Ureporterr(NUid_startr)KU autofootnotesr*]r+U citation_refsr,}r-Uindirect_targetsr.]r/Usettingsr0(cdocutils.frontend Values r1or2}r3(Ufootnote_backlinksr4KUrecord_dependenciesr5NU rfc_base_urlr6Uhttp://tools.ietf.org/html/r7U tracebackr8Upep_referencesr9NUstrip_commentsr:NU toc_backlinksr;Uentryr<U language_coder=Uenr>U datestampr?NU report_levelr@KU _destinationrANU halt_levelrBKU strip_classesrCNh;NUerror_encoding_error_handlerrDUbackslashreplacerEUdebugrFNUembed_stylesheetrGUoutput_encoding_error_handlerrHUstrictrIU sectnum_xformrJKUdump_transformsrKNU docinfo_xformrLKUwarning_streamrMNUpep_file_url_templaterNUpep-%04drOUexit_status_levelrPKUconfigrQNUstrict_visitorrRNUcloak_email_addressesrSUtrim_footnote_reference_spacerTUenvrUNUdump_pseudo_xmlrVNUexpose_internalsrWNUsectsubtitle_xformrXU source_linkrYNUrfc_referencesrZNUoutput_encodingr[Uutf-8r\U source_urlr]NUinput_encodingr^U utf-8-sigr_U_disable_configr`NU id_prefixraUU tab_widthrbKUerror_encodingrcUUTF-8rdU_sourcereUN/var/build/user_builds/simpy/checkouts/3.0.5/docs/simpy_intro/installation.rstrfUgettext_compactrgU generatorrhNUdump_internalsriNU smart_quotesrjU pep_base_urlrkUhttp://www.python.org/dev/peps/rlUsyntax_highlightrmUlongrnUinput_encoding_error_handlerrojIUauto_id_prefixrpUidrqUdoctitle_xformrrUstrip_elements_with_classesrsNU _config_filesrt]Ufile_insertion_enabledruU raw_enabledrvKU dump_settingsrwNubUsymbol_footnote_startrxKUidsry}rz(hh hhhhhhhhWhhhhuUsubstitution_namesr{}r|h)h5h+}r}(h-]h0]h/]Usourceh'h.]h2]uU footnotesr~]rUrefidsr}rub.PK.Dą /simpy-3.0.5/.doctrees/simpy_intro/index.doctreecdocutils.nodes document q)q}q(U nametypesq}qXsimpy in 10 minutesqNsUsubstitution_defsq}qUparse_messagesq ]q Ucurrent_sourceq NU decorationq NUautofootnote_startq KUnameidsq}qhUsimpy-in-10-minutesqsUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqcdocutils.nodes reprunicode qXG/var/build/user_builds/simpy/checkouts/3.0.5/docs/simpy_intro/index.rstqq}qbUtagnameqUsectionqU attributesq}q (Udupnamesq!]Uclassesq"]Ubackrefsq#]Uidsq$]q%haUnamesq&]q'hauUlineq(KUdocumentq)hh]q*(cdocutils.nodes title q+)q,}q-(hXSimPy in 10 Minutesq.hhhhhUtitleq/h}q0(h!]h"]h#]h$]h&]uh(Kh)hh]q1cdocutils.nodes Text q2XSimPy in 10 Minutesq3q4}q5(hh.hh,ubaubcdocutils.nodes paragraph q6)q7}q8(hX5In this section, you'll learn the basics of SimPy in just a few minutes. Afterwards, you will be able to implement a simple simulation using SimPy and you'll be able to make an educated decision if SimPy is what you need. We'll also give you some hints on how to proceed to implement more complex simulations.q9hhhhhU paragraphq:h}q;(h!]h"]h#]h$]h&]uh(Kh)hh]q}q?(hh9hh7ubaubcdocutils.nodes compound q@)qA}qB(hUhhhhhUcompoundqCh}qD(h!]h"]qEUtoctree-wrapperqFah#]h$]h&]uh(Nh)hh]qGcsphinx.addnodes toctree qH)qI}qJ(hUhhAhhhUtoctreeqKh}qL(UnumberedqMKU includehiddenqNhXsimpy_intro/indexqOU titlesonlyqPUglobqQh$]h#]h!]h"]h&]UentriesqR]qS(NXsimpy_intro/installationqTqUNXsimpy_intro/basic_conceptsqVqWNXsimpy_intro/process_interactionqXqYNXsimpy_intro/shared_resourcesqZq[NXsimpy_intro/how_to_proceedq\q]eUhiddenq^U includefilesq_]q`(hThVhXhZh\eUmaxdepthqaKuh(K h]ubaubcdocutils.nodes comment qb)qc}qd(hX monitoringhhhhhUcommentqeh}qf(U xml:spaceqgUpreserveqhh$]h#]h!]h"]h&]uh(Kh)hh]qih2X monitoringqjqk}ql(hUhhcubaubeubahUU transformerqmNU footnote_refsqn}qoUrefnamesqp}qqUsymbol_footnotesqr]qsUautofootnote_refsqt]quUsymbol_footnote_refsqv]qwU citationsqx]qyh)hU current_lineqzNUtransform_messagesq{]q|Ureporterq}NUid_startq~KU autofootnotesq]qU citation_refsq}qUindirect_targetsq]qUsettingsq(cdocutils.frontend Values qoq}q(Ufootnote_backlinksqKUrecord_dependenciesqNU rfc_base_urlqUhttp://tools.ietf.org/html/qU tracebackqUpep_referencesqNUstrip_commentsqNU toc_backlinksqUentryqU language_codeqUenqU datestampqNU report_levelqKU _destinationqNU halt_levelqKU strip_classesqNh/NUerror_encoding_error_handlerqUbackslashreplaceqUdebugqNUembed_stylesheetqUoutput_encoding_error_handlerqUstrictqU sectnum_xformqKUdump_transformsqNU docinfo_xformqKUwarning_streamqNUpep_file_url_templateqUpep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUG/var/build/user_builds/simpy/checkouts/3.0.5/docs/simpy_intro/index.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhUauto_id_prefixqUidqUdoctitle_xformqljUstrip_elements_with_classesqNU _config_filesq]Ufile_insertion_enabledqʈU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}qhhsUsubstitution_namesq}qhh)h}q(h!]h$]h#]Usourcehh"]h&]uU footnotesq]qUrefidsq}qub.PK.DEaa8simpy-3.0.5/.doctrees/simpy_intro/basic_concepts.doctreecdocutils.nodes document q)q}q(U nametypesq}q(Xbasic_conceptsqX generatorsqX what's next?qNXour first processq NXbasic conceptsq NuUsubstitution_defsq }q Uparse_messagesq ]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hUbasic-conceptsqhU generatorsqhU what-s-nextqh Uour-first-processqh Uid1quUchildrenq]q(cdocutils.nodes target q)q}q(U rawsourceqX.. _basic_concepts:UparentqhUsourceq cdocutils.nodes reprunicode q!XP/var/build/user_builds/simpy/checkouts/3.0.5/docs/simpy_intro/basic_concepts.rstq"q#}q$bUtagnameq%Utargetq&U attributesq'}q((Uidsq)]Ubackrefsq*]Udupnamesq+]Uclassesq,]Unamesq-]Urefidq.huUlineq/KUdocumentq0hh]ubcdocutils.nodes section q1)q2}q3(hUhhh h#Uexpect_referenced_by_nameq4}q5hhsh%Usectionq6h'}q7(h+]h,]h*]h)]q8(hheh-]q9(h heuh/Kh0hUexpect_referenced_by_idq:}q;hhsh]q<(cdocutils.nodes title q=)q>}q?(hXBasic Conceptsq@hh2h h#h%UtitleqAh'}qB(h+]h,]h*]h)]h-]uh/Kh0hh]qCcdocutils.nodes Text qDXBasic ConceptsqEqF}qG(hh@hh>ubaubcdocutils.nodes paragraph qH)qI}qJ(hXSimPy is a discrete-event simulation library. The behavior of active components (like vehicles, customers or messages) is modeled with *processes*. All processes live in an *environment*. They interact with the environment and with each other via *events*.hh2h h#h%U paragraphqKh'}qL(h+]h,]h*]h)]h-]uh/K h0hh]qM(hDXSimPy is a discrete-event simulation library. The behavior of active components (like vehicles, customers or messages) is modeled with qNqO}qP(hXSimPy is a discrete-event simulation library. The behavior of active components (like vehicles, customers or messages) is modeled with hhIubcdocutils.nodes emphasis qQ)qR}qS(hX *processes*h'}qT(h+]h,]h*]h)]h-]uhhIh]qUhDX processesqVqW}qX(hUhhRubah%UemphasisqYubhDX. All processes live in an qZq[}q\(hX. All processes live in an hhIubhQ)q]}q^(hX *environment*h'}q_(h+]h,]h*]h)]h-]uhhIh]q`hDX environmentqaqb}qc(hUhh]ubah%hYubhDX=. They interact with the environment and with each other via qdqe}qf(hX=. They interact with the environment and with each other via hhIubhQ)qg}qh(hX*events*h'}qi(h+]h,]h*]h)]h-]uhhIh]qjhDXeventsqkql}qm(hUhhgubah%hYubhDX.qn}qo(hX.hhIubeubhH)qp}qq(hX\Processes are described by simple Python `generators `_. You can call them *process function* or *process method*, depending on whether it is a normal function or method of a class. During their lifetime, they create events and ``yield`` them in order to wait for them to be triggered.hh2h h#h%hKh'}qr(h+]h,]h*]h)]h-]uh/Kh0hh]qs(hDX)Processes are described by simple Python qtqu}qv(hX)Processes are described by simple Python hhpubcdocutils.nodes reference qw)qx}qy(hXM`generators `_h'}qz(UnamehUrefuriq{X=http://docs.python.org/3/reference/expressions.html#yieldexprq|h)]h*]h+]h,]h-]uhhph]q}hDX generatorsq~q}q(hUhhxubah%U referencequbh)q}q(hX@ U referencedqKhhph%h&h'}q(Urefurih|h)]qhah*]h+]h,]h-]qhauh]ubhDX. You can call them qq}q(hX. You can call them hhpubhQ)q}q(hX*process function*h'}q(h+]h,]h*]h)]h-]uhhph]qhDXprocess functionqq}q(hUhhubah%hYubhDX or qq}q(hX or hhpubhQ)q}q(hX*process method*h'}q(h+]h,]h*]h)]h-]uhhph]qhDXprocess methodqq}q(hUhhubah%hYubhDXs, depending on whether it is a normal function or method of a class. During their lifetime, they create events and qq}q(hXs, depending on whether it is a normal function or method of a class. During their lifetime, they create events and hhpubcdocutils.nodes literal q)q}q(hX ``yield``h'}q(h+]h,]h*]h)]h-]uhhph]qhDXyieldqq}q(hUhhubah%UliteralqubhDX0 them in order to wait for them to be triggered.qq}q(hX0 them in order to wait for them to be triggered.hhpubeubhH)q}q(hXWhen a process yields an event, the process gets *suspended*. SimPy *resumes* the process, when the event occurs (we say that the event is *triggered*). Multiple processes can wait for the same event. SimPy resumes them in the same order in which they yielded that event.hh2h h#h%hKh'}q(h+]h,]h*]h)]h-]uh/Kh0hh]q(hDX1When a process yields an event, the process gets qq}q(hX1When a process yields an event, the process gets hhubhQ)q}q(hX *suspended*h'}q(h+]h,]h*]h)]h-]uhhh]qhDX suspendedqq}q(hUhhubah%hYubhDX. SimPy qq}q(hX. SimPy hhubhQ)q}q(hX *resumes*h'}q(h+]h,]h*]h)]h-]uhhh]qhDXresumesqq}q(hUhhubah%hYubhDX> the process, when the event occurs (we say that the event is qÅq}q(hX> the process, when the event occurs (we say that the event is hhubhQ)q}q(hX *triggered*h'}q(h+]h,]h*]h)]h-]uhhh]qhDX triggeredqʅq}q(hUhhubah%hYubhDXy). Multiple processes can wait for the same event. SimPy resumes them in the same order in which they yielded that event.qͅq}q(hXy). Multiple processes can wait for the same event. SimPy resumes them in the same order in which they yielded that event.hhubeubhH)q}q(hXAn important event type is the :class:`~simpy.events.Timeout`. Events of this type are triggered after a certain amount of (simulated) time has passed. They allow a process to sleep (or hold its state) for the given time. A :class:`~simpy.events.Timeout` and all other events can be created by calling the appropriate method of the :class:`Environment` that the process lives in (:meth:`Environment.timeout()` for example).hh2h h#h%hKh'}q(h+]h,]h*]h)]h-]uh/Kh0hh]q(hDXAn important event type is the qԅq}q(hXAn important event type is the hhubcsphinx.addnodes pending_xref q)q}q(hX:class:`~simpy.events.Timeout`qhhh h#h%U pending_xrefqh'}q(UreftypeXclassUrefwarnq݉U reftargetqXsimpy.events.TimeoutU refdomainXpyqh)]h*]U refexplicith+]h,]h-]UrefdocqXsimpy_intro/basic_conceptsqUpy:classqNU py:moduleqX simpy.corequh/Kh]qh)q}q(hhh'}q(h+]h,]q(UxrefqhXpy-classqeh*]h)]h-]uhhh]qhDXTimeoutq텁q}q(hUhhubah%hubaubhDX. Events of this type are triggered after a certain amount of (simulated) time has passed. They allow a process to sleep (or hold its state) for the given time. A qq}q(hX. Events of this type are triggered after a certain amount of (simulated) time has passed. They allow a process to sleep (or hold its state) for the given time. A hhubh)q}q(hX:class:`~simpy.events.Timeout`qhhh h#h%hh'}q(UreftypeXclassh݉hXsimpy.events.TimeoutU refdomainXpyqh)]h*]U refexplicith+]h,]h-]hhhNhhuh/Kh]qh)q}q(hhh'}q(h+]h,]q(hhXpy-classqeh*]h)]h-]uhhh]qhDXTimeoutqr}r(hUhhubah%hubaubhDXN and all other events can be created by calling the appropriate method of the rr}r(hXN and all other events can be created by calling the appropriate method of the hhubh)r}r(hX:class:`Environment`rhhh h#h%hh'}r(UreftypeXclassh݉hX EnvironmentU refdomainXpyr h)]h*]U refexplicith+]h,]h-]hhhNhhuh/Kh]r h)r }r (hjh'}r (h+]h,]r(hj Xpy-classreh*]h)]h-]uhjh]rhDX Environmentrr}r(hUhj ubah%hubaubhDX that the process lives in (rr}r(hX that the process lives in (hhubh)r}r(hX:meth:`Environment.timeout()`rhhh h#h%hh'}r(UreftypeXmethh݉hXEnvironment.timeoutU refdomainXpyrh)]h*]U refexplicith+]h,]h-]hhhNhhuh/Kh]rh)r}r(hjh'}r(h+]h,]r (hjXpy-methr!eh*]h)]h-]uhjh]r"hDXEnvironment.timeout()r#r$}r%(hUhjubah%hubaubhDX for example).r&r'}r((hX for example).hhubeubh1)r)}r*(hUhh2h h#h%h6h'}r+(h+]h,]h*]h)]r,hah-]r-h auh/K"h0hh]r.(h=)r/}r0(hXOur First Processr1hj)h h#h%hAh'}r2(h+]h,]h*]h)]h-]uh/K"h0hh]r3hDXOur First Processr4r5}r6(hj1hj/ubaubhH)r7}r8(hXOur first example will be a *car* process. The car will alternately drive and park for a while. When it starts driving (or parking), it will print the current simulation time.hj)h h#h%hKh'}r9(h+]h,]h*]h)]h-]uh/K$h0hh]r:(hDXOur first example will be a r;r<}r=(hXOur first example will be a hj7ubhQ)r>}r?(hX*car*h'}r@(h+]h,]h*]h)]h-]uhj7h]rAhDXcarrBrC}rD(hUhj>ubah%hYubhDX process. The car will alternately drive and park for a while. When it starts driving (or parking), it will print the current simulation time.rErF}rG(hX process. The car will alternately drive and park for a while. When it starts driving (or parking), it will print the current simulation time.hj7ubeubhH)rH}rI(hXSo let's start::rJhj)h h#h%hKh'}rK(h+]h,]h*]h)]h-]uh/K(h0hh]rLhDXSo let's start:rMrN}rO(hXSo let's start:hjHubaubcdocutils.nodes literal_block rP)rQ}rR(hX+>>> def car(env): ... while True: ... print('Start parking at %d' % env.now) ... parking_duration = 5 ... yield env.timeout(parking_duration) ... ... print('Start driving at %d' % env.now) ... trip_duration = 2 ... yield env.timeout(trip_duration)hj)h h#h%U literal_blockrSh'}rT(U xml:spacerUUpreserverVh)]h*]h+]h,]h-]uh/K*h0hh]rWhDX+>>> def car(env): ... while True: ... print('Start parking at %d' % env.now) ... parking_duration = 5 ... yield env.timeout(parking_duration) ... ... print('Start driving at %d' % env.now) ... trip_duration = 2 ... yield env.timeout(trip_duration)rXrY}rZ(hUhjQubaubhH)r[}r\(hXOur *car* process requires a reference to an :class:`Environment` (``env``) in order to create new events. The *car*'s behavior is described in an infinite loop. Remember, this function is a generator. Though it will never terminate, it will pass the control flow back to the simulation once a ``yield`` statement is reached. Once the yielded event is triggered ("it occurs"), the simulation will resume the function at this statement.hj)h h#h%hKh'}r](h+]h,]h*]h)]h-]uh/K4h0hh]r^(hDXOur r_r`}ra(hXOur hj[ubhQ)rb}rc(hX*car*h'}rd(h+]h,]h*]h)]h-]uhj[h]rehDXcarrfrg}rh(hUhjbubah%hYubhDX$ process requires a reference to an rirj}rk(hX$ process requires a reference to an hj[ubh)rl}rm(hX:class:`Environment`rnhj[h h#h%hh'}ro(UreftypeXclassh݉hX EnvironmentU refdomainXpyrph)]h*]U refexplicith+]h,]h-]hhhNhhuh/K4h]rqh)rr}rs(hjnh'}rt(h+]h,]ru(hjpXpy-classrveh*]h)]h-]uhjlh]rwhDX Environmentrxry}rz(hUhjrubah%hubaubhDX (r{r|}r}(hX (hj[ubh)r~}r(hX``env``h'}r(h+]h,]h*]h)]h-]uhj[h]rhDXenvrr}r(hUhj~ubah%hubhDX%) in order to create new events. The rr}r(hX%) in order to create new events. The hj[ubhQ)r}r(hX*car*h'}r(h+]h,]h*]h)]h-]uhj[h]rhDXcarrr}r(hUhjubah%hYubhDX's behavior is described in an infinite loop. Remember, this function is a generator. Though it will never terminate, it will pass the control flow back to the simulation once a rr}r(hX's behavior is described in an infinite loop. Remember, this function is a generator. Though it will never terminate, it will pass the control flow back to the simulation once a hj[ubh)r}r(hX ``yield``h'}r(h+]h,]h*]h)]h-]uhj[h]rhDXyieldrr}r(hUhjubah%hubhDX statement is reached. Once the yielded event is triggered ("it occurs"), the simulation will resume the function at this statement.rr}r(hX statement is reached. Once the yielded event is triggered ("it occurs"), the simulation will resume the function at this statement.hj[ubeubhH)r}r(hXAs I said before, our car switches between the states *parking* and *driving*. It announces its new state by printing a message and the current simulation time (as returned by the :attr:`Environment.now` property). It then calls the :meth:`Environment.timeout()` factory function to create a :class:`~simpy.events.Timeout` event. This event describes the point in time the car is done *parking* (or *driving*, respectively). By yielding the event, it signals the simulation that it wants to wait for the event to occur.hj)h h#h%hKh'}r(h+]h,]h*]h)]h-]uh/K;h0hh]r(hDX6As I said before, our car switches between the states rr}r(hX6As I said before, our car switches between the states hjubhQ)r}r(hX *parking*h'}r(h+]h,]h*]h)]h-]uhjh]rhDXparkingrr}r(hUhjubah%hYubhDX and rr}r(hX and hjubhQ)r}r(hX *driving*h'}r(h+]h,]h*]h)]h-]uhjh]rhDXdrivingrr}r(hUhjubah%hYubhDXg. It announces its new state by printing a message and the current simulation time (as returned by the rr}r(hXg. It announces its new state by printing a message and the current simulation time (as returned by the hjubh)r}r(hX:attr:`Environment.now`rhjh h#h%hh'}r(UreftypeXattrh݉hXEnvironment.nowU refdomainXpyrh)]h*]U refexplicith+]h,]h-]hhhNhhuh/K;h]rh)r}r(hjh'}r(h+]h,]r(hjXpy-attrreh*]h)]h-]uhjh]rhDXEnvironment.nowrr}r(hUhjubah%hubaubhDX property). It then calls the rr}r(hX property). It then calls the hjubh)r}r(hX:meth:`Environment.timeout()`rhjh h#h%hh'}r(UreftypeXmethh݉hXEnvironment.timeoutU refdomainXpyrh)]h*]U refexplicith+]h,]h-]hhhNhhuh/K;h]rh)r}r(hjh'}r(h+]h,]r(hjXpy-methreh*]h)]h-]uhjh]rhDXEnvironment.timeout()rr}r(hUhjubah%hubaubhDX factory function to create a rr}r(hX factory function to create a hjubh)r}r(hX:class:`~simpy.events.Timeout`rhjh h#h%hh'}r(UreftypeXclassh݉hXsimpy.events.TimeoutU refdomainXpyrh)]h*]U refexplicith+]h,]h-]hhhNhhuh/K;h]rh)r}r(hjh'}r(h+]h,]r(hjXpy-classreh*]h)]h-]uhjh]rhDXTimeoutrr}r(hUhjubah%hubaubhDX? event. This event describes the point in time the car is done rr}r(hX? event. This event describes the point in time the car is done hjubhQ)r}r(hX *parking*h'}r(h+]h,]h*]h)]h-]uhjh]rhDXparkingrr}r(hUhjubah%hYubhDX (or rr}r(hX (or hjubhQ)r}r(hX *driving*h'}r(h+]h,]h*]h)]h-]uhjh]rhDXdrivingrr}r(hUhjubah%hYubhDXo, respectively). By yielding the event, it signals the simulation that it wants to wait for the event to occur.rr}r(hXo, respectively). By yielding the event, it signals the simulation that it wants to wait for the event to occur.hjubeubhH)r}r(hXiNow that the behavior of our car has been modeled, lets create an instance of it and see how it behaves::hj)h h#h%hKh'}r(h+]h,]h*]h)]h-]uh/KCh0hh]rhDXhNow that the behavior of our car has been modeled, lets create an instance of it and see how it behaves:rr}r(hXhNow that the behavior of our car has been modeled, lets create an instance of it and see how it behaves:hjubaubjP)r}r (hX>>> import simpy >>> env = simpy.Environment() >>> env.process(car(env)) >>> env.run(until=15) Start parking at 0 Start driving at 5 Start parking at 7 Start driving at 12 Start parking at 14hj)h h#h%jSh'}r (jUjVh)]h*]h+]h,]h-]uh/KFh0hh]r hDX>>> import simpy >>> env = simpy.Environment() >>> env.process(car(env)) >>> env.run(until=15) Start parking at 0 Start driving at 5 Start parking at 7 Start driving at 12 Start parking at 14r r }r(hUhjubaubhH)r}r(hX The first thing we need to do is to create an instance of :class:`Environment`. This instance is passed into our *car* process function. Calling it creates a *process generator* that needs to be started and added to the environment via :meth:`Environment.process()`.hj)h h#h%hKh'}r(h+]h,]h*]h)]h-]uh/KQh0hh]r(hDX:The first thing we need to do is to create an instance of rr}r(hX:The first thing we need to do is to create an instance of hjubh)r}r(hX:class:`Environment`rhjh h#h%hh'}r(UreftypeXclassh݉hX EnvironmentU refdomainXpyrh)]h*]U refexplicith+]h,]h-]hhhNhhuh/KQh]rh)r}r(hjh'}r(h+]h,]r(hjXpy-classr eh*]h)]h-]uhjh]r!hDX Environmentr"r#}r$(hUhjubah%hubaubhDX#. This instance is passed into our r%r&}r'(hX#. This instance is passed into our hjubhQ)r(}r)(hX*car*h'}r*(h+]h,]h*]h)]h-]uhjh]r+hDXcarr,r-}r.(hUhj(ubah%hYubhDX( process function. Calling it creates a r/r0}r1(hX( process function. Calling it creates a hjubhQ)r2}r3(hX*process generator*h'}r4(h+]h,]h*]h)]h-]uhjh]r5hDXprocess generatorr6r7}r8(hUhj2ubah%hYubhDX; that needs to be started and added to the environment via r9r:}r;(hX; that needs to be started and added to the environment via hjubh)r<}r=(hX:meth:`Environment.process()`r>hjh h#h%hh'}r?(UreftypeXmethh݉hXEnvironment.processU refdomainXpyr@h)]h*]U refexplicith+]h,]h-]hhhNhhuh/KQh]rAh)rB}rC(hj>h'}rD(h+]h,]rE(hj@Xpy-methrFeh*]h)]h-]uhj<h]rGhDXEnvironment.process()rHrI}rJ(hUhjBubah%hubaubhDX.rK}rL(hX.hjubeubhH)rM}rN(hXNote, that at this time, none of the code of our process function is being executed. It's execution is merely scheduled at the current simulation time.rOhj)h h#h%hKh'}rP(h+]h,]h*]h)]h-]uh/KVh0hh]rQhDXNote, that at this time, none of the code of our process function is being executed. It's execution is merely scheduled at the current simulation time.rRrS}rT(hjOhjMubaubhH)rU}rV(hXThe :class:`~simpy.events.Process` returned by :meth:`~Environment.process()` can be used for process interactions (we will cover that in the next section, so we will ignore it for now).hj)h h#h%hKh'}rW(h+]h,]h*]h)]h-]uh/KYh0hh]rX(hDXThe rYrZ}r[(hXThe hjUubh)r\}r](hX:class:`~simpy.events.Process`r^hjUh h#h%hh'}r_(UreftypeXclassh݉hXsimpy.events.ProcessU refdomainXpyr`h)]h*]U refexplicith+]h,]h-]hhhNhhuh/KYh]rah)rb}rc(hj^h'}rd(h+]h,]re(hj`Xpy-classrfeh*]h)]h-]uhj\h]rghDXProcessrhri}rj(hUhjbubah%hubaubhDX returned by rkrl}rm(hX returned by hjUubh)rn}ro(hX:meth:`~Environment.process()`rphjUh h#h%hh'}rq(UreftypeXmethh݉hXEnvironment.processU refdomainXpyrrh)]h*]U refexplicith+]h,]h-]hhhNhhuh/KYh]rsh)rt}ru(hjph'}rv(h+]h,]rw(hjrXpy-methrxeh*]h)]h-]uhjnh]ryhDX process()rzr{}r|(hUhjtubah%hubaubhDXm can be used for process interactions (we will cover that in the next section, so we will ignore it for now).r}r~}r(hXm can be used for process interactions (we will cover that in the next section, so we will ignore it for now).hjUubeubhH)r}r(hXeFinally, we start the simulation by calling :meth:`~Environment.run()` and passing an end time to it.hj)h h#h%hKh'}r(h+]h,]h*]h)]h-]uh/K]h0hh]r(hDX,Finally, we start the simulation by calling rr}r(hX,Finally, we start the simulation by calling hjubh)r}r(hX:meth:`~Environment.run()`rhjh h#h%hh'}r(UreftypeXmethh݉hXEnvironment.runU refdomainXpyrh)]h*]U refexplicith+]h,]h-]hhhNhhuh/K]h]rh)r}r(hjh'}r(h+]h,]r(hjXpy-methreh*]h)]h-]uhjh]rhDXrun()rr}r(hUhjubah%hubaubhDX and passing an end time to it.rr}r(hX and passing an end time to it.hjubeubeubh1)r}r(hUhh2h h#h%h6h'}r(h+]h,]h*]h)]rhah-]rhauh/Kbh0hh]r(h=)r}r(hX What's Next?rhjh h#h%hAh'}r(h+]h,]h*]h)]h-]uh/Kbh0hh]rhDX What's Next?rr}r(hjhjubaubhH)r}r(hXYou should now be familiar with Simpy's terminology and basic concepts. In the :doc:`next section `, we will cover process interaction.hjh h#h%hKh'}r(h+]h,]h*]h)]h-]uh/Kdh0hh]r(hDXOYou should now be familiar with Simpy's terminology and basic concepts. In the rr}r(hXOYou should now be familiar with Simpy's terminology and basic concepts. In the hjubh)r}r(hX):doc:`next section `rhjh h#h%hh'}r(UreftypeXdocrh݈hXprocess_interactionU refdomainUh)]h*]U refexplicith+]h,]h-]hhuh/Kdh]rh)r}r(hjh'}r(h+]h,]r(hjeh*]h)]h-]uhjh]rhDX next sectionrr}r(hUhjubah%hubaubhDX$, we will cover process interaction.rr}r(hX$, we will cover process interaction.hjubeubeubeubehUU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh0hU current_linerNUtransform_messagesr]rcdocutils.nodes system_message r)r}r(hUh'}r(h+]UlevelKh)]h*]Usourceh#h,]h-]UlineKUtypeUINFOruh]rhH)r}r(hUh'}r(h+]h,]h*]h)]h-]uhjh]rhDX4Hyperlink target "basic-concepts" is not referenced.rr}r(hUhjubah%hKubah%Usystem_messagerubaUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNhANUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacer Uenvr NUdump_pseudo_xmlr NUexpose_internalsr NUsectsubtitle_xformr U source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerUP/var/build/user_builds/simpy/checkouts/3.0.5/docs/simpy_intro/basic_concepts.rstrUgettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlr Uhttp://www.python.org/dev/peps/r!Usyntax_highlightr"Ulongr#Uinput_encoding_error_handlerr$jUauto_id_prefixr%Uidr&Udoctitle_xformr'Ustrip_elements_with_classesr(NU _config_filesr)]Ufile_insertion_enabledr*U raw_enabledr+KU dump_settingsr,NubUsymbol_footnote_startr-KUidsr.}r/(hh2hjhhhj)hh2uUsubstitution_namesr0}r1h%h0h'}r2(h+]h)]h*]Usourceh#h,]h-]uU footnotesr3]r4Urefidsr5}r6h]r7hasub.PK.D  G G:simpy-3.0.5/.doctrees/simpy_intro/shared_resources.doctreecdocutils.nodes document q)q}q(U nametypesq}q(Xshared resourcesqNX what's nextqNXbasic resource usageqNuUsubstitution_defsq }q Uparse_messagesq ]q Ucurrent_sourceq NU decorationqNUautofootnote_startqKUnameidsq}q(hUshared-resourcesqhU what-s-nextqhUbasic-resource-usagequUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqcdocutils.nodes reprunicode qXR/var/build/user_builds/simpy/checkouts/3.0.5/docs/simpy_intro/shared_resources.rstqq}q bUtagnameq!Usectionq"U attributesq#}q$(Udupnamesq%]Uclassesq&]Ubackrefsq']Uidsq(]q)haUnamesq*]q+hauUlineq,KUdocumentq-hh]q.(cdocutils.nodes title q/)q0}q1(hXShared Resourcesq2hhhhh!Utitleq3h#}q4(h%]h&]h']h(]h*]uh,Kh-hh]q5cdocutils.nodes Text q6XShared Resourcesq7q8}q9(hh2hh0ubaubcdocutils.nodes paragraph q:)q;}q<(hXSimPy offers three types of :mod:`~simpy.resources` that help you modeling problems, where multiple processes want to use a resource of limited capacity (e.g., cars at a fuel station with a limited number of fuel pumps) or classical producer-consumer problems.hhhhh!U paragraphq=h#}q>(h%]h&]h']h(]h*]uh,Kh-hh]q?(h6XSimPy offers three types of q@qA}qB(hXSimPy offers three types of hh;ubcsphinx.addnodes pending_xref qC)qD}qE(hX:mod:`~simpy.resources`qFhh;hhh!U pending_xrefqGh#}qH(UreftypeXmodUrefwarnqIU reftargetqJXsimpy.resourcesU refdomainXpyqKh(]h']U refexplicith%]h&]h*]UrefdocqLXsimpy_intro/shared_resourcesqMUpy:classqNNU py:moduleqONuh,Kh]qPcdocutils.nodes literal qQ)qR}qS(hhFh#}qT(h%]h&]qU(UxrefqVhKXpy-modqWeh']h(]h*]uhhDh]qXh6X resourcesqYqZ}q[(hUhhRubah!Uliteralq\ubaubh6X that help you modeling problems, where multiple processes want to use a resource of limited capacity (e.g., cars at a fuel station with a limited number of fuel pumps) or classical producer-consumer problems.q]q^}q_(hX that help you modeling problems, where multiple processes want to use a resource of limited capacity (e.g., cars at a fuel station with a limited number of fuel pumps) or classical producer-consumer problems.hh;ubeubh:)q`}qa(hXcIn this section, we'll briefly introduce SimPy's :class:`~simpy.resources.resource.Resource` class.hhhhh!h=h#}qb(h%]h&]h']h(]h*]uh,K h-hh]qc(h6X1In this section, we'll briefly introduce SimPy's qdqe}qf(hX1In this section, we'll briefly introduce SimPy's hh`ubhC)qg}qh(hX+:class:`~simpy.resources.resource.Resource`qihh`hhh!hGh#}qj(UreftypeXclasshIhJX!simpy.resources.resource.ResourceU refdomainXpyqkh(]h']U refexplicith%]h&]h*]hLhMhNNhONuh,K h]qlhQ)qm}qn(hhih#}qo(h%]h&]qp(hVhkXpy-classqqeh']h(]h*]uhhgh]qrh6XResourceqsqt}qu(hUhhmubah!h\ubaubh6X class.qvqw}qx(hX class.hh`ubeubh)qy}qz(hUhhhhh!h"h#}q{(h%]h&]h']h(]q|hah*]q}hauh,Kh-hh]q~(h/)q}q(hXBasic Resource Usageqhhyhhh!h3h#}q(h%]h&]h']h(]h*]uh,Kh-hh]qh6XBasic Resource Usageqq}q(hhhhubaubh:)q}q(hXcWe'll slightly modify our electric vehicle process ``car`` that we introduced in the last sections.hhyhhh!h=h#}q(h%]h&]h']h(]h*]uh,Kh-hh]q(h6X3We'll slightly modify our electric vehicle process qq}q(hX3We'll slightly modify our electric vehicle process hhubhQ)q}q(hX``car``h#}q(h%]h&]h']h(]h*]uhhh]qh6Xcarqq}q(hUhhubah!h\ubh6X) that we introduced in the last sections.qq}q(hX) that we introduced in the last sections.hhubeubh:)q}q(hXThe car will now drive to a *battery charging station (BCS)* and request one of its two *charging spots*. If both of these spots are currently in use, it waits until one of them becomes available again. It then starts charging its battery and leaves the station afterwards::hhyhhh!h=h#}q(h%]h&]h']h(]h*]uh,Kh-hh]q(h6XThe car will now drive to a qq}q(hXThe car will now drive to a hhubcdocutils.nodes emphasis q)q}q(hX *battery charging station (BCS)*h#}q(h%]h&]h']h(]h*]uhhh]qh6Xbattery charging station (BCS)qq}q(hUhhubah!Uemphasisqubh6X and request one of its two qq}q(hX and request one of its two hhubh)q}q(hX*charging spots*h#}q(h%]h&]h']h(]h*]uhhh]qh6Xcharging spotsqq}q(hUhhubah!hubh6X. If both of these spots are currently in use, it waits until one of them becomes available again. It then starts charging its battery and leaves the station afterwards:qq}q(hX. If both of these spots are currently in use, it waits until one of them becomes available again. It then starts charging its battery and leaves the station afterwards:hhubeubcdocutils.nodes literal_block q)q}q(hX>>> def car(env, name, bcs, driving_time, charge_duration): ... # Simulate driving to the BCS ... yield env.timeout(driving_time) ... ... # Request one of its charging spots ... print('%s arriving at %d' % (name, env.now)) ... with bcs.request() as req: ... yield req ... ... # Charge the battery ... print('%s starting to charge at %s' % (name, env.now)) ... yield env.timeout(charge_duration) ... print('%s leaving the bcs at %s' % (name, env.now))hhyhhh!U literal_blockqh#}q(U xml:spaceqUpreserveqh(]h']h%]h&]h*]uh,Kh-hh]qh6X>>> def car(env, name, bcs, driving_time, charge_duration): ... # Simulate driving to the BCS ... yield env.timeout(driving_time) ... ... # Request one of its charging spots ... print('%s arriving at %d' % (name, env.now)) ... with bcs.request() as req: ... yield req ... ... # Charge the battery ... print('%s starting to charge at %s' % (name, env.now)) ... yield env.timeout(charge_duration) ... print('%s leaving the bcs at %s' % (name, env.now))qq}q(hUhhubaubh:)q}q(hXThe resource's :meth:`~simpy.resources.resource.Resource.request()` method generates an event that lets you wait until the resource becomes available again. If you are resumed, you "own" the resource until you *release* it.hhyhhh!h=h#}q(h%]h&]h']h(]h*]uh,K'h-hh]q(h6XThe resource's qąq}q(hXThe resource's hhubhC)q}q(hX4:meth:`~simpy.resources.resource.Resource.request()`qhhhhh!hGh#}q(UreftypeXmethhIhJX)simpy.resources.resource.Resource.requestU refdomainXpyqh(]h']U refexplicith%]h&]h*]hLhMhNNhONuh,K'h]qhQ)q}q(hhh#}q(h%]h&]q(hVhXpy-methqeh']h(]h*]uhhh]qh6X request()qӅq}q(hUhhubah!h\ubaubh6X method generates an event that lets you wait until the resource becomes available again. If you are resumed, you "own" the resource until you qօq}q(hX method generates an event that lets you wait until the resource becomes available again. If you are resumed, you "own" the resource until you hhubh)q}q(hX *release*h#}q(h%]h&]h']h(]h*]uhhh]qh6Xreleaseq݅q}q(hUhhubah!hubh6X it.qq}q(hX it.hhubeubh:)q}q(hXIf you use the resource with the ``with`` statement as shown above, the resource is automatically being released. If you call ``request()`` without ``with``, you are responsible to call :meth:`~simpy.resources.resource.Resource.release()` once you are done using the resource.hhyhhh!h=h#}q(h%]h&]h']h(]h*]uh,K+h-hh]q(h6X!If you use the resource with the q煁q}q(hX!If you use the resource with the hhubhQ)q}q(hX``with``h#}q(h%]h&]h']h(]h*]uhhh]qh6Xwithqq}q(hUhhubah!h\ubh6XU statement as shown above, the resource is automatically being released. If you call qq}q(hXU statement as shown above, the resource is automatically being released. If you call hhubhQ)q}q(hX ``request()``h#}q(h%]h&]h']h(]h*]uhhh]qh6X request()qq}q(hUhhubah!h\ubh6X without qq}q(hX without hhubhQ)q}q(hX``with``h#}r(h%]h&]h']h(]h*]uhhh]rh6Xwithrr}r(hUhhubah!h\ubh6X, you are responsible to call rr}r(hX, you are responsible to call hhubhC)r}r (hX4:meth:`~simpy.resources.resource.Resource.release()`r hhhhh!hGh#}r (UreftypeXmethhIhJX)simpy.resources.resource.Resource.releaseU refdomainXpyr h(]h']U refexplicith%]h&]h*]hLhMhNNhONuh,K+h]r hQ)r}r(hj h#}r(h%]h&]r(hVj Xpy-methreh']h(]h*]uhjh]rh6X release()rr}r(hUhjubah!h\ubaubh6X& once you are done using the resource.rr}r(hX& once you are done using the resource.hhubeubh:)r}r(hXWhen you release a resource, the next waiting process is resumed and now "owns" one of the resource's slots. The basic :class:`~simpy.resources.resource.Resource` sorts waiting processes in a *FIFO (first in---first out)* way.hhyhhh!h=h#}r(h%]h&]h']h(]h*]uh,K1h-hh]r(h6XwWhen you release a resource, the next waiting process is resumed and now "owns" one of the resource's slots. The basic rr}r (hXwWhen you release a resource, the next waiting process is resumed and now "owns" one of the resource's slots. The basic hjubhC)r!}r"(hX+:class:`~simpy.resources.resource.Resource`r#hjhhh!hGh#}r$(UreftypeXclasshIhJX!simpy.resources.resource.ResourceU refdomainXpyr%h(]h']U refexplicith%]h&]h*]hLhMhNNhONuh,K1h]r&hQ)r'}r((hj#h#}r)(h%]h&]r*(hVj%Xpy-classr+eh']h(]h*]uhj!h]r,h6XResourcer-r.}r/(hUhj'ubah!h\ubaubh6X sorts waiting processes in a r0r1}r2(hX sorts waiting processes in a hjubh)r3}r4(hX*FIFO (first in---first out)*h#}r5(h%]h&]h']h(]h*]uhjh]r6h6XFIFO (first in---first out)r7r8}r9(hUhj3ubah!hubh6X way.r:r;}r<(hX way.hjubeubh:)r=}r>(hXiA resource needs a reference to an :class:`~simpy.core.Environment` and a *capacity* when it is created::hhyhhh!h=h#}r?(h%]h&]h']h(]h*]uh,K6h-hh]r@(h6X#A resource needs a reference to an rArB}rC(hX#A resource needs a reference to an hj=ubhC)rD}rE(hX :class:`~simpy.core.Environment`rFhj=hhh!hGh#}rG(UreftypeXclasshIhJXsimpy.core.EnvironmentU refdomainXpyrHh(]h']U refexplicith%]h&]h*]hLhMhNNhONuh,K6h]rIhQ)rJ}rK(hjFh#}rL(h%]h&]rM(hVjHXpy-classrNeh']h(]h*]uhjDh]rOh6X EnvironmentrPrQ}rR(hUhjJubah!h\ubaubh6X and a rSrT}rU(hX and a hj=ubh)rV}rW(hX *capacity*h#}rX(h%]h&]h']h(]h*]uhj=h]rYh6XcapacityrZr[}r\(hUhjVubah!hubh6X when it is created:r]r^}r_(hX when it is created:hj=ubeubh)r`}ra(hXX>>> import simpy >>> env = simpy.Environment() >>> bcs = simpy.Resource(env, capacity=2)hhyhhh!hh#}rb(hhh(]h']h%]h&]h*]uh,K9h-hh]rch6XX>>> import simpy >>> env = simpy.Environment() >>> bcs = simpy.Resource(env, capacity=2)rdre}rf(hUhj`ubaubh:)rg}rh(hX|We can now create the ``car`` processes and pass a reference to our resource as well as some additional parameters to them::hhyhhh!h=h#}ri(h%]h&]h']h(]h*]uh,K=h-hh]rj(h6XWe can now create the rkrl}rm(hXWe can now create the hjgubhQ)rn}ro(hX``car``h#}rp(h%]h&]h']h(]h*]uhjgh]rqh6Xcarrrrs}rt(hUhjnubah!h\ubh6X^ processes and pass a reference to our resource as well as some additional parameters to them:rurv}rw(hX^ processes and pass a reference to our resource as well as some additional parameters to them:hjgubeubh)rx}ry(hX>>> for i in range(4): ... env.process(car(env, 'Car %d' % i, bcs, i*2, 5)) hhyhhh!hh#}rz(hhh(]h']h%]h&]h*]uh,K@h-hh]r{h6X>>> for i in range(4): ... env.process(car(env, 'Car %d' % i, bcs, i*2, 5)) r|r}}r~(hUhjxubaubh:)r}r(hXFinally, we can start the simulation. Since the car processes all terminate on their own in this simulation, we don't need to specify an *until* time---the simulation will automatically stop when there are no more events left::hhyhhh!h=h#}r(h%]h&]h']h(]h*]uh,KGh-hh]r(h6XFinally, we can start the simulation. Since the car processes all terminate on their own in this simulation, we don't need to specify an rr}r(hXFinally, we can start the simulation. Since the car processes all terminate on their own in this simulation, we don't need to specify an hjubh)r}r(hX*until*h#}r(h%]h&]h']h(]h*]uhjh]rh6Xuntilrr}r(hUhjubah!hubh6XR time---the simulation will automatically stop when there are no more events left:rr}r(hXR time---the simulation will automatically stop when there are no more events left:hjubeubh)r}r(hXC>>> env.run() Car 0 arriving at 0 Car 0 starting to charge at 0 Car 1 arriving at 2 Car 1 starting to charge at 2 Car 2 arriving at 4 Car 0 leaving the bcs at 5 Car 2 starting to charge at 5 Car 3 arriving at 6 Car 1 leaving the bcs at 7 Car 3 starting to charge at 7 Car 2 leaving the bcs at 10 Car 3 leaving the bcs at 12hhyhhh!hh#}r(hhh(]h']h%]h&]h*]uh,KKh-hh]rh6XC>>> env.run() Car 0 arriving at 0 Car 0 starting to charge at 0 Car 1 arriving at 2 Car 1 starting to charge at 2 Car 2 arriving at 4 Car 0 leaving the bcs at 5 Car 2 starting to charge at 5 Car 3 arriving at 6 Car 1 leaving the bcs at 7 Car 3 starting to charge at 7 Car 2 leaving the bcs at 10 Car 3 leaving the bcs at 12rr}r(hUhjubaubh:)r}r(hXxNote that the first to cars can start charging immediately after they arrive at the BCS, while cars 2 an 3 have to wait.rhhyhhh!h=h#}r(h%]h&]h']h(]h*]uh,KYh-hh]rh6XxNote that the first to cars can start charging immediately after they arrive at the BCS, while cars 2 an 3 have to wait.rr}r(hjhjubaubeubh)r}r(hUhhhhh!h"h#}r(h%]h&]h']h(]rhah*]rhauh,K^h-hh]r(h/)r}r(hX What's Nextrhjhhh!h3h#}r(h%]h&]h']h(]h*]uh,K^h-hh]rh6X What's Nextrr}r(hjhjubaubcdocutils.nodes comment r)r}r(hXNThe last part of this tutorial will demonstrate, how you can collect data fromhjhhh!Ucommentrh#}r(hhh(]h']h%]h&]h*]uh,K`h-hh]rh6XNThe last part of this tutorial will demonstrate, how you can collect data fromrr}r(hUhjubaubj)r}r(hXyour simulation.hjhhh!jh#}r(hhh(]h']h%]h&]h*]uh,Kbh-hh]rh6Xyour simulation.rr}r(hUhjubaubh:)r}r(hXYou should now be familiar with SimPy's basic concepts. The :doc:`next section ` shows you how you can proceed with using SimPy from here on.hjhhh!h=h#}r(h%]h&]h']h(]h*]uh,Kch-hh]r(h6X<You should now be familiar with SimPy's basic concepts. The rr}r(hX<You should now be familiar with SimPy's basic concepts. The hjubhC)r}r(hX$:doc:`next section `rhjhhh!hGh#}r(UreftypeXdocrhIhJXhow_to_proceedU refdomainUh(]h']U refexplicith%]h&]h*]hLhMuh,Kch]rhQ)r}r(hjh#}r(h%]h&]r(hVjeh']h(]h*]uhjh]rh6X next sectionrr}r(hUhjubah!h\ubaubh6X= shows you how you can proceed with using SimPy from here on.rr}r(hX= shows you how you can proceed with using SimPy from here on.hjubeubeubeubahUU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh-hU current_linerNUtransform_messagesr]rUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh3NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformr KUwarning_streamr NUpep_file_url_templater Upep-%04dr Uexit_status_levelr KUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingr UUTF-8r!U_sourcer"UR/var/build/user_builds/simpy/checkouts/3.0.5/docs/simpy_intro/shared_resources.rstr#Ugettext_compactr$U generatorr%NUdump_internalsr&NU smart_quotesr'U pep_base_urlr(Uhttp://www.python.org/dev/peps/r)Usyntax_highlightr*Ulongr+Uinput_encoding_error_handlerr,jUauto_id_prefixr-Uidr.Udoctitle_xformr/Ustrip_elements_with_classesr0NU _config_filesr1]Ufile_insertion_enabledr2U raw_enabledr3KU dump_settingsr4NubUsymbol_footnote_startr5KUidsr6}r7(hjhhyhhuUsubstitution_namesr8}r9h!h-h#}r:(h%]h(]h']Usourcehh&]h*]uU footnotesr;]r<Urefidsr=}r>ub.PK.DuW]W]=simpy-3.0.5/.doctrees/simpy_intro/process_interaction.doctreecdocutils.nodes document q)q}q(U nametypesq}q(Xinterrupting another processqNX what's nextqNXprocess interactionqNXwaiting for a processq NuUsubstitution_defsq }q Uparse_messagesq ]q Ucurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hUinterrupting-another-processqhU what-s-nextqhUprocess-interactionqh Uwaiting-for-a-processquUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqcdocutils.nodes reprunicode qXU/var/build/user_builds/simpy/checkouts/3.0.5/docs/simpy_intro/process_interaction.rstq q!}q"bUtagnameq#Usectionq$U attributesq%}q&(Udupnamesq']Uclassesq(]Ubackrefsq)]Uidsq*]q+haUnamesq,]q-hauUlineq.KUdocumentq/hh]q0(cdocutils.nodes title q1)q2}q3(hXProcess Interactionq4hhhh!h#Utitleq5h%}q6(h']h(]h)]h*]h,]uh.Kh/hh]q7cdocutils.nodes Text q8XProcess Interactionq9q:}q;(hh4hh2ubaubcdocutils.nodes paragraph q<)q=}q>(hXThe :class:`~simpy.events.Process` instance that is returned by :meth:`Environment.process()` can be utilized for process interactions. The two most common examples for this are to wait for another process to finish and to interrupt another process while it is waiting for an event.hhhh!h#U paragraphq?h%}q@(h']h(]h)]h*]h,]uh.Kh/hh]qA(h8XThe qBqC}qD(hXThe hh=ubcsphinx.addnodes pending_xref qE)qF}qG(hX:class:`~simpy.events.Process`qHhh=hh!h#U pending_xrefqIh%}qJ(UreftypeXclassUrefwarnqKU reftargetqLXsimpy.events.ProcessU refdomainXpyqMh*]h)]U refexplicith']h(]h,]UrefdocqNXsimpy_intro/process_interactionqOUpy:classqPNU py:moduleqQX simpy.coreqRuh.Kh]qScdocutils.nodes literal qT)qU}qV(hhHh%}qW(h']h(]qX(UxrefqYhMXpy-classqZeh)]h*]h,]uhhFh]q[h8XProcessq\q]}q^(hUhhUubah#Uliteralq_ubaubh8X instance that is returned by q`qa}qb(hX instance that is returned by hh=ubhE)qc}qd(hX:meth:`Environment.process()`qehh=hh!h#hIh%}qf(UreftypeXmethhKhLXEnvironment.processU refdomainXpyqgh*]h)]U refexplicith']h(]h,]hNhOhPNhQhRuh.Kh]qhhT)qi}qj(hheh%}qk(h']h(]ql(hYhgXpy-methqmeh)]h*]h,]uhhch]qnh8XEnvironment.process()qoqp}qq(hUhhiubah#h_ubaubh8X can be utilized for process interactions. The two most common examples for this are to wait for another process to finish and to interrupt another process while it is waiting for an event.qrqs}qt(hX can be utilized for process interactions. The two most common examples for this are to wait for another process to finish and to interrupt another process while it is waiting for an event.hh=ubeubh)qu}qv(hUhhhh!h#h$h%}qw(h']h(]h)]h*]qxhah,]qyh auh.Kh/hh]qz(h1)q{}q|(hXWaiting for a Processq}hhuhh!h#h5h%}q~(h']h(]h)]h*]h,]uh.Kh/hh]qh8XWaiting for a Processqq}q(hh}hh{ubaubh<)q}q(hXAs it happens, a SimPy :class:`~simpy.events.Process` can be used like an event (technically, a process actually *is* an event). If you yield it, you are resumed once the process has finished. Imagine a car-wash simulation where cars enter the car-wash and wait for the washing process to finish. Or an airport simulation where passengers have to wait until a security check finishes.hhuhh!h#h?h%}q(h']h(]h)]h*]h,]uh.Kh/hh]q(h8XAs it happens, a SimPy qq}q(hXAs it happens, a SimPy hhubhE)q}q(hX:class:`~simpy.events.Process`qhhhh!h#hIh%}q(UreftypeXclasshKhLXsimpy.events.ProcessU refdomainXpyqh*]h)]U refexplicith']h(]h,]hNhOhPNhQhRuh.Kh]qhT)q}q(hhh%}q(h']h(]q(hYhXpy-classqeh)]h*]h,]uhhh]qh8XProcessqq}q(hUhhubah#h_ubaubh8X< can be used like an event (technically, a process actually qq}q(hX< can be used like an event (technically, a process actually hhubcdocutils.nodes emphasis q)q}q(hX*is*h%}q(h']h(]h)]h*]h,]uhhh]qh8Xisqq}q(hUhhubah#Uemphasisqubh8X  an event). If you yield it, you are resumed once the process has finished. Imagine a car-wash simulation where cars enter the car-wash and wait for the washing process to finish. Or an airport simulation where passengers have to wait until a security check finishes.qq}q(hX  an event). If you yield it, you are resumed once the process has finished. Imagine a car-wash simulation where cars enter the car-wash and wait for the washing process to finish. Or an airport simulation where passengers have to wait until a security check finishes.hhubeubh<)q}q(hXLets assume that the car from our last example magically became an electric vehicle. Electric vehicles usually take a lot of time charing their batteries after a trip. They have to wait until their battery is charged before they can start driving again.qhhuhh!h#h?h%}q(h']h(]h)]h*]h,]uh.Kh/hh]qh8XLets assume that the car from our last example magically became an electric vehicle. Electric vehicles usually take a lot of time charing their batteries after a trip. They have to wait until their battery is charged before they can start driving again.qq}q(hhhhubaubh<)q}q(hXWe can model this with an additional ``charge()`` process for our car. Therefore, we refactor our car to be a class with two process methods: ``run()`` (which is the original ``car()`` process function) and ``charge()``.hhuhh!h#h?h%}q(h']h(]h)]h*]h,]uh.Kh/hh]q(h8X%We can model this with an additional qq}q(hX%We can model this with an additional hhubhT)q}q(hX ``charge()``h%}q(h']h(]h)]h*]h,]uhhh]qh8Xcharge()qq}q(hUhhubah#h_ubh8X] process for our car. Therefore, we refactor our car to be a class with two process methods: qq}q(hX] process for our car. Therefore, we refactor our car to be a class with two process methods: hhubhT)q}q(hX ``run()``h%}q(h']h(]h)]h*]h,]uhhh]qh8Xrun()qŅq}q(hUhhubah#h_ubh8X (which is the original qȅq}q(hX (which is the original hhubhT)q}q(hX ``car()``h%}q(h']h(]h)]h*]h,]uhhh]qh8Xcar()qυq}q(hUhhubah#h_ubh8X process function) and q҅q}q(hX process function) and hhubhT)q}q(hX ``charge()``h%}q(h']h(]h)]h*]h,]uhhh]qh8Xcharge()qمq}q(hUhhubah#h_ubh8X.q}q(hX.hhubeubh<)q}q(hX/The ``run`` process is automatically started when ``Car`` is instantiated. A new ``charge`` process is started every time the vehicle starts parking. By yielding the :class:`~simpy.events.Process` instance that :meth:`Environment.process()` returns, the ``run`` process starts waiting for it to finish::hhuhh!h#h?h%}q(h']h(]h)]h*]h,]uh.Kh/hh]q(h8XThe q⅁q}q(hXThe hhubhT)q}q(hX``run``h%}q(h']h(]h)]h*]h,]uhhh]qh8Xrunq酁q}q(hUhhubah#h_ubh8X' process is automatically started when q셁q}q(hX' process is automatically started when hhubhT)q}q(hX``Car``h%}q(h']h(]h)]h*]h,]uhhh]qh8XCarqq}q(hUhhubah#h_ubh8X is instantiated. A new qq}q(hX is instantiated. A new hhubhT)q}q(hX ``charge``h%}q(h']h(]h)]h*]h,]uhhh]qh8Xchargeqq}q(hUhhubah#h_ubh8XK process is started every time the vehicle starts parking. By yielding the rr}r(hXK process is started every time the vehicle starts parking. By yielding the hhubhE)r}r(hX:class:`~simpy.events.Process`rhhhh!h#hIh%}r(UreftypeXclasshKhLXsimpy.events.ProcessU refdomainXpyrh*]h)]U refexplicith']h(]h,]hNhOhPNhQhRuh.Kh]rhT)r }r (hjh%}r (h']h(]r (hYjXpy-classr eh)]h*]h,]uhjh]rh8XProcessrr}r(hUhj ubah#h_ubaubh8X instance that rr}r(hX instance that hhubhE)r}r(hX:meth:`Environment.process()`rhhhh!h#hIh%}r(UreftypeXmethhKhLXEnvironment.processU refdomainXpyrh*]h)]U refexplicith']h(]h,]hNhOhPNhQhRuh.Kh]rhT)r}r(hjh%}r(h']h(]r(hYjXpy-methreh)]h*]h,]uhjh]r h8XEnvironment.process()r!r"}r#(hUhjubah#h_ubaubh8X returns, the r$r%}r&(hX returns, the hhubhT)r'}r((hX``run``h%}r)(h']h(]h)]h*]h,]uhhh]r*h8Xrunr+r,}r-(hUhj'ubah#h_ubh8X) process starts waiting for it to finish:r.r/}r0(hX) process starts waiting for it to finish:hhubeubcdocutils.nodes literal_block r1)r2}r3(hXi>>> class Car(object): ... def __init__(self, env): ... self.env = env ... # Start the run process everytime an instance is created. ... self.action = env.process(self.run()) ... ... def run(self): ... while True: ... print('Start parking and charging at %d' % self.env.now) ... charge_duration = 5 ... # We yield the process that process() returns ... # to wait for it to finish ... yield self.env.process(self.charge(charge_duration)) ... ... # The charge process has finished and ... # we can start driving again. ... print('Start driving at %d' % self.env.now) ... trip_duration = 2 ... yield self.env.timeout(trip_duration) ... ... def charge(self, duration): ... yield self.env.timeout(duration)hhuhh!h#U literal_blockr4h%}r5(U xml:spacer6Upreserver7h*]h)]h']h(]h,]uh.K%h/hh]r8h8Xi>>> class Car(object): ... def __init__(self, env): ... self.env = env ... # Start the run process everytime an instance is created. ... self.action = env.process(self.run()) ... ... def run(self): ... while True: ... print('Start parking and charging at %d' % self.env.now) ... charge_duration = 5 ... # We yield the process that process() returns ... # to wait for it to finish ... yield self.env.process(self.charge(charge_duration)) ... ... # The charge process has finished and ... # we can start driving again. ... print('Start driving at %d' % self.env.now) ... trip_duration = 2 ... yield self.env.timeout(trip_duration) ... ... def charge(self, duration): ... yield self.env.timeout(duration)r9r:}r;(hUhj2ubaubh<)r<}r=(hXStarting the simulation is straight forward again: We create an environment, one (or more) cars and finally call meth:`~Environment.simulate()`.hhuhh!h#h?h%}r>(h']h(]h)]h*]h,]uh.K>> import simpy >>> env = simpy.Environment() >>> car = Car(env) >>> env.run(until=15) Start parking and charging at 0 Start driving at 5 Start parking and charging at 7 Start driving at 12 Start parking and charging at 14hhuhh!h#j4h%}rP(j6j7h*]h)]h']h(]h,]uh.KAh/hh]rQh8X>>> import simpy >>> env = simpy.Environment() >>> car = Car(env) >>> env.run(until=15) Start parking and charging at 0 Start driving at 5 Start parking and charging at 7 Start driving at 12 Start parking and charging at 14rRrS}rT(hUhjNubaubeubh)rU}rV(hUhhhh!h#h$h%}rW(h']h(]h)]h*]rXhah,]rYhauh.KMh/hh]rZ(h1)r[}r\(hXInterrupting Another Processr]hjUhh!h#h5h%}r^(h']h(]h)]h*]h,]uh.KMh/hh]r_h8XInterrupting Another Processr`ra}rb(hj]hj[ubaubh<)rc}rd(hXImagine, you don't want to wait until your electric vehicle is fully charged but want to interrupt the charging process and just start driving instead.rehjUhh!h#h?h%}rf(h']h(]h)]h*]h,]uh.KOh/hh]rgh8XImagine, you don't want to wait until your electric vehicle is fully charged but want to interrupt the charging process and just start driving instead.rhri}rj(hjehjcubaubh<)rk}rl(hXqSimPy allows you to interrupt a running process by calling its :meth:`~simpy.events.Process.interrupt()` method::hjUhh!h#h?h%}rm(h']h(]h)]h*]h,]uh.KRh/hh]rn(h8X?SimPy allows you to interrupt a running process by calling its rorp}rq(hX?SimPy allows you to interrupt a running process by calling its hjkubhE)rr}rs(hX):meth:`~simpy.events.Process.interrupt()`rthjkhh!h#hIh%}ru(UreftypeXmethhKhLXsimpy.events.Process.interruptU refdomainXpyrvh*]h)]U refexplicith']h(]h,]hNhOhPNhQhRuh.KRh]rwhT)rx}ry(hjth%}rz(h']h(]r{(hYjvXpy-methr|eh)]h*]h,]uhjrh]r}h8X interrupt()r~r}r(hUhjxubah#h_ubaubh8X method:rr}r(hX method:hjkubeubj1)r}r(hXU>>> def driver(env, car): ... yield env.timeout(3) ... car.action.interrupt()hjUhh!h#j4h%}r(j6j7h*]h)]h']h(]h,]uh.KUh/hh]rh8XU>>> def driver(env, car): ... yield env.timeout(3) ... car.action.interrupt()rr}r(hUhjubaubh<)r}r(hXThe ``driver`` process has a reference to the car's ``action`` process. After waiting for 3 time steps, it interrupts that process.hjUhh!h#h?h%}r(h']h(]h)]h*]h,]uh.KYh/hh]r(h8XThe rr}r(hXThe hjubhT)r}r(hX ``driver``h%}r(h']h(]h)]h*]h,]uhjh]rh8Xdriverrr}r(hUhjubah#h_ubh8X& process has a reference to the car's rr}r(hX& process has a reference to the car's hjubhT)r}r(hX ``action``h%}r(h']h(]h)]h*]h,]uhjh]rh8Xactionrr}r(hUhjubah#h_ubh8XE process. After waiting for 3 time steps, it interrupts that process.rr}r(hXE process. After waiting for 3 time steps, it interrupts that process.hjubeubh<)r}r(hX Interrupts are thrown into process functions as :exc:`~simpy.events.Interrupt` exceptions that can (should) be handled by the interrupted process. The process can than decide what to do next (e.g., continuing to wait for the original event or yielding a new event)::hjUhh!h#h?h%}r(h']h(]h)]h*]h,]uh.K\h/hh]r(h8X0Interrupts are thrown into process functions as rr}r(hX0Interrupts are thrown into process functions as hjubhE)r}r(hX:exc:`~simpy.events.Interrupt`rhjhh!h#hIh%}r(UreftypeXexchKhLXsimpy.events.InterruptU refdomainXpyrh*]h)]U refexplicith']h(]h,]hNhOhPNhQhRuh.K\h]rhT)r}r(hjh%}r(h']h(]r(hYjXpy-excreh)]h*]h,]uhjh]rh8X Interruptrr}r(hUhjubah#h_ubaubh8X exceptions that can (should) be handled by the interrupted process. The process can than decide what to do next (e.g., continuing to wait for the original event or yielding a new event):rr}r(hX exceptions that can (should) be handled by the interrupted process. The process can than decide what to do next (e.g., continuing to wait for the original event or yielding a new event):hjubeubj1)r}r(hX>>> class Car(object): ... def __init__(self, env): ... self.env = env ... self.action = env.process(self.run()) ... ... def run(self): ... while True: ... print('Start parking and charging at %d' % self.env.now) ... charge_duration = 5 ... # We may get interrupted while charging the battery ... try: ... yield self.env.process(self.charge(charge_duration)) ... except simpy.Interrupt: ... # When we received an interrupt, we stop charing and ... # switch to the "driving" state ... print('Was interrupted. Hope, the battery is full enough ...') ... ... print('Start driving at %d' % self.env.now) ... trip_duration = 2 ... yield self.env.timeout(trip_duration) ... ... def charge(self, duration): ... yield self.env.timeout(duration)hjUhh!h#j4h%}r(j6j7h*]h)]h']h(]h,]uh.Kah/hh]rh8X>>> class Car(object): ... def __init__(self, env): ... self.env = env ... self.action = env.process(self.run()) ... ... def run(self): ... while True: ... print('Start parking and charging at %d' % self.env.now) ... charge_duration = 5 ... # We may get interrupted while charging the battery ... try: ... yield self.env.process(self.charge(charge_duration)) ... except simpy.Interrupt: ... # When we received an interrupt, we stop charing and ... # switch to the "driving" state ... print('Was interrupted. Hope, the battery is full enough ...') ... ... print('Start driving at %d' % self.env.now) ... trip_duration = 2 ... yield self.env.timeout(trip_duration) ... ... def charge(self, duration): ... yield self.env.timeout(duration)rr}r(hUhjubaubh<)r}r(hXWhen you compare the output of this simulation with the previous example, you'll notice that the car now starts driving at time ``3`` instead of ``5``::hjUhh!h#h?h%}r(h']h(]h)]h*]h,]uh.Kyh/hh]r(h8XWhen you compare the output of this simulation with the previous example, you'll notice that the car now starts driving at time rr}r(hXWhen you compare the output of this simulation with the previous example, you'll notice that the car now starts driving at time hjubhT)r}r(hX``3``h%}r(h']h(]h)]h*]h,]uhjh]rh8X3r}r(hUhjubah#h_ubh8X instead of rr}r(hX instead of hjubhT)r}r(hX``5``h%}r(h']h(]h)]h*]h,]uhjh]rh8X5r}r(hUhjubah#h_ubh8X:r}r(hX:hjubeubj1)r}r(hXH>>> env = simpy.Environment() >>> car = Car(env) >>> env.process(driver(env, car)) >>> env.run(until=15) Start parking and charging at 0 Was interrupted. Hope, the battery is full enough ... Start driving at 3 Start parking and charging at 5 Start driving at 10 Start parking and charging at 12hjUhh!h#j4h%}r(j6j7h*]h)]h']h(]h,]uh.K|h/hh]rh8XH>>> env = simpy.Environment() >>> car = Car(env) >>> env.process(driver(env, car)) >>> env.run(until=15) Start parking and charging at 0 Was interrupted. Hope, the battery is full enough ... Start driving at 3 Start parking and charging at 5 Start driving at 10 Start parking and charging at 12rr}r(hUhjubaubeubh)r}r(hUhhhh!h#h$h%}r(h']h(]h)]h*]rhah,]rhauh.Kh/hh]r(h1)r}r(hX What's Nextrhjhh!h#h5h%}r(h']h(]h)]h*]h,]uh.Kh/hh]rh8X What's Nextrr}r(hjhjubaubh<)r}r(hXWe just demonstrated two basic methods for process interactions---waiting for a process and interrupting a process. Take a look at the :doc:`../topical_guides/index` or the :class:`~simpy.events.Process` API reference for more details.hjhh!h#h?h%}r(h']h(]h)]h*]h,]uh.Kh/hh]r(h8XWe just demonstrated two basic methods for process interactions---waiting for a process and interrupting a process. Take a look at the rr}r(hXWe just demonstrated two basic methods for process interactions---waiting for a process and interrupting a process. Take a look at the hjubhE)r}r(hX:doc:`../topical_guides/index`rhjhh!h#hIh%}r(UreftypeXdocrhKhLX../topical_guides/indexU refdomainUh*]h)]U refexplicith']h(]h,]hNhOuh.Kh]rhT)r}r(hjh%}r(h']h(]r(hYjeh)]h*]h,]uhjh]rh8X../topical_guides/indexrr}r(hUhjubah#h_ubaubh8X or the rr }r (hX or the hjubhE)r }r (hX:class:`~simpy.events.Process`r hjhh!h#hIh%}r(UreftypeXclasshKhLXsimpy.events.ProcessU refdomainXpyrh*]h)]U refexplicith']h(]h,]hNhOhPNhQhRuh.Kh]rhT)r}r(hj h%}r(h']h(]r(hYjXpy-classreh)]h*]h,]uhj h]rh8XProcessrr}r(hUhjubah#h_ubaubh8X API reference for more details.rr}r(hX API reference for more details.hjubeubh<)r}r(hX`In the :doc:`next section ` we will cover the basic usage of shared resources.hjhh!h#h?h%}r(h']h(]h)]h*]h,]uh.Kh/hh]r (h8XIn the r!r"}r#(hXIn the hjubhE)r$}r%(hX&:doc:`next section `r&hjhh!h#hIh%}r'(UreftypeXdocr(hKhLXshared_resourcesU refdomainUh*]h)]U refexplicith']h(]h,]hNhOuh.Kh]r)hT)r*}r+(hj&h%}r,(h']h(]r-(hYj(eh)]h*]h,]uhj$h]r.h8X next sectionr/r0}r1(hUhj*ubah#h_ubaubh8X3 we will cover the basic usage of shared resources.r2r3}r4(hX3 we will cover the basic usage of shared resources.hjubeubeubeubahUU transformerr5NU footnote_refsr6}r7Urefnamesr8}r9Usymbol_footnotesr:]r;Uautofootnote_refsr<]r=Usymbol_footnote_refsr>]r?U citationsr@]rAh/hU current_linerBNUtransform_messagesrC]rDUreporterrENUid_startrFKU autofootnotesrG]rHU citation_refsrI}rJUindirect_targetsrK]rLUsettingsrM(cdocutils.frontend Values rNorO}rP(Ufootnote_backlinksrQKUrecord_dependenciesrRNU rfc_base_urlrSUhttp://tools.ietf.org/html/rTU tracebackrUUpep_referencesrVNUstrip_commentsrWNU toc_backlinksrXUentryrYU language_coderZUenr[U datestampr\NU report_levelr]KU _destinationr^NU halt_levelr_KU strip_classesr`Nh5NUerror_encoding_error_handlerraUbackslashreplacerbUdebugrcNUembed_stylesheetrdUoutput_encoding_error_handlerreUstrictrfU sectnum_xformrgKUdump_transformsrhNU docinfo_xformriKUwarning_streamrjNUpep_file_url_templaterkUpep-%04drlUexit_status_levelrmKUconfigrnNUstrict_visitorroNUcloak_email_addressesrpUtrim_footnote_reference_spacerqUenvrrNUdump_pseudo_xmlrsNUexpose_internalsrtNUsectsubtitle_xformruU source_linkrvNUrfc_referencesrwNUoutput_encodingrxUutf-8ryU source_urlrzNUinput_encodingr{U utf-8-sigr|U_disable_configr}NU id_prefixr~UU tab_widthrKUerror_encodingrUUTF-8rU_sourcerUU/var/build/user_builds/simpy/checkouts/3.0.5/docs/simpy_intro/process_interaction.rstrUgettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjfUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hhuhjUhhhjuUsubstitution_namesr}rh#h/h%}r(h']h*]h)]Usourceh!h(]h,]uU footnotesr]rUrefidsr}rub.PK.D%8hnn3simpy-3.0.5/.doctrees/about/release_process.doctreecdocutils.nodes document q)q}q(U nametypesq}q(XwheelqXrelease processqNXbuild and releaseqNXpypiq Xtickets for the next versionq X post releaseq NX wikipediaq X preparationsq NXdocumentation buildqX python wikiquUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hUwheelqhUrelease-processqhUbuild-and-releaseqh Upypiqh Utickets-for-the-next-versionqh U post-releaseqh U wikipediaqh U preparationsq hUdocumentation-buildq!hU python-wikiq"uUchildrenq#]q$cdocutils.nodes section q%)q&}q'(U rawsourceq(UUparentq)hUsourceq*cdocutils.nodes reprunicode q+XK/var/build/user_builds/simpy/checkouts/3.0.5/docs/about/release_process.rstq,q-}q.bUtagnameq/Usectionq0U attributesq1}q2(Udupnamesq3]Uclassesq4]Ubackrefsq5]Uidsq6]q7haUnamesq8]q9hauUlineq:KUdocumentq;hh#]q<(cdocutils.nodes title q=)q>}q?(h(XRelease Processq@h)h&h*h-h/UtitleqAh1}qB(h3]h4]h5]h6]h8]uh:Kh;hh#]qCcdocutils.nodes Text qDXRelease ProcessqEqF}qG(h(h@h)h>ubaubcdocutils.nodes paragraph qH)qI}qJ(h(XWThis process describes the steps to execute in order to release a new version of SimPy.qKh)h&h*h-h/U paragraphqLh1}qM(h3]h4]h5]h6]h8]uh:Kh;hh#]qNhDXWThis process describes the steps to execute in order to release a new version of SimPy.qOqP}qQ(h(hKh)hIubaubh%)qR}qS(h(Uh)h&h*h-h/h0h1}qT(h3]h4]h5]h6]qUh ah8]qVh auh:K h;hh#]qW(h=)qX}qY(h(X PreparationsqZh)hRh*h-h/hAh1}q[(h3]h4]h5]h6]h8]uh:K h;hh#]q\hDX Preparationsq]q^}q_(h(hZh)hXubaubcdocutils.nodes enumerated_list q`)qa}qb(h(Uh)hRh*h-h/Uenumerated_listqch1}qd(UsuffixqeU.h6]h5]h3]UprefixqfUh4]h8]UenumtypeqgUarabicqhuh:K h;hh#]qi(cdocutils.nodes list_item qj)qk}ql(h(XmClose all `tickets for the next version `_. h)hah*h-h/U list_itemqmh1}qn(h3]h4]h5]h6]h8]uh:Nh;hh#]qohH)qp}qq(h(XlClose all `tickets for the next version `_.h)hkh*h-h/hLh1}qr(h3]h4]h5]h6]h8]uh:K h#]qs(hDX Close all qtqu}qv(h(X Close all h)hpubcdocutils.nodes reference qw)qx}qy(h(Xa`tickets for the next version `_h1}qz(UnameXtickets for the next versionUrefuriq{X?https://bitbucket.org/simpy/simpy/issues?status=new&status=openq|h6]h5]h3]h4]h8]uh)hph#]q}hDXtickets for the next versionq~q}q(h(Uh)hxubah/U referencequbcdocutils.nodes target q)q}q(h(XB U referencedqKh)hph/Utargetqh1}q(Urefurih|h6]qhah5]h3]h4]h8]qh auh#]ubhDX.q}q(h(X.h)hpubeubaubhj)q}q(h(XUpdate the *minium* required versions of dependencies in :file:`setup.py`. Update the *exact* version of all entries in :file:`requirements.txt`. h)hah*h-h/hmh1}q(h3]h4]h5]h6]h8]uh:Nh;hh#]qhH)q}q(h(XUpdate the *minium* required versions of dependencies in :file:`setup.py`. Update the *exact* version of all entries in :file:`requirements.txt`.h)hh*h-h/hLh1}q(h3]h4]h5]h6]h8]uh:Kh#]q(hDX Update the qq}q(h(X Update the h)hubcdocutils.nodes emphasis q)q}q(h(X*minium*h1}q(h3]h4]h5]h6]h8]uh)hh#]qhDXminiumqq}q(h(Uh)hubah/UemphasisqubhDX& required versions of dependencies in qq}q(h(X& required versions of dependencies in h)hubcdocutils.nodes literal q)q}q(h(Uh1}q(h6]h5]h3]h4]qXfileqaUrolehh8]uh)hh#]qhDXsetup.pyqq}q(h(Xsetup.pyh)hubah/UliteralqubhDX . Update the qq}q(h(X . Update the h)hubh)q}q(h(X*exact*h1}q(h3]h4]h5]h6]h8]uh)hh#]qhDXexactqq}q(h(Uh)hubah/hubhDX version of all entries in qq}q(h(X version of all entries in h)hubh)q}q(h(Uh1}q(h6]h5]h3]h4]qXfileqaUrolehh8]uh)hh#]qhDXrequirements.txtqq}q(h(Xrequirements.txth)hubah/hubhDX.q}q(h(X.h)hubeubaubhj)q}q(h(XRun :command:`tox` from the project root. All tests for all supported versions must pass: .. code-block:: bash $ tox [...] ________ summary ________ py27: commands succeeded py32: commands succeeded py33: commands succeeded pypy: commands succeeded congratulations :) .. note:: Tox will use the :file:`requirements.txt` to setup the venvs, so make sure you've updated it! h)hah*Nh/hmh1}q(h3]h4]h5]h6]h8]uh:Nh;hh#]q(hH)q}q(h(XYRun :command:`tox` from the project root. All tests for all supported versions must pass:h)hh*h-h/hLh1}q(h3]h4]h5]h6]h8]uh:Kh#]q(hDXRun q΅q}q(h(XRun h)hubcdocutils.nodes strong q)q}q(h(X:command:`tox`h1}q(h3]h4]qUcommandqah5]h6]h8]uh)hh#]qhDXtoxq؅q}q(h(Uh)hubah/UstrongqubhDXG from the project root. All tests for all supported versions must pass:q܅q}q(h(XG from the project root. All tests for all supported versions must pass:h)hubeubcdocutils.nodes literal_block q)q}q(h(X$ tox [...] ________ summary ________ py27: commands succeeded py32: commands succeeded py33: commands succeeded pypy: commands succeeded congratulations :)h)hh*h-h/U literal_blockqh1}q(UlinenosqUlanguageqXbashU xml:spaceqUpreserveqh6]h5]h3]h4]h8]uh:Kh#]qhDX$ tox [...] ________ summary ________ py27: commands succeeded py32: commands succeeded py33: commands succeeded pypy: commands succeeded congratulations :)q酁q}q(h(Uh)hubaubcdocutils.nodes note q)q}q(h(X]Tox will use the :file:`requirements.txt` to setup the venvs, so make sure you've updated it!h1}q(h3]h4]h5]h6]h8]uh)hh#]qhH)q}q(h(X]Tox will use the :file:`requirements.txt` to setup the venvs, so make sure you've updated it!h)hh*h-h/hLh1}q(h3]h4]h5]h6]h8]uh:K"h#]q(hDXTox will use the qq}q(h(XTox will use the h)hubh)q}q(h(Uh1}q(h6]h5]h3]h4]qXfileqaUrolehh8]uh)hh#]qhDXrequirements.txtqq}r(h(Xrequirements.txth)hubah/hubhDX4 to setup the venvs, so make sure you've updated it!rr}r(h(X4 to setup the venvs, so make sure you've updated it!h)hubeubah/Unoterubeubhj)r}r(h(XBuild the docs (HTML is enough). Make sure there are no errors and undefined references. .. code-block:: bash $ cd docs/ $ make clean html $ cd .. h)hah*Nh/hmh1}r(h3]h4]h5]h6]h8]uh:Nh;hh#]r(hH)r }r (h(XXBuild the docs (HTML is enough). Make sure there are no errors and undefined references.r h)jh*h-h/hLh1}r (h3]h4]h5]h6]h8]uh:K%h#]r hDXXBuild the docs (HTML is enough). Make sure there are no errors and undefined references.rr}r(h(j h)j ubaubh)r}r(h(X$$ cd docs/ $ make clean html $ cd ..h)jh*h-h/hh1}r(hhXbashhhh6]h5]h3]h4]h8]uh:K(h#]rhDX$$ cd docs/ $ make clean html $ cd ..rr}r(h(Uh)jubaubeubhj)r}r(h(X8Check if all authors are listed in :file:`AUTHORS.txt`. h)hah*h-h/hmh1}r(h3]h4]h5]h6]h8]uh:Nh;hh#]rhH)r}r(h(X7Check if all authors are listed in :file:`AUTHORS.txt`.h)jh*h-h/hLh1}r(h3]h4]h5]h6]h8]uh:K.h#]r(hDX#Check if all authors are listed in r r!}r"(h(X#Check if all authors are listed in h)jubh)r#}r$(h(Uh1}r%(h6]h5]h3]h4]r&Xfiler'aUrolej'h8]uh)jh#]r(hDX AUTHORS.txtr)r*}r+(h(X AUTHORS.txth)j#ubah/hubhDX.r,}r-(h(X.h)jubeubaubhj)r.}r/(h(XUpdate the change logs (:file:`CHANGES.txt` and :file:`docs/about/history.rst`). Only keep changes for the current major release in :file:`CHANGES.txt` and reference the history page from there. h)hah*h-h/hmh1}r0(h3]h4]h5]h6]h8]uh:Nh;hh#]r1hH)r2}r3(h(XUpdate the change logs (:file:`CHANGES.txt` and :file:`docs/about/history.rst`). Only keep changes for the current major release in :file:`CHANGES.txt` and reference the history page from there.h)j.h*h-h/hLh1}r4(h3]h4]h5]h6]h8]uh:K0h#]r5(hDXUpdate the change logs (r6r7}r8(h(XUpdate the change logs (h)j2ubh)r9}r:(h(Uh1}r;(h6]h5]h3]h4]r<Xfiler=aUrolej=h8]uh)j2h#]r>hDX CHANGES.txtr?r@}rA(h(X CHANGES.txth)j9ubah/hubhDX and rBrC}rD(h(X and h)j2ubh)rE}rF(h(Uh1}rG(h6]h5]h3]h4]rHXfilerIaUrolejIh8]uh)j2h#]rJhDXdocs/about/history.rstrKrL}rM(h(Xdocs/about/history.rsth)jEubah/hubhDX6). Only keep changes for the current major release in rNrO}rP(h(X6). Only keep changes for the current major release in h)j2ubh)rQ}rR(h(Uh1}rS(h6]h5]h3]h4]rTXfilerUaUrolejUh8]uh)j2h#]rVhDX CHANGES.txtrWrX}rY(h(X CHANGES.txth)jQubah/hubhDX+ and reference the history page from there.rZr[}r\(h(X+ and reference the history page from there.h)j2ubeubaubhj)r]}r^(h(XfCommit all changes: .. code-block:: bash $ hg ci -m 'Updated change log for the upcoming release.' h)hah*Nh/hmh1}r_(h3]h4]h5]h6]h8]uh:Nh;hh#]r`(hH)ra}rb(h(XCommit all changes:rch)j]h*h-h/hLh1}rd(h3]h4]h5]h6]h8]uh:K4h#]rehDXCommit all changes:rfrg}rh(h(jch)jaubaubh)ri}rj(h(X9$ hg ci -m 'Updated change log for the upcoming release.'h)j]h*h-h/hh1}rk(hhXbashhhh6]h5]h3]h4]h8]uh:K6h#]rlhDX9$ hg ci -m 'Updated change log for the upcoming release.'rmrn}ro(h(Uh)jiubaubeubhj)rp}rq(h(XWrite a draft for the announcement mail with a list of changes, acknowledgements and installation instructions. Everyone in the team should agree with it. h)hah*h-h/hmh1}rr(h3]h4]h5]h6]h8]uh:Nh;hh#]rshH)rt}ru(h(XWrite a draft for the announcement mail with a list of changes, acknowledgements and installation instructions. Everyone in the team should agree with it.rvh)jph*h-h/hLh1}rw(h3]h4]h5]h6]h8]uh:K:h#]rxhDXWrite a draft for the announcement mail with a list of changes, acknowledgements and installation instructions. Everyone in the team should agree with it.ryrz}r{(h(jvh)jtubaubaubeubeubh%)r|}r}(h(Uh)h&h*h-h/h0h1}r~(h3]h4]h5]h6]rhah8]rhauh:K@h;hh#]r(h=)r}r(h(XBuild and releaserh)j|h*h-h/hAh1}r(h3]h4]h5]h6]h8]uh:K@h;hh#]rhDXBuild and releaserr}r(h(jh)jubaubh`)r}r(h(Uh)j|h*h-h/hch1}r(heU.h6]h5]h3]hfUh4]h8]hghhuh:KBh;hh#]r(hj)r}r(h(X.Test the release process. Build a source distribution and a `wheel `_ package and test them: .. code-block:: bash $ python setup.py sdist $ python setup.py bdist_wheel $ ls dist/ simpy-a.b.c-py2.py3-none-any.whl simpy-a.b.c.tar.gz Try installing them: .. code-block:: bash $ rm -rf /tmp/simpy-sdist # ensure clean state if ran repeatedly $ virtualenv /tmp/simpy-sdist $ /tmp/simpy-sdist/bin/pip install pytest $ /tmp/simpy-sdist/bin/pip install --no-index dist/simpy-a.b.c.tar.gz $ /tmp/simpy-sdist/bin/python >>> import simpy >>> simpy.__version__ # doctest: +SKIP 'a.b.c' >>> simpy.test() # doctest: +SKIP and .. code-block:: bash $ rm -rf /tmp/simpy-wheel # ensure clean state if ran repeatedly $ virtualenv /tmp/simpy-wheel $ /tmp/simpy-wheel/bin/pip install pytest $ /tmp/simpy-wheel/bin/pip install --use-wheel --no-index --find-links dist simpy $ /tmp/simpy-wheel/bin/python >>> import simpy # doctest: +SKIP >>> simpy.__version__ # doctest: +SKIP 'a.b.c' >>> simpy.test() # doctest: +SKIP h)jh*Nh/hmh1}r(h3]h4]h5]h6]h8]uh:Nh;hh#]r(hH)r}r(h(XTest the release process. Build a source distribution and a `wheel `_ package and test them:h)jh*h-h/hLh1}r(h3]h4]h5]h6]h8]uh:KBh#]r(hDX<Test the release process. Build a source distribution and a rr}r(h(X<Test the release process. Build a source distribution and a h)jubhw)r}r(h(X-`wheel `_h1}r(Unamehh{X"https://pypi.python.org/pypi/wheelrh6]h5]h3]h4]h8]uh)jh#]rhDXwheelrr}r(h(Uh)jubah/hubh)r}r(h(X% hKh)jh/hh1}r(Urefurijh6]rhah5]h3]h4]h8]rhauh#]ubhDX package and test them:rr}r(h(X package and test them:h)jubeubh)r}r(h(Xt$ python setup.py sdist $ python setup.py bdist_wheel $ ls dist/ simpy-a.b.c-py2.py3-none-any.whl simpy-a.b.c.tar.gzh)jh*h-h/hh1}r(hhXbashhhh6]h5]h3]h4]h8]uh:KEh#]rhDXt$ python setup.py sdist $ python setup.py bdist_wheel $ ls dist/ simpy-a.b.c-py2.py3-none-any.whl simpy-a.b.c.tar.gzrr}r(h(Uh)jubaubhH)r}r(h(XTry installing them:rh)jh*h-h/hLh1}r(h3]h4]h5]h6]h8]uh:KLh#]rhDXTry installing them:rr}r(h(jh)jubaubh)r}r(h(XQ$ rm -rf /tmp/simpy-sdist # ensure clean state if ran repeatedly $ virtualenv /tmp/simpy-sdist $ /tmp/simpy-sdist/bin/pip install pytest $ /tmp/simpy-sdist/bin/pip install --no-index dist/simpy-a.b.c.tar.gz $ /tmp/simpy-sdist/bin/python >>> import simpy >>> simpy.__version__ # doctest: +SKIP 'a.b.c' >>> simpy.test() # doctest: +SKIPh)jh*h-h/hh1}r(hhXbashhhh6]h5]h3]h4]h8]uh:KNh#]rhDXQ$ rm -rf /tmp/simpy-sdist # ensure clean state if ran repeatedly $ virtualenv /tmp/simpy-sdist $ /tmp/simpy-sdist/bin/pip install pytest $ /tmp/simpy-sdist/bin/pip install --no-index dist/simpy-a.b.c.tar.gz $ /tmp/simpy-sdist/bin/python >>> import simpy >>> simpy.__version__ # doctest: +SKIP 'a.b.c' >>> simpy.test() # doctest: +SKIPrr}r(h(Uh)jubaubhH)r}r(h(Xandrh)jh*h-h/hLh1}r(h3]h4]h5]h6]h8]uh:KZh#]rhDXandrr}r(h(jh)jubaubh)r}r(h(Xo$ rm -rf /tmp/simpy-wheel # ensure clean state if ran repeatedly $ virtualenv /tmp/simpy-wheel $ /tmp/simpy-wheel/bin/pip install pytest $ /tmp/simpy-wheel/bin/pip install --use-wheel --no-index --find-links dist simpy $ /tmp/simpy-wheel/bin/python >>> import simpy # doctest: +SKIP >>> simpy.__version__ # doctest: +SKIP 'a.b.c' >>> simpy.test() # doctest: +SKIPh)jh*h-h/hh1}r(hhXbashhhh6]h5]h3]h4]h8]uh:K\h#]rhDXo$ rm -rf /tmp/simpy-wheel # ensure clean state if ran repeatedly $ virtualenv /tmp/simpy-wheel $ /tmp/simpy-wheel/bin/pip install pytest $ /tmp/simpy-wheel/bin/pip install --use-wheel --no-index --find-links dist simpy $ /tmp/simpy-wheel/bin/python >>> import simpy # doctest: +SKIP >>> simpy.__version__ # doctest: +SKIP 'a.b.c' >>> simpy.test() # doctest: +SKIPrr}r(h(Uh)jubaubeubhj)r}r(h(X-Create or check your accounts for the `test server ` and `PyPI `_. Update your :file:`~/.pypirc` with your current credentials: .. code-block:: ini [distutils] index-servers = pypi test [test] repository = https://testpypi.python.org/pypi username = password = [pypi] repository = http://pypi.python.org/pypi username = password = h)jh*Nh/hmh1}r(h3]h4]h5]h6]h8]uh:Nh;hh#]r(hH)r}r(h(XCreate or check your accounts for the `test server ` and `PyPI `_. Update your :file:`~/.pypirc` with your current credentials:h)jh*h-h/hLh1}r(h3]h4]h5]h6]h8]uh:Khh#]r(hDX&Create or check your accounts for the rr}r(h(X&Create or check your accounts for the h)jubcdocutils.nodes title_reference r)r}r(h(X0`test server `h1}r(h3]h4]h5]h6]h8]uh)jh#]rhDX.test server rr}r(h(Uh)jubah/Utitle_referencerubhDX and rr}r(h(X and h)jubhw)r}r(h(X&`PyPI `_h1}r(UnameXPyPIh{Xhttps://pypi.python.org/pypirh6]h5]h3]h4]h8]uh)jh#]rhDXPyPIrr}r(h(Uh)jubah/hubh)r}r(h(X hKh)jh/hh1}r(Urefurijh6]rhah5]h3]h4]h8]rh auh#]ubhDX. Update your rr}r(h(X. Update your h)jubh)r}r(h(Uh1}r(h6]h5]h3]h4]rXfileraUrolejh8]uh)jh#]rhDX ~/.pypircrr}r(h(X ~/.pypirch)jubah/hubhDX with your current credentials:rr}r(h(X with your current credentials:h)jubeubh)r}r(h(XJ[distutils] index-servers = pypi test [test] repository = https://testpypi.python.org/pypi username = password = [pypi] repository = http://pypi.python.org/pypi username = password = h)jh*h-h/hh1}r(hhXinihhh6]h5]h3]h4]h8]uh:Kmh#]rhDXJ[distutils] index-servers = pypi test [test] repository = https://testpypi.python.org/pypi username = password = [pypi] repository = http://pypi.python.org/pypi username = password = rr}r(h(Uh)jubaubeubhj)r}r (h(XRegister SimPy with the test server and upload the distributions: .. code-block:: bash $ python setup.py register -r test $ python setup.py sdist upload -r test $ python setup.py bdist_wheel upload -r test h)jh*Nh/hmh1}r (h3]h4]h5]h6]h8]uh:Nh;hh#]r (hH)r }r (h(XARegister SimPy with the test server and upload the distributions:rh)jh*h-h/hLh1}r(h3]h4]h5]h6]h8]uh:K~h#]rhDXARegister SimPy with the test server and upload the distributions:rr}r(h(jh)j ubaubh)r}r(h(Xv$ python setup.py register -r test $ python setup.py sdist upload -r test $ python setup.py bdist_wheel upload -r testh)jh*h-h/hh1}r(hhXbashhhh6]h5]h3]h4]h8]uh:Kh#]rhDXv$ python setup.py register -r test $ python setup.py sdist upload -r test $ python setup.py bdist_wheel upload -r testrr}r(h(Uh)jubaubeubhj)r}r(h(XTCheck if the package is displayed correctly: https://testpypi.python.org/pypi/simpy h)jh*h-h/hmh1}r(h3]h4]h5]h6]h8]uh:Nh;hh#]rhH)r}r (h(XSCheck if the package is displayed correctly: https://testpypi.python.org/pypi/simpyh)jh*h-h/hLh1}r!(h3]h4]h5]h6]h8]uh:Kh#]r"(hDX-Check if the package is displayed correctly: r#r$}r%(h(X-Check if the package is displayed correctly: h)jubhw)r&}r'(h(X&https://testpypi.python.org/pypi/simpyr(h1}r)(Urefurij(h6]h5]h3]h4]h8]uh)jh#]r*hDX&https://testpypi.python.org/pypi/simpyr+r,}r-(h(Uh)j&ubah/hubeubaubhj)r.}r/(h(XmTest the installation again: .. code-block:: bash $ pip install -i https://testpypi.python.org/pypi simpy h)jh*Nh/hmh1}r0(h3]h4]h5]h6]h8]uh:Nh;hh#]r1(hH)r2}r3(h(XTest the installation again:r4h)j.h*h-h/hLh1}r5(h3]h4]h5]h6]h8]uh:Kh#]r6hDXTest the installation again:r7r8}r9(h(j4h)j2ubaubh)r:}r;(h(X7$ pip install -i https://testpypi.python.org/pypi simpyh)j.h*h-h/hh1}r<(hhXbashhhh6]h5]h3]h4]h8]uh:Kh#]r=hDX7$ pip install -i https://testpypi.python.org/pypi simpyr>r?}r@(h(Uh)j:ubaubeubhj)rA}rB(h(XUpdate the version number in :file:`simpy/__init__.py`, commit and create a tag: .. code-block:: bash $ hg ci -m 'Bump version from a.b.c to x.y.z' $ hg tag x.y.z $ hg push ssh://hg@bitbucket.org/simpy/simpy h)jh*Nh/hmh1}rC(h3]h4]h5]h6]h8]uh:Nh;hh#]rD(hH)rE}rF(h(XPUpdate the version number in :file:`simpy/__init__.py`, commit and create a tag:h)jAh*h-h/hLh1}rG(h3]h4]h5]h6]h8]uh:Kh#]rH(hDXUpdate the version number in rIrJ}rK(h(XUpdate the version number in h)jEubh)rL}rM(h(Uh1}rN(h6]h5]h3]h4]rOXfilerPaUrolejPh8]uh)jEh#]rQhDXsimpy/__init__.pyrRrS}rT(h(Xsimpy/__init__.pyh)jLubah/hubhDX, commit and create a tag:rUrV}rW(h(X, commit and create a tag:h)jEubeubh)rX}rY(h(Xi$ hg ci -m 'Bump version from a.b.c to x.y.z' $ hg tag x.y.z $ hg push ssh://hg@bitbucket.org/simpy/simpyh)jAh*h-h/hh1}rZ(hhXbashhhh6]h5]h3]h4]h8]uh:Kh#]r[hDXi$ hg ci -m 'Bump version from a.b.c to x.y.z' $ hg tag x.y.z $ hg push ssh://hg@bitbucket.org/simpy/simpyr\r]}r^(h(Uh)jXubaubeubhj)r_}r`(h(XFinally upload the package to PyPI and test its installation one last time: .. code-block:: bash $ python setup.py register $ python setup.py sdist upload $ python setup.py bdist_wheel upload $ pip install simpy h)jh*Nh/hmh1}ra(h3]h4]h5]h6]h8]uh:Nh;hh#]rb(hH)rc}rd(h(XKFinally upload the package to PyPI and test its installation one last time:reh)j_h*h-h/hLh1}rf(h3]h4]h5]h6]h8]uh:Kh#]rghDXKFinally upload the package to PyPI and test its installation one last time:rhri}rj(h(jeh)jcubaubh)rk}rl(h(Xr$ python setup.py register $ python setup.py sdist upload $ python setup.py bdist_wheel upload $ pip install simpyh)j_h*h-h/hh1}rm(hhXbashhhh6]h5]h3]h4]h8]uh:Kh#]rnhDXr$ python setup.py register $ python setup.py sdist upload $ python setup.py bdist_wheel upload $ pip install simpyrorp}rq(h(Uh)jkubaubeubhj)rr}rs(h(XPCheck if the package is displayed correctly: https://pypi.python.org/pypi/simpy h)jh*h-h/hmh1}rt(h3]h4]h5]h6]h8]uh:Nh;hh#]ruhH)rv}rw(h(XOCheck if the package is displayed correctly: https://pypi.python.org/pypi/simpyh)jrh*h-h/hLh1}rx(h3]h4]h5]h6]h8]uh:Kh#]ry(hDX-Check if the package is displayed correctly: rzr{}r|(h(X-Check if the package is displayed correctly: h)jvubhw)r}}r~(h(X"https://pypi.python.org/pypi/simpyrh1}r(Urefurijh6]h5]h3]h4]h8]uh)jvh#]rhDX"https://pypi.python.org/pypi/simpyrr}r(h(Uh)j}ubah/hubeubaubhj)r}r(h(XnActivate the `documentation build `_ for the new version. h)jh*h-h/hmh1}r(h3]h4]h5]h6]h8]uh:Nh;hh#]rhH)r}r(h(XlActivate the `documentation build `_ for the new version.h)jh*h-h/hLh1}r(h3]h4]h5]h6]h8]uh:Kh#]r(hDX Activate the rr}r(h(X Activate the h)jubhw)r}r(h(XJ`documentation build `_h1}r(UnameXdocumentation buildh{X1https://readthedocs.org/dashboard/simpy/versions/rh6]h5]h3]h4]h8]uh)jh#]rhDXdocumentation buildrr}r(h(Uh)jubah/hubh)r}r(h(X4 hKh)jh/hh1}r(Urefurijh6]rh!ah5]h3]h4]h8]rhauh#]ubhDX for the new version.rr}r(h(X for the new version.h)jubeubaubeubeubh%)r}r(h(Uh)h&h*h-h/h0h1}r(h3]h4]h5]h6]rhah8]rh auh:Kh;hh#]r(h=)r}r(h(X Post releaserh)jh*h-h/hAh1}r(h3]h4]h5]h6]h8]uh:Kh;hh#]rhDX Post releaserr}r(h(jh)jubaubh`)r}r(h(Uh)jh*h-h/hch1}r(heU.h6]h5]h3]hfUh4]h8]hghhuh:Kh;hh#]r(hj)r}r(h(XDSend the prepared email to the mailing list and post it on Google+. h)jh*h-h/hmh1}r(h3]h4]h5]h6]h8]uh:Nh;hh#]rhH)r}r(h(XCSend the prepared email to the mailing list and post it on Google+.rh)jh*h-h/hLh1}r(h3]h4]h5]h6]h8]uh:Kh#]rhDXCSend the prepared email to the mailing list and post it on Google+.rr}r(h(jh)jubaubaubhj)r}r(h(XBUpdate `Wikipedia `_ entries. h)jh*h-h/hmh1}r(h3]h4]h5]h6]h8]uh:Nh;hh#]rhH)r}r(h(XAUpdate `Wikipedia `_ entries.h)jh*h-h/hLh1}r(h3]h4]h5]h6]h8]uh:Kh#]r(hDXUpdate rr}r(h(XUpdate h)jubhw)r}r(h(X1`Wikipedia `_h1}r(UnameX Wikipediah{X"http://en.wikipedia.org/wiki/SimPyrh6]h5]h3]h4]h8]uh)jh#]rhDX Wikipediarr}r(h(Uh)jubah/hubh)r}r(h(X% hKh)jh/hh1}r(Urefurijh6]rhah5]h3]h4]h8]rh auh#]ubhDX entries.rr}r(h(X entries.h)jubeubaubhj)r}r(h(XNUpdate `Python Wiki `_ h)jh*h-h/hmh1}r(h3]h4]h5]h6]h8]uh:Nh;hh#]rhH)r}r(h(XMUpdate `Python Wiki `_h)jh*h-h/hLh1}r(h3]h4]h5]h6]h8]uh:Kh#]r(hDXUpdate rr}r(h(XUpdate h)jubhw)r}r(h(XF`Python Wiki `_h1}r(UnameX Python Wikih{X5https://wiki.python.org/moin/UsefulModules#Scientificrh6]h5]h3]h4]h8]uh)jh#]rhDX Python Wikirr}r(h(Uh)jubah/hubh)r}r(h(X8 hKh)jh/hh1}r(Urefurijh6]rh"ah5]h3]h4]h8]rhauh#]ubeubaubhj)r}r(h(X:Post something to Planet Python (e.g., via Stefan's blog).rh)jh*h-h/hmh1}r(h3]h4]h5]h6]h8]uh:Nh;hh#]rhH)r}r(h(jh)jh*h-h/hLh1}r(h3]h4]h5]h6]h8]uh:Kh#]rhDX:Post something to Planet Python (e.g., via Stefan's blog).rr}r(h(jh)jubaubaubeubeubeubah(UU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]r h;hU current_liner NUtransform_messagesr ]r Ureporterr NUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksr Uentryr!U language_coder"Uenr#U datestampr$NU report_levelr%KU _destinationr&NU halt_levelr'KU strip_classesr(NhANUerror_encoding_error_handlerr)Ubackslashreplacer*Udebugr+NUembed_stylesheetr,Uoutput_encoding_error_handlerr-Ustrictr.U sectnum_xformr/KUdump_transformsr0NU docinfo_xformr1KUwarning_streamr2NUpep_file_url_templater3Upep-%04dr4Uexit_status_levelr5KUconfigr6NUstrict_visitorr7NUcloak_email_addressesr8Utrim_footnote_reference_spacer9Uenvr:NUdump_pseudo_xmlr;NUexpose_internalsr<NUsectsubtitle_xformr=U source_linkr>NUrfc_referencesr?NUoutput_encodingr@Uutf-8rAU source_urlrBNUinput_encodingrCU utf-8-sigrDU_disable_configrENU id_prefixrFUU tab_widthrGKUerror_encodingrHUUTF-8rIU_sourcerJUK/var/build/user_builds/simpy/checkouts/3.0.5/docs/about/release_process.rstrKUgettext_compactrLU generatorrMNUdump_internalsrNNU smart_quotesrOU pep_base_urlrPUhttp://www.python.org/dev/peps/rQUsyntax_highlightrRUlongrSUinput_encoding_error_handlerrTj.Uauto_id_prefixrUUidrVUdoctitle_xformrWUstrip_elements_with_classesrXNU _config_filesrY]Ufile_insertion_enabledrZU raw_enabledr[KU dump_settingsr\NubUsymbol_footnote_startr]KUidsr^}r_(hjh"jhjh!jhjh hRhh&hj|hjhhuUsubstitution_namesr`}rah/h;h1}rb(h3]h6]h5]Usourceh-h4]h8]uU footnotesrc]rdUrefidsre}rfub.PK.DI7LL4simpy-3.0.5/.doctrees/about/acknowledgements.doctreecdocutils.nodes document q)q}q(U nametypesq}qXacknowledgmentsqNsUsubstitution_defsq}qUparse_messagesq ]q Ucurrent_sourceq NU decorationq NUautofootnote_startq KUnameidsq}qhUacknowledgmentsqsUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqcdocutils.nodes reprunicode qXL/var/build/user_builds/simpy/checkouts/3.0.5/docs/about/acknowledgements.rstqq}qbUtagnameqUsectionqU attributesq}q (Udupnamesq!]Uclassesq"]Ubackrefsq#]Uidsq$]q%haUnamesq&]q'hauUlineq(KUdocumentq)hh]q*(cdocutils.nodes title q+)q,}q-(hXAcknowledgmentsq.hhhhhUtitleq/h}q0(h!]h"]h#]h$]h&]uh(Kh)hh]q1cdocutils.nodes Text q2XAcknowledgmentsq3q4}q5(hh.hh,ubaubcdocutils.nodes paragraph q6)q7}q8(hXcSimPy 2 has been primarily developed by Stefan Scherfke and Ontje Lünsdorf, starting from SimPy 1.9. Their work has resulted in a most elegant combination of an object oriented API with the existing API, maintaining full backward compatibility. It has been quite easy to integrate their product into the existing SimPy code and documentation environment.q9hhhhhU paragraphq:h}q;(h!]h"]h#]h$]h&]uh(Kh)hh]q}q?(hh9hh7ubaubh6)q@}qA(hXDThanks, guys, for this great job! **SimPy 2.0 is dedicated to you!**qBhhhhhh:h}qC(h!]h"]h#]h$]h&]uh(K h)hh]qD(h2X"Thanks, guys, for this great job! qEqF}qG(hX"Thanks, guys, for this great job! hh@ubcdocutils.nodes strong qH)qI}qJ(hX"**SimPy 2.0 is dedicated to you!**h}qK(h!]h"]h#]h$]h&]uhh@h]qLh2XSimPy 2.0 is dedicated to you!qMqN}qO(hUhhIubahUstrongqPubeubh6)qQ}qR(hXSimPy was originally created by Klaus Müller and Tony Vignaux. They pushed its development for several years and built the Simpy community. Without them, there would be no SimPy 3.qShhhhhh:h}qT(h!]h"]h#]h$]h&]uh(K h)hh]qUh2XSimPy was originally created by Klaus Müller and Tony Vignaux. They pushed its development for several years and built the Simpy community. Without them, there would be no SimPy 3.qVqW}qX(hhShhQubaubh6)qY}qZ(hXDThanks, guys, for this great job! **SimPy 3.0 is dedicated to you!**q[hhhhhh:h}q\(h!]h"]h#]h$]h&]uh(Kh)hh]q](h2X"Thanks, guys, for this great job! q^q_}q`(hX"Thanks, guys, for this great job! hhYubhH)qa}qb(hX"**SimPy 3.0 is dedicated to you!**h}qc(h!]h"]h#]h$]h&]uhhYh]qdh2XSimPy 3.0 is dedicated to you!qeqf}qg(hUhhaubahhPubeubh6)qh}qi(hXnThe many contributions of the SimPy user and developer communities are of course also gratefully acknowledged.qjhhhhhh:h}qk(h!]h"]h#]h$]h&]uh(Kh)hh]qlh2XnThe many contributions of the SimPy user and developer communities are of course also gratefully acknowledged.qmqn}qo(hhjhhhubaubeubahUU transformerqpNU footnote_refsqq}qrUrefnamesqs}qtUsymbol_footnotesqu]qvUautofootnote_refsqw]qxUsymbol_footnote_refsqy]qzU citationsq{]q|h)hU current_lineq}NUtransform_messagesq~]qUreporterqNUid_startqKU autofootnotesq]qU citation_refsq}qUindirect_targetsq]qUsettingsq(cdocutils.frontend Values qoq}q(Ufootnote_backlinksqKUrecord_dependenciesqNU rfc_base_urlqUhttp://tools.ietf.org/html/qU tracebackqUpep_referencesqNUstrip_commentsqNU toc_backlinksqUentryqU language_codeqUenqU datestampqNU report_levelqKU _destinationqNU halt_levelqKU strip_classesqNh/NUerror_encoding_error_handlerqUbackslashreplaceqUdebugqNUembed_stylesheetqUoutput_encoding_error_handlerqUstrictqU sectnum_xformqKUdump_transformsqNU docinfo_xformqKUwarning_streamqNUpep_file_url_templateqUpep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUL/var/build/user_builds/simpy/checkouts/3.0.5/docs/about/acknowledgements.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesq‰U pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhUauto_id_prefixqUidqUdoctitle_xformqʉUstrip_elements_with_classesqNU _config_filesq]Ufile_insertion_enabledq͈U raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}qhhsUsubstitution_namesq}qhh)h}q(h!]h$]h#]Usourcehh"]h&]uU footnotesq]qUrefidsq}qub.PK.Dډ )simpy-3.0.5/.doctrees/about/index.doctreecdocutils.nodes document q)q}q(U nametypesq}qX about simpyqNsUsubstitution_defsq}qUparse_messagesq ]q Ucurrent_sourceq NU decorationq NUautofootnote_startq KUnameidsq}qhU about-simpyqsUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqcdocutils.nodes reprunicode qXA/var/build/user_builds/simpy/checkouts/3.0.5/docs/about/index.rstqq}qbUtagnameqUsectionqU attributesq}q (Udupnamesq!]Uclassesq"]Ubackrefsq#]Uidsq$]q%haUnamesq&]q'hauUlineq(KUdocumentq)hh]q*(cdocutils.nodes title q+)q,}q-(hX About SimPyq.hhhhhUtitleq/h}q0(h!]h"]h#]h$]h&]uh(Kh)hh]q1cdocutils.nodes Text q2X About SimPyq3q4}q5(hh.hh,ubaubcdocutils.nodes paragraph q6)q7}q8(hXThis sections is all about the non-technical stuff. How did SimPy evolve? Who was responsible for it? And what the heck were they tinking when they made it?q9hhhhhU paragraphq:h}q;(h!]h"]h#]h$]h&]uh(Kh)hh]q}q?(hh9hh7ubaubcdocutils.nodes compound q@)qA}qB(hUhhhhhUcompoundqCh}qD(h!]h"]qEUtoctree-wrapperqFah#]h$]h&]uh(Nh)hh]qGcsphinx.addnodes toctree qH)qI}qJ(hUhhAhhhUtoctreeqKh}qL(UnumberedqMKU includehiddenqNhX about/indexqOU titlesonlyqPUglobqQh$]h#]h!]h"]h&]UentriesqR]qS(NX about/historyqTqUNXabout/acknowledgementsqVqWNX about/portsqXqYNXabout/defense_of_designqZq[NXabout/release_processq\q]NX about/licenseq^q_eUhiddenq`U includefilesqa]qb(hThVhXhZh\h^eUmaxdepthqcKuh(K h]ubaubeubahUU transformerqdNU footnote_refsqe}qfUrefnamesqg}qhUsymbol_footnotesqi]qjUautofootnote_refsqk]qlUsymbol_footnote_refsqm]qnU citationsqo]qph)hU current_lineqqNUtransform_messagesqr]qsUreporterqtNUid_startquKU autofootnotesqv]qwU citation_refsqx}qyUindirect_targetsqz]q{Usettingsq|(cdocutils.frontend Values q}oq~}q(Ufootnote_backlinksqKUrecord_dependenciesqNU rfc_base_urlqUhttp://tools.ietf.org/html/qU tracebackqUpep_referencesqNUstrip_commentsqNU toc_backlinksqUentryqU language_codeqUenqU datestampqNU report_levelqKU _destinationqNU halt_levelqKU strip_classesqNh/NUerror_encoding_error_handlerqUbackslashreplaceqUdebugqNUembed_stylesheetqUoutput_encoding_error_handlerqUstrictqU sectnum_xformqKUdump_transformsqNU docinfo_xformqKUwarning_streamqNUpep_file_url_templateqUpep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUA/var/build/user_builds/simpy/checkouts/3.0.5/docs/about/index.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]Ufile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}qhhsUsubstitution_namesq}qhh)h}q(h!]h$]h#]Usourcehh"]h&]uU footnotesq]qUrefidsq}qub.PK.D,>RR5simpy-3.0.5/.doctrees/about/defense_of_design.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X changes and decisions in simpy 3qNXpysideqX0creating events via the environment or resourcesqNXchanges in simpy 2q NX matplotlibq Xoriginal design of simpy 1q NXno more sub-classing of processq NXdefense of designq NX processes live in an environmentqNXstronger focus on eventsqNuUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hU changes-and-decisions-in-simpy-3qhUpysideqhU0creating-events-via-the-environment-or-resourcesqh Uchanges-in-simpy-2qh U matplotlibqh Uoriginal-design-of-simpy-1qh Uno-more-sub-classing-of-processqh Udefense-of-designq hU processes-live-in-an-environmentq!hUstronger-focus-on-eventsq"uUchildrenq#]q$cdocutils.nodes section q%)q&}q'(U rawsourceq(UUparentq)hUsourceq*cdocutils.nodes reprunicode q+XM/var/build/user_builds/simpy/checkouts/3.0.5/docs/about/defense_of_design.rstq,q-}q.bUtagnameq/Usectionq0U attributesq1}q2(Udupnamesq3]Uclassesq4]Ubackrefsq5]Uidsq6]q7h aUnamesq8]q9h auUlineq:KUdocumentq;hh#]q<(cdocutils.nodes title q=)q>}q?(h(XDefense of Designq@h)h&h*h-h/UtitleqAh1}qB(h3]h4]h5]h6]h8]uh:Kh;hh#]qCcdocutils.nodes Text qDXDefense of DesignqEqF}qG(h(h@h)h>ubaubcdocutils.nodes paragraph qH)qI}qJ(h(X`This document explains why SimPy is designed the way it is and how its design evolved over time.qKh)h&h*h-h/U paragraphqLh1}qM(h3]h4]h5]h6]h8]uh:Kh;hh#]qNhDX`This document explains why SimPy is designed the way it is and how its design evolved over time.qOqP}qQ(h(hKh)hIubaubh%)qR}qS(h(Uh)h&h*h-h/h0h1}qT(h3]h4]h5]h6]qUhah8]qVh auh:K h;hh#]qW(h=)qX}qY(h(XOriginal Design of SimPy 1qZh)hRh*h-h/hAh1}q[(h3]h4]h5]h6]h8]uh:K h;hh#]q\hDXOriginal Design of SimPy 1q]q^}q_(h(hZh)hXubaubhH)q`}qa(h(XSimPy 1 was heavily inspired by *Simula 67* and *Simscript*. The basic entity of the framework was a process. A process described a temporal sequence of actions.h)hRh*h-h/hLh1}qb(h3]h4]h5]h6]h8]uh:K h;hh#]qc(hDX SimPy 1 was heavily inspired by qdqe}qf(h(X SimPy 1 was heavily inspired by h)h`ubcdocutils.nodes emphasis qg)qh}qi(h(X *Simula 67*h1}qj(h3]h4]h5]h6]h8]uh)h`h#]qkhDX Simula 67qlqm}qn(h(Uh)hhubah/UemphasisqoubhDX and qpqq}qr(h(X and h)h`ubhg)qs}qt(h(X *Simscript*h1}qu(h3]h4]h5]h6]h8]uh)h`h#]qvhDX Simscriptqwqx}qy(h(Uh)hsubah/houbhDXf. The basic entity of the framework was a process. A process described a temporal sequence of actions.qzq{}q|(h(Xf. The basic entity of the framework was a process. A process described a temporal sequence of actions.h)h`ubeubhH)q}}q~(h(XIn SimPy 1, you implemented a process by sub-classing ``Process``. The instance of such a subclass carried both, process and simulation internal information, whereat the latter wasn't of any use to the process itself. The sequence of actions of the process was specified in a method of the subclass, called the *process execution method* (or PEM in short). A PEM interacted with the simulation by yielding one of several keywords defined in the simulation package.h)hRh*h-h/hLh1}q(h3]h4]h5]h6]h8]uh:Kh;hh#]q(hDX6In SimPy 1, you implemented a process by sub-classing qq}q(h(X6In SimPy 1, you implemented a process by sub-classing h)h}ubcdocutils.nodes literal q)q}q(h(X ``Process``h1}q(h3]h4]h5]h6]h8]uh)h}h#]qhDXProcessqq}q(h(Uh)hubah/UliteralqubhDX. The instance of such a subclass carried both, process and simulation internal information, whereat the latter wasn't of any use to the process itself. The sequence of actions of the process was specified in a method of the subclass, called the qq}q(h(X. The instance of such a subclass carried both, process and simulation internal information, whereat the latter wasn't of any use to the process itself. The sequence of actions of the process was specified in a method of the subclass, called the h)h}ubhg)q}q(h(X*process execution method*h1}q(h3]h4]h5]h6]h8]uh)h}h#]qhDXprocess execution methodqq}q(h(Uh)hubah/houbhDX (or PEM in short). A PEM interacted with the simulation by yielding one of several keywords defined in the simulation package.qq}q(h(X (or PEM in short). A PEM interacted with the simulation by yielding one of several keywords defined in the simulation package.h)h}ubeubhH)q}q(h(X}The simulation itself was executed via module level functions. The simulation state was stored in the global scope. This made it very easy to implement and execute a simulation (despite from heaving to inherit from *Process* and instantianting the processes before starting their PEMs). However, having all simulation state global makes it hard to parallelize multiple simulations.h)hRh*h-h/hLh1}q(h3]h4]h5]h6]h8]uh:Kh;hh#]q(hDXThe simulation itself was executed via module level functions. The simulation state was stored in the global scope. This made it very easy to implement and execute a simulation (despite from heaving to inherit from qq}q(h(XThe simulation itself was executed via module level functions. The simulation state was stored in the global scope. This made it very easy to implement and execute a simulation (despite from heaving to inherit from h)hubhg)q}q(h(X *Process*h1}q(h3]h4]h5]h6]h8]uh)hh#]qhDXProcessqq}q(h(Uh)hubah/houbhDX and instantianting the processes before starting their PEMs). However, having all simulation state global makes it hard to parallelize multiple simulations.qq}q(h(X and instantianting the processes before starting their PEMs). However, having all simulation state global makes it hard to parallelize multiple simulations.h)hubeubhH)q}q(h(XSimPy 1 also followed the "batteries included" approach, providing shared resources, monitoring, plotting, GUIs and multiple types of simulations ("normal", real-time, manual stepping, with tracing).qh)hRh*h-h/hLh1}q(h3]h4]h5]h6]h8]uh:Kh;hh#]qhDXSimPy 1 also followed the "batteries included" approach, providing shared resources, monitoring, plotting, GUIs and multiple types of simulations ("normal", real-time, manual stepping, with tracing).qq}q(h(hh)hubaubhH)q}q(h(XZThe following code fragment shows how a simple simulation could be implemented in SimPy 1:qh)hRh*h-h/hLh1}q(h3]h4]h5]h6]h8]uh:K"h;hh#]qhDXZThe following code fragment shows how a simple simulation could be implemented in SimPy 1:qq}q(h(hh)hubaubcdocutils.nodes literal_block q)q}q(h(Xwfrom SimPy.Simulation import Process, hold, initialize, activate, simulate class MyProcess(Process): def pem(self, repeat): for i in range(repeat): yield hold, self, 1 initialize() proc = MyProcess() activate(proc, proc.pem(3)) simulate(until=10) sim = Simulation() proc = MyProcess(sim=sim) sim.activate(proc, proc.pem(3)) sim.simulate(until=10)h)hRh*h-h/U literal_blockqh1}q(UlinenosqUlanguageqXpythonU xml:spaceqUpreserveqh6]h5]h3]h4]h8]uh:K%h;hh#]qhDXwfrom SimPy.Simulation import Process, hold, initialize, activate, simulate class MyProcess(Process): def pem(self, repeat): for i in range(repeat): yield hold, self, 1 initialize() proc = MyProcess() activate(proc, proc.pem(3)) simulate(until=10) sim = Simulation() proc = MyProcess(sim=sim) sim.activate(proc, proc.pem(3)) sim.simulate(until=10)qŅq}q(h(Uh)hubaubeubh%)q}q(h(Uh)h&h*h-h/h0h1}q(h3]h4]h5]h6]qhah8]qh auh:Kh;hh#]q(hDXSimpy 2 mostly sticked with Simpy 1's design, but added an object orient API for the execution of simulations, allowing them to be executed in parallel. Since processes and the simulation state were so closely coupled, you now needed to pass the qڅq}q(h(XSimpy 2 mostly sticked with Simpy 1's design, but added an object orient API for the execution of simulations, allowing them to be executed in parallel. Since processes and the simulation state were so closely coupled, you now needed to pass the h)hubh)q}q(h(X``Simulation``h1}q(h3]h4]h5]h6]h8]uh)hh#]qhDX Simulationqᅁq}q(h(Uh)hubah/hubhDX  instance into your process to "bind" them to that instance. Additionally, you still had to activate the process. If you forgot to pass the simulation instance, the process would use a global instance thereby breaking your program. SimPy 2's OO-API looked like this:q䅁q}q(h(X  instance into your process to "bind" them to that instance. Additionally, you still had to activate the process. If you forgot to pass the simulation instance, the process would use a global instance thereby breaking your program. SimPy 2's OO-API looked like this:h)hubeubh)q}q(h(Xfrom SimPy.Simulation import Simulation, Process, hold class MyProcess(Process): def pem(self, repeat): for i in range(repeat): yield hold, self, 1 sim = Simulation() proc = MyProcess(sim=sim) sim.activate(proc, proc.pem(3)) sim.simulate(until=10)h)hh*h-h/hh1}q(hhXpythonhhh6]h5]h3]h4]h8]uh:KFh;hh#]qhDXfrom SimPy.Simulation import Simulation, Process, hold class MyProcess(Process): def pem(self, repeat): for i in range(repeat): yield hold, self, 1 sim = Simulation() proc = MyProcess(sim=sim) sim.activate(proc, proc.pem(3)) sim.simulate(until=10)q녁q}q(h(Uh)hubaubeubh%)q}q(h(Uh)h&h*h-h/h0h1}q(h3]h4]h5]h6]qhah8]qhauh:KVh;hh#]q(h=)q}q(h(X Changes and Decisions in SimPy 3qh)hh*h-h/hAh1}q(h3]h4]h5]h6]h8]uh:KVh;hh#]qhDX Changes and Decisions in SimPy 3qq}q(h(hh)hubaubhH)q}q(h(XDThe original goals for SimPy 3 were to simplify and PEP8-ify its API and to clean up and modularize its internals. We knew from the beginning that our goals would not be achievable without breaking backwards compatibility with SimPy 2. However, we didn't expect the API changes to become as extensive as they ended up to be.qh)hh*h-h/hLh1}q(h3]h4]h5]h6]h8]uh:KXh;hh#]rhDXDThe original goals for SimPy 3 were to simplify and PEP8-ify its API and to clean up and modularize its internals. We knew from the beginning that our goals would not be achievable without breaking backwards compatibility with SimPy 2. However, we didn't expect the API changes to become as extensive as they ended up to be.rr}r(h(hh)hubaubhH)r}r(h(XWe also removed some of the included batteries, namely SimPy's plotting and GUI capabilities, since dedicated libraries like `matplotlib `_ or `PySide `_ do a much better job here.h)hh*h-h/hLh1}r(h3]h4]h5]h6]h8]uh:K^h;hh#]r(hDX}We also removed some of the included batteries, namely SimPy's plotting and GUI capabilities, since dedicated libraries like rr }r (h(X}We also removed some of the included batteries, namely SimPy's plotting and GUI capabilities, since dedicated libraries like h)jubcdocutils.nodes reference r )r }r (h(X&`matplotlib `_h1}r(Unameh UrefurirXhttp://matplotlib.org/rh6]h5]h3]h4]h8]uh)jh#]rhDX matplotlibrr}r(h(Uh)j ubah/U referencerubcdocutils.nodes target r)r}r(h(X U referencedrKh)jh/Utargetrh1}r(Urefurijh6]rhah5]h3]h4]h8]rh auh#]ubhDX or rr}r (h(X or h)jubj )r!}r"(h(X-`PySide `_h1}r#(UnameXPySidejX!http://qt-project.org/wiki/PySider$h6]h5]h3]h4]h8]uh)jh#]r%hDXPySider&r'}r((h(Uh)j!ubah/jubj)r)}r*(h(X$ jKh)jh/jh1}r+(Urefurij$h6]r,hah5]h3]h4]h8]r-hauh#]ubhDX do a much better job here.r.r/}r0(h(X do a much better job here.h)jubeubhH)r1}r2(h(XHowever, by far the most changes are---from the end user's view---mostly syntactical. Thus, porting from 2 to 3 usually just means replacing a line of SimPy 2 code with its SimPy3 equivalent (e.g., replacing ``yield hold, self, 1`` with ``yield env.timeout(1)``).h)hh*h-h/hLh1}r3(h3]h4]h5]h6]h8]uh:Kch;hh#]r4(hDXHowever, by far the most changes are---from the end user's view---mostly syntactical. Thus, porting from 2 to 3 usually just means replacing a line of SimPy 2 code with its SimPy3 equivalent (e.g., replacing r5r6}r7(h(XHowever, by far the most changes are---from the end user's view---mostly syntactical. Thus, porting from 2 to 3 usually just means replacing a line of SimPy 2 code with its SimPy3 equivalent (e.g., replacing h)j1ubh)r8}r9(h(X``yield hold, self, 1``h1}r:(h3]h4]h5]h6]h8]uh)j1h#]r;hDXyield hold, self, 1r<r=}r>(h(Uh)j8ubah/hubhDX with r?r@}rA(h(X with h)j1ubh)rB}rC(h(X``yield env.timeout(1)``h1}rD(h3]h4]h5]h6]h8]uh)j1h#]rEhDXyield env.timeout(1)rFrG}rH(h(Uh)jBubah/hubhDX).rIrJ}rK(h(X).h)j1ubeubhH)rL}rM(h(X2In short, the most notable changes in SimPy 3 are:rNh)hh*h-h/hLh1}rO(h3]h4]h5]h6]h8]uh:Khh;hh#]rPhDX2In short, the most notable changes in SimPy 3 are:rQrR}rS(h(jNh)jLubaubcdocutils.nodes bullet_list rT)rU}rV(h(Uh)hh*h-h/U bullet_listrWh1}rX(UbulletrYX-h6]h5]h3]h4]h8]uh:Kjh;hh#]rZ(cdocutils.nodes list_item r[)r\}r](h(X]No more sub-classing of ``Process`` required. PEMs can even be simple module level functions.h)jUh*h-h/U list_itemr^h1}r_(h3]h4]h5]h6]h8]uh:Nh;hh#]r`hH)ra}rb(h(X]No more sub-classing of ``Process`` required. PEMs can even be simple module level functions.h)j\h*h-h/hLh1}rc(h3]h4]h5]h6]h8]uh:Kjh#]rd(hDXNo more sub-classing of rerf}rg(h(XNo more sub-classing of h)jaubh)rh}ri(h(X ``Process``h1}rj(h3]h4]h5]h6]h8]uh)jah#]rkhDXProcessrlrm}rn(h(Uh)jhubah/hubhDX: required. PEMs can even be simple module level functions.rorp}rq(h(X: required. PEMs can even be simple module level functions.h)jaubeubaubj[)rr}rs(h(XyThe simulation state is now stored in an ``Environment`` which can also be used by a PEM to interact with the simulation.h)jUh*h-h/j^h1}rt(h3]h4]h5]h6]h8]uh:Nh;hh#]ruhH)rv}rw(h(XyThe simulation state is now stored in an ``Environment`` which can also be used by a PEM to interact with the simulation.h)jrh*h-h/hLh1}rx(h3]h4]h5]h6]h8]uh:Klh#]ry(hDX)The simulation state is now stored in an rzr{}r|(h(X)The simulation state is now stored in an h)jvubh)r}}r~(h(X``Environment``h1}r(h3]h4]h5]h6]h8]uh)jvh#]rhDX Environmentrr}r(h(Uh)j}ubah/hubhDXA which can also be used by a PEM to interact with the simulation.rr}r(h(XA which can also be used by a PEM to interact with the simulation.h)jvubeubaubj[)r}r(h(XzPEMs now yield event objects. This implicates interesting new features and allows an easy extension with new event types. h)jUh*h-h/j^h1}r(h3]h4]h5]h6]h8]uh:Nh;hh#]rhH)r}r(h(XyPEMs now yield event objects. This implicates interesting new features and allows an easy extension with new event types.rh)jh*h-h/hLh1}r(h3]h4]h5]h6]h8]uh:Knh#]rhDXyPEMs now yield event objects. This implicates interesting new features and allows an easy extension with new event types.rr}r(h(jh)jubaubaubeubhH)r}r(h(XBThese changes are causing the above example to now look like this:rh)hh*h-h/hLh1}r(h3]h4]h5]h6]h8]uh:Kqh;hh#]rhDXBThese changes are causing the above example to now look like this:rr}r(h(jh)jubaubh)r}r(h(Xfrom simpy import Environment, simulate def pem(env, repeat): for i in range(repeat): yield env.timeout(i) env = Environment() env.process(pem(env, 7)) simulate(env, until=10)h)hh*h-h/hh1}r(hhXpythonhhh6]h5]h3]h4]h8]uh:Ksh;hh#]rhDXfrom simpy import Environment, simulate def pem(env, repeat): for i in range(repeat): yield env.timeout(i) env = Environment() env.process(pem(env, 7)) simulate(env, until=10)rr}r(h(Uh)jubaubhH)r}r(h(X8The following sections describe these changes in detail:rh)hh*h-h/hLh1}r(h3]h4]h5]h6]h8]uh:Kh;hh#]rhDX8The following sections describe these changes in detail:rr}r(h(jh)jubaubh%)r}r(h(Uh)hh*h-h/h0h1}r(h3]h4]h5]h6]rhah8]rh auh:Kh;hh#]r(h=)r}r(h(X#No More Sub-classing of ``Process``rh)jh*h-h/hAh1}r(h3]h4]h5]h6]h8]uh:Kh;hh#]r(hDXNo More Sub-classing of rr}r(h(XNo More Sub-classing of rh)jubh)r}r(h(X ``Process``rh1}r(h3]h4]h5]h6]h8]uh)jh#]rhDXProcessrr}r(h(Uh)jubah/hubeubhH)r}r(h(X.In Simpy 3, every Python generator can be used as a PEM, no matter if it is a module level function or a method of an object. This reduces the amount of code required for simple processes. The ``Process`` class still exists, but you don't need to instantiate it by yourself, though. More on that later.h)jh*h-h/hLh1}r(h3]h4]h5]h6]h8]uh:Kh;hh#]r(hDXIn Simpy 3, every Python generator can be used as a PEM, no matter if it is a module level function or a method of an object. This reduces the amount of code required for simple processes. The rr}r(h(XIn Simpy 3, every Python generator can be used as a PEM, no matter if it is a module level function or a method of an object. This reduces the amount of code required for simple processes. The h)jubh)r}r(h(X ``Process``h1}r(h3]h4]h5]h6]h8]uh)jh#]rhDXProcessrr}r(h(Uh)jubah/hubhDXb class still exists, but you don't need to instantiate it by yourself, though. More on that later.rr}r(h(Xb class still exists, but you don't need to instantiate it by yourself, though. More on that later.h)jubeubeubh%)r}r(h(Uh)hh*h-h/h0h1}r(h3]h4]h5]h6]rh!ah8]rhauh:Kh;hh#]r(h=)r}r(h(X Processes Live in an Environmentrh)jh*h-h/hAh1}r(h3]h4]h5]h6]h8]uh:Kh;hh#]rhDX Processes Live in an Environmentrr}r(h(jh)jubaubhH)r}r(h(XProcess and simulation state are decoupled. An ``Environment`` holds the simulation state and serves as base API for processes to create new events. This allows you to implement advanced use cases by extending the ``Process`` or ``Environment`` class without affecting other components.h)jh*h-h/hLh1}r(h3]h4]h5]h6]h8]uh:Kh;hh#]r(hDX/Process and simulation state are decoupled. An rr}r(h(X/Process and simulation state are decoupled. An h)jubh)r}r(h(X``Environment``h1}r(h3]h4]h5]h6]h8]uh)jh#]rhDX Environmentrr}r(h(Uh)jubah/hubhDX holds the simulation state and serves as base API for processes to create new events. This allows you to implement advanced use cases by extending the rr}r(h(X holds the simulation state and serves as base API for processes to create new events. This allows you to implement advanced use cases by extending the h)jubh)r}r(h(X ``Process``h1}r(h3]h4]h5]h6]h8]uh)jh#]rhDXProcessrr}r(h(Uh)jubah/hubhDX or rr}r(h(X or h)jubh)r}r(h(X``Environment``h1}r(h3]h4]h5]h6]h8]uh)jh#]rhDX Environmentrr}r(h(Uh)jubah/hubhDX* class without affecting other components.rr}r(h(X* class without affecting other components.h)jubeubhH)r}r(h(XtFor the same reason, the ``simulate()`` method now is a module level function that takes an environment to simulate.h)jh*h-h/hLh1}r(h3]h4]h5]h6]h8]uh:Kh;hh#]r(hDXFor the same reason, the r r }r (h(XFor the same reason, the h)jubh)r }r (h(X``simulate()``h1}r(h3]h4]h5]h6]h8]uh)jh#]rhDX simulate()rr}r(h(Uh)j ubah/hubhDXM method now is a module level function that takes an environment to simulate.rr}r(h(XM method now is a module level function that takes an environment to simulate.h)jubeubeubh%)r}r(h(Uh)hh*h-h/h0h1}r(h3]h4]h5]h6]rh"ah8]rhauh:Kh;hh#]r(h=)r}r(h(XStronger Focus on Eventsrh)jh*h-h/hAh1}r(h3]h4]h5]h6]h8]uh:Kh;hh#]r hDXStronger Focus on Eventsr!r"}r#(h(jh)jubaubhH)r$}r%(h(XRIn former versions, PEMs needed to yield one of SimPy's built-in keywords (like ``hold``) to interact with the simulation. These keywords had to be imported separately and were bound to some internal functions that were tightly integrated with the ``Simulation`` and ``Process`` making it very hard to extend SimPy with new functionality.h)jh*h-h/hLh1}r&(h3]h4]h5]h6]h8]uh:Kh;hh#]r'(hDXPIn former versions, PEMs needed to yield one of SimPy's built-in keywords (like r(r)}r*(h(XPIn former versions, PEMs needed to yield one of SimPy's built-in keywords (like h)j$ubh)r+}r,(h(X``hold``h1}r-(h3]h4]h5]h6]h8]uh)j$h#]r.hDXholdr/r0}r1(h(Uh)j+ubah/hubhDX) to interact with the simulation. These keywords had to be imported separately and were bound to some internal functions that were tightly integrated with the r2r3}r4(h(X) to interact with the simulation. These keywords had to be imported separately and were bound to some internal functions that were tightly integrated with the h)j$ubh)r5}r6(h(X``Simulation``h1}r7(h3]h4]h5]h6]h8]uh)j$h#]r8hDX Simulationr9r:}r;(h(Uh)j5ubah/hubhDX and r<r=}r>(h(X and h)j$ubh)r?}r@(h(X ``Process``h1}rA(h3]h4]h5]h6]h8]uh)j$h#]rBhDXProcessrCrD}rE(h(Uh)j?ubah/hubhDX< making it very hard to extend SimPy with new functionality.rFrG}rH(h(X< making it very hard to extend SimPy with new functionality.h)j$ubeubhH)rI}rJ(h(XHIn Simpy 3, PEMs just need to yield events. There are various built-in event types, but you can also create custom ones by making a subclass of a ``BaseEvent``. Most events are generated by factory methods of ``Environment``. For example, ``Environment.timeout()`` creates a ``Timeout`` event that replaces the ``hold`` keyword.h)jh*h-h/hLh1}rK(h3]h4]h5]h6]h8]uh:Kh;hh#]rL(hDXIn Simpy 3, PEMs just need to yield events. There are various built-in event types, but you can also create custom ones by making a subclass of a rMrN}rO(h(XIn Simpy 3, PEMs just need to yield events. There are various built-in event types, but you can also create custom ones by making a subclass of a h)jIubh)rP}rQ(h(X ``BaseEvent``h1}rR(h3]h4]h5]h6]h8]uh)jIh#]rShDX BaseEventrTrU}rV(h(Uh)jPubah/hubhDX2. Most events are generated by factory methods of rWrX}rY(h(X2. Most events are generated by factory methods of h)jIubh)rZ}r[(h(X``Environment``h1}r\(h3]h4]h5]h6]h8]uh)jIh#]r]hDX Environmentr^r_}r`(h(Uh)jZubah/hubhDX. For example, rarb}rc(h(X. For example, h)jIubh)rd}re(h(X``Environment.timeout()``h1}rf(h3]h4]h5]h6]h8]uh)jIh#]rghDXEnvironment.timeout()rhri}rj(h(Uh)jdubah/hubhDX creates a rkrl}rm(h(X creates a h)jIubh)rn}ro(h(X ``Timeout``h1}rp(h3]h4]h5]h6]h8]uh)jIh#]rqhDXTimeoutrrrs}rt(h(Uh)jnubah/hubhDX event that replaces the rurv}rw(h(X event that replaces the h)jIubh)rx}ry(h(X``hold``h1}rz(h3]h4]h5]h6]h8]uh)jIh#]r{hDXholdr|r}}r~(h(Uh)jxubah/hubhDX keyword.rr}r(h(X keyword.h)jIubeubhH)r}r(h(XThe ``Process`` is now also an event. You can now yield another process and wait for it to finish. For example, think of a car-wash simulation were "washing" is a process that the car processes can wait for once they enter the washing station.h)jh*h-h/hLh1}r(h3]h4]h5]h6]h8]uh:Kh;hh#]r(hDXThe rr}r(h(XThe h)jubh)r}r(h(X ``Process``h1}r(h3]h4]h5]h6]h8]uh)jh#]rhDXProcessrr}r(h(Uh)jubah/hubhDX is now also an event. You can now yield another process and wait for it to finish. For example, think of a car-wash simulation were "washing" is a process that the car processes can wait for once they enter the washing station.rr}r(h(X is now also an event. You can now yield another process and wait for it to finish. For example, think of a car-wash simulation were "washing" is a process that the car processes can wait for once they enter the washing station.h)jubeubeubh%)r}r(h(Uh)hh*h-h/h0h1}r(h3]h4]h5]h6]rhah8]rhauh:Kh;hh#]r(h=)r}r(h(X0Creating Events via the Environment or Resourcesrh)jh*h-h/hAh1}r(h3]h4]h5]h6]h8]uh:Kh;hh#]rhDX0Creating Events via the Environment or Resourcesrr}r(h(jh)jubaubhH)r}r(h(XThe ``Environment`` and resources have methods to create new events, e.g. ``Environment.timeout()`` or ``Resource.request()``. Each of these methods maps to a certain event type. It creates a new instance of it and returns it, e.g.:h)jh*h-h/hLh1}r(h3]h4]h5]h6]h8]uh:Kh;hh#]r(hDXThe rr}r(h(XThe h)jubh)r}r(h(X``Environment``h1}r(h3]h4]h5]h6]h8]uh)jh#]rhDX Environmentrr}r(h(Uh)jubah/hubhDX7 and resources have methods to create new events, e.g. rr}r(h(X7 and resources have methods to create new events, e.g. h)jubh)r}r(h(X``Environment.timeout()``h1}r(h3]h4]h5]h6]h8]uh)jh#]rhDXEnvironment.timeout()rr}r(h(Uh)jubah/hubhDX or rr}r(h(X or h)jubh)r}r(h(X``Resource.request()``h1}r(h3]h4]h5]h6]h8]uh)jh#]rhDXResource.request()rr}r(h(Uh)jubah/hubhDXk. Each of these methods maps to a certain event type. It creates a new instance of it and returns it, e.g.:rr}r(h(Xk. Each of these methods maps to a certain event type. It creates a new instance of it and returns it, e.g.:h)jubeubh)r}r(h(X#def event(self): return Event()h)jh*h-h/hh1}r(hhXpythonhhh6]h5]h3]h4]h8]uh:Kh;hh#]rhDX#def event(self): return Event()rr}r(h(Uh)jubaubhH)r}r(h(XKTo simplify things, we wanted to use the event classes directly as methods:rh)jh*h-h/hLh1}r(h3]h4]h5]h6]h8]uh:Kh;hh#]rhDXKTo simplify things, we wanted to use the event classes directly as methods:rr}r(h(jh)jubaubh)r}r(h(X+class Environment(object) event = Eventh)jh*h-h/hh1}r(hhXpythonhhh6]h5]h3]h4]h8]uh:Kh;hh#]rhDX+class Environment(object) event = Eventrr}r(h(Uh)jubaubhH)r}r(h(XThis was, unfortunately, not directly possible and we had to wrap the classes to behave like bound methods. Therefore, we introduced a ``BoundClass``:h)jh*h-h/hLh1}r(h3]h4]h5]h6]h8]uh:Kh;hh#]r(hDXThis was, unfortunately, not directly possible and we had to wrap the classes to behave like bound methods. Therefore, we introduced a rr}r(h(XThis was, unfortunately, not directly possible and we had to wrap the classes to behave like bound methods. Therefore, we introduced a h)jubh)r}r(h(X``BoundClass``h1}r(h3]h4]h5]h6]h8]uh)jh#]rhDX BoundClassrr}r(h(Uh)jubah/hubhDX:r}r(h(X:h)jubeubh)r}r(h(Xclass BoundClass(object): """Allows classes to behave like methods. The ``__get__()`` descriptor is basically identical to ``function.__get__()`` and binds the first argument of the ``cls`` to the descriptor instance. """ def __init__(self, cls): self.cls = cls def __get__(self, obj, type=None): if obj is None: return self.cls return types.MethodType(self.cls, obj) class Environment(object): event = BoundClass(Event)h)jh*h-h/hh1}r(hhXpythonhhh6]h5]h3]h4]h8]uh:Kh;hh#]rhDXclass BoundClass(object): """Allows classes to behave like methods. The ``__get__()`` descriptor is basically identical to ``function.__get__()`` and binds the first argument of the ``cls`` to the descriptor instance. """ def __init__(self, cls): self.cls = cls def __get__(self, obj, type=None): if obj is None: return self.cls return types.MethodType(self.cls, obj) class Environment(object): event = BoundClass(Event)rr}r(h(Uh)jubaubhH)r}r(h(XThese methods are called a lot, so we added the event classes as :data:`types.MethodType` to the instance of ``Environment`` (or the resources, respectively):h)jh*h-h/hLh1}r(h3]h4]h5]h6]h8]uh:Kh;hh#]r(hDXAThese methods are called a lot, so we added the event classes as rr}r(h(XAThese methods are called a lot, so we added the event classes as h)jubcsphinx.addnodes pending_xref r)r}r(h(X:data:`types.MethodType`rh)jh*h-h/U pending_xrefrh1}r(UreftypeXdataUrefwarnrU reftargetrXtypes.MethodTypeU refdomainXpyrh6]h5]U refexplicith3]h4]h8]UrefdocrXabout/defense_of_designrUpy:classrNU py:modulerNuh:Kh#]rh)r}r (h(jh1}r (h3]h4]r (Uxrefr jXpy-datar eh5]h6]h8]uh)jh#]rhDXtypes.MethodTyperr}r(h(Uh)jubah/hubaubhDX to the instance of rr}r(h(X to the instance of h)jubh)r}r(h(X``Environment``h1}r(h3]h4]h5]h6]h8]uh)jh#]rhDX Environmentrr}r(h(Uh)jubah/hubhDX" (or the resources, respectively):rr}r(h(X" (or the resources, respectively):h)jubeubh)r}r (h(Xeclass Environment(object): def __init__(self): self.event = types.MethodType(Event, self)h)jh*h-h/hh1}r!(hhXpythonhhh6]h5]h3]h4]h8]uh:Kh;hh#]r"hDXeclass Environment(object): def __init__(self): self.event = types.MethodType(Event, self)r#r$}r%(h(Uh)jubaubhH)r&}r'(h(XIt turned out the the class attributes (the ``BoundClass`` instances) were now quite useless, so we removed them allthough it was actually the "right" way to to add classes as methods to another class.h)jh*h-h/hLh1}r((h3]h4]h5]h6]h8]uh:Kh;hh#]r)(hDX,It turned out the the class attributes (the r*r+}r,(h(X,It turned out the the class attributes (the h)j&ubh)r-}r.(h(X``BoundClass``h1}r/(h3]h4]h5]h6]h8]uh)j&h#]r0hDX BoundClassr1r2}r3(h(Uh)j-ubah/hubhDX instances) were now quite useless, so we removed them allthough it was actually the "right" way to to add classes as methods to another class.r4r5}r6(h(X instances) were now quite useless, so we removed them allthough it was actually the "right" way to to add classes as methods to another class.h)j&ubeubeubeubeubah(UU transformerr7NU footnote_refsr8}r9Urefnamesr:}r;Usymbol_footnotesr<]r=Uautofootnote_refsr>]r?Usymbol_footnote_refsr@]rAU citationsrB]rCh;hU current_linerDNUtransform_messagesrE]rFUreporterrGNUid_startrHKU autofootnotesrI]rJU citation_refsrK}rLUindirect_targetsrM]rNUsettingsrO(cdocutils.frontend Values rPorQ}rR(Ufootnote_backlinksrSKUrecord_dependenciesrTNU rfc_base_urlrUUhttp://tools.ietf.org/html/rVU tracebackrWUpep_referencesrXNUstrip_commentsrYNU toc_backlinksrZUentryr[U language_coder\Uenr]U datestampr^NU report_levelr_KU _destinationr`NU halt_levelraKU strip_classesrbNhANUerror_encoding_error_handlerrcUbackslashreplacerdUdebugreNUembed_stylesheetrfUoutput_encoding_error_handlerrgUstrictrhU sectnum_xformriKUdump_transformsrjNU docinfo_xformrkKUwarning_streamrlNUpep_file_url_templatermUpep-%04drnUexit_status_levelroKUconfigrpNUstrict_visitorrqNUcloak_email_addressesrrUtrim_footnote_reference_spacersUenvrtNUdump_pseudo_xmlruNUexpose_internalsrvNUsectsubtitle_xformrwU source_linkrxNUrfc_referencesryNUoutput_encodingrzUutf-8r{U source_urlr|NUinput_encodingr}U utf-8-sigr~U_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerUM/var/build/user_builds/simpy/checkouts/3.0.5/docs/about/defense_of_design.rstrUgettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjhUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hhhjhhRhj)h"jh h&hjh!jhhhjuUsubstitution_namesr}rh/h;h1}r(h3]h6]h5]Usourceh-h4]h8]uU footnotesr]rUrefidsr}rub.PK.D0^. +simpy-3.0.5/.doctrees/about/license.doctreecdocutils.nodes document q)q}q(U nametypesq}qXlicenseqNsUsubstitution_defsq}qUparse_messagesq ]q Ucurrent_sourceq NU decorationq NUautofootnote_startq KUnameidsq}qhUlicenseqsUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqcdocutils.nodes reprunicode qXC/var/build/user_builds/simpy/checkouts/3.0.5/docs/about/license.rstqq}qbUtagnameqUsectionqU attributesq}q (Udupnamesq!]Uclassesq"]Ubackrefsq#]Uidsq$]q%haUnamesq&]q'hauUlineq(KUdocumentq)hh]q*cdocutils.nodes title q+)q,}q-(hXLicenseq.hhhhhUtitleq/h}q0(h!]h"]h#]h$]h&]uh(Kh)hh]q1cdocutils.nodes Text q2XLicenseq3q4}q5(hh.hh,ubaubaubahUU transformerq6NU footnote_refsq7}q8Urefnamesq9}q:Usymbol_footnotesq;]qUsymbol_footnote_refsq?]q@U citationsqA]qBh)hU current_lineqCNUtransform_messagesqD]qEUreporterqFNUid_startqGKU autofootnotesqH]qIU citation_refsqJ}qKUindirect_targetsqL]qMUsettingsqN(cdocutils.frontend Values qOoqP}qQ(Ufootnote_backlinksqRKUrecord_dependenciesqSNU rfc_base_urlqTUhttp://tools.ietf.org/html/qUU tracebackqVUpep_referencesqWNUstrip_commentsqXNU toc_backlinksqYUentryqZU language_codeq[Uenq\U datestampq]NU report_levelq^KU _destinationq_NU halt_levelq`KU strip_classesqaNh/NUerror_encoding_error_handlerqbUbackslashreplaceqcUdebugqdNUembed_stylesheetqeUoutput_encoding_error_handlerqfUstrictqgU sectnum_xformqhKUdump_transformsqiNU docinfo_xformqjKUwarning_streamqkNUpep_file_url_templateqlUpep-%04dqmUexit_status_levelqnKUconfigqoNUstrict_visitorqpNUcloak_email_addressesqqUtrim_footnote_reference_spaceqrUenvqsNUdump_pseudo_xmlqtNUexpose_internalsquNUsectsubtitle_xformqvU source_linkqwNUrfc_referencesqxNUoutput_encodingqyUutf-8qzU source_urlq{NUinput_encodingq|U utf-8-sigq}U_disable_configq~NU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUC/var/build/user_builds/simpy/checkouts/3.0.5/docs/about/license.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhgUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]qUfile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}qhhsUsubstitution_namesq}qhh)h}q(h!]h$]h#]Usourcehh"]h&]uU footnotesq]qUrefidsq}qub.PK.D/oF||+simpy-3.0.5/.doctrees/about/history.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X api changesqNX3.0.5 – 2014-05-14qNX2.0.0 – 2009-01-26qNXseptember 2005: version 1.6.1q NX2.1 – 2010-06-03q NX18 october 2002q NX3.0 – 2013-10-11q NX bug fixesq NX2.2 – 2011-09-27qNX additionsqNX22 october 2002qNX3.0.1 – 2013-10-24qNXjanuary 2007: version 1.8qNX3.0.3 – 2014-03-06qNXsimpy history & change logqNX#25 september 2004: version 1.5alphaqNX!hitchhiker’s guide to packagingqXjune 2006: version 1.7.1qNXmarch 2008: version 1.9.1qNXfebruary 2006: version 1.7qNX2.3 – 2011-12-24qNX19 may 2004: version 1.4.2qNX3.0.4 – 2014-04-07qNX2.3.1 – 2012-01-28qNX22 june 2003: version 1.3qNXjune 2003: version 1.3 alphaqNX17 september 2002q NX29 april 2003: version 1.2q!NX major changesq"NX27 september 2002q#NX1 december 2004: version 1.5q$NX#22 december 2003: version 1.4 alphaq%NX29 february 2004: version 1.4.1q&NX1 february 2005: version 1.5.1q'NX3.0.2 – 2013-10-24q(NXdecember 2007: version 1.9q)NX15 june 2005: version 1.6q*NX1 february 2004: version 1.4q+NXdocumentation format changesq,NX2.0.1 – 2009-04-06q-NuUsubstitution_defsq.}q/Uparse_messagesq0]q1(cdocutils.nodes system_message q2)q3}q4(U rawsourceq5UUparentq6cdocutils.nodes section q7)q8}q9(h5UU referencedq:Kh6h7)q;}q<(h5Uh6h7)q=}q>(h5Uh6hUsourceq?cdocutils.nodes reprunicode q@XC/var/build/user_builds/simpy/checkouts/3.0.5/docs/about/history.rstqAqB}qCbUtagnameqDUsectionqEU attributesqF}qG(UdupnamesqH]UclassesqI]UbackrefsqJ]UidsqK]qLUsimpy-history-change-logqMaUnamesqN]qOhauUlineqPKUdocumentqQhUchildrenqR]qS(cdocutils.nodes title qT)qU}qV(h5XSimPy History & Change LogqWh6h=h?hBhDUtitleqXhF}qY(hH]hI]hJ]hK]hN]uhPKhQhhR]qZcdocutils.nodes Text q[XSimPy History & Change Logq\q]}q^(h5hWh6hUubaubcdocutils.nodes paragraph q_)q`}qa(h5XSimPy was originally based on ideas from Simula and Simscript but uses standard Python. It combines two previous packages, SiPy, in Simula-Style (Klaus Müller) and SimPy, in Simscript style (Tony Vignaux and Chang Chui).qbh6h=h?hBhDU paragraphqchF}qd(hH]hI]hJ]hK]hN]uhPKhQhhR]qeh[XSimPy was originally based on ideas from Simula and Simscript but uses standard Python. It combines two previous packages, SiPy, in Simula-Style (Klaus Müller) and SimPy, in Simscript style (Tony Vignaux and Chang Chui).qfqg}qh(h5hbh6h`ubaubh_)qi}qj(h5X`SimPy was based on efficient implementation of co-routines using Python's generators capability.qkh6h=h?hBhDhchF}ql(hH]hI]hJ]hK]hN]uhPK hQhhR]qmh[X`SimPy was based on efficient implementation of co-routines using Python's generators capability.qnqo}qp(h5hkh6hiubaubh_)qq}qr(h5XSimPy 3 introduced a completely new and easier-to-use API, but still relied on Python's generators as they proved to work very well.qsh6h=h?hBhDhchF}qt(hH]hI]hJ]hK]hN]uhPK hQhhR]quh[XSimPy 3 introduced a completely new and easier-to-use API, but still relied on Python's generators as they proved to work very well.qvqw}qx(h5hsh6hqubaubh_)qy}qz(h5X|The package has been hosted on Sourceforge.net since September 15th, 2002. In June 2012, the project moved to Bitbucket.org.q{h6h=h?hBhDhchF}q|(hH]hI]hJ]hK]hN]uhPKhQhhR]q}h[X|The package has been hosted on Sourceforge.net since September 15th, 2002. In June 2012, the project moved to Bitbucket.org.q~q}q(h5h{h6hyubaubh7)q}q(h5Uh6h=h?hBhDhEhF}q(hH]hI]hJ]hK]qUid1qahN]qhauhPKhQhhR]q(hT)q}q(h5X3.0.5 – 2014-05-14qh6hh?hBhDhXhF}q(hH]hI]hJ]hK]hN]uhPKhQhhR]qh[X3.0.5 – 2014-05-14qq}q(h5hh6hubaubcdocutils.nodes bullet_list q)q}q(h5Uh6hh?hBhDU bullet_listqhF}q(UbulletqX-hK]hJ]hH]hI]hN]uhPKhQhhR]q(cdocutils.nodes list_item q)q}q(h5X_[CHANGE] Move interruption and all of the safety checks into a new event (`pull request #30`__)h6hh?hBhDU list_itemqhF}q(hH]hI]hJ]hK]hN]uhPNhQhhR]qh_)q}q(h5X_[CHANGE] Move interruption and all of the safety checks into a new event (`pull request #30`__)h6hh?hBhDhchF}q(hH]hI]hJ]hK]hN]uhPKhR]q(h[XJ[CHANGE] Move interruption and all of the safety checks into a new event (qq}q(h5XJ[CHANGE] Move interruption and all of the safety checks into a new event (h6hubcdocutils.nodes reference q)q}q(h5X`pull request #30`__UresolvedqKh6hhDU referenceqhF}q(UnameXpull request #30UrefuriqX1https://bitbucket.org/simpy/simpy/pull-request/30qhK]hJ]hH]hI]hN]U anonymousqKuhR]qh[Xpull request #30qq}q(h5Uh6hubaubh[X)q}q(h5X)h6hubeubaubh)q}q(h5XB[FIX] ``FilterStore.get()`` now behaves correctly (`issue #49`__).qh6hh?hBhDhhF}q(hH]hI]hJ]hK]hN]uhPNhQhhR]qh_)q}q(h5hh6hh?hBhDhchF}q(hH]hI]hJ]hK]hN]uhPKhR]q(h[X[FIX] qq}q(h5X[FIX] h6hubcdocutils.nodes literal q)q}q(h5X``FilterStore.get()``hF}q(hH]hI]hJ]hK]hN]uh6hhR]qh[XFilterStore.get()qąq}q(h5Uh6hubahDUliteralqubh[X now behaves correctly (qȅq}q(h5X now behaves correctly (h6hubh)q}q(h5X `issue #49`__hKh6hhDhhF}q(UnameX issue #49hX*https://bitbucket.org/simpy/simpy/issue/49qhK]hJ]hH]hI]hN]hKuhR]qh[X issue #49qЅq}q(h5Uh6hubaubh[X).qӅq}q(h5X).h6hubeubaubh)q}q(h5X#[FIX] Documentation improvements. h6hh?hBhDhhF}q(hH]hI]hJ]hK]hN]uhPNhQhhR]qh_)q}q(h5X"[FIX] Documentation improvements.qh6hh?hBhDhchF}q(hH]hI]hJ]hK]hN]uhPKhR]qh[X"[FIX] Documentation improvements.q߅q}q(h5hh6hubaubaubeubcdocutils.nodes target q)q}q(h5X4__ https://bitbucket.org/simpy/simpy/pull-request/30h:Kh6hh?hBhDUtargetqhF}q(hhhK]qUid2qahJ]hH]hI]hN]hKuhPKhQhhR]ubh)q}q(h5X-__ https://bitbucket.org/simpy/simpy/issue/49h:Kh6hh?hBhDhhF}q(hhhK]qUid3qahJ]hH]hI]hN]hKuhPKhQhhR]ubeubh7)q}q(h5Uh6h=h?hBhDhEhF}q(hH]hI]hJ]hK]qUid4qahN]qhauhPKhQhhR]q(hT)q}q(h5X3.0.4 – 2014-04-07qh6hh?hBhDhXhF}q(hH]hI]hJ]hK]hN]uhPKhQhhR]qh[X3.0.4 – 2014-04-07qq}q(h5hh6hubaubh)q}q(h5Uh6hh?hBhDhhF}q(hX-hK]hJ]hH]hI]hN]uhPK!hQhhR]r(h)r}r(h5X/[NEW] Verified, that SimPy works on Python 3.4.rh6hh?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r(h5jh6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPK!hR]r h[X/[NEW] Verified, that SimPy works on Python 3.4.r r }r (h5jh6jubaubaubh)r }r(h5XEW] Guide to SimPy eventsrh6hh?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r(h5jh6j h?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPK"hR]rh[XEW] Guide to SimPy eventsrr}r(h5jh6jubaubaubh)r}r(h5X[CHANGE] The result dictionary for condition events (``AllOF`` / ``&`` and ``AnyOf`` / ``|``) now is an *OrderedDict* sorted in the same way as the original events list.h6hh?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r(h5X[CHANGE] The result dictionary for condition events (``AllOF`` / ``&`` and ``AnyOf`` / ``|``) now is an *OrderedDict* sorted in the same way as the original events list.h6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPK#hR]r (h[X6[CHANGE] The result dictionary for condition events (r!r"}r#(h5X6[CHANGE] The result dictionary for condition events (h6jubh)r$}r%(h5X ``AllOF``hF}r&(hH]hI]hJ]hK]hN]uh6jhR]r'h[XAllOFr(r)}r*(h5Uh6j$ubahDhubh[X / r+r,}r-(h5X / h6jubh)r.}r/(h5X``&``hF}r0(hH]hI]hJ]hK]hN]uh6jhR]r1h[X&r2}r3(h5Uh6j.ubahDhubh[X and r4r5}r6(h5X and h6jubh)r7}r8(h5X ``AnyOf``hF}r9(hH]hI]hJ]hK]hN]uh6jhR]r:h[XAnyOfr;r<}r=(h5Uh6j7ubahDhubh[X / r>r?}r@(h5X / h6jubh)rA}rB(h5X``|``hF}rC(hH]hI]hJ]hK]hN]uh6jhR]rDh[X|rE}rF(h5Uh6jAubahDhubh[X ) now is an rGrH}rI(h5X ) now is an h6jubcdocutils.nodes emphasis rJ)rK}rL(h5X *OrderedDict*hF}rM(hH]hI]hJ]hK]hN]uh6jhR]rNh[X OrderedDictrOrP}rQ(h5Uh6jKubahDUemphasisrRubh[X4 sorted in the same way as the original events list.rSrT}rU(h5X4 sorted in the same way as the original events list.h6jubeubaubh)rV}rW(h5X;[CHANGE] Condition events now also except processed events.rXh6hh?hBhDhhF}rY(hH]hI]hJ]hK]hN]uhPNhQhhR]rZh_)r[}r\(h5jXh6jVh?hBhDhchF}r](hH]hI]hJ]hK]hN]uhPK&hR]r^h[X;[CHANGE] Condition events now also except processed events.r_r`}ra(h5jXh6j[ubaubaubh)rb}rc(h5X[FIX] ``Resource.request()`` directly after ``Resource.release()`` no longer successful. The process now has to wait as supposed to.h6hh?hBhDhhF}rd(hH]hI]hJ]hK]hN]uhPNhQhhR]reh_)rf}rg(h5X[FIX] ``Resource.request()`` directly after ``Resource.release()`` no longer successful. The process now has to wait as supposed to.h6jbh?hBhDhchF}rh(hH]hI]hJ]hK]hN]uhPK'hR]ri(h[X[FIX] rjrk}rl(h5X[FIX] h6jfubh)rm}rn(h5X``Resource.request()``hF}ro(hH]hI]hJ]hK]hN]uh6jfhR]rph[XResource.request()rqrr}rs(h5Uh6jmubahDhubh[X directly after rtru}rv(h5X directly after h6jfubh)rw}rx(h5X``Resource.release()``hF}ry(hH]hI]hJ]hK]hN]uh6jfhR]rzh[XResource.release()r{r|}r}(h5Uh6jwubahDhubh[XB no longer successful. The process now has to wait as supposed to.r~r}r(h5XB no longer successful. The process now has to wait as supposed to.h6jfubeubaubh)r}r(h5Xq[FIX] ``Event.fail()`` now accept all exceptions derived from ``BaseException`` instead of only ``Exception``. h6hh?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r(h5Xo[FIX] ``Event.fail()`` now accept all exceptions derived from ``BaseException`` instead of only ``Exception``.h6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPK)hR]r(h[X[FIX] rr}r(h5X[FIX] h6jubh)r}r(h5X``Event.fail()``hF}r(hH]hI]hJ]hK]hN]uh6jhR]rh[X Event.fail()rr}r(h5Uh6jubahDhubh[X( now accept all exceptions derived from rr}r(h5X( now accept all exceptions derived from h6jubh)r}r(h5X``BaseException``hF}r(hH]hI]hJ]hK]hN]uh6jhR]rh[X BaseExceptionrr}r(h5Uh6jubahDhubh[X instead of only rr}r(h5X instead of only h6jubh)r}r(h5X ``Exception``hF}r(hH]hI]hJ]hK]hN]uh6jhR]rh[X Exceptionrr}r(h5Uh6jubahDhubh[X.r}r(h5X.h6jubeubaubeubeubh7)r}r(h5Uh6h=h?hBhDhEhF}r(hH]hI]hJ]hK]rUid5rahN]rhauhPK.hQhhR]r(hT)r}r(h5X3.0.3 – 2014-03-06rh6jh?hBhDhXhF}r(hH]hI]hJ]hK]hN]uhPK.hQhhR]rh[X3.0.3 – 2014-03-06rr}r(h5jh6jubaubh)r}r(h5Uh6jh?hBhDhhF}r(hX-hK]hJ]hH]hI]hN]uhPK0hQhhR]r(h)r}r(h5X[NEW] Guide to SimPy basics.rh6jh?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r(h5jh6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPK0hR]rh[X[NEW] Guide to SimPy basics.rr}r(h5jh6jubaubaubh)r}r(h5X"[NEW] Guide to SimPy Environments.rh6jh?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r(h5jh6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPK1hR]rh[X"[NEW] Guide to SimPy Environments.rr}r(h5jh6jubaubaubh)r}r(h5XG[FIX] Timing problems with real time simulation on Windows (issue #46).rh6jh?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r(h5jh6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPK2hR]rh[XG[FIX] Timing problems with real time simulation on Windows (issue #46).rr}r(h5jh6jubaubaubh)r}r(h5XI[FIX] Installation problems on Windows due to Unicode errors (issue #41).rh6jh?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r(h5jh6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPK3hR]rh[XI[FIX] Installation problems on Windows due to Unicode errors (issue #41).rr}r(h5jh6jubaubaubh)r}r(h5X#[FIX] Minor documentation issues. h6jh?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r(h5X![FIX] Minor documentation issues.rh6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPK4hR]rh[X![FIX] Minor documentation issues.rr}r(h5jh6jubaubaubeubeubh7)r}r(h5Uh6h=h?hBhDhEhF}r(hH]hI]hJ]hK]rUid6rahN]rh(auhPK8hQhhR]r(hT)r}r(h5X3.0.2 – 2013-10-24rh6jh?hBhDhXhF}r(hH]hI]hJ]hK]hN]uhPK8hQhhR]rh[X3.0.2 – 2013-10-24rr}r(h5jh6jubaubh)r}r(h5Uh6jh?hBhDhhF}r (hX-hK]hJ]hH]hI]hN]uhPK:hQhhR]r h)r }r (h5XX[FIX] The default capacity for ``Container`` and ``FilterStore`` is now also ``inf``. h6jh?hBhDhhF}r (hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r(h5XV[FIX] The default capacity for ``Container`` and ``FilterStore`` is now also ``inf``.h6j h?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPK:hR]r(h[X [FIX] The default capacity for rr}r(h5X [FIX] The default capacity for h6jubh)r}r(h5X ``Container``hF}r(hH]hI]hJ]hK]hN]uh6jhR]rh[X Containerrr}r(h5Uh6jubahDhubh[X and rr}r(h5X and h6jubh)r }r!(h5X``FilterStore``hF}r"(hH]hI]hJ]hK]hN]uh6jhR]r#h[X FilterStorer$r%}r&(h5Uh6j ubahDhubh[X is now also r'r(}r)(h5X is now also h6jubh)r*}r+(h5X``inf``hF}r,(hH]hI]hJ]hK]hN]uh6jhR]r-h[Xinfr.r/}r0(h5Uh6j*ubahDhubh[X.r1}r2(h5X.h6jubeubaubaubeubh7)r3}r4(h5Uh6h=h?hBhDhEhF}r5(hH]hI]hJ]hK]r6Uid7r7ahN]r8hauhPK?hQhhR]r9(hT)r:}r;(h5X3.0.1 – 2013-10-24r<h6j3h?hBhDhXhF}r=(hH]hI]hJ]hK]hN]uhPK?hQhhR]r>h[X3.0.1 – 2013-10-24r?r@}rA(h5j<h6j:ubaubh)rB}rC(h5Uh6j3h?hBhDhhF}rD(hX-hK]hJ]hH]hI]hN]uhPKAhQhhR]rEh)rF}rG(h5Xm[FIX] Documentation and default parameters of ``Store`` didn't match. Its default capacity is now ``inf``. h6jBh?hBhDhhF}rH(hH]hI]hJ]hK]hN]uhPNhQhhR]rIh_)rJ}rK(h5Xk[FIX] Documentation and default parameters of ``Store`` didn't match. Its default capacity is now ``inf``.h6jFh?hBhDhchF}rL(hH]hI]hJ]hK]hN]uhPKAhR]rM(h[X/[FIX] Documentation and default parameters of rNrO}rP(h5X/[FIX] Documentation and default parameters of h6jJubh)rQ}rR(h5X ``Store``hF}rS(hH]hI]hJ]hK]hN]uh6jJhR]rTh[XStorerUrV}rW(h5Uh6jQubahDhubh[X+ didn't match. Its default capacity is now rXrY}rZ(h5X+ didn't match. Its default capacity is now h6jJubh)r[}r\(h5X``inf``hF}r](hH]hI]hJ]hK]hN]uh6jJhR]r^h[Xinfr_r`}ra(h5Uh6j[ubahDhubh[X.rb}rc(h5X.h6jJubeubaubaubeubh7)rd}re(h5Uh6h=h?hBhDhEhF}rf(hH]hI]hJ]hK]rgUid8rhahN]rih auhPKFhQhhR]rj(hT)rk}rl(h5X3.0 – 2013-10-11rmh6jdh?hBhDhXhF}rn(hH]hI]hJ]hK]hN]uhPKFhQhhR]roh[X3.0 – 2013-10-11rprq}rr(h5jmh6jkubaubh_)rs}rt(h5XSimPy 3 has been completely rewritten from scratch. Our main goals were to simplify the API and code base as well as making SimPy more flexible and extensible. Some of the most important changes are:ruh6jdh?hBhDhchF}rv(hH]hI]hJ]hK]hN]uhPKHhQhhR]rwh[XSimPy 3 has been completely rewritten from scratch. Our main goals were to simplify the API and code base as well as making SimPy more flexible and extensible. Some of the most important changes are:rxry}rz(h5juh6jsubaubh)r{}r|(h5Uh6jdh?hBhDhhF}r}(hX-hK]hJ]hH]hI]hN]uhPKLhQhhR]r~(h)r}r(h5XStronger focus on events. Processes yield event instances and are suspended until the event is triggered. An example for an event is a *timeout* (formerly known as *hold*), but even processes are now events, too (you can wait until a process terminates). h6j{h?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r(h5XStronger focus on events. Processes yield event instances and are suspended until the event is triggered. An example for an event is a *timeout* (formerly known as *hold*), but even processes are now events, too (you can wait until a process terminates).h6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPKLhR]r(h[XStronger focus on events. Processes yield event instances and are suspended until the event is triggered. An example for an event is a rr}r(h5XStronger focus on events. Processes yield event instances and are suspended until the event is triggered. An example for an event is a h6jubjJ)r}r(h5X *timeout*hF}r(hH]hI]hJ]hK]hN]uh6jhR]rh[Xtimeoutrr}r(h5Uh6jubahDjRubh[X (formerly known as rr}r(h5X (formerly known as h6jubjJ)r}r(h5X*hold*hF}r(hH]hI]hJ]hK]hN]uh6jhR]rh[Xholdrr}r(h5Uh6jubahDjRubh[XT), but even processes are now events, too (you can wait until a process terminates).rr}r(h5XT), but even processes are now events, too (you can wait until a process terminates).h6jubeubaubh)r}r(h5XUEvents can be combined with ``&`` (and) and ``|`` (or) to create *condition events*. h6j{h?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r(h5XTEvents can be combined with ``&`` (and) and ``|`` (or) to create *condition events*.h6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPKQhR]r(h[XEvents can be combined with rr}r(h5XEvents can be combined with h6jubh)r}r(h5X``&``hF}r(hH]hI]hJ]hK]hN]uh6jhR]rh[X&r}r(h5Uh6jubahDhubh[X (and) and rr}r(h5X (and) and h6jubh)r}r(h5X``|``hF}r(hH]hI]hJ]hK]hN]uh6jhR]rh[X|r}r(h5Uh6jubahDhubh[X (or) to create rr}r(h5X (or) to create h6jubjJ)r}r(h5X*condition events*hF}r(hH]hI]hJ]hK]hN]uh6jhR]rh[Xcondition eventsrr}r(h5Uh6jubahDjRubh[X.r}r(h5X.h6jubeubaubh)r}r(h5XfProcess can now be defined by any generator function. You don't have to subclass ``Process`` anymore. h6j{h?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r(h5XeProcess can now be defined by any generator function. You don't have to subclass ``Process`` anymore.h6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPKThR]r(h[XQProcess can now be defined by any generator function. You don't have to subclass rr}r(h5XQProcess can now be defined by any generator function. You don't have to subclass h6jubh)r}r(h5X ``Process``hF}r(hH]hI]hJ]hK]hN]uh6jhR]rh[XProcessrr}r(h5Uh6jubahDhubh[X anymore.rr}r(h5X anymore.h6jubeubaubh)r}r(h5XNo more global simulation state. Every simulation stores its state in an *environment* which is comparable to the old ``Simulation`` class. h6j{h?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r(h5XNo more global simulation state. Every simulation stores its state in an *environment* which is comparable to the old ``Simulation`` class.h6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPKWhR]r(h[XINo more global simulation state. Every simulation stores its state in an rr}r(h5XINo more global simulation state. Every simulation stores its state in an h6jubjJ)r}r(h5X *environment*hF}r(hH]hI]hJ]hK]hN]uh6jhR]rh[X environmentrr}r(h5Uh6jubahDjRubh[X which is comparable to the old rr}r(h5X which is comparable to the old h6jubh)r}r(h5X``Simulation``hF}r(hH]hI]hJ]hK]hN]uh6jhR]rh[X Simulationrr}r(h5Uh6jubahDhubh[X class.rr}r(h5X class.h6jubeubaubh)r}r(h5X:Improved resource system with newly added resource types. h6j{h?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r(h5X9Improved resource system with newly added resource types.rh6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPKZhR]rh[X9Improved resource system with newly added resource types.rr}r(h5jh6jubaubaubh)r}r(h5X`Removed plotting and GUI capabilities. `Pyside`__ and `matplotlib`__ are much better with this. h6j{h?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r (h5X_Removed plotting and GUI capabilities. `Pyside`__ and `matplotlib`__ are much better with this.h6jh?hBhDhchF}r (hH]hI]hJ]hK]hN]uhPK\hR]r (h[X'Removed plotting and GUI capabilities. r r }r(h5X'Removed plotting and GUI capabilities. h6jubh)r}r(h5X `Pyside`__hKh6jhDhhF}r(UnameXPysidehX!http://qt-project.org/wiki/PySiderhK]hJ]hH]hI]hN]hKuhR]rh[XPysiderr}r(h5Uh6jubaubh[X and rr}r(h5X and h6jubh)r}r(h5X`matplotlib`__hKh6jhDhhF}r(UnameX matplotlibhXhttp://matplotlib.org/rhK]hJ]hH]hI]hN]hKuhR]rh[X matplotlibrr }r!(h5Uh6jubaubh[X are much better with this.r"r#}r$(h5X are much better with this.h6jubeubaubh)r%}r&(h5XWGreatly improved test suite. Its cleaner, and the tests are shorter and more numerous. h6j{h?hBhDhhF}r'(hH]hI]hJ]hK]hN]uhPNhQhhR]r(h_)r)}r*(h5XVGreatly improved test suite. Its cleaner, and the tests are shorter and more numerous.r+h6j%h?hBhDhchF}r,(hH]hI]hJ]hK]hN]uhPK_hR]r-h[XVGreatly improved test suite. Its cleaner, and the tests are shorter and more numerous.r.r/}r0(h5j+h6j)ubaubaubh)r1}r2(h5X%Completely overhauled documentation. h6j{h?hBhDhhF}r3(hH]hI]hJ]hK]hN]uhPNhQhhR]r4h_)r5}r6(h5X$Completely overhauled documentation.r7h6j1h?hBhDhchF}r8(hH]hI]hJ]hK]hN]uhPKbhR]r9h[X$Completely overhauled documentation.r:r;}r<(h5j7h6j5ubaubaubeubh_)r=}r>(h5XThere is a `guide for porting from SimPy 2 to SimPy 3`__. If you want to stick to SimPy 2 for a while, change your requirements to ``'SimPy>=2.3,<3'``.h6jdh?hBhDhchF}r?(hH]hI]hJ]hK]hN]uhPKdhQhhR]r@(h[X There is a rArB}rC(h5X There is a h6j=ubh)rD}rE(h5X-`guide for porting from SimPy 2 to SimPy 3`__hKh6j=hDhhF}rF(UnameX)guide for porting from SimPy 2 to SimPy 3hXOhttps://simpy.readthedocs.org/en/latest/topical_guides/porting_from_simpy2.htmlrGhK]hJ]hH]hI]hN]hKuhR]rHh[X)guide for porting from SimPy 2 to SimPy 3rIrJ}rK(h5Uh6jDubaubh[XK. If you want to stick to SimPy 2 for a while, change your requirements to rLrM}rN(h5XK. If you want to stick to SimPy 2 for a while, change your requirements to h6j=ubh)rO}rP(h5X``'SimPy>=2.3,<3'``hF}rQ(hH]hI]hJ]hK]hN]uh6j=hR]rRh[X'SimPy>=2.3,<3'rSrT}rU(h5Uh6jOubahDhubh[X.rV}rW(h5X.h6j=ubeubh_)rX}rY(h5X>All in all, SimPy has become a framework for asynchronous programming based on coroutines. It brings more than ten years of experience and scientific know-how in the field of event-discrete simulation to the world of asynchronous programming and should thus be a solid foundation for everything based on an event loop.rZh6jdh?hBhDhchF}r[(hH]hI]hJ]hK]hN]uhPKghQhhR]r\h[X>All in all, SimPy has become a framework for asynchronous programming based on coroutines. It brings more than ten years of experience and scientific know-how in the field of event-discrete simulation to the world of asynchronous programming and should thus be a solid foundation for everything based on an event loop.r]r^}r_(h5jZh6jXubaubh_)r`}ra(h5XEYou can find information about older versions on the `history page`__rbh6jdh?hBhDhchF}rc(hH]hI]hJ]hK]hN]uhPKmhQhhR]rd(h[X5You can find information about older versions on the rerf}rg(h5X5You can find information about older versions on the h6j`ubh)rh}ri(h5X`history page`__hKh6j`hDhhF}rj(UnameX history pagehX:https://simpy.readthedocs.org/en/latest/about/history.htmlrkhK]hJ]hH]hI]hN]hKuhR]rlh[X history pagermrn}ro(h5Uh6jhubaubeubh)rp}rq(h5X$__ http://qt-project.org/wiki/PySideh:Kh6jdh?hBhDhhF}rr(hjhK]rsUid9rtahJ]hH]hI]hN]hKuhPKohQhhR]ubh)ru}rv(h5X__ http://matplotlib.org/h:Kh6jdh?hBhDhhF}rw(hjhK]rxUid10ryahJ]hH]hI]hN]hKuhPKphQhhR]ubh)rz}r{(h5XR__ https://simpy.readthedocs.org/en/latest/topical_guides/porting_from_simpy2.htmlh:Kh6jdh?hBhDhhF}r|(hjGhK]r}Uid11r~ahJ]hH]hI]hN]hKuhPKqhQhhR]ubh)r}r(h5X=__ https://simpy.readthedocs.org/en/latest/about/history.htmlh:Kh6jdh?hBhDhhF}r(hjkhK]rUid12rahJ]hH]hI]hN]hKuhPKrhQhhR]ubeubh7)r}r(h5Uh6h=h?hBhDhEhF}r(hH]hI]hJ]hK]rUid13rahN]rhauhPKvhQhhR]r(hT)r}r(h5X2.3.1 – 2012-01-28rh6jh?hBhDhXhF}r(hH]hI]hJ]hK]hN]uhPKvhQhhR]rh[X2.3.1 – 2012-01-28rr}r(h5jh6jubaubh)r}r(h5Uh6jh?hBhDhhF}r(hX-hK]hJ]hH]hI]hN]uhPKxhQhhR]r(h)r}r(h5X-[NEW] More improvements on the documentation.rh6jh?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r(h5jh6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPKxhR]rh[X-[NEW] More improvements on the documentation.rr}r(h5jh6jubaubaubh)r}r(h5X<[FIX] Syntax error in tkconsole.py when installing on Py3.2.rh6jh?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r(h5jh6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPKyhR]rh[X<[FIX] Syntax error in tkconsole.py when installing on Py3.2.rr}r(h5jh6jubaubaubh)r}r(h5X6[FIX] Added *mock* to the dep. list in SimPy.test(). h6jh?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r(h5X4[FIX] Added *mock* to the dep. list in SimPy.test().h6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPKzhR]r(h[X [FIX] Added rr}r(h5X [FIX] Added h6jubjJ)r}r(h5X*mock*hF}r(hH]hI]hJ]hK]hN]uh6jhR]rh[Xmockrr}r(h5Uh6jubahDjRubh[X" to the dep. list in SimPy.test().rr}r(h5X" to the dep. list in SimPy.test().h6jubeubaubeubeubh7)r}r(h5Uh6h=h?hBhDhEhF}r(hH]hI]hJ]hK]rUid14rahN]rhauhPK~hQhhR]r(hT)r}r(h5X2.3 – 2011-12-24rh6jh?hBhDhXhF}r(hH]hI]hJ]hK]hN]uhPK~hQhhR]rh[X2.3 – 2011-12-24rr}r(h5jh6jubaubh)r}r(h5Uh6jh?hBhDhhF}r(hX-hK]hJ]hH]hI]hN]uhPKhQhhR]r(h)r}r(h5XI[NEW] Support for Python 3.2. Support for Python <= 2.5 has been dropped.rh6jh?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r(h5jh6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPKhR]rh[XI[NEW] Support for Python 3.2. Support for Python <= 2.5 has been dropped.rr}r(h5jh6jubaubaubh)r}r(h5XM[NEW] SimPy.test() method to run the tests on the installed version of SimPy.rh6jh?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r(h5jh6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPKhR]rh[XM[NEW] SimPy.test() method to run the tests on the installed version of SimPy.rr}r(h5jh6jubaubaubh)r}r(h5X=[NEW] Tutorials/examples were integrated into the test suite.rh6jh?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r(h5jh6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPKhR]rh[X=[NEW] Tutorials/examples were integrated into the test suite.rr}r(h5jh6jubaubaubh)r}r(h5Xi[CHANGE] Even more code clean-up (e.g., removed prints throughout the code, removed if-main-blocks, ...).h6jh?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r(h5Xi[CHANGE] Even more code clean-up (e.g., removed prints throughout the code, removed if-main-blocks, ...).rh6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPKhR]rh[Xi[CHANGE] Even more code clean-up (e.g., removed prints throughout the code, removed if-main-blocks, ...).rr}r(h5jh6jubaubaubh)r}r(h5X+[CHANGE] Many documentation improvements. h6jh?hBhDhhF}r (hH]hI]hJ]hK]hN]uhPNhQhhR]r h_)r }r (h5X)[CHANGE] Many documentation improvements.r h6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPKhR]rh[X)[CHANGE] Many documentation improvements.rr}r(h5j h6j ubaubaubeubeubh7)r}r(h5Uh6h=h?hBhDhEhF}r(hH]hI]hJ]hK]rUid15rahN]rhauhPKhQhhR]r(hT)r}r(h5X2.2 – 2011-09-27rh6jh?hBhDhXhF}r(hH]hI]hJ]hK]hN]uhPKhQhhR]rh[X2.2 – 2011-09-27rr }r!(h5jh6jubaubh)r"}r#(h5Uh6jh?hBhDhhF}r$(hX-hK]hJ]hH]hI]hN]uhPKhQhhR]r%(h)r&}r'(h5X[CHANGE] Restructured package layout to be conform to the `Hitchhiker’s Guide to packaging `_h6j"h?hBhDhhF}r((hH]hI]hJ]hK]hN]uhPNhQhhR]r)h_)r*}r+(h5X[CHANGE] Restructured package layout to be conform to the `Hitchhiker’s Guide to packaging `_h6j&h?hBhDhchF}r,(hH]hI]hJ]hK]hN]uhPKhR]r-(h[X:[CHANGE] Restructured package layout to be conform to the r.r/}r0(h5X:[CHANGE] Restructured package layout to be conform to the h6j*ubh)r1}r2(h5XJ`Hitchhiker’s Guide to packaging `_hF}r3(UnameX!Hitchhiker’s Guide to packaginghX#http://guide.python-distribute.org/r4hK]hJ]hH]hI]hN]uh6j*hR]r5h[X!Hitchhiker’s Guide to packagingr6r7}r8(h5Uh6j1ubahDhubh)r9}r:(h5X& h:Kh6j*hDhhF}r;(Urefurij4hK]r<Uhitchhikers-guide-to-packagingr=ahJ]hH]hI]hN]r>hauhR]ubeubaubh)r?}r@(h5X*[CHANGE] Tests have been ported to pytest.rAh6j"h?hBhDhhF}rB(hH]hI]hJ]hK]hN]uhPNhQhhR]rCh_)rD}rE(h5jAh6j?h?hBhDhchF}rF(hH]hI]hJ]hK]hN]uhPKhR]rGh[X*[CHANGE] Tests have been ported to pytest.rHrI}rJ(h5jAh6jDubaubaubh)rK}rL(h5X2[CHANGE] Documentation improvements and clean-ups.rMh6j"h?hBhDhhF}rN(hH]hI]hJ]hK]hN]uhPNhQhhR]rOh_)rP}rQ(h5jMh6jKh?hBhDhchF}rR(hH]hI]hJ]hK]hN]uhPKhR]rSh[X2[CHANGE] Documentation improvements and clean-ups.rTrU}rV(h5jMh6jPubaubaubh)rW}rX(h5XV[FIX] Fixed incorrect behavior of Store._put, thanks to Johannes Koomer for the fix. h6j"h?hBhDhhF}rY(hH]hI]hJ]hK]hN]uhPNhQhhR]rZh_)r[}r\(h5XT[FIX] Fixed incorrect behavior of Store._put, thanks to Johannes Koomer for the fix.r]h6jWh?hBhDhchF}r^(hH]hI]hJ]hK]hN]uhPKhR]r_h[XT[FIX] Fixed incorrect behavior of Store._put, thanks to Johannes Koomer for the fix.r`ra}rb(h5j]h6j[ubaubaubeubeubh7)rc}rd(h5Uh6h=h?hBhDhEhF}re(hH]hI]hJ]hK]rfUid16rgahN]rhh auhPKhQhhR]ri(hT)rj}rk(h5X2.1 – 2010-06-03rlh6jch?hBhDhXhF}rm(hH]hI]hJ]hK]hN]uhPKhQhhR]rnh[X2.1 – 2010-06-03rorp}rq(h5jlh6jjubaubh)rr}rs(h5Uh6jch?hBhDhhF}rt(hX-hK]hJ]hH]hI]hN]uhPKhQhhR]ru(h)rv}rw(h5X[NEW] A function *step* has been added to the API. When called, it executes the next scheduled event. (*step* is actually a method of *Simulation*.)h6jrh?hBhDhhF}rx(hH]hI]hJ]hK]hN]uhPNhQhhR]ryh_)rz}r{(h5X[NEW] A function *step* has been added to the API. When called, it executes the next scheduled event. (*step* is actually a method of *Simulation*.)h6jvh?hBhDhchF}r|(hH]hI]hJ]hK]hN]uhPKhR]r}(h[X[NEW] A function r~r}r(h5X[NEW] A function h6jzubjJ)r}r(h5X*step*hF}r(hH]hI]hJ]hK]hN]uh6jzhR]rh[Xsteprr}r(h5Uh6jubahDjRubh[XP has been added to the API. When called, it executes the next scheduled event. (rr}r(h5XP has been added to the API. When called, it executes the next scheduled event. (h6jzubjJ)r}r(h5X*step*hF}r(hH]hI]hJ]hK]hN]uh6jzhR]rh[Xsteprr}r(h5Uh6jubahDjRubh[X is actually a method of rr}r(h5X is actually a method of h6jzubjJ)r}r(h5X *Simulation*hF}r(hH]hI]hJ]hK]hN]uh6jzhR]rh[X Simulationrr}r(h5Uh6jubahDjRubh[X.)rr}r(h5X.)h6jzubeubaubh)r}r(h5X[NEW] Another new function is *peek*. It returns the time of the next event. By using peek and step together, one can easily write e.g. an interactive program to step through a simulation event by event.h6jrh?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r(h5X[NEW] Another new function is *peek*. It returns the time of the next event. By using peek and step together, one can easily write e.g. an interactive program to step through a simulation event by event.h6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPKhR]r(h[X[NEW] Another new function is rr}r(h5X[NEW] Another new function is h6jubjJ)r}r(h5X*peek*hF}r(hH]hI]hJ]hK]hN]uh6jhR]rh[Xpeekrr}r(h5Uh6jubahDjRubh[X. It returns the time of the next event. By using peek and step together, one can easily write e.g. an interactive program to step through a simulation event by event.rr}r(h5X. It returns the time of the next event. By using peek and step together, one can easily write e.g. an interactive program to step through a simulation event by event.h6jubeubaubh)r}r(h5X[NEW] A simple interactive debugger ``stepping.py`` has been added. It allows stepping through a simulation, with options to skip to a certain time, skip to the next event of a given process, or viewing the event list.h6jrh?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r(h5X[NEW] A simple interactive debugger ``stepping.py`` has been added. It allows stepping through a simulation, with options to skip to a certain time, skip to the next event of a given process, or viewing the event list.h6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPKhR]r(h[X$[NEW] A simple interactive debugger rr}r(h5X$[NEW] A simple interactive debugger h6jubh)r}r(h5X``stepping.py``hF}r(hH]hI]hJ]hK]hN]uh6jhR]rh[X stepping.pyrr}r(h5Uh6jubahDhubh[X has been added. It allows stepping through a simulation, with options to skip to a certain time, skip to the next event of a given process, or viewing the event list.rr}r(h5X has been added. It allows stepping through a simulation, with options to skip to a certain time, skip to the next event of a given process, or viewing the event list.h6jubeubaubh)r}r(h5X|[NEW] Versions of the Bank tutorials (documents and programs) using the advanced- [NEW] object-oriented API have been added.h6jrh?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r(h5X|[NEW] Versions of the Bank tutorials (documents and programs) using the advanced- [NEW] object-oriented API have been added.rh6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPKhR]rh[X|[NEW] Versions of the Bank tutorials (documents and programs) using the advanced- [NEW] object-oriented API have been added.rr}r(h5jh6jubaubaubh)r}r(h5XY[NEW] A new document describes tools for gaining insight into and debugging SimPy models.h6jrh?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r(h5XY[NEW] A new document describes tools for gaining insight into and debugging SimPy models.rh6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPKhR]rh[XY[NEW] A new document describes tools for gaining insight into and debugging SimPy models.rr}r(h5jh6jubaubaubh)r}r(h5Xm[CHANGE] Major re-structuring of SimPy code, resulting in much less SimPy code – great for the maintainers.h6jrh?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r(h5Xm[CHANGE] Major re-structuring of SimPy code, resulting in much less SimPy code – great for the maintainers.rh6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPKhR]rh[Xm[CHANGE] Major re-structuring of SimPy code, resulting in much less SimPy code – great for the maintainers.rr}r(h5jh6jubaubaubh)r}r(h5Xc[CHANGE] Checks have been added which test whether entities belong to the same Simulation instance.h6jrh?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r(h5Xc[CHANGE] Checks have been added which test whether entities belong to the same Simulation instance.rh6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPKhR]rh[Xc[CHANGE] Checks have been added which test whether entities belong to the same Simulation instance.rr}r(h5jh6jubaubaubh)r}r(h5X[CHANGE] The Monitor and Tally methods timeAverage and timeVariance now calculate only with the observed time-series. No value is assumed for the period prior to the first observation.h6jrh?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r(h5X[CHANGE] The Monitor and Tally methods timeAverage and timeVariance now calculate only with the observed time-series. No value is assumed for the period prior to the first observation.rh6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPKhR]rh[X[CHANGE] The Monitor and Tally methods timeAverage and timeVariance now calculate only with the observed time-series. No value is assumed for the period prior to the first observation.rr}r(h5jh6jubaubaubh)r}r(h5Xu[CHANGE] Changed class Lister so that circular references between objects no longer lead to stack overflow and crash.h6jrh?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r }r (h5Xu[CHANGE] Changed class Lister so that circular references between objects no longer lead to stack overflow and crash.r h6jh?hBhDhchF}r (hH]hI]hJ]hK]hN]uhPKhR]r h[Xu[CHANGE] Changed class Lister so that circular references between objects no longer lead to stack overflow and crash.rr}r(h5j h6j ubaubaubh)r}r(h5XH[FIX] Functions *allEventNotices* and *allEventTimes* are working again.rh6jrh?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r(h5jh6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPKhR]r(h[X[FIX] Functions rr}r(h5X[FIX] Functions h6jubjJ)r}r(h5X*allEventNotices*hF}r(hH]hI]hJ]hK]hN]uh6jhR]r h[XallEventNoticesr!r"}r#(h5Uh6jubahDjRubh[X and r$r%}r&(h5X and h6jubjJ)r'}r((h5X*allEventTimes*hF}r)(hH]hI]hJ]hK]hN]uh6jhR]r*h[X allEventTimesr+r,}r-(h5Uh6j'ubahDjRubh[X are working again.r.r/}r0(h5X are working again.h6jubeubaubh)r1}r2(h5X;[FIX] Error messages for methods in SimPy.Lib work again. h6jrh?hBhDhhF}r3(hH]hI]hJ]hK]hN]uhPNhQhhR]r4h_)r5}r6(h5X9[FIX] Error messages for methods in SimPy.Lib work again.r7h6j1h?hBhDhchF}r8(hH]hI]hJ]hK]hN]uhPKhR]r9h[X9[FIX] Error messages for methods in SimPy.Lib work again.r:r;}r<(h5j7h6j5ubaubaubeubeubh7)r=}r>(h5Uh6h=h?hBhDhEhF}r?(hH]hI]hJ]hK]r@Uid17rAahN]rBh-auhPKhQhhR]rC(hT)rD}rE(h5X2.0.1 – 2009-04-06rFh6j=h?hBhDhXhF}rG(hH]hI]hJ]hK]hN]uhPKhQhhR]rHh[X2.0.1 – 2009-04-06rIrJ}rK(h5jFh6jDubaubh)rL}rM(h5Uh6j=h?hBhDhhF}rN(hX-hK]hJ]hH]hI]hN]uhPKhQhhR]rO(h)rP}rQ(h5Xb[NEW] Tests for real time behavior (testRT_Behavior.py and testRT_Behavior_OO.py in folder SimPy).h6jLh?hBhDhhF}rR(hH]hI]hJ]hK]hN]uhPNhQhhR]rSh_)rT}rU(h5Xb[NEW] Tests for real time behavior (testRT_Behavior.py and testRT_Behavior_OO.py in folder SimPy).rVh6jPh?hBhDhchF}rW(hH]hI]hJ]hK]hN]uhPKhR]rXh[Xb[NEW] Tests for real time behavior (testRT_Behavior.py and testRT_Behavior_OO.py in folder SimPy).rYrZ}r[(h5jVh6jTubaubaubh)r\}r](h5XU[FIX] Repaired a number of coding errors in several models in the SimPyModels folder.h6jLh?hBhDhhF}r^(hH]hI]hJ]hK]hN]uhPNhQhhR]r_h_)r`}ra(h5XU[FIX] Repaired a number of coding errors in several models in the SimPyModels folder.rbh6j\h?hBhDhchF}rc(hH]hI]hJ]hK]hN]uhPKhR]rdh[XU[FIX] Repaired a number of coding errors in several models in the SimPyModels folder.rerf}rg(h5jbh6j`ubaubaubh)rh}ri(h5XI[FIX] Repaired SimulationRT.py bug introduced by recoding for the OO API.rjh6jLh?hBhDhhF}rk(hH]hI]hJ]hK]hN]uhPNhQhhR]rlh_)rm}rn(h5jjh6jhh?hBhDhchF}ro(hH]hI]hJ]hK]hN]uhPKhR]rph[XI[FIX] Repaired SimulationRT.py bug introduced by recoding for the OO API.rqrr}rs(h5jjh6jmubaubaubh)rt}ru(h5X [FIX] Repaired errors in sample programs in documents: - Simulation with SimPy - In Depth Manual - SimPy’s Object Oriented API Manual - Simulation With Real Time Synchronization Manual - SimPlot Manual - Publication-quality Plot Production With Matplotlib Manual h6jLh?NhDhhF}rv(hH]hI]hJ]hK]hN]uhPNhQhhR]rw(h_)rx}ry(h5X6[FIX] Repaired errors in sample programs in documents:rzh6jth?hBhDhchF}r{(hH]hI]hJ]hK]hN]uhPKhR]r|h[X6[FIX] Repaired errors in sample programs in documents:r}r~}r(h5jzh6jxubaubh)r}r(h5UhF}r(hX-hK]hJ]hH]hI]hN]uh6jthR]r(h)r}r(h5X'Simulation with SimPy - In Depth ManualrhF}r(hH]hI]hJ]hK]hN]uh6jhR]rh_)r}r(h5jh6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPKhR]rh[X'Simulation with SimPy - In Depth Manualrr}r(h5jh6jubaubahDhubh)r}r(h5X$SimPy’s Object Oriented API ManualrhF}r(hH]hI]hJ]hK]hN]uh6jhR]rh_)r}r(h5jh6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPKhR]rh[X$SimPy’s Object Oriented API Manualrr}r(h5jh6jubaubahDhubh)r}r(h5X0Simulation With Real Time Synchronization ManualrhF}r(hH]hI]hJ]hK]hN]uh6jhR]rh_)r}r(h5jh6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPKhR]rh[X0Simulation With Real Time Synchronization Manualrr}r(h5jh6jubaubahDhubh)r}r(h5XSimPlot ManualrhF}r(hH]hI]hJ]hK]hN]uh6jhR]rh_)r}r(h5jh6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPKhR]rh[XSimPlot Manualrr}r(h5jh6jubaubahDhubh)r}r(h5X<Publication-quality Plot Production With Matplotlib Manual hF}r(hH]hI]hJ]hK]hN]uh6jhR]rh_)r}r(h5X:Publication-quality Plot Production With Matplotlib Manualrh6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPKhR]rh[X:Publication-quality Plot Production With Matplotlib Manualrr}r(h5jh6jubaubahDhubehDhubeubeubeubh7)r}r(h5Uh6h=h?hBhDhEhF}r(hH]hI]hJ]hK]rUid18rahN]rhauhPKhQhhR]r(hT)r}r(h5X2.0.0 – 2009-01-26rh6jh?hBhDhXhF}r(hH]hI]hJ]hK]hN]uhPKhQhhR]rh[X2.0.0 – 2009-01-26rr}r(h5jh6jubaubh_)r}r(h5XThis is a major release with changes to the SimPy application programming interface (API) and the formatting of the documentation.rh6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPKhQhhR]rh[XThis is a major release with changes to the SimPy application programming interface (API) and the formatting of the documentation.rr}r(h5jh6jubaubh7)r}r(h5Uh6jh?hBhDhEhF}r(hH]hI]hJ]hK]rU api-changesrahN]rhauhPKhQhhR]r(hT)r}r(h5X API changesrh6jh?hBhDhXhF}r(hH]hI]hJ]hK]hN]uhPKhQhhR]rh[X API changesrr}r(h5jh6jubaubh_)r}r(h5X^In addition to its existing API, SimPy now also has an object oriented API. The additional APIrh6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPKhQhhR]rh[X^In addition to its existing API, SimPy now also has an object oriented API. The additional APIrr}r(h5jh6jubaubh)r}r(h5Uh6jh?hBhDhhF}r(hX-hK]hJ]hH]hI]hN]uhPKhQhhR]r(h)r}r(h5XKallows running SimPy in parallel on multiple processors or multi-core CPUs,rh6jh?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r(h5jh6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPKhR]rh[XKallows running SimPy in parallel on multiple processors or multi-core CPUs,rr}r(h5jh6jubaubaubh)r}r(h5X.supports better structuring of SimPy programs,rh6jh?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r(h5jh6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPKhR]rh[X.supports better structuring of SimPy programs,rr}r (h5jh6jubaubaubh)r }r (h5Xallows subclassing of class *Simulation* and thus provides users with the capability of creating new simulation modes/libraries like SimulationTrace, andh6jh?hBhDhhF}r (hH]hI]hJ]hK]hN]uhPNhQhhR]r h_)r}r(h5Xallows subclassing of class *Simulation* and thus provides users with the capability of creating new simulation modes/libraries like SimulationTrace, andh6j h?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPKhR]r(h[Xallows subclassing of class rr}r(h5Xallows subclassing of class h6jubjJ)r}r(h5X *Simulation*hF}r(hH]hI]hJ]hK]hN]uh6jhR]rh[X Simulationrr}r(h5Uh6jubahDjRubh[Xq and thus provides users with the capability of creating new simulation modes/libraries like SimulationTrace, andrr}r(h5Xq and thus provides users with the capability of creating new simulation modes/libraries like SimulationTrace, andh6jubeubaubh)r}r (h5XNreduces the total amount of SimPy code, thereby making it easier to maintain. h6jh?hBhDhhF}r!(hH]hI]hJ]hK]hN]uhPNhQhhR]r"h_)r#}r$(h5XMreduces the total amount of SimPy code, thereby making it easier to maintain.r%h6jh?hBhDhchF}r&(hH]hI]hJ]hK]hN]uhPKhR]r'h[XMreduces the total amount of SimPy code, thereby making it easier to maintain.r(r)}r*(h5j%h6j#ubaubaubeubh_)r+}r,(h5X_Note that the OO API is **in addition** to the old API. SimPy 2.0 is fully backward compatible.h6jh?hBhDhchF}r-(hH]hI]hJ]hK]hN]uhPKhQhhR]r.(h[XNote that the OO API is r/r0}r1(h5XNote that the OO API is h6j+ubcdocutils.nodes strong r2)r3}r4(h5X**in addition**hF}r5(hH]hI]hJ]hK]hN]uh6j+hR]r6h[X in additionr7r8}r9(h5Uh6j3ubahDUstrongr:ubh[X8 to the old API. SimPy 2.0 is fully backward compatible.r;r<}r=(h5X8 to the old API. SimPy 2.0 is fully backward compatible.h6j+ubeubeubh7)r>}r?(h5Uh6jh?hBhDhEhF}r@(hH]hI]hJ]hK]rAUdocumentation-format-changesrBahN]rCh,auhPKhQhhR]rD(hT)rE}rF(h5XDocumentation format changesrGh6j>h?hBhDhXhF}rH(hH]hI]hJ]hK]hN]uhPKhQhhR]rIh[XDocumentation format changesrJrK}rL(h5jGh6jEubaubh_)rM}rN(h5XSimPy's documentation has been restructured and processed by the Sphinx documentation generation tool. This has generated one coherent, well structured document which can be easily browsed. A seach capability is included.rOh6j>h?hBhDhchF}rP(hH]hI]hJ]hK]hN]uhPKhQhhR]rQh[XSimPy's documentation has been restructured and processed by the Sphinx documentation generation tool. This has generated one coherent, well structured document which can be easily browsed. A seach capability is included.rRrS}rT(h5jOh6jMubaubeubeubh7)rU}rV(h5Uh6h=h?hBhDhEhF}rW(hH]hI]hJ]hK]rXUmarch-2008-version-1-9-1rYahN]rZhauhPKhQhhR]r[(hT)r\}r](h5XMarch 2008: Version 1.9.1r^h6jUh?hBhDhXhF}r_(hH]hI]hJ]hK]hN]uhPKhQhhR]r`h[XMarch 2008: Version 1.9.1rarb}rc(h5j^h6j\ubaubh_)rd}re(h5X9This is a bug-fix release which cures the following bugs:rfh6jUh?hBhDhchF}rg(hH]hI]hJ]hK]hN]uhPKhQhhR]rhh[X9This is a bug-fix release which cures the following bugs:rirj}rk(h5jfh6jdubaubh)rl}rm(h5Uh6jUh?hBhDhhF}rn(hX-hK]hJ]hH]hI]hN]uhPKhQhhR]ro(h)rp}rq(h5XExcessive production of circular garbage, due to a circular reference between Process instances and event notices. This led to large memory requirements. h6jlh?hBhDhhF}rr(hH]hI]hJ]hK]hN]uhPNhQhhR]rsh_)rt}ru(h5XExcessive production of circular garbage, due to a circular reference between Process instances and event notices. This led to large memory requirements.rvh6jph?hBhDhchF}rw(hH]hI]hJ]hK]hN]uhPKhR]rxh[XExcessive production of circular garbage, due to a circular reference between Process instances and event notices. This led to large memory requirements.ryrz}r{(h5jvh6jtubaubaubh)r|}r}(h5XKRuntime error for preempts of proceeses holding multiple Resource objects. h6jlh?hBhDhhF}r~(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r(h5XJRuntime error for preempts of proceeses holding multiple Resource objects.rh6j|h?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPKhR]rh[XJRuntime error for preempts of proceeses holding multiple Resource objects.rr}r(h5jh6jubaubaubeubh_)r}r(h5XKIt also adds a Short Manual, describing only the basic facilities of SimPy.rh6jUh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPKhQhhR]rh[XKIt also adds a Short Manual, describing only the basic facilities of SimPy.rr}r(h5jh6jubaubeubh7)r}r(h5Uh6h=h?hBhDhEhF}r(hH]hI]hJ]hK]rUdecember-2007-version-1-9rahN]rh)auhPKhQhhR]r(hT)r}r(h5XDecember 2007: Version 1.9rh6jh?hBhDhXhF}r(hH]hI]hJ]hK]hN]uhPKhQhhR]rh[XDecember 2007: Version 1.9rr}r(h5jh6jubaubh_)r}r(h5XRThis is a major release with added functionality/new user API calls and bug fixes.rh6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPKhQhhR]rh[XRThis is a major release with added functionality/new user API calls and bug fixes.rr}r(h5jh6jubaubh7)r}r(h5Uh:Kh6jh?hBhDhEhF}r(hH]rX major changesrahI]hJ]hK]rU major-changesrahN]uhPKhQhhR]r(hT)r}r(h5X Major changesrh6jh?hBhDhXhF}r(hH]hI]hJ]hK]hN]uhPKhQhhR]rh[X Major changesrr}r(h5jh6jubaubh)r}r(h5Uh6jh?hBhDhhF}r(hX-hK]hJ]hH]hI]hN]uhPKhQhhR]r(h)r}r(h5XPThe event list handling has been changed to improve the runtime performance of large SimPy models (models with thousands of processes). The use of dictionaries for timestamps has been stopped. Thanks are due to Prof. Norm Matloff and a team of his students who did a study on improving SimPy performance. This was one of their recommendations. Thanks, Norm and guys! Furthermore, in version 1.9 the 'heapq' sorting package replaces 'bisect'. Finally, cancelling events no longer removes them, but rather marks them. When their event time comes, they are ignored. This was Tony Vignaux' idea! h6jh?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r(h5XOThe event list handling has been changed to improve the runtime performance of large SimPy models (models with thousands of processes). The use of dictionaries for timestamps has been stopped. Thanks are due to Prof. Norm Matloff and a team of his students who did a study on improving SimPy performance. This was one of their recommendations. Thanks, Norm and guys! Furthermore, in version 1.9 the 'heapq' sorting package replaces 'bisect'. Finally, cancelling events no longer removes them, but rather marks them. When their event time comes, they are ignored. This was Tony Vignaux' idea!rh6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPKhR]rh[XOThe event list handling has been changed to improve the runtime performance of large SimPy models (models with thousands of processes). The use of dictionaries for timestamps has been stopped. Thanks are due to Prof. Norm Matloff and a team of his students who did a study on improving SimPy performance. This was one of their recommendations. Thanks, Norm and guys! Furthermore, in version 1.9 the 'heapq' sorting package replaces 'bisect'. Finally, cancelling events no longer removes them, but rather marks them. When their event time comes, they are ignored. This was Tony Vignaux' idea!rr}r(h5jh6jubaubaubh)r}r(h5X?The Manual has been edited and given an easier-to-read layout. h6jh?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r(h5X>The Manual has been edited and given an easier-to-read layout.rh6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPKhR]rh[X>The Manual has been edited and given an easier-to-read layout.rr}r(h5jh6jubaubaubh)r}r(h5XcThe Bank2 tutorial has been extended by models which use more advanced SimPy commands/constructs. h6jh?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r(h5XbThe Bank2 tutorial has been extended by models which use more advanced SimPy commands/constructs.rh6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPKhR]rh[XbThe Bank2 tutorial has been extended by models which use more advanced SimPy commands/constructs.rr}r(h5jh6jubaubaubeubeubh7)r}r(h5Uh:Kh6jh?hBhDhEhF}r(hH]rX bug fixesrahI]hJ]hK]rU bug-fixesrahN]uhPMhQhhR]r(hT)r}r(h5X Bug fixesrh6jh?hBhDhXhF}r(hH]hI]hJ]hK]hN]uhPMhQhhR]rh[X Bug fixesrr}r(h5jh6jubaubh)r}r(h5Uh6jh?hBhDhhF}r(hX-hK]hJ]hH]hI]hN]uhPMhQhhR]rh)r}r(h5X7The tracing of 'activate' statements has been enabled. h6jh?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r(h5X6The tracing of 'activate' statements has been enabled.rh6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPMhR]rh[X6The tracing of 'activate' statements has been enabled.rr}r(h5jh6jubaubaubaubeubh7)r}r(h5Uh:Kh6jh?hBhDhEhF}r(hH]rX additionsrahI]hJ]hK]rU additionsrahN]uhPMhQhhR]r(hT)r}r(h5X Additionsr h6jh?hBhDhXhF}r (hH]hI]hJ]hK]hN]uhPMhQhhR]r h[X Additionsr r }r(h5j h6jubaubh)r}r(h5Uh6jh?hBhDhhF}r(hX-hK]hJ]hH]hI]hN]uhPMhQhhR]r(h)r}r(h5XkA method returning the time-weighted variance of observations has been added to classes Monitor and Tally. h6jh?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r(h5XjA method returning the time-weighted variance of observations has been added to classes Monitor and Tally.rh6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPMhR]rh[XjA method returning the time-weighted variance of observations has been added to classes Monitor and Tally.rr}r(h5jh6jubaubaubh)r}r (h5XNA shortcut activation method called "start" has been added to class Process. h6jh?hBhDhhF}r!(hH]hI]hJ]hK]hN]uhPNhQhhR]r"h_)r#}r$(h5XLA shortcut activation method called "start" has been added to class Process.r%h6jh?hBhDhchF}r&(hH]hI]hJ]hK]hN]uhPM hR]r'h[XLA shortcut activation method called "start" has been added to class Process.r(r)}r*(h5j%h6j#ubaubaubeubeubeubh;h7)r+}r,(h5Uh6h=h?hBhDhEhF}r-(hH]hI]hJ]hK]r.Ujune-2006-version-1-7-1r/ahN]r0hauhPMFhQhhR]r1(hT)r2}r3(h5XJune 2006: Version 1.7.1r4h6j+h?hBhDhXhF}r5(hH]hI]hJ]hK]hN]uhPMFhQhhR]r6h[XJune 2006: Version 1.7.1r7r8}r9(h5j4h6j2ubaubh_)r:}r;(h5XEThis is a maintenance release. The API has not been changed/added to.r<h6j+h?hBhDhchF}r=(hH]hI]hJ]hK]hN]uhPMHhQhhR]r>h[XEThis is a maintenance release. The API has not been changed/added to.r?r@}rA(h5j<h6j:ubaubh)rB}rC(h5Uh6j+h?hBhDhhF}rD(hX-hK]hJ]hH]hI]hN]uhPMJhQhhR]rE(h)rF}rG(h5XRepair of a bug in the _get methods of Store and Level which could lead to synchronization problems (blocking of producer processes, despite space being available in the buffer). h6jBh?hBhDhhF}rH(hH]hI]hJ]hK]hN]uhPNhQhhR]rIh_)rJ}rK(h5XRepair of a bug in the _get methods of Store and Level which could lead to synchronization problems (blocking of producer processes, despite space being available in the buffer).rLh6jFh?hBhDhchF}rM(hH]hI]hJ]hK]hN]uhPMJhR]rNh[XRepair of a bug in the _get methods of Store and Level which could lead to synchronization problems (blocking of producer processes, despite space being available in the buffer).rOrP}rQ(h5jLh6jJubaubaubh)rR}rS(h5X\Repair of Level __init__ method to allow initialBuffered to be of either float or int type. h6jBh?hBhDhhF}rT(hH]hI]hJ]hK]hN]uhPNhQhhR]rUh_)rV}rW(h5X[Repair of Level __init__ method to allow initialBuffered to be of either float or int type.rXh6jRh?hBhDhchF}rY(hH]hI]hJ]hK]hN]uhPMMhR]rZh[X[Repair of Level __init__ method to allow initialBuffered to be of either float or int type.r[r\}r](h5jXh6jVubaubaubh)r^}r_(h5X^Addition of type test for Level get parameter 'nrToGet' to limit it to positive int or float. h6jBh?hBhDhhF}r`(hH]hI]hJ]hK]hN]uhPNhQhhR]rah_)rb}rc(h5X]Addition of type test for Level get parameter 'nrToGet' to limit it to positive int or float.rdh6j^h?hBhDhchF}re(hH]hI]hJ]hK]hN]uhPMOhR]rfh[X]Addition of type test for Level get parameter 'nrToGet' to limit it to positive int or float.rgrh}ri(h5jdh6jbubaubaubh)rj}rk(h5XTo improve pretty-printed output of 'Level' objects, changed attribute '_nrBuffered' to 'nrBuffered' (synonym for 'amount' property). h6jBh?hBhDhhF}rl(hH]hI]hJ]hK]hN]uhPNhQhhR]rmh_)rn}ro(h5XTo improve pretty-printed output of 'Level' objects, changed attribute '_nrBuffered' to 'nrBuffered' (synonym for 'amount' property).rph6jjh?hBhDhchF}rq(hH]hI]hJ]hK]hN]uhPMRhR]rrh[XTo improve pretty-printed output of 'Level' objects, changed attribute '_nrBuffered' to 'nrBuffered' (synonym for 'amount' property).rsrt}ru(h5jph6jnubaubaubh)rv}rw(h5X{To improve pretty-printed output of 'Store' objects, added attribute 'buffered' (which refers to '_theBuffer' attribute). h6jBh?hBhDhhF}rx(hH]hI]hJ]hK]hN]uhPNhQhhR]ryh_)rz}r{(h5XyTo improve pretty-printed output of 'Store' objects, added attribute 'buffered' (which refers to '_theBuffer' attribute).r|h6jvh?hBhDhchF}r}(hH]hI]hJ]hK]hN]uhPMUhR]r~h[XyTo improve pretty-printed output of 'Store' objects, added attribute 'buffered' (which refers to '_theBuffer' attribute).rr}r(h5j|h6jzubaubaubeubeubh7)r}r(h5Uh6h=h?hBhDhEhF}r(hH]hI]hJ]hK]rUfebruary-2006-version-1-7rahN]rhauhPMZhQhhR]r(hT)r}r(h5XFebruary 2006: Version 1.7rh6jh?hBhDhXhF}r(hH]hI]hJ]hK]hN]uhPMZhQhhR]rh[XFebruary 2006: Version 1.7rr}r(h5jh6jubaubh_)r}r(h5XThis is a major release.rh6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPM\hQhhR]rh[XThis is a major release.rr}r(h5jh6jubaubh)r}r(h5Uh6jh?hBhDhhF}r(hX-hK]hJ]hH]hI]hN]uhPM^hQhhR]r(h)r}r(h5XAddition of an abstract class Buffer, with two sub-classes *Store* and *Level* Buffers are used for modelling inter-process synchronization in producer/ consumer and multi-process cooperation scenarios. h6jh?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r(h5XAddition of an abstract class Buffer, with two sub-classes *Store* and *Level* Buffers are used for modelling inter-process synchronization in producer/ consumer and multi-process cooperation scenarios.h6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPM^hR]r(h[X;Addition of an abstract class Buffer, with two sub-classes rr}r(h5X;Addition of an abstract class Buffer, with two sub-classes h6jubjJ)r}r(h5X*Store*hF}r(hH]hI]hJ]hK]hN]uh6jhR]rh[XStorerr}r(h5Uh6jubahDjRubh[X and rr}r(h5X and h6jubjJ)r}r(h5X*Level*hF}r(hH]hI]hJ]hK]hN]uh6jhR]rh[XLevelrr}r(h5Uh6jubahDjRubh[X| Buffers are used for modelling inter-process synchronization in producer/ consumer and multi-process cooperation scenarios.rr}r(h5X| Buffers are used for modelling inter-process synchronization in producer/ consumer and multi-process cooperation scenarios.h6jubeubaubh)r}r(h5XAddition of two new *yield* statements: + *yield put* for putting items into a buffer, and + *yield get* for getting items from a buffer. h6jh?NhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]r(h_)r}r(h5X'Addition of two new *yield* statements:h6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPMbhR]r(h[XAddition of two new rr}r(h5XAddition of two new h6jubjJ)r}r(h5X*yield*hF}r(hH]hI]hJ]hK]hN]uh6jhR]rh[Xyieldrr}r(h5Uh6jubahDjRubh[X statements:rr}r(h5X statements:h6jubeubh)r}r(h5UhF}r(hX+hK]hJ]hH]hI]hN]uh6jhR]r(h)r}r(h5X1*yield put* for putting items into a buffer, and hF}r(hH]hI]hJ]hK]hN]uh6jhR]rh_)r}r(h5X0*yield put* for putting items into a buffer, andh6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPMdhR]r(jJ)r}r(h5X *yield put*hF}r(hH]hI]hJ]hK]hN]uh6jhR]rh[X yield putrr}r(h5Uh6jubahDjRubh[X% for putting items into a buffer, andrr}r(h5X% for putting items into a buffer, andh6jubeubahDhubh)r}r(h5X-*yield get* for getting items from a buffer. hF}r(hH]hI]hJ]hK]hN]uh6jhR]rh_)r}r(h5X,*yield get* for getting items from a buffer.h6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPMfhR]r(jJ)r}r(h5X *yield get*hF}r(hH]hI]hJ]hK]hN]uh6jhR]rh[X yield getrr}r(h5Uh6jubahDjRubh[X! for getting items from a buffer.rr}r(h5X! for getting items from a buffer.h6jubeubahDhubehDhubeubh)r}r(h5X0The Manual has undergone a major re-write/edit. h6jh?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r(h5X/The Manual has undergone a major re-write/edit.rh6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPMhhR]rh[X/The Manual has undergone a major re-write/edit.rr}r(h5jh6jubaubaubh)r}r(h5XFAll scripts have been restructured for compatibility with IronPython 1 beta2. This was doen by moving all *import* statements to the beginning of the scripts. After the removal of the first (shebang) line, all scripts (with the exception of plotting and GUI scripts) can run successfully under this new Python implementation. h6jh?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r }r (h5XEAll scripts have been restructured for compatibility with IronPython 1 beta2. This was doen by moving all *import* statements to the beginning of the scripts. After the removal of the first (shebang) line, all scripts (with the exception of plotting and GUI scripts) can run successfully under this new Python implementation.h6jh?hBhDhchF}r (hH]hI]hJ]hK]hN]uhPMjhR]r (h[XjAll scripts have been restructured for compatibility with IronPython 1 beta2. This was doen by moving all r r}r(h5XjAll scripts have been restructured for compatibility with IronPython 1 beta2. This was doen by moving all h6j ubjJ)r}r(h5X*import*hF}r(hH]hI]hJ]hK]hN]uh6j hR]rh[Ximportrr}r(h5Uh6jubahDjRubh[X statements to the beginning of the scripts. After the removal of the first (shebang) line, all scripts (with the exception of plotting and GUI scripts) can run successfully under this new Python implementation.rr}r(h5X statements to the beginning of the scripts. After the removal of the first (shebang) line, all scripts (with the exception of plotting and GUI scripts) can run successfully under this new Python implementation.h6j ubeubaubeubeubh7)r}r(h5Uh6h=h?hBhDhEhF}r(hH]hI]hJ]hK]rUseptember-2005-version-1-6-1rahN]rh auhPMqhQhhR]r (hT)r!}r"(h5XSeptember 2005: Version 1.6.1r#h6jh?hBhDhXhF}r$(hH]hI]hJ]hK]hN]uhPMqhQhhR]r%h[XSeptember 2005: Version 1.6.1r&r'}r((h5j#h6j!ubaubh_)r)}r*(h5XThis is a minor release.r+h6jh?hBhDhchF}r,(hH]hI]hJ]hK]hN]uhPMshQhhR]r-h[XThis is a minor release.r.r/}r0(h5j+h6j)ubaubh)r1}r2(h5Uh6jh?hBhDhhF}r3(hX-hK]hJ]hH]hI]hN]uhPMuhQhhR]r4(h)r5}r6(h5XAddition of Tally data collection class as alternative to Monitor. It is intended for collecting very large data sets more efficiently in storage space and time than Monitor. h6j1h?hBhDhhF}r7(hH]hI]hJ]hK]hN]uhPNhQhhR]r8h_)r9}r:(h5XAddition of Tally data collection class as alternative to Monitor. It is intended for collecting very large data sets more efficiently in storage space and time than Monitor.r;h6j5h?hBhDhchF}r<(hH]hI]hJ]hK]hN]uhPMuhR]r=h[XAddition of Tally data collection class as alternative to Monitor. It is intended for collecting very large data sets more efficiently in storage space and time than Monitor.r>r?}r@(h5j;h6j9ubaubaubh)rA}rB(h5X[Change of Resource to work with Tally (new Resource API is backwards-compatible with 1.6). h6j1h?hBhDhhF}rC(hH]hI]hJ]hK]hN]uhPNhQhhR]rDh_)rE}rF(h5XZChange of Resource to work with Tally (new Resource API is backwards-compatible with 1.6).rGh6jAh?hBhDhchF}rH(hH]hI]hJ]hK]hN]uhPMyhR]rIh[XZChange of Resource to work with Tally (new Resource API is backwards-compatible with 1.6).rJrK}rL(h5jGh6jEubaubaubh)rM}rN(h5XPAddition of function setHistogram to class Monitor for initializing histograms. h6j1h?hBhDhhF}rO(hH]hI]hJ]hK]hN]uhPNhQhhR]rPh_)rQ}rR(h5XOAddition of function setHistogram to class Monitor for initializing histograms.rSh6jMh?hBhDhchF}rT(hH]hI]hJ]hK]hN]uhPM|hR]rUh[XOAddition of function setHistogram to class Monitor for initializing histograms.rVrW}rX(h5jSh6jQubaubaubh)rY}rZ(h5XNew function allEventNotices() for debugging/teaching purposes. It returns a prettyprinted string with event times and names of process instances. h6j1h?hBhDhhF}r[(hH]hI]hJ]hK]hN]uhPNhQhhR]r\h_)r]}r^(h5XNew function allEventNotices() for debugging/teaching purposes. It returns a prettyprinted string with event times and names of process instances.r_h6jYh?hBhDhchF}r`(hH]hI]hJ]hK]hN]uhPMhR]rah[XNew function allEventNotices() for debugging/teaching purposes. It returns a prettyprinted string with event times and names of process instances.rbrc}rd(h5j_h6j]ubaubaubh)re}rf(h5XRAddition of function allEventTimes (returns event times of all scheduled events). h6j1h?hBhDhhF}rg(hH]hI]hJ]hK]hN]uhPNhQhhR]rhh_)ri}rj(h5XQAddition of function allEventTimes (returns event times of all scheduled events).rkh6jeh?hBhDhchF}rl(hH]hI]hJ]hK]hN]uhPMhR]rmh[XQAddition of function allEventTimes (returns event times of all scheduled events).rnro}rp(h5jkh6jiubaubaubeubeubh7)rq}rr(h5Uh6h=h?hBhDhEhF}rs(hH]hI]hJ]hK]rtUjune-2005-version-1-6ruahN]rvh*auhPMhQhhR]rw(hT)rx}ry(h5X15 June 2005: Version 1.6rzh6jqh?hBhDhXhF}r{(hH]hI]hJ]hK]hN]uhPMhQhhR]r|h[X15 June 2005: Version 1.6r}r~}r(h5jzh6jxubaubh)r}r(h5Uh6jqh?hBhDhhF}r(hX-hK]hJ]hH]hI]hN]uhPMhQhhR]r(h)r}r(h5XtAddition of two compound yield statement forms to support the modelling of processes reneging from resource queues. h6jh?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r(h5XsAddition of two compound yield statement forms to support the modelling of processes reneging from resource queues.rh6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPMhR]rh[XsAddition of two compound yield statement forms to support the modelling of processes reneging from resource queues.rr}r(h5jh6jubaubaubh)r}r(h5XPAddition of two test/demo files showing the use of the new reneging statements. h6jh?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r(h5XOAddition of two test/demo files showing the use of the new reneging statements.rh6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPMhR]rh[XOAddition of two test/demo files showing the use of the new reneging statements.rr}r(h5jh6jubaubaubh)r}r(h5XKAddition of test for prior simulation initialization in method activate(). h6jh?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r(h5XJAddition of test for prior simulation initialization in method activate().rh6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPMhR]rh[XJAddition of test for prior simulation initialization in method activate().rr}r(h5jh6jubaubaubh)r}r(h5XLRepair of bug in monitoring thw waitQ of a resource when preemption occurs. h6jh?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r(h5XKRepair of bug in monitoring thw waitQ of a resource when preemption occurs.rh6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPMhR]rh[XKRepair of bug in monitoring thw waitQ of a resource when preemption occurs.rr}r(h5jh6jubaubaubh)r}r(h5X6Major restructuring/editing to Manual and Cheatsheet. h6jh?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r(h5X5Major restructuring/editing to Manual and Cheatsheet.rh6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPMhR]rh[X5Major restructuring/editing to Manual and Cheatsheet.rr}r(h5jh6jubaubaubeubeubh7)r}r(h5Uh6h=h?hBhDhEhF}r(hH]hI]hJ]hK]rUfebruary-2005-version-1-5-1rahN]rh'auhPMhQhhR]r(hT)r}r(h5X1 February 2005: Version 1.5.1rh6jh?hBhDhXhF}r(hH]hI]hJ]hK]hN]uhPMhQhhR]rh[X1 February 2005: Version 1.5.1rr}r(h5jh6jubaubh)r}r(h5Uh6jh?hBhDhhF}r(hX-hK]hJ]hH]hI]hN]uhPMhQhhR]r(h)r}r(h5X MAJOR LICENSE CHANGE: Starting with this version 1.5.1, SimPy is being release under the GNU Lesser General Public License (LGPL), instead of the GNU GPL. This change has been made to encourage commercial firms to use SimPy in for-profit work. h6jh?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]r(h_)r}r(h5XMAJOR LICENSE CHANGE:rh6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPMhR]rh[XMAJOR LICENSE CHANGE:rr}r(h5jh6jubaubcdocutils.nodes block_quote r)r}r(h5UhF}r(hH]hI]hJ]hK]hN]uh6jhR]rh_)r}r(h5XStarting with this version 1.5.1, SimPy is being release under the GNU Lesser General Public License (LGPL), instead of the GNU GPL. This change has been made to encourage commercial firms to use SimPy in for-profit work.rh6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPMhR]rh[XStarting with this version 1.5.1, SimPy is being release under the GNU Lesser General Public License (LGPL), instead of the GNU GPL. This change has been made to encourage commercial firms to use SimPy in for-profit work.rr}r(h5jh6jubaubahDU block_quoterubeubh)r}r(h5XMinor re-release h6jh?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r(h5XMinor re-releaserh6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPMhR]rh[XMinor re-releaserr}r(h5jh6jubaubaubh)r}r(h5X$No additional/changed functionality h6jh?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r(h5X#No additional/changed functionalityrh6jh?hBhDhchF}r (hH]hI]hJ]hK]hN]uhPMhR]r h[X#No additional/changed functionalityr r }r (h5jh6jubaubaubh)r }r (h5XUIncludes unit test file'MonitorTest.py' which had been accidentally deleted from 1.5 h6jh?hBhDhhF}r (hH]hI]hJ]hK]hN]uhPNhQhhR]r h_)r }r (h5XTIncludes unit test file'MonitorTest.py' which had been accidentally deleted from 1.5r h6j h?hBhDhchF}r (hH]hI]hJ]hK]hN]uhPMhR]r h[XTIncludes unit test file'MonitorTest.py' which had been accidentally deleted from 1.5r r }r (h5j h6j ubaubaubh)r }r (h5X2Provides updated version of 'Bank.html' tutorial. h6jh?hBhDhhF}r (hH]hI]hJ]hK]hN]uhPNhQhhR]r h_)r }r (h5X1Provides updated version of 'Bank.html' tutorial.r h6j h?hBhDhchF}r (hH]hI]hJ]hK]hN]uhPMhR]r h[X1Provides updated version of 'Bank.html' tutorial.r r }r (h5j h6j ubaubaubh)r }r (h5XProvides an additional tutorial ('Bank2.html') which shows how to use the new synchronization constructs introduced in SimPy 1.5. h6jh?hBhDhhF}r (hH]hI]hJ]hK]hN]uhPNhQhhR]r h_)r! }r" (h5XProvides an additional tutorial ('Bank2.html') which shows how to use the new synchronization constructs introduced in SimPy 1.5.r# h6j h?hBhDhchF}r$ (hH]hI]hJ]hK]hN]uhPMhR]r% h[XProvides an additional tutorial ('Bank2.html') which shows how to use the new synchronization constructs introduced in SimPy 1.5.r& r' }r( (h5j# h6j! ubaubaubh)r) }r* (h5X2More logical, cleaner version numbering in files. h6jh?hBhDhhF}r+ (hH]hI]hJ]hK]hN]uhPNhQhhR]r, h_)r- }r. (h5X1More logical, cleaner version numbering in files.r/ h6j) h?hBhDhchF}r0 (hH]hI]hJ]hK]hN]uhPMhR]r1 h[X1More logical, cleaner version numbering in files.r2 r3 }r4 (h5j/ h6j- ubaubaubeubeubh7)r5 }r6 (h5Uh6h=h?hBhDhEhF}r7 (hH]hI]hJ]hK]r8 Udecember-2004-version-1-5r9 ahN]r: h$auhPMhQhhR]r; (hT)r< }r= (h5X1 December 2004: Version 1.5r> h6j5 h?hBhDhXhF}r? (hH]hI]hJ]hK]hN]uhPMhQhhR]r@ h[X1 December 2004: Version 1.5rA rB }rC (h5j> h6j< ubaubh)rD }rE (h5Uh6j5 h?hBhDhhF}rF (hX-hK]hJ]hH]hI]hN]uhPMhQhhR]rG (h)rH }rI (h5X7No new functionality/API changes relative to 1.5 alpha h6jD h?hBhDhhF}rJ (hH]hI]hJ]hK]hN]uhPNhQhhR]rK h_)rL }rM (h5X6No new functionality/API changes relative to 1.5 alpharN h6jH h?hBhDhchF}rO (hH]hI]hJ]hK]hN]uhPMhR]rP h[X6No new functionality/API changes relative to 1.5 alpharQ rR }rS (h5jN h6jL ubaubaubh)rT }rU (h5X<Repaired bug related to waiting/queuing for multiple events h6jD h?hBhDhhF}rV (hH]hI]hJ]hK]hN]uhPNhQhhR]rW h_)rX }rY (h5X;Repaired bug related to waiting/queuing for multiple eventsrZ h6jT h?hBhDhchF}r[ (hH]hI]hJ]hK]hN]uhPMhR]r\ h[X;Repaired bug related to waiting/queuing for multiple eventsr] r^ }r_ (h5jZ h6jX ubaubaubh)r` }ra (h5XISimulationRT: Improved synchronization with wallclock time on Unix/Linux h6jD h?hBhDhhF}rb (hH]hI]hJ]hK]hN]uhPNhQhhR]rc h_)rd }re (h5XHSimulationRT: Improved synchronization with wallclock time on Unix/Linuxrf h6j` h?hBhDhchF}rg (hH]hI]hJ]hK]hN]uhPMhR]rh h[XHSimulationRT: Improved synchronization with wallclock time on Unix/Linuxri rj }rk (h5jf h6jd ubaubaubeubeubh7)rl }rm (h5Uh6h=h?hBhDhEhF}rn (hH]hI]hJ]hK]ro Useptember-2004-version-1-5alpharp ahN]rq hauhPMhQhhR]rr (hT)rs }rt (h5X#25 September 2004: Version 1.5alpharu h6jl h?hBhDhXhF}rv (hH]hI]hJ]hK]hN]uhPMhQhhR]rw h[X#25 September 2004: Version 1.5alpharx ry }rz (h5ju h6js ubaubh)r{ }r| (h5Uh6jl h?hBhDhhF}r} (hX-hK]hJ]hH]hI]hN]uhPMhQhhR]r~ (h)r }r (h5XNew functionality/API additions * SimEvents and signalling synchronization constructs, with 'yield waitevent' and 'yield queueevent' commands. * A general "wait until" synchronization construct, with the 'yield waituntil' command. h6j{ h?hBhDhhF}r (hH]hI]hJ]hK]hN]uhPNhQhhR]r (h_)r }r (h5XNew functionality/API additionsr h6j h?hBhDhchF}r (hH]hI]hJ]hK]hN]uhPMhR]r h[XNew functionality/API additionsr r }r (h5j h6j ubaubj)r }r (h5UhF}r (hH]hI]hJ]hK]hN]uh6j hR]r h)r }r (h5UhF}r (hX*hK]hJ]hH]hI]hN]uh6j hR]r (h)r }r (h5XmSimEvents and signalling synchronization constructs, with 'yield waitevent' and 'yield queueevent' commands. hF}r (hH]hI]hJ]hK]hN]uh6j hR]r h_)r }r (h5XlSimEvents and signalling synchronization constructs, with 'yield waitevent' and 'yield queueevent' commands.r h6j h?hBhDhchF}r (hH]hI]hJ]hK]hN]uhPMhR]r h[XlSimEvents and signalling synchronization constructs, with 'yield waitevent' and 'yield queueevent' commands.r r }r (h5j h6j ubaubahDhubh)r }r (h5XVA general "wait until" synchronization construct, with the 'yield waituntil' command. hF}r (hH]hI]hJ]hK]hN]uh6j hR]r h_)r }r (h5XUA general "wait until" synchronization construct, with the 'yield waituntil' command.r h6j h?hBhDhchF}r (hH]hI]hJ]hK]hN]uhPMhR]r h[XUA general "wait until" synchronization construct, with the 'yield waituntil' command.r r }r (h5j h6j ubaubahDhubehDhubahDjubeubh)r }r (h5XBNo changes to 1.4.x API, i.e., existing code will work as before. h6j{ h?hBhDhhF}r (hH]hI]hJ]hK]hN]uhPNhQhhR]r h_)r }r (h5XANo changes to 1.4.x API, i.e., existing code will work as before.r h6j h?hBhDhchF}r (hH]hI]hJ]hK]hN]uhPMhR]r h[XANo changes to 1.4.x API, i.e., existing code will work as before.r r }r (h5j h6j ubaubaubeubeubh7)r }r (h5Uh6h=h?hBhDhEhF}r (hH]hI]hJ]hK]r Umay-2004-version-1-4-2r ahN]r hauhPMhQhhR]r (hT)r }r (h5X19 May 2004: Version 1.4.2r h6j h?hBhDhXhF}r (hH]hI]hJ]hK]hN]uhPMhQhhR]r h[X19 May 2004: Version 1.4.2r r }r (h5j h6j ubaubh)r }r (h5Uh6j h?hBhDhhF}r (hX-hK]hJ]hH]hI]hN]uhPMhQhhR]r (h)r }r (h5XSub-release to repair two bugs: * The unittest for monitored Resource queues does not fail anymore. * SimulationTrace now works correctly with "yield hold,self" form. h6j h?hBhDhhF}r (hH]hI]hJ]hK]hN]uhPNhQhhR]r (h_)r }r (h5XSub-release to repair two bugs:r h6j h?hBhDhchF}r (hH]hI]hJ]hK]hN]uhPMhR]r h[XSub-release to repair two bugs:r r }r (h5j h6j ubaubj)r }r (h5UhF}r (hH]hI]hJ]hK]hN]uh6j hR]r h)r }r (h5UhF}r (hX*hK]hJ]hH]hI]hN]uh6j hR]r (h)r }r (h5XBThe unittest for monitored Resource queues does not fail anymore. hF}r (hH]hI]hJ]hK]hN]uh6j hR]r h_)r }r (h5XAThe unittest for monitored Resource queues does not fail anymore.r h6j h?hBhDhchF}r (hH]hI]hJ]hK]hN]uhPMhR]r h[XAThe unittest for monitored Resource queues does not fail anymore.r r }r (h5j h6j ubaubahDhubh)r }r (h5XASimulationTrace now works correctly with "yield hold,self" form. hF}r (hH]hI]hJ]hK]hN]uh6j hR]r h_)r }r (h5X@SimulationTrace now works correctly with "yield hold,self" form.r h6j h?hBhDhchF}r (hH]hI]hJ]hK]hN]uhPMhR]r h[X@SimulationTrace now works correctly with "yield hold,self" form.r r }r (h5j h6j ubaubahDhubehDhubahDjubeubh)r }r (h5XNo functional or API changes h6j h?hBhDhhF}r (hH]hI]hJ]hK]hN]uhPNhQhhR]r h_)r }r (h5XNo functional or API changesr h6j h?hBhDhchF}r (hH]hI]hJ]hK]hN]uhPMhR]r h[XNo functional or API changesr r }r (h5j h6j ubaubaubeubeubh7)r }r (h5Uh6h=h?hBhDhEhF}r (hH]hI]hJ]hK]r Ufebruary-2004-version-1-4-1r ahN]r h&auhPMhQhhR]r (hT)r }r (h5X29 February 2004: Version 1.4.1r h6j h?hBhDhXhF}r (hH]hI]hJ]hK]hN]uhPMhQhhR]r h[X29 February 2004: Version 1.4.1r r }r (h5j h6j ubaubh)r }r (h5Uh6j h?hBhDhhF}r (hX-hK]hJ]hH]hI]hN]uhPMhQhhR]r (h)r }r (h5XSub-release to repair two bugs: * The (optional) monitoring of the activeQ in Resource now works correctly. * The "cellphone.py" example is now implemented correctly. h6j h?hBhDhhF}r (hH]hI]hJ]hK]hN]uhPNhQhhR]r (h_)r }r (h5XSub-release to repair two bugs:r h6j h?hBhDhchF}r (hH]hI]hJ]hK]hN]uhPMhR]r h[XSub-release to repair two bugs:r r }r (h5j h6j ubaubj)r! }r" (h5UhF}r# (hH]hI]hJ]hK]hN]uh6j hR]r$ h)r% }r& (h5UhF}r' (hX*hK]hJ]hH]hI]hN]uh6j! hR]r( (h)r) }r* (h5XJThe (optional) monitoring of the activeQ in Resource now works correctly. hF}r+ (hH]hI]hJ]hK]hN]uh6j% hR]r, h_)r- }r. (h5XIThe (optional) monitoring of the activeQ in Resource now works correctly.r/ h6j) h?hBhDhchF}r0 (hH]hI]hJ]hK]hN]uhPMhR]r1 h[XIThe (optional) monitoring of the activeQ in Resource now works correctly.r2 r3 }r4 (h5j/ h6j- ubaubahDhubh)r5 }r6 (h5X9The "cellphone.py" example is now implemented correctly. hF}r7 (hH]hI]hJ]hK]hN]uh6j% hR]r8 h_)r9 }r: (h5X8The "cellphone.py" example is now implemented correctly.r; h6j5 h?hBhDhchF}r< (hH]hI]hJ]hK]hN]uhPMhR]r= h[X8The "cellphone.py" example is now implemented correctly.r> r? }r@ (h5j; h6j9 ubaubahDhubehDhubahDjubeubh)rA }rB (h5XNo functional or API changes h6j h?hBhDhhF}rC (hH]hI]hJ]hK]hN]uhPNhQhhR]rD h_)rE }rF (h5XNo functional or API changesrG h6jA h?hBhDhchF}rH (hH]hI]hJ]hK]hN]uhPMhR]rI h[XNo functional or API changesrJ rK }rL (h5jG h6jE ubaubaubeubeubh7)rM }rN (h5Uh6h=h?hBhDhEhF}rO (hH]hI]hJ]hK]rP Ufebruary-2004-version-1-4rQ ahN]rR h+auhPMhQhhR]rS (hT)rT }rU (h5X1 February 2004: Version 1.4rV h6jM h?hBhDhXhF}rW (hH]hI]hJ]hK]hN]uhPMhQhhR]rX h[X1 February 2004: Version 1.4rY rZ }r[ (h5jV h6jT ubaubh)r\ }r] (h5Uh6jM h?hBhDhhF}r^ (hX-hK]hJ]hH]hI]hN]uhPMhQhhR]r_ h)r` }ra (h5XReleased on SourceForge.net h6j\ h?hBhDhhF}rb (hH]hI]hJ]hK]hN]uhPNhQhhR]rc h_)rd }re (h5XReleased on SourceForge.netrf h6j` h?hBhDhchF}rg (hH]hI]hJ]hK]hN]uhPMhR]rh h[XReleased on SourceForge.netri rj }rk (h5jf h6jd ubaubaubaubeubh7)rl }rm (h5Uh6h=h?hBhDhEhF}rn (hH]hI]hJ]hK]ro Udecember-2003-version-1-4-alpharp ahN]rq h%auhPMhQhhR]rr (hT)rs }rt (h5X#22 December 2003: Version 1.4 alpharu h6jl h?hBhDhXhF}rv (hH]hI]hJ]hK]hN]uhPMhQhhR]rw h[X#22 December 2003: Version 1.4 alpharx ry }rz (h5ju h6js ubaubh)r{ }r| (h5Uh6jl h?hBhDhhF}r} (hX-hK]hJ]hH]hI]hN]uhPMhQhhR]r~ h)r }r (h5XNew functionality/API changes * All classes in the SimPy API are now new style classes, i.e., they inherit from *object* either directly or indirectly. * Module *Monitor.py* has been merged into module *Simulation.py* and all *SimulationXXX.py* modules. Import of *Simulation* or any *SimulationXXX* module now also imports *Monitor*. * Some *Monitor* methods/attributes have changed. See Manual! * *Monitor* now inherits from *list*. * A class *Histogram* has been added to *Simulation.py* and all *SimulationXXX.py* modules. * A module *SimulationRT* has been added which allows synchronization between simulated and wallclock time. * A moduleSimulationStep which allows the execution of a simulation model event-by-event, with the facility to execute application code after each event. * A Tk/Tkinter-based module *SimGUI* has been added which provides a SimPy GUI framework. * A Tk/Tkinter-based module *SimPlot* has been added which provides for plot output from SimPy programs. h6j{ h?hBhDhhF}r (hH]hI]hJ]hK]hN]uhPNhQhhR]r (h_)r }r (h5XNew functionality/API changesr h6j h?hBhDhchF}r (hH]hI]hJ]hK]hN]uhPMhR]r h[XNew functionality/API changesr r }r (h5j h6j ubaubj)r }r (h5UhF}r (hH]hI]hJ]hK]hN]uh6j hR]r (j)r }r (h5UhF}r (hH]hI]hJ]hK]hN]uh6j hR]r h)r }r (h5UhF}r (hX*hK]hJ]hH]hI]hN]uh6j hR]r (h)r }r (h5XxAll classes in the SimPy API are now new style classes, i.e., they inherit from *object* either directly or indirectly. hF}r (hH]hI]hJ]hK]hN]uh6j hR]r h_)r }r (h5XwAll classes in the SimPy API are now new style classes, i.e., they inherit from *object* either directly or indirectly.h6j h?hBhDhchF}r (hH]hI]hJ]hK]hN]uhPMhR]r (h[XPAll classes in the SimPy API are now new style classes, i.e., they inherit from r r }r (h5XPAll classes in the SimPy API are now new style classes, i.e., they inherit from h6j ubjJ)r }r (h5X*object*hF}r (hH]hI]hJ]hK]hN]uh6j hR]r h[Xobjectr r }r (h5Uh6j ubahDjRubh[X either directly or indirectly.r r }r (h5X either directly or indirectly.h6j ubeubahDhubh)r }r (h5XModule *Monitor.py* has been merged into module *Simulation.py* and all *SimulationXXX.py* modules. Import of *Simulation* or any *SimulationXXX* module now also imports *Monitor*. hF}r (hH]hI]hJ]hK]hN]uh6j hR]r h_)r }r (h5XModule *Monitor.py* has been merged into module *Simulation.py* and all *SimulationXXX.py* modules. Import of *Simulation* or any *SimulationXXX* module now also imports *Monitor*.h6j h?hBhDhchF}r (hH]hI]hJ]hK]hN]uhPMhR]r (h[XModule r r }r (h5XModule h6j ubjJ)r }r (h5X *Monitor.py*hF}r (hH]hI]hJ]hK]hN]uh6j hR]r h[X Monitor.pyr r }r (h5Uh6j ubahDjRubh[X has been merged into module r r }r (h5X has been merged into module h6j ubjJ)r }r (h5X*Simulation.py*hF}r (hH]hI]hJ]hK]hN]uh6j hR]r h[X Simulation.pyr r }r (h5Uh6j ubahDjRubh[X and all r r }r (h5X and all h6j ubjJ)r }r (h5X*SimulationXXX.py*hF}r (hH]hI]hJ]hK]hN]uh6j hR]r h[XSimulationXXX.pyr r }r (h5Uh6j ubahDjRubh[X modules. Import of r r }r (h5X modules. Import of h6j ubjJ)r }r (h5X *Simulation*hF}r (hH]hI]hJ]hK]hN]uh6j hR]r h[X Simulationr r }r (h5Uh6j ubahDjRubh[X or any r r }r (h5X or any h6j ubjJ)r }r (h5X*SimulationXXX*hF}r (hH]hI]hJ]hK]hN]uh6j hR]r h[X SimulationXXXr r }r (h5Uh6j ubahDjRubh[X module now also imports r r }r (h5X module now also imports h6j ubjJ)r }r (h5X *Monitor*hF}r (hH]hI]hJ]hK]hN]uh6j hR]r h[XMonitorr r }r (h5Uh6j ubahDjRubh[X.r }r (h5X.h6j ubeubahDhubh)r }r (h5X<Some *Monitor* methods/attributes have changed. See Manual! hF}r (hH]hI]hJ]hK]hN]uh6j hR]r h_)r }r (h5X;Some *Monitor* methods/attributes have changed. See Manual!h6j h?hBhDhchF}r (hH]hI]hJ]hK]hN]uhPMhR]r (h[XSome r r }r (h5XSome h6j ubjJ)r }r (h5X *Monitor*hF}r (hH]hI]hJ]hK]hN]uh6j hR]r h[XMonitorr r }r (h5Uh6j ubahDjRubh[X- methods/attributes have changed. See Manual!r r }r (h5X- methods/attributes have changed. See Manual!h6j ubeubahDhubh)r }r (h5X$*Monitor* now inherits from *list*. hF}r (hH]hI]hJ]hK]hN]uh6j hR]r h_)r }r (h5X#*Monitor* now inherits from *list*.r h6j h?hBhDhchF}r (hH]hI]hJ]hK]hN]uhPMhR]r (jJ)r }r (h5X *Monitor*hF}r (hH]hI]hJ]hK]hN]uh6j hR]r h[XMonitorr r }r (h5Uh6j ubahDjRubh[X now inherits from r r }r (h5X now inherits from h6j ubjJ)r }r (h5X*list*hF}r (hH]hI]hJ]hK]hN]uh6j hR]r h[Xlistr r }r (h5Uh6j ubahDjRubh[X.r! }r" (h5X.h6j ubeubahDhubehDhubahDjubh)r# }r$ (h5UhF}r% (hX*hK]hJ]hH]hI]hN]uh6j hR]r& (h)r' }r( (h5XZA class *Histogram* has been added to *Simulation.py* and all *SimulationXXX.py* modules. hF}r) (hH]hI]hJ]hK]hN]uh6j# hR]r* h_)r+ }r, (h5XYA class *Histogram* has been added to *Simulation.py* and all *SimulationXXX.py* modules.h6j' h?hBhDhchF}r- (hH]hI]hJ]hK]hN]uhPMhR]r. (h[XA class r/ r0 }r1 (h5XA class h6j+ ubjJ)r2 }r3 (h5X *Histogram*hF}r4 (hH]hI]hJ]hK]hN]uh6j+ hR]r5 h[X Histogramr6 r7 }r8 (h5Uh6j2 ubahDjRubh[X has been added to r9 r: }r; (h5X has been added to h6j+ ubjJ)r< }r= (h5X*Simulation.py*hF}r> (hH]hI]hJ]hK]hN]uh6j+ hR]r? h[X Simulation.pyr@ rA }rB (h5Uh6j< ubahDjRubh[X and all rC rD }rE (h5X and all h6j+ ubjJ)rF }rG (h5X*SimulationXXX.py*hF}rH (hH]hI]hJ]hK]hN]uh6j+ hR]rI h[XSimulationXXX.pyrJ rK }rL (h5Uh6jF ubahDjRubh[X modules.rM rN }rO (h5X modules.h6j+ ubeubahDhubh)rP }rQ (h5XjA module *SimulationRT* has been added which allows synchronization between simulated and wallclock time. hF}rR (hH]hI]hJ]hK]hN]uh6j# hR]rS h_)rT }rU (h5XiA module *SimulationRT* has been added which allows synchronization between simulated and wallclock time.h6jP h?hBhDhchF}rV (hH]hI]hJ]hK]hN]uhPMhR]rW (h[X A module rX rY }rZ (h5X A module h6jT ubjJ)r[ }r\ (h5X*SimulationRT*hF}r] (hH]hI]hJ]hK]hN]uh6jT hR]r^ h[X SimulationRTr_ r` }ra (h5Uh6j[ ubahDjRubh[XR has been added which allows synchronization between simulated and wallclock time.rb rc }rd (h5XR has been added which allows synchronization between simulated and wallclock time.h6jT ubeubahDhubh)re }rf (h5XA moduleSimulationStep which allows the execution of a simulation model event-by-event, with the facility to execute application code after each event. hF}rg (hH]hI]hJ]hK]hN]uh6j# hR]rh h_)ri }rj (h5XA moduleSimulationStep which allows the execution of a simulation model event-by-event, with the facility to execute application code after each event.rk h6je h?hBhDhchF}rl (hH]hI]hJ]hK]hN]uhPMhR]rm h[XA moduleSimulationStep which allows the execution of a simulation model event-by-event, with the facility to execute application code after each event.rn ro }rp (h5jk h6ji ubaubahDhubh)rq }rr (h5XXA Tk/Tkinter-based module *SimGUI* has been added which provides a SimPy GUI framework. hF}rs (hH]hI]hJ]hK]hN]uh6j# hR]rt h_)ru }rv (h5XWA Tk/Tkinter-based module *SimGUI* has been added which provides a SimPy GUI framework.h6jq h?hBhDhchF}rw (hH]hI]hJ]hK]hN]uhPMhR]rx (h[XA Tk/Tkinter-based module ry rz }r{ (h5XA Tk/Tkinter-based module h6ju ubjJ)r| }r} (h5X*SimGUI*hF}r~ (hH]hI]hJ]hK]hN]uh6ju hR]r h[XSimGUIr r }r (h5Uh6j| ubahDjRubh[X5 has been added which provides a SimPy GUI framework.r r }r (h5X5 has been added which provides a SimPy GUI framework.h6ju ubeubahDhubh)r }r (h5XhA Tk/Tkinter-based module *SimPlot* has been added which provides for plot output from SimPy programs. hF}r (hH]hI]hJ]hK]hN]uh6j# hR]r h_)r }r (h5XfA Tk/Tkinter-based module *SimPlot* has been added which provides for plot output from SimPy programs.h6j h?hBhDhchF}r (hH]hI]hJ]hK]hN]uhPMhR]r (h[XA Tk/Tkinter-based module r r }r (h5XA Tk/Tkinter-based module h6j ubjJ)r }r (h5X *SimPlot*hF}r (hH]hI]hJ]hK]hN]uh6j hR]r h[XSimPlotr r }r (h5Uh6j ubahDjRubh[XC has been added which provides for plot output from SimPy programs.r r }r (h5XC has been added which provides for plot output from SimPy programs.h6j ubeubahDhubehDhubehDjubeubaubeubh7)r }r (h5Uh6h=h?hBhDhEhF}r (hH]hI]hJ]hK]r Ujune-2003-version-1-3r ahN]r hauhPMhQhhR]r (hT)r }r (h5X22 June 2003: Version 1.3r h6j h?hBhDhXhF}r (hH]hI]hJ]hK]hN]uhPMhQhhR]r h[X22 June 2003: Version 1.3r r }r (h5j h6j ubaubh)r }r (h5Uh6j h?hBhDhhF}r (hX-hK]hJ]hH]hI]hN]uhPMhQhhR]r (h)r }r (h5XNo functional or API changesr h6j h?hBhDhhF}r (hH]hI]hJ]hK]hN]uhPNhQhhR]r h_)r }r (h5j h6j h?hBhDhchF}r (hH]hI]hJ]hK]hN]uhPMhR]r h[XNo functional or API changesr r }r (h5j h6j ubaubaubh)r }r (h5XIReduction of sourcecode linelength in Simulation.py to <= 80 characters h6j h?hBhDhhF}r (hH]hI]hJ]hK]hN]uhPNhQhhR]r h_)r }r (h5XGReduction of sourcecode linelength in Simulation.py to <= 80 charactersr h6j h?hBhDhchF}r (hH]hI]hJ]hK]hN]uhPMhR]r h[XGReduction of sourcecode linelength in Simulation.py to <= 80 charactersr r }r (h5j h6j ubaubaubeubeubh7)r }r (h5Uh6h=h?hBhDhEhF}r (hH]hI]hJ]hK]r Ujune-2003-version-1-3-alphar ahN]r hauhPMhQhhR]r (hT)r }r (h5XJune 2003: Version 1.3 alphar h6j h?hBhDhXhF}r (hH]hI]hJ]hK]hN]uhPMhQhhR]r h[XJune 2003: Version 1.3 alphar r }r (h5j h6j ubaubh)r }r (h5Uh6j h?hBhDhhF}r (hX-hK]hJ]hH]hI]hN]uhPMhQhhR]r (h)r }r (h5X"Significantly improved performancer h6j h?hBhDhhF}r (hH]hI]hJ]hK]hN]uhPNhQhhR]r h_)r }r (h5j h6j h?hBhDhchF}r (hH]hI]hJ]hK]hN]uhPMhR]r h[X"Significantly improved performancer r }r (h5j h6j ubaubaubh)r }r (h5XKSignificant increase in number of quasi-parallel processes SimPy can handler h6j h?hBhDhhF}r (hH]hI]hJ]hK]hN]uhPNhQhhR]r h_)r }r (h5j h6j h?hBhDhchF}r (hH]hI]hJ]hK]hN]uhPMhR]r h[XKSignificant increase in number of quasi-parallel processes SimPy can handler r }r (h5j h6j ubaubaubh)r }r (h5XNew functionality/API changes: * Addition of SimulationTrace, an event trace utility * Addition of Lister, a prettyprinter for instance attributes * No API changes h6j h?hBhDhhF}r (hH]hI]hJ]hK]hN]uhPNhQhhR]r (h_)r }r (h5XNew functionality/API changes:r h6j h?hBhDhchF}r (hH]hI]hJ]hK]hN]uhPMhR]r h[XNew functionality/API changes:r r }r (h5j h6j ubaubj)r }r (h5UhF}r (hH]hI]hJ]hK]hN]uh6j hR]r h)r }r (h5UhF}r (hX*hK]hJ]hH]hI]hN]uh6j hR]r (h)r }r (h5X3Addition of SimulationTrace, an event trace utilityr hF}r (hH]hI]hJ]hK]hN]uh6j hR]r h_)r }r (h5j h6j h?hBhDhchF}r (hH]hI]hJ]hK]hN]uhPMhR]r h[X3Addition of SimulationTrace, an event trace utilityr r }r (h5j h6j ubaubahDhubh)r }r (h5X;Addition of Lister, a prettyprinter for instance attributesr hF}r (hH]hI]hJ]hK]hN]uh6j hR]r h_)r }r (h5j h6j h?hBhDhchF}r (hH]hI]hJ]hK]hN]uhPMhR]r h[X;Addition of Lister, a prettyprinter for instance attributesr r }r (h5j h6j ubaubahDhubh)r }r (h5XNo API changes hF}r (hH]hI]hJ]hK]hN]uh6j hR]r h_)r! }r" (h5XNo API changesr# h6j h?hBhDhchF}r$ (hH]hI]hJ]hK]hN]uhPMhR]r% h[XNo API changesr& r' }r( (h5j# h6j! ubaubahDhubehDhubahDjubeubh)r) }r* (h5XInternal changes: * Implementation of a proposal by Simon Frost: storing the keys of the event set dictionary in a binary search tree using bisect. Thank you, Simon! SimPy 1.3 is dedicated to you! h6j h?hBhDhhF}r+ (hH]hI]hJ]hK]hN]uhPNhQhhR]r, (h_)r- }r. (h5XInternal changes:r/ h6j) h?hBhDhchF}r0 (hH]hI]hJ]hK]hN]uhPMhR]r1 h[XInternal changes:r2 r3 }r4 (h5j/ h6j- ubaubj)r5 }r6 (h5UhF}r7 (hH]hI]hJ]hK]hN]uh6j) hR]r8 h)r9 }r: (h5UhF}r; (hX*hK]hJ]hH]hI]hN]uh6j5 hR]r< h)r= }r> (h5XImplementation of a proposal by Simon Frost: storing the keys of the event set dictionary in a binary search tree using bisect. Thank you, Simon! SimPy 1.3 is dedicated to you! hF}r? (hH]hI]hJ]hK]hN]uh6j9 hR]r@ h_)rA }rB (h5XImplementation of a proposal by Simon Frost: storing the keys of the event set dictionary in a binary search tree using bisect. Thank you, Simon! SimPy 1.3 is dedicated to you!rC h6j= h?hBhDhchF}rD (hH]hI]hJ]hK]hN]uhPMhR]rE h[XImplementation of a proposal by Simon Frost: storing the keys of the event set dictionary in a binary search tree using bisect. Thank you, Simon! SimPy 1.3 is dedicated to you!rF rG }rH (h5jC h6jA ubaubahDhubahDhubahDjubeubh)rI }rJ (h5X$Update of Manual to address tracing.rK h6j h?hBhDhhF}rL (hH]hI]hJ]hK]hN]uhPNhQhhR]rM h_)rN }rO (h5jK h6jI h?hBhDhchF}rP (hH]hI]hJ]hK]hN]uhPM hR]rQ h[X$Update of Manual to address tracing.rR rS }rT (h5jK h6jN ubaubaubh)rU }rV (h5XaUpdate of Interfacing doc to address output visualization using Scientific Python gplt package. h6j h?hBhDhhF}rW (hH]hI]hJ]hK]hN]uhPNhQhhR]rX h_)rY }rZ (h5X_Update of Interfacing doc to address output visualization using Scientific Python gplt package.r[ h6jU h?hBhDhchF}r\ (hH]hI]hJ]hK]hN]uhPM hR]r] h[X_Update of Interfacing doc to address output visualization using Scientific Python gplt package.r^ r_ }r` (h5j[ h6jY ubaubaubeubeubh7)ra }rb (h5Uh6h=h?hBhDhEhF}rc (hH]hI]hJ]hK]rd Uapril-2003-version-1-2re ahN]rf h!auhPMhQhhR]rg (hT)rh }ri (h5X29 April 2003: Version 1.2rj h6ja h?hBhDhXhF}rk (hH]hI]hJ]hK]hN]uhPMhQhhR]rl h[X29 April 2003: Version 1.2rm rn }ro (h5jj h6jh ubaubh)rp }rq (h5Uh6ja h?hBhDhhF}rr (hX-hK]hJ]hH]hI]hN]uhPMhQhhR]rs (h)rt }ru (h5XNo changes in API.rv h6jp h?hBhDhhF}rw (hH]hI]hJ]hK]hN]uhPNhQhhR]rx h_)ry }rz (h5jv h6jt h?hBhDhchF}r{ (hH]hI]hJ]hK]hN]uhPMhR]r| h[XNo changes in API.r} r~ }r (h5jv h6jy ubaubaubh)r }r (h5X^Internal changes: * Defined "True" and "False" in Simulation.py to support Python 2.2. h6jp h?NhDhhF}r (hH]hI]hJ]hK]hN]uhPNhQhhR]r cdocutils.nodes definition_list r )r }r (h5UhF}r (hH]hI]hJ]hK]hN]uh6j hR]r cdocutils.nodes definition_list_item r )r }r (h5XXInternal changes: * Defined "True" and "False" in Simulation.py to support Python 2.2. h6j h?hBhDUdefinition_list_itemr hF}r (hH]hI]hJ]hK]hN]uhPMhR]r (cdocutils.nodes term r )r }r (h5XInternal changes:r h6j h?hBhDUtermr hF}r (hH]hI]hJ]hK]hN]uhPMhR]r h[XInternal changes:r r }r (h5j h6j ubaubcdocutils.nodes definition r )r }r (h5UhF}r (hH]hI]hJ]hK]hN]uh6j hR]r h)r }r (h5UhF}r (hX*hK]hJ]hH]hI]hN]uh6j hR]r h)r }r (h5XDDefined "True" and "False" in Simulation.py to support Python 2.2. hF}r (hH]hI]hJ]hK]hN]uh6j hR]r h_)r }r (h5XBDefined "True" and "False" in Simulation.py to support Python 2.2.r h6j h?hBhDhchF}r (hH]hI]hJ]hK]hN]uhPMhR]r h[XBDefined "True" and "False" in Simulation.py to support Python 2.2.r r }r (h5j h6j ubaubahDhubahDhubahDU definitionr ubeubahDUdefinition_listr ubaubeubeubh7)r }r (h5Uh6h=h?hBhDhEhF}r (hH]hI]hJ]hK]r U october-2002r ahN]r hauhPMhQhhR]r (hT)r }r (h5X22 October 2002r h6j h?hBhDhXhF}r (hH]hI]hJ]hK]hN]uhPMhQhhR]r h[X22 October 2002r r }r (h5j h6j ubaubh)r }r (h5Uh6j h?hBhDhhF}r (hX-hK]hJ]hH]hI]hN]uhPMhQhhR]r (h)r }r (h5XPRe-release of 0.5 Beta on SourceForge.net to replace corrupted file __init__.py.r h6j h?hBhDhhF}r (hH]hI]hJ]hK]hN]uhPNhQhhR]r h_)r }r (h5j h6j h?hBhDhchF}r (hH]hI]hJ]hK]hN]uhPMhR]r h[XPRe-release of 0.5 Beta on SourceForge.net to replace corrupted file __init__.py.r r }r (h5j h6j ubaubaubh)r }r (h5XNo code changes whatever! h6j h?hBhDhhF}r (hH]hI]hJ]hK]hN]uhPNhQhhR]r h_)r }r (h5XNo code changes whatever!r h6j h?hBhDhchF}r (hH]hI]hJ]hK]hN]uhPMhR]r h[XNo code changes whatever!r r }r (h5j h6j ubaubaubeubeubh7)r }r (h5Uh6h=h?hBhDhEhF}r (hH]hI]hJ]hK]r Uid22r ahN]r h auhPMhQhhR]r (hT)r }r (h5X18 October 2002r h6j h?hBhDhXhF}r (hH]hI]hJ]hK]hN]uhPMhQhhR]r h[X18 October 2002r r }r (h5j h6j ubaubh)r }r (h5Uh6j h?hBhDhhF}r (hX-hK]hJ]hH]hI]hN]uhPMhQhhR]r (h)r }r (h5XVersion 0.5 Beta-release, intended to get testing by application developers and system integrators in preparation of first full (production) release. Released on SourceForge.net on 20 October 2002.r h6j h?hBhDhhF}r (hH]hI]hJ]hK]hN]uhPNhQhhR]r h_)r }r (h5j h6j h?hBhDhchF}r (hH]hI]hJ]hK]hN]uhPMhR]r h[XVersion 0.5 Beta-release, intended to get testing by application developers and system integrators in preparation of first full (production) release. Released on SourceForge.net on 20 October 2002.r r }r (h5j h6j ubaubaubh)r }r (h5X More modelsr h6j h?hBhDhhF}r (hH]hI]hJ]hK]hN]uhPNhQhhR]r h_)r }r (h5j h6j h?hBhDhchF}r (hH]hI]hJ]hK]hN]uhPM hR]r h[X More modelsr r }r (h5j h6j ubaubaubh)r }r (h5XZDocumentation enhanced by a manual, a tutorial ("The Bank") and installation instructions.r h6j h?hBhDhhF}r (hH]hI]hJ]hK]hN]uhPNhQhhR]r h_)r }r (h5j h6j h?hBhDhchF}r (hH]hI]hJ]hK]hN]uhPM!hR]r h[XZDocumentation enhanced by a manual, a tutorial ("The Bank") and installation instructions.r r }r (h5j h6j ubaubaubh)r }r (h5XMajor changes to the API: * Introduced 'simulate(until=0)' instead of 'scheduler(till=0)'. Left 'scheduler()' in for backward compatibility, but marked as deprecated. * Added attribute "name" to class Process. Process constructor is now:: def __init__(self,name="a_process") Backward compatible if keyword parameters used. * Changed Resource constructor to:: def __init__(self,capacity=1,name="a_resource",unitName="units") Backward compatible if keyword parameters used. h6j h?NhDhhF}r (hH]hI]hJ]hK]hN]uhPNhQhhR]r (h_)r }r (h5XMajor changes to the API:r h6j h?hBhDhchF}r (hH]hI]hJ]hK]hN]uhPM"hR]r h[XMajor changes to the API:r r }r (h5j h6j ubaubh)r }r (h5UhF}r (hX*hK]hJ]hH]hI]hN]uh6j hR]r! (h)r" }r# (h5XIntroduced 'simulate(until=0)' instead of 'scheduler(till=0)'. Left 'scheduler()' in for backward compatibility, but marked as deprecated.r$ hF}r% (hH]hI]hJ]hK]hN]uh6j hR]r& h_)r' }r( (h5j$ h6j" h?hBhDhchF}r) (hH]hI]hJ]hK]hN]uhPM$hR]r* h[XIntroduced 'simulate(until=0)' instead of 'scheduler(till=0)'. Left 'scheduler()' in for backward compatibility, but marked as deprecated.r+ r, }r- (h5j$ h6j' ubaubahDhubh)r. }r/ (h5XAdded attribute "name" to class Process. Process constructor is now:: def __init__(self,name="a_process") Backward compatible if keyword parameters used. hF}r0 (hH]hI]hJ]hK]hN]uh6j hR]r1 (h_)r2 }r3 (h5XEAdded attribute "name" to class Process. Process constructor is now::h6j. h?hBhDhchF}r4 (hH]hI]hJ]hK]hN]uhPM%hR]r5 h[XDAdded attribute "name" to class Process. Process constructor is now:r6 r7 }r8 (h5XDAdded attribute "name" to class Process. Process constructor is now:h6j2 ubaubcdocutils.nodes literal_block r9 )r: }r; (h5X#def __init__(self,name="a_process")h6j. hDU literal_blockr< hF}r= (U xml:spacer> Upreserver? hK]hJ]hH]hI]hN]uhPM'hR]r@ h[X#def __init__(self,name="a_process")rA rB }rC (h5Uh6j: ubaubh_)rD }rE (h5X/Backward compatible if keyword parameters used.rF h6j. h?hBhDhchF}rG (hH]hI]hJ]hK]hN]uhPM)hR]rH h[X/Backward compatible if keyword parameters used.rI rJ }rK (h5jF h6jD ubaubehDhubh)rL }rM (h5XChanged Resource constructor to:: def __init__(self,capacity=1,name="a_resource",unitName="units") Backward compatible if keyword parameters used. hF}rN (hH]hI]hJ]hK]hN]uh6j hR]rO (h_)rP }rQ (h5X!Changed Resource constructor to::rR h6jL h?hBhDhchF}rS (hH]hI]hJ]hK]hN]uhPM+hR]rT h[X Changed Resource constructor to:rU rV }rW (h5X Changed Resource constructor to:h6jP ubaubj9 )rX }rY (h5X@def __init__(self,capacity=1,name="a_resource",unitName="units")h6jL hDj< hF}rZ (j> j? hK]hJ]hH]hI]hN]uhPM-hR]r[ h[X@def __init__(self,capacity=1,name="a_resource",unitName="units")r\ r] }r^ (h5Uh6jX ubaubh_)r_ }r` (h5X/Backward compatible if keyword parameters used.ra h6jL h?hBhDhchF}rb (hH]hI]hJ]hK]hN]uhPM/hR]rc h[X/Backward compatible if keyword parameters used.rd re }rf (h5ja h6j_ ubaubehDhubehDhubeubeubeubh7)rg }rh (h5Uh6h=h?hBhDhEhF}ri (hH]hI]hJ]hK]rj Useptember-2002rk ahN]rl h#auhPM3hQhhR]rm (hT)rn }ro (h5X27 September 2002rp h6jg h?hBhDhXhF}rq (hH]hI]hJ]hK]hN]uhPM3hQhhR]rr h[X27 September 2002rs rt }ru (h5jp h6jn ubaubh)rv }rw (h5Uh6jg h?hBhDhhF}rx (hX*hK]hJ]hH]hI]hN]uhPM5hQhhR]ry (h)rz }r{ (h5XBVersion 0.2 Alpha-release, intended to attract feedback from usersr| h6jv h?hBhDhhF}r} (hH]hI]hJ]hK]hN]uhPNhQhhR]r~ h_)r }r (h5j| h6jz h?hBhDhchF}r (hH]hI]hJ]hK]hN]uhPM5hR]r h[XBVersion 0.2 Alpha-release, intended to attract feedback from usersr r }r (h5j| h6j ubaubaubh)r }r (h5XExtended list of modelsr h6jv h?hBhDhhF}r (hH]hI]hJ]hK]hN]uhPNhQhhR]r h_)r }r (h5j h6j h?hBhDhchF}r (hH]hI]hJ]hK]hN]uhPM6hR]r h[XExtended list of modelsr r }r (h5j h6j ubaubaubh)r }r (h5XUpodated documentation h6jv h?hBhDhhF}r (hH]hI]hJ]hK]hN]uhPNhQhhR]r h_)r }r (h5XUpodated documentationr h6j h?hBhDhchF}r (hH]hI]hJ]hK]hN]uhPM7hR]r h[XUpodated documentationr r }r (h5j h6j ubaubaubeubeubh7)r }r (h5Uh6h=h?hBhDhEhF}r (hH]hI]hJ]hK]r Uid23r ahN]r h auhPM:hQhhR]r (hT)r }r (h5X17 September 2002r h6j h?hBhDhXhF}r (hH]hI]hJ]hK]hN]uhPM:hQhhR]r h[X17 September 2002r r }r (h5j h6j ubaubh)r }r (h5Uh6j h?hBhDhhF}r (hX*hK]hJ]hH]hI]hN]uhPM<hQhhR]r (h)r }r (h5XEVersion 0.1.2 published on SourceForge; fully working, pre-alpha coder h6j h?hBhDhhF}r (hH]hI]hJ]hK]hN]uhPNhQhhR]r h_)r }r (h5j h6j h?hBhDhchF}r (hH]hI]hJ]hK]hN]uhPM<hR]r h[XEVersion 0.1.2 published on SourceForge; fully working, pre-alpha coder r }r (h5j h6j ubaubaubh)r }r (h5XfImplements simulation, shared resources with queuing (FIFO), and monitors for data gathering/analysis.h6j h?hBhDhhF}r (hH]hI]hJ]hK]hN]uhPNhQhhR]r h_)r }r (h5XfImplements simulation, shared resources with queuing (FIFO), and monitors for data gathering/analysis.r h6j h?hBhDhchF}r (hH]hI]hJ]hK]hN]uhPM=hR]r h[XfImplements simulation, shared resources with queuing (FIFO), and monitors for data gathering/analysis.r r }r (h5j h6j ubaubaubh)r }r (h5X[Contains basic documentation (cheatsheet) and simulation models for test and demonstration.h6j h?hBhDhhF}r (hH]hI]hJ]hK]hN]uhPNhQhhR]r h_)r }r (h5X[Contains basic documentation (cheatsheet) and simulation models for test and demonstration.r h6j h?hBhDhchF}r (hH]hI]hJ]hK]hN]uhPM?hR]r h[X[Contains basic documentation (cheatsheet) and simulation models for test and demonstration.r r }r (h5j h6j ubaubaubeubeubeubh?hBhDhEhF}r (hH]hI]hJ]hK]r Ujanuary-2007-version-1-8r ahN]r hauhPMhQhhR]r (hT)r }r (h5XJanuary 2007: Version 1.8r h6h;h?hBhDhXhF}r (hH]hI]hJ]hK]hN]uhPMhQhhR]r h[XJanuary 2007: Version 1.8r r }r (h5j h6j ubaubh8h7)r }r (h5Uh:Kh6h;h?hBhDhEhF}r (hH]r jahI]hJ]hK]r Uid20r ahN]uhPM%hQhhR]r (hT)r }r (h5X Bug fixesr h6j h?hBhDhXhF}r (hH]hI]hJ]hK]hN]uhPM%hQhhR]r h[X Bug fixesr r }r (h5j h6j ubaubh)r }r (h5Uh6j h?hBhDhhF}r (hX-hK]hJ]hH]hI]hN]uhPM'hQhhR]r (h)r }r (h5X2Repaired a bug in *yield waituntil* runtime code. h6j h?hBhDhhF}r (hH]hI]hJ]hK]hN]uhPNhQhhR]r h_)r }r (h5X1Repaired a bug in *yield waituntil* runtime code.h6j h?hBhDhchF}r (hH]hI]hJ]hK]hN]uhPM'hR]r (h[XRepaired a bug in r r }r (h5XRepaired a bug in h6j ubjJ)r}r(h5X*yield waituntil*hF}r(hH]hI]hJ]hK]hN]uh6j hR]rh[Xyield waituntilrr}r(h5Uh6jubahDjRubh[X runtime code.rr}r (h5X runtime code.h6j ubeubaubh)r }r (h5XTIntroduced check for *capacity* parameter of a Level or a Store being a number > 0. h6j h?hBhDhhF}r (hH]hI]hJ]hK]hN]uhPNhQhhR]r h_)r}r(h5XSIntroduced check for *capacity* parameter of a Level or a Store being a number > 0.h6j h?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPM)hR]r(h[XIntroduced check for rr}r(h5XIntroduced check for h6jubjJ)r}r(h5X *capacity*hF}r(hH]hI]hJ]hK]hN]uh6jhR]rh[Xcapacityrr}r(h5Uh6jubahDjRubh[X4 parameter of a Level or a Store being a number > 0.rr}r(h5X4 parameter of a Level or a Store being a number > 0.h6jubeubaubh)r}r (h5XAdded code so that self.eventsFired gets set correctly after an event fires in a compound yield get/put with a waitevent clause (reneging case). h6j h?hBhDhhF}r!(hH]hI]hJ]hK]hN]uhPNhQhhR]r"h_)r#}r$(h5XAdded code so that self.eventsFired gets set correctly after an event fires in a compound yield get/put with a waitevent clause (reneging case).r%h6jh?hBhDhchF}r&(hH]hI]hJ]hK]hN]uhPM,hR]r'h[XAdded code so that self.eventsFired gets set correctly after an event fires in a compound yield get/put with a waitevent clause (reneging case).r(r)}r*(h5j%h6j#ubaubaubh)r+}r,(h5X3Repaired a bug in prettyprinting of Store objects. h6j h?hBhDhhF}r-(hH]hI]hJ]hK]hN]uhPNhQhhR]r.h_)r/}r0(h5X2Repaired a bug in prettyprinting of Store objects.r1h6j+h?hBhDhchF}r2(hH]hI]hJ]hK]hN]uhPM/hR]r3h[X2Repaired a bug in prettyprinting of Store objects.r4r5}r6(h5j1h6j/ubaubaubeubeubh7)r7}r8(h5Uh:Kh6h;h?hBhDhEhF}r9(hH]r:jahI]hJ]hK]r;Uid21r<ahN]uhPM2hQhhR]r=(hT)r>}r?(h5X Additionsr@h6j7h?hBhDhXhF}rA(hH]hI]hJ]hK]hN]uhPM2hQhhR]rBh[X AdditionsrCrD}rE(h5j@h6j>ubaubh)rF}rG(h5Uh6j7h?hBhDhhF}rH(hX-hK]hJ]hH]hI]hN]uhPM4hQhhR]rI(h)rJ}rK(h5XNew compound yield statements support time-out or event-based reneging in get and put operations on Store and Level instances. h6jFh?hBhDhhF}rL(hH]hI]hJ]hK]hN]uhPNhQhhR]rMh_)rN}rO(h5X~New compound yield statements support time-out or event-based reneging in get and put operations on Store and Level instances.rPh6jJh?hBhDhchF}rQ(hH]hI]hJ]hK]hN]uhPM4hR]rRh[X~New compound yield statements support time-out or event-based reneging in get and put operations on Store and Level instances.rSrT}rU(h5jPh6jNubaubaubh)rV}rW(h5X@*yield get* on a Store instance can now have a filter function. h6jFh?hBhDhhF}rX(hH]hI]hJ]hK]hN]uhPNhQhhR]rYh_)rZ}r[(h5X?*yield get* on a Store instance can now have a filter function.h6jVh?hBhDhchF}r\(hH]hI]hJ]hK]hN]uhPM7hR]r](jJ)r^}r_(h5X *yield get*hF}r`(hH]hI]hJ]hK]hN]uh6jZhR]rah[X yield getrbrc}rd(h5Uh6j^ubahDjRubh[X4 on a Store instance can now have a filter function.rerf}rg(h5X4 on a Store instance can now have a filter function.h6jZubeubaubh)rh}ri(h5XsAll Monitor and Tally instances are automatically registered in list *allMonitors* and *allTallies*, respectively. h6jFh?hBhDhhF}rj(hH]hI]hJ]hK]hN]uhPNhQhhR]rkh_)rl}rm(h5XrAll Monitor and Tally instances are automatically registered in list *allMonitors* and *allTallies*, respectively.h6jhh?hBhDhchF}rn(hH]hI]hJ]hK]hN]uhPM9hR]ro(h[XEAll Monitor and Tally instances are automatically registered in list rprq}rr(h5XEAll Monitor and Tally instances are automatically registered in list h6jlubjJ)rs}rt(h5X *allMonitors*hF}ru(hH]hI]hJ]hK]hN]uh6jlhR]rvh[X allMonitorsrwrx}ry(h5Uh6jsubahDjRubh[X and rzr{}r|(h5X and h6jlubjJ)r}}r~(h5X *allTallies*hF}r(hH]hI]hJ]hK]hN]uh6jlhR]rh[X allTalliesrr}r(h5Uh6j}ubahDjRubh[X, respectively.rr}r(h5X, respectively.h6jlubeubaubh)r}r(h5XbThe new function *startCollection* allows activation of Monitors and Tallies at a specified time. h6jFh?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r(h5XaThe new function *startCollection* allows activation of Monitors and Tallies at a specified time.h6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPM<hR]r(h[XThe new function rr}r(h5XThe new function h6jubjJ)r}r(h5X*startCollection*hF}r(hH]hI]hJ]hK]hN]uh6jhR]rh[XstartCollectionrr}r(h5Uh6jubahDjRubh[X? allows activation of Monitors and Tallies at a specified time.rr}r(h5X? allows activation of Monitors and Tallies at a specified time.h6jubeubaubh)r}r(h5XaA *printHistogram* method was added to Tally and Monitor which generates a table-form histogram. h6jFh?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r(h5X`A *printHistogram* method was added to Tally and Monitor which generates a table-form histogram.h6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPM?hR]r(h[XA rr}r(h5XA h6jubjJ)r}r(h5X*printHistogram*hF}r(hH]hI]hJ]hK]hN]uh6jhR]rh[XprintHistogramrr}r(h5Uh6jubahDjRubh[XN method was added to Tally and Monitor which generates a table-form histogram.rr}r(h5XN method was added to Tally and Monitor which generates a table-form histogram.h6jubeubaubh)r}r(h5XuIn SimPy.SimulationRT: A function for allowing changing the ratio wall clock time to simulation time has been added. h6jFh?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r(h5XtIn SimPy.SimulationRT: A function for allowing changing the ratio wall clock time to simulation time has been added.rh6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPMBhR]rh[XtIn SimPy.SimulationRT: A function for allowing changing the ratio wall clock time to simulation time has been added.rr}r(h5jh6jubaubaubeubeubeubh?hBhDhEhF}r(hH]rjahI]hJ]hK]rUid19rahN]uhPMhQhhR]r(hT)r}r(h5X Major Changesrh6h8h?hBhDhXhF}r(hH]hI]hJ]hK]hN]uhPMhQhhR]rh[X Major Changesrr}r(h5jh6jubaubh)r}r(h5Uh6h8h?hBhDhhF}r(hX-hK]hJ]hH]hI]hN]uhPMhQhhR]r(h)r}r(h5XtSimPy 1.8 and future releases will not run under the obsolete Python 2.2 version. They require Python 2.3 or later. h6jh?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r(h5XsSimPy 1.8 and future releases will not run under the obsolete Python 2.2 version. They require Python 2.3 or later.rh6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPMhR]rh[XsSimPy 1.8 and future releases will not run under the obsolete Python 2.2 version. They require Python 2.3 or later.rr}r(h5jh6jubaubaubh)r}r(h5XjThe Manual has been thoroughly edited, restructured and rewritten. It is now also provided in PDF format. h6jh?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r(h5XiThe Manual has been thoroughly edited, restructured and rewritten. It is now also provided in PDF format.rh6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPMhR]rh[XiThe Manual has been thoroughly edited, restructured and rewritten. It is now also provided in PDF format.rr}r(h5jh6jubaubaubh)r}r(h5XThe Cheatsheet has been totally rewritten in a tabular format. It is provided in both XLS (MS Excel spreadsheet) and PDF format. h6jh?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r(h5XThe Cheatsheet has been totally rewritten in a tabular format. It is provided in both XLS (MS Excel spreadsheet) and PDF format.rh6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPMhR]rh[XThe Cheatsheet has been totally rewritten in a tabular format. It is provided in both XLS (MS Excel spreadsheet) and PDF format.rr}r(h5jh6jubaubaubh)r}r(h5X\The version of SimPy.Simulation(RT/Trace/Step) is now accessible by the variable 'version'. h6jh?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r(h5X[The version of SimPy.Simulation(RT/Trace/Step) is now accessible by the variable 'version'.rh6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPMhR]rh[X[The version of SimPy.Simulation(RT/Trace/Step) is now accessible by the variable 'version'.rr}r(h5jh6jubaubaubh)r}r(h5XHThe *__str__* method of Histogram was changed to return a table format. h6jh?hBhDhhF}r(hH]hI]hJ]hK]hN]uhPNhQhhR]rh_)r}r(h5XGThe *__str__* method of Histogram was changed to return a table format.h6jh?hBhDhchF}r(hH]hI]hJ]hK]hN]uhPM"hR]r(h[XThe rr}r(h5XThe h6jubjJ)r }r (h5X *__str__*hF}r (hH]hI]hJ]hK]hN]uh6jhR]r h[X__str__r r}r(h5Uh6j ubahDjRubh[X: method of Histogram was changed to return a table format.rr}r(h5X: method of Histogram was changed to return a table format.h6jubeubaubeubeubh?hBhDUsystem_messagerhF}r(hH]UlevelKhK]hJ]rjaUsourcehBhI]hN]UlineMUtypeUINFOruhPMhQhhR]rh_)r}r(h5UhF}r(hH]hI]hJ]hK]hN]uh6h3hR]rh[X0Duplicate implicit target name: "major changes".rr}r(h5Uh6jubahDhcubaubh2)r}r (h5Uh6j h?hBhDjhF}r!(hH]UlevelKhK]hJ]r"j aUsourcehBhI]hN]UlineM%UtypejuhPM%hQhhR]r#h_)r$}r%(h5UhF}r&(hH]hI]hJ]hK]hN]uh6jhR]r'h[X,Duplicate implicit target name: "bug fixes".r(r)}r*(h5Uh6j$ubahDhcubaubh2)r+}r,(h5Uh6j7h?hBhDjhF}r-(hH]UlevelKhK]hJ]r.j<aUsourcehBhI]hN]UlineM2UtypejuhPM2hQhhR]r/h_)r0}r1(h5UhF}r2(hH]hI]hJ]hK]hN]uh6j+hR]r3h[X,Duplicate implicit target name: "additions".r4r5}r6(h5Uh6j0ubahDhcubaubeUcurrent_sourcer7NU decorationr8NUautofootnote_startr9KUnameidsr:}r;(hjhhhjh jh jgh j h jhh NhjhNhj hj7hj hjhhMhjp hj=hj/hjYhjhjhj hhhjhj hj h j h!je h"Nh#jk h$j9 h%jp h&j h'jh(jh)jh*juh+jQ h,jBh-jAuhR]r<h=ah5UU transformerr=NU footnote_refsr>}r?Urefnamesr@}rAUsymbol_footnotesrB]rCUautofootnote_refsrD]rEUsymbol_footnote_refsrF]rGU citationsrH]rIhQhU current_linerJNUtransform_messagesrK]rLUreporterrMNUid_startrNKU autofootnotesrO]rPU citation_refsrQ}rRUindirect_targetsrS]rTUsettingsrU(cdocutils.frontend Values rVorW}rX(Ufootnote_backlinksrYKUrecord_dependenciesrZNU rfc_base_urlr[Uhttp://tools.ietf.org/html/r\U tracebackr]Upep_referencesr^NUstrip_commentsr_NU toc_backlinksr`UentryraU language_coderbUenrcU datestamprdNU report_levelreKU _destinationrfNU halt_levelrgKU strip_classesrhNhXNUerror_encoding_error_handlerriUbackslashreplacerjUdebugrkNUembed_stylesheetrlUoutput_encoding_error_handlerrmUstrictrnU sectnum_xformroKUdump_transformsrpNU docinfo_xformrqKUwarning_streamrrNUpep_file_url_templatersUpep-%04drtUexit_status_levelruKUconfigrvNUstrict_visitorrwNUcloak_email_addressesrxUtrim_footnote_reference_spaceryUenvrzNUdump_pseudo_xmlr{NUexpose_internalsr|NUsectsubtitle_xformr}U source_linkr~NUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerUC/var/build/user_builds/simpy/checkouts/3.0.5/docs/about/history.rstrUgettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjnUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(jYjUjp jl jjjjj j j/j+jjjjj j jk jg jjjhjdjtjpjjj7j3hhjjhhhhhhjyjuj~jzjjjjjjjjjgjcjAj=jjjh8jjjjjQ jM jjj h;j j j j j j j9 j5 je ja jBj>hMh=jp jl jujqj<j7j=j9j j j j j j uUsubstitution_namesr}rhDhQhF}r(hH]hK]hJ]UsourcehBhI]hN]uU footnotesr]rUrefidsr}rub.PK.D~GZ Z )simpy-3.0.5/.doctrees/about/ports.doctreecdocutils.nodes document q)q}q(U nametypesq}qXportsqNsUsubstitution_defsq}qUparse_messagesq ]q Ucurrent_sourceq NU decorationq NUautofootnote_startq KUnameidsq}qhUportsqsUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqcdocutils.nodes reprunicode qXA/var/build/user_builds/simpy/checkouts/3.0.5/docs/about/ports.rstqq}qbUtagnameqUsectionqU attributesq}q (Udupnamesq!]Uclassesq"]Ubackrefsq#]Uidsq$]q%haUnamesq&]q'hauUlineq(KUdocumentq)hh]q*(cdocutils.nodes title q+)q,}q-(hXPortsq.hhhhhUtitleq/h}q0(h!]h"]h#]h$]h&]uh(Kh)hh]q1cdocutils.nodes Text q2XPortsq3q4}q5(hh.hh,ubaubcdocutils.nodes paragraph q6)q7}q8(hXAn almost feature-complete reimplementation of SimPy in C# was written by Andreas Beham and is available at `github.com/abeham/SimSharp`__hhhhhU paragraphq9h}q:(h!]h"]h#]h$]h&]uh(Kh)hh]q;(h2XlAn almost feature-complete reimplementation of SimPy in C# was written by Andreas Beham and is available at q(hXlAn almost feature-complete reimplementation of SimPy in C# was written by Andreas Beham and is available at hh7ubcdocutils.nodes reference q?)q@}qA(hX`github.com/abeham/SimSharp`__UresolvedqBKhh7hU referenceqCh}qD(UnameXgithub.com/abeham/SimSharpUrefuriqEX!http://github.com/abeham/SimSharpqFh$]h#]h!]h"]h&]U anonymousqGKuh]qHh2Xgithub.com/abeham/SimSharpqIqJ}qK(hUhh@ubaubeubcdocutils.nodes target qL)qM}qN(hX$__ http://github.com/abeham/SimSharpU referencedqOKhhhhhUtargetqPh}qQ(hEhFh$]qRUid1qSah#]h!]h"]h&]hGKuh(Kh)hh]ubeubahUU transformerqTNU footnote_refsqU}qVUrefnamesqW}qXUsymbol_footnotesqY]qZUautofootnote_refsq[]q\Usymbol_footnote_refsq]]q^U citationsq_]q`h)hU current_lineqaNUtransform_messagesqb]qcUreporterqdNUid_startqeKU autofootnotesqf]qgU citation_refsqh}qiUindirect_targetsqj]qkUsettingsql(cdocutils.frontend Values qmoqn}qo(Ufootnote_backlinksqpKUrecord_dependenciesqqNU rfc_base_urlqrUhttp://tools.ietf.org/html/qsU tracebackqtUpep_referencesquNUstrip_commentsqvNU toc_backlinksqwUentryqxU language_codeqyUenqzU datestampq{NU report_levelq|KU _destinationq}NU halt_levelq~KU strip_classesqNh/NUerror_encoding_error_handlerqUbackslashreplaceqUdebugqNUembed_stylesheetqUoutput_encoding_error_handlerqUstrictqU sectnum_xformqKUdump_transformsqNU docinfo_xformqKUwarning_streamqNUpep_file_url_templateqUpep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUA/var/build/user_builds/simpy/checkouts/3.0.5/docs/about/ports.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]qUfile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(hhhShMuUsubstitution_namesq}qhh)h}q(h!]h$]h#]Usourcehh"]h&]uU footnotesq]qUrefidsq}qub.PK.DlڿFF3simpy-3.0.5/.doctrees/examples/machine_shop.doctreecdocutils.nodes document q)q}q(U nametypesq}qX machine shopqNsUsubstitution_defsq}qUparse_messagesq ]q Ucurrent_sourceq NU decorationq NUautofootnote_startq KUnameidsq}qhU machine-shopqsUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqcdocutils.nodes reprunicode qXK/var/build/user_builds/simpy/checkouts/3.0.5/docs/examples/machine_shop.rstqq}qbUtagnameqUsectionqU attributesq}q (Udupnamesq!]Uclassesq"]Ubackrefsq#]Uidsq$]q%haUnamesq&]q'hauUlineq(KUdocumentq)hh]q*(cdocutils.nodes title q+)q,}q-(hX Machine Shopq.hhhhhUtitleq/h}q0(h!]h"]h#]h$]h&]uh(Kh)hh]q1cdocutils.nodes Text q2X Machine Shopq3q4}q5(hh.hh,ubaubcdocutils.nodes paragraph q6)q7}q8(hXCovers:q9hhhhhU paragraphq:h}q;(h!]h"]h#]h$]h&]uh(Kh)hh]q}q?(hh9hh7ubaubcdocutils.nodes bullet_list q@)qA}qB(hUhhhhhU bullet_listqCh}qD(UbulletqEX-h$]h#]h!]h"]h&]uh(Kh)hh]qF(cdocutils.nodes list_item qG)qH}qI(hX InterruptsqJhhAhhhU list_itemqKh}qL(h!]h"]h#]h$]h&]uh(Nh)hh]qMh6)qN}qO(hhJhhHhhhh:h}qP(h!]h"]h#]h$]h&]uh(Kh]qQh2X InterruptsqRqS}qT(hhJhhNubaubaubhG)qU}qV(hXResources: PreemptiveResource hhAhhhhKh}qW(h!]h"]h#]h$]h&]uh(Nh)hh]qXh6)qY}qZ(hXResources: PreemptiveResourceq[hhUhhhh:h}q\(h!]h"]h#]h$]h&]uh(Kh]q]h2XResources: PreemptiveResourceq^q_}q`(hh[hhYubaubaubeubh6)qa}qb(hXThis example comprises a workshop with *n* identical machines. A stream of jobs (enough to keep the machines busy) arrives. Each machine breaks down periodically. Repairs are carried out by one repairman. The repairman has other, less important tasks to perform, too. Broken machines preempt theses tasks. The repairman continues them when he is done with the machine repair. The workshop works continuously.hhhhhh:h}qc(h!]h"]h#]h$]h&]uh(K h)hh]qd(h2X'This example comprises a workshop with qeqf}qg(hX'This example comprises a workshop with hhaubcdocutils.nodes emphasis qh)qi}qj(hX*n*h}qk(h!]h"]h#]h$]h&]uhhah]qlh2Xnqm}qn(hUhhiubahUemphasisqoubh2Xn identical machines. A stream of jobs (enough to keep the machines busy) arrives. Each machine breaks down periodically. Repairs are carried out by one repairman. The repairman has other, less important tasks to perform, too. Broken machines preempt theses tasks. The repairman continues them when he is done with the machine repair. The workshop works continuously.qpqq}qr(hXn identical machines. A stream of jobs (enough to keep the machines busy) arrives. Each machine breaks down periodically. Repairs are carried out by one repairman. The repairman has other, less important tasks to perform, too. Broken machines preempt theses tasks. The repairman continues them when he is done with the machine repair. The workshop works continuously.hhaubeubh6)qs}qt(hXA machine has two processes: *working* implements the actual behaviour of the machine (producing parts). *break_machine* periodically interrupts the *working* process to simulate the machine failure.hhhhhh:h}qu(h!]h"]h#]h$]h&]uh(Kh)hh]qv(h2XA machine has two processes: qwqx}qy(hXA machine has two processes: hhsubhh)qz}q{(hX *working*h}q|(h!]h"]h#]h$]h&]uhhsh]q}h2Xworkingq~q}q(hUhhzubahhoubh2XC implements the actual behaviour of the machine (producing parts). qq}q(hXC implements the actual behaviour of the machine (producing parts). hhsubhh)q}q(hX*break_machine*h}q(h!]h"]h#]h$]h&]uhhsh]qh2X break_machineqq}q(hUhhubahhoubh2X periodically interrupts the qq}q(hX periodically interrupts the hhsubhh)q}q(hX *working*h}q(h!]h"]h#]h$]h&]uhhsh]qh2Xworkingqq}q(hUhhubahhoubh2X) process to simulate the machine failure.qq}q(hX) process to simulate the machine failure.hhsubeubh6)q}q(hX;The repairman's other job is also a process (implemented by *other_job*). The repairman itself is a :class:`~simpy.resources.resource.PreemptiveResource` with a capacity of *1*. The machine repairing has a priority of *1*, while the other job has a priority of *2* (the smaller the number, the higher the priority).hhhhhh:h}q(h!]h"]h#]h$]h&]uh(Kh)hh]q(h2X<The repairman's other job is also a process (implemented by qq}q(hX<The repairman's other job is also a process (implemented by hhubhh)q}q(hX *other_job*h}q(h!]h"]h#]h$]h&]uhhh]qh2X other_jobqq}q(hUhhubahhoubh2X). The repairman itself is a qq}q(hX). The repairman itself is a hhubcsphinx.addnodes pending_xref q)q}q(hX5:class:`~simpy.resources.resource.PreemptiveResource`qhhhhhU pending_xrefqh}q(UreftypeXclassUrefwarnqU reftargetqX+simpy.resources.resource.PreemptiveResourceU refdomainXpyqh$]h#]U refexplicith!]h"]h&]UrefdocqXexamples/machine_shopqUpy:classqNU py:moduleqNuh(Kh]qcdocutils.nodes literal q)q}q(hhh}q(h!]h"]q(UxrefqhXpy-classqeh#]h$]h&]uhhh]qh2XPreemptiveResourceqq}q(hUhhubahUliteralqubaubh2X with a capacity of qÅq}q(hX with a capacity of hhubhh)q}q(hX*1*h}q(h!]h"]h#]h$]h&]uhhh]qh2X1q}q(hUhhubahhoubh2X*. The machine repairing has a priority of q̅q}q(hX*. The machine repairing has a priority of hhubhh)q}q(hX*1*h}q(h!]h"]h#]h$]h&]uhhh]qh2X1q}q(hUhhubahhoubh2X(, while the other job has a priority of qՅq}q(hX(, while the other job has a priority of hhubhh)q}q(hX*2*h}q(h!]h"]h#]h$]h&]uhhh]qh2X2q}q(hUhhubahhoubh2X3 (the smaller the number, the higher the priority).qޅq}q(hX3 (the smaller the number, the higher the priority).hhubeubcdocutils.nodes literal_block q)q}q(hXs""" Machine shop example Covers: - Interrupts - Resources: PreemptiveResource Scenario: A workshop has *n* identical machines. A stream of jobs (enough to keep the machines busy) arrives. Each machine breaks down periodically. Repairs are carried out by one repairman. The repairman has other, less important tasks to perform, too. Broken machines preempt theses tasks. The repairman continues them when he is done with the machine repair. The workshop works continuously. """ import random import simpy RANDOM_SEED = 42 PT_MEAN = 10.0 # Avg. processing time in minutes PT_SIGMA = 2.0 # Sigma of processing time MTTF = 300.0 # Mean time to failure in minutes BREAK_MEAN = 1 / MTTF # Param. for expovariate distribution REPAIR_TIME = 30.0 # Time it takes to repair a machine in minutes JOB_DURATION = 30.0 # Duration of other jobs in minutes NUM_MACHINES = 10 # Number of machines in the machine shop WEEKS = 4 # Simulation time in weeks SIM_TIME = WEEKS * 7 * 24 * 60 # Simulation time in minutes def time_per_part(): """Return actual processing time for a concrete part.""" return random.normalvariate(PT_MEAN, PT_SIGMA) def time_to_failure(): """Return time until next failure for a machine.""" return random.expovariate(BREAK_MEAN) class Machine(object): """A machine produces parts and my get broken every now and then. If it breaks, it requests a *repairman* and continues the production after the it is repaired. A machine has a *name* and a numberof *parts_made* thus far. """ def __init__(self, env, name, repairman): self.env = env self.name = name self.parts_made = 0 self.broken = False # Start "working" and "break_machine" processes for this machine. self.process = env.process(self.working(repairman)) env.process(self.break_machine()) def working(self, repairman): """Produce parts as long as the simulation runs. While making a part, the machine may break multiple times. Request a repairman when this happens. """ while True: # Start making a new part done_in = time_per_part() while done_in: try: # Working on the part start = self.env.now yield self.env.timeout(done_in) done_in = 0 # Set to 0 to exit while loop. except simpy.Interrupt: self.broken = True done_in -= self.env.now - start # How much time left? # Request a repairman. This will preempt its "other_job". with repairman.request(priority=1) as req: yield req yield self.env.timeout(REPAIR_TIME) self.broken = False # Part is done. self.parts_made += 1 def break_machine(self): """Break the machine every now and then.""" while True: yield self.env.timeout(time_to_failure()) if not self.broken: # Only break the machine if it is currently working. self.process.interrupt() def other_jobs(env, repairman): """The repairman's other (unimportant) job.""" while True: # Start a new job done_in = JOB_DURATION while done_in: # Retry the job until it is done. # It's priority is lower than that of machine repairs. with repairman.request(priority=2) as req: yield req try: start = env.now yield env.timeout(done_in) done_in = 0 except simpy.Interrupt: done_in -= env.now - start # Setup and start the simulation print('Machine shop') random.seed(RANDOM_SEED) # This helps reproducing the results # Create an environment and start the setup process env = simpy.Environment() repairman = simpy.PreemptiveResource(env, capacity=1) machines = [Machine(env, 'Machine %d' % i, repairman) for i in range(NUM_MACHINES)] env.process(other_jobs(env, repairman)) # Execute! env.run(until=SIM_TIME) # Analyis/results print('Machine shop results after %s weeks' % WEEKS) for machine in machines: print('%s made %d parts.' % (machine.name, machine.parts_made)) hhhhhU literal_blockqh}q(h!]U xml:spaceqUpreserveqh$]h#]UsourceXO/var/build/user_builds/simpy/checkouts/3.0.5/docs/examples/code/machine_shop.pyh"]h&]uh(Kh)hh]qh2Xs""" Machine shop example Covers: - Interrupts - Resources: PreemptiveResource Scenario: A workshop has *n* identical machines. A stream of jobs (enough to keep the machines busy) arrives. Each machine breaks down periodically. Repairs are carried out by one repairman. The repairman has other, less important tasks to perform, too. Broken machines preempt theses tasks. The repairman continues them when he is done with the machine repair. The workshop works continuously. """ import random import simpy RANDOM_SEED = 42 PT_MEAN = 10.0 # Avg. processing time in minutes PT_SIGMA = 2.0 # Sigma of processing time MTTF = 300.0 # Mean time to failure in minutes BREAK_MEAN = 1 / MTTF # Param. for expovariate distribution REPAIR_TIME = 30.0 # Time it takes to repair a machine in minutes JOB_DURATION = 30.0 # Duration of other jobs in minutes NUM_MACHINES = 10 # Number of machines in the machine shop WEEKS = 4 # Simulation time in weeks SIM_TIME = WEEKS * 7 * 24 * 60 # Simulation time in minutes def time_per_part(): """Return actual processing time for a concrete part.""" return random.normalvariate(PT_MEAN, PT_SIGMA) def time_to_failure(): """Return time until next failure for a machine.""" return random.expovariate(BREAK_MEAN) class Machine(object): """A machine produces parts and my get broken every now and then. If it breaks, it requests a *repairman* and continues the production after the it is repaired. A machine has a *name* and a numberof *parts_made* thus far. """ def __init__(self, env, name, repairman): self.env = env self.name = name self.parts_made = 0 self.broken = False # Start "working" and "break_machine" processes for this machine. self.process = env.process(self.working(repairman)) env.process(self.break_machine()) def working(self, repairman): """Produce parts as long as the simulation runs. While making a part, the machine may break multiple times. Request a repairman when this happens. """ while True: # Start making a new part done_in = time_per_part() while done_in: try: # Working on the part start = self.env.now yield self.env.timeout(done_in) done_in = 0 # Set to 0 to exit while loop. except simpy.Interrupt: self.broken = True done_in -= self.env.now - start # How much time left? # Request a repairman. This will preempt its "other_job". with repairman.request(priority=1) as req: yield req yield self.env.timeout(REPAIR_TIME) self.broken = False # Part is done. self.parts_made += 1 def break_machine(self): """Break the machine every now and then.""" while True: yield self.env.timeout(time_to_failure()) if not self.broken: # Only break the machine if it is currently working. self.process.interrupt() def other_jobs(env, repairman): """The repairman's other (unimportant) job.""" while True: # Start a new job done_in = JOB_DURATION while done_in: # Retry the job until it is done. # It's priority is lower than that of machine repairs. with repairman.request(priority=2) as req: yield req try: start = env.now yield env.timeout(done_in) done_in = 0 except simpy.Interrupt: done_in -= env.now - start # Setup and start the simulation print('Machine shop') random.seed(RANDOM_SEED) # This helps reproducing the results # Create an environment and start the setup process env = simpy.Environment() repairman = simpy.PreemptiveResource(env, capacity=1) machines = [Machine(env, 'Machine %d' % i, repairman) for i in range(NUM_MACHINES)] env.process(other_jobs(env, repairman)) # Execute! env.run(until=SIM_TIME) # Analyis/results print('Machine shop results after %s weeks' % WEEKS) for machine in machines: print('%s made %d parts.' % (machine.name, machine.parts_made)) q酁q}q(hUhhubaubh6)q}q(hXThe simulation's output:qhhhhhh:h}q(h!]h"]h#]h$]h&]uh(Kh)hh]qh2XThe simulation's output:qq}q(hhhhubaubh)q}q(hX>Machine shop Machine shop results after 4 weeks Machine 0 made 3251 parts. Machine 1 made 3273 parts. Machine 2 made 3242 parts. Machine 3 made 3343 parts. Machine 4 made 3387 parts. Machine 5 made 3244 parts. Machine 6 made 3269 parts. Machine 7 made 3185 parts. Machine 8 made 3302 parts. Machine 9 made 3279 parts. hhhhhhh}q(h!]hhh$]h#]UsourceXP/var/build/user_builds/simpy/checkouts/3.0.5/docs/examples/code/machine_shop.outh"]h&]uh(K h)hh]qh2X>Machine shop Machine shop results after 4 weeks Machine 0 made 3251 parts. Machine 1 made 3273 parts. Machine 2 made 3242 parts. Machine 3 made 3343 parts. Machine 4 made 3387 parts. Machine 5 made 3244 parts. Machine 6 made 3269 parts. Machine 7 made 3185 parts. Machine 8 made 3302 parts. Machine 9 made 3279 parts. qq}q(hUhhubaubeubahUU transformerqNU footnote_refsq}qUrefnamesq}qUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh)hU current_linerNUtransform_messagesr ]r Ureporterr NUid_startr KU autofootnotesr ]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coder Uenr!U datestampr"NU report_levelr#KU _destinationr$NU halt_levelr%KU strip_classesr&Nh/NUerror_encoding_error_handlerr'Ubackslashreplacer(Udebugr)NUembed_stylesheetr*Uoutput_encoding_error_handlerr+Ustrictr,U sectnum_xformr-KUdump_transformsr.NU docinfo_xformr/KUwarning_streamr0NUpep_file_url_templater1Upep-%04dr2Uexit_status_levelr3KUconfigr4NUstrict_visitorr5NUcloak_email_addressesr6Utrim_footnote_reference_spacer7Uenvr8NUdump_pseudo_xmlr9NUexpose_internalsr:NUsectsubtitle_xformr;U source_linkr<NUrfc_referencesr=NUoutput_encodingr>Uutf-8r?U source_urlr@NUinput_encodingrAU utf-8-sigrBU_disable_configrCNU id_prefixrDUU tab_widthrEKUerror_encodingrFUUTF-8rGU_sourcerHUK/var/build/user_builds/simpy/checkouts/3.0.5/docs/examples/machine_shop.rstrIUgettext_compactrJU generatorrKNUdump_internalsrLNU smart_quotesrMU pep_base_urlrNUhttp://www.python.org/dev/peps/rOUsyntax_highlightrPUlongrQUinput_encoding_error_handlerrRj,Uauto_id_prefixrSUidrTUdoctitle_xformrUUstrip_elements_with_classesrVNU _config_filesrW]Ufile_insertion_enabledrXU raw_enabledrYKU dump_settingsrZNubUsymbol_footnote_startr[KUidsr\}r]hhsUsubstitution_namesr^}r_hh)h}r`(h!]h$]h#]Usourcehh"]h&]uU footnotesra]rbUrefidsrc}rdub.PK.Dr0??3simpy-3.0.5/.doctrees/examples/movie_renege.doctreecdocutils.nodes document q)q}q(U nametypesq}qX movie renegeqNsUsubstitution_defsq}qUparse_messagesq ]q Ucurrent_sourceq NU decorationq NUautofootnote_startq KUnameidsq}qhU movie-renegeqsUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqcdocutils.nodes reprunicode qXK/var/build/user_builds/simpy/checkouts/3.0.5/docs/examples/movie_renege.rstqq}qbUtagnameqUsectionqU attributesq}q (Udupnamesq!]Uclassesq"]Ubackrefsq#]Uidsq$]q%haUnamesq&]q'hauUlineq(KUdocumentq)hh]q*(cdocutils.nodes title q+)q,}q-(hX Movie Renegeq.hhhhhUtitleq/h}q0(h!]h"]h#]h$]h&]uh(Kh)hh]q1cdocutils.nodes Text q2X Movie Renegeq3q4}q5(hh.hh,ubaubcdocutils.nodes paragraph q6)q7}q8(hXCovers:q9hhhhhU paragraphq:h}q;(h!]h"]h#]h$]h&]uh(Kh)hh]q}q?(hh9hh7ubaubcdocutils.nodes bullet_list q@)qA}qB(hUhhhhhU bullet_listqCh}qD(UbulletqEX-h$]h#]h!]h"]h&]uh(Kh)hh]qF(cdocutils.nodes list_item qG)qH}qI(hXResources: ResourceqJhhAhhhU list_itemqKh}qL(h!]h"]h#]h$]h&]uh(Nh)hh]qMh6)qN}qO(hhJhhHhhhh:h}qP(h!]h"]h#]h$]h&]uh(Kh]qQh2XResources: ResourceqRqS}qT(hhJhhNubaubaubhG)qU}qV(hXCondition eventsqWhhAhhhhKh}qX(h!]h"]h#]h$]h&]uh(Nh)hh]qYh6)qZ}q[(hhWhhUhhhh:h}q\(h!]h"]h#]h$]h&]uh(Kh]q]h2XCondition eventsq^q_}q`(hhWhhZubaubaubhG)qa}qb(hXShared events hhAhhhhKh}qc(h!]h"]h#]h$]h&]uh(Nh)hh]qdh6)qe}qf(hX Shared eventsqghhahhhh:h}qh(h!]h"]h#]h$]h&]uh(K h]qih2X Shared eventsqjqk}ql(hhghheubaubaubeubh6)qm}qn(hX6This examples models a movie theater with one ticket counter selling tickets for three movies (next show only). People arrive at random times and triy to buy a random number (1--6) tickets for a random movie. When a movie is sold out, all people waiting to buy a ticket for that movie renege (leave the queue).qohhhhhh:h}qp(h!]h"]h#]h$]h&]uh(K h)hh]qqh2X6This examples models a movie theater with one ticket counter selling tickets for three movies (next show only). People arrive at random times and triy to buy a random number (1--6) tickets for a random movie. When a movie is sold out, all people waiting to buy a ticket for that movie renege (leave the queue).qrqs}qt(hhohhmubaubh6)qu}qv(hXThe movie theater is just a container for all the related data (movies, the counter, tickets left, collected data, ...). The counter is a :class:`~simpy.resources.resource.Resource` with a capacity of one.hhhhhh:h}qw(h!]h"]h#]h$]h&]uh(Kh)hh]qx(h2XThe movie theater is just a container for all the related data (movies, the counter, tickets left, collected data, ...). The counter is a qyqz}q{(hXThe movie theater is just a container for all the related data (movies, the counter, tickets left, collected data, ...). The counter is a hhuubcsphinx.addnodes pending_xref q|)q}}q~(hX+:class:`~simpy.resources.resource.Resource`qhhuhhhU pending_xrefqh}q(UreftypeXclassUrefwarnqU reftargetqX!simpy.resources.resource.ResourceU refdomainXpyqh$]h#]U refexplicith!]h"]h&]UrefdocqXexamples/movie_renegeqUpy:classqNU py:moduleqNuh(Kh]qcdocutils.nodes literal q)q}q(hhh}q(h!]h"]q(UxrefqhXpy-classqeh#]h$]h&]uhh}h]qh2XResourceqq}q(hUhhubahUliteralqubaubh2X with a capacity of one.qq}q(hX with a capacity of one.hhuubeubh6)q}q(hXThe *moviegoer* process starts waiting until either it's his turn (it acquires the counter resource) or until the *sold out* signal is triggered. If the latter is the case it reneges (leaves the queue). If it gets to the counter, it tries to buy some tickets. This might not be successful, e.g. if the process tries to buy 5 tickets but only 3 are left. If less then two tickets are left after the ticket purchase, the *sold out* signal is triggered.hhhhhh:h}q(h!]h"]h#]h$]h&]uh(Kh)hh]q(h2XThe qq}q(hXThe hhubcdocutils.nodes emphasis q)q}q(hX *moviegoer*h}q(h!]h"]h#]h$]h&]uhhh]qh2X moviegoerqq}q(hUhhubahUemphasisqubh2Xc process starts waiting until either it's his turn (it acquires the counter resource) or until the qq}q(hXc process starts waiting until either it's his turn (it acquires the counter resource) or until the hhubh)q}q(hX *sold out*h}q(h!]h"]h#]h$]h&]uhhh]qh2Xsold outqq}q(hUhhubahhubh2X' signal is triggered. If the latter is the case it reneges (leaves the queue). If it gets to the counter, it tries to buy some tickets. This might not be successful, e.g. if the process tries to buy 5 tickets but only 3 are left. If less then two tickets are left after the ticket purchase, the qq}q(hX' signal is triggered. If the latter is the case it reneges (leaves the queue). If it gets to the counter, it tries to buy some tickets. This might not be successful, e.g. if the process tries to buy 5 tickets but only 3 are left. If less then two tickets are left after the ticket purchase, the hhubh)q}q(hX *sold out*h}q(h!]h"]h#]h$]h&]uhhh]qh2Xsold outqq}q(hUhhubahhubh2X signal is triggered.qq}q(hX signal is triggered.hhubeubh6)q}q(hXMoviegoers are generated by the *customer arrivals* process. It also chooses a movie and the number of tickets for the moviegoer.hhhhhh:h}q(h!]h"]h#]h$]h&]uh(Kh)hh]q(h2X Moviegoers are generated by the qąq}q(hX Moviegoers are generated by the hhubh)q}q(hX*customer arrivals*h}q(h!]h"]h#]h$]h&]uhhh]qh2Xcustomer arrivalsq˅q}q(hUhhubahhubh2XN process. It also chooses a movie and the number of tickets for the moviegoer.q΅q}q(hXN process. It also chooses a movie and the number of tickets for the moviegoer.hhubeubcdocutils.nodes literal_block q)q}q(hXN """ Movie renege example Covers: - Resources: Resource - Condition events - Shared events Scenario: A movie theatre has one ticket counter selling tickets for three movies (next show only). When a movie is sold out, all people waiting to buy tickets for that movie renege (leave queue). """ import collections import random import simpy RANDOM_SEED = 42 TICKETS = 50 # Number of tickets per movie SIM_TIME = 120 # Simulate until def moviegoer(env, movie, num_tickets, theater): """A moviegoer tries to by a number of tickets (*num_tickets*) for a certain *movie* in a *theater*. If the movie becomes sold out, she leaves the theater. If she gets to the counter, she tries to buy a number of tickets. If not enough tickets are left, she argues with the teller and leaves. If at most one ticket is left after the moviegoer bought her tickets, the *sold out* event for this movie is triggered causing all remaining moviegoers to leave. """ with theater.counter.request() as my_turn: # Wait until its our turn or until the movie is sold out result = yield my_turn | theater.sold_out[movie] # Check if it's our turn of if movie is sold out if my_turn not in result: theater.num_renegers[movie] += 1 env.exit() # Check if enough tickets left. if theater.available[movie] < num_tickets: # Moviegoer leaves after some discussion yield env.timeout(0.5) env.exit() # Buy tickets theater.available[movie] -= num_tickets if theater.available[movie] < 2: # Trigger the "sold out" event for the movie theater.sold_out[movie].succeed() theater.when_sold_out[movie] = env.now theater.available[movie] = 0 yield env.timeout(1) def customer_arrivals(env, theater): """Create new *moviegoers* until the sim time reaches 120.""" while True: yield env.timeout(random.expovariate(1 / 0.5)) movie = random.choice(theater.movies) num_tickets = random.randint(1, 6) if theater.available[movie]: env.process(moviegoer(env, movie, num_tickets, theater)) Theater = collections.namedtuple('Theater', 'counter, movies, available, ' 'sold_out, when_sold_out, ' 'num_renegers') # Setup and start the simulation print('Movie renege') random.seed(RANDOM_SEED) env = simpy.Environment() # Create movie theater counter = simpy.Resource(env, capacity=1) movies = ['Python Unchained', 'Kill Process', 'Pulp Implementation'] available = {movie: TICKETS for movie in movies} sold_out = {movie: env.event() for movie in movies} when_sold_out = {movie: None for movie in movies} num_renegers = {movie: 0 for movie in movies} theater = Theater(counter, movies, available, sold_out, when_sold_out, num_renegers) # Start process and run env.process(customer_arrivals(env, theater)) env.run(until=SIM_TIME) # Analysis/results for movie in movies: if theater.sold_out[movie]: print('Movie "%s" sold out %.1f minutes after ticket counter ' 'opening.' % (movie, theater.when_sold_out[movie])) print(' Number of people leaving queue when film sold out: %s' % theater.num_renegers[movie]) hhhhhU literal_blockqh}q(h!]U xml:spaceqUpreserveqh$]h#]UsourceXO/var/build/user_builds/simpy/checkouts/3.0.5/docs/examples/code/movie_renege.pyh"]h&]uh(K h)hh]qh2XN """ Movie renege example Covers: - Resources: Resource - Condition events - Shared events Scenario: A movie theatre has one ticket counter selling tickets for three movies (next show only). When a movie is sold out, all people waiting to buy tickets for that movie renege (leave queue). """ import collections import random import simpy RANDOM_SEED = 42 TICKETS = 50 # Number of tickets per movie SIM_TIME = 120 # Simulate until def moviegoer(env, movie, num_tickets, theater): """A moviegoer tries to by a number of tickets (*num_tickets*) for a certain *movie* in a *theater*. If the movie becomes sold out, she leaves the theater. If she gets to the counter, she tries to buy a number of tickets. If not enough tickets are left, she argues with the teller and leaves. If at most one ticket is left after the moviegoer bought her tickets, the *sold out* event for this movie is triggered causing all remaining moviegoers to leave. """ with theater.counter.request() as my_turn: # Wait until its our turn or until the movie is sold out result = yield my_turn | theater.sold_out[movie] # Check if it's our turn of if movie is sold out if my_turn not in result: theater.num_renegers[movie] += 1 env.exit() # Check if enough tickets left. if theater.available[movie] < num_tickets: # Moviegoer leaves after some discussion yield env.timeout(0.5) env.exit() # Buy tickets theater.available[movie] -= num_tickets if theater.available[movie] < 2: # Trigger the "sold out" event for the movie theater.sold_out[movie].succeed() theater.when_sold_out[movie] = env.now theater.available[movie] = 0 yield env.timeout(1) def customer_arrivals(env, theater): """Create new *moviegoers* until the sim time reaches 120.""" while True: yield env.timeout(random.expovariate(1 / 0.5)) movie = random.choice(theater.movies) num_tickets = random.randint(1, 6) if theater.available[movie]: env.process(moviegoer(env, movie, num_tickets, theater)) Theater = collections.namedtuple('Theater', 'counter, movies, available, ' 'sold_out, when_sold_out, ' 'num_renegers') # Setup and start the simulation print('Movie renege') random.seed(RANDOM_SEED) env = simpy.Environment() # Create movie theater counter = simpy.Resource(env, capacity=1) movies = ['Python Unchained', 'Kill Process', 'Pulp Implementation'] available = {movie: TICKETS for movie in movies} sold_out = {movie: env.event() for movie in movies} when_sold_out = {movie: None for movie in movies} num_renegers = {movie: 0 for movie in movies} theater = Theater(counter, movies, available, sold_out, when_sold_out, num_renegers) # Start process and run env.process(customer_arrivals(env, theater)) env.run(until=SIM_TIME) # Analysis/results for movie in movies: if theater.sold_out[movie]: print('Movie "%s" sold out %.1f minutes after ticket counter ' 'opening.' % (movie, theater.when_sold_out[movie])) print(' Number of people leaving queue when film sold out: %s' % theater.num_renegers[movie]) qمq}q(hUhhubaubh6)q}q(hXThe simulation's output:qhhhhhh:h}q(h!]h"]h#]h$]h&]uh(K"h)hh]qh2XThe simulation's output:qᅁq}q(hhhhubaubh)q}q(hXMovie renege Movie "Python Unchained" sold out 38.0 minutes after ticket counter opening. Number of people leaving queue when film sold out: 16 Movie "Kill Process" sold out 43.0 minutes after ticket counter opening. Number of people leaving queue when film sold out: 5 Movie "Pulp Implementation" sold out 28.0 minutes after ticket counter opening. Number of people leaving queue when film sold out: 5 hhhhhhh}q(h!]hhh$]h#]UsourceXP/var/build/user_builds/simpy/checkouts/3.0.5/docs/examples/code/movie_renege.outh"]h&]uh(K$h)hh]qh2XMovie renege Movie "Python Unchained" sold out 38.0 minutes after ticket counter opening. Number of people leaving queue when film sold out: 16 Movie "Kill Process" sold out 43.0 minutes after ticket counter opening. Number of people leaving queue when film sold out: 5 Movie "Pulp Implementation" sold out 28.0 minutes after ticket counter opening. Number of people leaving queue when film sold out: 5 q腁q}q(hUhhubaubeubahUU transformerqNU footnote_refsq}qUrefnamesq}qUsymbol_footnotesq]qUautofootnote_refsq]qUsymbol_footnote_refsq]qU citationsq]qh)hU current_lineqNUtransform_messagesq]qUreporterqNUid_startqKU autofootnotesq]qU citation_refsq}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlr Uhttp://tools.ietf.org/html/r U tracebackr Upep_referencesr NUstrip_commentsr NU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh/NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamr NUpep_file_url_templater!Upep-%04dr"Uexit_status_levelr#KUconfigr$NUstrict_visitorr%NUcloak_email_addressesr&Utrim_footnote_reference_spacer'Uenvr(NUdump_pseudo_xmlr)NUexpose_internalsr*NUsectsubtitle_xformr+U source_linkr,NUrfc_referencesr-NUoutput_encodingr.Uutf-8r/U source_urlr0NUinput_encodingr1U utf-8-sigr2U_disable_configr3NU id_prefixr4UU tab_widthr5KUerror_encodingr6UUTF-8r7U_sourcer8UK/var/build/user_builds/simpy/checkouts/3.0.5/docs/examples/movie_renege.rstr9Ugettext_compactr:U generatorr;NUdump_internalsr<NU smart_quotesr=U pep_base_urlr>Uhttp://www.python.org/dev/peps/r?Usyntax_highlightr@UlongrAUinput_encoding_error_handlerrBjUauto_id_prefixrCUidrDUdoctitle_xformrEUstrip_elements_with_classesrFNU _config_filesrG]rHUfile_insertion_enabledrIU raw_enabledrJKU dump_settingsrKNubUsymbol_footnote_startrLKUidsrM}rNhhsUsubstitution_namesrO}rPhh)h}rQ(h!]h$]h#]Usourcehh"]h&]uU footnotesrR]rSUrefidsrT}rUub.PK.D zҌ&&2simpy-3.0.5/.doctrees/examples/bank_renege.doctreecdocutils.nodes document q)q}q(U nametypesq}qX bank renegeqNsUsubstitution_defsq}qUparse_messagesq ]q Ucurrent_sourceq NU decorationq NUautofootnote_startq KUnameidsq}qhU bank-renegeqsUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqcdocutils.nodes reprunicode qXJ/var/build/user_builds/simpy/checkouts/3.0.5/docs/examples/bank_renege.rstqq}qbUtagnameqUsectionqU attributesq}q (Udupnamesq!]Uclassesq"]Ubackrefsq#]Uidsq$]q%haUnamesq&]q'hauUlineq(KUdocumentq)hh]q*(cdocutils.nodes title q+)q,}q-(hX Bank Renegeq.hhhhhUtitleq/h}q0(h!]h"]h#]h$]h&]uh(Kh)hh]q1cdocutils.nodes Text q2X Bank Renegeq3q4}q5(hh.hh,ubaubcdocutils.nodes paragraph q6)q7}q8(hXCovers:q9hhhhhU paragraphq:h}q;(h!]h"]h#]h$]h&]uh(Kh)hh]q}q?(hh9hh7ubaubcdocutils.nodes bullet_list q@)qA}qB(hUhhhhhU bullet_listqCh}qD(UbulletqEX-h$]h#]h!]h"]h&]uh(Kh)hh]qF(cdocutils.nodes list_item qG)qH}qI(hXResources: ResourceqJhhAhhhU list_itemqKh}qL(h!]h"]h#]h$]h&]uh(Nh)hh]qMh6)qN}qO(hhJhhHhhhh:h}qP(h!]h"]h#]h$]h&]uh(Kh]qQh2XResources: ResourceqRqS}qT(hhJhhNubaubaubhG)qU}qV(hXCondition events hhAhhhhKh}qW(h!]h"]h#]h$]h&]uh(Nh)hh]qXh6)qY}qZ(hXCondition eventsq[hhUhhhh:h}q\(h!]h"]h#]h$]h&]uh(Kh]q]h2XCondition eventsq^q_}q`(hh[hhYubaubaubeubh6)qa}qb(hXA counter with a random service time and customers who renege. Based on the program bank08.py from TheBank tutorial of SimPy 2. (KGM)qchhhhhh:h}qd(h!]h"]h#]h$]h&]uh(K h)hh]qeh2XA counter with a random service time and customers who renege. Based on the program bank08.py from TheBank tutorial of SimPy 2. (KGM)qfqg}qh(hhchhaubaubh6)qi}qj(hXThis example models a bank counter and customers arriving t random times. Each customer has a certain patience. It waits to get to the counter until she’s at the end of her tether. If she gets to the counter, she uses it for a while before releasing it.qkhhhhhh:h}ql(h!]h"]h#]h$]h&]uh(K h)hh]qmh2XThis example models a bank counter and customers arriving t random times. Each customer has a certain patience. It waits to get to the counter until she’s at the end of her tether. If she gets to the counter, she uses it for a while before releasing it.qnqo}qp(hhkhhiubaubh6)qq}qr(hXINew customers are created by the ``source`` process every few time steps.qshhhhhh:h}qt(h!]h"]h#]h$]h&]uh(Kh)hh]qu(h2X!New customers are created by the qvqw}qx(hX!New customers are created by the hhqubcdocutils.nodes literal qy)qz}q{(hX ``source``h}q|(h!]h"]h#]h$]h&]uhhqh]q}h2Xsourceq~q}q(hUhhzubahUliteralqubh2X process every few time steps.qq}q(hX process every few time steps.hhqubeubcdocutils.nodes literal_block q)q}q(hX:""" Bank renege example Covers: - Resources: Resource - Condition events Scenario: A counter with a random service time and customers who renege. Based on the program bank08.py from TheBank tutorial of SimPy 2. (KGM) """ import random import simpy RANDOM_SEED = 42 NEW_CUSTOMERS = 5 # Total number of customers INTERVAL_CUSTOMERS = 10.0 # Generate new customers roughly every x seconds MIN_PATIENCE = 1 # Min. customer patience MAX_PATIENCE = 3 # Max. customer patience def source(env, number, interval, counter): """Source generates customers randomly""" for i in range(number): c = customer(env, 'Customer%02d' % i, counter, time_in_bank=12.0) env.process(c) t = random.expovariate(1.0 / interval) yield env.timeout(t) def customer(env, name, counter, time_in_bank): """Customer arrives, is served and leaves.""" arrive = env.now print('%7.4f %s: Here I am' % (arrive, name)) with counter.request() as req: patience = random.uniform(MIN_PATIENCE, MAX_PATIENCE) # Wait for the counter or abort at the end of our tether results = yield req | env.timeout(patience) wait = env.now - arrive if req in results: # We got to the counter print('%7.4f %s: Waited %6.3f' % (env.now, name, wait)) tib = random.expovariate(1.0 / time_in_bank) yield env.timeout(tib) print('%7.4f %s: Finished' % (env.now, name)) else: # We reneged print('%7.4f %s: RENEGED after %6.3f' % (env.now, name, wait)) # Setup and start the simulation print('Bank renege') random.seed(RANDOM_SEED) env = simpy.Environment() # Start processes and run counter = simpy.Resource(env, capacity=1) env.process(source(env, NEW_CUSTOMERS, INTERVAL_CUSTOMERS, counter)) env.run() hhhhhU literal_blockqh}q(h!]U xml:spaceqUpreserveqh$]h#]UsourceXN/var/build/user_builds/simpy/checkouts/3.0.5/docs/examples/code/bank_renege.pyh"]h&]uh(Kh)hh]qh2X:""" Bank renege example Covers: - Resources: Resource - Condition events Scenario: A counter with a random service time and customers who renege. Based on the program bank08.py from TheBank tutorial of SimPy 2. (KGM) """ import random import simpy RANDOM_SEED = 42 NEW_CUSTOMERS = 5 # Total number of customers INTERVAL_CUSTOMERS = 10.0 # Generate new customers roughly every x seconds MIN_PATIENCE = 1 # Min. customer patience MAX_PATIENCE = 3 # Max. customer patience def source(env, number, interval, counter): """Source generates customers randomly""" for i in range(number): c = customer(env, 'Customer%02d' % i, counter, time_in_bank=12.0) env.process(c) t = random.expovariate(1.0 / interval) yield env.timeout(t) def customer(env, name, counter, time_in_bank): """Customer arrives, is served and leaves.""" arrive = env.now print('%7.4f %s: Here I am' % (arrive, name)) with counter.request() as req: patience = random.uniform(MIN_PATIENCE, MAX_PATIENCE) # Wait for the counter or abort at the end of our tether results = yield req | env.timeout(patience) wait = env.now - arrive if req in results: # We got to the counter print('%7.4f %s: Waited %6.3f' % (env.now, name, wait)) tib = random.expovariate(1.0 / time_in_bank) yield env.timeout(tib) print('%7.4f %s: Finished' % (env.now, name)) else: # We reneged print('%7.4f %s: RENEGED after %6.3f' % (env.now, name, wait)) # Setup and start the simulation print('Bank renege') random.seed(RANDOM_SEED) env = simpy.Environment() # Start processes and run counter = simpy.Resource(env, capacity=1) env.process(source(env, NEW_CUSTOMERS, INTERVAL_CUSTOMERS, counter)) env.run() qq}q(hUhhubaubh6)q}q(hXThe simulation's output:qhhhhhh:h}q(h!]h"]h#]h$]h&]uh(Kh)hh]qh2XThe simulation's output:qq}q(hhhhubaubh)q}q(hXBank renege 0.0000 Customer00: Here I am 0.0000 Customer00: Waited 0.000 3.8595 Customer00: Finished 10.2006 Customer01: Here I am 10.2006 Customer01: Waited 0.000 12.7265 Customer02: Here I am 13.9003 Customer02: RENEGED after 1.174 23.7507 Customer01: Finished 34.9993 Customer03: Here I am 34.9993 Customer03: Waited 0.000 37.9599 Customer03: Finished 40.4798 Customer04: Here I am 40.4798 Customer04: Waited 0.000 43.1401 Customer04: Finished hhhhhhh}q(h!]hhh$]h#]UsourceXO/var/build/user_builds/simpy/checkouts/3.0.5/docs/examples/code/bank_renege.outh"]h&]uh(Kh)hh]qh2XBank renege 0.0000 Customer00: Here I am 0.0000 Customer00: Waited 0.000 3.8595 Customer00: Finished 10.2006 Customer01: Here I am 10.2006 Customer01: Waited 0.000 12.7265 Customer02: Here I am 13.9003 Customer02: RENEGED after 1.174 23.7507 Customer01: Finished 34.9993 Customer03: Here I am 34.9993 Customer03: Waited 0.000 37.9599 Customer03: Finished 40.4798 Customer04: Here I am 40.4798 Customer04: Waited 0.000 43.1401 Customer04: Finished qq}q(hUhhubaubeubahUU transformerqNU footnote_refsq}qUrefnamesq}qUsymbol_footnotesq]qUautofootnote_refsq]qUsymbol_footnote_refsq]qU citationsq]qh)hU current_lineqNUtransform_messagesq]qUreporterqNUid_startqKU autofootnotesq]qU citation_refsq}qUindirect_targetsq]qUsettingsq(cdocutils.frontend Values qoq}q(Ufootnote_backlinksqKUrecord_dependenciesqNU rfc_base_urlqUhttp://tools.ietf.org/html/qU tracebackqUpep_referencesqNUstrip_commentsqNU toc_backlinksqUentryqU language_codeqUenqU datestampqNU report_levelqKU _destinationqNU halt_levelqKU strip_classesqNh/NUerror_encoding_error_handlerqUbackslashreplaceqUdebugqNUembed_stylesheetqΉUoutput_encoding_error_handlerqUstrictqU sectnum_xformqKUdump_transformsqNU docinfo_xformqKUwarning_streamqNUpep_file_url_templateqUpep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqڈUtrim_footnote_reference_spaceqۉUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformq߉U source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUJ/var/build/user_builds/simpy/checkouts/3.0.5/docs/examples/bank_renege.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]Ufile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsr}rhhsUsubstitution_namesr}rhh)h}r(h!]h$]h#]Usourcehh"]h&]uU footnotesr]rUrefidsr}rub.PK.DYw\?\?9simpy-3.0.5/.doctrees/examples/gas_station_refuel.doctreecdocutils.nodes document q)q}q(U nametypesq}qXgas station refuelingqNsUsubstitution_defsq}qUparse_messagesq ]q Ucurrent_sourceq NU decorationq NUautofootnote_startq KUnameidsq}qhUgas-station-refuelingqsUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqcdocutils.nodes reprunicode qXQ/var/build/user_builds/simpy/checkouts/3.0.5/docs/examples/gas_station_refuel.rstqq}qbUtagnameqUsectionqU attributesq}q (Udupnamesq!]Uclassesq"]Ubackrefsq#]Uidsq$]q%haUnamesq&]q'hauUlineq(KUdocumentq)hh]q*(cdocutils.nodes title q+)q,}q-(hXGas Station Refuelingq.hhhhhUtitleq/h}q0(h!]h"]h#]h$]h&]uh(Kh)hh]q1cdocutils.nodes Text q2XGas Station Refuelingq3q4}q5(hh.hh,ubaubcdocutils.nodes paragraph q6)q7}q8(hXCovers:q9hhhhhU paragraphq:h}q;(h!]h"]h#]h$]h&]uh(Kh)hh]q}q?(hh9hh7ubaubcdocutils.nodes bullet_list q@)qA}qB(hUhhhhhU bullet_listqCh}qD(UbulletqEX-h$]h#]h!]h"]h&]uh(Kh)hh]qF(cdocutils.nodes list_item qG)qH}qI(hXResources: ResourceqJhhAhhhU list_itemqKh}qL(h!]h"]h#]h$]h&]uh(Nh)hh]qMh6)qN}qO(hhJhhHhhhh:h}qP(h!]h"]h#]h$]h&]uh(Kh]qQh2XResources: ResourceqRqS}qT(hhJhhNubaubaubhG)qU}qV(hXResources: ContainerqWhhAhhhhKh}qX(h!]h"]h#]h$]h&]uh(Nh)hh]qYh6)qZ}q[(hhWhhUhhhh:h}q\(h!]h"]h#]h$]h&]uh(Kh]q]h2XResources: Containerq^q_}q`(hhWhhZubaubaubhG)qa}qb(hXWaiting for other processes hhAhhhhKh}qc(h!]h"]h#]h$]h&]uh(Nh)hh]qdh6)qe}qf(hXWaiting for other processesqghhahhhh:h}qh(h!]h"]h#]h$]h&]uh(K h]qih2XWaiting for other processesqjqk}ql(hhghheubaubaubeubh6)qm}qn(hXUThis examples models a gas station and cars that arrive at the station for refueling.qohhhhhh:h}qp(h!]h"]h#]h$]h&]uh(K h)hh]qqh2XUThis examples models a gas station and cars that arrive at the station for refueling.qrqs}qt(hhohhmubaubh6)qu}qv(hXThe gas station has a limited number of fuel pumps and a fuel tank that is shared between the fuel pumps. The gas station is thus modeled as :class:`~simpy.resources.resource.Resource`. The shared fuel tank is modeled with a :class:`~simpy.resources.container.Container`.hhhhhh:h}qw(h!]h"]h#]h$]h&]uh(Kh)hh]qx(h2XThe gas station has a limited number of fuel pumps and a fuel tank that is shared between the fuel pumps. The gas station is thus modeled as qyqz}q{(hXThe gas station has a limited number of fuel pumps and a fuel tank that is shared between the fuel pumps. The gas station is thus modeled as hhuubcsphinx.addnodes pending_xref q|)q}}q~(hX+:class:`~simpy.resources.resource.Resource`qhhuhhhU pending_xrefqh}q(UreftypeXclassUrefwarnqU reftargetqX!simpy.resources.resource.ResourceU refdomainXpyqh$]h#]U refexplicith!]h"]h&]UrefdocqXexamples/gas_station_refuelqUpy:classqNU py:moduleqNuh(Kh]qcdocutils.nodes literal q)q}q(hhh}q(h!]h"]q(UxrefqhXpy-classqeh#]h$]h&]uhh}h]qh2XResourceqq}q(hUhhubahUliteralqubaubh2X). The shared fuel tank is modeled with a qq}q(hX). The shared fuel tank is modeled with a hhuubh|)q}q(hX-:class:`~simpy.resources.container.Container`qhhuhhhhh}q(UreftypeXclasshhX#simpy.resources.container.ContainerU refdomainXpyqh$]h#]U refexplicith!]h"]h&]hhhNhNuh(Kh]qh)q}q(hhh}q(h!]h"]q(hhXpy-classqeh#]h$]h&]uhhh]qh2X Containerqq}q(hUhhubahhubaubh2X.q}q(hX.hhuubeubh6)q}q(hXVehicles arriving at the gas station first request a fuel pump from the station. Once they acquire one, they try to take the desired amount of fuel from the fuel pump. They leave when they are done.qhhhhhh:h}q(h!]h"]h#]h$]h&]uh(Kh)hh]qh2XVehicles arriving at the gas station first request a fuel pump from the station. Once they acquire one, they try to take the desired amount of fuel from the fuel pump. They leave when they are done.qq}q(hhhhubaubh6)q}q(hXThe gas stations fuel level is reqularly monitored by *gas station control*. When the level drops below a certain threshold, a *tank truck* is called to refuel the gas station itself.hhhhhh:h}q(h!]h"]h#]h$]h&]uh(Kh)hh]q(h2X6The gas stations fuel level is reqularly monitored by qq}q(hX6The gas stations fuel level is reqularly monitored by hhubcdocutils.nodes emphasis q)q}q(hX*gas station control*h}q(h!]h"]h#]h$]h&]uhhh]qh2Xgas station controlqq}q(hUhhubahUemphasisqubh2X4. When the level drops below a certain threshold, a q…q}q(hX4. When the level drops below a certain threshold, a hhubh)q}q(hX *tank truck*h}q(h!]h"]h#]h$]h&]uhhh]qh2X tank truckqɅq}q(hUhhubahhubh2X, is called to refuel the gas station itself.q̅q}q(hX, is called to refuel the gas station itself.hhubeubcdocutils.nodes literal_block q)q}q(hX """ Gas Station Refueling example Covers: - Resources: Resource - Resources: Container - Waiting for other processes Scenario: A gas station has a limited number of gas pumps that share a common fuel reservoir. Cars randomly arrive at the gas station, request one of the fuel pumps and start refueling from that reservoir. A gas station control process observes the gas station's fuel level and calls a tank truck for refueling if the station's level drops below a threshold. """ import itertools import random import simpy RANDOM_SEED = 42 GAS_STATION_SIZE = 200 # liters THRESHOLD = 10 # Threshold for calling the tank truck (in %) FUEL_TANK_SIZE = 50 # liters FUEL_TANK_LEVEL = [5, 25] # Min/max levels of fuel tanks (in liters) REFUELING_SPEED = 2 # liters / second TANK_TRUCK_TIME = 300 # Seconds it takes the tank truck to arrive T_INTER = [30, 300] # Create a car every [min, max] seconds SIM_TIME = 1000 # Simulation time in seconds def car(name, env, gas_station, fuel_pump): """A car arrives at the gas station for refueling. It requests one of the gas station's fuel pumps and tries to get the desired amount of gas from it. If the stations reservoir is depleted, the car has to wait for the tank truck to arrive. """ fuel_tank_level = random.randint(*FUEL_TANK_LEVEL) print('%s arriving at gas station at %.1f' % (name, env.now)) with gas_station.request() as req: start = env.now # Request one of the gas pumps yield req # Get the required amount of fuel liters_required = FUEL_TANK_SIZE - fuel_tank_level yield fuel_pump.get(liters_required) # The "actual" refueling process takes some time yield env.timeout(liters_required / REFUELING_SPEED) print('%s finished refueling in %.1f seconds.' % (name, env.now - start)) def gas_station_control(env, fuel_pump): """Periodically check the level of the *fuel_pump* and call the tank truck if the level falls below a threshold.""" while True: if fuel_pump.level / fuel_pump.capacity * 100 < THRESHOLD: # We need to call the tank truck now! print('Calling tank truck at %d' % env.now) # Wait for the tank truck to arrive and refuel the station yield env.process(tank_truck(env, fuel_pump)) yield env.timeout(10) # Check every 10 seconds def tank_truck(env, fuel_pump): """Arrives at the gas station after a certain delay and refuels it.""" yield env.timeout(TANK_TRUCK_TIME) print('Tank truck arriving at time %d' % env.now) ammount = fuel_pump.capacity - fuel_pump.level print('Tank truck refuelling %.1f liters.' % ammount) yield fuel_pump.put(ammount) def car_generator(env, gas_station, fuel_pump): """Generate new cars that arrive at the gas station.""" for i in itertools.count(): yield env.timeout(random.randint(*T_INTER)) env.process(car('Car %d' % i, env, gas_station, fuel_pump)) # Setup and start the simulation print('Gas Station refuelling') random.seed(RANDOM_SEED) # Create environment and start processes env = simpy.Environment() gas_station = simpy.Resource(env, 2) fuel_pump = simpy.Container(env, GAS_STATION_SIZE, init=GAS_STATION_SIZE) env.process(gas_station_control(env, fuel_pump)) env.process(car_generator(env, gas_station, fuel_pump)) # Execute! env.run(until=SIM_TIME) hhhhhU literal_blockqh}q(h!]U xml:spaceqUpreserveqh$]h#]UsourceXU/var/build/user_builds/simpy/checkouts/3.0.5/docs/examples/code/gas_station_refuel.pyh"]h&]uh(Kh)hh]qh2X """ Gas Station Refueling example Covers: - Resources: Resource - Resources: Container - Waiting for other processes Scenario: A gas station has a limited number of gas pumps that share a common fuel reservoir. Cars randomly arrive at the gas station, request one of the fuel pumps and start refueling from that reservoir. A gas station control process observes the gas station's fuel level and calls a tank truck for refueling if the station's level drops below a threshold. """ import itertools import random import simpy RANDOM_SEED = 42 GAS_STATION_SIZE = 200 # liters THRESHOLD = 10 # Threshold for calling the tank truck (in %) FUEL_TANK_SIZE = 50 # liters FUEL_TANK_LEVEL = [5, 25] # Min/max levels of fuel tanks (in liters) REFUELING_SPEED = 2 # liters / second TANK_TRUCK_TIME = 300 # Seconds it takes the tank truck to arrive T_INTER = [30, 300] # Create a car every [min, max] seconds SIM_TIME = 1000 # Simulation time in seconds def car(name, env, gas_station, fuel_pump): """A car arrives at the gas station for refueling. It requests one of the gas station's fuel pumps and tries to get the desired amount of gas from it. If the stations reservoir is depleted, the car has to wait for the tank truck to arrive. """ fuel_tank_level = random.randint(*FUEL_TANK_LEVEL) print('%s arriving at gas station at %.1f' % (name, env.now)) with gas_station.request() as req: start = env.now # Request one of the gas pumps yield req # Get the required amount of fuel liters_required = FUEL_TANK_SIZE - fuel_tank_level yield fuel_pump.get(liters_required) # The "actual" refueling process takes some time yield env.timeout(liters_required / REFUELING_SPEED) print('%s finished refueling in %.1f seconds.' % (name, env.now - start)) def gas_station_control(env, fuel_pump): """Periodically check the level of the *fuel_pump* and call the tank truck if the level falls below a threshold.""" while True: if fuel_pump.level / fuel_pump.capacity * 100 < THRESHOLD: # We need to call the tank truck now! print('Calling tank truck at %d' % env.now) # Wait for the tank truck to arrive and refuel the station yield env.process(tank_truck(env, fuel_pump)) yield env.timeout(10) # Check every 10 seconds def tank_truck(env, fuel_pump): """Arrives at the gas station after a certain delay and refuels it.""" yield env.timeout(TANK_TRUCK_TIME) print('Tank truck arriving at time %d' % env.now) ammount = fuel_pump.capacity - fuel_pump.level print('Tank truck refuelling %.1f liters.' % ammount) yield fuel_pump.put(ammount) def car_generator(env, gas_station, fuel_pump): """Generate new cars that arrive at the gas station.""" for i in itertools.count(): yield env.timeout(random.randint(*T_INTER)) env.process(car('Car %d' % i, env, gas_station, fuel_pump)) # Setup and start the simulation print('Gas Station refuelling') random.seed(RANDOM_SEED) # Create environment and start processes env = simpy.Environment() gas_station = simpy.Resource(env, 2) fuel_pump = simpy.Container(env, GAS_STATION_SIZE, init=GAS_STATION_SIZE) env.process(gas_station_control(env, fuel_pump)) env.process(car_generator(env, gas_station, fuel_pump)) # Execute! env.run(until=SIM_TIME) qׅq}q(hUhhubaubh6)q}q(hXThe simulation's output:qhhhhhh:h}q(h!]h"]h#]h$]h&]uh(Kh)hh]qh2XThe simulation's output:q߅q}q(hhhhubaubh)q}q(hXGas Station refuelling Car 0 arriving at gas station at 87.0 Car 0 finished refueling in 18.5 seconds. Car 1 arriving at gas station at 129.0 Car 1 finished refueling in 19.0 seconds. Car 2 arriving at gas station at 284.0 Car 2 finished refueling in 21.0 seconds. Car 3 arriving at gas station at 385.0 Car 3 finished refueling in 13.5 seconds. Car 4 arriving at gas station at 459.0 Calling tank truck at 460 Car 4 finished refueling in 22.0 seconds. Car 5 arriving at gas station at 705.0 Car 6 arriving at gas station at 750.0 Tank truck arriving at time 760 Tank truck refuelling 188.0 liters. Car 6 finished refueling in 29.0 seconds. Car 5 finished refueling in 76.5 seconds. Car 7 arriving at gas station at 891.0 Car 7 finished refueling in 13.0 seconds. hhhhhhh}q(h!]hhh$]h#]UsourceXV/var/build/user_builds/simpy/checkouts/3.0.5/docs/examples/code/gas_station_refuel.outh"]h&]uh(K!h)hh]qh2XGas Station refuelling Car 0 arriving at gas station at 87.0 Car 0 finished refueling in 18.5 seconds. Car 1 arriving at gas station at 129.0 Car 1 finished refueling in 19.0 seconds. Car 2 arriving at gas station at 284.0 Car 2 finished refueling in 21.0 seconds. Car 3 arriving at gas station at 385.0 Car 3 finished refueling in 13.5 seconds. Car 4 arriving at gas station at 459.0 Calling tank truck at 460 Car 4 finished refueling in 22.0 seconds. Car 5 arriving at gas station at 705.0 Car 6 arriving at gas station at 750.0 Tank truck arriving at time 760 Tank truck refuelling 188.0 liters. Car 6 finished refueling in 29.0 seconds. Car 5 finished refueling in 76.5 seconds. Car 7 arriving at gas station at 891.0 Car 7 finished refueling in 13.0 seconds. q慁q}q(hUhhubaubeubahUU transformerqNU footnote_refsq}qUrefnamesq}qUsymbol_footnotesq]qUautofootnote_refsq]qUsymbol_footnote_refsq]qU citationsq]qh)hU current_lineqNUtransform_messagesq]qUreporterqNUid_startqKU autofootnotesq]qU citation_refsq}qUindirect_targetsq]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackr Upep_referencesr NUstrip_commentsr NU toc_backlinksr Uentryr U language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh/NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04dr Uexit_status_levelr!KUconfigr"NUstrict_visitorr#NUcloak_email_addressesr$Utrim_footnote_reference_spacer%Uenvr&NUdump_pseudo_xmlr'NUexpose_internalsr(NUsectsubtitle_xformr)U source_linkr*NUrfc_referencesr+NUoutput_encodingr,Uutf-8r-U source_urlr.NUinput_encodingr/U utf-8-sigr0U_disable_configr1NU id_prefixr2UU tab_widthr3KUerror_encodingr4UUTF-8r5U_sourcer6UQ/var/build/user_builds/simpy/checkouts/3.0.5/docs/examples/gas_station_refuel.rstr7Ugettext_compactr8U generatorr9NUdump_internalsr:NU smart_quotesr;U pep_base_urlr<Uhttp://www.python.org/dev/peps/r=Usyntax_highlightr>Ulongr?Uinput_encoding_error_handlerr@jUauto_id_prefixrAUidrBUdoctitle_xformrCUstrip_elements_with_classesrDNU _config_filesrE]Ufile_insertion_enabledrFU raw_enabledrGKU dump_settingsrHNubUsymbol_footnote_startrIKUidsrJ}rKhhsUsubstitution_namesrL}rMhh)h}rN(h!]h$]h#]Usourcehh"]h&]uU footnotesrO]rPUrefidsrQ}rRub.PK.Db)).simpy-3.0.5/.doctrees/examples/latency.doctreecdocutils.nodes document q)q}q(U nametypesq}qX event latencyqNsUsubstitution_defsq}qUparse_messagesq ]q Ucurrent_sourceq NU decorationq NUautofootnote_startq KUnameidsq}qhU event-latencyqsUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqcdocutils.nodes reprunicode qXF/var/build/user_builds/simpy/checkouts/3.0.5/docs/examples/latency.rstqq}qbUtagnameqUsectionqU attributesq}q (Udupnamesq!]Uclassesq"]Ubackrefsq#]Uidsq$]q%haUnamesq&]q'hauUlineq(KUdocumentq)hh]q*(cdocutils.nodes title q+)q,}q-(hX Event Latencyq.hhhhhUtitleq/h}q0(h!]h"]h#]h$]h&]uh(Kh)hh]q1cdocutils.nodes Text q2X Event Latencyq3q4}q5(hh.hh,ubaubcdocutils.nodes paragraph q6)q7}q8(hXCovers:q9hhhhhU paragraphq:h}q;(h!]h"]h#]h$]h&]uh(Kh)hh]q}q?(hh9hh7ubaubcdocutils.nodes bullet_list q@)qA}qB(hUhhhhhU bullet_listqCh}qD(UbulletqEX-h$]h#]h!]h"]h&]uh(Kh)hh]qFcdocutils.nodes list_item qG)qH}qI(hXResources: Store hhAhhhU list_itemqJh}qK(h!]h"]h#]h$]h&]uh(Nh)hh]qLh6)qM}qN(hXResources: StoreqOhhHhhhh:h}qP(h!]h"]h#]h$]h&]uh(Kh]qQh2XResources: StoreqRqS}qT(hhOhhMubaubaubaubh6)qU}qV(hXlThis example shows how to separate the time delay of events between processes from the processes themselves.qWhhhhhh:h}qX(h!]h"]h#]h$]h&]uh(K h)hh]qYh2XlThis example shows how to separate the time delay of events between processes from the processes themselves.qZq[}q\(hhWhhUubaubcdocutils.nodes definition_list q])q^}q_(hUhhhhhUdefinition_listq`h}qa(h!]h"]h#]h$]h&]uh(Nh)hh]qb(cdocutils.nodes definition_list_item qc)qd}qe(hXWhen Useful: When modeling physical things such as cables, RF propagation, etc. it better encapsulation to keep this propagation mechanism outside of the sending and receiving processes. Can also be used to interconnect processes sending messages hh^hhhUdefinition_list_itemqfh}qg(h!]h"]h#]h$]h&]uh(Kh]qh(cdocutils.nodes term qi)qj}qk(hX When Useful:qlhhdhhhUtermqmh}qn(h!]h"]h#]h$]h&]uh(Kh]qoh2X When Useful:qpqq}qr(hhlhhjubaubcdocutils.nodes definition qs)qt}qu(hUh}qv(h!]h"]h#]h$]h&]uhhdh]qw(h6)qx}qy(hXWhen modeling physical things such as cables, RF propagation, etc. it better encapsulation to keep this propagation mechanism outside of the sending and receiving processes.qzhhthhhh:h}q{(h!]h"]h#]h$]h&]uh(Kh]q|h2XWhen modeling physical things such as cables, RF propagation, etc. it better encapsulation to keep this propagation mechanism outside of the sending and receiving processes.q}q~}q(hhzhhxubaubh6)q}q(hX;Can also be used to interconnect processes sending messagesqhhthhhh:h}q(h!]h"]h#]h$]h&]uh(Kh]qh2X;Can also be used to interconnect processes sending messagesqq}q(hhhhubaubehU definitionqubeubhc)q}q(hXExample by: Keith Smith hh^hhhhfh}q(h!]h"]h#]h$]h&]uh(Kh)hh]q(hi)q}q(hX Example by:qhhhhhhmh}q(h!]h"]h#]h$]h&]uh(Kh]qh2X Example by:qq}q(hhhhubaubhs)q}q(hUh}q(h!]h"]h#]h$]h&]uhhh]qh6)q}q(hX Keith Smithqhhhhhh:h}q(h!]h"]h#]h$]h&]uh(Kh]qh2X Keith Smithqq}q(hhhhubaubahhubeubeubcdocutils.nodes literal_block q)q}q(hX1""" Event Latency example Covers: - Resources: Store Scenario: This example shows how to separate the time delay of events between processes from the processes themselves. When Useful: When modeling physical things such as cables, RF propagation, etc. it better encapsulation to keep this propagation mechanism outside of the sending and receiving processes. Can also be used to interconnect processes sending messages Example by: Keith Smith """ import simpy SIM_DURATION = 100 class Cable(object): """This class represents the propagation through a cable.""" def __init__(self, env, delay): self.env = env self.delay = delay self.store = simpy.Store(env) def latency(self, value): yield self.env.timeout(self.delay) self.store.put(value) def put(self, value): self.env.process(self.latency(value)) def get(self): return self.store.get() def sender(env, cable): """A process which randomly generates messages.""" while True: # wait for next transmission yield env.timeout(5) cable.put('Sender sent this at %d' % env.now) def receiver(env, cable): """A process which consumes messages.""" while True: # Get event for message pipe msg = yield cable.get() print('Received this at %d while %s' % (env.now, msg)) # Setup and start the simulation print('Event Latency') env = simpy.Environment() cable = Cable(env, 10) env.process(sender(env, cable)) env.process(receiver(env, cable)) env.run(until=SIM_DURATION) hhhhhU literal_blockqh}q(h!]U xml:spaceqUpreserveqh$]h#]UsourceXJ/var/build/user_builds/simpy/checkouts/3.0.5/docs/examples/code/latency.pyh"]h&]uh(Kh)hh]qh2X1""" Event Latency example Covers: - Resources: Store Scenario: This example shows how to separate the time delay of events between processes from the processes themselves. When Useful: When modeling physical things such as cables, RF propagation, etc. it better encapsulation to keep this propagation mechanism outside of the sending and receiving processes. Can also be used to interconnect processes sending messages Example by: Keith Smith """ import simpy SIM_DURATION = 100 class Cable(object): """This class represents the propagation through a cable.""" def __init__(self, env, delay): self.env = env self.delay = delay self.store = simpy.Store(env) def latency(self, value): yield self.env.timeout(self.delay) self.store.put(value) def put(self, value): self.env.process(self.latency(value)) def get(self): return self.store.get() def sender(env, cable): """A process which randomly generates messages.""" while True: # wait for next transmission yield env.timeout(5) cable.put('Sender sent this at %d' % env.now) def receiver(env, cable): """A process which consumes messages.""" while True: # Get event for message pipe msg = yield cable.get() print('Received this at %d while %s' % (env.now, msg)) # Setup and start the simulation print('Event Latency') env = simpy.Environment() cable = Cable(env, 10) env.process(sender(env, cable)) env.process(receiver(env, cable)) env.run(until=SIM_DURATION) qq}q(hUhhubaubh6)q}q(hXThe simulation's output:qhhhhhh:h}q(h!]h"]h#]h$]h&]uh(Kh)hh]qh2XThe simulation's output:qq}q(hhhhubaubh)q}q(hXNEvent Latency Received this at 15 while Sender sent this at 5 Received this at 20 while Sender sent this at 10 Received this at 25 while Sender sent this at 15 Received this at 30 while Sender sent this at 20 Received this at 35 while Sender sent this at 25 Received this at 40 while Sender sent this at 30 Received this at 45 while Sender sent this at 35 Received this at 50 while Sender sent this at 40 Received this at 55 while Sender sent this at 45 Received this at 60 while Sender sent this at 50 Received this at 65 while Sender sent this at 55 Received this at 70 while Sender sent this at 60 Received this at 75 while Sender sent this at 65 Received this at 80 while Sender sent this at 70 Received this at 85 while Sender sent this at 75 Received this at 90 while Sender sent this at 80 Received this at 95 while Sender sent this at 85 hhhhhhh}q(h!]hhh$]h#]UsourceXK/var/build/user_builds/simpy/checkouts/3.0.5/docs/examples/code/latency.outh"]h&]uh(Kh)hh]qh2XNEvent Latency Received this at 15 while Sender sent this at 5 Received this at 20 while Sender sent this at 10 Received this at 25 while Sender sent this at 15 Received this at 30 while Sender sent this at 20 Received this at 35 while Sender sent this at 25 Received this at 40 while Sender sent this at 30 Received this at 45 while Sender sent this at 35 Received this at 50 while Sender sent this at 40 Received this at 55 while Sender sent this at 45 Received this at 60 while Sender sent this at 50 Received this at 65 while Sender sent this at 55 Received this at 70 while Sender sent this at 60 Received this at 75 while Sender sent this at 65 Received this at 80 while Sender sent this at 70 Received this at 85 while Sender sent this at 75 Received this at 90 while Sender sent this at 80 Received this at 95 while Sender sent this at 85 qq}q(hUhhubaubeubahUU transformerqNU footnote_refsq}qUrefnamesq}qUsymbol_footnotesq]qUautofootnote_refsq]qUsymbol_footnote_refsq]qU citationsq]qh)hU current_lineqNUtransform_messagesq]qUreporterqNUid_startqKU autofootnotesq]qU citation_refsq}qUindirect_targetsq]qUsettingsq(cdocutils.frontend Values qoq}q(Ufootnote_backlinksqKUrecord_dependenciesqNU rfc_base_urlqUhttp://tools.ietf.org/html/qU tracebackqۈUpep_referencesqNUstrip_commentsqNU toc_backlinksqUentryqU language_codeqUenqU datestampqNU report_levelqKU _destinationqNU halt_levelqKU strip_classesqNh/NUerror_encoding_error_handlerqUbackslashreplaceqUdebugqNUembed_stylesheetqUoutput_encoding_error_handlerqUstrictqU sectnum_xformqKUdump_transformsqNU docinfo_xformqKUwarning_streamqNUpep_file_url_templateqUpep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerUF/var/build/user_builds/simpy/checkouts/3.0.5/docs/examples/latency.rstr Ugettext_compactr U generatorr NUdump_internalsr NU smart_quotesr U pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrhUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}rhhsUsubstitution_namesr}rhh)h}r (h!]h$]h#]Usourcehh"]h&]uU footnotesr!]r"Urefidsr#}r$ub.PK.D:H;;.simpy-3.0.5/.doctrees/examples/carwash.doctreecdocutils.nodes document q)q}q(U nametypesq}qXcarwashqNsUsubstitution_defsq}qUparse_messagesq ]q Ucurrent_sourceq NU decorationq NUautofootnote_startq KUnameidsq}qhUcarwashqsUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqcdocutils.nodes reprunicode qXF/var/build/user_builds/simpy/checkouts/3.0.5/docs/examples/carwash.rstqq}qbUtagnameqUsectionqU attributesq}q (Udupnamesq!]Uclassesq"]Ubackrefsq#]Uidsq$]q%haUnamesq&]q'hauUlineq(KUdocumentq)hh]q*(cdocutils.nodes title q+)q,}q-(hXCarwashq.hhhhhUtitleq/h}q0(h!]h"]h#]h$]h&]uh(Kh)hh]q1cdocutils.nodes Text q2XCarwashq3q4}q5(hh.hh,ubaubcdocutils.nodes paragraph q6)q7}q8(hXCovers:q9hhhhhU paragraphq:h}q;(h!]h"]h#]h$]h&]uh(Kh)hh]q}q?(hh9hh7ubaubcdocutils.nodes bullet_list q@)qA}qB(hUhhhhhU bullet_listqCh}qD(UbulletqEX-h$]h#]h!]h"]h&]uh(Kh)hh]qF(cdocutils.nodes list_item qG)qH}qI(hXWaiting for other processesqJhhAhhhU list_itemqKh}qL(h!]h"]h#]h$]h&]uh(Nh)hh]qMh6)qN}qO(hhJhhHhhhh:h}qP(h!]h"]h#]h$]h&]uh(Kh]qQh2XWaiting for other processesqRqS}qT(hhJhhNubaubaubhG)qU}qV(hXResources: Resource hhAhhhhKh}qW(h!]h"]h#]h$]h&]uh(Nh)hh]qXh6)qY}qZ(hXResources: Resourceq[hhUhhhh:h}q\(h!]h"]h#]h$]h&]uh(Kh]q]h2XResources: Resourceq^q_}q`(hh[hhYubaubaubeubh6)qa}qb(hXThe *Carwash* example is a simulation of a carwash with a limited number of machines and a number of cars that arrive at the carwash to get cleaned.hhhhhh:h}qc(h!]h"]h#]h$]h&]uh(K h)hh]qd(h2XThe qeqf}qg(hXThe hhaubcdocutils.nodes emphasis qh)qi}qj(hX *Carwash*h}qk(h!]h"]h#]h$]h&]uhhah]qlh2XCarwashqmqn}qo(hUhhiubahUemphasisqpubh2X example is a simulation of a carwash with a limited number of machines and a number of cars that arrive at the carwash to get cleaned.qqqr}qs(hX example is a simulation of a carwash with a limited number of machines and a number of cars that arrive at the carwash to get cleaned.hhaubeubh6)qt}qu(hXThe carwash uses a :class:`~simpy.resources.resource.Resource` to model the limited number of washing machines. It also defines a process for washing a car.hhhhhh:h}qv(h!]h"]h#]h$]h&]uh(Kh)hh]qw(h2XThe carwash uses a qxqy}qz(hXThe carwash uses a hhtubcsphinx.addnodes pending_xref q{)q|}q}(hX+:class:`~simpy.resources.resource.Resource`q~hhthhhU pending_xrefqh}q(UreftypeXclassUrefwarnqU reftargetqX!simpy.resources.resource.ResourceU refdomainXpyqh$]h#]U refexplicith!]h"]h&]UrefdocqXexamples/carwashqUpy:classqNU py:moduleqNuh(Kh]qcdocutils.nodes literal q)q}q(hh~h}q(h!]h"]q(UxrefqhXpy-classqeh#]h$]h&]uhh|h]qh2XResourceqq}q(hUhhubahUliteralqubaubh2X^ to model the limited number of washing machines. It also defines a process for washing a car.qq}q(hX^ to model the limited number of washing machines. It also defines a process for washing a car.hhtubeubh6)q}q(hXWhen a car arrives at the carwash, it requests a machine. Once it got one, it starts the carwash's *wash* processes and waits for it to finish. It finally releases the machine and leaves.hhhhhh:h}q(h!]h"]h#]h$]h&]uh(Kh)hh]q(h2XcWhen a car arrives at the carwash, it requests a machine. Once it got one, it starts the carwash's qq}q(hXcWhen a car arrives at the carwash, it requests a machine. Once it got one, it starts the carwash's hhubhh)q}q(hX*wash*h}q(h!]h"]h#]h$]h&]uhhh]qh2Xwashqq}q(hUhhubahhpubh2XR processes and waits for it to finish. It finally releases the machine and leaves.qq}q(hXR processes and waits for it to finish. It finally releases the machine and leaves.hhubeubh6)q}q(hXThe cars are generated by a *setup* process. After creating an intial amount of cars it creates new *car* processes after a random time interval as long as the simulation continues.hhhhhh:h}q(h!]h"]h#]h$]h&]uh(Kh)hh]q(h2XThe cars are generated by a qq}q(hXThe cars are generated by a hhubhh)q}q(hX*setup*h}q(h!]h"]h#]h$]h&]uhhh]qh2Xsetupqq}q(hUhhubahhpubh2XA process. After creating an intial amount of cars it creates new qq}q(hXA process. After creating an intial amount of cars it creates new hhubhh)q}q(hX*car*h}q(h!]h"]h#]h$]h&]uhhh]qh2Xcarqq}q(hUhhubahhpubh2XL processes after a random time interval as long as the simulation continues.qq}q(hXL processes after a random time interval as long as the simulation continues.hhubeubcdocutils.nodes literal_block q)q}q(hX8 """ Carwasch example. Covers: - Waiting for other processes - Resources: Resource Scenario: A carwash has a limited number of washing machines and defines a washing processes that takes some (random) time. Car processes arrive at the carwash at a random time. If one washing machine is available, they start the washing process and wait for it to finish. If not, they wait until they an use one. """ import random import simpy RANDOM_SEED = 42 NUM_MACHINES = 2 # Number of machines in the carwash WASHTIME = 5 # Minutes it takes to clean a car T_INTER = 7 # Create a car every ~7 minutes SIM_TIME = 20 # Simulation time in minutes class Carwash(object): """A carwash has a limited number of machines (``NUM_MACHINES``) to clean cars in parallel. Cars have to request one of the machines. When they got one, they can start the washing processes and wait for it to finish (which takes ``washtime`` minutes). """ def __init__(self, env, num_machines, washtime): self.env = env self.machine = simpy.Resource(env, num_machines) self.washtime = washtime def wash(self, car): """The washing processes. It takes a ``car`` processes and tries to clean it.""" yield self.env.timeout(WASHTIME) print("Carwashed removed %d%% of %s's dirt." % (random.randint(50, 99), car)) def car(env, name, cw): """The car process (each car has a ``name``) arrives at the carwash (``cw``) and requests a cleaning machine. It then starts the washing process, waits for it to finish and leaves to never come back ... """ print('%s arrives at the carwash at %.2f.' % (name, env.now)) with cw.machine.request() as request: yield request print('%s enters the carwash at %.2f.' % (name, env.now)) yield env.process(cw.wash(name)) print('%s leaves the carwash at %.2f.' % (name, env.now)) def setup(env, num_machines, washtime, t_inter): """Create a carwash, a number of initial cars and keep creating cars approx. every ``t_inter`` minutes.""" # Create the carwash carwash = Carwash(env, num_machines, washtime) # Create 4 initial cars for i in range(4): env.process(car(env, 'Car %d' % i, carwash)) # Create more cars while the simulation is running while True: yield env.timeout(random.randint(t_inter-2, t_inter+2)) i += 1 env.process(car(env, 'Car %d' % i, carwash)) # Setup and start the simulation print('Carwash') print('Check out http://youtu.be/fXXmeP9TvBg while simulating ... ;-)') random.seed(RANDOM_SEED) # This helps reproducing the results # Create an environment and start the setup process env = simpy.Environment() env.process(setup(env, NUM_MACHINES, WASHTIME, T_INTER)) # Execute! env.run(until=SIM_TIME) hhhhhU literal_blockqh}q(h!]U xml:spaceqUpreserveqh$]h#]UsourceXJ/var/build/user_builds/simpy/checkouts/3.0.5/docs/examples/code/carwash.pyh"]h&]uh(Kh)hh]qh2X8 """ Carwasch example. Covers: - Waiting for other processes - Resources: Resource Scenario: A carwash has a limited number of washing machines and defines a washing processes that takes some (random) time. Car processes arrive at the carwash at a random time. If one washing machine is available, they start the washing process and wait for it to finish. If not, they wait until they an use one. """ import random import simpy RANDOM_SEED = 42 NUM_MACHINES = 2 # Number of machines in the carwash WASHTIME = 5 # Minutes it takes to clean a car T_INTER = 7 # Create a car every ~7 minutes SIM_TIME = 20 # Simulation time in minutes class Carwash(object): """A carwash has a limited number of machines (``NUM_MACHINES``) to clean cars in parallel. Cars have to request one of the machines. When they got one, they can start the washing processes and wait for it to finish (which takes ``washtime`` minutes). """ def __init__(self, env, num_machines, washtime): self.env = env self.machine = simpy.Resource(env, num_machines) self.washtime = washtime def wash(self, car): """The washing processes. It takes a ``car`` processes and tries to clean it.""" yield self.env.timeout(WASHTIME) print("Carwashed removed %d%% of %s's dirt." % (random.randint(50, 99), car)) def car(env, name, cw): """The car process (each car has a ``name``) arrives at the carwash (``cw``) and requests a cleaning machine. It then starts the washing process, waits for it to finish and leaves to never come back ... """ print('%s arrives at the carwash at %.2f.' % (name, env.now)) with cw.machine.request() as request: yield request print('%s enters the carwash at %.2f.' % (name, env.now)) yield env.process(cw.wash(name)) print('%s leaves the carwash at %.2f.' % (name, env.now)) def setup(env, num_machines, washtime, t_inter): """Create a carwash, a number of initial cars and keep creating cars approx. every ``t_inter`` minutes.""" # Create the carwash carwash = Carwash(env, num_machines, washtime) # Create 4 initial cars for i in range(4): env.process(car(env, 'Car %d' % i, carwash)) # Create more cars while the simulation is running while True: yield env.timeout(random.randint(t_inter-2, t_inter+2)) i += 1 env.process(car(env, 'Car %d' % i, carwash)) # Setup and start the simulation print('Carwash') print('Check out http://youtu.be/fXXmeP9TvBg while simulating ... ;-)') random.seed(RANDOM_SEED) # This helps reproducing the results # Create an environment and start the setup process env = simpy.Environment() env.process(setup(env, NUM_MACHINES, WASHTIME, T_INTER)) # Execute! env.run(until=SIM_TIME) q̅q}q(hUhhubaubh6)q}q(hXThe simulation's output:qhhhhhh:h}q(h!]h"]h#]h$]h&]uh(Kh)hh]qh2XThe simulation's output:qԅq}q(hhhhubaubh)q}q(hXCarwash Check out http://youtu.be/fXXmeP9TvBg while simulating ... ;-) Car 0 arrives at the carwash at 0.00. Car 1 arrives at the carwash at 0.00. Car 2 arrives at the carwash at 0.00. Car 3 arrives at the carwash at 0.00. Car 0 enters the carwash at 0.00. Car 1 enters the carwash at 0.00. Car 4 arrives at the carwash at 5.00. Carwashed removed 97% of Car 0's dirt. Carwashed removed 67% of Car 1's dirt. Car 0 leaves the carwash at 5.00. Car 1 leaves the carwash at 5.00. Car 2 enters the carwash at 5.00. Car 3 enters the carwash at 5.00. Car 5 arrives at the carwash at 10.00. Carwashed removed 64% of Car 2's dirt. Carwashed removed 58% of Car 3's dirt. Car 2 leaves the carwash at 10.00. Car 3 leaves the carwash at 10.00. Car 4 enters the carwash at 10.00. Car 5 enters the carwash at 10.00. Carwashed removed 97% of Car 4's dirt. Carwashed removed 56% of Car 5's dirt. Car 4 leaves the carwash at 15.00. Car 5 leaves the carwash at 15.00. Car 6 arrives at the carwash at 16.00. Car 6 enters the carwash at 16.00. hhhhhhh}q(h!]hhh$]h#]UsourceXK/var/build/user_builds/simpy/checkouts/3.0.5/docs/examples/code/carwash.outh"]h&]uh(Kh)hh]qh2XCarwash Check out http://youtu.be/fXXmeP9TvBg while simulating ... ;-) Car 0 arrives at the carwash at 0.00. Car 1 arrives at the carwash at 0.00. Car 2 arrives at the carwash at 0.00. Car 3 arrives at the carwash at 0.00. Car 0 enters the carwash at 0.00. Car 1 enters the carwash at 0.00. Car 4 arrives at the carwash at 5.00. Carwashed removed 97% of Car 0's dirt. Carwashed removed 67% of Car 1's dirt. Car 0 leaves the carwash at 5.00. Car 1 leaves the carwash at 5.00. Car 2 enters the carwash at 5.00. Car 3 enters the carwash at 5.00. Car 5 arrives at the carwash at 10.00. Carwashed removed 64% of Car 2's dirt. Carwashed removed 58% of Car 3's dirt. Car 2 leaves the carwash at 10.00. Car 3 leaves the carwash at 10.00. Car 4 enters the carwash at 10.00. Car 5 enters the carwash at 10.00. Carwashed removed 97% of Car 4's dirt. Carwashed removed 56% of Car 5's dirt. Car 4 leaves the carwash at 15.00. Car 5 leaves the carwash at 15.00. Car 6 arrives at the carwash at 16.00. Car 6 enters the carwash at 16.00. qۅq}q(hUhhubaubeubahUU transformerqNU footnote_refsq}qUrefnamesq}qUsymbol_footnotesq]qUautofootnote_refsq]qUsymbol_footnote_refsq]qU citationsq]qh)hU current_lineqNUtransform_messagesq]qUreporterqNUid_startqKU autofootnotesq]qU citation_refsq}qUindirect_targetsq]qUsettingsq(cdocutils.frontend Values qoq}q(Ufootnote_backlinksqKUrecord_dependenciesqNU rfc_base_urlqUhttp://tools.ietf.org/html/qU tracebackqUpep_referencesqNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesr Nh/NUerror_encoding_error_handlerr Ubackslashreplacer Udebugr NUembed_stylesheetr Uoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesr NUoutput_encodingr!Uutf-8r"U source_urlr#NUinput_encodingr$U utf-8-sigr%U_disable_configr&NU id_prefixr'UU tab_widthr(KUerror_encodingr)UUTF-8r*U_sourcer+UF/var/build/user_builds/simpy/checkouts/3.0.5/docs/examples/carwash.rstr,Ugettext_compactr-U generatorr.NUdump_internalsr/NU smart_quotesr0U pep_base_urlr1Uhttp://www.python.org/dev/peps/r2Usyntax_highlightr3Ulongr4Uinput_encoding_error_handlerr5jUauto_id_prefixr6Uidr7Udoctitle_xformr8Ustrip_elements_with_classesr9NU _config_filesr:]Ufile_insertion_enabledr;U raw_enabledr<KU dump_settingsr=NubUsymbol_footnote_startr>KUidsr?}r@hhsUsubstitution_namesrA}rBhh)h}rC(h!]h$]h#]Usourcehh"]h&]uU footnotesrD]rEUrefidsrF}rGub.PK.DGj>j>,simpy-3.0.5/.doctrees/examples/index.doctreecdocutils.nodes document q)q}q(U nametypesq}q(Xresources: storeqNX bitbucketqXresources: preemptive resourceqNX monitoringq NX interruptsq NXresources: resourceq NX mainling listq Xresources: containerq NXexamplesqNX all examplesqNX shared eventsqNXwaiting for other processesqNXcondition eventsqNuUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hUresources-storeqhU bitbucketqhUresources-preemptive-resourceqh U monitoringqh U interruptsq h Uresources-resourceq!h U mainling-listq"h Uresources-containerq#hUexamplesq$hU all-examplesq%hU shared-eventsq&hUwaiting-for-other-processesq'hUcondition-eventsq(uUchildrenq)]q*cdocutils.nodes section q+)q,}q-(U rawsourceq.UUparentq/hUsourceq0cdocutils.nodes reprunicode q1XD/var/build/user_builds/simpy/checkouts/3.0.5/docs/examples/index.rstq2q3}q4bUtagnameq5Usectionq6U attributesq7}q8(Udupnamesq9]Uclassesq:]Ubackrefsq;]Uidsq<]q=h$aUnamesq>]q?hauUlineq@KUdocumentqAhh)]qB(cdocutils.nodes title qC)qD}qE(h.XExamplesqFh/h,h0h3h5UtitleqGh7}qH(h9]h:]h;]h<]h>]uh@KhAhh)]qIcdocutils.nodes Text qJXExamplesqKqL}qM(h.hFh/hDubaubcdocutils.nodes paragraph qN)qO}qP(h.XyAll theory is grey. In this section, we present various practical examples that demonstrate how to uses SimPy's features.qQh/h,h0h3h5U paragraphqRh7}qS(h9]h:]h;]h<]h>]uh@KhAhh)]qThJXyAll theory is grey. In this section, we present various practical examples that demonstrate how to uses SimPy's features.qUqV}qW(h.hQh/hOubaubhN)qX}qY(h.X?Here's a list of examples grouped by features they demonstrate.qZh/h,h0h3h5hRh7}q[(h9]h:]h;]h<]h>]uh@KhAhh)]q\hJX?Here's a list of examples grouped by features they demonstrate.q]q^}q_(h.hZh/hXubaubh+)q`}qa(h.Uh/h,h0h3h5h6h7}qb(h9]h:]h;]h<]qch(ah>]qdhauh@K hAhh)]qe(hC)qf}qg(h.XCondition eventsqhh/h`h0h3h5hGh7}qi(h9]h:]h;]h<]h>]uh@K hAhh)]qjhJXCondition eventsqkql}qm(h.hhh/hfubaubcdocutils.nodes bullet_list qn)qo}qp(h.Uh/h`h0h3h5U bullet_listqqh7}qr(UbulletqsX-h<]h;]h9]h:]h>]uh@K hAhh)]qt(cdocutils.nodes list_item qu)qv}qw(h.X:doc:`bank_renege`qxh/hoh0h3h5U list_itemqyh7}qz(h9]h:]h;]h<]h>]uh@NhAhh)]q{hN)q|}q}(h.hxh/hvh0h3h5hRh7}q~(h9]h:]h;]h<]h>]uh@K h)]qcsphinx.addnodes pending_xref q)q}q(h.hxh/h|h0h3h5U pending_xrefqh7}q(UreftypeXdocqUrefwarnqU reftargetqX bank_renegeU refdomainUh<]h;]U refexplicith9]h:]h>]UrefdocqXexamples/indexquh@K h)]qcdocutils.nodes literal q)q}q(h.hxh7}q(h9]h:]q(Uxrefqheh;]h<]h>]uh/hh)]qhJX bank_renegeqq}q(h.Uh/hubah5Uliteralqubaubaubaubhu)q}q(h.X:doc:`movie_renege` h/hoh0h3h5hyh7}q(h9]h:]h;]h<]h>]uh@NhAhh)]qhN)q}q(h.X:doc:`movie_renege`qh/hh0h3h5hRh7}q(h9]h:]h;]h<]h>]uh@Kh)]qh)q}q(h.hh/hh0h3h5hh7}q(UreftypeXdocqhhX movie_renegeU refdomainUh<]h;]U refexplicith9]h:]h>]hhuh@Kh)]qh)q}q(h.hh7}q(h9]h:]q(hheh;]h<]h>]uh/hh)]qhJX movie_renegeqq}q(h.Uh/hubah5hubaubaubaubeubeubh+)q}q(h.Uh/h,h0h3h5h6h7}q(h9]h:]h;]h<]qh ah>]qh auh@KhAhh)]q(hC)q}q(h.X Interruptsqh/hh0h3h5hGh7}q(h9]h:]h;]h<]h>]uh@KhAhh)]qhJX Interruptsqq}q(h.hh/hubaubhn)q}q(h.Uh/hh0h3h5hqh7}q(hsX-h<]h;]h9]h:]h>]uh@KhAhh)]qhu)q}q(h.X:doc:`machine_shop` h/hh0h3h5hyh7}q(h9]h:]h;]h<]h>]uh@NhAhh)]qhN)q}q(h.X:doc:`machine_shop`qh/hh0h3h5hRh7}q(h9]h:]h;]h<]h>]uh@Kh)]qh)q}q(h.hh/hh0h3h5hh7}q(UreftypeXdocqhhX machine_shopU refdomainUh<]h;]U refexplicith9]h:]h>]hhuh@Kh)]qh)q}q(h.hh7}q(h9]h:]q(hheh;]h<]h>]uh/hh)]qhJX machine_shopqхq}q(h.Uh/hubah5hubaubaubaubaubeubh+)q}q(h.Uh/h,h0h3h5h6h7}q(h9]h:]h;]h<]qhah>]qh auh@KhAhh)]qhC)q}q(h.X Monitoringqh/hh0h3h5hGh7}q(h9]h:]h;]h<]h>]uh@KhAhh)]qhJX Monitoringq߅q}q(h.hh/hubaubaubh+)q}q(h.Uh/h,h0h3h5h6h7}q(h9]h:]h;]h<]qh#ah>]qh auh@KhAhh)]q(hC)q}q(h.XResources: Containerqh/hh0h3h5hGh7}q(h9]h:]h;]h<]h>]uh@KhAhh)]qhJXResources: Containerq텁q}q(h.hh/hubaubhn)q}q(h.Uh/hh0h3h5hqh7}q(hsX-h<]h;]h9]h:]h>]uh@KhAhh)]qhu)q}q(h.X:doc:`gas_station_refuel` h/hh0h3h5hyh7}q(h9]h:]h;]h<]h>]uh@NhAhh)]qhN)q}q(h.X:doc:`gas_station_refuel`qh/hh0h3h5hRh7}q(h9]h:]h;]h<]h>]uh@Kh)]qh)q}q(h.hh/hh0h3h5hh7}q(UreftypeXdocrhhXgas_station_refuelU refdomainUh<]h;]U refexplicith9]h:]h>]hhuh@Kh)]rh)r}r(h.hh7}r(h9]h:]r(hjeh;]h<]h>]uh/hh)]rhJXgas_station_refuelrr}r (h.Uh/jubah5hubaubaubaubaubeubh+)r }r (h.Uh/h,h0h3h5h6h7}r (h9]h:]h;]h<]r hah>]rhauh@K"hAhh)]r(hC)r}r(h.XResources: Preemptive Resourcerh/j h0h3h5hGh7}r(h9]h:]h;]h<]h>]uh@K"hAhh)]rhJXResources: Preemptive Resourcerr}r(h.jh/jubaubhn)r}r(h.Uh/j h0h3h5hqh7}r(hsX-h<]h;]h9]h:]h>]uh@K$hAhh)]rhu)r}r(h.X:doc:`machine_shop` h/jh0h3h5hyh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]rhN)r }r!(h.X:doc:`machine_shop`r"h/jh0h3h5hRh7}r#(h9]h:]h;]h<]h>]uh@K$h)]r$h)r%}r&(h.j"h/j h0h3h5hh7}r'(UreftypeXdocr(hhX machine_shopU refdomainUh<]h;]U refexplicith9]h:]h>]hhuh@K$h)]r)h)r*}r+(h.j"h7}r,(h9]h:]r-(hj(eh;]h<]h>]uh/j%h)]r.hJX machine_shopr/r0}r1(h.Uh/j*ubah5hubaubaubaubaubeubh+)r2}r3(h.Uh/h,h0h3h5h6h7}r4(h9]h:]h;]h<]r5h!ah>]r6h auh@K(hAhh)]r7(hC)r8}r9(h.XResources: Resourcer:h/j2h0h3h5hGh7}r;(h9]h:]h;]h<]h>]uh@K(hAhh)]r<hJXResources: Resourcer=r>}r?(h.j:h/j8ubaubhn)r@}rA(h.Uh/j2h0h3h5hqh7}rB(hsX-h<]h;]h9]h:]h>]uh@K*hAhh)]rC(hu)rD}rE(h.X:doc:`bank_renege`rFh/j@h0h3h5hyh7}rG(h9]h:]h;]h<]h>]uh@NhAhh)]rHhN)rI}rJ(h.jFh/jDh0h3h5hRh7}rK(h9]h:]h;]h<]h>]uh@K*h)]rLh)rM}rN(h.jFh/jIh0h3h5hh7}rO(UreftypeXdocrPhhX bank_renegeU refdomainUh<]h;]U refexplicith9]h:]h>]hhuh@K*h)]rQh)rR}rS(h.jFh7}rT(h9]h:]rU(hjPeh;]h<]h>]uh/jMh)]rVhJX bank_renegerWrX}rY(h.Uh/jRubah5hubaubaubaubhu)rZ}r[(h.X:doc:`carwash`r\h/j@h0h3h5hyh7}r](h9]h:]h;]h<]h>]uh@NhAhh)]r^hN)r_}r`(h.j\h/jZh0h3h5hRh7}ra(h9]h:]h;]h<]h>]uh@K+h)]rbh)rc}rd(h.j\h/j_h0h3h5hh7}re(UreftypeXdocrfhhXcarwashU refdomainUh<]h;]U refexplicith9]h:]h>]hhuh@K+h)]rgh)rh}ri(h.j\h7}rj(h9]h:]rk(hjfeh;]h<]h>]uh/jch)]rlhJXcarwashrmrn}ro(h.Uh/jhubah5hubaubaubaubhu)rp}rq(h.X:doc:`gas_station_refuel`rrh/j@h0h3h5hyh7}rs(h9]h:]h;]h<]h>]uh@NhAhh)]rthN)ru}rv(h.jrh/jph0h3h5hRh7}rw(h9]h:]h;]h<]h>]uh@K,h)]rxh)ry}rz(h.jrh/juh0h3h5hh7}r{(UreftypeXdocr|hhXgas_station_refuelU refdomainUh<]h;]U refexplicith9]h:]h>]hhuh@K,h)]r}h)r~}r(h.jrh7}r(h9]h:]r(hj|eh;]h<]h>]uh/jyh)]rhJXgas_station_refuelrr}r(h.Uh/j~ubah5hubaubaubaubhu)r}r(h.X:doc:`movie_renege` h/j@h0h3h5hyh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]rhN)r}r(h.X:doc:`movie_renege`rh/jh0h3h5hRh7}r(h9]h:]h;]h<]h>]uh@K-h)]rh)r}r(h.jh/jh0h3h5hh7}r(UreftypeXdocrhhX movie_renegeU refdomainUh<]h;]U refexplicith9]h:]h>]hhuh@K-h)]rh)r}r(h.jh7}r(h9]h:]r(hjeh;]h<]h>]uh/jh)]rhJX movie_renegerr}r(h.Uh/jubah5hubaubaubaubeubeubh+)r}r(h.Uh/h,h0h3h5h6h7}r(h9]h:]h;]h<]rhah>]rhauh@K1hAhh)]r(hC)r}r(h.XResources: Storerh/jh0h3h5hGh7}r(h9]h:]h;]h<]h>]uh@K1hAhh)]rhJXResources: Storerr}r(h.jh/jubaubhn)r}r(h.Uh/jh0h3h5hqh7}r(hsX-h<]h;]h9]h:]h>]uh@K3hAhh)]r(hu)r}r(h.X:doc:`latency`rh/jh0h3h5hyh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]rhN)r}r(h.jh/jh0h3h5hRh7}r(h9]h:]h;]h<]h>]uh@K3h)]rh)r}r(h.jh/jh0h3h5hh7}r(UreftypeXdocrhhXlatencyU refdomainUh<]h;]U refexplicith9]h:]h>]hhuh@K3h)]rh)r}r(h.jh7}r(h9]h:]r(hjeh;]h<]h>]uh/jh)]rhJXlatencyrr}r(h.Uh/jubah5hubaubaubaubhu)r}r(h.X:doc:`process_communication` h/jh0h3h5hyh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]rhN)r}r(h.X:doc:`process_communication`rh/jh0h3h5hRh7}r(h9]h:]h;]h<]h>]uh@K4h)]rh)r}r(h.jh/jh0h3h5hh7}r(UreftypeXdocrhhXprocess_communicationU refdomainUh<]h;]U refexplicith9]h:]h>]hhuh@K4h)]rh)r}r(h.jh7}r(h9]h:]r(hjeh;]h<]h>]uh/jh)]rhJXprocess_communicationrr}r(h.Uh/jubah5hubaubaubaubeubeubh+)r}r(h.Uh/h,h0h3h5h6h7}r(h9]h:]h;]h<]rh&ah>]rhauh@K8hAhh)]r(hC)r}r(h.X Shared eventsrh/jh0h3h5hGh7}r(h9]h:]h;]h<]h>]uh@K8hAhh)]rhJX Shared eventsrr}r(h.jh/jubaubhn)r}r(h.Uh/jh0h3h5hqh7}r(hsX-h<]h;]h9]h:]h>]uh@K:hAhh)]rhu)r}r(h.X:doc:`movie_renege` h/jh0h3h5hyh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]rhN)r}r(h.X:doc:`movie_renege`rh/jh0h3h5hRh7}r(h9]h:]h;]h<]h>]uh@K:h)]rh)r}r(h.jh/jh0h3h5hh7}r(UreftypeXdocrhhX movie_renegeU refdomainUh<]h;]U refexplicith9]h:]h>]hhuh@K:h)]rh)r}r(h.jh7}r(h9]h:]r(hjeh;]h<]h>]uh/jh)]rhJX movie_renegerr}r(h.Uh/jubah5hubaubaubaubaubeubh+)r}r(h.Uh/h,h0h3h5h6h7}r(h9]h:]h;]h<]rh'ah>]rhauh@K>hAhh)]r(hC)r}r (h.XWaiting for other processesr h/jh0h3h5hGh7}r (h9]h:]h;]h<]h>]uh@K>hAhh)]r hJXWaiting for other processesr r}r(h.j h/jubaubhn)r}r(h.Uh/jh0h3h5hqh7}r(hsX-h<]h;]h9]h:]h>]uh@K@hAhh)]r(hu)r}r(h.X:doc:`carwash`rh/jh0h3h5hyh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]rhN)r}r(h.jh/jh0h3h5hRh7}r(h9]h:]h;]h<]h>]uh@K@h)]rh)r}r(h.jh/jh0h3h5hh7}r(UreftypeXdocr hhXcarwashU refdomainUh<]h;]U refexplicith9]h:]h>]hhuh@K@h)]r!h)r"}r#(h.jh7}r$(h9]h:]r%(hj eh;]h<]h>]uh/jh)]r&hJXcarwashr'r(}r)(h.Uh/j"ubah5hubaubaubaubhu)r*}r+(h.X:doc:`gas_station_refuel` h/jh0h3h5hyh7}r,(h9]h:]h;]h<]h>]uh@NhAhh)]r-hN)r.}r/(h.X:doc:`gas_station_refuel`r0h/j*h0h3h5hRh7}r1(h9]h:]h;]h<]h>]uh@KAh)]r2h)r3}r4(h.j0h/j.h0h3h5hh7}r5(UreftypeXdocr6hhXgas_station_refuelU refdomainUh<]h;]U refexplicith9]h:]h>]hhuh@KAh)]r7h)r8}r9(h.j0h7}r:(h9]h:]r;(hj6eh;]h<]h>]uh/j3h)]r<hJXgas_station_refuelr=r>}r?(h.Uh/j8ubah5hubaubaubaubeubeubh+)r@}rA(h.Uh/h,h0h3h5h6h7}rB(h9]h:]h;]h<]rCh%ah>]rDhauh@KEhAhh)]rE(hC)rF}rG(h.X All examplesrHh/j@h0h3h5hGh7}rI(h9]h:]h;]h<]h>]uh@KEhAhh)]rJhJX All examplesrKrL}rM(h.jHh/jFubaubcdocutils.nodes compound rN)rO}rP(h.Uh/j@h0h3h5UcompoundrQh7}rR(h9]h:]rSUtoctree-wrapperrTah;]h<]h>]uh@KPhAhh)]rUcsphinx.addnodes toctree rV)rW}rX(h.Uh/jOh0h3h5UtoctreerYh7}rZ(Unumberedr[KU includehiddenr\h/hU titlesonlyr]Uglobr^h<]h;]h9]h:]h>]Uentriesr_]r`(NXexamples/bank_renegerarbNXexamples/carwashrcrdNXexamples/machine_shoprerfNXexamples/movie_renegergrhNXexamples/gas_station_refuelrirjNXexamples/process_communicationrkrlNXexamples/latencyrmrneUhiddenroU includefilesrp]rq(jajcjejgjijkjmeUmaxdepthrrJuh@KGh)]ubaubhN)rs}rt(h.XYou have ideas for better examples? Please send them to our `mainling list `_ or make a pull request on `bitbucket `_.h/j@h0h3h5hRh7}ru(h9]h:]h;]h<]h>]uh@KQhAhh)]rv(hJX<You have ideas for better examples? Please send them to our rwrx}ry(h.X<You have ideas for better examples? Please send them to our h/jsubcdocutils.nodes reference rz)r{}r|(h.XK`mainling list `_h7}r}(UnameX mainling listUrefurir~X8https://lists.sourceforge.net/lists/listinfo/simpy-usersrh<]h;]h9]h:]h>]uh/jsh)]rhJX mainling listrr}r(h.Uh/j{ubah5U referencerubcdocutils.nodes target r)r}r(h.X; U referencedrKh/jsh5Utargetrh7}r(Urefurijh<]rh"ah;]h9]h:]h>]rh auh)]ubhJX or make a pull request on rr}r(h.X or make a pull request on h/jsubjz)r}r(h.X0`bitbucket `_h7}r(Unamehj~X!https://bitbucket.org/simpy/simpyrh<]h;]h9]h:]h>]uh/jsh)]rhJX bitbucketrr}r(h.Uh/jubah5jubj)r}r(h.X$ jKh/jsh5jh7}r(Urefurijh<]rhah;]h9]h:]h>]rhauh)]ubhJX.r}r(h.X.h/jsubeubeubeubah.UU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rhAhU current_linerNUtransform_messagesr]rUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNhGNUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerUD/var/build/user_builds/simpy/checkouts/3.0.5/docs/examples/index.rstrUgettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hjh(h`hhh!j2h&jh hh%j@hjh"jh$h,h#hhj h'juUsubstitution_namesr}rh5hAh7}r(h9]h<]h;]Usourceh3h:]h>]uU footnotesr]rUrefidsr}rub.PK.D5~RR<simpy-3.0.5/.doctrees/examples/process_communication.doctreecdocutils.nodes document q)q}q(U nametypesq}qXprocess communicationqNsUsubstitution_defsq}qUparse_messagesq ]q Ucurrent_sourceq NU decorationq NUautofootnote_startq KUnameidsq}qhUprocess-communicationqsUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqcdocutils.nodes reprunicode qXT/var/build/user_builds/simpy/checkouts/3.0.5/docs/examples/process_communication.rstqq}qbUtagnameqUsectionqU attributesq}q (Udupnamesq!]Uclassesq"]Ubackrefsq#]Uidsq$]q%haUnamesq&]q'hauUlineq(KUdocumentq)hh]q*(cdocutils.nodes title q+)q,}q-(hXProcess Communicationq.hhhhhUtitleq/h}q0(h!]h"]h#]h$]h&]uh(Kh)hh]q1cdocutils.nodes Text q2XProcess Communicationq3q4}q5(hh.hh,ubaubcdocutils.nodes paragraph q6)q7}q8(hXCovers:q9hhhhhU paragraphq:h}q;(h!]h"]h#]h$]h&]uh(Kh)hh]q}q?(hh9hh7ubaubcdocutils.nodes bullet_list q@)qA}qB(hUhhhhhU bullet_listqCh}qD(UbulletqEX-h$]h#]h!]h"]h&]uh(Kh)hh]qFcdocutils.nodes list_item qG)qH}qI(hXResources: Store hhAhhhU list_itemqJh}qK(h!]h"]h#]h$]h&]uh(Nh)hh]qLh6)qM}qN(hXResources: StoreqOhhHhhhh:h}qP(h!]h"]h#]h$]h&]uh(Kh]qQh2XResources: StoreqRqS}qT(hhOhhMubaubaubaubh6)qU}qV(hXThis example shows how to interconnect simulation model elements together using "resources.Store" for one-to-one, and many-to-one asynchronous processes. For one-to-many a simple BroadCastPipe class is constructed from Store.qWhhhhhh:h}qX(h!]h"]h#]h$]h&]uh(K h)hh]qYh2XThis example shows how to interconnect simulation model elements together using "resources.Store" for one-to-one, and many-to-one asynchronous processes. For one-to-many a simple BroadCastPipe class is constructed from Store.qZq[}q\(hhWhhUubaubcdocutils.nodes definition_list q])q^}q_(hUhhhhhUdefinition_listq`h}qa(h!]h"]h#]h$]h&]uh(Nh)hh]qb(cdocutils.nodes definition_list_item qc)qd}qe(hXWhen Useful: When a consumer process does not always wait on a generating process and these processes run asynchronously. This example shows how to create a buffer and also tell is the consumer process was late yielding to the event from a generating process. This is also useful when some information needs to be broadcast to many receiving processes Finally, using pipes can simplify how processes are interconnected to each other in a simulation model. hh^hhhUdefinition_list_itemqfh}qg(h!]h"]h#]h$]h&]uh(Kh]qh(cdocutils.nodes term qi)qj}qk(hX When Useful:qlhhdhhhUtermqmh}qn(h!]h"]h#]h$]h&]uh(Kh]qoh2X When Useful:qpqq}qr(hhlhhjubaubcdocutils.nodes definition qs)qt}qu(hUh}qv(h!]h"]h#]h$]h&]uhhdh]qw(h6)qx}qy(hXWhen a consumer process does not always wait on a generating process and these processes run asynchronously. This example shows how to create a buffer and also tell is the consumer process was late yielding to the event from a generating process.qzhhthhhh:h}q{(h!]h"]h#]h$]h&]uh(Kh]q|h2XWhen a consumer process does not always wait on a generating process and these processes run asynchronously. This example shows how to create a buffer and also tell is the consumer process was late yielding to the event from a generating process.q}q~}q(hhzhhxubaubh6)q}q(hX[This is also useful when some information needs to be broadcast to many receiving processesqhhthhhh:h}q(h!]h"]h#]h$]h&]uh(Kh]qh2X[This is also useful when some information needs to be broadcast to many receiving processesqq}q(hhhhubaubh6)q}q(hXgFinally, using pipes can simplify how processes are interconnected to each other in a simulation model.qhhthhhh:h}q(h!]h"]h#]h$]h&]uh(Kh]qh2XgFinally, using pipes can simplify how processes are interconnected to each other in a simulation model.qq}q(hhhhubaubehU definitionqubeubhc)q}q(hXExample By: Keith Smith hh^hhhhfh}q(h!]h"]h#]h$]h&]uh(Kh)hh]q(hi)q}q(hX Example By:qhhhhhhmh}q(h!]h"]h#]h$]h&]uh(Kh]qh2X Example By:qq}q(hhhhubaubhs)q}q(hUh}q(h!]h"]h#]h$]h&]uhhh]qh6)q}q(hX Keith Smithqhhhhhh:h}q(h!]h"]h#]h$]h&]uh(Kh]qh2X Keith Smithqq}q(hhhhubaubahhubeubeubcdocutils.nodes literal_block q)q}q(hX""" Process communication example Covers: - Resources: Store Scenario: This example shows how to interconnect simulation model elements together using :class:`~simpy.resources.store.Store` for one-to-one, and many-to-one asynchronous processes. For one-to-many a simple BroadCastPipe class is constructed from Store. When Useful: When a consumer process does not always wait on a generating process and these processes run asynchronously. This example shows how to create a buffer and also tell is the consumer process was late yielding to the event from a generating process. This is also useful when some information needs to be broadcast to many receiving processes Finally, using pipes can simplify how processes are interconnected to each other in a simulation model. Example By: Keith Smith """ import random import simpy RANDOM_SEED = 42 SIM_TIME = 100 class BroadcastPipe(object): """A Broadcast pipe that allows one process to send messages to many. This construct is useful when message consumers are running at different rates than message generators and provides an event buffering to the consuming processes. The parameters are used to create a new :class:`~simpy.resources.store.Store` instance each time :meth:`get_output_conn()` is called. """ def __init__(self, env, capacity=simpy.core.Infinity): self.env = env self.capacity = capacity self.pipes = [] def put(self, value): """Broadcast a *value* to all receivers.""" if not self.pipes: raise RuntimeError('There are no output pipes.') events = [store.put(value) for store in self.pipes] return self.env.all_of(events) # Condition event for all "events" def get_output_conn(self): """Get a new output connection for this broadcast pipe. The return value is a :class:`~simpy.resources.store.Store`. """ pipe = simpy.Store(self.env, capacity=self.capacity) self.pipes.append(pipe) return pipe def message_generator(name, env, out_pipe): """A process which randomly generates messages.""" while True: # wait for next transmission yield env.timeout(random.randint(6, 10)) # messages are time stamped to later check if the consumer was # late getting them. Note, using event.triggered to do this may # result in failure due to FIFO nature of simulation yields. # (i.e. if at the same env.now, message_generator puts a message # in the pipe first and then message_consumer gets from pipe, # the event.triggered will be True in the other order it will be # False msg = (env.now, '%s says hello at %d' % (name, env.now)) out_pipe.put(msg) def message_consumer(name, env, in_pipe): """A process which consumes messages.""" while True: # Get event for message pipe msg = yield in_pipe.get() if msg[0] < env.now: # if message was already put into pipe, then # message_consumer was late getting to it. Depending on what # is being modeled this, may, or may not have some # significance print('LATE Getting Message: at time %d: %s received message: %s' % (env.now, name, msg[1])) else: # message_consumer is synchronized with message_generator print('at time %d: %s received message: %s.' % (env.now, name, msg[1])) # Process does some other work, which may result in missing messages yield env.timeout(random.randint(4, 8)) # Setup and start the simulation print('Process communication') random.seed(RANDOM_SEED) env = simpy.Environment() # For one-to-one or many-to-one type pipes, use Store pipe = simpy.Store(env) env.process(message_generator('Generator A', env, pipe)) env.process(message_consumer('Consumer A', env, pipe)) print('\nOne-to-one pipe communication\n') env.run(until=SIM_TIME) # For one-to many use BroadcastPipe # (Note: could also be used for one-to-one,many-to-one or many-to-many) env = simpy.Environment() bc_pipe = BroadcastPipe(env) env.process(message_generator('Generator A', env, bc_pipe)) env.process(message_consumer('Consumer A', env, bc_pipe.get_output_conn())) env.process(message_consumer('Consumer B', env, bc_pipe.get_output_conn())) print('\nOne-to-many pipe communication\n') env.run(until=SIM_TIME) hhhhhU literal_blockqh}q(h!]U xml:spaceqUpreserveqh$]h#]UsourceXX/var/build/user_builds/simpy/checkouts/3.0.5/docs/examples/code/process_communication.pyh"]h&]uh(Kh)hh]qh2X""" Process communication example Covers: - Resources: Store Scenario: This example shows how to interconnect simulation model elements together using :class:`~simpy.resources.store.Store` for one-to-one, and many-to-one asynchronous processes. For one-to-many a simple BroadCastPipe class is constructed from Store. When Useful: When a consumer process does not always wait on a generating process and these processes run asynchronously. This example shows how to create a buffer and also tell is the consumer process was late yielding to the event from a generating process. This is also useful when some information needs to be broadcast to many receiving processes Finally, using pipes can simplify how processes are interconnected to each other in a simulation model. Example By: Keith Smith """ import random import simpy RANDOM_SEED = 42 SIM_TIME = 100 class BroadcastPipe(object): """A Broadcast pipe that allows one process to send messages to many. This construct is useful when message consumers are running at different rates than message generators and provides an event buffering to the consuming processes. The parameters are used to create a new :class:`~simpy.resources.store.Store` instance each time :meth:`get_output_conn()` is called. """ def __init__(self, env, capacity=simpy.core.Infinity): self.env = env self.capacity = capacity self.pipes = [] def put(self, value): """Broadcast a *value* to all receivers.""" if not self.pipes: raise RuntimeError('There are no output pipes.') events = [store.put(value) for store in self.pipes] return self.env.all_of(events) # Condition event for all "events" def get_output_conn(self): """Get a new output connection for this broadcast pipe. The return value is a :class:`~simpy.resources.store.Store`. """ pipe = simpy.Store(self.env, capacity=self.capacity) self.pipes.append(pipe) return pipe def message_generator(name, env, out_pipe): """A process which randomly generates messages.""" while True: # wait for next transmission yield env.timeout(random.randint(6, 10)) # messages are time stamped to later check if the consumer was # late getting them. Note, using event.triggered to do this may # result in failure due to FIFO nature of simulation yields. # (i.e. if at the same env.now, message_generator puts a message # in the pipe first and then message_consumer gets from pipe, # the event.triggered will be True in the other order it will be # False msg = (env.now, '%s says hello at %d' % (name, env.now)) out_pipe.put(msg) def message_consumer(name, env, in_pipe): """A process which consumes messages.""" while True: # Get event for message pipe msg = yield in_pipe.get() if msg[0] < env.now: # if message was already put into pipe, then # message_consumer was late getting to it. Depending on what # is being modeled this, may, or may not have some # significance print('LATE Getting Message: at time %d: %s received message: %s' % (env.now, name, msg[1])) else: # message_consumer is synchronized with message_generator print('at time %d: %s received message: %s.' % (env.now, name, msg[1])) # Process does some other work, which may result in missing messages yield env.timeout(random.randint(4, 8)) # Setup and start the simulation print('Process communication') random.seed(RANDOM_SEED) env = simpy.Environment() # For one-to-one or many-to-one type pipes, use Store pipe = simpy.Store(env) env.process(message_generator('Generator A', env, pipe)) env.process(message_consumer('Consumer A', env, pipe)) print('\nOne-to-one pipe communication\n') env.run(until=SIM_TIME) # For one-to many use BroadcastPipe # (Note: could also be used for one-to-one,many-to-one or many-to-many) env = simpy.Environment() bc_pipe = BroadcastPipe(env) env.process(message_generator('Generator A', env, bc_pipe)) env.process(message_consumer('Consumer A', env, bc_pipe.get_output_conn())) env.process(message_consumer('Consumer B', env, bc_pipe.get_output_conn())) print('\nOne-to-many pipe communication\n') env.run(until=SIM_TIME) qq}q(hUhhubaubh6)q}q(hXThe simulation's output:qhhhhhh:h}q(h!]h"]h#]h$]h&]uh(Kh)hh]qh2XThe simulation's output:qq}q(hhhhubaubh)q}q(hX Process communication One-to-one pipe communication at time 6: Consumer A received message: Generator A says hello at 6. at time 12: Consumer A received message: Generator A says hello at 12. at time 19: Consumer A received message: Generator A says hello at 19. at time 26: Consumer A received message: Generator A says hello at 26. at time 36: Consumer A received message: Generator A says hello at 36. at time 46: Consumer A received message: Generator A says hello at 46. at time 52: Consumer A received message: Generator A says hello at 52. at time 58: Consumer A received message: Generator A says hello at 58. LATE Getting Message: at time 66: Consumer A received message: Generator A says hello at 65 at time 75: Consumer A received message: Generator A says hello at 75. at time 85: Consumer A received message: Generator A says hello at 85. at time 95: Consumer A received message: Generator A says hello at 95. One-to-many pipe communication at time 10: Consumer A received message: Generator A says hello at 10. at time 10: Consumer B received message: Generator A says hello at 10. at time 18: Consumer A received message: Generator A says hello at 18. at time 18: Consumer B received message: Generator A says hello at 18. at time 27: Consumer A received message: Generator A says hello at 27. at time 27: Consumer B received message: Generator A says hello at 27. at time 34: Consumer A received message: Generator A says hello at 34. at time 34: Consumer B received message: Generator A says hello at 34. at time 40: Consumer A received message: Generator A says hello at 40. LATE Getting Message: at time 41: Consumer B received message: Generator A says hello at 40 at time 46: Consumer A received message: Generator A says hello at 46. LATE Getting Message: at time 47: Consumer B received message: Generator A says hello at 46 at time 56: Consumer A received message: Generator A says hello at 56. at time 56: Consumer B received message: Generator A says hello at 56. at time 65: Consumer A received message: Generator A says hello at 65. at time 65: Consumer B received message: Generator A says hello at 65. at time 74: Consumer A received message: Generator A says hello at 74. at time 74: Consumer B received message: Generator A says hello at 74. at time 82: Consumer A received message: Generator A says hello at 82. at time 82: Consumer B received message: Generator A says hello at 82. at time 92: Consumer A received message: Generator A says hello at 92. at time 92: Consumer B received message: Generator A says hello at 92. at time 98: Consumer B received message: Generator A says hello at 98. at time 98: Consumer A received message: Generator A says hello at 98. hhhhhhh}q(h!]hhh$]h#]UsourceXY/var/build/user_builds/simpy/checkouts/3.0.5/docs/examples/code/process_communication.outh"]h&]uh(K h)hh]qh2X Process communication One-to-one pipe communication at time 6: Consumer A received message: Generator A says hello at 6. at time 12: Consumer A received message: Generator A says hello at 12. at time 19: Consumer A received message: Generator A says hello at 19. at time 26: Consumer A received message: Generator A says hello at 26. at time 36: Consumer A received message: Generator A says hello at 36. at time 46: Consumer A received message: Generator A says hello at 46. at time 52: Consumer A received message: Generator A says hello at 52. at time 58: Consumer A received message: Generator A says hello at 58. LATE Getting Message: at time 66: Consumer A received message: Generator A says hello at 65 at time 75: Consumer A received message: Generator A says hello at 75. at time 85: Consumer A received message: Generator A says hello at 85. at time 95: Consumer A received message: Generator A says hello at 95. One-to-many pipe communication at time 10: Consumer A received message: Generator A says hello at 10. at time 10: Consumer B received message: Generator A says hello at 10. at time 18: Consumer A received message: Generator A says hello at 18. at time 18: Consumer B received message: Generator A says hello at 18. at time 27: Consumer A received message: Generator A says hello at 27. at time 27: Consumer B received message: Generator A says hello at 27. at time 34: Consumer A received message: Generator A says hello at 34. at time 34: Consumer B received message: Generator A says hello at 34. at time 40: Consumer A received message: Generator A says hello at 40. LATE Getting Message: at time 41: Consumer B received message: Generator A says hello at 40 at time 46: Consumer A received message: Generator A says hello at 46. LATE Getting Message: at time 47: Consumer B received message: Generator A says hello at 46 at time 56: Consumer A received message: Generator A says hello at 56. at time 56: Consumer B received message: Generator A says hello at 56. at time 65: Consumer A received message: Generator A says hello at 65. at time 65: Consumer B received message: Generator A says hello at 65. at time 74: Consumer A received message: Generator A says hello at 74. at time 74: Consumer B received message: Generator A says hello at 74. at time 82: Consumer A received message: Generator A says hello at 82. at time 82: Consumer B received message: Generator A says hello at 82. at time 92: Consumer A received message: Generator A says hello at 92. at time 92: Consumer B received message: Generator A says hello at 92. at time 98: Consumer B received message: Generator A says hello at 98. at time 98: Consumer A received message: Generator A says hello at 98. qq}q(hUhhubaubeubahUU transformerqNU footnote_refsq}qUrefnamesq}qUsymbol_footnotesq]qUautofootnote_refsq]qUsymbol_footnote_refsq]qU citationsq]qh)hU current_lineqNUtransform_messagesq]qUreporterqNUid_startqKU autofootnotesq]qU citation_refsq}qUindirect_targetsq]qUsettingsq(cdocutils.frontend Values qoq}q(Ufootnote_backlinksqKUrecord_dependenciesqNU rfc_base_urlqUhttp://tools.ietf.org/html/qU tracebackqUpep_referencesqNUstrip_commentsqNU toc_backlinksqUentryqU language_codeqUenqU datestampqNU report_levelqKU _destinationqNU halt_levelqKU strip_classesqNh/NUerror_encoding_error_handlerqUbackslashreplaceqUdebugqNUembed_stylesheetqUoutput_encoding_error_handlerqUstrictqU sectnum_xformqKUdump_transformsqNU docinfo_xformqKUwarning_streamqNUpep_file_url_templateqUpep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingr U utf-8-sigr U_disable_configr NU id_prefixr UU tab_widthr KUerror_encodingrUUTF-8rU_sourcerUT/var/build/user_builds/simpy/checkouts/3.0.5/docs/examples/process_communication.rstrUgettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrhUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledr U raw_enabledr!KU dump_settingsr"NubUsymbol_footnote_startr#KUidsr$}r%hhsUsubstitution_namesr&}r'hh)h}r((h!]h$]h#]Usourcehh"]h&]uU footnotesr)]r*Urefidsr+}r,ub.PKh.Di.sg.."simpy-3.0.5/_static/simpy-logo.pngPNG  IHDRl_ IDATxy,]7j_^oߗ[R.  b<€9m<0sY1!$DkEjuoߗ+XezYs"_޼ $?._z B!B[E7yj~GvzB!BȆ'.w>-UB]R[B! 8q=}k#6yB!BHCHib[lȄvQA$xqR}&blPB!B^w"-\ʣ[Xl˘p}Ri8qӜWf݃{톰g-4\wzއISG˓E;!B!d͡$OxTK c , -m?*mJ}[" SLj:R!)L)QRBPBJ )\'lDSpy5杺ژmLU90LTn޺Ҩ5\}]/^B9uO#RB!Bz z6W<I^p-b0J#êPЭ;iӔvT2[EEӱ0ńń&P RHݦkoW"aVy"*fRBY(%)W܆a7vC\VތSsKKQ L1{UݍtChېO{L!B!w 'SQoxX.36o@eH = $د[ $ IO2fLe}B#*]תȃC4pm\ubՕzfnN7kswKjԧ̧#8 B!|P;<,â\ =^/lݴ͜%ϲ߰^(&t p]*a;yyJEg=[?ن _@H!Zs<[qQN/̪%qunڹ}Zcͷ;b@#I=&B!@_{ⲧ˄MGKG3P=Y=8*|P(OR]sU0oڥ`M.$P*nxg.Ш]n.pgqƙz7Y̢;MlEhB!BH.(W q5b<1w~'J6SMKL %FuCsQ8MКC-`S|llN!BCSكo|an?^ᣏXr`P/ϖ>dVuMiWUq-I.̣U98$߻c6VWϝroxB!'*|!!?¡G]Qc%V9)ZlQ݆g OƶW]z~ZU]yw-=X-[ޞB!BD癛|{ubZZŹױE(=Z{{-̑ӳ-|v\0,1P}ܜv{cW=d\\#B!>=9C_~rJ)t.֥|5k[U^a)0թ&󍓋H PGμjV tsB!BC6@o$+(:al26o7>bpylq/3;ղFg6ǶGb*! uCl<}C}z{qu9B!܇lTx́LAHP_ hjַX3;nZ^3թ{?<8NHQwضz㊷VȻBW=xN!BYlD.ʇ~[qЍfhy@>qKa׶ٻ]|-ΧŢ8mypaM_K*%i"B!?MyX/{ ~WbQWءW)?#% /=^ ֔U co,=B{Ǝ|%\/}-[:/mrv]xt k'݇I} B.d#%`ۘ|o-~%U 6r!B!(=^+btBA!sm\=&P'y'xm[9ϸ]rme-K PFɏy:TJyHpTo\×sw.o5ċC#B!{{{#"ηn5~g+?iSB@f <.kGU7gt/a= BE=T̴wCy0`-Xjn5Py͹|ssvm2(+ ]J폔0Ю}ڦwgb|B!~~aq$F~~Ng&D0Z0-0_?kpyfb*?~O*a>DzX;7ݫSQ9y͵Ӻ8N),#viW榽*ZKvkB!Bz~dp9?ÿe9H!Tܜ1-E)3;ղ陷s44f<?=CwKzscnm> < j{p_BaӓN!BHs )V~{z8^gvv]eaW,~s @@?^xG0 1&P/ۯu{B媆wcXy{^^ҵKy<a|xi6|܌ز]ߢobyΧU64^ wH'B!z8@(kP(]mU gWany Hkſ(9w.ΓZEKp-KG\RREo4|GOB!BIG ?߬T*"Wz|y'%.ѶDzI/yP ꍗgNjvy8\c%ʃ-Y=t]Zv;P\)%Aylr>}i] { !B!}&áلG><׷W^HU \)*MI/ _Agid;n|y{ aqhz]]աglتMyncH:V@apHծz>27B!>G􈸬4Qg>>B\J (N[-S;pӰ8uBc]5_8|z n߄og {ګA7Ws iu>=0 bb _8*7fu'B!zXK2XG0YPt_+ y0_ mTic=i+YǙu4-٘ggJ\Yf |lPkԠDC?E:!B!,޿j5RD`^a}N [yg=ymڅy޾w#;d' w.L%bV20 6m 6o{ׇ s/ ܃PwB!B=f =7"ş5-Lzᅦ|8:} +|:0]5̛ԻI::Q|ft <}A΃4/txY`[~e<8Z5ϜX*G?c}=B!{zaetq1}cٳ Lqͻ&/WcuyJTf-|{sztvzڃ'tLhIwB߬?i=싉N!B=F6;b3(_ƊMyMPM}ڽmos# o.yHU΁$;M Y*cbWך^h~y >y=QJ)^׮\poF7B!JG>O?{c!ʁFȉ-20OHQŹgF(@794/K ppz8qa8#H`XPP~alfR`heHX'6oB!B=` 6Gb5ENWayLUTTys'򆻷8{$́.#[b`PΟosEp8{9~*4Ml?!Epő9B)vh8y-R8n wB!Bz"_xOIMXky^a׶<ͺξj9GJVALlҞؾp3wwjw#3# tMe¼j  LSL?ږ_=勍Wfnzwܼ0JȨVvL>4>.? 2XHzl{02!?z78C݃M^tB!B IY=phN˙{$rL{)S*V-=0,90c@"O<:5+ެDQŸUBIۯItA!Q! V}Lj/{)эwG^Zru) z .aA)Upܻh;ai(L=hgsjq u'B!dYsá0_^ߕ˨Xn"-Z)]K6r*ZMtrU΃|&&6?hes !B!H ҁ@X}_RM5(790if0kOxD]$<3ot@'̻H5{Z]G˃B!Uf=% A7umtaMmaU܅@gɵ^2-DNcم !fJ MShRt4S. k:4]B IDATI )CtMBjФ:%h^{!5tS+3B!@Cu4%&\?=@7s))}7vꢪ֪^uaVxswnyo87.yӷyZ[6È^ Prpv}dhL iA tS(!a8{ZBEBvë}y5z !BYcU@ m:(nP/"9b sriqh:%45; ӯ7^<P67;/-(Dz4ռ kN;m2&룇'GЈVQo}OS{ޭ0_~* (u1{꒚9!B!~ay8]߱KZ(`GKoy0 cG0vM/7_^.9ӳw;h|o* zHO#,w!<`"ϝr;u6yѱImnĥٺmU=c] %ꂚ9!B!~([^bm}Q/MV{= coדPvHME/8yq:|O _7H{һD-,Ѓ?s箜s;^x ؾ#a]~mVʞG|2r#R(x]7v3B!B!*%iłVn^ŒlcV9%νX\ U֋߮֫[׽;zh_GXwy@G>@:z0[H/X:{^vɽ}=)whT];+H,)to4h>d!B!*Ёw]Qߪ Fign`ۊ0O@엟k|˵gyRsS;hw+LI򢇟 _7/v># EYXzξls'ٔʼn]Sj5,RB!@zM۷FGA/X]9梹7 l_/%Þm[1 M):* ʚ3O\֟}51>߼ r]7Wu+'l`IDžkBY/ح$:W݋077aqR{7{տsݻ_O]_ȺYs̃}BU&HljH>~@s_^ZF=v4=jG 솪=9wyi IB$I*e&N|'%ͲOST%i=$B6$:*VÍ^YMaܻ0(B_qս`=fA"u͓=K]u]v@_oh ܌g|qS΅x8uK7y4-?p=W[wQ  N!nN'M[+[' o'JeZFHY@Z^t aP(Ť o/yJE|ܿ*c}JߕP;ߴʳ3}^E0 {Ax!0q { fq]v!톺]]TWōWk fW{iI45L_gfaG\"޸s^ X]/P4-(o y][unWݝ09vEX;Y8=|!Fs GCKC^C+"bݶ󍅗o>Ut1>}We@Y%Q4YGv 5ǽƋh}AsB8Dv8Q [vZ 0XKe`e xÕ\,q uLHC:R.> /\b"4! ^>\~}&DQX\- @Ȗ]sPSe6l[]scj}ta~=?{G]-y 5w̹uÿ+ϣQ{pB)&Ё>YLjW))́nypx\p$5Upc.9Q0?f/֗kߞ]A@O>d!uMXZʁcfet k@EQ1LY2L9Z*q&tM$ut] RmMRrϿH; zA,)  Vh4-/5jZtnq9][f;7n>U&{`)Y]g N$IGã砏nַ$#S*Nj39 gV%K ,-ۧ70n~SK=u W/uaS@3xj\TOo] Pw-c n^w/,-x7њ[,)Nv?8ߠ9Ap" \-lKӗ/okrt˔u6mШ,! :aBF4 Tڕ++wnzowZBo bhLu B!-֤t]iS ]9 1RJɡ13oj굋/EA+= _<:O*!}F? \ 0 rn昷U Og;aRٍնEu2Z< 7aq /ɦ&|n b豵4^n\x/Ub {ɉЈ*@q@T, &rbYE#B)RK ¬773fo{wn:3Z ڒyXl<>?lA7!]3ҕR#dUQ P.5/B 13?tœ3/|^Xږ i&; r"f vm7x,Л[i0Y\yj0B@V*Ikl4M̀P$$๞s3?YH[;6_xY4 }T@lGRPBF  UҏDbVA۾ 4s'NN=Kq#.b, |,RkaHGtT .ruzFP \2+n]LN8< Kkh{x$>t4KX|Ѳ !l\:hByRAAQk<[A4(zWUBG=!kD? 6oiBԠ[aaoPyt.AʉKA|"@phZI{{azܹNA̞BB]G( !,V{ouξQߖO |;@Q =g=1 LtzMsDRIvօ-OzIzhC,*£bœBH#Qߏ(P)wyxW_=]Xa%g{ .Fo=Ił*x0G7 gt $`XZ!-Is֣ցv5ڒ#BO")y"4G&|'N 2cb+]G91 (kWRP@y<+)3=桶{@e~ ZK~EPB!$,ng8@(N7/ˡ0+BKhy) 1*[l  Pb*;Rijv+qLLKhcBoB!.ܡ?kC(4h;E:!=_:s5Z#aR 2߭0Gq*lzI0CH'B!QyжLi{?=돿7"OYc@AAd-Զ22v7   bljq4G qi B!w&k o1?Oi#7R Ls~YA?{~cNC55e=9].Q͞rx.Z2-<9ulq;O7Z?ᬛqtB!Bql1HЧ¿ % UMM٪<`V<%$$~]x%5)SI+H cGML/J|Z]Gy?Ch st4|B!X\('>Rrrp;' IxУ#삔{|<$7%wMzy/y#+Ke)@J薅Cۦ;o8h@tB!< 照~9hug;!@!Eh(y<62w9Ǽ>mY<1Ty|RY%ԣB!dU4rYNٷ^/zxz@QG[C*cmlyn?i;l]y[j$B Jrm/X),ԃ焐E-zp(Bi~9}PҜ~W5_qdZ^Ja wL612]s͞V@+q_0'=B_Ra tr(%&ngϺnGVwsBRKnj'U$亚g׶ٽ S)*brdB{jchM],4u3;!~HG2Ol@'+E!a٫[~)\{) zba!H⑇~w#3U;O'x( j{%us7 $xՁBHjf] IDAT.6OlFNV(jޅ^-NO:!)@Zt -zhapqD"FVe ƾle&,(vѽwzv:8Up{ uB!@'R@ePrjӯW 8DBB@fr.H]Uv0Nj;<7y񚆱4*<ҜRM4ŖBY<|A0'wn9 )*E L*aB!BNV?aUsgf*E:/hvPpmѶleKM8{J݆wu ͩt)kbX?}Q7uǩ.h\ v !P5RENի g^s._=*񾐐&$ЁΥLE`Gwyiz)̑3}=on-! bE>c}=(VPv ~tÞ,A&B tfH 18 lTI/@C/ 裻0b{5ϼj3O#{,8f"߿ecFy|kvmaK/IaqKQB!O@gw#LKlu=os^tB@h t @\C;r͋Cޓ$psM89Ƙr_ L9uSwo\vfqb^uB!dm\! FE_i| @ў0Ҥz t@^͛]'"g6e0.V=*S!+ʐ^G/; %!(ɚ"`r |i Zs) O= (nك8&{ǒZ<Ӽ<j0+\Mab0CcڻyǬŹXBRma:![(ɚ#+z쵳έ71_{ } 'к|rB!X^z>[]UP ePR@H RB,襊Y,eahT (R4M MkUKԒv<:it#~@K`/ygܫ[} %XcvgWy/3ԉmU'V,On2.8qo:Nd_@{SX tǜB!`;W=°GbyH-x^.m9:[O&&X(0MQڼx0 ~~Os];О$,ܪmۤ0 a ^-o+[* Ǚ%O`e@{ddR֝=u(z743 3B!$![9ok`|h[hnmRqj7or.s[e]WK(I&zP.{߾ކ/sI O? t}z0Ph80Տr .0k칼"l?yB+Uʐ-G1.q4͂.F!9]Ks_o|,>,B=ؖB[Xx@ Λ/j՛Rx!REX6XRXsN _G\{{0FͫޛCrB[y]z#Sms{7@{e<(8 !ʐRE}prS/:w+/&G\L=!B2z/)3-ЙQtΣp2c}I807_FmM2=~RE&ڗ(i~D5J{7Gz i[u=) 3a)ƞlށnlD|?Ju00hā·i=Q9fl-z4<@:!Ć/.;}4|y{DžGZs ?7 4L3j΍ל#cZe`D%R oPĄ!GďVKoK+dx0F&=8 nAc9x\k3p Xk: !v6@.}uċZd%1eYA5o͗AOl'5 &*nx߽sNH t=Q\XQc~Lj" *Cě`Ԋ gzGJ(CbXO9hоcܹiF;BEu뙯ֿ8GSZʃyy}!q^8ZܺSfZ9g(Kp'8@z/ܞKQxXh0^Ԯ'a=goZcaҠRɭgv֦&UUڴ B G@0P'ذYܫKޭgZ*|dky b91;;@o.W)80]Iu+*3̝lhUkOt sxBŅYorN5Sz=w8-z" Onޡݾ!k,Z@w*.BlL.w)ЃLKhy678*݉<^rgf;(n\(umM"8'"Þt͌o4OXQ|k-X;PZ|$nB Xmqcׯz7w3kBlX^zI! D{xw=qٝ;b3-݋E1tmkh iҢz@\Wn6%p{/U ci0Xx bP[vnGdebE!7HWLKj7/}ß!~ V;K90† clz#̣M4Ml*#G3O7//6О{@__Dl罾ٰZ@bsP=p{k}j`HBXU|.G2LG6,,cqN0 #k*̻l>}ј#n,ιQ›{KM|ܲzJj{/EA{&IYE4-;f4 a hݙS/זZS ˭IWVq#u{^l{N-SZ0C;}\U0d8_K(8m?]5Ϸ_Փ!i9ߕ_7~4~HU">5EyyTdqwb}>פ>[i;R:#U߂B6)/ڧ\{qi_D;VY4E+R(lխnvoۻ v{=`8;陛=nZ2)N+EX4Gx/߫WŲY*"232222 ^erjÀ "wv&;-1K1]kQD\gAJ#rH"<ۡmXG £ly=N]\.efH7k >|V3/! fYAzckjYe86FJ"I}< QzLjxP3ˈ9Uj&g3QrQ^ElCw+$j6^:1b,}3[WAoAc EsL^='\&0Ӣokx/{ 9n3gL;Ao×K[qs~>MR k|G&/1>牘8lC2IuȞUkW;d u`P6Q ?a2NEf.,Y)M& Q"EKĪ=˨4zֳxVO}#Hfag!Q뽫wg0S'\9Jrr1<6,'*`ݿz>5~ g Dkr+BA/c."L CdD}¼F/y|lqDZjzuv,W.w?g#ͼ׹}Ol~HsjO睬ȟ5,|cTuJJL*/'F_N$>EyOT#&eT#d@=L*52AJu]ӈ꺮X1nvY., 㸣9x ~G2HC8O=ắDU#gYGoRթd"iM%zR (0CUUM'@' V!TDap9crs]y*dlq:[e&o_-8O:uhF&Ƒ'&+Q_̨lڶ%LPQFE :U Kǵr.,ƘvN'ܙ{*"ncVw5/1x!_,Aqku$ޣ;']M>Nzk-F}ٛ/cQAƱs;pY 5@wX.ֳszU+ ݁/E#N۬ PSB<͖YdveyD!fr!3 * UZ3"j2M-/^yOyB&i>f9 Q@ PW$כN%AB5ڤ5C& m Q @9PAA8'sB8bO3L2O32gP,>{#w߼0<`j޳WlclxAX^ϣ^T&&xQRyٸON]W[MiVڢP4*B`PJUp JHZ\`rN\f޻nYpmw-^>?ug"wCw|JZdʏ:VlLR(2ҹt|j}kWu$RuQDm&H !PAA@^#w { lpnaqpswcs'_(ܱ]~|#qor;͒XwԄHcXI'p<9[[܋k{$i#$Q:j@#z{/OFUӍ0fӄ9STJìXYɻ;q_-X,2PF-cYx>1V •;j!ɢ]WfKm245T\#6uKW M"/ꅝPVӺXUy#ն":ʞvڟNU]ߠ(J$@ J)[T{߹ڒ/IR8x 69csn呱tmltb|;Jr~O˅wwR8d6NnܦiN3tA '6yR$ݤ=Ӫt ڦhRUQ54!xBBe+IEx>!EO=/o* ʭ=* IZg.U}N(P (%B{iX^QH[KM~޸QxWʄQK ^$ _3<_j QVYmpp㉦LMۣhVJi;N Bi$;y (!T'^\Uw2^ \,GrkOGrVW%rl$i]7z75 Fj[%@ J |X|6c" Ji2dZܮUu;\* '>yڹBa*;11Q!J(CEI#d&Ӟl^տno&ܧ')U:-( =ÿo%@PH nuͤU۶[^%+o}:>:znxR{Kj-,4ʇܯ:(E[٭no>?mP8TRFyƷ錹QձNxf`UIUHB Jiݯ4#xUKXB}:z&-j =&߷mrDZS9\^ٳ##'@y%#LxN=޻aPߞЭ4tNG)iϕZmPʭ9ON9'(-p(s\Ls=q-~.F^/d[(܈=YI]t@y0S f:i [3lߤdVu$A#S< .$%bN}y+s (T}=&z=cSS|wYCV_ LZzu>9<19~ݻo'Ean%%y͆-]mͫڞNkRJj$,l BN꺶 ;۱niDz?rGG|096144tQxm% Ks`yܓLePAЋCνk^mp5DR]ݼh]M!B܂/%S&+UQʓP-hVU4@E[fٟL|ygu\fqhz+01.)W>uQ)R\*2DtH ±}W޾5uT4YI] 4xL_^揔t3if3L畴ȟ5,?Od^3s󚧮>瓘G\""%ҷ{DqF`ܕwDZP0ilJk5Υ,q*8`G "j IDATc TJIC{Q[gV^ijjj[~sw3Itةkꠦ YYX<ׇ@iuo?  M>26鏏}V(&7 v2';&fv=ؚMM-t]ۢ( \m$=I93\K[? ō67>|'? q%12}Mt ޜ`1v{+}U'M4W#TN=vglsA[ɳvY!1w@_URū!O~mj\XoatyP7#;;C'߷~s TQsy%A#牴}r3g<"s!9q]$悘{Xy$M<ץPS/=[׏ BKW2^εLGGsߪULkj(CuqDzFo|vgFEڸ,Xۮ{ڪ)L9&{ vKuCC a"a'ICLx/5-=[mpc閦=jnTe Q]S Uc $o9ȣa&ջj?:tG;/a.$O @sϽԪUMc%yJmf"x"z9驉7~p'7 ^ g x9[7LmܮF虌VK(Cp?|>es@HS(@)6>ss ~#9.l yM'.d <;w ok+~ݘkؼCǬμ%&3z"a84y@]R} إ3]jnQoy?9rx}0) ɭ;6vuwui0NH(ZJv& \MjREQ(dBbYnRPJSJ\q/b1<1X\ܶPm o/d z ~!n=ifJi;QHh* 1mYBGJvEUo:7rĉKbIۚyٯ7}YUEUVQ1#LʫA8TIӺ+/ktt|WkY$kX1 " A,Yq;&(UV/Q=jDУ(Kҏa@}c`-y pǟ3u}U./˚U+m,[pU8iԞU4j i 7?x-zp%tY(I子cV4UIMZefL^js/$,'$IS: *Qݽ4Cவ[׎ZL6[(B(8(T(ѩS}BNJihPQT© P ZVI$5N2kb^GQ..IxT␴l^C:{Je/u'UxI T͗`\s]-wڵkd{Z-BF(9(M-'ȕt:m|/ %MQB˞aP(BL{{|z;c4Nn> yךcz{sg~yφWB.TeR&3Q,5gYƸcqGՉ4Y+sY|nq6ot86|:Uvg\{6eCQwY`,B@~tZ~4n 7~Qxӓ¬FEdFq :u~4yE5fِV=JIjt\j"M F\ V7U!"him>[>Ǧ#VCw.BT*|oU6! k[l9c.]]ҷW9-gTQjv۪JH#MM(,W['odxٔQf>+ W[q,Su| (_sTDu*eF$UI &广Hlu%"WsQALYGާ/z)S4X<3\KY㥩Ě9RIeKRq, .xDӗl[(_#On=(֬̅㲰twc@ΖdN 6پziYV !* !Bs2MM_ݺ}~--=1UhEysYY7s7B!y/y|? z㧅wr/g+^\tnl|k.e=JQݜn9/"@ϵt( [` ?^O #Y9x}?ZtH7-zK; `Y|‡c%e)-3rLrHgQATD! itKRjNK|9D ֐GKKxYa)4VpGr3hֳyC2Jl?"E.Ke/ 6pcLjp]vϿmu/\'1'*W%ش8aޡ,s}\ ϳ#ou_E瀞^H}hSc^us!=74қYN8E^|'29N1f#t xSBU@xu!H'0 =Q|1ļIfMZ(#U71Oz f\&auyjLsRMyI]V/AE+P=u- ז ߥ<𨒩{'+K4>U,a['kQW Ƙ _6x[c.@ΤvͶm;#$Hzx1N-xC{ Dr :[ o^qlÁ3ЉֹJ{w_[n\to&MFS=Q<v5rLJ%i\R<B+9Ӹ,F٣C4wڳ.ɫ1R9 cIPÉa۷?~੃̇ rԥWZXmQ~dS}@ސs{384(knTް-rAXOԗ~$_N$F u>7B3G rn# b./h_\9L'~&ڙֻ/PAb1t8f.# Mg5Q4Z@,I+΅ں3)UEzPgxcIz@]*˹"]_P} 9)AU""qB%M뷣$]cJuC9?1sַqO> Qi{9FЁ I 3 ?Hi{o,w۪N*IhD VJjv\9dZjVdDQ{aV4/|YI ^Z)tHiPj5ҶUk)rҷI[m3~mO=xcidZ1fWuE'4sv'^z1L8Y7kg[S^H4dP)tYk&w}k՛j:I24?a U z#9;da2d T}&;rOgmR27JcuX]*I5N0;` :N󸠟&;{qآWW.[Z 8+%rBD̠^#F y,6YW.tzzZvTQaQh3mj:\##tXݿv?w˕+W.\)O$ORJF1su9xZ,f>Xlv $X#'hTO&bYlGAsecw2-5NǦ SGc,!<\Pߥk&}?UWgYX1#t*1j' եu0C.U;dZ.} tt4{r? ZeY?].e^>X ˇU+CUmj5yzj}W=qld_ضmp/hq]-G,u[5=?Dr ?iBc,/ІTf(FGpl愒j1{a\' CeҠV^[O}^=o>W-R@.kk֫}ڋAF Fw7O/"p ' À* :y SGK$ or/Z?2t3pl$Lj#F:9c4 5&1ˆ$H2C2FUUr$/~iTVHeS99 NJ"ݼi"a\A_1'*o,Է3vwt+wYu 01{pض1\HυyUQ$ElU?~ussgC!EP%Nb}vY<L%] 9'ہ49Zs+:cȴHre%wDvgcCOv$J&Id1bpv _jBz.e}Q M9.H(KgO{}cEUqzL9@ W&T&2慤"J`0UXʹ*v ־z ]6.٩TR6PN..ۀ=yĜBļZ~eߪtlCPd-F#֎jrgڮ뤝5(pgzT5OJIo~@]nkO!瀦#~ݫJne#݅~[LR@k'}i 9!C(' {s8eNE~0#/*ywTUˬ}@#F4ܺ牃߇r $=F0iEkj<GP^rM8]Ծv}=3&{Y/c8]t(asSΑ7 O΅ì>"B5&_v7" ՟NYGsS|÷OOJD֎ϐ4b^/9 Z&~سͷO}utɎ<`[K}b.I+ʊoZx"@؟a&J[Ig ##?ͽ76_]v9/$JCոpV"aGmek7^tP,E&iy8:pP';ŸjBjhr\O~眹|ιAcNe{[gj Uϔ(ļ<‹z%ٖrlA"C?lWxgqez^I lnxdd݁^+">WLЃ_j`C< 9@; {pq1۸E]yumPA 4SbD֜I9PFH%R]A+Bӂ>(ՖWM}^'% (-n^.R{Qx}irh㘠@ʝD҅HrHzʱa]8Lݸ WvR@^M}IDvQYPZ.Z(uzZ!"e?$m0XUuމy:ybN ]k6"fp:1 ߉^i ŭOZ'_?ǿmqoepT5c@S#5d5)8 %ˎdj9Ϗ<F4w({k7IFT@̳Dy@ɯ8GHݗl%je)zZa {<` CRj^U*$"rBg.fƍj/$ĈC7u6?w^ٛ;g,b!VVC`~IH=."*%Rwn>s3G 2]o~#F%g_O5~Ȋɝey%.!dUw[;niSjN'W %ڷơxREGzzT{-F H(0~߽k;!=ϛ($&shpf?^ZSҖGz蹓֙nջV[7mYKVO= RmKD;`-Zr&rW` d..ů %!Ĺ|bW= U7Z^-R X~ǿ /~Di/prZB# u4b[LjR7~|}xDM?]+TÛ~ʐM]*P L(gf_;/{P+KH6ҋG)LaW;q/qYcPmI`hqon $"Y1^۳ͻ輦?xo<|.T]ksujڽvoMI;.GeFG%إc*J+QѣrZcys4ļjGAto8wºIFZ,a PubW_nEA1}6mٟ5t/%dZǜ Y'.8 KݱrLaRGا[(y9T - `K޵.TZum@{7S5B*t$ņ(#GIK:v&!5H{t%PK|~Abd^n矘y_y;TW"敧1zo2&ZE@c >cy+FGs( mڼms#3o> j@.w&4*9_k~in2dۈ^3*}v}>D|!=?'ૹouNo $*a+Lѭ-_?61G^ rwrܣ}OP<-6q0L"$T,rk "p䏬 w p"$ imdrrxѷN[o4E(U^6V#X% `%8|FuvYNjCj1f  ϋ,-f' ύ>klv9$]VӉOcĈcA1íU-u=ϻ("A꯬+zGk?M^*;J#ds.@P,p>|ӹbE S.gzu%.~Rp vAݫ[:܁waӚn9>T7H&܉{.7٩0a|^Z1A_>])AE'QI[>&9 v&7lfliԻT*d!5؞WWI<+"SA[tuJ**wVW^byg41~8c]tKAΣ9ooz?:cR L˴N1,ծ D(\SOlߧ"A@A8P L[#|dɰ ^7:NSttn#s]~} ^!ׅH m۔"P553GS`/97!}d:Em#dJnHEL=;{,wSڶ7=ju?ӬnBຒgW( X$vyv~Z#"ZyPkvy"y3ג)Qܻ3|3| 97FT.FxK`hz 9(UZ6o}#}-,ōp! _X, %EnGKlݸUb{{N@GT!߽܃O4:B.'n^p?|o(CcasFnԃ0P=LAWjTZ$>V(lcևn:7 &#a}d5`D_. QO0ܷ{m&0ٹymjms{+Z S0&Ųw v.Pey*ljHC`:$ɵwļV~uJ(&'O8xPmj:c% ߾2̷8b9YdR E#9s6Np;c .cp8QB( JơQULk{ ×R C`qmw@ٲC[q}>iU>x¨Ugcl A)Rt O( S]6GG'x}-z-:=Ӊ۵:2+;yp~:o}6&苇ʰ*P4Y^t0uă&N6=3}=} p qͣr\Vj|p*'xW%ݨ%ܩvl-*yl\/%J>9ylv6q""Jz+1b;! ;lnPM[V1V!fu˘W@JPE 0d2L%ҩL2jR:8c1Y|BN)B* l~*NrSeی1eesBBE Lf"Ltk2l2 Gs$ͪ69#"Ȅl׬SW߸Û) /KHHiMͭ=A60tl%nzO]^/ Z<2=AovN+ɯh&F 7M޶۷A@ËQCS_M7+5Š);~(8OAxE ˒u^̄'Ɗc;O^IYԿf]L9LyH"MKR" yl̗BZ>ӱ)-$UOXIC.sgݺu2i\,0qM`O9rwܿ;==5^(rv,P,/J* ;1L4D"LRij*Qܶ6991:`U(|P(l.zxF1k覙L&D"Huuw^EHuϛ=<<OϞ>AEF\_ :|_ΘcLMMOMMsfWW{BG9Uզd: HlAOswRRd(<%Wy@`מ6yL^:m7>,Hn$;$,EVXWW͎V+ӵ+ٌv+>ȴzvVf҃d&$vOtwu*V(w&dޑw= <; >8G 66v0ni ZzYe7ʼOx_W2 yxZ6Krfe^;o|p˺9s~$_Il@og8">?EU^:x-['zy [o3ˎRij_uɘnt8hN\W2gN(nlԇ:;-9$,ӜٛfmRM{$]_E"wCz>GGw_~C#Oc}!}!nݐW@09$\0d`yFuѥ#_|u/ۙ7;pl-O"F&ofrh猁n@;N{LY`Hv#03 'qP'߇J]f_xn۾eMgs4 fk^{gõ6Wjoޣ,I|gϽVNj?]PfBtBp .ÛEldD,]Ru2f'Oo(7<\xduڶmp/CCۣ]vpc U;rO,jY^8axD1t:=9226 ]%Sx⩏J&dN~¹?ԝ'zd?t kO%c 8MiMg^|wʟXEp͜ڈ4싯 ܴe07[g?.]\sYBV\`IvS=b5Iy4`T* 3ܹcOyp||Ji'W=Ml=^{-SҴҹ'vqy.`^k]F_y4#^ӀBR pbDR>7 e1χlsoߙZ`;vعk/nܸym`]w إK,߹JY `ÊYtNq> 3X&C_j="@r/1WyΝK۶n߹{7tMOdB3h685tڟhweWo޼{~ITalr#(RЕ!Bxh sу.K2+Gы.E_rrٗR%FRϣHg񛛶Y<{/ߠ9p8_;o}ż#lxsW•y軿oǁJiaܣoؽ{מ>x|bVyvy6y= g.E& ՔPQZGLpt:,>##_YIܹLnٲgddt[OBH. w":CS7k{T._xlM;GGǶ$1Z1t*d2p{|bPJ/ZW"Y{6lUD'g W)b[6kl;l%ƀܰ~~ſSg?sG^7I{i峖U'KPɓ{AA7 T_Mϯ]tqڵ<>F0ޤV 8ڣx`7Q^:>!֍+M '$2)\NMZܔ6D+&@lw#q00mJ߽sġ_.!$q!؄h)c8ˍxqn$b%T-//>}/[,eMC&3}j-I IӀ*]:Q4~aY%?|Q^tZv׿fRG yjWk#ſ[[pAʼ1xm vBMzIA&1Ùؐ=!|hKo  `ڕgBjs1Ơil}ꩭ^719\kי><3=umyyiJcHR3L޼'W7?^zLNĩm">gIK*肑 7'Q׿yQ6jyr9 z5Ak>p| .+tk)HvCQ߼`_u8M ) 3TݦxcfLomܼy4J^uw(x(Km̿I~ B}@Vrٙ鋅mĨJ"yP@ƲԽz[I &d&&&TPc)f߸qîdÎic"f̃LJ&f'JgM+'iv呦ܙ%Bz]mB:C{~mx|i}`/O/i0wTJ̺yjy器1ρޛʃd)*z9~ +ӼoZpz~uJTkM"مt"ci&9VlD#ȯ=p^02OdV {?oF|6^Ble۲ޞzoDovaA{?9S-ܣ;R6](n'Rٔ?ĝKyҕJ6vd.M\%{$iYW_=yn!ّL8v*McZ~m/x{lraE-:oh ¹ԓ3T&2(C9qۥ4H=-x=E4iZRu]'Tz.0uw$~U4ͥC2A䶂njpMH5J~NFS^n/Ǔcb_0wyGmV*FZVzp@Lr|e a i>}g-:pa>t=A=ElPj!۪]*_:i)"1Cv_%axJ}?G GIx{@Vvc Ї,IrjM{Qp8+GըS Q@O!8eV2͵>_Dk-u?˸_kbی]8nB܁~35DP.Q{_ܸd^9q8p 1G۸*Wwt }^T5޽a/qD1ɲJyЕ:)~CyyCMOH[VŘ{}vX sg%^HR)Md3I 8Wor?eB\g`u&F%ARrRnvx C& 1qk2.,П#c|Х<=u|Zs1z ]Sb§ؠ25w^*KZ)#-eUjBv-`wc ICŀj))u[~xiYEj5$,;aЪ~?eJiG煮fpIn"ĉ8OvF峣?-}L)?Ch%{ڷSU7R:uM*%f߼b}ͺpXX|oʃIƗgy=_]} oA1" xo+\n &lS^q=+.lh֝r/@b8ZXSjafɪؖ]" ΎiD8W 5u)6-1s М~_dJq2߿m]-]yxy)[Kp/ `-OFǵI>Z]SGR8?@KAWdtp4,UKE,KAW?*p"n]zك}0b)ߍtշf%=n(- %{7\yMKkƽ.Cq jW}\Y.U!4MC~uK6 薵c OT Գ[ɓ7/W.w)+p`;G#?1]STuH߾8)}o%ZSs>,<wT1{{MAWılŤee4WB_@́ Tg%D[K u cRL #4znStg n̲_Nx<>Fm_> Wzd*/-s.;ߛ1ل7}R҉wm[R"]g d؇p8],Pt:Sry ܒ"l{/H6: LRN\b4d5R3k CW4Id^{Hdpc"^P0DxX6[!B>;SݟWC8`νe{9&n;bV u_z|RL2FNplGS8v!zp']7JRZf`_C:9LV h ׋ IDAT]+zקԵ󕏈WRD`:wx,}G|DX;]W?q U(-a̳yp6>w({ɇCny(cd򫿟 oߣҕW!|537k$kUR4i(NSu~Q^9mEc @@`*ӥggX5p8ê}c_*@WV-g~=0>[Ig`,Jr} U)[ᛅctH*Ƌ0ʰabo?eC8O"ٯ԰Ii+)EF\f+n^2/괌`R8٘O|FzM[346OIӁrU.1O./Ypqw9Jݖ'ݶ|?[( x%G8/Yyek > )'?!!ڦ͛sG>z~]nN&&WOD6 V)Y׺uF)Kuš*5/*9bK'p{`Kd9ؾ*NbNNuB>q<56m0wFҹŏM'!+R~oG qpQ寮{Dk+]`lf(!7~=55u .87ŧ.K$C5 uk $>J!M榭'ޫ|rRe G{%'Nmm P,? ?0ލWppλ_ =]bّ8e4 ׳Kh;0浅(>/XC61cL冿~+;G'6/; y'JJJJJJJ]!U1-K*g?Ui"'} s:HyX6' /:Oz\ʩ6~dgn@йRB|xP[<l:;=j?)G;!,Azp#T*]P_]:{Je.qԜqB- /k|zmÅ=sY/S܆!z .W}ɼxpD iKŬ '͏V\0 (KR?ēH:yY 0,Fd߭l ym&:1膱y֧Uk]srp^N녒)nJb^;-Vu{$]c yQt4V(}8Cg q9Ua}yEHE:>] u_w76+ךлY:7^~ Е-2qI:Ho6-5|v`-nE2B6m|țoLߛ߮]| w l`fJJJJJJJ42mm[wo_7o̼8_Cƞ;7y7f}#(7z"(X~7O1d@uPy@*J0) so[eoAkbyBfkqՋKóxa/]III z,.ثoZ7]O߳,9y]>9Ǘ 7l[G+*Խ7=wD_I|jmtSF֙򉻷{F|{<@aB.zu"ۯXm(0c>&oS42B=t6?~v1/K*B[_j"y@ME(u@ZWs#ϋTC PPs>yg90g/eC=k<CDᎵ"ޝnx3JX:aܦubD[i:z|c$MbsԠ̉d= :/i6l{{6ZmEQv;ʣސ24ei$HU?A|s"./ z'I3/g2݄MBQv<(yg=Vw#6C_ړ?ݻ}f"?8dZdf-?qI@|sD0F=m:O4BF*,JŤ*CÕE{ np"sšD0.C^1\`|W3QWZ.M*ef]rb5%eW .YoW&lxuipد( ͔喰a!Q߹;2vt&=IE@m]W嶆yM|fK:W&p珛74pZ_{ixXKe$ɑL*#&"ƙb#DRpZ&YaԲ`Z2-U*T)"/-G[t6 Zn>qX)<p.VO׷&C{9׼WΚN}~|6q! +W\Cb8>@"2hESpnj?8{[wL˅»W/~wB?dYyK\۾}#iXz{$`][hCly; ~mHC{_7nO>RYƗz$jWq@Q`LV8+ t?֏7I5=%0iC: Cg:1`:t!D#=Q0J@lbeªL+EV*hT`JrU%viuW(1c߸Yl6I|zSuC=0M@zfʺ{3KG0 V u`mO_zy8p!i7@ùs#~nF*˲0 mJ?|zjO>'"oWgXT~}% 6 ct_2lM;`YNB|p%0)0to}y絳9,|cqtMUURSGEi:Bx.5LZK hЉNCui  ` RQؖ 6-ؕ2LBM˪ABlr^r1]~eUa\YIF!]duϞx||~- ]X&7n<)/yb]u:\0~'7#COM6 )E}z޷oύ+sgaA'5_t%~fqSt_RK%,3ajC2Q (ZT+zEHp?<&s*S9|[z~E?މ_w ޾<{vmΟ;^ږJ! :[:ppaq28!t:=7^M&nX`Lt]$Zj#۲mܝѣ58_){xɾD|]P< 399lv3΀yȂA@0gw03?oIBII⤤Z$^8'Ԏz%+B:.sq0_2@=lɼ}K/〈^2LÁΑ T?b/d&¾rxa>N=%7X;ypNO|囯S[7M3 ` `T㶌iOMlL&ug""ݻMرd~Hqlf=YqKsߦ'IIO\E4}nlmOR,% N#?|O8~ o1u^;#OdzQ̇?-ptFߩCDVxkT3r) a8gd'R~oM%!cU1  v{j(7α7ONO/|ܝ'2s8V^&6o#JyGwde%Q` ;GG0$b"4 p<|.Be\2 {y2(?J3OǽهSK:$f:aWԪLjPQ9Ȥ7dӖ3!wCk:ph3{7n/S[$|ㅅ+.].\" 8neoL߼KWok(qGta|7W6++[$ݧ}F9sHݵz P㝒RU q^K<ݟ5 چL?<2MQwii/!~hWFǵMO*Rk+*9Odh;W?]|q8UN{_o0 qpx=.]H`1XN\f|C#?ؼu>{b.|zw?ȗˋpC05̻?(1>swЁ#c =Dem\GykV=Q(vpyyre(L8cvR8Fb}P_Lq۹E](ժVPp2AlK/'?h4w\fSGP~΢-ti>hgo'G$>K4 XY_UE9#o{rN{ܱy# ߂63_\o?#84KE&y0{@PB>,,bU{䖒Q[yYR*Jp~%8w4x$)Q;%:͍k Į>Ig]j÷}'J9Ÿ0.Kճk>YYyrfRE];W9>uǺsqD>dbps[7qӟhҔ!b;s1q0@ cԉ^ucR׍I#z)[?R)Uέ-OJ%p3p!I΁oLd{yEO1A|)ٱM69rOG@׍.N`!p-yw[ֶlV*)>$,Gdb{ۢ\@?f-+ ZӖ^0TXsOVNlڦ '%]7f7?;c&V: F^ZL߹t:=7|o-Tӌ4$oO郮y҉>4]t`LҞ[T*'WV޿ZTZGxxgTzFQ PLٴi|S;< cKi]0YU[TPUK~Ȳs:G~'VX\;- Vz"Ik86 k]z^*n]_T|M5ԍ6.j8}3Wϗ=}@;ґ̯= BJΗN>#8tY.D._;;s]O 1 |40VKr#a@JӴT.\.''-R9VX;:x/,, wXVF]v4aO@z[n7 {`!y=pw|̣h7Bm2  zOX(w(1a\ n^Etyfρkڸm|{&M#X~vÉ㞋]!9̗v;wos !p3ބ- f8BL.'&62˗zJ\~^=ss̳.yE+7,7tY eJmٲc[OmxftlLktzv=0npl[rl?`f#l!u%$,uIb!uyg8Wzr%_|50wӺ=3e]MI:)VKv9diwHo.K,&flO ޷ZfQϽ׼RR d/fsC/Nl،Jfݻ]͊YZZO->}e\nt.0R]#f $ 0LtQ|MqzDwCP젂y{s˶KKڰIzƳ׺$:~(vIڍeDIG!݆NsgZ~ؕ ]=A7~hFjb^U/@/ê'ݟ.Nk_wA57]0mM7o_̽!!:igA0$81;y?gB8\K< ٻ ]<=Ypgc@\-p]s9הA ޱy"zEy`=m JȗJX[WN$N[Ogd|;v5)ܡ\`^lހ,PB~2ax<"֪G]浅EŽh({7<>3^[e!4znfQ,)Kqƒ%9tX]$>brD!{+p D y7b8u^N~8O`C~}=k$nM kV3m si&JQ3+%jC!no/Ag. -[ kZ>Gw0WV2PV\KsW mZI]%IaR\t˺JN{(u;ڝtv·rܦ׎K"ws \C݇;ekpFCy8׳--5dk QryxYT=-&X=x`&g"E&ioqKqKҮ1()) q+% q s.ks>$;γ2_ۿ;22k4\&7R{\,;a`.Fmg5{; w={< וWo# zRX_ IRQ[qK\ϫUŪ>IX'$ id WGsN=̜ZȻ4u p.zϳ2/m!d3oΣcڛsw96Qe!0ߐU֨![e;[sޚ!0osAwȲKKY}`*)))))))uYнʒ9H`5M/%Ķ]wΓerэ^ܟөIJ>[D{sPx00 <.Gwԇl\ ғVG{==0ws׳;seoU%:1Q\$1Y꣤ԊPZsu?PՍ><=gHq:}5[P{PҨ-h`c.цYp[S`^l$@W$>`[z 條hR)o5Rw%TF\Hu2=_~ #EmdF7ܵU炶KMCs>GٛgT E:xrwTy;rCݣ  L7AIkzx&$5 j\뢮sojUIR&{ŐJ<=O Oܻtf `jv<`nߞU픭-HbNmܣZ^ͱsX*X~vrp@]̦?8.WRDOzB.9^|+cco9I@:y7iee`ևucHz&U[(^=(s vlpfX\Z<: 9w{r`tKS νQҮo]ܮÁ@O=O=Mӳe[`U6%R{y([js)I!@l͗hk~C1}J 28CUJayy&tI└1Hb%wt@}Sȳ༞*Xt̽ww܇ wd{rQ$ˢl1zrKG]р"wo!i8֧`Ǻ0+Zz}%QRRJZt{S)k][w<)GE={ @}A0ڥVVJrVs恅(nk3QzMֳw̅H{0h_^Y,KO]ZEW4ĵ.q=V())))vC,Rg;[Lvހ:y7m4J,z?({ InC<2|Q~չͻ[#])iJr @qϕV=pOmڴ巩`^9JY[NRsE.WGBzwwuK{k>XUaāpe ˶l˲iR)/Lk* wJuc$^)iH^}z,êyfgHXirXi{Ω^Y,vcj&[^VRۆl-ķ:qQp܎7:?e8phĝ*E+f)_)W+zbRR.L*UJb\.,XV_zo' ȱ7k]xv?'MCq:)URzeªA{ϵ/ -EqM"UgYP{O\b*+!Unloܱfl{p' z'*fTRi\,JT[Y2mlfٴm%J7&p _].…s1]=GV=܋^g}nt|˄hcnxsD`.=nTp&I;.߷FQr F,vs1FmbTɗʅR\*V*rѶmfv̴,2ea*u8ۻ$IR\듴w,qKs\@1묤KACqm#np`-7Mgpv߮;jk syH`90JMImR,WVV,=m fYRlx3[u+ՉCzQ}ϓL;5<2{<}ƍ_Y5`  qלoϨuJJJJJJJJJJJ=R=@'§'9a#۶x-΍))ZLi F;l +`ۯdsAt_<2|ױ ;8j*))))))))))%NAZ[n=BmDZ~w&({t0z.Ы(;@;`؎= {QwW2죳wo>Ni-58^s<)&%%%%%*+)%AI]&N* Љo>O=_# 5 I7wi gUSev'!; phyz6=0wKe6{wSjMWb' $)Iڍ׺$ nX]c yQRRRRjMxS)q/n4́((np[\rV]({(B[,'0Ghujzjs./kյ98rpjO^}"T\Ťa L{7%ɫRKj$IR{ٟΦ&j˨Aob Cy(!0{`_\ <;V[Q!΁A{b0yssYR'j+rZ$^ʇL] msdg 'yK@#e>G[0-t]0{QP ^wh02 /C#U MIIIIIIIII U]Lg7niJ%L4t:r8Fڛ֠[b0hoV[jCQam@y$sxQ@n|P(g;!0@ynB81)3()))))KIW[0R3Jbk1iyuۍ{>g펉_0ebii{ʆwٻs{f񖋓(5hRRRRRRRRRRR.h;w{U3 4ڣ`a C5(؛B W6M0vn҃ [5ak%Sf"vPjO4' so$(uI[%ժV%%%%To5yft|aYJɤv &lb(r TL֐-A{5ڐiusaܷH9 |R\RoR$c|S\ϫU%>JJJJJ(̃Γqd; #RcZ].hp+\z_$C쑶FC}g^ ڼ$G ;5]m?-"SRRRRRRRRRR kg&R!jۡM0w֨ WgRЍvko֐[` ؎=N{;/ՇzME@WRRRRR$6)))SUϹ\ߴeˎWbU`ݔ){[b,3qXY 5-ķU(@n7-AwCjolP 1`QQMIIIIIJbO %$(ˤէ fMtcCC]'9\Ά4 0ol~_Fmmu8oM0ڛW G s%Au5NW,ϭEf{bHu TmZc=[%Slv2lI]0:y`aPPyt)ܻڼ߫[]בu]mEWQ@b%xWsok%%%%%Γčnt 64MlhwnߞU픭-De (gs p{}0lDT)trFj Co wERCE80w%%%%%%%%%%={l.2ߛMynkyH e%n =Vo)s###CcR^yЕFI}kz)g$yeǮ5w{HH(J|z7>B7PB" xaݞ]3;]+ٕUczfv֖ɪg2OߛA({BGDus>Bou&=~BYwuX~vq^|sׅiw޷7ՅNcF'  f tn,.7%  !4d+2@縺tQ~}$˵59jD7uy鯝ahk\Ws/Q~W6NA ˛NM.%|Y7i;7Ͽ-vcr3 z}>a>v:=0mԉ_[]8ۨ)֮aTXrx3p w0)YTk:\IrRQ. {&YY7 u fP7;-./dYz'V_~V=0 ?>ǵ :=N-̭3 s-1pã껢~%Òěf&qM*_c9ĵ3,dz E qỲ#qH Gs8puClv oUBWs˟k~^a>y."V<ۯک0Q'>èoNW l{|ߧnuO'ˠjk~.a~ s v<|^¼:ƄgQMNbWмo^I]}a;!o19 W*j͛I˯l)Ӎ7&tCU] @8p3,bʵAW>4t*䌱 ,.1)ɫc 6`d="6O)/P|O棽w# ڰ{g z*=)+:3{za`"gH2)s8x cl8G0r\~a۴q 8hp ek,_ IDAT )¶nku3B1G`R̻ *T|6L7^w;t)|y"bs"v]v], dR-6m9H,Ĭg9\0́zP\ a%Siq09oc@I}qyCjs*{UxH/rPuՉ{FA^-^XO ?(?ӵ3Y~zzQ>kcY@`Rnl;[<u|=?y*]__D$Y%$Yi%D},"]/ Y͍\X?^U?\-Gvl-r4M,I4Od3g^oEa;EYОwpM$ۛF)] u%sGߺ7 JVV;AB I$Mv$Yn&ol*A?{w?\v]_4C Ɗdg4I,MN$=x#My^ʾ?7 g v4egea- 4Ð5`li.96^H"8~lwO^G?>/De1 3Q5=9̏>M{x4V .36殪mZe` dԕ/;Q$@}jOa>-tN 0%`qw`H\plw{0 r}4][ Ʋ,x`繅}Y}!$4iO$i/ N$diOi'K~ hk=OtdY?x7 xyު -˾50X\:n-ZLB<-ŭ$,I'y4'i֏ xoi܎ ! Be߲W;[[ a绷[|o\ -x̎t,r<>ȲT<,,eqKG 4YIBYqqɶ^lի]  ۞미6+ Xp9MxR\v.>=\6Y3!|̖yB B8*WVnhEHb)Ti$A~G'E$,"툎8p;\i٬Mχ׃1-ap?x`o![|Ysq,]bɛa57(2S4fxh=x x {~>tEے^?辰'tlb/e^~SfzdV>>n}\g6KpHSY:N~Gq}ݻ|@ +bmy¼:?8?\}va>~:}03S*+N9=QF<(RD1`\Y!=q\s? w燞5\ \qqgCK!s)2e.ifqQIQ&qG8I"YiL<<˲,FYN2@Qelk5Lp 2 CByqxc=k:z;;.+ߜ3; E.s)$D<,ʓ4I$J[G64KxNg@CupVxq\9.cqAp]7p=/t=yN຾p28 ;q$B"yii&U^8\Lzt/W'Iw{s{o+?WG9i\w2̢*+4(n|ӯk/}y~xۏu[n=p\';3ƴGտ;'a^^':^kFt?0gZBBH)%cs^ifo֪ Stf;@-mIQTiC "r,Y(*73;Iss`>TM!cR! 373m@E•7LE"Q1vP_ !^V]1Tp3Zg@jdg9dhBDψM{.zesE[UD<֦(ϕ=䥝)wsRrciHqFab1j-9sY6QĢ=^G݋>/L9=>s#dYfYhٖa1`t(^դU֏);',*;e5sχϣi%̕mP FiFpKU:R{8˴c{*PߕDVf),f^<9&YN Eww M!@ )r!& 4Se%r[i];lt/RG}yn̓aT:ϵm. !G?z#T,MS;/}8o?{;a#Xr';.8jIuzʵRC HVsE.D'Bi 귺q[+}_tוBC|ׅ29?W J̨b@S}B0@ 3yMAji.h( AQ.\Ƽ`9¶qo\bg`ֶ mvm׼nc=L݌\;AćƆbfvַ,,M+ngeksyۻΪL (O҄xDSnB2sƦQϠۼjgJ4*[_f|(3tzzZ:E㵽J erL7l*0YiAbQ oS*}VZqӡ!Z~ɼVfMN7WtO v-Y@1OWzR;u\*68wfis!fvը?soss`ssS6 oݾť[ͅ0  |o2,/= Za^'Fw ScÁ*ȑy<Yy%i'IP:7}߽ͅ;=cu|ZxuX]u)$s=WsW?)(.UV6Aff3MB3Ӊ岛k険ꘪDPm3C~6ק6h ^ ]@B,2EZԳ좌zE-uvַm8ڬp2Z2y*݈0nTUJdZAuZazx*lvVYO727>8IU0ل9dk[E,iZOoU6= IPo w0dxL|ׅVVg|SL]Kݱaҍ&Mn֌go.'ELZ9y;sR|Y8爒r?@MH˪5&QfL#oq̪rgiy֣wޝ;wrUk7I-5 ,M,cgQeQĽ(Jz8^nizYNyC{/_>;:<_{[oAyvH0ǒq#7݃1) ȟU@̴R u^0[xԢM5/wЛ<}Eg2Z3 VE% ׿*m_u)m#rqJf)]fc=>B613-^օz]H8/D7xQegYdTfgLo^%e7L;nV[V׬ȳӳU*VUf.BƉZb/Q1Jq>kyiq)Ҭ,wiy98F t=kMUFo{O?o,aӋr. v;u8Wk%U3'=cQ&X۶vvv׿C9xa>º2ibmz.LUhО-ʫh˼Z&L{{ll66m.1B=)TCUif{>>Wis]\8+|DUxT=mK)m93nʾz]]5Ӌ:ò6GUV_&A\5w0-UJN?KYLf} n >zRS?}?^X\/,M)wZNnYNZ0mŅ5֦@KqgO~;cO9)ӦT^9ӵ1diX˵4may^CYSV%ept?k;L% =89lz%y F/xo"^L.P Q yut-PJ}{Џg*L6[Č~^)fk}0K,kYm6;N+dU3o[?*;f`t!զUqٖ.׾TgRY4 wUӼ*ms1`ٶ=%Ϯ3mTM<阏b˗/>i;?ѿ{ % R nM2gy !h+zSۢ73J QM-ŃAW,I{y~|ÞGօM⹔25DG. U¬bauVo45{]&oϥWz{Ufg[ܷtݫ2uaciƶnw3nuތϗekݶ@o @ue͞H7LGleu[*==\u*ڮ NoQwzʖªi{ֳf[dt`ف]yV_o}߆Pf,rLagWdo>{Bd(G(Jyrf% nmm}{{?0_g~.iY~(O){u//n; ڳ_|;!LYU$ )vYkSV 8˳Tܪ2Yea9Tf XUR=ݫ_;B]SY㴰Y{ձtj}~٘ƨ>m\% u%MߧAau|ڳu>jۿqt調'`YO>G?mbo4aa9a94[yq8zOgϞ}! oZ1>מ>:Fg]Q1oӧ_ӭ[w9Ǟ<UХ~)+UL1 ~ң;\S$M>vz*g^ Z${~{qywq)&)6eeDh]Xxu\!ϲ}0`&c ,j<6zuLuwkڇe۶fysYNv;nǯ{12byJY^Kgayu(/U8ƾd# Ah4°8ò ppt;?'/^|BPs%;(FnWMml6VMa|kyebyiז/מtwsm P>Ɯn]7Dylv]wBW󙛺OK!΀(/_RUE G혾yϓs{9ujuYH-ua_w;'>jngۻ]^\&3;e3@&#Ylmp' `9h4FW6yHNn 7+Ng?۝/QE%(>,m`{mFTRp{~(}ח.LD6sڳi(+ANPzUst܆<6Anns]ЎGGy2->_mQs,n䫍+0.0g`lbع7n:\GOWìqZ iҽ1@JMb"K!D B$ K:|B4{Y9zM$M˜M+8QՕ KKT* /V6s/0Ju1 ϳgj=Ea# 6oiWI]Ng 1l4J}{G(8n c! ~rgQrCu  Q%жMj,qoowiF\5v3 04K?g_|/ʾ\5V^s5i4Qtg Fp[*a^ iUawpn},Q6PFV1bFIgl.4f` ^qh!Ã_iKH⟭{AAAdsh5Rʴwq|8Zcv{O/gYzR+adz?ӈ:Lq.sA޲C.+/@Ok!`\nlg(lHެrp}>nS]81= ߺCs˞k>)aƯL&onnj{WZ&qOmuEIU\c`^[j8{<99y6*.#Ĺ>J/   n8t`\(Ĺ99W@[k/ !z]?RB s <~8TBHoFA9.l݃n t ~w!j]ޜ]gp!\ 8Oq|x:,l{ꧻvRy%)lt'ce{Uw  k}1 Zy_}_0&Bv{;G^{}=mQb\C/9ce   5,]a R_X5qW"B(귢hu(NRo^8Q翹w_<a>~r,/GYIrC`N]OM   sqJD)jѷcs:qݭn߹`J$V1EG<à:>>~qyU R@W"6"AAAf\@WFR9u|zlu:WVWHa80sqqOvE:`on67VN7  xMOӄP]˪v7s:nu~ˎ ^kXnBcH$:::R¤87{]+}\}ѧuz   ^Ry*t/9X\y'=pnRuO qϸ5|RW]0(oZGk(ټuWQU4MLAAkuo*(CPL>:ZN8Mi  1 4=@9#` i s   . 藃AGDywvw>H3>v >{3w-~7(*ٚh%  `H%fiW>{τcZW;|s=}y}j;$   .˰H,VpNPxC@E)UŀFmB۪Y:AAA\$/}.q%1} 6%]{ tU ~G-siD &0'NAA1GcN(Ÿ}Zv}_7 t_)ܼ   $Я]ٖ:q&ŵ0MWf$   . WM}87anԕ8׷X qNAAq%@z)ԾMڮ.57'   >( Mm g#   .דYpAAAW דHAAA\C?/\ow;IENDB`PKx.Dasimpy-3.0.5/_static/plus.pngPNG  IHDR &q pHYs  tIME 1l9tEXtComment̖RIDATcz(BpipPc |IENDB`PKM0Dݾ'\\ simpy-3.0.5/_static/pygments.css.highlight .hll { background-color: #ffffcc } .highlight { background: #f0f0f0; } .highlight .c { color: #60a0b0; font-style: italic } /* Comment */ .highlight .err { border: 1px solid #FF0000 } /* Error */ .highlight .k { color: #007020; font-weight: bold } /* Keyword */ .highlight .o { color: #666666 } /* Operator */ .highlight .cm { color: #60a0b0; font-style: italic } /* Comment.Multiline */ .highlight .cp { color: #007020 } /* Comment.Preproc */ .highlight .c1 { color: #60a0b0; font-style: italic } /* Comment.Single */ .highlight .cs { color: #60a0b0; background-color: #fff0f0 } /* Comment.Special */ .highlight .gd { color: #A00000 } /* Generic.Deleted */ .highlight .ge { font-style: italic } /* Generic.Emph */ .highlight .gr { color: #FF0000 } /* Generic.Error */ .highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ .highlight .gi { color: #00A000 } /* Generic.Inserted */ .highlight .go { color: #888888 } /* Generic.Output */ .highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */ .highlight .gs { font-weight: bold } /* Generic.Strong */ .highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ .highlight .gt { color: #0044DD } /* Generic.Traceback */ .highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */ .highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */ .highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */ .highlight .kp { color: #007020 } /* Keyword.Pseudo */ .highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */ .highlight .kt { color: #902000 } /* Keyword.Type */ .highlight .m { color: #40a070 } /* Literal.Number */ .highlight .s { color: #4070a0 } /* Literal.String */ .highlight .na { color: #4070a0 } /* Name.Attribute */ .highlight .nb { color: #007020 } /* Name.Builtin */ .highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */ .highlight .no { color: #60add5 } /* Name.Constant */ .highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */ .highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */ .highlight .ne { color: #007020 } /* Name.Exception */ .highlight .nf { color: #06287e } /* Name.Function */ .highlight .nl { color: #002070; font-weight: bold } /* Name.Label */ .highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */ .highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #bb60d5 } /* Name.Variable */ .highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mf { color: #40a070 } /* Literal.Number.Float */ .highlight .mh { color: #40a070 } /* Literal.Number.Hex */ .highlight .mi { color: #40a070 } /* Literal.Number.Integer */ .highlight .mo { color: #40a070 } /* Literal.Number.Oct */ .highlight .sb { color: #4070a0 } /* Literal.String.Backtick */ .highlight .sc { color: #4070a0 } /* Literal.String.Char */ .highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */ .highlight .s2 { color: #4070a0 } /* Literal.String.Double */ .highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */ .highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */ .highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */ .highlight .sx { color: #c65d09 } /* Literal.String.Other */ .highlight .sr { color: #235388 } /* Literal.String.Regex */ .highlight .s1 { color: #4070a0 } /* Literal.String.Single */ .highlight .ss { color: #517918 } /* Literal.String.Symbol */ .highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */ .highlight .vc { color: #bb60d5 } /* Name.Variable.Class */ .highlight .vg { color: #bb60d5 } /* Name.Variable.Global */ .highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */ .highlight .il { color: #40a070 } /* Literal.Number.Integer.Long */PKx.DDUkksimpy-3.0.5/_static/up.pngPNG  IHDRasRGBbKGDC pHYs B(xtIME!.<̓EIDAT8͓NABP\EG{%<|xc  cr6@t;b$;3&)h1!﫳Hzz@=)p 3۵e2/ߴ ( %^ND^ }3H1DoǪISFұ?, G`{v^X[b]&HC3{:sO& ?,[eL#IENDB`PKFEDVR>>simpy-3.0.5/_static/rtd.css/* * rtd.css * ~~~~~~~~~~~~~~~ * * Sphinx stylesheet -- sphinxdoc theme. Originally created by * Armin Ronacher for Werkzeug. * * Customized for ReadTheDocs by Eric Pierce & Eric Holscher * * :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ /* RTD colors * light blue: #e8ecef * medium blue: #8ca1af * dark blue: #465158 * dark grey: #444444 * * white hover: #d1d9df; * medium blue hover: #697983; * green highlight: #8ecc4c * light blue (project bar): #e8ecef */ @import url("basic.css"); /* PAGE LAYOUT -------------------------------------------------------------- */ body { font: 100%/1.5 "ff-meta-web-pro-1","ff-meta-web-pro-2",Arial,"Helvetica Neue",sans-serif; text-align: center; color: black; background-color: #465158; padding: 0; margin: 0; } div.document { text-align: left; background-color: #e8ecef; } div.bodywrapper { background-color: #ffffff; border-left: 1px solid #ccc; border-bottom: 1px solid #ccc; margin: 0 0 0 16em; } div.body { margin: 0; padding: 0.5em 1.3em; min-width: 20em; } div.related { font-size: 1em; background-color: #465158; } div.documentwrapper { float: left; width: 100%; background-color: #e8ecef; } /* HEADINGS --------------------------------------------------------------- */ h1 { margin: 0; padding: 0.7em 0 0.3em 0; font-size: 1.5em; line-height: 1.15; color: #111; clear: both; } h2 { margin: 2em 0 0.2em 0; font-size: 1.35em; padding: 0; color: #465158; } h3 { margin: 1em 0 -0.3em 0; font-size: 1.2em; color: #6c818f; } div.body h1 a, div.body h2 a, div.body h3 a, div.body h4 a, div.body h5 a, div.body h6 a { color: black; } h1 a.anchor, h2 a.anchor, h3 a.anchor, h4 a.anchor, h5 a.anchor, h6 a.anchor { display: none; margin: 0 0 0 0.3em; padding: 0 0.2em 0 0.2em; color: #aaa !important; } h1:hover a.anchor, h2:hover a.anchor, h3:hover a.anchor, h4:hover a.anchor, h5:hover a.anchor, h6:hover a.anchor { display: inline; } h1 a.anchor:hover, h2 a.anchor:hover, h3 a.anchor:hover, h4 a.anchor:hover, h5 a.anchor:hover, h6 a.anchor:hover { color: #777; background-color: #eee; } /* LINKS ------------------------------------------------------------------ */ /* Normal links get a pseudo-underline */ a { color: #444; text-decoration: none; border-bottom: 1px solid #ccc; } /* Links in sidebar, TOC, index trees and tables have no underline */ .sphinxsidebar a, .toctree-wrapper a, .indextable a, #indices-and-tables a { color: #444; text-decoration: none; /* border-bottom: none; */ } /* Search box size */ div.sphinxsidebar #searchbox input[type="submit"] { width: 50px; } /* Most links get an underline-effect when hovered */ a:hover, div.toctree-wrapper a:hover, .indextable a:hover, #indices-and-tables a:hover { color: #111; text-decoration: none; border-bottom: 1px solid #111; } /* Footer links */ div.footer a { color: #86989B; text-decoration: none; border: none; } div.footer a:hover { color: #a6b8bb; text-decoration: underline; border: none; } /* Permalink anchor (subtle grey with a red hover) */ div.body a.headerlink { color: #ccc; font-size: 1em; margin-left: 6px; padding: 0 4px 0 4px; text-decoration: none; border: none; } div.body a.headerlink:hover { color: #c60f0f; border: none; } /* NAVIGATION BAR --------------------------------------------------------- */ div.related ul { height: 2.5em; } div.related ul li { margin: 0; padding: 0.65em 0; float: left; display: block; color: white; /* For the >> separators */ font-size: 0.8em; } div.related ul li.right { float: right; margin-right: 5px; color: transparent; /* Hide the | separators */ } /* "Breadcrumb" links in nav bar */ div.related ul li a { order: none; background-color: inherit; font-weight: bold; margin: 6px 0 6px 4px; line-height: 1.75em; color: #ffffff; padding: 0.4em 0.8em; border: none; border-radius: 3px; } /* previous / next / modules / index links look more like buttons */ div.related ul li.right a { margin: 0.375em 0; background-color: #697983; text-shadow: 0 1px rgba(0, 0, 0, 0.5); border-radius: 3px; -webkit-border-radius: 3px; -moz-border-radius: 3px; } /* All navbar links light up as buttons when hovered */ div.related ul li a:hover { background-color: #8ca1af; color: #ffffff; text-decoration: none; border-radius: 3px; -webkit-border-radius: 3px; -moz-border-radius: 3px; } /* Take extra precautions for tt within links */ a tt, div.related ul li a tt { background: inherit !important; color: inherit !important; } /* SIDEBAR ---------------------------------------------------------------- */ div.sphinxsidebarwrapper { padding: 0; } div.sphinxsidebar { margin: 0; margin-left: -100%; float: left; top: 3em; left: 0; padding: 0 1em; width: 14em; font-size: 1em; text-align: left; background-color: #e8ecef; } div.sphinxsidebar img { max-width: 12em; } div.sphinxsidebar h3, div.sphinxsidebar h4, div.sphinxsidebar p.logo { margin: 1.2em 0 0.3em 0; font-size: 1em; padding: 0; color: #222222; font-family: "ff-meta-web-pro-1", "ff-meta-web-pro-2", "Arial", "Helvetica Neue", sans-serif; } div.sphinxsidebar h3 a { color: #444444; } div.sphinxsidebar ul, div.sphinxsidebar p { margin-top: 0; padding-left: 0; line-height: 130%; background-color: #e8ecef; } /* No bullets for nested lists, but a little extra indentation */ div.sphinxsidebar ul ul { list-style-type: none; margin-left: 1.5em; padding: 0; } /* A little top/bottom padding to prevent adjacent links' borders * from overlapping each other */ div.sphinxsidebar ul li { padding: 1px 0; } /* A little left-padding to make these align with the ULs */ div.sphinxsidebar p.topless { padding-left: 0 0 0 1em; } /* Make these into hidden one-liners */ div.sphinxsidebar ul li, div.sphinxsidebar p.topless { white-space: nowrap; overflow: hidden; } /* ...which become visible when hovered */ div.sphinxsidebar ul li:hover, div.sphinxsidebar p.topless:hover { overflow: visible; } /* Search text box and "Go" button */ #searchbox { margin-top: 2em; margin-bottom: 1em; background: #ddd; padding: 0.5em; border-radius: 6px; -moz-border-radius: 6px; -webkit-border-radius: 6px; } #searchbox h3 { margin-top: 0; } /* Make search box and button abut and have a border */ input, div.sphinxsidebar input { border: 1px solid #999; float: left; } /* Search textbox */ input[type="text"] { margin: 0; padding: 0 3px; height: 20px; width: 144px; border-top-left-radius: 3px; border-bottom-left-radius: 3px; -moz-border-radius-topleft: 3px; -moz-border-radius-bottomleft: 3px; -webkit-border-top-left-radius: 3px; -webkit-border-bottom-left-radius: 3px; } /* Search button */ input[type="submit"] { margin: 0 0 0 -1px; /* -1px prevents a double-border with textbox */ height: 22px; color: #444; background-color: #e8ecef; padding: 1px 4px; font-weight: bold; border-top-right-radius: 3px; border-bottom-right-radius: 3px; -moz-border-radius-topright: 3px; -moz-border-radius-bottomright: 3px; -webkit-border-top-right-radius: 3px; -webkit-border-bottom-right-radius: 3px; } input[type="submit"]:hover { color: #ffffff; background-color: #8ecc4c; } div.sphinxsidebar p.searchtip { clear: both; padding: 0.5em 0 0 0; background: #ddd; color: #666; font-size: 0.9em; } /* Sidebar links are unusual */ div.sphinxsidebar li a, div.sphinxsidebar p a { background: #e8ecef; /* In case links overlap main content */ border-radius: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px; border: 1px solid transparent; /* To prevent things jumping around on hover */ padding: 0 5px 0 5px; } div.sphinxsidebar li a:hover, div.sphinxsidebar p a:hover { color: #111; text-decoration: none; border: 1px solid #888; } div.sphinxsidebar p.logo a { border: 0; } /* Tweak any link appearing in a heading */ div.sphinxsidebar h3 a { } /* OTHER STUFF ------------------------------------------------------------ */ cite, code, tt { font-family: 'Consolas', 'Deja Vu Sans Mono', 'Bitstream Vera Sans Mono', monospace; font-size: 0.95em; letter-spacing: 0.01em; } tt { background-color: #f2f2f2; color: #444; } tt.descname, tt.descclassname, tt.xref { border: 0; } hr { border: 1px solid #abc; margin: 2em; } pre, #_fontwidthtest { font-family: 'Consolas', 'Deja Vu Sans Mono', 'Bitstream Vera Sans Mono', monospace; margin: 1em 2em; font-size: 0.95em; letter-spacing: 0.015em; line-height: 120%; padding: 0.5em; border: 1px solid #ccc; background-color: #eee; border-radius: 6px; -moz-border-radius: 6px; -webkit-border-radius: 6px; } pre a { color: inherit; text-decoration: underline; } td.linenos pre { margin: 1em 0em; } td.code pre { margin: 1em 0em; } div.quotebar { background-color: #f8f8f8; max-width: 250px; float: right; padding: 2px 7px; border: 1px solid #ccc; } div.topic { background-color: #f8f8f8; } table { border-collapse: collapse; margin: 0 -0.5em 0 -0.5em; } table td, table th { padding: 0.2em 0.5em 0.2em 0.5em; } /* ADMONITIONS AND WARNINGS ------------------------------------------------- */ /* Shared by admonitions, warnings and sidebars */ div.admonition, div.warning, div.sidebar { font-size: 0.9em; margin: 2em; padding: 0; /* border-radius: 6px; -moz-border-radius: 6px; -webkit-border-radius: 6px; */ } div.admonition p, div.warning p, div.sidebar p { margin: 0.5em 1em 0.5em 1em; padding: 0; } div.admonition pre, div.warning pre, div.sidebar pre { margin: 0.4em 1em 0.4em 1em; } div.admonition p.admonition-title, div.warning p.admonition-title, div.sidebar p.sidebar-title { margin: 0; padding: 0.1em 0 0.1em 0.5em; color: white; font-weight: bold; font-size: 1.1em; text-shadow: 0 1px rgba(0, 0, 0, 0.5); } div.admonition ul, div.admonition ol, div.warning ul, div.warning ol, div.sidebar ul, div.sidebar ol { margin: 0.1em 0.5em 0.5em 3em; padding: 0; } /* Admonitions and sidebars only */ div.admonition, div.sidebar { border: 1px solid #609060; background-color: #e9ffe9; } div.admonition p.admonition-title, div.sidebar p.sidebar-title { background-color: #70A070; border-bottom: 1px solid #609060; } /* Warnings only */ div.warning { border: 1px solid #900000; background-color: #ffe9e9; } div.warning p.admonition-title { background-color: #b04040; border-bottom: 1px solid #900000; } /* Sidebars only */ div.sidebar { max-width: 30%; } div.versioninfo { margin: 1em 0 0 0; border: 1px solid #ccc; background-color: #DDEAF0; padding: 8px; line-height: 1.3em; font-size: 0.9em; } .viewcode-back { font-family: 'Lucida Grande', 'Lucida Sans Unicode', 'Geneva', 'Verdana', sans-serif; } div.viewcode-block:target { background-color: #f4debf; border-top: 1px solid #ac9; border-bottom: 1px solid #ac9; } dl { margin: 1em 0 2.5em 0; } dl dt { font-style: italic; } dl dd { color: rgb(68, 68, 68); font-size: 0.95em; } /* Highlight target when you click an internal link */ dt:target { background: #ffe080; } /* Don't highlight whole divs */ div.highlight { background: transparent; } /* But do highlight spans (so search results can be highlighted) */ span.highlight { background: #ffe080; } div.footer { background-color: #465158; color: #eeeeee; padding: 0 2em 2em 2em; clear: both; font-size: 0.8em; text-align: center; } p { margin: 0.8em 0 0.5em 0; } .section p img.math { margin: 0; } .section p img { margin: 1em 2em; } table.docutils td, table.docutils th { padding: 1px 8px 1px 5px; } /* MOBILE LAYOUT -------------------------------------------------------------- */ @media screen and (max-width: 600px) { h1, h2, h3, h4, h5 { position: relative; } ul { padding-left: 1.25em; } div.bodywrapper a.headerlink, #indices-and-tables h1 a { color: #e6e6e6; font-size: 80%; float: right; line-height: 1.8; position: absolute; right: -0.7em; visibility: inherit; } div.bodywrapper h1 a.headerlink, #indices-and-tables h1 a { line-height: 1.5; } pre { font-size: 0.7em; overflow: auto; word-wrap: break-word; white-space: pre-wrap; } div.related ul { height: 2.5em; padding: 0; text-align: left; } div.related ul li { clear: both; color: #465158; padding: 0.2em 0; } div.related ul li:last-child { border-bottom: 1px dotted #8ca1af; padding-bottom: 0.4em; margin-bottom: 1em; width: 100%; } div.related ul li a { color: #465158; padding-right: 0; } div.related ul li a:hover { background: inherit; color: inherit; } div.related ul li.right { clear: none; padding: 0.65em 0; margin-bottom: 0.5em; } div.related ul li.right a { color: #fff; padding-right: 0.8em; } div.related ul li.right a:hover { background-color: #8ca1af; } div.body { clear: both; min-width: 0; word-wrap: break-word; } div.bodywrapper { margin: 0 0 0 0; } div.sphinxsidebar { float: none; margin: 0; width: auto; } div.sphinxsidebar input[type="text"] { height: 2em; line-height: 2em; width: 70%; } div.sphinxsidebar input[type="submit"] { height: 2em; margin-left: 0.5em; width: 20%; } div.sphinxsidebar p.searchtip { background: inherit; margin-bottom: 1em; } div.sphinxsidebar ul li, div.sphinxsidebar p.topless { white-space: normal; } .bodywrapper img { display: block; margin-left: auto; margin-right: auto; max-width: 100%; } div.documentwrapper { float: none; } div.admonition, div.warning, pre, blockquote { margin-left: 0em; margin-right: 0em; } .body p img { margin: 0; } #searchbox { background: transparent; } .related:not(:first-child) li { display: none; } .related:not(:first-child) li.right { display: block; } div.footer { padding: 1em; } .rtd_doc_footer .rtd-badge { float: none; margin: 1em auto; position: static; } .rtd_doc_footer .rtd-badge.revsys-inline { margin-right: auto; margin-bottom: 2em; } table.indextable { display: block; width: auto; } .indextable tr { display: block; } .indextable td { display: block; padding: 0; width: auto !important; } .indextable td dt { margin: 1em 0; } ul.search { margin-left: 0.25em; } ul.search li div.context { font-size: 90%; line-height: 1.1; margin-bottom: 1; margin-left: 0; } } PKx.D;l/l/!simpy-3.0.5/_static/underscore.js// Underscore.js 1.3.1 // (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc. // Underscore is freely distributable under the MIT license. // Portions of Underscore are inspired or borrowed from Prototype, // Oliver Steele's Functional, and John Resig's Micro-Templating. // For all details and documentation: // http://documentcloud.github.com/underscore (function(){function q(a,c,d){if(a===c)return a!==0||1/a==1/c;if(a==null||c==null)return a===c;if(a._chain)a=a._wrapped;if(c._chain)c=c._wrapped;if(a.isEqual&&b.isFunction(a.isEqual))return a.isEqual(c);if(c.isEqual&&b.isFunction(c.isEqual))return c.isEqual(a);var e=l.call(a);if(e!=l.call(c))return false;switch(e){case "[object String]":return a==String(c);case "[object Number]":return a!=+a?c!=+c:a==0?1/a==1/c:a==+c;case "[object Date]":case "[object Boolean]":return+a==+c;case "[object RegExp]":return a.source== c.source&&a.global==c.global&&a.multiline==c.multiline&&a.ignoreCase==c.ignoreCase}if(typeof a!="object"||typeof c!="object")return false;for(var f=d.length;f--;)if(d[f]==a)return true;d.push(a);var f=0,g=true;if(e=="[object Array]"){if(f=a.length,g=f==c.length)for(;f--;)if(!(g=f in a==f in c&&q(a[f],c[f],d)))break}else{if("constructor"in a!="constructor"in c||a.constructor!=c.constructor)return false;for(var h in a)if(b.has(a,h)&&(f++,!(g=b.has(c,h)&&q(a[h],c[h],d))))break;if(g){for(h in c)if(b.has(c, h)&&!f--)break;g=!f}}d.pop();return g}var r=this,G=r._,n={},k=Array.prototype,o=Object.prototype,i=k.slice,H=k.unshift,l=o.toString,I=o.hasOwnProperty,w=k.forEach,x=k.map,y=k.reduce,z=k.reduceRight,A=k.filter,B=k.every,C=k.some,p=k.indexOf,D=k.lastIndexOf,o=Array.isArray,J=Object.keys,s=Function.prototype.bind,b=function(a){return new m(a)};if(typeof exports!=="undefined"){if(typeof module!=="undefined"&&module.exports)exports=module.exports=b;exports._=b}else r._=b;b.VERSION="1.3.1";var j=b.each= b.forEach=function(a,c,d){if(a!=null)if(w&&a.forEach===w)a.forEach(c,d);else if(a.length===+a.length)for(var e=0,f=a.length;e2;a== null&&(a=[]);if(y&&a.reduce===y)return e&&(c=b.bind(c,e)),f?a.reduce(c,d):a.reduce(c);j(a,function(a,b,i){f?d=c.call(e,d,a,b,i):(d=a,f=true)});if(!f)throw new TypeError("Reduce of empty array with no initial value");return d};b.reduceRight=b.foldr=function(a,c,d,e){var f=arguments.length>2;a==null&&(a=[]);if(z&&a.reduceRight===z)return e&&(c=b.bind(c,e)),f?a.reduceRight(c,d):a.reduceRight(c);var g=b.toArray(a).reverse();e&&!f&&(c=b.bind(c,e));return f?b.reduce(g,c,d,e):b.reduce(g,c)};b.find=b.detect= function(a,c,b){var e;E(a,function(a,g,h){if(c.call(b,a,g,h))return e=a,true});return e};b.filter=b.select=function(a,c,b){var e=[];if(a==null)return e;if(A&&a.filter===A)return a.filter(c,b);j(a,function(a,g,h){c.call(b,a,g,h)&&(e[e.length]=a)});return e};b.reject=function(a,c,b){var e=[];if(a==null)return e;j(a,function(a,g,h){c.call(b,a,g,h)||(e[e.length]=a)});return e};b.every=b.all=function(a,c,b){var e=true;if(a==null)return e;if(B&&a.every===B)return a.every(c,b);j(a,function(a,g,h){if(!(e= e&&c.call(b,a,g,h)))return n});return e};var E=b.some=b.any=function(a,c,d){c||(c=b.identity);var e=false;if(a==null)return e;if(C&&a.some===C)return a.some(c,d);j(a,function(a,b,h){if(e||(e=c.call(d,a,b,h)))return n});return!!e};b.include=b.contains=function(a,c){var b=false;if(a==null)return b;return p&&a.indexOf===p?a.indexOf(c)!=-1:b=E(a,function(a){return a===c})};b.invoke=function(a,c){var d=i.call(arguments,2);return b.map(a,function(a){return(b.isFunction(c)?c||a:a[c]).apply(a,d)})};b.pluck= function(a,c){return b.map(a,function(a){return a[c]})};b.max=function(a,c,d){if(!c&&b.isArray(a))return Math.max.apply(Math,a);if(!c&&b.isEmpty(a))return-Infinity;var e={computed:-Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b>=e.computed&&(e={value:a,computed:b})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);if(!c&&b.isEmpty(a))return Infinity;var e={computed:Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;bd?1:0}),"value")};b.groupBy=function(a,c){var d={},e=b.isFunction(c)?c:function(a){return a[c]};j(a,function(a,b){var c=e(a,b);(d[c]||(d[c]=[])).push(a)});return d};b.sortedIndex=function(a, c,d){d||(d=b.identity);for(var e=0,f=a.length;e>1;d(a[g])=0})})};b.difference=function(a){var c=b.flatten(i.call(arguments,1));return b.filter(a,function(a){return!b.include(c,a)})};b.zip=function(){for(var a=i.call(arguments),c=b.max(b.pluck(a,"length")),d=Array(c),e=0;e=0;d--)b=[a[d].apply(this,b)];return b[0]}}; b.after=function(a,b){return a<=0?b():function(){if(--a<1)return b.apply(this,arguments)}};b.keys=J||function(a){if(a!==Object(a))throw new TypeError("Invalid object");var c=[],d;for(d in a)b.has(a,d)&&(c[c.length]=d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=b.methods=function(a){var c=[],d;for(d in a)b.isFunction(a[d])&&c.push(d);return c.sort()};b.extend=function(a){j(i.call(arguments,1),function(b){for(var d in b)a[d]=b[d]});return a};b.defaults=function(a){j(i.call(arguments, 1),function(b){for(var d in b)a[d]==null&&(a[d]=b[d])});return a};b.clone=function(a){return!b.isObject(a)?a:b.isArray(a)?a.slice():b.extend({},a)};b.tap=function(a,b){b(a);return a};b.isEqual=function(a,b){return q(a,b,[])};b.isEmpty=function(a){if(b.isArray(a)||b.isString(a))return a.length===0;for(var c in a)if(b.has(a,c))return false;return true};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=o||function(a){return l.call(a)=="[object Array]"};b.isObject=function(a){return a===Object(a)}; b.isArguments=function(a){return l.call(a)=="[object Arguments]"};if(!b.isArguments(arguments))b.isArguments=function(a){return!(!a||!b.has(a,"callee"))};b.isFunction=function(a){return l.call(a)=="[object Function]"};b.isString=function(a){return l.call(a)=="[object String]"};b.isNumber=function(a){return l.call(a)=="[object Number]"};b.isNaN=function(a){return a!==a};b.isBoolean=function(a){return a===true||a===false||l.call(a)=="[object Boolean]"};b.isDate=function(a){return l.call(a)=="[object Date]"}; b.isRegExp=function(a){return l.call(a)=="[object RegExp]"};b.isNull=function(a){return a===null};b.isUndefined=function(a){return a===void 0};b.has=function(a,b){return I.call(a,b)};b.noConflict=function(){r._=G;return this};b.identity=function(a){return a};b.times=function(a,b,d){for(var e=0;e/g,">").replace(/"/g,""").replace(/'/g,"'").replace(/\//g,"/")};b.mixin=function(a){j(b.functions(a), function(c){K(c,b[c]=a[c])})};var L=0;b.uniqueId=function(a){var b=L++;return a?a+b:b};b.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var t=/.^/,u=function(a){return a.replace(/\\\\/g,"\\").replace(/\\'/g,"'")};b.template=function(a,c){var d=b.templateSettings,d="var __p=[],print=function(){__p.push.apply(__p,arguments);};with(obj||{}){__p.push('"+a.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(d.escape||t,function(a,b){return"',_.escape("+ u(b)+"),'"}).replace(d.interpolate||t,function(a,b){return"',"+u(b)+",'"}).replace(d.evaluate||t,function(a,b){return"');"+u(b).replace(/[\r\n\t]/g," ")+";__p.push('"}).replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace(/\t/g,"\\t")+"');}return __p.join('');",e=new Function("obj","_",d);return c?e(c,b):function(a){return e.call(this,a,b)}};b.chain=function(a){return b(a).chain()};var m=function(a){this._wrapped=a};b.prototype=m.prototype;var v=function(a,c){return c?b(a).chain():a},K=function(a,c){m.prototype[a]= function(){var a=i.call(arguments);H.call(a,this._wrapped);return v(c.apply(b,a),this._chain)}};b.mixin(b);j("pop,push,reverse,shift,sort,splice,unshift".split(","),function(a){var b=k[a];m.prototype[a]=function(){var d=this._wrapped;b.apply(d,arguments);var e=d.length;(a=="shift"||a=="splice")&&e===0&&delete d[0];return v(d,this._chain)}});j(["concat","join","slice"],function(a){var b=k[a];m.prototype[a]=function(){return v(b.apply(this._wrapped,arguments),this._chain)}});m.prototype.chain=function(){this._chain= true;return this};m.prototype.value=function(){return this._wrapped}}).call(this); PKh.DDނL0L0"simpy-3.0.5/_static/simpy-logo.svg image/svg+xml im Py PKx.D<>#simpy-3.0.5/_static/ajax-loader.gifGIF89aU|NU|l!Created with ajaxload.info! ! NETSCAPE2.0,30Ikc:Nf E1º.`q-[9ݦ9 JkH! ,4N!  DqBQT`1 `LE[|ua C%$*! ,62#+AȐ̔V/cNIBap ̳ƨ+Y2d! ,3b%+2V_ ! 1DaFbR]=08,Ȥr9L! ,2r'+JdL &v`\bThYB)@<&,ȤR! ,3 9tڞ0!.BW1  sa50 m)J! ,2 ٜU]qp`a4AF0` @1Α! ,20IeBԜ) q10ʰPaVڥ ub[;PKx.DPu u simpy-3.0.5/_static/comment.pngPNG  IHDRa OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-bKGD pHYs  tIME 1;VIDAT8ukU?sg4h`G1 RQܸp%Bn"bЍXJ .4V iZ##T;m!4bP~7r>ιbwc;m;oӍAΆ ζZ^/|s{;yR=9(rtVoG1w#_ө{*E&!(LVuoᲵ‘D PG4 :&~*ݳreu: S-,U^E&JY[P!RB ŖޞʖR@_ȐdBfNvHf"2T]R j'B1ddAak/DIJD D2H&L`&L $Ex,6|~_\P $MH`I=@Z||ttvgcЕWTZ'3rje"ܵx9W> mb|byfFRx{w%DZC$wdցHmWnta(M<~;9]C/_;Տ#}o`zSڷ_>:;x컓?yݩ|}~wam-/7=0S5RP"*֯ IENDB`PKx.Dhkksimpy-3.0.5/_static/down.pngPNG  IHDRasRGBbKGDC pHYs B(xtIME"U{IDAT8ҡNCAJ, ++@4>/U^,~T&3M^^^PM6ٹs*RJa)eG*W<"F Fg78G>q OIp:sAj5GنyD^+yU:p_%G@D|aOs(yM,"msx:.b@D|`Vٟ۲иeKſ/G!IENDB`PKx.D+0simpy-3.0.5/_static/file.pngPNG  IHDRabKGD pHYs  tIME  )TIDAT8˭J@Ir('[ "&xYZ X0!i|_@tD] #xjv YNaEi(əy@D&`6PZk$)5%"z.NA#Aba`Vs_3c,2mj [klvy|!Iմy;v "߮a?A7`c^nk?Bg}TЙD# "RD1yER*6MJ3K_Ut8F~IENDB`PKh.Dg"(simpy-3.0.5/_static/simpy-logo-small.pngPNG  IHDRks AiCCPICC ProfileH wTSϽ7" %z ;HQIP&vDF)VdTG"cE b PQDE݌k 5ޚYg}׺PtX4X\XffGD=HƳ.d,P&s"7C$ E6<~&S2)212 "įl+ɘ&Y4Pޚ%ᣌ\%g|eTI(L0_&l2E9r9hxgIbטifSb1+MxL 0oE%YmhYh~S=zU&ϞAYl/$ZUm@O ޜl^ ' lsk.+7oʿ9V;?#I3eE妧KD d9i,UQ h A1vjpԁzN6p\W p G@ K0ށiABZyCAP8C@&*CP=#t] 4}a ٰ;GDxJ>,_“@FXDBX$!k"EHqaYbVabJ0՘cVL6f3bձX'?v 6-V``[a;p~\2n5׌ &x*sb|! ߏƿ' Zk! $l$T4QOt"y\b)AI&NI$R$)TIj"]&=&!:dGrY@^O$ _%?P(&OJEBN9J@y@yCR nXZOD}J}/G3ɭk{%Oחw_.'_!JQ@SVF=IEbbbb5Q%O@%!BӥyҸM:e0G7ӓ e%e[(R0`3R46i^)*n*|"fLUo՝mO0j&jajj.ϧwϝ_4갺zj=U45nɚ4ǴhZ ZZ^0Tf%9->ݫ=cXgN].[7A\SwBOK/X/_Q>QG[ `Aaac#*Z;8cq>[&IIMST`ϴ kh&45ǢYYF֠9<|y+ =X_,,S-,Y)YXmĚk]c}džjcΦ浭-v};]N"&1=xtv(}'{'IߝY) Σ -rqr.d._xpUەZM׍vm=+KGǔ ^WWbj>:>>>v}/avO8 FV> 2 u/_$\BCv< 5 ]s.,4&yUx~xw-bEDCĻHGKwFGEGME{EEKX,YFZ ={$vrK .3\rϮ_Yq*©L_wד+]eD]cIIIOAu_䩔)3ѩiB%a+]3='/40CiU@ёL(sYfLH$%Y jgGeQn~5f5wugv5k֮\۹Nw]m mHFˍenQQ`hBBQ-[lllfjۗ"^bO%ܒY}WwvwXbY^Ю]WVa[q`id2JjGէ{׿m>PkAma꺿g_DHGGu;776ƱqoC{P38!9 ҝˁ^r۽Ug9];}}_~imp㭎}]/}.{^=}^?z8hc' O*?f`ϳgC/Oϩ+FFGGόzˌㅿ)ѫ~wgbk?Jި9mdwi獵ޫ?cǑOO?w| x&mf2:Y~ pHYs  @IDATx]Wu.9Oow[wl| Ha#",V:m)ORfYWN:[B.͢xiN0?O>O DF{-+ {*)jrMӧJt- -D( $M:R362ޙ;Uڥz_ H/mF,!)BsRpA!#0#vshamnfAH!3Ś CS:bHAX>3^|ŏ ȦicLo3f& sC2=<09b6#̙,]+Q?uee~  ,Y ! #E.N&38P&!H*itt&NfӪ/ӐHfM5>xhW eD)6DٽtkYӨWM>UAHDP`"F /b@; t rp8R()#` ƥ`I&GV@O%ճݙm;_J| xj::83KXJvY4aAI29$KޢlP;S uZV'fN)Vh@DiX1AHXm|믻~ ^ ɫ?!!}SyOBpgU?Ւgy4 80-ɸ ԘC&Gp00{lk]͓HnH%Ba#̏jo_z:oUJIFP)SyG7U@hm*/Իn /} 럌iс~pg'mIaGP : # =us vz^L|aPq7{T? h;ڴZpO>C X=7:LY5V槾qM5jϭEp Ypyko/nH# DDt8 4G3EhL˃&wء1|EX>| 8(<qE?fп w3aA]m&KH ZG^o+ tø-ƒ#Q824-v`C47 =^!DvX>:x~'u")_>/ EteY 9*eߗږ@g吶aD{TkNa\cN ]3p O[ 2`B1z8e/<]fa{`IF!$Yڰ¡#wz=jl=ZNNg ey)ۿj}xQi>g\ONcq=豢b㊲/I7Y95ژO>) X-%lO QxcK5q 2mEIo`m.a܀ lyI<*r؞n]61Yee!r߀Ӊ@0yz'>Na E H%n&aGʵk7oZO>i LO*E\\I `‚-{6ni3"`E8xCJ@d383㑬3k8swg} 8(0U$ZGLD^Q;%e|2GN]!ӣXG`Axvt:Z #8ƃ`Zz7Gi^;\l7oa8mP%\_ .+|,U?TVbI$_)pQ`JFqc`Mq>0p:hptn;G[ E'/vx7kq=fE'K~p>{qbW_ׇBZоʋL#U'3D0SD ZG0}$ ǵfnևa! ma{XzHcX8 J\KŕH7Hк8dn|'=+)+> bjk/ ,ds٥ŀ8GQ h%n;V51SSl] i| L أTͼTRd&A;AD"Zs"56 ɭ=3'M^llt⑓)S-@A DlMEq}(8+Or8vv\G ^, 0P^Юwqz&"7F3ÚB'VX\atfabPs.ki\=Rd,Dpg)SEZ-*{'ck`R--aLq/i;alPK.Cp[!4p:X=@o?ܞd:;Nd1`A/Pn܀26uK1lGCj H\<%̐|)wT𡾮%+>| (H!u^2qf,)L⺍bPCa?Ӳ ]m3xBv;ouN3E'y|ZQx*tƼ IR^ 5 9!r'"xg:}q'e:| )pNQ Y&an%X`y7%|+ I l豋۸vAxtw= />==QoGяdL1ƃ氛JK&dJ*xx=7@jwm]+qDr0^ rb儀ŵˍ^QO`'[[K.|)pS@:6ZG]EDj%9"' #ߛ7L񆔈9A$! F nОkpm^JgS[ fq ׉d$^U9RZ5DB&`[*1TW47On{ڛBW,]Ҙh"H0䌓{frH^07a[!ݝߗ܏&[^ͥZ5wK떴R1Q1 Gkǹ.Uw{+)š<,(4/Cxv7P vY&[ Vpymԙc{U7 |C)lUb[]R;SZOժW?@p9BW<.S[G;p ބfӊ$Z;߿3SO_[J>W>6ޫ {TOw׋ӷʀz;9FCf9@x_z.Dx%ՌPJbg# Tա= v*-CK—s1 qӏb:geomSH7g:rj+PCZ "7n NcKq#2RLݟgØ FYA}?X-^{Ld<ӥ:NJ>u(Urkʄ0ۄK3Ymz0PHח:߭a:a] gȵ{BnLmxv$-<ٸ&f`% >蟻\utqxjyȪ.&bъʚhL(@Z #qZt ꭁH@ g;Sua{4:BR#Wc,_GLW"wVlf7]jC?|ygMH  m%g?ZʾTQ /S[ :Xy)ײfa5ˍd@(^X bMvd2Ӻ F#6b1u2s4imPV<"U<]-YJR԰<5T# .1fT0*cF)f&dSFWGٱwG/RXYsU=28yBmg k3/M~k.:.o4_r{(j'4MVEDK.5DGl_?܋6~Uqzl7z(ٳSVD =[,xڵA4f*8)rDax1.kz>EU Κb: I6ġf6LoŊ"S75^DD9wgW}*ܤ <8K?"M@+[Ix_j*;-T Kj+(0=nBEp*XZ0.(*QDO7#۶M׫b;ȁSL2TKz 2u].덊#6\VH`{vͤd2muf[RQ ?f=$;UhF+&!4OcCe@)4D{J@pែ"SMIf#w5 C1> y4& 4==5R{~W_K|Ze`4۔ R񂘒 IQ8m%v2tkÐv.0[JR*M8@e=s N>I(ǧE␱k ?YO8vB1)6Le:΍;>z0 ք<2p {"u3FnNkg8~~n LZ۹? @46Cpgm4G OWz) 88(x4#(eb-O׿nxlGz򺷸p !Ux gQф;unNߚ'zƶO#%"* n <=GKt;WS୧F缛}ӼڸŢwoE wo}JP|5TC %IJX4x q~9-Jg/^`xl;+x<{{i<3lwr"YD|!25BpZ;;+*q⏸#N8]'TFWߏ s{8+> 㭎g1 hN(tϧC"OgMe-@ Ye;7]:z+lp^!N/a0\x}g+µ*j`c5>&DI-tF$B*Z͙[?Yt56lN2L P^FeVJ_%:z^54 8Am CD)G`7iLUTw|/7BNRx%1X_oLcOR@3s:N{ؠ)6ש7+uuB~KNe@R_Kh G3h~7Gplz(`LM7۰e>|AP} Kv tYZ''.9uJ$sӼ3i"RaĐ# S)GnF?V`#,ō\ҿ[qAx7R[1"aO7x"?unAsmZf|I^g;RT٢()D'@Pb95B9b-*M~#nNHvGqB*L*V^"?WKcmڤ3^/LX)ࡀӮmoVI^{Lt$sU*ds__GWinH\"%fEsgRl$2^n0hwM@@r O.+E?;y2yߍ"M:T:Dg|v|S෕lDҳbx;vpF!YiO5'6 zg2Y2P!n 0#eǯ@ҙ.pX]Vm|~|W}O>va]dz+:9_:8ONi{N,Do.kBcOsCan%1iDk/o[> k!y@Xҧ> _$\1vTW` HX!'q?1&3 #[-\}[3߻\օJ:W斍B Hscn-wk-!ԕ( 9P/}׆^MG!8ou^q@tZ53ׂؐźgUVD/nu(5Tx-9CaY8t.[ÅkY=pT EO=gq䓛6%MʬV̴Q qGq5yhH_O53xv V-ăkQ/ iexSn؞ ONf i^BNb‘G@L=,\4M=?bGćTҀeò{&:N 9AlhST:|:`H+ł{u7D_vu/^^G^ˮsT2kʠbY+o[ mnC5 q%2̎_Wc{/C͚W 0sޒಙ|ͳ(zb;TϪODq{,FӥB#N@\0;#-y<%=Hv&faaDǓ&&_ia[J?zq_OܗŦM {`A^۳gҲZٓLݫZZZWgmzjlugaqϒy\871 y y8yj7Qu;p",DUžBwZ4F[gQA5P]]<3bF r=VxBs?k3[G$ے{VaZ쌱jN.ę]U#"9#7Xb{2.SQ%!5sUvW4ci<uc<\yhptn;-y"ˍbعG Cx;s}_;kMvFwz3u0*03YdP#)7bvm:Pz+:|F)zn+: -[2X<Qٸq755ql'X quqUƵ7Zo;y(D/OǙĮ*^܆єSb5/+5,natȓt79o95 ̔B x:5Fiw՝CWW(}OʮgQR:>C_> FpzU}U5=E?6c!(d7b{anuqXy¢v++[;8qn}gk߸qu,okݢ7}9J`vO4B&Bڂ'MVnݺP,VE@WT6wZjƋhI=T#Ok,g;++@n)zkG +մWEBgܖCr$&1Î!R o?kQ4%35|w~0,7CђP0e ^G[¦3=Mg=jTbϾxa9%ɐ1 ϲ#_VU/ʆj*! l=SY-e0LAKœTi-£D_5Xnݧg0*i_Z:~usߑ?XvO>N#q 1 4s]70z hnMu0q't-=Oa$p|`vVwcQWy3fM׃yu}&p/CPZ t[d0ogF3 `ơf3֮k43=?~"h2p`ar߰lE0^0KЧA/pv ?,YH#v^ػ͞qڼ\f2GΎO=[)T D<0 B†r ]h‹B]7TC5,8YFH+lvZIhHg2o$}MͯG@7 p4[0Ǒ TG <7ҟ&vx:YT!Wr9 C7Jr9@hpc̷^rdAuU|CתblK:kY,k|˲iuiwLfk"8$ٍzjfmo[ù3tN\\`Qx،W> n*䥔гQ䁼_G4Yl##0Is>dl&ۊĎdV_uj*m=k֨&xoXҲ cw8A K;rmp$>]PS]8n T6% ^tG?]?g-[ 47E w._veEŕP4zX[[10(#h#@`e],{rm5F2eT&Xb3]$Ӹse0#sLq-[6cҕKbEkpmi-FU„;`?`"kayAZA$OK49]+nOjm{£e2R(k/d9jb7wꆾ$ 2_BWB_,ۙ ܈RGVU/>e0G+t$-))k\xKx#ǀ֣swLHȠΎ"Ǝ^HJ^xckWrkk6.~ ]kDA^赳p@PYb,Cʄŀ0cy4\eOd.QQ,_ ƢѶ~l_> sݍ[[UUuS8~?rN%Ӄ4a1,@`X8‘0[W]upE?ڷ{7mt`]] 2e=Vƹ=J]yd$dV)Q$?ʃ;|b£E~WAsA.$,w’Hy=!L$=.:ͩݘ: `ꌝ^Z\+6 .W; Hc&84'~l~*W=S%@#uEվdm{$T%ұBegɶn7<6<2C7ÍjDŽB3>enYU:@w?`Dckjk*+3(3p@XSA~C!LCNPY J.p]99ILi+t2Fż tmdhE(ab'===0#8]yfN~00W Y4;WD`d8Rf!4I\^KnxB4UBzn߻<>Gn G"h\gOB5/&fk4"*cx 낋x%rXۏGGnr`XdǥLFxI lAa݉l @Ht2a- C1;Q ! ־[Fޗ6+p!ve~A'f#<ǽح/ 3SS`c%` ]ʭz'-bh%&ZNw&\u;OՑEzՙYk# "(,YT.K 1!Zx' ۊnçD [:&ݨ;n03lrZPӂY@q'2?x"Nd2A/6ख़LSƢ1N8>FbSB:娃qiGy[C 7^xAWTE7A&d!ji*4O:GH~& aT+Mf"3!RJXwQ;M,ϘhVɕ ԁOk>#Y71q)(C BH*7%tPn8w W:h:"x.Ydw+ D6lHut9 ȳ~á W;yi0kjpSPFz8¶_t=X Y?O]aeKV7Ϙ?)QH]26oVKK+*Ľ;~ݮL{9-)-[ a90]v@]76I@n"8F "gm WXXfώ#CY/ :1: [d,&i~(OnGy~,1%CL@P<_ϓ!c4'ѢeV :uYh(PIKd)[#7va "oIxbLA/ΡbqC5F )B`Z_V^. lזz"cYjQ[es7VܱG浻#}Ͳm9wpJ nCϟidx IK0 f\FkAt[kpc\`IN)Μ UUNwu{?NM">D#ד 3-_BBNHN/i+yh5o$oCutW]]Ҁ*uAi`HU ulJuQs+5i-{-h; B#] f ޗ(gzj`șr0f~tuͪWvtXa& >hvQؠ ium6 Z8| ̓Aoy<Ӹ,phpYɧ8T敗قbq̓yVPB2Xe|Ч ?Žr. ')@h&ETIzޭ?cmm}՚5 <]Ý\Bc+Q"z' q<Š`L_X) K7LXf 0V޲na;p5^B!;WAHBy)`1֘S)>c&G!yLwzfXhSlhld>ZkKyjrAj_ t5O*15p2ud+ bjI/p)BpWOw7 鉎Bso)^5`Ďxtb3oG!@:I<$'Ɣs mk MIa` V:zP5,Xv~{&S LnV܂ Stb7:Pp[>@@wK@ van-"9qݘGl!̞x?񃻙5qjǽ$P{,MLeT%4±Y&&1it#y#<)L( TUV4 qƂ=ee5?B\^u`Uyeč= 'd|Dls>sBoܺZ9MF!<7Hw+Ɂxk+ot`; oȹP{pv^!@0!oUWOnF%- BE$.>˚"SV]?' WsIFOjfi+DqLTͧO=p`;Oؑ}Wq؂7VϚ\}G$U 8"Ř Gxu[XtjՃ.^ 78 1'Eڀ۶>PTTtf`#>L1Iib>dX<|s0)䛆B-Qe|&nQ*;8gKIr@aw$ N{6i5U%edQ(E-JqZ KRH)%$&/?t&t,L k[E@($ĵSntRyd Ϋ"} o by؊F|gkߔCfQ[)@2$sR pkBu&PP'~H.g`60g ;xhX Hks;3\/`rC'm㠻 ^pa|bW֋,Ǯ)qM9>>.($pJb6f%b/h&FԮrj?bm]K8j;uZ/Wj:ylx?<;cNd+f,[ST[qg: -4W'1ڈ%0dң0L4Jc)]ۈfZC{4X!cÙv|削ӛ!<3kcQx8ډ8& (WzvSa ~{zZ;;Ѡw&8ƍt6WtzIYټX,6!#܉ȬHHAwu ߅K$<àh4VgΏb|LJpX72/7Mū3gL8P}d36q0^!k;pN!ڳ`ȨF,!<8XsOVEа}Nɚ,S_ <}/VmRghBQQ(n4%vZWx[GeM>jfcq;򀧵q +Gwy*d5S{_K< 0jfJޜmc\ ^2q 6toJsU6Ft'GN8f\7cEWWVUŊs* W J,:N!-cЌof;ֿ-2#7m}Mr!Jpɻ. F8""dFP&fc#3k;w< 0H=%*6$Q%f\|Ν;X wMY_zp/=}ңG)Y*/SoxE3g͹*6Ȗ`+( n^45+ѝ"fqEf7pV53x-n)uZU'ZW^Ʈ(" ^Ԡ2,7| Ij{_?IqlX!D)'q3m'8tE+eE!Q&a)8Yw{qźbvXC=rc8 eUhuZ˩Գ~(k/#f\ ,0cRrTΚ-6}N"n]tk.6mXl^8T;4(McCl,n[[ 5)wIJKfl3g.l9u(ф +>w! Kyxd7$XṞ0|E`ݻhfCJb涊_x'Nw.6$Tݔ1m 4NA8Q휻paGG$57Wn=Unۿlkݎ)R`2&媀ãӟ쾥&< 2\À|ukӭ&.BC'ݣ י`גϪ#g:sJ-xOHmk.S]'<3pyŊIke  ܑUcdF!C6]hrS }Aۘ;{\OVX A8%.'TwJtww`̼eeZB74t/sn_=oڒa<@yj, (W e5; Y/pl-c[Tgӏ:x7f-}bm[!3.+^ZQm?Ow4 ,[X1x͘U=t#[TP`l5 J bJSw0Ћ4su0MLm}wa <nU;ǶދO,^ts,mCnuw|}"Bw^5X }.Unۅ`{"-qUr\g=3^:m::qt֬ʃsV}vf1C",vRfu,٢k?un sl{=*a0NB%];1$)Ow!MA Bg^>YiRs++9Gzďfv(;::=rfv믽{'fxЪ91W]ډcWWWi]z^yɞWON0OL6BM/Z49&ƢG<$>,ng'ayN=d_v 0OV!OѷݑmW&6 !Q*܊t=.E5d_ _ʜO:TWـZ:m.#gdIKa†~xuufSRRcߞm:z/Vbr8)m O FlyrgPmED:;:L\`AGOSӤ? WDʀmp&{apaRK8T,OOx ⓶_<; tBoWee1ާWGZZpbњ1)g+tjLd#ĺ(//-mge>j0(DbHCiixƸ*[2{6䵫83|f~շJ>ܠ8p0U'Bh :wX#O|f Kou"墽3>QTvJa0 (.GwP1Z~QG[5UQ%k̈́b&ߞ9 v_{'KT.IMjAP` }(i`ԩ~=ïƒǏ9_h!<* ̂i;mf|;@rۢ8( =~ζ^ٿ;P5CXY]ӂ(PX-˥_Y%ι|ʈ8jb Į©a"~Hfo&߮"A?ЎKB0]5cFv<2v kc4-fsb3Ɓ+@.C.ZBRm}qΠOx*v|Cs@I2XP爴 SX'mq޸V0`Pz1C2s^>00p®[#qIaعj'ܬێX_33{:x\d %Y!~ꮞڟz ̼+f/^);sVQs4d9UG!v![) Joj5::"vx#.JcarڪZA hul(N#1 +*[xƍ=[Lr yPA#I$h2Nl"5񇛜F~-3F),$42j`|| |9f$MBpc U.Gln*3<y0` nc]/lKlm2 dӒոA~YܒM%n7П͜hɞ>ِnڿ3݄h܎ mKc$^[W=3lmC4IYMX-E4P$? D`Wؐa&Qΐ3CLwOkUW׾νիGCNW9sʗtvʤRu{*Ir#{Zs p`Ҝi4u W~ug׮uH 9*1=wP(k#×~{!Ϝyf d:~f 9΄?d8c uwTaV?|j򷟔U WZ(ԯ`/M9ƫ9uTU1h˘ĝ%ҨXQE#;>^jHJDheaJY}zfa IqwdžTdV_?;ޫӏQTl`W8kc<'kzJB˳ZneƙS\ŋ]R[81{$uCYє g(ڭ~u~~ ϐmd^މ|Q~8=mgqk@|[z=O>Q,6vƠB@0t"o/cԋ2b9DF3/b{MnOD%\"ȗ$'Jt=3Ews-SHn~%VY=M+g:hYzzyQ!^lAb}QǭQZR*dW¥߳KFrߐ.YG>3q(xw46+N?ߎMbTQn ny|#O~&!-D"qF(NԾp遏OwRo\zF'qq4*{lsдQ?*_5O }Cr;Vjڮ"ЪH8cf78NaQSyl] Cxڱ_T0/za '"H>XT R?w˫~pk>^~I*ߑsN#uϢ%BXʓ1jCkg0+5՚}# 5ٚ]yZXϤ+/Uop1veoϾcg=C'Sb`K Ԑ=xRY @ݍ[9'g$ha<?8=rJW*ՙB!s{pϧW2gd+132KC‹ Ak%9zp  Gw"aéq` OlCo뀑Si0P*OKt_xO , l<` E#DD-b'-Z:$r q ӐL `RۨQru΋#I/LXQrEQ4*Jgqiwgm?_w߻/ Sg?X[A+u:s_ީik: o=cOHzQT !26@Smèfl`NPX^ P_G~^bha^88^۸랻Pl`;_W@ 6@8R`3#@g+4]&Ġ8Hde|-`*Z G^~70NX>|%Z__ r J(YvZyɦy!aC= [ P1& .[:CI$b^xz%c &MX %_fJ쀻x{?HG1]Zd@@\}zڷWේ='(EiĀ~ᩧ"+_?^@/+*d3w)?Ehi&[ (Db7eQ݂zT.N:FP<[vS+e2@p QM[Ъ'zūiM_~[ffgX*Ycj$$Q{7C]<:n2^*Hˣ ]; &TUTz*yO;'vѳcG,m'YPB×UzJ]v:S ʑŶk>" y48u'g?Pz&'//$^&ùgGI$K^^eY $Ũ9acOٶ O''&N }#u%  WNIqѸîd_Sy>(lڽ`;h4,n`+r!na -"ʋyYmPʼ kXS NY9JIx;=)s!eE%')吅uR:?ȇ^t r^tӍvrCc 6"ضuMQ  ]_zG0o& T>iUQ4=,v/S0P(*)c!lC|Qf` Rn. mSy9$kKDWǓJoˣ(u'Nwu7Cg{׌_d0w@ҋ"=d޳p~ȯBWqbmX57BVɓO:m.n wUz`FwXeQir.Uba#fTj%Ӹx_ŵ-yw" ` W9Rݱ[0 $tU#i^A&Y7aMn m3;)*#7ՓN)8;?Ǯ~  p!SE^>w{YmrԸÀ`ycV<=IM0Kb EJR:;qtlƱU9QL ~[akCv+Z= 6iv/S^]YgC#=5ŭv+%t2{fmmƃC/in2"pvb@xuy|5t%ncn4Cj/LC)$<+CVCEI^X0 u~>g0p~7@!Q@ok"Ak mm\V{r ͢k?n+ l/Sz S'' d-9\(c9Bt*\4 v:@=QdehTLN}8l'ґ=i9݅LΘ6ǥtϊQ%잁Py$̃n/Ub.4I쏚WhCWjxǫ}n@|z"Ղ]uE@1 ʧʳ,6!KEu4O&[>w?G?֥\n=P.緶\.͞g^,f2!n.8 w,=WyV^*>ucFGSbvd@pRg=}Ft`{Ur5W̫߆ue!66~؆JHA@y):7^kbUL\įpǩ [LX!7=}rcccVx !:M@޹MqdRUt_T#&CݻGTr7n%NZ?dyLP%ܽEK P^:ѽi@|KxjؑO`[1ˌzIF' 6, :ӿsXD@\]~V_3 e5`;aV8̾R]{ԋˠR U+LaBk.#,U=Pq(.MtBj̠ !"~]#ȩ7HzLs)gJ7}pĸ3YJḯ%Ə}7K2ĭۀStRptF.lw]NZ`LX+?%PuxxeA$-!?)zȒ@.Wѥ g<˸SNQS1Lmxg DsC9$>㲌-4w'%J3&iՏC&;;;;raBOhVm@W[{P~9o }0S̭]m4F#L( u;ak<ࡰXaS9۸HA}+^JfVkغs PFܼ@D2yɖJ%a.v$uu PؘN.`2 A`ـCzQEq{jw5`D}ue obeOdb#`x X Y"o*J\#,FcXTtVkXk~JFlWdo 9laʬC+ ry+=xbz(htM  12N=#/ϵH`gyG S/eq3f%njAgJԕv_.· ȇ~H2=)%ax(/. ̮*6Wt.z˥71H,r'vX$?JHY \M kLjO 5`g L$[f ”%!1ax{ J0W(WGDea,$$F/2<3l3tnhe[ | t-dyy$Kďc[1'Ii~oMNJ ;*-.FewV*nB8:^*}^\/Db(ͦx0ܖB"hAt+OBhM.9kw: $UcA6p‰^G+j#cXfU8P'U.$ki_`C׭6Xa,dXф@T_NX0JzzWbR' BЃAλ;Oy0ΪoT݄^zp7¨Qۍ,#v5~ڡoFV,dx.`$9E:rFCt? 0 zOP QNVSOgJd7=Zouު]<0I&FZZ0k\ND\z>^ᇆp b+_  a*[eJDQĢֆx-m<VBxtm%S|EP4狦L HCKX\<A  S?T1]˃|yIj/RƁ;e%EYSUPF!t ŠqRv.^̊#(X5+պ6ɽgk!:r 1'q 80TǞ~94s 3 @&:xɛj9%/SyOu<=U԰b2tBbUd`7`-B4}d2Q!:aE"P|V(毀 gt15^-_(dB! y>%iGkG^P" ĚV}=H%rKl+s<n3Z(ԶmHޭʥBZ[)ӤP?>J U,<†^ʃbzQk$Tg3ejJX⫍htO,34N^|wkwd(C>*}!TJ0L[.:@*)Z8צ^,?Z^kͺ1jۃT;GH$G+cс?2/?}Tv-N]FA Ld!@`/+3#DL; HnLBT,(lȋ^ol S"@҅| @(Q2P&c|"9G"P 1T10xATSgx`4 s8=[#SIW77ཎեY2LyJ/X]0n<;K d4|V@{M˸R۪e3zz3UKt_um# nv#&8:}ש&o '~_ӀmC Z0,˗ f-ݬoWק/fhԺZ(,N[웜O~׾N&@fl֗ԕ45x g~?Օ_y̏9q=GF#I(4/8_0bݯ0oiAA>mqKVeKFP\H$:w/ 1f|+^ ej}?8Iaقdӕ]8rgiOm@fES+A~\p+Vf;:eaR.#vP^ý(SCeOGy.sû!`02Јr2y#v.Ӌ?>:6fC qIf:}X(.6/T*dFEG;H&I>\oe/x$:_~&TbOGIXlJ8\ BpV "ABR)s%C_FYI=WD*>$zgqHI $Li'+52 0a)N"v08 AByµpWјUS\a[ҵa|ujQC<>VˈҠTB~vS>~X UFCexsM$c 3ِ4tGmz#] WM(R)~_l,9DV<DL8c{3S^\"7*[y$λ428~Ma\bSNS#y3y6q60wNe.y7-9d9=mQk}BGA%v~wiqi]~ }"!aDtkDbőWTPl.{o-,̽30` `]ǸDPH[bqtV^̥[k^ۿ/Qxs+Ƿ#L,Z@Rc k[4tdr|$Om^ԑc'o=QP< NnJ>1xQb~r[gf,1O\g1w muZ>og#eqϛҪ@ NDY0Nwr'Q4z1wc~o Im!ǞlNxO›aә;ɍ\x4|uΊ8!Bŵ+?"GF‘dWXʟl2111cq Msx&,ŋGJ0&B;[TжZðaU]Wُ?' tzmm˥`86aز1-ʇ\9XɃ8BzviPw*f,--/.^st'\Fk 5GQh騽nz٭,Oח3v8v@'zvkm7 raRnkavnz}cmK=u4`DCd ?|嗾r0pʔd_X$`~ueqefz2>BQT+Ry0y]Bc0++N,::plhxP@jbzRs+sMe|v4 yH)V0;)!a1 Ñlndzf/ͼw \+d0F44X}@_} |4݀\.=x`#n驫12yW\sg~*MX:)Wem’;*k ~~&o;QXzٝm蛌L!ƗOο[xy -9 Gc WWg1e5SLale6,!,Z_xw} 5'WfU K/Xɋ[h%lC~KßP<XO-/u줲61^>tzcr\C!zi}MK_c*fX she!Ö S0?^q(a㷟L.c pVBj P_E=Wq]_} 5n +A[cH-p·ϧ0aAx͙ {gbsi[G7̂aŏ/]x ҠeWZW!-i nj.g-L]y8p1(߄r:Ao} 5 +DVUTjTbd {}KǎWM[hv46 {s>l7(l~7k3zW+2=VBA.x8n"5 Ra=;8)]_} 5@3)Ecvyȿ21}}09EY'a: iE8:Ya\m~&]dF^4LakJ\ƱB5v4fMea,CʡK c/bY0(T˗0-x ۦkr‘ gaZ}e]_} |pk@KSXΖ9p{XF@1X6L+W_SF_k>0]17Rh"0"gСǒCç(E؋UXnklMofޚ6c^-w2q#/K_} 5piF4 Tfp:ZtXGqq^38؝E{?:.뻾k}j@(D `p <-EC #.b7s1˾kpjF5 X11;妑ֆ87PB5@_gE_aSN'lxcaƿk' |7Ufd*IENDB`PKx.D[{gtt"simpy-3.0.5/_static/up-pressed.pngPNG  IHDRasRGBbKGDC pHYs B(xtIME ,ZeIDAT8͓jA*WKk-,By@- و/`cXYh!6jf GrOlXvvfk2!p!GOOԲ &zf 6|M~%`]* ΛM]K ZĆ1Er%ȶcm1`= 0 && !jQuery(node.parentNode).hasClass(className)) { var span = document.createElement("span"); span.className = className; span.appendChild(document.createTextNode(val.substr(pos, text.length))); node.parentNode.insertBefore(span, node.parentNode.insertBefore( document.createTextNode(val.substr(pos + text.length)), node.nextSibling)); node.nodeValue = val.substr(0, pos); } } else if (!jQuery(node).is("button, select, textarea")) { jQuery.each(node.childNodes, function() { highlight(this); }); } } return this.each(function() { highlight(this); }); }; /** * Small JavaScript module for the documentation. */ var Documentation = { init : function() { this.fixFirefoxAnchorBug(); this.highlightSearchWords(); this.initIndexTable(); }, /** * i18n support */ TRANSLATIONS : {}, PLURAL_EXPR : function(n) { return n == 1 ? 0 : 1; }, LOCALE : 'unknown', // gettext and ngettext don't access this so that the functions // can safely bound to a different name (_ = Documentation.gettext) gettext : function(string) { var translated = Documentation.TRANSLATIONS[string]; if (typeof translated == 'undefined') return string; return (typeof translated == 'string') ? translated : translated[0]; }, ngettext : function(singular, plural, n) { var translated = Documentation.TRANSLATIONS[singular]; if (typeof translated == 'undefined') return (n == 1) ? singular : plural; return translated[Documentation.PLURALEXPR(n)]; }, addTranslations : function(catalog) { for (var key in catalog.messages) this.TRANSLATIONS[key] = catalog.messages[key]; this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); this.LOCALE = catalog.locale; }, /** * add context elements like header anchor links */ addContextElements : function() { $('div[id] > :header:first').each(function() { $('\u00B6'). attr('href', '#' + this.id). attr('title', _('Permalink to this headline')). appendTo(this); }); $('dt[id]').each(function() { $('\u00B6'). attr('href', '#' + this.id). attr('title', _('Permalink to this definition')). appendTo(this); }); }, /** * workaround a firefox stupidity */ fixFirefoxAnchorBug : function() { if (document.location.hash && $.browser.mozilla) window.setTimeout(function() { document.location.href += ''; }, 10); }, /** * highlight the search words provided in the url in the text */ highlightSearchWords : function() { var params = $.getQueryParameters(); var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; if (terms.length) { var body = $('div.body'); if (!body.length) { body = $('body'); } window.setTimeout(function() { $.each(terms, function() { body.highlightText(this.toLowerCase(), 'highlighted'); }); }, 10); $('') .appendTo($('#searchbox')); } }, /** * init the domain index toggle buttons */ initIndexTable : function() { var togglers = $('img.toggler').click(function() { var src = $(this).attr('src'); var idnum = $(this).attr('id').substr(7); $('tr.cg-' + idnum).toggle(); if (src.substr(-9) == 'minus.png') $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); else $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); }).css('display', ''); if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) { togglers.click(); } }, /** * helper function to hide the search marks again */ hideSearchWords : function() { $('#searchbox .highlight-link').fadeOut(300); $('span.highlighted').removeClass('highlighted'); }, /** * make the url absolute */ makeURL : function(relativeURL) { return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; }, /** * get the current relative url */ getCurrentURL : function() { var path = document.location.pathname; var parts = path.split(/\//); $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { if (this == '..') parts.pop(); }); var url = parts.join('/'); return path.substring(url.lastIndexOf('/') + 1, path.length - 1); } }; // quick alias for translations _ = Documentation.gettext; $(document).ready(function() { Documentation.init(); }); PKh.D`iisimpy-3.0.5/_static/favicon.ico hV  00 %f ; X(  IIIIIIGDBDA?̀>66!UUUYVRVSOTOMwPMKMJGJGDFDCDA?A>B?>6!;96gF.. WWQ/WUPUROTQMQQL/OKHLIFKHEIFDHEBGDBlB@=h@>;?<:=;9;;78[XTZVSXUQWSPUROTQLROMQNKOLINKHLIFKHEIFDHEBFDAEB?CA>B?=@>;><9k^[W]YV[XTZVSXUQWSPUROTPMROLQNJOLINKHLIFKHEIFCHEBFCAEB?C@>A?bc_[;c_[a]Z`\X^ZW]YU[XTZVSXUQWSPUROSPMROLQMJOLIMJGLIFJHEIFCHEBGGGeb^d`\c_[a]Z_\X^ZW\YU[XTYVSXUQVSPURNSPMROLPMJOLIMJGLIFJHEIFCGEBEBABB=6ccc6gc_ea^d`\b_[a]Y_\X^ZW\YU[WTYVSXTQVSPURNSPMROLPMJOLIMJGLIFJGEIFCGFCRicKde_gc_ea^d`]c`\P`[[-ffM ZZZZZVA\WUrXVRXTQVSPUQNSPMROKPMJOLIMJGLIFJGEBqcMTjbFUUU\\R[WTYVRXTQVSPUQNSPMROKPMJOLIMJGd^YV\YU[WTYVRXTQVSPUQNSOMQMJOUUUa]Y_[X^ZV\YU[WTYVRXTQVROfffea^c`\b^Za]Y_[X]ZV\XUZWTYVR7sg*FodWibhd`fc_ea]c`\b^Z`]Y_[X]ZV\XUZUU3UlZ~k|i%wh6rfGmdXibhd`fb^ea]c`\b^Z`]Y_[X]YV@@@oSnmll~k|i&vg7reHmdYhbhd`fb^ea]c_\b^Z`\Y^YU9rqponmlk~k{i&vg8qeImcZhbhd`fb^ea]c_]vytsrqponmlk~k{i'vg8qfJmb`\halhd`xdd]!{wvutsrqponmlkj$yxwwvutsrqonp{zyxwvvutsT}|{zyxwu~}|{zyy7~}|{z.u%rnqpkm~}|{q u?ttssrqj~}}{zyxwvutsro ~}|{zyxwvut?~~}|{y*yws*w~}}||{y=.~}{z>{4?????(0` GD@DEC?DB?CA>B@=333HECGDBFCAEC@DA?DA>bUUUSQNbRNN;MHC5JGDIFCHECGDBFCAEB@999 ;;; >:7<:7777YUQHVSPUROTQNROLUUU NIGLIFKHEJGDIFCHEBGDBGCAC?;=@>;?=:><9=;8;;7y@@@ZXSqYVRXUQWTPVSOUROTQNPPP SLL%PNKfOLINKHMJGLIFKHEJGDIFCHEBGEBwDDAGDDD"D@>C@>B?=A><@>;?<:><9:::#\XU[XTZWSYVRXUQWTPVSOURNTQNSPMROLQNKPMJOLINKHMJGLIFKHEJGDIFCHEBGDBFCAEB@DA?C@>B?=A><@=;@@7]ZW]YV\XU[XTZVSYVRXUQWTPVSOURNTQMSPMROLQNKPMJOLINKHMJGLIFKHEJGDIFCHEBGDAFCAEB@DA?C@>B?=CC7`\X_[X^ZW]YV\XU[WTZVSYURXUQWTPVSOURNTQMSPLROLQNKPMJOLINKHMJGLIFKHEJGDIFCHEBGDAFC@EB@DA?@@@a_YYa]Y`\Y_[X^ZW]YV\XU[WTZVSYURXTQWTPVSOURNTQMSPLROKQNKPMJOLINKHMJGLIFKHEJGDIFCHEBGDAFC@CCC```c_[b^Za]Y`\Y_[X^ZW]YV\XU[WTZVSYURXTQWSPVSOUQNTQMSPLROKQNKPMJOLINKHMJGLIFKHEJGDIFCHEBGDAea]|d`\c_[b^Za]Y`\X_[X^ZW]YV\XU[WTZVSYURXTQWSPVROUQNTPMSPLROKQNKPMJOLINKHMJGLIFKHEJGDIFCHEBGE@oGBB6@@@cccfb^ea]d`\c_[b^Za]Y`\X_[W^ZW]YV\XU[WTZVSYURXTQWSPVROUQNTPMSOLROKQNJPMJOLINKHMJGLIFKHEJGDIFCHEBGDAFB@@@@ie`wgc_fb^ea]d`\c_[b^Za]Y`\X_[W^ZV]YV\XU[WTZVSYURXTQWSPVROUQNTPMSOLRNKQNJPLIOLINKHMJGLIFKHEJGDIFCHEBHCAj`gbhd`gc_fb^ea]d`\c_[b^Za]Ya\X_ZW_YV\XT[XT[WTZVSYURXTQWSPVROUQNTPMSOLRNKQMJPLINKHNKHLJGLIFJHEJGDHFCUibafahd`gc_fb^ea\tccZUUUZWTUZVSYURXTQWSPUROUQNSPMSOLQNKQMJOLINKHMJGLJGKIFJIEImmKlbWicbib'ZVR>ZWTZVSXURXTQVSPUROTQNSPMROLQNKPMJOLINKHMJGKHHU\YU[XTZWTYVSXURWTQVSPUROTQNSPMROLQNKPMKMMIB^[V]ZV\YU[XTZWSYVRXURWTQVSPUROTQNSPMRMM8`]Y_\X^[W]ZV\YU[XTZWSYVRXUQWTQVSPUSO{c_\Kb_[a^Z`]Y_\X^[W]ZV\YU[XTZWSYVRXUQXUPffa^dea]d`]c_\b^[a^Z`\Y_\X^[W]ZV\YU[XTZWSXVR@jj Njbe[hbee`gc_fb^ea]d`]c_\b^[a]Z`\Y_[X^[W]ZV\YU[XTZZS%zhG!xh.tg8qeCndOkcZhbfd`gc_fb^ea]d`\c_\b^[a]Z`\Y_[X^ZW]ZV\YUmlfk~k}j{i#wh.tg:qeDndOkc[hafd`gc_fb^ea]d`\c_[b^[a]Z`\Y_[X^ZW\YWdmntnmmlk~k}j{i#wh/tf:qeFndQkc]gahd`gc_fb^ea]d`\c_[b^Za]Z`\Y_[X mqponnmmlk~k}j{i$wh/tf;qeFndRjb]gahd`gc_fb^ea]d`\c_[b^Za]Yt,rrqpponnmmlk~k}jzi$wh0tf;qeGmdRjb^gahd`gc_fb^ea]d`\ccUwtssrrqpponnmmlk~k}jzi%wh0tfwvvuutssrqqpponnmll hyxxwvvuutssrqqpponmf zyyxxwvvuttssrqqFy({{zyyxxwvvuttu#|N||{{zyyxxwvt.}t~}||{{zyyxxY~}~~}||{{zy|!g~~}||{{y7s3qXqFqQ~~}||{uHtsrrqqpp~~}|}w>vuuttsrrqq|~}}||{zzxzxwwvuuttsrrs~}}||{zzyyxwwvuutts~ ~}}||{zzyxy&w\wvuu v'Y~}}||{zz.wwwv_~}}||{v yyxw~}}|{{z{rL~}}|zAn~{ +QvuU/|?p???0qq?PNG  IHDR>a{IDATx]ytřU_sjF%˒,,_ 1ƀ9 ؗ, Mrnv;䱛%/lB^؄10[6agzfzF3\=4U]]ݿ_}WgLQ(SbV&))r,f`,f`,f`,f.@!ݑ(T=;?Y״$p8z&C\Tg2YQe6(9D= aK;/DB-r.c}*<a*خ"gf KxB TwRA!z*'"AC /=# C.ys`tˮ(nqd& =Z* H`~{}na24NKRf4Ty-3%TŃ..OJzO)?|hI]7yٚƅG9w VLM8r />? @%f!f*.{r ||Y u{?3 9yi3Z=KcR];쒷>71  lu w);W~/ݷ-;: 8Uq@nG{/>cpϤ<し)(PcZ>0='m~JiM]w~g>Н)~|{G""/[--fK[ky*y॔FҾ2m k9s-^Mu'=0Dqqd_{p#>NZ^vdf}Z>=<LFL9<r<8QBi<ɠQ5 #XZ}8AjA)~µ}r牎vP=v <89jo|FSp)9/|M o`G\85Zxܭ8 a#zt(V5m2Vy"f-T.\.Z?SKN k୪ʌH)r&ۣJT M"Xyl_U[55׀@9^˧z.6i QHq~0a>}jêq@$(-64K - ~ćDsD&÷c,P~㗬W}.J)O'vqe w/n`FLpl7 Q"C)wpr4ud"uKVHsLü@*{l:nHIh/5_J= k5>:"vN j39*[/0/E} ʳ\rQS.A8 xKԈp\(6bxz 7>}>iRB@8sOc+#K0H 5$ suq ,늸:"g#=<(#at9i#:fPhܼ\hEǕgk" `*]uMHY:ez`wc_G kkrCpl>{Fv0Xc/^qec*c=x8>9@i`mZ_GOSPT}U[;^[S> DQ+Oz;vͯb-JҖ-gO6 $(*t>6_<;uՎCN?ZTp]}ry:/nδ~0OSܙӱ7> FL?fTXs v9zxtF&D4 gOnXuiqXiBFeSd#_o  ƠT`E8Xvx-q ISBd0 0ii.WJj9|J̡¡ 4(C{C +p'$l@,DZchƒ`5+g2<*`qU;JLjjz/ү^wY* R ׸H5(=`55y}j`~Va{vkfīKsDs:m<)6~\R'd,Y-lLLC TNwhz;4kR`@UZ Ϫ>!u@a)޹B(4`ج04g&#<4ʳpNd8+e`G,V⁛[VƁ5x mjiW%#2᳑ [4;0|զ-0Bb̿+E)6(@sRVBH'bkFSPshi1k-6r{xrg#Œ3 B_>mnY9,"E^ݼb郯}-w.` B :3RԥaK4]kCd']7PJq](OF~'a 9T)6@BzO4Y͔LIyzG_z!XgN%FB~De א3't ȿx1kPAa-ްe-w.O0u)isccBATL"L \hGlNeةH'|RoƇc{??rd`EΝNZ}[_L >1OE3B~+vuNي\ֲZ;[){ P"T@8 Qӧ_3rR&at#z=`Ɗ҆|UJPT@8^=}Ow9pNS\vU\hmMGO?Il5D@/b][e _[zjAJPJDI9̟"R30W<ˏB; 0^AkiG 1{P^U L|57 H$7Ίx}#ڑŔI 6QstHG=>+Dd(~ ?!6P٪6(T7K4FtPb[rC 6Qr&UZ]U-_I-IjV5YJ6 &!Za\;S?ݝx@`ZMT@P ` `[w.[#v}afb'p! |$03`RI]MOVn7 61'K#z)i(_ 7@=,6nKMW,Y-LcHy wO ʧq21iY?x= .t>jJy4_x52bt:.$8o|3çOicy}?["># Q`D#Bau Zŕ5uR- $$.gS \]o?[s2"X7rxB#Ɗjqk/t.Y^b;a8Mݧoly1c @' ,VaWZfM}Ü`R7ʼMolۍ>-O`G{p8HF, DQ1PP/Ħ-ji^a: TmZtw]3o cӎ5`[V@,uŚ ;`;ygh`>D46R `>U7.o]yb> ccG;^=.&f 0 I`"IZ7^wWjzJ W^; lwyu8MvB[}>RPoPhi㒇~)b8؞BJ/3DPp۱{玭,+q'XƀǮCaP=XhA&رcI1M`~Id@UF^HEVxڼ* ^(T #ٶ"v|95$Ir_ d:Q1odhhZNN#j]vٕ?[ Y(ᐒm7Ogb$vlsRb٪O>x3r݅]mD K@ݟG H~=ڦ`0!q"Z 72%:(Ah]hk%\AIL Srns>>'_gTS)@SWXVV^٨/39]q$o?zryL|vnCC(/蓷ݾݳ׋<٣[X[ڬNtqgP%82o7.b{Dw,!J*++笻vK~liOj%@_u_MM͏A%Ɋ9/ ?o#ؙ Gf/slEaI]T1jqMӸG?D3ϓ755}'Y|&/H>x}OG}΋JˮlΦd|B&9Y}>|O@d{?N}oGV'i>Og |o Tc~o|>g7::zlnآГ}6R @֭oh6ūq) 6p||R1``{cLO28WRjAOx&*0nbSk55xÇ쳲'b`JlGSNk+vUUUḌlbaO 45xP sЁ@'bWtET%`^悿 1Qƀ O \6*>> -sq\H8xǿUe/X(t eNg&:mDŽHu6 4Ko~p ̮mH*4_ Ų̰g7r|. ( Ga% >_ @H-+q33YM..3; &ja0G/KUUU5xa)Axu>V9ަT%/ͲYmeLF"ex5/O(FO Z-KR7 =SǕpE^5L&G,T||{]'Pj5]dlvd2[ a+#ol:X-Q`Z@+TH> pw|rO¸۳a`xDq+W-n{ѮΓ{^Y*.ijnLE)S#sK mV:@ .X)C}{?(L`۾]|[r5P(w}dc6R곂t2=ooԺbIrzxVEQF\Mf`ZaOm%pPNxl~= _rIqoi;+_BАpOשǃĎ J{A݇P_-+6766y^^\( =橓_1IH74} a8k9V^^4F@`tw׋`D|xSe𡑆Mkh%.ь}^WWGGGv8L#%A P(4p}_牣GW,k]q$gN|ݹ[Q#`5Q!e7!$9{NgRC.n`o;}2!$6=z=͋n% WooN0ul9JE 2H ;^ `I`{aCP9K#`=^|ٕWd2Udڙ<>q,ho~m)]-RV4ox\}`ZS}Q0ӕy} TQM(=VKx0=`/,li;348L;s\ݲ,kffj3~^EQ:OT HfLE 0D}ɚJ wfY[(:jmݼMI#ݝ^Fҕߧ+Y>تlhR*DlsRfJM0x f5":2so#~yLj^T]9xY I=~VYi )D"Ǐ= fK 4^ Q7\`9qkf"d*$&I"+4B70B'.O)9?@%u٢mmx{/%Nt+$E~#^z:%>zz/=SsBI[R\% Yp% Yp% }dG^8IENDB`PNG  IHDRx IDATxg$ŕ-ҕ9޴4ihV8!@Fb F7Ns1{ѝW#A$! ߴqhofUQY9esV,HDS BA{Q% $ F@n ?˶kpل:H5"S)GG=IlH@0ň@AaT|TàB|VE0 4;HUU^F~K ֻ`-\Kζv;Odǜ5I:\^sv6oki;mgri-өɦ츖< hفd#vm}~e @€,6 "Eyҹ-,4ws mN<5L5 mnh35IMs5 FPPO̼Nkvm/GwrYeώq q>{Gz^x ;ɺ- ;e0Xg L$|=`]׻a^𑶥sXkX0099 ̀]D=1rlC7l{igH~ϑw=y8 ϋٺc}cjJh 2~e˱g][=XҦ%(ڽpr ;Gye7qƝ엟,I߆@PmJ@Ⱦzx=1絑ovom|8rPQ" K"10 @ B$}4Uvvkgœڻ4 :U pt.e)gؘ{ܮg~}gz &1_NB`@% lI&a~6[gvdD 6 pyeٴ;rv9bt/  la=itS $hfH?=U`~5ˎ]ޡ00d$#"~ɸ7Lyzt~ܣ7lt Myn~M$$H Ќ_H,@rl>iOFTgc}+r7ykG /o@A◅Mwz|_}] du#u9B2d}17^I!\ " @3 >7Qh׷z{f5>h9XɢчPU\c4_2-6m캝fP~$$H P ~M`uF/u]6s3J'#uj6124;~Cp@7 դ $}~o0of1>' #Dįp!~Ojfr!,HB`@~Y۾ \!u'[?ݫah3OXv~"~e{% ~{rtw`)5! @@?#Yg^vMW~ ?БIw?]( ; @.eRSd毻۳;3y!PzE H+7XH|9׸VЦ|2"Г)9>uF"rg_=fT$Gd[(co?i͉?5+CtJRmGr(2zwp $b1BS H|e~ jfG1 @T@sD{v֢_*D, v,A" $H P/ Vq}._Drf=?XD Uρ'~7_/}@) & @ z@Z+ZWHh)?ԉߩ/ 9 Q|,7x:z@D?O޼x'M~{٪ [MW(?Bqn"84s}o%F H*BB~ .K{{[+ֆND4ruiIK/;$E(K k[>@g`$#"~"`fQn֎-C(7 I $H Pk >Ǒ?v}y\'u9#wbOt@< @ Ze-u'X.;-mYF}y}%[Da~DJ/?l<$ @ Zb{? ?xUϴ45}DNU#~#"`>;q[9۲ H"$nv~tR4qYy45oT7L޳L]C7N hV@ ,X\ѯPUM,`4#sx< @ 7 @ ,u_ͶKP[ݵEE{"~F"~!#w׏mF!$ h:@ӁbX]FɮB})\˄?Tk_NGF訓vR-mZMKfx½q6_(qB!>Ppj" HL%"ؕ֌O]xR_S%įWZmnao;p;K;IpqkС/[mX!6jkAk֢R2|l/` yP._$H 0֬O|G񄶞?ܩщċL^ka|rx1 &|VlM<'/CGͿ_9?;wr`S(HS>њϵ_ke"Wvٌ?n{:$+f3sNj lՓEK;3򹗷@>@DH@`*XO;ٜ{ŧ;J‰NGrAFx䡽o.ֶǼEp @:OcrMOcq,S*įP("|z$~H# qh0BdYN{H咏nڰ)t f“V{ Рd u?+Dя?6;~5F"Ͼ#( Kߌ>3S\Zŋ} @Sc?:jͩJ8i(D>lo-B?\/o?i;J_Sh`c0y&(D!U=۟JoB5C~}ﳟ?>P,c62)Ծ+fďVoC9`4Pj@PmS$>+zg-*5#? r%4(IXynh: T> @WdB/jįJMH [J?Q&Aa*.P0Gv|J+խkEIE< ¤C %n<;M,O!DJ|Q>NDf m, [FP `c¾CH.Ὧg_/r2dvƧO($EH4H&vY?9Ӗe* K?Ogg>t`0d>",|2 vOٵ#r.k5 Ѐ @V'5xN Sk⇿AΡ 'o??8f6)1ϼhtYrP0`@"@0iP[hϪ}. IUxvF>k|?lŀsHSFDE),G~ ; Ի; ;laspG6ΐUr}J{E@Qz dBFvNxF40DsHK&rc(ª}.5Ojَl;ʼnvzŀ_T  9S?QӴړqP|S4H&t~&ЗUpį&yGS 7U[iTG85E =F+܄/E/H5)H*pqh+݀4iFwrk|Xi.:Wqe=ƪ/ޭjW??|J]YB /nA0K}?@>ԏ?CgK[6"O9xgt^*Q(N{MikOyfQi>A/Xf>zɭA#č?5N0E\ Ȉ-11{'[/l', s?$@1H&dۧLC B_Mo{Oj?Y !rOgkqeua/]{G 㲋>r(!A B_h9s ޏ3 .F`S?vUy.}g5B rbT@J:4-V5~Sxf5{!O(@R>/~ۮuDAFD]gV៝9?7]>wً qMIKl=K?0MHZ_pؖ͹›HQ:8o3Cursgf(/8FrzrP)*H}M%{Þen*E7Wxvf1.KG@! d9X_h1)į e\ԼD'֤`x-g!x`" B T?f9c22/)u~(ڗ/%E(weG@$a h{>z+J_RD k&J v+\{%Tp_;<7m(7HGf /f)sM3{qG&~!EDMD7!wCSK\Ak $a]Ö{iq LQɍ_WA{.S7"~{f'C.  Aغ/|{E) 3>/[Jj֕C EDrD]mmV=,hژ 𙧜YbhmSrj?P?RFjDKƈC~UY P @oehoJW%D"`Kį[gG,][AM j%dUw(n*QEQT5ԯPh{- TmMjiT̈scШ5?P0fvv!W "~?"`"~f?Ej$A [\z9M D}0"7{S`o?Ej$~[p~@įpD~D5L xn@d~_u깉V})75&]UW#|6dsr9r'8le3Z.ur]vӴrMoaXaa0LK3 S3L}cff:&u{& Y6eFD!վ7~ErN~hȏ u䇏zg=?s^ڒ9p@~O~qO?!|pA exٵ=0g5g7/6{4ttDa' ;I!  B >f ][%$DzWSک=oޑݿsK@jNȡ@쓉Q~/{? t;}C۞J_]wr| ֱW?!Bg0 ?1gބ?"  IQv IDAT p4W)lto`OOA`?9_deߏ;P _5w%xy) YTnd eBo`K2ER[z0Ƴ+O<-Sk/]x3l<];dvAoLlj$\i$96mˑ?~a3_cz'ʤ?T\X@F(_:ӗi@MXP~:s01@BD(GX@2GS/<9g&q`Bh4GaO=Pļ^xȟk$ iĵDB?)O|݇~#(/#AYjwM0pP~v@&$mgNm+'_aSlMlc+Jnc̫p7?TPͿFAC:z[kݑ_T j SgrV [vkU_{1ž(oAx!OZԜuǬ0Vx6(@;0v{ߑ!xOx jWCj 0v\֜[DJ}-]}G/^5(_%~1xb$|^?@R{_˽HOo<3|=zWn*N"rN2[{|֕"Pa!k$@Ȱs HxHnХ/8n{ 1_|vWiU3|q@b4o1L-Oݛ~Ԏekbן[pk1!h E=Λ^}'>xE([g1Hj $<^}G->Ax+d3?}<@  ` ;Rf|K= Wg.YĜoYZiZ'~ۆ잧NoZ\%Q٨k.Դs/=Hbkװ1Q 6S  /b}떅تV79/ H'w5:z1kˣ闇AA; 'RAHhi/C/(¡ {R;Pc-C aywY~0! N9,q''fam&=nBl*k΢eܹ =C׌i]9@܁_ݽ3' O)H6u^@Lj.(! ?o?l,f$ q%/,]۳#g`bz|*ce֜ =3.]N~tGo現=oA[$ɞ9Yʯ ȿ@X$b#:"d|w:-ZGd b  Kgmze[⹌g=l:-b<:+vqƆ쑡>{H~!{h~CeL~VI~I$SDui`MΌ &J N?52qR$+UC= p(xao[,m9Ã}o 7DZ$?,Ilkl<QDhI$~ޥuDa}MSp% e!F̠<1~1 ppO,:5M|{fOdǙm0<HHJȍ?bŽM~a ,5GYM&k+ ~>QV PٔҲ]P @`6Xq-l03 "O* DQ n!ASd/@E/yBͅ 6B'` мp>": 憬&,!:3y'p?N} W:Ou(9@|DM2/A 1o "a!apyp%LZ *~G6 Oȉ?v=s#߶_M?H|ݲ`J}$z%~ f[gؕ^ y@ DOAH>eLȶ2r$ R`WJ@$^7HMM&"~uPFOj>]W}sz- N5f$RPx(B@+vzf[}}B6,ɉt XߥTިac104hCoy:,\qbҚGCh%a CIߨVc;Q][3?|ԫ( <"@oA  6 }Rˬ/7:fhZM 'Xub} #O`@(x$zėKZj2vp=J~ZhWurLj/[o~탉>4u#$cE6f>  @' 3θ0qK~jE;E7<;787G@6 1 UI 0PD@&Ξo.TƯzW$~qΣodՎz=(4䡖'@BP @ CL$P( 3o]OhbD{H~P@$~ ty`7wzAN2!@bP @ x=P 09*[1Qev!cCvS9{&@(ˆM0r/z?rMW. W,.sUɻ7N6;Y9D Le_?92GP !@L @@"`P<暯r $Pqtj w؛m#QAW$ H$f6"`/޿Ǯowjs|}r9AƭnlB@6/H& $yqp|m]:' CKfg!s;f~54QɈH* HFDw.3 ep;?w< b$| M̼1| J1xP{CD"l9<<';(A<@B $H ̀|@eW}dI3TGC}kSsxkW{oۊr? 5* H0 wBsɟ]ךT@r+KVC%ȤgGJ " )Hx 06k?3g?؉)K>_#sj HA >٨=z7;⏴^=mDFHv0>>O6ߑz|H47H@A+"ؠ@=zίu3 ݭs4Լ͔LyOnH!"I4'H@@)W`^:TFC=g@_ߗW3Po(@s $xHdJɀ-m/]Ƿ,K gW0Tפɉ_`ddйDBA2$]@ݗI%NU*_>PEpY(lÃ>~oo\䋮$$H  0&?C ?2 ?0PO[>36CRV&A!/_,60 : H!dd@1 ^ع|9Dw.3k&Wq |g{__&*A/z HA22DBJ"Lu4:y ?~ 470 : H(@'<܄wtf"#"~7%S``?|@fj9R @ t dD_zc1&~|"~Ѿ p4yCǃ[SS~@ $! P| 5 +?bqD' ⺎\/3ySc(Y (  $$ st~χZpj<"3p ďza/o'|r! !P>4h х H u=Fg:{YםyPp@w~rί}t; Bz4@+yKtzc(I@@>Q6G V\~U۟B^*%42kpJa0/.}7Pz e! pELk2-_NgaA^$H  ńn]d%6NnQjp/|4w9rY^{o `WA.[G !H@@>]" g\k: Rw#į$ K1&w-mo IDAT;П[nxӮh8ǀHaP%w.#{sYl{xꑽ }"E,6cus{@Q  bS[O=/qʙIW,?o _tQBȻyCaE |? =p$!O wv(4ed ԔQ" $*-0)] >+c1o"@'"~ 58`/_>Ȥsfs^ы_ jGtC1[79ft4MK{lg蹧zK/mۃBS/ u)H@H~MRaSl|@{k %Pܤ5(1#(/ %podB/~~WȤO^`  4"$@cg5V#`a qe-[ʼނ |&xjҡB=C/3S坔 '2+? ^)cq(Cpl]1@F,f8&Wtpy1Ǽ9_x'M!r] …! "AHS,E:t^֜X ޔL'\w'CA ш(5r3Mlgq[>smC!B!vTwW J@(F᭕_=dŴ5z7|B}G ~_H<**"dϜi֪5W_!1}jBj L>M6Mc(7 [~1z[^ >{UT 6m_atDŽZ߀S J rsAhm/,\zy~M@M C" C9`OG:Vuo(EA?* ~#JF$Y8eGgO8azE u `  9 u^ ?$~'tRU%~5}"?sE 5s.}٪UBAQ  L $M`" bzhn_PF I`'piuEq*#W_Ba7`!麑;^ٞ=B-ZmHD.߈5r[x1T7JǣΥ^S*?5~~v#0O;/E&B@6yi't>_r QQ~v)8e5R=RdMͫr.5?B_PT?f>/<Վ[GAȳ(6qU8NQ]sfH%9:DZ!g]'tщ_tQ!Q:tej^s? QY_\~6Uc;40?6iV"APM=~Z`Qi B".ziLEWMkz(S2# "cVBePԼш_C?*"SCk+g2Y/ZO?h6g#RF4>蹬.$9,YHg[ks-Ιo.;/bq5O2RU!~U?eY Um&Źpy{~B^6W65@9$ H2!8"[h_u'ǎ$0&)$S*O(j2ß!~7o}Gy h{ M+H@`3F P$PeP\֝_qʼnw[1-G*n DMGmgvgѣ?[B^> EFHPa !9f} Aex&\%o}OgS>Dj ~f߫?o'_lf޿!6qMWwz{{vQ>^TAj4(GpGx\o3VFG(ՎՉQG"~M\~_(&Z?u @ DL-(D}Id< "~\yU8 ++/5Udž_r_$# @ (e==pGZ`b@kEo从]Y"*.o<֦Bm}c ɽ(@M @zjr06 qK[r1;s ,_}ySzf3''/c"OS ᖖϤw\OO:-mZ⅕Wv)8eC45/3ԦgƬ܍x#כ0 @)p"p Y3@.Hl=mH?hj'SrNrݺc -s1Ћ[n(E"~/ԼSK5qG6v'~5<4h  XX0 // [il;O;?ajҬ'#"KN45o=r˚< _}YkW*E5I,bSHsKLn{GO0q ݀(k}ɘ(=5&jч{^B P>#0,I;_Xb / 1c '.Zfi> ~FJ2RU!~U?oB7@&X^ x܅Ƭw]8ibsaI>.ӊ歝^ү^}- $jt@#JX&Ĩ(JB` sަw'6ΜkDuLT}=Oi96lsxxͻnCY zS(H&r7vXؚ̜ǚ3kuGNjF! I<f?{<}.U~3ϥz߁ EsmHpPqT@)gw.gwdviŖuj !AǝXrWaץF45?PSm"#<|&I_$VO&j ̀ PO[t9g؊ǚ,/*N<5$zx=#j0;ҩw&d\$H4Bz ȒJd@<1Br͉c͜g. 9N45oߧt_(_k?أ7+(<?'5RH$hFT(D1 p ccWŗv22ykޏmˆ?2xm>Cو,_jH ЬIBO QO B /Ye%EV̰hjz"UPڿ Ek&@`bTT(jT@2!`Y\}|1ִ.9'1[4uYԼa6vщeS{CC/KC$H bD@5*1VWOc ˗h;j .JW4w'?XdTNܮ-=sW_y^gtk._ H5$LzEmsW^EeX05\%p3?mͷ]M ?D1Gdbo&EKX1=cY:cVlM34yy/v*UĈ0>>w_fKCp.5g @ B8x1`@ޝ0(_@U@gOc݆9/>-8TN[v?{<}.Uĉp`vG6pۯ=ҟ? 5M ho@ $V"₏hIU,kiMkHSZw_,+G!o.2 2TQ12+;fKg옭i5Լ~eE ~o9͈6Rw{{v>@C!iP+-&<]-_shuP@CQ|&?A}_e+,Z<M;6^;R?Im>7ګO6_?@ a DA r9v5-_3{tOy'n㵫1gFuσ $ՅPED 2$tWYxR4-wb6^Hgr/lN`ltȽw\.~Yֿ߿.y a0@&K!/Ĩ?LX V-[teKKk[M$zx=#jWhvC^g]X]H@0bAP,\jի̘1&!7'枷|' O$ L/D PȢ"A @|޼9s-䯯f*h:tz;nAq?ـ?uO@F/Okn"yOJ7"ppƌYN8y <P!ώ|Ň,֗-,ُzOH'EM~sȚd% u '_xR4Mjk7U/fߛw (٧_.@Hj4#V"}ֶ3|is]HSF)oNUCGG~gSw $ z`=Q $O Xv 'ɲb1UUl`xh`߽w}p ~,uσu- $6  rD BMDnPQ TqaB ҋwۻg{ƌ3nZ_nGlۻ1muM7H"Ay|Y`[Z [Ow‰֯߰Q7L*È?{<}.Uf?];Lo?E(@ =|zߋ ȡ XTEĨ@[ܒݶ:|s{iZB@c{_جmrx&E BzB)[X(3%rx0 mC(gkCܕe3+r_Fnz=xDFruҲm ZeZ(=S'BЀ{g #&P(A_:o?l&L f҈_U$~KU)(3f#}67 $(X /Ɗ `ÈC2Û#["LC?[WGW+w>/'oP !{o#I}#שּׁc{zfٙr%hȐ6قD`XA CH ,ChÂ.s}U]]YUy_#ex/"2+2*w/^devnQՀD ZaYOT,+w51Zit^ԠϏo;TdH.E_* $ 6\tGu _m}h,֏o.wԥS- ur}o]p4F'LG@鐓V(EViEsF A`Q rP" 5W &>OMǹy8qSwnsS|-N#  ]&* HlKZ.߸f0 >4;35>xC+ t댑nV@D H: PH1~muwu,8 g }ЏKCu D" e5 Go$W % Y(oݺ]Q?m>!,wc>ы~S!eQ&qREQ7I,2$R LS@<N>O듩mn#M;1X~/>FVFCχ JEFED"Jbx# 7^ n~rPܼ p(/Ҕ2 HdS`g2##(^Һ- A 2]"2$ɱmy IDAT*6\ut:hb _<=ESX ]5CED"%m fdgfnp)8P=Pw0K"َ/5dDdH$Rr&޿wZ5oHĴ0%'t1N1RAt= B^ @p H]I@-krPLD.Rf@I8.W{z"7$"@"M)P7yB!pӾd|w8EP I(2$a9 `U3(!K[_ܽc?#6 6B:LdH$ҸE4b`usky/s+<,<YdtH$d,0Vrܪ#Cc~P'3'nM[/ol]!q$Z%fV=Scs~7-?}7a6*2# D"5CRR&QdiKXg鐩@x)NruZcL{ G(]/'@ߋY^(PdH$҆iMjҙZ4,6 =_=(/_`6L:XDj#QDrKa7k fQDnNu{u7@QG/|#aFCDD"- z0kP(tNbtq Ƙzl>&_Zع_yl&ztH$7e$ƭ5Z0 ppy7@pc[mo B!"@"%M!=u]m3,E:08^HO,_u׮(!%@&MED"y)-oL|=2+/>ҟ:  vH$/b]?Ƹ~Z [e~;xyŗ߁} #"@"%2 %n ,N#:8Iy~A[qZܵ_ 5W P6䦌/|Ÿ@#7]6ԝĈ?L1_}BЛ q`ۉ Dr[&W߶m;?}Cx)7H$|?ڻw^M5l# mXTGH1lW 9d3_kTc=Գ'º]R]R:G}w;^1,[|cotqh>oϡ#ŗ=d#;Dd+̭^nAdO>ʛG"@~e}z_A1 ~^>߁Çk*(Q}r7KV3k>2he%/PK\5l3pkg [Bww@]p3C]aX:գNbiCNdR/ e*K w'A^Я[wEQ@+Ud:w'~xx@EF?PKo lbnݺw׊Ro* Mu[i4fWo\yM@l@6s<B큁޿AQkMPJ|Gi6͡JP3Qd07?- ~ɥ ,fNOOLΝdaax'@@S=.*/SoZG%,d?`O.\2ϿJ`&#ٿw:zl_N෈#|uut Zܯ5_TAK/wW^5yOo2dt?3BP{'9WKjUZ!_j-ß埯e/̀P@ HRG- ;o~r8_V_߽|(V%)& kdp06H 1CIC@-#|ϯ^˥̀l8bGi?2ѳlUoGw ?7zzbWvm:գ ~T5`fO@jlfn~ў}}u*[JE=Ǣў~5W*.gKT;7LLLAܵЪd'/8l۪~X_W_}n]?cotL1~=Q\.;S2)2( Zo|/ľSno3"lϛW:)@8bjX) WrKΟAUVj^糵b߿bB~/>sӑr?m~'1 ?d3Śa[ujl @JԘKWphh_sR7,?ÑH[pxPe$K *x#PpXײ~ݻO~9;^~&_r?i_sW Hɞ#Ǣ8}hCT^|3gO+Qq>~V?:iiPӥ:R,FƒL&pueK&@5[㷏92cϞC=HL8z43[1_GoL7^Qn(@4WTA믛б}{N?u Ug3/?;hJO*?H>l۱NΖZ,MTmT,|>?J$ff'FFИk@ȑ[#`+(}ƿG!Nz닩lT,3OM% @b]W_{.}~a:b+yWD)/p*h۶c'=W^:U5uA+˪ed4MhU5-ijFԬjMCAQ+|*E}>- )JPPQ( <miq$tC8g j^wt*=H5n!y 2 ~~[0<]n}n*[1-c']L}~I0Y3]"xg6즁_wnx~vm?j}m!3|x 2'ioG& kSْC-cimc8u:@ӠN෍kg>oujF@,2m.ao׶m;ՙ@]~r;~b_S,9*|hcI{~En5'G+V~f)L Y@"2#D_};˭" Oc,."qn8y3;HgeeFq hS o~'zvLK7-|57 @)(FC乭%gy/.thVfI"Іr8odx={}5CyxL햶阯 Ƙ9)ou'1- ~ϛ[Of2|&`z<l/K/#eW#$.Ĵ?j|.h $$EzGf8= xʖyxe_Jo,Q QEg4yf$y$2m$I?f>۶:ұLv"ܯug1Laבx<>q E$59f:QeK|޼j<˴zk_b'75oq/1vw/+(_B @{ɪx˶m[we;C_I _wu;. i:tZ|_"tc7+?ve_#R._|L*%>o^Y#?oKKWP*xE}$j8}Ry'ꀺV?NbmsoZ)?9*c/Tl|Q%HS|wc,θG`~Zlo}mN>O* oDWϽ===_F._j#N/ aum\;yk!3]E,2-,'`0sߑ% ~bC*P(ggA P*^dZ_!^[`2/kN9_WEN_=##++WdP.`l@iI @ @t=3%cqs#VPI:D 񕫣F>Ed/`[@dZ_ BoP`9- <15w jPo =џPu |>HRdrja~$UiJr![NdZP66ot޽YϋÆ^m:+t ƘD=~ytqvාQR1˧L*%t"ɬWleЧ$*k!sD%o#nέ6H7 ~>o8") \6l6d҉t*LRL&21Y~e YX@~& @ɦiؽD~q_>u{utG .hFY* \6dL:NSZ2X/ y- `FˢV XPD5%j_^# _H2-8 ԝܯug1:5jj.KeD&NdRd*Jq9yh C_[2wz o?W)V'zC MqWw^Srt*H$VUUe5\uc"0n.Ed5؉SG#蓵pON|20Y{`dK.^`>EH=~ i:t&6;=pq~q&N&P,^zbxOOc7_M֔? tĉ_)t#uG\ᮐ#I&cfg``_̀l=F!,UG с-[޷n(T?qN_9J$[zlϛW:KϪ#g̀S`U kݛu =+}!,˻ 1Mg\u#kM{95{?O% зg}y ^}#EƵZӄ??)"2 w޽#H /q~t؁Ao}\?4`~nLyfe9Em?r%2'?~EQ8΍#[wnz{ ;Vw y X[Pd6Y mY918'P߄/_?b}ڟUa=ʞŽ NAc?It"l> lb,."/_PI:D*L&Q?3IԪD;>$նh&"W[u{utG .X[uڏQ>'1o {<͕U#D3w~~-;iשyɤ_<ܿ?.[t!ؓD`%mAu_ ;)_ Nb\?kj޺_, k׮|\(F~|yF_OCd6A#@ 2e=O/ߴ:ԝVl IDATu{;tƈx6^F:?B)P5MV {=WW.IPw ~[՝N&]!Mi8 ?`03FDrKd3IL{_rᮐ4F:g~Pi"dqq@ "Q/ 16~b*[e:8I'n] g"=9~qu'1~?NbH7c~?6Ed];NCnor鰗nx~vZo^1\e\+} )"F ɜ:v`S;Љ෎kg[ǵ ݊8ˇ4j% @"mTdq ?@8I7nYCouĘWMb?ϧ+0HM&J2i ?0Ȯ!K.Gߏ5ͱm}3_/@@$E;[?E76~U%Dbl6jHPdpp%~ Z O{r1W|FS;z47CNjށB$5 Mqz_?~w c;gqptFDhx2lBL_g~'1 ~H(w5$5]dh4@/Ln.`7N(q- ~fkB0.?3Pdg<U|~S~ =p+q&_kS>@ϗPx/G.# ً zn4{PyeiuMq@ h,DSom-Hne=1&Ӊwt+8ǹ~ie3~4$6to_G5(ojLSnvO?\E:%UU5yEZv1t1lc4[;)øeLjpԯ,c#q iZRەS۵OSylF@c#@?iKE@)yl  5IdWxyێ/" :i snݸJ$Jl6>Z}ܹ}={n۶;ӻE댩lϛW\cϚcI 7 ?"[޾kyQQ,&Ř7JV^"jK TU&gg'{{ݻێ{lABI;sMCAogiZ&ISh4 X[7r(gMQ"P(筪 UNFPB++w/T48q/( i9yL˰:"@2H=o{7 bH$VI)lşWӚ෎il6Jdbemume5/JJ'c箽;w>w 9b}<ĥT@r]d(MӴ w4nsʒpg/{wyI@x<6z+dPfߍ%o'֒p-PXw AӇWsL*NœR<\(ЗJ:N>O?w{8jOD"[ @".2JW㵵ձ+#_*wnGQ6 @豈J;ʥ, Av B`a~~ma~~;z'Ne :b+5˦sl2&2t"JT*PU)qت\>q-C͟Ϥ CFV%yrه/R($~m@.K^t/gPfFhʥ_WrKûN6. <&/e%ʒAё /{Wl_K̔c7~ן@InIA_  >F 0QёnٻXgPni6>6zeԌ̀ D>QdK?>>|ݻw? Ag;_f @rM2EUYN_PP @/~[e@ϽG^Էbo/k<W`??ol^~4a ?Lʀw`g~T ~y\{wo]DtU'&1e%2c\v}7}@S]\ ` g5h4ƥkYPT୴blw_/͟=p%bJհ,bqOFQ[E bCÅ/^f@+P&<|Prw/2dIu]C@&c3Bӱ07 X_9y̻ǘ ϑ H$D;ui+R3`tzra|yiW^}whhJLf_hmmmܾ|!?L "}߿{_| y95&'UM߿YTZ}64+7%o42Tڥqĩsw8젾T~CMS++?RSDU0h_j|NzG ?/lyVWgh |] 0]奥x|dphx/격yn/-?bo Ew<YTUx:r>:?xBw '~x zCeeH$WD[3{Q \l秦'ǟ}7w4ٙWʍDTd7D}fa NN_:ުS6 P( gߋ7珳[>uŸ.L^__[zԙ"P_4uiqOUU]~+gInZAi.oJ*_?,=5dK_e,SO>̱c`+_4wo߼ }#g}r?q㐩F#`Ff}(7d/xD"mn]!Mi8N#2*kߋت_|b3kƪQ@ Sm6\ZL&86?=oUK[FTYsB*?VUsDwn޸45>s/|cph^{:$ (J7lrෂScGÜ2=ff.:rm7 bYǕKGaXu{hdۼoTB(0:nJҝ7(_gVw6f/?y5|cIUP\[@Pg4 ӏ?qɓ/D2x?Y7$X_$#jNa"tࡷ|~tm.]),)imްF4"Db' 1aӎkϒ̽a"@&Xm~1M $BoN=~wHpn=iӓ7o\Khxr9Bs:4(^Z?232|>tc/ue-j~W ̛5c; 2>649 ,dt(_.޸vߟhO=ʖ-4mvqr >x F8r,G}m:n6rU//i 禍e 4f ͪׯ]'x}hSO>J%63XF?'Y~')2$>cJX,/?'K~ p$f;ݑՕ+.|N7稱/8^2| $2Ȯ,$Æ;iZ_@}eY ~0b0bYI@U'{_xSP0j SL.K>oPzxdbCP|Jwt*9??7{ka~~ \Oy#Uc.&  R(ҷo];W3)c~֛4B >'64ߗvxP~YXyC)ZmKhߥ1 xѕ}~B!199~-e0Uf8T(J:|ՐiKPDχU=K>#641e4,+ǿXIi"" G;DEQ[l>][[z](Nδǹ~KƟoMӪ7ԞYYn_T&sWNhCYc>s_LU[Mjz}NWp%K`nfj–0&ZZ7TM+} ?N 4oraR!QIUH/AhS JCeG7,>:6=h7K<:zb8^̴'%%k+ ުJqi`l'WÈ ߮X"fMG?6C#JJЏfWK(-rKו,.-\޷o+a1i8o϶''D3EQzX)Nƴ2oc.9=:>~HPmor0a0v)* ԡ"С0XW/Yw̋͢1hd,0}[ P,MNM܀ȦYolmWKD["F>CH," sEgLժ|np~}Y|­ڮ`UK jAjڮNZ2IDATR @H3܋i\ש2B0 p5Ar@IU .@^/`rO8U'}g.mBrƀcc5M+~"! k[lvM JJ캽vsB< jsuj~5hSuX*jc I%2$l-5c?4d$C v7_[$%]qR1Rw d@7rbmmnu%~A}#h *0R $@4v|u>c#Tv8gplہH$DDHRl,`&  :3?73Cv] 裟 cm&!H dqMZ u͟W뮄ZSJSϗF&鈁H$R2וWe96_bB"z0-{{zwF{p/}Pț]y %U͗JZRF|` jeYD f#@&զ^72$ e`& e/((jW'|`0_+>|>_ϯ4hB1_(R!_|1i!2yQUI&24dPo C;~y\.9$LW?VewQ',b)L@ |_wԥ"@"Y 1>CLeFP< qh¢j(?Z8fHD"uHUJ0 l]ZNw'Ř$ ɉ0<Vc)n'H$2$w Q^|Q|za5`6mfK{ED5o@7֢RfBx3(O""@"YH#z{%/"?hJ[D" @"#[ _B Xi_fؚ7~#H$dH$[qM_2ynVK?`-2g2H$2$#M;;洨_~j,I$ z[!oM$ Ԙ`OVd;D2  I 4|K'EH$T't6ͺD"IEDDI$fgB"H$DD"H.D"PdH$DB H$ ED"H.D"PdH$DB H$ ED"H.D"PdH$DB H$ ED"H.D"PdH$DB H$ ED"H.D"PdH$DB H$ ED"H.D"PdH$DB H$ ED"H.D"P?TiGIENDB`PKM0DEE"simpy-3.0.5/_static/searchtools.js/* * searchtools.js_t * ~~~~~~~~~~~~~~~~ * * Sphinx JavaScript utilties for the full-text search. * * :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ /** * Porter Stemmer */ var Stemmer = function() { var step2list = { ational: 'ate', tional: 'tion', enci: 'ence', anci: 'ance', izer: 'ize', bli: 'ble', alli: 'al', entli: 'ent', eli: 'e', ousli: 'ous', ization: 'ize', ation: 'ate', ator: 'ate', alism: 'al', iveness: 'ive', fulness: 'ful', ousness: 'ous', aliti: 'al', iviti: 'ive', biliti: 'ble', logi: 'log' }; var step3list = { icate: 'ic', ative: '', alize: 'al', iciti: 'ic', ical: 'ic', ful: '', ness: '' }; var c = "[^aeiou]"; // consonant var v = "[aeiouy]"; // vowel var C = c + "[^aeiouy]*"; // consonant sequence var V = v + "[aeiou]*"; // vowel sequence var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 var s_v = "^(" + C + ")?" + v; // vowel in stem this.stemWord = function (w) { var stem; var suffix; var firstch; var origword = w; if (w.length < 3) return w; var re; var re2; var re3; var re4; firstch = w.substr(0,1); if (firstch == "y") w = firstch.toUpperCase() + w.substr(1); // Step 1a re = /^(.+?)(ss|i)es$/; re2 = /^(.+?)([^s])s$/; if (re.test(w)) w = w.replace(re,"$1$2"); else if (re2.test(w)) w = w.replace(re2,"$1$2"); // Step 1b re = /^(.+?)eed$/; re2 = /^(.+?)(ed|ing)$/; if (re.test(w)) { var fp = re.exec(w); re = new RegExp(mgr0); if (re.test(fp[1])) { re = /.$/; w = w.replace(re,""); } } else if (re2.test(w)) { var fp = re2.exec(w); stem = fp[1]; re2 = new RegExp(s_v); if (re2.test(stem)) { w = stem; re2 = /(at|bl|iz)$/; re3 = new RegExp("([^aeiouylsz])\\1$"); re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); if (re2.test(w)) w = w + "e"; else if (re3.test(w)) { re = /.$/; w = w.replace(re,""); } else if (re4.test(w)) w = w + "e"; } } // Step 1c re = /^(.+?)y$/; if (re.test(w)) { var fp = re.exec(w); stem = fp[1]; re = new RegExp(s_v); if (re.test(stem)) w = stem + "i"; } // Step 2 re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; if (re.test(w)) { var fp = re.exec(w); stem = fp[1]; suffix = fp[2]; re = new RegExp(mgr0); if (re.test(stem)) w = stem + step2list[suffix]; } // Step 3 re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; if (re.test(w)) { var fp = re.exec(w); stem = fp[1]; suffix = fp[2]; re = new RegExp(mgr0); if (re.test(stem)) w = stem + step3list[suffix]; } // Step 4 re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; re2 = /^(.+?)(s|t)(ion)$/; if (re.test(w)) { var fp = re.exec(w); stem = fp[1]; re = new RegExp(mgr1); if (re.test(stem)) w = stem; } else if (re2.test(w)) { var fp = re2.exec(w); stem = fp[1] + fp[2]; re2 = new RegExp(mgr1); if (re2.test(stem)) w = stem; } // Step 5 re = /^(.+?)e$/; if (re.test(w)) { var fp = re.exec(w); stem = fp[1]; re = new RegExp(mgr1); re2 = new RegExp(meq1); re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) w = stem; } re = /ll$/; re2 = new RegExp(mgr1); if (re.test(w) && re2.test(w)) { re = /.$/; w = w.replace(re,""); } // and turn initial Y back to y if (firstch == "y") w = firstch.toLowerCase() + w.substr(1); return w; } } /** * Simple result scoring code. */ var Scorer = { // Implement the following function to further tweak the score for each result // The function takes a result array [filename, title, anchor, descr, score] // and returns the new score. /* score: function(result) { return result[4]; }, */ // query matches the full name of an object objNameMatch: 11, // or matches in the last dotted part of the object name objPartialMatch: 6, // Additive scores depending on the priority of the object objPrio: {0: 15, // used to be importantResults 1: 5, // used to be objectResults 2: -5}, // used to be unimportantResults // Used when the priority is not in the mapping. objPrioDefault: 0, // query found in title title: 15, // query found in terms term: 5 }; /** * Search Module */ var Search = { _index : null, _queued_query : null, _pulse_status : -1, init : function() { var params = $.getQueryParameters(); if (params.q) { var query = params.q[0]; $('input[name="q"]')[0].value = query; this.performSearch(query); } }, loadIndex : function(url) { $.ajax({type: "GET", url: url, data: null, dataType: "script", cache: true, complete: function(jqxhr, textstatus) { if (textstatus != "success") { document.getElementById("searchindexloader").src = url; } }}); }, setIndex : function(index) { var q; this._index = index; if ((q = this._queued_query) !== null) { this._queued_query = null; Search.query(q); } }, hasIndex : function() { return this._index !== null; }, deferQuery : function(query) { this._queued_query = query; }, stopPulse : function() { this._pulse_status = 0; }, startPulse : function() { if (this._pulse_status >= 0) return; function pulse() { var i; Search._pulse_status = (Search._pulse_status + 1) % 4; var dotString = ''; for (i = 0; i < Search._pulse_status; i++) dotString += '.'; Search.dots.text(dotString); if (Search._pulse_status > -1) window.setTimeout(pulse, 500); } pulse(); }, /** * perform a search for something (or wait until index is loaded) */ performSearch : function(query) { // create the required interface elements this.out = $('#search-results'); this.title = $('

' + _('Searching') + '

').appendTo(this.out); this.dots = $('').appendTo(this.title); this.status = $('

').appendTo(this.out); this.output = $('