offscale / cdd-python

Open API to/fro routes, models, and tests. Convert between docstrings, classes, methods, argparse, SQLalchemy, Pydantic, JSON-schema.
https://compilers.com.au
Apache License 2.0
14 stars 5 forks source link

Single quoted word in argument breaks docstring parsing #7

Open jamesbraza opened 3 months ago

jamesbraza commented 3 months ago

The below code with Python 3.12 and python-cdd==0.0.99rc47:

import cdd.docstring.parse

def my_function(arg: str) -> None:
    """Summary.

    Args:
        arg: A 'quoted' word. 
    """

cdd.docstring.parse.docstring(my_function.__doc__)

Will crash _parse_adhoc_doc_for_typ_phase0 with TypeError: unhashable type: 'list'

Traceback (most recent call last):
...
  File "/path/to/venv/lib/python3.12/site-packages/cdd/docstring/utils/parse_utils.py", line 263, in parse_adhoc_doc_for_typ
    candidate_type, fst_sentence, sentence = _parse_adhoc_doc_for_typ_phase0(doc, words)
                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/path/to/venv/lib/python3.12/site-packages/cdd/docstring/utils/parse_utils.py", line 410, in _parse_adhoc_doc_for_typ_phase0
    candidate_type: Optional[str] = next(
                                    ^^^^^
TypeError: unhashable type: 'list'
SamuelMarks commented 3 months ago

Good to have the bug report, checking the words are:

['A', ' ', [], '', '', ['q', 'u', 'o', 't', 'e', 'd'], 'quoted', '', ' ', 'word', '.']

Which is certainly not what is wanted at this stage.

In the middle of something let me see if I can resolve this issue in the next week. Thanks for using the library!

jamesbraza commented 3 months ago

Yeah sounds good and thank you! I am trying to use this to go from type hinted signatures + docstrings to an OpenAPI spec

SamuelMarks commented 3 months ago

Good plan. The project is just about ready to do that reliably.

Anyway, will address the issue you brought up. Also have an uncommitted local build with some other improvements relating to type inference.