Metadata-Version: 2.1
Name: compatibleversion
Version: 0.1.2
Summary: Determine compatibility given a version and specifier
Home-page: https://github.com/plus3it/compatibleversion
Author: YakDriver
Author-email: projects@plus3it.com
License: Apache Software License 2.0
Platform: Linux
Platform: Windows
Platform: Darwin
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: Microsoft :: Windows
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Topic :: Utilities
Description-Content-Type: text/markdown
Requires-Dist: packaging (<=16.8) ; python_version < "2.7"
Requires-Dist: packaging (==19.2) ; python_version > "2.6"

[![License](https://img.shields.io/github/license/YakDriver/compatibleversion.svg)](./LICENSE)
[![Travis CI Build Status](https://travis-ci.org/YakDriver/compatibleversion.svg)](https://travis-ci.org/YakDriver/compatibleversion)
[![Latest Version](https://img.shields.io/pypi/v/compatibleversion.svg?label=version)](https://pypi.python.org/pypi/compatibleversion)

# compatibleversion

*compatibleversion* takes two parameters, a version and a specifier (i.e., version constraints), and returns a Boolean value indicating compatibility.

**NOTE:** *compatibleversion* wraps [packaging](https://packaging.pypa.io/en/latest/) in order to simplify and test its use. Versions and specifiers provided to *compatibleversion* must conform to [PEP 440](https://www.python.org/dev/peps/pep-0440/) as required by *packaging*.

## install

```console
$ pip install compatibleversion
```

## usage

Use *compatibleversion* in Python code:

```python
from compatibleversion import check_version

check_version('1.3.0', '> 1.2, < 3.3')  # true
check_version('2.1', '~= 2.2')          # false
```

## version parameter

The version parameter must conform to [PEP 440](https://www.python.org/dev/peps/pep-0440/). These are examples of valid version parameters:

```
1.2.0
0.0.0
0.9
0.9.1
0.9.2
0.9.10
0.9.11
1.0
1.0.1
1.1
2.0
2.0.1
1.0a1
1.0a2
1.0b1
1.0rc1
1.0.dev1
1.0.dev2
1.0.dev3
1.0.dev4
1.0b2.post345.dev456
1.0b2.post345
1.0rc1.dev456
```

## specifier parameter

The version specifier parameter must conform to [PEP 440](https://www.python.org/dev/peps/pep-0440/). The specifier consists of one or more version clauses separated by commas. 

For example, these are valid version specifiers (the last two are approximately equivalent):

```
==1.0.1
< 1.2, > 1.3
~= 0.9, >= 1.0, != 1.3.4.*, < 2.0
~= 1.4.5.0
== 1.1.post1
~= 2.2
>= 2.2, == 2.*
```

Here are more helpful specifier examples from [PEP 440](https://www.python.org/dev/peps/pep-0440/) and an explanation of their meaning:

* `~=3.1`: version 3.1 or later, but not version 4.0 or later.
* `~=3.1.2`: version 3.1.2 or later, but not version 3.2.0 or later.
* `~=3.1a1`: version 3.1a1 or later, but not version 4.0 or later.
* `== 3.1`: specifically version 3.1 (or 3.1.0), excludes all pre-releases, post releases, developmental releases and any 3.1.x maintenance releases.
* `== 3.1.*`: any version that starts with 3.1. Equivalent to the ~=3.1.0 compatible release clause.
* `~=3.1.0, != 3.1.3`: version 3.1.0 or later, but not version 3.1.3 and not version 3.2.0 or later.

## Changelog

### 0.1.2

**Commit Delta**: [Change from 0.1.1 release](https://github.com/plus3it/watchmaker/compare/0.1.1...0.1.2)

**Released**: 2019.10.24

**Summary**:

*   Improve compatibility with Py2.6

### 0.1.1

**Commit Delta**: [Change from 0.1.0 release](https://github.com/plus3it/watchmaker/compare/0.1.0...0.1.1)

**Released**: 2019.10.24

**Summary**:

*   Minor CI changes
*   Add documentation

### 0.1.0

**Commit Delta**: [Change from 0.0.0 release](https://github.com/plus3it/watchmaker/compare/0.0.0...0.1.0)

**Released**: 2019.10.22

**Summary**:

*   Initial release


