diff options
author | Mark McLoughlin <markmc@redhat.com> | 2013-08-08 23:17:41 +0100 |
---|---|---|
committer | Mark McLoughlin <markmc@redhat.com> | 2013-10-21 14:06:32 +0100 |
commit | 1e0afa3168fa1c440dadd934a202a01ce75294b5 (patch) | |
tree | 23bd406b6716a75ceea965664157ef0157a4555c | |
parent | a619651e9c393f2085d3383b0ca410690edd5d60 (diff) | |
download | oslo-version-1e0afa3168fa1c440dadd934a202a01ce75294b5.tar.gz |
Use properties for various version strings
No need to expose the weirdness of attributes which need to be
initialized by calling foo_string() methods.
Change-Id: I3248a62be1f8d9a81bb2e31258091c3ed692ab1a
-rw-r--r-- | oslo/version/version.py | 63 |
1 files changed, 34 insertions, 29 deletions
diff --git a/oslo/version/version.py b/oslo/version/version.py index 70077a6..5ed8be1 100644 --- a/oslo/version/version.py +++ b/oslo/version/version.py @@ -131,35 +131,35 @@ class VersionInfo(object): python-glanceclient """ self.package = package - self.release = None - self.version = None - self.vendor = None - self.product = None - self.suffix = None + self._release = None + self._version = None + self._vendor = None + self._product = None + self._suffix = None self._cached_version = None self._provider = None self._loaded = False def __str__(self): """Make the VersionInfo object behave like a string.""" - return self.version_string() + return self.version def __repr__(self): """Include the name.""" - return "VersionInfo(%s:%s)" % (self.package, self.version_string()) + return "VersionInfo(%s:%s)" % (self.package, self.version) def _load_from_setup_cfg(self): cfg = configparser.RawConfigParser() cfg.read('setup.cfg') - self.vendor = cfg.get('metadata', 'author', None) - self.product = cfg.get('metadata', 'description', None) + self._vendor = cfg.get('metadata', 'author', None) + self._product = cfg.get('metadata', 'description', None) def _load_from_pkg_info(self, provider): import email pkg_info = email.message_from_string(provider.get_metadata('PKG-INFO')) - self.vendor = pkg_info['Author'] - self.product = pkg_info['Summary'] + self._vendor = pkg_info['Author'] + self._product = pkg_info['Summary'] def _load_from_cfg_file(self, cfgfile): cfg = configparser.RawConfigParser() @@ -169,9 +169,9 @@ class VersionInfo(object): if project_name.startswith('python-'): project_name = project_name[7:] - self.vendor = cfg.get(project_name, "vendor", self.vendor) - self.product = cfg.get(project_name, "product", self.product) - self.suffix = cfg.get(project_name, "package", self.suffix) + self._vendor = cfg.get(project_name, "vendor", self._vendor) + self._product = cfg.get(project_name, "product", self._product) + self._suffix = cfg.get(project_name, "package", self._suffix) def _load_vendor_strings(self): """Load default and override vendor strings. @@ -224,36 +224,41 @@ class VersionInfo(object): print("information for %s" % self.package) raise - def release_string(self): + @property + def release(self): """Return the full version of the package including suffixes indicating VCS status. """ - if self.release is None: - self.release = self._get_version_from_pkg_resources() + if self._release is None: + self._release = self._get_version_from_pkg_resources() - return self.release + return self._release - def version_string(self): + @property + def version(self): """Return the short version minus any alpha/beta tags.""" - if self.version is None: + if self._version is None: parts = [] - for part in self.release_string().split('.'): + for part in self.release.split('.'): if part[0].isdigit(): parts.append(part) else: break - self.version = ".".join(parts) + self._version = ".".join(parts) - return self.version + return self._version - def vendor_string(self): + @property + def vendor(self): self._load_vendor_strings() - return self.vendor + return self._vendor - def product_string(self): + @property + def product(self): self._load_vendor_strings() - return self.product + return self._product - def suffix_string(self): + @property + def suffix(self): self._load_vendor_strings() - return self.suffix + return self._suffix |