@@ -201,122 +201,122 @@ def test_parse_annotation(annotation: Any, module: str, class_name: str, args: t
201
201
(type , ":py:class:`type`" ),
202
202
(collections .abc .Callable , ":py:class:`~collections.abc.Callable`" ),
203
203
(Type , ":py:class:`~typing.Type`" ),
204
- (Type [A ], ":py:class:`~typing.Type`\\ \ \ [:py:class:`~%s.A`]" % __name__ ),
204
+ (Type [A ], r ":py:class:`~typing.Type`\ \[:py:class:`~%s.A`]" % __name__ ),
205
205
(Any , ":py:data:`~typing.Any`" ),
206
206
(AnyStr , ":py:data:`~typing.AnyStr`" ),
207
- (Generic [T ], ":py:class:`~typing.Generic`\\ \\ [:py:class:`~typing.TypeVar`\\ (``T``)]" ),
207
+ (Generic [T ], r ":py:class:`~typing.Generic`\ \ [:py:class:`~typing.TypeVar`\ \(``T``)]" ),
208
208
(Mapping , ":py:class:`~typing.Mapping`" ),
209
209
(
210
210
Mapping [T , int ], # type: ignore[valid-type]
211
- ":py:class:`~typing.Mapping`\\ \\ [:py:class:`~typing.TypeVar`\\ (``T``), :py:class:`int`]" ,
211
+ r ":py:class:`~typing.Mapping`\ \ [:py:class:`~typing.TypeVar`\ \(``T``), :py:class:`int`]" ,
212
212
),
213
213
(
214
214
Mapping [str , V_contra ], # type: ignore[valid-type]
215
- ":py:class:`~typing.Mapping`\\ \\ [:py:class:`str`, :py:class:`~typing.TypeVar`\\ ("
215
+ r ":py:class:`~typing.Mapping`\ \ [:py:class:`str`, :py:class:`~typing.TypeVar`\ \("
216
216
"``V_contra``, contravariant=True)]" ,
217
217
),
218
218
(
219
219
Mapping [T , U_co ], # type: ignore[valid-type]
220
- ":py:class:`~typing.Mapping`\\ \\ [:py:class:`~typing.TypeVar`\\ (``T``), "
221
- ":py:class:`~typing.TypeVar`\\ (``U_co``, covariant=True)]" ,
220
+ r ":py:class:`~typing.Mapping`\ \ [:py:class:`~typing.TypeVar`\ \(``T``), "
221
+ r ":py:class:`~typing.TypeVar`\ \(``U_co``, covariant=True)]" ,
222
222
),
223
- (Mapping [str , bool ], ":py:class:`~typing.Mapping`\\ \ \ [:py:class:`str`, :py:class:`bool`]" ),
223
+ (Mapping [str , bool ], r ":py:class:`~typing.Mapping`\ \[:py:class:`str`, :py:class:`bool`]" ),
224
224
(Dict , ":py:class:`~typing.Dict`" ),
225
225
(
226
226
Dict [T , int ], # type: ignore[valid-type]
227
- ":py:class:`~typing.Dict`\\ \\ [:py:class:`~typing.TypeVar`\\ (``T``), :py:class:`int`]" ,
227
+ r ":py:class:`~typing.Dict`\ \ [:py:class:`~typing.TypeVar`\ \(``T``), :py:class:`int`]" ,
228
228
),
229
229
(
230
230
Dict [str , V_contra ], # type: ignore[valid-type]
231
- ":py:class:`~typing.Dict`\\ \\ [:py:class:`str`, :py:class:`~typing.TypeVar`\\ (``V_contra``, contravariant=True)]" , # noqa: E501
231
+ r ":py:class:`~typing.Dict`\ \ [:py:class:`str`, :py:class:`~typing.TypeVar`\ \(``V_contra``, contravariant=True)]" , # noqa: E501
232
232
),
233
233
(
234
234
Dict [T , U_co ], # type: ignore[valid-type]
235
- ":py:class:`~typing.Dict`\\ \\ [:py:class:`~typing.TypeVar`\\ (``T``),"
236
- " :py:class:`~typing.TypeVar`\\ (``U_co``, covariant=True)]" ,
235
+ r ":py:class:`~typing.Dict`\ \ [:py:class:`~typing.TypeVar`\ \(``T``),"
236
+ r " :py:class:`~typing.TypeVar`\ \(``U_co``, covariant=True)]" ,
237
237
),
238
- (Dict [str , bool ], ":py:class:`~typing.Dict`\\ \ \ [:py:class:`str`, :py:class:`bool`]" ),
238
+ (Dict [str , bool ], r ":py:class:`~typing.Dict`\ \[:py:class:`str`, :py:class:`bool`]" ),
239
239
(Tuple , ":py:data:`~typing.Tuple`" ),
240
- (Tuple [str , bool ], ":py:data:`~typing.Tuple`\\ \ \ [:py:class:`str`, :py:class:`bool`]" ),
241
- (Tuple [int , int , int ], ":py:data:`~typing.Tuple`\\ \ \ [:py:class:`int`, :py:class:`int`, :py:class:`int`]" ),
242
- (Tuple [str , ...], ":py:data:`~typing.Tuple`\\ \ \ [:py:class:`str`, :py:data:`...<Ellipsis>`]" ),
240
+ (Tuple [str , bool ], r ":py:data:`~typing.Tuple`\ \[:py:class:`str`, :py:class:`bool`]" ),
241
+ (Tuple [int , int , int ], r ":py:data:`~typing.Tuple`\ \[:py:class:`int`, :py:class:`int`, :py:class:`int`]" ),
242
+ (Tuple [str , ...], r ":py:data:`~typing.Tuple`\ \[:py:class:`str`, :py:data:`...<Ellipsis>`]" ),
243
243
(Union , ":py:data:`~typing.Union`" ),
244
- (Union [str , bool ], ":py:data:`~typing.Union`\\ \ \ [:py:class:`str`, :py:class:`bool`]" ),
245
- (Union [str , bool , None ], ":py:data:`~typing.Union`\\ \ \ [:py:class:`str`, :py:class:`bool`, :py:obj:`None`]" ),
246
- pytest .param (Union [str , Any ], ":py:data:`~typing.Union`\\ \ \ [:py:class:`str`, :py:data:`~typing.Any`]" ),
247
- (Optional [str ], ":py:data:`~typing.Optional`\\ \ \ [:py:class:`str`]" ),
248
- (Union [str , None ], ":py:data:`~typing.Optional`\\ \ \ [:py:class:`str`]" ),
244
+ (Union [str , bool ], r ":py:data:`~typing.Union`\ \[:py:class:`str`, :py:class:`bool`]" ),
245
+ (Union [str , bool , None ], r ":py:data:`~typing.Union`\ \[:py:class:`str`, :py:class:`bool`, :py:obj:`None`]" ),
246
+ pytest .param (Union [str , Any ], r ":py:data:`~typing.Union`\ \[:py:class:`str`, :py:data:`~typing.Any`]" ),
247
+ (Optional [str ], r ":py:data:`~typing.Optional`\ \[:py:class:`str`]" ),
248
+ (Union [str , None ], r ":py:data:`~typing.Optional`\ \[:py:class:`str`]" ),
249
249
(
250
250
Optional [Union [str , bool ]],
251
- ":py:data:`~typing.Union`\\ \ \ [:py:class:`str`, :py:class:`bool`, :py:obj:`None`]" ,
251
+ r ":py:data:`~typing.Union`\ \[:py:class:`str`, :py:class:`bool`, :py:obj:`None`]" ,
252
252
),
253
253
(Callable , ":py:data:`~typing.Callable`" ),
254
- (Callable [..., int ], ":py:data:`~typing.Callable`\\ \ \ [:py:data:`...<Ellipsis>`, :py:class:`int`]" ),
255
- (Callable [[int ], int ], ":py:data:`~typing.Callable`\\ \\ [ \ \ [:py:class:`int`], :py:class:`int`]" ),
254
+ (Callable [..., int ], r ":py:data:`~typing.Callable`\ \[:py:data:`...<Ellipsis>`, :py:class:`int`]" ),
255
+ (Callable [[int ], int ], r ":py:data:`~typing.Callable`\ \[ \[:py:class:`int`], :py:class:`int`]" ),
256
256
(
257
257
Callable [[int , str ], bool ],
258
- ":py:data:`~typing.Callable`\\ \\ [ \ \ [:py:class:`int`, :py:class:`str`], :py:class:`bool`]" ,
258
+ r ":py:data:`~typing.Callable`\ \[ \[:py:class:`int`, :py:class:`str`], :py:class:`bool`]" ,
259
259
),
260
260
(
261
261
Callable [[int , str ], None ],
262
- ":py:data:`~typing.Callable`\\ \\ [ \ \ [:py:class:`int`, :py:class:`str`], :py:obj:`None`]" ,
262
+ r ":py:data:`~typing.Callable`\ \[ \[:py:class:`int`, :py:class:`str`], :py:obj:`None`]" ,
263
263
),
264
264
(
265
265
Callable [[T ], T ],
266
- ":py:data:`~typing.Callable`\\ \\ [ \\ [:py:class:`~typing.TypeVar`\\ (``T``)],"
267
- " :py:class:`~typing.TypeVar`\\ (``T``)]" ,
266
+ r ":py:data:`~typing.Callable`\ \[\ [:py:class:`~typing.TypeVar`\ \(``T``)],"
267
+ r " :py:class:`~typing.TypeVar`\ \(``T``)]" ,
268
268
),
269
269
(
270
270
AbcCallable [[int , str ], bool ], # type: ignore[valid-type,misc,type-arg]
271
- ":py:class:`~collections.abc.Callable`\\ \\ [ \ \ [:py:class:`int`, :py:class:`str`], :py:class:`bool`]" ,
271
+ r ":py:class:`~collections.abc.Callable`\ \[ \[:py:class:`int`, :py:class:`str`], :py:class:`bool`]" ,
272
272
),
273
273
(Pattern , ":py:class:`~typing.Pattern`" ),
274
- (Pattern [str ], ":py:class:`~typing.Pattern`\\ \ \ [:py:class:`str`]" ),
274
+ (Pattern [str ], r ":py:class:`~typing.Pattern`\ \[:py:class:`str`]" ),
275
275
(IO , ":py:class:`~typing.IO`" ),
276
- (IO [str ], ":py:class:`~typing.IO`\\ \ \ [:py:class:`str`]" ),
276
+ (IO [str ], r ":py:class:`~typing.IO`\ \[:py:class:`str`]" ),
277
277
(Metaclass , ":py:class:`~%s.Metaclass`" % __name__ ),
278
278
(A , ":py:class:`~%s.A`" % __name__ ),
279
279
(B , ":py:class:`~%s.B`" % __name__ ),
280
- (B [int ], ":py:class:`~%s.B`\\ \ \ [:py:class:`int`]" % __name__ ),
280
+ (B [int ], r ":py:class:`~%s.B`\ \[:py:class:`int`]" % __name__ ),
281
281
(C , ":py:class:`~%s.C`" % __name__ ),
282
282
(D , ":py:class:`~%s.D`" % __name__ ),
283
283
(E , ":py:class:`~%s.E`" % __name__ ),
284
- (E [int ], ":py:class:`~%s.E`\\ \ \ [:py:class:`int`]" % __name__ ),
285
- (W , f ":py:{ 'class' if PY310_PLUS else 'func' } :`~typing.NewType`\\ (``W``, :py:class:`str`)" ),
286
- (T , ":py:class:`~typing.TypeVar`\\ (``T``)" ),
287
- (U_co , ":py:class:`~typing.TypeVar`\\ (``U_co``, covariant=True)" ),
288
- (V_contra , ":py:class:`~typing.TypeVar`\\ (``V_contra``, contravariant=True)" ),
289
- (X , ":py:class:`~typing.TypeVar`\\ (``X``, :py:class:`str`, :py:class:`int`)" ),
290
- (Y , ":py:class:`~typing.TypeVar`\\ (``Y``, bound= :py:class:`str`)" ),
291
- (Z , ":py:class:`~typing.TypeVar`\\ (``Z``, bound= A)" ),
292
- (S , ":py:class:`~typing.TypeVar`\\ (``S``, bound= miss)" ),
284
+ (E [int ], r ":py:class:`~%s.E`\ \[:py:class:`int`]" % __name__ ),
285
+ (W , rf ":py:{ 'class' if PY310_PLUS else 'func' } :`~typing.NewType`\ \(``W``, :py:class:`str`)" ),
286
+ (T , r ":py:class:`~typing.TypeVar`\ \(``T``)" ),
287
+ (U_co , r ":py:class:`~typing.TypeVar`\ \(``U_co``, covariant=True)" ),
288
+ (V_contra , r ":py:class:`~typing.TypeVar`\ \(``V_contra``, contravariant=True)" ),
289
+ (X , r ":py:class:`~typing.TypeVar`\ \(``X``, :py:class:`str`, :py:class:`int`)" ),
290
+ (Y , r ":py:class:`~typing.TypeVar`\ \(``Y``, bound= :py:class:`str`)" ),
291
+ (Z , r ":py:class:`~typing.TypeVar`\ \(``Z``, bound= A)" ),
292
+ (S , r ":py:class:`~typing.TypeVar`\ \(``S``, bound= miss)" ),
293
293
# ParamSpec should behave like TypeVar, except for missing constraints
294
- (P , f ":py:class:`~typing.ParamSpec`\\ (``P``{ ', bound= :py:obj:`None`' if PY312_PLUS else '' } )" ),
294
+ (P , rf ":py:class:`~typing.ParamSpec`\ \(``P``{ ', bound= :py:obj:`None`' if PY312_PLUS else '' } )" ),
295
295
(
296
296
P_co ,
297
- f ":py:class:`~typing.ParamSpec`\\ (``P_co``{ ', bound= :py:obj:`None`' if PY312_PLUS else '' } , covariant=True)" ,
297
+ rf ":py:class:`~typing.ParamSpec`\ \(``P_co``{ ', bound= :py:obj:`None`' if PY312_PLUS else '' } , covariant=True)" ,
298
298
),
299
299
(
300
300
P_contra ,
301
- f ":py:class:`~typing.ParamSpec`\\ (``P_contra``{ ', bound= :py:obj:`None`' if PY312_PLUS else '' } "
301
+ rf ":py:class:`~typing.ParamSpec`\ \(``P_contra``{ ', bound= :py:obj:`None`' if PY312_PLUS else '' } "
302
302
", contravariant=True)" ,
303
303
),
304
- (P_bound , ":py:class:`~typing.ParamSpec`\\ (``P_bound``, bound= :py:class:`str`)" ),
304
+ (P_bound , r ":py:class:`~typing.ParamSpec`\ \(``P_bound``, bound= :py:class:`str`)" ),
305
305
# ## These test for correct internal tuple rendering, even if not all are valid Tuple types
306
306
# Zero-length tuple remains
307
307
(Tuple [()], ":py:data:`~typing.Tuple`" ),
308
308
# Internal single tuple with simple types is flattened in the output
309
- (Tuple [(int ,)], ":py:data:`~typing.Tuple`\\ \ \ [:py:class:`int`]" ),
310
- (Tuple [(int , int )], ":py:data:`~typing.Tuple`\\ \ \ [:py:class:`int`, :py:class:`int`]" ),
309
+ (Tuple [(int ,)], r ":py:data:`~typing.Tuple`\ \[:py:class:`int`]" ),
310
+ (Tuple [(int , int )], r ":py:data:`~typing.Tuple`\ \[:py:class:`int`, :py:class:`int`]" ),
311
311
# Ellipsis in single tuple also gets flattened
312
- (Tuple [(int , ...)], ":py:data:`~typing.Tuple`\\ \ \ [:py:class:`int`, :py:data:`...<Ellipsis>`]" ),
312
+ (Tuple [(int , ...)], r ":py:data:`~typing.Tuple`\ \[:py:class:`int`, :py:data:`...<Ellipsis>`]" ),
313
313
(
314
314
RecList ,
315
- ":py:data:`~typing.Union`\\ \\ [:py:class:`int`, :py:class:`~typing.List`\\ \ \ [RecList]]" ,
315
+ r ":py:data:`~typing.Union`\ \ [:py:class:`int`, :py:class:`~typing.List`\ \[RecList]]" ,
316
316
),
317
317
(
318
318
MutualRecA ,
319
- ":py:data:`~typing.Union`\\ \\ [:py:class:`bool`, :py:class:`~typing.List`\\ \ \ [MutualRecB]]" ,
319
+ r ":py:data:`~typing.Union`\ \ [:py:class:`bool`, :py:class:`~typing.List`\ \[MutualRecB]]" ,
320
320
),
321
321
]
322
322
@@ -425,7 +425,7 @@ def test_format_annotation(inv: Inventory, annotation: Any, expected_result: str
425
425
("NoReturn" , None , ":py:data:`~typing.NoReturn`" ),
426
426
("Literal" , ("a" , 1 ), ":py:data:`~typing.Literal`\\ \\ [``'a'``, ``1``]" ),
427
427
("Type" , None , ":py:class:`~typing.Type`" ),
428
- ("Type" , (A ,), f ":py:class:`~typing.Type`\\ \ \ [:py:class:`~{ __name__ } .A`]" ),
428
+ ("Type" , (A ,), rf ":py:class:`~typing.Type`\ \[:py:class:`~{ __name__ } .A`]" ),
429
429
],
430
430
)
431
431
def test_format_annotation_both_libs (library : ModuleType , annotation : str , params : Any , expected_result : str ) -> None :
0 commit comments