knife documentation

knife.lazy.cmpknife — Lazier evaluated comparing knife

«  knife.lazy.lazyknife — Lazier evaluated combo knife   ::   Contents   ::   knife.lazy.filterknife — Lazier evaluated filtering knife  »

knife.lazy.cmpknife — Lazier evaluated comparing knife

class knife.lazy.cmpknife(*things, **kw)

Lazier evaluated comparing knife. Provides comparison operations for incoming things.

>>> from knife.lazy import cmpknife
__init__(*things, snapshots=5)
Parameters:
  • things – incoming things
  • snapshots (integer) – snapshots to keep (default: 5)
__len__()

Number of incoming things.

__iter__()

Iterate over outgoing things.

all()

Discover if worker is True for all incoming things.

Returns:bool
Return type:knife object
>>> from knife import __
>>> __(2, 4, 6, 8).worker(lambda x: x % 2 == 0).all().get()
True

See also

all
function in Python standard library
all
function in Underscore.js
all
function in Underscore.lua
all
function in Underscore.perl
all
function in Underscore.php
any()

Discover if worker is True for any incoming thing.

Returns:bool
Return type:knife object
>>> __(1, 4, 5, 9).worker(lambda x: x % 2 == 0).any().get()
True

See also

any
function in Python standard library
any
function in Underscore.js
any
function in Underscore.lua
any
function in Underscore.perl
any
function in Underscore.php
append(*things)

Insert things after other incoming things.

Parameters:things – incoming things
Return type:knife object
>>> from knife import __
>>> __(3, 4, 5).append(1, 2, 3, 4, 5, 6).peek()
[3, 4, 5, 1, 2, 3, 4, 5, 6]
apply(worker, *args, **kw)

Assign callable used to work on incoming things plus any positional arguments and keyword arguments it will use.

Note

Global positional arguments and keyword arguments assigned with params are reset whenever apply is called.

Parameters:worker – a callable
Return type:knife object
ascii(errors='strict')

encode outgoing things as bytes with the 'latin-1' codec.

Parameters:errors (str) – error handling for encoding
Return type:knife object
>>> from stuf.six import u, b
>>> test = __([1], True, r't', b('i'), u('g'), None, (1,))
>>> test.ascii().oneach().peek()
['[1]', 'True', 't', 'i', 'g', 'None', '(1,)']
back()

Switch back to knife object that piped its incoming things through this knife object.

Return type:knife object
baseline()

Restore incoming things back to the baseline snapshot.

Return type:knife object
>>> from knife import __
>>> undone = __(1, 2, 3).prepend(1, 2, 3, 4, 5, 6)
>>> undone.peek()
[1, 2, 3, 4, 5, 6, 1, 2, 3]
>>> undone.snapshot().append(1).append(2).peek()
[1, 2, 3, 4, 5, 6, 1, 2, 3, 1, 2]
>>> undone.baseline().peek()
[1, 2, 3, 4, 5, 6, 1, 2, 3]
bytes(encoding='utf_8', errors='strict')

encode outgoing things as bytes.

Parameters:
Return type:

knife object

>>> test = __([1], True, r't', b('i'), u('g'), None, (1,))
>>> test.bytes().oneach().peek()
['[1]', 'True', 't', 'i', 'g', 'None', '(1,)']
clear()

Clear everything.

Return type:knife object
difference(symmetric=False)

Discover difference within a series of iterable incoming things.

Parameters:symmetric (bool) – return symmetric difference
Returns:list
Return type:knife object
>>> # default behavior
>>> test = __([1, 2, 3, 4, 5], [5, 2, 10], [10, 11, 2])
>>> test.difference().get()
[1, 3, 4]
>>> # symmetric difference
>>> test.original().difference(symmetric=True).get()
[1, 2, 3, 4, 11]

See also

set.difference
function in Python standard library
set.symmetric_difference
function in Python standard library
difference
function in Underscore.js
difference
function in Underscore.perl
difference
function in Underscore.php
get()

Return outgoing things wrapped with wrap.

Note

With only one outgoing thing, only that one outgoing thing is returned. With multiple outgoing things, they are returned wrapped with the wrapper assigned with wrap (default wrapper is list).

intersection()

Discover intersection within a series of iterable incoming things.

Returns:list
Return type:knife object
>>> __([1, 2, 3], [101, 2, 1, 10], [2, 1]).intersection().get()
[1, 2]

See also

set.intersection
function in Python standard library
intersection
function in Underscore.js
intersection
function in Underscore.perl
intersection
function in Underscore.php
oneach()

Toggle whether each outgoing thing should be individually wrapped with the wrapper assigned with wrap (default wrapper is list ) or whether all outgoing things should be wrapped all at once.

