Skip to main content

Generate/convert automatically the docstrings from code signature

Project description

Create, update or convert docstrings in existing Python files, managing several styles.

Description

This Python (2.7+/3+, or 2.6 if installed _argparser_) program intends to help Python programmers to enhance inside code documentation using docstrings. It is useful for code not well documented, or code without docstrings, or some not yet or partially documented code, or a mix of all of this :-) It can be helpful also to harmonize or change a project docstring style format.

It will parse one or several python scripts and retrieve existing docstrings. Then, for all found functions/methods/classes, it will generate formatted docstrings with parameters, default values,…

At the end, patches are generated for each file. Then, man can apply the patches to the initial scripts. An option allow to update the files directly without generating patches. It is also possible to generate the python file with the new docstrings, or to retrieve only the docstrings…

Currently, the managed styles in input/output are javadoc, one variant of reST (re-Structured Text, used by Sphinx), numpydoc, google docstrings, groups (other grouped style).

You can also configure some settings via the command line or a configuration file.

To get further information please refer to the documentation.

The tool, at the time, offer to generate patches or get a list of the new docstrings (created or converted).

You can contact the developer dadel and speak about the project on IRC Freenode’s channel #pyment.

Start quickly

  • get and install:

$ git install pyment
or
$ pip install git+https://github.com/dadadel/pyment.git
  • run from the command line:

$ pyment  myfile.py    # will generate a patch
$ pyment -w myfile.py  # will overwrite the file

or

$ pyment  my/folder/
  • get help:

$ pyment -h
  • run from a script:

import os
from pyment import PyComment

filename = 'test.py'

c = PyComment(filename)
c.proceed()
c.diff_to_file(os.path.basename(filename) + ".patch")
for s in c.get_output_docs():
    print(s)

Example

Here is a full example using Pyment to generate a patch and then apply the patch.

Let’s consider a file test.py with following content:

def func(param1=True, param2='default val'):
    '''Description of func with docstring groups style.

    Params:
        param1 - descr of param1 that has True for default value.
        param2 - descr of param2

    Returns:
        some value

    Raises:
        keyError: raises key exception
        TypeError: raises type exception

    '''
    pass

class A:
    def method(self, param1, param2=None):
        pass

Now let’s use Pyment:

$ pyment test.py

Using Pyment without any argument will autodetect the docstrings formats and generate a patch using the reStructured Text format. So the previous command has generated the file test.py.patch with following content:

# Patch generated by Pyment v0.2.0

--- a/test.py
+++ b/test.py
@@ -1,20 +1,22 @@
 def func(param1=True, param2='default val'):
-    '''Description of func with docstring groups style.
+    """Description of func with docstring groups style.

-    Params:
-        param1 - descr of param1 that has True for default value.
-        param2 - descr of param2
+    :param param1: descr of param1 that has True for default value
+    :param param2: descr of param2 (Default value = 'default val')
+    :returns: some value
+    :raises keyError: raises key exception
+    :raises TypeError: raises type exception

-    Returns:
-        some value
-
-    Raises:
-        keyError: raises key exception
-        TypeError: raises type exception
-
-    '''
+    """
     pass

 class A:
+    """ """
     def method(self, param1, param2=None):
+        """
+
+        :param param1:
+        :param param2:  (Default value = None)
+
+        """
         pass

Let’s finally apply the patch with the following command:

$ patch -p1 < test.py.patch

Now the original test.py was updated and its content is now:

def func(param1=True, param2='default val'):
    """Description of func with docstring groups style.

    :param param1: descr of param1 that has True for default value
    :param param2: descr of param2 (Default value = 'default val')
    :returns: some value
    :raises keyError: raises key exception
    :raises TypeError: raises type exception

    """
    pass

class A:
    """ """
    def method(self, param1, param2=None):
        """

        :param param1:
        :param param2:  (Default value = None)

        """
        pass

Also refer to the files example.py.patch or example_numpy.py.patch to see some other results that can be obtained processing the file example.py

Offer a coffee or a beer

If you enjoyed this free software, and want to thank me, you can offer me some bitcoins for a coffee, a beer, or more, I would be happy :)

Here’s my address for bitcoins : 1Kz5bu4HuRtwbjzopN6xWSVsmtTDK6Kb89

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

Pyment-0.3.3.tar.gz (21.0 kB view details)

Uploaded Source

Built Distribution

Pyment-0.3.3-py2.py3-none-any.whl (21.9 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file Pyment-0.3.3.tar.gz.

File metadata

  • Download URL: Pyment-0.3.3.tar.gz
  • Upload date:
  • Size: 21.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.0.0 requests-toolbelt/0.8.0 tqdm/4.23.4 CPython/3.5.2

File hashes

Hashes for Pyment-0.3.3.tar.gz
Algorithm Hash digest
SHA256 951a4c52d6791ccec55bc739811169eed69917d3874f5fe722866623a697f39d
MD5 08b6a412cb423b1dd8cec043bc71f3a1
BLAKE2b-256 dd9ec58a151c7020f6fdd48eea0085a9d1c91a57da19fa4e7bff0daf930c9900

See more details on using hashes here.

File details

Details for the file Pyment-0.3.3-py2.py3-none-any.whl.

File metadata

  • Download URL: Pyment-0.3.3-py2.py3-none-any.whl
  • Upload date:
  • Size: 21.9 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.0.0 requests-toolbelt/0.8.0 tqdm/4.23.4 CPython/3.5.2

File hashes

Hashes for Pyment-0.3.3-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 a0c6ec59d06d24aeec3eaecb22115d0dc95d09e14209b2df838381fdf47a78cc
MD5 4e4e92c112068fcaff6d07779b51d5a6
BLAKE2b-256 5201810e174c28a7dcf5f91c048faf69c84eafee60c9a844e4ce21671b2e99bb

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page