Can mypy check docstrings?











up vote
2
down vote

favorite












I have numpydoc-style docstrings:



def foobar(filename, copy, dtype, iterable, shape, files):
"""
foobar is 42.

Parameters
----------
filename : str
copy : bool
dtype : data-type
iterable : iterable object
shape : int or tuple of int
files : list of str

Returns
-------
foobarfoo : int
"""
pass


Is it possible to check if the docstring-types can possibly be correct?



(side question: Can numpy return/print the function signatures it discovered?)



For example, I would expect the following to fail:



Return Types



def foobar():
"""
Returns
-------
blub : int
"""
return "foo"


or



def foobar(a, b):
"""
Parameters
----------
a : number
b : number

Returns
-------
blub : int
"""
if a > b:
return "foo"
return 42


Parameter types



def foobar(a, b):
"""
Parameters
----------
a : str
b : int

Returns
-------
blub : int
"""
return a * b









share|improve this question


























    up vote
    2
    down vote

    favorite












    I have numpydoc-style docstrings:



    def foobar(filename, copy, dtype, iterable, shape, files):
    """
    foobar is 42.

    Parameters
    ----------
    filename : str
    copy : bool
    dtype : data-type
    iterable : iterable object
    shape : int or tuple of int
    files : list of str

    Returns
    -------
    foobarfoo : int
    """
    pass


    Is it possible to check if the docstring-types can possibly be correct?



    (side question: Can numpy return/print the function signatures it discovered?)



    For example, I would expect the following to fail:



    Return Types



    def foobar():
    """
    Returns
    -------
    blub : int
    """
    return "foo"


    or



    def foobar(a, b):
    """
    Parameters
    ----------
    a : number
    b : number

    Returns
    -------
    blub : int
    """
    if a > b:
    return "foo"
    return 42


    Parameter types



    def foobar(a, b):
    """
    Parameters
    ----------
    a : str
    b : int

    Returns
    -------
    blub : int
    """
    return a * b









    share|improve this question
























      up vote
      2
      down vote

      favorite









      up vote
      2
      down vote

      favorite











      I have numpydoc-style docstrings:



      def foobar(filename, copy, dtype, iterable, shape, files):
      """
      foobar is 42.

      Parameters
      ----------
      filename : str
      copy : bool
      dtype : data-type
      iterable : iterable object
      shape : int or tuple of int
      files : list of str

      Returns
      -------
      foobarfoo : int
      """
      pass


      Is it possible to check if the docstring-types can possibly be correct?



      (side question: Can numpy return/print the function signatures it discovered?)



      For example, I would expect the following to fail:



      Return Types



      def foobar():
      """
      Returns
      -------
      blub : int
      """
      return "foo"


      or



      def foobar(a, b):
      """
      Parameters
      ----------
      a : number
      b : number

      Returns
      -------
      blub : int
      """
      if a > b:
      return "foo"
      return 42


      Parameter types



      def foobar(a, b):
      """
      Parameters
      ----------
      a : str
      b : int

      Returns
      -------
      blub : int
      """
      return a * b









      share|improve this question













      I have numpydoc-style docstrings:



      def foobar(filename, copy, dtype, iterable, shape, files):
      """
      foobar is 42.

      Parameters
      ----------
      filename : str
      copy : bool
      dtype : data-type
      iterable : iterable object
      shape : int or tuple of int
      files : list of str

      Returns
      -------
      foobarfoo : int
      """
      pass


      Is it possible to check if the docstring-types can possibly be correct?



      (side question: Can numpy return/print the function signatures it discovered?)



      For example, I would expect the following to fail:



      Return Types



      def foobar():
      """
      Returns
      -------
      blub : int
      """
      return "foo"


      or



      def foobar(a, b):
      """
      Parameters
      ----------
      a : number
      b : number

      Returns
      -------
      blub : int
      """
      if a > b:
      return "foo"
      return 42


      Parameter types



      def foobar(a, b):
      """
      Parameters
      ----------
      a : str
      b : int

      Returns
      -------
      blub : int
      """
      return a * b






      python mypy numpydoc






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 9 at 7:21









      Martin Thoma

      39.8k52286504




      39.8k52286504
























          1 Answer
          1






          active

          oldest

          votes

















          up vote
          1
          down vote













          No, mypy understands the official Python's typing notation only. See the mypy docs. And this fine, we don't need many alternative ways to type annotate, as




          There should be one-- and preferably only one --obvious way to do it.







          share|improve this answer





















          • Aparently you got me wrong. I don't want mypy to assume the docstring is correct. I want to check the docstring correctnes with mypy. As to your comment about "only one way to do it": Can mypy generate documentation?
            – Martin Thoma
            Nov 9 at 15:50










          • @MartinThoma I think I understood you correctly, after all, because my reply is the answer to "I want to check the docstring correctnes with mypy." problem as well :) So, mypy does not analyze docstrings at all, in any way. It uses Python's type annotations and the very code to get (or guess) types and analyze them. As far as I know, docstrings are completely ignored by mypy.
            – pawelswiecki
            Nov 9 at 16:08











          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53221369%2fcan-mypy-check-docstrings%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes








          up vote
          1
          down vote













          No, mypy understands the official Python's typing notation only. See the mypy docs. And this fine, we don't need many alternative ways to type annotate, as




          There should be one-- and preferably only one --obvious way to do it.







          share|improve this answer





















          • Aparently you got me wrong. I don't want mypy to assume the docstring is correct. I want to check the docstring correctnes with mypy. As to your comment about "only one way to do it": Can mypy generate documentation?
            – Martin Thoma
            Nov 9 at 15:50










          • @MartinThoma I think I understood you correctly, after all, because my reply is the answer to "I want to check the docstring correctnes with mypy." problem as well :) So, mypy does not analyze docstrings at all, in any way. It uses Python's type annotations and the very code to get (or guess) types and analyze them. As far as I know, docstrings are completely ignored by mypy.
            – pawelswiecki
            Nov 9 at 16:08















          up vote
          1
          down vote













          No, mypy understands the official Python's typing notation only. See the mypy docs. And this fine, we don't need many alternative ways to type annotate, as




          There should be one-- and preferably only one --obvious way to do it.







          share|improve this answer





















          • Aparently you got me wrong. I don't want mypy to assume the docstring is correct. I want to check the docstring correctnes with mypy. As to your comment about "only one way to do it": Can mypy generate documentation?
            – Martin Thoma
            Nov 9 at 15:50










          • @MartinThoma I think I understood you correctly, after all, because my reply is the answer to "I want to check the docstring correctnes with mypy." problem as well :) So, mypy does not analyze docstrings at all, in any way. It uses Python's type annotations and the very code to get (or guess) types and analyze them. As far as I know, docstrings are completely ignored by mypy.
            – pawelswiecki
            Nov 9 at 16:08













          up vote
          1
          down vote










          up vote
          1
          down vote









          No, mypy understands the official Python's typing notation only. See the mypy docs. And this fine, we don't need many alternative ways to type annotate, as




          There should be one-- and preferably only one --obvious way to do it.







          share|improve this answer












          No, mypy understands the official Python's typing notation only. See the mypy docs. And this fine, we don't need many alternative ways to type annotate, as




          There should be one-- and preferably only one --obvious way to do it.








          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 9 at 15:37









          pawelswiecki

          294112




          294112












          • Aparently you got me wrong. I don't want mypy to assume the docstring is correct. I want to check the docstring correctnes with mypy. As to your comment about "only one way to do it": Can mypy generate documentation?
            – Martin Thoma
            Nov 9 at 15:50










          • @MartinThoma I think I understood you correctly, after all, because my reply is the answer to "I want to check the docstring correctnes with mypy." problem as well :) So, mypy does not analyze docstrings at all, in any way. It uses Python's type annotations and the very code to get (or guess) types and analyze them. As far as I know, docstrings are completely ignored by mypy.
            – pawelswiecki
            Nov 9 at 16:08


















          • Aparently you got me wrong. I don't want mypy to assume the docstring is correct. I want to check the docstring correctnes with mypy. As to your comment about "only one way to do it": Can mypy generate documentation?
            – Martin Thoma
            Nov 9 at 15:50










          • @MartinThoma I think I understood you correctly, after all, because my reply is the answer to "I want to check the docstring correctnes with mypy." problem as well :) So, mypy does not analyze docstrings at all, in any way. It uses Python's type annotations and the very code to get (or guess) types and analyze them. As far as I know, docstrings are completely ignored by mypy.
            – pawelswiecki
            Nov 9 at 16:08
















          Aparently you got me wrong. I don't want mypy to assume the docstring is correct. I want to check the docstring correctnes with mypy. As to your comment about "only one way to do it": Can mypy generate documentation?
          – Martin Thoma
          Nov 9 at 15:50




          Aparently you got me wrong. I don't want mypy to assume the docstring is correct. I want to check the docstring correctnes with mypy. As to your comment about "only one way to do it": Can mypy generate documentation?
          – Martin Thoma
          Nov 9 at 15:50












          @MartinThoma I think I understood you correctly, after all, because my reply is the answer to "I want to check the docstring correctnes with mypy." problem as well :) So, mypy does not analyze docstrings at all, in any way. It uses Python's type annotations and the very code to get (or guess) types and analyze them. As far as I know, docstrings are completely ignored by mypy.
          – pawelswiecki
          Nov 9 at 16:08




          @MartinThoma I think I understood you correctly, after all, because my reply is the answer to "I want to check the docstring correctnes with mypy." problem as well :) So, mypy does not analyze docstrings at all, in any way. It uses Python's type annotations and the very code to get (or guess) types and analyze them. As far as I know, docstrings are completely ignored by mypy.
          – pawelswiecki
          Nov 9 at 16:08


















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.





          Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


          Please pay close attention to the following guidance:


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53221369%2fcan-mypy-check-docstrings%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          這個網誌中的熱門文章

          Xamarin.form Move up view when keyboard appear

          Post-Redirect-Get with Spring WebFlux and Thymeleaf

          JBPM : POST request for execute process go wrong