Note

knife object default behavior is to wrap all outgoing things all at once. knife objects reset back to this behavior after get or peek is called.

Return type:knife object
original()

Restore incoming things back to the original snapshot.

Note

THe original snapshot of incoming things is taken following the first knife method call but before the second knife method call (if there is a second method call)

Return type:knife object
>>> undone = __(1, 2, 3).prepend(1, 2, 3, 4, 5, 6)
>>> undone.peek()
[1, 2, 3, 4, 5, 6, 1, 2, 3]
>>> undone.original().peek()
[1, 2, 3]
params(*args, **kw)

Assign positional arguments and keyword arguments to be used globally.

Return type:knife object
pattern(pattern, type='parse', flags=0)

Compile search pattern for use as worker.

Note

Global positional arguments and keyword arguments assigned with params are reset whenever a new pattern is compiled.

Parameters:
Return type:

knife object

>>> # using parse expression
>>> test = __('first test', 'second test', 'third test')
>>> test.pattern('first {}').filter().get()
'first test'
>>> # using glob pattern
>>> test.original().pattern('second*', type='glob').filter().get()
'second test'
>>> # using regular expression
>>> test.original().pattern('third .', type='regex').filter().get()
'third test'
peek()

Preview current incoming things wrapped with wrap.

Note

With only one outgoing thing, only that one thing is returned. With multiple outgoing things, everything is returned wrapped with the wrapper assigned with wrap (default wrapper is list).

pipe(knife)

Pipe incoming things from some other knife object through this knife object.

Parameters:knife – another knife object
Return type:knife object
prepend(*things)

Insert things before other incoming things.

Parameters:things – incoming things
Return type:knife object
>>> __(3, 4, 5).prepend(1, 2, 3, 4, 5, 6).peek()
[1, 2, 3, 4, 5, 6, 3, 4, 5]
snapshot()

Take a baseline snapshot of current incoming things.

Return type:knife object
undo(snapshot=0)

Revert incoming things to a previous snapshot.

Note

A snapshot of current incoming things is taken when a knife method is called but before the main body of the method executes.

Parameters:snapshot (int) – number of steps ago 1, 2, 3, etc.
Return type:knife object
>>> undone = __(1, 2, 3).prepend(1, 2, 3, 4, 5, 6)
>>> undone.peek()
[1, 2, 3, 4, 5, 6, 1, 2, 3]
>>> # undo back one step
>>> undone.append(1).undo().peek()
[1, 2, 3, 4, 5, 6, 1, 2, 3]
>>> # undo back one step
>>> undone.append(1).append(2).undo().peek()
[1, 2, 3, 4, 5, 6, 1, 2, 3, 1]
>>> # undo back 2 steps
>>> undone.append(1).append(2).undo(2).peek()
[1, 2, 3, 4, 5, 6, 1, 2, 3, 1]
unicode(encoding='utf_8', errors='strict')

unicode (str under Python 3) decode outgoing things.

Parameters:
Return type:

knife object

>>> test = __([1], True, r't', b('i'), u('g'), None, (1,))
>>> test.unicode().oneach().peek()
[u'[1]', u'True', u't', u'i', u'g', u'None', u'(1,)']
union()

Discover union within a series of iterable incoming things.

Returns:list
Return type:knife object
>>> __([1, 2, 3], [101, 2, 1, 10], [2, 1]).union().get()
[1, 10, 3, 2, 101]

See also

set.union
function in Python standard library
union
function in Underscore.js
union
function in Underscore.perl
union
function in Underscore.php
unique()

Discover unique incoming things.

Return type:knife object
>>> # default behavior
>>> __(1, 2, 1, 3, 1, 4).unique().get()
[1, 2, 3, 4]
>>> # using worker as key function
>>> __(1, 2, 1, 3, 1, 4).worker(round).unique().get()
[1.0, 2.0, 3.0, 4.0]

See also

uniq
function in Underscore.js
uniq
function in Underscore.perl
uniq
function in Underscore.php
worker(worker)

Assign callable used to work on incoming things.

Note

Global positional arguments and keyword arguments assigned with params are reset whenever a new worker is assigned.

Parameters:worker – a callable
Return type:knife object
wrap(wrapper)

Assign object, type, or class used to wrap outgoing things.

Note

A knife object resets back to its default wrapper (list) after get or peek is called.

Parameters:wrapper – an object, type, or class
Return type:knife object
>>> __(1, 2, 3, 4, 5, 6).wrap(tuple).peek()
(1, 2, 3, 4, 5, 6)

«  knife.lazy.lazyknife — Lazier evaluated combo knife   ::   Contents   ::   knife.lazy.filterknife — Lazier evaluated filtering knife  »