add sorting to object models and fix list-deliverables
Some of the previous changes in the series broke assumptions made by list-deliverables, so fix things. Change-Id: I703154199de38667801bcfe789cb7a46adf4e53e Signed-off-by: Doug Hellmann <doug@doughellmann.com>
This commit is contained in:
@@ -196,11 +196,11 @@ def main():
|
|||||||
if args.no_stable_branch:
|
if args.no_stable_branch:
|
||||||
if deliv.get_branch_location('stable/' + series) is not None:
|
if deliv.get_branch_location('stable/' + series) is not None:
|
||||||
continue
|
continue
|
||||||
if args.unreleased and (deliv.versions or not deliv.is_releasable):
|
if args.unreleased and (deliv.is_released or not deliv.is_releasable):
|
||||||
continue
|
continue
|
||||||
if version_ending and deliv.latest_release and deliv.latest_release.endswith(version_ending):
|
if version_ending and deliv.is_released and deliv.latest_release.endswith(version_ending):
|
||||||
continue
|
continue
|
||||||
if args.missing_rc and deliv.latest_release and 'rc' in deliv.latest_release:
|
if args.missing_rc and deliv.is_released and 'rc' in deliv.latest_release:
|
||||||
continue
|
continue
|
||||||
if args.tag:
|
if args.tag:
|
||||||
tags = deliv.tags
|
tags = deliv.tags
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
import collections
|
import collections
|
||||||
import copy
|
import copy
|
||||||
|
import functools
|
||||||
import glob
|
import glob
|
||||||
import os
|
import os
|
||||||
import os.path
|
import os.path
|
||||||
@@ -198,6 +199,7 @@ class Deliverables(object):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@functools.total_ordering
|
||||||
class Repo(object):
|
class Repo(object):
|
||||||
|
|
||||||
def __init__(self, name, data, deliv):
|
def __init__(self, name, data, deliv):
|
||||||
@@ -221,7 +223,17 @@ class Repo(object):
|
|||||||
def pypi_name(self):
|
def pypi_name(self):
|
||||||
return self._data.get('pypi-name')
|
return self._data.get('pypi-name')
|
||||||
|
|
||||||
|
def __eq__(self, other):
|
||||||
|
return self.name == other.name
|
||||||
|
|
||||||
|
def __gt__(self, other):
|
||||||
|
return self.name > other.name
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.name
|
||||||
|
|
||||||
|
|
||||||
|
@functools.total_ordering
|
||||||
class ReleaseProject(object):
|
class ReleaseProject(object):
|
||||||
|
|
||||||
def __init__(self, repo, hash, data, release=None):
|
def __init__(self, repo, hash, data, release=None):
|
||||||
@@ -235,12 +247,19 @@ class ReleaseProject(object):
|
|||||||
def tarball_base(self):
|
def tarball_base(self):
|
||||||
return self._data.get('tarball-base')
|
return self._data.get('tarball-base')
|
||||||
|
|
||||||
|
def __eq__(self, other):
|
||||||
|
return self.repo == other.repo
|
||||||
|
|
||||||
|
def __gt__(self, other):
|
||||||
|
return self.repo > other.repo
|
||||||
|
|
||||||
|
|
||||||
class Release(object):
|
class Release(object):
|
||||||
|
|
||||||
def __init__(self, version, projects, deliv):
|
def __init__(self, version, projects, data, deliv):
|
||||||
self.version = version
|
self.version = version
|
||||||
self.deliv = weakref.proxy(deliv)
|
self.deliv = weakref.proxy(deliv)
|
||||||
|
self._data = data
|
||||||
self._projects = {
|
self._projects = {
|
||||||
p['repo']: ReleaseProject(p['repo'], p['hash'], p, self)
|
p['repo']: ReleaseProject(p['repo'], p['hash'], p, self)
|
||||||
for p in projects
|
for p in projects
|
||||||
@@ -248,9 +267,10 @@ class Release(object):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def projects(self):
|
def projects(self):
|
||||||
return sorted(self._projects.values(), key=lambda p: p.repo.name)
|
return sorted(self._projects.values())
|
||||||
|
|
||||||
|
|
||||||
|
@functools.total_ordering
|
||||||
class Deliverable(object):
|
class Deliverable(object):
|
||||||
|
|
||||||
_governance_data = None
|
_governance_data = None
|
||||||
@@ -291,7 +311,7 @@ class Deliverable(object):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def repos(self):
|
def repos(self):
|
||||||
return sorted(self._repos.values(), key=lambda r: r.name)
|
return sorted(self._repos.values())
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def known_repo_names(self):
|
def known_repo_names(self):
|
||||||
@@ -314,6 +334,10 @@ class Deliverable(object):
|
|||||||
def is_releasable(self):
|
def is_releasable(self):
|
||||||
return self.model != 'untagged'
|
return self.model != 'untagged'
|
||||||
|
|
||||||
|
@property
|
||||||
|
def is_released(self):
|
||||||
|
return len(self._data.get('releases', [])) > 0
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def is_cycle_based(self):
|
def is_cycle_based(self):
|
||||||
return self.model.startswith('cycle-')
|
return self.model.startswith('cycle-')
|
||||||
@@ -328,8 +352,9 @@ class Deliverable(object):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def latest_release(self):
|
def latest_release(self):
|
||||||
rel = (self.releases or [{}])[-1]
|
if not self.is_released:
|
||||||
return rel.get('version')
|
return ''
|
||||||
|
return self.releases[-1].version
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def release_notes(self):
|
def release_notes(self):
|
||||||
@@ -353,7 +378,12 @@ class Deliverable(object):
|
|||||||
@property
|
@property
|
||||||
def releases(self):
|
def releases(self):
|
||||||
return [
|
return [
|
||||||
Release(deliv=self, **r)
|
Release(
|
||||||
|
version=r['version'],
|
||||||
|
projects=r['projects'],
|
||||||
|
data=r,
|
||||||
|
deliv=self,
|
||||||
|
)
|
||||||
for r in self._data.get('releases', [])
|
for r in self._data.get('releases', [])
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -378,3 +408,12 @@ class Deliverable(object):
|
|||||||
@property
|
@property
|
||||||
def data(self):
|
def data(self):
|
||||||
return copy.deepcopy(self._data)
|
return copy.deepcopy(self._data)
|
||||||
|
|
||||||
|
def __eq__(self, other):
|
||||||
|
return self.name == other.name
|
||||||
|
|
||||||
|
def __gt__(self, other):
|
||||||
|
return self.name > other.name
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.name
|
||||||
|
|||||||
Reference in New Issue
Block a user