Raise an error if preversion versions are too low

Right now the only automatic version number we have is 'last release',
but thats enough for preversioning to be invalid. When we get API and
ABI break support, this will do more useful things like telling us the
next version is not sufficiently higher.

implements: blueprint pbr-semver
sem-ver: feature
Change-Id: I2583c7409d51364ef9d84b39356d5608a95cb6f8
Look for and process sem-ver pseudo headers in git

At the moment careful changelog review is needed by humans to
determine the next version number. Semantic versioning means that all
we need to know to get a reasonable default next version (and a lower
bound on the next version) is a record of bugfix/deprecation/feature
work and api-breaking commits. In this patch we start scanning for
such headers from the git history to remove this burden from
developers/project release managers. Higher versions can of course
be used either via pre-versioning or by tagging the desired version.

implements: blueprint pbr-semver
sem-ver: feature
Change-Id: Id5e8cd723d5186d1bd8c01599eae8933e6f7ea6d
Handle more legacy version numbers

We were not handling 1.2.1a1 or 2.1.0.rc1.

Change-Id: I087ff6f0449d528ee86b8e16721d12fd9b231846
Closes-Bug: #1361251
use get_boolean_option for warnerrors

This way even warnerrors = 0 is handled properly.

Change-Id: I83d2eb105d07fd65ebc720c63038fc3c542b7f90
Merge "Raise an error if preversion versions are too low"
Merge "Look for and process sem-ver pseudo headers in git"
Accept capitalized Sem-Ver headers

In Git, HTTP, and SMTP, header names generally have the first letter of
each word (including each part of a hyphenated word) capitalized.  In
all of the same cases, the actual headers are generally not considered
case-sensitive.  Accomodate this convention and the robustness principle
by performing lower-case comparisons of header names, and using
upper-case names in all of the documentation.

Change-Id: Iffa68107c8ff2aeaac92434da85155213e45a3cd
Work toward Python 3.4 support and testing

Change-Id: Ie49b56c0fd67f36d251aa4690d915c05225d49d1
Merge "use get_boolean_option for warnerrors"
Merge "Accept capitalized Sem-Ver headers"
Allow for inclusion of authors and changelog when building docs

When git is available and changelog and author building has not
been turned off try to build these two files so that they can be
included in any subsequent documentation.

Change-Id: I2fc7ade645e3ff1a67e30bd4d35676b5e10916af
Retry the integration setup on connection error

Sometimes there are network errors communicating with pypi
during a long running (1h+) integration gate job. This
causes the job to fail, and wastes a lot of time re-running
the job to get it to pass. This change makes it less likely
to fail, as if there is a timeout or socket error, the
integration setup will retry.

Change-Id: Ic4c888626699eb710e85e3bdc48dd6ee74bdf024
Stop using intersphinx

Remove intersphinx from the docs build as it triggers network calls that
occasionally fail, and we don't really use intersphinx (links other
sphinx documents out on the internet)

This also removes the requirement for internet access during docs build.

This can cause docs jobs to fail if the project errors out on
warnings.

Change-Id: I71e941e2a639641a662a163c682eb86d51de42fb
Related-Bug: #1368910
Refactor oneline changelog walking.

We want to suck the changelog into the description as well, but we
don't want all of it there. Making it a generator of formatted
objects lets us apply some logic without conflating things or tying
it up too much. This patch does prep work for the long term goal.

Change-Id: Idd00c219891500210c83faeb0f2d4370add3b069
Only consider tags that look like versions.

pbr has been allowing any tag (e.g. 'fred') to be a version - but fred
is clearly not a version! Since git describe cannot validate versions
for us today, we need to perform the describe calculations ourselves.

In order for this to work on Python3, a missing method __hash__ needed
to be added to SemanticVersion.

Change-Id: I09fa54231e77ae7671aa6f84eb91fd655e49ab25
Closes-Bug: #1356784
Merge "Work toward Python 3.4 support and testing"
Merge "Refactor oneline changelog walking."
Merge "Stop using intersphinx"
Merge "Only consider tags that look like versions."
Support reading versions from wheels

This change adds the ability for pbr to read the package version from
the METADATA file as well as the PKG-INFO file. The PKG-INFO file
is present for sdist packages but for wheel packages (PEP 427),
there is a METADATA file instead of a PKG-INFO file.

Closes-Bug: #1369179
Change-Id: I2fe52c846fd88d37a4ab78de87eec9defce1ba0a