Quantcast
Channel: Planet Plone - Where Developers And Integrators Write
Viewing all articles
Browse latest Browse all 3535

Hector Velarde: Using pep257, a Python docstring style checker with Buildout

$
0
0
PEP 257 documents the semantics and conventions associated with Python docstrings. According to it:

A docstring is a string literal that occurs as the first statement in a module, function, class, or method definition. Such a docstring becomes the __doc__ special attribute of that object.

This is specially useful, for instance, when you are introspecting code and you want to know what a specific method or function does.

pep257 is a Python docstring style checker.

I already filled a feature request on plone.recipe.codeanalysis to add support for it; meanwhile, if you want to use it in your Buildout-based projects, you can add the following to your buildout configuration:

After running bin/buildout you will find a bin/pep257 script.

A typical output will look like this:

(python-2.7)# hvelarde@nanovac (master * u+1) ~/collective/polls 
# bin/pep257 src/
src/collective/__init__.py:1 at module level:
D100: Docstring missing
src/collective/polls/js_i18n_helper.py:1 at module level:
D100: Docstring missing
src/collective/polls/js_i18n_helper.py:8 in public class `LegendOthersTranslation`:
D101: Docstring missing
src/collective/polls/js_i18n_helper.py:14 in public method `render`:
D102: Docstring missing
src/collective/polls/testing.py:1 at module level:
D100: Docstring missing
src/collective/polls/testing.py:10 in public class `Fixture`:
D101: Docstring missing
src/collective/polls/testing.py:14 in public method `setUpZope`:
D102: Docstring missing
src/collective/polls/testing.py:19 in public method `setUpPloneSite`:
D102: Docstring missing
src/collective/polls/config.py:1 at module level:
D100: Docstring missing
src/collective/polls/polls.py:1 at module level:
D100: Docstring missing
src/collective/polls/polls.py:21 in public class `IPolls`:
D101: Docstring missing
src/collective/polls/polls.py:24 in public method `recent_polls`:
D400: First line should end with '.', not 's'
src/collective/polls/polls.py:24 in public method `recent_polls`:
D300: Expected """-quotes, got '''-quotes
src/collective/polls/polls.py:27 in public method `uid_for_poll`:
D400: First line should end with '.', not 'l'
src/collective/polls/polls.py:27 in public method `uid_for_poll`:
D300: Expected """-quotes, got '''-quotes
src/collective/polls/polls.py:30 in public method `poll_by_uid`:
D400: First line should end with '.', not 'd'
src/collective/polls/polls.py:30 in public method `poll_by_uid`:
D300: Expected """-quotes, got '''-quotes
src/collective/polls/polls.py:33 in public method `voters_in_a_poll`:
D400: First line should end with '.', not 'l'
src/collective/polls/polls.py:33 in public method `voters_in_a_poll`:
D300: Expected """-quotes, got '''-quotes
src/collective/polls/polls.py:36 in public method `voted_in_a_poll`:
D400: First line should end with '.', not 'd'
src/collective/polls/polls.py:36 in public method `voted_in_a_poll`:
D300: Expected """-quotes, got '''-quotes
src/collective/polls/polls.py:39 in public method `allowed_to_edit`:
D401: First line should be imperative: 'i', not 'is'
src/collective/polls/polls.py:39 in public method `allowed_to_edit`:
D400: First line should end with '.', not 'l'
src/collective/polls/polls.py:39 in public method `allowed_to_edit`:
D300: Expected """-quotes, got '''-quotes
src/collective/polls/polls.py:42 in public method `allowed_to_view`:
D401: First line should be imperative: 'I', not 'Is'
src/collective/polls/polls.py:42 in public method `allowed_to_view`:
D400: First line should end with '.', not 'l'
src/collective/polls/polls.py:42 in public method `allowed_to_view`:
D300: Expected """-quotes, got '''-quotes
src/collective/polls/polls.py:45 in public method `allowed_to_vote`:
D400: First line should end with '.', not 'l'
src/collective/polls/polls.py:45 in public method `allowed_to_vote`:
D300: Expected """-quotes, got '''-quotes
src/collective/polls/polls.py:48 in public method `anonymous_vote_id`:
D400: First line should end with '.', not 'd'
src/collective/polls/polls.py:48 in public method `anonymous_vote_id`:
D300: Expected """-quotes, got '''-quotes
src/collective/polls/polls.py:52 in public class `Polls`:
D203: Expected 1 blank line *before* class docstring, found 0
src/collective/polls/polls.py:52 in public class `Polls`:
D400: First line should end with '.', not 's'
src/collective/polls/polls.py:52 in public class `Polls`:
D300: Expected """-quotes, got '''-quotes
src/collective/polls/polls.py:60 in public method `ct`:
D102: Docstring missing
src/collective/polls/polls.py:64 in public method `mt`:
D102: Docstring missing
src/collective/polls/polls.py:68 in public method `wt`:
D102: Docstring missing
src/collective/polls/polls.py:72 in public method `member`:
D102: Docstring missing
src/collective/polls/polls.py:75 in private method `_query_for_polls`:
D400: First line should end with '.', not 's'
src/collective/polls/polls.py:75 in private method `_query_for_polls`:
D300: Expected """-quotes, got '''-quotes
src/collective/polls/polls.py:81 in public method `uid_for_poll`:
D400: First line should end with '.', not 'l'
src/collective/polls/polls.py:81 in public method `uid_for_poll`:
D300: Expected """-quotes, got '''-quotes
src/collective/polls/polls.py:85 in public method `recent_polls`:
D400: First line should end with '.', not 's'
src/collective/polls/polls.py:85 in public method `recent_polls`:
D300: Expected """-quotes, got '''-quotes
src/collective/polls/polls.py:98 in public method `poll_by_uid`:
D400: First line should end with '.', not 'd'
src/collective/polls/polls.py:98 in public method `poll_by_uid`:
D300: Expected """-quotes, got '''-quotes
src/collective/polls/polls.py:109 in public method `voted_in_a_poll`:
D400: First line should end with '.', not 'd'
src/collective/polls/polls.py:109 in public method `voted_in_a_poll`:
D300: Expected """-quotes, got '''-quotes
src/collective/polls/polls.py:128 in public method `allowed_to_edit`:
D401: First line should be imperative: 'I', not 'Is'
src/collective/polls/polls.py:128 in public method `allowed_to_edit`:
D400: First line should end with '.', not 'l'
src/collective/polls/polls.py:128 in public method `allowed_to_edit`:
D300: Expected """-quotes, got '''-quotes
src/collective/polls/polls.py:133 in public method `allowed_to_view`:
D401: First line should be imperative: 'I', not 'Is'
src/collective/polls/polls.py:133 in public method `allowed_to_view`:
D400: First line should end with '.', not 'l'
src/collective/polls/polls.py:133 in public method `allowed_to_view`:
D300: Expected """-quotes, got '''-quotes
src/collective/polls/polls.py:137 in public method `allowed_to_vote`:
D401: First line should be imperative: 'i', not 'is'
src/collective/polls/polls.py:137 in public method `allowed_to_vote`:
D400: First line should end with '.', not '?'
src/collective/polls/polls.py:137 in public method `allowed_to_vote`:
D300: Expected """-quotes, got '''-quotes
src/collective/polls/polls.py:156 in public class `PollPortletRender`:
D203: Expected 1 blank line *before* class docstring, found 0
src/collective/polls/polls.py:156 in public class `PollPortletRender`:
D204: Expected 1 blank line *after* class docstring, found 0
src/collective/polls/polls.py:156 in public class `PollPortletRender`:
D400: First line should end with '.', not 'w'
src/collective/polls/polls.py:181 in public method `render_portlet`:
D202: No blank lines allowed *after* method docstring, found 1
src/collective/polls/polls.py:251 in public method `render`:
D400: First line should end with '.', not 'e'
src/collective/polls/__init__.py:1 at module level:
D100: Docstring missing
src/collective/polls/subscribers.py:1 at module level:
D100: Docstring missing
src/collective/polls/subscribers.py:17 in public function `fix_permissions`:
D401: First line should be imperative: 'Thi', not 'This'
src/collective/polls/subscribers.py:17 in public function `fix_permissions`:
D400: First line should end with '.', not 'f'
src/collective/polls/subscribers.py:17 in public function `fix_permissions`:
D205: Blank line missing between one-line summary and description
src/collective/polls/subscribers.py:17 in public function `fix_permissions`:
D208: Docstring is over-indented
src/collective/polls/subscribers.py:17 in public function `fix_permissions`:
D300: Expected """-quotes, got '''-quotes
src/collective/polls/subscribers.py:37 in public function `remove_votes`:
D401: First line should be imperative: 'Thi', not 'This'
src/collective/polls/subscribers.py:37 in public function `remove_votes`:
D400: First line should end with '.', not 't'
src/collective/polls/subscribers.py:37 in public function `remove_votes`:
D205: Blank line missing between one-line summary and description
src/collective/polls/subscribers.py:37 in public function `remove_votes`:
D208: Docstring is over-indented
src/collective/polls/subscribers.py:37 in public function `remove_votes`:
D300: Expected """-quotes, got '''-quotes
src/collective/polls/setuphandlers.py:1 at module level:
D100: Docstring missing
src/collective/polls/setuphandlers.py:12 in public class `HiddenProfiles`:
D101: Docstring missing
src/collective/polls/setuphandlers.py:18 in public method `getNonInstallableProfiles`:
D102: Docstring missing
src/collective/polls/setuphandlers.py:23 in public function `updateWorkflowDefinitions`:
D103: Docstring missing
src/collective/polls/setuphandlers.py:29 in public function `setupVarious`:
D103: Docstring missing
src/collective/polls/portlet/voteportlet.py:1 at module level:
D100: Docstring missing
src/collective/polls/portlet/voteportlet.py:24 in public function `PossiblePolls`:
D103: Docstring missing
src/collective/polls/portlet/voteportlet.py:46 in public class `IVotePortlet`:
D203: Expected 1 blank line *before* class docstring, found 0
src/collective/polls/portlet/voteportlet.py:46 in public class `IVotePortlet`:
D400: First line should end with '.', not 't'
src/collective/polls/portlet/voteportlet.py:46 in public class `IVotePortlet`:
D205: Blank line missing between one-line summary and description
src/collective/polls/portlet/voteportlet.py:87 in public class `Assignment`:
D203: Expected 1 blank line *before* class docstring, found 0
src/collective/polls/portlet/voteportlet.py:102 in public method `__init__`:
D102: Docstring missing
src/collective/polls/portlet/voteportlet.py:111 in public method `title`:
D401: First line should be imperative: 'Thi', not 'This'
src/collective/polls/portlet/voteportlet.py:111 in public method `title`:
D400: First line should end with '.', not 'e'
src/collective/polls/portlet/voteportlet.py:111 in public method `title`:
D205: Blank line missing between one-line summary and description
src/collective/polls/portlet/voteportlet.py:118 in public class `Renderer`:
D203: Expected 1 blank line *before* class docstring, found 0
src/collective/polls/portlet/voteportlet.py:129 in public method `utility`:
D200: One-line docstring should not occupy 2 lines
src/collective/polls/portlet/voteportlet.py:135 in public method `portlet_manager_name`:
D102: Docstring missing
src/collective/polls/portlet/voteportlet.py:149 in public method `poll`:
D102: Docstring missing
src/collective/polls/portlet/voteportlet.py:170 in public method `poll_uid`:
D200: One-line docstring should not occupy 2 lines
src/collective/polls/portlet/voteportlet.py:176 in public method `getVotingResults`:
D102: Docstring missing
src/collective/polls/portlet/voteportlet.py:184 in public method `can_vote`:
D102: Docstring missing
src/collective/polls/portlet/voteportlet.py:193 in public method `available`:
D102: Docstring missing
src/collective/polls/portlet/voteportlet.py:202 in public method `is_closed`:
D102: Docstring missing
src/collective/polls/portlet/voteportlet.py:208 in public class `AddForm`:
D203: Expected 1 blank line *before* class docstring, found 0
src/collective/polls/portlet/voteportlet.py:208 in public class `AddForm`:
D204: Expected 1 blank line *after* class docstring, found 0
src/collective/polls/portlet/voteportlet.py:217 in public method `create`:
D102: Docstring missing
src/collective/polls/portlet/voteportlet.py:221 in public class `EditForm`:
D203: Expected 1 blank line *before* class docstring, found 0
src/collective/polls/portlet/voteportlet.py:221 in public class `EditForm`:
D204: Expected 1 blank line *after* class docstring, found 0
src/collective/polls/portlet/__init__.py:1 at module level:
D100: Docstring missing
src/collective/polls/Extensions/Install.py:1 at module level:
D100: Docstring missing
src/collective/polls/Extensions/Install.py:7 in public function `uninstall`:
D103: Docstring missing
src/collective/polls/Extensions/__init__.py:1 at module level:
D100: Docstring missing
src/collective/polls/tests/__init__.py:1 at module level:
D100: Docstring missing
src/collective/polls/content/__init__.py:1 at module level:
D100: Docstring missing
src/collective/polls/content/poll.py:1 at module level:
D100: Docstring missing
src/collective/polls/content/poll.py:34 in public class `InsuficientOptions`:
D101: Docstring missing
src/collective/polls/content/poll.py:38 in public class `IPoll`:
D203: Expected 1 blank line *before* class docstring, found 0
src/collective/polls/content/poll.py:38 in public class `IPoll`:
D200: One-line docstring should not occupy 2 lines
src/collective/polls/content/poll.py:80 in public method `validate_options`:
D200: One-line docstring should not occupy 2 lines
src/collective/polls/content/poll.py:90 in public class `Poll`:
D203: Expected 1 blank line *before* class docstring, found 0
src/collective/polls/content/poll.py:90 in public class `Poll`:
D400: First line should end with '.', not 'e'
src/collective/polls/content/poll.py:90 in public class `Poll`:
D200: One-line docstring should not occupy 2 lines
src/collective/polls/content/poll.py:101 in public method `annotations`:
D102: Docstring missing
src/collective/polls/content/poll.py:105 in public method `utility`:
D102: Docstring missing
src/collective/polls/content/poll.py:109 in public method `getOptions`:
D200: One-line docstring should not occupy 2 lines
src/collective/polls/content/poll.py:115 in private method `_getVotes`:
D200: One-line docstring should not occupy 2 lines
src/collective/polls/content/poll.py:133 in public method `getResults`:
D200: One-line docstring should not occupy 2 lines
src/collective/polls/content/poll.py:144 in private method `_validateVote`:
D200: One-line docstring should not occupy 2 lines
src/collective/polls/content/poll.py:155 in private method `_setVoter`:
D200: One-line docstring should not occupy 2 lines
src/collective/polls/content/poll.py:180 in public method `voters`:
D102: Docstring missing
src/collective/polls/content/poll.py:186 in public method `total_votes`:
D200: One-line docstring should not occupy 2 lines
src/collective/polls/content/poll.py:192 in public method `setVote`:
D200: One-line docstring should not occupy 2 lines
src/collective/polls/content/poll.py:217 in public class `PollAddForm`:
D203: Expected 1 blank line *before* class docstring, found 0
src/collective/polls/content/poll.py:217 in public class `PollAddForm`:
D200: One-line docstring should not occupy 2 lines
src/collective/polls/content/poll.py:223 in public method `create`:
D102: Docstring missing
src/collective/polls/content/poll.py:235 in public class `PollEditForm`:
D203: Expected 1 blank line *before* class docstring, found 0
src/collective/polls/content/poll.py:235 in public class `PollEditForm`:
D200: One-line docstring should not occupy 2 lines
src/collective/polls/content/poll.py:241 in public method `updateWidgets`:
D200: One-line docstring should not occupy 2 lines
src/collective/polls/content/poll.py:258 in public method `applyChanges`:
D102: Docstring missing
src/collective/polls/content/poll.py:270 in public class `View`:
D101: Docstring missing
src/collective/polls/content/poll.py:277 in public method `update`:
D102: Docstring missing
src/collective/polls/content/poll.py:346 in public method `can_vote`:
D102: Docstring missing
src/collective/polls/content/poll.py:357 in public method `can_edit`:
D102: Docstring missing
src/collective/polls/content/poll.py:362 in public method `has_voted`:
D200: One-line docstring should not occupy 2 lines
src/collective/polls/content/poll.py:371 in public method `poll_uid`:
D200: One-line docstring should not occupy 2 lines
src/collective/polls/content/poll.py:377 in public method `getOptions`:
D200: One-line docstring should not occupy 2 lines
src/collective/polls/content/poll.py:382 in public method `getResults`:
D200: One-line docstring should not occupy 2 lines

Viewing all articles
Browse latest Browse all 3535

Trending Articles