Coverage for src/papierstat/datasets/documentation.py: 94%

18 statements  

« prev     ^ index     » next       coverage.py v7.2.7, created at 2023-06-30 06:49 +0200

1# -*- coding: utf-8 -*- 

2""" 

3@file 

4@brief Automatatisation de certaines parties de la documentation. 

5""" 

6import os 

7 

8 

9def list_notebooks(subfolder, name=None, contains=None): 

10 """ 

11 Retourne les notebooks qui contiennent *name* dans leur nom. 

12 

13 @param subfolder sous-répertoire où chercher 

14 @param name préfixe à chercher 

15 @param contains extrait à chercher 

16 @return liste des notebooks (sans répertoire) 

17 """ 

18 this = os.path.dirname(__file__) 

19 nbs = [os.path.abspath( 

20 os.path.normpath( 

21 os.path.join( 

22 this, '..', '..', '..', '..', 'notebooks', subfolder))), 

23 os.path.abspath( 

24 os.path.normpath( 

25 os.path.join( 

26 this, '..', '..', '..', '_doc', 'notebooks', subfolder)))] 

27 nb_ = list(filter(os.path.exists, nbs)) 

28 if len(nb_) == 0: 

29 raise FileNotFoundError( # pragma: no cover 

30 "Unable to find notebooks in\n{0}".format('\n'.join(nbs))) 

31 nb = nb_[0] 

32 

33 name_ = name 

34 if name is not None: 

35 names = [_ for _ in os.listdir(nb) if _.startswith(name_)] 

36 if contains is not None: 

37 names = [_ for _ in os.listdir(nb) if contains in _] 

38 if len(names) == 0: 

39 raise FileNotFoundError( # pragma: no cover 

40 f"Unable to find any notebook in '{nb}'.") 

41 return names 

42 

43 

44def list_notebooks_rst_links(subfolder, name=None, contains=None): 

45 """ 

46 Retourne une liste de notebooks au format :epkg:`rst`. 

47 

48 @param subfolder sous-répertoire où chercher 

49 @param name préfixe à chercher 

50 @param contains extrait à chercher 

51 @return liste des liens 

52 """ 

53 names = list_notebooks(subfolder, name, contains) 

54 return [f":ref:`{os.path.splitext(os.path.split(name)[1])[0].replace('_', '')}rst`" 

55 for name in names]