.. raw:: html
.. |v| unicode:: U+2713
.. module:: hdir
:mod:`hdir` --- Highlight dir
=============================
``hdir()`` est une version colorée de la fonction ``dir()``
Dépendances
-----------
* `Python `_ 3.6+
* Console avec `couleurs ANSI `_
Utilisation
-----------
::
pip install hdir
Invoquer ``hdir()`` sans argument affiche la légende :
.. raw:: html
:file: ../hdir/legend.html
``hdir()`` ne coupe pas les mots et les trie par ordre alphabétique en respectant la casse.
Comparons la fonction ``dir()`` classique avec ``hdir()`` sur le module ``builtins`` :
.. raw:: html
:file: ../hdir/builtins.html
``type.__dict__`` est un *proxy* ``<>`` vers un *dict* ``{}``
dont le premier élément est un *descripteur* ``<>`` vers une *fonction* (cyan) :
.. raw:: html
:file: ../hdir/recursive.html
Couleur
-------
.. table::
:widths: auto
======= =========================
Couleur Type
======= =========================
Bleu int, float, bool, complex
Cyan fonction ou méthode
Vert chaîne
Magenta module
Rouge exception
Jaune classe autre qu'exception
======= =========================
.. table::
:widths: auto
======== ============= ============ ======= =========== ============
Style Signification Windows [1]_ Mintty_ `Linux FB`_ GNOME_, KDE_
======== ============= ============ ======= =========== ============
Couleur type [2]_ |v| |v| |v| |v|
Gras est réel [3]_ |v| |v| |v| |v|
Italique est abstrait |v| |v|
Souligné d'instance |v| |v| |v|
======== ============= ============ ======= =========== ============
.. _Mintty: http://mintty.github.io
.. _Linux FB: https://en.wikipedia.org/wiki/Linux_framebuffer
.. _GNOME: https://wiki.gnome.org/Apps/Terminal
.. _KDE: https://konsole.kde.org
.. [1] ``HKCU\Console\VirtualTerminalLevel = 1`` active les couleurs ANSI sauf le jaune foncé
.. [2] Si c'est un conteneur, couleur du premier élément
.. [3] Ni abstrait ni caché par un *descripteur* ou *proxy*
Décorateurs
-----------
.. table::
:widths: auto
=========== ========================= ========
Decorateurs Type Récursif
=========== ========================= ========
``'...'`` chaîne
``[...]`` liste |v|
``(...)`` tuple |v|
``{...}`` dict ou ensemble |v|
``<...>`` descripteur ou proxy |v|
``...()`` fonction utilisateur [4]_
=========== ========================= ========
.. [4] Écrite en langage Python, ni intégrée ni fonction de librairie du langage C
Variable d'instance
-------------------
``hdir()`` souligne les variables d'instance. Dans cet exemple,
la variable d'instance ``msg`` recouvre la variable de classe du même nom :
.. raw:: html
:file: ../hdir/instance.html
Drapeaux
--------
``hdir()`` cache les attributs ``__double`` ``__magic__`` ``_private``
à moins que les drapeaux ``'d'`` ``'m'`` ``'p'`` soient présents :
.. raw:: html
:file: ../hdir/magic.html
Le drapeau ``'a'`` *"all"* équivaut à ``'dmp'``,
bien que les éléments abstraits soient toujours visibles :
.. raw:: html
:file: ../hdir/abstract.html
Le drapeau ``'n'`` *"no-color"* désactive les codes ANSI mais conserve les décorateurs :
.. raw:: html
:file: ../hdir/no-color.html
Le drapeau ``'r'`` *"raw"* retourne un *dict* dans le style de ``vars()``
pour profiter du filtrage d'attributs :
.. raw:: html
:file: ../hdir/raw.html
Aucun faux positif
------------------
Alors que ``dir()``, ``vars()`` et ``inspect.getmembers()``
retournent certains attributs qui n'existent pas,
``hdir()`` teste chaque attribut avec ``hasattr()`` pour éliminer les faux positifs :
.. raw:: html
:file: ../hdir/false-positive.html
Versions
--------
:0.5: 16 février 2019 --- *Première version bêta*
:0.4: 8 février 2019 --- ``import *`` *importe seulement hdir()*
:0.3: 7 février 2019 --- *Ajout de la légende, du drapeau* ``'r'``, *support des wrappers*
:0.2: 5 février 2019 --- *Élimination des faux positifs*
:0.1: 5 février 2019 --- *Première version alpha*