55 cull , dedent , display , done , error , fatal , fmt , full_stop , indent , Inform ,
66 is_collection , is_iterable , is_mapping , is_str , join , get_prog_name ,
77 get_informer , narrate , os_error , output , plural , render , terminate ,
8- title_case , truth , warn , ddd , ppp , sss , vvv , ProgressBar , parse_range ,
8+ title_case , tree , truth , warn , ddd , ppp , sss , vvv , ProgressBar , parse_range ,
99 format_range
1010)
1111from textwrap import dedent as tw_dedent
@@ -1810,9 +1810,26 @@ def test_oblong():
18101810 assert render_bar (0.66 , 25 ) == '████████████████▌'
18111811
18121812
1813- @parametrize ('given' , ['a' , '\n a' , 'a\n ' , '\n a\n ' , '\n a\n b\n ' ])
1813+ @parametrize ('given' , ['' , ' a' , '\n a' , 'a\n ' , '\n a\n ' , '\n a\n b\n ' ])
18141814def test_dedent_compatibility (given ):
18151815 assert dedent (given ) == tw_dedent (given )
1816+ assert dedent (given , strip_nl = 'b' ) == tw_dedent (given ).strip ()
1817+ assert dedent (given , strip_nl = 'l' ) == tw_dedent (given ).lstrip ()
1818+ assert dedent (given , strip_nl = 't' ) == tw_dedent (given ).rstrip ()
1819+ assert dedent (given , strip_nl = 's' ) == tw_dedent (given ).lstrip ()
1820+ assert dedent (given , strip_nl = 'e' ) == tw_dedent (given ).rstrip ()
1821+ assert dedent (given , strip_nl = 'r' ) == tw_dedent (given ).rstrip ()
1822+ assert dedent (given , strip_nl = True ) == tw_dedent (given ).strip ()
1823+ assert dedent (given , strip_nl = False ) == tw_dedent (given )
1824+
1825+ given = '''
1826+ ◊ Diaspar
1827+ Lys
1828+ '''
1829+ assert dedent (given , bolm = '◊' , strip_nl = 'b' ) == " Diaspar\n Lys"
1830+
1831+ given = '\n Diaspar\n Lys\n '
1832+ assert dedent (given , strip_nl = 'b' , wrap = True ) == "Diaspar Lys"
18161833
18171834
18181835def test_render_tuples ():
@@ -1821,6 +1838,96 @@ def test_render_tuples():
18211838 assert render ((0 ,1 )) == '(0, 1)'
18221839 assert render ((0 ,1 ,2 )) == '(0, 1, 2)'
18231840
1841+ def test_tree ():
1842+ data = data = dict (
1843+ str = 'text' ,
1844+ mlstr = dedent ("""
1845+ line 1
1846+ line 2
1847+ """ ).strip (),
1848+ alist = [1 , 2 , 3 ],
1849+ adict = {1 : 'one' , 2 : 'two' , 3 : 'three' , 'four' : None }
1850+ )
1851+ result = tree (data , squeeze = True )
1852+ expected = dedent ('''
1853+ str: text
1854+ mlstr: line 1
1855+ line 2
1856+ alist
1857+ ├── 1
1858+ ├── 2
1859+ └── 3
1860+ adict
1861+ ├── 1: one
1862+ ├── 2: two
1863+ ├── 3: three
1864+ └── four
1865+ ''' ).strip ()
1866+ assert result == expected
1867+
1868+ result = tree (data )
1869+ expected = dedent ('''
1870+ str
1871+ └── text
1872+ mlstr
1873+ └── line 1
1874+ line 2
1875+ alist
1876+ ├── 1
1877+ ├── 2
1878+ └── 3
1879+ adict
1880+ ├── 1
1881+ │ └── one
1882+ ├── 2
1883+ │ └── two
1884+ ├── 3
1885+ │ └── three
1886+ └── four
1887+ ''' ).strip ()
1888+ assert result == expected
1889+
1890+ result = tree (dict (root = data ), squeeze = True )
1891+ expected = dedent ('''
1892+ root
1893+ ├── str: text
1894+ ├── mlstr: line 1
1895+ │ line 2
1896+ ├── alist
1897+ │ ├── 1
1898+ │ ├── 2
1899+ │ └── 3
1900+ └── adict
1901+ ├── 1: one
1902+ ├── 2: two
1903+ ├── 3: three
1904+ └── four
1905+ ''' ).strip ()
1906+ assert result == expected
1907+
1908+ result = tree (dict (root = data ))
1909+ expected = dedent ('''
1910+ root
1911+ ├── str
1912+ │ └── text
1913+ ├── mlstr
1914+ │ └── line 1
1915+ │ line 2
1916+ ├── alist
1917+ │ ├── 1
1918+ │ ├── 2
1919+ │ └── 3
1920+ └── adict
1921+ ├── 1
1922+ │ └── one
1923+ ├── 2
1924+ │ └── two
1925+ ├── 3
1926+ │ └── three
1927+ └── four
1928+ ''' ).strip ()
1929+ assert result == expected
1930+
18241931
18251932if __name__ == '__main__' :
18261933 # As a debugging aid allow the tests to be run on their own, outside pytest.
0 commit comments