1
0
mirror of https://github.com/openSUSE/osc.git synced 2024-12-30 19:56:14 +01:00

Merge branch 'no-celementtree' of https://github.com/AdamWill/osc

Use xml.etree.ElementTree if xml.etree.cElementTree is not available
anymore (python3.9).
This commit is contained in:
Marcus Huewe 2020-06-03 22:01:04 +02:00
commit 613daa7a09
8 changed files with 42 additions and 26 deletions

4
README
View File

@ -24,10 +24,6 @@ Alternatively, you can directly use osc-wrapper.py from the source dir
(which is easier if you develop on osc). (which is easier if you develop on osc).
The program needs the cElementTree python module installed. On SUSE, the
respective package is called python-elementtree (before 10.2: python-xml).
CONFIGURATION: CONFIGURATION:

View File

@ -28,9 +28,12 @@ import osc.conf
from . import oscerr from . import oscerr
import subprocess import subprocess
try: try:
# Works up to Python 3.8, needed for Python < 3.3 (inc 2.7)
from xml.etree import cElementTree as ET from xml.etree import cElementTree as ET
except ImportError: except ImportError:
import cElementTree as ET # will import a fast implementation from 3.3 onwards, needed
# for 3.9+
from xml.etree import ElementTree as ET
from .conf import config, cookiejar from .conf import config, cookiejar

View File

@ -47,11 +47,13 @@ except ImportError:
from cStringIO import StringIO from cStringIO import StringIO
from httplib import IncompleteRead from httplib import IncompleteRead
try: try:
# Works up to Python 3.8, needed for Python < 3.3 (inc 2.7)
from xml.etree import cElementTree as ET from xml.etree import cElementTree as ET
except ImportError: except ImportError:
import cElementTree as ET # will import a fast implementation from 3.3 onwards, needed
# for 3.9+
from xml.etree import ElementTree as ET
from . import oscerr from . import oscerr
from . import conf from . import conf
@ -816,7 +818,7 @@ class Project:
def read_packages(self): def read_packages(self):
""" """
Returns an ``xml.etree.cElementTree`` object representing the Returns an ``xml.etree.ElementTree`` object representing the
parsed contents of the project's ``.osc/_packages`` XML file. parsed contents of the project's ``.osc/_packages`` XML file.
""" """
global store global store

View File

