Repository: dask/dask

Issue:
ImportError: No module named 'toolz' on default install
The documentation states 

> pip install dask: Install only dask, which depends only on the standard library. This is appropriate if you only want the task schedulers.

With `dask==0.12.0` installed an import fails, because `toolz` is not required as a dependency.

```
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input> in <module>()
      1 import pandas as pd
----> 2 import dask

lib/python3.5/site-packages/dask/__init__.py in <module>()
      3 from .core import istask
      4 from .context import set_options
----> 5 from .async import get_sync as get
      6 try:
      7     from .delayed import do, delayed, value

lib/python3.5/site-packages/dask/async.py in <module>()
    118 import traceback
    119 
--> 120 from toolz import identity
    121 
    122 from .compatibility import Queue

ImportError: No module named 'toolz'
```


Discussion:
Thanks for the bug report.  We should probably just define identity in that file.  Do you have any desire to submit a PR to fix this issue?
@mrocklin I'd be happy to do a PR.

It's well-documented on dask.pydata.org, but would it also be okay if I added a small note to the `README`, mirroring what's in the "Install Dask" section of the documentation?
```
##Installation

To install Dask with pip there are a few options, depending on which
dependencies you would like to keep up to date:

* pip install dask[complete]: Install everything
* pip install dask[array]: Install dask and numpy
* pip install dask[bag]: Install dask and cloudpickle
* pip install dask[dataframe]: Install dask, numpy, and pandas
* pip install dask: Install only dask, which depends only on the standard
  library. This is appropriate if you only want the task schedulers.

We do this so that users of the lightweight core dask scheduler aren’t required
to download the more exotic dependencies of the collections (numpy, pandas,
etc.).

For more information, see the [installation
documentation](http://dask.pydata.org/en/latest/install.html)
```

I too was surprised when `pip install dask` followed by `import dask.dataframe as dd` didn't just _work_ (I get the error from this issue, plus cloudpickle is required).
The readme is currently pretty minimal.  I'd prefer to avoid copying material around.  As the project evolves and these instructions need to be updated it's much more convenient to have it in one place.  

However I agree with you that we should better clarify what is going on without users going to look at all of the documentation.  Here are some possible alternatives:

1.  Have a nice stackoverflow post that comes up quickly in google searches
2.  Raise an informative error pointing users to installation docs

Resolving patch:
diff --git a/dask/async.py b/dask/async.py
--- a/dask/async.py
+++ b/dask/async.py
@@ -117,8 +117,6 @@
 import sys
 import traceback
 
-from toolz import identity
-
 from .compatibility import Queue
 from .core import (istask, flatten, reverse_dict, get_dependencies, ishashable,
                    has_tasks)
@@ -357,6 +355,15 @@ def default_get_id():
     return None
 
 
+def identity(x):
+    """ Identity function. Returns x.
+
+    >>> identity(3)
+    3
+    """
+    return x
+
+
 '''
 Task Selection
 --------------


Test patch: