Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: tiran/defusedxml
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v0.7.0
Choose a base ref
...
head repository: tiran/defusedxml
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v0.7.1
Choose a head ref
  • 3 commits
  • 7 files changed
  • 1 contributor

Commits on Mar 8, 2021

  1. Fix regression defusedxml.ElementTree.ParseError

    The ``defusedxml.ElementTree.ParseError`` exception is now the same class object
    as ``xml.etree.ElementTree.ParseError`` again. The regression was
    introduced by new patching code as part of PR #60.
    
    See: #60
    Fixes: #63
    Signed-off-by: Christian Heimes <christian@python.org>
    tiran committed Mar 8, 2021
    Copy the full SHA
    8cbb1be View commit details
  2. Run GHA in bug fix branches

    Signed-off-by: Christian Heimes <christian@python.org>
    tiran committed Mar 8, 2021
    Copy the full SHA
    0b646d6 View commit details
  3. Prepare release 0.7.1

    Signed-off-by: Christian Heimes <christian@python.org>
    tiran committed Mar 8, 2021
    Copy the full SHA
    ebff1b4 View commit details
Showing with 57 additions and 9 deletions.
  1. +9 −3 .github/workflows/main.yml
  2. +10 −0 CHANGES.txt
  3. +8 −0 README.md
  4. +6 −4 defusedxml/ElementTree.py
  5. +1 −1 defusedxml/__init__.py
  6. +14 −1 defusedxml/cElementTree.py
  7. +9 −0 tests.py
12 changes: 9 additions & 3 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -1,14 +1,20 @@
on:
push:
branches: ["master"]
branches:
- master
- main
- v*.x
pull_request:
branches: ["master"]
branches:
- master
- main
- v*.x
workflow_dispatch:

jobs:
tests:
name: "Python ${{ matrix.python-version }}"
runs-on: "ubuntu-latest"
runs-on: "ubuntu-20.04"
strategy:
fail-fast: false
matrix:
10 changes: 10 additions & 0 deletions CHANGES.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,16 @@
Changelog
=========

defusedxml 0.7.1
---------------------

*Release date: 08-Mar-2021*

- Fix regression ``defusedxml.ElementTree.ParseError`` (#63)
The ``ParseError`` exception is now the same class object as
``xml.etree.ElementTree.ParseError`` again.


defusedxml 0.7.0
----------------

8 changes: 8 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -716,6 +716,14 @@ See <https://www.python.org/psf/license> for licensing details.
Injection](https://www.owasp.org/index.php/Testing_for_XML_Injection_\(OWASP-DV-008\))
# Changelog

## defusedxml 0.7.1

*Release date: 08-Mar-2021*

- Fix regression `defusedxml.ElementTree.ParseError` (\#63) The
`ParseError` exception is now the same class object as
`xml.etree.ElementTree.ParseError` again.

## defusedxml 0.7.0

*Release date: 4-Mar-2021*
10 changes: 6 additions & 4 deletions defusedxml/ElementTree.py
Original file line number Diff line number Diff line change
@@ -9,6 +9,7 @@

import sys
import warnings
from xml.etree.ElementTree import ParseError
from xml.etree.ElementTree import TreeBuilder as _TreeBuilder
from xml.etree.ElementTree import parse as _parse
from xml.etree.ElementTree import tostring
@@ -20,7 +21,6 @@
else:
from xml.etree.ElementTree import XMLParser as _XMLParser
from xml.etree.ElementTree import iterparse as _iterparse
from xml.etree.ElementTree import ParseError


from .common import (
@@ -63,13 +63,15 @@ def _get_py3_cls():

_XMLParser = pure_pymod.XMLParser
_iterparse = pure_pymod.iterparse
ParseError = pure_pymod.ParseError
# patch pure module to use ParseError from C extension
pure_pymod.ParseError = ParseError

return _XMLParser, _iterparse, ParseError
return _XMLParser, _iterparse


if PY3:
_XMLParser, _iterparse, ParseError = _get_py3_cls()
_XMLParser, _iterparse = _get_py3_cls()


_sentinel = object()

2 changes: 1 addition & 1 deletion defusedxml/__init__.py
Original file line number Diff line number Diff line change
@@ -56,7 +56,7 @@ def defuse_stdlib():
return defused


__version__ = "0.7.0"
__version__ = "0.7.1"

__all__ = [
"DefusedXmlException",
15 changes: 14 additions & 1 deletion defusedxml/cElementTree.py
Original file line number Diff line number Diff line change
@@ -18,7 +18,19 @@
# iterparse from ElementTree!
from xml.etree.ElementTree import iterparse as _iterparse

from .ElementTree import DefusedXMLParser
# This module is an alias for ElementTree just like xml.etree.cElementTree
from .ElementTree import (
XML,
XMLParse,
XMLParser,
XMLTreeBuilder,
fromstring,
iterparse,
parse,
tostring,
DefusedXMLParser,
ParseError,
)

__origin__ = "xml.etree.cElementTree"

@@ -38,6 +50,7 @@
XML = fromstring

__all__ = [
"ParseError",
"XML",
"XMLParse",
"XMLParser",
9 changes: 9 additions & 0 deletions tests.py
Original file line number Diff line number Diff line change
@@ -214,6 +214,15 @@ def test_import_order(self):

self.assertIs(orig_elementtree, second_elementtree)

def test_orig_parseerror(self):
# https://github.com/tiran/defusedxml/issues/63
self.assertIs(self.module.ParseError, orig_elementtree.ParseError)
try:
self.parseString("invalid")
except Exception as e:
self.assertIsInstance(e, orig_elementtree.ParseError)
self.assertIsInstance(e, self.module.ParseError)


class TestDefusedcElementTree(TestDefusedElementTree):
module = cElementTree