diff --git a/compressor/parser/beautifulsoup.py b/compressor/parser/beautifulsoup.py
index 68d542c..606a9e4 100644
--- a/compressor/parser/beautifulsoup.py
+++ b/compressor/parser/beautifulsoup.py
@@ -11,27 +11,15 @@ class BeautifulSoupParser(ParserBase):
super(BeautifulSoupParser, self).__init__(content)
try:
from bs4 import BeautifulSoup
- self.use_bs4 = True
self.soup = BeautifulSoup(self.content, "html.parser")
except ImportError:
- try:
- from BeautifulSoup import BeautifulSoup
- self.use_bs4 = False
- self.soup = BeautifulSoup(self.content)
- except ImportError as err:
- raise ImproperlyConfigured("Error while importing BeautifulSoup: %s" % err)
+ raise ImproperlyConfigured("Error while importing BeautifulSoup: %s" % err)
def css_elems(self):
- if self.use_bs4:
- return self.soup.find_all({'link': True, 'style': True})
- else:
- return self.soup.findAll({'link': True, 'style': True})
+ return self.soup.find_all({'link': True, 'style': True})
def js_elems(self):
- if self.use_bs4:
- return self.soup.find_all('script')
- else:
- return self.soup.findAll('script')
+ return self.soup.find_all('script')
def elem_attribs(self, elem):
attrs = dict(elem.attrs)
diff --git a/compressor/tests/test_base.py b/compressor/tests/test_base.py
index ea86b7f..370bb7a 100644
--- a/compressor/tests/test_base.py
+++ b/compressor/tests/test_base.py
@@ -4,12 +4,7 @@ import re
from tempfile import mkdtemp
from shutil import rmtree, copytree
-try:
- from bs4 import BeautifulSoup
- use_bs4 = True
-except ImportError:
- from BeautifulSoup import BeautifulSoup
- use_bs4 = False
+from bs4 import BeautifulSoup
from django.core.cache.backends import locmem
from django.test import SimpleTestCase
@@ -26,17 +21,7 @@ from compressor.storage import DefaultStorage
def make_soup(markup):
- if use_bs4:
- return BeautifulSoup(markup, "html.parser")
- else:
- return BeautifulSoup(markup)
-
-
-def soup_find_all(markup, name):
- if use_bs4:
- return make_soup(markup).find_all(name)
- else:
- return make_soup(markup).findAll(name)
+ return BeautifulSoup(markup, "html.parser")
def css_tag(href, **kwargs):
@@ -302,7 +287,7 @@ class CssMediaTestCase(SimpleTestCase):
def test_css_output(self):
css_node = CssCompressor(self.css)
- links = soup_find_all(css_node.output(), 'link')
+ links = make_soup(css_node.output()).find_all('link')
media = ['screen', 'print', 'all', None]
self.assertEqual(len(links), 4)
self.assertEqual(media, [l.get('media', None) for l in links])
@@ -311,7 +296,7 @@ class CssMediaTestCase(SimpleTestCase):
css = self.css + ''
css_node = CssCompressor(css)
media = ['screen', 'print', 'all', None, 'print']
- links = soup_find_all(css_node.output(), 'link')
+ links = make_soup(css_node.output()).find_all('link')
self.assertEqual(media, [l.get('media', None) for l in links])
@override_settings(COMPRESS_PRECOMPILERS=(
@@ -323,7 +308,7 @@ class CssMediaTestCase(SimpleTestCase):
"""
css_node = CssCompressor(css)
- output = soup_find_all(css_node.output(), ['link', 'style'])
+ output = make_soup(css_node.output()).find_all(['link', 'style'])
self.assertEqual(['/static/css/one.css', '/static/css/two.css', None],
[l.get('href', None) for l in output])
self.assertEqual(['screen', 'screen', 'screen'],
@@ -363,11 +348,8 @@ class JsAsyncDeferTestCase(SimpleTestCase):
return 'defer'
js_node = JsCompressor(self.js)
output = [None, 'async', 'defer', None, 'async', None]
- scripts = soup_find_all(js_node.output(), 'script')
- if use_bs4:
- attrs = [extract_attr(i) for i in scripts]
- else:
- attrs = [s.get('async') or s.get('defer') for s in scripts]
+ scripts = make_soup(js_node.output()).find_all('script')
+ attrs = [extract_attr(s) for s in scripts]
self.assertEqual(output, attrs)
diff --git a/tox.ini b/tox.ini
index c25e80f..0b4156e 100644
--- a/tox.ini
+++ b/tox.ini
@@ -19,7 +19,7 @@ two_six =
mock==1.0.1
Jinja2==2.7.3
lxml==3.4.2
- BeautifulSoup==3.2.1
+ beautifulsoup4==4.4.0
unittest2==1.0.0
jingo==0.7
coffin==0.4.0