PageRenderTime 69ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 1ms

/Doc/distutils/apiref.rst

http://unladen-swallow.googlecode.com/
ReStructuredText | 2004 lines | 1352 code | 652 blank | 0 comment | 0 complexity | a6bfe97b71144243c2f2905f8d1f6e0d MD5 | raw file
Possible License(s): 0BSD, BSD-3-Clause
  1. .. _api-reference:
  2. *************
  3. API Reference
  4. *************
  5. :mod:`distutils.core` --- Core Distutils functionality
  6. ======================================================
  7. .. module:: distutils.core
  8. :synopsis: The core Distutils functionality
  9. The :mod:`distutils.core` module is the only module that needs to be installed
  10. to use the Distutils. It provides the :func:`setup` (which is called from the
  11. setup script). Indirectly provides the :class:`distutils.dist.Distribution` and
  12. :class:`distutils.cmd.Command` class.
  13. .. function:: setup(arguments)
  14. The basic do-everything function that does most everything you could ever ask
  15. for from a Distutils method. See XXXXX
  16. The setup function takes a large number of arguments. These are laid out in the
  17. following table.
  18. +--------------------+--------------------------------+-------------------------------------------------------------+
  19. | argument name | value | type |
  20. +====================+================================+=============================================================+
  21. | *name* | The name of the package | a string |
  22. +--------------------+--------------------------------+-------------------------------------------------------------+
  23. | *version* | The version number of the | See :mod:`distutils.version` |
  24. | | package | |
  25. +--------------------+--------------------------------+-------------------------------------------------------------+
  26. | *description* | A single line describing the | a string |
  27. | | package | |
  28. +--------------------+--------------------------------+-------------------------------------------------------------+
  29. | *long_description* | Longer description of the | a string |
  30. | | package | |
  31. +--------------------+--------------------------------+-------------------------------------------------------------+
  32. | *author* | The name of the package author | a string |
  33. +--------------------+--------------------------------+-------------------------------------------------------------+
  34. | *author_email* | The email address of the | a string |
  35. | | package author | |
  36. +--------------------+--------------------------------+-------------------------------------------------------------+
  37. | *maintainer* | The name of the current | a string |
  38. | | maintainer, if different from | |
  39. | | the author | |
  40. +--------------------+--------------------------------+-------------------------------------------------------------+
  41. | *maintainer_email* | The email address of the | |
  42. | | current maintainer, if | |
  43. | | different from the author | |
  44. +--------------------+--------------------------------+-------------------------------------------------------------+
  45. | *url* | A URL for the package | a URL |
  46. | | (homepage) | |
  47. +--------------------+--------------------------------+-------------------------------------------------------------+
  48. | *download_url* | A URL to download the package | a URL |
  49. +--------------------+--------------------------------+-------------------------------------------------------------+
  50. | *packages* | A list of Python packages that | a list of strings |
  51. | | distutils will manipulate | |
  52. +--------------------+--------------------------------+-------------------------------------------------------------+
  53. | *py_modules* | A list of Python modules that | a list of strings |
  54. | | distutils will manipulate | |
  55. +--------------------+--------------------------------+-------------------------------------------------------------+
  56. | *scripts* | A list of standalone script | a list of strings |
  57. | | files to be built and | |
  58. | | installed | |
  59. +--------------------+--------------------------------+-------------------------------------------------------------+
  60. | *ext_modules* | A list of Python extensions to | A list of instances of |
  61. | | be built | :class:`distutils.core.Extension` |
  62. +--------------------+--------------------------------+-------------------------------------------------------------+
  63. | *classifiers* | A list of categories for the | The list of available |
  64. | | package | categorizations is at |
  65. | | | http://pypi.python.org/pypi?:action=list_classifiers. |
  66. +--------------------+--------------------------------+-------------------------------------------------------------+
  67. | *distclass* | the :class:`Distribution` | A subclass of |
  68. | | class to use | :class:`distutils.core.Distribution` |
  69. +--------------------+--------------------------------+-------------------------------------------------------------+
  70. | *script_name* | The name of the setup.py | a string |
  71. | | script - defaults to | |
  72. | | ``sys.argv[0]`` | |
  73. +--------------------+--------------------------------+-------------------------------------------------------------+
  74. | *script_args* | Arguments to supply to the | a list of strings |
  75. | | setup script | |
  76. +--------------------+--------------------------------+-------------------------------------------------------------+
  77. | *options* | default options for the setup | a string |
  78. | | script | |
  79. +--------------------+--------------------------------+-------------------------------------------------------------+
  80. | *license* | The license for the package | a string |
  81. +--------------------+--------------------------------+-------------------------------------------------------------+
  82. | *keywords* | Descriptive meta-data, see | |
  83. | | :pep:`314` | |
  84. +--------------------+--------------------------------+-------------------------------------------------------------+
  85. | *platforms* | | |
  86. +--------------------+--------------------------------+-------------------------------------------------------------+
  87. | *cmdclass* | A mapping of command names to | a dictionary |
  88. | | :class:`Command` subclasses | |
  89. +--------------------+--------------------------------+-------------------------------------------------------------+
  90. | *data_files* | A list of data files to | a list |
  91. | | install | |
  92. +--------------------+--------------------------------+-------------------------------------------------------------+
  93. | *package_dir* | A mapping of package to | a dictionary |
  94. | | directory names | |
  95. +--------------------+--------------------------------+-------------------------------------------------------------+
  96. .. function:: run_setup(script_name[, script_args=None, stop_after='run'])
  97. Run a setup script in a somewhat controlled environment, and return the
  98. :class:`distutils.dist.Distribution` instance that drives things. This is
  99. useful if you need to find out the distribution meta-data (passed as keyword
  100. args from *script* to :func:`setup`), or the contents of the config files or
  101. command-line.
  102. *script_name* is a file that will be run with :func:`execfile` ``sys.argv[0]``
  103. will be replaced with *script* for the duration of the call. *script_args* is a
  104. list of strings; if supplied, ``sys.argv[1:]`` will be replaced by *script_args*
  105. for the duration of the call.
  106. *stop_after* tells :func:`setup` when to stop processing; possible values:
  107. +---------------+---------------------------------------------+
  108. | value | description |
  109. +===============+=============================================+
  110. | *init* | Stop after the :class:`Distribution` |
  111. | | instance has been created and populated |
  112. | | with the keyword arguments to :func:`setup` |
  113. +---------------+---------------------------------------------+
  114. | *config* | Stop after config files have been parsed |
  115. | | (and their data stored in the |
  116. | | :class:`Distribution` instance) |
  117. +---------------+---------------------------------------------+
  118. | *commandline* | Stop after the command-line |
  119. | | (``sys.argv[1:]`` or *script_args*) have |
  120. | | been parsed (and the data stored in the |
  121. | | :class:`Distribution` instance.) |
  122. +---------------+---------------------------------------------+
  123. | *run* | Stop after all commands have been run (the |
  124. | | same as if :func:`setup` had been called |
  125. | | in the usual way). This is the default |
  126. | | value. |
  127. +---------------+---------------------------------------------+
  128. In addition, the :mod:`distutils.core` module exposed a number of classes that
  129. live elsewhere.
  130. * :class:`Extension` from :mod:`distutils.extension`
  131. * :class:`Command` from :mod:`distutils.cmd`
  132. * :class:`Distribution` from :mod:`distutils.dist`
  133. A short description of each of these follows, but see the relevant module for
  134. the full reference.
  135. .. class:: Extension
  136. The Extension class describes a single C or C++extension module in a setup
  137. script. It accepts the following keyword arguments in its constructor
  138. +------------------------+--------------------------------+---------------------------+
  139. | argument name | value | type |
  140. +========================+================================+===========================+
  141. | *name* | the full name of the | string |
  142. | | extension, including any | |
  143. | | packages --- ie. *not* a | |
  144. | | filename or pathname, but | |
  145. | | Python dotted name | |
  146. +------------------------+--------------------------------+---------------------------+
  147. | *sources* | list of source filenames, | string |
  148. | | relative to the distribution | |
  149. | | root (where the setup script | |
  150. | | lives), in Unix form (slash- | |
  151. | | separated) for portability. | |
  152. | | Source files may be C, C++, | |
  153. | | SWIG (.i), platform-specific | |
  154. | | resource files, or whatever | |
  155. | | else is recognized by the | |
  156. | | :command:`build_ext` command | |
  157. | | as source for a Python | |
  158. | | extension. | |
  159. +------------------------+--------------------------------+---------------------------+
  160. | *include_dirs* | list of directories to search | string |
  161. | | for C/C++ header files (in | |
  162. | | Unix form for portability) | |
  163. +------------------------+--------------------------------+---------------------------+
  164. | *define_macros* | list of macros to define; each | (string, string) tuple or |
  165. | | macro is defined using a | (name, ``None``) |
  166. | | 2-tuple ``(name, value)``, | |
  167. | | where *value* is | |
  168. | | either the string to define it | |
  169. | | to or ``None`` to define it | |
  170. | | without a particular value | |
  171. | | (equivalent of ``#define FOO`` | |
  172. | | in source or :option:`-DFOO` | |
  173. | | on Unix C compiler command | |
  174. | | line) | |
  175. +------------------------+--------------------------------+---------------------------+
  176. | *undef_macros* | list of macros to undefine | string |
  177. | | explicitly | |
  178. +------------------------+--------------------------------+---------------------------+
  179. | *library_dirs* | list of directories to search | string |
  180. | | for C/C++ libraries at link | |
  181. | | time | |
  182. +------------------------+--------------------------------+---------------------------+
  183. | *libraries* | list of library names (not | string |
  184. | | filenames or paths) to link | |
  185. | | against | |
  186. +------------------------+--------------------------------+---------------------------+
  187. | *runtime_library_dirs* | list of directories to search | string |
  188. | | for C/C++ libraries at run | |
  189. | | time (for shared extensions, | |
  190. | | this is when the extension is | |
  191. | | loaded) | |
  192. +------------------------+--------------------------------+---------------------------+
  193. | *extra_objects* | list of extra files to link | string |
  194. | | with (eg. object files not | |
  195. | | implied by 'sources', static | |
  196. | | library that must be | |
  197. | | explicitly specified, binary | |
  198. | | resource files, etc.) | |
  199. +------------------------+--------------------------------+---------------------------+
  200. | *extra_compile_args* | any extra platform- and | string |
  201. | | compiler-specific information | |
  202. | | to use when compiling the | |
  203. | | source files in 'sources'. For | |
  204. | | platforms and compilers where | |
  205. | | a command line makes sense, | |
  206. | | this is typically a list of | |
  207. | | command-line arguments, but | |
  208. | | for other platforms it could | |
  209. | | be anything. | |
  210. +------------------------+--------------------------------+---------------------------+
  211. | *extra_link_args* | any extra platform- and | string |
  212. | | compiler-specific information | |
  213. | | to use when linking object | |
  214. | | files together to create the | |
  215. | | extension (or to create a new | |
  216. | | static Python interpreter). | |
  217. | | Similar interpretation as for | |
  218. | | 'extra_compile_args'. | |
  219. +------------------------+--------------------------------+---------------------------+
  220. | *export_symbols* | list of symbols to be exported | string |
  221. | | from a shared extension. Not | |
  222. | | used on all platforms, and not | |
  223. | | generally necessary for Python | |
  224. | | extensions, which typically | |
  225. | | export exactly one symbol: | |
  226. | | ``init`` + extension_name. | |
  227. +------------------------+--------------------------------+---------------------------+
  228. | *depends* | list of files that the | string |
  229. | | extension depends on | |
  230. +------------------------+--------------------------------+---------------------------+
  231. | *language* | extension language (i.e. | string |
  232. | | ``'c'``, ``'c++'``, | |
  233. | | ``'objc'``). Will be detected | |
  234. | | from the source extensions if | |
  235. | | not provided. | |
  236. +------------------------+--------------------------------+---------------------------+
  237. .. class:: Distribution
  238. A :class:`Distribution` describes how to build, install and package up a Python
  239. software package.
  240. See the :func:`setup` function for a list of keyword arguments accepted by the
  241. Distribution constructor. :func:`setup` creates a Distribution instance.
  242. .. class:: Command
  243. A :class:`Command` class (or rather, an instance of one of its subclasses)
  244. implement a single distutils command.
  245. :mod:`distutils.ccompiler` --- CCompiler base class
  246. ===================================================
  247. .. module:: distutils.ccompiler
  248. :synopsis: Abstract CCompiler class
  249. This module provides the abstract base class for the :class:`CCompiler`
  250. classes. A :class:`CCompiler` instance can be used for all the compile and
  251. link steps needed to build a single project. Methods are provided to set
  252. options for the compiler --- macro definitions, include directories, link path,
  253. libraries and the like.
  254. This module provides the following functions.
  255. .. function:: gen_lib_options(compiler, library_dirs, runtime_library_dirs, libraries)
  256. Generate linker options for searching library directories and linking with
  257. specific libraries. *libraries* and *library_dirs* are, respectively, lists of
  258. library names (not filenames!) and search directories. Returns a list of
  259. command-line options suitable for use with some compiler (depending on the two
  260. format strings passed in).
  261. .. function:: gen_preprocess_options(macros, include_dirs)
  262. Generate C pre-processor options (:option:`-D`, :option:`-U`, :option:`-I`) as
  263. used by at least two types of compilers: the typical Unix compiler and Visual
  264. C++. *macros* is the usual thing, a list of 1- or 2-tuples, where ``(name,)``
  265. means undefine (:option:`-U`) macro *name*, and ``(name, value)`` means define
  266. (:option:`-D`) macro *name* to *value*. *include_dirs* is just a list of
  267. directory names to be added to the header file search path (:option:`-I`).
  268. Returns a list of command-line options suitable for either Unix compilers or
  269. Visual C++.
  270. .. function:: get_default_compiler(osname, platform)
  271. Determine the default compiler to use for the given platform.
  272. *osname* should be one of the standard Python OS names (i.e. the ones returned
  273. by ``os.name``) and *platform* the common value returned by ``sys.platform`` for
  274. the platform in question.
  275. The default values are ``os.name`` and ``sys.platform`` in case the parameters
  276. are not given.
  277. .. function:: new_compiler(plat=None, compiler=None, verbose=0, dry_run=0, force=0)
  278. Factory function to generate an instance of some CCompiler subclass for the
  279. supplied platform/compiler combination. *plat* defaults to ``os.name`` (eg.
  280. ``'posix'``, ``'nt'``), and *compiler* defaults to the default compiler for
  281. that platform. Currently only ``'posix'`` and ``'nt'`` are supported, and the
  282. default compilers are "traditional Unix interface" (:class:`UnixCCompiler`
  283. class) and Visual C++ (:class:`MSVCCompiler` class). Note that it's perfectly
  284. possible to ask for a Unix compiler object under Windows, and a Microsoft
  285. compiler object under Unix---if you supply a value for *compiler*, *plat* is
  286. ignored.
  287. .. % Is the posix/nt only thing still true? Mac OS X seems to work, and
  288. .. % returns a UnixCCompiler instance. How to document this... hmm.
  289. .. function:: show_compilers()
  290. Print list of available compilers (used by the :option:`--help-compiler` options
  291. to :command:`build`, :command:`build_ext`, :command:`build_clib`).
  292. .. class:: CCompiler([verbose=0, dry_run=0, force=0])
  293. The abstract base class :class:`CCompiler` defines the interface that must be
  294. implemented by real compiler classes. The class also has some utility methods
  295. used by several compiler classes.
  296. The basic idea behind a compiler abstraction class is that each instance can be
  297. used for all the compile/link steps in building a single project. Thus,
  298. attributes common to all of those compile and link steps --- include
  299. directories, macros to define, libraries to link against, etc. --- are
  300. attributes of the compiler instance. To allow for variability in how individual
  301. files are treated, most of those attributes may be varied on a per-compilation
  302. or per-link basis.
  303. The constructor for each subclass creates an instance of the Compiler object.
  304. Flags are *verbose* (show verbose output), *dry_run* (don't actually execute the
  305. steps) and *force* (rebuild everything, regardless of dependencies). All of
  306. these flags default to ``0`` (off). Note that you probably don't want to
  307. instantiate :class:`CCompiler` or one of its subclasses directly - use the
  308. :func:`distutils.CCompiler.new_compiler` factory function instead.
  309. The following methods allow you to manually alter compiler options for the
  310. instance of the Compiler class.
  311. .. method:: CCompiler.add_include_dir(dir)
  312. Add *dir* to the list of directories that will be searched for header files.
  313. The compiler is instructed to search directories in the order in which they are
  314. supplied by successive calls to :meth:`add_include_dir`.
  315. .. method:: CCompiler.set_include_dirs(dirs)
  316. Set the list of directories that will be searched to *dirs* (a list of strings).
  317. Overrides any preceding calls to :meth:`add_include_dir`; subsequent calls to
  318. :meth:`add_include_dir` add to the list passed to :meth:`set_include_dirs`.
  319. This does not affect any list of standard include directories that the compiler
  320. may search by default.
  321. .. method:: CCompiler.add_library(libname)
  322. Add *libname* to the list of libraries that will be included in all links driven
  323. by this compiler object. Note that *libname* should \*not\* be the name of a
  324. file containing a library, but the name of the library itself: the actual
  325. filename will be inferred by the linker, the compiler, or the compiler class
  326. (depending on the platform).
  327. The linker will be instructed to link against libraries in the order they were
  328. supplied to :meth:`add_library` and/or :meth:`set_libraries`. It is perfectly
  329. valid to duplicate library names; the linker will be instructed to link against
  330. libraries as many times as they are mentioned.
  331. .. method:: CCompiler.set_libraries(libnames)
  332. Set the list of libraries to be included in all links driven by this compiler
  333. object to *libnames* (a list of strings). This does not affect any standard
  334. system libraries that the linker may include by default.
  335. .. method:: CCompiler.add_library_dir(dir)
  336. Add *dir* to the list of directories that will be searched for libraries
  337. specified to :meth:`add_library` and :meth:`set_libraries`. The linker will be
  338. instructed to search for libraries in the order they are supplied to
  339. :meth:`add_library_dir` and/or :meth:`set_library_dirs`.
  340. .. method:: CCompiler.set_library_dirs(dirs)
  341. Set the list of library search directories to *dirs* (a list of strings). This
  342. does not affect any standard library search path that the linker may search by
  343. default.
  344. .. method:: CCompiler.add_runtime_library_dir(dir)
  345. Add *dir* to the list of directories that will be searched for shared libraries
  346. at runtime.
  347. .. method:: CCompiler.set_runtime_library_dirs(dirs)
  348. Set the list of directories to search for shared libraries at runtime to *dirs*
  349. (a list of strings). This does not affect any standard search path that the
  350. runtime linker may search by default.
  351. .. method:: CCompiler.define_macro(name[, value=None])
  352. Define a preprocessor macro for all compilations driven by this compiler object.
  353. The optional parameter *value* should be a string; if it is not supplied, then
  354. the macro will be defined without an explicit value and the exact outcome
  355. depends on the compiler used (XXX true? does ANSI say anything about this?)
  356. .. method:: CCompiler.undefine_macro(name)
  357. Undefine a preprocessor macro for all compilations driven by this compiler
  358. object. If the same macro is defined by :meth:`define_macro` and
  359. undefined by :meth:`undefine_macro` the last call takes precedence
  360. (including multiple redefinitions or undefinitions). If the macro is
  361. redefined/undefined on a per-compilation basis (ie. in the call to
  362. :meth:`compile`), then that takes precedence.
  363. .. method:: CCompiler.add_link_object(object)
  364. Add *object* to the list of object files (or analogues, such as explicitly named
  365. library files or the output of "resource compilers") to be included in every
  366. link driven by this compiler object.
  367. .. method:: CCompiler.set_link_objects(objects)
  368. Set the list of object files (or analogues) to be included in every link to
  369. *objects*. This does not affect any standard object files that the linker may
  370. include by default (such as system libraries).
  371. The following methods implement methods for autodetection of compiler options,
  372. providing some functionality similar to GNU :program:`autoconf`.
  373. .. method:: CCompiler.detect_language(sources)
  374. Detect the language of a given file, or list of files. Uses the instance
  375. attributes :attr:`language_map` (a dictionary), and :attr:`language_order` (a
  376. list) to do the job.
  377. .. method:: CCompiler.find_library_file(dirs, lib[, debug=0])
  378. Search the specified list of directories for a static or shared library file
  379. *lib* and return the full path to that file. If *debug* is true, look for a
  380. debugging version (if that makes sense on the current platform). Return
  381. ``None`` if *lib* wasn't found in any of the specified directories.
  382. .. method:: CCompiler.has_function(funcname [, includes=None, include_dirs=None, libraries=None, library_dirs=None])
  383. Return a boolean indicating whether *funcname* is supported on the current
  384. platform. The optional arguments can be used to augment the compilation
  385. environment by providing additional include files and paths and libraries and
  386. paths.
  387. .. method:: CCompiler.library_dir_option(dir)
  388. Return the compiler option to add *dir* to the list of directories searched for
  389. libraries.
  390. .. method:: CCompiler.library_option(lib)
  391. Return the compiler option to add *dir* to the list of libraries linked into the
  392. shared library or executable.
  393. .. method:: CCompiler.runtime_library_dir_option(dir)
  394. Return the compiler option to add *dir* to the list of directories searched for
  395. runtime libraries.
  396. .. method:: CCompiler.set_executables(**args)
  397. Define the executables (and options for them) that will be run to perform the
  398. various stages of compilation. The exact set of executables that may be
  399. specified here depends on the compiler class (via the 'executables' class
  400. attribute), but most will have:
  401. +--------------+------------------------------------------+
  402. | attribute | description |
  403. +==============+==========================================+
  404. | *compiler* | the C/C++ compiler |
  405. +--------------+------------------------------------------+
  406. | *linker_so* | linker used to create shared objects and |
  407. | | libraries |
  408. +--------------+------------------------------------------+
  409. | *linker_exe* | linker used to create binary executables |
  410. +--------------+------------------------------------------+
  411. | *archiver* | static library creator |
  412. +--------------+------------------------------------------+
  413. On platforms with a command-line (Unix, DOS/Windows), each of these is a string
  414. that will be split into executable name and (optional) list of arguments.
  415. (Splitting the string is done similarly to how Unix shells operate: words are
  416. delimited by spaces, but quotes and backslashes can override this. See
  417. :func:`distutils.util.split_quoted`.)
  418. The following methods invoke stages in the build process.
  419. .. method:: CCompiler.compile(sources[, output_dir=None, macros=None, include_dirs=None, debug=0, extra_preargs=None, extra_postargs=None, depends=None])
  420. Compile one or more source files. Generates object files (e.g. transforms a
  421. :file:`.c` file to a :file:`.o` file.)
  422. *sources* must be a list of filenames, most likely C/C++ files, but in reality
  423. anything that can be handled by a particular compiler and compiler class (eg.
  424. :class:`MSVCCompiler` can handle resource files in *sources*). Return a list of
  425. object filenames, one per source filename in *sources*. Depending on the
  426. implementation, not all source files will necessarily be compiled, but all
  427. corresponding object filenames will be returned.
  428. If *output_dir* is given, object files will be put under it, while retaining
  429. their original path component. That is, :file:`foo/bar.c` normally compiles to
  430. :file:`foo/bar.o` (for a Unix implementation); if *output_dir* is *build*, then
  431. it would compile to :file:`build/foo/bar.o`.
  432. *macros*, if given, must be a list of macro definitions. A macro definition is
  433. either a ``(name, value)`` 2-tuple or a ``(name,)`` 1-tuple. The former defines
  434. a macro; if the value is ``None``, the macro is defined without an explicit
  435. value. The 1-tuple case undefines a macro. Later
  436. definitions/redefinitions/undefinitions take precedence.
  437. *include_dirs*, if given, must be a list of strings, the directories to add to
  438. the default include file search path for this compilation only.
  439. *debug* is a boolean; if true, the compiler will be instructed to output debug
  440. symbols in (or alongside) the object file(s).
  441. *extra_preargs* and *extra_postargs* are implementation-dependent. On platforms
  442. that have the notion of a command-line (e.g. Unix, DOS/Windows), they are most
  443. likely lists of strings: extra command-line arguments to prepend/append to the
  444. compiler command line. On other platforms, consult the implementation class
  445. documentation. In any event, they are intended as an escape hatch for those
  446. occasions when the abstract compiler framework doesn't cut the mustard.
  447. *depends*, if given, is a list of filenames that all targets depend on. If a
  448. source file is older than any file in depends, then the source file will be
  449. recompiled. This supports dependency tracking, but only at a coarse
  450. granularity.
  451. Raises :exc:`CompileError` on failure.
  452. .. method:: CCompiler.create_static_lib(objects, output_libname[, output_dir=None, debug=0, target_lang=None])
  453. Link a bunch of stuff together to create a static library file. The "bunch of
  454. stuff" consists of the list of object files supplied as *objects*, the extra
  455. object files supplied to :meth:`add_link_object` and/or
  456. :meth:`set_link_objects`, the libraries supplied to :meth:`add_library` and/or
  457. :meth:`set_libraries`, and the libraries supplied as *libraries* (if any).
  458. *output_libname* should be a library name, not a filename; the filename will be
  459. inferred from the library name. *output_dir* is the directory where the library
  460. file will be put. XXX defaults to what?
  461. *debug* is a boolean; if true, debugging information will be included in the
  462. library (note that on most platforms, it is the compile step where this matters:
  463. the *debug* flag is included here just for consistency).
  464. *target_lang* is the target language for which the given objects are being
  465. compiled. This allows specific linkage time treatment of certain languages.
  466. Raises :exc:`LibError` on failure.
  467. .. method:: CCompiler.link(target_desc, objects, output_filename[, output_dir=None, libraries=None, library_dirs=None, runtime_library_dirs=None, export_symbols=None, debug=0, extra_preargs=None, extra_postargs=None, build_temp=None, target_lang=None])
  468. Link a bunch of stuff together to create an executable or shared library file.
  469. The "bunch of stuff" consists of the list of object files supplied as *objects*.
  470. *output_filename* should be a filename. If *output_dir* is supplied,
  471. *output_filename* is relative to it (i.e. *output_filename* can provide
  472. directory components if needed).
  473. *libraries* is a list of libraries to link against. These are library names,
  474. not filenames, since they're translated into filenames in a platform-specific
  475. way (eg. *foo* becomes :file:`libfoo.a` on Unix and :file:`foo.lib` on
  476. DOS/Windows). However, they can include a directory component, which means the
  477. linker will look in that specific directory rather than searching all the normal
  478. locations.
  479. *library_dirs*, if supplied, should be a list of directories to search for
  480. libraries that were specified as bare library names (ie. no directory
  481. component). These are on top of the system default and those supplied to
  482. :meth:`add_library_dir` and/or :meth:`set_library_dirs`. *runtime_library_dirs*
  483. is a list of directories that will be embedded into the shared library and used
  484. to search for other shared libraries that \*it\* depends on at run-time. (This
  485. may only be relevant on Unix.)
  486. *export_symbols* is a list of symbols that the shared library will export.
  487. (This appears to be relevant only on Windows.)
  488. *debug* is as for :meth:`compile` and :meth:`create_static_lib`, with the
  489. slight distinction that it actually matters on most platforms (as opposed to
  490. :meth:`create_static_lib`, which includes a *debug* flag mostly for form's
  491. sake).
  492. *extra_preargs* and *extra_postargs* are as for :meth:`compile` (except of
  493. course that they supply command-line arguments for the particular linker being
  494. used).
  495. *target_lang* is the target language for which the given objects are being
  496. compiled. This allows specific linkage time treatment of certain languages.
  497. Raises :exc:`LinkError` on failure.
  498. .. method:: CCompiler.link_executable(objects, output_progname[, output_dir=None, libraries=None, library_dirs=None, runtime_library_dirs=None, debug=0, extra_preargs=None, extra_postargs=None, target_lang=None])
  499. Link an executable. *output_progname* is the name of the file executable, while
  500. *objects* are a list of object filenames to link in. Other arguments are as for
  501. the :meth:`link` method.
  502. .. method:: CCompiler.link_shared_lib(objects, output_libname[, output_dir=None, libraries=None, library_dirs=None, runtime_library_dirs=None, export_symbols=None, debug=0, extra_preargs=None, extra_postargs=None, build_temp=None, target_lang=None])
  503. Link a shared library. *output_libname* is the name of the output library,
  504. while *objects* is a list of object filenames to link in. Other arguments are
  505. as for the :meth:`link` method.
  506. .. method:: CCompiler.link_shared_object(objects, output_filename[, output_dir=None, libraries=None, library_dirs=None, runtime_library_dirs=None, export_symbols=None, debug=0, extra_preargs=None, extra_postargs=None, build_temp=None, target_lang=None])
  507. Link a shared object. *output_filename* is the name of the shared object that
  508. will be created, while *objects* is a list of object filenames to link in.
  509. Other arguments are as for the :meth:`link` method.
  510. .. method:: CCompiler.preprocess(source[, output_file=None, macros=None, include_dirs=None, extra_preargs=None, extra_postargs=None])
  511. Preprocess a single C/C++ source file, named in *source*. Output will be written
  512. to file named *output_file*, or *stdout* if *output_file* not supplied.
  513. *macros* is a list of macro definitions as for :meth:`compile`, which will
  514. augment the macros set with :meth:`define_macro` and :meth:`undefine_macro`.
  515. *include_dirs* is a list of directory names that will be added to the default
  516. list, in the same way as :meth:`add_include_dir`.
  517. Raises :exc:`PreprocessError` on failure.
  518. The following utility methods are defined by the :class:`CCompiler` class, for
  519. use by the various concrete subclasses.
  520. .. method:: CCompiler.executable_filename(basename[, strip_dir=0, output_dir=''])
  521. Returns the filename of the executable for the given *basename*. Typically for
  522. non-Windows platforms this is the same as the basename, while Windows will get
  523. a :file:`.exe` added.
  524. .. method:: CCompiler.library_filename(libname[, lib_type='static', strip_dir=0, output_dir=''])
  525. Returns the filename for the given library name on the current platform. On Unix
  526. a library with *lib_type* of ``'static'`` will typically be of the form
  527. :file:`liblibname.a`, while a *lib_type* of ``'dynamic'`` will be of the form
  528. :file:`liblibname.so`.
  529. .. method:: CCompiler.object_filenames(source_filenames[, strip_dir=0, output_dir=''])
  530. Returns the name of the object files for the given source files.
  531. *source_filenames* should be a list of filenames.
  532. .. method:: CCompiler.shared_object_filename(basename[, strip_dir=0, output_dir=''])
  533. Returns the name of a shared object file for the given file name *basename*.
  534. .. method:: CCompiler.execute(func, args[, msg=None, level=1])
  535. Invokes :func:`distutils.util.execute` This method invokes a Python function
  536. *func* with the given arguments *args*, after logging and taking into account
  537. the *dry_run* flag. XXX see also.
  538. .. method:: CCompiler.spawn(cmd)
  539. Invokes :func:`distutils.util.spawn`. This invokes an external process to run
  540. the given command. XXX see also.
  541. .. method:: CCompiler.mkpath(name[, mode=511])
  542. Invokes :func:`distutils.dir_util.mkpath`. This creates a directory and any
  543. missing ancestor directories. XXX see also.
  544. .. method:: CCompiler.move_file(src, dst)
  545. Invokes :meth:`distutils.file_util.move_file`. Renames *src* to *dst*. XXX see
  546. also.
  547. .. method:: CCompiler.announce(msg[, level=1])
  548. Write a message using :func:`distutils.log.debug`. XXX see also.
  549. .. method:: CCompiler.warn(msg)
  550. Write a warning message *msg* to standard error.
  551. .. method:: CCompiler.debug_print(msg)
  552. If the *debug* flag is set on this :class:`CCompiler` instance, print *msg* to
  553. standard output, otherwise do nothing.
  554. .. % \subsection{Compiler-specific modules}
  555. .. %
  556. .. % The following modules implement concrete subclasses of the abstract
  557. .. % \class{CCompiler} class. They should not be instantiated directly, but should
  558. .. % be created using \function{distutils.ccompiler.new_compiler()} factory
  559. .. % function.
  560. :mod:`distutils.unixccompiler` --- Unix C Compiler
  561. ==================================================
  562. .. module:: distutils.unixccompiler
  563. :synopsis: UNIX C Compiler
  564. This module provides the :class:`UnixCCompiler` class, a subclass of
  565. :class:`CCompiler` that handles the typical Unix-style command-line C compiler:
  566. * macros defined with :option:`-Dname[=value]`
  567. * macros undefined with :option:`-Uname`
  568. * include search directories specified with :option:`-Idir`
  569. * libraries specified with :option:`-llib`
  570. * library search directories specified with :option:`-Ldir`
  571. * compile handled by :program:`cc` (or similar) executable with :option:`-c`
  572. option: compiles :file:`.c` to :file:`.o`
  573. * link static library handled by :program:`ar` command (possibly with
  574. :program:`ranlib`)
  575. * link shared library handled by :program:`cc` :option:`-shared`
  576. :mod:`distutils.msvccompiler` --- Microsoft Compiler
  577. ====================================================
  578. .. module:: distutils.msvccompiler
  579. :synopsis: Microsoft Compiler
  580. This module provides :class:`MSVCCompiler`, an implementation of the abstract
  581. :class:`CCompiler` class for Microsoft Visual Studio. Typically, extension
  582. modules need to be compiled with the same compiler that was used to compile
  583. Python. For Python 2.3 and earlier, the compiler was Visual Studio 6. For Python
  584. 2.4 and 2.5, the compiler is Visual Studio .NET 2003. The AMD64 and Itanium
  585. binaries are created using the Platform SDK.
  586. :class:`MSVCCompiler` will normally choose the right compiler, linker etc. on
  587. its own. To override this choice, the environment variables *DISTUTILS_USE_SDK*
  588. and *MSSdk* must be both set. *MSSdk* indicates that the current environment has
  589. been setup by the SDK's ``SetEnv.Cmd`` script, or that the environment variables
  590. had been registered when the SDK was installed; *DISTUTILS_USE_SDK* indicates
  591. that the distutils user has made an explicit choice to override the compiler
  592. selection by :class:`MSVCCompiler`.
  593. :mod:`distutils.bcppcompiler` --- Borland Compiler
  594. ==================================================
  595. .. module:: distutils.bcppcompiler
  596. This module provides :class:`BorlandCCompiler`, an subclass of the abstract
  597. :class:`CCompiler` class for the Borland C++ compiler.
  598. :mod:`distutils.cygwincompiler` --- Cygwin Compiler
  599. ===================================================
  600. .. module:: distutils.cygwinccompiler
  601. This module provides the :class:`CygwinCCompiler` class, a subclass of
  602. :class:`UnixCCompiler` that handles the Cygwin port of the GNU C compiler to
  603. Windows. It also contains the Mingw32CCompiler class which handles the mingw32
  604. port of GCC (same as cygwin in no-cygwin mode).
  605. :mod:`distutils.emxccompiler` --- OS/2 EMX Compiler
  606. ===================================================
  607. .. module:: distutils.emxccompiler
  608. :synopsis: OS/2 EMX Compiler support
  609. This module provides the EMXCCompiler class, a subclass of
  610. :class:`UnixCCompiler` that handles the EMX port of the GNU C compiler to OS/2.
  611. :mod:`distutils.mwerkscompiler` --- Metrowerks CodeWarrior support
  612. ==================================================================
  613. .. module:: distutils.mwerkscompiler
  614. :synopsis: Metrowerks CodeWarrior support
  615. Contains :class:`MWerksCompiler`, an implementation of the abstract
  616. :class:`CCompiler` class for MetroWerks CodeWarrior on the pre-Mac OS X
  617. Macintosh. Needs work to support CW on Windows or Mac OS X.
  618. .. % \subsection{Utility modules}
  619. .. %
  620. .. % The following modules all provide general utility functions. They haven't
  621. .. % all been documented yet.
  622. :mod:`distutils.archive_util` --- Archiving utilities
  623. ======================================================
  624. .. module:: distutils.archive_util
  625. :synopsis: Utility functions for creating archive files (tarballs, zip files, ...)
  626. This module provides a few functions for creating archive files, such as
  627. tarballs or zipfiles.
  628. .. function:: make_archive(base_name, format[, root_dir=None, base_dir=None, verbose=0, dry_run=0])
  629. Create an archive file (eg. ``zip`` or ``tar``). *base_name* is the name of
  630. the file to create, minus any format-specific extension; *format* is the
  631. archive format: one of ``zip``, ``tar``, ``ztar``, or ``gztar``. *root_dir* is
  632. a directory that will be the root directory of the archive; ie. we typically
  633. ``chdir`` into *root_dir* before creating the archive. *base_dir* is the
  634. directory where we start archiving from; ie. *base_dir* will be the common
  635. prefix of all files and directories in the archive. *root_dir* and *base_dir*
  636. both default to the current directory. Returns the name of the archive file.
  637. .. XXX This should be changed to support bz2 files.
  638. .. function:: make_tarball(base_name, base_dir[, compress='gzip', verbose=0, dry_run=0])
  639. 'Create an (optional compressed) archive as a tar file from all files in and
  640. under *base_dir*. *compress* must be ``'gzip'`` (the default), ``'compress'``,
  641. ``'bzip2'``, or ``None``. Both :program:`tar` and the compression utility named
  642. by *compress* must be on the default program search path, so this is probably
  643. Unix-specific. The output tar file will be named :file:`base_dir.tar`,
  644. possibly plus the appropriate compression extension (:file:`.gz`, :file:`.bz2`
  645. or :file:`.Z`). Return the output filename.
  646. .. XXX This should be replaced with calls to the :mod:`tarfile` module.
  647. .. function:: make_zipfile(base_name, base_dir[, verbose=0, dry_run=0])
  648. Create a zip file from all files in and under *base_dir*. The output zip file
  649. will be named *base_dir* + :file:`.zip`. Uses either the :mod:`zipfile` Python
  650. module (if available) or the InfoZIP :file:`zip` utility (if installed and
  651. found on the default search path). If neither tool is available, raises
  652. :exc:`DistutilsExecError`. Returns the name of the output zip file.
  653. :mod:`distutils.dep_util` --- Dependency checking
  654. =================================================
  655. .. module:: distutils.dep_util
  656. :synopsis: Utility functions for simple dependency checking
  657. This module provides functions for performing simple, timestamp-based
  658. dependency of files and groups of files; also, functions based entirely on such
  659. timestamp dependency analysis.
  660. .. function:: newer(source, target)
  661. Return true if *source* exists and is more recently modified than *target*, or
  662. if *source* exists and *target* doesn't. Return false if both exist and *target*
  663. is the same age or newer than *source*. Raise :exc:`DistutilsFileError` if
  664. *source* does not exist.
  665. .. function:: newer_pairwise(sources, targets)
  666. Walk two filename lists in parallel, testing if each source is newer than its
  667. corresponding target. Return a pair of lists (*sources*, *targets*) where
  668. source is newer than target, according to the semantics of :func:`newer`
  669. .. % % equivalent to a listcomp...
  670. .. function:: newer_group(sources, target[, missing='error'])
  671. Return true if *target* is out-of-date with respect to any file listed in
  672. *sources* In other words, if *target* exists and is newer than every file in
  673. *sources*, return false; otherwise return true. *missing* controls what we do
  674. when a source file is missing; the default (``'error'``) is to blow up with an
  675. :exc:`OSError` from inside :func:`os.stat`; if it is ``'ignore'``, we silently
  676. drop any missing source files; if it is ``'newer'``, any missing source files
  677. make us assume that *target* is out-of-date (this is handy in "dry-run" mode:
  678. it'll make you pretend to carry out commands that wouldn't work because inputs
  679. are missing, but that doesn't matter because you're not actually going to run
  680. the commands).
  681. :mod:`distutils.dir_util` --- Directory tree operations
  682. =======================================================
  683. .. module:: distutils.dir_util
  684. :synopsis: Utility functions for operating on directories and directory trees
  685. This module provides functions for operating on directories and trees of
  686. directories.
  687. .. function:: mkpath(name[, mode=0777, verbose=0, dry_run=0])
  688. Create a directory and any missing ancestor directories. If the directory
  689. already exists (or if *name* is the empty string, which means the current
  690. directory, which of course exists), then do nothing. Raise
  691. :exc:`DistutilsFileError` if unable to create some directory along the way (eg.
  692. some sub-path exists, but is a file rather than a directory). If *verbose* is
  693. true, print a one-line summary of each mkdir to stdout. Return the list of
  694. directories actually created.
  695. .. function:: create_tree(base_dir, files[, mode=0777, verbose=0, dry_run=0])
  696. Create all the empty directories under *base_dir* needed to put *files* there.
  697. *base_dir* is just the a name of a directory which doesn't necessarily exist
  698. yet; *files* is a list of filenames to be interpreted relative to *base_dir*.
  699. *base_dir* + the directory portion of every file in *files* will be created if
  700. it doesn't already exist. *mode*, *verbose* and *dry_run* flags are as for
  701. :func:`mkpath`.
  702. .. function:: copy_tree(src, dst[, preserve_mode=1, preserve_times=1, preserve_symlinks=0, update=0, verbose=0, dry_run=0])
  703. Copy an entire directory tree *src* to a new location *dst*. Both *src* and
  704. *dst* must be directory names. If *src* is not a directory, raise
  705. :exc:`DistutilsFileError`. If *dst* does not exist, it is created with
  706. :func:`mkpath`. The end result of the copy is that every file in *src* is
  707. copied to *dst*, and directories under *src* are recursively copied to *dst*.
  708. Return the list of files that were copied or might have been copied, using their
  709. output name. The return value is unaffected by *update* or *dry_run*: it is
  710. simply the list of all files under *src*, with the names changed to be under
  711. *dst*.
  712. *preserve_mode* and *preserve_times* are the same as for :func:`copy_file` in
  713. :mod:`distutils.file_util`; note that they only apply to regular files, not to
  714. directories. If *preserve_symlinks* is true, symlinks will be copied as
  715. symlinks (on platforms that support them!); otherwise (the default), the
  716. destination of the symlink will be copied. *update* and *verbose* are the same
  717. as for :func:`copy_file`.
  718. .. function:: remove_tree(directory[, verbose=0, dry_run=0])
  719. Recursively remove *directory* and all files and directories underneath it. Any
  720. errors are ignored (apart from being reported to ``sys.stdout`` if *verbose* is
  721. true).
  722. **\*\*** Some of this could be replaced with the shutil module? **\*\***
  723. :mod:`distutils.file_util` --- Single file operations
  724. =====================================================
  725. .. module:: distutils.file_util
  726. :synopsis: Utility functions for operating on single files
  727. This module contains some utility functions for operating on individual files.
  728. .. function:: copy_file(src, dst[, preserve_mode=1, preserve_times=1, update=0, link=None, verbose=0, dry_run=0])
  729. Copy file *src* to *dst*. If *dst* is a directory, then *src* is copied there
  730. with the same name; otherwise, it must be a filename. (If the file exists, it
  731. will be ruthlessly clobbered.) If *preserve_mode* is true (the default), the
  732. file's mode (type and permission bits, or whatever is analogous on the
  733. current platform) is copied. If *preserve_times* is true (the default), the
  734. last-modified and last-access times are copied as well. If *update* is true,
  735. *src* will only be copied if *dst* does not exist, or if *dst* does exist but
  736. is older than *src*.
  737. *link* allows you to make hard links (using :func:`os.link`) or symbolic links
  738. (using :func:`os.symlink`) instead of copying: set it to ``'hard'`` or
  739. ``'sym'``; if it is ``None`` (the default), files are copied. Don't set *link*
  740. on systems that don't support it: :func:`copy_file` doesn't check if hard or
  741. symbolic linking is available. It uses :func:`_copy_file_contents` to copy file
  742. contents.
  743. Return a tuple ``(dest_name, copied)``: *dest_name* is the actual name of the
  744. output file, and *copied* is true if the file was copied (or would have been
  745. copied, if *dry_run* true).
  746. .. % XXX if the destination file already exists, we clobber it if
  747. .. % copying, but blow up if linking. Hmmm. And I don't know what
  748. .. % macostools.copyfile() does. Should definitely be consistent, and
  749. .. % should probably blow up if destination exists and we would be
  750. .. % changing it (ie. it's not already a hard/soft link to src OR
  751. .. % (not update) and (src newer than dst)).
  752. .. function:: move_file(src, dst[, verbose, dry_run])
  753. Move file *src* to *dst*. If *dst* is a directory, the file will be moved into
  754. it with the same name; otherwise, *src* is just renamed to *dst*. Returns the
  755. new full name of the file.
  756. .. warning::
  757. Handles cross-device moves on Unix using :func:`copy_file`. What about
  758. other systems?
  759. .. function:: write_file(filename, contents)
  760. Create a file called *filename* and write *contents* (a sequence of strings
  761. without line terminators) to it.
  762. :mod:`distutils.util` --- Miscellaneous other utility functions
  763. ===============================================================
  764. .. module:: distutils.util
  765. :synopsis: Miscellaneous other utility functions
  766. This module contains other assorted bits and pieces that don't fit into any
  767. other utility module.
  768. .. function:: get_platform()
  769. Return a string that identifies the current platform. This is used mainly to
  770. distinguish platform-specific build directories and platform-specific built
  771. distributions. Typically includes the OS name and version and the architecture
  772. (as supplied by 'os.uname()'), although the exact information included depends
  773. on the OS; eg. for IRIX the architecture isn't particularly important (IRIX only
  774. runs on SGI hardware), but for Linux the kernel version isn't particularly
  775. important.
  776. Examples of returned values:
  777. * ``linux-i586``
  778. * ``linux-alpha``
  779. * ``solaris-2.6-sun4u``
  780. * ``irix-5.3``
  781. * ``irix64-6.2``
  782. For non-POSIX platforms, currently just returns ``sys.platform``.
  783. For Mac OS X systems the OS version reflects the minimal version on which
  784. binaries will run (that is, the value of ``MACOSX_DEPLOYMENT_TARGET``
  785. during the build of Python), not the OS version of the current system.
  786. For universal binary builds on Mac OS X the architecture value reflects
  787. the univeral binary status instead of the architecture of the current
  788. processor. For 32-bit universal binaries the architecture is ``fat``,
  789. for 64-bit universal binaries the architecture is ``fat64``, and
  790. for 4-way universal binaries the architecture is ``universal``. Starting
  791. from Python 2.7 and Python 3.2 the architecture ``fat3`` is used for
  792. a 3-way universal build (ppc, i386, x86_64) and ``intel`` is used for
  793. a univeral build with the i386 and x86_64 architectures
  794. Examples of returned values on Mac OS X:
  795. * ``macosx-10.3-ppc``
  796. * ``macosx-10.3-fat``
  797. * ``macosx-10.5-universal``
  798. * ``macosx-10.6-intel``
  799. .. % XXX isn't this also provided by some other non-distutils module?
  800. .. function:: convert_path(pathname)
  801. Return 'pathname' as a name that will work on the native filesystem, i.e. split
  802. it on '/' and put it back together again using the current directory separator.
  803. Needed because filenames in the setup script are always supplied in Unix style,
  804. and have to be converted to the local convention before we can actually use them
  805. in the filesystem. Raises :exc:`ValueError` on non-Unix-ish systems if
  806. *pathname* either starts or ends with a slash.
  807. .. function:: change_root(new_root, pathname)
  808. Return *pathname* with *new_root* prepended. If *pathname* is relative, this is
  809. equivalent to ``os.path.join(new_root,pathname)`` Otherwise, it requires making
  810. *pathname* relative and then joining the two, which is tricky on DOS/Windows.
  811. .. function:: check_environ()
  812. Ensure that 'os.environ' has all the environment variables we guarantee that
  813. users can use in config files, command-line options, etc. Currently this
  814. includes:
  815. * :envvar:`HOME` - user's home directory (Unix only)
  816. * :envvar:`PLAT` - description of the current platform, including hardware and
  817. OS (see :func:`get_platform`)
  818. .. function:: subst_vars(s, local_vars)
  819. Perform shell/Perl-style variable substitution on *s*. Every occurrence of
  820. ``$`` followed by a name is considered a variable, and variable is substituted
  821. by the value found in the *local_vars* dictionary, or in ``os.environ`` if it's
  822. not in *local_vars*. *os.environ* is first checked/augmented to guarantee that
  823. it contains certain values: see :func:`check_environ`. Raise :exc:`ValueError`
  824. for any variables not found in either *local_vars* or ``os.environ``.
  825. Note that this is not a fully-fledged string interpolation function. A valid
  826. ``$variable`` can consist only of upper and lower case letters, numbers and an
  827. underscore. No { } or ( ) style quoting is available.
  828. .. function:: grok_environment_error(exc[, prefix='error: '])
  829. Generate a useful error message from an :exc:`EnvironmentError` (:exc:`IOError`
  830. or :exc:`OSError`) exception object. Handles Python 1.5.1 and later styles,
  831. and does what it can to deal with exception objects that don't have a filename
  832. (which happens when the error is due to a two-file operation, such as
  833. :func:`rename` or :func:`link`). Returns the error message as a string
  834. prefixed with *prefix*.
  835. .. function:: split_quoted(s)
  836. Split a string up according to Unix shell-like rules for quotes and backslashes.
  837. In short: words are delimited by spaces, as long as those spaces are not escaped
  838. by a backslash, or inside a quoted string. Single and double quotes are
  839. equivalent, and the quote characters can be backslash-escaped. The backslash is
  840. stripped from any two-character escape sequence, leaving only the escaped
  841. character. The quote characters are stripped from any quoted string. Returns a
  842. list of words.
  843. .. % Should probably be moved into the standard library.
  844. .. function:: execute(func, args[, msg=None, verbose=0, dry_run=0])
  845. Perform some action that affects the outside world (for instance, writing to the
  846. filesystem). Such actions are special because they are disabled by the
  847. *dry_run* flag. This method takes care of all that bureaucracy for you; all
  848. you have to do is supply the function to call and an argument tuple for it (to
  849. embody the "external action" being performed), and an optional message to print.
  850. .. function:: strtobool(val)
  851. Convert a string representation of truth to true (1) or false (0).
  852. True values are ``y``, ``yes``, ``t``, ``true``, ``on`` and ``1``; false values
  853. are ``n``, ``no``, ``f``, ``false``, ``off`` and ``0``. Raises
  854. :exc:`ValueError` if *val* is anything else.
  855. .. function:: byte_compile(py_files[, optimize=0, force=0, prefix=None, base_dir=None, verbose=1, dry_run=0, direct=None])
  856. Byte-compile a collection of Python source files to either :file:`.pyc` or
  857. :file:`.pyo` files in the same directory. *py_files* is a list of files to
  858. compile; any files that don't end in :file:`.py` are silently skipped.
  859. *optimize* must be one of the following:
  860. * ``0`` - don't optimize (generate :file:`.pyc`)
  861. * ``1`` - normal optimization (like ``python -O``)
  862. * ``2`` - extra optimization (like ``python -OO``)
  863. If *force* is true, all files are recompiled regardless of timestamps.
  864. The source filename encoded in each :term:`bytecode` file defaults to the filenames
  865. listed in *py_files*; you can modify these with *prefix* and *basedir*.
  866. *prefix* is a string that will be stripped off of each source filename, and
  867. *base_dir* is a directory name that will be prepended (after *prefix* is
  868. stripped). You can supply either or both (or neither) of *prefix* and
  869. *base_dir*, as you wish.
  870. If *dry_run* is true, doesn't actually do anything that would affect the
  871. filesystem.
  872. Byte-compilation is either done directly in this interpreter process with the
  873. standard :mod:`py_compile` module, or indirectly by writing a temporary script
  874. and executing it. Normally, you should let :func:`byte_compile` figure out to
  875. use direct compilation or not (see the source for details). The *direct* flag
  876. is used by the script generated in indirect mode; unless you know what you're
  877. doing, leave it set to ``None``.
  878. .. function:: rfc822_escape(header)
  879. Return a version of *header* escaped for inclusion in an :rfc:`822` header, by
  880. ensuring there are 8 spaces space after each newline. Note that it does no other
  881. modification of the string.
  882. .. % this _can_ be replaced
  883. .. % \subsection{Distutils objects}
  884. :mod:`distutils.dist` --- The Distribution class
  885. ================================================
  886. .. module:: distutils.dist
  887. :synopsis: Provides the Distribution class, which represents the module distribution being
  888. built/installed/distributed
  889. This module provides the :class:`Distribution` class, which represents the
  890. module distribution being built/installed/distributed.
  891. :mod:`distutils.extension` --- The Extension class
  892. ==================================================
  893. .. module:: distutils.extension
  894. :synopsis: Provides the Extension class, used to describe C/C++ extension modules in setup
  895. scripts
  896. This module provides the :class:`Extension` class, used to describe C/C++
  897. extension modules in setup scripts.
  898. .. % \subsection{Ungrouped modules}
  899. .. % The following haven't been moved into a more appropriate section yet.
  900. :mod:`distutils.debug` --- Distutils debug mode
  901. ===============================================
  902. .. module:: distutils.debug
  903. :synopsis: Provides the debug flag for distutils
  904. This module provides the DEBUG flag.
  905. :mod:`distutils.errors` --- Distutils exceptions
  906. ================================================
  907. .. module:: distutils.errors
  908. :synopsis: Provides standard distutils exceptions
  909. Provides exceptions used by the Distutils modules. Note that Distutils modules
  910. may raise standard exceptions; in particular, SystemExit is usually raised for
  911. errors that are obviously the end-user's fault (eg. bad command-line arguments).
  912. This module is safe to use in ``from ... import *`` mode; it only exports
  913. symbols whose names start with ``Distutils`` and end with ``Error``.
  914. :mod:`distutils.fancy_getopt` --- Wrapper around the standard getopt module
  915. ===========================================================================
  916. .. module:: distutils.fancy_getopt
  917. :synopsis: Additional getopt functionality
  918. This module provides a wrapper around the standard :mod:`getopt` module that
  919. provides the following additional features:
  920. * short and long options are tied together
  921. * options have help strings, so :func:`fancy_getopt` could potentially create a
  922. complete usage summary
  923. * options set attributes of a passed-in object
  924. * boolean options can have "negative aliases" --- eg. if :option:`--quiet` is
  925. the "negative alias" of :option:`--verbose`, then :option:`--quiet` on the
  926. command line sets *verbose* to false.
  927. **\*\*** Should be replaced with :mod:`optik` (which is also now known as
  928. :mod:`optparse` in Python 2.3 and later). **\*\***
  929. .. function:: fancy_getopt(options, negative_opt, object, args)
  930. Wrapper function. *options* is a list of ``(long_option, short_option,
  931. help_string)`` 3-tuples as described in the constructor for
  932. :class:`FancyGetopt`. *negative_opt* should be a dictionary mapping option names
  933. to option names, both the key and value should be in the *options* list.
  934. *object* is an object which will be used to store values (see the :meth:`getopt`
  935. method of the :class:`FancyGetopt` class). *args* is the argument list. Will use
  936. ``sys.argv[1:]`` if you pass ``None`` as *args*.
  937. .. function:: wrap_text(text, width)
  938. Wraps *text* to less than *width* wide.
  939. .. XXX Should be replaced with :mod:`textwrap` (which is available in Python
  940. 2.3 and later).
  941. .. class:: FancyGetopt([option_table=None])
  942. The option_table is a list of 3-tuples: ``(long_option, short_option,
  943. help_string)``
  944. If an option takes an argument, its *long_option* should have ``'='`` appended;
  945. *short_option* should just be a single character, no ``':'`` in any case.
  946. *short_option* should be ``None`` if a *long_option* doesn't have a
  947. corresponding *short_option*. All option tuples must have long options.
  948. The :class:`FancyGetopt` class provides the following methods:
  949. .. method:: FancyGetopt.getopt([args=None, object=None])
  950. Parse command-line options in args. Store as attributes on *object*.
  951. If *args* is ``None`` or not supplied, uses ``sys.argv[1:]``. If *object* is
  952. ``None`` or not supplied, creates a new :class:`OptionDummy` instance, stores
  953. option values there, and returns a tuple ``(args, object)``. If *object* is
  954. supplied, it is modified in place and :func:`getopt` just returns *args*; in
  955. both cases, the returned *args* is a modified copy of the passed-in *args* list,
  956. which is left untouched.
  957. .. % and args returned are?
  958. .. method:: FancyGetopt.get_option_order()
  959. Returns the list of ``(option, value)`` tuples processed by the previous run of
  960. :meth:`getopt` Raises :exc:`RuntimeError` if :meth:`getopt` hasn't been called
  961. yet.
  962. .. method:: FancyGetopt.generate_help([header=None])
  963. Generate help text (a list of strings, one per suggested line of output) from
  964. the option table for this :class:`FancyGetopt` object.
  965. If supplied, prints the supplied *header* at the top of the help.
  966. :mod:`distutils.filelist` --- The FileList class
  967. ================================================
  968. .. module:: distutils.filelist
  969. :synopsis: The FileList class, used for poking about the file system and
  970. building lists of files.
  971. This module provides the :class:`FileList` class, used for poking about the
  972. filesystem and building lists of files.
  973. :mod:`distutils.log` --- Simple PEP 282-style logging
  974. =====================================================
  975. .. module:: distutils.log
  976. :synopsis: A simple logging mechanism, 282-style
  977. .. XXX Should be replaced with standard :mod:`logging` module.
  978. :mod:`distutils.spawn` --- Spawn a sub-process
  979. ==============================================
  980. .. module:: distutils.spawn
  981. :synopsis: Provides the spawn() function
  982. This module provides the :func:`spawn` function, a front-end to various
  983. platform-specific functions for launching another program in a sub-process.
  984. Also provides :func:`find_executable` to search the path for a given executable
  985. name.
  986. :mod:`distutils.sysconfig` --- System configuration information
  987. ===============================================================
  988. .. module:: distutils.sysconfig
  989. :synopsis: Low-level access to configuration information of the Python interpreter.
  990. .. moduleauthor:: Fred L. Drake, Jr. <fdrake@acm.org>
  991. .. moduleauthor:: Greg Ward <gward@python.net>
  992. .. sectionauthor:: Fred L. Drake, Jr. <fdrake@acm.org>
  993. The :mod:`distutils.sysconfig` module provides access to Python's low-level
  994. configuration information. The specific configuration variables available
  995. depend heavily on the platform and configuration. The specific variables depend
  996. on the build process for the specific version of Python being run; the variables
  997. are those found in the :file:`Makefile` and configuration header that are
  998. installed with Python on Unix systems. The configuration header is called
  999. :file:`pyconfig.h` for Python versions starting with 2.2, and :file:`config.h`
  1000. for earlier versions of Python.
  1001. Some additional functions are provided which perform some useful manipulations
  1002. for other parts of the :mod:`distutils` package.
  1003. .. data:: PREFIX
  1004. The result of ``os.path.normpath(sys.prefix)``.
  1005. .. data:: EXEC_PREFIX
  1006. The result of ``os.path.normpath(sys.exec_prefix)``.
  1007. .. function:: get_config_var(name)
  1008. Return the value of a single variable. This is equivalent to
  1009. ``get_config_vars().get(name)``.
  1010. .. function:: get_config_vars(...)
  1011. Return a set of variable definitions. If there are no arguments, this returns a
  1012. dictionary mapping names of configuration variables to values. If arguments are
  1013. provided, they should be strings, and the return value will be a sequence giving
  1014. the associated values. If a given name does not have a corresponding value,
  1015. ``None`` will be included for that variable.
  1016. .. function:: get_config_h_filename()
  1017. Return the full path name of the configuration header. For Unix, this will be
  1018. the header generated by the :program:`configure` script; for other platforms the
  1019. header will have been supplied directly by the Python source distribution. The
  1020. file is a platform-specific text file.
  1021. .. function:: get_makefile_filename()
  1022. Return the full path name of the :file:`Makefile` used to build Python. For
  1023. Unix, this will be a file generated by the :program:`configure` script; the
  1024. meaning for other platforms will vary. The file is a platform-specific text
  1025. file, if it exists. This function is only useful on POSIX platforms.
  1026. .. function:: get_python_inc([plat_specific[, prefix]])
  1027. Return the directory for either the general or platform-dependent C include
  1028. files. If *plat_specific* is true, the platform-dependent include directory is
  1029. returned; if false or omitted, the platform-independent directory is returned.
  1030. If *prefix* is given, it is used as either the prefix instead of
  1031. :const:`PREFIX`, or as the exec-prefix instead of :const:`EXEC_PREFIX` if
  1032. *plat_specific* is true.
  1033. .. function:: get_python_lib([plat_specific[, standard_lib[, prefix]]])
  1034. Return the directory for either the general or platform-dependent library
  1035. installation. If *plat_specific* is true, the platform-dependent include
  1036. directory is returned; if false or omitted, the platform-independent directory
  1037. is returned. If *prefix* is given, it is used as either the prefix instead of
  1038. :const:`PREFIX`, or as the exec-prefix instead of :const:`EXEC_PREFIX` if
  1039. *plat_specific* is true. If *standard_lib* is true, the directory for the
  1040. standard library is returned rather than the directory for the installation of
  1041. third-party extensions.
  1042. The following function is only intended for use within the :mod:`distutils`
  1043. package.
  1044. .. function:: customize_compiler(compiler)
  1045. Do any platform-specific customization of a
  1046. :class:`distutils.ccompiler.CCompiler` instance.
  1047. This function is only needed on Unix at this time, but should be called
  1048. consistently to support forward-compatibility. It inserts the information that
  1049. varies across Unix flavors and is stored in Python's :file:`Makefile`. This
  1050. information includes the selected compiler, compiler and linker options, and the
  1051. extension used by the linker for shared objects.
  1052. This function is even more special-purpose, and should only be used from
  1053. Python's own build procedures.
  1054. .. function:: set_python_build()
  1055. Inform the :mod:`distutils.sysconfig` module that it is being used as part of
  1056. the build process for Python. This changes a lot of relative locations for
  1057. files, allowing them to be located in the build area rather than in an installed
  1058. Python.
  1059. :mod:`distutils.text_file` --- The TextFile class
  1060. =================================================
  1061. .. module:: distutils.text_file
  1062. :synopsis: provides the TextFile class, a simple interface to text files
  1063. This module provides the :class:`TextFile` class, which gives an interface to
  1064. text files that (optionally) takes care of stripping comments, ignoring blank
  1065. lines, and joining lines with backslashes.
  1066. .. class:: TextFile([filename=None, file=None, **options])
  1067. This class provides a file-like object that takes care of all the things you
  1068. commonly want to do when processing a text file that has some line-by-line
  1069. syntax: strip comments (as long as ``#`` is your comment character), skip blank
  1070. lines, join adjacent lines by escaping the newline (ie. backslash at end of
  1071. line), strip leading and/or trailing whitespace. All of these are optional and
  1072. independently controllable.
  1073. The class provides a :meth:`warn` method so you can generate warning messages
  1074. that report physical line number, even if the logical line in question spans
  1075. multiple physical lines. Also provides :meth:`unreadline` for implementing
  1076. line-at-a-time lookahead.
  1077. :class:`TextFile` instances are create with either *filename*, *file*, or both.
  1078. :exc:`RuntimeError` is raised if both are ``None``. *filename* should be a
  1079. string, and *file* a file object (or something that provides :meth:`readline`
  1080. and :meth:`close` methods). It is recommended that you supply at least
  1081. *filename*, so that :class:`TextFile` can include it in warning messages. If
  1082. *file* is not supplied, :class:`TextFile` creates its own using the
  1083. :func:`open` built-in function.
  1084. The options are all boolean, and affect the values returned by :meth:`readline`
  1085. +------------------+--------------------------------+---------+
  1086. | option name | description | default |
  1087. +==================+================================+=========+
  1088. | *strip_comments* | strip from ``'#'`` to end-of- | true |
  1089. | | line, as well as any | |
  1090. | | whitespace leading up to the | |
  1091. | | ``'#'``\ ---unless it is | |
  1092. | | escaped by a backslash | |
  1093. +------------------+--------------------------------+---------+
  1094. | *lstrip_ws* | strip leading whitespace from | false |
  1095. | | each line before returning it | |
  1096. +------------------+--------------------------------+---------+
  1097. | *rstrip_ws* | strip trailing whitespace | true |
  1098. | | (including line terminator!) | |
  1099. | | from each line before | |
  1100. | | returning it. | |
  1101. +------------------+--------------------------------+---------+
  1102. | *skip_blanks* | skip lines that are empty | true |
  1103. | | \*after\* stripping comments | |
  1104. | | and whitespace. (If both | |
  1105. | | lstrip_ws and rstrip_ws are | |
  1106. | | false, then some lines may | |
  1107. | | consist of solely whitespace: | |
  1108. | | these will \*not\* be skipped, | |
  1109. | | even if *skip_blanks* is | |
  1110. | | true.) | |
  1111. +------------------+--------------------------------+---------+
  1112. | *join_lines* | if a backslash is the last | false |
  1113. | | non-newline character on a | |
  1114. | | line after stripping comments | |
  1115. | | and whitespace, join the | |
  1116. | | following line to it to form | |
  1117. | | one logical line; if N | |
  1118. | | consecutive lines end with a | |
  1119. | | backslash, then N+1 physical | |
  1120. | | lines will be joined to form | |
  1121. | | one logical line. | |
  1122. +------------------+--------------------------------+---------+
  1123. | *collapse_join* | strip leading whitespace from | false |
  1124. | | lines that are joined to their | |
  1125. | | predecessor; only matters if | |
  1126. | | ``(join_lines and not | |
  1127. | | lstrip_ws)`` | |
  1128. +------------------+--------------------------------+---------+
  1129. Note that since *rstrip_ws* can strip the trailing newline, the semantics of
  1130. :meth:`readline` must differ from those of the builtin file object's
  1131. :meth:`readline` method! In particular, :meth:`readline` returns ``None`` for
  1132. end-of-file: an empty string might just be a blank line (or an all-whitespace
  1133. line), if *rstrip_ws* is true but *skip_blanks* is not.
  1134. .. method:: TextFile.open(filename)
  1135. Open a new file *filename*. This overrides any *file* or *filename* constructor
  1136. arguments.
  1137. .. method:: TextFile.close()
  1138. Close the current file and forget everything we know about it (including the
  1139. filename and the current line number).
  1140. .. method:: TextFile.warn(msg[,line=None])
  1141. Print (to stderr) a warning message tied to the current logical line in the
  1142. current file. If the current logical line in the file spans multiple physical
  1143. lines, the warning refers to the whole range, such as ``"lines 3-5"``. If
  1144. *line* is supplied, it overrides the current line number; it may be a list or
  1145. tuple to indicate a range of physical lines, or an integer for a single
  1146. physical line.
  1147. .. method:: TextFile.readline()
  1148. Read and return a single logical line from the current file (or from an internal
  1149. buffer if lines have previously been "unread" with :meth:`unreadline`). If the
  1150. *join_lines* option is true, this may involve reading multiple physical lines
  1151. concatenated into a single string. Updates the current line number, so calling
  1152. :meth:`warn` after :meth:`readline` emits a warning about the physical line(s)
  1153. just read. Returns ``None`` on end-of-file, since the empty string can occur
  1154. if *rstrip_ws* is true but *strip_blanks* is not.
  1155. .. method:: TextFile.readlines()
  1156. Read and return the list of all logical lines remaining in the current file.
  1157. This updates the current line number to the last line of the file.
  1158. .. method:: TextFile.unreadline(line)
  1159. Push *line* (a string) onto an internal buffer that will be checked by future
  1160. :meth:`readline` calls. Handy for implementing a parser with line-at-a-time
  1161. lookahead. Note that lines that are "unread" with :meth:`unreadline` are not
  1162. subsequently re-cleansed (whitespace stripped, or whatever) when read with
  1163. :meth:`readline`. If multiple calls are made to :meth:`unreadline` before a call
  1164. to :meth:`readline`, the lines will be returned most in most recent first order.
  1165. :mod:`distutils.version` --- Version number classes
  1166. ===================================================
  1167. .. module:: distutils.version
  1168. :synopsis: implements classes that represent module version numbers.
  1169. .. % todo
  1170. .. % \section{Distutils Commands}
  1171. .. %
  1172. .. % This part of Distutils implements the various Distutils commands, such
  1173. .. % as \code{build}, \code{install} \&c. Each command is implemented as a
  1174. .. % separate module, with the command name as the name of the module.
  1175. :mod:`distutils.cmd` --- Abstract base class for Distutils commands
  1176. ===================================================================
  1177. .. module:: distutils.cmd
  1178. :synopsis: This module provides the abstract base class Command. This class is subclassed
  1179. by the modules in the distutils.command subpackage.
  1180. This module supplies the abstract base class :class:`Command`.
  1181. .. class:: Command(dist)
  1182. Abstract base class for defining command classes, the "worker bees" of the
  1183. Distutils. A useful analogy for command classes is to think of them as
  1184. subroutines with local variables called *options*. The options are declared in
  1185. :meth:`initialize_options` and defined (given their final values) in
  1186. :meth:`finalize_options`, both of which must be defined by every command class.
  1187. The distinction between the two is necessary because option values might come
  1188. from the outside world (command line, config file, ...), and any options
  1189. dependent on other options must be computed after these outside influences have
  1190. been processed --- hence :meth:`finalize_options`. The body of the subroutine,
  1191. where it does all its work based on the values of its options, is the
  1192. :meth:`run` method, which must also be implemented by every command class.
  1193. The class constructor takes a single argument *dist*, a :class:`Distribution`
  1194. instance.
  1195. :mod:`distutils.command` --- Individual Distutils commands
  1196. ==========================================================
  1197. .. module:: distutils.command
  1198. :synopsis: This subpackage contains one module for each standard Distutils command.
  1199. .. % \subsubsection{Individual Distutils commands}
  1200. .. % todo
  1201. :mod:`distutils.command.bdist` --- Build a binary installer
  1202. ===========================================================
  1203. .. module:: distutils.command.bdist
  1204. :synopsis: Build a binary installer for a package
  1205. .. % todo
  1206. :mod:`distutils.command.bdist_packager` --- Abstract base class for packagers
  1207. =============================================================================
  1208. .. module:: distutils.command.bdist_packager
  1209. :synopsis: Abstract base class for packagers
  1210. .. % todo
  1211. :mod:`distutils.command.bdist_dumb` --- Build a "dumb" installer
  1212. ================================================================
  1213. .. module:: distutils.command.bdist_dumb
  1214. :synopsis: Build a "dumb" installer - a simple archive of files
  1215. .. % todo
  1216. :mod:`distutils.command.bdist_msi` --- Build a Microsoft Installer binary package
  1217. =================================================================================
  1218. .. module:: distutils.command.bdist_msi
  1219. :synopsis: Build a binary distribution as a Windows MSI file
  1220. .. class:: bdist_msi(Command)
  1221. Builds a `Windows Installer`_ (.msi) binary package.
  1222. .. _Windows Installer: http://msdn.microsoft.com/en-us/library/cc185688(VS.85).aspx
  1223. In most cases, the ``bdist_msi`` installer is a better choice than the
  1224. ``bdist_wininst`` installer, because it provides better support for
  1225. Win64 platforms, allows administrators to perform non-interactive
  1226. installations, and allows installation through group policies.
  1227. :mod:`distutils.command.bdist_rpm` --- Build a binary distribution as a Redhat RPM and SRPM
  1228. ===========================================================================================
  1229. .. module:: distutils.command.bdist_rpm
  1230. :synopsis: Build a binary distribution as a Redhat RPM and SRPM
  1231. .. % todo
  1232. :mod:`distutils.command.bdist_wininst` --- Build a Windows installer
  1233. ====================================================================
  1234. .. module:: distutils.command.bdist_wininst
  1235. :synopsis: Build a Windows installer
  1236. .. % todo
  1237. :mod:`distutils.command.sdist` --- Build a source distribution
  1238. ==============================================================
  1239. .. module:: distutils.command.sdist
  1240. :synopsis: Build a source distribution
  1241. .. % todo
  1242. :mod:`distutils.command.build` --- Build all files of a package
  1243. ===============================================================
  1244. .. module:: distutils.command.build
  1245. :synopsis: Build all files of a package
  1246. .. % todo
  1247. :mod:`distutils.command.build_clib` --- Build any C libraries in a package
  1248. ==========================================================================
  1249. .. module:: distutils.command.build_clib
  1250. :synopsis: Build any C libraries in a package
  1251. .. % todo
  1252. :mod:`distutils.command.build_ext` --- Build any extensions in a package
  1253. ========================================================================
  1254. .. module:: distutils.command.build_ext
  1255. :synopsis: Build any extensions in a package
  1256. .. % todo
  1257. :mod:`distutils.command.build_py` --- Build the .py/.pyc files of a package
  1258. ===========================================================================
  1259. .. module:: distutils.command.build_py
  1260. :synopsis: Build the .py/.pyc files of a package
  1261. .. % todo
  1262. :mod:`distutils.command.build_scripts` --- Build the scripts of a package
  1263. =========================================================================
  1264. .. module:: distutils.command.build_scripts
  1265. :synopsis: Build the scripts of a package
  1266. .. % todo
  1267. :mod:`distutils.command.clean` --- Clean a package build area
  1268. =============================================================
  1269. .. module:: distutils.command.clean
  1270. :synopsis: Clean a package build area
  1271. .. % todo
  1272. :mod:`distutils.command.config` --- Perform package configuration
  1273. =================================================================
  1274. .. module:: distutils.command.config
  1275. :synopsis: Perform package configuration
  1276. .. % todo
  1277. :mod:`distutils.command.install` --- Install a package
  1278. ======================================================
  1279. .. module:: distutils.command.install
  1280. :synopsis: Install a package
  1281. .. % todo
  1282. :mod:`distutils.command.install_data` --- Install data files from a package
  1283. ===========================================================================
  1284. .. module:: distutils.command.install_data
  1285. :synopsis: Install data files from a package
  1286. .. % todo
  1287. :mod:`distutils.command.install_headers` --- Install C/C++ header files from a package
  1288. ======================================================================================
  1289. .. module:: distutils.command.install_headers
  1290. :synopsis: Install C/C++ header files from a package
  1291. .. % todo
  1292. :mod:`distutils.command.install_lib` --- Install library files from a package
  1293. =============================================================================
  1294. .. module:: distutils.command.install_lib
  1295. :synopsis: Install library files from a package
  1296. .. % todo
  1297. :mod:`distutils.command.install_scripts` --- Install script files from a package
  1298. ================================================================================
  1299. .. module:: distutils.command.install_scripts
  1300. :synopsis: Install script files from a package
  1301. .. % todo
  1302. :mod:`distutils.command.register` --- Register a module with the Python Package Index
  1303. =====================================================================================
  1304. .. module:: distutils.command.register
  1305. :synopsis: Register a module with the Python Package Index
  1306. The ``register`` command registers the package with the Python Package Index.
  1307. This is described in more detail in :pep:`301`.
  1308. .. % todo
  1309. Creating a new Distutils command
  1310. ================================
  1311. This section outlines the steps to create a new Distutils command.
  1312. A new command lives in a module in the :mod:`distutils.command` package. There
  1313. is a sample template in that directory called :file:`command_template`. Copy
  1314. this file to a new module with the same name as the new command you're
  1315. implementing. This module should implement a class with the same name as the
  1316. module (and the command). So, for instance, to create the command
  1317. ``peel_banana`` (so that users can run ``setup.py peel_banana``), you'd copy
  1318. :file:`command_template` to :file:`distutils/command/peel_banana.py`, then edit
  1319. it so that it's implementing the class :class:`peel_banana`, a subclass of
  1320. :class:`distutils.cmd.Command`.
  1321. Subclasses of :class:`Command` must define the following methods.
  1322. .. method:: Command.initialize_options()(S)
  1323. et default values for all the options that this command supports. Note that
  1324. these defaults may be overridden by other commands, by the setup script, by
  1325. config files, or by the command-line. Thus, this is not the place to code
  1326. dependencies between options; generally, :meth:`initialize_options`
  1327. implementations are just a bunch of ``self.foo = None`` assignments.
  1328. .. method:: Command.finalize_options()
  1329. Set final values for all the options that this command supports. This is
  1330. always called as late as possible, ie. after any option assignments from the
  1331. command-line or from other commands have been done. Thus, this is the place
  1332. to to code option dependencies: if *foo* depends on *bar*, then it is safe to
  1333. set *foo* from *bar* as long as *foo* still has the same value it was
  1334. assigned in :meth:`initialize_options`.
  1335. .. method:: Command.run()
  1336. A command's raison d'etre: carry out the action it exists to perform, controlled
  1337. by the options initialized in :meth:`initialize_options`, customized by other
  1338. commands, the setup script, the command-line, and config files, and finalized in
  1339. :meth:`finalize_options`. All terminal output and filesystem interaction should
  1340. be done by :meth:`run`.
  1341. *sub_commands* formalizes the notion of a "family" of commands, eg. ``install``
  1342. as the parent with sub-commands ``install_lib``, ``install_headers``, etc. The
  1343. parent of a family of commands defines *sub_commands* as a class attribute; it's
  1344. a list of 2-tuples ``(command_name, predicate)``, with *command_name* a string
  1345. and *predicate* an unbound method, a string or None. *predicate* is a method of
  1346. the parent command that determines whether the corresponding command is
  1347. applicable in the current situation. (Eg. we ``install_headers`` is only
  1348. applicable if we have any C header files to install.) If *predicate* is None,
  1349. that command is always applicable.
  1350. *sub_commands* is usually defined at the \*end\* of a class, because predicates
  1351. can be unbound methods, so they must already have been defined. The canonical
  1352. example is the :command:`install` command.