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
« 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
9def list_notebooks(subfolder, name=None, contains=None):
10 """
11 Retourne les notebooks qui contiennent *name* dans leur nom.
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]
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
44def list_notebooks_rst_links(subfolder, name=None, contains=None):
45 """
46 Retourne une liste de notebooks au format :epkg:`rst`.
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]