python-package-boilerplate icon indicating copy to clipboard operation
python-package-boilerplate copied to clipboard

version.py convention

Open jhagege opened this issue 6 years ago • 3 comments

Thanks for this great repo. I'm trying to understand what is the advantage of fetching the version using version.py vs. setting it directly in setup.py

version=Version('1.0.0').number, vs
version=1.0.0,

jhagege avatar Jul 12 '18 13:07 jhagege

I suppose this approach could be re-vamped in some way. The Version class is mostly set up so that it can be locked down in the code. It can be useful to have a class for the version of your package so that you can do any checks in the code for branching logic, deprecation warnings, etc. I am open to seeing if there are better ways at doing this if you have any suggestions.

mtchavez avatar Jul 17 '18 18:07 mtchavez

Your explanation makes a lot of sense.

Although I don't manage to fetch the version number once the package is installed. i.e:

# setup.py
setuptools.setup(
    name="mypackage",
    version=Version("1.0.0-rc.2").number,
)

pip install -r requirements.txt

from mypackage.version import Version
print(Version.number)

but I get

AttributeError: type object 'Version' has no attribute 'number'

jhagege avatar Jul 18 '18 11:07 jhagege

Number is an instance method so you would have to do Version('1.0.0-rc.2').number to get a string of the version. In other languages I have done this where it allows you to get the parts of the version i.e. major, minor, patch. Thinking this could maybe be cleaned up a bit.

mtchavez avatar Jul 18 '18 13:07 mtchavez