{% extends "layout.html" %}
{% set title = _('Download') %}
{% if daily is defined %}
  {% set dl_base = pathto('archives', resource=True) %}
  {% set dl_version = version %}
{% else %}
  {#
    The link below returns HTTP 404 until the first related alpha release.
    This is expected; use daily documentation builds for CPython development.
  #}
  {% set dl_base = 'https://www.python.org/ftp/python/doc/' + release %}
  {% set dl_version = release %}
{% endif %}

{% block body %}
<h1>{% trans %}Download Python {{ dl_version }} Documentation{% endtrans %}</h1>

{% if last_updated %}<p><b>{% trans %}Last updated on: {{ last_updated }}.{% endtrans %}</b></p>{% endif %}

<p>{% trans %}To download an archive containing all the documents for this version of
Python in one of various formats, follow one of links in this table.{% endtrans %}</p>

<table class="docutils">
  <tr>
    <th>{% trans %}Format{% endtrans %}</th>
    <th>{% trans %}Packed as .zip{% endtrans %}</th>
    <th>{% trans %}Packed as .tar.bz2{% endtrans %}</th>
  </tr>
  <tr>
    <td>{% trans %}PDF{% endtrans %}</td>
    <td>{% trans download_size="17" %}<a href="{{ dl_base }}/python-{{ dl_version }}-docs-pdf-a4.zip">Download</a> (ca. {{ download_size }} MiB){% endtrans %}</td>
    <td>{% trans download_size="17" %}<a href="{{ dl_base }}/python-{{ dl_version }}-docs-pdf-a4.tar.bz2">Download</a> (ca. {{ download_size }} MiB){% endtrans %}</td>
  </tr>
  <tr>
    <td>{% trans %}HTML{% endtrans %}</td>
    <td>{% trans download_size="13" %}<a href="{{ dl_base }}/python-{{ dl_version }}-docs-html.zip">Download</a> (ca. {{ download_size }} MiB){% endtrans %}</td>
    <td>{% trans download_size="8" %}<a href="{{ dl_base }}/python-{{ dl_version }}-docs-html.tar.bz2">Download</a> (ca. {{ download_size }} MiB){% endtrans %}</td>
  </tr>
  <tr>
    <td>{% trans %}Plain text{% endtrans %}</td>
    <td>{% trans download_size="4" %}<a href="{{ dl_base }}/python-{{ dl_version }}-docs-text.zip">Download</a> (ca. {{ download_size }} MiB){% endtrans %}</td>
    <td>{% trans download_size="3" %}<a href="{{ dl_base }}/python-{{ dl_version }}-docs-text.tar.bz2">Download</a> (ca. {{ download_size }} MiB){% endtrans %}</td>
  </tr>
  <tr>
    <td>{% trans %}Texinfo{% endtrans %}</td>
    <td>{% trans download_size="9" %}<a href="{{ dl_base }}/python-{{ dl_version }}-docs-texinfo.zip">Download</a> (ca. {{ download_size }} MiB){% endtrans %}</td>
    <td>{% trans download_size="7" %}<a href="{{ dl_base }}/python-{{ dl_version }}-docs-texinfo.tar.bz2">Download</a> (ca. {{ download_size }} MiB){% endtrans %}</td>
 </tr>
 <tr>
    <td>{% trans %}EPUB{% endtrans %}</td>
    <td>{% trans download_size="6" %}<a href="{{ dl_base }}/python-{{ dl_version }}-docs.epub">Download</a> (ca. {{ download_size }} MiB){% endtrans %}</td>
    <td></td>
  </tr>
</table>

<p>{% trans %}These archives contain all the content in the documentation.{% endtrans %}</p>


<h2>{% trans %}Unpacking{% endtrans %}</h2>

<p>{% trans %}Unix users should download the .tar.bz2 archives; these are bzipped tar
archives and can be handled in the usual way using tar and the bzip2
program. The <a href="https://infozip.sourceforge.net">Info-ZIP</a> unzip program can be
used to handle the ZIP archives if desired. The .tar.bz2 archives provide the
best compression and fastest download times.{% endtrans %}</p>

<p>{% trans %}Windows users can use the ZIP archives since those are customary on that
platform. These are created on Unix using the Info-ZIP zip program.{% endtrans %}</p>


<h2>{% trans %}Problems{% endtrans %}</h2>

<p>{% trans %}If you have comments or suggestions for the Python documentation, please send
email to <a href="mailto:docs@python.org">docs@python.org</a>.{% endtrans %}</p>
{% endblock %}
