csparpa / fluentcheck

Fluent assertions for Python
MIT License
84 stars 8 forks source link

Document purpose for all assertion methods #2

Open csparpa opened 5 years ago

csparpa commented 5 years ago

Each assertion method should clearly document its purpose.

As the return values for each assertion method can either be the Check object instance itself or an exception and each method takes no parameter, docs are straightforward to write.

This is the first step towards having an automated documentation system - eg. see Sphinx setup on my other projects PyOWM or Baroque.

Example

Instead of:

def is_not_complex(self):
    try:
        assert not isinstance(self._val, complex)
        return self
    except AssertionError:
        raise CheckError('{} is complex'.format(self._val))

it would be nice to have

def is_not_complex(self):
    """
    Checks that the argument is not a complex number

    :returns: the self `fluentcheck.Check` instance if assertion succeeds
    :raises: `fluentcheck.CheckError` if assertion fails

    """
    try:
        assert not isinstance(self._val, complex)
        return self
    except AssertionError:
        raise CheckError('{} is complex'.format(self._val))
hedyhli commented 4 years ago

Interesting, in that case I guess those assertion methods doc string going to be really similar (because of the raises and return)

hedyhli commented 4 years ago

Looking into this... I think the tests should also have docstr

deanagan commented 4 years ago

Thanks Hedy. The tests can have them too. I wonder if existing documentation tools can automate the docstring generation.

hedyhli commented 4 years ago

Not that I know of, but maybe a small script can do it (to automate inserting :raises:, and :return: lines), and by the way interrogate can help to look for missing doc strings

csparpa commented 4 years ago

@hedythedev @deanagan this might help: https://stackoverflow.com/questions/37549741/is-it-possible-to-bulk-add-docstrings-to-all-the-functions-in-pycharm

hedyhli commented 4 years ago

I don’t use PyCharm, but vim-pydocstring should bulk add them for me 😄