Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

External cssselect #46

Merged
merged 10 commits into from
Apr 21, 2012
Merged

External cssselect #46

merged 10 commits into from
Apr 21, 2012

Conversation

SimonSapin
Copy link
Contributor

This branch removes most of lxml.cssselect and uses the new cssselect project to provide the same functionality.

The new project distinguishes "generic" XML (no assumption is made on the meaning of element names) and HTML (has a more useful implementation of some pseudo-classes like :link or :checked.) This, the CSSSelect class as well as the cssselect method now have a translator argument that can be 'xml', 'html, 'xhtml', or a Translator object. (See the documentation.) The translator default to 'html' on HtmlElement.cssselect, 'xml' everywhere else.

The dependency is optional, so importing lxml.cssselect or calling the cssselect() method of elements can cause an ImportError at runtime.

I believe this fixes issues #34, #40, and #41.
#45 is partially addressed: all elements now have a cssselect method. However, html5parser still does not make HtmlElement objects so the user may need to pass translator='html' explicitly.
#20 is not resolved yet, but cssselect’s #3 is open about the same issue.

cssselect still has a few unresolved issues (filed on github), but the API should be stable now.

Includes ugly hack to support Python 2.4
translator defaults to 'xml' in _Element and 'html' in HtmlElement
No need to duplicate the tests that are now in cssselect.
Now test_css.py only tests what is specific to lxml.
@SimonSapin
Copy link
Contributor Author

By the way, cssselect v0.5+ is required for translator='xhtml'. I’ll make sure that future versions will stay compatible so that lxml does not need to be patched further.

This is an addition to the API that should be considered separatly
from using the new cssselect.

This reverts commit 7820b8d.
@SimonSapin SimonSapin mentioned this pull request Apr 20, 2012
@scoder
Copy link
Member

scoder commented Apr 21, 2012

Looks good. Thanks for all the work!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
3 participants