= Named operations =

Entries and collections support named operations: one-off
functionality that's been given a name and a set of parameters.

    >>> from launchpadlib.testing.helpers import salgado_with_full_permissions
    >>> launchpad = salgado_with_full_permissions.login()

Arguments to named operations are automatically converted to JSON for
transmission over the wire.

    >>> ubuntu = launchpad.distributions['ubuntu']
    >>> [task for task in ubuntu.searchTasks(has_cve=True)]
    [...]

Strings that happen to be numbers are handled properly. Here, if "1.234"
were converted into a number at any point in the chain, the 'find'
operation on the server wouldn't know how to handle it and the request
would fail.

    >>> [people for people in launchpad.people.find(text="1.234")]
    []

The JSON conversion works for POST as well as GET operations.

    >>> bug = launchpad.bugs.createBug(target=ubuntu, title="Test bug",
    ...     description="Testing named operations", tags=["foo", "bar"])
    >>> sorted(bug.tags)
    [u'bar', u'foo']
