# archive the A4 latex
-rm -r build/latex
make latex PAPER=a4
+ -sed -i 's/makeindex/makeindex -q/' build/latex/Makefile
(cd build/latex; make clean && make all-pdf && make FMT=pdf zip bz2)
cp build/latex/docs-pdf.zip dist/python-$(DISTVERSION)-docs-pdf-a4.zip
cp build/latex/docs-pdf.tar.bz2 dist/python-$(DISTVERSION)-docs-pdf-a4.tar.bz2
# archive the letter latex
rm -r build/latex
make latex PAPER=letter
+ -sed -i 's/makeindex/makeindex -q/' build/latex/Makefile
(cd build/latex; make clean && make all-pdf && make FMT=pdf zip bz2)
cp build/latex/docs-pdf.zip dist/python-$(DISTVERSION)-docs-pdf-letter.zip
cp build/latex/docs-pdf.tar.bz2 dist/python-$(DISTVERSION)-docs-pdf-letter.tar.bz2
.. function:: setup(arguments)
The basic do-everything function that does most everything you could ever ask
- for from a Distutils method. See XXXXX
+ for from a Distutils method.
The setup function takes a large number of arguments. These are laid out in the
following table.
should be copied into packages in addition to :file:`.py` files as a
convenience.
-Most distutils command implementations are subclasses of the :class:`Command`
-class from :mod:`distutils.cmd`. New commands may directly inherit from
+Most distutils command implementations are subclasses of the
+:class:`distutils.cmd.Command` class. New commands may directly inherit from
:class:`Command`, while replacements often derive from :class:`Command`
indirectly, directly subclassing the command they are replacing. Commands are
required to derive from :class:`Command`.
must be a duck.") By emphasizing interfaces rather than specific types,
well-designed code improves its flexibility by allowing polymorphic
substitution. Duck-typing avoids tests using :func:`type` or
- :func:`isinstance`. (Note, however, that duck-typing can be complemented
- with abstract base classes.) Instead, it typically employs :func:`hasattr`
- tests or :term:`EAFP` programming.
+ :func:`isinstance`. (Note, however, that duck-typing can be complemented
+ with :term:`abstract base class`\ es.) Instead, it typically employs
+ :func:`hasattr` tests or :term:`EAFP` programming.
EAFP
Easier to ask for forgiveness than permission. This common Python coding
| ``abs(t)`` | equivalent to +\ *t* when ``t.days >= 0``, and|
| | to -*t* when ``t.days < 0``. (2) |
+--------------------------------+-----------------------------------------------+
+| ``str(t)`` | Returns a string in the form |
+| | ``[D day[s], ][H]H:MM:SS[.UUUUUU]``, where D |
+| | is negative for negative ``t``. (5) |
++--------------------------------+-----------------------------------------------+
+| ``repr(t)`` | Returns a string in the form |
+| | ``datetime.timedelta(D[, S[, U]])``, where D |
+| | is negative for negative ``t``. (5) |
++--------------------------------+-----------------------------------------------+
Notes:
(4)
-*timedelta.max* is not representable as a :class:`timedelta` object.
+(5)
+ String representations of :class:`timedelta` objects are normalized
+ similarly to their internal representation. This leads to somewhat
+ unusual results for negative timedeltas. For example:
+
+ >>> timedelta(hours=-5)
+ datetime.timedelta(-1, 68400)
+ >>> print(_)
+ -1 day, 19:00:00
+
In addition to the operations listed above :class:`timedelta` objects support
certain additions and subtractions with :class:`date` and :class:`datetime`
objects (see below).