aboutsummaryrefslogtreecommitdiffstats
path: root/dlpcvp.py
diff options
context:
space:
mode:
authorMatěj Cepl <mcepl@cepl.eu>2019-04-05 13:16:56 +0000
committerMatěj Cepl <mcepl@cepl.eu>2019-04-05 13:16:56 +0000
commit58b7e48c18e319209a08ad7452ec9f23bd9d5ff6 (patch)
tree9ef02027cfd5cf35cbf7c4cc333bb1ab580c2357 /dlpcvp.py
parent9377f530c450e67a3c613ed76dfd9e33394e7b9f (diff)
parent73bcdf97f6a55848e50f9a2329bc2138256102e4 (diff)
downloaddlp_check_version_PyPI-58b7e48c18e319209a08ad7452ec9f23bd9d5ff6.tar.gz
Merge branch 'is_develpackage' into 'master'
Check whether the package is actually a devel package for Factory. Closes #4 See merge request mcepl/dlp_check_version_PyPI!1
Diffstat (limited to 'dlpcvp.py')
-rwxr-xr-xdlpcvp.py23
1 files changed, 23 insertions, 0 deletions
diff --git a/dlpcvp.py b/dlpcvp.py
index 2b6abaa..bc47082 100755
--- a/dlpcvp.py
+++ b/dlpcvp.py
@@ -115,6 +115,27 @@ def update_etags(con: sqlite3.Connection, pkg: str,
con.commit()
+def is_develpackage(proj: str, pkg: str) -> bool:
+ req = Request(url=OBS_base + f'/source/openSUSE:Factory/{pkg}/_meta')
+ log.debug('Looking up URL: %s', req.full_url)
+ try:
+ with opener.open(req) as resp:
+ xml_data = ET.parse(resp)
+ for pel in xml_data.iter('package'):
+ for delem in pel.iter('devel'):
+ if pel.attrib['name'] == pkg and \
+ delem.attrib['package'] == pkg and \
+ delem.attrib['project'] == proj:
+ return True
+ return False
+ except HTTPError as ex:
+ if ex.getcode() == 404:
+ log.warning(f'Cannot acquire _meta of {pkg}.')
+ return None
+ else:
+ raise
+
+
def parse_spec(spec_file: Union[str, bytes]) -> LooseVersion:
if isinstance(spec_file, bytes):
spec_file = spec_file.decode()
@@ -262,6 +283,8 @@ def main(prj):
suse_ver = package_version(prj, pkg, conn)
if suse_ver is None:
raise RuntimeError('not in OBS')
+ if not is_develpackage(prj, pkg):
+ continue
pypi_ver = get_version_from_pypi(pypi_name, conn)
if pypi_ver is None:
raise RuntimeError('not in PyPI')