@ -5,11 +5,13 @@ information instead of scanning individual rpms."""
import gzip import gzip
import os.path import os.path
# cElementTree can be standard or 3rd-party depending on python version
try: try:
# Works up to Python 3.8, needed for Python < 3.3 (inc 2.7)
from xml.etree import cElementTree as ET from xml.etree import cElementTree as ET
except ImportError: except ImportError:
import cElementTree as ET # will import a fast implementation from 3.3 onwards, needed
# for 3.9+
from xml.etree import ElementTree as ET
# project modules # project modules
import osc.util.rpmquery import osc.util.rpmquery

View File

@ -4,7 +4,13 @@ import shutil
import tempfile import tempfile
import os import os
import sys import sys
from xml.etree import cElementTree as ET try:
# Works up to Python 3.8, needed for Python < 3.3 (inc 2.7)
from xml.etree import cElementTree as ET
except ImportError:
# will import a fast implementation from 3.3 onwards, needed
# for 3.9+
from xml.etree import ElementTree as ET
EXPECTED_REQUESTS = [] EXPECTED_REQUESTS = []
if sys.version_info[0:2] in ((2, 6), (2, 7)): if sys.version_info[0:2] in ((2, 6), (2, 7)):

View File

@ -3,7 +3,13 @@ import osc.oscerr
import os import os
import sys import sys
from common import GET, PUT, POST, DELETE, OscTestCase from common import GET, PUT, POST, DELETE, OscTestCase
from xml.etree import cElementTree as ET try:
# Works up to Python 3.8, needed for Python < 3.3 (inc 2.7)
from xml.etree import cElementTree as ET
except ImportError:
# will import a fast implementation from 3.3 onwards, needed
# for 3.9+
from xml.etree import ElementTree as ET
try: try:
from urllib.error import HTTPError from urllib.error import HTTPError
except ImportError: except ImportError:

View File

@ -3,7 +3,13 @@ import osc.oscerr
import os import os
import sys import sys
from common import GET, PUT, POST, DELETE, OscTestCase from common import GET, PUT, POST, DELETE, OscTestCase
from xml.etree import cElementTree as ET try:
# Works up to Python 3.8, needed for Python < 3.3 (inc 2.7)
from xml.etree import cElementTree as ET
except ImportError:
# will import a fast implementation from 3.3 onwards, needed
# for 3.9+
from xml.etree import ElementTree as ET
FIXTURES_DIR = os.path.join(os.getcwd(), 'repairwc_fixtures') FIXTURES_DIR = os.path.join(os.getcwd(), 'repairwc_fixtures')
def suite(): def suite():

View File

@ -1,3 +1,11 @@
try:
# Works up to Python 3.8, needed for Python < 3.3 (inc 2.7)
from xml.etree import cElementTree as ET
except ImportError:
# will import a fast implementation from 3.3 onwards, needed
# for 3.9+
from xml.etree import ElementTree as ET
import osc.core import osc.core
import osc.oscerr import osc.oscerr
import os import os
@ -252,7 +260,6 @@ class TestRequest(OscTestCase):
def test_action_from_xml1(self): def test_action_from_xml1(self):
"""create action from xml""" """create action from xml"""
from xml.etree import cElementTree as ET
xml = """<action type="add_role"> xml = """<action type="add_role">
<target package="bar" project="foo" /> <target package="bar" project="foo" />
<person name="user" role="reader" /> <person name="user" role="reader" />
@ -270,7 +277,6 @@ class TestRequest(OscTestCase):
def test_action_from_xml2(self): def test_action_from_xml2(self):
"""create action from xml""" """create action from xml"""
from xml.etree import cElementTree as ET
xml = """<action type="submit"> xml = """<action type="submit">
<source package="bar" project="foo" /> <source package="bar" project="foo" />
<target package="bar" project="foobar" /> <target package="bar" project="foobar" />
@ -292,7 +298,6 @@ class TestRequest(OscTestCase):
def test_action_from_xml3(self): def test_action_from_xml3(self):
"""create action from xml (with acceptinfo element)""" """create action from xml (with acceptinfo element)"""
from xml.etree import cElementTree as ET
xml = """<action type="submit"> xml = """<action type="submit">
<source package="bar" project="testprj" /> <source package="bar" project="testprj" />
<target package="baz" project="foobar" /> <target package="baz" project="foobar" />
@ -316,13 +321,11 @@ class TestRequest(OscTestCase):
def test_action_from_xml_unknown_type(self): def test_action_from_xml_unknown_type(self):
"""try to create action from xml with unknown type""" """try to create action from xml with unknown type"""
from xml.etree import cElementTree as ET
xml = '<action type="foo"><source package="bar" project="foo" /></action>' xml = '<action type="foo"><source package="bar" project="foo" /></action>'
self.assertRaises(osc.oscerr.WrongArgs, osc.core.Action.from_xml, ET.fromstring(xml)) self.assertRaises(osc.oscerr.WrongArgs, osc.core.Action.from_xml, ET.fromstring(xml))
def test_read_request1(self): def test_read_request1(self):
"""read in a request""" """read in a request"""
from xml.etree import cElementTree as ET
xml = open(os.path.join(self._get_fixtures_dir(), 'test_read_request1.xml'), 'r').read().strip() xml = open(os.path.join(self._get_fixtures_dir(), 'test_read_request1.xml'), 'r').read().strip()
r = osc.core.Request() r = osc.core.Request()
r.read(ET.fromstring(xml)) r.read(ET.fromstring(xml))
@ -354,7 +357,6 @@ class TestRequest(OscTestCase):
def test_read_request2(self): def test_read_request2(self):
"""read in a request (with reviews)""" """read in a request (with reviews)"""
from xml.etree import cElementTree as ET
xml = open(os.path.join(self._get_fixtures_dir(), 'test_read_request2.xml'), 'r').read().strip() xml = open(os.path.join(self._get_fixtures_dir(), 'test_read_request2.xml'), 'r').read().strip()
r = osc.core.Request() r = osc.core.Request()
r.read(ET.fromstring(xml)) r.read(ET.fromstring(xml))
@ -393,7 +395,6 @@ class TestRequest(OscTestCase):
def test_read_request3(self): def test_read_request3(self):
"""read in a request (with an "empty" comment+description)""" """read in a request (with an "empty" comment+description)"""
from xml.etree import cElementTree as ET
xml = """<request creator="xyz" id="2"> xml = """<request creator="xyz" id="2">
<action type="set_bugowner"> <action type="set_bugowner">
<target project="foo" /> <target project="foo" />
@ -430,7 +431,6 @@ class TestRequest(OscTestCase):
def test_request_list_view1(self): def test_request_list_view1(self):
"""test the list_view method""" """test the list_view method"""
from xml.etree import cElementTree as ET
xml = open(os.path.join(self._get_fixtures_dir(), 'test_request_list_view1.xml'), 'r').read().strip() xml = open(os.path.join(self._get_fixtures_dir(), 'test_request_list_view1.xml'), 'r').read().strip()
exp = """\ exp = """\
62 State:new By:Admin When:2010-12-29T14:57:25 62 State:new By:Admin When:2010-12-29T14:57:25
@ -448,7 +448,6 @@ class TestRequest(OscTestCase):
def test_request_list_view2(self): def test_request_list_view2(self):
"""test the list_view method (with history elements and description)""" """test the list_view method (with history elements and description)"""
from xml.etree import cElementTree as ET
xml = open(os.path.join(self._get_fixtures_dir(), 'test_request_list_view2.xml'), 'r').read().strip() xml = open(os.path.join(self._get_fixtures_dir(), 'test_request_list_view2.xml'), 'r').read().strip()
r = osc.core.Request() r = osc.core.Request()
r.read(ET.fromstring(xml)) r.read(ET.fromstring(xml))
@ -462,7 +461,6 @@ class TestRequest(OscTestCase):
self.assertEqual(exp, r.list_view()) self.assertEqual(exp, r.list_view())
def test_request_str1(self): def test_request_str1(self):
from xml.etree import cElementTree as ET
"""test the __str__ method""" """test the __str__ method"""
xml = open(os.path.join(self._get_fixtures_dir(), 'test_request_str1.xml'), 'r').read().strip() xml = open(os.path.join(self._get_fixtures_dir(), 'test_request_str1.xml'), 'r').read().strip()
r = osc.core.Request() r = osc.core.Request()
@ -496,7 +494,6 @@ History: 2010-12-12T00:00:00 creator revoked
def test_request_str2(self): def test_request_str2(self):
"""test the __str__ method""" """test the __str__ method"""
from xml.etree import cElementTree as ET
xml = """\ xml = """\
<request creator="creator" id="98765"> <request creator="creator" id="98765">
<action type="change_devel"> <action type="change_devel">
@ -527,7 +524,6 @@ Comment: <no comment>"""
def test_legacy_request(self): def test_legacy_request(self):
"""load old-style submitrequest""" """load old-style submitrequest"""
from xml.etree import cElementTree as ET
xml = """\ xml = """\
<request creator="olduser" id="1234" type="submit"> <request creator="olduser" id="1234" type="submit">
<submit> <submit>
@ -563,7 +559,6 @@ Comment: <no comment>"""
def test_get_actions(self): def test_get_actions(self):
"""test get_actions method""" """test get_actions method"""
from xml.etree import cElementTree as ET
xml = open(os.path.join(self._get_fixtures_dir(), 'test_request_list_view1.xml'), 'r').read().strip() xml = open(os.path.join(self._get_fixtures_dir(), 'test_request_list_view1.xml'), 'r').read().strip()
r = osc.core.Request() r = osc.core.Request()
r.read(ET.fromstring(xml)) r.read(ET.fromstring(xml))