csemver

Object orientied optimized variant of the semver package


Keywords
python-module, python27, python3, semantic-versioning, semver
License
GPL-3.0
Install
pip install csemver==1.0.0rc0

Documentation

Build Status Version Github: v0.2.0 Version PyPi: v0.2.0 Issue Count License: GPL-3

csemver

csemver is the object orientied optimized Version of semver. It is much more consistent because you only need one object for all operations.

Installation

pip install csemver

Features

  • Arithmetic comprehensions with <,<=,==,!=,>=,>
  • Arithmetic additions with +,+=
  • Access to specific parts (major, minor, patch, prerelease, build) through index operator

Version manipulation

Increase Versions

To increase the different versions csemver provides three methods

  • incMajor(incBy=1)
  • incMinor(incBy=1)
  • incPatch(incBy=1)

If needed, you can chain these calls: a.incMajor(x).incMinor(y).incPatch(y)

from csemver import csemver as Version
a = Version();
print(a)
a.incMajor();
print(a)
a.incMinor();
print(a)
a.incPatch();
print(a)
foo@bar:~$ python test.py
0.1.0
1.0.0
1.1.0
1.1.1

Adding versions

from csemver import csemver as Version
a = Version("2.1.5");
b = Version("1.1.1");
print(a+b);
b += Version("0.1.1");
print(b);
3.1.1
1.2.1

Note: The addition respects semver rules. Therefore the resulting versions are 3.1.1 and 1.2.1 rather than 3.2.6 and 1.2.2

Overwrite Version

To overwrite the current Version just set a new Semver-String for csemver.number

from csemver import csemver as Version
a = Version();
print(a)
a.number ="1.0.0-pre+build.1";
# Python 2.7: a.setNumber("1.0.0-pre+build.1")
print(a)
foo@bar:~$ python test.py
0.1.0
1.0.0-pre+build.1
2.0.0-pre+build.1
2.0.0-dev+build.1

Manipulate specific parts

from csemver import csemver as Version
a = Version(); # defaults to 0.1.0
a['major'] = 2
print(a)
a['minor'] = 2
print(a)
a['patch'] = 1
print(a)
a['prerelease'] = "dev"
print(a)
a['build'] = "build0"
print(a)
a['build'] = None
print(a)
2.1.0
2.2.0
2.2.1
2.2.1-dev
2.2.1-dev+build0
2.2.1-dev

Reset Version

Delete the number property to reset the Version to 0.1.0

from csemver import csemver as Version
a = Version("1.0.0");
print(a)
del a.number
# Python 2.7: a.delNumber()
print(a)
foo@bar:~$ python test.py
1.0.0
0.1.0

Comparing versions

Compare different versions:

You can compare csemver instances with >, >=, ==, !=, <=, <

from csemver import csemver as Version

a = Version("1.1.1")
b = Version("1.1.1")
repr(a)
repr(b)
print(a<b)

b.incPatch()
print(b)
print(a<b)
foo@bar:~$ python test.py
Version<1.1.1> instance at 0x00000159D2061BA8
Version<1.1.1> instance at 0x00000159D2061DD8
False
1.1.2
True