5.1 Especificación de los ficheros a distribuir

Si no se proporciona una lista explícita de ficheros (o instrucciones de cómo generarla), la orden sdist incluye un conjunto mínimo en la distribución de fuentes:

Esto puede valer en algunos casos, pero es común que haya que especificar más ficheros para distribuir. El modo típico de hacerlo es escribir una plantilla del manifiesto, denominada MANIFEST.in de forma predeterminada. La plantilla del manifiesto tiene simplemente una lista de instrucciones de cómo generar el fichero de manifiesto, denominado MANIFEST, que contiene la lista exacta de los ficheros a incluir en la distribución fuente. La orden sdist procesa esta plantilla y genera un manifiesto basado en las instrucciones contenidas en ella y en lo que se encuentre en el sistema de ficheros.

Si prefieres escribir tu propio fichero de manifiesto, el formato es bastante sencillo: un fichero por línea, sólo ficheros normales (o enlaces simbólicos). Si proporcionas tu propio MANIFEST, hay que especificar todo: el juego predeterminado de ficheros anteriormente descrito no se aplica en este caso.

La plantilla del manifiesto tiene una orden por línea, donde cada orden especifica un conjunto de ficheros que incluir o excluir de la distribución fuente. Por ejemplo, y retomando la propia plantilla de manifiesto de las Distutils:

include *.txt
recursive-include examples *.txt *.py
prune examples/sample?/build
El significado debería resultar claro: incluir todos los ficheros de la raíz de la distribución que concuerden con *.txt, todos los ficheros bajo examples que concuerden con *.txt o *.py, y excluir todos los ficheros que concuerden con examples/sample?/build. Todo ello se realiza tras el conjunto de inclusión estándar, por lo que se puede excluir ficheros del conjunto estándar con instrucciones explícitas en la plantilla del manifiesto (o se puede usar la opción --no-defaults para desactivar el conjunto estándar por completo). Hay varias órdenes más en el mini-lenguaje de la plantilla del manifiesto. Consulta la sección .

El orden de las órdenes en la plantilla del manifiesto es relevante: inicialmente, tenemos la lista inicial predeterminada descrita anteriormente y cada orden va retirando o agregando ficheros de la lista. Una vez se ha procesado por completo la plantilla del manifiesto, eliminamos los ficheros que no deberían incluirse en la distribución de fuentes:

Ahora tenemos nuestra lista completa de ficheros, que se escribe en el manifiesto para futura referencia y se usa para construir el/los archivo/s final/es de la distribución.

Se puede desactivar el conjunto predeterminado de ficheros incluidos con la opción --no-defaults y desactivar la lista estándar de exclusiones con la opción --no-prune.

Siguiendo el propio fichero de manifiesto de las Distutils, vamos a trazar cómo construye la orden sdist la lista de ficheros que se incluyen en la distribución de fuentes de las Distutils:

  1. incluir todos los ficheros fuente de Python de los subdirectorios distutils y distutils/command (porque los paquetes correspondientes a esos dos directorios fueron mencionados en la opción packages del guion de configuración, según lo contenido en la sección )
  2. incluir README.txt, setup.py y setup.cfg (ficheros estándar)
  3. incluir test/test*.py (ficheros estándar)
  4. incluir *.txt de la raíz de la distribución (se volverá a encontrar README.txt de nuevo, pero luego se desbrozan tales redundancias)
  5. incluir cualquier cosa que concuerde con *.txt o *.py del subdirectorioexamples y los interiores a éste,
  6. excluir todos los ficheros de los subdirectorios que concuerden con examples/sample?/build y los interiores a ellos--esto podría excluir ficheros incluidos por los dos pasos anteriores, por lo que es importante que la orden prune de la plantilla del manifiesto venga tras la orden recursive-include
  7. excluir el árbol build por completo y cualquier directorio RCS o CVS
  8. en el árbol examples, incluir cualquier concordancia con *.txt
  9. en el árbol examples, incluir cualquier concordancia con *.py
  10. eliminar todos los ficheros de los directorios que concuerden con examples/sample?/build--esto podría excluir ficheros incluidos por los dos pasos anteriores, por lo que es importante que la orden prune de la plantilla del manifiesto venga tras las las dos órdenes recursive-include

Al igual que en el guion de configuración, los nombres de ficheros y directorios de la plantilla del manifiesto deberían separarse por barras /siempre. Las Distutils se ocuparán de convertir las barras en la representación estándar de la plataforma de destino. De este modo, la plantilla del manifiesto es transportable entre diferentes sistemas operativos.


Ver Sobre este documento... para obtener información sobre sugerencias.