Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Indented regions in docstrings are highlighted as code #83

Closed
memeplex opened this issue Jul 9, 2020 · 8 comments
Closed

Indented regions in docstrings are highlighted as code #83

memeplex opened this issue Jul 9, 2020 · 8 comments
Labels
bug Something isn't working docstrings fixed in next version (main) A fix has been implemented and will appear in an upcoming version

Comments

@memeplex
Copy link

memeplex commented Jul 9, 2020

Environment data

  • Language Server version: 2020.7.0
  • OS and version: Ubuntu 20.04
  • Python version (& distribution if applicable, e.g. Anaconda): 3.8.2

Expected behaviour

Python highlighting isn't applied to natural language.

Actual behaviour

Lots of usual words (and, or, is, etc) are colorized in docstrings.

@jakebailey
Copy link
Member

Can you please provide an example? This may be a case where the code is indented and being treated as a code block, similar to: #48

@memeplex
Copy link
Author

memeplex commented Jul 9, 2020

I don't have the required environment just right now, but AFAICR argparse.Action was one case.

@huguesv
Copy link
Contributor

huguesv commented Jul 10, 2020

argparse.Action.__doc__ is all indented, so it is causing it to be treated as code.

Information about how to convert command line strings to Python objects.

    Action objects are used by an ArgumentParser to represent the information
    needed to parse a single argument from one or more strings from the
    command line. The keyword arguments to the Action constructor are also
    all attributes of Action instances.

    Keyword Arguments:

        - option_strings -- A list of command-line option strings which
            should be associated with this action.

        - dest -- The name of the attribute to hold the created object(s)

        - nargs -- The number of command-line arguments that should be
            consumed. By default, one argument will be consumed and a single
            value will be produced.  Other values include:
                - N (an integer) consumes N arguments (and produces a list)
                - '?' consumes zero or one arguments
                - '*' consumes zero or more arguments (and produces a list)
                - '+' consumes one or more arguments (and produces a list)
            Note that the difference between the default and nargs=1 is that
            with the default, a single value will be produced, while with
            nargs=1, a list containing a single value will be produced.

        - const -- The value to be produced if the option is specified and the
            option uses an action that takes no values.

        - default -- The value to be produced if the option is not specified.

        - type -- A callable that accepts a single string argument, and
            returns the converted value.  The standard Python types str, int,
            float, and complex are useful examples of such callables.  If None,
            str is used.

        - choices -- A container of values that should be allowed. If not None,
            after a command-line argument has been converted to the appropriate
            type, an exception will be raised if it is not a member of this
            collection.

        - required -- True if the action must always be specified at the
            command line. This is only meaningful for optional command-line
            arguments.

        - help -- The help string describing the argument.

        - metavar -- The name to be used for the option's argument with the
            help string. If None, the 'dest' value will be used as the name.
    ```

@memeplex
Copy link
Author

There are many many docstrings with indented natural language, please see my comment #41 (comment).

@jakebailey jakebailey changed the title Don't highlight python keywords in docstrings Indented regions in docstrings are highlighted as code Jul 11, 2020
@github-actions github-actions bot removed the triage label Jul 30, 2020
@judej judej added enhancement New feature or request bug Something isn't working needs investigation Could be an issue - needs investigation and removed triage enhancement New feature or request labels Aug 3, 2020
@bradennapier
Copy link

bradennapier commented Aug 9, 2020

image

Which comes from the hmac.new

    """Create a new hashing object and return it.

    key: bytes or buffer, The starting key for the hash.
    msg: bytes or buffer, Initial input for the hash, or None.
    digestmod: A hash name suitable for hashlib.new(). *OR*
               A hashlib constructor returning a new hash object. *OR*
               A module supporting PEP 247.

               Required as of 3.8, despite its position after the optional
               msg argument.  Passing it as a keyword argument is
               recommended, though not required for legacy API reasons.

    You can now feed arbitrary bytes into the object using its update()
    method, and can ask for the hash value at any time by calling its digest()
    or hexdigest() methods.
    """

@savannahostrowski savannahostrowski added in backlog and removed needs investigation Could be an issue - needs investigation labels Jan 13, 2021
@jakebailey jakebailey added the fixed in next version (main) A fix has been implemented and will appear in an upcoming version label Feb 2, 2021
@jakebailey
Copy link
Member

The next release includes a few docstring improvements which should resolve this for a few different docstring styles, including numpy/google/sphinx styles.

@jakebailey
Copy link
Member

jakebailey commented Feb 2, 2021

Just to give a preview ahead of the next release, this is argparse.Action:

image

hmac.new:

image

And a few others:

image

image

(@bschnurr deserves all of the credit for this 😄)

@jakebailey
Copy link
Member

This issue has been fixed in version 2021.2.0, which we've just released. You can find the changelog here: https://github.com/microsoft/pylance-release/blob/main/CHANGELOG.md#202120-3-february-2021

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working docstrings fixed in next version (main) A fix has been implemented and will appear in an upcoming version
Projects
None yet
Development

No branches or pull requests

6 participants