ml-tooling / lazydocs

📖 Generate markdown API documentation from Google-style Python docstring. The lazy alternative to Sphinx.
MIT License
205 stars 38 forks source link

Floating point default values not being rendered. #18

Closed mashrurmorshed closed 3 years ago

mashrurmorshed commented 3 years ago

Describe the bug: Decimal points are missed in default float values.

For example, if I have a function def foo(x = 0.01):, the docs will show x = 01. The markdown generator is unable to handle floating point default values.

Expected behaviour:

I expect my default floating point values to show up how I specified them in the code.

Steps to reproduce the issue:

For example, for the following function:

def foo(x : float = 0.01, y : int = 2) -> float:
    """Some function.

    Args:
        x (float, optional): A float number. Defaults to 0.01.
        y (int, optional): An integer. Defaults to 2.

    Returns:
        float: Their product.
    """     

    return x * y

Lazydoc renders it as:

image

Note the x=01, missing the ".".

Technical details:

Possible Fix:

Most likely there isn't any floating point support, or something's missing somewhere. I believe this should be an easy fix.

Additional context:

mashrurmorshed commented 3 years ago

The bug is here

 if remove_package:
    # Remove all package path from signature
    signature = re.sub(r"([a-zA-Z0-9_]*?\.)", "", signature)

While attempting to remove package names, floating point defaults in the function signature are losing their floating decimal dot.

lukasmasuch commented 3 years ago

@ID56 Thanks for reporting and investigating the issue :) I have pushed a small fix for this issue here: https://github.com/ml-tooling/lazydocs/commit/dd8706583b53310730f4288334129a8bd7f3c43f