Où comment faire défiler une série de fond d'écran pour les environnements de bureau tels que GNOME, MATE, ou Cinnamon.
Envie d'un diaporama comme fond d'écran ?
Par olivier le samedi 18 août 2018, 14:24
Par olivier le samedi 18 août 2018, 14:24
Par olivier le vendredi 14 octobre 2016, 16:30
urllib3 est un module python extrêmement puissant, qui enrichit les différents modules relatifs aux réseaux présents dans la bibliothèque standard.
Il existe différentes manières pour effectuer une requête (il suffit de voir la documentation). Jusqu'ici je ne m'étais pas penché sur le cas du protocole HTTPS.
Par défaut on obtient ce message :
/usr/local/lib/python2.7/site-packages/urllib3/connectionpool.py:841: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/l...
InsecureRequestWarning)
Même si l'on utilise la classe urllib3.connectionpool.HTTPSConnectionPool, le warning est toujours présent.
Il faut faire appel à un autre module, certifi, donc l'instance de HTTPSConnectionPool s'écrit alors :
[...] conn = urllib3.connectionpool.HTTPSConnectionPool(host, cert_reqs='CERT_REQUIRED', ca_certs=certifi.where()) res = conn.request('GET', '/') [...]
En annexe, vous trouverez un exemple complet.
On le lance de cette manière :
python npmjs.py HTTPHeaderDict({'Content-Length': '3143', 'Via': '1.1 varnish', 'X-Cache': 'MISS', 'Accept-Ranges': 'bytes', 'X-Timer': 'S1476454061.911429,VS0,VE292', 'Vary': 'Accept-Encoding', 'X-Served-By': 'cache-fra1231-FRA', 'server': 'CouchDB/1.5.0 (Erlang OTP/R16B03)', 'Connection': 'keep-alive', 'etag': '"ETFO48QX32KIQMANPF4IXAOMS"', 'X-Cache-Hits': '0', 'Cache-Control': 'max-age=300', 'Date': 'Fri, 14 Oct 2016 14:07:42 GMT', 'Content-Type': 'application/json', 'Age': '0'})
Par olivier le jeudi 14 juillet 2016, 19:15
Ces derniers temps, j'explore les capacités du site arte.tv afin de (re)voir certaines vidéos.
Je peux désormais récupérer la véritable URL d'une vidéo à partir de leur playlist (j'y reviendrais dans un futur billet). Mais cette fois-ci je me suis intéressé au cas, où l'on connaît déjà le lien.
j'ai donc écrit un script avec le langage Vala. Pour utiliser le programme il vous faut installer les bibliothèques suivantes [1] :
Il faut ensuite le compiler :
valac --pkg=glib-2.0 --pkg=libsoup-2.4 --pkg=json-glib-1.0 artetv.vala
Si tout se passe bien, on peut le lancer de la manière suivante [2] :
./artetv http://www.arte.tv/guide/fr/057398-000-A/quand-l-amerique-sera-latine http://arte.gl-systemhaus.de/am/tvguide/EUR_DE_FR/057398-000-A_EQ_2_VOF-STF_02421848_MP4-1500_AMM-Tvguide.mp4
Le script par défaut recherche les vidéos dont le conteneur est MP4 (il est tout a fait possible de voir les vidéos en streaming, grâce au protocole RTMP).
Je n'ai pas prévu de fonctionnalité pour télécharger le fichier (ce n'était pas le but premier, je voulais surtout m'intéresser aux données au format JSON). Cependant on peut utiliser un utilitaire prévu pour ça (par exemple avec wget
) :
wget `./artetv http://www.arte.tv/guide/fr/057398-000-A/quand-l-amerique-sera-latine`
Ou tout simplement, visualiser directement la vidéo avec la bibliothèque GStreamer.
gst-launch-1.0 playbin uri=`./artetv http://www.arte.tv/guide/fr/048078-000-A/papouasie-expedition-au-coeur-d-un-monde-perdu`
(Cliquez sur l'image pour la voir au format original)
Par olivier le jeudi 14 mai 2015, 20:59
En ce moment, je travaille sur le portage de l'environnement de bureau Pantheon [1] pour FreeBSD. C'est long, fastidieux, car il faut sans cesse lire le code (voir plusieurs fois) pour vérifier qu'il n'y a pas de « linuxisme », et trouver des parades pour les résoudre (si il y en a).
Récemment je suis tombé sur une portion de code, qui m'a laissé perplexe. Pour simplifier, elle consiste à calculer la taille du disque dur [2].
En isolant cette partie (Cf. annexe, fichier hdd.vala
), je fus surpris du résultat (au départ j'ai cru, que sous Linux le résultat serait différent, mais en fait non).
valac --pkg=glib-2.0 --pkg=gio-2.0 hdd.vala ./hdd 33.2 GB
Le résultat sera sans doute différent chez vous, en fait, le calcul se fait uniquement pour la racine (/
). Il crée un File object juste pour /
, grâce à la méthode GLib.File.new_for_path.
Mais dans mon cas, mon disque dur est partitionné, je dois pouvoir retrouver la (quasi) totalité du disque, en faisant la somme de toutes mes partitions.
Ce bout de code s'inspire en fait, de ce que fait GNOME (via le paquet gnome-control-center). En parcourant le fichier panels/info/cc-info-panel.c
, on constate, que c'est la fonction g_unix_mount_points_get qui est utilisée [3].
Avec le langage Vala, il faut utiliser la classe UnixMountEntry, et faire une boucle sur l'ensemble des points de montage.
Dans mon exemple (Cf. annexe), je stocke la taille de chacune des partitions dans une liste, et ensuite je fais la somme de toutes les tailles.
valac --pkg=glib-2.0 --pkg=gio-2.0 --pkg=gio-unix-2.0 hdd-02.vala ./hdd-02 266.5 GB
C'est déjà plus cohérent.
Il ne reste plus qu'à envoyer un patch aux développeurs.
[1] Issue du projet elementary OS.
[2] À partir de la ligne 234 du fichier src/Plug.vala
(Switchboard-about-plug).
[3] Elle lit le fichier /etc/fstab
ou /etc/mtab
.
Par olivier le samedi 31 janvier 2015, 11:31
En ce moment, je découvre la bibliothèque garcon [1] du projet Xfce.
Comme je débute, le premier programme est relativement simple. Il affiche les applications présentes dans le menu. Il va analyser le fichier xfce-applications.menu
présent dans $XDG_MENU_PREFIX
pour rechercher les fichiers .desktop
. Le résultat peut être différent en fonction des logiciels installés sur votre système.
Pour pouvoir l'utiliser il vous faut les fichiers d'en-tête pour GLib et bien évidemment garcon.
La ligne de commande que j'utilise sous FreeBSD (j'utilise encore gcc comme compilateur).
$ gcc -Wall xfce-menu.c -o xfce-menu `pkgconf --cflags --libs glib-2.0 garcon-1` -lc $ ./xfce-menu * xfce4-run.desktop ---- * exo-terminal-emulator.desktop * exo-file-manager.desktop * exo-mail-reader.desktop * exo-web-browser.desktop ---- Settings * xfce-settings-manager.desktop ---- * xfce4-accessibility-settings.desktop [...] System * Thunar-bulk-rename.desktop * xfce4-taskmanager.desktop * Thunar.desktop * xterm.desktop * xfce4-terminal.desktop ---- * xfce4-about.desktop * xfce4-session-logout.desktop
Si l'on souhaite utiliser la fonction xfce_menu_items2 ()
la sortie est différente, les fichiers .desktop
sont suivis des catégories.
$ ./xfce-menu xfce4-run.desktop X-Xfce-Toplevel;X-XFCE;Utility; exo-terminal-emulator.desktop X-Xfce-Toplevel;X-XFCE;Utility; exo-file-manager.desktop X-Xfce-Toplevel;X-XFCE;Utility; exo-mail-reader.desktop X-Xfce-Toplevel;X-XFCE;Network; exo-web-browser.desktop X-Xfce-Toplevel;X-XFCE;Network; xfce-settings-manager.desktop DesktopSettings;Settings;X-XFCE; xfce4-accessibility-settings.desktop X-XFCE-SystemSettings;X-XFCE-SettingsDialog;DesktopSettings;Settings;GTK;XFCE; xfce-ui-settings.desktop X-XFCE-PersonalSettings;X-XFCE-SettingsDialog;DesktopSettings;Settings;GTK;XFCE; [...] Thunar.desktop FileManager;FileTools;GTK;Core;Utility;System; xterm.desktop TerminalEmulator;System; xfce4-terminal.desktop TerminalEmulator;System;GTK; xfce4-about.desktop X-Xfce-Toplevel;X-XFCE;Utility; xfce4-session-logout.desktop X-Xfce-Toplevel;X-XFCE;System;
Maintenant, il nous reste plus qu'à utiliser un GtkTreeView widget pour afficher le tout dans une fenêtre.
[1] C'est un portage des spécifications définit par le consortium Freedesktop.org pour définir l'agencement d'un menu.
Par olivier le samedi 7 juin 2014, 19:13
Dans ce billet, nous allons voir comment afficher certaines informations obtenues avec la fonction sysctlbyname(3).
/sbin/sysctl vfs.usermount vfs.usermount: 1
En C, on peut écrire un programme relativement simple (sysctl-01.c
), qui va afficher uniquement le résultat.
gcc sysct-01.c -o sysctl-01 -Wall -W -lc ./sysctl-01 1
Si l'on souhaite afficher une chaîne de caractères.
/sbin/sysctl kern.ostype kern.ostype: FreeBSD
Avec le programme sysctl-02.c
, on procède de la manière suivante :
gcc sysct-02.c -o sysctl-02 -Wall -W -lc ./sysctl-02 FreeBSD
Maintenant, si plusieurs valeurs doivent être affichées.
/sbin/sysctl hw.acpi.supported_sleep_state hw.acpi.supported_sleep_state: S3 S4 S5
Le programme sysctl-03.c
affiche ces informations de cette manière :
gcc sysct-03.c -o sysctl-03 -Wall -W -lc ./sysctl-03 S3 S4 S5
Au lieu d'avoir une chaîne de caractères, on a une série d'entiers.
/sbin/sysctl kern.cp_times kern.cp_times: 889624 1836 116735 3507 4424229
Le programme sysctl-04.c
affiche tout ceci, de cette façon :
gcc sysct-04.c -o sysctl-04 -Wall -W -lc ./sysctl-04 Values: 889624 1836 116735 3507 4424229 Max: 4424229
Voilà, on peut désormais s'inspirer de ces exemples, pour apporter des patches aux programmes trop orientés Linux.
Par olivier le mardi 27 mai 2014, 22:46
J'écris ce billet ici, au lieu du wiki, pour qu'il ait plus de visibiliter.
Parfois dans certains projets écris en Vala on trouve ce bout de code :
[...] [CCode (cheader_filename = "sys/prctl.h", cname = "prctl")] extern int prctl (int option, string arg2, ulong arg3, ulong arg4, ulong arg5); [...]
On dénomme ce fragement par C code attribut (ou CCode attribut). Il s'agit d'une particularité de ce langage, pour utiliser directement des fonctions « externes ».
Sous Linux la fonction prctl ()
permet de nommer un processus (on peut le voir avec top
).
Sous les BSD (DragonFly, FreeBSD, NetBSD et OpenBSD) cette fonction n'existe pas. En fait elle s'appelle autrement, setproctitle ()
.
Or elle n'est pas présente au même endroit dans chacun des BSD.
Sous DragonFly et FreeBSD, on la retrouve dans unistd.h.
[...] [CCode (cheader_filename = "unistd.h", cname = "setproctitle")] extern static void setproctitle (string fmt, ...); [...]
Sous NetBSD et OpenBSD, on la retrouve dans stdlib.h.
[...] [CCode (cheader_filename = "stdlib.h", cname = "setproctitle")] extern static void setproctitle (string fmt, ...); [...]
Voilà, désormais on peut écrire du code « portable ».
Par olivier le vendredi 9 mai 2014, 23:37
Je viens de publier sur le wiki, un snippet, afin de déterminer l'origine d'une adresse IP écrit en Vala.
En testant ce programme avec différentes versions de ce langage, j'ai dû mettre en place des tests, qui sont évalués par le compilateur valac
. On parle souvent de préprocesseur dans certains langages.
Si on dispose d'une version de Vala >= 0.22, il faut activer la directive VALA_0_22.
Si on dispose d'une version de libsoup >= 2.42, il faut activer la directive LIBSOUP_2_42.
C'est très simple, on utilise l'exécutable pkg-config
[1].
pkg-config --modversion libsoup-2.4 2.42.3.1
En fait pkg-config
interroge les fichiers .pc
, qui se trouve dans le dossier pkgconfig/
. Pour savoir où il se trouve dans l'arborescence :
find /usr -type d -name 'pkgconfig' -print
Par exemple, sous Fedora, on le trouve dans les dossier /usr/share
et /usr/lib
. Sous FreeBSD, il est situé dans /usr/local/libdata
.
Pour Vala :
valac --version Vala 0.20.1
Maintenant nous avons toutes les informations, on peut compiler notre programme.
Si Vala < 0.22.x
valac --target-glib=2.32 --pkg=glib-2.0 --pkg=libsoup-2.4 --pkg=json-glib-1.0 geoip.vala
Si Vala >= 0.22.x et libsoup >= 2.42.x
valac --define=VALA_0_22 --define=LIBSOUP_2_42 --pkg=glib-2.0 --pkg=libsoup-2.4 --pkg=json-glib-1.0 geoip.vala
Sous FreeBSD, on peut changer de compilateur, en utilisant par exemple clang.
valac --cc=clang --define=VALA_0_22 --pkg=glib-2.0 --pkg=libsoup-2.4 --pkg=json-glib-1.0 geoip.vala
Dans tout les cas, on obtient le même résultat :
./geoip fr
[1] Sous FreeBSD, on utilisera plutôt pkgconfig
.
Par olivier le mercredi 16 avril 2014, 23:12
Quant on est sous GNU/Linux, il existe udev, très largement utilisé sur ce système d'exploitation (SE), mais lorsque l'on utilise un système BSD, et en particulier FreeBSD il nous est impossible d'utiliser cette bibliothèque. Cependant les développeurs de FreeBSD ont développé un outil similaire devd(8).
Il est accessible via un socket unix.
J'ai voulu voir comment l'utiliser grâce aux systèmes de notifications du noyau kqueue(2)/kevent(2), avec le langage Python.
Je détaille un peu le script, tout d'abord nous allons initialiser un socket (le programme va fonctionner comme un client).
[...] s_file = os.path.join("/var", "run", "devd.pipe") # Create new socket object s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) s.connect(s_file) # Return the socket's file descriptor fd = s.fileno() [...]
fd
(file descriptor) est nécessaire pour kevent
.
Les fonctions utilisées par kqueue/kevent sous Python sont accessible via le module select. Nous allons uniquement lire les données qui transitent par /var/run/devd.pipe
.
Ci-dessous l'initialisation du mécanisme de notification.
[...] # Kernel queue object kq = select.kqueue() # Event to monitor (only attach) event = [select.kevent(fd, filter=select.KQ_FILTER_READ, flags=select.KQ_EV_ADD),] # Initialize kevent structure (like EV_SET macro in sys/event.h) ev_set = kq.control(event, 0, 0) [...]
Nous pouvons « boucler » pour afficher les résultats quand un périphérique est branché. Un truc magique avec kqueue/kevent
on a directement accès à la taille du tampon à lire.
[...] for event in events: # Display data from socket (event.data is size to read) print s.recv(event.data) [...]
Voici le résultat lorsqu'une clé USB est branchée.
!system=DEVFS subsystem=CDEV type=CREATE cdev=usb/2.2.0 !system=DEVFS subsystem=CDEV type=CREATE cdev=ugen2.2 !system=DEVFS subsystem=CDEV type=CREATE cdev=usb/2.2.1 !system=DEVFS subsystem=CDEV type=CREATE cdev=usb/2.2.2 !system=USB subsystem=DEVICE type=ATTACH ugen=ugen2.2 cdev=ugen2.2 vendor=0x0930 product=0x653d devclass=0x00 devsubclass=0x00 sernum="0B4085607142DAD4" release =0x0100 mode=host port=6 parent=ugen2.1 !system=USB subsystem=INTERFACE type=ATTACH ugen=ugen2.2 cdev=ugen2.2 vendor=0x0 930 product=0x653d devclass=0x00 devsubclass=0x00 sernum="0B4085607142DAD4" rele ase=0x0100 mode=host interface=0 endpoints=2 intclass=0x08 intsubclass=0x06 intp rotocol=0x50 +umass0 at bus=1 hubaddr=6 port=2 devaddr=2 interface=0 vendor=0x0930 product=0x 653d devclass=0x00 devsubclass=0x00 sernum="0B4085607142DAD4" release=0x0100 mod e=host intclass=0x08 intsubclass=0x06 intprotocol=0x50 on uhub2 !system=DEVFS subsystem=CDEV type=CREATE cdev=pass2 !system=DEVFS subsystem=CDEV type=CREATE cdev=da0 !system=DEVFS subsystem=CDEV type=CREATE cdev=da0s1
La dernière ligne est intéressante, car c'est le nom de la partition que l'on pourra « monter » sur le système.
Par olivier le vendredi 3 janvier 2014, 17:08
En ce moment je travaille sur le portage d'une application pour FreeBSD. Comme elle fait appel à des fonctions qui ne sont pas disponibles sous ce système, je passe par l'analyse des fichiers iso-codes [1] mis à notre disposition par Debian.
Il s'agit de mon premier programme en C, donc soyez indulgent.
J'utilise les bibliothèques suivantes :
Pour le compiler, il faut définir une variable (par exemple ISO_CODES_PREFIX
), qui va nous servir de macro [2].
ISO_CODES_PREFIX=`pkgconf --variable=prefix iso-codes` gcc -Wall -DISO_CODES_PREFIX=\"$ISO_CODES_PREFIX\" `pkgconf --cflags --libs glib-2.0 gio-2.0 libxml-2.0` locales.c -o locales
Note : Si pkgconf n'est pas disponible, essayez pkg-config.
Après compilation, on obtient une liste avec la locale suivi du nom du pays. Cela me sert pour renforcer les tests pour mon patch.
[...] eu_ES.ISO8859-1 Spain eu_ES.ISO8859-15 Spain eu_ES.UTF-8 Spain fi_FI.ISO8859-1 Finland fi_FI.ISO8859-15 Finland fi_FI.UTF-8 Finland fr_BE.ISO8859-1 Belgium fr_BE.ISO8859-15 Belgium fr_BE.UTF-8 Belgium fr_CA.ISO8859-1 Canada fr_CA.ISO8859-15 Canada fr_CA.UTF-8 Canada fr_CH.ISO8859-1 Switzerland fr_CH.ISO8859-15 Switzerland fr_CH.UTF-8 Switzerland fr_FR.ISO8859-1 France fr_FR.ISO8859-15 France fr_FR.UTF-8 France he_IL.UTF-8 Israel hi_IN.ISCII-DEV India [...]
Par olivier le vendredi 27 septembre 2013, 12:47
Récemment, je me suis mis à apprendre le langage Vala (je ne connais pas encore toutes les suptilités), et en essayant de comprendre un des exemples, la compilation a échoué.
J'ai trouvé, qu'il avait déjà été mentionné ici.
En parcourant le fichier poppler-glib.deps
, on constate qu'il y a une référence à Gtk+2 (en réalité c'est GDK 2).
Donc si on remplace le nom du package gdk-2.0 par gdk-3.0 tout fonctionne correctement.
Pour éviter de modifier un fichier sur le système, le plus simple consiste à le copier [1] (dans le dossier où se trouve notre programme vala).
$ cp /usr/share/vala-0.20/vapi/poppler-glib.* .
On fait le remplacement, et si l'on a besoin de compiler avec le support de Poppler, voici les options qu'il faut passer au compilateur.
$ valac --vapidir=. --pkg poppler-glib ...
Pour conclure, je vous présente un programme,qui va rechercher des informations contenu dans un fichier PDF.
Pour le compiler.
$ valac --vapidir=. --pkg poppler-glib --pkg glib-2.0 --pkg gio-2.0 pdf-info.vala
Si tout se passe bien (ne faites pas attention aux warnings), on le lance de cette manière.
$ ./pdf-info -h Usage: pdf-info [OPTION...] Help Options: -h, --help Show help options Application Options: -f, --filename Path to PDF file $
Quelques exemples de résultats possibles
$ ./pdf-info -f ~/Documents/packaging-tutorial.fr.pdf title: Tutoriel : la construction de paquets Debian Nb pages: 78 pdfTeX-1.40.13 $ $ ./pdf-info -f ~/Téléchargements/accuseReception.pdf No title Nb pages: 2 Apache FOP Version 1.0 $ $ ./pdf-info -f ~/Téléchargements/BSD_08_2013.pdf title: BSD Magazine Nb pages: 48 Adobe PDF Library 9.9 $
[1] La version de vala peut être différente, esayez find /usr/share/ -maxdepth 1 -type d -name 'vala-*' -print
Par olivier le lundi 12 août 2013, 13:59
Nous continuons notre série de billets consacrés aux principaux widgets sous Gtk.
Cette fois-ci, il s'agit de GtkComboBox, cet élément permet de créer une liste déroulante.
Par olivier le lundi 5 août 2013, 17:23
Dans ce billet nous allons découvrir le widget, GtkEntry.
Cet élément graphique permet à un utilisateur de rentrer du texte (qui pourra, par la suite être traité).
Par olivier le dimanche 23 juin 2013, 09:06
Si vous souhaitez voir ou revoir facilement les vidéos du site Arte+7, vous pouvez utiliser le script shell [1]), qui se trouve en annexe.
Il repose sur le fabuleux framework, GStreamer.
Édit (mise à jour, 28 juin 2013) : Lisez bien les prérequis notamment si vous êtes sous Debian/Ubuntu ou LinuxMint.
Par olivier le samedi 16 mars 2013, 21:46
En faisant la mise à jour de Dotclear, via les patches, j'ai oublié de préciser qu'il fallait omettre le dossier parent. Je me suis donc retrouvé avec des fichier portant l'extension .rej
.
assoavignu@pastis $ for file in `find . -type f -name '*.rej'`; do echo ${file}; done ./blogs.php.rej ./blog_theme.php.rej ./comment.php.rej ./categories.php.rej ./category.php.rej ./comments_actions.php.rej ./comments.php.rej ./blog_pref.php.rej
Pour retrouver leurs extensions d'origine (.php
), une simple boucle suffit :
assoavignu@pastis $ for file in `find . -type f -name '*.rej'`; do mv ${file} ${file%.*}; done
Je ne suis pas certain que la « syntaxe » ${variable%.*} fonctionne avec tous les shells.
Par olivier le mercredi 13 février 2013, 21:10
Récemment, j'ai eu besoin de transformer des dates écrites dans ce format : Wed, 13 Feb 2013 05:34:15 +0100
en quelque chose de plus « normé », ISO 8601.
Par olivier le mardi 31 janvier 2012, 16:54
Pour ceux ou celles, qui maintiennent (ou on l'intention de créer) des paquets Python pour leur distribution favorite, je vous livre une astuce si vous voulez exclure un, ou plusieurs modules.
Dans mon cas, je ne voulais pas installer le dossier tests/
(il dépend bien souvent de la bibliothèque nose), lors de la création de mon package.
Nous allons utiliser la fonction find_packages() du module setuptools.
Voici ce que nous dit la docstring :
[...]
FUNCTIONS
find_packages(where='.', exclude=()) Return a list all Python packages found within directory 'where'
'where' should be supplied as a "cross-platform" (i.e. URL-style) path; it will be converted to the appropriate local path syntax. 'exclude' is a sequence of package names to exclude; '*' can be used as a wildcard in the names, such that 'foo.*' will exclude all subpackages of 'foo' (but not 'foo' itself).
[...]
La documentation :
[...]
find_packages() takes a source directory, and a list of package names or patterns to exclude. If omitted, the source directory defaults to the same directory as the setup script.
Exclusion patterns are package names, optionally including wildcards.
[...]
Un exemple va nous aider à bien comprendre (on se place dans les « mêmes conditions », qu'au moment de la création d'un paquet) :
olivier@bornem:~ $ tar -xzf /usr/ports/distfiles/waitress-0.8.tar.gz olivier@bornem:~ $ cd waitress-0.8/ olivier@bornem:~/waitress-0.8 $ python Python 2.7.2 (default, Jul 4 2011, 20:20:01) [GCC 4.2.1 20070719 [FreeBSD]] on freebsd8 Type "help", "copyright", "credits" or "license" for more information. >>> from setuptools import find_packages >>> l = find_packages(where='.') >>> l ['waitress', 'waitress.tests', 'waitress.tests.fixtureapps'] >>>
on obient une liste, de tous les dossiers contenant un fichier __init__.py
.
Si l'on ne souhaite pas installer le répertoire waitress/tests
, il faut le mentionner :
>>> l = find_packages(where='.', exclude=['waitress.tests']) >>> l ['waitress', 'waitress.tests.fixtureapps'] >>>
waitress/tests/fixtureapps/
est toujours présent (la compilation échouera, car le module tests sera absent). Il faut également le préciser tous les sous-dossiers
>>> l = find_packages(where='.', exclude=['waitress.tests', 'waitress.tests.fixtureapps']) >>> l ['waitress'] >>>
On peut utiliser un joker (ou wildcard).
>>> l = find_packages(where='.', exclude=['waitress.test*']) >>> l ['waitress'] >>>
Le plus gros du travail est fait, il ne reste plus qu'à rechercher un fichier MANIFEST.in
, ou SOURCES.txt
, et de supprimer les lignes correspondantes à ce module (on crée alors un patch).
Une dernière chose, la fonction find_packages() se trouve dans le fichier setup.py
, on va également le patcher.
Par olivier le mercredi 23 novembre 2011, 18:15
Ce billet constitue une présentation du framework, Flask. Il permet de créer rapidement et très simplement des applications Web (blog, forum, etc.).
Par la suite d'autres billets seront publiés pour présenter d'une manière plus approfondi quelques unes de ses caractéristiques.