I don't think this is correct. For example, when `TEST_DATA_DIR` is set to an invalid path `valid_data` will be `False` (as opposed to `None`), so the condition `valid_data is None` won't cause the test to be skipped.

There's no real need to change this `skip_data` decorator so the simplest option would be to just revert all the non-docstring changes. But if you do want to press ahead, how about just:
```
no_data = (not iris.config.TEST_DATA_DIR or
           not os.path.isdir(iris.config.TEST_DATA_DIR) or
           os.environ.get('IRIS_TEST_NO_DATA'))

skip = unittest.skipIf(condition=no_data, ...
```