@@ -141,6 +141,7 @@ class C(A):
141141 class D (B , C ):
142142 pass
143143
144+
144145#
145146
146147
@@ -409,5 +410,137 @@ class B:
409410 pass
410411
411412
413+ def test_class_docstring ():
414+ @schema .load
415+ class data :
416+ class A :
417+ """Very important class."""
418+
419+ assert data .classes == {
420+ 'A' : schema .Class ('A' , doc = ["Very important class." ])
421+ }
422+
423+
424+ def test_property_docstring ():
425+ @schema .load
426+ class data :
427+ class A :
428+ x : int | defs .desc ("very important property." )
429+
430+ assert data .classes == {
431+ 'A' : schema .Class ('A' , properties = [schema .SingleProperty ('x' , 'int' , doc = ["very important property." ])])
432+ }
433+
434+
435+ def test_class_docstring_newline ():
436+ @schema .load
437+ class data :
438+ class A :
439+ """Very important
440+ class."""
441+
442+ assert data .classes == {
443+ 'A' : schema .Class ('A' , doc = ["Very important" , "class." ])
444+ }
445+
446+
447+ def test_property_docstring_newline ():
448+ @schema .load
449+ class data :
450+ class A :
451+ x : int | defs .desc ("""very important
452+ property.""" )
453+
454+ assert data .classes == {
455+ 'A' : schema .Class ('A' , properties = [schema .SingleProperty ('x' , 'int' , doc = ["very important" , "property." ])])
456+ }
457+
458+
459+ def test_class_docstring_stripped ():
460+ @schema .load
461+ class data :
462+ class A :
463+ """
464+
465+ Very important class.
466+
467+ """
468+
469+ assert data .classes == {
470+ 'A' : schema .Class ('A' , doc = ["Very important class." ])
471+ }
472+
473+
474+ def test_property_docstring_stripped ():
475+ @schema .load
476+ class data :
477+ class A :
478+ x : int | defs .desc ("""
479+
480+ very important property.
481+
482+ """ )
483+
484+ assert data .classes == {
485+ 'A' : schema .Class ('A' , properties = [schema .SingleProperty ('x' , 'int' , doc = ["very important property." ])])
486+ }
487+
488+
489+ def test_class_docstring_split ():
490+ @schema .load
491+ class data :
492+ class A :
493+ """Very important class.
494+
495+ As said, very important."""
496+
497+ assert data .classes == {
498+ 'A' : schema .Class ('A' , doc = ["Very important class." , "" , "As said, very important." ])
499+ }
500+
501+
502+ def test_property_docstring_split ():
503+ @schema .load
504+ class data :
505+ class A :
506+ x : int | defs .desc ("""very important property.
507+
508+ Very very important.""" )
509+
510+ assert data .classes == {
511+ 'A' : schema .Class ('A' , properties = [
512+ schema .SingleProperty ('x' , 'int' , doc = ["very important property." , "" , "Very very important." ])])
513+ }
514+
515+
516+ def test_class_docstring_indent ():
517+ @schema .load
518+ class data :
519+ class A :
520+ """
521+ Very important class.
522+ As said, very important.
523+ """
524+
525+ assert data .classes == {
526+ 'A' : schema .Class ('A' , doc = ["Very important class." , " As said, very important." ])
527+ }
528+
529+
530+ def test_property_docstring_indent ():
531+ @schema .load
532+ class data :
533+ class A :
534+ x : int | defs .desc ("""
535+ very important property.
536+ Very very important.
537+ """ )
538+
539+ assert data .classes == {
540+ 'A' : schema .Class ('A' , properties = [
541+ schema .SingleProperty ('x' , 'int' , doc = ["very important property." , " Very very important." ])])
542+ }
543+
544+
412545if __name__ == '__main__' :
413546 sys .exit (pytest .main ([__file__ ] + sys .argv [1 :]))
0 commit comments