asq.initiators

Initiators are factory functions for creating Queryables.

Initiators are so-called because they are used to initiate a query expression using the fluent interface of asq which uses method-chaining to compose complex queries from the query operators provided by queryables.

query Make an iterable queryable.
empty An empty Queryable.
integers Generates in sequence the integral numbers within a range.
repeat Generate a sequence with one repeated value.
asq.initiators.query(iterable)

Make an iterable queryable.

Use this function as an entry-point to the asq system of chainable query methods.

Note

Currently this factory only provides support for objects supporting the iterator protocol. Future implementations may support other providers.

Parameters:iterable – Any object supporting the iterator protocol.
Returns:An instance of Queryable.
Raises:TypeError - If iterable is not actually iterable

Examples

Create a queryable from a list:

>>> from asq.initiators import query
>>> a = [1, 7, 9, 4, 3, 2]
>>> q = query(a)
>>> q
Queryable([1, 7, 9, 4, 3, 2])
>>> q.to_list()
[1, 7, 9, 4, 3, 2]
asq.initiators.empty()

An empty Queryable.

Note

The same empty instance will be returned each time.

Returns:A Queryable over an empty sequence.

Examples

Create a queryable from a list:

>>> from asq.initiators import empty
>>> q = empty()
>>> q
Queryable(())
>>> q.to_list()
[]

See that empty() always returns the same instance:

>>> a = empty()
>>> b = empty()
>>> a is b
True
asq.initiators.integers(start, count)

Generates in sequence the integral numbers within a range.

Note

This method uses deferred execution.

Parameters:
  • start – The first integer in the sequence.
  • count – The number of sequential integers to generate.
Returns:

A Queryable over the specified range of integers.

Raises:

ValueError - If count is negative.

Examples

Create the first five integers:

>>> from asq.initiators import integers
>>> numbers = integers(0, 5)
>>> numbers
Queryable(range(0, 5))
>>> numbers.to_list()
[0, 1, 2, 3, 4]
asq.initiators.repeat(element, count)

Generate a sequence with one repeated value.

Note

This method uses deferred execution.

Parameters:
  • element – The value to be repeated.
  • count – The number of times to repeat the value.
Raises:

ValueError - If the count is negative.

Examples

Repeat the letter x five times:

>>> from asq.initiators import repeat
>>> q = repeat('x', 5)
>>> q
Queryable(repeat('x', 5))
>>> q.to_list()
['x', 'x', 'x', 'x', 'x']