| Server IP : 82.208.35.60 / Your IP : 216.73.216.168 Web Server : Apache/2.4.55 (FreeBSD) OpenSSL/1.1.1q-freebsd PHP/7.3.31 System : FreeBSD server7.d2m.cz 12.4-RELEASE-p9 FreeBSD 12.4-RELEASE-p9 GENERIC amd64 User : studiokobylisy_cz ( 1008) PHP Version : 7.3.31 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /usr/local/share/doc/py36-pip/development/ |
Upload File : |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Release process — pip 19.1.1 documentation</title>
<link rel="stylesheet" href="../_static/pypa.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../',
VERSION: '19.1.1',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true,
SOURCELINK_SUFFIX: '.txt'
};
</script>
<script type="text/javascript" src="../_static/jquery.js"></script>
<script type="text/javascript" src="../_static/underscore.js"></script>
<script type="text/javascript" src="../_static/doctools.js"></script>
<script type="text/javascript" src="../_static/sidebar.js"></script>
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="Vendoring Policy" href="vendoring-policy.html" />
<link rel="prev" title="Contributing" href="contributing.html" />
<link rel="shortcut icon" type="image/png" href="../_static/py.png" />
<script type="text/javascript" src="../_static/copybutton.js"></script>
</head>
<body>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="vendoring-policy.html" title="Vendoring Policy"
accesskey="N">next</a></li>
<li class="right" >
<a href="contributing.html" title="Contributing"
accesskey="P">previous</a> |</li>
<li><img src="../_static/py.png" alt=""
style="vertical-align: middle; margin-top: -1px"/></li>
<li><a href="https://pypa.io">PyPA</a> »</li>
<a href="../index.html">pip 19.1.1 documentation</a> »
<li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Development</a> »</li>
<li class="right">
<div class="inline-search" style="display: none" role="search">
<form class="inline-search" action="../search.html" method="get">
<input placeholder="Quick search" type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
<script type="text/javascript">$('.inline-search').show(0);</script>
|
</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<div class="section" id="release-process">
<h1>Release process<a class="headerlink" href="#release-process" title="Permalink to this headline">¶</a></h1>
<div class="section" id="release-cadence">
<h2>Release Cadence<a class="headerlink" href="#release-cadence" title="Permalink to this headline">¶</a></h2>
<p>The pip project has a release cadence of releasing whatever is on <code class="docutils literal"><span class="pre">master</span></code>
every 3 months. This gives users a predictable pattern for when releases
are going to happen and prevents locking up improvements for fixes for long
periods of time, while still preventing massively fracturing the user base
with version numbers.</p>
<p>Our release months are January, April, July, October. The release date within
that month will be up to the release manager for that release. If there are
no changes, then that release month is skipped and the next release will be
3 month later.</p>
<p>The release manager may, at their discretion, choose whether or not there
will be a pre-release period for a release, and if there is may extend that
period into the next month if needed.</p>
<p>Because releases are made direct from the <code class="docutils literal"><span class="pre">master</span></code> branch, it is essential
that <code class="docutils literal"><span class="pre">master</span></code> is always in a releasable state. It is acceptable to merge
PRs that partially implement a new feature, but only if the partially
implemented version is usable in that state (for example, with reduced
functionality or disabled by default). In the case where a merged PR is found
to need extra work before being released, the release manager always has the
option to back out the partial change prior to a release. The PR can then be
reworked and resubmitted for the next release.</p>
</div>
<div class="section" id="deprecation-policy">
<h2>Deprecation Policy<a class="headerlink" href="#deprecation-policy" title="Permalink to this headline">¶</a></h2>
<p>Any change to pip that removes or significantly alters user-visible behavior
that is described in the pip documentation will be deprecated for a minimum of
6 months before the change occurs. Deprecation will take the form of a warning
being issued by pip when the feature is used. Longer deprecation periods, or
deprecation warnings for behavior changes that would not normally be covered by
this policy, are also possible depending on circumstances, but this is at the
discretion of the pip developers.</p>
<p>Note that the documentation is the sole reference for what counts as agreed
behavior. If something isn’t explicitly mentioned in the documentation, it can
be changed without warning, or any deprecation period, in a pip release.
However, we are aware that the documentation isn’t always complete - PRs that
document existing behavior with the intention of covering that behavior with
the above deprecation process are always acceptable, and will be considered on
their merits.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">pip has a helper function for making deprecation easier for pip maintainers.
The supporting documentation can be found in the source code of
<code class="docutils literal"><span class="pre">pip._internal.utils.deprecation.deprecated</span></code>. The function is not a part of
pip’s public API.</p>
</div>
</div>
<div class="section" id="id1">
<h2>Release Process<a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h2>
<div class="section" id="creating-a-new-release">
<h3>Creating a new release<a class="headerlink" href="#creating-a-new-release" title="Permalink to this headline">¶</a></h3>
<ol class="arabic simple">
<li>Checkout the current pip <code class="docutils literal"><span class="pre">master</span></code> branch.</li>
<li>Ensure you have the latest <code class="docutils literal"><span class="pre">wheel</span></code>, <code class="docutils literal"><span class="pre">setuptools</span></code>, <code class="docutils literal"><span class="pre">twine</span></code>, <code class="docutils literal"><span class="pre">invoke</span></code>
and <code class="docutils literal"><span class="pre">towncrier</span></code> packages installed.</li>
<li>Generate a new <code class="docutils literal"><span class="pre">AUTHORS.txt</span></code> (<code class="docutils literal"><span class="pre">invoke</span> <span class="pre">generate.authors</span></code>) and commit the
results.</li>
<li>Bump the version in <code class="docutils literal"><span class="pre">pip/__init__.py</span></code> to the release version and commit
the results. Usually this involves dropping just the <code class="docutils literal"><span class="pre">.devN</span></code> suffix on the
version.</li>
<li>Generate a new <code class="docutils literal"><span class="pre">NEWS.rst</span></code> (<code class="docutils literal"><span class="pre">invoke</span> <span class="pre">generate.news</span></code>) and commit the
results.</li>
<li>Create a tag at the current commit, of the form <code class="docutils literal"><span class="pre">YY.N</span></code>
(<code class="docutils literal"><span class="pre">git</span> <span class="pre">tag</span> <span class="pre">YY.N</span></code>).</li>
<li>Checkout the tag (<code class="docutils literal"><span class="pre">git</span> <span class="pre">checkout</span> <span class="pre">YY.N</span></code>).</li>
<li>Create the distribution files (<code class="docutils literal"><span class="pre">python</span> <span class="pre">setup.py</span> <span class="pre">sdist</span> <span class="pre">bdist_wheel</span></code>).</li>
<li>Upload the distribution files to PyPI using twine
(<code class="docutils literal"><span class="pre">twine</span> <span class="pre">upload</span> <span class="pre">dist/*</span></code>).</li>
<li>Push all of the changes including the tag.</li>
<li>Regenerate the <code class="docutils literal"><span class="pre">get-pip.py</span></code> script in the <a class="reference external" href="https://github.com/pypa/get-pip">get-pip repository</a> (as
documented there) and commit the results.</li>
<li>Submit a Pull Request to <a class="reference external" href="https://github.com/pypa/cpython">CPython</a> adding the new version of pip (and upgrading
setuptools) to <code class="docutils literal"><span class="pre">Lib/ensurepip/_bundled</span></code>, removing the existing version, and
adjusting the versions listed in <code class="docutils literal"><span class="pre">Lib/ensurepip/__init__.py</span></code>.</li>
</ol>
</div>
<div class="section" id="creating-a-bug-fix-release">
<h3>Creating a bug-fix release<a class="headerlink" href="#creating-a-bug-fix-release" title="Permalink to this headline">¶</a></h3>
<p>Sometimes we need to release a bugfix release of the form <code class="docutils literal"><span class="pre">YY.N.Z+1</span></code>. In
order to create one of these the changes should already be merged into the
<code class="docutils literal"><span class="pre">master</span></code> branch.</p>
<ol class="arabic simple">
<li>Create a new <code class="docutils literal"><span class="pre">release/YY.N.Z+1</span></code> branch off of the <code class="docutils literal"><span class="pre">YY.N</span></code> tag using the
command <code class="docutils literal"><span class="pre">git</span> <span class="pre">checkout</span> <span class="pre">-b</span> <span class="pre">release/YY.N.Z+1</span> <span class="pre">YY.N</span></code>.</li>
<li>Cherry pick the fixed commits off of the <code class="docutils literal"><span class="pre">master</span></code> branch, fixing any
conflicts and moving any changelog entries from the development version’s
changelog section to the <code class="docutils literal"><span class="pre">YY.N.Z+1</span></code> section.</li>
<li>Push the <code class="docutils literal"><span class="pre">release/YY.N.Z+1</span></code> branch to github and submit a PR for it against
the <code class="docutils literal"><span class="pre">master</span></code> branch and wait for the tests to run.</li>
<li>Once tests run, merge the <code class="docutils literal"><span class="pre">release/YY.N.Z+1</span></code> branch into master, and follow
the above release process starting with step 4.</li>
</ol>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<h3><a href="../index.html">Table Of Contents</a></h3>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../quickstart.html">Quickstart</a></li>
<li class="toctree-l1"><a class="reference internal" href="../installing.html">Installation</a></li>
<li class="toctree-l1"><a class="reference internal" href="../user_guide.html">User Guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../reference/index.html">Reference Guide</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">Development</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="getting-started.html">Getting Started</a></li>
<li class="toctree-l2"><a class="reference internal" href="contributing.html">Contributing</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">Release process</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#release-cadence">Release Cadence</a></li>
<li class="toctree-l3"><a class="reference internal" href="#deprecation-policy">Deprecation Policy</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id1">Release Process</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="vendoring-policy.html">Vendoring Policy</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../news.html">Release Notes</a></li>
</ul>
<h4>Previous topic</h4>
<p class="topless"><a href="contributing.html"
title="previous chapter">Contributing</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="vendoring-policy.html"
title="next chapter">Vendoring Policy</a></p>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="vendoring-policy.html" title="Vendoring Policy"
>next</a></li>
<li class="right" >
<a href="contributing.html" title="Contributing"
>previous</a> |</li>
<li><img src="../_static/py.png" alt=""
style="vertical-align: middle; margin-top: -1px"/></li>
<li><a href="https://pypa.io">PyPA</a> »</li>
<a href="../index.html">pip 19.1.1 documentation</a> »
<li class="nav-item nav-item-1"><a href="index.html" >Development</a> »</li>
<li class="right">
<div class="inline-search" style="display: none" role="search">
<form class="inline-search" action="../search.html" method="get">
<input placeholder="Quick search" type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
<script type="text/javascript">$('.inline-search').show(0);</script>
|
</li>
</ul>
</div>
<div class="footer">
© <a href="../copyright.html">Copyright</a> 2008-2017, PyPA.
<br />
The Python Software Foundation is a non-profit corporation.
<a href="https://www.python.org/psf/donations/">Please donate.</a>
<br />
<br />
Last updated on Nov 14, 2019.
<a href="https://github.com/pypa/pip/issues">Found a bug</a>?
<br />
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.6.5.
</div>
</body>
</html>