@@ -147,3 +147,58 @@ def test_return_doc() -> None:
147147 extensions = Extensions (TypingDocExtension ()),
148148 ) as  package :
149149 assert  package ["f" ].docstring .parsed [1 ].value [0 ].description  ==  "Hello." 
150+ 
151+ 
152+ def  test_unpacking_typed_dict () ->  None :
153+  """Unpack typed dicts, resolving them to their right location.""" 
154+  with  temporary_visited_package (
155+  "package" ,
156+  {
157+  "__init__.py" : """ 
158+  from typing import TypedDict 
159+  from typing_extensions import Annotated, Doc, Unpack 
160+ 
161+  from package import module 
162+ 
163+  class Options(TypedDict): 
164+  foo: Annotated[int, Doc("Foo's description.")] 
165+ 
166+  class A: 
167+  def __init__(self, **kwargs: Unpack[Options]) -> None: 
168+  '''Init.''' 
169+  self.options = kwargs 
170+ 
171+  class B: 
172+  def __init__(self, **kwargs: Unpack[module.Options]) -> None: 
173+  '''Init.''' 
174+  self.options = kwargs 
175+  """ ,
176+  "module.py" : """ 
177+  from typing import TypedDict 
178+  from typing_extensions import Annotated, Doc 
179+ 
180+  class Options(TypedDict): 
181+  bar: Annotated[str, Doc("Bar's description.")] 
182+  """ ,
183+  },
184+  extensions = Extensions (TypingDocExtension ()),
185+  ) as  package :
186+  sections  =  package ["A.__init__" ].docstring .parsed 
187+  assert  len (sections ) ==  3 
188+  assert  sections [0 ].kind  is  DocstringSectionKind .text 
189+  assert  sections [1 ].kind  is  DocstringSectionKind .parameters 
190+  assert  sections [2 ].kind  is  DocstringSectionKind .other_parameters 
191+  foo  =  sections [2 ].value [0 ]
192+  assert  foo .name  ==  "foo" 
193+  assert  foo .description  ==  "Foo's description." 
194+  assert  str (foo .annotation ).startswith ("Annotated[int" )
195+ 
196+  sections  =  package ["B.__init__" ].docstring .parsed 
197+  assert  len (sections ) ==  3 
198+  assert  sections [0 ].kind  is  DocstringSectionKind .text 
199+  assert  sections [1 ].kind  is  DocstringSectionKind .parameters 
200+  assert  sections [2 ].kind  is  DocstringSectionKind .other_parameters 
201+  bar  =  sections [2 ].value [0 ]
202+  assert  bar .name  ==  "bar" 
203+  assert  bar .description  ==  "Bar's description." 
204+  assert  str (bar .annotation ).startswith ("Annotated[str" )
0 commit comments