slim.types.queue module

Cages, Farms and Organisations communicate via a mix of traditional API and message passing via channels. Here are some types and tools used to handle such queues.

class slim.types.queue.CageEvent

Bases: abc.ABC, slim.types.queue.Event

abstract property event_time
class slim.types.queue.DamAvailabilityBatch(availability_date: 'dt.datetime', geno_distrib: 'GenoDistrib')

Bases: slim.types.queue.CageEvent

availability_date: dt.datetime
property event_time
geno_distrib: GenoDistrib
class slim.types.queue.EggBatch(hatch_date: 'dt.datetime', geno_distrib: 'GenoDistrib')

Bases: slim.types.queue.CageEvent

property event_time
geno_distrib: GenoDistrib
hatch_date: dt.datetime
class slim.types.queue.Event

Bases: object

An empty parent class for all the events with a default serialiser.

to_json_dict()
class slim.types.queue.PriorityQueue

Bases: Generic[slim.types.queue.T]

Mutex-free priority queue. Only use where thread-safety is not required!

empty()
get()
put(item)
qsize()
class slim.types.queue.SamplingEvent(sampling_date: datetime.datetime)

Bases: slim.types.queue.Event

Internal sampling event used inside farm

sampling_date: datetime.datetime
class slim.types.queue.StepResponse(total_offspring: 'GenoDistrib', profit: 'float', total_cost: 'float', observation_space: 'ObservationSpace', loggable: 'dict')

Bases: object

loggable: dict
observation_space: ObservationSpace
profit: float
total_cost: float
total_offspring: GenoDistrib
class slim.types.queue.TravellingEggBatch(arrival_date: 'dt.datetime', hatch_date: 'dt.datetime', geno_distrib: 'GenoDistrib')

Bases: slim.types.queue.CageEvent

arrival_date: dt.datetime
property event_time
geno_distrib: GenoDistrib
hatch_date: dt.datetime
class slim.types.queue.TreatmentEvent(affecting_date: 'dt.datetime', treatment_type: 'Treatment', effectiveness_duration_days: 'int', first_application_date: 'dt.datetime', end_application_date: 'dt.datetime')

Bases: slim.types.queue.CageEvent

affecting_date: dt.datetime
effectiveness_duration_days: int
end_application_date: dt.datetime
property event_time
first_application_date: dt.datetime
treatment_type: Treatment
property treatment_window
slim.types.queue.pop_from_queue(queue: PriorityQueue[slim.types.queue.EventT], cur_time: datetime.datetime, continuation: Callable[[slim.types.queue.EventT], None])

Pops an event from a queue and call a continuation function

Parameters
  • queue – the queue to process

  • cur_time – the current time to compare the events with. Only events past cur_time will be popped

  • continuation – the function to call for each event in the queue