"linecache" — Accès direct aux lignes d'un texte
************************************************

**Code source :** Lib/linecache.py

======================================================================

Le module "linecache" permet d'obtenir n'importe quelle ligne d'un
fichier source Python. Le cas classique où de nombreuses lignes sont
accédées est optimisé en utilisant un cache interne. C'est utilisé par
le module "traceback" pour récupérer les lignes à afficher dans les
piles d'appels.

Les fichiers sont ouverts par la fonction "tokenize.open()". Cette
fonction utilise "tokenize.detect_encoding()" pour obtenir l'encodage
du fichier. En l'absence d'un BOM et d'un cookie d'encodage, c'est
l'encodage UTF-8 qui sera utilisé.

Le module "linecache" définit les fonctions suivantes :

linecache.getline(filename, lineno, module_globals=None)

   Récupère la ligne *lineno* du fichier *filename*.  Cette fonction
   ne lèvera jamais d'exception, elle préfèrera renvoyer "''" en cas
   d'erreur (le caractère de retour à la ligne sera inclus pour les
   lignes existantes).

   If a file named *filename* is not found, the function first checks
   for a **PEP 302** "__loader__" in *module_globals*. If there is
   such a loader and it defines a "get_source" method, then that
   determines the source lines (if "get_source()" returns "None", then
   "''" is returned). Finally, if *filename* is a relative filename,
   it is looked up relative to the entries in the module search path,
   "sys.path".

linecache.clearcache()

   Nettoie le cache. Utilisez cette fonction si vous n'avez plus
   besoin des lignes des fichiers précédemment lus via "getline()".

linecache.checkcache(filename=None)

   Vérifie la validité du cache. Utilisez cette fonction si les
   fichiers du cache pourraient avoir changé sur le disque, et que
   vous en voudriez une version à jour. Sans *filename*, toutes les
   entrées du cache seront vérifiées.

linecache.lazycache(filename, module_globals)

   Récupère suffisamment d'informations sur un module situé hors du
   système de fichiers pour récupérer ses lignes plus tard via
   "getline()", même si *module_globals* devient "None". Cela évite de
   lire le fichier avant d'avoir besoin d'une ligne, tout en évitant
   de conserver les globales du module indéfiniment.

   Nouveau dans la version 3.5.

Exemple :

   >>> import linecache
   >>> linecache.getline(linecache.__file__, 8)
   'import sys\n'
